tx · 13N1Txhp3vXKPBjqW9cMtdT9C4gqb8u3ffSR4ZSRGbFU 3N8cFCjsrJUzUvDvHPjV22aRFcJswt9Dzw7: -0.03400000 Waves 2023.07.19 14:41 [2672691] smart account 3N8cFCjsrJUzUvDvHPjV22aRFcJswt9Dzw7 > SELF 0.00000000 Waves
{ "type": 13, "id": "13N1Txhp3vXKPBjqW9cMtdT9C4gqb8u3ffSR4ZSRGbFU", "fee": 3400000, "feeAssetId": null, "timestamp": 1689766949917, "version": 2, "chainId": 84, "sender": "3N8cFCjsrJUzUvDvHPjV22aRFcJswt9Dzw7", "senderPublicKey": "5FCTToK5jg7sM2fjJEGkUSeW5fCgWb168mHPLKc9izBg", "proofs": [ "5TZZ2M5PDHkokgNPxGcih1STwiCmgz1huosSyRa9aPCSAe1CiWxXDZLZa99XJ4rcbZumSzqAvfALUEfNA84ZvkYC" ], "script": "base64:BgK+AQgCEgASBAoCCAgSBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEYEgoKCAgICAgIAQgIEgQKAggBEgMKAQESAwoBARIECgIIARIGCgQICAgIEgQKAggIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgMKAQgSBAoCCAgSAwoBCBIDCgEIEgMKAQgSBAoCCAgSAwoBCBIDCgEIEgMKAQh1AAZTQ0FMRTgACAAFTVVMVDgAgMLXLwAGTVVMVDEyAICglKWNHQAHU0NBTEUxOAASAAZNVUxUMTgJALYCAQCAgJC7utat8A0ADlBPT0xXRUlHSFRNVUxUBQVNVUxUOAAOR1dYdmlydHVhbFBPT0wCDkdXWHZpcnR1YWxQT09MAAxsYWJlbFBvb2xzTHACCFBPT0xTX0xQAA1kZWZhdWx0U3ByZWFkAICJegALd2F2ZXNTdHJpbmcCBVdBVkVTABFkZWNpbWFsc011bHRQcmljZQkAaAIJAGgCAGQA6AcA6AcAA1NFUAICX18ABUVNUFRZAgAAClBvb2xBY3RpdmUAAQAPUG9vbFB1dERpc2FibGVkAAIAE1Bvb2xNYXRjaGVyRGlzYWJsZWQAAwAMUG9vbFNodXRkb3duAAQAEmlkeEludGVybmFsQXNzZXRJZAABAA9pZHhSZXN1dEFjdGlvbnMAAgAgaWR4SWZBc3NldElkQ2FsY3VsYXRpb25QZXJmb3JtZWQAAwAOaWR4UG9vbEFkZHJlc3MAAQANaWR4UG9vbFN0YXR1cwACABBpZHhQb29sTFBBc3NldElkAAMADWlkeEFtdEFzc2V0SWQABAAPaWR4UHJpY2VBc3NldElkAAUADmlkeEFtdEFzc2V0RGNtAAYAEGlkeFByaWNlQXNzZXREY20ABwAOaWR4SUFtdEFzc2V0SWQACAAQaWR4SVByaWNlQXNzZXRJZAAJAA1pZHhMUEFzc2V0RGNtAAoAC2lkeFBvb2xUeXBlAAsAE3Bvb2xMYWJlbFd4RW1pc3Npb24CC1dYX0VNSVNTSU9OAA92YWxpZFBvb2xMYWJlbHMJAMwIAgUTcG9vbExhYmVsV3hFbWlzc2lvbgUDbmlsARZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAEMc3dhcENvbnRyYWN0AAIQJXNfX3N3YXBDb250cmFjdAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ9rZXlMcFRva2Vuc0xpc3QAAhAlc19fbHBUb2tlbnNMaXN0ARFrZXlQb29sU2NyaXB0SGFzaAACFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBDWtleU1hdGNoZXJQdWIAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAACGSVzX19sZWdhY3lGYWN0b3J5Q29udHJhY3QBDmtleUxlZ2FjeVBvb2xzAAIPJXNfX2xlZ2FjeVBvb2xzARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwEPa2V5QWRtaW5QdWJLZXlzAAIQJXNfX2FkbWluUHViS2V5cwEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAACFyVzX19hc3NldHNTdG9yZUNvbnRyYWN0ARlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0AAIaJXNfX3ZvdGluZ0VtaXNzaW9uQ29udHJhY3QBDmtleVByaWNlQXNzZXRzAAkAuQkCCQDMCAICAiVzCQDMCAICC3ByaWNlQXNzZXRzBQNuaWwFA1NFUAEQa2V5UHJpY2VEZWNpbWFscwACESVzX19wcmljZURlY2ltYWxzARNrZXlBbGxQb29sc1NodXRkb3duAAIMJXNfX3NodXRkb3duARZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAIXJXNfX25leHRJbnRlcm5hbEFzc2V0SWQBD2tleVBvb2xUb1dlaWdodAELcG9vbEFkZHJlc3MJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQtwb29sQWRkcmVzcwEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQILcG9vbEFkZHJlc3MDbnVtCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FC3Bvb2xBZGRyZXNzAgJfXwkApAMBBQNudW0BH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQBEWludGVybmFsQmFzZUFzc2V0CQCsAgICKCVzJXMlZF9fbWFwcGluZ3NfX2ludGVybmFsMmJhc2VBc3NldElkX18JAKQDAQURaW50ZXJuYWxCYXNlQXNzZXQBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBDGJhc2VBc3NldFN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQxiYXNlQXNzZXRTdHIBDWtleVBvb2xDb25maWcCE2Ftb3VudEFzc2V0SW50ZXJuYWwScHJpY2VBc3NldEludGVybmFsCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBRNhbW91bnRBc3NldEludGVybmFsAgJfXwUScHJpY2VBc3NldEludGVybmFsAghfX2NvbmZpZwEha2V5UG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAQ5hc3NldHNJbnRlcm5hbAQLJHQwMzY1ODM3MjAFDmFzc2V0c0ludGVybmFsBBNhbW91bnRBc3NldEludGVybmFsCAULJHQwMzY1ODM3MjACXzEEEnByaWNlQXNzZXRJbnRlcm5hbAgFCyR0MDM2NTgzNzIwAl8yCQC5CQIJAMwIAgIGJWQlZCVzCQDMCAIJAKQDAQUTYW1vdW50QXNzZXRJbnRlcm5hbAkAzAgCCQCkAwEFEnByaWNlQXNzZXRJbnRlcm5hbAkAzAgCAhpvbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAUDbmlsBQNTRVABJWtleUFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQACQC5CQIJAMwIAgICJXMJAMwIAgIab25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQFA25pbAUDU0VQAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEKbHBBc3NldFN0cgkArAICCQCsAgICCCVzJXMlc19fBQpscEFzc2V0U3RyAhhfX21hcHBpbmdzX19scEFzc2V0MlBvb2wBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwUYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgJfXwUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICHl9fbWFwcGluZ3NfX1Bvb2xBc3NldHMyTHBBc3NldAENa2V5UG9vbFNwcmVhZAELcG9vbEFkZHJlc3MJAKwCAgIOJXMlc19fc3ByZWFkX18FC3Bvb2xBZGRyZXNzASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiNfX21hcHBpbmdzX19wb29sQ29udHJhY3QyUG9vbEFzc2V0cwEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18JAKQDAQUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0AR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0ARNwb29sQ29udHJhY3RBZGRyZXNzCQCsAgIJAKwCAgIIJXMlcyVzX18FE3Bvb2xDb250cmFjdEFkZHJlc3MCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0ASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBCmxwQXNzZXRTdHIJAKwCAgkArAICAgglcyVzJXNfXwUKbHBBc3NldFN0cgIgX19tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QBDWtleVd4RW1pc3Npb24CDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkCQCsAgIJAKwCAgkArAICAhQlcyVzJXNfX3d4RW1pc3Npb25fXwUNYW1vdW50QXNzZXRJZAICX18FDHByaWNlQXNzZXRJZAEIa2V5SW5GZWUBC3Bvb2xBZGRyZXNzCQCsAgICDSVzJXNfX2luRmVlX18FC3Bvb2xBZGRyZXNzAQ9rZXlJbkZlZURlZmF1bHQAAhAlc19faW5GZWVEZWZhdWx0AQlrZXlPdXRGZWUBC3Bvb2xBZGRyZXNzCQCsAgICDiVzJXNfX291dEZlZV9fBQtwb29sQWRkcmVzcwEQa2V5T3V0RmVlRGVmYXVsdAACESVzX19vdXRGZWVEZWZhdWx0ARZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uAQtwb29sQWRkcmVzcwkArAICAhslcyVzX19za2lwT3JkZXJWYWxpZGF0aW9uX18FC3Bvb2xBZGRyZXNzARFrZXlDaGFuZ2VBbXBEZWxheQELcG9vbEFkZHJlc3MJAKwCAgIWJXMlc19fY2hhbmdlQW1wRGVsYXlfXwULcG9vbEFkZHJlc3MBEWtleUNoYW5nZUFtcERlbHRhAQtwb29sQWRkcmVzcwkArAICAhYlcyVzX19jaGFuZ2VBbXBEZWx0YV9fBQtwb29sQWRkcmVzcwESa2V5Q2hhbmdlQW1wVGFyZ2V0AQtwb29sQWRkcmVzcwkArAICAhclcyVzX19jaGFuZ2VBbXBUYXJnZXRfXwULcG9vbEFkZHJlc3MBFWtleVNXYXZlc1Byb3h5QWRkcmVzcwACFiVzX19zV2F2ZXNQcm94eUFkZHJlc3MBEGtleVNXYXZlc0Fzc2V0SWQAAhElc19fc1dhdmVzQXNzZXRJZAEXa2V5U3Rha2luZ1Byb2ZpdEFkZHJlc3MAAhglc19fc3Rha2luZ1Byb2ZpdEFkZHJlc3MBDmtleUxlYXNlZFJhdGlvAgtwb29sQWRkcmVzcwdhc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC2xlYXNlZFJhdGlvCQDMCAIFC3Bvb2xBZGRyZXNzCQDMCAIFB2Fzc2V0SWQFA25pbAUDU0VQARVrZXlMZWFzZWRSYXRpb0RlZmF1bHQBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICEmxlYXNlZFJhdGlvRGVmYXVsdAkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEXa2V5TGVhc2VkUmF0aW9Ub2xlcmFuY2UCC3Bvb2xBZGRyZXNzB2Fzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIUbGVhc2VkUmF0aW9Ub2xlcmFuY2UJAMwIAgULcG9vbEFkZHJlc3MJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABDWtleU1pbkJhbGFuY2UCC3Bvb2xBZGRyZXNzB2Fzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIKbWluQmFsYW5jZQkAzAgCBQtwb29sQWRkcmVzcwkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEUa2V5TWluQmFsYW5jZURlZmF1bHQBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICEW1pbkJhbGFuY2VEZWZhdWx0CQDMCAIFB2Fzc2V0SWQFA25pbAUDU0VQAQ9nZXRTdHJpbmdPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFA2tleQkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FA2tleQEQZ2V0Qm9vbGVhbk9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJsIAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5AQxnZXRJbnRPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFA2tleQkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FA2tleQEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCiCAEJARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXMFBHRoaXMAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAABABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAAIAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAMAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAEABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAAUAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAGABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAcAFElkeEZhY3RvcnlDZmdEYW9EYXBwAAgAGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwAAkAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAAoAFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAACwEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABDmdldFByaWNlQXNzZXRzAAQHJG1hdGNoMAkAoggBCQEOa2V5UHJpY2VBc3NldHMAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAMJAAACCQCxAgEFAXMAAAUDbmlsCQC1CQIFAXMFA1NFUAUDbmlsARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAAl0ZXN0RXJyb3IJAAIBAg9UZXN0IGVycm9yIGhlcmUBCG11c3RUaGlzAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgELbXVzdE1hbmFnZXIBAWkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQJAQhtdXN0VGhpcwEFAWkJAAIBAgtNYXRjaCBlcnJvcgEQZGF0YUZhY3RvcnlDZmdWMwsOc3Rha2luZ0FkZHJlc3MPYm9vc3RpbmdBZGRyZXNzC2lkb0NvbnRyYWN0DHRlYW1Db250cmFjdBBlbWlzc2lvbkNvbnRyYWN0DHJlc3RDb250cmFjdBBzbGlwcGFnZUNvbnRyYWN0C2Rhb0NvbnRyYWN0EW1hcmtldGluZ0NvbnRyYWN0Emd3eFJld2FyZHNDb250cmFjdA1iaXJkc0NvbnRyYWN0CQC5CQIJAMwIAgIWJXMlcyVzJXMlcyVzJXMlcyVzJXMlcwkAzAgCBQ5zdGFraW5nQWRkcmVzcwkAzAgCBQ9ib29zdGluZ0FkZHJlc3MJAMwIAgULaWRvQ29udHJhY3QJAMwIAgUMdGVhbUNvbnRyYWN0CQDMCAIFEGVtaXNzaW9uQ29udHJhY3QJAMwIAgUMcmVzdENvbnRyYWN0CQDMCAIFEHNsaXBwYWdlQ29udHJhY3QJAMwIAgULZGFvQ29udHJhY3QJAMwIAgURbWFya2V0aW5nQ29udHJhY3QJAMwIAgUSZ3d4UmV3YXJkc0NvbnRyYWN0CQDMCAIFDWJpcmRzQ29udHJhY3QFA25pbAUDU0VQAQ5kYXRhRmFjdG9yeUNmZwcOc3Rha2luZ0FkZHJlc3MPYm9vc3RpbmdBZGRyZXNzC2lkb0NvbnRyYWN0DHRlYW1Db250cmFjdBBlbWlzc2lvbkNvbnRyYWN0DHJlc3RDb250cmFjdBBzbGlwcGFnZUNvbnRyYWN0CQC5CQIJAMwIAgIMJXMlcyVzJXMlcyVzCQDMCAIFDnN0YWtpbmdBZGRyZXNzCQDMCAIFD2Jvb3N0aW5nQWRkcmVzcwkAzAgCBQtpZG9Db250cmFjdAkAzAgCBQx0ZWFtQ29udHJhY3QJAMwIAgUQZW1pc3Npb25Db250cmFjdAkAzAgCBQxyZXN0Q29udHJhY3QJAMwIAgUQc2xpcHBhZ2VDb250cmFjdAUDbmlsBQNTRVABC2RhdGFQb29sQ2ZnCwtwb29sQWRkcmVzcwpwb29sU3RhdHVzCWxwQXNzZXRJZA5hbW91bnRBc3NldFN0cg1wcmljZUFzc2V0U3RyE2Ftb3VudEFzc2V0RGVjaW1hbHMScHJpY2VBc3NldERlY2ltYWxzFWFtb3VudEFzc2V0SW50ZXJuYWxJZBRwcmljZUFzc2V0SW50ZXJuYWxJZA9scEFzc2V0RGVjaW1hbHMIcG9vbFR5cGUJALkJAgkAzAgCAhYlcyVkJXMlcyVzJWQlZCVkJWQlZCVzCQDMCAIFC3Bvb2xBZGRyZXNzCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgUJbHBBc3NldElkCQDMCAIFDmFtb3VudEFzc2V0U3RyCQDMCAIFDXByaWNlQXNzZXRTdHIJAMwIAgkApAMBBRNhbW91bnRBc3NldERlY2ltYWxzCQDMCAIJAKQDAQUScHJpY2VBc3NldERlY2ltYWxzCQDMCAIJAKQDAQUVYW1vdW50QXNzZXRJbnRlcm5hbElkCQDMCAIJAKQDAQUUcHJpY2VBc3NldEludGVybmFsSWQJAMwIAgkApAMBBQ9scEFzc2V0RGVjaW1hbHMJAMwIAgUIcG9vbFR5cGUFA25pbAUDU0VQARVkYXRhTWFwcGluZ1Bvb2xBc3NldHMCFmludGVybmFsQW1vdW50QXNzZXRTdHIVaW50ZXJuYWxQcmljZUFzc2V0U3RyCQC5CQIJAMwIAgIEJWQlZAkAzAgCCQCkAwEFFmludGVybmFsQW1vdW50QXNzZXRTdHIJAMwIAgkApAMBBRVpbnRlcm5hbFByaWNlQXNzZXRTdHIFA25pbAUDU0VQAQ1nZXRQb29sQ29uZmlnAQtwb29sQWRkcmVzcwQKcG9vbEFzc2V0cwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MFA1NFUAQTYW1vdW50QXNzZXRJbnRlcm5hbAkAkQMCBQpwb29sQXNzZXRzAAEEEnByaWNlQXNzZXRJbnRlcm5hbAkAkQMCBQpwb29sQXNzZXRzAAIJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVABGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAgphc3NldElkU3RyC2luY3JlbWVudG9yBA9pbnRlcm5hbEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQphc3NldElkU3RyAAAEGGN1cnJlbnRJbmRleE9mSW50ZXJuYWxJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAQGcmVzdWx0AwkAAAIFD2ludGVybmFsQXNzZXRJZAAABBJuZXdJbnRlcm5hbEFzc2V0SWQJAGQCBRhjdXJyZW50SW5kZXhPZkludGVybmFsSWQFC2luY3JlbWVudG9yCQCVCgMFEm5ld0ludGVybmFsQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5leHRJbnRlcm5hbEFzc2V0SWQABRJuZXdJbnRlcm5hbEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKYXNzZXRJZFN0cgUSbmV3SW50ZXJuYWxBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAQUSbmV3SW50ZXJuYWxBc3NldElkBQphc3NldElkU3RyBQNuaWwGCQCVCgMFD2ludGVybmFsQXNzZXRJZAUDbmlsBwUGcmVzdWx0AQltdXN0QWRtaW4BAWkECGFkbWluUEtzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUFkbWluUHViS2V5cwAFBUVNUFRZBQNTRVADCQEPY29udGFpbnNFbGVtZW50AgUIYWRtaW5QS3MJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5BgQJaXNNYW5hZ2VyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFCWlzTWFuYWdlcgUJaXNNYW5hZ2VyBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWaW50T3JEZWZhdWx0T3JGYWxsYmFjawMDa2V5CmtleURlZmF1bHQNdmFsdWVGYWxsYmFjawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUKa2V5RGVmYXVsdAUNdmFsdWVGYWxsYmFjawEScG9vbEV4aXN0c0ludGVybmFsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQTYW1vdW50QXNzZXRJbnRlcm5hbAkAnwgBCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFDWFtb3VudEFzc2V0SWQEEnByaWNlQXNzZXRJbnRlcm5hbAkAnwgBCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFDHByaWNlQXNzZXRJZAMDCQAAAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUEdW5pdAYJAAACBRJwcmljZUFzc2V0SW50ZXJuYWwFBHVuaXQHBARhbUFzCQCkAwEJAQV2YWx1ZQEFE2Ftb3VudEFzc2V0SW50ZXJuYWwEBHByQXMJAKQDAQkBBXZhbHVlAQUScHJpY2VBc3NldEludGVybmFsBANjZmcJAKIIAQkBDWtleVBvb2xDb25maWcCBQRhbUFzBQRwckFzBApjZmdSZXZlcnNlCQCiCAEJAQ1rZXlQb29sQ29uZmlnAgUEcHJBcwUEYW1BcwQGZXhpc3RzAwkBAiE9AgUDY2ZnBQR1bml0BgkBAiE9AgUKY2ZnUmV2ZXJzZQUEdW5pdAUGZXhpc3RzIAFpARdnZXRTd2FwQ29udHJhY3RSRUFET05MWQAJAJQKAgUDbmlsCQEPZ2V0U3RyaW5nT3JGYWlsAQkBDHN3YXBDb250cmFjdAABaQEaZ2V0UG9vbExlYXNlQ29uZmlnUkVBRE9OTFkCC3Bvb2xBZGRyZXNzB2Fzc2V0SWQEDSR0MDE0MzA0MTQ2MDgEByRtYXRjaDAJAJoIAgUEdGhpcwkBDmtleUxlYXNlZFJhdGlvAgULcG9vbEFkZHJlc3MFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFyBQckbWF0Y2gwCQCUCgIGCQCXAwEJAMwIAgBkCQDMCAIJAJYDAQkAzAgCAAAJAMwIAgUBcgUDbmlsBQNuaWwEByRtYXRjaDEJAJoIAgUEdGhpcwkBFWtleUxlYXNlZFJhdGlvRGVmYXVsdAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMQIDSW50BAJyZAUHJG1hdGNoMQkAlAoCBgkAlwMBCQDMCAIAZAkAzAgCCQCWAwEJAMwIAgAACQDMCAIFAnJkBQNuaWwFA25pbAkAlAoCBwAABAppc0xlYXNhYmxlCAUNJHQwMTQzMDQxNDYwOAJfMQQLbGVhc2VkUmF0aW8IBQ0kdDAxNDMwNDE0NjA4Al8yBAptaW5CYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAQ1rZXlNaW5CYWxhbmNlAgULcG9vbEFkZHJlc3MFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwCQCWAwEJAMwIAgAACQDMCAIFAWIFA25pbAQHJG1hdGNoMQkAmggCBQR0aGlzCQEUa2V5TWluQmFsYW5jZURlZmF1bHQBBQdhc3NldElkAwkAAQIFByRtYXRjaDECA0ludAQCYmQFByRtYXRjaDEJAJYDAQkAzAgCAAAJAMwIAgUCYmQFA25pbAAABA0kdDAxNDg3NDE1MDk4AwkAAAIFB2Fzc2V0SWQCBVdBVkVTCQCVCgMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFWtleVNXYXZlc1Byb3h5QWRkcmVzcwACAAkAnQgCBQR0aGlzCQELdmFsdWVPckVsc2UCCQEQa2V5U1dhdmVzQXNzZXRJZAACAAUGTVVMVDEyCQCVCgMCAAIAAAAEDHByb3h5QWRkcmVzcwgFDSR0MDE0ODc0MTUwOTgCXzEEDHByb3h5QXNzZXRJZAgFDSR0MDE0ODc0MTUwOTgCXzIEDHByb3h5UmF0ZU11bAgFDSR0MDE0ODc0MTUwOTgCXzMEFHN0YWtpbmdQcm9maXRBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARdrZXlTdGFraW5nUHJvZml0QWRkcmVzcwACAAkAlAoCBQNuaWwJAJkKBwUKaXNMZWFzYWJsZQULbGVhc2VkUmF0aW8FCm1pbkJhbGFuY2UFDHByb3h5QWRkcmVzcwUMcHJveHlBc3NldElkBQxwcm94eVJhdGVNdWwFFHN0YWtpbmdQcm9maXRBZGRyZXNzAWkBIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZAgZhc3NldDEGYXNzZXQyAwMJAAACBQZhc3NldDECLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTCQAAAgUGYXNzZXQyAgVXQVZFUwcJAJQKAgUDbmlsBQR1bml0BAlhc3NldE51bTEJAQV2YWx1ZQEJAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQZhc3NldDEECWFzc2V0TnVtMgkBBXZhbHVlAQkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFBmFzc2V0MgQCZWUJAJ0IAgUEdGhpcwkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBQlhc3NldE51bTEJAKQDAQUJYXNzZXROdW0yBANyZXMDCQAAAgUCZWUFBHVuaXQFBHVuaXQJALACAgkBBXZhbHVlAQUCZWUABAkAlAoCBQNuaWwFA3JlcwFpASFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkBAmxwCQCUCgIFA25pbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUCbHACAAFpAQtjb25zdHJ1Y3RvcggPc3Rha2luZ0NvbnRyYWN0EGJvb3N0aW5nQ29udHJhY3QLaWRvQ29udHJhY3QMdGVhbUNvbnRyYWN0EGVtaXNzaW9uQ29udHJhY3QMcmVzdENvbnRyYWN0EHNscGlwYWdlQ29udHJhY3QNcHJpY2VEZWNpbWFscwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlGYWN0b3J5Q29uZmlnAAkBDmRhdGFGYWN0b3J5Q2ZnBwUPc3Rha2luZ0NvbnRyYWN0BRBib29zdGluZ0NvbnRyYWN0BQtpZG9Db250cmFjdAUMdGVhbUNvbnRyYWN0BRBlbWlzc2lvbkNvbnRyYWN0BQxyZXN0Q29udHJhY3QFEHNscGlwYWdlQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlQcmljZURlY2ltYWxzAAUNcHJpY2VEZWNpbWFscwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIBEG1hdGhjaGVyUHViNThTdHIEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQKbWF0aGNlclB1YgkApwgBCQDZBAEFEG1hdGhjaGVyUHViNThTdHIDCQAAAgUKbWF0aGNlclB1YgUKbWF0aGNlclB1YgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TWF0Y2hlclB1YgAFEG1hdGhjaGVyUHViNThTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclYzBAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RmFjdG9yeUNvbmZpZwAJARBkYXRhRmFjdG9yeUNmZ1YzCwkAkQMCBQpmYWN0b3J5Q2ZnAAEJAJEDAgUKZmFjdG9yeUNmZwACCQCRAwIFCmZhY3RvcnlDZmcAAwkAkQMCBQpmYWN0b3J5Q2ZnAAQJAJEDAgUKZmFjdG9yeUNmZwAFCQCRAwIFCmZhY3RvcnlDZmcABgkAkQMCBQpmYWN0b3J5Q2ZnAAcFC2Rhb0NvbnRyYWN0BRFtYXJrZXRpbmdDb250cmFjdAUSZ3d4UmV3YXJkc0NvbnRyYWN0BQ1iaXJkc0NvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNAIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0C2xlZ2FjeVBvb2xzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGVnYWN5UG9vbHMACQC5CQIFC2xlZ2FjeVBvb2xzBQNTRVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclY1ARNhc3NldHNTdG9yZUNvbnRyYWN0BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABRNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNgIWdm90aW5nRW1pc3Npb25Db250cmFjdAtwcmljZUFzc2V0cwQFY2hla3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkBAiE9AgkApggBBRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQR1bml0BgIoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwUDbmlsAwkAAAIFBWNoZWtzBQVjaGVrcwkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVByaWNlQXNzZXRzAAkAuQkCBQtwcmljZUFzc2V0cwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc2V0QWRtaW5zAQxhZG1pblB1YktleXMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5QWRtaW5QdWJLZXlzAAkAuQkCBQxhZG1pblB1YktleXMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD2FjdGl2YXRlTmV3UG9vbAgLcG9vbEFkZHJlc3MOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0cgtscEFzc2V0TmFtZQxscEFzc2V0RGVzY3IKcG9vbFdlaWdodAhwb29sVHlwZQRsb2dvBAtjaGVja0NhbGxlcgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyAwkBCWlzRGVmaW5lZAEJAKIIAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MJAAIBCQCsAgIJAKwCAgINUG9vbCBhZGRyZXNzIAULcG9vbEFkZHJlc3MCFCBhbHJlYWR5IHJlZ2lzdGVyZWQuBBdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQkBGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAgUOYW1vdW50QXNzZXRTdHIAAQQVaW50ZXJuYWxBbW91bnRBc3NldElkCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzEEFmludGVybmFsUHJpY2VBc3NldERhdGEJARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIFDXByaWNlQXNzZXRTdHIDCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzMAAgABBBRpbnRlcm5hbFByaWNlQXNzZXRJZAgFFmludGVybmFsUHJpY2VBc3NldERhdGECXzEEFXBvb2xBY2NvdW50U2NyaXB0SGFzaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDxBwEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzCQCsAgICKU5vIHNjcmlwdCBoYXMgYmVlbiBmb3VuZCBvbiBwb29sIGFjY291bnQgBQtwb29sQWRkcmVzcwQcZXRoYWxvblBvb2xBY2NvdW50U2NyaXB0SGFzaAkBEUBleHRyTmF0aXZlKDEwNTcpAQkBEWtleVBvb2xTY3JpcHRIYXNoAAQKcG9vbEV4aXN0cwkBEnBvb2xFeGlzdHNJbnRlcm5hbAIFDmFtb3VudEFzc2V0U3RyBQ1wcmljZUFzc2V0U3RyAwUKcG9vbEV4aXN0cwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIFUG9vbCAFDmFtb3VudEFzc2V0U3RyAgEvBQ1wcmljZUFzc2V0U3RyAhwgaGFzIGFscmVhZHkgYmVlbiBhY3RpdmF0ZWQuBA9wb29sQ29uZmlnVmFsdWUJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAQUYW1vdW50QXNzZXRzRGVjaW1hbHMDCQAAAgUOYW1vdW50QXNzZXRTdHICBVdBVkVTBRFkZWNpbWFsc011bHRQcmljZQkAbAYACgAACAkBBXZhbHVlAQkA7AcBCQDZBAEFDmFtb3VudEFzc2V0U3RyCGRlY2ltYWxzAAAAAAUERE9XTgQTcHJpY2VBc3NldHNEZWNpbWFscwMJAAACBQ1wcmljZUFzc2V0U3RyAgVXQVZFUwURZGVjaW1hbHNNdWx0UHJpY2UJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQ1wcmljZUFzc2V0U3RyCGRlY2ltYWxzAAAAAAUERE9XTgQSbHBBc3NldElzc3VlQWN0aW9uCQDCCAUFC2xwQXNzZXROYW1lBQxscEFzc2V0RGVzY3IAAQAIBgQJbHBBc3NldElkCQC4CAEFEmxwQXNzZXRJc3N1ZUFjdGlvbgQMbHBBc3NldElkU3RyCQDYBAEFCWxwQXNzZXRJZAQYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzAghhY3RpdmF0ZQkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyBQNuaWwFA25pbAMJAAACBRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAMJAQIhPQIFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAIHc3VjY2VzcwkAAgECI1Bvb2wgaW5pdGlhbGlzYXRpb24gZXJyb3IgaGFwcGVuZWQuBBNhc3NldHNTdG9yZUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABBhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIOY3JlYXRlT3JVcGRhdGUJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFC2xwQXNzZXROYW1lCQDMCAIHBQNuaWwFA25pbAMJAAACBRhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYFGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgQSYWRkUG9vbHNMcExhYmVsSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCCGFkZExhYmVsCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQxsYWJlbFBvb2xzTHAFA25pbAUDbmlsAwkAAAIFEmFkZFBvb2xzTHBMYWJlbEludgUSYWRkUG9vbHNMcExhYmVsSW52BApzZXRMb2dvSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCB3NldExvZ28JAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFBGxvZ28FA25pbAUDbmlsAwkAAAIFCnNldExvZ29JbnYFCnNldExvZ29JbnYEEGFkZEFzc2V0c0xpbmtJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAINYWRkQXNzZXRzTGluawkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNuaWwDCQAAAgUQYWRkQXNzZXRzTGlua0ludgUQYWRkQXNzZXRzTGlua0ludgQbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCGGluY3JlYXNlQXNzZXRQb29sc051bWJlcgkAzAgCBQ5hbW91bnRBc3NldFN0cgUDbmlsBQNuaWwDCQAAAgUbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52BRtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYJAJQKAgkAzggCCQDOCAIIBRdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQJfMggFFmludGVybmFsUHJpY2VBc3NldERhdGECXzIJAMwIAgUSbHBBc3NldElzc3VlQWN0aW9uCQDMCAIJAQRCdXJuAgUJbHBBc3NldElkAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkBC2RhdGFQb29sQ2ZnCwULcG9vbEFkZHJlc3MJAKQDAQUKUG9vbEFjdGl2ZQUMbHBBc3NldElkU3RyBQ5hbW91bnRBc3NldFN0cgUNcHJpY2VBc3NldFN0cgUUYW1vdW50QXNzZXRzRGVjaW1hbHMFE3ByaWNlQXNzZXRzRGVjaW1hbHMFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQFEWRlY2ltYWxzTXVsdFByaWNlBQhwb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMBBQxscEFzc2V0SWRTdHIJARVkYXRhTWFwcGluZ1Bvb2xBc3NldHMCBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQCsAgICBCVzX18FDGxwQXNzZXRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwkBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAgUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAULcG9vbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFDGxwQXNzZXRJZFN0cgULcG9vbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQtwb29sQWRkcmVzcwUMbHBBc3NldElkU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UG9vbFRvV2VpZ2h0AQULcG9vbEFkZHJlc3MFCnBvb2xXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlQb29sU3ByZWFkAQULcG9vbEFkZHJlc3MFDWRlZmF1bHRTcHJlYWQFA25pbAUMbHBBc3NldElkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCm1hbmFnZVBvb2wCC3Bvb2xBZGRyZXNzCW5ld1N0YXR1cwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBApwb29sU3RhdHVzCQCRAwIFCnBvb2xDb25maWcFDWlkeFBvb2xTdGF0dXMEDGxwQXNzZXRJZFN0cgkAkQMCBQpwb29sQ29uZmlnBRBpZHhQb29sTFBBc3NldElkBA5hbW91bnRBc3NldFN0cgkAkQMCBQpwb29sQ29uZmlnBQ1pZHhBbXRBc3NldElkBA1wcmljZUFzc2V0U3RyCQCRAwIFCnBvb2xDb25maWcFD2lkeFByaWNlQXNzZXRJZAQUYW1vdW50QXNzZXRzRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhBbXRBc3NldERjbQQTcHJpY2VBc3NldHNEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeFByaWNlQXNzZXREY20EFWludGVybmFsQW1vdW50QXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeElBbXRBc3NldElkBBRpbnRlcm5hbFByaWNlQXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeElQcmljZUFzc2V0SWQECmxwQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhMUEFzc2V0RGNtBAhwb29sVHlwZQkAkQMCBQpwb29sQ29uZmlnBQtpZHhQb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQELZGF0YVBvb2xDZmcLBQtwb29sQWRkcmVzcwkApAMBBQluZXdTdGF0dXMFDGxwQXNzZXRJZFN0cgUOYW1vdW50QXNzZXRTdHIFDXByaWNlQXNzZXRTdHIFFGFtb3VudEFzc2V0c0RlY2ltYWxzBRNwcmljZUFzc2V0c0RlY2ltYWxzBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkBQpscEFzc2V0RGNtBQhwb29sVHlwZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGVtaXQBDGFtb3VudFRvRW1pdAQGY2FsbGVyCAUBaQZjYWxsZXIEDG9yaWdpbkNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBBBscEFzc2V0UmVxdWVzdGVkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQClCAEFBmNhbGxlcgIdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4EB2xwQXNzZXQJANkEAQUQbHBBc3NldFJlcXVlc3RlZAQLbGVnYWN5UG9vbHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEOa2V5TGVnYWN5UG9vbHMABQVFTVBUWQUDU0VQBBVsZWdhY3lGYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAIoTGVnYWN5IGZhY3RvcnkgY29udHJhY3QgZG9lcyBub3QgZXhpc3RzLgMJAGcCAAAFDGFtb3VudFRvRW1pdAUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFC2xlZ2FjeVBvb2xzCQClCAEFBmNhbGxlcgkAlAoCBQNuaWwFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAlAoCCQDMCAIJAQdSZWlzc3VlAwUHbHBBc3NldAUMYW1vdW50VG9FbWl0BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDGFtb3VudFRvRW1pdAUHbHBBc3NldAUDbmlsAgdzdWNjZXNzAWkBBGJ1cm4BDGFtb3VudFRvQnVybgQGY2FsbGVyCAUBaQZjYWxsZXIEDG9yaWdpbkNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDXBheW1lbnRBbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAQPaW5BbW91bnRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQEGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQClCAEFBmNhbGxlcgIdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4DCQECIT0CBQ9pbkFtb3VudEFzc2V0SWQFGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuAwkBAiE9AgUMYW1vdW50VG9CdXJuBQ1wYXltZW50QW1vdW50CQACAQIWSW52YWxpZCBhbW91bnQgcGFzc2VkLgQHbHBBc3NldAkA2QQBBRpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkAlAoCCQDMCAIJAQRCdXJuAgUHbHBBc3NldAUMYW1vdW50VG9CdXJuBQNuaWwCB3N1Y2Nlc3MBaQEMbW9kaWZ5V2VpZ2h0AglscEFzc2V0SWQFc2hhcmUEC2NoZWNrQ2FsbGVyAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAACAAYJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBNwb29sQ29udHJhY3RBZGRyZXNzCQEPZ2V0U3RyaW5nT3JGYWlsAQkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFCWxwQXNzZXRJZAQNcG9vbFdlaWdodEtleQkBD2tleVBvb2xUb1dlaWdodAEFE3Bvb2xDb250cmFjdEFkZHJlc3MEDGd3eFdlaWdodEtleQkBD2tleVBvb2xUb1dlaWdodAEFDkdXWHZpcnR1YWxQT09MBAlnd3hXZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUMZ3d4V2VpZ2h0S2V5AAAECnBvb2xXZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNcG9vbFdlaWdodEtleQAABA1wb29sV2VpZ2h0TmV3BQVzaGFyZQQKZmFjdG9yeUNmZwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEGtleUZhY3RvcnlDb25maWcABQNTRVAED3N0YWtpbmdDb250cmFjdAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQRb25Nb2RpZnlXZWlnaHRJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag5vbk1vZGlmeVdlaWdodAkAzAgCBQlscEFzc2V0SWQJAMwIAgUTcG9vbENvbnRyYWN0QWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRJbnYFEW9uTW9kaWZ5V2VpZ2h0SW52BBVnd3hWaXJ0dWFsUG9vbEFjdGlvbnMDCQAAAgUJZ3d4V2VpZ2h0AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZ3d4V2VpZ2h0S2V5AAAFA25pbAQUcG9vbFdlaWdodEhpc3RvcnlLZXkJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUTcG9vbENvbnRyYWN0QWRkcmVzcwAABBdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAkAnwgBBRRwb29sV2VpZ2h0SGlzdG9yeUtleQQYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zAwkAAAIFF3Bvb2xXZWlnaHRIaXN0b3J5T3JVbml0BQR1bml0BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUcG9vbFdlaWdodEhpc3RvcnlLZXkFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDXBvb2xXZWlnaHRLZXkFDXBvb2xXZWlnaHROZXcFA25pbAUVZ3d4VmlydHVhbFBvb2xBY3Rpb25zBRhwb29sV2VpZ2h0SGlzdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENbW9kaWZ5V2VpZ2h0cwQOYnRjUG9vbEFkZHJlc3MOZXRoUG9vbEFkZHJlc3MRZXRoQnRjUG9vbEFkZHJlc3MTdXNkY1VzZHRQb29sQWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBA9ldGhCdGNXZWlnaHROZXcJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBBF1c2RjVXNkdFdlaWdodE5ldwkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQED3dlaWdodERlY3JlbWVudAkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQECmZhY3RvcnlDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQBAtzdGFraW5nRGFwcAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQNZ3d4UmV3YXJkRGFwcAkBGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnBAxidGNXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBQ5idGNQb29sQWRkcmVzcwQMZXRoV2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQUOZXRoUG9vbEFkZHJlc3MED2V0aEJ0Y1dlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFEWV0aEJ0Y1Bvb2xBZGRyZXNzBBF1c2RjVXNkdFdlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFE3VzZGNVc2R0UG9vbEFkZHJlc3MECWJ0Y1dlaWdodAkBDGdldEludE9yRmFpbAEFDGJ0Y1dlaWdodEtFWQQJZXRoV2VpZ2h0CQEMZ2V0SW50T3JGYWlsAQUMZXRoV2VpZ2h0S0VZBAxidGNXZWlnaHROZXcJAGUCBQlidGNXZWlnaHQFD3dlaWdodERlY3JlbWVudAQMZXRoV2VpZ2h0TmV3CQBlAgUJZXRoV2VpZ2h0BQ93ZWlnaHREZWNyZW1lbnQDCQBnAgAABQxidGNXZWlnaHROZXcJAAIBCQCsAgICFmludmFsaWQgYnRjV2VpZ2h0TmV3OiAJAKQDAQUMYnRjV2VpZ2h0TmV3AwkAZwIAAAUMZXRoV2VpZ2h0TmV3CQACAQkArAICAhZpbnZhbGlkIGV0aFdlaWdodE5ldzogCQCkAwEFDGV0aFdlaWdodE5ldwQPYnRjTHBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQ5idGNQb29sQWRkcmVzcwQPZXRoTHBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQ5ldGhQb29sQWRkcmVzcwQSZXRoQnRjTHBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRFldGhCdGNQb29sQWRkcmVzcwQUdXNkY1VzZHRMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFE3VzZGNVc2R0UG9vbEFkZHJlc3MEEW9uTW9kaWZ5V2VpZ2h0QnRjCQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBQ9idGNMcEFzc2V0SWRTdHIJAMwIAgUOYnRjUG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFEW9uTW9kaWZ5V2VpZ2h0QnRjBRFvbk1vZGlmeVdlaWdodEJ0YwQRb25Nb2RpZnlXZWlnaHRFdGgJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFD2V0aExwQXNzZXRJZFN0cgkAzAgCBQ5ldGhQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRFdGgFEW9uTW9kaWZ5V2VpZ2h0RXRoBBRvbk1vZGlmeVdlaWdodEV0aEJ0YwkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUSZXRoQnRjTHBBc3NldElkU3RyCQDMCAIFEWV0aEJ0Y1Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRRvbk1vZGlmeVdlaWdodEV0aEJ0YwUUb25Nb2RpZnlXZWlnaHRFdGhCdGMEFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFFHVzZGNVc2R0THBBc3NldElkU3RyCQDMCAIFE3VzZGNVc2R0UG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQFFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGJ0Y1dlaWdodEtFWQUMYnRjV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxldGhXZWlnaHRLRVkFDGV0aFdlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPZXRoQnRjV2VpZ2h0S0VZBQ9ldGhCdGNXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFEXVzZGNVc2R0V2VpZ2h0S0VZBRF1c2RjVXNkdFdlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBQ5idGNQb29sQWRkcmVzcwAABQlidGNXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUOZXRoUG9vbEFkZHJlc3MAAAUJZXRoV2VpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFEWV0aEJ0Y1Bvb2xBZGRyZXNzAAAFD2V0aEJ0Y1dlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBRN1c2RjVXNkdFBvb2xBZGRyZXNzAAAFEXVzZGNVc2R0V2VpZ2h0TmV3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQJaGF2ZUxhYmVsBAckbWF0Y2gwCQCgCAEJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIHCQCUCgIFA25pbAUJaGF2ZUxhYmVsAWkBFnNldFd4RW1pc3Npb25Qb29sTGFiZWwCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAtjaGVja0NhbGxlcgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAtjaGVja0NhbGxlcgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEJbXVzdEFkbWluAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5V3hFbWlzc2lvbgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEm9uVmVyaWZpY2F0aW9uTG9zcwEHYXNzZXRJZAQLY2hlY2tDYWxsZXIDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAIABgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3ByaWNlQXNzZXRzCQEOZ2V0UHJpY2VBc3NldHMABBRjaGVja1ByaWNlQXNzZXRzU2l6ZQMJAGYCCQCQAwEFC3ByaWNlQXNzZXRzAAAGCQACAQIUaW52YWxpZCBwcmljZSBhc3NldHMDCQAAAgUUY2hlY2tQcmljZUFzc2V0c1NpemUFFGNoZWNrUHJpY2VBc3NldHNTaXplCgECY2ICA2FjYwpwcmljZUFzc2V0BAFyCQD8BwQFBHRoaXMCGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUHYXNzZXRJZAkAzAgCBQpwcmljZUFzc2V0BQNuaWwFA25pbAMJAAACBQFyBQFyBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAdhY3Rpb25zCgACJGwFC3ByaWNlQXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQECY2ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDExCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwMJAAACBQdhY3Rpb25zBQdhY3Rpb25zCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAShpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZAQtwb29sQWRkcmVzcwQKcG9vbENvbmZpZwkBDWdldFBvb2xDb25maWcBBQtwb29sQWRkcmVzcwQOYXNzZXRzSW50ZXJuYWwJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeElBbXRBc3NldElkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUQaWR4SVByaWNlQXNzZXRJZAQecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQELdmFsdWVPckVsc2UCCQCgCAEJASFrZXlQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQBBQ5hc3NldHNJbnRlcm5hbAcEImFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBJWtleUFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQABwkAlAoCBQNuaWwDBSJhbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBgUecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAWkBEGdldEluRmVlUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBANmZWUJARZpbnRPckRlZmF1bHRPckZhbGxiYWNrAwkBCGtleUluRmVlAQULcG9vbEFkZHJlc3MJAQ9rZXlJbkZlZURlZmF1bHQAAAAJAJQKAgUDbmlsBQNmZWUBaQERZ2V0T3V0RmVlUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBANmZWUJARZpbnRPckRlZmF1bHRPckZhbGxiYWNrAwkBCWtleU91dEZlZQEFC3Bvb2xBZGRyZXNzCQEQa2V5T3V0RmVlRGVmYXVsdAAJAGsDAAoFBU1VTFQ4AJBOCQCUCgIFA25pbAUDZmVlAWkBEHBvb2xJbmZvUkVBRE9OTFkCEGFtb3VudEFzc2V0SWRTdHIPcHJpY2VBc3NldElkU3RyBBthbW91bnRBc3NldEludGVybmFsSWRPcHRpb24JAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBRBhbW91bnRBc3NldElkU3RyBBpwcmljZUFzc2V0SW50ZXJuYWxJZE9wdGlvbgkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFD3ByaWNlQXNzZXRJZFN0cgQZcG9vbENvbnRyYWN0QWRkcmVzc09wdGlvbgkAnQgCBQR0aGlzCQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCCQEFdmFsdWUBBRthbW91bnRBc3NldEludGVybmFsSWRPcHRpb24JAQV2YWx1ZQEFGnByaWNlQXNzZXRJbnRlcm5hbElkT3B0aW9uBA9scEFzc2V0SWRPcHRpb24JAJ0IAgUEdGhpcwkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQEFdmFsdWUBBRlwb29sQ29udHJhY3RBZGRyZXNzT3B0aW9uBApwb29sRXhpc3RzAwMJAQlpc0RlZmluZWQBBRthbW91bnRBc3NldEludGVybmFsSWRPcHRpb24JAQlpc0RlZmluZWQBBRpwcmljZUFzc2V0SW50ZXJuYWxJZE9wdGlvbgcJAQlpc0RlZmluZWQBBRlwb29sQ29udHJhY3RBZGRyZXNzT3B0aW9uBwQIcG9vbEluZm8DBQpwb29sRXhpc3RzCQCUCgIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFGXBvb2xDb250cmFjdEFkZHJlc3NPcHRpb24JAQxwYXJzZUFzc2V0SWQBCQEFdmFsdWUBBQ9scEFzc2V0SWRPcHRpb24FBHVuaXQJAJQKAgUDbmlsBQhwb29sSW5mbwFpARVnZXRQb29sU3RhdHVzUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQXNzZXRzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwFpARVnZXRQb29sQ29uZmlnUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQXNzZXRzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAUDY2ZnAWkBIGdldFBvb2xDb25maWdCeUxwQXNzZXRJZFJFQURPTkxZAQxscEFzc2V0SWRTdHIECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFDGxwQXNzZXRJZFN0cgUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAUDY2ZnAWkBEnBvb2xFeGlzdHNSRUFET05MWQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAJQKAgUDbmlsCQEScG9vbEV4aXN0c0ludGVybmFsAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkAWkBG3NraXBPcmRlclZhbGlkYXRpb25SRUFET05MWQELcG9vbEFkZHJlc3MJAJQKAgUDbmlsCQELdmFsdWVPckVsc2UCCQCgCAEJARZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uAQULcG9vbEFkZHJlc3MHAWkBGmdldENoYW5nZUFtcENvbmZpZ1JFQURPTkxZAQtwb29sQWRkcmVzcwQFZGVsYXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARFrZXlDaGFuZ2VBbXBEZWxheQEFC3Bvb2xBZGRyZXNzBAVkZWx0YQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEWtleUNoYW5nZUFtcERlbHRhAQULcG9vbEFkZHJlc3MEBnRhcmdldAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEmtleUNoYW5nZUFtcFRhcmdldAEFC3Bvb2xBZGRyZXNzCQCUCgIFA25pbAkAzAgCBQVkZWxheQkAzAgCBQVkZWx0YQkAzAgCBQZ0YXJnZXQFA25pbAFpARVnZXRQb29sV2VpZ2h0UkVBRE9OTFkBCWxwQXNzZXRJZAQLcG9vbEFkZHJlc3MJAQ9nZXRTdHJpbmdPckZhaWwBCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkBAZ3ZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2tleVBvb2xUb1dlaWdodAEFC3Bvb2xBZGRyZXNzAAAJAJQKAgUDbmlsBQZ3ZWlnaHQBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXnLEEAf", "height": 2672691, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7GjEr4HnZPgnTCiVPfFUppTwMYTMkHueC3ND2dnYzqd9 Next: none Diff:
Old | New | Differences | |
---|---|---|---|
97 | 97 | func Q () = "%s__managerPublicKey" | |
98 | 98 | ||
99 | 99 | ||
100 | - | func R () = "%s__ | |
100 | + | func R () = "%s__managerVaultAddress" | |
101 | 101 | ||
102 | 102 | ||
103 | 103 | func S () = "%s__adminPubKeys" | |
233 | 233 | else fromBase58String(aY) | |
234 | 234 | ||
235 | 235 | ||
236 | - | let aZ = 1 | |
237 | - | ||
238 | - | let ba = 2 | |
239 | - | ||
240 | - | let bb = 3 | |
241 | - | ||
242 | - | let bc = 4 | |
243 | - | ||
244 | - | let bd = 5 | |
245 | - | ||
246 | - | let be = 6 | |
247 | - | ||
248 | - | let bf = 7 | |
249 | - | ||
250 | - | let bg = 8 | |
251 | - | ||
252 | - | let bh = 9 | |
253 | - | ||
254 | - | let bi = 10 | |
255 | - | ||
256 | - | let bj = 11 | |
257 | - | ||
258 | - | func bk (bl) = addressFromStringValue(bl[ba]) | |
236 | + | func aZ () = { | |
237 | + | let ba = getString(R()) | |
238 | + | if ($isInstanceOf(ba, "String")) | |
239 | + | then { | |
240 | + | let bb = ba | |
241 | + | addressFromStringValue(bb) | |
242 | + | } | |
243 | + | else this | |
244 | + | } | |
259 | 245 | ||
260 | 246 | ||
261 | - | func bm (bl) = addressFromStringValue(bl[bd]) | |
247 | + | let bc = 1 | |
248 | + | ||
249 | + | let bd = 2 | |
250 | + | ||
251 | + | let be = 3 | |
252 | + | ||
253 | + | let bf = 4 | |
254 | + | ||
255 | + | let bg = 5 | |
256 | + | ||
257 | + | let bh = 6 | |
258 | + | ||
259 | + | let bi = 7 | |
260 | + | ||
261 | + | let bj = 8 | |
262 | + | ||
263 | + | let bk = 9 | |
264 | + | ||
265 | + | let bl = 10 | |
266 | + | ||
267 | + | let bm = 11 | |
268 | + | ||
269 | + | func bn (bo) = addressFromStringValue(bo[bd]) | |
262 | 270 | ||
263 | 271 | ||
264 | - | func | |
272 | + | func bp (bo) = addressFromStringValue(bo[bg]) | |
265 | 273 | ||
266 | 274 | ||
267 | - | func | |
275 | + | func bq (bo) = addressFromStringValue(bo[bc]) | |
268 | 276 | ||
269 | 277 | ||
270 | - | func bp () = { | |
271 | - | let bq = getString(V()) | |
272 | - | if ($isInstanceOf(bq, "String")) | |
278 | + | func br (bo) = addressFromStringValue(bo[bl]) | |
279 | + | ||
280 | + | ||
281 | + | func bs () = { | |
282 | + | let ba = getString(V()) | |
283 | + | if ($isInstanceOf(ba, "String")) | |
273 | 284 | then { | |
274 | - | let | |
275 | - | if ((size( | |
285 | + | let bb = ba | |
286 | + | if ((size(bb) == 0)) | |
276 | 287 | then nil | |
277 | - | else split( | |
288 | + | else split(bb, l) | |
278 | 289 | } | |
279 | 290 | else nil | |
280 | 291 | } | |
281 | 292 | ||
282 | 293 | ||
283 | - | func bs () = { | |
284 | - | let bq = getString(Q()) | |
285 | - | if ($isInstanceOf(bq, "String")) | |
294 | + | func bt () = { | |
295 | + | let bu = aZ() | |
296 | + | let ba = getString(bu, Q()) | |
297 | + | if ($isInstanceOf(ba, "String")) | |
286 | 298 | then { | |
287 | - | let | |
288 | - | fromBase58String( | |
299 | + | let bb = ba | |
300 | + | fromBase58String(bb) | |
289 | 301 | } | |
290 | - | else if ($isInstanceOf( | |
302 | + | else if ($isInstanceOf(ba, "Unit")) | |
291 | 303 | then unit | |
292 | 304 | else throw("Match error") | |
293 | 305 | } | |
294 | 306 | ||
295 | 307 | ||
296 | - | func bt () = { | |
297 | - | let bq = getString(R()) | |
298 | - | if ($isInstanceOf(bq, "String")) | |
308 | + | let bv = throw("Permission denied") | |
309 | + | ||
310 | + | let bw = throw("Test error here") | |
311 | + | ||
312 | + | func bx (by) = if ((by.caller == this)) | |
313 | + | then true | |
314 | + | else bv | |
315 | + | ||
316 | + | ||
317 | + | func bz (by) = { | |
318 | + | let ba = bt() | |
319 | + | if ($isInstanceOf(ba, "ByteVector")) | |
299 | 320 | then { | |
300 | - | let br = bq | |
301 | - | fromBase58String(br) | |
321 | + | let bA = ba | |
322 | + | if ((by.callerPublicKey == bA)) | |
323 | + | then true | |
324 | + | else bv | |
302 | 325 | } | |
303 | - | else if ($isInstanceOf( | |
304 | - | then | |
326 | + | else if ($isInstanceOf(ba, "Unit")) | |
327 | + | then bx(by) | |
305 | 328 | else throw("Match error") | |
306 | 329 | } | |
307 | 330 | ||
308 | 331 | ||
309 | - | let bu = throw("Permission denied") | |
310 | - | ||
311 | - | let bv = throw("Test error here") | |
312 | - | ||
313 | - | func bw (bx) = if ((bx.caller == this)) | |
314 | - | then true | |
315 | - | else bu | |
332 | + | func bB (bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bC, bD, bE, bF, bG, bH, bI, bJ, bK, bL, bM], l) | |
316 | 333 | ||
317 | 334 | ||
318 | - | func by (bx) = { | |
319 | - | let bq = bs() | |
320 | - | if ($isInstanceOf(bq, "ByteVector")) | |
321 | - | then { | |
322 | - | let bz = bq | |
323 | - | if ((bx.callerPublicKey == bz)) | |
324 | - | then true | |
325 | - | else bu | |
326 | - | } | |
327 | - | else if ($isInstanceOf(bq, "Unit")) | |
328 | - | then bw(bx) | |
329 | - | else throw("Match error") | |
330 | - | } | |
335 | + | func bN (bC,bD,bE,bF,bG,bH,bI) = makeString(["%s%s%s%s%s%s", bC, bD, bE, bF, bG, bH, bI], l) | |
331 | 336 | ||
332 | 337 | ||
333 | - | func | |
338 | + | func bO (aa,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", aa, bP, bQ, bR, bS, toString(bT), toString(bU), toString(bV), toString(bW), toString(bX), bY], l) | |
334 | 339 | ||
335 | 340 | ||
336 | - | func | |
341 | + | func bZ (ca,cb) = makeString(["%d%d", toString(ca), toString(cb)], l) | |
337 | 342 | ||
338 | 343 | ||
339 | - | func bN (aa,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", aa, bO, bP, bQ, bR, toString(bS), toString(bT), toString(bU), toString(bV), toString(bW), bX], l) | |
340 | - | ||
341 | - | ||
342 | - | func bY (bZ,ca) = makeString(["%d%d", toString(bZ), toString(ca)], l) | |
343 | - | ||
344 | - | ||
345 | - | func cb (aa) = { | |
346 | - | let cc = split(aT(au(aa)), l) | |
347 | - | let ai = cc[1] | |
348 | - | let aj = cc[2] | |
344 | + | func cc (aa) = { | |
345 | + | let cd = split(aT(au(aa)), l) | |
346 | + | let ai = cd[1] | |
347 | + | let aj = cd[2] | |
349 | 348 | split(aT(ah(ai, aj)), l) | |
350 | 349 | } | |
351 | 350 | ||
352 | 351 | ||
353 | - | func | |
354 | - | let | |
355 | - | let | |
356 | - | let | |
352 | + | func ce (cf,cg) = { | |
353 | + | let ch = valueOrElse(getInteger(this, af(cf)), 0) | |
354 | + | let ci = valueOrElse(getInteger(this, Y()), 0) | |
355 | + | let cj = if ((ch == 0)) | |
357 | 356 | then { | |
358 | - | let | |
359 | - | $Tuple3( | |
357 | + | let ck = (ci + cg) | |
358 | + | $Tuple3(ck, [IntegerEntry(Y(), ck), IntegerEntry(af(cf), ck), StringEntry(ad(ck), cf)], true) | |
360 | 359 | } | |
361 | - | else $Tuple3( | |
362 | - | | |
360 | + | else $Tuple3(ch, nil, false) | |
361 | + | cj | |
363 | 362 | } | |
364 | 363 | ||
365 | 364 | ||
366 | - | func | |
367 | - | let | |
368 | - | if (containsElement( | |
365 | + | func cl (by) = { | |
366 | + | let cm = split(valueOrElse(getString(S()), m), l) | |
367 | + | if (containsElement(cm, toBase58String(by.callerPublicKey))) | |
369 | 368 | then true | |
370 | 369 | else { | |
371 | - | let | |
372 | - | if (( | |
370 | + | let cn = bz(by) | |
371 | + | if ((cn == cn)) | |
373 | 372 | then true | |
374 | 373 | else throw("Strict value is not equal to itself.") | |
375 | 374 | } | |
376 | 375 | } | |
377 | 376 | ||
378 | 377 | ||
379 | - | func | |
378 | + | func co (aU,cp,cq) = valueOrElse(getInteger(this, aU), valueOrElse(getInteger(this, cp), cq)) | |
380 | 379 | ||
381 | 380 | ||
382 | - | func | |
381 | + | func cr (aA,aB) = { | |
383 | 382 | let ai = getInteger(af(aA)) | |
384 | 383 | let aj = getInteger(af(aB)) | |
385 | 384 | if (if ((ai == unit)) | |
387 | 386 | else (aj == unit)) | |
388 | 387 | then false | |
389 | 388 | else { | |
390 | - | let | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
389 | + | let cs = toString(value(ai)) | |
390 | + | let ct = toString(value(aj)) | |
391 | + | let cu = getString(ah(cs, ct)) | |
392 | + | let cv = getString(ah(ct, cs)) | |
393 | + | let cw = if ((cu != unit)) | |
395 | 394 | then true | |
396 | - | else ( | |
397 | - | | |
395 | + | else (cv != unit) | |
396 | + | cw | |
398 | 397 | } | |
399 | 398 | } | |
400 | 399 | ||
401 | 400 | ||
402 | - | @Callable( | |
401 | + | @Callable(by) | |
403 | 402 | func getSwapContractREADONLY () = $Tuple2(nil, aT(J())) | |
404 | 403 | ||
405 | 404 | ||
406 | 405 | ||
407 | - | @Callable( | |
406 | + | @Callable(by) | |
408 | 407 | func getPoolLeaseConfigREADONLY (aa,aO) = { | |
409 | - | let | |
410 | - | let | |
411 | - | if ($isInstanceOf( | |
408 | + | let cx = { | |
409 | + | let ba = getInteger(this, aN(aa, aO)) | |
410 | + | if ($isInstanceOf(ba, "Int")) | |
412 | 411 | then { | |
413 | - | let | |
414 | - | $Tuple2(true, min([100, max([0, | |
412 | + | let cy = ba | |
413 | + | $Tuple2(true, min([100, max([0, cy])])) | |
415 | 414 | } | |
416 | 415 | else { | |
417 | - | let | |
418 | - | if ($isInstanceOf( | |
416 | + | let cz = getInteger(this, aP(aO)) | |
417 | + | if ($isInstanceOf(cz, "Int")) | |
419 | 418 | then { | |
420 | - | let | |
421 | - | $Tuple2(true, min([100, max([0, | |
419 | + | let cA = cz | |
420 | + | $Tuple2(true, min([100, max([0, cA])])) | |
422 | 421 | } | |
423 | 422 | else $Tuple2(false, 0) | |
424 | 423 | } | |
425 | 424 | } | |
426 | - | let | |
427 | - | let | |
428 | - | let | |
429 | - | let | |
430 | - | if ($isInstanceOf( | |
425 | + | let cB = cx._1 | |
426 | + | let cC = cx._2 | |
427 | + | let cD = { | |
428 | + | let ba = getInteger(this, aR(aa, aO)) | |
429 | + | if ($isInstanceOf(ba, "Int")) | |
431 | 430 | then { | |
432 | - | let | |
433 | - | max([0, | |
431 | + | let cE = ba | |
432 | + | max([0, cE]) | |
434 | 433 | } | |
435 | 434 | else { | |
436 | - | let | |
437 | - | if ($isInstanceOf( | |
435 | + | let cz = getInteger(this, aS(aO)) | |
436 | + | if ($isInstanceOf(cz, "Int")) | |
438 | 437 | then { | |
439 | - | let | |
440 | - | max([0, | |
438 | + | let cF = cz | |
439 | + | max([0, cF]) | |
441 | 440 | } | |
442 | 441 | else 0 | |
443 | 442 | } | |
444 | 443 | } | |
445 | - | let | |
444 | + | let cG = if ((aO == "WAVES")) | |
446 | 445 | then $Tuple3(valueOrElse(getString(this, aK()), ""), getString(this, valueOrElse(aL(), "")), c) | |
447 | 446 | else $Tuple3("", "", 0) | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | let | |
452 | - | $Tuple2(nil, $Tuple7( | |
447 | + | let cH = cG._1 | |
448 | + | let cI = cG._2 | |
449 | + | let cJ = cG._3 | |
450 | + | let cK = valueOrElse(getString(this, aM()), "") | |
451 | + | $Tuple2(nil, $Tuple7(cB, cC, cD, cH, cI, cJ, cK)) | |
453 | 452 | } | |
454 | 453 | ||
455 | 454 | ||
456 | 455 | ||
457 | - | @Callable( | |
458 | - | func getLpAssetFromPoolAssetsREADONLY ( | |
459 | - | then ( | |
456 | + | @Callable(by) | |
457 | + | func getLpAssetFromPoolAssetsREADONLY (cL,cM) = if (if ((cL == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS")) | |
458 | + | then (cM == "WAVES") | |
460 | 459 | else false) | |
461 | 460 | then $Tuple2(nil, unit) | |
462 | 461 | else { | |
463 | - | let cM = value(getInteger(this, af(cK))) | |
464 | 462 | let cN = value(getInteger(this, af(cL))) | |
465 | - | let cO = getString(this, aq(toString(cM), toString(cN))) | |
466 | - | let cP = if ((cO == unit)) | |
463 | + | let cO = value(getInteger(this, af(cM))) | |
464 | + | let cP = getString(this, aq(toString(cN), toString(cO))) | |
465 | + | let cQ = if ((cP == unit)) | |
467 | 466 | then unit | |
468 | - | else drop(value( | |
469 | - | $Tuple2(nil, | |
467 | + | else drop(value(cP), 4) | |
468 | + | $Tuple2(nil, cQ) | |
470 | 469 | } | |
471 | 470 | ||
472 | 471 | ||
473 | 472 | ||
474 | - | @Callable( | |
475 | - | func getPoolAddressFromLpAssetREADONLY ( | |
473 | + | @Callable(by) | |
474 | + | func getPoolAddressFromLpAssetREADONLY (cR) = $Tuple2(nil, valueOrElse(getString(this, ay(cR)), "")) | |
476 | 475 | ||
477 | 476 | ||
478 | 477 | ||
479 | - | @Callable( | |
480 | - | func constructor ( | |
481 | - | let | |
482 | - | if (( | |
483 | - | then [StringEntry(K(), | |
478 | + | @Callable(by) | |
479 | + | func constructor (cS,cT,bE,bF,bG,bH,cU,cV) = { | |
480 | + | let cW = bz(by) | |
481 | + | if ((cW == cW)) | |
482 | + | then [StringEntry(K(), bN(cS, cT, bE, bF, bG, bH, cU)), IntegerEntry(W(), cV)] | |
484 | 483 | else throw("Strict value is not equal to itself.") | |
485 | 484 | } | |
486 | 485 | ||
487 | 486 | ||
488 | 487 | ||
489 | - | @Callable( | |
490 | - | func constructorV2 ( | |
491 | - | let | |
492 | - | if (( | |
488 | + | @Callable(by) | |
489 | + | func constructorV2 (cX) = { | |
490 | + | let cW = bz(by) | |
491 | + | if ((cW == cW)) | |
493 | 492 | then { | |
494 | - | let | |
495 | - | if (( | |
496 | - | then [StringEntry(N(), | |
493 | + | let cY = addressFromPublicKey(fromBase58String(cX)) | |
494 | + | if ((cY == cY)) | |
495 | + | then [StringEntry(N(), cX)] | |
497 | 496 | else throw("Strict value is not equal to itself.") | |
498 | 497 | } | |
499 | 498 | else throw("Strict value is not equal to itself.") | |
501 | 500 | ||
502 | 501 | ||
503 | 502 | ||
504 | - | @Callable( | |
505 | - | func constructorV3 ( | |
506 | - | let | |
507 | - | if (( | |
503 | + | @Callable(by) | |
504 | + | func constructorV3 (bJ,bK,bL,bM) = { | |
505 | + | let cW = bz(by) | |
506 | + | if ((cW == cW)) | |
508 | 507 | then { | |
509 | - | let | |
510 | - | [StringEntry(K(), | |
508 | + | let bo = split(aT(K()), l) | |
509 | + | [StringEntry(K(), bB(bo[1], bo[2], bo[3], bo[4], bo[5], bo[6], bo[7], bJ, bK, bL, bM))] | |
511 | 510 | } | |
512 | 511 | else throw("Strict value is not equal to itself.") | |
513 | 512 | } | |
514 | 513 | ||
515 | 514 | ||
516 | 515 | ||
517 | - | @Callable( | |
518 | - | func constructorV4 ( | |
519 | - | let | |
520 | - | if (( | |
521 | - | then [StringEntry(O(), | |
516 | + | @Callable(by) | |
517 | + | func constructorV4 (cZ,da) = { | |
518 | + | let cW = bz(by) | |
519 | + | if ((cW == cW)) | |
520 | + | then [StringEntry(O(), cZ), StringEntry(P(), makeString(da, l))] | |
522 | 521 | else throw("Strict value is not equal to itself.") | |
523 | 522 | } | |
524 | 523 | ||
525 | 524 | ||
526 | 525 | ||
527 | - | @Callable( | |
528 | - | func constructorV5 ( | |
529 | - | let | |
530 | - | if (( | |
531 | - | then [StringEntry(T(), | |
526 | + | @Callable(by) | |
527 | + | func constructorV5 (db) = { | |
528 | + | let cW = bz(by) | |
529 | + | if ((cW == cW)) | |
530 | + | then [StringEntry(T(), db)] | |
532 | 531 | else throw("Strict value is not equal to itself.") | |
533 | 532 | } | |
534 | 533 | ||
535 | 534 | ||
536 | 535 | ||
537 | - | @Callable( | |
538 | - | func constructorV6 ( | |
539 | - | let | |
536 | + | @Callable(by) | |
537 | + | func constructorV6 (dc,dd) = { | |
538 | + | let de = [bz(by), if ((addressFromString(dc) != unit)) | |
540 | 539 | then true | |
541 | 540 | else "invalid voting emission contract address"] | |
542 | - | if (( | |
543 | - | then [StringEntry(U(), | |
541 | + | if ((de == de)) | |
542 | + | then [StringEntry(U(), dc), StringEntry(V(), makeString(dd, l))] | |
544 | 543 | else throw("Strict value is not equal to itself.") | |
545 | 544 | } | |
546 | 545 | ||
547 | 546 | ||
548 | 547 | ||
549 | - | @Callable(bx) | |
550 | - | func setManager (de) = { | |
551 | - | let cV = by(bx) | |
552 | - | if ((cV == cV)) | |
553 | - | then { | |
554 | - | let df = fromBase58String(de) | |
555 | - | if ((df == df)) | |
556 | - | then [StringEntry(R(), de)] | |
557 | - | else throw("Strict value is not equal to itself.") | |
558 | - | } | |
548 | + | @Callable(by) | |
549 | + | func setAdmins (df) = { | |
550 | + | let cW = bz(by) | |
551 | + | if ((cW == cW)) | |
552 | + | then [StringEntry(S(), makeString(df, l))] | |
559 | 553 | else throw("Strict value is not equal to itself.") | |
560 | 554 | } | |
561 | 555 | ||
562 | 556 | ||
563 | 557 | ||
564 | - | @Callable(bx) | |
565 | - | func confirmManager () = { | |
566 | - | let dg = bt() | |
567 | - | let dh = if (isDefined(dg)) | |
568 | - | then true | |
569 | - | else throw("No pending manager") | |
570 | - | if ((dh == dh)) | |
571 | - | then { | |
572 | - | let di = if ((bx.callerPublicKey == value(dg))) | |
573 | - | then true | |
574 | - | else throw("You are not pending manager") | |
575 | - | if ((di == di)) | |
576 | - | then [StringEntry(Q(), toBase58String(value(dg))), DeleteEntry(R())] | |
577 | - | else throw("Strict value is not equal to itself.") | |
578 | - | } | |
579 | - | else throw("Strict value is not equal to itself.") | |
580 | - | } | |
581 | - | ||
582 | - | ||
583 | - | ||
584 | - | @Callable(bx) | |
585 | - | func setAdmins (dj) = { | |
586 | - | let cV = by(bx) | |
587 | - | if ((cV == cV)) | |
588 | - | then [StringEntry(S(), makeString(dj, l))] | |
589 | - | else throw("Strict value is not equal to itself.") | |
590 | - | } | |
591 | - | ||
592 | - | ||
593 | - | ||
594 | - | @Callable(bx) | |
595 | - | func activateNewPool (aa,bQ,bR,dk,dl,dm,bX,dn) = { | |
596 | - | let cV = ck(bx) | |
597 | - | if ((cV == cV)) | |
558 | + | @Callable(by) | |
559 | + | func activateNewPool (aa,bR,bS,dg,dh,di,bY,dj) = { | |
560 | + | let cW = cl(by) | |
561 | + | if ((cW == cW)) | |
598 | 562 | then if (isDefined(getString(au(aa)))) | |
599 | 563 | then throw((("Pool address " + aa) + " already registered.")) | |
600 | 564 | else { | |
601 | - | let | |
602 | - | let | |
603 | - | let | |
565 | + | let dk = ce(bR, 1) | |
566 | + | let dl = dk._1 | |
567 | + | let dm = ce(bS, if (dk._3) | |
604 | 568 | then 2 | |
605 | 569 | else 1) | |
606 | - | let | |
607 | - | let | |
608 | - | let | |
609 | - | let | |
610 | - | if ( | |
611 | - | then throw((((("Pool " + | |
570 | + | let dn = dm._1 | |
571 | + | let do = valueOrErrorMessage(scriptHash(addressFromStringValue(aa)), ("No script has been found on pool account " + aa)) | |
572 | + | let dp = getBinaryValue(M()) | |
573 | + | let dq = cr(bR, bS) | |
574 | + | if (dq) | |
575 | + | then throw((((("Pool " + bR) + "/") + bS) + " has already been activated.")) | |
612 | 576 | else { | |
613 | - | let dv = value(getString(this, ah(toString(dp), toString(dr)))) | |
614 | - | let dw = if ((bQ == "WAVES")) | |
615 | - | then k | |
616 | - | else pow(10, 0, value(assetInfo(fromBase58String(bQ))).decimals, 0, 0, DOWN) | |
617 | - | let dx = if ((bR == "WAVES")) | |
577 | + | let dr = value(getString(this, ah(toString(dl), toString(dn)))) | |
578 | + | let ds = if ((bR == "WAVES")) | |
618 | 579 | then k | |
619 | 580 | else pow(10, 0, value(assetInfo(fromBase58String(bR))).decimals, 0, 0, DOWN) | |
620 | - | let dy = Issue(dk, dl, 1, 8, true) | |
621 | - | let bP = calculateAssetId(dy) | |
622 | - | let dz = toBase58String(bP) | |
623 | - | let dA = invoke(addressFromStringValue(aa), "activate", [bQ, bR], nil) | |
624 | - | if ((dA == dA)) | |
625 | - | then if ((dA != "success")) | |
581 | + | let dt = if ((bS == "WAVES")) | |
582 | + | then k | |
583 | + | else pow(10, 0, value(assetInfo(fromBase58String(bS))).decimals, 0, 0, DOWN) | |
584 | + | let du = Issue(dg, dh, 1, 8, true) | |
585 | + | let bQ = calculateAssetId(du) | |
586 | + | let dv = toBase58String(bQ) | |
587 | + | let dw = invoke(addressFromStringValue(aa), "activate", [bR, bS], nil) | |
588 | + | if ((dw == dw)) | |
589 | + | then if ((dw != "success")) | |
626 | 590 | then throw("Pool initialisation error happened.") | |
627 | 591 | else { | |
628 | - | let | |
629 | - | let | |
630 | - | if (( | |
592 | + | let db = addressFromStringValue(aT(T())) | |
593 | + | let dx = invoke(db, "createOrUpdate", [dv, dg, false], nil) | |
594 | + | if ((dx == dx)) | |
631 | 595 | then { | |
632 | - | let | |
633 | - | if (( | |
596 | + | let dy = invoke(db, "addLabel", [dv, h], nil) | |
597 | + | if ((dy == dy)) | |
634 | 598 | then { | |
635 | - | let | |
636 | - | if (( | |
599 | + | let dz = invoke(db, "setLogo", [dv, dj], nil) | |
600 | + | if ((dz == dz)) | |
637 | 601 | then { | |
638 | - | let | |
639 | - | if (( | |
602 | + | let dA = invoke(db, "addAssetsLink", [bR, bS, dv], nil) | |
603 | + | if ((dA == dA)) | |
640 | 604 | then { | |
641 | - | let | |
642 | - | if (( | |
643 | - | then $Tuple2((( | |
605 | + | let dB = invoke(db, "increaseAssetPoolsNumber", [bR], nil) | |
606 | + | if ((dB == dB)) | |
607 | + | then $Tuple2(((dk._2 ++ dm._2) ++ [du, Burn(bQ, 1), StringEntry(ah(toString(dl), toString(dn)), bO(aa, toString(n), dv, bR, bS, ds, dt, dl, dn, k, bY)), StringEntry(ao(dv), bZ(dl, dn)), StringEntry(aq(toString(dl), toString(dn)), ("%s__" + dv)), StringEntry(au(aa), bZ(dl, dn)), StringEntry(aw(dl, dn), aa), StringEntry(ay(dv), aa), StringEntry(ax(aa), dv), IntegerEntry(Z(aa), di), IntegerEntry(at(aa), i)]), dv) | |
644 | 608 | else throw("Strict value is not equal to itself.") | |
645 | 609 | } | |
646 | 610 | else throw("Strict value is not equal to itself.") | |
659 | 623 | ||
660 | 624 | ||
661 | 625 | ||
662 | - | @Callable( | |
663 | - | func managePool (aa, | |
664 | - | let | |
665 | - | if (( | |
626 | + | @Callable(by) | |
627 | + | func managePool (aa,dC) = { | |
628 | + | let cW = bz(by) | |
629 | + | if ((cW == cW)) | |
666 | 630 | then { | |
667 | - | let | |
668 | - | let | |
669 | - | let | |
670 | - | let | |
671 | - | let | |
672 | - | let | |
673 | - | let | |
674 | - | let | |
675 | - | let | |
676 | - | let | |
677 | - | let | |
678 | - | [StringEntry(ah(toString( | |
631 | + | let dD = cc(aa) | |
632 | + | let bP = dD[v] | |
633 | + | let dv = dD[w] | |
634 | + | let bR = dD[x] | |
635 | + | let bS = dD[y] | |
636 | + | let ds = parseIntValue(dD[z]) | |
637 | + | let dt = parseIntValue(dD[A]) | |
638 | + | let dl = parseIntValue(dD[B]) | |
639 | + | let dn = parseIntValue(dD[C]) | |
640 | + | let dE = parseIntValue(dD[D]) | |
641 | + | let bY = dD[E] | |
642 | + | [StringEntry(ah(toString(dl), toString(dn)), bO(aa, toString(dC), dv, bR, bS, ds, dt, dl, dn, dE, bY))] | |
679 | 643 | } | |
680 | 644 | else throw("Strict value is not equal to itself.") | |
681 | 645 | } | |
682 | 646 | ||
683 | 647 | ||
684 | 648 | ||
685 | - | @Callable( | |
686 | - | func emit ( | |
687 | - | let | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | let | |
692 | - | let | |
693 | - | if ((0 >= | |
649 | + | @Callable(by) | |
650 | + | func emit (dF) = { | |
651 | + | let dG = by.caller | |
652 | + | let dH = by.originCaller | |
653 | + | let dI = valueOrErrorMessage(getString(ax(toString(dG))), "Invalid LP address called me.") | |
654 | + | let dJ = fromBase58String(dI) | |
655 | + | let da = split(valueOrElse(getString(P()), m), l) | |
656 | + | let cZ = addressFromStringValue(valueOrErrorMessage(getString(O()), "Legacy factory contract does not exists.")) | |
657 | + | if ((0 >= dF)) | |
694 | 658 | then nil | |
695 | - | else if (containsElement( | |
696 | - | then $Tuple2(nil, | |
697 | - | else $Tuple2([Reissue( | |
659 | + | else if (containsElement(da, toString(dG))) | |
660 | + | then $Tuple2(nil, cZ) | |
661 | + | else $Tuple2([Reissue(dJ, dF, true), ScriptTransfer(by.caller, dF, dJ)], "success") | |
698 | 662 | } | |
699 | 663 | ||
700 | 664 | ||
701 | 665 | ||
702 | - | @Callable( | |
703 | - | func burn ( | |
704 | - | let | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | let | |
710 | - | if (( | |
666 | + | @Callable(by) | |
667 | + | func burn (dK) = { | |
668 | + | let dG = by.caller | |
669 | + | let dH = by.originCaller | |
670 | + | let dL = value(by.payments[0]) | |
671 | + | let dM = value(dL.amount) | |
672 | + | let dN = toBase58String(value(dL.assetId)) | |
673 | + | let dO = valueOrErrorMessage(getString(ax(toString(dG))), "Invalid LP address called me.") | |
674 | + | if ((dN != dO)) | |
711 | 675 | then throw("Invalid asset passed.") | |
712 | - | else if (( | |
676 | + | else if ((dK != dM)) | |
713 | 677 | then throw("Invalid amount passed.") | |
714 | 678 | else { | |
715 | - | let | |
716 | - | $Tuple2([Burn( | |
679 | + | let dJ = fromBase58String(dO) | |
680 | + | $Tuple2([Burn(dJ, dK)], "success") | |
717 | 681 | } | |
718 | 682 | } | |
719 | 683 | ||
720 | 684 | ||
721 | 685 | ||
722 | - | @Callable( | |
723 | - | func modifyWeight ( | |
724 | - | let | |
686 | + | @Callable(by) | |
687 | + | func modifyWeight (bQ,dP) = { | |
688 | + | let cW = if ((toBase58String(by.caller.bytes) == valueOrElse(getString(this, U()), ""))) | |
725 | 689 | then true | |
726 | - | else by | |
727 | - | if (( | |
690 | + | else bz(by) | |
691 | + | if ((cW == cW)) | |
728 | 692 | then { | |
729 | - | let av = aT(ay( | |
730 | - | let | |
731 | - | let | |
732 | - | let | |
733 | - | let | |
734 | - | let | |
735 | - | let | |
736 | - | let | |
737 | - | let | |
738 | - | if (( | |
693 | + | let av = aT(ay(bQ)) | |
694 | + | let dQ = Z(av) | |
695 | + | let dR = Z(g) | |
696 | + | let dS = valueOrElse(getInteger(dR), 0) | |
697 | + | let di = valueOrElse(getInteger(dQ), 0) | |
698 | + | let dT = dP | |
699 | + | let bo = split(aT(K()), l) | |
700 | + | let cS = bq(bo) | |
701 | + | let dU = invoke(cS, "onModifyWeight", [bQ, av], nil) | |
702 | + | if ((dU == dU)) | |
739 | 703 | then { | |
740 | - | let | |
704 | + | let dV = if ((dS == 0)) | |
741 | 705 | then nil | |
742 | - | else [IntegerEntry( | |
743 | - | let | |
744 | - | let | |
745 | - | let | |
706 | + | else [IntegerEntry(dR, 0)] | |
707 | + | let dW = ab(av, 0) | |
708 | + | let dX = getInteger(dW) | |
709 | + | let dY = if ((dX == unit)) | |
746 | 710 | then nil | |
747 | - | else [DeleteEntry( | |
748 | - | (([IntegerEntry( | |
711 | + | else [DeleteEntry(dW)] | |
712 | + | (([IntegerEntry(dQ, dT)] ++ dV) ++ dY) | |
749 | 713 | } | |
750 | 714 | else throw("Strict value is not equal to itself.") | |
751 | 715 | } | |
754 | 718 | ||
755 | 719 | ||
756 | 720 | ||
757 | - | @Callable( | |
758 | - | func modifyWeights ( | |
759 | - | let | |
760 | - | if (( | |
721 | + | @Callable(by) | |
722 | + | func modifyWeights (dZ,ea,eb,ec) = { | |
723 | + | let cW = bz(by) | |
724 | + | if ((cW == cW)) | |
761 | 725 | then { | |
762 | - | let | |
763 | - | let | |
764 | - | let | |
765 | - | let | |
766 | - | let | |
767 | - | let | |
768 | - | let | |
769 | - | let | |
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | let | |
774 | - | let | |
775 | - | let | |
776 | - | if ((0 >= | |
777 | - | then throw(("invalid btcWeightNew: " + toString( | |
778 | - | else if ((0 >= | |
779 | - | then throw(("invalid ethWeightNew: " + toString( | |
726 | + | let ed = ((5 * f) / 100) | |
727 | + | let ee = ((5 * f) / 100) | |
728 | + | let ef = ((5 * f) / 100) | |
729 | + | let bo = split(aT(K()), l) | |
730 | + | let eg = bq(bo) | |
731 | + | let eh = br(bo) | |
732 | + | let ei = Z(dZ) | |
733 | + | let ej = Z(ea) | |
734 | + | let ek = Z(eb) | |
735 | + | let el = Z(ec) | |
736 | + | let em = aW(ei) | |
737 | + | let en = aW(ej) | |
738 | + | let eo = (em - ef) | |
739 | + | let ep = (en - ef) | |
740 | + | if ((0 >= eo)) | |
741 | + | then throw(("invalid btcWeightNew: " + toString(eo))) | |
742 | + | else if ((0 >= ep)) | |
743 | + | then throw(("invalid ethWeightNew: " + toString(ep))) | |
780 | 744 | else { | |
781 | - | let | |
782 | - | let | |
783 | - | let | |
784 | - | let | |
785 | - | let | |
786 | - | if (( | |
745 | + | let eq = aT(ax(dZ)) | |
746 | + | let er = aT(ax(ea)) | |
747 | + | let es = aT(ax(eb)) | |
748 | + | let et = aT(ax(ec)) | |
749 | + | let eu = invoke(eg, "onModifyWeight", [eq, dZ], nil) | |
750 | + | if ((eu == eu)) | |
787 | 751 | then { | |
788 | - | let | |
789 | - | if (( | |
752 | + | let ev = invoke(eg, "onModifyWeight", [er, ea], nil) | |
753 | + | if ((ev == ev)) | |
790 | 754 | then { | |
791 | - | let | |
792 | - | if (( | |
755 | + | let ew = invoke(eg, "onModifyWeight", [es, eb], nil) | |
756 | + | if ((ew == ew)) | |
793 | 757 | then { | |
794 | - | let | |
795 | - | if (( | |
796 | - | then [IntegerEntry( | |
758 | + | let ex = invoke(eg, "onModifyWeight", [et, ec], nil) | |
759 | + | if ((ex == ex)) | |
760 | + | then [IntegerEntry(ei, eo), IntegerEntry(ej, ep), IntegerEntry(ek, ed), IntegerEntry(el, ee), IntegerEntry(ab(dZ, 0), em), IntegerEntry(ab(ea, 0), en), IntegerEntry(ab(eb, 0), ed), IntegerEntry(ab(ec, 0), ee)] | |
797 | 761 | else throw("Strict value is not equal to itself.") | |
798 | 762 | } | |
799 | 763 | else throw("Strict value is not equal to itself.") | |
808 | 772 | ||
809 | 773 | ||
810 | 774 | ||
811 | - | @Callable( | |
775 | + | @Callable(by) | |
812 | 776 | func checkWxEmissionPoolLabel (aA,aB) = { | |
813 | - | let | |
814 | - | let | |
815 | - | if ($isInstanceOf( | |
777 | + | let ey = { | |
778 | + | let ba = getBoolean(az(aA, aB)) | |
779 | + | if ($isInstanceOf(ba, "Boolean")) | |
816 | 780 | then { | |
817 | - | let | |
818 | - | | |
781 | + | let cE = ba | |
782 | + | cE | |
819 | 783 | } | |
820 | 784 | else false | |
821 | 785 | } | |
822 | - | $Tuple2(nil, | |
786 | + | $Tuple2(nil, ey) | |
823 | 787 | } | |
824 | 788 | ||
825 | 789 | ||
826 | 790 | ||
827 | - | @Callable( | |
791 | + | @Callable(by) | |
828 | 792 | func setWxEmissionPoolLabel (aA,aB) = { | |
829 | - | let | |
830 | - | if (( | |
793 | + | let cW = cl(by) | |
794 | + | if ((cW == cW)) | |
831 | 795 | then $Tuple2([BooleanEntry(az(aA, aB), true)], unit) | |
832 | 796 | else throw("Strict value is not equal to itself.") | |
833 | 797 | } | |
834 | 798 | ||
835 | 799 | ||
836 | 800 | ||
837 | - | @Callable( | |
801 | + | @Callable(by) | |
838 | 802 | func deleteWxEmissionPoolLabel (aA,aB) = { | |
839 | - | let | |
803 | + | let cW = if ((by.caller == this)) | |
840 | 804 | then true | |
841 | - | else | |
842 | - | if (( | |
805 | + | else cl(by) | |
806 | + | if ((cW == cW)) | |
843 | 807 | then $Tuple2([DeleteEntry(az(aA, aB))], unit) | |
844 | 808 | else throw("Strict value is not equal to itself.") | |
845 | 809 | } | |
846 | 810 | ||
847 | 811 | ||
848 | 812 | ||
849 | - | @Callable( | |
813 | + | @Callable(by) | |
850 | 814 | func onVerificationLoss (aO) = { | |
851 | - | let | |
815 | + | let cW = if ((toBase58String(by.caller.bytes) == valueOrElse(getString(this, T()), ""))) | |
852 | 816 | then true | |
853 | - | else by | |
854 | - | if (( | |
817 | + | else bz(by) | |
818 | + | if ((cW == cW)) | |
855 | 819 | then { | |
856 | - | let | |
857 | - | let | |
820 | + | let dd = bs() | |
821 | + | let ez = if ((size(dd) > 0)) | |
858 | 822 | then true | |
859 | 823 | else throw("invalid price assets") | |
860 | - | if (( | |
824 | + | if ((ez == ez)) | |
861 | 825 | then { | |
862 | - | func | |
863 | - | let | |
864 | - | if (( | |
826 | + | func eA (eB,eC) = { | |
827 | + | let cy = invoke(this, "deleteWxEmissionPoolLabel", [aO, eC], nil) | |
828 | + | if ((cy == cy)) | |
865 | 829 | then unit | |
866 | 830 | else throw("Strict value is not equal to itself.") | |
867 | 831 | } | |
868 | 832 | ||
869 | - | let | |
870 | - | let | |
871 | - | let | |
872 | - | let | |
873 | - | func | |
874 | - | then | |
875 | - | else | |
833 | + | let eD = { | |
834 | + | let eE = dd | |
835 | + | let eF = size(eE) | |
836 | + | let eG = unit | |
837 | + | func eH (eI,eJ) = if ((eJ >= eF)) | |
838 | + | then eI | |
839 | + | else eA(eI, eE[eJ]) | |
876 | 840 | ||
877 | - | func | |
878 | - | then | |
879 | - | else throw("List size exceeds | |
841 | + | func eK (eI,eJ) = if ((eJ >= eF)) | |
842 | + | then eI | |
843 | + | else throw("List size exceeds 11") | |
880 | 844 | ||
881 | - | | |
845 | + | eK(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
882 | 846 | } | |
883 | - | if (( | |
847 | + | if ((eD == eD)) | |
884 | 848 | then $Tuple2(nil, unit) | |
885 | 849 | else throw("Strict value is not equal to itself.") | |
886 | 850 | } | |
891 | 855 | ||
892 | 856 | ||
893 | 857 | ||
894 | - | @Callable( | |
858 | + | @Callable(by) | |
895 | 859 | func isPoolOneTokenOperationsDisabledREADONLY (aa) = { | |
896 | - | let | |
897 | - | let al = $Tuple2(parseIntValue( | |
898 | - | let | |
899 | - | let | |
900 | - | $Tuple2(nil, if ( | |
860 | + | let dD = cc(aa) | |
861 | + | let al = $Tuple2(parseIntValue(dD[B]), parseIntValue(dD[C])) | |
862 | + | let eL = valueOrElse(getBoolean(ak(al)), false) | |
863 | + | let eM = valueOrElse(getBoolean(an()), false) | |
864 | + | $Tuple2(nil, if (eM) | |
901 | 865 | then true | |
902 | - | else | |
866 | + | else eL) | |
903 | 867 | } | |
904 | 868 | ||
905 | 869 | ||
906 | 870 | ||
907 | - | @Callable( | |
871 | + | @Callable(by) | |
908 | 872 | func getInFeeREADONLY (aa) = { | |
909 | - | let | |
910 | - | $Tuple2(nil, | |
873 | + | let eN = co(aC(aa), aD(), 0) | |
874 | + | $Tuple2(nil, eN) | |
911 | 875 | } | |
912 | 876 | ||
913 | 877 | ||
914 | 878 | ||
915 | - | @Callable( | |
879 | + | @Callable(by) | |
916 | 880 | func getOutFeeREADONLY (aa) = { | |
917 | - | let | |
918 | - | $Tuple2(nil, | |
881 | + | let eN = co(aE(aa), aF(), fraction(10, b, 10000)) | |
882 | + | $Tuple2(nil, eN) | |
919 | 883 | } | |
920 | 884 | ||
921 | 885 | ||
922 | 886 | ||
923 | - | @Callable( | |
924 | - | func poolInfoREADONLY ( | |
925 | - | let | |
926 | - | let | |
927 | - | let | |
928 | - | let | |
929 | - | let | |
930 | - | then isDefined( | |
887 | + | @Callable(by) | |
888 | + | func poolInfoREADONLY (eO,eP) = { | |
889 | + | let eQ = getInteger(this, af(eO)) | |
890 | + | let eR = getInteger(this, af(eP)) | |
891 | + | let eS = getString(this, aw(value(eQ), value(eR))) | |
892 | + | let eT = getString(this, ax(value(eS))) | |
893 | + | let dq = if (if (isDefined(eQ)) | |
894 | + | then isDefined(eR) | |
931 | 895 | else false) | |
932 | - | then isDefined( | |
896 | + | then isDefined(eS) | |
933 | 897 | else false | |
934 | - | let | |
935 | - | then $Tuple2(addressFromStringValue(value( | |
898 | + | let eU = if (dq) | |
899 | + | then $Tuple2(addressFromStringValue(value(eS)), aX(value(eT))) | |
936 | 900 | else unit | |
901 | + | $Tuple2(nil, eU) | |
902 | + | } | |
903 | + | ||
904 | + | ||
905 | + | ||
906 | + | @Callable(by) | |
907 | + | func getPoolStatusREADONLY (aa) = { | |
908 | + | let cd = split(aT(au(aa)), l) | |
909 | + | let ai = cd[1] | |
910 | + | let aj = cd[2] | |
911 | + | let cu = split(aT(ah(ai, aj)), l) | |
912 | + | $Tuple2(nil, parseIntValue(cu[v])) | |
913 | + | } | |
914 | + | ||
915 | + | ||
916 | + | ||
917 | + | @Callable(by) | |
918 | + | func getPoolConfigREADONLY (aa) = { | |
919 | + | let cd = split(aT(au(aa)), l) | |
920 | + | let ai = cd[1] | |
921 | + | let aj = cd[2] | |
922 | + | let cu = split(aT(ah(ai, aj)), l) | |
923 | + | $Tuple2(nil, cu) | |
924 | + | } | |
925 | + | ||
926 | + | ||
927 | + | ||
928 | + | @Callable(by) | |
929 | + | func getPoolConfigByLpAssetIdREADONLY (dv) = { | |
930 | + | let cd = split(aT(ao(dv)), l) | |
931 | + | let ai = cd[1] | |
932 | + | let aj = cd[2] | |
933 | + | let cu = split(aT(ah(ai, aj)), l) | |
934 | + | $Tuple2(nil, cu) | |
935 | + | } | |
936 | + | ||
937 | + | ||
938 | + | ||
939 | + | @Callable(by) | |
940 | + | func poolExistsREADONLY (aA,aB) = $Tuple2(nil, cr(aA, aB)) | |
941 | + | ||
942 | + | ||
943 | + | ||
944 | + | @Callable(by) | |
945 | + | func skipOrderValidationREADONLY (aa) = $Tuple2(nil, valueOrElse(getBoolean(aG(aa)), false)) | |
946 | + | ||
947 | + | ||
948 | + | ||
949 | + | @Callable(by) | |
950 | + | func getChangeAmpConfigREADONLY (aa) = { | |
951 | + | let eV = getIntegerValue(aH(aa)) | |
952 | + | let eW = getIntegerValue(aI(aa)) | |
953 | + | let eX = getIntegerValue(aJ(aa)) | |
954 | + | $Tuple2(nil, [eV, eW, eX]) | |
955 | + | } | |
956 | + | ||
957 | + | ||
958 | + | ||
959 | + | @Callable(by) | |
960 | + | func getPoolWeightREADONLY (bQ) = { | |
961 | + | let aa = aT(ay(bQ)) | |
962 | + | let eY = valueOrElse(getInteger(Z(aa)), 0) | |
937 | 963 | $Tuple2(nil, eY) | |
938 | 964 | } | |
939 | 965 | ||
940 | 966 | ||
941 | - | ||
942 | - | @Callable(bx) | |
943 | - | func getPoolStatusREADONLY (aa) = { | |
944 | - | let cc = split(aT(au(aa)), l) | |
945 | - | let ai = cc[1] | |
946 | - | let aj = cc[2] | |
947 | - | let ct = split(aT(ah(ai, aj)), l) | |
948 | - | $Tuple2(nil, parseIntValue(ct[v])) | |
949 | - | } | |
950 | - | ||
951 | - | ||
952 | - | ||
953 | - | @Callable(bx) | |
954 | - | func getPoolConfigREADONLY (aa) = { | |
955 | - | let cc = split(aT(au(aa)), l) | |
956 | - | let ai = cc[1] | |
957 | - | let aj = cc[2] | |
958 | - | let ct = split(aT(ah(ai, aj)), l) | |
959 | - | $Tuple2(nil, ct) | |
960 | - | } | |
961 | - | ||
962 | - | ||
963 | - | ||
964 | - | @Callable(bx) | |
965 | - | func getPoolConfigByLpAssetIdREADONLY (dz) = { | |
966 | - | let cc = split(aT(ao(dz)), l) | |
967 | - | let ai = cc[1] | |
968 | - | let aj = cc[2] | |
969 | - | let ct = split(aT(ah(ai, aj)), l) | |
970 | - | $Tuple2(nil, ct) | |
971 | - | } | |
972 | - | ||
973 | - | ||
974 | - | ||
975 | - | @Callable(bx) | |
976 | - | func poolExistsREADONLY (aA,aB) = $Tuple2(nil, cq(aA, aB)) | |
977 | - | ||
978 | - | ||
979 | - | ||
980 | - | @Callable(bx) | |
981 | - | func skipOrderValidationREADONLY (aa) = $Tuple2(nil, valueOrElse(getBoolean(aG(aa)), false)) | |
982 | - | ||
983 | - | ||
984 | - | ||
985 | - | @Callable(bx) | |
986 | - | func getChangeAmpConfigREADONLY (aa) = { | |
987 | - | let eZ = getIntegerValue(aH(aa)) | |
988 | - | let fa = getIntegerValue(aI(aa)) | |
989 | - | let fb = getIntegerValue(aJ(aa)) | |
990 | - | $Tuple2(nil, [eZ, fa, fb]) | |
991 | - | } | |
992 | - | ||
993 | - | ||
994 | - | ||
995 | - | @Callable(bx) | |
996 | - | func getPoolWeightREADONLY (bP) = { | |
997 | - | let aa = aT(ay(bP)) | |
998 | - | let fc = valueOrElse(getInteger(Z(aa)), 0) | |
999 | - | $Tuple2(nil, fc) | |
1000 | - | } | |
1001 | - | ||
1002 | - | ||
1003 | - | @Verifier(fd) | |
1004 | - | func fe () = { | |
1005 | - | let ff = { | |
1006 | - | let bq = bs() | |
1007 | - | if ($isInstanceOf(bq, "ByteVector")) | |
967 | + | @Verifier(eZ) | |
968 | + | func fa () = { | |
969 | + | let fb = { | |
970 | + | let ba = bt() | |
971 | + | if ($isInstanceOf(ba, "ByteVector")) | |
1008 | 972 | then { | |
1009 | - | let | |
1010 | - | | |
973 | + | let bA = ba | |
974 | + | bA | |
1011 | 975 | } | |
1012 | - | else if ($isInstanceOf( | |
1013 | - | then | |
976 | + | else if ($isInstanceOf(ba, "Unit")) | |
977 | + | then eZ.senderPublicKey | |
1014 | 978 | else throw("Match error") | |
1015 | 979 | } | |
1016 | - | sigVerify( | |
980 | + | sigVerify(eZ.bodyBytes, eZ.proofs[0], fb) | |
1017 | 981 | } | |
1018 | 982 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 8 | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 1000000000000 | |
9 | 9 | ||
10 | 10 | let d = 18 | |
11 | 11 | ||
12 | 12 | let e = toBigInt(1000000000000000000) | |
13 | 13 | ||
14 | 14 | let f = b | |
15 | 15 | ||
16 | 16 | let g = "GWXvirtualPOOL" | |
17 | 17 | ||
18 | 18 | let h = "POOLS_LP" | |
19 | 19 | ||
20 | 20 | let i = 2000000 | |
21 | 21 | ||
22 | 22 | let j = "WAVES" | |
23 | 23 | ||
24 | 24 | let k = ((100 * 1000) * 1000) | |
25 | 25 | ||
26 | 26 | let l = "__" | |
27 | 27 | ||
28 | 28 | let m = "" | |
29 | 29 | ||
30 | 30 | let n = 1 | |
31 | 31 | ||
32 | 32 | let o = 2 | |
33 | 33 | ||
34 | 34 | let p = 3 | |
35 | 35 | ||
36 | 36 | let q = 4 | |
37 | 37 | ||
38 | 38 | let r = 1 | |
39 | 39 | ||
40 | 40 | let s = 2 | |
41 | 41 | ||
42 | 42 | let t = 3 | |
43 | 43 | ||
44 | 44 | let u = 1 | |
45 | 45 | ||
46 | 46 | let v = 2 | |
47 | 47 | ||
48 | 48 | let w = 3 | |
49 | 49 | ||
50 | 50 | let x = 4 | |
51 | 51 | ||
52 | 52 | let y = 5 | |
53 | 53 | ||
54 | 54 | let z = 6 | |
55 | 55 | ||
56 | 56 | let A = 7 | |
57 | 57 | ||
58 | 58 | let B = 8 | |
59 | 59 | ||
60 | 60 | let C = 9 | |
61 | 61 | ||
62 | 62 | let D = 10 | |
63 | 63 | ||
64 | 64 | let E = 11 | |
65 | 65 | ||
66 | 66 | let F = "WX_EMISSION" | |
67 | 67 | ||
68 | 68 | let G = [F] | |
69 | 69 | ||
70 | 70 | func H () = "%s__allowedLpScriptHash" | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | func I () = "%s__allowedLpStableScriptHash" | |
74 | 74 | ||
75 | 75 | ||
76 | 76 | func J () = "%s__swapContract" | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | func K () = "%s__factoryConfig" | |
80 | 80 | ||
81 | 81 | ||
82 | 82 | func L () = "%s__lpTokensList" | |
83 | 83 | ||
84 | 84 | ||
85 | 85 | func M () = "%s%s__pool__scriptHash" | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | func N () = "%s%s__matcher__publicKey" | |
89 | 89 | ||
90 | 90 | ||
91 | 91 | func O () = "%s__legacyFactoryContract" | |
92 | 92 | ||
93 | 93 | ||
94 | 94 | func P () = "%s__legacyPools" | |
95 | 95 | ||
96 | 96 | ||
97 | 97 | func Q () = "%s__managerPublicKey" | |
98 | 98 | ||
99 | 99 | ||
100 | - | func R () = "%s__ | |
100 | + | func R () = "%s__managerVaultAddress" | |
101 | 101 | ||
102 | 102 | ||
103 | 103 | func S () = "%s__adminPubKeys" | |
104 | 104 | ||
105 | 105 | ||
106 | 106 | func T () = "%s__assetsStoreContract" | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | func U () = "%s__votingEmissionContract" | |
110 | 110 | ||
111 | 111 | ||
112 | 112 | func V () = makeString(["%s", "priceAssets"], l) | |
113 | 113 | ||
114 | 114 | ||
115 | 115 | func W () = "%s__priceDecimals" | |
116 | 116 | ||
117 | 117 | ||
118 | 118 | func X () = "%s__shutdown" | |
119 | 119 | ||
120 | 120 | ||
121 | 121 | func Y () = "%s__nextInternalAssetId" | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | func Z (aa) = ("%s%s__poolWeight__" + aa) | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | func ab (aa,ac) = ((("%s%s__poolWeight__" + aa) + "__") + toString(ac)) | |
128 | 128 | ||
129 | 129 | ||
130 | 130 | func ad (ae) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ae)) | |
131 | 131 | ||
132 | 132 | ||
133 | 133 | func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag) | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config") | |
137 | 137 | ||
138 | 138 | ||
139 | 139 | func ak (al) = { | |
140 | 140 | let am = al | |
141 | 141 | let ai = am._1 | |
142 | 142 | let aj = am._2 | |
143 | 143 | makeString(["%d%d%s", toString(ai), toString(aj), "oneTokenOperationsDisabled"], l) | |
144 | 144 | } | |
145 | 145 | ||
146 | 146 | ||
147 | 147 | func an () = makeString(["%s", "oneTokenOperationsDisabled"], l) | |
148 | 148 | ||
149 | 149 | ||
150 | 150 | func ao (ap) = (("%s%s%s__" + ap) + "__mappings__lpAsset2Pool") | |
151 | 151 | ||
152 | 152 | ||
153 | 153 | func aq (ar,as) = (((("%d%d%s%s__" + ar) + "__") + as) + "__mappings__PoolAssets2LpAsset") | |
154 | 154 | ||
155 | 155 | ||
156 | 156 | func at (aa) = ("%s%s__spread__" + aa) | |
157 | 157 | ||
158 | 158 | ||
159 | 159 | func au (av) = (("%s%s%s__" + av) + "__mappings__poolContract2PoolAssets") | |
160 | 160 | ||
161 | 161 | ||
162 | 162 | func aw (ar,as) = (((("%d%d%s%s__" + toString(ar)) + "__") + toString(as)) + "__mappings__poolAssets2PoolContract") | |
163 | 163 | ||
164 | 164 | ||
165 | 165 | func ax (av) = (("%s%s%s__" + av) + "__mappings__poolContract2LpAsset") | |
166 | 166 | ||
167 | 167 | ||
168 | 168 | func ay (ap) = (("%s%s%s__" + ap) + "__mappings__lpAsset2PoolContract") | |
169 | 169 | ||
170 | 170 | ||
171 | 171 | func az (aA,aB) = ((("%s%s%s__wxEmission__" + aA) + "__") + aB) | |
172 | 172 | ||
173 | 173 | ||
174 | 174 | func aC (aa) = ("%s%s__inFee__" + aa) | |
175 | 175 | ||
176 | 176 | ||
177 | 177 | func aD () = "%s__inFeeDefault" | |
178 | 178 | ||
179 | 179 | ||
180 | 180 | func aE (aa) = ("%s%s__outFee__" + aa) | |
181 | 181 | ||
182 | 182 | ||
183 | 183 | func aF () = "%s__outFeeDefault" | |
184 | 184 | ||
185 | 185 | ||
186 | 186 | func aG (aa) = ("%s%s__skipOrderValidation__" + aa) | |
187 | 187 | ||
188 | 188 | ||
189 | 189 | func aH (aa) = ("%s%s__changeAmpDelay__" + aa) | |
190 | 190 | ||
191 | 191 | ||
192 | 192 | func aI (aa) = ("%s%s__changeAmpDelta__" + aa) | |
193 | 193 | ||
194 | 194 | ||
195 | 195 | func aJ (aa) = ("%s%s__changeAmpTarget__" + aa) | |
196 | 196 | ||
197 | 197 | ||
198 | 198 | func aK () = "%s__sWavesProxyAddress" | |
199 | 199 | ||
200 | 200 | ||
201 | 201 | func aL () = "%s__sWavesAssetId" | |
202 | 202 | ||
203 | 203 | ||
204 | 204 | func aM () = "%s__stakingProfitAddress" | |
205 | 205 | ||
206 | 206 | ||
207 | 207 | func aN (aa,aO) = makeString(["%s%s%s", "leasedRatio", aa, aO], l) | |
208 | 208 | ||
209 | 209 | ||
210 | 210 | func aP (aO) = makeString(["%s%s", "leasedRatioDefault", aO], l) | |
211 | 211 | ||
212 | 212 | ||
213 | 213 | func aQ (aa,aO) = makeString(["%s%s%s", "leasedRatioTolerance", aa, aO], l) | |
214 | 214 | ||
215 | 215 | ||
216 | 216 | func aR (aa,aO) = makeString(["%s%s%s", "minBalance", aa, aO], l) | |
217 | 217 | ||
218 | 218 | ||
219 | 219 | func aS (aO) = makeString(["%s%s", "minBalanceDefault", aO], l) | |
220 | 220 | ||
221 | 221 | ||
222 | 222 | func aT (aU) = valueOrErrorMessage(getString(this, aU), ("No data for this.key=" + aU)) | |
223 | 223 | ||
224 | 224 | ||
225 | 225 | func aV (aU) = valueOrErrorMessage(getBoolean(this, aU), ("No data for this.key=" + aU)) | |
226 | 226 | ||
227 | 227 | ||
228 | 228 | func aW (aU) = valueOrErrorMessage(getInteger(this, aU), ("No data for this.key=" + aU)) | |
229 | 229 | ||
230 | 230 | ||
231 | 231 | func aX (aY) = if ((aY == j)) | |
232 | 232 | then unit | |
233 | 233 | else fromBase58String(aY) | |
234 | 234 | ||
235 | 235 | ||
236 | - | let aZ = 1 | |
237 | - | ||
238 | - | let ba = 2 | |
239 | - | ||
240 | - | let bb = 3 | |
241 | - | ||
242 | - | let bc = 4 | |
243 | - | ||
244 | - | let bd = 5 | |
245 | - | ||
246 | - | let be = 6 | |
247 | - | ||
248 | - | let bf = 7 | |
249 | - | ||
250 | - | let bg = 8 | |
251 | - | ||
252 | - | let bh = 9 | |
253 | - | ||
254 | - | let bi = 10 | |
255 | - | ||
256 | - | let bj = 11 | |
257 | - | ||
258 | - | func bk (bl) = addressFromStringValue(bl[ba]) | |
236 | + | func aZ () = { | |
237 | + | let ba = getString(R()) | |
238 | + | if ($isInstanceOf(ba, "String")) | |
239 | + | then { | |
240 | + | let bb = ba | |
241 | + | addressFromStringValue(bb) | |
242 | + | } | |
243 | + | else this | |
244 | + | } | |
259 | 245 | ||
260 | 246 | ||
261 | - | func bm (bl) = addressFromStringValue(bl[bd]) | |
247 | + | let bc = 1 | |
248 | + | ||
249 | + | let bd = 2 | |
250 | + | ||
251 | + | let be = 3 | |
252 | + | ||
253 | + | let bf = 4 | |
254 | + | ||
255 | + | let bg = 5 | |
256 | + | ||
257 | + | let bh = 6 | |
258 | + | ||
259 | + | let bi = 7 | |
260 | + | ||
261 | + | let bj = 8 | |
262 | + | ||
263 | + | let bk = 9 | |
264 | + | ||
265 | + | let bl = 10 | |
266 | + | ||
267 | + | let bm = 11 | |
268 | + | ||
269 | + | func bn (bo) = addressFromStringValue(bo[bd]) | |
262 | 270 | ||
263 | 271 | ||
264 | - | func | |
272 | + | func bp (bo) = addressFromStringValue(bo[bg]) | |
265 | 273 | ||
266 | 274 | ||
267 | - | func | |
275 | + | func bq (bo) = addressFromStringValue(bo[bc]) | |
268 | 276 | ||
269 | 277 | ||
270 | - | func bp () = { | |
271 | - | let bq = getString(V()) | |
272 | - | if ($isInstanceOf(bq, "String")) | |
278 | + | func br (bo) = addressFromStringValue(bo[bl]) | |
279 | + | ||
280 | + | ||
281 | + | func bs () = { | |
282 | + | let ba = getString(V()) | |
283 | + | if ($isInstanceOf(ba, "String")) | |
273 | 284 | then { | |
274 | - | let | |
275 | - | if ((size( | |
285 | + | let bb = ba | |
286 | + | if ((size(bb) == 0)) | |
276 | 287 | then nil | |
277 | - | else split( | |
288 | + | else split(bb, l) | |
278 | 289 | } | |
279 | 290 | else nil | |
280 | 291 | } | |
281 | 292 | ||
282 | 293 | ||
283 | - | func bs () = { | |
284 | - | let bq = getString(Q()) | |
285 | - | if ($isInstanceOf(bq, "String")) | |
294 | + | func bt () = { | |
295 | + | let bu = aZ() | |
296 | + | let ba = getString(bu, Q()) | |
297 | + | if ($isInstanceOf(ba, "String")) | |
286 | 298 | then { | |
287 | - | let | |
288 | - | fromBase58String( | |
299 | + | let bb = ba | |
300 | + | fromBase58String(bb) | |
289 | 301 | } | |
290 | - | else if ($isInstanceOf( | |
302 | + | else if ($isInstanceOf(ba, "Unit")) | |
291 | 303 | then unit | |
292 | 304 | else throw("Match error") | |
293 | 305 | } | |
294 | 306 | ||
295 | 307 | ||
296 | - | func bt () = { | |
297 | - | let bq = getString(R()) | |
298 | - | if ($isInstanceOf(bq, "String")) | |
308 | + | let bv = throw("Permission denied") | |
309 | + | ||
310 | + | let bw = throw("Test error here") | |
311 | + | ||
312 | + | func bx (by) = if ((by.caller == this)) | |
313 | + | then true | |
314 | + | else bv | |
315 | + | ||
316 | + | ||
317 | + | func bz (by) = { | |
318 | + | let ba = bt() | |
319 | + | if ($isInstanceOf(ba, "ByteVector")) | |
299 | 320 | then { | |
300 | - | let br = bq | |
301 | - | fromBase58String(br) | |
321 | + | let bA = ba | |
322 | + | if ((by.callerPublicKey == bA)) | |
323 | + | then true | |
324 | + | else bv | |
302 | 325 | } | |
303 | - | else if ($isInstanceOf( | |
304 | - | then | |
326 | + | else if ($isInstanceOf(ba, "Unit")) | |
327 | + | then bx(by) | |
305 | 328 | else throw("Match error") | |
306 | 329 | } | |
307 | 330 | ||
308 | 331 | ||
309 | - | let bu = throw("Permission denied") | |
310 | - | ||
311 | - | let bv = throw("Test error here") | |
312 | - | ||
313 | - | func bw (bx) = if ((bx.caller == this)) | |
314 | - | then true | |
315 | - | else bu | |
332 | + | func bB (bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bC, bD, bE, bF, bG, bH, bI, bJ, bK, bL, bM], l) | |
316 | 333 | ||
317 | 334 | ||
318 | - | func by (bx) = { | |
319 | - | let bq = bs() | |
320 | - | if ($isInstanceOf(bq, "ByteVector")) | |
321 | - | then { | |
322 | - | let bz = bq | |
323 | - | if ((bx.callerPublicKey == bz)) | |
324 | - | then true | |
325 | - | else bu | |
326 | - | } | |
327 | - | else if ($isInstanceOf(bq, "Unit")) | |
328 | - | then bw(bx) | |
329 | - | else throw("Match error") | |
330 | - | } | |
335 | + | func bN (bC,bD,bE,bF,bG,bH,bI) = makeString(["%s%s%s%s%s%s", bC, bD, bE, bF, bG, bH, bI], l) | |
331 | 336 | ||
332 | 337 | ||
333 | - | func | |
338 | + | func bO (aa,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", aa, bP, bQ, bR, bS, toString(bT), toString(bU), toString(bV), toString(bW), toString(bX), bY], l) | |
334 | 339 | ||
335 | 340 | ||
336 | - | func | |
341 | + | func bZ (ca,cb) = makeString(["%d%d", toString(ca), toString(cb)], l) | |
337 | 342 | ||
338 | 343 | ||
339 | - | func bN (aa,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", aa, bO, bP, bQ, bR, toString(bS), toString(bT), toString(bU), toString(bV), toString(bW), bX], l) | |
340 | - | ||
341 | - | ||
342 | - | func bY (bZ,ca) = makeString(["%d%d", toString(bZ), toString(ca)], l) | |
343 | - | ||
344 | - | ||
345 | - | func cb (aa) = { | |
346 | - | let cc = split(aT(au(aa)), l) | |
347 | - | let ai = cc[1] | |
348 | - | let aj = cc[2] | |
344 | + | func cc (aa) = { | |
345 | + | let cd = split(aT(au(aa)), l) | |
346 | + | let ai = cd[1] | |
347 | + | let aj = cd[2] | |
349 | 348 | split(aT(ah(ai, aj)), l) | |
350 | 349 | } | |
351 | 350 | ||
352 | 351 | ||
353 | - | func | |
354 | - | let | |
355 | - | let | |
356 | - | let | |
352 | + | func ce (cf,cg) = { | |
353 | + | let ch = valueOrElse(getInteger(this, af(cf)), 0) | |
354 | + | let ci = valueOrElse(getInteger(this, Y()), 0) | |
355 | + | let cj = if ((ch == 0)) | |
357 | 356 | then { | |
358 | - | let | |
359 | - | $Tuple3( | |
357 | + | let ck = (ci + cg) | |
358 | + | $Tuple3(ck, [IntegerEntry(Y(), ck), IntegerEntry(af(cf), ck), StringEntry(ad(ck), cf)], true) | |
360 | 359 | } | |
361 | - | else $Tuple3( | |
362 | - | | |
360 | + | else $Tuple3(ch, nil, false) | |
361 | + | cj | |
363 | 362 | } | |
364 | 363 | ||
365 | 364 | ||
366 | - | func | |
367 | - | let | |
368 | - | if (containsElement( | |
365 | + | func cl (by) = { | |
366 | + | let cm = split(valueOrElse(getString(S()), m), l) | |
367 | + | if (containsElement(cm, toBase58String(by.callerPublicKey))) | |
369 | 368 | then true | |
370 | 369 | else { | |
371 | - | let | |
372 | - | if (( | |
370 | + | let cn = bz(by) | |
371 | + | if ((cn == cn)) | |
373 | 372 | then true | |
374 | 373 | else throw("Strict value is not equal to itself.") | |
375 | 374 | } | |
376 | 375 | } | |
377 | 376 | ||
378 | 377 | ||
379 | - | func | |
378 | + | func co (aU,cp,cq) = valueOrElse(getInteger(this, aU), valueOrElse(getInteger(this, cp), cq)) | |
380 | 379 | ||
381 | 380 | ||
382 | - | func | |
381 | + | func cr (aA,aB) = { | |
383 | 382 | let ai = getInteger(af(aA)) | |
384 | 383 | let aj = getInteger(af(aB)) | |
385 | 384 | if (if ((ai == unit)) | |
386 | 385 | then true | |
387 | 386 | else (aj == unit)) | |
388 | 387 | then false | |
389 | 388 | else { | |
390 | - | let | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
389 | + | let cs = toString(value(ai)) | |
390 | + | let ct = toString(value(aj)) | |
391 | + | let cu = getString(ah(cs, ct)) | |
392 | + | let cv = getString(ah(ct, cs)) | |
393 | + | let cw = if ((cu != unit)) | |
395 | 394 | then true | |
396 | - | else ( | |
397 | - | | |
395 | + | else (cv != unit) | |
396 | + | cw | |
398 | 397 | } | |
399 | 398 | } | |
400 | 399 | ||
401 | 400 | ||
402 | - | @Callable( | |
401 | + | @Callable(by) | |
403 | 402 | func getSwapContractREADONLY () = $Tuple2(nil, aT(J())) | |
404 | 403 | ||
405 | 404 | ||
406 | 405 | ||
407 | - | @Callable( | |
406 | + | @Callable(by) | |
408 | 407 | func getPoolLeaseConfigREADONLY (aa,aO) = { | |
409 | - | let | |
410 | - | let | |
411 | - | if ($isInstanceOf( | |
408 | + | let cx = { | |
409 | + | let ba = getInteger(this, aN(aa, aO)) | |
410 | + | if ($isInstanceOf(ba, "Int")) | |
412 | 411 | then { | |
413 | - | let | |
414 | - | $Tuple2(true, min([100, max([0, | |
412 | + | let cy = ba | |
413 | + | $Tuple2(true, min([100, max([0, cy])])) | |
415 | 414 | } | |
416 | 415 | else { | |
417 | - | let | |
418 | - | if ($isInstanceOf( | |
416 | + | let cz = getInteger(this, aP(aO)) | |
417 | + | if ($isInstanceOf(cz, "Int")) | |
419 | 418 | then { | |
420 | - | let | |
421 | - | $Tuple2(true, min([100, max([0, | |
419 | + | let cA = cz | |
420 | + | $Tuple2(true, min([100, max([0, cA])])) | |
422 | 421 | } | |
423 | 422 | else $Tuple2(false, 0) | |
424 | 423 | } | |
425 | 424 | } | |
426 | - | let | |
427 | - | let | |
428 | - | let | |
429 | - | let | |
430 | - | if ($isInstanceOf( | |
425 | + | let cB = cx._1 | |
426 | + | let cC = cx._2 | |
427 | + | let cD = { | |
428 | + | let ba = getInteger(this, aR(aa, aO)) | |
429 | + | if ($isInstanceOf(ba, "Int")) | |
431 | 430 | then { | |
432 | - | let | |
433 | - | max([0, | |
431 | + | let cE = ba | |
432 | + | max([0, cE]) | |
434 | 433 | } | |
435 | 434 | else { | |
436 | - | let | |
437 | - | if ($isInstanceOf( | |
435 | + | let cz = getInteger(this, aS(aO)) | |
436 | + | if ($isInstanceOf(cz, "Int")) | |
438 | 437 | then { | |
439 | - | let | |
440 | - | max([0, | |
438 | + | let cF = cz | |
439 | + | max([0, cF]) | |
441 | 440 | } | |
442 | 441 | else 0 | |
443 | 442 | } | |
444 | 443 | } | |
445 | - | let | |
444 | + | let cG = if ((aO == "WAVES")) | |
446 | 445 | then $Tuple3(valueOrElse(getString(this, aK()), ""), getString(this, valueOrElse(aL(), "")), c) | |
447 | 446 | else $Tuple3("", "", 0) | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | let | |
452 | - | $Tuple2(nil, $Tuple7( | |
447 | + | let cH = cG._1 | |
448 | + | let cI = cG._2 | |
449 | + | let cJ = cG._3 | |
450 | + | let cK = valueOrElse(getString(this, aM()), "") | |
451 | + | $Tuple2(nil, $Tuple7(cB, cC, cD, cH, cI, cJ, cK)) | |
453 | 452 | } | |
454 | 453 | ||
455 | 454 | ||
456 | 455 | ||
457 | - | @Callable( | |
458 | - | func getLpAssetFromPoolAssetsREADONLY ( | |
459 | - | then ( | |
456 | + | @Callable(by) | |
457 | + | func getLpAssetFromPoolAssetsREADONLY (cL,cM) = if (if ((cL == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS")) | |
458 | + | then (cM == "WAVES") | |
460 | 459 | else false) | |
461 | 460 | then $Tuple2(nil, unit) | |
462 | 461 | else { | |
463 | - | let cM = value(getInteger(this, af(cK))) | |
464 | 462 | let cN = value(getInteger(this, af(cL))) | |
465 | - | let cO = getString(this, aq(toString(cM), toString(cN))) | |
466 | - | let cP = if ((cO == unit)) | |
463 | + | let cO = value(getInteger(this, af(cM))) | |
464 | + | let cP = getString(this, aq(toString(cN), toString(cO))) | |
465 | + | let cQ = if ((cP == unit)) | |
467 | 466 | then unit | |
468 | - | else drop(value( | |
469 | - | $Tuple2(nil, | |
467 | + | else drop(value(cP), 4) | |
468 | + | $Tuple2(nil, cQ) | |
470 | 469 | } | |
471 | 470 | ||
472 | 471 | ||
473 | 472 | ||
474 | - | @Callable( | |
475 | - | func getPoolAddressFromLpAssetREADONLY ( | |
473 | + | @Callable(by) | |
474 | + | func getPoolAddressFromLpAssetREADONLY (cR) = $Tuple2(nil, valueOrElse(getString(this, ay(cR)), "")) | |
476 | 475 | ||
477 | 476 | ||
478 | 477 | ||
479 | - | @Callable( | |
480 | - | func constructor ( | |
481 | - | let | |
482 | - | if (( | |
483 | - | then [StringEntry(K(), | |
478 | + | @Callable(by) | |
479 | + | func constructor (cS,cT,bE,bF,bG,bH,cU,cV) = { | |
480 | + | let cW = bz(by) | |
481 | + | if ((cW == cW)) | |
482 | + | then [StringEntry(K(), bN(cS, cT, bE, bF, bG, bH, cU)), IntegerEntry(W(), cV)] | |
484 | 483 | else throw("Strict value is not equal to itself.") | |
485 | 484 | } | |
486 | 485 | ||
487 | 486 | ||
488 | 487 | ||
489 | - | @Callable( | |
490 | - | func constructorV2 ( | |
491 | - | let | |
492 | - | if (( | |
488 | + | @Callable(by) | |
489 | + | func constructorV2 (cX) = { | |
490 | + | let cW = bz(by) | |
491 | + | if ((cW == cW)) | |
493 | 492 | then { | |
494 | - | let | |
495 | - | if (( | |
496 | - | then [StringEntry(N(), | |
493 | + | let cY = addressFromPublicKey(fromBase58String(cX)) | |
494 | + | if ((cY == cY)) | |
495 | + | then [StringEntry(N(), cX)] | |
497 | 496 | else throw("Strict value is not equal to itself.") | |
498 | 497 | } | |
499 | 498 | else throw("Strict value is not equal to itself.") | |
500 | 499 | } | |
501 | 500 | ||
502 | 501 | ||
503 | 502 | ||
504 | - | @Callable( | |
505 | - | func constructorV3 ( | |
506 | - | let | |
507 | - | if (( | |
503 | + | @Callable(by) | |
504 | + | func constructorV3 (bJ,bK,bL,bM) = { | |
505 | + | let cW = bz(by) | |
506 | + | if ((cW == cW)) | |
508 | 507 | then { | |
509 | - | let | |
510 | - | [StringEntry(K(), | |
508 | + | let bo = split(aT(K()), l) | |
509 | + | [StringEntry(K(), bB(bo[1], bo[2], bo[3], bo[4], bo[5], bo[6], bo[7], bJ, bK, bL, bM))] | |
511 | 510 | } | |
512 | 511 | else throw("Strict value is not equal to itself.") | |
513 | 512 | } | |
514 | 513 | ||
515 | 514 | ||
516 | 515 | ||
517 | - | @Callable( | |
518 | - | func constructorV4 ( | |
519 | - | let | |
520 | - | if (( | |
521 | - | then [StringEntry(O(), | |
516 | + | @Callable(by) | |
517 | + | func constructorV4 (cZ,da) = { | |
518 | + | let cW = bz(by) | |
519 | + | if ((cW == cW)) | |
520 | + | then [StringEntry(O(), cZ), StringEntry(P(), makeString(da, l))] | |
522 | 521 | else throw("Strict value is not equal to itself.") | |
523 | 522 | } | |
524 | 523 | ||
525 | 524 | ||
526 | 525 | ||
527 | - | @Callable( | |
528 | - | func constructorV5 ( | |
529 | - | let | |
530 | - | if (( | |
531 | - | then [StringEntry(T(), | |
526 | + | @Callable(by) | |
527 | + | func constructorV5 (db) = { | |
528 | + | let cW = bz(by) | |
529 | + | if ((cW == cW)) | |
530 | + | then [StringEntry(T(), db)] | |
532 | 531 | else throw("Strict value is not equal to itself.") | |
533 | 532 | } | |
534 | 533 | ||
535 | 534 | ||
536 | 535 | ||
537 | - | @Callable( | |
538 | - | func constructorV6 ( | |
539 | - | let | |
536 | + | @Callable(by) | |
537 | + | func constructorV6 (dc,dd) = { | |
538 | + | let de = [bz(by), if ((addressFromString(dc) != unit)) | |
540 | 539 | then true | |
541 | 540 | else "invalid voting emission contract address"] | |
542 | - | if (( | |
543 | - | then [StringEntry(U(), | |
541 | + | if ((de == de)) | |
542 | + | then [StringEntry(U(), dc), StringEntry(V(), makeString(dd, l))] | |
544 | 543 | else throw("Strict value is not equal to itself.") | |
545 | 544 | } | |
546 | 545 | ||
547 | 546 | ||
548 | 547 | ||
549 | - | @Callable(bx) | |
550 | - | func setManager (de) = { | |
551 | - | let cV = by(bx) | |
552 | - | if ((cV == cV)) | |
553 | - | then { | |
554 | - | let df = fromBase58String(de) | |
555 | - | if ((df == df)) | |
556 | - | then [StringEntry(R(), de)] | |
557 | - | else throw("Strict value is not equal to itself.") | |
558 | - | } | |
548 | + | @Callable(by) | |
549 | + | func setAdmins (df) = { | |
550 | + | let cW = bz(by) | |
551 | + | if ((cW == cW)) | |
552 | + | then [StringEntry(S(), makeString(df, l))] | |
559 | 553 | else throw("Strict value is not equal to itself.") | |
560 | 554 | } | |
561 | 555 | ||
562 | 556 | ||
563 | 557 | ||
564 | - | @Callable(bx) | |
565 | - | func confirmManager () = { | |
566 | - | let dg = bt() | |
567 | - | let dh = if (isDefined(dg)) | |
568 | - | then true | |
569 | - | else throw("No pending manager") | |
570 | - | if ((dh == dh)) | |
571 | - | then { | |
572 | - | let di = if ((bx.callerPublicKey == value(dg))) | |
573 | - | then true | |
574 | - | else throw("You are not pending manager") | |
575 | - | if ((di == di)) | |
576 | - | then [StringEntry(Q(), toBase58String(value(dg))), DeleteEntry(R())] | |
577 | - | else throw("Strict value is not equal to itself.") | |
578 | - | } | |
579 | - | else throw("Strict value is not equal to itself.") | |
580 | - | } | |
581 | - | ||
582 | - | ||
583 | - | ||
584 | - | @Callable(bx) | |
585 | - | func setAdmins (dj) = { | |
586 | - | let cV = by(bx) | |
587 | - | if ((cV == cV)) | |
588 | - | then [StringEntry(S(), makeString(dj, l))] | |
589 | - | else throw("Strict value is not equal to itself.") | |
590 | - | } | |
591 | - | ||
592 | - | ||
593 | - | ||
594 | - | @Callable(bx) | |
595 | - | func activateNewPool (aa,bQ,bR,dk,dl,dm,bX,dn) = { | |
596 | - | let cV = ck(bx) | |
597 | - | if ((cV == cV)) | |
558 | + | @Callable(by) | |
559 | + | func activateNewPool (aa,bR,bS,dg,dh,di,bY,dj) = { | |
560 | + | let cW = cl(by) | |
561 | + | if ((cW == cW)) | |
598 | 562 | then if (isDefined(getString(au(aa)))) | |
599 | 563 | then throw((("Pool address " + aa) + " already registered.")) | |
600 | 564 | else { | |
601 | - | let | |
602 | - | let | |
603 | - | let | |
565 | + | let dk = ce(bR, 1) | |
566 | + | let dl = dk._1 | |
567 | + | let dm = ce(bS, if (dk._3) | |
604 | 568 | then 2 | |
605 | 569 | else 1) | |
606 | - | let | |
607 | - | let | |
608 | - | let | |
609 | - | let | |
610 | - | if ( | |
611 | - | then throw((((("Pool " + | |
570 | + | let dn = dm._1 | |
571 | + | let do = valueOrErrorMessage(scriptHash(addressFromStringValue(aa)), ("No script has been found on pool account " + aa)) | |
572 | + | let dp = getBinaryValue(M()) | |
573 | + | let dq = cr(bR, bS) | |
574 | + | if (dq) | |
575 | + | then throw((((("Pool " + bR) + "/") + bS) + " has already been activated.")) | |
612 | 576 | else { | |
613 | - | let dv = value(getString(this, ah(toString(dp), toString(dr)))) | |
614 | - | let dw = if ((bQ == "WAVES")) | |
615 | - | then k | |
616 | - | else pow(10, 0, value(assetInfo(fromBase58String(bQ))).decimals, 0, 0, DOWN) | |
617 | - | let dx = if ((bR == "WAVES")) | |
577 | + | let dr = value(getString(this, ah(toString(dl), toString(dn)))) | |
578 | + | let ds = if ((bR == "WAVES")) | |
618 | 579 | then k | |
619 | 580 | else pow(10, 0, value(assetInfo(fromBase58String(bR))).decimals, 0, 0, DOWN) | |
620 | - | let dy = Issue(dk, dl, 1, 8, true) | |
621 | - | let bP = calculateAssetId(dy) | |
622 | - | let dz = toBase58String(bP) | |
623 | - | let dA = invoke(addressFromStringValue(aa), "activate", [bQ, bR], nil) | |
624 | - | if ((dA == dA)) | |
625 | - | then if ((dA != "success")) | |
581 | + | let dt = if ((bS == "WAVES")) | |
582 | + | then k | |
583 | + | else pow(10, 0, value(assetInfo(fromBase58String(bS))).decimals, 0, 0, DOWN) | |
584 | + | let du = Issue(dg, dh, 1, 8, true) | |
585 | + | let bQ = calculateAssetId(du) | |
586 | + | let dv = toBase58String(bQ) | |
587 | + | let dw = invoke(addressFromStringValue(aa), "activate", [bR, bS], nil) | |
588 | + | if ((dw == dw)) | |
589 | + | then if ((dw != "success")) | |
626 | 590 | then throw("Pool initialisation error happened.") | |
627 | 591 | else { | |
628 | - | let | |
629 | - | let | |
630 | - | if (( | |
592 | + | let db = addressFromStringValue(aT(T())) | |
593 | + | let dx = invoke(db, "createOrUpdate", [dv, dg, false], nil) | |
594 | + | if ((dx == dx)) | |
631 | 595 | then { | |
632 | - | let | |
633 | - | if (( | |
596 | + | let dy = invoke(db, "addLabel", [dv, h], nil) | |
597 | + | if ((dy == dy)) | |
634 | 598 | then { | |
635 | - | let | |
636 | - | if (( | |
599 | + | let dz = invoke(db, "setLogo", [dv, dj], nil) | |
600 | + | if ((dz == dz)) | |
637 | 601 | then { | |
638 | - | let | |
639 | - | if (( | |
602 | + | let dA = invoke(db, "addAssetsLink", [bR, bS, dv], nil) | |
603 | + | if ((dA == dA)) | |
640 | 604 | then { | |
641 | - | let | |
642 | - | if (( | |
643 | - | then $Tuple2((( | |
605 | + | let dB = invoke(db, "increaseAssetPoolsNumber", [bR], nil) | |
606 | + | if ((dB == dB)) | |
607 | + | then $Tuple2(((dk._2 ++ dm._2) ++ [du, Burn(bQ, 1), StringEntry(ah(toString(dl), toString(dn)), bO(aa, toString(n), dv, bR, bS, ds, dt, dl, dn, k, bY)), StringEntry(ao(dv), bZ(dl, dn)), StringEntry(aq(toString(dl), toString(dn)), ("%s__" + dv)), StringEntry(au(aa), bZ(dl, dn)), StringEntry(aw(dl, dn), aa), StringEntry(ay(dv), aa), StringEntry(ax(aa), dv), IntegerEntry(Z(aa), di), IntegerEntry(at(aa), i)]), dv) | |
644 | 608 | else throw("Strict value is not equal to itself.") | |
645 | 609 | } | |
646 | 610 | else throw("Strict value is not equal to itself.") | |
647 | 611 | } | |
648 | 612 | else throw("Strict value is not equal to itself.") | |
649 | 613 | } | |
650 | 614 | else throw("Strict value is not equal to itself.") | |
651 | 615 | } | |
652 | 616 | else throw("Strict value is not equal to itself.") | |
653 | 617 | } | |
654 | 618 | else throw("Strict value is not equal to itself.") | |
655 | 619 | } | |
656 | 620 | } | |
657 | 621 | else throw("Strict value is not equal to itself.") | |
658 | 622 | } | |
659 | 623 | ||
660 | 624 | ||
661 | 625 | ||
662 | - | @Callable( | |
663 | - | func managePool (aa, | |
664 | - | let | |
665 | - | if (( | |
626 | + | @Callable(by) | |
627 | + | func managePool (aa,dC) = { | |
628 | + | let cW = bz(by) | |
629 | + | if ((cW == cW)) | |
666 | 630 | then { | |
667 | - | let | |
668 | - | let | |
669 | - | let | |
670 | - | let | |
671 | - | let | |
672 | - | let | |
673 | - | let | |
674 | - | let | |
675 | - | let | |
676 | - | let | |
677 | - | let | |
678 | - | [StringEntry(ah(toString( | |
631 | + | let dD = cc(aa) | |
632 | + | let bP = dD[v] | |
633 | + | let dv = dD[w] | |
634 | + | let bR = dD[x] | |
635 | + | let bS = dD[y] | |
636 | + | let ds = parseIntValue(dD[z]) | |
637 | + | let dt = parseIntValue(dD[A]) | |
638 | + | let dl = parseIntValue(dD[B]) | |
639 | + | let dn = parseIntValue(dD[C]) | |
640 | + | let dE = parseIntValue(dD[D]) | |
641 | + | let bY = dD[E] | |
642 | + | [StringEntry(ah(toString(dl), toString(dn)), bO(aa, toString(dC), dv, bR, bS, ds, dt, dl, dn, dE, bY))] | |
679 | 643 | } | |
680 | 644 | else throw("Strict value is not equal to itself.") | |
681 | 645 | } | |
682 | 646 | ||
683 | 647 | ||
684 | 648 | ||
685 | - | @Callable( | |
686 | - | func emit ( | |
687 | - | let | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | let | |
692 | - | let | |
693 | - | if ((0 >= | |
649 | + | @Callable(by) | |
650 | + | func emit (dF) = { | |
651 | + | let dG = by.caller | |
652 | + | let dH = by.originCaller | |
653 | + | let dI = valueOrErrorMessage(getString(ax(toString(dG))), "Invalid LP address called me.") | |
654 | + | let dJ = fromBase58String(dI) | |
655 | + | let da = split(valueOrElse(getString(P()), m), l) | |
656 | + | let cZ = addressFromStringValue(valueOrErrorMessage(getString(O()), "Legacy factory contract does not exists.")) | |
657 | + | if ((0 >= dF)) | |
694 | 658 | then nil | |
695 | - | else if (containsElement( | |
696 | - | then $Tuple2(nil, | |
697 | - | else $Tuple2([Reissue( | |
659 | + | else if (containsElement(da, toString(dG))) | |
660 | + | then $Tuple2(nil, cZ) | |
661 | + | else $Tuple2([Reissue(dJ, dF, true), ScriptTransfer(by.caller, dF, dJ)], "success") | |
698 | 662 | } | |
699 | 663 | ||
700 | 664 | ||
701 | 665 | ||
702 | - | @Callable( | |
703 | - | func burn ( | |
704 | - | let | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | let | |
710 | - | if (( | |
666 | + | @Callable(by) | |
667 | + | func burn (dK) = { | |
668 | + | let dG = by.caller | |
669 | + | let dH = by.originCaller | |
670 | + | let dL = value(by.payments[0]) | |
671 | + | let dM = value(dL.amount) | |
672 | + | let dN = toBase58String(value(dL.assetId)) | |
673 | + | let dO = valueOrErrorMessage(getString(ax(toString(dG))), "Invalid LP address called me.") | |
674 | + | if ((dN != dO)) | |
711 | 675 | then throw("Invalid asset passed.") | |
712 | - | else if (( | |
676 | + | else if ((dK != dM)) | |
713 | 677 | then throw("Invalid amount passed.") | |
714 | 678 | else { | |
715 | - | let | |
716 | - | $Tuple2([Burn( | |
679 | + | let dJ = fromBase58String(dO) | |
680 | + | $Tuple2([Burn(dJ, dK)], "success") | |
717 | 681 | } | |
718 | 682 | } | |
719 | 683 | ||
720 | 684 | ||
721 | 685 | ||
722 | - | @Callable( | |
723 | - | func modifyWeight ( | |
724 | - | let | |
686 | + | @Callable(by) | |
687 | + | func modifyWeight (bQ,dP) = { | |
688 | + | let cW = if ((toBase58String(by.caller.bytes) == valueOrElse(getString(this, U()), ""))) | |
725 | 689 | then true | |
726 | - | else by | |
727 | - | if (( | |
690 | + | else bz(by) | |
691 | + | if ((cW == cW)) | |
728 | 692 | then { | |
729 | - | let av = aT(ay( | |
730 | - | let | |
731 | - | let | |
732 | - | let | |
733 | - | let | |
734 | - | let | |
735 | - | let | |
736 | - | let | |
737 | - | let | |
738 | - | if (( | |
693 | + | let av = aT(ay(bQ)) | |
694 | + | let dQ = Z(av) | |
695 | + | let dR = Z(g) | |
696 | + | let dS = valueOrElse(getInteger(dR), 0) | |
697 | + | let di = valueOrElse(getInteger(dQ), 0) | |
698 | + | let dT = dP | |
699 | + | let bo = split(aT(K()), l) | |
700 | + | let cS = bq(bo) | |
701 | + | let dU = invoke(cS, "onModifyWeight", [bQ, av], nil) | |
702 | + | if ((dU == dU)) | |
739 | 703 | then { | |
740 | - | let | |
704 | + | let dV = if ((dS == 0)) | |
741 | 705 | then nil | |
742 | - | else [IntegerEntry( | |
743 | - | let | |
744 | - | let | |
745 | - | let | |
706 | + | else [IntegerEntry(dR, 0)] | |
707 | + | let dW = ab(av, 0) | |
708 | + | let dX = getInteger(dW) | |
709 | + | let dY = if ((dX == unit)) | |
746 | 710 | then nil | |
747 | - | else [DeleteEntry( | |
748 | - | (([IntegerEntry( | |
711 | + | else [DeleteEntry(dW)] | |
712 | + | (([IntegerEntry(dQ, dT)] ++ dV) ++ dY) | |
749 | 713 | } | |
750 | 714 | else throw("Strict value is not equal to itself.") | |
751 | 715 | } | |
752 | 716 | else throw("Strict value is not equal to itself.") | |
753 | 717 | } | |
754 | 718 | ||
755 | 719 | ||
756 | 720 | ||
757 | - | @Callable( | |
758 | - | func modifyWeights ( | |
759 | - | let | |
760 | - | if (( | |
721 | + | @Callable(by) | |
722 | + | func modifyWeights (dZ,ea,eb,ec) = { | |
723 | + | let cW = bz(by) | |
724 | + | if ((cW == cW)) | |
761 | 725 | then { | |
762 | - | let | |
763 | - | let | |
764 | - | let | |
765 | - | let | |
766 | - | let | |
767 | - | let | |
768 | - | let | |
769 | - | let | |
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | let | |
774 | - | let | |
775 | - | let | |
776 | - | if ((0 >= | |
777 | - | then throw(("invalid btcWeightNew: " + toString( | |
778 | - | else if ((0 >= | |
779 | - | then throw(("invalid ethWeightNew: " + toString( | |
726 | + | let ed = ((5 * f) / 100) | |
727 | + | let ee = ((5 * f) / 100) | |
728 | + | let ef = ((5 * f) / 100) | |
729 | + | let bo = split(aT(K()), l) | |
730 | + | let eg = bq(bo) | |
731 | + | let eh = br(bo) | |
732 | + | let ei = Z(dZ) | |
733 | + | let ej = Z(ea) | |
734 | + | let ek = Z(eb) | |
735 | + | let el = Z(ec) | |
736 | + | let em = aW(ei) | |
737 | + | let en = aW(ej) | |
738 | + | let eo = (em - ef) | |
739 | + | let ep = (en - ef) | |
740 | + | if ((0 >= eo)) | |
741 | + | then throw(("invalid btcWeightNew: " + toString(eo))) | |
742 | + | else if ((0 >= ep)) | |
743 | + | then throw(("invalid ethWeightNew: " + toString(ep))) | |
780 | 744 | else { | |
781 | - | let | |
782 | - | let | |
783 | - | let | |
784 | - | let | |
785 | - | let | |
786 | - | if (( | |
745 | + | let eq = aT(ax(dZ)) | |
746 | + | let er = aT(ax(ea)) | |
747 | + | let es = aT(ax(eb)) | |
748 | + | let et = aT(ax(ec)) | |
749 | + | let eu = invoke(eg, "onModifyWeight", [eq, dZ], nil) | |
750 | + | if ((eu == eu)) | |
787 | 751 | then { | |
788 | - | let | |
789 | - | if (( | |
752 | + | let ev = invoke(eg, "onModifyWeight", [er, ea], nil) | |
753 | + | if ((ev == ev)) | |
790 | 754 | then { | |
791 | - | let | |
792 | - | if (( | |
755 | + | let ew = invoke(eg, "onModifyWeight", [es, eb], nil) | |
756 | + | if ((ew == ew)) | |
793 | 757 | then { | |
794 | - | let | |
795 | - | if (( | |
796 | - | then [IntegerEntry( | |
758 | + | let ex = invoke(eg, "onModifyWeight", [et, ec], nil) | |
759 | + | if ((ex == ex)) | |
760 | + | then [IntegerEntry(ei, eo), IntegerEntry(ej, ep), IntegerEntry(ek, ed), IntegerEntry(el, ee), IntegerEntry(ab(dZ, 0), em), IntegerEntry(ab(ea, 0), en), IntegerEntry(ab(eb, 0), ed), IntegerEntry(ab(ec, 0), ee)] | |
797 | 761 | else throw("Strict value is not equal to itself.") | |
798 | 762 | } | |
799 | 763 | else throw("Strict value is not equal to itself.") | |
800 | 764 | } | |
801 | 765 | else throw("Strict value is not equal to itself.") | |
802 | 766 | } | |
803 | 767 | else throw("Strict value is not equal to itself.") | |
804 | 768 | } | |
805 | 769 | } | |
806 | 770 | else throw("Strict value is not equal to itself.") | |
807 | 771 | } | |
808 | 772 | ||
809 | 773 | ||
810 | 774 | ||
811 | - | @Callable( | |
775 | + | @Callable(by) | |
812 | 776 | func checkWxEmissionPoolLabel (aA,aB) = { | |
813 | - | let | |
814 | - | let | |
815 | - | if ($isInstanceOf( | |
777 | + | let ey = { | |
778 | + | let ba = getBoolean(az(aA, aB)) | |
779 | + | if ($isInstanceOf(ba, "Boolean")) | |
816 | 780 | then { | |
817 | - | let | |
818 | - | | |
781 | + | let cE = ba | |
782 | + | cE | |
819 | 783 | } | |
820 | 784 | else false | |
821 | 785 | } | |
822 | - | $Tuple2(nil, | |
786 | + | $Tuple2(nil, ey) | |
823 | 787 | } | |
824 | 788 | ||
825 | 789 | ||
826 | 790 | ||
827 | - | @Callable( | |
791 | + | @Callable(by) | |
828 | 792 | func setWxEmissionPoolLabel (aA,aB) = { | |
829 | - | let | |
830 | - | if (( | |
793 | + | let cW = cl(by) | |
794 | + | if ((cW == cW)) | |
831 | 795 | then $Tuple2([BooleanEntry(az(aA, aB), true)], unit) | |
832 | 796 | else throw("Strict value is not equal to itself.") | |
833 | 797 | } | |
834 | 798 | ||
835 | 799 | ||
836 | 800 | ||
837 | - | @Callable( | |
801 | + | @Callable(by) | |
838 | 802 | func deleteWxEmissionPoolLabel (aA,aB) = { | |
839 | - | let | |
803 | + | let cW = if ((by.caller == this)) | |
840 | 804 | then true | |
841 | - | else | |
842 | - | if (( | |
805 | + | else cl(by) | |
806 | + | if ((cW == cW)) | |
843 | 807 | then $Tuple2([DeleteEntry(az(aA, aB))], unit) | |
844 | 808 | else throw("Strict value is not equal to itself.") | |
845 | 809 | } | |
846 | 810 | ||
847 | 811 | ||
848 | 812 | ||
849 | - | @Callable( | |
813 | + | @Callable(by) | |
850 | 814 | func onVerificationLoss (aO) = { | |
851 | - | let | |
815 | + | let cW = if ((toBase58String(by.caller.bytes) == valueOrElse(getString(this, T()), ""))) | |
852 | 816 | then true | |
853 | - | else by | |
854 | - | if (( | |
817 | + | else bz(by) | |
818 | + | if ((cW == cW)) | |
855 | 819 | then { | |
856 | - | let | |
857 | - | let | |
820 | + | let dd = bs() | |
821 | + | let ez = if ((size(dd) > 0)) | |
858 | 822 | then true | |
859 | 823 | else throw("invalid price assets") | |
860 | - | if (( | |
824 | + | if ((ez == ez)) | |
861 | 825 | then { | |
862 | - | func | |
863 | - | let | |
864 | - | if (( | |
826 | + | func eA (eB,eC) = { | |
827 | + | let cy = invoke(this, "deleteWxEmissionPoolLabel", [aO, eC], nil) | |
828 | + | if ((cy == cy)) | |
865 | 829 | then unit | |
866 | 830 | else throw("Strict value is not equal to itself.") | |
867 | 831 | } | |
868 | 832 | ||
869 | - | let | |
870 | - | let | |
871 | - | let | |
872 | - | let | |
873 | - | func | |
874 | - | then | |
875 | - | else | |
833 | + | let eD = { | |
834 | + | let eE = dd | |
835 | + | let eF = size(eE) | |
836 | + | let eG = unit | |
837 | + | func eH (eI,eJ) = if ((eJ >= eF)) | |
838 | + | then eI | |
839 | + | else eA(eI, eE[eJ]) | |
876 | 840 | ||
877 | - | func | |
878 | - | then | |
879 | - | else throw("List size exceeds | |
841 | + | func eK (eI,eJ) = if ((eJ >= eF)) | |
842 | + | then eI | |
843 | + | else throw("List size exceeds 11") | |
880 | 844 | ||
881 | - | | |
845 | + | eK(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11) | |
882 | 846 | } | |
883 | - | if (( | |
847 | + | if ((eD == eD)) | |
884 | 848 | then $Tuple2(nil, unit) | |
885 | 849 | else throw("Strict value is not equal to itself.") | |
886 | 850 | } | |
887 | 851 | else throw("Strict value is not equal to itself.") | |
888 | 852 | } | |
889 | 853 | else throw("Strict value is not equal to itself.") | |
890 | 854 | } | |
891 | 855 | ||
892 | 856 | ||
893 | 857 | ||
894 | - | @Callable( | |
858 | + | @Callable(by) | |
895 | 859 | func isPoolOneTokenOperationsDisabledREADONLY (aa) = { | |
896 | - | let | |
897 | - | let al = $Tuple2(parseIntValue( | |
898 | - | let | |
899 | - | let | |
900 | - | $Tuple2(nil, if ( | |
860 | + | let dD = cc(aa) | |
861 | + | let al = $Tuple2(parseIntValue(dD[B]), parseIntValue(dD[C])) | |
862 | + | let eL = valueOrElse(getBoolean(ak(al)), false) | |
863 | + | let eM = valueOrElse(getBoolean(an()), false) | |
864 | + | $Tuple2(nil, if (eM) | |
901 | 865 | then true | |
902 | - | else | |
866 | + | else eL) | |
903 | 867 | } | |
904 | 868 | ||
905 | 869 | ||
906 | 870 | ||
907 | - | @Callable( | |
871 | + | @Callable(by) | |
908 | 872 | func getInFeeREADONLY (aa) = { | |
909 | - | let | |
910 | - | $Tuple2(nil, | |
873 | + | let eN = co(aC(aa), aD(), 0) | |
874 | + | $Tuple2(nil, eN) | |
911 | 875 | } | |
912 | 876 | ||
913 | 877 | ||
914 | 878 | ||
915 | - | @Callable( | |
879 | + | @Callable(by) | |
916 | 880 | func getOutFeeREADONLY (aa) = { | |
917 | - | let | |
918 | - | $Tuple2(nil, | |
881 | + | let eN = co(aE(aa), aF(), fraction(10, b, 10000)) | |
882 | + | $Tuple2(nil, eN) | |
919 | 883 | } | |
920 | 884 | ||
921 | 885 | ||
922 | 886 | ||
923 | - | @Callable( | |
924 | - | func poolInfoREADONLY ( | |
925 | - | let | |
926 | - | let | |
927 | - | let | |
928 | - | let | |
929 | - | let | |
930 | - | then isDefined( | |
887 | + | @Callable(by) | |
888 | + | func poolInfoREADONLY (eO,eP) = { | |
889 | + | let eQ = getInteger(this, af(eO)) | |
890 | + | let eR = getInteger(this, af(eP)) | |
891 | + | let eS = getString(this, aw(value(eQ), value(eR))) | |
892 | + | let eT = getString(this, ax(value(eS))) | |
893 | + | let dq = if (if (isDefined(eQ)) | |
894 | + | then isDefined(eR) | |
931 | 895 | else false) | |
932 | - | then isDefined( | |
896 | + | then isDefined(eS) | |
933 | 897 | else false | |
934 | - | let | |
935 | - | then $Tuple2(addressFromStringValue(value( | |
898 | + | let eU = if (dq) | |
899 | + | then $Tuple2(addressFromStringValue(value(eS)), aX(value(eT))) | |
936 | 900 | else unit | |
901 | + | $Tuple2(nil, eU) | |
902 | + | } | |
903 | + | ||
904 | + | ||
905 | + | ||
906 | + | @Callable(by) | |
907 | + | func getPoolStatusREADONLY (aa) = { | |
908 | + | let cd = split(aT(au(aa)), l) | |
909 | + | let ai = cd[1] | |
910 | + | let aj = cd[2] | |
911 | + | let cu = split(aT(ah(ai, aj)), l) | |
912 | + | $Tuple2(nil, parseIntValue(cu[v])) | |
913 | + | } | |
914 | + | ||
915 | + | ||
916 | + | ||
917 | + | @Callable(by) | |
918 | + | func getPoolConfigREADONLY (aa) = { | |
919 | + | let cd = split(aT(au(aa)), l) | |
920 | + | let ai = cd[1] | |
921 | + | let aj = cd[2] | |
922 | + | let cu = split(aT(ah(ai, aj)), l) | |
923 | + | $Tuple2(nil, cu) | |
924 | + | } | |
925 | + | ||
926 | + | ||
927 | + | ||
928 | + | @Callable(by) | |
929 | + | func getPoolConfigByLpAssetIdREADONLY (dv) = { | |
930 | + | let cd = split(aT(ao(dv)), l) | |
931 | + | let ai = cd[1] | |
932 | + | let aj = cd[2] | |
933 | + | let cu = split(aT(ah(ai, aj)), l) | |
934 | + | $Tuple2(nil, cu) | |
935 | + | } | |
936 | + | ||
937 | + | ||
938 | + | ||
939 | + | @Callable(by) | |
940 | + | func poolExistsREADONLY (aA,aB) = $Tuple2(nil, cr(aA, aB)) | |
941 | + | ||
942 | + | ||
943 | + | ||
944 | + | @Callable(by) | |
945 | + | func skipOrderValidationREADONLY (aa) = $Tuple2(nil, valueOrElse(getBoolean(aG(aa)), false)) | |
946 | + | ||
947 | + | ||
948 | + | ||
949 | + | @Callable(by) | |
950 | + | func getChangeAmpConfigREADONLY (aa) = { | |
951 | + | let eV = getIntegerValue(aH(aa)) | |
952 | + | let eW = getIntegerValue(aI(aa)) | |
953 | + | let eX = getIntegerValue(aJ(aa)) | |
954 | + | $Tuple2(nil, [eV, eW, eX]) | |
955 | + | } | |
956 | + | ||
957 | + | ||
958 | + | ||
959 | + | @Callable(by) | |
960 | + | func getPoolWeightREADONLY (bQ) = { | |
961 | + | let aa = aT(ay(bQ)) | |
962 | + | let eY = valueOrElse(getInteger(Z(aa)), 0) | |
937 | 963 | $Tuple2(nil, eY) | |
938 | 964 | } | |
939 | 965 | ||
940 | 966 | ||
941 | - | ||
942 | - | @Callable(bx) | |
943 | - | func getPoolStatusREADONLY (aa) = { | |
944 | - | let cc = split(aT(au(aa)), l) | |
945 | - | let ai = cc[1] | |
946 | - | let aj = cc[2] | |
947 | - | let ct = split(aT(ah(ai, aj)), l) | |
948 | - | $Tuple2(nil, parseIntValue(ct[v])) | |
949 | - | } | |
950 | - | ||
951 | - | ||
952 | - | ||
953 | - | @Callable(bx) | |
954 | - | func getPoolConfigREADONLY (aa) = { | |
955 | - | let cc = split(aT(au(aa)), l) | |
956 | - | let ai = cc[1] | |
957 | - | let aj = cc[2] | |
958 | - | let ct = split(aT(ah(ai, aj)), l) | |
959 | - | $Tuple2(nil, ct) | |
960 | - | } | |
961 | - | ||
962 | - | ||
963 | - | ||
964 | - | @Callable(bx) | |
965 | - | func getPoolConfigByLpAssetIdREADONLY (dz) = { | |
966 | - | let cc = split(aT(ao(dz)), l) | |
967 | - | let ai = cc[1] | |
968 | - | let aj = cc[2] | |
969 | - | let ct = split(aT(ah(ai, aj)), l) | |
970 | - | $Tuple2(nil, ct) | |
971 | - | } | |
972 | - | ||
973 | - | ||
974 | - | ||
975 | - | @Callable(bx) | |
976 | - | func poolExistsREADONLY (aA,aB) = $Tuple2(nil, cq(aA, aB)) | |
977 | - | ||
978 | - | ||
979 | - | ||
980 | - | @Callable(bx) | |
981 | - | func skipOrderValidationREADONLY (aa) = $Tuple2(nil, valueOrElse(getBoolean(aG(aa)), false)) | |
982 | - | ||
983 | - | ||
984 | - | ||
985 | - | @Callable(bx) | |
986 | - | func getChangeAmpConfigREADONLY (aa) = { | |
987 | - | let eZ = getIntegerValue(aH(aa)) | |
988 | - | let fa = getIntegerValue(aI(aa)) | |
989 | - | let fb = getIntegerValue(aJ(aa)) | |
990 | - | $Tuple2(nil, [eZ, fa, fb]) | |
991 | - | } | |
992 | - | ||
993 | - | ||
994 | - | ||
995 | - | @Callable(bx) | |
996 | - | func getPoolWeightREADONLY (bP) = { | |
997 | - | let aa = aT(ay(bP)) | |
998 | - | let fc = valueOrElse(getInteger(Z(aa)), 0) | |
999 | - | $Tuple2(nil, fc) | |
1000 | - | } | |
1001 | - | ||
1002 | - | ||
1003 | - | @Verifier(fd) | |
1004 | - | func fe () = { | |
1005 | - | let ff = { | |
1006 | - | let bq = bs() | |
1007 | - | if ($isInstanceOf(bq, "ByteVector")) | |
967 | + | @Verifier(eZ) | |
968 | + | func fa () = { | |
969 | + | let fb = { | |
970 | + | let ba = bt() | |
971 | + | if ($isInstanceOf(ba, "ByteVector")) | |
1008 | 972 | then { | |
1009 | - | let | |
1010 | - | | |
973 | + | let bA = ba | |
974 | + | bA | |
1011 | 975 | } | |
1012 | - | else if ($isInstanceOf( | |
1013 | - | then | |
976 | + | else if ($isInstanceOf(ba, "Unit")) | |
977 | + | then eZ.senderPublicKey | |
1014 | 978 | else throw("Match error") | |
1015 | 979 | } | |
1016 | - | sigVerify( | |
980 | + | sigVerify(eZ.bodyBytes, eZ.proofs[0], fb) | |
1017 | 981 | } | |
1018 | 982 |
github/deemru/w8io/169f3d6 250.42 ms ◑![]()