tx · 2aqxbZWuHHMFndQpkSuvdwNXtU2oUhxgPx9M3XKQYnbL 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy: -0.02200000 Waves 2023.02.15 13:40 [2450613] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves
{ "type": 13, "id": "2aqxbZWuHHMFndQpkSuvdwNXtU2oUhxgPx9M3XKQYnbL", "fee": 2200000, "feeAssetId": null, "timestamp": 1676457648751, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "dFiaLhRNCB6SKejKvPL9nUArU7BYPArCnfRoN7MUUFXkq2NmvMouRZ3s29BqMTL3KowsuLvwsa7TdvmX564mm3v" ], "script": "base64:BgLNJAgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIECgIIARIAEgMKAQgSACIDU0VQIgZTQ0FMRTgiBU1VTFQ4Ig5QT09MV0VJR0hUTVVMVCIEc3RyZiIHYWRkcmVzcyIDa2V5IgNpb3oiA2lvZCIKZGVmYXVsdFZhbCIDaW9mIgNhYnMiA3ZhbCIDYWFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgJhaSIGdmFsSW50IhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZSIacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQiE3JlZmVycmFsUHJvZ3JhbU5hbWUiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCINa2V5RmFjdG9yeUNmZyIaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmciCmxwQXNzZXRTdHIiEGtleUZhY3RvcnlMcExpc3QiJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIhRrZXlGYWN0b3J5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkiC3Bvb2xBZGRyZXNzIgNudW0iGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbCIKcmVhZExwTGlzdCIUcmVhZEZhY3RvcnlDZmdPckZhaWwiB2ZhY3RvcnkiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siGGtleUJvb3N0aW5nVjJTdGFydEhlaWdodCIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIg1rZXlOZXh0UGVyaW9kIh9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0Ig1JZHhDZmdBc3NldElkIhNJZHhDZmdNaW5Mb2NrQW1vdW50IhVJZHhDZmdNaW5Mb2NrRHVyYXRpb24iFUlkeENmZ01heExvY2tEdXJhdGlvbiISSWR4Q2ZnTWF0aENvbnRyYWN0IglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIMbWF0aENvbnRyYWN0Ig1mb3JtYXRDb25maWdTIgdhc3NldElkIg1taW5Mb2NrQW1vdW50Ig9taW5Mb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIMZm9ybWF0Q29uZmlnIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayIOSWR4TG9ja1VzZXJOdW0iDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIg1JZHhMb2NrUGFyYW1LIg1JZHhMb2NrUGFyYW1CIhNrZXlMb2NrUGFyYW1zUmVjb3JkIgt1c2VyQWRkcmVzcyIacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwiF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTIgd1c2VyTnVtIgZhbW91bnQiBXN0YXJ0IghkdXJhdGlvbiIGcGFyYW1LIgZwYXJhbUIiEGxhc3RVcGRUaW1lc3RhbXAiCWd3eEFtb3VudCIWZm9ybWF0TG9ja1BhcmFtc1JlY29yZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50IhZrZXlMb2NrUGFyYW1TdGFydEJsb2NrIhRrZXlMb2NrUGFyYW1EdXJhdGlvbiINa2V5TG9ja1BhcmFtSyINa2V5TG9ja1BhcmFtQiIVa2V5TG9ja1BhcmFtQnlQZXJpb2RLIgZwZXJpb2QiFWtleUxvY2tQYXJhbUJ5UGVyaW9kQiIXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQiIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIhJrZXlTdGF0c0xvY2tzQ291bnQiEmtleVN0YXRzVXNlcnNDb3VudCIga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiImtleVVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiCWxwQXNzZXRJZCIXa2V5VXNlck1heEJvb3N0SU5URUdSQUwiGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTCIha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsIhNrZXlVc2VyQm9vc3RDbGFpbWVkIhFrZXlUb3RhbENhY2hlZEd3eCIba2V5VG90YWxDYWNoZWRHd3hDb3JyZWN0aXZlIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCIRZ3d4UmV3YXJkQ29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiCmJvb3N0Q29lZmYiAUAiEWdldFRvdGFsQ2FjaGVkR3d4Igdjb3JyZWN0IhFrZXlDdXJyZW50RXBvY2hVaSIOY3VycmVudEVwb2NoVWkiDmtleVRhcmdldEVwb2NoIhF0YXJnZXRFcG9jaE9wdGlvbiIRdG90YWxDYWNoZWRHd3hSYXciFWlzQ29ycmVjdGlvbkFjdGl2YXRlZCIKY29ycmVjdGl2ZSIMSGlzdG9yeUVudHJ5IgR0eXBlIgR1c2VyIglsb2NrU3RhcnQiAWsiAWIiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIgpTdGF0c0VudHJ5Ig50b3RhbExvY2tlZEluYyILZHVyYXRpb25JbmMiDGxvY2tDb3VudEluYyINdXNlcnNDb3VudEluYyIbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZIg1sb2Nrc0NvdW50S0VZIg11c2Vyc0NvdW50S0VZIg50b3RhbEFtb3VudEtFWSIYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIgpsb2Nrc0NvdW50Igp1c2Vyc0NvdW50Igt0b3RhbEFtb3VudCINY2FsY0d3eEFtb3VudCIEa1JhdyIEYlJhdyIBaCIFU0NBTEUiD0xvY2tQYXJhbXNFbnRyeSINdXNlckFtb3VudEtFWSINc3RhcnRCbG9ja0tFWSILZHVyYXRpb25LRVkiBGtLRVkiBGJLRVkiDGtCeVBlcmlvZEtFWSIMYkJ5UGVyaW9kS0VZIiJleHRyYWN0T3B0aW9uYWxQYXltZW50QW1vdW50T3JGYWlsIg9leHBlY3RlZEFzc2V0SWQiA3BtdCIZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodCIMdGFyZ2V0SGVpZ2h0IgVFTVBUWSISdXNlcjJOdW1NYXBwaW5nS0VZIg1nd3hBbW91bnRDYWxjIhRjYWxjQ3VycmVudEd3eEFtb3VudCIUaW50ZXJuYWxDbGFpbVd4Qm9vc3QiDGxwQXNzZXRJZFN0ciIOdXNlckFkZHJlc3NTdHIiCHJlYWRPbmx5IhF1c2VyUmVjb3JkT3JFbXB0eSIPdXNlclJlY29yZEFycmF5Igp1c2VyTnVtU3RyIghFTVBUWVNUUiIKcG9vbFdlaWdodCIOcG9vbEFkZHJlc3NTdHIiEnd4RW1pc3Npb25QZXJCbG9jayIVYm9vc3RpbmdWMlN0YXJ0SGVpZ2h0IgtlbWlzc2lvbkVuZCICZGgiInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIh11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbCIVYm9vc3RFbWlzc2lvbkludGVncmFsIhl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsIgN1ZGgiBnVMYXN0SCIXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkiGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWSIPdXNlck1heEJvb3N0SW50IhB0b3RhbE1heEJvb3N0SW50Ig0kdDAxNjc1MzE2ODkwIgh1c2VyVm90ZSIKdG90YWxWb3RlcyIhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZIh51c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciE3VzZXJCb29zdENsYWltZWRLRVkiEHVzZXJCb29zdENsYWltZWQiEnVzZXJCb29zdEF2YWlsYWJsZSIJZGF0YVN0YXRlIgVkZWJ1ZyILbG9ja0FjdGlvbnMiCGNmZ0FycmF5Igphc3NldElkU3RyIglwbXRBbW91bnQiDm5leHRVc2VyTnVtS0VZIg51c2VySXNFeGlzdGluZyIHY29lZmZYOCIOZ1d4QW1vdW50U3RhcnQiE2dXeFBhcmFtc1Jlc3VsdExpc3QiDWVtaXNzaW9uU3RhcnQiA2FyciIRZmFjdG9yeUFkZHJlc3NTdHIiDmxvY2tBc3NldElkU3RyIgttaW5EdXJhdGlvbiILbWF4RHVyYXRpb24iC2NoZWNrQ2FsbGVyIg9yZWZlcnJlckFkZHJlc3MiCXNpZ25hdHVyZSINJHQwMjI4NDIyMjkwNyIRbG9ja0FjdGlvbnNSZXN1bHQiD3JlZmVycmFsQWRkcmVzcyIGcmVmSW52IhF1cGRhdGVSZWZBY3Rpdml0eSINJHQwMjMzNjUyMzQzMCINZGVsdGFEdXJhdGlvbiIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIhFyZW1haW5pbmdEdXJhdGlvbiINdXNlckFtb3VudE5ldyIPbG9ja0R1cmF0aW9uTmV3Igxsb2NrU3RhcnROZXciC2N1cnJVc2VyR3d4Igdnd3hEaWZmIhd0b3RhbENhY2hlZEd3eENvcnJlY3RlZCISdXNlck1heEJvb3N0SW50TmV3IhhyZW1haW5pbmdVc2VyTWF4Qm9vc3RJbnQiE3VzZXJNYXhCb29zdEludERpZmYiDSR0MDI4NDExMjg1MTMiDSR0MDI4NjQ1Mjg3NDYiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5cgABYQICX18AAWIACAABYwCAwtcvAAFkBQFjAQFlAgFmAWcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFmBQFnCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFnAg8gaXMgbm90IGRlZmluZWQBAWgCAWYBZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFmBQFnAAABAWkDAWYBZwFqCQELdmFsdWVPckVsc2UCCQCaCAIFAWYFAWcFAWoBAWsCAWYBZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAWYFAWcJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWcCDyBpcyBub3QgZGVmaW5lZAEBbAEBbQMJAGYCAAAFAW0JAQEtAQUBbQUBbQEBbgEBbQQBbwUBbQMJAAECBQFvAglMaXN0W0FueV0EAXAFAW8FAXAJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXEBAW0EAW8FAW0DCQABAgUBbwIDSW50BAFyBQFvBQFyCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQFzAAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAF0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEBZQIFBHRoaXMJAQFzAAABdQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABdgIGd3hsb2NrAAF3CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAXUFAXYBAXgAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAF5AAEAAXoAAgABQQADAAFCAAQAAUMABQABRAAGAAFFAAcAAUYACAABRwAJAAFIAAoAAUkACwEBSgACESVzX19mYWN0b3J5Q29uZmlnAQFLAQFMCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAUwJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAU0AAhAlc19fbHBUb2tlbnNMaXN0AQFOAQFMCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAUwJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAU8BAVAJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBUAUDbmlsBQFhAQFRAgFSAVMJAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUBUgICX18JAKQDAQUBUwEBVAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFlAgUEdGhpcwkBAXgAAQFVAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFUAAkBAU0AAgAFAWEBAVYBAVcJALUJAgkBAWUCBQFXCQEBSgAFAWEBAVgBAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUBWQUBegEBWgEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQFDAQJhYQEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQF5AQJhYgEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQFIAQJhYwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhZAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECYWUAAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFmAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhZwACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhaAACHCVzJXNfX2Jvb3N0aW5nVjJfX3N0YXJ0QmxvY2sBAmFpAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uAQJhagACGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawECYWsAAg4lc19fbmV4dFBlcmlvZAECYWwAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AAJhbQABAAJhbgACAAJhbwADAAJhcAAEAAJhcQAFAQJhcgACCiVzX19jb25maWcBAmFzAAkAtQkCCQEBZQIFBHRoaXMJAQJhcgAFAWEAAmF0CQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIJAQJhcwAFAmFxAQJhdQUCYXYCYXcCYXgCYXkCYXQJALkJAgkAzAgCAgglcyVkJWQlZAkAzAgCBQJhdgkAzAgCBQJhdwkAzAgCBQJheAkAzAgCBQJheQkAzAgCBQJhdAUDbmlsBQFhAQJhegUCYXYCYXcCYXgCYXkCYXQJAQJhdQUFAmF2CQCkAwEFAmF3CQCkAwEFAmF4CQCkAwEFAmF5BQJhdAECYUEABAFvCQCiCAEJAQJhYwADCQABAgUBbwIGU3RyaW5nBAJhQgUBbwkA2QQBBQJhQgMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFDAAQBbwkAoggBCQECYWQAAwkAAQIFAW8CBlN0cmluZwQCYUIFAW8JANkEAQUCYUIDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhRAECYUUEAmFGCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAW8JAQJhQQADCQABAgUBbwIKQnl0ZVZlY3RvcgQCYUcFAW8DCQAAAggFAmFFD2NhbGxlclB1YmxpY0tleQUCYUcGBQJhRgMJAAECBQFvAgRVbml0AwkAAAIIBQJhRQZjYWxsZXIFBHRoaXMGBQJhRgkAAgECC01hdGNoIGVycm9yAAJhSAABAAJhSQACAAJhSgADAAJhSwAEAAJhTAAFAAJhTQAGAQJhTgECYU8JALkJAgkAzAgCAgolcyVzX19sb2NrCQDMCAIFAmFPBQNuaWwFAWEBAmFQAQJhTwkAtQkCCQEBZQIFBHRoaXMJAQJhTgEFAmFPBQFhAQJhUQgCYVICYVMCYVQCYVUCYVYCYVcCYVgCYVkJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIFAmFSCQDMCAIFAmFTCQDMCAIFAmFUCQDMCAIFAmFVCQDMCAIFAmFWCQDMCAIFAmFXCQDMCAIFAmFYCQDMCAIFAmFZBQNuaWwFAWEBAmFaBwJhUgJhUwJhVAJhVQJhVgJhVwJhWQkBAmFRCAUCYVIJAKQDAQUCYVMJAKQDAQUCYVQJAKQDAQUCYVUJAKQDAQUCYVYJAKQDAQUCYVcJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAKQDAQUCYVkBAmJhAAIPJXNfX25leHRVc2VyTnVtAQJiYgECYU8JALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX3VzZXIybnVtCQDMCAIFAmFPBQNuaWwFAWEBAmJjAQFTCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQFTBQNuaWwFAWEBAmJkAQJhUgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVIJAMwIAgIGYW1vdW50BQNuaWwFAWEBAmJlAQJhUgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVIJAMwIAgIFc3RhcnQFA25pbAUBYQECYmYBAmFSCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUgkAzAgCAghkdXJhdGlvbgUDbmlsBQFhAQJiZwECYVIJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFSCQDMCAICAWsFA25pbAUBYQECYmgBAmFSCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUgkAzAgCAgFiBQNuaWwFAWEBAmJpAgJhUgJiagkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFAmFSCQDMCAICAWsJAMwIAgUCYmoFA25pbAUBYQECYmsCAmFSAmJqCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVIJAMwIAgIBYgkAzAgCBQJiagUDbmlsBQFhAQJibAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAECYm0AAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQJibgACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50AQJibwACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50AQJicAECYVIJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCBQJhUgUDbmlsBQFhAQJicQICYVICYnIJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCBQJhUgkAzAgCBQJicgUDbmlsBQFhAQJicwECYVIJALkJAgkAzAgCAhElcyVkX19tYXhCb29zdEludAkAzAgCBQJhUgUDbmlsBQFhAQJidAACGCVzJXNfX21heEJvb3N0SW50X190b3RhbAECYnUBAmFSCQC5CQIJAMwIAgIkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQDMCAIFAmFSBQNuaWwFAWEBAmJ2AQJhUgkAuQkCCQDMCAICFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAMwIAgUCYVIFA25pbAUBYQECYncAAhYlcyVzX19nd3hDYWNoZWRfX3RvdGFsAQJieAACHCVzX19nd3hDYWNoZWRUb3RhbENvcnJlY3RpdmUAAmJ5CQEBVAAAAVkJAQFWAQUCYnkAAmJ6CQEBWgEFAVkAAmJBCQECYWEBBQFZAAJiQgkBAmFiAQUBWQACYkMJALkJAgkAzAgCAgIlcwkAzAgCAhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQNuaWwFAWEAAmJECQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQJieQUCYkMAAmJFCgACYkYJAPwHBAUCYnoCFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYkYCA0ludAUCYkYJAAIBCQCsAgIJAAMBBQJiRgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiRwECYkgEAmJJCQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQQCYkoJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmJEBQJiSQQCYksJALkJAgkAzAgCAgQlcyVzCQDMCAICKXRvdGFsQ2FjaGVkR3d4Q29ycmVjdGlvbl9fYWN0aXZhdGlvbkVwb2NoBQNuaWwFAWEEAmJMCQCaCAIFBHRoaXMFAmJLBAJiTQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYncAAAAEAmJOAwkBCWlzRGVmaW5lZAEFAmJMCQBnAgUCYkoJAQV2YWx1ZQEFAmJMBwQCYk8DAwUCYk4FAmJIBwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYngAAAAAAAkAlgMBCQDMCAIAAAkAzAgCCQBkAgUCYk0FAmJPBQNuaWwBAmJQCAJiUQJiUgJhUwJiUwJhVQJiVAJiVQJhRQQCYlYJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJiUQkAzAgCBQJiUgkAzAgCCQDYBAEIBQJhRQ10cmFuc2FjdGlvbklkBQNuaWwFAWEEAmJXCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJiUwkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJiVQUDbmlsBQFhCQELU3RyaW5nRW50cnkCBQJiVgUCYlcBAmJYBAJiWQJiWgJjYQJjYgQCY2MJAQJibQAEAmNkCQECYm4ABAJjZQkBAmJvAAQCY2YJAQJibAAEAmNnCQEBaAIFBHRoaXMFAmNjBAJjaAkBAWgCBQR0aGlzBQJjZAQCY2kJAQFoAgUEdGhpcwUCY2UEAmNqCQEBaAIFBHRoaXMFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYwkAZAIFAmNnBQJiWgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2QJAGQCBQJjaAUCY2EJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNlCQBkAgUCY2kFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjZgkAZAIFAmNqBQJiWQUDbmlsAQJjawMCY2wCY20CY24EAmNvAOgHCQBpAgkAZAIJAGgCBQJjbAUCY24FAmNtBQJjbwECY3AIAmFPAmFSAmFTAmFUAmFVAmJUAmJVAmJqBAJjcQkBAmJkAQUCYVIEAmNyCQECYmUBBQJhUgQCY3MJAQJiZgEFAmFSBAJjdAkBAmJnAQUCYVIEAmN1CQECYmgBBQJhUgQCY3YJAQJiaQIFAmFSBQJiagQCY3cJAQJiawIFAmFSBQJiagQCYVkJAQJjawMFAmJUBQJiVQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcQUCYVMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNyBQJhVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3MFAmFVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdAUCYlQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN1BQJiVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3YFAmJUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdwUCYlUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFOAQUCYU8JAQJhWgcFAmFSBQJhUwUCYVQFAmFVBQJiVAUCYlUFAmFZBQNuaWwBAmN4AgJhRQJjeQMJAGYCCQCQAwEIBQJhRQhwYXltZW50cwABCQACAQIbb25seSBvbmUgcGF5bWVudCBpcyBhbGxvd2VkAwkAAAIJAJADAQgFAmFFCHBheW1lbnRzAAAAAAQCY3oJAJEDAggFAmFFCHBheW1lbnRzAAADCQECIT0CCQEFdmFsdWUBCAUCY3oHYXNzZXRJZAUCY3kJAAIBAhtpbnZhbGlkIGFzc2V0IGlkIGluIHBheW1lbnQIBQJjegZhbW91bnQBAmNBAgJhTwJjQgQCY0MCBWVtcHR5BAJjRAkBAmJiAQUCYU8EAmFSCQELdmFsdWVPckVsc2UCCQCiCAEFAmNEBQJjQwQCYlQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmJnAQUCYVIAAAQCYlUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmJoAQUCYVIAAAQCY0UJAQJjawMFAmJUBQJiVQUCY0IEAmFZAwkAZgIAAAUCY0UAAAUCY0UFAmFZAQJjRgECYU8JAQJjQQIFAmFPBQZoZWlnaHQBAmNHAwJjSAJjSQJjSgQCY0MCBUVNUFRZBAJjSwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYU4BBQJjSQUCY0MDCQAAAgUCY0sFAmNDCQCVCgMAAAUDbmlsAhV1c2VyUmVjb3JkOjppczo6ZW1wdHkEAmNMCQC1CQIFAmNLBQFhBAJjTQkAkQMCBQJjTAUCYUgEAmNOAgVlbXB0eQQCY08DCQECIT0CBQJjSAUCY04EAmNQCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYnkJAQFLAQUCY0gJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJjSAkBEUBleHRyTmF0aXZlKDEwNTApAgUCYnkJAQFPAQUCY1ADBQJjSgAACQACAQkArAICAihub3QgcmVhZG9ubHkgbW9kZTogdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJjSAQCY1EJAQFrAgUCYnoJAQJhZQAEAmNSCQEBawIFAmJ6CQECYWgABAJjUwkBAWsCBQJiegkBAmFqAAQCY24DCQBmAgUGaGVpZ2h0BQJjUwUCY1MFBmhlaWdodAQCY1QJAJYDAQkAzAgCCQBlAgUCY24FAmNSCQDMCAIAAAUDbmlsBAJjVQkBAmJxAgUCY00FAmNIBAJjVgkBAmJwAQUCY00EAmNXCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmNVCQEBaAIFBHRoaXMFAmNWBAJjWAkAaQIJAGgCCQBoAgUCY1EFAmNUCQBlAgUCYkUAAQUCYkUEAmNZCQBlAgUCY1gFAmNXBAJjWgkAawMFAmNZBQJiRQkAaAIJAGUCBQJiRQABBQJjUQQCZGEJAGUCBQJjbgUCY1oDCQBmAgAABQJjWQkAAgECEndyb25nIGNhbGN1bGF0aW9ucwQCZGIJAQJicwEFAmNNBAJkYwkBAmJ0AAQCZGQJAQFoAgUEdGhpcwUCZGIEAmRlCQEBaAIFBHRoaXMFAmRjBAJkZgoAAmJGCQD8BwQFAmJEAhNnZXRWb3RlSW5mb1JFQURPTkxZCQDMCAIFAmNICQDMCAIFAmNJBQNuaWwFA25pbAMJAAECBQJiRgIKKEludCwgSW50KQUCYkYJAAIBCQCsAgIJAAMBBQJiRgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZGcIBQJkZgJfMQQCZGgIBQJkZgJfMgQCZGkJAQJidQEFAmNNBAJkagkBAWgCBQR0aGlzBQJkaQQCZGsJAGsDBQJjWQUCY08FAWQEAmRsAwkAAAIFAmRoAAAAAAkAawMFAmRrBQJkZwUCZGgEAmRtCQECYnYBBQJjTQQCZG4JAQFoAgUEdGhpcwUCZG0EAmRvCQBlAgUCZGwFAmRuBAJkcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY1UFAmNYBQNuaWwEAmRxCQC5CQIJAMwIAgkApAMBBQJjVwkAzAgCCQCkAwEFAmNZCQDMCAIJAKQDAQUCZG4JAMwIAgkApAMBBQJkbwkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQUCY24JAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGcJAMwIAgkApAMBBQJkaAUDbmlsAgE6CQCVCgMFAmRsBQJkcAUCZHEBAmRyAgJhRQJhVQQCZHMJAQJhcwAEAmR0CQCRAwIFAmRzBQJhbQQCYXYJANkEAQUCZHQEAmF3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHMFAmFuBAJheAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRzBQJhbwQCYXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkcwUCYXADCQECIT0CCQCQAwEIBQJhRQhwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY3oJAJEDAggFAmFFCHBheW1lbnRzAAAEAmR1CAUCY3oGYW1vdW50AwkBAiE9AgUCYXYJAQV2YWx1ZQEIBQJjegdhc3NldElkCQACAQkArAICCQCsAgICHmludmFsaWQgYXNzZXQgaXMgaW4gcGF5bWVudCAtIAUCZHQCDCBpcyBleHBlY3RlZAQCZHYJAQJiYQAEAmNJCQClCAEIBQJhRQZjYWxsZXIEAmR3CQEJaXNEZWZpbmVkAQkAoggBCQECYmIBBQJjSQQCY00DBQJkdwkBBXZhbHVlAQkAoggBCQECYmIBBQJjSQkApAMBCQEBawIFBHRoaXMFAmR2BAJhUgkBDXBhcnNlSW50VmFsdWUBBQJjTQQCYlMFBmhlaWdodAQCY3IJAQJiZQEFAmNNBAJjcwkBAmJmAQUCY00EAmNxCQECYmQBBQJjTQMJAGYCBQJhdwUCZHUJAAIBCQCsAgICImFtb3VudCBpcyBsZXNzIHRoZW4gbWluTG9ja0Ftb3VudD0JAKQDAQUCYXcDCQBmAgUCYXgFAmFVCQACAQkArAICAi1wYXNzZWQgZHVyYXRpb24gaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYXgDCQBmAgUCYVUFAmF5CQACAQkArAICAjBwYXNzZWQgZHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAKQDAQUCYXkDAwUCZHcJAGcCCQBkAgkBAWsCBQR0aGlzBQJjcgkBAWsCBQR0aGlzBQJjcwUCYlMHCQACAQI2dGhlcmUgaXMgYW4gYWN0aXZlIGxvY2sgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrAwkAZgIJAQFoAgUEdGhpcwUCY3EAAAkAAgEJAKwCAgI0dGhlcmUgYXJlIGxvY2tlZCBXWHMgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrIAUCY3EEAmR4CQBrAwUCYVUFAWMFAmF5BAJkeQkAawMFAmR1BQJkeAUBYwQCZHoJAQFuAQkA/AcEBQJhdAIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmR5CQDMCAIFAmJTCQDMCAIFAmFVBQNuaWwFA25pbAQCYlQJAQFxAQkAkQMCBQJkegAABAJiVQkBAXEBCQCRAwIFAmR6AAEEAmJqCQCkAwEJAQFxAQkAkQMCBQJkegACBAJjUQkBAWsCBQJiegkBAmFlAAQCZEEJAQFrAgUCYnoJAQJhZwAEAmNTCQEBawIFAmJ6CQECYWoABAJjbgMJAGYCBQZoZWlnaHQFAmNTBQJjUwUGaGVpZ2h0BAJjVAkAlgMBCQDMCAIJAGUCBQJjbgUCZEEJAMwIAgAABQNuaWwEAmNWCQECYnABBQJjTQQCY1gJAGkCCQBoAgkAaAIFAmNRBQJjVAACAAMEAmRiCQECYnMBBQJjTQQCZGMJAQJidAAEAmRkCQBpAgkAaAIFAmR5BQJhVQACBAJkZQkBAWgCBQR0aGlzBQJkYwQCYk0JAQJiRwEHBAJkQgMFAmR3BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmR2CQBkAgUCYVIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmIBBQJjSQUCY00JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJjAQUCY00FAmNJBQNuaWwJAJQKAgkAzggCCQDNCAIJAM4IAgkAzggCBQJkQgkBAmNwCAUCY0kFAmNNBQJkdQUCYlMFAmFVBQJiVAUCYlUFAmJqCQECYlgEBQJkdQUCYVUAAQMFAmR3AAAAAQkBAmJQCAIEbG9jawUCY0kFAmR1BQJiUwUCYVUFAmJUBQJiVQUCYUUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNWBQJjWAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ3AAkAZAIFAmJNBQJkeQUDbmlsBQJkeQwCYUUBC2NvbnN0cnVjdG9yBgJkQwJkRAJhdwJkRQJkRgJhdAQCZEcJAQJhRAEFAmFFAwkAAAIFAmRHBQJkRwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmEAAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAAkBAmF6BQUCZEQFAmF3BQJkRQUCZEYFAmF0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQF4AAUCZEMFA25pbAkBAmJYBAAAAAAAAAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFFAQdsb2NrUmVmAwJhVQJkSAJkSQQCZEoJAQJkcgIFAmFFBQJhVQQCZEsIBQJkSgJfMQQCZHkIBQJkSgJfMgQCZEwJAKUIAQgFAmFFBmNhbGxlcgQCZE0DAwkAAAIFAmRIAgAGCQAAAgUCZEkBAAUEdW5pdAkA/AcEBQF0AgpjcmVhdGVQYWlyCQDMCAIFAXcJAMwIAgUCZEgJAMwIAgUCZEwJAMwIAgUCZEkFA25pbAUDbmlsAwkAAAIFAmRNBQJkTQQCZE4JAPwHBAUCYXQCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYUUGY2FsbGVyCQDMCAIFAmR5BQNuaWwFA25pbAMJAAACBQJkTgUCZE4JAJQKAgUCZEsFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUUBBGxvY2sBAmFVBAJkTwkBAmRyAgUCYUUFAmFVBAJkSwgFAmRPAl8xBAJkeQgFAmRPAl8yBAJkTgkA/AcEBQJhdAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhRQZjYWxsZXIJAMwIAgUCZHkFA25pbAUDbmlsAwkAAAIFAmROBQJkTgkAlAoCBQJkSwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRQEMaW5jcmVhc2VMb2NrAQJkUAQCZHMJAQJhcwAEAmR0CQCRAwIFAmRzBQJhbQQCYXYJANkEAQUCZHQEAmF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHMFAmFvBAJheQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRzBQJhcAQCZHUJAQJjeAIFAmFFBQJhdgQCY0kJAKUIAQgFAmFFBmNhbGxlcgQCY0wJAQJhUAEFAmNJBAJjTQkAkQMCBQJjTAUCYUgEAmRRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0wFAmFJBAJiUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNMBQJhSgQCZFIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTAUCYUsEAmRTCQBkAgUCYlMFAmRSBAJkVAkAlgMBCQDMCAIJAGUCBQJkUwUGaGVpZ2h0CQDMCAIAAAUDbmlsBAJkVQkAZAIFAmRRBQJkdQQCZFYJAGQCBQJkVAUCZFADCQBmAgAABQJkUAkAAgECGmR1cmF0aW9uIGlzIGxlc3MgdGhlbiB6ZXJvAwkAZgIFAmF4BQJkVgkAAgEJAKwCAgItbG9ja0R1cmF0aW9uTmV3IGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmF4AwkAZgIFAmRWBQJheQkAAgEJAKwCAgJEZGVsdGFEdXJhdGlvbiArIGV4aXN0ZWRMb2NrRHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAKQDAQUCYXkEAmR4CQBrAwUCZFYFAWMFAmF5BAJkeQkAawMFAmRVBQJkeAUBYwQCZE4JAPwHBAUCYXQCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYUUGY2FsbGVyCQDMCAIFAmR5BQNuaWwFA25pbAMJAAACBQJkTgUCZE4EAmRXBQZoZWlnaHQEAmR6CQEBbgEJAPwHBAUCYXQCFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBQJkeQkAzAgCBQJkVwkAzAgCBQJkVgUDbmlsBQNuaWwEAmJUCQEBcQEJAJEDAgUCZHoAAAQCYlUJAQFxAQkAkQMCBQJkegABBAJiagkApAMBCQEBcQEJAJEDAgUCZHoAAgQCY1EJAQFrAgUCYnoJAQJhZQAEAmRBCQEBawIFAmJ6CQECYWcABAJjUwkBAWsCBQJiegkBAmFqAAQCY24DCQBmAgUGaGVpZ2h0BQJjUwUCY1MFBmhlaWdodAQCY1QJAJYDAQkAzAgCCQBlAgUCY24FAmRBCQDMCAIAAAUDbmlsBAJjVgkBAmJwAQUCY00EAmNXCQEBaAIFBHRoaXMFAmNWBAJjWAkAaQIJAGgCCQBoAgUCY1EFAmNUAAIAAwQCY1kJAGUCBQJjWAUCY1cDCQBmAgAABQJjWQkAAgECEndyb25nIGNhbGN1bGF0aW9ucwQCZGIJAQJicwEFAmNNBAJkYwkBAmJ0AAQCZGQJAQFoAgUEdGhpcwUCZGIEAmRlCQEBaAIFBHRoaXMFAmRjBAJkWAkBAmNGAQUCY0kEAmRZCQBlAgUCZHkFAmRYAwkAZgIAAAUCZFkJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQJkWQQCYk0JAQJiRwEHBAJkWgkBAmJHAQYEAmRpCQECYnUBBQJjTQQCZGoJAQFoAgUEdGhpcwUCZGkEAmRsCQBrAwUCY1kFAmRYBQJkWgQCZWEJAGkCCQBoAgUCZHkFAmRWAAIEAmViCQBpAgkAaAIFAmRYBQJkVAACBAJlYwkAZQIFAmVhBQJlYgkAzggCCQDNCAIJAM4IAgkBAmNwCAUCY0kFAmNNBQJkVQUCZFcFAmRWBQJiVAUCYlUFAmJqCQECYlgEBQJkdQUCZFAAAAAACQECYlAIAgRsb2NrBQJjSQUCZHUFAmJTBQJkVgUCYlQFAmJVBQJhRQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ3AAkAZAIFAmJNBQJkWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFFAQxjbGFpbVd4Qm9vc3QCAmNIAmNJAwkBAiE9AgUCYkEIBQJhRQZjYWxsZXIJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmVkCQECY0cDBQJjSAUCY0kHBAJkbwgFAmVkAl8xBAJkcAgFAmVkAl8yBAJkcQgFAmVkAl8zCQCUCgIFAmRwCQDMCAIFAmRvBQNuaWwCYUUBFGNsYWltV3hCb29zdFJFQURPTkxZAgJjSAJjSQQCZWUJAQJjRwMFAmNIBQJjSQYEAmRvCAUCZWUCXzEEAmRwCAUCZWUCXzIEAmRxCAUCZWUCXzMJAJQKAgUDbmlsCQDMCAIFAmRvCQDMCAIFAmRxBQNuaWwCYUUBBnVubG9jawECYU8EAmNMCQECYVABBQJhTwQCY00JAJEDAgUCY0wFAmFIBAJkUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNMBQJhSQQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTAUCYUoEAmRSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0wFAmFLBAJkUwkAZAIFAmJTBQJkUgQCZHMJAQJhcwAEAmF2CQDZBAEJAJEDAgUCZHMFAmFtAwkAZwIFAmRTBQZoZWlnaHQJAAIBCQCsAgIJAKwCAgIFd2FpdCAJAKQDAQUCZFMCCiB0byB1bmxvY2sDCQBnAgAABQJkUQkAAgECEW5vdGhpbmcgdG8gdW5sb2NrBAJiagkBC3ZhbHVlT3JFbHNlAgkAmggCBQJhdAkBAmFrAAAACQDNCAIJAM0IAgkAzggCCQECY3AIBQJhTwUCY00AAAUCYlMFAmRSAAAAAAkApAMBBQJiagkBAmJYBAkBAS0BBQJkUQAAAAAA////////////AQkBAmJQCAIGdW5sb2NrBQJhTwUCZFEFAmJTBQJkUgAAAAAFAmFFCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhTwUCZFEFAmF2AmFFARNnd3hVc2VySW5mb1JFQURPTkxZAQJhTwQCYVkJAQJjRgEFAmFPCQCUCgIFA25pbAkAzAgCBQJhWQUDbmlsAmFFASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYU8CY0IEAmFZCQECY0ECBQJhTwUCY0IJAJQKAgUDbmlsBQJhWQJhRQEZZ2V0VG90YWxDYWNoZWRHd3hSRUFET05MWQAJAJQKAgUDbmlsCQECYkcBBgJhRQEKc2V0TWFuYWdlcgECZWYEAmRHCQECYUQBBQJhRQMJAAACBQJkRwUCZEcEAmVnCQDZBAEFAmVmAwkAAAIFAmVnBQJlZwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJlZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFFAQ5jb25maXJtTWFuYWdlcgAEAmVoCQECYUMABAJlaQMJAQlpc0RlZmluZWQBBQJlaAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZWkFAmVpBAJlagMJAAACCAUCYUUPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlaAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZWoFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAJANgEAQkBBXZhbHVlAQUCZWgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFkAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlawECZWwABAJlbQQBbwkBAmFBAAMJAAECBQFvAgpCeXRlVmVjdG9yBAJhRwUBbwUCYUcDCQABAgUBbwIEVW5pdAgFAmVrD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJlawlib2R5Qnl0ZXMJAJEDAggFAmVrBnByb29mcwAABQJlbTU2Dr8=", "height": 2450613, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8Riu22NE2M5oWYCakjGFNKwJ31wB82n8CCfUQk4GJA66 Next: Exks2UkriPFqjRP5E8F3QS8vd8gYfCLqdJdYVVTQQwU1 Diff:
Old | New | Differences | |
---|---|---|---|
138 | 138 | func ag () = "%s%s__emission__startBlock" | |
139 | 139 | ||
140 | 140 | ||
141 | - | func ah () = "%s%s__ | |
141 | + | func ah () = "%s%s__boostingV2__startBlock" | |
142 | 142 | ||
143 | 143 | ||
144 | - | func ai () = "%s%s__emission__ | |
144 | + | func ai () = "%s%s__emission__duration" | |
145 | 145 | ||
146 | 146 | ||
147 | - | func aj () = "%s__ | |
147 | + | func aj () = "%s%s__emission__endBlock" | |
148 | 148 | ||
149 | 149 | ||
150 | - | func ak () = "%s | |
150 | + | func ak () = "%s__nextPeriod" | |
151 | 151 | ||
152 | 152 | ||
153 | - | let al = 1 | |
154 | - | ||
155 | - | let am = 2 | |
156 | - | ||
157 | - | let an = 3 | |
158 | - | ||
159 | - | let ao = 4 | |
160 | - | ||
161 | - | let ap = 5 | |
162 | - | ||
163 | - | func aq () = "%s__config" | |
153 | + | func al () = "%s%s__gwxRewardEmissionPart__startHeight" | |
164 | 154 | ||
165 | 155 | ||
166 | - | func ar () = split(e(this, aq()), a) | |
156 | + | let am = 1 | |
157 | + | ||
158 | + | let an = 2 | |
159 | + | ||
160 | + | let ao = 3 | |
161 | + | ||
162 | + | let ap = 4 | |
163 | + | ||
164 | + | let aq = 5 | |
165 | + | ||
166 | + | func ar () = "%s__config" | |
167 | 167 | ||
168 | 168 | ||
169 | - | let as = addressFromStringValue(ar()[ap]) | |
170 | - | ||
171 | - | func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a) | |
169 | + | func as () = split(e(this, ar()), a) | |
172 | 170 | ||
173 | 171 | ||
174 | - | func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as) | |
172 | + | let at = addressFromStringValue(as()[aq]) | |
173 | + | ||
174 | + | func au (av,aw,ax,ay,at) = makeString(["%s%d%d%d", av, aw, ax, ay, at], a) | |
175 | 175 | ||
176 | 176 | ||
177 | - | func az () = { | |
177 | + | func az (av,aw,ax,ay,at) = au(av, toString(aw), toString(ax), toString(ay), at) | |
178 | + | ||
179 | + | ||
180 | + | func aA () = { | |
178 | 181 | let o = getString(ac()) | |
179 | 182 | if ($isInstanceOf(o, "String")) | |
180 | 183 | then { | |
181 | - | let | |
182 | - | fromBase58String( | |
184 | + | let aB = o | |
185 | + | fromBase58String(aB) | |
183 | 186 | } | |
184 | 187 | else if ($isInstanceOf(o, "Unit")) | |
185 | 188 | then unit | |
187 | 190 | } | |
188 | 191 | ||
189 | 192 | ||
190 | - | func | |
193 | + | func aC () = { | |
191 | 194 | let o = getString(ad()) | |
192 | 195 | if ($isInstanceOf(o, "String")) | |
193 | 196 | then { | |
194 | - | let | |
195 | - | fromBase58String( | |
197 | + | let aB = o | |
198 | + | fromBase58String(aB) | |
196 | 199 | } | |
197 | 200 | else if ($isInstanceOf(o, "Unit")) | |
198 | 201 | then unit | |
200 | 203 | } | |
201 | 204 | ||
202 | 205 | ||
203 | - | func | |
204 | - | let | |
205 | - | let o = | |
206 | + | func aD (aE) = { | |
207 | + | let aF = throw("Permission denied") | |
208 | + | let o = aA() | |
206 | 209 | if ($isInstanceOf(o, "ByteVector")) | |
207 | 210 | then { | |
208 | - | let | |
209 | - | if (( | |
211 | + | let aG = o | |
212 | + | if ((aE.callerPublicKey == aG)) | |
210 | 213 | then true | |
211 | - | else | |
214 | + | else aF | |
212 | 215 | } | |
213 | 216 | else if ($isInstanceOf(o, "Unit")) | |
214 | - | then if (( | |
217 | + | then if ((aE.caller == this)) | |
215 | 218 | then true | |
216 | - | else | |
219 | + | else aF | |
217 | 220 | else throw("Match error") | |
218 | 221 | } | |
219 | 222 | ||
220 | 223 | ||
221 | - | let | |
224 | + | let aH = 1 | |
222 | 225 | ||
223 | - | let | |
226 | + | let aI = 2 | |
224 | 227 | ||
225 | - | let | |
228 | + | let aJ = 3 | |
226 | 229 | ||
227 | - | let | |
230 | + | let aK = 4 | |
228 | 231 | ||
229 | - | let | |
232 | + | let aL = 5 | |
230 | 233 | ||
231 | - | let | |
234 | + | let aM = 6 | |
232 | 235 | ||
233 | - | func | |
236 | + | func aN (aO) = makeString(["%s%s__lock", aO], a) | |
234 | 237 | ||
235 | 238 | ||
236 | - | func | |
239 | + | func aP (aO) = split(e(this, aN(aO)), a) | |
237 | 240 | ||
238 | 241 | ||
239 | - | func | |
242 | + | func aQ (aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d", aR, aS, aT, aU, aV, aW, aX, aY], a) | |
240 | 243 | ||
241 | 244 | ||
242 | - | func | |
245 | + | func aZ (aR,aS,aT,aU,aV,aW,aY) = aQ(aR, toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(lastBlock.timestamp), toString(aY)) | |
243 | 246 | ||
244 | 247 | ||
245 | - | func | |
248 | + | func ba () = "%s__nextUserNum" | |
246 | 249 | ||
247 | 250 | ||
248 | - | func | |
251 | + | func bb (aO) = makeString(["%s%s%s__mapping__user2num", aO], a) | |
249 | 252 | ||
250 | 253 | ||
251 | - | func | |
254 | + | func bc (S) = makeString(["%s%s%s__mapping__num2user", S], a) | |
252 | 255 | ||
253 | 256 | ||
254 | - | func | |
257 | + | func bd (aR) = makeString(["%s%d%s__paramByUserNum", aR, "amount"], a) | |
255 | 258 | ||
256 | 259 | ||
257 | - | func | |
260 | + | func be (aR) = makeString(["%s%d%s__paramByUserNum", aR, "start"], a) | |
258 | 261 | ||
259 | 262 | ||
260 | - | func | |
263 | + | func bf (aR) = makeString(["%s%d%s__paramByUserNum", aR, "duration"], a) | |
261 | 264 | ||
262 | 265 | ||
263 | - | func | |
266 | + | func bg (aR) = makeString(["%s%d%s__paramByUserNum", aR, "k"], a) | |
264 | 267 | ||
265 | 268 | ||
266 | - | func | |
269 | + | func bh (aR) = makeString(["%s%d%s__paramByUserNum", aR, "b"], a) | |
267 | 270 | ||
268 | 271 | ||
269 | - | func | |
272 | + | func bi (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "k", bj], a) | |
270 | 273 | ||
271 | 274 | ||
272 | - | func | |
275 | + | func bk (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "b", bj], a) | |
273 | 276 | ||
274 | 277 | ||
275 | - | func | |
278 | + | func bl () = "%s%s__stats__activeTotalLocked" | |
276 | 279 | ||
277 | 280 | ||
278 | - | func | |
281 | + | func bm () = "%s%s__stats__locksDurationSumInBlocks" | |
279 | 282 | ||
280 | 283 | ||
281 | - | func | |
284 | + | func bn () = "%s%s__stats__locksCount" | |
282 | 285 | ||
283 | 286 | ||
284 | - | func | |
287 | + | func bo () = "%s%s__stats__activeUsersCount" | |
285 | 288 | ||
286 | 289 | ||
287 | - | func | |
290 | + | func bp (aR) = makeString(["%s%d__userBoostEmissionLastIntV2", aR], a) | |
288 | 291 | ||
289 | 292 | ||
290 | - | func | |
293 | + | func bq (aR,br) = makeString(["%s%d__userBoostEmissionLastIntV2", aR, br], a) | |
291 | 294 | ||
292 | 295 | ||
293 | - | func | |
296 | + | func bs (aR) = makeString(["%s%d__maxBoostInt", aR], a) | |
294 | 297 | ||
295 | 298 | ||
296 | - | func | |
299 | + | func bt () = "%s%s__maxBoostInt__total" | |
297 | 300 | ||
298 | 301 | ||
299 | - | func | |
302 | + | func bu (aR) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aR], a) | |
300 | 303 | ||
301 | 304 | ||
302 | - | func | |
305 | + | func bv (aR) = makeString(["%s%d__userBoostClaimed", aR], a) | |
303 | 306 | ||
304 | 307 | ||
305 | - | func | |
308 | + | func bw () = "%s%s__gwxCached__total" | |
306 | 309 | ||
307 | 310 | ||
308 | - | func | |
311 | + | func bx () = "%s__gwxCachedTotalCorrective" | |
309 | 312 | ||
310 | 313 | ||
311 | - | let | |
314 | + | let by = T() | |
312 | 315 | ||
313 | - | let Y = V( | |
316 | + | let Y = V(by) | |
314 | 317 | ||
315 | - | let | |
318 | + | let bz = Z(Y) | |
316 | 319 | ||
317 | - | let | |
320 | + | let bA = aa(Y) | |
318 | 321 | ||
319 | - | let | |
322 | + | let bB = ab(Y) | |
320 | 323 | ||
321 | - | func bB (bC) = { | |
322 | - | let bD = makeString(["%s", "votingEmissionContract"], a) | |
323 | - | let bE = addressFromStringValue(getStringValue(bx, bD)) | |
324 | - | let bF = makeString(["%s", "currentEpochUi"], a) | |
325 | - | let bG = getIntegerValue(bE, bF) | |
326 | - | let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a) | |
327 | - | let bI = getInteger(this, bH) | |
328 | - | let bJ = valueOrElse(getInteger(this, bv()), 0) | |
329 | - | let bK = if (isDefined(bI)) | |
330 | - | then (bG >= value(bI)) | |
324 | + | let bC = makeString(["%s", "votingEmissionContract"], a) | |
325 | + | ||
326 | + | let bD = addressFromStringValue(getStringValue(by, bC)) | |
327 | + | ||
328 | + | let bE = { | |
329 | + | let bF = invoke(bz, "getBoostCoeffREADONLY", nil, nil) | |
330 | + | if ($isInstanceOf(bF, "Int")) | |
331 | + | then bF | |
332 | + | else throw(($getType(bF) + " couldn't be cast to Int")) | |
333 | + | } | |
334 | + | ||
335 | + | func bG (bH) = { | |
336 | + | let bI = makeString(["%s", "currentEpochUi"], a) | |
337 | + | let bJ = getIntegerValue(bD, bI) | |
338 | + | let bK = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a) | |
339 | + | let bL = getInteger(this, bK) | |
340 | + | let bM = valueOrElse(getInteger(this, bw()), 0) | |
341 | + | let bN = if (isDefined(bL)) | |
342 | + | then (bJ >= value(bL)) | |
331 | 343 | else false | |
332 | - | let | |
333 | - | then | |
344 | + | let bO = if (if (bN) | |
345 | + | then bH | |
334 | 346 | else false) | |
335 | - | then valueOrElse(getInteger(this, | |
347 | + | then valueOrElse(getInteger(this, bx()), 0) | |
336 | 348 | else 0 | |
337 | - | max([0, ( | |
349 | + | max([0, (bM + bO)]) | |
338 | 350 | } | |
339 | 351 | ||
340 | 352 | ||
341 | - | func | |
342 | - | let | |
343 | - | let | |
344 | - | StringEntry( | |
353 | + | func bP (bQ,bR,aS,bS,aU,bT,bU,aE) = { | |
354 | + | let bV = makeString(["%s%s%s%s__history", bQ, bR, toBase58String(aE.transactionId)], a) | |
355 | + | let bW = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aS), toString(bS), toString(aU), toString(bT), toString(bU)], a) | |
356 | + | StringEntry(bV, bW) | |
345 | 357 | } | |
346 | 358 | ||
347 | 359 | ||
348 | - | func bU (bV,bW,bX,bY) = { | |
349 | - | let bZ = bl() | |
350 | - | let ca = bm() | |
351 | - | let cb = bn() | |
352 | - | let cc = bk() | |
353 | - | let cd = h(this, bZ) | |
354 | - | let ce = h(this, ca) | |
355 | - | let cf = h(this, cb) | |
360 | + | func bX (bY,bZ,ca,cb) = { | |
361 | + | let cc = bm() | |
362 | + | let cd = bn() | |
363 | + | let ce = bo() | |
364 | + | let cf = bl() | |
356 | 365 | let cg = h(this, cc) | |
357 | - | [IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))] | |
366 | + | let ch = h(this, cd) | |
367 | + | let ci = h(this, ce) | |
368 | + | let cj = h(this, cf) | |
369 | + | [IntegerEntry(cc, (cg + bZ)), IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + bY))] | |
358 | 370 | } | |
359 | 371 | ||
360 | 372 | ||
361 | - | func | |
362 | - | let | |
363 | - | ((( | |
373 | + | func ck (cl,cm,cn) = { | |
374 | + | let co = 1000 | |
375 | + | (((cl * cn) + cm) / co) | |
364 | 376 | } | |
365 | 377 | ||
366 | 378 | ||
367 | - | func | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | [IntegerEntry( | |
379 | + | func cp (aO,aR,aS,aT,aU,bT,bU,bj) = { | |
380 | + | let cq = bd(aR) | |
381 | + | let cr = be(aR) | |
382 | + | let cs = bf(aR) | |
383 | + | let ct = bg(aR) | |
384 | + | let cu = bh(aR) | |
385 | + | let cv = bi(aR, bj) | |
386 | + | let cw = bk(aR, bj) | |
387 | + | let aY = ck(bT, bU, height) | |
388 | + | [IntegerEntry(cq, aS), IntegerEntry(cr, aT), IntegerEntry(cs, aU), IntegerEntry(ct, bT), IntegerEntry(cu, bU), IntegerEntry(cv, bT), IntegerEntry(cw, bU), StringEntry(aN(aO), aZ(aR, aS, aT, aU, bT, bU, aY))] | |
377 | 389 | } | |
378 | 390 | ||
379 | 391 | ||
380 | - | func | |
392 | + | func cx (aE,cy) = if ((size(aE.payments) > 1)) | |
381 | 393 | then throw("only one payment is allowed") | |
382 | - | else if ((size( | |
394 | + | else if ((size(aE.payments) == 0)) | |
383 | 395 | then 0 | |
384 | 396 | else { | |
385 | - | let | |
386 | - | if ((value( | |
397 | + | let cz = aE.payments[0] | |
398 | + | if ((value(cz.assetId) != cy)) | |
387 | 399 | then throw("invalid asset id in payment") | |
388 | - | else | |
400 | + | else cz.amount | |
389 | 401 | } | |
390 | 402 | ||
391 | 403 | ||
392 | - | func | |
393 | - | let | |
394 | - | let | |
395 | - | let | |
396 | - | let | |
397 | - | let | |
398 | - | let | |
399 | - | let | |
404 | + | func cA (aO,cB) = { | |
405 | + | let cC = "empty" | |
406 | + | let cD = bb(aO) | |
407 | + | let aR = valueOrElse(getString(cD), cC) | |
408 | + | let bT = valueOrElse(getInteger(bg(aR)), 0) | |
409 | + | let bU = valueOrElse(getInteger(bh(aR)), 0) | |
410 | + | let cE = ck(bT, bU, cB) | |
411 | + | let aY = if ((0 > cE)) | |
400 | 412 | then 0 | |
401 | - | else | |
402 | - | | |
413 | + | else cE | |
414 | + | aY | |
403 | 415 | } | |
404 | 416 | ||
405 | 417 | ||
406 | - | func | |
418 | + | func cF (aO) = cA(aO, height) | |
407 | 419 | ||
408 | 420 | ||
409 | - | func | |
410 | - | let | |
411 | - | let | |
412 | - | if (( | |
421 | + | func cG (cH,cI,cJ) = { | |
422 | + | let cC = "EMPTY" | |
423 | + | let cK = valueOrElse(getString(this, aN(cI)), cC) | |
424 | + | if ((cK == cC)) | |
413 | 425 | then $Tuple3(0, nil, "userRecord::is::empty") | |
414 | 426 | else { | |
415 | - | let cI = split(cH, a) | |
416 | - | let cJ = cI[aG] | |
417 | - | let cK = valueOrElse(getInteger(bA, ak()), 0) | |
418 | - | let cL = "empty" | |
419 | - | let cM = if ((cE != cL)) | |
427 | + | let cL = split(cK, a) | |
428 | + | let cM = cL[aH] | |
429 | + | let cN = "empty" | |
430 | + | let cO = if ((cH != cN)) | |
420 | 431 | then { | |
421 | - | let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE)) | |
422 | - | let cO = getIntegerValue(bx, O(cN)) | |
423 | - | let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO) | |
424 | - | $Tuple2(cP, cO) | |
432 | + | let cP = valueOrErrorMessage(getString(by, K(cH)), ("unsupported lp asset " + cH)) | |
433 | + | getIntegerValue(by, O(cP)) | |
425 | 434 | } | |
426 | - | else if (cG) | |
427 | - | then $Tuple2(0, 0) | |
428 | - | else throw(("not readonly mode: unsupported lp asset " + cE)) | |
429 | - | let cQ = cM._1 | |
430 | - | let cR = cM._2 | |
431 | - | let cS = k(by, ae()) | |
432 | - | let cT = k(by, ag()) | |
433 | - | let cU = k(by, ai()) | |
434 | - | let ck = if ((height > cU)) | |
435 | - | then cU | |
435 | + | else if (cJ) | |
436 | + | then 0 | |
437 | + | else throw(("not readonly mode: unsupported lp asset " + cH)) | |
438 | + | let cQ = k(bz, ae()) | |
439 | + | let cR = k(bz, ah()) | |
440 | + | let cS = k(bz, aj()) | |
441 | + | let cn = if ((height > cS)) | |
442 | + | then cS | |
436 | 443 | else height | |
437 | - | let cV = max([(ck - cT), 0]) | |
438 | - | let cW = bp(cJ, cE) | |
439 | - | let cX = bo(cJ) | |
440 | - | let cY = valueOrElse(getInteger(this, cW), h(this, cX)) | |
441 | - | let cZ = (((cS * cV) * 2) / 3) | |
442 | - | let da = (cZ - cY) | |
443 | - | let db = fraction(da, 3, (2 * cS)) | |
444 | - | let dc = (ck - db) | |
445 | - | let dd = max([(cK - dc), 0]) | |
446 | - | let de = ((ck - dc) - dd) | |
447 | - | if (if (if ((0 > dc)) | |
448 | - | then true | |
449 | - | else (0 > de)) | |
450 | - | then true | |
451 | - | else (l(((dd + de) - db)) >= 1)) | |
452 | - | then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de))) | |
453 | - | else if ((0 > da)) | |
454 | - | then throw("wrong calculations") | |
455 | - | else { | |
456 | - | let df = br(cJ) | |
457 | - | let dg = bs() | |
458 | - | let dh = h(this, df) | |
459 | - | let di = h(this, dg) | |
460 | - | let dj = bB(true) | |
461 | - | let dk = cC(cF) | |
462 | - | let dl = bt(cJ) | |
463 | - | let dm = h(this, dl) | |
464 | - | let dn = if ((db == 0)) | |
465 | - | then 0 | |
466 | - | else fraction(da, dd, db) | |
467 | - | let do = if ((db == 0)) | |
468 | - | then 0 | |
469 | - | else fraction(da, de, db) | |
470 | - | let dp = fraction(dn, cQ, d) | |
471 | - | let dq = fraction(do, cR, d) | |
472 | - | let dr = if ((dj == 0)) | |
473 | - | then 0 | |
474 | - | else fraction(dp, dk, dj) | |
475 | - | let ds = if ((dj == 0)) | |
476 | - | then 0 | |
477 | - | else fraction(dq, dk, dj) | |
478 | - | let dt = (dr + ds) | |
479 | - | let du = bu(cJ) | |
480 | - | let dv = h(this, du) | |
481 | - | let dw = (dt - dv) | |
482 | - | let dx = [IntegerEntry(cW, cZ)] | |
483 | - | let dy = makeString([toString(cY), toString(da), toString(dv), toString(dw), toString(cQ), toString(cR), toString(ck), toString(db), toString(dc), toString(dd), toString(de), toString(dk), toString(dj)], ":") | |
484 | - | $Tuple3(dt, dx, dy) | |
444 | + | let cT = max([(cn - cR), 0]) | |
445 | + | let cU = bq(cM, cH) | |
446 | + | let cV = bp(cM) | |
447 | + | let cW = valueOrElse(getInteger(this, cU), h(this, cV)) | |
448 | + | let cX = (((cQ * cT) * (bE - 1)) / bE) | |
449 | + | let cY = (cX - cW) | |
450 | + | let cZ = fraction(cY, bE, ((bE - 1) * cQ)) | |
451 | + | let da = (cn - cZ) | |
452 | + | if ((0 > cY)) | |
453 | + | then throw("wrong calculations") | |
454 | + | else { | |
455 | + | let db = bs(cM) | |
456 | + | let dc = bt() | |
457 | + | let dd = h(this, db) | |
458 | + | let de = h(this, dc) | |
459 | + | let df = { | |
460 | + | let bF = invoke(bD, "getVoteInfoREADONLY", [cH, cI], nil) | |
461 | + | if ($isInstanceOf(bF, "(Int, Int)")) | |
462 | + | then bF | |
463 | + | else throw(($getType(bF) + " couldn't be cast to (Int, Int)")) | |
485 | 464 | } | |
465 | + | let dg = df._1 | |
466 | + | let dh = df._2 | |
467 | + | let di = bu(cM) | |
468 | + | let dj = h(this, di) | |
469 | + | let dk = fraction(cY, cO, d) | |
470 | + | let dl = if ((dh == 0)) | |
471 | + | then 0 | |
472 | + | else fraction(dk, dg, dh) | |
473 | + | let dm = bv(cM) | |
474 | + | let dn = h(this, dm) | |
475 | + | let do = (dl - dn) | |
476 | + | let dp = [IntegerEntry(cU, cX)] | |
477 | + | let dq = makeString([toString(cW), toString(cY), toString(dn), toString(do), toString(cO), toString(cn), toString(cZ), toString(da), toString(dg), toString(dh)], ":") | |
478 | + | $Tuple3(dl, dp, dq) | |
479 | + | } | |
486 | 480 | } | |
487 | 481 | } | |
488 | 482 | ||
489 | 483 | ||
490 | - | func | |
491 | - | let | |
492 | - | let | |
493 | - | let | |
494 | - | let | |
495 | - | let | |
496 | - | let | |
497 | - | if ((size( | |
484 | + | func dr (aE,aU) = { | |
485 | + | let ds = as() | |
486 | + | let dt = ds[am] | |
487 | + | let av = fromBase58String(dt) | |
488 | + | let aw = parseIntValue(ds[an]) | |
489 | + | let ax = parseIntValue(ds[ao]) | |
490 | + | let ay = parseIntValue(ds[ap]) | |
491 | + | if ((size(aE.payments) != 1)) | |
498 | 492 | then throw("invalid payment - exact one payment must be attached") | |
499 | 493 | else { | |
500 | - | let | |
501 | - | let | |
502 | - | if (( | |
503 | - | then throw((("invalid asset is in payment - " + | |
494 | + | let cz = aE.payments[0] | |
495 | + | let du = cz.amount | |
496 | + | if ((av != value(cz.assetId))) | |
497 | + | then throw((("invalid asset is in payment - " + dt) + " is expected")) | |
504 | 498 | else { | |
505 | - | let | |
506 | - | let | |
507 | - | let | |
508 | - | let | |
509 | - | then value(getString( | |
510 | - | else toString(k(this, | |
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | let | |
516 | - | if (( | |
517 | - | then throw(("amount is less then minLockAmount=" + toString( | |
518 | - | else if (( | |
519 | - | then throw(("passed duration is less then minLockDuration=" + toString( | |
520 | - | else if (( | |
521 | - | then throw(("passed duration is greater then maxLockDuration=" + toString( | |
522 | - | else if (if ( | |
523 | - | then ((k(this, | |
499 | + | let dv = ba() | |
500 | + | let cI = toString(aE.caller) | |
501 | + | let dw = isDefined(getString(bb(cI))) | |
502 | + | let cM = if (dw) | |
503 | + | then value(getString(bb(cI))) | |
504 | + | else toString(k(this, dv)) | |
505 | + | let aR = parseIntValue(cM) | |
506 | + | let bS = height | |
507 | + | let cr = be(cM) | |
508 | + | let cs = bf(cM) | |
509 | + | let cq = bd(cM) | |
510 | + | if ((aw > du)) | |
511 | + | then throw(("amount is less then minLockAmount=" + toString(aw))) | |
512 | + | else if ((ax > aU)) | |
513 | + | then throw(("passed duration is less then minLockDuration=" + toString(ax))) | |
514 | + | else if ((aU > ay)) | |
515 | + | then throw(("passed duration is greater then maxLockDuration=" + toString(ay))) | |
516 | + | else if (if (dw) | |
517 | + | then ((k(this, cr) + k(this, cs)) >= bS) | |
524 | 518 | else false) | |
525 | 519 | then throw("there is an active lock - consider to use increaseLock") | |
526 | - | else if ((h(this, | |
527 | - | then throw(("there are locked WXs - consider to use increaseLock " + | |
520 | + | else if ((h(this, cq) > 0)) | |
521 | + | then throw(("there are locked WXs - consider to use increaseLock " + cq)) | |
528 | 522 | else { | |
529 | - | let | |
530 | - | let | |
531 | - | let | |
532 | - | let | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | then | |
523 | + | let dx = fraction(aU, c, ay) | |
524 | + | let dy = fraction(du, dx, c) | |
525 | + | let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, bS, aU], nil)) | |
526 | + | let bT = q(dz[0]) | |
527 | + | let bU = q(dz[1]) | |
528 | + | let bj = toString(q(dz[2])) | |
529 | + | let cQ = k(bz, ae()) | |
530 | + | let dA = k(bz, ag()) | |
531 | + | let cS = k(bz, aj()) | |
532 | + | let cn = if ((height > cS)) | |
533 | + | then cS | |
540 | 534 | else height | |
541 | - | let | |
542 | - | let | |
543 | - | let | |
544 | - | let | |
545 | - | let | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | let | |
535 | + | let cT = max([(cn - dA), 0]) | |
536 | + | let cV = bp(cM) | |
537 | + | let cX = (((cQ * cT) * 2) / 3) | |
538 | + | let db = bs(cM) | |
539 | + | let dc = bt() | |
540 | + | let dd = ((dy * aU) / 2) | |
541 | + | let de = h(this, dc) | |
542 | + | let bM = bG(false) | |
543 | + | let dB = if (dw) | |
550 | 544 | then nil | |
551 | - | else [IntegerEntry( | |
552 | - | $Tuple2((((( | |
545 | + | else [IntegerEntry(dv, (aR + 1)), StringEntry(bb(cI), cM), StringEntry(bc(cM), cI)] | |
546 | + | $Tuple2(((((dB ++ cp(cI, cM, du, bS, aU, bT, bU, bj)) ++ bX(du, aU, 1, if (dw) | |
553 | 547 | then 0 | |
554 | - | else 1)) :+ | |
548 | + | else 1)) :+ bP("lock", cI, du, bS, aU, bT, bU, aE)) ++ [IntegerEntry(cV, cX), IntegerEntry(bw(), (bM + dy))]), dy) | |
555 | 549 | } | |
556 | 550 | } | |
557 | 551 | } | |
558 | 552 | } | |
559 | 553 | ||
560 | 554 | ||
561 | - | @Callable( | |
562 | - | func constructor ( | |
563 | - | let | |
564 | - | if (( | |
565 | - | then ([IntegerEntry( | |
555 | + | @Callable(aE) | |
556 | + | func constructor (dC,dD,aw,dE,dF,at) = { | |
557 | + | let dG = aD(aE) | |
558 | + | if ((dG == dG)) | |
559 | + | then ([IntegerEntry(ba(), 0), StringEntry(ar(), az(dD, aw, dE, dF, at)), StringEntry(x(), dC)] ++ bX(0, 0, 0, 0)) | |
566 | 560 | else throw("Strict value is not equal to itself.") | |
567 | 561 | } | |
568 | 562 | ||
569 | 563 | ||
570 | 564 | ||
571 | - | @Callable( | |
572 | - | func lockRef ( | |
573 | - | let | |
574 | - | let | |
575 | - | let | |
576 | - | let | |
577 | - | let | |
565 | + | @Callable(aE) | |
566 | + | func lockRef (aU,dH,dI) = { | |
567 | + | let dJ = dr(aE, aU) | |
568 | + | let dK = dJ._1 | |
569 | + | let dy = dJ._2 | |
570 | + | let dL = toString(aE.caller) | |
571 | + | let dM = if (if ((dH == "")) | |
578 | 572 | then true | |
579 | - | else ( | |
573 | + | else (dI == base58'')) | |
580 | 574 | then unit | |
581 | - | else invoke(t, "createPair", [w, | |
582 | - | if (( | |
575 | + | else invoke(t, "createPair", [w, dH, dL, dI], nil) | |
576 | + | if ((dM == dM)) | |
583 | 577 | then { | |
584 | - | let | |
585 | - | if (( | |
586 | - | then $Tuple2( | |
578 | + | let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil) | |
579 | + | if ((dN == dN)) | |
580 | + | then $Tuple2(dK, unit) | |
587 | 581 | else throw("Strict value is not equal to itself.") | |
588 | 582 | } | |
589 | 583 | else throw("Strict value is not equal to itself.") | |
591 | 585 | ||
592 | 586 | ||
593 | 587 | ||
594 | - | @Callable( | |
595 | - | func lock ( | |
596 | - | let | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | if (( | |
601 | - | then $Tuple2( | |
588 | + | @Callable(aE) | |
589 | + | func lock (aU) = { | |
590 | + | let dO = dr(aE, aU) | |
591 | + | let dK = dO._1 | |
592 | + | let dy = dO._2 | |
593 | + | let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil) | |
594 | + | if ((dN == dN)) | |
595 | + | then $Tuple2(dK, unit) | |
602 | 596 | else throw("Strict value is not equal to itself.") | |
603 | 597 | } | |
604 | 598 | ||
605 | 599 | ||
606 | 600 | ||
607 | - | @Callable( | |
608 | - | func increaseLock ( | |
609 | - | let | |
610 | - | let | |
611 | - | let | |
612 | - | let | |
613 | - | let | |
614 | - | let | |
615 | - | let | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
622 | - | let | |
623 | - | let | |
624 | - | let | |
625 | - | if ((0 > | |
601 | + | @Callable(aE) | |
602 | + | func increaseLock (dP) = { | |
603 | + | let ds = as() | |
604 | + | let dt = ds[am] | |
605 | + | let av = fromBase58String(dt) | |
606 | + | let ax = parseIntValue(ds[ao]) | |
607 | + | let ay = parseIntValue(ds[ap]) | |
608 | + | let du = cx(aE, av) | |
609 | + | let cI = toString(aE.caller) | |
610 | + | let cL = aP(cI) | |
611 | + | let cM = cL[aH] | |
612 | + | let dQ = parseIntValue(cL[aI]) | |
613 | + | let bS = parseIntValue(cL[aJ]) | |
614 | + | let dR = parseIntValue(cL[aK]) | |
615 | + | let dS = (bS + dR) | |
616 | + | let dT = max([(dS - height), 0]) | |
617 | + | let dU = (dQ + du) | |
618 | + | let dV = (dT + dP) | |
619 | + | if ((0 > dP)) | |
626 | 620 | then throw("duration is less then zero") | |
627 | - | else if (( | |
628 | - | then throw(("lockDurationNew is less then minLockDuration=" + toString( | |
629 | - | else if (( | |
630 | - | then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString( | |
621 | + | else if ((ax > dV)) | |
622 | + | then throw(("lockDurationNew is less then minLockDuration=" + toString(ax))) | |
623 | + | else if ((dV > ay)) | |
624 | + | then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ay))) | |
631 | 625 | else { | |
632 | - | let | |
633 | - | let | |
634 | - | let | |
635 | - | if (( | |
626 | + | let dx = fraction(dV, c, ay) | |
627 | + | let dy = fraction(dU, dx, c) | |
628 | + | let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil) | |
629 | + | if ((dN == dN)) | |
636 | 630 | then { | |
637 | - | let | |
638 | - | let | |
639 | - | let | |
640 | - | let | |
641 | - | let | |
642 | - | let | |
643 | - | let | |
644 | - | let | |
645 | - | let | |
646 | - | then | |
631 | + | let dW = height | |
632 | + | let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, dW, dV], nil)) | |
633 | + | let bT = q(dz[0]) | |
634 | + | let bU = q(dz[1]) | |
635 | + | let bj = toString(q(dz[2])) | |
636 | + | let cQ = k(bz, ae()) | |
637 | + | let dA = k(bz, ag()) | |
638 | + | let cS = k(bz, aj()) | |
639 | + | let cn = if ((height > cS)) | |
640 | + | then cS | |
647 | 641 | else height | |
648 | - | let | |
649 | - | let | |
650 | - | let | |
651 | - | let | |
652 | - | let | |
653 | - | if ((0 > | |
642 | + | let cT = max([(cn - dA), 0]) | |
643 | + | let cV = bp(cM) | |
644 | + | let cW = h(this, cV) | |
645 | + | let cX = (((cQ * cT) * 2) / 3) | |
646 | + | let cY = (cX - cW) | |
647 | + | if ((0 > cY)) | |
654 | 648 | then throw("wrong calculations") | |
655 | 649 | else { | |
656 | - | let | |
657 | - | let | |
658 | - | let | |
659 | - | let | |
660 | - | let | |
661 | - | let | |
662 | - | if ((0 > | |
663 | - | then throw(("gwxDiff is less then 0: " + toString( | |
650 | + | let db = bs(cM) | |
651 | + | let dc = bt() | |
652 | + | let dd = h(this, db) | |
653 | + | let de = h(this, dc) | |
654 | + | let dX = cF(cI) | |
655 | + | let dY = (dy - dX) | |
656 | + | if ((0 > dY)) | |
657 | + | then throw(("gwxDiff is less then 0: " + toString(dY))) | |
664 | 658 | else { | |
665 | - | let | |
666 | - | let | |
667 | - | let | |
668 | - | let | |
669 | - | let | |
670 | - | let | |
671 | - | let | |
672 | - | let | |
673 | - | ((( | |
659 | + | let bM = bG(false) | |
660 | + | let dZ = bG(true) | |
661 | + | let di = bu(cM) | |
662 | + | let dj = h(this, di) | |
663 | + | let dl = fraction(cY, dX, dZ) | |
664 | + | let ea = ((dy * dV) / 2) | |
665 | + | let eb = ((dX * dT) / 2) | |
666 | + | let ec = (ea - eb) | |
667 | + | (((cp(cI, cM, dU, dW, dV, bT, bU, bj) ++ bX(du, dP, 0, 0)) :+ bP("lock", cI, du, bS, dV, bT, bU, aE)) ++ [IntegerEntry(bw(), (bM + dY))]) | |
674 | 668 | } | |
675 | 669 | } | |
676 | 670 | } | |
680 | 674 | ||
681 | 675 | ||
682 | 676 | ||
683 | - | @Callable( | |
684 | - | func claimWxBoost ( | |
677 | + | @Callable(aE) | |
678 | + | func claimWxBoost (cH,cI) = if ((bA != aE.caller)) | |
685 | 679 | then throw("permissions denied") | |
686 | 680 | else { | |
687 | - | let | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | $Tuple2( | |
681 | + | let ed = cG(cH, cI, false) | |
682 | + | let do = ed._1 | |
683 | + | let dp = ed._2 | |
684 | + | let dq = ed._3 | |
685 | + | $Tuple2(dp, [do]) | |
692 | 686 | } | |
693 | 687 | ||
694 | 688 | ||
695 | 689 | ||
696 | - | @Callable( | |
697 | - | func claimWxBoostREADONLY ( | |
698 | - | let | |
699 | - | let | |
700 | - | let | |
701 | - | let | |
702 | - | $Tuple2(nil, [ | |
690 | + | @Callable(aE) | |
691 | + | func claimWxBoostREADONLY (cH,cI) = { | |
692 | + | let ee = cG(cH, cI, true) | |
693 | + | let do = ee._1 | |
694 | + | let dp = ee._2 | |
695 | + | let dq = ee._3 | |
696 | + | $Tuple2(nil, [do, dq]) | |
703 | 697 | } | |
704 | 698 | ||
705 | 699 | ||
706 | 700 | ||
707 | - | @Callable( | |
708 | - | func unlock ( | |
709 | - | let | |
710 | - | let | |
711 | - | let | |
712 | - | let | |
713 | - | let | |
714 | - | let | |
715 | - | let | |
716 | - | let | |
717 | - | if (( | |
718 | - | then throw((("wait " + toString( | |
719 | - | else if ((0 >= | |
701 | + | @Callable(aE) | |
702 | + | func unlock (aO) = { | |
703 | + | let cL = aP(aO) | |
704 | + | let cM = cL[aH] | |
705 | + | let dQ = parseIntValue(cL[aI]) | |
706 | + | let bS = parseIntValue(cL[aJ]) | |
707 | + | let dR = parseIntValue(cL[aK]) | |
708 | + | let dS = (bS + dR) | |
709 | + | let ds = as() | |
710 | + | let av = fromBase58String(ds[am]) | |
711 | + | if ((dS >= height)) | |
712 | + | then throw((("wait " + toString(dS)) + " to unlock")) | |
713 | + | else if ((0 >= dQ)) | |
720 | 714 | then throw("nothing to unlock") | |
721 | 715 | else { | |
722 | - | let | |
723 | - | ((( | |
716 | + | let bj = valueOrElse(getInteger(at, ak()), 0) | |
717 | + | (((cp(aO, cM, 0, bS, dR, 0, 0, toString(bj)) ++ bX(-(dQ), 0, 0, -1)) :+ bP("unlock", aO, dQ, bS, dR, 0, 0, aE)) :+ ScriptTransfer(addressFromStringValue(aO), dQ, av)) | |
724 | 718 | } | |
725 | 719 | } | |
726 | 720 | ||
727 | 721 | ||
728 | 722 | ||
729 | - | @Callable( | |
730 | - | func gwxUserInfoREADONLY ( | |
731 | - | let | |
732 | - | $Tuple2(nil, [ | |
723 | + | @Callable(aE) | |
724 | + | func gwxUserInfoREADONLY (aO) = { | |
725 | + | let aY = cF(aO) | |
726 | + | $Tuple2(nil, [aY]) | |
733 | 727 | } | |
734 | 728 | ||
735 | 729 | ||
736 | 730 | ||
737 | - | @Callable( | |
738 | - | func getUserGwxAmountAtHeightREADONLY ( | |
739 | - | let | |
740 | - | $Tuple2(nil, | |
731 | + | @Callable(aE) | |
732 | + | func getUserGwxAmountAtHeightREADONLY (aO,cB) = { | |
733 | + | let aY = cA(aO, cB) | |
734 | + | $Tuple2(nil, aY) | |
741 | 735 | } | |
742 | 736 | ||
743 | 737 | ||
744 | 738 | ||
745 | - | @Callable( | |
746 | - | func getTotalCachedGwxREADONLY () = $Tuple2(nil, | |
739 | + | @Callable(aE) | |
740 | + | func getTotalCachedGwxREADONLY () = $Tuple2(nil, bG(true)) | |
747 | 741 | ||
748 | 742 | ||
749 | 743 | ||
750 | - | @Callable( | |
751 | - | func setManager ( | |
752 | - | let | |
753 | - | if (( | |
744 | + | @Callable(aE) | |
745 | + | func setManager (ef) = { | |
746 | + | let dG = aD(aE) | |
747 | + | if ((dG == dG)) | |
754 | 748 | then { | |
755 | - | let | |
756 | - | if (( | |
757 | - | then [StringEntry(ad(), | |
749 | + | let eg = fromBase58String(ef) | |
750 | + | if ((eg == eg)) | |
751 | + | then [StringEntry(ad(), ef)] | |
758 | 752 | else throw("Strict value is not equal to itself.") | |
759 | 753 | } | |
760 | 754 | else throw("Strict value is not equal to itself.") | |
762 | 756 | ||
763 | 757 | ||
764 | 758 | ||
765 | - | @Callable( | |
759 | + | @Callable(aE) | |
766 | 760 | func confirmManager () = { | |
767 | - | let | |
768 | - | let | |
761 | + | let eh = aC() | |
762 | + | let ei = if (isDefined(eh)) | |
769 | 763 | then true | |
770 | 764 | else throw("No pending manager") | |
771 | - | if (( | |
765 | + | if ((ei == ei)) | |
772 | 766 | then { | |
773 | - | let | |
767 | + | let ej = if ((aE.callerPublicKey == value(eh))) | |
774 | 768 | then true | |
775 | 769 | else throw("You are not pending manager") | |
776 | - | if (( | |
777 | - | then [StringEntry(ac(), toBase58String(value( | |
770 | + | if ((ej == ej)) | |
771 | + | then [StringEntry(ac(), toBase58String(value(eh))), DeleteEntry(ad())] | |
778 | 772 | else throw("Strict value is not equal to itself.") | |
779 | 773 | } | |
780 | 774 | else throw("Strict value is not equal to itself.") | |
781 | 775 | } | |
782 | 776 | ||
783 | 777 | ||
784 | - | @Verifier( | |
785 | - | func | |
786 | - | let | |
787 | - | let o = | |
778 | + | @Verifier(ek) | |
779 | + | func el () = { | |
780 | + | let em = { | |
781 | + | let o = aA() | |
788 | 782 | if ($isInstanceOf(o, "ByteVector")) | |
789 | 783 | then { | |
790 | - | let | |
791 | - | | |
784 | + | let aG = o | |
785 | + | aG | |
792 | 786 | } | |
793 | 787 | else if ($isInstanceOf(o, "Unit")) | |
794 | - | then | |
788 | + | then ek.senderPublicKey | |
795 | 789 | else throw("Match error") | |
796 | 790 | } | |
797 | - | sigVerify( | |
791 | + | sigVerify(ek.bodyBytes, ek.proofs[0], em) | |
798 | 792 | } | |
799 | 793 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 8 | |
7 | 7 | ||
8 | 8 | let c = 100000000 | |
9 | 9 | ||
10 | 10 | let d = c | |
11 | 11 | ||
12 | 12 | func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined")) | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func h (f,g) = valueOrElse(getInteger(f, g), 0) | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func i (f,g,j) = valueOrElse(getInteger(f, g), j) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined")) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func l (m) = if ((0 > m)) | |
25 | 25 | then -(m) | |
26 | 26 | else m | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | func n (m) = { | |
30 | 30 | let o = m | |
31 | 31 | if ($isInstanceOf(o, "List[Any]")) | |
32 | 32 | then { | |
33 | 33 | let p = o | |
34 | 34 | p | |
35 | 35 | } | |
36 | 36 | else throw("fail to cast into List[Any]") | |
37 | 37 | } | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func q (m) = { | |
41 | 41 | let o = m | |
42 | 42 | if ($isInstanceOf(o, "Int")) | |
43 | 43 | then { | |
44 | 44 | let r = o | |
45 | 45 | r | |
46 | 46 | } | |
47 | 47 | else throw("fail to cast into Int") | |
48 | 48 | } | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func s () = makeString(["%s%s", "config", "referralsContractAddress"], a) | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | let t = addressFromStringValue(e(this, s())) | |
55 | 55 | ||
56 | 56 | let u = makeString(["%s%s", "referral", "programName"], a) | |
57 | 57 | ||
58 | 58 | let v = "wxlock" | |
59 | 59 | ||
60 | 60 | let w = valueOrElse(getString(this, u), v) | |
61 | 61 | ||
62 | 62 | func x () = "%s%s__config__factoryAddress" | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | let y = 1 | |
66 | 66 | ||
67 | 67 | let z = 2 | |
68 | 68 | ||
69 | 69 | let A = 3 | |
70 | 70 | ||
71 | 71 | let B = 4 | |
72 | 72 | ||
73 | 73 | let C = 5 | |
74 | 74 | ||
75 | 75 | let D = 6 | |
76 | 76 | ||
77 | 77 | let E = 7 | |
78 | 78 | ||
79 | 79 | let F = 8 | |
80 | 80 | ||
81 | 81 | let G = 9 | |
82 | 82 | ||
83 | 83 | let H = 10 | |
84 | 84 | ||
85 | 85 | let I = 11 | |
86 | 86 | ||
87 | 87 | func J () = "%s__factoryConfig" | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a) | |
91 | 91 | ||
92 | 92 | ||
93 | 93 | func M () = "%s__lpTokensList" | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a) | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func O (P) = makeString(["%s%s", "poolWeight", P], a) | |
100 | 100 | ||
101 | 101 | ||
102 | 102 | func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S)) | |
103 | 103 | ||
104 | 104 | ||
105 | 105 | func T () = addressFromStringValue(e(this, x())) | |
106 | 106 | ||
107 | 107 | ||
108 | 108 | func U () = split(valueOrElse(getString(T(), M()), ""), a) | |
109 | 109 | ||
110 | 110 | ||
111 | 111 | func V (W) = split(e(W, J()), a) | |
112 | 112 | ||
113 | 113 | ||
114 | 114 | func X (Y) = addressFromStringValue(Y[z]) | |
115 | 115 | ||
116 | 116 | ||
117 | 117 | func Z (Y) = addressFromStringValue(Y[C]) | |
118 | 118 | ||
119 | 119 | ||
120 | 120 | func aa (Y) = addressFromStringValue(Y[y]) | |
121 | 121 | ||
122 | 122 | ||
123 | 123 | func ab (Y) = addressFromStringValue(Y[H]) | |
124 | 124 | ||
125 | 125 | ||
126 | 126 | func ac () = "%s__managerPublicKey" | |
127 | 127 | ||
128 | 128 | ||
129 | 129 | func ad () = "%s__pendingManagerPublicKey" | |
130 | 130 | ||
131 | 131 | ||
132 | 132 | func ae () = "%s%s__ratePerBlock__current" | |
133 | 133 | ||
134 | 134 | ||
135 | 135 | func af () = "%s%s__ratePerBlockMax__current" | |
136 | 136 | ||
137 | 137 | ||
138 | 138 | func ag () = "%s%s__emission__startBlock" | |
139 | 139 | ||
140 | 140 | ||
141 | - | func ah () = "%s%s__ | |
141 | + | func ah () = "%s%s__boostingV2__startBlock" | |
142 | 142 | ||
143 | 143 | ||
144 | - | func ai () = "%s%s__emission__ | |
144 | + | func ai () = "%s%s__emission__duration" | |
145 | 145 | ||
146 | 146 | ||
147 | - | func aj () = "%s__ | |
147 | + | func aj () = "%s%s__emission__endBlock" | |
148 | 148 | ||
149 | 149 | ||
150 | - | func ak () = "%s | |
150 | + | func ak () = "%s__nextPeriod" | |
151 | 151 | ||
152 | 152 | ||
153 | - | let al = 1 | |
154 | - | ||
155 | - | let am = 2 | |
156 | - | ||
157 | - | let an = 3 | |
158 | - | ||
159 | - | let ao = 4 | |
160 | - | ||
161 | - | let ap = 5 | |
162 | - | ||
163 | - | func aq () = "%s__config" | |
153 | + | func al () = "%s%s__gwxRewardEmissionPart__startHeight" | |
164 | 154 | ||
165 | 155 | ||
166 | - | func ar () = split(e(this, aq()), a) | |
156 | + | let am = 1 | |
157 | + | ||
158 | + | let an = 2 | |
159 | + | ||
160 | + | let ao = 3 | |
161 | + | ||
162 | + | let ap = 4 | |
163 | + | ||
164 | + | let aq = 5 | |
165 | + | ||
166 | + | func ar () = "%s__config" | |
167 | 167 | ||
168 | 168 | ||
169 | - | let as = addressFromStringValue(ar()[ap]) | |
170 | - | ||
171 | - | func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a) | |
169 | + | func as () = split(e(this, ar()), a) | |
172 | 170 | ||
173 | 171 | ||
174 | - | func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as) | |
172 | + | let at = addressFromStringValue(as()[aq]) | |
173 | + | ||
174 | + | func au (av,aw,ax,ay,at) = makeString(["%s%d%d%d", av, aw, ax, ay, at], a) | |
175 | 175 | ||
176 | 176 | ||
177 | - | func az () = { | |
177 | + | func az (av,aw,ax,ay,at) = au(av, toString(aw), toString(ax), toString(ay), at) | |
178 | + | ||
179 | + | ||
180 | + | func aA () = { | |
178 | 181 | let o = getString(ac()) | |
179 | 182 | if ($isInstanceOf(o, "String")) | |
180 | 183 | then { | |
181 | - | let | |
182 | - | fromBase58String( | |
184 | + | let aB = o | |
185 | + | fromBase58String(aB) | |
183 | 186 | } | |
184 | 187 | else if ($isInstanceOf(o, "Unit")) | |
185 | 188 | then unit | |
186 | 189 | else throw("Match error") | |
187 | 190 | } | |
188 | 191 | ||
189 | 192 | ||
190 | - | func | |
193 | + | func aC () = { | |
191 | 194 | let o = getString(ad()) | |
192 | 195 | if ($isInstanceOf(o, "String")) | |
193 | 196 | then { | |
194 | - | let | |
195 | - | fromBase58String( | |
197 | + | let aB = o | |
198 | + | fromBase58String(aB) | |
196 | 199 | } | |
197 | 200 | else if ($isInstanceOf(o, "Unit")) | |
198 | 201 | then unit | |
199 | 202 | else throw("Match error") | |
200 | 203 | } | |
201 | 204 | ||
202 | 205 | ||
203 | - | func | |
204 | - | let | |
205 | - | let o = | |
206 | + | func aD (aE) = { | |
207 | + | let aF = throw("Permission denied") | |
208 | + | let o = aA() | |
206 | 209 | if ($isInstanceOf(o, "ByteVector")) | |
207 | 210 | then { | |
208 | - | let | |
209 | - | if (( | |
211 | + | let aG = o | |
212 | + | if ((aE.callerPublicKey == aG)) | |
210 | 213 | then true | |
211 | - | else | |
214 | + | else aF | |
212 | 215 | } | |
213 | 216 | else if ($isInstanceOf(o, "Unit")) | |
214 | - | then if (( | |
217 | + | then if ((aE.caller == this)) | |
215 | 218 | then true | |
216 | - | else | |
219 | + | else aF | |
217 | 220 | else throw("Match error") | |
218 | 221 | } | |
219 | 222 | ||
220 | 223 | ||
221 | - | let | |
224 | + | let aH = 1 | |
222 | 225 | ||
223 | - | let | |
226 | + | let aI = 2 | |
224 | 227 | ||
225 | - | let | |
228 | + | let aJ = 3 | |
226 | 229 | ||
227 | - | let | |
230 | + | let aK = 4 | |
228 | 231 | ||
229 | - | let | |
232 | + | let aL = 5 | |
230 | 233 | ||
231 | - | let | |
234 | + | let aM = 6 | |
232 | 235 | ||
233 | - | func | |
236 | + | func aN (aO) = makeString(["%s%s__lock", aO], a) | |
234 | 237 | ||
235 | 238 | ||
236 | - | func | |
239 | + | func aP (aO) = split(e(this, aN(aO)), a) | |
237 | 240 | ||
238 | 241 | ||
239 | - | func | |
242 | + | func aQ (aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d", aR, aS, aT, aU, aV, aW, aX, aY], a) | |
240 | 243 | ||
241 | 244 | ||
242 | - | func | |
245 | + | func aZ (aR,aS,aT,aU,aV,aW,aY) = aQ(aR, toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(lastBlock.timestamp), toString(aY)) | |
243 | 246 | ||
244 | 247 | ||
245 | - | func | |
248 | + | func ba () = "%s__nextUserNum" | |
246 | 249 | ||
247 | 250 | ||
248 | - | func | |
251 | + | func bb (aO) = makeString(["%s%s%s__mapping__user2num", aO], a) | |
249 | 252 | ||
250 | 253 | ||
251 | - | func | |
254 | + | func bc (S) = makeString(["%s%s%s__mapping__num2user", S], a) | |
252 | 255 | ||
253 | 256 | ||
254 | - | func | |
257 | + | func bd (aR) = makeString(["%s%d%s__paramByUserNum", aR, "amount"], a) | |
255 | 258 | ||
256 | 259 | ||
257 | - | func | |
260 | + | func be (aR) = makeString(["%s%d%s__paramByUserNum", aR, "start"], a) | |
258 | 261 | ||
259 | 262 | ||
260 | - | func | |
263 | + | func bf (aR) = makeString(["%s%d%s__paramByUserNum", aR, "duration"], a) | |
261 | 264 | ||
262 | 265 | ||
263 | - | func | |
266 | + | func bg (aR) = makeString(["%s%d%s__paramByUserNum", aR, "k"], a) | |
264 | 267 | ||
265 | 268 | ||
266 | - | func | |
269 | + | func bh (aR) = makeString(["%s%d%s__paramByUserNum", aR, "b"], a) | |
267 | 270 | ||
268 | 271 | ||
269 | - | func | |
272 | + | func bi (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "k", bj], a) | |
270 | 273 | ||
271 | 274 | ||
272 | - | func | |
275 | + | func bk (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "b", bj], a) | |
273 | 276 | ||
274 | 277 | ||
275 | - | func | |
278 | + | func bl () = "%s%s__stats__activeTotalLocked" | |
276 | 279 | ||
277 | 280 | ||
278 | - | func | |
281 | + | func bm () = "%s%s__stats__locksDurationSumInBlocks" | |
279 | 282 | ||
280 | 283 | ||
281 | - | func | |
284 | + | func bn () = "%s%s__stats__locksCount" | |
282 | 285 | ||
283 | 286 | ||
284 | - | func | |
287 | + | func bo () = "%s%s__stats__activeUsersCount" | |
285 | 288 | ||
286 | 289 | ||
287 | - | func | |
290 | + | func bp (aR) = makeString(["%s%d__userBoostEmissionLastIntV2", aR], a) | |
288 | 291 | ||
289 | 292 | ||
290 | - | func | |
293 | + | func bq (aR,br) = makeString(["%s%d__userBoostEmissionLastIntV2", aR, br], a) | |
291 | 294 | ||
292 | 295 | ||
293 | - | func | |
296 | + | func bs (aR) = makeString(["%s%d__maxBoostInt", aR], a) | |
294 | 297 | ||
295 | 298 | ||
296 | - | func | |
299 | + | func bt () = "%s%s__maxBoostInt__total" | |
297 | 300 | ||
298 | 301 | ||
299 | - | func | |
302 | + | func bu (aR) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aR], a) | |
300 | 303 | ||
301 | 304 | ||
302 | - | func | |
305 | + | func bv (aR) = makeString(["%s%d__userBoostClaimed", aR], a) | |
303 | 306 | ||
304 | 307 | ||
305 | - | func | |
308 | + | func bw () = "%s%s__gwxCached__total" | |
306 | 309 | ||
307 | 310 | ||
308 | - | func | |
311 | + | func bx () = "%s__gwxCachedTotalCorrective" | |
309 | 312 | ||
310 | 313 | ||
311 | - | let | |
314 | + | let by = T() | |
312 | 315 | ||
313 | - | let Y = V( | |
316 | + | let Y = V(by) | |
314 | 317 | ||
315 | - | let | |
318 | + | let bz = Z(Y) | |
316 | 319 | ||
317 | - | let | |
320 | + | let bA = aa(Y) | |
318 | 321 | ||
319 | - | let | |
322 | + | let bB = ab(Y) | |
320 | 323 | ||
321 | - | func bB (bC) = { | |
322 | - | let bD = makeString(["%s", "votingEmissionContract"], a) | |
323 | - | let bE = addressFromStringValue(getStringValue(bx, bD)) | |
324 | - | let bF = makeString(["%s", "currentEpochUi"], a) | |
325 | - | let bG = getIntegerValue(bE, bF) | |
326 | - | let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a) | |
327 | - | let bI = getInteger(this, bH) | |
328 | - | let bJ = valueOrElse(getInteger(this, bv()), 0) | |
329 | - | let bK = if (isDefined(bI)) | |
330 | - | then (bG >= value(bI)) | |
324 | + | let bC = makeString(["%s", "votingEmissionContract"], a) | |
325 | + | ||
326 | + | let bD = addressFromStringValue(getStringValue(by, bC)) | |
327 | + | ||
328 | + | let bE = { | |
329 | + | let bF = invoke(bz, "getBoostCoeffREADONLY", nil, nil) | |
330 | + | if ($isInstanceOf(bF, "Int")) | |
331 | + | then bF | |
332 | + | else throw(($getType(bF) + " couldn't be cast to Int")) | |
333 | + | } | |
334 | + | ||
335 | + | func bG (bH) = { | |
336 | + | let bI = makeString(["%s", "currentEpochUi"], a) | |
337 | + | let bJ = getIntegerValue(bD, bI) | |
338 | + | let bK = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a) | |
339 | + | let bL = getInteger(this, bK) | |
340 | + | let bM = valueOrElse(getInteger(this, bw()), 0) | |
341 | + | let bN = if (isDefined(bL)) | |
342 | + | then (bJ >= value(bL)) | |
331 | 343 | else false | |
332 | - | let | |
333 | - | then | |
344 | + | let bO = if (if (bN) | |
345 | + | then bH | |
334 | 346 | else false) | |
335 | - | then valueOrElse(getInteger(this, | |
347 | + | then valueOrElse(getInteger(this, bx()), 0) | |
336 | 348 | else 0 | |
337 | - | max([0, ( | |
349 | + | max([0, (bM + bO)]) | |
338 | 350 | } | |
339 | 351 | ||
340 | 352 | ||
341 | - | func | |
342 | - | let | |
343 | - | let | |
344 | - | StringEntry( | |
353 | + | func bP (bQ,bR,aS,bS,aU,bT,bU,aE) = { | |
354 | + | let bV = makeString(["%s%s%s%s__history", bQ, bR, toBase58String(aE.transactionId)], a) | |
355 | + | let bW = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aS), toString(bS), toString(aU), toString(bT), toString(bU)], a) | |
356 | + | StringEntry(bV, bW) | |
345 | 357 | } | |
346 | 358 | ||
347 | 359 | ||
348 | - | func bU (bV,bW,bX,bY) = { | |
349 | - | let bZ = bl() | |
350 | - | let ca = bm() | |
351 | - | let cb = bn() | |
352 | - | let cc = bk() | |
353 | - | let cd = h(this, bZ) | |
354 | - | let ce = h(this, ca) | |
355 | - | let cf = h(this, cb) | |
360 | + | func bX (bY,bZ,ca,cb) = { | |
361 | + | let cc = bm() | |
362 | + | let cd = bn() | |
363 | + | let ce = bo() | |
364 | + | let cf = bl() | |
356 | 365 | let cg = h(this, cc) | |
357 | - | [IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))] | |
366 | + | let ch = h(this, cd) | |
367 | + | let ci = h(this, ce) | |
368 | + | let cj = h(this, cf) | |
369 | + | [IntegerEntry(cc, (cg + bZ)), IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + bY))] | |
358 | 370 | } | |
359 | 371 | ||
360 | 372 | ||
361 | - | func | |
362 | - | let | |
363 | - | ((( | |
373 | + | func ck (cl,cm,cn) = { | |
374 | + | let co = 1000 | |
375 | + | (((cl * cn) + cm) / co) | |
364 | 376 | } | |
365 | 377 | ||
366 | 378 | ||
367 | - | func | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | [IntegerEntry( | |
379 | + | func cp (aO,aR,aS,aT,aU,bT,bU,bj) = { | |
380 | + | let cq = bd(aR) | |
381 | + | let cr = be(aR) | |
382 | + | let cs = bf(aR) | |
383 | + | let ct = bg(aR) | |
384 | + | let cu = bh(aR) | |
385 | + | let cv = bi(aR, bj) | |
386 | + | let cw = bk(aR, bj) | |
387 | + | let aY = ck(bT, bU, height) | |
388 | + | [IntegerEntry(cq, aS), IntegerEntry(cr, aT), IntegerEntry(cs, aU), IntegerEntry(ct, bT), IntegerEntry(cu, bU), IntegerEntry(cv, bT), IntegerEntry(cw, bU), StringEntry(aN(aO), aZ(aR, aS, aT, aU, bT, bU, aY))] | |
377 | 389 | } | |
378 | 390 | ||
379 | 391 | ||
380 | - | func | |
392 | + | func cx (aE,cy) = if ((size(aE.payments) > 1)) | |
381 | 393 | then throw("only one payment is allowed") | |
382 | - | else if ((size( | |
394 | + | else if ((size(aE.payments) == 0)) | |
383 | 395 | then 0 | |
384 | 396 | else { | |
385 | - | let | |
386 | - | if ((value( | |
397 | + | let cz = aE.payments[0] | |
398 | + | if ((value(cz.assetId) != cy)) | |
387 | 399 | then throw("invalid asset id in payment") | |
388 | - | else | |
400 | + | else cz.amount | |
389 | 401 | } | |
390 | 402 | ||
391 | 403 | ||
392 | - | func | |
393 | - | let | |
394 | - | let | |
395 | - | let | |
396 | - | let | |
397 | - | let | |
398 | - | let | |
399 | - | let | |
404 | + | func cA (aO,cB) = { | |
405 | + | let cC = "empty" | |
406 | + | let cD = bb(aO) | |
407 | + | let aR = valueOrElse(getString(cD), cC) | |
408 | + | let bT = valueOrElse(getInteger(bg(aR)), 0) | |
409 | + | let bU = valueOrElse(getInteger(bh(aR)), 0) | |
410 | + | let cE = ck(bT, bU, cB) | |
411 | + | let aY = if ((0 > cE)) | |
400 | 412 | then 0 | |
401 | - | else | |
402 | - | | |
413 | + | else cE | |
414 | + | aY | |
403 | 415 | } | |
404 | 416 | ||
405 | 417 | ||
406 | - | func | |
418 | + | func cF (aO) = cA(aO, height) | |
407 | 419 | ||
408 | 420 | ||
409 | - | func | |
410 | - | let | |
411 | - | let | |
412 | - | if (( | |
421 | + | func cG (cH,cI,cJ) = { | |
422 | + | let cC = "EMPTY" | |
423 | + | let cK = valueOrElse(getString(this, aN(cI)), cC) | |
424 | + | if ((cK == cC)) | |
413 | 425 | then $Tuple3(0, nil, "userRecord::is::empty") | |
414 | 426 | else { | |
415 | - | let cI = split(cH, a) | |
416 | - | let cJ = cI[aG] | |
417 | - | let cK = valueOrElse(getInteger(bA, ak()), 0) | |
418 | - | let cL = "empty" | |
419 | - | let cM = if ((cE != cL)) | |
427 | + | let cL = split(cK, a) | |
428 | + | let cM = cL[aH] | |
429 | + | let cN = "empty" | |
430 | + | let cO = if ((cH != cN)) | |
420 | 431 | then { | |
421 | - | let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE)) | |
422 | - | let cO = getIntegerValue(bx, O(cN)) | |
423 | - | let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO) | |
424 | - | $Tuple2(cP, cO) | |
432 | + | let cP = valueOrErrorMessage(getString(by, K(cH)), ("unsupported lp asset " + cH)) | |
433 | + | getIntegerValue(by, O(cP)) | |
425 | 434 | } | |
426 | - | else if (cG) | |
427 | - | then $Tuple2(0, 0) | |
428 | - | else throw(("not readonly mode: unsupported lp asset " + cE)) | |
429 | - | let cQ = cM._1 | |
430 | - | let cR = cM._2 | |
431 | - | let cS = k(by, ae()) | |
432 | - | let cT = k(by, ag()) | |
433 | - | let cU = k(by, ai()) | |
434 | - | let ck = if ((height > cU)) | |
435 | - | then cU | |
435 | + | else if (cJ) | |
436 | + | then 0 | |
437 | + | else throw(("not readonly mode: unsupported lp asset " + cH)) | |
438 | + | let cQ = k(bz, ae()) | |
439 | + | let cR = k(bz, ah()) | |
440 | + | let cS = k(bz, aj()) | |
441 | + | let cn = if ((height > cS)) | |
442 | + | then cS | |
436 | 443 | else height | |
437 | - | let cV = max([(ck - cT), 0]) | |
438 | - | let cW = bp(cJ, cE) | |
439 | - | let cX = bo(cJ) | |
440 | - | let cY = valueOrElse(getInteger(this, cW), h(this, cX)) | |
441 | - | let cZ = (((cS * cV) * 2) / 3) | |
442 | - | let da = (cZ - cY) | |
443 | - | let db = fraction(da, 3, (2 * cS)) | |
444 | - | let dc = (ck - db) | |
445 | - | let dd = max([(cK - dc), 0]) | |
446 | - | let de = ((ck - dc) - dd) | |
447 | - | if (if (if ((0 > dc)) | |
448 | - | then true | |
449 | - | else (0 > de)) | |
450 | - | then true | |
451 | - | else (l(((dd + de) - db)) >= 1)) | |
452 | - | then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de))) | |
453 | - | else if ((0 > da)) | |
454 | - | then throw("wrong calculations") | |
455 | - | else { | |
456 | - | let df = br(cJ) | |
457 | - | let dg = bs() | |
458 | - | let dh = h(this, df) | |
459 | - | let di = h(this, dg) | |
460 | - | let dj = bB(true) | |
461 | - | let dk = cC(cF) | |
462 | - | let dl = bt(cJ) | |
463 | - | let dm = h(this, dl) | |
464 | - | let dn = if ((db == 0)) | |
465 | - | then 0 | |
466 | - | else fraction(da, dd, db) | |
467 | - | let do = if ((db == 0)) | |
468 | - | then 0 | |
469 | - | else fraction(da, de, db) | |
470 | - | let dp = fraction(dn, cQ, d) | |
471 | - | let dq = fraction(do, cR, d) | |
472 | - | let dr = if ((dj == 0)) | |
473 | - | then 0 | |
474 | - | else fraction(dp, dk, dj) | |
475 | - | let ds = if ((dj == 0)) | |
476 | - | then 0 | |
477 | - | else fraction(dq, dk, dj) | |
478 | - | let dt = (dr + ds) | |
479 | - | let du = bu(cJ) | |
480 | - | let dv = h(this, du) | |
481 | - | let dw = (dt - dv) | |
482 | - | let dx = [IntegerEntry(cW, cZ)] | |
483 | - | let dy = makeString([toString(cY), toString(da), toString(dv), toString(dw), toString(cQ), toString(cR), toString(ck), toString(db), toString(dc), toString(dd), toString(de), toString(dk), toString(dj)], ":") | |
484 | - | $Tuple3(dt, dx, dy) | |
444 | + | let cT = max([(cn - cR), 0]) | |
445 | + | let cU = bq(cM, cH) | |
446 | + | let cV = bp(cM) | |
447 | + | let cW = valueOrElse(getInteger(this, cU), h(this, cV)) | |
448 | + | let cX = (((cQ * cT) * (bE - 1)) / bE) | |
449 | + | let cY = (cX - cW) | |
450 | + | let cZ = fraction(cY, bE, ((bE - 1) * cQ)) | |
451 | + | let da = (cn - cZ) | |
452 | + | if ((0 > cY)) | |
453 | + | then throw("wrong calculations") | |
454 | + | else { | |
455 | + | let db = bs(cM) | |
456 | + | let dc = bt() | |
457 | + | let dd = h(this, db) | |
458 | + | let de = h(this, dc) | |
459 | + | let df = { | |
460 | + | let bF = invoke(bD, "getVoteInfoREADONLY", [cH, cI], nil) | |
461 | + | if ($isInstanceOf(bF, "(Int, Int)")) | |
462 | + | then bF | |
463 | + | else throw(($getType(bF) + " couldn't be cast to (Int, Int)")) | |
485 | 464 | } | |
465 | + | let dg = df._1 | |
466 | + | let dh = df._2 | |
467 | + | let di = bu(cM) | |
468 | + | let dj = h(this, di) | |
469 | + | let dk = fraction(cY, cO, d) | |
470 | + | let dl = if ((dh == 0)) | |
471 | + | then 0 | |
472 | + | else fraction(dk, dg, dh) | |
473 | + | let dm = bv(cM) | |
474 | + | let dn = h(this, dm) | |
475 | + | let do = (dl - dn) | |
476 | + | let dp = [IntegerEntry(cU, cX)] | |
477 | + | let dq = makeString([toString(cW), toString(cY), toString(dn), toString(do), toString(cO), toString(cn), toString(cZ), toString(da), toString(dg), toString(dh)], ":") | |
478 | + | $Tuple3(dl, dp, dq) | |
479 | + | } | |
486 | 480 | } | |
487 | 481 | } | |
488 | 482 | ||
489 | 483 | ||
490 | - | func | |
491 | - | let | |
492 | - | let | |
493 | - | let | |
494 | - | let | |
495 | - | let | |
496 | - | let | |
497 | - | if ((size( | |
484 | + | func dr (aE,aU) = { | |
485 | + | let ds = as() | |
486 | + | let dt = ds[am] | |
487 | + | let av = fromBase58String(dt) | |
488 | + | let aw = parseIntValue(ds[an]) | |
489 | + | let ax = parseIntValue(ds[ao]) | |
490 | + | let ay = parseIntValue(ds[ap]) | |
491 | + | if ((size(aE.payments) != 1)) | |
498 | 492 | then throw("invalid payment - exact one payment must be attached") | |
499 | 493 | else { | |
500 | - | let | |
501 | - | let | |
502 | - | if (( | |
503 | - | then throw((("invalid asset is in payment - " + | |
494 | + | let cz = aE.payments[0] | |
495 | + | let du = cz.amount | |
496 | + | if ((av != value(cz.assetId))) | |
497 | + | then throw((("invalid asset is in payment - " + dt) + " is expected")) | |
504 | 498 | else { | |
505 | - | let | |
506 | - | let | |
507 | - | let | |
508 | - | let | |
509 | - | then value(getString( | |
510 | - | else toString(k(this, | |
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | let | |
516 | - | if (( | |
517 | - | then throw(("amount is less then minLockAmount=" + toString( | |
518 | - | else if (( | |
519 | - | then throw(("passed duration is less then minLockDuration=" + toString( | |
520 | - | else if (( | |
521 | - | then throw(("passed duration is greater then maxLockDuration=" + toString( | |
522 | - | else if (if ( | |
523 | - | then ((k(this, | |
499 | + | let dv = ba() | |
500 | + | let cI = toString(aE.caller) | |
501 | + | let dw = isDefined(getString(bb(cI))) | |
502 | + | let cM = if (dw) | |
503 | + | then value(getString(bb(cI))) | |
504 | + | else toString(k(this, dv)) | |
505 | + | let aR = parseIntValue(cM) | |
506 | + | let bS = height | |
507 | + | let cr = be(cM) | |
508 | + | let cs = bf(cM) | |
509 | + | let cq = bd(cM) | |
510 | + | if ((aw > du)) | |
511 | + | then throw(("amount is less then minLockAmount=" + toString(aw))) | |
512 | + | else if ((ax > aU)) | |
513 | + | then throw(("passed duration is less then minLockDuration=" + toString(ax))) | |
514 | + | else if ((aU > ay)) | |
515 | + | then throw(("passed duration is greater then maxLockDuration=" + toString(ay))) | |
516 | + | else if (if (dw) | |
517 | + | then ((k(this, cr) + k(this, cs)) >= bS) | |
524 | 518 | else false) | |
525 | 519 | then throw("there is an active lock - consider to use increaseLock") | |
526 | - | else if ((h(this, | |
527 | - | then throw(("there are locked WXs - consider to use increaseLock " + | |
520 | + | else if ((h(this, cq) > 0)) | |
521 | + | then throw(("there are locked WXs - consider to use increaseLock " + cq)) | |
528 | 522 | else { | |
529 | - | let | |
530 | - | let | |
531 | - | let | |
532 | - | let | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | then | |
523 | + | let dx = fraction(aU, c, ay) | |
524 | + | let dy = fraction(du, dx, c) | |
525 | + | let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, bS, aU], nil)) | |
526 | + | let bT = q(dz[0]) | |
527 | + | let bU = q(dz[1]) | |
528 | + | let bj = toString(q(dz[2])) | |
529 | + | let cQ = k(bz, ae()) | |
530 | + | let dA = k(bz, ag()) | |
531 | + | let cS = k(bz, aj()) | |
532 | + | let cn = if ((height > cS)) | |
533 | + | then cS | |
540 | 534 | else height | |
541 | - | let | |
542 | - | let | |
543 | - | let | |
544 | - | let | |
545 | - | let | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | let | |
535 | + | let cT = max([(cn - dA), 0]) | |
536 | + | let cV = bp(cM) | |
537 | + | let cX = (((cQ * cT) * 2) / 3) | |
538 | + | let db = bs(cM) | |
539 | + | let dc = bt() | |
540 | + | let dd = ((dy * aU) / 2) | |
541 | + | let de = h(this, dc) | |
542 | + | let bM = bG(false) | |
543 | + | let dB = if (dw) | |
550 | 544 | then nil | |
551 | - | else [IntegerEntry( | |
552 | - | $Tuple2((((( | |
545 | + | else [IntegerEntry(dv, (aR + 1)), StringEntry(bb(cI), cM), StringEntry(bc(cM), cI)] | |
546 | + | $Tuple2(((((dB ++ cp(cI, cM, du, bS, aU, bT, bU, bj)) ++ bX(du, aU, 1, if (dw) | |
553 | 547 | then 0 | |
554 | - | else 1)) :+ | |
548 | + | else 1)) :+ bP("lock", cI, du, bS, aU, bT, bU, aE)) ++ [IntegerEntry(cV, cX), IntegerEntry(bw(), (bM + dy))]), dy) | |
555 | 549 | } | |
556 | 550 | } | |
557 | 551 | } | |
558 | 552 | } | |
559 | 553 | ||
560 | 554 | ||
561 | - | @Callable( | |
562 | - | func constructor ( | |
563 | - | let | |
564 | - | if (( | |
565 | - | then ([IntegerEntry( | |
555 | + | @Callable(aE) | |
556 | + | func constructor (dC,dD,aw,dE,dF,at) = { | |
557 | + | let dG = aD(aE) | |
558 | + | if ((dG == dG)) | |
559 | + | then ([IntegerEntry(ba(), 0), StringEntry(ar(), az(dD, aw, dE, dF, at)), StringEntry(x(), dC)] ++ bX(0, 0, 0, 0)) | |
566 | 560 | else throw("Strict value is not equal to itself.") | |
567 | 561 | } | |
568 | 562 | ||
569 | 563 | ||
570 | 564 | ||
571 | - | @Callable( | |
572 | - | func lockRef ( | |
573 | - | let | |
574 | - | let | |
575 | - | let | |
576 | - | let | |
577 | - | let | |
565 | + | @Callable(aE) | |
566 | + | func lockRef (aU,dH,dI) = { | |
567 | + | let dJ = dr(aE, aU) | |
568 | + | let dK = dJ._1 | |
569 | + | let dy = dJ._2 | |
570 | + | let dL = toString(aE.caller) | |
571 | + | let dM = if (if ((dH == "")) | |
578 | 572 | then true | |
579 | - | else ( | |
573 | + | else (dI == base58'')) | |
580 | 574 | then unit | |
581 | - | else invoke(t, "createPair", [w, | |
582 | - | if (( | |
575 | + | else invoke(t, "createPair", [w, dH, dL, dI], nil) | |
576 | + | if ((dM == dM)) | |
583 | 577 | then { | |
584 | - | let | |
585 | - | if (( | |
586 | - | then $Tuple2( | |
578 | + | let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil) | |
579 | + | if ((dN == dN)) | |
580 | + | then $Tuple2(dK, unit) | |
587 | 581 | else throw("Strict value is not equal to itself.") | |
588 | 582 | } | |
589 | 583 | else throw("Strict value is not equal to itself.") | |
590 | 584 | } | |
591 | 585 | ||
592 | 586 | ||
593 | 587 | ||
594 | - | @Callable( | |
595 | - | func lock ( | |
596 | - | let | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | if (( | |
601 | - | then $Tuple2( | |
588 | + | @Callable(aE) | |
589 | + | func lock (aU) = { | |
590 | + | let dO = dr(aE, aU) | |
591 | + | let dK = dO._1 | |
592 | + | let dy = dO._2 | |
593 | + | let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil) | |
594 | + | if ((dN == dN)) | |
595 | + | then $Tuple2(dK, unit) | |
602 | 596 | else throw("Strict value is not equal to itself.") | |
603 | 597 | } | |
604 | 598 | ||
605 | 599 | ||
606 | 600 | ||
607 | - | @Callable( | |
608 | - | func increaseLock ( | |
609 | - | let | |
610 | - | let | |
611 | - | let | |
612 | - | let | |
613 | - | let | |
614 | - | let | |
615 | - | let | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
622 | - | let | |
623 | - | let | |
624 | - | let | |
625 | - | if ((0 > | |
601 | + | @Callable(aE) | |
602 | + | func increaseLock (dP) = { | |
603 | + | let ds = as() | |
604 | + | let dt = ds[am] | |
605 | + | let av = fromBase58String(dt) | |
606 | + | let ax = parseIntValue(ds[ao]) | |
607 | + | let ay = parseIntValue(ds[ap]) | |
608 | + | let du = cx(aE, av) | |
609 | + | let cI = toString(aE.caller) | |
610 | + | let cL = aP(cI) | |
611 | + | let cM = cL[aH] | |
612 | + | let dQ = parseIntValue(cL[aI]) | |
613 | + | let bS = parseIntValue(cL[aJ]) | |
614 | + | let dR = parseIntValue(cL[aK]) | |
615 | + | let dS = (bS + dR) | |
616 | + | let dT = max([(dS - height), 0]) | |
617 | + | let dU = (dQ + du) | |
618 | + | let dV = (dT + dP) | |
619 | + | if ((0 > dP)) | |
626 | 620 | then throw("duration is less then zero") | |
627 | - | else if (( | |
628 | - | then throw(("lockDurationNew is less then minLockDuration=" + toString( | |
629 | - | else if (( | |
630 | - | then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString( | |
621 | + | else if ((ax > dV)) | |
622 | + | then throw(("lockDurationNew is less then minLockDuration=" + toString(ax))) | |
623 | + | else if ((dV > ay)) | |
624 | + | then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ay))) | |
631 | 625 | else { | |
632 | - | let | |
633 | - | let | |
634 | - | let | |
635 | - | if (( | |
626 | + | let dx = fraction(dV, c, ay) | |
627 | + | let dy = fraction(dU, dx, c) | |
628 | + | let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil) | |
629 | + | if ((dN == dN)) | |
636 | 630 | then { | |
637 | - | let | |
638 | - | let | |
639 | - | let | |
640 | - | let | |
641 | - | let | |
642 | - | let | |
643 | - | let | |
644 | - | let | |
645 | - | let | |
646 | - | then | |
631 | + | let dW = height | |
632 | + | let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, dW, dV], nil)) | |
633 | + | let bT = q(dz[0]) | |
634 | + | let bU = q(dz[1]) | |
635 | + | let bj = toString(q(dz[2])) | |
636 | + | let cQ = k(bz, ae()) | |
637 | + | let dA = k(bz, ag()) | |
638 | + | let cS = k(bz, aj()) | |
639 | + | let cn = if ((height > cS)) | |
640 | + | then cS | |
647 | 641 | else height | |
648 | - | let | |
649 | - | let | |
650 | - | let | |
651 | - | let | |
652 | - | let | |
653 | - | if ((0 > | |
642 | + | let cT = max([(cn - dA), 0]) | |
643 | + | let cV = bp(cM) | |
644 | + | let cW = h(this, cV) | |
645 | + | let cX = (((cQ * cT) * 2) / 3) | |
646 | + | let cY = (cX - cW) | |
647 | + | if ((0 > cY)) | |
654 | 648 | then throw("wrong calculations") | |
655 | 649 | else { | |
656 | - | let | |
657 | - | let | |
658 | - | let | |
659 | - | let | |
660 | - | let | |
661 | - | let | |
662 | - | if ((0 > | |
663 | - | then throw(("gwxDiff is less then 0: " + toString( | |
650 | + | let db = bs(cM) | |
651 | + | let dc = bt() | |
652 | + | let dd = h(this, db) | |
653 | + | let de = h(this, dc) | |
654 | + | let dX = cF(cI) | |
655 | + | let dY = (dy - dX) | |
656 | + | if ((0 > dY)) | |
657 | + | then throw(("gwxDiff is less then 0: " + toString(dY))) | |
664 | 658 | else { | |
665 | - | let | |
666 | - | let | |
667 | - | let | |
668 | - | let | |
669 | - | let | |
670 | - | let | |
671 | - | let | |
672 | - | let | |
673 | - | ((( | |
659 | + | let bM = bG(false) | |
660 | + | let dZ = bG(true) | |
661 | + | let di = bu(cM) | |
662 | + | let dj = h(this, di) | |
663 | + | let dl = fraction(cY, dX, dZ) | |
664 | + | let ea = ((dy * dV) / 2) | |
665 | + | let eb = ((dX * dT) / 2) | |
666 | + | let ec = (ea - eb) | |
667 | + | (((cp(cI, cM, dU, dW, dV, bT, bU, bj) ++ bX(du, dP, 0, 0)) :+ bP("lock", cI, du, bS, dV, bT, bU, aE)) ++ [IntegerEntry(bw(), (bM + dY))]) | |
674 | 668 | } | |
675 | 669 | } | |
676 | 670 | } | |
677 | 671 | else throw("Strict value is not equal to itself.") | |
678 | 672 | } | |
679 | 673 | } | |
680 | 674 | ||
681 | 675 | ||
682 | 676 | ||
683 | - | @Callable( | |
684 | - | func claimWxBoost ( | |
677 | + | @Callable(aE) | |
678 | + | func claimWxBoost (cH,cI) = if ((bA != aE.caller)) | |
685 | 679 | then throw("permissions denied") | |
686 | 680 | else { | |
687 | - | let | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | $Tuple2( | |
681 | + | let ed = cG(cH, cI, false) | |
682 | + | let do = ed._1 | |
683 | + | let dp = ed._2 | |
684 | + | let dq = ed._3 | |
685 | + | $Tuple2(dp, [do]) | |
692 | 686 | } | |
693 | 687 | ||
694 | 688 | ||
695 | 689 | ||
696 | - | @Callable( | |
697 | - | func claimWxBoostREADONLY ( | |
698 | - | let | |
699 | - | let | |
700 | - | let | |
701 | - | let | |
702 | - | $Tuple2(nil, [ | |
690 | + | @Callable(aE) | |
691 | + | func claimWxBoostREADONLY (cH,cI) = { | |
692 | + | let ee = cG(cH, cI, true) | |
693 | + | let do = ee._1 | |
694 | + | let dp = ee._2 | |
695 | + | let dq = ee._3 | |
696 | + | $Tuple2(nil, [do, dq]) | |
703 | 697 | } | |
704 | 698 | ||
705 | 699 | ||
706 | 700 | ||
707 | - | @Callable( | |
708 | - | func unlock ( | |
709 | - | let | |
710 | - | let | |
711 | - | let | |
712 | - | let | |
713 | - | let | |
714 | - | let | |
715 | - | let | |
716 | - | let | |
717 | - | if (( | |
718 | - | then throw((("wait " + toString( | |
719 | - | else if ((0 >= | |
701 | + | @Callable(aE) | |
702 | + | func unlock (aO) = { | |
703 | + | let cL = aP(aO) | |
704 | + | let cM = cL[aH] | |
705 | + | let dQ = parseIntValue(cL[aI]) | |
706 | + | let bS = parseIntValue(cL[aJ]) | |
707 | + | let dR = parseIntValue(cL[aK]) | |
708 | + | let dS = (bS + dR) | |
709 | + | let ds = as() | |
710 | + | let av = fromBase58String(ds[am]) | |
711 | + | if ((dS >= height)) | |
712 | + | then throw((("wait " + toString(dS)) + " to unlock")) | |
713 | + | else if ((0 >= dQ)) | |
720 | 714 | then throw("nothing to unlock") | |
721 | 715 | else { | |
722 | - | let | |
723 | - | ((( | |
716 | + | let bj = valueOrElse(getInteger(at, ak()), 0) | |
717 | + | (((cp(aO, cM, 0, bS, dR, 0, 0, toString(bj)) ++ bX(-(dQ), 0, 0, -1)) :+ bP("unlock", aO, dQ, bS, dR, 0, 0, aE)) :+ ScriptTransfer(addressFromStringValue(aO), dQ, av)) | |
724 | 718 | } | |
725 | 719 | } | |
726 | 720 | ||
727 | 721 | ||
728 | 722 | ||
729 | - | @Callable( | |
730 | - | func gwxUserInfoREADONLY ( | |
731 | - | let | |
732 | - | $Tuple2(nil, [ | |
723 | + | @Callable(aE) | |
724 | + | func gwxUserInfoREADONLY (aO) = { | |
725 | + | let aY = cF(aO) | |
726 | + | $Tuple2(nil, [aY]) | |
733 | 727 | } | |
734 | 728 | ||
735 | 729 | ||
736 | 730 | ||
737 | - | @Callable( | |
738 | - | func getUserGwxAmountAtHeightREADONLY ( | |
739 | - | let | |
740 | - | $Tuple2(nil, | |
731 | + | @Callable(aE) | |
732 | + | func getUserGwxAmountAtHeightREADONLY (aO,cB) = { | |
733 | + | let aY = cA(aO, cB) | |
734 | + | $Tuple2(nil, aY) | |
741 | 735 | } | |
742 | 736 | ||
743 | 737 | ||
744 | 738 | ||
745 | - | @Callable( | |
746 | - | func getTotalCachedGwxREADONLY () = $Tuple2(nil, | |
739 | + | @Callable(aE) | |
740 | + | func getTotalCachedGwxREADONLY () = $Tuple2(nil, bG(true)) | |
747 | 741 | ||
748 | 742 | ||
749 | 743 | ||
750 | - | @Callable( | |
751 | - | func setManager ( | |
752 | - | let | |
753 | - | if (( | |
744 | + | @Callable(aE) | |
745 | + | func setManager (ef) = { | |
746 | + | let dG = aD(aE) | |
747 | + | if ((dG == dG)) | |
754 | 748 | then { | |
755 | - | let | |
756 | - | if (( | |
757 | - | then [StringEntry(ad(), | |
749 | + | let eg = fromBase58String(ef) | |
750 | + | if ((eg == eg)) | |
751 | + | then [StringEntry(ad(), ef)] | |
758 | 752 | else throw("Strict value is not equal to itself.") | |
759 | 753 | } | |
760 | 754 | else throw("Strict value is not equal to itself.") | |
761 | 755 | } | |
762 | 756 | ||
763 | 757 | ||
764 | 758 | ||
765 | - | @Callable( | |
759 | + | @Callable(aE) | |
766 | 760 | func confirmManager () = { | |
767 | - | let | |
768 | - | let | |
761 | + | let eh = aC() | |
762 | + | let ei = if (isDefined(eh)) | |
769 | 763 | then true | |
770 | 764 | else throw("No pending manager") | |
771 | - | if (( | |
765 | + | if ((ei == ei)) | |
772 | 766 | then { | |
773 | - | let | |
767 | + | let ej = if ((aE.callerPublicKey == value(eh))) | |
774 | 768 | then true | |
775 | 769 | else throw("You are not pending manager") | |
776 | - | if (( | |
777 | - | then [StringEntry(ac(), toBase58String(value( | |
770 | + | if ((ej == ej)) | |
771 | + | then [StringEntry(ac(), toBase58String(value(eh))), DeleteEntry(ad())] | |
778 | 772 | else throw("Strict value is not equal to itself.") | |
779 | 773 | } | |
780 | 774 | else throw("Strict value is not equal to itself.") | |
781 | 775 | } | |
782 | 776 | ||
783 | 777 | ||
784 | - | @Verifier( | |
785 | - | func | |
786 | - | let | |
787 | - | let o = | |
778 | + | @Verifier(ek) | |
779 | + | func el () = { | |
780 | + | let em = { | |
781 | + | let o = aA() | |
788 | 782 | if ($isInstanceOf(o, "ByteVector")) | |
789 | 783 | then { | |
790 | - | let | |
791 | - | | |
784 | + | let aG = o | |
785 | + | aG | |
792 | 786 | } | |
793 | 787 | else if ($isInstanceOf(o, "Unit")) | |
794 | - | then | |
788 | + | then ek.senderPublicKey | |
795 | 789 | else throw("Match error") | |
796 | 790 | } | |
797 | - | sigVerify( | |
791 | + | sigVerify(ek.bodyBytes, ek.proofs[0], em) | |
798 | 792 | } | |
799 | 793 |
github/deemru/w8io/169f3d6 275.69 ms ◑![]()