tx · EvS19MJ1c8MwQMgqukanuya5LseYcrpydKs1X9vNTVuT

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02200000 Waves

2022.12.05 09:29 [2346704] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "EvS19MJ1c8MwQMgqukanuya5LseYcrpydKs1X9vNTVuT", "fee": 2200000, "feeAssetId": null, "timestamp": 1670221779728, "version": 1, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "25btkLypBCb1wQaMv3ex9NqtzVRvnoCcVFCK6khQiU5u5gCp5yqKF4Jrfe7zy1DXwZQP7v71H1S4BgzALUjAF2je" ], "script": "base64:BgKHJAgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIECgIIARIDCgEIEgAiA1NFUCIGU0NBTEU4IgVNVUxUOCIOUE9PTFdFSUdIVE1VTFQiBHN0cmYiB2FkZHJlc3MiA2tleSIDaW96IgNpb2QiCmRlZmF1bHRWYWwiA2lvZiIDYWJzIgN2YWwiA2FhbCIHJG1hdGNoMCIKdmFsQW55THlzdCICYWkiBnZhbEludCIba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzIh5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwiFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhFrZXlGYWN0b3J5QWRkcmVzcyIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiFElkeEZhY3RvcnlDZmdEYW9EYXBwIhpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAiDWtleUZhY3RvcnlDZmciGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5Igtwb29sQWRkcmVzcyIDbnVtIhhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwiCnJlYWRMcExpc3QiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5Ih5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siDWtleU5leHRQZXJpb2QiH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQiDUlkeENmZ0Fzc2V0SWQiE0lkeENmZ01pbkxvY2tBbW91bnQiFUlkeENmZ01pbkxvY2tEdXJhdGlvbiIVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uIhJJZHhDZmdNYXRoQ29udHJhY3QiCWtleUNvbmZpZyIVcmVhZENvbmZpZ0FycmF5T3JGYWlsIgxtYXRoQ29udHJhY3QiDWZvcm1hdENvbmZpZ1MiB2Fzc2V0SWQiDW1pbkxvY2tBbW91bnQiD21pbkxvY2tEdXJhdGlvbiIPbWF4TG9ja0R1cmF0aW9uIgxmb3JtYXRDb25maWciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciIBaSICcGQiAnBrIg5JZHhMb2NrVXNlck51bSINSWR4TG9ja0Ftb3VudCIMSWR4TG9ja1N0YXJ0Ig9JZHhMb2NrRHVyYXRpb24iDUlkeExvY2tQYXJhbUsiDUlkeExvY2tQYXJhbUIiE2tleUxvY2tQYXJhbXNSZWNvcmQiC3VzZXJBZGRyZXNzIhpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbCIXZm9ybWF0TG9ja1BhcmFtc1JlY29yZFMiB3VzZXJOdW0iBmFtb3VudCIFc3RhcnQiCGR1cmF0aW9uIgZwYXJhbUsiBnBhcmFtQiIQbGFzdFVwZFRpbWVzdGFtcCIJZ3d4QW1vdW50IhZmb3JtYXRMb2NrUGFyYW1zUmVjb3JkIg5rZXlOZXh0VXNlck51bSISa2V5VXNlcjJOdW1NYXBwaW5nIhJrZXlOdW0yVXNlck1hcHBpbmciFmtleUxvY2tQYXJhbVVzZXJBbW91bnQiFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2siFGtleUxvY2tQYXJhbUR1cmF0aW9uIg1rZXlMb2NrUGFyYW1LIg1rZXlMb2NrUGFyYW1CIhVrZXlMb2NrUGFyYW1CeVBlcmlvZEsiBnBlcmlvZCIVa2V5TG9ja1BhcmFtQnlQZXJpb2RCIhdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudCIga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiEmtleVN0YXRzTG9ja3NDb3VudCISa2V5U3RhdHNVc2Vyc0NvdW50IiBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIJbHBBc3NldElkIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiEWtleVRvdGFsQ2FjaGVkR3d4Ig9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCIRZ3d4UmV3YXJkQ29udHJhY3QiDEhpc3RvcnlFbnRyeSIEdHlwZSIEdXNlciIJbG9ja1N0YXJ0IgFrIgFiIgpoaXN0b3J5S0VZIgtoaXN0b3J5REFUQSIKU3RhdHNFbnRyeSIOdG90YWxMb2NrZWRJbmMiC2R1cmF0aW9uSW5jIgxsb2NrQ291bnRJbmMiDXVzZXJzQ291bnRJbmMiG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWSINbG9ja3NDb3VudEtFWSINdXNlcnNDb3VudEtFWSIOdG90YWxBbW91bnRLRVkiGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyIKbG9ja3NDb3VudCIKdXNlcnNDb3VudCILdG90YWxBbW91bnQiDWNhbGNHd3hBbW91bnQiBGtSYXciBGJSYXciAWgiBVNDQUxFIg9Mb2NrUGFyYW1zRW50cnkiDXVzZXJBbW91bnRLRVkiDXN0YXJ0QmxvY2tLRVkiC2R1cmF0aW9uS0VZIgRrS0VZIgRiS0VZIgxrQnlQZXJpb2RLRVkiDGJCeVBlcmlvZEtFWSIiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbCIPZXhwZWN0ZWRBc3NldElkIgNwbXQiGWNhbGNVc2VyR3d4QW1vdW50QXRIZWlnaHQiDHRhcmdldEhlaWdodCIFRU1QVFkiEnVzZXIyTnVtTWFwcGluZ0tFWSINZ3d4QW1vdW50Q2FsYyIUY2FsY0N1cnJlbnRHd3hBbW91bnQiFGludGVybmFsQ2xhaW1XeEJvb3N0IgxscEFzc2V0SWRTdHIiDnVzZXJBZGRyZXNzU3RyIghyZWFkT25seSIRdXNlclJlY29yZE9yRW1wdHkiD3VzZXJSZWNvcmRBcnJheSIKdXNlck51bVN0ciIcZ3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodCIIRU1QVFlTVFIiDSR0MDEzOTc3MTQ1NDUiDnBvb2xBZGRyZXNzU3RyIgNwdzEiA3B3MCILcG9vbFdlaWdodDAiC3Bvb2xXZWlnaHQxIhJ3eEVtaXNzaW9uUGVyQmxvY2siDWVtaXNzaW9uU3RhcnQiC2VtaXNzaW9uRW5kIgJkaCIidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsIhVib29zdEVtaXNzaW9uSW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiA3VkaCIGdUxhc3RIIgR1ZGgwIgR1ZGgxIhd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWSIYdG90YWxNYXhCb29zdEludGVncmFsS0VZIg91c2VyTWF4Qm9vc3RJbnQiEHRvdGFsTWF4Qm9vc3RJbnQiEXRvdGFsQ2FjaGVkR3d4S0VZIg50b3RhbENhY2hlZEd3eCILdXNlckN1cnJHd3giIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWSIedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsIhp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMCIadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEiHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMCIecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxIiJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcwIiJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcxIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciE3VzZXJCb29zdENsYWltZWRLRVkiEHVzZXJCb29zdENsYWltZWQiEnVzZXJCb29zdEF2YWlsYWJsZSIJZGF0YVN0YXRlIgVkZWJ1ZyILbG9ja0FjdGlvbnMiCGNmZ0FycmF5Igphc3NldElkU3RyIglwbXRBbW91bnQiDm5leHRVc2VyTnVtS0VZIg51c2VySXNFeGlzdGluZyIHY29lZmZYOCIOZ1d4QW1vdW50U3RhcnQiE2dXeFBhcmFtc1Jlc3VsdExpc3QiA2FyciIRZmFjdG9yeUFkZHJlc3NTdHIiDmxvY2tBc3NldElkU3RyIgttaW5EdXJhdGlvbiILbWF4RHVyYXRpb24iC2NoZWNrQ2FsbGVyIg9yZWZlcnJlckFkZHJlc3MiCXNpZ25hdHVyZSINJHQwMjI5ODUyMzA1MCIRbG9ja0FjdGlvbnNSZXN1bHQiD3JlZmVycmFsQWRkcmVzcyIGcmVmSW52IhF1cGRhdGVSZWZBY3Rpdml0eSINJHQwMjM1MDgyMzU3MyINZGVsdGFEdXJhdGlvbiIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIhFyZW1haW5pbmdEdXJhdGlvbiINdXNlckFtb3VudE5ldyIPbG9ja0R1cmF0aW9uTmV3Igxsb2NrU3RhcnROZXciC2N1cnJVc2VyR3d4Igdnd3hEaWZmIhJ1c2VyTWF4Qm9vc3RJbnROZXciGHJlbWFpbmluZ1VzZXJNYXhCb29zdEludCITdXNlck1heEJvb3N0SW50RGlmZiINJHQwMjg1NTIyODY1NCINJHQwMjg3ODYyODg4NyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXlsAAFhAgJfXwABYgAIAAFjAIDC1y8AAWQFAWMBAWUCAWYBZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAWYFAWcJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWcCDyBpcyBub3QgZGVmaW5lZAEBaAIBZgFnCQELdmFsdWVPckVsc2UCCQCaCAIFAWYFAWcAAAEBaQMBZgFnAWoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZgUBZwUBagEBawIBZgFnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZgUBZwkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBZwIPIGlzIG5vdCBkZWZpbmVkAQFsAQFtAwkAZgIAAAUBbQkBAS0BBQFtBQFtAQFuAQFtBAFvBQFtAwkAAQIFAW8CCUxpc3RbQW55XQQBcAUBbwUBcAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEBcQEBbQQBbwUBbQMJAAECBQFvAgNJbnQEAXIFAW8FAXIJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBAXMACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgZjb25maWcJAMwIAgIYcmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzBQNuaWwFAWEAAXQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFlAgUEdGhpcwkBAXMAAAF1CQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAgtwcm9ncmFtTmFtZQUDbmlsBQFhAAF2AgZ3eGxvY2sAAXcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBdQUBdgEBeAACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAXkAAQABegACAAFBAAMAAUIABAABQwAFAAFEAAYAAUUABwABRgAIAAFHAAkAAUgACgABSQALAQFKAAIRJXNfX2ZhY3RvcnlDb25maWcBAUsBAUwJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUBTAkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUBYQEBTQACECVzX19scFRva2Vuc0xpc3QBAU4BAUwJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUBTAkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUBYQEBTwEBUAkAuQkCCQDMCAICBCVzJXMJAMwIAgIKcG9vbFdlaWdodAkAzAgCBQFQBQNuaWwFAWEBAVECAVIBUwkArAICCQCsAgIJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQFSAgJfXwkApAMBBQFTAQFUAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAWUCBQR0aGlzCQEBeAABAVUACQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgkBAVQACQEBTQACAAUBYQEBVgEBVwkAtQkCCQEBZQIFAVcJAQFKAAUBYQEBWAEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQF6AQFaAQFZCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAVkFAUMBAmFhAQFZCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAVkFAXkBAmFiAQFZCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAVkFAUgBAmFjAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFkAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQJhZQACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAECYWYAAh4lcyVzX19yYXRlUGVyQmxvY2tNYXhfX2N1cnJlbnQBAmFnAAIaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBAmFoAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uAQJhaQACGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawECYWoAAg4lc19fbmV4dFBlcmlvZAECYWsAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AAJhbAABAAJhbQACAAJhbgADAAJhbwAEAAJhcAAFAQJhcQACCiVzX19jb25maWcBAmFyAAkAtQkCCQEBZQIFBHRoaXMJAQJhcQAFAWEAAmFzCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIJAQJhcgAFAmFwAQJhdAUCYXUCYXYCYXcCYXgCYXMJALkJAgkAzAgCAgglcyVkJWQlZAkAzAgCBQJhdQkAzAgCBQJhdgkAzAgCBQJhdwkAzAgCBQJheAkAzAgCBQJhcwUDbmlsBQFhAQJheQUCYXUCYXYCYXcCYXgCYXMJAQJhdAUFAmF1CQCkAwEFAmF2CQCkAwEFAmF3CQCkAwEFAmF4BQJhcwECYXoABAFvCQCiCAEJAQJhYwADCQABAgUBbwIGU3RyaW5nBAJhQQUBbwkA2QQBBQJhQQMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFCAAQBbwkAoggBCQECYWQAAwkAAQIFAW8CBlN0cmluZwQCYUEFAW8JANkEAQUCYUEDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhQwECYUQEAmFFCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAW8JAQJhegADCQABAgUBbwIKQnl0ZVZlY3RvcgQCYUYFAW8DCQAAAggFAmFED2NhbGxlclB1YmxpY0tleQUCYUYGBQJhRQMJAAECBQFvAgRVbml0AwkAAAIIBQJhRAZjYWxsZXIFBHRoaXMGBQJhRQkAAgECC01hdGNoIGVycm9yAAJhRwABAAJhSAACAAJhSQADAAJhSgAEAAJhSwAFAAJhTAAGAQJhTQECYU4JALkJAgkAzAgCAgolcyVzX19sb2NrCQDMCAIFAmFOBQNuaWwFAWEBAmFPAQJhTgkAtQkCCQEBZQIFBHRoaXMJAQJhTQEFAmFOBQFhAQJhUAgCYVECYVICYVMCYVQCYVUCYVYCYVcCYVgJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIFAmFRCQDMCAIFAmFSCQDMCAIFAmFTCQDMCAIFAmFUCQDMCAIFAmFVCQDMCAIFAmFWCQDMCAIFAmFXCQDMCAIFAmFYBQNuaWwFAWEBAmFZBwJhUQJhUgJhUwJhVAJhVQJhVgJhWAkBAmFQCAUCYVEJAKQDAQUCYVIJAKQDAQUCYVMJAKQDAQUCYVQJAKQDAQUCYVUJAKQDAQUCYVYJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAKQDAQUCYVgBAmFaAAIPJXNfX25leHRVc2VyTnVtAQJiYQECYU4JALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX3VzZXIybnVtCQDMCAIFAmFOBQNuaWwFAWEBAmJiAQFTCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQFTBQNuaWwFAWEBAmJjAQJhUQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVEJAMwIAgIGYW1vdW50BQNuaWwFAWEBAmJkAQJhUQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVEJAMwIAgIFc3RhcnQFA25pbAUBYQECYmUBAmFRCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUQkAzAgCAghkdXJhdGlvbgUDbmlsBQFhAQJiZgECYVEJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFRCQDMCAICAWsFA25pbAUBYQECYmcBAmFRCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUQkAzAgCAgFiBQNuaWwFAWEBAmJoAgJhUQJiaQkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFAmFRCQDMCAICAWsJAMwIAgUCYmkFA25pbAUBYQECYmoCAmFRAmJpCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVEJAMwIAgIBYgkAzAgCBQJiaQUDbmlsBQFhAQJiawACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAECYmwAAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQJibQACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50AQJibgACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50AQJibwECYVEJALkJAgkAzAgCAh4lcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnQJAMwIAgUCYVEFA25pbAUBYQECYnACAmFRAmJxCQC5CQIJAMwIAgIeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQDMCAIFAmFRCQDMCAIFAmJxBQNuaWwFAWEBAmJyAQJhUQkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIFAmFRBQNuaWwFAWEBAmJzAAIYJXMlc19fbWF4Qm9vc3RJbnRfX3RvdGFsAQJidAECYVEJALkJAgkAzAgCAiQlcyVkX191c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwJAMwIAgUCYVEFA25pbAUBYQECYnUBAmFRCQC5CQIJAMwIAgIWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkAzAgCBQJhUQUDbmlsBQFhAQJidgACFiVzJXNfX2d3eENhY2hlZF9fdG90YWwAAmJ3CQEBVAAAAVkJAQFWAQUCYncAAmJ4CQEBWgEFAVkAAmJ5CQECYWEBBQFZAAJiegkBAmFiAQUBWQECYkEIAmJCAmJDAmFSAmJEAmFUAmJFAmJGAmFEBAJiRwkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmJCCQDMCAIFAmJDCQDMCAIJANgEAQgFAmFEDXRyYW5zYWN0aW9uSWQFA25pbAUBYQQCYkgJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGBQNuaWwFAWEJAQtTdHJpbmdFbnRyeQIFAmJHBQJiSAECYkkEAmJKAmJLAmJMAmJNBAJiTgkBAmJsAAQCYk8JAQJibQAEAmJQCQECYm4ABAJiUQkBAmJrAAQCYlIJAQFoAgUEdGhpcwUCYk4EAmJTCQEBaAIFBHRoaXMFAmJPBAJiVAkBAWgCBQR0aGlzBQJiUAQCYlUJAQFoAgUEdGhpcwUCYlEJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJOCQBkAgUCYlIFAmJLCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiTwkAZAIFAmJTBQJiTAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYlAJAGQCBQJiVAUCYk0JAMwIAgkBDEludGVnZXJFbnRyeQIFAmJRCQBkAgUCYlUFAmJKBQNuaWwBAmJWAwJiVwJiWAJiWQQCYloA6AcJAGkCCQBkAgkAaAIFAmJXBQJiWQUCYlgFAmJaAQJjYQgCYU4CYVECYVICYVMCYVQCYkUCYkYCYmkEAmNiCQECYmMBBQJhUQQCY2MJAQJiZAEFAmFRBAJjZAkBAmJlAQUCYVEEAmNlCQECYmYBBQJhUQQCY2YJAQJiZwEFAmFRBAJjZwkBAmJoAgUCYVEFAmJpBAJjaAkBAmJqAgUCYVEFAmJpBAJhWAkBAmJWAwUCYkUFAmJGBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNiBQJhUgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2MFAmFTCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjZAUCYVQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNlBQJiRQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2YFAmJGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjZwUCYkUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNoBQJiRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYU0BBQJhTgkBAmFZBwUCYVEFAmFSBQJhUwUCYVQFAmJFBQJiRgUCYVgFA25pbAECY2kCAmFEAmNqAwkAZgIJAJADAQgFAmFECHBheW1lbnRzAAEJAAIBAhtvbmx5IG9uZSBwYXltZW50IGlzIGFsbG93ZWQDCQAAAgkAkAMBCAUCYUQIcGF5bWVudHMAAAAABAJjawkAkQMCCAUCYUQIcGF5bWVudHMAAAMJAQIhPQIJAQV2YWx1ZQEIBQJjawdhc3NldElkBQJjagkAAgECG2ludmFsaWQgYXNzZXQgaWQgaW4gcGF5bWVudAgFAmNrBmFtb3VudAECY2wCAmFOAmNtBAJjbgIFZW1wdHkEAmNvCQECYmEBBQJhTgQCYVEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUCY28FAmNuBAJiRQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYmYBBQJhUQAABAJiRgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYmcBBQJhUQAABAJjcAkBAmJWAwUCYkUFAmJGBQJjbQQCYVgDCQBmAgAABQJjcAAABQJjcAUCYVgBAmNxAQJhTgkBAmNsAgUCYU4FBmhlaWdodAECY3IDAmNzAmN0AmN1BAJjbgIFRU1QVFkEAmN2CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhTQEFAmN0BQJjbgMJAAACBQJjdgUCY24JAJUKAwAABQNuaWwCFXVzZXJSZWNvcmQ6OmlzOjplbXB0eQQCY3cJALUJAgUCY3YFAWEEAmN4CQCRAwIFAmN3BQJhRwQCY3kJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYnoJAQJhawAAAAQCY3oCBWVtcHR5BAJjQQMJAQIhPQIFAmNzBQJjegQCY0IJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJidwkBAUsBBQJjcwkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNzBAJjQwkBEUBleHRyTmF0aXZlKDEwNTApAgUCYncJAQFPAQUCY0IEAmNECQELdmFsdWVPckVsc2UCCQCaCAIFAmJ3CQEBUQIFAmNCAAAFAmNDCQCUCgIFAmNEBQJjQwMFAmN1CQCUCgIAAAAACQACAQkArAICAihub3QgcmVhZG9ubHkgbW9kZTogdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJjcwQCY0UIBQJjQQJfMQQCY0YIBQJjQQJfMgQCY0cJAQFrAgUCYngJAQJhZQAEAmNICQEBawIFAmJ4CQECYWcABAJjSQkBAWsCBQJieAkBAmFpAAQCYlkDCQBmAgUGaGVpZ2h0BQJjSQUCY0kFBmhlaWdodAQCY0oJAJYDAQkAzAgCCQBlAgUCYlkFAmNICQDMCAIAAAUDbmlsBAJjSwkBAmJwAgUCY3gFAmNzBAJjTAkBAmJvAQUCY3gEAmNNCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmNLCQEBaAIFBHRoaXMFAmNMBAJjTgkAaQIJAGgCCQBoAgUCY0cFAmNKAAIAAwQCY08JAGUCBQJjTgUCY00EAmNQCQBrAwUCY08AAwkAaAIAAgUCY0cEAmNRCQBlAgUCYlkFAmNQBAJjUgkAlgMBCQDMCAIJAGUCBQJjeQUCY1EJAMwIAgAABQNuaWwEAmNTCQBlAgkAZQIFAmJZBQJjUQUCY1IDAwMJAGYCAAAFAmNRBgkAZgIAAAUCY1MGCQBnAgkBAWwBCQBlAgkAZAIFAmNSBQJjUwUCY1AAAQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWaW52YWxpZCB1ZGggY2FsYzogdWRoPQkApAMBBQJjUAIIIHVMYXN0SD0JAKQDAQUCY1ECBiB1ZGgwPQkApAMBBQJjUgIGIHVkaDE9CQCkAwEFAmNTAwkAZgIAAAUCY08JAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmNUCQECYnIBBQJjeAQCY1UJAQJicwAEAmNWCQEBaAIFBHRoaXMFAmNUBAJjVwkBAWgCBQR0aGlzBQJjVQQCY1gJAQJidgAEAmNZCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmNYAAAEAmNaCQECY3EBBQJjdAQCZGEJAQJidAEFAmN4BAJkYgkBAWgCBQR0aGlzBQJkYQQCZGMDCQAAAgUCY1AAAAAACQBrAwUCY08FAmNSBQJjUAQCZGQDCQAAAgUCY1AAAAAACQBrAwUCY08FAmNTBQJjUAQCZGUJAGsDBQJkYwUCY0UFAWQEAmRmCQBrAwUCZGQFAmNGBQFkBAJkZwMJAAACBQJjWQAAAAAJAGsDBQJkZQUCY1oFAmNZBAJkaAMJAAACBQJjWQAAAAAJAGsDBQJkZgUCY1oFAmNZBAJkaQkAZAIFAmRnBQJkaAQCZGoJAQJidQEFAmN4BAJkawkBAWgCBQR0aGlzBQJkagQCZGwJAGUCBQJkaQUCZGsEAmRtCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjSwUCY04FA25pbAQCZG4JALkJAgkAzAgCCQCkAwEFAmNNCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBBQJkawkAzAgCCQCkAwEFAmRsCQDMCAIJAKQDAQUCY0UJAMwIAgkApAMBBQJjRgkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCY1AJAMwIAgkApAMBBQJjUQkAzAgCCQCkAwEFAmNSCQDMCAIJAKQDAQUCY1MJAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmNZBQNuaWwCAToJAJUKAwUCZGkFAmRtBQJkbgECZG8CAmFEAmFUBAJkcAkBAmFyAAQCZHEJAJEDAgUCZHAFAmFsBAJhdQkA2QQBBQJkcQQCYXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkcAUCYW0EAmF3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHAFAmFuBAJheAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRwBQJhbwMJAQIhPQIJAJADAQgFAmFECHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjawkAkQMCCAUCYUQIcGF5bWVudHMAAAQCZHIIBQJjawZhbW91bnQDCQECIT0CBQJhdQkBBXZhbHVlAQgFAmNrB2Fzc2V0SWQJAAIBCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJkcQIMIGlzIGV4cGVjdGVkBAJkcwkBAmFaAAQCY3QJAKUIAQgFAmFEBmNhbGxlcgQCZHQJAQlpc0RlZmluZWQBCQCiCAEJAQJiYQEFAmN0BAJjeAMFAmR0CQEFdmFsdWUBCQCiCAEJAQJiYQEFAmN0CQCkAwEJAQFrAgUEdGhpcwUCZHMEAmFRCQENcGFyc2VJbnRWYWx1ZQEFAmN4BAJiRAUGaGVpZ2h0BAJjYwkBAmJkAQUCY3gEAmNkCQECYmUBBQJjeAQCY2IJAQJiYwEFAmN4AwkAZgIFAmF2BQJkcgkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQJhdgMJAGYCBQJhdwUCYVQJAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhdwMJAGYCBQJhVAUCYXgJAAIBCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJheAMDBQJkdAkAZwIJAGQCCQEBawIFBHRoaXMFAmNjCQEBawIFBHRoaXMFAmNkBQJiRAcJAAIBAjZ0aGVyZSBpcyBhbiBhY3RpdmUgbG9jayAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sDCQBmAgkBAWgCBQR0aGlzBQJjYgAACQACAQkArAICAjR0aGVyZSBhcmUgbG9ja2VkIFdYcyAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sgBQJjYgQCZHUJAGsDBQJhVAUBYwUCYXgEAmR2CQBrAwUCZHIFAmR1BQFjBAJkdwkBAW4BCQD8BwQFAmFzAhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZHYJAMwIAgUCYkQJAMwIAgUCYVQFA25pbAUDbmlsBAJiRQkBAXEBCQCRAwIFAmR3AAAEAmJGCQEBcQEJAJEDAgUCZHcAAQQCYmkJAKQDAQkBAXEBCQCRAwIFAmR3AAIEAmNHCQEBawIFAmJ4CQECYWUABAJjSAkBAWsCBQJieAkBAmFnAAQCY0kJAQFrAgUCYngJAQJhaQAEAmJZAwkAZgIFBmhlaWdodAUCY0kFAmNJBQZoZWlnaHQEAmNKCQCWAwEJAMwIAgkAZQIFAmJZBQJjSAkAzAgCAAAFA25pbAQCY0wJAQJibwEFAmN4BAJjTgkAaQIJAGgCCQBoAgUCY0cFAmNKAAIAAwQCY1QJAQJicgEFAmN4BAJjVQkBAmJzAAQCY1YJAGkCCQBoAgUCZHYFAmFUAAIEAmNXCQEBaAIFBHRoaXMFAmNVBAJjWAkBAmJ2AAQCY1kJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCY1gAAAQCZHgDBQJkdAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkcwkAZAIFAmFRAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJhAQUCY3QFAmN4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiYgEFAmN4BQJjdAUDbmlsCQCUCgIJAM4IAgkAzQgCCQDOCAIJAM4IAgUCZHgJAQJjYQgFAmN0BQJjeAUCZHIFAmJEBQJhVAUCYkUFAmJGBQJiaQkBAmJJBAUCZHIFAmFUAAEDBQJkdAAAAAEJAQJiQQgCBGxvY2sFAmN0BQJkcgUCYkQFAmFUBQJiRQUCYkYFAmFECQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjTAUCY04JAMwIAgkBDEludGVnZXJFbnRyeQIFAmNYCQBkAgUCY1kFAmR2BQNuaWwFAmR2CwJhRAELY29uc3RydWN0b3IGAmR5AmR6AmF2AmRBAmRCAmFzBAJkQwkBAmFDAQUCYUQDCQAAAgUCZEMFAmRDCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhWgAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXEACQECYXkFBQJkegUCYXYFAmRBBQJkQgUCYXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAXgABQJkeQUDbmlsCQECYkkEAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUQBB2xvY2tSZWYDAmFUAmREAmRFBAJkRgkBAmRvAgUCYUQFAmFUBAJkRwgFAmRGAl8xBAJkdggFAmRGAl8yBAJkSAkApQgBCAUCYUQGY2FsbGVyBAJkSQMDCQAAAgUCZEQCAAYJAAACBQJkRQEABQR1bml0CQD8BwQFAXQCCmNyZWF0ZVBhaXIJAMwIAgUBdwkAzAgCBQJkRAkAzAgCBQJkSAkAzAgCBQJkRQUDbmlsBQNuaWwDCQAAAgUCZEkFAmRJBAJkSgkA/AcEBQJhcwIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhRAZjYWxsZXIJAMwIAgUCZHYFA25pbAUDbmlsAwkAAAIFAmRKBQJkSgkAlAoCBQJkRwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRAEEbG9jawECYVQEAmRLCQECZG8CBQJhRAUCYVQEAmRHCAUCZEsCXzEEAmR2CAUCZEsCXzIEAmRKCQD8BwQFAmFzAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFEBmNhbGxlcgkAzAgCBQJkdgUDbmlsBQNuaWwDCQAAAgUCZEoFAmRKCQCUCgIFAmRHBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFEAQxpbmNyZWFzZUxvY2sBAmRMBAJkcAkBAmFyAAQCZHEJAJEDAgUCZHAFAmFsBAJhdQkA2QQBBQJkcQQCYXcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkcAUCYW4EAmF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHAFAmFvBAJkcgkBAmNpAgUCYUQFAmF1BAJjdAkApQgBCAUCYUQGY2FsbGVyBAJjdwkBAmFPAQUCY3QEAmN4CQCRAwIFAmN3BQJhRwQCZE0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjdwUCYUgEAmJECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY3cFAmFJBAJkTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmN3BQJhSgQCZE8JAGQCBQJiRAUCZE4EAmRQCQCWAwEJAMwIAgkAZQIFAmRPBQZoZWlnaHQJAMwIAgAABQNuaWwEAmRRCQBkAgUCZE0FAmRyBAJkUgkAZAIFAmRQBQJkTAMJAGYCAAAFAmRMCQACAQIaZHVyYXRpb24gaXMgbGVzcyB0aGVuIHplcm8DCQBmAgUCYXcFAmRSCQACAQkArAICAi1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYXcDCQBmAgUCZFIFAmF4CQACAQkArAICAkRkZWx0YUR1cmF0aW9uICsgZXhpc3RlZExvY2tEdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJheAQCZHUJAGsDBQJkUgUBYwUCYXgEAmR2CQBrAwUCZFEFAmR1BQFjBAJkSgkA/AcEBQJhcwIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhRAZjYWxsZXIJAMwIAgUCZHYFA25pbAUDbmlsAwkAAAIFAmRKBQJkSgQCZFMFBmhlaWdodAQCZHcJAQFuAQkA/AcEBQJhcwIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmR2CQDMCAIFAmRTCQDMCAIFAmRSBQNuaWwFA25pbAQCYkUJAQFxAQkAkQMCBQJkdwAABAJiRgkBAXEBCQCRAwIFAmR3AAEEAmJpCQCkAwEJAQFxAQkAkQMCBQJkdwACBAJjRwkBAWsCBQJieAkBAmFlAAQCY0gJAQFrAgUCYngJAQJhZwAEAmNJCQEBawIFAmJ4CQECYWkABAJiWQMJAGYCBQZoZWlnaHQFAmNJBQJjSQUGaGVpZ2h0BAJjSgkAlgMBCQDMCAIJAGUCBQJiWQUCY0gJAMwIAgAABQNuaWwEAmNMCQECYm8BBQJjeAQCY00JAQFoAgUEdGhpcwUCY0wEAmNOCQBpAgkAaAIJAGgCBQJjRwUCY0oAAgADBAJjTwkAZQIFAmNOBQJjTQMJAGYCAAAFAmNPCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBAJjVAkBAmJyAQUCY3gEAmNVCQECYnMABAJjVgkBAWgCBQR0aGlzBQJjVAQCY1cJAQFoAgUEdGhpcwUCY1UEAmRUCQECY3EBBQJjdAQCZFUJAGUCBQJkdgUCZFQDCQBmAgAABQJkVQkAAgEJAKwCAgIYZ3d4RGlmZiBpcyBsZXNzIHRoZW4gMDogCQCkAwEFAmRVBAJjWAkBAmJ2AAQCY1kJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCY1gAAAQCZGEJAQJidAEFAmN4BAJkYgkBAWgCBQR0aGlzBQJkYQQCZGkJAGsDBQJjTwUCZFQFAmNZBAJkVgkAaQIJAGgCBQJkdgUCZFIAAgQCZFcJAGkCCQBoAgUCZFQFAmRQAAIEAmRYCQBlAgUCZFYFAmRXCQDOCAIJAM0IAgkAzggCCQECY2EIBQJjdAUCY3gFAmRRBQJkUwUCZFIFAmJFBQJiRgUCYmkJAQJiSQQFAmRyBQJkTAAAAAAJAQJiQQgCBGxvY2sFAmN0BQJkcgUCYkQFAmRSBQJiRQUCYkYFAmFECQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjWAkAZAIFAmNZBQJkVQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFEAQxjbGFpbVd4Qm9vc3QCAmNzAmN0AwkBAiE9AgUCYnkIBQJhRAZjYWxsZXIJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmRZCQECY3IDBQJjcwUCY3QHBAJkbAgFAmRZAl8xBAJkbQgFAmRZAl8yBAJkbggFAmRZAl8zCQCUCgIFAmRtCQDMCAIFAmRsBQNuaWwCYUQBFGNsYWltV3hCb29zdFJFQURPTkxZAgJjcwJjdAQCZFoJAQJjcgMFAmNzBQJjdAYEAmRsCAUCZFoCXzEEAmRtCAUCZFoCXzIEAmRuCAUCZFoCXzMJAJQKAgUDbmlsCQDMCAIFAmRsCQDMCAIFAmRuBQNuaWwCYUQBBnVubG9jawECYU4EAmN3CQECYU8BBQJhTgQCY3gJAJEDAgUCY3cFAmFHBAJkTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmN3BQJhSAQCYkQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjdwUCYUkEAmROCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY3cFAmFKBAJkTwkAZAIFAmJEBQJkTgQCZHAJAQJhcgAEAmF1CQDZBAEJAJEDAgUCZHAFAmFsAwkAZwIFAmRPBQZoZWlnaHQJAAIBCQCsAgIJAKwCAgIFd2FpdCAJAKQDAQUCZE8CCiB0byB1bmxvY2sDCQBnAgAABQJkTQkAAgECEW5vdGhpbmcgdG8gdW5sb2NrBAJiaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQJhcwkBAmFqAAAACQDNCAIJAM0IAgkAzggCCQECY2EIBQJhTgUCY3gAAAUCYkQFAmROAAAAAAkApAMBBQJiaQkBAmJJBAkBAS0BBQJkTQAAAAAA////////////AQkBAmJBCAIGdW5sb2NrBQJhTgUCZE0FAmJEBQJkTgAAAAAFAmFECQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhTgUCZE0FAmF1AmFEARNnd3hVc2VySW5mb1JFQURPTkxZAQJhTgQCYVgJAQJjcQEFAmFOCQCUCgIFA25pbAkAzAgCBQJhWAUDbmlsAmFEASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYU4CY20EAmFYCQECY2wCBQJhTgUCY20JAJQKAgUDbmlsBQJhWAJhRAEKc2V0TWFuYWdlcgECZWEEAmRDCQECYUMBBQJhRAMJAAACBQJkQwUCZEMEAmViCQDZBAEFAmVhAwkAAAIFAmViBQJlYgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJlYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFEAQ5jb25maXJtTWFuYWdlcgAEAmVjCQECYUIABAJlZAMJAQlpc0RlZmluZWQBBQJlYwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZWQFAmVkBAJlZQMJAAACCAUCYUQPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlYwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZWUFAmVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAJANgEAQkBBXZhbHVlAQUCZWMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFkAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlZgECZWcABAJlaAQBbwkBAmF6AAMJAAECBQFvAgpCeXRlVmVjdG9yBAJhRgUBbwUCYUYDCQABAgUBbwIEVW5pdAgFAmVmD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJlZglib2R5Qnl0ZXMJAJEDAggFAmVmBnByb29mcwAABQJlaCqHjQ8=", "chainId": 84, "height": 2346704, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2fEEN3q6s94quRF4Wh34BHKjkFUnvdo9nbCzk29pccJs Next: BRm8bE6438nAGhZAQ9FmCE6t2bXYfQXTVxQsvkpZsFQu Diff:
OldNewDifferences
305305 func bv () = "%s%s__gwxCached__total"
306306
307307
308-func bw () = "%s__gwxCachedTotalCorrective"
308+let bw = T()
309309
310+let Y = V(bw)
310311
311-let bx = T()
312+let bx = Z(Y)
312313
313-let Y = V(bx)
314+let by = aa(Y)
314315
315-let by = Z(Y)
316+let bz = ab(Y)
316317
317-let bz = aa(Y)
318-
319-let bA = ab(Y)
320-
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))
331- else false
332- let bL = if (if (bK)
333- then bC
334- else false)
335- then valueOrElse(getInteger(this, bw()), 0)
336- else 0
337- max([0, (bJ + bL)])
318+func bA (bB,bC,aR,bD,aT,bE,bF,aD) = {
319+ let bG = makeString(["%s%s%s%s__history", bB, bC, toBase58String(aD.transactionId)], a)
320+ let bH = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bD), toString(aT), toString(bE), toString(bF)], a)
321+ StringEntry(bG, bH)
338322 }
339323
340324
341-func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342- let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343- let bT = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bP), toString(aT), toString(bQ), toString(bR)], a)
344- StringEntry(bS, bT)
325+func bI (bJ,bK,bL,bM) = {
326+ let bN = bl()
327+ let bO = bm()
328+ let bP = bn()
329+ let bQ = bk()
330+ let bR = h(this, bN)
331+ let bS = h(this, bO)
332+ let bT = h(this, bP)
333+ let bU = h(this, bQ)
334+[IntegerEntry(bN, (bR + bK)), IntegerEntry(bO, (bS + bL)), IntegerEntry(bP, (bT + bM)), IntegerEntry(bQ, (bU + bJ))]
345335 }
346336
347337
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)
356- let cg = h(this, cc)
357-[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
338+func bV (bW,bX,bY) = {
339+ let bZ = 1000
340+ (((bW * bY) + bX) / bZ)
358341 }
359342
360343
361-func ch (ci,cj,ck) = {
362- let cl = 1000
363- (((ci * ck) + cj) / cl)
344+func ca (aN,aQ,aR,aS,aT,bE,bF,bi) = {
345+ let cb = bc(aQ)
346+ let cc = bd(aQ)
347+ let cd = be(aQ)
348+ let ce = bf(aQ)
349+ let cf = bg(aQ)
350+ let cg = bh(aQ, bi)
351+ let ch = bj(aQ, bi)
352+ let aX = bV(bE, bF, height)
353+[IntegerEntry(cb, aR), IntegerEntry(cc, aS), IntegerEntry(cd, aT), IntegerEntry(ce, bE), IntegerEntry(cf, bF), IntegerEntry(cg, bE), IntegerEntry(ch, bF), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bE, bF, aX))]
364354 }
365355
366356
367-func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368- let cn = bc(aQ)
369- let co = bd(aQ)
370- let cp = be(aQ)
371- let cq = bf(aQ)
372- let cr = bg(aQ)
373- let cs = bh(aQ, bi)
374- let ct = bj(aQ, bi)
375- let aX = ch(bQ, bR, height)
376-[IntegerEntry(cn, aR), IntegerEntry(co, aS), IntegerEntry(cp, aT), IntegerEntry(cq, bQ), IntegerEntry(cr, bR), IntegerEntry(cs, bQ), IntegerEntry(ct, bR), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bQ, bR, aX))]
377- }
378-
379-
380-func cu (aD,cv) = if ((size(aD.payments) > 1))
357+func ci (aD,cj) = if ((size(aD.payments) > 1))
381358 then throw("only one payment is allowed")
382359 else if ((size(aD.payments) == 0))
383360 then 0
384361 else {
385- let cw = aD.payments[0]
386- if ((value(cw.assetId) != cv))
362+ let ck = aD.payments[0]
363+ if ((value(ck.assetId) != cj))
387364 then throw("invalid asset id in payment")
388- else cw.amount
365+ else ck.amount
389366 }
390367
391368
392-func cx (aN,cy) = {
393- let cz = "empty"
394- let cA = ba(aN)
395- let aQ = valueOrElse(getString(cA), cz)
396- let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397- let bR = valueOrElse(getInteger(bg(aQ)), 0)
398- let cB = ch(bQ, bR, cy)
399- let aX = if ((0 > cB))
369+func cl (aN,cm) = {
370+ let cn = "empty"
371+ let co = ba(aN)
372+ let aQ = valueOrElse(getString(co), cn)
373+ let bE = valueOrElse(getInteger(bf(aQ)), 0)
374+ let bF = valueOrElse(getInteger(bg(aQ)), 0)
375+ let cp = bV(bE, bF, cm)
376+ let aX = if ((0 > cp))
400377 then 0
401- else cB
378+ else cp
402379 aX
403380 }
404381
405382
406-func cC (aN) = cx(aN, height)
383+func cq (aN) = cl(aN, height)
407384
408385
409-func cD (cE,cF,cG) = {
410- let cz = "EMPTY"
411- let cH = valueOrElse(getString(this, aM(cF)), cz)
412- if ((cH == cz))
386+func cr (cs,ct,cu) = {
387+ let cn = "EMPTY"
388+ let cv = valueOrElse(getString(this, aM(ct)), cn)
389+ if ((cv == cn))
413390 then $Tuple3(0, nil, "userRecord::is::empty")
414391 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))
392+ let cw = split(cv, a)
393+ let cx = cw[aG]
394+ let cy = valueOrElse(getInteger(bz, ak()), 0)
395+ let cz = "empty"
396+ let cA = if ((cs != cz))
420397 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)
398+ let cB = valueOrErrorMessage(getString(bw, K(cs)), ("unsupported lp asset " + cs))
399+ let cC = getIntegerValue(bw, O(cB))
400+ let cD = valueOrElse(getInteger(bw, Q(cB, 0)), cC)
401+ $Tuple2(cD, cC)
425402 }
426- else if (cG)
403+ else if (cu)
427404 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
405+ else throw(("not readonly mode: unsupported lp asset " + cs))
406+ let cE = cA._1
407+ let cF = cA._2
408+ let cG = k(bx, ae())
409+ let cH = k(bx, ag())
410+ let cI = k(bx, ai())
411+ let bY = if ((height > cI))
412+ then cI
436413 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))
414+ let cJ = max([(bY - cH), 0])
415+ let cK = bp(cx, cs)
416+ let cL = bo(cx)
417+ let cM = valueOrElse(getInteger(this, cK), h(this, cL))
418+ let cN = (((cG * cJ) * 2) / 3)
419+ let cO = (cN - cM)
420+ let cP = fraction(cO, 3, (2 * cG))
421+ let cQ = (bY - cP)
422+ let cR = max([(cy - cQ), 0])
423+ let cS = ((bY - cQ) - cR)
424+ if (if (if ((0 > cQ))
448425 then true
449- else (0 > de))
426+ else (0 > cS))
450427 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))
428+ else (l(((cR + cS) - cP)) >= 1))
429+ then throw(((((((("invalid udh calc: udh=" + toString(cP)) + " uLastH=") + toString(cQ)) + " udh0=") + toString(cR)) + " udh1=") + toString(cS)))
430+ else if ((0 > cO))
454431 then throw("wrong calculations")
455432 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))
433+ let cT = br(cx)
434+ let cU = bs()
435+ let cV = h(this, cT)
436+ let cW = h(this, cU)
437+ let cX = bv()
438+ let cY = valueOrElse(getInteger(this, cX), 0)
439+ let cZ = cq(ct)
440+ let da = bt(cx)
441+ let db = h(this, da)
442+ let dc = if ((cP == 0))
465443 then 0
466- else fraction(da, dd, db)
467- let do = if ((db == 0))
444+ else fraction(cO, cR, cP)
445+ let dd = if ((cP == 0))
468446 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))
447+ else fraction(cO, cS, cP)
448+ let de = fraction(dc, cE, d)
449+ let df = fraction(dd, cF, d)
450+ let dg = if ((cY == 0))
473451 then 0
474- else fraction(dp, dk, dj)
475- let ds = if ((dj == 0))
452+ else fraction(de, cZ, cY)
453+ let dh = if ((cY == 0))
476454 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)
455+ else fraction(df, cZ, cY)
456+ let di = (dg + dh)
457+ let dj = bu(cx)
458+ let dk = h(this, dj)
459+ let dl = (di - dk)
460+ let dm = [IntegerEntry(cK, cN)]
461+ let dn = makeString([toString(cM), toString(cO), toString(dk), toString(dl), toString(cE), toString(cF), toString(bY), toString(cP), toString(cQ), toString(cR), toString(cS), toString(cZ), toString(cY)], ":")
462+ $Tuple3(di, dm, dn)
485463 }
486464 }
487465 }
488466
489467
490-func dz (aD,aT) = {
491- let dA = ar()
492- let dB = dA[al]
493- let au = fromBase58String(dB)
494- let av = parseIntValue(dA[am])
495- let aw = parseIntValue(dA[an])
496- let ax = parseIntValue(dA[ao])
468+func do (aD,aT) = {
469+ let dp = ar()
470+ let dq = dp[al]
471+ let au = fromBase58String(dq)
472+ let av = parseIntValue(dp[am])
473+ let aw = parseIntValue(dp[an])
474+ let ax = parseIntValue(dp[ao])
497475 if ((size(aD.payments) != 1))
498476 then throw("invalid payment - exact one payment must be attached")
499477 else {
500- let cw = aD.payments[0]
501- let dC = cw.amount
502- if ((au != value(cw.assetId)))
503- then throw((("invalid asset is in payment - " + dB) + " is expected"))
478+ let ck = aD.payments[0]
479+ let dr = ck.amount
480+ if ((au != value(ck.assetId)))
481+ then throw((("invalid asset is in payment - " + dq) + " is expected"))
504482 else {
505- let dD = aZ()
506- let cF = toString(aD.caller)
507- let dE = isDefined(getString(ba(cF)))
508- let cJ = if (dE)
509- then value(getString(ba(cF)))
510- else toString(k(this, dD))
511- let aQ = parseIntValue(cJ)
512- let bP = height
513- let co = bd(cJ)
514- let cp = be(cJ)
515- let cn = bc(cJ)
516- if ((av > dC))
483+ let ds = aZ()
484+ let ct = toString(aD.caller)
485+ let dt = isDefined(getString(ba(ct)))
486+ let cx = if (dt)
487+ then value(getString(ba(ct)))
488+ else toString(k(this, ds))
489+ let aQ = parseIntValue(cx)
490+ let bD = height
491+ let cc = bd(cx)
492+ let cd = be(cx)
493+ let cb = bc(cx)
494+ if ((av > dr))
517495 then throw(("amount is less then minLockAmount=" + toString(av)))
518496 else if ((aw > aT))
519497 then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520498 else if ((aT > ax))
521499 then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522- else if (if (dE)
523- then ((k(this, co) + k(this, cp)) >= bP)
500+ else if (if (dt)
501+ then ((k(this, cc) + k(this, cd)) >= bD)
524502 else false)
525503 then throw("there is an active lock - consider to use increaseLock")
526- else if ((h(this, cn) > 0))
527- then throw(("there are locked WXs - consider to use increaseLock " + cn))
504+ else if ((h(this, cb) > 0))
505+ then throw(("there are locked WXs - consider to use increaseLock " + cb))
528506 else {
529- let dF = fraction(aT, c, ax)
530- let dG = fraction(dC, dF, c)
531- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532- let bQ = q(dH[0])
533- let bR = q(dH[1])
534- let bi = toString(q(dH[2]))
535- let cS = k(by, ae())
536- let cT = k(by, ag())
537- let cU = k(by, ai())
538- let ck = if ((height > cU))
539- then cU
507+ let du = fraction(aT, c, ax)
508+ let dv = fraction(dr, du, c)
509+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
510+ let bE = q(dw[0])
511+ let bF = q(dw[1])
512+ let bi = toString(q(dw[2]))
513+ let cG = k(bx, ae())
514+ let cH = k(bx, ag())
515+ let cI = k(bx, ai())
516+ let bY = if ((height > cI))
517+ then cI
540518 else height
541- let cV = max([(ck - cT), 0])
542- let cX = bo(cJ)
543- let cZ = (((cS * cV) * 2) / 3)
544- let df = br(cJ)
545- let dg = bs()
546- let dh = ((dG * aT) / 2)
547- let di = h(this, dg)
548- let bJ = bB(false)
549- let dI = if (dE)
519+ let cJ = max([(bY - cH), 0])
520+ let cL = bo(cx)
521+ let cN = (((cG * cJ) * 2) / 3)
522+ let cT = br(cx)
523+ let cU = bs()
524+ let cV = ((dv * aT) / 2)
525+ let cW = h(this, cU)
526+ let cX = bv()
527+ let cY = valueOrElse(getInteger(this, cX), 0)
528+ let dx = if (dt)
550529 then nil
551- else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552- $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
530+ else [IntegerEntry(ds, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
531+ $Tuple2(((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
553532 then 0
554- else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
533+ else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))]), dv)
555534 }
556535 }
557536 }
559538
560539
561540 @Callable(aD)
562-func constructor (dJ,dK,av,dL,dM,as) = {
563- let dN = aC(aD)
564- if ((dN == dN))
565- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
541+func constructor (dy,dz,av,dA,dB,as) = {
542+ let dC = aC(aD)
543+ if ((dC == dC))
544+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, av, dA, dB, as)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
566545 else throw("Strict value is not equal to itself.")
567546 }
568547
569548
570549
571550 @Callable(aD)
572-func lockRef (aT,dO,dP) = {
573- let dQ = dz(aD, aT)
574- let dR = dQ._1
575- let dG = dQ._2
576- let dS = toString(aD.caller)
577- let dT = if (if ((dO == ""))
551+func lockRef (aT,dD,dE) = {
552+ let dF = do(aD, aT)
553+ let dG = dF._1
554+ let dv = dF._2
555+ let dH = toString(aD.caller)
556+ let dI = if (if ((dD == ""))
578557 then true
579- else (dP == base58''))
558+ else (dE == base58''))
580559 then unit
581- else invoke(t, "createPair", [w, dO, dS, dP], nil)
582- if ((dT == dT))
560+ else invoke(t, "createPair", [w, dD, dH, dE], nil)
561+ if ((dI == dI))
583562 then {
584- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585- if ((dU == dU))
586- then $Tuple2(dR, unit)
563+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
564+ if ((dJ == dJ))
565+ then $Tuple2(dG, unit)
587566 else throw("Strict value is not equal to itself.")
588567 }
589568 else throw("Strict value is not equal to itself.")
593572
594573 @Callable(aD)
595574 func lock (aT) = {
596- let dV = dz(aD, aT)
597- let dR = dV._1
598- let dG = dV._2
599- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600- if ((dU == dU))
601- then $Tuple2(dR, unit)
575+ let dK = do(aD, aT)
576+ let dG = dK._1
577+ let dv = dK._2
578+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
579+ if ((dJ == dJ))
580+ then $Tuple2(dG, unit)
602581 else throw("Strict value is not equal to itself.")
603582 }
604583
605584
606585
607586 @Callable(aD)
608-func increaseLock (dW) = {
609- let dA = ar()
610- let dB = dA[al]
611- let au = fromBase58String(dB)
612- let aw = parseIntValue(dA[an])
613- let ax = parseIntValue(dA[ao])
614- let dC = cu(aD, au)
615- let cF = toString(aD.caller)
616- let cI = aO(cF)
617- let cJ = cI[aG]
618- let dX = parseIntValue(cI[aH])
619- let bP = parseIntValue(cI[aI])
620- let dY = parseIntValue(cI[aJ])
621- let dZ = (bP + dY)
622- let ea = max([(dZ - height), 0])
623- let eb = (dX + dC)
624- let ec = (ea + dW)
625- if ((0 > dW))
587+func increaseLock (dL) = {
588+ let dp = ar()
589+ let dq = dp[al]
590+ let au = fromBase58String(dq)
591+ let aw = parseIntValue(dp[an])
592+ let ax = parseIntValue(dp[ao])
593+ let dr = ci(aD, au)
594+ let ct = toString(aD.caller)
595+ let cw = aO(ct)
596+ let cx = cw[aG]
597+ let dM = parseIntValue(cw[aH])
598+ let bD = parseIntValue(cw[aI])
599+ let dN = parseIntValue(cw[aJ])
600+ let dO = (bD + dN)
601+ let dP = max([(dO - height), 0])
602+ let dQ = (dM + dr)
603+ let dR = (dP + dL)
604+ if ((0 > dL))
626605 then throw("duration is less then zero")
627- else if ((aw > ec))
606+ else if ((aw > dR))
628607 then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629- else if ((ec > ax))
608+ else if ((dR > ax))
630609 then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
631610 else {
632- let dF = fraction(ec, c, ax)
633- let dG = fraction(eb, dF, c)
634- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635- if ((dU == dU))
611+ let du = fraction(dR, c, ax)
612+ let dv = fraction(dQ, du, c)
613+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
614+ if ((dJ == dJ))
636615 then {
637- let ed = height
638- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639- let bQ = q(dH[0])
640- let bR = q(dH[1])
641- let bi = toString(q(dH[2]))
642- let cS = k(by, ae())
643- let cT = k(by, ag())
644- let cU = k(by, ai())
645- let ck = if ((height > cU))
646- then cU
616+ let dS = height
617+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, dS, dR], nil))
618+ let bE = q(dw[0])
619+ let bF = q(dw[1])
620+ let bi = toString(q(dw[2]))
621+ let cG = k(bx, ae())
622+ let cH = k(bx, ag())
623+ let cI = k(bx, ai())
624+ let bY = if ((height > cI))
625+ then cI
647626 else height
648- let cV = max([(ck - cT), 0])
649- let cX = bo(cJ)
650- let cY = h(this, cX)
651- let cZ = (((cS * cV) * 2) / 3)
652- let da = (cZ - cY)
653- if ((0 > da))
627+ let cJ = max([(bY - cH), 0])
628+ let cL = bo(cx)
629+ let cM = h(this, cL)
630+ let cN = (((cG * cJ) * 2) / 3)
631+ let cO = (cN - cM)
632+ if ((0 > cO))
654633 then throw("wrong calculations")
655634 else {
656- let df = br(cJ)
657- let dg = bs()
658- let dh = h(this, df)
659- let di = h(this, dg)
660- let ee = cC(cF)
661- let ef = (dG - ee)
662- if ((0 > ef))
663- then throw(("gwxDiff is less then 0: " + toString(ef)))
635+ let cT = br(cx)
636+ let cU = bs()
637+ let cV = h(this, cT)
638+ let cW = h(this, cU)
639+ let dT = cq(ct)
640+ let dU = (dv - dT)
641+ if ((0 > dU))
642+ then throw(("gwxDiff is less then 0: " + toString(dU)))
664643 else {
665- let bJ = bB(false)
666- let dj = bB(true)
667- let dl = bt(cJ)
668- let dm = h(this, dl)
669- let dt = fraction(da, ee, dj)
670- let eg = ((dG * ec) / 2)
671- let eh = ((ee * ea) / 2)
672- let ei = (eg - eh)
673- (((cm(cF, cJ, eb, ed, ec, bQ, bR, bi) ++ bU(dC, dW, 0, 0)) :+ bM("lock", cF, dC, bP, ec, bQ, bR, aD)) ++ [IntegerEntry(bv(), (bJ + ef))])
644+ let cX = bv()
645+ let cY = valueOrElse(getInteger(this, cX), 0)
646+ let da = bt(cx)
647+ let db = h(this, da)
648+ let di = fraction(cO, dT, cY)
649+ let dV = ((dv * dR) / 2)
650+ let dW = ((dT * dP) / 2)
651+ let dX = (dV - dW)
652+ (((ca(ct, cx, dQ, dS, dR, bE, bF, bi) ++ bI(dr, dL, 0, 0)) :+ bA("lock", ct, dr, bD, dR, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dU))])
674653 }
675654 }
676655 }
681660
682661
683662 @Callable(aD)
684-func claimWxBoost (cE,cF) = if ((bz != aD.caller))
663+func claimWxBoost (cs,ct) = if ((by != aD.caller))
685664 then throw("permissions denied")
686665 else {
687- let ej = cD(cE, cF, false)
688- let dw = ej._1
689- let dx = ej._2
690- let dy = ej._3
691- $Tuple2(dx, [dw])
666+ let dY = cr(cs, ct, false)
667+ let dl = dY._1
668+ let dm = dY._2
669+ let dn = dY._3
670+ $Tuple2(dm, [dl])
692671 }
693672
694673
695674
696675 @Callable(aD)
697-func claimWxBoostREADONLY (cE,cF) = {
698- let ek = cD(cE, cF, true)
699- let dw = ek._1
700- let dx = ek._2
701- let dy = ek._3
702- $Tuple2(nil, [dw, dy])
676+func claimWxBoostREADONLY (cs,ct) = {
677+ let dZ = cr(cs, ct, true)
678+ let dl = dZ._1
679+ let dm = dZ._2
680+ let dn = dZ._3
681+ $Tuple2(nil, [dl, dn])
703682 }
704683
705684
706685
707686 @Callable(aD)
708687 func unlock (aN) = {
709- let cI = aO(aN)
710- let cJ = cI[aG]
711- let dX = parseIntValue(cI[aH])
712- let bP = parseIntValue(cI[aI])
713- let dY = parseIntValue(cI[aJ])
714- let dZ = (bP + dY)
715- let dA = ar()
716- let au = fromBase58String(dA[al])
717- if ((dZ >= height))
718- then throw((("wait " + toString(dZ)) + " to unlock"))
719- else if ((0 >= dX))
688+ let cw = aO(aN)
689+ let cx = cw[aG]
690+ let dM = parseIntValue(cw[aH])
691+ let bD = parseIntValue(cw[aI])
692+ let dN = parseIntValue(cw[aJ])
693+ let dO = (bD + dN)
694+ let dp = ar()
695+ let au = fromBase58String(dp[al])
696+ if ((dO >= height))
697+ then throw((("wait " + toString(dO)) + " to unlock"))
698+ else if ((0 >= dM))
720699 then throw("nothing to unlock")
721700 else {
722701 let bi = valueOrElse(getInteger(as, aj()), 0)
723- (((cm(aN, cJ, 0, bP, dY, 0, 0, toString(bi)) ++ bU(-(dX), 0, 0, -1)) :+ bM("unlock", aN, dX, bP, dY, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dX, au))
702+ (((ca(aN, cx, 0, bD, dN, 0, 0, toString(bi)) ++ bI(-(dM), 0, 0, -1)) :+ bA("unlock", aN, dM, bD, dN, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dM, au))
724703 }
725704 }
726705
728707
729708 @Callable(aD)
730709 func gwxUserInfoREADONLY (aN) = {
731- let aX = cC(aN)
710+ let aX = cq(aN)
732711 $Tuple2(nil, [aX])
733712 }
734713
735714
736715
737716 @Callable(aD)
738-func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739- let aX = cx(aN, cy)
717+func getUserGwxAmountAtHeightREADONLY (aN,cm) = {
718+ let aX = cl(aN, cm)
740719 $Tuple2(nil, aX)
741720 }
742721
743722
744723
745724 @Callable(aD)
746-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
747-
748-
749-
750-@Callable(aD)
751-func setManager (el) = {
752- let dN = aC(aD)
753- if ((dN == dN))
725+func setManager (ea) = {
726+ let dC = aC(aD)
727+ if ((dC == dC))
754728 then {
755- let em = fromBase58String(el)
756- if ((em == em))
757- then [StringEntry(ad(), el)]
729+ let eb = fromBase58String(ea)
730+ if ((eb == eb))
731+ then [StringEntry(ad(), ea)]
758732 else throw("Strict value is not equal to itself.")
759733 }
760734 else throw("Strict value is not equal to itself.")
764738
765739 @Callable(aD)
766740 func confirmManager () = {
767- let en = aB()
768- let eo = if (isDefined(en))
741+ let ec = aB()
742+ let ed = if (isDefined(ec))
769743 then true
770744 else throw("No pending manager")
771- if ((eo == eo))
745+ if ((ed == ed))
772746 then {
773- let ep = if ((aD.callerPublicKey == value(en)))
747+ let ee = if ((aD.callerPublicKey == value(ec)))
774748 then true
775749 else throw("You are not pending manager")
776- if ((ep == ep))
777- then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
750+ if ((ee == ee))
751+ then [StringEntry(ac(), toBase58String(value(ec))), DeleteEntry(ad())]
778752 else throw("Strict value is not equal to itself.")
779753 }
780754 else throw("Strict value is not equal to itself.")
781755 }
782756
783757
784-@Verifier(eq)
785-func er () = {
786- let es = {
758+@Verifier(ef)
759+func eg () = {
760+ let eh = {
787761 let o = az()
788762 if ($isInstanceOf(o, "ByteVector"))
789763 then {
791765 aF
792766 }
793767 else if ($isInstanceOf(o, "Unit"))
794- then eq.senderPublicKey
768+ then ef.senderPublicKey
795769 else throw("Match error")
796770 }
797- sigVerify(eq.bodyBytes, eq.proofs[0], es)
771+ sigVerify(ef.bodyBytes, ef.proofs[0], eh)
798772 }
799773
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1313
1414
1515 func h (f,g) = valueOrElse(getInteger(f, g), 0)
1616
1717
1818 func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1919
2020
2121 func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2222
2323
2424 func l (m) = if ((0 > m))
2525 then -(m)
2626 else m
2727
2828
2929 func n (m) = {
3030 let o = m
3131 if ($isInstanceOf(o, "List[Any]"))
3232 then {
3333 let p = o
3434 p
3535 }
3636 else throw("fail to cast into List[Any]")
3737 }
3838
3939
4040 func q (m) = {
4141 let o = m
4242 if ($isInstanceOf(o, "Int"))
4343 then {
4444 let r = o
4545 r
4646 }
4747 else throw("fail to cast into Int")
4848 }
4949
5050
5151 func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5252
5353
5454 let t = addressFromStringValue(e(this, s()))
5555
5656 let u = makeString(["%s%s", "referral", "programName"], a)
5757
5858 let v = "wxlock"
5959
6060 let w = valueOrElse(getString(this, u), v)
6161
6262 func x () = "%s%s__config__factoryAddress"
6363
6464
6565 let y = 1
6666
6767 let z = 2
6868
6969 let A = 3
7070
7171 let B = 4
7272
7373 let C = 5
7474
7575 let D = 6
7676
7777 let E = 7
7878
7979 let F = 8
8080
8181 let G = 9
8282
8383 let H = 10
8484
8585 let I = 11
8686
8787 func J () = "%s__factoryConfig"
8888
8989
9090 func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9191
9292
9393 func M () = "%s__lpTokensList"
9494
9595
9696 func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9797
9898
9999 func O (P) = makeString(["%s%s", "poolWeight", P], a)
100100
101101
102102 func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
103103
104104
105105 func T () = addressFromStringValue(e(this, x()))
106106
107107
108108 func U () = split(valueOrElse(getString(T(), M()), ""), a)
109109
110110
111111 func V (W) = split(e(W, J()), a)
112112
113113
114114 func X (Y) = addressFromStringValue(Y[z])
115115
116116
117117 func Z (Y) = addressFromStringValue(Y[C])
118118
119119
120120 func aa (Y) = addressFromStringValue(Y[y])
121121
122122
123123 func ab (Y) = addressFromStringValue(Y[H])
124124
125125
126126 func ac () = "%s__managerPublicKey"
127127
128128
129129 func ad () = "%s__pendingManagerPublicKey"
130130
131131
132132 func ae () = "%s%s__ratePerBlock__current"
133133
134134
135135 func af () = "%s%s__ratePerBlockMax__current"
136136
137137
138138 func ag () = "%s%s__emission__startBlock"
139139
140140
141141 func ah () = "%s%s__emission__duration"
142142
143143
144144 func ai () = "%s%s__emission__endBlock"
145145
146146
147147 func aj () = "%s__nextPeriod"
148148
149149
150150 func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
151151
152152
153153 let al = 1
154154
155155 let am = 2
156156
157157 let an = 3
158158
159159 let ao = 4
160160
161161 let ap = 5
162162
163163 func aq () = "%s__config"
164164
165165
166166 func ar () = split(e(this, aq()), a)
167167
168168
169169 let as = addressFromStringValue(ar()[ap])
170170
171171 func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
172172
173173
174174 func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
175175
176176
177177 func az () = {
178178 let o = getString(ac())
179179 if ($isInstanceOf(o, "String"))
180180 then {
181181 let aA = o
182182 fromBase58String(aA)
183183 }
184184 else if ($isInstanceOf(o, "Unit"))
185185 then unit
186186 else throw("Match error")
187187 }
188188
189189
190190 func aB () = {
191191 let o = getString(ad())
192192 if ($isInstanceOf(o, "String"))
193193 then {
194194 let aA = o
195195 fromBase58String(aA)
196196 }
197197 else if ($isInstanceOf(o, "Unit"))
198198 then unit
199199 else throw("Match error")
200200 }
201201
202202
203203 func aC (aD) = {
204204 let aE = throw("Permission denied")
205205 let o = az()
206206 if ($isInstanceOf(o, "ByteVector"))
207207 then {
208208 let aF = o
209209 if ((aD.callerPublicKey == aF))
210210 then true
211211 else aE
212212 }
213213 else if ($isInstanceOf(o, "Unit"))
214214 then if ((aD.caller == this))
215215 then true
216216 else aE
217217 else throw("Match error")
218218 }
219219
220220
221221 let aG = 1
222222
223223 let aH = 2
224224
225225 let aI = 3
226226
227227 let aJ = 4
228228
229229 let aK = 5
230230
231231 let aL = 6
232232
233233 func aM (aN) = makeString(["%s%s__lock", aN], a)
234234
235235
236236 func aO (aN) = split(e(this, aM(aN)), a)
237237
238238
239239 func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
240240
241241
242242 func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
243243
244244
245245 func aZ () = "%s__nextUserNum"
246246
247247
248248 func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
249249
250250
251251 func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
252252
253253
254254 func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
255255
256256
257257 func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
258258
259259
260260 func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
261261
262262
263263 func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
264264
265265
266266 func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
267267
268268
269269 func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
270270
271271
272272 func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
273273
274274
275275 func bk () = "%s%s__stats__activeTotalLocked"
276276
277277
278278 func bl () = "%s%s__stats__locksDurationSumInBlocks"
279279
280280
281281 func bm () = "%s%s__stats__locksCount"
282282
283283
284284 func bn () = "%s%s__stats__activeUsersCount"
285285
286286
287287 func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
288288
289289
290290 func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
291291
292292
293293 func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
294294
295295
296296 func bs () = "%s%s__maxBoostInt__total"
297297
298298
299299 func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
300300
301301
302302 func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
303303
304304
305305 func bv () = "%s%s__gwxCached__total"
306306
307307
308-func bw () = "%s__gwxCachedTotalCorrective"
308+let bw = T()
309309
310+let Y = V(bw)
310311
311-let bx = T()
312+let bx = Z(Y)
312313
313-let Y = V(bx)
314+let by = aa(Y)
314315
315-let by = Z(Y)
316+let bz = ab(Y)
316317
317-let bz = aa(Y)
318-
319-let bA = ab(Y)
320-
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))
331- else false
332- let bL = if (if (bK)
333- then bC
334- else false)
335- then valueOrElse(getInteger(this, bw()), 0)
336- else 0
337- max([0, (bJ + bL)])
318+func bA (bB,bC,aR,bD,aT,bE,bF,aD) = {
319+ let bG = makeString(["%s%s%s%s__history", bB, bC, toBase58String(aD.transactionId)], a)
320+ let bH = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bD), toString(aT), toString(bE), toString(bF)], a)
321+ StringEntry(bG, bH)
338322 }
339323
340324
341-func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342- let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343- let bT = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bP), toString(aT), toString(bQ), toString(bR)], a)
344- StringEntry(bS, bT)
325+func bI (bJ,bK,bL,bM) = {
326+ let bN = bl()
327+ let bO = bm()
328+ let bP = bn()
329+ let bQ = bk()
330+ let bR = h(this, bN)
331+ let bS = h(this, bO)
332+ let bT = h(this, bP)
333+ let bU = h(this, bQ)
334+[IntegerEntry(bN, (bR + bK)), IntegerEntry(bO, (bS + bL)), IntegerEntry(bP, (bT + bM)), IntegerEntry(bQ, (bU + bJ))]
345335 }
346336
347337
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)
356- let cg = h(this, cc)
357-[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
338+func bV (bW,bX,bY) = {
339+ let bZ = 1000
340+ (((bW * bY) + bX) / bZ)
358341 }
359342
360343
361-func ch (ci,cj,ck) = {
362- let cl = 1000
363- (((ci * ck) + cj) / cl)
344+func ca (aN,aQ,aR,aS,aT,bE,bF,bi) = {
345+ let cb = bc(aQ)
346+ let cc = bd(aQ)
347+ let cd = be(aQ)
348+ let ce = bf(aQ)
349+ let cf = bg(aQ)
350+ let cg = bh(aQ, bi)
351+ let ch = bj(aQ, bi)
352+ let aX = bV(bE, bF, height)
353+[IntegerEntry(cb, aR), IntegerEntry(cc, aS), IntegerEntry(cd, aT), IntegerEntry(ce, bE), IntegerEntry(cf, bF), IntegerEntry(cg, bE), IntegerEntry(ch, bF), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bE, bF, aX))]
364354 }
365355
366356
367-func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368- let cn = bc(aQ)
369- let co = bd(aQ)
370- let cp = be(aQ)
371- let cq = bf(aQ)
372- let cr = bg(aQ)
373- let cs = bh(aQ, bi)
374- let ct = bj(aQ, bi)
375- let aX = ch(bQ, bR, height)
376-[IntegerEntry(cn, aR), IntegerEntry(co, aS), IntegerEntry(cp, aT), IntegerEntry(cq, bQ), IntegerEntry(cr, bR), IntegerEntry(cs, bQ), IntegerEntry(ct, bR), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bQ, bR, aX))]
377- }
378-
379-
380-func cu (aD,cv) = if ((size(aD.payments) > 1))
357+func ci (aD,cj) = if ((size(aD.payments) > 1))
381358 then throw("only one payment is allowed")
382359 else if ((size(aD.payments) == 0))
383360 then 0
384361 else {
385- let cw = aD.payments[0]
386- if ((value(cw.assetId) != cv))
362+ let ck = aD.payments[0]
363+ if ((value(ck.assetId) != cj))
387364 then throw("invalid asset id in payment")
388- else cw.amount
365+ else ck.amount
389366 }
390367
391368
392-func cx (aN,cy) = {
393- let cz = "empty"
394- let cA = ba(aN)
395- let aQ = valueOrElse(getString(cA), cz)
396- let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397- let bR = valueOrElse(getInteger(bg(aQ)), 0)
398- let cB = ch(bQ, bR, cy)
399- let aX = if ((0 > cB))
369+func cl (aN,cm) = {
370+ let cn = "empty"
371+ let co = ba(aN)
372+ let aQ = valueOrElse(getString(co), cn)
373+ let bE = valueOrElse(getInteger(bf(aQ)), 0)
374+ let bF = valueOrElse(getInteger(bg(aQ)), 0)
375+ let cp = bV(bE, bF, cm)
376+ let aX = if ((0 > cp))
400377 then 0
401- else cB
378+ else cp
402379 aX
403380 }
404381
405382
406-func cC (aN) = cx(aN, height)
383+func cq (aN) = cl(aN, height)
407384
408385
409-func cD (cE,cF,cG) = {
410- let cz = "EMPTY"
411- let cH = valueOrElse(getString(this, aM(cF)), cz)
412- if ((cH == cz))
386+func cr (cs,ct,cu) = {
387+ let cn = "EMPTY"
388+ let cv = valueOrElse(getString(this, aM(ct)), cn)
389+ if ((cv == cn))
413390 then $Tuple3(0, nil, "userRecord::is::empty")
414391 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))
392+ let cw = split(cv, a)
393+ let cx = cw[aG]
394+ let cy = valueOrElse(getInteger(bz, ak()), 0)
395+ let cz = "empty"
396+ let cA = if ((cs != cz))
420397 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)
398+ let cB = valueOrErrorMessage(getString(bw, K(cs)), ("unsupported lp asset " + cs))
399+ let cC = getIntegerValue(bw, O(cB))
400+ let cD = valueOrElse(getInteger(bw, Q(cB, 0)), cC)
401+ $Tuple2(cD, cC)
425402 }
426- else if (cG)
403+ else if (cu)
427404 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
405+ else throw(("not readonly mode: unsupported lp asset " + cs))
406+ let cE = cA._1
407+ let cF = cA._2
408+ let cG = k(bx, ae())
409+ let cH = k(bx, ag())
410+ let cI = k(bx, ai())
411+ let bY = if ((height > cI))
412+ then cI
436413 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))
414+ let cJ = max([(bY - cH), 0])
415+ let cK = bp(cx, cs)
416+ let cL = bo(cx)
417+ let cM = valueOrElse(getInteger(this, cK), h(this, cL))
418+ let cN = (((cG * cJ) * 2) / 3)
419+ let cO = (cN - cM)
420+ let cP = fraction(cO, 3, (2 * cG))
421+ let cQ = (bY - cP)
422+ let cR = max([(cy - cQ), 0])
423+ let cS = ((bY - cQ) - cR)
424+ if (if (if ((0 > cQ))
448425 then true
449- else (0 > de))
426+ else (0 > cS))
450427 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))
428+ else (l(((cR + cS) - cP)) >= 1))
429+ then throw(((((((("invalid udh calc: udh=" + toString(cP)) + " uLastH=") + toString(cQ)) + " udh0=") + toString(cR)) + " udh1=") + toString(cS)))
430+ else if ((0 > cO))
454431 then throw("wrong calculations")
455432 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))
433+ let cT = br(cx)
434+ let cU = bs()
435+ let cV = h(this, cT)
436+ let cW = h(this, cU)
437+ let cX = bv()
438+ let cY = valueOrElse(getInteger(this, cX), 0)
439+ let cZ = cq(ct)
440+ let da = bt(cx)
441+ let db = h(this, da)
442+ let dc = if ((cP == 0))
465443 then 0
466- else fraction(da, dd, db)
467- let do = if ((db == 0))
444+ else fraction(cO, cR, cP)
445+ let dd = if ((cP == 0))
468446 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))
447+ else fraction(cO, cS, cP)
448+ let de = fraction(dc, cE, d)
449+ let df = fraction(dd, cF, d)
450+ let dg = if ((cY == 0))
473451 then 0
474- else fraction(dp, dk, dj)
475- let ds = if ((dj == 0))
452+ else fraction(de, cZ, cY)
453+ let dh = if ((cY == 0))
476454 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)
455+ else fraction(df, cZ, cY)
456+ let di = (dg + dh)
457+ let dj = bu(cx)
458+ let dk = h(this, dj)
459+ let dl = (di - dk)
460+ let dm = [IntegerEntry(cK, cN)]
461+ let dn = makeString([toString(cM), toString(cO), toString(dk), toString(dl), toString(cE), toString(cF), toString(bY), toString(cP), toString(cQ), toString(cR), toString(cS), toString(cZ), toString(cY)], ":")
462+ $Tuple3(di, dm, dn)
485463 }
486464 }
487465 }
488466
489467
490-func dz (aD,aT) = {
491- let dA = ar()
492- let dB = dA[al]
493- let au = fromBase58String(dB)
494- let av = parseIntValue(dA[am])
495- let aw = parseIntValue(dA[an])
496- let ax = parseIntValue(dA[ao])
468+func do (aD,aT) = {
469+ let dp = ar()
470+ let dq = dp[al]
471+ let au = fromBase58String(dq)
472+ let av = parseIntValue(dp[am])
473+ let aw = parseIntValue(dp[an])
474+ let ax = parseIntValue(dp[ao])
497475 if ((size(aD.payments) != 1))
498476 then throw("invalid payment - exact one payment must be attached")
499477 else {
500- let cw = aD.payments[0]
501- let dC = cw.amount
502- if ((au != value(cw.assetId)))
503- then throw((("invalid asset is in payment - " + dB) + " is expected"))
478+ let ck = aD.payments[0]
479+ let dr = ck.amount
480+ if ((au != value(ck.assetId)))
481+ then throw((("invalid asset is in payment - " + dq) + " is expected"))
504482 else {
505- let dD = aZ()
506- let cF = toString(aD.caller)
507- let dE = isDefined(getString(ba(cF)))
508- let cJ = if (dE)
509- then value(getString(ba(cF)))
510- else toString(k(this, dD))
511- let aQ = parseIntValue(cJ)
512- let bP = height
513- let co = bd(cJ)
514- let cp = be(cJ)
515- let cn = bc(cJ)
516- if ((av > dC))
483+ let ds = aZ()
484+ let ct = toString(aD.caller)
485+ let dt = isDefined(getString(ba(ct)))
486+ let cx = if (dt)
487+ then value(getString(ba(ct)))
488+ else toString(k(this, ds))
489+ let aQ = parseIntValue(cx)
490+ let bD = height
491+ let cc = bd(cx)
492+ let cd = be(cx)
493+ let cb = bc(cx)
494+ if ((av > dr))
517495 then throw(("amount is less then minLockAmount=" + toString(av)))
518496 else if ((aw > aT))
519497 then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520498 else if ((aT > ax))
521499 then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522- else if (if (dE)
523- then ((k(this, co) + k(this, cp)) >= bP)
500+ else if (if (dt)
501+ then ((k(this, cc) + k(this, cd)) >= bD)
524502 else false)
525503 then throw("there is an active lock - consider to use increaseLock")
526- else if ((h(this, cn) > 0))
527- then throw(("there are locked WXs - consider to use increaseLock " + cn))
504+ else if ((h(this, cb) > 0))
505+ then throw(("there are locked WXs - consider to use increaseLock " + cb))
528506 else {
529- let dF = fraction(aT, c, ax)
530- let dG = fraction(dC, dF, c)
531- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532- let bQ = q(dH[0])
533- let bR = q(dH[1])
534- let bi = toString(q(dH[2]))
535- let cS = k(by, ae())
536- let cT = k(by, ag())
537- let cU = k(by, ai())
538- let ck = if ((height > cU))
539- then cU
507+ let du = fraction(aT, c, ax)
508+ let dv = fraction(dr, du, c)
509+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
510+ let bE = q(dw[0])
511+ let bF = q(dw[1])
512+ let bi = toString(q(dw[2]))
513+ let cG = k(bx, ae())
514+ let cH = k(bx, ag())
515+ let cI = k(bx, ai())
516+ let bY = if ((height > cI))
517+ then cI
540518 else height
541- let cV = max([(ck - cT), 0])
542- let cX = bo(cJ)
543- let cZ = (((cS * cV) * 2) / 3)
544- let df = br(cJ)
545- let dg = bs()
546- let dh = ((dG * aT) / 2)
547- let di = h(this, dg)
548- let bJ = bB(false)
549- let dI = if (dE)
519+ let cJ = max([(bY - cH), 0])
520+ let cL = bo(cx)
521+ let cN = (((cG * cJ) * 2) / 3)
522+ let cT = br(cx)
523+ let cU = bs()
524+ let cV = ((dv * aT) / 2)
525+ let cW = h(this, cU)
526+ let cX = bv()
527+ let cY = valueOrElse(getInteger(this, cX), 0)
528+ let dx = if (dt)
550529 then nil
551- else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552- $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
530+ else [IntegerEntry(ds, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
531+ $Tuple2(((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
553532 then 0
554- else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
533+ else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))]), dv)
555534 }
556535 }
557536 }
558537 }
559538
560539
561540 @Callable(aD)
562-func constructor (dJ,dK,av,dL,dM,as) = {
563- let dN = aC(aD)
564- if ((dN == dN))
565- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
541+func constructor (dy,dz,av,dA,dB,as) = {
542+ let dC = aC(aD)
543+ if ((dC == dC))
544+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, av, dA, dB, as)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
566545 else throw("Strict value is not equal to itself.")
567546 }
568547
569548
570549
571550 @Callable(aD)
572-func lockRef (aT,dO,dP) = {
573- let dQ = dz(aD, aT)
574- let dR = dQ._1
575- let dG = dQ._2
576- let dS = toString(aD.caller)
577- let dT = if (if ((dO == ""))
551+func lockRef (aT,dD,dE) = {
552+ let dF = do(aD, aT)
553+ let dG = dF._1
554+ let dv = dF._2
555+ let dH = toString(aD.caller)
556+ let dI = if (if ((dD == ""))
578557 then true
579- else (dP == base58''))
558+ else (dE == base58''))
580559 then unit
581- else invoke(t, "createPair", [w, dO, dS, dP], nil)
582- if ((dT == dT))
560+ else invoke(t, "createPair", [w, dD, dH, dE], nil)
561+ if ((dI == dI))
583562 then {
584- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585- if ((dU == dU))
586- then $Tuple2(dR, unit)
563+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
564+ if ((dJ == dJ))
565+ then $Tuple2(dG, unit)
587566 else throw("Strict value is not equal to itself.")
588567 }
589568 else throw("Strict value is not equal to itself.")
590569 }
591570
592571
593572
594573 @Callable(aD)
595574 func lock (aT) = {
596- let dV = dz(aD, aT)
597- let dR = dV._1
598- let dG = dV._2
599- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600- if ((dU == dU))
601- then $Tuple2(dR, unit)
575+ let dK = do(aD, aT)
576+ let dG = dK._1
577+ let dv = dK._2
578+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
579+ if ((dJ == dJ))
580+ then $Tuple2(dG, unit)
602581 else throw("Strict value is not equal to itself.")
603582 }
604583
605584
606585
607586 @Callable(aD)
608-func increaseLock (dW) = {
609- let dA = ar()
610- let dB = dA[al]
611- let au = fromBase58String(dB)
612- let aw = parseIntValue(dA[an])
613- let ax = parseIntValue(dA[ao])
614- let dC = cu(aD, au)
615- let cF = toString(aD.caller)
616- let cI = aO(cF)
617- let cJ = cI[aG]
618- let dX = parseIntValue(cI[aH])
619- let bP = parseIntValue(cI[aI])
620- let dY = parseIntValue(cI[aJ])
621- let dZ = (bP + dY)
622- let ea = max([(dZ - height), 0])
623- let eb = (dX + dC)
624- let ec = (ea + dW)
625- if ((0 > dW))
587+func increaseLock (dL) = {
588+ let dp = ar()
589+ let dq = dp[al]
590+ let au = fromBase58String(dq)
591+ let aw = parseIntValue(dp[an])
592+ let ax = parseIntValue(dp[ao])
593+ let dr = ci(aD, au)
594+ let ct = toString(aD.caller)
595+ let cw = aO(ct)
596+ let cx = cw[aG]
597+ let dM = parseIntValue(cw[aH])
598+ let bD = parseIntValue(cw[aI])
599+ let dN = parseIntValue(cw[aJ])
600+ let dO = (bD + dN)
601+ let dP = max([(dO - height), 0])
602+ let dQ = (dM + dr)
603+ let dR = (dP + dL)
604+ if ((0 > dL))
626605 then throw("duration is less then zero")
627- else if ((aw > ec))
606+ else if ((aw > dR))
628607 then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629- else if ((ec > ax))
608+ else if ((dR > ax))
630609 then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
631610 else {
632- let dF = fraction(ec, c, ax)
633- let dG = fraction(eb, dF, c)
634- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635- if ((dU == dU))
611+ let du = fraction(dR, c, ax)
612+ let dv = fraction(dQ, du, c)
613+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
614+ if ((dJ == dJ))
636615 then {
637- let ed = height
638- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639- let bQ = q(dH[0])
640- let bR = q(dH[1])
641- let bi = toString(q(dH[2]))
642- let cS = k(by, ae())
643- let cT = k(by, ag())
644- let cU = k(by, ai())
645- let ck = if ((height > cU))
646- then cU
616+ let dS = height
617+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, dS, dR], nil))
618+ let bE = q(dw[0])
619+ let bF = q(dw[1])
620+ let bi = toString(q(dw[2]))
621+ let cG = k(bx, ae())
622+ let cH = k(bx, ag())
623+ let cI = k(bx, ai())
624+ let bY = if ((height > cI))
625+ then cI
647626 else height
648- let cV = max([(ck - cT), 0])
649- let cX = bo(cJ)
650- let cY = h(this, cX)
651- let cZ = (((cS * cV) * 2) / 3)
652- let da = (cZ - cY)
653- if ((0 > da))
627+ let cJ = max([(bY - cH), 0])
628+ let cL = bo(cx)
629+ let cM = h(this, cL)
630+ let cN = (((cG * cJ) * 2) / 3)
631+ let cO = (cN - cM)
632+ if ((0 > cO))
654633 then throw("wrong calculations")
655634 else {
656- let df = br(cJ)
657- let dg = bs()
658- let dh = h(this, df)
659- let di = h(this, dg)
660- let ee = cC(cF)
661- let ef = (dG - ee)
662- if ((0 > ef))
663- then throw(("gwxDiff is less then 0: " + toString(ef)))
635+ let cT = br(cx)
636+ let cU = bs()
637+ let cV = h(this, cT)
638+ let cW = h(this, cU)
639+ let dT = cq(ct)
640+ let dU = (dv - dT)
641+ if ((0 > dU))
642+ then throw(("gwxDiff is less then 0: " + toString(dU)))
664643 else {
665- let bJ = bB(false)
666- let dj = bB(true)
667- let dl = bt(cJ)
668- let dm = h(this, dl)
669- let dt = fraction(da, ee, dj)
670- let eg = ((dG * ec) / 2)
671- let eh = ((ee * ea) / 2)
672- let ei = (eg - eh)
673- (((cm(cF, cJ, eb, ed, ec, bQ, bR, bi) ++ bU(dC, dW, 0, 0)) :+ bM("lock", cF, dC, bP, ec, bQ, bR, aD)) ++ [IntegerEntry(bv(), (bJ + ef))])
644+ let cX = bv()
645+ let cY = valueOrElse(getInteger(this, cX), 0)
646+ let da = bt(cx)
647+ let db = h(this, da)
648+ let di = fraction(cO, dT, cY)
649+ let dV = ((dv * dR) / 2)
650+ let dW = ((dT * dP) / 2)
651+ let dX = (dV - dW)
652+ (((ca(ct, cx, dQ, dS, dR, bE, bF, bi) ++ bI(dr, dL, 0, 0)) :+ bA("lock", ct, dr, bD, dR, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dU))])
674653 }
675654 }
676655 }
677656 else throw("Strict value is not equal to itself.")
678657 }
679658 }
680659
681660
682661
683662 @Callable(aD)
684-func claimWxBoost (cE,cF) = if ((bz != aD.caller))
663+func claimWxBoost (cs,ct) = if ((by != aD.caller))
685664 then throw("permissions denied")
686665 else {
687- let ej = cD(cE, cF, false)
688- let dw = ej._1
689- let dx = ej._2
690- let dy = ej._3
691- $Tuple2(dx, [dw])
666+ let dY = cr(cs, ct, false)
667+ let dl = dY._1
668+ let dm = dY._2
669+ let dn = dY._3
670+ $Tuple2(dm, [dl])
692671 }
693672
694673
695674
696675 @Callable(aD)
697-func claimWxBoostREADONLY (cE,cF) = {
698- let ek = cD(cE, cF, true)
699- let dw = ek._1
700- let dx = ek._2
701- let dy = ek._3
702- $Tuple2(nil, [dw, dy])
676+func claimWxBoostREADONLY (cs,ct) = {
677+ let dZ = cr(cs, ct, true)
678+ let dl = dZ._1
679+ let dm = dZ._2
680+ let dn = dZ._3
681+ $Tuple2(nil, [dl, dn])
703682 }
704683
705684
706685
707686 @Callable(aD)
708687 func unlock (aN) = {
709- let cI = aO(aN)
710- let cJ = cI[aG]
711- let dX = parseIntValue(cI[aH])
712- let bP = parseIntValue(cI[aI])
713- let dY = parseIntValue(cI[aJ])
714- let dZ = (bP + dY)
715- let dA = ar()
716- let au = fromBase58String(dA[al])
717- if ((dZ >= height))
718- then throw((("wait " + toString(dZ)) + " to unlock"))
719- else if ((0 >= dX))
688+ let cw = aO(aN)
689+ let cx = cw[aG]
690+ let dM = parseIntValue(cw[aH])
691+ let bD = parseIntValue(cw[aI])
692+ let dN = parseIntValue(cw[aJ])
693+ let dO = (bD + dN)
694+ let dp = ar()
695+ let au = fromBase58String(dp[al])
696+ if ((dO >= height))
697+ then throw((("wait " + toString(dO)) + " to unlock"))
698+ else if ((0 >= dM))
720699 then throw("nothing to unlock")
721700 else {
722701 let bi = valueOrElse(getInteger(as, aj()), 0)
723- (((cm(aN, cJ, 0, bP, dY, 0, 0, toString(bi)) ++ bU(-(dX), 0, 0, -1)) :+ bM("unlock", aN, dX, bP, dY, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dX, au))
702+ (((ca(aN, cx, 0, bD, dN, 0, 0, toString(bi)) ++ bI(-(dM), 0, 0, -1)) :+ bA("unlock", aN, dM, bD, dN, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dM, au))
724703 }
725704 }
726705
727706
728707
729708 @Callable(aD)
730709 func gwxUserInfoREADONLY (aN) = {
731- let aX = cC(aN)
710+ let aX = cq(aN)
732711 $Tuple2(nil, [aX])
733712 }
734713
735714
736715
737716 @Callable(aD)
738-func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739- let aX = cx(aN, cy)
717+func getUserGwxAmountAtHeightREADONLY (aN,cm) = {
718+ let aX = cl(aN, cm)
740719 $Tuple2(nil, aX)
741720 }
742721
743722
744723
745724 @Callable(aD)
746-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
747-
748-
749-
750-@Callable(aD)
751-func setManager (el) = {
752- let dN = aC(aD)
753- if ((dN == dN))
725+func setManager (ea) = {
726+ let dC = aC(aD)
727+ if ((dC == dC))
754728 then {
755- let em = fromBase58String(el)
756- if ((em == em))
757- then [StringEntry(ad(), el)]
729+ let eb = fromBase58String(ea)
730+ if ((eb == eb))
731+ then [StringEntry(ad(), ea)]
758732 else throw("Strict value is not equal to itself.")
759733 }
760734 else throw("Strict value is not equal to itself.")
761735 }
762736
763737
764738
765739 @Callable(aD)
766740 func confirmManager () = {
767- let en = aB()
768- let eo = if (isDefined(en))
741+ let ec = aB()
742+ let ed = if (isDefined(ec))
769743 then true
770744 else throw("No pending manager")
771- if ((eo == eo))
745+ if ((ed == ed))
772746 then {
773- let ep = if ((aD.callerPublicKey == value(en)))
747+ let ee = if ((aD.callerPublicKey == value(ec)))
774748 then true
775749 else throw("You are not pending manager")
776- if ((ep == ep))
777- then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
750+ if ((ee == ee))
751+ then [StringEntry(ac(), toBase58String(value(ec))), DeleteEntry(ad())]
778752 else throw("Strict value is not equal to itself.")
779753 }
780754 else throw("Strict value is not equal to itself.")
781755 }
782756
783757
784-@Verifier(eq)
785-func er () = {
786- let es = {
758+@Verifier(ef)
759+func eg () = {
760+ let eh = {
787761 let o = az()
788762 if ($isInstanceOf(o, "ByteVector"))
789763 then {
790764 let aF = o
791765 aF
792766 }
793767 else if ($isInstanceOf(o, "Unit"))
794- then eq.senderPublicKey
768+ then ef.senderPublicKey
795769 else throw("Match error")
796770 }
797- sigVerify(eq.bodyBytes, eq.proofs[0], es)
771+ sigVerify(ef.bodyBytes, ef.proofs[0], eh)
798772 }
799773

github/deemru/w8io/169f3d6 
208.65 ms