tx · 7gbRoMG6CsZTqFywwXtMe34zNTsC9zBwsdNrq7Fny9n7

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.02200000 Waves

2024.11.17 18:23 [3375627] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "7gbRoMG6CsZTqFywwXtMe34zNTsC9zBwsdNrq7Fny9n7", "fee": 2200000, "feeAssetId": null, "timestamp": 1731856992792, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "6WW8o4LQ4yHmBRg9FHdULXn2tSfAYMnEYP4PqyMMyxoDdTKZMVxbSwhe6vRaov2r1EywnnzAt9kf6qxrMDxPvtd" ], "script": "base64:BgJCCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBARIDCgEBEgASAwoBCBIDCgEIggEACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABBhY3JlczJBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUDRVSDNUOW5YcE1OcFVtU21RalBtRXozRzg1dDN6bjZlQQMJAAACAQFUBQckbWF0Y2gwAiMzTkJQeDFGY2l1M0pRTkVHWjIxalNuVGR1dExOR0dCVVNYaAkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAOTUlOU0hPUFBBWU1FTlQAoI0GAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdQdXp6bGVQb29sRGFwcAAFABRJZHhDZmdJbnZlc3RGdW5kRGFwcAAGAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgEPa2V5UmVzdDJBZGRyZXNzAAINJXNfX3Jlc3QyQWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJwdXp6bGVQb29sQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAPd2xnQmFzZUFtb3VudFhwAIDQ28P0AgEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyAAV4cFdsZwCQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwACE1JTExJT042AICA6YOx3hYAC1BMQVlFUlNIQVJFAIC1GAAJREFZTUlMTElTAIC4mSkAC3RlYW1BZGRyS2V5Agh0ZWFtQWRkcgAPbGFzdFRlYW1UaW1lS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQARdGVhbUFtb3VudExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABVsYXN0QWN0aXZpdGllc1RpbWVLZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzABBhY3RBbW91bnRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAAUc3Rha2Vyc0Ftb3VudExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQRhZGRyCQCsAgICEWxhc3RXbGdMaW1pdFVzZXJfBQRhZGRyAA93bGdJc3N1ZVRpbWVLZXkCDXdsZ19pc3N1ZVRpbWUAEndsZ0lzc3VlZEFtb3VudEtleQIQd2xnX2lzc3VlZEFtb3VudAEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIWd2xnU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgARd2xnU3Rha2VkVG90YWxLZXkCFHdsZ1N0YWtlZEFtb3VudFRvdGFsARZrZXlXbGdTdGFrZWRUaW1lQnlVc2VyAQRhZGRyCQCsAgICFHdsZ1N0YWtlZFRpbWVCeVVzZXJfBQRhZGRyAANNNl8AwIQ9AANNOF8AgMLXLwAKVEVBTV9TSEFSRQDAmgwADkFDVElWSVRZX1NIQVJFAKCNBgAMUExBWUVSX1NIQVJFAIC1GAALWUVBUl9NSUxMSVMAgIbrx3UABkRBWV9NUwCAuJkpAApEQVlfQkxPQ0tTAKALAAdJU1NVRTEwAICU69wDAA9QTEFZRVJTMTBfU0hBUkUAgOowABFNQVJLRVRJTkcxMF9TSEFSRQCgjQYADFRFQU0xMF9TSEFSRQCgjQYAEU5FV19TVEFLSU5HX1NUQVJUAIDzuMKxMgAQbWFya2V0aW5nQWRkcktleQINbWFya2V0aW5nQWRkcgAKdGVhbUFkcktleQIIdGVhbUFkZHIADmxhc3RUZWFtVGltS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQAOdGVhbUFtdExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABRsYXN0QWN0aXZpdGllc1RpbUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMADWFjdEFtdExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABFzdGFrZXJzQW10TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUbGFzdENsYWltZWRUaW1lVXNlcl8FBGFkZHIBDWRpc3RyQnlQZXJpb2QCDGlzc3VlZEFtb3VudAZwZXJpb2QJAGsDBQxpc3N1ZWRBbW91bnQJAGgCBQxQTEFZRVJfU0hBUkUJAGQCBQZwZXJpb2QAAQkAaAIABgUDTTZfABF3bGdJc3N1ZTEwVGltZUtleQIPd2xnX2lzc3VlMTBUaW1lAA53bGdJc3N1ZVRpbUtleQINd2xnX2lzc3VlVGltZQAPd2xnSXNzdWVkQW10S2V5AhB3bGdfaXNzdWVkQW1vdW50AA56Yklzc3VlZEFtdEtleQISemJpbGxfaXNzdWVkQW1vdW50ARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAJZGFwcDJSZXN0AAAADGRhcHAyU3Rha2luZwABAAhkYXBwMldsZwACAAtkYXBwMlB1enpsZQADAA9kYXBwMkludmVzdEZ1bmQABAAKbGV2ZWxBY3JlcwkAzAgCAAAJAMwIAgAKCQDMCAIAFAkAzAgCACgJAMwIAgBQCQDMCAIAlgEJAMwIAgD6AQkAzAgCAJADCQDMCAIAvAUJAMwIAgDoBwUDbmlsAQ9nZXRMZXZlbEJ5QWNyZXMBBWFjcmVzBANhY3IJAGkCCQBkAgUFYWNyZXMA/8HXLwUDTThfCgEHY2hlY2tlcgIDYWNjBGl0ZW0DCQBnAgUEaXRlbQUDYWNyBQNhY2MJAGQCBQNhY2MAAQoAAiRsBQpsZXZlbEFjcmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQVhY3JlcwkAaAIJAGgCBQVhY3JlcwAUCQBkAgkBD2dldExldmVsQnlBY3JlcwEFBWFjcmVzAAQBEGdldEZhcm1pbmdQb3dlcnMCEnVzZXJBZGRyU3RyT3JFbXB0eQ5hY3JlczJDb250cmFjdAQHdG90YWxGUAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAUUdG90YWxGYXJtaW5nUG93ZXJLZXkAAAQJdXNlckFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBRJ1c2VyQWRkclN0ck9yRW1wdHkAAAQGdXNlckZQCQEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFCXVzZXJBY3JlcwkAzAgCBQd0b3RhbEZQCQDMCAIFBnVzZXJGUAUDbmlsAQprZXlVc2VyQmV0AQRhZGRyCQCsAgICCHVzZXJCZXRfBQRhZGRyAQ5rZXlVc2VyVGlja2V0cwEEYWRkcgkArAICAgx1c2VyVGlja2V0c18FBGFkZHIAD2tleVRvdGFsVGlja2V0cwIMdG90YWxUaWNrZXRzAQp3aW5uaW5nQmV0AQNkYXkJAGoCCQCxCQEJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEJAGgCBQNkYXkFCkRBWV9CTE9DS1MDdnJmAAQACmlkeFRvdGFsRlAAAAAJaWR4VXNlckZQAAEAC2l4V2xnQW1vdW50AAAACGl4V2xnV2xnAAEACml4V2xnUHJpY2UAAgAOaXhXbGdJc3N1ZVRpbWUACAAPaXhXbGdUZWFtQW1MZWZ0AAsAE2l4V2xnVGVhbUFtQXZhaWxOb3cADAAOaXhXbGdBY3RBbUxlZnQADwASaXhXbGdBY3RBbUF2YWlsTm93ABAAEGl4V2xnQW1MZWZ0VG90YWwAEwATaXhXbGdVc2VyQW1BdmFpbE5vdwAXABBpeFdsZ0VmZlVzZXJUaW1lABgAEml4V2xnSXNzdWUxMEFtb3VudAAZABtpeFdsZ01hcmtldGluZ0lzc3VlMTBBbW91bnQAGgAWaXhXbGdUZWFtSXNzdWUxMEFtb3VudAAbAA9peFdsZ1VzZXIxMHBhcnQAHAAQaXhXbGdJc3N1ZTEwVGltZQAdAQxnZXRXbGdTdGF0czIEC3VzZXJBZGRyT3B0CWNvbnRyYWN0cwZ1c2R0SWQVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAxpc3N1ZWRBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFD3dsZ0lzc3VlZEFtdEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0BAdyZXN0VXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBnVzZHRJZAUVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAlwdXp6bGVVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFC2RhcHAyUHV6emxlBQZ1c2R0SWQECWFjcmVzMlVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBQZ1c2R0SWQEEWludmVzdEZuZENvbnRyYWN0CQCRAwIFCWNvbnRyYWN0cwUPZGFwcDJJbnZlc3RGdW5kBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEWludmVzdEZuZENvbnRyYWN0BQZ1c2R0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgURaW52ZXN0Rm5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAQFd2xnSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDndsZ0lzc3VlVGltS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQEBndsZ1dsZwkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBXdsZ0lkBAl0ZWFtVG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFClRFQU1fU0hBUkUFA002XwQOdGVhbUFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ50ZWFtQW10TGVmdEtleQUJdGVhbVRvdGFsBAxsYXN0VGVhbVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ5sYXN0VGVhbVRpbUtleQUJaXNzdWVUaW1lBAh0ZWFtQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAnQgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFCnRlYW1BZHJLZXkEFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUJdGVhbVRvdGFsCQBlAgUDbm93BQxsYXN0VGVhbVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDnRlYW1BbW91bnRMZWZ0BQNuaWwECnRlYW1XbGdvbGQJAPAHAgUIdGVhbUFkZHIFBXdsZ0lkBAhhY3RUb3RhbAkAawMFDGlzc3VlZEFtb3VudAUOQUNUSVZJVFlfU0hBUkUFA002XwQNYWN0QW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDWFjdEFtdExlZnRLZXkFCGFjdFRvdGFsBBJsYXN0QWN0aXZpdGllc1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRRsYXN0QWN0aXZpdGllc1RpbUtleQUJaXNzdWVUaW1lBBVhY3RBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUIYWN0VG90YWwJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUNYWN0QW1vdW50TGVmdAUDbmlsBAlhY3RXbGdvbGQJAPAHAgkAkQMCBQljb250cmFjdHMFCWRhcHAyUmVzdAUFd2xnSWQEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcJARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQULdXNlckFkZHJPcHQFCWlzc3VlVGltZQQObGFzdFVzZXJQZXJpb2QJAGkCCQBlAgUMbGFzdFVzZXJUaW1lBQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTBApub3dMaW1pdGVkCQCXAwEJAMwIAgUDbm93CQDMCAIJAGQCBQlpc3N1ZVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTBQNuaWwECWN1clBlcmlvZAkAlwMBCQDMCAIJAGkCCQBlAgUDbm93BQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTCQDMCAIAAgUDbmlsBANlZmYJARBnZXRGYXJtaW5nUG93ZXJzAgULdXNlckFkZHJPcHQJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcEFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQFCWN1clBlcmlvZAQNcHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTBQljdXJQZXJpb2QEEXByZXZQcmV2UGVyaW9kRW5kCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMJAGUCBQljdXJQZXJpb2QAAQQCYTAJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBA11c2VyQXZhaWxhYmxlAwkAAAIFDmxhc3RVc2VyUGVyaW9kBQljdXJQZXJpb2QFAmEwAwkAAAIFDmxhc3RVc2VyUGVyaW9kCQBlAgUJY3VyUGVyaW9kAAEEAmExCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZQIFDXByZXZQZXJpb2RFbmQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMJAGQCBQJhMQUCYTAEAmEyCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAgkAZQIFEXByZXZQcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBAJhMQkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQJhMgUCYTEFAmEwBA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRFzdGFrZXJzQW10TGVmdEtleQAABAp1c2VyQW1vdW50AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMFDXVzZXJBdmFpbGFibGUJAJEDAgUDZWZmBQlpZHhVc2VyRlAJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAED2xhc3RJc3N1ZTEwVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFEXdsZ0lzc3VlMTBUaW1lS2V5BRFORVdfU1RBS0lOR19TVEFSVAQNaXNzdWUxMEFtb3VudAkAawMFB0lTU1VFMTAJAJYDAQkAzAgCCQBlAgUDbm93BQ9sYXN0SXNzdWUxMFRpbWUJAMwIAgAABQNuaWwFBkRBWV9NUwQWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFEU1BUktFVElORzEwX1NIQVJFBQNNNl8EEXRlYW1Jc3N1ZTEwQW1vdW50CQBrAwUNaXNzdWUxMEFtb3VudAUMVEVBTTEwX1NIQVJFBQNNNl8EDnVzZXIxMEludGVydmFsCQCWAwEJAMwIAgkAZQIFA25vdwkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFDGxhc3RVc2VyVGltZQUDbmlsCQDMCAIAAAUDbmlsBAp1c2VyMTBwYXJ0AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMJAGsDCQBrAwUHSVNTVUUxMAUOdXNlcjEwSW50ZXJ2YWwFBkRBWV9NUwkAkQMCBQNlZmYFCWlkeFVzZXJGUAkAkQMCBQNlZmYFCmlkeFRvdGFsRlAFD1BMQVlFUlMxMF9TSEFSRQUDTTZfAAAEDm5ld0lzc3VlMTBUaW1lCQCWAwEJAMwIAgURTkVXX1NUQUtJTkdfU1RBUlQJAMwIAgUDbm93BQNuaWwJAMwIAgUMaXNzdWVkQW1vdW50CQDMCAIFBndsZ1dsZwkAzAgCCQBrAwUNdG90YWxGdW5kc1VzZAUDTThfBQxpc3N1ZWRBbW91bnQJAMwIAgUNdG90YWxGdW5kc1VzZAkAzAgCBQdyZXN0VXNkCQDMCAIFCWFjcmVzMlVzZAkAzAgCBQZ3bGdVc2QJAMwIAgUJcHV6emxlVXNkCQDMCAIFCWlzc3VlVGltZQkAzAgCBQxsYXN0VGVhbVRpbWUJAMwIAgUJdGVhbVRvdGFsCQDMCAIFDnRlYW1BbW91bnRMZWZ0CQDMCAIFFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAMwIAgUKdGVhbVdsZ29sZAkAzAgCBQhhY3RUb3RhbAkAzAgCBQ1hY3RBbW91bnRMZWZ0CQDMCAIFFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAzAgCBQlhY3RXbGdvbGQJAMwIAgUJY3VyUGVyaW9kCQDMCAIFD2Ftb3VudExlZnRUb3RhbAkAzAgCBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAMwIAgUMbGFzdFVzZXJUaW1lCQDMCAIFD2ludmVzdEZ1bmRUb3RhbAkAzAgCBQp1c2VyQW1vdW50CQDMCAIFCm5vd0xpbWl0ZWQJAMwIAgUNaXNzdWUxMEFtb3VudAkAzAgCBRZtYXJrZXRpbmdJc3N1ZTEwQW1vdW50CQDMCAIFEXRlYW1Jc3N1ZTEwQW1vdW50CQDMCAIFCnVzZXIxMHBhcnQJAMwIAgUObmV3SXNzdWUxMFRpbWUJAMwIAgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAFA25pbAADbmV0CQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABABZkZWZhdWx0UmVzdDJBZGRyZXNzU3RyBAckbWF0Y2gwBQNuZXQDCQAAAgEBVwUHJG1hdGNoMAIjM1BGd1l0YThiaUV6MzF6cGVGZTVESks4d0U1dHJTcFFWRjgDCQAAAgEBVAUHJG1hdGNoMAIjM043VXVZYXI2MjY0UDU4RkJoVldLUFFBaDRZdWEyaGduZ3YJAAIBAg1Vbmtub3duIGNoYWluAA1wcm9maXRBZGRyS2V5Agpwcm9maXRBZGRyABlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AhZzdGFrZXJzQW1vdW50UGFpZFRvdGFsARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBGFkZHIJAKwCAgIWc3Rha2Vyc0Ftb3VudFBhaWRVc2VyXwUEYWRkcgANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAOYWNyZXMyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEGFjcmVzMkFkZHJlc3NTdHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAESZ2V0U3dhcExpbWl0V2xnb2xkAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIAAAQMZGVmYXVsdExpbWl0CQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgUMZGVmYXVsdExpbWl0BAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGxhc3RUaW1lBQpEQVlfTUlMTElTCQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsAQ5jbGFpbUludGVybmFsMgEEYWRkcgQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQRhZGRyCQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAt1c2VyVGltZUtleQkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQRhZGRyBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdXNlclRpbWVLZXkAAAQLdXNlckVmZlRpbWUJAJEDAgUIY3VyU3RhdHMFEGl4V2xnRWZmVXNlclRpbWUDCQAAAgUMbGFzdFVzZXJUaW1lBQt1c2VyRWZmVGltZQkAlAoCBQNuaWwAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbUFtTGVmdAQKdGVhbUFtb3VudAkAZAIJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVGVhbUFtQXZhaWxOb3cJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQEDHRlYW1UcmFuc2ZlcgMJAGYCBQp0ZWFtQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQt0ZWFtQWRkcktleQUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQLYWN0VHJhbnNmZXIDCQBmAgUJYWN0QW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAQRbWFya2V0aW5nVHJhbnNmZXIDCQBmAgUPbWFya2V0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBRBtYXJrZXRpbmdBZGRyS2V5BQ9tYXJrZXRpbmdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgQJdXNlclRvdGFsCQBkAgUKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0BA5pc3N1ZWQxMEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQ5pc3N1ZWQxMEFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQ5pc3N1ZWQxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnSXNzdWUxMFRpbWVLZXkJAJEDAgUIY3VyU3RhdHMFEGl4V2xnSXNzdWUxMFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5CQBkAgkAZQIFDnRlYW1BbW91bnRMZWZ0BQp0ZWFtQW1vdW50CQCRAwIFCGN1clN0YXRzBRZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0VGVhbVRpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQx0ZWFtVHJhbnNmZXIFC2FjdFRyYW5zZmVyBRFtYXJrZXRpbmdUcmFuc2ZlcgUJdXNlclRvdGFsAQ50YWtlWHBJbnRlcm5hbAIEYWRkcgVkZWx0YQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHdGltZUtleQkBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBQRhZGRyBAlhbW91bnRLZXkJARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEB29sZFVzZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECG9sZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEXdsZ1N0YWtlZFRvdGFsS2V5AAAEAnhwCQBrAwkAawMFBXhwV2xnBQdvbGRVc2VyBQ93bGdCYXNlQW1vdW50WHAJAGUCBQhsYXN0VGltZQUDbm93BQlEQVlNSUxMSVMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGQCBQdvbGRVc2VyBQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUFZGVsdGEFA25pbAUCeHAFB29sZFVzZXIBFGNsYWltVGlja2V0c0ludGVybmFsAgRhZGRyCnVzZXJCZXRTdHIED3RvdGFsVGlja2V0c0tleQUPa2V5VG90YWxUaWNrZXRzBAp0aWNrZXRzS2V5CQEOa2V5VXNlclRpY2tldHMBBQRhZGRyBAZiZXRLZXkJAQprZXlVc2VyQmV0AQUEYWRkcgQGZGF5QmV0CQC1CQIFCnVzZXJCZXRTdHICAV8ED29sZFRvdGFsVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ90b3RhbFRpY2tldHNLZXkAAAQKb2xkVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0aWNrZXRzS2V5AAAEDGRlbHRhVGlja2V0cwMJAAACCQEKd2lubmluZ0JldAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZkYXlCZXQAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmRheUJldAABAAEAAAkAlQoDAwkAAAIFDGRlbHRhVGlja2V0cwAABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFCnRpY2tldHNLZXkJAGQCBQpvbGRUaWNrZXRzBQxkZWx0YVRpY2tldHMJAMwIAgkBDEludGVnZXJFbnRyeQIFD3RvdGFsVGlja2V0c0tleQkAZAIFD29sZFRvdGFsVGlja2V0cwUMZGVsdGFUaWNrZXRzBQNuaWwJAQtEZWxldGVFbnRyeQEFBmJldEtleQUMZGVsdGFUaWNrZXRzDQFpAQ1jb25zdHJ1Y3RvclYxBAhyZXN0QWRkcg1tYXJrZXRpbmdBZGRyCHRlYW1BZGRyCnByb2ZpdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAMJAQlpc0RlZmluZWQBCQChCAEFDXdsZ0Fzc2V0SWRLZXkJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkBAxpc3N1ZWRBbW91bnQFCE1JTExJT042BAVpc3N1ZQkAwwgHAgZXTEdPTEQCIFdhdmVzTGFuZHMgR29sZCBpbnZlc3RtZW50IHRva2VuBQxpc3N1ZWRBbW91bnQACAYFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPd2xnSXNzdWVUaW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQxpc3N1ZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGsDBQhNSUxMSU9ONgULUExBWUVSU0hBUkUFBU1VTFQ2CQDMCAIJAQtCaW5hcnlFbnRyeQIFDXdsZ0Fzc2V0SWRLZXkFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUQbWFya2V0aW5nQWRkcktleQUNbWFya2V0aW5nQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQt0ZWFtQWRkcktleQUIdGVhbUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNcHJvZml0QWRkcktleQUKcHJvZml0QWRkcgUDbmlsAWkBDWNvbnN0cnVjdG9yVjIBCXJlc3QyQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIFA25pbAFpAQZidXlXbGcBDG1pblRvUmVjZWl2ZQQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAUHdXNkdEFtdAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQId2xnUHJpY2UJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UECGJ1eVByaWNlCQBuBAUId2xnUHJpY2UABgAFBQdDRUlMSU5HBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUJd2xnQW1vdW50BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgIQWW91IGNhbiBnZXQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwkAZgIFDG1pblRvUmVjZWl2ZQUJd2xnQW1vdW50CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFCndsZ0Fzc2V0SWQFCXdsZ0Ftb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIFDGN1cldsZ0Ftb3VudAUJd2xnQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXdsZ0Ftb3VudAUKd2xnQXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOYnV5V2xnUkVBRE9OTFkCB2FkZHJlc3MHdXNkdEFtdAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkBQd1c2R0QW10BAh3bGdQcmljZQkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQQIYnV5UHJpY2UJAG4EBQh3bGdQcmljZQAGAAUFB0NFSUxJTkcECXdsZ0Ftb3VudAkAawMFB3VzZHRBbXQFBU1VTFQ4BQhidXlQcmljZQQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUHYWRkcmVzcwQHbWF4VXNkdAkAawMFBm1heFdsZwUIYnV5UHJpY2UFBU1VTFQ4BAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgUDbmlsCQDMCAIFCXdsZ0Ftb3VudAkAzAgCBQ5NSU5TSE9QUEFZTUVOVAkAzAgCBQdtYXhVc2R0CQDMCAIFDHByb2ZpdEFtb3VudAUDbmlsAWkBB3NlbGxXbGcBCW1pbkFtb3VudAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAQGY2FsbGVyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUGY2FsbGVyBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQRhZGRyAwkAZgIFBndsZ0FtdAUGbWF4V2xnCQACAQkArAICCQCsAgICEllvdSBjYW4gc3BlbmQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQECXNlbGxQcmljZQkAaQIJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UAAgQHdXNkdEFtdAkAawMFBndsZ0FtdAUJc2VsbFByaWNlBQVNVUxUOAMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQDCQBmAgUJbWluQW1vdW50BQd1c2R0QW10CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAUJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBlAgUMY3VyV2xnQW1vdW50BQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUEYWRkcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQ1wcm9maXRBZGRyS2V5BQxwcm9maXRBbW91bnQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUHdXNkdEFtdAULdXNkdEFzc2V0SWQFA25pbAUMcHJvbG9nUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3NlbGxXbGdSRUFET05MWQIHYWRkcmVzcwZ3bGdBbXQEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFB2FkZHJlc3MECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAlzZWxsUHJpY2UJAGkCCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlAAIEB3VzZHRBbXQJAGsDBQZ3bGdBbXQFCXNlbGxQcmljZQUFTVVMVDgEBm1pbldsZwkAawMFDk1JTlNIT1BQQVlNRU5UBQVNVUxUOAUJc2VsbFByaWNlBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAUJAJQKAgUDbmlsCQDMCAIFB3VzZHRBbXQJAMwIAgUGbWluV2xnCQDMCAIFBm1heFdsZwkAzAgCBQxwcm9maXRBbW91bnQFA25pbAFpAQVjbGFpbQAEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEDSR0MDExOTMzMTIwMDIJAQ5jbGFpbUludGVybmFsMgEJAKUIAQgFAWkGY2FsbGVyBAdhY3Rpb25zCAUNJHQwMTE5MzMxMjAwMgJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDExOTMzMTIwMDICXzIJAJQKAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEHdsZ0NsYWltZWRBbW91bnQFCndsZ0Fzc2V0SWQFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJvblN0YWtlVW5zdGFrZUxhbmQBBGFkZHIDAwMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQECIT0CCAUBaQZjYWxsZXIFDWFjcmVzQ29udHJhY3QHCQECIT0CCAUBaQZjYWxsZXIFDmFjcmVzMkNvbnRyYWN0BwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA0kdDAxMjMyMTEyMzc1CQEOY2xhaW1JbnRlcm5hbDIBBQRhZGRyBAdhY3Rpb25zCAUNJHQwMTIzMjExMjM3NQJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDEyMzIxMTIzNzUCXzIJAJQKAgMJAGYCBRB3bGdDbGFpbWVkQW1vdW50AAAJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgUQd2xnQ2xhaW1lZEFtb3VudAUKd2xnQXNzZXRJZAUHYWN0aW9ucwUQd2xnQ2xhaW1lZEFtb3VudAFpAQpidXJuV2xnb2xkAQZ3bGdBbXQDCQECIT0CCAUBaQZjYWxsZXIFDmFjcmVzMkNvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAAAwkAZgIFBndsZ0FtdAkAkQMCBQhjdXJTdGF0cwUIaXhXbGdXbGcJAAIBCQCsAgIJAKwCAgkArAICAgVPbmx5IAkBCmZpeGVkUG9pbnQCCQCRAwIFCGN1clN0YXRzBQhpeFdsZ1dsZwAIAiUgV0xHT0xEIGxlZnQgb24gY29udHJhY3QsIGNhbid0IGJ1cm4gCQEKZml4ZWRQb2ludAIFBndsZ0FtdAAIBA13bGdBbW91bnRMZWZ0CQBlAgkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQFBndsZ0FtdAkAlAoCCQDMCAIJAQRCdXJuAgUKd2xnQXNzZXRJZAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDXdsZ0Ftb3VudExlZnQFA25pbAUNd2xnQW1vdW50TGVmdAFpAQxiZXRGb3JUaWNrZXQBA2JldAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQIhPQIJAGkCBQNiZXQABAAACQACAQIbSW52YWxpZCBiZXQ6IHNob3VsZCBiZSAwLi4zBAZtb21lbnQJAGoCBQZoZWlnaHQFCkRBWV9CTE9DS1MDCQBmAgUGbW9tZW50CQBlAgUKREFZX0JMT0NLUwADCQACAQkArAICCQCsAgICMUNhbm5vdCBiZXQ6IHRoZSBkYXkgaXMgYWxtb3N0IGVuZGVkLCBwbGVhc2Ugd2FpdCAJAKQDAQkAZQIFCkRBWV9CTE9DS1MFBm1vbWVudAIHIGJsb2NrcwQEYWRkcgkApQgBCAUBaQZjYWxsZXIEC3N0YWtlZEFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQRhZGRyAAAEA2x2bAkBD2dldExldmVsQnlBY3JlcwEFC3N0YWtlZEFjcmVzAwkAAAIFA2x2bAAACQACAQIjWW91IG5lZWQgdG8gc3Rha2Ugc29tZSBBQ1JFUyB0byBiZXQECHRvbW9ycm93CQBkAgkAaQIFBmhlaWdodAUKREFZX0JMT0NLUwABBAZiZXRLZXkJAQprZXlVc2VyQmV0AQUEYWRkcgQKdXNlckJldFN0cgkAoggBBQZiZXRLZXkEC25ld0JldEVudHJ5CQELU3RyaW5nRW50cnkCBQZiZXRLZXkJAKwCAgkArAICCQCkAwEFCHRvbW9ycm93AgFfCQCkAwEFA2JldAMJAQlpc0RlZmluZWQBBQp1c2VyQmV0U3RyBAd1c2VyQmV0CQEFdmFsdWUBBQp1c2VyQmV0U3RyAwkAAAIJAJEDAgkAtQkCBQd1c2VyQmV0AgFfAAAJAKQDAQUIdG9tb3Jyb3cJAAIBAhxZb3UgYWxyZWFkeSBiZXQgZm9yIHRvbW9ycm93BAFyCQEUY2xhaW1UaWNrZXRzSW50ZXJuYWwCBQRhZGRyBQd1c2VyQmV0CQCUCgIJAM0IAgkAzQgCCAUBcgJfMQgFAXICXzIFC25ld0JldEVudHJ5CAUBcgJfMgkAlAoCCQDMCAIFC25ld0JldEVudHJ5BQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxjbGFpbVRpY2tldHMABAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQKdXNlckJldFN0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQprZXlVc2VyQmV0AQUEYWRkcgIcWW91IGhhdmUgbm8gdGlja2V0cyB0byBjbGFpbQQBcgkBFGNsYWltVGlja2V0c0ludGVybmFsAgUEYWRkcgUKdXNlckJldFN0cgkAlAoCCQDNCAIIBQFyAl8xCAUBcgJfMggFAXICXzMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJdGFrZVdsZ1hwAQRhZGRyAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMjA0MzkyMDQ4MgkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdhY3Rpb25zCAUNJHQwMjA0MzkyMDQ4MgJfMQQCeHAIBQ0kdDAyMDQzOTIwNDgyAl8yCQCUCgIFB2FjdGlvbnMFAnhwAWkBEmNoZWNrV2xnWHBSRUFET05MWQEEYWRkcgQNJHQwMjA1NTkyMDYwNwkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdpZ25vcmVkCAUNJHQwMjA1NTkyMDYwNwJfMQQHZGVsdGFYUAgFDSR0MDIwNTU5MjA2MDcCXzIEBW5ld1hQCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQlrZXlVc2VyWFABBQRhZGRyAAAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleVVzZXJMZXZlbAEFBGFkZHIAAAUFbmV3WFAJAJQKAgUDbmlsCQDNCAIFCWx2bFBvaW50cwUFbmV3WFAARs76Zg==", "height": 3375627, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DDcidiwvRopooNb6KPA5bzJxz5JBZPoB2Wu5Z2aRrujh Next: 5HCYZ5sZ7T97L6sD4uAdTCSoEiNoa79Y16oNJU5ZuvVS Diff:
OldNewDifferences
3232 else throw("Unknown chain")
3333 }
3434
35-let g = {
36- let d = b
37- if ((base58'2W' == d))
38- then a
39- else if ((base58'2T' == d))
40- then 60000
41- else throw("Unknown chain")
42- }
35+let g = "__"
4336
44-let h = "__"
37+let h = 1000000
4538
46-let i = 1000000
39+let i = 100000000
4740
48-let j = 100000000
41+let j = 100000
4942
50-let k = 100000
51-
52-func l (m,n) = valueOrErrorMessage(getString(m, n), makeString(["mandatory ", toString(m), ".", n, " is not defined"], ""))
43+func k (l,m) = valueOrErrorMessage(getString(l, m), makeString(["mandatory ", toString(l), ".", m, " is not defined"], ""))
5344
5445
55-let o = 1
46+let n = 1
5647
57-let p = 4
48+let o = 4
5849
59-let q = 5
50+let p = 5
6051
61-let r = 6
52+let q = 6
6253
63-let s = 8
54+let r = 8
6455
65-func t () = "%s__restConfig"
56+func s () = "%s__restConfig"
6657
6758
68-func u () = "%s__restAddr"
59+func t () = "%s__restAddr"
6960
7061
71-func v () = "%s__rest2Addr"
62+func u () = "%s__rest2Addr"
7263
7364
74-func w (x) = split_4C(l(x, t()), h)
65+func v (w) = split_4C(k(w, s()), g)
7566
7667
77-func y (z,A) = valueOrErrorMessage(addressFromString(z[A]), ("Rest cfg doesn't contain address at index " + toString(A)))
68+func x (y,z) = valueOrErrorMessage(addressFromString(y[z]), ("Rest cfg doesn't contain address at index " + toString(z)))
7869
7970
80-let B = addressFromStringValue(valueOrElse(getString(this, u()), e))
71+let A = addressFromStringValue(valueOrElse(getString(this, t()), e))
8172
82-let z = w(B)
73+let y = v(A)
8374
84-let C = y(z, o)
75+let B = x(y, n)
8576
86-let D = y(z, p)
77+let C = x(y, o)
8778
88-let E = y(z, q)
79+let D = x(y, p)
8980
90-let F = y(z, r)
81+let E = x(y, q)
9182
92-let G = y(z, s)
83+let F = x(y, r)
9384
94-let H = "wlg_assetId"
85+let G = "wlg_assetId"
9586
96-let I = valueOrErrorMessage(getBinary(D, H), "WLGOLD is not issued yet")
87+let H = valueOrErrorMessage(getBinary(C, G), "WLGOLD is not issued yet")
9788
98-func J (K) = {
99- let d = K
89+func I (J) = {
90+ let d = J
10091 if ($isInstanceOf(d, "Int"))
10192 then {
102- let L = d
103- L
93+ let K = d
94+ K
10495 }
10596 else throw("fail to cast into Int")
10697 }
10798
10899
109-func M (N,O) = {
110- let P = pow(10, 0, O, 0, 0, DOWN)
111- let Q = toString((N % P))
112- let R = drop(toString(P), (1 + size(Q)))
113- (((toString((N / P)) + ".") + R) + Q)
100+func L (M,N) = {
101+ let O = pow(10, 0, N, 0, 0, DOWN)
102+ let P = toString((M % O))
103+ let Q = drop(toString(O), (1 + size(P)))
104+ (((toString((M / O)) + ".") + Q) + P)
114105 }
115106
116107
117-let S = 100000000
108+let R = 100000000
118109
119-let T = 3200
110+let S = 3200
120111
121-let U = 4000
112+let T = 4000
122113
123-let V = 3
114+let U = 3
124115
125-let W = 100000000000
116+let V = 100000000000
126117
127-func X (Y) = ("userXP_" + Y)
118+func W (X) = ("userXP_" + X)
128119
129120
130-func Z (Y) = ("userLevel_" + Y)
121+func Y (X) = ("userLevel_" + X)
131122
132123
133-let aa = 10000
124+let Z = 10000
134125
135-func ab (ac) = fraction(T, pow(ac, 4, U, 4, 4, DOWN), S)
126+func aa (ab) = fraction(S, pow(ab, 4, T, 4, 4, DOWN), R)
136127
137128
138-func ad (ae,af) = {
139- let ag = ab(af)
140-[ag, (V * (ag - ae))]
129+func ac (ad,ae) = {
130+ let af = aa(ae)
131+[af, (U * (af - ad))]
141132 }
142133
143134
144-let ah = 100000000000000
135+let ag = 100000000000000
145136
146-let ai = 400000
137+let ah = 400000
147138
148-let aj = 86400000
139+let ai = 86400000
149140
150-let ak = "teamAddr"
141+let aj = "teamAddr"
151142
152-let al = "lastClaimedTime_team"
143+let ak = "lastClaimedTime_team"
153144
154-let am = "teamAmountLeft"
145+let al = "teamAmountLeft"
155146
156-let an = "lastClaimedTime_activities"
147+let am = "lastClaimedTime_activities"
157148
158-let ao = "activitiesAmountLeft"
149+let an = "activitiesAmountLeft"
159150
160-let ap = "stakersAmountLeft"
151+let ao = "stakersAmountLeft"
161152
162-func aq (Y) = ("lastArbTimeUser_" + Y)
153+func ap (X) = ("lastArbTimeUser_" + X)
154+
155+
156+func aq (X) = ("lastWlgLimitUser_" + X)
163157
164158
165159 let ar = "wlg_issueTime"
166160
167161 let as = "wlg_issuedAmount"
168162
169-func at (Y) = ("acresStakedAmountByUser_" + Y)
163+func at (X) = ("acresStakedAmountByUser_" + X)
170164
171165
172-func au (Y) = ("wlgStakedAmountByUser_" + Y)
166+func au (X) = ("wlgStakedAmountByUser_" + X)
173167
174168
175169 let av = "wlgStakedAmountTotal"
176170
177-func aw (Y) = ("wlgStakedTimeByUser_" + Y)
171+func aw (X) = ("wlgStakedTimeByUser_" + X)
178172
179173
180174 let ax = 1000000
217211
218212 let aQ = "stakersAmountLeft"
219213
220-func aR (Y) = ("lastClaimedTimeUser_" + Y)
214+func aR (X) = ("lastClaimedTimeUser_" + X)
221215
222216
223217 func aS (aT,aU) = fraction(aT, (aB * (aU + 1)), (6 * ax))
231225
232226 let aY = "zbill_issuedAmount"
233227
234-func aZ (Y) = ("acresStakedAmountByUser_" + Y)
228+func aZ (X) = ("acresStakedAmountByUser_" + X)
235229
236230
237231 let ba = "totalFarmingPower"
280274 }
281275
282276
283-func bB (Y) = ("userBet_" + Y)
277+func bB (X) = ("userBet_" + X)
284278
285279
286-func bC (Y) = ("userTickets_" + Y)
280+func bC (X) = ("userTickets_" + X)
287281
288282
289283 let bD = "totalTickets"
404398
405399 let cX = "stakersAmountPaidTotal"
406400
407-func cY (Y) = ("stakersAmountPaidUser_" + Y)
401+func cY (X) = ("stakersAmountPaidUser_" + X)
408402
409403
410-let cZ = addressFromStringValue(valueOrElse(getString(this, v()), cV))
404+let cZ = addressFromStringValue(valueOrElse(getString(this, u()), cV))
411405
412406 let bx = addressFromStringValue(f)
413407
414-func da () = J(reentrantInvoke(bx, "saveLastTx", nil, nil))
408+func da () = I(reentrantInvoke(bx, "saveLastTx", nil, nil))
415409
416410
417-func db (Y) = {
418- let dc = valueOrElse(getInteger(aq(Y)), 0)
419- let cl = lastBlock.timestamp
420- if ((g > (cl - dc)))
421- then throw((("Arbitrages are possible once a " + toString((g / 60000))) + "min"))
422- else valueOrElse(getInteger(bx, at(Y)), 0)
411+func db (X) = {
412+ let dc = valueOrElse(getInteger(ap(X)), 0)
413+ let dd = valueOrElse(getInteger(bx, at(X)), 0)
414+ let de = valueOrElse(getInteger(aq(X)), dd)
415+ let df = (de + fraction(dd, (lastBlock.timestamp - dc), a))
416+ min([df, dd])
423417 }
424418
425419
426-func dd (Y) = {
427- let de = bY(Y, [cZ, bx, D, E, F], c, 0)
428- let df = aR(Y)
429- let cz = valueOrElse(getInteger(df), 0)
430- let dg = de[bS]
431- if ((cz == dg))
420+func dg (X) = {
421+ let dh = bY(X, [cZ, bx, C, D, E], c, 0)
422+ let di = aR(X)
423+ let cz = valueOrElse(getInteger(di), 0)
424+ let dj = dh[bS]
425+ if ((cz == dj))
432426 then $Tuple2(nil, 0)
433427 else {
434428 let cl = lastBlock.timestamp
435- let cm = de[bL]
436- let cp = de[bM]
437- let dh = (de[bN] + de[bV])
438- let di = if ((dh > 0))
439- then [ScriptTransfer(addressFromStringValue(value(getString(ak))), dh, I)]
429+ let cm = dh[bL]
430+ let cp = dh[bM]
431+ let dk = (dh[bN] + dh[bV])
432+ let dl = if ((dk > 0))
433+ then [ScriptTransfer(addressFromStringValue(value(getString(aj))), dk, H)]
440434 else nil
441- let cv = de[bO]
442- let dj = de[bP]
443- let dk = if ((dj > 0))
444- then [ScriptTransfer(B, dj, I)]
435+ let cv = dh[bO]
436+ let dm = dh[bP]
437+ let dn = if ((dm > 0))
438+ then [ScriptTransfer(A, dm, H)]
445439 else nil
446- let dl = de[bU]
447- let dm = if ((dl > 0))
448- then [ScriptTransfer(addressFromStringValue(value(getString(aK))), dl, I)]
440+ let do = dh[bU]
441+ let dp = if ((do > 0))
442+ then [ScriptTransfer(addressFromStringValue(value(getString(aK))), do, H)]
449443 else nil
450- let cM = de[bR]
451- let dn = cY(Y)
452- let do = (cM + de[bW])
453- let dp = de[bT]
454- $Tuple2(((([Reissue(I, dp, true), IntegerEntry(as, (de[bI] + dp)), IntegerEntry(aV, de[bX]), IntegerEntry(dn, (valueOrElse(getInteger(dn), 0) + cM)), IntegerEntry(cX, (valueOrElse(getInteger(cX), 0) + cM)), IntegerEntry(ap, (de[bQ] - cM)), IntegerEntry(am, ((cp - dh) + de[bV])), IntegerEntry(al, cl), IntegerEntry(ao, (cv - dj)), IntegerEntry(an, cl), IntegerEntry(df, dg)] ++ di) ++ dk) ++ dm), do)
444+ let cM = dh[bR]
445+ let dq = cY(X)
446+ let dr = (cM + dh[bW])
447+ let ds = dh[bT]
448+ $Tuple2(((([Reissue(H, ds, true), IntegerEntry(as, (dh[bI] + ds)), IntegerEntry(aV, dh[bX]), IntegerEntry(dq, (valueOrElse(getInteger(dq), 0) + cM)), IntegerEntry(cX, (valueOrElse(getInteger(cX), 0) + cM)), IntegerEntry(ao, (dh[bQ] - cM)), IntegerEntry(al, ((cp - dk) + dh[bV])), IntegerEntry(ak, cl), IntegerEntry(an, (cv - dm)), IntegerEntry(am, cl), IntegerEntry(di, dj)] ++ dl) ++ dn) ++ dp), dr)
455449 }
456450 }
457451
458452
459-func dq (Y,dr) = {
453+func dt (X,du) = {
460454 let cl = lastBlock.timestamp
461- let ds = aw(Y)
462- let dt = au(Y)
463- let dc = valueOrElse(getInteger(ds), 0)
464- let du = valueOrElse(getInteger(dt), 0)
465- let dv = valueOrElse(getInteger(av), 0)
466- let ac = fraction(fraction(aa, du, W), (dc - cl), aj)
467- $Tuple3([IntegerEntry(ds, cl), IntegerEntry(dt, (du + dr)), IntegerEntry(av, (dv + dr))], ac, du)
455+ let dv = aw(X)
456+ let dw = au(X)
457+ let dc = valueOrElse(getInteger(dv), 0)
458+ let dx = valueOrElse(getInteger(dw), 0)
459+ let dy = valueOrElse(getInteger(av), 0)
460+ let ab = fraction(fraction(Z, dx, V), (dc - cl), ai)
461+ $Tuple3([IntegerEntry(dv, cl), IntegerEntry(dw, (dx + du)), IntegerEntry(av, (dy + du))], ab, dx)
468462 }
469463
470464
471-func dw (Y,dx) = {
472- let dy = bD
473- let dz = bC(Y)
474- let dA = bB(Y)
475- let dB = split(dx, "_")
476- let dC = valueOrElse(getInteger(dy), 0)
477- let dD = valueOrElse(getInteger(dz), 0)
478- let dE = if ((bE(parseIntValue(dB[0])) == parseIntValue(dB[1])))
465+func dz (X,dA) = {
466+ let dB = bD
467+ let dC = bC(X)
468+ let dD = bB(X)
469+ let dE = split(dA, "_")
470+ let dF = valueOrElse(getInteger(dB), 0)
471+ let dG = valueOrElse(getInteger(dC), 0)
472+ let dH = if ((bE(parseIntValue(dE[0])) == parseIntValue(dE[1])))
479473 then 1
480474 else 0
481- $Tuple3(if ((dE == 0))
475+ $Tuple3(if ((dH == 0))
482476 then nil
483- else [IntegerEntry(dz, (dD + dE)), IntegerEntry(dy, (dC + dE))], DeleteEntry(dA), dE)
477+ else [IntegerEntry(dC, (dG + dH)), IntegerEntry(dB, (dF + dH))], DeleteEntry(dD), dH)
484478 }
485479
486480
487-@Callable(dF)
488-func constructorV1 (dG,dH,cr,dI) = if ((dF.caller != this))
481+@Callable(dI)
482+func constructorV1 (dJ,dK,cr,dL) = if ((dI.caller != this))
489483 then throw("Permission denied")
490- else if (isDefined(getBinary(H)))
484+ else if (isDefined(getBinary(G)))
491485 then throw("Already initialized")
492486 else {
493- let aT = ah
494- let dJ = Issue("WLGOLD", "WavesLands Gold investment token", aT, 8, true, unit, 0)
495- let dK = calculateAssetId(dJ)
496-[dJ, IntegerEntry(ar, lastBlock.timestamp), IntegerEntry(as, aT), IntegerEntry(cX, 0), IntegerEntry(ap, fraction(ah, ai, i)), BinaryEntry(H, dK), StringEntry(u(), dG), StringEntry(aK, dH), StringEntry(ak, cr), StringEntry(cW, dI)]
487+ let aT = ag
488+ let dM = Issue("WLGOLD", "WavesLands Gold investment token", aT, 8, true, unit, 0)
489+ let dN = calculateAssetId(dM)
490+[dM, IntegerEntry(ar, lastBlock.timestamp), IntegerEntry(as, aT), IntegerEntry(cX, 0), IntegerEntry(ao, fraction(ag, ah, h)), BinaryEntry(G, dN), StringEntry(t(), dJ), StringEntry(aK, dK), StringEntry(aj, cr), StringEntry(cW, dL)]
497491 }
498492
499493
500494
501-@Callable(dF)
502-func constructorV2 (dL) = if ((dF.caller != this))
495+@Callable(dI)
496+func constructorV2 (dO) = if ((dI.caller != this))
503497 then throw("Permission denied")
504- else [StringEntry(v(), dL)]
498+ else [StringEntry(u(), dO)]
505499
506500
507501
508-@Callable(dF)
509-func buyWlg (dM) = {
510- let dN = da()
511- if ((dN == dN))
512- then if ((size(dF.payments) != 1))
502+@Callable(dI)
503+func buyWlg (dP) = {
504+ let dQ = da()
505+ if ((dQ == dQ))
506+ then if ((size(dI.payments) != 1))
513507 then throw("exactly 1 payment must be attached")
514508 else {
515- let dO = dF.payments[0]
516- let dP = dO.amount
517- if (if (!(isDefined(dO.assetId)))
509+ let dR = dI.payments[0]
510+ let dS = dR.amount
511+ if (if (!(isDefined(dR.assetId)))
518512 then true
519- else (value(dO.assetId) != c))
513+ else (value(dR.assetId) != c))
520514 then throw("USDT payments only!")
521515 else {
522- let dQ = dF.caller
523- let Y = toString(dQ)
524- if ((k > dP))
525- then throw((("You can trade min " + M(k, 6)) + " USDT"))
516+ let dT = dI.caller
517+ let X = toString(dT)
518+ if ((j > dS))
519+ then throw((("You can trade min " + L(j, 6)) + " USDT"))
526520 else {
527- let de = bY("", [cZ, bx, D, E, F], c, dP)
528- let dR = de[bI]
529- let dS = de[bK]
530- let dT = fraction(dS, 6, 5)
531- let dU = fraction(dP, j, dT)
532- let dV = db(Y)
533- if ((dU > dV))
534- then throw((("You can get max " + M(dV, 8)) + " WLGOLD"))
535- else if ((dM > dU))
521+ let dh = bY("", [cZ, bx, C, D, E], c, dS)
522+ let dU = dh[bI]
523+ let dV = dh[bK]
524+ let dW = fraction(dV, 6, 5, CEILING)
525+ let dX = fraction(dS, i, dW)
526+ let dY = db(X)
527+ if ((dX > dY))
528+ then throw((("You can get max " + L(dY, 8)) + " WLGOLD at the moment"))
529+ else if ((dP > dX))
536530 then throw("Price changed during operation, please try again")
537531 else {
538- let dW = (dP / 6)
539- $Tuple2([Reissue(I, dU, true), IntegerEntry(as, (dR + dU)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dW, c), ScriptTransfer(dQ, dU, I)], dN)
532+ let dZ = (dS / 6)
533+ $Tuple2([Reissue(H, dX, true), IntegerEntry(as, (dU + dX)), IntegerEntry(ap(X), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dZ, c), ScriptTransfer(dT, dX, H)], dQ)
540534 }
541535 }
542536 }
546540
547541
548542
549-@Callable(dF)
550-func buyWlgREADONLY (m,dP) = {
551- let de = bY("", [cZ, bx, D, E, F], c, dP)
552- let dR = de[bI]
553- let dS = de[bK]
554- let dT = fraction(dS, 6, 5)
555- let dU = fraction(dP, j, dT)
556- let dV = db(m)
557- let dX = fraction(dV, dT, j)
558- let dW = (dP / 6)
559- $Tuple2(nil, [dU, k, dX, dW])
543+@Callable(dI)
544+func buyWlgREADONLY (l,dS) = {
545+ let dh = bY("", [cZ, bx, C, D, E], c, dS)
546+ let dV = dh[bK]
547+ let dW = fraction(dV, 6, 5, CEILING)
548+ let dX = fraction(dS, i, dW)
549+ let dY = db(l)
550+ let ea = fraction(dY, dW, i)
551+ let dZ = (dS / 6)
552+ $Tuple2(nil, [dX, j, ea, dZ])
560553 }
561554
562555
563556
564-@Callable(dF)
565-func sellWlg (dM) = {
566- let dN = da()
567- if ((dN == dN))
568- then if ((size(dF.payments) != 1))
557+@Callable(dI)
558+func sellWlg (eb) = {
559+ let dQ = da()
560+ if ((dQ == dQ))
561+ then if ((size(dI.payments) != 1))
569562 then throw("exactly 1 payment must be attached")
570563 else {
571- let dO = dF.payments[0]
572- let dY = dO.amount
573- let dQ = dF.caller
574- let Y = toString(dQ)
575- let dV = db(Y)
576- if ((dY > dV))
577- then throw((("You can spend max " + M(dV, 8)) + " WLGOLD"))
578- else if (if (!(isDefined(dO.assetId)))
564+ let dR = dI.payments[0]
565+ let ec = dR.amount
566+ let dT = dI.caller
567+ let X = toString(dT)
568+ let dY = db(X)
569+ if ((ec > dY))
570+ then throw((("You can spend max " + L(dY, 8)) + " WLGOLD at the moment"))
571+ else if (if (!(isDefined(dR.assetId)))
579572 then true
580- else (value(dO.assetId) != I))
573+ else (value(dR.assetId) != H))
581574 then throw("WLGOLD payments only!")
582575 else {
583- let de = bY("", [cZ, bx, D, E, F], c, 0)
584- let dR = de[bI]
585- let dZ = (de[bK] / 2)
586- let dP = fraction(dY, dZ, j)
587- if ((k > dP))
588- then throw((("You can trade min " + M(k, 6)) + " USDT"))
589- else if ((dM > dP))
576+ let dh = bY("", [cZ, bx, C, D, E], c, 0)
577+ let dU = dh[bI]
578+ let ed = (dh[bK] / 2)
579+ let dS = fraction(ec, ed, i)
580+ if ((j > dS))
581+ then throw((("You can trade min " + L(j, 6)) + " USDT"))
582+ else if ((eb > dS))
590583 then throw("Price changed during operation, please try again")
591584 else {
592- let dW = (dP / 5)
593- $Tuple2([Burn(I, dY), IntegerEntry(as, (dR - dY)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dW, c), ScriptTransfer(dQ, dP, c)], dN)
585+ let dZ = (dS / 5)
586+ $Tuple2([Burn(H, ec), IntegerEntry(as, (dU - ec)), IntegerEntry(ap(X), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dZ, c), ScriptTransfer(dT, dS, c)], dQ)
594587 }
595588 }
596589 }
599592
600593
601594
602-@Callable(dF)
603-func sellWlgREADONLY (m,dY) = {
604- let dV = db(m)
605- let de = bY("", [cZ, bx, D, E, F], c, 0)
606- let dR = de[bI]
607- let dZ = (de[bK] / 2)
608- let dP = fraction(dY, dZ, j)
609- let ea = fraction(k, j, dZ)
610- let dW = (dP / 5)
611- $Tuple2(nil, [dP, ea, dV, dW])
595+@Callable(dI)
596+func sellWlgREADONLY (l,ec) = {
597+ let dY = db(l)
598+ let dh = bY("", [cZ, bx, C, D, E], c, 0)
599+ let ed = (dh[bK] / 2)
600+ let dS = fraction(ec, ed, i)
601+ let ee = fraction(j, i, ed)
602+ let dZ = (dS / 5)
603+ $Tuple2(nil, [dS, ee, dY, dZ])
612604 }
613605
614606
615607
616-@Callable(dF)
608+@Callable(dI)
617609 func claim () = {
618- let dN = da()
619- if ((dN == dN))
620- then if ((size(dF.payments) != 0))
610+ let dQ = da()
611+ if ((dQ == dQ))
612+ then if ((size(dI.payments) != 0))
621613 then throw("No payments required")
622614 else {
623- let eb = dd(toString(dF.caller))
624- let ec = eb._1
625- let ed = eb._2
626- $Tuple2((ec :+ ScriptTransfer(dF.caller, ed, I)), dN)
615+ let ef = dg(toString(dI.caller))
616+ let eg = ef._1
617+ let eh = ef._2
618+ $Tuple2((eg :+ ScriptTransfer(dI.caller, eh, H)), dQ)
627619 }
628620 else throw("Strict value is not equal to itself.")
629621 }
630622
631623
632624
633-@Callable(dF)
634-func onStakeUnstakeLand (Y) = if (if (if ((dF.caller != C))
635- then (dF.caller != G)
625+@Callable(dI)
626+func onStakeUnstakeLand (X) = if (if (if ((dI.caller != B))
627+ then (dI.caller != F)
636628 else false)
637- then (dF.caller != bx)
629+ then (dI.caller != bx)
638630 else false)
639631 then throw("Permission denied")
640632 else {
641- let ee = dd(Y)
642- let ec = ee._1
643- let ed = ee._2
644- $Tuple2(if ((ed > 0))
645- then (ec :+ ScriptTransfer(addressFromStringValue(Y), ed, I))
646- else ec, ed)
633+ let ei = dg(X)
634+ let eg = ei._1
635+ let eh = ei._2
636+ $Tuple2(if ((eh > 0))
637+ then (eg :+ ScriptTransfer(addressFromStringValue(X), eh, H))
638+ else eg, eh)
647639 }
648640
649641
650642
651-@Callable(dF)
652-func burnWlgold (dY) = if ((dF.caller != bx))
643+@Callable(dI)
644+func burnWlgold (ec) = if ((dI.caller != bx))
653645 then throw("Permission denied")
654646 else {
655- let de = bY("", [cZ, bx, D, E, F], c, 0)
656- if ((dY > de[bJ]))
657- then throw(((("Only " + M(de[bJ], 8)) + " WLGOLD left on contract, can't burn ") + M(dY, 8)))
647+ let dh = bY("", [cZ, bx, C, D, E], c, 0)
648+ if ((ec > dh[bJ]))
649+ then throw(((("Only " + L(dh[bJ], 8)) + " WLGOLD left on contract, can't burn ") + L(ec, 8)))
658650 else {
659- let ef = (de[bI] - dY)
660- $Tuple2([Burn(I, dY), IntegerEntry(as, ef)], ef)
651+ let ej = (dh[bI] - ec)
652+ $Tuple2([Burn(H, ec), IntegerEntry(as, ej)], ej)
661653 }
662654 }
663655
664656
665657
666-@Callable(dF)
667-func betForTicket (eg) = {
668- let dN = da()
669- if ((dN == dN))
670- then if ((size(dF.payments) != 0))
658+@Callable(dI)
659+func betForTicket (ek) = {
660+ let dQ = da()
661+ if ((dQ == dQ))
662+ then if ((size(dI.payments) != 0))
671663 then throw("No payments required")
672- else if (((eg / 4) != 0))
664+ else if (((ek / 4) != 0))
673665 then throw("Invalid bet: should be 0..3")
674666 else {
675- let eh = (height % aE)
676- if ((eh > (aE - 3)))
677- then throw((("Cannot bet: the day is almost ended, please wait " + toString((aE - eh))) + " blocks"))
667+ let el = (height % aE)
668+ if ((el > (aE - 3)))
669+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((aE - el))) + " blocks"))
678670 else {
679- let Y = toString(dF.caller)
680- let ei = valueOrElse(getInteger(bx, aZ(Y)), 0)
681- let ej = bh(ei)
682- if ((ej == 0))
671+ let X = toString(dI.caller)
672+ let em = valueOrElse(getInteger(bx, aZ(X)), 0)
673+ let en = bh(em)
674+ if ((en == 0))
683675 then throw("You need to stake some ACRES to bet")
684676 else {
685- let ek = ((height / aE) + 1)
686- let dA = bB(Y)
687- let dx = getString(dA)
688- let el = StringEntry(dA, ((toString(ek) + "_") + toString(eg)))
689- if (isDefined(dx))
677+ let eo = ((height / aE) + 1)
678+ let dD = bB(X)
679+ let dA = getString(dD)
680+ let ep = StringEntry(dD, ((toString(eo) + "_") + toString(ek)))
681+ if (isDefined(dA))
690682 then {
691- let em = value(dx)
692- if ((split(em, "_")[0] == toString(ek)))
683+ let eq = value(dA)
684+ if ((split(eq, "_")[0] == toString(eo)))
693685 then throw("You already bet for tomorrow")
694686 else {
695- let en = dw(Y, em)
696- $Tuple2(((en._1 :+ en._2) :+ el), en._2)
687+ let er = dz(X, eq)
688+ $Tuple2(((er._1 :+ er._2) :+ ep), er._2)
697689 }
698690 }
699- else $Tuple2([el], 0)
691+ else $Tuple2([ep], 0)
700692 }
701693 }
702694 }
705697
706698
707699
708-@Callable(dF)
700+@Callable(dI)
709701 func claimTickets () = {
710- let dN = da()
711- if ((dN == dN))
712- then if ((size(dF.payments) != 0))
702+ let dQ = da()
703+ if ((dQ == dQ))
704+ then if ((size(dI.payments) != 0))
713705 then throw("No payments required")
714706 else {
715- let Y = toString(dF.caller)
716- let dx = valueOrErrorMessage(getString(bB(Y)), "You have no tickets to claim")
717- let en = dw(Y, dx)
718- $Tuple2((en._1 :+ en._2), en._3)
707+ let X = toString(dI.caller)
708+ let dA = valueOrErrorMessage(getString(bB(X)), "You have no tickets to claim")
709+ let er = dz(X, dA)
710+ $Tuple2((er._1 :+ er._2), er._3)
719711 }
720712 else throw("Strict value is not equal to itself.")
721713 }
722714
723715
724716
725-@Callable(dF)
726-func takeWlgXp (Y) = if ((dF.caller != C))
717+@Callable(dI)
718+func takeWlgXp (X) = if ((dI.caller != B))
727719 then throw("Permission denied")
728720 else {
729- let eo = dq(Y, 0)
730- let ec = eo._1
731- let ac = eo._2
732- $Tuple2(ec, ac)
721+ let es = dt(X, 0)
722+ let eg = es._1
723+ let ab = es._2
724+ $Tuple2(eg, ab)
733725 }
734726
735727
736728
737-@Callable(dF)
738-func checkWlgXpREADONLY (Y) = {
739- let ep = dq(Y, 0)
740- let eq = ep._1
741- let er = ep._2
742- let af = (valueOrElse(getInteger(C, X(Y)), 0) + er)
743- let es = ad(valueOrElse(getInteger(C, Z(Y)), 0), af)
744- $Tuple2(nil, (es :+ af))
729+@Callable(dI)
730+func checkWlgXpREADONLY (X) = {
731+ let et = dt(X, 0)
732+ let eu = et._1
733+ let ev = et._2
734+ let ae = (valueOrElse(getInteger(B, W(X)), 0) + ev)
735+ let ew = ac(valueOrElse(getInteger(B, Y(X)), 0), ae)
736+ $Tuple2(nil, (ew :+ ae))
745737 }
746738
747739
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 let b = take(drop(this.bytes, 1), 1)
77
88 let c = {
99 let d = b
1010 if ((base58'2W' == d))
1111 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1212 else if ((base58'2T' == d))
1313 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
1414 else throw("Unknown chain")
1515 }
1616
1717 let e = {
1818 let d = b
1919 if ((base58'2W' == d))
2020 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
2121 else if ((base58'2T' == d))
2222 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
2323 else throw("Unknown chain")
2424 }
2525
2626 let f = {
2727 let d = b
2828 if ((base58'2W' == d))
2929 then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA"
3030 else if ((base58'2T' == d))
3131 then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh"
3232 else throw("Unknown chain")
3333 }
3434
35-let g = {
36- let d = b
37- if ((base58'2W' == d))
38- then a
39- else if ((base58'2T' == d))
40- then 60000
41- else throw("Unknown chain")
42- }
35+let g = "__"
4336
44-let h = "__"
37+let h = 1000000
4538
46-let i = 1000000
39+let i = 100000000
4740
48-let j = 100000000
41+let j = 100000
4942
50-let k = 100000
51-
52-func l (m,n) = valueOrErrorMessage(getString(m, n), makeString(["mandatory ", toString(m), ".", n, " is not defined"], ""))
43+func k (l,m) = valueOrErrorMessage(getString(l, m), makeString(["mandatory ", toString(l), ".", m, " is not defined"], ""))
5344
5445
55-let o = 1
46+let n = 1
5647
57-let p = 4
48+let o = 4
5849
59-let q = 5
50+let p = 5
6051
61-let r = 6
52+let q = 6
6253
63-let s = 8
54+let r = 8
6455
65-func t () = "%s__restConfig"
56+func s () = "%s__restConfig"
6657
6758
68-func u () = "%s__restAddr"
59+func t () = "%s__restAddr"
6960
7061
71-func v () = "%s__rest2Addr"
62+func u () = "%s__rest2Addr"
7263
7364
74-func w (x) = split_4C(l(x, t()), h)
65+func v (w) = split_4C(k(w, s()), g)
7566
7667
77-func y (z,A) = valueOrErrorMessage(addressFromString(z[A]), ("Rest cfg doesn't contain address at index " + toString(A)))
68+func x (y,z) = valueOrErrorMessage(addressFromString(y[z]), ("Rest cfg doesn't contain address at index " + toString(z)))
7869
7970
80-let B = addressFromStringValue(valueOrElse(getString(this, u()), e))
71+let A = addressFromStringValue(valueOrElse(getString(this, t()), e))
8172
82-let z = w(B)
73+let y = v(A)
8374
84-let C = y(z, o)
75+let B = x(y, n)
8576
86-let D = y(z, p)
77+let C = x(y, o)
8778
88-let E = y(z, q)
79+let D = x(y, p)
8980
90-let F = y(z, r)
81+let E = x(y, q)
9182
92-let G = y(z, s)
83+let F = x(y, r)
9384
94-let H = "wlg_assetId"
85+let G = "wlg_assetId"
9586
96-let I = valueOrErrorMessage(getBinary(D, H), "WLGOLD is not issued yet")
87+let H = valueOrErrorMessage(getBinary(C, G), "WLGOLD is not issued yet")
9788
98-func J (K) = {
99- let d = K
89+func I (J) = {
90+ let d = J
10091 if ($isInstanceOf(d, "Int"))
10192 then {
102- let L = d
103- L
93+ let K = d
94+ K
10495 }
10596 else throw("fail to cast into Int")
10697 }
10798
10899
109-func M (N,O) = {
110- let P = pow(10, 0, O, 0, 0, DOWN)
111- let Q = toString((N % P))
112- let R = drop(toString(P), (1 + size(Q)))
113- (((toString((N / P)) + ".") + R) + Q)
100+func L (M,N) = {
101+ let O = pow(10, 0, N, 0, 0, DOWN)
102+ let P = toString((M % O))
103+ let Q = drop(toString(O), (1 + size(P)))
104+ (((toString((M / O)) + ".") + Q) + P)
114105 }
115106
116107
117-let S = 100000000
108+let R = 100000000
118109
119-let T = 3200
110+let S = 3200
120111
121-let U = 4000
112+let T = 4000
122113
123-let V = 3
114+let U = 3
124115
125-let W = 100000000000
116+let V = 100000000000
126117
127-func X (Y) = ("userXP_" + Y)
118+func W (X) = ("userXP_" + X)
128119
129120
130-func Z (Y) = ("userLevel_" + Y)
121+func Y (X) = ("userLevel_" + X)
131122
132123
133-let aa = 10000
124+let Z = 10000
134125
135-func ab (ac) = fraction(T, pow(ac, 4, U, 4, 4, DOWN), S)
126+func aa (ab) = fraction(S, pow(ab, 4, T, 4, 4, DOWN), R)
136127
137128
138-func ad (ae,af) = {
139- let ag = ab(af)
140-[ag, (V * (ag - ae))]
129+func ac (ad,ae) = {
130+ let af = aa(ae)
131+[af, (U * (af - ad))]
141132 }
142133
143134
144-let ah = 100000000000000
135+let ag = 100000000000000
145136
146-let ai = 400000
137+let ah = 400000
147138
148-let aj = 86400000
139+let ai = 86400000
149140
150-let ak = "teamAddr"
141+let aj = "teamAddr"
151142
152-let al = "lastClaimedTime_team"
143+let ak = "lastClaimedTime_team"
153144
154-let am = "teamAmountLeft"
145+let al = "teamAmountLeft"
155146
156-let an = "lastClaimedTime_activities"
147+let am = "lastClaimedTime_activities"
157148
158-let ao = "activitiesAmountLeft"
149+let an = "activitiesAmountLeft"
159150
160-let ap = "stakersAmountLeft"
151+let ao = "stakersAmountLeft"
161152
162-func aq (Y) = ("lastArbTimeUser_" + Y)
153+func ap (X) = ("lastArbTimeUser_" + X)
154+
155+
156+func aq (X) = ("lastWlgLimitUser_" + X)
163157
164158
165159 let ar = "wlg_issueTime"
166160
167161 let as = "wlg_issuedAmount"
168162
169-func at (Y) = ("acresStakedAmountByUser_" + Y)
163+func at (X) = ("acresStakedAmountByUser_" + X)
170164
171165
172-func au (Y) = ("wlgStakedAmountByUser_" + Y)
166+func au (X) = ("wlgStakedAmountByUser_" + X)
173167
174168
175169 let av = "wlgStakedAmountTotal"
176170
177-func aw (Y) = ("wlgStakedTimeByUser_" + Y)
171+func aw (X) = ("wlgStakedTimeByUser_" + X)
178172
179173
180174 let ax = 1000000
181175
182176 let ay = 100000000
183177
184178 let az = 200000
185179
186180 let aA = 100000
187181
188182 let aB = 400000
189183
190184 let aC = 31557600000
191185
192186 let aD = 86400000
193187
194188 let aE = 1440
195189
196190 let aF = 1000000000
197191
198192 let aG = 800000
199193
200194 let aH = 100000
201195
202196 let aI = 100000
203197
204198 let aJ = 1731279600000
205199
206200 let aK = "marketingAddr"
207201
208202 let aL = "teamAddr"
209203
210204 let aM = "lastClaimedTime_team"
211205
212206 let aN = "teamAmountLeft"
213207
214208 let aO = "lastClaimedTime_activities"
215209
216210 let aP = "activitiesAmountLeft"
217211
218212 let aQ = "stakersAmountLeft"
219213
220-func aR (Y) = ("lastClaimedTimeUser_" + Y)
214+func aR (X) = ("lastClaimedTimeUser_" + X)
221215
222216
223217 func aS (aT,aU) = fraction(aT, (aB * (aU + 1)), (6 * ax))
224218
225219
226220 let aV = "wlg_issue10Time"
227221
228222 let aW = "wlg_issueTime"
229223
230224 let aX = "wlg_issuedAmount"
231225
232226 let aY = "zbill_issuedAmount"
233227
234-func aZ (Y) = ("acresStakedAmountByUser_" + Y)
228+func aZ (X) = ("acresStakedAmountByUser_" + X)
235229
236230
237231 let ba = "totalFarmingPower"
238232
239233 let bb = 0
240234
241235 let bc = 1
242236
243237 let bd = 2
244238
245239 let be = 3
246240
247241 let bf = 4
248242
249243 let bg = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
250244
251245 func bh (bi) = {
252246 let bj = ((bi + 99999999) / ay)
253247 func bk (bl,bm) = if ((bm >= bj))
254248 then bl
255249 else (bl + 1)
256250
257251 let bn = bg
258252 let bo = size(bn)
259253 let bp = 0
260254 func bq (br,bs) = if ((bs >= bo))
261255 then br
262256 else bk(br, bn[bs])
263257
264258 func bt (br,bs) = if ((bs >= bo))
265259 then br
266260 else throw("List size exceeds 10")
267261
268262 bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
269263 }
270264
271265
272266 func bu (bi) = ((bi * 20) * (bh(bi) + 4))
273267
274268
275269 func bv (bw,bx) = {
276270 let by = valueOrElse(getInteger(bx, ba), 0)
277271 let bz = valueOrElse(getInteger(bx, aZ(bw)), 0)
278272 let bA = bu(bz)
279273 [by, bA]
280274 }
281275
282276
283-func bB (Y) = ("userBet_" + Y)
277+func bB (X) = ("userBet_" + X)
284278
285279
286-func bC (Y) = ("userTickets_" + Y)
280+func bC (X) = ("userTickets_" + X)
287281
288282
289283 let bD = "totalTickets"
290284
291285 func bE (bF) = (toInt(value(value(blockInfoByHeight((bF * aE))).vrf)) % 4)
292286
293287
294288 let bG = 0
295289
296290 let bH = 1
297291
298292 let bI = 0
299293
300294 let bJ = 1
301295
302296 let bK = 2
303297
304298 let bL = 8
305299
306300 let bM = 11
307301
308302 let bN = 12
309303
310304 let bO = 15
311305
312306 let bP = 16
313307
314308 let bQ = 19
315309
316310 let bR = 23
317311
318312 let bS = 24
319313
320314 let bT = 25
321315
322316 let bU = 26
323317
324318 let bV = 27
325319
326320 let bW = 28
327321
328322 let bX = 29
329323
330324 func bY (bZ,ca,cb,cc) = {
331325 let aT = valueOrErrorMessage(getInteger(ca[bd], aX), "WLGOLD is not issued yet")
332326 let cd = assetBalance(ca[bb], cb)
333327 let ce = (assetBalance(ca[bd], cb) - cc)
334328 let cf = assetBalance(ca[be], cb)
335329 let cg = assetBalance(ca[bc], cb)
336330 let ch = ca[bf]
337331 let ci = (assetBalance(ch, cb) + valueOrElse(getInteger(ch, aY), 0))
338332 let cj = ((cg + ce) + ci)
339333 let ck = valueOrErrorMessage(getBinary(ca[bd], "wlg_assetId"), "Not initialized yet")
340334 let cl = lastBlock.timestamp
341335 let cm = valueOrErrorMessage(getInteger(ca[bd], aW), "Not initialized")
342336 let cn = assetBalance(ca[bd], ck)
343337 let co = fraction(aT, az, ax)
344338 let cp = valueOrElse(getInteger(ca[bd], aN), co)
345339 let cq = valueOrElse(getInteger(ca[bd], aM), cm)
346340 let cr = addressFromStringValue(value(getString(ca[bd], aL)))
347341 let cs = min([fraction(co, (cl - cq), (3 * aC)), cp])
348342 let ct = assetBalance(cr, ck)
349343 let cu = fraction(aT, aA, ax)
350344 let cv = valueOrElse(getInteger(ca[bd], aP), cu)
351345 let cw = valueOrElse(getInteger(ca[bd], aO), cm)
352346 let cx = min([fraction(cu, (cl - cw), (3 * aC)), cv])
353347 let cy = assetBalance(ca[bb], ck)
354348 let cz = valueOrElse(getInteger(ca[bd], aR(bZ)), cm)
355349 let cA = ((cz - cm) / aC)
356350 let cB = min([cl, (cm + (3 * aC))])
357351 let cC = min([((cl - cm) / aC), 2])
358352 let cD = bv(bZ, ca[bc])
359353 let cE = aS(aT, cC)
360354 let cF = (cm + (aC * cC))
361355 let cG = (cm + (aC * (cC - 1)))
362356 let cH = fraction(cE, (cB - cz), aC)
363357 let cI = if ((cA == cC))
364358 then cH
365359 else if ((cA == (cC - 1)))
366360 then {
367361 let cJ = fraction(aS(aT, (cC - 1)), (cF - cz), aC)
368362 (cJ + cH)
369363 }
370364 else {
371365 let cK = fraction(aS(aT, (cC - 2)), (cG - cz), aC)
372366 let cJ = aS(aT, (cC - 1))
373367 ((cK + cJ) + cH)
374368 }
375369 let cL = valueOrElse(getInteger(ca[bd], aQ), 0)
376370 let cM = if ((cD[bG] != 0))
377371 then fraction(cI, cD[bH], cD[bG])
378372 else 0
379373 let cN = valueOrElse(getInteger(ca[bd], aV), aJ)
380374 let cO = fraction(aF, max([(cl - cN), 0]), aD)
381375 let cP = fraction(cO, aH, ax)
382376 let cQ = fraction(cO, aI, ax)
383377 let cR = max([(cl - max([aJ, cz])), 0])
384378 let cS = if ((cD[bG] != 0))
385379 then fraction(fraction(fraction(aF, cR, aD), cD[bH], cD[bG]), aG, ax)
386380 else 0
387381 let cT = max([aJ, cl])
388382 [aT, cn, fraction(cj, ay, aT), cj, cd, cg, ce, cf, cm, cq, co, cp, cs, ct, cu, cv, cx, cy, cC, cL, cE, cz, ci, cM, cB, cO, cP, cQ, cS, cT, cD[bG]]
389383 }
390384
391385
392386 let cU = take(drop(this.bytes, 1), 1)
393387
394388 let cV = {
395389 let d = cU
396390 if ((base58'2W' == d))
397391 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
398392 else if ((base58'2T' == d))
399393 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
400394 else throw("Unknown chain")
401395 }
402396
403397 let cW = "profitAddr"
404398
405399 let cX = "stakersAmountPaidTotal"
406400
407-func cY (Y) = ("stakersAmountPaidUser_" + Y)
401+func cY (X) = ("stakersAmountPaidUser_" + X)
408402
409403
410-let cZ = addressFromStringValue(valueOrElse(getString(this, v()), cV))
404+let cZ = addressFromStringValue(valueOrElse(getString(this, u()), cV))
411405
412406 let bx = addressFromStringValue(f)
413407
414-func da () = J(reentrantInvoke(bx, "saveLastTx", nil, nil))
408+func da () = I(reentrantInvoke(bx, "saveLastTx", nil, nil))
415409
416410
417-func db (Y) = {
418- let dc = valueOrElse(getInteger(aq(Y)), 0)
419- let cl = lastBlock.timestamp
420- if ((g > (cl - dc)))
421- then throw((("Arbitrages are possible once a " + toString((g / 60000))) + "min"))
422- else valueOrElse(getInteger(bx, at(Y)), 0)
411+func db (X) = {
412+ let dc = valueOrElse(getInteger(ap(X)), 0)
413+ let dd = valueOrElse(getInteger(bx, at(X)), 0)
414+ let de = valueOrElse(getInteger(aq(X)), dd)
415+ let df = (de + fraction(dd, (lastBlock.timestamp - dc), a))
416+ min([df, dd])
423417 }
424418
425419
426-func dd (Y) = {
427- let de = bY(Y, [cZ, bx, D, E, F], c, 0)
428- let df = aR(Y)
429- let cz = valueOrElse(getInteger(df), 0)
430- let dg = de[bS]
431- if ((cz == dg))
420+func dg (X) = {
421+ let dh = bY(X, [cZ, bx, C, D, E], c, 0)
422+ let di = aR(X)
423+ let cz = valueOrElse(getInteger(di), 0)
424+ let dj = dh[bS]
425+ if ((cz == dj))
432426 then $Tuple2(nil, 0)
433427 else {
434428 let cl = lastBlock.timestamp
435- let cm = de[bL]
436- let cp = de[bM]
437- let dh = (de[bN] + de[bV])
438- let di = if ((dh > 0))
439- then [ScriptTransfer(addressFromStringValue(value(getString(ak))), dh, I)]
429+ let cm = dh[bL]
430+ let cp = dh[bM]
431+ let dk = (dh[bN] + dh[bV])
432+ let dl = if ((dk > 0))
433+ then [ScriptTransfer(addressFromStringValue(value(getString(aj))), dk, H)]
440434 else nil
441- let cv = de[bO]
442- let dj = de[bP]
443- let dk = if ((dj > 0))
444- then [ScriptTransfer(B, dj, I)]
435+ let cv = dh[bO]
436+ let dm = dh[bP]
437+ let dn = if ((dm > 0))
438+ then [ScriptTransfer(A, dm, H)]
445439 else nil
446- let dl = de[bU]
447- let dm = if ((dl > 0))
448- then [ScriptTransfer(addressFromStringValue(value(getString(aK))), dl, I)]
440+ let do = dh[bU]
441+ let dp = if ((do > 0))
442+ then [ScriptTransfer(addressFromStringValue(value(getString(aK))), do, H)]
449443 else nil
450- let cM = de[bR]
451- let dn = cY(Y)
452- let do = (cM + de[bW])
453- let dp = de[bT]
454- $Tuple2(((([Reissue(I, dp, true), IntegerEntry(as, (de[bI] + dp)), IntegerEntry(aV, de[bX]), IntegerEntry(dn, (valueOrElse(getInteger(dn), 0) + cM)), IntegerEntry(cX, (valueOrElse(getInteger(cX), 0) + cM)), IntegerEntry(ap, (de[bQ] - cM)), IntegerEntry(am, ((cp - dh) + de[bV])), IntegerEntry(al, cl), IntegerEntry(ao, (cv - dj)), IntegerEntry(an, cl), IntegerEntry(df, dg)] ++ di) ++ dk) ++ dm), do)
444+ let cM = dh[bR]
445+ let dq = cY(X)
446+ let dr = (cM + dh[bW])
447+ let ds = dh[bT]
448+ $Tuple2(((([Reissue(H, ds, true), IntegerEntry(as, (dh[bI] + ds)), IntegerEntry(aV, dh[bX]), IntegerEntry(dq, (valueOrElse(getInteger(dq), 0) + cM)), IntegerEntry(cX, (valueOrElse(getInteger(cX), 0) + cM)), IntegerEntry(ao, (dh[bQ] - cM)), IntegerEntry(al, ((cp - dk) + dh[bV])), IntegerEntry(ak, cl), IntegerEntry(an, (cv - dm)), IntegerEntry(am, cl), IntegerEntry(di, dj)] ++ dl) ++ dn) ++ dp), dr)
455449 }
456450 }
457451
458452
459-func dq (Y,dr) = {
453+func dt (X,du) = {
460454 let cl = lastBlock.timestamp
461- let ds = aw(Y)
462- let dt = au(Y)
463- let dc = valueOrElse(getInteger(ds), 0)
464- let du = valueOrElse(getInteger(dt), 0)
465- let dv = valueOrElse(getInteger(av), 0)
466- let ac = fraction(fraction(aa, du, W), (dc - cl), aj)
467- $Tuple3([IntegerEntry(ds, cl), IntegerEntry(dt, (du + dr)), IntegerEntry(av, (dv + dr))], ac, du)
455+ let dv = aw(X)
456+ let dw = au(X)
457+ let dc = valueOrElse(getInteger(dv), 0)
458+ let dx = valueOrElse(getInteger(dw), 0)
459+ let dy = valueOrElse(getInteger(av), 0)
460+ let ab = fraction(fraction(Z, dx, V), (dc - cl), ai)
461+ $Tuple3([IntegerEntry(dv, cl), IntegerEntry(dw, (dx + du)), IntegerEntry(av, (dy + du))], ab, dx)
468462 }
469463
470464
471-func dw (Y,dx) = {
472- let dy = bD
473- let dz = bC(Y)
474- let dA = bB(Y)
475- let dB = split(dx, "_")
476- let dC = valueOrElse(getInteger(dy), 0)
477- let dD = valueOrElse(getInteger(dz), 0)
478- let dE = if ((bE(parseIntValue(dB[0])) == parseIntValue(dB[1])))
465+func dz (X,dA) = {
466+ let dB = bD
467+ let dC = bC(X)
468+ let dD = bB(X)
469+ let dE = split(dA, "_")
470+ let dF = valueOrElse(getInteger(dB), 0)
471+ let dG = valueOrElse(getInteger(dC), 0)
472+ let dH = if ((bE(parseIntValue(dE[0])) == parseIntValue(dE[1])))
479473 then 1
480474 else 0
481- $Tuple3(if ((dE == 0))
475+ $Tuple3(if ((dH == 0))
482476 then nil
483- else [IntegerEntry(dz, (dD + dE)), IntegerEntry(dy, (dC + dE))], DeleteEntry(dA), dE)
477+ else [IntegerEntry(dC, (dG + dH)), IntegerEntry(dB, (dF + dH))], DeleteEntry(dD), dH)
484478 }
485479
486480
487-@Callable(dF)
488-func constructorV1 (dG,dH,cr,dI) = if ((dF.caller != this))
481+@Callable(dI)
482+func constructorV1 (dJ,dK,cr,dL) = if ((dI.caller != this))
489483 then throw("Permission denied")
490- else if (isDefined(getBinary(H)))
484+ else if (isDefined(getBinary(G)))
491485 then throw("Already initialized")
492486 else {
493- let aT = ah
494- let dJ = Issue("WLGOLD", "WavesLands Gold investment token", aT, 8, true, unit, 0)
495- let dK = calculateAssetId(dJ)
496-[dJ, IntegerEntry(ar, lastBlock.timestamp), IntegerEntry(as, aT), IntegerEntry(cX, 0), IntegerEntry(ap, fraction(ah, ai, i)), BinaryEntry(H, dK), StringEntry(u(), dG), StringEntry(aK, dH), StringEntry(ak, cr), StringEntry(cW, dI)]
487+ let aT = ag
488+ let dM = Issue("WLGOLD", "WavesLands Gold investment token", aT, 8, true, unit, 0)
489+ let dN = calculateAssetId(dM)
490+[dM, IntegerEntry(ar, lastBlock.timestamp), IntegerEntry(as, aT), IntegerEntry(cX, 0), IntegerEntry(ao, fraction(ag, ah, h)), BinaryEntry(G, dN), StringEntry(t(), dJ), StringEntry(aK, dK), StringEntry(aj, cr), StringEntry(cW, dL)]
497491 }
498492
499493
500494
501-@Callable(dF)
502-func constructorV2 (dL) = if ((dF.caller != this))
495+@Callable(dI)
496+func constructorV2 (dO) = if ((dI.caller != this))
503497 then throw("Permission denied")
504- else [StringEntry(v(), dL)]
498+ else [StringEntry(u(), dO)]
505499
506500
507501
508-@Callable(dF)
509-func buyWlg (dM) = {
510- let dN = da()
511- if ((dN == dN))
512- then if ((size(dF.payments) != 1))
502+@Callable(dI)
503+func buyWlg (dP) = {
504+ let dQ = da()
505+ if ((dQ == dQ))
506+ then if ((size(dI.payments) != 1))
513507 then throw("exactly 1 payment must be attached")
514508 else {
515- let dO = dF.payments[0]
516- let dP = dO.amount
517- if (if (!(isDefined(dO.assetId)))
509+ let dR = dI.payments[0]
510+ let dS = dR.amount
511+ if (if (!(isDefined(dR.assetId)))
518512 then true
519- else (value(dO.assetId) != c))
513+ else (value(dR.assetId) != c))
520514 then throw("USDT payments only!")
521515 else {
522- let dQ = dF.caller
523- let Y = toString(dQ)
524- if ((k > dP))
525- then throw((("You can trade min " + M(k, 6)) + " USDT"))
516+ let dT = dI.caller
517+ let X = toString(dT)
518+ if ((j > dS))
519+ then throw((("You can trade min " + L(j, 6)) + " USDT"))
526520 else {
527- let de = bY("", [cZ, bx, D, E, F], c, dP)
528- let dR = de[bI]
529- let dS = de[bK]
530- let dT = fraction(dS, 6, 5)
531- let dU = fraction(dP, j, dT)
532- let dV = db(Y)
533- if ((dU > dV))
534- then throw((("You can get max " + M(dV, 8)) + " WLGOLD"))
535- else if ((dM > dU))
521+ let dh = bY("", [cZ, bx, C, D, E], c, dS)
522+ let dU = dh[bI]
523+ let dV = dh[bK]
524+ let dW = fraction(dV, 6, 5, CEILING)
525+ let dX = fraction(dS, i, dW)
526+ let dY = db(X)
527+ if ((dX > dY))
528+ then throw((("You can get max " + L(dY, 8)) + " WLGOLD at the moment"))
529+ else if ((dP > dX))
536530 then throw("Price changed during operation, please try again")
537531 else {
538- let dW = (dP / 6)
539- $Tuple2([Reissue(I, dU, true), IntegerEntry(as, (dR + dU)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dW, c), ScriptTransfer(dQ, dU, I)], dN)
532+ let dZ = (dS / 6)
533+ $Tuple2([Reissue(H, dX, true), IntegerEntry(as, (dU + dX)), IntegerEntry(ap(X), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dZ, c), ScriptTransfer(dT, dX, H)], dQ)
540534 }
541535 }
542536 }
543537 }
544538 else throw("Strict value is not equal to itself.")
545539 }
546540
547541
548542
549-@Callable(dF)
550-func buyWlgREADONLY (m,dP) = {
551- let de = bY("", [cZ, bx, D, E, F], c, dP)
552- let dR = de[bI]
553- let dS = de[bK]
554- let dT = fraction(dS, 6, 5)
555- let dU = fraction(dP, j, dT)
556- let dV = db(m)
557- let dX = fraction(dV, dT, j)
558- let dW = (dP / 6)
559- $Tuple2(nil, [dU, k, dX, dW])
543+@Callable(dI)
544+func buyWlgREADONLY (l,dS) = {
545+ let dh = bY("", [cZ, bx, C, D, E], c, dS)
546+ let dV = dh[bK]
547+ let dW = fraction(dV, 6, 5, CEILING)
548+ let dX = fraction(dS, i, dW)
549+ let dY = db(l)
550+ let ea = fraction(dY, dW, i)
551+ let dZ = (dS / 6)
552+ $Tuple2(nil, [dX, j, ea, dZ])
560553 }
561554
562555
563556
564-@Callable(dF)
565-func sellWlg (dM) = {
566- let dN = da()
567- if ((dN == dN))
568- then if ((size(dF.payments) != 1))
557+@Callable(dI)
558+func sellWlg (eb) = {
559+ let dQ = da()
560+ if ((dQ == dQ))
561+ then if ((size(dI.payments) != 1))
569562 then throw("exactly 1 payment must be attached")
570563 else {
571- let dO = dF.payments[0]
572- let dY = dO.amount
573- let dQ = dF.caller
574- let Y = toString(dQ)
575- let dV = db(Y)
576- if ((dY > dV))
577- then throw((("You can spend max " + M(dV, 8)) + " WLGOLD"))
578- else if (if (!(isDefined(dO.assetId)))
564+ let dR = dI.payments[0]
565+ let ec = dR.amount
566+ let dT = dI.caller
567+ let X = toString(dT)
568+ let dY = db(X)
569+ if ((ec > dY))
570+ then throw((("You can spend max " + L(dY, 8)) + " WLGOLD at the moment"))
571+ else if (if (!(isDefined(dR.assetId)))
579572 then true
580- else (value(dO.assetId) != I))
573+ else (value(dR.assetId) != H))
581574 then throw("WLGOLD payments only!")
582575 else {
583- let de = bY("", [cZ, bx, D, E, F], c, 0)
584- let dR = de[bI]
585- let dZ = (de[bK] / 2)
586- let dP = fraction(dY, dZ, j)
587- if ((k > dP))
588- then throw((("You can trade min " + M(k, 6)) + " USDT"))
589- else if ((dM > dP))
576+ let dh = bY("", [cZ, bx, C, D, E], c, 0)
577+ let dU = dh[bI]
578+ let ed = (dh[bK] / 2)
579+ let dS = fraction(ec, ed, i)
580+ if ((j > dS))
581+ then throw((("You can trade min " + L(j, 6)) + " USDT"))
582+ else if ((eb > dS))
590583 then throw("Price changed during operation, please try again")
591584 else {
592- let dW = (dP / 5)
593- $Tuple2([Burn(I, dY), IntegerEntry(as, (dR - dY)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dW, c), ScriptTransfer(dQ, dP, c)], dN)
585+ let dZ = (dS / 5)
586+ $Tuple2([Burn(H, ec), IntegerEntry(as, (dU - ec)), IntegerEntry(ap(X), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cW))), dZ, c), ScriptTransfer(dT, dS, c)], dQ)
594587 }
595588 }
596589 }
597590 else throw("Strict value is not equal to itself.")
598591 }
599592
600593
601594
602-@Callable(dF)
603-func sellWlgREADONLY (m,dY) = {
604- let dV = db(m)
605- let de = bY("", [cZ, bx, D, E, F], c, 0)
606- let dR = de[bI]
607- let dZ = (de[bK] / 2)
608- let dP = fraction(dY, dZ, j)
609- let ea = fraction(k, j, dZ)
610- let dW = (dP / 5)
611- $Tuple2(nil, [dP, ea, dV, dW])
595+@Callable(dI)
596+func sellWlgREADONLY (l,ec) = {
597+ let dY = db(l)
598+ let dh = bY("", [cZ, bx, C, D, E], c, 0)
599+ let ed = (dh[bK] / 2)
600+ let dS = fraction(ec, ed, i)
601+ let ee = fraction(j, i, ed)
602+ let dZ = (dS / 5)
603+ $Tuple2(nil, [dS, ee, dY, dZ])
612604 }
613605
614606
615607
616-@Callable(dF)
608+@Callable(dI)
617609 func claim () = {
618- let dN = da()
619- if ((dN == dN))
620- then if ((size(dF.payments) != 0))
610+ let dQ = da()
611+ if ((dQ == dQ))
612+ then if ((size(dI.payments) != 0))
621613 then throw("No payments required")
622614 else {
623- let eb = dd(toString(dF.caller))
624- let ec = eb._1
625- let ed = eb._2
626- $Tuple2((ec :+ ScriptTransfer(dF.caller, ed, I)), dN)
615+ let ef = dg(toString(dI.caller))
616+ let eg = ef._1
617+ let eh = ef._2
618+ $Tuple2((eg :+ ScriptTransfer(dI.caller, eh, H)), dQ)
627619 }
628620 else throw("Strict value is not equal to itself.")
629621 }
630622
631623
632624
633-@Callable(dF)
634-func onStakeUnstakeLand (Y) = if (if (if ((dF.caller != C))
635- then (dF.caller != G)
625+@Callable(dI)
626+func onStakeUnstakeLand (X) = if (if (if ((dI.caller != B))
627+ then (dI.caller != F)
636628 else false)
637- then (dF.caller != bx)
629+ then (dI.caller != bx)
638630 else false)
639631 then throw("Permission denied")
640632 else {
641- let ee = dd(Y)
642- let ec = ee._1
643- let ed = ee._2
644- $Tuple2(if ((ed > 0))
645- then (ec :+ ScriptTransfer(addressFromStringValue(Y), ed, I))
646- else ec, ed)
633+ let ei = dg(X)
634+ let eg = ei._1
635+ let eh = ei._2
636+ $Tuple2(if ((eh > 0))
637+ then (eg :+ ScriptTransfer(addressFromStringValue(X), eh, H))
638+ else eg, eh)
647639 }
648640
649641
650642
651-@Callable(dF)
652-func burnWlgold (dY) = if ((dF.caller != bx))
643+@Callable(dI)
644+func burnWlgold (ec) = if ((dI.caller != bx))
653645 then throw("Permission denied")
654646 else {
655- let de = bY("", [cZ, bx, D, E, F], c, 0)
656- if ((dY > de[bJ]))
657- then throw(((("Only " + M(de[bJ], 8)) + " WLGOLD left on contract, can't burn ") + M(dY, 8)))
647+ let dh = bY("", [cZ, bx, C, D, E], c, 0)
648+ if ((ec > dh[bJ]))
649+ then throw(((("Only " + L(dh[bJ], 8)) + " WLGOLD left on contract, can't burn ") + L(ec, 8)))
658650 else {
659- let ef = (de[bI] - dY)
660- $Tuple2([Burn(I, dY), IntegerEntry(as, ef)], ef)
651+ let ej = (dh[bI] - ec)
652+ $Tuple2([Burn(H, ec), IntegerEntry(as, ej)], ej)
661653 }
662654 }
663655
664656
665657
666-@Callable(dF)
667-func betForTicket (eg) = {
668- let dN = da()
669- if ((dN == dN))
670- then if ((size(dF.payments) != 0))
658+@Callable(dI)
659+func betForTicket (ek) = {
660+ let dQ = da()
661+ if ((dQ == dQ))
662+ then if ((size(dI.payments) != 0))
671663 then throw("No payments required")
672- else if (((eg / 4) != 0))
664+ else if (((ek / 4) != 0))
673665 then throw("Invalid bet: should be 0..3")
674666 else {
675- let eh = (height % aE)
676- if ((eh > (aE - 3)))
677- then throw((("Cannot bet: the day is almost ended, please wait " + toString((aE - eh))) + " blocks"))
667+ let el = (height % aE)
668+ if ((el > (aE - 3)))
669+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((aE - el))) + " blocks"))
678670 else {
679- let Y = toString(dF.caller)
680- let ei = valueOrElse(getInteger(bx, aZ(Y)), 0)
681- let ej = bh(ei)
682- if ((ej == 0))
671+ let X = toString(dI.caller)
672+ let em = valueOrElse(getInteger(bx, aZ(X)), 0)
673+ let en = bh(em)
674+ if ((en == 0))
683675 then throw("You need to stake some ACRES to bet")
684676 else {
685- let ek = ((height / aE) + 1)
686- let dA = bB(Y)
687- let dx = getString(dA)
688- let el = StringEntry(dA, ((toString(ek) + "_") + toString(eg)))
689- if (isDefined(dx))
677+ let eo = ((height / aE) + 1)
678+ let dD = bB(X)
679+ let dA = getString(dD)
680+ let ep = StringEntry(dD, ((toString(eo) + "_") + toString(ek)))
681+ if (isDefined(dA))
690682 then {
691- let em = value(dx)
692- if ((split(em, "_")[0] == toString(ek)))
683+ let eq = value(dA)
684+ if ((split(eq, "_")[0] == toString(eo)))
693685 then throw("You already bet for tomorrow")
694686 else {
695- let en = dw(Y, em)
696- $Tuple2(((en._1 :+ en._2) :+ el), en._2)
687+ let er = dz(X, eq)
688+ $Tuple2(((er._1 :+ er._2) :+ ep), er._2)
697689 }
698690 }
699- else $Tuple2([el], 0)
691+ else $Tuple2([ep], 0)
700692 }
701693 }
702694 }
703695 else throw("Strict value is not equal to itself.")
704696 }
705697
706698
707699
708-@Callable(dF)
700+@Callable(dI)
709701 func claimTickets () = {
710- let dN = da()
711- if ((dN == dN))
712- then if ((size(dF.payments) != 0))
702+ let dQ = da()
703+ if ((dQ == dQ))
704+ then if ((size(dI.payments) != 0))
713705 then throw("No payments required")
714706 else {
715- let Y = toString(dF.caller)
716- let dx = valueOrErrorMessage(getString(bB(Y)), "You have no tickets to claim")
717- let en = dw(Y, dx)
718- $Tuple2((en._1 :+ en._2), en._3)
707+ let X = toString(dI.caller)
708+ let dA = valueOrErrorMessage(getString(bB(X)), "You have no tickets to claim")
709+ let er = dz(X, dA)
710+ $Tuple2((er._1 :+ er._2), er._3)
719711 }
720712 else throw("Strict value is not equal to itself.")
721713 }
722714
723715
724716
725-@Callable(dF)
726-func takeWlgXp (Y) = if ((dF.caller != C))
717+@Callable(dI)
718+func takeWlgXp (X) = if ((dI.caller != B))
727719 then throw("Permission denied")
728720 else {
729- let eo = dq(Y, 0)
730- let ec = eo._1
731- let ac = eo._2
732- $Tuple2(ec, ac)
721+ let es = dt(X, 0)
722+ let eg = es._1
723+ let ab = es._2
724+ $Tuple2(eg, ab)
733725 }
734726
735727
736728
737-@Callable(dF)
738-func checkWlgXpREADONLY (Y) = {
739- let ep = dq(Y, 0)
740- let eq = ep._1
741- let er = ep._2
742- let af = (valueOrElse(getInteger(C, X(Y)), 0) + er)
743- let es = ad(valueOrElse(getInteger(C, Z(Y)), 0), af)
744- $Tuple2(nil, (es :+ af))
729+@Callable(dI)
730+func checkWlgXpREADONLY (X) = {
731+ let et = dt(X, 0)
732+ let eu = et._1
733+ let ev = et._2
734+ let ae = (valueOrElse(getInteger(B, W(X)), 0) + ev)
735+ let ew = ac(valueOrElse(getInteger(B, Y(X)), 0), ae)
736+ $Tuple2(nil, (ew :+ ae))
745737 }
746738
747739

github/deemru/w8io/169f3d6 
209.39 ms