tx · 6fJZPiE6ibuoRk673mECYYtHr6GTy2HTj7xGEytRcycL

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:43 [2503561] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "6fJZPiE6ibuoRk673mECYYtHr6GTy2HTj7xGEytRcycL", "fee": 1900000, "feeAssetId": null, "timestamp": 1679629418677, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "wXzhyf3w2UW3qjtXznR8mt1MGssxEaM4AEoX3UnnTHCSUmhJDvkui3PvFachYBZ86imLcShp4SVGq5PxqetRSTE" ], "script": "base64:BgL+FAgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzIwMjEzMjkxIgJpZCIEZGF0ZSIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ4OTUxNTA4NyIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDI2MzIwMzM2Ig0kdDAyMDQzNzIwNTA2Ig92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwODA1MjA4ODkiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjM5MjMyMzk5MyINJHQwMjQwMDMyNDA3MiIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU2OTkyNTczMyINJHQwMjYxNjkyNjIwMyIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTAzOTI5MTA5IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNDkxMzE1MzEiDSR0MDMxNTM2MzE1NzIiDSR0MDMyNzkyMzI4NjMiB2NhbGxlcjEiDSR0MDMzMDk4MzMxNTkiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAQBTgMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzBAJidQMDCQECIT0CBQJicwIACQBmAgUCYnQAAAcJAPwHBAUBaAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFAmJzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJidQUCYnUJAJYKBAkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZgIFAmJ0AAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJ2AQJhUgMJAQEhAQUBdgkAAgEFAXcJAJUKAwkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABAmJ3BgJhUgFQAmJ4AmJ5AmJ6AmJzBAJiQQkBAmJyAgUCYVIFAmJzBAJiQggFAmJBAl8xBAFOCAUCYkECXzIEAmJDCAUCYkECXzMEAmJ0CAUCYkECXzQDBgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAU4CAyAvIAUCYngCAyAvIAUCYnoCAyAvIAUCYnMEAmJEAwMDCQAAAgUBTgUCYngJAQIhPQIFAmJ6AgAHCQECIT0CBQJieQIABwYHBAJiRQkBAW8BCQECYWgCBQFOBQFQAwMDCQECIT0CBQJiRQAACQBnAgUGaGVpZ2h0BQJiRQcJAQEhAQUCYkQHCQACAQILU2FsZSBlbmRlZC4EAmJGCQAAAgUBTgUCYngEAmJHCQEBbwECEHRvdGFsX25mdF9pc3N1ZWQEAUQJAQFhAQkBAVcCBQJieAUBUAQCYkgJAQFhAQkBAVECBQJieAUBUAMJAAACBQJiSAIACQACAQIRQXJ0IGRvZXNuJ3QgZXhpc3QEAmJJCQEBcQEJAQFZAgUCYngFAVAEAmJKCQEBbwEJAQFYAgUCYngFAVAEAmJjAwUCYkYJAGgCBQFCAAIJAQFvAQkBAmFnAgUCYngFAVAEAmJiAwUCYkYJANgEAQUBaQkBAWEBCQECYWkCBQJieAUBUAQCYksJAQFvAQkBAVYCBQJieAUBUAMDAwkBASEBBQJiRAkBASEBBQJiRgcDAwkAZwIAAAUCYmMGCQEBIQEFAmJJBgkAZwIAAAUCYksHCQACAQIQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBASEBBQJiRAUCYkYHCQBnAgAABQJiSwcJAAIBAhRNYXggaXNzdWFibGUgbm90IHNldAQCYVAJAQJhRgEFAmJ4AwMFAmJECQECIT0CBQJhUAIABwkAAgEFAmFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJiTAMFAmJECQECYmwBBQJibQkBAmJhAwUCYVIFAmJiBQJiYwQCYVQIBQJiTAJfMQQCYVcIBQJiTAJfMgQCYk0JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBZwkBAmFrAQUCYngFAWYEAmJOCQELdmFsdWVPckVsc2UCCQCaCAIFAWcJAQJhbQEFAmJ4AAAEAmJPCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhbgEFAmJ4BQFmBAJiUAkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW8BBQJieAAABAJiUQkBAXABBQJieAQCYlIDCQBmAgUCYlEFBmhlaWdodAAAAwkAAAIFAmFXBQFpBQFyBQFzBAJiUwkAawMFAmFUBQJiUgBkBAJiVAMDAwkBAiE9AgUCYk0FAWYJAGYCBQJiTgAABwkAZgIFBmhlaWdodAUCYlEHCQBrAwUCYVQFAmJOAJBOAAAEAmJVAwMDCQECIT0CBQJiTwUBZgkAZgIFAmJQAAAHCQBmAgUGaGVpZ2h0BQJiUQcJAGsDBQJhVAUCYlAAkE4AAAQCYlYJAGUCBQJhVAUCYlMDCQAAAgUCYkoFAmJLCQACAQIMQXJ0IHNvbGQgb3V0BAJiVwkAZAIFAmJKAAEEAmJYCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJQ3JlYXRvcjogBQJieAIKLAogQXJ0SUQ6IAUBUAILLAogU2lnbklEOiAFAUQCESwKIEFydHdvcmsgbmFtZTogBQJiSAIKLAogSXNzdWU6IAkApAMBBQJiVwIBLwkApAMBBQJiSwQCYlkJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFAmJHAAEFAmJYAAEAAAcEAmJaCQC4CAEFAmJZBAJjYQMDCQAAAgUCYlcFAmJLBgkBASEBBQJiSQcGBAJjYgMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJ6CAUCYVIGY2FsbGVyBAJjYwMJAQEhAQkBCWlzRGVmaW5lZAEFAmFXAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJhVwQCYm4JAQFhAQkArAICBQJibQIFX09QRU4EAmNkCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgQCY2UJAQtTdHJpbmdFbnRyeQIJAKwCAgUCYm0CB19DTE9TRUQJAKwCAgkArAICBQJibgIBXwkApAMBBQJiQwQCY2YJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJYXJ0X3NvbGRfCQCkAwEFAmJXAgRfb2ZfCQCkAwEFAmJLAgFfBQFQAgFfBQJieAQCY2cDCQEBIQEFAmJECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAU4CAV8JAKQDAQUCYkMCAV8FAmJCAgFfCQCkAwEFAmJjAgFfBQJiYgIBXwkA2AQBBQJiWgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFAmNiAgFfCQCkAwEFAmJDAgFfBQJiQgIBXwkApAMBBQJhVAIBXwUCY2MCAV8JANgEAQUCYloEAmNoCQELU3RyaW5nRW50cnkCBQJjZgUCY2cEAmNpAwkBAiE9AgUCYlQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgkAZQIFAmJTBQJiVAUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJNBQJiVAUCYVcFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgUCYlMFAmFXBQNuaWwEAmNqAwkBAiE9AgUCYlUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYk8FAmJVBQJhVwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYngJAGUCBQJiVgUCYlUFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4BQJiVgUCYVcFA25pbAQCY2sDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAQCY2wJAM4IAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUCYngFAVAFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQJiWgUCY2YJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQJiRwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWgCBQJieAUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAmJ4BQFQBQJjYQkAzAgCBQJiWQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjYgABBQJiWgUDbmlsBQJjaQUCY2oFAmNrAwUCYkQJAMwIAgUCY2gJAMwIAgUCY2UJAMwIAgUCY2QFAmNsCQDMCAIFAmNoBQJjbAECY20BAmNuBAFHBQJjbgMJAAECBQFHAgZTdHJpbmcEAmNvBQFHBQJjbwkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoCY3ABB3NldENvbmYCAWICY3EEAU4JAKUIAQgFAmNwBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4DCQEIY29udGFpbnMCBQFiAgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQFiBQJjcQUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAmFSAQphZGRBcnR3b3JrDgFGAUQCYUwCYU0CYU4CY3ICYXcCYUECYXgCYUICYXkCY3MCYU8CYnMEAmN0CQECYnICBQJhUgUCYnMEAVAIBQJjdAJfMQQBTggFAmN0Al8yBAJiQwgFAmN0Al8zBAJidAgFAmN0Al80AwkBASEBCQEBSwEFAUYJAAIBAiRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EAmN1CQECYUgCBQJheQUCYUIEAmFKCAUCY3UCXzEEAmFLCAUCY3UCXzIEAmN2CQECYUkKBQFOBQJhdwUCYXgFAmFKBQJhQQUCYUsFAmFMBQJhTQUCYU4FAmFPAwkBAiE9AgUCY3YCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCY3cJAGYCCQEBcAEJAKwCAgUBTgILX2ZyZWVfZHJvcHMAAAQCY3gDBQJjdwkAlAoCAAAFAUQJAQJhVQEFAmFSBAJhVAgFAmN4Al8xBAJhVwgFAmN4Al8yAwkBASEBCQEJaXNEZWZpbmVkAQUCYVQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQCY3kJAQFhAQkBAmF1AgUBRgUBTgMJAQIhPQIFAmN5AgAJAAIBAhRZb3UgYWxyZWFkeSBhZGRlZCBpdAQCY3oJAQFhAQkBAmFyAQUBRgMJAQIhPQIFAmN6AgAJAAIBAhdIYXNoIGFscmVhZHkgcmVnaXN0ZXJlZAQCY0EJAQFDAwUBRAUBTgUBRgMJAQEhAQUCY0EJAAIBAixTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBmb3IgdGhpcyBhZGRyZXNzLgQCY0IDBQJjdwkA/AcEBQFoAgt1c2VGcmVlRHJvcAkAzAgCBQFOBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjQgUCY0IEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXIBBQFGBQFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdQIFAUYFAU4FAVAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFPAgUBTgUBUAUCYkMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQFQBQJhTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgIFAU4FAVAFAmFNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAgUBTgUBUAUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQFQBQJheAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAU4FAVAFAmFBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUBUAUCYUsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUBUAUCYUoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUBTgUBUAUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgUBTgUBUAUCYU4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBTgUBUAUBRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQFOBQFQAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUBTgUBUAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFzAgUBTgUBRAUBUAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXACBQFOBQFQBQFGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAU4FAVAFAmNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQFQBQJhTwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgUCYVQFAWkFA25pbAUCY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVIBDXVwZGF0ZUFydHdvcmsNAmFxAmFMAmFNAmFOAmNyAmF3AmFBAmF4AmFCAmF5AmNzAmFPAmJzAwkBASEBBQF2CQACAQUBdwQCY0MJAQJicgIFAmFSBQJicwQCYkIIBQJjQwJfMQQBTggFAmNDAl8yBAJiQwgFAmNDAl8zBAJidAgFAmNDAl80BAJjRAkBAmFIAgUCYXkFAmFCBAJhSggFAmNEAl8xBAJhSwgFAmNEAl8yBAJjdgkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN2AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN5CQEBYQEJAQFRAgUBTgUCYXEDCQAAAgUCY3kCAAkAAgECD0VudHJ5IG5vdCBmb3VuZAQCY0UJAQFhAQkBAmFqAgUBTgUCYXEDCQAAAgUCY0UCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBAmFYAgUBTgUCYXEEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIFAU4FAmFxBQJhTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgIFAU4FAmFxBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAmFxBQJhdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAU4FAmFxBQJheAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAU4FAmFxBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQFOBQJhcQUCYUoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCBQFOBQJhcQUCYUsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgUBTgUCYXEFAmFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAmFxBQJjcgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQJhcQUCY3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZgIFAU4FAmFxBQJhTwUDbmlsBQJjawkAAgECDkFscmVhZHkgbWludGVkAmFSAQtmbGFnQXJ0d29yawQBUAJjRgJjRQJjRwQCY0gJAQJidgEFAmFSBAJiQggFAmNIAl8xBAFOCAUCY0gCXzIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIHQ09OU0VOVAkAzAgCAgAJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQJjRQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCBQJjRgUBUAUCY0UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgUCY0YFAVAFAmNHBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQJjRQkAAgECE1lvdSBhcmUgbm90IGFsbG93ZWQCYVIBDWRlbGV0ZUFydHdvcmsCAVACY0YEAmNJCQECYnYBBQJhUgQCYkIIBQJjSQJfMQQBTggFAmNJAl8yBAJhWQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4FAmNGBQFOBAJjeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEBYQEJAQFRAgUCYVkFAVACIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzAwkAAAIFAmN5AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRgkBAWEBCQECYXACBQJhWQUBUAMJAAACBQFGAgAJAAIBAiVObyBhcnQgaGFzaCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAFECQEBYQEJAQFXAgUCYVkFAVADCQAAAgUBRAIACQACAQITTm8gU0lHTiBJRCBtYXRjaGluZwQCY0oJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAU8CBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVMCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWMCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWICBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFXAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVgCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhagIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcgEFAUYJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFzAgUCYVkFAUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmF1AgUBRgUCYVkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFoAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFkAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFlAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFmAgUCYVkFAVAFA25pbAMJAQEhAQkBAmFYAgUCYVkFAVADCQEBIQEFAXYJAAIBBQF3BQJjSgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4FAmNKCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAJhUgELc2VsbEFydHdvcmsGAVACYmcCY0sCYVcCYkUCYnMEAmNMCQECYnICBQJhUgUCYnMEAmJCCAUCY0wCXzEEAU4IBQJjTAJfMgQCYkMIBQJjTAJfMwQCYnQIBQJjTAJfNAQCYkgJAQFhAQkBAVECBQFOBQFQAwkAAAIFAmJIAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQCY0UJAQFhAQkBAmFqAgUBTgUBUAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0UJAAIBAg9GbGFnZ2VkIGFydHdvcmsEAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkAZgIAAAUCYkUJAAIBAgxOZWdhdGl2ZSBlbmQDAwkAZgIFAmJFAAADCQECIT0CBQJjSwABBgkBAiE9AgUCYmcAAAcJAAIBAjpUaW1lZCBvZmZlciBvbmx5IGFsbG93ZWQgZm9yIHVuaXF1ZSBlZGl0aW9uIGFuZCBvZmZlciBvbmx5BAJjTgMJAAACBQJiRQAAAAAFBmhlaWdodAMJAQEhAQkBAmJlAQUCYVcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEDCQEBIQEJAQJiZgIFAmFXBQJiZwkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVAEAmJKCQEBbwEJAQFYAgUBTgUBUAQCYksJAQFvAQkBAVYCBQFOBQFQAwkAZgIFAmNLAGQJAAIBAhwxMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrAwMJAQIhPQIFAmJKAAAJAAACBQJiSgUCYksHCQACAQIUTWF4IGVkaXRpb24gcmVhY2hlZC4DAwkAZgIFAmJKAAAJAQIhPQIFAmJLBQJjSwcJAAIBAiZDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgYW55bW9yZQMDCQBmAgUCY00AAAkBAiE9AgUCYksFAmNLBwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMEAmNhAwMJAGYCBQJiZwAACQBmAgUCY0sAAAcGBwQCY2sDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAFAmNhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWcCBQFOBQFQBQJiZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQFOBQFQBQJjSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkCBQFOBQFQBQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUBTgUBUAkAZAIFAmNOBQJiRQUDbmlsBQJjawJhUgEKYnV5QXJ0d29yawIBUAJieAkBAmJ3BgUCYVIFAVAFAmJ4AgACAAIAAmFSAQZzZXRCaWQCAVACYngEAmNPCQECYnYBBQJhUgQCYkIIBQJjTwJfMQQBTggFAmNPAl8yBAJiQwgFAmNPAl8zBAJjUAkBAmFRAQUCYVIEAmFTCAUCY1ACXzEEAmFUCAUCY1ACXzIEAmFXAwkBASEBCQEJaXNEZWZpbmVkAQgFAmFTB2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBAJiRQkBAW8BCQECYWgCBQJieAUBUAMDCQECIT0CBQJiRQAACQBnAgUGaGVpZ2h0BQJiRQcJAAIBAgtTYWxlIGVuZGVkLgQCY00JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVADCQEBIQEJAQJiZQEFAmFXCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkBASEBCQECYmYCBQJhVwUCYVQJAAIBAg5Xcm9uZyBtaW4gc2VsbAQCYkoJAQFvAQkBAVgCBQJieAUBUAQCYksJAQFvAQkBAVYCBQJieAUBUAMJAGcCAAAFAmJLCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUCYkoFAmJLCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUBTgIBXwUCYkICBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIFAmFXAgFfCQCkAwEFAmFUAgFfCQCkAwEFAmJDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZAIFAmNNAAEFA25pbAJhUgEJYWNjZXB0QmlkBQFQAmJ4AmJ5AmJ6AmJzBAJjUQkBAmJyAgUCYVIFAmJzBAJiQggFAmNRAl8xBAJjUggFAmNRAl8yBAJiQwgFAmNRAl8zBAJidAgFAmNRAl80AwkBAiE9AgUCY1IFAmJ4CQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgkBAmJ3BgUCYVIFAVAFAmJ4BQJieQUCYnoFAmJzAmFSAQljYW5jZWxCaWQEAVACYngCYnkCYnoEAmNTCQECYnYBBQJhUgQCYkIIBQJjUwJfMQQBTggFAmNTAl8yBAJiQwgFAmNTAl8zAwMJAQIhPQIFAU4FAmJ6CQECIT0CBQFOBQJieAcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAJjVAMJAAACBQFOBQJieAUCYnoFAU4EAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgMJAAACBQJibgIACQACAQINQmlkIG5vdCBmb3VuZAQCYm8JALUJAgUCYm4CAV8EAmFXCQECYmsBCQCRAwIFAmJvAAAEAmNVAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUCYm0CAV8FAmNVCQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBlAgUCY00AAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCY1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBQJhVwUDbmlsAQJjVgECY1cABAFHBQJjVgMJAAECBQFHAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQCY1gFAUcDAwMDCQAAAggFAmNYCGZ1bmN0aW9uAgphZGRBcnR3b3JrCQAAAggFAmNYBGRBcHAFBHRoaXMHCQAAAggFAmNYA2ZlZQCgwh4HCQAAAggFAmNYCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNYBGFyZ3MADQMDAwMJAAACCAUCY1gIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUCY1gEZEFwcAUEdGhpcwcJAAACCAUCY1gDZmVlAKDCHgcJAAACCAUCY1gKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1gEYXJncwAMAwMDAwkAAAIIBQJjWAhmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUCY1gEZEFwcAUEdGhpcwcJAAACCAUCY1gDZmVlAKDCHgcJAAACCAUCY1gKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1gEYXJncwAFAwMDAwkAAAIIBQJjWAhmdW5jdGlvbgIJYWNjZXB0QmlkCQAAAggFAmNYBGRBcHAFBHRoaXMHCQAAAggFAmNYA2ZlZQCgwh4HCQAAAggFAmNYCmZlZUFzc2V0SWQFBHVuaXQHCQDIEwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNYBGFyZ3MABAkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAgFAmNWD3NlbmRlclB1YmxpY0tleQkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAgFAmNWD3NlbmRlclB1YmxpY0tlecYT64k=", "height": 2503561, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 424W6tJ4RUixfDnJMdGeYvdyQem9Zq6h6huB4AJxztLK Next: JA8zsJgXhe3ophRxBEVeTeGJkAYoBuwzGfB57W9dAXaQ Diff:
OldNewDifferences
386386 let bt = if ((bs != ""))
387387 then valueOrElse(p((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
388388 else 0
389- if (true)
390- then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString((bt > 0))))
391- else {
392- let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
393- then (bt > 0)
394- else false)
395- then toString(addressFromPublicKey(fromBase58String(bs)))
396- else toBase58String(aR.caller.bytes)
397- let bu = if (if ((bs != ""))
398- then (bt > 0)
399- else false)
400- then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
401- else unit
402- if ((bu == bu))
403- then $Tuple4(toBase58String(aR.transactionId), if (if ((toBase58String(aR.caller.bytes) == toString(this)))
404- then (bt > 0)
405- else false)
406- then toString(addressFromPublicKey(fromBase58String(bs)))
407- else toBase58String(aR.caller.bytes), lastBlock.timestamp, (bt > 0))
408- else throw("Strict value is not equal to itself.")
409- }
389+ let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390+ then (bt > 0)
391+ else false)
392+ then toString(addressFromPublicKey(fromBase58String(bs)))
393+ else toBase58String(aR.caller.bytes)
394+ let bu = if (if ((bs != ""))
395+ then (bt > 0)
396+ else false)
397+ then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398+ else unit
399+ if ((bu == bu))
400+ then $Tuple4(toBase58String(aR.transactionId), if (if ((toBase58String(aR.caller.bytes) == toString(this)))
401+ then (bt > 0)
402+ else false)
403+ then toString(addressFromPublicKey(fromBase58String(bs)))
404+ else toBase58String(aR.caller.bytes), lastBlock.timestamp, (bt > 0))
405+ else throw("Strict value is not equal to itself.")
410406 }
411407
412408
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getString(this, b), "")
55
66
77 let c = false
88
99 let d = value(addressFromString(a("conf_oracle_fee")))
1010
1111 let e = value(addressFromString(a("conf_signweb_dapp")))
1212
1313 let f = a("conf_fee_receiver")
1414
1515 let g = if (c)
1616 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1717 else value(addressFromString(a("conf_users_dapp")))
1818
1919 let h = value(addressFromString(a("conf_whitelist_dapp")))
2020
2121 let i = fromBase58String(a("conf_accepted_asset_SIGN"))
2222
2323 let j = fromBase58String(a("conf_accepted_asset_USDN"))
2424
2525 let k = fromBase58String(a("conf_accepted_asset_USDT"))
2626
2727 let l = base58''
2828
2929 let m = a("conf_admin_1")
3030
3131 func n (b) = valueOrErrorMessage(getInteger(d, b), "Integer undefine or 0 in oracle")
3232
3333
3434 func o (b) = valueOrElse(getInteger(this, b), 0)
3535
3636
3737 func p (b) = valueOrElse(getInteger(h, b), 0)
3838
3939
4040 func q (b) = valueOrElse(getBoolean(this, b), false)
4141
4242
4343 let r = 7
4444
4545 let s = 10
4646
4747 let t = a("conf_default_licence")
4848
4949 let u = a("conf_default_licence_hash")
5050
5151 let v = valueOrElse(getBoolean(g, "conf_dapp_is_running"), true)
5252
5353 let w = valueOrElse(getString(g, "conf_maintenance_msg"), "")
5454
5555 let x = "SUSPENDED"
5656
5757 let y = "REMOVED"
5858
5959 let z = "UNREGISTERED"
6060
6161 let A = "ALLOWED"
6262
6363 let B = n(("certification_fee_" + toBase58String(i)))
6464
6565 func C (D,E,F) = {
6666 let G = getString(e, ((("data_fc_" + D) + "_") + E))
6767 if ($isInstanceOf(G, "String"))
6868 then {
6969 let H = G
7070 if (contains(H, F))
7171 then true
7272 else false
7373 }
7474 else false
7575 }
7676
7777
7878 func I (J) = if (contains(J, "/"))
7979 then if (if ((76 > size(J)))
8080 then (size(split(J, "/")[0]) == 59)
8181 else false)
8282 then (16 > size(split(J, "/")[1]))
8383 else false
8484 else false
8585
8686
8787 func K (L) = (size(L) == 64)
8888
8989
9090 func M (N) = ("user_status_" + N)
9191
9292
9393 func O (N,P) = ((("art_date_" + P) + "_") + N)
9494
9595
9696 func Q (N,P) = ((("art_name_" + P) + "_") + N)
9797
9898
9999 func R (N,P) = ((("art_desc_" + P) + "_") + N)
100100
101101
102102 func S (N,P) = ((("art_display_cid_" + P) + "_") + N)
103103
104104
105105 func T (N,P) = ((("art_export_hash_" + P) + "_") + N)
106106
107107
108108 func U (N,P) = ((("art_export_cid_" + P) + "_") + N)
109109
110110
111111 func V (N,P) = ((("art_maxmint_" + P) + "_") + N)
112112
113113
114114 func W (N,P) = ((("art_signid_" + P) + "_") + N)
115115
116116
117117 func X (N,P) = ((("art_issued_" + P) + "_") + N)
118118
119119
120120 func Y (N,P) = ((("art_onsale_" + P) + "_") + N)
121121
122122
123123 func Z (N,P) = ((("art_licence_hash_" + P) + "_") + N)
124124
125125
126126 func aa (N,P) = ((("art_licence_cid_" + P) + "_") + N)
127127
128128
129129 func ab (N,P) = ((("art_tags_" + P) + "_") + N)
130130
131131
132132 func ac (N,P) = ((("art_type_" + P) + "_") + N)
133133
134134
135135 func ad (N,P) = ((("art_note_" + P) + "_") + N)
136136
137137
138138 func ae (N,P) = ((("art_crawler_cid_" + P) + "_") + N)
139139
140140
141141 func af (N,P) = ((("art_royalties_" + P) + "_") + N)
142142
143143
144144 func ag (N,P) = ((("art_price_" + P) + "_") + N)
145145
146146
147147 func ah (N,P) = ((("art_endsale_" + P) + "_") + N)
148148
149149
150150 func ai (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
151151
152152
153153 func aj (N,P) = ((("art_flag_" + P) + "_") + N)
154154
155155
156156 func ak (al) = ("artist_agent_" + al)
157157
158158
159159 func am (al) = ("artist_agent_primary_" + al)
160160
161161
162162 func an (al) = ("artist_public_agent_" + al)
163163
164164
165165 func ao (al) = ("artist_public_agent_primary_" + al)
166166
167167
168168 func ap (N,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + N)
169169
170170
171171 func ar (F) = ("get_owner_by_hash_" + F)
172172
173173
174174 func as (N,at) = ((("get_artidbysignid_" + at) + "_") + N)
175175
176176
177177 func au (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
178178
179179
180180 func av (aw,ax,ay) = if (!(I(aw)))
181181 then throw("Wrong Display CID")
182182 else if (!(I(ax)))
183183 then throw("Wrong Export CID")
184184 else if (if ((ay != ""))
185185 then !(I(ay))
186186 else false)
187187 then throw("Wrong Licence CID")
188188 else true
189189
190190
191191 func az (aA,aB) = if (!(K(aA)))
192192 then throw("Export Hash 64 char. max")
193193 else if (!(K(aB)))
194194 then throw("Licence Hash 64 char. max")
195195 else true
196196
197197
198198 func aC (aD,aE) = if ((size(aD) == 0))
199199 then throw("Field cannot be is empty")
200200 else if ((size(aD) > aE))
201201 then throw((aD + " is too long"))
202202 else true
203203
204204
205205 func aF (N) = {
206206 let aG = valueOrElse(getString(g, M(N)), z)
207207 if (if ((aG == z))
208208 then true
209209 else (aG == A))
210210 then "Register this account first with \"Account\" tab"
211211 else if ((aG == x))
212212 then "Account suspended"
213213 else if ((aG == y))
214214 then "Account removed"
215215 else ""
216216 }
217217
218218
219219 func aH (ay,aB) = {
220220 let J = if ((size(ay) == 0))
221221 then t
222222 else ay
223223 let L = if ((size(aB) == 0))
224224 then u
225225 else aB
226226 $Tuple2(J, L)
227227 }
228228
229229
230230 func aI (N,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
231231 let aP = aF(N)
232232 if ((aP != ""))
233233 then throw(aP)
234234 else if ((size(aw) == 0))
235235 then throw("Display CID cannot be empty")
236236 else if (!(av(aw, ax, aJ)))
237237 then throw("Problem with CID")
238238 else if (!(az(aA, aK)))
239239 then throw("Problem with Hashes")
240240 else if (!(aC(aL, 100)))
241241 then throw("100 Char. max name")
242242 else if (!(aC(aM, 1000)))
243243 then throw("1000 Char. max description")
244244 else if (if ((0 > aO))
245245 then true
246246 else (aO > 1000))
247247 then throw("Royalties cannot be less than 0% or higher than 10%")
248248 else if ((size(split(aN, ",")) > 5))
249249 then throw("5 tags max.")
250250 else ""
251251 }
252252
253253
254254 func aQ (aR) = if ((size(aR.payments) == 0))
255255 then throw("No payment attached")
256256 else {
257257 let aS = value(aR.payments[0])
258258 let aT = value(aS.amount)
259259 $Tuple2(aS, aT)
260260 }
261261
262262
263263 func aU (aR) = {
264264 let aV = aQ(aR)
265265 let aS = aV._1
266266 let aT = aV._2
267267 let aW = if (if (isDefined(aS.assetId))
268268 then (aS.assetId == i)
269269 else false)
270270 then aS.assetId
271271 else throw("Only SIGN token accepted as transaction fee")
272272 if ((aT != B))
273273 then throw(("Payment amount should be " + toString(B)))
274274 else $Tuple2(aT, aW)
275275 }
276276
277277
278278 func aX (aY,P) = {
279279 let G = getInteger(this, X(aY, P))
280280 if ($isInstanceOf(G, "Int"))
281281 then {
282282 let aZ = G
283283 if ((aZ != 0))
284284 then true
285285 else false
286286 }
287287 else false
288288 }
289289
290290
291291 func ba (aR,bb,bc) = {
292292 let bd = aQ(aR)
293293 let aS = bd._1
294294 let aT = bd._2
295295 let aW = if (!(isDefined(aS.assetId)))
296296 then unit
297297 else if (if ((size(bb) > 0))
298298 then (toBase58String(value(aS.assetId)) == bb)
299299 else false)
300300 then aS.assetId
301301 else throw("Wrong asset id")
302302 if (if ((aW == unit))
303303 then (bb != "")
304304 else false)
305305 then throw("Wrong asset id")
306306 else if ((bc != aT))
307307 then throw("Payment don't match")
308308 else $Tuple2(aT, aW)
309309 }
310310
311311
312312 func be (aW) = if (if (if (if (if ((aW != toBase58String(i)))
313313 then (aW != toBase58String(l))
314314 else false)
315315 then (aW != "WAVES")
316316 else false)
317317 then (aW != toBase58String(j))
318318 else false)
319319 then (aW != toBase58String(k))
320320 else false)
321321 then throw("Only SIGN, USDN,USDT or WAVES accepted")
322322 else true
323323
324324
325325 func bf (aW,bg) = {
326326 let bh = if (c)
327327 then 10
328328 else n("waves_min_sell")
329329 let bi = 1000000
330330 let bj = if (c)
331331 then 1
332332 else (B * 2)
333333 if (if (if (if (if (if ((aW == toBase58String(j)))
334334 then (bi > bg)
335335 else false)
336336 then (bg != 0)
337337 else false)
338338 then true
339339 else if (if ((aW == toBase58String(k)))
340340 then (bi > bg)
341341 else false)
342342 then (bg != 0)
343343 else false)
344344 then true
345345 else if (if ((aW == toBase58String(i)))
346346 then (bj > bg)
347347 else false)
348348 then (bg != 0)
349349 else false)
350350 then true
351351 else if (if (if ((aW == toBase58String(l)))
352352 then true
353353 else (aW == "WAVES"))
354354 then (bh > bg)
355355 else false)
356356 then (bg != 0)
357357 else false)
358358 then throw("Wrong minimum sell price")
359359 else true
360360 }
361361
362362
363363 func bk (aW) = if ((aW == "WAVES"))
364364 then unit
365365 else fromBase58String(aW)
366366
367367
368368 func bl (bm) = {
369369 let bn = a((bm + "_OPEN"))
370370 if ((bn == ""))
371371 then throw("Bid not found")
372372 else {
373373 let bo = split(bn, "_")
374374 let bp = parseIntValue(bo[1])
375375 let bq = bk(bo[0])
376376 if ((0 >= bp))
377377 then throw("Wrong amount")
378378 else $Tuple2(bp, bq)
379379 }
380380 }
381381
382382
383383 func br (aR,bs) = if (!(v))
384384 then throw(w)
385385 else {
386386 let bt = if ((bs != ""))
387387 then valueOrElse(p((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
388388 else 0
389- if (true)
390- then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString((bt > 0))))
391- else {
392- let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
393- then (bt > 0)
394- else false)
395- then toString(addressFromPublicKey(fromBase58String(bs)))
396- else toBase58String(aR.caller.bytes)
397- let bu = if (if ((bs != ""))
398- then (bt > 0)
399- else false)
400- then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
401- else unit
402- if ((bu == bu))
403- then $Tuple4(toBase58String(aR.transactionId), if (if ((toBase58String(aR.caller.bytes) == toString(this)))
404- then (bt > 0)
405- else false)
406- then toString(addressFromPublicKey(fromBase58String(bs)))
407- else toBase58String(aR.caller.bytes), lastBlock.timestamp, (bt > 0))
408- else throw("Strict value is not equal to itself.")
409- }
389+ let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390+ then (bt > 0)
391+ else false)
392+ then toString(addressFromPublicKey(fromBase58String(bs)))
393+ else toBase58String(aR.caller.bytes)
394+ let bu = if (if ((bs != ""))
395+ then (bt > 0)
396+ else false)
397+ then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398+ else unit
399+ if ((bu == bu))
400+ then $Tuple4(toBase58String(aR.transactionId), if (if ((toBase58String(aR.caller.bytes) == toString(this)))
401+ then (bt > 0)
402+ else false)
403+ then toString(addressFromPublicKey(fromBase58String(bs)))
404+ else toBase58String(aR.caller.bytes), lastBlock.timestamp, (bt > 0))
405+ else throw("Strict value is not equal to itself.")
410406 }
411407
412408
413409 func bv (aR) = if (!(v))
414410 then throw(w)
415411 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
416412
417413
418414 func bw (aR,P,bx,by,bz,bs) = {
419415 let bA = br(aR, bs)
420416 let bB = bA._1
421417 let N = bA._2
422418 let bC = bA._3
423419 let bt = bA._4
424420 if (true)
425421 then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
426422 else {
427423 let bD = if (if (if ((N == bx))
428424 then (bz != "")
429425 else false)
430426 then (by != "")
431427 else false)
432428 then true
433429 else false
434430 let bE = o(ah(N, P))
435431 if (if (if ((bE != 0))
436432 then (height >= bE)
437433 else false)
438434 then !(bD)
439435 else false)
440436 then throw("Sale ended.")
441437 else {
442438 let bF = (N == bx)
443439 let bG = o("total_nft_issued")
444440 let D = a(W(bx, P))
445441 let bH = a(Q(bx, P))
446442 if ((bH == ""))
447443 then throw("Art doesn't exist")
448444 else {
449445 let bI = q(Y(bx, P))
450446 let bJ = o(X(bx, P))
451447 let bc = if (bF)
452448 then (B * 2)
453449 else o(ag(bx, P))
454450 let bb = if (bF)
455451 then toBase58String(i)
456452 else a(ai(bx, P))
457453 let bK = o(V(bx, P))
458454 if (if (if (!(bD))
459455 then !(bF)
460456 else false)
461457 then if (if ((0 >= bc))
462458 then true
463459 else !(bI))
464460 then true
465461 else (0 >= bK)
466462 else false)
467463 then throw("Art not for sale")
468464 else if (if (if (!(bD))
469465 then bF
470466 else false)
471467 then (0 >= bK)
472468 else false)
473469 then throw("Max issuable not set")
474470 else {
475471 let aP = aF(bx)
476472 if (if (bD)
477473 then (aP != "")
478474 else false)
479475 then throw(aP)
480476 else {
481477 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
482478 let bL = if (bD)
483479 then bl(bm)
484480 else ba(aR, bb, bc)
485481 let aT = bL._1
486482 let aW = bL._2
487483 let bM = valueOrElse(getString(g, ak(bx)), f)
488484 let bN = valueOrElse(getInteger(g, am(bx)), 0)
489485 let bO = valueOrElse(getString(g, an(bx)), f)
490486 let bP = valueOrElse(getInteger(g, ao(bx)), 0)
491487 let bQ = p(bx)
492488 let bR = if ((bQ > height))
493489 then 0
494490 else if ((aW == i))
495491 then r
496492 else s
497493 let bS = fraction(aT, bR, 100)
498494 let bT = if (if (if ((bM != f))
499495 then (bN > 0)
500496 else false)
501497 then (height > bQ)
502498 else false)
503499 then fraction(aT, bN, 10000)
504500 else 0
505501 let bU = if (if (if ((bO != f))
506502 then (bP > 0)
507503 else false)
508504 then (height > bQ)
509505 else false)
510506 then fraction(aT, bP, 10000)
511507 else 0
512508 let bV = (aT - bS)
513509 if ((bJ == bK))
514510 then throw("Art sold out")
515511 else {
516512 let bW = (bJ + 1)
517513 let bX = ((((((((((("Creator: " + bx) + ",
518514 ArtID: ") + P) + ",
519515 SignID: ") + D) + ",
520516 Artwork name: ") + bH) + ",
521517 Issue: ") + toString(bW)) + "/") + toString(bK))
522518 let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
523519 let bZ = calculateAssetId(bY)
524520 let ca = if (if ((bW == bK))
525521 then true
526522 else !(bI))
527523 then false
528524 else true
529525 let cb = if (if (if ((N == bx))
530526 then (bz != "")
531527 else false)
532528 then (by != "")
533529 else false)
534530 then addressFromStringValue(bz)
535531 else aR.caller
536532 let cc = if (!(isDefined(aW)))
537533 then "WAVES"
538534 else toBase58String(value(aW))
539535 let bn = a((bm + "_OPEN"))
540536 let cd = DeleteEntry((bm + "_OPEN"))
541537 let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
542538 let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
543539 let cg = if (!(bD))
544540 then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
545541 else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
546542 let ch = StringEntry(cf, cg)
547543 let ci = if ((bT != 0))
548544 then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
549545 else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
550546 let cj = if ((bU != 0))
551547 then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
552548 else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
553549 let ck = if (bt)
554550 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
555551 else nil
556552 let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
557553 if (bD)
558554 then [ch, ce, cd] :: cl
559555 else ch :: cl
560556 }
561557 }
562558 }
563559 }
564560 }
565561 }
566562 }
567563
568564
569565 func cm (cn) = {
570566 let G = cn
571567 if ($isInstanceOf(G, "String"))
572568 then {
573569 let co = G
574570 co
575571 }
576572 else throw("Sponsored Public Key String expected")
577573 }
578574
579575
580576 @Callable(cp)
581577 func setConf (b,cq) = {
582578 let N = toString(cp.caller)
583579 if (containsElement([m, toString(this)], N))
584580 then if (contains(b, "conf_"))
585581 then [StringEntry(b, cq)]
586582 else throw("Entries starting with conf_ only")
587583 else throw("You are not allowed to change this")
588584 }
589585
590586
591587
592588 @Callable(aR)
593589 func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
594590 let ct = br(aR, bs)
595591 let P = ct._1
596592 let N = ct._2
597593 let bC = ct._3
598594 let bt = ct._4
599595 if (!(K(F)))
600596 then throw("Hash should be 64 characters maximum")
601597 else {
602598 let cu = aH(ay, aB)
603599 let aJ = cu._1
604600 let aK = cu._2
605601 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
606602 if ((cv != ""))
607603 then throw("Something went wrong!")
608604 else {
609605 let cw = (p((N + "_free_drops")) > 0)
610606 let cx = if (cw)
611607 then $Tuple2(0, D)
612608 else aU(aR)
613609 let aT = cx._1
614610 let aW = cx._2
615611 if (!(isDefined(aT)))
616612 then throw("Something went wrong")
617613 else {
618614 let cy = a(au(F, N))
619615 if ((cy != ""))
620616 then throw("You already added it")
621617 else {
622618 let cz = a(ar(F))
623619 if ((cz != ""))
624620 then throw("Hash already registered")
625621 else {
626622 let cA = C(D, N, F)
627623 if (!(cA))
628624 then throw("Sign Certificate not found for this address.")
629625 else {
630626 let cB = if (cw)
631627 then invoke(h, "useFreeDrop", [N], nil)
632628 else unit
633629 if ((cB == cB))
634630 then {
635631 let ck = if (bt)
636632 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
637633 else nil
638634 ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cr), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
639635 }
640636 else throw("Strict value is not equal to itself.")
641637 }
642638 }
643639 }
644640 }
645641 }
646642 }
647643 }
648644
649645
650646
651647 @Callable(aR)
652648 func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
653649 then throw(w)
654650 else {
655651 let cC = br(aR, bs)
656652 let bB = cC._1
657653 let N = cC._2
658654 let bC = cC._3
659655 let bt = cC._4
660656 let cD = aH(ay, aB)
661657 let aJ = cD._1
662658 let aK = cD._2
663659 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
664660 if ((cv != ""))
665661 then throw("Something went wrong!")
666662 else {
667663 let cy = a(Q(N, aq))
668664 if ((cy == ""))
669665 then throw("Entry not found")
670666 else {
671667 let cE = a(aj(N, aq))
672668 if ((cE == "ILLEGAL"))
673669 then throw("Cannot update ILLEGAL artwork")
674670 else if (!(aX(N, aq)))
675671 then {
676672 let ck = if (bt)
677673 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
678674 else nil
679675 ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cr), StringEntry(ae(N, aq), cs), IntegerEntry(af(N, aq), aO)] ++ ck)
680676 }
681677 else throw("Already minted")
682678 }
683679 }
684680 }
685681
686682
687683
688684 @Callable(aR)
689685 func flagArtwork (P,cF,cE,cG) = {
690686 let cH = bv(aR)
691687 let bB = cH._1
692688 let N = cH._2
693689 if (containsElement([m, toString(this)], N))
694690 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
695691 then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
696692 else throw(("Unknow status " + cE))
697693 else throw("You are not allowed")
698694 }
699695
700696
701697
702698 @Callable(aR)
703699 func deleteArtwork (P,cF) = {
704700 let cI = bv(aR)
705701 let bB = cI._1
706702 let N = cI._2
707703 let aY = if (containsElement([m, toString(this)], N))
708704 then cF
709705 else N
710706 let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
711707 if ((cy == ""))
712708 then throw("No art matching for this address")
713709 else {
714710 let F = a(ap(aY, P))
715711 if ((F == ""))
716712 then throw("No art hash matching for this address")
717713 else {
718714 let D = a(W(aY, P))
719715 if ((D == ""))
720716 then throw("No SIGN ID matching")
721717 else {
722718 let cJ = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
723719 if (!(aX(aY, P)))
724720 then if (!(v))
725721 then throw(w)
726722 else cJ
727723 else if (containsElement([m, toString(this)], N))
728724 then cJ
729725 else throw("Art already minted, you cannot delete it")
730726 }
731727 }
732728 }
733729 }
734730
735731
736732
737733 @Callable(aR)
738734 func sellArtwork (P,bg,cK,aW,bE,bs) = {
739735 let cL = br(aR, bs)
740736 let bB = cL._1
741737 let N = cL._2
742738 let bC = cL._3
743739 let bt = cL._4
744740 let bH = a(Q(N, P))
745741 if ((bH == ""))
746742 then throw("This art doesn't match your account")
747743 else {
748744 let cE = a(aj(N, P))
749745 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
750746 then throw("Flagged artwork")
751747 else {
752748 let cM = o(("current_bidamount_" + P))
753749 if ((0 > bE))
754750 then throw("Negative end")
755751 else if (if ((bE > 0))
756752 then if ((cK != 1))
757753 then true
758754 else (bg != 0)
759755 else false)
760756 then throw("Timed offer only allowed for unique edition and offer only")
761757 else {
762758 let cN = if ((bE == 0))
763759 then 0
764760 else height
765761 if (!(be(aW)))
766762 then throw("Something went wrong!")
767763 else if (!(bf(aW, bg)))
768764 then throw("Something went wrong!")
769765 else {
770766 let aP = aF(N)
771767 if ((aP != ""))
772768 then throw(aP)
773769 else {
774770 let bJ = o(X(N, P))
775771 let bK = o(V(N, P))
776772 if ((cK > 100))
777773 then throw("100 editions max per artwork")
778774 else if (if ((bJ != 0))
779775 then (bJ == bK)
780776 else false)
781777 then throw("Max edition reached.")
782778 else if (if ((bJ > 0))
783779 then (bK != cK)
784780 else false)
785781 then throw("Cannot change maximum issuable anymore")
786782 else if (if ((cM > 0))
787783 then (bK != cK)
788784 else false)
789785 then throw("Cannot change maximum issuable with active orders")
790786 else {
791787 let ca = if (if ((bg > 0))
792788 then (cK > 0)
793789 else false)
794790 then true
795791 else false
796792 let ck = if (bt)
797793 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
798794 else nil
799795 ([BooleanEntry(Y(N, P), ca), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cK), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cN + bE))] ++ ck)
800796 }
801797 }
802798 }
803799 }
804800 }
805801 }
806802 }
807803
808804
809805
810806 @Callable(aR)
811807 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
812808
813809
814810
815811 @Callable(aR)
816812 func setBid (P,bx) = {
817813 let cO = bv(aR)
818814 let bB = cO._1
819815 let N = cO._2
820816 let bC = cO._3
821817 let cP = aQ(aR)
822818 let aS = cP._1
823819 let aT = cP._2
824820 let aW = if (!(isDefined(aS.assetId)))
825821 then "WAVES"
826822 else toBase58String(value(aS.assetId))
827823 let bE = o(ah(bx, P))
828824 if (if ((bE != 0))
829825 then (height >= bE)
830826 else false)
831827 then throw("Sale ended.")
832828 else {
833829 let cM = o(("current_bidamount_" + P))
834830 if (!(be(aW)))
835831 then throw("asset not accepted")
836832 else if (!(bf(aW, aT)))
837833 then throw("Wrong min sell")
838834 else {
839835 let bJ = o(X(bx, P))
840836 let bK = o(V(bx, P))
841837 if ((0 >= bK))
842838 then throw("No max edition set for this artwork")
843839 else if ((bJ >= bK))
844840 then throw("Sold out, you cannot bid")
845841 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
846842 }
847843 }
848844 }
849845
850846
851847
852848 @Callable(aR)
853849 func acceptBid (P,bx,by,bz,bs) = {
854850 let cQ = br(aR, bs)
855851 let bB = cQ._1
856852 let cR = cQ._2
857853 let bC = cQ._3
858854 let bt = cQ._4
859855 if ((cR != bx))
860856 then throw("You cannot do this action")
861857 else bw(aR, P, bx, by, bz, bs)
862858 }
863859
864860
865861
866862 @Callable(aR)
867863 func cancelBid (P,bx,by,bz) = {
868864 let cS = bv(aR)
869865 let bB = cS._1
870866 let N = cS._2
871867 let bC = cS._3
872868 if (if ((N != bz))
873869 then (N != bx)
874870 else false)
875871 then throw("You cannot do this action")
876872 else {
877873 let cT = if ((N == bx))
878874 then bz
879875 else N
880876 let cM = o(("current_bidamount_" + P))
881877 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
882878 let bn = a((bm + "_OPEN"))
883879 if ((bn == ""))
884880 then throw("Bid not found")
885881 else {
886882 let bo = split(bn, "_")
887883 let aW = bk(bo[0])
888884 let cU = "CANCELED"
889885 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
890886 }
891887 }
892888 }
893889
894890
895891 @Verifier(cV)
896892 func cW () = {
897893 let G = cV
898894 if ($isInstanceOf(G, "InvokeScriptTransaction"))
899895 then {
900896 let cX = G
901897 if (if (if (if ((cX.function == "addArtwork"))
902898 then (cX.dApp == this)
903899 else false)
904900 then (cX.fee == 500000)
905901 else false)
906902 then (cX.feeAssetId == unit)
907903 else false)
908904 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[13])))
909905 else if (if (if (if ((cX.function == "updateArtwork"))
910906 then (cX.dApp == this)
911907 else false)
912908 then (cX.fee == 500000)
913909 else false)
914910 then (cX.feeAssetId == unit)
915911 else false)
916912 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[12])))
917913 else if (if (if (if ((cX.function == "sellArtwork"))
918914 then (cX.dApp == this)
919915 else false)
920916 then (cX.fee == 500000)
921917 else false)
922918 then (cX.feeAssetId == unit)
923919 else false)
924920 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[5])))
925921 else if (if (if (if ((cX.function == "acceptBid"))
926922 then (cX.dApp == this)
927923 else false)
928924 then (cX.fee == 500000)
929925 else false)
930926 then (cX.feeAssetId == unit)
931927 else false)
932928 then sigVerify_128Kb(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[4])))
933929 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
934930 }
935931 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
936932 }
937933

github/deemru/w8io/873ac7e 
84.82 ms