tx · J4rZQ13haGytUsNtNpMkzazxrdaJDiXZXRrx2W54PNxB

3MxWgDbE9EmjQj8b3LfFwa91FZizptyeQXS:  -0.03800000 Waves

2023.03.17 17:11 [2494096] smart account 3MxWgDbE9EmjQj8b3LfFwa91FZizptyeQXS > SELF 0.00000000 Waves

{ "type": 13, "id": "J4rZQ13haGytUsNtNpMkzazxrdaJDiXZXRrx2W54PNxB", "fee": 3800000, "feeAssetId": null, "timestamp": 1679062353759, "version": 2, "chainId": 84, "sender": "3MxWgDbE9EmjQj8b3LfFwa91FZizptyeQXS", "senderPublicKey": "C7xgcYqQ8qV8rmvzAjhQWq4cz82F6VJfXMNygvrTXsfW", "proofs": [ "GWfdWBc8rynWfF6D4RuNVTn2AtKdsrLeTqHtXCmJUXc69LgM6eY1u7TJw8aFbFKzNqYj5kYK7JoCtb6fVwEGfQS", "2VoviyinxvdfQ5PiypkL9irPb23V5wxf36Fkfvf11HsR2n1bPR2UCKvP3qEuZeFxUKzZZpdxH7gmZfB7FCnqBmsN" ], "script": "base64:BgJmCAISBAoCEQESBQoDCAEBEgUKAwEEARIECgIRCBIDCgEBEgYKBAgIAQgSBAoCCAESAwoBERIECgIRARIFCgMBCAgSBAoCCAESBQoDCAEBEgASABIECgIRBBIECgIBARIAEgASABIAYgAJUFJFQ0lTSU9OAMCEPQAFTUFYX0EAwIQ9AAxNQVhfQV9DSEFOR0UACgAIREVDSU1BTFMABgANTUlOX1JBTVBfVElNRQkAaQIAgKMFADwAB3ZlcnNpb24CBTMuMC4wAAhrVmVyc2lvbgIHdmVyc2lvbgAHa0Fzc2V0cwIJYXNzZXRfaWRzAA1rQXNzZXRCYWxhbmNlAghfYmFsYW5jZQAHa0FjdGl2ZQIGYWN0aXZlAAtrQWN0aXZlR2xvYgIUYWN0aXZlX2FsbF9jb250cmFjdHMAC2tEZXByZWNhdGVkAgtkZXByZWNhdGVkXwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQANa1NoYXJlQXNzZXRJZAIOc2hhcmVfYXNzZXRfaWQAEWtTaGFyZUFzc2V0U3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkABGtGZWUCCmNvbW1pc3Npb24AEmtEQXBwVGhyZXNob2xkQ29lZgIRZEFwcFRocmVzaG9sZENvZWYADGtVU0ROQWRkcmVzcwIYc3Rha2luZ191c2RubnNidF9hZGRyZXNzAAprRGlzY291bnRzAglkaXNjb3VudHMAD2tEaXNjb3VudFZhbHVlcwIPZGlzY291bnRfdmFsdWVzAA5rVXNlclN3b3BJbkdvdgIMX1NXT1BfYW1vdW50AA9rVXNlckdTd29wSW5Hb3YCDV9HU3dvcF9hbW91bnQADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MAD2tUZWFtQm94QWRkcmVzcwIQdGVhbV9ib3hfYWRkcmVzcwALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAA9rRmFybWluZ0FkZHJlc3MCD2Zhcm1pbmdfYWRkcmVzcwARa0xQRmFybWluZ0FkZHJlc3MCCmxwX2Zhcm1pbmcABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEDa2V5BAckbWF0Y2gwCQCdCAIFBm9yYWNsZQUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgEJAKwCAgUDa2V5AghpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwARYWRtaW5QdWJLZXlJbnZva2UJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5AA9tb25leUJveEFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRBrTW9uZXlCb3hBZGRyZXNzAA50ZWFtQm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tUZWFtQm94QWRkcmVzcwAKZ292QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzABJzdGFraW5nVVNETkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrVVNETkFkZHJlc3MADXZvdGluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rVm90aW5nQWRkcmVzcwAOZmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rRmFybWluZ0FkZHJlc3MAEGxwRmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRFrTFBGYXJtaW5nQWRkcmVzcwAEVVNETgEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEADXN0YWtpbmdBc3NldHMJAMwIAgkA2AQBBQRVU0ROBQNuaWwABmFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwUHa0FjdGl2ZQAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgAOZGVwcmVjYXRlZFBvb2wJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlCQCsAgIFC2tEZXByZWNhdGVkCQClCAEFBHRoaXMHAAxzaGFyZUFzc2V0SWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUNa1NoYXJlQXNzZXRJZAALc2hhcmVTdXBwbHkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFEWtTaGFyZUFzc2V0U3VwcGx5AAlmZWVTY2FsZTYAwIQ9AANmZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFBGtGZWUADWZlZUdvdmVybmFuY2UJAGsDACMFCWZlZVNjYWxlNgBkAAdmZWVUZWFtCQBrAwAKBQlmZWVTY2FsZTYAZAAJaW5pdGlhbF9BCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAglpbml0aWFsX0EACGZ1dHVyZV9BCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAghmdXR1cmVfQQAOaW5pdGlhbF9BX3RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIOaW5pdGlhbF9BX3RpbWUAAAANZnV0dXJlX0FfdGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAg1mdXR1cmVfQV90aW1lAAAACGFzc2V0SWRzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFB2tBc3NldHMCASwABm5Db2lucwkAkAMBBQhhc3NldElkcwEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAENdGhyb3dJc0FjdGl2ZQAJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAQhpc0FjdGl2ZQADAwUGYWN0aXZlBQphY3RpdmVHbG9iBwUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBDGlzRGVwcmljYXRlZAADCQEBIQEFDmRlcHJlY2F0ZWRQb29sBQR1bml0CQACAQIxUG9vbCBpcyBkZXByZWNhdGVkLiBPbmx5IHdpdGhkcmF3IGFjdGlvbiBhbGxvd2VkLgELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzU2VsZkNhbGwBAWkDCQAAAgUEdGhpcwgFAWkGY2FsbGVyBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgAEYmlnMgkAtgIBAAIABml0ZXIxMAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkFA25pbAAGaXRlcjE1CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwABml0ZXIxNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8FA25pbAAOYmxvY2tUaW1lc3RhbXAFBmhlaWdodAEGYXNzZXJ0AQFhAwUBYQcGARRjYWxjdWxhdGVGZWVEaXNjb3VudAEIdXNlckFkZHIEBHVzZXIEByRtYXRjaDAFCHVzZXJBZGRyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAXUFByRtYXRjaDAJAKUIAQUBdQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXUFByRtYXRjaDAFAXUJAAIBAhhVbmtub3cgdHlwZSBvZiB1c2VyIEFkZHIECnN3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQR1c2VyBQ9rVXNlckdTd29wSW5Hb3YAAAQLZ1N3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQR1c2VyBQ9rVXNlckdTd29wSW5Hb3YFCnN3b3BBbW91bnQEDmRpc2NvdW50VmFsdWVzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUPa0Rpc2NvdW50VmFsdWVzAgEsBAlkaXNjb3VudHMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUGb3JhY2xlBQprRGlzY291bnRzAgEsAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAAJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAQULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAADAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAQkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwACBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAQMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwACCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAMFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwACAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMABAULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAECQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAQFCWZlZVNjYWxlNgECX0EABAJ0MQUNZnV0dXJlX0FfdGltZQQCQTEFCGZ1dHVyZV9BAwkAZgIFAnQxBQ5ibG9ja1RpbWVzdGFtcAQCQTAFCWluaXRpYWxfQQQCdDAFDmluaXRpYWxfQV90aW1lAwkAZgIFAkExBQJBMAkAZAIFAkEwCQBpAgkAaAIJAGUCBQJBMQUCQTAJAGUCBQ5ibG9ja1RpbWVzdGFtcAUCdDAJAGUCBQJ0MQUCdDAJAGUCBQJBMAkAaQIJAGgCCQBlAgUCQTAFAkExCQBlAgUOYmxvY2tUaW1lc3RhbXAFAnQwCQBlAgUCdDEFAnQwBQJBMQEDX3hwAAoBDWFzc2V0QmFsYW5jZXMCA2FjYwdhc3NldElkCQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFB2Fzc2V0SWQFDWtBc3NldEJhbGFuY2UAAAoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENYXNzZXRCYWxhbmNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUk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CgIJAM0IAgUKeHBfcmVkdWNlZAkAZQIFBHhwX2oJAGsDBQRfZmVlBQtkeF9leHBlY3RlZAUJZmVlU2NhbGU2CQBkAgUFaW5kZXgAAQQNJHQwMTA2MjUxMDY4OQoAAiRsBQJ4cAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBD3hwX3JlZHVjZWRfcHJvYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQKeHBfcmVkdWNlZAgFDSR0MDEwNjI1MTA2ODkCXzEEBWluZGV4CAUNJHQwMTA2MjUxMDY4OQJfMgQMeHBfcmVkdWNlZF9pCQCRAwIFCnhwX3JlZHVjZWQFAWkEAmR5CQBlAgkAZQIFDHhwX3JlZHVjZWRfaQkBB2dldF95X0QEBQNhbXAFAWkFCnhwX3JlZHVjZWQFAkQxAAEJAJQKAgUCZHkJAGUCBQRkeV8wBQJkeQENZ2V0U3RyQXNzZXRJZAEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAIFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEYY2FsY1N0YWtpbmdGdW5jQW5kQWRkcmVzAgVzdGFrZQdhc3NldElkAwUFc3Rha2UJAJQKAgIMbG9ja05ldXRyaW5vBRJzdGFraW5nVVNETkFkZHJlc3MJAJQKAgIOdW5sb2NrTmV1dHJpbm8FEnN0YWtpbmdVU0ROQWRkcmVzcwERY2FsY1N0YWtpbmdQYXJhbXMDBXN0YWtlBmFtb3VudAdhc3NldElkAwUFc3Rha2UEDSR0MDExMjUzMTEzMTkJARhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMCBQVzdGFrZQUHYXNzZXRJZAQEY2FsbAgFDSR0MDExMjUzMTEzMTkCXzEEC3N0YWtpbmdBZGRyCAUNJHQwMTEyNTMxMTMxOQJfMgkAlgoEBQRjYWxsBQtzdGFraW5nQWRkcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQZhbW91bnQFA25pbAQNJHQwMTE0MDUxMTQ3MQkBGGNhbGNTdGFraW5nRnVuY0FuZEFkZHJlcwIFBXN0YWtlBQdhc3NldElkBARjYWxsCAUNJHQwMTE0MDUxMTQ3MQJfMQQLc3Rha2luZ0FkZHIIBQ0kdDAxMTQwNTExNDcxAl8yCQCWCgQFBGNhbGwFC3N0YWtpbmdBZGRyCQDMCAIFBmFtb3VudAkAzAgCCQDYBAEFB2Fzc2V0SWQFA25pbAUDbmlsAQVzdGFrZQIGYW1vdW50DWFzc2V0SWRTdHJpbmcDCQEPY29udGFpbnNFbGVtZW50AgUNc3Rha2luZ0Fzc2V0cwUNYXNzZXRJZFN0cmluZwQNJHQwMTE2NTgxMTc2MAkBEWNhbGNTdGFraW5nUGFyYW1zAwYFBmFtb3VudAkA2QQBBQ1hc3NldElkU3RyaW5nBARjYWxsCAUNJHQwMTE2NTgxMTc2MAJfMQQEYWRkcggFDSR0MDExNjU4MTE3NjACXzIEBnBhcmFtcwgFDSR0MDExNjU4MTE3NjACXzMECHBheW1lbnRzCAUNJHQwMTE2NTgxMTc2MAJfNAkA/AcEBQRhZGRyBQRjYWxsBQZwYXJhbXMFCHBheW1lbnRzAAABB3Vuc3Rha2UCBmFtb3VudA1hc3NldElkU3RyaW5nAwkBD2NvbnRhaW5zRWxlbWVudAIFDXN0YWtpbmdBc3NldHMFDWFzc2V0SWRTdHJpbmcEDSR0MDExOTQ1MTIwNDgJARFjYWxjU3Rha2luZ1BhcmFtcwMHBQZhbW91bnQJANkEAQUNYXNzZXRJZFN0cmluZwQEY2FsbAgFDSR0MDExOTQ1MTIwNDgCXzEEBGFkZHIIBQ0kdDAxMTk0NTEyMDQ4Al8yBAZwYXJhbXMIBQ0kdDAxMTk0NTEyMDQ4Al8zBAhwYXltZW50cwgFDSR0MDExOTQ1MTIwNDgCXzQJAPwHBAUEYWRkcgUEY2FsbAUGcGFyYW1zBQhwYXltZW50cwAAAQxzdGFrZWRBbW91bnQBB2Fzc2V0SWQEFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDYUlkBQckbWF0Y2gwAwkAAAIFA2FJZAUEVVNETgkAmggCBRJzdGFraW5nVVNETkFkZHJlc3MJAKwCAgkArAICCQCsAgICDHJwZF9iYWxhbmNlXwkA2AQBBQNhSWQCAV8JAKUIAQUEdGhpcwAAAwkAAQIFByRtYXRjaDACBFVuaXQAAAkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBRZzdGFrZWRBbW91bnRDYWxjdWxhdGVkAwkAAQIFByRtYXRjaDACA0ludAQBaQUHJG1hdGNoMAUBaQAAAQ9jaGVja1N1c3BpY2lvdXMABBBjb250cmFjdEJhbGFuY2VzCQEDX3hwAAoBDGNoZWNrQmFsYW5jZQIDYWNjB2Fzc2V0SWQEDSR0MDEyNjU5MTI2ODQFA2FjYwQKc3VzcGljaW91cwgFDSR0MDEyNjU5MTI2ODQCXzEEAWkIBQ0kdDAxMjY1OTEyNjg0Al8yAwUKc3VzcGljaW91cwkAlAoCBQpzdXNwaWNpb3VzBQFpBAhhQmFsYW5jZQkAZAIJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkCQEMc3Rha2VkQW1vdW50AQkA2QQBBQdhc3NldElkAwkAZgIJAJEDAgUQY29udHJhY3RCYWxhbmNlcwUBaQUIYUJhbGFuY2UJAJQKAgYFAWkJAJQKAgcJAGQCBQFpAAEKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIHAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGNoZWNrQmFsYW5jZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgERc3VzcGVuZFN1c3BpY2lvdXMBAWkJAQdzdXNwZW5kAQkArAICAh1TdXNwaWNpb3VzIHN0YXRlIHdpdGggYXNzZXQ6IAkAkQMCBQhhc3NldElkcwUBaQEOcmV0dXJuUGF5bWVudHMCBmNhbGxlcghwYXltZW50cwoBDXBhcnNlUGF5bWVudHMCA2FjYwdwYXltZW50CQDNCAIFA2FjYwkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCAUHcGF5bWVudAZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQKAAIkbAUIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDXBhcnNlUGF5bWVudHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEmNoZWNrREFwcFRocmVzaG9sZAELbmV3QmFsYW5jZXMEEWRBcHBUaHJlc2hvbGRDb2VmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUSa0RBcHBUaHJlc2hvbGRDb2VmAhhObyBkQXBwVGhyZXNob2xkQ29lZiBrZXkEDnRocmVzaG9sZFNjYWxlAJBOBAptYXhCYWxhbmNlCQCWAwEFC25ld0JhbGFuY2VzBAptaW5CYWxhbmNlCQCXAwEFC25ld0JhbGFuY2VzBAVyYXRpbwkAawMFCm1heEJhbGFuY2UFDnRocmVzaG9sZFNjYWxlBQptaW5CYWxhbmNlAwkAZgIFBXJhdGlvCQBoAgURZEFwcFRocmVzaG9sZENvZWYFDnRocmVzaG9sZFNjYWxlCQACAQI4TmV3IGJhbGFuY2UgaW4gYXNzZXRzIG9mIHRoZSBEQXBwIGlzIGxlc3MgdGhhbiB0aHJlc2hvbGQHAQpjaGVja0NvaW5zAQhhc3NldElkcwQFY29pbnMJALUJAgUIYXNzZXRJZHMCASwDCQBmAgkAkAMBBQVjb2lucwAKCQACAQIgVG8gbWFueSBjb2lucywgbWF4IGNvaW5zIHNpemUgMTAKAQljaGVja0NvaW4CBWVycm9yB2Fzc2V0SWQEBWFzc2V0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJANkEAQUHYXNzZXRJZAkArAICAhJmcm9tQmFzZTU4U3RyaW5nOiAFB2Fzc2V0SWQECGRlY2ltYWxzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBWFzc2V0CQCsAgICC2Fzc2V0SW5mbzogBQdhc3NldElkCGRlY2ltYWxzAwkBAiE9AgUIZGVjaW1hbHMFCERFQ0lNQUxTCQACAQIOd3JvbmcgZGVjaW1hbHMHCgACJGwFBWNvaW5zCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWNoZWNrQ29pbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEMY2FsY1dpdGhkcmF3AwNtc2cKbWluQW1vdW50cwx1bmxvY2tBbW91bnQECnN1c3BpY2lvdXMJAQ9jaGVja1N1c3BpY2lvdXMAAwgFCnN1c3BpY2lvdXMCXzEJAM4IAgkBEXN1c3BlbmRTdXNwaWNpb3VzAQgFCnN1c3BpY2lvdXMCXzIJAQ5yZXR1cm5QYXltZW50cwIIBQNtc2cGY2FsbGVyCAUDbXNnCHBheW1lbnRzBAlwbXRBbW91bnQDCQBmAgkAkAMBCAUDbXNnCHBheW1lbnRzAAADCQECIT0CCQCQAwEIBQNtc2cIcGF5bWVudHMAAQkAAgECE3NpemUocGF5bWVudHMpICE9IDEECnBtdEFzc2V0SWQICQCRAwIIBQNtc2cIcGF5bWVudHMAAAdhc3NldElkAwkBAiE9AgUMc2hhcmVBc3NldElkBQpwbXRBc3NldElkCQACAQIVdW5rbm93biBwYXltZW50IHRva2VuCAkAkQMCCAUDbXNnCHBheW1lbnRzAAAGYW1vdW50AAAEDndpdGhkcmF3QW1vdW50CQBkAgUJcG10QW1vdW50BQx1bmxvY2tBbW91bnQKARFjYWxjU2NyaXB0QWN0aW9ucwIDYWNjB2JhbGFuY2UEDSR0MDE1MTAwMTUxMjgFA2FjYwQNc2NyaXB0QWN0aW9ucwgFDSR0MDE1MTAwMTUxMjgCXzEEAWkIBQ0kdDAxNTEwMDE1MTI4Al8yBAd3QW1vdW50CQBrAwUHYmFsYW5jZQUOd2l0aGRyYXdBbW91bnQFC3NoYXJlU3VwcGx5AwkBBmFzc2VydAEJAGcCBQd3QW1vdW50CQCRAwIFCm1pbkFtb3VudHMFAWkJAAIBAjBXaXRoZHJhd2FsIHJlc3VsdGVkIGluIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQEAnVzCQEHdW5zdGFrZQIFB3dBbW91bnQJAJEDAgUIYXNzZXRJZHMFAWkDCQAAAgUCdXMFAnVzCQCUCgIJAM4IAgUNc2NyaXB0QWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCRAwIFCGFzc2V0SWRzBQFpBQ1rQXNzZXRCYWxhbmNlCQBlAgUHYmFsYW5jZQUHd0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUDbXNnBmNhbGxlcgUHd0Ftb3VudAkA2QQBCQCRAwIFCGFzc2V0SWRzBQFpBQNuaWwJAGQCBQFpAAEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDE1NjE3MTU2ODUKAAIkbAkBA194cAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFjYWxjU2NyaXB0QWN0aW9ucwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQNc2NyaXB0QWN0aW9ucwgFDSR0MDE1NjE3MTU2ODUCXzEEAWkIBQ0kdDAxNTYxNzE1Njg1Al8yCQDOCAIFDXNjcmlwdEFjdGlvbnMJAMwIAgkBBEJ1cm4CBQxzaGFyZUFzc2V0SWQFDndpdGhkcmF3QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQkAZQIFC3NoYXJlU3VwcGx5BQ53aXRoZHJhd0Ftb3VudAUDbmlsARpjYWxjV2l0aGRyYXdPbmVDb2luRW50cmllcwQDbXNnCHRva2VuT3V0CW1pbkFtb3VudAx1bmxvY2tBbW91bnQECnN1c3BpY2lvdXMJAQ9jaGVja1N1c3BpY2lvdXMAAwgFCnN1c3BpY2lvdXMCXzEJAM4IAgkBEXN1c3BlbmRTdXNwaWNpb3VzAQgFCnN1c3BpY2lvdXMCXzIJAQ5yZXR1cm5QYXltZW50cwIIBQNtc2cMb3JpZ2luQ2FsbGVyCAUDbXNnCHBheW1lbnRzBAlwbXRBbW91bnQDCQBmAgkAkAMBCAUDbXNnCHBheW1lbnRzAAAECnBtdEFzc2V0SWQICQCRAwIIBQNtc2cIcGF5bWVudHMAAAdhc3NldElkAwkBAiE9AgUMc2hhcmVBc3NldElkBQpwbXRBc3NldElkCQACAQIVdW5rbm93biBwYXltZW50IHRva2VuCAkAkQMCCAUDbXNnCHBheW1lbnRzAAAGYW1vdW50AAAECG91dEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUIYXNzZXRJZHMFCHRva2VuT3V0AhF1bmtub3duIHRva2VuIG91dAQLdG9rZW5PdXRCNTgJANkEAQUIdG9rZW5PdXQEDndpdGhkcmF3QW1vdW50CQBkAgUJcG10QW1vdW50BQx1bmxvY2tBbW91bnQEAnhwCQEDX3hwAAQNJHQwMTY1NDcxNjYzNAkBFF9jYWxjV2l0aGRyYXdPbmVDb2luBAUCeHAFDndpdGhkcmF3QW1vdW50BQhvdXRJbmRleAgFA21zZwxvcmlnaW5DYWxsZXIEAmR5CAUNJHQwMTY1NDcxNjYzNAJfMQQGZHlfZmVlCAUNJHQwMTY1NDcxNjYzNAJfMgMJAQZhc3NlcnQBCQBnAgUCZHkFCW1pbkFtb3VudAkAAgECGE5vdCBlbm91Z2ggY29pbnMgcmVtb3ZlZAQOZ292ZXJuYW5jZUZlZXMJAGsDBQZkeV9mZWUFDWZlZUdvdmVybmFuY2UFCWZlZVNjYWxlNgQIdGVhbUZlZXMJAGsDBQZkeV9mZWUFB2ZlZVRlYW0FCWZlZVNjYWxlNgQKZHlfYW5kX2ZlZQkAZAIFAmR5BQZkeV9mZWUKAQ9tYWtlTmV3QmFsYW5jZXMCA2FjYwx0b2tlbkJhbGFuY2UEDSR0MDE2OTQ4MTY5NzQFA2FjYwQLbmV3QmFsYW5jZXMIBQ0kdDAxNjk0ODE2OTc0Al8xBAFpCAUNJHQwMTY5NDgxNjk3NAJfMgMJAAACBQFpBQhvdXRJbmRleAkAlAoCCQDNCAIFC25ld0JhbGFuY2VzCQBlAgUMdG9rZW5CYWxhbmNlBQpkeV9hbmRfZmVlCQBkAgUBaQABCQCUCgIJAM0IAgULbmV3QmFsYW5jZXMFDHRva2VuQmFsYW5jZQkAZAIFAWkAAQQNJHQwMTcxNDExNzIwMgoAAiRsBQJ4cAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBD21ha2VOZXdCYWxhbmNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLbmV3QmFsYW5jZXMIBQ0kdDAxNzE0MTE3MjAyAl8xBAF2CAUNJHQwMTcxNDExNzIwMgJfMgMJARJjaGVja0RBcHBUaHJlc2hvbGQBBQtuZXdCYWxhbmNlcwkBBXRocm93AAQCdXMJAQd1bnN0YWtlAgUKZHlfYW5kX2ZlZQUIdG9rZW5PdXQDCQAAAgUCdXMFAnVzBAZscEZlZXMJAGUCCQBlAgUGZHlfZmVlBQ5nb3Zlcm5hbmNlRmVlcwUIdGVhbUZlZXMEB2FpcmRyb3ADCQBmAgUGbHBGZWVzAAAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwIHYWlyRHJvcAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt0b2tlbk91dEI1OAUGbHBGZWVzBQNuaWwAAAMJAAACBQdhaXJkcm9wBQdhaXJkcm9wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQNtc2cMb3JpZ2luQ2FsbGVyBQJkeQULdG9rZW5PdXRCNTgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkAkQMCBQhhc3NldElkcwUIb3V0SW5kZXgFDWtBc3NldEJhbGFuY2UJAGUCCQCRAwIFAnhwBQhvdXRJbmRleAUKZHlfYW5kX2ZlZQkAzAgCCQEEQnVybgIFDHNoYXJlQXNzZXRJZAUOd2l0aGRyYXdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBQ5nb3Zlcm5hbmNlRmVlcwULdG9rZW5PdXRCNTgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCHRlYW1GZWVzBQt0b2tlbk91dEI1OAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGUCBQtzaGFyZVN1cHBseQUOd2l0aGRyYXdBbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhQDbXNnAQFEAgJ4cANhbXAEAUQJAQ5nZXRfRF9pbnRlcm5hbAIFAnhwBQNhbXAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgIBRAUBRAUDbmlsBQFEA21zZwEEaW5pdAMIYXNzZXRJZHMCX0ESX2RBcHBUaHJlc2hvbGRDb2VmAwkBASEBCQCeCAEFBHRoaXMJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkAwkAZwIAAAUCX0EJAAIBAhRBbXAgbXVzdCBiZSBtdXN0ID4gMAMJAGcCAAAFEl9kQXBwVGhyZXNob2xkQ29lZgkAAgECH2RBcHAgVGhyZXNob2xkIENvZWYgbXVzdCBiZSA+IDAECXNoYXJlTmFtZQILc19NdWx0aV9VU0QEEHNoYXJlRGVzY3JpcHRpb24JAKwCAgJCU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIE11bHRpU3RhYmxlIFVTRCBwb29sIGF0IGFkZHJlc3MgCQClCAEFBHRoaXMECmlzc3VlVG9rZW4JAMIIBQUJc2hhcmVOYW1lBRBzaGFyZURlc2NyaXB0aW9uAAAABgYEB3Rva2VuSWQJALgIAQUKaXNzdWVUb2tlbgMJAQpjaGVja0NvaW5zAQUIYXNzZXRJZHMJAQV0aHJvdwAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIa1ZlcnNpb24FB3ZlcnNpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUHa0Fzc2V0cwUIYXNzZXRJZHMJAMwIAgkBDEludGVnZXJFbnRyeQICCWluaXRpYWxfQQUCX0EJAMwIAgkBDEludGVnZXJFbnRyeQICCGZ1dHVyZV9BBQJfQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUEa0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUGb3JhY2xlAg1iYXNlX2ZlZV9mbGF0CQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtTaGFyZUFzc2V0SWQJANgEAQUHdG9rZW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa0RBcHBUaHJlc2hvbGRDb2VmBRJfZEFwcFRocmVzaG9sZENvZWYJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIFCmlzc3VlVG9rZW4FA25pbANtc2cBDGFkZExpcXVpZGl0eQMNbWluTWludEFtb3VudAxzdGFrZUZhcm1pbmcIbG9ja1R5cGUJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQABANhbXAJAQJfQQAEAnhwCQEDX3hwAAQCRDADCQAAAgULc2hhcmVTdXBwbHkAAAAACQEHZ2V0RE1lbQIFAnhwBQNhbXAEDSR0MDE5NDQ1MTk2OTkDAwkAZgIFCGxvY2tUeXBlAAAJAAACCAkAkQMCCAUDbXNnCHBheW1lbnRzCQBlAgkAkAMBCAUDbXNnCHBheW1lbnRzAAEHYXNzZXRJZAUEdW5pdAcJAJQKAgkA0QgCCAUDbXNnCHBheW1lbnRzCQBlAgkAkAMBCAUDbXNnCHBheW1lbnRzAAEJAMwIAgkAkQMCCAUDbXNnCHBheW1lbnRzCQBlAgkAkAMBCAUDbXNnCHBheW1lbnRzAAEFA25pbAkAlAoCCAUDbXNnCHBheW1lbnRzBQNuaWwECHBheW1lbnRzCAUNJHQwMTk0NDUxOTY5OQJfMQQHbG9ja0ZlZQgFDSR0MDE5NDQ1MTk2OTkCXzIEDHBheW1lbnRzU2l6ZQkAkAMBBQhwYXltZW50cwoBDXZhbGlkUGF5bWVudHMBAW4DCQBmAgUMcGF5bWVudHNTaXplBQZuQ29pbnMJAAIBCQCsAgICEHBheW1lbnRzIHNpemUgPiAJAKQDAQUGbkNvaW5zAwkAZgIAAQUMcGF5bWVudHNTaXplCQACAQIRcGF5bWVudHMgc2l6ZSA8IDEDAwkAAAIFC3NoYXJlU3VwcGx5AAAJAQIhPQIFBm5Db2lucwUMcGF5bWVudHNTaXplBwkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMKAQxwYXltYW50VmFsaWQCA2FjYwdwYXltZW50AwkBD2NvbnRhaW5zRWxlbWVudAIFCGFzc2V0SWRzCQENZ2V0U3RyQXNzZXRJZAEIBQdwYXltZW50B2Fzc2V0SWQGCQACAQIYSW52YWxpZCBhc3NldCBpbiBwYXltZW50CgACJGwFCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDHBheW1hbnRWYWxpZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAQEhAQkBDXZhbGlkUGF5bWVudHMBBQxwYXltZW50c1NpemUJAQV0aHJvdwAECnN1c3BpY2lvdXMJAQ9jaGVja1N1c3BpY2lvdXMAAwgFCnN1c3BpY2lvdXMCXzEJAM4IAgkBEXN1c3BlbmRTdXNwaWNpb3VzAQgFCnN1c3BpY2lvdXMCXzIJAQ5yZXR1cm5QYXltZW50cwIIBQNtc2cGY2FsbGVyBQhwYXltZW50cwoBDXBhcnNlUGF5bWVudHMCA2FjYwdhc3NldElkBA0kdDAyMDU2OTIwNTk1BQNhY2MEC25ld0JhbGFuY2VzCAUNJHQwMjA1NjkyMDU5NQJfMQQBaQgFDSR0MDIwNTY5MjA1OTUCXzIKAQxwYXJzZVBheW1lbnQCCm5ld0JhbGFuY2UHcGF5bWVudAMJAAACCQENZ2V0U3RyQXNzZXRJZAEIBQdwYXltZW50B2Fzc2V0SWQFB2Fzc2V0SWQJAGQCBQpuZXdCYWxhbmNlCAUHcGF5bWVudAZhbW91bnQFCm5ld0JhbGFuY2UECW5ld0JhbGFjZQoAAiRsBQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJEDAgUCeHAFAWkKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDHBhcnNlUGF5bWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCCQDNCAIFC25ld0JhbGFuY2VzBQluZXdCYWxhY2UJAGQCBQFpAAEEDSR0MDIwOTQ1MjEwMTIKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ1wYXJzZVBheW1lbnRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAtuZXdCYWxhbmNlcwgFDSR0MDIwOTQ1MjEwMTICXzEEAWsIBQ0kdDAyMDk0NTIxMDEyAl8yAwkBEmNoZWNrREFwcFRocmVzaG9sZAEFC25ld0JhbGFuY2VzCQEFdGhyb3cABAJEMQkBB2dldERNZW0CBQtuZXdCYWxhbmNlcwUDYW1wAwkBBmFzc2VydAEJAGYCBQJEMQUCRDAJAAIBAgdEMSA+IEQwBAtmZWVEaXNjb3VudAkBFGNhbGN1bGF0ZUZlZURpc2NvdW50AQgFA21zZwZjYWxsZXIKARFjYWxjU2NyaXB0QWN0aW9ucwIDYWNjCm5ld0JhbGFuY2UEDSR0MDIxMzMyMjEzNzMFA2FjYwQLaW52QmFsYW5jZXMIBQ0kdDAyMTMzMjIxMzczAl8xBA1zY3JpcHRBY3Rpb25zCAUNJHQwMjEzMzIyMTM3MwJfMgQBaQgFDSR0MDIxMzMyMjEzNzMCXzMDCQBmAgULc2hhcmVTdXBwbHkAAAQEX2ZlZQkAaQIJAGgCCQBuBAUDZmVlBQtmZWVEaXNjb3VudAUJZmVlU2NhbGU2BQdDRUlMSU5HBQZuQ29pbnMJAGgCAAQJAGUCBQZuQ29pbnMAAQQEZmVlcwQMaWRlYWxCYWxhbmNlCQBrAwUCRDEJAJEDAgUCeHAFAWkFAkQwBApkaWZmZXJlbmNlAwkAZgIFDGlkZWFsQmFsYW5jZQUKbmV3QmFsYW5jZQkAZQIFDGlkZWFsQmFsYW5jZQUKbmV3QmFsYW5jZQkAZQIFCm5ld0JhbGFuY2UFDGlkZWFsQmFsYW5jZQkAawMFBF9mZWUFCmRpZmZlcmVuY2UFCWZlZVNjYWxlNgQOZ292ZXJuYW5jZUZlZXMJAGsDBQRmZWVzBQ1mZWVHb3Zlcm5hbmNlBQlmZWVTY2FsZTYECHRlYW1GZWVzCQBrAwUEZmVlcwUHZmVlVGVhbQUJZmVlU2NhbGU2BAxmaW5hbEJhbGFuY2UJAGUCBQpuZXdCYWxhbmNlBQRmZWVzBBBpbnZhcmlhbnRCYWxhbmNlCQBlAgUKbmV3QmFsYW5jZQUEZmVlcwQDcG10CQBlAgUKbmV3QmFsYW5jZQkAkQMCBQJ4cAUBaQQGbHBGZWVzCQBlAgkAZQIFBGZlZXMFDmdvdmVybmFuY2VGZWVzBQh0ZWFtRmVlcwQDaW52AwkAZgIFA3BtdAAACQEFc3Rha2UCCQBlAgUDcG10BQRmZWVzCQCRAwIFCGFzc2V0SWRzBQFpCQEHdW5zdGFrZQIFBGZlZXMJAJEDAgUIYXNzZXRJZHMFAWkDCQAAAgUDaW52BQNpbnYEB2FpcmRyb3ADCQBmAgUGbHBGZWVzAAAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwIHYWlyRHJvcAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEJAJEDAgUIYXNzZXRJZHMFAWkFBmxwRmVlcwUDbmlsAAADCQAAAgUHYWlyZHJvcAUHYWlyZHJvcAkAlQoDCQDNCAIFC2ludkJhbGFuY2VzBRBpbnZhcmlhbnRCYWxhbmNlCQDOCAIFDXNjcmlwdEFjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBQ5nb3Zlcm5hbmNlRmVlcwkA2QQBCQCRAwIFCGFzc2V0SWRzBQFpCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQh0ZWFtRmVlcwkA2QQBCQCRAwIFCGFzc2V0SWRzBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAJEDAgUIYXNzZXRJZHMFAWkFDWtBc3NldEJhbGFuY2UFDGZpbmFsQmFsYW5jZQUDbmlsCQBkAgUBaQABCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBANpbnYJAQVzdGFrZQIFCm5ld0JhbGFuY2UJAJEDAgUIYXNzZXRJZHMFAWkDCQAAAgUDaW52BQNpbnYJAJUKAwkAzQgCBQtpbnZCYWxhbmNlcwUKbmV3QmFsYW5jZQkAzQgCBQ1zY3JpcHRBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkArAICCQCRAwIFCGFzc2V0SWRzBQFpBQ1rQXNzZXRCYWxhbmNlBQpuZXdCYWxhbmNlCQBkAgUBaQABCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAyMzI0NTIzMzMzCgACJGwFC25ld0JhbGFuY2VzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFA25pbAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFjYWxjU2NyaXB0QWN0aW9ucwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLaW52QmFsYW5jZXMIBQ0kdDAyMzI0NTIzMzMzAl8xBA1zY3JpcHRBY3Rpb25zCAUNJHQwMjMyNDUyMzMzMwJfMgQCRDIJAQdnZXRETWVtAgULaW52QmFsYW5jZXMFA2FtcAQLbWludF9hbW91bnQDCQAAAgULc2hhcmVTdXBwbHkAAAUCRDEJAGsDBQtzaGFyZVN1cHBseQkAZQIFAkQyBQJEMAUCRDADCQEGYXNzZXJ0AQkAZwIFC21pbnRfYW1vdW50BQ1taW5NaW50QW1vdW50CQACAQIUU2xpcHBhZ2Ugc2NyZXdlZCB5b3UDBQxzdGFrZUZhcm1pbmcEAnJlCQD8BwQFBHRoaXMCDHJlaXNzdWVTaGFyZQkAzAgCBQttaW50X2Ftb3VudAUDbmlsBQNuaWwDCQAAAgUCcmUFAnJlBAFzCQD8BwQFDmZhcm1pbmdBZGRyZXNzAhdsb2NrU2hhcmVUb2tlbnNGcm9tUG9vbAkAzAgCCAgFA21zZwZjYWxsZXIFYnl0ZXMJAMwIAgkApQgBBQR0aGlzCQDMCAIFCGxvY2tUeXBlBQNuaWwJAM4IAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMc2hhcmVBc3NldElkBQttaW50X2Ftb3VudAUDbmlsBQdsb2NrRmVlAwkAAAIFAXMFAXMJAM0IAgUNc2NyaXB0QWN0aW9ucwkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBkAgULc2hhcmVTdXBwbHkFC21pbnRfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDOCAIFDXNjcmlwdEFjdGlvbnMJAMwIAgkBB1JlaXNzdWUDBQxzaGFyZUFzc2V0SWQFC21pbnRfYW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUDbXNnBmNhbGxlcgULbWludF9hbW91bnQFDHNoYXJlQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGQCBQtzaGFyZVN1cHBseQULbWludF9hbW91bnQFA25pbANtc2cBDmNhbGNNaW50QW1vdW50AgtuZXdCYWxhbmNlcwR1c2VyBANhbXAJAQJfQQAEAnhwCQEDX3hwAAQCRDEJAQdnZXRETWVtAgULbmV3QmFsYW5jZXMFA2FtcAMJAAACBQtzaGFyZVN1cHBseQAACQCUCgIFA25pbAUCRDEEAkQwCQEHZ2V0RE1lbQIFAnhwBQNhbXAEC2ZlZURpc2NvdW50CQEUY2FsY3VsYXRlRmVlRGlzY291bnQBBQR1c2VyCgEPY2FsY0ludkJhbGFuY2VzAgNhY2MKbmV3QmFsYW5jZQQNJHQwMjQ2MTEyNDYzNwUDYWNjBAtpbnZCYWxhbmNlcwgFDSR0MDI0NjExMjQ2MzcCXzEEAWkIBQ0kdDAyNDYxMTI0NjM3Al8yBARfZmVlCQBpAgkAaAIJAG4EBQNmZWUFC2ZlZURpc2NvdW50BQlmZWVTY2FsZTYFB0NFSUxJTkcFBm5Db2lucwkAaAIABAkAZQIFBm5Db2lucwABBARmZWVzBAxpZGVhbEJhbGFuY2UJAGsDBQJEMQkAkQMCBQJ4cAUBaQUCRDAECmRpZmZlcmVuY2UDCQBmAgUMaWRlYWxCYWxhbmNlBQpuZXdCYWxhbmNlCQBlAgUMaWRlYWxCYWxhbmNlBQpuZXdCYWxhbmNlCQBlAgUKbmV3QmFsYW5jZQUMaWRlYWxCYWxhbmNlCQBrAwUEX2ZlZQUKZGlmZmVyZW5jZQUJZmVlU2NhbGU2BBBpbnZhcmlhbnRCYWxhbmNlCQBlAgUKbmV3QmFsYW5jZQUEZmVlcwkAlAoCCQDNCAIFC2ludkJhbGFuY2VzBRBpbnZhcmlhbnRCYWxhbmNlCQBkAgUBaQABBA0kdDAyNTIzOTI1MzA5CgACJGwFC25ld0JhbGFuY2VzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEPY2FsY0ludkJhbGFuY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAtpbnZCYWxhbmNlcwgFDSR0MDI1MjM5MjUzMDkCXzEEAWsIBQ0kdDAyNTIzOTI1MzA5Al8yBAJEMgkBB2dldERNZW0CBQtpbnZCYWxhbmNlcwUDYW1wBAptaW50QW1vdW50CQBrAwULc2hhcmVTdXBwbHkJAGUCBQJEMgUCRDAFAkQwCQCUCgIFA25pbAUKbWludEFtb3VudANtc2cBDHJlaXNzdWVTaGFyZQEGYW1vdW50CQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFA21zZwkAzAgCCQEHUmVpc3N1ZQMFDHNoYXJlQXNzZXRJZAUGYW1vdW50BgUDbmlsA21zZwEFZ2V0RHkECWFzc2V0RnJvbQdhc3NldFRvAmR4C3VzZXJBZGRyZXNzBAJ4cAkBA194cAAECWZyb21JbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCGFzc2V0SWRzBQlhc3NldEZyb20CEHVua25vd24gdG9rZW4gaW4EB3RvSW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQhhc3NldElkcwUHYXNzZXRUbwIRdW5rbm93biB0b2tlbiBvdXQEAXgJAGQCCQCRAwIFAnhwBQlmcm9tSW5kZXgFAmR4BAF5CQEEZ2V0WQQFCWZyb21JbmRleAUHdG9JbmRleAUBeAUCeHAEAmR5CQBlAgkAZQIJAJEDAgUCeHAFB3RvSW5kZXgFAXkAAQQLZmVlRGlzY291bnQJARRjYWxjdWxhdGVGZWVEaXNjb3VudAEJAQdBZGRyZXNzAQkA2QQBBQt1c2VyQWRkcmVzcwQEX2ZlZQkAawMJAG4EBQNmZWUFC2ZlZURpc2NvdW50BQlmZWVTY2FsZTYFB0NFSUxJTkcFAmR5BQlmZWVTY2FsZTYJAJQKAgUDbmlsCQCUCgIJAGUCBQJkeQUEX2ZlZQUEX2ZlZQNtc2cBCGV4Y2hhbmdlAgh0b2tlbk91dAZtaW5fZHkJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQACQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUAAwkBAiE9AgkAkAMBCAUDbXNnCHBheW1lbnRzAAEJAAIBAhNzaXplKHBheW1lbnRzKSAhPSAxBApzdXNwaWNpb3VzCQEPY2hlY2tTdXNwaWNpb3VzAAMIBQpzdXNwaWNpb3VzAl8xCQDOCAIJARFzdXNwZW5kU3VzcGljaW91cwEIBQpzdXNwaWNpb3VzAl8yCQEOcmV0dXJuUGF5bWVudHMCCAUDbXNnBmNhbGxlcggFA21zZwhwYXltZW50cwQHcGF5bWVudAkAkQMCCAUDbXNnCHBheW1lbnRzAAAEB3Rva2VuSW4JAQ1nZXRTdHJBc3NldElkAQgFB3BheW1lbnQHYXNzZXRJZAQLdG9rZW5PdXRCNTgJANkEAQUIdG9rZW5PdXQEAmR4CAUHcGF5bWVudAZhbW91bnQECWZyb21JbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCGFzc2V0SWRzBQd0b2tlbkluAhB1bmtub3duIHRva2VuIGluBAd0b0luZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUIYXNzZXRJZHMFCHRva2VuT3V0AhF1bmtub3duIHRva2VuIG91dAQCeHAJAQNfeHAABAF4CQBkAgkAkQMCBQJ4cAUJZnJvbUluZGV4BQJkeAQBeQkBBGdldFkEBQlmcm9tSW5kZXgFB3RvSW5kZXgFAXgFAnhwBANfZHkJAGUCCQBlAgkAkQMCBQJ4cAUHdG9JbmRleAUBeQABBAtmZWVEaXNjb3VudAkBFGNhbGN1bGF0ZUZlZURpc2NvdW50AQgFA21zZwxvcmlnaW5DYWxsZXIEBF9mZWUJAGsDBQNfZHkJAG4EBQNmZWUFC2ZlZURpc2NvdW50BQlmZWVTY2FsZTYFB0NFSUxJTkcFCWZlZVNjYWxlNgQCZHkJAGUCBQNfZHkFBF9mZWUEDmdvdmVybmFuY2VGZWVzCQBrAwUEX2ZlZQUNZmVlR292ZXJuYW5jZQUJZmVlU2NhbGU2BAh0ZWFtRmVlcwkAawMFBF9mZWUFB2ZlZVRlYW0FCWZlZVNjYWxlNgMJAQZhc3NlcnQBCQBnAgUCZHkFBm1pbl9keQkAAgECLkV4Y2hhbmdlIHJlc3VsdGVkIGluIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQKAQ9tYWtlTmV3QmFsYW5jZXMCA2FjYwx0b2tlbkJhbGFuY2UEDSR0MDI3NTM3Mjc1NjMFA2FjYwQLbmV3QmFsYW5jZXMIBQ0kdDAyNzUzNzI3NTYzAl8xBAFpCAUNJHQwMjc1MzcyNzU2MwJfMgMJAAACBQFpBQlmcm9tSW5kZXgJAJQKAgkAzQgCBQtuZXdCYWxhbmNlcwkAZAIFDHRva2VuQmFsYW5jZQUCZHgJAGQCBQFpAAEDCQAAAgUBaQUHdG9JbmRleAkAlAoCCQDNCAIFC25ld0JhbGFuY2VzCQBlAgUMdG9rZW5CYWxhbmNlBQNfZHkJAGQCBQFpAAEJAJQKAgkAzQgCBQtuZXdCYWxhbmNlcwUMdG9rZW5CYWxhbmNlCQBkAgUBaQABBA0kdDAyNzg0NjI3OTA3CgACJGwFAnhwCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEPbWFrZU5ld0JhbGFuY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAtuZXdCYWxhbmNlcwgFDSR0MDI3ODQ2Mjc5MDcCXzEEAWkIBQ0kdDAyNzg0NjI3OTA3Al8yAwkBEmNoZWNrREFwcFRocmVzaG9sZAEFC25ld0JhbGFuY2VzCQEFdGhyb3cABAFzCQEFc3Rha2UCCAUHcGF5bWVudAZhbW91bnQJAQ1nZXRTdHJBc3NldElkAQgFB3BheW1lbnQHYXNzZXRJZAMJAAACBQFzBQFzBAJ1cwkBB3Vuc3Rha2UCBQNfZHkFCHRva2VuT3V0AwkAAAIFAnVzBQJ1cwQGbHBGZWVzCQBlAgkAZQIFBF9mZWUFDmdvdmVybmFuY2VGZWVzBQh0ZWFtRmVlcwQHYWlyZHJvcAMJAGYCBQZscEZlZXMAAAkA/AcEBRBscEZhcm1pbmdBZGRyZXNzAgdhaXJEcm9wBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3Rva2VuT3V0QjU4BQZscEZlZXMFA25pbAAAAwkAAAIFB2FpcmRyb3AFB2FpcmRyb3AJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbkluBQ1rQXNzZXRCYWxhbmNlBQF4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHRva2VuT3V0BQ1rQXNzZXRCYWxhbmNlCQBlAgkAkQMCBQJ4cAUHdG9JbmRleAUDX2R5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQNtc2cGY2FsbGVyBQJkeQULdG9rZW5PdXRCNTgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBQ5nb3Zlcm5hbmNlRmVlcwULdG9rZW5PdXRCNTgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCHRlYW1GZWVzBQt0b2tlbk91dEI1OAUDbmlsCQDMCAIFAmR5CQDMCAIFC3Rva2VuT3V0QjU4BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DbXNnAQh3aXRoZHJhdwEKbWluQW1vdW50cwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBDGNhbGNXaXRoZHJhdwMFA21zZwUKbWluQW1vdW50cwAAA21zZwESd2l0aGRyYXdXaXRoVW5sb2NrAgptaW5BbW91bnRzDHVubG9ja0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAGcCAAAFDHVubG9ja0Ftb3VudAkAAgECHlVubG9jayBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQQGdW5sb2NrCQD8BwQFDmZhcm1pbmdBZGRyZXNzAht3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAggIBQNtc2cGY2FsbGVyBWJ5dGVzCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQx1bmxvY2tBbW91bnQFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrCQEMY2FsY1dpdGhkcmF3AwUDbXNnBQptaW5BbW91bnRzBQx1bmxvY2tBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DbXNnARNjYWxjV2l0aGRyYXdPbmVDb2luAwt0b2tlbkFtb3VudAh0b2tlbk91dAR1c2VyAwkAZwIAAAULdG9rZW5BbW91bnQJAAIBAhdBbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCGFzc2V0SWRzBQh0b2tlbk91dAIRdW5rbm93biB0b2tlbiBvdXQJAJQKAgUDbmlsCAkBFF9jYWxjV2l0aGRyYXdPbmVDb2luBAkBA194cAAFC3Rva2VuQW1vdW50BQFpCQEHQWRkcmVzcwEJANkEAQUEdXNlcgJfMQNtc2cBD3dpdGhkcmF3T25lQ29pbgIIdG9rZW5PdXQJbWluQW1vdW50CQELdmFsdWVPckVsc2UCCQEMaXNEZXByaWNhdGVkAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIJAJADAQgFA21zZwhwYXltZW50cwABCQACAQITc2l6ZShwYXltZW50cykgIT0gMQkBGmNhbGNXaXRoZHJhd09uZUNvaW5FbnRyaWVzBAUDbXNnBQh0b2tlbk91dAUJbWluQW1vdW50AAADbXNnARl3aXRoZHJhd09uZUNvaW5XaXRoVW5sb2NrAwh0b2tlbk91dAltaW5BbW91bnQMdW5sb2NrQW1vdW50CQELdmFsdWVPckVsc2UCCQEMaXNEZXByaWNhdGVkAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAGYCAAAFDHVubG9ja0Ftb3VudAkAAgECHlVubG9jayBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQQGdW5sb2NrCQD8BwQFDmZhcm1pbmdBZGRyZXNzAht3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAggIBQNtc2cGY2FsbGVyBWJ5dGVzCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQx1bmxvY2tBbW91bnQFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrCQEaY2FsY1dpdGhkcmF3T25lQ29pbkVudHJpZXMEBQNtc2cFCHRva2VuT3V0BQltaW5BbW91bnQFDHVubG9ja0Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgNtc2cBAUEACQCUCgIFA25pbAkBAl9BAANtc2cBD2dldFZpcnR1YWxQcmljZQAEAUQJAQVnZXRfRAIJAQNfeHAACQECX0EACQCUCgIFA25pbAkAawMFAUQFCVBSRUNJU0lPTgULc2hhcmVTdXBwbHkDbXNnAQ9jYWxjVG9rZW5BbW91bnQCB2Ftb3VudHMHZGVwb3NpdAQDYW1wCQECX0EABAhiYWxhbmNlcwkBA194cAAEAkQwCQEHZ2V0RE1lbQIFCGJhbGFuY2VzBQNhbXAKAQ9jYWxjTmV3QmFsYW5jZXMCA2FjYwdiYWxhbmNlBA0kdDAzMDc3OTMwODA1BQNhY2MEC25ld0JhbGFuY2VzCAUNJHQwMzA3NzkzMDgwNQJfMQQBaQgFDSR0MDMwNzc5MzA4MDUCXzIECm5ld0JhbGFuY2UJAGQCBQdiYWxhbmNlAwUHZGVwb3NpdAkAkQMCBQdhbW91bnRzBQFpCQEBLQEJAJEDAgUHYW1vdW50cwUBaQkAlAoCCQDNCAIFC25ld0JhbGFuY2VzBQpuZXdCYWxhbmNlCQBkAgUBaQABBAtuZXdCYWxhbmNlcwgKAAIkbAUIYmFsYW5jZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ9jYWxjTmV3QmFsYW5jZXMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoCXzEEAkQxCQEHZ2V0RE1lbQIFC25ld0JhbGFuY2VzBQNhbXAEBGRpZmYDBQdkZXBvc2l0CQBlAgUCRDEFAkQwCQBlAgUCRDAFAkQxCQCUCgIFA25pbAkAawMFBGRpZmYFC3NoYXJlU3VwcGx5BQJEMANtc2cBBXJhbXBBAghfZnV0dXJlQQtfZnV0dXJlVGltZQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUDbXNnAwkBBmFzc2VydAEJAGcCBQ5ibG9ja1RpbWVzdGFtcAkAZAIFDmluaXRpYWxfQV90aW1lBQ1NSU5fUkFNUF9USU1FCQACAQIJdG9vIG9mdGVuAwkBBmFzc2VydAEJAGcCBQtfZnV0dXJlVGltZQkAZAIFDmJsb2NrVGltZXN0YW1wBQ1NSU5fUkFNUF9USU1FCQACAQIRaW5zdWZmaWNpZW50IHRpbWUECl9pbml0aWFsX0EJAQJfQQADCQEGYXNzZXJ0AQMJAGYCBQhfZnV0dXJlQQAACQBmAgUFTUFYX0EFCF9mdXR1cmVBBwkAAgECEW91dCBvZiBiYXNlIHJhbmdlAwkBBmFzc2VydAEDAwkAZwIFCF9mdXR1cmVBBQpfaW5pdGlhbF9BCQBnAgkAaAIFCl9pbml0aWFsX0EFDE1BWF9BX0NIQU5HRQUIX2Z1dHVyZUEHBgMJAGYCBQpfaW5pdGlhbF9BBQhfZnV0dXJlQQkAZwIJAGgCBQhfZnV0dXJlQQUMTUFYX0FfQ0hBTkdFBQpfaW5pdGlhbF9BBwkAAgECDG91dCBvZiByYW5nZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIJaW5pdGlhbF9BBQpfaW5pdGlhbF9BCQDMCAIJAQxJbnRlZ2VyRW50cnkCAghmdXR1cmVfQQUIX2Z1dHVyZUEJAMwIAgkBDEludGVnZXJFbnRyeQICDmluaXRpYWxfQV90aW1lBQ5ibG9ja1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgINZnV0dXJlX0FfdGltZQULX2Z1dHVyZVRpbWUFA25pbANtc2cBCXN0b3BSYW1wQQAJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFA21zZwQIY3VycmVudEEJAQJfQQAJAMwIAgkBDEludGVnZXJFbnRyeQICCWluaXRpYWxfQQUIY3VycmVudEEJAMwIAgkBDEludGVnZXJFbnRyeQICCGZ1dHVyZV9BBQhjdXJyZW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgIOaW5pdGlhbF9BX3RpbWUFDmJsb2NrVGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1mdXR1cmVfQV90aW1lBQ5ibG9ja1RpbWVzdGFtcAUDbmlsA21zZwEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQNtc2cDCQEBIQEFBmFjdGl2ZQkAAgEJAKwCAgIiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQZrQ2F1c2UCGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkCQEHc3VzcGVuZAECD1BhdXNlZCBieSBhZG1pbgNtc2cBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUDbXNnAwUGYWN0aXZlCQENdGhyb3dJc0FjdGl2ZQAJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtEZWxldGVFbnRyeQEFBmtDYXVzZQUDbmlsA21zZwEZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBWNsYWltAwkBD2NvbnRhaW5zRWxlbWVudAIFCGFzc2V0SWRzCQDYBAEFBFVTRE4JAPwHBAUSc3Rha2luZ1VTRE5BZGRyZXNzAgxjbGFpbVJld2FyZHMFA25pbAUDbmlsAAADCQAAAgUFY2xhaW0FBWNsYWltAwkBAiE9AggFA21zZwZjYWxsZXIFD21vbmV5Qm94QWRkcmVzcwkAAgECJk9ubHkgdGhlIHdhbGxldCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAhiYWxhbmNlcwkBA194cAAKAQ50YWtlRXh0cmFGdW5kcwIDYWNjB2Fzc2V0SWQEDSR0MDMzMzkwMzM0MDgFA2FjYwQDc3VtCAUNJHQwMzMzOTAzMzQwOAJfMQQBaQgFDSR0MDMzMzkwMzM0MDgCXzIECHRva2VuQjU4CQDZBAEFB2Fzc2V0SWQECHJCYWxhbmNlCQBkAgkA8AcCBQR0aGlzBQh0b2tlbkI1OAkBDHN0YWtlZEFtb3VudAEFCHRva2VuQjU4BAxlbnJvbGxBbW91bnQJAGUCBQhyQmFsYW5jZQkAkQMCBQhiYWxhbmNlcwUBaQMJAGYCAAAFDGVucm9sbEFtb3VudAkBB3N1c3BlbmQBCQCsAgICIEVucm9sbCBhbW91bnQgbmVnYXRpdmUgZm9yIGFzc2V0BQdhc3NldElkBAdhaXJkcm9wAwkAZgIFDGVucm9sbEFtb3VudAAACQD8BwQFEGxwRmFybWluZ0FkZHJlc3MCB2FpckRyb3AFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIdG9rZW5CNTgFDGVucm9sbEFtb3VudAUDbmlsAAADCQAAAgUHYWlyZHJvcAUHYWlyZHJvcAkAlAoCCQBkAgUDc3VtBQxlbnJvbGxBbW91bnQJAGQCBQFpAAEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAWsKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ50YWtlRXh0cmFGdW5kcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACCAUBawJfMQAACQACAQIQTm8gbW9uZXkgdG8gdGFrZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQTbXVsdGlTaWduZWRCeUFkbWlucwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwBBNjYWxsVGFrZUludG9BY2NvdW50AwkAAAIIBQNpbnYEZEFwcAUEdGhpcwkAAAIIBQNpbnYIZnVuY3Rpb24CGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBA1zaWduZWRCeUFkbWluAwMDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTIGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTMGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABRFhZG1pblB1YktleUludm9rZQMDBRNjYWxsVGFrZUludG9BY2NvdW50BQ1zaWduZWRCeUFkbWluBwYFE211bHRpU2lnbmVkQnlBZG1pbnMFE211bHRpU2lnbmVkQnlBZG1pbnNbNfbU", "height": 2494096, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3q8Z8MyQoighBNDkYYZnsmDvY3jStjuN4cibaLpegA4M Next: none Diff:
OldNewDifferences
5555
5656 let B = "money_box_address"
5757
58-let C = "governance_address"
58+let C = "team_box_address"
5959
60-let E = "voting_address"
60+let E = "governance_address"
6161
62-let F = "farming_address"
62+let F = "voting_address"
6363
64-let G = "lp_farming"
64+let G = "farming_address"
6565
66-let H = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
66+let H = "lp_farming"
6767
68-func I (J) = {
69- let K = getString(H, J)
70- if ($isInstanceOf(K, "String"))
68+let I = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
69+
70+func J (K) = {
71+ let L = getString(I, K)
72+ if ($isInstanceOf(L, "String"))
7173 then {
72- let L = K
73- fromBase58String(L)
74+ let M = L
75+ fromBase58String(M)
7476 }
7577 else {
76- let M = K
77- throw((J + "is empty"))
78+ let N = L
79+ throw((K + "is empty"))
7880 }
7981 }
8082
8183
82-let N = I(w)
84+let O = J(w)
8385
84-let O = I(x)
86+let P = J(x)
8587
86-let P = I(y)
88+let Q = J(y)
8789
88-let Q = I(z)
90+let R = J(z)
8991
90-let R = Address(I(B))
92+let S = Address(J(B))
9193
92-let S = Address(I(C))
94+let T = Address(J(C))
9395
94-let T = Address(I(r))
96+let U = Address(J(E))
9597
96-let U = Address(I(E))
98+let V = Address(J(r))
9799
98-let V = Address(I(F))
100+let W = Address(J(F))
99101
100-let W = Address(I(G))
102+let X = Address(J(G))
101103
102-let X = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
104+let Y = Address(J(H))
103105
104-let Y = [toBase58String(X)]
106+let Z = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
105107
106-let Z = getBooleanValue(this, j)
108+let aa = [toBase58String(Z)]
107109
108-let aa = valueOrElse(getBoolean(H, k), true)
110+let ab = getBooleanValue(this, j)
109111
110-let ab = valueOrElse(getBoolean(H, (l + toString(this))), false)
112+let ac = valueOrElse(getBoolean(I, k), true)
111113
112-let ac = fromBase58String(getStringValue(this, n))
114+let ad = valueOrElse(getBoolean(I, (l + toString(this))), false)
113115
114-let ad = getIntegerValue(this, o)
116+let ae = fromBase58String(getStringValue(this, n))
115117
116-let ae = 1000000
118+let af = getIntegerValue(this, o)
117119
118-let af = getIntegerValue(this, p)
120+let ag = 1000000
119121
120-let ag = fraction(40, ae, 100)
122+let ah = getIntegerValue(this, p)
121123
122-let ah = getIntegerValue(this, "initial_A")
124+let ai = fraction(35, ag, 100)
123125
124-let ai = getIntegerValue(this, "future_A")
126+let aj = fraction(10, ag, 100)
125127
126-let aj = valueOrElse(getInteger(this, "initial_A_time"), 0)
128+let ak = getIntegerValue(this, "initial_A")
127129
128-let ak = valueOrElse(getInteger(this, "future_A_time"), 0)
130+let al = getIntegerValue(this, "future_A")
129131
130-let al = split(getStringValue(this, h), ",")
132+let am = valueOrElse(getInteger(this, "initial_A_time"), 0)
131133
132-let am = size(al)
134+let an = valueOrElse(getInteger(this, "future_A_time"), 0)
133135
134-func an (ao) = [BooleanEntry(j, false), StringEntry(m, ao)]
136+let ao = split(getStringValue(this, h), ",")
137+
138+let ap = size(ao)
139+
140+func aq (ar) = [BooleanEntry(j, false), StringEntry(m, ar)]
135141
136142
137-func ap () = throw("DApp is already active")
143+func as () = throw("DApp is already active")
138144
139145
140-func aq () = if (if (Z)
141- then aa
146+func at () = if (if (ab)
147+ then ac
142148 else false)
143149 then unit
144150 else throw("DApp is inactive at this moment")
145151
146152
147-func ar () = if (!(ab))
153+func au () = if (!(ad))
148154 then unit
149155 else throw("Pool is deprecated. Only withdraw action allowed.")
150156
151157
152-func as (at) = if (containsElement([N, O, P], at.callerPublicKey))
158+func av (aw) = if (containsElement([O, P, Q], aw.callerPublicKey))
153159 then unit
154160 else throw("Only admin can call this function")
155161
156162
157-func au (at) = if ((this == at.caller))
163+func ax (aw) = if ((this == aw.caller))
158164 then unit
159165 else throw("Only contract itself can call this function")
160166
161167
162-let av = toBigInt(2)
168+let ay = toBigInt(2)
163169
164-let aw = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
170+let az = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
165171
166-let ax = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
172+let aA = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
167173
168-let ay = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
174+let aB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
169175
170-let az = height
176+let aC = height
171177
172-func aA (aB) = if (aB)
178+func aD (aE) = if (aE)
173179 then false
174180 else true
175181
176182
177-func aC (aD) = {
178- let aE = {
179- let K = aD
180- if ($isInstanceOf(K, "Address"))
183+func aF (aG) = {
184+ let aH = {
185+ let L = aG
186+ if ($isInstanceOf(L, "Address"))
181187 then {
182- let aF = K
183- toString(aF)
188+ let aI = L
189+ toString(aI)
184190 }
185- else if ($isInstanceOf(K, "String"))
191+ else if ($isInstanceOf(L, "String"))
186192 then {
187- let aF = K
188- aF
193+ let aI = L
194+ aI
189195 }
190196 else throw("Unknow type of user Addr")
191197 }
192- let aG = valueOrElse(getInteger(S, (aE + v)), 0)
193- let aH = valueOrElse(getInteger(S, (aE + v)), aG)
194- let aI = split(getStringValue(H, t), ",")
195- let aJ = split(getStringValue(H, s), ",")
196- if (if ((aH >= parseIntValue(aI[0])))
197- then (parseIntValue(aI[1]) > aH)
198+ let aJ = valueOrElse(getInteger(U, (aH + v)), 0)
199+ let aK = valueOrElse(getInteger(U, (aH + v)), aJ)
200+ let aL = split(getStringValue(I, t), ",")
201+ let aM = split(getStringValue(I, s), ",")
202+ if (if ((aK >= parseIntValue(aL[0])))
203+ then (parseIntValue(aL[1]) > aK)
198204 else false)
199- then (ae - parseIntValue(aJ[0]))
200- else if (if ((aH >= parseIntValue(aI[1])))
201- then (parseIntValue(aI[2]) > aH)
205+ then (ag - parseIntValue(aM[0]))
206+ else if (if ((aK >= parseIntValue(aL[1])))
207+ then (parseIntValue(aL[2]) > aK)
202208 else false)
203- then (ae - parseIntValue(aJ[1]))
204- else if (if ((aH >= parseIntValue(aI[2])))
205- then (parseIntValue(aI[3]) > aH)
209+ then (ag - parseIntValue(aM[1]))
210+ else if (if ((aK >= parseIntValue(aL[2])))
211+ then (parseIntValue(aL[3]) > aK)
206212 else false)
207- then (ae - parseIntValue(aJ[2]))
208- else if (if ((aH >= parseIntValue(aI[3])))
209- then (parseIntValue(aI[4]) > aH)
213+ then (ag - parseIntValue(aM[2]))
214+ else if (if ((aK >= parseIntValue(aL[3])))
215+ then (parseIntValue(aL[4]) > aK)
210216 else false)
211- then (ae - parseIntValue(aJ[3]))
212- else if ((aH >= parseIntValue(aI[4])))
213- then (ae - parseIntValue(aJ[4]))
214- else ae
217+ then (ag - parseIntValue(aM[3]))
218+ else if ((aK >= parseIntValue(aL[4])))
219+ then (ag - parseIntValue(aM[4]))
220+ else ag
215221 }
216222
217223
218-func aK () = {
219- let aL = ak
220- let aM = ai
221- if ((aL > az))
224+func aN () = {
225+ let aO = an
226+ let aP = al
227+ if ((aO > aC))
222228 then {
223- let aN = ah
224- let aO = aj
225- if ((aM > aN))
226- then (aN + (((aM - aN) * (az - aO)) / (aL - aO)))
227- else (aN - (((aN - aM) * (az - aO)) / (aL - aO)))
229+ let aQ = ak
230+ let aR = am
231+ if ((aP > aQ))
232+ then (aQ + (((aP - aQ) * (aC - aR)) / (aO - aR)))
233+ else (aQ - (((aQ - aP) * (aC - aR)) / (aO - aR)))
228234 }
229- else aM
235+ else aP
230236 }
231237
232238
233-func aP () = {
234- func aQ (aR,aS) = (aR :+ valueOrElse(getInteger(this, (aS + i)), 0))
239+func aS () = {
240+ func aT (aU,aV) = (aU :+ valueOrElse(getInteger(this, (aV + i)), 0))
235241
236- let aT = al
237- let aU = size(aT)
238- let aV = nil
239- func aW (aX,aY) = if ((aY >= aU))
240- then aX
241- else aQ(aX, aT[aY])
242+ let aW = ao
243+ let aX = size(aW)
244+ let aY = nil
245+ func aZ (ba,bb) = if ((bb >= aX))
246+ then ba
247+ else aT(ba, aW[bb])
242248
243- func aZ (aX,aY) = if ((aY >= aU))
244- then aX
249+ func bc (ba,bb) = if ((bb >= aX))
250+ then ba
245251 else throw("List size exceeds 10")
246252
247- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
253+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
248254 }
249255
250256
251-func ba (bb) = bb
257+func bd (be) = be
252258
253259
254-func bc (aR,bd) = (aR + bd)
260+func bf (aU,bg) = (aU + bg)
255261
256262
257-func be (bb,bf) = {
258- let bg = invoke(this, "D", [bb, bf], nil)
259- if ($isInstanceOf(bg, "Int"))
260- then bg
261- else throw(($getType(bg) + " couldn't be cast to Int"))
263+func bh (be,bi) = {
264+ let bj = invoke(this, "D", [be, bi], nil)
265+ if ($isInstanceOf(bj, "Int"))
266+ then bj
267+ else throw(($getType(bj) + " couldn't be cast to Int"))
262268 }
263269
264270
265-func bh (bb,bf) = {
266- let bi = {
267- let aT = bb
268- let aU = size(aT)
269- let aV = 0
270- func aW (aX,aY) = if ((aY >= aU))
271- then aX
272- else bc(aX, aT[aY])
271+func bk (be,bi) = {
272+ let bl = {
273+ let aW = be
274+ let aX = size(aW)
275+ let aY = 0
276+ func aZ (ba,bb) = if ((bb >= aX))
277+ then ba
278+ else bf(ba, aW[bb])
273279
274- func aZ (aX,aY) = if ((aY >= aU))
275- then aX
280+ func bc (ba,bb) = if ((bb >= aX))
281+ then ba
276282 else throw("List size exceeds 10")
277283
278- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
284+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
279285 }
280- if ((bi == 0))
286+ if ((bl == 0))
281287 then 0
282288 else {
283- let bj = (bf * am)
284- let bk = (toBigInt(bj) * toBigInt(bi))
285- let bl = toBigInt((bj - 1))
286- func bm (aR,at) = if ((aR._2 == true))
287- then aR
289+ let bm = (bi * ap)
290+ let bn = (toBigInt(bm) * toBigInt(bl))
291+ let bo = toBigInt((bm - 1))
292+ func bp (aU,aw) = if ((aU._2 == true))
293+ then aU
288294 else {
289- let bn = aR._1
290- func bo (bp,at) = if ((am > at))
291- then ((bp * bn) / (toBigInt(bb[at]) * toBigInt(am)))
292- else bp
295+ let bq = aU._1
296+ func br (bs,aw) = if ((ap > aw))
297+ then ((bs * bq) / (toBigInt(be[aw]) * toBigInt(ap)))
298+ else bs
293299
294- let bp = {
295- let aT = aw
296- let aU = size(aT)
297- let aV = bn
298- func bq (aX,aY) = if ((aY >= aU))
299- then aX
300- else bo(aX, aT[aY])
300+ let bs = {
301+ let aW = az
302+ let aX = size(aW)
303+ let aY = bq
304+ func bt (ba,bb) = if ((bb >= aX))
305+ then ba
306+ else br(ba, aW[bb])
301307
302- func br (aX,aY) = if ((aY >= aU))
303- then aX
308+ func bu (ba,bb) = if ((bb >= aX))
309+ then ba
304310 else throw("List size exceeds 10")
305311
306- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
312+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
307313 }
308- let bs = fraction((bk + (toBigInt(am) * bp)), bn, ((bl * bn) + (toBigInt((am + 1)) * bp)))
309- if ((bs > bn))
310- then if ((1 >= toInt((bs - bn))))
311- then $Tuple2(bs, true)
312- else $Tuple2(bs, false)
313- else if ((1 >= toInt((bn - bs))))
314- then $Tuple2(bs, true)
315- else $Tuple2(bs, false)
314+ let bv = fraction((bn + (toBigInt(ap) * bs)), bq, ((bo * bq) + (toBigInt((ap + 1)) * bs)))
315+ if ((bv > bq))
316+ then if ((1 >= toInt((bv - bq))))
317+ then $Tuple2(bv, true)
318+ else $Tuple2(bv, false)
319+ else if ((1 >= toInt((bq - bv))))
320+ then $Tuple2(bv, true)
321+ else $Tuple2(bv, false)
316322 }
317323
318- let bt = {
319- let aT = ax
320- let aU = size(aT)
321- let aV = $Tuple2(toBigInt(bi), false)
322- func bq (aX,aY) = if ((aY >= aU))
323- then aX
324- else bm(aX, aT[aY])
324+ let bw = {
325+ let aW = aA
326+ let aX = size(aW)
327+ let aY = $Tuple2(toBigInt(bl), false)
328+ func bt (ba,bb) = if ((bb >= aX))
329+ then ba
330+ else bp(ba, aW[bb])
325331
326- func br (aX,aY) = if ((aY >= aU))
327- then aX
332+ func bu (ba,bb) = if ((bb >= aX))
333+ then ba
328334 else throw("List size exceeds 15")
329335
330- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
336+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
331337 }
332- let bs = bt._1
333- let bu = bt._2
334- if ((bu == false))
335- then throw(("get_D() not finished with " + toString(bs)))
336- else toInt(bs)
338+ let bv = bw._1
339+ let bx = bw._2
340+ if ((bx == false))
341+ then throw(("get_D() not finished with " + toString(bv)))
342+ else toInt(bv)
337343 }
338344 }
339345
340346
341-func bv (bb,bf) = be(ba(bb), bf)
347+func by (be,bi) = bh(bd(be), bi)
342348
343349
344-func bw (bx,by,bz,bA) = if (aA((bx != by)))
350+func bz (bA,bB,bC,bD) = if (aD((bA != bB)))
345351 then throw("same coin")
346- else if (aA(if ((by >= 0))
347- then (bx >= 0)
352+ else if (aD(if ((bB >= 0))
353+ then (bA >= 0)
348354 else false))
349355 then throw("below zero")
350- else if (aA(if ((am > by))
351- then (am > bx)
356+ else if (aD(if ((ap > bB))
357+ then (ap > bA)
352358 else false))
353359 then throw("above N_COINS")
354360 else {
355- let bf = aK()
356- let bs = be(bA, bf)
357- let bj = (bf * am)
358- func bB (aR,at) = {
359- let bC = aR
360- let bD = bC._1
361- let bE = bC._2
362- let bF = if ((bx == at))
363- then bz
364- else bA[at]
365- if (if ((at != by))
366- then (am > at)
361+ let bi = aN()
362+ let bv = bh(bD, bi)
363+ let bm = (bi * ap)
364+ func bE (aU,aw) = {
365+ let bF = aU
366+ let bG = bF._1
367+ let bH = bF._2
368+ let bI = if ((bA == aw))
369+ then bC
370+ else bD[aw]
371+ if (if ((aw != bB))
372+ then (ap > aw)
367373 else false)
368- then $Tuple2((bD + bF), fraction(bE, toBigInt(bs), toBigInt((bF * am))))
369- else $Tuple2(bD, bE)
374+ then $Tuple2((bG + bI), fraction(bH, toBigInt(bv), toBigInt((bI * ap))))
375+ else $Tuple2(bG, bH)
370376 }
371377
372- let bG = {
373- let aT = aw
374- let aU = size(aT)
375- let aV = $Tuple2(0, toBigInt(bs))
376- func aW (aX,aY) = if ((aY >= aU))
377- then aX
378- else bB(aX, aT[aY])
378+ let bJ = {
379+ let aW = az
380+ let aX = size(aW)
381+ let aY = $Tuple2(0, toBigInt(bv))
382+ func aZ (ba,bb) = if ((bb >= aX))
383+ then ba
384+ else bE(ba, aW[bb])
379385
380- func aZ (aX,aY) = if ((aY >= aU))
381- then aX
386+ func bc (ba,bb) = if ((bb >= aX))
387+ then ba
382388 else throw("List size exceeds 10")
383389
384- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
390+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
385391 }
386- let bD = bG._1
387- let bH = bG._2
388- let bE = fraction(bH, toBigInt(bs), toBigInt((bj * am)))
389- let bI = toBigInt(((bD + (bs / bj)) - bs))
390- func bJ (aR,bK) = if ((aR._2 == true))
391- then aR
392+ let bG = bJ._1
393+ let bK = bJ._2
394+ let bH = fraction(bK, toBigInt(bv), toBigInt((bm * ap)))
395+ let bL = toBigInt(((bG + (bv / bm)) - bv))
396+ func bM (aU,bN) = if ((aU._2 == true))
397+ then aU
392398 else {
393- let bL = aR._1
394- let bM = (((bL * bL) + bE) / ((av * bL) + bI))
395- if ((bM > bL))
396- then if ((1 >= toInt((bM - bL))))
397- then $Tuple2(bM, true)
398- else $Tuple2(bM, false)
399- else if ((1 >= toInt((bL - bM))))
400- then $Tuple2(bM, true)
401- else $Tuple2(bM, false)
399+ let bO = aU._1
400+ let bP = (((bO * bO) + bH) / ((ay * bO) + bL))
401+ if ((bP > bO))
402+ then if ((1 >= toInt((bP - bO))))
403+ then $Tuple2(bP, true)
404+ else $Tuple2(bP, false)
405+ else if ((1 >= toInt((bO - bP))))
406+ then $Tuple2(bP, true)
407+ else $Tuple2(bP, false)
402408 }
403409
404- let bN = {
405- let aT = ay
406- let aU = size(aT)
407- let aV = $Tuple2(toBigInt(bs), false)
408- func bq (aX,aY) = if ((aY >= aU))
409- then aX
410- else bJ(aX, aT[aY])
410+ let bQ = {
411+ let aW = aB
412+ let aX = size(aW)
413+ let aY = $Tuple2(toBigInt(bv), false)
414+ func bt (ba,bb) = if ((bb >= aX))
415+ then ba
416+ else bM(ba, aW[bb])
411417
412- func br (aX,aY) = if ((aY >= aU))
413- then aX
418+ func bu (ba,bb) = if ((bb >= aX))
419+ then ba
414420 else throw("List size exceeds 16")
415421
416- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
422+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
417423 }
418- let bM = bN._1
419- let bu = bN._2
420- if ((bu == false))
421- then throw(("getY() not finished with " + toString(bM)))
422- else toInt(bM)
424+ let bP = bQ._1
425+ let bx = bQ._2
426+ if ((bx == false))
427+ then throw(("getY() not finished with " + toString(bP)))
428+ else toInt(bP)
423429 }
424430
425431
426-func bO (bP,bx,bb,bs) = if (aA((bx >= 0)))
432+func bR (bS,bA,be,bv) = if (aD((bA >= 0)))
427433 then throw("i below zero")
428- else if (aA((am > bx)))
434+ else if (aD((ap > bA)))
429435 then throw("i above N_COINS")
430436 else {
431- let bj = (bP * am)
432- func bB (aR,at) = {
433- let bQ = aR
434- let bD = bQ._1
435- let bE = bQ._2
436- let bF = if (if ((bx != at))
437- then (am > at)
437+ let bm = (bS * ap)
438+ func bE (aU,aw) = {
439+ let bT = aU
440+ let bG = bT._1
441+ let bH = bT._2
442+ let bI = if (if ((bA != aw))
443+ then (ap > aw)
438444 else false)
439- then bb[at]
445+ then be[aw]
440446 else 0
441- if (if ((am > at))
442- then (bx != at)
447+ if (if ((ap > aw))
448+ then (bA != aw)
443449 else false)
444- then $Tuple2((bD + bF), fraction(bE, toBigInt(bs), toBigInt((bF * am))))
445- else $Tuple2(bD, bE)
450+ then $Tuple2((bG + bI), fraction(bH, toBigInt(bv), toBigInt((bI * ap))))
451+ else $Tuple2(bG, bH)
446452 }
447453
448- let bR = {
449- let aT = aw
450- let aU = size(aT)
451- let aV = $Tuple2(0, toBigInt(bs))
452- func aW (aX,aY) = if ((aY >= aU))
453- then aX
454- else bB(aX, aT[aY])
454+ let bU = {
455+ let aW = az
456+ let aX = size(aW)
457+ let aY = $Tuple2(0, toBigInt(bv))
458+ func aZ (ba,bb) = if ((bb >= aX))
459+ then ba
460+ else bE(ba, aW[bb])
455461
456- func aZ (aX,aY) = if ((aY >= aU))
457- then aX
462+ func bc (ba,bb) = if ((bb >= aX))
463+ then ba
458464 else throw("List size exceeds 10")
459465
460- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
466+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
461467 }
462- let bD = bR._1
463- let bH = bR._2
464- let bE = fraction(bH, toBigInt(bs), toBigInt((bj * am)))
465- let bI = toBigInt(((bD + (bs / bj)) - bs))
466- func bS (aR,at) = if ((aR._2 == true))
467- then aR
468+ let bG = bU._1
469+ let bK = bU._2
470+ let bH = fraction(bK, toBigInt(bv), toBigInt((bm * ap)))
471+ let bL = toBigInt(((bG + (bv / bm)) - bv))
472+ func bV (aU,aw) = if ((aU._2 == true))
473+ then aU
468474 else {
469- let bL = aR._1
470- let bM = (((bL * bL) + bE) / ((av * bL) + bI))
471- if ((bM > bL))
472- then if ((1 >= toInt((bM - bL))))
473- then $Tuple2(bM, true)
474- else $Tuple2(bM, false)
475- else if ((1 >= toInt((bL - bM))))
476- then $Tuple2(bM, true)
477- else $Tuple2(bM, false)
475+ let bO = aU._1
476+ let bP = (((bO * bO) + bH) / ((ay * bO) + bL))
477+ if ((bP > bO))
478+ then if ((1 >= toInt((bP - bO))))
479+ then $Tuple2(bP, true)
480+ else $Tuple2(bP, false)
481+ else if ((1 >= toInt((bO - bP))))
482+ then $Tuple2(bP, true)
483+ else $Tuple2(bP, false)
478484 }
479485
480- let bT = {
481- let aT = ay
482- let aU = size(aT)
483- let aV = $Tuple2(toBigInt(bs), false)
484- func bq (aX,aY) = if ((aY >= aU))
485- then aX
486- else bS(aX, aT[aY])
486+ let bW = {
487+ let aW = aB
488+ let aX = size(aW)
489+ let aY = $Tuple2(toBigInt(bv), false)
490+ func bt (ba,bb) = if ((bb >= aX))
491+ then ba
492+ else bV(ba, aW[bb])
487493
488- func br (aX,aY) = if ((aY >= aU))
489- then aX
494+ func bu (ba,bb) = if ((bb >= aX))
495+ then ba
490496 else throw("List size exceeds 16")
491497
492- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
498+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
493499 }
494- let bM = bT._1
495- let bu = bT._2
496- if ((bu == false))
497- then throw(("get_y_D() not finished with " + toString(bM)))
498- else toInt(bM)
500+ let bP = bW._1
501+ let bx = bW._2
502+ if ((bx == false))
503+ then throw(("get_y_D() not finished with " + toString(bP)))
504+ else toInt(bP)
499505 }
500506
501507
502-func bU (bb,bV,at,bW) = {
503- let bX = aC(bW)
504- let bf = aK()
505- let bY = ((fraction(af, bX, ae, CEILING) * am) / (4 * (am - 1)))
506- let bZ = ad
507- let ca = be(bb, bf)
508- let cb = (ca - fraction(bV, ca, bZ))
509- let cc = bO(bf, at, bb, cb)
510- let cd = (bb[at] - cc)
511- func ce (aR,cf) = {
512- let cg = aR
513- let ch = cg._1
514- let ci = cg._2
515- let cj = if ((ci == at))
516- then (fraction(cf, cb, ca) - cc)
517- else (cf - fraction(cf, cb, ca))
518- $Tuple2((ch :+ (cf - fraction(bY, cj, ae))), (ci + 1))
508+func bX (be,bY,aw,bZ) = {
509+ let ca = aF(bZ)
510+ let bi = aN()
511+ let cb = ((fraction(ah, ca, ag, CEILING) * ap) / (4 * (ap - 1)))
512+ let cc = af
513+ let cd = bh(be, bi)
514+ let ce = (cd - fraction(bY, cd, cc))
515+ let cf = bR(bi, aw, be, ce)
516+ let cg = (be[aw] - cf)
517+ func ch (aU,ci) = {
518+ let cj = aU
519+ let ck = cj._1
520+ let cl = cj._2
521+ let cm = if ((cl == aw))
522+ then (fraction(ci, ce, cd) - cf)
523+ else (ci - fraction(ci, ce, cd))
524+ $Tuple2((ck :+ (ci - fraction(cb, cm, ag))), (cl + 1))
519525 }
520526
521- let ck = {
522- let aT = bb
523- let aU = size(aT)
524- let aV = $Tuple2(nil, 0)
525- func aW (aX,aY) = if ((aY >= aU))
526- then aX
527- else ce(aX, aT[aY])
527+ let cn = {
528+ let aW = be
529+ let aX = size(aW)
530+ let aY = $Tuple2(nil, 0)
531+ func aZ (ba,bb) = if ((bb >= aX))
532+ then ba
533+ else ch(ba, aW[bb])
528534
529- func aZ (aX,aY) = if ((aY >= aU))
530- then aX
535+ func bc (ba,bb) = if ((bb >= aX))
536+ then ba
531537 else throw("List size exceeds 10")
532538
533- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
539+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
534540 }
535- let ch = ck._1
536- let ci = ck._2
537- let cl = ch[at]
538- let cm = ((cl - bO(bf, at, ch, cb)) - 1)
539- $Tuple2(cm, (cd - cm))
541+ let ck = cn._1
542+ let cl = cn._2
543+ let co = ck[aw]
544+ let cp = ((co - bR(bi, aw, ck, ce)) - 1)
545+ $Tuple2(cp, (cg - cp))
540546 }
541547
542548
543-func cn (aS) = {
544- let K = aS
545- if ($isInstanceOf(K, "ByteVector"))
549+func cq (aV) = {
550+ let L = aV
551+ if ($isInstanceOf(L, "ByteVector"))
546552 then {
547- let co = K
548- toBase58String(co)
553+ let cr = L
554+ toBase58String(cr)
549555 }
550- else if ($isInstanceOf(K, "Unit"))
556+ else if ($isInstanceOf(L, "Unit"))
551557 then {
552- let cp = K
558+ let cs = L
553559 "WAVES"
554560 }
555561 else throw("Match error")
556562 }
557563
558564
559-func cq (cr,aS) = if (cr)
560- then $Tuple2("lockNeutrino", T)
561- else $Tuple2("unlockNeutrino", T)
565+func ct (cu,aV) = if (cu)
566+ then $Tuple2("lockNeutrino", V)
567+ else $Tuple2("unlockNeutrino", V)
562568
563569
564-func cs (cr,ct,aS) = if (cr)
570+func cv (cu,cw,aV) = if (cu)
565571 then {
566- let cu = cq(cr, aS)
567- let cv = cu._1
568- let cw = cu._2
569- $Tuple4(cv, cw, nil, [AttachedPayment(aS, ct)])
572+ let cx = ct(cu, aV)
573+ let cy = cx._1
574+ let cz = cx._2
575+ $Tuple4(cy, cz, nil, [AttachedPayment(aV, cw)])
570576 }
571577 else {
572- let cx = cq(cr, aS)
573- let cv = cx._1
574- let cw = cx._2
575- $Tuple4(cv, cw, [ct, toBase58String(aS)], nil)
578+ let cA = ct(cu, aV)
579+ let cy = cA._1
580+ let cz = cA._2
581+ $Tuple4(cy, cz, [cw, toBase58String(aV)], nil)
576582 }
577583
578584
579-func cr (ct,cy) = if (containsElement(Y, cy))
585+func cu (cw,cB) = if (containsElement(aa, cB))
580586 then {
581- let cz = cs(true, ct, fromBase58String(cy))
582- let cv = cz._1
583- let cA = cz._2
584- let cB = cz._3
585- let cC = cz._4
586- invoke(cA, cv, cB, cC)
587+ let cC = cv(true, cw, fromBase58String(cB))
588+ let cy = cC._1
589+ let cD = cC._2
590+ let cE = cC._3
591+ let cF = cC._4
592+ invoke(cD, cy, cE, cF)
587593 }
588594 else 0
589595
590596
591-func cD (ct,cy) = if (containsElement(Y, cy))
597+func cG (cw,cB) = if (containsElement(aa, cB))
592598 then {
593- let cE = cs(false, ct, fromBase58String(cy))
594- let cv = cE._1
595- let cA = cE._2
596- let cB = cE._3
597- let cC = cE._4
598- invoke(cA, cv, cB, cC)
599+ let cH = cv(false, cw, fromBase58String(cB))
600+ let cy = cH._1
601+ let cD = cH._2
602+ let cE = cH._3
603+ let cF = cH._4
604+ invoke(cD, cy, cE, cF)
599605 }
600606 else 0
601607
602608
603-func cF (aS) = {
604- let cG = {
605- let K = aS
606- if ($isInstanceOf(K, "ByteVector"))
609+func cI (aV) = {
610+ let cJ = {
611+ let L = aV
612+ if ($isInstanceOf(L, "ByteVector"))
607613 then {
608- let cH = K
609- if ((cH == X))
610- then getInteger(T, ((("rpd_balance_" + toBase58String(cH)) + "_") + toString(this)))
614+ let cK = L
615+ if ((cK == Z))
616+ then getInteger(V, ((("rpd_balance_" + toBase58String(cK)) + "_") + toString(this)))
611617 else 0
612618 }
613- else if ($isInstanceOf(K, "Unit"))
619+ else if ($isInstanceOf(L, "Unit"))
614620 then 0
615621 else throw("Match error")
616622 }
617- let K = cG
618- if ($isInstanceOf(K, "Int"))
623+ let L = cJ
624+ if ($isInstanceOf(L, "Int"))
619625 then {
620- let at = K
621- at
626+ let aw = L
627+ aw
622628 }
623629 else 0
624630 }
625631
626632
627-func cI () = {
628- let cJ = aP()
629- func cK (aR,aS) = {
630- let cL = aR
631- let cM = cL._1
632- let at = cL._2
633- if (cM)
634- then $Tuple2(cM, at)
633+func cL () = {
634+ let cM = aS()
635+ func cN (aU,aV) = {
636+ let cO = aU
637+ let cP = cO._1
638+ let aw = cO._2
639+ if (cP)
640+ then $Tuple2(cP, aw)
635641 else {
636- let cN = (assetBalance(this, fromBase58String(aS)) + cF(fromBase58String(aS)))
637- if ((cJ[at] > cN))
638- then $Tuple2(true, at)
639- else $Tuple2(false, (at + 1))
642+ let cQ = (assetBalance(this, fromBase58String(aV)) + cI(fromBase58String(aV)))
643+ if ((cM[aw] > cQ))
644+ then $Tuple2(true, aw)
645+ else $Tuple2(false, (aw + 1))
640646 }
641647 }
642648
643- let aT = al
644- let aU = size(aT)
645- let aV = $Tuple2(false, 0)
646- func aW (aX,aY) = if ((aY >= aU))
647- then aX
648- else cK(aX, aT[aY])
649+ let aW = ao
650+ let aX = size(aW)
651+ let aY = $Tuple2(false, 0)
652+ func aZ (ba,bb) = if ((bb >= aX))
653+ then ba
654+ else cN(ba, aW[bb])
649655
650- func aZ (aX,aY) = if ((aY >= aU))
651- then aX
656+ func bc (ba,bb) = if ((bb >= aX))
657+ then ba
652658 else throw("List size exceeds 10")
653659
654- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
660+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
655661 }
656662
657663
658-func cO (at) = an(("Suspicious state with asset: " + al[at]))
664+func cR (aw) = aq(("Suspicious state with asset: " + ao[aw]))
659665
660666
661-func cP (bW,cC) = {
662- func cQ (aR,cR) = (aR :+ ScriptTransfer(bW, cR.amount, cR.assetId))
667+func cS (bZ,cF) = {
668+ func cT (aU,cU) = (aU :+ ScriptTransfer(bZ, cU.amount, cU.assetId))
663669
664- let aT = cC
665- let aU = size(aT)
666- let aV = nil
667- func aW (aX,aY) = if ((aY >= aU))
668- then aX
669- else cQ(aX, aT[aY])
670+ let aW = cF
671+ let aX = size(aW)
672+ let aY = nil
673+ func aZ (ba,bb) = if ((bb >= aX))
674+ then ba
675+ else cT(ba, aW[bb])
670676
671- func aZ (aX,aY) = if ((aY >= aU))
672- then aX
677+ func bc (ba,bb) = if ((bb >= aX))
678+ then ba
673679 else throw("List size exceeds 10")
674680
675- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
681+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
676682 }
677683
678684
679-func cS (cT) = {
680- let cU = valueOrErrorMessage(getInteger(this, q), "No dAppThresholdCoef key")
681- let cV = 10000
682- let cW = max(cT)
683- let cX = min(cT)
684- let cY = fraction(cW, cV, cX)
685- if ((cY > (cU * cV)))
685+func cV (cW) = {
686+ let cX = valueOrErrorMessage(getInteger(this, q), "No dAppThresholdCoef key")
687+ let cY = 10000
688+ let cZ = max(cW)
689+ let da = min(cW)
690+ let db = fraction(cZ, cY, da)
691+ if ((db > (cX * cY)))
686692 then throw("New balance in assets of the DApp is less than threshold")
687693 else false
688694 }
689695
690696
691-func cZ (al) = {
692- let da = split(al, ",")
693- if ((size(da) > 10))
697+func dc (ao) = {
698+ let dd = split(ao, ",")
699+ if ((size(dd) > 10))
694700 then throw("To many coins, max coins size 10")
695701 else {
696- func db (dc,aS) = {
697- let dd = valueOrErrorMessage(fromBase58String(aS), ("fromBase58String: " + aS))
698- let de = valueOrErrorMessage(assetInfo(dd), ("assetInfo: " + aS)).decimals
699- if ((de != d))
702+ func de (df,aV) = {
703+ let dg = valueOrErrorMessage(fromBase58String(aV), ("fromBase58String: " + aV))
704+ let dh = valueOrErrorMessage(assetInfo(dg), ("assetInfo: " + aV)).decimals
705+ if ((dh != d))
700706 then throw("wrong decimals")
701707 else false
702708 }
703709
704- let aT = da
705- let aU = size(aT)
706- let aV = false
707- func aW (aX,aY) = if ((aY >= aU))
708- then aX
709- else db(aX, aT[aY])
710+ let aW = dd
711+ let aX = size(aW)
712+ let aY = false
713+ func aZ (ba,bb) = if ((bb >= aX))
714+ then ba
715+ else de(ba, aW[bb])
710716
711- func aZ (aX,aY) = if ((aY >= aU))
712- then aX
717+ func bc (ba,bb) = if ((bb >= aX))
718+ then ba
713719 else throw("List size exceeds 10")
714720
715- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
721+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
716722 }
717723 }
718724
719725
720-func df (dg,dh,di) = {
721- let cM = cI()
722- if (cM._1)
723- then (cO(cM._2) ++ cP(dg.caller, dg.payments))
726+func di (dj,dk,dl) = {
727+ let cP = cL()
728+ if (cP._1)
729+ then (cR(cP._2) ++ cS(dj.caller, dj.payments))
724730 else {
725- let dj = if ((size(dg.payments) > 0))
726- then if ((size(dg.payments) != 1))
731+ let dm = if ((size(dj.payments) > 0))
732+ then if ((size(dj.payments) != 1))
727733 then throw("size(payments) != 1")
728734 else {
729- let dk = dg.payments[0].assetId
730- if ((ac != dk))
735+ let dn = dj.payments[0].assetId
736+ if ((ae != dn))
731737 then throw("unknown payment token")
732- else dg.payments[0].amount
738+ else dj.payments[0].amount
733739 }
734740 else 0
735- let dl = (dj + di)
736- func dm (aR,dn) = {
737- let do = aR
738- let dp = do._1
739- let at = do._2
740- let dq = fraction(dn, dl, ad)
741- if (aA((dq >= dh[at])))
741+ let do = (dm + dl)
742+ func dp (aU,dq) = {
743+ let dr = aU
744+ let ds = dr._1
745+ let aw = dr._2
746+ let dt = fraction(dq, do, af)
747+ if (aD((dt >= dk[aw])))
742748 then throw("Withdrawal resulted in fewer coins than expected")
743749 else {
744- let dr = cD(dq, al[at])
745- if ((dr == dr))
746- then $Tuple2((dp ++ [IntegerEntry((al[at] + i), (dn - dq)), ScriptTransfer(dg.caller, dq, fromBase58String(al[at]))]), (at + 1))
750+ let du = cG(dt, ao[aw])
751+ if ((du == du))
752+ then $Tuple2((ds ++ [IntegerEntry((ao[aw] + i), (dq - dt)), ScriptTransfer(dj.caller, dt, fromBase58String(ao[aw]))]), (aw + 1))
747753 else throw("Strict value is not equal to itself.")
748754 }
749755 }
750756
751- let ds = {
752- let aT = aP()
753- let aU = size(aT)
754- let aV = $Tuple2(nil, 0)
755- func aW (aX,aY) = if ((aY >= aU))
756- then aX
757- else dm(aX, aT[aY])
757+ let dv = {
758+ let aW = aS()
759+ let aX = size(aW)
760+ let aY = $Tuple2(nil, 0)
761+ func aZ (ba,bb) = if ((bb >= aX))
762+ then ba
763+ else dp(ba, aW[bb])
758764
759- func aZ (aX,aY) = if ((aY >= aU))
760- then aX
765+ func bc (ba,bb) = if ((bb >= aX))
766+ then ba
761767 else throw("List size exceeds 10")
762768
763- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
769+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
764770 }
765- let dp = ds._1
766- let at = ds._2
767- (dp ++ [Burn(ac, dl), IntegerEntry(o, (ad - dl))])
771+ let ds = dv._1
772+ let aw = dv._2
773+ (ds ++ [Burn(ae, do), IntegerEntry(o, (af - do))])
768774 }
769775 }
770776
771777
772-func dt (dg,du,dv,di) = {
773- let cM = cI()
774- if (cM._1)
775- then (cO(cM._2) ++ cP(dg.originCaller, dg.payments))
778+func dw (dj,dx,dy,dl) = {
779+ let cP = cL()
780+ if (cP._1)
781+ then (cR(cP._2) ++ cS(dj.originCaller, dj.payments))
776782 else {
777- let dj = if ((size(dg.payments) > 0))
783+ let dm = if ((size(dj.payments) > 0))
778784 then {
779- let dk = dg.payments[0].assetId
780- if ((ac != dk))
785+ let dn = dj.payments[0].assetId
786+ if ((ae != dn))
781787 then throw("unknown payment token")
782- else dg.payments[0].amount
788+ else dj.payments[0].amount
783789 }
784790 else 0
785- let dw = valueOrErrorMessage(indexOf(al, du), "unknown token out")
786- let dx = fromBase58String(du)
787- let dl = (dj + di)
788- let bb = aP()
789- let dy = bU(bb, dl, dw, dg.originCaller)
790- let cm = dy._1
791- let dz = dy._2
792- if (aA((cm >= dv)))
791+ let dz = valueOrErrorMessage(indexOf(ao, dx), "unknown token out")
792+ let dA = fromBase58String(dx)
793+ let do = (dm + dl)
794+ let be = aS()
795+ let dB = bX(be, do, dz, dj.originCaller)
796+ let cp = dB._1
797+ let dC = dB._2
798+ if (aD((cp >= dy)))
793799 then throw("Not enough coins removed")
794800 else {
795- let dA = fraction(dz, ag, ae)
796- let dB = (cm + dz)
797- func dC (aR,dD) = {
798- let dE = aR
799- let cT = dE._1
800- let at = dE._2
801- if ((at == dw))
802- then $Tuple2((cT :+ (dD - dB)), (at + 1))
803- else $Tuple2((cT :+ dD), (at + 1))
801+ let dD = fraction(dC, ai, ag)
802+ let dE = fraction(dC, aj, ag)
803+ let dF = (cp + dC)
804+ func dG (aU,dH) = {
805+ let dI = aU
806+ let cW = dI._1
807+ let aw = dI._2
808+ if ((aw == dz))
809+ then $Tuple2((cW :+ (dH - dF)), (aw + 1))
810+ else $Tuple2((cW :+ dH), (aw + 1))
804811 }
805812
806- let dF = {
807- let aT = bb
808- let aU = size(aT)
809- let aV = $Tuple2(nil, 0)
810- func aW (aX,aY) = if ((aY >= aU))
811- then aX
812- else dC(aX, aT[aY])
813+ let dJ = {
814+ let aW = be
815+ let aX = size(aW)
816+ let aY = $Tuple2(nil, 0)
817+ func aZ (ba,bb) = if ((bb >= aX))
818+ then ba
819+ else dG(ba, aW[bb])
813820
814- func aZ (aX,aY) = if ((aY >= aU))
815- then aX
821+ func bc (ba,bb) = if ((bb >= aX))
822+ then ba
816823 else throw("List size exceeds 10")
817824
818- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
825+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
819826 }
820- let cT = dF._1
821- let dG = dF._2
822- if (cS(cT))
827+ let cW = dJ._1
828+ let dK = dJ._2
829+ if (cV(cW))
823830 then throw()
824831 else {
825- let dr = cD(dB, du)
826- if ((dr == dr))
832+ let du = cG(dF, dx)
833+ if ((du == du))
827834 then {
828- let dH = (dz - dA)
829- let dI = if ((dH > 0))
830- then invoke(W, "airDrop", nil, [AttachedPayment(dx, dH)])
835+ let dL = ((dC - dD) - dE)
836+ let dM = if ((dL > 0))
837+ then invoke(Y, "airDrop", nil, [AttachedPayment(dA, dL)])
831838 else 0
832- if ((dI == dI))
833- then [ScriptTransfer(dg.originCaller, cm, dx), IntegerEntry((al[dw] + i), (bb[dw] - dB)), Burn(ac, dl), ScriptTransfer(R, dA, dx), IntegerEntry(o, (ad - dl))]
839+ if ((dM == dM))
840+ then [ScriptTransfer(dj.originCaller, cp, dA), IntegerEntry((ao[dz] + i), (be[dz] - dF)), Burn(ae, do), ScriptTransfer(S, dD, dA), ScriptTransfer(T, dE, dA), IntegerEntry(o, (af - do))]
834841 else throw("Strict value is not equal to itself.")
835842 }
836843 else throw("Strict value is not equal to itself.")
840847 }
841848
842849
843-@Callable(dg)
844-func D (bb,bf) = {
845- let bs = bh(bb, bf)
846- $Tuple2([IntegerEntry("D", bs)], bs)
850+@Callable(dj)
851+func D (be,bi) = {
852+ let bv = bk(be, bi)
853+ $Tuple2([IntegerEntry("D", bv)], bv)
847854 }
848855
849856
850857
851-@Callable(dg)
852-func init (al,aK,dJ) = if (!(isDataStorageUntouched(this)))
858+@Callable(dj)
859+func init (ao,aN,dN) = if (!(isDataStorageUntouched(this)))
853860 then throw("Already initialized")
854- else if ((0 >= aK))
861+ else if ((0 >= aN))
855862 then throw("Amp must be must > 0")
856- else if ((0 >= dJ))
863+ else if ((0 >= dN))
857864 then throw("dApp Threshold Coef must be > 0")
858865 else {
859- let dK = "s_Multi_USD"
860- let dL = ("ShareToken of SwopFi protocol for MultiStable USD pool at address " + toString(this))
861- let dM = Issue(dK, dL, 0, 6, true)
862- let dN = calculateAssetId(dM)
863- if (cZ(al))
866+ let dO = "s_Multi_USD"
867+ let dP = ("ShareToken of SwopFi protocol for MultiStable USD pool at address " + toString(this))
868+ let dQ = Issue(dO, dP, 0, 6, true)
869+ let dR = calculateAssetId(dQ)
870+ if (dc(ao))
864871 then throw()
865- else [StringEntry(g, f), StringEntry(h, al), IntegerEntry("initial_A", aK), IntegerEntry("future_A", aK), IntegerEntry(p, getIntegerValue(H, "base_fee_flat")), StringEntry(n, toBase58String(dN)), IntegerEntry(o, 0), IntegerEntry(q, dJ), BooleanEntry(j, true), dM]
872+ else [StringEntry(g, f), StringEntry(h, ao), IntegerEntry("initial_A", aN), IntegerEntry("future_A", aN), IntegerEntry(p, getIntegerValue(I, "base_fee_flat")), StringEntry(n, toBase58String(dR)), IntegerEntry(o, 0), IntegerEntry(q, dN), BooleanEntry(j, true), dQ]
866873 }
867874
868875
869876
870-@Callable(dg)
871-func addLiquidity (dO,dP,dQ) = valueOrElse(aq(), valueOrElse(ar(), {
872- let bf = aK()
873- let bb = aP()
874- let ca = if ((ad == 0))
877+@Callable(dj)
878+func addLiquidity (dS,dT,dU) = valueOrElse(at(), valueOrElse(au(), {
879+ let bi = aN()
880+ let be = aS()
881+ let cd = if ((af == 0))
875882 then 0
876- else bv(bb, bf)
877- let dR = if (if ((dQ > 0))
878- then (dg.payments[(size(dg.payments) - 1)].assetId == unit)
883+ else by(be, bi)
884+ let dV = if (if ((dU > 0))
885+ then (dj.payments[(size(dj.payments) - 1)].assetId == unit)
879886 else false)
880- then $Tuple2(removeByIndex(dg.payments, (size(dg.payments) - 1)), [dg.payments[(size(dg.payments) - 1)]])
881- else $Tuple2(dg.payments, nil)
882- let cC = dR._1
883- let dS = dR._2
884- let dT = size(cC)
885- func dU (dV) = if ((dT > am))
886- then throw(("payments size > " + toString(am)))
887- else if ((1 > dT))
887+ then $Tuple2(removeByIndex(dj.payments, (size(dj.payments) - 1)), [dj.payments[(size(dj.payments) - 1)]])
888+ else $Tuple2(dj.payments, nil)
889+ let cF = dV._1
890+ let dW = dV._2
891+ let dX = size(cF)
892+ func dY (dZ) = if ((dX > ap))
893+ then throw(("payments size > " + toString(ap)))
894+ else if ((1 > dX))
888895 then throw("payments size < 1")
889- else if (if ((ad == 0))
890- then (am != dT)
896+ else if (if ((af == 0))
897+ then (ap != dX)
891898 else false)
892899 then throw("initial deposit requires all coins")
893900 else {
894- func dW (aR,cR) = if (containsElement(al, cn(cR.assetId)))
901+ func ea (aU,cU) = if (containsElement(ao, cq(cU.assetId)))
895902 then true
896903 else throw("Invalid asset in payment")
897904
898- let aT = cC
899- let aU = size(aT)
900- let aV = false
901- func aW (aX,aY) = if ((aY >= aU))
902- then aX
903- else dW(aX, aT[aY])
905+ let aW = cF
906+ let aX = size(aW)
907+ let aY = false
908+ func aZ (ba,bb) = if ((bb >= aX))
909+ then ba
910+ else ea(ba, aW[bb])
904911
905- func aZ (aX,aY) = if ((aY >= aU))
906- then aX
912+ func bc (ba,bb) = if ((bb >= aX))
913+ then ba
907914 else throw("List size exceeds 10")
908915
909- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
916+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
910917 }
911918
912- if (!(dU(dT)))
919+ if (!(dY(dX)))
913920 then throw()
914921 else {
915- let cM = cI()
916- if (cM._1)
917- then (cO(cM._2) ++ cP(dg.caller, cC))
922+ let cP = cL()
923+ if (cP._1)
924+ then (cR(cP._2) ++ cS(dj.caller, cF))
918925 else {
919- func cQ (aR,aS) = {
920- let dX = aR
921- let cT = dX._1
922- let at = dX._2
923- func dY (dZ,cR) = if ((cn(cR.assetId) == aS))
924- then (dZ + cR.amount)
925- else dZ
926+ func cT (aU,aV) = {
927+ let eb = aU
928+ let cW = eb._1
929+ let aw = eb._2
930+ func ec (ed,cU) = if ((cq(cU.assetId) == aV))
931+ then (ed + cU.amount)
932+ else ed
926933
927- let ea = {
928- let aT = cC
929- let aU = size(aT)
930- let aV = bb[at]
931- func aW (aX,aY) = if ((aY >= aU))
932- then aX
933- else dY(aX, aT[aY])
934+ let ee = {
935+ let aW = cF
936+ let aX = size(aW)
937+ let aY = be[aw]
938+ func aZ (ba,bb) = if ((bb >= aX))
939+ then ba
940+ else ec(ba, aW[bb])
934941
935- func aZ (aX,aY) = if ((aY >= aU))
936- then aX
942+ func bc (ba,bb) = if ((bb >= aX))
943+ then ba
937944 else throw("List size exceeds 10")
938945
939- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
946+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
940947 }
941- $Tuple2((cT :+ ea), (at + 1))
948+ $Tuple2((cW :+ ee), (aw + 1))
942949 }
943950
944- let eb = {
945- let aT = al
946- let aU = size(aT)
947- let aV = $Tuple2(nil, 0)
948- func aW (aX,aY) = if ((aY >= aU))
949- then aX
950- else cQ(aX, aT[aY])
951+ let ef = {
952+ let aW = ao
953+ let aX = size(aW)
954+ let aY = $Tuple2(nil, 0)
955+ func aZ (ba,bb) = if ((bb >= aX))
956+ then ba
957+ else cT(ba, aW[bb])
951958
952- func aZ (aX,aY) = if ((aY >= aU))
953- then aX
959+ func bc (ba,bb) = if ((bb >= aX))
960+ then ba
954961 else throw("List size exceeds 10")
955962
956- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
963+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
957964 }
958- let cT = eb._1
959- let ec = eb._2
960- if (cS(cT))
965+ let cW = ef._1
966+ let eg = ef._2
967+ if (cV(cW))
961968 then throw()
962969 else {
963- let cb = bv(cT, bf)
964- if (aA((cb > ca)))
970+ let ce = by(cW, bi)
971+ if (aD((ce > cd)))
965972 then throw("D1 > D0")
966973 else {
967- let bX = aC(dg.caller)
968- func dm (aR,dZ) = {
969- let ed = aR
970- let ee = ed._1
971- let dp = ed._2
972- let at = ed._3
973- if ((ad > 0))
974+ let ca = aF(dj.caller)
975+ func dp (aU,ed) = {
976+ let eh = aU
977+ let ei = eh._1
978+ let ds = eh._2
979+ let aw = eh._3
980+ if ((af > 0))
974981 then {
975- let bY = ((fraction(af, bX, ae, CEILING) * am) / (4 * (am - 1)))
976- let ef = {
977- let eg = fraction(cb, bb[at], ca)
978- let eh = if ((eg > dZ))
979- then (eg - dZ)
980- else (dZ - eg)
981- fraction(bY, eh, ae)
982+ let cb = ((fraction(ah, ca, ag, CEILING) * ap) / (4 * (ap - 1)))
983+ let ej = {
984+ let ek = fraction(ce, be[aw], cd)
985+ let el = if ((ek > ed))
986+ then (ek - ed)
987+ else (ed - ek)
988+ fraction(cb, el, ag)
982989 }
983- let dA = fraction(ef, ag, ae)
984- let ei = (dZ - ef)
985- let ej = (dZ - ef)
986- let ek = (dZ - bb[at])
987- let dH = (ef - dA)
988- let el = if ((ek > 0))
989- then cr((ek - ef), al[at])
990- else cD(ef, al[at])
991- if ((el == el))
990+ let dD = fraction(ej, ai, ag)
991+ let dE = fraction(ej, aj, ag)
992+ let em = (ed - ej)
993+ let en = (ed - ej)
994+ let eo = (ed - be[aw])
995+ let dL = ((ej - dD) - dE)
996+ let ep = if ((eo > 0))
997+ then cu((eo - ej), ao[aw])
998+ else cG(ej, ao[aw])
999+ if ((ep == ep))
9921000 then {
993- let dI = if ((dH > 0))
994- then invoke(W, "airDrop", nil, [AttachedPayment(fromBase58String(al[at]), dH)])
1001+ let dM = if ((dL > 0))
1002+ then invoke(Y, "airDrop", nil, [AttachedPayment(fromBase58String(ao[aw]), dL)])
9951003 else 0
996- if ((dI == dI))
997- then $Tuple3((ee :+ ej), (dp ++ [ScriptTransfer(R, dA, fromBase58String(al[at])), IntegerEntry((al[at] + i), ei)]), (at + 1))
1004+ if ((dM == dM))
1005+ then $Tuple3((ei :+ en), (ds ++ [ScriptTransfer(S, dD, fromBase58String(ao[aw])), ScriptTransfer(T, dE, fromBase58String(ao[aw])), IntegerEntry((ao[aw] + i), em)]), (aw + 1))
9981006 else throw("Strict value is not equal to itself.")
9991007 }
10001008 else throw("Strict value is not equal to itself.")
10011009 }
10021010 else {
1003- let el = cr(dZ, al[at])
1004- if ((el == el))
1005- then $Tuple3((ee :+ dZ), (dp :+ IntegerEntry((al[at] + i), dZ)), (at + 1))
1011+ let ep = cu(ed, ao[aw])
1012+ if ((ep == ep))
1013+ then $Tuple3((ei :+ ed), (ds :+ IntegerEntry((ao[aw] + i), ed)), (aw + 1))
10061014 else throw("Strict value is not equal to itself.")
10071015 }
10081016 }
10091017
1010- let em = {
1011- let aT = cT
1012- let aU = size(aT)
1013- let aV = $Tuple3(nil, nil, 0)
1014- func bq (aX,aY) = if ((aY >= aU))
1015- then aX
1016- else dm(aX, aT[aY])
1018+ let eq = {
1019+ let aW = cW
1020+ let aX = size(aW)
1021+ let aY = $Tuple3(nil, nil, 0)
1022+ func bt (ba,bb) = if ((bb >= aX))
1023+ then ba
1024+ else dp(ba, aW[bb])
10171025
1018- func br (aX,aY) = if ((aY >= aU))
1019- then aX
1026+ func bu (ba,bb) = if ((bb >= aX))
1027+ then ba
10201028 else throw("List size exceeds 10")
10211029
1022- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1030+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10231031 }
1024- let ee = em._1
1025- let dp = em._2
1026- let en = bv(ee, bf)
1027- let eo = if ((ad == 0))
1028- then cb
1029- else fraction(ad, (en - ca), ca)
1030- if (aA((eo >= dO)))
1032+ let ei = eq._1
1033+ let ds = eq._2
1034+ let er = by(ei, bi)
1035+ let es = if ((af == 0))
1036+ then ce
1037+ else fraction(af, (er - cd), cd)
1038+ if (aD((es >= dS)))
10311039 then throw("Slippage screwed you")
1032- else if (dP)
1040+ else if (dT)
10331041 then {
1034- let ep = invoke(this, "reissueShare", [eo], nil)
1035- if ((ep == ep))
1042+ let et = invoke(this, "reissueShare", [es], nil)
1043+ if ((et == et))
10361044 then {
1037- let eq = invoke(V, "lockShareTokensFromPool", [dg.caller.bytes, toString(this), dQ], ([AttachedPayment(ac, eo)] ++ dS))
1038- if ((eq == eq))
1039- then (dp :+ IntegerEntry(o, (ad + eo)))
1045+ let eu = invoke(X, "lockShareTokensFromPool", [dj.caller.bytes, toString(this), dU], ([AttachedPayment(ae, es)] ++ dW))
1046+ if ((eu == eu))
1047+ then (ds :+ IntegerEntry(o, (af + es)))
10401048 else throw("Strict value is not equal to itself.")
10411049 }
10421050 else throw("Strict value is not equal to itself.")
10431051 }
1044- else (dp ++ [Reissue(ac, eo, true), ScriptTransfer(dg.caller, eo, ac), IntegerEntry(o, (ad + eo))])
1052+ else (ds ++ [Reissue(ae, es, true), ScriptTransfer(dj.caller, es, ae), IntegerEntry(o, (af + es))])
10451053 }
10461054 }
10471055 }
10501058
10511059
10521060
1053-@Callable(dg)
1054-func calcMintAmount (cT,aE) = {
1055- let bf = aK()
1056- let bb = aP()
1057- let cb = bv(cT, bf)
1058- if ((ad == 0))
1059- then $Tuple2(nil, cb)
1061+@Callable(dj)
1062+func calcMintAmount (cW,aH) = {
1063+ let bi = aN()
1064+ let be = aS()
1065+ let ce = by(cW, bi)
1066+ if ((af == 0))
1067+ then $Tuple2(nil, ce)
10601068 else {
1061- let ca = bv(bb, bf)
1062- let bX = aC(aE)
1063- func er (aR,dZ) = {
1064- let es = aR
1065- let ee = es._1
1066- let at = es._2
1067- let bY = ((fraction(af, bX, ae, CEILING) * am) / (4 * (am - 1)))
1068- let ef = {
1069- let eg = fraction(cb, bb[at], ca)
1070- let eh = if ((eg > dZ))
1071- then (eg - dZ)
1072- else (dZ - eg)
1073- fraction(bY, eh, ae)
1069+ let cd = by(be, bi)
1070+ let ca = aF(aH)
1071+ func ev (aU,ed) = {
1072+ let ew = aU
1073+ let ei = ew._1
1074+ let aw = ew._2
1075+ let cb = ((fraction(ah, ca, ag, CEILING) * ap) / (4 * (ap - 1)))
1076+ let ej = {
1077+ let ek = fraction(ce, be[aw], cd)
1078+ let el = if ((ek > ed))
1079+ then (ek - ed)
1080+ else (ed - ek)
1081+ fraction(cb, el, ag)
10741082 }
1075- let ej = (dZ - ef)
1076- $Tuple2((ee :+ ej), (at + 1))
1083+ let en = (ed - ej)
1084+ $Tuple2((ei :+ en), (aw + 1))
10771085 }
10781086
1079- let et = {
1080- let aT = cT
1081- let aU = size(aT)
1082- let aV = $Tuple2(nil, 0)
1083- func aW (aX,aY) = if ((aY >= aU))
1084- then aX
1085- else er(aX, aT[aY])
1087+ let ex = {
1088+ let aW = cW
1089+ let aX = size(aW)
1090+ let aY = $Tuple2(nil, 0)
1091+ func aZ (ba,bb) = if ((bb >= aX))
1092+ then ba
1093+ else ev(ba, aW[bb])
10861094
1087- func aZ (aX,aY) = if ((aY >= aU))
1088- then aX
1095+ func bc (ba,bb) = if ((bb >= aX))
1096+ then ba
10891097 else throw("List size exceeds 10")
10901098
1091- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1099+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10921100 }
1093- let ee = et._1
1094- let ec = et._2
1095- let en = bv(ee, bf)
1096- let eu = fraction(ad, (en - ca), ca)
1097- $Tuple2(nil, eu)
1101+ let ei = ex._1
1102+ let eg = ex._2
1103+ let er = by(ei, bi)
1104+ let ey = fraction(af, (er - cd), cd)
1105+ $Tuple2(nil, ey)
10981106 }
10991107 }
11001108
11011109
11021110
1103-@Callable(dg)
1104-func reissueShare (ct) = valueOrElse(au(dg), [Reissue(ac, ct, true)])
1111+@Callable(dj)
1112+func reissueShare (cw) = valueOrElse(ax(dj), [Reissue(ae, cw, true)])
11051113
11061114
11071115
1108-@Callable(dg)
1109-func getDy (ev,ew,ex,ey) = {
1110- let bb = aP()
1111- let ez = valueOrErrorMessage(indexOf(al, ev), "unknown token in")
1112- let eA = valueOrErrorMessage(indexOf(al, ew), "unknown token out")
1113- let bz = (bb[ez] + ex)
1114- let bM = bw(ez, eA, bz, bb)
1115- let cm = ((bb[eA] - bM) - 1)
1116- let bX = aC(Address(fromBase58String(ey)))
1117- let bY = fraction(fraction(af, bX, ae, CEILING), cm, ae)
1118- $Tuple2(nil, $Tuple2((cm - bY), bY))
1116+@Callable(dj)
1117+func getDy (ez,eA,eB,eC) = {
1118+ let be = aS()
1119+ let eD = valueOrErrorMessage(indexOf(ao, ez), "unknown token in")
1120+ let eE = valueOrErrorMessage(indexOf(ao, eA), "unknown token out")
1121+ let bC = (be[eD] + eB)
1122+ let bP = bz(eD, eE, bC, be)
1123+ let cp = ((be[eE] - bP) - 1)
1124+ let ca = aF(Address(fromBase58String(eC)))
1125+ let cb = fraction(fraction(ah, ca, ag, CEILING), cp, ag)
1126+ $Tuple2(nil, $Tuple2((cp - cb), cb))
11191127 }
11201128
11211129
11221130
1123-@Callable(dg)
1124-func exchange (du,eB) = valueOrElse(ar(), valueOrElse(aq(), if ((size(dg.payments) != 1))
1131+@Callable(dj)
1132+func exchange (dx,eF) = valueOrElse(au(), valueOrElse(at(), if ((size(dj.payments) != 1))
11251133 then throw("size(payments) != 1")
11261134 else {
1127- let cM = cI()
1128- if (cM._1)
1129- then (cO(cM._2) ++ cP(dg.caller, dg.payments))
1135+ let cP = cL()
1136+ if (cP._1)
1137+ then (cR(cP._2) ++ cS(dj.caller, dj.payments))
11301138 else {
1131- let cR = dg.payments[0]
1132- let eC = cn(cR.assetId)
1133- let dx = fromBase58String(du)
1134- let ex = cR.amount
1135- let ez = valueOrErrorMessage(indexOf(al, eC), "unknown token in")
1136- let eA = valueOrErrorMessage(indexOf(al, du), "unknown token out")
1137- let bb = aP()
1138- let bz = (bb[ez] + ex)
1139- let bM = bw(ez, eA, bz, bb)
1140- let eD = ((bb[eA] - bM) - 1)
1141- let bX = aC(dg.originCaller)
1142- let bY = fraction(eD, fraction(af, bX, ae, CEILING), ae)
1143- let cm = (eD - bY)
1144- let dA = fraction(bY, ag, ae)
1145- if (aA((cm >= eB)))
1139+ let cU = dj.payments[0]
1140+ let eG = cq(cU.assetId)
1141+ let dA = fromBase58String(dx)
1142+ let eB = cU.amount
1143+ let eD = valueOrErrorMessage(indexOf(ao, eG), "unknown token in")
1144+ let eE = valueOrErrorMessage(indexOf(ao, dx), "unknown token out")
1145+ let be = aS()
1146+ let bC = (be[eD] + eB)
1147+ let bP = bz(eD, eE, bC, be)
1148+ let eH = ((be[eE] - bP) - 1)
1149+ let ca = aF(dj.originCaller)
1150+ let cb = fraction(eH, fraction(ah, ca, ag, CEILING), ag)
1151+ let cp = (eH - cb)
1152+ let dD = fraction(cb, ai, ag)
1153+ let dE = fraction(cb, aj, ag)
1154+ if (aD((cp >= eF)))
11461155 then throw("Exchange resulted in fewer coins than expected")
11471156 else {
1148- func dC (aR,dD) = {
1149- let eE = aR
1150- let cT = eE._1
1151- let at = eE._2
1152- if ((at == ez))
1153- then $Tuple2((cT :+ (dD + ex)), (at + 1))
1154- else if ((at == eA))
1155- then $Tuple2((cT :+ (dD - eD)), (at + 1))
1156- else $Tuple2((cT :+ dD), (at + 1))
1157+ func dG (aU,dH) = {
1158+ let eI = aU
1159+ let cW = eI._1
1160+ let aw = eI._2
1161+ if ((aw == eD))
1162+ then $Tuple2((cW :+ (dH + eB)), (aw + 1))
1163+ else if ((aw == eE))
1164+ then $Tuple2((cW :+ (dH - eH)), (aw + 1))
1165+ else $Tuple2((cW :+ dH), (aw + 1))
11571166 }
11581167
1159- let eF = {
1160- let aT = bb
1161- let aU = size(aT)
1162- let aV = $Tuple2(nil, 0)
1163- func aW (aX,aY) = if ((aY >= aU))
1164- then aX
1165- else dC(aX, aT[aY])
1168+ let eJ = {
1169+ let aW = be
1170+ let aX = size(aW)
1171+ let aY = $Tuple2(nil, 0)
1172+ func aZ (ba,bb) = if ((bb >= aX))
1173+ then ba
1174+ else dG(ba, aW[bb])
11661175
1167- func aZ (aX,aY) = if ((aY >= aU))
1168- then aX
1176+ func bc (ba,bb) = if ((bb >= aX))
1177+ then ba
11691178 else throw("List size exceeds 10")
11701179
1171- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1180+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11721181 }
1173- let cT = eF._1
1174- let at = eF._2
1175- if (cS(cT))
1182+ let cW = eJ._1
1183+ let aw = eJ._2
1184+ if (cV(cW))
11761185 then throw()
11771186 else {
1178- let eq = cr(cR.amount, cn(cR.assetId))
1179- if ((eq == eq))
1187+ let eu = cu(cU.amount, cq(cU.assetId))
1188+ if ((eu == eu))
11801189 then {
1181- let dr = cD(eD, du)
1182- if ((dr == dr))
1190+ let du = cG(eH, dx)
1191+ if ((du == du))
11831192 then {
1184- let dH = (bY - dA)
1185- let dI = if ((dH > 0))
1186- then invoke(W, "airDrop", nil, [AttachedPayment(dx, dH)])
1193+ let dL = ((cb - dD) - dE)
1194+ let dM = if ((dL > 0))
1195+ then invoke(Y, "airDrop", nil, [AttachedPayment(dA, dL)])
11871196 else 0
1188- if ((dI == dI))
1189- then $Tuple2([IntegerEntry((eC + i), bz), IntegerEntry((du + i), (bb[eA] - eD)), ScriptTransfer(dg.caller, cm, dx), ScriptTransfer(R, dA, dx)], [cm, dx])
1197+ if ((dM == dM))
1198+ then $Tuple2([IntegerEntry((eG + i), bC), IntegerEntry((dx + i), (be[eE] - eH)), ScriptTransfer(dj.caller, cp, dA), ScriptTransfer(S, dD, dA), ScriptTransfer(T, dE, dA)], [cp, dA])
11901199 else throw("Strict value is not equal to itself.")
11911200 }
11921201 else throw("Strict value is not equal to itself.")
11991208
12001209
12011210
1202-@Callable(dg)
1203-func withdraw (dh) = valueOrElse(aq(), df(dg, dh, 0))
1211+@Callable(dj)
1212+func withdraw (dk) = valueOrElse(at(), di(dj, dk, 0))
12041213
12051214
12061215
1207-@Callable(dg)
1208-func withdrawWithUnlock (dh,di) = valueOrElse(aq(), if ((0 >= di))
1216+@Callable(dj)
1217+func withdrawWithUnlock (dk,dl) = valueOrElse(at(), if ((0 >= dl))
12091218 then throw("Unlock amount must be positive")
12101219 else {
1211- let eG = invoke(V, "withdrawShareTokensFromPool", [dg.caller.bytes, toString(this), di], nil)
1212- if ((eG == eG))
1213- then df(dg, dh, di)
1220+ let eK = invoke(X, "withdrawShareTokensFromPool", [dj.caller.bytes, toString(this), dl], nil)
1221+ if ((eK == eK))
1222+ then di(dj, dk, dl)
12141223 else throw("Strict value is not equal to itself.")
12151224 })
12161225
12171226
12181227
1219-@Callable(dg)
1220-func calcWithdrawOneCoin (eH,du,aE) = if ((0 >= eH))
1228+@Callable(dj)
1229+func calcWithdrawOneCoin (eL,dx,aH) = if ((0 >= eL))
12211230 then throw("Amount must be positive")
12221231 else {
1223- let at = valueOrErrorMessage(indexOf(al, du), "unknown token out")
1224- $Tuple2(nil, bU(aP(), eH, at, Address(fromBase58String(aE)))._1)
1232+ let aw = valueOrErrorMessage(indexOf(ao, dx), "unknown token out")
1233+ $Tuple2(nil, bX(aS(), eL, aw, Address(fromBase58String(aH)))._1)
12251234 }
12261235
12271236
12281237
1229-@Callable(dg)
1230-func withdrawOneCoin (du,dv) = valueOrElse(ar(), valueOrElse(aq(), if ((size(dg.payments) != 1))
1238+@Callable(dj)
1239+func withdrawOneCoin (dx,dy) = valueOrElse(au(), valueOrElse(at(), if ((size(dj.payments) != 1))
12311240 then throw("size(payments) != 1")
1232- else dt(dg, du, dv, 0)))
1241+ else dw(dj, dx, dy, 0)))
12331242
12341243
12351244
1236-@Callable(dg)
1237-func withdrawOneCoinWithUnlock (du,dv,di) = valueOrElse(ar(), valueOrElse(aq(), if ((0 > di))
1245+@Callable(dj)
1246+func withdrawOneCoinWithUnlock (dx,dy,dl) = valueOrElse(au(), valueOrElse(at(), if ((0 > dl))
12381247 then throw("Unlock amount must be positive")
12391248 else {
1240- let eG = invoke(V, "withdrawShareTokensFromPool", [dg.caller.bytes, toString(this), di], nil)
1241- if ((eG == eG))
1242- then dt(dg, du, dv, di)
1249+ let eK = invoke(X, "withdrawShareTokensFromPool", [dj.caller.bytes, toString(this), dl], nil)
1250+ if ((eK == eK))
1251+ then dw(dj, dx, dy, dl)
12431252 else throw("Strict value is not equal to itself.")
12441253 }))
12451254
12461255
12471256
1248-@Callable(dg)
1249-func A () = $Tuple2(nil, aK())
1257+@Callable(dj)
1258+func A () = $Tuple2(nil, aN())
12501259
12511260
12521261
1253-@Callable(dg)
1262+@Callable(dj)
12541263 func getVirtualPrice () = {
1255- let bs = be(aP(), aK())
1256- $Tuple2(nil, fraction(bs, a, ad))
1264+ let bv = bh(aS(), aN())
1265+ $Tuple2(nil, fraction(bv, a, af))
12571266 }
12581267
12591268
12601269
1261-@Callable(dg)
1262-func calcTokenAmount (eI,eJ) = {
1263- let bf = aK()
1264- let eK = aP()
1265- let ca = bv(eK, bf)
1266- func eL (aR,dn) = {
1267- let eM = aR
1268- let cT = eM._1
1269- let at = eM._2
1270- let dZ = (dn + (if (eJ)
1271- then eI[at]
1272- else -(eI[at])))
1273- $Tuple2((cT :+ dZ), (at + 1))
1270+@Callable(dj)
1271+func calcTokenAmount (eM,eN) = {
1272+ let bi = aN()
1273+ let eO = aS()
1274+ let cd = by(eO, bi)
1275+ func eP (aU,dq) = {
1276+ let eQ = aU
1277+ let cW = eQ._1
1278+ let aw = eQ._2
1279+ let ed = (dq + (if (eN)
1280+ then eM[aw]
1281+ else -(eM[aw])))
1282+ $Tuple2((cW :+ ed), (aw + 1))
12741283 }
12751284
1276- let cT = ( let aT = eK
1277- let aU = size(aT)
1278- let aV = $Tuple2(nil, 0)
1279- func aW (aX,aY) = if ((aY >= aU))
1280- then aX
1281- else eL(aX, aT[aY])
1285+ let cW = ( let aW = eO
1286+ let aX = size(aW)
1287+ let aY = $Tuple2(nil, 0)
1288+ func aZ (ba,bb) = if ((bb >= aX))
1289+ then ba
1290+ else eP(ba, aW[bb])
12821291
1283- func aZ (aX,aY) = if ((aY >= aU))
1284- then aX
1292+ func bc (ba,bb) = if ((bb >= aX))
1293+ then ba
12851294 else throw("List size exceeds 10")
12861295
1287- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10))._1
1288- let cb = bv(cT, bf)
1289- let eN = if (eJ)
1290- then (cb - ca)
1291- else (ca - cb)
1292- $Tuple2(nil, fraction(eN, ad, ca))
1296+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10))._1
1297+ let ce = by(cW, bi)
1298+ let eR = if (eN)
1299+ then (ce - cd)
1300+ else (cd - ce)
1301+ $Tuple2(nil, fraction(eR, af, cd))
12931302 }
12941303
12951304
12961305
1297-@Callable(dg)
1298-func rampA (eO,eP) = valueOrElse(aq(), valueOrElse(as(dg), if (aA((az >= (aj + e))))
1306+@Callable(dj)
1307+func rampA (eS,eT) = valueOrElse(at(), valueOrElse(av(dj), if (aD((aC >= (am + e))))
12991308 then throw("too often")
1300- else if (aA((eP >= (az + e))))
1309+ else if (aD((eT >= (aC + e))))
13011310 then throw("insufficient time")
13021311 else {
1303- let eQ = aK()
1304- if (aA(if ((eO > 0))
1305- then (b > eO)
1312+ let eU = aN()
1313+ if (aD(if ((eS > 0))
1314+ then (b > eS)
13061315 else false))
13071316 then throw("out of base range")
1308- else if (aA(if (if ((eO >= eQ))
1309- then ((eQ * c) >= eO)
1317+ else if (aD(if (if ((eS >= eU))
1318+ then ((eU * c) >= eS)
13101319 else false)
13111320 then true
1312- else if ((eQ > eO))
1313- then ((eO * c) >= eQ)
1321+ else if ((eU > eS))
1322+ then ((eS * c) >= eU)
13141323 else false))
13151324 then throw("out of range")
1316- else [IntegerEntry("initial_A", eQ), IntegerEntry("future_A", eO), IntegerEntry("initial_A_time", az), IntegerEntry("future_A_time", eP)]
1325+ else [IntegerEntry("initial_A", eU), IntegerEntry("future_A", eS), IntegerEntry("initial_A_time", aC), IntegerEntry("future_A_time", eT)]
13171326 }))
13181327
13191328
13201329
1321-@Callable(dg)
1322-func stopRampA () = valueOrElse(aq(), valueOrElse(as(dg), {
1323- let eR = aK()
1324-[IntegerEntry("initial_A", eR), IntegerEntry("future_A", eR), IntegerEntry("initial_A_time", az), IntegerEntry("future_A_time", az)]
1330+@Callable(dj)
1331+func stopRampA () = valueOrElse(at(), valueOrElse(av(dj), {
1332+ let eV = aN()
1333+[IntegerEntry("initial_A", eV), IntegerEntry("future_A", eV), IntegerEntry("initial_A_time", aC), IntegerEntry("future_A_time", aC)]
13251334 }))
13261335
13271336
13281337
1329-@Callable(dg)
1330-func shutdown () = valueOrElse(as(dg), if (!(Z))
1338+@Callable(dj)
1339+func shutdown () = valueOrElse(av(dj), if (!(ab))
13311340 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
1332- else an("Paused by admin"))
1341+ else aq("Paused by admin"))
13331342
13341343
13351344
1336-@Callable(dg)
1337-func activate () = valueOrElse(as(dg), if (Z)
1338- then ap()
1345+@Callable(dj)
1346+func activate () = valueOrElse(av(dj), if (ab)
1347+ then as()
13391348 else [BooleanEntry(j, true), DeleteEntry(m)])
13401349
13411350
13421351
1343-@Callable(dg)
1344-func takeIntoAccountExtraFunds () = valueOrElse(aq(), {
1345- let eS = if (containsElement(al, toBase58String(X)))
1346- then invoke(T, "claimRewards", nil, nil)
1352+@Callable(dj)
1353+func takeIntoAccountExtraFunds () = valueOrElse(at(), {
1354+ let eW = if (containsElement(ao, toBase58String(Z)))
1355+ then invoke(V, "claimRewards", nil, nil)
13471356 else 0
1348- if ((eS == eS))
1349- then if ((dg.caller != R))
1357+ if ((eW == eW))
1358+ then if ((dj.caller != S))
13501359 then throw("Only the wallet can call this function")
13511360 else {
1352- let eK = aP()
1353- func eT (aR,aS) = {
1354- let eU = aR
1355- let eV = eU._1
1356- let at = eU._2
1357- let eW = fromBase58String(aS)
1358- let eX = (assetBalance(this, eW) + cF(eW))
1359- let eY = (eX - eK[at])
1360- if ((0 > eY))
1361- then an(("Enroll amount negative for asset" + aS))
1361+ let eO = aS()
1362+ func eX (aU,aV) = {
1363+ let eY = aU
1364+ let eZ = eY._1
1365+ let aw = eY._2
1366+ let fa = fromBase58String(aV)
1367+ let fb = (assetBalance(this, fa) + cI(fa))
1368+ let fc = (fb - eO[aw])
1369+ if ((0 > fc))
1370+ then aq(("Enroll amount negative for asset" + aV))
13621371 else {
1363- let dI = if ((eY > 0))
1364- then invoke(W, "airDrop", nil, [AttachedPayment(eW, eY)])
1372+ let dM = if ((fc > 0))
1373+ then invoke(Y, "airDrop", nil, [AttachedPayment(fa, fc)])
13651374 else 0
1366- if ((dI == dI))
1367- then $Tuple2((eV + eY), (at + 1))
1375+ if ((dM == dM))
1376+ then $Tuple2((eZ + fc), (aw + 1))
13681377 else throw("Strict value is not equal to itself.")
13691378 }
13701379 }
13711380
1372- let ec = {
1373- let aT = al
1374- let aU = size(aT)
1375- let aV = $Tuple2(0, 0)
1376- func aW (aX,aY) = if ((aY >= aU))
1377- then aX
1378- else eT(aX, aT[aY])
1381+ let eg = {
1382+ let aW = ao
1383+ let aX = size(aW)
1384+ let aY = $Tuple2(0, 0)
1385+ func aZ (ba,bb) = if ((bb >= aX))
1386+ then ba
1387+ else eX(ba, aW[bb])
13791388
1380- func aZ (aX,aY) = if ((aY >= aU))
1381- then aX
1389+ func bc (ba,bb) = if ((bb >= aX))
1390+ then ba
13821391 else throw("List size exceeds 10")
13831392
1384- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1393+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
13851394 }
1386- if ((ec._1 == 0))
1395+ if ((eg._1 == 0))
13871396 then throw("No money to take")
13881397 else nil
13891398 }
13911400 })
13921401
13931402
1394-@Verifier(eZ)
1395-func fa () = {
1396- let fb = {
1397- let fc = if (sigVerify(eZ.bodyBytes, eZ.proofs[0], N))
1403+@Verifier(fd)
1404+func fe () = {
1405+ let ff = {
1406+ let fg = if (sigVerify(fd.bodyBytes, fd.proofs[0], O))
13981407 then 1
13991408 else 0
1400- let fd = if (sigVerify(eZ.bodyBytes, eZ.proofs[1], O))
1409+ let fh = if (sigVerify(fd.bodyBytes, fd.proofs[1], P))
14011410 then 1
14021411 else 0
1403- let fe = if (sigVerify(eZ.bodyBytes, eZ.proofs[2], P))
1412+ let fi = if (sigVerify(fd.bodyBytes, fd.proofs[2], Q))
14041413 then 1
14051414 else 0
1406- (((fc + fd) + fe) >= 2)
1415+ (((fg + fh) + fi) >= 2)
14071416 }
1408- let K = eZ
1409- if ($isInstanceOf(K, "InvokeScriptTransaction"))
1417+ let L = fd
1418+ if ($isInstanceOf(L, "InvokeScriptTransaction"))
14101419 then {
1411- let el = K
1412- let ff = if ((el.dApp == this))
1413- then (el.function == "takeIntoAccountExtraFunds")
1420+ let ep = L
1421+ let fj = if ((ep.dApp == this))
1422+ then (ep.function == "takeIntoAccountExtraFunds")
14141423 else false
1415- let fg = if (if (if (sigVerify(eZ.bodyBytes, eZ.proofs[0], N))
1424+ let fk = if (if (if (sigVerify(fd.bodyBytes, fd.proofs[0], O))
14161425 then true
1417- else sigVerify(eZ.bodyBytes, eZ.proofs[0], O))
1426+ else sigVerify(fd.bodyBytes, fd.proofs[0], P))
14181427 then true
1419- else sigVerify(eZ.bodyBytes, eZ.proofs[0], P))
1428+ else sigVerify(fd.bodyBytes, fd.proofs[0], Q))
14201429 then true
1421- else sigVerify(eZ.bodyBytes, eZ.proofs[0], Q)
1422- if (if (ff)
1423- then fg
1430+ else sigVerify(fd.bodyBytes, fd.proofs[0], R)
1431+ if (if (fj)
1432+ then fk
14241433 else false)
14251434 then true
1426- else fb
1435+ else ff
14271436 }
1428- else fb
1437+ else ff
14291438 }
14301439
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000000
55
66 let b = 1000000
77
88 let c = 10
99
1010 let d = 6
1111
1212 let e = (86400 / 60)
1313
1414 let f = "3.0.0"
1515
1616 let g = "version"
1717
1818 let h = "asset_ids"
1919
2020 let i = "_balance"
2121
2222 let j = "active"
2323
2424 let k = "active_all_contracts"
2525
2626 let l = "deprecated_"
2727
2828 let m = "shutdown_cause"
2929
3030 let n = "share_asset_id"
3131
3232 let o = "share_asset_supply"
3333
3434 let p = "commission"
3535
3636 let q = "dAppThresholdCoef"
3737
3838 let r = "staking_usdnnsbt_address"
3939
4040 let s = "discounts"
4141
4242 let t = "discount_values"
4343
4444 let u = "_SWOP_amount"
4545
4646 let v = "_GSwop_amount"
4747
4848 let w = "admin_pub_1"
4949
5050 let x = "admin_pub_2"
5151
5252 let y = "admin_pub_3"
5353
5454 let z = "admin_invoke_pub"
5555
5656 let B = "money_box_address"
5757
58-let C = "governance_address"
58+let C = "team_box_address"
5959
60-let E = "voting_address"
60+let E = "governance_address"
6161
62-let F = "farming_address"
62+let F = "voting_address"
6363
64-let G = "lp_farming"
64+let G = "farming_address"
6565
66-let H = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
66+let H = "lp_farming"
6767
68-func I (J) = {
69- let K = getString(H, J)
70- if ($isInstanceOf(K, "String"))
68+let I = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
69+
70+func J (K) = {
71+ let L = getString(I, K)
72+ if ($isInstanceOf(L, "String"))
7173 then {
72- let L = K
73- fromBase58String(L)
74+ let M = L
75+ fromBase58String(M)
7476 }
7577 else {
76- let M = K
77- throw((J + "is empty"))
78+ let N = L
79+ throw((K + "is empty"))
7880 }
7981 }
8082
8183
82-let N = I(w)
84+let O = J(w)
8385
84-let O = I(x)
86+let P = J(x)
8587
86-let P = I(y)
88+let Q = J(y)
8789
88-let Q = I(z)
90+let R = J(z)
8991
90-let R = Address(I(B))
92+let S = Address(J(B))
9193
92-let S = Address(I(C))
94+let T = Address(J(C))
9395
94-let T = Address(I(r))
96+let U = Address(J(E))
9597
96-let U = Address(I(E))
98+let V = Address(J(r))
9799
98-let V = Address(I(F))
100+let W = Address(J(F))
99101
100-let W = Address(I(G))
102+let X = Address(J(G))
101103
102-let X = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
104+let Y = Address(J(H))
103105
104-let Y = [toBase58String(X)]
106+let Z = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
105107
106-let Z = getBooleanValue(this, j)
108+let aa = [toBase58String(Z)]
107109
108-let aa = valueOrElse(getBoolean(H, k), true)
110+let ab = getBooleanValue(this, j)
109111
110-let ab = valueOrElse(getBoolean(H, (l + toString(this))), false)
112+let ac = valueOrElse(getBoolean(I, k), true)
111113
112-let ac = fromBase58String(getStringValue(this, n))
114+let ad = valueOrElse(getBoolean(I, (l + toString(this))), false)
113115
114-let ad = getIntegerValue(this, o)
116+let ae = fromBase58String(getStringValue(this, n))
115117
116-let ae = 1000000
118+let af = getIntegerValue(this, o)
117119
118-let af = getIntegerValue(this, p)
120+let ag = 1000000
119121
120-let ag = fraction(40, ae, 100)
122+let ah = getIntegerValue(this, p)
121123
122-let ah = getIntegerValue(this, "initial_A")
124+let ai = fraction(35, ag, 100)
123125
124-let ai = getIntegerValue(this, "future_A")
126+let aj = fraction(10, ag, 100)
125127
126-let aj = valueOrElse(getInteger(this, "initial_A_time"), 0)
128+let ak = getIntegerValue(this, "initial_A")
127129
128-let ak = valueOrElse(getInteger(this, "future_A_time"), 0)
130+let al = getIntegerValue(this, "future_A")
129131
130-let al = split(getStringValue(this, h), ",")
132+let am = valueOrElse(getInteger(this, "initial_A_time"), 0)
131133
132-let am = size(al)
134+let an = valueOrElse(getInteger(this, "future_A_time"), 0)
133135
134-func an (ao) = [BooleanEntry(j, false), StringEntry(m, ao)]
136+let ao = split(getStringValue(this, h), ",")
137+
138+let ap = size(ao)
139+
140+func aq (ar) = [BooleanEntry(j, false), StringEntry(m, ar)]
135141
136142
137-func ap () = throw("DApp is already active")
143+func as () = throw("DApp is already active")
138144
139145
140-func aq () = if (if (Z)
141- then aa
146+func at () = if (if (ab)
147+ then ac
142148 else false)
143149 then unit
144150 else throw("DApp is inactive at this moment")
145151
146152
147-func ar () = if (!(ab))
153+func au () = if (!(ad))
148154 then unit
149155 else throw("Pool is deprecated. Only withdraw action allowed.")
150156
151157
152-func as (at) = if (containsElement([N, O, P], at.callerPublicKey))
158+func av (aw) = if (containsElement([O, P, Q], aw.callerPublicKey))
153159 then unit
154160 else throw("Only admin can call this function")
155161
156162
157-func au (at) = if ((this == at.caller))
163+func ax (aw) = if ((this == aw.caller))
158164 then unit
159165 else throw("Only contract itself can call this function")
160166
161167
162-let av = toBigInt(2)
168+let ay = toBigInt(2)
163169
164-let aw = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
170+let az = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
165171
166-let ax = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
172+let aA = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
167173
168-let ay = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
174+let aB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
169175
170-let az = height
176+let aC = height
171177
172-func aA (aB) = if (aB)
178+func aD (aE) = if (aE)
173179 then false
174180 else true
175181
176182
177-func aC (aD) = {
178- let aE = {
179- let K = aD
180- if ($isInstanceOf(K, "Address"))
183+func aF (aG) = {
184+ let aH = {
185+ let L = aG
186+ if ($isInstanceOf(L, "Address"))
181187 then {
182- let aF = K
183- toString(aF)
188+ let aI = L
189+ toString(aI)
184190 }
185- else if ($isInstanceOf(K, "String"))
191+ else if ($isInstanceOf(L, "String"))
186192 then {
187- let aF = K
188- aF
193+ let aI = L
194+ aI
189195 }
190196 else throw("Unknow type of user Addr")
191197 }
192- let aG = valueOrElse(getInteger(S, (aE + v)), 0)
193- let aH = valueOrElse(getInteger(S, (aE + v)), aG)
194- let aI = split(getStringValue(H, t), ",")
195- let aJ = split(getStringValue(H, s), ",")
196- if (if ((aH >= parseIntValue(aI[0])))
197- then (parseIntValue(aI[1]) > aH)
198+ let aJ = valueOrElse(getInteger(U, (aH + v)), 0)
199+ let aK = valueOrElse(getInteger(U, (aH + v)), aJ)
200+ let aL = split(getStringValue(I, t), ",")
201+ let aM = split(getStringValue(I, s), ",")
202+ if (if ((aK >= parseIntValue(aL[0])))
203+ then (parseIntValue(aL[1]) > aK)
198204 else false)
199- then (ae - parseIntValue(aJ[0]))
200- else if (if ((aH >= parseIntValue(aI[1])))
201- then (parseIntValue(aI[2]) > aH)
205+ then (ag - parseIntValue(aM[0]))
206+ else if (if ((aK >= parseIntValue(aL[1])))
207+ then (parseIntValue(aL[2]) > aK)
202208 else false)
203- then (ae - parseIntValue(aJ[1]))
204- else if (if ((aH >= parseIntValue(aI[2])))
205- then (parseIntValue(aI[3]) > aH)
209+ then (ag - parseIntValue(aM[1]))
210+ else if (if ((aK >= parseIntValue(aL[2])))
211+ then (parseIntValue(aL[3]) > aK)
206212 else false)
207- then (ae - parseIntValue(aJ[2]))
208- else if (if ((aH >= parseIntValue(aI[3])))
209- then (parseIntValue(aI[4]) > aH)
213+ then (ag - parseIntValue(aM[2]))
214+ else if (if ((aK >= parseIntValue(aL[3])))
215+ then (parseIntValue(aL[4]) > aK)
210216 else false)
211- then (ae - parseIntValue(aJ[3]))
212- else if ((aH >= parseIntValue(aI[4])))
213- then (ae - parseIntValue(aJ[4]))
214- else ae
217+ then (ag - parseIntValue(aM[3]))
218+ else if ((aK >= parseIntValue(aL[4])))
219+ then (ag - parseIntValue(aM[4]))
220+ else ag
215221 }
216222
217223
218-func aK () = {
219- let aL = ak
220- let aM = ai
221- if ((aL > az))
224+func aN () = {
225+ let aO = an
226+ let aP = al
227+ if ((aO > aC))
222228 then {
223- let aN = ah
224- let aO = aj
225- if ((aM > aN))
226- then (aN + (((aM - aN) * (az - aO)) / (aL - aO)))
227- else (aN - (((aN - aM) * (az - aO)) / (aL - aO)))
229+ let aQ = ak
230+ let aR = am
231+ if ((aP > aQ))
232+ then (aQ + (((aP - aQ) * (aC - aR)) / (aO - aR)))
233+ else (aQ - (((aQ - aP) * (aC - aR)) / (aO - aR)))
228234 }
229- else aM
235+ else aP
230236 }
231237
232238
233-func aP () = {
234- func aQ (aR,aS) = (aR :+ valueOrElse(getInteger(this, (aS + i)), 0))
239+func aS () = {
240+ func aT (aU,aV) = (aU :+ valueOrElse(getInteger(this, (aV + i)), 0))
235241
236- let aT = al
237- let aU = size(aT)
238- let aV = nil
239- func aW (aX,aY) = if ((aY >= aU))
240- then aX
241- else aQ(aX, aT[aY])
242+ let aW = ao
243+ let aX = size(aW)
244+ let aY = nil
245+ func aZ (ba,bb) = if ((bb >= aX))
246+ then ba
247+ else aT(ba, aW[bb])
242248
243- func aZ (aX,aY) = if ((aY >= aU))
244- then aX
249+ func bc (ba,bb) = if ((bb >= aX))
250+ then ba
245251 else throw("List size exceeds 10")
246252
247- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
253+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
248254 }
249255
250256
251-func ba (bb) = bb
257+func bd (be) = be
252258
253259
254-func bc (aR,bd) = (aR + bd)
260+func bf (aU,bg) = (aU + bg)
255261
256262
257-func be (bb,bf) = {
258- let bg = invoke(this, "D", [bb, bf], nil)
259- if ($isInstanceOf(bg, "Int"))
260- then bg
261- else throw(($getType(bg) + " couldn't be cast to Int"))
263+func bh (be,bi) = {
264+ let bj = invoke(this, "D", [be, bi], nil)
265+ if ($isInstanceOf(bj, "Int"))
266+ then bj
267+ else throw(($getType(bj) + " couldn't be cast to Int"))
262268 }
263269
264270
265-func bh (bb,bf) = {
266- let bi = {
267- let aT = bb
268- let aU = size(aT)
269- let aV = 0
270- func aW (aX,aY) = if ((aY >= aU))
271- then aX
272- else bc(aX, aT[aY])
271+func bk (be,bi) = {
272+ let bl = {
273+ let aW = be
274+ let aX = size(aW)
275+ let aY = 0
276+ func aZ (ba,bb) = if ((bb >= aX))
277+ then ba
278+ else bf(ba, aW[bb])
273279
274- func aZ (aX,aY) = if ((aY >= aU))
275- then aX
280+ func bc (ba,bb) = if ((bb >= aX))
281+ then ba
276282 else throw("List size exceeds 10")
277283
278- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
284+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
279285 }
280- if ((bi == 0))
286+ if ((bl == 0))
281287 then 0
282288 else {
283- let bj = (bf * am)
284- let bk = (toBigInt(bj) * toBigInt(bi))
285- let bl = toBigInt((bj - 1))
286- func bm (aR,at) = if ((aR._2 == true))
287- then aR
289+ let bm = (bi * ap)
290+ let bn = (toBigInt(bm) * toBigInt(bl))
291+ let bo = toBigInt((bm - 1))
292+ func bp (aU,aw) = if ((aU._2 == true))
293+ then aU
288294 else {
289- let bn = aR._1
290- func bo (bp,at) = if ((am > at))
291- then ((bp * bn) / (toBigInt(bb[at]) * toBigInt(am)))
292- else bp
295+ let bq = aU._1
296+ func br (bs,aw) = if ((ap > aw))
297+ then ((bs * bq) / (toBigInt(be[aw]) * toBigInt(ap)))
298+ else bs
293299
294- let bp = {
295- let aT = aw
296- let aU = size(aT)
297- let aV = bn
298- func bq (aX,aY) = if ((aY >= aU))
299- then aX
300- else bo(aX, aT[aY])
300+ let bs = {
301+ let aW = az
302+ let aX = size(aW)
303+ let aY = bq
304+ func bt (ba,bb) = if ((bb >= aX))
305+ then ba
306+ else br(ba, aW[bb])
301307
302- func br (aX,aY) = if ((aY >= aU))
303- then aX
308+ func bu (ba,bb) = if ((bb >= aX))
309+ then ba
304310 else throw("List size exceeds 10")
305311
306- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
312+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
307313 }
308- let bs = fraction((bk + (toBigInt(am) * bp)), bn, ((bl * bn) + (toBigInt((am + 1)) * bp)))
309- if ((bs > bn))
310- then if ((1 >= toInt((bs - bn))))
311- then $Tuple2(bs, true)
312- else $Tuple2(bs, false)
313- else if ((1 >= toInt((bn - bs))))
314- then $Tuple2(bs, true)
315- else $Tuple2(bs, false)
314+ let bv = fraction((bn + (toBigInt(ap) * bs)), bq, ((bo * bq) + (toBigInt((ap + 1)) * bs)))
315+ if ((bv > bq))
316+ then if ((1 >= toInt((bv - bq))))
317+ then $Tuple2(bv, true)
318+ else $Tuple2(bv, false)
319+ else if ((1 >= toInt((bq - bv))))
320+ then $Tuple2(bv, true)
321+ else $Tuple2(bv, false)
316322 }
317323
318- let bt = {
319- let aT = ax
320- let aU = size(aT)
321- let aV = $Tuple2(toBigInt(bi), false)
322- func bq (aX,aY) = if ((aY >= aU))
323- then aX
324- else bm(aX, aT[aY])
324+ let bw = {
325+ let aW = aA
326+ let aX = size(aW)
327+ let aY = $Tuple2(toBigInt(bl), false)
328+ func bt (ba,bb) = if ((bb >= aX))
329+ then ba
330+ else bp(ba, aW[bb])
325331
326- func br (aX,aY) = if ((aY >= aU))
327- then aX
332+ func bu (ba,bb) = if ((bb >= aX))
333+ then ba
328334 else throw("List size exceeds 15")
329335
330- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
336+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
331337 }
332- let bs = bt._1
333- let bu = bt._2
334- if ((bu == false))
335- then throw(("get_D() not finished with " + toString(bs)))
336- else toInt(bs)
338+ let bv = bw._1
339+ let bx = bw._2
340+ if ((bx == false))
341+ then throw(("get_D() not finished with " + toString(bv)))
342+ else toInt(bv)
337343 }
338344 }
339345
340346
341-func bv (bb,bf) = be(ba(bb), bf)
347+func by (be,bi) = bh(bd(be), bi)
342348
343349
344-func bw (bx,by,bz,bA) = if (aA((bx != by)))
350+func bz (bA,bB,bC,bD) = if (aD((bA != bB)))
345351 then throw("same coin")
346- else if (aA(if ((by >= 0))
347- then (bx >= 0)
352+ else if (aD(if ((bB >= 0))
353+ then (bA >= 0)
348354 else false))
349355 then throw("below zero")
350- else if (aA(if ((am > by))
351- then (am > bx)
356+ else if (aD(if ((ap > bB))
357+ then (ap > bA)
352358 else false))
353359 then throw("above N_COINS")
354360 else {
355- let bf = aK()
356- let bs = be(bA, bf)
357- let bj = (bf * am)
358- func bB (aR,at) = {
359- let bC = aR
360- let bD = bC._1
361- let bE = bC._2
362- let bF = if ((bx == at))
363- then bz
364- else bA[at]
365- if (if ((at != by))
366- then (am > at)
361+ let bi = aN()
362+ let bv = bh(bD, bi)
363+ let bm = (bi * ap)
364+ func bE (aU,aw) = {
365+ let bF = aU
366+ let bG = bF._1
367+ let bH = bF._2
368+ let bI = if ((bA == aw))
369+ then bC
370+ else bD[aw]
371+ if (if ((aw != bB))
372+ then (ap > aw)
367373 else false)
368- then $Tuple2((bD + bF), fraction(bE, toBigInt(bs), toBigInt((bF * am))))
369- else $Tuple2(bD, bE)
374+ then $Tuple2((bG + bI), fraction(bH, toBigInt(bv), toBigInt((bI * ap))))
375+ else $Tuple2(bG, bH)
370376 }
371377
372- let bG = {
373- let aT = aw
374- let aU = size(aT)
375- let aV = $Tuple2(0, toBigInt(bs))
376- func aW (aX,aY) = if ((aY >= aU))
377- then aX
378- else bB(aX, aT[aY])
378+ let bJ = {
379+ let aW = az
380+ let aX = size(aW)
381+ let aY = $Tuple2(0, toBigInt(bv))
382+ func aZ (ba,bb) = if ((bb >= aX))
383+ then ba
384+ else bE(ba, aW[bb])
379385
380- func aZ (aX,aY) = if ((aY >= aU))
381- then aX
386+ func bc (ba,bb) = if ((bb >= aX))
387+ then ba
382388 else throw("List size exceeds 10")
383389
384- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
390+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
385391 }
386- let bD = bG._1
387- let bH = bG._2
388- let bE = fraction(bH, toBigInt(bs), toBigInt((bj * am)))
389- let bI = toBigInt(((bD + (bs / bj)) - bs))
390- func bJ (aR,bK) = if ((aR._2 == true))
391- then aR
392+ let bG = bJ._1
393+ let bK = bJ._2
394+ let bH = fraction(bK, toBigInt(bv), toBigInt((bm * ap)))
395+ let bL = toBigInt(((bG + (bv / bm)) - bv))
396+ func bM (aU,bN) = if ((aU._2 == true))
397+ then aU
392398 else {
393- let bL = aR._1
394- let bM = (((bL * bL) + bE) / ((av * bL) + bI))
395- if ((bM > bL))
396- then if ((1 >= toInt((bM - bL))))
397- then $Tuple2(bM, true)
398- else $Tuple2(bM, false)
399- else if ((1 >= toInt((bL - bM))))
400- then $Tuple2(bM, true)
401- else $Tuple2(bM, false)
399+ let bO = aU._1
400+ let bP = (((bO * bO) + bH) / ((ay * bO) + bL))
401+ if ((bP > bO))
402+ then if ((1 >= toInt((bP - bO))))
403+ then $Tuple2(bP, true)
404+ else $Tuple2(bP, false)
405+ else if ((1 >= toInt((bO - bP))))
406+ then $Tuple2(bP, true)
407+ else $Tuple2(bP, false)
402408 }
403409
404- let bN = {
405- let aT = ay
406- let aU = size(aT)
407- let aV = $Tuple2(toBigInt(bs), false)
408- func bq (aX,aY) = if ((aY >= aU))
409- then aX
410- else bJ(aX, aT[aY])
410+ let bQ = {
411+ let aW = aB
412+ let aX = size(aW)
413+ let aY = $Tuple2(toBigInt(bv), false)
414+ func bt (ba,bb) = if ((bb >= aX))
415+ then ba
416+ else bM(ba, aW[bb])
411417
412- func br (aX,aY) = if ((aY >= aU))
413- then aX
418+ func bu (ba,bb) = if ((bb >= aX))
419+ then ba
414420 else throw("List size exceeds 16")
415421
416- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
422+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
417423 }
418- let bM = bN._1
419- let bu = bN._2
420- if ((bu == false))
421- then throw(("getY() not finished with " + toString(bM)))
422- else toInt(bM)
424+ let bP = bQ._1
425+ let bx = bQ._2
426+ if ((bx == false))
427+ then throw(("getY() not finished with " + toString(bP)))
428+ else toInt(bP)
423429 }
424430
425431
426-func bO (bP,bx,bb,bs) = if (aA((bx >= 0)))
432+func bR (bS,bA,be,bv) = if (aD((bA >= 0)))
427433 then throw("i below zero")
428- else if (aA((am > bx)))
434+ else if (aD((ap > bA)))
429435 then throw("i above N_COINS")
430436 else {
431- let bj = (bP * am)
432- func bB (aR,at) = {
433- let bQ = aR
434- let bD = bQ._1
435- let bE = bQ._2
436- let bF = if (if ((bx != at))
437- then (am > at)
437+ let bm = (bS * ap)
438+ func bE (aU,aw) = {
439+ let bT = aU
440+ let bG = bT._1
441+ let bH = bT._2
442+ let bI = if (if ((bA != aw))
443+ then (ap > aw)
438444 else false)
439- then bb[at]
445+ then be[aw]
440446 else 0
441- if (if ((am > at))
442- then (bx != at)
447+ if (if ((ap > aw))
448+ then (bA != aw)
443449 else false)
444- then $Tuple2((bD + bF), fraction(bE, toBigInt(bs), toBigInt((bF * am))))
445- else $Tuple2(bD, bE)
450+ then $Tuple2((bG + bI), fraction(bH, toBigInt(bv), toBigInt((bI * ap))))
451+ else $Tuple2(bG, bH)
446452 }
447453
448- let bR = {
449- let aT = aw
450- let aU = size(aT)
451- let aV = $Tuple2(0, toBigInt(bs))
452- func aW (aX,aY) = if ((aY >= aU))
453- then aX
454- else bB(aX, aT[aY])
454+ let bU = {
455+ let aW = az
456+ let aX = size(aW)
457+ let aY = $Tuple2(0, toBigInt(bv))
458+ func aZ (ba,bb) = if ((bb >= aX))
459+ then ba
460+ else bE(ba, aW[bb])
455461
456- func aZ (aX,aY) = if ((aY >= aU))
457- then aX
462+ func bc (ba,bb) = if ((bb >= aX))
463+ then ba
458464 else throw("List size exceeds 10")
459465
460- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
466+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
461467 }
462- let bD = bR._1
463- let bH = bR._2
464- let bE = fraction(bH, toBigInt(bs), toBigInt((bj * am)))
465- let bI = toBigInt(((bD + (bs / bj)) - bs))
466- func bS (aR,at) = if ((aR._2 == true))
467- then aR
468+ let bG = bU._1
469+ let bK = bU._2
470+ let bH = fraction(bK, toBigInt(bv), toBigInt((bm * ap)))
471+ let bL = toBigInt(((bG + (bv / bm)) - bv))
472+ func bV (aU,aw) = if ((aU._2 == true))
473+ then aU
468474 else {
469- let bL = aR._1
470- let bM = (((bL * bL) + bE) / ((av * bL) + bI))
471- if ((bM > bL))
472- then if ((1 >= toInt((bM - bL))))
473- then $Tuple2(bM, true)
474- else $Tuple2(bM, false)
475- else if ((1 >= toInt((bL - bM))))
476- then $Tuple2(bM, true)
477- else $Tuple2(bM, false)
475+ let bO = aU._1
476+ let bP = (((bO * bO) + bH) / ((ay * bO) + bL))
477+ if ((bP > bO))
478+ then if ((1 >= toInt((bP - bO))))
479+ then $Tuple2(bP, true)
480+ else $Tuple2(bP, false)
481+ else if ((1 >= toInt((bO - bP))))
482+ then $Tuple2(bP, true)
483+ else $Tuple2(bP, false)
478484 }
479485
480- let bT = {
481- let aT = ay
482- let aU = size(aT)
483- let aV = $Tuple2(toBigInt(bs), false)
484- func bq (aX,aY) = if ((aY >= aU))
485- then aX
486- else bS(aX, aT[aY])
486+ let bW = {
487+ let aW = aB
488+ let aX = size(aW)
489+ let aY = $Tuple2(toBigInt(bv), false)
490+ func bt (ba,bb) = if ((bb >= aX))
491+ then ba
492+ else bV(ba, aW[bb])
487493
488- func br (aX,aY) = if ((aY >= aU))
489- then aX
494+ func bu (ba,bb) = if ((bb >= aX))
495+ then ba
490496 else throw("List size exceeds 16")
491497
492- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
498+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
493499 }
494- let bM = bT._1
495- let bu = bT._2
496- if ((bu == false))
497- then throw(("get_y_D() not finished with " + toString(bM)))
498- else toInt(bM)
500+ let bP = bW._1
501+ let bx = bW._2
502+ if ((bx == false))
503+ then throw(("get_y_D() not finished with " + toString(bP)))
504+ else toInt(bP)
499505 }
500506
501507
502-func bU (bb,bV,at,bW) = {
503- let bX = aC(bW)
504- let bf = aK()
505- let bY = ((fraction(af, bX, ae, CEILING) * am) / (4 * (am - 1)))
506- let bZ = ad
507- let ca = be(bb, bf)
508- let cb = (ca - fraction(bV, ca, bZ))
509- let cc = bO(bf, at, bb, cb)
510- let cd = (bb[at] - cc)
511- func ce (aR,cf) = {
512- let cg = aR
513- let ch = cg._1
514- let ci = cg._2
515- let cj = if ((ci == at))
516- then (fraction(cf, cb, ca) - cc)
517- else (cf - fraction(cf, cb, ca))
518- $Tuple2((ch :+ (cf - fraction(bY, cj, ae))), (ci + 1))
508+func bX (be,bY,aw,bZ) = {
509+ let ca = aF(bZ)
510+ let bi = aN()
511+ let cb = ((fraction(ah, ca, ag, CEILING) * ap) / (4 * (ap - 1)))
512+ let cc = af
513+ let cd = bh(be, bi)
514+ let ce = (cd - fraction(bY, cd, cc))
515+ let cf = bR(bi, aw, be, ce)
516+ let cg = (be[aw] - cf)
517+ func ch (aU,ci) = {
518+ let cj = aU
519+ let ck = cj._1
520+ let cl = cj._2
521+ let cm = if ((cl == aw))
522+ then (fraction(ci, ce, cd) - cf)
523+ else (ci - fraction(ci, ce, cd))
524+ $Tuple2((ck :+ (ci - fraction(cb, cm, ag))), (cl + 1))
519525 }
520526
521- let ck = {
522- let aT = bb
523- let aU = size(aT)
524- let aV = $Tuple2(nil, 0)
525- func aW (aX,aY) = if ((aY >= aU))
526- then aX
527- else ce(aX, aT[aY])
527+ let cn = {
528+ let aW = be
529+ let aX = size(aW)
530+ let aY = $Tuple2(nil, 0)
531+ func aZ (ba,bb) = if ((bb >= aX))
532+ then ba
533+ else ch(ba, aW[bb])
528534
529- func aZ (aX,aY) = if ((aY >= aU))
530- then aX
535+ func bc (ba,bb) = if ((bb >= aX))
536+ then ba
531537 else throw("List size exceeds 10")
532538
533- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
539+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
534540 }
535- let ch = ck._1
536- let ci = ck._2
537- let cl = ch[at]
538- let cm = ((cl - bO(bf, at, ch, cb)) - 1)
539- $Tuple2(cm, (cd - cm))
541+ let ck = cn._1
542+ let cl = cn._2
543+ let co = ck[aw]
544+ let cp = ((co - bR(bi, aw, ck, ce)) - 1)
545+ $Tuple2(cp, (cg - cp))
540546 }
541547
542548
543-func cn (aS) = {
544- let K = aS
545- if ($isInstanceOf(K, "ByteVector"))
549+func cq (aV) = {
550+ let L = aV
551+ if ($isInstanceOf(L, "ByteVector"))
546552 then {
547- let co = K
548- toBase58String(co)
553+ let cr = L
554+ toBase58String(cr)
549555 }
550- else if ($isInstanceOf(K, "Unit"))
556+ else if ($isInstanceOf(L, "Unit"))
551557 then {
552- let cp = K
558+ let cs = L
553559 "WAVES"
554560 }
555561 else throw("Match error")
556562 }
557563
558564
559-func cq (cr,aS) = if (cr)
560- then $Tuple2("lockNeutrino", T)
561- else $Tuple2("unlockNeutrino", T)
565+func ct (cu,aV) = if (cu)
566+ then $Tuple2("lockNeutrino", V)
567+ else $Tuple2("unlockNeutrino", V)
562568
563569
564-func cs (cr,ct,aS) = if (cr)
570+func cv (cu,cw,aV) = if (cu)
565571 then {
566- let cu = cq(cr, aS)
567- let cv = cu._1
568- let cw = cu._2
569- $Tuple4(cv, cw, nil, [AttachedPayment(aS, ct)])
572+ let cx = ct(cu, aV)
573+ let cy = cx._1
574+ let cz = cx._2
575+ $Tuple4(cy, cz, nil, [AttachedPayment(aV, cw)])
570576 }
571577 else {
572- let cx = cq(cr, aS)
573- let cv = cx._1
574- let cw = cx._2
575- $Tuple4(cv, cw, [ct, toBase58String(aS)], nil)
578+ let cA = ct(cu, aV)
579+ let cy = cA._1
580+ let cz = cA._2
581+ $Tuple4(cy, cz, [cw, toBase58String(aV)], nil)
576582 }
577583
578584
579-func cr (ct,cy) = if (containsElement(Y, cy))
585+func cu (cw,cB) = if (containsElement(aa, cB))
580586 then {
581- let cz = cs(true, ct, fromBase58String(cy))
582- let cv = cz._1
583- let cA = cz._2
584- let cB = cz._3
585- let cC = cz._4
586- invoke(cA, cv, cB, cC)
587+ let cC = cv(true, cw, fromBase58String(cB))
588+ let cy = cC._1
589+ let cD = cC._2
590+ let cE = cC._3
591+ let cF = cC._4
592+ invoke(cD, cy, cE, cF)
587593 }
588594 else 0
589595
590596
591-func cD (ct,cy) = if (containsElement(Y, cy))
597+func cG (cw,cB) = if (containsElement(aa, cB))
592598 then {
593- let cE = cs(false, ct, fromBase58String(cy))
594- let cv = cE._1
595- let cA = cE._2
596- let cB = cE._3
597- let cC = cE._4
598- invoke(cA, cv, cB, cC)
599+ let cH = cv(false, cw, fromBase58String(cB))
600+ let cy = cH._1
601+ let cD = cH._2
602+ let cE = cH._3
603+ let cF = cH._4
604+ invoke(cD, cy, cE, cF)
599605 }
600606 else 0
601607
602608
603-func cF (aS) = {
604- let cG = {
605- let K = aS
606- if ($isInstanceOf(K, "ByteVector"))
609+func cI (aV) = {
610+ let cJ = {
611+ let L = aV
612+ if ($isInstanceOf(L, "ByteVector"))
607613 then {
608- let cH = K
609- if ((cH == X))
610- then getInteger(T, ((("rpd_balance_" + toBase58String(cH)) + "_") + toString(this)))
614+ let cK = L
615+ if ((cK == Z))
616+ then getInteger(V, ((("rpd_balance_" + toBase58String(cK)) + "_") + toString(this)))
611617 else 0
612618 }
613- else if ($isInstanceOf(K, "Unit"))
619+ else if ($isInstanceOf(L, "Unit"))
614620 then 0
615621 else throw("Match error")
616622 }
617- let K = cG
618- if ($isInstanceOf(K, "Int"))
623+ let L = cJ
624+ if ($isInstanceOf(L, "Int"))
619625 then {
620- let at = K
621- at
626+ let aw = L
627+ aw
622628 }
623629 else 0
624630 }
625631
626632
627-func cI () = {
628- let cJ = aP()
629- func cK (aR,aS) = {
630- let cL = aR
631- let cM = cL._1
632- let at = cL._2
633- if (cM)
634- then $Tuple2(cM, at)
633+func cL () = {
634+ let cM = aS()
635+ func cN (aU,aV) = {
636+ let cO = aU
637+ let cP = cO._1
638+ let aw = cO._2
639+ if (cP)
640+ then $Tuple2(cP, aw)
635641 else {
636- let cN = (assetBalance(this, fromBase58String(aS)) + cF(fromBase58String(aS)))
637- if ((cJ[at] > cN))
638- then $Tuple2(true, at)
639- else $Tuple2(false, (at + 1))
642+ let cQ = (assetBalance(this, fromBase58String(aV)) + cI(fromBase58String(aV)))
643+ if ((cM[aw] > cQ))
644+ then $Tuple2(true, aw)
645+ else $Tuple2(false, (aw + 1))
640646 }
641647 }
642648
643- let aT = al
644- let aU = size(aT)
645- let aV = $Tuple2(false, 0)
646- func aW (aX,aY) = if ((aY >= aU))
647- then aX
648- else cK(aX, aT[aY])
649+ let aW = ao
650+ let aX = size(aW)
651+ let aY = $Tuple2(false, 0)
652+ func aZ (ba,bb) = if ((bb >= aX))
653+ then ba
654+ else cN(ba, aW[bb])
649655
650- func aZ (aX,aY) = if ((aY >= aU))
651- then aX
656+ func bc (ba,bb) = if ((bb >= aX))
657+ then ba
652658 else throw("List size exceeds 10")
653659
654- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
660+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
655661 }
656662
657663
658-func cO (at) = an(("Suspicious state with asset: " + al[at]))
664+func cR (aw) = aq(("Suspicious state with asset: " + ao[aw]))
659665
660666
661-func cP (bW,cC) = {
662- func cQ (aR,cR) = (aR :+ ScriptTransfer(bW, cR.amount, cR.assetId))
667+func cS (bZ,cF) = {
668+ func cT (aU,cU) = (aU :+ ScriptTransfer(bZ, cU.amount, cU.assetId))
663669
664- let aT = cC
665- let aU = size(aT)
666- let aV = nil
667- func aW (aX,aY) = if ((aY >= aU))
668- then aX
669- else cQ(aX, aT[aY])
670+ let aW = cF
671+ let aX = size(aW)
672+ let aY = nil
673+ func aZ (ba,bb) = if ((bb >= aX))
674+ then ba
675+ else cT(ba, aW[bb])
670676
671- func aZ (aX,aY) = if ((aY >= aU))
672- then aX
677+ func bc (ba,bb) = if ((bb >= aX))
678+ then ba
673679 else throw("List size exceeds 10")
674680
675- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
681+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
676682 }
677683
678684
679-func cS (cT) = {
680- let cU = valueOrErrorMessage(getInteger(this, q), "No dAppThresholdCoef key")
681- let cV = 10000
682- let cW = max(cT)
683- let cX = min(cT)
684- let cY = fraction(cW, cV, cX)
685- if ((cY > (cU * cV)))
685+func cV (cW) = {
686+ let cX = valueOrErrorMessage(getInteger(this, q), "No dAppThresholdCoef key")
687+ let cY = 10000
688+ let cZ = max(cW)
689+ let da = min(cW)
690+ let db = fraction(cZ, cY, da)
691+ if ((db > (cX * cY)))
686692 then throw("New balance in assets of the DApp is less than threshold")
687693 else false
688694 }
689695
690696
691-func cZ (al) = {
692- let da = split(al, ",")
693- if ((size(da) > 10))
697+func dc (ao) = {
698+ let dd = split(ao, ",")
699+ if ((size(dd) > 10))
694700 then throw("To many coins, max coins size 10")
695701 else {
696- func db (dc,aS) = {
697- let dd = valueOrErrorMessage(fromBase58String(aS), ("fromBase58String: " + aS))
698- let de = valueOrErrorMessage(assetInfo(dd), ("assetInfo: " + aS)).decimals
699- if ((de != d))
702+ func de (df,aV) = {
703+ let dg = valueOrErrorMessage(fromBase58String(aV), ("fromBase58String: " + aV))
704+ let dh = valueOrErrorMessage(assetInfo(dg), ("assetInfo: " + aV)).decimals
705+ if ((dh != d))
700706 then throw("wrong decimals")
701707 else false
702708 }
703709
704- let aT = da
705- let aU = size(aT)
706- let aV = false
707- func aW (aX,aY) = if ((aY >= aU))
708- then aX
709- else db(aX, aT[aY])
710+ let aW = dd
711+ let aX = size(aW)
712+ let aY = false
713+ func aZ (ba,bb) = if ((bb >= aX))
714+ then ba
715+ else de(ba, aW[bb])
710716
711- func aZ (aX,aY) = if ((aY >= aU))
712- then aX
717+ func bc (ba,bb) = if ((bb >= aX))
718+ then ba
713719 else throw("List size exceeds 10")
714720
715- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
721+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
716722 }
717723 }
718724
719725
720-func df (dg,dh,di) = {
721- let cM = cI()
722- if (cM._1)
723- then (cO(cM._2) ++ cP(dg.caller, dg.payments))
726+func di (dj,dk,dl) = {
727+ let cP = cL()
728+ if (cP._1)
729+ then (cR(cP._2) ++ cS(dj.caller, dj.payments))
724730 else {
725- let dj = if ((size(dg.payments) > 0))
726- then if ((size(dg.payments) != 1))
731+ let dm = if ((size(dj.payments) > 0))
732+ then if ((size(dj.payments) != 1))
727733 then throw("size(payments) != 1")
728734 else {
729- let dk = dg.payments[0].assetId
730- if ((ac != dk))
735+ let dn = dj.payments[0].assetId
736+ if ((ae != dn))
731737 then throw("unknown payment token")
732- else dg.payments[0].amount
738+ else dj.payments[0].amount
733739 }
734740 else 0
735- let dl = (dj + di)
736- func dm (aR,dn) = {
737- let do = aR
738- let dp = do._1
739- let at = do._2
740- let dq = fraction(dn, dl, ad)
741- if (aA((dq >= dh[at])))
741+ let do = (dm + dl)
742+ func dp (aU,dq) = {
743+ let dr = aU
744+ let ds = dr._1
745+ let aw = dr._2
746+ let dt = fraction(dq, do, af)
747+ if (aD((dt >= dk[aw])))
742748 then throw("Withdrawal resulted in fewer coins than expected")
743749 else {
744- let dr = cD(dq, al[at])
745- if ((dr == dr))
746- then $Tuple2((dp ++ [IntegerEntry((al[at] + i), (dn - dq)), ScriptTransfer(dg.caller, dq, fromBase58String(al[at]))]), (at + 1))
750+ let du = cG(dt, ao[aw])
751+ if ((du == du))
752+ then $Tuple2((ds ++ [IntegerEntry((ao[aw] + i), (dq - dt)), ScriptTransfer(dj.caller, dt, fromBase58String(ao[aw]))]), (aw + 1))
747753 else throw("Strict value is not equal to itself.")
748754 }
749755 }
750756
751- let ds = {
752- let aT = aP()
753- let aU = size(aT)
754- let aV = $Tuple2(nil, 0)
755- func aW (aX,aY) = if ((aY >= aU))
756- then aX
757- else dm(aX, aT[aY])
757+ let dv = {
758+ let aW = aS()
759+ let aX = size(aW)
760+ let aY = $Tuple2(nil, 0)
761+ func aZ (ba,bb) = if ((bb >= aX))
762+ then ba
763+ else dp(ba, aW[bb])
758764
759- func aZ (aX,aY) = if ((aY >= aU))
760- then aX
765+ func bc (ba,bb) = if ((bb >= aX))
766+ then ba
761767 else throw("List size exceeds 10")
762768
763- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
769+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
764770 }
765- let dp = ds._1
766- let at = ds._2
767- (dp ++ [Burn(ac, dl), IntegerEntry(o, (ad - dl))])
771+ let ds = dv._1
772+ let aw = dv._2
773+ (ds ++ [Burn(ae, do), IntegerEntry(o, (af - do))])
768774 }
769775 }
770776
771777
772-func dt (dg,du,dv,di) = {
773- let cM = cI()
774- if (cM._1)
775- then (cO(cM._2) ++ cP(dg.originCaller, dg.payments))
778+func dw (dj,dx,dy,dl) = {
779+ let cP = cL()
780+ if (cP._1)
781+ then (cR(cP._2) ++ cS(dj.originCaller, dj.payments))
776782 else {
777- let dj = if ((size(dg.payments) > 0))
783+ let dm = if ((size(dj.payments) > 0))
778784 then {
779- let dk = dg.payments[0].assetId
780- if ((ac != dk))
785+ let dn = dj.payments[0].assetId
786+ if ((ae != dn))
781787 then throw("unknown payment token")
782- else dg.payments[0].amount
788+ else dj.payments[0].amount
783789 }
784790 else 0
785- let dw = valueOrErrorMessage(indexOf(al, du), "unknown token out")
786- let dx = fromBase58String(du)
787- let dl = (dj + di)
788- let bb = aP()
789- let dy = bU(bb, dl, dw, dg.originCaller)
790- let cm = dy._1
791- let dz = dy._2
792- if (aA((cm >= dv)))
791+ let dz = valueOrErrorMessage(indexOf(ao, dx), "unknown token out")
792+ let dA = fromBase58String(dx)
793+ let do = (dm + dl)
794+ let be = aS()
795+ let dB = bX(be, do, dz, dj.originCaller)
796+ let cp = dB._1
797+ let dC = dB._2
798+ if (aD((cp >= dy)))
793799 then throw("Not enough coins removed")
794800 else {
795- let dA = fraction(dz, ag, ae)
796- let dB = (cm + dz)
797- func dC (aR,dD) = {
798- let dE = aR
799- let cT = dE._1
800- let at = dE._2
801- if ((at == dw))
802- then $Tuple2((cT :+ (dD - dB)), (at + 1))
803- else $Tuple2((cT :+ dD), (at + 1))
801+ let dD = fraction(dC, ai, ag)
802+ let dE = fraction(dC, aj, ag)
803+ let dF = (cp + dC)
804+ func dG (aU,dH) = {
805+ let dI = aU
806+ let cW = dI._1
807+ let aw = dI._2
808+ if ((aw == dz))
809+ then $Tuple2((cW :+ (dH - dF)), (aw + 1))
810+ else $Tuple2((cW :+ dH), (aw + 1))
804811 }
805812
806- let dF = {
807- let aT = bb
808- let aU = size(aT)
809- let aV = $Tuple2(nil, 0)
810- func aW (aX,aY) = if ((aY >= aU))
811- then aX
812- else dC(aX, aT[aY])
813+ let dJ = {
814+ let aW = be
815+ let aX = size(aW)
816+ let aY = $Tuple2(nil, 0)
817+ func aZ (ba,bb) = if ((bb >= aX))
818+ then ba
819+ else dG(ba, aW[bb])
813820
814- func aZ (aX,aY) = if ((aY >= aU))
815- then aX
821+ func bc (ba,bb) = if ((bb >= aX))
822+ then ba
816823 else throw("List size exceeds 10")
817824
818- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
825+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
819826 }
820- let cT = dF._1
821- let dG = dF._2
822- if (cS(cT))
827+ let cW = dJ._1
828+ let dK = dJ._2
829+ if (cV(cW))
823830 then throw()
824831 else {
825- let dr = cD(dB, du)
826- if ((dr == dr))
832+ let du = cG(dF, dx)
833+ if ((du == du))
827834 then {
828- let dH = (dz - dA)
829- let dI = if ((dH > 0))
830- then invoke(W, "airDrop", nil, [AttachedPayment(dx, dH)])
835+ let dL = ((dC - dD) - dE)
836+ let dM = if ((dL > 0))
837+ then invoke(Y, "airDrop", nil, [AttachedPayment(dA, dL)])
831838 else 0
832- if ((dI == dI))
833- then [ScriptTransfer(dg.originCaller, cm, dx), IntegerEntry((al[dw] + i), (bb[dw] - dB)), Burn(ac, dl), ScriptTransfer(R, dA, dx), IntegerEntry(o, (ad - dl))]
839+ if ((dM == dM))
840+ then [ScriptTransfer(dj.originCaller, cp, dA), IntegerEntry((ao[dz] + i), (be[dz] - dF)), Burn(ae, do), ScriptTransfer(S, dD, dA), ScriptTransfer(T, dE, dA), IntegerEntry(o, (af - do))]
834841 else throw("Strict value is not equal to itself.")
835842 }
836843 else throw("Strict value is not equal to itself.")
837844 }
838845 }
839846 }
840847 }
841848
842849
843-@Callable(dg)
844-func D (bb,bf) = {
845- let bs = bh(bb, bf)
846- $Tuple2([IntegerEntry("D", bs)], bs)
850+@Callable(dj)
851+func D (be,bi) = {
852+ let bv = bk(be, bi)
853+ $Tuple2([IntegerEntry("D", bv)], bv)
847854 }
848855
849856
850857
851-@Callable(dg)
852-func init (al,aK,dJ) = if (!(isDataStorageUntouched(this)))
858+@Callable(dj)
859+func init (ao,aN,dN) = if (!(isDataStorageUntouched(this)))
853860 then throw("Already initialized")
854- else if ((0 >= aK))
861+ else if ((0 >= aN))
855862 then throw("Amp must be must > 0")
856- else if ((0 >= dJ))
863+ else if ((0 >= dN))
857864 then throw("dApp Threshold Coef must be > 0")
858865 else {
859- let dK = "s_Multi_USD"
860- let dL = ("ShareToken of SwopFi protocol for MultiStable USD pool at address " + toString(this))
861- let dM = Issue(dK, dL, 0, 6, true)
862- let dN = calculateAssetId(dM)
863- if (cZ(al))
866+ let dO = "s_Multi_USD"
867+ let dP = ("ShareToken of SwopFi protocol for MultiStable USD pool at address " + toString(this))
868+ let dQ = Issue(dO, dP, 0, 6, true)
869+ let dR = calculateAssetId(dQ)
870+ if (dc(ao))
864871 then throw()
865- else [StringEntry(g, f), StringEntry(h, al), IntegerEntry("initial_A", aK), IntegerEntry("future_A", aK), IntegerEntry(p, getIntegerValue(H, "base_fee_flat")), StringEntry(n, toBase58String(dN)), IntegerEntry(o, 0), IntegerEntry(q, dJ), BooleanEntry(j, true), dM]
872+ else [StringEntry(g, f), StringEntry(h, ao), IntegerEntry("initial_A", aN), IntegerEntry("future_A", aN), IntegerEntry(p, getIntegerValue(I, "base_fee_flat")), StringEntry(n, toBase58String(dR)), IntegerEntry(o, 0), IntegerEntry(q, dN), BooleanEntry(j, true), dQ]
866873 }
867874
868875
869876
870-@Callable(dg)
871-func addLiquidity (dO,dP,dQ) = valueOrElse(aq(), valueOrElse(ar(), {
872- let bf = aK()
873- let bb = aP()
874- let ca = if ((ad == 0))
877+@Callable(dj)
878+func addLiquidity (dS,dT,dU) = valueOrElse(at(), valueOrElse(au(), {
879+ let bi = aN()
880+ let be = aS()
881+ let cd = if ((af == 0))
875882 then 0
876- else bv(bb, bf)
877- let dR = if (if ((dQ > 0))
878- then (dg.payments[(size(dg.payments) - 1)].assetId == unit)
883+ else by(be, bi)
884+ let dV = if (if ((dU > 0))
885+ then (dj.payments[(size(dj.payments) - 1)].assetId == unit)
879886 else false)
880- then $Tuple2(removeByIndex(dg.payments, (size(dg.payments) - 1)), [dg.payments[(size(dg.payments) - 1)]])
881- else $Tuple2(dg.payments, nil)
882- let cC = dR._1
883- let dS = dR._2
884- let dT = size(cC)
885- func dU (dV) = if ((dT > am))
886- then throw(("payments size > " + toString(am)))
887- else if ((1 > dT))
887+ then $Tuple2(removeByIndex(dj.payments, (size(dj.payments) - 1)), [dj.payments[(size(dj.payments) - 1)]])
888+ else $Tuple2(dj.payments, nil)
889+ let cF = dV._1
890+ let dW = dV._2
891+ let dX = size(cF)
892+ func dY (dZ) = if ((dX > ap))
893+ then throw(("payments size > " + toString(ap)))
894+ else if ((1 > dX))
888895 then throw("payments size < 1")
889- else if (if ((ad == 0))
890- then (am != dT)
896+ else if (if ((af == 0))
897+ then (ap != dX)
891898 else false)
892899 then throw("initial deposit requires all coins")
893900 else {
894- func dW (aR,cR) = if (containsElement(al, cn(cR.assetId)))
901+ func ea (aU,cU) = if (containsElement(ao, cq(cU.assetId)))
895902 then true
896903 else throw("Invalid asset in payment")
897904
898- let aT = cC
899- let aU = size(aT)
900- let aV = false
901- func aW (aX,aY) = if ((aY >= aU))
902- then aX
903- else dW(aX, aT[aY])
905+ let aW = cF
906+ let aX = size(aW)
907+ let aY = false
908+ func aZ (ba,bb) = if ((bb >= aX))
909+ then ba
910+ else ea(ba, aW[bb])
904911
905- func aZ (aX,aY) = if ((aY >= aU))
906- then aX
912+ func bc (ba,bb) = if ((bb >= aX))
913+ then ba
907914 else throw("List size exceeds 10")
908915
909- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
916+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
910917 }
911918
912- if (!(dU(dT)))
919+ if (!(dY(dX)))
913920 then throw()
914921 else {
915- let cM = cI()
916- if (cM._1)
917- then (cO(cM._2) ++ cP(dg.caller, cC))
922+ let cP = cL()
923+ if (cP._1)
924+ then (cR(cP._2) ++ cS(dj.caller, cF))
918925 else {
919- func cQ (aR,aS) = {
920- let dX = aR
921- let cT = dX._1
922- let at = dX._2
923- func dY (dZ,cR) = if ((cn(cR.assetId) == aS))
924- then (dZ + cR.amount)
925- else dZ
926+ func cT (aU,aV) = {
927+ let eb = aU
928+ let cW = eb._1
929+ let aw = eb._2
930+ func ec (ed,cU) = if ((cq(cU.assetId) == aV))
931+ then (ed + cU.amount)
932+ else ed
926933
927- let ea = {
928- let aT = cC
929- let aU = size(aT)
930- let aV = bb[at]
931- func aW (aX,aY) = if ((aY >= aU))
932- then aX
933- else dY(aX, aT[aY])
934+ let ee = {
935+ let aW = cF
936+ let aX = size(aW)
937+ let aY = be[aw]
938+ func aZ (ba,bb) = if ((bb >= aX))
939+ then ba
940+ else ec(ba, aW[bb])
934941
935- func aZ (aX,aY) = if ((aY >= aU))
936- then aX
942+ func bc (ba,bb) = if ((bb >= aX))
943+ then ba
937944 else throw("List size exceeds 10")
938945
939- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
946+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
940947 }
941- $Tuple2((cT :+ ea), (at + 1))
948+ $Tuple2((cW :+ ee), (aw + 1))
942949 }
943950
944- let eb = {
945- let aT = al
946- let aU = size(aT)
947- let aV = $Tuple2(nil, 0)
948- func aW (aX,aY) = if ((aY >= aU))
949- then aX
950- else cQ(aX, aT[aY])
951+ let ef = {
952+ let aW = ao
953+ let aX = size(aW)
954+ let aY = $Tuple2(nil, 0)
955+ func aZ (ba,bb) = if ((bb >= aX))
956+ then ba
957+ else cT(ba, aW[bb])
951958
952- func aZ (aX,aY) = if ((aY >= aU))
953- then aX
959+ func bc (ba,bb) = if ((bb >= aX))
960+ then ba
954961 else throw("List size exceeds 10")
955962
956- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
963+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
957964 }
958- let cT = eb._1
959- let ec = eb._2
960- if (cS(cT))
965+ let cW = ef._1
966+ let eg = ef._2
967+ if (cV(cW))
961968 then throw()
962969 else {
963- let cb = bv(cT, bf)
964- if (aA((cb > ca)))
970+ let ce = by(cW, bi)
971+ if (aD((ce > cd)))
965972 then throw("D1 > D0")
966973 else {
967- let bX = aC(dg.caller)
968- func dm (aR,dZ) = {
969- let ed = aR
970- let ee = ed._1
971- let dp = ed._2
972- let at = ed._3
973- if ((ad > 0))
974+ let ca = aF(dj.caller)
975+ func dp (aU,ed) = {
976+ let eh = aU
977+ let ei = eh._1
978+ let ds = eh._2
979+ let aw = eh._3
980+ if ((af > 0))
974981 then {
975- let bY = ((fraction(af, bX, ae, CEILING) * am) / (4 * (am - 1)))
976- let ef = {
977- let eg = fraction(cb, bb[at], ca)
978- let eh = if ((eg > dZ))
979- then (eg - dZ)
980- else (dZ - eg)
981- fraction(bY, eh, ae)
982+ let cb = ((fraction(ah, ca, ag, CEILING) * ap) / (4 * (ap - 1)))
983+ let ej = {
984+ let ek = fraction(ce, be[aw], cd)
985+ let el = if ((ek > ed))
986+ then (ek - ed)
987+ else (ed - ek)
988+ fraction(cb, el, ag)
982989 }
983- let dA = fraction(ef, ag, ae)
984- let ei = (dZ - ef)
985- let ej = (dZ - ef)
986- let ek = (dZ - bb[at])
987- let dH = (ef - dA)
988- let el = if ((ek > 0))
989- then cr((ek - ef), al[at])
990- else cD(ef, al[at])
991- if ((el == el))
990+ let dD = fraction(ej, ai, ag)
991+ let dE = fraction(ej, aj, ag)
992+ let em = (ed - ej)
993+ let en = (ed - ej)
994+ let eo = (ed - be[aw])
995+ let dL = ((ej - dD) - dE)
996+ let ep = if ((eo > 0))
997+ then cu((eo - ej), ao[aw])
998+ else cG(ej, ao[aw])
999+ if ((ep == ep))
9921000 then {
993- let dI = if ((dH > 0))
994- then invoke(W, "airDrop", nil, [AttachedPayment(fromBase58String(al[at]), dH)])
1001+ let dM = if ((dL > 0))
1002+ then invoke(Y, "airDrop", nil, [AttachedPayment(fromBase58String(ao[aw]), dL)])
9951003 else 0
996- if ((dI == dI))
997- then $Tuple3((ee :+ ej), (dp ++ [ScriptTransfer(R, dA, fromBase58String(al[at])), IntegerEntry((al[at] + i), ei)]), (at + 1))
1004+ if ((dM == dM))
1005+ then $Tuple3((ei :+ en), (ds ++ [ScriptTransfer(S, dD, fromBase58String(ao[aw])), ScriptTransfer(T, dE, fromBase58String(ao[aw])), IntegerEntry((ao[aw] + i), em)]), (aw + 1))
9981006 else throw("Strict value is not equal to itself.")
9991007 }
10001008 else throw("Strict value is not equal to itself.")
10011009 }
10021010 else {
1003- let el = cr(dZ, al[at])
1004- if ((el == el))
1005- then $Tuple3((ee :+ dZ), (dp :+ IntegerEntry((al[at] + i), dZ)), (at + 1))
1011+ let ep = cu(ed, ao[aw])
1012+ if ((ep == ep))
1013+ then $Tuple3((ei :+ ed), (ds :+ IntegerEntry((ao[aw] + i), ed)), (aw + 1))
10061014 else throw("Strict value is not equal to itself.")
10071015 }
10081016 }
10091017
1010- let em = {
1011- let aT = cT
1012- let aU = size(aT)
1013- let aV = $Tuple3(nil, nil, 0)
1014- func bq (aX,aY) = if ((aY >= aU))
1015- then aX
1016- else dm(aX, aT[aY])
1018+ let eq = {
1019+ let aW = cW
1020+ let aX = size(aW)
1021+ let aY = $Tuple3(nil, nil, 0)
1022+ func bt (ba,bb) = if ((bb >= aX))
1023+ then ba
1024+ else dp(ba, aW[bb])
10171025
1018- func br (aX,aY) = if ((aY >= aU))
1019- then aX
1026+ func bu (ba,bb) = if ((bb >= aX))
1027+ then ba
10201028 else throw("List size exceeds 10")
10211029
1022- br(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1030+ bu(bt(bt(bt(bt(bt(bt(bt(bt(bt(bt(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10231031 }
1024- let ee = em._1
1025- let dp = em._2
1026- let en = bv(ee, bf)
1027- let eo = if ((ad == 0))
1028- then cb
1029- else fraction(ad, (en - ca), ca)
1030- if (aA((eo >= dO)))
1032+ let ei = eq._1
1033+ let ds = eq._2
1034+ let er = by(ei, bi)
1035+ let es = if ((af == 0))
1036+ then ce
1037+ else fraction(af, (er - cd), cd)
1038+ if (aD((es >= dS)))
10311039 then throw("Slippage screwed you")
1032- else if (dP)
1040+ else if (dT)
10331041 then {
1034- let ep = invoke(this, "reissueShare", [eo], nil)
1035- if ((ep == ep))
1042+ let et = invoke(this, "reissueShare", [es], nil)
1043+ if ((et == et))
10361044 then {
1037- let eq = invoke(V, "lockShareTokensFromPool", [dg.caller.bytes, toString(this), dQ], ([AttachedPayment(ac, eo)] ++ dS))
1038- if ((eq == eq))
1039- then (dp :+ IntegerEntry(o, (ad + eo)))
1045+ let eu = invoke(X, "lockShareTokensFromPool", [dj.caller.bytes, toString(this), dU], ([AttachedPayment(ae, es)] ++ dW))
1046+ if ((eu == eu))
1047+ then (ds :+ IntegerEntry(o, (af + es)))
10401048 else throw("Strict value is not equal to itself.")
10411049 }
10421050 else throw("Strict value is not equal to itself.")
10431051 }
1044- else (dp ++ [Reissue(ac, eo, true), ScriptTransfer(dg.caller, eo, ac), IntegerEntry(o, (ad + eo))])
1052+ else (ds ++ [Reissue(ae, es, true), ScriptTransfer(dj.caller, es, ae), IntegerEntry(o, (af + es))])
10451053 }
10461054 }
10471055 }
10481056 }
10491057 }))
10501058
10511059
10521060
1053-@Callable(dg)
1054-func calcMintAmount (cT,aE) = {
1055- let bf = aK()
1056- let bb = aP()
1057- let cb = bv(cT, bf)
1058- if ((ad == 0))
1059- then $Tuple2(nil, cb)
1061+@Callable(dj)
1062+func calcMintAmount (cW,aH) = {
1063+ let bi = aN()
1064+ let be = aS()
1065+ let ce = by(cW, bi)
1066+ if ((af == 0))
1067+ then $Tuple2(nil, ce)
10601068 else {
1061- let ca = bv(bb, bf)
1062- let bX = aC(aE)
1063- func er (aR,dZ) = {
1064- let es = aR
1065- let ee = es._1
1066- let at = es._2
1067- let bY = ((fraction(af, bX, ae, CEILING) * am) / (4 * (am - 1)))
1068- let ef = {
1069- let eg = fraction(cb, bb[at], ca)
1070- let eh = if ((eg > dZ))
1071- then (eg - dZ)
1072- else (dZ - eg)
1073- fraction(bY, eh, ae)
1069+ let cd = by(be, bi)
1070+ let ca = aF(aH)
1071+ func ev (aU,ed) = {
1072+ let ew = aU
1073+ let ei = ew._1
1074+ let aw = ew._2
1075+ let cb = ((fraction(ah, ca, ag, CEILING) * ap) / (4 * (ap - 1)))
1076+ let ej = {
1077+ let ek = fraction(ce, be[aw], cd)
1078+ let el = if ((ek > ed))
1079+ then (ek - ed)
1080+ else (ed - ek)
1081+ fraction(cb, el, ag)
10741082 }
1075- let ej = (dZ - ef)
1076- $Tuple2((ee :+ ej), (at + 1))
1083+ let en = (ed - ej)
1084+ $Tuple2((ei :+ en), (aw + 1))
10771085 }
10781086
1079- let et = {
1080- let aT = cT
1081- let aU = size(aT)
1082- let aV = $Tuple2(nil, 0)
1083- func aW (aX,aY) = if ((aY >= aU))
1084- then aX
1085- else er(aX, aT[aY])
1087+ let ex = {
1088+ let aW = cW
1089+ let aX = size(aW)
1090+ let aY = $Tuple2(nil, 0)
1091+ func aZ (ba,bb) = if ((bb >= aX))
1092+ then ba
1093+ else ev(ba, aW[bb])
10861094
1087- func aZ (aX,aY) = if ((aY >= aU))
1088- then aX
1095+ func bc (ba,bb) = if ((bb >= aX))
1096+ then ba
10891097 else throw("List size exceeds 10")
10901098
1091- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1099+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10921100 }
1093- let ee = et._1
1094- let ec = et._2
1095- let en = bv(ee, bf)
1096- let eu = fraction(ad, (en - ca), ca)
1097- $Tuple2(nil, eu)
1101+ let ei = ex._1
1102+ let eg = ex._2
1103+ let er = by(ei, bi)
1104+ let ey = fraction(af, (er - cd), cd)
1105+ $Tuple2(nil, ey)
10981106 }
10991107 }
11001108
11011109
11021110
1103-@Callable(dg)
1104-func reissueShare (ct) = valueOrElse(au(dg), [Reissue(ac, ct, true)])
1111+@Callable(dj)
1112+func reissueShare (cw) = valueOrElse(ax(dj), [Reissue(ae, cw, true)])
11051113
11061114
11071115
1108-@Callable(dg)
1109-func getDy (ev,ew,ex,ey) = {
1110- let bb = aP()
1111- let ez = valueOrErrorMessage(indexOf(al, ev), "unknown token in")
1112- let eA = valueOrErrorMessage(indexOf(al, ew), "unknown token out")
1113- let bz = (bb[ez] + ex)
1114- let bM = bw(ez, eA, bz, bb)
1115- let cm = ((bb[eA] - bM) - 1)
1116- let bX = aC(Address(fromBase58String(ey)))
1117- let bY = fraction(fraction(af, bX, ae, CEILING), cm, ae)
1118- $Tuple2(nil, $Tuple2((cm - bY), bY))
1116+@Callable(dj)
1117+func getDy (ez,eA,eB,eC) = {
1118+ let be = aS()
1119+ let eD = valueOrErrorMessage(indexOf(ao, ez), "unknown token in")
1120+ let eE = valueOrErrorMessage(indexOf(ao, eA), "unknown token out")
1121+ let bC = (be[eD] + eB)
1122+ let bP = bz(eD, eE, bC, be)
1123+ let cp = ((be[eE] - bP) - 1)
1124+ let ca = aF(Address(fromBase58String(eC)))
1125+ let cb = fraction(fraction(ah, ca, ag, CEILING), cp, ag)
1126+ $Tuple2(nil, $Tuple2((cp - cb), cb))
11191127 }
11201128
11211129
11221130
1123-@Callable(dg)
1124-func exchange (du,eB) = valueOrElse(ar(), valueOrElse(aq(), if ((size(dg.payments) != 1))
1131+@Callable(dj)
1132+func exchange (dx,eF) = valueOrElse(au(), valueOrElse(at(), if ((size(dj.payments) != 1))
11251133 then throw("size(payments) != 1")
11261134 else {
1127- let cM = cI()
1128- if (cM._1)
1129- then (cO(cM._2) ++ cP(dg.caller, dg.payments))
1135+ let cP = cL()
1136+ if (cP._1)
1137+ then (cR(cP._2) ++ cS(dj.caller, dj.payments))
11301138 else {
1131- let cR = dg.payments[0]
1132- let eC = cn(cR.assetId)
1133- let dx = fromBase58String(du)
1134- let ex = cR.amount
1135- let ez = valueOrErrorMessage(indexOf(al, eC), "unknown token in")
1136- let eA = valueOrErrorMessage(indexOf(al, du), "unknown token out")
1137- let bb = aP()
1138- let bz = (bb[ez] + ex)
1139- let bM = bw(ez, eA, bz, bb)
1140- let eD = ((bb[eA] - bM) - 1)
1141- let bX = aC(dg.originCaller)
1142- let bY = fraction(eD, fraction(af, bX, ae, CEILING), ae)
1143- let cm = (eD - bY)
1144- let dA = fraction(bY, ag, ae)
1145- if (aA((cm >= eB)))
1139+ let cU = dj.payments[0]
1140+ let eG = cq(cU.assetId)
1141+ let dA = fromBase58String(dx)
1142+ let eB = cU.amount
1143+ let eD = valueOrErrorMessage(indexOf(ao, eG), "unknown token in")
1144+ let eE = valueOrErrorMessage(indexOf(ao, dx), "unknown token out")
1145+ let be = aS()
1146+ let bC = (be[eD] + eB)
1147+ let bP = bz(eD, eE, bC, be)
1148+ let eH = ((be[eE] - bP) - 1)
1149+ let ca = aF(dj.originCaller)
1150+ let cb = fraction(eH, fraction(ah, ca, ag, CEILING), ag)
1151+ let cp = (eH - cb)
1152+ let dD = fraction(cb, ai, ag)
1153+ let dE = fraction(cb, aj, ag)
1154+ if (aD((cp >= eF)))
11461155 then throw("Exchange resulted in fewer coins than expected")
11471156 else {
1148- func dC (aR,dD) = {
1149- let eE = aR
1150- let cT = eE._1
1151- let at = eE._2
1152- if ((at == ez))
1153- then $Tuple2((cT :+ (dD + ex)), (at + 1))
1154- else if ((at == eA))
1155- then $Tuple2((cT :+ (dD - eD)), (at + 1))
1156- else $Tuple2((cT :+ dD), (at + 1))
1157+ func dG (aU,dH) = {
1158+ let eI = aU
1159+ let cW = eI._1
1160+ let aw = eI._2
1161+ if ((aw == eD))
1162+ then $Tuple2((cW :+ (dH + eB)), (aw + 1))
1163+ else if ((aw == eE))
1164+ then $Tuple2((cW :+ (dH - eH)), (aw + 1))
1165+ else $Tuple2((cW :+ dH), (aw + 1))
11571166 }
11581167
1159- let eF = {
1160- let aT = bb
1161- let aU = size(aT)
1162- let aV = $Tuple2(nil, 0)
1163- func aW (aX,aY) = if ((aY >= aU))
1164- then aX
1165- else dC(aX, aT[aY])
1168+ let eJ = {
1169+ let aW = be
1170+ let aX = size(aW)
1171+ let aY = $Tuple2(nil, 0)
1172+ func aZ (ba,bb) = if ((bb >= aX))
1173+ then ba
1174+ else dG(ba, aW[bb])
11661175
1167- func aZ (aX,aY) = if ((aY >= aU))
1168- then aX
1176+ func bc (ba,bb) = if ((bb >= aX))
1177+ then ba
11691178 else throw("List size exceeds 10")
11701179
1171- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1180+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11721181 }
1173- let cT = eF._1
1174- let at = eF._2
1175- if (cS(cT))
1182+ let cW = eJ._1
1183+ let aw = eJ._2
1184+ if (cV(cW))
11761185 then throw()
11771186 else {
1178- let eq = cr(cR.amount, cn(cR.assetId))
1179- if ((eq == eq))
1187+ let eu = cu(cU.amount, cq(cU.assetId))
1188+ if ((eu == eu))
11801189 then {
1181- let dr = cD(eD, du)
1182- if ((dr == dr))
1190+ let du = cG(eH, dx)
1191+ if ((du == du))
11831192 then {
1184- let dH = (bY - dA)
1185- let dI = if ((dH > 0))
1186- then invoke(W, "airDrop", nil, [AttachedPayment(dx, dH)])
1193+ let dL = ((cb - dD) - dE)
1194+ let dM = if ((dL > 0))
1195+ then invoke(Y, "airDrop", nil, [AttachedPayment(dA, dL)])
11871196 else 0
1188- if ((dI == dI))
1189- then $Tuple2([IntegerEntry((eC + i), bz), IntegerEntry((du + i), (bb[eA] - eD)), ScriptTransfer(dg.caller, cm, dx), ScriptTransfer(R, dA, dx)], [cm, dx])
1197+ if ((dM == dM))
1198+ then $Tuple2([IntegerEntry((eG + i), bC), IntegerEntry((dx + i), (be[eE] - eH)), ScriptTransfer(dj.caller, cp, dA), ScriptTransfer(S, dD, dA), ScriptTransfer(T, dE, dA)], [cp, dA])
11901199 else throw("Strict value is not equal to itself.")
11911200 }
11921201 else throw("Strict value is not equal to itself.")
11931202 }
11941203 else throw("Strict value is not equal to itself.")
11951204 }
11961205 }
11971206 }
11981207 }))
11991208
12001209
12011210
1202-@Callable(dg)
1203-func withdraw (dh) = valueOrElse(aq(), df(dg, dh, 0))
1211+@Callable(dj)
1212+func withdraw (dk) = valueOrElse(at(), di(dj, dk, 0))
12041213
12051214
12061215
1207-@Callable(dg)
1208-func withdrawWithUnlock (dh,di) = valueOrElse(aq(), if ((0 >= di))
1216+@Callable(dj)
1217+func withdrawWithUnlock (dk,dl) = valueOrElse(at(), if ((0 >= dl))
12091218 then throw("Unlock amount must be positive")
12101219 else {
1211- let eG = invoke(V, "withdrawShareTokensFromPool", [dg.caller.bytes, toString(this), di], nil)
1212- if ((eG == eG))
1213- then df(dg, dh, di)
1220+ let eK = invoke(X, "withdrawShareTokensFromPool", [dj.caller.bytes, toString(this), dl], nil)
1221+ if ((eK == eK))
1222+ then di(dj, dk, dl)
12141223 else throw("Strict value is not equal to itself.")
12151224 })
12161225
12171226
12181227
1219-@Callable(dg)
1220-func calcWithdrawOneCoin (eH,du,aE) = if ((0 >= eH))
1228+@Callable(dj)
1229+func calcWithdrawOneCoin (eL,dx,aH) = if ((0 >= eL))
12211230 then throw("Amount must be positive")
12221231 else {
1223- let at = valueOrErrorMessage(indexOf(al, du), "unknown token out")
1224- $Tuple2(nil, bU(aP(), eH, at, Address(fromBase58String(aE)))._1)
1232+ let aw = valueOrErrorMessage(indexOf(ao, dx), "unknown token out")
1233+ $Tuple2(nil, bX(aS(), eL, aw, Address(fromBase58String(aH)))._1)
12251234 }
12261235
12271236
12281237
1229-@Callable(dg)
1230-func withdrawOneCoin (du,dv) = valueOrElse(ar(), valueOrElse(aq(), if ((size(dg.payments) != 1))
1238+@Callable(dj)
1239+func withdrawOneCoin (dx,dy) = valueOrElse(au(), valueOrElse(at(), if ((size(dj.payments) != 1))
12311240 then throw("size(payments) != 1")
1232- else dt(dg, du, dv, 0)))
1241+ else dw(dj, dx, dy, 0)))
12331242
12341243
12351244
1236-@Callable(dg)
1237-func withdrawOneCoinWithUnlock (du,dv,di) = valueOrElse(ar(), valueOrElse(aq(), if ((0 > di))
1245+@Callable(dj)
1246+func withdrawOneCoinWithUnlock (dx,dy,dl) = valueOrElse(au(), valueOrElse(at(), if ((0 > dl))
12381247 then throw("Unlock amount must be positive")
12391248 else {
1240- let eG = invoke(V, "withdrawShareTokensFromPool", [dg.caller.bytes, toString(this), di], nil)
1241- if ((eG == eG))
1242- then dt(dg, du, dv, di)
1249+ let eK = invoke(X, "withdrawShareTokensFromPool", [dj.caller.bytes, toString(this), dl], nil)
1250+ if ((eK == eK))
1251+ then dw(dj, dx, dy, dl)
12431252 else throw("Strict value is not equal to itself.")
12441253 }))
12451254
12461255
12471256
1248-@Callable(dg)
1249-func A () = $Tuple2(nil, aK())
1257+@Callable(dj)
1258+func A () = $Tuple2(nil, aN())
12501259
12511260
12521261
1253-@Callable(dg)
1262+@Callable(dj)
12541263 func getVirtualPrice () = {
1255- let bs = be(aP(), aK())
1256- $Tuple2(nil, fraction(bs, a, ad))
1264+ let bv = bh(aS(), aN())
1265+ $Tuple2(nil, fraction(bv, a, af))
12571266 }
12581267
12591268
12601269
1261-@Callable(dg)
1262-func calcTokenAmount (eI,eJ) = {
1263- let bf = aK()
1264- let eK = aP()
1265- let ca = bv(eK, bf)
1266- func eL (aR,dn) = {
1267- let eM = aR
1268- let cT = eM._1
1269- let at = eM._2
1270- let dZ = (dn + (if (eJ)
1271- then eI[at]
1272- else -(eI[at])))
1273- $Tuple2((cT :+ dZ), (at + 1))
1270+@Callable(dj)
1271+func calcTokenAmount (eM,eN) = {
1272+ let bi = aN()
1273+ let eO = aS()
1274+ let cd = by(eO, bi)
1275+ func eP (aU,dq) = {
1276+ let eQ = aU
1277+ let cW = eQ._1
1278+ let aw = eQ._2
1279+ let ed = (dq + (if (eN)
1280+ then eM[aw]
1281+ else -(eM[aw])))
1282+ $Tuple2((cW :+ ed), (aw + 1))
12741283 }
12751284
1276- let cT = ( let aT = eK
1277- let aU = size(aT)
1278- let aV = $Tuple2(nil, 0)
1279- func aW (aX,aY) = if ((aY >= aU))
1280- then aX
1281- else eL(aX, aT[aY])
1285+ let cW = ( let aW = eO
1286+ let aX = size(aW)
1287+ let aY = $Tuple2(nil, 0)
1288+ func aZ (ba,bb) = if ((bb >= aX))
1289+ then ba
1290+ else eP(ba, aW[bb])
12821291
1283- func aZ (aX,aY) = if ((aY >= aU))
1284- then aX
1292+ func bc (ba,bb) = if ((bb >= aX))
1293+ then ba
12851294 else throw("List size exceeds 10")
12861295
1287- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10))._1
1288- let cb = bv(cT, bf)
1289- let eN = if (eJ)
1290- then (cb - ca)
1291- else (ca - cb)
1292- $Tuple2(nil, fraction(eN, ad, ca))
1296+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10))._1
1297+ let ce = by(cW, bi)
1298+ let eR = if (eN)
1299+ then (ce - cd)
1300+ else (cd - ce)
1301+ $Tuple2(nil, fraction(eR, af, cd))
12931302 }
12941303
12951304
12961305
1297-@Callable(dg)
1298-func rampA (eO,eP) = valueOrElse(aq(), valueOrElse(as(dg), if (aA((az >= (aj + e))))
1306+@Callable(dj)
1307+func rampA (eS,eT) = valueOrElse(at(), valueOrElse(av(dj), if (aD((aC >= (am + e))))
12991308 then throw("too often")
1300- else if (aA((eP >= (az + e))))
1309+ else if (aD((eT >= (aC + e))))
13011310 then throw("insufficient time")
13021311 else {
1303- let eQ = aK()
1304- if (aA(if ((eO > 0))
1305- then (b > eO)
1312+ let eU = aN()
1313+ if (aD(if ((eS > 0))
1314+ then (b > eS)
13061315 else false))
13071316 then throw("out of base range")
1308- else if (aA(if (if ((eO >= eQ))
1309- then ((eQ * c) >= eO)
1317+ else if (aD(if (if ((eS >= eU))
1318+ then ((eU * c) >= eS)
13101319 else false)
13111320 then true
1312- else if ((eQ > eO))
1313- then ((eO * c) >= eQ)
1321+ else if ((eU > eS))
1322+ then ((eS * c) >= eU)
13141323 else false))
13151324 then throw("out of range")
1316- else [IntegerEntry("initial_A", eQ), IntegerEntry("future_A", eO), IntegerEntry("initial_A_time", az), IntegerEntry("future_A_time", eP)]
1325+ else [IntegerEntry("initial_A", eU), IntegerEntry("future_A", eS), IntegerEntry("initial_A_time", aC), IntegerEntry("future_A_time", eT)]
13171326 }))
13181327
13191328
13201329
1321-@Callable(dg)
1322-func stopRampA () = valueOrElse(aq(), valueOrElse(as(dg), {
1323- let eR = aK()
1324-[IntegerEntry("initial_A", eR), IntegerEntry("future_A", eR), IntegerEntry("initial_A_time", az), IntegerEntry("future_A_time", az)]
1330+@Callable(dj)
1331+func stopRampA () = valueOrElse(at(), valueOrElse(av(dj), {
1332+ let eV = aN()
1333+[IntegerEntry("initial_A", eV), IntegerEntry("future_A", eV), IntegerEntry("initial_A_time", aC), IntegerEntry("future_A_time", aC)]
13251334 }))
13261335
13271336
13281337
1329-@Callable(dg)
1330-func shutdown () = valueOrElse(as(dg), if (!(Z))
1338+@Callable(dj)
1339+func shutdown () = valueOrElse(av(dj), if (!(ab))
13311340 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
1332- else an("Paused by admin"))
1341+ else aq("Paused by admin"))
13331342
13341343
13351344
1336-@Callable(dg)
1337-func activate () = valueOrElse(as(dg), if (Z)
1338- then ap()
1345+@Callable(dj)
1346+func activate () = valueOrElse(av(dj), if (ab)
1347+ then as()
13391348 else [BooleanEntry(j, true), DeleteEntry(m)])
13401349
13411350
13421351
1343-@Callable(dg)
1344-func takeIntoAccountExtraFunds () = valueOrElse(aq(), {
1345- let eS = if (containsElement(al, toBase58String(X)))
1346- then invoke(T, "claimRewards", nil, nil)
1352+@Callable(dj)
1353+func takeIntoAccountExtraFunds () = valueOrElse(at(), {
1354+ let eW = if (containsElement(ao, toBase58String(Z)))
1355+ then invoke(V, "claimRewards", nil, nil)
13471356 else 0
1348- if ((eS == eS))
1349- then if ((dg.caller != R))
1357+ if ((eW == eW))
1358+ then if ((dj.caller != S))
13501359 then throw("Only the wallet can call this function")
13511360 else {
1352- let eK = aP()
1353- func eT (aR,aS) = {
1354- let eU = aR
1355- let eV = eU._1
1356- let at = eU._2
1357- let eW = fromBase58String(aS)
1358- let eX = (assetBalance(this, eW) + cF(eW))
1359- let eY = (eX - eK[at])
1360- if ((0 > eY))
1361- then an(("Enroll amount negative for asset" + aS))
1361+ let eO = aS()
1362+ func eX (aU,aV) = {
1363+ let eY = aU
1364+ let eZ = eY._1
1365+ let aw = eY._2
1366+ let fa = fromBase58String(aV)
1367+ let fb = (assetBalance(this, fa) + cI(fa))
1368+ let fc = (fb - eO[aw])
1369+ if ((0 > fc))
1370+ then aq(("Enroll amount negative for asset" + aV))
13621371 else {
1363- let dI = if ((eY > 0))
1364- then invoke(W, "airDrop", nil, [AttachedPayment(eW, eY)])
1372+ let dM = if ((fc > 0))
1373+ then invoke(Y, "airDrop", nil, [AttachedPayment(fa, fc)])
13651374 else 0
1366- if ((dI == dI))
1367- then $Tuple2((eV + eY), (at + 1))
1375+ if ((dM == dM))
1376+ then $Tuple2((eZ + fc), (aw + 1))
13681377 else throw("Strict value is not equal to itself.")
13691378 }
13701379 }
13711380
1372- let ec = {
1373- let aT = al
1374- let aU = size(aT)
1375- let aV = $Tuple2(0, 0)
1376- func aW (aX,aY) = if ((aY >= aU))
1377- then aX
1378- else eT(aX, aT[aY])
1381+ let eg = {
1382+ let aW = ao
1383+ let aX = size(aW)
1384+ let aY = $Tuple2(0, 0)
1385+ func aZ (ba,bb) = if ((bb >= aX))
1386+ then ba
1387+ else eX(ba, aW[bb])
13791388
1380- func aZ (aX,aY) = if ((aY >= aU))
1381- then aX
1389+ func bc (ba,bb) = if ((bb >= aX))
1390+ then ba
13821391 else throw("List size exceeds 10")
13831392
1384- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1393+ bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
13851394 }
1386- if ((ec._1 == 0))
1395+ if ((eg._1 == 0))
13871396 then throw("No money to take")
13881397 else nil
13891398 }
13901399 else throw("Strict value is not equal to itself.")
13911400 })
13921401
13931402
1394-@Verifier(eZ)
1395-func fa () = {
1396- let fb = {
1397- let fc = if (sigVerify(eZ.bodyBytes, eZ.proofs[0], N))
1403+@Verifier(fd)
1404+func fe () = {
1405+ let ff = {
1406+ let fg = if (sigVerify(fd.bodyBytes, fd.proofs[0], O))
13981407 then 1
13991408 else 0
1400- let fd = if (sigVerify(eZ.bodyBytes, eZ.proofs[1], O))
1409+ let fh = if (sigVerify(fd.bodyBytes, fd.proofs[1], P))
14011410 then 1
14021411 else 0
1403- let fe = if (sigVerify(eZ.bodyBytes, eZ.proofs[2], P))
1412+ let fi = if (sigVerify(fd.bodyBytes, fd.proofs[2], Q))
14041413 then 1
14051414 else 0
1406- (((fc + fd) + fe) >= 2)
1415+ (((fg + fh) + fi) >= 2)
14071416 }
1408- let K = eZ
1409- if ($isInstanceOf(K, "InvokeScriptTransaction"))
1417+ let L = fd
1418+ if ($isInstanceOf(L, "InvokeScriptTransaction"))
14101419 then {
1411- let el = K
1412- let ff = if ((el.dApp == this))
1413- then (el.function == "takeIntoAccountExtraFunds")
1420+ let ep = L
1421+ let fj = if ((ep.dApp == this))
1422+ then (ep.function == "takeIntoAccountExtraFunds")
14141423 else false
1415- let fg = if (if (if (sigVerify(eZ.bodyBytes, eZ.proofs[0], N))
1424+ let fk = if (if (if (sigVerify(fd.bodyBytes, fd.proofs[0], O))
14161425 then true
1417- else sigVerify(eZ.bodyBytes, eZ.proofs[0], O))
1426+ else sigVerify(fd.bodyBytes, fd.proofs[0], P))
14181427 then true
1419- else sigVerify(eZ.bodyBytes, eZ.proofs[0], P))
1428+ else sigVerify(fd.bodyBytes, fd.proofs[0], Q))
14201429 then true
1421- else sigVerify(eZ.bodyBytes, eZ.proofs[0], Q)
1422- if (if (ff)
1423- then fg
1430+ else sigVerify(fd.bodyBytes, fd.proofs[0], R)
1431+ if (if (fj)
1432+ then fk
14241433 else false)
14251434 then true
1426- else fb
1435+ else ff
14271436 }
1428- else fb
1437+ else ff
14291438 }
14301439

github/deemru/w8io/169f3d6 
615.51 ms