tx · 9aragTtCWGYsryKUKA59HJUjQhce68XyNSEapChTyZ6H

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.02200000 Waves

2023.11.29 11:17 [2864443] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "9aragTtCWGYsryKUKA59HJUjQhce68XyNSEapChTyZ6H", "fee": 2200000, "feeAssetId": null, "timestamp": 1701245948027, "version": 1, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "2VnJJE38cJXXv3e3AUk1oH3eK1xYPQs6iMLdfFC4JYvw1xCRuQZw8v9YERhfaX3pWGMvog43cWYhe63BNj5hSnN7" ], "script": "base64:BgI0CAISAwoBARIDCgEBEgASAwoBCBIDCgEBEgMKAQgSAwoBCBIECgIYERIDCgEIEgASAwoBCD0ADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4ABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVAAFmtleVRvdGFsTG9ja2VkTHBBbW91bnQJALkJAgkAzAgCAgIlcwkAzAgCAhN0b3RhbExvY2tlZExwQW1vdW50BQNuaWwFA1NFUAEPa2V5VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIMdXNlckxwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEVa2V5VXNlckxvY2tlZExwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgISdXNlckxvY2tlZExwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAETa2V5VXNlclN0YWtpbmdOb2RlcwELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEHVzZXJTdGFraW5nTm9kZXMJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARlrZXlVc2VyU3Rha2luZ05vZGVzU2hhcmVzAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIWdXNlclN0YWtpbmdOb2Rlc1NoYXJlcwkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUhpc3RvcnkDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQR0eXBlCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABDWZvcm1hdEhpc3RvcnkEC3RvdGFsUHJvZml0BXByaWNlEHRvdGFsQXNzZXRBbW91bnQNdG90YWxMcEFtb3VudAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQULdG90YWxQcm9maXQJAMwIAgkApgMBBQVwcmljZQkAzAgCCQCkAwEFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkApAMBBQ10b3RhbExwQW1vdW50BQNuaWwFA1NFUAANdG90YWxMcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRBrZXlUb3RhbExwQW1vdW50AAAAEHRvdGFsQXNzZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VG90YWxBc3NldEFtb3VudAAAABN0b3RhbExvY2tlZExwQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFmtleVRvdGFsTG9ja2VkTHBBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMzU1NTM1NzkFAWEEBnJlc3VsdAgFCyR0MDM1NTUzNTc5Al8xBAZwcmVmaXgIBQskdDAzNTU1MzU3OQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDM3MjYzODEwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDM3MjYzODEwAl8xBAZwcmVmaXgIBQskdDAzNzI2MzgxMAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEZc3RyaW5nTGlzdFRvSW50TGlzdEhlbHBlcgIDYWNjBXZhbHVlCQDNCAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQV2YWx1ZQEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQC8AgMJALYCAQkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQ1zY2FsZTE4QmlnSW50CQC2AgEFDXRvdGFsTHBBbW91bnQFDXNjYWxlMThCaWdJbnQBF2dldFVzZXJTdGFraW5nTm9kZXNEYXRhAQt1c2VyQWRkcmVzcwQIbm9kZXNSYXcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBE2tleVVzZXJTdGFraW5nTm9kZXMBBQt1c2VyQWRkcmVzcwIABAlzaGFyZXNSYXcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBGWtleVVzZXJTdGFraW5nTm9kZXNTaGFyZXMBBQt1c2VyQWRkcmVzcwIABAlub2Rlc0xpc3QDCQAAAgUIbm9kZXNSYXcCAAUDbmlsCQC1CQIFCG5vZGVzUmF3BQNTRVAEEHNoYXJlc1N0cmluZ0xpc3QDCQAAAgUJc2hhcmVzUmF3AgAFA25pbAkAtQkCBQlzaGFyZXNSYXcFA1NFUAQKc2hhcmVzTGlzdAoAAiRsBRBzaGFyZXNTdHJpbmdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARlzdHJpbmdMaXN0VG9JbnRMaXN0SGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQJAJQKAgUJbm9kZXNMaXN0BQpzaGFyZXNMaXN0AQ9jYWxjQXNzZXRGcm9tTHABCGxwQW1vdW50CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAvAIDCQC2AgEFCGxwQW1vdW50CQEPZ2V0Q3VycmVudFByaWNlAAUNc2NhbGUxOEJpZ0ludAUDbmlsAQ9jYWxjTHBGcm9tQXNzZXQBC2Fzc2V0QW1vdW50CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAvAIDCQC2AgEFC2Fzc2V0QW1vdW50BQ1zY2FsZTE4QmlnSW50CQEPZ2V0Q3VycmVudFByaWNlAAUDbmlsAQ9nZXRVc2VyTHBBbW91bnQBC3VzZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwAAARVnZXRVc2VyTG9ja2VkTHBBbW91bnQBC3VzZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARVrZXlVc2VyTG9ja2VkTHBBbW91bnQBBQt1c2VyQWRkcmVzcwAAASBnZXRVc2VyQXZhaWxhYmxlQXNzZXRzVG9XaXRoZHJhdwELdXNlckFkZHJlc3MEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzCQEPY2FsY0Fzc2V0RnJvbUxwAQUMdXNlckxwQW1vdW50AQ9nZXRTdGFrZUFjdGlvbnMCAWkLdXNlckFkZHJlc3MEBmNoZWNrcwkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECGHNob3VsZCBpbmNsdWRlIDEgcGF5bWVudAkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMYXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkArAICAhVwYXltZW50IHNob3VsZCBiZSBpbiAFDWFzc2V0SWRTdHJpbmcJAMwIAgMJAGYCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAAABgIncGF5bWVudCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQAAAgkAyAEBCQDZBAEFC3VzZXJBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhl1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXBheW1lbnRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA9wYXltZW50THBBbW91bnQJAKADAQkAvAIDCQC2AgEFDXBheW1lbnRBbW91bnQFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQVdXNlclRvdGFsU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzAAAEEG5ld1RvdGFsTHBBbW91bnQJAGQCBQ10b3RhbExwQW1vdW50BQ9wYXltZW50THBBbW91bnQEE25ld1RvdGFsQXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFEG5ld1RvdGFsTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BA9uZXdVc2VyTHBBbW91bnQJAGQCBQx1c2VyTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQYbmV3VXNlclRvdGFsU3Rha2VkQW1vdW50CQBkAgUVdXNlclRvdGFsU3Rha2VkQW1vdW50BQ1wYXltZW50QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlIaXN0b3J5AwIFc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQENZm9ybWF0SGlzdG9yeQQJAQ9jYWxjVG90YWxQcm9maXQACQEPZ2V0Q3VycmVudFByaWNlAAUNdG90YWxMcEFtb3VudAUQdG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxMcEFtb3VudAUQbmV3VG90YWxMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAUTbmV3VG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBQ9uZXdVc2VyTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzBRhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARJnZXRXaXRoZHJhd0FjdGlvbnMCAWkVbHBBc3NldFdpdGhkcmF3QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBAVjaGVjawkAzAgCAwkAZgIFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAAABgkBCHRocm93RXJyAQIfTFAgYW1vdW50IHNob3VsZCBiZSBtb3JlIHRoYW4gMAkAzAgCAwkAZwIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICKGNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gYXZhaWxhYmxlIExQICgJAKQDAQUMdXNlckxwQW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrBA9uZXdVc2VyTHBBbW91bnQJAGUCBQx1c2VyTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQTd2l0aGRyYXdBc3NldEFtb3VudAkAoAMBCQC8AgMJALYCAQUVbHBBc3NldFdpdGhkcmF3QW1vdW50CQEPZ2V0Q3VycmVudFByaWNlAAUNc2NhbGUxOEJpZ0ludAQQbmV3VG90YWxMcEFtb3VudAkAZQIFDXRvdGFsTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAoAMBCQC8AgMJALYCAQUQbmV3VG90YWxMcEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAEGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQBkAgUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24FE3dpdGhkcmF3QXNzZXRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUhpc3RvcnkDAgh3aXRoZHJhdwULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJAQ1mb3JtYXRIaXN0b3J5BAkBD2NhbGNUb3RhbFByb2ZpdAAJAQ9nZXRDdXJyZW50UHJpY2UABQ10b3RhbExwQW1vdW50BRB0b3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MFGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEYZ2V0U2V0U3Rha2luZ05vZGVBY3Rpb25zAwt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwlub2RlU2hhcmUEBWNoZWNrCQDMCAIDCQAAAgkAyAEBCQDZBAEFC3VzZXJBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhl1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkCQDMCAIDCQAAAgkAyAEBCQDZBAEFC25vZGVBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhlub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlVc2VyU3Rha2luZ05vZGVzAQULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlVc2VyU3Rha2luZ05vZGVzU2hhcmVzAQULdXNlckFkZHJlc3MJAKQDAQUJbm9kZVNoYXJlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4LAWkBE3NldEVtaXNzaW9uUGVyQmxvY2sBEGVtaXNzaW9uUGVyQmxvY2sEBWNoZWNrCQDMCAIDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlFbWlzc2lvblBlckJsb2NrCQCWAwEJAMwIAgAACQDMCAIFEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGXNldEVtaXNzaW9uUGVyaW9kSW5CbG9ja3MBAXAEBWNoZWNrCQDMCAIDCQBmAgUBcAAABgkBCHRocm93RXJyAQIoZW1pc3Npb24gcGVyaW9kIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUBcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXN0YWtlAAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEPZ2V0U3Rha2VBY3Rpb25zAgUBaQULdXNlckFkZHJlc3MBaQEIc3Rha2VGb3IBC3VzZXJBZGRyZXNzCQEPZ2V0U3Rha2VBY3Rpb25zAgUBaQULdXNlckFkZHJlc3MBaQEId2l0aGRyYXcBE3dpdGhkcmF3QXNzZXRBbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEEmxwQW1vdW50VG9XaXRoZHJhdwkAoAMBCQC8AgMJALYCAQUTd2l0aGRyYXdBc3NldEFtb3VudAUNc2NhbGUxOEJpZ0ludAkBD2dldEN1cnJlbnRQcmljZQAEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJASBnZXRVc2VyQXZhaWxhYmxlQXNzZXRzVG9XaXRoZHJhdwEFC3VzZXJBZGRyZXNzBBZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50CQCgAwEJAL0CBAkBD2dldEN1cnJlbnRQcmljZQAJALYCAQABBQ1zY2FsZTE4QmlnSW50BQdDRUlMSU5HBAVjaGVjawkAzAgCAwkAZgIFE3dpdGhkcmF3QXNzZXRBbW91bnQAAAYJAQh0aHJvd0VycgECJXdpdGhkcmF3IGFtb3VudCBzaG91bGQgYmUgbW9yZSB0aGFuIDAJAMwIAgMJAGcCBRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3BRN3aXRoZHJhd0Fzc2V0QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJWNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gYXZhaWxhYmxlICgJAKQDAQUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwIBKQkAzAgCAwkAZwIFE3dpdGhkcmF3QXNzZXRBbW91bnQFFm1pbldpdGhkcmF3QXNzZXRBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIkd2l0aGRyYXcgYW1vdW50IGlzIHRvbyBzbWFsbC4gTWluOiAoCQCkAwEFFm1pbldpdGhkcmF3QXNzZXRBbW91bnQCASkFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJARJnZXRXaXRoZHJhd0FjdGlvbnMCBQFpCQCXAwEJAMwIAgUMdXNlckxwQW1vdW50CQDMCAIJAGQCBRJscEFtb3VudFRvV2l0aGRyYXcAAQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnNldFN0YWtpbmdOb2RlAQtub2RlQWRkcmVzcwQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEYZ2V0U2V0U3Rha2luZ05vZGVBY3Rpb25zAwULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzAGQBaQEWc3Rha2VBbmRTZXRTdGFraW5nTm9kZQELbm9kZUFkZHJlc3MEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkAzggCCQEPZ2V0U3Rha2VBY3Rpb25zAgUBaQULdXNlckFkZHJlc3MJARhnZXRTZXRTdGFraW5nTm9kZUFjdGlvbnMDBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MAZAFpAQdhaXJkcm9wAgthZGRyZXNzTGlzdAphbW91bnRMaXN0CgEDc3VtAgVhY2N1bQRuZXh0CQBkAgUFYWNjdW0FBG5leHQEDWFtb3VudExpc3RTdW0KAAIkbAUKYW1vdW50TGlzdAoAAiRz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ZGRlZExwQW1vdW50CQEPY2FsY0xwRnJvbUFzc2V0AQULYXNzZXRBbW91bnQED3VzZXJMb2NrZWRMcEtleQkBFWtleVVzZXJMb2NrZWRMcEFtb3VudAEJAJEDAgULYWRkcmVzc0xpc3QFBWluZGV4BAtvbGRMcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ91c2VyTG9ja2VkTHBLZXkAAAkAlQoDCQDNCAIFBnJlc3VsdAkBDEludGVnZXJFbnRyeQIFD3VzZXJMb2NrZWRMcEtleQkAZAIFC29sZExwQW1vdW50BQ1hZGRlZExwQW1vdW50CQBkAgUFaW5kZXgAAQkAZAIFB3RvdGFsTHAFDWFkZGVkTHBBbW91bnQEDSR0MDE0NTk0MTQ3MDMKAAIkbAUKYW1vdW50TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEWZ2V0QWlyZHJvcFN0YXRlQ2hhbmdlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgOTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoEDmFpcmRyb3BFbnRyaWVzCAUNJHQwMTQ1OTQxNDcwMwJfMQQCX2EIBQ0kdDAxNDU5NDE0NzAzAl8yBBhhZGRlZFRvdGFsTG9ja2VkTHBBbW91bnQIBQ0kdDAxNDU5NDE0NzAzAl8zCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtleVRvdGFsTG9ja2VkTHBBbW91bnQJAGQCBRN0b3RhbExvY2tlZExwQW1vdW50BRhhZGRlZFRvdGFsTG9ja2VkTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQJAGQCBQ10b3RhbExwQW1vdW50BRhhZGRlZFRvdGFsTG9ja2VkTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQJAGQCBRB0b3RhbEFzc2V0QW1vdW50BQ1hbW91bnRMaXN0U3VtBQNuaWwFDmFpcmRyb3BFbnRyaWVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWdldFVzZXJBc3NldHNSRUFET05MWQELdXNlckFkZHJlc3MEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJ1c2VyTG9ja2VkTHBBbW91bnQJARVnZXRVc2VyTG9ja2VkTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQVdXNlckxvY2tlZEFzc2V0QW1vdW50CQEPY2FsY0Fzc2V0RnJvbUxwAQUSdXNlckxvY2tlZExwQW1vdW50BBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQVdXNlclRvdGFsU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzAAAEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAEDSR0MDE1ODkxMTU5ODMJARdnZXRVc2VyU3Rha2luZ05vZGVzRGF0YQEFC3VzZXJBZGRyZXNzBBR1c2VyU3Rha2luZ05vZGVzTGlzdAgFDSR0MDE1ODkxMTU5ODMCXzEEGXVzZXJTdGFraW5nTm9kZVNoYXJlc0xpc3QIBQ0kdDAxNTg5MTE1OTgzAl8yCQCUCgIFA25pbAkAmwoJBQx1c2VyTHBBbW91bnQFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAQ9nZXRDdXJyZW50UHJpY2UABRV1c2VyVG90YWxTdGFrZWRBbW91bnQFF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduBRJ1c2VyTG9ja2VkTHBBbW91bnQFFXVzZXJMb2NrZWRBc3NldEFtb3VudAUUdXNlclN0YWtpbmdOb2Rlc0xpc3QFGXVzZXJTdGFraW5nTm9kZVNoYXJlc0xpc3QBaQEWZ2V0VG90YWxBc3NldHNSRUFET05MWQAJAJQKAgUDbmlsCQCXCgUFDXRvdGFsTHBBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkBD2dldEN1cnJlbnRQcmljZQAFE3RvdGFsTG9ja2VkTHBBbW91bnQJAQ9jYWxjQXNzZXRGcm9tTHABBRN0b3RhbExvY2tlZExwQW1vdW50AWkBC3ZvdGVGb3JUeElkAQR0eElkBBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEFBHR4SWQEBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QWxsb3dlZFR4SWQABQR0eElkBQNuaWwEEWFsbG93ZWRUeElkT3B0aW9uCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAAEA2VycgkAzAgCAwkAAAIJAMgBAQkA2QQBBQR0eElkBRFUWElEX0JZVEVTX0xFTkdUSAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAISIGlzIG5vdCB2YWxpZCB0eElkCQDMCAIDAwkAAAIFEWFsbG93ZWRUeElkT3B0aW9uBQR1bml0BgkBAiE9AgkBBXZhbHVlAQURYWxsb3dlZFR4SWRPcHRpb24FBHR4SWQGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEyBpcyBhbHJlYWR5IGFsbG93ZWQFA25pbAMJAAACBQNlcnIFA2VycgkBDHZvdGVJTlRFUk5BTAQFE2NhbGxlckFkZHJlc3NTdHJpbmcFCWtleVByZWZpeAUGUVVPUlVNBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAhieUFkbWlucwkAAAIIBQJ0eAJpZAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAACAAQHYnlPd25lcgMJAGcCCQCQAwEJAQ1nZXRBZG1pbnNMaXN0AAUGUVVPUlVNBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQMFCGJ5QWRtaW5zBgUHYnlPd25lcuu3Az4=", "chainId": 84, "height": 2864443, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bw7iWr352KqXzxkVJu15gda5Pzw74Kiv2tqrnDpWNhbw Next: PgAt8ZTB54Va2DyYPDnsX3TuK8ZfCa1xgqVCcgVRfhp Diff:
OldNewDifferences
246246 func aS (r) = {
247247 let aT = valueOrElse(getString(this, t(r)), "")
248248 let aU = valueOrElse(getString(this, u(r)), "")
249- let aV = split(aT, b)
250- let aW = split(aU, b)
251- let aX = if ((aW == [""]))
249+ let aV = if ((aT == ""))
252250 then nil
253- else {
254- let aj = aW
255- let ak = size(aj)
256- let al = nil
257- func am (an,ao) = if ((ao >= ak))
258- then an
259- else aD(an, aj[ao])
251+ else split(aT, b)
252+ let aW = if ((aU == ""))
253+ then nil
254+ else split(aU, b)
255+ let aX = {
256+ let aj = aW
257+ let ak = size(aj)
258+ let al = nil
259+ func am (an,ao) = if ((ao >= ak))
260+ then an
261+ else aD(an, aj[ao])
260262
261- func ap (an,ao) = if ((ao >= ak))
262- then an
263- else throw("List size exceeds 10")
263+ func ap (an,ao) = if ((ao >= ak))
264+ then an
265+ else throw("List size exceeds 20")
264266
265- ap(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
266- }
267+ ap(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
268+ }
267269 $Tuple2(aV, aX)
268270 }
269271
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 let f = 26
1515
1616 let g = 1440
1717
1818 func h (i) = throw(((a + ": ") + i))
1919
2020
2121 let j = makeString(["%s", "assetId"], b)
2222
2323 let k = makeString(["%s", "emissionPerBlock"], b)
2424
2525 let l = makeString(["%s", "emissionPeriodInBlocks"], b)
2626
2727 let m = makeString(["%s", "startBlock"], b)
2828
2929 let n = makeString(["%s", "totalLpAmount"], b)
3030
3131 let o = makeString(["%s", "totalAssetAmount"], b)
3232
3333 let p = makeString(["%s", "totalLockedLpAmount"], b)
3434
3535 func q (r) = makeString(["%s%s", "userLpAmount", r], b)
3636
3737
3838 func s (r) = makeString(["%s%s", "userLockedLpAmount", r], b)
3939
4040
4141 func t (r) = makeString(["%s%s", "userStakingNodes", r], b)
4242
4343
4444 func u (r) = makeString(["%s%s", "userStakingNodesShares", r], b)
4545
4646
4747 func v (r) = makeString(["%s%s", "totalAssetWithdrawn", r], b)
4848
4949
5050 func w (r) = makeString(["%s%s", "totalAssetStaked", r], b)
5151
5252
5353 func x (y,r,z) = makeString(["%s%s%s", y, r, toBase58String(z)], b)
5454
5555
5656 func A (B,C,D,E) = makeString(["%d%d%d%d", toString(B), toString(C), toString(D), toString(E)], b)
5757
5858
5959 let E = valueOrElse(getInteger(this, n), 0)
6060
6161 let D = valueOrElse(getInteger(this, o), 0)
6262
6363 let F = valueOrElse(getInteger(this, p), 0)
6464
6565 let G = valueOrElse(getString(this, j), "WAVES")
6666
6767 let H = if ((G == "WAVES"))
6868 then unit
6969 else fromBase58String(G)
7070
7171 let I = valueOrElse(getInteger(this, l), g)
7272
7373 let J = (valueOrElse(getInteger(this, k), 0) * I)
7474
7575 let K = 5
7676
7777 let L = 3
7878
7979 let M = 32
8080
8181 func N (z) = makeString(["%s%s%s", "allowTxId", z], b)
8282
8383
8484 func O (P,Q) = makeString([P, Q], b)
8585
8686
8787 func R () = makeString(["%s", "adminAddressList"], b)
8888
8989
9090 func S () = makeString(["%s", "txId"], b)
9191
9292
9393 func T (P,U) = {
9494 let V = O(P, U)
9595 valueOrElse(getInteger(V), 0)
9696 }
9797
9898
9999 func W () = {
100100 let X = getString(this, R())
101101 if ($isInstanceOf(X, "String"))
102102 then {
103103 let Y = X
104104 split(Y, b)
105105 }
106106 else nil
107107 }
108108
109109
110110 func Z (aa) = containsElement(W(), aa)
111111
112112
113113 func ab (ac,Q) = {
114114 let ad = ac
115115 let ae = ad._1
116116 let P = ad._2
117117 $Tuple2((ae :+ O(P, Q)), P)
118118 }
119119
120120
121121 func af (ag) = {
122122 let ah = R()
123123 let ai = {
124124 let aj = W()
125125 let ak = size(aj)
126126 let al = $Tuple2(nil, ag)
127127 func am (an,ao) = if ((ao >= ak))
128128 then an
129129 else ab(an, aj[ao])
130130
131131 func ap (an,ao) = if ((ao >= ak))
132132 then an
133133 else throw("List size exceeds 5")
134134
135135 ap(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5)
136136 }
137137 let ae = ai._1
138138 let P = ai._2
139139 ae
140140 }
141141
142142
143143 func aq (ae,V) = (ae + valueOrElse(getInteger(V), 0))
144144
145145
146146 func ar (P) = {
147147 let as = af(P)
148148 let aj = as
149149 let ak = size(aj)
150150 let al = 0
151151 func am (an,ao) = if ((ao >= ak))
152152 then an
153153 else aq(an, aj[ao])
154154
155155 func ap (an,ao) = if ((ao >= ak))
156156 then an
157157 else throw("List size exceeds 5")
158158
159159 ap(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5)
160160 }
161161
162162
163163 func at (ae,au) = (ae :+ DeleteEntry(au))
164164
165165
166166 func av (P) = {
167167 let as = af(P)
168168 let aj = as
169169 let ak = size(aj)
170170 let al = nil
171171 func am (an,ao) = if ((ao >= ak))
172172 then an
173173 else at(an, aj[ao])
174174
175175 func ap (an,ao) = if ((ao >= ak))
176176 then an
177177 else throw("List size exceeds 5")
178178
179179 ap(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5)
180180 }
181181
182182
183183 func aw (ax,ag,ay,az) = {
184184 let V = O(ag, ax)
185185 let aA = T(ag, ax)
186186 let aB = if (!(Z(ax)))
187187 then h((("Address: " + ax) + " not in Admin list"))
188188 else if ((aA == 1))
189189 then h((V + " you already voted"))
190190 else unit
191191 if ((aB == aB))
192192 then {
193193 let as = ar(ag)
194194 if (((as + 1) >= ay))
195195 then {
196196 let aC = av(ag)
197197 (aC ++ az)
198198 }
199199 else [IntegerEntry(V, 1)]
200200 }
201201 else throw("Strict value is not equal to itself.")
202202 }
203203
204204
205205 func aD (aE,aF) = (aE :+ parseIntValue(aF))
206206
207207
208208 func aG (aH) = {
209209 let aI = valueOrElse(getInteger(this, m), height)
210210 let aJ = fraction(aI, 1, I)
211211 let aK = ((aH / I) - aJ)
212212 max([0, (J * aK)])
213213 }
214214
215215
216216 func aL () = aG(height)
217217
218218
219219 func aM () = {
220220 let aN = (D + aL())
221221 let aO = {
222222 let X = H
223223 if ($isInstanceOf(X, "Unit"))
224224 then {
225225 let aP = X
226226 min([aN, wavesBalance(this).available])
227227 }
228228 else if ($isInstanceOf(X, "ByteVector"))
229229 then {
230230 let aQ = X
231231 min([aN, assetBalance(this, aQ)])
232232 }
233233 else throw("Match error")
234234 }
235235 if ((E == 0))
236236 then 0
237237 else aO
238238 }
239239
240240
241241 func aR () = if ((E != 0))
242242 then fraction(toBigInt(aM()), e, toBigInt(E))
243243 else e
244244
245245
246246 func aS (r) = {
247247 let aT = valueOrElse(getString(this, t(r)), "")
248248 let aU = valueOrElse(getString(this, u(r)), "")
249- let aV = split(aT, b)
250- let aW = split(aU, b)
251- let aX = if ((aW == [""]))
249+ let aV = if ((aT == ""))
252250 then nil
253- else {
254- let aj = aW
255- let ak = size(aj)
256- let al = nil
257- func am (an,ao) = if ((ao >= ak))
258- then an
259- else aD(an, aj[ao])
251+ else split(aT, b)
252+ let aW = if ((aU == ""))
253+ then nil
254+ else split(aU, b)
255+ let aX = {
256+ let aj = aW
257+ let ak = size(aj)
258+ let al = nil
259+ func am (an,ao) = if ((ao >= ak))
260+ then an
261+ else aD(an, aj[ao])
260262
261- func ap (an,ao) = if ((ao >= ak))
262- then an
263- else throw("List size exceeds 10")
263+ func ap (an,ao) = if ((ao >= ak))
264+ then an
265+ else throw("List size exceeds 20")
264266
265- ap(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
266- }
267+ ap(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
268+ }
267269 $Tuple2(aV, aX)
268270 }
269271
270272
271273 func aY (aZ) = max([0, toInt(fraction(toBigInt(aZ), aR(), e))])
272274
273275
274276 func ba (bb) = max([0, toInt(fraction(toBigInt(bb), e, aR()))])
275277
276278
277279 func bc (r) = valueOrElse(getInteger(this, q(r)), 0)
278280
279281
280282 func bd (r) = valueOrElse(getInteger(this, s(r)), 0)
281283
282284
283285 func be (r) = {
284286 let bf = bc(r)
285287 aY(bf)
286288 }
287289
288290
289291 func bg (bh,r) = {
290292 let bi = [if ((size(bh.payments) == 1))
291293 then true
292294 else h("should include 1 payment"), if ((bh.payments[0].assetId == H))
293295 then true
294296 else h(("payment should be in " + G)), if ((bh.payments[0].amount > 0))
295297 then true
296298 else "payment amount should be greater than 0", if ((size(fromBase58String(r)) == f))
297299 then true
298300 else h("user address is not valid")]
299301 if ((bi == bi))
300302 then {
301303 let bj = bh.payments[0].amount
302304 let bk = toInt(fraction(toBigInt(bj), e, aR()))
303305 let bf = bc(r)
304306 let bl = valueOrElse(getInteger(this, w(r)), 0)
305307 let bm = (E + bk)
306308 let bn = toInt(fraction(toBigInt(bm), aR(), e))
307309 let bo = (bf + bk)
308310 let bp = (bl + bj)
309311 [StringEntry(x("stake", r, bh.transactionId), A(aL(), aR(), E, D)), IntegerEntry(n, bm), IntegerEntry(o, bn), IntegerEntry(q(r), bo), IntegerEntry(w(r), bp), IntegerEntry(m, height)]
310312 }
311313 else throw("Strict value is not equal to itself.")
312314 }
313315
314316
315317 func bq (bh,br) = {
316318 let r = toString(bh.caller)
317319 let bf = bc(r)
318320 let bs = [if ((br > 0))
319321 then true
320322 else h("LP amount should be more than 0"), if ((bf >= br))
321323 then true
322324 else h((("cannot withdraw more than available LP (" + toString(bf)) + ")"))]
323325 if ((bs == bs))
324326 then {
325327 let bo = (bf - br)
326328 let bt = toInt(fraction(toBigInt(br), aR(), e))
327329 let bm = (E - br)
328330 let bn = toInt(fraction(toBigInt(bm), aR(), e))
329331 let bu = valueOrElse(getInteger(this, v(r)), 0)
330332 let bv = (bu + bt)
331333 [StringEntry(x("withdraw", r, bh.transactionId), A(aL(), aR(), E, D)), IntegerEntry(n, bm), IntegerEntry(o, bn), IntegerEntry(q(r), bo), IntegerEntry(v(r), bv), IntegerEntry(m, height), ScriptTransfer(bh.caller, bt, H)]
332334 }
333335 else throw("Strict value is not equal to itself.")
334336 }
335337
336338
337339 func bw (r,bx,by) = {
338340 let bs = [if ((size(fromBase58String(r)) == f))
339341 then true
340342 else h("user address is not valid"), if ((size(fromBase58String(bx)) == f))
341343 then true
342344 else h("node address is not valid")]
343345 if ((bs == bs))
344346 then [StringEntry(t(r), bx), StringEntry(u(r), toString(by))]
345347 else throw("Strict value is not equal to itself.")
346348 }
347349
348350
349351 @Callable(bh)
350352 func setEmissionPerBlock (bz) = {
351353 let bs = [if ((bh.caller == this))
352354 then true
353355 else h("permission denied")]
354356 if ((bs == bs))
355357 then [IntegerEntry(o, aM()), IntegerEntry(m, height), IntegerEntry(k, max([0, bz]))]
356358 else throw("Strict value is not equal to itself.")
357359 }
358360
359361
360362
361363 @Callable(bh)
362364 func setEmissionPeriodInBlocks (bA) = {
363365 let bs = [if ((bA > 0))
364366 then true
365367 else h("emission period should be greater than 0"), if ((bh.caller == this))
366368 then true
367369 else h("permission denied")]
368370 if ((bs == bs))
369371 then [IntegerEntry(o, aM()), IntegerEntry(m, height), IntegerEntry(l, bA)]
370372 else throw("Strict value is not equal to itself.")
371373 }
372374
373375
374376
375377 @Callable(bh)
376378 func stake () = {
377379 let r = toString(bh.caller)
378380 bg(bh, r)
379381 }
380382
381383
382384
383385 @Callable(bh)
384386 func stakeFor (r) = bg(bh, r)
385387
386388
387389
388390 @Callable(bh)
389391 func withdraw (bt) = {
390392 let r = toString(bh.caller)
391393 let bf = bc(r)
392394 let bB = toInt(fraction(toBigInt(bt), e, aR()))
393395 let bC = be(r)
394396 let bD = toInt(fraction(aR(), toBigInt(1), e, CEILING))
395397 let bs = [if ((bt > 0))
396398 then true
397399 else h("withdraw amount should be more than 0"), if ((bC >= bt))
398400 then true
399401 else h((("cannot withdraw more than available (" + toString(bC)) + ")")), if ((bt >= bD))
400402 then true
401403 else h((("withdraw amount is too small. Min: (" + toString(bD)) + ")"))]
402404 if ((bs == bs))
403405 then bq(bh, min([bf, (bB + 1)]))
404406 else throw("Strict value is not equal to itself.")
405407 }
406408
407409
408410
409411 @Callable(bh)
410412 func setStakingNode (bx) = {
411413 let r = toString(bh.caller)
412414 bw(r, bx, 100)
413415 }
414416
415417
416418
417419 @Callable(bh)
418420 func stakeAndSetStakingNode (bx) = {
419421 let r = toString(bh.caller)
420422 (bg(bh, r) ++ bw(r, bx, 100))
421423 }
422424
423425
424426
425427 @Callable(bh)
426428 func airdrop (bE,bF) = {
427429 func bG (bH,bI) = (bH + bI)
428430
429431 let bJ = {
430432 let aj = bF
431433 let ak = size(aj)
432434 let al = 0
433435 func am (an,ao) = if ((ao >= ak))
434436 then an
435437 else bG(an, aj[ao])
436438
437439 func ap (an,ao) = if ((ao >= ak))
438440 then an
439441 else throw("List size exceeds 90")
440442
441443 ap(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
442444 }
443445 let bs = [if ((size(bh.payments) == 1))
444446 then true
445447 else h("should include 1 payment"), if ((bh.payments[0].assetId == H))
446448 then true
447449 else h(("payment should be in " + G)), if ((bh.payments[0].amount > 0))
448450 then true
449451 else "payment amount should be greater than 0", if ((size(bE) == size(bF)))
450452 then true
451453 else h("addressList should be same size as amountList"), if ((bh.payments[0].amount >= bJ))
452454 then true
453455 else h("payment amount is less than sum of amountList")]
454456 if ((bs == bs))
455457 then {
456458 func bK (bH,bb) = {
457459 let bL = bH
458460 let ae = bL._1
459461 let bM = bL._2
460462 let bN = bL._3
461463 let bO = ba(bb)
462464 let bP = s(bE[bM])
463465 let bQ = valueOrElse(getInteger(this, bP), 0)
464466 $Tuple3((ae :+ IntegerEntry(bP, (bQ + bO))), (bM + 1), (bN + bO))
465467 }
466468
467469 let bR = {
468470 let aj = bF
469471 let ak = size(aj)
470472 let al = $Tuple3(nil, 0, 0)
471473 func bS (an,ao) = if ((ao >= ak))
472474 then an
473475 else bK(an, aj[ao])
474476
475477 func bT (an,ao) = if ((ao >= ak))
476478 then an
477479 else throw("List size exceeds 90")
478480
479481 bT(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
480482 }
481483 let bU = bR._1
482484 let bV = bR._2
483485 let bW = bR._3
484486 ([IntegerEntry(p, (F + bW)), IntegerEntry(n, (E + bW)), IntegerEntry(o, (D + bJ))] ++ bU)
485487 }
486488 else throw("Strict value is not equal to itself.")
487489 }
488490
489491
490492
491493 @Callable(bh)
492494 func getUserAssetsREADONLY (r) = {
493495 let bf = bc(r)
494496 let bX = bd(r)
495497 let bY = aY(bX)
496498 let bC = be(r)
497499 let bl = valueOrElse(getInteger(this, w(r)), 0)
498500 let bu = valueOrElse(getInteger(this, v(r)), 0)
499501 let bZ = aS(r)
500502 let ca = bZ._1
501503 let cb = bZ._2
502504 $Tuple2(nil, $Tuple9(bf, bC, aR(), bl, bu, bX, bY, ca, cb))
503505 }
504506
505507
506508
507509 @Callable(bh)
508510 func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple5(E, aM(), aR(), F, aY(F)))
509511
510512
511513
512514 @Callable(bh)
513515 func voteForTxId (z) = {
514516 let ax = toBase58String(bh.caller.bytes)
515517 let ag = N(z)
516518 let ae = [StringEntry(S(), z)]
517519 let cc = getString(this, S())
518520 let aB = [if ((size(fromBase58String(z)) == M))
519521 then true
520522 else h((z + " is not valid txId")), if (if ((cc == unit))
521523 then true
522524 else (value(cc) != z))
523525 then true
524526 else h((z + " is already allowed"))]
525527 if ((aB == aB))
526528 then aw(ax, ag, L, ae)
527529 else throw("Strict value is not equal to itself.")
528530 }
529531
530532
531533 @Verifier(cd)
532534 func ce () = {
533535 let cf = (cd.id == fromBase58String(valueOrElse(getString(this, S()), "")))
534536 let cg = if ((size(W()) >= L))
535537 then false
536538 else sigVerify(cd.bodyBytes, cd.proofs[0], cd.senderPublicKey)
537539 if (cf)
538540 then true
539541 else cg
540542 }
541543

github/deemru/w8io/026f985 
115.08 ms