tx · FkuTsD32pNZdaBBLGokWqL4FPdosVqonf1uzEfJsNME9

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 07:17 [2503596] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "FkuTsD32pNZdaBBLGokWqL4FPdosVqonf1uzEfJsNME9", "fee": 1900000, "feeAssetId": null, "timestamp": 1679631507062, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2NLBxvnTLjwj7CQc4iN3aVdtwQXs3XPEwgszjEj79KXVb11zpGue8gmcFHbWozewZZNAVRC564VLGYrFx4Vned3t" ], "script": "base64:BgL+FAgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0NDEzMTE0IgJpZCIEZGF0ZSIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ3NDAxNDkzMiIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDEwODIwMTgxIg0kdDAyMDI4MjIwMzUxIg92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwNjUwMjA3MzQiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjM3NjgyMzgzOCINJHQwMjM4NDgyMzkxNyIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU1NDQyNTU3OCINJHQwMjYwMTQyNjA0OCIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyODg4NDI4OTU0IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxMzM2MzEzNzYiDSR0MDMxMzgxMzE0MTciDSR0MDMyNjM3MzI3MDgiB2NhbGxlcjEiDSR0MDMyOTQzMzMwMDQiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAMJAAACBQJidAUCYnQEAU4DAwkAAAIJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwkAZgIFAmJ0AAAHCQClCAEJAKcIAQkA2QQBBQJicwkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwQCYnUDAwkBAiE9AgUCYnMCAAkAZgIFAmJ0AAAHCQD8BwQFAWgCCXVzZUZyZWVUeAkAzAgCCQClCAEJAKcIAQkA2QQBBQJicwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCYnUFAmJ1CQCWCgQJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQFAU4IBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBmAgUCYnQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYnYBAmFSAwkBASEBBQF2CQACAQUBdwkAlQoDCQDYBAEIBQJhUg10cmFuc2FjdGlvbklkCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAECYncGAmFSAVACYngCYnkCYnoCYnMEAmJBCQECYnICBQJhUgUCYnMEAmJCCAUCYkECXzEEAU4IBQJiQQJfMgQCYkMIBQJiQQJfMwQCYnQIBQJiQQJfNAMGCQACAQkArAICCQCsAgIJAKUDAQkAAAIFAU4FAmJ4AgMgLyAJAKUDAQUCYnQEAmJEAwMDCQAAAgUBTgUCYngJAQIhPQIFAmJ6AgAHCQECIT0CBQJieQIABwYHBAJiRQkBAW8BCQECYWgCBQFOBQFQAwMDCQECIT0CBQJiRQAACQBnAgUGaGVpZ2h0BQJiRQcJAQEhAQUCYkQHCQACAQILU2FsZSBlbmRlZC4EAmJGCQAAAgUBTgUCYngEAmJHCQEBbwECEHRvdGFsX25mdF9pc3N1ZWQEAUQJAQFhAQkBAVcCBQJieAUBUAQCYkgJAQFhAQkBAVECBQJieAUBUAMJAAACBQJiSAIACQACAQIRQXJ0IGRvZXNuJ3QgZXhpc3QEAmJJCQEBcQEJAQFZAgUCYngFAVAEAmJKCQEBbwEJAQFYAgUCYngFAVAEAmJjAwUCYkYJAGgCBQFCAAIJAQFvAQkBAmFnAgUCYngFAVAEAmJiAwUCYkYJANgEAQUBaQkBAWEBCQECYWkCBQJieAUBUAQCYksJAQFvAQkBAVYCBQJieAUBUAMDAwkBASEBBQJiRAkBASEBBQJiRgcDAwkAZwIAAAUCYmMGCQEBIQEFAmJJBgkAZwIAAAUCYksHCQACAQIQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBASEBBQJiRAUCYkYHCQBnAgAABQJiSwcJAAIBAhRNYXggaXNzdWFibGUgbm90IHNldAQCYVAJAQJhRgEFAmJ4AwMFAmJECQECIT0CBQJhUAIABwkAAgEFAmFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJiTAMFAmJECQECYmwBBQJibQkBAmJhAwUCYVIFAmJiBQJiYwQCYVQIBQJiTAJfMQQCYVcIBQJiTAJfMgQCYk0JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBZwkBAmFrAQUCYngFAWYEAmJOCQELdmFsdWVPckVsc2UCCQCaCAIFAWcJAQJhbQEFAmJ4AAAEAmJPCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhbgEFAmJ4BQFmBAJiUAkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW8BBQJieAAABAJiUQkBAXABBQJieAQCYlIDCQBmAgUCYlEFBmhlaWdodAAAAwkAAAIFAmFXBQFpBQFyBQFzBAJiUwkAawMFAmFUBQJiUgBkBAJiVAMDAwkBAiE9AgUCYk0FAWYJAGYCBQJiTgAABwkAZgIFBmhlaWdodAUCYlEHCQBrAwUCYVQFAmJOAJBOAAAEAmJVAwMDCQECIT0CBQJiTwUBZgkAZgIFAmJQAAAHCQBmAgUGaGVpZ2h0BQJiUQcJAGsDBQJhVAUCYlAAkE4AAAQCYlYJAGUCBQJhVAUCYlMDCQAAAgUCYkoFAmJLCQACAQIMQXJ0IHNvbGQgb3V0BAJiVwkAZAIFAmJKAAEEAmJYCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJQ3JlYXRvcjogBQJieAIKLAogQXJ0SUQ6IAUBUAILLAogU2lnbklEOiAFAUQCESwKIEFydHdvcmsgbmFtZTogBQJiSAIKLAogSXNzdWU6IAkApAMBBQJiVwIBLwkApAMBBQJiSwQCYlkJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFAmJHAAEFAmJYAAEAAAcEAmJaCQC4CAEFAmJZBAJjYQMDCQAAAgUCYlcFAmJLBgkBASEBBQJiSQcGBAJjYgMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJ6CAUCYVIGY2FsbGVyBAJjYwMJAQEhAQkBCWlzRGVmaW5lZAEFAmFXAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJhVwQCYm4JAQFhAQkArAICBQJibQIFX09QRU4EAmNkCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgQCY2UJAQtTdHJpbmdFbnRyeQIJAKwCAgUCYm0CB19DTE9TRUQJAKwCAgkArAICBQJibgIBXwkApAMBBQJiQwQCY2YJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJYXJ0X3NvbGRfCQCkAwEFAmJXAgRfb2ZfCQCkAwEFAmJLAgFfBQFQAgFfBQJieAQCY2cDCQEBIQEFAmJECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAU4CAV8JAKQDAQUCYkMCAV8FAmJCAgFfCQCkAwEFAmJjAgFfBQJiYgIBXwkA2AQBBQJiWgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFAmNiAgFfCQCkAwEFAmJDAgFfBQJiQgIBXwkApAMBBQJhVAIBXwUCY2MCAV8JANgEAQUCYloEAmNoCQELU3RyaW5nRW50cnkCBQJjZgUCY2cEAmNpAwkBAiE9AgUCYlQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgkAZQIFAmJTBQJiVAUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJNBQJiVAUCYVcFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgUCYlMFAmFXBQNuaWwEAmNqAwkBAiE9AgUCYlUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYk8FAmJVBQJhVwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYngJAGUCBQJiVgUCYlUFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4BQJiVgUCYVcFA25pbAQCY2sDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAQCY2wJAM4IAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUCYngFAVAFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQJiWgUCY2YJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQJiRwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWgCBQJieAUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAmJ4BQFQBQJjYQkAzAgCBQJiWQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjYgABBQJiWgUDbmlsBQJjaQUCY2oFAmNrAwUCYkQJAMwIAgUCY2gJAMwIAgUCY2UJAMwIAgUCY2QFAmNsCQDMCAIFAmNoBQJjbAECY20BAmNuBAFHBQJjbgMJAAECBQFHAgZTdHJpbmcEAmNvBQFHBQJjbwkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoCY3ABB3NldENvbmYCAWICY3EEAU4JAKUIAQgFAmNwBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4DCQEIY29udGFpbnMCBQFiAgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQFiBQJjcQUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAmFSAQphZGRBcnR3b3JrDgFGAUQCYUwCYU0CYU4CY3ICYXcCYUECYXgCYUICYXkCY3MCYU8CYnMEAmN0CQECYnICBQJhUgUCYnMEAVAIBQJjdAJfMQQBTggFAmN0Al8yBAJiQwgFAmN0Al8zBAJidAgFAmN0Al80AwkBASEBCQEBSwEFAUYJAAIBAiRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EAmN1CQECYUgCBQJheQUCYUIEAmFKCAUCY3UCXzEEAmFLCAUCY3UCXzIEAmN2CQECYUkKBQFOBQJhdwUCYXgFAmFKBQJhQQUCYUsFAmFMBQJhTQUCYU4FAmFPAwkBAiE9AgUCY3YCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCY3cJAGYCCQEBcAEJAKwCAgUBTgILX2ZyZWVfZHJvcHMAAAQCY3gDBQJjdwkAlAoCAAAFAUQJAQJhVQEFAmFSBAJhVAgFAmN4Al8xBAJhVwgFAmN4Al8yAwkBASEBCQEJaXNEZWZpbmVkAQUCYVQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQCY3kJAQFhAQkBAmF1AgUBRgUBTgMJAQIhPQIFAmN5AgAJAAIBAhRZb3UgYWxyZWFkeSBhZGRlZCBpdAQCY3oJAQFhAQkBAmFyAQUBRgMJAQIhPQIFAmN6AgAJAAIBAhdIYXNoIGFscmVhZHkgcmVnaXN0ZXJlZAQCY0EJAQFDAwUBRAUBTgUBRgMJAQEhAQUCY0EJAAIBAixTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBmb3IgdGhpcyBhZGRyZXNzLgQCY0IDBQJjdwkA/AcEBQFoAgt1c2VGcmVlRHJvcAkAzAgCBQFOBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjQgUCY0IEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXIBBQFGBQFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdQIFAUYFAU4FAVAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFPAgUBTgUBUAUCYkMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQFQBQJhTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgIFAU4FAVAFAmFNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAgUBTgUBUAUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQFQBQJheAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAU4FAVAFAmFBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUBUAUCYUsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUBUAUCYUoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUBTgUBUAUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgUBTgUBUAUCYU4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBTgUBUAUBRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQFOBQFQAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUBTgUBUAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFzAgUBTgUBRAUBUAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXACBQFOBQFQBQFGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAU4FAVAFAmNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQFQBQJhTwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgUCYVQFAWkFA25pbAUCY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVIBDXVwZGF0ZUFydHdvcmsNAmFxAmFMAmFNAmFOAmNyAmF3AmFBAmF4AmFCAmF5AmNzAmFPAmJzAwkBASEBBQF2CQACAQUBdwQCY0MJAQJicgIFAmFSBQJicwQCYkIIBQJjQwJfMQQBTggFAmNDAl8yBAJiQwgFAmNDAl8zBAJidAgFAmNDAl80BAJjRAkBAmFIAgUCYXkFAmFCBAJhSggFAmNEAl8xBAJhSwgFAmNEAl8yBAJjdgkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN2AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN5CQEBYQEJAQFRAgUBTgUCYXEDCQAAAgUCY3kCAAkAAgECD0VudHJ5IG5vdCBmb3VuZAQCY0UJAQFhAQkBAmFqAgUBTgUCYXEDCQAAAgUCY0UCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBAmFYAgUBTgUCYXEEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIFAU4FAmFxBQJhTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgIFAU4FAmFxBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAmFxBQJhdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAU4FAmFxBQJheAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAU4FAmFxBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQFOBQJhcQUCYUoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCBQFOBQJhcQUCYUsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgUBTgUCYXEFAmFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAmFxBQJjcgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQJhcQUCY3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZgIFAU4FAmFxBQJhTwUDbmlsBQJjawkAAgECDkFscmVhZHkgbWludGVkAmFSAQtmbGFnQXJ0d29yawQBUAJjRgJjRQJjRwQCY0gJAQJidgEFAmFSBAJiQggFAmNIAl8xBAFOCAUCY0gCXzIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIHQ09OU0VOVAkAzAgCAgAJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQJjRQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCBQJjRgUBUAUCY0UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgUCY0YFAVAFAmNHBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQJjRQkAAgECE1lvdSBhcmUgbm90IGFsbG93ZWQCYVIBDWRlbGV0ZUFydHdvcmsCAVACY0YEAmNJCQECYnYBBQJhUgQCYkIIBQJjSQJfMQQBTggFAmNJAl8yBAJhWQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4FAmNGBQFOBAJjeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEBYQEJAQFRAgUCYVkFAVACIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzAwkAAAIFAmN5AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRgkBAWEBCQECYXACBQJhWQUBUAMJAAACBQFGAgAJAAIBAiVObyBhcnQgaGFzaCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAFECQEBYQEJAQFXAgUCYVkFAVADCQAAAgUBRAIACQACAQITTm8gU0lHTiBJRCBtYXRjaGluZwQCY0oJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAU8CBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVMCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWMCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWICBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFXAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVgCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhagIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcgEFAUYJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFzAgUCYVkFAUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmF1AgUBRgUCYVkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFoAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFkAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFlAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFmAgUCYVkFAVAFA25pbAMJAQEhAQkBAmFYAgUCYVkFAVADCQEBIQEFAXYJAAIBBQF3BQJjSgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4FAmNKCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAJhUgELc2VsbEFydHdvcmsGAVACYmcCY0sCYVcCYkUCYnMEAmNMCQECYnICBQJhUgUCYnMEAmJCCAUCY0wCXzEEAU4IBQJjTAJfMgQCYkMIBQJjTAJfMwQCYnQIBQJjTAJfNAQCYkgJAQFhAQkBAVECBQFOBQFQAwkAAAIFAmJIAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQCY0UJAQFhAQkBAmFqAgUBTgUBUAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0UJAAIBAg9GbGFnZ2VkIGFydHdvcmsEAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkAZgIAAAUCYkUJAAIBAgxOZWdhdGl2ZSBlbmQDAwkAZgIFAmJFAAADCQECIT0CBQJjSwABBgkBAiE9AgUCYmcAAAcJAAIBAjpUaW1lZCBvZmZlciBvbmx5IGFsbG93ZWQgZm9yIHVuaXF1ZSBlZGl0aW9uIGFuZCBvZmZlciBvbmx5BAJjTgMJAAACBQJiRQAAAAAFBmhlaWdodAMJAQEhAQkBAmJlAQUCYVcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEDCQEBIQEJAQJiZgIFAmFXBQJiZwkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVAEAmJKCQEBbwEJAQFYAgUBTgUBUAQCYksJAQFvAQkBAVYCBQFOBQFQAwkAZgIFAmNLAGQJAAIBAhwxMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrAwMJAQIhPQIFAmJKAAAJAAACBQJiSgUCYksHCQACAQIUTWF4IGVkaXRpb24gcmVhY2hlZC4DAwkAZgIFAmJKAAAJAQIhPQIFAmJLBQJjSwcJAAIBAiZDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgYW55bW9yZQMDCQBmAgUCY00AAAkBAiE9AgUCYksFAmNLBwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMEAmNhAwMJAGYCBQJiZwAACQBmAgUCY0sAAAcGBwQCY2sDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAFAmNhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWcCBQFOBQFQBQJiZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQFOBQFQBQJjSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkCBQFOBQFQBQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUBTgUBUAkAZAIFAmNOBQJiRQUDbmlsBQJjawJhUgEKYnV5QXJ0d29yawIBUAJieAkBAmJ3BgUCYVIFAVAFAmJ4AgACAAIAAmFSAQZzZXRCaWQCAVACYngEAmNPCQECYnYBBQJhUgQCYkIIBQJjTwJfMQQBTggFAmNPAl8yBAJiQwgFAmNPAl8zBAJjUAkBAmFRAQUCYVIEAmFTCAUCY1ACXzEEAmFUCAUCY1ACXzIEAmFXAwkBASEBCQEJaXNEZWZpbmVkAQgFAmFTB2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBAJiRQkBAW8BCQECYWgCBQJieAUBUAMDCQECIT0CBQJiRQAACQBnAgUGaGVpZ2h0BQJiRQcJAAIBAgtTYWxlIGVuZGVkLgQCY00JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVADCQEBIQEJAQJiZQEFAmFXCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkBASEBCQECYmYCBQJhVwUCYVQJAAIBAg5Xcm9uZyBtaW4gc2VsbAQCYkoJAQFvAQkBAVgCBQJieAUBUAQCYksJAQFvAQkBAVYCBQJieAUBUAMJAGcCAAAFAmJLCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUCYkoFAmJLCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUBTgIBXwUCYkICBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIFAmFXAgFfCQCkAwEFAmFUAgFfCQCkAwEFAmJDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZAIFAmNNAAEFA25pbAJhUgEJYWNjZXB0QmlkBQFQAmJ4AmJ5AmJ6AmJzBAJjUQkBAmJyAgUCYVIFAmJzBAJiQggFAmNRAl8xBAJjUggFAmNRAl8yBAJiQwgFAmNRAl8zBAJidAgFAmNRAl80AwkBAiE9AgUCY1IFAmJ4CQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgkBAmJ3BgUCYVIFAVAFAmJ4BQJieQUCYnoFAmJzAmFSAQljYW5jZWxCaWQEAVACYngCYnkCYnoEAmNTCQECYnYBBQJhUgQCYkIIBQJjUwJfMQQBTggFAmNTAl8yBAJiQwgFAmNTAl8zAwMJAQIhPQIFAU4FAmJ6CQECIT0CBQFOBQJieAcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAJjVAMJAAACBQFOBQJieAUCYnoFAU4EAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgMJAAACBQJibgIACQACAQINQmlkIG5vdCBmb3VuZAQCYm8JALUJAgUCYm4CAV8EAmFXCQECYmsBCQCRAwIFAmJvAAAEAmNVAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUCYm0CAV8FAmNVCQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBlAgUCY00AAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCY1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBQJhVwUDbmlsAQJjVgECY1cABAFHBQJjVgMJAAECBQFHAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQCY1gFAUcDAwMDCQAAAggFAmNYCGZ1bmN0aW9uAgphZGRBcnR3b3JrCQAAAggFAmNYBGRBcHAFBHRoaXMHCQAAAggFAmNYA2ZlZQCgwh4HCQAAAggFAmNYCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNYBGFyZ3MADQMDAwMJAAACCAUCY1gIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUCY1gEZEFwcAUEdGhpcwcJAAACCAUCY1gDZmVlAKDCHgcJAAACCAUCY1gKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1gEYXJncwAMAwMDAwkAAAIIBQJjWAhmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUCY1gEZEFwcAUEdGhpcwcJAAACCAUCY1gDZmVlAKDCHgcJAAACCAUCY1gKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1gEYXJncwAFAwMDAwkAAAIIBQJjWAhmdW5jdGlvbgIJYWNjZXB0QmlkCQAAAggFAmNYBGRBcHAFBHRoaXMHCQAAAggFAmNYA2ZlZQCgwh4HCQAAAggFAmNYCmZlZUFzc2V0SWQFBHVuaXQHCQDIEwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNYBGFyZ3MABAkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAgFAmNWD3NlbmRlclB1YmxpY0tleQkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAgFAmNWD3NlbmRlclB1YmxpY0tlec+mlGY=", "height": 2503596, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F4ePAvJhj9mAsWMcfc8YpYFFiTVRfKRuVPDexPShyUwQ Next: ZcWuPVLVaCx4apnEpDD7yyM7QwGrUu2VCdxycmpRzMG Diff:
OldNewDifferences
386386 let bt = if ((bs != ""))
387387 then valueOrElse(p((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
388388 else 0
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- $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
389+ if ((bt == bt))
390+ then {
391+ let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
392+ then (bt > 0)
393+ else false)
394+ then toString(addressFromPublicKey(fromBase58String(bs)))
395+ else toBase58String(aR.caller.bytes)
396+ let bu = if (if ((bs != ""))
397+ then (bt > 0)
398+ else false)
399+ then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400+ else unit
401+ if ((bu == bu))
402+ then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403+ else throw("Strict value is not equal to itself.")
404+ }
405+ else throw("Strict value is not equal to itself.")
400406 }
401407
402408
411417 let N = bA._2
412418 let bC = bA._3
413419 let bt = bA._4
414- let bD = if (if (if ((N == bx))
415- then (bz != "")
416- else false)
417- then (by != "")
418- else false)
419- then true
420- else false
421- let bE = o(ah(N, P))
422- if (if (if ((bE != 0))
423- then (height >= bE)
424- else false)
425- then !(bD)
426- else false)
427- then throw("Sale ended.")
420+ if (true)
421+ then throw(((toString((N == bx)) + " / ") + toString(bt)))
428422 else {
429- let bF = (N == bx)
430- let bG = o("total_nft_issued")
431- let D = a(W(bx, P))
432- let bH = a(Q(bx, P))
433- if ((bH == ""))
434- then throw("Art doesn't exist")
423+ let bD = if (if (if ((N == bx))
424+ then (bz != "")
425+ else false)
426+ then (by != "")
427+ else false)
428+ then true
429+ else false
430+ let bE = o(ah(N, P))
431+ if (if (if ((bE != 0))
432+ then (height >= bE)
433+ else false)
434+ then !(bD)
435+ else false)
436+ then throw("Sale ended.")
435437 else {
436- let bI = q(Y(bx, P))
437- let bJ = o(X(bx, P))
438- let bc = if (bF)
439- then (B * 2)
440- else o(ag(bx, P))
441- let bb = if (bF)
442- then toBase58String(i)
443- else a(ai(bx, P))
444- let bK = o(V(bx, P))
445- if (if (if (!(bD))
446- then !(bF)
447- else false)
448- then if (if ((0 >= bc))
449- then true
450- else !(bI))
451- then true
452- else (0 >= bK)
453- else false)
454- then throw("Art not for sale")
455- else if (if (if (!(bD))
456- then bF
457- else false)
458- then (0 >= bK)
459- else false)
460- then throw("Max issuable not set")
461- else {
462- let aP = aF(bx)
463- if (if (bD)
464- then (aP != "")
438+ let bF = (N == bx)
439+ let bG = o("total_nft_issued")
440+ let D = a(W(bx, P))
441+ let bH = a(Q(bx, P))
442+ if ((bH == ""))
443+ then throw("Art doesn't exist")
444+ else {
445+ let bI = q(Y(bx, P))
446+ let bJ = o(X(bx, P))
447+ let bc = if (bF)
448+ then (B * 2)
449+ else o(ag(bx, P))
450+ let bb = if (bF)
451+ then toBase58String(i)
452+ else a(ai(bx, P))
453+ let bK = o(V(bx, P))
454+ if (if (if (!(bD))
455+ then !(bF)
456+ else false)
457+ then if (if ((0 >= bc))
458+ then true
459+ else !(bI))
460+ then true
461+ else (0 >= bK)
462+ else false)
463+ then throw("Art not for sale")
464+ else if (if (if (!(bD))
465+ then bF
465466 else false)
466- then throw(aP)
467+ then (0 >= bK)
468+ else false)
469+ then throw("Max issuable not set")
467470 else {
468- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
469- let bL = if (bD)
470- then bl(bm)
471- else ba(aR, bb, bc)
472- let aT = bL._1
473- let aW = bL._2
474- let bM = valueOrElse(getString(g, ak(bx)), f)
475- let bN = valueOrElse(getInteger(g, am(bx)), 0)
476- let bO = valueOrElse(getString(g, an(bx)), f)
477- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
478- let bQ = p(bx)
479- let bR = if ((bQ > height))
480- then 0
481- else if ((aW == i))
482- then r
483- else s
484- let bS = fraction(aT, bR, 100)
485- let bT = if (if (if ((bM != f))
486- then (bN > 0)
471+ let aP = aF(bx)
472+ if (if (bD)
473+ then (aP != "")
487474 else false)
488- then (height > bQ)
489- else false)
490- then fraction(aT, bN, 10000)
491- else 0
492- let bU = if (if (if ((bO != f))
493- then (bP > 0)
494- else false)
495- then (height > bQ)
496- else false)
497- then fraction(aT, bP, 10000)
498- else 0
499- let bV = (aT - bS)
500- if ((bJ == bK))
501- then throw("Art sold out")
475+ then throw(aP)
502476 else {
503- let bW = (bJ + 1)
504- let bX = ((((((((((("Creator: " + bx) + ",
477+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
478+ let bL = if (bD)
479+ then bl(bm)
480+ else ba(aR, bb, bc)
481+ let aT = bL._1
482+ let aW = bL._2
483+ let bM = valueOrElse(getString(g, ak(bx)), f)
484+ let bN = valueOrElse(getInteger(g, am(bx)), 0)
485+ let bO = valueOrElse(getString(g, an(bx)), f)
486+ let bP = valueOrElse(getInteger(g, ao(bx)), 0)
487+ let bQ = p(bx)
488+ let bR = if ((bQ > height))
489+ then 0
490+ else if ((aW == i))
491+ then r
492+ else s
493+ let bS = fraction(aT, bR, 100)
494+ let bT = if (if (if ((bM != f))
495+ then (bN > 0)
496+ else false)
497+ then (height > bQ)
498+ else false)
499+ then fraction(aT, bN, 10000)
500+ else 0
501+ let bU = if (if (if ((bO != f))
502+ then (bP > 0)
503+ else false)
504+ then (height > bQ)
505+ else false)
506+ then fraction(aT, bP, 10000)
507+ else 0
508+ let bV = (aT - bS)
509+ if ((bJ == bK))
510+ then throw("Art sold out")
511+ else {
512+ let bW = (bJ + 1)
513+ let bX = ((((((((((("Creator: " + bx) + ",
505514 ArtID: ") + P) + ",
506515 SignID: ") + D) + ",
507516 Artwork name: ") + bH) + ",
508517 Issue: ") + toString(bW)) + "/") + toString(bK))
509- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
510- let bZ = calculateAssetId(bY)
511- let ca = if (if ((bW == bK))
512- then true
513- else !(bI))
514- then false
515- else true
516- let cb = if (if (if ((N == bx))
517- then (bz != "")
518- else false)
519- then (by != "")
520- else false)
521- then addressFromStringValue(bz)
522- else aR.caller
523- let cc = if (!(isDefined(aW)))
524- then "WAVES"
525- else toBase58String(value(aW))
526- let bn = a((bm + "_OPEN"))
527- let cd = DeleteEntry((bm + "_OPEN"))
528- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
529- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
530- let cg = if (!(bD))
531- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
532- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
533- let ch = StringEntry(cf, cg)
534- let ci = if ((bT != 0))
535- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
536- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
537- let cj = if ((bU != 0))
538- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
539- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
540- let ck = if (bt)
541- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
542- else nil
543- 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)
544- if (bD)
545- then [ch, ce, cd] :: cl
546- else ch :: cl
518+ let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
519+ let bZ = calculateAssetId(bY)
520+ let ca = if (if ((bW == bK))
521+ then true
522+ else !(bI))
523+ then false
524+ else true
525+ let cb = if (if (if ((N == bx))
526+ then (bz != "")
527+ else false)
528+ then (by != "")
529+ else false)
530+ then addressFromStringValue(bz)
531+ else aR.caller
532+ let cc = if (!(isDefined(aW)))
533+ then "WAVES"
534+ else toBase58String(value(aW))
535+ let bn = a((bm + "_OPEN"))
536+ let cd = DeleteEntry((bm + "_OPEN"))
537+ let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
538+ let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
539+ let cg = if (!(bD))
540+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
541+ else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
542+ let ch = StringEntry(cf, cg)
543+ let ci = if ((bT != 0))
544+ then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
545+ else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
546+ let cj = if ((bU != 0))
547+ then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
548+ else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
549+ let ck = if (bt)
550+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
551+ else nil
552+ 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)
553+ if (bD)
554+ then [ch, ce, cd] :: cl
555+ else ch :: cl
556+ }
547557 }
548558 }
549- }
559+ }
550560 }
551561 }
552562 }
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- 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- $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
389+ if ((bt == bt))
390+ then {
391+ let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
392+ then (bt > 0)
393+ else false)
394+ then toString(addressFromPublicKey(fromBase58String(bs)))
395+ else toBase58String(aR.caller.bytes)
396+ let bu = if (if ((bs != ""))
397+ then (bt > 0)
398+ else false)
399+ then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400+ else unit
401+ if ((bu == bu))
402+ then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403+ else throw("Strict value is not equal to itself.")
404+ }
405+ else throw("Strict value is not equal to itself.")
400406 }
401407
402408
403409 func bv (aR) = if (!(v))
404410 then throw(w)
405411 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
406412
407413
408414 func bw (aR,P,bx,by,bz,bs) = {
409415 let bA = br(aR, bs)
410416 let bB = bA._1
411417 let N = bA._2
412418 let bC = bA._3
413419 let bt = bA._4
414- let bD = if (if (if ((N == bx))
415- then (bz != "")
416- else false)
417- then (by != "")
418- else false)
419- then true
420- else false
421- let bE = o(ah(N, P))
422- if (if (if ((bE != 0))
423- then (height >= bE)
424- else false)
425- then !(bD)
426- else false)
427- then throw("Sale ended.")
420+ if (true)
421+ then throw(((toString((N == bx)) + " / ") + toString(bt)))
428422 else {
429- let bF = (N == bx)
430- let bG = o("total_nft_issued")
431- let D = a(W(bx, P))
432- let bH = a(Q(bx, P))
433- if ((bH == ""))
434- then throw("Art doesn't exist")
423+ let bD = if (if (if ((N == bx))
424+ then (bz != "")
425+ else false)
426+ then (by != "")
427+ else false)
428+ then true
429+ else false
430+ let bE = o(ah(N, P))
431+ if (if (if ((bE != 0))
432+ then (height >= bE)
433+ else false)
434+ then !(bD)
435+ else false)
436+ then throw("Sale ended.")
435437 else {
436- let bI = q(Y(bx, P))
437- let bJ = o(X(bx, P))
438- let bc = if (bF)
439- then (B * 2)
440- else o(ag(bx, P))
441- let bb = if (bF)
442- then toBase58String(i)
443- else a(ai(bx, P))
444- let bK = o(V(bx, P))
445- if (if (if (!(bD))
446- then !(bF)
447- else false)
448- then if (if ((0 >= bc))
449- then true
450- else !(bI))
451- then true
452- else (0 >= bK)
453- else false)
454- then throw("Art not for sale")
455- else if (if (if (!(bD))
456- then bF
457- else false)
458- then (0 >= bK)
459- else false)
460- then throw("Max issuable not set")
461- else {
462- let aP = aF(bx)
463- if (if (bD)
464- then (aP != "")
438+ let bF = (N == bx)
439+ let bG = o("total_nft_issued")
440+ let D = a(W(bx, P))
441+ let bH = a(Q(bx, P))
442+ if ((bH == ""))
443+ then throw("Art doesn't exist")
444+ else {
445+ let bI = q(Y(bx, P))
446+ let bJ = o(X(bx, P))
447+ let bc = if (bF)
448+ then (B * 2)
449+ else o(ag(bx, P))
450+ let bb = if (bF)
451+ then toBase58String(i)
452+ else a(ai(bx, P))
453+ let bK = o(V(bx, P))
454+ if (if (if (!(bD))
455+ then !(bF)
456+ else false)
457+ then if (if ((0 >= bc))
458+ then true
459+ else !(bI))
460+ then true
461+ else (0 >= bK)
462+ else false)
463+ then throw("Art not for sale")
464+ else if (if (if (!(bD))
465+ then bF
465466 else false)
466- then throw(aP)
467+ then (0 >= bK)
468+ else false)
469+ then throw("Max issuable not set")
467470 else {
468- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
469- let bL = if (bD)
470- then bl(bm)
471- else ba(aR, bb, bc)
472- let aT = bL._1
473- let aW = bL._2
474- let bM = valueOrElse(getString(g, ak(bx)), f)
475- let bN = valueOrElse(getInteger(g, am(bx)), 0)
476- let bO = valueOrElse(getString(g, an(bx)), f)
477- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
478- let bQ = p(bx)
479- let bR = if ((bQ > height))
480- then 0
481- else if ((aW == i))
482- then r
483- else s
484- let bS = fraction(aT, bR, 100)
485- let bT = if (if (if ((bM != f))
486- then (bN > 0)
471+ let aP = aF(bx)
472+ if (if (bD)
473+ then (aP != "")
487474 else false)
488- then (height > bQ)
489- else false)
490- then fraction(aT, bN, 10000)
491- else 0
492- let bU = if (if (if ((bO != f))
493- then (bP > 0)
494- else false)
495- then (height > bQ)
496- else false)
497- then fraction(aT, bP, 10000)
498- else 0
499- let bV = (aT - bS)
500- if ((bJ == bK))
501- then throw("Art sold out")
475+ then throw(aP)
502476 else {
503- let bW = (bJ + 1)
504- let bX = ((((((((((("Creator: " + bx) + ",
477+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
478+ let bL = if (bD)
479+ then bl(bm)
480+ else ba(aR, bb, bc)
481+ let aT = bL._1
482+ let aW = bL._2
483+ let bM = valueOrElse(getString(g, ak(bx)), f)
484+ let bN = valueOrElse(getInteger(g, am(bx)), 0)
485+ let bO = valueOrElse(getString(g, an(bx)), f)
486+ let bP = valueOrElse(getInteger(g, ao(bx)), 0)
487+ let bQ = p(bx)
488+ let bR = if ((bQ > height))
489+ then 0
490+ else if ((aW == i))
491+ then r
492+ else s
493+ let bS = fraction(aT, bR, 100)
494+ let bT = if (if (if ((bM != f))
495+ then (bN > 0)
496+ else false)
497+ then (height > bQ)
498+ else false)
499+ then fraction(aT, bN, 10000)
500+ else 0
501+ let bU = if (if (if ((bO != f))
502+ then (bP > 0)
503+ else false)
504+ then (height > bQ)
505+ else false)
506+ then fraction(aT, bP, 10000)
507+ else 0
508+ let bV = (aT - bS)
509+ if ((bJ == bK))
510+ then throw("Art sold out")
511+ else {
512+ let bW = (bJ + 1)
513+ let bX = ((((((((((("Creator: " + bx) + ",
505514 ArtID: ") + P) + ",
506515 SignID: ") + D) + ",
507516 Artwork name: ") + bH) + ",
508517 Issue: ") + toString(bW)) + "/") + toString(bK))
509- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
510- let bZ = calculateAssetId(bY)
511- let ca = if (if ((bW == bK))
512- then true
513- else !(bI))
514- then false
515- else true
516- let cb = if (if (if ((N == bx))
517- then (bz != "")
518- else false)
519- then (by != "")
520- else false)
521- then addressFromStringValue(bz)
522- else aR.caller
523- let cc = if (!(isDefined(aW)))
524- then "WAVES"
525- else toBase58String(value(aW))
526- let bn = a((bm + "_OPEN"))
527- let cd = DeleteEntry((bm + "_OPEN"))
528- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
529- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
530- let cg = if (!(bD))
531- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
532- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
533- let ch = StringEntry(cf, cg)
534- let ci = if ((bT != 0))
535- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
536- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
537- let cj = if ((bU != 0))
538- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
539- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
540- let ck = if (bt)
541- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
542- else nil
543- 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)
544- if (bD)
545- then [ch, ce, cd] :: cl
546- else ch :: cl
518+ let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
519+ let bZ = calculateAssetId(bY)
520+ let ca = if (if ((bW == bK))
521+ then true
522+ else !(bI))
523+ then false
524+ else true
525+ let cb = if (if (if ((N == bx))
526+ then (bz != "")
527+ else false)
528+ then (by != "")
529+ else false)
530+ then addressFromStringValue(bz)
531+ else aR.caller
532+ let cc = if (!(isDefined(aW)))
533+ then "WAVES"
534+ else toBase58String(value(aW))
535+ let bn = a((bm + "_OPEN"))
536+ let cd = DeleteEntry((bm + "_OPEN"))
537+ let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
538+ let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
539+ let cg = if (!(bD))
540+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
541+ else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
542+ let ch = StringEntry(cf, cg)
543+ let ci = if ((bT != 0))
544+ then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
545+ else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
546+ let cj = if ((bU != 0))
547+ then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
548+ else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
549+ let ck = if (bt)
550+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
551+ else nil
552+ 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)
553+ if (bD)
554+ then [ch, ce, cd] :: cl
555+ else ch :: cl
556+ }
547557 }
548558 }
549- }
559+ }
550560 }
551561 }
552562 }
553563
554564
555565 func cm (cn) = {
556566 let G = cn
557567 if ($isInstanceOf(G, "String"))
558568 then {
559569 let co = G
560570 co
561571 }
562572 else throw("Sponsored Public Key String expected")
563573 }
564574
565575
566576 @Callable(cp)
567577 func setConf (b,cq) = {
568578 let N = toString(cp.caller)
569579 if (containsElement([m, toString(this)], N))
570580 then if (contains(b, "conf_"))
571581 then [StringEntry(b, cq)]
572582 else throw("Entries starting with conf_ only")
573583 else throw("You are not allowed to change this")
574584 }
575585
576586
577587
578588 @Callable(aR)
579589 func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
580590 let ct = br(aR, bs)
581591 let P = ct._1
582592 let N = ct._2
583593 let bC = ct._3
584594 let bt = ct._4
585595 if (!(K(F)))
586596 then throw("Hash should be 64 characters maximum")
587597 else {
588598 let cu = aH(ay, aB)
589599 let aJ = cu._1
590600 let aK = cu._2
591601 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
592602 if ((cv != ""))
593603 then throw("Something went wrong!")
594604 else {
595605 let cw = (p((N + "_free_drops")) > 0)
596606 let cx = if (cw)
597607 then $Tuple2(0, D)
598608 else aU(aR)
599609 let aT = cx._1
600610 let aW = cx._2
601611 if (!(isDefined(aT)))
602612 then throw("Something went wrong")
603613 else {
604614 let cy = a(au(F, N))
605615 if ((cy != ""))
606616 then throw("You already added it")
607617 else {
608618 let cz = a(ar(F))
609619 if ((cz != ""))
610620 then throw("Hash already registered")
611621 else {
612622 let cA = C(D, N, F)
613623 if (!(cA))
614624 then throw("Sign Certificate not found for this address.")
615625 else {
616626 let cB = if (cw)
617627 then invoke(h, "useFreeDrop", [N], nil)
618628 else unit
619629 if ((cB == cB))
620630 then {
621631 let ck = if (bt)
622632 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
623633 else nil
624634 ([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)
625635 }
626636 else throw("Strict value is not equal to itself.")
627637 }
628638 }
629639 }
630640 }
631641 }
632642 }
633643 }
634644
635645
636646
637647 @Callable(aR)
638648 func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
639649 then throw(w)
640650 else {
641651 let cC = br(aR, bs)
642652 let bB = cC._1
643653 let N = cC._2
644654 let bC = cC._3
645655 let bt = cC._4
646656 let cD = aH(ay, aB)
647657 let aJ = cD._1
648658 let aK = cD._2
649659 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
650660 if ((cv != ""))
651661 then throw("Something went wrong!")
652662 else {
653663 let cy = a(Q(N, aq))
654664 if ((cy == ""))
655665 then throw("Entry not found")
656666 else {
657667 let cE = a(aj(N, aq))
658668 if ((cE == "ILLEGAL"))
659669 then throw("Cannot update ILLEGAL artwork")
660670 else if (!(aX(N, aq)))
661671 then {
662672 let ck = if (bt)
663673 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
664674 else nil
665675 ([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)
666676 }
667677 else throw("Already minted")
668678 }
669679 }
670680 }
671681
672682
673683
674684 @Callable(aR)
675685 func flagArtwork (P,cF,cE,cG) = {
676686 let cH = bv(aR)
677687 let bB = cH._1
678688 let N = cH._2
679689 if (containsElement([m, toString(this)], N))
680690 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
681691 then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
682692 else throw(("Unknow status " + cE))
683693 else throw("You are not allowed")
684694 }
685695
686696
687697
688698 @Callable(aR)
689699 func deleteArtwork (P,cF) = {
690700 let cI = bv(aR)
691701 let bB = cI._1
692702 let N = cI._2
693703 let aY = if (containsElement([m, toString(this)], N))
694704 then cF
695705 else N
696706 let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
697707 if ((cy == ""))
698708 then throw("No art matching for this address")
699709 else {
700710 let F = a(ap(aY, P))
701711 if ((F == ""))
702712 then throw("No art hash matching for this address")
703713 else {
704714 let D = a(W(aY, P))
705715 if ((D == ""))
706716 then throw("No SIGN ID matching")
707717 else {
708718 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))]
709719 if (!(aX(aY, P)))
710720 then if (!(v))
711721 then throw(w)
712722 else cJ
713723 else if (containsElement([m, toString(this)], N))
714724 then cJ
715725 else throw("Art already minted, you cannot delete it")
716726 }
717727 }
718728 }
719729 }
720730
721731
722732
723733 @Callable(aR)
724734 func sellArtwork (P,bg,cK,aW,bE,bs) = {
725735 let cL = br(aR, bs)
726736 let bB = cL._1
727737 let N = cL._2
728738 let bC = cL._3
729739 let bt = cL._4
730740 let bH = a(Q(N, P))
731741 if ((bH == ""))
732742 then throw("This art doesn't match your account")
733743 else {
734744 let cE = a(aj(N, P))
735745 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
736746 then throw("Flagged artwork")
737747 else {
738748 let cM = o(("current_bidamount_" + P))
739749 if ((0 > bE))
740750 then throw("Negative end")
741751 else if (if ((bE > 0))
742752 then if ((cK != 1))
743753 then true
744754 else (bg != 0)
745755 else false)
746756 then throw("Timed offer only allowed for unique edition and offer only")
747757 else {
748758 let cN = if ((bE == 0))
749759 then 0
750760 else height
751761 if (!(be(aW)))
752762 then throw("Something went wrong!")
753763 else if (!(bf(aW, bg)))
754764 then throw("Something went wrong!")
755765 else {
756766 let aP = aF(N)
757767 if ((aP != ""))
758768 then throw(aP)
759769 else {
760770 let bJ = o(X(N, P))
761771 let bK = o(V(N, P))
762772 if ((cK > 100))
763773 then throw("100 editions max per artwork")
764774 else if (if ((bJ != 0))
765775 then (bJ == bK)
766776 else false)
767777 then throw("Max edition reached.")
768778 else if (if ((bJ > 0))
769779 then (bK != cK)
770780 else false)
771781 then throw("Cannot change maximum issuable anymore")
772782 else if (if ((cM > 0))
773783 then (bK != cK)
774784 else false)
775785 then throw("Cannot change maximum issuable with active orders")
776786 else {
777787 let ca = if (if ((bg > 0))
778788 then (cK > 0)
779789 else false)
780790 then true
781791 else false
782792 let ck = if (bt)
783793 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
784794 else nil
785795 ([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)
786796 }
787797 }
788798 }
789799 }
790800 }
791801 }
792802 }
793803
794804
795805
796806 @Callable(aR)
797807 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
798808
799809
800810
801811 @Callable(aR)
802812 func setBid (P,bx) = {
803813 let cO = bv(aR)
804814 let bB = cO._1
805815 let N = cO._2
806816 let bC = cO._3
807817 let cP = aQ(aR)
808818 let aS = cP._1
809819 let aT = cP._2
810820 let aW = if (!(isDefined(aS.assetId)))
811821 then "WAVES"
812822 else toBase58String(value(aS.assetId))
813823 let bE = o(ah(bx, P))
814824 if (if ((bE != 0))
815825 then (height >= bE)
816826 else false)
817827 then throw("Sale ended.")
818828 else {
819829 let cM = o(("current_bidamount_" + P))
820830 if (!(be(aW)))
821831 then throw("asset not accepted")
822832 else if (!(bf(aW, aT)))
823833 then throw("Wrong min sell")
824834 else {
825835 let bJ = o(X(bx, P))
826836 let bK = o(V(bx, P))
827837 if ((0 >= bK))
828838 then throw("No max edition set for this artwork")
829839 else if ((bJ >= bK))
830840 then throw("Sold out, you cannot bid")
831841 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
832842 }
833843 }
834844 }
835845
836846
837847
838848 @Callable(aR)
839849 func acceptBid (P,bx,by,bz,bs) = {
840850 let cQ = br(aR, bs)
841851 let bB = cQ._1
842852 let cR = cQ._2
843853 let bC = cQ._3
844854 let bt = cQ._4
845855 if ((cR != bx))
846856 then throw("You cannot do this action")
847857 else bw(aR, P, bx, by, bz, bs)
848858 }
849859
850860
851861
852862 @Callable(aR)
853863 func cancelBid (P,bx,by,bz) = {
854864 let cS = bv(aR)
855865 let bB = cS._1
856866 let N = cS._2
857867 let bC = cS._3
858868 if (if ((N != bz))
859869 then (N != bx)
860870 else false)
861871 then throw("You cannot do this action")
862872 else {
863873 let cT = if ((N == bx))
864874 then bz
865875 else N
866876 let cM = o(("current_bidamount_" + P))
867877 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
868878 let bn = a((bm + "_OPEN"))
869879 if ((bn == ""))
870880 then throw("Bid not found")
871881 else {
872882 let bo = split(bn, "_")
873883 let aW = bk(bo[0])
874884 let cU = "CANCELED"
875885 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
876886 }
877887 }
878888 }
879889
880890
881891 @Verifier(cV)
882892 func cW () = {
883893 let G = cV
884894 if ($isInstanceOf(G, "InvokeScriptTransaction"))
885895 then {
886896 let cX = G
887897 if (if (if (if ((cX.function == "addArtwork"))
888898 then (cX.dApp == this)
889899 else false)
890900 then (cX.fee == 500000)
891901 else false)
892902 then (cX.feeAssetId == unit)
893903 else false)
894904 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[13])))
895905 else if (if (if (if ((cX.function == "updateArtwork"))
896906 then (cX.dApp == this)
897907 else false)
898908 then (cX.fee == 500000)
899909 else false)
900910 then (cX.feeAssetId == unit)
901911 else false)
902912 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[12])))
903913 else if (if (if (if ((cX.function == "sellArtwork"))
904914 then (cX.dApp == this)
905915 else false)
906916 then (cX.fee == 500000)
907917 else false)
908918 then (cX.feeAssetId == unit)
909919 else false)
910920 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[5])))
911921 else if (if (if (if ((cX.function == "acceptBid"))
912922 then (cX.dApp == this)
913923 else false)
914924 then (cX.fee == 500000)
915925 else false)
916926 then (cX.feeAssetId == unit)
917927 else false)
918928 then sigVerify_128Kb(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[4])))
919929 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
920930 }
921931 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
922932 }
923933

github/deemru/w8io/169f3d6 
105.59 ms