tx · 9itf31mXUGDvDQchj4VDHnbWhJ6r6ekgBCtWWPgWjyWD

3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu:  -0.02400000 Waves

2022.07.29 21:08 [2161455] smart account 3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu > SELF 0.00000000 Waves

{ "type": 13, "id": "9itf31mXUGDvDQchj4VDHnbWhJ6r6ekgBCtWWPgWjyWD", "fee": 2400000, "feeAssetId": null, "timestamp": 1659118207655, "version": 2, "chainId": 84, "sender": "3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu", "senderPublicKey": "914UmzBhcoS4onGGVcBRgb4VPV88m9VCFjsj5WWck5vm", "proofs": [ "3qj2k7MoHZbiZTekTvPqiY8Boyki8HnuNk1TmJ4wCjGHsqUcdfFTW2j5xJR9kDThU9sMCY4EayiRi5xpyhUwK66X" ], "script": "base64:BgJeCAISAwoBCBIDCgEIEgUKAwEICBIMCgoICAgICAgICAgIEg4KDAgBAQgIAQgICAEBARIECgIIARIECgIICBIFCgMICAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICFMACHVuaXRUZXN0BwAJb3JhY2xlS2V5AglvcmFjbGVLZXkBBmdldFN0cgEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAAGb3JhY2xlCQEGZ2V0U3RyAQUJb3JhY2xlS2V5AAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQUGb3JhY2xlAAZvd25lcnMJAMwIAgkAnQgCBQlvcmFjbGVGZWUCBm93bmVyMQkAzAgCCQCdCAIFCW9yYWNsZUZlZQIGb3duZXIyBQNuaWwAD2NvbGxlY3Rpb25zRGFwcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCW9yYWNsZUZlZQIPY29sbGVjdGlvbnNEYXBwAhhjb2xsZWN0aW9uRGFwcCBub3QgZm91bmQAC2ZlZVJlY2VpdmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUJb3JhY2xlRmVlAgtmZWVSZWNlaXZlcgIVZmVlUmVjZWl2ZXIgbm90IGZvdW5kAAhjZXJ0RGFwcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCW9yYWNsZUZlZQIIY2VydERhcHACEmNlcnREYXBwIG5vdCBmb3VuZAAHZmVlRGFwcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCW9yYWNsZUZlZQIHZmVlRGFwcAIRZmVlRGFwcCBub3QgZm91bmQACHVzZXJEYXBwCQEFdmFsdWUBCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQlvcmFjbGVGZWUCCHVzZXJEYXBwAhJ1c2VyZGFwcCBub3QgZm91bmQACXN0YWtlRGFwcAkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUJb3JhY2xlRmVlAglzdGFrZURhcHACFHNjb25leERhcHAgbm90IGZvdW5kAAtVU0ROQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQlvcmFjbGVGZWUCC1VTRE5Bc3NldElkAA1TY29uZXhBc3NldElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFCW9yYWNsZUZlZQINU2NvbmV4QXNzZXRJZAAFdHlwZXMJAMwIAgIFSU1BR0UJAMwIAgIDUERGCQDMCAICBVZJREVPBQNuaWwADFByZXZpZXd0eXBlcwkAzAgCAgNQREYFA25pbAALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAAMYXVjdGlvblR5cGUxAgdCSURUWVBFAAxhdWN0aW9uVHlwZTICC1RSQURJVElPTkFMAAxhdWN0aW9uVHlwZTMCBkRJUkVDVAEXZ2V0U3RyaW5nQnlLZXlGcm9tVXNlcnMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAUDa2V5AgABDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABFWdldFN0cmluZ0J5S2V5T3JFcnJvcgIDa2V5BWVycm9yCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5BQVlcnJvcgEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUJb3JhY2xlRmVlBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ9nZXRCb29sZWFuQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHAQx2YWxpZGF0ZUhhc2gBBGhhc2gJAAACCQCxAgEFBGhhc2gAQAENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyAQdrZXlEYXRlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5TmFtZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleURlc2MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlEaXNwbGF5Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDWtleVByZXZpZXdDaWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X3ByZXZpZXdfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5TWF4TWludAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfbWF4bWludF8FBWFydElkAgFfBQZjYWxsZXIBEmtleUhpZ2hlc3RCaWRCaWRJZAEFYXJ0SWQJAKwCAgIUYXJ0X2hpZ2hlc3RCaWRCaWRJZF8FBWFydElkAQhrZXlCaWRJZAEFYmlkSWQJAKwCAgIEYmlkXwUFYmlkSWQBC2tleUR1cmF0aW9uAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDWFydF9kdXJhdGlvbl8FBWFydElkAgFfBQZjYWxsZXIBDGtleUVuZEhlaWdodAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfZW5kaGVpZ2h0XwUFYXJ0SWQCAV8FBmNhbGxlcgEOa2V5QXVjdGlvblR5cGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2F1Y3Rpb250eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5SXNzdWVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQxLZXlOZnRJc3N1ZXIBBW5mdElkCQCsAgICC25mdF9pc3N1ZWRfBQVuZnRJZAELS2V5TmZ0QXJ0SWQBBW5mdElkCQCsAgICCm5mdF9hcnRJZF8FBW5mdElkAQlrZXlPblNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X29uc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBDmtleUVudGl0bGVtZW50AgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9lbnRpdGxlbWVudF8FBWFydElkAgFfBQZjYWxsZXIBB2tleVRhZ3MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3RhZ3NfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUeXBlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEIa2V5UHJpY2UCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXNzZXRJZEFjY2VwdGVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEmFydF9hc3NldEFjY2VwdGVkXwUFYXJ0SWQCAV8FBmNhbGxlcgERa2V5SGFzaEJ5VHhpZEFkZHICBmNhbGxlcgR0eGlkCQCsAgIJAKwCAgkArAICAhNnZXRfaGFzaGJ5dHhpZGFkZHJfBQR0eGlkAgFfBQZjYWxsZXIBDmtleU93bmVyQnlIYXNoAQpzaGEyNTZIYXNoCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUKc2hhMjU2SGFzaAESa2V5VHhpZEJ5SGFzaE93bmVyAgpzaGEyNTZIYXNoBmNhbGxlcgkArAICAhdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkA2AQBCQDUFgEJAJsDAQkArAICBQpzaGEyNTZIYXNoBQZjYWxsZXIBDWtleUNvbGxlY3Rpb24CBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILY29sbGVjdGlvbl8FBWFydElkAgFfBQZjYWxsZXIADG1pblVTRE5QcmljZQkBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBCQCsAgICBG1pbl8JANgEAQULVVNETkFzc2V0SWQAEGN1cnJlbnRGZWVTY29uZXgJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAgRmZWVfCQDYBAEFDVNjb25leEFzc2V0SWQBEGdldEFtb3VudEJ5QmlkSWQBBWJpZElkCQELdmFsdWVPckVsc2UCCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleUJpZElkAQUFYmlkSWQAAAEaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQBBWFydElkBAViaWRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkCQEQZ2V0QW1vdW50QnlCaWRJZAEFBWJpZElkAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwkAAAIFCnVzZXJTdGF0dXMFEHVzZXJVbnJlZ2lzdGVyZWQCLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICdBY2NvdW50JyB0YWIDCQAAAgUKdXNlclN0YXR1cwUNdXNlclN1c3BlbmRlZAIRQWNjb3VudCBzdXNwZW5kZWQDCQAAAgUKdXNlclN0YXR1cwULdXNlclJlbW92ZWQCD0FjY291bnQgcmVtb3ZlZAIAARN2YWxpZGF0ZUFydHdvcmtEYXRhBQZjYWxsZXIKY2lkRGlzcGxheQRuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyAwkAAAIJALECAQUKY2lkRGlzcGxheQAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBAiE9AgkAsQIBBQpjaWREaXNwbGF5AC4JAAIBAh5UaGlzIGRvZXNuJ3Qgc2VlbSBhIHZhbGlkIENJRCEDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFBG5hbWUAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgULZGVzY3JpcHRpb24A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMJAGYCCQCQAwEJALUJAgUEdGFncwIBLAAFCQACAQILNSB0YWdzIG1heC4CAAEJaXNQYXltZW50AgFpBWluZGV4AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4BAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBAVwRGF0YQkBCWlzUGF5bWVudAIFAWkAAQQHcGF5bWVudAgFBXBEYXRhAl8xBAZhbW91bnQIBQVwRGF0YQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhdBc3NldCBJZCBpcyBub3QgZGVmaW5lZAMDCQBmAgkAsQIBBQxwcmljZUFzc2V0SWQAAAkAAAIJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAUMcHJpY2VBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAhRQYXltZW50IGRvbid0IG1hdGNoIAkApAMBBQxhcnR3b3JrUHJpY2UCASAJAKQDAQUGYW1vdW50CQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQIhPQIFB2Fzc2V0SWQJANgEAQULVVNETkFzc2V0SWQJAAIBAhJPbmx5IFVTRE4gYWNjZXB0ZWQGAQ92YWxpZGF0ZU1pblNlbGwCB2Fzc2V0SWQFcHJpY2UEDW1pblNlbGxTY29uZXgFDG1pblVTRE5QcmljZQMDAwkBAiE9AgUFcHJpY2UAAAkAZgIFDW1pblNlbGxTY29uZXgFBXByaWNlBwYJAQIhPQIFB2Fzc2V0SWQJANgEAQULVVNETkFzc2V0SWQJAAIBCQCsAgICGVdyb25nIG1pbmltdW0gc2VsbCBwcmljZSAJAKQDAQUNbWluU2VsbFNjb25leAYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMJAAIBAhZPbmx5IFVTRE4gaXMgYWNjZXB0ZWQhCQDZBAEFB2Fzc2V0SWQBFmdldFByaWNlQXNzZXRJZEZyb21CaWQBCmJpZERhdGFLZXkEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAliaWRBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEECmJpZEFzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAADCQBnAgAABQliaWRBbW91bnQJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUJYmlkQW1vdW50BQpiaWRBc3NldElkAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQpnZXRBcnREYXRhBAFpBmlzc3VlcgVhcnRJZAVpc0JpZAQOY2FsbGVySXNJc3N1ZXIJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFBmlzc3VlcgQIdG90YWxORlQJAQ9nZXRJbnRlZ2VyQnlLZXkBAhB0b3RhbF9uZnRfaXNzdWVkBAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZpc3N1ZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAhFBcnQgZG9lc24ndCBleGlzdAQIaXNPblNhbGUJAQ9nZXRCb29sZWFuQnlLZXkBCQEJa2V5T25TYWxlAgUGaXNzdWVyBQVhcnRJZAQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBAxhcnR3b3JrUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEIa2V5UHJpY2UCBQZpc3N1ZXIFBWFydElkBQxtaW5VU0ROUHJpY2UEDHByaWNlQXNzZXRJZAMFDmNhbGxlcklzSXNzdWVyCQDYBAEFC1VTRE5Bc3NldElkCQEOZ2V0U3RyaW5nQnlLZXkBCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMDAwkBASEBBQVpc0JpZAkBASEBBQ5jYWxsZXJJc0lzc3VlcgcDAwkAZwIAAAUMYXJ0d29ya1ByaWNlBgkBASEBBQhpc09uU2FsZQYJAGcCAAAFCm1heENhblNlbGwHCQACAQIQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBASEBBQVpc0JpZAUOY2FsbGVySXNJc3N1ZXIHCQBnAgAABQptYXhDYW5TZWxsBwkAAgECFE1heCBpc3N1YWJsZSBub3Qgc2V0CQCZCgcFCHRvdGFsTkZUBQthcnR3b3JrTmFtZQUKYW1vdW50U29sZAUMYXJ0d29ya1ByaWNlBQxwcmljZUFzc2V0SWQFCm1heENhblNlbGwFCGlzT25TYWxlAQpnZXRCaWREYXRhCQFpBmNhbGxlcgZpc3N1ZXIFYXJ0SWQIYmlkT3duZXIFYmlkSWQMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQVpc0JpZAQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGaXNzdWVyAwMFBWlzQmlkCQECIT0CBQljaGVja1VzZXICAAcJAAIBBQljaGVja1VzZXIECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBAx0MDEzNTE5MTM2NDgDBQVpc0JpZAkBFmdldFByaWNlQXNzZXRJZEZyb21CaWQBBQpiaWREYXRhS2V5CQEUdmFsaWRhdGVQcmljZUFzc2V0SWQDBQFpBQxwcmljZUFzc2V0SWQFDGFydHdvcmtQcmljZQQGYW1vdW50CAUMdDAxMzUxOTEzNjQ4Al8xBAdhc3NldElkCAUMdDAxMzUxOTEzNjQ4Al8yCQCVCgMFCmJpZERhdGFLZXkFBmFtb3VudAUHYXNzZXRJZAEMZ2V0SXNzdWVEYXRhCwZpc3N1ZXIFYXJ0SWQLYXJ0d29ya05hbWUNbmV3QW1vdW50U29sZAptYXhDYW5TZWxsCHRvdGFsTkZUBmNhbGxlcghiaWRPd25lcgViaWRJZAFpCGlzT25TYWxlBAlpc3N1ZU1ldGEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUGaXNzdWVyAggsQXJ0SUQ6IAUFYXJ0SWQCDyxBcnR3b3JrIG5hbWU6IAULYXJ0d29ya05hbWUCCCxJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAMJAQIhPQIFCGJpZE93bmVyAgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGJpZE93bmVyCAUBaQZjYWxsZXIJAJUKAwUKc2VsbFN0YXR1cwUKcmVjZWl2ZU5GVAUJaXNzdWVNZXRhAQxnZXRCaWRLZXlWYWwDB2Fzc2V0SWQKYmlkRGF0YUtleQRkYXRlBAphc3NldElkQmlkAwkBASEBCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAkAAgECFU9ubHkgVVNETiBpcyBhY2NlcHRlZAkA2AQBCQEFdmFsdWUBBQdhc3NldElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWREZWxPbGQJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZFVwZGF0ZQkBC1N0cmluZ0VudHJ5AgkArAICBQpiaWREYXRhS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQCVCgMFCmFzc2V0SWRCaWQFCWJpZERlbE9sZAUJYmlkVXBkYXRlAQdidXlNaW50BgFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgVpc0JpZAQKY2FsbGVyRGF0YQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUKY2FsbGVyRGF0YQJfMQQGY2FsbGVyCAUKY2FsbGVyRGF0YQJfMgQEZGF0ZQgFCmNhbGxlckRhdGECXzMEB2FydERhdGEJAQpnZXRBcnREYXRhBAUBaQUGaXNzdWVyBQVhcnRJZAUFaXNCaWQECHRvdGFsTkZUCAUHYXJ0RGF0YQJfMQQLYXJ0d29ya05hbWUIBQdhcnREYXRhAl8yBAphbW91bnRTb2xkCAUHYXJ0RGF0YQJfMwQMYXJ0d29ya1ByaWNlCAUHYXJ0RGF0YQJfNAQMcHJpY2VBc3NldElkCAUHYXJ0RGF0YQJfNQQKbWF4Q2FuU2VsbAgFB2FydERhdGECXzYECGlzT25TYWxlCAUHYXJ0RGF0YQJfNwQHYmlkRGF0YQkBCmdldEJpZERhdGEJBQFpBQZjYWxsZXIFBmlzc3VlcgUFYXJ0SWQFCGJpZE93bmVyBQViaWRJZAUMcHJpY2VBc3NldElkBQxhcnR3b3JrUHJpY2UFBWlzQmlkBApiaWREYXRhS2V5CAUHYmlkRGF0YQJfMQQGYW1vdW50CAUHYmlkRGF0YQJfMgQHYXNzZXRJZAgFB2JpZERhdGECXzMEDW5ld0Ftb3VudFNvbGQDCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDk1heCBpdGVtcyBzb2xkCQBkAgUKYW1vdW50U29sZAABBAppc3N1ZXJEYXRhCQEMZ2V0SXNzdWVEYXRhCwUGaXNzdWVyBQVhcnRJZAULYXJ0d29ya05hbWUFDW5ld0Ftb3VudFNvbGQFCm1heENhblNlbGwFCHRvdGFsTkZUBQZjYWxsZXIFCGJpZE93bmVyBQViaWRJZAUBaQUIaXNPblNhbGUECnNlbGxTdGF0dXMIBQppc3N1ZXJEYXRhAl8xBApyZWNlaXZlTkZUCAUKaXNzdWVyRGF0YQJfMgQJaXNzdWVNZXRhCAUKaXNzdWVyRGF0YQJfMwQLaWRORlRJbnZva2UJAPwHBAUEdGhpcwIHbWludE5mdAkAzAgCBQh0b3RhbE5GVAkAzAgCBQlpc3N1ZU1ldGEJAMwIAgkApQgBBQpyZWNlaXZlTkZUBQNuaWwFA25pbAMJAAACBQtpZE5GVEludm9rZQULaWRORlRJbnZva2UEBWlkTkZUBAckbWF0Y2gwBQtpZE5GVEludm9rZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXIFByRtYXRjaDAFAXIJAAIBAhdJbmNvcnJlY3QgaW52b2tlIHJlc3VsdAQLYmlkS2V5VmFsdWUJAQxnZXRCaWRLZXlWYWwDBQdhc3NldElkBQpiaWREYXRhS2V5BQRkYXRlBAphc3NldElkQmlkCAULYmlkS2V5VmFsdWUCXzEECWJpZERlbE9sZAgFC2JpZEtleVZhbHVlAl8yBAliaWRVcGRhdGUIBQtiaWRLZXlWYWx1ZQJfMwQHc29sZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUNbmV3QW1vdW50U29sZAIEX29mXwkApAMBBQptYXhDYW5TZWxsAgFfBQVhcnRJZAIBXwUGaXNzdWVyBAlzb2xkVmFsdWUDCQEBIQEFBWlzQmlkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBmNhbGxlcgIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQxhcnR3b3JrUHJpY2UCAV8FDHByaWNlQXNzZXRJZAIBXwUFaWRORlQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQpyZWNlaXZlTkZUAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFBmFtb3VudAIBXwUKYXNzZXRJZEJpZAIBXwUFaWRORlQEEmludm9rZVRlYW1GZWVTcGxpdAkA/AcECQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUHZmVlRGFwcAkArAICBQdmZWVEYXBwAgogbm90IGZvdW5kAgZwYXlGZWUJAMwIAgUFYXJ0SWQJAMwIAgUGaXNzdWVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFEmludm9rZVRlYW1GZWVTcGxpdAUSaW52b2tlVGVhbUZlZVNwbGl0BAhzb2xkRGF0YQkBC1N0cmluZ0VudHJ5AgUHc29sZEtleQUJc29sZFZhbHVlBAZidXlSZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBQ1uZXdBbW91bnRTb2xkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwUFaWRORlQFB3NvbGRLZXkJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQh0b3RhbE5GVAABCQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGaXNzdWVyBQVhcnRJZAUKc2VsbFN0YXR1cwkAzAgCCQELU3RyaW5nRW50cnkCCQEMS2V5TmZ0SXNzdWVyAQUFaWRORlQFBmlzc3VlcgkAzAgCCQELU3RyaW5nRW50cnkCCQELS2V5TmZ0QXJ0SWQBBQVpZE5GVAUFYXJ0SWQFA25pbAQfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQkA/AcECQETdmFsdWVPckVycm9yTWVzc2FnZQIFCXN0YWtlRGFwcAIOdGhpcyBub3QgZm91bmQCGXZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlBANyZXMJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUIY2VydERhcHACCmNyZWF0ZUNlcnQJAMwIAgkApQgBBQpyZWNlaXZlTkZUCQDMCAIFBWlkTkZUCQDMCAIFBmlzc3VlcgUDbmlsBQNuaWwDCQAAAgUDcmVzBQNyZXMDBQVpc0JpZAkAzQgCCQDNCAIJAM0IAgUGYnV5UmVzBQhzb2xkRGF0YQUJYmlkVXBkYXRlBQliaWREZWxPbGQJAMwIAgUIc29sZERhdGEFBmJ1eVJlcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEUc2V0QmlkTm9uVHJhZGl0aW9uYWwDAWkFYXJ0SWQGaXNzdWVyBAx0MDI3NzA5Mjc3NDcJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDHQwMjc3MDkyNzc0NwJfMQQGY2FsbGVyCAUMdDAyNzcwOTI3NzQ3Al8yBARkYXRlCAUMdDAyNzcwOTI3NzQ3Al8zBAx0MDI3NzUyMjc3ODgJAQlpc1BheW1lbnQCBQFpAAAEB3BheW1lbnQIBQx0MDI3NzUyMjc3ODgCXzEEBmFtb3VudAgFDHQwMjc3NTIyNzc4OAJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhZPbmx5IFVTRE4gaXMgYWNjZXB0ZWQhCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAQfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQkA/AcECQETdmFsdWVPckVycm9yTWVzc2FnZQIFCXN0YWtlRGFwcAIOdGhpcyBub3QgZm91bmQCGXZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAEFA25pbAMJAAACBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQdhc3NldElkAgFfCQCkAwEFBmFtb3VudAIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGQCBQZiaWROYnIAAQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFzZXRCaWRUcmFkaXRpb25hbAMBaQVhcnRJZAZpc3N1ZXIECWVuZEhlaWdodAkBD2dldEludGVnZXJCeUtleQEJAQxrZXlFbmRIZWlnaHQCBQZpc3N1ZXIFBWFydElkBApoaWdoZXN0QmlkCQEaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQBBQVhcnRJZAMJAGYCBQZoZWlnaHQFCWVuZEhlaWdodAkAAgECIVRoaXMgYXVjdGlvbiBpcyBmaW5pc2hlZCBhbHJlYWR5IQQLY2FsbGRlckRhdGEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFC2NhbGxkZXJEYXRhAl8xBAZjYWxsZXIIBQtjYWxsZGVyRGF0YQJfMgQEZGF0ZQgFC2NhbGxkZXJEYXRhAl8zBAxpc1BheW1lbnRWYXIJAQlpc1BheW1lbnQCBQFpAAAEB3BheW1lbnQIBQxpc1BheW1lbnRWYXICXzEEBmFtb3VudAgFDGlzUGF5bWVudFZhcgJfMgMJAGcCBQpoaWdoZXN0QmlkBQZhbW91bnQJAAIBCQCsAgICIFBsZWFzZSBwbGFjZSBhIGJpZCBoaWdoZXIgdGhhbjogCQCkAwEFCmhpZ2hlc3RCaWQEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIWT25seSBVU0ROIGlzIGFjY2VwdGVkIQkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQED21pbkFydHdvcmtQcmljZQkBC3ZhbHVlT3JFbHNlAgkBD2dldEludGVnZXJCeUtleQEJAQhrZXlQcmljZQIFBmlzc3VlcgUFYXJ0SWQFDG1pblVTRE5QcmljZQMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkAZgIFD21pbkFydHdvcmtQcmljZQUGYW1vdW50CQACAQIXQmlkIGlzIGJlbG93IG1pbiBwcmljZSEECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMJAGcCAAAFCm1heENhblNlbGwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkBB92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUJc3Rha2VEYXBwAg50aGlzIG5vdCBmb3VuZAIZdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudAUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAQUDbmlsAwkAAAIFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FBmNhbGxlcgIBXwUCaWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIFB2Fzc2V0SWQCAV8JAKQDAQUGYW1vdW50AgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZAIFBmJpZE5icgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlIaWdoZXN0QmlkQmlkSWQBBQVhcnRJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5QmlkSWQBCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFBmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARdhY2NlcHRCaWROb25UcmFkaXRpb25hbAUBaQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIEBmNhbGxlcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AgUGY2FsbGVyBQZpc3N1ZXIJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uCQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkBQhiaWRPd25lcgYBDnJlc3RhcnRBdWN0aW9uAgVhcnRJZAZpc3N1ZXIECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAQMb2xkRW5kSGVpZ2h0CQEPZ2V0SW50ZWdlckJ5S2V5AQkBDGtleUVuZEhlaWdodAIFBmlzc3VlcgUFYXJ0SWQECGR1cmF0aW9uCQEPZ2V0SW50ZWdlckJ5S2V5AQkBC2tleUR1cmF0aW9uAgUGaXNzdWVyBQVhcnRJZAQJZW5kSGVpZ2h0CQBkAgUIZHVyYXRpb24FBmhlaWdodAMJAGcCBQxvbGRFbmRIZWlnaHQFBmhlaWdodAkAAgECJFByZXZpb3VzIGF1Y3Rpb24gaXNuJ3QgY29tcGxldGVkIHlldAMJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQImQ2FuJ3QgcmVzdGFydCBhdWN0aW9uLCBtYXggYW1vdW50IHNvbGQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlFbmRIZWlnaHQCBQZpc3N1ZXIFBWFydElkBQllbmRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkBQNuaWwBFGFjY2VwdEJpZFRyYWRpdGlvbmFsBQFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQJZW5kSGVpZ2h0CQEPZ2V0SW50ZWdlckJ5S2V5AQkBDGtleUVuZEhlaWdodAIFBmlzc3VlcgUFYXJ0SWQEDGhpZ2hlc3RCaWRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkAwkAZwIFCWVuZEhlaWdodAUGaGVpZ2h0CQACAQIhVGhpcyBhdWN0aW9uIGlzIG5vdCB5ZXQgZmluaXNoZWQhAwkBAiE9AgUFYmlkSWQFDGhpZ2hlc3RCaWRJZAkAAgECHFRoaXMgaXMgbm90IHRoZSB3aW5uaW5nIGJpZCEEC2J1eU1pbnREYXRhCQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkBQhiaWRPd25lcgYEEnJlc3RhcnRBdWN0aW9uRGF0YQkBDnJlc3RhcnRBdWN0aW9uAgUFYXJ0SWQFBmlzc3VlcgkAzggCBRJyZXN0YXJ0QXVjdGlvbkRhdGEFC2J1eU1pbnREYXRhAQ1jYW5jZWxCaWRJbXBsBAFpBWFydElkBmlzc3VlcgViaWRJZAQMdDAyODk0MjI5MDk0CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQx0MDI4OTQyMjkwOTQCXzEEBmNhbGxlcggFDHQwMjg5NDIyOTA5NAJfMgQEZGF0ZQgFDHQwMjg5NDIyOTA5NAJfMwQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FBmNhbGxlcgIBXwUFYmlkSWQEB2JpZERhdGEJARVnZXRTdHJpbmdCeUtleU9yRXJyb3ICCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAAECWJpZFN0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUKYmlkRGF0YUtleQIBXwUJYmlkU3RhdHVzCQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGUCBQZiaWROYnIAAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwBGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbAQBaQVhcnRJZAZpc3N1ZXIFYmlkSWQEDHQwMjg5NDIyOTA5NAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUMdDAyODk0MjI5MDk0Al8xBAZjYWxsZXIIBQx0MDI4OTQyMjkwOTQCXzIEBGRhdGUIBQx0MDI4OTQyMjkwOTQCXzMEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAQKYmlkRGF0YUtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FBWJpZElkBAdiaWREYXRhCQEVZ2V0U3RyaW5nQnlLZXlPckVycm9yAgkArAICBQpiaWREYXRhS2V5AgVfT1BFTgINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAABAliaWRTdGF0dXMCCENBTkNFTEVEBAliaWRBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEEDGhpZ2hlc3RCaWRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkAwkAAAIFBWJpZElkBQxoaWdoZXN0QmlkSWQJAAIBAiFZb3UgY2FuJ3QgY2FuY2VsIHRoZSBoaWdoZXN0IGJpZCEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUKYmlkRGF0YUtleQIBXwUJYmlkU3RhdHVzCQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGUCBQZiaWROYnIAAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyBQliaWRBbW91bnQFB2Fzc2V0SWQFA25pbAwBaQEIaW5pdERhcHABB2RhcHBLZXkDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uAwkBAiE9AgUGb3JhY2xlAgAJAAIBAidvcmFjbGUgYWxyZWFkeSBzZXQsIHlvdSBjYW4ndCBvdmVycmlkZSEJAMwIAgkBC1N0cmluZ0VudHJ5AgUJb3JhY2xlS2V5BQdkYXBwS2V5BQNuaWwBaQEUcmVzdGFydEF1Y3Rpb25NYW51YWwBBWFydElkAwkBAiE9AgkBGmdldEFtb3VudEhpZ2hlc3RCaWRCeUFydElkAQUFYXJ0SWQAAAkAAgECHlBsZWFzZSBhY2NlcHQgdGhlIGhpZ2hlc3QgYmlkIQkBDnJlc3RhcnRBdWN0aW9uAgUFYXJ0SWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwFpAQdtaW50TmZ0Awh0b3RhbE5GVAlpc3N1ZU1ldGEKcmVjZWl2ZU5GVAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHE9ubHkgdGhlIGRBcHAgY2FuIG1pbnQgTkZUJ3MEDnJlY2VpdmVORlRBZGR5CQEHQWRkcmVzcwEJANkEAQUKcmVjZWl2ZU5GVAQIaXNzdWVORlQJAMIIBQkArAICAgdTQ09ORVhfCQCkAwEJAGQCBQh0b3RhbE5GVAABBQlpc3N1ZU1ldGEAAQAABwQFaWRORlQJALgIAQUIaXNzdWVORlQJAJQKAgkAzAgCBQhpc3N1ZU5GVAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5yZWNlaXZlTkZUQWRkeQABBQVpZE5GVAUDbmlsCQDYBAEFBWlkTkZUAWkBCmFkZEFydHdvcmsKCnNoYTI1Nkhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUKY2lkRGlzcGxheQtlbnRpdGxlbWVudAdwcmV2aWV3CmNvbGxlY3Rpb24Nc3ViY29sbGVjdGlvbgQMdDAxNzc0MDE3NzgxCQEMaWRDYWxsZXJEYXRlAQUBaQQFYXJ0SWQIBQx0MDE3NzQwMTc3ODECXzEEBmNhbGxlcggFDHQwMTc3NDAxNzc4MQJfMgQEZGF0ZQgFDHQwMTc3NDAxNzc4MQJfMwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFBXR5cGVzBQR0eXBlCQACAQIMVW5rbm93biB0eXBlBA92YWxpZGF0ZUFydHdvcmsJARN2YWxpZGF0ZUFydHdvcmtEYXRhBQUGY2FsbGVyBQpjaWREaXNwbGF5BQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBB92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUJc3Rha2VEYXBwAg50aGlzIG5vdCBmb3VuZAIZdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudAUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAAUDbmlsAwkAAAIFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UEC3ByZXZpZXdEYXRhAwkBD2NvbnRhaW5zRWxlbWVudAIFDFByZXZpZXd0eXBlcwUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UHJldmlld0NpZAIFBmNhbGxlcgUFYXJ0SWQFB3ByZXZpZXcFA25pbAUDbmlsBBZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ9jb2xsZWN0aW9uc0RhcHAJAKwCAgUPY29sbGVjdGlvbnNEYXBwAgogbm90IGZvdW5kAhFjb2xsZWN0aW9uUHJvY2VzcwkAzAgCBQpjb2xsZWN0aW9uCQDMCAIFDXN1YmNvbGxlY3Rpb24JAMwIAgUGY2FsbGVyBQNuaWwFA25pbAMJAAACBRZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlBRZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQESa2V5VHhpZEJ5SGFzaE93bmVyAgUKc2hhMjU2SGFzaAUGY2FsbGVyAwkBAiE9AgUKZW50cnlFeGlzdAIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQECWhhc2hFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAMJAQIhPQIFCWhhc2hFeGlzdAIACQACAQIfVGhpcyBoYXNoIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAkAzggCBQtwcmV2aWV3RGF0YQkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5T3duZXJCeUhhc2gBBQpzaGEyNTZIYXNoBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleVR4aWRCeUhhc2hPd25lcgIFCnNoYTI1Nkhhc2gFBmNhbGxlcgUFYXJ0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlEYXRlAgUGY2FsbGVyBQVhcnRJZAUEZGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleURlc2MCBQZjYWxsZXIFBWFydElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUFYXJ0SWQFCmNpZERpc3BsYXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVR5cGUCBQZjYWxsZXIFBWFydElkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQVhcnRJZAUEdGFncwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5SGFzaEJ5VHhpZEFkZHICBQZjYWxsZXIFBWFydElkBQpzaGEyNTZIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlFbnRpdGxlbWVudAIFBmNhbGxlcgUFYXJ0SWQFC2VudGl0bGVtZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2VsbEFydHdvcmsMBWFydElkBXByaWNlB21heE1pbnQHYXNzZXRJZAthdWN0aW9uVHlwZQhkdXJhdGlvbgRhZGQxBGFkZDIEYWRkMwZhZGQxU2gGYWRkMlNoBmFkZDNTaAQIY2FsbERhdGEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFCGNhbGxEYXRhAl8xBAZjYWxsZXIIBQhjYWxsRGF0YQJfMgQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQEH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UJAPwHBAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQlzdGFrZURhcHACDnRoaXMgbm90IGZvdW5kAhl2YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50BQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwAABQNuaWwDCQAAAgUfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQUfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQMDCQBmAgUGYmlkTmJyAAAGCQBmAgUKYW1vdW50U29sZAAACQACAQI4VGhlcmUgYXJlIGJpZHMgb3IgaXRlbXMgc29sZCwgeW91IGNhbiBub3QgZWRpdCBhbnl0aGluZyEEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGF1Y3Rpb25UeXBlMQkAzAgCBQxhdWN0aW9uVHlwZTIJAMwIAgUMYXVjdGlvblR5cGUzBQNuaWwFC2F1Y3Rpb25UeXBlCQACAQIfV2UgZG9uJ3Qga25vdyB0aGlzIGF1Y3Rpb24gdHlwZQMJAAACBQthcnR3b3JrTmFtZQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFB2Fzc2V0SWQFBXByaWNlCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAGYCBQdtYXhNaW50AJBOCQACAQIeMTAwMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrBApzZWxsU3RhdHVzAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBAd0ZWFtRmVlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdmZWVEYXBwCQCsAgIFB2ZlZURhcHACCiBub3QgZm91bmQCDHRlYW1TcGxpdEZlZQkAzAgCBQVhcnRJZAkAzAgCBQtmZWVSZWNlaXZlcgkAzAgCAgAJAMwIAgIACQDMCAIAAwkAzAgCAAAJAMwIAgAABQNuaWwFA25pbAMJAAACBQd0ZWFtRmVlBQd0ZWFtRmVlBApjcmVhdG9yRmVlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdmZWVEYXBwCQCsAgIFB2ZlZURhcHACCiBub3QgZm91bmQCD2NyZWF0b3JTcGxpdEZlZQkAzAgCBQVhcnRJZAkAzAgCBQRhZGQxCQDMCAIFBGFkZDIJAMwIAgUEYWRkMwkAzAgCBQZhZGQxU2gJAMwIAgUGYWRkMlNoCQDMCAIFBmFkZDNTaAUDbmlsBQNuaWwDCQAAAgUKY3JlYXRvckZlZQUKY3JlYXRvckZlZQQJZW5kSGVpZ2h0CQBkAgUIZHVyYXRpb24FBmhlaWdodAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmNhbGxlcgUFYXJ0SWQFCnNlbGxTdGF0dXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQhrZXlQcmljZQIFBmNhbGxlcgUFYXJ0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQFB21heE1pbnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlEdXJhdGlvbgIFBmNhbGxlcgUFYXJ0SWQFCGR1cmF0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5RW5kSGVpZ2h0AgUGY2FsbGVyBQVhcnRJZAUJZW5kSGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBdWN0aW9uVHlwZQIFBmNhbGxlcgUFYXJ0SWQFC2F1Y3Rpb25UeXBlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2FuY2VsU2FsZQIFYXJ0SWQJbWF4VG9TZWxsBApjYWxsZXJEYXRhCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQpjYWxsZXJEYXRhAl8xBAZjYWxsZXIIBQpjYWxsZXJEYXRhAl8yBAthdWN0aW9uVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEOa2V5QXVjdGlvblR5cGUCBQZjYWxsZXIFBWFydElkAixEbyBub3QgdHJ5IHRvIGVkaXQgYSBhdWN0aW9uIHlvdSBkbyBub3Qgb3duIQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYXVjdGlvblR5cGUxCQDMCAIFDGF1Y3Rpb25UeXBlMwUDbmlsBQthdWN0aW9uVHlwZQkAAgECJ1lvdSBjYW4gbm90IGNhbmNlbCB0aGlzIHR5cGUgb2YgYXVjdGlvbgQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAwkAZgIFCmFtb3VudFNvbGQFCW1heFRvU2VsbAkAAgEJAKwCAgInWW91IGNhbiBub3QgbG93ZXIgdGhlIG1heENhblNlbGwgYmVsb3cgCQCkAwEFCmFtb3VudFNvbGQDCQBmAgUJbWF4VG9TZWxsBQptYXhDYW5TZWxsCQACAQItWW91IGNhbiBub3QgaW5jcmVhc2UgdGhlIG1heENhblNlbGwgcGFyYW1ldGVyBAlib29sRW50cnkDCQAAAgUJbWF4VG9TZWxsBQphbW91bnRTb2xkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAcFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAUJbWF4VG9TZWxsBQNuaWwFCWJvb2xFbnRyeQFpAQpidXlBcnR3b3JrAgVhcnRJZAZpc3N1ZXIEC2F1Y3Rpb25UeXBlCQEOZ2V0U3RyaW5nQnlLZXkBCQEOa2V5QXVjdGlvblR5cGUCBQZpc3N1ZXIFBWFydElkAwkAAAIFC2F1Y3Rpb25UeXBlBQxhdWN0aW9uVHlwZTMJAQdidXlNaW50BgUBaQUFYXJ0SWQFBmlzc3VlcgIAAgAHCQACAQI0RGlyZWN0IGJ1eSBvbmx5IGFsbG93ZWQgd2hlbiBubyBhdWN0aW9uIHR5cGUgaXMgc2V0IQFpAQp1cGRhdGVUYWdzAwZhcnRpc3QFYXJ0SWQEdGFncwQGY2FsbGVyCQClCAEJAKcIAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUGb3duZXJzBQZjYWxsZXIJAAIBAgJubwMJAGYCCQCQAwEJALUJAgUEdGFncwIBLAAFCQACAQILNSB0YWdzIG1heC4EB3RhZ3NPbGQJARVnZXRTdHJpbmdCeUtleU9yRXJyb3ICCQEHa2V5VGFncwIFBmFydGlzdAUFYXJ0SWQCL05vIHRhZ3MgY3JlYXRlZCB3aXRoIHRoaXMga2V5LCBzbyBjYW4ndCB1cGRhdGUhAwkAAAIFBHRhZ3MFB3RhZ3NPbGQJAAIBAh5UYWdzIGFyZSB0aGUgc2FtZSBhcyBvbGQgdGFncyEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVRhZ3MCBQZhcnRpc3QFBWFydElkBQR0YWdzBQNuaWwBaQELZGVsZXRlRW50cnkBBWVudHJ5BAZjYWxsZXIJAKUIAQkApwgBCAUBaQ9jYWxsZXJQdWJsaWNLZXkDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQZvd25lcnMFBmNhbGxlcgkAAgECAm5vCQDMCAIJAQtEZWxldGVFbnRyeQEFBWVudHJ5BQNuaWwBaQEGc2V0QmlkAgVhcnRJZAZpc3N1ZXIEC2F1Y3Rpb25UeXBlCQEOZ2V0U3RyaW5nQnlLZXkBCQEOa2V5QXVjdGlvblR5cGUCBQZpc3N1ZXIFBWFydElkAwkAAAIFC2F1Y3Rpb25UeXBlBQxhdWN0aW9uVHlwZTEJARRzZXRCaWROb25UcmFkaXRpb25hbAMFAWkFBWFydElkBQZpc3N1ZXIDCQAAAgULYXVjdGlvblR5cGUFDGF1Y3Rpb25UeXBlMgkBEXNldEJpZFRyYWRpdGlvbmFsAwUBaQUFYXJ0SWQFBmlzc3VlcgkAAgEJAKwCAgkArAICAhZVbmtub3duIGF1Y3Rpb24gdHlwZSA6BQthdWN0aW9uVHlwZQIbLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zAWkBCWFjY2VwdEJpZAQFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBAthdWN0aW9uVHlwZQkBDmdldFN0cmluZ0J5S2V5AQkBDmtleUF1Y3Rpb25UeXBlAgUGaXNzdWVyBQVhcnRJZAMJAAACBQthdWN0aW9uVHlwZQUMYXVjdGlvblR5cGUxCQEXYWNjZXB0QmlkTm9uVHJhZGl0aW9uYWwFBQFpBQVhcnRJZAUGaXNzdWVyBQViaWRJZAUIYmlkT3duZXIDCQAAAgULYXVjdGlvblR5cGUFDGF1Y3Rpb25UeXBlMgkBFGFjY2VwdEJpZFRyYWRpdGlvbmFsBQUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyCQACAQkArAICCQCsAgICFlVua25vd24gYXVjdGlvbiB0eXBlIDoFC2F1Y3Rpb25UeXBlAhssIHBsZWFzZSBjb250YWN0IHRoZSBhZG1pbnMBaQEJY2FuY2VsQmlkAwVhcnRJZAZpc3N1ZXIFYmlkSWQEC2F1Y3Rpb25UeXBlCQEOZ2V0U3RyaW5nQnlLZXkBCQEOa2V5QXVjdGlvblR5cGUCBQZpc3N1ZXIFBWFydElkAwkAAAIFC2F1Y3Rpb25UeXBlBQxhdWN0aW9uVHlwZTEJAQ1jYW5jZWxCaWRJbXBsBAUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQJARhjYW5jZWxCaWRJbXBsVHJhZGl0aW9uYWwEBQFpBQVhcnRJZAUGaXNzdWVyBQViaWRJZABjhvL3", "height": 2161455, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3w473HXbrFgnfqQGSeH6AzAL8tq2j1KHiNE4xbd2raF3 Next: GLDpPKi4RNQ3oPnh2uBiTa69SC9qTs6Tcw6GQaU5ZRtd Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
250250
251251 func aR (aP,aS) = {
252252 let aT = ap
253- if (if ((aT > aS))
253+ if (if (if ((aS != 0))
254+ then (aT > aS)
255+ else false)
254256 then true
255257 else (aP != toBase58String(p)))
256258 then throw(("Wrong minimum sell price " + toString(aT)))
676678 let br = if ((aS > 0))
677679 then (cy > 0)
678680 else false
679- let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [N, k, "", "", 15, 0, 0], nil)
681+ let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [N, k, "", "", 3, 0, 0], nil)
680682 if ((cH == cH))
681683 then {
682684 let cI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [N, cA, cB, cC, cD, cE, cF], nil)
697699
698700
699701 @Callable(aF)
702+func cancelSale (N,cJ) = {
703+ let bz = bb(aF)
704+ let bA = bz._1
705+ let L = bz._2
706+ let cz = valueOrErrorMessage(Y(L, N), "Do not try to edit a auction you do not own!")
707+ if (!(containsElement([y, A], cz)))
708+ then throw("You can not cancel this type of auction")
709+ else {
710+ let bj = G(Z(L, N))
711+ let bk = G(S(L, N))
712+ if ((bj > cJ))
713+ then throw(("You can not lower the maxCanSell below " + toString(bj)))
714+ else if ((cJ > bk))
715+ then throw("You can not increase the maxCanSell parameter")
716+ else {
717+ let cK = if ((cJ == bj))
718+ then [BooleanEntry(ad(L, N), false)]
719+ else nil
720+ ([IntegerEntry(S(L, N), cJ)] ++ cK)
721+ }
722+ }
723+ }
724+
725+
726+
727+@Callable(aF)
700728 func buyArtwork (N,bd) = {
701729 let cz = C(Y(bd, N))
702730 if ((cz == A))
707735
708736
709737 @Callable(aF)
710-func updateTags (cJ,N,aC) = {
738+func updateTags (cL,N,aC) = {
711739 let L = toString(addressFromPublicKey(aF.callerPublicKey))
712740 if (!(containsElement(i, L)))
713741 then throw("no")
714742 else if ((size(split(aC, ",")) > 5))
715743 then throw("5 tags max.")
716744 else {
717- let cK = D(af(cJ, N), "No tags created with this key, so can't update!")
718- if ((aC == cK))
745+ let cM = D(af(cL, N), "No tags created with this key, so can't update!")
746+ if ((aC == cM))
719747 then throw("Tags are the same as old tags!")
720- else [StringEntry(af(cJ, N), aC)]
748+ else [StringEntry(af(cL, N), aC)]
721749 }
722750 }
723751
724752
725753
726754 @Callable(aF)
727-func deleteEntry (cL) = {
755+func deleteEntry (cN) = {
728756 let L = toString(addressFromPublicKey(aF.callerPublicKey))
729757 if (!(containsElement(i, L)))
730758 then throw("no")
731- else [DeleteEntry(cL)]
759+ else [DeleteEntry(cN)]
732760 }
733761
734762
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = "oracleKey"
77
88 func c (d) = {
99 let e = getString(this, d)
1010 if ($isInstanceOf(e, "String"))
1111 then {
1212 let f = e
1313 f
1414 }
1515 else ""
1616 }
1717
1818
1919 let g = c(b)
2020
2121 let h = value(addressFromString(g))
2222
2323 let i = [getString(h, "owner1"), getString(h, "owner2")]
2424
2525 let j = valueOrErrorMessage(getString(h, "collectionsDapp"), "collectionDapp not found")
2626
2727 let k = valueOrErrorMessage(getString(h, "feeReceiver"), "feeReceiver not found")
2828
2929 let l = valueOrErrorMessage(getString(h, "certDapp"), "certDapp not found")
3030
3131 let m = valueOrErrorMessage(getString(h, "feeDapp"), "feeDapp not found")
3232
3333 let n = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
3434
3535 let o = addressFromString(valueOrErrorMessage(getString(h, "stakeDapp"), "sconexDapp not found"))
3636
3737 let p = fromBase58String(getStringValue(h, "USDNAssetId"))
3838
3939 let q = fromBase58String(getStringValue(h, "SconexAssetId"))
4040
4141 let r = ["IMAGE", "PDF", "VIDEO"]
4242
4343 let s = ["PDF"]
4444
4545 let t = valueOrElse(getBoolean(n, "conf_dapp_is_running"), true)
4646
4747 let u = valueOrElse(getString(n, "conf_maintenance_msg"), "")
4848
4949 let v = "SUSPENDED"
5050
5151 let w = "REMOVED"
5252
5353 let x = "UNREGISTERED"
5454
5555 let y = "BIDTYPE"
5656
5757 let z = "TRADITIONAL"
5858
5959 let A = "DIRECT"
6060
6161 func B (d) = valueOrElse(getString(n, d), "")
6262
6363
6464 func C (d) = valueOrElse(getString(this, d), "")
6565
6666
6767 func D (d,E) = valueOrErrorMessage(getString(this, d), E)
6868
6969
7070 func F (d) = valueOrErrorMessage(getInteger(h, d), "Integer undefine or 0 in oracle")
7171
7272
7373 func G (d) = valueOrElse(getInteger(this, d), 0)
7474
7575
7676 func H (d) = valueOrElse(getBoolean(this, d), false)
7777
7878
7979 func I (J) = (size(J) == 64)
8080
8181
8282 func K (L) = ("user_status_" + L)
8383
8484
8585 func M (L,N) = ((("art_date_" + N) + "_") + L)
8686
8787
8888 func O (L,N) = ((("art_name_" + N) + "_") + L)
8989
9090
9191 func P (L,N) = ((("art_desc_" + N) + "_") + L)
9292
9393
9494 func Q (L,N) = ((("art_display_cid_" + N) + "_") + L)
9595
9696
9797 func R (L,N) = ((("art_preview_cid_" + N) + "_") + L)
9898
9999
100100 func S (L,N) = ((("art_maxmint_" + N) + "_") + L)
101101
102102
103103 func T (N) = ("art_highestBidBidId_" + N)
104104
105105
106106 func U (V) = ("bid_" + V)
107107
108108
109109 func W (L,N) = ((("art_duration_" + N) + "_") + L)
110110
111111
112112 func X (L,N) = ((("art_endheight_" + N) + "_") + L)
113113
114114
115115 func Y (L,N) = ((("art_auctiontype_" + N) + "_") + L)
116116
117117
118118 func Z (L,N) = ((("art_issued_" + N) + "_") + L)
119119
120120
121121 func aa (ab) = ("nft_issued_" + ab)
122122
123123
124124 func ac (ab) = ("nft_artId_" + ab)
125125
126126
127127 func ad (L,N) = ((("art_onsale_" + N) + "_") + L)
128128
129129
130130 func ae (L,N) = ((("art_entitlement_" + N) + "_") + L)
131131
132132
133133 func af (L,N) = ((("art_tags_" + N) + "_") + L)
134134
135135
136136 func ag (L,N) = ((("art_type_" + N) + "_") + L)
137137
138138
139139 func ah (L,N) = ((("art_price_" + N) + "_") + L)
140140
141141
142142 func ai (L,N) = ((("art_assetAccepted_" + N) + "_") + L)
143143
144144
145145 func aj (L,ak) = ((("get_hashbytxidaddr_" + ak) + "_") + L)
146146
147147
148148 func al (am) = ("get_owner_by_hash_" + am)
149149
150150
151151 func an (am,L) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((am + L)))))
152152
153153
154154 func ao (L,N) = ((("collection_" + N) + "_") + L)
155155
156156
157157 let ap = F(("min_" + toBase58String(p)))
158158
159159 let aq = F(("fee_" + toBase58String(q)))
160160
161161 func ar (V) = valueOrElse(G(U(V)), 0)
162162
163163
164164 func as (N) = {
165165 let V = C(T(N))
166166 ar(V)
167167 }
168168
169169
170170 func at (au,av) = if ((size(au) == 0))
171171 then throw("Field cannot be is empty")
172172 else if ((size(au) > av))
173173 then throw((au + " is too long"))
174174 else true
175175
176176
177177 func aw (L) = {
178178 let ax = valueOrElse(getString(n, K(L)), x)
179179 if ((ax == x))
180180 then "Register this account first with 'Account' tab"
181181 else if ((ax == v))
182182 then "Account suspended"
183183 else if ((ax == w))
184184 then "Account removed"
185185 else ""
186186 }
187187
188188
189189 func ay (L,az,aA,aB,aC) = {
190190 let aD = aw(L)
191191 if ((aD != ""))
192192 then throw(aD)
193193 else if ((size(az) == 0))
194194 then throw("Display CID cannot be empty")
195195 else if ((size(az) != 46))
196196 then throw("This doesn't seem a valid CID!")
197197 else if (!(at(aA, 100)))
198198 then throw("100 Char. max name")
199199 else if (!(at(aB, 1000)))
200200 then throw("1000 Char. max description")
201201 else if ((size(split(aC, ",")) > 5))
202202 then throw("5 tags max.")
203203 else ""
204204 }
205205
206206
207207 func aE (aF,aG) = if ((size(aF.payments) == 0))
208208 then throw("No payment attached")
209209 else {
210210 let aH = value(aF.payments[aG])
211211 let aI = value(aH.amount)
212212 $Tuple2(aH, aI)
213213 }
214214
215215
216216 func aJ (aK,N) = {
217217 let e = getInteger(this, Z(aK, N))
218218 if ($isInstanceOf(e, "Int"))
219219 then {
220220 let f = e
221221 if ((f != 0))
222222 then true
223223 else false
224224 }
225225 else false
226226 }
227227
228228
229229 func aL (aF,aM,aN) = {
230230 let aO = aE(aF, 1)
231231 let aH = aO._1
232232 let aI = aO._2
233233 let aP = if (!(isDefined(aH.assetId)))
234234 then throw("Asset Id is not defined")
235235 else if (if ((size(aM) > 0))
236236 then (toBase58String(value(aH.assetId)) == aM)
237237 else false)
238238 then aH.assetId
239239 else throw("Wrong asset id")
240240 if ((aN != aI))
241241 then throw(((("Payment don't match " + toString(aN)) + " ") + toString(aI)))
242242 else $Tuple2(aI, aP)
243243 }
244244
245245
246246 func aQ (aP) = if ((aP != toBase58String(p)))
247247 then throw("Only USDN accepted")
248248 else true
249249
250250
251251 func aR (aP,aS) = {
252252 let aT = ap
253- if (if ((aT > aS))
253+ if (if (if ((aS != 0))
254+ then (aT > aS)
255+ else false)
254256 then true
255257 else (aP != toBase58String(p)))
256258 then throw(("Wrong minimum sell price " + toString(aT)))
257259 else true
258260 }
259261
260262
261263 func aU (aP) = if ((aP == "WAVES"))
262264 then throw("Only USDN is accepted!")
263265 else fromBase58String(aP)
264266
265267
266268 func aV (aW) = {
267269 let aX = C((aW + "_OPEN"))
268270 if ((aX == ""))
269271 then throw("Bid not found")
270272 else {
271273 let aY = split(aX, "_")
272274 let aZ = parseIntValue(aY[1])
273275 let ba = aU(aY[0])
274276 if ((0 >= aZ))
275277 then throw("Wrong amount")
276278 else $Tuple2(aZ, ba)
277279 }
278280 }
279281
280282
281283 func bb (aF) = if (!(t))
282284 then throw(u)
283285 else $Tuple3(toBase58String(aF.transactionId), toBase58String(aF.caller.bytes), lastBlock.timestamp)
284286
285287
286288 func bc (aF,bd,N,be) = {
287289 let bf = (toBase58String(aF.caller.bytes) == bd)
288290 let bg = G("total_nft_issued")
289291 let bh = C(O(bd, N))
290292 if ((bh == ""))
291293 then throw("Art doesn't exist")
292294 else {
293295 let bi = H(ad(bd, N))
294296 let bj = G(Z(bd, N))
295297 let aN = valueOrElse(G(ah(bd, N)), ap)
296298 let aM = if (bf)
297299 then toBase58String(p)
298300 else C(ai(bd, N))
299301 let bk = G(S(bd, N))
300302 if (if (if (!(be))
301303 then !(bf)
302304 else false)
303305 then if (if ((0 >= aN))
304306 then true
305307 else !(bi))
306308 then true
307309 else (0 >= bk)
308310 else false)
309311 then throw("Art not for sale")
310312 else if (if (if (!(be))
311313 then bf
312314 else false)
313315 then (0 >= bk)
314316 else false)
315317 then throw("Max issuable not set")
316318 else $Tuple7(bg, bh, bj, aN, aM, bk, bi)
317319 }
318320 }
319321
320322
321323 func bl (aF,L,bd,N,bm,V,aM,aN,be) = {
322324 let aD = aw(bd)
323325 if (if (be)
324326 then (aD != "")
325327 else false)
326328 then throw(aD)
327329 else {
328330 let aW = ((((((("bid_" + N) + "_") + bd) + "_") + bm) + "_") + V)
329331 let bn = if (be)
330332 then aV(aW)
331333 else aL(aF, aM, aN)
332334 let aI = bn._1
333335 let aP = bn._2
334336 $Tuple3(aW, aI, aP)
335337 }
336338 }
337339
338340
339341 func bo (bd,N,bh,bp,bk,bg,L,bm,V,aF,bi) = {
340342 let bq = ((((((((("Creator: " + bd) + ",ArtID: ") + N) + ",Artwork name: ") + bh) + ",Issue: ") + toString(bp)) + "/") + toString(bk))
341343 let br = if (if ((bp == bk))
342344 then true
343345 else !(bi))
344346 then false
345347 else true
346348 let bs = if ((bm != ""))
347349 then addressFromStringValue(bm)
348350 else aF.caller
349351 $Tuple3(br, bs, bq)
350352 }
351353
352354
353355 func bt (aP,aW,bu) = {
354356 let bv = if (!(isDefined(aP)))
355357 then throw("Only USDN is accepted")
356358 else toBase58String(value(aP))
357359 let aX = C((aW + "_OPEN"))
358360 let bw = DeleteEntry((aW + "_OPEN"))
359361 let bx = StringEntry((aW + "_CLOSED"), ((aX + "_") + toString(bu)))
360362 $Tuple3(bv, bw, bx)
361363 }
362364
363365
364366 func by (aF,N,bd,V,bm,be) = {
365367 let bz = bb(aF)
366368 let bA = bz._1
367369 let L = bz._2
368370 let bu = bz._3
369371 let bB = bc(aF, bd, N, be)
370372 let bg = bB._1
371373 let bh = bB._2
372374 let bj = bB._3
373375 let aN = bB._4
374376 let aM = bB._5
375377 let bk = bB._6
376378 let bi = bB._7
377379 let aX = bl(aF, L, bd, N, bm, V, aM, aN, be)
378380 let aW = aX._1
379381 let aI = aX._2
380382 let aP = aX._3
381383 let bp = if ((bj == bk))
382384 then throw("Max items sold")
383385 else (bj + 1)
384386 let bC = bo(bd, N, bh, bp, bk, bg, L, bm, V, aF, bi)
385387 let br = bC._1
386388 let bs = bC._2
387389 let bq = bC._3
388390 let bD = invoke(this, "mintNft", [bg, bq, toString(bs)], nil)
389391 if ((bD == bD))
390392 then {
391393 let bE = {
392394 let e = bD
393395 if ($isInstanceOf(e, "String"))
394396 then {
395397 let bF = e
396398 bF
397399 }
398400 else throw("Incorrect invoke result")
399401 }
400402 let bG = bt(aP, aW, bu)
401403 let bv = bG._1
402404 let bw = bG._2
403405 let bx = bG._3
404406 let bH = ((((((("art_sold_" + toString(bp)) + "_of_") + toString(bk)) + "_") + N) + "_") + bd)
405407 let bI = if (!(be))
406408 then ((((((((((L + "_") + toString(bu)) + "_") + bA) + "_") + toString(aN)) + "_") + aM) + "_") + bE)
407409 else ((((((((((toString(bs) + "_") + toString(bu)) + "_") + bA) + "_") + toString(aI)) + "_") + bv) + "_") + bE)
408410 let bJ = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "payFee", [N, bd], [AttachedPayment(aP, aI)])
409411 if ((bJ == bJ))
410412 then {
411413 let bK = StringEntry(bH, bI)
412414 let bL = [IntegerEntry(Z(bd, N), bp), StringEntry(("nft_" + bE), bH), IntegerEntry("total_nft_issued", (bg + 1)), BooleanEntry(ad(bd, N), br), StringEntry(aa(bE), bd), StringEntry(ac(bE), N)]
413415 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[0]])
414416 if ((bM == bM))
415417 then {
416418 let bN = invoke(addressFromStringValue(l), "createCert", [toString(bs), bE, bd], nil)
417419 if ((bN == bN))
418420 then if (be)
419421 then (((bL :+ bK) :+ bx) :+ bw)
420422 else bK :: bL
421423 else throw("Strict value is not equal to itself.")
422424 }
423425 else throw("Strict value is not equal to itself.")
424426 }
425427 else throw("Strict value is not equal to itself.")
426428 }
427429 else throw("Strict value is not equal to itself.")
428430 }
429431
430432
431433 func bO (aF,N,bd) = {
432434 let bP = bb(aF)
433435 let bA = bP._1
434436 let L = bP._2
435437 let bu = bP._3
436438 let bQ = aE(aF, 0)
437439 let aH = bQ._1
438440 let aI = bQ._2
439441 let aP = if (!(isDefined(aH.assetId)))
440442 then throw("Only USDN is accepted!")
441443 else toBase58String(value(aH.assetId))
442444 let bR = G(("current_bidamount_" + N))
443445 if (!(aQ(aP)))
444446 then throw("asset not accepted")
445447 else {
446448 let bj = G(Z(bd, N))
447449 let bk = G(S(bd, N))
448450 if ((0 >= bk))
449451 then throw("No max edition set for this artwork")
450452 else if ((bj >= bk))
451453 then throw("Sold out, you cannot bid")
452454 else {
453455 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[1]])
454456 if ((bM == bM))
455457 then [StringEntry((((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + bA) + "_OPEN"), ((((aP + "_") + toString(aI)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR + 1))]
456458 else throw("Strict value is not equal to itself.")
457459 }
458460 }
459461 }
460462
461463
462464 func bS (aF,N,bd) = {
463465 let bT = G(X(bd, N))
464466 let bU = as(N)
465467 if ((height > bT))
466468 then throw("This auction is finished already!")
467469 else {
468470 let bV = bb(aF)
469471 let bA = bV._1
470472 let L = bV._2
471473 let bu = bV._3
472474 let bW = aE(aF, 0)
473475 let aH = bW._1
474476 let aI = bW._2
475477 if ((bU >= aI))
476478 then throw(("Please place a bid higher than: " + toString(bU)))
477479 else {
478480 let aP = if (!(isDefined(aH.assetId)))
479481 then throw("Only USDN is accepted!")
480482 else toBase58String(value(aH.assetId))
481483 let bR = G(("current_bidamount_" + N))
482484 let bX = valueOrElse(G(ah(bd, N)), ap)
483485 if (!(aQ(aP)))
484486 then throw("asset not accepted")
485487 else if ((bX > aI))
486488 then throw("Bid is below min price!")
487489 else {
488490 let bj = G(Z(bd, N))
489491 let bk = G(S(bd, N))
490492 if ((0 >= bk))
491493 then throw("No max edition set for this artwork")
492494 else if ((bj >= bk))
493495 then throw("Sold out, you cannot bid")
494496 else {
495497 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[1]])
496498 if ((bM == bM))
497499 then [StringEntry((((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + bA) + "_OPEN"), ((((aP + "_") + toString(aI)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR + 1)), StringEntry(T(N), toBase58String(aF.transactionId)), IntegerEntry(U(toBase58String(aF.transactionId)), aI)]
498500 else throw("Strict value is not equal to itself.")
499501 }
500502 }
501503 }
502504 }
503505 }
504506
505507
506508 func bY (aF,N,bd,V,bm) = {
507509 let L = toBase58String(aF.caller.bytes)
508510 if ((L != bd))
509511 then throw("You cannot do this action")
510512 else by(aF, N, bd, V, bm, true)
511513 }
512514
513515
514516 func bZ (N,bd) = {
515517 let bj = G(Z(bd, N))
516518 let bk = G(S(bd, N))
517519 let ca = G(X(bd, N))
518520 let cb = G(W(bd, N))
519521 let bT = (cb + height)
520522 if ((ca >= height))
521523 then throw("Previous auction isn't completed yet")
522524 else if ((bj == bk))
523525 then throw("Can't restart auction, max amount sold")
524526 else [IntegerEntry(X(bd, N), bT), DeleteEntry(T(N))]
525527 }
526528
527529
528530 func cc (aF,N,bd,V,bm) = {
529531 let bT = G(X(bd, N))
530532 let cd = C(T(N))
531533 if ((bT >= height))
532534 then throw("This auction is not yet finished!")
533535 else if ((V != cd))
534536 then throw("This is not the winning bid!")
535537 else {
536538 let ce = by(aF, N, bd, V, bm, true)
537539 let cf = bZ(N, bd)
538540 (cf ++ ce)
539541 }
540542 }
541543
542544
543545 func cg (aF,N,bd,V) = {
544546 let ch = bb(aF)
545547 let bA = ch._1
546548 let L = ch._2
547549 let bu = ch._3
548550 let bR = G(("current_bidamount_" + N))
549551 let aW = ((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + V)
550552 let aX = D((aW + "_OPEN"), "Bid not found")
551553 let aY = split(aX, "_")
552554 let aP = aU(aY[0])
553555 let ci = "CANCELED"
554556 [DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ci), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR - 1)), ScriptTransfer(Address(fromBase58String(L)), parseIntValue(aY[1]), aP)]
555557 }
556558
557559
558560 func cj (aF,N,bd,V) = {
559561 let ch = bb(aF)
560562 let bA = ch._1
561563 let L = ch._2
562564 let bu = ch._3
563565 let bR = G(("current_bidamount_" + N))
564566 let aW = ((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + V)
565567 let aX = D((aW + "_OPEN"), "Bid not found")
566568 let aY = split(aX, "_")
567569 let aP = aU(aY[0])
568570 let ci = "CANCELED"
569571 let aZ = parseIntValue(aY[1])
570572 let cd = C(T(N))
571573 if ((V == cd))
572574 then throw("You can't cancel the highest bid!")
573575 else [DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ci), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR - 1)), ScriptTransfer(Address(fromBase58String(L)), aZ, aP)]
574576 }
575577
576578
577579 @Callable(aF)
578580 func initDapp (ck) = if ((aF.caller != this))
579581 then throw("You cannot do this action")
580582 else if ((g != ""))
581583 then throw("oracle already set, you can't override!")
582584 else [StringEntry(b, ck)]
583585
584586
585587
586588 @Callable(aF)
587589 func restartAuctionManual (N) = if ((as(N) != 0))
588590 then throw("Please accept the highest bid!")
589591 else bZ(N, toBase58String(aF.caller.bytes))
590592
591593
592594
593595 @Callable(aF)
594596 func mintNft (bg,bq,bs) = if ((aF.caller != this))
595597 then throw("Only the dApp can mint NFT's")
596598 else {
597599 let cl = Address(fromBase58String(bs))
598600 let cm = Issue(("SCONEX_" + toString((bg + 1))), bq, 1, 0, false)
599601 let bE = calculateAssetId(cm)
600602 $Tuple2([cm, ScriptTransfer(cl, 1, bE)], toBase58String(bE))
601603 }
602604
603605
604606
605607 @Callable(aF)
606608 func addArtwork (am,aA,aB,aC,cn,az,co,cp,cq,cr) = {
607609 let cs = bb(aF)
608610 let N = cs._1
609611 let L = cs._2
610612 let bu = cs._3
611613 if (!(containsElement(r, cn)))
612614 then throw("Unknown type")
613615 else {
614616 let ct = ay(L, az, aA, aB, aC)
615617 if ((ct != ""))
616618 then throw("Something went wrong!")
617619 else {
618620 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[0]])
619621 if ((bM == bM))
620622 then {
621623 let cu = if (containsElement(s, cn))
622624 then [StringEntry(R(L, N), cp)]
623625 else nil
624626 let cv = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [cq, cr, L], nil)
625627 if ((cv == cv))
626628 then {
627629 let cw = C(an(am, L))
628630 if ((cw != ""))
629631 then throw("You already added it")
630632 else {
631633 let cx = C(al(am))
632634 if ((cx != ""))
633635 then throw("This hash is already registered")
634636 else (cu ++ [StringEntry(al(am), L), StringEntry(an(am, L), N), IntegerEntry(M(L, N), bu), StringEntry(O(L, N), aA), StringEntry(P(L, N), aB), StringEntry(Q(L, N), az), StringEntry(ag(L, N), cn), StringEntry(af(L, N), aC), IntegerEntry(S(L, N), 0), IntegerEntry(Z(L, N), 0), BooleanEntry(ad(L, N), false), StringEntry(aj(L, N), am), StringEntry(ae(L, N), co)])
635637 }
636638 }
637639 else throw("Strict value is not equal to itself.")
638640 }
639641 else throw("Strict value is not equal to itself.")
640642 }
641643 }
642644 }
643645
644646
645647
646648 @Callable(aF)
647649 func sellArtwork (N,aS,cy,aP,cz,cb,cA,cB,cC,cD,cE,cF) = {
648650 let cG = bb(aF)
649651 let bA = cG._1
650652 let L = cG._2
651653 let bj = G(Z(L, N))
652654 let bR = G(("current_bidamount_" + N))
653655 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[0]])
654656 if ((bM == bM))
655657 then if (if ((bR > 0))
656658 then true
657659 else (bj > 0))
658660 then throw("There are bids or items sold, you can not edit anything!")
659661 else {
660662 let bh = C(O(L, N))
661663 if (!(containsElement([y, z, A], cz)))
662664 then throw("We don't know this auction type")
663665 else if ((bh == ""))
664666 then throw("This art doesn't match your account")
665667 else if (!(aQ(aP)))
666668 then throw("Something went wrong!")
667669 else if (!(aR(aP, aS)))
668670 then throw("Something went wrong!")
669671 else {
670672 let aD = aw(L)
671673 if ((aD != ""))
672674 then throw(aD)
673675 else if ((cy > 10000))
674676 then throw("10000 editions max per artwork")
675677 else {
676678 let br = if ((aS > 0))
677679 then (cy > 0)
678680 else false
679- let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [N, k, "", "", 15, 0, 0], nil)
681+ let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [N, k, "", "", 3, 0, 0], nil)
680682 if ((cH == cH))
681683 then {
682684 let cI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [N, cA, cB, cC, cD, cE, cF], nil)
683685 if ((cI == cI))
684686 then {
685687 let bT = (cb + height)
686688 [BooleanEntry(ad(L, N), br), IntegerEntry(ah(L, N), aS), IntegerEntry(S(L, N), cy), IntegerEntry(W(L, N), cb), IntegerEntry(X(L, N), bT), StringEntry(ai(L, N), aP), StringEntry(Y(L, N), cz)]
687689 }
688690 else throw("Strict value is not equal to itself.")
689691 }
690692 else throw("Strict value is not equal to itself.")
691693 }
692694 }
693695 }
694696 else throw("Strict value is not equal to itself.")
695697 }
696698
697699
698700
699701 @Callable(aF)
702+func cancelSale (N,cJ) = {
703+ let bz = bb(aF)
704+ let bA = bz._1
705+ let L = bz._2
706+ let cz = valueOrErrorMessage(Y(L, N), "Do not try to edit a auction you do not own!")
707+ if (!(containsElement([y, A], cz)))
708+ then throw("You can not cancel this type of auction")
709+ else {
710+ let bj = G(Z(L, N))
711+ let bk = G(S(L, N))
712+ if ((bj > cJ))
713+ then throw(("You can not lower the maxCanSell below " + toString(bj)))
714+ else if ((cJ > bk))
715+ then throw("You can not increase the maxCanSell parameter")
716+ else {
717+ let cK = if ((cJ == bj))
718+ then [BooleanEntry(ad(L, N), false)]
719+ else nil
720+ ([IntegerEntry(S(L, N), cJ)] ++ cK)
721+ }
722+ }
723+ }
724+
725+
726+
727+@Callable(aF)
700728 func buyArtwork (N,bd) = {
701729 let cz = C(Y(bd, N))
702730 if ((cz == A))
703731 then by(aF, N, bd, "", "", false)
704732 else throw("Direct buy only allowed when no auction type is set!")
705733 }
706734
707735
708736
709737 @Callable(aF)
710-func updateTags (cJ,N,aC) = {
738+func updateTags (cL,N,aC) = {
711739 let L = toString(addressFromPublicKey(aF.callerPublicKey))
712740 if (!(containsElement(i, L)))
713741 then throw("no")
714742 else if ((size(split(aC, ",")) > 5))
715743 then throw("5 tags max.")
716744 else {
717- let cK = D(af(cJ, N), "No tags created with this key, so can't update!")
718- if ((aC == cK))
745+ let cM = D(af(cL, N), "No tags created with this key, so can't update!")
746+ if ((aC == cM))
719747 then throw("Tags are the same as old tags!")
720- else [StringEntry(af(cJ, N), aC)]
748+ else [StringEntry(af(cL, N), aC)]
721749 }
722750 }
723751
724752
725753
726754 @Callable(aF)
727-func deleteEntry (cL) = {
755+func deleteEntry (cN) = {
728756 let L = toString(addressFromPublicKey(aF.callerPublicKey))
729757 if (!(containsElement(i, L)))
730758 then throw("no")
731- else [DeleteEntry(cL)]
759+ else [DeleteEntry(cN)]
732760 }
733761
734762
735763
736764 @Callable(aF)
737765 func setBid (N,bd) = {
738766 let cz = C(Y(bd, N))
739767 if ((cz == y))
740768 then bO(aF, N, bd)
741769 else if ((cz == z))
742770 then bS(aF, N, bd)
743771 else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
744772 }
745773
746774
747775
748776 @Callable(aF)
749777 func acceptBid (N,bd,V,bm) = {
750778 let cz = C(Y(bd, N))
751779 if ((cz == y))
752780 then bY(aF, N, bd, V, bm)
753781 else if ((cz == z))
754782 then cc(aF, N, bd, V, bm)
755783 else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
756784 }
757785
758786
759787
760788 @Callable(aF)
761789 func cancelBid (N,bd,V) = {
762790 let cz = C(Y(bd, N))
763791 if ((cz == y))
764792 then cg(aF, N, bd, V)
765793 else cj(aF, N, bd, V)
766794 }
767795
768796

github/deemru/w8io/169f3d6 
98.45 ms