tx · CGFVXtKMtfaVtUDrytrDBEfPjcvyTazp1nAyZ4YodnRG

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.01800000 Waves

2024.09.13 05:39 [3281265] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "CGFVXtKMtfaVtUDrytrDBEfPjcvyTazp1nAyZ4YodnRG", "fee": 1800000, "feeAssetId": null, "timestamp": 1726195184569, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "aP4cTfNWJcsSFCpCza4BQRdth2Xy3BYYtJx8mmT9fosycAXEQj2BU7XKm9mVMu9wEWhWoFTSwTruWkyawHhBNgi" ], "script": "base64:BgIsCAISBgoECAgICBIDCgEIEgMKAQESAwoBARIAEgMKAQgSABIDCgEIEgMKAQhyAApEQVlfTUlMTElTAIC4mSkABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgAQYWNyZXMyQWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1A0VUgzVDluWHBNTnBVbVNtUWpQbUV6M0c4NXQzem42ZUEDCQAAAgEBVAUHJG1hdGNoMAIjM05CUHgxRmNpdTNKUU5FR1oyMWpTblRkdXRMTkdHQlVTWGgJAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAOTUlOU0hPUFBBWU1FTlQAoI0GAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdQdXp6bGVQb29sRGFwcAAFABRJZHhDZmdJbnZlc3RGdW5kRGFwcAAGAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgEPa2V5UmVzdDJBZGRyZXNzAAINJXNfX3Jlc3QyQWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJwdXp6bGVQb29sQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAPd2xnQmFzZUFtb3VudFhwAIDQ28P0AgEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyAAV4cFdsZwCQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwACE1JTExJT042AICA6YOx3hYAC1BMQVlFUlNIQVJFAIC1GAAJREFZTUlMTElTAIC4mSkAC3RlYW1BZGRyS2V5Agh0ZWFtQWRkcgAPbGFzdFRlYW1UaW1lS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQARdGVhbUFtb3VudExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABVsYXN0QWN0aXZpdGllc1RpbWVLZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzABBhY3RBbW91bnRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAAUc3Rha2Vyc0Ftb3VudExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyAA93bGdJc3N1ZVRpbWVLZXkCDXdsZ19pc3N1ZVRpbWUAEndsZ0lzc3VlZEFtb3VudEtleQIQd2xnX2lzc3VlZEFtb3VudAEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIWd2xnU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgARd2xnU3Rha2VkVG90YWxLZXkCFHdsZ1N0YWtlZEFtb3VudFRvdGFsARZrZXlXbGdTdGFrZWRUaW1lQnlVc2VyAQRhZGRyCQCsAgICFHdsZ1N0YWtlZFRpbWVCeVVzZXJfBQRhZGRyAANNNl8AwIQ9AANNOF8AgMLXLwAFTUlMTDYAgIDpg7HeFgAKVEVBTV9TSEFSRQDAmgwADkFDVElWSVRZX1NIQVJFAKCNBgAMUExBWUVSX1NIQVJFAIC1GAALWUVBUl9NSUxMSVMAgIbrx3UAA2NobgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQANVVNEVF9UVkxfQ09SUgQHJG1hdGNoMAUDY2huAwkAAAIBAVcFByRtYXRjaDAA8PWowAQDCQAAAgEBVAUHJG1hdGNoMAAACQACAQINVW5rbm93biBjaGFpbgAKdGVhbUFkcktleQIIdGVhbUFkZHIADmxhc3RUZWFtVGltS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQAOdGVhbUFtdExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABRsYXN0QWN0aXZpdGllc1RpbUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMADWFjdEFtdExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABFzdGFrZXJzQW10TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUbGFzdENsYWltZWRUaW1lVXNlcl8FBGFkZHIBDWRpc3RyQnlQZXJpb2QBBnBlcmlvZAkAawMFBU1JTEw2CQBoAgUMUExBWUVSX1NIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFA002XwAOd2xnSXNzdWVUaW1LZXkCDXdsZ19pc3N1ZVRpbWUAD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwACWRhcHAyUmVzdAAAAAxkYXBwMlN0YWtpbmcAAQAIZGFwcDJXbGcAAgALZGFwcDJQdXp6bGUAAwAPZGFwcDJJbnZlc3RGdW5kAAQABmxldmVscwkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIFBWFjcmVzBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGYCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABBANpZHgKAAIkbAUGbGV2ZWxzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQBkAgUDaWR4AAEBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEQZ2V0RmFybWluZ1Bvd2VycwISdXNlckFkZHJTdHJPckVtcHR5D3N0YWtpbmdDb250cmFjdAQKdG90YWxBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFEmFjcmVzU3Rha2RUb3RhbEtleQAABAd0b3RhbEZQCQEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFCnRvdGFsQWNyZXMECXVzZXJBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAABAZ1c2VyRlAJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUJdXNlckFjcmVzCQDMCAIFB3RvdGFsRlAJAMwIAgUGdXNlckZQBQNuaWwACmlkeFRvdGFsRlAAAAAJaWR4VXNlckZQAAEAC2l4V2xnQW1vdW50AAAACml4V2xnUHJpY2UAAQAKaXhXbGdGdW5kcwACAA5peFdsZ0lzc3VlVGltZQAGAA9peFdsZ1RlYW1BbUxlZnQACQATaXhXbGdUZWFtQW1BdmFpbE5vdwAKAA5peFdsZ0FjdEFtTGVmdAANABJpeFdsZ0FjdEFtQXZhaWxOb3cADgAQaXhXbGdBbUxlZnRUb3RhbAARABNpeFdsZ1VzZXJBbUF2YWlsTm93ABUAEGl4V2xnRWZmVXNlclRpbWUAFgEMZ2V0V2xnU3RhdHMyBAt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQMaXNzdWVkQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ93bGdJc3N1ZWRBbXRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUJZGFwcDJSZXN0BQZ1c2R0SWQEBndsZ1VzZAkAZQIJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQZ1c2R0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQJcHV6emxlVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQtkYXBwMlB1enpsZQUGdXNkdElkBBFpbnZlc3RGbmRDb250cmFjdAkAkQMCBQljb250cmFjdHMFD2RhcHAySW52ZXN0RnVuZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRFpbnZlc3RGbmRDb250cmFjdAUGdXNkdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEWludmVzdEZuZENvbnRyYWN0BQ56Yklzc3VlZEFtdEtleQAABA10b3RhbEZ1bmRzVXNkCQBkAgUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnAgt3bGdfYXNzZXRJZAITTm90IGluaXRpYWxpemVkIHlldAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ53bGdJc3N1ZVRpbUtleQIPTm90IGluaXRpYWxpemVkBAl0ZWFtVG90YWwJAGsDBQVNSUxMNgUKVEVBTV9TSEFSRQUDTTZfBA50ZWFtQW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDnRlYW1BbXRMZWZ0S2V5BQl0ZWFtVG90YWwEDGxhc3RUZWFtVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDmxhc3RUZWFtVGltS2V5BQlpc3N1ZVRpbWUECHRlYW1BZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUKdGVhbUFkcktleQQWdGVhbUFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQl0ZWFtVG90YWwJAGUCBQNub3cFDGxhc3RUZWFtVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUOdGVhbUFtb3VudExlZnQFA25pbAQKdGVhbVdsZ29sZAkA8AcCBQh0ZWFtQWRkcgUFd2xnSWQECGFjdFRvdGFsCQBrAwUFTUlMTDYFDkFDVElWSVRZX1NIQVJFBQNNNl8EDWFjdEFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ1hY3RBbXRMZWZ0S2V5BQhhY3RUb3RhbAQSbGFzdEFjdGl2aXRpZXNUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUUbGFzdEFjdGl2aXRpZXNUaW1LZXkFCWlzc3VlVGltZQQVYWN0QW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCGFjdFRvdGFsCQBlAgUDbm93BRJsYXN0QWN0aXZpdGllc1RpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDWFjdEFtb3VudExlZnQFA25pbAQJYWN0V2xnb2xkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBXdsZ0lkBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnCQEWa2V5TGFzdENsYWltVGltZUJ5VXNlcgEFC3VzZXJBZGRyT3B0BQlpc3N1ZVRpbWUEDmxhc3RVc2VyUGVyaW9kCQBpAgkAZQIFDGxhc3RVc2VyVGltZQUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwQKbm93TGltaXRlZAkAlwMBCQDMCAIFA25vdwkAzAgCCQBkAgUJaXNzdWVUaW1lCQBoAgADBQtZRUFSX01JTExJUwUDbmlsBAljdXJQZXJpb2QJAJcDAQkAzAgCCQBpAgkAZQIFA25vdwUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwkAzAgCAAIFA25pbAQDZWZmCQEQZ2V0RmFybWluZ1Bvd2VycwIFC3VzZXJBZGRyT3B0CQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBBVjdXJQZXJpb2REaXN0cmlidXRpb24JAQ1kaXN0ckJ5UGVyaW9kAQUJY3VyUGVyaW9kBAgkdDA3OTE0MgMJAAACBQ5sYXN0VXNlclBlcmlvZAUJY3VyUGVyaW9kBAJhMAkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMEB2VmZlRpbWUFCm5vd0xpbWl0ZWQJAJQKAgUCYTAFB2VmZlRpbWUDCQAAAgUObGFzdFVzZXJQZXJpb2QJAGUCBQljdXJQZXJpb2QAAQQCYTEJAGsDCQENZGlzdHJCeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQkAZQIJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBAJhMAkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kBQtZRUFSX01JTExJUwQFYXZhaWwJAGQCBQJhMQUCYTAEB2VmZlRpbWUDCQBnAgUCYTEFBWF2YWlsCQBkAgUMbGFzdFVzZXJUaW1lCQBrAwULWUVBUl9NSUxMSVMFBWF2YWlsCQENZGlzdHJCeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kCQBrAwULWUVBUl9NSUxMSVMJAGUCBQVhdmFpbAUCYTEFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAlAoCBQVhdmFpbAUHZWZmVGltZQQCYTIJAGsDCQENZGlzdHJCeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAgkAZQIJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwkAZQIFCWN1clBlcmlvZAABBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBAJhMQkBDWRpc3RyQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAEEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTBQljdXJQZXJpb2QFC1lFQVJfTUlMTElTBAVhdmFpbAkAZAIJAGQCBQJhMgUCYTEFAmEwBAdlZmZUaW1lAwkAZwIFAmEyBQVhdmFpbAkAZAIFDGxhc3RVc2VyVGltZQkAawMFC1lFQVJfTUlMTElTBQVhdmFpbAkBDWRpc3RyQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAIDCQBnAgkAZAIFAmEyBQJhMQUFYXZhaWwJAGQCCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMJAGUCBQljdXJQZXJpb2QAAQkAawMFC1lFQVJfTUlMTElTCQBlAgUFYXZhaWwFAmEyCQENZGlzdHJCeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kCQBrAwULWUVBUl9NSUxMSVMJAGUCCQBlAgUFYXZhaWwFAmEyBQJhMQUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQCUCgIFBWF2YWlsBQdlZmZUaW1lBA11c2VyQXZhaWxhYmxlCAUIJHQwNzkxNDICXzEEC2VmZkxhc3RUaW1lCAUIJHQwNzkxNDICXzIED2Ftb3VudExlZnRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFEXN0YWtlcnNBbXRMZWZ0S2V5AAAEDHVucm9iYmVkVXNlcgMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDBQ11c2VyQXZhaWxhYmxlCQCRAwIFA2VmZgUJaWR4VXNlckZQCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCCQBrAwkAZQIFDXRvdGFsRnVuZHNVc2QFDVVTRFRfVFZMX0NPUlIFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQZ3bGdVc2QJAMwIAgUJcHV6emxlVXNkCQDMCAIFCWlzc3VlVGltZQkAzAgCBQxsYXN0VGVhbVRpbWUJAMwIAgUJdGVhbVRvdGFsCQDMCAIFDnRlYW1BbW91bnRMZWZ0CQDMCAIFFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAMwIAgUKdGVhbVdsZ29sZAkAzAgCBQhhY3RUb3RhbAkAzAgCBQ1hY3RBbW91bnRMZWZ0CQDMCAIFFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAzAgCBQlhY3RXbGdvbGQJAMwIAgUJY3VyUGVyaW9kCQDMCAIFD2Ftb3VudExlZnRUb3RhbAkAzAgCBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAMwIAgUMbGFzdFVzZXJUaW1lCQDMCAIFD2ludmVzdEZ1bmRUb3RhbAkAzAgCBQx1bnJvYmJlZFVzZXIJAMwIAgULZWZmTGFzdFRpbWUFA25pbAADbmV0CQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABABZkZWZhdWx0UmVzdDJBZGRyZXNzU3RyBAckbWF0Y2gwBQNuZXQDCQAAAgEBVwUHJG1hdGNoMAIjM1BGd1l0YThiaUV6MzF6cGVGZTVESks4d0U1dHJTcFFWRjgDCQAAAgEBVAUHJG1hdGNoMAIjM043VXVZYXI2MjY0UDU4RkJoVldLUFFBaDRZdWEyaGduZ3YJAAIBAg1Vbmtub3duIGNoYWluAA1wcm9maXRBZGRyS2V5Agpwcm9maXRBZGRyABlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AhZzdGFrZXJzQW1vdW50UGFpZFRvdGFsARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBGFkZHIJAKwCAgIWc3Rha2Vyc0Ftb3VudFBhaWRVc2VyXwUEYWRkcgANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAOYWNyZXMyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEGFjcmVzMkFkZHJlc3NTdHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAEPZ2V0U3dhcExpbWl0V2xnAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQBmAgUOYXJiaXRyYWdlRGVsYXkJAGUCBQNub3cFCGxhc3RUaW1lCQACAQkArAICCQCsAgICH0FyYml0cmFnZXMgYXJlIHBvc3NpYmxlIG9uY2UgYSAJAKQDAQkAaQIFDmFyYml0cmFnZURlbGF5AODUAwIDbWluCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAABDmNsYWltSW50ZXJuYWwyAQRhZGRyBAZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAUEYWRkcgkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQLdXNlclRpbWVLZXkJARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQUEYWRkcgQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEFC3VzZXJUaW1lS2V5AAAEC3VzZXJFZmZUaW1lCQCRAwIFCGN1clN0YXRzBRBpeFdsZ0VmZlVzZXJUaW1lAwkAAAIFDGxhc3RVc2VyVGltZQULdXNlckVmZlRpbWUJAJQKAgUDbmlsAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWlzc3VlVGltZQkAkQMCBQhjdXJTdGF0cwUOaXhXbGdJc3N1ZVRpbWUEDnRlYW1BbW91bnRMZWZ0CQCRAwIFCGN1clN0YXRzBQ9peFdsZ1RlYW1BbUxlZnQECnRlYW1BbW91bnQJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVGVhbUFtQXZhaWxOb3cEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUTaXhXbGdVc2VyQW1BdmFpbE5vdwQHdXNlcktleQkBGGtleVN0YWtlcnNBbW91bnRQYWlkVXNlcgEFBGFkZHIECXVzZXJUb3RhbAkAkQMCBQhjdXJTdGF0cwUTaXhXbGdVc2VyQW1BdmFpbE5vdwkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQULdGVhbUFkZHJLZXkFCnRlYW1BbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQl1c2VyVG90YWwJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5CQBlAgkAkQMCBQhjdXJTdGF0cwUQaXhXbGdBbUxlZnRUb3RhbAUJdXNlclRvdGFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF0ZWFtQW1vdW50TGVmdEtleQkAZQIFDnRlYW1BbW91bnRMZWZ0BQp0ZWFtQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0VGVhbVRpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQp1c2VyQW1vdW50AQ50YWtlWHBJbnRlcm5hbAIEYWRkcgVkZWx0YQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHdGltZUtleQkBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBQRhZGRyBAlhbW91bnRLZXkJARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEB29sZFVzZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECG9sZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEXdsZ1N0YWtlZFRvdGFsS2V5AAAEAnhwCQBrAwkAawMFBXhwV2xnBQdvbGRVc2VyBQ93bGdCYXNlQW1vdW50WHAJAGUCBQhsYXN0VGltZQUDbm93BQlEQVlNSUxMSVMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGQCBQdvbGRVc2VyBQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUFZGVsdGEFA25pbAUCeHAFB29sZFVzZXIJAWkBDWNvbnN0cnVjdG9yVjEECHJlc3RBZGRyDW1hcmtldGluZ0FkZHIIdGVhbUFkZHIKcHJvZml0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBCWlzRGVmaW5lZAEJAKEIAQUNd2xnQXNzZXRJZEtleQkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQEDGlzc3VlZEFtb3VudAUITUlMTElPTjYEBWlzc3VlCQDDCAcCBldMR09MRAIgV2F2ZXNMYW5kcyBHb2xkIGludmVzdG1lbnQgdG9rZW4FDGlzc3VlZEFtb3VudAAIBgUEdW5pdAAABAdhc3NldElkCQC4CAEFBWlzc3VlCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ93bGdJc3N1ZVRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDGlzc3VlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAawMFCE1JTExJT042BQtQTEFZRVJTSEFSRQUFTVVMVDYJAMwIAgkBC0JpbmFyeUVudHJ5AgUNd2xnQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQt0ZWFtQWRkcktleQUIdGVhbUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNcHJvZml0QWRkcktleQUKcHJvZml0QWRkcgUDbmlsAWkBDWNvbnN0cnVjdG9yVjIBCXJlc3QyQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIFA25pbAFpAQZidXlXbGcBCW1pbkFtb3VudAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAUHdXNkdEFtdAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQIZnVuZHNVc2QJAJEDAgUIY3VyU3RhdHMFCml4V2xnRnVuZHMECHdsZ1ByaWNlCQBrAwUIZnVuZHNVc2QFBU1VTFQ4BQxjdXJXbGdBbW91bnQECGJ1eVByaWNlCQBrAwUId2xnUHJpY2UABgAFBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UEBm1heFdsZwkBD2dldFN3YXBMaW1pdFdsZwEFBGFkZHIDCQBmAgUJd2xnQW1vdW50BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgIQWW91IGNhbiBnZXQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIHIFdMR09MRAMJAGYCBQltaW5BbW91bnQFCXdsZ0Ftb3VudAkAAgECMFByaWNlIGNoYW5nZWQgZHVyaW5nIG9wZXJhdGlvbiwgcGxlYXNlIHRyeSBhZ2FpbgQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAGBApkZWx0YUZ1bmRzCQBlAgUHdXNkdEFtdAUMcHJvZml0QW1vdW50BAhyZWlzc3VlZAkAawMFDGN1cldsZ0Ftb3VudAUKZGVsdGFGdW5kcwUIZnVuZHNVc2QJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFCndsZ0Fzc2V0SWQFCHJlaXNzdWVkBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBkAgUMY3VyV2xnQW1vdW50BQhyZWlzc3VlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQ1wcm9maXRBZGRyS2V5BQxwcm9maXRBbW91bnQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJd2xnQW1vdW50BQp3bGdBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdzZWxsV2xnAQltaW5BbW91bnQEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgQGbWF4V2xnCQEPZ2V0U3dhcExpbWl0V2xnAQUEYWRkcgMJAGYCBQZ3bGdBbXQFBm1heFdsZwkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHNwZW5kIG1heCAJAQpmaXhlZFBvaW50AgUGbWF4V2xnAAgCByBXTEdPTEQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQJc2VsbFByaWNlCQBrAwkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQAEAAUEB3VzZHRBbXQJAGsDBQZ3bGdBbXQFCXNlbGxQcmljZQUFTVVMVDgDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUAwkAZgIFCW1pbkFtb3VudAUHdXNkdEFtdAkAAgECMFByaWNlIGNoYW5nZWQgZHVyaW5nIG9wZXJhdGlvbiwgcGxlYXNlIHRyeSBhZ2FpbgQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAECQCUCgIJAMwIAgkBBEJ1cm4CBQp3bGdBc3NldElkBQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZQIFDGN1cldsZ0Ftb3VudAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFDXByb2ZpdEFkZHJLZXkFDHByb2ZpdEFtb3VudAULdXNkdEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQd1c2R0QW10BQt1c2R0QXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFY2xhaW0ABAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAFyCQEOY2xhaW1JbnRlcm5hbDIBCQClCAEIBQFpBmNhbGxlcgQHYWN0aW9ucwgFAXICXzEJAJQKAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIIBQFyAl8yBQp3bGdBc3NldElkBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESb25TdGFrZVVuc3Rha2VMYW5kAQRhZGRyAwMDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0BwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTA5ODExMTAzNQkBDmNsYWltSW50ZXJuYWwyAQUEYWRkcgQHYWN0aW9ucwgFDSR0MDEwOTgxMTEwMzUCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxMDk4MTExMDM1Al8yCQCUCgIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgUQd2xnQ2xhaW1lZEFtb3VudAUKd2xnQXNzZXRJZAUQd2xnQ2xhaW1lZEFtb3VudAFpAQpidXJuV2xnb2xkAAMJAQIhPQIIBQFpBmNhbGxlcgUOYWNyZXMyQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQGd2xnQW10CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEDXdsZ0Ftb3VudExlZnQJAGUCCQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAUGd2xnQW10CQCUCgIJAMwIAgkBBEJ1cm4CBQp3bGdBc3NldElkBQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQUNd2xnQW1vdW50TGVmdAUDbmlsBQ13bGdBbW91bnRMZWZ0AWkBCXRha2VXbGdYcAEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDSR0MDEzMzA2MTMzNDkJAQ50YWtlWHBJbnRlcm5hbAIFBGFkZHIAAAQHYWN0aW9ucwgFDSR0MDEzMzA2MTMzNDkCXzEEAnhwCAUNJHQwMTMzMDYxMzM0OQJfMgkAlAoCBQdhY3Rpb25zBQJ4cAFpARJjaGVja1dsZ1hwUkVBRE9OTFkBBGFkZHIEDSR0MDEzNDI2MTM0NzQJAQ50YWtlWHBJbnRlcm5hbAIFBGFkZHIAAAQHaWdub3JlZAgFDSR0MDEzNDI2MTM0NzQCXzEEB2RlbHRhWFAIBQ0kdDAxMzQyNjEzNDc0Al8yBAVuZXdYUAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEJa2V5VXNlclhQAQUEYWRkcgAABQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyAAAFBW5ld1hQCQCUCgIFA25pbAkAzQgCBQlsdmxQb2ludHMFBW5ld1hQALWhdkE=", "height": 3281265, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3LBWi3NoargvPCRarwy2edDaabb4VzLkFCrKvpwZqpwA Next: 9sW4poLPS2SUg3hUuqhsvvUkWTCuEyL86tfGieGt26xR Diff:
OldNewDifferences
159159
160160 let ap = "stakersAmountLeft"
161161
162-func aq (Y) = ("lastClaimedTimeUser_" + Y)
162+func aq (Y) = ("lastArbTimeUser_" + Y)
163163
164164
165-func ar (Y) = ("lastArbTimeUser_" + Y)
165+let ar = "wlg_issueTime"
166+
167+let as = "wlg_issuedAmount"
168+
169+func at (Y) = ("acresStakedAmountByUser_" + Y)
166170
167171
168-let as = "wlg_issueTime"
169-
170-let at = "wlg_issuedAmount"
171-
172-func au (Y) = ("acresStakedAmountByUser_" + Y)
172+func au (Y) = ("wlgStakedAmountByUser_" + Y)
173173
174174
175-func av (Y) = ("wlgStakedAmountByUser_" + Y)
175+let av = "wlgStakedAmountTotal"
176+
177+func aw (Y) = ("wlgStakedTimeByUser_" + Y)
176178
177179
178-let aw = "wlgStakedAmountTotal"
180+let ax = 1000000
179181
180-func ax (Y) = ("wlgStakedTimeByUser_" + Y)
182+let ay = 100000000
181183
184+let az = 100000000000000
182185
183-let ay = 1000000
186+let aA = 200000
184187
185-let az = 100000000
188+let aB = 100000
186189
187-let aA = 100000000000000
190+let aC = 400000
188191
189-let aB = 200000
192+let aD = 31557600000
190193
191-let aC = 100000
194+let aE = take(drop(this.bytes, 1), 1)
192195
193-let aD = 400000
194-
195-let aE = 31557600000
196-
197-let aF = take(drop(this.bytes, 1), 1)
198-
199-let aG = {
200- let d = aF
196+let aF = {
197+ let d = aE
201198 if ((base58'2W' == d))
202199 then 1208630000
203200 else if ((base58'2T' == d))
205202 else throw("Unknown chain")
206203 }
207204
208-let aH = "teamAddr"
205+let aG = "teamAddr"
209206
210-let aI = "lastClaimedTime_team"
207+let aH = "lastClaimedTime_team"
211208
212-let aJ = "teamAmountLeft"
209+let aI = "teamAmountLeft"
213210
214-let aK = "lastClaimedTime_activities"
211+let aJ = "lastClaimedTime_activities"
215212
216-let aL = "activitiesAmountLeft"
213+let aK = "activitiesAmountLeft"
217214
218-let aM = "stakersAmountLeft"
215+let aL = "stakersAmountLeft"
219216
220-func aN (Y) = ("lastClaimedTimeUser_" + Y)
217+func aM (Y) = ("lastClaimedTimeUser_" + Y)
221218
222219
223-func aO (aP) = fraction(aA, (aD * (aP + 1)), (6 * ay))
220+func aN (aO) = fraction(az, (aC * (aO + 1)), (6 * ax))
224221
225222
226-let aQ = "wlg_issueTime"
223+let aP = "wlg_issueTime"
227224
228-let aR = "wlg_issuedAmount"
225+let aQ = "wlg_issuedAmount"
229226
230-let aS = "zbill_issuedAmount"
227+let aR = "zbill_issuedAmount"
231228
232-func aT (Y) = ("acresStakedAmountByUser_" + Y)
229+func aS (Y) = ("acresStakedAmountByUser_" + Y)
233230
234231
235-let aU = "acresStakedAmountTotal"
232+let aT = "acresStakedAmountTotal"
236233
237-let aV = 0
234+let aU = 0
238235
239-let aW = 1
236+let aV = 1
240237
241-let aX = 2
238+let aW = 2
242239
243-let aY = 3
240+let aX = 3
244241
245-let aZ = 4
242+let aY = 4
246243
247-let ba = [10, 20, 40, 80, 150, 250, 400, 700, 1000]
244+let aZ = [10, 20, 40, 80, 150, 250, 400, 700, 1000]
248245
249-func bb (bc) = {
250- let bd = (bc / az)
251- func be (bf,bg) = if ((bg > bd))
252- then bf
253- else (bf + 1)
246+func ba (bb) = {
247+ let bc = (bb / ay)
248+ func bd (be,bf) = if ((bf > bc))
249+ then be
250+ else (be + 1)
254251
255252 let A = {
256- let bh = ba
257- let bi = size(bh)
258- let bj = 0
259- func bk (bl,bm) = if ((bm >= bi))
260- then bl
261- else be(bl, bh[bm])
253+ let bg = aZ
254+ let bh = size(bg)
255+ let bi = 0
256+ func bj (bk,bl) = if ((bl >= bh))
257+ then bk
258+ else bd(bk, bg[bl])
262259
263- func bn (bl,bm) = if ((bm >= bi))
264- then bl
260+ func bm (bk,bl) = if ((bl >= bh))
261+ then bk
265262 else throw("List size exceeds 10")
266263
267- bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
264+ bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
268265 }
269266 (A + 1)
270267 }
271268
272269
273-func bo (bc) = ((bc * 20) * (bb(bc) + 4))
270+func bn (bb) = ((bb * 20) * (ba(bb) + 4))
274271
275272
276-func bp (bq,C) = {
277- let br = valueOrElse(getInteger(C, aU), 0)
278- let bs = bo(br)
279- let bt = valueOrElse(getInteger(C, aT(bq)), 0)
280- let bu = bo(bt)
281-[bs, bu]
273+func bo (bp,C) = {
274+ let bq = valueOrElse(getInteger(C, aT), 0)
275+ let br = bn(bq)
276+ let bs = valueOrElse(getInteger(C, aS(bp)), 0)
277+ let bt = bn(bs)
278+[br, bt]
282279 }
283280
284281
285-let bv = 0
282+let bu = 0
286283
287-let bw = 1
284+let bv = 1
288285
289-let bx = 0
286+let bw = 0
290287
291-let by = 1
288+let bx = 1
292289
293-let bz = 2
290+let by = 2
294291
295-let bA = 6
292+let bz = 6
296293
297-let bB = 9
294+let bA = 9
298295
299-let bC = 10
296+let bB = 10
300297
301-let bD = 13
298+let bC = 13
302299
303-let bE = 14
300+let bD = 14
304301
305-let bF = 17
302+let bE = 17
306303
307-let bG = 21
304+let bF = 21
308305
309-let bH = 22
306+let bG = 22
310307
311-func bI (bJ,bK,bL,bM) = {
312- let bN = valueOrErrorMessage(getInteger(bK[aX], aR), "WLGOLD is not issued yet")
313- let bO = assetBalance(bK[aV], bL)
314- let bP = (assetBalance(bK[aX], bL) - bM)
315- let bQ = assetBalance(bK[aY], bL)
316- let bR = bK[aZ]
317- let bS = (assetBalance(bR, bL) + valueOrElse(getInteger(bR, aS), 0))
318- let bT = (bP + bS)
319- let bU = valueOrErrorMessage(getBinary(bK[aX], "wlg_assetId"), "Not initialized yet")
320- let bV = lastBlock.timestamp
321- let bW = valueOrErrorMessage(getInteger(bK[aX], aQ), "Not initialized")
322- let bX = fraction(aA, aB, ay)
323- let bY = valueOrElse(getInteger(bK[aX], aJ), bX)
324- let bZ = valueOrElse(getInteger(bK[aX], aI), bW)
325- let ca = addressFromStringValue(value(getString(bK[aX], aH)))
326- let cb = min([fraction(bX, (bV - bZ), (3 * aE)), bY])
327- let cc = assetBalance(ca, bU)
328- let cd = fraction(aA, aC, ay)
329- let ce = valueOrElse(getInteger(bK[aX], aL), cd)
330- let cf = valueOrElse(getInteger(bK[aX], aK), bW)
331- let cg = min([fraction(cd, (bV - cf), (3 * aE)), ce])
332- let ch = assetBalance(bK[aV], bU)
333- let ci = valueOrElse(getInteger(bK[aX], aN(bJ)), bW)
334- let cj = ((ci - bW) / aE)
335- let ck = min([bV, (bW + (3 * aE))])
336- let cl = min([((bV - bW) / aE), 2])
337- let cm = bp(bJ, bK[aW])
338- let cn = aO(cl)
339- let co = if ((cj == cl))
308+func bH (bI,bJ,bK,bL) = {
309+ let bM = valueOrErrorMessage(getInteger(bJ[aW], aQ), "WLGOLD is not issued yet")
310+ let bN = assetBalance(bJ[aU], bK)
311+ let bO = (assetBalance(bJ[aW], bK) - bL)
312+ let bP = assetBalance(bJ[aX], bK)
313+ let bQ = bJ[aY]
314+ let bR = (assetBalance(bQ, bK) + valueOrElse(getInteger(bQ, aR), 0))
315+ let bS = (bO + bR)
316+ let bT = valueOrErrorMessage(getBinary(bJ[aW], "wlg_assetId"), "Not initialized yet")
317+ let bU = lastBlock.timestamp
318+ let bV = valueOrErrorMessage(getInteger(bJ[aW], aP), "Not initialized")
319+ let bW = fraction(az, aA, ax)
320+ let bX = valueOrElse(getInteger(bJ[aW], aI), bW)
321+ let bY = valueOrElse(getInteger(bJ[aW], aH), bV)
322+ let bZ = addressFromStringValue(value(getString(bJ[aW], aG)))
323+ let ca = min([fraction(bW, (bU - bY), (3 * aD)), bX])
324+ let cb = assetBalance(bZ, bT)
325+ let cc = fraction(az, aB, ax)
326+ let cd = valueOrElse(getInteger(bJ[aW], aK), cc)
327+ let ce = valueOrElse(getInteger(bJ[aW], aJ), bV)
328+ let cf = min([fraction(cc, (bU - ce), (3 * aD)), cd])
329+ let cg = assetBalance(bJ[aU], bT)
330+ let ch = valueOrElse(getInteger(bJ[aW], aM(bI)), bV)
331+ let ci = ((ch - bV) / aD)
332+ let cj = min([bU, (bV + (3 * aD))])
333+ let ck = min([((bU - bV) / aD), 2])
334+ let cl = bo(bI, bJ[aV])
335+ let cm = aN(ck)
336+ let cn = if ((ci == ck))
340337 then {
341- let cp = fraction(cn, (ck - ci), aE)
342- let cq = ((ci + ck) - ci)
343- $Tuple2(cp, cq)
338+ let co = fraction(cm, (cj - ch), aD)
339+ let cp = cj
340+ $Tuple2(co, cp)
344341 }
345- else if ((cj == (cl - 1)))
342+ else if ((ci == (ck - 1)))
346343 then {
347- let cr = fraction(aO((cl - 1)), ((bW + (aE * cl)) - ci), aE)
348- let cp = fraction(cn, (ck - (bW + (aE * cl))), aE)
349- let cs = (cr + cp)
350- let cq = if ((cr >= cs))
351- then (ci + fraction(aE, cs, aO((cl - 1))))
352- else ((bW + (aE * cl)) + fraction(aE, (cs - cr), cn))
353- $Tuple2(cs, cq)
344+ let cq = fraction(aN((ck - 1)), ((bV + (aD * ck)) - ch), aD)
345+ let co = fraction(cm, (cj - (bV + (aD * ck))), aD)
346+ let cr = (cq + co)
347+ let cp = if ((cq >= cr))
348+ then (ch + fraction(aD, cr, aN((ck - 1))))
349+ else ((bV + (aD * ck)) + fraction(aD, (cr - cq), cm))
350+ $Tuple2(cr, cp)
354351 }
355352 else {
356- let ct = fraction(aO((cl - 2)), ((bW + (aE * (cl - 1))) - ci), aE)
357- let cr = aO((cl - 1))
358- let cp = fraction(cn, (ck - (bW + (aE * cl))), aE)
359- let cs = ((ct + cr) + cp)
360- let cq = if ((ct >= cs))
361- then (ci + fraction(aE, cs, aO((cl - 2))))
362- else if (((ct + cr) >= cs))
363- then ((bW + (aE * (cl - 1))) + fraction(aE, (cs - ct), aO((cl - 1))))
364- else ((bW + (aE * cl)) + fraction(aE, ((cs - ct) - cr), cn))
365- $Tuple2(cs, cq)
353+ let cs = fraction(aN((ck - 2)), ((bV + (aD * (ck - 1))) - ch), aD)
354+ let cq = aN((ck - 1))
355+ let co = fraction(cm, (cj - (bV + (aD * ck))), aD)
356+ let cr = ((cs + cq) + co)
357+ let cp = if ((cs >= cr))
358+ then (ch + fraction(aD, cr, aN((ck - 2))))
359+ else if (((cs + cq) >= cr))
360+ then ((bV + (aD * (ck - 1))) + fraction(aD, (cr - cs), aN((ck - 1))))
361+ else ((bV + (aD * ck)) + fraction(aD, ((cr - cs) - cq), cm))
362+ $Tuple2(cr, cp)
366363 }
367- let cu = co._1
368- let cv = co._2
369- let cw = valueOrElse(getInteger(bK[aX], aM), 0)
370- let cx = if ((cm[bv] != 0))
371- then fraction(cu, cm[bw], cm[bv])
364+ let ct = cn._1
365+ let cu = cn._2
366+ let cv = valueOrElse(getInteger(bJ[aW], aL), 0)
367+ let cw = if ((cl[bu] != 0))
368+ then fraction(ct, cl[bv], cl[bu])
372369 else 0
373-[bN, fraction((bT - aG), az, bN), bT, bO, bP, bQ, bW, bZ, bX, bY, cb, cc, cd, ce, cg, ch, cl, cw, cn, ci, bS, cx, cv]
370+[bM, fraction((bS - aF), ay, bM), bS, bN, bO, bP, bV, bY, bW, bX, ca, cb, cc, cd, cf, cg, ck, cv, cm, ch, bR, cw, cu]
374371 }
375372
376373
377-let cy = take(drop(this.bytes, 1), 1)
374+let cx = take(drop(this.bytes, 1), 1)
378375
379-let cz = {
380- let d = cy
376+let cy = {
377+ let d = cx
381378 if ((base58'2W' == d))
382379 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
383380 else if ((base58'2T' == d))
385382 else throw("Unknown chain")
386383 }
387384
388-let cA = "profitAddr"
385+let cz = "profitAddr"
389386
390-let cB = "stakersAmountPaidTotal"
387+let cA = "stakersAmountPaidTotal"
391388
392-func cC (Y) = ("stakersAmountPaidUser_" + Y)
389+func cB (Y) = ("stakersAmountPaidUser_" + Y)
393390
394391
395-let cD = addressFromStringValue(valueOrElse(getString(this, v()), cz))
392+let cC = addressFromStringValue(valueOrElse(getString(this, v()), cy))
396393
397-let cE = addressFromStringValue(f)
394+let cD = addressFromStringValue(f)
398395
399-func cF () = J(reentrantInvoke(cE, "saveLastTx", nil, nil))
396+func cE () = J(reentrantInvoke(cD, "saveLastTx", nil, nil))
400397
401398
402-func cG (Y) = {
403- let cH = valueOrElse(getInteger(ar(Y)), 0)
404- let bV = lastBlock.timestamp
405- if ((g > (bV - cH)))
399+func cF (Y) = {
400+ let cG = valueOrElse(getInteger(aq(Y)), 0)
401+ let bU = lastBlock.timestamp
402+ if ((g > (bU - cG)))
406403 then throw((("Arbitrages are possible once a " + toString((g / 60000))) + "min"))
407- else valueOrElse(getInteger(cE, au(Y)), 0)
404+ else valueOrElse(getInteger(cD, at(Y)), 0)
408405 }
409406
410407
411-func cI (Y) = {
412- let cJ = addressFromStringValue(Y)
413- let cK = bI(Y, [cD, cE, D, E, F], c, 0)
414- let bV = lastBlock.timestamp
415- let bW = cK[bA]
416- let bY = cK[bB]
417- let cL = cK[bC]
418- let ce = cK[bD]
419- let cM = cK[bE]
420- let cN = cK[bG]
421- let cO = cC(Y)
422- let cP = cK[bG]
423- let cQ = cK[bH]
424- $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(ak))), cL, I), ScriptTransfer(B, cM, I), IntegerEntry(cO, (valueOrElse(getInteger(cO), 0) + cN)), IntegerEntry(cB, (valueOrElse(getInteger(cB), 0) + cP)), IntegerEntry(ap, (cK[bF] - cP)), IntegerEntry(am, (bY - cL)), IntegerEntry(al, bV), IntegerEntry(ao, (ce - cM)), IntegerEntry(an, bV), IntegerEntry(aq(Y), cQ)], cN)
408+func cH (Y) = {
409+ let cI = addressFromStringValue(Y)
410+ let cJ = bH(Y, [cC, cD, D, E, F], c, 0)
411+ let cK = aM(Y)
412+ let ch = valueOrElse(getInteger(cK), 0)
413+ let cL = cJ[bG]
414+ if ((ch == cL))
415+ then $Tuple2(nil, 0)
416+ else {
417+ let bU = lastBlock.timestamp
418+ let bV = cJ[bz]
419+ let bX = cJ[bA]
420+ let cM = cJ[bB]
421+ let cd = cJ[bC]
422+ let cN = cJ[bD]
423+ let cO = cJ[bF]
424+ let cP = cB(Y)
425+ let cQ = cJ[bF]
426+ $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(ak))), cM, I), ScriptTransfer(B, cN, I), IntegerEntry(cP, (valueOrElse(getInteger(cP), 0) + cO)), IntegerEntry(cA, (valueOrElse(getInteger(cA), 0) + cQ)), IntegerEntry(ap, (cJ[bE] - cQ)), IntegerEntry(am, (bX - cM)), IntegerEntry(al, bU), IntegerEntry(ao, (cd - cN)), IntegerEntry(an, bU), IntegerEntry(cK, cL)], cO)
427+ }
425428 }
426429
427430
428431 func cR (Y,cS) = {
429- let bV = lastBlock.timestamp
430- let cT = ax(Y)
431- let cU = av(Y)
432- let cH = valueOrElse(getInteger(cT), 0)
432+ let bU = lastBlock.timestamp
433+ let cT = aw(Y)
434+ let cU = au(Y)
435+ let cG = valueOrElse(getInteger(cT), 0)
433436 let cV = valueOrElse(getInteger(cU), 0)
434- let cW = valueOrElse(getInteger(aw), 0)
435- let ac = fraction(fraction(aa, cV, W), (cH - bV), aj)
436- $Tuple3([IntegerEntry(cT, bV), IntegerEntry(cU, (cV + cS)), IntegerEntry(aw, (cW + cS))], ac, cV)
437+ let cW = valueOrElse(getInteger(av), 0)
438+ let ac = fraction(fraction(aa, cV, W), (cG - bU), aj)
439+ $Tuple3([IntegerEntry(cT, bU), IntegerEntry(cU, (cV + cS)), IntegerEntry(av, (cW + cS))], ac, cV)
437440 }
438441
439442
440443 @Callable(cX)
441-func constructorV1 (cY,cZ,ca,da) = if ((cX.caller != this))
444+func constructorV1 (cY,cZ,bZ,da) = if ((cX.caller != this))
442445 then throw("Permission denied")
443446 else if (isDefined(getBinary(H)))
444447 then throw("Already initialized")
445448 else {
446- let bN = ah
447- let db = Issue("WLGOLD", "WavesLands Gold investment token", bN, 8, true, unit, 0)
449+ let bM = ah
450+ let db = Issue("WLGOLD", "WavesLands Gold investment token", bM, 8, true, unit, 0)
448451 let dc = calculateAssetId(db)
449-[db, IntegerEntry(as, lastBlock.timestamp), IntegerEntry(at, bN), IntegerEntry(cB, 0), IntegerEntry(ap, fraction(ah, ai, i)), BinaryEntry(H, dc), StringEntry(u(), cY), StringEntry(ak, ca), StringEntry(cA, da)]
452+[db, IntegerEntry(ar, lastBlock.timestamp), IntegerEntry(as, bM), IntegerEntry(cA, 0), IntegerEntry(ap, fraction(ah, ai, i)), BinaryEntry(H, dc), StringEntry(u(), cY), StringEntry(ak, bZ), StringEntry(cz, da)]
450453 }
451454
452455
460463
461464 @Callable(cX)
462465 func buyWlg (de) = {
463- let df = cF()
466+ let df = cE()
464467 if ((df == df))
465468 then if ((size(cX.payments) != 1))
466469 then throw("exactly 1 payment must be attached")
472475 else (value(dg.assetId) != c))
473476 then throw("USDT payments only!")
474477 else {
475- let cJ = cX.caller
476- let Y = toString(cJ)
478+ let cI = cX.caller
479+ let Y = toString(cI)
477480 if ((k > dh))
478481 then throw((("You can trade min " + M(k, 6)) + " USDT"))
479482 else {
480- let cK = bI("", [cD, cE, D, E, F], c, dh)
481- let di = cK[bx]
482- let dj = cK[bz]
483+ let cJ = bH("", [cC, cD, D, E, F], c, dh)
484+ let di = cJ[bw]
485+ let dj = cJ[by]
483486 let dk = fraction(dj, j, di)
484487 let dl = fraction(dk, 6, 5)
485488 let dm = fraction(dh, j, dl)
486- let dn = cG(Y)
489+ let dn = cF(Y)
487490 if ((dm > dn))
488491 then throw((("You can get max " + M(dn, 8)) + " WLGOLD"))
489492 else if ((de > dm))
492495 let do = (dh / 6)
493496 let dp = (dh - do)
494497 let dq = fraction(di, dp, dj)
495- $Tuple2([Reissue(I, dq, true), IntegerEntry(at, (di + dq)), IntegerEntry(ar(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cA))), do, c), ScriptTransfer(cJ, dm, I)], df)
498+ $Tuple2([Reissue(I, dq, true), IntegerEntry(as, (di + dq)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cz))), do, c), ScriptTransfer(cI, dm, I)], df)
496499 }
497500 }
498501 }
504507
505508 @Callable(cX)
506509 func sellWlg (de) = {
507- let df = cF()
510+ let df = cE()
508511 if ((df == df))
509512 then if ((size(cX.payments) != 1))
510513 then throw("exactly 1 payment must be attached")
511514 else {
512515 let dg = cX.payments[0]
513516 let dr = dg.amount
514- let cJ = cX.caller
515- let Y = toString(cJ)
516- let dn = cG(Y)
517+ let cI = cX.caller
518+ let Y = toString(cI)
519+ let dn = cF(Y)
517520 if ((dr > dn))
518521 then throw((("You can spend max " + M(dn, 8)) + " WLGOLD"))
519522 else if (if (!(isDefined(dg.assetId)))
521524 else (value(dg.assetId) != I))
522525 then throw("WLGOLD payments only!")
523526 else {
524- let cK = bI("", [cD, cE, D, E, F], c, 0)
525- let di = cK[bx]
526- let ds = fraction(cK[by], 4, 5)
527+ let cJ = bH("", [cC, cD, D, E, F], c, 0)
528+ let di = cJ[bw]
529+ let ds = fraction(cJ[bx], 4, 5)
527530 let dh = fraction(dr, ds, j)
528531 if ((k > dh))
529532 then throw((("You can trade min " + M(k, 6)) + " USDT"))
531534 then throw("Price changed during operation, please try again")
532535 else {
533536 let do = (dh / 4)
534- $Tuple2([Burn(I, dr), IntegerEntry(at, (di - dr)), IntegerEntry(ar(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cA))), do, c), ScriptTransfer(cJ, dh, c)], df)
537+ $Tuple2([Burn(I, dr), IntegerEntry(as, (di - dr)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cz))), do, c), ScriptTransfer(cI, dh, c)], df)
535538 }
536539 }
537540 }
542545
543546 @Callable(cX)
544547 func claim () = {
545- let df = cF()
548+ let df = cE()
546549 if ((df == df))
547550 then if ((size(cX.payments) != 0))
548551 then throw("No payments required")
549552 else {
550- let dt = cI(toString(cX.caller))
553+ let dt = cH(toString(cX.caller))
551554 let du = dt._1
552555 $Tuple2((du :+ ScriptTransfer(cX.caller, dt._2, I)), df)
553556 }
560563 func onStakeUnstakeLand (Y) = if (if (if ((cX.caller != C))
561564 then (cX.caller != G)
562565 else false)
563- then (cX.caller != cE)
566+ then (cX.caller != cD)
564567 else false)
565568 then throw("Permission denied")
566569 else {
567- let dv = cI(Y)
570+ let dv = cH(Y)
568571 let du = dv._1
569572 let dw = dv._2
570573 $Tuple2((du :+ ScriptTransfer(addressFromStringValue(Y), dw, I)), dw)
573576
574577
575578 @Callable(cX)
576-func burnWlgold () = if ((cX.caller != cE))
579+func burnWlgold () = if ((cX.caller != cD))
577580 then throw("Permission denied")
578581 else {
579582 let dr = cX.payments[0].amount
580- let cK = bI("", [cD, cE, D, E, F], c, 0)
581- let dx = (cK[bx] - dr)
582- $Tuple2([Burn(I, dr), IntegerEntry(at, dx)], dx)
583+ let cJ = bH("", [cC, cD, D, E, F], c, 0)
584+ let dx = (cJ[bw] - dr)
585+ $Tuple2([Burn(I, dr), IntegerEntry(as, dx)], dx)
583586 }
584587
585588
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
3535 let g = {
3636 let d = b
3737 if ((base58'2W' == d))
3838 then a
3939 else if ((base58'2T' == d))
4040 then 60000
4141 else throw("Unknown chain")
4242 }
4343
4444 let h = "__"
4545
4646 let i = 1000000
4747
4848 let j = 100000000
4949
5050 let k = 100000
5151
5252 func l (m,n) = valueOrErrorMessage(getString(m, n), makeString(["mandatory ", toString(m), ".", n, " is not defined"], ""))
5353
5454
5555 let o = 1
5656
5757 let p = 4
5858
5959 let q = 5
6060
6161 let r = 6
6262
6363 let s = 8
6464
6565 func t () = "%s__restConfig"
6666
6767
6868 func u () = "%s__restAddr"
6969
7070
7171 func v () = "%s__rest2Addr"
7272
7373
7474 func w (x) = split_4C(l(x, t()), h)
7575
7676
7777 func y (z,A) = valueOrErrorMessage(addressFromString(z[A]), ("Rest cfg doesn't contain address at index " + toString(A)))
7878
7979
8080 let B = addressFromStringValue(valueOrElse(getString(this, u()), e))
8181
8282 let z = w(B)
8383
8484 let C = y(z, o)
8585
8686 let D = y(z, p)
8787
8888 let E = y(z, q)
8989
9090 let F = y(z, r)
9191
9292 let G = y(z, s)
9393
9494 let H = "wlg_assetId"
9595
9696 let I = valueOrErrorMessage(getBinary(D, H), "WLGOLD is not issued yet")
9797
9898 func J (K) = {
9999 let d = K
100100 if ($isInstanceOf(d, "Int"))
101101 then {
102102 let L = d
103103 L
104104 }
105105 else throw("fail to cast into Int")
106106 }
107107
108108
109109 func M (N,O) = {
110110 let P = pow(10, 0, O, 0, 0, DOWN)
111111 let Q = toString((N % P))
112112 let R = drop(toString(P), (1 + size(Q)))
113113 (((toString((N / P)) + ".") + R) + Q)
114114 }
115115
116116
117117 let S = 100000000
118118
119119 let T = 3200
120120
121121 let U = 4000
122122
123123 let V = 3
124124
125125 let W = 100000000000
126126
127127 func X (Y) = ("userXP_" + Y)
128128
129129
130130 func Z (Y) = ("userLevel_" + Y)
131131
132132
133133 let aa = 10000
134134
135135 func ab (ac) = fraction(T, pow(ac, 4, U, 4, 4, DOWN), S)
136136
137137
138138 func ad (ae,af) = {
139139 let ag = ab(af)
140140 [ag, (V * (ag - ae))]
141141 }
142142
143143
144144 let ah = 100000000000000
145145
146146 let ai = 400000
147147
148148 let aj = 86400000
149149
150150 let ak = "teamAddr"
151151
152152 let al = "lastClaimedTime_team"
153153
154154 let am = "teamAmountLeft"
155155
156156 let an = "lastClaimedTime_activities"
157157
158158 let ao = "activitiesAmountLeft"
159159
160160 let ap = "stakersAmountLeft"
161161
162-func aq (Y) = ("lastClaimedTimeUser_" + Y)
162+func aq (Y) = ("lastArbTimeUser_" + Y)
163163
164164
165-func ar (Y) = ("lastArbTimeUser_" + Y)
165+let ar = "wlg_issueTime"
166+
167+let as = "wlg_issuedAmount"
168+
169+func at (Y) = ("acresStakedAmountByUser_" + Y)
166170
167171
168-let as = "wlg_issueTime"
169-
170-let at = "wlg_issuedAmount"
171-
172-func au (Y) = ("acresStakedAmountByUser_" + Y)
172+func au (Y) = ("wlgStakedAmountByUser_" + Y)
173173
174174
175-func av (Y) = ("wlgStakedAmountByUser_" + Y)
175+let av = "wlgStakedAmountTotal"
176+
177+func aw (Y) = ("wlgStakedTimeByUser_" + Y)
176178
177179
178-let aw = "wlgStakedAmountTotal"
180+let ax = 1000000
179181
180-func ax (Y) = ("wlgStakedTimeByUser_" + Y)
182+let ay = 100000000
181183
184+let az = 100000000000000
182185
183-let ay = 1000000
186+let aA = 200000
184187
185-let az = 100000000
188+let aB = 100000
186189
187-let aA = 100000000000000
190+let aC = 400000
188191
189-let aB = 200000
192+let aD = 31557600000
190193
191-let aC = 100000
194+let aE = take(drop(this.bytes, 1), 1)
192195
193-let aD = 400000
194-
195-let aE = 31557600000
196-
197-let aF = take(drop(this.bytes, 1), 1)
198-
199-let aG = {
200- let d = aF
196+let aF = {
197+ let d = aE
201198 if ((base58'2W' == d))
202199 then 1208630000
203200 else if ((base58'2T' == d))
204201 then 0
205202 else throw("Unknown chain")
206203 }
207204
208-let aH = "teamAddr"
205+let aG = "teamAddr"
209206
210-let aI = "lastClaimedTime_team"
207+let aH = "lastClaimedTime_team"
211208
212-let aJ = "teamAmountLeft"
209+let aI = "teamAmountLeft"
213210
214-let aK = "lastClaimedTime_activities"
211+let aJ = "lastClaimedTime_activities"
215212
216-let aL = "activitiesAmountLeft"
213+let aK = "activitiesAmountLeft"
217214
218-let aM = "stakersAmountLeft"
215+let aL = "stakersAmountLeft"
219216
220-func aN (Y) = ("lastClaimedTimeUser_" + Y)
217+func aM (Y) = ("lastClaimedTimeUser_" + Y)
221218
222219
223-func aO (aP) = fraction(aA, (aD * (aP + 1)), (6 * ay))
220+func aN (aO) = fraction(az, (aC * (aO + 1)), (6 * ax))
224221
225222
226-let aQ = "wlg_issueTime"
223+let aP = "wlg_issueTime"
227224
228-let aR = "wlg_issuedAmount"
225+let aQ = "wlg_issuedAmount"
229226
230-let aS = "zbill_issuedAmount"
227+let aR = "zbill_issuedAmount"
231228
232-func aT (Y) = ("acresStakedAmountByUser_" + Y)
229+func aS (Y) = ("acresStakedAmountByUser_" + Y)
233230
234231
235-let aU = "acresStakedAmountTotal"
232+let aT = "acresStakedAmountTotal"
236233
237-let aV = 0
234+let aU = 0
238235
239-let aW = 1
236+let aV = 1
240237
241-let aX = 2
238+let aW = 2
242239
243-let aY = 3
240+let aX = 3
244241
245-let aZ = 4
242+let aY = 4
246243
247-let ba = [10, 20, 40, 80, 150, 250, 400, 700, 1000]
244+let aZ = [10, 20, 40, 80, 150, 250, 400, 700, 1000]
248245
249-func bb (bc) = {
250- let bd = (bc / az)
251- func be (bf,bg) = if ((bg > bd))
252- then bf
253- else (bf + 1)
246+func ba (bb) = {
247+ let bc = (bb / ay)
248+ func bd (be,bf) = if ((bf > bc))
249+ then be
250+ else (be + 1)
254251
255252 let A = {
256- let bh = ba
257- let bi = size(bh)
258- let bj = 0
259- func bk (bl,bm) = if ((bm >= bi))
260- then bl
261- else be(bl, bh[bm])
253+ let bg = aZ
254+ let bh = size(bg)
255+ let bi = 0
256+ func bj (bk,bl) = if ((bl >= bh))
257+ then bk
258+ else bd(bk, bg[bl])
262259
263- func bn (bl,bm) = if ((bm >= bi))
264- then bl
260+ func bm (bk,bl) = if ((bl >= bh))
261+ then bk
265262 else throw("List size exceeds 10")
266263
267- bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
264+ bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
268265 }
269266 (A + 1)
270267 }
271268
272269
273-func bo (bc) = ((bc * 20) * (bb(bc) + 4))
270+func bn (bb) = ((bb * 20) * (ba(bb) + 4))
274271
275272
276-func bp (bq,C) = {
277- let br = valueOrElse(getInteger(C, aU), 0)
278- let bs = bo(br)
279- let bt = valueOrElse(getInteger(C, aT(bq)), 0)
280- let bu = bo(bt)
281-[bs, bu]
273+func bo (bp,C) = {
274+ let bq = valueOrElse(getInteger(C, aT), 0)
275+ let br = bn(bq)
276+ let bs = valueOrElse(getInteger(C, aS(bp)), 0)
277+ let bt = bn(bs)
278+[br, bt]
282279 }
283280
284281
285-let bv = 0
282+let bu = 0
286283
287-let bw = 1
284+let bv = 1
288285
289-let bx = 0
286+let bw = 0
290287
291-let by = 1
288+let bx = 1
292289
293-let bz = 2
290+let by = 2
294291
295-let bA = 6
292+let bz = 6
296293
297-let bB = 9
294+let bA = 9
298295
299-let bC = 10
296+let bB = 10
300297
301-let bD = 13
298+let bC = 13
302299
303-let bE = 14
300+let bD = 14
304301
305-let bF = 17
302+let bE = 17
306303
307-let bG = 21
304+let bF = 21
308305
309-let bH = 22
306+let bG = 22
310307
311-func bI (bJ,bK,bL,bM) = {
312- let bN = valueOrErrorMessage(getInteger(bK[aX], aR), "WLGOLD is not issued yet")
313- let bO = assetBalance(bK[aV], bL)
314- let bP = (assetBalance(bK[aX], bL) - bM)
315- let bQ = assetBalance(bK[aY], bL)
316- let bR = bK[aZ]
317- let bS = (assetBalance(bR, bL) + valueOrElse(getInteger(bR, aS), 0))
318- let bT = (bP + bS)
319- let bU = valueOrErrorMessage(getBinary(bK[aX], "wlg_assetId"), "Not initialized yet")
320- let bV = lastBlock.timestamp
321- let bW = valueOrErrorMessage(getInteger(bK[aX], aQ), "Not initialized")
322- let bX = fraction(aA, aB, ay)
323- let bY = valueOrElse(getInteger(bK[aX], aJ), bX)
324- let bZ = valueOrElse(getInteger(bK[aX], aI), bW)
325- let ca = addressFromStringValue(value(getString(bK[aX], aH)))
326- let cb = min([fraction(bX, (bV - bZ), (3 * aE)), bY])
327- let cc = assetBalance(ca, bU)
328- let cd = fraction(aA, aC, ay)
329- let ce = valueOrElse(getInteger(bK[aX], aL), cd)
330- let cf = valueOrElse(getInteger(bK[aX], aK), bW)
331- let cg = min([fraction(cd, (bV - cf), (3 * aE)), ce])
332- let ch = assetBalance(bK[aV], bU)
333- let ci = valueOrElse(getInteger(bK[aX], aN(bJ)), bW)
334- let cj = ((ci - bW) / aE)
335- let ck = min([bV, (bW + (3 * aE))])
336- let cl = min([((bV - bW) / aE), 2])
337- let cm = bp(bJ, bK[aW])
338- let cn = aO(cl)
339- let co = if ((cj == cl))
308+func bH (bI,bJ,bK,bL) = {
309+ let bM = valueOrErrorMessage(getInteger(bJ[aW], aQ), "WLGOLD is not issued yet")
310+ let bN = assetBalance(bJ[aU], bK)
311+ let bO = (assetBalance(bJ[aW], bK) - bL)
312+ let bP = assetBalance(bJ[aX], bK)
313+ let bQ = bJ[aY]
314+ let bR = (assetBalance(bQ, bK) + valueOrElse(getInteger(bQ, aR), 0))
315+ let bS = (bO + bR)
316+ let bT = valueOrErrorMessage(getBinary(bJ[aW], "wlg_assetId"), "Not initialized yet")
317+ let bU = lastBlock.timestamp
318+ let bV = valueOrErrorMessage(getInteger(bJ[aW], aP), "Not initialized")
319+ let bW = fraction(az, aA, ax)
320+ let bX = valueOrElse(getInteger(bJ[aW], aI), bW)
321+ let bY = valueOrElse(getInteger(bJ[aW], aH), bV)
322+ let bZ = addressFromStringValue(value(getString(bJ[aW], aG)))
323+ let ca = min([fraction(bW, (bU - bY), (3 * aD)), bX])
324+ let cb = assetBalance(bZ, bT)
325+ let cc = fraction(az, aB, ax)
326+ let cd = valueOrElse(getInteger(bJ[aW], aK), cc)
327+ let ce = valueOrElse(getInteger(bJ[aW], aJ), bV)
328+ let cf = min([fraction(cc, (bU - ce), (3 * aD)), cd])
329+ let cg = assetBalance(bJ[aU], bT)
330+ let ch = valueOrElse(getInteger(bJ[aW], aM(bI)), bV)
331+ let ci = ((ch - bV) / aD)
332+ let cj = min([bU, (bV + (3 * aD))])
333+ let ck = min([((bU - bV) / aD), 2])
334+ let cl = bo(bI, bJ[aV])
335+ let cm = aN(ck)
336+ let cn = if ((ci == ck))
340337 then {
341- let cp = fraction(cn, (ck - ci), aE)
342- let cq = ((ci + ck) - ci)
343- $Tuple2(cp, cq)
338+ let co = fraction(cm, (cj - ch), aD)
339+ let cp = cj
340+ $Tuple2(co, cp)
344341 }
345- else if ((cj == (cl - 1)))
342+ else if ((ci == (ck - 1)))
346343 then {
347- let cr = fraction(aO((cl - 1)), ((bW + (aE * cl)) - ci), aE)
348- let cp = fraction(cn, (ck - (bW + (aE * cl))), aE)
349- let cs = (cr + cp)
350- let cq = if ((cr >= cs))
351- then (ci + fraction(aE, cs, aO((cl - 1))))
352- else ((bW + (aE * cl)) + fraction(aE, (cs - cr), cn))
353- $Tuple2(cs, cq)
344+ let cq = fraction(aN((ck - 1)), ((bV + (aD * ck)) - ch), aD)
345+ let co = fraction(cm, (cj - (bV + (aD * ck))), aD)
346+ let cr = (cq + co)
347+ let cp = if ((cq >= cr))
348+ then (ch + fraction(aD, cr, aN((ck - 1))))
349+ else ((bV + (aD * ck)) + fraction(aD, (cr - cq), cm))
350+ $Tuple2(cr, cp)
354351 }
355352 else {
356- let ct = fraction(aO((cl - 2)), ((bW + (aE * (cl - 1))) - ci), aE)
357- let cr = aO((cl - 1))
358- let cp = fraction(cn, (ck - (bW + (aE * cl))), aE)
359- let cs = ((ct + cr) + cp)
360- let cq = if ((ct >= cs))
361- then (ci + fraction(aE, cs, aO((cl - 2))))
362- else if (((ct + cr) >= cs))
363- then ((bW + (aE * (cl - 1))) + fraction(aE, (cs - ct), aO((cl - 1))))
364- else ((bW + (aE * cl)) + fraction(aE, ((cs - ct) - cr), cn))
365- $Tuple2(cs, cq)
353+ let cs = fraction(aN((ck - 2)), ((bV + (aD * (ck - 1))) - ch), aD)
354+ let cq = aN((ck - 1))
355+ let co = fraction(cm, (cj - (bV + (aD * ck))), aD)
356+ let cr = ((cs + cq) + co)
357+ let cp = if ((cs >= cr))
358+ then (ch + fraction(aD, cr, aN((ck - 2))))
359+ else if (((cs + cq) >= cr))
360+ then ((bV + (aD * (ck - 1))) + fraction(aD, (cr - cs), aN((ck - 1))))
361+ else ((bV + (aD * ck)) + fraction(aD, ((cr - cs) - cq), cm))
362+ $Tuple2(cr, cp)
366363 }
367- let cu = co._1
368- let cv = co._2
369- let cw = valueOrElse(getInteger(bK[aX], aM), 0)
370- let cx = if ((cm[bv] != 0))
371- then fraction(cu, cm[bw], cm[bv])
364+ let ct = cn._1
365+ let cu = cn._2
366+ let cv = valueOrElse(getInteger(bJ[aW], aL), 0)
367+ let cw = if ((cl[bu] != 0))
368+ then fraction(ct, cl[bv], cl[bu])
372369 else 0
373-[bN, fraction((bT - aG), az, bN), bT, bO, bP, bQ, bW, bZ, bX, bY, cb, cc, cd, ce, cg, ch, cl, cw, cn, ci, bS, cx, cv]
370+[bM, fraction((bS - aF), ay, bM), bS, bN, bO, bP, bV, bY, bW, bX, ca, cb, cc, cd, cf, cg, ck, cv, cm, ch, bR, cw, cu]
374371 }
375372
376373
377-let cy = take(drop(this.bytes, 1), 1)
374+let cx = take(drop(this.bytes, 1), 1)
378375
379-let cz = {
380- let d = cy
376+let cy = {
377+ let d = cx
381378 if ((base58'2W' == d))
382379 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
383380 else if ((base58'2T' == d))
384381 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
385382 else throw("Unknown chain")
386383 }
387384
388-let cA = "profitAddr"
385+let cz = "profitAddr"
389386
390-let cB = "stakersAmountPaidTotal"
387+let cA = "stakersAmountPaidTotal"
391388
392-func cC (Y) = ("stakersAmountPaidUser_" + Y)
389+func cB (Y) = ("stakersAmountPaidUser_" + Y)
393390
394391
395-let cD = addressFromStringValue(valueOrElse(getString(this, v()), cz))
392+let cC = addressFromStringValue(valueOrElse(getString(this, v()), cy))
396393
397-let cE = addressFromStringValue(f)
394+let cD = addressFromStringValue(f)
398395
399-func cF () = J(reentrantInvoke(cE, "saveLastTx", nil, nil))
396+func cE () = J(reentrantInvoke(cD, "saveLastTx", nil, nil))
400397
401398
402-func cG (Y) = {
403- let cH = valueOrElse(getInteger(ar(Y)), 0)
404- let bV = lastBlock.timestamp
405- if ((g > (bV - cH)))
399+func cF (Y) = {
400+ let cG = valueOrElse(getInteger(aq(Y)), 0)
401+ let bU = lastBlock.timestamp
402+ if ((g > (bU - cG)))
406403 then throw((("Arbitrages are possible once a " + toString((g / 60000))) + "min"))
407- else valueOrElse(getInteger(cE, au(Y)), 0)
404+ else valueOrElse(getInteger(cD, at(Y)), 0)
408405 }
409406
410407
411-func cI (Y) = {
412- let cJ = addressFromStringValue(Y)
413- let cK = bI(Y, [cD, cE, D, E, F], c, 0)
414- let bV = lastBlock.timestamp
415- let bW = cK[bA]
416- let bY = cK[bB]
417- let cL = cK[bC]
418- let ce = cK[bD]
419- let cM = cK[bE]
420- let cN = cK[bG]
421- let cO = cC(Y)
422- let cP = cK[bG]
423- let cQ = cK[bH]
424- $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(ak))), cL, I), ScriptTransfer(B, cM, I), IntegerEntry(cO, (valueOrElse(getInteger(cO), 0) + cN)), IntegerEntry(cB, (valueOrElse(getInteger(cB), 0) + cP)), IntegerEntry(ap, (cK[bF] - cP)), IntegerEntry(am, (bY - cL)), IntegerEntry(al, bV), IntegerEntry(ao, (ce - cM)), IntegerEntry(an, bV), IntegerEntry(aq(Y), cQ)], cN)
408+func cH (Y) = {
409+ let cI = addressFromStringValue(Y)
410+ let cJ = bH(Y, [cC, cD, D, E, F], c, 0)
411+ let cK = aM(Y)
412+ let ch = valueOrElse(getInteger(cK), 0)
413+ let cL = cJ[bG]
414+ if ((ch == cL))
415+ then $Tuple2(nil, 0)
416+ else {
417+ let bU = lastBlock.timestamp
418+ let bV = cJ[bz]
419+ let bX = cJ[bA]
420+ let cM = cJ[bB]
421+ let cd = cJ[bC]
422+ let cN = cJ[bD]
423+ let cO = cJ[bF]
424+ let cP = cB(Y)
425+ let cQ = cJ[bF]
426+ $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(ak))), cM, I), ScriptTransfer(B, cN, I), IntegerEntry(cP, (valueOrElse(getInteger(cP), 0) + cO)), IntegerEntry(cA, (valueOrElse(getInteger(cA), 0) + cQ)), IntegerEntry(ap, (cJ[bE] - cQ)), IntegerEntry(am, (bX - cM)), IntegerEntry(al, bU), IntegerEntry(ao, (cd - cN)), IntegerEntry(an, bU), IntegerEntry(cK, cL)], cO)
427+ }
425428 }
426429
427430
428431 func cR (Y,cS) = {
429- let bV = lastBlock.timestamp
430- let cT = ax(Y)
431- let cU = av(Y)
432- let cH = valueOrElse(getInteger(cT), 0)
432+ let bU = lastBlock.timestamp
433+ let cT = aw(Y)
434+ let cU = au(Y)
435+ let cG = valueOrElse(getInteger(cT), 0)
433436 let cV = valueOrElse(getInteger(cU), 0)
434- let cW = valueOrElse(getInteger(aw), 0)
435- let ac = fraction(fraction(aa, cV, W), (cH - bV), aj)
436- $Tuple3([IntegerEntry(cT, bV), IntegerEntry(cU, (cV + cS)), IntegerEntry(aw, (cW + cS))], ac, cV)
437+ let cW = valueOrElse(getInteger(av), 0)
438+ let ac = fraction(fraction(aa, cV, W), (cG - bU), aj)
439+ $Tuple3([IntegerEntry(cT, bU), IntegerEntry(cU, (cV + cS)), IntegerEntry(av, (cW + cS))], ac, cV)
437440 }
438441
439442
440443 @Callable(cX)
441-func constructorV1 (cY,cZ,ca,da) = if ((cX.caller != this))
444+func constructorV1 (cY,cZ,bZ,da) = if ((cX.caller != this))
442445 then throw("Permission denied")
443446 else if (isDefined(getBinary(H)))
444447 then throw("Already initialized")
445448 else {
446- let bN = ah
447- let db = Issue("WLGOLD", "WavesLands Gold investment token", bN, 8, true, unit, 0)
449+ let bM = ah
450+ let db = Issue("WLGOLD", "WavesLands Gold investment token", bM, 8, true, unit, 0)
448451 let dc = calculateAssetId(db)
449-[db, IntegerEntry(as, lastBlock.timestamp), IntegerEntry(at, bN), IntegerEntry(cB, 0), IntegerEntry(ap, fraction(ah, ai, i)), BinaryEntry(H, dc), StringEntry(u(), cY), StringEntry(ak, ca), StringEntry(cA, da)]
452+[db, IntegerEntry(ar, lastBlock.timestamp), IntegerEntry(as, bM), IntegerEntry(cA, 0), IntegerEntry(ap, fraction(ah, ai, i)), BinaryEntry(H, dc), StringEntry(u(), cY), StringEntry(ak, bZ), StringEntry(cz, da)]
450453 }
451454
452455
453456
454457 @Callable(cX)
455458 func constructorV2 (dd) = if ((cX.caller != this))
456459 then throw("Permission denied")
457460 else [StringEntry(v(), dd)]
458461
459462
460463
461464 @Callable(cX)
462465 func buyWlg (de) = {
463- let df = cF()
466+ let df = cE()
464467 if ((df == df))
465468 then if ((size(cX.payments) != 1))
466469 then throw("exactly 1 payment must be attached")
467470 else {
468471 let dg = cX.payments[0]
469472 let dh = dg.amount
470473 if (if (!(isDefined(dg.assetId)))
471474 then true
472475 else (value(dg.assetId) != c))
473476 then throw("USDT payments only!")
474477 else {
475- let cJ = cX.caller
476- let Y = toString(cJ)
478+ let cI = cX.caller
479+ let Y = toString(cI)
477480 if ((k > dh))
478481 then throw((("You can trade min " + M(k, 6)) + " USDT"))
479482 else {
480- let cK = bI("", [cD, cE, D, E, F], c, dh)
481- let di = cK[bx]
482- let dj = cK[bz]
483+ let cJ = bH("", [cC, cD, D, E, F], c, dh)
484+ let di = cJ[bw]
485+ let dj = cJ[by]
483486 let dk = fraction(dj, j, di)
484487 let dl = fraction(dk, 6, 5)
485488 let dm = fraction(dh, j, dl)
486- let dn = cG(Y)
489+ let dn = cF(Y)
487490 if ((dm > dn))
488491 then throw((("You can get max " + M(dn, 8)) + " WLGOLD"))
489492 else if ((de > dm))
490493 then throw("Price changed during operation, please try again")
491494 else {
492495 let do = (dh / 6)
493496 let dp = (dh - do)
494497 let dq = fraction(di, dp, dj)
495- $Tuple2([Reissue(I, dq, true), IntegerEntry(at, (di + dq)), IntegerEntry(ar(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cA))), do, c), ScriptTransfer(cJ, dm, I)], df)
498+ $Tuple2([Reissue(I, dq, true), IntegerEntry(as, (di + dq)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cz))), do, c), ScriptTransfer(cI, dm, I)], df)
496499 }
497500 }
498501 }
499502 }
500503 else throw("Strict value is not equal to itself.")
501504 }
502505
503506
504507
505508 @Callable(cX)
506509 func sellWlg (de) = {
507- let df = cF()
510+ let df = cE()
508511 if ((df == df))
509512 then if ((size(cX.payments) != 1))
510513 then throw("exactly 1 payment must be attached")
511514 else {
512515 let dg = cX.payments[0]
513516 let dr = dg.amount
514- let cJ = cX.caller
515- let Y = toString(cJ)
516- let dn = cG(Y)
517+ let cI = cX.caller
518+ let Y = toString(cI)
519+ let dn = cF(Y)
517520 if ((dr > dn))
518521 then throw((("You can spend max " + M(dn, 8)) + " WLGOLD"))
519522 else if (if (!(isDefined(dg.assetId)))
520523 then true
521524 else (value(dg.assetId) != I))
522525 then throw("WLGOLD payments only!")
523526 else {
524- let cK = bI("", [cD, cE, D, E, F], c, 0)
525- let di = cK[bx]
526- let ds = fraction(cK[by], 4, 5)
527+ let cJ = bH("", [cC, cD, D, E, F], c, 0)
528+ let di = cJ[bw]
529+ let ds = fraction(cJ[bx], 4, 5)
527530 let dh = fraction(dr, ds, j)
528531 if ((k > dh))
529532 then throw((("You can trade min " + M(k, 6)) + " USDT"))
530533 else if ((de > dh))
531534 then throw("Price changed during operation, please try again")
532535 else {
533536 let do = (dh / 4)
534- $Tuple2([Burn(I, dr), IntegerEntry(at, (di - dr)), IntegerEntry(ar(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cA))), do, c), ScriptTransfer(cJ, dh, c)], df)
537+ $Tuple2([Burn(I, dr), IntegerEntry(as, (di - dr)), IntegerEntry(aq(Y), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cz))), do, c), ScriptTransfer(cI, dh, c)], df)
535538 }
536539 }
537540 }
538541 else throw("Strict value is not equal to itself.")
539542 }
540543
541544
542545
543546 @Callable(cX)
544547 func claim () = {
545- let df = cF()
548+ let df = cE()
546549 if ((df == df))
547550 then if ((size(cX.payments) != 0))
548551 then throw("No payments required")
549552 else {
550- let dt = cI(toString(cX.caller))
553+ let dt = cH(toString(cX.caller))
551554 let du = dt._1
552555 $Tuple2((du :+ ScriptTransfer(cX.caller, dt._2, I)), df)
553556 }
554557 else throw("Strict value is not equal to itself.")
555558 }
556559
557560
558561
559562 @Callable(cX)
560563 func onStakeUnstakeLand (Y) = if (if (if ((cX.caller != C))
561564 then (cX.caller != G)
562565 else false)
563- then (cX.caller != cE)
566+ then (cX.caller != cD)
564567 else false)
565568 then throw("Permission denied")
566569 else {
567- let dv = cI(Y)
570+ let dv = cH(Y)
568571 let du = dv._1
569572 let dw = dv._2
570573 $Tuple2((du :+ ScriptTransfer(addressFromStringValue(Y), dw, I)), dw)
571574 }
572575
573576
574577
575578 @Callable(cX)
576-func burnWlgold () = if ((cX.caller != cE))
579+func burnWlgold () = if ((cX.caller != cD))
577580 then throw("Permission denied")
578581 else {
579582 let dr = cX.payments[0].amount
580- let cK = bI("", [cD, cE, D, E, F], c, 0)
581- let dx = (cK[bx] - dr)
582- $Tuple2([Burn(I, dr), IntegerEntry(at, dx)], dx)
583+ let cJ = bH("", [cC, cD, D, E, F], c, 0)
584+ let dx = (cJ[bw] - dr)
585+ $Tuple2([Burn(I, dr), IntegerEntry(as, dx)], dx)
583586 }
584587
585588
586589
587590 @Callable(cX)
588591 func takeWlgXp (Y) = if ((cX.caller != C))
589592 then throw("Permission denied")
590593 else {
591594 let dy = cR(Y, 0)
592595 let du = dy._1
593596 let ac = dy._2
594597 $Tuple2(du, ac)
595598 }
596599
597600
598601
599602 @Callable(cX)
600603 func checkWlgXpREADONLY (Y) = {
601604 let dz = cR(Y, 0)
602605 let dA = dz._1
603606 let dB = dz._2
604607 let af = (valueOrElse(getInteger(C, X(Y)), 0) + dB)
605608 let dC = ad(valueOrElse(getInteger(C, Z(Y)), 0), af)
606609 $Tuple2(nil, (dC :+ af))
607610 }
608611
609612

github/deemru/w8io/169f3d6 
193.96 ms