tx · DhPV23pWXM8vnz9PnysqScoETuxGN33m2zMmZbPEsujm

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02500000 Waves

2023.01.20 07:07 [2412765] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "DhPV23pWXM8vnz9PnysqScoETuxGN33m2zMmZbPEsujm", "fee": 2500000, "feeAssetId": null, "timestamp": 1674187671172, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "3xxo2YFM9g57NWFfiouZNJ9VdD5hL3UvRPZapFUMhoVanmaqyhvJMogoZaWTB8WByRM13WjCxzFQDQ3uJqY7H3v3" ], "script": "base64:BgJfCAISBAoCCAgSEAoOCAgICAgICAgICAgIAQgSDwoNCAgICAgICAgICAgBCBIGCgQICAgIEgQKAggIEggKBggBAQgBCBIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAhOAAdWRVJTSU9OAgYxLjEuMTABDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgAACHVuaXRUZXN0BwAJb3JhY2xlRmVlCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECD2NvbmZfb3JhY2xlX2ZlZQAIc2lnbkRhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9zaWdud2ViX2RhcHAAC2ZlZVJlY2VpdmVyCQEOZ2V0U3RyaW5nQnlLZXkBAhFjb25mX2ZlZV9yZWNlaXZlcgAIdXNlckRhcHADBQh1bml0VGVzdAkBBXZhbHVlAQkApggBAiMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX3VzZXJzX2RhcHAADXdoaXRlbGlzdERhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQITY29uZl93aGl0ZWxpc3RfZGFwcAALc2lnbkFzc2V0SWQJANkEAQkBDmdldFN0cmluZ0J5S2V5AQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAt1c2RuQXNzZXRJZAkA2QQBCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRE4AC3VzZHRBc3NldElkCQDZBAEJAQ5nZXRTdHJpbmdCeUtleQECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEVAAMd2F2ZXNBc3NldElkAQAABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAHc2lnbkN1dAAHAAt1c2RuV2F2ZUN1dAAKAA5kZWZhdWx0TGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9kZWZhdWx0X2xpY2VuY2UAEmRlZmF1bHRIYXNoTGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIZY29uZl9kZWZhdWx0X2xpY2VuY2VfaGFzaAALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAALdXNlckFsbG93ZWQCB0FMTE9XRUQAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAhJjZXJ0aWZpY2F0aW9uX2ZlZV8JANgEAQULc2lnbkFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBFGNoZWNrU2lnbkNlcnRpZmljYXRlAwZzaWduSUQFT3duZXIKc2hhMjU2SGFzaAQHJG1hdGNoMAkAnQgCBQhzaWduRGFwcAkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FBnNpZ25JRAIBXwUFT3duZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkBCGNvbnRhaW5zAgUBYQUKc2hhMjU2SGFzaAYHBwELdmFsaWRhdGVDSUQBA2NpZAMJAQhjb250YWlucwIFA2NpZAIBLwMDCQBmAgBMCQCxAgEFA2NpZAkAAAIJALECAQkAkQMCCQC1CQIFA2NpZAIBLwAAADsHCQBmAgAQCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAQcHAQx2YWxpZGF0ZUhhc2gBBGhhc2gJAAACCQCxAgEFBGhhc2gAQAENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyAQdrZXlEYXRlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5TmFtZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleURlc2MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlEaXNwbGF5Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDWtleUV4cG9ydEhhc2gCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5RXhwb3J0Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICD2FydF9leHBvcnRfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5TWF4TWludAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfbWF4bWludF8FBWFydElkAgFfBQZjYWxsZXIBCWtleVNpZ25JRAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfc2lnbmlkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5SXNzdWVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlPblNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X29uc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBDmtleUxpY2VuY2VIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlMaWNlbmNlQ2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9saWNlbmNlX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleVRhZ3MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3RhZ3NfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUeXBlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5Tm90ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbm90ZV8FBWFydElkAgFfBQZjYWxsZXIBCmtleUNyYXdsZXICBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2NyYXdsZXJfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5Um95YWx0aWVzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDmFydF9yb3lhbHRpZXNfBQVhcnRJZAIBXwUGY2FsbGVyAQhrZXlQcmljZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgphcnRfcHJpY2VfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlFbmRTYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDGFydF9lbmRzYWxlXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXNzZXRJZEFjY2VwdGVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEmFydF9hc3NldEFjY2VwdGVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5RmxhZwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZmxhZ18FBWFydElkAgFfBQZjYWxsZXIBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyAQ9rZXlQcmltYXJ5U2hhcmUBCmFydGlzdEFkZHIJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARFrZXlIYXNoQnlUeGlkQWRkcgIGY2FsbGVyBHR4aWQJAKwCAgkArAICCQCsAgICE2dldF9oYXNoYnl0eGlkYWRkcl8FBHR4aWQCAV8FBmNhbGxlcgEOa2V5T3duZXJCeUhhc2gBCnNoYTI1Nkhhc2gJAKwCAgISZ2V0X293bmVyX2J5X2hhc2hfBQpzaGEyNTZIYXNoAQ1rZXlpZEJ5U2lnbmlkAgZjYWxsZXIGc2lnbklkCQCsAgIJAKwCAgkArAICAhJnZXRfYXJ0aWRieXNpZ25pZF8FBnNpZ25JZAIBXwUGY2FsbGVyARJrZXlUeGlkQnlIYXNoT3duZXICCnNoYTI1Nkhhc2gGY2FsbGVyCQCsAgICF2dldF90eGlkX2J5X2hhc2hfb3duZXJfCQDYBAEJANQWAQkAmwMBCQCsAgIFCnNoYTI1Nkhhc2gFBmNhbGxlcgEOdmFsaWRhdGVBbGxDSUQDCmNpZERpc3BsYXkJY2lkRXhwb3J0CmNpZExpY2VuY2UDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZERpc3BsYXkJAAIBAhFXcm9uZyBEaXNwbGF5IENJRAMJAQEhAQkBC3ZhbGlkYXRlQ0lEAQUJY2lkRXhwb3J0CQACAQIQV3JvbmcgRXhwb3J0IENJRAMDCQECIT0CBQpjaWRMaWNlbmNlAgAJAQEhAQkBC3ZhbGlkYXRlQ0lEAQUKY2lkTGljZW5jZQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBD3ZhbGlkYXRlQWxsSGFzaAIMc2hhMjU2RXhwb3J0DXNoYTI1NkxpY2VuY2UDCQEBIQEJAQx2YWxpZGF0ZUhhc2gBBQxzaGEyNTZFeHBvcnQJAAIBAhhFeHBvcnQgSGFzaCA2NCBjaGFyLiBtYXgDCQEBIQEJAQx2YWxpZGF0ZUhhc2gBBQ1zaGEyNTZMaWNlbmNlCQACAQIZTGljZW5jZSBIYXNoIDY0IGNoYXIuIG1heAYBDnZhbGlkYXRlU3RyaW5nAgNzdHIDbWF4AwkAAAIJALECAQUDc3RyAAAJAAIBAhhGaWVsZCBjYW5ub3QgYmUgaXMgZW1wdHkDCQBmAgkAsQIBBQNzdHIFA21heAkAAgEJAKwCAgUDc3RyAgwgaXMgdG9vIGxvbmcGAQx2YWxpZGF0ZVVzZXIBBmNhbGxlcgQKdXNlclN0YXR1cwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBDWtleVVzZXJTdGF0dXMBBQZjYWxsZXIFEHVzZXJVbnJlZ2lzdGVyZWQDAwkAAAIFCnVzZXJTdGF0dXMFEHVzZXJVbnJlZ2lzdGVyZWQGCQAAAgUKdXNlclN0YXR1cwULdXNlckFsbG93ZWQCLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUKdXNlclN0YXR1cwUNdXNlclN1c3BlbmRlZAIRQWNjb3VudCBzdXNwZW5kZWQDCQAAAgUKdXNlclN0YXR1cwULdXNlclJlbW92ZWQCD0FjY291bnQgcmVtb3ZlZAIAAQpzZXRMSWNlbmNlAgpjaWRMaWNlbmNlDXNoYTI1NkxpY2VuY2UEA2NpZAMJAAACCQCxAgEFCmNpZExpY2VuY2UAAAUOZGVmYXVsdExpY2VuY2UFCmNpZExpY2VuY2UEBGhhc2gDCQAAAgkAsQIBBQ1zaGEyNTZMaWNlbmNlAAAFEmRlZmF1bHRIYXNoTGljZW5jZQUNc2hhMjU2TGljZW5jZQkAlAoCBQNjaWQFBGhhc2gBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBmNhbGxlcgpjaWREaXNwbGF5CWNpZEV4cG9ydApsaWNlbmNlQ0lEDHNoYTI1NkV4cG9ydAtsaWNlbmNlSGFzaARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MJcm95YWx0aWVzBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAAACCQCxAgEFCmNpZERpc3BsYXkAAAkAAgECG0Rpc3BsYXkgQ0lEIGNhbm5vdCBiZSBlbXB0eQMJAQEhAQkBDnZhbGlkYXRlQWxsQ0lEAwUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lECQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBD3ZhbGlkYXRlQWxsSGFzaAIFDHNoYTI1NkV4cG9ydAULbGljZW5jZUhhc2gJAAIBAhNQcm9ibGVtIHdpdGggSGFzaGVzAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQRuYW1lAGQJAAIBAhIxMDAgQ2hhci4gbWF4IG5hbWUDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFC2Rlc2NyaXB0aW9uAOgHCQACAQIaMTAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DAwkAZgIAAAUJcm95YWx0aWVzBgkAZgIFCXJveWFsdGllcwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUEdGFncwIBLAAFCQACAQILNSB0YWdzIG1heC4CAAEJaXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQJAJQKAgUHcGF5bWVudAUGYW1vdW50AQ92YWxpZGF0ZVBheW1lbnQBAWkECyR0MDg5MDc4OTQzCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFCyR0MDg5MDc4OTQzAl8xBAZhbW91bnQIBQskdDA4OTA3ODk0MwJfMgQHYXNzZXRJZAMDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkAAAIIBQdwYXltZW50B2Fzc2V0SWQFC3NpZ25Bc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECK09ubHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhcyB0cmFuc2FjdGlvbiBmZWUDCQECIT0CBQZhbW91bnQFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBAskdDA5NTMxOTU2NwkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQskdDA5NTMxOTU2NwJfMQQGYW1vdW50CAULJHQwOTUzMTk1NjcCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFB2Fzc2V0SWQFBHVuaXQJAQIhPQIFDHByaWNlQXNzZXRJZAIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBAhNQYXltZW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMDAwMDCQECIT0CBQdhc3NldElkCQDYBAEFC3NpZ25Bc3NldElkCQECIT0CBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAcJAQIhPQIFB2Fzc2V0SWQCBVdBVkVTBwkBAiE9AgUHYXNzZXRJZAkA2AQBBQt1c2RuQXNzZXRJZAcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQ92YWxpZGF0ZU1pblNlbGwCB2Fzc2V0SWQFcHJpY2UEDG1pblNlbGxXYXZlcwMFCHVuaXRUZXN0AAoJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQIOd2F2ZXNfbWluX3NlbGwEC21pblNlbGxVc2RuAMCEPQQLbWluU2VsbFNpZ24DBQh1bml0VGVzdAABCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACAwMDAwMDCQAAAgUHYXNzZXRJZAkA2AQBBQt1c2RuQXNzZXRJZAkAZgIFC21pblNlbGxVc2RuBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHBgMDCQAAAgUHYXNzZXRJZAkA2AQBBQt1c2R0QXNzZXRJZAkAZgIFC21pblNlbGxVc2RuBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHBgMDCQAAAgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkAZgIFC21pblNlbGxTaWduBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHBgMDAwkAAAIFB2Fzc2V0SWQJANgEAQUMd2F2ZXNBc3NldElkBgkAAAIFB2Fzc2V0SWQCBVdBVkVTCQBmAgUMbWluU2VsbFdhdmVzBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQpiaWREYXRhS2V5BAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQJYmlkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBApiaWRBc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAAAwkAZwIAAAUJYmlkQW1vdW50CQACAQIMV3JvbmcgYW1vdW50CQCUCgIFCWJpZEFtb3VudAUKYmlkQXNzZXRJZAEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgFpBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQLaXNTcG9uc29yZWQJAQt2YWx1ZU9yRWxzZQIJAQ5jaGVja1doaXRlbGlzdAEJAKwCAgkApQgBCQCnCAEJANkEAQUGcHViS2V5AglfZnJlZV90eHMAAAQGY2FsbGVyAwMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAHCQBmAgULaXNTcG9uc29yZWQAAAcJAKUIAQkApwgBCQDZBAEFBnB1YktleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNnZXRfc3BvbnNvcmVkX3dhdmVzAwkBAiE9AgUGcHViS2V5AgAJAPwHBAUNd2hpdGVsaXN0RGFwcAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFBnB1YktleQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUTZ2V0X3Nwb25zb3JlZF93YXZlcwUTZ2V0X3Nwb25zb3JlZF93YXZlcwkAlgoECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFBmNhbGxlcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGYCBQtpc1Nwb25zb3JlZAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQdidXlNaW50BQFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMTI5MTkxMjk3OAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTI5MTkxMjk3OAJfMQQGY2FsbGVyCAUNJHQwMTI5MTkxMjk3OAJfMgQEZGF0ZQgFDSR0MDEyOTE5MTI5NzgCXzMEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEBnNpZ25JRAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFBmlzc3VlcgUFYXJ0SWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleVByaWNlAgUGaXNzdWVyBQVhcnRJZAQMcHJpY2VBc3NldElkAwUOY2FsbGVySXNJc3N1ZXIJANgEAQULc2lnbkFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTQ2ODExNDg0OAMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNDY4MTE0ODQ4Al8xBAdhc3NldElkCAUNJHQwMTQ2ODExNDg0OAJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEPa2V5UHJpbWFyeVNoYXJlAQUGaXNzdWVyAAAEDWlzV2hpdGVsaXN0ZWQJAQ5jaGVja1doaXRlbGlzdAEFBmlzc3VlcgQDY3V0AwkAZgIFDWlzV2hpdGVsaXN0ZWQFBmhlaWdodAAAAwkAAAIFB2Fzc2V0SWQFC3NpZ25Bc3NldElkBQdzaWduQ3V0BQt1c2RuV2F2ZUN1dAQNYW1vdW50Rm9yU2lnbgkAawMFBmFtb3VudAUDY3V0AGQEDmFtb3VudEZvckFnZW50AwMDCQECIT0CBQVhZ2VudAULZmVlUmVjZWl2ZXIJAGYCBQphZ2VudFNoYXJlAAAHCQBmAgUGaGVpZ2h0BQ1pc1doaXRlbGlzdGVkBwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQBkAAAEEGFtb3VudEZvckNyZWF0b3IJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24DCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDEFydCBzb2xkIG91dAQNbmV3QW1vdW50U29sZAkAZAIFCmFtb3VudFNvbGQAAQQJaXNzdWVNZXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJQ3JlYXRvcjogBQZpc3N1ZXICCiwKIEFydElEOiAFBWFydElkAgssCiBTaWduSUQ6IAUGc2lnbklEAhEsCiBBcnR3b3JrIG5hbWU6IAULYXJ0d29ya05hbWUCCiwKIElzc3VlOiAJAKQDAQUNbmV3QW1vdW50U29sZAIBLwkApAMBBQptYXhDYW5TZWxsBAhpc3N1ZU5GVAkAwggFCQCsAgICA1NBXwkApAMBCQBkAgUIdG90YWxORlQAAQUJaXNzdWVNZXRhAAEAAAcEBWlkTkZUCQC4CAEFCGlzc3VlTkZUBApzZWxsU3RhdHVzAwMJAAACBQ1uZXdBbW91bnRTb2xkBQptYXhDYW5TZWxsBgkBASEBBQhpc09uU2FsZQcGBApyZWNlaXZlTkZUAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwkBEUBleHRyTmF0aXZlKDEwNjIpAQUIYmlkT3duZXIIBQFpBmNhbGxlcgQKYXNzZXRJZEJpZAMJAQEhAQkBCWlzRGVmaW5lZAEFB2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZERlbE9sZAkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgQJYmlkVXBkYXRlCQELU3RyaW5nRW50cnkCCQCsAgIFCmJpZERhdGFLZXkCB19DTE9TRUQJAKwCAgkArAICBQdiaWREYXRhAgFfCQCkAwEFBGRhdGUEB3NvbGRLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJYXJ0X3NvbGRfCQCkAwEFDW5ld0Ftb3VudFNvbGQCBF9vZl8JAKQDAQUKbWF4Q2FuU2VsbAIBXwUFYXJ0SWQCAV8FBmlzc3VlcgQJc29sZFZhbHVlAwkBASEBBQVpc0JpZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQZjYWxsZXICAV8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8JAKQDAQUMYXJ0d29ya1ByaWNlAgFfBQxwcmljZUFzc2V0SWQCAV8JANgEAQUFaWRORlQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQpyZWNlaXZlTkZUAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFBmFtb3VudAIBXwUKYXNzZXRJZEJpZAIBXwkA2AQBBQVpZE5GVAQIc29sZERhdGEJAQtTdHJpbmdFbnRyeQIFB3NvbGRLZXkFCXNvbGRWYWx1ZQQLY29tbWlzc2lvbnMDCQECIT0CBQ5hbW91bnRGb3JBZ2VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQVhZ2VudAUOYW1vdW50Rm9yQWdlbnQFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIFDWFtb3VudEZvclNpZ24FB2Fzc2V0SWQFA25pbAQGYnV5UmVzCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBQ1uZXdBbW91bnRTb2xkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQVpZE5GVAUHc29sZEtleQkAzAgCCQEMSW50ZWdlckVudHJ5AgIQdG90YWxfbmZ0X2lzc3VlZAkAZAIFCHRvdGFsTkZUAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlFbmRTYWxlAgUGaXNzdWVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGaXNzdWVyBQVhcnRJZAUKc2VsbFN0YXR1cwkAzAgCBQhpc3N1ZU5GVAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGaXNzdWVyBRBhbW91bnRGb3JDcmVhdG9yBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAULY29tbWlzc2lvbnMDBQVpc0JpZAkAzAgCBQhzb2xkRGF0YQkAzAgCBQliaWRVcGRhdGUJAMwIAgUJYmlkRGVsT2xkBQZidXlSZXMJAMwIAgUIc29sZERhdGEFBmJ1eVJlcwEIYXNTdHJpbmcBAmJ2BAckbWF0Y2gwBQJidgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEA2J2MAUHJG1hdGNoMAUDYnYwCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEKYWRkQXJ0d29yaw4Kc2hhMjU2SGFzaAZzaWduSUQEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUKY2lkRGlzcGxheQxzaGEyNTZFeHBvcnQJY2lkRXhwb3J0DXNoYTI1NkxpY2VuY2UKY2lkTGljZW5jZQdjcmF3bGVyCXJveWFsdGllcwZwdWJLZXkEDSR0MDE4ODgxMTg5NTQJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEBWFydElkCAUNJHQwMTg4ODExODk1NAJfMQQGY2FsbGVyCAUNJHQwMTg4ODExODk1NAJfMgQEZGF0ZQgFDSR0MDE4ODgxMTg5NTQCXzMEC2lzU3BvbnNvcmVkCAUNJHQwMTg4ODExODk1NAJfNAMJAQEhAQkBDHZhbGlkYXRlSGFzaAEFCnNoYTI1Nkhhc2gJAAIBAiRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EDSR0MDE5MDU1MTkxMjQJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDE5MDU1MTkxMjQCXzEEC2xpY2VuY2VIYXNoCAUNJHQwMTkwNTUxOTEyNAJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEEHdoaXRlbGlzdGVkX2Ryb3AJAGYCCQEOY2hlY2tXaGl0ZWxpc3QBCQCsAgIFBmNhbGxlcgILX2ZyZWVfZHJvcHMAAAQNJHQwMTk0MjMxOTUwNwMFEHdoaXRlbGlzdGVkX2Ryb3AJAJQKAgAABQZzaWduSUQJAQ92YWxpZGF0ZVBheW1lbnQBBQFpBAZhbW91bnQIBQ0kdDAxOTQyMzE5NTA3Al8xBAdhc3NldElkCAUNJHQwMTk0MjMxOTUwNwJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFBmFtb3VudAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQESa2V5VHhpZEJ5SGFzaE93bmVyAgUKc2hhMjU2SGFzaAUGY2FsbGVyAwkBAiE9AgUKZW50cnlFeGlzdAIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQECWhhc2hFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAMJAQIhPQIFCWhhc2hFeGlzdAIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQED2lzU2lnbkNlcnRpZmllZAkBFGNoZWNrU2lnbkNlcnRpZmljYXRlAwUGc2lnbklEBQZjYWxsZXIFCnNoYTI1Nkhhc2gDCQEBIQEFD2lzU2lnbkNlcnRpZmllZAkAAgECLFNpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIGZvciB0aGlzIGFkZHJlc3MuBBdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAMFEHdoaXRlbGlzdGVkX2Ryb3AJAPwHBAUNd2hpdGVsaXN0RGFwcAILdXNlRnJlZURyb3AJAMwIAgUGY2FsbGVyBQNuaWwFA25pbAUEdW5pdAMJAAACBRdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlUeGlkQnlIYXNoT3duZXICBQpzaGEyNTZIYXNoBQZjYWxsZXIFBWFydElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5RGF0ZQIFBmNhbGxlcgUFYXJ0SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQVhcnRJZAULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleURpc3BsYXlDaWQCBQZjYWxsZXIFBWFydElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBWFydElkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBWFydElkBQxzaGEyNTZFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUxpY2VuY2VIYXNoAgUGY2FsbGVyBQVhcnRJZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUxpY2VuY2VDaWQCBQZjYWxsZXIFBWFydElkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQVhcnRJZAUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VGFncwIFBmNhbGxlcgUFYXJ0SWQFBHRhZ3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQlrZXlTaWduSUQCBQZjYWxsZXIFBWFydElkBQZzaWduSUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5aWRCeVNpZ25pZAIFBmNhbGxlcgUGc2lnbklEBQVhcnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5SGFzaEJ5VHhpZEFkZHICBQZjYWxsZXIFBWFydElkBQpzaGEyNTZIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQVhcnRJZAUHY3Jhd2xlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVJveWFsdGllcwIFBmNhbGxlcgUFYXJ0SWQFCXJveWFsdGllcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIFBmFtb3VudAULc2lnbkFzc2V0SWQFA25pbAUKdHhUb0NhbGxlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11cGRhdGVBcnR3b3JrDQR0eGlkBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5AwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBA0kdDAyMjU0MTIyNjExCQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDIyNTQxMjI2MTECXzEEBmNhbGxlcggFDSR0MDIyNTQxMjI2MTECXzIEBGRhdGUIBQ0kdDAyMjU0MTIyNjExAl8zBAtpc1Nwb25zb3JlZAgFDSR0MDIyNTQxMjI2MTECXzQEDSR0MDIyNjIxMjI2OTAJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDIyNjIxMjI2OTACXzEEC2xpY2VuY2VIYXNoCAUNJHQwMjI2MjEyMjY5MAJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECmVudHJ5RXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkAwkAAAIFCmVudHJ5RXhpc3QCAAkAAgECD0VudHJ5IG5vdCBmb3VuZAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBHR4aWQDCQAAAgUEZmxhZwIHSUxMRUdBTAkAAgECHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBASEBCQELaXNBcnRNaW50ZWQCBQZjYWxsZXIFBHR4aWQECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBHR4aWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleURlc2MCBQZjYWxsZXIFBHR4aWQFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlEaXNwbGF5Q2lkAgUGY2FsbGVyBQR0eGlkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBHR4aWQFCWNpZEV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RXhwb3J0SGFzaAIFBmNhbGxlcgUEdHhpZAUMc2hhMjU2RXhwb3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlMaWNlbmNlQ2lkAgUGY2FsbGVyBQR0eGlkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlMaWNlbmNlSGFzaAIFBmNhbGxlcgUEdHhpZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVRhZ3MCBQZjYWxsZXIFBHR4aWQFBHRhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVR5cGUCBQZjYWxsZXIFBHR4aWQFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUNyYXdsZXICBQZjYWxsZXIFBHR4aWQFB2NyYXdsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlSb3lhbHRpZXMCBQZjYWxsZXIFBHR4aWQFCXJveWFsdGllcwUDbmlsBQp0eFRvQ2FsbGVyCQACAQIOQWxyZWFkeSBtaW50ZWQBaQELZmxhZ0FydHdvcmsEBWFydElkBGFkZHIEZmxhZwRub3RlBA0kdDAyNDMxNzI0MzUxCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNDMxNzI0MzUxAl8xBAZjYWxsZXIIBQ0kdDAyNDMxNzI0MzUxAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5RmxhZwIFBGFkZHIFBWFydElkBQRmbGFnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOb3RlAgUEYWRkcgUFYXJ0SWQFBG5vdGUFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFBGZsYWcJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBDWRlbGV0ZUFydHdvcmsCBWFydElkBGFkZHIEDSR0MDI0Nzg3MjQ4MjEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDI0Nzg3MjQ4MjECXzEEBmNhbGxlcggFDSR0MDI0Nzg3MjQ4MjECXzIECWFkZHJUb1VzZQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIFBGFkZHIFBmNhbGxlcgQKZW50cnlFeGlzdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFCWFkZHJUb1VzZQUFYXJ0SWQCIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzAwkAAAIFCmVudHJ5RXhpc3QCAAkAAgECIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBApzaGEyNTZIYXNoCQEOZ2V0U3RyaW5nQnlLZXkBCQERa2V5SGFzaEJ5VHhpZEFkZHICBQlhZGRyVG9Vc2UFBWFydElkAwkAAAIFCnNoYTI1Nkhhc2gCAAkAAgECJU5vIGFydCBoYXNoIG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEBnNpZ25JRAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQAAAgUGc2lnbklEAgAJAAIBAhNObyBTSUdOIElEIG1hdGNoaW5nBAxkYXRhVG9EZWxldGUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURhdGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOYW1lAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RGVzYwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleURpc3BsYXlDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlFeHBvcnRDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlFeHBvcnRIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5TGljZW5jZUhhc2gCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlMaWNlbmNlQ2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5VHlwZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVRhZ3MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlNYXhNaW50AgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5U2lnbklEAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5SXNzdWVkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5T25TYWxlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RmxhZwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCGtleVByaWNlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5T3duZXJCeUhhc2gBBQpzaGEyNTZIYXNoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlpZEJ5U2lnbmlkAgUJYWRkclRvVXNlBQZzaWduSUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVR4aWRCeUhhc2hPd25lcgIFCnNoYTI1Nkhhc2gFCWFkZHJUb1VzZQkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5RW5kU2FsZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleU5vdGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlDcmF3bGVyAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5Um95YWx0aWVzAgUJYWRkclRvVXNlBQVhcnRJZAUDbmlsAwkBASEBCQELaXNBcnRNaW50ZWQCBQlhZGRyVG9Vc2UFBWFydElkAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBQxkYXRhVG9EZWxldGUDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQxkYXRhVG9EZWxldGUJAAIBAihBcnQgYWxyZWFkeSBtaW50ZWQsIHlvdSBjYW5ub3QgZGVsZXRlIGl0AWkBC3NlbGxBcnR3b3JrBgVhcnRJZAVwcmljZQdtYXhNaW50B2Fzc2V0SWQIYmxvY2tFbmQGcHViS2V5BA0kdDAyNzY1NzI3NzI3CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDI3NjU3Mjc3MjcCXzEEBmNhbGxlcggFDSR0MDI3NjU3Mjc3MjcCXzIEBGRhdGUIBQ0kdDAyNzY1NzI3NzI3Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDI3NjU3Mjc3MjcCXzQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECI1RoaXMgYXJ0IGRvZXNuJ3QgbWF0Y2ggeW91ciBhY2NvdW50BARmbGFnCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5RmxhZwIFBmNhbGxlcgUFYXJ0SWQDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAAIBAg9GbGFnZ2VkIGFydHdvcmsEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAGYCAAAFCGJsb2NrRW5kCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQhibG9ja0VuZAAAAwkBAiE9AgUHbWF4TWludAABBgkBAiE9AgUFcHJpY2UAAAcJAAIBAjpUaW1lZCBvZmZlciBvbmx5IGFsbG93ZWQgZm9yIHVuaXF1ZSBlZGl0aW9uIGFuZCBvZmZlciBvbmx5BApiYXNlSGVpZ2h0AwkAAAIFCGJsb2NrRW5kAAAAAAUGaGVpZ2h0AwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwCBQdhc3NldElkBQVwcmljZQkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAMJAGYCBQdtYXhNaW50AGQJAAIBAhwxMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrAwMJAQIhPQIFCmFtb3VudFNvbGQAAAkAAAIFCmFtb3VudFNvbGQFCm1heENhblNlbGwHCQACAQIUTWF4IGVkaXRpb24gcmVhY2hlZC4DAwkAZgIFCmFtb3VudFNvbGQAAAkBAiE9AgUKbWF4Q2FuU2VsbAUHbWF4TWludAcJAAIBAiZDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgYW55bW9yZQMDCQBmAgUGYmlkTmJyAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQIxQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIHdpdGggYWN0aXZlIG9yZGVycwQKc2VsbFN0YXR1cwMDCQBmAgUFcHJpY2UAAAkAZgIFB21heE1pbnQAAAcGBwQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmNhbGxlcgUFYXJ0SWQFCnNlbGxTdGF0dXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQhrZXlQcmljZQIFBmNhbGxlcgUFYXJ0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQFB21heE1pbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUFzc2V0SWRBY2NlcHRlZAIFBmNhbGxlcgUFYXJ0SWQFB2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAkAZAIFCmJhc2VIZWlnaHQFCGJsb2NrRW5kBQNuaWwFCnR4VG9DYWxsZXIBaQEKYnV5QXJ0d29yawIFYXJ0SWQGaXNzdWVyCQEHYnV5TWludAUFAWkFBWFydElkBQZpc3N1ZXICAAIAAWkBBnNldEJpZAIFYXJ0SWQGaXNzdWVyBA0kdDAzMDEwNTMwMTQ1CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMDEwNTMwMTQ1Al8xBAZjYWxsZXIIBQ0kdDAzMDEwNTMwMTQ1Al8yBARkYXRlCAUNJHQwMzAxMDUzMDE0NQJfMwQNJHQwMzAxNTAzMDE4NgkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAzMDE1MDMwMTg2Al8xBAZhbW91bnQIBQ0kdDAzMDE1MDMwMTg2Al8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQIYmxvY2tFbmQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5RW5kU2FsZQIFBmlzc3VlcgUFYXJ0SWQDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQACAQILU2FsZSBlbmRlZC4EBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUHYXNzZXRJZAUGYW1vdW50CQACAQIOV3JvbmcgbWluIHNlbGwECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMJAGcCAAAFCm1heENhblNlbGwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQdhc3NldElkAgFfCQCkAwEFBmFtb3VudAIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGQCBQZiaWROYnIAAQUDbmlsAWkBCWFjY2VwdEJpZAQFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBA0kdDAzMTM0NDMxMzg0CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMTM0NDMxMzg0Al8xBAZjYWxsZXIIBQ0kdDAzMTM0NDMxMzg0Al8yBARkYXRlCAUNJHQwMzEzNDQzMTM4NAJfMwMJAQIhPQIFBmNhbGxlcgUGaXNzdWVyCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgkBB2J1eU1pbnQFBQFpBQVhcnRJZAUGaXNzdWVyBQViaWRJZAUIYmlkT3duZXIBaQEJY2FuY2VsQmlkBAVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIEDSR0MDMxNjEwMzE2NzEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDMxNjEwMzE2NzECXzEEBmNhbGxlcggFDSR0MDMxNjEwMzE2NzECXzIEBGRhdGUIBQ0kdDAzMTYxMDMxNjcxAl8zAwMJAQIhPQIFBmNhbGxlcgUIYmlkT3duZXIJAQIhPQIFBmNhbGxlcgUGaXNzdWVyBwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EDXJldHVybk1vbmV5VG8DCQAAAgUGY2FsbGVyBQZpc3N1ZXIFCGJpZE93bmVyBQZjYWxsZXIEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAQKYmlkRGF0YUtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQhiaWRPd25lcgIBXwUFYmlkSWQEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAABAliaWRTdGF0dXMCCENBTkNFTEVECQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFCmJpZERhdGFLZXkCAV8FCWJpZFN0YXR1cwkArAICCQCsAgIFB2JpZERhdGECAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBlAgUGYmlkTmJyAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFDXJldHVybk1vbmV5VG8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEFB2Fzc2V0SWQFA25pbAECdHgBCHZlcmlmaWVyAAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAMDCQAAAggFA2ludghmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADQMDCQAAAggFA2ludghmdW5jdGlvbgINdXBkYXRlQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADAMDCQAAAggFA2ludghmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAUJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnwqcQv", "height": 2412765, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dw3epfj3UtjN3hBWEinN9MYFAH22qgFxMge6fhh7fUMw Next: BR6iYctGAvENpofigfsQev1TPf7j3Hk4A3CfuXKirwim Diff:
OldNewDifferences
600600 then invoke(i, "useFreeDrop", [P], nil)
601601 else unit
602602 if ((cw == cw))
603- then [StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bC), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cm), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cn), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)]
603+ then {
604+ let cx = if (bt)
605+ then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
606+ else nil
607+ ([StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bC), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cm), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cn), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)] ++ cx)
608+ }
604609 else throw("Strict value is not equal to itself.")
605610 }
606611 }
616621 func updateArtwork (aq,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = if (!(w))
617622 then throw(x)
618623 else {
619- let cx = br(aR, bs)
620- let bB = cx._1
621- let P = cx._2
622- let bC = cx._3
623- let bt = cx._4
624- let cy = aH(ay, aB)
625- let aJ = cy._1
626- let aK = cy._2
624+ let cy = br(aR, bs)
625+ let bB = cy._1
626+ let P = cy._2
627+ let bC = cy._3
628+ let bt = cy._4
629+ let cz = aH(ay, aB)
630+ let aJ = cz._1
631+ let aK = cz._2
627632 let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
628633 if ((cq != ""))
629634 then throw("Something went wrong!")
632637 if ((ct == ""))
633638 then throw("Entry not found")
634639 else {
635- let cz = b(al(P, aq))
636- if ((cz == "ILLEGAL"))
640+ let cA = b(al(P, aq))
641+ if ((cA == "ILLEGAL"))
637642 then throw("Cannot update ILLEGAL artwork")
638643 else if (!(aX(P, aq)))
639- then [StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cm), StringEntry(ag(P, aq), cn), IntegerEntry(ah(P, aq), aO)]
644+ then {
645+ let cx = if (bt)
646+ then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
647+ else nil
648+ ([StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cm), StringEntry(ag(P, aq), cn), IntegerEntry(ah(P, aq), aO)] ++ cx)
649+ }
640650 else throw("Already minted")
641651 }
642652 }
645655
646656
647657 @Callable(aR)
648-func flagArtwork (R,cA,cz,cB) = {
649- let cC = bv(aR)
650- let bB = cC._1
651- let P = cC._2
658+func flagArtwork (R,cB,cA,cC) = {
659+ let cD = bv(aR)
660+ let bB = cD._1
661+ let P = cD._2
652662 if (containsElement([n, toString(this)], P))
653- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cz))
654- then [StringEntry(al(cA, R), cz), StringEntry(af(cA, R), cB)]
655- else throw(("Unknow status " + cz))
663+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
664+ then [StringEntry(al(cB, R), cA), StringEntry(af(cB, R), cC)]
665+ else throw(("Unknow status " + cA))
656666 else throw("You are not allowed")
657667 }
658668
659669
660670
661671 @Callable(aR)
662-func deleteArtwork (R,cA) = {
663- let cD = bv(aR)
664- let bB = cD._1
665- let P = cD._2
672+func deleteArtwork (R,cB) = {
673+ let cE = bv(aR)
674+ let bB = cE._1
675+ let P = cE._2
666676 let aY = if (containsElement([n, toString(this)], P))
667- then cA
677+ then cB
668678 else P
669679 let ct = valueOrErrorMessage(b(S(aY, R)), "No art matching for this address")
670680 if ((ct == ""))
678688 if ((F == ""))
679689 then throw("No SIGN ID matching")
680690 else {
681- let cE = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
691+ let cF = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
682692 if (!(aX(aY, R)))
683693 then if (!(w))
684694 then throw(x)
685- else cE
695+ else cF
686696 else if (containsElement([n, toString(this)], P))
687- then cE
697+ then cF
688698 else throw("Art already minted, you cannot delete it")
689699 }
690700 }
694704
695705
696706 @Callable(aR)
697-func sellArtwork (R,bg,cF,aW,bE,bs) = {
698- let cG = br(aR, bs)
699- let bB = cG._1
700- let P = cG._2
701- let bt = cG._3
707+func sellArtwork (R,bg,cG,aW,bE,bs) = {
708+ let cH = br(aR, bs)
709+ let bB = cH._1
710+ let P = cH._2
711+ let bC = cH._3
712+ let bt = cH._4
702713 let bH = b(S(P, R))
703714 if ((bH == ""))
704715 then throw("This art doesn't match your account")
705716 else {
706- let cz = b(al(P, R))
707- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cz))
717+ let cA = b(al(P, R))
718+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
708719 then throw("Flagged artwork")
709720 else {
710- let cH = p(("current_bidamount_" + R))
721+ let cI = p(("current_bidamount_" + R))
711722 if ((0 > bE))
712723 then throw("Negative end")
713724 else if (if ((bE > 0))
714- then if ((cF != 1))
725+ then if ((cG != 1))
715726 then true
716727 else (bg != 0)
717728 else false)
718729 then throw("Timed offer only allowed for unique edition and offer only")
719730 else {
720- let cI = if ((bE == 0))
731+ let cJ = if ((bE == 0))
721732 then 0
722733 else height
723734 if (!(be(aW)))
731742 else {
732743 let bJ = p(Z(P, R))
733744 let bK = p(X(P, R))
734- if ((cF > 100))
745+ if ((cG > 100))
735746 then throw("100 editions max per artwork")
736747 else if (if ((bJ != 0))
737748 then (bJ == bK)
738749 else false)
739750 then throw("Max edition reached.")
740751 else if (if ((bJ > 0))
741- then (bK != cF)
752+ then (bK != cG)
742753 else false)
743754 then throw("Cannot change maximum issuable anymore")
744- else if (if ((cH > 0))
745- then (bK != cF)
755+ else if (if ((cI > 0))
756+ then (bK != cG)
746757 else false)
747758 then throw("Cannot change maximum issuable with active orders")
748759 else {
749760 let bX = if (if ((bg > 0))
750- then (cF > 0)
761+ then (cG > 0)
751762 else false)
752763 then true
753764 else false
754-[BooleanEntry(aa(P, R), bX), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cF), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cI + bE))]
765+ let cx = if (bt)
766+ then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
767+ else nil
768+ ([BooleanEntry(aa(P, R), bX), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cG), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cJ + bE))] ++ cx)
755769 }
756770 }
757771 }
769783
770784 @Callable(aR)
771785 func setBid (R,bx) = {
772- let cJ = bv(aR)
773- let bB = cJ._1
774- let P = cJ._2
775- let bC = cJ._3
776- let cK = aQ(aR)
777- let aS = cK._1
778- let aT = cK._2
786+ let cK = bv(aR)
787+ let bB = cK._1
788+ let P = cK._2
789+ let bC = cK._3
790+ let cL = aQ(aR)
791+ let aS = cL._1
792+ let aT = cL._2
779793 let aW = if (!(isDefined(aS.assetId)))
780794 then "WAVES"
781795 else toBase58String(value(aS.assetId))
785799 else false)
786800 then throw("Sale ended.")
787801 else {
788- let cH = p(("current_bidamount_" + R))
802+ let cI = p(("current_bidamount_" + R))
789803 if (!(be(aW)))
790804 then throw("asset not accepted")
791805 else if (!(bf(aW, aT)))
797811 then throw("No max edition set for this artwork")
798812 else if ((bJ >= bK))
799813 then throw("Sold out, you cannot bid")
800- else [StringEntry((((((((("bid_" + R) + "_") + bx) + "_") + P) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cH + 1))]
814+ else [StringEntry((((((((("bid_" + R) + "_") + bx) + "_") + P) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI + 1))]
801815 }
802816 }
803817 }
806820
807821 @Callable(aR)
808822 func acceptBid (R,bx,by,bz) = {
809- let cL = bv(aR)
810- let bB = cL._1
811- let P = cL._2
812- let bC = cL._3
823+ let cM = bv(aR)
824+ let bB = cM._1
825+ let P = cM._2
826+ let bC = cM._3
813827 if ((P != bx))
814828 then throw("You cannot do this action")
815829 else bw(aR, R, bx, by, bz)
819833
820834 @Callable(aR)
821835 func cancelBid (R,bx,by,bz) = {
822- let cM = bv(aR)
823- let bB = cM._1
824- let P = cM._2
825- let bC = cM._3
836+ let cN = bv(aR)
837+ let bB = cN._1
838+ let P = cN._2
839+ let bC = cN._3
826840 if (if ((P != bz))
827841 then (P != bx)
828842 else false)
829843 then throw("You cannot do this action")
830844 else {
831- let cN = if ((P == bx))
845+ let cO = if ((P == bx))
832846 then bz
833847 else P
834- let cH = p(("current_bidamount_" + R))
848+ let cI = p(("current_bidamount_" + R))
835849 let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
836850 let bn = b((bm + "_OPEN"))
837851 if ((bn == ""))
839853 else {
840854 let bo = split(bn, "_")
841855 let aW = bk(bo[0])
842- let cO = "CANCELED"
843-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cO), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cH - 1)), ScriptTransfer(Address(fromBase58String(cN)), parseIntValue(bo[1]), aW)]
856+ let cP = "CANCELED"
857+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cP), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI - 1)), ScriptTransfer(Address(fromBase58String(cO)), parseIntValue(bo[1]), aW)]
844858 }
845859 }
846860 }
847861
848862
849-@Verifier(cP)
850-func cQ () = {
851- let I = cP
863+@Verifier(cQ)
864+func cR () = {
865+ let I = cQ
852866 if ($isInstanceOf(I, "InvokeScriptTransaction"))
853867 then {
854- let cR = I
855- if (if ((cR.function == "addArtwork"))
856- then (cR.dApp == this)
868+ let cS = I
869+ if (if ((cS.function == "addArtwork"))
870+ then (cS.dApp == this)
857871 else false)
858- then sigVerify(cP.bodyBytes, cP.proofs[0], fromBase58String(ch(cR.args[13])))
859- else if (if ((cR.function == "updateArtwork"))
860- then (cR.dApp == this)
872+ then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[13])))
873+ else if (if ((cS.function == "updateArtwork"))
874+ then (cS.dApp == this)
861875 else false)
862- then sigVerify(cP.bodyBytes, cP.proofs[0], fromBase58String(ch(cR.args[12])))
863- else if (if ((cR.function == "sellArtwork"))
864- then (cR.dApp == this)
876+ then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[12])))
877+ else if (if ((cS.function == "sellArtwork"))
878+ then (cS.dApp == this)
865879 else false)
866- then sigVerify(cP.bodyBytes, cP.proofs[0], fromBase58String(ch(cR.args[5])))
867- else sigVerify(cP.bodyBytes, cP.proofs[0], cP.senderPublicKey)
880+ then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[5])))
881+ else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
868882 }
869- else sigVerify(cP.bodyBytes, cP.proofs[0], cP.senderPublicKey)
883+ else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
870884 }
871885
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.1.10"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
1313 let f = value(addressFromString(b("conf_signweb_dapp")))
1414
1515 let g = b("conf_fee_receiver")
1616
1717 let h = if (d)
1818 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1919 else value(addressFromString(b("conf_users_dapp")))
2020
2121 let i = value(addressFromString(b("conf_whitelist_dapp")))
2222
2323 let j = fromBase58String(b("conf_accepted_asset_SIGN"))
2424
2525 let k = fromBase58String(b("conf_accepted_asset_USDN"))
2626
2727 let l = fromBase58String(b("conf_accepted_asset_USDT"))
2828
2929 let m = base58''
3030
3131 let n = b("conf_admin_1")
3232
3333 func o (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
3434
3535
3636 func p (c) = valueOrElse(getInteger(this, c), 0)
3737
3838
3939 func q (c) = valueOrElse(getInteger(i, c), 0)
4040
4141
4242 func r (c) = valueOrElse(getBoolean(this, c), false)
4343
4444
4545 let s = 7
4646
4747 let t = 10
4848
4949 let u = b("conf_default_licence")
5050
5151 let v = b("conf_default_licence_hash")
5252
5353 let w = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
5454
5555 let x = valueOrElse(getString(h, "conf_maintenance_msg"), "")
5656
5757 let y = "SUSPENDED"
5858
5959 let z = "REMOVED"
6060
6161 let A = "UNREGISTERED"
6262
6363 let B = "ALLOWED"
6464
6565 let C = o(("certification_fee_" + toBase58String(j)))
6666
6767 func D (c) = valueOrElse(getInteger(this, c), 1000)
6868
6969
7070 func E (F,G,H) = {
7171 let I = getString(f, ((("data_fc_" + F) + "_") + G))
7272 if ($isInstanceOf(I, "String"))
7373 then {
7474 let J = I
7575 if (contains(J, H))
7676 then true
7777 else false
7878 }
7979 else false
8080 }
8181
8282
8383 func K (L) = if (contains(L, "/"))
8484 then if (if ((76 > size(L)))
8585 then (size(split(L, "/")[0]) == 59)
8686 else false)
8787 then (16 > size(split(L, "/")[1]))
8888 else false
8989 else false
9090
9191
9292 func M (N) = (size(N) == 64)
9393
9494
9595 func O (P) = ("user_status_" + P)
9696
9797
9898 func Q (P,R) = ((("art_date_" + R) + "_") + P)
9999
100100
101101 func S (P,R) = ((("art_name_" + R) + "_") + P)
102102
103103
104104 func T (P,R) = ((("art_desc_" + R) + "_") + P)
105105
106106
107107 func U (P,R) = ((("art_display_cid_" + R) + "_") + P)
108108
109109
110110 func V (P,R) = ((("art_export_hash_" + R) + "_") + P)
111111
112112
113113 func W (P,R) = ((("art_export_cid_" + R) + "_") + P)
114114
115115
116116 func X (P,R) = ((("art_maxmint_" + R) + "_") + P)
117117
118118
119119 func Y (P,R) = ((("art_signid_" + R) + "_") + P)
120120
121121
122122 func Z (P,R) = ((("art_issued_" + R) + "_") + P)
123123
124124
125125 func aa (P,R) = ((("art_onsale_" + R) + "_") + P)
126126
127127
128128 func ab (P,R) = ((("art_licence_hash_" + R) + "_") + P)
129129
130130
131131 func ac (P,R) = ((("art_licence_cid_" + R) + "_") + P)
132132
133133
134134 func ad (P,R) = ((("art_tags_" + R) + "_") + P)
135135
136136
137137 func ae (P,R) = ((("art_type_" + R) + "_") + P)
138138
139139
140140 func af (P,R) = ((("art_note_" + R) + "_") + P)
141141
142142
143143 func ag (P,R) = ((("art_crawler_cid_" + R) + "_") + P)
144144
145145
146146 func ah (P,R) = ((("art_royalties_" + R) + "_") + P)
147147
148148
149149 func ai (P,R) = ((("art_price_" + R) + "_") + P)
150150
151151
152152 func aj (P,R) = ((("art_endsale_" + R) + "_") + P)
153153
154154
155155 func ak (P,R) = ((("art_assetAccepted_" + R) + "_") + P)
156156
157157
158158 func al (P,R) = ((("art_flag_" + R) + "_") + P)
159159
160160
161161 func am (an) = ("artist_agent_" + an)
162162
163163
164164 func ao (an) = ("artist_agent_primary_" + an)
165165
166166
167167 func ap (P,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + P)
168168
169169
170170 func ar (H) = ("get_owner_by_hash_" + H)
171171
172172
173173 func as (P,at) = ((("get_artidbysignid_" + at) + "_") + P)
174174
175175
176176 func au (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
177177
178178
179179 func av (aw,ax,ay) = if (!(K(aw)))
180180 then throw("Wrong Display CID")
181181 else if (!(K(ax)))
182182 then throw("Wrong Export CID")
183183 else if (if ((ay != ""))
184184 then !(K(ay))
185185 else false)
186186 then throw("Wrong Licence CID")
187187 else true
188188
189189
190190 func az (aA,aB) = if (!(M(aA)))
191191 then throw("Export Hash 64 char. max")
192192 else if (!(M(aB)))
193193 then throw("Licence Hash 64 char. max")
194194 else true
195195
196196
197197 func aC (aD,aE) = if ((size(aD) == 0))
198198 then throw("Field cannot be is empty")
199199 else if ((size(aD) > aE))
200200 then throw((aD + " is too long"))
201201 else true
202202
203203
204204 func aF (P) = {
205205 let aG = valueOrElse(getString(h, O(P)), A)
206206 if (if ((aG == A))
207207 then true
208208 else (aG == B))
209209 then "Register this account first with \"Account\" tab"
210210 else if ((aG == y))
211211 then "Account suspended"
212212 else if ((aG == z))
213213 then "Account removed"
214214 else ""
215215 }
216216
217217
218218 func aH (ay,aB) = {
219219 let L = if ((size(ay) == 0))
220220 then u
221221 else ay
222222 let N = if ((size(aB) == 0))
223223 then v
224224 else aB
225225 $Tuple2(L, N)
226226 }
227227
228228
229229 func aI (P,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
230230 let aP = aF(P)
231231 if ((aP != ""))
232232 then throw(aP)
233233 else if ((size(aw) == 0))
234234 then throw("Display CID cannot be empty")
235235 else if (!(av(aw, ax, aJ)))
236236 then throw("Problem with CID")
237237 else if (!(az(aA, aK)))
238238 then throw("Problem with Hashes")
239239 else if (!(aC(aL, 100)))
240240 then throw("100 Char. max name")
241241 else if (!(aC(aM, 1000)))
242242 then throw("1000 Char. max description")
243243 else if (if ((0 > aO))
244244 then true
245245 else (aO > 1000))
246246 then throw("Royalties cannot be less than 0% or higher than 10%")
247247 else if ((size(split(aN, ",")) > 5))
248248 then throw("5 tags max.")
249249 else ""
250250 }
251251
252252
253253 func aQ (aR) = if ((size(aR.payments) == 0))
254254 then throw("No payment attached")
255255 else {
256256 let aS = value(aR.payments[0])
257257 let aT = value(aS.amount)
258258 $Tuple2(aS, aT)
259259 }
260260
261261
262262 func aU (aR) = {
263263 let aV = aQ(aR)
264264 let aS = aV._1
265265 let aT = aV._2
266266 let aW = if (if (isDefined(aS.assetId))
267267 then (aS.assetId == j)
268268 else false)
269269 then aS.assetId
270270 else throw("Only SIGN token accepted as transaction fee")
271271 if ((aT != C))
272272 then throw(("Payment amount should be " + toString(C)))
273273 else $Tuple2(aT, aW)
274274 }
275275
276276
277277 func aX (aY,R) = {
278278 let I = getInteger(this, Z(aY, R))
279279 if ($isInstanceOf(I, "Int"))
280280 then {
281281 let aZ = I
282282 if ((aZ != 0))
283283 then true
284284 else false
285285 }
286286 else false
287287 }
288288
289289
290290 func ba (aR,bb,bc) = {
291291 let bd = aQ(aR)
292292 let aS = bd._1
293293 let aT = bd._2
294294 let aW = if (!(isDefined(aS.assetId)))
295295 then unit
296296 else if (if ((size(bb) > 0))
297297 then (toBase58String(value(aS.assetId)) == bb)
298298 else false)
299299 then aS.assetId
300300 else throw("Wrong asset id")
301301 if (if ((aW == unit))
302302 then (bb != "")
303303 else false)
304304 then throw("Wrong asset id")
305305 else if ((bc != aT))
306306 then throw("Payment don't match")
307307 else $Tuple2(aT, aW)
308308 }
309309
310310
311311 func be (aW) = if (if (if (if (if ((aW != toBase58String(j)))
312312 then (aW != toBase58String(m))
313313 else false)
314314 then (aW != "WAVES")
315315 else false)
316316 then (aW != toBase58String(k))
317317 else false)
318318 then (aW != toBase58String(l))
319319 else false)
320320 then throw("Only SIGN, USDN,USDT or WAVES accepted")
321321 else true
322322
323323
324324 func bf (aW,bg) = {
325325 let bh = if (d)
326326 then 10
327327 else o("waves_min_sell")
328328 let bi = 1000000
329329 let bj = if (d)
330330 then 1
331331 else (C * 2)
332332 if (if (if (if (if (if ((aW == toBase58String(k)))
333333 then (bi > bg)
334334 else false)
335335 then (bg != 0)
336336 else false)
337337 then true
338338 else if (if ((aW == toBase58String(l)))
339339 then (bi > bg)
340340 else false)
341341 then (bg != 0)
342342 else false)
343343 then true
344344 else if (if ((aW == toBase58String(j)))
345345 then (bj > bg)
346346 else false)
347347 then (bg != 0)
348348 else false)
349349 then true
350350 else if (if (if ((aW == toBase58String(m)))
351351 then true
352352 else (aW == "WAVES"))
353353 then (bh > bg)
354354 else false)
355355 then (bg != 0)
356356 else false)
357357 then throw("Wrong minimum sell price")
358358 else true
359359 }
360360
361361
362362 func bk (aW) = if ((aW == "WAVES"))
363363 then unit
364364 else fromBase58String(aW)
365365
366366
367367 func bl (bm) = {
368368 let bn = b((bm + "_OPEN"))
369369 if ((bn == ""))
370370 then throw("Bid not found")
371371 else {
372372 let bo = split(bn, "_")
373373 let bp = parseIntValue(bo[1])
374374 let bq = bk(bo[0])
375375 if ((0 >= bp))
376376 then throw("Wrong amount")
377377 else $Tuple2(bp, bq)
378378 }
379379 }
380380
381381
382382 func br (aR,bs) = if (!(w))
383383 then throw(x)
384384 else {
385385 let bt = valueOrElse(q((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
386386 let P = if (if (if ((toBase58String(aR.caller.bytes) == toString(this)))
387387 then (size(aR.payments) == 0)
388388 else false)
389389 then (bt > 0)
390390 else false)
391391 then toString(addressFromPublicKey(fromBase58String(bs)))
392392 else toBase58String(aR.caller.bytes)
393393 let bu = if ((bs != ""))
394394 then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
395395 else unit
396396 if ((bu == bu))
397397 then $Tuple4(toBase58String(aR.transactionId), P, lastBlock.timestamp, (bt > 0))
398398 else throw("Strict value is not equal to itself.")
399399 }
400400
401401
402402 func bv (aR) = if (!(w))
403403 then throw(x)
404404 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
405405
406406
407407 func bw (aR,R,bx,by,bz) = {
408408 let bA = bv(aR)
409409 let bB = bA._1
410410 let P = bA._2
411411 let bC = bA._3
412412 let bD = if (if (if ((P == bx))
413413 then (bz != "")
414414 else false)
415415 then (by != "")
416416 else false)
417417 then true
418418 else false
419419 let bE = p(aj(P, R))
420420 if (if (if ((bE != 0))
421421 then (height >= bE)
422422 else false)
423423 then !(bD)
424424 else false)
425425 then throw("Sale ended.")
426426 else {
427427 let bF = (P == bx)
428428 let bG = p("total_nft_issued")
429429 let F = b(Y(bx, R))
430430 let bH = b(S(bx, R))
431431 if ((bH == ""))
432432 then throw("Art doesn't exist")
433433 else {
434434 let bI = r(aa(bx, R))
435435 let bJ = p(Z(bx, R))
436436 let bc = if (bF)
437437 then (C * 2)
438438 else p(ai(bx, R))
439439 let bb = if (bF)
440440 then toBase58String(j)
441441 else b(ak(bx, R))
442442 let bK = p(X(bx, R))
443443 if (if (if (!(bD))
444444 then !(bF)
445445 else false)
446446 then if (if ((0 >= bc))
447447 then true
448448 else !(bI))
449449 then true
450450 else (0 >= bK)
451451 else false)
452452 then throw("Art not for sale")
453453 else if (if (if (!(bD))
454454 then bF
455455 else false)
456456 then (0 >= bK)
457457 else false)
458458 then throw("Max issuable not set")
459459 else {
460460 let aP = aF(bx)
461461 if (if (bD)
462462 then (aP != "")
463463 else false)
464464 then throw(aP)
465465 else {
466466 let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
467467 let bL = if (bD)
468468 then bl(bm)
469469 else ba(aR, bb, bc)
470470 let aT = bL._1
471471 let aW = bL._2
472472 let bM = valueOrElse(getString(h, am(bx)), g)
473473 let bN = valueOrElse(getInteger(h, ao(bx)), 0)
474474 let bO = q(bx)
475475 let bP = if ((bO > height))
476476 then 0
477477 else if ((aW == j))
478478 then s
479479 else t
480480 let bQ = fraction(aT, bP, 100)
481481 let bR = if (if (if ((bM != g))
482482 then (bN > 0)
483483 else false)
484484 then (height > bO)
485485 else false)
486486 then fraction(aT, bN, 100)
487487 else 0
488488 let bS = (aT - bQ)
489489 if ((bJ == bK))
490490 then throw("Art sold out")
491491 else {
492492 let bT = (bJ + 1)
493493 let bU = ((((((((((("Creator: " + bx) + ",
494494 ArtID: ") + R) + ",
495495 SignID: ") + F) + ",
496496 Artwork name: ") + bH) + ",
497497 Issue: ") + toString(bT)) + "/") + toString(bK))
498498 let bV = Issue(("SA_" + toString((bG + 1))), bU, 1, 0, false)
499499 let bW = calculateAssetId(bV)
500500 let bX = if (if ((bT == bK))
501501 then true
502502 else !(bI))
503503 then false
504504 else true
505505 let bY = if (if (if ((P == bx))
506506 then (bz != "")
507507 else false)
508508 then (by != "")
509509 else false)
510510 then addressFromStringValue(bz)
511511 else aR.caller
512512 let bZ = if (!(isDefined(aW)))
513513 then "WAVES"
514514 else toBase58String(value(aW))
515515 let bn = b((bm + "_OPEN"))
516516 let ca = DeleteEntry((bm + "_OPEN"))
517517 let cb = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
518518 let cc = ((((((("art_sold_" + toString(bT)) + "_of_") + toString(bK)) + "_") + R) + "_") + bx)
519519 let cd = if (!(bD))
520520 then ((((((((((P + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bW))
521521 else ((((((((((toString(bY) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + bZ) + "_") + toBase58String(bW))
522522 let ce = StringEntry(cc, cd)
523523 let cf = if ((bR != 0))
524524 then [ScriptTransfer(Address(fromBase58String(g)), (bQ - bR), aW), ScriptTransfer(Address(fromBase58String(bM)), bR, aW)]
525525 else [ScriptTransfer(Address(fromBase58String(g)), bQ, aW)]
526526 let cg = ([IntegerEntry(Z(bx, R), bT), StringEntry(("nft_" + toBase58String(bW)), cc), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(aj(bx, R), 0), BooleanEntry(aa(bx, R), bX), bV, ScriptTransfer(Address(fromBase58String(bx)), bS, aW), ScriptTransfer(bY, 1, bW)] ++ cf)
527527 if (bD)
528528 then [ce, cb, ca] :: cg
529529 else ce :: cg
530530 }
531531 }
532532 }
533533 }
534534 }
535535 }
536536
537537
538538 func ch (ci) = {
539539 let I = ci
540540 if ($isInstanceOf(I, "String"))
541541 then {
542542 let cj = I
543543 cj
544544 }
545545 else throw("Sponsored Public Key String expected")
546546 }
547547
548548
549549 @Callable(ck)
550550 func setConf (c,cl) = {
551551 let P = toString(ck.caller)
552552 if (containsElement([n, toString(this)], P))
553553 then if (contains(c, "conf_"))
554554 then [StringEntry(c, cl)]
555555 else throw("Entries starting with conf_ only")
556556 else throw("You are not allowed to change this")
557557 }
558558
559559
560560
561561 @Callable(aR)
562562 func addArtwork (H,F,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = {
563563 let co = br(aR, bs)
564564 let R = co._1
565565 let P = co._2
566566 let bC = co._3
567567 let bt = co._4
568568 if (!(M(H)))
569569 then throw("Hash should be 64 characters maximum")
570570 else {
571571 let cp = aH(ay, aB)
572572 let aJ = cp._1
573573 let aK = cp._2
574574 let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
575575 if ((cq != ""))
576576 then throw("Something went wrong!")
577577 else {
578578 let cr = (q((P + "_free_drops")) > 0)
579579 let cs = if (cr)
580580 then $Tuple2(0, F)
581581 else aU(aR)
582582 let aT = cs._1
583583 let aW = cs._2
584584 if (!(isDefined(aT)))
585585 then throw("Something went wrong")
586586 else {
587587 let ct = b(au(H, P))
588588 if ((ct != ""))
589589 then throw("You already added it")
590590 else {
591591 let cu = b(ar(H))
592592 if ((cu != ""))
593593 then throw("Hash already registered")
594594 else {
595595 let cv = E(F, P, H)
596596 if (!(cv))
597597 then throw("Sign Certificate not found for this address.")
598598 else {
599599 let cw = if (cr)
600600 then invoke(i, "useFreeDrop", [P], nil)
601601 else unit
602602 if ((cw == cw))
603- then [StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bC), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cm), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cn), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)]
603+ then {
604+ let cx = if (bt)
605+ then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
606+ else nil
607+ ([StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bC), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cm), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cn), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)] ++ cx)
608+ }
604609 else throw("Strict value is not equal to itself.")
605610 }
606611 }
607612 }
608613 }
609614 }
610615 }
611616 }
612617
613618
614619
615620 @Callable(aR)
616621 func updateArtwork (aq,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = if (!(w))
617622 then throw(x)
618623 else {
619- let cx = br(aR, bs)
620- let bB = cx._1
621- let P = cx._2
622- let bC = cx._3
623- let bt = cx._4
624- let cy = aH(ay, aB)
625- let aJ = cy._1
626- let aK = cy._2
624+ let cy = br(aR, bs)
625+ let bB = cy._1
626+ let P = cy._2
627+ let bC = cy._3
628+ let bt = cy._4
629+ let cz = aH(ay, aB)
630+ let aJ = cz._1
631+ let aK = cz._2
627632 let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
628633 if ((cq != ""))
629634 then throw("Something went wrong!")
630635 else {
631636 let ct = b(S(P, aq))
632637 if ((ct == ""))
633638 then throw("Entry not found")
634639 else {
635- let cz = b(al(P, aq))
636- if ((cz == "ILLEGAL"))
640+ let cA = b(al(P, aq))
641+ if ((cA == "ILLEGAL"))
637642 then throw("Cannot update ILLEGAL artwork")
638643 else if (!(aX(P, aq)))
639- then [StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cm), StringEntry(ag(P, aq), cn), IntegerEntry(ah(P, aq), aO)]
644+ then {
645+ let cx = if (bt)
646+ then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
647+ else nil
648+ ([StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cm), StringEntry(ag(P, aq), cn), IntegerEntry(ah(P, aq), aO)] ++ cx)
649+ }
640650 else throw("Already minted")
641651 }
642652 }
643653 }
644654
645655
646656
647657 @Callable(aR)
648-func flagArtwork (R,cA,cz,cB) = {
649- let cC = bv(aR)
650- let bB = cC._1
651- let P = cC._2
658+func flagArtwork (R,cB,cA,cC) = {
659+ let cD = bv(aR)
660+ let bB = cD._1
661+ let P = cD._2
652662 if (containsElement([n, toString(this)], P))
653- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cz))
654- then [StringEntry(al(cA, R), cz), StringEntry(af(cA, R), cB)]
655- else throw(("Unknow status " + cz))
663+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
664+ then [StringEntry(al(cB, R), cA), StringEntry(af(cB, R), cC)]
665+ else throw(("Unknow status " + cA))
656666 else throw("You are not allowed")
657667 }
658668
659669
660670
661671 @Callable(aR)
662-func deleteArtwork (R,cA) = {
663- let cD = bv(aR)
664- let bB = cD._1
665- let P = cD._2
672+func deleteArtwork (R,cB) = {
673+ let cE = bv(aR)
674+ let bB = cE._1
675+ let P = cE._2
666676 let aY = if (containsElement([n, toString(this)], P))
667- then cA
677+ then cB
668678 else P
669679 let ct = valueOrErrorMessage(b(S(aY, R)), "No art matching for this address")
670680 if ((ct == ""))
671681 then throw("No art matching for this address")
672682 else {
673683 let H = b(ap(aY, R))
674684 if ((H == ""))
675685 then throw("No art hash matching for this address")
676686 else {
677687 let F = b(Y(aY, R))
678688 if ((F == ""))
679689 then throw("No SIGN ID matching")
680690 else {
681- let cE = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
691+ let cF = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
682692 if (!(aX(aY, R)))
683693 then if (!(w))
684694 then throw(x)
685- else cE
695+ else cF
686696 else if (containsElement([n, toString(this)], P))
687- then cE
697+ then cF
688698 else throw("Art already minted, you cannot delete it")
689699 }
690700 }
691701 }
692702 }
693703
694704
695705
696706 @Callable(aR)
697-func sellArtwork (R,bg,cF,aW,bE,bs) = {
698- let cG = br(aR, bs)
699- let bB = cG._1
700- let P = cG._2
701- let bt = cG._3
707+func sellArtwork (R,bg,cG,aW,bE,bs) = {
708+ let cH = br(aR, bs)
709+ let bB = cH._1
710+ let P = cH._2
711+ let bC = cH._3
712+ let bt = cH._4
702713 let bH = b(S(P, R))
703714 if ((bH == ""))
704715 then throw("This art doesn't match your account")
705716 else {
706- let cz = b(al(P, R))
707- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cz))
717+ let cA = b(al(P, R))
718+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
708719 then throw("Flagged artwork")
709720 else {
710- let cH = p(("current_bidamount_" + R))
721+ let cI = p(("current_bidamount_" + R))
711722 if ((0 > bE))
712723 then throw("Negative end")
713724 else if (if ((bE > 0))
714- then if ((cF != 1))
725+ then if ((cG != 1))
715726 then true
716727 else (bg != 0)
717728 else false)
718729 then throw("Timed offer only allowed for unique edition and offer only")
719730 else {
720- let cI = if ((bE == 0))
731+ let cJ = if ((bE == 0))
721732 then 0
722733 else height
723734 if (!(be(aW)))
724735 then throw("Something went wrong!")
725736 else if (!(bf(aW, bg)))
726737 then throw("Something went wrong!")
727738 else {
728739 let aP = aF(P)
729740 if ((aP != ""))
730741 then throw(aP)
731742 else {
732743 let bJ = p(Z(P, R))
733744 let bK = p(X(P, R))
734- if ((cF > 100))
745+ if ((cG > 100))
735746 then throw("100 editions max per artwork")
736747 else if (if ((bJ != 0))
737748 then (bJ == bK)
738749 else false)
739750 then throw("Max edition reached.")
740751 else if (if ((bJ > 0))
741- then (bK != cF)
752+ then (bK != cG)
742753 else false)
743754 then throw("Cannot change maximum issuable anymore")
744- else if (if ((cH > 0))
745- then (bK != cF)
755+ else if (if ((cI > 0))
756+ then (bK != cG)
746757 else false)
747758 then throw("Cannot change maximum issuable with active orders")
748759 else {
749760 let bX = if (if ((bg > 0))
750- then (cF > 0)
761+ then (cG > 0)
751762 else false)
752763 then true
753764 else false
754-[BooleanEntry(aa(P, R), bX), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cF), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cI + bE))]
765+ let cx = if (bt)
766+ then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
767+ else nil
768+ ([BooleanEntry(aa(P, R), bX), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cG), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cJ + bE))] ++ cx)
755769 }
756770 }
757771 }
758772 }
759773 }
760774 }
761775 }
762776
763777
764778
765779 @Callable(aR)
766780 func buyArtwork (R,bx) = bw(aR, R, bx, "", "")
767781
768782
769783
770784 @Callable(aR)
771785 func setBid (R,bx) = {
772- let cJ = bv(aR)
773- let bB = cJ._1
774- let P = cJ._2
775- let bC = cJ._3
776- let cK = aQ(aR)
777- let aS = cK._1
778- let aT = cK._2
786+ let cK = bv(aR)
787+ let bB = cK._1
788+ let P = cK._2
789+ let bC = cK._3
790+ let cL = aQ(aR)
791+ let aS = cL._1
792+ let aT = cL._2
779793 let aW = if (!(isDefined(aS.assetId)))
780794 then "WAVES"
781795 else toBase58String(value(aS.assetId))
782796 let bE = p(aj(bx, R))
783797 if (if ((bE != 0))
784798 then (height >= bE)
785799 else false)
786800 then throw("Sale ended.")
787801 else {
788- let cH = p(("current_bidamount_" + R))
802+ let cI = p(("current_bidamount_" + R))
789803 if (!(be(aW)))
790804 then throw("asset not accepted")
791805 else if (!(bf(aW, aT)))
792806 then throw("Wrong min sell")
793807 else {
794808 let bJ = p(Z(bx, R))
795809 let bK = p(X(bx, R))
796810 if ((0 >= bK))
797811 then throw("No max edition set for this artwork")
798812 else if ((bJ >= bK))
799813 then throw("Sold out, you cannot bid")
800- else [StringEntry((((((((("bid_" + R) + "_") + bx) + "_") + P) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cH + 1))]
814+ else [StringEntry((((((((("bid_" + R) + "_") + bx) + "_") + P) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI + 1))]
801815 }
802816 }
803817 }
804818
805819
806820
807821 @Callable(aR)
808822 func acceptBid (R,bx,by,bz) = {
809- let cL = bv(aR)
810- let bB = cL._1
811- let P = cL._2
812- let bC = cL._3
823+ let cM = bv(aR)
824+ let bB = cM._1
825+ let P = cM._2
826+ let bC = cM._3
813827 if ((P != bx))
814828 then throw("You cannot do this action")
815829 else bw(aR, R, bx, by, bz)
816830 }
817831
818832
819833
820834 @Callable(aR)
821835 func cancelBid (R,bx,by,bz) = {
822- let cM = bv(aR)
823- let bB = cM._1
824- let P = cM._2
825- let bC = cM._3
836+ let cN = bv(aR)
837+ let bB = cN._1
838+ let P = cN._2
839+ let bC = cN._3
826840 if (if ((P != bz))
827841 then (P != bx)
828842 else false)
829843 then throw("You cannot do this action")
830844 else {
831- let cN = if ((P == bx))
845+ let cO = if ((P == bx))
832846 then bz
833847 else P
834- let cH = p(("current_bidamount_" + R))
848+ let cI = p(("current_bidamount_" + R))
835849 let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
836850 let bn = b((bm + "_OPEN"))
837851 if ((bn == ""))
838852 then throw("Bid not found")
839853 else {
840854 let bo = split(bn, "_")
841855 let aW = bk(bo[0])
842- let cO = "CANCELED"
843-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cO), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cH - 1)), ScriptTransfer(Address(fromBase58String(cN)), parseIntValue(bo[1]), aW)]
856+ let cP = "CANCELED"
857+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cP), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI - 1)), ScriptTransfer(Address(fromBase58String(cO)), parseIntValue(bo[1]), aW)]
844858 }
845859 }
846860 }
847861
848862
849-@Verifier(cP)
850-func cQ () = {
851- let I = cP
863+@Verifier(cQ)
864+func cR () = {
865+ let I = cQ
852866 if ($isInstanceOf(I, "InvokeScriptTransaction"))
853867 then {
854- let cR = I
855- if (if ((cR.function == "addArtwork"))
856- then (cR.dApp == this)
868+ let cS = I
869+ if (if ((cS.function == "addArtwork"))
870+ then (cS.dApp == this)
857871 else false)
858- then sigVerify(cP.bodyBytes, cP.proofs[0], fromBase58String(ch(cR.args[13])))
859- else if (if ((cR.function == "updateArtwork"))
860- then (cR.dApp == this)
872+ then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[13])))
873+ else if (if ((cS.function == "updateArtwork"))
874+ then (cS.dApp == this)
861875 else false)
862- then sigVerify(cP.bodyBytes, cP.proofs[0], fromBase58String(ch(cR.args[12])))
863- else if (if ((cR.function == "sellArtwork"))
864- then (cR.dApp == this)
876+ then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[12])))
877+ else if (if ((cS.function == "sellArtwork"))
878+ then (cS.dApp == this)
865879 else false)
866- then sigVerify(cP.bodyBytes, cP.proofs[0], fromBase58String(ch(cR.args[5])))
867- else sigVerify(cP.bodyBytes, cP.proofs[0], cP.senderPublicKey)
880+ then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[5])))
881+ else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
868882 }
869- else sigVerify(cP.bodyBytes, cP.proofs[0], cP.senderPublicKey)
883+ else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
870884 }
871885

github/deemru/w8io/873ac7e 
153.65 ms