tx · D69Z5DoJ8y2c7My6s56dB7LJoKKvSwqd1SW8kvjhttMP

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02600000 Waves

2023.08.17 15:36 [2714599] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "D69Z5DoJ8y2c7My6s56dB7LJoKKvSwqd1SW8kvjhttMP", "fee": 2600000, "feeAssetId": null, "timestamp": 1692275794797, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "nsSVJkhSjHoWeN4xLGqRU9fmT871jtdwYbTHj3L6PGfzjyz2xvacpYV3nxqRd3dAEmJAbhrXVUyw3TrLRFrrZ3c" ], "script": "base64:BgLOLQgCEggKBggIAQEBCBIFCgMBCAISAwoBARIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIECgIIARIDCgEIEgASABIFCgMICAQSAwoBCBIDCgEIEgQKAggIEgQKAggIIgNTRVAiBlNDQUxFOCIFTVVMVDgiDlBPT0xXRUlHSFRNVUxUIhBjb250cmFjdEZpbGVuYW1lIgdTQ0FMRTE4IgZNVUxUMTgiCE1VTFQxOEJJIhVkdXJhdGlvbk1vbnRoc0FsbG93ZWQiC2Jsb2Nrc0luRGF5Ig1ibG9ja3NJbk1vbnRoIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIDYWJzIgN2YWwiDmVuc3VyZVBvc2l0aXZlIgF2IgFtIhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZSIacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQiE3JlZmVycmFsUHJvZ3JhbU5hbWUiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCINa2V5RmFjdG9yeUNmZyIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiCmxwQXNzZXRTdHIiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiG2tleUZhY3RvcnlQb29sV2VpZ2h0SGlzdG9yeSILcG9vbEFkZHJlc3MiA251bSIYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsIhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIhNrZXlNYW5hZ2VyUHVibGljS2V5IhZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzIh5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIh1rZXlCb29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodCIVa2V5Qm9vc3RpbmdWMkludGVncmFsIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siDUlkeENmZ0Fzc2V0SWQiE0lkeENmZ01pbkxvY2tBbW91bnQiFUlkeENmZ01pbkxvY2tEdXJhdGlvbiIVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uIhJJZHhDZmdNYXRoQ29udHJhY3QiFElkeENmZ0Jsb2Nrc0luUGVyaW9kIglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIIY2ZnQXJyYXkiB2Fzc2V0SWQiDW1pbkxvY2tBbW91bnQiD21pbkxvY2tEdXJhdGlvbiIPbWF4TG9ja0R1cmF0aW9uIgxtYXRoQ29udHJhY3QiDmJsb2Nrc0luUGVyaW9kIg1mb3JtYXRDb25maWdTIgxmb3JtYXRDb25maWciHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMiByRtYXRjaDAiAXMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIhpJZHhMb2NrTGFzdFVwZGF0ZVRpbWVzdGFtcCIQSWR4TG9ja0d3eEFtb3VudCIQSWR4TG9ja1d4Q2xhaW1lZCITa2V5TG9ja1BhcmFtc1JlY29yZCILdXNlckFkZHJlc3MiBHR4SWQiAWIiGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsIhVrZXlVc2VyR3d4QW1vdW50VG90YWwiFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQiBmFtb3VudCIFc3RhcnQiCGR1cmF0aW9uIglnd3hBbW91bnQiCXd4Q2xhaW1lZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudCIga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiEmtleVN0YXRzTG9ja3NDb3VudCISa2V5U3RhdHNVc2Vyc0NvdW50IiBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIHdXNlck51bSIia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIJbHBBc3NldElkIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiC2tleUd3eFRvdGFsIgdrZXlWb3RlIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiBWVwb2NoIhVrZXlTdGFydEhlaWdodEJ5RXBvY2giEWtleUN1cnJlbnRFcG9jaFVpIhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiDGxwQXNzZXRJZFN0ciIda2V5Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiJWtleVZvdGluZ1Jlc3VsdFN0YWtlZExhc3RVcGRhdGVIZWlnaHQiIWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdCIVa2V5Vm90ZVN0YWtlZEludGVncmFsIh1rZXlWb3RlU3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIZa2V5Vm90ZVN0YWtlZEludGVncmFsTGFzdCIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0Ig9zdGFraW5nQ29udHJhY3QiEWd3eFJld2FyZENvbnRyYWN0IhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0Ih1rZXlWb3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIKYm9vc3RDb2VmZiIBQCIZdXNlck51bWJlckJ5QWRkcmVzc09yRmFpbCIRZ2V0R3d4QW1vdW50VG90YWwiEmdldExvY2tlZEd3eEFtb3VudCIMZnVuY3Rpb25OYW1lIhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIYbG9ja2VkVm90aW5nRW1pc3Npb25SYXRlIhRsb2NrZWRWb3RpbmdFbWlzc2lvbiIGbG9ja2VkIgxIaXN0b3J5RW50cnkiBHR5cGUiBHVzZXIiCWxvY2tTdGFydCIKaGlzdG9yeUtFWSILaGlzdG9yeURBVEEiClN0YXRzRW50cnkiDnRvdGFsTG9ja2VkSW5jIgtkdXJhdGlvbkluYyIMbG9ja0NvdW50SW5jIg11c2Vyc0NvdW50SW5jIhtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkiDWxvY2tzQ291bnRLRVkiDXVzZXJzQ291bnRLRVkiDnRvdGFsQW1vdW50S0VZIhhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiCmxvY2tzQ291bnQiCnVzZXJzQ291bnQiC3RvdGFsQW1vdW50Ig9Mb2NrUGFyYW1zRW50cnkiImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwiD2V4cGVjdGVkQXNzZXRJZCIDcG10IhVnZXRVc2VyR3d4QW1vdW50VG90YWwiGmdldFZvdGluZ0VtaXNzaW9uRXBvY2hJbmZvIg0kdDAxNTA1NjE1MzQ2Ig5jdXJyZW50RXBvY2hVaSISbGFzdEZpbmFsaXplZEVwb2NoIhdjdXJyZW50RXBvY2hTdGFydEhlaWdodCIYZ2V0UG9vbEFzc2V0c0J5THBBc3NldElkIhBpZHhBbW91bnRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiB3Bvb2xDZmciFGdldFVzZXJWb3RlRmluYWxpemVkIg0kdDAxNjAzNzE2MTE3Ig0kdDAxNjEyMDE2MTk1Igt1c2VyVm90ZUtleSIIdXNlclZvdGUiEWdldFVzZXJWb3RlU3Rha2VkIgxzdGFrZWRCeVVzZXIiFWdldFZvdGluZ1Jlc3VsdFN0YWtlZCINJHQwMTY3MzkxNjgxOSIXdm90aW5nUmVzdWx0U3Rha2VkU3RhcnQiEnZvdGluZ1Jlc3VsdFN0YWtlZCIdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiDSR0MDE3MTgxMTcyNjEiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsUHJldiIidm90aW5nUmVzdWx0U3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIcdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaCIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiIXJlZnJlc2hWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIPc3Rha2VkVm90ZURlbHRhIg0kdDAxODA5ODE4MTc4IhV2b3RpbmdSZXN1bHRTdGFrZWROZXciGWdldFVzZXJWb3RlU3Rha2VkSW50ZWdyYWwiDSR0MDE4Nzg5MTg4NjkiDnVzZXJWb3RlU3Rha2VkIhp1c2VyVm90ZVN0YWtlZEludGVncmFsUHJldiIedXNlclZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0Ihh1c2VyVm90ZVN0YWtlZEludGVncmFsRGgiFnVzZXJWb3RlU3Rha2VkSW50ZWdyYWwiGXJlZnJlc2hWb3RlU3Rha2VkSW50ZWdyYWwiBGVkZ2UiDSR0MDE5NjU3MTk3MzciEXVzZXJWb3RlRmluYWxpemVkIgdhY3Rpb25zIhN2b3RpbmdSZXN1bHRBY3Rpb25zIgt2b3RlQWN0aW9ucyIbZ2V0U3Rha2VkVm90ZXNJbnRlZ3JhbHNEaWZmIg0kdDAyMDU5MTIwNjcxIh11c2VyVm90ZVN0YWtlZEludGVncmFsTGFzdEtleSIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiIXZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdEtleSIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsRGlmZiIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaWZmIhxyZWZyZXNoQm9vc3RFbWlzc2lvbkludGVncmFsIhJ3eEVtaXNzaW9uUGVyQmxvY2siIGJvb3N0aW5nVjJMYXN0VXBkYXRlSGVpZ2h0T3B0aW9uIhhib29zdGluZ1YySW5nZXJnYWxPcHRpb24iC2VtaXNzaW9uRW5kIgFoIgJkaCIQbGFzdFVwZGF0ZUhlaWdodCIVYm9vc3RFbWlzc2lvblBlckJsb2NrIhlib29zdEVtaXNzaW9uSW50ZWdyYWxQcmV2IhVib29zdEVtaXNzaW9uSW50ZWdyYWwiFGludGVybmFsQ2xhaW1XeEJvb3N0IghyZWFkT25seSIIRU1QVFlTVFIiCnBvb2xXZWlnaHQiDnBvb2xBZGRyZXNzU3RyIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiDSR0MDI0MjEzMjQzNTIiG3N0YWtlZFZvdGVzSW50ZWdyYWxzQWN0aW9ucyIUdXNlclZvdGVJbnRlZ3JhbERpZmYiFnRvdGFsVm90ZXNJbnRlZ3JhbERpZmYiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIg5kdXJhdGlvbk1vbnRocyIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciCnVzZXJOdW1TdHIiDmdXeEFtb3VudFN0YXJ0Ig5nd3hBbW91bnRUb3RhbCISdXNlckd3eEFtb3VudFRvdGFsIgxnd3hSZXdhcmRJbnYiA2FyciIRZ2V0V3hXaXRoZHJhd2FibGUiCnR4SWRPcHRpb24iD3VzZXJSZWNvcmRBcnJheSIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIgF0IghleHBvbmVudCIOd3hXaXRoZHJhd2FibGUiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDI5MTYwMjkyMjUiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDI5NjgzMjk3NDgiDSR0MDMwMDU4MzAxNjAiEnVzZXJCb29zdEF2YWlsYWJsZSINJHQwMzAyOTIzMDM5MyIHdHhJZFN0ciIJZ3d4QnVybmVkIgxnd3hSZW1haW5pbmciD2xvY2tlZEd3eEFtb3VudCIVdXNlckd3eEFtb3VudFRvdGFsTmV3Igx0YXJnZXRIZWlnaHQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleY4BAAFhAgJfXwABYgAIAAFjAIDC1y8AAWQFAWMAAWUCDWJvb3N0aW5nLnJpZGUAAWYAEgABZwCAgJC7utat8A0AAWgJALYCAQUBZwABaQkAzAgCAAEJAMwIAgADCQDMCAIABgkAzAgCAAwJAMwIAgAYCQDMCAIAMAUDbmlsAAFqAKALAAFrAJjWAgEBbAEBbQkAuQkCCQDMCAIFAWUJAMwIAgICOiAJAMwIAgUBbQUDbmlsAgABAW4BAW0JAAIBCQEBbAEFAW0BAW8CAXABcQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXAFAXEJAQFsAQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBcQIPIGlzIG5vdCBkZWZpbmVkAQFyAgFwAXEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBcAUBcQAAAQFzAwFwAXEBdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQFwBQFxBQF0AQF1AgFwAXEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFwBQFxCQEBbAEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXECDyBpcyBub3QgZGVm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pAMBBQJhQwUCYUQBAmFIAAQCYUkJAKIIAQkBAmFpAAMJAAECBQJhSQIGU3RyaW5nBAJhSgUCYUkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFKBQR0aGlzAQJhSwAEAmFMCQECYUgABAJhSQkAnQgCBQJhTAkBAmFoAAMJAAECBQJhSQIGU3RyaW5nBAJhSgUCYUkJANkEAQUCYUoDCQABAgUCYUkCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYU0BAmFOBAJhTwkBAW4BAhFQZXJtaXNzaW9uIGRlbmllZAQCYUkJAQJhSwADCQABAgUCYUkCCkJ5dGVWZWN0b3IEAmFQBQJhSQMJAAACCAUCYU4PY2FsbGVyUHVibGljS2V5BQJhUAYFAmFPAwkAAQIFAmFJAgRVbml0AwkAAAIIBQJhTgZjYWxsZXIFBHRoaXMGBQJhTwkAAgECC01hdGNoIGVycm9yAAJhUQABAAJhUgACAAJhUwADAAJhVAAEAAJhVQAFAAJhVgAGAQJhVwICYVgCYVkJALkJAgkAzAgCAgwlcyVzJXNfX2xvY2sJAMwIAgkApQgBBQJhWAkAzAgCBAJhSQUCYVkDCQABAgUCYUkCCkJ5dGVWZWN0b3IEAmFaBQJhSQkA2AQBBQJhWgMJAAECBQJhSQIEVW5pdAIGbGVnYWN5CQACAQILTWF0Y2ggZXJyb3IFA25pbAUBYQECYmECAmFYAmFZCQC1CQIJAQFvAgUEdGhpcwkBAmFXAgUCYVgFAmFZBQFhAQJiYgECYVgJALkJAgkAzAgCAhQlcyVzX19nd3hBbW91bnRUb3RhbAkAzAgCCQClCAEFAmFYBQNuaWwFAWEBAmJjBQJiZAJiZQJiZgJiZwJiaAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYmUJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBBQJiaAUDbmlsBQFhAQJiaQACDyVzX19uZXh0VXNlck51bQECYmoBAmFYCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQJhWAUDbmlsBQFhAQJiawEBWQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fbnVtMnVzZXIJAMwIAgUBWQUDbmlsBQFhAQJibAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAECYm0AAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQJibgACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50AQJibwACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50AQJicAECYnEJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCCQCkAwEFAmJxBQNuaWwFAWEBAmJyAgJicQJicwkAuQkCCQDMCAICICVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludFYyCQDMCAIJAKQDAQUCYnEJAMwIAgUCYnMFA25pbAUBYQECYnQBAmJxCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgkApAMBBQJicQUDbmlsBQFhAQJidQACGCVzJXNfX21heEJvb3N0SW50X190b3RhbAECYnYBAmJxCQC5CQIJAMwIAgIkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQDMCAIJAKQDAQUCYnEFA25pbAUBYQECYncBAmJxCQC5CQIJAMwIAgIWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkAzAgCCQCkAwEFAmJxBQNuaWwFAWEBAmJ4AAIQJXMlc19fZ3d4X190b3RhbAECYnkEAmJ6AmJBAXACYkIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUCYnoJAMwIAgUCYkEJAMwIAgkApQgBBQFwCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYkMBAmJCCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAmJCBQNuaWwFAWEBAmJEAAkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEBAmJFAgJiRgJiQgkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhJ2b3RpbmdSZXN1bHRTdGFrZWQJAMwIAgUCYkYJAMwIAgkApAMBBQJiQgUDbmlsBQFhAQJiRwICYkYCYkIJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwJAMwIAgUCYkYJAMwIAgkApAMBBQJiQgUDbmlsBQFhAQJiSAICYkYCYkIJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIqdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0VXBkYXRlSGVpZ2h0CQDMCAIFAmJGCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYkkDAmJGAXACYkIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAh52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QJAMwIAgUCYkYJAMwIAgkApQgBBQFwCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYkoDAmJGAXACYkIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAhJ2b3RlU3Rha2VkSW50ZWdyYWwJAMwIAgUCYkYJAMwIAgkApQgBBQFwCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYksDAmJGAXACYkIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAiJ2b3RlU3Rha2VkSW50ZWdyYWxMYXN0VXBkYXRlSGVpZ2h0CQDMCAIFAmJGCQDMCAIJAKUIAQUBcAkAzAgCCQCkAwEFAmJCBQNuaWwFAWEBAmJMAwJiRgFwAmJCCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIWdm90ZVN0YWtlZEludGVncmFsTGFzdAkAzAgCBQJiRgkAzAgCCQClCAEFAXAJAMwIAgkApAMBBQJiQgUDbmlsBQFhAQJiTQICYk4CYkYJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGc3Rha2VkCQDMCAIFAmJOCQDMCAIFAmJGBQNuaWwFAWEAAmJPCQEBWgAAAmFkCQECYWEBBQJiTwACYlAJAQJhZQEFAmFkAAJiUQkBAmFmAQUCYWQAAmJSCQECYWcBBQJhZAACYlMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWwBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBbAECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAAJiVAkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQACYlUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJPBQJiVAACYlYJALkJAgkAzAgCAgIlcwkAzAgCAhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdAUDbmlsBQFhAAJiVwoAAmJYCQD8BwQFAmJQAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJYAgNJbnQFAmJYCQACAQkArAICCQADAQUCYlgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYlkBAmFYBAJhSQkAnQgCBQR0aGlzCQECYmoBCQClCAEFAmFYAwkAAQIFAmFJAgZTdHJpbmcEAmFKBQJhSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFAmFKCQEBbAECE2ludmFsaWQgdXNlciBudW1iZXIDCQABAgUCYUkCBFVuaXQJAQFuAQIMaW52YWxpZCB1c2VyCQACAQILTWF0Y2ggZXJyb3IBAmJaAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYngAAAABAmNhAQJhWAQCY2ICEmdldExvY2tlZEd3eEFtb3VudAQCY2MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQCYUkJAJ0IAgUCYlUFAmJWAwkAAQIFAmFJAgRVbml0BQR1bml0AwkAAQIFAmFJAgZTdHJpbmcEAmFKBQJhSQkApggBBQJhSgkAAgECC01hdGNoIGVycm9yCQEBbAECJGludmFsaWQgdm90aW5nIGVtaXNzaW9uIHJhdGUgYWRkcmVzcwQCY2QKAAJiWAkA/AcEBQJiVQUCY2IJAMwIAgkApQgBBQJhWAUDbmlsBQNuaWwDCQABAgUCYlgCA0ludAUCYlgJAAIBCQCsAgIJAAMBBQJiWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjZQoAAmJYCQD8BwQFAmNjBQJjYgkAzAgCCQClCAEFAmFYBQNuaWwFA25pbAMJAAECBQJiWAIDSW50BQJiWAkAAgEJAKwCAgkAAwEFAmJYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNmCQCWAwEJAMwIAgUCY2QJAMwIAgUCY2UFA25pbAUCY2YBAmNnBwJjaAJjaQJiZAJjagJiZgJiZwJhTgQCY2sJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJjaAkAzAgCBQJjaQkAzAgCCQDYBAEIBQJhTg10cmFuc2FjdGlvbklkBQNuaWwFAWEEAmNsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJjagkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmcFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCY2sFAmNsAQJjbQQCY24CY28CY3ACY3EEAmNyCQECYm0ABAJjcwkBAmJuAAQCY3QJAQJibwAEAmN1CQECYmwABAJjdgkBAXICBQR0aGlzBQJjcgQCY3cJAQFyAgUEdGhpcwUCY3MEAmN4CQEBcgIFBHRoaXMFAmN0BAJjeQkBAXICBQR0aGlzBQJjdQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3IJAGQCBQJjdgUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIFAmNzCQBkAgUCY3cFAmNwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdAkAZAIFAmN4BQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3UJAGQCBQJjeQUCY24FA25pbAECY3oHAmFYAmFZAmJkAmJlAmJmAmJnAmJoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhVwIFAmFYBQJhWQkBAmJjBQUCYmQFAmJlBQJiZgUCYmcFAmJoBQNuaWwBAmNBAgJhTgJjQgMJAGYCCQCQAwEIBQJhTghwYXltZW50cwABCQEBbgECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQJhTghwYXltZW50cwAAAAAE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eQIJAQJhbQAFBmhlaWdodAUDbmlsBQJkTwECZFADAmJGAmJOAmRRBAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJOCQEBbAECFGludmFsaWQgdXNlciBhZGRyZXNzBAJicQkBAmJZAQUCYVgDCQAAAgUCYnEFAmJxBAJkUgIFZW1wdHkEAmRTAwkBAiE9AgUCYkYFAmRSBAJkVAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmJPCQEBUwEFAmJGCQEBbAEJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYk8JAQFVAQUCZFQDBQJkUQAACQEBbgEJAKwCAgIobm90IHJlYWRvbmx5IG1vZGU6IHVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYkYEAmRVCQECYnICBQJicQUCYkYEAmRWCQECYnABBQJicQQCZFcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZFUJAQFyAgUEdGhpcwUCZFYEAmRPCAkBAmRFAAJfMgQCZFgJAGUCBQJkTwUCZFcDCQBmAgAABQJkWAkBAW4BAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmRZCQECZHcCBQJiRgUCYk4EAmRaCAUCZFkCXzEEAmVhCAUCZFkCXzIEAmViCAUCZFkCXzMEAmVjCQBrAwUCZFgFAmRTBQFkBAJlZAMJAAACBQJlYgAAAAAJAGsDBQJlYwUCZWEFAmViBAJlZQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkVQUCZE8FA25pbAUCZFoEAmVmCQC5CQIJAMwIAgkApAMBBQJkVwkAzAgCCQCkAwEFAmRYCQDMCAIJAKQDAQUCZFMJAMwIAgkApAMBBQJlYQkAzAgCCQCkAwEFAmViBQNuaWwCAToJAJUKAwUCZWQFAmVlBQJlZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWcCAmFOAmVoBAJiZgkAaAIFAmVoBQFrBAJlaQkA2AQBBQJhegMJAQIhPQIJAJADAQgFAmFOCHBheW1lbnRzAAEJAQFuAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY0MJAJEDAggFAmFOCHBheW1lbnRzAAAEAmVqCAUCY0MGYW1vdW50AwkBAiE9AgUCYXoJAQV2YWx1ZQEIBQJjQwdhc3NldElkCQEBbgEJAKwCAgkArAICAh5pbnZhbGlkIGFzc2V0IGlzIGluIHBheW1lbnQgLSAFAmVpAgwgaXMgZXhwZWN0ZWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQFpBQJlaAkBAW4BAhBpbnZhbGlkIGR1cmF0aW9uBAJlawkBAmJpAAQCYVgIBQJhTgZjYWxsZXIEAmJOCQClCAEFAmFYBAJlbAkBCWlzRGVmaW5lZAEJAKIIAQkBAmJqAQUCYk4EAmVtAwUCZWwJAQV2YWx1ZQEJAKIIAQkBAmJqAQUCYk4JAKQDAQkBAXUCBQR0aGlzBQJlawQCYnEJAQ1wYXJzZUludFZhbHVlAQUCZW0EAmNqBQZoZWlnaHQDAwkAZgIFAmFBBQJlagkBAiE9AgUCYVgFAmJTBwkBAW4BCQCsAgICImFtb3VudCBpcyBsZXNzIHRoZW4gbWluTG9ja0Ftb3VudD0JAKQDAQUCYUEDCQBmAgUCYUIFAmJmCQEBbgEJAKwCAgItcGFzc2VkIGR1cmF0aW9uIGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmFCAwkAZgIFAmJmBQJhQwkBAW4BCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwQCZW4JAGsDBQJlagUCYmYFAmFDBAJlbwkBAmJaAAQCZFYJAQJicAEFAmJxBAJkTwgJAQJkRQACXzIEAmVwCQECY0QBBQJhWAQCZXEJAP0HBAUCYlICEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhWAVieXRlcwkAzAgCBQJicQUDbmlsBQNuaWwDCQAAAgUCZXEFAmVxBAJlcgMFAmVsBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmVrCQBkAgUCYnEAAQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmoBBQJiTgUCZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJrAQUCZW0FAmJOBQNuaWwJAJQKAgkAzggCCQDNCAIJAM4IAgkAzggCBQJlcgkBAmN6BwUCYVgIBQJhTg10cmFuc2FjdGlvbklkBQJlagUCY2oFAmJmBQJlbgAACQECY20EBQJlagUCYmYAAQMFAmVsAAAAAQkBAmNnBwIEbG9jawUCYk4FAmVqBQJjagUCYmYFAmVuBQJhTgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZFYFAmRPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYngACQBkAgUCZW8FAmVuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmIBBQJhWAkAZAIFAmVwBQJlbgUDbmlsBQJlbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXMCAmFYAmV0BAJldQkBAmJhAgUCYVgFAmV0BAJldgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV1BQJhUQQCY2oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVIEAmV3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXUFAmFTBAJleAkAZAIFAmNqBQJldwQCYmgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVYEAmV5CQBpAgkAZQIFBmhlaWdodAUCY2oFAmFFBAJlegkAvAIDCQC2AgEFAmV5CQC5AgIJALYCAQkAaAIACAUCYUUFAWgJALYCAQUCZXcEAmVBAwkAZgIFBmhlaWdodAUCZXgFAmV2CQBlAgkAoAMBCQC8AgMJALYCAQUCZXYJALgCAgUBaAkAdgYJALYCAQAFAAEFAmV6BQFmBQFmBQRET1dOBQFoBQJiaAUCZUERAmFOAQtjb25zdHJ1Y3RvcgYCZUICZUMCYUECZUQCZUUCYUQEAmVGCQECYU0BBQJhTgMJAAACBQJlRgUCZUYJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJpAAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdwAJAQJhRwUFAmVDBQJhQQUCZUQFAmVFBQJhRAkAzAgCCQELU3RyaW5nRW50cnkCCQEBRgAFAmVCBQNuaWwJAQJjbQQAAAAAAAAAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTgEHbG9ja1JlZgMCYmYCZUcCZUgEAmVJCQECZWcCBQJhTgUCYmYEAmVKCAUCZUkCXzEEAmVuCAUCZUkCXzIEAmVLCQClCAEIBQJhTgZjYWxsZXIEAmVMAwMJAAACBQJlRwIABgkAAAIFAmVIAQAFBHVuaXQJAPwHBAUBQgIKY3JlYXRlUGFpcgkAzAgCBQFFCQDMCAIFAmVHCQDMCAIFAmVLCQDMCAIFAmVIBQNuaWwFA25pbAMJAAACBQJlTAUCZUwEAmVNCQD8BwQFAmFEAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFOBmNhbGxlcgkAzAgCBQJlbgUDbmlsBQNuaWwDCQAAAgUCZU0FAmVNCQCUCgIFAmVKBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFOAQRsb2NrAQJiZgQCZU4JAQJlZwIFAmFOBQJiZgQCZUoIBQJlTgJfMQQCZW4IBQJlTgJfMgQCZU0JAPwHBAUCYUQCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYU4GY2FsbGVyCQDMCAIFAmVuBQNuaWwFA25pbAMJAAACBQJlTQUCZU0JAJQKAgUCZUoFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU4BDGNsYWltV3hCb29zdAICYkYCYk4DCQECIT0CBQJiUQgFAmFOBmNhbGxlcgkBAW4BAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmVPCQECZFADBQJiRgUCYk4HBAJlUAgFAmVPAl8xBAJlZQgFAmVPAl8yBAJlZggFAmVPAl8zCQCUCgIFAmVlCQDMCAIFAmVQBQNuaWwCYU4BFGNsYWltV3hCb29zdFJFQURPTkxZAgJiRgJiTgQCZVEJAQJkUAMFAmJGBQJiTgYEAmVQCAUCZVECXzEEAmVlCAUCZVECXzIEAmVmCAUCZVECXzMJAJQKAgUDbmlsCQDMCAIFAmVQCQDMCAIFAmVmBQNuaWwCYU4BBnVubG9jawECZVIEAmFYCAUCYU4GY2FsbGVyBAJiTgkApQgBBQJhWAQCZXQDCQAAAgUCZVICAAUEdW5pdAkA2QQBBQJlUgQCZXUJAQJiYQIFAmFYBQJldAQCZXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVEEAmNqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXUFAmFSBAJldwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV1BQJhUwQCYmgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVYEAmJnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXUFAmFVBAJleQkAaQIJAGUCBQZoZWlnaHQFAmNqBQJhRQQCZUEJAQJlcwIFAmFYBQJldAQCZW4JAGsDBQJldgUCZXcFAmFDBAJlUwkAlwMBCQDMCAIJAGsDCQBoAgUCZXkFAmFFBQJlbgUCYUMJAMwIAgUCYmcFA25pbAQCZVQJAQF4AgkAZQIFAmJnBQJlUwIMZ3d4UmVtYWluaW5nBAJlVQkBAmNhAQUCYVgDCQBnAgAABQJldgkBAW4BAhFub3RoaW5nIHRvIHVubG9jawQCZW8JAQJiWgAEAmVwCQECY0QBBQJhWAQCZVYJAQF4AgkAZQIFAmVwBQJlUwIVdXNlckd3eEFtb3VudFRvdGFsTmV3AwkAZgIFAmVVBQJlVgkBAW4BCQCsAgICE2xvY2tlZCBnd3ggYW1vdW50OiAJAKQDAQUCZVUEAmJxCQENcGFyc2VJbnRWYWx1ZQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQECYmoBBQJiTgkBAWwBAhNpbnZhbGlkIHVzZXIgbnVtYmVyBAJlcQkA/QcEBQJiUgIRcmVmcmVzaFVzZXJSZXdhcmQJAMwIAggFAmFYBWJ5dGVzCQDMCAIFAmJxBQNuaWwFA25pbAMJAAACBQJlcQUCZXEJAM4IAgkAzQgCCQDNCAIJAM4IAgkBAmN6BwUCYVgFAmV0BQJldgUCY2oFAmV3BQJlVAkAZAIFAmJoBQJlQQkBAmNtBAkBAS0BBQJlQQAAAAAAAAkBAmNnBwIGdW5sb2NrBQJiTgUCZUEFAmNqBQJldwUCZVMFAmFOCQEOU2NyaXB0VHJhbnNmZXIDBQJhWAUCZUEFAmF6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYngACQEBeAIJAGUCBQJlbwUCZVMCCGd3eFRvdGFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmIBBQJhWAUCZVYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTgETZ3d4VXNlckluZm9SRUFET05MWQECYk4EAmFYCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk4JAQFsAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJnCQECY0QBBQJhWAkAlAoCBQNuaWwJAMwIAgUCYmcFA25pbAJhTgEXdXNlck1heER1cmF0aW9uUkVBRE9OTFkBAmJOCQCUCgIFA25pbAkAlAoCAgRsb2NrBQJhQwJhTgEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmJOAmVXBAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJOCQEBbAECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiZwkBAmNEAQUCYVgJAJQKAgUDbmlsBQJiZwJhTgEQZ2V0VXNlckd3eEFtb3VudAECYk4EAmFYCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk4JAQFsAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJnCQECY0QBBQJhWAkAlAoCBQNuaWwFAmJnAmFOARNnZXRHd3hUb3RhbFJFQURPTkxZAAkAlAoCBQNuaWwJAQJiWgACYU4BFW9uQm9vc3RFbWlzc2lvblVwZGF0ZQAEAmVGAwkAAAIIBQJhTgZjYWxsZXIFAmJQBgkBAmFNAQUCYU4DCQAAAgUCZUYFAmVGCQECZEUACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFOARJvblN0YWtlZFZvdGVVcGRhdGUDAmJGAmJOAmRxBAJlRgMJAAACCAUCYU4GY2FsbGVyBQJiUQYJAQJhTQEFAmFOAwkAAAIFAmVGBQJlRgQCZHQJAQJkcAMFAmJGBQJiTgUCZHEJAJQKAgUCZHQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU4BHWdldFZvdGluZ1Jlc3VsdFN0YWtlZFJFQURPTkxZAQJiRgkAlAoCBQNuaWwJAQJjVQEFAmJGAmFOASVnZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAQJiRgkAlAoCBQNuaWwJAQJjWQEFAmJGAmFOARxnZXRVc2VyVm90ZUZpbmFsaXplZFJFQURPTkxZAgJiRgJiTgkAlAoCBQNuaWwJAQJjTgIFAmJGBQJiTgJhTgEhZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAgJiRgJiTgkAlAoCBQNuaWwJAQJkaQIFAmJGBQJiTgECZVgBAmVZAAQCZVoEAmFJCQECYUsAAwkAAQIFAmFJAgpCeXRlVmVjdG9yBAJhUAUCYUkFAmFQAwkAAQIFAmFJAgRVbml0CAUCZVgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmVYCWJvZHlCeXRlcwkAkQMCCAUCZVgGcHJvb2ZzAAAFAmVaEnHHoA==", "height": 2714599, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AuGR23H1WV8mAjnRLoKH5dQnxjNH7SeF9ifWm75DfPFJ Next: 8V5e94f3BXehXoSGxsoV19bexL11apYUvkq9KWNTzFSQ Diff:
OldNewDifferences
800800 func unlock (eR) = {
801801 let aX = aN.caller
802802 let bN = toString(aX)
803- let aY = fromBase58String(eR)
804- let eu = ba(aX, if ((eR == ""))
803+ let et = if ((eR == ""))
805804 then unit
806- else aY)
805+ else fromBase58String(eR)
806+ let eu = ba(aX, et)
807807 let ev = parseIntValue(eu[aQ])
808808 let cj = parseIntValue(eu[aR])
809809 let ew = parseIntValue(eu[aS])
810810 let bh = parseIntValue(eu[aV])
811811 let bg = parseIntValue(eu[aU])
812812 let ey = ((height - cj) / aE)
813- let eA = es(aX, if ((eR == ""))
814- then unit
815- else aY)
813+ let eA = es(aX, et)
816814 let en = fraction(ev, ew, aC)
817815 let eS = min([fraction((ey * aE), en, aC), bg])
818816 let eT = x((bg - eS), "gwxRemaining")
829827 let bq = parseIntValue(valueOrErrorMessage(getString(bj(bN)), l("invalid user number")))
830828 let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes, bq], nil)
831829 if ((eq == eq))
832- then ((((cz(aX, aY, ev, cj, ew, eT, (bh + eA)) ++ cm(-(eA), 0, 0, 0)) :+ cg("unlock", bN, eA, cj, ew, eS, aN)) :+ ScriptTransfer(aX, eA, az)) ++ [IntegerEntry(bx(), x((eo - eS), "gwxTotal")), IntegerEntry(bb(aX), eV)])
830+ then ((((cz(aX, et, ev, cj, ew, eT, (bh + eA)) ++ cm(-(eA), 0, 0, 0)) :+ cg("unlock", bN, eA, cj, ew, eS, aN)) :+ ScriptTransfer(aX, eA, az)) ++ [IntegerEntry(bx(), x((eo - eS), "gwxTotal")), IntegerEntry(bb(aX), eV)])
833831 else throw("Strict value is not equal to itself.")
834832 }
835833 }
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 let e = "boosting.ride"
1313
1414 let f = 18
1515
1616 let g = 1000000000000000000
1717
1818 let h = toBigInt(g)
1919
2020 let i = [1, 3, 6, 12, 24, 48]
2121
2222 let j = 1440
2323
2424 let k = 43800
2525
2626 func l (m) = makeString([e, ": ", m], "")
2727
2828
2929 func n (m) = throw(l(m))
3030
3131
3232 func o (p,q) = valueOrErrorMessage(getString(p, q), l((("mandatory this." + q) + " is not defined")))
3333
3434
3535 func r (p,q) = valueOrElse(getInteger(p, q), 0)
3636
3737
3838 func s (p,q,t) = valueOrElse(getInteger(p, q), t)
3939
4040
4141 func u (p,q) = valueOrErrorMessage(getInteger(p, q), l((("mandatory this." + q) + " is not defined")))
4242
4343
4444 func v (w) = if ((0 > w))
4545 then -(w)
4646 else w
4747
4848
4949 func x (y,z) = if ((y >= 0))
5050 then y
5151 else n((valueOrElse(z, "value") + " should be positive"))
5252
5353
5454 func A () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5555
5656
5757 let B = addressFromStringValue(o(this, A()))
5858
5959 let C = makeString(["%s%s", "referral", "programName"], a)
6060
6161 let D = "wxlock"
6262
6363 let E = valueOrElse(getString(this, C), D)
6464
6565 func F () = "%s%s__config__factoryAddress"
6666
6767
6868 let G = 1
6969
7070 let H = 2
7171
7272 let I = 3
7373
7474 let J = 4
7575
7676 let K = 5
7777
7878 let L = 6
7979
8080 let M = 7
8181
8282 let N = 8
8383
8484 let O = 9
8585
8686 let P = 10
8787
8888 let Q = 11
8989
9090 func R () = "%s__factoryConfig"
9191
9292
9393 func S (T) = makeString(["%s%s%s", T, "mappings__lpAsset2PoolContract"], a)
9494
9595
9696 func U (V) = makeString(["%s%s", "poolWeight", V], a)
9797
9898
9999 func W (X,Y) = ((("%s%s__poolWeight__" + X) + "__") + toString(Y))
100100
101101
102102 func Z () = addressFromStringValue(o(this, F()))
103103
104104
105105 func aa (ab) = split(o(ab, R()), a)
106106
107107
108108 func ac (ad) = addressFromStringValue(ad[H])
109109
110110
111111 func ae (ad) = addressFromStringValue(ad[K])
112112
113113
114114 func af (ad) = addressFromStringValue(ad[G])
115115
116116
117117 func ag (ad) = addressFromStringValue(ad[P])
118118
119119
120120 func ah () = "%s__managerPublicKey"
121121
122122
123123 func ai () = "%s__managerVaultAddress"
124124
125125
126126 func aj () = "%s%s__ratePerBlock__current"
127127
128128
129129 func ak () = "%s%s__ratePerBlockMax__current"
130130
131131
132132 func al () = "%s%s__emission__startBlock"
133133
134134
135135 func am () = "%s%s__boostingV2__startBlock"
136136
137137
138138 func an () = "%s%s__boostingV2__integral"
139139
140140
141141 func ao () = "%s%s__emission__duration"
142142
143143
144144 func ap () = "%s%s__emission__endBlock"
145145
146146
147147 let aq = 1
148148
149149 let ar = 2
150150
151151 let as = 3
152152
153153 let at = 4
154154
155155 let au = 5
156156
157157 let av = 6
158158
159159 func aw () = "%s__config"
160160
161161
162162 func ax () = split(o(this, aw()), a)
163163
164164
165165 let ay = ax()
166166
167167 let az = fromBase58String(ay[aq])
168168
169169 let aA = valueOrErrorMessage(parseInt(ay[ar]), l("invalid min lock amount"))
170170
171171 let aB = valueOrErrorMessage(parseInt(ay[as]), l("invalid min lock duration"))
172172
173173 let aC = valueOrErrorMessage(parseInt(ay[at]), l("invalid max lock duration"))
174174
175175 let aD = valueOrErrorMessage(addressFromString(ay[au]), l("invalid math contract address"))
176176
177177 let aE = valueOrErrorMessage(parseInt(ay[av]), l("invalid blocks in period"))
178178
179179 func aF (az,aA,aB,aC,aD) = makeString(["%s%d%d%d%s", az, aA, aB, aC, aD], a)
180180
181181
182182 func aG (az,aA,aB,aC,aD) = aF(az, toString(aA), toString(aB), toString(aC), aD)
183183
184184
185185 func aH () = {
186186 let aI = getString(ai())
187187 if ($isInstanceOf(aI, "String"))
188188 then {
189189 let aJ = aI
190190 addressFromStringValue(aJ)
191191 }
192192 else this
193193 }
194194
195195
196196 func aK () = {
197197 let aL = aH()
198198 let aI = getString(aL, ah())
199199 if ($isInstanceOf(aI, "String"))
200200 then {
201201 let aJ = aI
202202 fromBase58String(aJ)
203203 }
204204 else if ($isInstanceOf(aI, "Unit"))
205205 then unit
206206 else throw("Match error")
207207 }
208208
209209
210210 func aM (aN) = {
211211 let aO = n("Permission denied")
212212 let aI = aK()
213213 if ($isInstanceOf(aI, "ByteVector"))
214214 then {
215215 let aP = aI
216216 if ((aN.callerPublicKey == aP))
217217 then true
218218 else aO
219219 }
220220 else if ($isInstanceOf(aI, "Unit"))
221221 then if ((aN.caller == this))
222222 then true
223223 else aO
224224 else throw("Match error")
225225 }
226226
227227
228228 let aQ = 1
229229
230230 let aR = 2
231231
232232 let aS = 3
233233
234234 let aT = 4
235235
236236 let aU = 5
237237
238238 let aV = 6
239239
240240 func aW (aX,aY) = makeString(["%s%s%s__lock", toString(aX), {
241241 let aI = aY
242242 if ($isInstanceOf(aI, "ByteVector"))
243243 then {
244244 let aZ = aI
245245 toBase58String(aZ)
246246 }
247247 else if ($isInstanceOf(aI, "Unit"))
248248 then "legacy"
249249 else throw("Match error")
250250 }], a)
251251
252252
253253 func ba (aX,aY) = split(o(this, aW(aX, aY)), a)
254254
255255
256256 func bb (aX) = makeString(["%s%s__gwxAmountTotal", toString(aX)], a)
257257
258258
259259 func bc (bd,be,bf,bg,bh) = makeString(["%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(lastBlock.timestamp), toString(bg), toString(bh)], a)
260260
261261
262262 func bi () = "%s__nextUserNum"
263263
264264
265265 func bj (aX) = makeString(["%s%s%s__mapping__user2num", aX], a)
266266
267267
268268 func bk (Y) = makeString(["%s%s%s__mapping__num2user", Y], a)
269269
270270
271271 func bl () = "%s%s__stats__activeTotalLocked"
272272
273273
274274 func bm () = "%s%s__stats__locksDurationSumInBlocks"
275275
276276
277277 func bn () = "%s%s__stats__locksCount"
278278
279279
280280 func bo () = "%s%s__stats__activeUsersCount"
281281
282282
283283 func bp (bq) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bq)], a)
284284
285285
286286 func br (bq,bs) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bq), bs], a)
287287
288288
289289 func bt (bq) = makeString(["%s%d__maxBoostInt", toString(bq)], a)
290290
291291
292292 func bu () = "%s%s__maxBoostInt__total"
293293
294294
295295 func bv (bq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(bq)], a)
296296
297297
298298 func bw (bq) = makeString(["%s%d__userBoostClaimed", toString(bq)], a)
299299
300300
301301 func bx () = "%s%s__gwx__total"
302302
303303
304304 func by (bz,bA,p,bB) = makeString(["%s%s%s%s%d", "vote", bz, bA, toString(p), toString(bB)], a)
305305
306306
307307 func bC (bB) = makeString(["%s%d", "startHeight", toString(bB)], a)
308308
309309
310310 func bD () = makeString(["%s", "currentEpochUi"], a)
311311
312312
313313 func bE (bF,bB) = makeString(["%s%s%d", "votingResultStaked", bF, toString(bB)], a)
314314
315315
316316 func bG (bF,bB) = makeString(["%s%s%d", "votingResultStakedIntegral", bF, toString(bB)], a)
317317
318318
319319 func bH (bF,bB) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bF, toString(bB)], a)
320320
321321
322322 func bI (bF,p,bB) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bF, toString(p), toString(bB)], a)
323323
324324
325325 func bJ (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegral", bF, toString(p), toString(bB)], a)
326326
327327
328328 func bK (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bF, toString(p), toString(bB)], a)
329329
330330
331331 func bL (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bF, toString(p), toString(bB)], a)
332332
333333
334334 func bM (bN,bF) = makeString(["%s%s%s", "staked", bN, bF], a)
335335
336336
337337 let bO = Z()
338338
339339 let ad = aa(bO)
340340
341341 let bP = ae(ad)
342342
343343 let bQ = af(ad)
344344
345345 let bR = ag(ad)
346346
347347 let bS = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), l("lp_staking_pools contract address is undefined"))), l("invalid lp_staking_pools contract address"))
348348
349349 let bT = makeString(["%s", "votingEmissionContract"], a)
350350
351351 let bU = addressFromStringValue(getStringValue(bO, bT))
352352
353353 let bV = makeString(["%s", "votingEmissionRateContract"], a)
354354
355355 let bW = {
356356 let bX = invoke(bP, "getBoostCoeffREADONLY", nil, nil)
357357 if ($isInstanceOf(bX, "Int"))
358358 then bX
359359 else throw(($getType(bX) + " couldn't be cast to Int"))
360360 }
361361
362362 func bY (aX) = {
363363 let aI = getString(this, bj(toString(aX)))
364364 if ($isInstanceOf(aI, "String"))
365365 then {
366366 let aJ = aI
367367 valueOrErrorMessage(parseInt(aJ), l("invalid user number"))
368368 }
369369 else if ($isInstanceOf(aI, "Unit"))
370370 then n("invalid user")
371371 else throw("Match error")
372372 }
373373
374374
375375 func bZ () = valueOrElse(getInteger(this, bx()), 0)
376376
377377
378378 func ca (aX) = {
379379 let cb = "getLockedGwxAmount"
380380 let cc = valueOrErrorMessage({
381381 let aI = getString(bU, bV)
382382 if ($isInstanceOf(aI, "Unit"))
383383 then unit
384384 else if ($isInstanceOf(aI, "String"))
385385 then {
386386 let aJ = aI
387387 addressFromString(aJ)
388388 }
389389 else throw("Match error")
390390 }, l("invalid voting emission rate address"))
391391 let cd = {
392392 let bX = invoke(bU, cb, [toString(aX)], nil)
393393 if ($isInstanceOf(bX, "Int"))
394394 then bX
395395 else throw(($getType(bX) + " couldn't be cast to Int"))
396396 }
397397 let ce = {
398398 let bX = invoke(cc, cb, [toString(aX)], nil)
399399 if ($isInstanceOf(bX, "Int"))
400400 then bX
401401 else throw(($getType(bX) + " couldn't be cast to Int"))
402402 }
403403 let cf = max([cd, ce])
404404 cf
405405 }
406406
407407
408408 func cg (ch,ci,bd,cj,bf,bg,aN) = {
409409 let ck = makeString(["%s%s%s%s__history", ch, ci, toBase58String(aN.transactionId)], a)
410410 let cl = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(bd), toString(cj), toString(bf), toString(bg)], a)
411411 StringEntry(ck, cl)
412412 }
413413
414414
415415 func cm (cn,co,cp,cq) = {
416416 let cr = bm()
417417 let cs = bn()
418418 let ct = bo()
419419 let cu = bl()
420420 let cv = r(this, cr)
421421 let cw = r(this, cs)
422422 let cx = r(this, ct)
423423 let cy = r(this, cu)
424424 [IntegerEntry(cr, (cv + co)), IntegerEntry(cs, (cw + cp)), IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cn))]
425425 }
426426
427427
428428 func cz (aX,aY,bd,be,bf,bg,bh) = [StringEntry(aW(aX, aY), bc(bd, be, bf, bg, bh))]
429429
430430
431431 func cA (aN,cB) = if ((size(aN.payments) > 1))
432432 then n("only one payment is allowed")
433433 else if ((size(aN.payments) == 0))
434434 then 0
435435 else {
436436 let cC = aN.payments[0]
437437 if ((value(cC.assetId) != cB))
438438 then n("invalid asset id in payment")
439439 else cC.amount
440440 }
441441
442442
443443 func cD (aX) = valueOrElse(getInteger(this, bb(aX)), 0)
444444
445445
446446 func cE () = {
447447 let cF = {
448448 let cG = value(getInteger(bU, bD()))
449449 let cH = (cG - 1)
450450 if ((0 > cH))
451451 then n("invalid epoch")
452452 else $Tuple2(cG, cH)
453453 }
454454 let cG = cF._1
455455 let cH = cF._2
456456 let cI = value(getInteger(bU, bC(cG)))
457457 $Tuple2(cH, cI)
458458 }
459459
460460
461461 func cJ (bF) = {
462462 let cK = 4
463463 let cL = 5
464464 let cM = {
465465 let bX = invoke(bO, "getPoolConfigByLpAssetIdREADONLY", [bF], nil)
466466 if ($isInstanceOf(bX, "List[Any]"))
467467 then bX
468468 else throw(($getType(bX) + " couldn't be cast to List[Any]"))
469469 }
470470 let bz = {
471471 let bX = cM[cK]
472472 if ($isInstanceOf(bX, "String"))
473473 then bX
474474 else throw(($getType(bX) + " couldn't be cast to String"))
475475 }
476476 let bA = {
477477 let bX = cM[cL]
478478 if ($isInstanceOf(bX, "String"))
479479 then bX
480480 else throw(($getType(bX) + " couldn't be cast to String"))
481481 }
482482 $Tuple2(bz, bA)
483483 }
484484
485485
486486 func cN (bF,bN) = {
487487 let aX = addressFromStringValue(bN)
488488 let cO = cE()
489489 let cH = cO._1
490490 let cI = cO._2
491491 let cP = cJ(bF)
492492 let bz = cP._1
493493 let bA = cP._2
494494 let cQ = by(bz, bA, aX, cH)
495495 let cR = valueOrElse(getInteger(bU, cQ), 0)
496496 cR
497497 }
498498
499499
500500 func cS (bF,bN) = {
501501 let cT = valueOrElse(getInteger(bQ, bM(bN, bF)), 0)
502502 let cR = cN(bF, bN)
503503 if ((cT == 0))
504504 then 0
505505 else cR
506506 }
507507
508508
509509 func cU (bF) = {
510510 let cV = cE()
511511 let cH = cV._1
512512 let cI = cV._2
513513 let cW = valueOrElse(getInteger(bU, bE(bF, cH)), 0)
514514 let cX = valueOrElse(getInteger(this, bE(bF, cH)), cW)
515515 cX
516516 }
517517
518518
519519 func cY (bF) = {
520520 let cZ = cE()
521521 let cH = cZ._1
522522 let cI = cZ._2
523523 let cX = cU(bF)
524524 let da = valueOrElse(getInteger(this, bG(bF, cH)), 0)
525525 let db = valueOrElse(getInteger(this, bH(bF, cH)), cI)
526526 let dc = (height - db)
527527 let dd = ((dc * cX) + da)
528528 dd
529529 }
530530
531531
532532 func de (bF,df) = {
533533 let dg = cE()
534534 let cH = dg._1
535535 let cI = dg._2
536536 let cX = cU(bF)
537537 let dh = (cX + df)
538538 let dd = cY(bF)
539539 [IntegerEntry(bE(bF, cH), dh), IntegerEntry(bH(bF, cH), height), IntegerEntry(bG(bF, cH), dd)]
540540 }
541541
542542
543543 func di (bF,bN) = {
544544 let dj = cE()
545545 let cH = dj._1
546546 let cI = dj._2
547547 let aX = addressFromStringValue(bN)
548548 let dk = cS(bF, bN)
549549 let dl = valueOrElse(getInteger(this, bJ(bF, aX, cH)), 0)
550550 let dm = valueOrElse(getInteger(this, bK(bF, aX, cH)), cI)
551551 let dn = (height - dm)
552552 let do = ((dn * dk) + dl)
553553 do
554554 }
555555
556556
557557 func dp (bF,bN,dq) = {
558558 let dr = cE()
559559 let cH = dr._1
560560 let cI = dr._2
561561 let aX = addressFromStringValue(bN)
562562 let ds = cN(bF, bN)
563563 let dt = if ((ds == 0))
564564 then nil
565565 else {
566566 let df = if (dq)
567567 then ds
568568 else -(ds)
569569 let du = de(bF, df)
570570 let do = di(bF, bN)
571571 let dv = [IntegerEntry(bK(bF, aX, cH), height), IntegerEntry(bJ(bF, aX, cH), do)]
572572 (du ++ dv)
573573 }
574574 dt
575575 }
576576
577577
578578 func dw (bF,bN) = {
579579 let dx = cE()
580580 let cH = dx._1
581581 let cI = dx._2
582582 let aX = addressFromStringValue(bN)
583583 let dy = bL(bF, aX, cH)
584584 let dz = valueOrElse(getInteger(this, dy), 0)
585585 let dA = bI(bF, aX, cH)
586586 let dB = valueOrElse(getInteger(this, dA), 0)
587587 let do = di(bF, bN)
588588 let dd = cY(bF)
589589 let dC = (do - dz)
590590 let dD = (dd - dB)
591591 $Tuple3([IntegerEntry(dy, do), IntegerEntry(dA, dd)], dC, dD)
592592 }
593593
594594
595595 func dE () = {
596596 let dF = u(bP, aj())
597597 let dG = getInteger(this, am())
598598 let dH = getInteger(this, an())
599599 let dI = u(bP, ap())
600600 let dJ = if ((height > dI))
601601 then dI
602602 else height
603603 let dK = {
604604 let aI = dG
605605 if ($isInstanceOf(aI, "Int"))
606606 then {
607607 let dL = aI
608608 max([(dJ - dL), 0])
609609 }
610610 else if ($isInstanceOf(aI, "Unit"))
611611 then 0
612612 else throw("Match error")
613613 }
614614 let dM = ((dF * (bW - 1)) / bW)
615615 let dN = valueOrElse(dH, 0)
616616 let dO = ((dM * dK) + dN)
617617 $Tuple2([IntegerEntry(an(), dO), IntegerEntry(am(), height)], dO)
618618 }
619619
620620
621621 func dP (bF,bN,dQ) = {
622622 let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
623623 let bq = bY(aX)
624624 if ((bq == bq))
625625 then {
626626 let dR = "empty"
627627 let dS = if ((bF != dR))
628628 then {
629629 let dT = valueOrErrorMessage(getString(bO, S(bF)), l(("unsupported lp asset " + bF)))
630630 getIntegerValue(bO, U(dT))
631631 }
632632 else if (dQ)
633633 then 0
634634 else n(("not readonly mode: unsupported lp asset " + bF))
635635 let dU = br(bq, bF)
636636 let dV = bp(bq)
637637 let dW = valueOrElse(getInteger(this, dU), r(this, dV))
638638 let dO = dE()._2
639639 let dX = (dO - dW)
640640 if ((0 > dX))
641641 then n("wrong calculations")
642642 else {
643643 let dY = dw(bF, bN)
644644 let dZ = dY._1
645645 let ea = dY._2
646646 let eb = dY._3
647647 let ec = fraction(dX, dS, d)
648648 let ed = if ((eb == 0))
649649 then 0
650650 else fraction(ec, ea, eb)
651651 let ee = ([IntegerEntry(dU, dO)] ++ dZ)
652652 let ef = makeString([toString(dW), toString(dX), toString(dS), toString(ea), toString(eb)], ":")
653653 $Tuple3(ed, ee, ef)
654654 }
655655 }
656656 else throw("Strict value is not equal to itself.")
657657 }
658658
659659
660660 func eg (aN,eh) = {
661661 let bf = (eh * k)
662662 let ei = toBase58String(az)
663663 if ((size(aN.payments) != 1))
664664 then n("invalid payment - exact one payment must be attached")
665665 else {
666666 let cC = aN.payments[0]
667667 let ej = cC.amount
668668 if ((az != value(cC.assetId)))
669669 then n((("invalid asset is in payment - " + ei) + " is expected"))
670670 else if (!(containsElement(i, eh)))
671671 then n("invalid duration")
672672 else {
673673 let ek = bi()
674674 let aX = aN.caller
675675 let bN = toString(aX)
676676 let el = isDefined(getString(bj(bN)))
677677 let em = if (el)
678678 then value(getString(bj(bN)))
679679 else toString(u(this, ek))
680680 let bq = parseIntValue(em)
681681 let cj = height
682682 if (if ((aA > ej))
683683 then (aX != bS)
684684 else false)
685685 then n(("amount is less then minLockAmount=" + toString(aA)))
686686 else if ((aB > bf))
687687 then n(("passed duration is less then minLockDuration=" + toString(aB)))
688688 else if ((bf > aC))
689689 then n(("passed duration is greater then maxLockDuration=" + toString(aC)))
690690 else {
691691 let en = fraction(ej, bf, aC)
692692 let eo = bZ()
693693 let dV = bp(bq)
694694 let dO = dE()._2
695695 let ep = cD(aX)
696696 let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes, bq], nil)
697697 if ((eq == eq))
698698 then {
699699 let er = if (el)
700700 then nil
701701 else [IntegerEntry(ek, (bq + 1)), StringEntry(bj(bN), em), StringEntry(bk(em), bN)]
702702 $Tuple2(((((er ++ cz(aX, aN.transactionId, ej, cj, bf, en, 0)) ++ cm(ej, bf, 1, if (el)
703703 then 0
704704 else 1)) :+ cg("lock", bN, ej, cj, bf, en, aN)) ++ [IntegerEntry(dV, dO), IntegerEntry(bx(), (eo + en)), IntegerEntry(bb(aX), (ep + en))]), en)
705705 }
706706 else throw("Strict value is not equal to itself.")
707707 }
708708 }
709709 }
710710 }
711711
712712
713713 func es (aX,et) = {
714714 let eu = ba(aX, et)
715715 let ev = parseIntValue(eu[aQ])
716716 let cj = parseIntValue(eu[aR])
717717 let ew = parseIntValue(eu[aS])
718718 let ex = (cj + ew)
719719 let bh = parseIntValue(eu[aV])
720720 let ey = ((height - cj) / aE)
721721 let ez = fraction(toBigInt(ey), (toBigInt((8 * aE)) * h), toBigInt(ew))
722722 let eA = if ((height > ex))
723723 then ev
724724 else (toInt(fraction(toBigInt(ev), (h - pow(toBigInt(5), 1, ez, f, f, DOWN)), h)) - bh)
725725 eA
726726 }
727727
728728
729729 @Callable(aN)
730730 func constructor (eB,eC,aA,eD,eE,aD) = {
731731 let eF = aM(aN)
732732 if ((eF == eF))
733733 then ([IntegerEntry(bi(), 0), StringEntry(aw(), aG(eC, aA, eD, eE, aD)), StringEntry(F(), eB)] ++ cm(0, 0, 0, 0))
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(aN)
740740 func lockRef (bf,eG,eH) = {
741741 let eI = eg(aN, bf)
742742 let eJ = eI._1
743743 let en = eI._2
744744 let eK = toString(aN.caller)
745745 let eL = if (if ((eG == ""))
746746 then true
747747 else (eH == base58''))
748748 then unit
749749 else invoke(B, "createPair", [E, eG, eK, eH], nil)
750750 if ((eL == eL))
751751 then {
752752 let eM = invoke(aD, "updateReferralActivity", [toString(aN.caller), en], nil)
753753 if ((eM == eM))
754754 then $Tuple2(eJ, unit)
755755 else throw("Strict value is not equal to itself.")
756756 }
757757 else throw("Strict value is not equal to itself.")
758758 }
759759
760760
761761
762762 @Callable(aN)
763763 func lock (bf) = {
764764 let eN = eg(aN, bf)
765765 let eJ = eN._1
766766 let en = eN._2
767767 let eM = invoke(aD, "updateReferralActivity", [toString(aN.caller), en], nil)
768768 if ((eM == eM))
769769 then $Tuple2(eJ, unit)
770770 else throw("Strict value is not equal to itself.")
771771 }
772772
773773
774774
775775 @Callable(aN)
776776 func claimWxBoost (bF,bN) = if ((bQ != aN.caller))
777777 then n("permissions denied")
778778 else {
779779 let eO = dP(bF, bN, false)
780780 let eP = eO._1
781781 let ee = eO._2
782782 let ef = eO._3
783783 $Tuple2(ee, [eP])
784784 }
785785
786786
787787
788788 @Callable(aN)
789789 func claimWxBoostREADONLY (bF,bN) = {
790790 let eQ = dP(bF, bN, true)
791791 let eP = eQ._1
792792 let ee = eQ._2
793793 let ef = eQ._3
794794 $Tuple2(nil, [eP, ef])
795795 }
796796
797797
798798
799799 @Callable(aN)
800800 func unlock (eR) = {
801801 let aX = aN.caller
802802 let bN = toString(aX)
803- let aY = fromBase58String(eR)
804- let eu = ba(aX, if ((eR == ""))
803+ let et = if ((eR == ""))
805804 then unit
806- else aY)
805+ else fromBase58String(eR)
806+ let eu = ba(aX, et)
807807 let ev = parseIntValue(eu[aQ])
808808 let cj = parseIntValue(eu[aR])
809809 let ew = parseIntValue(eu[aS])
810810 let bh = parseIntValue(eu[aV])
811811 let bg = parseIntValue(eu[aU])
812812 let ey = ((height - cj) / aE)
813- let eA = es(aX, if ((eR == ""))
814- then unit
815- else aY)
813+ let eA = es(aX, et)
816814 let en = fraction(ev, ew, aC)
817815 let eS = min([fraction((ey * aE), en, aC), bg])
818816 let eT = x((bg - eS), "gwxRemaining")
819817 let eU = ca(aX)
820818 if ((0 >= ev))
821819 then n("nothing to unlock")
822820 else {
823821 let eo = bZ()
824822 let ep = cD(aX)
825823 let eV = x((ep - eS), "userGwxAmountTotalNew")
826824 if ((eU > eV))
827825 then n(("locked gwx amount: " + toString(eU)))
828826 else {
829827 let bq = parseIntValue(valueOrErrorMessage(getString(bj(bN)), l("invalid user number")))
830828 let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes, bq], nil)
831829 if ((eq == eq))
832- then ((((cz(aX, aY, ev, cj, ew, eT, (bh + eA)) ++ cm(-(eA), 0, 0, 0)) :+ cg("unlock", bN, eA, cj, ew, eS, aN)) :+ ScriptTransfer(aX, eA, az)) ++ [IntegerEntry(bx(), x((eo - eS), "gwxTotal")), IntegerEntry(bb(aX), eV)])
830+ then ((((cz(aX, et, ev, cj, ew, eT, (bh + eA)) ++ cm(-(eA), 0, 0, 0)) :+ cg("unlock", bN, eA, cj, ew, eS, aN)) :+ ScriptTransfer(aX, eA, az)) ++ [IntegerEntry(bx(), x((eo - eS), "gwxTotal")), IntegerEntry(bb(aX), eV)])
833831 else throw("Strict value is not equal to itself.")
834832 }
835833 }
836834 }
837835
838836
839837
840838 @Callable(aN)
841839 func gwxUserInfoREADONLY (bN) = {
842840 let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
843841 let bg = cD(aX)
844842 $Tuple2(nil, [bg])
845843 }
846844
847845
848846
849847 @Callable(aN)
850848 func userMaxDurationREADONLY (bN) = $Tuple2(nil, $Tuple2("lock", aC))
851849
852850
853851
854852 @Callable(aN)
855853 func getUserGwxAmountAtHeightREADONLY (bN,eW) = {
856854 let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
857855 let bg = cD(aX)
858856 $Tuple2(nil, bg)
859857 }
860858
861859
862860
863861 @Callable(aN)
864862 func getUserGwxAmount (bN) = {
865863 let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
866864 let bg = cD(aX)
867865 $Tuple2(nil, bg)
868866 }
869867
870868
871869
872870 @Callable(aN)
873871 func getGwxTotalREADONLY () = $Tuple2(nil, bZ())
874872
875873
876874
877875 @Callable(aN)
878876 func onBoostEmissionUpdate () = {
879877 let eF = if ((aN.caller == bP))
880878 then true
881879 else aM(aN)
882880 if ((eF == eF))
883881 then dE()
884882 else throw("Strict value is not equal to itself.")
885883 }
886884
887885
888886
889887 @Callable(aN)
890888 func onStakedVoteUpdate (bF,bN,dq) = {
891889 let eF = if ((aN.caller == bQ))
892890 then true
893891 else aM(aN)
894892 if ((eF == eF))
895893 then {
896894 let dt = dp(bF, bN, dq)
897895 $Tuple2(dt, unit)
898896 }
899897 else throw("Strict value is not equal to itself.")
900898 }
901899
902900
903901
904902 @Callable(aN)
905903 func getVotingResultStakedREADONLY (bF) = $Tuple2(nil, cU(bF))
906904
907905
908906
909907 @Callable(aN)
910908 func getVotingResultStakedIntegralREADONLY (bF) = $Tuple2(nil, cY(bF))
911909
912910
913911
914912 @Callable(aN)
915913 func getUserVoteFinalizedREADONLY (bF,bN) = $Tuple2(nil, cN(bF, bN))
916914
917915
918916
919917 @Callable(aN)
920918 func getUserVoteStakedIntegralREADONLY (bF,bN) = $Tuple2(nil, di(bF, bN))
921919
922920
923921 @Verifier(eX)
924922 func eY () = {
925923 let eZ = {
926924 let aI = aK()
927925 if ($isInstanceOf(aI, "ByteVector"))
928926 then {
929927 let aP = aI
930928 aP
931929 }
932930 else if ($isInstanceOf(aI, "Unit"))
933931 then eX.senderPublicKey
934932 else throw("Match error")
935933 }
936934 sigVerify(eX.bodyBytes, eX.proofs[0], eZ)
937935 }
938936

github/deemru/w8io/169f3d6 
102.98 ms