tx · H7C1zzQiAyMEc3aZA1DD3RxeB1V71eJBysAnZm3NAHnM

3MyeMZm2BLBkcgK2VBeTU8h1n562iB3zA2Z:  -0.02900000 Waves

2022.09.13 00:15 [2226425] smart account 3MyeMZm2BLBkcgK2VBeTU8h1n562iB3zA2Z > SELF 0.00000000 Waves

{ "type": 13, "id": "H7C1zzQiAyMEc3aZA1DD3RxeB1V71eJBysAnZm3NAHnM", "fee": 2900000, "feeAssetId": null, "timestamp": 1663017336016, "version": 2, "chainId": 84, "sender": "3MyeMZm2BLBkcgK2VBeTU8h1n562iB3zA2Z", "senderPublicKey": "5bHbDgAVwbyzkor8HrHKU8zcg5RfwKy3rNihVqk8YUvP", "proofs": [ "3Y4qcbxfKhMBLp9eq4LETyZN4UKoF3zWx6vhegF54Qjg8rtjtBuXWQXYEehSqxEHdRPzYMW61nbc7YTzRMx3GE2V" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCE8AD2RlZmF1bHREZWNpbWFscwCAwtcvAAZzY2FsZTgAgMLXLwAMc2NhbGU4QmlnSW50CQC2AgEAgMLXLwAHc2NhbGUxOAkAtgIBAICAkLu61q3wDQAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoABWRlbGF5Agklc19fZGVsYXkBAnQxAgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQdzY2FsZTE4CQC2AgEFDW9yaWdTY2FsZU11bHQBAmYxAgN2YWwPcmVzdWx0U2NhbGVNdWx0CQCgAwEJALwCAwUDdmFsCQC2AgEFD3Jlc3VsdFNjYWxlTXVsdAUHc2NhbGUxOAECdHMDA2FtdAhyZXNTY2FsZQhjdXJTY2FsZQkAawMFA2FtdAUIcmVzU2NhbGUFCGN1clNjYWxlAQNhYnMBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsAQJmYwACEyVzX19mYWN0b3J5Q29udHJhY3QBA21wawACFCVzX19tYW5hZ2VyUHVibGljS2V5AQRwbXBrAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQJwbAACESVzJXNfX3ByaWNlX19sYXN0AQJwaAIBaAF0CQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBaAkAzAgCCQCkAwEFAXQFA25pbAUDU0VQAQNwYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJ1YQICX18FBHR4SWQBA2dhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAnVhAgJfXwUEdHhJZAECYWEAAg8lc19fYW1vdW50QXNzZXQBAnBhAAIOJXNfX3ByaWNlQXNzZXQBA2FtcAACByVzX19hbXABA2FkYQACDSVzX19hZGRvbkFkZHIBBWxnb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0R2V0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQVsc290YwEGY2FsbGVyCQC5CQIJAMwIAgIXJXMlc19fbGFzdFB1dE9uZVRrbkNhbGwJAMwIAgUGY2FsbGVyBQNuaWwFA1NFUAEEZmNmZwACESVzX19mYWN0b3J5Q29uZmlnAQRtdHBrAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJwYwIGaUFtdEFzBWlQckFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQZpQW10QXMCAl9fBQVpUHJBcwIIX19jb25maWcBA21iYQEFYkFTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUFYkFTdHIBA2FwcwACDCVzX19zaHV0ZG93bgEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQN0b2UDA29yVgZzZW5kclYGbWF0Y2hWCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFA29yVgILIHNuZHJWYWxpZD0JAKUDAQUGc2VuZHJWAgwgbXRjaHJWYWxpZD0JAKUDAQUGbWF0Y2hWAQNzdHIBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQRzdHJmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABBGludGYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAADZmNhCQERQGV4dHJOYXRpdmUoMTA2MikBCQEEc3RyZgIFBHRoaXMJAQJmYwAAAUEJAQRzdHJmAgUEdGhpcwkBA2FtcAABA2lncwAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUDZmNhCQEDYXBzAAcBAm1wAAkA2QQBCQEEc3RyZgIFA2ZjYQkBBG10cGsAAQNncGMABAVhbXRBcwkBBHN0cmYCBQR0aGlzCQECYWEABAdwcmljZUFzCQEEc3RyZgIFBHRoaXMJAQJwYQAECGlQcmljZUFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFB3ByaWNlQXMEBmlBbXRBcwkBBGludGYCBQNmY2EJAQNtYmEBBQVhbXRBcwkAtQkCCQEEc3RyZgIFA2ZjYQkBAnBjAgkApAMBBQZpQW10QXMJAKQDAQUIaVByaWNlQXMFA1NFUAEDZ2ZjAAkAtQkCCQEEc3RyZgIFA2ZjYQkBBGZjZmcABQNTRVABEWRhdGFQdXRBY3Rpb25JbmZvCg1pbkFtdEFzc2V0QW10D2luUHJpY2VBc3NldEFtdAhvdXRMcEFtdAVwcmljZQpzbGlwQnlVc2VyDHNsaXBwYWdlUmVhbAh0eEhlaWdodAt0eFRpbWVzdGFtcAxzbGlwYWdlQW1BbXQMc2xpcGFnZVByQW10CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ1pbkFtdEFzc2V0QW10CQDMCAIJAKQDAQUPaW5QcmljZUFzc2V0QW10CQDMCAIJAKQDAQUIb3V0THBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCnNsaXBCeVVzZXIJAMwIAgkApAMBBQxzbGlwcGFnZVJlYWwJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wCQDMCAIJAKQDAQUMc2xpcGFnZUFtQW10CQDMCAIJAKQDAQUMc2xpcGFnZVByQW10BQNuaWwFA1NFUAERZGF0YUdldEFjdGlvbkluZm8GDm91dEFtdEFzc2V0QW10EG91dFByaWNlQXNzZXRBbXQHaW5McEFtdAVwcmljZQh0eEhlaWdodAt0eFRpbWVzdGFtcAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDm91dEFtdEFzc2V0QW10CQDMCAIJAKQDAQUQb3V0UHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFB2luTHBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAFA25pbAUDU0VQAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQBBGNwYmkCCHByQW10WDE4CGFtQW10WDE4CQC8AgMFCHByQW10WDE4BQdzY2FsZTE4BQhhbUFtdFgxOAEDdmFkAwJBMQJBMghzbGlwcGFnZQQEZGlmZgkAvAIDCQC4AgIFAkExBQJBMgUMc2NhbGU4QmlnSW50BQJBMgQEcGFzcwkAvwICCQC4AgIFCHNsaXBwYWdlCQEDYWJzAQUEZGlmZgUKemVyb0JpZ0ludAMJAQEhAQUEcGFzcwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQRkaWZmCQCUCgIFBHBhc3MJAJkDAQkAzAgCBQJBMQkAzAgCBQJBMgUDbmlsAQJ2ZAMCRDECRDAEc2xwZwQEZGlmZgkAvAIDBQJEMAUMc2NhbGU4QmlnSW50BQJEMQQEZmFpbAkAvwICBQRzbHBnBQRkaWZmAwMFBGZhaWwGCQC/AgIFAkQwBQJEMQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCRDACASAJAKYDAQUCRDECASAJAKYDAQUEZGlmZgIBIAkApgMBBQRzbHBnBQRmYWlsAQNwY3AECmFtQXNzZXREY20KcHJBc3NldERjbQVhbUFtdAVwckFtdAQLYW10QXNBbXRYMTgJAQJ0MQIFBWFtQW10BQphbUFzc2V0RGNtBApwckFzQW10WDE4CQECdDECBQVwckFtdAUKcHJBc3NldERjbQkBBGNwYmkCBQpwckFzQW10WDE4BQthbXRBc0FtdFgxOAEKY2FsY1ByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEA2NmZwkBA2dwYwAECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQIcHJpY2VYMTgJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQUFYW1BbXQFBXByQW10BAhhbUFtdFgxOAkBAnQxAgUFYW1BbXQFCGFtdEFzRGNtBAhwckFtdFgxOAkBAnQxAgUFcHJBbXQFB3ByQXNEY20ECGxwQW10WDE4CQECdDECBQVscEFtdAUGc2NhbGU4BA1scFBySW5BbUFzWDE4CQEEY3BiaQIFCGFtQW10WDE4BQhscEFtdFgxOAQNbHBQckluUHJBc1gxOAkBBGNwYmkCBQhwckFtdFgxOAUIbHBBbXRYMTgJAMwIAgUIcHJpY2VYMTgJAMwIAgUNbHBQckluQW1Bc1gxOAkAzAgCBQ1scFBySW5QckFzWDE4BQNuaWwBD2NhbGN1bGF0ZVByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEAXAJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAzAgCCQECZjECCQCRAwIFAXAAAAUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAABBQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAIFBnNjYWxlOAUDbmlsAQNlZ28EBnR4SWQ1OApwbXRBc3NldElkCHBtdExwQW10C3VzZXJBZGRyZXNzBANjZmcJAQNncGMABARscElkCQCRAwIFA2NmZwUJaWR4TFBBc0lkBARhbUlkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QEB2xwRW1pc3MICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQRscElkAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFBGxwSWQFCnBtdEFzc2V0SWQJAAIBAg9Xcm9uZyBwbXQgYXNzZXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFCWFtQmFsYW5jZQUPZGVmYXVsdERlY2ltYWxzBQVhbURjbQQbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzCQBrAwUJcHJCYWxhbmNlBQ9kZWZhdWx0RGVjaW1hbHMFBXByRGNtBAxhbUJhbGFuY2VYMTgJAQJ0MQIFHGFtb3VudEJhbGFuY2VEZWZhdWx0RGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQMcHJCYWxhbmNlWDE4CQECdDECBRtwcmljZUJhbGFuY2VEZWZhdWx0RGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BB5vdXRBbW91bnRBbW91bnREZWZhdWx0RGVjaW1hbHMJAQJmMQIFC291dEFtQW10WDE4BQ9kZWZhdWx0RGVjaW1hbHMEHW91dFByaWNlQW1vdW50RGVmYXVsdERlY2ltYWxzCQECZjECBQtvdXRQckFtdFgxOAUPZGVmYXVsdERlY2ltYWxzBAhvdXRBbUFtdAkAawMFHm91dEFtb3VudEFtb3VudERlZmF1bHREZWNpbWFscwUFYW1EY20FD2RlZmF1bHREZWNpbWFscwQIb3V0UHJBbXQJAGsDBR1vdXRQcmljZUFtb3VudERlZmF1bHREZWNpbWFscwUFcHJEY20FD2RlZmF1bHREZWNpbWFscwQFc3RhdGUDCQAAAgUGdHhJZDU4AgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUIb3V0QW1BbXQDCQAAAgUEYW1JZAIFV0FWRVMFBHVuaXQJANkEAQUEYW1JZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUIb3V0UHJBbXQDCQAAAgUEcHJJZAIFV0FWRVMFBHVuaXQJANkEAQUEcHJJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQhvdXRBbUFtdAUIb3V0UHJBbXQFCHBtdExwQW10BQhjdXJQcmljZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlBQNuaWwJAJwKCgUIb3V0QW1BbXQFCG91dFByQW10BQRhbUlkBQRwcklkBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUHbHBFbWlzcwULY3VyUHJpY2VYMTgFA3N0cwUFc3RhdGUBA2VwbwwGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkC3VzZXJBZGRyZXNzBmlzRXZhbAZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEA2NmZwkBA2dwYwAEBGxwSWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHYW1JZFN0cgkAkQMCBQNjZmcFCWlkeEFtQXNJZAQHcHJJZFN0cgkAkQMCBQNjZmcFCWlkeFByQXNJZAQJaW5BbUlkU3RyCQCRAwIFA2NmZwULaWR4SUFtdEFzSWQECWluUHJJZFN0cgkAkQMCBQNjZmcFDWlkeElQcmljZUFzSWQEBmFtdERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20ECHByaWNlRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QEBGxwRW0ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUEbHBJZAIIV3IgbHAgYXMIcXVhbnRpdHkECWFtQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUHaW5BbUFtdAQJcHJCYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQdpblByQW10BBxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzCQBrAwUJYW1CYWxhbmNlBQ9kZWZhdWx0RGVjaW1hbHMFBmFtdERjbQQbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzCQBrAwUJcHJCYWxhbmNlBQ9kZWZhdWx0RGVjaW1hbHMFCHByaWNlRGNtBCJpbkFtb3VudEFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzCQBrAwUHaW5BbUFtdAUPZGVmYXVsdERlY2ltYWxzBQZhbXREY20EIWluUHJpY2VBc3NldEFtb3VudERlZmF1bHREZWNpbWFscwkAawMFB2luUHJBbXQFD2RlZmF1bHREZWNpbWFscwUIcHJpY2VEY20ED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUiaW5BbW91bnRBc3NldEFtb3VudERlZmF1bHREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFIWluUHJpY2VBc3NldEFtb3VudERlZmF1bHREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBAxwckJhbGFuY2VYMTgJAQJ0MQIFG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUPZGVmYXVsdERlY2ltYWxzCQECZjECBQ9pblByQXNzZXRBbXRYMTgFD2RlZmF1bHREZWNpbWFscwkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFD2RlZmF1bHREZWNpbWFscwkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUPZGVmYXVsdERlY2ltYWxzBQtjdXJQcmljZVgxOAULc2xpcHBhZ2VYMTgECWNhbGNMcEFtdAgFAXICXzEEDmNhbGNBbUFzc2V0UG10CQBrAwgFAXICXzIFBmFtdERjbQUPZGVmYXVsdERlY2ltYWxzBA5jYWxjUHJBc3NldFBtdAkAawMIBQFyAl8zBQhwcmljZURjbQUPZGVmYXVsdERlY2ltYWxzBAhjdXJQcmljZQkBAmYxAggFAXICXzQFBnNjYWxlOAQMc2xpcHBhZ2VDYWxjCQECZjECCAUBcgJfNQUGc2NhbGU4AwkAZwIAAAUJY2FsY0xwQW10CQACAQIHTFAgPD0gMAQJZW1pdExwQW10AwkBASEBBQZlbWl0THAAAAUJY2FsY0xwQW10BAZhbURpZmYJAGUCBQdpbkFtQW10BQ5jYWxjQW1Bc3NldFBtdAQGcHJEaWZmCQBlAgUHaW5QckFtdAUOY2FsY1ByQXNzZXRQbXQEDSR0MDE2NjQ5MTY5OTQDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAlAoCBQZwbXRBbXQAAAMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQCUCgIAAAUGcG10QW10CQCUCgIFDmNhbGNBbUFzc2V0UG10BQ5jYWxjUHJBc3NldFBtdAQKd3JpdGVBbUFtdAgFDSR0MDE2NjQ5MTY5OTQCXzEECndyaXRlUHJBbXQIBQ0kdDAxNjY0OTE2OTk0Al8yBAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YVB1dEFjdGlvbkluZm8KBQp3cml0ZUFtQW10BQp3cml0ZVByQW10BQllbWl0THBBbXQFCGN1clByaWNlBQhzbGlwcGFnZQUMc2xpcHBhZ2VDYWxjBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQZhbURpZmYFBnByRGlmZgUDbmlsCQCfCg0FCWNhbGNMcEFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUJYW1CYWxhbmNlBQlwckJhbGFuY2UFBGxwRW0FBGxwSWQFA3N0cwULY29tbW9uU3RhdGUFBmFtRGlmZgUGcHJEaWZmBQZpbkFtSWQFBmluUHJJZAEDbW9hAQVvcmRlcgQDY2ZnCQEDZ3BjAAQHYW10QXNJZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQGcHJBc0lkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBANzdHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFCWlkeFBvb2xTdAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBA9hY2NBbXRBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHYW10QXNJZAQOYWNjUHJBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUGcHJBc0lkBAtjdXJQcmljZVgxOAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZAIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZQIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4AwMDCQEDaWdzAAYJAAACBQNzdHMFDlBvb2xNYXRjaGVyRGlzBgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQINQWRtaW4gYmxvY2tlZAQKb3JBbXRBc3NldAgIBQVvcmRlcglhc3NldFBhaXILYW1vdW50QXNzZXQECm9yQW10QXNTdHIDCQAAAgUKb3JBbXRBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUKb3JBbXRBc3NldAQJb3JQckFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgpwcmljZUFzc2V0BAlvclByQXNTdHIDCQAAAgUJb3JQckFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQlvclByQXNzZXQDAwkBAiE9AgUKb3JBbXRBc1N0cgUHYW10QXNJZAYJAQIhPQIFCW9yUHJBc1N0cgUGcHJBc0lkCQACAQIJV3IgYXNzZXRzBApvcmRlclByaWNlCAUFb3JkZXIFcHJpY2UECHByaWNlRGNtCQBrAwUGc2NhbGU4BQdwckFzRGNtBQhhbXRBc0RjbQQOY2FzdE9yZGVyUHJpY2UJAQJ0cwMFCm9yZGVyUHJpY2UFBnNjYWxlOAUIcHJpY2VEY20EEWlzT3JkZXJQcmljZVZhbGlkAwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkAZwIFCGN1clByaWNlBQ5jYXN0T3JkZXJQcmljZQkAZwIFDmNhc3RPcmRlclByaWNlBQhjdXJQcmljZQYBAmNnAQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFA3N0cwkAlwoFBQhvdXRBbUFtdAUIb3V0UHJBbXQFBnBtdEFtdAUKcG10QXNzZXRJZAUFc3RhdGUBAmNwCQZjYWxsZXIEdHhJZAdhbUFzUG10B3ByQXNQbXQIc2xpcHBhZ2UGZW1pdExwCmlzT25lQXNzZXQGcG10QW10BXBtdElkBAFyCQEDZXBvDAUEdHhJZAUIc2xpcHBhZ2UICQEFdmFsdWUBBQdhbUFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB2FtQXNQbXQHYXNzZXRJZAgJAQV2YWx1ZQEFB3ByQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHcHJBc1BtdAdhc3NldElkBQZjYWxsZXIHBQZlbWl0THAFCmlzT25lQXNzZXQFBnBtdEFtdAUFcG10SWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOAMDAwkBA2lncwAGCQAAAgUDc3RzBQpQb29sUHV0RGlzBgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAghCbG9ja2VkOgkApAMBBQNzdHMFAXIBAW0ABAckbWF0Y2gwCQCiCAEJAQNtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECcG0ABAckbWF0Y2gwCQCiCAEJAQRwbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAm1tAQFpBAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchUBaQELY29uc3RydWN0b3IBAmZjBAFjCQECbW0BBQFpAwkAAAIFAWMFAWMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmZjAAUCZmMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQBYwkBAm1tAQUBaQMJAAACBQFjBQFjBAJjbQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBQJjbQUCY20JAMwIAgkBC1N0cmluZ0VudHJ5AgkBBHBtcGsABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQBcAkBAnBtAAQDaHBtAwkBCWlzRGVmaW5lZAEFAXAGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2hwbQUDaHBtBANjcG0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQFwBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQNjcG0FA2NwbQkAzAgCCQELU3RyaW5nRW50cnkCCQEDbXBrAAkA2AQBCQEFdmFsdWUBBQFwCQDMCAIJAQtEZWxldGVFbnRyeQEJAQRwbXBrAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3B1dAIEc2xpcAlhdXRvU3Rha2UEB2ZhY3RDZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgMJAGYCAAAFBHNsaXAJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQBZQkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUEc2xpcAYHAAACAAQJZW1pdExwQW10CAUBZQJfMgQJbHBBc3NldElkCAUBZQJfNwQFc3RhdGUIBQFlAl85BAZhbURpZmYIBQFlA18xMAQGcHJEaWZmCAUBZQNfMTEEBGFtSWQIBQFlA18xMgQEcHJJZAgFAWUDXzEzBAFyCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAXIFAXIEAmVsBAckbWF0Y2gwBQFyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXB1dE9uZVRrbgULYW1Bc3NldFBhcnQLcHJBc3NldFBhcnQFb3V0THAIc2xpcHBhZ2UJYXV0b1N0YWtlBANjZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwURaWR4RmFjdEd3eFJld0NudHICC1dyIGd3eCBhZGRyBAdwb29sQ2ZnCQEDZ3BjAAQEYW1JZAkAkQMCBQdwb29sQ2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUHcG9vbENmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFDWlkeFByaWNlQXNEY20EBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIDAwMDCQBnAgAABQhzbGlwcGFnZQYJAGcCAAAFC2FtQXNzZXRQYXJ0BgkAZwIAAAULcHJBc3NldFBhcnQGCQBnAgAABQVvdXRMcAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEC3BtdERlY2ltYWxzCAkBBXZhbHVlAQkA7AcBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQIZGVjaW1hbHMEBnBtdEFtdAgFA3BtdAZhbW91bnQEFXBtdEFtdERlZmF1bHREZWNpbWFscwkAaQIJAGgCBQZwbXRBbXQFD2RlZmF1bHREZWNpbWFscwkAbAYACgAABQtwbXREZWNpbWFscwAAAAAFBERPV04DCQBmAgCAreIEBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMJAAIBAg1Xcm9uZyBwbXQgYW10BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEGGFtQmFsYW5jZURlZmF1bHREZWNpbWFscwkAaQIJAGgCBQlhbUJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwkAbAYACgAABQVhbURjbQAAAAAFBERPV04EGHByQmFsYW5jZURlZmF1bHREZWNpbWFscwkAaQIJAGgCBQlwckJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwkAbAYACgAABQVwckRjbQAAAAAFBERPV04EDSR0MDI2MDI5MjY4MTUDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMDCQBmAgUVcG10QW10RGVmYXVsdERlY2ltYWxzBRhhbUJhbGFuY2VEZWZhdWx0RGVjaW1hbHMGCQBmAgULYW1Bc3NldFBhcnQFFXBtdEFtdERlZmF1bHREZWNpbWFscwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFGGFtQmFsYW5jZURlZmF1bHREZWNpbWFscwUVcG10QW10RGVmYXVsdERlY2ltYWxzBRhwckJhbGFuY2VEZWZhdWx0RGVjaW1hbHMJAGUCBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMFC2FtQXNzZXRQYXJ0BQtwckFzc2V0UGFydAAAAAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMDCQBmAgUVcG10QW10RGVmYXVsdERlY2ltYWxzBRhwckJhbGFuY2VEZWZhdWx0RGVjaW1hbHMGCQBmAgULcHJBc3NldFBhcnQFFXBtdEFtdERlZmF1bHREZWNpbWFscwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUYYW1CYWxhbmNlRGVmYXVsdERlY2ltYWxzCQBlAgUYcHJCYWxhbmNlRGVmYXVsdERlY2ltYWxzBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMAAAAACQBlAgUVcG10QW10RGVmYXVsdERlY2ltYWxzBQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNjAyOTI2ODE1Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNjAyOTI2ODE1Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNjAyOTI2ODE1Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjYwMjkyNjgxNQJfNAQMdmlydFN3YXBJblByCAUNJHQwMjYwMjkyNjgxNQJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI2MDI5MjY4MTUCXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEEBmVzdFB1dAkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBQZwbXRBbXQFCnBtdEFzc2V0SWQEB2VzdGltTFAIBQZlc3RQdXQCXzIECWxwQXNzZXRJZAgFBmVzdFB1dAJfNwQFc3RhdGUIBQZlc3RQdXQCXzkEBmFtRGlmZggFBmVzdFB1dANfMTAEBnByRGlmZggFBmVzdFB1dANfMTEECWxwQ2FsY1JlcwkBA3ZhZAMJALYCAQUHZXN0aW1MUAkAtgIBBQVvdXRMcAkAtgIBBQhzbGlwcGFnZQQJZW1pdExwQW10CQCgAwEIBQlscENhbGNSZXMCXzIEAWUJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBZQUBZQQCZWwEByRtYXRjaDAFAWUDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnB1dEZvckZyZWUBB21heFNscGcDCQBmAgAABQdtYXhTbHBnCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQdtYXhTbHBnBwcAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQhzbGlwcGFnZQYJAGYCAAAFCmV4Y2hSZXN1bHQGCQBmAgAABQlvdXRBbW91bnQJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDMxNTk0MzIwNTEDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BQpleGNoUmVzdWx0BQplc3RpbVByQW10AAAAAAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAAIBAhB3cm9uZyBvdXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAzMTU5NDMyMDUxAl8xBAxwckJhbGFuY2VOb3cIBQ0kdDAzMTU5NDMyMDUxAl8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzMTU5NDMyMDUxAl8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzE1OTQzMjA1MQJfNAQMdmlydFN3YXBJblByCAUNJHQwMzE1OTQzMjA1MQJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDMxNTk0MzIwNTECXzYECHRvdGFsR2V0CAUNJHQwMzE1OTQzMjA1MQJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAAIBAgpXcm9uZyBjYWxjBAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKQDAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDXZpcnRTd2FwT3V0UHIFDHZpcnRTd2FwSW5QcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEECGZpbmFsUmVzCQEDdmFkAwkAtgIBBQh0b3RhbEdldAkAtgIBBQlvdXRBbW91bnQJALYCAQUIc2xpcHBhZ2UDCQAAAgUIZmluYWxSZXMFCGZpbmFsUmVzBA0kdDAzMjc1NjMyODYwAwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJQKAgkAoAMBCAUIZmluYWxSZXMCXzIAAAkAlAoCAAAJAKADAQgFCGZpbmFsUmVzAl8yBAVvdXRBbQgFDSR0MDMyNzU2MzI4NjACXzEEBW91dFByCAUNJHQwMzI3NTYzMjg2MAJfMgQIY3VyUHJYMTgJAQRjcGJpAgkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQFY3VyUHIJAQJmMQIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzCQBkAgUFb3V0QW0FBW91dFByAwkAAAIFCm91dEFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCm91dEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQZwbXRBbXQFBWN1clByBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQVjdXJQcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQRidXJuBQRidXJuBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8MBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAHAAACAAFpASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQGdHhJZDU4B3BtdEFzSWQIcG10THBBbXQHdXNyQWRkcgQBcgkBA2VnbwQFBnR4SWQ1OAUHcG10QXNJZAUIcG10THBBbXQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3VzckFkZHIJAJQKAgUDbmlsCQCcCgoIBQFyAl8xCAUBcgJfMggFAXICXzMIBQFyAl80CAUBcgJfNQgFAXICXzYIBQFyAl83CQCmAwEIBQFyAl84CAUBcgJfOQgFAXIDXzEwAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIFT3JkZXIEBW9yZGVyBQckbWF0Y2gwBAptYXRjaGVyUHViCQECbXAABApvcmRlclZhbGlkCQEDbW9hAQUFb3JkZXIEC3NlbmRlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAxtYXRjaGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAEFCm1hdGNoZXJQdWIDAwMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBwUMbWF0Y2hlclZhbGlkBwYJAQN0b2UDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAUMbWF0Y2hlclZhbGlkAwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAFzBQckbWF0Y2gwBAduZXdIYXNoCQD2AwEJAQV2YWx1ZQEIBQFzBnNjcmlwdAQLYWxsb3dlZEhhc2gJANsEAQkBBXZhbHVlAQkAnQgCBQNmY2EJARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAQLY3VycmVudEhhc2gJAPEHAQUEdGhpcwMDCQAAAgULYWxsb3dlZEhhc2gFB25ld0hhc2gJAQIhPQIFC2N1cnJlbnRIYXNoBQduZXdIYXNoBwYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5+SmWhw==", "height": 2226425, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GUpMxyZQmTczx19YvnwihhixsXw3smudYtE2uzkPhioe Next: DuTvqn8retCMWKnhW1NZtvcwqtYzGj5DhP5984wfEtrU Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 1000000
4+let a = 100000000
55
66 let b = 100000000
77
634634 else {
635635 let bR = aX(bL)
636636 let bS = aX(bM)
637- let dX = if ((bH == bL))
638- then if (if ((dW > bR))
637+ let dX = ((bR * a) / pow(10, 0, bN, 0, 0, DOWN))
638+ let dY = ((bS * a) / pow(10, 0, bO, 0, 0, DOWN))
639+ let dZ = if ((bH == bL))
640+ then if (if ((dW > dX))
639641 then true
640642 else (dP > dW))
641643 then throw("invalid payment amount")
642- else $Tuple6((bR - dW), bS, (dW - dP), dQ, 0, 0)
644+ else $Tuple6((dX - dW), dY, (dW - dP), dQ, 0, 0)
643645 else if ((bH == bM))
644- then if (if ((dW > bS))
646+ then if (if ((dW > dY))
645647 then true
646648 else (dQ > dW))
647649 then throw("invalid payment amount")
648- else $Tuple6(bR, (bS - dW), 0, 0, (dW - dQ), dP)
650+ else $Tuple6(dX, (dY - dW), 0, 0, (dW - dQ), dP)
649651 else throw("wrong pmtAssetId")
650- let dY = dX._1
651- let dZ = dX._2
652- let ea = dX._3
653- let eb = dX._4
654- let ec = dX._5
655- let ed = dX._6
656- let bk = invoke(dS, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
657- let bj = invoke(dS, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
658- let ee = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
659- if ((ee == ee))
652+ let ea = dZ._1
653+ let eb = dZ._2
654+ let ec = dZ._3
655+ let ed = dZ._4
656+ let ee = dZ._5
657+ let ef = dZ._6
658+ let bk = invoke(dS, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
659+ let bj = invoke(dS, "calcD", [toString(toBigInt(((ea + ec) - ef))), toString(toBigInt(((eb + ee) - ed))), aA, h, i], nil)
660+ let eg = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
661+ if ((eg == eg))
660662 then {
661- let ef = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(fromBase58String(bL), dP), AttachedPayment(fromBase58String(bM), dQ), bf, true, true, cq, bH)
662- let eg = ef._2
663- let dI = ef._7
664- let ch = ef._9
665- let cS = ef._10
666- let cT = ef._11
667- let eh = bc(toBigInt(eg), toBigInt(dR), toBigInt(bf))
668- let cR = toInt(eh._2)
663+ let eh = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(fromBase58String(bL), dP), AttachedPayment(fromBase58String(bM), dQ), bf, true, true, cq, bH)
664+ let ei = eh._2
665+ let dI = eh._7
666+ let ch = eh._9
667+ let cS = eh._10
668+ let cT = eh._11
669+ let ej = bc(toBigInt(ei), toBigInt(dR), toBigInt(bf))
670+ let cR = toInt(ej._2)
669671 let dH = invoke(az, "emit", [cR], nil)
670672 if ((dH == dH))
671673 then {
716718
717719
718720 @Callable(dm)
719-func putForFree (ei) = if ((0 > ei))
721+func putForFree (ek) = if ((0 > ek))
720722 then throw("Wrong slpg")
721723 else if ((size(dm.payments) != 2))
722724 then throw("2 pmnts expd")
723725 else {
724- let ef = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], ei, false, false, 0, "")
725- ef._9
726+ let eh = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], ek, false, false, 0, "")
727+ eh._9
726728 }
727729
728730
730732 @Callable(dm)
731733 func get () = {
732734 let cE = dl(dm)
733- let ej = cE._1
735+ let el = cE._1
734736 let cg = cE._2
735737 let cq = cE._3
736738 let bH = cE._4
737739 let ch = cE._5
738- let ek = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
739- if ((ek == ek))
740+ let em = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
741+ if ((em == em))
740742 then ch
741743 else throw("Strict value is not equal to itself.")
742744 }
744746
745747
746748 @Callable(dm)
747-func getOneTkn (el,em,en,eo,bf) = if ((size(dm.payments) != 1))
749+func getOneTkn (en,eo,ep,eq,bf) = if ((size(dm.payments) != 1))
748750 then throw("1 pmnt expd")
749751 else {
750752 let bw = aD()
768770 then throw("Min pmt 10 LP")
769771 else if (if (if ((0 > bf))
770772 then true
771- else (0 > el))
773+ else (0 > en))
772774 then true
773- else (0 > en))
775+ else (0 > ep))
774776 then throw("Wrong params")
775777 else if ((bK != toBase58String(bH)))
776778 then throw("Wrong LP")
777779 else {
778780 let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
779- let ep = cE._1
780- let eq = cE._2
781+ let er = cE._1
782+ let es = cE._2
781783 let bR = aX(bL)
782784 let bS = aX(bM)
783- let er = if ((eo == bL))
784- then $Tuple7((bR - ep), (bS - eq), el, eq, 0, 0, (ep + el))
785- else if ((eo == bM))
786- then $Tuple7((bR - ep), (bS - eq), 0, 0, el, ep, (eq + el))
785+ let et = if ((eq == bL))
786+ then $Tuple7((bR - er), (bS - es), en, es, 0, 0, (er + en))
787+ else if ((eq == bM))
788+ then $Tuple7((bR - er), (bS - es), 0, 0, en, er, (es + en))
787789 else throw("wrong outAssetId")
788- let dY = er._1
789- let dZ = er._2
790- let ea = er._3
791- let eb = er._4
792- let ec = er._5
793- let ed = er._6
794- let es = er._7
795- if (if ((0 > ea))
790+ let ea = et._1
791+ let eb = et._2
792+ let ec = et._3
793+ let ed = et._4
794+ let ee = et._5
795+ let ef = et._6
796+ let eu = et._7
797+ if (if ((0 > ec))
796798 then true
797- else (0 > ec))
799+ else (0 > ee))
798800 then throw("Wrong calc")
799801 else {
800- let bk = invoke(dS, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
801- let bj = invoke(dS, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
802- let ee = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
803- if ((ee == ee))
802+ let bk = invoke(dS, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
803+ let bj = invoke(dS, "calcD", [toString(((ea - ec) + ef)), toString(((eb + ed) - ee)), aA, h, i], nil)
804+ let eg = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
805+ if ((eg == eg))
804806 then {
805- let et = bc(toBigInt(es), toBigInt(en), toBigInt(bf))
806- if ((et == et))
807+ let ev = bc(toBigInt(eu), toBigInt(ep), toBigInt(bf))
808+ if ((ev == ev))
807809 then {
808- let eu = if ((eo == bL))
809- then $Tuple2(toInt(et._2), 0)
810- else $Tuple2(0, toInt(et._2))
811- let ev = eu._1
812- let ew = eu._2
813- let ex = aZ(C(bS, bO), C(bR, bN))
814- let ey = F(ex, b)
815- let ch = [ScriptTransfer(bJ, (ev + ew), if ((eo == "WAVES"))
810+ let ew = if ((eq == bL))
811+ then $Tuple2(toInt(ev._2), 0)
812+ else $Tuple2(0, toInt(ev._2))
813+ let ex = ew._1
814+ let ey = ew._2
815+ let ez = aZ(C(bS, bO), C(bR, bN))
816+ let eA = F(ez, b)
817+ let ch = [ScriptTransfer(bJ, (ex + ey), if ((eq == "WAVES"))
816818 then unit
817- else fromBase58String(eo)), StringEntry(X(toString(bJ), bG), aT(ev, ew, cq, ey, height, lastBlock.timestamp)), IntegerEntry(Q(), ey), IntegerEntry(R(height, lastBlock.timestamp), ey)]
819+ else fromBase58String(eq)), StringEntry(X(toString(bJ), bG), aT(ex, ey, cq, eA, height, lastBlock.timestamp)), IntegerEntry(Q(), eA), IntegerEntry(R(height, lastBlock.timestamp), eA)]
818820 if ((ch == ch))
819821 then {
820- let ez = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
821- if ((ez == ez))
822+ let eB = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
823+ if ((eB == eB))
822824 then ch
823825 else throw("Strict value is not equal to itself.")
824826 }
834836
835837
836838 @Callable(dm)
837-func getNoLess (eA,eB) = {
839+func getNoLess (eC,eD) = {
838840 let cE = dl(dm)
839841 let cf = cE._1
840842 let cg = cE._2
841843 let cq = cE._3
842844 let bH = cE._4
843845 let ch = cE._5
844- if ((eA > cf))
845- then throw(((("Failed: " + toString(cf)) + " < ") + toString(eA)))
846- else if ((eB > cg))
847- then throw(((("Failed: " + toString(cg)) + " < ") + toString(eB)))
846+ if ((eC > cf))
847+ then throw(((("Failed: " + toString(cf)) + " < ") + toString(eC)))
848+ else if ((eD > cg))
849+ then throw(((("Failed: " + toString(cg)) + " < ") + toString(eD)))
848850 else {
849- let eC = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
850- if ((eC == eC))
851+ let eE = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
852+ if ((eE == eE))
851853 then ch
852854 else throw("Strict value is not equal to itself.")
853855 }
856858
857859
858860 @Callable(dm)
859-func unstakeAndGet (eD) = {
860- let eE = if ((size(dm.payments) != 0))
861+func unstakeAndGet (eF) = {
862+ let eG = if ((size(dm.payments) != 0))
861863 then throw("No pmnts expd")
862864 else true
863- if ((eE == eE))
865+ if ((eG == eG))
864866 then {
865867 let bw = aD()
866- let eF = aH()
868+ let eH = aH()
867869 let dI = fromBase58String(bw[r])
868- let eG = valueOrErrorMessage(addressFromString(eF[y]), "Wr st addr")
869- let eH = invoke(eG, "unstake", [toBase58String(dI), eD], nil)
870- if ((eH == eH))
870+ let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
871+ let eJ = invoke(eI, "unstake", [toBase58String(dI), eF], nil)
872+ if ((eJ == eJ))
871873 then {
872- let cE = bF(toBase58String(dm.transactionId), toBase58String(dI), eD, dm.caller)
874+ let cE = bF(toBase58String(dm.transactionId), toBase58String(dI), eF, dm.caller)
873875 let bP = parseIntValue(cE._9)
874876 let ch = cE._10
875- let eI = if (if (aB())
877+ let eK = if (if (aB())
876878 then true
877879 else (bP == o))
878880 then throw(("Blocked: " + toString(bP)))
879881 else true
880- if ((eI == eI))
882+ if ((eK == eK))
881883 then {
882- let eJ = invoke(az, "burn", [eD], [AttachedPayment(dI, eD)])
883- if ((eJ == eJ))
884+ let eL = invoke(az, "burn", [eF], [AttachedPayment(dI, eF)])
885+ if ((eL == eL))
884886 then ch
885887 else throw("Strict value is not equal to itself.")
886888 }
894896
895897
896898 @Callable(dm)
897-func activate (eK,eL) = if ((toString(dm.caller) != toString(az)))
899+func activate (eM,eN) = if ((toString(dm.caller) != toString(az)))
898900 then throw("denied")
899- else $Tuple2([StringEntry(Y(), eK), StringEntry(Z(), eL)], "success")
901+ else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
900902
901903
902904
903905 @Callable(dm)
904-func setS (eM,eI) = if ((toString(dm.caller) != av(this, ab())))
906+func setS (eO,eK) = if ((toString(dm.caller) != av(this, ab())))
905907 then du
906- else [StringEntry(eM, eI)]
908+ else [StringEntry(eO, eK)]
907909
908910
909911
910912 @Callable(dm)
911-func setI (eM,eI) = if ((toString(dm.caller) != av(this, ab())))
913+func setI (eO,eK) = if ((toString(dm.caller) != av(this, ab())))
912914 then du
913- else [IntegerEntry(eM, eI)]
915+ else [IntegerEntry(eO, eK)]
914916
915917
916918
926928
927929 @Callable(dm)
928930 func calcPricesWrapperREADONLY (bq,br,bv) = {
929- let eN = bu(bq, br, bv)
930- $Tuple2(nil, [toString(eN[0]), toString(eN[1]), toString(eN[2])])
931+ let eP = bu(bq, br, bv)
932+ $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
931933 }
932934
933935
934936
935937 @Callable(dm)
936-func fromX18WrapperREADONLY (G,eO) = $Tuple2(nil, F(parseBigIntValue(G), eO))
938+func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
937939
938940
939941
948950
949951
950952 @Callable(dm)
951-func estimatePutOperationWrapperREADONLY (bG,bf,cj,ck,cl,cm,eP,cn,co) = $Tuple2(nil, ci(bG, bf, cj, ck, cl, cm, eP, cn, co, false, 0, ""))
953+func estimatePutOperationWrapperREADONLY (bG,bf,cj,ck,cl,cm,eR,cn,co) = $Tuple2(nil, ci(bG, bf, cj, ck, cl, cm, eR, cn, co, false, 0, ""))
952954
953955
954956
955957 @Callable(dm)
956-func estimateGetOperationWrapperREADONLY (bG,eQ,bI,eP) = {
957- let cE = bF(bG, eQ, bI, addressFromStringValue(eP))
958+func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
959+ let cE = bF(bG, eS, bI, addressFromStringValue(eR))
958960 $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
959961 }
960962
961963
962-@Verifier(eR)
963-func eS () = {
964- let eT = {
964+@Verifier(eT)
965+func eU () = {
966+ let eV = {
965967 let at = dr()
966968 if ($isInstanceOf(at, "ByteVector"))
967969 then {
969971 dw
970972 }
971973 else if ($isInstanceOf(at, "Unit"))
972- then eR.senderPublicKey
974+ then eT.senderPublicKey
973975 else throw("Match error")
974976 }
975- let at = eR
977+ let at = eT
976978 if ($isInstanceOf(at, "Order"))
977979 then {
978980 let cZ = at
979- let eU = aC()
980- let eV = cY(cZ)
981- let eW = sigVerify(cZ.bodyBytes, cZ.proofs[0], cZ.senderPublicKey)
982- let eX = sigVerify(cZ.bodyBytes, cZ.proofs[1], eU)
983- if (if (if (eV)
984- then eW
981+ let eW = aC()
982+ let eX = cY(cZ)
983+ let eY = sigVerify(cZ.bodyBytes, cZ.proofs[0], cZ.senderPublicKey)
984+ let eZ = sigVerify(cZ.bodyBytes, cZ.proofs[1], eW)
985+ if (if (if (eX)
986+ then eY
985987 else false)
986- then eX
988+ then eZ
987989 else false)
988990 then true
989- else ao(eV, eW, eX)
991+ else ao(eX, eY, eZ)
990992 }
991993 else if ($isInstanceOf(at, "SetScriptTransaction"))
992994 then {
993995 let ds = at
994- let eY = blake2b256(value(ds.script))
995- let eZ = fromBase64String(value(getString(az, an())))
996- let fa = scriptHash(this)
997- if (if ((eZ == eY))
998- then (fa != eY)
996+ let fa = blake2b256(value(ds.script))
997+ let fb = fromBase64String(value(getString(az, an())))
998+ let fc = scriptHash(this)
999+ if (if ((fb == fa))
1000+ then (fc != fa)
9991001 else false)
10001002 then true
1001- else sigVerify(eR.bodyBytes, eR.proofs[0], eT)
1003+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10021004 }
1003- else sigVerify(eR.bodyBytes, eR.proofs[0], eT)
1005+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10041006 }
10051007
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 1000000
4+let a = 100000000
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt((b - ((b * 1) / b)))
1717
1818 let h = "100"
1919
2020 let i = "1"
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 5
4343
4444 let u = 6
4545
4646 let v = 7
4747
4848 let w = 8
4949
5050 let x = 9
5151
5252 let y = 1
5353
5454 let z = 7
5555
5656 let A = 10
5757
5858 let B = "%s__delay"
5959
6060 func C (D,E) = fraction(toBigInt(D), d, toBigInt(E))
6161
6262
6363 func F (G,H) = toInt(fraction(G, toBigInt(H), d))
6464
6565
6666 func I (J,K,L) = fraction(J, K, L)
6767
6868
6969 func M (G) = if ((e > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N () = "%s__factoryContract"
7575
7676
7777 func O () = "%s__managerPublicKey"
7878
7979
8080 func P () = "%s__pendingManagerPublicKey"
8181
8282
8383 func Q () = "%s%s__price__last"
8484
8585
8686 func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8787
8888
8989 func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
9090
9191
9292 func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9393
9494
9595 func Y () = "%s__amountAsset"
9696
9797
9898 func Z () = "%s__priceAsset"
9999
100100
101101 func aa () = "%s__amp"
102102
103103
104104 func ab () = "%s__addonAddr"
105105
106106
107107 func ac (ad) = makeString(["%s%s__lastGetOneTknCall", ad], j)
108108
109109
110110 func ae (ad) = makeString(["%s%s__lastPutOneTknCall", ad], j)
111111
112112
113113 func af () = "%s__factoryConfig"
114114
115115
116116 func ag () = "%s%s__matcher__publicKey"
117117
118118
119119 func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
120120
121121
122122 func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
123123
124124
125125 func am () = "%s__shutdown"
126126
127127
128128 func an () = "%s__allowedLpStableScriptHash"
129129
130130
131131 func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
132132
133133
134134 func as (G) = {
135135 let at = G
136136 if ($isInstanceOf(at, "String"))
137137 then {
138138 let au = at
139139 au
140140 }
141141 else throw("fail cast to String")
142142 }
143143
144144
145145 func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146146
147147
148148 func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
149149
150150
151151 let az = addressFromStringValue(av(this, N()))
152152
153153 let aA = av(this, aa())
154154
155155 func aB () = valueOrElse(getBoolean(az, am()), false)
156156
157157
158158 func aC () = fromBase58String(av(az, ag()))
159159
160160
161161 func aD () = {
162162 let aE = av(this, Y())
163163 let aF = av(this, Z())
164164 let aG = ay(az, ak(aF))
165165 let ai = ay(az, ak(aE))
166166 split(av(az, ah(toString(ai), toString(aG))), j)
167167 }
168168
169169
170170 func aH () = split(av(az, af()), j)
171171
172172
173173 func aI (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS)], j)
174174
175175
176176 func aT (aU,aV,aW,aM,aP,aQ) = makeString(["%d%d%d%d%d%d", toString(aU), toString(aV), toString(aW), toString(aM), toString(aP), toString(aQ)], j)
177177
178178
179179 func aX (aY) = if ((aY == "WAVES"))
180180 then wavesBalance(this).available
181181 else assetBalance(this, fromBase58String(aY))
182182
183183
184184 func aZ (ba,bb) = fraction(ba, d, bb)
185185
186186
187187 func bc (bd,be,bf) = {
188188 let bg = fraction((bd - be), c, be)
189189 let bh = ((bf - M(bg)) > e)
190190 if (!(bh))
191191 then throw(("Big slpg: " + toString(bg)))
192192 else $Tuple2(bh, min([bd, be]))
193193 }
194194
195195
196196 func bi (bj,bk,bl) = {
197197 let bg = fraction(bk, c, bj)
198198 let bm = (bl > bg)
199199 if (if (bm)
200200 then true
201201 else (bk > bj))
202202 then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203203 else bm
204204 }
205205
206206
207207 func bn (bo,bp,bq,br) = {
208208 let bs = C(bq, bo)
209209 let bt = C(br, bp)
210210 aZ(bt, bs)
211211 }
212212
213213
214214 func bu (bq,br,bv) = {
215215 let bw = aD()
216216 let bx = parseIntValue(bw[u])
217217 let by = parseIntValue(bw[v])
218218 let bz = bn(bx, by, bq, br)
219219 let bb = C(bq, bx)
220220 let ba = C(br, by)
221221 let bA = C(bv, b)
222222 let bB = aZ(bb, bA)
223223 let bC = aZ(ba, bA)
224224 [bz, bB, bC]
225225 }
226226
227227
228228 func bD (bq,br,bv) = {
229229 let bE = bu(bq, br, bv)
230230 [F(bE[0], b), F(bE[1], b), F(bE[2], b)]
231231 }
232232
233233
234234 func bF (bG,bH,bI,bJ) = {
235235 let bw = aD()
236236 let bK = bw[r]
237237 let bL = bw[s]
238238 let bM = bw[t]
239239 let bN = parseIntValue(bw[u])
240240 let bO = parseIntValue(bw[v])
241241 let bP = bw[q]
242242 let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243243 if ((bK != bH))
244244 then throw("Wrong pmt asset")
245245 else {
246246 let bR = aX(bL)
247247 let bS = aX(bM)
248248 let bT = fraction(bR, a, bN)
249249 let bU = fraction(bS, a, bO)
250250 let bV = C(bT, a)
251251 let bW = C(bU, a)
252252 let bX = aZ(bW, bV)
253253 let bY = F(bX, b)
254254 let bZ = C(bI, b)
255255 let ca = C(bQ, b)
256256 let cb = fraction(bV, bZ, ca)
257257 let cc = fraction(bW, bZ, ca)
258258 let cd = F(cb, a)
259259 let ce = F(cc, a)
260260 let cf = fraction(cd, bN, a)
261261 let cg = fraction(ce, bO, a)
262262 let ch = if ((bG == ""))
263263 then nil
264264 else [ScriptTransfer(bJ, cf, if ((bL == "WAVES"))
265265 then unit
266266 else fromBase58String(bL)), ScriptTransfer(bJ, cg, if ((bM == "WAVES"))
267267 then unit
268268 else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cf, cg, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
269269 $Tuple10(cf, cg, bL, bM, bR, bS, bQ, bX, bP, ch)
270270 }
271271 }
272272
273273
274274 func ci (bG,bf,cj,ck,cl,cm,bJ,cn,co,cp,cq,cr) = {
275275 let bw = aD()
276276 let bK = fromBase58String(bw[r])
277277 let cs = bw[s]
278278 let ct = bw[t]
279279 let cu = bw[w]
280280 let cv = bw[x]
281281 let cw = parseIntValue(bw[u])
282282 let cx = parseIntValue(bw[v])
283283 let bP = bw[q]
284284 let cy = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
285285 let bR = if (cn)
286286 then aX(cs)
287287 else if (if (cp)
288288 then (cr == cs)
289289 else false)
290290 then (aX(cs) - cq)
291291 else if (cp)
292292 then aX(cs)
293293 else (aX(cs) - cj)
294294 let bS = if (cn)
295295 then aX(ct)
296296 else if (if (cp)
297297 then (cr == ct)
298298 else false)
299299 then (aX(ct) - cq)
300300 else if (cp)
301301 then aX(ct)
302302 else (aX(ct) - cl)
303303 let bT = fraction(bR, a, cw)
304304 let bU = fraction(bS, a, cx)
305305 let cz = fraction(cj, a, cw)
306306 let cA = fraction(cl, a, cx)
307307 let cB = C(cz, a)
308308 let cC = C(cA, a)
309309 let cD = aZ(cC, cB)
310310 let bV = C(bT, a)
311311 let bW = C(bU, a)
312312 let cE = if ((cy == 0))
313313 then {
314314 let bX = e
315315 let cF = e
316316 let bA = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
317317 $Tuple5(F(bA, b), F(cB, a), F(cC, a), aZ((bW + cC), (bV + cB)), cF)
318318 }
319319 else {
320320 let bX = aZ(bW, bV)
321321 let cG = fraction(M((bX - cD)), d, bX)
322322 let cF = C(bf, b)
323323 if (if ((bX != e))
324324 then (cG > cF)
325325 else false)
326326 then throw(((("Price slippage " + toString(cG)) + " > ") + toString(cF)))
327327 else {
328328 let cH = C(cy, b)
329329 let cI = fraction(cB, bX, d)
330330 let cJ = fraction(cC, d, bX)
331331 let cK = if ((cI > cC))
332332 then $Tuple2(cJ, cC)
333333 else $Tuple2(cB, cI)
334334 let cL = cK._1
335335 let cM = cK._2
336336 let bA = fraction(cH, cM, bW)
337337 $Tuple5(F(bA, b), F(cL, a), F(cM, a), bX, cF)
338338 }
339339 }
340340 let cN = cE._1
341341 let cO = fraction(cE._2, cw, a)
342342 let cP = fraction(cE._3, cx, a)
343343 let bY = F(cE._4, b)
344344 let cQ = F(cE._5, b)
345345 if ((0 >= cN))
346346 then throw("LP <= 0")
347347 else {
348348 let cR = if (!(co))
349349 then 0
350350 else cN
351351 let cS = (cj - cO)
352352 let cT = (cl - cP)
353353 let cU = if (if (cp)
354354 then (cr == cs)
355355 else false)
356356 then $Tuple2(cq, 0)
357357 else if (if (cp)
358358 then (cr == ct)
359359 else false)
360360 then $Tuple2(0, cq)
361361 else $Tuple2(cO, cP)
362362 let cV = cU._1
363363 let cW = cU._2
364364 let cX = [IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY), StringEntry(U(bJ, bG), aI(cV, cW, cR, bY, bf, cQ, height, lastBlock.timestamp, cS, cT))]
365365 $Tuple13(cN, cR, bY, bR, bS, cy, bK, bP, cX, cS, cT, ck, cm)
366366 }
367367 }
368368
369369
370370 func cY (cZ) = {
371371 let bw = aD()
372372 let da = bw[s]
373373 let db = bw[t]
374374 let bP = parseIntValue(bw[q])
375375 let bx = parseIntValue(bw[u])
376376 let by = parseIntValue(bw[v])
377377 let dc = aX(da)
378378 let dd = aX(db)
379379 let bX = if ((cZ.orderType == Buy))
380380 then bn(bx, by, (dc + cZ.amount), dd)
381381 else bn(bx, by, (dc - cZ.amount), dd)
382382 let bY = F(bX, b)
383383 if (if (if (aB())
384384 then true
385385 else (bP == n))
386386 then true
387387 else (bP == o))
388388 then throw("Admin blocked")
389389 else {
390390 let de = cZ.assetPair.amountAsset
391391 let df = if ((de == unit))
392392 then "WAVES"
393393 else toBase58String(value(de))
394394 let dg = cZ.assetPair.priceAsset
395395 let dh = if ((dg == unit))
396396 then "WAVES"
397397 else toBase58String(value(dg))
398398 if (if ((df != da))
399399 then true
400400 else (dh != db))
401401 then throw("Wr assets")
402402 else {
403403 let di = cZ.price
404404 let cx = fraction(b, by, bx)
405405 let dj = I(di, b, cx)
406406 let dk = if ((cZ.orderType == Buy))
407407 then (bY >= dj)
408408 else (dj >= bY)
409409 true
410410 }
411411 }
412412 }
413413
414414
415415 func dl (dm) = if ((size(dm.payments) != 1))
416416 then throw("1 pmnt exp")
417417 else {
418418 let dn = value(dm.payments[0])
419419 let bH = value(dn.assetId)
420420 let cq = dn.amount
421421 let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
422422 let cf = cE._1
423423 let cg = cE._2
424424 let bP = parseIntValue(cE._9)
425425 let ch = cE._10
426426 if (if (aB())
427427 then true
428428 else (bP == o))
429429 then throw(("Admin blocked: " + toString(bP)))
430430 else $Tuple5(cf, cg, cq, bH, ch)
431431 }
432432
433433
434434 func do (ad,W,dp,dq,bf,co,cp,cq,cr) = {
435435 let cE = ci(W, bf, value(dp).amount, value(dp).assetId, value(dq).amount, value(dq).assetId, ad, false, co, cp, cq, cr)
436436 let bP = parseIntValue(cE._8)
437437 if (if (if (aB())
438438 then true
439439 else (bP == m))
440440 then true
441441 else (bP == o))
442442 then throw(("Blocked:" + toString(bP)))
443443 else cE
444444 }
445445
446446
447447 func dr () = {
448448 let at = getString(O())
449449 if ($isInstanceOf(at, "String"))
450450 then {
451451 let ds = at
452452 fromBase58String(ds)
453453 }
454454 else if ($isInstanceOf(at, "Unit"))
455455 then unit
456456 else throw("Match error")
457457 }
458458
459459
460460 func dt () = {
461461 let at = getString(P())
462462 if ($isInstanceOf(at, "String"))
463463 then {
464464 let ds = at
465465 fromBase58String(ds)
466466 }
467467 else if ($isInstanceOf(at, "Unit"))
468468 then unit
469469 else throw("Match error")
470470 }
471471
472472
473473 let du = throw("Permission denied")
474474
475475 func dv (dm) = {
476476 let at = dr()
477477 if ($isInstanceOf(at, "ByteVector"))
478478 then {
479479 let dw = at
480480 if ((dm.callerPublicKey == dw))
481481 then true
482482 else du
483483 }
484484 else if ($isInstanceOf(at, "Unit"))
485485 then if ((dm.caller == this))
486486 then true
487487 else du
488488 else throw("Match error")
489489 }
490490
491491
492492 @Callable(dm)
493493 func constructor (N) = {
494494 let dx = dv(dm)
495495 if ((dx == dx))
496496 then [StringEntry(N(), N)]
497497 else throw("Strict value is not equal to itself.")
498498 }
499499
500500
501501
502502 @Callable(dm)
503503 func setManager (dy) = {
504504 let dx = dv(dm)
505505 if ((dx == dx))
506506 then {
507507 let dz = fromBase58String(dy)
508508 if ((dz == dz))
509509 then [StringEntry(P(), dy)]
510510 else throw("Strict value is not equal to itself.")
511511 }
512512 else throw("Strict value is not equal to itself.")
513513 }
514514
515515
516516
517517 @Callable(dm)
518518 func confirmManager () = {
519519 let bE = dt()
520520 let dA = if (isDefined(bE))
521521 then true
522522 else throw("No pending manager")
523523 if ((dA == dA))
524524 then {
525525 let dB = if ((dm.callerPublicKey == value(bE)))
526526 then true
527527 else throw("You are not pending manager")
528528 if ((dB == dB))
529529 then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
530530 else throw("Strict value is not equal to itself.")
531531 }
532532 else throw("Strict value is not equal to itself.")
533533 }
534534
535535
536536
537537 @Callable(dm)
538538 func put (dC,dD) = {
539539 let dE = aH()
540540 let dF = valueOrErrorMessage(addressFromString(dE[y]), "Wr st addr")
541541 let dG = valueOrErrorMessage(addressFromString(dE[z]), "Wr sl addr")
542542 if ((0 > dC))
543543 then throw("Wrong slippage")
544544 else if ((size(dm.payments) != 2))
545545 then throw("2 pmnts expd")
546546 else {
547547 let dH = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], dC, true, false, 0, "")
548548 let cR = dH._2
549549 let dI = dH._7
550550 let ch = dH._9
551551 let cS = dH._10
552552 let cT = dH._11
553553 let bL = dH._12
554554 let bM = dH._13
555555 let cE = invoke(az, "emit", [cR], nil)
556556 if ((cE == cE))
557557 then {
558558 let dJ = {
559559 let at = cE
560560 if ($isInstanceOf(at, "Address"))
561561 then {
562562 let dK = at
563563 invoke(dK, "emit", [cR], nil)
564564 }
565565 else unit
566566 }
567567 if ((dJ == dJ))
568568 then {
569569 let dL = if ((cS > 0))
570570 then invoke(dG, "put", nil, [AttachedPayment(bL, cS)])
571571 else nil
572572 if ((dL == dL))
573573 then {
574574 let dM = if ((cT > 0))
575575 then invoke(dG, "put", nil, [AttachedPayment(bM, cT)])
576576 else nil
577577 if ((dM == dM))
578578 then {
579579 let dN = if (dD)
580580 then {
581581 let dO = invoke(dF, "stake", nil, [AttachedPayment(dI, cR)])
582582 if ((dO == dO))
583583 then nil
584584 else throw("Strict value is not equal to itself.")
585585 }
586586 else [ScriptTransfer(dm.caller, cR, dI)]
587587 (ch ++ dN)
588588 }
589589 else throw("Strict value is not equal to itself.")
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595 else throw("Strict value is not equal to itself.")
596596 }
597597 }
598598
599599
600600
601601 @Callable(dm)
602602 func putOneTkn (dP,dQ,dR,bf,dD) = {
603603 let bw = aH()
604604 let dF = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
605605 let dG = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
606606 let dS = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
607607 let dT = aD()
608608 let bL = dT[s]
609609 let bM = dT[t]
610610 let bN = parseIntValue(dT[u])
611611 let bO = parseIntValue(dT[v])
612612 let dU = valueOrElse(getString(this, ab()), "")
613613 let bJ = if ((dU == toString(dm.caller)))
614614 then dm.originCaller
615615 else dm.caller
616616 if (if (if (if ((0 >= bf))
617617 then true
618618 else (0 >= dP))
619619 then true
620620 else (0 >= dQ))
621621 then true
622622 else (0 >= dR))
623623 then throw("Wrong params")
624624 else if ((size(dm.payments) != 1))
625625 then throw("1 pmnt expd")
626626 else {
627627 let dn = value(dm.payments[0])
628628 let bH = toBase58String(value(dn.assetId))
629629 let dV = value(assetInfo(value(dm.payments[0].assetId))).decimals
630630 let cq = dn.amount
631631 let dW = ((cq * a) / pow(10, 0, dV, 0, 0, DOWN))
632632 if ((10000000 > dW))
633633 then throw("Wrong pmt amt")
634634 else {
635635 let bR = aX(bL)
636636 let bS = aX(bM)
637- let dX = if ((bH == bL))
638- then if (if ((dW > bR))
637+ let dX = ((bR * a) / pow(10, 0, bN, 0, 0, DOWN))
638+ let dY = ((bS * a) / pow(10, 0, bO, 0, 0, DOWN))
639+ let dZ = if ((bH == bL))
640+ then if (if ((dW > dX))
639641 then true
640642 else (dP > dW))
641643 then throw("invalid payment amount")
642- else $Tuple6((bR - dW), bS, (dW - dP), dQ, 0, 0)
644+ else $Tuple6((dX - dW), dY, (dW - dP), dQ, 0, 0)
643645 else if ((bH == bM))
644- then if (if ((dW > bS))
646+ then if (if ((dW > dY))
645647 then true
646648 else (dQ > dW))
647649 then throw("invalid payment amount")
648- else $Tuple6(bR, (bS - dW), 0, 0, (dW - dQ), dP)
650+ else $Tuple6(dX, (dY - dW), 0, 0, (dW - dQ), dP)
649651 else throw("wrong pmtAssetId")
650- let dY = dX._1
651- let dZ = dX._2
652- let ea = dX._3
653- let eb = dX._4
654- let ec = dX._5
655- let ed = dX._6
656- let bk = invoke(dS, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
657- let bj = invoke(dS, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
658- let ee = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
659- if ((ee == ee))
652+ let ea = dZ._1
653+ let eb = dZ._2
654+ let ec = dZ._3
655+ let ed = dZ._4
656+ let ee = dZ._5
657+ let ef = dZ._6
658+ let bk = invoke(dS, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
659+ let bj = invoke(dS, "calcD", [toString(toBigInt(((ea + ec) - ef))), toString(toBigInt(((eb + ee) - ed))), aA, h, i], nil)
660+ let eg = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
661+ if ((eg == eg))
660662 then {
661- let ef = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(fromBase58String(bL), dP), AttachedPayment(fromBase58String(bM), dQ), bf, true, true, cq, bH)
662- let eg = ef._2
663- let dI = ef._7
664- let ch = ef._9
665- let cS = ef._10
666- let cT = ef._11
667- let eh = bc(toBigInt(eg), toBigInt(dR), toBigInt(bf))
668- let cR = toInt(eh._2)
663+ let eh = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(fromBase58String(bL), dP), AttachedPayment(fromBase58String(bM), dQ), bf, true, true, cq, bH)
664+ let ei = eh._2
665+ let dI = eh._7
666+ let ch = eh._9
667+ let cS = eh._10
668+ let cT = eh._11
669+ let ej = bc(toBigInt(ei), toBigInt(dR), toBigInt(bf))
670+ let cR = toInt(ej._2)
669671 let dH = invoke(az, "emit", [cR], nil)
670672 if ((dH == dH))
671673 then {
672674 let dJ = {
673675 let at = dH
674676 if ($isInstanceOf(at, "Address"))
675677 then {
676678 let dK = at
677679 invoke(dK, "emit", [cR], nil)
678680 }
679681 else unit
680682 }
681683 if ((dJ == dJ))
682684 then {
683685 let dL = if ((cS > 0))
684686 then invoke(dG, "put", nil, [AttachedPayment(fromBase58String(bL), cS)])
685687 else nil
686688 if ((dL == dL))
687689 then {
688690 let dM = if ((cT > 0))
689691 then invoke(dG, "put", nil, [AttachedPayment(fromBase58String(bM), cT)])
690692 else nil
691693 if ((dM == dM))
692694 then {
693695 let dN = if (dD)
694696 then {
695697 let dO = invoke(dF, "stake", nil, [AttachedPayment(dI, cR)])
696698 if ((dO == dO))
697699 then nil
698700 else throw("Strict value is not equal to itself.")
699701 }
700702 else [ScriptTransfer(dm.caller, cR, dI)]
701703 (ch ++ dN)
702704 }
703705 else throw("Strict value is not equal to itself.")
704706 }
705707 else throw("Strict value is not equal to itself.")
706708 }
707709 else throw("Strict value is not equal to itself.")
708710 }
709711 else throw("Strict value is not equal to itself.")
710712 }
711713 else throw("Strict value is not equal to itself.")
712714 }
713715 }
714716 }
715717
716718
717719
718720 @Callable(dm)
719-func putForFree (ei) = if ((0 > ei))
721+func putForFree (ek) = if ((0 > ek))
720722 then throw("Wrong slpg")
721723 else if ((size(dm.payments) != 2))
722724 then throw("2 pmnts expd")
723725 else {
724- let ef = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], ei, false, false, 0, "")
725- ef._9
726+ let eh = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], ek, false, false, 0, "")
727+ eh._9
726728 }
727729
728730
729731
730732 @Callable(dm)
731733 func get () = {
732734 let cE = dl(dm)
733- let ej = cE._1
735+ let el = cE._1
734736 let cg = cE._2
735737 let cq = cE._3
736738 let bH = cE._4
737739 let ch = cE._5
738- let ek = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
739- if ((ek == ek))
740+ let em = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
741+ if ((em == em))
740742 then ch
741743 else throw("Strict value is not equal to itself.")
742744 }
743745
744746
745747
746748 @Callable(dm)
747-func getOneTkn (el,em,en,eo,bf) = if ((size(dm.payments) != 1))
749+func getOneTkn (en,eo,ep,eq,bf) = if ((size(dm.payments) != 1))
748750 then throw("1 pmnt expd")
749751 else {
750752 let bw = aD()
751753 let bK = bw[r]
752754 let bL = bw[s]
753755 let bM = bw[t]
754756 let bN = parseIntValue(bw[u])
755757 let bO = parseIntValue(bw[v])
756758 let bP = bw[q]
757759 let dE = aH()
758760 let dS = valueOrErrorMessage(addressFromString(dE[A]), "Wr sl addr")
759761 let dn = value(dm.payments[0])
760762 let dU = valueOrElse(getString(this, ab()), "")
761763 let bJ = if ((dU == toString(dm.caller)))
762764 then dm.originCaller
763765 else dm.caller
764766 let bG = toBase58String(dm.transactionId)
765767 let bH = value(dn.assetId)
766768 let cq = dn.amount
767769 if ((1000000000 > cq))
768770 then throw("Min pmt 10 LP")
769771 else if (if (if ((0 > bf))
770772 then true
771- else (0 > el))
773+ else (0 > en))
772774 then true
773- else (0 > en))
775+ else (0 > ep))
774776 then throw("Wrong params")
775777 else if ((bK != toBase58String(bH)))
776778 then throw("Wrong LP")
777779 else {
778780 let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
779- let ep = cE._1
780- let eq = cE._2
781+ let er = cE._1
782+ let es = cE._2
781783 let bR = aX(bL)
782784 let bS = aX(bM)
783- let er = if ((eo == bL))
784- then $Tuple7((bR - ep), (bS - eq), el, eq, 0, 0, (ep + el))
785- else if ((eo == bM))
786- then $Tuple7((bR - ep), (bS - eq), 0, 0, el, ep, (eq + el))
785+ let et = if ((eq == bL))
786+ then $Tuple7((bR - er), (bS - es), en, es, 0, 0, (er + en))
787+ else if ((eq == bM))
788+ then $Tuple7((bR - er), (bS - es), 0, 0, en, er, (es + en))
787789 else throw("wrong outAssetId")
788- let dY = er._1
789- let dZ = er._2
790- let ea = er._3
791- let eb = er._4
792- let ec = er._5
793- let ed = er._6
794- let es = er._7
795- if (if ((0 > ea))
790+ let ea = et._1
791+ let eb = et._2
792+ let ec = et._3
793+ let ed = et._4
794+ let ee = et._5
795+ let ef = et._6
796+ let eu = et._7
797+ if (if ((0 > ec))
796798 then true
797- else (0 > ec))
799+ else (0 > ee))
798800 then throw("Wrong calc")
799801 else {
800- let bk = invoke(dS, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
801- let bj = invoke(dS, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
802- let ee = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
803- if ((ee == ee))
802+ let bk = invoke(dS, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
803+ let bj = invoke(dS, "calcD", [toString(((ea - ec) + ef)), toString(((eb + ed) - ee)), aA, h, i], nil)
804+ let eg = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
805+ if ((eg == eg))
804806 then {
805- let et = bc(toBigInt(es), toBigInt(en), toBigInt(bf))
806- if ((et == et))
807+ let ev = bc(toBigInt(eu), toBigInt(ep), toBigInt(bf))
808+ if ((ev == ev))
807809 then {
808- let eu = if ((eo == bL))
809- then $Tuple2(toInt(et._2), 0)
810- else $Tuple2(0, toInt(et._2))
811- let ev = eu._1
812- let ew = eu._2
813- let ex = aZ(C(bS, bO), C(bR, bN))
814- let ey = F(ex, b)
815- let ch = [ScriptTransfer(bJ, (ev + ew), if ((eo == "WAVES"))
810+ let ew = if ((eq == bL))
811+ then $Tuple2(toInt(ev._2), 0)
812+ else $Tuple2(0, toInt(ev._2))
813+ let ex = ew._1
814+ let ey = ew._2
815+ let ez = aZ(C(bS, bO), C(bR, bN))
816+ let eA = F(ez, b)
817+ let ch = [ScriptTransfer(bJ, (ex + ey), if ((eq == "WAVES"))
816818 then unit
817- else fromBase58String(eo)), StringEntry(X(toString(bJ), bG), aT(ev, ew, cq, ey, height, lastBlock.timestamp)), IntegerEntry(Q(), ey), IntegerEntry(R(height, lastBlock.timestamp), ey)]
819+ else fromBase58String(eq)), StringEntry(X(toString(bJ), bG), aT(ex, ey, cq, eA, height, lastBlock.timestamp)), IntegerEntry(Q(), eA), IntegerEntry(R(height, lastBlock.timestamp), eA)]
818820 if ((ch == ch))
819821 then {
820- let ez = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
821- if ((ez == ez))
822+ let eB = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
823+ if ((eB == eB))
822824 then ch
823825 else throw("Strict value is not equal to itself.")
824826 }
825827 else throw("Strict value is not equal to itself.")
826828 }
827829 else throw("Strict value is not equal to itself.")
828830 }
829831 else throw("Strict value is not equal to itself.")
830832 }
831833 }
832834 }
833835
834836
835837
836838 @Callable(dm)
837-func getNoLess (eA,eB) = {
839+func getNoLess (eC,eD) = {
838840 let cE = dl(dm)
839841 let cf = cE._1
840842 let cg = cE._2
841843 let cq = cE._3
842844 let bH = cE._4
843845 let ch = cE._5
844- if ((eA > cf))
845- then throw(((("Failed: " + toString(cf)) + " < ") + toString(eA)))
846- else if ((eB > cg))
847- then throw(((("Failed: " + toString(cg)) + " < ") + toString(eB)))
846+ if ((eC > cf))
847+ then throw(((("Failed: " + toString(cf)) + " < ") + toString(eC)))
848+ else if ((eD > cg))
849+ then throw(((("Failed: " + toString(cg)) + " < ") + toString(eD)))
848850 else {
849- let eC = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
850- if ((eC == eC))
851+ let eE = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
852+ if ((eE == eE))
851853 then ch
852854 else throw("Strict value is not equal to itself.")
853855 }
854856 }
855857
856858
857859
858860 @Callable(dm)
859-func unstakeAndGet (eD) = {
860- let eE = if ((size(dm.payments) != 0))
861+func unstakeAndGet (eF) = {
862+ let eG = if ((size(dm.payments) != 0))
861863 then throw("No pmnts expd")
862864 else true
863- if ((eE == eE))
865+ if ((eG == eG))
864866 then {
865867 let bw = aD()
866- let eF = aH()
868+ let eH = aH()
867869 let dI = fromBase58String(bw[r])
868- let eG = valueOrErrorMessage(addressFromString(eF[y]), "Wr st addr")
869- let eH = invoke(eG, "unstake", [toBase58String(dI), eD], nil)
870- if ((eH == eH))
870+ let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
871+ let eJ = invoke(eI, "unstake", [toBase58String(dI), eF], nil)
872+ if ((eJ == eJ))
871873 then {
872- let cE = bF(toBase58String(dm.transactionId), toBase58String(dI), eD, dm.caller)
874+ let cE = bF(toBase58String(dm.transactionId), toBase58String(dI), eF, dm.caller)
873875 let bP = parseIntValue(cE._9)
874876 let ch = cE._10
875- let eI = if (if (aB())
877+ let eK = if (if (aB())
876878 then true
877879 else (bP == o))
878880 then throw(("Blocked: " + toString(bP)))
879881 else true
880- if ((eI == eI))
882+ if ((eK == eK))
881883 then {
882- let eJ = invoke(az, "burn", [eD], [AttachedPayment(dI, eD)])
883- if ((eJ == eJ))
884+ let eL = invoke(az, "burn", [eF], [AttachedPayment(dI, eF)])
885+ if ((eL == eL))
884886 then ch
885887 else throw("Strict value is not equal to itself.")
886888 }
887889 else throw("Strict value is not equal to itself.")
888890 }
889891 else throw("Strict value is not equal to itself.")
890892 }
891893 else throw("Strict value is not equal to itself.")
892894 }
893895
894896
895897
896898 @Callable(dm)
897-func activate (eK,eL) = if ((toString(dm.caller) != toString(az)))
899+func activate (eM,eN) = if ((toString(dm.caller) != toString(az)))
898900 then throw("denied")
899- else $Tuple2([StringEntry(Y(), eK), StringEntry(Z(), eL)], "success")
901+ else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
900902
901903
902904
903905 @Callable(dm)
904-func setS (eM,eI) = if ((toString(dm.caller) != av(this, ab())))
906+func setS (eO,eK) = if ((toString(dm.caller) != av(this, ab())))
905907 then du
906- else [StringEntry(eM, eI)]
908+ else [StringEntry(eO, eK)]
907909
908910
909911
910912 @Callable(dm)
911-func setI (eM,eI) = if ((toString(dm.caller) != av(this, ab())))
913+func setI (eO,eK) = if ((toString(dm.caller) != av(this, ab())))
912914 then du
913- else [IntegerEntry(eM, eI)]
915+ else [IntegerEntry(eO, eK)]
914916
915917
916918
917919 @Callable(dm)
918920 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
919921
920922
921923
922924 @Callable(dm)
923925 func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
924926
925927
926928
927929 @Callable(dm)
928930 func calcPricesWrapperREADONLY (bq,br,bv) = {
929- let eN = bu(bq, br, bv)
930- $Tuple2(nil, [toString(eN[0]), toString(eN[1]), toString(eN[2])])
931+ let eP = bu(bq, br, bv)
932+ $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
931933 }
932934
933935
934936
935937 @Callable(dm)
936-func fromX18WrapperREADONLY (G,eO) = $Tuple2(nil, F(parseBigIntValue(G), eO))
938+func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
937939
938940
939941
940942 @Callable(dm)
941943 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
942944
943945
944946
945947 @Callable(dm)
946948 func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
947949
948950
949951
950952 @Callable(dm)
951-func estimatePutOperationWrapperREADONLY (bG,bf,cj,ck,cl,cm,eP,cn,co) = $Tuple2(nil, ci(bG, bf, cj, ck, cl, cm, eP, cn, co, false, 0, ""))
953+func estimatePutOperationWrapperREADONLY (bG,bf,cj,ck,cl,cm,eR,cn,co) = $Tuple2(nil, ci(bG, bf, cj, ck, cl, cm, eR, cn, co, false, 0, ""))
952954
953955
954956
955957 @Callable(dm)
956-func estimateGetOperationWrapperREADONLY (bG,eQ,bI,eP) = {
957- let cE = bF(bG, eQ, bI, addressFromStringValue(eP))
958+func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
959+ let cE = bF(bG, eS, bI, addressFromStringValue(eR))
958960 $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
959961 }
960962
961963
962-@Verifier(eR)
963-func eS () = {
964- let eT = {
964+@Verifier(eT)
965+func eU () = {
966+ let eV = {
965967 let at = dr()
966968 if ($isInstanceOf(at, "ByteVector"))
967969 then {
968970 let dw = at
969971 dw
970972 }
971973 else if ($isInstanceOf(at, "Unit"))
972- then eR.senderPublicKey
974+ then eT.senderPublicKey
973975 else throw("Match error")
974976 }
975- let at = eR
977+ let at = eT
976978 if ($isInstanceOf(at, "Order"))
977979 then {
978980 let cZ = at
979- let eU = aC()
980- let eV = cY(cZ)
981- let eW = sigVerify(cZ.bodyBytes, cZ.proofs[0], cZ.senderPublicKey)
982- let eX = sigVerify(cZ.bodyBytes, cZ.proofs[1], eU)
983- if (if (if (eV)
984- then eW
981+ let eW = aC()
982+ let eX = cY(cZ)
983+ let eY = sigVerify(cZ.bodyBytes, cZ.proofs[0], cZ.senderPublicKey)
984+ let eZ = sigVerify(cZ.bodyBytes, cZ.proofs[1], eW)
985+ if (if (if (eX)
986+ then eY
985987 else false)
986- then eX
988+ then eZ
987989 else false)
988990 then true
989- else ao(eV, eW, eX)
991+ else ao(eX, eY, eZ)
990992 }
991993 else if ($isInstanceOf(at, "SetScriptTransaction"))
992994 then {
993995 let ds = at
994- let eY = blake2b256(value(ds.script))
995- let eZ = fromBase64String(value(getString(az, an())))
996- let fa = scriptHash(this)
997- if (if ((eZ == eY))
998- then (fa != eY)
996+ let fa = blake2b256(value(ds.script))
997+ let fb = fromBase64String(value(getString(az, an())))
998+ let fc = scriptHash(this)
999+ if (if ((fb == fa))
1000+ then (fc != fa)
9991001 else false)
10001002 then true
1001- else sigVerify(eR.bodyBytes, eR.proofs[0], eT)
1003+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10021004 }
1003- else sigVerify(eR.bodyBytes, eR.proofs[0], eT)
1005+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10041006 }
10051007

github/deemru/w8io/169f3d6 
155.85 ms