tx · 8G2dAhiHhEbuuaAP2TdFzX1bkwfh2HycbVuLN7e8Yn2y

3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C:  -0.02600000 Waves

2022.10.13 17:45 [3336166] smart account 3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C > SELF 0.00000000 Waves

{ "type": 13, "id": "8G2dAhiHhEbuuaAP2TdFzX1bkwfh2HycbVuLN7e8Yn2y", "fee": 2600000, "feeAssetId": null, "timestamp": 1665668585769, "version": 1, "sender": "3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C", "senderPublicKey": "BYLtcNg4P4UcUd6tFdxeuhyRqgkYZujzyfwdEHNmo89c", "proofs": [ "5Rk3Lv48FkiTxmvBsd1HtxTLze6kmj948egSCYwzFYJbr3PiZLfaNYZEjVK7aWvZATWVZeqRYwiTxqh5dzvMVYRw" ], "script": "base64:BgIqCAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSBAoCCAESAwoBARIAWQALcmV2aXNpb25OdW0CKDZhOTRiODQxYjM4N2U1ZDRiZDhiZThmOGVkNWY4MDA1N2VmODYxODYACXNlcGFyYXRvcgICX18AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAGTVVMVFg2CQC2AgEFBU1VTFQ2AAZNVUxUWDgJALYCAQUFTVVMVDgAB01VTFRYMTgJALYCAQCAgJC7utat8A0ACldBVkVTSURTVFICBVdBVkVTAAdXQVZFU0lECQDZBAEFCldBVkVTSURTVFIACURBWU1JTExJUwCAuJkpABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAEAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAACABRJZHhDb250cm9sQ2ZnUnBkRGFwcAADABVJZHhDb250cm9sQ2ZnTWF0aERhcHAABAAcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAAFABVJZHhDb250cm9sQ2ZnUmVzdERhcHAABgAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAABwAcSWR4Q29udHJvbENmZ05zYnRTdGFraW5nRGFwcAAIABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAkAHElkeENvbnRyb2xDZmdTdXJmU3Rha2luZ0RhcHAACgAgSWR4Q29udHJvbENmZ0duc2J0Q29udHJvbGxlckRhcHAACwEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgIJAKwCAgkArAICAgptYW5kYXRvcnkgCQClCAEFB2FkZHJlc3MCAS4FA2tleQIPIGlzIG5vdCBkZWZpbmVkARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEVa2V5R25zYnRGcm9tU3VyZkNvZWZmAAIdJXMlc19fY2ZnX19nbnNidEZyb21TdXJmQ29lZmYBFHJlYWRDb250cm9sQ2ZnT3JGYWlsAQdjb250cm9sCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQdjb250cm9sCQENa2V5Q29udHJvbENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgpjb250cm9sQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKY29udHJvbENmZwUDaWR4CQCsAgICLUNvbnRyb2wgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgAD2NvbnRyb2xDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQERa2V5Q29udHJvbEFkZHJlc3MAAiMzUDVCZmQ1OFBQZk52Qk0ySHk4UWZiY0RxTWVOdHpnN0tmUAAKY29udHJvbENmZwkBFHJlYWRDb250cm9sQ2ZnT3JGYWlsAQUPY29udHJvbENvbnRyYWN0AAxtYXRoQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRVJZHhDb250cm9sQ2ZnTWF0aERhcHAAEG5ldXRyaW5vQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAA9hdWN0aW9uQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAEmduc2J0RnJvbVN1cmZDb2VmZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEVa2V5R25zYnRGcm9tU3VyZkNvZWZmAACsAgEMa2V5Qm9uZEFzc2V0AAINYm9uZF9hc3NldF9pZAEZa2V5QXVjdGlvbkNvbnRyYWN0QWRkcmVzcwACEGF1Y3Rpb25fY29udHJhY3QBEGtleU1pbkxvY2tBbW91bnQAAhElc19fbWluTG9ja0Ftb3VudAEQa2V5U3Rha2VkQXNzZXRJZAACESVzX19zdGFrZWRBc3NldElkARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQlzZXBhcmF0b3IBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIFc3RhcnQFA25pbAUJc2VwYXJhdG9yASZrZXlMb2NrUGFyYW1Wb3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhF2cEVmZmVjdGl2ZUhlaWdodAUDbmlsBQlzZXBhcmF0b3IBEGtleUhpc3RvcnlSZWNvcmQDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICB2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQlzZXBhcmF0b3IBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIRYWN0aXZlVG90YWxMb2NrZWQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c0xvY2tzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAgpsb2Nrc0NvdW50BQNuaWwFCXNlcGFyYXRvcgESa2V5U3RhdHNVc2Vyc0NvdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIQYWN0aXZlVXNlcnNDb3VudAUDbmlsBQlzZXBhcmF0b3IBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQl0aW1lc3RhbXAJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIFc3RhdHMJAMwIAgIPZGVwb3NpdEFtdEJ5RGF5CQDMCAIJAKQDAQUJdGltZXN0YW1wBQNuaWwFCXNlcGFyYXRvcgEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgVzdGF0cwkAzAgCAhBkZXBvc2l0QW10VG90YWxzBQNuaWwFCXNlcGFyYXRvcgENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAhVzdXBwb3J0ZWRSZXdhcmRBc3NldHMBEWtleURlcG9zaXROdW1MYXN0AAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQlzZXBhcmF0b3IBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdXNlclJ3ZEZyb21EZXBOdW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCCmRlcG9zaXROdW0DdGtuCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhVyd2RQZXJOc2J0U3VtQnlEZXBOdW0JAMwIAgkApAMBBQpkZXBvc2l0TnVtCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBCWtleVJld2FyZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA3J3ZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yAQprZXlDbGFpbWVkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDY2xtCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQN0a24JALkJAgkAzAgCAgQlcyVzCQDMCAICDm5vdERpc3RyaWJ1dGVkCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBBXRvWDE4AgdvcmlnVmFsCG9yaWdNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHTVVMVFgxOAUIb3JpZ011bHQBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9NYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRTdHJPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEPdG9BZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAiFjb3VsZG4ndCBwYXJzZSBwYXNzZWQgYWRkcmVzc1N0cj0FCmFkZHJlc3NTdHIBC3RvQXNzZXRWZWN0AQhhc3NldFN0cgMJAAACBQhhc3NldFN0cgUKV0FWRVNJRFNUUgUEdW5pdAkA2QQBBQhhc3NldFN0cgEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBEmFzU3dhcFBhcmFtc1NUUlVDVAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAiMoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50KQQGc3RydWN0BQckbWF0Y2gwBQZzdHJ1Y3QJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBE2Zvcm1hdEhpc3RvcnlSZWNvcmQECW9sZEFtb3VudAhvbGRTdGFydAluZXdBbW91bnQIbmV3U3RhcnQJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUJb2xkQW1vdW50CQDMCAIJAKQDAQUIb2xkU3RhcnQJAMwIAgkApAMBBQluZXdBbW91bnQJAMwIAgkApAMBBQhuZXdTdGFydAUDbmlsBQlzZXBhcmF0b3IBGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAIEdXNlcg5jbGFpbWVkUmV3YXJkcwkAuQkCCQDMCAICCCVzJWQlZCVzCQDMCAIFBHVzZXIJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIFDmNsYWltZWRSZXdhcmRzBQNuaWwFCXNlcGFyYXRvcgESSGlzdG9yeVJlY29yZEVudHJ5BwR0eXBlC3VzZXJBZGRyZXNzBHR4SWQJb2xkQW1vdW50CG9sZFN0YXJ0CW5ld0Ftb3VudAhuZXdTdGFydAkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDBQR0eXBlBQt1c2VyQWRkcmVzcwUEdHhJZAkBE2Zvcm1hdEhpc3RvcnlSZWNvcmQEBQlvbGRBbW91bnQFCG9sZFN0YXJ0BQluZXdBbW91bnQFCG5ld1N0YXJ0ARFDbGFpbUhpc3RvcnlFbnRyeQMLdXNlckFkZHJlc3MEdHhJZA5jbGFpbWVkUmV3YXJkcwkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDAgVjbGFpbQULdXNlckFkZHJlc3MFBHR4SWQJARhmb3JtYXRDbGFpbUhpc3RvcnlSZWNvcmQCCQClCAEFC3VzZXJBZGRyZXNzBQ5jbGFpbWVkUmV3YXJkcwELU3RhdHNSZXN1bHQDDnRvdGFsTG9ja2VkSW5jDGxvY2tDb3VudEluYw11c2Vyc0NvdW50SW5jBApsb2Nrc0NvdW50CQEMZ2V0SW50T3JaZXJvAQkBEmtleVN0YXRzTG9ja3NDb3VudAAECnVzZXJzQ291bnQJAQxnZXRJbnRPclplcm8BCQESa2V5U3RhdHNVc2Vyc0NvdW50AAQLdG90YWxBbW91bnQJAQxnZXRJbnRPclplcm8BCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABA50b3RhbEFtb3VudE5ldwkAZAIFC3RvdGFsQW1vdW50BQ50b3RhbExvY2tlZEluYwkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNMb2Nrc0NvdW50AAkAZAIFCmxvY2tzQ291bnQFDGxvY2tDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVN0YXRzVXNlcnNDb3VudAAJAGQCBQp1c2Vyc0NvdW50BQ11c2Vyc0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABQ50b3RhbEFtb3VudE5ldwUDbmlsBQt0b3RhbEFtb3VudAUOdG90YWxBbW91bnROZXcBD0xvY2tQYXJhbXNFbnRyeQMLdXNlckFkZHJlc3MGYW1vdW50GnZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQULdXNlckFkZHJlc3MFGnZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0BQNuaWwBD2dldFBhcmFtc09yRmFpbAAJAJQKAgkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEGtleVN0YWtlZEFzc2V0SWQACQEMZ2V0SW50T3JGYWlsAQkBEGtleU1pbkxvY2tBbW91bnQAAQxpc0FjdGl2ZVVzZXIBC3VzZXJBZGRyZXNzCQBmAgkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MAAAAAARNnZXRVc2VyUGFyYW1zT3JVbml0AQt1c2VyQWRkcmVzcwMJAQxpc0FjdGl2ZVVzZXIBBQt1c2VyQWRkcmVzcwkAlQoDBwkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MJAQxnZXRJbnRPckZhaWwBCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBQR1bml0ARNnZXRVc2VyUGFyYW1zT3JGYWlsAQt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCsAgIJAKwCAgIFVXNlciAJAKUIAQULdXNlckFkZHJlc3MCDyBpcyBub3QgZGVmaW5lZAASc3VwcG9ydGVkQXNzZXRzU3RyCQEMZ2V0U3RyT3JFbHNlAgkBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwACAAATc3VwcG9ydGVkQXNzZXRzTGlzdAkAtQkCBRJzdXBwb3J0ZWRBc3NldHNTdHICAV8BCmNhbGNSZXdhcmQFC3VzZXJBZGRyZXNzB2Fzc2V0SWQNc3Rha2VkQW1vdW50WA5kZXBvc2l0TnVtVXNlcg5kZXBvc2l0TnVtTGFzdAQXcmV3YXJkUGVyTnNidFN1bUxhc3RLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUHYXNzZXRJZAQKc3VtTGFzdFgxOAkApwMBCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkAgEwBApzdW1Vc2VyWDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bVVzZXIFB2Fzc2V0SWQCATAEEXJld2FyZER5bmFtaWNQYXJ0CQCgAwEJALwCAwkAuAICBQpzdW1MYXN0WDE4BQpzdW1Vc2VyWDE4BQ1zdGFrZWRBbW91bnRYBQdNVUxUWDE4BBNyZXdhcmRDYWNoZWRQYXJ0S0VZCQEJa2V5UmV3YXJkAgULdXNlckFkZHJlc3MFB2Fzc2V0SWQEEHJld2FyZENhY2hlZFBhcnQJAQxnZXRJbnRPckVsc2UCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAJAJYKBAkAZAIFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRByZXdhcmRDYWNoZWRQYXJ0BRFyZXdhcmREeW5hbWljUGFydAUTcmV3YXJkQ2FjaGVkUGFydEtFWQEMdG9TdGFydE9mRGF5AQl0aW1lc3RhbXAJAGgCCQBpAgUJdGltZXN0YW1wBQlEQVlNSUxMSVMFCURBWU1JTExJUwETZmluZEVsZW1lbnRQb3NpdGlvbgMDc3JjB2VsZW1lbnQDc2VwBAxlbGVtZW50U3RhcnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQNzcmMFB2VsZW1lbnQJAKwCAgkArAICCQCsAgICFnRoZXJlIGlzIG5vIHN1YnN0cmluZyAFB2VsZW1lbnQCBCBpbiAFA3NyYwMJAAACBQxlbGVtZW50U3RhcnQAAAAABARsZWZ0CQCvAgIFA3NyYwUMZWxlbWVudFN0YXJ0CQBlAgkAkAMBCQC1CQIFBGxlZnQFA3NlcAABABNEZXBvc2l0VG90YWxzUFJFRklYAiQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQBE3VwZGF0ZURlcG9zaXRUb3RhbHMDB2N1cnJWYWwLaWR4VG9VcGRhdGUIZGVsdGFBbXQEB2N1cnJBcnIJALUJAgUHY3VyclZhbAUDU0VQCgEOdXBkRGVwVG90QnlJZHgBA2lkeAMJAQIhPQIFA2lkeAULaWR4VG9VcGRhdGUJAJEDAgUHY3VyckFycgUDaWR4CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyckFycgUDaWR4BQhkZWx0YUFtdAkAuQkCCQDMCAIFE0RlcG9zaXRUb3RhbHNQUkVGSVgJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQABCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAAgkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAMJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAECQDMCAIJAQ51cGREZXBUb3RCeUlkeAEABQkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAYJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAHCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEACAkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAkJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAKCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEACwkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAwJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQANCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEADgkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAA8JAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAQCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAEQkAzAgCCQEOdXBkRGVwVG90QnlJZHgBABIFA25pbAUDU0VQARVEZXBvc2l0c1RvdGFsc0VudHJpZXMCDWRlcG9zaXRBbW91bnQKYXNzZXRJZFN0cgQKc3RhcnRPZkRheQkBDHRvU3RhcnRPZkRheQEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhieURheUtFWQkBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQUKc3RhcnRPZkRheQQJdG90YWxzS0VZCQEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAQIcG9zaXRpb24JARNmaW5kRWxlbWVudFBvc2l0aW9uAwUSc3VwcG9ydGVkQXNzZXRzU3RyBQphc3NldElkU3RyAgFfBAtkZWZhdWx0REFUQQkArAICBRNEZXBvc2l0VG90YWxzUFJFRklYAjZfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzAEDmN1cnJUb3RhbHNEQVRBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCXRvdGFsc0tFWQULZGVmYXVsdERBVEEEDW5ld1RvdGFsc0RBVEEJARN1cGRhdGVEZXBvc2l0VG90YWxzAwUOY3VyclRvdGFsc0RBVEEJAGQCBQhwb3NpdGlvbgABBQ1kZXBvc2l0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFCXRvdGFsc0tFWQUNbmV3VG90YWxzREFUQQkAzAgCCQELU3RyaW5nRW50cnkCBQhieURheUtFWQUNbmV3VG90YWxzREFUQQUDbmlsAQ1SZXdhcmRFbnRyaWVzAwlpc05ld1VzZXILdXNlckFkZHJlc3MMc3Rha2VkQW1vdW50BA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQULdXNlckFkZHJlc3MEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMTExMjExMTI1NgkBCmNhbGNSZXdhcmQFBQt1c2VyQWRkcmVzcwUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAxMTEyMTExMjU2Al8xBAZjYWNoZWQIBQ0kdDAxMTEyMTExMjU2Al8yBAdkeW5hbWljCAUNJHQwMTExMjExMTI1NgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDExMTIxMTEyNTYCXzQJAM0IAgUFYWNjdW0JAQxJbnRlZ2VyRW50cnkCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZBQtyZXdhcmRUb3RhbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAAAIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHBQNuaWwDAwkAAAIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGYCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwkAAgECL2ludmFsaWQgZGVwb3NpdE51bUxhc3QgYW5kIGRlcG9zaXROdW1Vc2VyIHN0YXRlAwMJAGYCBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQBnAgUOZGVwb3NpdE51bVVzZXIA////////////AQcDBQlpc05ld1VzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QFA25pbAkAzQgCCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBG2ZvckVhY2hBc3NldENhY2hlVXNlclJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJAAIBCQCsAgIJAKwCAgkArAICAiR1bmNvdmVyZWQgY29uZGl0aW9uOiBkZXBvc2l0TnVtTGFzdD0JAKQDAQUOZGVwb3NpdE51bUxhc3QCECBkZXBvc2l0TnVtVXNlcj0JAKQDAQUOZGVwb3NpdE51bVVzZXIBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCA3RrbglhbW91bnRJbmMEF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZCQEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBBQN0a24EFG5vdERpc3RyaWJ1dGVkUmV3YXJkCQEMZ2V0SW50T3JFbHNlAgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJAGQCBRRub3REaXN0cmlidXRlZFJld2FyZAUJYW1vdW50SW5jBQNuaWwBC3N1cmZUb0duc2J0AQdzdXJmQW10CQBpAgUHc3VyZkFtdAUSZ25zYnRGcm9tU3VyZkNvZWZmAR9tZXJnZVZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0BBBxdWFyYW50aW5lUGVyaW9kEXZwRWZmZWN0aXZlSGVpZ2h0CXN0YWtlZEFtdAxzdGFrZWRBbXRORVcED3JlbWFpbmluZ1RvV2FpdAkAZQIFEXZwRWZmZWN0aXZlSGVpZ2h0BQZoZWlnaHQDCQBnAgAABQ9yZW1haW5pbmdUb1dhaXQJAGQCBQZoZWlnaHQFEHF1YXJhbnRpbmVQZXJpb2QEDWFscmVhZHlXYWl0ZWQJAGUCBRBxdWFyYW50aW5lUGVyaW9kBQ9yZW1haW5pbmdUb1dhaXQEA2tYOAMJAQIhPQIFDHN0YWtlZEFtdE5FVwAACQBrAwUJc3Rha2VkQW10BQVNVUxUOAUMc3Rha2VkQW10TkVXBRF2cEVmZmVjdGl2ZUhlaWdodAkAZQIJAGQCBRBxdWFyYW50aW5lUGVyaW9kBQZoZWlnaHQJAGsDBQ1hbHJlYWR5V2FpdGVkBQNrWDgFBU1VTFQ4AQptZXJnZVN0YWtlAgt1c2VyQWRkcmVzcwthbW91bnRUb0FkZAQNJHQwMTQ5MDgxNTAxOAkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDE0OTA4MTUwMTgCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE0OTA4MTUwMTgCXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUNJHQwMTQ5MDgxNTAxOAJfMwQPc3Rha2VkQW1vdW50TkVXAwUJaXNOZXdVc2VyBQthbW91bnRUb0FkZAkAZAIFC2Ftb3VudFRvQWRkBQxzdGFrZWRBbW91bnQEEHF1YXJhbnRpbmVQZXJpb2QJAGgCAKALAA4EFHZwRWZmZWN0aXZlSGVpZ2h0TkVXAwUJaXNOZXdVc2VyCQBkAgUQcXVhcmFudGluZVBlcmlvZAUGaGVpZ2h0CQEfbWVyZ2VWb3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAQFEHF1YXJhbnRpbmVQZXJpb2QFEXZwRWZmZWN0aXZlSGVpZ2h0BQxzdGFrZWRBbW91bnQFD3N0YWtlZEFtb3VudE5FVwkAlwoFBQlpc05ld1VzZXIFDHN0YWtlZEFtb3VudAURdnBFZmZlY3RpdmVIZWlnaHQFD3N0YWtlZEFtb3VudE5FVwUUdnBFZmZlY3RpdmVIZWlnaHRORVcBC2NvbW1vblN0YWtlAgt1c2VyQWRkcmVzcwFpBA0kdDAxNTUwNDE1NTU4CQEPZ2V0UGFyYW1zT3JGYWlsAAQNc3Rha2VkQXNzZXRJZAgFDSR0MDE1NTA0MTU1NTgCXzEEDW1pbkxvY2tBbW91bnQIBQ0kdDAxNTUwNDE1NTU4Al8yAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIVSW52YWxpZCBwYXltZW50cyBzaXplBAdwYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAgFB3BheW1lbnQGYW1vdW50BBNpbnZhbGlkQXNzZXRNZXNzYWdlCQCsAgIJAKwCAgIPSW52YWxpZCBhc3NldC4gCQDYBAEFDXN0YWtlZEFzc2V0SWQCDCBpcyBleHBlY3RlZAQHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUHcGF5bWVudAdhc3NldElkBRNpbnZhbGlkQXNzZXRNZXNzYWdlAwkBAiE9AgUHYXNzZXRJZAUNc3Rha2VkQXNzZXRJZAkAAgEFE2ludmFsaWRBc3NldE1lc3NhZ2UEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzBAptZXJnZWREYXRhCQEKbWVyZ2VTdGFrZQIFC3VzZXJBZGRyZXNzBQZhbW91bnQECWlzTmV3VXNlcggFCm1lcmdlZERhdGECXzEEDHN0YWtlZEFtb3VudAgFCm1lcmdlZERhdGECXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUKbWVyZ2VkRGF0YQJfMwQPc3Rha2VkQW1vdW50TkVXCAUKbWVyZ2VkRGF0YQJfNAQUdnBFZmZlY3RpdmVIZWlnaHRORVcIBQptZXJnZWREYXRhAl81AwkAZgIFDW1pbkxvY2tBbW91bnQFD3N0YWtlZEFtb3VudE5FVwkAAgEJAKwCAgITTWluIGxvY2sgYW1vdW50IGlzIAkApAMBBQ1taW5Mb2NrQW1vdW50BA0kdDAxNjM1NzE2NDU5CQELU3RhdHNSZXN1bHQDBQZhbW91bnQAAQMFCWlzTmV3VXNlcgABAAAEDHN0YXRzRW50cmllcwgFDSR0MDE2MzU3MTY0NTkCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTYzNTcxNjQ1OQJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxNjM1NzE2NDU5Al8zCQDOCAIJAM4IAgkAzggCCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkHAgVzdGFrZQULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQFDHN0YWtlZEFtb3VudAURdnBFZmZlY3RpdmVIZWlnaHQFD3N0YWtlZEFtb3VudE5FVwUUdnBFZmZlY3RpdmVIZWlnaHRORVcFA25pbAkBDVJld2FyZEVudHJpZXMDBQlpc05ld1VzZXIFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQt1c2VyQWRkcmVzcwUPc3Rha2VkQW1vdW50TkVXBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwUMc3RhdHNFbnRyaWVzAQtjb21tb25DbGFpbQILdXNlckFkZHJlc3MBaQQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIZcGF5bWVudHMgYXJlIG5vdCBhY2NlcHRlZAQNJHQwMTY5MzgxNzA0MwkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDE2OTM4MTcwNDMCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE2OTM4MTcwNDMCXzIEDHN0YWtpbmdTdGFydAgFDSR0MDE2OTM4MTcwNDMCXzMEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMTc0MTQxNzU1MgkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAxNzQxNDE3NTUyAl8xBAZjYWNoZWQIBQ0kdDAxNzQxNDE3NTUyAl8yBAdkeW5hbWljCAUNJHQwMTc0MTQxNzU1MgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDE3NDE0MTc1NTICXzQECmNsYWltZWRLRVkJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BA0kdDAxNzYxMjE3NjQ5BQVhY2N1bQQEZGF0YQgFDSR0MDE3NjEyMTc2NDkCXzEEEWNsYWltZWRBbXRCeUFzc2V0CAUNJHQwMTc2MTIxNzY0OQJfMgQHbmV3UGFydAkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwFA25pbAIBOgQUY2xhaW1lZEFtdEJ5QXNzZXROZXcJALkJAgkAzAgCBRFjbGFpbWVkQW10QnlBc3NldAkAzAgCBQduZXdQYXJ0BQNuaWwCAV8DCQBnAgAABQtyZXdhcmRUb3RhbAkAlAoCBQRkYXRhBRRjbGFpbWVkQW10QnlBc3NldE5ldwkAlAoCCQDNCAIJAM0IAgkAzQgCBQRkYXRhCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULcmV3YXJkVG90YWwJAQt0b0Fzc2V0VmVjdAEFBWFzc2V0CQEMSW50ZWdlckVudHJ5AgUKY2xhaW1lZEtFWQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKY2xhaW1lZEtFWQAABQtyZXdhcmRUb3RhbAkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAUUY2xhaW1lZEFtdEJ5QXNzZXROZXcEDSR0MDE4MTA5MTgyMjIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkECXRyYW5zZmVycwgFDSR0MDE4MTA5MTgyMjICXzEEF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0CAUNJHQwMTgxMDkxODIyMgJfMgMJAGcCAAAJAJADAQUJdHJhbnNmZXJzCQCUCgIFA25pbAAACQCUCgIJAM0IAgkAzQgCBQl0cmFuc2ZlcnMJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0CQERQ2xhaW1IaXN0b3J5RW50cnkDBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAsAICBRdjbGFpbWVkQW10QnlBc3NldFJlc3VsdAABCQCQAwEFCXRyYW5zZmVycwsBaQELY29uc3RydWN0b3IDDW1pbkxvY2tBbW91bnQVc3VwcG9ydGVkUmV3YXJkQXNzZXRzDXN0YWtlZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleU1pbkxvY2tBbW91bnQABQ1taW5Mb2NrQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMABRVzdXBwb3J0ZWRSZXdhcmRBc3NldHMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVN0YWtlZEFzc2V0SWQABQ1zdGFrZWRBc3NldElkBQNuaWwBaQEFc3Rha2UACQELY29tbW9uU3Rha2UCCAUBaQZjYWxsZXIFAWkBaQETc3Rha2VCeU9yaWdpbkNhbGxlcgAJAQtjb21tb25TdGFrZQIIBQFpDG9yaWdpbkNhbGxlcgUBaQFpAQd1bnN0YWtlAQZhbW91bnQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAiN1bnN0YWtlIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudAQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MEDSR0MDE5MTU2MTkyMTAJAQ9nZXRQYXJhbXNPckZhaWwABA1zdGFrZWRBc3NldElkCAUNJHQwMTkxNTYxOTIxMAJfMQQNbWluTG9ja0Ftb3VudAgFDSR0MDE5MTU2MTkyMTACXzIEDSR0MDE5MjEzMTkyOTcJARNnZXRVc2VyUGFyYW1zT3JGYWlsAQULdXNlckFkZHJlc3MECWlzTmV3VXNlcggFDSR0MDE5MjEzMTkyOTcCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE5MjEzMTkyOTcCXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUNJHQwMTkyMTMxOTI5NwJfMwQQc3dhcFBhcmFtc1NUUlVDVAkBEmFzU3dhcFBhcmFtc1NUUlVDVAEJAP0HBAUQbmV1dHJpbm9Db250cmFjdAIbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIAAAUDbmlsBQNuaWwEFHN3YXBMaW1pdFNwZW50SW5Vc2RuCAUQc3dhcFBhcmFtc1NUUlVDVAJfMgQOYmxja3MyTG10UmVzZXQIBRBzd2FwUGFyYW1zU1RSVUNUAl8zAwkAZgIFFHN3YXBMaW1pdFNwZW50SW5Vc2RuAAAJAAIBCQCsAgIJAKwCAgItWW91IGhhdmUgYWxyZWFkeSBtYWRlIGEgc3dhcCBvcGVyYXRpb24uIFdhaXQgCQCkAwEJAGQCBQZoZWlnaHQFDmJsY2tzMkxtdFJlc2V0AhIgaGVpZ2h0IHRvIHVuc3Rha2UDCQBnAgAABQxzdGFrZWRBbW91bnQJAAIBAhJOb3RoaW5nIHRvIHVuc3Rha2UDCQBmAgUGYW1vdW50BQxzdGFrZWRBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAgpSZXF1ZXN0ZWQgCQCkAwEFBmFtb3VudAISLCBidXQgc3Rha2VkIG9ubHkgCQCkAwEFDHN0YWtlZEFtb3VudAQPc3Rha2VkQW1vdW50TkVXCQBlAgUMc3Rha2VkQW1vdW50BQZhbW91bnQEDSR0MDE5OTM1MjAwOTMJAQtTdGF0c1Jlc3VsdAMJAQEtAQUGYW1vdW50AwkAAAIFBmFtb3VudAUMc3Rha2VkQW1vdW50AP///////////wEAAAMJAAACBQZhbW91bnQFDHN0YWtlZEFtb3VudAD///////////8BAAAEDHN0YXRzRW50cmllcwgFDSR0MDE5OTM1MjAwOTMCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTk5MzUyMDA5MwJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxOTkzNTIwMDkzAl8zCQDOCAIJAM4IAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQZhbW91bnQFDXN0YWtlZEFzc2V0SWQJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCB3Vuc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkBQxzdGFrZWRBbW91bnQFEXZwRWZmZWN0aXZlSGVpZ2h0BQ9zdGFrZWRBbW91bnRORVcFEXZwRWZmZWN0aXZlSGVpZ2h0BQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwcFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQt1c2VyQWRkcmVzcwUPc3Rha2VkQW1vdW50TkVXBRF2cEVmZmVjdGl2ZUhlaWdodAUMc3RhdHNFbnRyaWVzAWkBB2RlcG9zaXQAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIfZXhhY3QgMSBwYXltZW50IGlzIGFsbG93ZWQgb25seQQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIIBQNwbXQHYXNzZXRJZAUHV0FWRVNJRAQNcG10QXNzZXRJZFN0cgkA2AQBBQpwbXRBc3NldElkBAhwbXRNdWx0WAMJAAACBQpwbXRBc3NldElkBQdXQVZFU0lEBQZNVUxUWDgFBk1VTFRYNgQHYW1vdW50WAkAtgIBBQZhbW91bnQEC3RvdGFsU3Rha2VkCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAABAx0b3RhbFN0YWtlZFgJALYCAQULdG90YWxTdGFrZWQDCQBmAgAABQt0b3RhbFN0YWtlZAkAAgECG1RPRE86IGNhc2UgaXMgbm90IHN1cHBvcnRlZAMJAAACBQt0b3RhbFN0YWtlZAAACQEiSW5jcmVtZW50Tm90RGlzdHJpYnV0ZWRSZXdhcmRFbnRyeQIFDXBtdEFzc2V0SWRTdHIFBmFtb3VudAQQcmV3YXJkUGVyTnNidFgxOAkAvAIDBQdhbW91bnRYBQdNVUxUWDE4BQx0b3RhbFN0YWtlZFgEEWRlcG9zaXROdW1MYXN0S0VZCQERa2V5RGVwb3NpdE51bUxhc3QABA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIFEWRlcG9zaXROdW1MYXN0S0VZAP///////////wEEDWRlcG9zaXROdW1OZXcJAGQCBQ5kZXBvc2l0TnVtTGFzdAABAwkBASEBCQEIY29udGFpbnMCBRJzdXBwb3J0ZWRBc3NldHNTdHIFDXBtdEFzc2V0SWRTdHIJAAIBCQCsAgIJAKwCAgUSc3VwcG9ydGVkQXNzZXRzU3RyAhEgZG9lc24ndCBjb250YWluIAUNcG10QXNzZXRJZFN0cgoBF3JlZnJlc2hSZXdhcmRQZXJOc2J0U1VNAgVhY2N1bQluZXh0QXNzZXQEFnJld2FyZFBlck5zYnRTdW1OZXdLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ1kZXBvc2l0TnVtTmV3BQluZXh0QXNzZXQECnN1bUxhc3RTdHIJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFCW5leHRBc3NldAIBMAkAzQgCBQVhY2N1bQMJAAACBQluZXh0QXNzZXQFDXBtdEFzc2V0SWRTdHIJAQtTdHJpbmdFbnRyeQIFFnJld2FyZFBlck5zYnRTdW1OZXdLRVkJAKYDAQkAtwICCQCnAwEFCnN1bUxhc3RTdHIFEHJld2FyZFBlck5zYnRYMTgJAQtTdHJpbmdFbnRyeQIFFnJld2FyZFBlck5zYnRTdW1OZXdLRVkFCnN1bUxhc3RTdHIJAM4IAgkAzQgCCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBF3JlZnJlc2hSZXdhcmRQZXJOc2J0U1VNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJCQEMSW50ZWdlckVudHJ5AgURZGVwb3NpdE51bUxhc3RLRVkFDWRlcG9zaXROdW1OZXcJARVEZXBvc2l0c1RvdGFsc0VudHJpZXMCBQZhbW91bnQFDXBtdEFzc2V0SWRTdHIBaQEMY2xhaW1SZXdhcmRzAAkBC2NvbW1vbkNsYWltAggFAWkGY2FsbGVyBQFpAWkBGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vbkNsYWltAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQEOdXNlckFkZHJlc3NTdHIKARZmb3JFYWNoQXNzZXRaZXJvUmV3YXJkAgVhY2N1bQVhc3NldAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgIBMAkAzAgCAgEwBQNuaWwCAToCAV8EEnVuY2xhaW1lZFJld2FyZFN0cgMJAAACBQ51c2VyQWRkcmVzc1N0cgIACgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkEC3VzZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQNJHQwMjI3MTcyMjgyMgkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDIyNzE3MjI4MjICXzEEDHN0YWtlZEFtb3VudAgFDSR0MDIyNzE3MjI4MjICXzIEDHN0YWtpbmdTdGFydAgFDSR0MDIyNzE3MjI4MjICXzMEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMjMxNjgyMzMwNgkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAyMzE2ODIzMzA2Al8xBAZjYWNoZWQIBQ0kdDAyMzE2ODIzMzA2Al8yBAdkeW5hbWljCAUNJHQwMjMxNjgyMzMwNgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDIzMTY4MjMzMDYCXzQEB2NsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBCmtleUNsYWltZWQCBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQAAAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgkApAMBBQtyZXdhcmRUb3RhbAkAzAgCCQCkAwEFB2NsYWltZWQFA25pbAIBOgIBXwoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJCQCUCgIFA25pbAkAswICBRJ1bmNsYWltZWRSZXdhcmRTdHIAAQFpARZzdXJmU3Rha2luZ1NZU1JFQURPTkxZAhV1c2VyQWRkcmVzc1N0ck9yRW1wdHkIc3VyZkRpZmYECXN1cmZUb3RhbAkBDGdldEludE9yRWxzZQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAQSZ25zYnRGcm9tU3VyZlRvdGFsCQELc3VyZlRvR25zYnQBBQlzdXJmVG90YWwDCQAAAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5AgAJAJQKAgUDbmlsCQDMCAIAAAkAzAgCBQlzdXJmVG90YWwJAMwIAgAACQDMCAIFEmduc2J0RnJvbVN1cmZUb3RhbAkAzAgCAAAJAMwIAgUGaGVpZ2h0CQDMCAIFBmhlaWdodAUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UCBQt1c2VyQWRkcmVzcwUIc3VyZkRpZmYECWlzTmV3VXNlcggFCm1lcmdlZERhdGECXzEEDHN0YWtlZEFtb3VudAgFCm1lcmdlZERhdGECXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUKbWVyZ2VkRGF0YQJfMwQPc3Rha2VkQW1vdW50TkVXCAUKbWVyZ2VkRGF0YQJfNAQUdnBFZmZlY3RpdmVIZWlnaHRORVcIBQptZXJnZWREYXRhAl81BAhzdXJmVXNlcgUMc3Rha2VkQW1vdW50BBFnbnNidEZyb21TdXJmVXNlcgkBC3N1cmZUb0duc2J0AQUIc3VyZlVzZXIJAJQKAgUDbmlsCQDMCAIFCHN1cmZVc2VyCQDMCAIFCXN1cmZUb3RhbAkAzAgCBRFnbnNidEZyb21TdXJmVXNlcgkAzAgCBRJnbnNidEZyb21TdXJmVG90YWwJAMwIAgURdnBFZmZlY3RpdmVIZWlnaHQJAMwIAgUUdnBFZmZlY3RpdmVIZWlnaHRORVcFA25pbAFpARhnbnNidEZyb21TdXJmU1lTUkVBRE9OTFkBB3N1cmZBbXQJAJQKAgUDbmlsCQELc3VyZlRvR25zYnQBBQdzdXJmQW10AWkBEWNvbmZpZ1NZU1JFQURPTkxZAAQKbWluTG9ja0FtdAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEGtleU1pbkxvY2tBbW91bnQABCBzdXJmVm90aW5nUG93ZXJSZXN0cmljdGl2ZVBlcmlvZAkAaAIAoAsADgQbYnJUb1N0YXJ0U3VyZlRyYW5zZm9ybWF0aW9uALCYRgkAlAoCBQNuaWwJAMwIAgUKbWluTG9ja0FtdAkAzAgCCQBoAgUSZ25zYnRGcm9tU3VyZkNvZWZmBQVNVUxUNgkAzAgCBSBzdXJmVm90aW5nUG93ZXJSZXN0cmljdGl2ZVBlcmlvZAkAzAgCBRticlRvU3RhcnRTdXJmVHJhbnNmb3JtYXRpb24FA25pbAC7DVGK", "chainId": 87, "height": 3336166, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9PAfryBuDnVdE792YhSxTUKPZcX1n4S69ZQvwrpYxGK6 Next: DHD1i6nmxwTkbgXS851QSDfKHrxtPcGGRZPz6hzQnD48 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "049fe7b78896aec03c7fa106ba92e97b6ce41445"
4+let a = "6a94b841b387e5d4bd8be8f8ed5f80057ef86186"
55
66 let b = "__"
77
2121
2222 let j = fromBase58String(i)
2323
24-let k = 1
24+let k = 86400000
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 5
32+let o = 4
3333
34-let p = 6
34+let p = 5
3535
36-let q = 7
36+let q = 6
3737
38-let r = 8
38+let r = 7
3939
40-let s = 9
40+let s = 8
4141
42-let t = 10
42+let t = 9
4343
44-let u = 11
44+let u = 10
4545
46-func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
46+let v = 11
47+
48+func w (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
4749
4850
49-func y () = "%s%s__config__controlAddress"
51+func z () = "%s%s__config__controlAddress"
5052
5153
52-func z () = "%s__controlConfig"
54+func A () = "%s__controlConfig"
5355
5456
55-func A () = "%s%s__cfg__gnsbtFromSurfCoeff"
57+func B () = "%s%s__cfg__gnsbtFromSurfCoeff"
5658
5759
58-func B (C) = split(v(C, z()), c)
60+func C (D) = split(w(D, A()), c)
5961
6062
61-func D (E,F) = valueOrErrorMessage(addressFromString(E[F]), ("Control cfg doesn't contain address at index " + toString(F)))
63+func E (F,G) = valueOrErrorMessage(addressFromString(F[G]), ("Control cfg doesn't contain address at index " + toString(G)))
6264
6365
64-let G = addressFromStringValue(valueOrElse(getString(this, y()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
66+let H = addressFromStringValue(valueOrElse(getString(this, z()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
6567
66-let E = B(G)
68+let F = C(H)
6769
68-let H = D(E, n)
70+let I = E(F, o)
6971
70-let I = D(E, k)
72+let J = E(F, l)
7173
72-let J = D(E, l)
74+let K = E(F, m)
7375
74-let K = valueOrElse(getInteger(this, A()), 300)
76+let L = valueOrElse(getInteger(this, B()), 300)
7577
76-func L () = "bond_asset_id"
78+func M () = "bond_asset_id"
7779
7880
79-func M () = "auction_contract"
81+func N () = "auction_contract"
8082
8183
82-func N () = "%s__minLockAmount"
84+func O () = "%s__minLockAmount"
8385
8486
85-func O () = "%s__stakedAssetId"
87+func P () = "%s__stakedAssetId"
8688
8789
88-func P (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "amount"], b)
90+func Q (R) = makeString(["%s%s%s", "paramByUser", toString(R), "amount"], b)
8991
9092
91-func R (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "start"], b)
93+func S (R) = makeString(["%s%s%s", "paramByUser", toString(R), "start"], b)
9294
9395
94-func S (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "vpEffectiveHeight"], b)
96+func T (R) = makeString(["%s%s%s", "paramByUser", toString(R), "vpEffectiveHeight"], b)
9597
9698
97-func T (U,Q,V) = makeString(["%s%s%s%s", "history", U, toString(Q), toBase58String(V)], b)
99+func U (V,R,W) = makeString(["%s%s%s%s", "history", V, toString(R), toBase58String(W)], b)
98100
99101
100-func W () = makeString(["%s%s", "stats", "activeTotalLocked"], b)
102+func X () = makeString(["%s%s", "stats", "activeTotalLocked"], b)
101103
102104
103-func X () = makeString(["%s%s", "stats", "locksCount"], b)
105+func Y () = makeString(["%s%s", "stats", "locksCount"], b)
104106
105107
106-func Y () = makeString(["%s%s", "stats", "activeUsersCount"], b)
108+func Z () = makeString(["%s%s", "stats", "activeUsersCount"], b)
107109
108110
109-func Z () = "%s__nextPeriod"
111+func aa (ab) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ab)], b)
110112
111113
112-func aa () = "supportedRewardAssets"
114+func ac () = makeString(["%s%s%d", "stats", "depositAmtTotals"], b)
113115
114116
115-func ab () = makeString(["%s%s%s", "dep", "lastNum"], b)
117+func ad () = "%s__nextPeriod"
116118
117119
118-func ac (Q) = makeString(["%s%s%s", "userRwdFromDepNum", Q], b)
120+func ae () = "supportedRewardAssets"
119121
120122
121-func ad (ae,af) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ae), af], b)
123+func af () = makeString(["%s%s%s", "dep", "lastNum"], b)
122124
123125
124-func ag (Q,af) = makeString(["%s%s%s", "rwd", Q, af], b)
126+func ag (R) = makeString(["%s%s%s", "userRwdFromDepNum", R], b)
125127
126128
127-func ah (Q,af) = makeString(["%s%s%s", "clm", Q, af], b)
129+func ah (ai,aj) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ai), aj], b)
128130
129131
130-func ai (af) = makeString(["%s%s", "notDistributed", af], b)
132+func ak (R,aj) = makeString(["%s%s%s", "rwd", R, aj], b)
131133
132134
133-func aj (ak,al) = fraction(toBigInt(ak), h, al)
135+func al (R,aj) = makeString(["%s%s%s", "clm", R, aj], b)
134136
135137
136-func am (x) = valueOrElse(getInteger(this, x), 0)
138+func am (aj) = makeString(["%s%s", "notDistributed", aj], b)
137139
138140
139-func an (x,ao) = valueOrElse(getInteger(this, x), ao)
141+func an (ao,ap) = fraction(toBigInt(ao), h, ap)
140142
141143
142-func ap (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
144+func aq (y) = valueOrElse(getInteger(this, y), 0)
143145
144146
145-func aq (x,ao) = valueOrElse(getString(this, x), ao)
147+func ar (y,as) = valueOrElse(getInteger(this, y), as)
146148
147149
148-func ar (as) = valueOrErrorMessage(addressFromString(as), ("couldn't parse passed addressStr=" + as))
150+func at (y) = valueOrErrorMessage(getInteger(this, y), (("Mandatory this." + y) + " is not defined"))
149151
150152
151-func at (au) = if ((au == i))
152- then unit
153- else fromBase58String(au)
153+func au (y,as) = valueOrElse(getString(this, y), as)
154154
155155
156-func av (aw) = {
157- let ax = aw
158- if ($isInstanceOf(ax, "Int"))
156+func av (aw) = valueOrErrorMessage(addressFromString(aw), ("couldn't parse passed addressStr=" + aw))
157+
158+
159+func ax (ay) = if ((ay == i))
160+ then unit
161+ else fromBase58String(ay)
162+
163+
164+func az (aA) = {
165+ let aB = aA
166+ if ($isInstanceOf(aB, "Int"))
159167 then {
160- let ay = ax
161- ay
168+ let aC = aB
169+ aC
162170 }
163171 else throw("fail to cast into Int")
164172 }
165173
166174
167-func az (aA) = {
168- let ax = aA
169- if ($isInstanceOf(ax, "(Int, Int, Int, Int, Int, Int, Int)"))
175+func aD (aE) = {
176+ let aB = aE
177+ if ($isInstanceOf(aB, "(Int, Int, Int, Int, Int, Int, Int)"))
170178 then {
171- let aB = ax
172- aB
179+ let aF = aB
180+ aF
173181 }
174182 else throw("fail to cast into Int")
175183 }
176184
177185
178-func aC (aD,aE,aF,aG) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aD), toString(aE), toString(aF), toString(aG)], b)
186+func aG (aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH), toString(aI), toString(aJ), toString(aK)], b)
179187
180188
181-func aH (aI,aJ) = makeString(["%s%d%d%s", aI, toString(lastBlock.height), toString(lastBlock.timestamp), aJ], b)
189+func aL (aM,aN) = makeString(["%s%d%d%s", aM, toString(lastBlock.height), toString(lastBlock.timestamp), aN], b)
182190
183191
184-func aK (U,Q,V,aD,aE,aF,aG) = StringEntry(T(U, Q, V), aC(aD, aE, aF, aG))
192+func aO (V,R,W,aH,aI,aJ,aK) = StringEntry(U(V, R, W), aG(aH, aI, aJ, aK))
185193
186194
187-func aL (Q,V,aJ) = StringEntry(T("claim", Q, V), aH(toString(Q), aJ))
195+func aP (R,W,aN) = StringEntry(U("claim", R, W), aL(toString(R), aN))
188196
189197
190-func aM (aN,aO,aP) = {
191- let aQ = am(X())
192- let aR = am(Y())
193- let aS = am(W())
194- let aT = (aS + aN)
195- $Tuple3([IntegerEntry(X(), (aQ + aO)), IntegerEntry(Y(), (aR + aP)), IntegerEntry(W(), aT)], aS, aT)
198+func aQ (aR,aS,aT) = {
199+ let aU = aq(Y())
200+ let aV = aq(Z())
201+ let aW = aq(X())
202+ let aX = (aW + aR)
203+ $Tuple3([IntegerEntry(Y(), (aU + aS)), IntegerEntry(Z(), (aV + aT)), IntegerEntry(X(), aX)], aW, aX)
196204 }
197205
198206
199-func aU (Q,aV,aW) = [IntegerEntry(P(Q), aV), IntegerEntry(R(Q), aW)]
207+func aY (R,aZ,ba) = [IntegerEntry(Q(R), aZ), IntegerEntry(S(R), ba)]
200208
201209
202-func aX () = $Tuple2(fromBase58String(v(this, O())), ap(N()))
210+func bb () = $Tuple2(fromBase58String(w(this, P())), at(O()))
203211
204212
205-func aY (Q) = (an(P(Q), 0) > 0)
213+func bc (R) = (ar(Q(R), 0) > 0)
206214
207215
208-func aZ (Q) = if (aY(Q))
209- then $Tuple3(false, ap(P(Q)), ap(R(Q)))
216+func bd (R) = if (bc(R))
217+ then $Tuple3(false, at(Q(R)), at(S(R)))
210218 else unit
211219
212220
213-func ba (Q) = valueOrErrorMessage(aZ(Q), (("User " + toString(Q)) + " is not defined"))
221+func be (R) = valueOrErrorMessage(bd(R), (("User " + toString(R)) + " is not defined"))
214222
215223
216-let bb = aq(aa(), "")
224+let bf = au(ae(), "")
217225
218-let bc = split(bb, "_")
226+let bg = split(bf, "_")
219227
220-func bd (Q,be,bf,bg,bh) = {
221- let bi = ad(bh, be)
222- let bj = parseBigIntValue(aq(ad(bh, be), "0"))
223- let bk = parseBigIntValue(aq(ad(bg, be), "0"))
224- let bl = toInt(fraction((bj - bk), bf, h))
225- let bm = ag(Q, be)
226- let bn = an(bm, 0)
227- $Tuple4((bn + bl), bn, bl, bm)
228+func bh (R,bi,bj,bk,bl) = {
229+ let bm = ah(bl, bi)
230+ let bn = parseBigIntValue(au(ah(bl, bi), "0"))
231+ let bo = parseBigIntValue(au(ah(bk, bi), "0"))
232+ let bp = toInt(fraction((bn - bo), bj, h))
233+ let bq = ak(R, bi)
234+ let br = ar(bq, 0)
235+ $Tuple4((br + bp), br, bp, bq)
228236 }
229237
230238
231-func bo (bp,Q,bq) = {
232- let bf = toBigInt(bq)
233- let br = ac(Q)
234- let bg = an(br, -1)
235- let bh = an(ab(), -1)
236- func bs (bt,bu) = {
237- let bv = bd(Q, bu, bf, bg, bh)
238- let bw = bv._1
239- let bx = bv._2
240- let by = bv._3
241- let bm = bv._4
242- (bt :+ IntegerEntry(bm, bw))
243- }
244-
245- if (if ((bh == -1))
246- then (bg == -1)
247- else false)
248- then nil
249- else if (if ((bh == -1))
250- then (bg > -1)
251- else false)
252- then throw("invalid depositNumLast and depositNumUser state")
253- else if (if ((bh > -1))
254- then (bg >= -1)
255- else false)
256- then if (bp)
257- then [IntegerEntry(br, bh)]
258- else ({
259- let bz = bc
260- let bA = size(bz)
261- let bB = nil
262- func bC (bD,bE) = if ((bE >= bA))
263- then bD
264- else bs(bD, bz[bE])
265-
266- func bF (bD,bE) = if ((bE >= bA))
267- then bD
268- else throw("List size exceeds 10")
269-
270- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
271- } :+ IntegerEntry(br, bh))
272- else throw(((("uncovered condition: depositNumLast=" + toString(bh)) + " depositNumUser=") + toString(bg)))
273- }
239+func bs (ab) = ((ab / k) * k)
274240
275241
276-func bG (af,bH) = {
277- let bI = ai(af)
278- let bJ = an(bI, 0)
279-[IntegerEntry(bI, (bJ + bH))]
280- }
281-
282-
283-func bK (bL) = (bL / K)
284-
285-
286-func bM (bN,bO,bP,bQ) = {
287- let bR = (bO - height)
288- if ((0 >= bR))
289- then (height + bN)
242+func bt (bu,bv,bw) = {
243+ let bx = valueOrErrorMessage(indexOf(bu, bv), ((("there is no substring " + bv) + " in ") + bu))
244+ if ((bx == 0))
245+ then 0
290246 else {
291- let bS = (bN - bR)
292- let bT = if ((bQ != 0))
293- then fraction(bP, e, bQ)
294- else bO
295- ((bN + height) - fraction(bS, bT, e))
247+ let by = take(bu, bx)
248+ (size(split(by, bw)) - 1)
296249 }
297250 }
298251
299252
300-func bU (Q,bV) = {
301- let bW = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
302- let bp = bW._1
303- let bq = bW._2
304- let bO = bW._3
305- let bX = if (bp)
306- then bV
307- else (bV + bq)
308- let bN = (1440 * 14)
309- let bY = if (bp)
310- then (bN + height)
311- else bM(bN, bO, bq, bX)
312- $Tuple5(bp, bq, bO, bX, bY)
253+let bz = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
254+
255+func bA (bB,bC,bD) = {
256+ let bE = split(bB, c)
257+ func bF (G) = if ((G != bC))
258+ then bE[G]
259+ else toString((parseIntValue(bE[G]) + bD))
260+
261+ makeString([bz, bF(1), bF(2), bF(3), bF(4), bF(5), bF(6), bF(7), bF(8), bF(9), bF(10), bF(11), bF(12), bF(13), bF(14), bF(15), bF(16), bF(17), bF(18)], c)
313262 }
314263
315264
316-func bZ (Q,ca) = {
317- let cb = aX()
318- let cc = cb._1
319- let cd = cb._2
320- if ((size(ca.payments) != 1))
265+func bG (bH,bI) = {
266+ let bJ = bs(lastBlock.timestamp)
267+ let bK = aa(bJ)
268+ let bL = ac()
269+ let bM = bt(bf, bI, "_")
270+ let bN = (bz + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
271+ let bO = valueOrElse(getString(this, bL), bN)
272+ let bP = bA(bO, (bM + 1), bH)
273+[StringEntry(bL, bP), StringEntry(bK, bP)]
274+ }
275+
276+
277+func bQ (bR,R,bS) = {
278+ let bj = toBigInt(bS)
279+ let bT = ag(R)
280+ let bk = ar(bT, -1)
281+ let bl = ar(af(), -1)
282+ func bU (bV,bW) = {
283+ let bX = bh(R, bW, bj, bk, bl)
284+ let bY = bX._1
285+ let bZ = bX._2
286+ let ca = bX._3
287+ let bq = bX._4
288+ (bV :+ IntegerEntry(bq, bY))
289+ }
290+
291+ if (if ((bl == -1))
292+ then (bk == -1)
293+ else false)
294+ then nil
295+ else if (if ((bl == -1))
296+ then (bk > -1)
297+ else false)
298+ then throw("invalid depositNumLast and depositNumUser state")
299+ else if (if ((bl > -1))
300+ then (bk >= -1)
301+ else false)
302+ then if (bR)
303+ then [IntegerEntry(bT, bl)]
304+ else ({
305+ let cb = bg
306+ let cc = size(cb)
307+ let cd = nil
308+ func ce (cf,cg) = if ((cg >= cc))
309+ then cf
310+ else bU(cf, cb[cg])
311+
312+ func ch (cf,cg) = if ((cg >= cc))
313+ then cf
314+ else throw("List size exceeds 9")
315+
316+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
317+ } :+ IntegerEntry(bT, bl))
318+ else throw(((("uncovered condition: depositNumLast=" + toString(bl)) + " depositNumUser=") + toString(bk)))
319+ }
320+
321+
322+func ci (aj,cj) = {
323+ let ck = am(aj)
324+ let cl = ar(ck, 0)
325+[IntegerEntry(ck, (cl + cj))]
326+ }
327+
328+
329+func cm (cn) = (cn / L)
330+
331+
332+func co (cp,cq,cr,cs) = {
333+ let ct = (cq - height)
334+ if ((0 >= ct))
335+ then (height + cp)
336+ else {
337+ let cu = (cp - ct)
338+ let cv = if ((cs != 0))
339+ then fraction(cr, e, cs)
340+ else cq
341+ ((cp + height) - fraction(cu, cv, e))
342+ }
343+ }
344+
345+
346+func cw (R,cx) = {
347+ let cy = valueOrElse(bd(R), $Tuple3(true, 0, 0))
348+ let bR = cy._1
349+ let bS = cy._2
350+ let cq = cy._3
351+ let cz = if (bR)
352+ then cx
353+ else (cx + bS)
354+ let cp = (1440 * 14)
355+ let cA = if (bR)
356+ then (cp + height)
357+ else co(cp, cq, bS, cz)
358+ $Tuple5(bR, bS, cq, cz, cA)
359+ }
360+
361+
362+func cB (R,cC) = {
363+ let cD = bb()
364+ let cE = cD._1
365+ let cF = cD._2
366+ if ((size(cC.payments) != 1))
321367 then throw("Invalid payments size")
322368 else {
323- let ce = ca.payments[0]
324- let aV = ce.amount
325- let cf = (("Invalid asset. " + toBase58String(cc)) + " is expected")
326- let be = valueOrErrorMessage(ce.assetId, cf)
327- if ((be != cc))
328- then throw(cf)
369+ let cG = cC.payments[0]
370+ let aZ = cG.amount
371+ let cH = (("Invalid asset. " + toBase58String(cE)) + " is expected")
372+ let bi = valueOrErrorMessage(cG.assetId, cH)
373+ if ((bi != cE))
374+ then throw(cH)
329375 else {
330- let cg = toString(Q)
331- let ch = bU(Q, aV)
332- let bp = ch._1
333- let bq = ch._2
334- let bO = ch._3
335- let bX = ch._4
336- let bY = ch._5
337- if ((cd > bX))
338- then throw(("Min lock amount is " + toString(cd)))
376+ let cI = toString(R)
377+ let cJ = cw(R, aZ)
378+ let bR = cJ._1
379+ let bS = cJ._2
380+ let cq = cJ._3
381+ let cz = cJ._4
382+ let cA = cJ._5
383+ if ((cF > cz))
384+ then throw(("Min lock amount is " + toString(cF)))
339385 else {
340- let ci = aM(aV, 1, if (bp)
386+ let cK = aQ(aZ, 1, if (bR)
341387 then 1
342388 else 0)
343- let cj = ci._1
344- let ck = ci._2
345- let cl = ci._3
346- ((([aK("stake", Q, ca.transactionId, bq, bO, bX, bY)] ++ bo(bp, cg, bq)) ++ aU(Q, bX, bY)) ++ cj)
389+ let cL = cK._1
390+ let cM = cK._2
391+ let cN = cK._3
392+ ((([aO("stake", R, cC.transactionId, bS, cq, cz, cA)] ++ bQ(bR, cI, bS)) ++ aY(R, cz, cA)) ++ cL)
347393 }
348394 }
349395 }
350396 }
351397
352398
353-func cm (Q,ca) = {
354- let cg = toString(Q)
355- if ((size(ca.payments) > 0))
399+func cO (R,cC) = {
400+ let cI = toString(R)
401+ if ((size(cC.payments) > 0))
356402 then throw("payments are not accepted")
357403 else {
358- let cn = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
359- let bp = cn._1
360- let bq = cn._2
361- let co = cn._3
362- let bf = toBigInt(bq)
363- let br = ac(cg)
364- let bg = an(br, -1)
365- let bh = an(ab(), -1)
366- func cp (bt,bu) = {
367- let cq = bd(cg, bu, bf, bg, bh)
368- let bw = cq._1
369- let bx = cq._2
370- let by = cq._3
371- let bm = cq._4
372- let cr = ah(cg, bu)
373- let cs = bt
374- let ct = cs._1
375- let cu = cs._2
376- let cv = makeString([bu, toString(bw)], ":")
377- let cw = makeString([cu, cv], "_")
378- if ((0 >= bw))
379- then $Tuple2(ct, cw)
380- else $Tuple2((((ct :+ ScriptTransfer(Q, bw, at(bu))) :+ IntegerEntry(cr, (valueOrElse(getInteger(cr), 0) + bw))) :+ IntegerEntry(bm, 0)), cw)
404+ let cP = valueOrElse(bd(R), $Tuple3(true, 0, 0))
405+ let bR = cP._1
406+ let bS = cP._2
407+ let cQ = cP._3
408+ let bj = toBigInt(bS)
409+ let bT = ag(cI)
410+ let bk = ar(bT, -1)
411+ let bl = ar(af(), -1)
412+ func cR (bV,bW) = {
413+ let cS = bh(cI, bW, bj, bk, bl)
414+ let bY = cS._1
415+ let bZ = cS._2
416+ let ca = cS._3
417+ let bq = cS._4
418+ let cT = al(cI, bW)
419+ let cU = bV
420+ let cV = cU._1
421+ let cW = cU._2
422+ let cX = makeString([bW, toString(bY)], ":")
423+ let cY = makeString([cW, cX], "_")
424+ if ((0 >= bY))
425+ then $Tuple2(cV, cY)
426+ else $Tuple2((((cV :+ ScriptTransfer(R, bY, ax(bW))) :+ IntegerEntry(cT, (valueOrElse(getInteger(cT), 0) + bY))) :+ IntegerEntry(bq, 0)), cY)
381427 }
382428
383- let cx = {
384- let bz = bc
385- let bA = size(bz)
386- let bB = $Tuple2(nil, "")
387- func bC (bD,bE) = if ((bE >= bA))
388- then bD
389- else cp(bD, bz[bE])
429+ let cZ = {
430+ let cb = bg
431+ let cc = size(cb)
432+ let cd = $Tuple2(nil, "")
433+ func ce (cf,cg) = if ((cg >= cc))
434+ then cf
435+ else cR(cf, cb[cg])
390436
391- func bF (bD,bE) = if ((bE >= bA))
392- then bD
393- else throw("List size exceeds 10")
437+ func ch (cf,cg) = if ((cg >= cc))
438+ then cf
439+ else throw("List size exceeds 9")
394440
395- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
441+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
396442 }
397- let cy = cx._1
398- let cz = cx._2
399- if ((0 >= size(cy)))
400- then nil
401- else ((cy :+ IntegerEntry(br, bh)) :+ aL(Q, ca.transactionId, drop(cz, 1)))
443+ let da = cZ._1
444+ let db = cZ._2
445+ if ((0 >= size(da)))
446+ then $Tuple2(nil, 0)
447+ else $Tuple2(((da :+ IntegerEntry(bT, bl)) :+ aP(R, cC.transactionId, drop(db, 1))), size(da))
402448 }
403449 }
404450
405451
406-@Callable(ca)
407-func constructor (cd,cA,cc) = if ((ca.caller != this))
452+@Callable(cC)
453+func constructor (cF,dc,cE) = if ((cC.caller != this))
408454 then throw("Permission denied")
409- else [IntegerEntry(N(), cd), StringEntry(aa(), cA), StringEntry(O(), cc)]
455+ else [IntegerEntry(O(), cF), StringEntry(ae(), dc), StringEntry(P(), cE)]
410456
411457
412458
413-@Callable(ca)
414-func stake () = bZ(ca.caller, ca)
459+@Callable(cC)
460+func stake () = cB(cC.caller, cC)
415461
416462
417463
418-@Callable(ca)
419-func stakeByOriginCaller () = bZ(ca.originCaller, ca)
464+@Callable(cC)
465+func stakeByOriginCaller () = cB(cC.originCaller, cC)
420466
421467
422468
423-@Callable(ca)
424-func unstake (aV) = if ((size(ca.payments) != 0))
469+@Callable(cC)
470+func unstake (aZ) = if ((size(cC.payments) != 0))
425471 then throw("unstake doesn't require any payment")
426472 else {
427- let Q = ca.caller
428- let cg = toString(Q)
429- let cB = aX()
430- let cc = cB._1
431- let cd = cB._2
432- let cC = ba(Q)
433- let bp = cC._1
434- let bq = cC._2
435- let bO = cC._3
436- let cD = az(reentrantInvoke(I, "swapParamsByUserSYSREADONLY", [cg, 0], nil))
437- let cE = cD._2
438- let cF = cD._3
439- if ((cE > 0))
440- then throw((("You have already made a swap operation. Wait " + toString((height + cF))) + " height to unstake"))
441- else if ((0 >= bq))
473+ let R = cC.caller
474+ let cI = toString(R)
475+ let dd = bb()
476+ let cE = dd._1
477+ let cF = dd._2
478+ let de = be(R)
479+ let bR = de._1
480+ let bS = de._2
481+ let cq = de._3
482+ let df = aD(reentrantInvoke(J, "swapParamsByUserSYSREADONLY", [cI, 0], nil))
483+ let dg = df._2
484+ let dh = df._3
485+ if ((dg > 0))
486+ then throw((("You have already made a swap operation. Wait " + toString((height + dh))) + " height to unstake"))
487+ else if ((0 >= bS))
442488 then throw("Nothing to unstake")
443- else if ((aV > bq))
444- then throw(((("Requested " + toString(aV)) + ", but staked only ") + toString(bq)))
489+ else if ((aZ > bS))
490+ then throw(((("Requested " + toString(aZ)) + ", but staked only ") + toString(bS)))
445491 else {
446- let bX = (bq - aV)
447- let cG = aM(-(aV), if ((aV == bq))
492+ let cz = (bS - aZ)
493+ let di = aQ(-(aZ), if ((aZ == bS))
448494 then -1
449- else 0, if ((aV == bq))
495+ else 0, if ((aZ == bS))
450496 then -1
451497 else 0)
452- let cj = cG._1
453- let ck = cG._2
454- let cl = cG._3
455- ((([ScriptTransfer(Q, aV, cc), aK("unstake", Q, ca.transactionId, bq, bO, bX, bO)] ++ bo(false, cg, bq)) ++ aU(Q, bX, bO)) ++ cj)
498+ let cL = di._1
499+ let cM = di._2
500+ let cN = di._3
501+ ((([ScriptTransfer(R, aZ, cE), aO("unstake", R, cC.transactionId, bS, cq, cz, cq)] ++ bQ(false, cI, bS)) ++ aY(R, cz, cq)) ++ cL)
456502 }
457503 }
458504
459505
460506
461-@Callable(ca)
462-func deposit () = if ((size(ca.payments) != 1))
507+@Callable(cC)
508+func deposit () = if ((size(cC.payments) != 1))
463509 then throw("exact 1 payment is allowed only")
464510 else {
465- let cH = ca.payments[0]
466- let aV = cH.amount
467- let cI = valueOrElse(cH.assetId, j)
468- let cJ = toBase58String(cI)
469- let cK = if ((cI == j))
511+ let dj = cC.payments[0]
512+ let aZ = dj.amount
513+ let dk = valueOrElse(dj.assetId, j)
514+ let dl = toBase58String(dk)
515+ let dm = if ((dk == j))
470516 then g
471517 else f
472- let cL = toBigInt(aV)
473- let ck = an(W(), 0)
474- let cM = toBigInt(ck)
475- if ((0 > ck))
518+ let dn = toBigInt(aZ)
519+ let cM = ar(X(), 0)
520+ let do = toBigInt(cM)
521+ if ((0 > cM))
476522 then throw("TODO: case is not supported")
477- else if ((ck == 0))
478- then bG(cJ, aV)
523+ else if ((cM == 0))
524+ then ci(dl, aZ)
479525 else {
480- let cN = fraction(cL, h, cM)
481- let cO = ab()
482- let bh = an(cO, -1)
483- let cP = (bh + 1)
484- if (!(contains(bb, cJ)))
485- then throw(((bb + " doesn't contain ") + cJ))
526+ let dp = fraction(dn, h, do)
527+ let dq = af()
528+ let bl = ar(dq, -1)
529+ let dr = (bl + 1)
530+ if (!(contains(bf, dl)))
531+ then throw(((bf + " doesn't contain ") + dl))
486532 else {
487- func cQ (bt,cR) = {
488- let cS = ad(cP, cR)
489- let cT = aq(ad(bh, cR), "0")
490- (bt :+ (if ((cR == cJ))
491- then StringEntry(cS, toString((parseBigIntValue(cT) + cN)))
492- else StringEntry(cS, cT)))
533+ func ds (bV,dt) = {
534+ let du = ah(dr, dt)
535+ let dv = au(ah(bl, dt), "0")
536+ (bV :+ (if ((dt == dl))
537+ then StringEntry(du, toString((parseBigIntValue(dv) + dp)))
538+ else StringEntry(du, dv)))
493539 }
494540
495- ({
496- let bz = bc
497- let bA = size(bz)
498- let bB = nil
499- func bC (bD,bE) = if ((bE >= bA))
500- then bD
501- else cQ(bD, bz[bE])
541+ (({
542+ let cb = bg
543+ let cc = size(cb)
544+ let cd = nil
545+ func ce (cf,cg) = if ((cg >= cc))
546+ then cf
547+ else ds(cf, cb[cg])
502548
503- func bF (bD,bE) = if ((bE >= bA))
504- then bD
505- else throw("List size exceeds 10")
549+ func ch (cf,cg) = if ((cg >= cc))
550+ then cf
551+ else throw("List size exceeds 9")
506552
507- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
508- } :+ IntegerEntry(cO, cP))
553+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
554+ } :+ IntegerEntry(dq, dr)) ++ bG(aZ, dl))
509555 }
510556 }
511557 }
512558
513559
514560
515-@Callable(ca)
516-func claimRewards () = cm(ca.caller, ca)
561+@Callable(cC)
562+func claimRewards () = cO(cC.caller, cC)
517563
518564
519565
520-@Callable(ca)
521-func claimRewardsByOriginCaller () = cm(ca.originCaller, ca)
566+@Callable(cC)
567+func claimRewardsByOriginCaller () = cO(cC.originCaller, cC)
522568
523569
524570
525-@Callable(ca)
526-func unclaimedRewardsREADONLY (cg) = {
527- func cU (bt,bu) = ((bt + makeString([bu, "0", "0"], ":")) + "_")
571+@Callable(cC)
572+func unclaimedRewardsREADONLY (cI) = {
573+ func dw (bV,bW) = ((bV + makeString([bW, "0", "0"], ":")) + "_")
528574
529- let cV = if ((cg == ""))
575+ let dx = if ((cI == ""))
530576 then {
531- let bz = bc
532- let bA = size(bz)
533- let bB = ""
534- func bC (bD,bE) = if ((bE >= bA))
535- then bD
536- else cU(bD, bz[bE])
577+ let cb = bg
578+ let cc = size(cb)
579+ let cd = ""
580+ func ce (cf,cg) = if ((cg >= cc))
581+ then cf
582+ else dw(cf, cb[cg])
537583
538- func bF (bD,bE) = if ((bE >= bA))
539- then bD
540- else throw("List size exceeds 10")
584+ func ch (cf,cg) = if ((cg >= cc))
585+ then cf
586+ else throw("List size exceeds 9")
541587
542- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
588+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
543589 }
544590 else {
545- let Q = addressFromStringValue(cg)
546- let cW = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
547- let bp = cW._1
548- let bq = cW._2
549- let co = cW._3
550- let bf = toBigInt(bq)
551- let br = ac(cg)
552- let bg = an(br, -1)
553- let bh = an(ab(), -1)
554- func cp (bt,bu) = {
555- let cX = bd(cg, bu, bf, bg, bh)
556- let bw = cX._1
557- let bx = cX._2
558- let by = cX._3
559- let bm = cX._4
560- let cY = valueOrElse(getInteger(ah(cg, bu)), 0)
561- ((bt + makeString([bu, toString(bw), toString(cY)], ":")) + "_")
591+ let R = addressFromStringValue(cI)
592+ let dy = valueOrElse(bd(R), $Tuple3(true, 0, 0))
593+ let bR = dy._1
594+ let bS = dy._2
595+ let cQ = dy._3
596+ let bj = toBigInt(bS)
597+ let bT = ag(cI)
598+ let bk = ar(bT, -1)
599+ let bl = ar(af(), -1)
600+ func cR (bV,bW) = {
601+ let dz = bh(cI, bW, bj, bk, bl)
602+ let bY = dz._1
603+ let bZ = dz._2
604+ let ca = dz._3
605+ let bq = dz._4
606+ let dA = valueOrElse(getInteger(al(cI, bW)), 0)
607+ ((bV + makeString([bW, toString(bY), toString(dA)], ":")) + "_")
562608 }
563609
564- let bz = bc
565- let bA = size(bz)
566- let bB = ""
567- func bC (bD,bE) = if ((bE >= bA))
568- then bD
569- else cp(bD, bz[bE])
610+ let cb = bg
611+ let cc = size(cb)
612+ let cd = ""
613+ func ce (cf,cg) = if ((cg >= cc))
614+ then cf
615+ else cR(cf, cb[cg])
570616
571- func bF (bD,bE) = if ((bE >= bA))
572- then bD
573- else throw("List size exceeds 10")
617+ func ch (cf,cg) = if ((cg >= cc))
618+ then cf
619+ else throw("List size exceeds 9")
574620
575- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
621+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
576622 }
577- $Tuple2(nil, dropRight(cV, 1))
623+ $Tuple2(nil, dropRight(dx, 1))
578624 }
579625
580626
581627
582-@Callable(ca)
583-func surfStakingSYSREADONLY (cZ,da) = {
584- let db = an(W(), 0)
585- let dc = bK(db)
586- if ((cZ == ""))
587- then $Tuple2(nil, [0, db, 0, dc, 0, height, height])
628+@Callable(cC)
629+func surfStakingSYSREADONLY (dB,dC) = {
630+ let dD = ar(X(), 0)
631+ let dE = cm(dD)
632+ if ((dB == ""))
633+ then $Tuple2(nil, [0, dD, 0, dE, 0, height, height])
588634 else {
589- let Q = ar(cZ)
590- let ch = bU(Q, da)
591- let bp = ch._1
592- let bq = ch._2
593- let bO = ch._3
594- let bX = ch._4
595- let bY = ch._5
596- let dd = bq
597- let de = bK(dd)
598- $Tuple2(nil, [dd, db, de, dc, bO, bY])
635+ let R = av(dB)
636+ let cJ = cw(R, dC)
637+ let bR = cJ._1
638+ let bS = cJ._2
639+ let cq = cJ._3
640+ let cz = cJ._4
641+ let cA = cJ._5
642+ let dF = bS
643+ let dG = cm(dF)
644+ $Tuple2(nil, [dF, dD, dG, dE, cq, cA])
599645 }
600646 }
601647
602648
603649
604-@Callable(ca)
605-func gnsbtFromSurfSYSREADONLY (bL) = $Tuple2(nil, bK(bL))
650+@Callable(cC)
651+func gnsbtFromSurfSYSREADONLY (cn) = $Tuple2(nil, cm(cn))
606652
607653
608654
609-@Callable(ca)
655+@Callable(cC)
610656 func configSYSREADONLY () = {
611- let df = getIntegerValue(N())
612- let dg = (1440 * 14)
613- let dh = 1150000
614- $Tuple2(nil, [df, (K * d), dg, dh])
657+ let dH = getIntegerValue(O())
658+ let dI = (1440 * 14)
659+ let dJ = 1150000
660+ $Tuple2(nil, [dH, (L * d), dI, dJ])
615661 }
616662
617663
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "049fe7b78896aec03c7fa106ba92e97b6ce41445"
4+let a = "6a94b841b387e5d4bd8be8f8ed5f80057ef86186"
55
66 let b = "__"
77
88 let c = "__"
99
1010 let d = 1000000
1111
1212 let e = 100000000
1313
1414 let f = toBigInt(d)
1515
1616 let g = toBigInt(e)
1717
1818 let h = toBigInt(1000000000000000000)
1919
2020 let i = "WAVES"
2121
2222 let j = fromBase58String(i)
2323
24-let k = 1
24+let k = 86400000
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 5
32+let o = 4
3333
34-let p = 6
34+let p = 5
3535
36-let q = 7
36+let q = 6
3737
38-let r = 8
38+let r = 7
3939
40-let s = 9
40+let s = 8
4141
42-let t = 10
42+let t = 9
4343
44-let u = 11
44+let u = 10
4545
46-func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
46+let v = 11
47+
48+func w (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
4749
4850
49-func y () = "%s%s__config__controlAddress"
51+func z () = "%s%s__config__controlAddress"
5052
5153
52-func z () = "%s__controlConfig"
54+func A () = "%s__controlConfig"
5355
5456
55-func A () = "%s%s__cfg__gnsbtFromSurfCoeff"
57+func B () = "%s%s__cfg__gnsbtFromSurfCoeff"
5658
5759
58-func B (C) = split(v(C, z()), c)
60+func C (D) = split(w(D, A()), c)
5961
6062
61-func D (E,F) = valueOrErrorMessage(addressFromString(E[F]), ("Control cfg doesn't contain address at index " + toString(F)))
63+func E (F,G) = valueOrErrorMessage(addressFromString(F[G]), ("Control cfg doesn't contain address at index " + toString(G)))
6264
6365
64-let G = addressFromStringValue(valueOrElse(getString(this, y()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
66+let H = addressFromStringValue(valueOrElse(getString(this, z()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
6567
66-let E = B(G)
68+let F = C(H)
6769
68-let H = D(E, n)
70+let I = E(F, o)
6971
70-let I = D(E, k)
72+let J = E(F, l)
7173
72-let J = D(E, l)
74+let K = E(F, m)
7375
74-let K = valueOrElse(getInteger(this, A()), 300)
76+let L = valueOrElse(getInteger(this, B()), 300)
7577
76-func L () = "bond_asset_id"
78+func M () = "bond_asset_id"
7779
7880
79-func M () = "auction_contract"
81+func N () = "auction_contract"
8082
8183
82-func N () = "%s__minLockAmount"
84+func O () = "%s__minLockAmount"
8385
8486
85-func O () = "%s__stakedAssetId"
87+func P () = "%s__stakedAssetId"
8688
8789
88-func P (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "amount"], b)
90+func Q (R) = makeString(["%s%s%s", "paramByUser", toString(R), "amount"], b)
8991
9092
91-func R (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "start"], b)
93+func S (R) = makeString(["%s%s%s", "paramByUser", toString(R), "start"], b)
9294
9395
94-func S (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "vpEffectiveHeight"], b)
96+func T (R) = makeString(["%s%s%s", "paramByUser", toString(R), "vpEffectiveHeight"], b)
9597
9698
97-func T (U,Q,V) = makeString(["%s%s%s%s", "history", U, toString(Q), toBase58String(V)], b)
99+func U (V,R,W) = makeString(["%s%s%s%s", "history", V, toString(R), toBase58String(W)], b)
98100
99101
100-func W () = makeString(["%s%s", "stats", "activeTotalLocked"], b)
102+func X () = makeString(["%s%s", "stats", "activeTotalLocked"], b)
101103
102104
103-func X () = makeString(["%s%s", "stats", "locksCount"], b)
105+func Y () = makeString(["%s%s", "stats", "locksCount"], b)
104106
105107
106-func Y () = makeString(["%s%s", "stats", "activeUsersCount"], b)
108+func Z () = makeString(["%s%s", "stats", "activeUsersCount"], b)
107109
108110
109-func Z () = "%s__nextPeriod"
111+func aa (ab) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ab)], b)
110112
111113
112-func aa () = "supportedRewardAssets"
114+func ac () = makeString(["%s%s%d", "stats", "depositAmtTotals"], b)
113115
114116
115-func ab () = makeString(["%s%s%s", "dep", "lastNum"], b)
117+func ad () = "%s__nextPeriod"
116118
117119
118-func ac (Q) = makeString(["%s%s%s", "userRwdFromDepNum", Q], b)
120+func ae () = "supportedRewardAssets"
119121
120122
121-func ad (ae,af) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ae), af], b)
123+func af () = makeString(["%s%s%s", "dep", "lastNum"], b)
122124
123125
124-func ag (Q,af) = makeString(["%s%s%s", "rwd", Q, af], b)
126+func ag (R) = makeString(["%s%s%s", "userRwdFromDepNum", R], b)
125127
126128
127-func ah (Q,af) = makeString(["%s%s%s", "clm", Q, af], b)
129+func ah (ai,aj) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ai), aj], b)
128130
129131
130-func ai (af) = makeString(["%s%s", "notDistributed", af], b)
132+func ak (R,aj) = makeString(["%s%s%s", "rwd", R, aj], b)
131133
132134
133-func aj (ak,al) = fraction(toBigInt(ak), h, al)
135+func al (R,aj) = makeString(["%s%s%s", "clm", R, aj], b)
134136
135137
136-func am (x) = valueOrElse(getInteger(this, x), 0)
138+func am (aj) = makeString(["%s%s", "notDistributed", aj], b)
137139
138140
139-func an (x,ao) = valueOrElse(getInteger(this, x), ao)
141+func an (ao,ap) = fraction(toBigInt(ao), h, ap)
140142
141143
142-func ap (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
144+func aq (y) = valueOrElse(getInteger(this, y), 0)
143145
144146
145-func aq (x,ao) = valueOrElse(getString(this, x), ao)
147+func ar (y,as) = valueOrElse(getInteger(this, y), as)
146148
147149
148-func ar (as) = valueOrErrorMessage(addressFromString(as), ("couldn't parse passed addressStr=" + as))
150+func at (y) = valueOrErrorMessage(getInteger(this, y), (("Mandatory this." + y) + " is not defined"))
149151
150152
151-func at (au) = if ((au == i))
152- then unit
153- else fromBase58String(au)
153+func au (y,as) = valueOrElse(getString(this, y), as)
154154
155155
156-func av (aw) = {
157- let ax = aw
158- if ($isInstanceOf(ax, "Int"))
156+func av (aw) = valueOrErrorMessage(addressFromString(aw), ("couldn't parse passed addressStr=" + aw))
157+
158+
159+func ax (ay) = if ((ay == i))
160+ then unit
161+ else fromBase58String(ay)
162+
163+
164+func az (aA) = {
165+ let aB = aA
166+ if ($isInstanceOf(aB, "Int"))
159167 then {
160- let ay = ax
161- ay
168+ let aC = aB
169+ aC
162170 }
163171 else throw("fail to cast into Int")
164172 }
165173
166174
167-func az (aA) = {
168- let ax = aA
169- if ($isInstanceOf(ax, "(Int, Int, Int, Int, Int, Int, Int)"))
175+func aD (aE) = {
176+ let aB = aE
177+ if ($isInstanceOf(aB, "(Int, Int, Int, Int, Int, Int, Int)"))
170178 then {
171- let aB = ax
172- aB
179+ let aF = aB
180+ aF
173181 }
174182 else throw("fail to cast into Int")
175183 }
176184
177185
178-func aC (aD,aE,aF,aG) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aD), toString(aE), toString(aF), toString(aG)], b)
186+func aG (aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH), toString(aI), toString(aJ), toString(aK)], b)
179187
180188
181-func aH (aI,aJ) = makeString(["%s%d%d%s", aI, toString(lastBlock.height), toString(lastBlock.timestamp), aJ], b)
189+func aL (aM,aN) = makeString(["%s%d%d%s", aM, toString(lastBlock.height), toString(lastBlock.timestamp), aN], b)
182190
183191
184-func aK (U,Q,V,aD,aE,aF,aG) = StringEntry(T(U, Q, V), aC(aD, aE, aF, aG))
192+func aO (V,R,W,aH,aI,aJ,aK) = StringEntry(U(V, R, W), aG(aH, aI, aJ, aK))
185193
186194
187-func aL (Q,V,aJ) = StringEntry(T("claim", Q, V), aH(toString(Q), aJ))
195+func aP (R,W,aN) = StringEntry(U("claim", R, W), aL(toString(R), aN))
188196
189197
190-func aM (aN,aO,aP) = {
191- let aQ = am(X())
192- let aR = am(Y())
193- let aS = am(W())
194- let aT = (aS + aN)
195- $Tuple3([IntegerEntry(X(), (aQ + aO)), IntegerEntry(Y(), (aR + aP)), IntegerEntry(W(), aT)], aS, aT)
198+func aQ (aR,aS,aT) = {
199+ let aU = aq(Y())
200+ let aV = aq(Z())
201+ let aW = aq(X())
202+ let aX = (aW + aR)
203+ $Tuple3([IntegerEntry(Y(), (aU + aS)), IntegerEntry(Z(), (aV + aT)), IntegerEntry(X(), aX)], aW, aX)
196204 }
197205
198206
199-func aU (Q,aV,aW) = [IntegerEntry(P(Q), aV), IntegerEntry(R(Q), aW)]
207+func aY (R,aZ,ba) = [IntegerEntry(Q(R), aZ), IntegerEntry(S(R), ba)]
200208
201209
202-func aX () = $Tuple2(fromBase58String(v(this, O())), ap(N()))
210+func bb () = $Tuple2(fromBase58String(w(this, P())), at(O()))
203211
204212
205-func aY (Q) = (an(P(Q), 0) > 0)
213+func bc (R) = (ar(Q(R), 0) > 0)
206214
207215
208-func aZ (Q) = if (aY(Q))
209- then $Tuple3(false, ap(P(Q)), ap(R(Q)))
216+func bd (R) = if (bc(R))
217+ then $Tuple3(false, at(Q(R)), at(S(R)))
210218 else unit
211219
212220
213-func ba (Q) = valueOrErrorMessage(aZ(Q), (("User " + toString(Q)) + " is not defined"))
221+func be (R) = valueOrErrorMessage(bd(R), (("User " + toString(R)) + " is not defined"))
214222
215223
216-let bb = aq(aa(), "")
224+let bf = au(ae(), "")
217225
218-let bc = split(bb, "_")
226+let bg = split(bf, "_")
219227
220-func bd (Q,be,bf,bg,bh) = {
221- let bi = ad(bh, be)
222- let bj = parseBigIntValue(aq(ad(bh, be), "0"))
223- let bk = parseBigIntValue(aq(ad(bg, be), "0"))
224- let bl = toInt(fraction((bj - bk), bf, h))
225- let bm = ag(Q, be)
226- let bn = an(bm, 0)
227- $Tuple4((bn + bl), bn, bl, bm)
228+func bh (R,bi,bj,bk,bl) = {
229+ let bm = ah(bl, bi)
230+ let bn = parseBigIntValue(au(ah(bl, bi), "0"))
231+ let bo = parseBigIntValue(au(ah(bk, bi), "0"))
232+ let bp = toInt(fraction((bn - bo), bj, h))
233+ let bq = ak(R, bi)
234+ let br = ar(bq, 0)
235+ $Tuple4((br + bp), br, bp, bq)
228236 }
229237
230238
231-func bo (bp,Q,bq) = {
232- let bf = toBigInt(bq)
233- let br = ac(Q)
234- let bg = an(br, -1)
235- let bh = an(ab(), -1)
236- func bs (bt,bu) = {
237- let bv = bd(Q, bu, bf, bg, bh)
238- let bw = bv._1
239- let bx = bv._2
240- let by = bv._3
241- let bm = bv._4
242- (bt :+ IntegerEntry(bm, bw))
243- }
244-
245- if (if ((bh == -1))
246- then (bg == -1)
247- else false)
248- then nil
249- else if (if ((bh == -1))
250- then (bg > -1)
251- else false)
252- then throw("invalid depositNumLast and depositNumUser state")
253- else if (if ((bh > -1))
254- then (bg >= -1)
255- else false)
256- then if (bp)
257- then [IntegerEntry(br, bh)]
258- else ({
259- let bz = bc
260- let bA = size(bz)
261- let bB = nil
262- func bC (bD,bE) = if ((bE >= bA))
263- then bD
264- else bs(bD, bz[bE])
265-
266- func bF (bD,bE) = if ((bE >= bA))
267- then bD
268- else throw("List size exceeds 10")
269-
270- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
271- } :+ IntegerEntry(br, bh))
272- else throw(((("uncovered condition: depositNumLast=" + toString(bh)) + " depositNumUser=") + toString(bg)))
273- }
239+func bs (ab) = ((ab / k) * k)
274240
275241
276-func bG (af,bH) = {
277- let bI = ai(af)
278- let bJ = an(bI, 0)
279-[IntegerEntry(bI, (bJ + bH))]
280- }
281-
282-
283-func bK (bL) = (bL / K)
284-
285-
286-func bM (bN,bO,bP,bQ) = {
287- let bR = (bO - height)
288- if ((0 >= bR))
289- then (height + bN)
242+func bt (bu,bv,bw) = {
243+ let bx = valueOrErrorMessage(indexOf(bu, bv), ((("there is no substring " + bv) + " in ") + bu))
244+ if ((bx == 0))
245+ then 0
290246 else {
291- let bS = (bN - bR)
292- let bT = if ((bQ != 0))
293- then fraction(bP, e, bQ)
294- else bO
295- ((bN + height) - fraction(bS, bT, e))
247+ let by = take(bu, bx)
248+ (size(split(by, bw)) - 1)
296249 }
297250 }
298251
299252
300-func bU (Q,bV) = {
301- let bW = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
302- let bp = bW._1
303- let bq = bW._2
304- let bO = bW._3
305- let bX = if (bp)
306- then bV
307- else (bV + bq)
308- let bN = (1440 * 14)
309- let bY = if (bp)
310- then (bN + height)
311- else bM(bN, bO, bq, bX)
312- $Tuple5(bp, bq, bO, bX, bY)
253+let bz = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
254+
255+func bA (bB,bC,bD) = {
256+ let bE = split(bB, c)
257+ func bF (G) = if ((G != bC))
258+ then bE[G]
259+ else toString((parseIntValue(bE[G]) + bD))
260+
261+ makeString([bz, bF(1), bF(2), bF(3), bF(4), bF(5), bF(6), bF(7), bF(8), bF(9), bF(10), bF(11), bF(12), bF(13), bF(14), bF(15), bF(16), bF(17), bF(18)], c)
313262 }
314263
315264
316-func bZ (Q,ca) = {
317- let cb = aX()
318- let cc = cb._1
319- let cd = cb._2
320- if ((size(ca.payments) != 1))
265+func bG (bH,bI) = {
266+ let bJ = bs(lastBlock.timestamp)
267+ let bK = aa(bJ)
268+ let bL = ac()
269+ let bM = bt(bf, bI, "_")
270+ let bN = (bz + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
271+ let bO = valueOrElse(getString(this, bL), bN)
272+ let bP = bA(bO, (bM + 1), bH)
273+[StringEntry(bL, bP), StringEntry(bK, bP)]
274+ }
275+
276+
277+func bQ (bR,R,bS) = {
278+ let bj = toBigInt(bS)
279+ let bT = ag(R)
280+ let bk = ar(bT, -1)
281+ let bl = ar(af(), -1)
282+ func bU (bV,bW) = {
283+ let bX = bh(R, bW, bj, bk, bl)
284+ let bY = bX._1
285+ let bZ = bX._2
286+ let ca = bX._3
287+ let bq = bX._4
288+ (bV :+ IntegerEntry(bq, bY))
289+ }
290+
291+ if (if ((bl == -1))
292+ then (bk == -1)
293+ else false)
294+ then nil
295+ else if (if ((bl == -1))
296+ then (bk > -1)
297+ else false)
298+ then throw("invalid depositNumLast and depositNumUser state")
299+ else if (if ((bl > -1))
300+ then (bk >= -1)
301+ else false)
302+ then if (bR)
303+ then [IntegerEntry(bT, bl)]
304+ else ({
305+ let cb = bg
306+ let cc = size(cb)
307+ let cd = nil
308+ func ce (cf,cg) = if ((cg >= cc))
309+ then cf
310+ else bU(cf, cb[cg])
311+
312+ func ch (cf,cg) = if ((cg >= cc))
313+ then cf
314+ else throw("List size exceeds 9")
315+
316+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
317+ } :+ IntegerEntry(bT, bl))
318+ else throw(((("uncovered condition: depositNumLast=" + toString(bl)) + " depositNumUser=") + toString(bk)))
319+ }
320+
321+
322+func ci (aj,cj) = {
323+ let ck = am(aj)
324+ let cl = ar(ck, 0)
325+[IntegerEntry(ck, (cl + cj))]
326+ }
327+
328+
329+func cm (cn) = (cn / L)
330+
331+
332+func co (cp,cq,cr,cs) = {
333+ let ct = (cq - height)
334+ if ((0 >= ct))
335+ then (height + cp)
336+ else {
337+ let cu = (cp - ct)
338+ let cv = if ((cs != 0))
339+ then fraction(cr, e, cs)
340+ else cq
341+ ((cp + height) - fraction(cu, cv, e))
342+ }
343+ }
344+
345+
346+func cw (R,cx) = {
347+ let cy = valueOrElse(bd(R), $Tuple3(true, 0, 0))
348+ let bR = cy._1
349+ let bS = cy._2
350+ let cq = cy._3
351+ let cz = if (bR)
352+ then cx
353+ else (cx + bS)
354+ let cp = (1440 * 14)
355+ let cA = if (bR)
356+ then (cp + height)
357+ else co(cp, cq, bS, cz)
358+ $Tuple5(bR, bS, cq, cz, cA)
359+ }
360+
361+
362+func cB (R,cC) = {
363+ let cD = bb()
364+ let cE = cD._1
365+ let cF = cD._2
366+ if ((size(cC.payments) != 1))
321367 then throw("Invalid payments size")
322368 else {
323- let ce = ca.payments[0]
324- let aV = ce.amount
325- let cf = (("Invalid asset. " + toBase58String(cc)) + " is expected")
326- let be = valueOrErrorMessage(ce.assetId, cf)
327- if ((be != cc))
328- then throw(cf)
369+ let cG = cC.payments[0]
370+ let aZ = cG.amount
371+ let cH = (("Invalid asset. " + toBase58String(cE)) + " is expected")
372+ let bi = valueOrErrorMessage(cG.assetId, cH)
373+ if ((bi != cE))
374+ then throw(cH)
329375 else {
330- let cg = toString(Q)
331- let ch = bU(Q, aV)
332- let bp = ch._1
333- let bq = ch._2
334- let bO = ch._3
335- let bX = ch._4
336- let bY = ch._5
337- if ((cd > bX))
338- then throw(("Min lock amount is " + toString(cd)))
376+ let cI = toString(R)
377+ let cJ = cw(R, aZ)
378+ let bR = cJ._1
379+ let bS = cJ._2
380+ let cq = cJ._3
381+ let cz = cJ._4
382+ let cA = cJ._5
383+ if ((cF > cz))
384+ then throw(("Min lock amount is " + toString(cF)))
339385 else {
340- let ci = aM(aV, 1, if (bp)
386+ let cK = aQ(aZ, 1, if (bR)
341387 then 1
342388 else 0)
343- let cj = ci._1
344- let ck = ci._2
345- let cl = ci._3
346- ((([aK("stake", Q, ca.transactionId, bq, bO, bX, bY)] ++ bo(bp, cg, bq)) ++ aU(Q, bX, bY)) ++ cj)
389+ let cL = cK._1
390+ let cM = cK._2
391+ let cN = cK._3
392+ ((([aO("stake", R, cC.transactionId, bS, cq, cz, cA)] ++ bQ(bR, cI, bS)) ++ aY(R, cz, cA)) ++ cL)
347393 }
348394 }
349395 }
350396 }
351397
352398
353-func cm (Q,ca) = {
354- let cg = toString(Q)
355- if ((size(ca.payments) > 0))
399+func cO (R,cC) = {
400+ let cI = toString(R)
401+ if ((size(cC.payments) > 0))
356402 then throw("payments are not accepted")
357403 else {
358- let cn = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
359- let bp = cn._1
360- let bq = cn._2
361- let co = cn._3
362- let bf = toBigInt(bq)
363- let br = ac(cg)
364- let bg = an(br, -1)
365- let bh = an(ab(), -1)
366- func cp (bt,bu) = {
367- let cq = bd(cg, bu, bf, bg, bh)
368- let bw = cq._1
369- let bx = cq._2
370- let by = cq._3
371- let bm = cq._4
372- let cr = ah(cg, bu)
373- let cs = bt
374- let ct = cs._1
375- let cu = cs._2
376- let cv = makeString([bu, toString(bw)], ":")
377- let cw = makeString([cu, cv], "_")
378- if ((0 >= bw))
379- then $Tuple2(ct, cw)
380- else $Tuple2((((ct :+ ScriptTransfer(Q, bw, at(bu))) :+ IntegerEntry(cr, (valueOrElse(getInteger(cr), 0) + bw))) :+ IntegerEntry(bm, 0)), cw)
404+ let cP = valueOrElse(bd(R), $Tuple3(true, 0, 0))
405+ let bR = cP._1
406+ let bS = cP._2
407+ let cQ = cP._3
408+ let bj = toBigInt(bS)
409+ let bT = ag(cI)
410+ let bk = ar(bT, -1)
411+ let bl = ar(af(), -1)
412+ func cR (bV,bW) = {
413+ let cS = bh(cI, bW, bj, bk, bl)
414+ let bY = cS._1
415+ let bZ = cS._2
416+ let ca = cS._3
417+ let bq = cS._4
418+ let cT = al(cI, bW)
419+ let cU = bV
420+ let cV = cU._1
421+ let cW = cU._2
422+ let cX = makeString([bW, toString(bY)], ":")
423+ let cY = makeString([cW, cX], "_")
424+ if ((0 >= bY))
425+ then $Tuple2(cV, cY)
426+ else $Tuple2((((cV :+ ScriptTransfer(R, bY, ax(bW))) :+ IntegerEntry(cT, (valueOrElse(getInteger(cT), 0) + bY))) :+ IntegerEntry(bq, 0)), cY)
381427 }
382428
383- let cx = {
384- let bz = bc
385- let bA = size(bz)
386- let bB = $Tuple2(nil, "")
387- func bC (bD,bE) = if ((bE >= bA))
388- then bD
389- else cp(bD, bz[bE])
429+ let cZ = {
430+ let cb = bg
431+ let cc = size(cb)
432+ let cd = $Tuple2(nil, "")
433+ func ce (cf,cg) = if ((cg >= cc))
434+ then cf
435+ else cR(cf, cb[cg])
390436
391- func bF (bD,bE) = if ((bE >= bA))
392- then bD
393- else throw("List size exceeds 10")
437+ func ch (cf,cg) = if ((cg >= cc))
438+ then cf
439+ else throw("List size exceeds 9")
394440
395- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
441+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
396442 }
397- let cy = cx._1
398- let cz = cx._2
399- if ((0 >= size(cy)))
400- then nil
401- else ((cy :+ IntegerEntry(br, bh)) :+ aL(Q, ca.transactionId, drop(cz, 1)))
443+ let da = cZ._1
444+ let db = cZ._2
445+ if ((0 >= size(da)))
446+ then $Tuple2(nil, 0)
447+ else $Tuple2(((da :+ IntegerEntry(bT, bl)) :+ aP(R, cC.transactionId, drop(db, 1))), size(da))
402448 }
403449 }
404450
405451
406-@Callable(ca)
407-func constructor (cd,cA,cc) = if ((ca.caller != this))
452+@Callable(cC)
453+func constructor (cF,dc,cE) = if ((cC.caller != this))
408454 then throw("Permission denied")
409- else [IntegerEntry(N(), cd), StringEntry(aa(), cA), StringEntry(O(), cc)]
455+ else [IntegerEntry(O(), cF), StringEntry(ae(), dc), StringEntry(P(), cE)]
410456
411457
412458
413-@Callable(ca)
414-func stake () = bZ(ca.caller, ca)
459+@Callable(cC)
460+func stake () = cB(cC.caller, cC)
415461
416462
417463
418-@Callable(ca)
419-func stakeByOriginCaller () = bZ(ca.originCaller, ca)
464+@Callable(cC)
465+func stakeByOriginCaller () = cB(cC.originCaller, cC)
420466
421467
422468
423-@Callable(ca)
424-func unstake (aV) = if ((size(ca.payments) != 0))
469+@Callable(cC)
470+func unstake (aZ) = if ((size(cC.payments) != 0))
425471 then throw("unstake doesn't require any payment")
426472 else {
427- let Q = ca.caller
428- let cg = toString(Q)
429- let cB = aX()
430- let cc = cB._1
431- let cd = cB._2
432- let cC = ba(Q)
433- let bp = cC._1
434- let bq = cC._2
435- let bO = cC._3
436- let cD = az(reentrantInvoke(I, "swapParamsByUserSYSREADONLY", [cg, 0], nil))
437- let cE = cD._2
438- let cF = cD._3
439- if ((cE > 0))
440- then throw((("You have already made a swap operation. Wait " + toString((height + cF))) + " height to unstake"))
441- else if ((0 >= bq))
473+ let R = cC.caller
474+ let cI = toString(R)
475+ let dd = bb()
476+ let cE = dd._1
477+ let cF = dd._2
478+ let de = be(R)
479+ let bR = de._1
480+ let bS = de._2
481+ let cq = de._3
482+ let df = aD(reentrantInvoke(J, "swapParamsByUserSYSREADONLY", [cI, 0], nil))
483+ let dg = df._2
484+ let dh = df._3
485+ if ((dg > 0))
486+ then throw((("You have already made a swap operation. Wait " + toString((height + dh))) + " height to unstake"))
487+ else if ((0 >= bS))
442488 then throw("Nothing to unstake")
443- else if ((aV > bq))
444- then throw(((("Requested " + toString(aV)) + ", but staked only ") + toString(bq)))
489+ else if ((aZ > bS))
490+ then throw(((("Requested " + toString(aZ)) + ", but staked only ") + toString(bS)))
445491 else {
446- let bX = (bq - aV)
447- let cG = aM(-(aV), if ((aV == bq))
492+ let cz = (bS - aZ)
493+ let di = aQ(-(aZ), if ((aZ == bS))
448494 then -1
449- else 0, if ((aV == bq))
495+ else 0, if ((aZ == bS))
450496 then -1
451497 else 0)
452- let cj = cG._1
453- let ck = cG._2
454- let cl = cG._3
455- ((([ScriptTransfer(Q, aV, cc), aK("unstake", Q, ca.transactionId, bq, bO, bX, bO)] ++ bo(false, cg, bq)) ++ aU(Q, bX, bO)) ++ cj)
498+ let cL = di._1
499+ let cM = di._2
500+ let cN = di._3
501+ ((([ScriptTransfer(R, aZ, cE), aO("unstake", R, cC.transactionId, bS, cq, cz, cq)] ++ bQ(false, cI, bS)) ++ aY(R, cz, cq)) ++ cL)
456502 }
457503 }
458504
459505
460506
461-@Callable(ca)
462-func deposit () = if ((size(ca.payments) != 1))
507+@Callable(cC)
508+func deposit () = if ((size(cC.payments) != 1))
463509 then throw("exact 1 payment is allowed only")
464510 else {
465- let cH = ca.payments[0]
466- let aV = cH.amount
467- let cI = valueOrElse(cH.assetId, j)
468- let cJ = toBase58String(cI)
469- let cK = if ((cI == j))
511+ let dj = cC.payments[0]
512+ let aZ = dj.amount
513+ let dk = valueOrElse(dj.assetId, j)
514+ let dl = toBase58String(dk)
515+ let dm = if ((dk == j))
470516 then g
471517 else f
472- let cL = toBigInt(aV)
473- let ck = an(W(), 0)
474- let cM = toBigInt(ck)
475- if ((0 > ck))
518+ let dn = toBigInt(aZ)
519+ let cM = ar(X(), 0)
520+ let do = toBigInt(cM)
521+ if ((0 > cM))
476522 then throw("TODO: case is not supported")
477- else if ((ck == 0))
478- then bG(cJ, aV)
523+ else if ((cM == 0))
524+ then ci(dl, aZ)
479525 else {
480- let cN = fraction(cL, h, cM)
481- let cO = ab()
482- let bh = an(cO, -1)
483- let cP = (bh + 1)
484- if (!(contains(bb, cJ)))
485- then throw(((bb + " doesn't contain ") + cJ))
526+ let dp = fraction(dn, h, do)
527+ let dq = af()
528+ let bl = ar(dq, -1)
529+ let dr = (bl + 1)
530+ if (!(contains(bf, dl)))
531+ then throw(((bf + " doesn't contain ") + dl))
486532 else {
487- func cQ (bt,cR) = {
488- let cS = ad(cP, cR)
489- let cT = aq(ad(bh, cR), "0")
490- (bt :+ (if ((cR == cJ))
491- then StringEntry(cS, toString((parseBigIntValue(cT) + cN)))
492- else StringEntry(cS, cT)))
533+ func ds (bV,dt) = {
534+ let du = ah(dr, dt)
535+ let dv = au(ah(bl, dt), "0")
536+ (bV :+ (if ((dt == dl))
537+ then StringEntry(du, toString((parseBigIntValue(dv) + dp)))
538+ else StringEntry(du, dv)))
493539 }
494540
495- ({
496- let bz = bc
497- let bA = size(bz)
498- let bB = nil
499- func bC (bD,bE) = if ((bE >= bA))
500- then bD
501- else cQ(bD, bz[bE])
541+ (({
542+ let cb = bg
543+ let cc = size(cb)
544+ let cd = nil
545+ func ce (cf,cg) = if ((cg >= cc))
546+ then cf
547+ else ds(cf, cb[cg])
502548
503- func bF (bD,bE) = if ((bE >= bA))
504- then bD
505- else throw("List size exceeds 10")
549+ func ch (cf,cg) = if ((cg >= cc))
550+ then cf
551+ else throw("List size exceeds 9")
506552
507- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
508- } :+ IntegerEntry(cO, cP))
553+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
554+ } :+ IntegerEntry(dq, dr)) ++ bG(aZ, dl))
509555 }
510556 }
511557 }
512558
513559
514560
515-@Callable(ca)
516-func claimRewards () = cm(ca.caller, ca)
561+@Callable(cC)
562+func claimRewards () = cO(cC.caller, cC)
517563
518564
519565
520-@Callable(ca)
521-func claimRewardsByOriginCaller () = cm(ca.originCaller, ca)
566+@Callable(cC)
567+func claimRewardsByOriginCaller () = cO(cC.originCaller, cC)
522568
523569
524570
525-@Callable(ca)
526-func unclaimedRewardsREADONLY (cg) = {
527- func cU (bt,bu) = ((bt + makeString([bu, "0", "0"], ":")) + "_")
571+@Callable(cC)
572+func unclaimedRewardsREADONLY (cI) = {
573+ func dw (bV,bW) = ((bV + makeString([bW, "0", "0"], ":")) + "_")
528574
529- let cV = if ((cg == ""))
575+ let dx = if ((cI == ""))
530576 then {
531- let bz = bc
532- let bA = size(bz)
533- let bB = ""
534- func bC (bD,bE) = if ((bE >= bA))
535- then bD
536- else cU(bD, bz[bE])
577+ let cb = bg
578+ let cc = size(cb)
579+ let cd = ""
580+ func ce (cf,cg) = if ((cg >= cc))
581+ then cf
582+ else dw(cf, cb[cg])
537583
538- func bF (bD,bE) = if ((bE >= bA))
539- then bD
540- else throw("List size exceeds 10")
584+ func ch (cf,cg) = if ((cg >= cc))
585+ then cf
586+ else throw("List size exceeds 9")
541587
542- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
588+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
543589 }
544590 else {
545- let Q = addressFromStringValue(cg)
546- let cW = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
547- let bp = cW._1
548- let bq = cW._2
549- let co = cW._3
550- let bf = toBigInt(bq)
551- let br = ac(cg)
552- let bg = an(br, -1)
553- let bh = an(ab(), -1)
554- func cp (bt,bu) = {
555- let cX = bd(cg, bu, bf, bg, bh)
556- let bw = cX._1
557- let bx = cX._2
558- let by = cX._3
559- let bm = cX._4
560- let cY = valueOrElse(getInteger(ah(cg, bu)), 0)
561- ((bt + makeString([bu, toString(bw), toString(cY)], ":")) + "_")
591+ let R = addressFromStringValue(cI)
592+ let dy = valueOrElse(bd(R), $Tuple3(true, 0, 0))
593+ let bR = dy._1
594+ let bS = dy._2
595+ let cQ = dy._3
596+ let bj = toBigInt(bS)
597+ let bT = ag(cI)
598+ let bk = ar(bT, -1)
599+ let bl = ar(af(), -1)
600+ func cR (bV,bW) = {
601+ let dz = bh(cI, bW, bj, bk, bl)
602+ let bY = dz._1
603+ let bZ = dz._2
604+ let ca = dz._3
605+ let bq = dz._4
606+ let dA = valueOrElse(getInteger(al(cI, bW)), 0)
607+ ((bV + makeString([bW, toString(bY), toString(dA)], ":")) + "_")
562608 }
563609
564- let bz = bc
565- let bA = size(bz)
566- let bB = ""
567- func bC (bD,bE) = if ((bE >= bA))
568- then bD
569- else cp(bD, bz[bE])
610+ let cb = bg
611+ let cc = size(cb)
612+ let cd = ""
613+ func ce (cf,cg) = if ((cg >= cc))
614+ then cf
615+ else cR(cf, cb[cg])
570616
571- func bF (bD,bE) = if ((bE >= bA))
572- then bD
573- else throw("List size exceeds 10")
617+ func ch (cf,cg) = if ((cg >= cc))
618+ then cf
619+ else throw("List size exceeds 9")
574620
575- bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
621+ ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
576622 }
577- $Tuple2(nil, dropRight(cV, 1))
623+ $Tuple2(nil, dropRight(dx, 1))
578624 }
579625
580626
581627
582-@Callable(ca)
583-func surfStakingSYSREADONLY (cZ,da) = {
584- let db = an(W(), 0)
585- let dc = bK(db)
586- if ((cZ == ""))
587- then $Tuple2(nil, [0, db, 0, dc, 0, height, height])
628+@Callable(cC)
629+func surfStakingSYSREADONLY (dB,dC) = {
630+ let dD = ar(X(), 0)
631+ let dE = cm(dD)
632+ if ((dB == ""))
633+ then $Tuple2(nil, [0, dD, 0, dE, 0, height, height])
588634 else {
589- let Q = ar(cZ)
590- let ch = bU(Q, da)
591- let bp = ch._1
592- let bq = ch._2
593- let bO = ch._3
594- let bX = ch._4
595- let bY = ch._5
596- let dd = bq
597- let de = bK(dd)
598- $Tuple2(nil, [dd, db, de, dc, bO, bY])
635+ let R = av(dB)
636+ let cJ = cw(R, dC)
637+ let bR = cJ._1
638+ let bS = cJ._2
639+ let cq = cJ._3
640+ let cz = cJ._4
641+ let cA = cJ._5
642+ let dF = bS
643+ let dG = cm(dF)
644+ $Tuple2(nil, [dF, dD, dG, dE, cq, cA])
599645 }
600646 }
601647
602648
603649
604-@Callable(ca)
605-func gnsbtFromSurfSYSREADONLY (bL) = $Tuple2(nil, bK(bL))
650+@Callable(cC)
651+func gnsbtFromSurfSYSREADONLY (cn) = $Tuple2(nil, cm(cn))
606652
607653
608654
609-@Callable(ca)
655+@Callable(cC)
610656 func configSYSREADONLY () = {
611- let df = getIntegerValue(N())
612- let dg = (1440 * 14)
613- let dh = 1150000
614- $Tuple2(nil, [df, (K * d), dg, dh])
657+ let dH = getIntegerValue(O())
658+ let dI = (1440 * 14)
659+ let dJ = 1150000
660+ $Tuple2(nil, [dH, (L * d), dI, dJ])
615661 }
616662
617663

github/deemru/w8io/3ef1775 
246.81 ms