tx · DKmqewW2WgqVWmd4uwALQekfKvT6Zj84SdtGsPWcu5Ai

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01700000 Waves

2023.10.10 11:53 [2792313] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "DKmqewW2WgqVWmd4uwALQekfKvT6Zj84SdtGsPWcu5Ai", "fee": 1700000, "feeAssetId": null, "timestamp": 1696928089816, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "3NjW9qEV6J8NJgM86S61FivY87ZxpKWHHzYfxem7wzqZrU8MJwSXDd5mh28mRTVghLUgE5YfGVars9SnxDj97BTH" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgIRwAHVkVSU0lPTgIFMi4wLjABCWdldFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIPY29uZl9vcmFjbGVfZmVlAAhzaWduRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIRY29uZl9zaWdud2ViX2RhcHAAC2ZlZVJlY2VpdmVyCQEJZ2V0U3RyQnlLAQIRY29uZl9mZWVfcmVjZWl2ZXIADGFydHdvcmtzRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQISY29uZl9hcnR3b3Jrc19kYXBwAAh1c2VyRGFwcAMFCHVuaXRUZXN0CQEFdmFsdWUBCQCmCAECIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAg9jb25mX3VzZXJzX2RhcHAADXdoaXRlbGlzdERhcHAJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECE2NvbmZfd2hpdGVsaXN0X2RhcHAAD3B1enpsZV9hcnRfcG9vbAkBCWdldFN0ckJ5SwECFGNvbmZfcHV6emxlX2FydF9wb29sABF1c2R0UFBBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEVF9QUAAOYXJ0QXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhdjb25mX2FjY2VwdGVkX2Fzc2V0X0FSVAARdXNkY1BQQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRENfUFAAD2Vhc3RBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfRUFTVAARcHV6emxlQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X1BVWlpMRQAQZXRoUFBBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECGmNvbmZfYWNjZXB0ZWRfYXNzZXRfRVRIX1BQABB3YXZlc0Fzc2V0SWRfc3RyAgVXQVZFUwANdXNkdFBQQXNzZXRJZAkA2QQBBRF1c2R0UFBBc3NldElkX3N0cgAKYXJ0QXNzZXRJZAkA2QQBBQ5hcnRBc3NldElkX3N0cgANdXNkY1BQQXNzZXRJZAkA2QQBBRF1c2RjUFBBc3NldElkX3N0cgALZWFzdEFzc2V0SWQJANkEAQUPZWFzdEFzc2V0SWRfc3RyAA1wdXp6bGVBc3NldElkCQDZBAEFEXB1enpsZUFzc2V0SWRfc3RyAAxldGhQUEFzc2V0SWQJANkEAQUQZXRoUFBBc3NldElkX3N0cgAMd2F2ZXNBc3NldElkAQAAE2FsbF9hY2NlcHRlZF9hc3NldHMJAMwIAgURdXNkdFBQQXNzZXRJZF9zdHIJAMwIAgUOYXJ0QXNzZXRJZF9zdHIJAMwIAgURdXNkY1BQQXNzZXRJZF9zdHIJAMwIAgUPZWFzdEFzc2V0SWRfc3RyCQDMCAIFEXB1enpsZUFzc2V0SWRfc3RyCQDMCAIFEHdhdmVzQXNzZXRJZF9zdHIJAMwIAgUQZXRoUFBBc3NldElkX3N0cgUDbmlsAAVjaHJpcwkBCWdldFN0ckJ5SwECDGNvbmZfYWRtaW5fMQAOY29tbWlzc2lvbl9mZWUAAwANdXNlclN1c3BlbmRlZAIJU1VTUEVOREVEAAt1c2VyUmVtb3ZlZAIHUkVNT1ZFRAAKYXJ0SWxsZWdhbAIHSUxMRUdBTAAMYXJ0U3VzcGVuZGVkAglTVVNQRU5ERUQADmRhcHBSdW5uaW5nS2V5AhRjb25mX2RhcHBfaXNfcnVubmluZwARbWFpbnRlbmFuY2VNU0dLZXkCFGNvbmZfbWFpbnRlbmFuY2VfbXNnAAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ5kYXBwUnVubmluZ0tleQYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEW1haW50ZW5hbmNlTVNHS2V5AgAACW51bVNhbGVzSwIJbnVtX3NhbGVzAQ1nZXRVc2VyU3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAFA2tleQIFRXJyb3IBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxhcnR3b3Jrc0RhcHAFA2tleQDoBwEMZ2V0QXJ0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUMYXJ0d29ya3NEYXBwBQNrZXkCAAEJZ2V0SW50QnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABDWtleVVzZXJTdGF0dXMBBGFkZHIJAKwCAgIMdXNlcl9zdGF0dXNfBQRhZGRyARNrZXlBcnR3b3JrUm95YWx0aWVzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDmFydF9yb3lhbHRpZXNfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlTaWduSUQCCmFydGlzdEFkZHIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQVhcnRJZAIBXwUKYXJ0aXN0QWRkcgEHa2V5RmxhZwIKYXJ0aXN0QWRkcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUKYXJ0aXN0QWRkcgEKa2V5TkZURGF0YQECaWQJAKwCAgIEbmZ0XwUCaWQBCmdldFNhbGVLZXkEBmNhbGxlcgVuZnRJZAVhcnRJZAtjcmVhdG9yQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1zYWxlMm5kX2luZm9fBQZjYWxsZXICAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHIBCWdldEJpZEtleQQKb2ZmZXJPd25lcgVuZnRJZAlzYWxlT3duZXIHb2ZmZXJJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglvZmZlcjJuZF8FCm9mZmVyT3duZXICAV8FBW5mdElkAgFfBQlzYWxlT3duZXICAV8FB29mZmVySWQBE2dldEludEJ5S0Zyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQETZ2V0SW50QnlLRnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFCmFydEFzc2V0SWQBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARZrZXlTZWNvbmRhcnlTaGFyZUFnZW50AQphcnRpc3RBZGRyCQCsAgICF2FydGlzdF9hZ2VudF9zZWNvbmRhcnlfBQphcnRpc3RBZGRyARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgIUYXJ0aXN0X3B1YmxpY19hZ2VudF8FCmFydGlzdEFkZHIBHGtleVNlY29uZGFyeVNoYXJlUHVibGljQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIeYXJ0aXN0X3B1YmxpY19hZ2VudF9zZWNvbmRhcnlfBQphcnRpc3RBZGRyAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQlpc1BheW1lbnQBAWkDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBDGFzc2V0SXNWYWxpZAEMYXNzZXREZXRhaWxzAwMDCQAAAggFDGFzc2V0RGV0YWlscwhxdWFudGl0eQABCQAAAggFDGFzc2V0RGV0YWlscwhkZWNpbWFscwAABwkAAAIIBQxhc3NldERldGFpbHMKcmVpc3N1YWJsZQcHCQAAAggFDGFzc2V0RGV0YWlscwZpc3N1ZXIFDGFydHdvcmtzRGFwcAcBDGlzU2lnbkFydE5GVAECaWQEDGFzc2V0RGV0YWlscwkBBXZhbHVlAQkA7AcBBQJpZAkBDGFzc2V0SXNWYWxpZAEFDGFzc2V0RGV0YWlscwEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFE2FsbF9hY2NlcHRlZF9hc3NldHMFB2Fzc2V0SWQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBW5mdGlkBAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdGlkAwkAAAIJALECAQUJc2FsZU93bmVyAAAJAAIBAg1ORlQgbm90IGZvdW5kBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdGlkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECEE5GVCBub3QgZm9yIHNhbGUFCXNhbGVPd25lcgEKZ2V0QmlkRGF0YQEDa2V5BAdiaWREYXRhCQEJZ2V0U3RyQnlLAQkArAICBQNrZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECD09mZmVyIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgACCQCVCgMFCmJpZERhdGFBcnIFB2Fzc2V0SWQFB2JpZERhdGEBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQEKYXJ0SXNWYWxpZAEJYXJ0U3RhdHVzAwkBAiE9AgUJYXJ0U3RhdHVzBQphcnRJbGxlZ2FsCQECIT0CBQlhcnRTdGF0dXMFDGFydFN1c3BlbmRlZAcBDmNoZWNrQXJ0U3RhdHVzAgRhZGRyAmlkBAlhcnRTdGF0dXMJAQxnZXRBcnRTdHJCeUsBCQEHa2V5RmxhZwIFBGFkZHIFAmlkAwkBCmFydElzVmFsaWQBBQlhcnRTdGF0dXMGCQACAQkArAICAhxPcmlnaW5hbCBBcnR3b3JrIGZsYWdnZWQgYXMgBQlhcnRTdGF0dXMBEWNoZWNrQXJ0aXN0U3RhdHVzAQRhZGRyBAxhcnRpc3RTdGF0dXMJAQ1nZXRVc2VyU3RyQnlLAQkBDWtleVVzZXJTdGF0dXMBBQRhZGRyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUNdXNlclN1c3BlbmRlZAkAzAgCBQt1c2VyUmVtb3ZlZAUDbmlsBQxhcnRpc3RTdGF0dXMJAAIBCQCsAgICEE9yaWdpbmFsIEFydGlzdCAFDGFydGlzdFN0YXR1cwYBDGNoZWNrTkZUSW5mbwEHYXNzZXRJZAQHbmZ0RGF0YQkAtQkCCQEMZ2V0QXJ0U3RyQnlLAQkBCmtleU5GVERhdGEBBQdhc3NldElkAgFfBAlhcnRTaWduSUQJAQxnZXRBcnRTdHJCeUsBCQEJa2V5U2lnbklEAgkAkQMCBQduZnREYXRhAAYJAJEDAgUHbmZ0RGF0YQAFAwMJAQEhAQkBDmNoZWNrQXJ0U3RhdHVzAgkAkQMCBQduZnREYXRhAAYJAJEDAgUHbmZ0RGF0YQAFCQEBIQEJARFjaGVja0FydGlzdFN0YXR1cwEJAJEDAgUHbmZ0RGF0YQAGBwkAlgoEBwkAkQMCBQduZnREYXRhAAUJAJEDAgUHbmZ0RGF0YQAGBQlhcnRTaWduSUQJAJYKBAYJAJEDAgUHbmZ0RGF0YQAFCQCRAwIFB25mdERhdGEABgUJYXJ0U2lnbklEAQ1jaGVja0FSVEV4aXN0AgVhcnRJZAtjcmVhdG9yQWRkcgQJYXJ0U2lnbklECQEMZ2V0QXJ0U3RyQnlLAQkBCWtleVNpZ25JRAIFC2NyZWF0b3JBZGRyBQVhcnRJZAMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIdQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQDAwkBASEBCQEOY2hlY2tBcnRTdGF0dXMCBQtjcmVhdG9yQWRkcgUFYXJ0SWQJAQEhAQkBEWNoZWNrQXJ0aXN0U3RhdHVzAQULY3JlYXRvckFkZHIHBwYBDHNldFRyYW5zZmVycwcGYW1vdW50B2Fzc2V0SWQFbmZ0aWQLY3JlYXRvckFkZHIJc2FsZU93bmVyBmNhbGxlcgVhcnRJZAQKY3JlYXRvckN1dAkBE2dldEFydHdvcmtSb3lhbHRpZXMBCQETa2V5QXJ0d29ya1JveWFsdGllcwIFC2NyZWF0b3JBZGRyBQVhcnRJZAQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQtjcmVhdG9yQWRkcgULZmVlUmVjZWl2ZXIECmFnZW50U2hhcmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUIdXNlckRhcHAJARZrZXlTZWNvbmRhcnlTaGFyZUFnZW50AQULY3JlYXRvckFkZHIAAAQLcHVibGljQWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQtjcmVhdG9yQWRkcgULZmVlUmVjZWl2ZXIEEHB1YmxpY0FnZW50U2hhcmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUIdXNlckRhcHAJARxrZXlTZWNvbmRhcnlTaGFyZVB1YmxpY0FnZW50AQULY3JlYXRvckFkZHIAAAQNYW1vdW50Rm9yU2lnbgkAawMFBmFtb3VudAUOY29tbWlzc2lvbl9mZWUAZAQQYW1vdW50Rm9yQ3JlYXRvcgkAawMFBmFtb3VudAUKY3JlYXRvckN1dACQTgQOYW1vdW50Rm9yT3duZXIJAGUCBQZhbW91bnQJAGQCBQ1hbW91bnRGb3JTaWduBRBhbW91bnRGb3JDcmVhdG9yBA5hbW91bnRGb3JBZ2VudAMDCQECIT0CBQVhZ2VudAULZmVlUmVjZWl2ZXIJAGYCBQphZ2VudFNoYXJlAAAHCQBrAwUGYW1vdW50BQphZ2VudFNoYXJlAJBOAAAEFGFtb3VudEZvclB1YmxpY0FnZW50AwMJAQIhPQIFC3B1YmxpY0FnZW50BQtmZWVSZWNlaXZlcgkAZgIFEHB1YmxpY0FnZW50U2hhcmUAAAcJAGsDBQZhbW91bnQFEHB1YmxpY0FnZW50U2hhcmUAkE4AAAQiYW1vdW50X2NvbW1pc3Npb25fZm9yX3NpZ25fdG9fc3dhcAMJAQIhPQIFDmFtb3VudEZvckFnZW50AAAJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUNYW1vdW50Rm9yU2lnbgQRYW1vdW50X2FydF9iZWZvcmUJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRFhbW91bnRfYXJ0X2JlZm9yZQURYW1vdW50X2FydF9iZWZvcmUED3N3YXBfZmVlX3RvX2FydAMJAQIhPQIFB2Fzc2V0SWQFCmFydEFzc2V0SWQJAPwHBAkBB0FkZHJlc3MBCQDZBAEFD3B1enpsZV9hcnRfcG9vbAIEc3dhcAkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAUiYW1vdW50X2NvbW1pc3Npb25fZm9yX3NpZ25fdG9fc3dhcAUDbmlsBQR1bml0AwkAAAIFD3N3YXBfZmVlX3RvX2FydAUPc3dhcF9mZWVfdG9fYXJ0BBBhbW91bnRfYXJ0X2FmdGVyCQEKZ2V0QmFsYW5jZQEFCmFydEFzc2V0SWQDCQAAAgUQYW1vdW50X2FydF9hZnRlcgUQYW1vdW50X2FydF9hZnRlcgQLY29tbWlzc2lvbnMDCQECIT0CBQ5hbW91bnRGb3JBZ2VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgMJAAACBQdhc3NldElkBQphcnRBc3NldElkCQBlAgUNYW1vdW50Rm9yU2lnbgUOYW1vdW50Rm9yQWdlbnQJAGUCBRBhbW91bnRfYXJ0X2FmdGVyBRFhbW91bnRfYXJ0X2JlZm9yZQUKYXJ0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyAwkAAAIFB2Fzc2V0SWQFCmFydEFzc2V0SWQFDWFtb3VudEZvclNpZ24JAGUCBRBhbW91bnRfYXJ0X2FmdGVyBRFhbW91bnRfYXJ0X2JlZm9yZQUKYXJ0QXNzZXRJZAUDbmlsBApjcmVhdG9yRmVlAwkBAiE9AgUUYW1vdW50Rm9yUHVibGljQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULcHVibGljQWdlbnQFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtjcmVhdG9yQWRkcgkAZQIFEGFtb3VudEZvckNyZWF0b3IFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2NyZWF0b3JBZGRyBRBhbW91bnRGb3JDcmVhdG9yBQdhc3NldElkBQNuaWwECG93bmVyRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUJc2FsZU93bmVyBQ5hbW91bnRGb3JPd25lcgUHYXNzZXRJZAQMY29sbGVjdG9yTkZUCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUFbmZ0aWQJAJYKBAULY29tbWlzc2lvbnMFCmNyZWF0b3JGZWUFCG93bmVyRmVlBQxjb2xsZWN0b3JORlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BD3ZhbGlkYXRlTWluU2VsbAEFcHJpY2UDCQBnAgAABQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBD3Byb3ZpZGVCYXNlRGF0YQIBaQVuZnRJZAQNJHQwMTE5MTIxMTk1MgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTE5MTIxMTk1MgJfMQQGY2FsbGVyCAUNJHQwMTE5MTIxMTk1MgJfMgQEZGF0ZQgFDSR0MDExOTEyMTE5NTICXzMEDSR0MDExOTU1MTIwMjQJAQxjaGVja05GVEluZm8BBQVuZnRJZAQKaXNWYWxpZE5GVAgFDSR0MDExOTU1MTIwMjQCXzEEBWFydElkCAUNJHQwMTE5NTUxMjAyNAJfMgQLY3JlYXRvckFkZHIIBQ0kdDAxMTk1NTEyMDI0Al8zBAlhcnRTaWduSUQIBQ0kdDAxMTk1NTEyMDI0Al80CQCZCgcFAmlkBQZjYWxsZXIFBGRhdGUFCmlzVmFsaWRORlQFBWFydElkBQtjcmVhdG9yQWRkcgUJYXJ0U2lnbklEAQ51cGRhdGVOdW1TYWxlcwAECG51bVNhbGVzCQEJZ2V0SW50QnlLAQUJbnVtU2FsZXNLCQEMSW50ZWdlckVudHJ5AgUJbnVtU2FsZXNLCQBkAgUIbnVtU2FsZXMAAQkGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzBmludm9rZQEKYXBwUnVubmluZwIGaXNMaXZlB21lc3NhZ2UEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgQCaWQJANgEAQgFBmludm9rZQ10cmFuc2FjdGlvbklkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwFpAQdzZWxsTkZUAgVwcmljZQVhc3NldAQNJHQwMTMwODkxMzEyNQkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxMzA4OTEzMTI1Al8xBAZhbW91bnQIBQ0kdDAxMzA4OTEzMTI1Al8yAwkBAiE9AgUGYW1vdW50AAEJAAIBAg9ObyBORlQgYXR0YWNoZWQEBW5mdElkAwMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQEMaXNTaWduQXJ0TkZUAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAcJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECG09ubHkgU0lHTiBBcnQgTkZUIGFjY2VwdGVkLgQNJHQwMTMzNTkxMzQ1MgkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDEzMzU5MTM0NTICXzEEBmNhbGxlcggFDSR0MDEzMzU5MTM0NTICXzIEBGRhdGUIBQ0kdDAxMzM1OTEzNDUyAl8zBAppc1ZhbGlkTkZUCAUNJHQwMTMzNTkxMzQ1MgJfNAQFYXJ0SWQIBQ0kdDAxMzM1OTEzNDUyAl81BAtjcmVhdG9yQWRkcggFDSR0MDEzMzU5MTM0NTICXzYECWFydFNpZ25JRAgFDSR0MDEzMzU5MTM0NTICXzcDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0AwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFBWFzc2V0CQACAQInT25seSBTSUdOLCBVU0ROLCBVU0RUIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEKZ2V0U2FsZUtleQQFBmNhbGxlcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQVwcmljZQIBXwUFYXNzZXQCAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHICAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAIET1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkBQZjYWxsZXIFA25pbAFpAQ91cGRhdGVTYWxlUHJpY2UDBW5mdElkBXByaWNlBWFzc2V0BA0kdDAxNDMyNTE0NDE4CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTQzMjUxNDQxOAJfMQQGY2FsbGVyCAUNJHQwMTQzMjUxNDQxOAJfMgQEZGF0ZQgFDSR0MDE0MzI1MTQ0MTgCXzMECmlzVmFsaWRORlQIBQ0kdDAxNDMyNTE0NDE4Al80BAVhcnRJZAgFDSR0MDE0MzI1MTQ0MTgCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTQzMjUxNDQxOAJfNgQJYXJ0U2lnbklECAUNJHQwMTQzMjUxNDQxOAJfNwMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIwQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQsIGNhbmNlbCB5b3VyIHNhbGUuAwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECJ09ubHkgU0lHTiwgVVNETiwgVVNEVCBvciBXQVZFUyBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFBmNhbGxlcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JALUJAgkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4CAV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzYWxlS2V5AgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQhzYWxlSW5mbwAAAgFfCQCkAwEFBXByaWNlAgFfBQVhc3NldAIBXwkAkQMCBQhzYWxlSW5mbwADAgFfCQCRAwIFCHNhbGVJbmZvAAQCAV8JAJEDAgUIc2FsZUluZm8ABQIBXwkAkQMCBQhzYWxlSW5mbwAGBQNuaWwBaQEKY2FuY2VsU2FsZQEFbmZ0SWQEDSR0MDE1NTU5MTU4MDAJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxNTU1OTE1ODAwAl8xBAZjYWxsZXIIBQ0kdDAxNTU1OTE1ODAwAl8yBARkYXRlCAUNJHQwMTU1NTkxNTgwMAJfMwQKaXNWYWxpZE5GVAgFDSR0MDE1NTU5MTU4MDACXzQEBWFydElkCAUNJHQwMTU1NTkxNTgwMAJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxNTU1OTE1ODAwAl82BAlhcnRTaWduSUQIBQ0kdDAxNTU1OTE1ODAwAl83BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgpfQ0FOQ0VMTEVECQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUFbmZ0SWQFA25pbAFpAQZidXlORlQBBW5mdElkBA0kdDAxNjYzMTE2NzI0CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTY2MzExNjcyNAJfMQQGY2FsbGVyCAUNJHQwMTY2MzExNjcyNAJfMgQEZGF0ZQgFDSR0MDE2NjMxMTY3MjQCXzMECmlzVmFsaWRORlQIBQ0kdDAxNjYzMTE2NzI0Al80BAVhcnRJZAgFDSR0MDE2NjMxMTY3MjQCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTY2MzExNjcyNAJfNgQJYXJ0U2lnbklECAUNJHQwMTY2MzExNjcyNAJfNwMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIwQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQsIGNhbmNlbCB5b3VyIHNhbGUuAwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQlzYWxlT3duZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEDXNhbGVJbmZvQXJyYXkJALUJAgUIc2FsZUluZm8CAV8DCQAAAgkAtgkBCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQAACQACAQIKT2ZmZXIgb25seQQNJHQwMTcyMjExNzI1NwkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxNzIyMTE3MjU3Al8xBAZhbW91bnQIBQ0kdDAxNzIyMTE3MjU3Al8yBA9wYXltZW50QXNzZXRTdHIDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAgADAwkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAEJAKQDAQUGYW1vdW50BgkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAIFD3BheW1lbnRBc3NldFN0cgkAAgECGlBheW1lbnQgaW5mb3MgZG9uJ3QgbWF0Y2guBA0kdDAxNzc3MDE3OTA5CQEMc2V0VHJhbnNmZXJzBwUGYW1vdW50CAUHcGF5bWVudAdhc3NldElkBQVuZnRJZAULY3JlYXRvckFkZHIFCXNhbGVPd25lcgUGY2FsbGVyBQVhcnRJZAQLY29tbWlzc2lvbnMIBQ0kdDAxNzc3MDE3OTA5Al8xBApjcmVhdG9yRmVlCAUNJHQwMTc3NzAxNzkwOQJfMgQIb3duZXJGZWUIBQ0kdDAxNzc3MDE3OTA5Al8zBAxjb2xsZWN0b3JORlQIBQ0kdDAxNzc3MDE3OTA5Al80CQDOCAIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIIX0NMT1NFRF8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FBmNhbGxlcgkAzAgCCQEOdXBkYXRlTnVtU2FsZXMACQDMCAIFCG93bmVyRmVlCQDMCAIFDGNvbGxlY3Rvck5GVAUDbmlsBQpjcmVhdG9yRmVlBQtjb21taXNzaW9ucwFpAQhzZXRPZmZlcgEFbmZ0SWQEDSR0MDE4MzIwMTg0MTcJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxODMyMDE4NDE3Al8xBApvZmZlck93bmVyCAUNJHQwMTgzMjAxODQxNwJfMgQEZGF0ZQgFDSR0MDE4MzIwMTg0MTcCXzMECmlzVmFsaWRORlQIBQ0kdDAxODMyMDE4NDE3Al80BAVhcnRJZAgFDSR0MDE4MzIwMTg0MTcCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTgzMjAxODQxNwJfNgQJYXJ0U2lnbklECAUNJHQwMTgzMjAxODQxNwJfNwMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQNJHQwMTg0NzgxODUxNAkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxODQ3ODE4NTE0Al8xBAZhbW91bnQIBQ0kdDAxODQ3ODE4NTE0Al8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkAAAIFBmFtb3VudAAACQACAQIWT2ZmZXIgb2YgMCBub3QgYWxsb3dlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBmFtb3VudAkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUCaWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQRkYXRlAgFfCQCkAwEFBmFtb3VudAIBXwUHYXNzZXRJZAIBXwUFbmZ0SWQCAV8FBWFydElkAgFfBQtjcmVhdG9yQWRkcgIBXwUKb2ZmZXJPd25lcgIBXwUCaWQFA25pbAFpAQthY2NlcHRPZmZlcgMFbmZ0SWQHb2ZmZXJJZApvZmZlck93bmVyBA0kdDAxOTMwNzE5NDAwCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTkzMDcxOTQwMAJfMQQGY2FsbGVyCAUNJHQwMTkzMDcxOTQwMAJfMgQEZGF0ZQgFDSR0MDE5MzA3MTk0MDACXzMECmlzVmFsaWRORlQIBQ0kdDAxOTMwNzE5NDAwAl80BAVhcnRJZAgFDSR0MDE5MzA3MTk0MDACXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTkzMDcxOTQwMAJfNgQJYXJ0U2lnbklECAUNJHQwMTkzMDcxOTQwMAJfNwMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQDCQECIT0CBQZjYWxsZXIFCXNhbGVPd25lcgkAAgECIE9ubHkgc2FsZSBvd25lciBjYW4gYWNjZXB0IG9mZmVyBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAxOTY1NDE5NzA5CQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDE5NjU0MTk3MDkCXzEEB2Fzc2V0SWQIBQ0kdDAxOTY1NDE5NzA5Al8yBAdiaWREYXRhCAUNJHQwMTk2NTQxOTcwOQJfMwQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQlzYWxlT3duZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEBmFtb3VudAkBBXZhbHVlAQkAtgkBCQCRAwIFCmJpZERhdGFBcnIAAQQNJHQwMTk5NDUyMDA4MwkBDHNldFRyYW5zZmVycwcFBmFtb3VudAUHYXNzZXRJZAUFbmZ0SWQFC2NyZWF0b3JBZGRyBQlzYWxlT3duZXIJAJEDAgUKYmlkRGF0YUFycgAGBQVhcnRJZAQLY29tbWlzc2lvbnMIBQ0kdDAxOTk0NTIwMDgzAl8xBApjcmVhdG9yRmVlCAUNJHQwMTk5NDUyMDA4MwJfMgQIb3duZXJGZWUIBQ0kdDAxOTk0NTIwMDgzAl8zBAxjb2xsZWN0b3JORlQIBQ0kdDAxOTk0NTIwMDgzAl80BAphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEFB2Fzc2V0SWQJANgEAQkBBXZhbHVlAQUHYXNzZXRJZAIFV0FWRVMJAM4IAgkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQZiaWRLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGYmlkS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIFB2JpZERhdGECCF9DTE9TRURfCQCkAwEFBGRhdGUCAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAg5fQ0xPU0VELU9GRkVSXwkApAMBBQRkYXRlAgFfBQJpZAIBXwUKb2ZmZXJPd25lcgIBXwkApAMBBQZhbW91bnQCAV8FCmFzc2V0SWRTdHIJAMwIAgkBDnVwZGF0ZU51bVNhbGVzAAkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAUKY3JlYXRvckZlZQULY29tbWlzc2lvbnMBaQELY2FuY2VsT2ZmZXIEBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcglzYWxlT3duZXIEDSR0MDIwODgzMjA5NTcJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDIwODgzMjA5NTcCXzEEBmNhbGxlcggFDSR0MDIwODgzMjA5NTcCXzIEBGRhdGUIBQ0kdDAyMDg4MzIwOTU3Al8zAwMJAQIhPQIFBmNhbGxlcgUKb2ZmZXJPd25lcgkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIHCQACAQIdWW91IGNhbm5vdCBjYW5jZWwgdGhpcyBvZmZlci4EBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDIxMTI5MjExODQJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMjExMjkyMTE4NAJfMQQHYXNzZXRJZAgFDSR0MDIxMTI5MjExODQCXzIEB2JpZERhdGEIBQ0kdDAyMTEyOTIxMTg0Al8zCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwAGtbg5g==", "height": 2792313, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DY5wqCZdAqyxB5Xp8tPDjZGfeEqcGaY7gySvH5FJyNHU Next: 2u5sHiaMmydfZDL3tV6RstoJv4f1ZcBhRtbv8qyCanCD Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "1.1.5"
4+let a = "2.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
2222
2323 let j = value(addressFromString(b("conf_whitelist_dapp")))
2424
25-let k = fromBase58String(b("conf_accepted_asset_SIGN"))
25+let k = b("conf_puzzle_art_pool")
2626
27-let l = fromBase58String(b("conf_accepted_asset_USDN"))
27+let l = b("conf_accepted_asset_USDT_PP")
2828
29-let m = fromBase58String(b("conf_accepted_asset_USDT"))
29+let m = b("conf_accepted_asset_ART")
3030
31-let n = base58''
31+let n = b("conf_accepted_asset_USDC_PP")
3232
33-let o = b("conf_admin_1")
33+let o = b("conf_accepted_asset_EAST")
3434
35-let p = 3
35+let p = b("conf_accepted_asset_PUZZLE")
3636
37-let q = "SUSPENDED"
37+let q = b("conf_accepted_asset_ETH_PP")
3838
39-let r = "REMOVED"
39+let r = "WAVES"
4040
41-let s = "ILLEGAL"
41+let s = fromBase58String(l)
4242
43-let t = "SUSPENDED"
43+let t = fromBase58String(m)
4444
45-let u = "conf_dapp_is_running"
45+let u = fromBase58String(n)
4646
47-let v = "conf_maintenance_msg"
47+let v = fromBase58String(o)
4848
49-let w = valueOrElse(getBoolean(this, u), true)
49+let w = fromBase58String(p)
5050
51-let x = valueOrElse(getString(this, v), "")
51+let x = fromBase58String(q)
5252
53-let y = "num_sales"
53+let y = base58''
5454
55-func z (c) = valueOrElse(getString(i, c), "Error")
55+let z = [l, m, n, o, p, r, q]
56+
57+let A = b("conf_admin_1")
58+
59+let B = 3
60+
61+let C = "SUSPENDED"
62+
63+let D = "REMOVED"
64+
65+let E = "ILLEGAL"
66+
67+let F = "SUSPENDED"
68+
69+let G = "conf_dapp_is_running"
70+
71+let H = "conf_maintenance_msg"
72+
73+let I = valueOrElse(getBoolean(this, G), true)
74+
75+let J = valueOrElse(getString(this, H), "")
76+
77+let K = "num_sales"
78+
79+func L (c) = valueOrElse(getString(i, c), "Error")
5680
5781
58-func A (c) = valueOrElse(getInteger(h, c), 1000)
82+func M (c) = valueOrElse(getInteger(h, c), 1000)
5983
6084
61-func B (c) = valueOrElse(getString(h, c), "")
85+func N (c) = valueOrElse(getString(h, c), "")
6286
6387
64-func C (c) = valueOrElse(getInteger(this, c), 0)
88+func O (c) = valueOrElse(getInteger(this, c), 0)
6589
6690
67-func D (E) = ("user_status_" + E)
91+func P (Q) = ("user_status_" + Q)
6892
6993
70-func F (G,H) = ((("art_royalties_" + H) + "_") + G)
94+func R (S,T) = ((("art_royalties_" + T) + "_") + S)
7195
7296
73-func I (J,H) = ((("art_signid_" + H) + "_") + J)
97+func U (V,T) = ((("art_signid_" + T) + "_") + V)
7498
7599
76-func K (J,H) = ((("art_flag_" + H) + "_") + J)
100+func W (V,T) = ((("art_flag_" + T) + "_") + V)
77101
78102
79-func L (M) = ("nft_" + M)
103+func X (Y) = ("nft_" + Y)
80104
81105
82-func N (G,O,H,P) = ((((((("sale2nd_info_" + G) + "_") + O) + "_") + H) + "_") + P)
106+func Z (S,aa,T,ab) = ((((((("sale2nd_info_" + S) + "_") + aa) + "_") + T) + "_") + ab)
83107
84108
85-func Q (R,O,S,T) = ((((((("offer2nd_" + R) + "_") + O) + "_") + S) + "_") + T)
109+func ac (ad,aa,ae,af) = ((((((("offer2nd_" + ad) + "_") + aa) + "_") + ae) + "_") + af)
86110
87111
88-func U (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
112+func ag (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
89113
90114
91-let V = U(("certification_fee_" + toBase58String(k)))
115+let ah = ag(("certification_fee_" + toBase58String(t)))
92116
93-func W (J) = ("artist_agent_" + J)
117+func ai (V) = ("artist_agent_" + V)
94118
95119
96-func X (J) = ("artist_agent_secondary_" + J)
120+func aj (V) = ("artist_agent_secondary_" + V)
97121
98122
99-func Y (J) = ("artist_public_agent_" + J)
123+func ak (V) = ("artist_public_agent_" + V)
100124
101125
102-func Z (J) = ("artist_public_agent_secondary_" + J)
126+func al (V) = ("artist_public_agent_secondary_" + V)
103127
104128
105-func aa (ab) = if (!(w))
106- then throw(x)
107- else $Tuple3(toBase58String(ab.transactionId), toBase58String(ab.caller.bytes), lastBlock.timestamp)
129+func am (an) = if (!(I))
130+ then throw(J)
131+ else $Tuple3(toBase58String(an.transactionId), toBase58String(an.caller.bytes), lastBlock.timestamp)
108132
109133
110-func ac (ab) = if ((size(ab.payments) == 0))
134+func ao (an) = if ((size(an.payments) == 0))
111135 then throw("No payment attached")
112136 else {
113- let ad = value(ab.payments[0])
114- let ae = value(ad.amount)
115- $Tuple2(ad, ae)
137+ let ap = value(an.payments[0])
138+ let aq = value(ap.amount)
139+ $Tuple2(ap, aq)
116140 }
117141
118142
119-func af (ag) = if (if (if ((ag.quantity == 1))
120- then (ag.decimals == 0)
143+func ar (as) = if (if (if ((as.quantity == 1))
144+ then (as.decimals == 0)
121145 else false)
122- then (ag.reissuable == false)
146+ then (as.reissuable == false)
123147 else false)
124- then (ag.issuer == h)
148+ then (as.issuer == h)
125149 else false
126150
127151
128-func ah (M) = {
129- let ag = value(assetInfo(M))
130- af(ag)
152+func at (Y) = {
153+ let as = value(assetInfo(Y))
154+ ar(as)
131155 }
132156
133157
134-func ai (aj) = if (if (if (if (if ((aj != toBase58String(k)))
135- then (aj != toBase58String(n))
136- else false)
137- then (aj != "WAVES")
138- else false)
139- then (aj != toBase58String(l))
140- else false)
141- then (aj != toBase58String(m))
142- else false)
143- then false
158+func au (av) = if (!(containsElement(z, av)))
159+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
144160 else true
145161
146162
147-func ak (aj) = if ((aj == "WAVES"))
163+func aw (av) = if ((av == "WAVES"))
148164 then unit
149- else fromBase58String(aj)
165+ else fromBase58String(av)
150166
151167
152-func al (am) = {
153- let S = b(("current_owner_on_dapp_" + am))
154- if ((size(S) == 0))
168+func ax (ay) = {
169+ let ae = b(("current_owner_on_dapp_" + ay))
170+ if ((size(ae) == 0))
155171 then throw("NFT not found")
156172 else {
157- let an = b(((("sale2nd_status_" + S) + "_") + am))
158- if ((an != "OPEN"))
173+ let az = b(((("sale2nd_status_" + ae) + "_") + ay))
174+ if ((az != "OPEN"))
159175 then throw("NFT not for sale")
160- else S
176+ else ae
161177 }
162178 }
163179
164180
165-func ao (c) = {
166- let ap = b((c + "_OPEN"))
167- if ((ap == ""))
181+func aA (c) = {
182+ let aB = b((c + "_OPEN"))
183+ if ((aB == ""))
168184 then throw("Offer not found")
169185 else {
170- let aq = split(ap, "_")
171- let aj = ak(aq[2])
172- $Tuple3(aq, aj, ap)
186+ let aC = split(aB, "_")
187+ let av = aw(aC[2])
188+ $Tuple3(aC, av, aB)
173189 }
174190 }
175191
176192
177-func ar (as) = if ((as != s))
178- then (as != t)
193+func aD (av) = {
194+ let aE = av
195+ if ($isInstanceOf(aE, "ByteVector"))
196+ then {
197+ let aF = aE
198+ assetBalance(this, aF)
199+ }
200+ else wavesBalance(this).available
201+ }
202+
203+
204+func aG (aH) = if ((aH != E))
205+ then (aH != F)
179206 else false
180207
181208
182-func at (E,M) = {
183- let as = B(K(E, M))
184- if (ar(as))
209+func aI (Q,Y) = {
210+ let aH = N(W(Q, Y))
211+ if (aG(aH))
185212 then true
186- else throw(("Original Artwork flagged as " + as))
213+ else throw(("Original Artwork flagged as " + aH))
187214 }
188215
189216
190-func au (E) = {
191- let av = z(D(E))
192- if (containsElement([q, r], av))
193- then throw(("Original Artist " + av))
217+func aJ (Q) = {
218+ let aK = L(P(Q))
219+ if (containsElement([C, D], aK))
220+ then throw(("Original Artist " + aK))
194221 else true
195222 }
196223
197224
198-func aw (aj) = {
199- let ax = split(B(L(aj)), "_")
200- let ay = B(I(ax[6], ax[5]))
201- if (if (!(at(ax[6], ax[5])))
202- then !(au(ax[6]))
225+func aL (av) = {
226+ let aM = split(N(X(av)), "_")
227+ let aN = N(U(aM[6], aM[5]))
228+ if (if (!(aI(aM[6], aM[5])))
229+ then !(aJ(aM[6]))
203230 else false)
204- then $Tuple4(false, ax[5], ax[6], ay)
205- else $Tuple4(true, ax[5], ax[6], ay)
231+ then $Tuple4(false, aM[5], aM[6], aN)
232+ else $Tuple4(true, aM[5], aM[6], aN)
206233 }
207234
208235
209-func az (H,P) = {
210- let ay = B(I(P, H))
211- if ((size(ay) == 0))
236+func aO (T,ab) = {
237+ let aN = N(U(ab, T))
238+ if ((size(aN) == 0))
212239 then throw("Artwork not found on SIGN Art")
213- else if (if (!(at(P, H)))
214- then !(au(P))
240+ else if (if (!(aI(ab, T)))
241+ then !(aJ(ab))
215242 else false)
216243 then false
217244 else true
218245 }
219246
220247
221-func aA (ae,aj,am,P,S,G,H) = {
222- let aB = A(F(P, H))
223- let aC = valueOrElse(getString(i, W(P)), g)
224- let aD = valueOrElse(getInteger(i, X(P)), 0)
225- let aE = valueOrElse(getString(i, Y(P)), g)
226- let aF = valueOrElse(getInteger(i, Z(P)), 0)
227- let aG = fraction(ae, p, 100)
228- let aH = fraction(ae, aB, 10000)
229- let aI = (ae - (aG + aH))
230- let aJ = if (if ((aC != g))
231- then (aD > 0)
248+func aP (aq,av,ay,ab,ae,S,T) = {
249+ let aQ = M(R(ab, T))
250+ let aR = valueOrElse(getString(i, ai(ab)), g)
251+ let aS = valueOrElse(getInteger(i, aj(ab)), 0)
252+ let aT = valueOrElse(getString(i, ak(ab)), g)
253+ let aU = valueOrElse(getInteger(i, al(ab)), 0)
254+ let aV = fraction(aq, B, 100)
255+ let aW = fraction(aq, aQ, 10000)
256+ let aX = (aq - (aV + aW))
257+ let aY = if (if ((aR != g))
258+ then (aS > 0)
232259 else false)
233- then fraction(ae, aD, 10000)
260+ then fraction(aq, aS, 10000)
234261 else 0
235- let aK = if (if ((aE != g))
236- then (aF > 0)
262+ let aZ = if (if ((aT != g))
263+ then (aU > 0)
237264 else false)
238- then fraction(ae, aF, 10000)
265+ then fraction(aq, aU, 10000)
239266 else 0
240- let aL = if ((aJ != 0))
241- then [ScriptTransfer(Address(fromBase58String(g)), (aG - aJ), aj), ScriptTransfer(Address(fromBase58String(aC)), aJ, aj)]
242- else [ScriptTransfer(Address(fromBase58String(g)), aG, aj)]
243- let aM = if ((aK != 0))
244- then [ScriptTransfer(Address(fromBase58String(aE)), aK, aj), ScriptTransfer(Address(fromBase58String(P)), (aH - aK), aj)]
245- else [ScriptTransfer(Address(fromBase58String(P)), aH, aj)]
246- let aN = ScriptTransfer(Address(fromBase58String(S)), aI, aj)
247- let aO = ScriptTransfer(Address(fromBase58String(G)), 1, fromBase58String(am))
248- $Tuple4(aL, aM, aN, aO)
267+ let ba = if ((aY != 0))
268+ then (aV - aY)
269+ else aV
270+ let bb = aD(t)
271+ if ((bb == bb))
272+ then {
273+ let bc = if ((av != t))
274+ then invoke(Address(fromBase58String(k)), "swap", [m, 1], [AttachedPayment(av, ba)])
275+ else unit
276+ if ((bc == bc))
277+ then {
278+ let bd = aD(t)
279+ if ((bd == bd))
280+ then {
281+ let be = if ((aY != 0))
282+ then [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
283+ then (aV - aY)
284+ else (bd - bb), t), ScriptTransfer(Address(fromBase58String(aR)), aY, av)]
285+ else [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
286+ then aV
287+ else (bd - bb), t)]
288+ let bf = if ((aZ != 0))
289+ then [ScriptTransfer(Address(fromBase58String(aT)), aZ, av), ScriptTransfer(Address(fromBase58String(ab)), (aW - aZ), av)]
290+ else [ScriptTransfer(Address(fromBase58String(ab)), aW, av)]
291+ let bg = ScriptTransfer(Address(fromBase58String(ae)), aX, av)
292+ let bh = ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(ay))
293+ $Tuple4(be, bf, bg, bh)
294+ }
295+ else throw("Strict value is not equal to itself.")
296+ }
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else throw("Strict value is not equal to itself.")
249300 }
250301
251302
252-func aP (aj,aQ) = {
253- let aR = if (d)
254- then 10
255- else U("waves_min_sell")
256- let aS = 1000000
257- let aT = if (d)
258- then 1
259- else (V * 2)
260- if (if (if (if (if (if ((aj == toBase58String(l)))
261- then (aS > aQ)
262- else false)
263- then (aQ != 0)
264- else false)
265- then true
266- else if (if ((aj == toBase58String(m)))
267- then (aS > aQ)
268- else false)
269- then (aQ != 0)
270- else false)
271- then true
272- else if (if ((aj == toBase58String(k)))
273- then (aT > aQ)
274- else false)
275- then (aQ != 0)
276- else false)
277- then true
278- else if (if (if ((aj == toBase58String(n)))
279- then true
280- else (aj == "WAVES"))
281- then (aR > aQ)
282- else false)
283- then (aQ != 0)
284- else false)
285- then false
286- else true
303+func bi (bj) = if ((0 >= bj))
304+ then throw("Wrong minimum sell price")
305+ else true
306+
307+
308+func bk (an,aa) = {
309+ let bl = am(an)
310+ let Y = bl._1
311+ let S = bl._2
312+ let bm = bl._3
313+ let bn = aL(aa)
314+ let bo = bn._1
315+ let T = bn._2
316+ let ab = bn._3
317+ let aN = bn._4
318+ $Tuple7(Y, S, bm, bo, T, ab, aN)
287319 }
288320
289321
290-func aU (ab,O) = {
291- let aV = aa(ab)
292- let M = aV._1
293- let G = aV._2
294- let aW = aV._3
295- let aX = aw(O)
296- let aY = aX._1
297- let H = aX._2
298- let P = aX._3
299- let ay = aX._4
300- $Tuple7(M, G, aW, aY, H, P, ay)
322+func bp () = {
323+ let bq = O(K)
324+ IntegerEntry(K, (bq + 1))
301325 }
302326
303327
304-func aZ () = {
305- let ba = C(y)
306- IntegerEntry(y, (ba + 1))
307- }
308-
309-
310-@Callable(bb)
311-func setConf (c,bc) = {
312- let G = toString(bb.caller)
313- if (containsElement([o, toString(this)], G))
328+@Callable(br)
329+func setConf (c,bs) = {
330+ let S = toString(br.caller)
331+ if (containsElement([A, toString(this)], S))
314332 then if (contains(c, "conf_"))
315- then [StringEntry(c, bc)]
333+ then [StringEntry(c, bs)]
316334 else throw("Entries starting with conf_ only")
317335 else throw("You are not allowed to change this")
318336 }
319337
320338
321339
322-@Callable(bb)
323-func appRunning (bd,be) = {
324- let G = toString(bb.caller)
325- let M = toBase58String(bb.transactionId)
326- if (containsElement([o, toString(this)], G))
327- then [BooleanEntry(u, bd), StringEntry(v, be)]
340+@Callable(br)
341+func appRunning (bt,bu) = {
342+ let S = toString(br.caller)
343+ let Y = toBase58String(br.transactionId)
344+ if (containsElement([A, toString(this)], S))
345+ then [BooleanEntry(G, bt), StringEntry(H, bu)]
328346 else throw("You are not allowed to change this")
329347 }
330348
331349
332350
333-@Callable(ab)
334-func sellNFT (aQ,bf) = {
335- let bg = ac(ab)
336- let ad = bg._1
337- let ae = bg._2
338- if ((ae != 1))
351+@Callable(an)
352+func sellNFT (bj,bv) = {
353+ let bw = ao(an)
354+ let ap = bw._1
355+ let aq = bw._2
356+ if ((aq != 1))
339357 then throw("No NFT attached")
340358 else {
341- let O = if (if (isDefined(ad.assetId))
342- then ah(value(ad.assetId))
359+ let aa = if (if (isDefined(ap.assetId))
360+ then at(value(ap.assetId))
343361 else false)
344- then toBase58String(value(ad.assetId))
362+ then toBase58String(value(ap.assetId))
345363 else throw("Only SIGN Art NFT accepted.")
346- let bh = aU(ab, O)
347- let M = bh._1
348- let G = bh._2
349- let aW = bh._3
350- let aY = bh._4
351- let H = bh._5
352- let P = bh._6
353- let ay = bh._7
354- if ((size(ay) == 0))
364+ let bx = bk(an, aa)
365+ let Y = bx._1
366+ let S = bx._2
367+ let bm = bx._3
368+ let bo = bx._4
369+ let T = bx._5
370+ let ab = bx._6
371+ let aN = bx._7
372+ if ((size(aN) == 0))
355373 then throw("Artwork not found on SIGN Art")
356- else if (!(aY))
374+ else if (!(bo))
357375 then throw("Not a valid nft")
358- else if (!(ai(bf)))
376+ else if (!(au(bv)))
359377 then throw("Only SIGN, USDN, USDT or WAVES accepted")
360- else if (!(aP(bf, aQ)))
378+ else if (!(bi(bj)))
361379 then throw("Wrong minimum sell price")
362- else [StringEntry((N(G, O, H, P) + "_OPEN"), ((((((((((((toString(aW) + "_") + toString(aQ)) + "_") + bf) + "_") + O) + "_") + H) + "_") + P) + "_") + M)), StringEntry(((("sale2nd_status_" + G) + "_") + O), "OPEN"), StringEntry(("current_owner_on_dapp_" + O), G)]
380+ else [StringEntry((Z(S, aa, T, ab) + "_OPEN"), ((((((((((((toString(bm) + "_") + toString(bj)) + "_") + bv) + "_") + aa) + "_") + T) + "_") + ab) + "_") + Y)), StringEntry(((("sale2nd_status_" + S) + "_") + aa), "OPEN"), StringEntry(("current_owner_on_dapp_" + aa), S)]
363381 }
364382 }
365383
366384
367385
368-@Callable(ab)
369-func updateSalePrice (O,aQ,bf) = {
370- let bi = aU(ab, O)
371- let M = bi._1
372- let G = bi._2
373- let aW = bi._3
374- let aY = bi._4
375- let H = bi._5
376- let P = bi._6
377- let ay = bi._7
378- if ((size(ay) == 0))
386+@Callable(an)
387+func updateSalePrice (aa,bj,bv) = {
388+ let by = bk(an, aa)
389+ let Y = by._1
390+ let S = by._2
391+ let bm = by._3
392+ let bo = by._4
393+ let T = by._5
394+ let ab = by._6
395+ let aN = by._7
396+ if ((size(aN) == 0))
379397 then throw("Artwork not found on SIGN Art, cancel your sale.")
380- else if (!(aY))
398+ else if (!(bo))
381399 then throw("Not a valid nft")
382400 else {
383- let S = b(("current_owner_on_dapp_" + O))
384- if ((S != G))
401+ let ae = b(("current_owner_on_dapp_" + aa))
402+ if ((ae != S))
385403 then throw("You don't own this NFT")
386404 else {
387- let an = b(((("sale2nd_status_" + G) + "_") + O))
388- if ((an != "OPEN"))
405+ let az = b(((("sale2nd_status_" + S) + "_") + aa))
406+ if ((az != "OPEN"))
389407 then throw("Sale not active")
390- else if (!(ai(bf)))
408+ else if (!(au(bv)))
391409 then throw("Only SIGN, USDN, USDT or WAVES accepted")
392- else if (!(aP(bf, aQ)))
410+ else if (!(bi(bj)))
393411 then throw("Wrong minimum sell price")
394412 else {
395- let bj = N(G, O, H, P)
396- let bk = split(b((bj + "_OPEN")), "_")
397-[StringEntry((bj + "_OPEN"), ((((((((((((bk[0] + "_") + toString(aQ)) + "_") + bf) + "_") + bk[3]) + "_") + bk[4]) + "_") + bk[5]) + "_") + bk[6]))]
413+ let bz = Z(S, aa, T, ab)
414+ let bA = split(b((bz + "_OPEN")), "_")
415+[StringEntry((bz + "_OPEN"), ((((((((((((bA[0] + "_") + toString(bj)) + "_") + bv) + "_") + bA[3]) + "_") + bA[4]) + "_") + bA[5]) + "_") + bA[6]))]
398416 }
399417 }
400418 }
402420
403421
404422
405-@Callable(ab)
406-func cancelSale (O) = {
407- let bl = aU(ab, O)
408- let M = bl._1
409- let G = bl._2
410- let aW = bl._3
411- let aY = bl._4
412- let H = bl._5
413- let P = bl._6
414- let ay = bl._7
415- let S = b(("current_owner_on_dapp_" + O))
416- if ((S != G))
423+@Callable(an)
424+func cancelSale (aa) = {
425+ let bB = bk(an, aa)
426+ let Y = bB._1
427+ let S = bB._2
428+ let bm = bB._3
429+ let bo = bB._4
430+ let T = bB._5
431+ let ab = bB._6
432+ let aN = bB._7
433+ let ae = b(("current_owner_on_dapp_" + aa))
434+ if ((ae != S))
417435 then throw("You don't own this NFT")
418436 else {
419- let an = b(((("sale2nd_status_" + G) + "_") + O))
420- if ((an != "OPEN"))
437+ let az = b(((("sale2nd_status_" + S) + "_") + aa))
438+ if ((az != "OPEN"))
421439 then throw("Sale not active")
422440 else {
423- let bj = N(G, O, H, P)
424- let bk = b((bj + "_OPEN"))
425-[DeleteEntry((bj + "_OPEN")), DeleteEntry(((("sale2nd_status_" + G) + "_") + O)), DeleteEntry(("current_owner_on_dapp_" + O)), StringEntry((((bj + "_") + M) + "_CANCELLED"), ((((bk + "_CANCELLED_") + toString(aW)) + "_") + M)), ScriptTransfer(Address(fromBase58String(G)), 1, fromBase58String(O))]
441+ let bz = Z(S, aa, T, ab)
442+ let bA = b((bz + "_OPEN"))
443+[DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CANCELLED"), ((((bA + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(aa))]
426444 }
427445 }
428446 }
429447
430448
431449
432-@Callable(ab)
433-func buyNFT (O) = {
434- let bm = aU(ab, O)
435- let M = bm._1
436- let G = bm._2
437- let aW = bm._3
438- let aY = bm._4
439- let H = bm._5
440- let P = bm._6
441- let ay = bm._7
442- if ((size(ay) == 0))
450+@Callable(an)
451+func buyNFT (aa) = {
452+ let bC = bk(an, aa)
453+ let Y = bC._1
454+ let S = bC._2
455+ let bm = bC._3
456+ let bo = bC._4
457+ let T = bC._5
458+ let ab = bC._6
459+ let aN = bC._7
460+ if ((size(aN) == 0))
443461 then throw("Artwork not found on SIGN Art, cancel your sale.")
444- else if (!(aY))
462+ else if (!(bo))
445463 then throw("Not a valid nft")
446464 else {
447- let S = al(O)
448- let bj = N(S, O, H, P)
449- let bk = b((bj + "_OPEN"))
450- if ((size(bk) == 0))
465+ let ae = ax(aa)
466+ let bz = Z(ae, aa, T, ab)
467+ let bA = b((bz + "_OPEN"))
468+ if ((size(bA) == 0))
451469 then throw("Sale Not found!")
452470 else {
453- let bn = split(bk, "_")
454- if ((parseInt(bn[1]) == 0))
471+ let bD = split(bA, "_")
472+ if ((parseInt(bD[1]) == 0))
455473 then throw("Offer only")
456474 else {
457- let bo = ac(ab)
458- let ad = bo._1
459- let ae = bo._2
460- let bp = if (isDefined(ad.assetId))
461- then toBase58String(value(ad.assetId))
475+ let bE = ao(an)
476+ let ap = bE._1
477+ let aq = bE._2
478+ let bF = if (isDefined(ap.assetId))
479+ then toBase58String(value(ap.assetId))
462480 else ""
463- if (if ((bn[1] != toString(ae)))
481+ if (if ((bD[1] != toString(aq)))
464482 then true
465- else (bn[2] != bp))
483+ else (bD[2] != bF))
466484 then throw("Payment infos don't match.")
467485 else {
468- let bq = aA(ae, ad.assetId, O, P, S, G, H)
469- let aL = bq._1
470- let aM = bq._2
471- let aN = bq._3
472- let aO = bq._4
473- (([DeleteEntry((bj + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + O)), DeleteEntry(("current_owner_on_dapp_" + O)), StringEntry((((bj + "_") + M) + "_CLOSED"), ((((((bk + "_CLOSED_") + toString(aW)) + "_") + M) + "_") + G)), aZ(), aN, aO] ++ aM) ++ aL)
486+ let bG = aP(aq, ap.assetId, aa, ab, ae, S, T)
487+ let be = bG._1
488+ let bf = bG._2
489+ let bg = bG._3
490+ let bh = bG._4
491+ (([DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((bA + "_CLOSED_") + toString(bm)) + "_") + Y) + "_") + S)), bp(), bg, bh] ++ bf) ++ be)
474492 }
475493 }
476494 }
479497
480498
481499
482-@Callable(ab)
483-func setOffer (O) = {
484- let br = aU(ab, O)
485- let M = br._1
486- let R = br._2
487- let aW = br._3
488- let aY = br._4
489- let H = br._5
490- let P = br._6
491- let ay = br._7
492- if (!(aY))
500+@Callable(an)
501+func setOffer (aa) = {
502+ let bH = bk(an, aa)
503+ let Y = bH._1
504+ let ad = bH._2
505+ let bm = bH._3
506+ let bo = bH._4
507+ let T = bH._5
508+ let ab = bH._6
509+ let aN = bH._7
510+ if (!(bo))
493511 then throw("Not a valid nft")
494512 else {
495- let bs = ac(ab)
496- let ad = bs._1
497- let ae = bs._2
498- let aj = if (!(isDefined(ad.assetId)))
513+ let bI = ao(an)
514+ let ap = bI._1
515+ let aq = bI._2
516+ let av = if (!(isDefined(ap.assetId)))
499517 then "WAVES"
500- else toBase58String(value(ad.assetId))
501- if (!(ai(aj)))
518+ else toBase58String(value(ap.assetId))
519+ if (!(au(av)))
502520 then throw("asset not accepted")
503- else if ((ae == 0))
521+ else if ((aq == 0))
504522 then throw("Offer of 0 not allowed")
505- else if (!(aP(aj, ae)))
523+ else if (!(bi(aq)))
506524 then throw("Wrong minimum sell price")
507525 else {
508- let S = al(O)
509-[StringEntry((Q(R, O, S, M) + "_OPEN"), ((((((((((((((toString(aW) + "_") + toString(ae)) + "_") + aj) + "_") + O) + "_") + H) + "_") + P) + "_") + R) + "_") + M))]
526+ let ae = ax(aa)
527+[StringEntry((ac(ad, aa, ae, Y) + "_OPEN"), ((((((((((((((toString(bm) + "_") + toString(aq)) + "_") + av) + "_") + aa) + "_") + T) + "_") + ab) + "_") + ad) + "_") + Y))]
510528 }
511529 }
512530 }
513531
514532
515533
516-@Callable(ab)
517-func acceptOffer (O,T,R) = {
518- let bt = aU(ab, O)
519- let M = bt._1
520- let G = bt._2
521- let aW = bt._3
522- let aY = bt._4
523- let H = bt._5
524- let P = bt._6
525- let ay = bt._7
526- if (!(aY))
534+@Callable(an)
535+func acceptOffer (aa,af,ad) = {
536+ let bJ = bk(an, aa)
537+ let Y = bJ._1
538+ let S = bJ._2
539+ let bm = bJ._3
540+ let bo = bJ._4
541+ let T = bJ._5
542+ let ab = bJ._6
543+ let aN = bJ._7
544+ if (!(bo))
527545 then throw("Not a valid nft")
528546 else {
529- let S = al(O)
530- if ((G != S))
547+ let ae = ax(aa)
548+ if ((S != ae))
531549 then throw("Only sale owner can accept offer")
532550 else {
533- let bu = Q(R, O, S, T)
534- let bv = ao(bu)
535- let aq = bv._1
536- let aj = bv._2
537- let ap = bv._3
538- let bj = N(S, O, H, P)
539- let bk = b((bj + "_OPEN"))
540- if ((size(bk) == 0))
551+ let bK = ac(ad, aa, ae, af)
552+ let bL = aA(bK)
553+ let aC = bL._1
554+ let av = bL._2
555+ let aB = bL._3
556+ let bz = Z(ae, aa, T, ab)
557+ let bA = b((bz + "_OPEN"))
558+ if ((size(bA) == 0))
541559 then throw("Sale Not found!")
542560 else {
543- let ae = value(parseInt(aq[1]))
544- let bw = aA(ae, aj, O, P, S, aq[6], H)
545- let aL = bw._1
546- let aM = bw._2
547- let aN = bw._3
548- let aO = bw._4
549- let bx = if (isDefined(aj))
550- then toBase58String(value(aj))
561+ let aq = value(parseInt(aC[1]))
562+ let bM = aP(aq, av, aa, ab, ae, aC[6], T)
563+ let be = bM._1
564+ let bf = bM._2
565+ let bg = bM._3
566+ let bh = bM._4
567+ let bN = if (isDefined(av))
568+ then toBase58String(value(av))
551569 else "WAVES"
552- (([DeleteEntry((bj + "_OPEN")), DeleteEntry((bu + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + O)), DeleteEntry(("current_owner_on_dapp_" + O)), StringEntry((bu + "_CLOSED"), ((((ap + "_CLOSED_") + toString(aW)) + "_") + M)), StringEntry((((bj + "_") + M) + "_CLOSED"), ((((((((((bk + "_CLOSED-OFFER_") + toString(aW)) + "_") + M) + "_") + R) + "_") + toString(ae)) + "_") + bx)), aZ(), aN, aO] ++ aM) ++ aL)
570+ (([DeleteEntry((bz + "_OPEN")), DeleteEntry((bK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((bK + "_CLOSED"), ((((aB + "_CLOSED_") + toString(bm)) + "_") + Y)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((((((bA + "_CLOSED-OFFER_") + toString(bm)) + "_") + Y) + "_") + ad) + "_") + toString(aq)) + "_") + bN)), bp(), bg, bh] ++ bf) ++ be)
553571 }
554572 }
555573 }
557575
558576
559577
560-@Callable(ab)
561-func cancelOffer (O,T,R,S) = {
562- let by = aa(ab)
563- let M = by._1
564- let G = by._2
565- let aW = by._3
566- if (if ((G != R))
567- then (G != S)
578+@Callable(an)
579+func cancelOffer (aa,af,ad,ae) = {
580+ let bO = am(an)
581+ let Y = bO._1
582+ let S = bO._2
583+ let bm = bO._3
584+ if (if ((S != ad))
585+ then (S != ae)
568586 else false)
569587 then throw("You cannot cancel this offer.")
570588 else {
571- let bu = Q(R, O, S, T)
572- let bz = ao(bu)
573- let aq = bz._1
574- let aj = bz._2
575- let ap = bz._3
576-[DeleteEntry((bu + "_OPEN")), StringEntry((bu + "_CANCELLED"), ((((ap + "_CANCELLED_") + toString(aW)) + "_") + M)), ScriptTransfer(Address(fromBase58String(G)), parseIntValue(aq[1]), aj)]
589+ let bK = ac(ad, aa, ae, af)
590+ let bP = aA(bK)
591+ let aC = bP._1
592+ let av = bP._2
593+ let aB = bP._3
594+[DeleteEntry((bK + "_OPEN")), StringEntry((bK + "_CANCELLED"), ((((aB + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), parseIntValue(aC[1]), av)]
577595 }
578596 }
579597
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "1.1.5"
4+let a = "2.0.0"
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 = value(addressFromString(b("conf_artworks_dapp")))
1818
1919 let i = if (d)
2020 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
2121 else value(addressFromString(b("conf_users_dapp")))
2222
2323 let j = value(addressFromString(b("conf_whitelist_dapp")))
2424
25-let k = fromBase58String(b("conf_accepted_asset_SIGN"))
25+let k = b("conf_puzzle_art_pool")
2626
27-let l = fromBase58String(b("conf_accepted_asset_USDN"))
27+let l = b("conf_accepted_asset_USDT_PP")
2828
29-let m = fromBase58String(b("conf_accepted_asset_USDT"))
29+let m = b("conf_accepted_asset_ART")
3030
31-let n = base58''
31+let n = b("conf_accepted_asset_USDC_PP")
3232
33-let o = b("conf_admin_1")
33+let o = b("conf_accepted_asset_EAST")
3434
35-let p = 3
35+let p = b("conf_accepted_asset_PUZZLE")
3636
37-let q = "SUSPENDED"
37+let q = b("conf_accepted_asset_ETH_PP")
3838
39-let r = "REMOVED"
39+let r = "WAVES"
4040
41-let s = "ILLEGAL"
41+let s = fromBase58String(l)
4242
43-let t = "SUSPENDED"
43+let t = fromBase58String(m)
4444
45-let u = "conf_dapp_is_running"
45+let u = fromBase58String(n)
4646
47-let v = "conf_maintenance_msg"
47+let v = fromBase58String(o)
4848
49-let w = valueOrElse(getBoolean(this, u), true)
49+let w = fromBase58String(p)
5050
51-let x = valueOrElse(getString(this, v), "")
51+let x = fromBase58String(q)
5252
53-let y = "num_sales"
53+let y = base58''
5454
55-func z (c) = valueOrElse(getString(i, c), "Error")
55+let z = [l, m, n, o, p, r, q]
56+
57+let A = b("conf_admin_1")
58+
59+let B = 3
60+
61+let C = "SUSPENDED"
62+
63+let D = "REMOVED"
64+
65+let E = "ILLEGAL"
66+
67+let F = "SUSPENDED"
68+
69+let G = "conf_dapp_is_running"
70+
71+let H = "conf_maintenance_msg"
72+
73+let I = valueOrElse(getBoolean(this, G), true)
74+
75+let J = valueOrElse(getString(this, H), "")
76+
77+let K = "num_sales"
78+
79+func L (c) = valueOrElse(getString(i, c), "Error")
5680
5781
58-func A (c) = valueOrElse(getInteger(h, c), 1000)
82+func M (c) = valueOrElse(getInteger(h, c), 1000)
5983
6084
61-func B (c) = valueOrElse(getString(h, c), "")
85+func N (c) = valueOrElse(getString(h, c), "")
6286
6387
64-func C (c) = valueOrElse(getInteger(this, c), 0)
88+func O (c) = valueOrElse(getInteger(this, c), 0)
6589
6690
67-func D (E) = ("user_status_" + E)
91+func P (Q) = ("user_status_" + Q)
6892
6993
70-func F (G,H) = ((("art_royalties_" + H) + "_") + G)
94+func R (S,T) = ((("art_royalties_" + T) + "_") + S)
7195
7296
73-func I (J,H) = ((("art_signid_" + H) + "_") + J)
97+func U (V,T) = ((("art_signid_" + T) + "_") + V)
7498
7599
76-func K (J,H) = ((("art_flag_" + H) + "_") + J)
100+func W (V,T) = ((("art_flag_" + T) + "_") + V)
77101
78102
79-func L (M) = ("nft_" + M)
103+func X (Y) = ("nft_" + Y)
80104
81105
82-func N (G,O,H,P) = ((((((("sale2nd_info_" + G) + "_") + O) + "_") + H) + "_") + P)
106+func Z (S,aa,T,ab) = ((((((("sale2nd_info_" + S) + "_") + aa) + "_") + T) + "_") + ab)
83107
84108
85-func Q (R,O,S,T) = ((((((("offer2nd_" + R) + "_") + O) + "_") + S) + "_") + T)
109+func ac (ad,aa,ae,af) = ((((((("offer2nd_" + ad) + "_") + aa) + "_") + ae) + "_") + af)
86110
87111
88-func U (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
112+func ag (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
89113
90114
91-let V = U(("certification_fee_" + toBase58String(k)))
115+let ah = ag(("certification_fee_" + toBase58String(t)))
92116
93-func W (J) = ("artist_agent_" + J)
117+func ai (V) = ("artist_agent_" + V)
94118
95119
96-func X (J) = ("artist_agent_secondary_" + J)
120+func aj (V) = ("artist_agent_secondary_" + V)
97121
98122
99-func Y (J) = ("artist_public_agent_" + J)
123+func ak (V) = ("artist_public_agent_" + V)
100124
101125
102-func Z (J) = ("artist_public_agent_secondary_" + J)
126+func al (V) = ("artist_public_agent_secondary_" + V)
103127
104128
105-func aa (ab) = if (!(w))
106- then throw(x)
107- else $Tuple3(toBase58String(ab.transactionId), toBase58String(ab.caller.bytes), lastBlock.timestamp)
129+func am (an) = if (!(I))
130+ then throw(J)
131+ else $Tuple3(toBase58String(an.transactionId), toBase58String(an.caller.bytes), lastBlock.timestamp)
108132
109133
110-func ac (ab) = if ((size(ab.payments) == 0))
134+func ao (an) = if ((size(an.payments) == 0))
111135 then throw("No payment attached")
112136 else {
113- let ad = value(ab.payments[0])
114- let ae = value(ad.amount)
115- $Tuple2(ad, ae)
137+ let ap = value(an.payments[0])
138+ let aq = value(ap.amount)
139+ $Tuple2(ap, aq)
116140 }
117141
118142
119-func af (ag) = if (if (if ((ag.quantity == 1))
120- then (ag.decimals == 0)
143+func ar (as) = if (if (if ((as.quantity == 1))
144+ then (as.decimals == 0)
121145 else false)
122- then (ag.reissuable == false)
146+ then (as.reissuable == false)
123147 else false)
124- then (ag.issuer == h)
148+ then (as.issuer == h)
125149 else false
126150
127151
128-func ah (M) = {
129- let ag = value(assetInfo(M))
130- af(ag)
152+func at (Y) = {
153+ let as = value(assetInfo(Y))
154+ ar(as)
131155 }
132156
133157
134-func ai (aj) = if (if (if (if (if ((aj != toBase58String(k)))
135- then (aj != toBase58String(n))
136- else false)
137- then (aj != "WAVES")
138- else false)
139- then (aj != toBase58String(l))
140- else false)
141- then (aj != toBase58String(m))
142- else false)
143- then false
158+func au (av) = if (!(containsElement(z, av)))
159+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
144160 else true
145161
146162
147-func ak (aj) = if ((aj == "WAVES"))
163+func aw (av) = if ((av == "WAVES"))
148164 then unit
149- else fromBase58String(aj)
165+ else fromBase58String(av)
150166
151167
152-func al (am) = {
153- let S = b(("current_owner_on_dapp_" + am))
154- if ((size(S) == 0))
168+func ax (ay) = {
169+ let ae = b(("current_owner_on_dapp_" + ay))
170+ if ((size(ae) == 0))
155171 then throw("NFT not found")
156172 else {
157- let an = b(((("sale2nd_status_" + S) + "_") + am))
158- if ((an != "OPEN"))
173+ let az = b(((("sale2nd_status_" + ae) + "_") + ay))
174+ if ((az != "OPEN"))
159175 then throw("NFT not for sale")
160- else S
176+ else ae
161177 }
162178 }
163179
164180
165-func ao (c) = {
166- let ap = b((c + "_OPEN"))
167- if ((ap == ""))
181+func aA (c) = {
182+ let aB = b((c + "_OPEN"))
183+ if ((aB == ""))
168184 then throw("Offer not found")
169185 else {
170- let aq = split(ap, "_")
171- let aj = ak(aq[2])
172- $Tuple3(aq, aj, ap)
186+ let aC = split(aB, "_")
187+ let av = aw(aC[2])
188+ $Tuple3(aC, av, aB)
173189 }
174190 }
175191
176192
177-func ar (as) = if ((as != s))
178- then (as != t)
193+func aD (av) = {
194+ let aE = av
195+ if ($isInstanceOf(aE, "ByteVector"))
196+ then {
197+ let aF = aE
198+ assetBalance(this, aF)
199+ }
200+ else wavesBalance(this).available
201+ }
202+
203+
204+func aG (aH) = if ((aH != E))
205+ then (aH != F)
179206 else false
180207
181208
182-func at (E,M) = {
183- let as = B(K(E, M))
184- if (ar(as))
209+func aI (Q,Y) = {
210+ let aH = N(W(Q, Y))
211+ if (aG(aH))
185212 then true
186- else throw(("Original Artwork flagged as " + as))
213+ else throw(("Original Artwork flagged as " + aH))
187214 }
188215
189216
190-func au (E) = {
191- let av = z(D(E))
192- if (containsElement([q, r], av))
193- then throw(("Original Artist " + av))
217+func aJ (Q) = {
218+ let aK = L(P(Q))
219+ if (containsElement([C, D], aK))
220+ then throw(("Original Artist " + aK))
194221 else true
195222 }
196223
197224
198-func aw (aj) = {
199- let ax = split(B(L(aj)), "_")
200- let ay = B(I(ax[6], ax[5]))
201- if (if (!(at(ax[6], ax[5])))
202- then !(au(ax[6]))
225+func aL (av) = {
226+ let aM = split(N(X(av)), "_")
227+ let aN = N(U(aM[6], aM[5]))
228+ if (if (!(aI(aM[6], aM[5])))
229+ then !(aJ(aM[6]))
203230 else false)
204- then $Tuple4(false, ax[5], ax[6], ay)
205- else $Tuple4(true, ax[5], ax[6], ay)
231+ then $Tuple4(false, aM[5], aM[6], aN)
232+ else $Tuple4(true, aM[5], aM[6], aN)
206233 }
207234
208235
209-func az (H,P) = {
210- let ay = B(I(P, H))
211- if ((size(ay) == 0))
236+func aO (T,ab) = {
237+ let aN = N(U(ab, T))
238+ if ((size(aN) == 0))
212239 then throw("Artwork not found on SIGN Art")
213- else if (if (!(at(P, H)))
214- then !(au(P))
240+ else if (if (!(aI(ab, T)))
241+ then !(aJ(ab))
215242 else false)
216243 then false
217244 else true
218245 }
219246
220247
221-func aA (ae,aj,am,P,S,G,H) = {
222- let aB = A(F(P, H))
223- let aC = valueOrElse(getString(i, W(P)), g)
224- let aD = valueOrElse(getInteger(i, X(P)), 0)
225- let aE = valueOrElse(getString(i, Y(P)), g)
226- let aF = valueOrElse(getInteger(i, Z(P)), 0)
227- let aG = fraction(ae, p, 100)
228- let aH = fraction(ae, aB, 10000)
229- let aI = (ae - (aG + aH))
230- let aJ = if (if ((aC != g))
231- then (aD > 0)
248+func aP (aq,av,ay,ab,ae,S,T) = {
249+ let aQ = M(R(ab, T))
250+ let aR = valueOrElse(getString(i, ai(ab)), g)
251+ let aS = valueOrElse(getInteger(i, aj(ab)), 0)
252+ let aT = valueOrElse(getString(i, ak(ab)), g)
253+ let aU = valueOrElse(getInteger(i, al(ab)), 0)
254+ let aV = fraction(aq, B, 100)
255+ let aW = fraction(aq, aQ, 10000)
256+ let aX = (aq - (aV + aW))
257+ let aY = if (if ((aR != g))
258+ then (aS > 0)
232259 else false)
233- then fraction(ae, aD, 10000)
260+ then fraction(aq, aS, 10000)
234261 else 0
235- let aK = if (if ((aE != g))
236- then (aF > 0)
262+ let aZ = if (if ((aT != g))
263+ then (aU > 0)
237264 else false)
238- then fraction(ae, aF, 10000)
265+ then fraction(aq, aU, 10000)
239266 else 0
240- let aL = if ((aJ != 0))
241- then [ScriptTransfer(Address(fromBase58String(g)), (aG - aJ), aj), ScriptTransfer(Address(fromBase58String(aC)), aJ, aj)]
242- else [ScriptTransfer(Address(fromBase58String(g)), aG, aj)]
243- let aM = if ((aK != 0))
244- then [ScriptTransfer(Address(fromBase58String(aE)), aK, aj), ScriptTransfer(Address(fromBase58String(P)), (aH - aK), aj)]
245- else [ScriptTransfer(Address(fromBase58String(P)), aH, aj)]
246- let aN = ScriptTransfer(Address(fromBase58String(S)), aI, aj)
247- let aO = ScriptTransfer(Address(fromBase58String(G)), 1, fromBase58String(am))
248- $Tuple4(aL, aM, aN, aO)
267+ let ba = if ((aY != 0))
268+ then (aV - aY)
269+ else aV
270+ let bb = aD(t)
271+ if ((bb == bb))
272+ then {
273+ let bc = if ((av != t))
274+ then invoke(Address(fromBase58String(k)), "swap", [m, 1], [AttachedPayment(av, ba)])
275+ else unit
276+ if ((bc == bc))
277+ then {
278+ let bd = aD(t)
279+ if ((bd == bd))
280+ then {
281+ let be = if ((aY != 0))
282+ then [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
283+ then (aV - aY)
284+ else (bd - bb), t), ScriptTransfer(Address(fromBase58String(aR)), aY, av)]
285+ else [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
286+ then aV
287+ else (bd - bb), t)]
288+ let bf = if ((aZ != 0))
289+ then [ScriptTransfer(Address(fromBase58String(aT)), aZ, av), ScriptTransfer(Address(fromBase58String(ab)), (aW - aZ), av)]
290+ else [ScriptTransfer(Address(fromBase58String(ab)), aW, av)]
291+ let bg = ScriptTransfer(Address(fromBase58String(ae)), aX, av)
292+ let bh = ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(ay))
293+ $Tuple4(be, bf, bg, bh)
294+ }
295+ else throw("Strict value is not equal to itself.")
296+ }
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else throw("Strict value is not equal to itself.")
249300 }
250301
251302
252-func aP (aj,aQ) = {
253- let aR = if (d)
254- then 10
255- else U("waves_min_sell")
256- let aS = 1000000
257- let aT = if (d)
258- then 1
259- else (V * 2)
260- if (if (if (if (if (if ((aj == toBase58String(l)))
261- then (aS > aQ)
262- else false)
263- then (aQ != 0)
264- else false)
265- then true
266- else if (if ((aj == toBase58String(m)))
267- then (aS > aQ)
268- else false)
269- then (aQ != 0)
270- else false)
271- then true
272- else if (if ((aj == toBase58String(k)))
273- then (aT > aQ)
274- else false)
275- then (aQ != 0)
276- else false)
277- then true
278- else if (if (if ((aj == toBase58String(n)))
279- then true
280- else (aj == "WAVES"))
281- then (aR > aQ)
282- else false)
283- then (aQ != 0)
284- else false)
285- then false
286- else true
303+func bi (bj) = if ((0 >= bj))
304+ then throw("Wrong minimum sell price")
305+ else true
306+
307+
308+func bk (an,aa) = {
309+ let bl = am(an)
310+ let Y = bl._1
311+ let S = bl._2
312+ let bm = bl._3
313+ let bn = aL(aa)
314+ let bo = bn._1
315+ let T = bn._2
316+ let ab = bn._3
317+ let aN = bn._4
318+ $Tuple7(Y, S, bm, bo, T, ab, aN)
287319 }
288320
289321
290-func aU (ab,O) = {
291- let aV = aa(ab)
292- let M = aV._1
293- let G = aV._2
294- let aW = aV._3
295- let aX = aw(O)
296- let aY = aX._1
297- let H = aX._2
298- let P = aX._3
299- let ay = aX._4
300- $Tuple7(M, G, aW, aY, H, P, ay)
322+func bp () = {
323+ let bq = O(K)
324+ IntegerEntry(K, (bq + 1))
301325 }
302326
303327
304-func aZ () = {
305- let ba = C(y)
306- IntegerEntry(y, (ba + 1))
307- }
308-
309-
310-@Callable(bb)
311-func setConf (c,bc) = {
312- let G = toString(bb.caller)
313- if (containsElement([o, toString(this)], G))
328+@Callable(br)
329+func setConf (c,bs) = {
330+ let S = toString(br.caller)
331+ if (containsElement([A, toString(this)], S))
314332 then if (contains(c, "conf_"))
315- then [StringEntry(c, bc)]
333+ then [StringEntry(c, bs)]
316334 else throw("Entries starting with conf_ only")
317335 else throw("You are not allowed to change this")
318336 }
319337
320338
321339
322-@Callable(bb)
323-func appRunning (bd,be) = {
324- let G = toString(bb.caller)
325- let M = toBase58String(bb.transactionId)
326- if (containsElement([o, toString(this)], G))
327- then [BooleanEntry(u, bd), StringEntry(v, be)]
340+@Callable(br)
341+func appRunning (bt,bu) = {
342+ let S = toString(br.caller)
343+ let Y = toBase58String(br.transactionId)
344+ if (containsElement([A, toString(this)], S))
345+ then [BooleanEntry(G, bt), StringEntry(H, bu)]
328346 else throw("You are not allowed to change this")
329347 }
330348
331349
332350
333-@Callable(ab)
334-func sellNFT (aQ,bf) = {
335- let bg = ac(ab)
336- let ad = bg._1
337- let ae = bg._2
338- if ((ae != 1))
351+@Callable(an)
352+func sellNFT (bj,bv) = {
353+ let bw = ao(an)
354+ let ap = bw._1
355+ let aq = bw._2
356+ if ((aq != 1))
339357 then throw("No NFT attached")
340358 else {
341- let O = if (if (isDefined(ad.assetId))
342- then ah(value(ad.assetId))
359+ let aa = if (if (isDefined(ap.assetId))
360+ then at(value(ap.assetId))
343361 else false)
344- then toBase58String(value(ad.assetId))
362+ then toBase58String(value(ap.assetId))
345363 else throw("Only SIGN Art NFT accepted.")
346- let bh = aU(ab, O)
347- let M = bh._1
348- let G = bh._2
349- let aW = bh._3
350- let aY = bh._4
351- let H = bh._5
352- let P = bh._6
353- let ay = bh._7
354- if ((size(ay) == 0))
364+ let bx = bk(an, aa)
365+ let Y = bx._1
366+ let S = bx._2
367+ let bm = bx._3
368+ let bo = bx._4
369+ let T = bx._5
370+ let ab = bx._6
371+ let aN = bx._7
372+ if ((size(aN) == 0))
355373 then throw("Artwork not found on SIGN Art")
356- else if (!(aY))
374+ else if (!(bo))
357375 then throw("Not a valid nft")
358- else if (!(ai(bf)))
376+ else if (!(au(bv)))
359377 then throw("Only SIGN, USDN, USDT or WAVES accepted")
360- else if (!(aP(bf, aQ)))
378+ else if (!(bi(bj)))
361379 then throw("Wrong minimum sell price")
362- else [StringEntry((N(G, O, H, P) + "_OPEN"), ((((((((((((toString(aW) + "_") + toString(aQ)) + "_") + bf) + "_") + O) + "_") + H) + "_") + P) + "_") + M)), StringEntry(((("sale2nd_status_" + G) + "_") + O), "OPEN"), StringEntry(("current_owner_on_dapp_" + O), G)]
380+ else [StringEntry((Z(S, aa, T, ab) + "_OPEN"), ((((((((((((toString(bm) + "_") + toString(bj)) + "_") + bv) + "_") + aa) + "_") + T) + "_") + ab) + "_") + Y)), StringEntry(((("sale2nd_status_" + S) + "_") + aa), "OPEN"), StringEntry(("current_owner_on_dapp_" + aa), S)]
363381 }
364382 }
365383
366384
367385
368-@Callable(ab)
369-func updateSalePrice (O,aQ,bf) = {
370- let bi = aU(ab, O)
371- let M = bi._1
372- let G = bi._2
373- let aW = bi._3
374- let aY = bi._4
375- let H = bi._5
376- let P = bi._6
377- let ay = bi._7
378- if ((size(ay) == 0))
386+@Callable(an)
387+func updateSalePrice (aa,bj,bv) = {
388+ let by = bk(an, aa)
389+ let Y = by._1
390+ let S = by._2
391+ let bm = by._3
392+ let bo = by._4
393+ let T = by._5
394+ let ab = by._6
395+ let aN = by._7
396+ if ((size(aN) == 0))
379397 then throw("Artwork not found on SIGN Art, cancel your sale.")
380- else if (!(aY))
398+ else if (!(bo))
381399 then throw("Not a valid nft")
382400 else {
383- let S = b(("current_owner_on_dapp_" + O))
384- if ((S != G))
401+ let ae = b(("current_owner_on_dapp_" + aa))
402+ if ((ae != S))
385403 then throw("You don't own this NFT")
386404 else {
387- let an = b(((("sale2nd_status_" + G) + "_") + O))
388- if ((an != "OPEN"))
405+ let az = b(((("sale2nd_status_" + S) + "_") + aa))
406+ if ((az != "OPEN"))
389407 then throw("Sale not active")
390- else if (!(ai(bf)))
408+ else if (!(au(bv)))
391409 then throw("Only SIGN, USDN, USDT or WAVES accepted")
392- else if (!(aP(bf, aQ)))
410+ else if (!(bi(bj)))
393411 then throw("Wrong minimum sell price")
394412 else {
395- let bj = N(G, O, H, P)
396- let bk = split(b((bj + "_OPEN")), "_")
397-[StringEntry((bj + "_OPEN"), ((((((((((((bk[0] + "_") + toString(aQ)) + "_") + bf) + "_") + bk[3]) + "_") + bk[4]) + "_") + bk[5]) + "_") + bk[6]))]
413+ let bz = Z(S, aa, T, ab)
414+ let bA = split(b((bz + "_OPEN")), "_")
415+[StringEntry((bz + "_OPEN"), ((((((((((((bA[0] + "_") + toString(bj)) + "_") + bv) + "_") + bA[3]) + "_") + bA[4]) + "_") + bA[5]) + "_") + bA[6]))]
398416 }
399417 }
400418 }
401419 }
402420
403421
404422
405-@Callable(ab)
406-func cancelSale (O) = {
407- let bl = aU(ab, O)
408- let M = bl._1
409- let G = bl._2
410- let aW = bl._3
411- let aY = bl._4
412- let H = bl._5
413- let P = bl._6
414- let ay = bl._7
415- let S = b(("current_owner_on_dapp_" + O))
416- if ((S != G))
423+@Callable(an)
424+func cancelSale (aa) = {
425+ let bB = bk(an, aa)
426+ let Y = bB._1
427+ let S = bB._2
428+ let bm = bB._3
429+ let bo = bB._4
430+ let T = bB._5
431+ let ab = bB._6
432+ let aN = bB._7
433+ let ae = b(("current_owner_on_dapp_" + aa))
434+ if ((ae != S))
417435 then throw("You don't own this NFT")
418436 else {
419- let an = b(((("sale2nd_status_" + G) + "_") + O))
420- if ((an != "OPEN"))
437+ let az = b(((("sale2nd_status_" + S) + "_") + aa))
438+ if ((az != "OPEN"))
421439 then throw("Sale not active")
422440 else {
423- let bj = N(G, O, H, P)
424- let bk = b((bj + "_OPEN"))
425-[DeleteEntry((bj + "_OPEN")), DeleteEntry(((("sale2nd_status_" + G) + "_") + O)), DeleteEntry(("current_owner_on_dapp_" + O)), StringEntry((((bj + "_") + M) + "_CANCELLED"), ((((bk + "_CANCELLED_") + toString(aW)) + "_") + M)), ScriptTransfer(Address(fromBase58String(G)), 1, fromBase58String(O))]
441+ let bz = Z(S, aa, T, ab)
442+ let bA = b((bz + "_OPEN"))
443+[DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CANCELLED"), ((((bA + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(aa))]
426444 }
427445 }
428446 }
429447
430448
431449
432-@Callable(ab)
433-func buyNFT (O) = {
434- let bm = aU(ab, O)
435- let M = bm._1
436- let G = bm._2
437- let aW = bm._3
438- let aY = bm._4
439- let H = bm._5
440- let P = bm._6
441- let ay = bm._7
442- if ((size(ay) == 0))
450+@Callable(an)
451+func buyNFT (aa) = {
452+ let bC = bk(an, aa)
453+ let Y = bC._1
454+ let S = bC._2
455+ let bm = bC._3
456+ let bo = bC._4
457+ let T = bC._5
458+ let ab = bC._6
459+ let aN = bC._7
460+ if ((size(aN) == 0))
443461 then throw("Artwork not found on SIGN Art, cancel your sale.")
444- else if (!(aY))
462+ else if (!(bo))
445463 then throw("Not a valid nft")
446464 else {
447- let S = al(O)
448- let bj = N(S, O, H, P)
449- let bk = b((bj + "_OPEN"))
450- if ((size(bk) == 0))
465+ let ae = ax(aa)
466+ let bz = Z(ae, aa, T, ab)
467+ let bA = b((bz + "_OPEN"))
468+ if ((size(bA) == 0))
451469 then throw("Sale Not found!")
452470 else {
453- let bn = split(bk, "_")
454- if ((parseInt(bn[1]) == 0))
471+ let bD = split(bA, "_")
472+ if ((parseInt(bD[1]) == 0))
455473 then throw("Offer only")
456474 else {
457- let bo = ac(ab)
458- let ad = bo._1
459- let ae = bo._2
460- let bp = if (isDefined(ad.assetId))
461- then toBase58String(value(ad.assetId))
475+ let bE = ao(an)
476+ let ap = bE._1
477+ let aq = bE._2
478+ let bF = if (isDefined(ap.assetId))
479+ then toBase58String(value(ap.assetId))
462480 else ""
463- if (if ((bn[1] != toString(ae)))
481+ if (if ((bD[1] != toString(aq)))
464482 then true
465- else (bn[2] != bp))
483+ else (bD[2] != bF))
466484 then throw("Payment infos don't match.")
467485 else {
468- let bq = aA(ae, ad.assetId, O, P, S, G, H)
469- let aL = bq._1
470- let aM = bq._2
471- let aN = bq._3
472- let aO = bq._4
473- (([DeleteEntry((bj + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + O)), DeleteEntry(("current_owner_on_dapp_" + O)), StringEntry((((bj + "_") + M) + "_CLOSED"), ((((((bk + "_CLOSED_") + toString(aW)) + "_") + M) + "_") + G)), aZ(), aN, aO] ++ aM) ++ aL)
486+ let bG = aP(aq, ap.assetId, aa, ab, ae, S, T)
487+ let be = bG._1
488+ let bf = bG._2
489+ let bg = bG._3
490+ let bh = bG._4
491+ (([DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((bA + "_CLOSED_") + toString(bm)) + "_") + Y) + "_") + S)), bp(), bg, bh] ++ bf) ++ be)
474492 }
475493 }
476494 }
477495 }
478496 }
479497
480498
481499
482-@Callable(ab)
483-func setOffer (O) = {
484- let br = aU(ab, O)
485- let M = br._1
486- let R = br._2
487- let aW = br._3
488- let aY = br._4
489- let H = br._5
490- let P = br._6
491- let ay = br._7
492- if (!(aY))
500+@Callable(an)
501+func setOffer (aa) = {
502+ let bH = bk(an, aa)
503+ let Y = bH._1
504+ let ad = bH._2
505+ let bm = bH._3
506+ let bo = bH._4
507+ let T = bH._5
508+ let ab = bH._6
509+ let aN = bH._7
510+ if (!(bo))
493511 then throw("Not a valid nft")
494512 else {
495- let bs = ac(ab)
496- let ad = bs._1
497- let ae = bs._2
498- let aj = if (!(isDefined(ad.assetId)))
513+ let bI = ao(an)
514+ let ap = bI._1
515+ let aq = bI._2
516+ let av = if (!(isDefined(ap.assetId)))
499517 then "WAVES"
500- else toBase58String(value(ad.assetId))
501- if (!(ai(aj)))
518+ else toBase58String(value(ap.assetId))
519+ if (!(au(av)))
502520 then throw("asset not accepted")
503- else if ((ae == 0))
521+ else if ((aq == 0))
504522 then throw("Offer of 0 not allowed")
505- else if (!(aP(aj, ae)))
523+ else if (!(bi(aq)))
506524 then throw("Wrong minimum sell price")
507525 else {
508- let S = al(O)
509-[StringEntry((Q(R, O, S, M) + "_OPEN"), ((((((((((((((toString(aW) + "_") + toString(ae)) + "_") + aj) + "_") + O) + "_") + H) + "_") + P) + "_") + R) + "_") + M))]
526+ let ae = ax(aa)
527+[StringEntry((ac(ad, aa, ae, Y) + "_OPEN"), ((((((((((((((toString(bm) + "_") + toString(aq)) + "_") + av) + "_") + aa) + "_") + T) + "_") + ab) + "_") + ad) + "_") + Y))]
510528 }
511529 }
512530 }
513531
514532
515533
516-@Callable(ab)
517-func acceptOffer (O,T,R) = {
518- let bt = aU(ab, O)
519- let M = bt._1
520- let G = bt._2
521- let aW = bt._3
522- let aY = bt._4
523- let H = bt._5
524- let P = bt._6
525- let ay = bt._7
526- if (!(aY))
534+@Callable(an)
535+func acceptOffer (aa,af,ad) = {
536+ let bJ = bk(an, aa)
537+ let Y = bJ._1
538+ let S = bJ._2
539+ let bm = bJ._3
540+ let bo = bJ._4
541+ let T = bJ._5
542+ let ab = bJ._6
543+ let aN = bJ._7
544+ if (!(bo))
527545 then throw("Not a valid nft")
528546 else {
529- let S = al(O)
530- if ((G != S))
547+ let ae = ax(aa)
548+ if ((S != ae))
531549 then throw("Only sale owner can accept offer")
532550 else {
533- let bu = Q(R, O, S, T)
534- let bv = ao(bu)
535- let aq = bv._1
536- let aj = bv._2
537- let ap = bv._3
538- let bj = N(S, O, H, P)
539- let bk = b((bj + "_OPEN"))
540- if ((size(bk) == 0))
551+ let bK = ac(ad, aa, ae, af)
552+ let bL = aA(bK)
553+ let aC = bL._1
554+ let av = bL._2
555+ let aB = bL._3
556+ let bz = Z(ae, aa, T, ab)
557+ let bA = b((bz + "_OPEN"))
558+ if ((size(bA) == 0))
541559 then throw("Sale Not found!")
542560 else {
543- let ae = value(parseInt(aq[1]))
544- let bw = aA(ae, aj, O, P, S, aq[6], H)
545- let aL = bw._1
546- let aM = bw._2
547- let aN = bw._3
548- let aO = bw._4
549- let bx = if (isDefined(aj))
550- then toBase58String(value(aj))
561+ let aq = value(parseInt(aC[1]))
562+ let bM = aP(aq, av, aa, ab, ae, aC[6], T)
563+ let be = bM._1
564+ let bf = bM._2
565+ let bg = bM._3
566+ let bh = bM._4
567+ let bN = if (isDefined(av))
568+ then toBase58String(value(av))
551569 else "WAVES"
552- (([DeleteEntry((bj + "_OPEN")), DeleteEntry((bu + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + O)), DeleteEntry(("current_owner_on_dapp_" + O)), StringEntry((bu + "_CLOSED"), ((((ap + "_CLOSED_") + toString(aW)) + "_") + M)), StringEntry((((bj + "_") + M) + "_CLOSED"), ((((((((((bk + "_CLOSED-OFFER_") + toString(aW)) + "_") + M) + "_") + R) + "_") + toString(ae)) + "_") + bx)), aZ(), aN, aO] ++ aM) ++ aL)
570+ (([DeleteEntry((bz + "_OPEN")), DeleteEntry((bK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((bK + "_CLOSED"), ((((aB + "_CLOSED_") + toString(bm)) + "_") + Y)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((((((bA + "_CLOSED-OFFER_") + toString(bm)) + "_") + Y) + "_") + ad) + "_") + toString(aq)) + "_") + bN)), bp(), bg, bh] ++ bf) ++ be)
553571 }
554572 }
555573 }
556574 }
557575
558576
559577
560-@Callable(ab)
561-func cancelOffer (O,T,R,S) = {
562- let by = aa(ab)
563- let M = by._1
564- let G = by._2
565- let aW = by._3
566- if (if ((G != R))
567- then (G != S)
578+@Callable(an)
579+func cancelOffer (aa,af,ad,ae) = {
580+ let bO = am(an)
581+ let Y = bO._1
582+ let S = bO._2
583+ let bm = bO._3
584+ if (if ((S != ad))
585+ then (S != ae)
568586 else false)
569587 then throw("You cannot cancel this offer.")
570588 else {
571- let bu = Q(R, O, S, T)
572- let bz = ao(bu)
573- let aq = bz._1
574- let aj = bz._2
575- let ap = bz._3
576-[DeleteEntry((bu + "_OPEN")), StringEntry((bu + "_CANCELLED"), ((((ap + "_CANCELLED_") + toString(aW)) + "_") + M)), ScriptTransfer(Address(fromBase58String(G)), parseIntValue(aq[1]), aj)]
589+ let bK = ac(ad, aa, ae, af)
590+ let bP = aA(bK)
591+ let aC = bP._1
592+ let av = bP._2
593+ let aB = bP._3
594+[DeleteEntry((bK + "_OPEN")), StringEntry((bK + "_CANCELLED"), ((((aB + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), parseIntValue(aC[1]), av)]
577595 }
578596 }
579597
580598

github/deemru/w8io/3ef1775 
291.30 ms