tx · 6BSd8JiJrFHfk31qb713HJUFZd3Cz1XRBBuPMcGxUTfC

3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai:  -0.04200000 Waves

2024.02.21 11:09 [2985740] smart account 3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai > SELF 0.00000000 Waves

{ "type": 13, "id": "6BSd8JiJrFHfk31qb713HJUFZd3Cz1XRBBuPMcGxUTfC", "fee": 4200000, "feeAssetId": null, "timestamp": 1708502969429, "version": 2, "chainId": 84, "sender": "3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai", "senderPublicKey": "2JEaBjtjvMoNGKZmL9QxYefa1VkMJM3vMW8rNvTs9R2H", "proofs": [ "wQNJW75VKNJsk1Vbgd1Jogu6kGeqkhqhM6Xwr2U4XdUJRKfQkM9ZU3V1F64cCQK9c5qPxQT1YWaoK8xxnQR5GH8" ], "script": "base64:BgLXAQgCEgASBAoCCAgSBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEYEgoKCAgICAgIAQgIEgQKAggBEgMKAQESAwoBARIECgIIARIGCgQICAgIEgQKAggIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIhgEABlNDQUxFOAAIAAVNVUxUOACAwtcvAAZNVUxUMTIAgKCUpY0dAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AA5HV1h2aXJ0dWFsUE9PTAIOR1dYdmlydHVhbFBPT0wADGxhYmVsUG9vbHNMcAIIUE9PTFNfTFAADWRlZmF1bHRTcHJlYWQAgIl6AAt3YXZlc1N0cmluZwIFV0FWRVMAEGNvbnRyYWN0RmlsZW5hbWUCD2ZhY3RvcnlfdjIucmlkZQARZGVjaW1hbHNNdWx0UHJpY2UJAGgCCQBoAgBkAOgHAOgHAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAD1Bvb2xQdXREaXNhYmxlZAACABNQb29sTWF0Y2hlckRpc2FibGVkAAMADFBvb2xTaHV0ZG93bgAEABJpZHhJbnRlcm5hbEFzc2V0SWQAAQAPaWR4UmVzdXRBY3Rpb25zAAIAIGlkeElmQXNzZXRJZENhbGN1bGF0aW9uUGVyZm9ybWVkAAMADmlkeFBvb2xBZGRyZXNzAAEADWlkeFBvb2xTdGF0dXMAAgAQaWR4UG9vbExQQXNzZXRJZAADAA1pZHhBbXRBc3NldElkAAQAD2lkeFByaWNlQXNzZXRJZAAFAA5pZHhBbXRBc3NldERjbQAGABBpZHhQcmljZUFzc2V0RGNtAAcADmlkeElBbXRBc3NldElkAAgAEGlkeElQcmljZUFzc2V0SWQACQANaWR4TFBBc3NldERjbQAKAAtpZHhQb29sVHlwZQALABNwb29sTGFiZWxXeEVtaXNzaW9uAgtXWF9FTUlTU0lPTgAPdmFsaWRQb29sTGFiZWxzCQDMCAIFE3Bvb2xMYWJlbFd4RW1pc3Npb24FA25pbAEHd3JhcEVycgEDbXNnCQC5CQIJAMwIAgUQY29udHJhY3RGaWxlbmFtZQkAzAgCAgI6IAkAzAgCBQNtc2cFA25pbAIAAQh0aHJvd0VycgEDbXNnCQACAQkBB3dyYXBFcnIBBQNtc2cBFmtleUFsbG93ZWRMcFNjcmlwdEhhc2gAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQxzd2FwQ29udHJhY3QAAhAlc19fc3dhcENvbnRyYWN0ARBrZXlGYWN0b3J5Q29uZmlnAAIRJXNfX2ZhY3RvcnlDb25maWcBD2tleUxwVG9rZW5zTGlzdAACECVzX19scFRva2Vuc0xpc3QBEWtleVBvb2xTY3JpcHRIYXNoAAIWJXMlc19fcG9vbF9fc2NyaXB0SGFzaAENa2V5TWF0Y2hlclB1YgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQEYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAIZJXNfX2xlZ2FjeUZhY3RvcnlDb250cmFjdAEOa2V5TGVnYWN5UG9vbHMAAg8lc19fbGVnYWN5UG9vbHMBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQ9rZXlBZG1pblB1YktleXMAAhAlc19fYWRtaW5QdWJLZXlzARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAIXJXNfX2Fzc2V0c1N0b3JlQ29udHJhY3QBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAEUa2V5VXNlclBvb2xzQ29udHJhY3QAAhUlc19fdXNlclBvb2xzQ29udHJhY3QBDmtleVByaWNlQXNzZXRzAAkAuQkCCQDMCAICAiVzCQDMCAICC3ByaWNlQXNzZXRzBQNuaWwFA1NFUAEQa2V5UHJpY2VEZWNpbWFscwACESVzX19wcmljZURlY2ltYWxzARNrZXlBbGxQb29sc1NodXRkb3duAAIMJXNfX3NodXRkb3duARZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAIXJXNfX25leHRJbnRlcm5hbEFzc2V0SWQBD2tleVBvb2xUb1dlaWdodAELcG9vbEFkZHJlc3MJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQtwb29sQWRkcmVzcwEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQILcG9vbEFkZHJlc3MDbnVtCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FC3Bvb2xBZGRyZXNzAgJfXwkApAMBBQNudW0BH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQBEWludGVybmFsQmFzZUFzc2V0CQCsAgICKCVzJXMlZF9fbWFwcGluZ3NfX2ludGVybmFsMmJhc2VBc3NldElkX18JAKQDAQURaW50ZXJuYWxCYXNlQXNzZXQBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBDGJhc2VBc3NldFN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQxiYXNlQXNzZXRTdHIBDWtleVBvb2xDb25maWcCE2Ftb3VudEFzc2V0SW50ZXJuYWwScHJpY2VBc3NldEludGVybmFsCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBRNhbW91bnRBc3NldEludGVybmFsAgJfXwUScHJpY2VBc3NldEludGVybmFsAghfX2NvbmZpZwEha2V5UG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAQ5hc3NldHNJbnRlcm5hbAQLJHQwMzg3ODM5NDAFDmFzc2V0c0ludGVybmFsBBNhbW91bnRBc3NldEludGVybmFsCAULJHQwMzg3ODM5NDACXzEEEnByaWNlQXNzZXRJbnRlcm5hbAgFCyR0MDM4NzgzOTQwAl8yCQC5CQIJAMwIAgIGJWQlZCVzCQDMCAIJAKQDAQUTYW1vdW50QXNzZXRJbnRlcm5hbAkAzAgCCQCkAwEFEnByaWNlQXNzZXRJbnRlcm5hbAkAzAgCAhpvbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAUDbmlsBQNTRVABJWtleUFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQACQC5CQIJAMwIAgICJXMJAMwIAgIab25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQFA25pbAUDU0VQARNrZXlQb29sU3dhcERpc2FibGVkAQ5hc3NldHNJbnRlcm5hbAQLJHQwNDIzMjQyOTQFDmFzc2V0c0ludGVybmFsBBNhbW91bnRBc3NldEludGVybmFsCAULJHQwNDIzMjQyOTQCXzEEEnByaWNlQXNzZXRJbnRlcm5hbAgFCyR0MDQyMzI0Mjk0Al8yCQC5CQIJAMwIAgIGJWQlZCVzCQDMCAIJAKQDAQUTYW1vdW50QXNzZXRJbnRlcm5hbAkAzAgCCQCkAwEFEnByaWNlQXNzZXRJbnRlcm5hbAkAzAgCAgxzd2FwRGlzYWJsZWQFA25pbAUDU0VQARdrZXlBbGxQb29sc1N3YXBEaXNhYmxlZAAJALkJAgkAzAgCAgIlcwkAzAgCAgxzd2FwRGlzYWJsZWQFA25pbAUDU0VQAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEKbHBBc3NldFN0cgkArAICCQCsAgICCCVzJXMlc19fBQpscEFzc2V0U3RyAhhfX21hcHBpbmdzX19scEFzc2V0MlBvb2wBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwUYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgJfXwUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICHl9fbWFwcGluZ3NfX1Bvb2xBc3NldHMyTHBBc3NldAENa2V5UG9vbFNwcmVhZAELcG9vbEFkZHJlc3MJAKwCAgIOJXMlc19fc3ByZWFkX18FC3Bvb2xBZGRyZXNzASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiNfX21hcHBpbmdzX19wb29sQ29udHJhY3QyUG9vbEFzc2V0cwEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18JAKQDAQUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0AR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0ARNwb29sQ29udHJhY3RBZGRyZXNzCQCsAgIJAKwCAgIIJXMlcyVzX18FE3Bvb2xDb250cmFjdEFkZHJlc3MCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0ASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBCmxwQXNzZXRTdHIJAKwCAgkArAICAgglcyVzJXNfXwUKbHBBc3NldFN0cgIgX19tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QBDWtleVd4RW1pc3Npb24CDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkCQCsAgIJAKwCAgkArAICAhQlcyVzJXNfX3d4RW1pc3Npb25fXwUNYW1vdW50QXNzZXRJZAICX18FDHByaWNlQXNzZXRJZAEIa2V5SW5GZWUBC3Bvb2xBZGRyZXNzCQCsAgICDSVzJXNfX2luRmVlX18FC3Bvb2xBZGRyZXNzAQ9rZXlJbkZlZURlZmF1bHQAAhAlc19faW5GZWVEZWZhdWx0AQprZXlTd2FwRmVlAQtwb29sQWRkcmVzcwkArAICAg8lcyVzX19zd2FwRmVlX18FC3Bvb2xBZGRyZXNzAQlrZXlPdXRGZWUBC3Bvb2xBZGRyZXNzCQCsAgICDiVzJXNfX291dEZlZV9fBQtwb29sQWRkcmVzcwEQa2V5T3V0RmVlRGVmYXVsdAACESVzX19vdXRGZWVEZWZhdWx0ARxrZXlQb29sQXNzZXREZWZhdWx0TWluQW1vdW50AAkAuQkCCQDMCAICAiVzCQDMCAICGXBvb2xBc3NldERlZmF1bHRNaW5BbW91bnQFA25pbAUDU0VQARZrZXlQb29sQXNzZXRzTWluQW1vdW50AQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhJwb29sQXNzZXRNaW5BbW91bnQJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFmtleVNraXBPcmRlclZhbGlkYXRpb24BC3Bvb2xBZGRyZXNzCQCsAgICGyVzJXNfX3NraXBPcmRlclZhbGlkYXRpb25fXwULcG9vbEFkZHJlc3MBEWtleUNoYW5nZUFtcERlbGF5AQtwb29sQWRkcmVzcwkArAICAhYlcyVzX19jaGFuZ2VBbXBEZWxheV9fBQtwb29sQWRkcmVzcwERa2V5Q2hhbmdlQW1wRGVsdGEBC3Bvb2xBZGRyZXNzCQCsAgICFiVzJXNfX2NoYW5nZUFtcERlbHRhX18FC3Bvb2xBZGRyZXNzARJrZXlDaGFuZ2VBbXBUYXJnZXQBC3Bvb2xBZGRyZXNzCQCsAgICFyVzJXNfX2NoYW5nZUFtcFRhcmdldF9fBQtwb29sQWRkcmVzcwEVa2V5U1dhdmVzUHJveHlBZGRyZXNzAAIWJXNfX3NXYXZlc1Byb3h5QWRkcmVzcwEQa2V5U1dhdmVzQXNzZXRJZAACESVzX19zV2F2ZXNBc3NldElkARdrZXlTdGFraW5nUHJvZml0QWRkcmVzcwACGCVzX19zdGFraW5nUHJvZml0QWRkcmVzcwEOa2V5TGVhc2VkUmF0aW8CC3Bvb2xBZGRyZXNzB2Fzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILbGVhc2VkUmF0aW8JAMwIAgULcG9vbEFkZHJlc3MJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFWtleUxlYXNlZFJhdGlvRGVmYXVsdAEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgISbGVhc2VkUmF0aW9EZWZhdWx0CQDMCAIFB2Fzc2V0SWQFA25pbAUDU0VQARdrZXlMZWFzZWRSYXRpb1RvbGVyYW5jZQILcG9vbEFkZHJlc3MHYXNzZXRJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAhRsZWFzZWRSYXRpb1RvbGVyYW5jZQkAzAgCBQtwb29sQWRkcmVzcwkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAENa2V5TWluQmFsYW5jZQILcG9vbEFkZHJlc3MHYXNzZXRJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgptaW5CYWxhbmNlCQDMCAIFC3Bvb2xBZGRyZXNzCQDMCAIFB2Fzc2V0SWQFA25pbAUDU0VQARRrZXlNaW5CYWxhbmNlRGVmYXVsdAEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRbWluQmFsYW5jZURlZmF1bHQJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFWtleUFkZHJlc3NXaGl0ZWxpc3RlZAEHYWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgILd2hpdGVsaXN0ZWQJAMwIAgkApQgBBQdhZGRyZXNzBQNuaWwFA1NFUAEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkBEGdldEJvb2xlYW5PckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCbCAIFBHRoaXMFA2tleQkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FA2tleQEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQFC3dhdmVzU3RyaW5nBQR1bml0CQDZBAEFBWlucHV0ARxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzAAQHJG1hdGNoMAkAoggBCQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFzBQR0aGlzAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUGTVVMVDE4CQC2AgEFDW9yaWdTY2FsZU11bHQBB2Zyb21YMTgCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQZNVUxUMTgAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAABABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAAIAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAMAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAEABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAAUAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAGABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAcAFElkeEZhY3RvcnlDZmdEYW9EYXBwAAgAGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwAAkAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAAoAFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAACwEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABDmdldFByaWNlQXNzZXRzAAQHJG1hdGNoMAkAoggBCQEOa2V5UHJpY2VBc3NldHMAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAMJAAACCQCxAgEFAXMAAAUDbmlsCQC8CQIFAXMFA1NFUAUDbmlsARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkBCHRocm93RXJyAQIRUGVybWlzc2lvbiBkZW5pZWQACXRlc3RFcnJvcgkBCHRocm93RXJyAQIPVGVzdCBlcnJvciBoZXJlAQhtdXN0VGhpcwEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0CQEIbXVzdFRoaXMBBQFpCQACAQILTWF0Y2ggZXJyb3IBCWlzTWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawMJAAECBQckbWF0Y2gwAgRVbml0CQAAAggFAWkGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBEGRhdGFGYWN0b3J5Q2ZnVjMLDnN0YWtpbmdBZGRyZXNzD2Jvb3N0aW5nQWRkcmVzcwtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xpcHBhZ2VDb250cmFjdAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAkAuQkCCQDMCAICFiVzJXMlcyVzJXMlcyVzJXMlcyVzJXMJAMwIAgUOc3Rha2luZ0FkZHJlc3MJAMwIAgUPYm9vc3RpbmdBZGRyZXNzCQDMCAIFC2lkb0NvbnRyYWN0CQDMCAIFDHRlYW1Db250cmFjdAkAzAgCBRBlbWlzc2lvbkNvbnRyYWN0CQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBRBzbGlwcGFnZUNvbnRyYWN0CQDMCAIFC2Rhb0NvbnRyYWN0CQDMCAIFEW1hcmtldGluZ0NvbnRyYWN0CQDMCAIFEmd3eFJld2FyZHNDb250cmFjdAkAzAgCBQ1iaXJkc0NvbnRyYWN0BQNuaWwFA1NFUAEOZGF0YUZhY3RvcnlDZmcHDnN0YWtpbmdBZGRyZXNzD2Jvb3N0aW5nQWRkcmVzcwtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xpcHBhZ2VDb250cmFjdAkAuQkCCQDMCAICDCVzJXMlcyVzJXMlcwkAzAgCBQ5zdGFraW5nQWRkcmVzcwkAzAgCBQ9ib29zdGluZ0FkZHJlc3MJAMwIAgULaWRvQ29udHJhY3QJAMwIAgUMdGVhbUNvbnRyYWN0CQDMCAIFEGVtaXNzaW9uQ29udHJhY3QJAMwIAgUMcmVzdENvbnRyYWN0CQDMCAIFEHNsaXBwYWdlQ29udHJhY3QFA25pbAUDU0VQAQtkYXRhUG9vbENmZwsLcG9vbEFkZHJlc3MKcG9vbFN0YXR1cwlscEFzc2V0SWQOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0chNhbW91bnRBc3NldERlY2ltYWxzEnByaWNlQXNzZXREZWNpbWFscxVhbW91bnRBc3NldEludGVybmFsSWQUcHJpY2VBc3NldEludGVybmFsSWQPbHBBc3NldERlY2ltYWxzCHBvb2xUeXBlCQC5CQIJAMwIAgIWJXMlZCVzJXMlcyVkJWQlZCVkJWQlcwkAzAgCBQtwb29sQWRkcmVzcwkAzAgCBQpwb29sU3RhdHVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyCQDMCAIJAKQDAQUTYW1vdW50QXNzZXREZWNpbWFscwkAzAgCCQCkAwEFEnByaWNlQXNzZXREZWNpbWFscwkAzAgCCQCkAwEFFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAzAgCCQCkAwEFFHByaWNlQXNzZXRJbnRlcm5hbElkCQDMCAIJAKQDAQUPbHBBc3NldERlY2ltYWxzCQDMCAIFCHBvb2xUeXBlBQNuaWwFA1NFUAEVZGF0YU1hcHBpbmdQb29sQXNzZXRzAhZpbnRlcm5hbEFtb3VudEFzc2V0U3RyFWludGVybmFsUHJpY2VBc3NldFN0cgkAuQkCCQDMCAICBCVkJWQJAMwIAgkApAMBBRZpbnRlcm5hbEFtb3VudEFzc2V0U3RyCQDMCAIJAKQDAQUVaW50ZXJuYWxQcmljZUFzc2V0U3RyBQNuaWwFA1NFUAENZ2V0UG9vbENvbmZpZwELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIKYXNzZXRJZFN0cgtpbmNyZW1lbnRvcgQPaW50ZXJuYWxBc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKYXNzZXRJZFN0cgAABBhjdXJyZW50SW5kZXhPZkludGVybmFsSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAEBnJlc3VsdAMJAAACBQ9pbnRlcm5hbEFzc2V0SWQAAAQSbmV3SW50ZXJuYWxBc3NldElkCQBkAgUYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkBQtpbmNyZW1lbnRvcgkAlQoDBRJuZXdJbnRlcm5hbEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAUSbmV3SW50ZXJuYWxBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFCmFzc2V0SWRTdHIFEm5ld0ludGVybmFsQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAEFEm5ld0ludGVybmFsQXNzZXRJZAUKYXNzZXRJZFN0cgUDbmlsBgkAlQoDBQ9pbnRlcm5hbEFzc2V0SWQFA25pbAcFBnJlc3VsdAEJbXVzdEFkbWluAQFpBAhhZG1pblBLcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlBZG1pblB1YktleXMABQVFTVBUWQUDU0VQAwkBD2NvbnRhaW5zRWxlbWVudAIFCGFkbWluUEtzCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQYEAmNoCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFAmNoBQJjaAYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDA2tleQprZXlEZWZhdWx0DXZhbHVlRmFsbGJhY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCmtleURlZmF1bHQFDXZhbHVlRmFsbGJhY2sBEnBvb2xFeGlzdHNJbnRlcm5hbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJ8IAQkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQ1hbW91bnRBc3NldElkBBJwcmljZUFzc2V0SW50ZXJuYWwJAJ8IAQkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQxwcmljZUFzc2V0SWQDAwkAAAIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFBHVuaXQGCQAAAgUScHJpY2VBc3NldEludGVybmFsBQR1bml0BwQEYW1BcwkApAMBCQEFdmFsdWUBBRNhbW91bnRBc3NldEludGVybmFsBARwckFzCQCkAwEJAQV2YWx1ZQEFEnByaWNlQXNzZXRJbnRlcm5hbAQDY2ZnCQCiCAEJAQ1rZXlQb29sQ29uZmlnAgUEYW1BcwUEcHJBcwQKY2ZnUmV2ZXJzZQkAoggBCQENa2V5UG9vbENvbmZpZwIFBHByQXMFBGFtQXMEBmV4aXN0cwMJAQIhPQIFA2NmZwUEdW5pdAYJAQIhPQIFCmNmZ1JldmVyc2UFBHVuaXQFBmV4aXN0cwEcZ2V0QXNzZXRzRGF0YUZyb21Qb29sQWRkcmVzcwETcG9vbENvbnRyYWN0QWRkcmVzcwQKcG9vbEFzc2V0cwQHJG1hdGNoMAkAoggBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBRNwb29sQ29udHJhY3RBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAJAQh0aHJvd0VycgEJALkJAgkAzAgCBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAICEXBvb2wgaXMgbm90IGZvdW5kBQNuaWwCASAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQXNzZXRzAAEEEnByaWNlQXNzZXRJbnRlcm5hbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xBc3NldHMAAgQNYW1vdW50QXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQBBRNhbW91bnRBc3NldEludGVybmFsBAxwcmljZUFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAR9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAQUScHJpY2VBc3NldEludGVybmFsBAlscEFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwkAlwoFBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQFCWxwQXNzZXRJZAUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsAQ5nZXRQb29sQ3JlYXRvcgETcG9vbENvbnRyYWN0QWRkcmVzcwQNJHQwMTYyNjIxNjM5OQkBHGdldEFzc2V0c0RhdGFGcm9tUG9vbEFkZHJlc3MBBRNwb29sQ29udHJhY3RBZGRyZXNzBA1hbW91bnRBc3NldElkCAUNJHQwMTYyNjIxNjM5OQJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTYyNjIxNjM5OQJfMgQJbHBBc3NldElkCAUNJHQwMTYyNjIxNjM5OQJfMwQTYW1vdW50QXNzZXRJbnRlcm5hbAgFDSR0MDE2MjYyMTYzOTkCXzQEEnByaWNlQXNzZXRJbnRlcm5hbAgFDSR0MDE2MjYyMTYzOTkCXzUEEXVzZXJQb29sc0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUa2V5VXNlclBvb2xzQ29udHJhY3QABAtwb29sQ3JlYXRvcgkA/AcEBRF1c2VyUG9vbHNDb250cmFjdAIWZ2V0UG9vbENyZWF0b3JSRUFET05MWQkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQNuaWwFC3Bvb2xDcmVhdG9yARFnZXRBZGRyZXNzQmFsYW5jZQINYWRkcmVzc1N0cmluZw1hc3NldElkU3RyaW5nBAdhZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1hZGRyZXNzU3RyaW5nAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTCAkA7wcBBQdhZGRyZXNzB3JlZ3VsYXIEB2Fzc2V0SWQJANkEAQUNYXNzZXRJZFN0cmluZwkA8AcCBQdhZGRyZXNzBQdhc3NldElkAQtpc1Bvb2xFbXB0eQETcG9vbENvbnRyYWN0QWRkcmVzcwQNJHQwMTY5NzQxNzExMQkBHGdldEFzc2V0c0RhdGFGcm9tUG9vbEFkZHJlc3MBBRNwb29sQ29udHJhY3RBZGRyZXNzBA1hbW91bnRBc3NldElkCAUNJHQwMTY5NzQxNzExMQJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTY5NzQxNzExMQJfMgQJbHBBc3NldElkCAUNJHQwMTY5NzQxNzExMQJfMwQTYW1vdW50QXNzZXRJbnRlcm5hbAgFDSR0MDE2OTc0MTcxMTECXzQEEnByaWNlQXNzZXRJbnRlcm5hbAgFDSR0MDE2OTc0MTcxMTECXzUDCQAAAgkBEWdldEFkZHJlc3NCYWxhbmNlAgUTcG9vbENvbnRyYWN0QWRkcmVzcwUNYW1vdW50QXNzZXRJZAAACQAAAgkBEWdldEFkZHJlc3NCYWxhbmNlAgUTcG9vbENvbnRyYWN0QWRkcmVzcwUMcHJpY2VBc3NldElkAAAHJQFpARdnZXRTd2FwQ29udHJhY3RSRUFET05MWQAJAJQKAgUDbmlsCQEPZ2V0U3RyaW5nT3JGYWlsAQkBDHN3YXBDb250cmFjdAABaQEaZ2V0UG9vbExlYXNlQ29uZmlnUkVBRE9OTFkCC3Bvb2xBZGRyZXNzB2Fzc2V0SWQEDSR0MDE3NDI2MTc3MzAEByRtYXRjaDAJAJoIAgUEdGhpcwkBDmtleUxlYXNlZFJhdGlvAgULcG9vbEFkZHJlc3MFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFyBQckbWF0Y2gwCQCUCgIGCQCXAwEJAMwIAgBkCQDMCAIJAJYDAQkAzAgCAAAJAMwIAgUBcgUDbmlsBQNuaWwEByRtYXRjaDEJAJoIAgUEdGhpcwkBFWtleUxlYXNlZFJhdGlvRGVmYXVsdAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMQIDSW50BAJyZAUHJG1hdGNoMQkAlAoCBgkAlwMBCQDMCAIAZAkAzAgCCQCWAwEJAMwIAgAACQDMCAIFAnJkBQNuaWwFA25pbAkAlAoCBwAABAppc0xlYXNhYmxlCAUNJHQwMTc0MjYxNzczMAJfMQQLbGVhc2VkUmF0aW8IBQ0kdDAxNzQyNjE3NzMwAl8yBAptaW5CYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAQ1rZXlNaW5CYWxhbmNlAgULcG9vbEFkZHJlc3MFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwCQCWAwEJAMwIAgAACQDMCAIFAWIFA25pbAQHJG1hdGNoMQkAmggCBQR0aGlzCQEUa2V5TWluQmFsYW5jZURlZmF1bHQBBQdhc3NldElkAwkAAQIFByRtYXRjaDECA0ludAQCYmQFByRtYXRjaDEJAJYDAQkAzAgCAAAJAMwIAgUCYmQFA25pbAAABA0kdDAxNzk5NjE4MjIwAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCQCVCgMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFWtleVNXYXZlc1Byb3h5QWRkcmVzcwACAAkAnQgCBQR0aGlzCQELdmFsdWVPckVsc2UCCQEQa2V5U1dhdmVzQXNzZXRJZAACAAUGTVVMVDEyCQCVCgMCAAIAAAAEDHByb3h5QWRkcmVzcwgFDSR0MDE3OTk2MTgyMjACXzEEDHByb3h5QXNzZXRJZAgFDSR0MDE3OTk2MTgyMjACXzIEDHByb3h5UmF0ZU11bAgFDSR0MDE3OTk2MTgyMjACXzMEFHN0YWtpbmdQcm9maXRBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARdrZXlTdGFraW5nUHJvZml0QWRkcmVzcwACAAkAlAoCBQNuaWwJAJkKBwUKaXNMZWFzYWJsZQULbGVhc2VkUmF0aW8FCm1pbkJhbGFuY2UFDHByb3h5QWRkcmVzcwUMcHJveHlBc3NldElkBQxwcm94eVJhdGVNdWwFFHN0YWtpbmdQcm9maXRBZGRyZXNzAWkBIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZAgZhc3NldDEGYXNzZXQyAwMJAAACBQZhc3NldDECLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTCQAAAgUGYXNzZXQyAgVXQVZFUwcJAJQKAgUDbmlsBQR1bml0BAlhc3NldE51bTEJAQV2YWx1ZQEJAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQZhc3NldDEECWFzc2V0TnVtMgkBBXZhbHVlAQkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFBmFzc2V0MgQCZWUJAJ0IAgUEdGhpcwkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBQlhc3NldE51bTEJAKQDAQUJYXNzZXROdW0yBANyZXMDCQAAAgUCZWUFBHVuaXQFBHVuaXQJALACAgkBBXZhbHVlAQUCZWUABAkAlAoCBQNuaWwFA3JlcwFpASFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkBAmxwCQCUCgIFA25pbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUCbHACAAFpAQtjb25zdHJ1Y3RvcggPc3Rha2luZ0NvbnRyYWN0EGJvb3N0aW5nQ29udHJhY3QLaWRvQ29udHJhY3QMdGVhbUNvbnRyYWN0EGVtaXNzaW9uQ29udHJhY3QMcmVzdENvbnRyYWN0EHNscGlwYWdlQ29udHJhY3QNcHJpY2VEZWNpbWFscwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlGYWN0b3J5Q29uZmlnAAkBDmRhdGFGYWN0b3J5Q2ZnBwUPc3Rha2luZ0NvbnRyYWN0BRBib29zdGluZ0NvbnRyYWN0BQtpZG9Db250cmFjdAUMdGVhbUNvbnRyYWN0BRBlbWlzc2lvbkNvbnRyYWN0BQxyZXN0Q29udHJhY3QFEHNscGlwYWdlQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlQcmljZURlY2ltYWxzAAUNcHJpY2VEZWNpbWFscwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIBEG1hdGhjaGVyUHViNThTdHIEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQKbWF0aGNlclB1YgkApwgBCQDZBAEFEG1hdGhjaGVyUHViNThTdHIDCQAAAgUKbWF0aGNlclB1YgUKbWF0aGNlclB1YgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TWF0Y2hlclB1YgAFEG1hdGhjaGVyUHViNThTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclYzBAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RmFjdG9yeUNvbmZpZwAJARBkYXRhRmFjdG9yeUNmZ1YzCwkAkQMCBQpmYWN0b3J5Q2ZnAAEJAJEDAgUKZmFjdG9yeUNmZwACCQCRAwIFCmZhY3RvcnlDZmcAAwkAkQMCBQpmYWN0b3J5Q2ZnAAQJAJEDAgUKZmFjdG9yeUNmZwAFCQCRAwIFCmZhY3RvcnlDZmcABgkAkQMCBQpmYWN0b3J5Q2ZnAAcFC2Rhb0NvbnRyYWN0BRFtYXJrZXRpbmdDb250cmFjdAUSZ3d4UmV3YXJkc0NvbnRyYWN0BQ1iaXJkc0NvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNAIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0C2xlZ2FjeVBvb2xzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGVnYWN5UG9vbHMACQC5CQIFC2xlZ2FjeVBvb2xzBQNTRVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclY1ARNhc3NldHNTdG9yZUNvbnRyYWN0BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABRNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNgIWdm90aW5nRW1pc3Npb25Db250cmFjdAtwcmljZUFzc2V0cwQFY2hla3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkBAiE9AgkApggBBRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQR1bml0BgIoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwUDbmlsAwkAAAIFBWNoZWtzBQVjaGVrcwkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVByaWNlQXNzZXRzAAkAuQkCBQtwcmljZUFzc2V0cwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc2V0QWRtaW5zAQxhZG1pblB1YktleXMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5QWRtaW5QdWJLZXlzAAkAuQkCBQxhZG1pblB1YktleXMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD2FjdGl2YXRlTmV3UG9vbAgLcG9vbEFkZHJlc3MOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0cgtscEFzc2V0TmFtZQxscEFzc2V0RGVzY3IKcG9vbFdlaWdodAhwb29sVHlwZQRsb2dvBAtjaGVja0NhbGxlcgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyAwkBCWlzRGVmaW5lZAEJAKIIAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MJAQh0aHJvd0VycgEJAKwCAgkArAICAg1Qb29sIGFkZHJlc3MgBQtwb29sQWRkcmVzcwIUIGFscmVhZHkgcmVnaXN0ZXJlZC4EF2ludGVybmFsQW1vdW50QXNzZXREYXRhCQEaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUCBQ5hbW91bnRBc3NldFN0cgABBBVpbnRlcm5hbEFtb3VudEFzc2V0SWQIBRdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQJfMQQWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQkBGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAgUNcHJpY2VBc3NldFN0cgMIBRdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQJfMwACAAEEFGludGVybmFsUHJpY2VBc3NldElkCAUWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQJfMQQVcG9vbEFjY291bnRTY3JpcHRIYXNoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAPEHAQkBEUBleHRyTmF0aXZlKDEwNjIpAQULcG9vbEFkZHJlc3MJAKwCAgIpTm8gc2NyaXB0IGhhcyBiZWVuIGZvdW5kIG9uIHBvb2wgYWNjb3VudCAFC3Bvb2xBZGRyZXNzBBxldGhhbG9uUG9vbEFjY291bnRTY3JpcHRIYXNoCQERQGV4dHJOYXRpdmUoMTA1NykBCQERa2V5UG9vbFNjcmlwdEhhc2gABApwb29sRXhpc3RzCQEScG9vbEV4aXN0c0ludGVybmFsAgUOYW1vdW50QXNzZXRTdHIFDXByaWNlQXNzZXRTdHIDBQpwb29sRXhpc3RzCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgkArAICCQCsAgICBVBvb2wgBQ5hbW91bnRBc3NldFN0cgIBLwUNcHJpY2VBc3NldFN0cgIcIGhhcyBhbHJlYWR5IGJlZW4gYWN0aXZhdGVkLgQPcG9vbENvbmZpZ1ZhbHVlCQEFdmFsdWUBCQCdCAIFBHRoaXMJAQ1rZXlQb29sQ29uZmlnAgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQEFGFtb3VudEFzc2V0c0RlY2ltYWxzAwkAAAIFDmFtb3VudEFzc2V0U3RyAgVXQVZFUwURZGVjaW1hbHNNdWx0UHJpY2UJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQ5hbW91bnRBc3NldFN0cghkZWNpbWFscwAAAAAFBERPV04EE3ByaWNlQXNzZXRzRGVjaW1hbHMDCQAAAgUNcHJpY2VBc3NldFN0cgIFV0FWRVMFEWRlY2ltYWxzTXVsdFByaWNlCQBsBgAKAAAICQEFdmFsdWUBCQDsBwEJANkEAQUNcHJpY2VBc3NldFN0cghkZWNpbWFscwAAAAAFBERPV04EEmxwQXNzZXRJc3N1ZUFjdGlvbgkAwggFBQtscEFzc2V0TmFtZQUMbHBBc3NldERlc2NyAAEACAYECWxwQXNzZXRJZAkAuAgBBRJscEFzc2V0SXNzdWVBY3Rpb24EDGxwQXNzZXRJZFN0cgkA2AQBBQlscEFzc2V0SWQEGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQtwb29sQWRkcmVzcwIIYWN0aXZhdGUJAMwIAgUOYW1vdW50QXNzZXRTdHIJAMwIAgUNcHJpY2VBc3NldFN0cgUDbmlsBQNuaWwDCQAAAgUYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0BRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQDCQECIT0CBRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQCB3N1Y2Nlc3MJAQh0aHJvd0VycgECI1Bvb2wgaW5pdGlhbGlzYXRpb24gZXJyb3IgaGFwcGVuZWQuBBNhc3NldHNTdG9yZUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABBhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIOY3JlYXRlT3JVcGRhdGUJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFC2xwQXNzZXROYW1lCQDMCAIHBQNuaWwFA25pbAMJAAACBRhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYFGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgQSYWRkUG9vbHNMcExhYmVsSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCCGFkZExhYmVsCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQxsYWJlbFBvb2xzTHAFA25pbAUDbmlsAwkAAAIFEmFkZFBvb2xzTHBMYWJlbEludgUSYWRkUG9vbHNMcExhYmVsSW52BApzZXRMb2dvSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCB3NldExvZ28JAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFBGxvZ28FA25pbAUDbmlsAwkAAAIFCnNldExvZ29JbnYFCnNldExvZ29JbnYEEGFkZEFzc2V0c0xpbmtJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAINYWRkQXNzZXRzTGluawkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNuaWwDCQAAAgUQYWRkQXNzZXRzTGlua0ludgUQYWRkQXNzZXRzTGlua0ludgQbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCGGluY3JlYXNlQXNzZXRQb29sc051bWJlcgkAzAgCBQ5hbW91bnRBc3NldFN0cgUDbmlsBQNuaWwDCQAAAgUbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52BRtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYJAJQKAgkAzggCCQDOCAIIBRdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQJfMggFFmludGVybmFsUHJpY2VBc3NldERhdGECXzIJAMwIAgUSbHBBc3NldElzc3VlQWN0aW9uCQDMCAIJAQRCdXJuAgUJbHBBc3NldElkAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkBC2RhdGFQb29sQ2ZnCwULcG9vbEFkZHJlc3MJAKQDAQUKUG9vbEFjdGl2ZQUMbHBBc3NldElkU3RyBQ5hbW91bnRBc3NldFN0cgUNcHJpY2VBc3NldFN0cgUUYW1vdW50QXNzZXRzRGVjaW1hbHMFE3ByaWNlQXNzZXRzRGVjaW1hbHMFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQFEWRlY2ltYWxzTXVsdFByaWNlBQhwb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMBBQxscEFzc2V0SWRTdHIJARVkYXRhTWFwcGluZ1Bvb2xBc3NldHMCBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQCsAgICBCVzX18FDGxwQXNzZXRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwkBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAgUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAULcG9vbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFDGxwQXNzZXRJZFN0cgULcG9vbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQtwb29sQWRkcmVzcwUMbHBBc3NldElkU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UG9vbFRvV2VpZ2h0AQULcG9vbEFkZHJlc3MFCnBvb2xXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlQb29sU3ByZWFkAQULcG9vbEFkZHJlc3MFDWRlZmF1bHRTcHJlYWQFA25pbAUMbHBBc3NldElkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCm1hbmFnZVBvb2wCC3Bvb2xBZGRyZXNzCW5ld1N0YXR1cwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBApwb29sU3RhdHVzCQCRAwIFCnBvb2xDb25maWcFDWlkeFBvb2xTdGF0dXMEDGxwQXNzZXRJZFN0cgkAkQMCBQpwb29sQ29uZmlnBRBpZHhQb29sTFBBc3NldElkBA5hbW91bnRBc3NldFN0cgkAkQMCBQpwb29sQ29uZmlnBQ1pZHhBbXRBc3NldElkBA1wcmljZUFzc2V0U3RyCQCRAwIFCnBvb2xDb25maWcFD2lkeFByaWNlQXNzZXRJZAQUYW1vdW50QXNzZXRzRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhBbXRBc3NldERjbQQTcHJpY2VBc3NldHNEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeFByaWNlQXNzZXREY20EFWludGVybmFsQW1vdW50QXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeElBbXRBc3NldElkBBRpbnRlcm5hbFByaWNlQXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeElQcmljZUFzc2V0SWQECmxwQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhMUEFzc2V0RGNtBAhwb29sVHlwZQkAkQMCBQpwb29sQ29uZmlnBQtpZHhQb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQELZGF0YVBvb2xDZmcLBQtwb29sQWRkcmVzcwkApAMBBQluZXdTdGF0dXMFDGxwQXNzZXRJZFN0cgUOYW1vdW50QXNzZXRTdHIFDXByaWNlQXNzZXRTdHIFFGFtb3VudEFzc2V0c0RlY2ltYWxzBRNwcmljZUFzc2V0c0RlY2ltYWxzBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkBQpscEFzc2V0RGNtBQhwb29sVHlwZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGVtaXQBDGFtb3VudFRvRW1pdAQGY2FsbGVyCAUBaQZjYWxsZXIEDG9yaWdpbkNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBBBscEFzc2V0UmVxdWVzdGVkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQClCAEFBmNhbGxlcgIdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4EB2xwQXNzZXQJANkEAQUQbHBBc3NldFJlcXVlc3RlZAQLbGVnYWN5UG9vbHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEOa2V5TGVnYWN5UG9vbHMABQVFTVBUWQUDU0VQBBVsZWdhY3lGYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAIoTGVnYWN5IGZhY3RvcnkgY29udHJhY3QgZG9lcyBub3QgZXhpc3RzLgMJAGcCAAAFDGFtb3VudFRvRW1pdAUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFC2xlZ2FjeVBvb2xzCQClCAEFBmNhbGxlcgkAlAoCBQNuaWwFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAlAoCCQDMCAIJAQdSZWlzc3VlAwUHbHBBc3NldAUMYW1vdW50VG9FbWl0BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDGFtb3VudFRvRW1pdAUHbHBBc3NldAUDbmlsAgdzdWNjZXNzAWkBBGJ1cm4BDGFtb3VudFRvQnVybgQGY2FsbGVyCAUBaQZjYWxsZXIEDG9yaWdpbkNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDXBheW1lbnRBbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAQPaW5BbW91bnRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQEGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQClCAEFBmNhbGxlcgIdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4DCQECIT0CBQ9pbkFtb3VudEFzc2V0SWQFGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQEIdGhyb3dFcnIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4DCQECIT0CBQxhbW91bnRUb0J1cm4FDXBheW1lbnRBbW91bnQJAQh0aHJvd0VycgECFkludmFsaWQgYW1vdW50IHBhc3NlZC4EB2xwQXNzZXQJANkEAQUabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAJQKAgkAzAgCCQEEQnVybgIFB2xwQXNzZXQFDGFtb3VudFRvQnVybgUDbmlsAgdzdWNjZXNzAWkBDG1vZGlmeVdlaWdodAIJbHBBc3NldElkBXNoYXJlBAtjaGVja0NhbGxlcgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAgAGCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQTcG9vbENvbnRyYWN0QWRkcmVzcwkBD2dldFN0cmluZ09yRmFpbAEJASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQlscEFzc2V0SWQEDXBvb2xXZWlnaHRLZXkJAQ9rZXlQb29sVG9XZWlnaHQBBRNwb29sQ29udHJhY3RBZGRyZXNzBAxnd3hXZWlnaHRLZXkJAQ9rZXlQb29sVG9XZWlnaHQBBQ5HV1h2aXJ0dWFsUE9PTAQJZ3d4V2VpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEFDGd3eFdlaWdodEtleQAABApwb29sV2VpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEFDXBvb2xXZWlnaHRLZXkAAAQNcG9vbFdlaWdodE5ldwUFc2hhcmUECmZhY3RvcnlDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQBA9zdGFraW5nQ29udHJhY3QJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcEEW9uTW9kaWZ5V2VpZ2h0SW52CQD8BwQFD3N0YWtpbmdDb250cmFjdAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUJbHBBc3NldElkCQDMCAIFE3Bvb2xDb250cmFjdEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFEW9uTW9kaWZ5V2VpZ2h0SW52BRFvbk1vZGlmeVdlaWdodEludgQVZ3d4VmlydHVhbFBvb2xBY3Rpb25zAwkAAAIFCWd3eFdlaWdodAAABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFDGd3eFdlaWdodEtleQAABQNuaWwEFHBvb2xXZWlnaHRIaXN0b3J5S2V5CQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFE3Bvb2xDb250cmFjdEFkZHJlc3MAAAQXcG9vbFdlaWdodEhpc3RvcnlPclVuaXQJAJ8IAQUUcG9vbFdlaWdodEhpc3RvcnlLZXkEGHBvb2xXZWlnaHRIaXN0b3J5QWN0aW9ucwMJAAACBRdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAUEdW5pdAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFFHBvb2xXZWlnaHRIaXN0b3J5S2V5BQNuaWwJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1wb29sV2VpZ2h0S2V5BQ1wb29sV2VpZ2h0TmV3BQNuaWwFFWd3eFZpcnR1YWxQb29sQWN0aW9ucwUYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDW1vZGlmeVdlaWdodHMEDmJ0Y1Bvb2xBZGRyZXNzDmV0aFBvb2xBZGRyZXNzEWV0aEJ0Y1Bvb2xBZGRyZXNzE3VzZGNVc2R0UG9vbEFkZHJlc3MEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQPZXRoQnRjV2VpZ2h0TmV3CQBpAgkAaAIABQUOUE9PTFdFSUdIVE1VTFQAZAQRdXNkY1VzZHRXZWlnaHROZXcJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBA93ZWlnaHREZWNyZW1lbnQJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAQLc3Rha2luZ0RhcHAJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcEDWd3eFJld2FyZERhcHAJARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQMYnRjV2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQUOYnRjUG9vbEFkZHJlc3MEDGV0aFdlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFDmV0aFBvb2xBZGRyZXNzBA9ldGhCdGNXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBRFldGhCdGNQb29sQWRkcmVzcwQRdXNkY1VzZHRXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBRN1c2RjVXNkdFBvb2xBZGRyZXNzBAlidGNXZWlnaHQJAQxnZXRJbnRPckZhaWwBBQxidGNXZWlnaHRLRVkECWV0aFdlaWdodAkBDGdldEludE9yRmFpbAEFDGV0aFdlaWdodEtFWQQMYnRjV2VpZ2h0TmV3CQBlAgUJYnRjV2VpZ2h0BQ93ZWlnaHREZWNyZW1lbnQEDGV0aFdlaWdodE5ldwkAZQIFCWV0aFdlaWdodAUPd2VpZ2h0RGVjcmVtZW50AwkAZwIAAAUMYnRjV2VpZ2h0TmV3CQEIdGhyb3dFcnIBCQCsAgICFmludmFsaWQgYnRjV2VpZ2h0TmV3OiAJAKQDAQUMYnRjV2VpZ2h0TmV3AwkAZwIAAAUMZXRoV2VpZ2h0TmV3CQEIdGhyb3dFcnIBCQCsAgICFmludmFsaWQgZXRoV2VpZ2h0TmV3OiAJAKQDAQUMZXRoV2VpZ2h0TmV3BA9idGNMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFDmJ0Y1Bvb2xBZGRyZXNzBA9ldGhMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFDmV0aFBvb2xBZGRyZXNzBBJldGhCdGNMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFEWV0aEJ0Y1Bvb2xBZGRyZXNzBBR1c2RjVXNkdExwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTdXNkY1VzZHRQb29sQWRkcmVzcwQRb25Nb2RpZnlXZWlnaHRCdGMJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFD2J0Y0xwQXNzZXRJZFN0cgkAzAgCBQ5idGNQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRCdGMFEW9uTW9kaWZ5V2VpZ2h0QnRjBBFvbk1vZGlmeVdlaWdodEV0aAkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUPZXRoTHBBc3NldElkU3RyCQDMCAIFDmV0aFBvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRFvbk1vZGlmeVdlaWdodEV0aAURb25Nb2RpZnlXZWlnaHRFdGgEFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjCQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBRJldGhCdGNMcEFzc2V0SWRTdHIJAMwIAgURZXRoQnRjUG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjBRRvbk1vZGlmeVdlaWdodEV0aEJ0YwQWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdAkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUUdXNkY1VzZHRMcEFzc2V0SWRTdHIJAMwIAgUTdXNkY1VzZHRQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdAUWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMYnRjV2VpZ2h0S0VZBQxidGNXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFDGV0aFdlaWdodEtFWQUMZXRoV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9ldGhCdGNXZWlnaHRLRVkFD2V0aEJ0Y1dlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgURdXNkY1VzZHRXZWlnaHRLRVkFEXVzZGNVc2R0V2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFDmJ0Y1Bvb2xBZGRyZXNzAAAFCWJ0Y1dlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBQ5ldGhQb29sQWRkcmVzcwAABQlldGhXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgURZXRoQnRjUG9vbEFkZHJlc3MAAAUPZXRoQnRjV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFE3VzZGNVc2R0UG9vbEFkZHJlc3MAAAURdXNkY1VzZHRXZWlnaHROZXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAloYXZlTGFiZWwEByRtYXRjaDAJAKAIAQkBDWtleVd4RW1pc3Npb24CBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcJAJQKAgUDbmlsBQloYXZlTGFiZWwBaQEWc2V0V3hFbWlzc2lvblBvb2xMYWJlbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEC2NoZWNrQ2FsbGVyCQEJbXVzdEFkbWluAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDWtleVd4RW1pc3Npb24CBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQGBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZZGVsZXRlV3hFbWlzc2lvblBvb2xMYWJlbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEC2NoZWNrQ2FsbGVyAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQltdXN0QWRtaW4BBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESb25WZXJpZmljYXRpb25Mb3NzAQdhc3NldElkBAtjaGVja0NhbGxlcgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAAgAGCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLcHJpY2VBc3NldHMJAQ5nZXRQcmljZUFzc2V0cwAEFGNoZWNrUHJpY2VBc3NldHNTaXplAwkAZgIJAJADAQULcHJpY2VBc3NldHMAAAYJAQh0aHJvd0VycgECFGludmFsaWQgcHJpY2UgYXNzZXRzAwkAAAIFFGNoZWNrUHJpY2VBc3NldHNTaXplBRRjaGVja1ByaWNlQXNzZXRzU2l6ZQoBAmNiAgNhY2MKcHJpY2VBc3NldAQBcgkA/AcEBQR0aGlzAhlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFB2Fzc2V0SWQJAMwIAgUKcHJpY2VBc3NldAUDbmlsBQNuaWwDCQAAAgUBcgUBcgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQHYWN0aW9ucwoAAiRsBQtwcmljZUFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFBHVuaXQKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAmNiAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAwkAAAIFB2FjdGlvbnMFB2FjdGlvbnMJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBA5hc3NldHNJbnRlcm5hbAkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4SUFtdEFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhJUHJpY2VBc3NldElkBB5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBIWtleVBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAEFDmFzc2V0c0ludGVybmFsBwQiYWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAAHCQCUCgIFA25pbAMFImFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQGBR5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQBaQEaaXNQb29sU3dhcERpc2FibGVkUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBA5hc3NldHNJbnRlcm5hbAkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4SUFtdEFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhJUHJpY2VBc3NldElkBBBwb29sU3dhcERpc2FibGVkCQELdmFsdWVPckVsc2UCCQCgCAEJARNrZXlQb29sU3dhcERpc2FibGVkAQUOYXNzZXRzSW50ZXJuYWwHBBRhbGxQb29sc1N3YXBEaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEXa2V5QWxsUG9vbHNTd2FwRGlzYWJsZWQABwkAlAoCBQNuaWwDBRRhbGxQb29sc1N3YXBEaXNhYmxlZAYFEHBvb2xTd2FwRGlzYWJsZWQBaQEQZ2V0SW5GZWVSRUFET05MWQELcG9vbEFkZHJlc3MEA2ZlZQkBFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDCQEIa2V5SW5GZWUBBQtwb29sQWRkcmVzcwkBD2tleUluRmVlRGVmYXVsdAAAAAkAlAoCBQNuaWwFA2ZlZQFpARFnZXRPdXRGZWVSRUFET05MWQELcG9vbEFkZHJlc3MEA2ZlZQkBFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDCQEJa2V5T3V0RmVlAQULcG9vbEFkZHJlc3MJARBrZXlPdXRGZWVEZWZhdWx0AAkAawMACgUFTVVMVDgAkE4JAJQKAgUDbmlsBQNmZWUBaQESZ2V0U3dhcEZlZVJFQURPTkxZAQ5wb29sQWRkcmVzc1N0cgQJZmVlT3B0aW9uBAckbWF0Y2gwCQCdCAIFBHRoaXMJAQprZXlTd2FwRmVlAQUOcG9vbEFkZHJlc3NTdHIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBAVwYXJ0cwkAtQkCBQFzBQNTRVAEB3Bvb2xGZWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABBAtwcm90b2NvbEZlZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAIJAJQKAgUHcG9vbEZlZQULcHJvdG9jb2xGZWUDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yCQCUCgIFA25pbAUJZmVlT3B0aW9uAWkBEHBvb2xJbmZvUkVBRE9OTFkCEGFtb3VudEFzc2V0SWRTdHIPcHJpY2VBc3NldElkU3RyBBthbW91bnRBc3NldEludGVybmFsSWRPcHRpb24JAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBRBhbW91bnRBc3NldElkU3RyBBpwcmljZUFzc2V0SW50ZXJuYWxJZE9wdGlvbgkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFD3ByaWNlQXNzZXRJZFN0cgQZcG9vbENvbnRyYWN0QWRkcmVzc09wdGlvbgkAnQgCBQR0aGlzCQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCCQEFdmFsdWUBBRthbW91bnRBc3NldEludGVybmFsSWRPcHRpb24JAQV2YWx1ZQEFGnByaWNlQXNzZXRJbnRlcm5hbElkT3B0aW9uBA9scEFzc2V0SWRPcHRpb24JAJ0IAgUEdGhpcwkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQEFdmFsdWUBBRlwb29sQ29udHJhY3RBZGRyZXNzT3B0aW9uBApwb29sRXhpc3RzAwMJAQlpc0RlZmluZWQBBRthbW91bnRBc3NldEludGVybmFsSWRPcHRpb24JAQlpc0RlZmluZWQBBRpwcmljZUFzc2V0SW50ZXJuYWxJZE9wdGlvbgcJAQlpc0RlZmluZWQBBRlwb29sQ29udHJhY3RBZGRyZXNzT3B0aW9uBwQIcG9vbEluZm8DBQpwb29sRXhpc3RzCQCUCgIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFGXBvb2xDb250cmFjdEFkZHJlc3NPcHRpb24JAQxwYXJzZUFzc2V0SWQBCQEFdmFsdWUBBQ9scEFzc2V0SWRPcHRpb24FBHVuaXQJAJQKAgUDbmlsBQhwb29sSW5mbwFpARVnZXRQb29sU3RhdHVzUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQXNzZXRzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwFpARVnZXRQb29sQ29uZmlnUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQXNzZXRzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAUDY2ZnAWkBIGdldFBvb2xDb25maWdCeUxwQXNzZXRJZFJFQURPTkxZAQxscEFzc2V0SWRTdHIECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFDGxwQXNzZXRJZFN0cgUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAUDY2ZnAWkBEnBvb2xFeGlzdHNSRUFET05MWQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAJQKAgUDbmlsCQEScG9vbEV4aXN0c0ludGVybmFsAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkAWkBG3NraXBPcmRlclZhbGlkYXRpb25SRUFET05MWQELcG9vbEFkZHJlc3MJAJQKAgUDbmlsCQELdmFsdWVPckVsc2UCCQCgCAEJARZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uAQULcG9vbEFkZHJlc3MHAWkBGmdldENoYW5nZUFtcENvbmZpZ1JFQURPTkxZAQtwb29sQWRkcmVzcwQFZGVsYXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARFrZXlDaGFuZ2VBbXBEZWxheQEFC3Bvb2xBZGRyZXNzBAVkZWx0YQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEWtleUNoYW5nZUFtcERlbHRhAQULcG9vbEFkZHJlc3MEBnRhcmdldAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEmtleUNoYW5nZUFtcFRhcmdldAEFC3Bvb2xBZGRyZXNzCQCUCgIFA25pbAkAzAgCBQVkZWxheQkAzAgCBQVkZWx0YQkAzAgCBQZ0YXJnZXQFA25pbAFpARVnZXRQb29sV2VpZ2h0UkVBRE9OTFkBCWxwQXNzZXRJZAQLcG9vbEFkZHJlc3MJAQ9nZXRTdHJpbmdPckZhaWwBCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkBAZ3ZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2tleVBvb2xUb1dlaWdodAEFC3Bvb2xBZGRyZXNzAAAJAJQKAgUDbmlsBQZ3ZWlnaHQBaQEKZGVsZXRlUG9vbAETcG9vbENvbnRyYWN0QWRkcmVzcwQKcG9vbENvbmZpZwkBDWdldFBvb2xDb25maWcBBRNwb29sQ29udHJhY3RBZGRyZXNzBAtjaGVja0NhbGxlcgkAzAgCAwMJAQlpc01hbmFnZXIBBQFpBgMJAAACCQClCAEIBQFpBmNhbGxlcgkBDmdldFBvb2xDcmVhdG9yAQUTcG9vbENvbnRyYWN0QWRkcmVzcwkBC2lzUG9vbEVtcHR5AQUTcG9vbENvbnRyYWN0QWRkcmVzcwcGCQEIdGhyb3dFcnIBAhFQb29sIGlzIG5vdCBlbXB0eQUDbmlsAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLY2hlY2tXZWlnaHQDCQAAAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5UG9vbFRvV2VpZ2h0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwAAAAAGCQEIdGhyb3dFcnIBAhdQb29sIHdlaWdodCBpcyBub3QgWmVybwMJAAACBQtjaGVja1dlaWdodAULY2hlY2tXZWlnaHQEC2NoZWNrU3RhdHVzAwkAAAIJAJEDAgUKcG9vbENvbmZpZwUNaWR4UG9vbFN0YXR1cwkApAMBBQxQb29sU2h1dGRvd24GCQEIdGhyb3dFcnIBAhlQb29sIG11c3QgYmUgU0hVVERPV04gKDQpAwkAAAIFC2NoZWNrU3RhdHVzBQtjaGVja1N0YXR1cwQNJHQwNDEwNTY0MTE5MwkBHGdldEFzc2V0c0RhdGFGcm9tUG9vbEFkZHJlc3MBBRNwb29sQ29udHJhY3RBZGRyZXNzBA1hbW91bnRBc3NldElkCAUNJHQwNDEwNTY0MTE5MwJfMQQMcHJpY2VBc3NldElkCAUNJHQwNDEwNTY0MTE5MwJfMgQJbHBBc3NldElkCAUNJHQwNDEwNTY0MTE5MwJfMwQTYW1vdW50QXNzZXRJbnRlcm5hbAgFDSR0MDQxMDU2NDExOTMCXzQEEnByaWNlQXNzZXRJbnRlcm5hbAgFDSR0MDQxMDU2NDExOTMCXzUEEXVzZXJQb29sc0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUa2V5VXNlclBvb2xzQ29udHJhY3QABA91c2VyUG9vbHNJbnZva2UJAPwHBAURdXNlclBvb2xzQ29udHJhY3QCCmRlbGV0ZVBvb2wJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsAwkAAAIFD3VzZXJQb29sc0ludm9rZQUPdXNlclBvb2xzSW52b2tlBBZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAEFHZvdGluZ0VtaXNzaW9uSW52b2tlCQD8BwQFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QCCmRlbGV0ZVBvb2wJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsAwkAAAIFFHZvdGluZ0VtaXNzaW9uSW52b2tlBRR2b3RpbmdFbWlzc2lvbkludm9rZQQTYXNzZXRzU3RvcmVDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABBFhc3NldHNTdG9yZUludm9rZQkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AgpkZWxldGVQb29sCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAMJAAACBRFhc3NldHNTdG9yZUludm9rZQURYXNzZXRzU3RvcmVJbnZva2UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFE3Bvb2xDb250cmFjdEFkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBRNhbW91bnRBc3NldEludGVybmFsCQCkAwEFEnByaWNlQXNzZXRJbnRlcm5hbAkAzAgCCQELRGVsZXRlRW50cnkBCQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRNhbW91bnRBc3NldEludGVybmFsBRJwcmljZUFzc2V0SW50ZXJuYWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVBvb2xDb25maWcCCQCkAwEFE2Ftb3VudEFzc2V0SW50ZXJuYWwJAKQDAQUScHJpY2VBc3NldEludGVybmFsCQDMCAIJAQtEZWxldGVFbnRyeQEJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFCWxwQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlQb29sVG9XZWlnaHQBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlQb29sU3ByZWFkAQUTcG9vbENvbnRyYWN0QWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEIa2V5SW5GZWUBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlPdXRGZWUBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uAQUTcG9vbENvbnRyYWN0QWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQERa2V5Q2hhbmdlQW1wRGVsYXkBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARFrZXlDaGFuZ2VBbXBEZWx0YQEFE3Bvb2xDb250cmFjdEFkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUNoYW5nZUFtcFRhcmdldAEFE3Bvb2xDb250cmFjdEFkZHJlc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhnZXRQcmljZQEOcG9vbEFkZHJlc3NTdHIEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ5wb29sQWRkcmVzc1N0cgQDY2ZnCQENZ2V0UG9vbENvbmZpZwEFDnBvb2xBZGRyZXNzU3RyBAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQECmFtdEFzc2V0SWQJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAxwcmljZUFzc2V0SWQJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQEDXBvb2xMcEJhbGFuY2UICQEFdmFsdWUBCQDsBwEFCWxwQXNzZXRJZAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCgABQAkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQphbXRBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCgABQAkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQFcHJpY2UDCQAAAgUNcG9vbExwQmFsYW5jZQAAAAAKAAFACQCRAwIKAAFACQD8BwQFC3Bvb2xBZGRyZXNzAhljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZCQDMCAIFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCBRRhY2NQcmljZUFzc2V0QmFsYW5jZQkAzAgCBQ1wb29sTHBCYWxhbmNlBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0AAAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUDbmlsBQVwcmljZQFpAQxjaGVja0JhbGFuY2UBDGxwQXNzZXRJZFN0cgQOcG9vbEFkZHJlc3NTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUMbHBBc3NldElkU3RyBAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUOcG9vbEFkZHJlc3NTdHIEA2NmZwkBDWdldFBvb2xDb25maWcBBQ5wb29sQWRkcmVzc1N0cgQQYW1vdW50QXNzZXRJZFN0cgkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQED3ByaWNlQXNzZXRJZFN0cgkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQVYXNzZXRNaW5BbW91bnREZWZhdWx0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEca2V5UG9vbEFzc2V0RGVmYXVsdE1pbkFtb3VudAAEFGFtb3VudEFzc2V0TWluQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZrZXlQb29sQXNzZXRzTWluQW1vdW50AQUQYW1vdW50QXNzZXRJZFN0cgUVYXNzZXRNaW5BbW91bnREZWZhdWx0BBNwcmljZUFzc2V0TWluQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZrZXlQb29sQXNzZXRzTWluQW1vdW50AQUPcHJpY2VBc3NldElkU3RyBRVhc3NldE1pbkFtb3VudERlZmF1bHQEEmFtb3VudEFzc2V0QmFsYW5jZQoAAUAJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUQYW1vdW50QXNzZXRJZFN0cgUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBFwcmljZUFzc2V0QmFsYW5jZQoAAUAJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUPcHJpY2VBc3NldElkU3RyBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEFmFtb3VudEFzc2V0QmFsYW5jZUlzT2sJAGcCBRJhbW91bnRBc3NldEJhbGFuY2UJAGkCBRRhbW91bnRBc3NldE1pbkFtb3VudAACBBVwcmljZUFzc2V0QmFsYW5jZUlzT2sJAGcCBRFwcmljZUFzc2V0QmFsYW5jZQkAaQIFE3ByaWNlQXNzZXRNaW5BbW91bnQAAgQLYmFsYW5jZUlzT2sDBRZhbW91bnRBc3NldEJhbGFuY2VJc09rBRVwcmljZUFzc2V0QmFsYW5jZUlzT2sHCQCUCgIFA25pbAULYmFsYW5jZUlzT2sBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXm+agdY", "height": 2985740, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5Lj4xDo3LTXdfCyCUJVTgtzYjcj7PrPBnHzuU7tW4oKE Next: HjqtFmehXKdA6RFVXN35LMqvtRRfSksAXjkyedHMMfMF Diff:
OldNewDifferences
369369 }
370370
371371
372-func bU (bV,bW,bX,bY,bZ,ca,cb,cc,cd,ce,cf) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bV, bW, bX, bY, bZ, ca, cb, cc, cd, ce, cf], m)
372+func bU (bR) = {
373+ let bn = bM()
374+ if ($isInstanceOf(bn, "ByteVector"))
375+ then {
376+ let bT = bn
377+ (bR.callerPublicKey == bT)
378+ }
379+ else if ($isInstanceOf(bn, "Unit"))
380+ then (bR.caller == this)
381+ else throw("Match error")
382+ }
373383
374384
375-func cg (bV,bW,bX,bY,bZ,ca,cb) = makeString(["%s%s%s%s%s%s", bV, bW, bX, bY, bZ, ca, cb], m)
385+func bV (bW,bX,bY,bZ,ca,cb,cc,cd,ce,cf,cg) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bW, bX, bY, bZ, ca, cb, cc, cd, ce, cf, cg], m)
376386
377387
378-func ch (af,ci,cj,ck,cl,cm,cn,co,cp,cq,cr) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", af, ci, cj, ck, cl, toString(cm), toString(cn), toString(co), toString(cp), toString(cq), cr], m)
388+func ch (bW,bX,bY,bZ,ca,cb,cc) = makeString(["%s%s%s%s%s%s", bW, bX, bY, bZ, ca, cb, cc], m)
379389
380390
381-func cs (ct,cu) = makeString(["%d%d", toString(ct), toString(cu)], m)
391+func ci (af,cj,ck,cl,cm,cn,co,cp,cq,cr,cs) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", af, cj, ck, cl, cm, toString(cn), toString(co), toString(cp), toString(cq), toString(cr), cs], m)
382392
383393
384-func cv (af) = {
385- let cw = split(bg(aC(af)), m)
386- let an = cw[1]
387- let ao = cw[2]
394+func ct (cu,cv) = makeString(["%d%d", toString(cu), toString(cv)], m)
395+
396+
397+func cw (af) = {
398+ let cx = split(bg(aC(af)), m)
399+ let an = cx[1]
400+ let ao = cx[2]
388401 split(bg(am(an, ao)), m)
389402 }
390403
391404
392-func cx (cy,cz) = {
393- let cA = valueOrElse(getInteger(this, ak(cy)), 0)
394- let cB = valueOrElse(getInteger(this, ad()), 0)
395- let cC = if ((cA == 0))
405+func cy (cz,cA) = {
406+ let cB = valueOrElse(getInteger(this, ak(cz)), 0)
407+ let cC = valueOrElse(getInteger(this, ad()), 0)
408+ let cD = if ((cB == 0))
396409 then {
397- let cD = (cB + cz)
398- $Tuple3(cD, [IntegerEntry(ad(), cD), IntegerEntry(ak(cy), cD), StringEntry(ai(cD), cy)], true)
410+ let cE = (cC + cA)
411+ $Tuple3(cE, [IntegerEntry(ad(), cE), IntegerEntry(ak(cz), cE), StringEntry(ai(cE), cz)], true)
399412 }
400- else $Tuple3(cA, nil, false)
401- cC
413+ else $Tuple3(cB, nil, false)
414+ cD
402415 }
403416
404417
405-func cE (bR) = {
406- let cF = split(valueOrElse(getString(W()), n), m)
407- if (containsElement(cF, toBase58String(bR.callerPublicKey)))
418+func cF (bR) = {
419+ let cG = split(valueOrElse(getString(W()), n), m)
420+ if (containsElement(cG, toBase58String(bR.callerPublicKey)))
408421 then true
409422 else {
410- let cG = bS(bR)
411- if ((cG == cG))
423+ let cH = bS(bR)
424+ if ((cH == cH))
412425 then true
413426 else throw("Strict value is not equal to itself.")
414427 }
415428 }
416429
417430
418-func cH (bh,cI,cJ) = valueOrElse(getInteger(this, bh), valueOrElse(getInteger(this, cI), cJ))
431+func cI (bh,cJ,cK) = valueOrElse(getInteger(this, bh), valueOrElse(getInteger(this, cJ), cK))
419432
420433
421-func cK (aI,aJ) = {
434+func cL (aI,aJ) = {
422435 let an = getInteger(ak(aI))
423436 let ao = getInteger(ak(aJ))
424437 if (if ((an == unit))
426439 else (ao == unit))
427440 then false
428441 else {
429- let cL = toString(value(an))
430- let cM = toString(value(ao))
431- let cN = getString(am(cL, cM))
432- let cO = getString(am(cM, cL))
433- let cP = if ((cN != unit))
442+ let cM = toString(value(an))
443+ let cN = toString(value(ao))
444+ let cO = getString(am(cM, cN))
445+ let cP = getString(am(cN, cM))
446+ let cQ = if ((cO != unit))
434447 then true
435- else (cO != unit)
436- cP
448+ else (cP != unit)
449+ cQ
437450 }
438451 }
439452
440453
441-func cQ (aD) = {
442- let cw = {
454+func cR (aD) = {
455+ let cx = {
443456 let bn = getString(aC(aD))
444457 if ($isInstanceOf(bn, "String"))
445458 then {
448461 }
449462 else K(makeString([aD, "pool is not found"], " "))
450463 }
451- let an = parseIntValue(cw[1])
452- let ao = parseIntValue(cw[2])
464+ let an = parseIntValue(cx[1])
465+ let ao = parseIntValue(cx[2])
453466 let aI = getStringValue(ai(an))
454467 let aJ = getStringValue(ai(ao))
455- let cj = getStringValue(aF(aD))
456- $Tuple5(aI, aJ, cj, an, ao)
468+ let ck = getStringValue(aF(aD))
469+ $Tuple5(aI, aJ, ck, an, ao)
457470 }
458471
459472
460-func cR (aD) = {
461- let cS = cQ(aD)
462- let aI = cS._1
463- let aJ = cS._2
464- let cj = cS._3
465- let an = cS._4
466- let ao = cS._5
467- let cT = addressFromStringValue(getStringValue(Z()))
468- let cU = invoke(cT, "getPoolCreatorREADONLY", [aI, aJ], nil)
469- cU
473+func cS (aD) = {
474+ let cT = cR(aD)
475+ let aI = cT._1
476+ let aJ = cT._2
477+ let ck = cT._3
478+ let an = cT._4
479+ let ao = cT._5
480+ let cU = addressFromStringValue(getStringValue(Z()))
481+ let cV = invoke(cU, "getPoolCreatorREADONLY", [aI, aJ], nil)
482+ cV
470483 }
471484
472485
473-func cV (cW,cX) = {
474- let bf = addressFromStringValue(cW)
475- if ((cX == "WAVES"))
486+func cW (cX,cY) = {
487+ let bf = addressFromStringValue(cX)
488+ if ((cY == "WAVES"))
476489 then wavesBalance(bf).regular
477490 else {
478- let aR = fromBase58String(cX)
491+ let aR = fromBase58String(cY)
479492 assetBalance(bf, aR)
480493 }
481494 }
482495
483496
484-func cY (aD) = {
485- let cZ = cQ(aD)
486- let aI = cZ._1
487- let aJ = cZ._2
488- let cj = cZ._3
489- let an = cZ._4
490- let ao = cZ._5
491- if ((cV(aD, aI) == 0))
492- then (cV(aD, aJ) == 0)
497+func cZ (aD) = {
498+ let da = cR(aD)
499+ let aI = da._1
500+ let aJ = da._2
501+ let ck = da._3
502+ let an = da._4
503+ let ao = da._5
504+ if ((cW(aD, aI) == 0))
505+ then (cW(aD, aJ) == 0)
493506 else false
494507 }
495508
501514
502515 @Callable(bR)
503516 func getPoolLeaseConfigREADONLY (af,aR) = {
504- let da = {
517+ let db = {
505518 let bn = getInteger(this, aZ(af, aR))
506519 if ($isInstanceOf(bn, "Int"))
507520 then {
508- let db = bn
509- $Tuple2(true, min([100, max([0, db])]))
521+ let dc = bn
522+ $Tuple2(true, min([100, max([0, dc])]))
510523 }
511524 else {
512- let dc = getInteger(this, ba(aR))
513- if ($isInstanceOf(dc, "Int"))
525+ let dd = getInteger(this, ba(aR))
526+ if ($isInstanceOf(dd, "Int"))
514527 then {
515- let dd = dc
516- $Tuple2(true, min([100, max([0, dd])]))
528+ let de = dd
529+ $Tuple2(true, min([100, max([0, de])]))
517530 }
518531 else $Tuple2(false, 0)
519532 }
520533 }
521- let de = da._1
522- let df = da._2
523- let dg = {
534+ let df = db._1
535+ let dg = db._2
536+ let dh = {
524537 let bn = getInteger(this, bc(af, aR))
525538 if ($isInstanceOf(bn, "Int"))
526539 then {
527- let dh = bn
528- max([0, dh])
540+ let di = bn
541+ max([0, di])
529542 }
530543 else {
531- let dc = getInteger(this, bd(aR))
532- if ($isInstanceOf(dc, "Int"))
544+ let dd = getInteger(this, bd(aR))
545+ if ($isInstanceOf(dd, "Int"))
533546 then {
534- let di = dc
535- max([0, di])
547+ let dj = dd
548+ max([0, dj])
536549 }
537550 else 0
538551 }
539552 }
540- let dj = if ((aR == "WAVES"))
553+ let dk = if ((aR == "WAVES"))
541554 then $Tuple3(valueOrElse(getString(this, aW()), ""), getString(this, valueOrElse(aX(), "")), c)
542555 else $Tuple3("", "", 0)
543- let dk = dj._1
544- let dl = dj._2
545- let dm = dj._3
546- let dn = valueOrElse(getString(this, aY()), "")
547- $Tuple2(nil, $Tuple7(de, df, dg, dk, dl, dm, dn))
556+ let dl = dk._1
557+ let dm = dk._2
558+ let dn = dk._3
559+ let do = valueOrElse(getString(this, aY()), "")
560+ $Tuple2(nil, $Tuple7(df, dg, dh, dl, dm, dn, do))
548561 }
549562
550563
551564
552565 @Callable(bR)
553-func getLpAssetFromPoolAssetsREADONLY (do,dp) = if (if ((do == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
554- then (dp == "WAVES")
566+func getLpAssetFromPoolAssetsREADONLY (dp,dq) = if (if ((dp == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
567+ then (dq == "WAVES")
555568 else false)
556569 then $Tuple2(nil, unit)
557570 else {
558- let dq = value(getInteger(this, ak(do)))
559571 let dr = value(getInteger(this, ak(dp)))
560- let ds = getString(this, ay(toString(dq), toString(dr)))
561- let dt = if ((ds == unit))
572+ let ds = value(getInteger(this, ak(dq)))
573+ let dt = getString(this, ay(toString(dr), toString(ds)))
574+ let du = if ((dt == unit))
562575 then unit
563- else drop(value(ds), 4)
564- $Tuple2(nil, dt)
576+ else drop(value(dt), 4)
577+ $Tuple2(nil, du)
565578 }
566579
567580
568581
569582 @Callable(bR)
570-func getPoolAddressFromLpAssetREADONLY (du) = $Tuple2(nil, valueOrElse(getString(this, aG(du)), ""))
583+func getPoolAddressFromLpAssetREADONLY (dv) = $Tuple2(nil, valueOrElse(getString(this, aG(dv)), ""))
571584
572585
573586
574587 @Callable(bR)
575-func constructor (dv,dw,bX,bY,bZ,ca,dx,dy) = {
576- let dz = bS(bR)
577- if ((dz == dz))
578- then [StringEntry(O(), cg(dv, dw, bX, bY, bZ, ca, dx)), IntegerEntry(ab(), dy)]
588+func constructor (dw,dx,bY,bZ,ca,cb,dy,dz) = {
589+ let dA = bS(bR)
590+ if ((dA == dA))
591+ then [StringEntry(O(), ch(dw, dx, bY, bZ, ca, cb, dy)), IntegerEntry(ab(), dz)]
579592 else throw("Strict value is not equal to itself.")
580593 }
581594
582595
583596
584597 @Callable(bR)
585-func constructorV2 (dA) = {
586- let dz = bS(bR)
587- if ((dz == dz))
598+func constructorV2 (dB) = {
599+ let dA = bS(bR)
600+ if ((dA == dA))
588601 then {
589- let dB = addressFromPublicKey(fromBase58String(dA))
590- if ((dB == dB))
591- then [StringEntry(R(), dA)]
602+ let dC = addressFromPublicKey(fromBase58String(dB))
603+ if ((dC == dC))
604+ then [StringEntry(R(), dB)]
592605 else throw("Strict value is not equal to itself.")
593606 }
594607 else throw("Strict value is not equal to itself.")
597610
598611
599612 @Callable(bR)
600-func constructorV3 (cc,cd,ce,cf) = {
601- let dz = bS(bR)
602- if ((dz == dz))
613+func constructorV3 (cd,ce,cf,cg) = {
614+ let dA = bS(bR)
615+ if ((dA == dA))
603616 then {
604617 let bH = split(bg(O()), m)
605-[StringEntry(O(), bU(bH[1], bH[2], bH[3], bH[4], bH[5], bH[6], bH[7], cc, cd, ce, cf))]
618+[StringEntry(O(), bV(bH[1], bH[2], bH[3], bH[4], bH[5], bH[6], bH[7], cd, ce, cf, cg))]
606619 }
607620 else throw("Strict value is not equal to itself.")
608621 }
610623
611624
612625 @Callable(bR)
613-func constructorV4 (dC,dD) = {
614- let dz = bS(bR)
615- if ((dz == dz))
616- then [StringEntry(S(), dC), StringEntry(T(), makeString(dD, m))]
626+func constructorV4 (dD,dE) = {
627+ let dA = bS(bR)
628+ if ((dA == dA))
629+ then [StringEntry(S(), dD), StringEntry(T(), makeString(dE, m))]
617630 else throw("Strict value is not equal to itself.")
618631 }
619632
620633
621634
622635 @Callable(bR)
623-func constructorV5 (dE) = {
624- let dz = bS(bR)
625- if ((dz == dz))
626- then [StringEntry(X(), dE)]
636+func constructorV5 (dF) = {
637+ let dA = bS(bR)
638+ if ((dA == dA))
639+ then [StringEntry(X(), dF)]
627640 else throw("Strict value is not equal to itself.")
628641 }
629642
630643
631644
632645 @Callable(bR)
633-func constructorV6 (dF,dG) = {
634- let dH = [bS(bR), if ((addressFromString(dF) != unit))
646+func constructorV6 (dG,dH) = {
647+ let dI = [bS(bR), if ((addressFromString(dG) != unit))
635648 then true
636649 else "invalid voting emission contract address"]
637- if ((dH == dH))
638- then [StringEntry(Y(), dF), StringEntry(aa(), makeString(dG, m))]
650+ if ((dI == dI))
651+ then [StringEntry(Y(), dG), StringEntry(aa(), makeString(dH, m))]
639652 else throw("Strict value is not equal to itself.")
640653 }
641654
642655
643656
644657 @Callable(bR)
645-func setAdmins (dI) = {
646- let dz = bS(bR)
647- if ((dz == dz))
648- then [StringEntry(W(), makeString(dI, m))]
658+func setAdmins (dJ) = {
659+ let dA = bS(bR)
660+ if ((dA == dA))
661+ then [StringEntry(W(), makeString(dJ, m))]
649662 else throw("Strict value is not equal to itself.")
650663 }
651664
652665
653666
654667 @Callable(bR)
655-func activateNewPool (af,ck,cl,dJ,dK,dL,cr,dM) = {
656- let dz = cE(bR)
657- if ((dz == dz))
668+func activateNewPool (af,cl,cm,dK,dL,dM,cs,dN) = {
669+ let dA = cF(bR)
670+ if ((dA == dA))
658671 then if (isDefined(getString(aC(af))))
659672 then K((("Pool address " + af) + " already registered."))
660673 else {
661- let dN = cx(ck, 1)
662- let dO = dN._1
663- let dP = cx(cl, if (dN._3)
674+ let dO = cy(cl, 1)
675+ let dP = dO._1
676+ let dQ = cy(cm, if (dO._3)
664677 then 2
665678 else 1)
666- let dQ = dP._1
667- let dR = valueOrErrorMessage(scriptHash(addressFromStringValue(af)), ("No script has been found on pool account " + af))
668- let dS = getBinaryValue(Q())
669- let dT = cK(ck, cl)
670- if (dT)
671- then K((((("Pool " + ck) + "/") + cl) + " has already been activated."))
679+ let dR = dQ._1
680+ let dS = valueOrErrorMessage(scriptHash(addressFromStringValue(af)), ("No script has been found on pool account " + af))
681+ let dT = getBinaryValue(Q())
682+ let dU = cL(cl, cm)
683+ if (dU)
684+ then K((((("Pool " + cl) + "/") + cm) + " has already been activated."))
672685 else {
673- let dU = value(getString(this, am(toString(dO), toString(dQ))))
674- let dV = if ((ck == "WAVES"))
675- then l
676- else pow(10, 0, value(assetInfo(fromBase58String(ck))).decimals, 0, 0, DOWN)
686+ let dV = value(getString(this, am(toString(dP), toString(dR))))
677687 let dW = if ((cl == "WAVES"))
678688 then l
679689 else pow(10, 0, value(assetInfo(fromBase58String(cl))).decimals, 0, 0, DOWN)
680- let dX = Issue(dJ, dK, 1, 8, true)
681- let cj = calculateAssetId(dX)
682- let dY = toBase58String(cj)
683- let dZ = invoke(addressFromStringValue(af), "activate", [ck, cl], nil)
684- if ((dZ == dZ))
685- then if ((dZ != "success"))
690+ let dX = if ((cm == "WAVES"))
691+ then l
692+ else pow(10, 0, value(assetInfo(fromBase58String(cm))).decimals, 0, 0, DOWN)
693+ let dY = Issue(dK, dL, 1, 8, true)
694+ let ck = calculateAssetId(dY)
695+ let dZ = toBase58String(ck)
696+ let ea = invoke(addressFromStringValue(af), "activate", [cl, cm], nil)
697+ if ((ea == ea))
698+ then if ((ea != "success"))
686699 then K("Pool initialisation error happened.")
687700 else {
688- let dE = addressFromStringValue(bg(X()))
689- let ea = invoke(dE, "createOrUpdate", [dY, dJ, false], nil)
690- if ((ea == ea))
701+ let dF = addressFromStringValue(bg(X()))
702+ let eb = invoke(dF, "createOrUpdate", [dZ, dK, false], nil)
703+ if ((eb == eb))
691704 then {
692- let eb = invoke(dE, "addLabel", [dY, h], nil)
693- if ((eb == eb))
705+ let ec = invoke(dF, "addLabel", [dZ, h], nil)
706+ if ((ec == ec))
694707 then {
695- let ec = invoke(dE, "setLogo", [dY, dM], nil)
696- if ((ec == ec))
708+ let ed = invoke(dF, "setLogo", [dZ, dN], nil)
709+ if ((ed == ed))
697710 then {
698- let ed = invoke(dE, "addAssetsLink", [ck, cl, dY], nil)
699- if ((ed == ed))
711+ let ee = invoke(dF, "addAssetsLink", [cl, cm, dZ], nil)
712+ if ((ee == ee))
700713 then {
701- let ee = invoke(dE, "increaseAssetPoolsNumber", [ck], nil)
702- if ((ee == ee))
703- then $Tuple2(((dN._2 ++ dP._2) ++ [dX, Burn(cj, 1), StringEntry(am(toString(dO), toString(dQ)), ch(af, toString(o), dY, ck, cl, dV, dW, dO, dQ, l, cr)), StringEntry(aw(dY), cs(dO, dQ)), StringEntry(ay(toString(dO), toString(dQ)), ("%s__" + dY)), StringEntry(aC(af), cs(dO, dQ)), StringEntry(aE(dO, dQ), af), StringEntry(aG(dY), af), StringEntry(aF(af), dY), IntegerEntry(ae(af), dL), IntegerEntry(aB(af), i)]), dY)
714+ let ef = invoke(dF, "increaseAssetPoolsNumber", [cl], nil)
715+ if ((ef == ef))
716+ then $Tuple2(((dO._2 ++ dQ._2) ++ [dY, Burn(ck, 1), StringEntry(am(toString(dP), toString(dR)), ci(af, toString(o), dZ, cl, cm, dW, dX, dP, dR, l, cs)), StringEntry(aw(dZ), ct(dP, dR)), StringEntry(ay(toString(dP), toString(dR)), ("%s__" + dZ)), StringEntry(aC(af), ct(dP, dR)), StringEntry(aE(dP, dR), af), StringEntry(aG(dZ), af), StringEntry(aF(af), dZ), IntegerEntry(ae(af), dM), IntegerEntry(aB(af), i)]), dZ)
704717 else throw("Strict value is not equal to itself.")
705718 }
706719 else throw("Strict value is not equal to itself.")
720733
721734
722735 @Callable(bR)
723-func managePool (af,ef) = {
724- let dz = bS(bR)
725- if ((dz == dz))
736+func managePool (af,eg) = {
737+ let dA = bS(bR)
738+ if ((dA == dA))
726739 then {
727- let eg = cv(af)
728- let ci = eg[w]
729- let dY = eg[x]
730- let ck = eg[y]
731- let cl = eg[z]
732- let dV = parseIntValue(eg[A])
733- let dW = parseIntValue(eg[B])
734- let dO = parseIntValue(eg[C])
735- let dQ = parseIntValue(eg[D])
736- let eh = parseIntValue(eg[E])
737- let cr = eg[F]
738-[StringEntry(am(toString(dO), toString(dQ)), ch(af, toString(ef), dY, ck, cl, dV, dW, dO, dQ, eh, cr))]
740+ let eh = cw(af)
741+ let cj = eh[w]
742+ let dZ = eh[x]
743+ let cl = eh[y]
744+ let cm = eh[z]
745+ let dW = parseIntValue(eh[A])
746+ let dX = parseIntValue(eh[B])
747+ let dP = parseIntValue(eh[C])
748+ let dR = parseIntValue(eh[D])
749+ let ei = parseIntValue(eh[E])
750+ let cs = eh[F]
751+[StringEntry(am(toString(dP), toString(dR)), ci(af, toString(eg), dZ, cl, cm, dW, dX, dP, dR, ei, cs))]
739752 }
740753 else throw("Strict value is not equal to itself.")
741754 }
743756
744757
745758 @Callable(bR)
746-func emit (ei) = {
747- let ej = bR.caller
748- let ek = bR.originCaller
749- let el = valueOrErrorMessage(getString(aF(toString(ej))), "Invalid LP address called me.")
750- let em = fromBase58String(el)
751- let dD = split(valueOrElse(getString(T()), n), m)
752- let dC = addressFromStringValue(valueOrErrorMessage(getString(S()), "Legacy factory contract does not exists."))
753- if ((0 >= ei))
759+func emit (ej) = {
760+ let ek = bR.caller
761+ let el = bR.originCaller
762+ let em = valueOrErrorMessage(getString(aF(toString(ek))), "Invalid LP address called me.")
763+ let en = fromBase58String(em)
764+ let dE = split(valueOrElse(getString(T()), n), m)
765+ let dD = addressFromStringValue(valueOrErrorMessage(getString(S()), "Legacy factory contract does not exists."))
766+ if ((0 >= ej))
754767 then nil
755- else if (containsElement(dD, toString(ej)))
756- then $Tuple2(nil, dC)
757- else $Tuple2([Reissue(em, ei, true), ScriptTransfer(bR.caller, ei, em)], "success")
768+ else if (containsElement(dE, toString(ek)))
769+ then $Tuple2(nil, dD)
770+ else $Tuple2([Reissue(en, ej, true), ScriptTransfer(bR.caller, ej, en)], "success")
758771 }
759772
760773
761774
762775 @Callable(bR)
763-func burn (en) = {
764- let ej = bR.caller
765- let ek = bR.originCaller
766- let eo = value(bR.payments[0])
767- let ep = value(eo.amount)
768- let eq = toBase58String(value(eo.assetId))
769- let er = valueOrErrorMessage(getString(aF(toString(ej))), "Invalid LP address called me.")
770- if ((eq != er))
776+func burn (eo) = {
777+ let ek = bR.caller
778+ let el = bR.originCaller
779+ let ep = value(bR.payments[0])
780+ let eq = value(ep.amount)
781+ let er = toBase58String(value(ep.assetId))
782+ let es = valueOrErrorMessage(getString(aF(toString(ek))), "Invalid LP address called me.")
783+ if ((er != es))
771784 then K("Invalid asset passed.")
772- else if ((en != ep))
785+ else if ((eo != eq))
773786 then K("Invalid amount passed.")
774787 else {
775- let em = fromBase58String(er)
776- $Tuple2([Burn(em, en)], "success")
788+ let en = fromBase58String(es)
789+ $Tuple2([Burn(en, eo)], "success")
777790 }
778791 }
779792
780793
781794
782795 @Callable(bR)
783-func modifyWeight (cj,es) = {
784- let dz = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, Y()), "")))
796+func modifyWeight (ck,et) = {
797+ let dA = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, Y()), "")))
785798 then true
786799 else bS(bR)
787- if ((dz == dz))
800+ if ((dA == dA))
788801 then {
789- let aD = bg(aG(cj))
790- let et = ae(aD)
791- let eu = ae(g)
792- let ev = valueOrElse(getInteger(eu), 0)
793- let dL = valueOrElse(getInteger(et), 0)
794- let ew = es
802+ let aD = bg(aG(ck))
803+ let eu = ae(aD)
804+ let ev = ae(g)
805+ let ew = valueOrElse(getInteger(ev), 0)
806+ let dM = valueOrElse(getInteger(eu), 0)
807+ let ex = et
795808 let bH = split(bg(O()), m)
796- let dv = bJ(bH)
797- let ex = invoke(dv, "onModifyWeight", [cj, aD], nil)
798- if ((ex == ex))
809+ let dw = bJ(bH)
810+ let ey = invoke(dw, "onModifyWeight", [ck, aD], nil)
811+ if ((ey == ey))
799812 then {
800- let ey = if ((ev == 0))
813+ let ez = if ((ew == 0))
801814 then nil
802- else [IntegerEntry(eu, 0)]
803- let ez = ag(aD, 0)
804- let eA = getInteger(ez)
805- let eB = if ((eA == unit))
815+ else [IntegerEntry(ev, 0)]
816+ let eA = ag(aD, 0)
817+ let eB = getInteger(eA)
818+ let eC = if ((eB == unit))
806819 then nil
807- else [DeleteEntry(ez)]
808- (([IntegerEntry(et, ew)] ++ ey) ++ eB)
820+ else [DeleteEntry(eA)]
821+ (([IntegerEntry(eu, ex)] ++ ez) ++ eC)
809822 }
810823 else throw("Strict value is not equal to itself.")
811824 }
815828
816829
817830 @Callable(bR)
818-func modifyWeights (eC,eD,eE,eF) = {
819- let dz = bS(bR)
820- if ((dz == dz))
831+func modifyWeights (eD,eE,eF,eG) = {
832+ let dA = bS(bR)
833+ if ((dA == dA))
821834 then {
822- let eG = ((5 * f) / 100)
823835 let eH = ((5 * f) / 100)
824836 let eI = ((5 * f) / 100)
837+ let eJ = ((5 * f) / 100)
825838 let bH = split(bg(O()), m)
826- let eJ = bJ(bH)
827- let eK = bK(bH)
828- let eL = ae(eC)
839+ let eK = bJ(bH)
840+ let eL = bK(bH)
829841 let eM = ae(eD)
830842 let eN = ae(eE)
831843 let eO = ae(eF)
832- let eP = bj(eL)
844+ let eP = ae(eG)
833845 let eQ = bj(eM)
834- let eR = (eP - eI)
835- let eS = (eQ - eI)
836- if ((0 >= eR))
837- then K(("invalid btcWeightNew: " + toString(eR)))
838- else if ((0 >= eS))
839- then K(("invalid ethWeightNew: " + toString(eS)))
846+ let eR = bj(eN)
847+ let eS = (eQ - eJ)
848+ let eT = (eR - eJ)
849+ if ((0 >= eS))
850+ then K(("invalid btcWeightNew: " + toString(eS)))
851+ else if ((0 >= eT))
852+ then K(("invalid ethWeightNew: " + toString(eT)))
840853 else {
841- let eT = bg(aF(eC))
842854 let eU = bg(aF(eD))
843855 let eV = bg(aF(eE))
844856 let eW = bg(aF(eF))
845- let eX = invoke(eJ, "onModifyWeight", [eT, eC], nil)
846- if ((eX == eX))
857+ let eX = bg(aF(eG))
858+ let eY = invoke(eK, "onModifyWeight", [eU, eD], nil)
859+ if ((eY == eY))
847860 then {
848- let eY = invoke(eJ, "onModifyWeight", [eU, eD], nil)
849- if ((eY == eY))
861+ let eZ = invoke(eK, "onModifyWeight", [eV, eE], nil)
862+ if ((eZ == eZ))
850863 then {
851- let eZ = invoke(eJ, "onModifyWeight", [eV, eE], nil)
852- if ((eZ == eZ))
864+ let fa = invoke(eK, "onModifyWeight", [eW, eF], nil)
865+ if ((fa == fa))
853866 then {
854- let fa = invoke(eJ, "onModifyWeight", [eW, eF], nil)
855- if ((fa == fa))
856- then [IntegerEntry(eL, eR), IntegerEntry(eM, eS), IntegerEntry(eN, eG), IntegerEntry(eO, eH), IntegerEntry(ag(eC, 0), eP), IntegerEntry(ag(eD, 0), eQ), IntegerEntry(ag(eE, 0), eG), IntegerEntry(ag(eF, 0), eH)]
867+ let fb = invoke(eK, "onModifyWeight", [eX, eG], nil)
868+ if ((fb == fb))
869+ then [IntegerEntry(eM, eS), IntegerEntry(eN, eT), IntegerEntry(eO, eH), IntegerEntry(eP, eI), IntegerEntry(ag(eD, 0), eQ), IntegerEntry(ag(eE, 0), eR), IntegerEntry(ag(eF, 0), eH), IntegerEntry(ag(eG, 0), eI)]
857870 else throw("Strict value is not equal to itself.")
858871 }
859872 else throw("Strict value is not equal to itself.")
870883
871884 @Callable(bR)
872885 func checkWxEmissionPoolLabel (aI,aJ) = {
873- let fb = {
886+ let fc = {
874887 let bn = getBoolean(aH(aI, aJ))
875888 if ($isInstanceOf(bn, "Boolean"))
876889 then {
877- let dh = bn
878- dh
890+ let di = bn
891+ di
879892 }
880893 else false
881894 }
882- $Tuple2(nil, fb)
895+ $Tuple2(nil, fc)
883896 }
884897
885898
886899
887900 @Callable(bR)
888901 func setWxEmissionPoolLabel (aI,aJ) = {
889- let dz = cE(bR)
890- if ((dz == dz))
902+ let dA = cF(bR)
903+ if ((dA == dA))
891904 then $Tuple2([BooleanEntry(aH(aI, aJ), true)], unit)
892905 else throw("Strict value is not equal to itself.")
893906 }
896909
897910 @Callable(bR)
898911 func deleteWxEmissionPoolLabel (aI,aJ) = {
899- let dz = if ((bR.caller == this))
912+ let dA = if ((bR.caller == this))
900913 then true
901- else cE(bR)
902- if ((dz == dz))
914+ else cF(bR)
915+ if ((dA == dA))
903916 then $Tuple2([DeleteEntry(aH(aI, aJ))], unit)
904917 else throw("Strict value is not equal to itself.")
905918 }
908921
909922 @Callable(bR)
910923 func onVerificationLoss (aR) = {
911- let dz = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, X()), "")))
924+ let dA = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, X()), "")))
912925 then true
913926 else bS(bR)
914- if ((dz == dz))
927+ if ((dA == dA))
915928 then {
916- let dG = bL()
917- let fc = if ((size(dG) > 0))
929+ let dH = bL()
930+ let fd = if ((size(dH) > 0))
918931 then true
919932 else K("invalid price assets")
920- if ((fc == fc))
933+ if ((fd == fd))
921934 then {
922- func fd (fe,ff) = {
923- let db = invoke(this, "deleteWxEmissionPoolLabel", [aR, ff], nil)
924- if ((db == db))
935+ func fe (ff,fg) = {
936+ let dc = invoke(this, "deleteWxEmissionPoolLabel", [aR, fg], nil)
937+ if ((dc == dc))
925938 then unit
926939 else throw("Strict value is not equal to itself.")
927940 }
928941
929- let fg = {
930- let fh = dG
931- let fi = size(fh)
932- let fj = unit
933- func fk (fl,fm) = if ((fm >= fi))
934- then fl
935- else fd(fl, fh[fm])
942+ let fh = {
943+ let fi = dH
944+ let fj = size(fi)
945+ let fk = unit
946+ func fl (fm,fn) = if ((fn >= fj))
947+ then fm
948+ else fe(fm, fi[fn])
936949
937- func fn (fl,fm) = if ((fm >= fi))
938- then fl
950+ func fo (fm,fn) = if ((fn >= fj))
951+ then fm
939952 else throw("List size exceeds 13")
940953
941- fn(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
954+ fo(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fk, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
942955 }
943- if ((fg == fg))
956+ if ((fh == fh))
944957 then $Tuple2(nil, unit)
945958 else throw("Strict value is not equal to itself.")
946959 }
953966
954967 @Callable(bR)
955968 func isPoolOneTokenOperationsDisabledREADONLY (af) = {
956- let eg = cv(af)
957- let aq = $Tuple2(parseIntValue(eg[C]), parseIntValue(eg[D]))
958- let fo = valueOrElse(getBoolean(ap(aq)), false)
959- let fp = valueOrElse(getBoolean(as()), false)
960- $Tuple2(nil, if (fp)
969+ let eh = cw(af)
970+ let aq = $Tuple2(parseIntValue(eh[C]), parseIntValue(eh[D]))
971+ let fp = valueOrElse(getBoolean(ap(aq)), false)
972+ let fq = valueOrElse(getBoolean(as()), false)
973+ $Tuple2(nil, if (fq)
961974 then true
962- else fo)
975+ else fp)
963976 }
964977
965978
966979
967980 @Callable(bR)
968981 func isPoolSwapDisabledREADONLY (af) = {
969- let eg = cv(af)
970- let aq = $Tuple2(parseIntValue(eg[C]), parseIntValue(eg[D]))
971- let fq = valueOrElse(getBoolean(at(aq)), false)
972- let fr = valueOrElse(getBoolean(av()), false)
973- $Tuple2(nil, if (fr)
982+ let eh = cw(af)
983+ let aq = $Tuple2(parseIntValue(eh[C]), parseIntValue(eh[D]))
984+ let fr = valueOrElse(getBoolean(at(aq)), false)
985+ let fs = valueOrElse(getBoolean(av()), false)
986+ $Tuple2(nil, if (fs)
974987 then true
975- else fq)
988+ else fr)
976989 }
977990
978991
979992
980993 @Callable(bR)
981994 func getInFeeREADONLY (af) = {
982- let fs = cH(aK(af), aL(), 0)
983- $Tuple2(nil, fs)
995+ let ft = cI(aK(af), aL(), 0)
996+ $Tuple2(nil, ft)
984997 }
985998
986999
9871000
9881001 @Callable(bR)
9891002 func getOutFeeREADONLY (af) = {
990- let fs = cH(aN(af), aO(), fraction(10, b, 10000))
991- $Tuple2(nil, fs)
1003+ let ft = cI(aN(af), aO(), fraction(10, b, 10000))
1004+ $Tuple2(nil, ft)
9921005 }
9931006
9941007
9951008
9961009 @Callable(bR)
997-func getSwapFeeREADONLY (ft) = {
998- let fu = {
999- let bn = getString(this, aM(ft))
1010+func getSwapFeeREADONLY (fu) = {
1011+ let fv = {
1012+ let bn = getString(this, aM(fu))
10001013 if ($isInstanceOf(bn, "String"))
10011014 then {
10021015 let bo = bn
1003- let fv = split(bo, m)
1004- let fw = parseIntValue(fv[1])
1005- let fx = parseIntValue(fv[2])
1006- $Tuple2(fw, fx)
1016+ let fw = split(bo, m)
1017+ let fx = parseIntValue(fw[1])
1018+ let fy = parseIntValue(fw[2])
1019+ $Tuple2(fx, fy)
10071020 }
10081021 else if ($isInstanceOf(bn, "Unit"))
10091022 then unit
10101023 else throw("Match error")
10111024 }
1012- $Tuple2(nil, fu)
1025+ $Tuple2(nil, fv)
10131026 }
10141027
10151028
10161029
10171030 @Callable(bR)
1018-func poolInfoREADONLY (fy,fz) = {
1019- let fA = getInteger(this, ak(fy))
1031+func poolInfoREADONLY (fz,fA) = {
10201032 let fB = getInteger(this, ak(fz))
1021- let fC = getString(this, aE(value(fA), value(fB)))
1022- let fD = getString(this, aF(value(fC)))
1023- let dT = if (if (isDefined(fA))
1024- then isDefined(fB)
1033+ let fC = getInteger(this, ak(fA))
1034+ let fD = getString(this, aE(value(fB), value(fC)))
1035+ let fE = getString(this, aF(value(fD)))
1036+ let dU = if (if (isDefined(fB))
1037+ then isDefined(fC)
10251038 else false)
1026- then isDefined(fC)
1039+ then isDefined(fD)
10271040 else false
1028- let fE = if (dT)
1029- then $Tuple2(addressFromStringValue(value(fC)), bk(value(fD)))
1041+ let fF = if (dU)
1042+ then $Tuple2(addressFromStringValue(value(fD)), bk(value(fE)))
10301043 else unit
1031- $Tuple2(nil, fE)
1044+ $Tuple2(nil, fF)
10321045 }
10331046
10341047
10351048
10361049 @Callable(bR)
10371050 func getPoolStatusREADONLY (af) = {
1038- let cw = split(bg(aC(af)), m)
1039- let an = cw[1]
1040- let ao = cw[2]
1041- let cN = split(bg(am(an, ao)), m)
1042- $Tuple2(nil, parseIntValue(cN[w]))
1051+ let cx = split(bg(aC(af)), m)
1052+ let an = cx[1]
1053+ let ao = cx[2]
1054+ let cO = split(bg(am(an, ao)), m)
1055+ $Tuple2(nil, parseIntValue(cO[w]))
10431056 }
10441057
10451058
10461059
10471060 @Callable(bR)
10481061 func getPoolConfigREADONLY (af) = {
1049- let cw = split(bg(aC(af)), m)
1050- let an = cw[1]
1051- let ao = cw[2]
1052- let cN = split(bg(am(an, ao)), m)
1053- $Tuple2(nil, cN)
1062+ let cx = split(bg(aC(af)), m)
1063+ let an = cx[1]
1064+ let ao = cx[2]
1065+ let cO = split(bg(am(an, ao)), m)
1066+ $Tuple2(nil, cO)
10541067 }
10551068
10561069
10571070
10581071 @Callable(bR)
1059-func getPoolConfigByLpAssetIdREADONLY (dY) = {
1060- let cw = split(bg(aw(dY)), m)
1061- let an = cw[1]
1062- let ao = cw[2]
1063- let cN = split(bg(am(an, ao)), m)
1064- $Tuple2(nil, cN)
1072+func getPoolConfigByLpAssetIdREADONLY (dZ) = {
1073+ let cx = split(bg(aw(dZ)), m)
1074+ let an = cx[1]
1075+ let ao = cx[2]
1076+ let cO = split(bg(am(an, ao)), m)
1077+ $Tuple2(nil, cO)
10651078 }
10661079
10671080
10681081
10691082 @Callable(bR)
1070-func poolExistsREADONLY (aI,aJ) = $Tuple2(nil, cK(aI, aJ))
1083+func poolExistsREADONLY (aI,aJ) = $Tuple2(nil, cL(aI, aJ))
10711084
10721085
10731086
10781091
10791092 @Callable(bR)
10801093 func getChangeAmpConfigREADONLY (af) = {
1081- let fF = getIntegerValue(aT(af))
1082- let fG = getIntegerValue(aU(af))
1083- let fH = getIntegerValue(aV(af))
1084- $Tuple2(nil, [fF, fG, fH])
1094+ let fG = getIntegerValue(aT(af))
1095+ let fH = getIntegerValue(aU(af))
1096+ let fI = getIntegerValue(aV(af))
1097+ $Tuple2(nil, [fG, fH, fI])
10851098 }
10861099
10871100
10881101
10891102 @Callable(bR)
1090-func getPoolWeightREADONLY (cj) = {
1091- let af = bg(aG(cj))
1092- let fI = valueOrElse(getInteger(ae(af)), 0)
1093- $Tuple2(nil, fI)
1103+func getPoolWeightREADONLY (ck) = {
1104+ let af = bg(aG(ck))
1105+ let fJ = valueOrElse(getInteger(ae(af)), 0)
1106+ $Tuple2(nil, fJ)
10941107 }
10951108
10961109
10971110
10981111 @Callable(bR)
10991112 func deletePool (aD) = {
1100- let eg = cv(aD)
1101- let dz = if ((toString(bR.caller) == cR(aD)))
1102- then if (cY(aD))
1103- then true
1104- else K("Pool is not empty")
1105- else bS(bR)
1106- if ((dz == dz))
1113+ let eh = cw(aD)
1114+ let dA = [if (if (bU(bR))
1115+ then true
1116+ else if ((toString(bR.caller) == cS(aD)))
1117+ then cZ(aD)
1118+ else false)
1119+ then true
1120+ else K("Pool is not empty")]
1121+ if ((dA == dA))
11071122 then {
1108- let fJ = if ((valueOrElse(getInteger(ae(aD)), 0) == 0))
1123+ let fK = if ((valueOrElse(getInteger(ae(aD)), 0) == 0))
11091124 then true
11101125 else K("Pool weight is not Zero")
1111- if ((fJ == fJ))
1126+ if ((fK == fK))
11121127 then {
1113- let fK = if ((eg[w] == toString(r)))
1128+ let fL = if ((eh[w] == toString(r)))
11141129 then true
11151130 else K("Pool must be SHUTDOWN (4)")
1116- if ((fK == fK))
1131+ if ((fL == fL))
11171132 then {
1118- let fL = cQ(aD)
1119- let aI = fL._1
1120- let aJ = fL._2
1121- let cj = fL._3
1122- let an = fL._4
1123- let ao = fL._5
1124- let cT = addressFromStringValue(getStringValue(Z()))
1125- let fM = invoke(cT, "deletePool", [aI, aJ], nil)
1126- if ((fM == fM))
1133+ let fM = cR(aD)
1134+ let aI = fM._1
1135+ let aJ = fM._2
1136+ let ck = fM._3
1137+ let an = fM._4
1138+ let ao = fM._5
1139+ let cU = addressFromStringValue(getStringValue(Z()))
1140+ let fN = invoke(cU, "deletePool", [aI, aJ], nil)
1141+ if ((fN == fN))
11271142 then {
1128- let dF = addressFromStringValue(getStringValue(Y()))
1129- let fN = invoke(dF, "deletePool", [aI, aJ], nil)
1130- if ((fN == fN))
1143+ let dG = addressFromStringValue(getStringValue(Y()))
1144+ let fO = invoke(dG, "deletePool", [aI, aJ], nil)
1145+ if ((fO == fO))
11311146 then {
1132- let dE = addressFromStringValue(getStringValue(X()))
1133- let fO = invoke(dE, "deletePool", [aI, aJ], nil)
1134- if ((fO == fO))
1135- then [DeleteEntry(aF(aD)), DeleteEntry(aC(aD)), DeleteEntry(ay(toString(an), toString(ao))), DeleteEntry(aE(an, ao)), DeleteEntry(am(toString(an), toString(ao))), DeleteEntry(aw(cj)), DeleteEntry(aG(cj)), DeleteEntry(aH(aI, aJ)), DeleteEntry(ae(aD)), DeleteEntry(aB(aD)), DeleteEntry(aK(aD)), DeleteEntry(aN(aD)), DeleteEntry(aS(aD)), DeleteEntry(aT(aD)), DeleteEntry(aU(aD)), DeleteEntry(aV(aD))]
1147+ let dF = addressFromStringValue(getStringValue(X()))
1148+ let fP = invoke(dF, "deletePool", [aI, aJ], nil)
1149+ if ((fP == fP))
1150+ then [DeleteEntry(aF(aD)), DeleteEntry(aC(aD)), DeleteEntry(ay(toString(an), toString(ao))), DeleteEntry(aE(an, ao)), DeleteEntry(am(toString(an), toString(ao))), DeleteEntry(aw(ck)), DeleteEntry(aG(ck)), DeleteEntry(aH(aI, aJ)), DeleteEntry(ae(aD)), DeleteEntry(aB(aD)), DeleteEntry(aK(aD)), DeleteEntry(aN(aD)), DeleteEntry(aS(aD)), DeleteEntry(aT(aD)), DeleteEntry(aU(aD)), DeleteEntry(aV(aD))]
11361151 else throw("Strict value is not equal to itself.")
11371152 }
11381153 else throw("Strict value is not equal to itself.")
11491164
11501165
11511166 @Callable(bR)
1152-func getPrice (ft) = {
1153- let af = addressFromStringValue(ft)
1154- let cN = cv(ft)
1155- let cj = fromBase58String(cN[x])
1156- let fP = cN[y]
1157- let aJ = cN[z]
1158- let fQ = value(assetInfo(cj)).quantity
1159- let fR = {
1160- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [fP], nil)
1161- if ($isInstanceOf(fS, "Int"))
1162- then fS
1163- else throw(($getType(fS) + " couldn't be cast to Int"))
1167+func getPrice (fu) = {
1168+ let af = addressFromStringValue(fu)
1169+ let cO = cw(fu)
1170+ let ck = fromBase58String(cO[x])
1171+ let fQ = cO[y]
1172+ let aJ = cO[z]
1173+ let fR = value(assetInfo(ck)).quantity
1174+ let fS = {
1175+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [fQ], nil)
1176+ if ($isInstanceOf(fT, "Int"))
1177+ then fT
1178+ else throw(($getType(fT) + " couldn't be cast to Int"))
11641179 }
1165- let fT = {
1166- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [aJ], nil)
1167- if ($isInstanceOf(fS, "Int"))
1168- then fS
1169- else throw(($getType(fS) + " couldn't be cast to Int"))
1180+ let fU = {
1181+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [aJ], nil)
1182+ if ($isInstanceOf(fT, "Int"))
1183+ then fT
1184+ else throw(($getType(fT) + " couldn't be cast to Int"))
11701185 }
1171- let fU = if ((fQ == 0))
1186+ let fV = if ((fR == 0))
11721187 then 0
11731188 else {
1174- let fS = ({
1175- let fS = invoke(af, "calcPricesWrapperREADONLY", [fR, fT, fQ], nil)
1176- if ($isInstanceOf(fS, "List[Any]"))
1177- then fS
1178- else throw(($getType(fS) + " couldn't be cast to List[Any]"))
1189+ let fT = ({
1190+ let fT = invoke(af, "calcPricesWrapperREADONLY", [fS, fU, fR], nil)
1191+ if ($isInstanceOf(fT, "List[Any]"))
1192+ then fT
1193+ else throw(($getType(fT) + " couldn't be cast to List[Any]"))
11791194 })[0]
1180- if ($isInstanceOf(fS, "String"))
1181- then fS
1182- else throw(($getType(fS) + " couldn't be cast to String"))
1195+ if ($isInstanceOf(fT, "String"))
1196+ then fT
1197+ else throw(($getType(fT) + " couldn't be cast to String"))
11831198 }
1184- $Tuple2(nil, fU)
1199+ $Tuple2(nil, fV)
11851200 }
11861201
11871202
11881203
11891204 @Callable(bR)
1190-func checkBalance (dY) = {
1191- let ft = bg(aG(dY))
1192- let af = addressFromStringValue(ft)
1193- let cN = cv(ft)
1194- let fy = cN[y]
1195- let fz = cN[z]
1196- let fV = getIntegerValue(this, aP())
1197- let fW = valueOrElse(getInteger(this, aQ(fy)), fV)
1198- let fX = valueOrElse(getInteger(this, aQ(fz)), fV)
1199- let fY = {
1200- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [fy], nil)
1201- if ($isInstanceOf(fS, "Int"))
1202- then fS
1203- else throw(($getType(fS) + " couldn't be cast to Int"))
1205+func checkBalance (dZ) = {
1206+ let fu = bg(aG(dZ))
1207+ let af = addressFromStringValue(fu)
1208+ let cO = cw(fu)
1209+ let fz = cO[y]
1210+ let fA = cO[z]
1211+ let fW = getIntegerValue(this, aP())
1212+ let fX = valueOrElse(getInteger(this, aQ(fz)), fW)
1213+ let fY = valueOrElse(getInteger(this, aQ(fA)), fW)
1214+ let fZ = {
1215+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [fz], nil)
1216+ if ($isInstanceOf(fT, "Int"))
1217+ then fT
1218+ else throw(($getType(fT) + " couldn't be cast to Int"))
12041219 }
1205- let fZ = {
1206- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [fz], nil)
1207- if ($isInstanceOf(fS, "Int"))
1208- then fS
1209- else throw(($getType(fS) + " couldn't be cast to Int"))
1220+ let ga = {
1221+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [fA], nil)
1222+ if ($isInstanceOf(fT, "Int"))
1223+ then fT
1224+ else throw(($getType(fT) + " couldn't be cast to Int"))
12101225 }
1211- let ga = (fY >= (fW / 2))
12121226 let gb = (fZ >= (fX / 2))
1213- let gc = if (ga)
1214- then gb
1227+ let gc = (ga >= (fY / 2))
1228+ let gd = if (gb)
1229+ then gc
12151230 else false
1216- $Tuple2(nil, gc)
1231+ $Tuple2(nil, gd)
12171232 }
12181233
12191234
1220-@Verifier(gd)
1221-func ge () = {
1222- let gf = {
1235+@Verifier(ge)
1236+func gf () = {
1237+ let gg = {
12231238 let bn = bM()
12241239 if ($isInstanceOf(bn, "ByteVector"))
12251240 then {
12271242 bT
12281243 }
12291244 else if ($isInstanceOf(bn, "Unit"))
1230- then gd.senderPublicKey
1245+ then ge.senderPublicKey
12311246 else throw("Match error")
12321247 }
1233- sigVerify(gd.bodyBytes, gd.proofs[0], gf)
1248+ sigVerify(ge.bodyBytes, ge.proofs[0], gg)
12341249 }
12351250
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 1000000000000
99
1010 let d = 18
1111
1212 let e = toBigInt(1000000000000000000)
1313
1414 let f = b
1515
1616 let g = "GWXvirtualPOOL"
1717
1818 let h = "POOLS_LP"
1919
2020 let i = 2000000
2121
2222 let j = "WAVES"
2323
2424 let k = "factory_v2.ride"
2525
2626 let l = ((100 * 1000) * 1000)
2727
2828 let m = "__"
2929
3030 let n = ""
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 let v = 1
4747
4848 let w = 2
4949
5050 let x = 3
5151
5252 let y = 4
5353
5454 let z = 5
5555
5656 let A = 6
5757
5858 let B = 7
5959
6060 let C = 8
6161
6262 let D = 9
6363
6464 let E = 10
6565
6666 let F = 11
6767
6868 let G = "WX_EMISSION"
6969
7070 let H = [G]
7171
7272 func I (J) = makeString([k, ": ", J], "")
7373
7474
7575 func K (J) = throw(I(J))
7676
7777
7878 func L () = "%s__allowedLpScriptHash"
7979
8080
8181 func M () = "%s__allowedLpStableScriptHash"
8282
8383
8484 func N () = "%s__swapContract"
8585
8686
8787 func O () = "%s__factoryConfig"
8888
8989
9090 func P () = "%s__lpTokensList"
9191
9292
9393 func Q () = "%s%s__pool__scriptHash"
9494
9595
9696 func R () = "%s%s__matcher__publicKey"
9797
9898
9999 func S () = "%s__legacyFactoryContract"
100100
101101
102102 func T () = "%s__legacyPools"
103103
104104
105105 func U () = "%s__managerPublicKey"
106106
107107
108108 func V () = "%s__managerVaultAddress"
109109
110110
111111 func W () = "%s__adminPubKeys"
112112
113113
114114 func X () = "%s__assetsStoreContract"
115115
116116
117117 func Y () = "%s__votingEmissionContract"
118118
119119
120120 func Z () = "%s__userPoolsContract"
121121
122122
123123 func aa () = makeString(["%s", "priceAssets"], m)
124124
125125
126126 func ab () = "%s__priceDecimals"
127127
128128
129129 func ac () = "%s__shutdown"
130130
131131
132132 func ad () = "%s__nextInternalAssetId"
133133
134134
135135 func ae (af) = ("%s%s__poolWeight__" + af)
136136
137137
138138 func ag (af,ah) = ((("%s%s__poolWeight__" + af) + "__") + toString(ah))
139139
140140
141141 func ai (aj) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(aj))
142142
143143
144144 func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
145145
146146
147147 func am (an,ao) = (((("%d%d%s__" + an) + "__") + ao) + "__config")
148148
149149
150150 func ap (aq) = {
151151 let ar = aq
152152 let an = ar._1
153153 let ao = ar._2
154154 makeString(["%d%d%s", toString(an), toString(ao), "oneTokenOperationsDisabled"], m)
155155 }
156156
157157
158158 func as () = makeString(["%s", "oneTokenOperationsDisabled"], m)
159159
160160
161161 func at (aq) = {
162162 let au = aq
163163 let an = au._1
164164 let ao = au._2
165165 makeString(["%d%d%s", toString(an), toString(ao), "swapDisabled"], m)
166166 }
167167
168168
169169 func av () = makeString(["%s", "swapDisabled"], m)
170170
171171
172172 func aw (ax) = (("%s%s%s__" + ax) + "__mappings__lpAsset2Pool")
173173
174174
175175 func ay (az,aA) = (((("%d%d%s%s__" + az) + "__") + aA) + "__mappings__PoolAssets2LpAsset")
176176
177177
178178 func aB (af) = ("%s%s__spread__" + af)
179179
180180
181181 func aC (aD) = (("%s%s%s__" + aD) + "__mappings__poolContract2PoolAssets")
182182
183183
184184 func aE (az,aA) = (((("%d%d%s%s__" + toString(az)) + "__") + toString(aA)) + "__mappings__poolAssets2PoolContract")
185185
186186
187187 func aF (aD) = (("%s%s%s__" + aD) + "__mappings__poolContract2LpAsset")
188188
189189
190190 func aG (ax) = (("%s%s%s__" + ax) + "__mappings__lpAsset2PoolContract")
191191
192192
193193 func aH (aI,aJ) = ((("%s%s%s__wxEmission__" + aI) + "__") + aJ)
194194
195195
196196 func aK (af) = ("%s%s__inFee__" + af)
197197
198198
199199 func aL () = "%s__inFeeDefault"
200200
201201
202202 func aM (af) = ("%s%s__swapFee__" + af)
203203
204204
205205 func aN (af) = ("%s%s__outFee__" + af)
206206
207207
208208 func aO () = "%s__outFeeDefault"
209209
210210
211211 func aP () = makeString(["%s", "poolAssetDefaultMinAmount"], m)
212212
213213
214214 func aQ (aR) = makeString(["%s%s", "poolAssetMinAmount", aR], m)
215215
216216
217217 func aS (af) = ("%s%s__skipOrderValidation__" + af)
218218
219219
220220 func aT (af) = ("%s%s__changeAmpDelay__" + af)
221221
222222
223223 func aU (af) = ("%s%s__changeAmpDelta__" + af)
224224
225225
226226 func aV (af) = ("%s%s__changeAmpTarget__" + af)
227227
228228
229229 func aW () = "%s__sWavesProxyAddress"
230230
231231
232232 func aX () = "%s__sWavesAssetId"
233233
234234
235235 func aY () = "%s__stakingProfitAddress"
236236
237237
238238 func aZ (af,aR) = makeString(["%s%s%s", "leasedRatio", af, aR], m)
239239
240240
241241 func ba (aR) = makeString(["%s%s", "leasedRatioDefault", aR], m)
242242
243243
244244 func bb (af,aR) = makeString(["%s%s%s", "leasedRatioTolerance", af, aR], m)
245245
246246
247247 func bc (af,aR) = makeString(["%s%s%s", "minBalance", af, aR], m)
248248
249249
250250 func bd (aR) = makeString(["%s%s", "minBalanceDefault", aR], m)
251251
252252
253253 func be (bf) = makeString(["%s%s", "whitelisted", toString(bf)], m)
254254
255255
256256 func bg (bh) = valueOrErrorMessage(getString(this, bh), ("No data for this.key=" + bh))
257257
258258
259259 func bi (bh) = valueOrErrorMessage(getBoolean(this, bh), ("No data for this.key=" + bh))
260260
261261
262262 func bj (bh) = valueOrErrorMessage(getInteger(this, bh), ("No data for this.key=" + bh))
263263
264264
265265 func bk (bl) = if ((bl == j))
266266 then unit
267267 else fromBase58String(bl)
268268
269269
270270 func bm () = {
271271 let bn = getString(V())
272272 if ($isInstanceOf(bn, "String"))
273273 then {
274274 let bo = bn
275275 addressFromStringValue(bo)
276276 }
277277 else this
278278 }
279279
280280
281281 func bp (bq,br) = fraction(toBigInt(bq), e, toBigInt(br))
282282
283283
284284 func bs (bt,bu) = toInt(fraction(bt, toBigInt(bu), e))
285285
286286
287287 let bv = 1
288288
289289 let bw = 2
290290
291291 let bx = 3
292292
293293 let by = 4
294294
295295 let bz = 5
296296
297297 let bA = 6
298298
299299 let bB = 7
300300
301301 let bC = 8
302302
303303 let bD = 9
304304
305305 let bE = 10
306306
307307 let bF = 11
308308
309309 func bG (bH) = addressFromStringValue(bH[bw])
310310
311311
312312 func bI (bH) = addressFromStringValue(bH[bz])
313313
314314
315315 func bJ (bH) = addressFromStringValue(bH[bv])
316316
317317
318318 func bK (bH) = addressFromStringValue(bH[bE])
319319
320320
321321 func bL () = {
322322 let bn = getString(aa())
323323 if ($isInstanceOf(bn, "String"))
324324 then {
325325 let bo = bn
326326 if ((size(bo) == 0))
327327 then nil
328328 else split_4C(bo, m)
329329 }
330330 else nil
331331 }
332332
333333
334334 func bM () = {
335335 let bN = bm()
336336 let bn = getString(bN, U())
337337 if ($isInstanceOf(bn, "String"))
338338 then {
339339 let bo = bn
340340 fromBase58String(bo)
341341 }
342342 else if ($isInstanceOf(bn, "Unit"))
343343 then unit
344344 else throw("Match error")
345345 }
346346
347347
348348 let bO = K("Permission denied")
349349
350350 let bP = K("Test error here")
351351
352352 func bQ (bR) = if ((bR.caller == this))
353353 then true
354354 else bO
355355
356356
357357 func bS (bR) = {
358358 let bn = bM()
359359 if ($isInstanceOf(bn, "ByteVector"))
360360 then {
361361 let bT = bn
362362 if ((bR.callerPublicKey == bT))
363363 then true
364364 else bO
365365 }
366366 else if ($isInstanceOf(bn, "Unit"))
367367 then bQ(bR)
368368 else throw("Match error")
369369 }
370370
371371
372-func bU (bV,bW,bX,bY,bZ,ca,cb,cc,cd,ce,cf) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bV, bW, bX, bY, bZ, ca, cb, cc, cd, ce, cf], m)
372+func bU (bR) = {
373+ let bn = bM()
374+ if ($isInstanceOf(bn, "ByteVector"))
375+ then {
376+ let bT = bn
377+ (bR.callerPublicKey == bT)
378+ }
379+ else if ($isInstanceOf(bn, "Unit"))
380+ then (bR.caller == this)
381+ else throw("Match error")
382+ }
373383
374384
375-func cg (bV,bW,bX,bY,bZ,ca,cb) = makeString(["%s%s%s%s%s%s", bV, bW, bX, bY, bZ, ca, cb], m)
385+func bV (bW,bX,bY,bZ,ca,cb,cc,cd,ce,cf,cg) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bW, bX, bY, bZ, ca, cb, cc, cd, ce, cf, cg], m)
376386
377387
378-func ch (af,ci,cj,ck,cl,cm,cn,co,cp,cq,cr) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", af, ci, cj, ck, cl, toString(cm), toString(cn), toString(co), toString(cp), toString(cq), cr], m)
388+func ch (bW,bX,bY,bZ,ca,cb,cc) = makeString(["%s%s%s%s%s%s", bW, bX, bY, bZ, ca, cb, cc], m)
379389
380390
381-func cs (ct,cu) = makeString(["%d%d", toString(ct), toString(cu)], m)
391+func ci (af,cj,ck,cl,cm,cn,co,cp,cq,cr,cs) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", af, cj, ck, cl, cm, toString(cn), toString(co), toString(cp), toString(cq), toString(cr), cs], m)
382392
383393
384-func cv (af) = {
385- let cw = split(bg(aC(af)), m)
386- let an = cw[1]
387- let ao = cw[2]
394+func ct (cu,cv) = makeString(["%d%d", toString(cu), toString(cv)], m)
395+
396+
397+func cw (af) = {
398+ let cx = split(bg(aC(af)), m)
399+ let an = cx[1]
400+ let ao = cx[2]
388401 split(bg(am(an, ao)), m)
389402 }
390403
391404
392-func cx (cy,cz) = {
393- let cA = valueOrElse(getInteger(this, ak(cy)), 0)
394- let cB = valueOrElse(getInteger(this, ad()), 0)
395- let cC = if ((cA == 0))
405+func cy (cz,cA) = {
406+ let cB = valueOrElse(getInteger(this, ak(cz)), 0)
407+ let cC = valueOrElse(getInteger(this, ad()), 0)
408+ let cD = if ((cB == 0))
396409 then {
397- let cD = (cB + cz)
398- $Tuple3(cD, [IntegerEntry(ad(), cD), IntegerEntry(ak(cy), cD), StringEntry(ai(cD), cy)], true)
410+ let cE = (cC + cA)
411+ $Tuple3(cE, [IntegerEntry(ad(), cE), IntegerEntry(ak(cz), cE), StringEntry(ai(cE), cz)], true)
399412 }
400- else $Tuple3(cA, nil, false)
401- cC
413+ else $Tuple3(cB, nil, false)
414+ cD
402415 }
403416
404417
405-func cE (bR) = {
406- let cF = split(valueOrElse(getString(W()), n), m)
407- if (containsElement(cF, toBase58String(bR.callerPublicKey)))
418+func cF (bR) = {
419+ let cG = split(valueOrElse(getString(W()), n), m)
420+ if (containsElement(cG, toBase58String(bR.callerPublicKey)))
408421 then true
409422 else {
410- let cG = bS(bR)
411- if ((cG == cG))
423+ let cH = bS(bR)
424+ if ((cH == cH))
412425 then true
413426 else throw("Strict value is not equal to itself.")
414427 }
415428 }
416429
417430
418-func cH (bh,cI,cJ) = valueOrElse(getInteger(this, bh), valueOrElse(getInteger(this, cI), cJ))
431+func cI (bh,cJ,cK) = valueOrElse(getInteger(this, bh), valueOrElse(getInteger(this, cJ), cK))
419432
420433
421-func cK (aI,aJ) = {
434+func cL (aI,aJ) = {
422435 let an = getInteger(ak(aI))
423436 let ao = getInteger(ak(aJ))
424437 if (if ((an == unit))
425438 then true
426439 else (ao == unit))
427440 then false
428441 else {
429- let cL = toString(value(an))
430- let cM = toString(value(ao))
431- let cN = getString(am(cL, cM))
432- let cO = getString(am(cM, cL))
433- let cP = if ((cN != unit))
442+ let cM = toString(value(an))
443+ let cN = toString(value(ao))
444+ let cO = getString(am(cM, cN))
445+ let cP = getString(am(cN, cM))
446+ let cQ = if ((cO != unit))
434447 then true
435- else (cO != unit)
436- cP
448+ else (cP != unit)
449+ cQ
437450 }
438451 }
439452
440453
441-func cQ (aD) = {
442- let cw = {
454+func cR (aD) = {
455+ let cx = {
443456 let bn = getString(aC(aD))
444457 if ($isInstanceOf(bn, "String"))
445458 then {
446459 let bo = bn
447460 split(bo, m)
448461 }
449462 else K(makeString([aD, "pool is not found"], " "))
450463 }
451- let an = parseIntValue(cw[1])
452- let ao = parseIntValue(cw[2])
464+ let an = parseIntValue(cx[1])
465+ let ao = parseIntValue(cx[2])
453466 let aI = getStringValue(ai(an))
454467 let aJ = getStringValue(ai(ao))
455- let cj = getStringValue(aF(aD))
456- $Tuple5(aI, aJ, cj, an, ao)
468+ let ck = getStringValue(aF(aD))
469+ $Tuple5(aI, aJ, ck, an, ao)
457470 }
458471
459472
460-func cR (aD) = {
461- let cS = cQ(aD)
462- let aI = cS._1
463- let aJ = cS._2
464- let cj = cS._3
465- let an = cS._4
466- let ao = cS._5
467- let cT = addressFromStringValue(getStringValue(Z()))
468- let cU = invoke(cT, "getPoolCreatorREADONLY", [aI, aJ], nil)
469- cU
473+func cS (aD) = {
474+ let cT = cR(aD)
475+ let aI = cT._1
476+ let aJ = cT._2
477+ let ck = cT._3
478+ let an = cT._4
479+ let ao = cT._5
480+ let cU = addressFromStringValue(getStringValue(Z()))
481+ let cV = invoke(cU, "getPoolCreatorREADONLY", [aI, aJ], nil)
482+ cV
470483 }
471484
472485
473-func cV (cW,cX) = {
474- let bf = addressFromStringValue(cW)
475- if ((cX == "WAVES"))
486+func cW (cX,cY) = {
487+ let bf = addressFromStringValue(cX)
488+ if ((cY == "WAVES"))
476489 then wavesBalance(bf).regular
477490 else {
478- let aR = fromBase58String(cX)
491+ let aR = fromBase58String(cY)
479492 assetBalance(bf, aR)
480493 }
481494 }
482495
483496
484-func cY (aD) = {
485- let cZ = cQ(aD)
486- let aI = cZ._1
487- let aJ = cZ._2
488- let cj = cZ._3
489- let an = cZ._4
490- let ao = cZ._5
491- if ((cV(aD, aI) == 0))
492- then (cV(aD, aJ) == 0)
497+func cZ (aD) = {
498+ let da = cR(aD)
499+ let aI = da._1
500+ let aJ = da._2
501+ let ck = da._3
502+ let an = da._4
503+ let ao = da._5
504+ if ((cW(aD, aI) == 0))
505+ then (cW(aD, aJ) == 0)
493506 else false
494507 }
495508
496509
497510 @Callable(bR)
498511 func getSwapContractREADONLY () = $Tuple2(nil, bg(N()))
499512
500513
501514
502515 @Callable(bR)
503516 func getPoolLeaseConfigREADONLY (af,aR) = {
504- let da = {
517+ let db = {
505518 let bn = getInteger(this, aZ(af, aR))
506519 if ($isInstanceOf(bn, "Int"))
507520 then {
508- let db = bn
509- $Tuple2(true, min([100, max([0, db])]))
521+ let dc = bn
522+ $Tuple2(true, min([100, max([0, dc])]))
510523 }
511524 else {
512- let dc = getInteger(this, ba(aR))
513- if ($isInstanceOf(dc, "Int"))
525+ let dd = getInteger(this, ba(aR))
526+ if ($isInstanceOf(dd, "Int"))
514527 then {
515- let dd = dc
516- $Tuple2(true, min([100, max([0, dd])]))
528+ let de = dd
529+ $Tuple2(true, min([100, max([0, de])]))
517530 }
518531 else $Tuple2(false, 0)
519532 }
520533 }
521- let de = da._1
522- let df = da._2
523- let dg = {
534+ let df = db._1
535+ let dg = db._2
536+ let dh = {
524537 let bn = getInteger(this, bc(af, aR))
525538 if ($isInstanceOf(bn, "Int"))
526539 then {
527- let dh = bn
528- max([0, dh])
540+ let di = bn
541+ max([0, di])
529542 }
530543 else {
531- let dc = getInteger(this, bd(aR))
532- if ($isInstanceOf(dc, "Int"))
544+ let dd = getInteger(this, bd(aR))
545+ if ($isInstanceOf(dd, "Int"))
533546 then {
534- let di = dc
535- max([0, di])
547+ let dj = dd
548+ max([0, dj])
536549 }
537550 else 0
538551 }
539552 }
540- let dj = if ((aR == "WAVES"))
553+ let dk = if ((aR == "WAVES"))
541554 then $Tuple3(valueOrElse(getString(this, aW()), ""), getString(this, valueOrElse(aX(), "")), c)
542555 else $Tuple3("", "", 0)
543- let dk = dj._1
544- let dl = dj._2
545- let dm = dj._3
546- let dn = valueOrElse(getString(this, aY()), "")
547- $Tuple2(nil, $Tuple7(de, df, dg, dk, dl, dm, dn))
556+ let dl = dk._1
557+ let dm = dk._2
558+ let dn = dk._3
559+ let do = valueOrElse(getString(this, aY()), "")
560+ $Tuple2(nil, $Tuple7(df, dg, dh, dl, dm, dn, do))
548561 }
549562
550563
551564
552565 @Callable(bR)
553-func getLpAssetFromPoolAssetsREADONLY (do,dp) = if (if ((do == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
554- then (dp == "WAVES")
566+func getLpAssetFromPoolAssetsREADONLY (dp,dq) = if (if ((dp == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
567+ then (dq == "WAVES")
555568 else false)
556569 then $Tuple2(nil, unit)
557570 else {
558- let dq = value(getInteger(this, ak(do)))
559571 let dr = value(getInteger(this, ak(dp)))
560- let ds = getString(this, ay(toString(dq), toString(dr)))
561- let dt = if ((ds == unit))
572+ let ds = value(getInteger(this, ak(dq)))
573+ let dt = getString(this, ay(toString(dr), toString(ds)))
574+ let du = if ((dt == unit))
562575 then unit
563- else drop(value(ds), 4)
564- $Tuple2(nil, dt)
576+ else drop(value(dt), 4)
577+ $Tuple2(nil, du)
565578 }
566579
567580
568581
569582 @Callable(bR)
570-func getPoolAddressFromLpAssetREADONLY (du) = $Tuple2(nil, valueOrElse(getString(this, aG(du)), ""))
583+func getPoolAddressFromLpAssetREADONLY (dv) = $Tuple2(nil, valueOrElse(getString(this, aG(dv)), ""))
571584
572585
573586
574587 @Callable(bR)
575-func constructor (dv,dw,bX,bY,bZ,ca,dx,dy) = {
576- let dz = bS(bR)
577- if ((dz == dz))
578- then [StringEntry(O(), cg(dv, dw, bX, bY, bZ, ca, dx)), IntegerEntry(ab(), dy)]
588+func constructor (dw,dx,bY,bZ,ca,cb,dy,dz) = {
589+ let dA = bS(bR)
590+ if ((dA == dA))
591+ then [StringEntry(O(), ch(dw, dx, bY, bZ, ca, cb, dy)), IntegerEntry(ab(), dz)]
579592 else throw("Strict value is not equal to itself.")
580593 }
581594
582595
583596
584597 @Callable(bR)
585-func constructorV2 (dA) = {
586- let dz = bS(bR)
587- if ((dz == dz))
598+func constructorV2 (dB) = {
599+ let dA = bS(bR)
600+ if ((dA == dA))
588601 then {
589- let dB = addressFromPublicKey(fromBase58String(dA))
590- if ((dB == dB))
591- then [StringEntry(R(), dA)]
602+ let dC = addressFromPublicKey(fromBase58String(dB))
603+ if ((dC == dC))
604+ then [StringEntry(R(), dB)]
592605 else throw("Strict value is not equal to itself.")
593606 }
594607 else throw("Strict value is not equal to itself.")
595608 }
596609
597610
598611
599612 @Callable(bR)
600-func constructorV3 (cc,cd,ce,cf) = {
601- let dz = bS(bR)
602- if ((dz == dz))
613+func constructorV3 (cd,ce,cf,cg) = {
614+ let dA = bS(bR)
615+ if ((dA == dA))
603616 then {
604617 let bH = split(bg(O()), m)
605-[StringEntry(O(), bU(bH[1], bH[2], bH[3], bH[4], bH[5], bH[6], bH[7], cc, cd, ce, cf))]
618+[StringEntry(O(), bV(bH[1], bH[2], bH[3], bH[4], bH[5], bH[6], bH[7], cd, ce, cf, cg))]
606619 }
607620 else throw("Strict value is not equal to itself.")
608621 }
609622
610623
611624
612625 @Callable(bR)
613-func constructorV4 (dC,dD) = {
614- let dz = bS(bR)
615- if ((dz == dz))
616- then [StringEntry(S(), dC), StringEntry(T(), makeString(dD, m))]
626+func constructorV4 (dD,dE) = {
627+ let dA = bS(bR)
628+ if ((dA == dA))
629+ then [StringEntry(S(), dD), StringEntry(T(), makeString(dE, m))]
617630 else throw("Strict value is not equal to itself.")
618631 }
619632
620633
621634
622635 @Callable(bR)
623-func constructorV5 (dE) = {
624- let dz = bS(bR)
625- if ((dz == dz))
626- then [StringEntry(X(), dE)]
636+func constructorV5 (dF) = {
637+ let dA = bS(bR)
638+ if ((dA == dA))
639+ then [StringEntry(X(), dF)]
627640 else throw("Strict value is not equal to itself.")
628641 }
629642
630643
631644
632645 @Callable(bR)
633-func constructorV6 (dF,dG) = {
634- let dH = [bS(bR), if ((addressFromString(dF) != unit))
646+func constructorV6 (dG,dH) = {
647+ let dI = [bS(bR), if ((addressFromString(dG) != unit))
635648 then true
636649 else "invalid voting emission contract address"]
637- if ((dH == dH))
638- then [StringEntry(Y(), dF), StringEntry(aa(), makeString(dG, m))]
650+ if ((dI == dI))
651+ then [StringEntry(Y(), dG), StringEntry(aa(), makeString(dH, m))]
639652 else throw("Strict value is not equal to itself.")
640653 }
641654
642655
643656
644657 @Callable(bR)
645-func setAdmins (dI) = {
646- let dz = bS(bR)
647- if ((dz == dz))
648- then [StringEntry(W(), makeString(dI, m))]
658+func setAdmins (dJ) = {
659+ let dA = bS(bR)
660+ if ((dA == dA))
661+ then [StringEntry(W(), makeString(dJ, m))]
649662 else throw("Strict value is not equal to itself.")
650663 }
651664
652665
653666
654667 @Callable(bR)
655-func activateNewPool (af,ck,cl,dJ,dK,dL,cr,dM) = {
656- let dz = cE(bR)
657- if ((dz == dz))
668+func activateNewPool (af,cl,cm,dK,dL,dM,cs,dN) = {
669+ let dA = cF(bR)
670+ if ((dA == dA))
658671 then if (isDefined(getString(aC(af))))
659672 then K((("Pool address " + af) + " already registered."))
660673 else {
661- let dN = cx(ck, 1)
662- let dO = dN._1
663- let dP = cx(cl, if (dN._3)
674+ let dO = cy(cl, 1)
675+ let dP = dO._1
676+ let dQ = cy(cm, if (dO._3)
664677 then 2
665678 else 1)
666- let dQ = dP._1
667- let dR = valueOrErrorMessage(scriptHash(addressFromStringValue(af)), ("No script has been found on pool account " + af))
668- let dS = getBinaryValue(Q())
669- let dT = cK(ck, cl)
670- if (dT)
671- then K((((("Pool " + ck) + "/") + cl) + " has already been activated."))
679+ let dR = dQ._1
680+ let dS = valueOrErrorMessage(scriptHash(addressFromStringValue(af)), ("No script has been found on pool account " + af))
681+ let dT = getBinaryValue(Q())
682+ let dU = cL(cl, cm)
683+ if (dU)
684+ then K((((("Pool " + cl) + "/") + cm) + " has already been activated."))
672685 else {
673- let dU = value(getString(this, am(toString(dO), toString(dQ))))
674- let dV = if ((ck == "WAVES"))
675- then l
676- else pow(10, 0, value(assetInfo(fromBase58String(ck))).decimals, 0, 0, DOWN)
686+ let dV = value(getString(this, am(toString(dP), toString(dR))))
677687 let dW = if ((cl == "WAVES"))
678688 then l
679689 else pow(10, 0, value(assetInfo(fromBase58String(cl))).decimals, 0, 0, DOWN)
680- let dX = Issue(dJ, dK, 1, 8, true)
681- let cj = calculateAssetId(dX)
682- let dY = toBase58String(cj)
683- let dZ = invoke(addressFromStringValue(af), "activate", [ck, cl], nil)
684- if ((dZ == dZ))
685- then if ((dZ != "success"))
690+ let dX = if ((cm == "WAVES"))
691+ then l
692+ else pow(10, 0, value(assetInfo(fromBase58String(cm))).decimals, 0, 0, DOWN)
693+ let dY = Issue(dK, dL, 1, 8, true)
694+ let ck = calculateAssetId(dY)
695+ let dZ = toBase58String(ck)
696+ let ea = invoke(addressFromStringValue(af), "activate", [cl, cm], nil)
697+ if ((ea == ea))
698+ then if ((ea != "success"))
686699 then K("Pool initialisation error happened.")
687700 else {
688- let dE = addressFromStringValue(bg(X()))
689- let ea = invoke(dE, "createOrUpdate", [dY, dJ, false], nil)
690- if ((ea == ea))
701+ let dF = addressFromStringValue(bg(X()))
702+ let eb = invoke(dF, "createOrUpdate", [dZ, dK, false], nil)
703+ if ((eb == eb))
691704 then {
692- let eb = invoke(dE, "addLabel", [dY, h], nil)
693- if ((eb == eb))
705+ let ec = invoke(dF, "addLabel", [dZ, h], nil)
706+ if ((ec == ec))
694707 then {
695- let ec = invoke(dE, "setLogo", [dY, dM], nil)
696- if ((ec == ec))
708+ let ed = invoke(dF, "setLogo", [dZ, dN], nil)
709+ if ((ed == ed))
697710 then {
698- let ed = invoke(dE, "addAssetsLink", [ck, cl, dY], nil)
699- if ((ed == ed))
711+ let ee = invoke(dF, "addAssetsLink", [cl, cm, dZ], nil)
712+ if ((ee == ee))
700713 then {
701- let ee = invoke(dE, "increaseAssetPoolsNumber", [ck], nil)
702- if ((ee == ee))
703- then $Tuple2(((dN._2 ++ dP._2) ++ [dX, Burn(cj, 1), StringEntry(am(toString(dO), toString(dQ)), ch(af, toString(o), dY, ck, cl, dV, dW, dO, dQ, l, cr)), StringEntry(aw(dY), cs(dO, dQ)), StringEntry(ay(toString(dO), toString(dQ)), ("%s__" + dY)), StringEntry(aC(af), cs(dO, dQ)), StringEntry(aE(dO, dQ), af), StringEntry(aG(dY), af), StringEntry(aF(af), dY), IntegerEntry(ae(af), dL), IntegerEntry(aB(af), i)]), dY)
714+ let ef = invoke(dF, "increaseAssetPoolsNumber", [cl], nil)
715+ if ((ef == ef))
716+ then $Tuple2(((dO._2 ++ dQ._2) ++ [dY, Burn(ck, 1), StringEntry(am(toString(dP), toString(dR)), ci(af, toString(o), dZ, cl, cm, dW, dX, dP, dR, l, cs)), StringEntry(aw(dZ), ct(dP, dR)), StringEntry(ay(toString(dP), toString(dR)), ("%s__" + dZ)), StringEntry(aC(af), ct(dP, dR)), StringEntry(aE(dP, dR), af), StringEntry(aG(dZ), af), StringEntry(aF(af), dZ), IntegerEntry(ae(af), dM), IntegerEntry(aB(af), i)]), dZ)
704717 else throw("Strict value is not equal to itself.")
705718 }
706719 else throw("Strict value is not equal to itself.")
707720 }
708721 else throw("Strict value is not equal to itself.")
709722 }
710723 else throw("Strict value is not equal to itself.")
711724 }
712725 else throw("Strict value is not equal to itself.")
713726 }
714727 else throw("Strict value is not equal to itself.")
715728 }
716729 }
717730 else throw("Strict value is not equal to itself.")
718731 }
719732
720733
721734
722735 @Callable(bR)
723-func managePool (af,ef) = {
724- let dz = bS(bR)
725- if ((dz == dz))
736+func managePool (af,eg) = {
737+ let dA = bS(bR)
738+ if ((dA == dA))
726739 then {
727- let eg = cv(af)
728- let ci = eg[w]
729- let dY = eg[x]
730- let ck = eg[y]
731- let cl = eg[z]
732- let dV = parseIntValue(eg[A])
733- let dW = parseIntValue(eg[B])
734- let dO = parseIntValue(eg[C])
735- let dQ = parseIntValue(eg[D])
736- let eh = parseIntValue(eg[E])
737- let cr = eg[F]
738-[StringEntry(am(toString(dO), toString(dQ)), ch(af, toString(ef), dY, ck, cl, dV, dW, dO, dQ, eh, cr))]
740+ let eh = cw(af)
741+ let cj = eh[w]
742+ let dZ = eh[x]
743+ let cl = eh[y]
744+ let cm = eh[z]
745+ let dW = parseIntValue(eh[A])
746+ let dX = parseIntValue(eh[B])
747+ let dP = parseIntValue(eh[C])
748+ let dR = parseIntValue(eh[D])
749+ let ei = parseIntValue(eh[E])
750+ let cs = eh[F]
751+[StringEntry(am(toString(dP), toString(dR)), ci(af, toString(eg), dZ, cl, cm, dW, dX, dP, dR, ei, cs))]
739752 }
740753 else throw("Strict value is not equal to itself.")
741754 }
742755
743756
744757
745758 @Callable(bR)
746-func emit (ei) = {
747- let ej = bR.caller
748- let ek = bR.originCaller
749- let el = valueOrErrorMessage(getString(aF(toString(ej))), "Invalid LP address called me.")
750- let em = fromBase58String(el)
751- let dD = split(valueOrElse(getString(T()), n), m)
752- let dC = addressFromStringValue(valueOrErrorMessage(getString(S()), "Legacy factory contract does not exists."))
753- if ((0 >= ei))
759+func emit (ej) = {
760+ let ek = bR.caller
761+ let el = bR.originCaller
762+ let em = valueOrErrorMessage(getString(aF(toString(ek))), "Invalid LP address called me.")
763+ let en = fromBase58String(em)
764+ let dE = split(valueOrElse(getString(T()), n), m)
765+ let dD = addressFromStringValue(valueOrErrorMessage(getString(S()), "Legacy factory contract does not exists."))
766+ if ((0 >= ej))
754767 then nil
755- else if (containsElement(dD, toString(ej)))
756- then $Tuple2(nil, dC)
757- else $Tuple2([Reissue(em, ei, true), ScriptTransfer(bR.caller, ei, em)], "success")
768+ else if (containsElement(dE, toString(ek)))
769+ then $Tuple2(nil, dD)
770+ else $Tuple2([Reissue(en, ej, true), ScriptTransfer(bR.caller, ej, en)], "success")
758771 }
759772
760773
761774
762775 @Callable(bR)
763-func burn (en) = {
764- let ej = bR.caller
765- let ek = bR.originCaller
766- let eo = value(bR.payments[0])
767- let ep = value(eo.amount)
768- let eq = toBase58String(value(eo.assetId))
769- let er = valueOrErrorMessage(getString(aF(toString(ej))), "Invalid LP address called me.")
770- if ((eq != er))
776+func burn (eo) = {
777+ let ek = bR.caller
778+ let el = bR.originCaller
779+ let ep = value(bR.payments[0])
780+ let eq = value(ep.amount)
781+ let er = toBase58String(value(ep.assetId))
782+ let es = valueOrErrorMessage(getString(aF(toString(ek))), "Invalid LP address called me.")
783+ if ((er != es))
771784 then K("Invalid asset passed.")
772- else if ((en != ep))
785+ else if ((eo != eq))
773786 then K("Invalid amount passed.")
774787 else {
775- let em = fromBase58String(er)
776- $Tuple2([Burn(em, en)], "success")
788+ let en = fromBase58String(es)
789+ $Tuple2([Burn(en, eo)], "success")
777790 }
778791 }
779792
780793
781794
782795 @Callable(bR)
783-func modifyWeight (cj,es) = {
784- let dz = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, Y()), "")))
796+func modifyWeight (ck,et) = {
797+ let dA = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, Y()), "")))
785798 then true
786799 else bS(bR)
787- if ((dz == dz))
800+ if ((dA == dA))
788801 then {
789- let aD = bg(aG(cj))
790- let et = ae(aD)
791- let eu = ae(g)
792- let ev = valueOrElse(getInteger(eu), 0)
793- let dL = valueOrElse(getInteger(et), 0)
794- let ew = es
802+ let aD = bg(aG(ck))
803+ let eu = ae(aD)
804+ let ev = ae(g)
805+ let ew = valueOrElse(getInteger(ev), 0)
806+ let dM = valueOrElse(getInteger(eu), 0)
807+ let ex = et
795808 let bH = split(bg(O()), m)
796- let dv = bJ(bH)
797- let ex = invoke(dv, "onModifyWeight", [cj, aD], nil)
798- if ((ex == ex))
809+ let dw = bJ(bH)
810+ let ey = invoke(dw, "onModifyWeight", [ck, aD], nil)
811+ if ((ey == ey))
799812 then {
800- let ey = if ((ev == 0))
813+ let ez = if ((ew == 0))
801814 then nil
802- else [IntegerEntry(eu, 0)]
803- let ez = ag(aD, 0)
804- let eA = getInteger(ez)
805- let eB = if ((eA == unit))
815+ else [IntegerEntry(ev, 0)]
816+ let eA = ag(aD, 0)
817+ let eB = getInteger(eA)
818+ let eC = if ((eB == unit))
806819 then nil
807- else [DeleteEntry(ez)]
808- (([IntegerEntry(et, ew)] ++ ey) ++ eB)
820+ else [DeleteEntry(eA)]
821+ (([IntegerEntry(eu, ex)] ++ ez) ++ eC)
809822 }
810823 else throw("Strict value is not equal to itself.")
811824 }
812825 else throw("Strict value is not equal to itself.")
813826 }
814827
815828
816829
817830 @Callable(bR)
818-func modifyWeights (eC,eD,eE,eF) = {
819- let dz = bS(bR)
820- if ((dz == dz))
831+func modifyWeights (eD,eE,eF,eG) = {
832+ let dA = bS(bR)
833+ if ((dA == dA))
821834 then {
822- let eG = ((5 * f) / 100)
823835 let eH = ((5 * f) / 100)
824836 let eI = ((5 * f) / 100)
837+ let eJ = ((5 * f) / 100)
825838 let bH = split(bg(O()), m)
826- let eJ = bJ(bH)
827- let eK = bK(bH)
828- let eL = ae(eC)
839+ let eK = bJ(bH)
840+ let eL = bK(bH)
829841 let eM = ae(eD)
830842 let eN = ae(eE)
831843 let eO = ae(eF)
832- let eP = bj(eL)
844+ let eP = ae(eG)
833845 let eQ = bj(eM)
834- let eR = (eP - eI)
835- let eS = (eQ - eI)
836- if ((0 >= eR))
837- then K(("invalid btcWeightNew: " + toString(eR)))
838- else if ((0 >= eS))
839- then K(("invalid ethWeightNew: " + toString(eS)))
846+ let eR = bj(eN)
847+ let eS = (eQ - eJ)
848+ let eT = (eR - eJ)
849+ if ((0 >= eS))
850+ then K(("invalid btcWeightNew: " + toString(eS)))
851+ else if ((0 >= eT))
852+ then K(("invalid ethWeightNew: " + toString(eT)))
840853 else {
841- let eT = bg(aF(eC))
842854 let eU = bg(aF(eD))
843855 let eV = bg(aF(eE))
844856 let eW = bg(aF(eF))
845- let eX = invoke(eJ, "onModifyWeight", [eT, eC], nil)
846- if ((eX == eX))
857+ let eX = bg(aF(eG))
858+ let eY = invoke(eK, "onModifyWeight", [eU, eD], nil)
859+ if ((eY == eY))
847860 then {
848- let eY = invoke(eJ, "onModifyWeight", [eU, eD], nil)
849- if ((eY == eY))
861+ let eZ = invoke(eK, "onModifyWeight", [eV, eE], nil)
862+ if ((eZ == eZ))
850863 then {
851- let eZ = invoke(eJ, "onModifyWeight", [eV, eE], nil)
852- if ((eZ == eZ))
864+ let fa = invoke(eK, "onModifyWeight", [eW, eF], nil)
865+ if ((fa == fa))
853866 then {
854- let fa = invoke(eJ, "onModifyWeight", [eW, eF], nil)
855- if ((fa == fa))
856- then [IntegerEntry(eL, eR), IntegerEntry(eM, eS), IntegerEntry(eN, eG), IntegerEntry(eO, eH), IntegerEntry(ag(eC, 0), eP), IntegerEntry(ag(eD, 0), eQ), IntegerEntry(ag(eE, 0), eG), IntegerEntry(ag(eF, 0), eH)]
867+ let fb = invoke(eK, "onModifyWeight", [eX, eG], nil)
868+ if ((fb == fb))
869+ then [IntegerEntry(eM, eS), IntegerEntry(eN, eT), IntegerEntry(eO, eH), IntegerEntry(eP, eI), IntegerEntry(ag(eD, 0), eQ), IntegerEntry(ag(eE, 0), eR), IntegerEntry(ag(eF, 0), eH), IntegerEntry(ag(eG, 0), eI)]
857870 else throw("Strict value is not equal to itself.")
858871 }
859872 else throw("Strict value is not equal to itself.")
860873 }
861874 else throw("Strict value is not equal to itself.")
862875 }
863876 else throw("Strict value is not equal to itself.")
864877 }
865878 }
866879 else throw("Strict value is not equal to itself.")
867880 }
868881
869882
870883
871884 @Callable(bR)
872885 func checkWxEmissionPoolLabel (aI,aJ) = {
873- let fb = {
886+ let fc = {
874887 let bn = getBoolean(aH(aI, aJ))
875888 if ($isInstanceOf(bn, "Boolean"))
876889 then {
877- let dh = bn
878- dh
890+ let di = bn
891+ di
879892 }
880893 else false
881894 }
882- $Tuple2(nil, fb)
895+ $Tuple2(nil, fc)
883896 }
884897
885898
886899
887900 @Callable(bR)
888901 func setWxEmissionPoolLabel (aI,aJ) = {
889- let dz = cE(bR)
890- if ((dz == dz))
902+ let dA = cF(bR)
903+ if ((dA == dA))
891904 then $Tuple2([BooleanEntry(aH(aI, aJ), true)], unit)
892905 else throw("Strict value is not equal to itself.")
893906 }
894907
895908
896909
897910 @Callable(bR)
898911 func deleteWxEmissionPoolLabel (aI,aJ) = {
899- let dz = if ((bR.caller == this))
912+ let dA = if ((bR.caller == this))
900913 then true
901- else cE(bR)
902- if ((dz == dz))
914+ else cF(bR)
915+ if ((dA == dA))
903916 then $Tuple2([DeleteEntry(aH(aI, aJ))], unit)
904917 else throw("Strict value is not equal to itself.")
905918 }
906919
907920
908921
909922 @Callable(bR)
910923 func onVerificationLoss (aR) = {
911- let dz = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, X()), "")))
924+ let dA = if ((toBase58String(bR.caller.bytes) == valueOrElse(getString(this, X()), "")))
912925 then true
913926 else bS(bR)
914- if ((dz == dz))
927+ if ((dA == dA))
915928 then {
916- let dG = bL()
917- let fc = if ((size(dG) > 0))
929+ let dH = bL()
930+ let fd = if ((size(dH) > 0))
918931 then true
919932 else K("invalid price assets")
920- if ((fc == fc))
933+ if ((fd == fd))
921934 then {
922- func fd (fe,ff) = {
923- let db = invoke(this, "deleteWxEmissionPoolLabel", [aR, ff], nil)
924- if ((db == db))
935+ func fe (ff,fg) = {
936+ let dc = invoke(this, "deleteWxEmissionPoolLabel", [aR, fg], nil)
937+ if ((dc == dc))
925938 then unit
926939 else throw("Strict value is not equal to itself.")
927940 }
928941
929- let fg = {
930- let fh = dG
931- let fi = size(fh)
932- let fj = unit
933- func fk (fl,fm) = if ((fm >= fi))
934- then fl
935- else fd(fl, fh[fm])
942+ let fh = {
943+ let fi = dH
944+ let fj = size(fi)
945+ let fk = unit
946+ func fl (fm,fn) = if ((fn >= fj))
947+ then fm
948+ else fe(fm, fi[fn])
936949
937- func fn (fl,fm) = if ((fm >= fi))
938- then fl
950+ func fo (fm,fn) = if ((fn >= fj))
951+ then fm
939952 else throw("List size exceeds 13")
940953
941- fn(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fk(fj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
954+ fo(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fl(fk, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
942955 }
943- if ((fg == fg))
956+ if ((fh == fh))
944957 then $Tuple2(nil, unit)
945958 else throw("Strict value is not equal to itself.")
946959 }
947960 else throw("Strict value is not equal to itself.")
948961 }
949962 else throw("Strict value is not equal to itself.")
950963 }
951964
952965
953966
954967 @Callable(bR)
955968 func isPoolOneTokenOperationsDisabledREADONLY (af) = {
956- let eg = cv(af)
957- let aq = $Tuple2(parseIntValue(eg[C]), parseIntValue(eg[D]))
958- let fo = valueOrElse(getBoolean(ap(aq)), false)
959- let fp = valueOrElse(getBoolean(as()), false)
960- $Tuple2(nil, if (fp)
969+ let eh = cw(af)
970+ let aq = $Tuple2(parseIntValue(eh[C]), parseIntValue(eh[D]))
971+ let fp = valueOrElse(getBoolean(ap(aq)), false)
972+ let fq = valueOrElse(getBoolean(as()), false)
973+ $Tuple2(nil, if (fq)
961974 then true
962- else fo)
975+ else fp)
963976 }
964977
965978
966979
967980 @Callable(bR)
968981 func isPoolSwapDisabledREADONLY (af) = {
969- let eg = cv(af)
970- let aq = $Tuple2(parseIntValue(eg[C]), parseIntValue(eg[D]))
971- let fq = valueOrElse(getBoolean(at(aq)), false)
972- let fr = valueOrElse(getBoolean(av()), false)
973- $Tuple2(nil, if (fr)
982+ let eh = cw(af)
983+ let aq = $Tuple2(parseIntValue(eh[C]), parseIntValue(eh[D]))
984+ let fr = valueOrElse(getBoolean(at(aq)), false)
985+ let fs = valueOrElse(getBoolean(av()), false)
986+ $Tuple2(nil, if (fs)
974987 then true
975- else fq)
988+ else fr)
976989 }
977990
978991
979992
980993 @Callable(bR)
981994 func getInFeeREADONLY (af) = {
982- let fs = cH(aK(af), aL(), 0)
983- $Tuple2(nil, fs)
995+ let ft = cI(aK(af), aL(), 0)
996+ $Tuple2(nil, ft)
984997 }
985998
986999
9871000
9881001 @Callable(bR)
9891002 func getOutFeeREADONLY (af) = {
990- let fs = cH(aN(af), aO(), fraction(10, b, 10000))
991- $Tuple2(nil, fs)
1003+ let ft = cI(aN(af), aO(), fraction(10, b, 10000))
1004+ $Tuple2(nil, ft)
9921005 }
9931006
9941007
9951008
9961009 @Callable(bR)
997-func getSwapFeeREADONLY (ft) = {
998- let fu = {
999- let bn = getString(this, aM(ft))
1010+func getSwapFeeREADONLY (fu) = {
1011+ let fv = {
1012+ let bn = getString(this, aM(fu))
10001013 if ($isInstanceOf(bn, "String"))
10011014 then {
10021015 let bo = bn
1003- let fv = split(bo, m)
1004- let fw = parseIntValue(fv[1])
1005- let fx = parseIntValue(fv[2])
1006- $Tuple2(fw, fx)
1016+ let fw = split(bo, m)
1017+ let fx = parseIntValue(fw[1])
1018+ let fy = parseIntValue(fw[2])
1019+ $Tuple2(fx, fy)
10071020 }
10081021 else if ($isInstanceOf(bn, "Unit"))
10091022 then unit
10101023 else throw("Match error")
10111024 }
1012- $Tuple2(nil, fu)
1025+ $Tuple2(nil, fv)
10131026 }
10141027
10151028
10161029
10171030 @Callable(bR)
1018-func poolInfoREADONLY (fy,fz) = {
1019- let fA = getInteger(this, ak(fy))
1031+func poolInfoREADONLY (fz,fA) = {
10201032 let fB = getInteger(this, ak(fz))
1021- let fC = getString(this, aE(value(fA), value(fB)))
1022- let fD = getString(this, aF(value(fC)))
1023- let dT = if (if (isDefined(fA))
1024- then isDefined(fB)
1033+ let fC = getInteger(this, ak(fA))
1034+ let fD = getString(this, aE(value(fB), value(fC)))
1035+ let fE = getString(this, aF(value(fD)))
1036+ let dU = if (if (isDefined(fB))
1037+ then isDefined(fC)
10251038 else false)
1026- then isDefined(fC)
1039+ then isDefined(fD)
10271040 else false
1028- let fE = if (dT)
1029- then $Tuple2(addressFromStringValue(value(fC)), bk(value(fD)))
1041+ let fF = if (dU)
1042+ then $Tuple2(addressFromStringValue(value(fD)), bk(value(fE)))
10301043 else unit
1031- $Tuple2(nil, fE)
1044+ $Tuple2(nil, fF)
10321045 }
10331046
10341047
10351048
10361049 @Callable(bR)
10371050 func getPoolStatusREADONLY (af) = {
1038- let cw = split(bg(aC(af)), m)
1039- let an = cw[1]
1040- let ao = cw[2]
1041- let cN = split(bg(am(an, ao)), m)
1042- $Tuple2(nil, parseIntValue(cN[w]))
1051+ let cx = split(bg(aC(af)), m)
1052+ let an = cx[1]
1053+ let ao = cx[2]
1054+ let cO = split(bg(am(an, ao)), m)
1055+ $Tuple2(nil, parseIntValue(cO[w]))
10431056 }
10441057
10451058
10461059
10471060 @Callable(bR)
10481061 func getPoolConfigREADONLY (af) = {
1049- let cw = split(bg(aC(af)), m)
1050- let an = cw[1]
1051- let ao = cw[2]
1052- let cN = split(bg(am(an, ao)), m)
1053- $Tuple2(nil, cN)
1062+ let cx = split(bg(aC(af)), m)
1063+ let an = cx[1]
1064+ let ao = cx[2]
1065+ let cO = split(bg(am(an, ao)), m)
1066+ $Tuple2(nil, cO)
10541067 }
10551068
10561069
10571070
10581071 @Callable(bR)
1059-func getPoolConfigByLpAssetIdREADONLY (dY) = {
1060- let cw = split(bg(aw(dY)), m)
1061- let an = cw[1]
1062- let ao = cw[2]
1063- let cN = split(bg(am(an, ao)), m)
1064- $Tuple2(nil, cN)
1072+func getPoolConfigByLpAssetIdREADONLY (dZ) = {
1073+ let cx = split(bg(aw(dZ)), m)
1074+ let an = cx[1]
1075+ let ao = cx[2]
1076+ let cO = split(bg(am(an, ao)), m)
1077+ $Tuple2(nil, cO)
10651078 }
10661079
10671080
10681081
10691082 @Callable(bR)
1070-func poolExistsREADONLY (aI,aJ) = $Tuple2(nil, cK(aI, aJ))
1083+func poolExistsREADONLY (aI,aJ) = $Tuple2(nil, cL(aI, aJ))
10711084
10721085
10731086
10741087 @Callable(bR)
10751088 func skipOrderValidationREADONLY (af) = $Tuple2(nil, valueOrElse(getBoolean(aS(af)), false))
10761089
10771090
10781091
10791092 @Callable(bR)
10801093 func getChangeAmpConfigREADONLY (af) = {
1081- let fF = getIntegerValue(aT(af))
1082- let fG = getIntegerValue(aU(af))
1083- let fH = getIntegerValue(aV(af))
1084- $Tuple2(nil, [fF, fG, fH])
1094+ let fG = getIntegerValue(aT(af))
1095+ let fH = getIntegerValue(aU(af))
1096+ let fI = getIntegerValue(aV(af))
1097+ $Tuple2(nil, [fG, fH, fI])
10851098 }
10861099
10871100
10881101
10891102 @Callable(bR)
1090-func getPoolWeightREADONLY (cj) = {
1091- let af = bg(aG(cj))
1092- let fI = valueOrElse(getInteger(ae(af)), 0)
1093- $Tuple2(nil, fI)
1103+func getPoolWeightREADONLY (ck) = {
1104+ let af = bg(aG(ck))
1105+ let fJ = valueOrElse(getInteger(ae(af)), 0)
1106+ $Tuple2(nil, fJ)
10941107 }
10951108
10961109
10971110
10981111 @Callable(bR)
10991112 func deletePool (aD) = {
1100- let eg = cv(aD)
1101- let dz = if ((toString(bR.caller) == cR(aD)))
1102- then if (cY(aD))
1103- then true
1104- else K("Pool is not empty")
1105- else bS(bR)
1106- if ((dz == dz))
1113+ let eh = cw(aD)
1114+ let dA = [if (if (bU(bR))
1115+ then true
1116+ else if ((toString(bR.caller) == cS(aD)))
1117+ then cZ(aD)
1118+ else false)
1119+ then true
1120+ else K("Pool is not empty")]
1121+ if ((dA == dA))
11071122 then {
1108- let fJ = if ((valueOrElse(getInteger(ae(aD)), 0) == 0))
1123+ let fK = if ((valueOrElse(getInteger(ae(aD)), 0) == 0))
11091124 then true
11101125 else K("Pool weight is not Zero")
1111- if ((fJ == fJ))
1126+ if ((fK == fK))
11121127 then {
1113- let fK = if ((eg[w] == toString(r)))
1128+ let fL = if ((eh[w] == toString(r)))
11141129 then true
11151130 else K("Pool must be SHUTDOWN (4)")
1116- if ((fK == fK))
1131+ if ((fL == fL))
11171132 then {
1118- let fL = cQ(aD)
1119- let aI = fL._1
1120- let aJ = fL._2
1121- let cj = fL._3
1122- let an = fL._4
1123- let ao = fL._5
1124- let cT = addressFromStringValue(getStringValue(Z()))
1125- let fM = invoke(cT, "deletePool", [aI, aJ], nil)
1126- if ((fM == fM))
1133+ let fM = cR(aD)
1134+ let aI = fM._1
1135+ let aJ = fM._2
1136+ let ck = fM._3
1137+ let an = fM._4
1138+ let ao = fM._5
1139+ let cU = addressFromStringValue(getStringValue(Z()))
1140+ let fN = invoke(cU, "deletePool", [aI, aJ], nil)
1141+ if ((fN == fN))
11271142 then {
1128- let dF = addressFromStringValue(getStringValue(Y()))
1129- let fN = invoke(dF, "deletePool", [aI, aJ], nil)
1130- if ((fN == fN))
1143+ let dG = addressFromStringValue(getStringValue(Y()))
1144+ let fO = invoke(dG, "deletePool", [aI, aJ], nil)
1145+ if ((fO == fO))
11311146 then {
1132- let dE = addressFromStringValue(getStringValue(X()))
1133- let fO = invoke(dE, "deletePool", [aI, aJ], nil)
1134- if ((fO == fO))
1135- then [DeleteEntry(aF(aD)), DeleteEntry(aC(aD)), DeleteEntry(ay(toString(an), toString(ao))), DeleteEntry(aE(an, ao)), DeleteEntry(am(toString(an), toString(ao))), DeleteEntry(aw(cj)), DeleteEntry(aG(cj)), DeleteEntry(aH(aI, aJ)), DeleteEntry(ae(aD)), DeleteEntry(aB(aD)), DeleteEntry(aK(aD)), DeleteEntry(aN(aD)), DeleteEntry(aS(aD)), DeleteEntry(aT(aD)), DeleteEntry(aU(aD)), DeleteEntry(aV(aD))]
1147+ let dF = addressFromStringValue(getStringValue(X()))
1148+ let fP = invoke(dF, "deletePool", [aI, aJ], nil)
1149+ if ((fP == fP))
1150+ then [DeleteEntry(aF(aD)), DeleteEntry(aC(aD)), DeleteEntry(ay(toString(an), toString(ao))), DeleteEntry(aE(an, ao)), DeleteEntry(am(toString(an), toString(ao))), DeleteEntry(aw(ck)), DeleteEntry(aG(ck)), DeleteEntry(aH(aI, aJ)), DeleteEntry(ae(aD)), DeleteEntry(aB(aD)), DeleteEntry(aK(aD)), DeleteEntry(aN(aD)), DeleteEntry(aS(aD)), DeleteEntry(aT(aD)), DeleteEntry(aU(aD)), DeleteEntry(aV(aD))]
11361151 else throw("Strict value is not equal to itself.")
11371152 }
11381153 else throw("Strict value is not equal to itself.")
11391154 }
11401155 else throw("Strict value is not equal to itself.")
11411156 }
11421157 else throw("Strict value is not equal to itself.")
11431158 }
11441159 else throw("Strict value is not equal to itself.")
11451160 }
11461161 else throw("Strict value is not equal to itself.")
11471162 }
11481163
11491164
11501165
11511166 @Callable(bR)
1152-func getPrice (ft) = {
1153- let af = addressFromStringValue(ft)
1154- let cN = cv(ft)
1155- let cj = fromBase58String(cN[x])
1156- let fP = cN[y]
1157- let aJ = cN[z]
1158- let fQ = value(assetInfo(cj)).quantity
1159- let fR = {
1160- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [fP], nil)
1161- if ($isInstanceOf(fS, "Int"))
1162- then fS
1163- else throw(($getType(fS) + " couldn't be cast to Int"))
1167+func getPrice (fu) = {
1168+ let af = addressFromStringValue(fu)
1169+ let cO = cw(fu)
1170+ let ck = fromBase58String(cO[x])
1171+ let fQ = cO[y]
1172+ let aJ = cO[z]
1173+ let fR = value(assetInfo(ck)).quantity
1174+ let fS = {
1175+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [fQ], nil)
1176+ if ($isInstanceOf(fT, "Int"))
1177+ then fT
1178+ else throw(($getType(fT) + " couldn't be cast to Int"))
11641179 }
1165- let fT = {
1166- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [aJ], nil)
1167- if ($isInstanceOf(fS, "Int"))
1168- then fS
1169- else throw(($getType(fS) + " couldn't be cast to Int"))
1180+ let fU = {
1181+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [aJ], nil)
1182+ if ($isInstanceOf(fT, "Int"))
1183+ then fT
1184+ else throw(($getType(fT) + " couldn't be cast to Int"))
11701185 }
1171- let fU = if ((fQ == 0))
1186+ let fV = if ((fR == 0))
11721187 then 0
11731188 else {
1174- let fS = ({
1175- let fS = invoke(af, "calcPricesWrapperREADONLY", [fR, fT, fQ], nil)
1176- if ($isInstanceOf(fS, "List[Any]"))
1177- then fS
1178- else throw(($getType(fS) + " couldn't be cast to List[Any]"))
1189+ let fT = ({
1190+ let fT = invoke(af, "calcPricesWrapperREADONLY", [fS, fU, fR], nil)
1191+ if ($isInstanceOf(fT, "List[Any]"))
1192+ then fT
1193+ else throw(($getType(fT) + " couldn't be cast to List[Any]"))
11791194 })[0]
1180- if ($isInstanceOf(fS, "String"))
1181- then fS
1182- else throw(($getType(fS) + " couldn't be cast to String"))
1195+ if ($isInstanceOf(fT, "String"))
1196+ then fT
1197+ else throw(($getType(fT) + " couldn't be cast to String"))
11831198 }
1184- $Tuple2(nil, fU)
1199+ $Tuple2(nil, fV)
11851200 }
11861201
11871202
11881203
11891204 @Callable(bR)
1190-func checkBalance (dY) = {
1191- let ft = bg(aG(dY))
1192- let af = addressFromStringValue(ft)
1193- let cN = cv(ft)
1194- let fy = cN[y]
1195- let fz = cN[z]
1196- let fV = getIntegerValue(this, aP())
1197- let fW = valueOrElse(getInteger(this, aQ(fy)), fV)
1198- let fX = valueOrElse(getInteger(this, aQ(fz)), fV)
1199- let fY = {
1200- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [fy], nil)
1201- if ($isInstanceOf(fS, "Int"))
1202- then fS
1203- else throw(($getType(fS) + " couldn't be cast to Int"))
1205+func checkBalance (dZ) = {
1206+ let fu = bg(aG(dZ))
1207+ let af = addressFromStringValue(fu)
1208+ let cO = cw(fu)
1209+ let fz = cO[y]
1210+ let fA = cO[z]
1211+ let fW = getIntegerValue(this, aP())
1212+ let fX = valueOrElse(getInteger(this, aQ(fz)), fW)
1213+ let fY = valueOrElse(getInteger(this, aQ(fA)), fW)
1214+ let fZ = {
1215+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [fz], nil)
1216+ if ($isInstanceOf(fT, "Int"))
1217+ then fT
1218+ else throw(($getType(fT) + " couldn't be cast to Int"))
12041219 }
1205- let fZ = {
1206- let fS = invoke(af, "getAccBalanceWrapperREADONLY", [fz], nil)
1207- if ($isInstanceOf(fS, "Int"))
1208- then fS
1209- else throw(($getType(fS) + " couldn't be cast to Int"))
1220+ let ga = {
1221+ let fT = invoke(af, "getAccBalanceWrapperREADONLY", [fA], nil)
1222+ if ($isInstanceOf(fT, "Int"))
1223+ then fT
1224+ else throw(($getType(fT) + " couldn't be cast to Int"))
12101225 }
1211- let ga = (fY >= (fW / 2))
12121226 let gb = (fZ >= (fX / 2))
1213- let gc = if (ga)
1214- then gb
1227+ let gc = (ga >= (fY / 2))
1228+ let gd = if (gb)
1229+ then gc
12151230 else false
1216- $Tuple2(nil, gc)
1231+ $Tuple2(nil, gd)
12171232 }
12181233
12191234
1220-@Verifier(gd)
1221-func ge () = {
1222- let gf = {
1235+@Verifier(ge)
1236+func gf () = {
1237+ let gg = {
12231238 let bn = bM()
12241239 if ($isInstanceOf(bn, "ByteVector"))
12251240 then {
12261241 let bT = bn
12271242 bT
12281243 }
12291244 else if ($isInstanceOf(bn, "Unit"))
1230- then gd.senderPublicKey
1245+ then ge.senderPublicKey
12311246 else throw("Match error")
12321247 }
1233- sigVerify(gd.bodyBytes, gd.proofs[0], gf)
1248+ sigVerify(ge.bodyBytes, ge.proofs[0], gg)
12341249 }
12351250

github/deemru/w8io/026f985 
345.57 ms