tx · 79UAJmSE16AwzUDMKAgbbQeBbg2pHW9yweFEzcvwCAWP

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02700000 Waves

2023.03.22 10:50 [2500953] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "79UAJmSE16AwzUDMKAgbbQeBbg2pHW9yweFEzcvwCAWP", "fee": 2700000, "feeAssetId": null, "timestamp": 1679471501402, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "BLTiaF5eMehTfG1LXvfM1vRN2sThRzDucSFePCHRUDDeJCGzzJebAvsWZwosJFtjrd1Wmfq7ix7Bhy62JigevTJ" ], "script": "base64:BgLFLggCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgASBQoDCAgEEgMKAQgSAwoBCBIAIgNTRVAiBlNDQUxFOCIFTVVMVDgiDlBPT0xXRUlHSFRNVUxUIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIgRzdHJmIgdhZGRyZXNzIgNrZXkiA2lveiIDaW9kIgpkZWZhdWx0VmFsIgNpb2YiA2FicyIDdmFsIgNhYWwiByRtYXRjaDAiCnZhbEFueUx5c3QiAmFpIgZ2YWxJbnQiG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcyIecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsIhZrZXlSZWZlcnJhbFByb2dyYW1OYW1lIhpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdCITcmVmZXJyYWxQcm9ncmFtTmFtZSIRa2V5RmFjdG9yeUFkZHJlc3MiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIhRJZHhGYWN0b3J5Q2ZnRGFvRGFwcCIaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAiGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwIhZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwIg1rZXlGYWN0b3J5Q2ZnIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiG2tleUZhY3RvcnlQb29sV2VpZ2h0SGlzdG9yeSILcG9vbEFkZHJlc3MiA251bSIYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsIgpyZWFkTHBMaXN0IhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50IiFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQiFWtleUVtaXNzaW9uU3RhcnRCbG9jayIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIg1rZXlOZXh0UGVyaW9kIh9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0Ig1JZHhDZmdBc3NldElkIhNJZHhDZmdNaW5Mb2NrQW1vdW50IhVJZHhDZmdNaW5Mb2NrRHVyYXRpb24iFUlkeENmZ01heExvY2tEdXJhdGlvbiISSWR4Q2ZnTWF0aENvbnRyYWN0IglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIMbWF0aENvbnRyYWN0Ig1mb3JtYXRDb25maWdTIgdhc3NldElkIg1taW5Mb2NrQW1vdW50Ig9taW5Mb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIMZm9ybWF0Q29uZmlnIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayIOSWR4TG9ja1VzZXJOdW0iDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIg1JZHhMb2NrUGFyYW1LIg1JZHhMb2NrUGFyYW1CIhNrZXlMb2NrUGFyYW1zUmVjb3JkIgt1c2VyQWRkcmVzcyIacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwiF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTIgd1c2VyTnVtIgZhbW91bnQiBXN0YXJ0IghkdXJhdGlvbiIGcGFyYW1LIgZwYXJhbUIiEGxhc3RVcGRUaW1lc3RhbXAiCWd3eEFtb3VudCIWZm9ybWF0TG9ja1BhcmFtc1JlY29yZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50IhZrZXlMb2NrUGFyYW1TdGFydEJsb2NrIhRrZXlMb2NrUGFyYW1EdXJhdGlvbiINa2V5TG9ja1BhcmFtSyINa2V5TG9ja1BhcmFtQiIVa2V5TG9ja1BhcmFtQnlQZXJpb2RLIgZwZXJpb2QiFWtleUxvY2tQYXJhbUJ5UGVyaW9kQiIXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQiIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIhJrZXlTdGF0c0xvY2tzQ291bnQiEmtleVN0YXRzVXNlcnNDb3VudCIga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiImtleVVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiCWxwQXNzZXRJZCIXa2V5VXNlck1heEJvb3N0SU5URUdSQUwiGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTCIha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsIhNrZXlVc2VyQm9vc3RDbGFpbWVkIhFrZXlUb3RhbENhY2hlZEd3eCIba2V5VG90YWxDYWNoZWRHd3hDb3JyZWN0aXZlIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCIRZ3d4UmV3YXJkQ29udHJhY3QiFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiEWdldFRvdGFsQ2FjaGVkR3d4Igdjb3JyZWN0IhFrZXlDdXJyZW50RXBvY2hVaSIOY3VycmVudEVwb2NoVWkiDmtleVRhcmdldEVwb2NoIhF0YXJnZXRFcG9jaE9wdGlvbiIRdG90YWxDYWNoZWRHd3hSYXciFWlzQ29ycmVjdGlvbkFjdGl2YXRlZCIKY29ycmVjdGl2ZSIMSGlzdG9yeUVudHJ5IgR0eXBlIgR1c2VyIglsb2NrU3RhcnQiAWsiAWIiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIgpTdGF0c0VudHJ5Ig50b3RhbExvY2tlZEluYyILZHVyYXRpb25JbmMiDGxvY2tDb3VudEluYyINdXNlcnNDb3VudEluYyIbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZIg1sb2Nrc0NvdW50S0VZIg11c2Vyc0NvdW50S0VZIg50b3RhbEFtb3VudEtFWSIYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIgpsb2Nrc0NvdW50Igp1c2Vyc0NvdW50Igt0b3RhbEFtb3VudCINY2FsY0d3eEFtb3VudCIEa1JhdyIEYlJhdyIBaCIFU0NBTEUiD0xvY2tQYXJhbXNFbnRyeSINdXNlckFtb3VudEtFWSINc3RhcnRCbG9ja0tFWSILZHVyYXRpb25LRVkiBGtLRVkiBGJLRVkiDGtCeVBlcmlvZEtFWSIMYkJ5UGVyaW9kS0VZIiJleHRyYWN0T3B0aW9uYWxQYXltZW50QW1vdW50T3JGYWlsIg9leHBlY3RlZEFzc2V0SWQiA3BtdCIZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodCIMdGFyZ2V0SGVpZ2h0IgVFTVBUWSISdXNlcjJOdW1NYXBwaW5nS0VZIg1nd3hBbW91bnRDYWxjIhRjYWxjQ3VycmVudEd3eEFtb3VudCIaZ2V0Vm90aW5nRW1pc3Npb25FcG9jaEluZm8iDSR0MDE0OTI4MTUyMTYiEmxhc3RGaW5hbGl6ZWRFcG9jaCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgVlcG9jaCIXY3VycmVudEVwb2NoU3RhcnRIZWlnaHQiB2tleVZvdGUiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIVa2V5Vm90aW5nUmVzdWx0U3Rha2VkIgxscEFzc2V0SWRTdHIiHWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIiVrZXlWb3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IhVrZXlWb3RlU3Rha2VkSW50ZWdyYWwiHWtleVZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IhVnZXRWb3RpbmdSZXN1bHRTdGFrZWQiDSR0MDE2OTAxMTY5ODEiF3ZvdGluZ1Jlc3VsdFN0YWtlZFN0YXJ0IhJ2b3RpbmdSZXN1bHRTdGFrZWQiIXJlZnJlc2hWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIPc3Rha2VkVm90ZURlbHRhIg0kdDAxNzUwMjE3NTgyIhV2b3RpbmdSZXN1bHRTdGFrZWROZXciHXZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsS2V5Ih52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFByZXYiH3ZvdGluZ1Jlc3VsdExhc3RVcGRhdGVIZWlnaHRLZXkiInZvdGluZ1Jlc3VsdFN0YWtlZExhc3RVcGRhdGVIZWlnaHQiHHZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsRGgiGnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIhlyZWZyZXNoVm90ZVN0YWtlZEludGVncmFsIg51c2VyQWRkcmVzc1N0ciIEZWRnZSINJHQwMTg3ODIxODg2MiIQaWR4QW1vdW50QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIgdwb29sQ2ZnIgFAIgh1c2VyVm90ZSIHYWN0aW9ucyINJHQwMTk0NjcxOTU4NiITdm90aW5nUmVzdWx0QWN0aW9ucyIOdXNlclZvdGVTdGFrZWQiGXVzZXJWb3RlU3Rha2VkSW50ZWdyYWxLZXkiGnVzZXJWb3RlU3Rha2VkSW50ZWdyYWxQcmV2IiF1c2VyVm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHRLZXkiHnVzZXJWb3RlU3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIYdXNlclZvdGVTdGFrZWRJbnRlZ3JhbERoIhZ1c2VyVm90ZVN0YWtlZEludGVncmFsIgt2b3RlQWN0aW9ucyIUaW50ZXJuYWxDbGFpbVd4Qm9vc3QiCHJlYWRPbmx5IhF1c2VyUmVjb3JkT3JFbXB0eSIPdXNlclJlY29yZEFycmF5Igp1c2VyTnVtU3RyIhxnd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0IghFTVBUWVNUUiINJHQwMjEwNjUyMTYzMyIOcG9vbEFkZHJlc3NTdHIiA3B3MSIDcHcwIgtwb29sV2VpZ2h0MCILcG9vbFdlaWdodDEiEnd4RW1pc3Npb25QZXJCbG9jayINZW1pc3Npb25TdGFydCILZW1pc3Npb25FbmQiAmRoIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiFWJvb3N0RW1pc3Npb25JbnRlZ3JhbCIZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbCIDdWRoIgZ1TGFzdEgiBHVkaDAiBHVkaDEiF3VzZXJNYXhCb29zdEludGVncmFsS0VZIhh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkiD3VzZXJNYXhCb29zdEludCIQdG90YWxNYXhCb29zdEludCIXdG90YWxDYWNoZWRHd3hDb3JyZWN0ZWQiC3VzZXJDdXJyR3d4IiF1c2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWxLRVkiHnVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbCIadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAiGnVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxIh5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAiHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMSIidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MCIidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MSIhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3IhN1c2VyQm9vc3RDbGFpbWVkS0VZIhB1c2VyQm9vc3RDbGFpbWVkIhJ1c2VyQm9vc3RBdmFpbGFibGUiCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIghjZmdBcnJheSIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciB2NvZWZmWDgiDmdXeEFtb3VudFN0YXJ0IhNnV3hQYXJhbXNSZXN1bHRMaXN0IgNhcnIiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDMwMDk4MzAxNjMiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDMwNjIxMzA2ODYiDWRlbHRhRHVyYXRpb24iCnVzZXJBbW91bnQiDGxvY2tEdXJhdGlvbiIHbG9ja0VuZCIRcmVtYWluaW5nRHVyYXRpb24iDXVzZXJBbW91bnROZXciD2xvY2tEdXJhdGlvbk5ldyIMbG9ja1N0YXJ0TmV3IgtjdXJyVXNlckd3eCIHZ3d4RGlmZiISdXNlck1heEJvb3N0SW50TmV3IhhyZW1haW5pbmdVc2VyTWF4Qm9vc3RJbnQiE3VzZXJNYXhCb29zdEludERpZmYiDSR0MDM1NjY3MzU3NjkiDSR0MDM1OTAxMzYwMDIiEHVzZXJSZWNvcmRPcHRpb24iEG1heERlbHRhRHVyYXRpb24iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5fQABYQICX18AAWIACAABYwCAwtcvAAFkBQFjAQFlAQFmCQC5CQIJAMwIAgIOYm9vc3RpbmcucmlkZToJAMwIAgUBZgUDbmlsAgEgAQFnAQFmCQACAQkBAWUBBQFmAQFoAgFpAWoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFpBQFqCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFqAg8gaXMgbm90IGRlZmluZWQBAWsCAWkBagkBC3ZhbHVlT3JFbHNlAgkAmggCBQFpBQFqAAABAWwDAWkBagFtCQELdmFsdWVPckVsc2UCCQCaCAIFAWkFAWoFAW0BAW4CAWkBagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAWkFAWoJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWoCDyBpcyBub3QgZGVmaW5lZAEBbwEBcAMJAGYCAAAFAXAJAQEtAQUBcAUBcAEBcQEBcAQBcgUBcAMJAAECBQFyAglMaXN0W0FueV0EAXMFAXIFAXMJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXQBAXAEAXIFAXADCQABAgUBcgIDSW50BAF1BQFyBQF1CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF2AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAF3CQERQGV4dHJOYXRpdmUoMTA2MikBCQEBaAIFBHRoaXMJAQF2AAABeAkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABeQIGd3hsb2NrAAF6CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAXgFAXkBAUEAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAFCAAEAAUMAAgABRAADAAFFAAQAAUYABQABRwAGAAFIAAcAAUkACAABSgAJAAFLAAoAAUwACwEBTQACESVzX19mYWN0b3J5Q29uZmlnAQFOAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVAAAhAlc19fbHBUb2tlbnNMaXN0AQFRAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVIBAVMJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBUwUDbmlsBQFhAQFUAgFVAVYJAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUBVQICX18JAKQDAQUBVgEBVwAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFoAgUEdGhpcwkBAUEAAQFYAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFXAAkBAVAAAgAFAWEBAVkBAVoJALUJAgkBAWgCBQFaCQEBTQAFAWEBAmFhAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBQwECYWMBAmFiCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFiBQFGAQJhZAECYWIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWIFAUIBAmFlAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBSwECYWYAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWcAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFoAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhaQACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYWoAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYWsAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BAmFsAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQJhbQACDiVzX19uZXh0UGVyaW9kAQJhbgACKCVzJXNfX2d3eFJld2FyZEVtaXNzaW9uUGFydF9fc3RhcnRIZWlnaHQAAmFvAAEAAmFwAAIAAmFxAAMAAmFyAAQAAmFzAAUBAmF0AAIKJXNfX2NvbmZpZwECYXUACQC1CQIJAQFoAgUEdGhpcwkBAmF0AAUBYQACYXYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgkBAmF1AAUCYXMBAmF3BQJheAJheQJhegJhQQJhdgkAuQkCCQDMCAICCCVzJWQlZCVkCQDMCAIFAmF4CQDMCAIFAmF5CQDMCAIFAmF6CQDMCAIFAmFBCQDMCAIFAmF2BQNuaWwFAWEBAmFCBQJheAJheQJhegJhQQJhdgkBAmF3BQUCYXgJAKQDAQUCYXkJAKQDAQUCYXoJAKQDAQUCYUEFAmF2AQJhQwAEAXIJAKIIAQkBAmFmAAMJAAECBQFyAgZTdHJpbmcEAmFEBQFyCQDZBAEFAmFEAwkAAQIFAXICBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUUABAFyCQCiCAEJAQJhZwADCQABAgUBcgIGU3RyaW5nBAJhRAUBcgkA2QQBBQJhRAMJAAECBQFyAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFGAQJhRwQCYUgJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQBcgkBAmFDAAMJAAECBQFyAgpCeXRlVmVjdG9yBAJhSQUBcgMJAAACCAUCYUcPY2FsbGVyUHVibGljS2V5BQJhSQYFAmFIAwkAAQIFAXICBFVuaXQDCQAAAggFAmFHBmNhbGxlcgUEdGhpcwYFAmFICQACAQILTWF0Y2ggZXJyb3IAAmFKAAEAAmFLAAIAAmFMAAMAAmFNAAQAAmFOAAUAAmFPAAYBAmFQAQJhUQkAuQkCCQDMCAICCiVzJXNfX2xvY2sJAMwIAgUCYVEFA25pbAUBYQECYVIBAmFRCQC1CQIJAQFoAgUEdGhpcwkBAmFQAQUCYVEFAWEBAmFTCAJhVAJhVQJhVgJhVwJhWAJhWQJhWgJiYQkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgUCYVQJAMwIAgUCYVUJAMwIAgUCYVYJAMwIAgUCYVcJAMwIAgUCYVgJAMwIAgUCYVkJAMwIAgUCYVoJAMwIAgUCYmEFA25pbAUBYQECYmIHAmFUAmFVAmFWAmFXAmFYAmFZAmJhCQECYVMIBQJhVAkApAMBBQJhVQkApAMBBQJhVgkApAMBBQJhVwkApAMBBQJhWAkApAMBBQJhWQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkApAMBBQJiYQECYmMAAg8lc19fbmV4dFVzZXJOdW0BAmJkAQJhUQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgUCYVEFA25pbAUBYQECYmUBAVYJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFAVYFA25pbAUBYQECYmYBAmFUCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVAkAzAgCAgZhbW91bnQFA25pbAUBYQECYmcBAmFUCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVAkAzAgCAgVzdGFydAUDbmlsBQFhAQJiaAECYVQJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFUCQDMCAICCGR1cmF0aW9uBQNuaWwFAWEBAmJpAQJhVAkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVQJAMwIAgIBawUDbmlsBQFhAQJiagECYVQJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFUCQDMCAICAWIFA25pbAUBYQECYmsCAmFUAmJsCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVQJAMwIAgIBawkAzAgCBQJibAUDbmlsBQFhAQJibQICYVQCYmwJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhVAkAzAgCAgFiCQDMCAIFAmJsBQNuaWwFAWEBAmJuAAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAQJibwACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBAmJwAAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBAmJxAAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAmJyAQJhVAkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQJhVAUDbmlsBQFhAQJicwICYVQCYnQJALkJAgkAzAgCAh4lcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnQJAMwIAgUCYVQJAMwIAgUCYnQFA25pbAUBYQECYnUBAmFUCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUCYVQFA25pbAUBYQECYnYAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBAmJ3AQJhVAkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQJhVAUDbmlsBQFhAQJieAECYVQJALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFAmFUBQNuaWwFAWEBAmJ5AAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAECYnoAAhwlc19fZ3d4Q2FjaGVkVG90YWxDb3JyZWN0aXZlAAJiQQkBAVcAAAJhYgkBAVkBBQJiQQACYkIJAQJhYwEFAmFiAAJiQwkBAmFkAQUCYWIAAmJECQECYWUBBQJhYgACYkUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWUBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBZQECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAAJiRgkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQACYkcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJBBQJiRgECYkgBAmJJBAJiSgkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEEAmJLCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiRwUCYkoEAmJMCQC5CQIJAMwIAgIEJXMlcwkAzAgCAil0b3RhbENhY2hlZEd3eENvcnJlY3Rpb25fX2FjdGl2YXRpb25FcG9jaAUDbmlsBQFhBAJiTQkAmggCBQR0aGlzBQJiTAQCYk4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJ5AAAABAJiTwMJAQlpc0RlZmluZWQBBQJiTQkAZwIFAmJLCQEFdmFsdWUBBQJiTQcEAmJQAwMFAmJPBQJiSQcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJ6AAAAAAAJAJYDAQkAzAgCAAAJAMwIAgkAZAIFAmJOBQJiUAUDbmlsAQJiUQgCYlICYlMCYVUCYlQCYVcCYlUCYlYCYUcEAmJXCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYlIJAMwIAgUCYlMJAMwIAgkA2AQBCAUCYUcNdHJhbnNhY3Rpb25JZAUDbmlsBQFhBAJiWAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmJVCQDMCAIJAKQDAQUCYlYFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCYlcFAmJYAQJiWQQCYloCY2ECY2ICY2MEAmNkCQECYm8ABAJjZQkBAmJwAAQCY2YJAQJicQAEAmNnCQECYm4ABAJjaAkBAWsCBQR0aGlzBQJjZAQCY2kJAQFrAgUEdGhpcwUCY2UEAmNqCQEBawIFBHRoaXMFAmNmBAJjawkBAWsCBQR0aGlzBQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2QJAGQCBQJjaAUCY2EJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNlCQBkAgUCY2kFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjZgkAZAIFAmNqBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2cJAGQCBQJjawUCYloFA25pbAECY2wDAmNtAmNuAmNvBAJjcADoBwkAaQIJAGQCCQBoAgUCY20FAmNvBQJjbgUCY3ABAmNxCAJhUQJhVAJhVQJhVgJhVwJiVQJiVgJibAQCY3IJAQJiZgEFAmFUBAJjcwkBAmJnAQUCYVQEAmN0CQECYmgBBQJhVAQCY3UJAQJiaQEFAmFUBAJjdgkBAmJqAQUCYVQEAmN3CQECYmsCBQJhVAUCYmwEAmN4CQECYm0CBQJhVAUCYmwEAmJhCQECY2wDBQJiVQUCYlYFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3IFAmFVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcwUCYVYJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN0BQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3UFAmJVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdgUCYlYJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN3BQJiVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3gFAmJWCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhUAEFAmFRCQECYmIHBQJhVAUCYVUFAmFWBQJhVwUCYlUFAmJWBQJiYQUDbmlsAQJjeQICYUcCY3oDCQBmAgkAkAMBCAUCYUcIcGF5bWVudHMAAQkAAgECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQJhRwhwYXltZW50cwAAAAAEAmNBCQCRAwIIBQJhRwhwYXltZW50cwAAAwkBAiE9AgkBBXZhbHVlAQgFAmNBB2Fzc2V0SWQFAmN6CQACAQIbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUCY0EGYW1vdW50AQJjQgICYVECY0MEAmNEAgVlbXB0eQQCY0UJAQJiZAEFAmFRBAJhVAkBC3ZhbHVlT3JFbHNlAgkAoggBBQJjRQUCY0QEAmJVCQELdmFsdWVPckVsc2UCCQCfCAEJAQJiaQEFAmFUAAAEAmJWCQELdmFsdWVPckVsc2UCCQCfCAEJAQJiagEFAmFUAAAEAmNGCQECY2wDBQJiVQUCYlYFAmNDBAJiYQMJAGYCAAAFAmNGAAAFAmNGBQJiYQECY0cBAmFRCQECY0ICBQJhUQUGaGVpZ2h0AQJjSAAEAmJKCQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQQCY0kEAmJLCQEFdmFsdWUBCQCaCAIFAmJHBQJiSgQCY0oJAGUCBQJiSwABAwkAZgIAAAUCY0oJAQFnAQINaW52YWxpZCBlcG9jaAkAlAoCBQJiSwUCY0oEAmJLCAUCY0kCXzEEAmNKCAUCY0kCXzIKAQJjSwECY0wJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUCY0wFA25pbAUBYQQCY00JAQV2YWx1ZQEJAJoIAgUCYkcJAQJjSwEFAmJLCQCUCgIFAmNKBQJjTQECY04EAmNPAmNQAWkCY0wJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUCY08JAMwIAgUCY1AJAMwIAgkApQgBBQFpCQDMCAIJAKQDAQUCY0wFA25pbAUBYQECY1ECAmNSAmNMCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEnZvdGluZ1Jlc3VsdFN0YWtlZAkAzAgCBQJjUgkAzAgCCQCkAwEFAmNMBQNuaWwFAWEBAmNTAgJjUgJjTAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhp2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbAkAzAgCBQJjUgkAzAgCCQCkAwEFAmNMBQNuaWwFAWEBAmNUAgJjUgJjTAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAip2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCY1IJAMwIAgkApAMBBQJjTAUDbmlsBQFhAQJjVQMCY1IBaQJjTAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICEnZvdGVTdGFrZWRJbnRlZ3JhbAkAzAgCBQJjUgkAzAgCCQClCAEFAWkJAMwIAgkApAMBBQJjTAUDbmlsBQFhAQJjVgMCY1IBaQJjTAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICInZvdGVTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCY1IJAMwIAgkApQgBBQFpCQDMCAIJAKQDAQUCY0wFA25pbAUBYQECY1cBAmNSBAJjWAkBAmNIAAQCY0oIBQJjWAJfMQQCY00IBQJjWAJfMgQCY1kJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkcJAQJjUQIFAmNSBQJjSgAABAJjWgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECY1ECBQJjUgUCY0oFAmNZBQJjWgECZGECAmNSAmRiBAJkYwkBAmNIAAQCY0oIBQJkYwJfMQQCY00IBQJkYwJfMgQCY1oJAQJjVwEFAmNSBAJkZAkAZAIFAmNaBQJkYgQCZGUJAQJjUwIFAmNSBQJjSgQCZGYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZGUAAAQCZGcJAQJjVAIFAmNSBQJjSgQCZGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZGcFAmNNBAJkaQkAZQIFBmhlaWdodAUCZGgEAmRqCQBkAgkAaAIFAmRpBQJjWgUCZGYJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmNRAgUCY1IFAmNKBQJkZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZGcFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZGUFAmRqBQNuaWwFAmRqAQJkawMCY1ICZGwCZG0EAmRuCQECY0gABAJjSggFAmRuAl8xBAJjTQgFAmRuAl8yBAJhUQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZGwEAmRvAAQEAmRwAAUEAmRxCgACZHIJAPwHBAUCYkECGGdldFBvb2xDb25maWdCeUxwQXNzZXRJZAkAzAgCBQJjUgUDbmlsBQNuaWwDCQABAgUCZHICCUxpc3RbQW55XQUCZHIJAAIBCQCsAgIJAAMBBQJkcgIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldBAJjTwoAAmRyCQCRAwIFAmRxBQJkbwMJAAECBQJkcgIGU3RyaW5nBQJkcgkAAgEJAKwCAgkAAwEFAmRyAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmNQCgACZHIJAJEDAgUCZHEFAmRwAwkAAQIFAmRyAgZTdHJpbmcFAmRyCQACAQkArAICCQADAQUCZHICGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkcJAQJjTgQFAmNPBQJjUAUCYVEFAmNKAAAEAmR0AwkAAAIFAmRzAAAFA25pbAQCZGIDBQJkbQUCZHMJAQEtAQUCZHMEAmR1CQECZGECBQJjUgUCZGIEAmR2CAUCZHUCXzEEAmRqCAUCZHUCXzIEAmR3AwUCZG0AAAUCZHMEAmR4CQECY1UDBQJjUgUCYVEFAmNKBAJkeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkeAAABAJkegkBAmNWAwUCY1IFAmFRBQJjSgQCZEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZHoFAmNNBAJkQgkAZQIFBmhlaWdodAUCZEEEAmRDCQBkAgkAaAIFAmRCBQJkdwUCZHkEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkegUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkeAUCZEMFA25pbAkAzggCBQJkdgUCZEQFAmR0AQJkRQMCY1ICZGwCZEYEAmNEAgVFTVBUWQQCZEcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFQAQUCZGwFAmNEAwkAAAIFAmRHBQJjRAkAlQoDAAAFA25pbAIVdXNlclJlY29yZDo6aXM6OmVtcHR5BAJkSAkAtQkCBQJkRwUBYQQCZEkJAJEDAgUCZEgFAmFKBAJkSgkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiRAkBAmFuAAAABAJkSwIFZW1wdHkEAmRMAwkBAiE9AgUCY1IFAmRLBAJkTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmJBCQEBTgEFAmNSCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCY1IEAmROCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiQQkBAVIBBQJkTQQCZE8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkEJAQFUAgUCZE0AAAUCZE4JAJQKAgUCZE8FAmROAwUCZEYJAJQKAgAAAAAJAAIBCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNSBAJkUAgFAmRMAl8xBAJkUQgFAmRMAl8yBAJkUgkBAW4CBQJiQgkBAmFoAAQCZFMJAQFuAgUCYkIJAQJhagAEAmRUCQEBbgIFAmJCCQECYWwABAJjbwMJAGYCBQZoZWlnaHQFAmRUBQJkVAUGaGVpZ2h0BAJkVQkAlgMBCQDMCAIJAGUCBQJjbwUCZFMJAMwIAgAABQNuaWwEAmRWCQECYnMCBQJkSQUCY1IEAmRXCQECYnIBBQJkSQQCZFgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZFYJAQFrAgUEdGhpcwUCZFcEAmRZCQBpAgkAaAIJAGgCBQJkUgUCZFUAAgADBAJkWgkAZQIFAmRZBQJkWAQCZWEJAGsDBQJkWgADCQBoAgACBQJkUgQCZWIJAGUCBQJjbwUCZWEEAmVjCQCWAwEJAMwIAgkAZQIFAmRKBQJlYgkAzAgCAAAFA25pbAQCZWQJAGUCCQBlAgUCY28FAmViBQJlYwMDAwkAZgIAAAUCZWIGCQBmAgAABQJlZAYJAGcCCQEBbwEJAGUCCQBkAgUCZWMFAmVkBQJlYQABCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFmludmFsaWQgdWRoIGNhbGM6IHVkaD0JAKQDAQUCZWECCCB1TGFzdEg9CQCkAwEFAmViAgYgdWRoMD0JAKQDAQUCZWMCBiB1ZGgxPQkApAMBBQJlZAILIGxwQXNzZXRJZD0FAmNSAg0gdXNlckFkZHJlc3M9BQJkbAMJAGYCAAAFAmRaCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBAJlZQkBAmJ1AQUCZEkEAmVmCQECYnYABAJlZwkBAWsCBQR0aGlzBQJlZQQCZWgJAQFrAgUEdGhpcwUCZWYEAmVpCQECYkgBBgQCZWoJAQJjRwEFAmRsBAJlawkBAmJ3AQUCZEkEAmVsCQEBawIFBHRoaXMFAmVrBAJlbQMJAAACBQJlYQAAAAAJAGsDBQJkWgUCZWMFAmVhBAJlbgMJAAACBQJlYQAAAAAJAGsDBQJkWgUCZWQFAmVhBAJlbwkAawMFAmVtBQJkUAUBZAQCZXAJAGsDBQJlbgUCZFEFAWQEAmVxAwkAAAIFAmVpAAAAAAkAawMFAmVvBQJlagUCZWkEAmVyAwkAAAIFAmVpAAAAAAkAawMFAmVwBQJlagUCZWkEAmVzCQBkAgUCZXEFAmVyBAJldAkBAmJ4AQUCZEkEAmV1CQEBawIFBHRoaXMFAmV0BAJldgkAZQIFAmVzBQJldQQCZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRWBQJkWQUDbmlsBAJleAkAuQkCCQDMCAIJAKQDAQUCZFgJAMwIAgkApAMBBQJkWgkAzAgCCQCkAwEFAmV1CQDMCAIJAKQDAQUCZXYJAMwIAgkApAMBBQJkUAkAzAgCCQCkAwEFAmRRCQDMCAIJAKQDAQUCY28JAMwIAgkApAMBBQJlYQkAzAgCCQCkAwEFAmViCQDMCAIJAKQDAQUCZWMJAMwIAgkApAMBBQJlZAkAzAgCCQCkAwEFAmVqCQDMCAIJAKQDAQUCZWkFA25pbAIBOgkAlQoDBQJlcwUCZXcFAmV4AQJleQICYUcCYVcEAmV6CQECYXUABAJlQQkAkQMCBQJlegUCYW8EAmF4CQDZBAEFAmVBBAJheQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV6BQJhcAQCYXoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlegUCYXEEAmFBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXoFAmFyAwkBAiE9AgkAkAMBCAUCYUcIcGF5bWVudHMAAQkAAgECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAmNBCQCRAwIIBQJhRwhwYXltZW50cwAABAJlQggFAmNBBmFtb3VudAMJAQIhPQIFAmF4CQEFdmFsdWUBCAUCY0EHYXNzZXRJZAkAAgEJAKwCAgkArAICAh5pbnZhbGlkIGFzc2V0IGlzIGluIHBheW1lbnQgLSAFAmVBAgwgaXMgZXhwZWN0ZWQEAmVDCQECYmMABAJkbAkApQgBCAUCYUcGY2FsbGVyBAJlRAkBCWlzRGVmaW5lZAEJAKIIAQkBAmJkAQUCZGwEAmRJAwUCZUQJAQV2YWx1ZQEJAKIIAQkBAmJkAQUCZGwJAKQDAQkBAW4CBQR0aGlzBQJlQwQCYVQJAQ1wYXJzZUludFZhbHVlAQUCZEkEAmJUBQZoZWlnaHQEAmNzCQECYmcBBQJkSQQCY3QJAQJiaAEFAmRJBAJjcgkBAmJmAQUCZEkDAwkAZgIFAmF5BQJlQgkBAiE9AggFAmFHBmNhbGxlcgUCYkUHCQACAQkArAICAiJhbW91bnQgaXMgbGVzcyB0aGVuIG1pbkxvY2tBbW91bnQ9CQCkAwEFAmF5AwkAZgIFAmF6BQJhVwkAAgEJAKwCAgItcGFzc2VkIGR1cmF0aW9uIGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmF6AwkAZgIFAmFXBQJhQQkAAgEJAKwCAgIwcGFzc2VkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFAmFBAwMFAmVECQBnAgkAZAIJAQFuAgUEdGhpcwUCY3MJAQFuAgUEdGhpcwUCY3QFAmJUBwkAAgECNnRoZXJlIGlzIGFuIGFjdGl2ZSBsb2NrIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jawMJAGYCCQEBawIFBHRoaXMFAmNyAAAJAAIBCQCsAgICNHRoZXJlIGFyZSBsb2NrZWQgV1hzIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jayAFAmNyBAJlRQkAawMFAmFXBQFjBQJhQQQCZUYJAGsDBQJlQgUCZUUFAWMEAmVHCQEBcQEJAPwHBAUCYXYCFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBQJlRgkAzAgCBQJiVAkAzAgCBQJhVwUDbmlsBQNuaWwEAmJVCQEBdAEJAJEDAgUCZUcAAAQCYlYJAQF0AQkAkQMCBQJlRwABBAJibAkApAMBCQEBdAEJAJEDAgUCZUcAAgQCZFIJAQFuAgUCYkIJAQJhaAAEAmRTCQEBbgIFAmJCCQECYWoABAJkVAkBAW4CBQJiQgkBAmFsAAQCY28DCQBmAgUGaGVpZ2h0BQJkVAUCZFQFBmhlaWdodAQCZFUJAJYDAQkAzAgCCQBlAgUCY28FAmRTCQDMCAIAAAUDbmlsBAJkVwkBAmJyAQUCZEkEAmRZCQBpAgkAaAIJAGgCBQJkUgUCZFUAAgADBAJlZQkBAmJ1AQUCZEkEAmVmCQECYnYABAJlZwkAaQIJAGgCBQJlRgUCYVcAAgQCZWgJAQFrAgUEdGhpcwUCZWYEAmJOCQECYkgBBwQCZUgDBQJlRAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJlQwkAZAIFAmFUAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJkAQUCZGwFAmRJCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQEFAmRJBQJkbAUDbmlsCQCUCgIJAM4IAgkAzQgCCQDOCAIJAM4IAgUCZUgJAQJjcQgFAmRsBQJkSQUCZUIFAmJUBQJhVwUCYlUFAmJWBQJibAkBAmJZBAUCZUIFAmFXAAEDBQJlRAAAAAEJAQJiUQgCBGxvY2sFAmRsBQJlQgUCYlQFAmFXBQJiVQUCYlYFAmFHCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkVwUCZFkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJieQAJAGQCBQJiTgUCZUYFA25pbAUCZUYPAmFHAQtjb25zdHJ1Y3RvcgYCZUkCZUoCYXkCZUsCZUwCYXYEAmVNCQECYUYBBQJhRwMJAAACBQJlTQUCZU0JAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJjAAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdAAJAQJhQgUFAmVKBQJheQUCZUsFAmVMBQJhdgkAzAgCCQELU3RyaW5nRW50cnkCCQEBQQAFAmVJBQNuaWwJAQJiWQQAAAAAAAAAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRwEHbG9ja1JlZgMCYVcCZU4CZU8EAmVQCQECZXkCBQJhRwUCYVcEAmVRCAUCZVACXzEEAmVGCAUCZVACXzIEAmVSCQClCAEIBQJhRwZjYWxsZXIEAmVTAwMJAAACBQJlTgIABgkAAAIFAmVPAQAFBHVuaXQJAPwHBAUBdwIKY3JlYXRlUGFpcgkAzAgCBQF6CQDMCAIFAmVOCQDMCAIFAmVSCQDMCAIFAmVPBQNuaWwFA25pbAMJAAACBQJlUwUCZVMEAmVUCQD8BwQFAmF2AhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFHBmNhbGxlcgkAzAgCBQJlRgUDbmlsBQNuaWwDCQAAAgUCZVQFAmVUCQCUCgIFAmVRBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFHAQRsb2NrAQJhVwQCZVUJAQJleQIFAmFHBQJhVwQCZVEIBQJlVQJfMQQCZUYIBQJlVQJfMgQCZVQJAPwHBAUCYXYCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYUcGY2FsbGVyCQDMCAIFAmVGBQNuaWwFA25pbAMJAAACBQJlVAUCZVQJAJQKAgUCZVEFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUcBDGluY3JlYXNlTG9jawECZVYEAmV6CQECYXUABAJlQQkAkQMCBQJlegUCYW8EAmF4CQDZBAEFAmVBBAJhegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV6BQJhcQQCYUEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlegUCYXIEAmVCCQECY3kCBQJhRwUCYXgEAmRsCQClCAEIBQJhRwZjYWxsZXIEAmRICQECYVIBBQJkbAQCZEkJAJEDAgUCZEgFAmFKBAJlVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRIBQJhSwQCYlQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkSAUCYUwEAmVYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEgFAmFNBAJlWQkAZAIFAmJUBQJlWAQCZVoJAJYDAQkAzAgCCQBlAgUCZVkFBmhlaWdodAkAzAgCAAAFA25pbAQCZmEJAGQCBQJlVwUCZUIEAmZiCQBkAgUCZVoFAmVWAwkAZgIAAAUCZVYJAAIBAhpkdXJhdGlvbiBpcyBsZXNzIHRoZW4gemVybwMJAGYCBQJhegUCZmIJAAIBCQCsAgICLWxvY2tEdXJhdGlvbk5ldyBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhegMJAGYCBQJmYgUCYUEJAAIBCQCsAgICRGRlbHRhRHVyYXRpb24gKyBleGlzdGVkTG9ja0R1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFAmFBBAJlRQkAawMFAmZiBQFjBQJhQQQCZUYJAGsDBQJmYQUCZUUFAWMEAmVUCQD8BwQFAmF2AhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFHBmNhbGxlcgkAzAgCBQJlRgUDbmlsBQNuaWwDCQAAAgUCZVQFAmVUBAJmYwUGaGVpZ2h0BAJlRwkBAXEBCQD8BwQFAmF2AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZUYJAMwIAgUCZmMJAMwIAgUCZmIFA25pbAUDbmlsBAJiVQkBAXQBCQCRAwIFAmVHAAAEAmJWCQEBdAEJAJEDAgUCZUcAAQQCYmwJAKQDAQkBAXQBCQCRAwIFAmVHAAIEAmRSCQEBbgIFAmJCCQECYWgABAJkUwkBAW4CBQJiQgkBAmFqAAQCZFQJAQFuAgUCYkIJAQJhbAAEAmNvAwkAZgIFBmhlaWdodAUCZFQFAmRUBQZoZWlnaHQEAmRVCQCWAwEJAMwIAgkAZQIFAmNvBQJkUwkAzAgCAAAFA25pbAQCZFcJAQJicgEFAmRJBAJkWAkBAWsCBQR0aGlzBQJkVwQCZFkJAGkCCQBoAgkAaAIFAmRSBQJkVQACAAMEAmRaCQBlAgUCZFkFAmRYAwkAZgIAAAUCZFoJAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmVlCQECYnUBBQJkSQQCZWYJAQJidgAEAmVnCQEBawIFBHRoaXMFAmVlBAJlaAkBAWsCBQR0aGlzBQJlZgQCZmQJAQJjRwEFAmRsBAJmZQkAZQIFAmVGBQJmZAMJAGYCAAAFAmZlCQACAQkArAICAhhnd3hEaWZmIGlzIGxlc3MgdGhlbiAwOiAJAKQDAQUCZmUEAmJOCQECYkgBBwQCZWkJAQJiSAEGBAJlawkBAmJ3AQUCZEkEAmVsCQEBawIFBHRoaXMFAmVrBAJlcwkAawMFAmRaBQJmZAUCZWkEAmZmCQBpAgkAaAIFAmVGBQJmYgACBAJmZwkAaQIJAGgCBQJmZAUCZVoAAgQCZmgJAGUCBQJmZgUCZmcJAM4IAgkAzQgCCQDOCAIJAQJjcQgFAmRsBQJkSQUCZmEFAmZjBQJmYgUCYlUFAmJWBQJibAkBAmJZBAUCZUIFAmVWAAAAAAkBAmJRCAIEbG9jawUCZGwFAmVCBQJiVAUCZmIFAmJVBQJiVgUCYUcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJieQAJAGQCBQJiTgUCZmUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRwEMY2xhaW1XeEJvb3N0AgJjUgJkbAMJAQIhPQIFAmJDCAUCYUcGY2FsbGVyCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJmaQkBAmRFAwUCY1IFAmRsBwQCZXYIBQJmaQJfMQQCZXcIBQJmaQJfMgQCZXgIBQJmaQJfMwkAlAoCBQJldwkAzAgCBQJldgUDbmlsAmFHARRjbGFpbVd4Qm9vc3RSRUFET05MWQICY1ICZGwEAmZqCQECZEUDBQJjUgUCZGwGBAJldggFAmZqAl8xBAJldwgFAmZqAl8yBAJleAgFAmZqAl8zCQCUCgIFA25pbAkAzAgCBQJldgkAzAgCBQJleAUDbmlsAmFHAQZ1bmxvY2sBAmFRBAJkSAkBAmFSAQUCYVEEAmRJCQCRAwIFAmRIBQJhSgQCZVcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkSAUCYUsEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEgFAmFMBAJlWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRIBQJhTQQCZVkJAGQCBQJiVAUCZVgEAmV6CQECYXUABAJheAkA2QQBCQCRAwIFAmV6BQJhbwMJAGcCBQJlWQUGaGVpZ2h0CQACAQkArAICCQCsAgICBXdhaXQgCQCkAwEFAmVZAgogdG8gdW5sb2NrAwkAZwIAAAUCZVcJAAIBAhFub3RoaW5nIHRvIHVubG9jawQCYmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYXYJAQJhbQAAAAkAzQgCCQDNCAIJAM4IAgkBAmNxCAUCYVEFAmRJAAAFAmJUBQJlWAAAAAAJAKQDAQUCYmwJAQJiWQQJAQEtAQUCZVcAAAAAAP///////////wEJAQJiUQgCBnVubG9jawUCYVEFAmVXBQJiVAUCZVgAAAAABQJhRwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVEFAmVXBQJheAJhRwETZ3d4VXNlckluZm9SRUFET05MWQECYVEEAmJhCQECY0cBBQJhUQkAlAoCBQNuaWwJAMwIAgUCYmEFA25pbAJhRwEXdXNlck1heER1cmF0aW9uUkVBRE9OTFkBAmRsBAJlegkBAmF1AAQCYUEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlegUCYXIEAmZrCQCdCAIFBHRoaXMJAQJhUAEFAmRsAwkAAAIFAmZrBQR1bml0CQCUCgIFA25pbAkAlAoCAgRsb2NrBQJhQQQCZEgJALUJAgkBBXZhbHVlAQUCZmsFAWEEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEgFAmFMBAJlWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRIBQJhTQQCZVkJAGQCBQJiVAUCZVgEAmVaCQCWAwEJAMwIAgkAZQIFAmVZBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZsCQBlAgUCYUEFAmVaCQCUCgIFA25pbAkAlAoCAgxpbmNyZWFzZUxvY2sFAmZsAmFHASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYVECY0MEAmJhCQECY0ICBQJhUQUCY0MJAJQKAgUDbmlsBQJiYQJhRwEZZ2V0VG90YWxDYWNoZWRHd3hSRUFET05MWQAJAJQKAgUDbmlsCQECYkgBBgJhRwESb25TdGFrZWRWb3RlVXBkYXRlAwJjUgJkbAJkbQQCZU0DCQAAAggFAmFHBmNhbGxlcgUCYkMGCQECYUYBBQJhRwMJAAACBQJlTQUCZU0EAmR0CQECZGsDBQJjUgUCZGwFAmRtCQCUCgIFAmR0BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFHAR1nZXRWb3RpbmdSZXN1bHRTdGFrZWRSRUFET05MWQECY1IJAJQKAgUDbmlsCQECY1cBBQJjUgJhRwEKc2V0TWFuYWdlcgECZm0EAmVNCQECYUYBBQJhRwMJAAACBQJlTQUCZU0EAmZuCQDZBAEFAmZtAwkAAAIFAmZuBQJmbgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcABQJmbQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFHAQ5jb25maXJtTWFuYWdlcgAEAmZvCQECYUUABAJmcAMJAQlpc0RlZmluZWQBBQJmbwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZnAFAmZwBAJmcQMJAAACCAUCYUcPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmbwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZnEFAmZxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAJANgEAQkBBXZhbHVlAQUCZm8JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFnAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmcgECZnMABAJmdAQBcgkBAmFDAAMJAAECBQFyAgpCeXRlVmVjdG9yBAJhSQUBcgUCYUkDCQABAgUBcgIEVW5pdAgFAmZyD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJmcglib2R5Qnl0ZXMJAJEDAggFAmZyBnByb29mcwAABQJmdE9BJr0=", "height": 2500953, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EXepq5tPQBPsLGktxabqgPovbZJs74uzHgp2aNk3eDX4 Next: EjMcEwbV6KQnUh51GZFKcve4nRYnFJEX68exTDFsZfxM Diff:
OldNewDifferences
144144 func aj () = "%s%s__emission__startBlock"
145145
146146
147-func ak () = "%s%s__boostingV2__startBlock"
147+func ak () = "%s%s__emission__duration"
148148
149149
150-func al () = "%s%s__boostingV2__integral"
150+func al () = "%s%s__emission__endBlock"
151151
152152
153-func am () = "%s%s__emission__duration"
153+func am () = "%s__nextPeriod"
154154
155155
156-func an () = "%s%s__emission__endBlock"
156+func an () = "%s%s__gwxRewardEmissionPart__startHeight"
157157
158158
159-func ao () = "%s__nextPeriod"
159+let ao = 1
160+
161+let ap = 2
162+
163+let aq = 3
164+
165+let ar = 4
166+
167+let as = 5
168+
169+func at () = "%s__config"
160170
161171
162-func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
172+func au () = split(h(this, at()), a)
163173
164174
165-let aq = 1
175+let av = addressFromStringValue(au()[as])
166176
167-let ar = 2
168-
169-let as = 3
170-
171-let at = 4
172-
173-let au = 5
174-
175-func av () = "%s__config"
177+func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
176178
177179
178-func aw () = split(h(this, av()), a)
180+func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
179181
180182
181-let ax = addressFromStringValue(aw()[au])
182-
183-func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184-
185-
186-func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187-
188-
189-func aE () = {
183+func aC () = {
190184 let r = getString(af())
191185 if ($isInstanceOf(r, "String"))
192186 then {
193- let aF = r
194- fromBase58String(aF)
187+ let aD = r
188+ fromBase58String(aD)
195189 }
196190 else if ($isInstanceOf(r, "Unit"))
197191 then unit
199193 }
200194
201195
202-func aG () = {
196+func aE () = {
203197 let r = getString(ag())
204198 if ($isInstanceOf(r, "String"))
205199 then {
206- let aF = r
207- fromBase58String(aF)
200+ let aD = r
201+ fromBase58String(aD)
208202 }
209203 else if ($isInstanceOf(r, "Unit"))
210204 then unit
212206 }
213207
214208
215-func aH (aI) = {
216- let aJ = throw("Permission denied")
217- let r = aE()
209+func aF (aG) = {
210+ let aH = throw("Permission denied")
211+ let r = aC()
218212 if ($isInstanceOf(r, "ByteVector"))
219213 then {
220- let aK = r
221- if ((aI.callerPublicKey == aK))
214+ let aI = r
215+ if ((aG.callerPublicKey == aI))
222216 then true
223- else aJ
217+ else aH
224218 }
225219 else if ($isInstanceOf(r, "Unit"))
226- then if ((aI.caller == this))
220+ then if ((aG.caller == this))
227221 then true
228- else aJ
222+ else aH
229223 else throw("Match error")
230224 }
231225
232226
233-let aL = 1
227+let aJ = 1
234228
235-let aM = 2
229+let aK = 2
236230
237-let aN = 3
231+let aL = 3
238232
239-let aO = 4
233+let aM = 4
240234
241-let aP = 5
235+let aN = 5
242236
243-let aQ = 6
237+let aO = 6
244238
245-func aR (aS) = makeString(["%s%s__lock", aS], a)
239+func aP (aQ) = makeString(["%s%s__lock", aQ], a)
246240
247241
248-func aT (aS) = split(h(this, aR(aS)), a)
242+func aR (aQ) = split(h(this, aP(aQ)), a)
249243
250244
251-func aU (aV,aW,aX,aY,aZ,ba,bb,bc) = makeString(["%d%d%d%d%d%d%d%d", aV, aW, aX, aY, aZ, ba, bb, bc], a)
245+func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
252246
253247
254-func bd (aV,aW,aX,aY,aZ,ba,bc) = aU(aV, toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(lastBlock.timestamp), toString(bc))
248+func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
255249
256250
257-func be () = "%s__nextUserNum"
251+func bc () = "%s__nextUserNum"
258252
259253
260-func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
254+func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
261255
262256
263-func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
257+func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
264258
265259
266-func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
260+func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
267261
268262
269-func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
263+func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
270264
271265
272-func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
266+func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
273267
274268
275-func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
269+func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
276270
277271
278-func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
272+func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
279273
280274
281-func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
275+func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
282276
283277
284-func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
278+func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
285279
286280
287-func bp () = "%s%s__stats__activeTotalLocked"
281+func bn () = "%s%s__stats__activeTotalLocked"
288282
289283
290-func bq () = "%s%s__stats__locksDurationSumInBlocks"
284+func bo () = "%s%s__stats__locksDurationSumInBlocks"
291285
292286
293-func br () = "%s%s__stats__locksCount"
287+func bp () = "%s%s__stats__locksCount"
294288
295289
296-func bs () = "%s%s__stats__activeUsersCount"
290+func bq () = "%s%s__stats__activeUsersCount"
297291
298292
299-func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
293+func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
300294
301295
302-func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
296+func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
303297
304298
305-func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
299+func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
306300
307301
308-func bx () = "%s%s__maxBoostInt__total"
302+func bv () = "%s%s__maxBoostInt__total"
309303
310304
311-func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
305+func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
312306
313307
314-func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
308+func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
315309
316310
317-func bA () = "%s%s__gwxCached__total"
311+func by () = "%s%s__gwxCached__total"
318312
319313
320-func bB () = "%s__gwxCachedTotalCorrective"
314+func bz () = "%s__gwxCachedTotalCorrective"
321315
322316
323-func bC (bD,bE,i,bF) = makeString(["%s%s%s%s%d", "vote", bD, bE, toString(i), toString(bF)], a)
317+let bA = W()
324318
319+let ab = Y(bA)
325320
326-func bG (bF) = makeString(["%s%d", "startHeight", toString(bF)], a)
321+let bB = ac(ab)
327322
323+let bC = ad(ab)
328324
329-func bH () = makeString(["%s", "currentEpochUi"], a)
325+let bD = ae(ab)
330326
327+let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
331328
332-func bI (bJ,bF) = makeString(["%s%s%d", "votingResultStaked", bJ, toString(bF)], a)
329+let bF = makeString(["%s", "votingEmissionContract"], a)
333330
331+let bG = addressFromStringValue(getStringValue(bA, bF))
334332
335-func bK (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegral", bJ, toString(bF)], a)
336-
337-
338-func bL (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bJ, toString(bF)], a)
339-
340-
341-func bM (bJ,i,bF) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bJ, toString(i), toString(bF)], a)
342-
343-
344-func bN (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegral", bJ, toString(i), toString(bF)], a)
345-
346-
347-func bO (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bJ, toString(i), toString(bF)], a)
348-
349-
350-func bP (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bJ, toString(i), toString(bF)], a)
351-
352-
353-func bQ (bR,bJ) = makeString(["%s%s%s", "staked", bR, bJ], a)
354-
355-
356-let bS = W()
357-
358-let ab = Y(bS)
359-
360-let bT = ac(ab)
361-
362-let bU = ad(ab)
363-
364-let bV = ae(ab)
365-
366-let bW = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
367-
368-let bX = makeString(["%s", "votingEmissionContract"], a)
369-
370-let bY = addressFromStringValue(getStringValue(bS, bX))
371-
372-let bZ = {
373- let ca = invoke(bT, "getBoostCoeffREADONLY", nil, nil)
374- if ($isInstanceOf(ca, "Int"))
375- then ca
376- else throw(($getType(ca) + " couldn't be cast to Int"))
377- }
378-
379-func cb (cc) = {
380- let cd = getIntegerValue(bY, bH())
381- let ce = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
382- let cf = getInteger(this, ce)
383- let cg = valueOrElse(getInteger(this, bA()), 0)
384- let ch = if (isDefined(cf))
385- then (cd >= value(cf))
333+func bH (bI) = {
334+ let bJ = makeString(["%s", "currentEpochUi"], a)
335+ let bK = getIntegerValue(bG, bJ)
336+ let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
337+ let bM = getInteger(this, bL)
338+ let bN = valueOrElse(getInteger(this, by()), 0)
339+ let bO = if (isDefined(bM))
340+ then (bK >= value(bM))
386341 else false
387- let ci = if (if (ch)
388- then cc
342+ let bP = if (if (bO)
343+ then bI
389344 else false)
390- then valueOrElse(getInteger(this, bB()), 0)
345+ then valueOrElse(getInteger(this, bz()), 0)
391346 else 0
392- max([0, (cg + ci)])
347+ max([0, (bN + bP)])
393348 }
394349
395350
396-func cj (ck,cl,aW,cm,aY,cn,co,aI) = {
397- let cp = makeString(["%s%s%s%s__history", ck, cl, toBase58String(aI.transactionId)], a)
398- let cq = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(cm), toString(aY), toString(cn), toString(co)], a)
399- StringEntry(cp, cq)
351+func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
352+ let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
353+ let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
354+ StringEntry(bW, bX)
400355 }
401356
402357
403-func cr (cs,ct,cu,cv) = {
404- let cw = bq()
405- let cx = br()
406- let cy = bs()
407- let cz = bp()
408- let cA = k(this, cw)
409- let cB = k(this, cx)
410- let cC = k(this, cy)
411- let cD = k(this, cz)
412-[IntegerEntry(cw, (cA + ct)), IntegerEntry(cx, (cB + cu)), IntegerEntry(cy, (cC + cv)), IntegerEntry(cz, (cD + cs))]
358+func bY (bZ,ca,cb,cc) = {
359+ let cd = bo()
360+ let ce = bp()
361+ let cf = bq()
362+ let cg = bn()
363+ let ch = k(this, cd)
364+ let ci = k(this, ce)
365+ let cj = k(this, cf)
366+ let ck = k(this, cg)
367+[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
413368 }
414369
415370
416-func cE (cF,cG,cH) = {
417- let cI = 1000
418- (((cF * cH) + cG) / cI)
371+func cl (cm,cn,co) = {
372+ let cp = 1000
373+ (((cm * co) + cn) / cp)
419374 }
420375
421376
422-func cJ (aS,aV,aW,aX,aY,cn,co,bn) = {
423- let cK = bh(aV)
424- let cL = bi(aV)
425- let cM = bj(aV)
426- let cN = bk(aV)
427- let cO = bl(aV)
428- let cP = bm(aV, bn)
429- let cQ = bo(aV, bn)
430- let bc = cE(cn, co, height)
431-[IntegerEntry(cK, aW), IntegerEntry(cL, aX), IntegerEntry(cM, aY), IntegerEntry(cN, cn), IntegerEntry(cO, co), IntegerEntry(cP, cn), IntegerEntry(cQ, co), StringEntry(aR(aS), bd(aV, aW, aX, aY, cn, co, bc))]
377+func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
378+ let cr = bf(aT)
379+ let cs = bg(aT)
380+ let ct = bh(aT)
381+ let cu = bi(aT)
382+ let cv = bj(aT)
383+ let cw = bk(aT, bl)
384+ let cx = bm(aT, bl)
385+ let ba = cl(bU, bV, height)
386+[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
432387 }
433388
434389
435-func cR (aI,cS) = if ((size(aI.payments) > 1))
390+func cy (aG,cz) = if ((size(aG.payments) > 1))
436391 then throw("only one payment is allowed")
437- else if ((size(aI.payments) == 0))
392+ else if ((size(aG.payments) == 0))
438393 then 0
439394 else {
440- let cT = aI.payments[0]
441- if ((value(cT.assetId) != cS))
395+ let cA = aG.payments[0]
396+ if ((value(cA.assetId) != cz))
442397 then throw("invalid asset id in payment")
443- else cT.amount
398+ else cA.amount
444399 }
445400
446401
447-func cU (aS,cV) = {
448- let cW = "empty"
449- let cX = bf(aS)
450- let aV = valueOrElse(getString(cX), cW)
451- let cn = valueOrElse(getInteger(bk(aV)), 0)
452- let co = valueOrElse(getInteger(bl(aV)), 0)
453- let cY = cE(cn, co, cV)
454- let bc = if ((0 > cY))
402+func cB (aQ,cC) = {
403+ let cD = "empty"
404+ let cE = bd(aQ)
405+ let aT = valueOrElse(getString(cE), cD)
406+ let bU = valueOrElse(getInteger(bi(aT)), 0)
407+ let bV = valueOrElse(getInteger(bj(aT)), 0)
408+ let cF = cl(bU, bV, cC)
409+ let ba = if ((0 > cF))
455410 then 0
456- else cY
457- bc
411+ else cF
412+ ba
458413 }
459414
460415
461-func cZ (aS) = cU(aS, height)
416+func cG (aQ) = cB(aQ, height)
462417
463418
464-func da () = {
465- let db = {
466- let cd = value(getInteger(bY, bH()))
467- let dc = (cd - 1)
468- if ((0 > dc))
419+func cH () = {
420+ let bJ = makeString(["%s", "currentEpochUi"], a)
421+ let cI = {
422+ let bK = value(getInteger(bG, bJ))
423+ let cJ = (bK - 1)
424+ if ((0 > cJ))
469425 then g("invalid epoch")
470- else $Tuple2(cd, dc)
426+ else $Tuple2(bK, cJ)
471427 }
472- let cd = db._1
473- let dc = db._2
474- let dd = value(getInteger(bY, bG(cd)))
475- $Tuple2(dc, dd)
428+ let bK = cI._1
429+ let cJ = cI._2
430+ func cK (cL) = makeString(["%s%d", "startHeight", toString(cL)], a)
431+
432+ let cM = value(getInteger(bG, cK(bK)))
433+ $Tuple2(cJ, cM)
476434 }
477435
478436
479-func de (bJ) = {
480- let df = 4
481- let dg = 5
482- let dh = {
483- let ca = invoke(bS, "getPoolConfigByLpAssetIdREADONLY", [bJ], nil)
484- if ($isInstanceOf(ca, "List[Any]"))
485- then ca
486- else throw(($getType(ca) + " couldn't be cast to List[Any]"))
487- }
488- let bD = {
489- let ca = dh[df]
490- if ($isInstanceOf(ca, "String"))
491- then ca
492- else throw(($getType(ca) + " couldn't be cast to String"))
493- }
494- let bE = {
495- let ca = dh[dg]
496- if ($isInstanceOf(ca, "String"))
497- then ca
498- else throw(($getType(ca) + " couldn't be cast to String"))
499- }
500- $Tuple2(bD, bE)
437+func cN (cO,cP,i,cL) = makeString(["%s%s%s%s%d", "vote", cO, cP, toString(i), toString(cL)], a)
438+
439+
440+func cQ (cR,cL) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cL)], a)
441+
442+
443+func cS (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cL)], a)
444+
445+
446+func cT (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cL)], a)
447+
448+
449+func cU (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cL)], a)
450+
451+
452+func cV (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cL)], a)
453+
454+
455+func cW (cR) = {
456+ let cX = cH()
457+ let cJ = cX._1
458+ let cM = cX._2
459+ let cY = valueOrElse(getInteger(bG, cQ(cR, cJ)), 0)
460+ let cZ = valueOrElse(getInteger(this, cQ(cR, cJ)), cY)
461+ cZ
501462 }
502463
503464
504-func di (bJ,bR) = {
505- let aS = addressFromStringValue(bR)
506- let dj = da()
507- let dc = dj._1
508- let dd = dj._2
509- let dk = de(bJ)
510- let bD = dk._1
511- let bE = dk._2
512- let dl = bC(bD, bE, aS, dc)
513- let dm = valueOrElse(getInteger(bY, dl), 0)
514- dm
465+func da (cR,db) = {
466+ let dc = cH()
467+ let cJ = dc._1
468+ let cM = dc._2
469+ let cZ = cW(cR)
470+ let dd = (cZ + db)
471+ let de = cS(cR, cJ)
472+ let df = valueOrElse(getInteger(this, de), 0)
473+ let dg = cT(cR, cJ)
474+ let dh = valueOrElse(getInteger(this, dg), cM)
475+ let di = (height - dh)
476+ let dj = ((di * cZ) + df)
477+ $Tuple2([IntegerEntry(cQ(cR, cJ), dd), IntegerEntry(dg, height), IntegerEntry(de, dj)], dj)
515478 }
516479
517480
518-func dn (bJ,bR) = {
519- let do = valueOrElse(getInteger(bU, bQ(bR, bJ)), 0)
520- let dm = di(bJ, bR)
521- if ((do == 0))
522- then 0
523- else dm
481+func dk (cR,dl,dm) = {
482+ let dn = cH()
483+ let cJ = dn._1
484+ let cM = dn._2
485+ let aQ = addressFromStringValue(dl)
486+ let do = 4
487+ let dp = 5
488+ let dq = {
489+ let dr = invoke(bA, "getPoolConfigByLpAssetId", [cR], nil)
490+ if ($isInstanceOf(dr, "List[Any]"))
491+ then dr
492+ else throw(($getType(dr) + " couldn't be cast to List[Any]"))
493+ }
494+ let cO = {
495+ let dr = dq[do]
496+ if ($isInstanceOf(dr, "String"))
497+ then dr
498+ else throw(($getType(dr) + " couldn't be cast to String"))
499+ }
500+ let cP = {
501+ let dr = dq[dp]
502+ if ($isInstanceOf(dr, "String"))
503+ then dr
504+ else throw(($getType(dr) + " couldn't be cast to String"))
505+ }
506+ let ds = valueOrElse(getInteger(bG, cN(cO, cP, aQ, cJ)), 0)
507+ let dt = if ((ds == 0))
508+ then nil
509+ else {
510+ let db = if (dm)
511+ then ds
512+ else -(ds)
513+ let du = da(cR, db)
514+ let dv = du._1
515+ let dj = du._2
516+ let dw = if (dm)
517+ then 0
518+ else ds
519+ let dx = cU(cR, aQ, cJ)
520+ let dy = valueOrElse(getInteger(this, dx), 0)
521+ let dz = cV(cR, aQ, cJ)
522+ let dA = valueOrElse(getInteger(this, dz), cM)
523+ let dB = (height - dA)
524+ let dC = ((dB * dw) + dy)
525+ let dD = [IntegerEntry(dz, height), IntegerEntry(dx, dC)]
526+ (dv ++ dD)
527+ }
528+ dt
524529 }
525530
526531
527-func dp (bJ) = {
528- let dq = da()
529- let dc = dq._1
530- let dd = dq._2
531- let dr = valueOrElse(getInteger(bY, bI(bJ, dc)), 0)
532- let ds = valueOrElse(getInteger(this, bI(bJ, dc)), dr)
533- ds
534- }
535-
536-
537-func dt (bJ) = {
538- let du = da()
539- let dc = du._1
540- let dd = du._2
541- let ds = dp(bJ)
542- let dv = valueOrElse(getInteger(this, bK(bJ, dc)), 0)
543- let dw = valueOrElse(getInteger(this, bL(bJ, dc)), dd)
544- let dx = (height - dw)
545- let dy = ((dx * ds) + dv)
546- dy
547- }
548-
549-
550-func dz (bJ,dA) = {
551- let dB = da()
552- let dc = dB._1
553- let dd = dB._2
554- let ds = dp(bJ)
555- let dC = (ds + dA)
556- let dy = dt(bJ)
557-[IntegerEntry(bI(bJ, dc), dC), IntegerEntry(bL(bJ, dc), height), IntegerEntry(bK(bJ, dc), dy)]
558- }
559-
560-
561-func dD (bJ,bR) = {
562- let dE = da()
563- let dc = dE._1
564- let dd = dE._2
565- let aS = addressFromStringValue(bR)
566- let dF = dn(bJ, bR)
567- let dG = valueOrElse(getInteger(this, bN(bJ, aS, dc)), 0)
568- let dH = valueOrElse(getInteger(this, bO(bJ, aS, dc)), dd)
569- let dI = (height - dH)
570- let dJ = ((dI * dF) + dG)
571- dJ
572- }
573-
574-
575-func dK (bJ,bR,dL) = {
576- let dM = da()
577- let dc = dM._1
578- let dd = dM._2
579- let aS = addressFromStringValue(bR)
580- let dN = di(bJ, bR)
581- let dO = if ((dN == 0))
582- then nil
583- else {
584- let dA = if (dL)
585- then dN
586- else -(dN)
587- let dP = dz(bJ, dA)
588- let dJ = dD(bJ, bR)
589- let dQ = [IntegerEntry(bO(bJ, aS, dc), height), IntegerEntry(bN(bJ, aS, dc), dJ)]
590- (dP ++ dQ)
591- }
592- dO
593- }
594-
595-
596-func dR (bJ,bR) = {
597- let dS = da()
598- let dc = dS._1
599- let dd = dS._2
600- let aS = addressFromStringValue(bR)
601- let dT = bP(bJ, aS, dc)
602- let dU = valueOrElse(getInteger(this, dT), 0)
603- let dV = bM(bJ, aS, dc)
604- let dW = valueOrElse(getInteger(this, dV), 0)
605- let dJ = dD(bJ, bR)
606- let dy = dt(bJ)
607- let dX = (dJ - dU)
608- let dY = (dy - dW)
609- $Tuple3([IntegerEntry(dT, dJ), IntegerEntry(dV, dy)], dX, dY)
610- }
611-
612-
613-func dZ () = {
614- let ea = n(bT, ah())
615- let eb = getInteger(bT, ak())
616- let ec = getInteger(this, al())
617- let ed = n(bT, an())
618- let cH = if ((height > ed))
619- then ed
620- else height
621- let ee = {
622- let r = eb
623- if ($isInstanceOf(r, "Int"))
624- then {
625- let ef = r
626- max([(cH - ef), 0])
627- }
628- else if ($isInstanceOf(r, "Unit"))
629- then 0
630- else throw("Match error")
631- }
632- let eg = ((ea * (bZ - 1)) / bZ)
633- let eh = valueOrElse(ec, 0)
634- let ei = ((eg * ee) + eh)
635- $Tuple2([IntegerEntry(al(), ei), IntegerEntry(ak(), height)], ei)
636- }
637-
638-
639-func ej (bJ,bR,ek) = {
640- let el = getString(this, aR(bR))
641- if ((el == unit))
532+func dE (cR,dl,dF) = {
533+ let cD = "EMPTY"
534+ let dG = valueOrElse(getString(this, aP(dl)), cD)
535+ if ((dG == cD))
642536 then $Tuple3(0, nil, "userRecord::is::empty")
643537 else {
644- let em = split(value(el), a)
645- let en = em[aL]
646- let eo = "empty"
647- let ep = if ((bJ != eo))
538+ let dH = split(dG, a)
539+ let dI = dH[aJ]
540+ let dJ = valueOrElse(getInteger(bD, an()), 0)
541+ let dK = "empty"
542+ let dL = if ((cR != dK))
648543 then {
649- let eq = valueOrErrorMessage(getString(bS, N(bJ)), ("unsupported lp asset " + bJ))
650- getIntegerValue(bS, R(eq))
544+ let dM = valueOrErrorMessage(getString(bA, N(cR)), ("unsupported lp asset " + cR))
545+ let dN = getIntegerValue(bA, R(dM))
546+ let dO = valueOrElse(getInteger(bA, T(dM, 0)), dN)
547+ $Tuple2(dO, dN)
651548 }
652- else if (ek)
653- then 0
654- else throw(("not readonly mode: unsupported lp asset " + bJ))
655- let er = bu(en, bJ)
656- let es = bt(en)
657- let et = valueOrElse(getInteger(this, er), k(this, es))
658- let ei = dZ()._2
659- let eu = (ei - et)
660- if ((0 > eu))
661- then throw("wrong calculations")
662- else {
663- let ev = dR(bJ, bR)
664- let ew = ev._1
665- let ex = ev._2
666- let ey = ev._3
667- let ez = fraction(eu, ep, d)
668- let eA = if ((ey == 0))
669- then 0
670- else fraction(ez, ex, ey)
671- let eB = ([IntegerEntry(er, ei)] ++ ew)
672- let eC = makeString([toString(et), toString(eu), toString(ep), toString(ex), toString(ey)], ":")
673- $Tuple3(eA, eB, eC)
674- }
549+ else if (dF)
550+ then $Tuple2(0, 0)
551+ else throw(("not readonly mode: unsupported lp asset " + cR))
552+ let dP = dL._1
553+ let dQ = dL._2
554+ let dR = n(bB, ah())
555+ let dS = n(bB, aj())
556+ let dT = n(bB, al())
557+ let co = if ((height > dT))
558+ then dT
559+ else height
560+ let dU = max([(co - dS), 0])
561+ let dV = bs(dI, cR)
562+ let dW = br(dI)
563+ let dX = valueOrElse(getInteger(this, dV), k(this, dW))
564+ let dY = (((dR * dU) * 2) / 3)
565+ let dZ = (dY - dX)
566+ let ea = fraction(dZ, 3, (2 * dR))
567+ let eb = (co - ea)
568+ let ec = max([(dJ - eb), 0])
569+ let ed = ((co - eb) - ec)
570+ if (if (if ((0 > eb))
571+ then true
572+ else (0 > ed))
573+ then true
574+ else (o(((ec + ed) - ea)) >= 1))
575+ then throw(((((((((((("invalid udh calc: udh=" + toString(ea)) + " uLastH=") + toString(eb)) + " udh0=") + toString(ec)) + " udh1=") + toString(ed)) + " lpAssetId=") + cR) + " userAddress=") + dl))
576+ else if ((0 > dZ))
577+ then throw("wrong calculations")
578+ else {
579+ let ee = bu(dI)
580+ let ef = bv()
581+ let eg = k(this, ee)
582+ let eh = k(this, ef)
583+ let ei = bH(true)
584+ let ej = cG(dl)
585+ let ek = bw(dI)
586+ let el = k(this, ek)
587+ let em = if ((ea == 0))
588+ then 0
589+ else fraction(dZ, ec, ea)
590+ let en = if ((ea == 0))
591+ then 0
592+ else fraction(dZ, ed, ea)
593+ let eo = fraction(em, dP, d)
594+ let ep = fraction(en, dQ, d)
595+ let eq = if ((ei == 0))
596+ then 0
597+ else fraction(eo, ej, ei)
598+ let er = if ((ei == 0))
599+ then 0
600+ else fraction(ep, ej, ei)
601+ let es = (eq + er)
602+ let et = bx(dI)
603+ let eu = k(this, et)
604+ let ev = (es - eu)
605+ let ew = [IntegerEntry(dV, dY)]
606+ let ex = makeString([toString(dX), toString(dZ), toString(eu), toString(ev), toString(dP), toString(dQ), toString(co), toString(ea), toString(eb), toString(ec), toString(ed), toString(ej), toString(ei)], ":")
607+ $Tuple3(es, ew, ex)
608+ }
675609 }
676610 }
677611
678612
679-func eD (aI,aY) = {
680- let eE = aw()
681- let eF = eE[aq]
682- let az = fromBase58String(eF)
683- let aA = parseIntValue(eE[ar])
684- let aB = parseIntValue(eE[as])
685- let aC = parseIntValue(eE[at])
686- if ((size(aI.payments) != 1))
613+func ey (aG,aW) = {
614+ let ez = au()
615+ let eA = ez[ao]
616+ let ax = fromBase58String(eA)
617+ let ay = parseIntValue(ez[ap])
618+ let az = parseIntValue(ez[aq])
619+ let aA = parseIntValue(ez[ar])
620+ if ((size(aG.payments) != 1))
687621 then throw("invalid payment - exact one payment must be attached")
688622 else {
689- let cT = aI.payments[0]
690- let eG = cT.amount
691- if ((az != value(cT.assetId)))
692- then throw((("invalid asset is in payment - " + eF) + " is expected"))
623+ let cA = aG.payments[0]
624+ let eB = cA.amount
625+ if ((ax != value(cA.assetId)))
626+ then throw((("invalid asset is in payment - " + eA) + " is expected"))
693627 else {
694- let eH = be()
695- let bR = toString(aI.caller)
696- let eI = isDefined(getString(bf(bR)))
697- let en = if (eI)
698- then value(getString(bf(bR)))
699- else toString(n(this, eH))
700- let aV = parseIntValue(en)
701- let cm = height
702- let cL = bi(en)
703- let cM = bj(en)
704- let cK = bh(en)
705- if (if ((aA > eG))
706- then (aI.caller != bW)
628+ let eC = bc()
629+ let dl = toString(aG.caller)
630+ let eD = isDefined(getString(bd(dl)))
631+ let dI = if (eD)
632+ then value(getString(bd(dl)))
633+ else toString(n(this, eC))
634+ let aT = parseIntValue(dI)
635+ let bT = height
636+ let cs = bg(dI)
637+ let ct = bh(dI)
638+ let cr = bf(dI)
639+ if (if ((ay > eB))
640+ then (aG.caller != bE)
707641 else false)
708- then throw(("amount is less then minLockAmount=" + toString(aA)))
709- else if ((aB > aY))
710- then throw(("passed duration is less then minLockDuration=" + toString(aB)))
711- else if ((aY > aC))
712- then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
713- else if (if (eI)
714- then ((n(this, cL) + n(this, cM)) >= cm)
642+ then throw(("amount is less then minLockAmount=" + toString(ay)))
643+ else if ((az > aW))
644+ then throw(("passed duration is less then minLockDuration=" + toString(az)))
645+ else if ((aW > aA))
646+ then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
647+ else if (if (eD)
648+ then ((n(this, cs) + n(this, ct)) >= bT)
715649 else false)
716650 then throw("there is an active lock - consider to use increaseLock")
717- else if ((k(this, cK) > 0))
718- then throw(("there are locked WXs - consider to use increaseLock " + cK))
651+ else if ((k(this, cr) > 0))
652+ then throw(("there are locked WXs - consider to use increaseLock " + cr))
719653 else {
720- let eJ = fraction(aY, c, aC)
721- let eK = fraction(eG, eJ, c)
722- let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, cm, aY], nil))
723- let cn = t(eL[0])
724- let co = t(eL[1])
725- let bn = toString(t(eL[2]))
726- let cg = cb(false)
727- let es = bt(en)
728- let ei = dZ()._2
729- let eM = if (eI)
654+ let eE = fraction(aW, c, aA)
655+ let eF = fraction(eB, eE, c)
656+ let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, bT, aW], nil))
657+ let bU = t(eG[0])
658+ let bV = t(eG[1])
659+ let bl = toString(t(eG[2]))
660+ let dR = n(bB, ah())
661+ let dS = n(bB, aj())
662+ let dT = n(bB, al())
663+ let co = if ((height > dT))
664+ then dT
665+ else height
666+ let dU = max([(co - dS), 0])
667+ let dW = br(dI)
668+ let dY = (((dR * dU) * 2) / 3)
669+ let ee = bu(dI)
670+ let ef = bv()
671+ let eg = ((eF * aW) / 2)
672+ let eh = k(this, ef)
673+ let bN = bH(false)
674+ let eH = if (eD)
730675 then nil
731- else [IntegerEntry(eH, (aV + 1)), StringEntry(bf(bR), en), StringEntry(bg(en), bR)]
732- $Tuple2(((((eM ++ cJ(bR, en, eG, cm, aY, cn, co, bn)) ++ cr(eG, aY, 1, if (eI)
676+ else [IntegerEntry(eC, (aT + 1)), StringEntry(bd(dl), dI), StringEntry(be(dI), dl)]
677+ $Tuple2(((((eH ++ cq(dl, dI, eB, bT, aW, bU, bV, bl)) ++ bY(eB, aW, 1, if (eD)
733678 then 0
734- else 1)) :+ cj("lock", bR, eG, cm, aY, cn, co, aI)) ++ [IntegerEntry(es, ei), IntegerEntry(bA(), (cg + eK))]), eK)
679+ else 1)) :+ bQ("lock", dl, eB, bT, aW, bU, bV, aG)) ++ [IntegerEntry(dW, dY), IntegerEntry(by(), (bN + eF))]), eF)
735680 }
736681 }
737682 }
738683 }
739684
740685
741-@Callable(aI)
742-func constructor (eN,eO,aA,eP,eQ,ax) = {
743- let eR = aH(aI)
744- if ((eR == eR))
745- then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eO, aA, eP, eQ, ax)), StringEntry(A(), eN)] ++ cr(0, 0, 0, 0))
686+@Callable(aG)
687+func constructor (eI,eJ,ay,eK,eL,av) = {
688+ let eM = aF(aG)
689+ if ((eM == eM))
690+ then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(eJ, ay, eK, eL, av)), StringEntry(A(), eI)] ++ bY(0, 0, 0, 0))
746691 else throw("Strict value is not equal to itself.")
747692 }
748693
749694
750695
751-@Callable(aI)
752-func lockRef (aY,eS,eT) = {
753- let eU = eD(aI, aY)
754- let eV = eU._1
755- let eK = eU._2
756- let eW = toString(aI.caller)
757- let eX = if (if ((eS == ""))
696+@Callable(aG)
697+func lockRef (aW,eN,eO) = {
698+ let eP = ey(aG, aW)
699+ let eQ = eP._1
700+ let eF = eP._2
701+ let eR = toString(aG.caller)
702+ let eS = if (if ((eN == ""))
758703 then true
759- else (eT == base58''))
704+ else (eO == base58''))
760705 then unit
761- else invoke(w, "createPair", [z, eS, eW, eT], nil)
762- if ((eX == eX))
706+ else invoke(w, "createPair", [z, eN, eR, eO], nil)
707+ if ((eS == eS))
763708 then {
764- let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
765- if ((eY == eY))
766- then $Tuple2(eV, unit)
709+ let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
710+ if ((eT == eT))
711+ then $Tuple2(eQ, unit)
767712 else throw("Strict value is not equal to itself.")
768713 }
769714 else throw("Strict value is not equal to itself.")
771716
772717
773718
774-@Callable(aI)
775-func lock (aY) = {
776- let eZ = eD(aI, aY)
777- let eV = eZ._1
778- let eK = eZ._2
779- let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
780- if ((eY == eY))
781- then $Tuple2(eV, unit)
719+@Callable(aG)
720+func lock (aW) = {
721+ let eU = ey(aG, aW)
722+ let eQ = eU._1
723+ let eF = eU._2
724+ let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
725+ if ((eT == eT))
726+ then $Tuple2(eQ, unit)
782727 else throw("Strict value is not equal to itself.")
783728 }
784729
785730
786731
787-@Callable(aI)
788-func increaseLock (fa) = {
789- let eE = aw()
790- let eF = eE[aq]
791- let az = fromBase58String(eF)
792- let aB = parseIntValue(eE[as])
793- let aC = parseIntValue(eE[at])
794- let eG = cR(aI, az)
795- let bR = toString(aI.caller)
796- let em = aT(bR)
797- let en = em[aL]
798- let fb = parseIntValue(em[aM])
799- let cm = parseIntValue(em[aN])
800- let fc = parseIntValue(em[aO])
801- let fd = (cm + fc)
802- let fe = max([(fd - height), 0])
803- let ff = (fb + eG)
804- let fg = (fe + fa)
805- if ((0 > fa))
732+@Callable(aG)
733+func increaseLock (eV) = {
734+ let ez = au()
735+ let eA = ez[ao]
736+ let ax = fromBase58String(eA)
737+ let az = parseIntValue(ez[aq])
738+ let aA = parseIntValue(ez[ar])
739+ let eB = cy(aG, ax)
740+ let dl = toString(aG.caller)
741+ let dH = aR(dl)
742+ let dI = dH[aJ]
743+ let eW = parseIntValue(dH[aK])
744+ let bT = parseIntValue(dH[aL])
745+ let eX = parseIntValue(dH[aM])
746+ let eY = (bT + eX)
747+ let eZ = max([(eY - height), 0])
748+ let fa = (eW + eB)
749+ let fb = (eZ + eV)
750+ if ((0 > eV))
806751 then throw("duration is less then zero")
807- else if ((aB > fg))
808- then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
809- else if ((fg > aC))
810- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
752+ else if ((az > fb))
753+ then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
754+ else if ((fb > aA))
755+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
811756 else {
812- let eJ = fraction(fg, c, aC)
813- let eK = fraction(ff, eJ, c)
814- let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
815- if ((eY == eY))
757+ let eE = fraction(fb, c, aA)
758+ let eF = fraction(fa, eE, c)
759+ let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
760+ if ((eT == eT))
816761 then {
817- let fh = height
818- let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, fh, fg], nil))
819- let cn = t(eL[0])
820- let co = t(eL[1])
821- let bn = toString(t(eL[2]))
822- let fi = cZ(bR)
823- let fj = (eK - fi)
824- if ((0 > fj))
825- then throw(("gwxDiff is less then 0: " + toString(fj)))
762+ let fc = height
763+ let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, fc, fb], nil))
764+ let bU = t(eG[0])
765+ let bV = t(eG[1])
766+ let bl = toString(t(eG[2]))
767+ let dR = n(bB, ah())
768+ let dS = n(bB, aj())
769+ let dT = n(bB, al())
770+ let co = if ((height > dT))
771+ then dT
772+ else height
773+ let dU = max([(co - dS), 0])
774+ let dW = br(dI)
775+ let dX = k(this, dW)
776+ let dY = (((dR * dU) * 2) / 3)
777+ let dZ = (dY - dX)
778+ if ((0 > dZ))
779+ then throw("wrong calculations")
826780 else {
827- let cg = cb(false)
828- let fk = cb(true)
829- (((cJ(bR, en, ff, fh, fg, cn, co, bn) ++ cr(eG, fa, 0, 0)) :+ cj("lock", bR, eG, cm, fg, cn, co, aI)) ++ [IntegerEntry(bA(), (cg + fj))])
781+ let ee = bu(dI)
782+ let ef = bv()
783+ let eg = k(this, ee)
784+ let eh = k(this, ef)
785+ let fd = cG(dl)
786+ let fe = (eF - fd)
787+ if ((0 > fe))
788+ then throw(("gwxDiff is less then 0: " + toString(fe)))
789+ else {
790+ let bN = bH(false)
791+ let ei = bH(true)
792+ let ek = bw(dI)
793+ let el = k(this, ek)
794+ let es = fraction(dZ, fd, ei)
795+ let ff = ((eF * fb) / 2)
796+ let fg = ((fd * eZ) / 2)
797+ let fh = (ff - fg)
798+ (((cq(dl, dI, fa, fc, fb, bU, bV, bl) ++ bY(eB, eV, 0, 0)) :+ bQ("lock", dl, eB, bT, fb, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + fe))])
799+ }
830800 }
831801 }
832802 else throw("Strict value is not equal to itself.")
835805
836806
837807
838-@Callable(aI)
839-func claimWxBoost (bJ,bR) = if ((bU != aI.caller))
808+@Callable(aG)
809+func claimWxBoost (cR,dl) = if ((bC != aG.caller))
840810 then throw("permissions denied")
841811 else {
842- let fl = ej(bJ, bR, false)
843- let fm = fl._1
844- let eB = fl._2
845- let eC = fl._3
846- $Tuple2(eB, [fm])
812+ let fi = dE(cR, dl, false)
813+ let ev = fi._1
814+ let ew = fi._2
815+ let ex = fi._3
816+ $Tuple2(ew, [ev])
847817 }
848818
849819
850820
851-@Callable(aI)
852-func claimWxBoostREADONLY (bJ,bR) = {
853- let fn = ej(bJ, bR, true)
854- let fm = fn._1
855- let eB = fn._2
856- let eC = fn._3
857- $Tuple2(nil, [fm, eC])
821+@Callable(aG)
822+func claimWxBoostREADONLY (cR,dl) = {
823+ let fj = dE(cR, dl, true)
824+ let ev = fj._1
825+ let ew = fj._2
826+ let ex = fj._3
827+ $Tuple2(nil, [ev, ex])
858828 }
859829
860830
861831
862-@Callable(aI)
863-func unlock (aS) = {
864- let em = aT(aS)
865- let en = em[aL]
866- let fb = parseIntValue(em[aM])
867- let cm = parseIntValue(em[aN])
868- let fc = parseIntValue(em[aO])
869- let fd = (cm + fc)
870- let eE = aw()
871- let az = fromBase58String(eE[aq])
872- if ((fd >= height))
873- then throw((("wait " + toString(fd)) + " to unlock"))
874- else if ((0 >= fb))
832+@Callable(aG)
833+func unlock (aQ) = {
834+ let dH = aR(aQ)
835+ let dI = dH[aJ]
836+ let eW = parseIntValue(dH[aK])
837+ let bT = parseIntValue(dH[aL])
838+ let eX = parseIntValue(dH[aM])
839+ let eY = (bT + eX)
840+ let ez = au()
841+ let ax = fromBase58String(ez[ao])
842+ if ((eY >= height))
843+ then throw((("wait " + toString(eY)) + " to unlock"))
844+ else if ((0 >= eW))
875845 then throw("nothing to unlock")
876846 else {
877- let bn = valueOrElse(getInteger(ax, ao()), 0)
878- (((cJ(aS, en, 0, cm, fc, 0, 0, toString(bn)) ++ cr(-(fb), 0, 0, -1)) :+ cj("unlock", aS, fb, cm, fc, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), fb, az))
847+ let bl = valueOrElse(getInteger(av, am()), 0)
848+ (((cq(aQ, dI, 0, bT, eX, 0, 0, toString(bl)) ++ bY(-(eW), 0, 0, -1)) :+ bQ("unlock", aQ, eW, bT, eX, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eW, ax))
879849 }
880850 }
881851
882852
883853
884-@Callable(aI)
885-func gwxUserInfoREADONLY (aS) = {
886- let bc = cZ(aS)
887- $Tuple2(nil, [bc])
854+@Callable(aG)
855+func gwxUserInfoREADONLY (aQ) = {
856+ let ba = cG(aQ)
857+ $Tuple2(nil, [ba])
888858 }
889859
890860
891861
892-@Callable(aI)
893-func userMaxDurationREADONLY (bR) = {
894- let eE = aw()
895- let aC = parseIntValue(eE[at])
896- let el = getString(this, aR(bR))
897- if ((el == unit))
898- then $Tuple2(nil, $Tuple2("lock", aC))
862+@Callable(aG)
863+func userMaxDurationREADONLY (dl) = {
864+ let ez = au()
865+ let aA = parseIntValue(ez[ar])
866+ let fk = getString(this, aP(dl))
867+ if ((fk == unit))
868+ then $Tuple2(nil, $Tuple2("lock", aA))
899869 else {
900- let em = split(value(el), a)
901- let cm = parseIntValue(em[aN])
902- let fc = parseIntValue(em[aO])
903- let fd = (cm + fc)
904- let fe = max([(fd - height), 0])
905- let fo = (aC - fe)
906- $Tuple2(nil, $Tuple2("increaseLock", fo))
870+ let dH = split(value(fk), a)
871+ let bT = parseIntValue(dH[aL])
872+ let eX = parseIntValue(dH[aM])
873+ let eY = (bT + eX)
874+ let eZ = max([(eY - height), 0])
875+ let fl = (aA - eZ)
876+ $Tuple2(nil, $Tuple2("increaseLock", fl))
907877 }
908878 }
909879
910880
911881
912-@Callable(aI)
913-func getUserGwxAmountAtHeightREADONLY (aS,cV) = {
914- let bc = cU(aS, cV)
915- $Tuple2(nil, bc)
882+@Callable(aG)
883+func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
884+ let ba = cB(aQ, cC)
885+ $Tuple2(nil, ba)
916886 }
917887
918888
919889
920-@Callable(aI)
921-func getTotalCachedGwxREADONLY () = $Tuple2(nil, cb(true))
890+@Callable(aG)
891+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bH(true))
922892
923893
924894
925-@Callable(aI)
926-func onBoostEmissionUpdate () = {
927- let eR = if ((aI.caller == bT))
895+@Callable(aG)
896+func onStakedVoteUpdate (cR,dl,dm) = {
897+ let eM = if ((aG.caller == bC))
928898 then true
929- else aH(aI)
930- if ((eR == eR))
931- then dZ()
932- else throw("Strict value is not equal to itself.")
933- }
934-
935-
936-
937-@Callable(aI)
938-func onStakedVoteUpdate (bJ,bR,dL) = {
939- let eR = if ((aI.caller == bU))
940- then true
941- else aH(aI)
942- if ((eR == eR))
899+ else aF(aG)
900+ if ((eM == eM))
943901 then {
944- let dO = dK(bJ, bR, dL)
945- $Tuple2(dO, unit)
902+ let dt = dk(cR, dl, dm)
903+ $Tuple2(dt, unit)
946904 }
947905 else throw("Strict value is not equal to itself.")
948906 }
949907
950908
951909
952-@Callable(aI)
953-func getVotingResultStakedREADONLY (bJ) = $Tuple2(nil, dp(bJ))
910+@Callable(aG)
911+func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, cW(cR))
954912
955913
956914
957-@Callable(aI)
958-func getVotingResultStakedIntegralREADONLY (bJ) = $Tuple2(nil, dt(bJ))
959-
960-
961-
962-@Callable(aI)
963-func getUserVoteFinalizedREADONLY (bJ,bR) = $Tuple2(nil, di(bJ, bR))
964-
965-
966-
967-@Callable(aI)
968-func getUserVoteStakedIntegralREADONLY (bJ,bR) = $Tuple2(nil, dD(bJ, bR))
969-
970-
971-
972-@Callable(aI)
973-func setManager (fp) = {
974- let eR = aH(aI)
975- if ((eR == eR))
915+@Callable(aG)
916+func setManager (fm) = {
917+ let eM = aF(aG)
918+ if ((eM == eM))
976919 then {
977- let fq = fromBase58String(fp)
978- if ((fq == fq))
979- then [StringEntry(ag(), fp)]
920+ let fn = fromBase58String(fm)
921+ if ((fn == fn))
922+ then [StringEntry(ag(), fm)]
980923 else throw("Strict value is not equal to itself.")
981924 }
982925 else throw("Strict value is not equal to itself.")
984927
985928
986929
987-@Callable(aI)
930+@Callable(aG)
988931 func confirmManager () = {
989- let fr = aG()
990- let fs = if (isDefined(fr))
932+ let fo = aE()
933+ let fp = if (isDefined(fo))
991934 then true
992935 else throw("No pending manager")
993- if ((fs == fs))
936+ if ((fp == fp))
994937 then {
995- let ft = if ((aI.callerPublicKey == value(fr)))
938+ let fq = if ((aG.callerPublicKey == value(fo)))
996939 then true
997940 else throw("You are not pending manager")
998- if ((ft == ft))
999- then [StringEntry(af(), toBase58String(value(fr))), DeleteEntry(ag())]
941+ if ((fq == fq))
942+ then [StringEntry(af(), toBase58String(value(fo))), DeleteEntry(ag())]
1000943 else throw("Strict value is not equal to itself.")
1001944 }
1002945 else throw("Strict value is not equal to itself.")
1003946 }
1004947
1005948
1006-@Verifier(fu)
1007-func fv () = {
1008- let fw = {
1009- let r = aE()
949+@Verifier(fr)
950+func fs () = {
951+ let ft = {
952+ let r = aC()
1010953 if ($isInstanceOf(r, "ByteVector"))
1011954 then {
1012- let aK = r
1013- aK
955+ let aI = r
956+ aI
1014957 }
1015958 else if ($isInstanceOf(r, "Unit"))
1016- then fu.senderPublicKey
959+ then fr.senderPublicKey
1017960 else throw("Match error")
1018961 }
1019- sigVerify(fu.bodyBytes, fu.proofs[0], fw)
962+ sigVerify(fr.bodyBytes, fr.proofs[0], ft)
1020963 }
1021964
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 func e (f) = makeString(["boosting.ride:", f], " ")
1313
1414
1515 func g (f) = throw(e(f))
1616
1717
1818 func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
1919
2020
2121 func k (i,j) = valueOrElse(getInteger(i, j), 0)
2222
2323
2424 func l (i,j,m) = valueOrElse(getInteger(i, j), m)
2525
2626
2727 func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
2828
2929
3030 func o (p) = if ((0 > p))
3131 then -(p)
3232 else p
3333
3434
3535 func q (p) = {
3636 let r = p
3737 if ($isInstanceOf(r, "List[Any]"))
3838 then {
3939 let s = r
4040 s
4141 }
4242 else throw("fail to cast into List[Any]")
4343 }
4444
4545
4646 func t (p) = {
4747 let r = p
4848 if ($isInstanceOf(r, "Int"))
4949 then {
5050 let u = r
5151 u
5252 }
5353 else throw("fail to cast into Int")
5454 }
5555
5656
5757 func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5858
5959
6060 let w = addressFromStringValue(h(this, v()))
6161
6262 let x = makeString(["%s%s", "referral", "programName"], a)
6363
6464 let y = "wxlock"
6565
6666 let z = valueOrElse(getString(this, x), y)
6767
6868 func A () = "%s%s__config__factoryAddress"
6969
7070
7171 let B = 1
7272
7373 let C = 2
7474
7575 let D = 3
7676
7777 let E = 4
7878
7979 let F = 5
8080
8181 let G = 6
8282
8383 let H = 7
8484
8585 let I = 8
8686
8787 let J = 9
8888
8989 let K = 10
9090
9191 let L = 11
9292
9393 func M () = "%s__factoryConfig"
9494
9595
9696 func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
9797
9898
9999 func P () = "%s__lpTokensList"
100100
101101
102102 func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
103103
104104
105105 func R (S) = makeString(["%s%s", "poolWeight", S], a)
106106
107107
108108 func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
109109
110110
111111 func W () = addressFromStringValue(h(this, A()))
112112
113113
114114 func X () = split(valueOrElse(getString(W(), P()), ""), a)
115115
116116
117117 func Y (Z) = split(h(Z, M()), a)
118118
119119
120120 func aa (ab) = addressFromStringValue(ab[C])
121121
122122
123123 func ac (ab) = addressFromStringValue(ab[F])
124124
125125
126126 func ad (ab) = addressFromStringValue(ab[B])
127127
128128
129129 func ae (ab) = addressFromStringValue(ab[K])
130130
131131
132132 func af () = "%s__managerPublicKey"
133133
134134
135135 func ag () = "%s__pendingManagerPublicKey"
136136
137137
138138 func ah () = "%s%s__ratePerBlock__current"
139139
140140
141141 func ai () = "%s%s__ratePerBlockMax__current"
142142
143143
144144 func aj () = "%s%s__emission__startBlock"
145145
146146
147-func ak () = "%s%s__boostingV2__startBlock"
147+func ak () = "%s%s__emission__duration"
148148
149149
150-func al () = "%s%s__boostingV2__integral"
150+func al () = "%s%s__emission__endBlock"
151151
152152
153-func am () = "%s%s__emission__duration"
153+func am () = "%s__nextPeriod"
154154
155155
156-func an () = "%s%s__emission__endBlock"
156+func an () = "%s%s__gwxRewardEmissionPart__startHeight"
157157
158158
159-func ao () = "%s__nextPeriod"
159+let ao = 1
160+
161+let ap = 2
162+
163+let aq = 3
164+
165+let ar = 4
166+
167+let as = 5
168+
169+func at () = "%s__config"
160170
161171
162-func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
172+func au () = split(h(this, at()), a)
163173
164174
165-let aq = 1
175+let av = addressFromStringValue(au()[as])
166176
167-let ar = 2
168-
169-let as = 3
170-
171-let at = 4
172-
173-let au = 5
174-
175-func av () = "%s__config"
177+func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
176178
177179
178-func aw () = split(h(this, av()), a)
180+func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
179181
180182
181-let ax = addressFromStringValue(aw()[au])
182-
183-func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184-
185-
186-func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187-
188-
189-func aE () = {
183+func aC () = {
190184 let r = getString(af())
191185 if ($isInstanceOf(r, "String"))
192186 then {
193- let aF = r
194- fromBase58String(aF)
187+ let aD = r
188+ fromBase58String(aD)
195189 }
196190 else if ($isInstanceOf(r, "Unit"))
197191 then unit
198192 else throw("Match error")
199193 }
200194
201195
202-func aG () = {
196+func aE () = {
203197 let r = getString(ag())
204198 if ($isInstanceOf(r, "String"))
205199 then {
206- let aF = r
207- fromBase58String(aF)
200+ let aD = r
201+ fromBase58String(aD)
208202 }
209203 else if ($isInstanceOf(r, "Unit"))
210204 then unit
211205 else throw("Match error")
212206 }
213207
214208
215-func aH (aI) = {
216- let aJ = throw("Permission denied")
217- let r = aE()
209+func aF (aG) = {
210+ let aH = throw("Permission denied")
211+ let r = aC()
218212 if ($isInstanceOf(r, "ByteVector"))
219213 then {
220- let aK = r
221- if ((aI.callerPublicKey == aK))
214+ let aI = r
215+ if ((aG.callerPublicKey == aI))
222216 then true
223- else aJ
217+ else aH
224218 }
225219 else if ($isInstanceOf(r, "Unit"))
226- then if ((aI.caller == this))
220+ then if ((aG.caller == this))
227221 then true
228- else aJ
222+ else aH
229223 else throw("Match error")
230224 }
231225
232226
233-let aL = 1
227+let aJ = 1
234228
235-let aM = 2
229+let aK = 2
236230
237-let aN = 3
231+let aL = 3
238232
239-let aO = 4
233+let aM = 4
240234
241-let aP = 5
235+let aN = 5
242236
243-let aQ = 6
237+let aO = 6
244238
245-func aR (aS) = makeString(["%s%s__lock", aS], a)
239+func aP (aQ) = makeString(["%s%s__lock", aQ], a)
246240
247241
248-func aT (aS) = split(h(this, aR(aS)), a)
242+func aR (aQ) = split(h(this, aP(aQ)), a)
249243
250244
251-func aU (aV,aW,aX,aY,aZ,ba,bb,bc) = makeString(["%d%d%d%d%d%d%d%d", aV, aW, aX, aY, aZ, ba, bb, bc], a)
245+func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
252246
253247
254-func bd (aV,aW,aX,aY,aZ,ba,bc) = aU(aV, toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(lastBlock.timestamp), toString(bc))
248+func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
255249
256250
257-func be () = "%s__nextUserNum"
251+func bc () = "%s__nextUserNum"
258252
259253
260-func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
254+func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
261255
262256
263-func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
257+func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
264258
265259
266-func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
260+func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
267261
268262
269-func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
263+func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
270264
271265
272-func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
266+func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
273267
274268
275-func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
269+func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
276270
277271
278-func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
272+func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
279273
280274
281-func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
275+func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
282276
283277
284-func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
278+func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
285279
286280
287-func bp () = "%s%s__stats__activeTotalLocked"
281+func bn () = "%s%s__stats__activeTotalLocked"
288282
289283
290-func bq () = "%s%s__stats__locksDurationSumInBlocks"
284+func bo () = "%s%s__stats__locksDurationSumInBlocks"
291285
292286
293-func br () = "%s%s__stats__locksCount"
287+func bp () = "%s%s__stats__locksCount"
294288
295289
296-func bs () = "%s%s__stats__activeUsersCount"
290+func bq () = "%s%s__stats__activeUsersCount"
297291
298292
299-func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
293+func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
300294
301295
302-func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
296+func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
303297
304298
305-func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
299+func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
306300
307301
308-func bx () = "%s%s__maxBoostInt__total"
302+func bv () = "%s%s__maxBoostInt__total"
309303
310304
311-func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
305+func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
312306
313307
314-func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
308+func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
315309
316310
317-func bA () = "%s%s__gwxCached__total"
311+func by () = "%s%s__gwxCached__total"
318312
319313
320-func bB () = "%s__gwxCachedTotalCorrective"
314+func bz () = "%s__gwxCachedTotalCorrective"
321315
322316
323-func bC (bD,bE,i,bF) = makeString(["%s%s%s%s%d", "vote", bD, bE, toString(i), toString(bF)], a)
317+let bA = W()
324318
319+let ab = Y(bA)
325320
326-func bG (bF) = makeString(["%s%d", "startHeight", toString(bF)], a)
321+let bB = ac(ab)
327322
323+let bC = ad(ab)
328324
329-func bH () = makeString(["%s", "currentEpochUi"], a)
325+let bD = ae(ab)
330326
327+let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
331328
332-func bI (bJ,bF) = makeString(["%s%s%d", "votingResultStaked", bJ, toString(bF)], a)
329+let bF = makeString(["%s", "votingEmissionContract"], a)
333330
331+let bG = addressFromStringValue(getStringValue(bA, bF))
334332
335-func bK (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegral", bJ, toString(bF)], a)
336-
337-
338-func bL (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bJ, toString(bF)], a)
339-
340-
341-func bM (bJ,i,bF) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bJ, toString(i), toString(bF)], a)
342-
343-
344-func bN (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegral", bJ, toString(i), toString(bF)], a)
345-
346-
347-func bO (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bJ, toString(i), toString(bF)], a)
348-
349-
350-func bP (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bJ, toString(i), toString(bF)], a)
351-
352-
353-func bQ (bR,bJ) = makeString(["%s%s%s", "staked", bR, bJ], a)
354-
355-
356-let bS = W()
357-
358-let ab = Y(bS)
359-
360-let bT = ac(ab)
361-
362-let bU = ad(ab)
363-
364-let bV = ae(ab)
365-
366-let bW = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
367-
368-let bX = makeString(["%s", "votingEmissionContract"], a)
369-
370-let bY = addressFromStringValue(getStringValue(bS, bX))
371-
372-let bZ = {
373- let ca = invoke(bT, "getBoostCoeffREADONLY", nil, nil)
374- if ($isInstanceOf(ca, "Int"))
375- then ca
376- else throw(($getType(ca) + " couldn't be cast to Int"))
377- }
378-
379-func cb (cc) = {
380- let cd = getIntegerValue(bY, bH())
381- let ce = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
382- let cf = getInteger(this, ce)
383- let cg = valueOrElse(getInteger(this, bA()), 0)
384- let ch = if (isDefined(cf))
385- then (cd >= value(cf))
333+func bH (bI) = {
334+ let bJ = makeString(["%s", "currentEpochUi"], a)
335+ let bK = getIntegerValue(bG, bJ)
336+ let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
337+ let bM = getInteger(this, bL)
338+ let bN = valueOrElse(getInteger(this, by()), 0)
339+ let bO = if (isDefined(bM))
340+ then (bK >= value(bM))
386341 else false
387- let ci = if (if (ch)
388- then cc
342+ let bP = if (if (bO)
343+ then bI
389344 else false)
390- then valueOrElse(getInteger(this, bB()), 0)
345+ then valueOrElse(getInteger(this, bz()), 0)
391346 else 0
392- max([0, (cg + ci)])
347+ max([0, (bN + bP)])
393348 }
394349
395350
396-func cj (ck,cl,aW,cm,aY,cn,co,aI) = {
397- let cp = makeString(["%s%s%s%s__history", ck, cl, toBase58String(aI.transactionId)], a)
398- let cq = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(cm), toString(aY), toString(cn), toString(co)], a)
399- StringEntry(cp, cq)
351+func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
352+ let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
353+ let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
354+ StringEntry(bW, bX)
400355 }
401356
402357
403-func cr (cs,ct,cu,cv) = {
404- let cw = bq()
405- let cx = br()
406- let cy = bs()
407- let cz = bp()
408- let cA = k(this, cw)
409- let cB = k(this, cx)
410- let cC = k(this, cy)
411- let cD = k(this, cz)
412-[IntegerEntry(cw, (cA + ct)), IntegerEntry(cx, (cB + cu)), IntegerEntry(cy, (cC + cv)), IntegerEntry(cz, (cD + cs))]
358+func bY (bZ,ca,cb,cc) = {
359+ let cd = bo()
360+ let ce = bp()
361+ let cf = bq()
362+ let cg = bn()
363+ let ch = k(this, cd)
364+ let ci = k(this, ce)
365+ let cj = k(this, cf)
366+ let ck = k(this, cg)
367+[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
413368 }
414369
415370
416-func cE (cF,cG,cH) = {
417- let cI = 1000
418- (((cF * cH) + cG) / cI)
371+func cl (cm,cn,co) = {
372+ let cp = 1000
373+ (((cm * co) + cn) / cp)
419374 }
420375
421376
422-func cJ (aS,aV,aW,aX,aY,cn,co,bn) = {
423- let cK = bh(aV)
424- let cL = bi(aV)
425- let cM = bj(aV)
426- let cN = bk(aV)
427- let cO = bl(aV)
428- let cP = bm(aV, bn)
429- let cQ = bo(aV, bn)
430- let bc = cE(cn, co, height)
431-[IntegerEntry(cK, aW), IntegerEntry(cL, aX), IntegerEntry(cM, aY), IntegerEntry(cN, cn), IntegerEntry(cO, co), IntegerEntry(cP, cn), IntegerEntry(cQ, co), StringEntry(aR(aS), bd(aV, aW, aX, aY, cn, co, bc))]
377+func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
378+ let cr = bf(aT)
379+ let cs = bg(aT)
380+ let ct = bh(aT)
381+ let cu = bi(aT)
382+ let cv = bj(aT)
383+ let cw = bk(aT, bl)
384+ let cx = bm(aT, bl)
385+ let ba = cl(bU, bV, height)
386+[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
432387 }
433388
434389
435-func cR (aI,cS) = if ((size(aI.payments) > 1))
390+func cy (aG,cz) = if ((size(aG.payments) > 1))
436391 then throw("only one payment is allowed")
437- else if ((size(aI.payments) == 0))
392+ else if ((size(aG.payments) == 0))
438393 then 0
439394 else {
440- let cT = aI.payments[0]
441- if ((value(cT.assetId) != cS))
395+ let cA = aG.payments[0]
396+ if ((value(cA.assetId) != cz))
442397 then throw("invalid asset id in payment")
443- else cT.amount
398+ else cA.amount
444399 }
445400
446401
447-func cU (aS,cV) = {
448- let cW = "empty"
449- let cX = bf(aS)
450- let aV = valueOrElse(getString(cX), cW)
451- let cn = valueOrElse(getInteger(bk(aV)), 0)
452- let co = valueOrElse(getInteger(bl(aV)), 0)
453- let cY = cE(cn, co, cV)
454- let bc = if ((0 > cY))
402+func cB (aQ,cC) = {
403+ let cD = "empty"
404+ let cE = bd(aQ)
405+ let aT = valueOrElse(getString(cE), cD)
406+ let bU = valueOrElse(getInteger(bi(aT)), 0)
407+ let bV = valueOrElse(getInteger(bj(aT)), 0)
408+ let cF = cl(bU, bV, cC)
409+ let ba = if ((0 > cF))
455410 then 0
456- else cY
457- bc
411+ else cF
412+ ba
458413 }
459414
460415
461-func cZ (aS) = cU(aS, height)
416+func cG (aQ) = cB(aQ, height)
462417
463418
464-func da () = {
465- let db = {
466- let cd = value(getInteger(bY, bH()))
467- let dc = (cd - 1)
468- if ((0 > dc))
419+func cH () = {
420+ let bJ = makeString(["%s", "currentEpochUi"], a)
421+ let cI = {
422+ let bK = value(getInteger(bG, bJ))
423+ let cJ = (bK - 1)
424+ if ((0 > cJ))
469425 then g("invalid epoch")
470- else $Tuple2(cd, dc)
426+ else $Tuple2(bK, cJ)
471427 }
472- let cd = db._1
473- let dc = db._2
474- let dd = value(getInteger(bY, bG(cd)))
475- $Tuple2(dc, dd)
428+ let bK = cI._1
429+ let cJ = cI._2
430+ func cK (cL) = makeString(["%s%d", "startHeight", toString(cL)], a)
431+
432+ let cM = value(getInteger(bG, cK(bK)))
433+ $Tuple2(cJ, cM)
476434 }
477435
478436
479-func de (bJ) = {
480- let df = 4
481- let dg = 5
482- let dh = {
483- let ca = invoke(bS, "getPoolConfigByLpAssetIdREADONLY", [bJ], nil)
484- if ($isInstanceOf(ca, "List[Any]"))
485- then ca
486- else throw(($getType(ca) + " couldn't be cast to List[Any]"))
487- }
488- let bD = {
489- let ca = dh[df]
490- if ($isInstanceOf(ca, "String"))
491- then ca
492- else throw(($getType(ca) + " couldn't be cast to String"))
493- }
494- let bE = {
495- let ca = dh[dg]
496- if ($isInstanceOf(ca, "String"))
497- then ca
498- else throw(($getType(ca) + " couldn't be cast to String"))
499- }
500- $Tuple2(bD, bE)
437+func cN (cO,cP,i,cL) = makeString(["%s%s%s%s%d", "vote", cO, cP, toString(i), toString(cL)], a)
438+
439+
440+func cQ (cR,cL) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cL)], a)
441+
442+
443+func cS (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cL)], a)
444+
445+
446+func cT (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cL)], a)
447+
448+
449+func cU (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cL)], a)
450+
451+
452+func cV (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cL)], a)
453+
454+
455+func cW (cR) = {
456+ let cX = cH()
457+ let cJ = cX._1
458+ let cM = cX._2
459+ let cY = valueOrElse(getInteger(bG, cQ(cR, cJ)), 0)
460+ let cZ = valueOrElse(getInteger(this, cQ(cR, cJ)), cY)
461+ cZ
501462 }
502463
503464
504-func di (bJ,bR) = {
505- let aS = addressFromStringValue(bR)
506- let dj = da()
507- let dc = dj._1
508- let dd = dj._2
509- let dk = de(bJ)
510- let bD = dk._1
511- let bE = dk._2
512- let dl = bC(bD, bE, aS, dc)
513- let dm = valueOrElse(getInteger(bY, dl), 0)
514- dm
465+func da (cR,db) = {
466+ let dc = cH()
467+ let cJ = dc._1
468+ let cM = dc._2
469+ let cZ = cW(cR)
470+ let dd = (cZ + db)
471+ let de = cS(cR, cJ)
472+ let df = valueOrElse(getInteger(this, de), 0)
473+ let dg = cT(cR, cJ)
474+ let dh = valueOrElse(getInteger(this, dg), cM)
475+ let di = (height - dh)
476+ let dj = ((di * cZ) + df)
477+ $Tuple2([IntegerEntry(cQ(cR, cJ), dd), IntegerEntry(dg, height), IntegerEntry(de, dj)], dj)
515478 }
516479
517480
518-func dn (bJ,bR) = {
519- let do = valueOrElse(getInteger(bU, bQ(bR, bJ)), 0)
520- let dm = di(bJ, bR)
521- if ((do == 0))
522- then 0
523- else dm
481+func dk (cR,dl,dm) = {
482+ let dn = cH()
483+ let cJ = dn._1
484+ let cM = dn._2
485+ let aQ = addressFromStringValue(dl)
486+ let do = 4
487+ let dp = 5
488+ let dq = {
489+ let dr = invoke(bA, "getPoolConfigByLpAssetId", [cR], nil)
490+ if ($isInstanceOf(dr, "List[Any]"))
491+ then dr
492+ else throw(($getType(dr) + " couldn't be cast to List[Any]"))
493+ }
494+ let cO = {
495+ let dr = dq[do]
496+ if ($isInstanceOf(dr, "String"))
497+ then dr
498+ else throw(($getType(dr) + " couldn't be cast to String"))
499+ }
500+ let cP = {
501+ let dr = dq[dp]
502+ if ($isInstanceOf(dr, "String"))
503+ then dr
504+ else throw(($getType(dr) + " couldn't be cast to String"))
505+ }
506+ let ds = valueOrElse(getInteger(bG, cN(cO, cP, aQ, cJ)), 0)
507+ let dt = if ((ds == 0))
508+ then nil
509+ else {
510+ let db = if (dm)
511+ then ds
512+ else -(ds)
513+ let du = da(cR, db)
514+ let dv = du._1
515+ let dj = du._2
516+ let dw = if (dm)
517+ then 0
518+ else ds
519+ let dx = cU(cR, aQ, cJ)
520+ let dy = valueOrElse(getInteger(this, dx), 0)
521+ let dz = cV(cR, aQ, cJ)
522+ let dA = valueOrElse(getInteger(this, dz), cM)
523+ let dB = (height - dA)
524+ let dC = ((dB * dw) + dy)
525+ let dD = [IntegerEntry(dz, height), IntegerEntry(dx, dC)]
526+ (dv ++ dD)
527+ }
528+ dt
524529 }
525530
526531
527-func dp (bJ) = {
528- let dq = da()
529- let dc = dq._1
530- let dd = dq._2
531- let dr = valueOrElse(getInteger(bY, bI(bJ, dc)), 0)
532- let ds = valueOrElse(getInteger(this, bI(bJ, dc)), dr)
533- ds
534- }
535-
536-
537-func dt (bJ) = {
538- let du = da()
539- let dc = du._1
540- let dd = du._2
541- let ds = dp(bJ)
542- let dv = valueOrElse(getInteger(this, bK(bJ, dc)), 0)
543- let dw = valueOrElse(getInteger(this, bL(bJ, dc)), dd)
544- let dx = (height - dw)
545- let dy = ((dx * ds) + dv)
546- dy
547- }
548-
549-
550-func dz (bJ,dA) = {
551- let dB = da()
552- let dc = dB._1
553- let dd = dB._2
554- let ds = dp(bJ)
555- let dC = (ds + dA)
556- let dy = dt(bJ)
557-[IntegerEntry(bI(bJ, dc), dC), IntegerEntry(bL(bJ, dc), height), IntegerEntry(bK(bJ, dc), dy)]
558- }
559-
560-
561-func dD (bJ,bR) = {
562- let dE = da()
563- let dc = dE._1
564- let dd = dE._2
565- let aS = addressFromStringValue(bR)
566- let dF = dn(bJ, bR)
567- let dG = valueOrElse(getInteger(this, bN(bJ, aS, dc)), 0)
568- let dH = valueOrElse(getInteger(this, bO(bJ, aS, dc)), dd)
569- let dI = (height - dH)
570- let dJ = ((dI * dF) + dG)
571- dJ
572- }
573-
574-
575-func dK (bJ,bR,dL) = {
576- let dM = da()
577- let dc = dM._1
578- let dd = dM._2
579- let aS = addressFromStringValue(bR)
580- let dN = di(bJ, bR)
581- let dO = if ((dN == 0))
582- then nil
583- else {
584- let dA = if (dL)
585- then dN
586- else -(dN)
587- let dP = dz(bJ, dA)
588- let dJ = dD(bJ, bR)
589- let dQ = [IntegerEntry(bO(bJ, aS, dc), height), IntegerEntry(bN(bJ, aS, dc), dJ)]
590- (dP ++ dQ)
591- }
592- dO
593- }
594-
595-
596-func dR (bJ,bR) = {
597- let dS = da()
598- let dc = dS._1
599- let dd = dS._2
600- let aS = addressFromStringValue(bR)
601- let dT = bP(bJ, aS, dc)
602- let dU = valueOrElse(getInteger(this, dT), 0)
603- let dV = bM(bJ, aS, dc)
604- let dW = valueOrElse(getInteger(this, dV), 0)
605- let dJ = dD(bJ, bR)
606- let dy = dt(bJ)
607- let dX = (dJ - dU)
608- let dY = (dy - dW)
609- $Tuple3([IntegerEntry(dT, dJ), IntegerEntry(dV, dy)], dX, dY)
610- }
611-
612-
613-func dZ () = {
614- let ea = n(bT, ah())
615- let eb = getInteger(bT, ak())
616- let ec = getInteger(this, al())
617- let ed = n(bT, an())
618- let cH = if ((height > ed))
619- then ed
620- else height
621- let ee = {
622- let r = eb
623- if ($isInstanceOf(r, "Int"))
624- then {
625- let ef = r
626- max([(cH - ef), 0])
627- }
628- else if ($isInstanceOf(r, "Unit"))
629- then 0
630- else throw("Match error")
631- }
632- let eg = ((ea * (bZ - 1)) / bZ)
633- let eh = valueOrElse(ec, 0)
634- let ei = ((eg * ee) + eh)
635- $Tuple2([IntegerEntry(al(), ei), IntegerEntry(ak(), height)], ei)
636- }
637-
638-
639-func ej (bJ,bR,ek) = {
640- let el = getString(this, aR(bR))
641- if ((el == unit))
532+func dE (cR,dl,dF) = {
533+ let cD = "EMPTY"
534+ let dG = valueOrElse(getString(this, aP(dl)), cD)
535+ if ((dG == cD))
642536 then $Tuple3(0, nil, "userRecord::is::empty")
643537 else {
644- let em = split(value(el), a)
645- let en = em[aL]
646- let eo = "empty"
647- let ep = if ((bJ != eo))
538+ let dH = split(dG, a)
539+ let dI = dH[aJ]
540+ let dJ = valueOrElse(getInteger(bD, an()), 0)
541+ let dK = "empty"
542+ let dL = if ((cR != dK))
648543 then {
649- let eq = valueOrErrorMessage(getString(bS, N(bJ)), ("unsupported lp asset " + bJ))
650- getIntegerValue(bS, R(eq))
544+ let dM = valueOrErrorMessage(getString(bA, N(cR)), ("unsupported lp asset " + cR))
545+ let dN = getIntegerValue(bA, R(dM))
546+ let dO = valueOrElse(getInteger(bA, T(dM, 0)), dN)
547+ $Tuple2(dO, dN)
651548 }
652- else if (ek)
653- then 0
654- else throw(("not readonly mode: unsupported lp asset " + bJ))
655- let er = bu(en, bJ)
656- let es = bt(en)
657- let et = valueOrElse(getInteger(this, er), k(this, es))
658- let ei = dZ()._2
659- let eu = (ei - et)
660- if ((0 > eu))
661- then throw("wrong calculations")
662- else {
663- let ev = dR(bJ, bR)
664- let ew = ev._1
665- let ex = ev._2
666- let ey = ev._3
667- let ez = fraction(eu, ep, d)
668- let eA = if ((ey == 0))
669- then 0
670- else fraction(ez, ex, ey)
671- let eB = ([IntegerEntry(er, ei)] ++ ew)
672- let eC = makeString([toString(et), toString(eu), toString(ep), toString(ex), toString(ey)], ":")
673- $Tuple3(eA, eB, eC)
674- }
549+ else if (dF)
550+ then $Tuple2(0, 0)
551+ else throw(("not readonly mode: unsupported lp asset " + cR))
552+ let dP = dL._1
553+ let dQ = dL._2
554+ let dR = n(bB, ah())
555+ let dS = n(bB, aj())
556+ let dT = n(bB, al())
557+ let co = if ((height > dT))
558+ then dT
559+ else height
560+ let dU = max([(co - dS), 0])
561+ let dV = bs(dI, cR)
562+ let dW = br(dI)
563+ let dX = valueOrElse(getInteger(this, dV), k(this, dW))
564+ let dY = (((dR * dU) * 2) / 3)
565+ let dZ = (dY - dX)
566+ let ea = fraction(dZ, 3, (2 * dR))
567+ let eb = (co - ea)
568+ let ec = max([(dJ - eb), 0])
569+ let ed = ((co - eb) - ec)
570+ if (if (if ((0 > eb))
571+ then true
572+ else (0 > ed))
573+ then true
574+ else (o(((ec + ed) - ea)) >= 1))
575+ then throw(((((((((((("invalid udh calc: udh=" + toString(ea)) + " uLastH=") + toString(eb)) + " udh0=") + toString(ec)) + " udh1=") + toString(ed)) + " lpAssetId=") + cR) + " userAddress=") + dl))
576+ else if ((0 > dZ))
577+ then throw("wrong calculations")
578+ else {
579+ let ee = bu(dI)
580+ let ef = bv()
581+ let eg = k(this, ee)
582+ let eh = k(this, ef)
583+ let ei = bH(true)
584+ let ej = cG(dl)
585+ let ek = bw(dI)
586+ let el = k(this, ek)
587+ let em = if ((ea == 0))
588+ then 0
589+ else fraction(dZ, ec, ea)
590+ let en = if ((ea == 0))
591+ then 0
592+ else fraction(dZ, ed, ea)
593+ let eo = fraction(em, dP, d)
594+ let ep = fraction(en, dQ, d)
595+ let eq = if ((ei == 0))
596+ then 0
597+ else fraction(eo, ej, ei)
598+ let er = if ((ei == 0))
599+ then 0
600+ else fraction(ep, ej, ei)
601+ let es = (eq + er)
602+ let et = bx(dI)
603+ let eu = k(this, et)
604+ let ev = (es - eu)
605+ let ew = [IntegerEntry(dV, dY)]
606+ let ex = makeString([toString(dX), toString(dZ), toString(eu), toString(ev), toString(dP), toString(dQ), toString(co), toString(ea), toString(eb), toString(ec), toString(ed), toString(ej), toString(ei)], ":")
607+ $Tuple3(es, ew, ex)
608+ }
675609 }
676610 }
677611
678612
679-func eD (aI,aY) = {
680- let eE = aw()
681- let eF = eE[aq]
682- let az = fromBase58String(eF)
683- let aA = parseIntValue(eE[ar])
684- let aB = parseIntValue(eE[as])
685- let aC = parseIntValue(eE[at])
686- if ((size(aI.payments) != 1))
613+func ey (aG,aW) = {
614+ let ez = au()
615+ let eA = ez[ao]
616+ let ax = fromBase58String(eA)
617+ let ay = parseIntValue(ez[ap])
618+ let az = parseIntValue(ez[aq])
619+ let aA = parseIntValue(ez[ar])
620+ if ((size(aG.payments) != 1))
687621 then throw("invalid payment - exact one payment must be attached")
688622 else {
689- let cT = aI.payments[0]
690- let eG = cT.amount
691- if ((az != value(cT.assetId)))
692- then throw((("invalid asset is in payment - " + eF) + " is expected"))
623+ let cA = aG.payments[0]
624+ let eB = cA.amount
625+ if ((ax != value(cA.assetId)))
626+ then throw((("invalid asset is in payment - " + eA) + " is expected"))
693627 else {
694- let eH = be()
695- let bR = toString(aI.caller)
696- let eI = isDefined(getString(bf(bR)))
697- let en = if (eI)
698- then value(getString(bf(bR)))
699- else toString(n(this, eH))
700- let aV = parseIntValue(en)
701- let cm = height
702- let cL = bi(en)
703- let cM = bj(en)
704- let cK = bh(en)
705- if (if ((aA > eG))
706- then (aI.caller != bW)
628+ let eC = bc()
629+ let dl = toString(aG.caller)
630+ let eD = isDefined(getString(bd(dl)))
631+ let dI = if (eD)
632+ then value(getString(bd(dl)))
633+ else toString(n(this, eC))
634+ let aT = parseIntValue(dI)
635+ let bT = height
636+ let cs = bg(dI)
637+ let ct = bh(dI)
638+ let cr = bf(dI)
639+ if (if ((ay > eB))
640+ then (aG.caller != bE)
707641 else false)
708- then throw(("amount is less then minLockAmount=" + toString(aA)))
709- else if ((aB > aY))
710- then throw(("passed duration is less then minLockDuration=" + toString(aB)))
711- else if ((aY > aC))
712- then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
713- else if (if (eI)
714- then ((n(this, cL) + n(this, cM)) >= cm)
642+ then throw(("amount is less then minLockAmount=" + toString(ay)))
643+ else if ((az > aW))
644+ then throw(("passed duration is less then minLockDuration=" + toString(az)))
645+ else if ((aW > aA))
646+ then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
647+ else if (if (eD)
648+ then ((n(this, cs) + n(this, ct)) >= bT)
715649 else false)
716650 then throw("there is an active lock - consider to use increaseLock")
717- else if ((k(this, cK) > 0))
718- then throw(("there are locked WXs - consider to use increaseLock " + cK))
651+ else if ((k(this, cr) > 0))
652+ then throw(("there are locked WXs - consider to use increaseLock " + cr))
719653 else {
720- let eJ = fraction(aY, c, aC)
721- let eK = fraction(eG, eJ, c)
722- let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, cm, aY], nil))
723- let cn = t(eL[0])
724- let co = t(eL[1])
725- let bn = toString(t(eL[2]))
726- let cg = cb(false)
727- let es = bt(en)
728- let ei = dZ()._2
729- let eM = if (eI)
654+ let eE = fraction(aW, c, aA)
655+ let eF = fraction(eB, eE, c)
656+ let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, bT, aW], nil))
657+ let bU = t(eG[0])
658+ let bV = t(eG[1])
659+ let bl = toString(t(eG[2]))
660+ let dR = n(bB, ah())
661+ let dS = n(bB, aj())
662+ let dT = n(bB, al())
663+ let co = if ((height > dT))
664+ then dT
665+ else height
666+ let dU = max([(co - dS), 0])
667+ let dW = br(dI)
668+ let dY = (((dR * dU) * 2) / 3)
669+ let ee = bu(dI)
670+ let ef = bv()
671+ let eg = ((eF * aW) / 2)
672+ let eh = k(this, ef)
673+ let bN = bH(false)
674+ let eH = if (eD)
730675 then nil
731- else [IntegerEntry(eH, (aV + 1)), StringEntry(bf(bR), en), StringEntry(bg(en), bR)]
732- $Tuple2(((((eM ++ cJ(bR, en, eG, cm, aY, cn, co, bn)) ++ cr(eG, aY, 1, if (eI)
676+ else [IntegerEntry(eC, (aT + 1)), StringEntry(bd(dl), dI), StringEntry(be(dI), dl)]
677+ $Tuple2(((((eH ++ cq(dl, dI, eB, bT, aW, bU, bV, bl)) ++ bY(eB, aW, 1, if (eD)
733678 then 0
734- else 1)) :+ cj("lock", bR, eG, cm, aY, cn, co, aI)) ++ [IntegerEntry(es, ei), IntegerEntry(bA(), (cg + eK))]), eK)
679+ else 1)) :+ bQ("lock", dl, eB, bT, aW, bU, bV, aG)) ++ [IntegerEntry(dW, dY), IntegerEntry(by(), (bN + eF))]), eF)
735680 }
736681 }
737682 }
738683 }
739684
740685
741-@Callable(aI)
742-func constructor (eN,eO,aA,eP,eQ,ax) = {
743- let eR = aH(aI)
744- if ((eR == eR))
745- then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eO, aA, eP, eQ, ax)), StringEntry(A(), eN)] ++ cr(0, 0, 0, 0))
686+@Callable(aG)
687+func constructor (eI,eJ,ay,eK,eL,av) = {
688+ let eM = aF(aG)
689+ if ((eM == eM))
690+ then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(eJ, ay, eK, eL, av)), StringEntry(A(), eI)] ++ bY(0, 0, 0, 0))
746691 else throw("Strict value is not equal to itself.")
747692 }
748693
749694
750695
751-@Callable(aI)
752-func lockRef (aY,eS,eT) = {
753- let eU = eD(aI, aY)
754- let eV = eU._1
755- let eK = eU._2
756- let eW = toString(aI.caller)
757- let eX = if (if ((eS == ""))
696+@Callable(aG)
697+func lockRef (aW,eN,eO) = {
698+ let eP = ey(aG, aW)
699+ let eQ = eP._1
700+ let eF = eP._2
701+ let eR = toString(aG.caller)
702+ let eS = if (if ((eN == ""))
758703 then true
759- else (eT == base58''))
704+ else (eO == base58''))
760705 then unit
761- else invoke(w, "createPair", [z, eS, eW, eT], nil)
762- if ((eX == eX))
706+ else invoke(w, "createPair", [z, eN, eR, eO], nil)
707+ if ((eS == eS))
763708 then {
764- let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
765- if ((eY == eY))
766- then $Tuple2(eV, unit)
709+ let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
710+ if ((eT == eT))
711+ then $Tuple2(eQ, unit)
767712 else throw("Strict value is not equal to itself.")
768713 }
769714 else throw("Strict value is not equal to itself.")
770715 }
771716
772717
773718
774-@Callable(aI)
775-func lock (aY) = {
776- let eZ = eD(aI, aY)
777- let eV = eZ._1
778- let eK = eZ._2
779- let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
780- if ((eY == eY))
781- then $Tuple2(eV, unit)
719+@Callable(aG)
720+func lock (aW) = {
721+ let eU = ey(aG, aW)
722+ let eQ = eU._1
723+ let eF = eU._2
724+ let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
725+ if ((eT == eT))
726+ then $Tuple2(eQ, unit)
782727 else throw("Strict value is not equal to itself.")
783728 }
784729
785730
786731
787-@Callable(aI)
788-func increaseLock (fa) = {
789- let eE = aw()
790- let eF = eE[aq]
791- let az = fromBase58String(eF)
792- let aB = parseIntValue(eE[as])
793- let aC = parseIntValue(eE[at])
794- let eG = cR(aI, az)
795- let bR = toString(aI.caller)
796- let em = aT(bR)
797- let en = em[aL]
798- let fb = parseIntValue(em[aM])
799- let cm = parseIntValue(em[aN])
800- let fc = parseIntValue(em[aO])
801- let fd = (cm + fc)
802- let fe = max([(fd - height), 0])
803- let ff = (fb + eG)
804- let fg = (fe + fa)
805- if ((0 > fa))
732+@Callable(aG)
733+func increaseLock (eV) = {
734+ let ez = au()
735+ let eA = ez[ao]
736+ let ax = fromBase58String(eA)
737+ let az = parseIntValue(ez[aq])
738+ let aA = parseIntValue(ez[ar])
739+ let eB = cy(aG, ax)
740+ let dl = toString(aG.caller)
741+ let dH = aR(dl)
742+ let dI = dH[aJ]
743+ let eW = parseIntValue(dH[aK])
744+ let bT = parseIntValue(dH[aL])
745+ let eX = parseIntValue(dH[aM])
746+ let eY = (bT + eX)
747+ let eZ = max([(eY - height), 0])
748+ let fa = (eW + eB)
749+ let fb = (eZ + eV)
750+ if ((0 > eV))
806751 then throw("duration is less then zero")
807- else if ((aB > fg))
808- then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
809- else if ((fg > aC))
810- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
752+ else if ((az > fb))
753+ then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
754+ else if ((fb > aA))
755+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
811756 else {
812- let eJ = fraction(fg, c, aC)
813- let eK = fraction(ff, eJ, c)
814- let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
815- if ((eY == eY))
757+ let eE = fraction(fb, c, aA)
758+ let eF = fraction(fa, eE, c)
759+ let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
760+ if ((eT == eT))
816761 then {
817- let fh = height
818- let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, fh, fg], nil))
819- let cn = t(eL[0])
820- let co = t(eL[1])
821- let bn = toString(t(eL[2]))
822- let fi = cZ(bR)
823- let fj = (eK - fi)
824- if ((0 > fj))
825- then throw(("gwxDiff is less then 0: " + toString(fj)))
762+ let fc = height
763+ let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, fc, fb], nil))
764+ let bU = t(eG[0])
765+ let bV = t(eG[1])
766+ let bl = toString(t(eG[2]))
767+ let dR = n(bB, ah())
768+ let dS = n(bB, aj())
769+ let dT = n(bB, al())
770+ let co = if ((height > dT))
771+ then dT
772+ else height
773+ let dU = max([(co - dS), 0])
774+ let dW = br(dI)
775+ let dX = k(this, dW)
776+ let dY = (((dR * dU) * 2) / 3)
777+ let dZ = (dY - dX)
778+ if ((0 > dZ))
779+ then throw("wrong calculations")
826780 else {
827- let cg = cb(false)
828- let fk = cb(true)
829- (((cJ(bR, en, ff, fh, fg, cn, co, bn) ++ cr(eG, fa, 0, 0)) :+ cj("lock", bR, eG, cm, fg, cn, co, aI)) ++ [IntegerEntry(bA(), (cg + fj))])
781+ let ee = bu(dI)
782+ let ef = bv()
783+ let eg = k(this, ee)
784+ let eh = k(this, ef)
785+ let fd = cG(dl)
786+ let fe = (eF - fd)
787+ if ((0 > fe))
788+ then throw(("gwxDiff is less then 0: " + toString(fe)))
789+ else {
790+ let bN = bH(false)
791+ let ei = bH(true)
792+ let ek = bw(dI)
793+ let el = k(this, ek)
794+ let es = fraction(dZ, fd, ei)
795+ let ff = ((eF * fb) / 2)
796+ let fg = ((fd * eZ) / 2)
797+ let fh = (ff - fg)
798+ (((cq(dl, dI, fa, fc, fb, bU, bV, bl) ++ bY(eB, eV, 0, 0)) :+ bQ("lock", dl, eB, bT, fb, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + fe))])
799+ }
830800 }
831801 }
832802 else throw("Strict value is not equal to itself.")
833803 }
834804 }
835805
836806
837807
838-@Callable(aI)
839-func claimWxBoost (bJ,bR) = if ((bU != aI.caller))
808+@Callable(aG)
809+func claimWxBoost (cR,dl) = if ((bC != aG.caller))
840810 then throw("permissions denied")
841811 else {
842- let fl = ej(bJ, bR, false)
843- let fm = fl._1
844- let eB = fl._2
845- let eC = fl._3
846- $Tuple2(eB, [fm])
812+ let fi = dE(cR, dl, false)
813+ let ev = fi._1
814+ let ew = fi._2
815+ let ex = fi._3
816+ $Tuple2(ew, [ev])
847817 }
848818
849819
850820
851-@Callable(aI)
852-func claimWxBoostREADONLY (bJ,bR) = {
853- let fn = ej(bJ, bR, true)
854- let fm = fn._1
855- let eB = fn._2
856- let eC = fn._3
857- $Tuple2(nil, [fm, eC])
821+@Callable(aG)
822+func claimWxBoostREADONLY (cR,dl) = {
823+ let fj = dE(cR, dl, true)
824+ let ev = fj._1
825+ let ew = fj._2
826+ let ex = fj._3
827+ $Tuple2(nil, [ev, ex])
858828 }
859829
860830
861831
862-@Callable(aI)
863-func unlock (aS) = {
864- let em = aT(aS)
865- let en = em[aL]
866- let fb = parseIntValue(em[aM])
867- let cm = parseIntValue(em[aN])
868- let fc = parseIntValue(em[aO])
869- let fd = (cm + fc)
870- let eE = aw()
871- let az = fromBase58String(eE[aq])
872- if ((fd >= height))
873- then throw((("wait " + toString(fd)) + " to unlock"))
874- else if ((0 >= fb))
832+@Callable(aG)
833+func unlock (aQ) = {
834+ let dH = aR(aQ)
835+ let dI = dH[aJ]
836+ let eW = parseIntValue(dH[aK])
837+ let bT = parseIntValue(dH[aL])
838+ let eX = parseIntValue(dH[aM])
839+ let eY = (bT + eX)
840+ let ez = au()
841+ let ax = fromBase58String(ez[ao])
842+ if ((eY >= height))
843+ then throw((("wait " + toString(eY)) + " to unlock"))
844+ else if ((0 >= eW))
875845 then throw("nothing to unlock")
876846 else {
877- let bn = valueOrElse(getInteger(ax, ao()), 0)
878- (((cJ(aS, en, 0, cm, fc, 0, 0, toString(bn)) ++ cr(-(fb), 0, 0, -1)) :+ cj("unlock", aS, fb, cm, fc, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), fb, az))
847+ let bl = valueOrElse(getInteger(av, am()), 0)
848+ (((cq(aQ, dI, 0, bT, eX, 0, 0, toString(bl)) ++ bY(-(eW), 0, 0, -1)) :+ bQ("unlock", aQ, eW, bT, eX, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eW, ax))
879849 }
880850 }
881851
882852
883853
884-@Callable(aI)
885-func gwxUserInfoREADONLY (aS) = {
886- let bc = cZ(aS)
887- $Tuple2(nil, [bc])
854+@Callable(aG)
855+func gwxUserInfoREADONLY (aQ) = {
856+ let ba = cG(aQ)
857+ $Tuple2(nil, [ba])
888858 }
889859
890860
891861
892-@Callable(aI)
893-func userMaxDurationREADONLY (bR) = {
894- let eE = aw()
895- let aC = parseIntValue(eE[at])
896- let el = getString(this, aR(bR))
897- if ((el == unit))
898- then $Tuple2(nil, $Tuple2("lock", aC))
862+@Callable(aG)
863+func userMaxDurationREADONLY (dl) = {
864+ let ez = au()
865+ let aA = parseIntValue(ez[ar])
866+ let fk = getString(this, aP(dl))
867+ if ((fk == unit))
868+ then $Tuple2(nil, $Tuple2("lock", aA))
899869 else {
900- let em = split(value(el), a)
901- let cm = parseIntValue(em[aN])
902- let fc = parseIntValue(em[aO])
903- let fd = (cm + fc)
904- let fe = max([(fd - height), 0])
905- let fo = (aC - fe)
906- $Tuple2(nil, $Tuple2("increaseLock", fo))
870+ let dH = split(value(fk), a)
871+ let bT = parseIntValue(dH[aL])
872+ let eX = parseIntValue(dH[aM])
873+ let eY = (bT + eX)
874+ let eZ = max([(eY - height), 0])
875+ let fl = (aA - eZ)
876+ $Tuple2(nil, $Tuple2("increaseLock", fl))
907877 }
908878 }
909879
910880
911881
912-@Callable(aI)
913-func getUserGwxAmountAtHeightREADONLY (aS,cV) = {
914- let bc = cU(aS, cV)
915- $Tuple2(nil, bc)
882+@Callable(aG)
883+func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
884+ let ba = cB(aQ, cC)
885+ $Tuple2(nil, ba)
916886 }
917887
918888
919889
920-@Callable(aI)
921-func getTotalCachedGwxREADONLY () = $Tuple2(nil, cb(true))
890+@Callable(aG)
891+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bH(true))
922892
923893
924894
925-@Callable(aI)
926-func onBoostEmissionUpdate () = {
927- let eR = if ((aI.caller == bT))
895+@Callable(aG)
896+func onStakedVoteUpdate (cR,dl,dm) = {
897+ let eM = if ((aG.caller == bC))
928898 then true
929- else aH(aI)
930- if ((eR == eR))
931- then dZ()
932- else throw("Strict value is not equal to itself.")
933- }
934-
935-
936-
937-@Callable(aI)
938-func onStakedVoteUpdate (bJ,bR,dL) = {
939- let eR = if ((aI.caller == bU))
940- then true
941- else aH(aI)
942- if ((eR == eR))
899+ else aF(aG)
900+ if ((eM == eM))
943901 then {
944- let dO = dK(bJ, bR, dL)
945- $Tuple2(dO, unit)
902+ let dt = dk(cR, dl, dm)
903+ $Tuple2(dt, unit)
946904 }
947905 else throw("Strict value is not equal to itself.")
948906 }
949907
950908
951909
952-@Callable(aI)
953-func getVotingResultStakedREADONLY (bJ) = $Tuple2(nil, dp(bJ))
910+@Callable(aG)
911+func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, cW(cR))
954912
955913
956914
957-@Callable(aI)
958-func getVotingResultStakedIntegralREADONLY (bJ) = $Tuple2(nil, dt(bJ))
959-
960-
961-
962-@Callable(aI)
963-func getUserVoteFinalizedREADONLY (bJ,bR) = $Tuple2(nil, di(bJ, bR))
964-
965-
966-
967-@Callable(aI)
968-func getUserVoteStakedIntegralREADONLY (bJ,bR) = $Tuple2(nil, dD(bJ, bR))
969-
970-
971-
972-@Callable(aI)
973-func setManager (fp) = {
974- let eR = aH(aI)
975- if ((eR == eR))
915+@Callable(aG)
916+func setManager (fm) = {
917+ let eM = aF(aG)
918+ if ((eM == eM))
976919 then {
977- let fq = fromBase58String(fp)
978- if ((fq == fq))
979- then [StringEntry(ag(), fp)]
920+ let fn = fromBase58String(fm)
921+ if ((fn == fn))
922+ then [StringEntry(ag(), fm)]
980923 else throw("Strict value is not equal to itself.")
981924 }
982925 else throw("Strict value is not equal to itself.")
983926 }
984927
985928
986929
987-@Callable(aI)
930+@Callable(aG)
988931 func confirmManager () = {
989- let fr = aG()
990- let fs = if (isDefined(fr))
932+ let fo = aE()
933+ let fp = if (isDefined(fo))
991934 then true
992935 else throw("No pending manager")
993- if ((fs == fs))
936+ if ((fp == fp))
994937 then {
995- let ft = if ((aI.callerPublicKey == value(fr)))
938+ let fq = if ((aG.callerPublicKey == value(fo)))
996939 then true
997940 else throw("You are not pending manager")
998- if ((ft == ft))
999- then [StringEntry(af(), toBase58String(value(fr))), DeleteEntry(ag())]
941+ if ((fq == fq))
942+ then [StringEntry(af(), toBase58String(value(fo))), DeleteEntry(ag())]
1000943 else throw("Strict value is not equal to itself.")
1001944 }
1002945 else throw("Strict value is not equal to itself.")
1003946 }
1004947
1005948
1006-@Verifier(fu)
1007-func fv () = {
1008- let fw = {
1009- let r = aE()
949+@Verifier(fr)
950+func fs () = {
951+ let ft = {
952+ let r = aC()
1010953 if ($isInstanceOf(r, "ByteVector"))
1011954 then {
1012- let aK = r
1013- aK
955+ let aI = r
956+ aI
1014957 }
1015958 else if ($isInstanceOf(r, "Unit"))
1016- then fu.senderPublicKey
959+ then fr.senderPublicKey
1017960 else throw("Match error")
1018961 }
1019- sigVerify(fu.bodyBytes, fu.proofs[0], fw)
962+ sigVerify(fr.bodyBytes, fr.proofs[0], ft)
1020963 }
1021964

github/deemru/w8io/026f985 
292.86 ms