tx · 4f29r3Rifad8HW7x6XTxQu9UJTY38KEgaB7s9HGyiYyY

3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c:  -0.02200000 Waves

2023.05.10 13:07 [2571648] smart account 3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c > SELF 0.00000000 Waves

{ "type": 13, "id": "4f29r3Rifad8HW7x6XTxQu9UJTY38KEgaB7s9HGyiYyY", "fee": 2200000, "feeAssetId": null, "timestamp": 1683713308316, "version": 2, "chainId": 84, "sender": "3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c", "senderPublicKey": "44kjsoExo76qSrM51NMhbG8FtdLkcPtyJxEDrwDyT8kz", "proofs": [ "e6uAt3fw7uYa1hmfhsqt3nXUtSWAKFrVU85SgDZYNajp56ywCw4jKhovhBM1UyHApf5aSrvLoVYLJcFirFH6U9d" ], "script": "base64:BgK6IggCEgkKBwEBAQEBCAESABIECgIICBIDCgEIEgQKAggIEgQKAggIIg9nZXRTdHJpbmdPckZhaWwiA2tleSIDU0VQIghCVUZTQ0FMRSIGc2NhbGU4Igh0aHJvd0VyciIDbXNnIghhc1N0cmluZyIDdmFsIgckbWF0Y2gwIgZ2YWxTdHIiHWNvbnZlcnRQcmljZUFzc2V0SW50b0lkb0Fzc2V0IhBwcmljZUFzc2V0QW1vdW50Ig5wcmljZUFzc2V0TVVMVCIFcHJpY2UiCXByaWNlTVVMVCIMaWRvQXNzZXRNVUxUIg9iUHJpY2VBc3NldE1VTFQiDWJJZG9Bc3NldE1VTFQiDmJQcmljZUFzc2V0QlVGIg9iQW1vdW50QXNzZXRCVUYiDklkeENmZ0lkb1N0YXJ0IhFJZHhDZmdJZG9EdXJhdGlvbiIQSWR4Q2ZnQ2xhaW1TdGFydCITSWR4Q2ZnQ2xhaW1EdXJhdGlvbiILSWR4Q2ZnUHJpY2UiD0lkeENmZ1ByaWNlTXVsdCIQSWR4Q2ZnSWRvQXNzZXRJZCISSWR4Q2ZnSWRvQXNzZXRNdWx0IhJJZHhDZmdQcmljZUFzc2V0SWQiFElkeENmZ1ByaWNlQXNzZXRNdWx0IhVJZHhDZmdNaW5JbnZlc3RBbW91bnQiDWZyb21hdENvbmZpZ1MiCGlkb1N0YXJ0IgtpZG9EdXJhdGlvbiIKY2xhaW1TdGFydCINY2xhaW1EdXJhdGlvbiIJcHJpY2VNdWx0IgxpZG9Bc3NldElkNTgiDGlkb0Fzc2V0TXVsdCIOcHJpY2VBc3NldElkNTgiDnByaWNlQXNzZXRNdWx0Ig9taW5JbnZlc3RBbW91bnQiE3RvdGFsSWRvQXNzZXRUb1NlbGwiDGZyb21hdENvbmZpZyIRSWR4SW52VG90YWxBbW91bnQiFUlkeEludlJlbWFpbmluZ0Ftb3VudCIdSWR4SW52Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQiG0lkeEludkNsYWltZWRJZG9Bc3NldEFtb3VudCIXSWR4SW52TGFzdENsYWltZWRIZWlnaHQiD2Zvcm1hdEludmVzdG9yUyILdG90YWxBbW91bnQiD3JlbWFpbmluZ0Ftb3VudCIXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQiFWNsYWltZWRJZG9Bc3NldEFtb3VudCIRbGFzdENsYWltZWRIZWlnaHQiDmZvcm1hdEludmVzdG9yIhNmb3JtYXRIaXN0b3J5UmVjb3JkIg5pZG9Bc3NldEFtb3VudCIJa2V5Q29uZmlnIgtrZXlJbnZlc3RvciILdXNlckFkZHJlc3MiCWtleVRvdGFscyIZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZCIEdHlwZSIGdHhJZDU4IhRrZXlVU0ROQ2xhaW1EaXNhYmxlZCIVa2V5VVNETkNsYWltRW5kSGVpZ2h0Ig9rZXlQZXJpb2RMZW5ndGgiEGtleUN1cnJlbnRQZXJpb2QiFGtleVBlcmlvZFN0YXJ0SGVpZ2h0IglwZXJpb2ROdW0iEmtleVBlcmlvZEVuZEhlaWdodCIfa2V5VXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbyIXa2V5VG90YWxQZXJpb2RBbGxvd2FuY2UiB2Fzc2V0SWQiFmtleVVzZXJQZXJpb2RBbGxvd2FuY2UiHmtleVBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIda2V5UGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iG2tleVVzZHRQcmljZUFzc2V0U3RhYmxlUG9vbCIOa2V5VXNkdEFzc2V0SWQiFGtleVByaWNlQXNzZXRCYWxhbmNlIgdhZGRyZXNzIhprZXlJbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIXa2V5VG90YWxSZW1haW5pbmdBbW91bnQiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiD3JlYWRDb25maWdBcnJheSIjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkiCWN1c3RvbUtleSIYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0IhpyZWFkSW52ZXN0b3JBcnJheU9yRGVmYXVsdCIXcmVhZEludmVzdG9yQXJyYXlPckZhaWwiHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMiAXMiFUlkeERpZmZUb3RhbEluY3JlbWVudCIkSWR4RGlmZlJlbWFpbmluZ1ByaWNlQW1vdW50SW5jcmVtZW50IiJJZHhEaWZmQ2xhaW1lZFByaWNlQW1vdW50SW5jcmVtZW50IiVJZHhEaWZmQ2xhaW1lZElkb0Fzc2V0QW1vdW50SW5jcmVtZW50IgtUb3RhbHNFbnRyeSIJb3JpZ0FycmF5Ig1pbmNyZW1lbnREaWZmIhRuZXdMYXN0Q2xhaW1lZEhlaWdodCIRcHJpY2VBc3NldEJhbGFuY2UiDm5ld1RvdGFsQW1vdW50IhJuZXdSZW1haW5pbmdBbW91bnQiCGNmZ0FycmF5IhJwcmljZUFzc2V0RGVjaW1hbHMiI3ByaWNlQXNzZXRCYWxhbmNlUHJpY2VBc3NldERlY2ltYWxzIhpuZXdDbGFpbWVkUHJpY2VBc3NldEFtb3VudCIYbmV3Q2xhaW1lZElkb0Fzc2V0QW1vdW50IgdlbnRyaWVzIgRkaWZmIhduZXdMb2dpY1JlbWFpbmluZ0Ftb3VudCIbSW52ZXN0T3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIhpDbGFpbU9wZXJhdGlvbkhpc3RvcnlFbnRyeSINaW50ZXJuYWxDbGFpbSIQY2xhaW1lZEFzc2V0SWQ1OCIIY2xhaW1FbmQiCmlkb0Fzc2V0SWQiDHByaWNlQXNzZXRJZCINdXNlckFkZHJlc3M1OCIPb3JpZ0ludmVzdEFycmF5IhFpbnZlc3RUb3RhbEFtb3VudCIaaW52ZXN0TGFzdENsYWltZWRIZWlnaHRUTVAiF2ludmVzdExhc3RDbGFpbWVkSGVpZ2h0IhRuZXdDbGFpbVBlcmlvZEhlaWdodCIOY2xhaW1pbmdCbG9ja3MiGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudCIWY2xhaW1pbmdJZG9Bc3NldEFtb3VudCIGaXNVU0ROIhNpc1VTRE5DbGFpbURpc2FibGVkIgZjaGVja3MiD2ludGVybmFsQ2xhaW1WMiIJb3V0QW1vdW50Ihl0b3RhbFVzZXJBdmFpbGFibGVUb0NsYWltIh50b3RhbFBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UiHXVzZXJQZXJpb2RQcmljZUFzc2V0QWxsb3dhbmNlIgxwZXJpb2RMZW5ndGgiDWN1cnJlbnRQZXJpb2QiG3plcm9QZXJpb2RFbmRIZWlnaElzRGVmaW5lZCINJHQwMTMxMzYxNTAwNiIVbGFzdFBlcmlvZFN0YXJ0SGVpZ2h0IhNsYXN0UGVyaW9kRW5kSGVpZ2h0Ig0kdDAxMzM5NjE0MTAxIhR1cGRhdGVkQ3VycmVudFBlcmlvZCILcGVyaW9kU3RhcnQiF2Jsb2Nrc1RvTGFzdFBlcmlvZFN0YXJ0IglwZXJpb2RFbmQiFXplcm9QZXJpb2RTdGFydEhlaWdodCITemVyb1BlcmlvZEVuZEhlaWdodCINJHQwMTQzNTYxNDczOCIbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltIhpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbSIZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbSIcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbyIbcHV0T25lVGtuVjJQcmljZUFzc2V0QW1vdW50Ig0kdDAxNTc2MTE2MDE0IgFAIgVib251cyIJZmVlQW1vdW50IghscEFtb3VudCILdXNkdEFzc2V0SWQiDSR0MDE2MDc2MTYyOTQiFGdldE9uZVRrblYyRmVlQW1vdW50Igp1c2R0QW1vdW50IhpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbyITZW5kUGVyaW9kQmxvY2tzTGVmdCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayIGaWRvRW5kIgNwbXQiDGlkb0Fzc2V0SW5mbyIOcHJpY2VBc3NldEluZm8iD29yaWdUb3RhbHNBcnJheSIKdG90YWxzRGlmZiIObWluSXZlc3RBbW91bnQiCnBtdEFzc2V0SWQiCXBtdEFtb3VudCIRb3JpZ0ludmVzdG9yQXJyYXkiE25ld1ByaWNlVG90YWxBbW91bnQiFnJlcXVpcmVkSWRvQXNzZXRBbW91bnQiD2NhbGxlckFkZHJlc3M1OCIQY2xhaW1SZXN1bHRUdXBsZSIKb3V0QXNzZXRJZCIaY2xhaW1lZFByaWNlQW1vdW50RnJvbURpZmYiHWNsYWltZWRJZG9Bc3NldEFtb3VudEZyb21EaWZmIg0kdDAyMjEzODIyNTgyIiJ1cGRhdGVkUGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltIiF1cGRhdGVkUGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iDmV2YWx1YXRlUmVzdWx0IhthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0iEGxhc3RDbGFpbUVudHJpZXMiE2ludmVzdG9yVG90YWxBbW91bnQiF2ludmVzdG9yUmVtYWluaW5nQW1vdW50IhlpbnZlc3RvclByaWNlQXNzZXRCYWxhbmNlIhdpbnZlc3Rvcklkb0Fzc2V0QmFsYW5jZSIZaW52ZXN0b3JMYXN0Q2xhaW1lZEhlaWdodCIObmV3SW52ZXN0QXJyYXkiBnRvdGFscyIRdG90YWxzVG90YWxBbW91bnQiFXRvdGFsc1JlbWFpbmluZ0Ftb3VudCIddG90YWxzQ2xhaW1lZFByaWNlQXNzZXRBbW91bnQiG3RvdGFsc0NsYWltZWRJZG9Bc3NldEFtb3VudCIXdG90YWxzTGFzdENsYWltZWRIZWlnaHQiGG5ld1RvdGFsc1JlbWFpbmluZ0Ftb3VudCINbmV3VG90YWxBcnJheSIXbmV3VG90YWxSZW1haW5pbmdBbW91bnQiGHVwZGF0ZWRQcmljZUFzc2V0QmFsYW5jZSIccHJpY2VBc3NldEJhbGFuY2VJZG9EZWNpbWFscyIUY2hlY2tVbmNsYWltZWRBc3NldHMiCGludmVzdG9yIhxpbnZlc3RvclJlbWFpbmluZ0Ftb3VudENoZWNrIgtuZXdJbnZlc3RvciIJbmV3VG90YWxzIhVhdmFpbGFibGVUb0NsYWltQXJyYXkiGWF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW0iLmF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW1XaXRoUHJpY2VBc3NldEJhbGFuY2UiDSR0MDMzODMzMzQyNDUiFmN1cnJlbnRQZXJpb2RFbmRIZWlnaHQiGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkIgxyZXN1bHRTdHJpbmciDHBlcmlvZExlbmdodCITdXNlclBlcmlvZEFsbG93YW5jZSIUdG90YWxQZXJpb2RBbGxvd2FuY2UiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleUMBAWEBAWIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQFiCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFiAg8gaXMgbm90IGRlZmluZWQAAWMCAl9fAAFkCQC2AgEAgICQu7rWrfANAAFlAIDC1y8BAWYBAWcJAAIBCQC5CQIJAMwIAgIJaWRvLnJpZGU6CQDMCAIFAWcFA25pbAIBIAEBaAEBaQQBagUBaQMJAAECBQFqAgZTdHJpbmcEAWsFAWoFAWsJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAWwFAW0BbgFvAXABcQQBcgkAtgIBBQFuBAFzCQC2AgEFAXEEAXQJALwCAwkAtgIBBQFtBQFkBQFyBAF1CQC8AgMFAXQJALYCAQUBcAkAtgIBBQFvCQCgAwEJALwCAwUBdQkAtgIBBQFxBQFkAAF2AAEAAXcAAgABeAADAAF5AAQAAXoABQABQQAGAAFCAAcAAUMACAABRAAJAAFFAAoAAUYACwEBRwwBSAFJAUoBSwFvAUwBTQFOAU8BUAFRAVIJALkJAgkAzAgCAhglZCVkJWQlZCVkJWQlcyVkJXMlZCVkJWQJAMwIAgUBSAkAzAgCBQFJCQDMCAIFAUoJAMwIAgUBSwkAzAgCBQFvCQDMCAIFAUwJAMwIAgUBTQkAzAgCBQFOCQDMCAIFAU8JAMwIAgUBUAkAzAgCBQFRCQDMCAIFAVIFA25pbAUBYwEBUwwBSAFJAUoBSwFvAUwBTQFOAU8BUAFRAVIJAQFHDAkApAMBBQFICQCkAwEFAUkJAKQDAQUBSgkApAMBBQFLCQCkAwEFAW8JAKQDAQUBTAUBTQkApAMBBQFOBQFPCQCkAwEFAVAJAKQDAQUBUQkApAMBBQFSAAFUAAEAAVUAAgABVgADAAFXAAQAAVgABQEBWQUBWgJhYQJhYgJhYwJhZAkAuQkCCQDMCAICCiVkJWQlZCVkJWQJAMwIAgUBWgkAzAgCBQJhYQkAzAgCBQJhYgkAzAgCBQJhYwkAzAgCBQJhZAUDbmlsBQFjAQJhZQUBWgJhYQJhYgJhYwJhZAkBAVkFCQCkAwEFAVoJAKQDAQUCYWEJAKQDAQUCYWIJAKQDAQUCYWMJAKQDAQUCYWQBAmFmAgFtAmFnCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBQZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAW0JAMwIAgkApAMBBQJhZwUDbmlsBQFjAQJhaAACCiVzX19jb25maWcBAmFpAQJhagkArAICAgQlc19fBQJhagECYWsAAgolc19fdG90YWxzAQJhbAMCYW0CYWoCYW4JALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJhbQkAzAgCBQJhagkAzAgCBQJhbgUDbmlsBQFjAQJhbwACFSVzX191c2RuQ2xhaW1EaXNhYmxlZAECYXAAAhYlc19fdXNkbkNsYWltRW5kSGVpZ2h0AQJhcQAJALkJAgkAzAgCAgIlcwkAzAgCAgxwZXJpb2RMZW5ndGgFA25pbAUBYwECYXIACQC5CQIJAMwIAgICJXMJAMwIAgINY3VycmVudFBlcmlvZAUDbmlsBQFjAQJhcwECYXQJALkJAgkAzAgCAgQlcyVzCQDMCAICEXBlcmlvZFN0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUCYXQFA25pbAUBYwECYXUBAmF0CQC5CQIJAMwIAgIEJXMlcwkAzAgCAg9wZXJpb2RFbmRIZWlnaHQJAMwIAgkApAMBBQJhdAUDbmlsBQFjAQJhdgAJALkJAgkAzAgCAgIlcwkAzAgCAhx1c2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvBQNuaWwFAWMBAmF3AQJheAkAuQkCCQDMCAICBCVzJXMJAMwIAgIUdG90YWxQZXJpb2RBbGxvd2FuY2UJAMwIAgUCYXgFA25pbAUBYwECYXkBAmF4CQC5CQIJAMwIAgIEJXMlcwkAzAgCAhN1c2VyUGVyaW9kQWxsb3dhbmNlCQDMCAIFAmF4BQNuaWwFAWMBAmF6AgJheAJhdAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAhtwZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0JAMwIAgUCYXgJAMwIAgkApAMBBQJhdAUDbmlsBQFjAQJhQQMCYXgCYXQCYWoJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAhpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQkAzAgCBQJheAkAzAgCCQCkAwEFAmF0CQDMCAIFAmFqBQNuaWwFAWMBAmFCAAkAuQkCCQDMCAICAiVzCQDMCAICGHVzZHRQcmljZUFzc2V0U3RhYmxlUG9vbAUDbmlsBQFjAQJhQwAJALkJAgkAzAgCAgIlcwkAzAgCAgt1c2R0QXNzZXRJZAUDbmlsBQFjAQJhRAECYUUJALkJAgkAzAgCAgQlcyVzCQDMCAICEXByaWNlQXNzZXRCYWxhbmNlCQDMCAIFAmFFBQNuaWwFAWMBAmFGAQJhRQkAuQkCCQDMCAICBCVzJXMJAMwIAgIXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQJAMwIAgUCYUUFA25pbAUBYwECYUcACQC5CQIJAMwIAgICJXMJAMwIAgIUdG90YWxSZW1haW5pbmdBbW91bnQFA25pbAUBYwECYUgAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYUkAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwECYUoACQC1CQIJAQFhAQkBAmFoAAUBYwECYUsBAmFMCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUCYUwJAQFZBQIBMAIBMAIBMAIBMAIBMAUBYwECYU0ACQECYUsBCQECYWsAAQJhTgECYWoJAQJhSwEJAQJhaQEFAmFqAQJhTwECYWoJALUJAgkBAWEBCQECYWkBBQJhagUBYwECYVAABAFqCQCiCAEJAQJhSQADCQABAgUBagIGU3RyaW5nBAJhUQUBagkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVEFBHRoaXMAAmFSAAAAAmFTAAEAAmFUAAIAAmFVAAMBAmFWBQFiAmFXAmFYAmFZAmFaBAFaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAVQEAmFhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAVUEAmFiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAVYEAmFjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAVcEAmFkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAVgEAmJhCQBkAgUBWgkAkQMCBQJhWAUCYVIEAmJiCQBkAgUCYWEJAJEDAgUCYVgFAmFTBAJiYwkBAmFKAAQBTwkAkQMCBQJiYwUBRAQCYmQICQEFdmFsdWUBCQDsBwEJANkEAQUBTwhkZWNpbWFscwQCYmUJAGsDBQJhWgUBZQkAbAYACgAABQJiZAAAAAAFBERPV04EAmJmCQBlAgkAZAIFAmFiCQCRAwIFAmFYBQJhVAUCYVoEAmJnCQBkAgkAZAIFAmFjCQCRAwIFAmFYBQJhVQUCYmUEAmJoAwkAZgIAAAUCYmIEAmJpCQBlAgkAZQIFAmJhBQJiZgUCYmcEAmJqAwkAZgIAAAUCYmkAAAUCYmkJAQtTdHJpbmdFbnRyeQIFAWIJAQJhZQUFAmJhBQJiagUCYmYFAmJnBQJhWQkBC1N0cmluZ0VudHJ5AgUBYgkBAmFlBQUCYmEFAmJiBQJiZgUCYmcFAmFZBQJiaAECYmsEAmFqAW0CYWcCYmwJAQtTdHJpbmdFbnRyeQIJAQJhbAMCBmludmVzdAUCYWoJANgEAQUCYmwJAQJhZgIFAW0FAmFnAQJibQQCYWoBbQJhZwJibAkBC1N0cmluZ0VudHJ5AgkBAmFsAwIFY2xhaW0FAmFqCQDYBAEFAmJsCQECYWYCBQFtBQJhZwECYm4DAmJvAmFqAmJsBAJiYwkBAmFKAAQBSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF4BAFLCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmJwCQBkAgUBSgUBSwQBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6BAFMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAUEEAU0JAJEDAgUCYmMFAUIEAmJxCQDZBAEFAU0EAU4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBQwQBTwkAkQMCBQJiYwUBRAQCYnIJANkEAQUBTwQBUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFFBAJicwkApQgBBQJhagQCYnQJAQJhTwEFAmJzBAJidQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ0BQFUBAJidgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ0BQFYBAJidwMJAGcCBQFKBQJidgUBSgUCYnYEAmJ4AwkAZgIFBmhlaWdodAUCYnAFAmJwAwkAZgIFAUoFBmhlaWdodAUBSgUGaGVpZ2h0BAJieQkAZQIFAmJ4BQJidwQCYnoJAGsDBQJidQUCYnkFAUsEAmJBCQEBbAUFAmJ6BQFQBQFvBQFMBQFOBAJiQgkAAAIFAmJvBQFPBAJiQwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQECYW8ABwQCYkQJAMwIAgMJAQEhAQMFAmJCBQJiQwcGCQACAQIWVVNETiBjbGFpbSBpcyBkaXNhYmxlZAUDbmlsAwkAAAIFAmJEBQJiRAMJAAACBQJibwUBTwkAmAoGCQDMCAIAAAkAzAgCCQEBLQEFAmJ6CQDMCAIFAmJ6CQDMCAIAAAUDbmlsBQJiegUCYnIFAmJ0BQJieAkAzAgCBQJiegkAzAgCBQJiQQUDbmlsAwkAAAIFAmJvBQFNCQCYCgYJAMwIAgAACQDMCAIJAQEtAQUCYnoJAMwIAgAACQDMCAIFAmJBBQNuaWwFAmJBBQJicQUCYnQFAmJ4CQDMCAIFAmJ6CQDMCAIFAmJBBQNuaWwJAAIBCQCsAgICFXVuc3VwcG9ydGVkIGFzc2V0SWQ6IAUCYm8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJFBAFPAmJzAmJGAmJHBAJiSAkBBXZhbHVlAQkAnwgBCQECYXcBBQFPBAJiSQkBBXZhbHVlAQkAnwgBCQECYXkBBQFPBAJiSgkBBXZhbHVlAQkAnwgBCQECYXEABAJiSwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXIAAAAEAmJMCQEJaXNEZWZpbmVkAQkAnwgBCQECYXUBAAAEAmJNAwkAZgIFAmJLAAAEAmJOCQEFdmFsdWUBCQCfCAEJAQJhcwEFAmJLBAJiTwkBBXZhbHVlAQkAnwgBCQECYXUBBQJiSwQCYlADCQBmAgUGaGVpZ2h0BQJiTwQCYlEJAGQCBQJiSwABBAJiUgMJAGYCBQZoZWlnaHQJAGQCBQJiTwUCYkoEAmJTCQBqAgkAZQIFBmhlaWdodAUCYk8FAmJKAwkAAAIFAmJTAAAJAGQCCQBlAgUGaGVpZ2h0BQJiSgABCQBlAgUGaGVpZ2h0BQJiUwkAZAIFAmJPAAEEAmJUCQBlAgkAZAIFAmJSBQJiSgABCQCVCgMFAmJRBQJiUgUCYlQJAJUKAwUCYksFAmJOBQJiTwQCYlEIBQJiUAJfMQQCYlIIBQJiUAJfMgQCYlQIBQJiUAJfMwkAlQoDBQJiUQUCYlIFAmJUAwUCYkwEAmJVCQEFdmFsdWUBCQCfCAEJAQJhcwEAAAQCYlYJAQV2YWx1ZQEJAJ8IAQkBAmF1AQAABAJiVwMJAGYCBQZoZWlnaHQFAmJWBAJiUQkAZAIFAmJLAAEEAmJSCQBkAgUCYlYAAQQCYlQJAGUCCQBkAgUCYlIFAmJKAAEJAJUKAwUCYlEFAmJSBQJiVAkAlQoDBQJiSwUCYlUFAmJWBAJiUQgFAmJXAl8xBAJiUggFAmJXAl8yBAJiVAgFAmJXAl8zCQCVCgMFAmJRBQJiUgUCYlQJAJUKAwUCYksJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFzAQUCYksFBmhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXUBBQJiSwkAZQIJAGQCBQZoZWlnaHQFAmJKAAEEAmJRCAUCYk0CXzEEAmJSCAUCYk0CXzIEAmJUCAUCYk0CXzMEAmJYCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhegIFAU8FAmJRBQJiSAQCYlkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFBAwUBTwUCYlEFAmJzBQJiSQQCYVoJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFEAQUCYnMAAAQCYloJAJcDAQkAzAgCCQBkAgUCYkYFAmFaCQDMCAIFAmJYCQDMCAIFAmJZBQNuaWwEAmNhCQEFdmFsdWUBCQCfCAEJAQJhdgAEAmNiBQFlBAJjYwoAAmNkCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQkBAmFCAAIhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZCQDMCAIFAmNiCQDMCAIFAU8FA25pbAUDbmlsAwkAAQIFAmNkAg8oSW50LCBJbnQsIEludCkFAmNkCQACAQkArAICCQADAQUCY2QCJCBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCwgSW50KQMJAAACBQJjYwUCY2MEAmNlCAUCY2MCXzMEAmNmCAUCY2MCXzIEAmNnCAUCY2MCXzEEAmNoCQEFdmFsdWUBCQCiCAEJAQJhQwAEAmNpCgACY2QJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBCQECYUIAAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmNoCQDMCAIFAmNnBQNuaWwFA25pbAMJAAECBQJjZAIKKEludCwgSW50KQUCY2QJAAIBCQCsAgIJAAMBBQJjZAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJjaQUCY2kEAmNqCAUCY2kCXzIEAmNrCAUCY2kCXzEEAmNsCQBrAwUCY2IFAWUFAmNrBAJjbQkAZQIFAmJUBQZoZWlnaHQJAJwKCgUCYloFAmJYBQJiWQUCYkcFAmNhBQJjbAUCY20FAmJRBQJiUgUCYlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNuAAQCY28JAQJhUAAEAWoJAJ0IAgUCY28JAQJhSAADCQABAgUBagIGU3RyaW5nBAJhUQUBagkA2QQBBQJhUQMJAAECBQFqAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmNwAQJjcQQCY3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQBagkBAmNuAAMJAAECBQFqAgpCeXRlVmVjdG9yBAJjcwUBagMJAAACCAUCY3EPY2FsbGVyUHVibGljS2V5BQJjcwYFAmNyAwkAAQIFAWoCBFVuaXQDCQAAAggFAmNxBmNhbGxlcgUEdGhpcwYFAmNyCQACAQILTWF0Y2ggZXJyb3IGAmNxAQtjb25zdHJ1Y3RvcgcBSAFJAUoBSwFvAU8BUQQBTAkAaAIJAGgCAGQA6AcA6AcEAmN0CQBkAgUBSAUBSQMJAQlpc0RlZmluZWQBCQCiCAEJAQJhaAAJAAIBAhNhbHJlYWR5IGluaXRpYWxpemVkAwkBAiE9AgIjM1BNRUhMeDFqNnplcmFyWlRZZnNHcURlZVpxUW9NcHhxNVMJAKUIAQgFAmNxBmNhbGxlcgkAAgECDm5vdCBhdXRob3JpemVkAwkBAiE9AgkAkAMBCAUCY3EIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQDCQBnAgUCY3QFAUoJAAIBAiZjbGFpbVN0YXJ0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGlkb0VuZAQCY3UJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAEAmJxCQEFdmFsdWUBCAUCY3UHYXNzZXRJZAQCY3YJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQIbZmFpbCB0byBsb2FkIGlkbyBhc3NldCBpbmZvBAFNCQDYBAEFAmJxBAFOCQBsBgAKAAAIBQJjdghkZWNpbWFscwAAAAAFBERPV04EAmJyCQDZBAEFAU8EAmN3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYnICHWZhaWwgdG8gbG9hZCBwcmljZSBhc3NldCBpbmZvBAFQCQBsBgAKAAAIBQJjdwhkZWNpbWFscwAAAAAFBERPV04EAmN4CQECYU0ABAJjeQkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWgACQEBUwwFAUgFAUkFAUoFAUsFAW8FAUwFAU0FAU4FAU8FAVAFAVEIBQJjdQZhbW91bnQJAMwIAgkBAmFWBQkBAmFrAAUCY3gFAmN5BQFKAAAFA25pbAJjcQEGaW52ZXN0AAQCYmMJAQJhSgAEAUgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdgQBSQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF3BAJjdAkAZAIFAUgFAUkEAUoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBeAQBSwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF5BAFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAUwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBQQQBTQkAkQMCBQJiYwUBQgQCYnEJANkEAQUBTQQBTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFDBAFPCQCRAwIFAmJjBQFEBAJicgkA2QQBBQFPBAFQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAUUEAmN6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAUYEAmFqCQClCAEIBQJjcQZjYWxsZXIDCQBmAgUBSAUGaGVpZ2h0CQACAQIcaWRvIGhhcyBub3QgYmVlbiBzdGFydGVkIHlldAMJAGYCBQZoZWlnaHQFAmN0CQACAQIaaWRvIGhhcyBiZWVuIGFscmVhZHkgZW5kZWQDCQECIT0CCQCQAwEIBQJjcQhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmN1CQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABAJjQQkBBXZhbHVlAQgFAmN1B2Fzc2V0SWQEAmNCCAUCY3UGYW1vdW50AwkBAiE9AgUCY0EFAmJyCQACAQkArAICCQCsAgICGmludmFsaWQgcGF5bWVudCBhc3NldCBpZDogCQDYBAEFAmNBAgwgaXMgZXhwZWN0ZWQEAmNDCQECYU4BBQJhagQCY3gJAQJhTQAEAmNECQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmN4BQFUBQJjQgQCY0UJAGgCBQJjRABkAwkAZgIFAmNFCQDwBwIFBHRoaXMFAmJxCQACAQI5SURPIGFzc2V0IGhhcyBiZWVuIC0gc29sZCBjb25zaWRlciB0byB1c2Ugc21hbGxlciBwYXltZW50BAJjeQkAzAgCBQJjQgkAzAgCBQJjQgkAzAgCAAAJAMwIAgAABQNuaWwJAMwIAgkBAmFWBQkBAmFpAQUCYWoFAmNDBQJjeQUBSgAACQDMCAIJAQJhVgUJAQJhawAFAmN4BQJjeQUBSgAACQDMCAIJAQJiawQFAmFqBQJjQgAACAUCY3ENdHJhbnNhY3Rpb25JZAUDbmlsAmNxAQVjbGFpbQICYm8CYnMEAmNGCQClCAEIBQJjcQZjYWxsZXIDCQECIT0CBQJicwUCY0YJAAIBAg5ub3QgYXV0aG9yaXplZAQCYmMJAQJhSgAEAU8JAJEDAgUCYmMFAUQEAmNHCQECYm4DBQJibwgFAmNxBmNhbGxlcggFAmNxDXRyYW5zYWN0aW9uSWQEAmN5CAUCY0cCXzEEAmJGCAUCY0cCXzIEAmNICAUCY0cCXzMEAmJ0CAUCY0cCXzQEAmJ4CAUCY0cCXzUEAmNJCQCRAwIFAmN5BQJhVAQCY0oJAJEDAgUCY3kFAmFVBAJhWgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUQBBQJicwAABAJiZAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQFPCGRlY2ltYWxzBAJiaAMJAAACBQJibwUBTwQCY0sJAQJiRQQFAU8FAmJzBQJiRgkAkQMCBQJjeQUCYVQEAmJaCAUCY0sCXzEEAmJYCAUCY0sCXzIEAmJZCAUCY0sCXzMEAmJHCAUCY0sCXzQEAmNhCAUCY0sCXzUEAmNsCAUCY0sCXzYEAmNtCAUCY0sCXzcEAmJRCAUCY0sCXzgEAmJSCAUCY0sCXzkEAmJUCAUCY0sDXzEwBAJiRAkAzAgCAwkAZgIFAmJZAAAGCQEBZgECOnVuYXZhaWxhYmxlIHRvIGNsYWltIGJlY2F1c2UgdXNlciBwZXJpb2QgYWxsb3dhbmNlIHJlYWNoZWQJAMwIAgMJAGYCBQJiWAAABgkBAWYBAjt1bmF2YWlsYWJsZSB0byBjbGFpbSBiZWNhdXNlIHRvdGFsIHBlcmlvZCBhbGxvd2FuY2UgcmVhY2hlZAkAzAgCAwkAZgIFAmJaAAAGCQEBZgECEG5vdGhpbmcgdG8gY2xhaW0JAMwIAgMJAGYCBQJjYQUCY2wGCQEBZgECT3VuYXZhaWxhYmxlIHRvIGNsYWltIGJlY2F1c2UgdXNkbiBwcmljZSBsb3dlciB0aGFuIHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8FA25pbAMJAAACBQJiRAUCYkQEAmNMCQBlAgUCYlgFAmJaBAJjTQkAZQIFAmJZBQJiWgQCYmgDCQBmAgUCYVoFAmJaCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjcQZjYWxsZXIFAmJaBQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFEAQUCYnMJAGUCBQJhWgUCYloFA25pbAQCY04JALUJAgkBAWgBCQD8BwQFBHRoaXMCDWNsYWltUkVBRE9OTFkJAMwIAgUBTwkAzAgCBQJicwUDbmlsBQNuaWwFAWMDCQAAAgUCY04FAmNOBAJjTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNOAAMEAmNQAwkAAAIFAmNPBQJiWgQCY1EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBVAQCY1IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBVQQCY1MJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBVgQCY1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBVwQCY1UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBWAQCY1YJAMwIAgkApAMBBQJjUQkAzAgCAgEwCQDMCAIJAKQDAQUCY1MJAMwIAgkApAMBBQJjVAkAzAgCCQCkAwEFAmNVBQNuaWwEAmNXCQECYU0ABAJjWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFUBAJjWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFVBAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFWBAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFXBAJkYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFYBAJkYwkAZQIFAmNZBQJjUgQCZGQJAMwIAgkApAMBBQJjWAkAzAgCCQCkAwEFAmRjCQDMCAIJAKQDAQUCY1oJAMwIAgkApAMBBQJkYQkAzAgCCQCkAwEFAmRiBQNuaWwEAmRlCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUcAAAAFAmNSCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhRgEFAmJzCQCkAwEFAmNSCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhRwAJAKQDAQUCZGUJAMwIAgkBAmFWBQkBAmFpAQUCYnMFAmNWBQJjeQUCYngAAAkAzAgCCQECYVYFCQECYWsABQJkZAUCY3kFAmJ4AAAFA25pbAkAzAgCCQECYVYFCQECYWkBBQJicwUCYnQFAmN5BQJieAAACQDMCAIJAQJhVgUJAQJhawAJAQJhTQAFAmN5BQJieAAABQNuaWwEAmRmCQBlAgkAZAIFAmFaBQJiRgUCYloJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY3EGY2FsbGVyBQJiWgUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhRAEFAmJzBQJkZgUDbmlsBQJjUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcgAFAmJRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXMBBQJiUQUCYlIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhdQEFAmJRBQJiVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF6AgUBTwUCYlEFAmNMCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUEDBQFPBQJiUQUCYnMFAmNNCQDMCAIJAQJibQQFAmJzBQJiWgUCY0oIBQJjcQ10cmFuc2FjdGlvbklkBQNuaWwFAmJoBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkZwkAawMFAmFaBQFlCQBsBgAKAAAFAmJkAAAAAAUERE9XTgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjcQZjYWxsZXIJAGQCBQJiRgUCZGcFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUQBBQJicwAACQDMCAIJAQJhVgUJAQJhaQEFAmJzBQJidAUCY3kFAmJ4BQJhWgkAzAgCCQECYVYFCQECYWsACQECYU0ABQJjeQUCYngFAmFaCQDMCAIJAQJibQQFAmJzBQJjSQkAZAIFAmNKBQJkZwgFAmNxDXRyYW5zYWN0aW9uSWQFA25pbAUEdW5pdAUCYmgCY3EBEmNsZWFuUmVtYWluZ0Ftb3VudAECYnMEAU8JAJEDAgkBAmFKAAUBRAQCY04JALUJAgkBAWgBCQD8BwQFBHRoaXMCDWNsYWltUkVBRE9OTFkJAMwIAgUBTwkAzAgCBQJicwUDbmlsBQNuaWwFAWMDCQAAAgUCY04FAmNOBAJjTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNOAAIEAmRoAwkAAAIFAmNPAAAGCQEBZgECGnVzZXIgaGF2ZSB1bmNsYWltZWQgYXNzZXRzAwkAAAIFAmRoBQJkaAQCZGkJALUJAgkBBXZhbHVlAQkAoggBCQECYWkBBQJicwUBYwQCY1EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBVAQCY1IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBVQQCY1MJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBVgQCY1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBVwQCY1UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBWAQCZGoDCQECIT0CBQJjUgAABgkBAWYBAiRpbnZlc3RvclJlbWFpbmluZ0Ftb3VudCBhbHJlYWR5IHplcm8DCQAAAgUCZGoFAmRqBAJkawkAuQkCCQDMCAICCiVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUQkAzAgCAgEwCQDMCAIJAKQDAQUCY1MJAMwIAgkApAMBBQJjVAkAzAgCCQCkAwEFAmNVBQNuaWwFAWMEAmNXCQC1CQIJAQV2YWx1ZQEJAKIIAQkBAmFrAAUBYwQCY1gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjVwUBVAQCY1kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjVwUBVQQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjVwUBVgQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjVwUBVwQCZGIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjVwUBWAQCZGwJALkJAgkAzAgCAgolZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQBlAgUCY1kFAmNSCQDMCAIJAKQDAQUCY1oJAMwIAgkApAMBBQJkYQkAzAgCCQCkAwEFAmRiBQNuaWwFAWMEAmRlCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUcAAAAFAmNSCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhRgEFAmJzCQCkAwEFAmNSCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhRwAJAKQDAQUCZGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAQUCYnMFAmRrCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhawAFAmRsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY3EBDWNsYWltUkVBRE9OTFkCAmJvAmJzBAJjRwkBAmJuAwUCYm8JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJzCQDZBAECAAQCY3kIBQJjRwJfMQQCYkYIBQJjRwJfMgQCY0gIBQJjRwJfMwQCYnQIBQJjRwJfNAQCYngIBQJjRwJfNQQCZG0IBQJjRwJfNgQCY08JAJEDAgUCZG0AAAQCZG4JAJEDAgUCZG0AAQkAlAoCBQNuaWwJALkJAgkAzAgCAgYlcyVkJWQJAMwIAgUCYnMJAMwIAgkApAMBBQJjTwkAzAgCCQCkAwEFAmRuBQNuaWwFAWMCY3EBD2NsYWltVjJSRUFET05MWQICYm8CYnMEAmNHCQECYm4DBQJibwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYnMJANkEAQIABAJjeQgFAmNHAl8xBAJiRggFAmNHAl8yBAJjSAgFAmNHAl8zBAJidAgFAmNHAl80BAJieAgFAmNHAl81BAJkbQgFAmNHAl82BAJjTwkAkQMCBQJkbQAABAJkbgkAkQMCBQJkbQABBAJiYwkBAmFKAAQBTwkAkQMCBQJiYwUBRAQCYVoJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFEAQUCYnMAAAQCZGcJAGgCBQJhWgBkBAJkbwkAZAIFAmRuBQJkZwQCZHAJAQJiRQQFAU8FAmJzBQJiRgkAkQMCBQJjeQUCYVQEAmJaCAUCZHACXzEEAmJYCAUCZHACXzIEAmJZCAUCZHACXzMEAmJHCAUCZHACXzQEAmNhCAUCZHACXzUEAmNsCAUCZHACXzYEAmNtCAUCZHACXzcEAmJRCAUCZHACXzgEAmJSCAUCZHACXzkEAmJUCAUCZHADXzEwBAJkcQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXUBBQJiUQAABAJkcgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQECYU8BBQJicwUBVgUCYVoEAmRzAwkAZgIFBmhlaWdodAUCZHEEAmR0CQEFdmFsdWUBCQCfCAEJAQJhcQAEAmR1CQEFdmFsdWUBCQCfCAEJAQJheQEFAU8EAmR2CQEFdmFsdWUBCQCfCAEJAQJhdwEFAU8JALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkbwkAzAgCCQCkAwEFAmR1CQDMCAIJAKQDAQUCZHYJAMwIAgkApAMBBQJjYQkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCZHQJAMwIAgkApAMBBQJkcgUDbmlsBQFjCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZG8JAMwIAgkApAMBBQJiWgkAzAgCCQCkAwEFAmJYCQDMCAIJAKQDAQUCY2EJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNtCQDMCAIJAKQDAQUCZHIFA25pbAUBYwkAlAoCBQNuaWwFAmRzAQJkdwECZHgABAJkeQQBagkBAmNuAAMJAAECBQFqAgpCeXRlVmVjdG9yBAJjcwUBagUCY3MDCQABAgUBagIEVW5pdAgFAmR3D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkdwlib2R5Qnl0ZXMJAJEDAggFAmR3BnByb29mcwAABQJkebRS9H8=", "height": 2571648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 317zwLpeAhktTyej8CLJHf2vxw9PfSnmW7Wg3QAeACkk Next: 3u4aJct23eHfBtSMFRzP1USEqeyUsiRnDwFa6oQUs9Cv Diff:
OldNewDifferences
161161 func aO (aj) = split(a(ai(aj)), c)
162162
163163
164-func aP () = addressFromStringValue(getStringValue(aI()))
165-
166-
167-let aQ = 0
168-
169-let aR = 1
170-
171-let aS = 2
172-
173-let aT = 3
174-
175-func aU (b,aV,aW,aX,aY) = {
176- let Z = parseIntValue(aV[T])
177- let aa = parseIntValue(aV[U])
178- let ab = parseIntValue(aV[V])
179- let ac = parseIntValue(aV[W])
180- let ad = parseIntValue(aV[X])
181- let aZ = (Z + aW[aQ])
182- let ba = (aa + aW[aR])
183- let bb = aJ()
184- let O = bb[D]
185- let bc = value(assetInfo(fromBase58String(O))).decimals
186- let bd = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
187- let be = ((ab + aW[aS]) - aY)
188- let bf = ((ac + aW[aT]) + bd)
189- let bg = if ((0 > ba))
164+func aP () = {
165+ let j = getString(aI())
166+ if ($isInstanceOf(j, "String"))
190167 then {
191- let bh = ((aZ - be) - bf)
192- let bi = if ((0 > bh))
193- then 0
194- else bh
195- StringEntry(b, ae(aZ, bi, be, bf, aX))
168+ let aQ = j
169+ addressFromStringValue(aQ)
196170 }
197- else StringEntry(b, ae(aZ, ba, be, bf, aX))
198- bg
171+ else this
199172 }
200173
201174
202-func bj (aj,m,ag,bk) = StringEntry(al("invest", aj, toBase58String(bk)), af(m, ag))
175+let aR = 0
176+
177+let aS = 1
178+
179+let aT = 2
180+
181+let aU = 3
182+
183+func aV (b,aW,aX,aY,aZ) = {
184+ let Z = parseIntValue(aW[T])
185+ let aa = parseIntValue(aW[U])
186+ let ab = parseIntValue(aW[V])
187+ let ac = parseIntValue(aW[W])
188+ let ad = parseIntValue(aW[X])
189+ let ba = (Z + aX[aR])
190+ let bb = (aa + aX[aS])
191+ let bc = aJ()
192+ let O = bc[D]
193+ let bd = value(assetInfo(fromBase58String(O))).decimals
194+ let be = fraction(aZ, e, pow(10, 0, bd, 0, 0, DOWN))
195+ let bf = ((ab + aX[aT]) - aZ)
196+ let bg = ((ac + aX[aU]) + be)
197+ let bh = if ((0 > bb))
198+ then {
199+ let bi = ((ba - bf) - bg)
200+ let bj = if ((0 > bi))
201+ then 0
202+ else bi
203+ StringEntry(b, ae(ba, bj, bf, bg, aY))
204+ }
205+ else StringEntry(b, ae(ba, bb, bf, bg, aY))
206+ bh
207+ }
203208
204209
205-func bl (aj,m,ag,bk) = StringEntry(al("claim", aj, toBase58String(bk)), af(m, ag))
210+func bk (aj,m,ag,bl) = StringEntry(al("invest", aj, toBase58String(bl)), af(m, ag))
206211
207212
208-func bm (bn,aj,bk) = {
209- let bb = aJ()
210- let J = parseIntValue(bb[x])
211- let K = parseIntValue(bb[y])
212- let bo = (J + K)
213- let o = parseIntValue(bb[z])
214- let L = parseIntValue(bb[A])
215- let M = bb[B]
216- let bp = fromBase58String(M)
217- let N = parseIntValue(bb[C])
218- let O = bb[D]
219- let bq = fromBase58String(O)
220- let P = parseIntValue(bb[E])
221- let br = toString(aj)
222- let bs = aO(br)
223- let bt = parseIntValue(bs[T])
224- let bu = parseIntValue(bs[X])
225- let bv = if ((J >= bu))
213+func bm (aj,m,ag,bl) = StringEntry(al("claim", aj, toBase58String(bl)), af(m, ag))
214+
215+
216+func bn (bo,aj,bl) = {
217+ let bc = aJ()
218+ let J = parseIntValue(bc[x])
219+ let K = parseIntValue(bc[y])
220+ let bp = (J + K)
221+ let o = parseIntValue(bc[z])
222+ let L = parseIntValue(bc[A])
223+ let M = bc[B]
224+ let bq = fromBase58String(M)
225+ let N = parseIntValue(bc[C])
226+ let O = bc[D]
227+ let br = fromBase58String(O)
228+ let P = parseIntValue(bc[E])
229+ let bs = toString(aj)
230+ let bt = aO(bs)
231+ let bu = parseIntValue(bt[T])
232+ let bv = parseIntValue(bt[X])
233+ let bw = if ((J >= bv))
226234 then J
227- else bu
228- let bw = if ((height > bo))
229- then bo
235+ else bv
236+ let bx = if ((height > bp))
237+ then bp
230238 else if ((J > height))
231239 then J
232240 else height
233- let bx = (bw - bv)
234- let by = fraction(bt, bx, K)
235- let bz = l(by, P, o, L, N)
236- let bA = (bn == O)
237- let bB = valueOrElse(getBoolean(ao()), false)
238- let bC = [if (!(if (bA)
239- then bB
241+ let by = (bx - bw)
242+ let bz = fraction(bu, by, K)
243+ let bA = l(bz, P, o, L, N)
244+ let bB = (bo == O)
245+ let bC = valueOrElse(getBoolean(ao()), false)
246+ let bD = [if (!(if (bB)
247+ then bC
240248 else false))
241249 then true
242250 else throw("USDN claim is disabled")]
243- if ((bC == bC))
244- then if ((bn == O))
245- then $Tuple6([0, -(by), by, 0], by, bq, bs, bw, [by, bz])
246- else if ((bn == M))
247- then $Tuple6([0, -(by), 0, bz], bz, bp, bs, bw, [by, bz])
248- else throw(("unsupported assetId: " + bn))
251+ if ((bD == bD))
252+ then if ((bo == O))
253+ then $Tuple6([0, -(bz), bz, 0], bz, br, bt, bx, [bz, bA])
254+ else if ((bo == M))
255+ then $Tuple6([0, -(bz), 0, bA], bA, bq, bt, bx, [bz, bA])
256+ else throw(("unsupported assetId: " + bo))
249257 else throw("Strict value is not equal to itself.")
250258 }
251259
252260
253-func bD (O,br,bE,bF) = {
254- let bG = value(getInteger(aw(O)))
255- let bH = value(getInteger(ay(O)))
256- let bI = value(getInteger(aq()))
257- let bJ = valueOrElse(getInteger(ar()), 0)
258- let bK = isDefined(getInteger(au(0)))
259- let bL = if ((bJ > 0))
261+func bE (O,bs,bF,bG) = {
262+ let bH = value(getInteger(aw(O)))
263+ let bI = value(getInteger(ay(O)))
264+ let bJ = value(getInteger(aq()))
265+ let bK = valueOrElse(getInteger(ar()), 0)
266+ let bL = isDefined(getInteger(au(0)))
267+ let bM = if ((bK > 0))
260268 then {
261- let bM = value(getInteger(as(bJ)))
262- let bN = value(getInteger(au(bJ)))
263- let bO = if ((height > bN))
269+ let bN = value(getInteger(as(bK)))
270+ let bO = value(getInteger(au(bK)))
271+ let bP = if ((height > bO))
264272 then {
265- let bP = (bJ + 1)
266- let bQ = if ((height > (bN + bI)))
273+ let bQ = (bK + 1)
274+ let bR = if ((height > (bO + bJ)))
267275 then {
268- let bR = ((height - bN) % bI)
269- if ((bR == 0))
270- then ((height - bI) + 1)
271- else (height - bR)
276+ let bS = ((height - bO) % bJ)
277+ if ((bS == 0))
278+ then ((height - bJ) + 1)
279+ else (height - bS)
272280 }
273- else (bN + 1)
274- let bS = ((bQ + bI) - 1)
275- $Tuple3(bP, bQ, bS)
281+ else (bO + 1)
282+ let bT = ((bR + bJ) - 1)
283+ $Tuple3(bQ, bR, bT)
276284 }
277- else $Tuple3(bJ, bM, bN)
278- let bP = bO._1
279- let bQ = bO._2
280- let bS = bO._3
281- $Tuple3(bP, bQ, bS)
285+ else $Tuple3(bK, bN, bO)
286+ let bQ = bP._1
287+ let bR = bP._2
288+ let bT = bP._3
289+ $Tuple3(bQ, bR, bT)
282290 }
283- else if (bK)
291+ else if (bL)
284292 then {
285- let bT = value(getInteger(as(0)))
286- let bU = value(getInteger(au(0)))
287- let bV = if ((height > bU))
293+ let bU = value(getInteger(as(0)))
294+ let bV = value(getInteger(au(0)))
295+ let bW = if ((height > bV))
288296 then {
289- let bP = (bJ + 1)
290- let bQ = (bU + 1)
291- let bS = ((bQ + bI) - 1)
292- $Tuple3(bP, bQ, bS)
297+ let bQ = (bK + 1)
298+ let bR = (bV + 1)
299+ let bT = ((bR + bJ) - 1)
300+ $Tuple3(bQ, bR, bT)
293301 }
294- else $Tuple3(bJ, bT, bU)
295- let bP = bV._1
296- let bQ = bV._2
297- let bS = bV._3
298- $Tuple3(bP, bQ, bS)
302+ else $Tuple3(bK, bU, bV)
303+ let bQ = bW._1
304+ let bR = bW._2
305+ let bT = bW._3
306+ $Tuple3(bQ, bR, bT)
299307 }
300- else $Tuple3(bJ, valueOrElse(getInteger(as(bJ)), height), valueOrElse(getInteger(au(bJ)), ((height + bI) - 1)))
301- let bP = bL._1
302- let bQ = bL._2
303- let bS = bL._3
304- let bW = valueOrElse(getInteger(az(O, bP)), bG)
305- let bX = valueOrElse(getInteger(aA(O, bP, br)), bH)
306- let aY = valueOrElse(getInteger(aD(br)), 0)
307- let bY = min([(bE + aY), bW, bX])
308- let bZ = value(getInteger(av()))
309- let ca = e
310- let cb = {
311- let cc = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [ca, O], nil)
312- if ($isInstanceOf(cc, "(Int, Int, Int)"))
313- then cc
314- else throw(($getType(cc) + " couldn't be cast to (Int, Int, Int)"))
308+ else $Tuple3(bK, valueOrElse(getInteger(as(bK)), height), valueOrElse(getInteger(au(bK)), ((height + bJ) - 1)))
309+ let bQ = bM._1
310+ let bR = bM._2
311+ let bT = bM._3
312+ let bX = valueOrElse(getInteger(az(O, bQ)), bH)
313+ let bY = valueOrElse(getInteger(aA(O, bQ, bs)), bI)
314+ let aZ = valueOrElse(getInteger(aD(bs)), 0)
315+ let bZ = min([(bF + aZ), bX, bY])
316+ let ca = value(getInteger(av()))
317+ let cb = e
318+ let cc = {
319+ let cd = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [cb, O], nil)
320+ if ($isInstanceOf(cd, "(Int, Int, Int)"))
321+ then cd
322+ else throw(($getType(cd) + " couldn't be cast to (Int, Int, Int)"))
315323 }
316- if ((cb == cb))
324+ if ((cc == cc))
317325 then {
318- let cd = cb._3
319- let ce = cb._2
320- let cf = cb._1
321- let cg = value(getString(aC()))
322- let ch = {
323- let cc = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cg, cf], nil)
324- if ($isInstanceOf(cc, "(Int, Int)"))
325- then cc
326- else throw(($getType(cc) + " couldn't be cast to (Int, Int)"))
326+ let ce = cc._3
327+ let cf = cc._2
328+ let cg = cc._1
329+ let ch = value(getString(aC()))
330+ let ci = {
331+ let cd = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [ch, cg], nil)
332+ if ($isInstanceOf(cd, "(Int, Int)"))
333+ then cd
334+ else throw(($getType(cd) + " couldn't be cast to (Int, Int)"))
327335 }
328- if ((ch == ch))
336+ if ((ci == ci))
329337 then {
330- let ci = ch._2
331- let cj = ch._1
332- let ck = fraction(ca, e, cj)
333- let cl = (bS - height)
334- $Tuple10(bY, bW, bX, bF, bZ, ck, cl, bP, bQ, bS)
338+ let cj = ci._2
339+ let ck = ci._1
340+ let cl = fraction(cb, e, ck)
341+ let cm = (bT - height)
342+ $Tuple10(bZ, bX, bY, bG, ca, cl, cm, bQ, bR, bT)
335343 }
336344 else throw("Strict value is not equal to itself.")
337345 }
339347 }
340348
341349
342-func cm () = {
343- let cn = aP()
344- let j = getString(cn, aH())
350+func cn () = {
351+ let co = aP()
352+ let j = getString(co, aH())
345353 if ($isInstanceOf(j, "String"))
346354 then {
347- let co = j
348- fromBase58String(co)
355+ let aQ = j
356+ fromBase58String(aQ)
349357 }
350358 else if ($isInstanceOf(j, "Unit"))
351359 then unit
355363
356364 func cp (cq) = {
357365 let cr = throw("Permission denied")
358- let j = cm()
366+ let j = cn()
359367 if ($isInstanceOf(j, "ByteVector"))
360368 then {
361369 let cs = j
385393 then throw("claimStart must be greater than idoEnd")
386394 else {
387395 let cu = value(cq.payments[0])
388- let bp = value(cu.assetId)
389- let cv = valueOrErrorMessage(assetInfo(bp), "fail to load ido asset info")
390- let M = toBase58String(bp)
396+ let bq = value(cu.assetId)
397+ let cv = valueOrErrorMessage(assetInfo(bq), "fail to load ido asset info")
398+ let M = toBase58String(bq)
391399 let N = pow(10, 0, cv.decimals, 0, 0, DOWN)
392- let bq = fromBase58String(O)
393- let cw = valueOrErrorMessage(assetInfo(bq), "fail to load price asset info")
400+ let br = fromBase58String(O)
401+ let cw = valueOrErrorMessage(assetInfo(br), "fail to load price asset info")
394402 let P = pow(10, 0, cw.decimals, 0, 0, DOWN)
395403 let cx = aM()
396404 let cy = [0, 0, 0, 0]
397-[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aU(ak(), cx, cy, J, 0)]
405+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aV(ak(), cx, cy, J, 0)]
398406 }
399407 }
400408
402410
403411 @Callable(cq)
404412 func invest () = {
405- let bb = aJ()
406- let H = parseIntValue(bb[v])
407- let I = parseIntValue(bb[w])
413+ let bc = aJ()
414+ let H = parseIntValue(bc[v])
415+ let I = parseIntValue(bc[w])
408416 let ct = (H + I)
409- let J = parseIntValue(bb[x])
410- let K = parseIntValue(bb[y])
411- let o = parseIntValue(bb[z])
412- let L = parseIntValue(bb[A])
413- let M = bb[B]
414- let bp = fromBase58String(M)
415- let N = parseIntValue(bb[C])
416- let O = bb[D]
417- let bq = fromBase58String(O)
418- let P = parseIntValue(bb[E])
419- let cz = parseIntValue(bb[F])
417+ let J = parseIntValue(bc[x])
418+ let K = parseIntValue(bc[y])
419+ let o = parseIntValue(bc[z])
420+ let L = parseIntValue(bc[A])
421+ let M = bc[B]
422+ let bq = fromBase58String(M)
423+ let N = parseIntValue(bc[C])
424+ let O = bc[D]
425+ let br = fromBase58String(O)
426+ let P = parseIntValue(bc[E])
427+ let cz = parseIntValue(bc[F])
420428 let aj = toString(cq.caller)
421429 if ((H > height))
422430 then throw("ido has not been started yet")
428436 let cu = value(cq.payments[0])
429437 let cA = value(cu.assetId)
430438 let cB = cu.amount
431- if ((cA != bq))
439+ if ((cA != br))
432440 then throw((("invalid payment asset id: " + toBase58String(cA)) + " is expected"))
433441 else {
434442 let cC = aN(aj)
435443 let cx = aM()
436444 let cD = (parseIntValue(cx[T]) + cB)
437445 let cE = (cD * 100)
438- if ((cE > assetBalance(this, bp)))
446+ if ((cE > assetBalance(this, bq)))
439447 then throw("IDO asset has been - sold consider to use smaller payment")
440448 else {
441449 let cy = [cB, cB, 0, 0]
442-[aU(ai(aj), cC, cy, J, 0), aU(ak(), cx, cy, J, 0), bj(aj, cB, 0, cq.transactionId)]
450+[aV(ai(aj), cC, cy, J, 0), aV(ak(), cx, cy, J, 0), bk(aj, cB, 0, cq.transactionId)]
443451 }
444452 }
445453 }
448456
449457
450458 @Callable(cq)
451-func claim (bn,br) = {
459+func claim (bo,bs) = {
452460 let cF = toString(cq.caller)
453- if ((br != cF))
461+ if ((bs != cF))
454462 then throw("not authorized")
455463 else {
456- let bb = aJ()
457- let O = bb[D]
458- let cG = bm(bn, cq.caller, cq.transactionId)
464+ let bc = aJ()
465+ let O = bc[D]
466+ let cG = bn(bo, cq.caller, cq.transactionId)
459467 let cy = cG._1
460- let bE = cG._2
468+ let bF = cG._2
461469 let cH = cG._3
462- let bs = cG._4
463- let bw = cG._5
464- let cI = cy[aS]
465- let cJ = cy[aT]
466- let aY = valueOrElse(getInteger(aD(br)), 0)
467- let bc = value(assetInfo(fromBase58String(O))).decimals
468- let bg = if ((bn == O))
470+ let bt = cG._4
471+ let bx = cG._5
472+ let cI = cy[aT]
473+ let cJ = cy[aU]
474+ let aZ = valueOrElse(getInteger(aD(bs)), 0)
475+ let bd = value(assetInfo(fromBase58String(O))).decimals
476+ let bh = if ((bo == O))
469477 then {
470- let cK = bD(O, br, bE, cy[aS])
471- let bY = cK._1
472- let bW = cK._2
473- let bX = cK._3
474- let bF = cK._4
475- let bZ = cK._5
476- let ck = cK._6
477- let cl = cK._7
478- let bP = cK._8
479- let bQ = cK._9
480- let bS = cK._10
481- let bC = [if ((bX > 0))
478+ let cK = bE(O, bs, bF, cy[aT])
479+ let bZ = cK._1
480+ let bX = cK._2
481+ let bY = cK._3
482+ let bG = cK._4
483+ let ca = cK._5
484+ let cl = cK._6
485+ let cm = cK._7
486+ let bQ = cK._8
487+ let bR = cK._9
488+ let bT = cK._10
489+ let bD = [if ((bY > 0))
482490 then true
483- else f("unavailable to claim because user period allowance reached"), if ((bW > 0))
491+ else f("unavailable to claim because user period allowance reached"), if ((bX > 0))
484492 then true
485- else f("unavailable to claim because total period allowance reached"), if ((bY > 0))
493+ else f("unavailable to claim because total period allowance reached"), if ((bZ > 0))
486494 then true
487- else f("nothing to claim"), if ((bZ > ck))
495+ else f("nothing to claim"), if ((ca > cl))
488496 then true
489497 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
490- if ((bC == bC))
498+ if ((bD == bD))
491499 then {
492- let cL = (bW - bY)
493- let cM = (bX - bY)
494- let bg = if ((aY > bY))
495- then [ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), (aY - bY))]
500+ let cL = (bX - bZ)
501+ let cM = (bY - bZ)
502+ let bh = if ((aZ > bZ))
503+ then [ScriptTransfer(cq.caller, bZ, cH), IntegerEntry(aD(bs), (aZ - bZ))]
496504 else {
497- let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
505+ let cN = split(h(invoke(this, "claimREADONLY", [O, bs], nil)), c)
498506 if ((cN == cN))
499507 then {
500508 let cO = parseIntValue(cN[3])
501- let cP = if ((cO == bY))
509+ let cP = if ((cO == bZ))
502510 then {
503- let cQ = parseIntValue(bs[T])
504- let cR = parseIntValue(bs[U])
505- let cS = parseIntValue(bs[V])
506- let cT = parseIntValue(bs[W])
507- let cU = parseIntValue(bs[X])
511+ let cQ = parseIntValue(bt[T])
512+ let cR = parseIntValue(bt[U])
513+ let cS = parseIntValue(bt[V])
514+ let cT = parseIntValue(bt[W])
515+ let cU = parseIntValue(bt[X])
508516 let cV = [toString(cQ), "0", toString(cS), toString(cT), toString(cU)]
509517 let cW = aM()
510518 let cX = parseIntValue(cW[T])
515523 let dc = (cY - cR)
516524 let dd = [toString(cX), toString(dc), toString(cZ), toString(da), toString(db)]
517525 let de = (valueOrElse(getInteger(aG()), 0) + cR)
518-[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), aU(ai(br), cV, cy, bw, 0), aU(ak(), dd, cy, bw, 0)]
526+[StringEntry(aF(bs), toString(cR)), StringEntry(aG(), toString(de)), aV(ai(bs), cV, cy, bx, 0), aV(ak(), dd, cy, bx, 0)]
519527 }
520- else [aU(ai(br), bs, cy, bw, 0), aU(ak(), aM(), cy, bw, 0)]
521- let df = ((aY + bE) - bY)
522- ([ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), df)] ++ cP)
528+ else [aV(ai(bs), bt, cy, bx, 0), aV(ak(), aM(), cy, bx, 0)]
529+ let df = ((aZ + bF) - bZ)
530+ ([ScriptTransfer(cq.caller, bZ, cH), IntegerEntry(aD(bs), df)] ++ cP)
523531 }
524532 else throw("Strict value is not equal to itself.")
525533 }
526- $Tuple2(([IntegerEntry(ar(), bP), IntegerEntry(as(bP), bQ), IntegerEntry(au(bP), bS), IntegerEntry(az(O, bP), cL), IntegerEntry(aA(O, bP, br), cM), bl(br, bY, cJ, cq.transactionId)] ++ bg), unit)
534+ $Tuple2(([IntegerEntry(ar(), bQ), IntegerEntry(as(bQ), bR), IntegerEntry(au(bQ), bT), IntegerEntry(az(O, bQ), cL), IntegerEntry(aA(O, bQ, bs), cM), bm(bs, bZ, cJ, cq.transactionId)] ++ bh), unit)
527535 }
528536 else throw("Strict value is not equal to itself.")
529537 }
530538 else {
531- let dg = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
532- $Tuple2([ScriptTransfer(cq.caller, (bE + dg), cH), IntegerEntry(aD(br), 0), aU(ai(br), bs, cy, bw, aY), aU(ak(), aM(), cy, bw, aY), bl(br, cI, (cJ + dg), cq.transactionId)], unit)
539+ let dg = fraction(aZ, e, pow(10, 0, bd, 0, 0, DOWN))
540+ $Tuple2([ScriptTransfer(cq.caller, (bF + dg), cH), IntegerEntry(aD(bs), 0), aV(ai(bs), bt, cy, bx, aZ), aV(ak(), aM(), cy, bx, aZ), bm(bs, cI, (cJ + dg), cq.transactionId)], unit)
533541 }
534- bg
542+ bh
535543 }
536544 }
537545
538546
539547
540548 @Callable(cq)
541-func cleanRemaingAmount (br) = {
549+func cleanRemaingAmount (bs) = {
542550 let O = aJ()[D]
543- let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
551+ let cN = split(h(invoke(this, "claimREADONLY", [O, bs], nil)), c)
544552 if ((cN == cN))
545553 then {
546554 let cO = parseIntValue(cN[2])
549557 else f("user have unclaimed assets")
550558 if ((dh == dh))
551559 then {
552- let di = split(value(getString(ai(br))), c)
560+ let di = split(value(getString(ai(bs))), c)
553561 let cQ = parseIntValue(di[T])
554562 let cR = parseIntValue(di[U])
555563 let cS = parseIntValue(di[V])
569577 let db = parseIntValue(cW[X])
570578 let dl = makeString(["%d%d%d%d%d", toString(cX), toString((cY - cR)), toString(cZ), toString(da), toString(db)], c)
571579 let de = (valueOrElse(getInteger(aG()), 0) + cR)
572-[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(br), dk), StringEntry(ak(), dl)]
580+[StringEntry(aF(bs), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(bs), dk), StringEntry(ak(), dl)]
573581 }
574582 else throw("Strict value is not equal to itself.")
575583 }
581589
582590
583591 @Callable(cq)
584-func claimREADONLY (bn,br) = {
585- let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
592+func claimREADONLY (bo,bs) = {
593+ let cG = bn(bo, addressFromStringValue(bs), fromBase58String(""))
586594 let cy = cG._1
587- let bE = cG._2
595+ let bF = cG._2
588596 let cH = cG._3
589- let bs = cG._4
590- let bw = cG._5
597+ let bt = cG._4
598+ let bx = cG._5
591599 let dm = cG._6
592600 let cO = dm[0]
593601 let dn = dm[1]
594- $Tuple2(nil, makeString(["%s%d%d", br, toString(cO), toString(dn)], c))
602+ $Tuple2(nil, makeString(["%s%d%d", bs, toString(cO), toString(dn)], c))
595603 }
596604
597605
598606
599607 @Callable(cq)
600-func claimV2READONLY (bn,br) = {
601- let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
608+func claimV2READONLY (bo,bs) = {
609+ let cG = bn(bo, addressFromStringValue(bs), fromBase58String(""))
602610 let cy = cG._1
603- let bE = cG._2
611+ let bF = cG._2
604612 let cH = cG._3
605- let bs = cG._4
606- let bw = cG._5
613+ let bt = cG._4
614+ let bx = cG._5
607615 let dm = cG._6
608616 let cO = dm[0]
609617 let dn = dm[1]
610- let bb = aJ()
611- let O = bb[D]
612- let aY = valueOrElse(getInteger(aD(br)), 0)
613- let dg = (aY * 100)
618+ let bc = aJ()
619+ let O = bc[D]
620+ let aZ = valueOrElse(getInteger(aD(bs)), 0)
621+ let dg = (aZ * 100)
614622 let do = (dn + dg)
615- let dp = bD(O, br, bE, cy[aS])
616- let bY = dp._1
617- let bW = dp._2
618- let bX = dp._3
619- let bF = dp._4
620- let bZ = dp._5
621- let ck = dp._6
622- let cl = dp._7
623- let bP = dp._8
624- let bQ = dp._9
625- let bS = dp._10
626- let dq = valueOrElse(getInteger(au(bP)), 0)
627- let dr = (parseIntValue(aO(br)[V]) - aY)
623+ let dp = bE(O, bs, bF, cy[aT])
624+ let bZ = dp._1
625+ let bX = dp._2
626+ let bY = dp._3
627+ let bG = dp._4
628+ let ca = dp._5
629+ let cl = dp._6
630+ let cm = dp._7
631+ let bQ = dp._8
632+ let bR = dp._9
633+ let bT = dp._10
634+ let dq = valueOrElse(getInteger(au(bQ)), 0)
635+ let dr = (parseIntValue(aO(bs)[V]) - aZ)
628636 let ds = if ((height > dq))
629637 then {
630638 let dt = value(getInteger(aq()))
631639 let du = value(getInteger(ay(O)))
632640 let dv = value(getInteger(aw(O)))
633- makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(bZ), toString(ck), toString(dt), toString(dr)], c)
641+ makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(ca), toString(cl), toString(dt), toString(dr)], c)
634642 }
635- else makeString(["%d%d%d%d%d%d", toString(do), toString(bY), toString(bW), toString(bZ), toString(ck), toString(cl), toString(dr)], c)
643+ else makeString(["%d%d%d%d%d%d", toString(do), toString(bZ), toString(bX), toString(ca), toString(cl), toString(cm), toString(dr)], c)
636644 $Tuple2(nil, ds)
637645 }
638646
640648 @Verifier(dw)
641649 func dx () = {
642650 let dy = {
643- let j = cm()
651+ let j = cn()
644652 if ($isInstanceOf(j, "ByteVector"))
645653 then {
646654 let cs = j
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined"))
55
66
77 let c = "__"
88
99 let d = toBigInt(1000000000000000000)
1010
1111 let e = 100000000
1212
1313 func f (g) = throw(makeString(["ido.ride:", g], " "))
1414
1515
1616 func h (i) = {
1717 let j = i
1818 if ($isInstanceOf(j, "String"))
1919 then {
2020 let k = j
2121 k
2222 }
2323 else throw("fail to cast into String")
2424 }
2525
2626
2727 func l (m,n,o,p,q) = {
2828 let r = toBigInt(n)
2929 let s = toBigInt(q)
3030 let t = fraction(toBigInt(m), d, r)
3131 let u = fraction(t, toBigInt(p), toBigInt(o))
3232 toInt(fraction(u, toBigInt(q), d))
3333 }
3434
3535
3636 let v = 1
3737
3838 let w = 2
3939
4040 let x = 3
4141
4242 let y = 4
4343
4444 let z = 5
4545
4646 let A = 6
4747
4848 let B = 7
4949
5050 let C = 8
5151
5252 let D = 9
5353
5454 let E = 10
5555
5656 let F = 11
5757
5858 func G (H,I,J,K,o,L,M,N,O,P,Q,R) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", H, I, J, K, o, L, M, N, O, P, Q, R], c)
5959
6060
6161 func S (H,I,J,K,o,L,M,N,O,P,Q,R) = G(toString(H), toString(I), toString(J), toString(K), toString(o), toString(L), M, toString(N), O, toString(P), toString(Q), toString(R))
6262
6363
6464 let T = 1
6565
6666 let U = 2
6767
6868 let V = 3
6969
7070 let W = 4
7171
7272 let X = 5
7373
7474 func Y (Z,aa,ab,ac,ad) = makeString(["%d%d%d%d%d", Z, aa, ab, ac, ad], c)
7575
7676
7777 func ae (Z,aa,ab,ac,ad) = Y(toString(Z), toString(aa), toString(ab), toString(ac), toString(ad))
7878
7979
8080 func af (m,ag) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(m), toString(ag)], c)
8181
8282
8383 func ah () = "%s__config"
8484
8585
8686 func ai (aj) = ("%s__" + aj)
8787
8888
8989 func ak () = "%s__totals"
9090
9191
9292 func al (am,aj,an) = makeString(["%s%s%s%s__history", am, aj, an], c)
9393
9494
9595 func ao () = "%s__usdnClaimDisabled"
9696
9797
9898 func ap () = "%s__usdnClaimEndHeight"
9999
100100
101101 func aq () = makeString(["%s", "periodLength"], c)
102102
103103
104104 func ar () = makeString(["%s", "currentPeriod"], c)
105105
106106
107107 func as (at) = makeString(["%s%s", "periodStartHeight", toString(at)], c)
108108
109109
110110 func au (at) = makeString(["%s%s", "periodEndHeight", toString(at)], c)
111111
112112
113113 func av () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
114114
115115
116116 func aw (ax) = makeString(["%s%s", "totalPeriodAllowance", ax], c)
117117
118118
119119 func ay (ax) = makeString(["%s%s", "userPeriodAllowance", ax], c)
120120
121121
122122 func az (ax,at) = makeString(["%s%s%s", "periodTotalAvailableToClaim", ax, toString(at)], c)
123123
124124
125125 func aA (ax,at,aj) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", ax, toString(at), aj], c)
126126
127127
128128 func aB () = makeString(["%s", "usdtPriceAssetStablePool"], c)
129129
130130
131131 func aC () = makeString(["%s", "usdtAssetId"], c)
132132
133133
134134 func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135135
136136
137137 func aF (aE) = makeString(["%s%s", "investorRemainingAmount", aE], c)
138138
139139
140140 func aG () = makeString(["%s", "totalRemainingAmount"], c)
141141
142142
143143 func aH () = "%s__managerPublicKey"
144144
145145
146146 func aI () = "%s__managerVaultAddress"
147147
148148
149149 func aJ () = split(a(ah()), c)
150150
151151
152152 func aK (aL) = split(valueOrElse(getString(aL), Y("0", "0", "0", "0", "0")), c)
153153
154154
155155 func aM () = aK(ak())
156156
157157
158158 func aN (aj) = aK(ai(aj))
159159
160160
161161 func aO (aj) = split(a(ai(aj)), c)
162162
163163
164-func aP () = addressFromStringValue(getStringValue(aI()))
165-
166-
167-let aQ = 0
168-
169-let aR = 1
170-
171-let aS = 2
172-
173-let aT = 3
174-
175-func aU (b,aV,aW,aX,aY) = {
176- let Z = parseIntValue(aV[T])
177- let aa = parseIntValue(aV[U])
178- let ab = parseIntValue(aV[V])
179- let ac = parseIntValue(aV[W])
180- let ad = parseIntValue(aV[X])
181- let aZ = (Z + aW[aQ])
182- let ba = (aa + aW[aR])
183- let bb = aJ()
184- let O = bb[D]
185- let bc = value(assetInfo(fromBase58String(O))).decimals
186- let bd = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
187- let be = ((ab + aW[aS]) - aY)
188- let bf = ((ac + aW[aT]) + bd)
189- let bg = if ((0 > ba))
164+func aP () = {
165+ let j = getString(aI())
166+ if ($isInstanceOf(j, "String"))
190167 then {
191- let bh = ((aZ - be) - bf)
192- let bi = if ((0 > bh))
193- then 0
194- else bh
195- StringEntry(b, ae(aZ, bi, be, bf, aX))
168+ let aQ = j
169+ addressFromStringValue(aQ)
196170 }
197- else StringEntry(b, ae(aZ, ba, be, bf, aX))
198- bg
171+ else this
199172 }
200173
201174
202-func bj (aj,m,ag,bk) = StringEntry(al("invest", aj, toBase58String(bk)), af(m, ag))
175+let aR = 0
176+
177+let aS = 1
178+
179+let aT = 2
180+
181+let aU = 3
182+
183+func aV (b,aW,aX,aY,aZ) = {
184+ let Z = parseIntValue(aW[T])
185+ let aa = parseIntValue(aW[U])
186+ let ab = parseIntValue(aW[V])
187+ let ac = parseIntValue(aW[W])
188+ let ad = parseIntValue(aW[X])
189+ let ba = (Z + aX[aR])
190+ let bb = (aa + aX[aS])
191+ let bc = aJ()
192+ let O = bc[D]
193+ let bd = value(assetInfo(fromBase58String(O))).decimals
194+ let be = fraction(aZ, e, pow(10, 0, bd, 0, 0, DOWN))
195+ let bf = ((ab + aX[aT]) - aZ)
196+ let bg = ((ac + aX[aU]) + be)
197+ let bh = if ((0 > bb))
198+ then {
199+ let bi = ((ba - bf) - bg)
200+ let bj = if ((0 > bi))
201+ then 0
202+ else bi
203+ StringEntry(b, ae(ba, bj, bf, bg, aY))
204+ }
205+ else StringEntry(b, ae(ba, bb, bf, bg, aY))
206+ bh
207+ }
203208
204209
205-func bl (aj,m,ag,bk) = StringEntry(al("claim", aj, toBase58String(bk)), af(m, ag))
210+func bk (aj,m,ag,bl) = StringEntry(al("invest", aj, toBase58String(bl)), af(m, ag))
206211
207212
208-func bm (bn,aj,bk) = {
209- let bb = aJ()
210- let J = parseIntValue(bb[x])
211- let K = parseIntValue(bb[y])
212- let bo = (J + K)
213- let o = parseIntValue(bb[z])
214- let L = parseIntValue(bb[A])
215- let M = bb[B]
216- let bp = fromBase58String(M)
217- let N = parseIntValue(bb[C])
218- let O = bb[D]
219- let bq = fromBase58String(O)
220- let P = parseIntValue(bb[E])
221- let br = toString(aj)
222- let bs = aO(br)
223- let bt = parseIntValue(bs[T])
224- let bu = parseIntValue(bs[X])
225- let bv = if ((J >= bu))
213+func bm (aj,m,ag,bl) = StringEntry(al("claim", aj, toBase58String(bl)), af(m, ag))
214+
215+
216+func bn (bo,aj,bl) = {
217+ let bc = aJ()
218+ let J = parseIntValue(bc[x])
219+ let K = parseIntValue(bc[y])
220+ let bp = (J + K)
221+ let o = parseIntValue(bc[z])
222+ let L = parseIntValue(bc[A])
223+ let M = bc[B]
224+ let bq = fromBase58String(M)
225+ let N = parseIntValue(bc[C])
226+ let O = bc[D]
227+ let br = fromBase58String(O)
228+ let P = parseIntValue(bc[E])
229+ let bs = toString(aj)
230+ let bt = aO(bs)
231+ let bu = parseIntValue(bt[T])
232+ let bv = parseIntValue(bt[X])
233+ let bw = if ((J >= bv))
226234 then J
227- else bu
228- let bw = if ((height > bo))
229- then bo
235+ else bv
236+ let bx = if ((height > bp))
237+ then bp
230238 else if ((J > height))
231239 then J
232240 else height
233- let bx = (bw - bv)
234- let by = fraction(bt, bx, K)
235- let bz = l(by, P, o, L, N)
236- let bA = (bn == O)
237- let bB = valueOrElse(getBoolean(ao()), false)
238- let bC = [if (!(if (bA)
239- then bB
241+ let by = (bx - bw)
242+ let bz = fraction(bu, by, K)
243+ let bA = l(bz, P, o, L, N)
244+ let bB = (bo == O)
245+ let bC = valueOrElse(getBoolean(ao()), false)
246+ let bD = [if (!(if (bB)
247+ then bC
240248 else false))
241249 then true
242250 else throw("USDN claim is disabled")]
243- if ((bC == bC))
244- then if ((bn == O))
245- then $Tuple6([0, -(by), by, 0], by, bq, bs, bw, [by, bz])
246- else if ((bn == M))
247- then $Tuple6([0, -(by), 0, bz], bz, bp, bs, bw, [by, bz])
248- else throw(("unsupported assetId: " + bn))
251+ if ((bD == bD))
252+ then if ((bo == O))
253+ then $Tuple6([0, -(bz), bz, 0], bz, br, bt, bx, [bz, bA])
254+ else if ((bo == M))
255+ then $Tuple6([0, -(bz), 0, bA], bA, bq, bt, bx, [bz, bA])
256+ else throw(("unsupported assetId: " + bo))
249257 else throw("Strict value is not equal to itself.")
250258 }
251259
252260
253-func bD (O,br,bE,bF) = {
254- let bG = value(getInteger(aw(O)))
255- let bH = value(getInteger(ay(O)))
256- let bI = value(getInteger(aq()))
257- let bJ = valueOrElse(getInteger(ar()), 0)
258- let bK = isDefined(getInteger(au(0)))
259- let bL = if ((bJ > 0))
261+func bE (O,bs,bF,bG) = {
262+ let bH = value(getInteger(aw(O)))
263+ let bI = value(getInteger(ay(O)))
264+ let bJ = value(getInteger(aq()))
265+ let bK = valueOrElse(getInteger(ar()), 0)
266+ let bL = isDefined(getInteger(au(0)))
267+ let bM = if ((bK > 0))
260268 then {
261- let bM = value(getInteger(as(bJ)))
262- let bN = value(getInteger(au(bJ)))
263- let bO = if ((height > bN))
269+ let bN = value(getInteger(as(bK)))
270+ let bO = value(getInteger(au(bK)))
271+ let bP = if ((height > bO))
264272 then {
265- let bP = (bJ + 1)
266- let bQ = if ((height > (bN + bI)))
273+ let bQ = (bK + 1)
274+ let bR = if ((height > (bO + bJ)))
267275 then {
268- let bR = ((height - bN) % bI)
269- if ((bR == 0))
270- then ((height - bI) + 1)
271- else (height - bR)
276+ let bS = ((height - bO) % bJ)
277+ if ((bS == 0))
278+ then ((height - bJ) + 1)
279+ else (height - bS)
272280 }
273- else (bN + 1)
274- let bS = ((bQ + bI) - 1)
275- $Tuple3(bP, bQ, bS)
281+ else (bO + 1)
282+ let bT = ((bR + bJ) - 1)
283+ $Tuple3(bQ, bR, bT)
276284 }
277- else $Tuple3(bJ, bM, bN)
278- let bP = bO._1
279- let bQ = bO._2
280- let bS = bO._3
281- $Tuple3(bP, bQ, bS)
285+ else $Tuple3(bK, bN, bO)
286+ let bQ = bP._1
287+ let bR = bP._2
288+ let bT = bP._3
289+ $Tuple3(bQ, bR, bT)
282290 }
283- else if (bK)
291+ else if (bL)
284292 then {
285- let bT = value(getInteger(as(0)))
286- let bU = value(getInteger(au(0)))
287- let bV = if ((height > bU))
293+ let bU = value(getInteger(as(0)))
294+ let bV = value(getInteger(au(0)))
295+ let bW = if ((height > bV))
288296 then {
289- let bP = (bJ + 1)
290- let bQ = (bU + 1)
291- let bS = ((bQ + bI) - 1)
292- $Tuple3(bP, bQ, bS)
297+ let bQ = (bK + 1)
298+ let bR = (bV + 1)
299+ let bT = ((bR + bJ) - 1)
300+ $Tuple3(bQ, bR, bT)
293301 }
294- else $Tuple3(bJ, bT, bU)
295- let bP = bV._1
296- let bQ = bV._2
297- let bS = bV._3
298- $Tuple3(bP, bQ, bS)
302+ else $Tuple3(bK, bU, bV)
303+ let bQ = bW._1
304+ let bR = bW._2
305+ let bT = bW._3
306+ $Tuple3(bQ, bR, bT)
299307 }
300- else $Tuple3(bJ, valueOrElse(getInteger(as(bJ)), height), valueOrElse(getInteger(au(bJ)), ((height + bI) - 1)))
301- let bP = bL._1
302- let bQ = bL._2
303- let bS = bL._3
304- let bW = valueOrElse(getInteger(az(O, bP)), bG)
305- let bX = valueOrElse(getInteger(aA(O, bP, br)), bH)
306- let aY = valueOrElse(getInteger(aD(br)), 0)
307- let bY = min([(bE + aY), bW, bX])
308- let bZ = value(getInteger(av()))
309- let ca = e
310- let cb = {
311- let cc = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [ca, O], nil)
312- if ($isInstanceOf(cc, "(Int, Int, Int)"))
313- then cc
314- else throw(($getType(cc) + " couldn't be cast to (Int, Int, Int)"))
308+ else $Tuple3(bK, valueOrElse(getInteger(as(bK)), height), valueOrElse(getInteger(au(bK)), ((height + bJ) - 1)))
309+ let bQ = bM._1
310+ let bR = bM._2
311+ let bT = bM._3
312+ let bX = valueOrElse(getInteger(az(O, bQ)), bH)
313+ let bY = valueOrElse(getInteger(aA(O, bQ, bs)), bI)
314+ let aZ = valueOrElse(getInteger(aD(bs)), 0)
315+ let bZ = min([(bF + aZ), bX, bY])
316+ let ca = value(getInteger(av()))
317+ let cb = e
318+ let cc = {
319+ let cd = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [cb, O], nil)
320+ if ($isInstanceOf(cd, "(Int, Int, Int)"))
321+ then cd
322+ else throw(($getType(cd) + " couldn't be cast to (Int, Int, Int)"))
315323 }
316- if ((cb == cb))
324+ if ((cc == cc))
317325 then {
318- let cd = cb._3
319- let ce = cb._2
320- let cf = cb._1
321- let cg = value(getString(aC()))
322- let ch = {
323- let cc = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cg, cf], nil)
324- if ($isInstanceOf(cc, "(Int, Int)"))
325- then cc
326- else throw(($getType(cc) + " couldn't be cast to (Int, Int)"))
326+ let ce = cc._3
327+ let cf = cc._2
328+ let cg = cc._1
329+ let ch = value(getString(aC()))
330+ let ci = {
331+ let cd = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [ch, cg], nil)
332+ if ($isInstanceOf(cd, "(Int, Int)"))
333+ then cd
334+ else throw(($getType(cd) + " couldn't be cast to (Int, Int)"))
327335 }
328- if ((ch == ch))
336+ if ((ci == ci))
329337 then {
330- let ci = ch._2
331- let cj = ch._1
332- let ck = fraction(ca, e, cj)
333- let cl = (bS - height)
334- $Tuple10(bY, bW, bX, bF, bZ, ck, cl, bP, bQ, bS)
338+ let cj = ci._2
339+ let ck = ci._1
340+ let cl = fraction(cb, e, ck)
341+ let cm = (bT - height)
342+ $Tuple10(bZ, bX, bY, bG, ca, cl, cm, bQ, bR, bT)
335343 }
336344 else throw("Strict value is not equal to itself.")
337345 }
338346 else throw("Strict value is not equal to itself.")
339347 }
340348
341349
342-func cm () = {
343- let cn = aP()
344- let j = getString(cn, aH())
350+func cn () = {
351+ let co = aP()
352+ let j = getString(co, aH())
345353 if ($isInstanceOf(j, "String"))
346354 then {
347- let co = j
348- fromBase58String(co)
355+ let aQ = j
356+ fromBase58String(aQ)
349357 }
350358 else if ($isInstanceOf(j, "Unit"))
351359 then unit
352360 else throw("Match error")
353361 }
354362
355363
356364 func cp (cq) = {
357365 let cr = throw("Permission denied")
358- let j = cm()
366+ let j = cn()
359367 if ($isInstanceOf(j, "ByteVector"))
360368 then {
361369 let cs = j
362370 if ((cq.callerPublicKey == cs))
363371 then true
364372 else cr
365373 }
366374 else if ($isInstanceOf(j, "Unit"))
367375 then if ((cq.caller == this))
368376 then true
369377 else cr
370378 else throw("Match error")
371379 }
372380
373381
374382 @Callable(cq)
375383 func constructor (H,I,J,K,o,O,Q) = {
376384 let L = ((100 * 1000) * 1000)
377385 let ct = (H + I)
378386 if (isDefined(getString(ah())))
379387 then throw("already initialized")
380388 else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cq.caller)))
381389 then throw("not authorized")
382390 else if ((size(cq.payments) != 1))
383391 then throw("exactly 1 payment must be attached")
384392 else if ((ct >= J))
385393 then throw("claimStart must be greater than idoEnd")
386394 else {
387395 let cu = value(cq.payments[0])
388- let bp = value(cu.assetId)
389- let cv = valueOrErrorMessage(assetInfo(bp), "fail to load ido asset info")
390- let M = toBase58String(bp)
396+ let bq = value(cu.assetId)
397+ let cv = valueOrErrorMessage(assetInfo(bq), "fail to load ido asset info")
398+ let M = toBase58String(bq)
391399 let N = pow(10, 0, cv.decimals, 0, 0, DOWN)
392- let bq = fromBase58String(O)
393- let cw = valueOrErrorMessage(assetInfo(bq), "fail to load price asset info")
400+ let br = fromBase58String(O)
401+ let cw = valueOrErrorMessage(assetInfo(br), "fail to load price asset info")
394402 let P = pow(10, 0, cw.decimals, 0, 0, DOWN)
395403 let cx = aM()
396404 let cy = [0, 0, 0, 0]
397-[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aU(ak(), cx, cy, J, 0)]
405+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aV(ak(), cx, cy, J, 0)]
398406 }
399407 }
400408
401409
402410
403411 @Callable(cq)
404412 func invest () = {
405- let bb = aJ()
406- let H = parseIntValue(bb[v])
407- let I = parseIntValue(bb[w])
413+ let bc = aJ()
414+ let H = parseIntValue(bc[v])
415+ let I = parseIntValue(bc[w])
408416 let ct = (H + I)
409- let J = parseIntValue(bb[x])
410- let K = parseIntValue(bb[y])
411- let o = parseIntValue(bb[z])
412- let L = parseIntValue(bb[A])
413- let M = bb[B]
414- let bp = fromBase58String(M)
415- let N = parseIntValue(bb[C])
416- let O = bb[D]
417- let bq = fromBase58String(O)
418- let P = parseIntValue(bb[E])
419- let cz = parseIntValue(bb[F])
417+ let J = parseIntValue(bc[x])
418+ let K = parseIntValue(bc[y])
419+ let o = parseIntValue(bc[z])
420+ let L = parseIntValue(bc[A])
421+ let M = bc[B]
422+ let bq = fromBase58String(M)
423+ let N = parseIntValue(bc[C])
424+ let O = bc[D]
425+ let br = fromBase58String(O)
426+ let P = parseIntValue(bc[E])
427+ let cz = parseIntValue(bc[F])
420428 let aj = toString(cq.caller)
421429 if ((H > height))
422430 then throw("ido has not been started yet")
423431 else if ((height > ct))
424432 then throw("ido has been already ended")
425433 else if ((size(cq.payments) != 1))
426434 then throw("exactly 1 payment is expected")
427435 else {
428436 let cu = value(cq.payments[0])
429437 let cA = value(cu.assetId)
430438 let cB = cu.amount
431- if ((cA != bq))
439+ if ((cA != br))
432440 then throw((("invalid payment asset id: " + toBase58String(cA)) + " is expected"))
433441 else {
434442 let cC = aN(aj)
435443 let cx = aM()
436444 let cD = (parseIntValue(cx[T]) + cB)
437445 let cE = (cD * 100)
438- if ((cE > assetBalance(this, bp)))
446+ if ((cE > assetBalance(this, bq)))
439447 then throw("IDO asset has been - sold consider to use smaller payment")
440448 else {
441449 let cy = [cB, cB, 0, 0]
442-[aU(ai(aj), cC, cy, J, 0), aU(ak(), cx, cy, J, 0), bj(aj, cB, 0, cq.transactionId)]
450+[aV(ai(aj), cC, cy, J, 0), aV(ak(), cx, cy, J, 0), bk(aj, cB, 0, cq.transactionId)]
443451 }
444452 }
445453 }
446454 }
447455
448456
449457
450458 @Callable(cq)
451-func claim (bn,br) = {
459+func claim (bo,bs) = {
452460 let cF = toString(cq.caller)
453- if ((br != cF))
461+ if ((bs != cF))
454462 then throw("not authorized")
455463 else {
456- let bb = aJ()
457- let O = bb[D]
458- let cG = bm(bn, cq.caller, cq.transactionId)
464+ let bc = aJ()
465+ let O = bc[D]
466+ let cG = bn(bo, cq.caller, cq.transactionId)
459467 let cy = cG._1
460- let bE = cG._2
468+ let bF = cG._2
461469 let cH = cG._3
462- let bs = cG._4
463- let bw = cG._5
464- let cI = cy[aS]
465- let cJ = cy[aT]
466- let aY = valueOrElse(getInteger(aD(br)), 0)
467- let bc = value(assetInfo(fromBase58String(O))).decimals
468- let bg = if ((bn == O))
470+ let bt = cG._4
471+ let bx = cG._5
472+ let cI = cy[aT]
473+ let cJ = cy[aU]
474+ let aZ = valueOrElse(getInteger(aD(bs)), 0)
475+ let bd = value(assetInfo(fromBase58String(O))).decimals
476+ let bh = if ((bo == O))
469477 then {
470- let cK = bD(O, br, bE, cy[aS])
471- let bY = cK._1
472- let bW = cK._2
473- let bX = cK._3
474- let bF = cK._4
475- let bZ = cK._5
476- let ck = cK._6
477- let cl = cK._7
478- let bP = cK._8
479- let bQ = cK._9
480- let bS = cK._10
481- let bC = [if ((bX > 0))
478+ let cK = bE(O, bs, bF, cy[aT])
479+ let bZ = cK._1
480+ let bX = cK._2
481+ let bY = cK._3
482+ let bG = cK._4
483+ let ca = cK._5
484+ let cl = cK._6
485+ let cm = cK._7
486+ let bQ = cK._8
487+ let bR = cK._9
488+ let bT = cK._10
489+ let bD = [if ((bY > 0))
482490 then true
483- else f("unavailable to claim because user period allowance reached"), if ((bW > 0))
491+ else f("unavailable to claim because user period allowance reached"), if ((bX > 0))
484492 then true
485- else f("unavailable to claim because total period allowance reached"), if ((bY > 0))
493+ else f("unavailable to claim because total period allowance reached"), if ((bZ > 0))
486494 then true
487- else f("nothing to claim"), if ((bZ > ck))
495+ else f("nothing to claim"), if ((ca > cl))
488496 then true
489497 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
490- if ((bC == bC))
498+ if ((bD == bD))
491499 then {
492- let cL = (bW - bY)
493- let cM = (bX - bY)
494- let bg = if ((aY > bY))
495- then [ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), (aY - bY))]
500+ let cL = (bX - bZ)
501+ let cM = (bY - bZ)
502+ let bh = if ((aZ > bZ))
503+ then [ScriptTransfer(cq.caller, bZ, cH), IntegerEntry(aD(bs), (aZ - bZ))]
496504 else {
497- let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
505+ let cN = split(h(invoke(this, "claimREADONLY", [O, bs], nil)), c)
498506 if ((cN == cN))
499507 then {
500508 let cO = parseIntValue(cN[3])
501- let cP = if ((cO == bY))
509+ let cP = if ((cO == bZ))
502510 then {
503- let cQ = parseIntValue(bs[T])
504- let cR = parseIntValue(bs[U])
505- let cS = parseIntValue(bs[V])
506- let cT = parseIntValue(bs[W])
507- let cU = parseIntValue(bs[X])
511+ let cQ = parseIntValue(bt[T])
512+ let cR = parseIntValue(bt[U])
513+ let cS = parseIntValue(bt[V])
514+ let cT = parseIntValue(bt[W])
515+ let cU = parseIntValue(bt[X])
508516 let cV = [toString(cQ), "0", toString(cS), toString(cT), toString(cU)]
509517 let cW = aM()
510518 let cX = parseIntValue(cW[T])
511519 let cY = parseIntValue(cW[U])
512520 let cZ = parseIntValue(cW[V])
513521 let da = parseIntValue(cW[W])
514522 let db = parseIntValue(cW[X])
515523 let dc = (cY - cR)
516524 let dd = [toString(cX), toString(dc), toString(cZ), toString(da), toString(db)]
517525 let de = (valueOrElse(getInteger(aG()), 0) + cR)
518-[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), aU(ai(br), cV, cy, bw, 0), aU(ak(), dd, cy, bw, 0)]
526+[StringEntry(aF(bs), toString(cR)), StringEntry(aG(), toString(de)), aV(ai(bs), cV, cy, bx, 0), aV(ak(), dd, cy, bx, 0)]
519527 }
520- else [aU(ai(br), bs, cy, bw, 0), aU(ak(), aM(), cy, bw, 0)]
521- let df = ((aY + bE) - bY)
522- ([ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), df)] ++ cP)
528+ else [aV(ai(bs), bt, cy, bx, 0), aV(ak(), aM(), cy, bx, 0)]
529+ let df = ((aZ + bF) - bZ)
530+ ([ScriptTransfer(cq.caller, bZ, cH), IntegerEntry(aD(bs), df)] ++ cP)
523531 }
524532 else throw("Strict value is not equal to itself.")
525533 }
526- $Tuple2(([IntegerEntry(ar(), bP), IntegerEntry(as(bP), bQ), IntegerEntry(au(bP), bS), IntegerEntry(az(O, bP), cL), IntegerEntry(aA(O, bP, br), cM), bl(br, bY, cJ, cq.transactionId)] ++ bg), unit)
534+ $Tuple2(([IntegerEntry(ar(), bQ), IntegerEntry(as(bQ), bR), IntegerEntry(au(bQ), bT), IntegerEntry(az(O, bQ), cL), IntegerEntry(aA(O, bQ, bs), cM), bm(bs, bZ, cJ, cq.transactionId)] ++ bh), unit)
527535 }
528536 else throw("Strict value is not equal to itself.")
529537 }
530538 else {
531- let dg = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
532- $Tuple2([ScriptTransfer(cq.caller, (bE + dg), cH), IntegerEntry(aD(br), 0), aU(ai(br), bs, cy, bw, aY), aU(ak(), aM(), cy, bw, aY), bl(br, cI, (cJ + dg), cq.transactionId)], unit)
539+ let dg = fraction(aZ, e, pow(10, 0, bd, 0, 0, DOWN))
540+ $Tuple2([ScriptTransfer(cq.caller, (bF + dg), cH), IntegerEntry(aD(bs), 0), aV(ai(bs), bt, cy, bx, aZ), aV(ak(), aM(), cy, bx, aZ), bm(bs, cI, (cJ + dg), cq.transactionId)], unit)
533541 }
534- bg
542+ bh
535543 }
536544 }
537545
538546
539547
540548 @Callable(cq)
541-func cleanRemaingAmount (br) = {
549+func cleanRemaingAmount (bs) = {
542550 let O = aJ()[D]
543- let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
551+ let cN = split(h(invoke(this, "claimREADONLY", [O, bs], nil)), c)
544552 if ((cN == cN))
545553 then {
546554 let cO = parseIntValue(cN[2])
547555 let dh = if ((cO == 0))
548556 then true
549557 else f("user have unclaimed assets")
550558 if ((dh == dh))
551559 then {
552- let di = split(value(getString(ai(br))), c)
560+ let di = split(value(getString(ai(bs))), c)
553561 let cQ = parseIntValue(di[T])
554562 let cR = parseIntValue(di[U])
555563 let cS = parseIntValue(di[V])
556564 let cT = parseIntValue(di[W])
557565 let cU = parseIntValue(di[X])
558566 let dj = if ((cR != 0))
559567 then true
560568 else f("investorRemainingAmount already zero")
561569 if ((dj == dj))
562570 then {
563571 let dk = makeString(["%d%d%d%d%d", toString(cQ), "0", toString(cS), toString(cT), toString(cU)], c)
564572 let cW = split(value(getString(ak())), c)
565573 let cX = parseIntValue(cW[T])
566574 let cY = parseIntValue(cW[U])
567575 let cZ = parseIntValue(cW[V])
568576 let da = parseIntValue(cW[W])
569577 let db = parseIntValue(cW[X])
570578 let dl = makeString(["%d%d%d%d%d", toString(cX), toString((cY - cR)), toString(cZ), toString(da), toString(db)], c)
571579 let de = (valueOrElse(getInteger(aG()), 0) + cR)
572-[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(br), dk), StringEntry(ak(), dl)]
580+[StringEntry(aF(bs), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(bs), dk), StringEntry(ak(), dl)]
573581 }
574582 else throw("Strict value is not equal to itself.")
575583 }
576584 else throw("Strict value is not equal to itself.")
577585 }
578586 else throw("Strict value is not equal to itself.")
579587 }
580588
581589
582590
583591 @Callable(cq)
584-func claimREADONLY (bn,br) = {
585- let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
592+func claimREADONLY (bo,bs) = {
593+ let cG = bn(bo, addressFromStringValue(bs), fromBase58String(""))
586594 let cy = cG._1
587- let bE = cG._2
595+ let bF = cG._2
588596 let cH = cG._3
589- let bs = cG._4
590- let bw = cG._5
597+ let bt = cG._4
598+ let bx = cG._5
591599 let dm = cG._6
592600 let cO = dm[0]
593601 let dn = dm[1]
594- $Tuple2(nil, makeString(["%s%d%d", br, toString(cO), toString(dn)], c))
602+ $Tuple2(nil, makeString(["%s%d%d", bs, toString(cO), toString(dn)], c))
595603 }
596604
597605
598606
599607 @Callable(cq)
600-func claimV2READONLY (bn,br) = {
601- let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
608+func claimV2READONLY (bo,bs) = {
609+ let cG = bn(bo, addressFromStringValue(bs), fromBase58String(""))
602610 let cy = cG._1
603- let bE = cG._2
611+ let bF = cG._2
604612 let cH = cG._3
605- let bs = cG._4
606- let bw = cG._5
613+ let bt = cG._4
614+ let bx = cG._5
607615 let dm = cG._6
608616 let cO = dm[0]
609617 let dn = dm[1]
610- let bb = aJ()
611- let O = bb[D]
612- let aY = valueOrElse(getInteger(aD(br)), 0)
613- let dg = (aY * 100)
618+ let bc = aJ()
619+ let O = bc[D]
620+ let aZ = valueOrElse(getInteger(aD(bs)), 0)
621+ let dg = (aZ * 100)
614622 let do = (dn + dg)
615- let dp = bD(O, br, bE, cy[aS])
616- let bY = dp._1
617- let bW = dp._2
618- let bX = dp._3
619- let bF = dp._4
620- let bZ = dp._5
621- let ck = dp._6
622- let cl = dp._7
623- let bP = dp._8
624- let bQ = dp._9
625- let bS = dp._10
626- let dq = valueOrElse(getInteger(au(bP)), 0)
627- let dr = (parseIntValue(aO(br)[V]) - aY)
623+ let dp = bE(O, bs, bF, cy[aT])
624+ let bZ = dp._1
625+ let bX = dp._2
626+ let bY = dp._3
627+ let bG = dp._4
628+ let ca = dp._5
629+ let cl = dp._6
630+ let cm = dp._7
631+ let bQ = dp._8
632+ let bR = dp._9
633+ let bT = dp._10
634+ let dq = valueOrElse(getInteger(au(bQ)), 0)
635+ let dr = (parseIntValue(aO(bs)[V]) - aZ)
628636 let ds = if ((height > dq))
629637 then {
630638 let dt = value(getInteger(aq()))
631639 let du = value(getInteger(ay(O)))
632640 let dv = value(getInteger(aw(O)))
633- makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(bZ), toString(ck), toString(dt), toString(dr)], c)
641+ makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(ca), toString(cl), toString(dt), toString(dr)], c)
634642 }
635- else makeString(["%d%d%d%d%d%d", toString(do), toString(bY), toString(bW), toString(bZ), toString(ck), toString(cl), toString(dr)], c)
643+ else makeString(["%d%d%d%d%d%d", toString(do), toString(bZ), toString(bX), toString(ca), toString(cl), toString(cm), toString(dr)], c)
636644 $Tuple2(nil, ds)
637645 }
638646
639647
640648 @Verifier(dw)
641649 func dx () = {
642650 let dy = {
643- let j = cm()
651+ let j = cn()
644652 if ($isInstanceOf(j, "ByteVector"))
645653 then {
646654 let cs = j
647655 cs
648656 }
649657 else if ($isInstanceOf(j, "Unit"))
650658 then dw.senderPublicKey
651659 else throw("Match error")
652660 }
653661 sigVerify(dw.bodyBytes, dw.proofs[0], dy)
654662 }
655663

github/deemru/w8io/3ef1775 
236.74 ms