tx · JC5Tc3eau8MEGK75s9k1iX3r49bHbb7XVXsSf6EDu6X5

3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C:  -0.02400000 Waves

2022.08.09 20:59 [3242746] smart account 3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C > SELF 0.00000000 Waves

{ "type": 13, "id": "JC5Tc3eau8MEGK75s9k1iX3r49bHbb7XVXsSf6EDu6X5", "fee": 2400000, "feeAssetId": null, "timestamp": 1660069863279, "version": 1, "sender": "3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C", "senderPublicKey": "BYLtcNg4P4UcUd6tFdxeuhyRqgkYZujzyfwdEHNmo89c", "proofs": [ "5wnnVPMWmLC1cxDwXqoUBxAfzAzKpvVpSy1bY636gDkQkzzxq2mrQ5KkfNxoaq6e7iLzHqYA4fKmK56fBXcxN5LL" ], "script": "base64:BgIqCAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSBAoCCAESAwoBARIAUQALcmV2aXNpb25OdW0CKDQ2N2Q2OWRiMGI2MGM2YWFjMDUwOGU2ODcyNDhjZDU4ODMzOGZiMzQACXNlcGFyYXRvcgICX18AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAGTVVMVFg2CQC2AgEFBU1VTFQ2AAZNVUxUWDgJALYCAQUFTVVMVDgAB01VTFRYMTgJALYCAQCAgJC7utat8A0ACldBVkVTSURTVFICBVdBVkVTAAdXQVZFU0lECQDZBAEFCldBVkVTSURTVFIAGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAAQAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAIAFElkeENvbnRyb2xDZmdScGREYXBwAAMAFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAEABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAUAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAGAB1JZHhDb250cm9sQ2ZnTm9kZVJlZ2lzdHJ5RGFwcAAHABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAgAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAACQAcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAAKACBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAALAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARVrZXlHbnNidEZyb21TdXJmQ29lZmYAAh0lcyVzX19jZmdfX2duc2J0RnJvbVN1cmZDb2VmZgEUcmVhZENvbnRyb2xDZmdPckZhaWwBB2NvbnRyb2wJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFB2NvbnRyb2wJAQ1rZXlDb250cm9sQ2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCmNvbnRyb2xDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpjb250cm9sQ2ZnBQNpZHgJAKwCAgItQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAPY29udHJvbENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFrZXlDb250cm9sQWRkcmVzcwACIzNQNUJmZDU4UFBmTnZCTTJIeThRZmJjRHFNZU50emc3S2ZQAApjb250cm9sQ2ZnCQEUcmVhZENvbnRyb2xDZmdPckZhaWwBBQ9jb250cm9sQ29udHJhY3QADG1hdGhDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAQbmV1dHJpbm9Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAD2F1Y3Rpb25Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAASZ25zYnRGcm9tU3VyZkNvZWZmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARVrZXlHbnNidEZyb21TdXJmQ29lZmYAAKwCAQxrZXlCb25kQXNzZXQAAg1ib25kX2Fzc2V0X2lkARlrZXlBdWN0aW9uQ29udHJhY3RBZGRyZXNzAAIQYXVjdGlvbl9jb250cmFjdAEQa2V5TWluTG9ja0Ftb3VudAACESVzX19taW5Mb2NrQW1vdW50ARBrZXlTdGFrZWRBc3NldElkAAIRJXNfX3N0YWtlZEFzc2V0SWQBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIGYW1vdW50BQNuaWwFCXNlcGFyYXRvcgEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAgVzdGFydAUDbmlsBQlzZXBhcmF0b3IBJmtleUxvY2tQYXJhbVZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICEXZwRWZmZWN0aXZlSGVpZ2h0BQNuaWwFCXNlcGFyYXRvcgEQa2V5SGlzdG9yeVJlY29yZAMEdHlwZQt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIHaGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgkA2AQBBQR0eElkBQNuaWwFCXNlcGFyYXRvcgEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhFhY3RpdmVUb3RhbExvY2tlZAUDbmlsBQlzZXBhcmF0b3IBEmtleVN0YXRzTG9ja3NDb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICCmxvY2tzQ291bnQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c1VzZXJzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhBhY3RpdmVVc2Vyc0NvdW50BQNuaWwFCXNlcGFyYXRvcgENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAhVzdXBwb3J0ZWRSZXdhcmRBc3NldHMBEWtleURlcG9zaXROdW1MYXN0AAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQlzZXBhcmF0b3IBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdXNlclJ3ZEZyb21EZXBOdW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCCmRlcG9zaXROdW0DdGtuCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhVyd2RQZXJOc2J0U3VtQnlEZXBOdW0JAMwIAgkApAMBBQpkZXBvc2l0TnVtCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBCWtleVJld2FyZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA3J3ZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yAQprZXlDbGFpbWVkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDY2xtCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQN0a24JALkJAgkAzAgCAgQlcyVzCQDMCAICDm5vdERpc3RyaWJ1dGVkCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBBXRvWDE4AgdvcmlnVmFsCG9yaWdNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHTVVMVFgxOAUIb3JpZ011bHQBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9NYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRTdHJPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEPdG9BZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAiFjb3VsZG4ndCBwYXJzZSBwYXNzZWQgYWRkcmVzc1N0cj0FCmFkZHJlc3NTdHIBC3RvQXNzZXRWZWN0AQhhc3NldFN0cgMJAAACBQhhc3NldFN0cgUKV0FWRVNJRFNUUgUEdW5pdAkA2QQBBQhhc3NldFN0cgEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBEmFzU3dhcFBhcmFtc1NUUlVDVAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAhkoSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAZzdHJ1Y3QFByRtYXRjaDAFBnN0cnVjdAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAETZm9ybWF0SGlzdG9yeVJlY29yZAQJb2xkQW1vdW50CG9sZFN0YXJ0CW5ld0Ftb3VudAhuZXdTdGFydAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQlvbGRBbW91bnQJAMwIAgkApAMBBQhvbGRTdGFydAkAzAgCCQCkAwEFCW5ld0Ftb3VudAkAzAgCCQCkAwEFCG5ld1N0YXJ0BQNuaWwFCXNlcGFyYXRvcgEYZm9ybWF0Q2xhaW1IaXN0b3J5UmVjb3JkAgR1c2VyDmNsYWltZWRSZXdhcmRzCQC5CQIJAMwIAgIIJXMlZCVkJXMJAMwIAgUEdXNlcgkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgUOY2xhaW1lZFJld2FyZHMFA25pbAUJc2VwYXJhdG9yARJIaXN0b3J5UmVjb3JkRW50cnkHBHR5cGULdXNlckFkZHJlc3MEdHhJZAlvbGRBbW91bnQIb2xkU3RhcnQJbmV3QW1vdW50CG5ld1N0YXJ0CQELU3RyaW5nRW50cnkCCQEQa2V5SGlzdG9yeVJlY29yZAMFBHR5cGUFC3VzZXJBZGRyZXNzBQR0eElkCQETZm9ybWF0SGlzdG9yeVJlY29yZAQFCW9sZEFtb3VudAUIb2xkU3RhcnQFCW5ld0Ftb3VudAUIbmV3U3RhcnQBEUNsYWltSGlzdG9yeUVudHJ5Awt1c2VyQWRkcmVzcwR0eElkDmNsYWltZWRSZXdhcmRzCQELU3RyaW5nRW50cnkCCQEQa2V5SGlzdG9yeVJlY29yZAMCBWNsYWltBQt1c2VyQWRkcmVzcwUEdHhJZAkBGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAIJAKUIAQULdXNlckFkZHJlc3MFDmNsYWltZWRSZXdhcmRzAQtTdGF0c1Jlc3VsdAMOdG90YWxMb2NrZWRJbmMMbG9ja0NvdW50SW5jDXVzZXJzQ291bnRJbmMECmxvY2tzQ291bnQJAQxnZXRJbnRPclplcm8BCQESa2V5U3RhdHNMb2Nrc0NvdW50AAQKdXNlcnNDb3VudAkBDGdldEludE9yWmVybwEJARJrZXlTdGF0c1VzZXJzQ291bnQABAt0b3RhbEFtb3VudAkBDGdldEludE9yWmVybwEJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAEDnRvdGFsQW1vdW50TmV3CQBkAgULdG90YWxBbW91bnQFDnRvdGFsTG9ja2VkSW5jCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlTdGF0c0xvY2tzQ291bnQACQBkAgUKbG9ja3NDb3VudAUMbG9ja0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNVc2Vyc0NvdW50AAkAZAIFCnVzZXJzQ291bnQFDXVzZXJzQ291bnRJbmMJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAFDnRvdGFsQW1vdW50TmV3BQNuaWwFC3RvdGFsQW1vdW50BQ50b3RhbEFtb3VudE5ldwEPTG9ja1BhcmFtc0VudHJ5Awt1c2VyQWRkcmVzcwZhbW91bnQadm90aW5nUG93ZXJFZmZlY3RpdmVIZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQt1c2VyQWRkcmVzcwUadm90aW5nUG93ZXJFZmZlY3RpdmVIZWlnaHQFA25pbAEPZ2V0UGFyYW1zT3JGYWlsAAkAlAoCCQDZBAEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQEQa2V5U3Rha2VkQXNzZXRJZAAJAQxnZXRJbnRPckZhaWwBCQEQa2V5TWluTG9ja0Ftb3VudAABDGlzQWN0aXZlVXNlcgELdXNlckFkZHJlc3MJAGYCCQEMZ2V0SW50T3JFbHNlAgkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwAAAAABE2dldFVzZXJQYXJhbXNPclVuaXQBC3VzZXJBZGRyZXNzAwkBDGlzQWN0aXZlVXNlcgEFC3VzZXJBZGRyZXNzCQCVCgMHCQEMZ2V0SW50T3JGYWlsAQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQULdXNlckFkZHJlc3MFBHVuaXQBE2dldFVzZXJQYXJhbXNPckZhaWwBC3VzZXJBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAKwCAgkArAICAgVVc2VyIAkApQgBBQt1c2VyQWRkcmVzcwIPIGlzIG5vdCBkZWZpbmVkABJzdXBwb3J0ZWRBc3NldHNTdHIJAQxnZXRTdHJPckVsc2UCCQEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAIAABNzdXBwb3J0ZWRBc3NldHNMaXN0CQC1CQIFEnN1cHBvcnRlZEFzc2V0c1N0cgIBXwEKY2FsY1Jld2FyZAULdXNlckFkZHJlc3MHYXNzZXRJZA1zdGFrZWRBbW91bnRYDmRlcG9zaXROdW1Vc2VyDmRlcG9zaXROdW1MYXN0BBdyZXdhcmRQZXJOc2J0U3VtTGFzdEtFWQkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkBApzdW1MYXN0WDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFB2Fzc2V0SWQCATAECnN1bVVzZXJYMTgJAKcDAQkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtVXNlcgUHYXNzZXRJZAIBMAQRcmV3YXJkRHluYW1pY1BhcnQJAKADAQkAvAIDCQC4AgIFCnN1bUxhc3RYMTgFCnN1bVVzZXJYMTgFDXN0YWtlZEFtb3VudFgFB01VTFRYMTgEE3Jld2FyZENhY2hlZFBhcnRLRVkJAQlrZXlSZXdhcmQCBQt1c2VyQWRkcmVzcwUHYXNzZXRJZAQQcmV3YXJkQ2FjaGVkUGFydAkBDGdldEludE9yRWxzZQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAkAlgoECQBkAgUQcmV3YXJkQ2FjaGVkUGFydAURcmV3YXJkRHluYW1pY1BhcnQFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRNyZXdhcmRDYWNoZWRQYXJ0S0VZAQ1SZXdhcmRFbnRyaWVzAwlpc05ld1VzZXILdXNlckFkZHJlc3MMc3Rha2VkQW1vdW50BA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQULdXNlckFkZHJlc3MEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgVhY2N1bQVhc3NldAQLJHQwODk4MzkxMTgJAQpjYWxjUmV3YXJkBQULdXNlckFkZHJlc3MFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAULJHQwODk4MzkxMTgCXzEEBmNhY2hlZAgFCyR0MDg5ODM5MTE4Al8yBAdkeW5hbWljCAULJHQwODk4MzkxMTgCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQskdDA4OTgzOTExOAJfNAkAzQgCBQVhY2N1bQkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkFC3Jld2FyZFRvdGFsAwMJAAACBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQAAAgUOZGVwb3NpdE51bVVzZXIA////////////AQcFA25pbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAZgIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHCQACAQIvaW52YWxpZCBkZXBvc2l0TnVtTGFzdCBhbmQgZGVwb3NpdE51bVVzZXIgc3RhdGUDAwkAZgIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGcCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwMFCWlzTmV3VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZBQ5kZXBvc2l0TnVtTGFzdAUDbmlsCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQEMSW50ZWdlckVudHJ5AgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZBQ5kZXBvc2l0TnVtTGFzdAkAAgEJAKwCAgkArAICCQCsAgICJHVuY292ZXJlZCBjb25kaXRpb246IGRlcG9zaXROdW1MYXN0PQkApAMBBQ5kZXBvc2l0TnVtTGFzdAIQIGRlcG9zaXROdW1Vc2VyPQkApAMBBQ5kZXBvc2l0TnVtVXNlcgEiSW5jcmVtZW50Tm90RGlzdHJpYnV0ZWRSZXdhcmRFbnRyeQIDdGtuCWFtb3VudEluYwQXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJARdrZXlOb3REaXN0cmlidXRlZFJld2FyZAEFA3RrbgQUbm90RGlzdHJpYnV0ZWRSZXdhcmQJAQxnZXRJbnRPckVsc2UCBRdub3REaXN0cmlidXRlZFJld2FyZEtFWQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdub3REaXN0cmlidXRlZFJld2FyZEtFWQkAZAIFFG5vdERpc3RyaWJ1dGVkUmV3YXJkBQlhbW91bnRJbmMFA25pbAELc3VyZlRvR25zYnQBB3N1cmZBbXQJAGkCBQdzdXJmQW10BRJnbnNidEZyb21TdXJmQ29lZmYBH21lcmdlVm90aW5nUG93ZXJFZmZlY3RpdmVIZWlnaHQEEHF1YXJhbnRpbmVQZXJpb2QRdnBFZmZlY3RpdmVIZWlnaHQJc3Rha2VkQW10DHN0YWtlZEFtdE5FVwQPcmVtYWluaW5nVG9XYWl0CQBlAgURdnBFZmZlY3RpdmVIZWlnaHQFBmhlaWdodAMJAGcCAAAFD3JlbWFpbmluZ1RvV2FpdAkAZAIFBmhlaWdodAUQcXVhcmFudGluZVBlcmlvZAQNYWxyZWFkeVdhaXRlZAkAZQIFEHF1YXJhbnRpbmVQZXJpb2QFD3JlbWFpbmluZ1RvV2FpdAQDa1g4AwkBAiE9AgUMc3Rha2VkQW10TkVXAAAJAGsDBQlzdGFrZWRBbXQFBU1VTFQ4BQxzdGFrZWRBbXRORVcFEXZwRWZmZWN0aXZlSGVpZ2h0CQBlAgkAZAIFEHF1YXJhbnRpbmVQZXJpb2QFBmhlaWdodAkAawMFDWFscmVhZHlXYWl0ZWQFA2tYOAUFTVVMVDgBCm1lcmdlU3Rha2UCC3VzZXJBZGRyZXNzC2Ftb3VudFRvQWRkBA0kdDAxMjc3MTEyODgxCQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAAAAQJaXNOZXdVc2VyCAUNJHQwMTI3NzExMjg4MQJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMTI3NzExMjg4MQJfMgQRdnBFZmZlY3RpdmVIZWlnaHQIBQ0kdDAxMjc3MTEyODgxAl8zBA9zdGFrZWRBbW91bnRORVcDBQlpc05ld1VzZXIFC2Ftb3VudFRvQWRkCQBkAgULYW1vdW50VG9BZGQFDHN0YWtlZEFtb3VudAQQcXVhcmFudGluZVBlcmlvZAkAaAIAoAsADgQUdnBFZmZlY3RpdmVIZWlnaHRORVcDBQlpc05ld1VzZXIJAGQCBRBxdWFyYW50aW5lUGVyaW9kBQZoZWlnaHQJAR9tZXJnZVZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0BAUQcXVhcmFudGluZVBlcmlvZAURdnBFZmZlY3RpdmVIZWlnaHQFDHN0YWtlZEFtb3VudAUPc3Rha2VkQW1vdW50TkVXCQCXCgUFCWlzTmV3VXNlcgUMc3Rha2VkQW1vdW50BRF2cEVmZmVjdGl2ZUhlaWdodAUPc3Rha2VkQW1vdW50TkVXBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwELY29tbW9uU3Rha2UCC3VzZXJBZGRyZXNzAWkEDSR0MDEzMzY3MTM0MjEJAQ9nZXRQYXJhbXNPckZhaWwABA1zdGFrZWRBc3NldElkCAUNJHQwMTMzNjcxMzQyMQJfMQQNbWluTG9ja0Ftb3VudAgFDSR0MDEzMzY3MTM0MjECXzIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhVJbnZhbGlkIHBheW1lbnRzIHNpemUEB3BheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CAUHcGF5bWVudAZhbW91bnQEE2ludmFsaWRBc3NldE1lc3NhZ2UJAKwCAgkArAICAg9JbnZhbGlkIGFzc2V0LiAJANgEAQUNc3Rha2VkQXNzZXRJZAIMIGlzIGV4cGVjdGVkBAdhc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQdwYXltZW50B2Fzc2V0SWQFE2ludmFsaWRBc3NldE1lc3NhZ2UDCQECIT0CBQdhc3NldElkBQ1zdGFrZWRBc3NldElkCQACAQUTaW52YWxpZEFzc2V0TWVzc2FnZQQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MECm1lcmdlZERhdGEJAQptZXJnZVN0YWtlAgULdXNlckFkZHJlc3MFBmFtb3VudAQJaXNOZXdVc2VyCAUKbWVyZ2VkRGF0YQJfMQQMc3Rha2VkQW1vdW50CAUKbWVyZ2VkRGF0YQJfMgQRdnBFZmZlY3RpdmVIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80BBR2cEVmZmVjdGl2ZUhlaWdodE5FVwgFCm1lcmdlZERhdGECXzUDCQBmAgUNbWluTG9ja0Ftb3VudAUPc3Rha2VkQW1vdW50TkVXCQACAQkArAICAhNNaW4gbG9jayBhbW91bnQgaXMgCQCkAwEFDW1pbkxvY2tBbW91bnQEDSR0MDE0MjIwMTQzMjIJAQtTdGF0c1Jlc3VsdAMFBmFtb3VudAABAwUJaXNOZXdVc2VyAAEAAAQMc3RhdHNFbnRyaWVzCAUNJHQwMTQyMjAxNDMyMgJfMQQLdG90YWxTdGFrZWQIBQ0kdDAxNDIyMDE0MzIyAl8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDE0MjIwMTQzMjICXzMJAM4IAgkAzggCCQDOCAIJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCBXN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUMc3Rha2VkQW1vdW50BRF2cEVmZmVjdGl2ZUhlaWdodAUPc3Rha2VkQW1vdW50TkVXBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwUDbmlsCQENUmV3YXJkRW50cmllcwMFCWlzTmV3VXNlcgUOdXNlckFkZHJlc3NTdHIFDHN0YWtlZEFtb3VudAkBD0xvY2tQYXJhbXNFbnRyeQMFC3VzZXJBZGRyZXNzBQ9zdGFrZWRBbW91bnRORVcFFHZwRWZmZWN0aXZlSGVpZ2h0TkVXBQxzdGF0c0VudHJpZXMBC2NvbW1vbkNsYWltAgt1c2VyQWRkcmVzcwFpBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhlwYXltZW50cyBhcmUgbm90IGFjY2VwdGVkBA0kdDAxNDgwMTE0OTA2CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAAAAQJaXNOZXdVc2VyCAUNJHQwMTQ4MDExNDkwNgJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMTQ4MDExNDkwNgJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMTQ4MDExNDkwNgJfMwQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFDnVzZXJBZGRyZXNzU3RyBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAxNTI3NzE1NDE1CQEKY2FsY1Jld2FyZAUFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDE1Mjc3MTU0MTUCXzEEBmNhY2hlZAgFDSR0MDE1Mjc3MTU0MTUCXzIEB2R5bmFtaWMIBQ0kdDAxNTI3NzE1NDE1Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMTUyNzcxNTQxNQJfNAQKY2xhaW1lZEtFWQkBCmtleUNsYWltZWQCBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQEDSR0MDE1NDc1MTU1MTIFBWFjY3VtBARkYXRhCAUNJHQwMTU0NzUxNTUxMgJfMQQRY2xhaW1lZEFtdEJ5QXNzZXQIBQ0kdDAxNTQ3NTE1NTEyAl8yBAduZXdQYXJ0CQC5CQIJAMwIAgUFYXNzZXQJAMwIAgkApAMBBQtyZXdhcmRUb3RhbAUDbmlsAgE6BBRjbGFpbWVkQW10QnlBc3NldE5ldwkAuQkCCQDMCAIFEWNsYWltZWRBbXRCeUFzc2V0CQDMCAIFB25ld1BhcnQFA25pbAIBXwMJAGcCAAAFC3Jld2FyZFRvdGFsCQCUCgIFBGRhdGEFFGNsYWltZWRBbXRCeUFzc2V0TmV3CQCUCgIJAM0IAgkAzQgCCQDNCAIFBGRhdGEJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQtyZXdhcmRUb3RhbAkBC3RvQXNzZXRWZWN0AQUFYXNzZXQJAQxJbnRlZ2VyRW50cnkCBQpjbGFpbWVkS0VZCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpjbGFpbWVkS0VZAAAFC3Jld2FyZFRvdGFsCQEMSW50ZWdlckVudHJ5AgUTcmV3YXJkQ2FjaGVkUGFydEtFWQAABRRjbGFpbWVkQW10QnlBc3NldE5ldwQNJHQwMTU5NzIxNjA4NgoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwCAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQJdHJhbnNmZXJzCAUNJHQwMTU5NzIxNjA4NgJfMQQXY2xhaW1lZEFtdEJ5QXNzZXRSZXN1bHQIBQ0kdDAxNTk3MjE2MDg2Al8yAwkAZwIAAAkAkAMBBQl0cmFuc2ZlcnMFA25pbAkAzQgCCQDNCAIFCXRyYW5zZmVycwkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJARFDbGFpbUhpc3RvcnlFbnRyeQMFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCwAgIFF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0AAELAWkBC2NvbnN0cnVjdG9yAw1taW5Mb2NrQW1vdW50FXN1cHBvcnRlZFJld2FyZEFzc2V0cw1zdGFrZWRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlNaW5Mb2NrQW1vdW50AAUNbWluTG9ja0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAUVc3VwcG9ydGVkUmV3YXJkQXNzZXRzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTdGFrZWRBc3NldElkAAUNc3Rha2VkQXNzZXRJZAUDbmlsAWkBBXN0YWtlAAkBC2NvbW1vblN0YWtlAggFAWkGY2FsbGVyBQFpAWkBE3N0YWtlQnlPcmlnaW5DYWxsZXIACQELY29tbW9uU3Rha2UCCAUBaQxvcmlnaW5DYWxsZXIFAWkBaQEHdW5zdGFrZQEGYW1vdW50AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIjdW5zdGFrZSBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzBA0kdDAxNjk5NTE3MDQ5CQEPZ2V0UGFyYW1zT3JGYWlsAAQNc3Rha2VkQXNzZXRJZAgFDSR0MDE2OTk1MTcwNDkCXzEEDW1pbkxvY2tBbW91bnQIBQ0kdDAxNjk5NTE3MDQ5Al8yBA0kdDAxNzA1MjE3MTM2CQETZ2V0VXNlclBhcmFtc09yRmFpbAEFC3VzZXJBZGRyZXNzBAlpc05ld1VzZXIIBQ0kdDAxNzA1MjE3MTM2Al8xBAxzdGFrZWRBbW91bnQIBQ0kdDAxNzA1MjE3MTM2Al8yBBF2cEVmZmVjdGl2ZUhlaWdodAgFDSR0MDE3MDUyMTcxMzYCXzMEEHN3YXBQYXJhbXNTVFJVQ1QJARJhc1N3YXBQYXJhbXNTVFJVQ1QBCQD9BwQFEG5ldXRyaW5vQ29udHJhY3QCG3N3YXBQYXJhbXNCeVVzZXJTWVNSRUFET05MWQkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCAAAFA25pbAUDbmlsBAxzd2FwTGltaXRNYXgIBRBzd2FwUGFyYW1zU1RSVUNUAl8xBA5zd2FwTGltaXRTcGVudAgFEHN3YXBQYXJhbXNTVFJVQ1QCXzIEDmJsY2tzMkxtdFJlc2V0CAUQc3dhcFBhcmFtc1NUUlVDVAJfMwMJAGYCBQ5zd2FwTGltaXRTcGVudAAACQACAQkArAICCQCsAgICLVlvdSBoYXZlIGFscmVhZHkgbWFkZSBhIHN3YXAgb3BlcmF0aW9uLiBXYWl0IAkApAMBCQBkAgUGaGVpZ2h0BQ5ibGNrczJMbXRSZXNldAISIGhlaWdodCB0byB1bnN0YWtlAwkAZwIAAAUMc3Rha2VkQW1vdW50CQACAQISTm90aGluZyB0byB1bnN0YWtlAwkAZgIFBmFtb3VudAUMc3Rha2VkQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIKUmVxdWVzdGVkIAkApAMBBQZhbW91bnQCEiwgYnV0IHN0YWtlZCBvbmx5IAkApAMBBQxzdGFrZWRBbW91bnQED3N0YWtlZEFtb3VudE5FVwkAZQIFDHN0YWtlZEFtb3VudAUGYW1vdW50BA0kdDAxNzgwNjE3OTY0CQELU3RhdHNSZXN1bHQDCQEBLQEFBmFtb3VudAMJAAACBQZhbW91bnQFDHN0YWtlZEFtb3VudAD///////////8BAAADCQAAAgUGYW1vdW50BQxzdGFrZWRBbW91bnQA////////////AQAABAxzdGF0c0VudHJpZXMIBQ0kdDAxNzgwNjE3OTY0Al8xBAt0b3RhbFN0YWtlZAgFDSR0MDE3ODA2MTc5NjQCXzIEDnRvdGFsU3Rha2VkTmV3CAUNJHQwMTc4MDYxNzk2NAJfMwkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUGYW1vdW50BQ1zdGFrZWRBc3NldElkCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkHAgd1bnN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUMc3Rha2VkQW1vdW50BRF2cEVmZmVjdGl2ZUhlaWdodAUPc3Rha2VkQW1vdW50TkVXBRF2cEVmZmVjdGl2ZUhlaWdodAUDbmlsCQENUmV3YXJkRW50cmllcwMHBQ51c2VyQWRkcmVzc1N0cgUMc3Rha2VkQW1vdW50CQEPTG9ja1BhcmFtc0VudHJ5AwULdXNlckFkZHJlc3MFD3N0YWtlZEFtb3VudE5FVwURdnBFZmZlY3RpdmVIZWlnaHQFDHN0YXRzRW50cmllcwFpAQdkZXBvc2l0AAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECH2V4YWN0IDEgcGF5bWVudCBpcyBhbGxvd2VkIG9ubHkEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQELdmFsdWVPckVsc2UCCAUDcG10B2Fzc2V0SWQFB1dBVkVTSUQEDXBtdEFzc2V0SWRTdHIJANgEAQUKcG10QXNzZXRJZAQIcG10TXVsdFgDCQAAAgUKcG10QXNzZXRJZAUHV0FWRVNJRAUGTVVMVFg4BQZNVUxUWDYEB2Ftb3VudFgJALYCAQUGYW1vdW50BAt0b3RhbFN0YWtlZAkBDGdldEludE9yRWxzZQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAQMdG90YWxTdGFrZWRYCQC2AgEFC3RvdGFsU3Rha2VkAwkAZgIAAAULdG90YWxTdGFrZWQJAAIBAhtUT0RPOiBjYXNlIGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgULdG90YWxTdGFrZWQAAAkBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCBQ1wbXRBc3NldElkU3RyBQZhbW91bnQEEHJld2FyZFBlck5zYnRYMTgJALwCAwUHYW1vdW50WAUHTVVMVFgxOAUMdG90YWxTdGFrZWRYBBFkZXBvc2l0TnVtTGFzdEtFWQkBEWtleURlcG9zaXROdW1MYXN0AAQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCBRFkZXBvc2l0TnVtTGFzdEtFWQD///////////8BBA1kZXBvc2l0TnVtTmV3CQBkAgUOZGVwb3NpdE51bUxhc3QAAQMJAQEhAQkBCGNvbnRhaW5zAgUSc3VwcG9ydGVkQXNzZXRzU3RyBQ1wbXRBc3NldElkU3RyCQACAQkArAICCQCsAgIFEnN1cHBvcnRlZEFzc2V0c1N0cgIRIGRvZXNuJ3QgY29udGFpbiAFDXBtdEFzc2V0SWRTdHIKARdyZWZyZXNoUmV3YXJkUGVyTnNidFNVTQIFYWNjdW0JbmV4dEFzc2V0BBZyZXdhcmRQZXJOc2J0U3VtTmV3S0VZCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUNZGVwb3NpdE51bU5ldwUJbmV4dEFzc2V0BApzdW1MYXN0U3RyCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQluZXh0QXNzZXQCATAJAM0IAgUFYWNjdW0DCQAAAgUJbmV4dEFzc2V0BQ1wbXRBc3NldElkU3RyCQELU3RyaW5nRW50cnkCBRZyZXdhcmRQZXJOc2J0U3VtTmV3S0VZCQCmAwEJALcCAgkApwMBBQpzdW1MYXN0U3RyBRByZXdhcmRQZXJOc2J0WDE4CQELU3RyaW5nRW50cnkCBRZyZXdhcmRQZXJOc2J0U3VtTmV3S0VZBQpzdW1MYXN0U3RyCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAQxJbnRlZ2VyRW50cnkCBRFkZXBvc2l0TnVtTGFzdEtFWQUNZGVwb3NpdE51bU5ldwFpAQxjbGFpbVJld2FyZHMACQELY29tbW9uQ2xhaW0CCAUBaQZjYWxsZXIFAWkBaQEaY2xhaW1SZXdhcmRzQnlPcmlnaW5DYWxsZXIACQELY29tbW9uQ2xhaW0CCAUBaQxvcmlnaW5DYWxsZXIFAWkBaQEYdW5jbGFpbWVkUmV3YXJkc1JFQURPTkxZAQ51c2VyQWRkcmVzc1N0cgoBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBWFjY3VtBWFzc2V0CQCsAgIJAKwCAgUFYWNjdW0JALkJAgkAzAgCBQVhc3NldAkAzAgCAgEwCQDMCAICATAFA25pbAIBOgIBXwQSdW5jbGFpbWVkUmV3YXJkU3RyAwkAAAIFDnVzZXJBZGRyZXNzU3RyAgAKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEWZm9yRWFjaEFzc2V0WmVyb1Jld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnVzZXJBZGRyZXNzU3RyBA0kdDAyMDUzODIwNjQzCQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAAAAQJaXNOZXdVc2VyCAUNJHQwMjA1MzgyMDY0MwJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMjA1MzgyMDY0MwJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMjA1MzgyMDY0MwJfMwQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFDnVzZXJBZGRyZXNzU3RyBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAyMDk4OTIxMTI3CQEKY2FsY1Jld2FyZAUFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDIwOTg5MjExMjcCXzEEBmNhY2hlZAgFDSR0MDIwOTg5MjExMjcCXzIEB2R5bmFtaWMIBQ0kdDAyMDk4OTIxMTI3Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMjA5ODkyMTEyNwJfNAQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEKa2V5Q2xhaW1lZAIFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAAACQCsAgIJAKwCAgUFYWNjdW0JALkJAgkAzAgCBQVhc3NldAkAzAgCCQCkAwEFC3Jld2FyZFRvdGFsCQDMCAIJAKQDAQUHY2xhaW1lZAUDbmlsAgE6AgFfCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJQKAgUDbmlsCQCzAgIFEnVuY2xhaW1lZFJld2FyZFN0cgABAWkBFnN1cmZTdGFraW5nU1lTUkVBRE9OTFkCFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQhzdXJmRGlmZgQJc3VyZlRvdGFsCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAABBJnbnNidEZyb21TdXJmVG90YWwJAQtzdXJmVG9HbnNidAEFCXN1cmZUb3RhbAMJAAACBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkCAAkAlAoCBQNuaWwJAMwIAgAACQDMCAIFCXN1cmZUb3RhbAkAzAgCAAAJAMwIAgUSZ25zYnRGcm9tU3VyZlRvdGFsCQDMCAIAAAkAzAgCBQZoZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwEC3VzZXJBZGRyZXNzCQEPdG9BZGRyZXNzT3JGYWlsAQUVdXNlckFkZHJlc3NTdHJPckVtcHR5BAptZXJnZWREYXRhCQEKbWVyZ2VTdGFrZQIFC3VzZXJBZGRyZXNzBQhzdXJmRGlmZgQJaXNOZXdVc2VyCAUKbWVyZ2VkRGF0YQJfMQQMc3Rha2VkQW1vdW50CAUKbWVyZ2VkRGF0YQJfMgQRdnBFZmZlY3RpdmVIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80BBR2cEVmZmVjdGl2ZUhlaWdodE5FVwgFCm1lcmdlZERhdGECXzUECHN1cmZVc2VyBQxzdGFrZWRBbW91bnQEEWduc2J0RnJvbVN1cmZVc2VyCQELc3VyZlRvR25zYnQBBQhzdXJmVXNlcgkAlAoCBQNuaWwJAMwIAgUIc3VyZlVzZXIJAMwIAgUJc3VyZlRvdGFsCQDMCAIFEWduc2J0RnJvbVN1cmZVc2VyCQDMCAIFEmduc2J0RnJvbVN1cmZUb3RhbAkAzAgCBRF2cEVmZmVjdGl2ZUhlaWdodAkAzAgCBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwUDbmlsAWkBGGduc2J0RnJvbVN1cmZTWVNSRUFET05MWQEHc3VyZkFtdAkAlAoCBQNuaWwJAQtzdXJmVG9HbnNidAEFB3N1cmZBbXQBaQERY29uZmlnU1lTUkVBRE9OTFkABAptaW5Mb2NrQW10CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEQa2V5TWluTG9ja0Ftb3VudAAEIHN1cmZWb3RpbmdQb3dlclJlc3RyaWN0aXZlUGVyaW9kCQBoAgCgCwAOBBticlRvU3RhcnRTdXJmVHJhbnNmb3JtYXRpb24AsJhGCQCUCgIFA25pbAkAzAgCBQptaW5Mb2NrQW10CQDMCAIJAGgCBRJnbnNidEZyb21TdXJmQ29lZmYFBU1VTFQ2CQDMCAIFIHN1cmZWb3RpbmdQb3dlclJlc3RyaWN0aXZlUGVyaW9kCQDMCAIFG2JyVG9TdGFydFN1cmZUcmFuc2Zvcm1hdGlvbgUDbmlsAMyJJa0=", "chainId": 87, "height": 3242746, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2yZVVqyvpU9eAVijdxmzTnhiR2ygZ5WMFcSHxH6pue5V Next: 9PAfryBuDnVdE792YhSxTUKPZcX1n4S69ZQvwrpYxGK6 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "cbd0bdc8bbba91db64066b16a84913a4c965e23e"
4+let a = "467d69db0b60c6aac0508e687248cd588338fb34"
55
66 let b = "__"
77
164164 }
165165
166166
167-func az (aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aA), toString(aB), toString(aC), toString(aD)], b)
168-
169-
170-func aE (aF,aG) = makeString(["%s%d%d%s", aF, toString(lastBlock.height), toString(lastBlock.timestamp), aG], b)
171-
172-
173-func aH (U,Q,V,aA,aB,aC,aD) = StringEntry(T(U, Q, V), az(aA, aB, aC, aD))
174-
175-
176-func aI (Q,V,aG) = StringEntry(T("claim", Q, V), aE(toString(Q), aG))
177-
178-
179-func aJ (aK,aL,aM) = {
180- let aN = am(X())
181- let aO = am(Y())
182- let aP = am(W())
183- let aQ = (aP + aK)
184- $Tuple3([IntegerEntry(X(), (aN + aL)), IntegerEntry(Y(), (aO + aM)), IntegerEntry(W(), aQ)], aP, aQ)
167+func az (aA) = {
168+ let ax = aA
169+ if ($isInstanceOf(ax, "(Int, Int, Int, Int, Int)"))
170+ then {
171+ let aB = ax
172+ aB
173+ }
174+ else throw("fail to cast into Int")
185175 }
186176
187177
188-func aR (Q,aS,aT) = [IntegerEntry(P(Q), aS), IntegerEntry(R(Q), aT)]
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)
189179
190180
191-func aU () = $Tuple2(fromBase58String(v(this, O())), ap(N()))
181+func aH (aI,aJ) = makeString(["%s%d%d%s", aI, toString(lastBlock.height), toString(lastBlock.timestamp), aJ], b)
192182
193183
194-func aV (Q) = (an(P(Q), 0) > 0)
184+func aK (U,Q,V,aD,aE,aF,aG) = StringEntry(T(U, Q, V), aC(aD, aE, aF, aG))
195185
196186
197-func aW (Q) = if (aV(Q))
187+func aL (Q,V,aJ) = StringEntry(T("claim", Q, V), aH(toString(Q), aJ))
188+
189+
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)
196+ }
197+
198+
199+func aU (Q,aV,aW) = [IntegerEntry(P(Q), aV), IntegerEntry(R(Q), aW)]
200+
201+
202+func aX () = $Tuple2(fromBase58String(v(this, O())), ap(N()))
203+
204+
205+func aY (Q) = (an(P(Q), 0) > 0)
206+
207+
208+func aZ (Q) = if (aY(Q))
198209 then $Tuple3(false, ap(P(Q)), ap(R(Q)))
199210 else unit
200211
201212
202-func aX (Q) = valueOrErrorMessage(aW(Q), (("User " + toString(Q)) + " is not defined"))
213+func ba (Q) = valueOrErrorMessage(aZ(Q), (("User " + toString(Q)) + " is not defined"))
203214
204215
205-let aY = aq(aa(), "")
216+let bb = aq(aa(), "")
206217
207-let aZ = split(aY, "_")
218+let bc = split(bb, "_")
208219
209-func ba (Q,bb,bc,bd,be) = {
210- let bf = ad(be, bb)
211- let bg = parseBigIntValue(aq(ad(be, bb), "0"))
212- let bh = parseBigIntValue(aq(ad(bd, bb), "0"))
213- let bi = toInt(fraction((bg - bh), bc, h))
214- let bj = ag(Q, bb)
215- let bk = an(bj, 0)
216- $Tuple4((bk + bi), bk, bi, bj)
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)
217228 }
218229
219230
220-func bl (bm,Q,bn) = {
221- let bc = toBigInt(bn)
222- let bo = ac(Q)
223- let bd = an(bo, -1)
224- let be = an(ab(), -1)
225- func bp (bq,br) = {
226- let bs = ba(Q, br, bc, bd, be)
227- let bt = bs._1
228- let bu = bs._2
229- let bv = bs._3
230- let bj = bs._4
231- (bq :+ IntegerEntry(bj, bt))
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))
232243 }
233244
234- if (if ((be == -1))
235- then (bd == -1)
245+ if (if ((bh == -1))
246+ then (bg == -1)
236247 else false)
237248 then nil
238- else if (if ((be == -1))
239- then (bd > -1)
249+ else if (if ((bh == -1))
250+ then (bg > -1)
240251 else false)
241252 then throw("invalid depositNumLast and depositNumUser state")
242- else if (if ((be > -1))
243- then (bd >= -1)
253+ else if (if ((bh > -1))
254+ then (bg >= -1)
244255 else false)
245- then if (bm)
246- then [IntegerEntry(bo, be)]
256+ then if (bp)
257+ then [IntegerEntry(br, bh)]
247258 else ({
248- let bw = aZ
249- let bx = size(bw)
250- let by = nil
251- func bz (bA,bB) = if ((bB >= bx))
252- then bA
253- else bp(bA, bw[bB])
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])
254265
255- func bC (bA,bB) = if ((bB >= bx))
256- then bA
266+ func bF (bD,bE) = if ((bE >= bA))
267+ then bD
257268 else throw("List size exceeds 10")
258269
259- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
260- } :+ IntegerEntry(bo, be))
261- else throw(((("uncovered condition: depositNumLast=" + toString(be)) + " depositNumUser=") + toString(bd)))
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)))
262273 }
263274
264275
265-func bD (af,bE) = {
266- let bF = ai(af)
267- let bG = an(bF, 0)
268-[IntegerEntry(bF, (bG + bE))]
276+func bG (af,bH) = {
277+ let bI = ai(af)
278+ let bJ = an(bI, 0)
279+[IntegerEntry(bI, (bJ + bH))]
269280 }
270281
271282
272-func bH (bI) = (bI / K)
283+func bK (bL) = (bL / K)
273284
274285
275-func bJ (bK,bL,bM,bN) = {
276- let bO = (bL - height)
277- if ((0 >= bO))
278- then (height + bK)
286+func bM (bN,bO,bP,bQ) = {
287+ let bR = (bO - height)
288+ if ((0 >= bR))
289+ then (height + bN)
279290 else {
280- let bP = (bK - bO)
281- let bQ = if ((bN != 0))
282- then fraction(bM, e, bN)
283- else bL
284- ((bK + height) - fraction(bP, bQ, e))
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))
285296 }
286297 }
287298
288299
289-func bR (Q,bS) = {
290- let bT = valueOrElse(aW(Q), $Tuple3(true, 0, 0))
291- let bm = bT._1
292- let bn = bT._2
293- let bL = bT._3
294- let bU = if (bm)
295- then bS
296- else (bS + bn)
297- let bK = (1440 * 14)
298- let bV = if (bm)
299- then (bK + height)
300- else bJ(bK, bL, bn, bU)
301- $Tuple5(bm, bn, bL, bU, bV)
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)
302313 }
303314
304315
305-func bW (Q,bX) = {
306- let bY = aU()
307- let bZ = bY._1
308- let ca = bY._2
309- if ((size(bX.payments) != 1))
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))
310321 then throw("Invalid payments size")
311322 else {
312- let cb = bX.payments[0]
313- let aS = cb.amount
314- let cc = (("Invalid asset. " + toBase58String(bZ)) + " is expected")
315- let bb = valueOrErrorMessage(cb.assetId, cc)
316- if ((bb != bZ))
317- then throw(cc)
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)
318329 else {
319- let cd = toString(Q)
320- let ce = bR(Q, aS)
321- let bm = ce._1
322- let bn = ce._2
323- let bL = ce._3
324- let bU = ce._4
325- let bV = ce._5
326- if ((ca > bU))
327- then throw(("Min lock amount is " + toString(ca)))
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)))
328339 else {
329- let cf = aJ(aS, 1, if (bm)
340+ let ci = aM(aV, 1, if (bp)
330341 then 1
331342 else 0)
332- let cg = cf._1
333- let ch = cf._2
334- let ci = cf._3
335- ((([aH("stake", Q, bX.transactionId, bn, bL, bU, bV)] ++ bl(bm, cd, bn)) ++ aR(Q, bU, bV)) ++ cg)
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)
336347 }
337348 }
338349 }
339350 }
340351
341352
342-func cj (Q,bX) = {
343- let cd = toString(Q)
344- if ((size(bX.payments) > 0))
353+func cm (Q,ca) = {
354+ let cg = toString(Q)
355+ if ((size(ca.payments) > 0))
345356 then throw("payments are not accepted")
346357 else {
347- let ck = valueOrElse(aW(Q), $Tuple3(true, 0, 0))
348- let bm = ck._1
349- let bn = ck._2
350- let cl = ck._3
351- let bc = toBigInt(bn)
352- let bo = ac(cd)
353- let bd = an(bo, -1)
354- let be = an(ab(), -1)
355- func cm (bq,br) = {
356- let cn = ba(cd, br, bc, bd, be)
357- let bt = cn._1
358- let bu = cn._2
359- let bv = cn._3
360- let bj = cn._4
361- let co = ah(cd, br)
362- let cp = bq
363- let cq = cp._1
364- let cr = cp._2
365- let cs = makeString([br, toString(bt)], ":")
366- let ct = makeString([cr, cs], "_")
367- if ((0 >= bt))
368- then $Tuple2(cq, ct)
369- else $Tuple2((((cq :+ ScriptTransfer(Q, bt, at(br))) :+ IntegerEntry(co, (valueOrElse(getInteger(co), 0) + bt))) :+ IntegerEntry(bj, 0)), ct)
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)
370381 }
371382
372- let cu = {
373- let bw = aZ
374- let bx = size(bw)
375- let by = $Tuple2(nil, "")
376- func bz (bA,bB) = if ((bB >= bx))
377- then bA
378- else cm(bA, bw[bB])
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])
379390
380- func bC (bA,bB) = if ((bB >= bx))
381- then bA
391+ func bF (bD,bE) = if ((bE >= bA))
392+ then bD
382393 else throw("List size exceeds 10")
383394
384- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
395+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
385396 }
386- let cv = cu._1
387- let cw = cu._2
388- if ((0 >= size(cv)))
397+ let cy = cx._1
398+ let cz = cx._2
399+ if ((0 >= size(cy)))
389400 then nil
390- else ((cv :+ IntegerEntry(bo, be)) :+ aI(Q, bX.transactionId, drop(cw, 1)))
401+ else ((cy :+ IntegerEntry(br, bh)) :+ aL(Q, ca.transactionId, drop(cz, 1)))
391402 }
392403 }
393404
394405
395-@Callable(bX)
396-func constructor (ca,cx,bZ) = if ((bX.caller != this))
406+@Callable(ca)
407+func constructor (cd,cA,cc) = if ((ca.caller != this))
397408 then throw("Permission denied")
398- else [IntegerEntry(N(), ca), StringEntry(aa(), cx), StringEntry(O(), bZ)]
409+ else [IntegerEntry(N(), cd), StringEntry(aa(), cA), StringEntry(O(), cc)]
399410
400411
401412
402-@Callable(bX)
403-func stake () = bW(bX.caller, bX)
413+@Callable(ca)
414+func stake () = bZ(ca.caller, ca)
404415
405416
406417
407-@Callable(bX)
408-func stakeByOriginCaller () = bW(bX.originCaller, bX)
418+@Callable(ca)
419+func stakeByOriginCaller () = bZ(ca.originCaller, ca)
409420
410421
411422
412-@Callable(bX)
413-func unstake (aS) = if ((size(bX.payments) != 0))
423+@Callable(ca)
424+func unstake (aV) = if ((size(ca.payments) != 0))
414425 then throw("unstake doesn't require any payment")
415426 else {
416- let Q = bX.caller
417- let cd = toString(Q)
418- let cy = aU()
419- let bZ = cy._1
420- let ca = cy._2
421- let cz = aX(Q)
422- let bm = cz._1
423- let bn = cz._2
424- let bL = cz._3
425- if ((0 >= bn))
426- then throw("Nothing to unstake")
427- else if ((aS > bn))
428- then throw(((("Requested " + toString(aS)) + ", but staked only ") + toString(bn)))
429- else {
430- let bU = (bn - aS)
431- let cA = aJ(-(aS), if ((aS == bn))
432- then -1
433- else 0, if ((aS == bn))
434- then -1
435- else 0)
436- let cg = cA._1
437- let ch = cA._2
438- let ci = cA._3
439- ((([ScriptTransfer(Q, aS, bZ), aH("unstake", Q, bX.transactionId, bn, bL, bU, bL)] ++ bl(false, cd, bn)) ++ aR(Q, bU, bL)) ++ cg)
440- }
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._1
438+ let cF = cD._2
439+ let cG = cD._3
440+ if ((cF > 0))
441+ then throw((("You have already made a swap operation. Wait " + toString((height + cG))) + " height to unstake"))
442+ else if ((0 >= bq))
443+ then throw("Nothing to unstake")
444+ else if ((aV > bq))
445+ then throw(((("Requested " + toString(aV)) + ", but staked only ") + toString(bq)))
446+ else {
447+ let bX = (bq - aV)
448+ let cH = aM(-(aV), if ((aV == bq))
449+ then -1
450+ else 0, if ((aV == bq))
451+ then -1
452+ else 0)
453+ let cj = cH._1
454+ let ck = cH._2
455+ let cl = cH._3
456+ ((([ScriptTransfer(Q, aV, cc), aK("unstake", Q, ca.transactionId, bq, bO, bX, bO)] ++ bo(false, cg, bq)) ++ aU(Q, bX, bO)) ++ cj)
457+ }
441458 }
442459
443460
444461
445-@Callable(bX)
446-func deposit () = if ((size(bX.payments) != 1))
462+@Callable(ca)
463+func deposit () = if ((size(ca.payments) != 1))
447464 then throw("exact 1 payment is allowed only")
448465 else {
449- let cB = bX.payments[0]
450- let aS = cB.amount
451- let cC = valueOrElse(cB.assetId, j)
452- let cD = toBase58String(cC)
453- let cE = if ((cC == j))
466+ let cI = ca.payments[0]
467+ let aV = cI.amount
468+ let cJ = valueOrElse(cI.assetId, j)
469+ let cK = toBase58String(cJ)
470+ let cL = if ((cJ == j))
454471 then g
455472 else f
456- let cF = toBigInt(aS)
457- let ch = an(W(), 0)
458- let cG = toBigInt(ch)
459- if ((0 > ch))
473+ let cM = toBigInt(aV)
474+ let ck = an(W(), 0)
475+ let cN = toBigInt(ck)
476+ if ((0 > ck))
460477 then throw("TODO: case is not supported")
461- else if ((ch == 0))
462- then bD(cD, aS)
478+ else if ((ck == 0))
479+ then bG(cK, aV)
463480 else {
464- let cH = fraction(cF, h, cG)
465- let cI = ab()
466- let be = an(cI, -1)
467- let cJ = (be + 1)
468- if (!(contains(aY, cD)))
469- then throw(((aY + " doesn't contain ") + cD))
481+ let cO = fraction(cM, h, cN)
482+ let cP = ab()
483+ let bh = an(cP, -1)
484+ let cQ = (bh + 1)
485+ if (!(contains(bb, cK)))
486+ then throw(((bb + " doesn't contain ") + cK))
470487 else {
471- func cK (bq,cL) = {
472- let cM = ad(cJ, cL)
473- let cN = aq(ad(be, cL), "0")
474- (bq :+ (if ((cL == cD))
475- then StringEntry(cM, toString((parseBigIntValue(cN) + cH)))
476- else StringEntry(cM, cN)))
488+ func cR (bt,cS) = {
489+ let cT = ad(cQ, cS)
490+ let cU = aq(ad(bh, cS), "0")
491+ (bt :+ (if ((cS == cK))
492+ then StringEntry(cT, toString((parseBigIntValue(cU) + cO)))
493+ else StringEntry(cT, cU)))
477494 }
478495
479496 ({
480- let bw = aZ
481- let bx = size(bw)
482- let by = nil
483- func bz (bA,bB) = if ((bB >= bx))
484- then bA
485- else cK(bA, bw[bB])
497+ let bz = bc
498+ let bA = size(bz)
499+ let bB = nil
500+ func bC (bD,bE) = if ((bE >= bA))
501+ then bD
502+ else cR(bD, bz[bE])
486503
487- func bC (bA,bB) = if ((bB >= bx))
488- then bA
504+ func bF (bD,bE) = if ((bE >= bA))
505+ then bD
489506 else throw("List size exceeds 10")
490507
491- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
492- } :+ IntegerEntry(cI, cJ))
508+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
509+ } :+ IntegerEntry(cP, cQ))
493510 }
494511 }
495512 }
496513
497514
498515
499-@Callable(bX)
500-func claimRewards () = cj(bX.caller, bX)
516+@Callable(ca)
517+func claimRewards () = cm(ca.caller, ca)
501518
502519
503520
504-@Callable(bX)
505-func claimRewardsByOriginCaller () = cj(bX.originCaller, bX)
521+@Callable(ca)
522+func claimRewardsByOriginCaller () = cm(ca.originCaller, ca)
506523
507524
508525
509-@Callable(bX)
510-func unclaimedRewardsREADONLY (cd) = {
511- func cO (bq,br) = ((bq + makeString([br, "0", "0"], ":")) + "_")
526+@Callable(ca)
527+func unclaimedRewardsREADONLY (cg) = {
528+ func cV (bt,bu) = ((bt + makeString([bu, "0", "0"], ":")) + "_")
512529
513- let cP = if ((cd == ""))
530+ let cW = if ((cg == ""))
514531 then {
515- let bw = aZ
516- let bx = size(bw)
517- let by = ""
518- func bz (bA,bB) = if ((bB >= bx))
519- then bA
520- else cO(bA, bw[bB])
532+ let bz = bc
533+ let bA = size(bz)
534+ let bB = ""
535+ func bC (bD,bE) = if ((bE >= bA))
536+ then bD
537+ else cV(bD, bz[bE])
521538
522- func bC (bA,bB) = if ((bB >= bx))
523- then bA
539+ func bF (bD,bE) = if ((bE >= bA))
540+ then bD
524541 else throw("List size exceeds 10")
525542
526- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
543+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
527544 }
528545 else {
529- let Q = addressFromStringValue(cd)
530- let cQ = valueOrElse(aW(Q), $Tuple3(true, 0, 0))
531- let bm = cQ._1
532- let bn = cQ._2
533- let cl = cQ._3
534- let bc = toBigInt(bn)
535- let bo = ac(cd)
536- let bd = an(bo, -1)
537- let be = an(ab(), -1)
538- func cm (bq,br) = {
539- let cR = ba(cd, br, bc, bd, be)
540- let bt = cR._1
541- let bu = cR._2
542- let bv = cR._3
543- let bj = cR._4
544- let cS = valueOrElse(getInteger(ah(cd, br)), 0)
545- ((bq + makeString([br, toString(bt), toString(cS)], ":")) + "_")
546+ let Q = addressFromStringValue(cg)
547+ let cX = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
548+ let bp = cX._1
549+ let bq = cX._2
550+ let co = cX._3
551+ let bf = toBigInt(bq)
552+ let br = ac(cg)
553+ let bg = an(br, -1)
554+ let bh = an(ab(), -1)
555+ func cp (bt,bu) = {
556+ let cY = bd(cg, bu, bf, bg, bh)
557+ let bw = cY._1
558+ let bx = cY._2
559+ let by = cY._3
560+ let bm = cY._4
561+ let cZ = valueOrElse(getInteger(ah(cg, bu)), 0)
562+ ((bt + makeString([bu, toString(bw), toString(cZ)], ":")) + "_")
546563 }
547564
548- let bw = aZ
549- let bx = size(bw)
550- let by = ""
551- func bz (bA,bB) = if ((bB >= bx))
552- then bA
553- else cm(bA, bw[bB])
565+ let bz = bc
566+ let bA = size(bz)
567+ let bB = ""
568+ func bC (bD,bE) = if ((bE >= bA))
569+ then bD
570+ else cp(bD, bz[bE])
554571
555- func bC (bA,bB) = if ((bB >= bx))
556- then bA
572+ func bF (bD,bE) = if ((bE >= bA))
573+ then bD
557574 else throw("List size exceeds 10")
558575
559- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
576+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
560577 }
561- $Tuple2(nil, dropRight(cP, 1))
578+ $Tuple2(nil, dropRight(cW, 1))
562579 }
563580
564581
565582
566-@Callable(bX)
567-func surfStakingSYSREADONLY (cT,cU) = {
568- let cV = an(W(), 0)
569- let cW = bH(cV)
570- if ((cT == ""))
571- then $Tuple2(nil, [0, cV, 0, cW, 0, height, height])
583+@Callable(ca)
584+func surfStakingSYSREADONLY (da,db) = {
585+ let dc = an(W(), 0)
586+ let dd = bK(dc)
587+ if ((da == ""))
588+ then $Tuple2(nil, [0, dc, 0, dd, 0, height, height])
572589 else {
573- let Q = ar(cT)
574- let ce = bR(Q, cU)
575- let bm = ce._1
576- let bn = ce._2
577- let bL = ce._3
578- let bU = ce._4
579- let bV = ce._5
580- let cX = bn
581- let cY = bH(cX)
582- $Tuple2(nil, [cX, cV, cY, cW, bL, bV])
590+ let Q = ar(da)
591+ let ch = bU(Q, db)
592+ let bp = ch._1
593+ let bq = ch._2
594+ let bO = ch._3
595+ let bX = ch._4
596+ let bY = ch._5
597+ let de = bq
598+ let df = bK(de)
599+ $Tuple2(nil, [de, dc, df, dd, bO, bY])
583600 }
584601 }
585602
586603
587604
588-@Callable(bX)
589-func gnsbtFromSurfSYSREADONLY (bI) = $Tuple2(nil, bH(bI))
605+@Callable(ca)
606+func gnsbtFromSurfSYSREADONLY (bL) = $Tuple2(nil, bK(bL))
590607
591608
592609
593-@Callable(bX)
610+@Callable(ca)
594611 func configSYSREADONLY () = {
595- let cZ = getIntegerValue(N())
596- let da = (1440 * 14)
597- let db = 1150000
598- $Tuple2(nil, [cZ, (K * d), da, db])
612+ let dg = getIntegerValue(N())
613+ let dh = (1440 * 14)
614+ let di = 1150000
615+ $Tuple2(nil, [dg, (K * d), dh, di])
599616 }
600617
601618
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "cbd0bdc8bbba91db64066b16a84913a4c965e23e"
4+let a = "467d69db0b60c6aac0508e687248cd588338fb34"
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
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 5
3333
3434 let p = 6
3535
3636 let q = 7
3737
3838 let r = 8
3939
4040 let s = 9
4141
4242 let t = 10
4343
4444 let u = 11
4545
4646 func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
4747
4848
4949 func y () = "%s%s__config__controlAddress"
5050
5151
5252 func z () = "%s__controlConfig"
5353
5454
5555 func A () = "%s%s__cfg__gnsbtFromSurfCoeff"
5656
5757
5858 func B (C) = split(v(C, z()), c)
5959
6060
6161 func D (E,F) = valueOrErrorMessage(addressFromString(E[F]), ("Control cfg doesn't contain address at index " + toString(F)))
6262
6363
6464 let G = addressFromStringValue(valueOrElse(getString(this, y()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
6565
6666 let E = B(G)
6767
6868 let H = D(E, n)
6969
7070 let I = D(E, k)
7171
7272 let J = D(E, l)
7373
7474 let K = valueOrElse(getInteger(this, A()), 300)
7575
7676 func L () = "bond_asset_id"
7777
7878
7979 func M () = "auction_contract"
8080
8181
8282 func N () = "%s__minLockAmount"
8383
8484
8585 func O () = "%s__stakedAssetId"
8686
8787
8888 func P (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "amount"], b)
8989
9090
9191 func R (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "start"], b)
9292
9393
9494 func S (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "vpEffectiveHeight"], b)
9595
9696
9797 func T (U,Q,V) = makeString(["%s%s%s%s", "history", U, toString(Q), toBase58String(V)], b)
9898
9999
100100 func W () = makeString(["%s%s", "stats", "activeTotalLocked"], b)
101101
102102
103103 func X () = makeString(["%s%s", "stats", "locksCount"], b)
104104
105105
106106 func Y () = makeString(["%s%s", "stats", "activeUsersCount"], b)
107107
108108
109109 func Z () = "%s__nextPeriod"
110110
111111
112112 func aa () = "supportedRewardAssets"
113113
114114
115115 func ab () = makeString(["%s%s%s", "dep", "lastNum"], b)
116116
117117
118118 func ac (Q) = makeString(["%s%s%s", "userRwdFromDepNum", Q], b)
119119
120120
121121 func ad (ae,af) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ae), af], b)
122122
123123
124124 func ag (Q,af) = makeString(["%s%s%s", "rwd", Q, af], b)
125125
126126
127127 func ah (Q,af) = makeString(["%s%s%s", "clm", Q, af], b)
128128
129129
130130 func ai (af) = makeString(["%s%s", "notDistributed", af], b)
131131
132132
133133 func aj (ak,al) = fraction(toBigInt(ak), h, al)
134134
135135
136136 func am (x) = valueOrElse(getInteger(this, x), 0)
137137
138138
139139 func an (x,ao) = valueOrElse(getInteger(this, x), ao)
140140
141141
142142 func ap (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
143143
144144
145145 func aq (x,ao) = valueOrElse(getString(this, x), ao)
146146
147147
148148 func ar (as) = valueOrErrorMessage(addressFromString(as), ("couldn't parse passed addressStr=" + as))
149149
150150
151151 func at (au) = if ((au == i))
152152 then unit
153153 else fromBase58String(au)
154154
155155
156156 func av (aw) = {
157157 let ax = aw
158158 if ($isInstanceOf(ax, "Int"))
159159 then {
160160 let ay = ax
161161 ay
162162 }
163163 else throw("fail to cast into Int")
164164 }
165165
166166
167-func az (aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aA), toString(aB), toString(aC), toString(aD)], b)
168-
169-
170-func aE (aF,aG) = makeString(["%s%d%d%s", aF, toString(lastBlock.height), toString(lastBlock.timestamp), aG], b)
171-
172-
173-func aH (U,Q,V,aA,aB,aC,aD) = StringEntry(T(U, Q, V), az(aA, aB, aC, aD))
174-
175-
176-func aI (Q,V,aG) = StringEntry(T("claim", Q, V), aE(toString(Q), aG))
177-
178-
179-func aJ (aK,aL,aM) = {
180- let aN = am(X())
181- let aO = am(Y())
182- let aP = am(W())
183- let aQ = (aP + aK)
184- $Tuple3([IntegerEntry(X(), (aN + aL)), IntegerEntry(Y(), (aO + aM)), IntegerEntry(W(), aQ)], aP, aQ)
167+func az (aA) = {
168+ let ax = aA
169+ if ($isInstanceOf(ax, "(Int, Int, Int, Int, Int)"))
170+ then {
171+ let aB = ax
172+ aB
173+ }
174+ else throw("fail to cast into Int")
185175 }
186176
187177
188-func aR (Q,aS,aT) = [IntegerEntry(P(Q), aS), IntegerEntry(R(Q), aT)]
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)
189179
190180
191-func aU () = $Tuple2(fromBase58String(v(this, O())), ap(N()))
181+func aH (aI,aJ) = makeString(["%s%d%d%s", aI, toString(lastBlock.height), toString(lastBlock.timestamp), aJ], b)
192182
193183
194-func aV (Q) = (an(P(Q), 0) > 0)
184+func aK (U,Q,V,aD,aE,aF,aG) = StringEntry(T(U, Q, V), aC(aD, aE, aF, aG))
195185
196186
197-func aW (Q) = if (aV(Q))
187+func aL (Q,V,aJ) = StringEntry(T("claim", Q, V), aH(toString(Q), aJ))
188+
189+
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)
196+ }
197+
198+
199+func aU (Q,aV,aW) = [IntegerEntry(P(Q), aV), IntegerEntry(R(Q), aW)]
200+
201+
202+func aX () = $Tuple2(fromBase58String(v(this, O())), ap(N()))
203+
204+
205+func aY (Q) = (an(P(Q), 0) > 0)
206+
207+
208+func aZ (Q) = if (aY(Q))
198209 then $Tuple3(false, ap(P(Q)), ap(R(Q)))
199210 else unit
200211
201212
202-func aX (Q) = valueOrErrorMessage(aW(Q), (("User " + toString(Q)) + " is not defined"))
213+func ba (Q) = valueOrErrorMessage(aZ(Q), (("User " + toString(Q)) + " is not defined"))
203214
204215
205-let aY = aq(aa(), "")
216+let bb = aq(aa(), "")
206217
207-let aZ = split(aY, "_")
218+let bc = split(bb, "_")
208219
209-func ba (Q,bb,bc,bd,be) = {
210- let bf = ad(be, bb)
211- let bg = parseBigIntValue(aq(ad(be, bb), "0"))
212- let bh = parseBigIntValue(aq(ad(bd, bb), "0"))
213- let bi = toInt(fraction((bg - bh), bc, h))
214- let bj = ag(Q, bb)
215- let bk = an(bj, 0)
216- $Tuple4((bk + bi), bk, bi, bj)
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)
217228 }
218229
219230
220-func bl (bm,Q,bn) = {
221- let bc = toBigInt(bn)
222- let bo = ac(Q)
223- let bd = an(bo, -1)
224- let be = an(ab(), -1)
225- func bp (bq,br) = {
226- let bs = ba(Q, br, bc, bd, be)
227- let bt = bs._1
228- let bu = bs._2
229- let bv = bs._3
230- let bj = bs._4
231- (bq :+ IntegerEntry(bj, bt))
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))
232243 }
233244
234- if (if ((be == -1))
235- then (bd == -1)
245+ if (if ((bh == -1))
246+ then (bg == -1)
236247 else false)
237248 then nil
238- else if (if ((be == -1))
239- then (bd > -1)
249+ else if (if ((bh == -1))
250+ then (bg > -1)
240251 else false)
241252 then throw("invalid depositNumLast and depositNumUser state")
242- else if (if ((be > -1))
243- then (bd >= -1)
253+ else if (if ((bh > -1))
254+ then (bg >= -1)
244255 else false)
245- then if (bm)
246- then [IntegerEntry(bo, be)]
256+ then if (bp)
257+ then [IntegerEntry(br, bh)]
247258 else ({
248- let bw = aZ
249- let bx = size(bw)
250- let by = nil
251- func bz (bA,bB) = if ((bB >= bx))
252- then bA
253- else bp(bA, bw[bB])
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])
254265
255- func bC (bA,bB) = if ((bB >= bx))
256- then bA
266+ func bF (bD,bE) = if ((bE >= bA))
267+ then bD
257268 else throw("List size exceeds 10")
258269
259- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
260- } :+ IntegerEntry(bo, be))
261- else throw(((("uncovered condition: depositNumLast=" + toString(be)) + " depositNumUser=") + toString(bd)))
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)))
262273 }
263274
264275
265-func bD (af,bE) = {
266- let bF = ai(af)
267- let bG = an(bF, 0)
268-[IntegerEntry(bF, (bG + bE))]
276+func bG (af,bH) = {
277+ let bI = ai(af)
278+ let bJ = an(bI, 0)
279+[IntegerEntry(bI, (bJ + bH))]
269280 }
270281
271282
272-func bH (bI) = (bI / K)
283+func bK (bL) = (bL / K)
273284
274285
275-func bJ (bK,bL,bM,bN) = {
276- let bO = (bL - height)
277- if ((0 >= bO))
278- then (height + bK)
286+func bM (bN,bO,bP,bQ) = {
287+ let bR = (bO - height)
288+ if ((0 >= bR))
289+ then (height + bN)
279290 else {
280- let bP = (bK - bO)
281- let bQ = if ((bN != 0))
282- then fraction(bM, e, bN)
283- else bL
284- ((bK + height) - fraction(bP, bQ, e))
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))
285296 }
286297 }
287298
288299
289-func bR (Q,bS) = {
290- let bT = valueOrElse(aW(Q), $Tuple3(true, 0, 0))
291- let bm = bT._1
292- let bn = bT._2
293- let bL = bT._3
294- let bU = if (bm)
295- then bS
296- else (bS + bn)
297- let bK = (1440 * 14)
298- let bV = if (bm)
299- then (bK + height)
300- else bJ(bK, bL, bn, bU)
301- $Tuple5(bm, bn, bL, bU, bV)
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)
302313 }
303314
304315
305-func bW (Q,bX) = {
306- let bY = aU()
307- let bZ = bY._1
308- let ca = bY._2
309- if ((size(bX.payments) != 1))
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))
310321 then throw("Invalid payments size")
311322 else {
312- let cb = bX.payments[0]
313- let aS = cb.amount
314- let cc = (("Invalid asset. " + toBase58String(bZ)) + " is expected")
315- let bb = valueOrErrorMessage(cb.assetId, cc)
316- if ((bb != bZ))
317- then throw(cc)
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)
318329 else {
319- let cd = toString(Q)
320- let ce = bR(Q, aS)
321- let bm = ce._1
322- let bn = ce._2
323- let bL = ce._3
324- let bU = ce._4
325- let bV = ce._5
326- if ((ca > bU))
327- then throw(("Min lock amount is " + toString(ca)))
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)))
328339 else {
329- let cf = aJ(aS, 1, if (bm)
340+ let ci = aM(aV, 1, if (bp)
330341 then 1
331342 else 0)
332- let cg = cf._1
333- let ch = cf._2
334- let ci = cf._3
335- ((([aH("stake", Q, bX.transactionId, bn, bL, bU, bV)] ++ bl(bm, cd, bn)) ++ aR(Q, bU, bV)) ++ cg)
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)
336347 }
337348 }
338349 }
339350 }
340351
341352
342-func cj (Q,bX) = {
343- let cd = toString(Q)
344- if ((size(bX.payments) > 0))
353+func cm (Q,ca) = {
354+ let cg = toString(Q)
355+ if ((size(ca.payments) > 0))
345356 then throw("payments are not accepted")
346357 else {
347- let ck = valueOrElse(aW(Q), $Tuple3(true, 0, 0))
348- let bm = ck._1
349- let bn = ck._2
350- let cl = ck._3
351- let bc = toBigInt(bn)
352- let bo = ac(cd)
353- let bd = an(bo, -1)
354- let be = an(ab(), -1)
355- func cm (bq,br) = {
356- let cn = ba(cd, br, bc, bd, be)
357- let bt = cn._1
358- let bu = cn._2
359- let bv = cn._3
360- let bj = cn._4
361- let co = ah(cd, br)
362- let cp = bq
363- let cq = cp._1
364- let cr = cp._2
365- let cs = makeString([br, toString(bt)], ":")
366- let ct = makeString([cr, cs], "_")
367- if ((0 >= bt))
368- then $Tuple2(cq, ct)
369- else $Tuple2((((cq :+ ScriptTransfer(Q, bt, at(br))) :+ IntegerEntry(co, (valueOrElse(getInteger(co), 0) + bt))) :+ IntegerEntry(bj, 0)), ct)
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)
370381 }
371382
372- let cu = {
373- let bw = aZ
374- let bx = size(bw)
375- let by = $Tuple2(nil, "")
376- func bz (bA,bB) = if ((bB >= bx))
377- then bA
378- else cm(bA, bw[bB])
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])
379390
380- func bC (bA,bB) = if ((bB >= bx))
381- then bA
391+ func bF (bD,bE) = if ((bE >= bA))
392+ then bD
382393 else throw("List size exceeds 10")
383394
384- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
395+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
385396 }
386- let cv = cu._1
387- let cw = cu._2
388- if ((0 >= size(cv)))
397+ let cy = cx._1
398+ let cz = cx._2
399+ if ((0 >= size(cy)))
389400 then nil
390- else ((cv :+ IntegerEntry(bo, be)) :+ aI(Q, bX.transactionId, drop(cw, 1)))
401+ else ((cy :+ IntegerEntry(br, bh)) :+ aL(Q, ca.transactionId, drop(cz, 1)))
391402 }
392403 }
393404
394405
395-@Callable(bX)
396-func constructor (ca,cx,bZ) = if ((bX.caller != this))
406+@Callable(ca)
407+func constructor (cd,cA,cc) = if ((ca.caller != this))
397408 then throw("Permission denied")
398- else [IntegerEntry(N(), ca), StringEntry(aa(), cx), StringEntry(O(), bZ)]
409+ else [IntegerEntry(N(), cd), StringEntry(aa(), cA), StringEntry(O(), cc)]
399410
400411
401412
402-@Callable(bX)
403-func stake () = bW(bX.caller, bX)
413+@Callable(ca)
414+func stake () = bZ(ca.caller, ca)
404415
405416
406417
407-@Callable(bX)
408-func stakeByOriginCaller () = bW(bX.originCaller, bX)
418+@Callable(ca)
419+func stakeByOriginCaller () = bZ(ca.originCaller, ca)
409420
410421
411422
412-@Callable(bX)
413-func unstake (aS) = if ((size(bX.payments) != 0))
423+@Callable(ca)
424+func unstake (aV) = if ((size(ca.payments) != 0))
414425 then throw("unstake doesn't require any payment")
415426 else {
416- let Q = bX.caller
417- let cd = toString(Q)
418- let cy = aU()
419- let bZ = cy._1
420- let ca = cy._2
421- let cz = aX(Q)
422- let bm = cz._1
423- let bn = cz._2
424- let bL = cz._3
425- if ((0 >= bn))
426- then throw("Nothing to unstake")
427- else if ((aS > bn))
428- then throw(((("Requested " + toString(aS)) + ", but staked only ") + toString(bn)))
429- else {
430- let bU = (bn - aS)
431- let cA = aJ(-(aS), if ((aS == bn))
432- then -1
433- else 0, if ((aS == bn))
434- then -1
435- else 0)
436- let cg = cA._1
437- let ch = cA._2
438- let ci = cA._3
439- ((([ScriptTransfer(Q, aS, bZ), aH("unstake", Q, bX.transactionId, bn, bL, bU, bL)] ++ bl(false, cd, bn)) ++ aR(Q, bU, bL)) ++ cg)
440- }
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._1
438+ let cF = cD._2
439+ let cG = cD._3
440+ if ((cF > 0))
441+ then throw((("You have already made a swap operation. Wait " + toString((height + cG))) + " height to unstake"))
442+ else if ((0 >= bq))
443+ then throw("Nothing to unstake")
444+ else if ((aV > bq))
445+ then throw(((("Requested " + toString(aV)) + ", but staked only ") + toString(bq)))
446+ else {
447+ let bX = (bq - aV)
448+ let cH = aM(-(aV), if ((aV == bq))
449+ then -1
450+ else 0, if ((aV == bq))
451+ then -1
452+ else 0)
453+ let cj = cH._1
454+ let ck = cH._2
455+ let cl = cH._3
456+ ((([ScriptTransfer(Q, aV, cc), aK("unstake", Q, ca.transactionId, bq, bO, bX, bO)] ++ bo(false, cg, bq)) ++ aU(Q, bX, bO)) ++ cj)
457+ }
441458 }
442459
443460
444461
445-@Callable(bX)
446-func deposit () = if ((size(bX.payments) != 1))
462+@Callable(ca)
463+func deposit () = if ((size(ca.payments) != 1))
447464 then throw("exact 1 payment is allowed only")
448465 else {
449- let cB = bX.payments[0]
450- let aS = cB.amount
451- let cC = valueOrElse(cB.assetId, j)
452- let cD = toBase58String(cC)
453- let cE = if ((cC == j))
466+ let cI = ca.payments[0]
467+ let aV = cI.amount
468+ let cJ = valueOrElse(cI.assetId, j)
469+ let cK = toBase58String(cJ)
470+ let cL = if ((cJ == j))
454471 then g
455472 else f
456- let cF = toBigInt(aS)
457- let ch = an(W(), 0)
458- let cG = toBigInt(ch)
459- if ((0 > ch))
473+ let cM = toBigInt(aV)
474+ let ck = an(W(), 0)
475+ let cN = toBigInt(ck)
476+ if ((0 > ck))
460477 then throw("TODO: case is not supported")
461- else if ((ch == 0))
462- then bD(cD, aS)
478+ else if ((ck == 0))
479+ then bG(cK, aV)
463480 else {
464- let cH = fraction(cF, h, cG)
465- let cI = ab()
466- let be = an(cI, -1)
467- let cJ = (be + 1)
468- if (!(contains(aY, cD)))
469- then throw(((aY + " doesn't contain ") + cD))
481+ let cO = fraction(cM, h, cN)
482+ let cP = ab()
483+ let bh = an(cP, -1)
484+ let cQ = (bh + 1)
485+ if (!(contains(bb, cK)))
486+ then throw(((bb + " doesn't contain ") + cK))
470487 else {
471- func cK (bq,cL) = {
472- let cM = ad(cJ, cL)
473- let cN = aq(ad(be, cL), "0")
474- (bq :+ (if ((cL == cD))
475- then StringEntry(cM, toString((parseBigIntValue(cN) + cH)))
476- else StringEntry(cM, cN)))
488+ func cR (bt,cS) = {
489+ let cT = ad(cQ, cS)
490+ let cU = aq(ad(bh, cS), "0")
491+ (bt :+ (if ((cS == cK))
492+ then StringEntry(cT, toString((parseBigIntValue(cU) + cO)))
493+ else StringEntry(cT, cU)))
477494 }
478495
479496 ({
480- let bw = aZ
481- let bx = size(bw)
482- let by = nil
483- func bz (bA,bB) = if ((bB >= bx))
484- then bA
485- else cK(bA, bw[bB])
497+ let bz = bc
498+ let bA = size(bz)
499+ let bB = nil
500+ func bC (bD,bE) = if ((bE >= bA))
501+ then bD
502+ else cR(bD, bz[bE])
486503
487- func bC (bA,bB) = if ((bB >= bx))
488- then bA
504+ func bF (bD,bE) = if ((bE >= bA))
505+ then bD
489506 else throw("List size exceeds 10")
490507
491- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
492- } :+ IntegerEntry(cI, cJ))
508+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
509+ } :+ IntegerEntry(cP, cQ))
493510 }
494511 }
495512 }
496513
497514
498515
499-@Callable(bX)
500-func claimRewards () = cj(bX.caller, bX)
516+@Callable(ca)
517+func claimRewards () = cm(ca.caller, ca)
501518
502519
503520
504-@Callable(bX)
505-func claimRewardsByOriginCaller () = cj(bX.originCaller, bX)
521+@Callable(ca)
522+func claimRewardsByOriginCaller () = cm(ca.originCaller, ca)
506523
507524
508525
509-@Callable(bX)
510-func unclaimedRewardsREADONLY (cd) = {
511- func cO (bq,br) = ((bq + makeString([br, "0", "0"], ":")) + "_")
526+@Callable(ca)
527+func unclaimedRewardsREADONLY (cg) = {
528+ func cV (bt,bu) = ((bt + makeString([bu, "0", "0"], ":")) + "_")
512529
513- let cP = if ((cd == ""))
530+ let cW = if ((cg == ""))
514531 then {
515- let bw = aZ
516- let bx = size(bw)
517- let by = ""
518- func bz (bA,bB) = if ((bB >= bx))
519- then bA
520- else cO(bA, bw[bB])
532+ let bz = bc
533+ let bA = size(bz)
534+ let bB = ""
535+ func bC (bD,bE) = if ((bE >= bA))
536+ then bD
537+ else cV(bD, bz[bE])
521538
522- func bC (bA,bB) = if ((bB >= bx))
523- then bA
539+ func bF (bD,bE) = if ((bE >= bA))
540+ then bD
524541 else throw("List size exceeds 10")
525542
526- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
543+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
527544 }
528545 else {
529- let Q = addressFromStringValue(cd)
530- let cQ = valueOrElse(aW(Q), $Tuple3(true, 0, 0))
531- let bm = cQ._1
532- let bn = cQ._2
533- let cl = cQ._3
534- let bc = toBigInt(bn)
535- let bo = ac(cd)
536- let bd = an(bo, -1)
537- let be = an(ab(), -1)
538- func cm (bq,br) = {
539- let cR = ba(cd, br, bc, bd, be)
540- let bt = cR._1
541- let bu = cR._2
542- let bv = cR._3
543- let bj = cR._4
544- let cS = valueOrElse(getInteger(ah(cd, br)), 0)
545- ((bq + makeString([br, toString(bt), toString(cS)], ":")) + "_")
546+ let Q = addressFromStringValue(cg)
547+ let cX = valueOrElse(aZ(Q), $Tuple3(true, 0, 0))
548+ let bp = cX._1
549+ let bq = cX._2
550+ let co = cX._3
551+ let bf = toBigInt(bq)
552+ let br = ac(cg)
553+ let bg = an(br, -1)
554+ let bh = an(ab(), -1)
555+ func cp (bt,bu) = {
556+ let cY = bd(cg, bu, bf, bg, bh)
557+ let bw = cY._1
558+ let bx = cY._2
559+ let by = cY._3
560+ let bm = cY._4
561+ let cZ = valueOrElse(getInteger(ah(cg, bu)), 0)
562+ ((bt + makeString([bu, toString(bw), toString(cZ)], ":")) + "_")
546563 }
547564
548- let bw = aZ
549- let bx = size(bw)
550- let by = ""
551- func bz (bA,bB) = if ((bB >= bx))
552- then bA
553- else cm(bA, bw[bB])
565+ let bz = bc
566+ let bA = size(bz)
567+ let bB = ""
568+ func bC (bD,bE) = if ((bE >= bA))
569+ then bD
570+ else cp(bD, bz[bE])
554571
555- func bC (bA,bB) = if ((bB >= bx))
556- then bA
572+ func bF (bD,bE) = if ((bE >= bA))
573+ then bD
557574 else throw("List size exceeds 10")
558575
559- bC(bz(bz(bz(bz(bz(bz(bz(bz(bz(bz(by, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
576+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
560577 }
561- $Tuple2(nil, dropRight(cP, 1))
578+ $Tuple2(nil, dropRight(cW, 1))
562579 }
563580
564581
565582
566-@Callable(bX)
567-func surfStakingSYSREADONLY (cT,cU) = {
568- let cV = an(W(), 0)
569- let cW = bH(cV)
570- if ((cT == ""))
571- then $Tuple2(nil, [0, cV, 0, cW, 0, height, height])
583+@Callable(ca)
584+func surfStakingSYSREADONLY (da,db) = {
585+ let dc = an(W(), 0)
586+ let dd = bK(dc)
587+ if ((da == ""))
588+ then $Tuple2(nil, [0, dc, 0, dd, 0, height, height])
572589 else {
573- let Q = ar(cT)
574- let ce = bR(Q, cU)
575- let bm = ce._1
576- let bn = ce._2
577- let bL = ce._3
578- let bU = ce._4
579- let bV = ce._5
580- let cX = bn
581- let cY = bH(cX)
582- $Tuple2(nil, [cX, cV, cY, cW, bL, bV])
590+ let Q = ar(da)
591+ let ch = bU(Q, db)
592+ let bp = ch._1
593+ let bq = ch._2
594+ let bO = ch._3
595+ let bX = ch._4
596+ let bY = ch._5
597+ let de = bq
598+ let df = bK(de)
599+ $Tuple2(nil, [de, dc, df, dd, bO, bY])
583600 }
584601 }
585602
586603
587604
588-@Callable(bX)
589-func gnsbtFromSurfSYSREADONLY (bI) = $Tuple2(nil, bH(bI))
605+@Callable(ca)
606+func gnsbtFromSurfSYSREADONLY (bL) = $Tuple2(nil, bK(bL))
590607
591608
592609
593-@Callable(bX)
610+@Callable(ca)
594611 func configSYSREADONLY () = {
595- let cZ = getIntegerValue(N())
596- let da = (1440 * 14)
597- let db = 1150000
598- $Tuple2(nil, [cZ, (K * d), da, db])
612+ let dg = getIntegerValue(N())
613+ let dh = (1440 * 14)
614+ let di = 1150000
615+ $Tuple2(nil, [dg, (K * d), dh, di])
599616 }
600617
601618

github/deemru/w8io/6500d08 
177.04 ms