tx · 9jhVTEgXfRXWDH2D1zrFnskFRYyh8hVuUgxsi9VPGi3h

3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J:  -0.03000000 Waves

2023.10.12 10:28 [2795087] smart account 3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J > SELF 0.00000000 Waves

{ "type": 13, "id": "9jhVTEgXfRXWDH2D1zrFnskFRYyh8hVuUgxsi9VPGi3h", "fee": 3000000, "feeAssetId": null, "timestamp": 1697095733198, "version": 2, "chainId": 84, "sender": "3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J", "senderPublicKey": "4DthuG3xjZV9WtZ34Y66AummdAr67wRzwWsVQL4y2bob", "proofs": [ "2mRrx8nCy4fkzrF8ZoNhEShghLv22uHSLTiaw6vtgkfYPZZRkaSUJNhVqLX9B9kmNjwMsEqoYaVH44SFVoAssEhH", "5xJgt8gVubkLTVQ5ApDErWyZYHL9ZpgJWVzDJaKweSJ1yd3XEMUEePhvq1FSfJkxynJNfZsyuxXW4bG6xPdYxMUN", "4AnBbPFC1iVsWtXcGPknyEnwgDNr3ZknGX17x2YMcR2pKw4jH55aPHwSoPZbxg3aDoenFHhBokhha4p2WswyjMDk" ], "script": "base64:BgIzCAISBwoFCAgBAQgSBAoCAQESABIDCgEBEgASABIAEgASABIDCgEIEgQKAggBEgQKAggBXwAJc2VwYXJhdG9yAgJfXwADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDYJALYCAQUFTVVMVDYABk1VTFRYOAkAtgIBBQVNVUxUOAAHTVVMVFgxOAkAtgIBAICAkLu61q3wDQAKV0FWRVNJRFNUUgIFV0FWRVMAB1dBVkVTSUQJANkEAQUKV0FWRVNJRFNUUgAJREFZTUlMTElTAIC4mSkACU1BWEJBU0tFVAAJABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAEAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAACABRJZHhDb250cm9sQ2ZnUnBkRGFwcAADABVJZHhDb250cm9sQ2ZnTWF0aERhcHAABAAcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAAFABVJZHhDb250cm9sQ2ZnUmVzdERhcHAABgAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAABwAcSWR4Q29udHJvbENmZ05zYnRTdGFraW5nRGFwcAAIABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAkAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAANAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBHWtleUNmZ1gyR25zYnRPZmZlckhlaWdodFN0YXJ0AAIlJXMlc19fY29uZmlnX194Mkduc2J0T2ZmZXJIZWlnaHRTdGFydAEba2V5Q2ZnWDJHbnNidE9mZmVySGVpZ2h0RW5kAAIjJXMlc19fY29uZmlnX194Mkduc2J0T2ZmZXJIZWlnaHRFbmQBEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM040TlM3ZDRKbzlhNkYxNExpRlVLS1lWZFVra2YyZVA0WngACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAMbWF0aENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUVSWR4Q29udHJvbENmZ01hdGhEYXBwABBuZXV0cmlub0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAPYXVjdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAATbmV1dHJpbm9EYW9Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFaWlKUmtWNjZUMU5XN01vWTNER2dDYXhvRFJDZXo4ZkwAElJFTkVXX1NUQVJUX0hFSUdIVAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEda2V5Q2ZnWDJHbnNidE9mZmVySGVpZ2h0U3RhcnQAAAAAEFJFTkVXX0VORF9IRUlHSFQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBG2tleUNmZ1gyR25zYnRPZmZlckhlaWdodEVuZAAAAAEMa2V5Qm9uZEFzc2V0AAINYm9uZF9hc3NldF9pZAEXa2V5VXNlckduc2J0UmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGyVzJXNfdXNlckduc2J0UmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBGmtleU5ldXRyaW5vQ29udHJhY3RBZGRyZXNzAAIbJXNfX25ldXRyaW5vQ29udHJhY3RBZGRyZXNzARZrZXlNYXRoQ29udHJhY3RBZGRyZXNzAAIQJXNfX21hdGhDb250cmFjdAEQa2V5TWluTG9ja0Ftb3VudAACESVzX19taW5Mb2NrQW1vdW50AQtrZXlIYWxmTGlmZQACDCVzX19oYWxmTGlmZQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAgZhbW91bnQFA25pbAUJc2VwYXJhdG9yARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBXN0YXJ0BQNuaWwFCXNlcGFyYXRvcgEVa2V5TG9ja1BhcmFtVXNlckduc2J0AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBWdOc2J0BQNuaWwFCXNlcGFyYXRvcgEZa2V5VXNlckNvbnNlbnRlZFRvWDJHbnNidAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhJjb25zZW50ZWRUb1gyR25zYnQFA25pbAUJc2VwYXJhdG9yARBrZXlIaXN0b3J5UmVjb3JkAwR0eXBlC3VzZXJBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgdoaXN0b3J5CQDMCAIFBHR5cGUJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCCQDYBAEFBHR4SWQFA25pbAUJc2VwYXJhdG9yARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICEWFjdGl2ZVRvdGFsTG9ja2VkBQNuaWwFCXNlcGFyYXRvcgEWa2V5TG9ja1BhcmFtVG90YWxHbnNidAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICEGFjdGl2ZVRvdGFsR25zYnQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c0xvY2tzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAgpsb2Nrc0NvdW50BQNuaWwFCXNlcGFyYXRvcgESa2V5U3RhdHNVc2Vyc0NvdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIQYWN0aXZlVXNlcnNDb3VudAUDbmlsBQlzZXBhcmF0b3IBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQl0aW1lc3RhbXAJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIFc3RhdHMJAMwIAgIPZGVwb3NpdEFtdEJ5RGF5CQDMCAIJAKQDAQUJdGltZXN0YW1wBQNuaWwFCXNlcGFyYXRvcgEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgVzdGF0cwkAzAgCAhBkZXBvc2l0QW10VG90YWxzBQNuaWwFCXNlcGFyYXRvcgENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAhVzdXBwb3J0ZWRSZXdhcmRBc3NldHMBEWtleURlcG9zaXROdW1MYXN0AAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQlzZXBhcmF0b3IBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdXNlclJ3ZEZyb21EZXBOdW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCCmRlcG9zaXROdW0DdGtuCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhVyd2RQZXJOc2J0U3VtQnlEZXBOdW0JAMwIAgkApAMBBQpkZXBvc2l0TnVtCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBCWtleVJld2FyZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA3J3ZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yAQprZXlDbGFpbWVkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDY2xtCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQN0a24JALkJAgkAzAgCAgQlcyVzCQDMCAICDm5vdERpc3RyaWJ1dGVkCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBBXRvWDE4AgdvcmlnVmFsCG9yaWdNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHTVVMVFgxOAUIb3JpZ011bHQBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9NYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRTdHJPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEPdG9BZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAiFjb3VsZG4ndCBwYXJzZSBwYXNzZWQgYWRkcmVzc1N0cj0FCmFkZHJlc3NTdHIBC3RvQXNzZXRWZWN0AQhhc3NldFN0cgMJAAACBQhhc3NldFN0cgUKV0FWRVNJRFNUUgUEdW5pdAkA2QQBBQhhc3NldFN0cgEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBE2Zvcm1hdEhpc3RvcnlSZWNvcmQECW9sZEFtb3VudAhvbGRTdGFydAluZXdBbW91bnQIbmV3U3RhcnQJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUJb2xkQW1vdW50CQDMCAIJAKQDAQUIb2xkU3RhcnQJAMwIAgkApAMBBQluZXdBbW91bnQJAMwIAgkApAMBBQhuZXdTdGFydAUDbmlsBQlzZXBhcmF0b3IBGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAIEdXNlcg5jbGFpbWVkUmV3YXJkcwkAuQkCCQDMCAICCCVzJWQlZCVzCQDMCAIFBHVzZXIJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIFDmNsYWltZWRSZXdhcmRzBQNuaWwFCXNlcGFyYXRvcgESSGlzdG9yeVJlY29yZEVudHJ5BwR0eXBlC3VzZXJBZGRyZXNzBHR4SWQJb2xkQW1vdW50CG9sZFN0YXJ0CW5ld0Ftb3VudAhuZXdTdGFydAkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDBQR0eXBlBQt1c2VyQWRkcmVzcwUEdHhJZAkBE2Zvcm1hdEhpc3RvcnlSZWNvcmQEBQlvbGRBbW91bnQFCG9sZFN0YXJ0BQluZXdBbW91bnQFCG5ld1N0YXJ0ARFDbGFpbUhpc3RvcnlFbnRyeQMLdXNlckFkZHJlc3MEdHhJZA5jbGFpbWVkUmV3YXJkcwkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDAgVjbGFpbQULdXNlckFkZHJlc3MFBHR4SWQJARhmb3JtYXRDbGFpbUhpc3RvcnlSZWNvcmQCCQClCAEFC3VzZXJBZGRyZXNzBQ5jbGFpbWVkUmV3YXJkcwELU3RhdHNSZXN1bHQEDnRvdGFsTG9ja2VkSW5jDGxvY2tDb3VudEluYw11c2Vyc0NvdW50SW5jDXRvdGFsR25zYnRJbmMECmxvY2tzQ291bnQJAQxnZXRJbnRPclplcm8BCQESa2V5U3RhdHNMb2Nrc0NvdW50AAQKdXNlcnNDb3VudAkBDGdldEludE9yWmVybwEJARJrZXlTdGF0c1VzZXJzQ291bnQABAt0b3RhbEFtb3VudAkBDGdldEludE9yWmVybwEJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAEDnRvdGFsQW1vdW50TmV3CQBkAgULdG90YWxBbW91bnQFDnRvdGFsTG9ja2VkSW5jBAp0b3RhbEduc2J0CQEMZ2V0SW50T3JFbHNlAgkBFmtleUxvY2tQYXJhbVRvdGFsR25zYnQABQt0b3RhbEFtb3VudAkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNMb2Nrc0NvdW50AAkAZAIFCmxvY2tzQ291bnQFDGxvY2tDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVN0YXRzVXNlcnNDb3VudAAJAGQCBQp1c2Vyc0NvdW50BQ11c2Vyc0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABQ50b3RhbEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVRvdGFsR25zYnQACQBkAgUKdG90YWxHbnNidAUNdG90YWxHbnNidEluYwUDbmlsBQt0b3RhbEFtb3VudAUOdG90YWxBbW91bnROZXcBD0xvY2tQYXJhbXNFbnRyeQQLdXNlckFkZHJlc3MKbnNidEFtb3VudAVzdGFydAtnTnNidEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwUKbnNidEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleUxvY2tQYXJhbVVzZXJHbnNidAEFC3VzZXJBZGRyZXNzBQtnTnNidEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQt1c2VyQWRkcmVzcwUFc3RhcnQFA25pbAEPZ2V0UGFyYW1zT3JGYWlsAAkAlQoDCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFEG5ldXRyaW5vQ29udHJhY3QJAQxrZXlCb25kQXNzZXQACQEMZ2V0SW50T3JGYWlsAQkBEGtleU1pbkxvY2tBbW91bnQACQEMZ2V0SW50T3JGYWlsAQkBC2tleUhhbGZMaWZlAAEMaXNBY3RpdmVVc2VyAQt1c2VyQWRkcmVzcwkAZgIJAQxnZXRJbnRPckVsc2UCCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzAAAAAAENaXNCb251c1BlcmlvZAEBaAMJAGcCBQFoBRJSRU5FV19TVEFSVF9IRUlHSFQJAGcCBRBSRU5FV19FTkRfSEVJR0hUBQFoBwETZ2V0VXNlclBhcmFtc09yVW5pdAELdXNlckFkZHJlc3MDCQEMaXNBY3RpdmVVc2VyAQULdXNlckFkZHJlc3MEBmFtb3VudAkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MJAJYKBAcFBmFtb3VudAkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQULdXNlckFkZHJlc3MJAQxnZXRJbnRPckVsc2UCCQEVa2V5TG9ja1BhcmFtVXNlckduc2J0AQULdXNlckFkZHJlc3MFBmFtb3VudAUEdW5pdAETZ2V0VXNlclBhcmFtc09yRmFpbAELdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkArAICCQCsAgICBVVzZXIgCQClCAEFC3VzZXJBZGRyZXNzAg8gaXMgbm90IGRlZmluZWQAEnN1cHBvcnRlZEFzc2V0c1N0cgkBDGdldFN0ck9yRWxzZQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAgAAE3N1cHBvcnRlZEFzc2V0c0xpc3QJALUJAgUSc3VwcG9ydGVkQXNzZXRzU3RyAgFfAQpjYWxjUmV3YXJkBQt1c2VyQWRkcmVzcwdhc3NldElkDXN0YWtlZEFtb3VudFgOZGVwb3NpdE51bVVzZXIOZGVwb3NpdE51bUxhc3QEF3Jld2FyZFBlck5zYnRTdW1MYXN0S0VZCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFB2Fzc2V0SWQECnN1bUxhc3RYMTgJAKcDAQkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUHYXNzZXRJZAIBMAQKc3VtVXNlclgxOAkApwMBCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1Vc2VyBQdhc3NldElkAgEwBBFyZXdhcmREeW5hbWljUGFydAkAoAMBCQC8AgMJALgCAgUKc3VtTGFzdFgxOAUKc3VtVXNlclgxOAUNc3Rha2VkQW1vdW50WAUHTVVMVFgxOAQTcmV3YXJkQ2FjaGVkUGFydEtFWQkBCWtleVJld2FyZAIFC3VzZXJBZGRyZXNzBQdhc3NldElkBBByZXdhcmRDYWNoZWRQYXJ0CQEMZ2V0SW50T3JFbHNlAgUTcmV3YXJkQ2FjaGVkUGFydEtFWQAACQCWCgQJAGQCBRByZXdhcmRDYWNoZWRQYXJ0BRFyZXdhcmREeW5hbWljUGFydAUQcmV3YXJkQ2FjaGVkUGFydAURcmV3YXJkRHluYW1pY1BhcnQFE3Jld2FyZENhY2hlZFBhcnRLRVkBDHRvU3RhcnRPZkRheQEJdGltZXN0YW1wCQBoAgkAaQIFCXRpbWVzdGFtcAUJREFZTUlMTElTBQlEQVlNSUxMSVMBE2ZpbmRFbGVtZW50UG9zaXRpb24DA3NyYwdlbGVtZW50A3NlcAQMZWxlbWVudFN0YXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUDc3JjBQdlbGVtZW50CQCsAgIJAKwCAgkArAICAhZ0aGVyZSBpcyBubyBzdWJzdHJpbmcgBQdlbGVtZW50AgQgaW4gBQNzcmMDCQAAAgUMZWxlbWVudFN0YXJ0AAAAAAQEbGVmdAkArwICBQNzcmMFDGVsZW1lbnRTdGFydAkAZQIJAJADAQkAtQkCBQRsZWZ0BQNzZXAAAQATRGVwb3NpdFRvdGFsc1BSRUZJWAIkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkABFkZWZhdWx0VG90YWxzREFUQQkArAICBRNEZXBvc2l0VG90YWxzUFJFRklYAjZfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzABB3BhZExpc3QBAmluBAhjdXJyU2l6ZQkAZQIJAJADAQUCaW4AAQoBCmxpc3RQYWRkZXICA2FjYwNpZHgDCQBmAgUIY3VyclNpemUFA2lkeAUDYWNjCQDNCAIFA2FjYwIBMAoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAJAMwIAgARBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQJpbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbGlzdFBhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIBCXBhZFN0cmluZwECaW4ECGN1cnJTaXplCQBlAgkAkAMBCQC8CQIFAmluBQNTRVAAAQoBCXN0clBhZGRlcgIDYWNjA2lkeAMJAGYCBQhjdXJyU2l6ZQUDaWR4BQNhY2MJAKwCAgUDYWNjAgNfXzAKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUCaW4KAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN0clBhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIBDVJld2FyZEVudHJpZXMDCWlzTmV3VXNlcgt1c2VyQWRkcmVzcwxzdGFrZWRBbW91bnQEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQt1c2VyQWRkcmVzcwQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKARtmb3JFYWNoQXNzZXRDYWNoZVVzZXJSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAxMTQ4MjExNjE3CQEKY2FsY1Jld2FyZAUFC3VzZXJBZGRyZXNzBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDExNDgyMTE2MTcCXzEEBmNhY2hlZAgFDSR0MDExNDgyMTE2MTcCXzIEB2R5bmFtaWMIBQ0kdDAxMTQ4MjExNjE3Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMTE0ODIxMTYxNwJfNAkAzQgCBQVhY2N1bQkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkFC3Jld2FyZFRvdGFsAwMJAAACBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQAAAgUOZGVwb3NpdE51bVVzZXIA////////////AQcFA25pbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAZgIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHCQACAQIvaW52YWxpZCBkZXBvc2l0TnVtTGFzdCBhbmQgZGVwb3NpdE51bVVzZXIgc3RhdGUDAwkAZgIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGcCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwMFCWlzTmV3VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZBQ5kZXBvc2l0TnVtTGFzdAUDbmlsCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJCQEMSW50ZWdlckVudHJ5AgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZBQ5kZXBvc2l0TnVtTGFzdAkAAgEJAKwCAgkArAICCQCsAgICJHVuY292ZXJlZCBjb25kaXRpb246IGRlcG9zaXROdW1MYXN0PQkApAMBBQ5kZXBvc2l0TnVtTGFzdAIQIGRlcG9zaXROdW1Vc2VyPQkApAMBBQ5kZXBvc2l0TnVtVXNlcgEiSW5jcmVtZW50Tm90RGlzdHJpYnV0ZWRSZXdhcmRFbnRyeQIDdGtuCWFtb3VudEluYwQXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJARdrZXlOb3REaXN0cmlidXRlZFJld2FyZAEFA3RrbgQUbm90RGlzdHJpYnV0ZWRSZXdhcmQJAQxnZXRJbnRPckVsc2UCBRdub3REaXN0cmlidXRlZFJld2FyZEtFWQAACQEMSW50ZWdlckVudHJ5AgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJAGQCBRRub3REaXN0cmlidXRlZFJld2FyZAUJYW1vdW50SW5jAQtjb21tb25DbGFpbQILdXNlckFkZHJlc3MBaQQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIZcGF5bWVudHMgYXJlIG5vdCBhY2NlcHRlZAQNJHQwMTQ1NTgxNDY3OQkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlgoEBgAAAAAAAAQJaXNOZXdVc2VyCAUNJHQwMTQ1NTgxNDY3OQJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMTQ1NTgxNDY3OQJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMTQ1NTgxNDY3OQJfMwQLZ05zYnRBbW91bnQIBQ0kdDAxNDU1ODE0Njc5Al80BA1zdGFrZWRBbW91bnRYCQC2AgEFC2dOc2J0QW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMTUwNDkxNTE4NwkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAxNTA0OTE1MTg3Al8xBAZjYWNoZWQIBQ0kdDAxNTA0OTE1MTg3Al8yBAdkeW5hbWljCAUNJHQwMTUwNDkxNTE4NwJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDE1MDQ5MTUxODcCXzQECmNsYWltZWRLRVkJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BA0kdDAxNTI0NzE1Mjg0BQVhY2N1bQQEZGF0YQgFDSR0MDE1MjQ3MTUyODQCXzEEEWNsYWltZWRBbXRCeUFzc2V0CAUNJHQwMTUyNDcxNTI4NAJfMgQHbmV3UGFydAkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwFA25pbAIBOgQUY2xhaW1lZEFtdEJ5QXNzZXROZXcJALkJAgkAzAgCBRFjbGFpbWVkQW10QnlBc3NldAkAzAgCBQduZXdQYXJ0BQNuaWwCAV8DCQBnAgAABQtyZXdhcmRUb3RhbAkAlAoCBQRkYXRhBRRjbGFpbWVkQW10QnlBc3NldE5ldwkAlAoCCQDNCAIJAM0IAgkAzQgCBQRkYXRhCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULcmV3YXJkVG90YWwJAQt0b0Fzc2V0VmVjdAEFBWFzc2V0CQEMSW50ZWdlckVudHJ5AgUKY2xhaW1lZEtFWQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKY2xhaW1lZEtFWQAABQtyZXdhcmRUb3RhbAkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAUUY2xhaW1lZEFtdEJ5QXNzZXROZXcEDSR0MDE1NzQ0MTU4NTcKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkECXRyYW5zZmVycwgFDSR0MDE1NzQ0MTU4NTcCXzEEF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0CAUNJHQwMTU3NDQxNTg1NwJfMgMJAGcCAAAJAJADAQUJdHJhbnNmZXJzCQCUCgIFA25pbAAACQCUCgIJAM0IAgkAzQgCBQl0cmFuc2ZlcnMJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0CQERQ2xhaW1IaXN0b3J5RW50cnkDBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAsAICBRdjbGFpbWVkQW10QnlBc3NldFJlc3VsdAABCQCQAwEFCXRyYW5zZmVycwEYcmVhZFVzZXJDb25zZW50VG9YMkduc2J0AQt1c2VyQWRkcmVzcwQDa2V5CQEZa2V5VXNlckNvbnNlbnRlZFRvWDJHbnNidAEFC3VzZXJBZGRyZXNzBAN2YWwJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwkAlAoCBQNrZXkFA3ZhbAENY29tbW9uWDJHbnNidAILdXNlckFkZHJlc3MBaQMJAQEhAQkBDWlzQm9udXNQZXJpb2QBBQZoZWlnaHQJAAIBAiZObyAnRG91YmxlIGdOU0JUIGFjdGlvbicgYXZhaWxhYmxlIG5vdwQNJHQwMTY0MTkxNjQ4MAkBC2NvbW1vbkNsYWltAgULdXNlckFkZHJlc3MFAWkEDGNsYWltQWN0aW9ucwgFDSR0MDE2NDE5MTY0ODACXzEEC2NsYWltUmVzdWx0CAUNJHQwMTY0MTkxNjQ4MAJfMgQNJHQwMTY0ODMxNjYwOAkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlgoEBgAAAP///////////wEAAAQJaXNOZXdVc2VyCAUNJHQwMTY0ODMxNjYwOAJfMQQKbG9ja0Ftb3VudAgFDSR0MDE2NDgzMTY2MDgCXzIED2xvY2tTdGFydEhlaWdodAgFDSR0MDE2NDgzMTY2MDgCXzMEDWN1cnJVc2VyR25zYnQIBQ0kdDAxNjQ4MzE2NjA4Al80AwUJaXNOZXdVc2VyCQACAQIbWW91IGhhdmUgbm90aGluZyB0byByZXN0YWtlBA5kZWx0YVVzZXJHbnNidAUNY3VyclVzZXJHbnNidAQMbmV3VXNlckduc2J0CQBkAgUNY3VyclVzZXJHbnNidAUOZGVsdGFVc2VyR25zYnQEEHVzZXJDb25zZW50VHVwbGUJARhyZWFkVXNlckNvbnNlbnRUb1gyR25zYnQBBQt1c2VyQWRkcmVzcwQZdXNlckNvbnNlbnRlZFRvWDJHbnNidEtFWQgFEHVzZXJDb25zZW50VHVwbGUCXzEEFnVzZXJDb25zZW50ZWRUb1gyR25zYnQIBRB1c2VyQ29uc2VudFR1cGxlAl8yAwUWdXNlckNvbnNlbnRlZFRvWDJHbnNidAkAAgECKFVzZXIgaGFzIGFscmVhZHkgZG91YmxlZCBpdHMgZ05TQlQgdmFsdWUEDSR0MDE3MDI1MTcxMTEJAQtTdGF0c1Jlc3VsdAQAAAAAAAAFDmRlbHRhVXNlckduc2J0BAxzdGF0c0VudHJpZXMIBQ0kdDAxNzAyNTE3MTExAl8xBAt0b3RhbFN0YWtlZAgFDSR0MDE3MDI1MTcxMTECXzIEDnRvdGFsU3Rha2VkTmV3CAUNJHQwMTcwMjUxNzExMQJfMwkAlAoCCQDNCAIJAM4IAgkAzggCBQxjbGFpbUFjdGlvbnMJAQ9Mb2NrUGFyYW1zRW50cnkEBQt1c2VyQWRkcmVzcwUKbG9ja0Ftb3VudAUGaGVpZ2h0BQxuZXdVc2VyR25zYnQFDHN0YXRzRW50cmllcwkBDEJvb2xlYW5FbnRyeQIFGXVzZXJDb25zZW50ZWRUb1gyR25zYnRLRVkGBQtjbGFpbVJlc3VsdAwBaQENY29uc3RydWN0b3JWMQUXbmV1dHJpbm9Db250cmFjdEFkZHJlc3MTbWF0aENvbnRyYWN0QWRkcmVzcw1taW5Mb2NrQW1vdW50CGhhbGZMaWZlFXN1cHBvcnRlZFJld2FyZEFzc2V0cwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlOZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAFF25ldXRyaW5vQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlNYXRoQ29udHJhY3RBZGRyZXNzAAUTbWF0aENvbnRyYWN0QWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleU1pbkxvY2tBbW91bnQABQ1taW5Mb2NrQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQELa2V5SGFsZkxpZmUABQhoYWxmTGlmZQkAzAgCCQELU3RyaW5nRW50cnkCCQEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAUVc3VwcG9ydGVkUmV3YXJkQXNzZXRzBQNuaWwBaQENY29uc3RydWN0b3JWMgIXeDJHbnNidE9mZmVySGVpZ2h0U3RhcnQVeDJHbnNidE9mZmVySGVpZ2h0RW5kAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR1rZXlDZmdYMkduc2J0T2ZmZXJIZWlnaHRTdGFydAAFF3gyR25zYnRPZmZlckhlaWdodFN0YXJ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEba2V5Q2ZnWDJHbnNidE9mZmVySGVpZ2h0RW5kAAUVeDJHbnNidE9mZmVySGVpZ2h0RW5kBQNuaWwBaQEFc3Rha2UABA0kdDAxODIxNzE4Mjc5CQEPZ2V0UGFyYW1zT3JGYWlsAAQLYm9uZEFzc2V0SWQIBQ0kdDAxODIxNzE4Mjc5Al8xBA1taW5Mb2NrQW1vdW50CAUNJHQwMTgyMTcxODI3OQJfMgQIaGFsZkxpZmUIBQ0kdDAxODIxNzE4Mjc5Al8zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIVSW52YWxpZCBwYXltZW50cyBzaXplBAdwYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAgFB3BheW1lbnQGYW1vdW50BBNpbnZhbGlkQXNzZXRNZXNzYWdlCQCsAgIJAKwCAgIPSW52YWxpZCBhc3NldC4gCQDYBAEFC2JvbmRBc3NldElkAgwgaXMgZXhwZWN0ZWQEB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUTaW52YWxpZEFzc2V0TWVzc2FnZQMJAQIhPQIFB2Fzc2V0SWQFC2JvbmRBc3NldElkCQACAQUTaW52YWxpZEFzc2V0TWVzc2FnZQQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxODgyMTE4OTQ2CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCWCgQGAAAA////////////AQAABAlpc05ld1VzZXIIBQ0kdDAxODgyMTE4OTQ2Al8xBApsb2NrQW1vdW50CAUNJHQwMTg4MjExODk0NgJfMgQPbG9ja1N0YXJ0SGVpZ2h0CAUNJHQwMTg4MjExODk0NgJfMwQNY3VyclVzZXJHbnNidAgFDSR0MDE4ODIxMTg5NDYCXzQEDG1lcmdlZEFtb3VudAMFCWlzTmV3VXNlcgUGYW1vdW50CQBkAgUGYW1vdW50BQpsb2NrQW1vdW50BBFtZXJnZWRTdGFydEhlaWdodAMFCWlzTmV3VXNlcgUGaGVpZ2h0CQEFYXNJbnQBCQD8BwQFDG1hdGhDb250cmFjdAITbWVyZ2VTdGFrZXNSRUFET05MWQkAzAgCBQZhbW91bnQJAMwIAgUGaGVpZ2h0CQDMCAIFCmxvY2tBbW91bnQJAMwIAgUPbG9ja1N0YXJ0SGVpZ2h0CQDMCAIFCGhhbGZMaWZlBQNuaWwFA25pbAMJAGYCBQ1taW5Mb2NrQW1vdW50BQxtZXJnZWRBbW91bnQJAAIBCQCsAgICE01pbiBsb2NrIGFtb3VudCBpcyAJAKQDAQUNbWluTG9ja0Ftb3VudAQQdXNlckNvbnNlbnRUdXBsZQkBGHJlYWRVc2VyQ29uc2VudFRvWDJHbnNidAEFC3VzZXJBZGRyZXNzBBl1c2VyQ29uc2VudGVkVG9YMkduc2J0S0VZCAUQdXNlckNvbnNlbnRUdXBsZQJfMQQWdXNlckNvbnNlbnRlZFRvWDJHbnNidAgFEHVzZXJDb25zZW50VHVwbGUCXzIEDmRlbHRhVXNlckduc2J0AwMJAQ1pc0JvbnVzUGVyaW9kAQUGaGVpZ2h0AwUJaXNOZXdVc2VyBgUWdXNlckNvbnNlbnRlZFRvWDJHbnNidAcJAGgCAAIFBmFtb3VudAUGYW1vdW50BBN4Mkduc2J0Q29uc2VudEVudHJ5AwUJaXNOZXdVc2VyCQDMCAIJAQxCb29sZWFuRW50cnkCBRl1c2VyQ29uc2VudGVkVG9YMkduc2J0S0VZBgUDbmlsBQNuaWwEDSR0MDE5OTUwMjAwNjgJAQtTdGF0c1Jlc3VsdAQFBmFtb3VudAABAwUJaXNOZXdVc2VyAAEAAAUOZGVsdGFVc2VyR25zYnQEDHN0YXRzRW50cmllcwgFDSR0MDE5OTUwMjAwNjgCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTk5NTAyMDA2OAJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxOTk1MDIwMDY4Al8zCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCBXN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUKbG9ja0Ftb3VudAUPbG9ja1N0YXJ0SGVpZ2h0BQxtZXJnZWRBbW91bnQFEW1lcmdlZFN0YXJ0SGVpZ2h0BQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwUJaXNOZXdVc2VyBQ51c2VyQWRkcmVzc1N0cgUNY3VyclVzZXJHbnNidAkBD0xvY2tQYXJhbXNFbnRyeQQFC3VzZXJBZGRyZXNzBQxtZXJnZWRBbW91bnQFEW1lcmdlZFN0YXJ0SGVpZ2h0CQBkAgUNY3VyclVzZXJHbnNidAUOZGVsdGFVc2VyR25zYnQFDHN0YXRzRW50cmllcwUTeDJHbnNidENvbnNlbnRFbnRyeQFpAQd1bnN0YWtlAQZhbW91bnQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAiN1bnN0YWtlIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudAQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MEDSR0MDIwNjE0MjA2NzYJAQ9nZXRQYXJhbXNPckZhaWwABAtib25kQXNzZXRJZAgFDSR0MDIwNjE0MjA2NzYCXzEEDW1pbkxvY2tBbW91bnQIBQ0kdDAyMDYxNDIwNjc2Al8yBAhoYWxmTGlmZQgFDSR0MDIwNjE0MjA2NzYCXzMEDSR0MDIwNjc5MjA3NjgJARNnZXRVc2VyUGFyYW1zT3JGYWlsAQULdXNlckFkZHJlc3MECWlzTmV3VXNlcggFDSR0MDIwNjc5MjA3NjgCXzEECmxvY2tBbW91bnQIBQ0kdDAyMDY3OTIwNzY4Al8yBAlsb2NrU3RhcnQIBQ0kdDAyMDY3OTIwNzY4Al8zBA1jdXJyVXNlckduc2J0CAUNJHQwMjA2NzkyMDc2OAJfNAMJAGcCAAAFCmxvY2tBbW91bnQJAAIBAhJOb3RoaW5nIHRvIHVuc3Rha2UDCQBmAgUGYW1vdW50BQpsb2NrQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIKUmVxdWVzdGVkIAkApAMBBQZhbW91bnQCEiwgYnV0IHN0YWtlZCBvbmx5IAkApAMBBQpsb2NrQW1vdW50BAF0CAkBBXZhbHVlAQkA7QcBBQZoZWlnaHQJdGltZXN0YW1wBAtyZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBF2tleVVzZXJHbnNidFJlbGVhc2VUaW1lAQUOdXNlckFkZHJlc3NTdHIAAAMJAGcCBQtyZWxlYXNlVGltZQUBdAkAAgEJAKwCAgI7WW91ciBnTnNidCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQULcmVsZWFzZVRpbWUED2NvbWlzc2lvbkFtb3VudAkBBWFzSW50AQkA/AcEBQxtYXRoQ29udHJhY3QCIWdldFVuc3Rha2VDb21pc3Npb25BbW91bnRSRUFET05MWQkAzAgCBQZhbW91bnQJAMwIAgUJbG9ja1N0YXJ0CQDMCAIFCGhhbGZMaWZlBQNuaWwFA25pbAQOYm9udXNHbnNidFBhcnQJAGUCBQ1jdXJyVXNlckduc2J0BQpsb2NrQW1vdW50BA9ib251c05zYnRBbW91bnQJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgUOYm9udXNHbnNidFBhcnQFA25pbAQKZGVsdGFHbnNidAkAZAIFD2JvbnVzTnNidEFtb3VudAUGYW1vdW50BA0kdDAyMTYwNjIxNzc3CQELU3RhdHNSZXN1bHQECQEBLQEFBmFtb3VudAMJAAACBQZhbW91bnQFCmxvY2tBbW91bnQA////////////AQAAAwkAAAIFBmFtb3VudAUKbG9ja0Ftb3VudAD///////////8BAAAJAQEtAQUKZGVsdGFHbnNidAQMc3RhdHNFbnRyaWVzCAUNJHQwMjE2MDYyMTc3NwJfMQQLdG90YWxTdGFrZWQIBQ0kdDAyMTYwNjIxNzc3Al8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDIxNjA2MjE3NzcCXzMJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAGUCBQZhbW91bnQFD2NvbWlzc2lvbkFtb3VudAULYm9uZEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPYXVjdGlvbkNvbnRyYWN0BQ9jb21pc3Npb25BbW91bnQFC2JvbmRBc3NldElkCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkHAgd1bnN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUKbG9ja0Ftb3VudAUJbG9ja1N0YXJ0CQBlAgUKbG9ja0Ftb3VudAUGYW1vdW50BQlsb2NrU3RhcnQFA25pbAkBDVJld2FyZEVudHJpZXMDBwUOdXNlckFkZHJlc3NTdHIFDWN1cnJVc2VyR25zYnQJAQ9Mb2NrUGFyYW1zRW50cnkEBQt1c2VyQWRkcmVzcwkAZQIFCmxvY2tBbW91bnQFBmFtb3VudAUJbG9ja1N0YXJ0CQBlAgUNY3VyclVzZXJHbnNidAUKZGVsdGFHbnNidAUMc3RhdHNFbnRyaWVzAWkBB2RlcG9zaXQABAt0b3RhbFN0YWtlZAkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Ub3RhbEduc2J0AAkBDGdldEludE9yRWxzZQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAMJAGYCAAAFC3RvdGFsU3Rha2VkCQACAQIbVE9ETzogY2FzZSBpcyBub3Qgc3VwcG9ydGVkBBFkZXBvc2l0TnVtTGFzdEtFWQkBEWtleURlcG9zaXROdW1MYXN0AAQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCBRFkZXBvc2l0TnVtTGFzdEtFWQD///////////8BBA1kZXBvc2l0TnVtTmV3CQBkAgUOZGVwb3NpdE51bUxhc3QAAQQJdG90YWxzS0VZCQEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAQIYnlEYXlLRVkJARdrZXlTdGF0c0RlcG9zaXRBbXRCeURheQEJAQx0b1N0YXJ0T2ZEYXkBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQKY3VyclRvdGFscwkBB3BhZExpc3QBCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJdG90YWxzS0VZBRFkZWZhdWx0VG90YWxzREFUQQUDU0VQCgEDZGVwAgNhY2MDcG10BAZhbW91bnQIBQNwbXQGYW1vdW50BA1wbXRBc3NldElkU3RyCQDYBAEJAQt2YWx1ZU9yRWxzZQIIBQNwbXQHYXNzZXRJZAUHV0FWRVNJRAMJAQEhAQkBCGNvbnRhaW5zAgUSc3VwcG9ydGVkQXNzZXRzU3RyBQ1wbXRBc3NldElkU3RyCQACAQkArAICCQCsAgIFEnN1cHBvcnRlZEFzc2V0c1N0cgIRIGRvZXNuJ3QgY29udGFpbiAFDXBtdEFzc2V0SWRTdHIDCQAAAgULdG90YWxTdGFrZWQAAAkAlgoECQDNCAIIBQNhY2MCXzEJASJJbmNyZW1lbnROb3REaXN0cmlidXRlZFJld2FyZEVudHJ5AgUNcG10QXNzZXRJZFN0cgUGYW1vdW50CQDNCAIIBQNhY2MCXzIFDXBtdEFzc2V0SWRTdHIJAM0IAggFA2FjYwJfMwkAtgIBAAAJAM0IAggFA2FjYwJfNAUGYW1vdW50BBByZXdhcmRQZXJOc2J0WDE4CQC8AgMJALYCAQUGYW1vdW50BQdNVUxUWDE4CQC2AgEFC3RvdGFsU3Rha2VkCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgUNcG10QXNzZXRJZFN0cgkAzQgCCAUDYWNjAl8zBRByZXdhcmRQZXJOc2J0WDE4CQDNCAIIBQNhY2MCXzQFBmFtb3VudAQKcG10c1Jlc3VsdAoAAiRsCAUBaQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQNuaWwFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNkZXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoKARlyZWZyZXNoUmV3YXJkVXBkYXRlVG90YWxzAgVhY2N1bQluZXh0QXNzZXQEAWsIBQVhY2N1bQJfMwQKc3VtTGFzdFN0cgkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUJbmV4dEFzc2V0AgEwBANpZHgJAM8IAggFCnBtdHNSZXN1bHQCXzIFCW5leHRBc3NldAQDc3VtAwkBCWlzRGVmaW5lZAEFA2lkeAQBagkBBXZhbHVlAQUDaWR4BApzdGF0c0RlbHRhCQCRAwIIBQpwbXRzUmVzdWx0Al80BQFqCQCUCgIJAKYDAQkAtwICCQCnAwEFCnN1bUxhc3RTdHIJAJEDAggFCnBtdHNSZXN1bHQCXzMFAWoJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyVG90YWxzCQBkAgUBawABBQpzdGF0c0RlbHRhCQCUCgIFCnN1bUxhc3RTdHIJAJEDAgUKY3VyclRvdGFscwkAZAIFAWsAAQkAlQoDCQDNCAIIBQVhY2N1bQJfMQkBC1N0cmluZ0VudHJ5AgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDWRlcG9zaXROdW1OZXcFCW5leHRBc3NldAgFA3N1bQJfMQkArAICCQCsAgIIBQVhY2N1bQJfMgUDU0VQCAUDc3VtAl8yCQBkAgUBawABBAxhc3NldHNSZXN1bHQKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBRNEZXBvc2l0VG90YWxzUFJFRklYAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGXJlZnJlc2hSZXdhcmRVcGRhdGVUb3RhbHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkEBnRvdGFscwkBCXBhZFN0cmluZwEIBQxhc3NldHNSZXN1bHQCXzIJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzggCCAUKcG10c1Jlc3VsdAJfMQgFDGFzc2V0c1Jlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFEWRlcG9zaXROdW1MYXN0S0VZBQ1kZXBvc2l0TnVtTmV3CQELU3RyaW5nRW50cnkCBQl0b3RhbHNLRVkFBnRvdGFscwkBC1N0cmluZ0VudHJ5AgUIYnlEYXlLRVkFBnRvdGFscwUNZGVwb3NpdE51bU5ldwFpAQxjbGFpbVJld2FyZHMACQELY29tbW9uQ2xhaW0CCAUBaQZjYWxsZXIFAWkBaQEaY2xhaW1SZXdhcmRzQnlPcmlnaW5DYWxsZXIACQELY29tbW9uQ2xhaW0CCAUBaQxvcmlnaW5DYWxsZXIFAWkBaQEHeDJHbnNidAAJAQ1jb21tb25YMkduc2J0AggFAWkGY2FsbGVyBQFpAWkBFXgyR25zYnRCeU9yaWdpbkNhbGxlcgAJAQ1jb21tb25YMkduc2J0AggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQEOdXNlckFkZHJlc3NTdHIKARZmb3JFYWNoQXNzZXRaZXJvUmV3YXJkAgVhY2N1bQVhc3NldAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgIBMAkAzAgCAgEwBQNuaWwCAToCAV8EEnVuY2xhaW1lZFJld2FyZFN0cgMJAAACBQ51c2VyQWRkcmVzc1N0cgIACgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkEC3VzZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQNJHQwMjU4NDQyNTk2MwkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlgoEBgAAAAAAAAQJaXNOZXdVc2VyCAUNJHQwMjU4NDQyNTk2MwJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMjU4NDQyNTk2MwJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMjU4NDQyNTk2MwJfMwQJdXNlckduc2J0CAUNJHQwMjU4NDQyNTk2MwJfNAQNc3Rha2VkQW1vdW50WAkAtgIBBQl1c2VyR25zYnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFDnVzZXJBZGRyZXNzU3RyBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAyNjMwNjI2NDQ0CQEKY2FsY1Jld2FyZAUFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDI2MzA2MjY0NDQCXzEEBmNhY2hlZAgFDSR0MDI2MzA2MjY0NDQCXzIEB2R5bmFtaWMIBQ0kdDAyNjMwNjI2NDQ0Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMjYzMDYyNjQ0NAJfNAQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEKa2V5Q2xhaW1lZAIFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAAACQCsAgIJAKwCAgUFYWNjdW0JALkJAgkAzAgCBQVhc3NldAkAzAgCCQCkAwEFC3Jld2FyZFRvdGFsCQDMCAIJAKQDAQUHY2xhaW1lZAUDbmlsAgE6AgFfCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkJAJQKAgUDbmlsCQCzAgIFEnVuY2xhaW1lZFJld2FyZFN0cgABAWkBGG5zYnRVbnN0YWtpbmdTWVNSRUFET05MWQIVdXNlckFkZHJlc3NTdHJPckVtcHR5C3Vuc3Rha2VBbXRQBAtyZXN1bHRBcnJheQMJAAACBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkCAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQHY2ZnREFUQQkBD2dldFBhcmFtc09yRmFpbAAEC25zYnRBc3NldElkCAUHY2ZnREFUQQJfMQQNbWluTG9ja0Ftb3VudAgFB2NmZ0RBVEECXzIECGhhbGZMaWZlCAUHY2ZnREFUQQJfMwQIdXNlckRBVEEJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAJYKBAYAAAAAAAAECWlzTmV3VXNlcggFCHVzZXJEQVRBAl8xBAxzdGFrZWRBbW91bnQIBQh1c2VyREFUQQJfMgQJbG9ja1N0YXJ0CAUIdXNlckRBVEECXzMECnVuc3Rha2VBbXQDCQBmAgULdW5zdGFrZUFtdFAFDHN0YWtlZEFtb3VudAUMc3Rha2VkQW1vdW50BQt1bnN0YWtlQW10UAQPc3Rha2VkQW1vdW50TkVXCQBlAgUMc3Rha2VkQW1vdW50BQp1bnN0YWtlQW10BA9jb21pc3Npb25BbW91bnQDCQAAAgUKdW5zdGFrZUFtdAAAAAAJAQVhc0ludAEJAPwHBAUMbWF0aENvbnRyYWN0AiFnZXRVbnN0YWtlQ29taXNzaW9uQW1vdW50UkVBRE9OTFkJAMwIAgUKdW5zdGFrZUFtdAkAzAgCBQlsb2NrU3RhcnQJAMwIAgUIaGFsZkxpZmUFA25pbAUDbmlsBA1yZWNlaXZlQW1vdW50CQBlAgUKdW5zdGFrZUFtdAUPY29taXNzaW9uQW1vdW50CQDMCAIFDHN0YWtlZEFtb3VudAkAzAgCBQ9zdGFrZWRBbW91bnRORVcJAMwIAgUNcmVjZWl2ZUFtb3VudAkAzAgCBQ9jb21pc3Npb25BbW91bnQFA25pbAkAlAoCBQNuaWwFC3Jlc3VsdEFycmF5AWkBFm5zYnRTdGFraW5nU1lTUkVBRE9OTFkCDnVzZXJBZGRyZXNzU3RyCG5zYnREaWZmBAx0b3RhbE5zYnRBbXQJAQxnZXRJbnRPckVsc2UCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQAAAAECnRvdGFsR25zYnQJAQxnZXRJbnRPckVsc2UCCQEWa2V5TG9ja1BhcmFtVG90YWxHbnNidAAFDHRvdGFsTnNidEFtdAMJAAACBQ51c2VyQWRkcmVzc1N0cgIACQCUCgIFA25pbAkAzAgCAAAJAMwIAgUMdG90YWxOc2J0QW10CQDMCAIAAAkAzAgCAAAJAMwIAgUKdG90YWxHbnNidAkAzAgCCQBoAgUIbnNidERpZmYAAgUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFDnVzZXJBZGRyZXNzU3RyBA0kdDAyODI0NjI4MzcxCQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCWCgQGAAAAAAAABAlpc05ld1VzZXIIBQ0kdDAyODI0NjI4MzcxAl8xBAt1c2VyTnNidEFtdAgFDSR0MDI4MjQ2MjgzNzECXzIEDHN0YWtpbmdTdGFydAgFDSR0MDI4MjQ2MjgzNzECXzMEEGN1cnJlbnRVc2VyR25zYnQIBQ0kdDAyODI0NjI4MzcxAl80BBB1c2VyQ29uc2VudFR1cGxlCQEYcmVhZFVzZXJDb25zZW50VG9YMkduc2J0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUOdXNlckFkZHJlc3NTdHIEGXVzZXJDb25zZW50ZWRUb1gyR25zYnRLRVkIBRB1c2VyQ29uc2VudFR1cGxlAl8xBBZ1c2VyQ29uc2VudGVkVG9YMkduc2J0CAUQdXNlckNvbnNlbnRUdXBsZQJfMgQOZGVsdGFVc2VyR25zYnQDAwkBDWlzQm9udXNQZXJpb2QBBQZoZWlnaHQDBQlpc05ld1VzZXIGBRZ1c2VyQ29uc2VudGVkVG9YMkduc2J0BwkAaAIAAgUIbnNidERpZmYFCG5zYnREaWZmCQCUCgIFA25pbAkAzAgCBQt1c2VyTnNidEFtdAkAzAgCBQx0b3RhbE5zYnRBbXQJAMwIAgUMc3Rha2luZ1N0YXJ0CQDMCAIFEGN1cnJlbnRVc2VyR25zYnQJAMwIAgUKdG90YWxHbnNidAkAzAgCBQ5kZWx0YVVzZXJHbnNidAUDbmlsAQJ0eAEGdmVyaWZ5AAQTcHViS2V5QWRtaW5zTGlzdFN0cgkAuQkCCQDMCAICLEV4dEVFSzE5bm1LajltQ3BuV3l2RUVKRllBVExNY1ZFTXZvaGhVSGt5SE5tCQDMCAICLEV2NXB5NUZmQlFYOWNacFlLbmZRclRCNDlCeWY4UW1wWldlRFZSaW00eVY3CQDMCAICLERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSCQDMCAICLERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSBQNuaWwFA1NFUAQQcHViS2V5QWRtaW5zTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD2NvbnRyb2xDb250cmFjdAIMJXNfX211bHRpc2lnBRNwdWJLZXlBZG1pbnNMaXN0U3RyBQNTRVAEBWNvdW50CQBkAgkAZAIJAGQCAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAAABAAADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABCQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAABAAEAAAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAIAAQAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAwkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAwACAAAJAGcCBQVjb3VudAAD86fOXQ==", "height": 2795087, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HD72t3xgpSkMgXpcCMTnkF2JHPpQN3rPRgYYatgnBTMq Next: none Diff:
OldNewDifferences
7676
7777 let L = E(F, u)
7878
79-let M = valueOrElse(getInteger(this, y()), 0)
79+let M = addressFromStringValue("3PEiiJRkV66T1NW7MoY3DGgCaxoDRCez8fL")
8080
81-let N = valueOrElse(getInteger(this, z()), 0)
81+let N = valueOrElse(getInteger(this, y()), 0)
8282
83-func O () = "bond_asset_id"
83+let O = valueOrElse(getInteger(this, z()), 0)
84+
85+func P () = "bond_asset_id"
8486
8587
86-func P (Q) = ("%s%s_userGnsbtReleaseTime__" + Q)
88+func Q (R) = ("%s%s_userGnsbtReleaseTime__" + R)
8789
8890
89-func R () = "%s__neutrinoContractAddress"
91+func S () = "%s__neutrinoContractAddress"
9092
9193
92-func S () = "%s__mathContract"
94+func T () = "%s__mathContract"
9395
9496
95-func T () = "%s__minLockAmount"
97+func U () = "%s__minLockAmount"
9698
9799
98-func U () = "%s__halfLife"
100+func V () = "%s__halfLife"
99101
100102
101-func V (W) = makeString(["%s%s%s", "paramByUser", toString(W), "amount"], a)
103+func W (X) = makeString(["%s%s%s", "paramByUser", toString(X), "amount"], a)
102104
103105
104-func X (W) = makeString(["%s%s%s", "paramByUser", toString(W), "start"], a)
106+func Y (X) = makeString(["%s%s%s", "paramByUser", toString(X), "start"], a)
105107
106108
107-func Y (W) = makeString(["%s%s%s", "paramByUser", toString(W), "gNsbt"], a)
109+func Z (X) = makeString(["%s%s%s", "paramByUser", toString(X), "gNsbt"], a)
108110
109111
110-func Z (W) = makeString(["%s%s%s", "paramByUser", toString(W), "consentedToX2Gnsbt"], a)
112+func aa (X) = makeString(["%s%s%s", "paramByUser", toString(X), "consentedToX2Gnsbt"], a)
111113
112114
113-func aa (ab,W,ac) = makeString(["%s%s%s%s", "history", ab, toString(W), toBase58String(ac)], a)
115+func ab (ac,X,ad) = makeString(["%s%s%s%s", "history", ac, toString(X), toBase58String(ad)], a)
114116
115117
116-func ad () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
118+func ae () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
117119
118120
119-func ae () = makeString(["%s%s", "stats", "activeTotalGnsbt"], a)
121+func af () = makeString(["%s%s", "stats", "activeTotalGnsbt"], a)
120122
121123
122-func af () = makeString(["%s%s", "stats", "locksCount"], a)
124+func ag () = makeString(["%s%s", "stats", "locksCount"], a)
123125
124126
125-func ag () = makeString(["%s%s", "stats", "activeUsersCount"], a)
127+func ah () = makeString(["%s%s", "stats", "activeUsersCount"], a)
126128
127129
128-func ah (ai) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ai)], a)
130+func ai (aj) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(aj)], a)
129131
130132
131-func aj () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
133+func ak () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
132134
133135
134-func ak () = "%s__nextPeriod"
136+func al () = "%s__nextPeriod"
135137
136138
137-func al () = "supportedRewardAssets"
139+func am () = "supportedRewardAssets"
138140
139141
140-func am () = makeString(["%s%s%s", "dep", "lastNum"], a)
142+func an () = makeString(["%s%s%s", "dep", "lastNum"], a)
141143
142144
143-func an (W) = makeString(["%s%s%s", "userRwdFromDepNum", W], a)
145+func ao (X) = makeString(["%s%s%s", "userRwdFromDepNum", X], a)
144146
145147
146-func ao (ap,aq) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ap), aq], a)
148+func ap (aq,ar) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(aq), ar], a)
147149
148150
149-func ar (W,aq) = makeString(["%s%s%s", "rwd", W, aq], a)
151+func as (X,ar) = makeString(["%s%s%s", "rwd", X, ar], a)
150152
151153
152-func as (W,aq) = makeString(["%s%s%s", "clm", W, aq], a)
154+func at (X,ar) = makeString(["%s%s%s", "clm", X, ar], a)
153155
154156
155-func at (aq) = makeString(["%s%s", "notDistributed", aq], a)
157+func au (ar) = makeString(["%s%s", "notDistributed", ar], a)
156158
157159
158-func au (av,aw) = fraction(toBigInt(av), g, aw)
160+func av (aw,ax) = fraction(toBigInt(aw), g, ax)
159161
160162
161-func ax (x) = valueOrElse(getInteger(this, x), 0)
163+func ay (x) = valueOrElse(getInteger(this, x), 0)
162164
163165
164-func ay (x,az) = valueOrElse(getInteger(this, x), az)
166+func az (x,aA) = valueOrElse(getInteger(this, x), aA)
165167
166168
167-func aA (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
169+func aB (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
168170
169171
170-func aB (x,az) = valueOrElse(getString(this, x), az)
172+func aC (x,aA) = valueOrElse(getString(this, x), aA)
171173
172174
173-func aC (aD) = valueOrErrorMessage(addressFromString(aD), ("couldn't parse passed addressStr=" + aD))
175+func aD (aE) = valueOrErrorMessage(addressFromString(aE), ("couldn't parse passed addressStr=" + aE))
174176
175177
176-func aE (aF) = if ((aF == h))
178+func aF (aG) = if ((aG == h))
177179 then unit
178- else fromBase58String(aF)
180+ else fromBase58String(aG)
179181
180182
181-func aG (aH) = {
182- let aI = aH
183- if ($isInstanceOf(aI, "Int"))
183+func aH (aI) = {
184+ let aJ = aI
185+ if ($isInstanceOf(aJ, "Int"))
184186 then {
185- let aJ = aI
186- aJ
187+ let aK = aJ
188+ aK
187189 }
188190 else throw("fail to cast into Int")
189191 }
190192
191193
192-func aK (aL,aM,aN,aO) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aL), toString(aM), toString(aN), toString(aO)], a)
194+func aL (aM,aN,aO,aP) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM), toString(aN), toString(aO), toString(aP)], a)
193195
194196
195-func aP (aQ,aR) = makeString(["%s%d%d%s", aQ, toString(lastBlock.height), toString(lastBlock.timestamp), aR], a)
197+func aQ (aR,aS) = makeString(["%s%d%d%s", aR, toString(lastBlock.height), toString(lastBlock.timestamp), aS], a)
196198
197199
198-func aS (ab,W,ac,aL,aM,aN,aO) = StringEntry(aa(ab, W, ac), aK(aL, aM, aN, aO))
200+func aT (ac,X,ad,aM,aN,aO,aP) = StringEntry(ab(ac, X, ad), aL(aM, aN, aO, aP))
199201
200202
201-func aT (W,ac,aR) = StringEntry(aa("claim", W, ac), aP(toString(W), aR))
203+func aU (X,ad,aS) = StringEntry(ab("claim", X, ad), aQ(toString(X), aS))
202204
203205
204-func aU (aV,aW,aX,aY) = {
205- let aZ = ax(af())
206- let ba = ax(ag())
207- let bb = ax(ad())
208- let bc = (bb + aV)
209- let bd = ay(ae(), bb)
210- $Tuple3([IntegerEntry(af(), (aZ + aW)), IntegerEntry(ag(), (ba + aX)), IntegerEntry(ad(), bc), IntegerEntry(ae(), (bd + aY))], bb, bc)
206+func aV (aW,aX,aY,aZ) = {
207+ let ba = ay(ag())
208+ let bb = ay(ah())
209+ let bc = ay(ae())
210+ let bd = (bc + aW)
211+ let be = az(af(), bc)
212+ $Tuple3([IntegerEntry(ag(), (ba + aX)), IntegerEntry(ah(), (bb + aY)), IntegerEntry(ae(), bd), IntegerEntry(af(), (be + aZ))], bc, bd)
211213 }
212214
213215
214-func be (W,bf,bg,bh) = [IntegerEntry(V(W), bf), IntegerEntry(Y(W), bh), IntegerEntry(X(W), bg)]
216+func bf (X,bg,bh,bi) = [IntegerEntry(W(X), bg), IntegerEntry(Z(X), bi), IntegerEntry(Y(X), bh)]
215217
216218
217-func bi () = $Tuple3(fromBase58String(getStringValue(J, O())), aA(T()), aA(U()))
219+func bj () = $Tuple3(fromBase58String(getStringValue(J, P())), aB(U()), aB(V()))
218220
219221
220-func bj (W) = (ay(V(W), 0) > 0)
222+func bk (X) = (az(W(X), 0) > 0)
221223
222224
223-func bk (bl) = if ((bl >= M))
224- then (N >= bl)
225+func bl (bm) = if ((bm >= N))
226+ then (O >= bm)
225227 else false
226228
227229
228-func bm (W) = if (bj(W))
230+func bn (X) = if (bk(X))
229231 then {
230- let bn = aA(V(W))
231- $Tuple4(false, bn, aA(X(W)), ay(Y(W), bn))
232+ let bo = aB(W(X))
233+ $Tuple4(false, bo, aB(Y(X)), az(Z(X), bo))
232234 }
233235 else unit
234236
235237
236-func bo (W) = valueOrErrorMessage(bm(W), (("User " + toString(W)) + " is not defined"))
238+func bp (X) = valueOrErrorMessage(bn(X), (("User " + toString(X)) + " is not defined"))
237239
238240
239-let bp = aB(al(), "")
241+let bq = aC(am(), "")
240242
241-let bq = split(bp, "_")
243+let br = split(bq, "_")
242244
243-func br (W,bs,bt,bu,bv) = {
244- let bw = ao(bv, bs)
245- let bx = parseBigIntValue(aB(ao(bv, bs), "0"))
246- let by = parseBigIntValue(aB(ao(bu, bs), "0"))
247- let bz = toInt(fraction((bx - by), bt, g))
248- let bA = ar(W, bs)
249- let bB = ay(bA, 0)
250- $Tuple4((bB + bz), bB, bz, bA)
245+func bs (X,bt,bu,bv,bw) = {
246+ let bx = ap(bw, bt)
247+ let by = parseBigIntValue(aC(ap(bw, bt), "0"))
248+ let bz = parseBigIntValue(aC(ap(bv, bt), "0"))
249+ let bA = toInt(fraction((by - bz), bu, g))
250+ let bB = as(X, bt)
251+ let bC = az(bB, 0)
252+ $Tuple4((bC + bA), bC, bA, bB)
251253 }
252254
253255
254-func bC (ai) = ((ai / j) * j)
256+func bD (aj) = ((aj / j) * j)
255257
256258
257-func bD (bE,bF,bG) = {
258- let bH = valueOrErrorMessage(indexOf(bE, bF), ((("there is no substring " + bF) + " in ") + bE))
259- if ((bH == 0))
259+func bE (bF,bG,bH) = {
260+ let bI = valueOrErrorMessage(indexOf(bF, bG), ((("there is no substring " + bG) + " in ") + bF))
261+ if ((bI == 0))
260262 then 0
261263 else {
262- let bI = take(bE, bH)
263- (size(split(bI, bG)) - 1)
264+ let bJ = take(bF, bI)
265+ (size(split(bJ, bH)) - 1)
264266 }
265267 }
266268
267269
268-let bJ = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
270+let bK = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
269271
270-let bK = (bJ + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
272+let bL = (bK + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
271273
272-func bL (bM) = {
273- let bN = (size(bM) - 1)
274- func bO (bP,G) = if ((bN > G))
275- then bP
276- else (bP :+ "0")
274+func bM (bN) = {
275+ let bO = (size(bN) - 1)
276+ func bP (bQ,G) = if ((bO > G))
277+ then bQ
278+ else (bQ :+ "0")
277279
278- let bQ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
279- let bR = size(bQ)
280- let bS = bM
281- func bT (bU,bV) = if ((bV >= bR))
282- then bU
283- else bO(bU, bQ[bV])
280+ let bR = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
281+ let bS = size(bR)
282+ let bT = bN
283+ func bU (bV,bW) = if ((bW >= bS))
284+ then bV
285+ else bP(bV, bR[bW])
284286
285- func bW (bU,bV) = if ((bV >= bR))
286- then bU
287+ func bX (bV,bW) = if ((bW >= bS))
288+ then bV
287289 else throw("List size exceeds 18")
288290
289- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
291+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
290292 }
291293
292294
293-func bX (bM) = {
294- let bN = (size(split_4C(bM, b)) - 1)
295- func bY (bP,G) = if ((bN > G))
296- then bP
297- else (bP + "__0")
295+func bY (bN) = {
296+ let bO = (size(split_4C(bN, b)) - 1)
297+ func bZ (bQ,G) = if ((bO > G))
298+ then bQ
299+ else (bQ + "__0")
298300
299- let bQ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
300- let bR = size(bQ)
301- let bS = bM
302- func bT (bU,bV) = if ((bV >= bR))
303- then bU
304- else bY(bU, bQ[bV])
301+ let bR = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
302+ let bS = size(bR)
303+ let bT = bN
304+ func bU (bV,bW) = if ((bW >= bS))
305+ then bV
306+ else bZ(bV, bR[bW])
305307
306- func bW (bU,bV) = if ((bV >= bR))
307- then bU
308+ func bX (bV,bW) = if ((bW >= bS))
309+ then bV
308310 else throw("List size exceeds 18")
309311
310- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
312+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
311313 }
312314
313315
314-func bZ (ca,W,cb) = {
315- let bt = toBigInt(cb)
316- let cc = an(W)
317- let bu = ay(cc, -1)
318- let bv = ay(am(), -1)
319- func cd (ce,cf) = {
320- let cg = br(W, cf, bt, bu, bv)
321- let ch = cg._1
322- let ci = cg._2
323- let cj = cg._3
324- let bA = cg._4
325- (ce :+ IntegerEntry(bA, ch))
316+func ca (cb,X,cc) = {
317+ let bu = toBigInt(cc)
318+ let cd = ao(X)
319+ let bv = az(cd, -1)
320+ let bw = az(an(), -1)
321+ func ce (cf,cg) = {
322+ let ch = bs(X, cg, bu, bv, bw)
323+ let ci = ch._1
324+ let cj = ch._2
325+ let ck = ch._3
326+ let bB = ch._4
327+ (cf :+ IntegerEntry(bB, ci))
326328 }
327329
328- if (if ((bv == -1))
329- then (bu == -1)
330+ if (if ((bw == -1))
331+ then (bv == -1)
330332 else false)
331333 then nil
332- else if (if ((bv == -1))
333- then (bu > -1)
334+ else if (if ((bw == -1))
335+ then (bv > -1)
334336 else false)
335337 then throw("invalid depositNumLast and depositNumUser state")
336- else if (if ((bv > -1))
337- then (bu >= -1)
338+ else if (if ((bw > -1))
339+ then (bv >= -1)
338340 else false)
339- then if (ca)
340- then [IntegerEntry(cc, bv)]
341+ then if (cb)
342+ then [IntegerEntry(cd, bw)]
341343 else ({
342- let bQ = bq
343- let bR = size(bQ)
344- let bS = nil
345- func bT (bU,bV) = if ((bV >= bR))
346- then bU
347- else cd(bU, bQ[bV])
344+ let bR = br
345+ let bS = size(bR)
346+ let bT = nil
347+ func bU (bV,bW) = if ((bW >= bS))
348+ then bV
349+ else ce(bV, bR[bW])
348350
349- func bW (bU,bV) = if ((bV >= bR))
350- then bU
351+ func bX (bV,bW) = if ((bW >= bS))
352+ then bV
351353 else throw("List size exceeds 9")
352354
353- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
354- } :+ IntegerEntry(cc, bv))
355- else throw(((("uncovered condition: depositNumLast=" + toString(bv)) + " depositNumUser=") + toString(bu)))
355+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
356+ } :+ IntegerEntry(cd, bw))
357+ else throw(((("uncovered condition: depositNumLast=" + toString(bw)) + " depositNumUser=") + toString(bv)))
356358 }
357359
358360
359-func ck (aq,cl) = {
360- let cm = at(aq)
361- let cn = ay(cm, 0)
362- IntegerEntry(cm, (cn + cl))
361+func cl (ar,cm) = {
362+ let cn = au(ar)
363+ let co = az(cn, 0)
364+ IntegerEntry(cn, (co + cm))
363365 }
364366
365367
366-func co (W,cp) = {
367- let cq = toString(W)
368- if ((size(cp.payments) > 0))
368+func cp (X,cq) = {
369+ let cr = toString(X)
370+ if ((size(cq.payments) > 0))
369371 then throw("payments are not accepted")
370372 else {
371- let cr = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
372- let ca = cr._1
373- let cb = cr._2
374- let cs = cr._3
375- let bh = cr._4
376- let bt = toBigInt(bh)
377- let cc = an(cq)
378- let bu = ay(cc, -1)
379- let bv = ay(am(), -1)
380- func ct (ce,cf) = {
381- let cu = br(cq, cf, bt, bu, bv)
382- let ch = cu._1
383- let ci = cu._2
384- let cj = cu._3
385- let bA = cu._4
386- let cv = as(cq, cf)
387- let cw = ce
388- let cx = cw._1
389- let cy = cw._2
390- let cz = makeString([cf, toString(ch)], ":")
391- let cA = makeString([cy, cz], "_")
392- if ((0 >= ch))
393- then $Tuple2(cx, cA)
394- else $Tuple2((((cx :+ ScriptTransfer(W, ch, aE(cf))) :+ IntegerEntry(cv, (valueOrElse(getInteger(cv), 0) + ch))) :+ IntegerEntry(bA, 0)), cA)
373+ let cs = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
374+ let cb = cs._1
375+ let cc = cs._2
376+ let ct = cs._3
377+ let bi = cs._4
378+ let bu = toBigInt(bi)
379+ let cd = ao(cr)
380+ let bv = az(cd, -1)
381+ let bw = az(an(), -1)
382+ func cu (cf,cg) = {
383+ let cv = bs(cr, cg, bu, bv, bw)
384+ let ci = cv._1
385+ let cj = cv._2
386+ let ck = cv._3
387+ let bB = cv._4
388+ let cw = at(cr, cg)
389+ let cx = cf
390+ let cy = cx._1
391+ let cz = cx._2
392+ let cA = makeString([cg, toString(ci)], ":")
393+ let cB = makeString([cz, cA], "_")
394+ if ((0 >= ci))
395+ then $Tuple2(cy, cB)
396+ else $Tuple2((((cy :+ ScriptTransfer(X, ci, aF(cg))) :+ IntegerEntry(cw, (valueOrElse(getInteger(cw), 0) + ci))) :+ IntegerEntry(bB, 0)), cB)
395397 }
396398
397- let cB = {
398- let bQ = bq
399- let bR = size(bQ)
400- let bS = $Tuple2(nil, "")
401- func bT (bU,bV) = if ((bV >= bR))
402- then bU
403- else ct(bU, bQ[bV])
399+ let cC = {
400+ let bR = br
401+ let bS = size(bR)
402+ let bT = $Tuple2(nil, "")
403+ func bU (bV,bW) = if ((bW >= bS))
404+ then bV
405+ else cu(bV, bR[bW])
404406
405- func bW (bU,bV) = if ((bV >= bR))
406- then bU
407+ func bX (bV,bW) = if ((bW >= bS))
408+ then bV
407409 else throw("List size exceeds 9")
408410
409- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
411+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
410412 }
411- let cC = cB._1
412- let cD = cB._2
413- if ((0 >= size(cC)))
413+ let cD = cC._1
414+ let cE = cC._2
415+ if ((0 >= size(cD)))
414416 then $Tuple2(nil, 0)
415- else $Tuple2(((cC :+ IntegerEntry(cc, bv)) :+ aT(W, cp.transactionId, drop(cD, 1))), size(cC))
417+ else $Tuple2(((cD :+ IntegerEntry(cd, bw)) :+ aU(X, cq.transactionId, drop(cE, 1))), size(cD))
416418 }
417419 }
418420
419421
420-func cE (W) = {
421- let x = Z(W)
422- let aH = valueOrElse(getBoolean(this, x), false)
423- $Tuple2(x, aH)
422+func cF (X) = {
423+ let x = aa(X)
424+ let aI = valueOrElse(getBoolean(this, x), false)
425+ $Tuple2(x, aI)
424426 }
425427
426428
427-func cF (W,cp) = if (!(bk(height)))
429+func cG (X,cq) = if (!(bl(height)))
428430 then throw("No 'Double gNSBT action' available now")
429431 else {
430- let cG = co(W, cp)
431- let cH = cG._1
432- let cI = cG._2
433- let cJ = valueOrElse(bm(W), $Tuple4(true, 0, -1, 0))
434- let ca = cJ._1
435- let cK = cJ._2
436- let cL = cJ._3
437- let cM = cJ._4
438- if (ca)
432+ let cH = cp(X, cq)
433+ let cI = cH._1
434+ let cJ = cH._2
435+ let cK = valueOrElse(bn(X), $Tuple4(true, 0, -1, 0))
436+ let cb = cK._1
437+ let cL = cK._2
438+ let cM = cK._3
439+ let cN = cK._4
440+ if (cb)
439441 then throw("You have nothing to restake")
440442 else {
441- let cN = cM
442- let cO = (cM + cN)
443- let cP = cE(W)
444- let cQ = cP._1
445- let cR = cP._2
446- if (cR)
443+ let cO = cN
444+ let cP = (cN + cO)
445+ let cQ = cF(X)
446+ let cR = cQ._1
447+ let cS = cQ._2
448+ if (cS)
447449 then throw("User has already doubled its gNSBT value")
448450 else {
449- let cS = aU(0, 0, 0, cN)
450- let cT = cS._1
451- let cU = cS._2
452- let cV = cS._3
453- $Tuple2((((cH ++ be(W, cK, height, cO)) ++ cT) :+ BooleanEntry(cQ, true)), cI)
451+ let cT = aV(0, 0, 0, cO)
452+ let cU = cT._1
453+ let cV = cT._2
454+ let cW = cT._3
455+ $Tuple2((((cI ++ bf(X, cL, height, cP)) ++ cU) :+ BooleanEntry(cR, true)), cJ)
454456 }
455457 }
456458 }
457459
458460
459-@Callable(cp)
460-func constructorV1 (cW,cX,cY,cZ,da) = if ((cp.caller != this))
461+@Callable(cq)
462+func constructorV1 (cX,cY,cZ,da,db) = if ((cq.caller != this))
461463 then throw("Permission denied")
462- else [StringEntry(R(), cW), StringEntry(S(), cX), IntegerEntry(T(), cY), IntegerEntry(U(), cZ), StringEntry(al(), da)]
464+ else [StringEntry(S(), cX), StringEntry(T(), cY), IntegerEntry(U(), cZ), IntegerEntry(V(), da), StringEntry(am(), db)]
463465
464466
465467
466-@Callable(cp)
467-func constructorV2 (db,dc) = if ((cp.caller != this))
468+@Callable(cq)
469+func constructorV2 (dc,dd) = if ((cq.caller != this))
468470 then throw("Permission denied")
469- else [IntegerEntry(y(), db), IntegerEntry(z(), dc)]
471+ else [IntegerEntry(y(), dc), IntegerEntry(z(), dd)]
470472
471473
472474
473-@Callable(cp)
475+@Callable(cq)
474476 func stake () = {
475- let dd = bi()
476- let de = dd._1
477- let cY = dd._2
478- let cZ = dd._3
479- if ((size(cp.payments) != 1))
477+ let de = bj()
478+ let df = de._1
479+ let cZ = de._2
480+ let da = de._3
481+ if ((size(cq.payments) != 1))
480482 then throw("Invalid payments size")
481483 else {
482- let df = cp.payments[0]
483- let bn = df.amount
484- let dg = (("Invalid asset. " + toBase58String(de)) + " is expected")
485- let bs = valueOrErrorMessage(df.assetId, dg)
486- if ((bs != de))
487- then throw(dg)
484+ let dg = cq.payments[0]
485+ let bo = dg.amount
486+ let dh = (("Invalid asset. " + toBase58String(df)) + " is expected")
487+ let bt = valueOrErrorMessage(dg.assetId, dh)
488+ if ((bt != df))
489+ then throw(dh)
488490 else {
489- let W = cp.caller
490- let cq = toString(cp.caller)
491- let dh = valueOrElse(bm(W), $Tuple4(true, 0, -1, 0))
492- let ca = dh._1
493- let cK = dh._2
494- let cL = dh._3
495- let cM = dh._4
496- let di = if (ca)
497- then bn
498- else (bn + cK)
499- let dj = if (ca)
491+ let X = cq.caller
492+ let cr = toString(cq.caller)
493+ let di = valueOrElse(bn(X), $Tuple4(true, 0, -1, 0))
494+ let cb = di._1
495+ let cL = di._2
496+ let cM = di._3
497+ let cN = di._4
498+ let dj = if (cb)
499+ then bo
500+ else (bo + cL)
501+ let dk = if (cb)
500502 then height
501- else aG(invoke(I, "mergeStakesREADONLY", [bn, height, cK, cL, cZ], nil))
502- if ((cY > di))
503- then throw(("Min lock amount is " + toString(cY)))
503+ else aH(invoke(I, "mergeStakesREADONLY", [bo, height, cL, cM, da], nil))
504+ if ((cZ > dj))
505+ then throw(("Min lock amount is " + toString(cZ)))
504506 else {
505- let cP = cE(W)
506- let cQ = cP._1
507- let cR = cP._2
508- let cN = if (if (bk(height))
509- then if (ca)
507+ let cQ = cF(X)
508+ let cR = cQ._1
509+ let cS = cQ._2
510+ let cO = if (if (bl(height))
511+ then if (cb)
510512 then true
511- else cR
513+ else cS
512514 else false)
513- then (2 * bn)
514- else bn
515- let dk = if (ca)
516- then [BooleanEntry(cQ, true)]
515+ then (2 * bo)
516+ else bo
517+ let dl = if (cb)
518+ then [BooleanEntry(cR, true)]
517519 else nil
518- let dl = aU(bn, 1, if (ca)
520+ let dm = aV(bo, 1, if (cb)
519521 then 1
520- else 0, cN)
521- let cT = dl._1
522- let cU = dl._2
523- let cV = dl._3
524- (((([aS("stake", W, cp.transactionId, cK, cL, di, dj)] ++ bZ(ca, cq, cM)) ++ be(W, di, dj, (cM + cN))) ++ cT) ++ dk)
522+ else 0, cO)
523+ let cU = dm._1
524+ let cV = dm._2
525+ let cW = dm._3
526+ (((([aT("stake", X, cq.transactionId, cL, cM, dj, dk)] ++ ca(cb, cr, cN)) ++ bf(X, dj, dk, (cN + cO))) ++ cU) ++ dl)
525527 }
526528 }
527529 }
529531
530532
531533
532-@Callable(cp)
533-func unstake (bn) = if ((size(cp.payments) != 0))
534+@Callable(cq)
535+func unstake (bo) = if ((size(cq.payments) != 0))
534536 then throw("unstake doesn't require any payment")
535537 else {
536- let W = cp.caller
537- let cq = toString(W)
538- let dm = bi()
539- let de = dm._1
540- let cY = dm._2
541- let cZ = dm._3
542- let dn = bo(W)
543- let ca = dn._1
544- let cK = dn._2
545- let do = dn._3
546- let cM = dn._4
547- if ((0 >= cK))
538+ let X = cq.caller
539+ let cr = toString(X)
540+ let dn = bj()
541+ let df = dn._1
542+ let cZ = dn._2
543+ let da = dn._3
544+ let do = bp(X)
545+ let cb = do._1
546+ let cL = do._2
547+ let dp = do._3
548+ let cN = do._4
549+ if ((0 >= cL))
548550 then throw("Nothing to unstake")
549- else if ((bn > cK))
550- then throw(((("Requested " + toString(bn)) + ", but staked only ") + toString(cK)))
551+ else if ((bo > cL))
552+ then throw(((("Requested " + toString(bo)) + ", but staked only ") + toString(cL)))
551553 else {
552- let dp = value(blockInfoByHeight(height)).timestamp
553- let dq = valueOrElse(getInteger(L, P(cq)), 0)
554- if ((dq >= dp))
555- then throw(("Your gNsbt are taking part in voting, cannot unstake until " + toString(dq)))
554+ let dq = value(blockInfoByHeight(height)).timestamp
555+ let dr = valueOrElse(getInteger(L, Q(cr)), 0)
556+ if ((dr >= dq))
557+ then throw(("Your gNsbt are taking part in voting, cannot unstake until " + toString(dr)))
556558 else {
557- let dr = aG(invoke(I, "getUnstakeComissionAmountREADONLY", [bn, do, cZ], nil))
558- let ds = (cM - cK)
559- let dt = min([bn, ds])
560- let du = (dt + bn)
561- let dv = aU(-(bn), if ((bn == cK))
559+ let ds = aH(invoke(I, "getUnstakeComissionAmountREADONLY", [bo, dp, da], nil))
560+ let dt = (cN - cL)
561+ let du = min([bo, dt])
562+ let dv = (du + bo)
563+ let dw = aV(-(bo), if ((bo == cL))
562564 then -1
563- else 0, if ((bn == cK))
565+ else 0, if ((bo == cL))
564566 then -1
565- else 0, -(du))
566- let cT = dv._1
567- let cU = dv._2
568- let cV = dv._3
569- ((([ScriptTransfer(W, (bn - dr), de), ScriptTransfer(K, dr, de), aS("unstake", W, cp.transactionId, cK, do, (cK - bn), do)] ++ bZ(false, cq, cM)) ++ be(W, (cK - bn), do, (cM - du))) ++ cT)
567+ else 0, -(dv))
568+ let cU = dw._1
569+ let cV = dw._2
570+ let cW = dw._3
571+ ((([ScriptTransfer(X, (bo - ds), df), ScriptTransfer(K, ds, df), aT("unstake", X, cq.transactionId, cL, dp, (cL - bo), dp)] ++ ca(false, cr, cN)) ++ bf(X, (cL - bo), dp, (cN - dv))) ++ cU)
570572 }
571573 }
572574 }
573575
574576
575577
576-@Callable(cp)
578+@Callable(cq)
577579 func deposit () = {
578- let cU = ay(ae(), ay(ad(), 0))
579- if ((0 > cU))
580+ let cV = az(af(), az(ae(), 0))
581+ if ((0 > cV))
580582 then throw("TODO: case is not supported")
581583 else {
582- let dw = am()
583- let bv = ay(dw, -1)
584- let dx = (bv + 1)
585- let dy = aj()
586- let dz = ah(bC(lastBlock.timestamp))
587- let dA = bL(split(valueOrElse(getString(dy), bK), b))
588- func dB (bP,dC) = {
589- let bn = dC.amount
590- let dD = toBase58String(valueOrElse(dC.assetId, i))
591- if (!(contains(bp, dD)))
592- then throw(((bp + " doesn't contain ") + dD))
593- else if ((cU == 0))
594- then $Tuple4((bP._1 :+ ck(dD, bn)), (bP._2 :+ dD), (bP._3 :+ toBigInt(0)), (bP._4 :+ bn))
584+ let dx = an()
585+ let bw = az(dx, -1)
586+ let dy = (bw + 1)
587+ let dz = ak()
588+ let dA = ai(bD(lastBlock.timestamp))
589+ let dB = bM(split(valueOrElse(getString(dz), bL), b))
590+ func dC (bQ,dD) = {
591+ let bo = dD.amount
592+ let dE = toBase58String(valueOrElse(dD.assetId, i))
593+ if (!(contains(bq, dE)))
594+ then throw(((bq + " doesn't contain ") + dE))
595+ else if ((cV == 0))
596+ then $Tuple4((bQ._1 :+ cl(dE, bo)), (bQ._2 :+ dE), (bQ._3 :+ toBigInt(0)), (bQ._4 :+ bo))
595597 else {
596- let dE = fraction(toBigInt(bn), g, toBigInt(cU))
597- $Tuple4(bP._1, (bP._2 :+ dD), (bP._3 :+ dE), (bP._4 :+ bn))
598+ let dF = fraction(toBigInt(bo), g, toBigInt(cV))
599+ $Tuple4(bQ._1, (bQ._2 :+ dE), (bQ._3 :+ dF), (bQ._4 :+ bo))
598600 }
599601 }
600602
601- let dF = {
602- let bQ = cp.payments
603- let bR = size(bQ)
604- let bS = $Tuple4(nil, nil, nil, nil)
605- func bT (bU,bV) = if ((bV >= bR))
606- then bU
607- else dB(bU, bQ[bV])
603+ let dG = {
604+ let bR = cq.payments
605+ let bS = size(bR)
606+ let bT = $Tuple4(nil, nil, nil, nil)
607+ func bU (bV,bW) = if ((bW >= bS))
608+ then bV
609+ else dC(bV, bR[bW])
608610
609- func bW (bU,bV) = if ((bV >= bR))
610- then bU
611+ func bX (bV,bW) = if ((bW >= bS))
612+ then bV
611613 else throw("List size exceeds 10")
612614
613- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
615+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
614616 }
615- func dG (ce,dH) = {
616- let dI = ce._3
617- let dJ = aB(ao(bv, dH), "0")
618- let G = indexOf(dF._2, dH)
619- let dK = if (isDefined(G))
617+ func dH (cf,dI) = {
618+ let dJ = cf._3
619+ let dK = aC(ap(bw, dI), "0")
620+ let G = indexOf(dG._2, dI)
621+ let dL = if (isDefined(G))
620622 then {
621- let dL = value(G)
622- let dM = dF._4[dL]
623- $Tuple2(toString((parseBigIntValue(dJ) + dF._3[dL])), toString((parseIntValue(dA[(dI + 1)]) + dM)))
623+ let dM = value(G)
624+ let dN = dG._4[dM]
625+ $Tuple2(toString((parseBigIntValue(dK) + dG._3[dM])), toString((parseIntValue(dB[(dJ + 1)]) + dN)))
624626 }
625- else $Tuple2(dJ, dA[(dI + 1)])
626- $Tuple3((ce._1 :+ StringEntry(ao(dx, dH), dK._1)), ((ce._2 + b) + dK._2), (dI + 1))
627+ else $Tuple2(dK, dB[(dJ + 1)])
628+ $Tuple3((cf._1 :+ StringEntry(ap(dy, dI), dL._1)), ((cf._2 + b) + dL._2), (dJ + 1))
627629 }
628630
629- let dN = {
630- let bQ = bq
631- let bR = size(bQ)
632- let bS = $Tuple3(nil, bJ, 0)
633- func dO (bU,bV) = if ((bV >= bR))
634- then bU
635- else dG(bU, bQ[bV])
631+ let dO = {
632+ let bR = br
633+ let bS = size(bR)
634+ let bT = $Tuple3(nil, bK, 0)
635+ func dP (bV,bW) = if ((bW >= bS))
636+ then bV
637+ else dH(bV, bR[bW])
636638
637- func dP (bU,bV) = if ((bV >= bR))
638- then bU
639+ func dQ (bV,bW) = if ((bW >= bS))
640+ then bV
639641 else throw("List size exceeds 9")
640642
641- dP(dO(dO(dO(dO(dO(dO(dO(dO(dO(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
643+ dQ(dP(dP(dP(dP(dP(dP(dP(dP(dP(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
642644 }
643- let dQ = bX(dN._2)
644- $Tuple2(((((dF._1 ++ dN._1) :+ IntegerEntry(dw, dx)) :+ StringEntry(dy, dQ)) :+ StringEntry(dz, dQ)), dx)
645+ let dR = bY(dO._2)
646+ $Tuple2(((((dG._1 ++ dO._1) :+ IntegerEntry(dx, dy)) :+ StringEntry(dz, dR)) :+ StringEntry(dA, dR)), dy)
645647 }
646648 }
647649
648650
649651
650-@Callable(cp)
651-func claimRewards () = co(cp.caller, cp)
652+@Callable(cq)
653+func claimRewards () = cp(cq.caller, cq)
652654
653655
654656
655-@Callable(cp)
656-func claimRewardsByOriginCaller () = co(cp.originCaller, cp)
657+@Callable(cq)
658+func claimRewardsByOriginCaller () = cp(cq.originCaller, cq)
657659
658660
659661
660-@Callable(cp)
661-func x2Gnsbt () = cF(cp.caller, cp)
662+@Callable(cq)
663+func x2Gnsbt () = cG(cq.caller, cq)
662664
663665
664666
665-@Callable(cp)
666-func x2GnsbtByOriginCaller () = cF(cp.originCaller, cp)
667+@Callable(cq)
668+func x2GnsbtByOriginCaller () = cG(cq.originCaller, cq)
667669
668670
669671
670-@Callable(cp)
671-func unclaimedRewardsREADONLY (cq) = {
672- func dR (ce,cf) = ((ce + makeString([cf, "0", "0"], ":")) + "_")
672+@Callable(cq)
673+func unclaimedRewardsREADONLY (cr) = {
674+ func dS (cf,cg) = ((cf + makeString([cg, "0", "0"], ":")) + "_")
673675
674- let dS = if ((cq == ""))
676+ let dT = if ((cr == ""))
675677 then {
676- let bQ = bq
677- let bR = size(bQ)
678- let bS = ""
679- func bT (bU,bV) = if ((bV >= bR))
680- then bU
681- else dR(bU, bQ[bV])
678+ let bR = br
679+ let bS = size(bR)
680+ let bT = ""
681+ func bU (bV,bW) = if ((bW >= bS))
682+ then bV
683+ else dS(bV, bR[bW])
682684
683- func bW (bU,bV) = if ((bV >= bR))
684- then bU
685+ func bX (bV,bW) = if ((bW >= bS))
686+ then bV
685687 else throw("List size exceeds 9")
686688
687- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
689+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
688690 }
689691 else {
690- let W = addressFromStringValue(cq)
691- let dT = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
692- let ca = dT._1
693- let cb = dT._2
694- let cs = dT._3
695- let dU = dT._4
696- let bt = toBigInt(dU)
697- let cc = an(cq)
698- let bu = ay(cc, -1)
699- let bv = ay(am(), -1)
700- func ct (ce,cf) = {
701- let dV = br(cq, cf, bt, bu, bv)
702- let ch = dV._1
703- let ci = dV._2
704- let cj = dV._3
705- let bA = dV._4
706- let dW = valueOrElse(getInteger(as(cq, cf)), 0)
707- ((ce + makeString([cf, toString(ch), toString(dW)], ":")) + "_")
692+ let X = addressFromStringValue(cr)
693+ let dU = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
694+ let cb = dU._1
695+ let cc = dU._2
696+ let ct = dU._3
697+ let dV = dU._4
698+ let bu = toBigInt(dV)
699+ let cd = ao(cr)
700+ let bv = az(cd, -1)
701+ let bw = az(an(), -1)
702+ func cu (cf,cg) = {
703+ let dW = bs(cr, cg, bu, bv, bw)
704+ let ci = dW._1
705+ let cj = dW._2
706+ let ck = dW._3
707+ let bB = dW._4
708+ let dX = valueOrElse(getInteger(at(cr, cg)), 0)
709+ ((cf + makeString([cg, toString(ci), toString(dX)], ":")) + "_")
708710 }
709711
710- let bQ = bq
711- let bR = size(bQ)
712- let bS = ""
713- func bT (bU,bV) = if ((bV >= bR))
714- then bU
715- else ct(bU, bQ[bV])
712+ let bR = br
713+ let bS = size(bR)
714+ let bT = ""
715+ func bU (bV,bW) = if ((bW >= bS))
716+ then bV
717+ else cu(bV, bR[bW])
716718
717- func bW (bU,bV) = if ((bV >= bR))
718- then bU
719+ func bX (bV,bW) = if ((bW >= bS))
720+ then bV
719721 else throw("List size exceeds 9")
720722
721- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
723+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
722724 }
723- $Tuple2(nil, dropRight(dS, 1))
725+ $Tuple2(nil, dropRight(dT, 1))
724726 }
725727
726728
727729
728-@Callable(cp)
729-func nsbtUnstakingSYSREADONLY (dX,dY) = {
730- let dZ = if ((dX == ""))
730+@Callable(cq)
731+func nsbtUnstakingSYSREADONLY (dY,dZ) = {
732+ let ea = if ((dY == ""))
731733 then [0, 0, 0, 0]
732734 else {
733- let W = addressFromStringValue(dX)
734- let ea = bi()
735- let eb = ea._1
736- let cY = ea._2
737- let cZ = ea._3
738- let ec = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
739- let ca = ec._1
740- let cb = ec._2
741- let do = ec._3
742- let ed = if ((dY > cb))
743- then cb
744- else dY
745- let ee = (cb - ed)
746- let dr = if ((ed == 0))
735+ let X = addressFromStringValue(dY)
736+ let eb = bj()
737+ let ec = eb._1
738+ let cZ = eb._2
739+ let da = eb._3
740+ let ed = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
741+ let cb = ed._1
742+ let cc = ed._2
743+ let dp = ed._3
744+ let ee = if ((dZ > cc))
745+ then cc
746+ else dZ
747+ let ef = (cc - ee)
748+ let ds = if ((ee == 0))
747749 then 0
748- else aG(invoke(I, "getUnstakeComissionAmountREADONLY", [ed, do, cZ], nil))
749- let ef = (ed - dr)
750-[cb, ee, ef, dr]
750+ else aH(invoke(I, "getUnstakeComissionAmountREADONLY", [ee, dp, da], nil))
751+ let eg = (ee - ds)
752+[cc, ef, eg, ds]
751753 }
752- $Tuple2(nil, dZ)
754+ $Tuple2(nil, ea)
753755 }
754756
755757
756758
757-@Callable(cp)
758-func nsbtStakingSYSREADONLY (cq,eg) = {
759- let eh = ay(ad(), 0)
760- let bd = ay(ae(), eh)
761- if ((cq == ""))
762- then $Tuple2(nil, [0, eh, 0, 0, bd])
759+@Callable(cq)
760+func nsbtStakingSYSREADONLY (cr,eh) = {
761+ let ei = az(ae(), 0)
762+ let be = az(af(), ei)
763+ if ((cr == ""))
764+ then $Tuple2(nil, [0, ei, 0, 0, be, (eh * 2)])
763765 else {
764- let W = aC(cq)
765- let ei = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
766- let ca = ei._1
767- let ej = ei._2
768- let cs = ei._3
769- let ek = ei._4
770- let cP = cE(addressFromStringValue(cq))
771- let cQ = cP._1
772- let cR = cP._2
773- let cN = if (if (bk(height))
774- then if (ca)
766+ let X = aD(cr)
767+ let ej = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
768+ let cb = ej._1
769+ let ek = ej._2
770+ let ct = ej._3
771+ let el = ej._4
772+ let cQ = cF(addressFromStringValue(cr))
773+ let cR = cQ._1
774+ let cS = cQ._2
775+ let cO = if (if (bl(height))
776+ then if (cb)
775777 then true
776- else cR
778+ else cS
777779 else false)
778- then (2 * eg)
779- else eg
780- $Tuple2(nil, [ej, eh, cs, ek, bd, cN])
780+ then (2 * eh)
781+ else eh
782+ $Tuple2(nil, [ek, ei, ct, el, be, cO])
781783 }
782784 }
783785
784786
785-@Verifier(el)
786-func em () = {
787- let en = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
788- let eo = split(valueOrElse(getString(H, "%s__multisig"), en), b)
789- let ep = ((((if (sigVerify(el.bodyBytes, el.proofs[0], fromBase58String(eo[0])))
787+@Verifier(em)
788+func en () = {
789+ let eo = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
790+ let ep = split(valueOrElse(getString(H, "%s__multisig"), eo), b)
791+ let eq = ((((if (sigVerify(em.bodyBytes, em.proofs[0], fromBase58String(ep[0])))
790792 then 1
791- else 0) + (if (sigVerify(el.bodyBytes, el.proofs[1], fromBase58String(eo[1])))
793+ else 0) + (if (sigVerify(em.bodyBytes, em.proofs[1], fromBase58String(ep[1])))
792794 then 1
793- else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[2], fromBase58String(eo[2])))
795+ else 0)) + (if (sigVerify(em.bodyBytes, em.proofs[2], fromBase58String(ep[2])))
794796 then 1
795- else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[3], fromBase58String(eo[3])))
797+ else 0)) + (if (sigVerify(em.bodyBytes, em.proofs[3], fromBase58String(ep[3])))
796798 then 2
797799 else 0))
798- (ep >= 3)
800+ (eq >= 3)
799801 }
800802
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "__"
77
88 let c = 1000000
99
1010 let d = 100000000
1111
1212 let e = toBigInt(c)
1313
1414 let f = toBigInt(d)
1515
1616 let g = toBigInt(1000000000000000000)
1717
1818 let h = "WAVES"
1919
2020 let i = fromBase58String(h)
2121
2222 let j = 86400000
2323
2424 let k = 9
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 5
3535
3636 let q = 6
3737
3838 let r = 7
3939
4040 let s = 8
4141
4242 let t = 9
4343
4444 let u = 13
4545
4646 func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
4747
4848
4949 func y () = "%s%s__config__x2GnsbtOfferHeightStart"
5050
5151
5252 func z () = "%s%s__config__x2GnsbtOfferHeightEnd"
5353
5454
5555 func A () = "%s%s__config__controlAddress"
5656
5757
5858 func B () = "%s__controlConfig"
5959
6060
6161 func C (D) = split_4C(v(D, B()), b)
6262
6363
6464 func E (F,G) = valueOrErrorMessage(addressFromString(F[G]), ("Control cfg doesn't contain address at index " + toString(G)))
6565
6666
6767 let H = addressFromStringValue(valueOrElse(getString(this, A()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
6868
6969 let F = C(H)
7070
7171 let I = E(F, o)
7272
7373 let J = E(F, l)
7474
7575 let K = E(F, m)
7676
7777 let L = E(F, u)
7878
79-let M = valueOrElse(getInteger(this, y()), 0)
79+let M = addressFromStringValue("3PEiiJRkV66T1NW7MoY3DGgCaxoDRCez8fL")
8080
81-let N = valueOrElse(getInteger(this, z()), 0)
81+let N = valueOrElse(getInteger(this, y()), 0)
8282
83-func O () = "bond_asset_id"
83+let O = valueOrElse(getInteger(this, z()), 0)
84+
85+func P () = "bond_asset_id"
8486
8587
86-func P (Q) = ("%s%s_userGnsbtReleaseTime__" + Q)
88+func Q (R) = ("%s%s_userGnsbtReleaseTime__" + R)
8789
8890
89-func R () = "%s__neutrinoContractAddress"
91+func S () = "%s__neutrinoContractAddress"
9092
9193
92-func S () = "%s__mathContract"
94+func T () = "%s__mathContract"
9395
9496
95-func T () = "%s__minLockAmount"
97+func U () = "%s__minLockAmount"
9698
9799
98-func U () = "%s__halfLife"
100+func V () = "%s__halfLife"
99101
100102
101-func V (W) = makeString(["%s%s%s", "paramByUser", toString(W), "amount"], a)
103+func W (X) = makeString(["%s%s%s", "paramByUser", toString(X), "amount"], a)
102104
103105
104-func X (W) = makeString(["%s%s%s", "paramByUser", toString(W), "start"], a)
106+func Y (X) = makeString(["%s%s%s", "paramByUser", toString(X), "start"], a)
105107
106108
107-func Y (W) = makeString(["%s%s%s", "paramByUser", toString(W), "gNsbt"], a)
109+func Z (X) = makeString(["%s%s%s", "paramByUser", toString(X), "gNsbt"], a)
108110
109111
110-func Z (W) = makeString(["%s%s%s", "paramByUser", toString(W), "consentedToX2Gnsbt"], a)
112+func aa (X) = makeString(["%s%s%s", "paramByUser", toString(X), "consentedToX2Gnsbt"], a)
111113
112114
113-func aa (ab,W,ac) = makeString(["%s%s%s%s", "history", ab, toString(W), toBase58String(ac)], a)
115+func ab (ac,X,ad) = makeString(["%s%s%s%s", "history", ac, toString(X), toBase58String(ad)], a)
114116
115117
116-func ad () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
118+func ae () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
117119
118120
119-func ae () = makeString(["%s%s", "stats", "activeTotalGnsbt"], a)
121+func af () = makeString(["%s%s", "stats", "activeTotalGnsbt"], a)
120122
121123
122-func af () = makeString(["%s%s", "stats", "locksCount"], a)
124+func ag () = makeString(["%s%s", "stats", "locksCount"], a)
123125
124126
125-func ag () = makeString(["%s%s", "stats", "activeUsersCount"], a)
127+func ah () = makeString(["%s%s", "stats", "activeUsersCount"], a)
126128
127129
128-func ah (ai) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ai)], a)
130+func ai (aj) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(aj)], a)
129131
130132
131-func aj () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
133+func ak () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
132134
133135
134-func ak () = "%s__nextPeriod"
136+func al () = "%s__nextPeriod"
135137
136138
137-func al () = "supportedRewardAssets"
139+func am () = "supportedRewardAssets"
138140
139141
140-func am () = makeString(["%s%s%s", "dep", "lastNum"], a)
142+func an () = makeString(["%s%s%s", "dep", "lastNum"], a)
141143
142144
143-func an (W) = makeString(["%s%s%s", "userRwdFromDepNum", W], a)
145+func ao (X) = makeString(["%s%s%s", "userRwdFromDepNum", X], a)
144146
145147
146-func ao (ap,aq) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ap), aq], a)
148+func ap (aq,ar) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(aq), ar], a)
147149
148150
149-func ar (W,aq) = makeString(["%s%s%s", "rwd", W, aq], a)
151+func as (X,ar) = makeString(["%s%s%s", "rwd", X, ar], a)
150152
151153
152-func as (W,aq) = makeString(["%s%s%s", "clm", W, aq], a)
154+func at (X,ar) = makeString(["%s%s%s", "clm", X, ar], a)
153155
154156
155-func at (aq) = makeString(["%s%s", "notDistributed", aq], a)
157+func au (ar) = makeString(["%s%s", "notDistributed", ar], a)
156158
157159
158-func au (av,aw) = fraction(toBigInt(av), g, aw)
160+func av (aw,ax) = fraction(toBigInt(aw), g, ax)
159161
160162
161-func ax (x) = valueOrElse(getInteger(this, x), 0)
163+func ay (x) = valueOrElse(getInteger(this, x), 0)
162164
163165
164-func ay (x,az) = valueOrElse(getInteger(this, x), az)
166+func az (x,aA) = valueOrElse(getInteger(this, x), aA)
165167
166168
167-func aA (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
169+func aB (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
168170
169171
170-func aB (x,az) = valueOrElse(getString(this, x), az)
172+func aC (x,aA) = valueOrElse(getString(this, x), aA)
171173
172174
173-func aC (aD) = valueOrErrorMessage(addressFromString(aD), ("couldn't parse passed addressStr=" + aD))
175+func aD (aE) = valueOrErrorMessage(addressFromString(aE), ("couldn't parse passed addressStr=" + aE))
174176
175177
176-func aE (aF) = if ((aF == h))
178+func aF (aG) = if ((aG == h))
177179 then unit
178- else fromBase58String(aF)
180+ else fromBase58String(aG)
179181
180182
181-func aG (aH) = {
182- let aI = aH
183- if ($isInstanceOf(aI, "Int"))
183+func aH (aI) = {
184+ let aJ = aI
185+ if ($isInstanceOf(aJ, "Int"))
184186 then {
185- let aJ = aI
186- aJ
187+ let aK = aJ
188+ aK
187189 }
188190 else throw("fail to cast into Int")
189191 }
190192
191193
192-func aK (aL,aM,aN,aO) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aL), toString(aM), toString(aN), toString(aO)], a)
194+func aL (aM,aN,aO,aP) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM), toString(aN), toString(aO), toString(aP)], a)
193195
194196
195-func aP (aQ,aR) = makeString(["%s%d%d%s", aQ, toString(lastBlock.height), toString(lastBlock.timestamp), aR], a)
197+func aQ (aR,aS) = makeString(["%s%d%d%s", aR, toString(lastBlock.height), toString(lastBlock.timestamp), aS], a)
196198
197199
198-func aS (ab,W,ac,aL,aM,aN,aO) = StringEntry(aa(ab, W, ac), aK(aL, aM, aN, aO))
200+func aT (ac,X,ad,aM,aN,aO,aP) = StringEntry(ab(ac, X, ad), aL(aM, aN, aO, aP))
199201
200202
201-func aT (W,ac,aR) = StringEntry(aa("claim", W, ac), aP(toString(W), aR))
203+func aU (X,ad,aS) = StringEntry(ab("claim", X, ad), aQ(toString(X), aS))
202204
203205
204-func aU (aV,aW,aX,aY) = {
205- let aZ = ax(af())
206- let ba = ax(ag())
207- let bb = ax(ad())
208- let bc = (bb + aV)
209- let bd = ay(ae(), bb)
210- $Tuple3([IntegerEntry(af(), (aZ + aW)), IntegerEntry(ag(), (ba + aX)), IntegerEntry(ad(), bc), IntegerEntry(ae(), (bd + aY))], bb, bc)
206+func aV (aW,aX,aY,aZ) = {
207+ let ba = ay(ag())
208+ let bb = ay(ah())
209+ let bc = ay(ae())
210+ let bd = (bc + aW)
211+ let be = az(af(), bc)
212+ $Tuple3([IntegerEntry(ag(), (ba + aX)), IntegerEntry(ah(), (bb + aY)), IntegerEntry(ae(), bd), IntegerEntry(af(), (be + aZ))], bc, bd)
211213 }
212214
213215
214-func be (W,bf,bg,bh) = [IntegerEntry(V(W), bf), IntegerEntry(Y(W), bh), IntegerEntry(X(W), bg)]
216+func bf (X,bg,bh,bi) = [IntegerEntry(W(X), bg), IntegerEntry(Z(X), bi), IntegerEntry(Y(X), bh)]
215217
216218
217-func bi () = $Tuple3(fromBase58String(getStringValue(J, O())), aA(T()), aA(U()))
219+func bj () = $Tuple3(fromBase58String(getStringValue(J, P())), aB(U()), aB(V()))
218220
219221
220-func bj (W) = (ay(V(W), 0) > 0)
222+func bk (X) = (az(W(X), 0) > 0)
221223
222224
223-func bk (bl) = if ((bl >= M))
224- then (N >= bl)
225+func bl (bm) = if ((bm >= N))
226+ then (O >= bm)
225227 else false
226228
227229
228-func bm (W) = if (bj(W))
230+func bn (X) = if (bk(X))
229231 then {
230- let bn = aA(V(W))
231- $Tuple4(false, bn, aA(X(W)), ay(Y(W), bn))
232+ let bo = aB(W(X))
233+ $Tuple4(false, bo, aB(Y(X)), az(Z(X), bo))
232234 }
233235 else unit
234236
235237
236-func bo (W) = valueOrErrorMessage(bm(W), (("User " + toString(W)) + " is not defined"))
238+func bp (X) = valueOrErrorMessage(bn(X), (("User " + toString(X)) + " is not defined"))
237239
238240
239-let bp = aB(al(), "")
241+let bq = aC(am(), "")
240242
241-let bq = split(bp, "_")
243+let br = split(bq, "_")
242244
243-func br (W,bs,bt,bu,bv) = {
244- let bw = ao(bv, bs)
245- let bx = parseBigIntValue(aB(ao(bv, bs), "0"))
246- let by = parseBigIntValue(aB(ao(bu, bs), "0"))
247- let bz = toInt(fraction((bx - by), bt, g))
248- let bA = ar(W, bs)
249- let bB = ay(bA, 0)
250- $Tuple4((bB + bz), bB, bz, bA)
245+func bs (X,bt,bu,bv,bw) = {
246+ let bx = ap(bw, bt)
247+ let by = parseBigIntValue(aC(ap(bw, bt), "0"))
248+ let bz = parseBigIntValue(aC(ap(bv, bt), "0"))
249+ let bA = toInt(fraction((by - bz), bu, g))
250+ let bB = as(X, bt)
251+ let bC = az(bB, 0)
252+ $Tuple4((bC + bA), bC, bA, bB)
251253 }
252254
253255
254-func bC (ai) = ((ai / j) * j)
256+func bD (aj) = ((aj / j) * j)
255257
256258
257-func bD (bE,bF,bG) = {
258- let bH = valueOrErrorMessage(indexOf(bE, bF), ((("there is no substring " + bF) + " in ") + bE))
259- if ((bH == 0))
259+func bE (bF,bG,bH) = {
260+ let bI = valueOrErrorMessage(indexOf(bF, bG), ((("there is no substring " + bG) + " in ") + bF))
261+ if ((bI == 0))
260262 then 0
261263 else {
262- let bI = take(bE, bH)
263- (size(split(bI, bG)) - 1)
264+ let bJ = take(bF, bI)
265+ (size(split(bJ, bH)) - 1)
264266 }
265267 }
266268
267269
268-let bJ = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
270+let bK = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
269271
270-let bK = (bJ + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
272+let bL = (bK + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
271273
272-func bL (bM) = {
273- let bN = (size(bM) - 1)
274- func bO (bP,G) = if ((bN > G))
275- then bP
276- else (bP :+ "0")
274+func bM (bN) = {
275+ let bO = (size(bN) - 1)
276+ func bP (bQ,G) = if ((bO > G))
277+ then bQ
278+ else (bQ :+ "0")
277279
278- let bQ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
279- let bR = size(bQ)
280- let bS = bM
281- func bT (bU,bV) = if ((bV >= bR))
282- then bU
283- else bO(bU, bQ[bV])
280+ let bR = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
281+ let bS = size(bR)
282+ let bT = bN
283+ func bU (bV,bW) = if ((bW >= bS))
284+ then bV
285+ else bP(bV, bR[bW])
284286
285- func bW (bU,bV) = if ((bV >= bR))
286- then bU
287+ func bX (bV,bW) = if ((bW >= bS))
288+ then bV
287289 else throw("List size exceeds 18")
288290
289- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
291+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
290292 }
291293
292294
293-func bX (bM) = {
294- let bN = (size(split_4C(bM, b)) - 1)
295- func bY (bP,G) = if ((bN > G))
296- then bP
297- else (bP + "__0")
295+func bY (bN) = {
296+ let bO = (size(split_4C(bN, b)) - 1)
297+ func bZ (bQ,G) = if ((bO > G))
298+ then bQ
299+ else (bQ + "__0")
298300
299- let bQ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
300- let bR = size(bQ)
301- let bS = bM
302- func bT (bU,bV) = if ((bV >= bR))
303- then bU
304- else bY(bU, bQ[bV])
301+ let bR = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
302+ let bS = size(bR)
303+ let bT = bN
304+ func bU (bV,bW) = if ((bW >= bS))
305+ then bV
306+ else bZ(bV, bR[bW])
305307
306- func bW (bU,bV) = if ((bV >= bR))
307- then bU
308+ func bX (bV,bW) = if ((bW >= bS))
309+ then bV
308310 else throw("List size exceeds 18")
309311
310- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
312+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
311313 }
312314
313315
314-func bZ (ca,W,cb) = {
315- let bt = toBigInt(cb)
316- let cc = an(W)
317- let bu = ay(cc, -1)
318- let bv = ay(am(), -1)
319- func cd (ce,cf) = {
320- let cg = br(W, cf, bt, bu, bv)
321- let ch = cg._1
322- let ci = cg._2
323- let cj = cg._3
324- let bA = cg._4
325- (ce :+ IntegerEntry(bA, ch))
316+func ca (cb,X,cc) = {
317+ let bu = toBigInt(cc)
318+ let cd = ao(X)
319+ let bv = az(cd, -1)
320+ let bw = az(an(), -1)
321+ func ce (cf,cg) = {
322+ let ch = bs(X, cg, bu, bv, bw)
323+ let ci = ch._1
324+ let cj = ch._2
325+ let ck = ch._3
326+ let bB = ch._4
327+ (cf :+ IntegerEntry(bB, ci))
326328 }
327329
328- if (if ((bv == -1))
329- then (bu == -1)
330+ if (if ((bw == -1))
331+ then (bv == -1)
330332 else false)
331333 then nil
332- else if (if ((bv == -1))
333- then (bu > -1)
334+ else if (if ((bw == -1))
335+ then (bv > -1)
334336 else false)
335337 then throw("invalid depositNumLast and depositNumUser state")
336- else if (if ((bv > -1))
337- then (bu >= -1)
338+ else if (if ((bw > -1))
339+ then (bv >= -1)
338340 else false)
339- then if (ca)
340- then [IntegerEntry(cc, bv)]
341+ then if (cb)
342+ then [IntegerEntry(cd, bw)]
341343 else ({
342- let bQ = bq
343- let bR = size(bQ)
344- let bS = nil
345- func bT (bU,bV) = if ((bV >= bR))
346- then bU
347- else cd(bU, bQ[bV])
344+ let bR = br
345+ let bS = size(bR)
346+ let bT = nil
347+ func bU (bV,bW) = if ((bW >= bS))
348+ then bV
349+ else ce(bV, bR[bW])
348350
349- func bW (bU,bV) = if ((bV >= bR))
350- then bU
351+ func bX (bV,bW) = if ((bW >= bS))
352+ then bV
351353 else throw("List size exceeds 9")
352354
353- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
354- } :+ IntegerEntry(cc, bv))
355- else throw(((("uncovered condition: depositNumLast=" + toString(bv)) + " depositNumUser=") + toString(bu)))
355+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
356+ } :+ IntegerEntry(cd, bw))
357+ else throw(((("uncovered condition: depositNumLast=" + toString(bw)) + " depositNumUser=") + toString(bv)))
356358 }
357359
358360
359-func ck (aq,cl) = {
360- let cm = at(aq)
361- let cn = ay(cm, 0)
362- IntegerEntry(cm, (cn + cl))
361+func cl (ar,cm) = {
362+ let cn = au(ar)
363+ let co = az(cn, 0)
364+ IntegerEntry(cn, (co + cm))
363365 }
364366
365367
366-func co (W,cp) = {
367- let cq = toString(W)
368- if ((size(cp.payments) > 0))
368+func cp (X,cq) = {
369+ let cr = toString(X)
370+ if ((size(cq.payments) > 0))
369371 then throw("payments are not accepted")
370372 else {
371- let cr = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
372- let ca = cr._1
373- let cb = cr._2
374- let cs = cr._3
375- let bh = cr._4
376- let bt = toBigInt(bh)
377- let cc = an(cq)
378- let bu = ay(cc, -1)
379- let bv = ay(am(), -1)
380- func ct (ce,cf) = {
381- let cu = br(cq, cf, bt, bu, bv)
382- let ch = cu._1
383- let ci = cu._2
384- let cj = cu._3
385- let bA = cu._4
386- let cv = as(cq, cf)
387- let cw = ce
388- let cx = cw._1
389- let cy = cw._2
390- let cz = makeString([cf, toString(ch)], ":")
391- let cA = makeString([cy, cz], "_")
392- if ((0 >= ch))
393- then $Tuple2(cx, cA)
394- else $Tuple2((((cx :+ ScriptTransfer(W, ch, aE(cf))) :+ IntegerEntry(cv, (valueOrElse(getInteger(cv), 0) + ch))) :+ IntegerEntry(bA, 0)), cA)
373+ let cs = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
374+ let cb = cs._1
375+ let cc = cs._2
376+ let ct = cs._3
377+ let bi = cs._4
378+ let bu = toBigInt(bi)
379+ let cd = ao(cr)
380+ let bv = az(cd, -1)
381+ let bw = az(an(), -1)
382+ func cu (cf,cg) = {
383+ let cv = bs(cr, cg, bu, bv, bw)
384+ let ci = cv._1
385+ let cj = cv._2
386+ let ck = cv._3
387+ let bB = cv._4
388+ let cw = at(cr, cg)
389+ let cx = cf
390+ let cy = cx._1
391+ let cz = cx._2
392+ let cA = makeString([cg, toString(ci)], ":")
393+ let cB = makeString([cz, cA], "_")
394+ if ((0 >= ci))
395+ then $Tuple2(cy, cB)
396+ else $Tuple2((((cy :+ ScriptTransfer(X, ci, aF(cg))) :+ IntegerEntry(cw, (valueOrElse(getInteger(cw), 0) + ci))) :+ IntegerEntry(bB, 0)), cB)
395397 }
396398
397- let cB = {
398- let bQ = bq
399- let bR = size(bQ)
400- let bS = $Tuple2(nil, "")
401- func bT (bU,bV) = if ((bV >= bR))
402- then bU
403- else ct(bU, bQ[bV])
399+ let cC = {
400+ let bR = br
401+ let bS = size(bR)
402+ let bT = $Tuple2(nil, "")
403+ func bU (bV,bW) = if ((bW >= bS))
404+ then bV
405+ else cu(bV, bR[bW])
404406
405- func bW (bU,bV) = if ((bV >= bR))
406- then bU
407+ func bX (bV,bW) = if ((bW >= bS))
408+ then bV
407409 else throw("List size exceeds 9")
408410
409- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
411+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
410412 }
411- let cC = cB._1
412- let cD = cB._2
413- if ((0 >= size(cC)))
413+ let cD = cC._1
414+ let cE = cC._2
415+ if ((0 >= size(cD)))
414416 then $Tuple2(nil, 0)
415- else $Tuple2(((cC :+ IntegerEntry(cc, bv)) :+ aT(W, cp.transactionId, drop(cD, 1))), size(cC))
417+ else $Tuple2(((cD :+ IntegerEntry(cd, bw)) :+ aU(X, cq.transactionId, drop(cE, 1))), size(cD))
416418 }
417419 }
418420
419421
420-func cE (W) = {
421- let x = Z(W)
422- let aH = valueOrElse(getBoolean(this, x), false)
423- $Tuple2(x, aH)
422+func cF (X) = {
423+ let x = aa(X)
424+ let aI = valueOrElse(getBoolean(this, x), false)
425+ $Tuple2(x, aI)
424426 }
425427
426428
427-func cF (W,cp) = if (!(bk(height)))
429+func cG (X,cq) = if (!(bl(height)))
428430 then throw("No 'Double gNSBT action' available now")
429431 else {
430- let cG = co(W, cp)
431- let cH = cG._1
432- let cI = cG._2
433- let cJ = valueOrElse(bm(W), $Tuple4(true, 0, -1, 0))
434- let ca = cJ._1
435- let cK = cJ._2
436- let cL = cJ._3
437- let cM = cJ._4
438- if (ca)
432+ let cH = cp(X, cq)
433+ let cI = cH._1
434+ let cJ = cH._2
435+ let cK = valueOrElse(bn(X), $Tuple4(true, 0, -1, 0))
436+ let cb = cK._1
437+ let cL = cK._2
438+ let cM = cK._3
439+ let cN = cK._4
440+ if (cb)
439441 then throw("You have nothing to restake")
440442 else {
441- let cN = cM
442- let cO = (cM + cN)
443- let cP = cE(W)
444- let cQ = cP._1
445- let cR = cP._2
446- if (cR)
443+ let cO = cN
444+ let cP = (cN + cO)
445+ let cQ = cF(X)
446+ let cR = cQ._1
447+ let cS = cQ._2
448+ if (cS)
447449 then throw("User has already doubled its gNSBT value")
448450 else {
449- let cS = aU(0, 0, 0, cN)
450- let cT = cS._1
451- let cU = cS._2
452- let cV = cS._3
453- $Tuple2((((cH ++ be(W, cK, height, cO)) ++ cT) :+ BooleanEntry(cQ, true)), cI)
451+ let cT = aV(0, 0, 0, cO)
452+ let cU = cT._1
453+ let cV = cT._2
454+ let cW = cT._3
455+ $Tuple2((((cI ++ bf(X, cL, height, cP)) ++ cU) :+ BooleanEntry(cR, true)), cJ)
454456 }
455457 }
456458 }
457459
458460
459-@Callable(cp)
460-func constructorV1 (cW,cX,cY,cZ,da) = if ((cp.caller != this))
461+@Callable(cq)
462+func constructorV1 (cX,cY,cZ,da,db) = if ((cq.caller != this))
461463 then throw("Permission denied")
462- else [StringEntry(R(), cW), StringEntry(S(), cX), IntegerEntry(T(), cY), IntegerEntry(U(), cZ), StringEntry(al(), da)]
464+ else [StringEntry(S(), cX), StringEntry(T(), cY), IntegerEntry(U(), cZ), IntegerEntry(V(), da), StringEntry(am(), db)]
463465
464466
465467
466-@Callable(cp)
467-func constructorV2 (db,dc) = if ((cp.caller != this))
468+@Callable(cq)
469+func constructorV2 (dc,dd) = if ((cq.caller != this))
468470 then throw("Permission denied")
469- else [IntegerEntry(y(), db), IntegerEntry(z(), dc)]
471+ else [IntegerEntry(y(), dc), IntegerEntry(z(), dd)]
470472
471473
472474
473-@Callable(cp)
475+@Callable(cq)
474476 func stake () = {
475- let dd = bi()
476- let de = dd._1
477- let cY = dd._2
478- let cZ = dd._3
479- if ((size(cp.payments) != 1))
477+ let de = bj()
478+ let df = de._1
479+ let cZ = de._2
480+ let da = de._3
481+ if ((size(cq.payments) != 1))
480482 then throw("Invalid payments size")
481483 else {
482- let df = cp.payments[0]
483- let bn = df.amount
484- let dg = (("Invalid asset. " + toBase58String(de)) + " is expected")
485- let bs = valueOrErrorMessage(df.assetId, dg)
486- if ((bs != de))
487- then throw(dg)
484+ let dg = cq.payments[0]
485+ let bo = dg.amount
486+ let dh = (("Invalid asset. " + toBase58String(df)) + " is expected")
487+ let bt = valueOrErrorMessage(dg.assetId, dh)
488+ if ((bt != df))
489+ then throw(dh)
488490 else {
489- let W = cp.caller
490- let cq = toString(cp.caller)
491- let dh = valueOrElse(bm(W), $Tuple4(true, 0, -1, 0))
492- let ca = dh._1
493- let cK = dh._2
494- let cL = dh._3
495- let cM = dh._4
496- let di = if (ca)
497- then bn
498- else (bn + cK)
499- let dj = if (ca)
491+ let X = cq.caller
492+ let cr = toString(cq.caller)
493+ let di = valueOrElse(bn(X), $Tuple4(true, 0, -1, 0))
494+ let cb = di._1
495+ let cL = di._2
496+ let cM = di._3
497+ let cN = di._4
498+ let dj = if (cb)
499+ then bo
500+ else (bo + cL)
501+ let dk = if (cb)
500502 then height
501- else aG(invoke(I, "mergeStakesREADONLY", [bn, height, cK, cL, cZ], nil))
502- if ((cY > di))
503- then throw(("Min lock amount is " + toString(cY)))
503+ else aH(invoke(I, "mergeStakesREADONLY", [bo, height, cL, cM, da], nil))
504+ if ((cZ > dj))
505+ then throw(("Min lock amount is " + toString(cZ)))
504506 else {
505- let cP = cE(W)
506- let cQ = cP._1
507- let cR = cP._2
508- let cN = if (if (bk(height))
509- then if (ca)
507+ let cQ = cF(X)
508+ let cR = cQ._1
509+ let cS = cQ._2
510+ let cO = if (if (bl(height))
511+ then if (cb)
510512 then true
511- else cR
513+ else cS
512514 else false)
513- then (2 * bn)
514- else bn
515- let dk = if (ca)
516- then [BooleanEntry(cQ, true)]
515+ then (2 * bo)
516+ else bo
517+ let dl = if (cb)
518+ then [BooleanEntry(cR, true)]
517519 else nil
518- let dl = aU(bn, 1, if (ca)
520+ let dm = aV(bo, 1, if (cb)
519521 then 1
520- else 0, cN)
521- let cT = dl._1
522- let cU = dl._2
523- let cV = dl._3
524- (((([aS("stake", W, cp.transactionId, cK, cL, di, dj)] ++ bZ(ca, cq, cM)) ++ be(W, di, dj, (cM + cN))) ++ cT) ++ dk)
522+ else 0, cO)
523+ let cU = dm._1
524+ let cV = dm._2
525+ let cW = dm._3
526+ (((([aT("stake", X, cq.transactionId, cL, cM, dj, dk)] ++ ca(cb, cr, cN)) ++ bf(X, dj, dk, (cN + cO))) ++ cU) ++ dl)
525527 }
526528 }
527529 }
528530 }
529531
530532
531533
532-@Callable(cp)
533-func unstake (bn) = if ((size(cp.payments) != 0))
534+@Callable(cq)
535+func unstake (bo) = if ((size(cq.payments) != 0))
534536 then throw("unstake doesn't require any payment")
535537 else {
536- let W = cp.caller
537- let cq = toString(W)
538- let dm = bi()
539- let de = dm._1
540- let cY = dm._2
541- let cZ = dm._3
542- let dn = bo(W)
543- let ca = dn._1
544- let cK = dn._2
545- let do = dn._3
546- let cM = dn._4
547- if ((0 >= cK))
538+ let X = cq.caller
539+ let cr = toString(X)
540+ let dn = bj()
541+ let df = dn._1
542+ let cZ = dn._2
543+ let da = dn._3
544+ let do = bp(X)
545+ let cb = do._1
546+ let cL = do._2
547+ let dp = do._3
548+ let cN = do._4
549+ if ((0 >= cL))
548550 then throw("Nothing to unstake")
549- else if ((bn > cK))
550- then throw(((("Requested " + toString(bn)) + ", but staked only ") + toString(cK)))
551+ else if ((bo > cL))
552+ then throw(((("Requested " + toString(bo)) + ", but staked only ") + toString(cL)))
551553 else {
552- let dp = value(blockInfoByHeight(height)).timestamp
553- let dq = valueOrElse(getInteger(L, P(cq)), 0)
554- if ((dq >= dp))
555- then throw(("Your gNsbt are taking part in voting, cannot unstake until " + toString(dq)))
554+ let dq = value(blockInfoByHeight(height)).timestamp
555+ let dr = valueOrElse(getInteger(L, Q(cr)), 0)
556+ if ((dr >= dq))
557+ then throw(("Your gNsbt are taking part in voting, cannot unstake until " + toString(dr)))
556558 else {
557- let dr = aG(invoke(I, "getUnstakeComissionAmountREADONLY", [bn, do, cZ], nil))
558- let ds = (cM - cK)
559- let dt = min([bn, ds])
560- let du = (dt + bn)
561- let dv = aU(-(bn), if ((bn == cK))
559+ let ds = aH(invoke(I, "getUnstakeComissionAmountREADONLY", [bo, dp, da], nil))
560+ let dt = (cN - cL)
561+ let du = min([bo, dt])
562+ let dv = (du + bo)
563+ let dw = aV(-(bo), if ((bo == cL))
562564 then -1
563- else 0, if ((bn == cK))
565+ else 0, if ((bo == cL))
564566 then -1
565- else 0, -(du))
566- let cT = dv._1
567- let cU = dv._2
568- let cV = dv._3
569- ((([ScriptTransfer(W, (bn - dr), de), ScriptTransfer(K, dr, de), aS("unstake", W, cp.transactionId, cK, do, (cK - bn), do)] ++ bZ(false, cq, cM)) ++ be(W, (cK - bn), do, (cM - du))) ++ cT)
567+ else 0, -(dv))
568+ let cU = dw._1
569+ let cV = dw._2
570+ let cW = dw._3
571+ ((([ScriptTransfer(X, (bo - ds), df), ScriptTransfer(K, ds, df), aT("unstake", X, cq.transactionId, cL, dp, (cL - bo), dp)] ++ ca(false, cr, cN)) ++ bf(X, (cL - bo), dp, (cN - dv))) ++ cU)
570572 }
571573 }
572574 }
573575
574576
575577
576-@Callable(cp)
578+@Callable(cq)
577579 func deposit () = {
578- let cU = ay(ae(), ay(ad(), 0))
579- if ((0 > cU))
580+ let cV = az(af(), az(ae(), 0))
581+ if ((0 > cV))
580582 then throw("TODO: case is not supported")
581583 else {
582- let dw = am()
583- let bv = ay(dw, -1)
584- let dx = (bv + 1)
585- let dy = aj()
586- let dz = ah(bC(lastBlock.timestamp))
587- let dA = bL(split(valueOrElse(getString(dy), bK), b))
588- func dB (bP,dC) = {
589- let bn = dC.amount
590- let dD = toBase58String(valueOrElse(dC.assetId, i))
591- if (!(contains(bp, dD)))
592- then throw(((bp + " doesn't contain ") + dD))
593- else if ((cU == 0))
594- then $Tuple4((bP._1 :+ ck(dD, bn)), (bP._2 :+ dD), (bP._3 :+ toBigInt(0)), (bP._4 :+ bn))
584+ let dx = an()
585+ let bw = az(dx, -1)
586+ let dy = (bw + 1)
587+ let dz = ak()
588+ let dA = ai(bD(lastBlock.timestamp))
589+ let dB = bM(split(valueOrElse(getString(dz), bL), b))
590+ func dC (bQ,dD) = {
591+ let bo = dD.amount
592+ let dE = toBase58String(valueOrElse(dD.assetId, i))
593+ if (!(contains(bq, dE)))
594+ then throw(((bq + " doesn't contain ") + dE))
595+ else if ((cV == 0))
596+ then $Tuple4((bQ._1 :+ cl(dE, bo)), (bQ._2 :+ dE), (bQ._3 :+ toBigInt(0)), (bQ._4 :+ bo))
595597 else {
596- let dE = fraction(toBigInt(bn), g, toBigInt(cU))
597- $Tuple4(bP._1, (bP._2 :+ dD), (bP._3 :+ dE), (bP._4 :+ bn))
598+ let dF = fraction(toBigInt(bo), g, toBigInt(cV))
599+ $Tuple4(bQ._1, (bQ._2 :+ dE), (bQ._3 :+ dF), (bQ._4 :+ bo))
598600 }
599601 }
600602
601- let dF = {
602- let bQ = cp.payments
603- let bR = size(bQ)
604- let bS = $Tuple4(nil, nil, nil, nil)
605- func bT (bU,bV) = if ((bV >= bR))
606- then bU
607- else dB(bU, bQ[bV])
603+ let dG = {
604+ let bR = cq.payments
605+ let bS = size(bR)
606+ let bT = $Tuple4(nil, nil, nil, nil)
607+ func bU (bV,bW) = if ((bW >= bS))
608+ then bV
609+ else dC(bV, bR[bW])
608610
609- func bW (bU,bV) = if ((bV >= bR))
610- then bU
611+ func bX (bV,bW) = if ((bW >= bS))
612+ then bV
611613 else throw("List size exceeds 10")
612614
613- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
615+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
614616 }
615- func dG (ce,dH) = {
616- let dI = ce._3
617- let dJ = aB(ao(bv, dH), "0")
618- let G = indexOf(dF._2, dH)
619- let dK = if (isDefined(G))
617+ func dH (cf,dI) = {
618+ let dJ = cf._3
619+ let dK = aC(ap(bw, dI), "0")
620+ let G = indexOf(dG._2, dI)
621+ let dL = if (isDefined(G))
620622 then {
621- let dL = value(G)
622- let dM = dF._4[dL]
623- $Tuple2(toString((parseBigIntValue(dJ) + dF._3[dL])), toString((parseIntValue(dA[(dI + 1)]) + dM)))
623+ let dM = value(G)
624+ let dN = dG._4[dM]
625+ $Tuple2(toString((parseBigIntValue(dK) + dG._3[dM])), toString((parseIntValue(dB[(dJ + 1)]) + dN)))
624626 }
625- else $Tuple2(dJ, dA[(dI + 1)])
626- $Tuple3((ce._1 :+ StringEntry(ao(dx, dH), dK._1)), ((ce._2 + b) + dK._2), (dI + 1))
627+ else $Tuple2(dK, dB[(dJ + 1)])
628+ $Tuple3((cf._1 :+ StringEntry(ap(dy, dI), dL._1)), ((cf._2 + b) + dL._2), (dJ + 1))
627629 }
628630
629- let dN = {
630- let bQ = bq
631- let bR = size(bQ)
632- let bS = $Tuple3(nil, bJ, 0)
633- func dO (bU,bV) = if ((bV >= bR))
634- then bU
635- else dG(bU, bQ[bV])
631+ let dO = {
632+ let bR = br
633+ let bS = size(bR)
634+ let bT = $Tuple3(nil, bK, 0)
635+ func dP (bV,bW) = if ((bW >= bS))
636+ then bV
637+ else dH(bV, bR[bW])
636638
637- func dP (bU,bV) = if ((bV >= bR))
638- then bU
639+ func dQ (bV,bW) = if ((bW >= bS))
640+ then bV
639641 else throw("List size exceeds 9")
640642
641- dP(dO(dO(dO(dO(dO(dO(dO(dO(dO(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
643+ dQ(dP(dP(dP(dP(dP(dP(dP(dP(dP(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
642644 }
643- let dQ = bX(dN._2)
644- $Tuple2(((((dF._1 ++ dN._1) :+ IntegerEntry(dw, dx)) :+ StringEntry(dy, dQ)) :+ StringEntry(dz, dQ)), dx)
645+ let dR = bY(dO._2)
646+ $Tuple2(((((dG._1 ++ dO._1) :+ IntegerEntry(dx, dy)) :+ StringEntry(dz, dR)) :+ StringEntry(dA, dR)), dy)
645647 }
646648 }
647649
648650
649651
650-@Callable(cp)
651-func claimRewards () = co(cp.caller, cp)
652+@Callable(cq)
653+func claimRewards () = cp(cq.caller, cq)
652654
653655
654656
655-@Callable(cp)
656-func claimRewardsByOriginCaller () = co(cp.originCaller, cp)
657+@Callable(cq)
658+func claimRewardsByOriginCaller () = cp(cq.originCaller, cq)
657659
658660
659661
660-@Callable(cp)
661-func x2Gnsbt () = cF(cp.caller, cp)
662+@Callable(cq)
663+func x2Gnsbt () = cG(cq.caller, cq)
662664
663665
664666
665-@Callable(cp)
666-func x2GnsbtByOriginCaller () = cF(cp.originCaller, cp)
667+@Callable(cq)
668+func x2GnsbtByOriginCaller () = cG(cq.originCaller, cq)
667669
668670
669671
670-@Callable(cp)
671-func unclaimedRewardsREADONLY (cq) = {
672- func dR (ce,cf) = ((ce + makeString([cf, "0", "0"], ":")) + "_")
672+@Callable(cq)
673+func unclaimedRewardsREADONLY (cr) = {
674+ func dS (cf,cg) = ((cf + makeString([cg, "0", "0"], ":")) + "_")
673675
674- let dS = if ((cq == ""))
676+ let dT = if ((cr == ""))
675677 then {
676- let bQ = bq
677- let bR = size(bQ)
678- let bS = ""
679- func bT (bU,bV) = if ((bV >= bR))
680- then bU
681- else dR(bU, bQ[bV])
678+ let bR = br
679+ let bS = size(bR)
680+ let bT = ""
681+ func bU (bV,bW) = if ((bW >= bS))
682+ then bV
683+ else dS(bV, bR[bW])
682684
683- func bW (bU,bV) = if ((bV >= bR))
684- then bU
685+ func bX (bV,bW) = if ((bW >= bS))
686+ then bV
685687 else throw("List size exceeds 9")
686688
687- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
689+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
688690 }
689691 else {
690- let W = addressFromStringValue(cq)
691- let dT = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
692- let ca = dT._1
693- let cb = dT._2
694- let cs = dT._3
695- let dU = dT._4
696- let bt = toBigInt(dU)
697- let cc = an(cq)
698- let bu = ay(cc, -1)
699- let bv = ay(am(), -1)
700- func ct (ce,cf) = {
701- let dV = br(cq, cf, bt, bu, bv)
702- let ch = dV._1
703- let ci = dV._2
704- let cj = dV._3
705- let bA = dV._4
706- let dW = valueOrElse(getInteger(as(cq, cf)), 0)
707- ((ce + makeString([cf, toString(ch), toString(dW)], ":")) + "_")
692+ let X = addressFromStringValue(cr)
693+ let dU = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
694+ let cb = dU._1
695+ let cc = dU._2
696+ let ct = dU._3
697+ let dV = dU._4
698+ let bu = toBigInt(dV)
699+ let cd = ao(cr)
700+ let bv = az(cd, -1)
701+ let bw = az(an(), -1)
702+ func cu (cf,cg) = {
703+ let dW = bs(cr, cg, bu, bv, bw)
704+ let ci = dW._1
705+ let cj = dW._2
706+ let ck = dW._3
707+ let bB = dW._4
708+ let dX = valueOrElse(getInteger(at(cr, cg)), 0)
709+ ((cf + makeString([cg, toString(ci), toString(dX)], ":")) + "_")
708710 }
709711
710- let bQ = bq
711- let bR = size(bQ)
712- let bS = ""
713- func bT (bU,bV) = if ((bV >= bR))
714- then bU
715- else ct(bU, bQ[bV])
712+ let bR = br
713+ let bS = size(bR)
714+ let bT = ""
715+ func bU (bV,bW) = if ((bW >= bS))
716+ then bV
717+ else cu(bV, bR[bW])
716718
717- func bW (bU,bV) = if ((bV >= bR))
718- then bU
719+ func bX (bV,bW) = if ((bW >= bS))
720+ then bV
719721 else throw("List size exceeds 9")
720722
721- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
723+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
722724 }
723- $Tuple2(nil, dropRight(dS, 1))
725+ $Tuple2(nil, dropRight(dT, 1))
724726 }
725727
726728
727729
728-@Callable(cp)
729-func nsbtUnstakingSYSREADONLY (dX,dY) = {
730- let dZ = if ((dX == ""))
730+@Callable(cq)
731+func nsbtUnstakingSYSREADONLY (dY,dZ) = {
732+ let ea = if ((dY == ""))
731733 then [0, 0, 0, 0]
732734 else {
733- let W = addressFromStringValue(dX)
734- let ea = bi()
735- let eb = ea._1
736- let cY = ea._2
737- let cZ = ea._3
738- let ec = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
739- let ca = ec._1
740- let cb = ec._2
741- let do = ec._3
742- let ed = if ((dY > cb))
743- then cb
744- else dY
745- let ee = (cb - ed)
746- let dr = if ((ed == 0))
735+ let X = addressFromStringValue(dY)
736+ let eb = bj()
737+ let ec = eb._1
738+ let cZ = eb._2
739+ let da = eb._3
740+ let ed = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
741+ let cb = ed._1
742+ let cc = ed._2
743+ let dp = ed._3
744+ let ee = if ((dZ > cc))
745+ then cc
746+ else dZ
747+ let ef = (cc - ee)
748+ let ds = if ((ee == 0))
747749 then 0
748- else aG(invoke(I, "getUnstakeComissionAmountREADONLY", [ed, do, cZ], nil))
749- let ef = (ed - dr)
750-[cb, ee, ef, dr]
750+ else aH(invoke(I, "getUnstakeComissionAmountREADONLY", [ee, dp, da], nil))
751+ let eg = (ee - ds)
752+[cc, ef, eg, ds]
751753 }
752- $Tuple2(nil, dZ)
754+ $Tuple2(nil, ea)
753755 }
754756
755757
756758
757-@Callable(cp)
758-func nsbtStakingSYSREADONLY (cq,eg) = {
759- let eh = ay(ad(), 0)
760- let bd = ay(ae(), eh)
761- if ((cq == ""))
762- then $Tuple2(nil, [0, eh, 0, 0, bd])
759+@Callable(cq)
760+func nsbtStakingSYSREADONLY (cr,eh) = {
761+ let ei = az(ae(), 0)
762+ let be = az(af(), ei)
763+ if ((cr == ""))
764+ then $Tuple2(nil, [0, ei, 0, 0, be, (eh * 2)])
763765 else {
764- let W = aC(cq)
765- let ei = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
766- let ca = ei._1
767- let ej = ei._2
768- let cs = ei._3
769- let ek = ei._4
770- let cP = cE(addressFromStringValue(cq))
771- let cQ = cP._1
772- let cR = cP._2
773- let cN = if (if (bk(height))
774- then if (ca)
766+ let X = aD(cr)
767+ let ej = valueOrElse(bn(X), $Tuple4(true, 0, 0, 0))
768+ let cb = ej._1
769+ let ek = ej._2
770+ let ct = ej._3
771+ let el = ej._4
772+ let cQ = cF(addressFromStringValue(cr))
773+ let cR = cQ._1
774+ let cS = cQ._2
775+ let cO = if (if (bl(height))
776+ then if (cb)
775777 then true
776- else cR
778+ else cS
777779 else false)
778- then (2 * eg)
779- else eg
780- $Tuple2(nil, [ej, eh, cs, ek, bd, cN])
780+ then (2 * eh)
781+ else eh
782+ $Tuple2(nil, [ek, ei, ct, el, be, cO])
781783 }
782784 }
783785
784786
785-@Verifier(el)
786-func em () = {
787- let en = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
788- let eo = split(valueOrElse(getString(H, "%s__multisig"), en), b)
789- let ep = ((((if (sigVerify(el.bodyBytes, el.proofs[0], fromBase58String(eo[0])))
787+@Verifier(em)
788+func en () = {
789+ let eo = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
790+ let ep = split(valueOrElse(getString(H, "%s__multisig"), eo), b)
791+ let eq = ((((if (sigVerify(em.bodyBytes, em.proofs[0], fromBase58String(ep[0])))
790792 then 1
791- else 0) + (if (sigVerify(el.bodyBytes, el.proofs[1], fromBase58String(eo[1])))
793+ else 0) + (if (sigVerify(em.bodyBytes, em.proofs[1], fromBase58String(ep[1])))
792794 then 1
793- else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[2], fromBase58String(eo[2])))
795+ else 0)) + (if (sigVerify(em.bodyBytes, em.proofs[2], fromBase58String(ep[2])))
794796 then 1
795- else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[3], fromBase58String(eo[3])))
797+ else 0)) + (if (sigVerify(em.bodyBytes, em.proofs[3], fromBase58String(ep[3])))
796798 then 2
797799 else 0))
798- (ep >= 3)
800+ (eq >= 3)
799801 }
800802

github/deemru/w8io/873ac7e 
367.24 ms