tx · 8XjkMUYB2VhFvU93P5cinz8cfv9jDU6wiaPzq35HqzoU 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy: -0.01900000 Waves 2023.05.29 02:55 [2598506] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves
{ "type": 13, "id": "8XjkMUYB2VhFvU93P5cinz8cfv9jDU6wiaPzq35HqzoU", "fee": 1900000, "feeAssetId": null, "timestamp": 1685318191694, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "28QuSaHLRR7p4hqyikL6ebWbFzKrec9iYpc5pYp7qqzr1c6dsNrzLN3TNy63eWGiVWyStDBCCXR785S4Srj95xMV" ], "script": "base64:BgJACAISBQoDCAgIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEYEgMKAQgSAwoBGBIDCgEYEgMKARgSAwoBCFAABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sAA1NFUAICX18ACkFSVFBSRVNBTEUCB1BSRVNBTEUAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAlEQVlNSUxMSVMAgLiZKQAGTlVNUkVTAAYABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQADVVTRFRQUklaRVBBUlQAoMIeAAxXSE1VTFRJUExJRVIAgMivoCUACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA9wcm9kdWN0UGFja2FnZXMJAMwIAgAKCQDMCAIACgkAzAgCAAoJAMwIAgBkCQDMCAIAZAkAzAgCAGQJAMwIAgAKCQDMCAIACgkAzAgCAAoJAMwIAgBkCQDMCAIAZAkAzAgCAGQJAMwIAgAKCQDMCAIACgkAzAgCAAoFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABEXJlYWRSZXN0Q2ZnT3JGYWlsAAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwAAA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAEmdvdmVybmFuY2VDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIgc3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcl8FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYbGFuZEN1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAg1sYW5kQXJ0U3RhdHVzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQdhc3NldElkCQCsAgICFHByZXNhbGVBcnRBY3RpdmF0ZWRfBQdhc3NldElkARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEOa2V5T3JkZXJCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCmxhbmRPcmRlcl8FC2xhbmRBc3NldElkAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARJhc0xpc3RJbnRDb21wYWN0ZWQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55TGlzdAUHJG1hdGNoMAMJAQIhPQIJAJADAQUKdmFsQW55TGlzdAUGTlVNUkVTCQACAQkArAICAg5BcnJheSBzaXplIGlzIAkApAMBCQCQAwEFCnZhbEFueUxpc3QKAQRjb252AgNhY2MEaXRlbQQHJG1hdGNoMQUEaXRlbQMJAAECBQckbWF0Y2gxAgNJbnQEAml0BQckbWF0Y2gxCQDNCAIFA2FjYwkApAMBBQJpdAkAAgECFExpc3QgdHlwZSBpcyBub3QgSW50BAFyCgACJGwFCnZhbEFueUxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGNvbnYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJALkJAgUBcgIBXwkAAgECFmZhaWwgdG8gY2FzdCBpbnRvIExpc3QBDWFzU3BsaXRSZXN1bHQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACFihMaXN0W0FueV0sIExpc3RbQW55XSkEAnQyBQckbWF0Y2gwCQCUCgIJARJhc0xpc3RJbnRDb21wYWN0ZWQBCAUCdDICXzEJARJhc0xpc3RJbnRDb21wYWN0ZWQBCAUCdDICXzIJAAIBAh5mYWlsIHRvIGNhc3QgaW50byAoTGlzdCwgTGlzdCkBDndhbGxldEludGVybmFsAQ51c2VyQWRkcmVzc09wdAQEYWRkcgkApggBBQ51c2VyQWRkcmVzc09wdAQHYmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDvBwEJAQV2YWx1ZQEFBGFkZHIJAQ5CYWxhbmNlRGV0YWlscwQAAAAAAAAAAAQLdXNkdEJhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA8AcCCQEFdmFsdWUBBQRhZGRyBQt1c2R0QXNzZXRJZAAABApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQ51c2VyQWRkcmVzc09wdAUOdXNlckFkZHJlc3NPcHQEBXJlZkJ5CQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUFkZHJlc3NSZWZCeQEFDnVzZXJBZGRyZXNzT3B0AgAEBHJlZnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5QWRkcmVzc1JlZmVycmFscwEFDnVzZXJBZGRyZXNzT3B0AgAECGxhc3RUeElkCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBEWtleUxhc3RUeElkQnlVc2VyAQUOdXNlckFkZHJlc3NPcHQCAAkAzAgCCQCsAgICEiVzJXNfX2N1c3RvbU5hbWVfXwUKY3VzdG9tTmFtZQkAzAgCCQCsAgICEiVzJXNfX3JlZmVycmVkQnlfXwUFcmVmQnkJAMwIAgkArAICAhElcyVzX19yZWZlcnJhbHNfXwUEcmVmcwkAzAgCCQCsAgICECVzJXNfX2xhc3RUeElkX18FCGxhc3RUeElkCQDMCAIJAKwCAgIWJXMlcyVkX193YXZlc0JhbGFuY2VfXwkApAMBCAUHYmFsYW5jZQlhdmFpbGFibGUJAMwIAgkArAICAhUlcyVzJWRfX3VzZHRCYWxhbmNlX18JAKQDAQULdXNkdEJhbGFuY2UFA25pbAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9zdGFraW5nQ29udHJhY3QJAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQULbGFuZEFzc2V0SWQHBQZwaWVjZXMAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAlQoDBQppbmZyYUxldmVsBQlhcnRQaWVjZXMJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBAdwa2dTaXplCQCRAwIFD3Byb2R1Y3RQYWNrYWdlcwUDaWR4BARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FB3BrZ1NpemUAAQUHcGtnU2l6ZQkAlAoCCQBkAgUDaWR4AAEJAGQCCAUDYWNjAl8yCQBoAgUEcGtncwUFTVVMVDgECHdoUmVzVm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBf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XwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAENZHVja0luZm9UdXBsZQELZHVja0Fzc2V0SWQJAJcKBQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULZHVja0Fzc2V0SWQA////////////AQgJAQV2YWx1ZQEJAOwHAQkA2QQBBQtkdWNrQXNzZXRJZARuYW1lCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkAgAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAP///////////wEJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhNnZXRCYWNrcGFja1JFQURPTkxZCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENZHVja0luZm9BcnJheQMLZHVja0Fzc2V0SWQFb3duZXIHZHVja0luZgQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2R1Y2tBc3NldElkCAUHZHVja0luZgJfMgkAzAgCCQCsAgICDyVzJXNfX2Fzc2V0SWRfXwULZHVja0Fzc2V0SWQJAMwIAgkArAICAg0lcyVzX19vd25lcl9fBQVvd25lcgkAzAgCCQCsAgICEiVzJXNfX2N1c3RvbU5hbWVfXwUKY3VzdG9tTmFtZQkAzAgCCQCsAgICEiVzJWRfX3N0YWtlZFRpbWVfXwkApAMBCAUHZHVja0luZgJfMQkAzAgCCQCsAgICDCVzJXNfX25hbWVfXwgFB2R1Y2tJbmYCXzIJAMwIAgkArAICAhAlcyVzX19sb2NhdGlvbl9fCAUHZHVja0luZgJfMwkAzAgCCQCsAgICDiVzJWRfX2hlYWx0aF9fCQCkAwEIBQdkdWNrSW5mAl80CQDMCAIJAKwCAgIQJXMlc19fYmFja1BhY2tfXwgFB2R1Y2tJbmYCXzUFA25pbAENbGFuZEluZm9BcnJheQMLbGFuZEFzc2V0SWQFb3duZXIKc3Rha2VkVGltZQMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQHbGFuZE51bQMJAGYCCAUBYQhxdWFudGl0eQAACQCRAwIFAWQFCnJlY0xhbmROdW0JAKwCAgIBLQkAkQMCBQFkBQpyZWNMYW5kTnVtBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUKc3Rha2VkVGltZQQIYXZhaWxSZXMDCQBmAgUKc3Rha2VkVGltZQAACQBrAwUJZGVsdGFUaW1lCQBoAggFDHByb2R1Y3Rpdml0eQJfMwUGcGllY2VzBQlEQVlNSUxMSVMAAAQHbmVlZE1hdAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzCQBkAggFDHByb2R1Y3Rpdml0eQJfMQABBQVTU0laRQQOZ2xvYmFsQW5kTG9jYWwDCQBmAgUKc3Rha2VkVGltZQAACQENYXNTcGxpdFJlc3VsdAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AiRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkJAMwIAgUHbmVlZE1hdAkAzAgCBQhhdmFpbFJlcwkAzAgCCQCRAwIFAWQFC3JlY1RlcnJhaW5zBQNuaWwFA25pbAkAlAoCCQESYXNMaXN0SW50Q29tcGFjdGVkAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkJAMwIAgUHbmVlZE1hdAUDbmlsBQNuaWwCAAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgkAkQMCBQFkBQxyZWNDb250aW5lbnQCAS0JAJEDAgUBZAUKcmVjTGFuZE51bQkAzAgCCQCsAgICDyVzJXNfX2Fzc2V0SWRfXwULbGFuZEFzc2V0SWQJAMwIAgkArAICAg0lcyVzX19vd25lcl9fBQVvd25lcgkAzAgCCQCsAgICEiVzJXNfX2N1c3RvbU5hbWVfXwUKY3VzdG9tTmFtZQkAzAgCCQCsAgICEiVzJWRfX3N0YWtlZFRpbWVfXwkApAMBBQpzdGFrZWRUaW1lCQDMCAIJAKwCAgITJXMlc19fZGVzY3JpcHRpb25fXwkAuQkCCQDMCAIFB2xhbmROdW0JAMwIAgkAkQMCBQFkBQtyZWNMYW5kU2l6ZQkAzAgCCQCRAwIFAWQFC3JlY1RlcnJhaW5zCQDMCAIJAJEDAgUBZAUMcmVjQ29udGluZW50BQNuaWwCAV8JAMwIAgkArAICAhIlcyVkX19pbmZyYUxldmVsX18JAKQDAQgFDHByb2R1Y3Rpdml0eQJfMQkAzAgCCQCsAgICFiVzJXNfX2F2YWlsUmVzQnlUeXBlX18IBQ5nbG9iYWxBbmRMb2NhbAJfMgkAzAgCCQCsAgICFSVzJWRfX2F2YWlsUmVzVG90YWxfXwkApAMBBQhhdmFpbFJlcwkAzAgCCQCsAgICFCVzJXNfX25lZWRNYXRlcmlhbF9fCAUOZ2xvYmFsQW5kTG9jYWwCXzEJAMwIAgkAuQkCCQDMCAICBCVzJXMJAMwIAgINbGFuZEFydGVmYWN0cwkAzAgCCQCsAgICCFBSRVNBTEU6CQCkAwEIBQxwcm9kdWN0aXZpdHkCXzIFA25pbAUDU0VQCQDMCAIJAKwCAgIRJXMlc19fd2FyZWhvdXNlX18JALkJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkAaQIFBnBpZWNlcwUFU1NJWkUIBQxwcm9kdWN0aXZpdHkCXzECAToJAMwIAgkArAICAhElcyVzX19sYW5kT3JkZXJfXwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkAjAwQDBfMEAwXzBAMF8wQDBfMEAwXzBAMDowQDBfMEAwXzBAMF8wQDBfMEAwXzBAMDoFA25pbAESbGFuZE9yZGVySW5mb0FycmF5AgtsYW5kQXNzZXRJZAVvd25lcgMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwkAzAgCCQCsAgICDyVzJXNfX2Fzc2V0SWRfXwULbGFuZEFzc2V0SWQJAMwIAgkArAICAg0lcyVzX19vd25lcl9fBQVvd25lcgkAzAgCCQCsAgICESVzJXNfX3dhcmVob3VzZV9fCQC5CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAGkCBQZwaWVjZXMFBVNTSVpFCAUMcHJvZHVjdGl2aXR5Al8xAgE6CQDMCAIJAKwCAgIRJXMlc19fbGFuZE9yZGVyX18JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAIwMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6MEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6BQNuaWwMAWkBDWNvbnN0cnVjdG9yVjEDD3N0YWtpbmdDb250cmFjdA9lY29ub215Q29udHJhY3QSZ292ZXJuYW5jZUNvbnRyYWN0AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEmdvdmVybmFuY2VDb250cmFjdAUDbmlsBQNTRVAFA25pbAFpARJ3YWxsZXRJbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0CQCUCgIFA25pbAkBDndhbGxldEludGVybmFsAQUOdXNlckFkZHJlc3NPcHQBaQEXZHVja0J5T3duZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBApzdGFrZWREdWNrCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQULdXNlckFkZHJlc3MJAJQKAgUDbmlsAwMJAQlpc0RlZmluZWQBCQCmCAEFC3VzZXJBZGRyZXNzCQEJaXNEZWZpbmVkAQUKc3Rha2VkRHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQpzdGFrZWREdWNrCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkBQt1c2VyQWRkcmVzcwkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAkBDWR1Y2tJbmZvQXJyYXkDAgAFC3VzZXJBZGRyZXNzCQCXCgUA////////////AQIAAgAA////////////AQIAAWkBGWR1Y2tCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2R1Y2tBc3NldElkBAVvd25lcgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQEB2R1Y2tJbmYJAQ1kdWNrSW5mb1R1cGxlAQULZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkAwkBCWlzRGVmaW5lZAEFBW93bmVyCQEFdmFsdWUBBQVvd25lcgIACQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkAWkBGWxhbmRCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAJQKAgUDbmlsCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQFpAR5zdGFrZWRMYW5kc0J5T3duZXJJbmZvUkVBRE9OTFkBEGxhbmRPd25lckFkZHJlc3MDCQAAAgUQbGFuZE93bmVyQWRkcmVzcwIACQACAQIcbGFuZE93bmVyQWRkcmVzcyBpcyByZXF1aXJlZAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUQbGFuZE93bmVyQWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBRBsYW5kT3duZXJBZGRyZXNzBQpzdGFrZWRUaW1lBAFyCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUC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dWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAJQKAgUDbmlsCQESbGFuZE9yZGVySW5mb0FycmF5AgULbGFuZEFzc2V0SWQFBW93bmVyAWkBG29yZGVyc0J5TGFuZElkc0luZm9SRUFET05MWQEMbGFuZEFzc2V0SWRzCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAM0IAgUDYWNjCQESbGFuZE9yZGVySW5mb0FycmF5AgULbGFuZEFzc2V0SWQFBW93bmVyBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUk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", "height": 2598506, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: XgZu6NETzQapkUN4K1aSBRNJqquh7mfBooixWEDVUC4 Next: 8J4kdK2gjWj7M5zA3UkZBpuzwB2GQxwbJJW9iEx7URa Diff:
Old | New | Differences | |
---|---|---|---|
71 | 71 | ||
72 | 72 | let C = 4 | |
73 | 73 | ||
74 | - | func D () = "%s__restConfig" | |
75 | - | ||
74 | + | let D = 0 | |
76 | 75 | ||
77 | 76 | let E = 1 | |
78 | 77 | ||
80 | 79 | ||
81 | 80 | let G = 3 | |
82 | 81 | ||
83 | - | let H = [10, 10, 10, 100, 100, 100, 10, 10, 10, 100, 100, 100, 10, 10, 10] | |
84 | - | ||
85 | - | func I (J,K) = valueOrErrorMessage(getString(J, K), makeString(["mandatory ", toString(J), ".", K, " is not defined"], "")) | |
82 | + | func H () = "%s__restConfig" | |
86 | 83 | ||
87 | 84 | ||
88 | - | func L () = split_4C(I(this, D()), i) | |
85 | + | let I = 1 | |
86 | + | ||
87 | + | let J = 2 | |
88 | + | ||
89 | + | let K = 3 | |
90 | + | ||
91 | + | let L = [10, 10, 10, 100, 100, 100, 10, 10, 10, 100, 100, 100, 10, 10, 10] | |
92 | + | ||
93 | + | func M (N,O) = valueOrErrorMessage(getString(N, O), makeString(["mandatory ", toString(N), ".", O, " is not defined"], "")) | |
89 | 94 | ||
90 | 95 | ||
91 | - | func | |
96 | + | func P () = split_4C(M(this, H()), i) | |
92 | 97 | ||
93 | 98 | ||
94 | - | let N = L() | |
95 | - | ||
96 | - | let P = M(N, E) | |
97 | - | ||
98 | - | let Q = M(N, F) | |
99 | - | ||
100 | - | let R = M(N, F) | |
101 | - | ||
102 | - | func S () = "contractsBlocked" | |
99 | + | func Q (R,S) = valueOrErrorMessage(addressFromString(R[S]), ("Rest cfg doesn't contain address at index " + toString(S))) | |
103 | 100 | ||
104 | 101 | ||
105 | - | func T (U) = ("duckOwner_" + U) | |
102 | + | let R = P() | |
103 | + | ||
104 | + | let T = Q(R, I) | |
105 | + | ||
106 | + | let U = Q(R, J) | |
107 | + | ||
108 | + | let V = Q(R, J) | |
109 | + | ||
110 | + | func W () = "contractsBlocked" | |
106 | 111 | ||
107 | 112 | ||
108 | - | func | |
113 | + | func X (Y) = ("duckOwner_" + Y) | |
109 | 114 | ||
110 | 115 | ||
111 | - | func | |
116 | + | func Z (Y) = ("stakedTime_" + Y) | |
112 | 117 | ||
113 | 118 | ||
114 | - | func | |
119 | + | func aa (ab) = ("stakedDuckByOwner_" + ab) | |
115 | 120 | ||
116 | 121 | ||
117 | - | func | |
122 | + | func ac (ad,Y,ab) = ((((("stakedTimeByTypeAssetIdAndOwner_" + ad) + "_") + Y) + "_") + ab) | |
118 | 123 | ||
119 | 124 | ||
120 | - | func | |
125 | + | func ae (af) = ("backPack_" + af) | |
121 | 126 | ||
122 | 127 | ||
123 | - | func | |
128 | + | func ag (ah) = ("wareHouse_" + ah) | |
124 | 129 | ||
125 | 130 | ||
126 | - | func | |
131 | + | func ai (af) = ("duckLocation_" + af) | |
127 | 132 | ||
128 | 133 | ||
129 | - | func | |
134 | + | func aj (af) = ("duckHealth_" + af) | |
130 | 135 | ||
131 | 136 | ||
132 | - | func | |
137 | + | func ak (Y) = ("nftOwner_" + Y) | |
133 | 138 | ||
134 | 139 | ||
135 | - | func | |
140 | + | func al (Y) = ("landCustomNameByAssetId_" + Y) | |
136 | 141 | ||
137 | 142 | ||
138 | - | func | |
143 | + | func am (Y) = ("duckCustomNameByAssetId_" + Y) | |
139 | 144 | ||
140 | 145 | ||
141 | - | func | |
146 | + | func an (ao) = ("accountCustomNameByAddr_" + ao) | |
142 | 147 | ||
143 | 148 | ||
144 | - | func | |
149 | + | func ap (ao) = ("accRefBy_" + ao) | |
145 | 150 | ||
146 | 151 | ||
147 | - | func | |
152 | + | func aq (ao) = ("accReferrals_" + ao) | |
148 | 153 | ||
149 | 154 | ||
150 | - | func | |
155 | + | func ar (Y) = ("infraLevel_" + Y) | |
151 | 156 | ||
152 | 157 | ||
153 | - | func | |
158 | + | func as (at,Y) = makeString(["landArtStatus", at, Y], "_") | |
154 | 159 | ||
155 | 160 | ||
156 | - | func | |
161 | + | func au (Y) = ("presaleArtActivated_" + Y) | |
157 | 162 | ||
158 | 163 | ||
159 | - | func | |
164 | + | func av (ab) = ("stakedLandsByOwner_" + ab) | |
160 | 165 | ||
161 | 166 | ||
162 | - | func | |
167 | + | func aw (ao) = ("lastTxIdByUser_" + ao) | |
163 | 168 | ||
164 | 169 | ||
165 | - | func au (av) = { | |
166 | - | let c = av | |
170 | + | func ax (ah) = ("landOrder_" + ah) | |
171 | + | ||
172 | + | ||
173 | + | func ay (az) = { | |
174 | + | let c = az | |
167 | 175 | if ($isInstanceOf(c, "String")) | |
168 | 176 | then { | |
169 | - | let | |
170 | - | | |
177 | + | let aA = c | |
178 | + | aA | |
171 | 179 | } | |
172 | 180 | else throw("fail to cast into String") | |
173 | 181 | } | |
174 | 182 | ||
175 | 183 | ||
176 | - | func | |
177 | - | let c = | |
184 | + | func aB (az) = { | |
185 | + | let c = az | |
178 | 186 | if ($isInstanceOf(c, "Int")) | |
179 | 187 | then { | |
180 | - | let | |
181 | - | | |
188 | + | let aC = c | |
189 | + | aC | |
182 | 190 | } | |
183 | 191 | else throw("fail to cast into Int") | |
184 | 192 | } | |
185 | 193 | ||
186 | 194 | ||
187 | - | func | |
188 | - | let c = | |
195 | + | func aD (az) = { | |
196 | + | let c = az | |
189 | 197 | if ($isInstanceOf(c, "Boolean")) | |
190 | 198 | then { | |
191 | - | let | |
192 | - | | |
199 | + | let aA = c | |
200 | + | aA | |
193 | 201 | } | |
194 | 202 | else throw("fail to cast into Boolean") | |
195 | 203 | } | |
196 | 204 | ||
197 | 205 | ||
198 | - | func | |
199 | - | let c = | |
206 | + | func aE (aF) = { | |
207 | + | let c = aF | |
200 | 208 | if ($isInstanceOf(c, "List[Any]")) | |
201 | 209 | then { | |
202 | - | let | |
203 | - | if ((size( | |
204 | - | then throw(("Array size is " + toString(size( | |
210 | + | let aG = c | |
211 | + | if ((size(aG) != m)) | |
212 | + | then throw(("Array size is " + toString(size(aG)))) | |
205 | 213 | else { | |
206 | - | func | |
207 | - | let | |
208 | - | if ($isInstanceOf( | |
214 | + | func aH (aI,aJ) = { | |
215 | + | let aK = aJ | |
216 | + | if ($isInstanceOf(aK, "Int")) | |
209 | 217 | then { | |
210 | - | let | |
211 | - | ( | |
218 | + | let aL = aK | |
219 | + | (aI :+ toString(aL)) | |
212 | 220 | } | |
213 | 221 | else throw("List type is not Int") | |
214 | 222 | } | |
215 | 223 | ||
216 | - | let | |
217 | - | let | |
218 | - | let | |
219 | - | let | |
220 | - | func | |
221 | - | then | |
222 | - | else | |
224 | + | let aM = { | |
225 | + | let aN = aG | |
226 | + | let aO = size(aN) | |
227 | + | let aP = nil | |
228 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
229 | + | then aR | |
230 | + | else aH(aR, aN[aS]) | |
223 | 231 | ||
224 | - | func | |
225 | - | then | |
232 | + | func aT (aR,aS) = if ((aS >= aO)) | |
233 | + | then aR | |
226 | 234 | else throw("List size exceeds 6") | |
227 | 235 | ||
228 | - | aP | |
236 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6) | |
229 | 237 | } | |
230 | - | makeString( | |
238 | + | makeString(aM, "_") | |
231 | 239 | } | |
232 | 240 | } | |
233 | 241 | else throw("fail to cast into List") | |
234 | 242 | } | |
235 | 243 | ||
236 | 244 | ||
237 | - | func | |
238 | - | let c = | |
245 | + | func aU (aF) = { | |
246 | + | let c = aF | |
239 | 247 | if ($isInstanceOf(c, "(List[Any], List[Any])")) | |
240 | 248 | then { | |
241 | - | let | |
242 | - | $Tuple2( | |
249 | + | let aV = c | |
250 | + | $Tuple2(aE(aV._1), aE(aV._2)) | |
243 | 251 | } | |
244 | 252 | else throw("fail to cast into (List, List)") | |
245 | 253 | } | |
246 | 254 | ||
247 | 255 | ||
248 | - | func | |
249 | - | let | |
250 | - | let | |
251 | - | then wavesBalance(value( | |
256 | + | func aW (aX) = { | |
257 | + | let ao = addressFromString(aX) | |
258 | + | let aY = if (isDefined(ao)) | |
259 | + | then wavesBalance(value(ao)) | |
252 | 260 | else BalanceDetails(0, 0, 0, 0) | |
253 | - | let | |
254 | - | then assetBalance(value( | |
261 | + | let aZ = if (isDefined(ao)) | |
262 | + | then assetBalance(value(ao), b) | |
255 | 263 | else 0 | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | let | |
260 | - | [("%s%s__customName__" + | |
264 | + | let ba = valueOrElse(getString(T, an(aX)), aX) | |
265 | + | let bb = valueOrElse(getString(T, ap(aX)), "") | |
266 | + | let bc = valueOrElse(getString(T, aq(aX)), "") | |
267 | + | let bd = valueOrElse(getString(T, aw(aX)), "") | |
268 | + | [("%s%s__customName__" + ba), ("%s%s__referredBy__" + bb), ("%s%s__referrals__" + bc), ("%s%s__lastTxId__" + bd), ("%s%s%d__wavesBalance__" + toString(aY.available)), ("%s%s%d__usdtBalance__" + toString(aZ))] | |
261 | 269 | } | |
262 | 270 | ||
263 | 271 | ||
264 | - | func | |
265 | - | let | |
266 | - | let | |
267 | - | then | |
272 | + | func be (ah,bf) = { | |
273 | + | let bg = valueOrElse(getInteger(T, ar(ah)), 0) | |
274 | + | let bh = valueOrElse(getInteger(T, as(j, ah)), if (valueOrElse(getBoolean(T, au(ah)), false)) | |
275 | + | then bf | |
268 | 276 | else 0) | |
269 | - | let | |
270 | - | let | |
271 | - | $Tuple3( | |
277 | + | let bi = (bg / 6) | |
278 | + | let bj = (bg / 7) | |
279 | + | $Tuple3(bg, bh, ((k + fraction(k, ((bg + bi) + (2 * bj)), 5)) + fraction(k, bh, (bf * 5)))) | |
272 | 280 | } | |
273 | 281 | ||
274 | 282 | ||
275 | - | func | |
276 | - | let c = | |
283 | + | func bk (bl) = { | |
284 | + | let c = bl | |
277 | 285 | if (("S" == c)) | |
278 | 286 | then n | |
279 | 287 | else if (("M" == c)) | |
288 | 296 | } | |
289 | 297 | ||
290 | 298 | ||
291 | - | func | |
292 | - | let | |
293 | - | ((t * (parseIntValue( | |
299 | + | func bm (bn) = { | |
300 | + | let bo = split(bn, "_") | |
301 | + | ((t * (parseIntValue(bo[1]) + 1)) * parseIntValue(bo[0])) | |
294 | 302 | } | |
295 | 303 | ||
296 | 304 | ||
297 | - | func | |
298 | - | let | |
299 | - | func | |
305 | + | func bp (bq) = { | |
306 | + | let br = bq[B] | |
307 | + | func bs (aI,aJ) = (aI + parseIntValue(aJ)) | |
300 | 308 | ||
301 | - | func | |
302 | - | let | |
303 | - | let | |
304 | - | let | |
305 | - | $Tuple2(( | |
309 | + | func bt (aI,aJ) = { | |
310 | + | let S = aI._1 | |
311 | + | let bu = L[S] | |
312 | + | let bv = (((parseIntValue(aJ) + bu) - 1) / bu) | |
313 | + | $Tuple2((S + 1), (aI._2 + (bv * f))) | |
306 | 314 | } | |
307 | 315 | ||
308 | - | let | |
309 | - | let | |
310 | - | let | |
311 | - | let | |
312 | - | func | |
313 | - | then | |
314 | - | else | |
316 | + | let bw = { | |
317 | + | let aN = split(bq[z], "_") | |
318 | + | let aO = size(aN) | |
319 | + | let aP = 0 | |
320 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
321 | + | then aR | |
322 | + | else bs(aR, aN[aS]) | |
315 | 323 | ||
316 | - | func | |
317 | - | then | |
324 | + | func aT (aR,aS) = if ((aS >= aO)) | |
325 | + | then aR | |
318 | 326 | else throw("List size exceeds 6") | |
319 | 327 | ||
320 | - | aP | |
328 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6) | |
321 | 329 | } | |
322 | - | let | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | func | |
327 | - | then | |
328 | - | else | |
330 | + | let bx = { | |
331 | + | let aN = split(bq[A], "_") | |
332 | + | let aO = size(aN) | |
333 | + | let aP = 0 | |
334 | + | func by (aR,aS) = if ((aS >= aO)) | |
335 | + | then aR | |
336 | + | else bs(aR, aN[aS]) | |
329 | 337 | ||
330 | - | func | |
331 | - | then | |
338 | + | func bz (aR,aS) = if ((aS >= aO)) | |
339 | + | then aR | |
332 | 340 | else throw("List size exceeds 6") | |
333 | 341 | ||
334 | - | | |
342 | + | bz(by(by(by(by(by(by(aP, 0), 1), 2), 3), 4), 5), 6) | |
335 | 343 | } | |
336 | - | let | |
344 | + | let bA = if ((br == "")) | |
337 | 345 | then 0 | |
338 | - | else ( let | |
339 | - | let | |
340 | - | let | |
341 | - | func | |
342 | - | then | |
343 | - | else | |
346 | + | else ( let aN = split_4C(br, "_") | |
347 | + | let aO = size(aN) | |
348 | + | let aP = $Tuple2(0, 0) | |
349 | + | func bB (aR,aS) = if ((aS >= aO)) | |
350 | + | then aR | |
351 | + | else bt(aR, aN[aS]) | |
344 | 352 | ||
345 | - | func | |
346 | - | then | |
353 | + | func bC (aR,aS) = if ((aS >= aO)) | |
354 | + | then aR | |
347 | 355 | else throw("List size exceeds 50") | |
348 | 356 | ||
349 | - | | |
350 | - | (( | |
357 | + | bC(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2 | |
358 | + | ((bw + bx) + bA) | |
351 | 359 | } | |
352 | 360 | ||
353 | 361 | ||
354 | - | func bz (bA,bB,bc) = { | |
355 | - | let bj = ((toString(bB) + "_") + toString(bc)) | |
356 | - | let bC = bi(bj) | |
357 | - | let bD = valueOrElse(getString(P, bA), (bj + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
358 | - | let bE = split(bD, ":") | |
359 | - | let bF = if ((5 > size(bE))) | |
360 | - | then 0 | |
361 | - | else parseIntValue(bE[C]) | |
362 | - | let bG = bl(bE) | |
363 | - | [bE[y], if ((size(split(bE[z], "_")) == m)) | |
364 | - | then bE[z] | |
365 | - | else "0_0_0_0_0_0", if ((size(split(bE[A], "_")) == m)) | |
366 | - | then bE[A] | |
367 | - | else "0_0_0_0_0_0", bE[B], makeString([toString(bF), toString(bG), toString(((bC - bF) - bG)), toString(bC)], "_")] | |
362 | + | func bD (bE,bF,bg) = { | |
363 | + | let bn = ((toString(bF) + "_") + toString(bg)) | |
364 | + | let bG = bm(bn) | |
365 | + | let bH = valueOrElse(getString(T, bE), (bn + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
366 | + | let bI = split(bH, ":") | |
367 | + | let bJ = bp(bI) | |
368 | + | let bK = if ((5 > size(bI))) | |
369 | + | then makeString(["0", toString(bJ), toString((bG - bJ)), toString(bG)], "_") | |
370 | + | else { | |
371 | + | let bL = split(bI[C], "_") | |
372 | + | let bM = parseIntValue(bL[D]) | |
373 | + | let bN = if ((size(bL) > 1)) | |
374 | + | then parseIntValue(bL[E]) | |
375 | + | else bJ | |
376 | + | makeString([toString(bM), toString(bN), toString(((bG - bM) - bN)), toString(bG)], "_") | |
377 | + | } | |
378 | + | [bI[y], if ((size(split(bI[z], "_")) == m)) | |
379 | + | then bI[z] | |
380 | + | else "0_0_0_0_0_0", if ((size(split(bI[A], "_")) == m)) | |
381 | + | then bI[A] | |
382 | + | else "0_0_0_0_0_0", bI[B], bK] | |
368 | 383 | } | |
369 | 384 | ||
370 | 385 | ||
371 | - | func | |
386 | + | func bO (af) = $Tuple5(valueOrElse(getInteger(T, Z(af)), -1), value(assetInfo(fromBase58String(af))).name, valueOrElse(getString(T, ai(af)), ""), valueOrElse(getInteger(T, aj(af)), -1), ay(invoke(T, "getBackpackREADONLY", [af], nil))) | |
372 | 387 | ||
373 | 388 | ||
374 | - | func | |
375 | - | let | |
376 | - | [("%s%s__assetId__" + | |
389 | + | func bP (af,bQ,bR) = { | |
390 | + | let ba = valueOrElse(getString(T, am(af)), bR._2) | |
391 | + | [("%s%s__assetId__" + af), ("%s%s__owner__" + bQ), ("%s%s__customName__" + ba), ("%s%d__stakedTime__" + toString(bR._1)), ("%s%s__name__" + bR._2), ("%s%s__location__" + bR._3), ("%s%d__health__" + toString(bR._4)), ("%s%s__backPack__" + bR._5)] | |
377 | 392 | } | |
378 | 393 | ||
379 | 394 | ||
380 | - | func | |
395 | + | func bS (ah,bQ,bT) = if ((ah == "")) | |
381 | 396 | then throw("landAssetId is required") | |
382 | 397 | else { | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | then | |
387 | - | else ("-" + | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | then fraction( | |
398 | + | let bU = value(assetInfo(fromBase58String(ah))) | |
399 | + | let bV = split(bU.description, "_") | |
400 | + | let bW = if ((bU.quantity > 0)) | |
401 | + | then bV[u] | |
402 | + | else ("-" + bV[u]) | |
403 | + | let bf = bk(bV[v]) | |
404 | + | let bX = be(ah, bf) | |
405 | + | let bY = (lastBlock.timestamp - bT) | |
406 | + | let bZ = if ((bT > 0)) | |
407 | + | then fraction(bY, (bX._3 * bf), l) | |
393 | 408 | else 0 | |
394 | - | let | |
395 | - | let | |
396 | - | then | |
397 | - | else $Tuple2( | |
398 | - | let | |
399 | - | [("%s%s__assetId__" + | |
409 | + | let ca = fraction(d, (bf * (bX._1 + 1)), n) | |
410 | + | let cb = if ((bT > 0)) | |
411 | + | then aU(invoke(T, "splitByGlobalAndLocalWeightsREADONLY", [ca, bZ, bV[w]], nil)) | |
412 | + | else $Tuple2(aE(invoke(T, "splitByGlobalWeightsREADONLY", [ca], nil)), "") | |
413 | + | let ba = valueOrElse(getString(T, al(ah)), ((bV[x] + "-") + bV[u])) | |
414 | + | [("%s%s__assetId__" + ah), ("%s%s__owner__" + bQ), ("%s%s__customName__" + ba), ("%s%d__stakedTime__" + toString(bT)), ("%s%s__description__" + makeString([bW, bV[v], bV[w], bV[x]], "_")), ("%s%d__infraLevel__" + toString(bX._1)), ("%s%s__availResByType__" + cb._2), ("%s%d__availResTotal__" + toString(bZ)), ("%s%s__needMaterial__" + cb._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bX._2))], i), ("%s%s__warehouse__" + makeString(bD(ag(ah), (bf / n), bX._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(U, ax(ah)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))] | |
400 | 415 | } | |
401 | 416 | ||
402 | 417 | ||
403 | - | func | |
418 | + | func cc (ah,bQ) = if ((ah == "")) | |
404 | 419 | then throw("landAssetId is required") | |
405 | 420 | else { | |
406 | - | let | |
407 | - | let | |
408 | - | let | |
409 | - | let | |
410 | - | [("%s%s__assetId__" + | |
421 | + | let bU = value(assetInfo(fromBase58String(ah))) | |
422 | + | let bV = split(bU.description, "_") | |
423 | + | let bf = bk(bV[v]) | |
424 | + | let bX = be(ah, bf) | |
425 | + | [("%s%s__assetId__" + ah), ("%s%s__owner__" + bQ), ("%s%s__warehouse__" + makeString(bD(ag(ah), (bf / n), bX._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(U, ax(ah)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))] | |
411 | 426 | } | |
412 | 427 | ||
413 | 428 | ||
414 | - | @Callable( | |
415 | - | func constructorV1 ( | |
429 | + | @Callable(cd) | |
430 | + | func constructorV1 (T,U,V) = if ((cd.caller != this)) | |
416 | 431 | then throw("permissions denied") | |
417 | - | else [StringEntry( | |
432 | + | else [StringEntry(H(), makeString(["%s%s%s", T, U, V], i))] | |
418 | 433 | ||
419 | 434 | ||
420 | 435 | ||
421 | - | @Callable( | |
422 | - | func walletInfoREADONLY ( | |
436 | + | @Callable(cd) | |
437 | + | func walletInfoREADONLY (aX) = $Tuple2(nil, aW(aX)) | |
423 | 438 | ||
424 | 439 | ||
425 | 440 | ||
426 | - | @Callable( | |
427 | - | func duckByOwnerInfoREADONLY ( | |
428 | - | let | |
429 | - | $Tuple2(nil, if (if (isDefined(addressFromString( | |
430 | - | then isDefined( | |
441 | + | @Callable(cd) | |
442 | + | func duckByOwnerInfoREADONLY (ce) = { | |
443 | + | let cf = getString(T, aa(ce)) | |
444 | + | $Tuple2(nil, if (if (isDefined(addressFromString(ce))) | |
445 | + | then isDefined(cf) | |
431 | 446 | else false) | |
432 | 447 | then { | |
433 | - | let | |
434 | - | | |
448 | + | let af = value(cf) | |
449 | + | bP(af, ce, bO(af)) | |
435 | 450 | } | |
436 | - | else | |
451 | + | else bP("", ce, $Tuple5(-1, "", "", -1, ""))) | |
437 | 452 | } | |
438 | 453 | ||
439 | 454 | ||
440 | 455 | ||
441 | - | @Callable( | |
442 | - | func duckByAssetIdInfoREADONLY ( | |
443 | - | let | |
444 | - | let | |
445 | - | $Tuple2(nil, | |
446 | - | then value( | |
447 | - | else "", | |
456 | + | @Callable(cd) | |
457 | + | func duckByAssetIdInfoREADONLY (af) = { | |
458 | + | let bQ = getString(T, X(af)) | |
459 | + | let bR = bO(af) | |
460 | + | $Tuple2(nil, bP(af, if (isDefined(bQ)) | |
461 | + | then value(bQ) | |
462 | + | else "", bO(af))) | |
448 | 463 | } | |
449 | 464 | ||
450 | 465 | ||
451 | 466 | ||
452 | - | @Callable( | |
453 | - | func landByAssetIdInfoREADONLY ( | |
467 | + | @Callable(cd) | |
468 | + | func landByAssetIdInfoREADONLY (ah) = if ((ah == "")) | |
454 | 469 | then throw("landAssetId is required") | |
455 | 470 | else { | |
456 | - | let | |
457 | - | let | |
458 | - | then value(getString( | |
471 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
472 | + | let bQ = if ((bT > 0)) | |
473 | + | then value(getString(T, ak(ah))) | |
459 | 474 | else "" | |
460 | - | $Tuple2(nil, | |
475 | + | $Tuple2(nil, bS(ah, bQ, bT)) | |
461 | 476 | } | |
462 | 477 | ||
463 | 478 | ||
464 | 479 | ||
465 | - | @Callable( | |
466 | - | func stakedLandsByOwnerInfoREADONLY ( | |
480 | + | @Callable(cd) | |
481 | + | func stakedLandsByOwnerInfoREADONLY (cg) = if ((cg == "")) | |
467 | 482 | then throw("landOwnerAddress is required") | |
468 | 483 | else { | |
469 | - | let | |
470 | - | let | |
471 | - | then split_51C(value( | |
484 | + | let ch = getString(T, av(cg)) | |
485 | + | let ci = if (isDefined(ch)) | |
486 | + | then split_51C(value(ch), "_") | |
472 | 487 | else nil | |
473 | - | func | |
488 | + | func cj (aI,ah) = if ((ah == "")) | |
474 | 489 | then throw("landAssetId is required") | |
475 | 490 | else { | |
476 | - | let | |
477 | - | ( | |
491 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
492 | + | (aI :+ bS(ah, cg, bT)) | |
478 | 493 | } | |
479 | 494 | ||
480 | - | let | |
481 | - | let | |
482 | - | let | |
483 | - | let | |
484 | - | func | |
485 | - | then | |
486 | - | else | |
495 | + | let aM = { | |
496 | + | let aN = ci | |
497 | + | let aO = size(aN) | |
498 | + | let aP = nil | |
499 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
500 | + | then aR | |
501 | + | else cj(aR, aN[aS]) | |
487 | 502 | ||
488 | - | func | |
489 | - | then | |
503 | + | func aT (aR,aS) = if ((aS >= aO)) | |
504 | + | then aR | |
490 | 505 | else throw("List size exceeds 40") | |
491 | 506 | ||
492 | - | aP | |
507 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40) | |
493 | 508 | } | |
494 | - | $Tuple2(nil, | |
509 | + | $Tuple2(nil, aM) | |
495 | 510 | } | |
496 | 511 | ||
497 | 512 | ||
498 | 513 | ||
499 | - | @Callable( | |
500 | - | func landsByIdsInfoREADONLY ( | |
501 | - | func | |
514 | + | @Callable(cd) | |
515 | + | func landsByIdsInfoREADONLY (ck) = { | |
516 | + | func cj (aI,ah) = if ((ah == "")) | |
502 | 517 | then throw("landAssetId is required") | |
503 | 518 | else { | |
504 | - | let | |
505 | - | let | |
506 | - | then value(getString( | |
519 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
520 | + | let bQ = if ((bT > 0)) | |
521 | + | then value(getString(T, ak(ah))) | |
507 | 522 | else "" | |
508 | - | ( | |
523 | + | (aI :+ bS(ah, bQ, bT)) | |
509 | 524 | } | |
510 | 525 | ||
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | func | |
516 | - | then | |
517 | - | else | |
526 | + | let aM = { | |
527 | + | let aN = ck | |
528 | + | let aO = size(aN) | |
529 | + | let aP = nil | |
530 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
531 | + | then aR | |
532 | + | else cj(aR, aN[aS]) | |
518 | 533 | ||
519 | - | func | |
520 | - | then | |
534 | + | func aT (aR,aS) = if ((aS >= aO)) | |
535 | + | then aR | |
521 | 536 | else throw("List size exceeds 40") | |
522 | 537 | ||
523 | - | aP | |
538 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40) | |
524 | 539 | } | |
525 | - | $Tuple2(nil, | |
540 | + | $Tuple2(nil, aM) | |
526 | 541 | } | |
527 | 542 | ||
528 | 543 | ||
529 | 544 | ||
530 | - | @Callable( | |
531 | - | func warehouseOrderByAssetIdInfoREADONLY ( | |
545 | + | @Callable(cd) | |
546 | + | func warehouseOrderByAssetIdInfoREADONLY (ah) = if ((ah == "")) | |
532 | 547 | then throw("landAssetId is required") | |
533 | 548 | else { | |
534 | - | let | |
535 | - | let | |
536 | - | then value(getString( | |
549 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
550 | + | let bQ = if ((bT > 0)) | |
551 | + | then value(getString(T, ak(ah))) | |
537 | 552 | else "" | |
538 | - | $Tuple2(nil, | |
553 | + | $Tuple2(nil, cc(ah, bQ)) | |
539 | 554 | } | |
540 | 555 | ||
541 | 556 | ||
542 | 557 | ||
543 | - | @Callable( | |
544 | - | func ordersByLandIdsInfoREADONLY ( | |
545 | - | func | |
558 | + | @Callable(cd) | |
559 | + | func ordersByLandIdsInfoREADONLY (ck) = { | |
560 | + | func cj (aI,ah) = if ((ah == "")) | |
546 | 561 | then throw("landAssetId is required") | |
547 | 562 | else { | |
548 | - | let | |
549 | - | let | |
550 | - | then value(getString( | |
563 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
564 | + | let bQ = if ((bT > 0)) | |
565 | + | then value(getString(T, ak(ah))) | |
551 | 566 | else "" | |
552 | - | ( | |
567 | + | (aI :+ cc(ah, bQ)) | |
553 | 568 | } | |
554 | 569 | ||
555 | - | let | |
556 | - | let | |
557 | - | let | |
558 | - | let | |
559 | - | func | |
560 | - | then | |
561 | - | else | |
570 | + | let aM = { | |
571 | + | let aN = ck | |
572 | + | let aO = size(aN) | |
573 | + | let aP = nil | |
574 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
575 | + | then aR | |
576 | + | else cj(aR, aN[aS]) | |
562 | 577 | ||
563 | - | func | |
564 | - | then | |
578 | + | func aT (aR,aS) = if ((aS >= aO)) | |
579 | + | then aR | |
565 | 580 | else throw("List size exceeds 40") | |
566 | 581 | ||
567 | - | aP | |
582 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40) | |
568 | 583 | } | |
569 | - | $Tuple2(nil, | |
584 | + | $Tuple2(nil, aM) | |
570 | 585 | } | |
571 | 586 | ||
572 | 587 | ||
573 | 588 | ||
574 | - | @Callable( | |
575 | - | func cancelWarehouseOrders ( | |
589 | + | @Callable(cd) | |
590 | + | func cancelWarehouseOrders (ck) = if ((cd.caller != this)) | |
576 | 591 | then throw("permission denied") | |
577 | 592 | else { | |
578 | - | let | |
579 | - | if (if (!(isDefined( | |
593 | + | let cl = getBoolean(T, W()) | |
594 | + | if (if (!(isDefined(cl))) | |
580 | 595 | then true | |
581 | - | else (value( | |
596 | + | else (value(cl) == false)) | |
582 | 597 | then throw("Contracts should be blocked before canceling orders") | |
583 | 598 | else { | |
584 | - | func | |
599 | + | func cj (bU,ah) = if ((ah == "")) | |
585 | 600 | then throw("landAssetId is required") | |
586 | 601 | else { | |
587 | - | let | |
588 | - | if (if ( | |
602 | + | let cm = aD(invoke(U, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", ah], nil)) | |
603 | + | if (if (bU) | |
589 | 604 | then true | |
590 | - | else | |
591 | - | then !(if ( | |
592 | - | then | |
605 | + | else cm) | |
606 | + | then !(if (bU) | |
607 | + | then cm | |
593 | 608 | else false) | |
594 | 609 | else false | |
595 | 610 | } | |
596 | 611 | ||
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | let | |
601 | - | func | |
602 | - | then | |
603 | - | else | |
612 | + | let aM = { | |
613 | + | let aN = ck | |
614 | + | let aO = size(aN) | |
615 | + | let aP = false | |
616 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
617 | + | then aR | |
618 | + | else cj(aR, aN[aS]) | |
604 | 619 | ||
605 | - | func | |
606 | - | then | |
620 | + | func aT (aR,aS) = if ((aS >= aO)) | |
621 | + | then aR | |
607 | 622 | else throw("List size exceeds 30") | |
608 | 623 | ||
609 | - | aP | |
624 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30) | |
610 | 625 | } | |
611 | - | $Tuple2(nil, | |
626 | + | $Tuple2(nil, aM) | |
612 | 627 | } | |
613 | 628 | } | |
614 | 629 | ||
615 | 630 | ||
616 | 631 | ||
617 | - | @Callable( | |
618 | - | func replaceBooleanArtifacts ( | |
632 | + | @Callable(cd) | |
633 | + | func replaceBooleanArtifacts (ck) = if ((cd.caller != this)) | |
619 | 634 | then throw("permission denied") | |
620 | 635 | else { | |
621 | - | func | |
636 | + | func cj (aI,ah) = if ((ah == "")) | |
622 | 637 | then throw("landAssetId is required") | |
623 | - | else if (isDefined(getBoolean( | |
624 | - | then ( | |
625 | - | else | |
638 | + | else if (isDefined(getBoolean(T, au(ah)))) | |
639 | + | then (aI + aB(invoke(T, "replaceBooleanArtifact", [ah], nil))) | |
640 | + | else aI | |
626 | 641 | ||
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | func | |
632 | - | then | |
633 | - | else | |
642 | + | let aM = { | |
643 | + | let aN = ck | |
644 | + | let aO = size(aN) | |
645 | + | let aP = 0 | |
646 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
647 | + | then aR | |
648 | + | else cj(aR, aN[aS]) | |
634 | 649 | ||
635 | - | func | |
636 | - | then | |
650 | + | func aT (aR,aS) = if ((aS >= aO)) | |
651 | + | then aR | |
637 | 652 | else throw("List size exceeds 25") | |
638 | 653 | ||
639 | - | aP | |
654 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25) | |
640 | 655 | } | |
641 | - | $Tuple2(nil, | |
656 | + | $Tuple2(nil, aM) | |
642 | 657 | } | |
643 | 658 | ||
644 | 659 | ||
645 | 660 | ||
646 | - | @Callable( | |
647 | - | func sendUsdtPrize ( | |
661 | + | @Callable(cd) | |
662 | + | func sendUsdtPrize (ce) = if ((cd.caller != T)) | |
648 | 663 | then throw("permission denied") | |
649 | 664 | else { | |
650 | - | let | |
651 | - | $Tuple2([ScriptTransfer(addressFromStringValue( | |
665 | + | let cn = fraction(assetBalance(this, b), s, e) | |
666 | + | $Tuple2([ScriptTransfer(addressFromStringValue(ce), cn, b)], cn) | |
652 | 667 | } | |
653 | 668 | ||
654 | 669 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = take(drop(this.bytes, 1), 1) | |
5 | 5 | ||
6 | 6 | let b = { | |
7 | 7 | let c = a | |
8 | 8 | if ((base58'2W' == c)) | |
9 | 9 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
10 | 10 | else if ((base58'2T' == c)) | |
11 | 11 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
12 | 12 | else throw("Unknown chain") | |
13 | 13 | } | |
14 | 14 | ||
15 | 15 | let d = { | |
16 | 16 | let c = a | |
17 | 17 | if ((base58'2W' == c)) | |
18 | 18 | then 10000000000 | |
19 | 19 | else if ((base58'2T' == c)) | |
20 | 20 | then 100000000 | |
21 | 21 | else throw("Unknown chain") | |
22 | 22 | } | |
23 | 23 | ||
24 | 24 | let e = 1000000 | |
25 | 25 | ||
26 | 26 | let f = 100000000 | |
27 | 27 | ||
28 | 28 | let g = "LAND" | |
29 | 29 | ||
30 | 30 | let h = "DUCK" | |
31 | 31 | ||
32 | 32 | let i = "__" | |
33 | 33 | ||
34 | 34 | let j = "PRESALE" | |
35 | 35 | ||
36 | 36 | let k = 3456000 | |
37 | 37 | ||
38 | 38 | let l = 86400000 | |
39 | 39 | ||
40 | 40 | let m = 6 | |
41 | 41 | ||
42 | 42 | let n = 25 | |
43 | 43 | ||
44 | 44 | let o = 100 | |
45 | 45 | ||
46 | 46 | let p = 225 | |
47 | 47 | ||
48 | 48 | let q = 400 | |
49 | 49 | ||
50 | 50 | let r = 625 | |
51 | 51 | ||
52 | 52 | let s = 500000 | |
53 | 53 | ||
54 | 54 | let t = 10000000000 | |
55 | 55 | ||
56 | 56 | let u = 0 | |
57 | 57 | ||
58 | 58 | let v = 1 | |
59 | 59 | ||
60 | 60 | let w = 2 | |
61 | 61 | ||
62 | 62 | let x = 3 | |
63 | 63 | ||
64 | 64 | let y = 0 | |
65 | 65 | ||
66 | 66 | let z = 1 | |
67 | 67 | ||
68 | 68 | let A = 2 | |
69 | 69 | ||
70 | 70 | let B = 3 | |
71 | 71 | ||
72 | 72 | let C = 4 | |
73 | 73 | ||
74 | - | func D () = "%s__restConfig" | |
75 | - | ||
74 | + | let D = 0 | |
76 | 75 | ||
77 | 76 | let E = 1 | |
78 | 77 | ||
79 | 78 | let F = 2 | |
80 | 79 | ||
81 | 80 | let G = 3 | |
82 | 81 | ||
83 | - | let H = [10, 10, 10, 100, 100, 100, 10, 10, 10, 100, 100, 100, 10, 10, 10] | |
84 | - | ||
85 | - | func I (J,K) = valueOrErrorMessage(getString(J, K), makeString(["mandatory ", toString(J), ".", K, " is not defined"], "")) | |
82 | + | func H () = "%s__restConfig" | |
86 | 83 | ||
87 | 84 | ||
88 | - | func L () = split_4C(I(this, D()), i) | |
85 | + | let I = 1 | |
86 | + | ||
87 | + | let J = 2 | |
88 | + | ||
89 | + | let K = 3 | |
90 | + | ||
91 | + | let L = [10, 10, 10, 100, 100, 100, 10, 10, 10, 100, 100, 100, 10, 10, 10] | |
92 | + | ||
93 | + | func M (N,O) = valueOrErrorMessage(getString(N, O), makeString(["mandatory ", toString(N), ".", O, " is not defined"], "")) | |
89 | 94 | ||
90 | 95 | ||
91 | - | func | |
96 | + | func P () = split_4C(M(this, H()), i) | |
92 | 97 | ||
93 | 98 | ||
94 | - | let N = L() | |
95 | - | ||
96 | - | let P = M(N, E) | |
97 | - | ||
98 | - | let Q = M(N, F) | |
99 | - | ||
100 | - | let R = M(N, F) | |
101 | - | ||
102 | - | func S () = "contractsBlocked" | |
99 | + | func Q (R,S) = valueOrErrorMessage(addressFromString(R[S]), ("Rest cfg doesn't contain address at index " + toString(S))) | |
103 | 100 | ||
104 | 101 | ||
105 | - | func T (U) = ("duckOwner_" + U) | |
102 | + | let R = P() | |
103 | + | ||
104 | + | let T = Q(R, I) | |
105 | + | ||
106 | + | let U = Q(R, J) | |
107 | + | ||
108 | + | let V = Q(R, J) | |
109 | + | ||
110 | + | func W () = "contractsBlocked" | |
106 | 111 | ||
107 | 112 | ||
108 | - | func | |
113 | + | func X (Y) = ("duckOwner_" + Y) | |
109 | 114 | ||
110 | 115 | ||
111 | - | func | |
116 | + | func Z (Y) = ("stakedTime_" + Y) | |
112 | 117 | ||
113 | 118 | ||
114 | - | func | |
119 | + | func aa (ab) = ("stakedDuckByOwner_" + ab) | |
115 | 120 | ||
116 | 121 | ||
117 | - | func | |
122 | + | func ac (ad,Y,ab) = ((((("stakedTimeByTypeAssetIdAndOwner_" + ad) + "_") + Y) + "_") + ab) | |
118 | 123 | ||
119 | 124 | ||
120 | - | func | |
125 | + | func ae (af) = ("backPack_" + af) | |
121 | 126 | ||
122 | 127 | ||
123 | - | func | |
128 | + | func ag (ah) = ("wareHouse_" + ah) | |
124 | 129 | ||
125 | 130 | ||
126 | - | func | |
131 | + | func ai (af) = ("duckLocation_" + af) | |
127 | 132 | ||
128 | 133 | ||
129 | - | func | |
134 | + | func aj (af) = ("duckHealth_" + af) | |
130 | 135 | ||
131 | 136 | ||
132 | - | func | |
137 | + | func ak (Y) = ("nftOwner_" + Y) | |
133 | 138 | ||
134 | 139 | ||
135 | - | func | |
140 | + | func al (Y) = ("landCustomNameByAssetId_" + Y) | |
136 | 141 | ||
137 | 142 | ||
138 | - | func | |
143 | + | func am (Y) = ("duckCustomNameByAssetId_" + Y) | |
139 | 144 | ||
140 | 145 | ||
141 | - | func | |
146 | + | func an (ao) = ("accountCustomNameByAddr_" + ao) | |
142 | 147 | ||
143 | 148 | ||
144 | - | func | |
149 | + | func ap (ao) = ("accRefBy_" + ao) | |
145 | 150 | ||
146 | 151 | ||
147 | - | func | |
152 | + | func aq (ao) = ("accReferrals_" + ao) | |
148 | 153 | ||
149 | 154 | ||
150 | - | func | |
155 | + | func ar (Y) = ("infraLevel_" + Y) | |
151 | 156 | ||
152 | 157 | ||
153 | - | func | |
158 | + | func as (at,Y) = makeString(["landArtStatus", at, Y], "_") | |
154 | 159 | ||
155 | 160 | ||
156 | - | func | |
161 | + | func au (Y) = ("presaleArtActivated_" + Y) | |
157 | 162 | ||
158 | 163 | ||
159 | - | func | |
164 | + | func av (ab) = ("stakedLandsByOwner_" + ab) | |
160 | 165 | ||
161 | 166 | ||
162 | - | func | |
167 | + | func aw (ao) = ("lastTxIdByUser_" + ao) | |
163 | 168 | ||
164 | 169 | ||
165 | - | func au (av) = { | |
166 | - | let c = av | |
170 | + | func ax (ah) = ("landOrder_" + ah) | |
171 | + | ||
172 | + | ||
173 | + | func ay (az) = { | |
174 | + | let c = az | |
167 | 175 | if ($isInstanceOf(c, "String")) | |
168 | 176 | then { | |
169 | - | let | |
170 | - | | |
177 | + | let aA = c | |
178 | + | aA | |
171 | 179 | } | |
172 | 180 | else throw("fail to cast into String") | |
173 | 181 | } | |
174 | 182 | ||
175 | 183 | ||
176 | - | func | |
177 | - | let c = | |
184 | + | func aB (az) = { | |
185 | + | let c = az | |
178 | 186 | if ($isInstanceOf(c, "Int")) | |
179 | 187 | then { | |
180 | - | let | |
181 | - | | |
188 | + | let aC = c | |
189 | + | aC | |
182 | 190 | } | |
183 | 191 | else throw("fail to cast into Int") | |
184 | 192 | } | |
185 | 193 | ||
186 | 194 | ||
187 | - | func | |
188 | - | let c = | |
195 | + | func aD (az) = { | |
196 | + | let c = az | |
189 | 197 | if ($isInstanceOf(c, "Boolean")) | |
190 | 198 | then { | |
191 | - | let | |
192 | - | | |
199 | + | let aA = c | |
200 | + | aA | |
193 | 201 | } | |
194 | 202 | else throw("fail to cast into Boolean") | |
195 | 203 | } | |
196 | 204 | ||
197 | 205 | ||
198 | - | func | |
199 | - | let c = | |
206 | + | func aE (aF) = { | |
207 | + | let c = aF | |
200 | 208 | if ($isInstanceOf(c, "List[Any]")) | |
201 | 209 | then { | |
202 | - | let | |
203 | - | if ((size( | |
204 | - | then throw(("Array size is " + toString(size( | |
210 | + | let aG = c | |
211 | + | if ((size(aG) != m)) | |
212 | + | then throw(("Array size is " + toString(size(aG)))) | |
205 | 213 | else { | |
206 | - | func | |
207 | - | let | |
208 | - | if ($isInstanceOf( | |
214 | + | func aH (aI,aJ) = { | |
215 | + | let aK = aJ | |
216 | + | if ($isInstanceOf(aK, "Int")) | |
209 | 217 | then { | |
210 | - | let | |
211 | - | ( | |
218 | + | let aL = aK | |
219 | + | (aI :+ toString(aL)) | |
212 | 220 | } | |
213 | 221 | else throw("List type is not Int") | |
214 | 222 | } | |
215 | 223 | ||
216 | - | let | |
217 | - | let | |
218 | - | let | |
219 | - | let | |
220 | - | func | |
221 | - | then | |
222 | - | else | |
224 | + | let aM = { | |
225 | + | let aN = aG | |
226 | + | let aO = size(aN) | |
227 | + | let aP = nil | |
228 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
229 | + | then aR | |
230 | + | else aH(aR, aN[aS]) | |
223 | 231 | ||
224 | - | func | |
225 | - | then | |
232 | + | func aT (aR,aS) = if ((aS >= aO)) | |
233 | + | then aR | |
226 | 234 | else throw("List size exceeds 6") | |
227 | 235 | ||
228 | - | aP | |
236 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6) | |
229 | 237 | } | |
230 | - | makeString( | |
238 | + | makeString(aM, "_") | |
231 | 239 | } | |
232 | 240 | } | |
233 | 241 | else throw("fail to cast into List") | |
234 | 242 | } | |
235 | 243 | ||
236 | 244 | ||
237 | - | func | |
238 | - | let c = | |
245 | + | func aU (aF) = { | |
246 | + | let c = aF | |
239 | 247 | if ($isInstanceOf(c, "(List[Any], List[Any])")) | |
240 | 248 | then { | |
241 | - | let | |
242 | - | $Tuple2( | |
249 | + | let aV = c | |
250 | + | $Tuple2(aE(aV._1), aE(aV._2)) | |
243 | 251 | } | |
244 | 252 | else throw("fail to cast into (List, List)") | |
245 | 253 | } | |
246 | 254 | ||
247 | 255 | ||
248 | - | func | |
249 | - | let | |
250 | - | let | |
251 | - | then wavesBalance(value( | |
256 | + | func aW (aX) = { | |
257 | + | let ao = addressFromString(aX) | |
258 | + | let aY = if (isDefined(ao)) | |
259 | + | then wavesBalance(value(ao)) | |
252 | 260 | else BalanceDetails(0, 0, 0, 0) | |
253 | - | let | |
254 | - | then assetBalance(value( | |
261 | + | let aZ = if (isDefined(ao)) | |
262 | + | then assetBalance(value(ao), b) | |
255 | 263 | else 0 | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | let | |
260 | - | [("%s%s__customName__" + | |
264 | + | let ba = valueOrElse(getString(T, an(aX)), aX) | |
265 | + | let bb = valueOrElse(getString(T, ap(aX)), "") | |
266 | + | let bc = valueOrElse(getString(T, aq(aX)), "") | |
267 | + | let bd = valueOrElse(getString(T, aw(aX)), "") | |
268 | + | [("%s%s__customName__" + ba), ("%s%s__referredBy__" + bb), ("%s%s__referrals__" + bc), ("%s%s__lastTxId__" + bd), ("%s%s%d__wavesBalance__" + toString(aY.available)), ("%s%s%d__usdtBalance__" + toString(aZ))] | |
261 | 269 | } | |
262 | 270 | ||
263 | 271 | ||
264 | - | func | |
265 | - | let | |
266 | - | let | |
267 | - | then | |
272 | + | func be (ah,bf) = { | |
273 | + | let bg = valueOrElse(getInteger(T, ar(ah)), 0) | |
274 | + | let bh = valueOrElse(getInteger(T, as(j, ah)), if (valueOrElse(getBoolean(T, au(ah)), false)) | |
275 | + | then bf | |
268 | 276 | else 0) | |
269 | - | let | |
270 | - | let | |
271 | - | $Tuple3( | |
277 | + | let bi = (bg / 6) | |
278 | + | let bj = (bg / 7) | |
279 | + | $Tuple3(bg, bh, ((k + fraction(k, ((bg + bi) + (2 * bj)), 5)) + fraction(k, bh, (bf * 5)))) | |
272 | 280 | } | |
273 | 281 | ||
274 | 282 | ||
275 | - | func | |
276 | - | let c = | |
283 | + | func bk (bl) = { | |
284 | + | let c = bl | |
277 | 285 | if (("S" == c)) | |
278 | 286 | then n | |
279 | 287 | else if (("M" == c)) | |
280 | 288 | then o | |
281 | 289 | else if (("L" == c)) | |
282 | 290 | then p | |
283 | 291 | else if (("XL" == c)) | |
284 | 292 | then q | |
285 | 293 | else if (("XXL" == c)) | |
286 | 294 | then r | |
287 | 295 | else throw("Unknown land size") | |
288 | 296 | } | |
289 | 297 | ||
290 | 298 | ||
291 | - | func | |
292 | - | let | |
293 | - | ((t * (parseIntValue( | |
299 | + | func bm (bn) = { | |
300 | + | let bo = split(bn, "_") | |
301 | + | ((t * (parseIntValue(bo[1]) + 1)) * parseIntValue(bo[0])) | |
294 | 302 | } | |
295 | 303 | ||
296 | 304 | ||
297 | - | func | |
298 | - | let | |
299 | - | func | |
305 | + | func bp (bq) = { | |
306 | + | let br = bq[B] | |
307 | + | func bs (aI,aJ) = (aI + parseIntValue(aJ)) | |
300 | 308 | ||
301 | - | func | |
302 | - | let | |
303 | - | let | |
304 | - | let | |
305 | - | $Tuple2(( | |
309 | + | func bt (aI,aJ) = { | |
310 | + | let S = aI._1 | |
311 | + | let bu = L[S] | |
312 | + | let bv = (((parseIntValue(aJ) + bu) - 1) / bu) | |
313 | + | $Tuple2((S + 1), (aI._2 + (bv * f))) | |
306 | 314 | } | |
307 | 315 | ||
308 | - | let | |
309 | - | let | |
310 | - | let | |
311 | - | let | |
312 | - | func | |
313 | - | then | |
314 | - | else | |
316 | + | let bw = { | |
317 | + | let aN = split(bq[z], "_") | |
318 | + | let aO = size(aN) | |
319 | + | let aP = 0 | |
320 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
321 | + | then aR | |
322 | + | else bs(aR, aN[aS]) | |
315 | 323 | ||
316 | - | func | |
317 | - | then | |
324 | + | func aT (aR,aS) = if ((aS >= aO)) | |
325 | + | then aR | |
318 | 326 | else throw("List size exceeds 6") | |
319 | 327 | ||
320 | - | aP | |
328 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6) | |
321 | 329 | } | |
322 | - | let | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | func | |
327 | - | then | |
328 | - | else | |
330 | + | let bx = { | |
331 | + | let aN = split(bq[A], "_") | |
332 | + | let aO = size(aN) | |
333 | + | let aP = 0 | |
334 | + | func by (aR,aS) = if ((aS >= aO)) | |
335 | + | then aR | |
336 | + | else bs(aR, aN[aS]) | |
329 | 337 | ||
330 | - | func | |
331 | - | then | |
338 | + | func bz (aR,aS) = if ((aS >= aO)) | |
339 | + | then aR | |
332 | 340 | else throw("List size exceeds 6") | |
333 | 341 | ||
334 | - | | |
342 | + | bz(by(by(by(by(by(by(aP, 0), 1), 2), 3), 4), 5), 6) | |
335 | 343 | } | |
336 | - | let | |
344 | + | let bA = if ((br == "")) | |
337 | 345 | then 0 | |
338 | - | else ( let | |
339 | - | let | |
340 | - | let | |
341 | - | func | |
342 | - | then | |
343 | - | else | |
346 | + | else ( let aN = split_4C(br, "_") | |
347 | + | let aO = size(aN) | |
348 | + | let aP = $Tuple2(0, 0) | |
349 | + | func bB (aR,aS) = if ((aS >= aO)) | |
350 | + | then aR | |
351 | + | else bt(aR, aN[aS]) | |
344 | 352 | ||
345 | - | func | |
346 | - | then | |
353 | + | func bC (aR,aS) = if ((aS >= aO)) | |
354 | + | then aR | |
347 | 355 | else throw("List size exceeds 50") | |
348 | 356 | ||
349 | - | | |
350 | - | (( | |
357 | + | bC(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2 | |
358 | + | ((bw + bx) + bA) | |
351 | 359 | } | |
352 | 360 | ||
353 | 361 | ||
354 | - | func bz (bA,bB,bc) = { | |
355 | - | let bj = ((toString(bB) + "_") + toString(bc)) | |
356 | - | let bC = bi(bj) | |
357 | - | let bD = valueOrElse(getString(P, bA), (bj + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
358 | - | let bE = split(bD, ":") | |
359 | - | let bF = if ((5 > size(bE))) | |
360 | - | then 0 | |
361 | - | else parseIntValue(bE[C]) | |
362 | - | let bG = bl(bE) | |
363 | - | [bE[y], if ((size(split(bE[z], "_")) == m)) | |
364 | - | then bE[z] | |
365 | - | else "0_0_0_0_0_0", if ((size(split(bE[A], "_")) == m)) | |
366 | - | then bE[A] | |
367 | - | else "0_0_0_0_0_0", bE[B], makeString([toString(bF), toString(bG), toString(((bC - bF) - bG)), toString(bC)], "_")] | |
362 | + | func bD (bE,bF,bg) = { | |
363 | + | let bn = ((toString(bF) + "_") + toString(bg)) | |
364 | + | let bG = bm(bn) | |
365 | + | let bH = valueOrElse(getString(T, bE), (bn + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
366 | + | let bI = split(bH, ":") | |
367 | + | let bJ = bp(bI) | |
368 | + | let bK = if ((5 > size(bI))) | |
369 | + | then makeString(["0", toString(bJ), toString((bG - bJ)), toString(bG)], "_") | |
370 | + | else { | |
371 | + | let bL = split(bI[C], "_") | |
372 | + | let bM = parseIntValue(bL[D]) | |
373 | + | let bN = if ((size(bL) > 1)) | |
374 | + | then parseIntValue(bL[E]) | |
375 | + | else bJ | |
376 | + | makeString([toString(bM), toString(bN), toString(((bG - bM) - bN)), toString(bG)], "_") | |
377 | + | } | |
378 | + | [bI[y], if ((size(split(bI[z], "_")) == m)) | |
379 | + | then bI[z] | |
380 | + | else "0_0_0_0_0_0", if ((size(split(bI[A], "_")) == m)) | |
381 | + | then bI[A] | |
382 | + | else "0_0_0_0_0_0", bI[B], bK] | |
368 | 383 | } | |
369 | 384 | ||
370 | 385 | ||
371 | - | func | |
386 | + | func bO (af) = $Tuple5(valueOrElse(getInteger(T, Z(af)), -1), value(assetInfo(fromBase58String(af))).name, valueOrElse(getString(T, ai(af)), ""), valueOrElse(getInteger(T, aj(af)), -1), ay(invoke(T, "getBackpackREADONLY", [af], nil))) | |
372 | 387 | ||
373 | 388 | ||
374 | - | func | |
375 | - | let | |
376 | - | [("%s%s__assetId__" + | |
389 | + | func bP (af,bQ,bR) = { | |
390 | + | let ba = valueOrElse(getString(T, am(af)), bR._2) | |
391 | + | [("%s%s__assetId__" + af), ("%s%s__owner__" + bQ), ("%s%s__customName__" + ba), ("%s%d__stakedTime__" + toString(bR._1)), ("%s%s__name__" + bR._2), ("%s%s__location__" + bR._3), ("%s%d__health__" + toString(bR._4)), ("%s%s__backPack__" + bR._5)] | |
377 | 392 | } | |
378 | 393 | ||
379 | 394 | ||
380 | - | func | |
395 | + | func bS (ah,bQ,bT) = if ((ah == "")) | |
381 | 396 | then throw("landAssetId is required") | |
382 | 397 | else { | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | then | |
387 | - | else ("-" + | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | then fraction( | |
398 | + | let bU = value(assetInfo(fromBase58String(ah))) | |
399 | + | let bV = split(bU.description, "_") | |
400 | + | let bW = if ((bU.quantity > 0)) | |
401 | + | then bV[u] | |
402 | + | else ("-" + bV[u]) | |
403 | + | let bf = bk(bV[v]) | |
404 | + | let bX = be(ah, bf) | |
405 | + | let bY = (lastBlock.timestamp - bT) | |
406 | + | let bZ = if ((bT > 0)) | |
407 | + | then fraction(bY, (bX._3 * bf), l) | |
393 | 408 | else 0 | |
394 | - | let | |
395 | - | let | |
396 | - | then | |
397 | - | else $Tuple2( | |
398 | - | let | |
399 | - | [("%s%s__assetId__" + | |
409 | + | let ca = fraction(d, (bf * (bX._1 + 1)), n) | |
410 | + | let cb = if ((bT > 0)) | |
411 | + | then aU(invoke(T, "splitByGlobalAndLocalWeightsREADONLY", [ca, bZ, bV[w]], nil)) | |
412 | + | else $Tuple2(aE(invoke(T, "splitByGlobalWeightsREADONLY", [ca], nil)), "") | |
413 | + | let ba = valueOrElse(getString(T, al(ah)), ((bV[x] + "-") + bV[u])) | |
414 | + | [("%s%s__assetId__" + ah), ("%s%s__owner__" + bQ), ("%s%s__customName__" + ba), ("%s%d__stakedTime__" + toString(bT)), ("%s%s__description__" + makeString([bW, bV[v], bV[w], bV[x]], "_")), ("%s%d__infraLevel__" + toString(bX._1)), ("%s%s__availResByType__" + cb._2), ("%s%d__availResTotal__" + toString(bZ)), ("%s%s__needMaterial__" + cb._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bX._2))], i), ("%s%s__warehouse__" + makeString(bD(ag(ah), (bf / n), bX._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(U, ax(ah)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))] | |
400 | 415 | } | |
401 | 416 | ||
402 | 417 | ||
403 | - | func | |
418 | + | func cc (ah,bQ) = if ((ah == "")) | |
404 | 419 | then throw("landAssetId is required") | |
405 | 420 | else { | |
406 | - | let | |
407 | - | let | |
408 | - | let | |
409 | - | let | |
410 | - | [("%s%s__assetId__" + | |
421 | + | let bU = value(assetInfo(fromBase58String(ah))) | |
422 | + | let bV = split(bU.description, "_") | |
423 | + | let bf = bk(bV[v]) | |
424 | + | let bX = be(ah, bf) | |
425 | + | [("%s%s__assetId__" + ah), ("%s%s__owner__" + bQ), ("%s%s__warehouse__" + makeString(bD(ag(ah), (bf / n), bX._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(U, ax(ah)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))] | |
411 | 426 | } | |
412 | 427 | ||
413 | 428 | ||
414 | - | @Callable( | |
415 | - | func constructorV1 ( | |
429 | + | @Callable(cd) | |
430 | + | func constructorV1 (T,U,V) = if ((cd.caller != this)) | |
416 | 431 | then throw("permissions denied") | |
417 | - | else [StringEntry( | |
432 | + | else [StringEntry(H(), makeString(["%s%s%s", T, U, V], i))] | |
418 | 433 | ||
419 | 434 | ||
420 | 435 | ||
421 | - | @Callable( | |
422 | - | func walletInfoREADONLY ( | |
436 | + | @Callable(cd) | |
437 | + | func walletInfoREADONLY (aX) = $Tuple2(nil, aW(aX)) | |
423 | 438 | ||
424 | 439 | ||
425 | 440 | ||
426 | - | @Callable( | |
427 | - | func duckByOwnerInfoREADONLY ( | |
428 | - | let | |
429 | - | $Tuple2(nil, if (if (isDefined(addressFromString( | |
430 | - | then isDefined( | |
441 | + | @Callable(cd) | |
442 | + | func duckByOwnerInfoREADONLY (ce) = { | |
443 | + | let cf = getString(T, aa(ce)) | |
444 | + | $Tuple2(nil, if (if (isDefined(addressFromString(ce))) | |
445 | + | then isDefined(cf) | |
431 | 446 | else false) | |
432 | 447 | then { | |
433 | - | let | |
434 | - | | |
448 | + | let af = value(cf) | |
449 | + | bP(af, ce, bO(af)) | |
435 | 450 | } | |
436 | - | else | |
451 | + | else bP("", ce, $Tuple5(-1, "", "", -1, ""))) | |
437 | 452 | } | |
438 | 453 | ||
439 | 454 | ||
440 | 455 | ||
441 | - | @Callable( | |
442 | - | func duckByAssetIdInfoREADONLY ( | |
443 | - | let | |
444 | - | let | |
445 | - | $Tuple2(nil, | |
446 | - | then value( | |
447 | - | else "", | |
456 | + | @Callable(cd) | |
457 | + | func duckByAssetIdInfoREADONLY (af) = { | |
458 | + | let bQ = getString(T, X(af)) | |
459 | + | let bR = bO(af) | |
460 | + | $Tuple2(nil, bP(af, if (isDefined(bQ)) | |
461 | + | then value(bQ) | |
462 | + | else "", bO(af))) | |
448 | 463 | } | |
449 | 464 | ||
450 | 465 | ||
451 | 466 | ||
452 | - | @Callable( | |
453 | - | func landByAssetIdInfoREADONLY ( | |
467 | + | @Callable(cd) | |
468 | + | func landByAssetIdInfoREADONLY (ah) = if ((ah == "")) | |
454 | 469 | then throw("landAssetId is required") | |
455 | 470 | else { | |
456 | - | let | |
457 | - | let | |
458 | - | then value(getString( | |
471 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
472 | + | let bQ = if ((bT > 0)) | |
473 | + | then value(getString(T, ak(ah))) | |
459 | 474 | else "" | |
460 | - | $Tuple2(nil, | |
475 | + | $Tuple2(nil, bS(ah, bQ, bT)) | |
461 | 476 | } | |
462 | 477 | ||
463 | 478 | ||
464 | 479 | ||
465 | - | @Callable( | |
466 | - | func stakedLandsByOwnerInfoREADONLY ( | |
480 | + | @Callable(cd) | |
481 | + | func stakedLandsByOwnerInfoREADONLY (cg) = if ((cg == "")) | |
467 | 482 | then throw("landOwnerAddress is required") | |
468 | 483 | else { | |
469 | - | let | |
470 | - | let | |
471 | - | then split_51C(value( | |
484 | + | let ch = getString(T, av(cg)) | |
485 | + | let ci = if (isDefined(ch)) | |
486 | + | then split_51C(value(ch), "_") | |
472 | 487 | else nil | |
473 | - | func | |
488 | + | func cj (aI,ah) = if ((ah == "")) | |
474 | 489 | then throw("landAssetId is required") | |
475 | 490 | else { | |
476 | - | let | |
477 | - | ( | |
491 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
492 | + | (aI :+ bS(ah, cg, bT)) | |
478 | 493 | } | |
479 | 494 | ||
480 | - | let | |
481 | - | let | |
482 | - | let | |
483 | - | let | |
484 | - | func | |
485 | - | then | |
486 | - | else | |
495 | + | let aM = { | |
496 | + | let aN = ci | |
497 | + | let aO = size(aN) | |
498 | + | let aP = nil | |
499 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
500 | + | then aR | |
501 | + | else cj(aR, aN[aS]) | |
487 | 502 | ||
488 | - | func | |
489 | - | then | |
503 | + | func aT (aR,aS) = if ((aS >= aO)) | |
504 | + | then aR | |
490 | 505 | else throw("List size exceeds 40") | |
491 | 506 | ||
492 | - | aP | |
507 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40) | |
493 | 508 | } | |
494 | - | $Tuple2(nil, | |
509 | + | $Tuple2(nil, aM) | |
495 | 510 | } | |
496 | 511 | ||
497 | 512 | ||
498 | 513 | ||
499 | - | @Callable( | |
500 | - | func landsByIdsInfoREADONLY ( | |
501 | - | func | |
514 | + | @Callable(cd) | |
515 | + | func landsByIdsInfoREADONLY (ck) = { | |
516 | + | func cj (aI,ah) = if ((ah == "")) | |
502 | 517 | then throw("landAssetId is required") | |
503 | 518 | else { | |
504 | - | let | |
505 | - | let | |
506 | - | then value(getString( | |
519 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
520 | + | let bQ = if ((bT > 0)) | |
521 | + | then value(getString(T, ak(ah))) | |
507 | 522 | else "" | |
508 | - | ( | |
523 | + | (aI :+ bS(ah, bQ, bT)) | |
509 | 524 | } | |
510 | 525 | ||
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | func | |
516 | - | then | |
517 | - | else | |
526 | + | let aM = { | |
527 | + | let aN = ck | |
528 | + | let aO = size(aN) | |
529 | + | let aP = nil | |
530 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
531 | + | then aR | |
532 | + | else cj(aR, aN[aS]) | |
518 | 533 | ||
519 | - | func | |
520 | - | then | |
534 | + | func aT (aR,aS) = if ((aS >= aO)) | |
535 | + | then aR | |
521 | 536 | else throw("List size exceeds 40") | |
522 | 537 | ||
523 | - | aP | |
538 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40) | |
524 | 539 | } | |
525 | - | $Tuple2(nil, | |
540 | + | $Tuple2(nil, aM) | |
526 | 541 | } | |
527 | 542 | ||
528 | 543 | ||
529 | 544 | ||
530 | - | @Callable( | |
531 | - | func warehouseOrderByAssetIdInfoREADONLY ( | |
545 | + | @Callable(cd) | |
546 | + | func warehouseOrderByAssetIdInfoREADONLY (ah) = if ((ah == "")) | |
532 | 547 | then throw("landAssetId is required") | |
533 | 548 | else { | |
534 | - | let | |
535 | - | let | |
536 | - | then value(getString( | |
549 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
550 | + | let bQ = if ((bT > 0)) | |
551 | + | then value(getString(T, ak(ah))) | |
537 | 552 | else "" | |
538 | - | $Tuple2(nil, | |
553 | + | $Tuple2(nil, cc(ah, bQ)) | |
539 | 554 | } | |
540 | 555 | ||
541 | 556 | ||
542 | 557 | ||
543 | - | @Callable( | |
544 | - | func ordersByLandIdsInfoREADONLY ( | |
545 | - | func | |
558 | + | @Callable(cd) | |
559 | + | func ordersByLandIdsInfoREADONLY (ck) = { | |
560 | + | func cj (aI,ah) = if ((ah == "")) | |
546 | 561 | then throw("landAssetId is required") | |
547 | 562 | else { | |
548 | - | let | |
549 | - | let | |
550 | - | then value(getString( | |
563 | + | let bT = valueOrElse(getInteger(T, Z(ah)), -1) | |
564 | + | let bQ = if ((bT > 0)) | |
565 | + | then value(getString(T, ak(ah))) | |
551 | 566 | else "" | |
552 | - | ( | |
567 | + | (aI :+ cc(ah, bQ)) | |
553 | 568 | } | |
554 | 569 | ||
555 | - | let | |
556 | - | let | |
557 | - | let | |
558 | - | let | |
559 | - | func | |
560 | - | then | |
561 | - | else | |
570 | + | let aM = { | |
571 | + | let aN = ck | |
572 | + | let aO = size(aN) | |
573 | + | let aP = nil | |
574 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
575 | + | then aR | |
576 | + | else cj(aR, aN[aS]) | |
562 | 577 | ||
563 | - | func | |
564 | - | then | |
578 | + | func aT (aR,aS) = if ((aS >= aO)) | |
579 | + | then aR | |
565 | 580 | else throw("List size exceeds 40") | |
566 | 581 | ||
567 | - | aP | |
582 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40) | |
568 | 583 | } | |
569 | - | $Tuple2(nil, | |
584 | + | $Tuple2(nil, aM) | |
570 | 585 | } | |
571 | 586 | ||
572 | 587 | ||
573 | 588 | ||
574 | - | @Callable( | |
575 | - | func cancelWarehouseOrders ( | |
589 | + | @Callable(cd) | |
590 | + | func cancelWarehouseOrders (ck) = if ((cd.caller != this)) | |
576 | 591 | then throw("permission denied") | |
577 | 592 | else { | |
578 | - | let | |
579 | - | if (if (!(isDefined( | |
593 | + | let cl = getBoolean(T, W()) | |
594 | + | if (if (!(isDefined(cl))) | |
580 | 595 | then true | |
581 | - | else (value( | |
596 | + | else (value(cl) == false)) | |
582 | 597 | then throw("Contracts should be blocked before canceling orders") | |
583 | 598 | else { | |
584 | - | func | |
599 | + | func cj (bU,ah) = if ((ah == "")) | |
585 | 600 | then throw("landAssetId is required") | |
586 | 601 | else { | |
587 | - | let | |
588 | - | if (if ( | |
602 | + | let cm = aD(invoke(U, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", ah], nil)) | |
603 | + | if (if (bU) | |
589 | 604 | then true | |
590 | - | else | |
591 | - | then !(if ( | |
592 | - | then | |
605 | + | else cm) | |
606 | + | then !(if (bU) | |
607 | + | then cm | |
593 | 608 | else false) | |
594 | 609 | else false | |
595 | 610 | } | |
596 | 611 | ||
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | let | |
601 | - | func | |
602 | - | then | |
603 | - | else | |
612 | + | let aM = { | |
613 | + | let aN = ck | |
614 | + | let aO = size(aN) | |
615 | + | let aP = false | |
616 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
617 | + | then aR | |
618 | + | else cj(aR, aN[aS]) | |
604 | 619 | ||
605 | - | func | |
606 | - | then | |
620 | + | func aT (aR,aS) = if ((aS >= aO)) | |
621 | + | then aR | |
607 | 622 | else throw("List size exceeds 30") | |
608 | 623 | ||
609 | - | aP | |
624 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30) | |
610 | 625 | } | |
611 | - | $Tuple2(nil, | |
626 | + | $Tuple2(nil, aM) | |
612 | 627 | } | |
613 | 628 | } | |
614 | 629 | ||
615 | 630 | ||
616 | 631 | ||
617 | - | @Callable( | |
618 | - | func replaceBooleanArtifacts ( | |
632 | + | @Callable(cd) | |
633 | + | func replaceBooleanArtifacts (ck) = if ((cd.caller != this)) | |
619 | 634 | then throw("permission denied") | |
620 | 635 | else { | |
621 | - | func | |
636 | + | func cj (aI,ah) = if ((ah == "")) | |
622 | 637 | then throw("landAssetId is required") | |
623 | - | else if (isDefined(getBoolean( | |
624 | - | then ( | |
625 | - | else | |
638 | + | else if (isDefined(getBoolean(T, au(ah)))) | |
639 | + | then (aI + aB(invoke(T, "replaceBooleanArtifact", [ah], nil))) | |
640 | + | else aI | |
626 | 641 | ||
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | func | |
632 | - | then | |
633 | - | else | |
642 | + | let aM = { | |
643 | + | let aN = ck | |
644 | + | let aO = size(aN) | |
645 | + | let aP = 0 | |
646 | + | func aQ (aR,aS) = if ((aS >= aO)) | |
647 | + | then aR | |
648 | + | else cj(aR, aN[aS]) | |
634 | 649 | ||
635 | - | func | |
636 | - | then | |
650 | + | func aT (aR,aS) = if ((aS >= aO)) | |
651 | + | then aR | |
637 | 652 | else throw("List size exceeds 25") | |
638 | 653 | ||
639 | - | aP | |
654 | + | aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25) | |
640 | 655 | } | |
641 | - | $Tuple2(nil, | |
656 | + | $Tuple2(nil, aM) | |
642 | 657 | } | |
643 | 658 | ||
644 | 659 | ||
645 | 660 | ||
646 | - | @Callable( | |
647 | - | func sendUsdtPrize ( | |
661 | + | @Callable(cd) | |
662 | + | func sendUsdtPrize (ce) = if ((cd.caller != T)) | |
648 | 663 | then throw("permission denied") | |
649 | 664 | else { | |
650 | - | let | |
651 | - | $Tuple2([ScriptTransfer(addressFromStringValue( | |
665 | + | let cn = fraction(assetBalance(this, b), s, e) | |
666 | + | $Tuple2([ScriptTransfer(addressFromStringValue(ce), cn, b)], cn) | |
652 | 667 | } | |
653 | 668 | ||
654 | 669 |
github/deemru/w8io/169f3d6 248.53 ms ◑