tx · 57f5bFh9LMCWZUjnSKMQn8AeV118aXHDqCmnGCDki8Aj

3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy:  -0.02000000 Waves

2023.04.26 21:47 [2551894] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves

{ "type": 13, "id": "57f5bFh9LMCWZUjnSKMQn8AeV118aXHDqCmnGCDki8Aj", "fee": 2000000, "feeAssetId": null, "timestamp": 1682534897446, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "2rnt7X2oiuckZmEYzTwV6qMgvqffbkma6W5FaU6WKLPZKTLgVaxr15iSx4a66aUtexNFWAT9rQvciCLdqoYPWhzt" ], "script": "base64:BgJICAISBQoDCAgIEgMKAQgSBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEYEgMKAQgSAwoBGBIDCgEYPgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZG5Bc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QMJAAACAQFUBQckbWF0Y2gwASD3dur394PKZdtuE+4CO89YKZWpwdGN8kvabNgdYoDI3gkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAMbrwL8XAwkAAAIBAVQFByRtYXRjaDAA8M2JHgkAAgECDVVua25vd24gY2hhaW4ACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sAA1NFUAICX18ACkFSVFBSRVNBTEUCB1BSRVNBTEUAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAlEQVlNSUxMSVMAgLiZKQAGTlVNUkVTAAYABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMACHdoSWR4Vm9sAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAA53aElkeExvY2tlZFZvbAAEAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAARFyZWFkUmVzdENmZ09yRmFpbAAJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwABJnb3Zlcm5hbmNlQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXJfBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCndhcmVIb3VzZV8FC2xhbmRBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAg1sYW5kQXJ0U3RhdHVzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQdhc3NldElkCQCsAgICFHByZXNhbGVBcnRBY3RpdmF0ZWRfBQdhc3NldElkARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBDmtleU9yZGVyQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgpsYW5kT3JkZXJfBQtsYW5kQXNzZXRJZAEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BEmFzTGlzdEludENvbXBhY3RlZAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAp2YWxBbnlMaXN0BQckbWF0Y2gwAwkBAiE9AgkAkAMBBQp2YWxBbnlMaXN0BQZOVU1SRVMJAAIBCQCsAgICDkFycmF5IHNpemUgaXMgCQCkAwEJAJADAQUKdmFsQW55TGlzdAoBBGNvbnYCA2FjYwRpdGVtBAckbWF0Y2gxBQRpdGVtAwkAAQIFByRtYXRjaDECA0ludAQCaXQFByRtYXRjaDEJAM0IAgUDYWNjCQCkAwEFAml0CQACAQIUTGlzdCB0eXBlIGlzIG5vdCBJbnQEAXIKAAIkbAUKdmFsQW55TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEY29udgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfCQACAQIWZmFpbCB0byBjYXN0IGludG8gTGlzdAENYXNTcGxpdFJlc3VsdAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIWKExpc3RbQW55XSwgTGlzdFtBbnldKQQCdDIFByRtYXRjaDAJAJQKAgkBEmFzTGlzdEludENvbXBhY3RlZAEIBQJ0MgJfMQkBEmFzTGlzdEludENvbXBhY3RlZAEIBQJ0MgJfMgkAAgECHmZhaWwgdG8gY2FzdCBpbnRvIChMaXN0LCBMaXN0KQEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAt1c2RuQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC3VzZG5Bc3NldElkAAAJALkJAgkAzAgCAgYlcyVkJWQJAMwIAgIGd2FsbGV0CQDMCAIJAKQDAQgFB2JhbGFuY2UJYXZhaWxhYmxlCQDMCAIJAKQDAQULdXNkbkJhbGFuY2UFA25pbAUDU0VQAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQELdmFsdWVPckVsc2UCCQCbCAIFD3N0YWtpbmdDb250cmFjdAkBH2tleVByZXNhbGVBcnRBY3RpdmF0ZWRCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAcFBnBpZWNlcwAACQCVCgMFCmluZnJhTGV2ZWwFCWFydFBpZWNlcwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCmluZnJhTGV2ZWwABAkAawMFD0RBSUxZUkVTQllQSUVDRQkAaAIFCWFydFBpZWNlcwADCQBoAgUGcGllY2VzABQBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBDGdldFdhcmVob3VzZQMFd2hLZXkJbGFuZEluZGV4CmluZnJhTGV2ZWwECXZvbFByZWZpeAkArAICCQCsAgIJAKQDAQUJbGFuZEluZGV4AgFfCQCkAwEFCmluZnJhTGV2ZWwEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowAgE6CQDMCAIJAJEDAgUBcAUId2hJZHhWb2wJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCHdoSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJd2hJZHhQcm9kCQDMCAIDCQBmAgAFCQCQAwEFAXACATAJAJEDAgUBcAUOd2hJZHhMb2NrZWRWb2wFA25pbAENZHVja0luZm9UdXBsZQELZHVja0Fzc2V0SWQJAJcKBQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULZHVja0Fzc2V0SWQA////////////AQgJAQV2YWx1ZQEJAOwHAQkA2QQBBQtkdWNrQXNzZXRJZARuYW1lCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkAgAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAP///////////wEJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhNnZXRCYWNrcGFja1JFQURPTkxZCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENZHVja0luZm9BcnJheQMLZHVja0Fzc2V0SWQFb3duZXIHZHVja0luZgkAzAgCCQCsAgICDyVzJXNfX2Fzc2V0SWRfXwULZHVja0Fzc2V0SWQJAMwIAgkArAICAg0lcyVzX19vd25lcl9fBQVvd25lcgkAzAgCCQCsAgICEiVzJWRfX3N0YWtlZFRpbWVfXwkApAMBCAUHZHVja0luZgJfMQkAzAgCCQCsAgICDCVzJXNfX25hbWVfXwgFB2R1Y2tJbmYCXzIJAMwIAgkArAICAhAlcyVzX19sb2NhdGlvbl9fCAUHZHVja0luZgJfMwkAzAgCCQCsAgICDiVzJWRfX2hlYWx0aF9fCQCkAwEIBQdkdWNrSW5mAl80CQDMCAIJAKwCAgIQJXMlc19fYmFja1BhY2tfXwgFB2R1Y2tJbmYCXzUFA25pbAENbGFuZEluZm9BcnJheQMLbGFuZEFzc2V0SWQFb3duZXIKc3Rha2VkVGltZQMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQHbGFuZE51bQMJAGYCCAUBYQhxdWFudGl0eQAACQCRAwIFAWQFCnJlY0xhbmROdW0JAKwCAgIBLQkAkQMCBQFkBQpyZWNMYW5kTnVtBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUKc3Rha2VkVGltZQQIYXZhaWxSZXMDCQBmAgUKc3Rha2VkVGltZQAACQBrAwUJZGVsdGFUaW1lCQBoAggFDHByb2R1Y3Rpdml0eQJfMwUGcGllY2VzBQlEQVlNSUxMSVMAAAQHbmVlZE1hdAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzCQBkAggFDHByb2R1Y3Rpdml0eQJfMQABBQVTU0laRQQOZ2xvYmFsQW5kTG9jYWwDCQBmAgUKc3Rha2VkVGltZQAACQENYXNTcGxpdFJlc3VsdAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AiRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkJAMwIAgUHbmVlZE1hdAkAzAgCBQhhdmFpbFJlcwkAzAgCCQCRAwIFAWQFC3JlY1RlcnJhaW5zBQNuaWwFA25pbAkAlAoCCQESYXNMaXN0SW50Q29tcGFjdGVkAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkJAMwIAgUHbmVlZE1hdAUDbmlsBQNuaWwCAAkAzAgCCQCsAgICDyVzJXNfX2Fzc2V0SWRfXwULbGFuZEFzc2V0SWQJAMwIAgkArAICAg0lcyVzX19vd25lcl9fBQVvd25lcgkAzAgCCQCsAgICEiVzJWRfX3N0YWtlZFRpbWVfXwkApAMBBQpzdGFrZWRUaW1lCQDMCAIJAKwCAgITJXMlc19fZGVzY3JpcHRpb25fXwkAuQkCCQDMCAIFB2xhbmROdW0JAMwIAgkAkQMCBQFkBQtyZWNMYW5kU2l6ZQkAzAgCCQCRAwIFAWQFC3JlY1RlcnJhaW5zCQDMCAIJAJEDAgUBZAUMcmVjQ29udGluZW50BQNuaWwCAV8JAMwIAgkArAICAhIlcyVkX19pbmZyYUxldmVsX18JAKQDAQgFDHByb2R1Y3Rpdml0eQJfMQkAzAgCCQCsAgICFiVzJXNfX2F2YWlsUmVzQnlUeXBlX18IBQ5nbG9iYWxBbmRMb2NhbAJfMgkAzAgCCQCsAgICFSVzJWRfX2F2YWlsUmVzVG90YWxfXwkApAMBBQhhdmFpbFJlcwkAzAgCCQCsAgICFCVzJXNfX25lZWRNYXRlcmlhbF9fCAUOZ2xvYmFsQW5kTG9jYWwCXzEJAMwIAgkAuQkCCQDMCAICBCVzJXMJAMwIAgINbGFuZEFydGVmYWN0cwkAzAgCCQCsAgICCFBSRVNBTEU6CQCkAwEIBQxwcm9kdWN0aXZpdHkCXzIFA25pbAUDU0VQCQDMCAIJAKwCAgIRJXMlc19fd2FyZWhvdXNlX18JALkJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkAaQIFBnBpZWNlcwUFU1NJWkUIBQxwcm9kdWN0aXZpdHkCXzECAToJAMwIAgkArAICAhElcyVzX19sYW5kT3JkZXJfXwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkAjAwQDBfMEAwXzBAMF8wQDBfMEAwXzBAMDowQDBfMEAwXzBAMF8wQDBfMEAwXzBAMDoFA25pbAESbGFuZE9yZGVySW5mb0FycmF5AgtsYW5kQXNzZXRJZAVvd25lcgMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwkAzAgCCQCsAgICDyVzJXNfX2Fzc2V0SWRfXwULbGFuZEFzc2V0SWQJAMwIAgkArAICAg0lcyVzX19vd25lcl9fBQVvd25lcgkAzAgCCQCsAgICESVzJXNfX3dhcmVob3VzZV9fCQC5CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAGkCBQZwaWVjZXMFBVNTSVpFCAUMcHJvZHVjdGl2aXR5Al8xAgE6CQDMCAIJAKwCAgIRJXMlc19fbGFuZE9yZGVyX18JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAIwMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6MEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6BQNuaWwNAWkBDWNvbnN0cnVjdG9yVjEDD3N0YWtpbmdDb250cmFjdA9lY29ub215Q29udHJhY3QSZ292ZXJuYW5jZUNvbnRyYWN0AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEmdvdmVybmFuY2VDb250cmFjdAUDbmlsBQNTRVAFA25pbAFpARJ3YWxsZXRJbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0CQCUCgIFA25pbAkBDndhbGxldEludGVybmFsAQUOdXNlckFkZHJlc3NPcHQBaQEQZHVja0luZm9SRUFET05MWQILZHVja0Fzc2V0SWQOdXNlckFkZHJlc3NPcHQEBGFkZHIJAKYIAQUOdXNlckFkZHJlc3NPcHQECWR1Y2tBc3NldAkA2QQBBQtkdWNrQXNzZXRJZAMJAAACBQtkdWNrQXNzZXRJZAIACQACAQIXZHVja0Fzc2V0SWQgaXMgcmVxdWlyZWQECWR1Y2tPd25lcgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQEBW93bmVyAwkBCWlzRGVmaW5lZAEFCWR1Y2tPd25lcgkBBXZhbHVlAQUJZHVja093bmVyAwMJAQlpc0RlZmluZWQBBQRhZGRyCQAAAgkA8AcCCQEFdmFsdWUBBQRhZGRyBQlkdWNrQXNzZXQAAQcFDnVzZXJBZGRyZXNzT3B0AgAJAJQKAgUDbmlsCQCUCgIJAQ1kdWNrSW5mb0FycmF5AwULZHVja0Fzc2V0SWQFBW93bmVyCQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkCQEOd2FsbGV0SW50ZXJuYWwBBQ51c2VyQWRkcmVzc09wdAFpARBsYW5kSW5mb1JFQURPTkxZAgtsYW5kQXNzZXRJZA51c2VyQWRkcmVzc09wdAQEYWRkcgkApggBBQ51c2VyQWRkcmVzc09wdAQJbGFuZEFzc2V0CQDZBAEFC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAwMJAQlpc0RlZmluZWQBBQRhZGRyCQAAAgkA8AcCCQEFdmFsdWUBBQRhZGRyBQlsYW5kQXNzZXQAAQcFDnVzZXJBZGRyZXNzT3B0AgAECnN0YWtlZER1Y2sJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQ51c2VyQWRkcmVzc09wdAQHZHVja0luZgMDCQEJaXNEZWZpbmVkAQUEYWRkcgkBCWlzRGVmaW5lZAEFCnN0YWtlZER1Y2sHBAtkdWNrQXNzZXRJZAkBBXZhbHVlAQUKc3Rha2VkRHVjawkAlAoCBQtkdWNrQXNzZXRJZAkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAkAlAoCAgAJAJcKBQD///////////8BAgACAAD///////////8BAgAJAJQKAgUDbmlsCQCVCgMJAQ1sYW5kSW5mb0FycmF5AwULbGFuZEFzc2V0SWQFBW93bmVyBQpzdGFrZWRUaW1lCQENZHVja0luZm9BcnJheQMIBQdkdWNrSW5mAl8xBQ51c2VyQWRkcmVzc09wdAgFB2R1Y2tJbmYCXzIJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AWkBF3N0YWtlZExhbmRzSW5mb1JFQURPTkxZAglteUFkZHJlc3MQbGFuZE93bmVyQWRkcmVzcwMJAAACBRBsYW5kT3duZXJBZGRyZXNzAgAJAAIBAhxsYW5kT3duZXJBZGRyZXNzIGlzIHJlcXVpcmVkBAZteUFkZHIJAKYIAQUJbXlBZGRyZXNzBAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBRBsYW5kT3duZXJBZGRyZXNzBAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkBAlsYW5kQXNzZXQJANkEAQULbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAVkZXNjcggJAQV2YWx1ZQEJAOwHAQUJbGFuZEFzc2V0C2Rlc2NyaXB0aW9uBAFkCQC1CQIFBWRlc2NyAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUKc3Rha2VkVGltZQQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCCAUMcHJvZHVjdGl2aXR5Al8zBQZwaWVjZXMFCURBWU1JTExJUwkAzQgCBQNhY2MJAMwIAgkArAICAhMlcyVzX19sYW5kQXNzZXRJZF9fBQtsYW5kQXNzZXRJZAkAzAgCCQCsAgICEiVzJWRfX3N0YWtlZFRpbWVfXwkApAMBBQpzdGFrZWRUaW1lCQDMCAIJAKwCAgITJXMlc19fZGVzY3JpcHRpb25fXwUFZGVzY3IJAMwIAgkArAICAhIlcyVkX19pbmZyYUxldmVsX18JAKQDAQgFDHByb2R1Y3Rpdml0eQJfMQkAzAgCCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg1sYW5kQXJ0ZWZhY3RzCQDMCAIJAKwCAgIIUFJFU0FMRToJAKQDAQgFDHByb2R1Y3Rpdml0eQJfMgUDbmlsBQNTRVAJAMwIAgkArAICAhAlcyVzX19hdmFpbFJlc19fCQCkAwEFCGF2YWlsUmVzBQNuaWwEAXIKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkBApzdGFrZWREdWNrCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUJbXlBZGRyZXNzBAdkdWNrSW5mAwMJAQlpc0RlZmluZWQBBQZteUFkZHIJAQlpc0RlZmluZWQBBQpzdGFrZWREdWNrBwQLZHVja0Fzc2V0SWQJAQV2YWx1ZQEFCnN0YWtlZER1Y2sJAJQKAgULZHVja0Fzc2V0SWQJAQ1kdWNrSW5mb1R1cGxlAQULZHVja0Fzc2V0SWQJAJQKAgIACQCXCgUA////////////AQIAAgAA////////////AQIACQCUCgIFA25pbAkAlQoDBQFyCQENZHVja0luZm9BcnJheQMIBQdkdWNrSW5mAl8xBQlteUFkZHJlc3MIBQdkdWNrSW5mAl8yCQEOd2FsbGV0SW50ZXJuYWwBBQlteUFkZHJlc3MBaQEXZHVja0J5T3duZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBApzdGFrZWREdWNrCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQULdXNlckFkZHJlc3MJAJQKAgUDbmlsAwMJAQlpc0RlZmluZWQBCQCmCAEFC3VzZXJBZGRyZXNzCQEJaXNEZWZpbmVkAQUKc3Rha2VkRHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQpzdGFrZWREdWNrCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkBQt1c2VyQWRkcmVzcwkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAkBDWR1Y2tJbmZvQXJyYXkDAgAFC3VzZXJBZGRyZXNzCQCXCgUA////////////AQIAAgAA////////////AQIAAWkBGWR1Y2tCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2R1Y2tBc3NldElkBAVvd25lcgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQEB2R1Y2tJbmYJAQ1kdWNrSW5mb1R1cGxlAQULZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkAwkBCWlzRGVmaW5lZAEFBW93bmVyCQEFdmFsdWUBBQVvd25lcgIACQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkAWkBGWxhbmRCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAJQKAgUDbmlsCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQFpAR5zdGFrZWRMYW5kc0J5T3duZXJJbmZvUkVBRE9OTFkBEGxhbmRPd25lckFkZHJlc3MDCQAAAgUQbGFuZE93bmVyQWRkcmVzcwIACQACAQIcbGFuZE93bmVyQWRkcmVzcyBpcyByZXF1aXJlZAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUQbGFuZE93bmVyQWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBRBsYW5k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ZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIFA25pbAUBcgFpASN3YXJlaG91c2VPcmRlckJ5QXNzZXRJZEluZm9SRUFET05MWQELbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAD///////////8BBAVvd25lcgMJAGYCBQpzdGFrZWRUaW1lAAAJAQV2YWx1ZQEJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQCAAkAlAoCBQNuaWwJARJsYW5kT3JkZXJJbmZvQXJyYXkCBQtsYW5kQXNzZXRJZAUFb3duZXIBaQEbb3JkZXJzQnlMYW5kSWRzSW5mb1JFQURPTkxZAQxsYW5kQXNzZXRJZHMKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAD///////////8BBAVvd25lcgMJAGYCBQpzdGFrZWRUaW1lAAAJAQV2YWx1ZQEJAJ0IAgUPc3Rh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", "height": 2551894, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CCEvPPU2hb9hKx6ngWwq5aAtVwRCgtd8HBEj8xPxvgoP Next: BiMHKzEsQvnkPm4rLVzyJtF2MqzNqH4kKpVyhiTEo3bn Diff:
OldNewDifferences
8989
9090 let M = H(I, B)
9191
92-func N (O) = ("duckOwner_" + O)
92+func N () = "contractsBlocked"
9393
9494
95-func P (O) = ("stakedTime_" + O)
95+func O (P) = ("duckOwner_" + P)
9696
9797
98-func Q (R) = ("stakedDuckByOwner_" + R)
98+func Q (P) = ("stakedTime_" + P)
9999
100100
101-func S (T,O,R) = ((((("stakedTimeByTypeAssetIdAndOwner_" + T) + "_") + O) + "_") + R)
101+func R (S) = ("stakedDuckByOwner_" + S)
102102
103103
104-func U (V) = ("backPack_" + V)
104+func T (U,P,S) = ((((("stakedTimeByTypeAssetIdAndOwner_" + U) + "_") + P) + "_") + S)
105105
106106
107-func W (X) = ("wareHouse_" + X)
107+func V (W) = ("backPack_" + W)
108108
109109
110-func Y (V) = ("duckLocation_" + V)
110+func X (Y) = ("wareHouse_" + Y)
111111
112112
113-func Z (V) = ("duckHealth_" + V)
113+func Z (W) = ("duckLocation_" + W)
114114
115115
116-func aa (O) = ("nftOwner_" + O)
116+func aa (W) = ("duckHealth_" + W)
117117
118118
119-func ab (O) = ("infraLevel_" + O)
119+func ab (P) = ("nftOwner_" + P)
120120
121121
122-func ac (ad,O) = makeString(["landArtStatus", ad, O], "_")
122+func ac (P) = ("infraLevel_" + P)
123123
124124
125-func ae (O) = ("presaleArtActivated_" + O)
125+func ad (ae,P) = makeString(["landArtStatus", ae, P], "_")
126126
127127
128-func af (R) = ("stakedLandsByOwner_" + R)
128+func af (P) = ("presaleArtActivated_" + P)
129129
130130
131-func ag (X) = ("landOrder_" + X)
131+func ag (S) = ("stakedLandsByOwner_" + S)
132132
133133
134-func ah (ai) = {
135- let c = ai
134+func ah (Y) = ("landOrder_" + Y)
135+
136+
137+func ai (aj) = {
138+ let c = aj
136139 if ($isInstanceOf(c, "String"))
137140 then {
138- let aj = c
139- aj
141+ let ak = c
142+ ak
140143 }
141144 else throw("fail to cast into String")
142145 }
143146
144147
145-func ak (al) = {
146- let c = al
148+func al (aj) = {
149+ let c = aj
150+ if ($isInstanceOf(c, "Boolean"))
151+ then {
152+ let ak = c
153+ ak
154+ }
155+ else throw("fail to cast into Boolean")
156+ }
157+
158+
159+func am (an) = {
160+ let c = an
147161 if ($isInstanceOf(c, "List[Any]"))
148162 then {
149- let am = c
150- if ((size(am) != k))
151- then throw(("Array size is " + toString(size(am))))
163+ let ao = c
164+ if ((size(ao) != k))
165+ then throw(("Array size is " + toString(size(ao))))
152166 else {
153- func an (ao,ap) = {
154- let aq = ap
155- if ($isInstanceOf(aq, "Int"))
167+ func ap (aq,ar) = {
168+ let as = ar
169+ if ($isInstanceOf(as, "Int"))
156170 then {
157- let ar = aq
158- (ao :+ toString(ar))
171+ let at = as
172+ (aq :+ toString(at))
159173 }
160174 else throw("List type is not Int")
161175 }
162176
163- let as = {
164- let at = am
165- let au = size(at)
166- let av = nil
167- func aw (ax,ay) = if ((ay >= au))
168- then ax
169- else an(ax, at[ay])
177+ let au = {
178+ let av = ao
179+ let aw = size(av)
180+ let ax = nil
181+ func ay (az,aA) = if ((aA >= aw))
182+ then az
183+ else ap(az, av[aA])
170184
171- func az (ax,ay) = if ((ay >= au))
172- then ax
185+ func aB (az,aA) = if ((aA >= aw))
186+ then az
173187 else throw("List size exceeds 6")
174188
175- az(aw(aw(aw(aw(aw(aw(av, 0), 1), 2), 3), 4), 5), 6)
189+ aB(ay(ay(ay(ay(ay(ay(ax, 0), 1), 2), 3), 4), 5), 6)
176190 }
177- makeString(as, "_")
191+ makeString(au, "_")
178192 }
179193 }
180194 else throw("fail to cast into List")
181195 }
182196
183197
184-func aA (al) = {
185- let c = al
198+func aC (an) = {
199+ let c = an
186200 if ($isInstanceOf(c, "(List[Any], List[Any])"))
187201 then {
188- let aB = c
189- $Tuple2(ak(aB._1), ak(aB._2))
202+ let aD = c
203+ $Tuple2(am(aD._1), am(aD._2))
190204 }
191205 else throw("fail to cast into (List, List)")
192206 }
193207
194208
195-func aC (aD) = {
196- let aE = addressFromString(aD)
197- let aF = if (isDefined(aE))
198- then wavesBalance(value(aE))
209+func aE (aF) = {
210+ let aG = addressFromString(aF)
211+ let aH = if (isDefined(aG))
212+ then wavesBalance(value(aG))
199213 else BalanceDetails(0, 0, 0, 0)
200- let aG = if (isDefined(aE))
201- then assetBalance(value(aE), b)
214+ let aI = if (isDefined(aG))
215+ then assetBalance(value(aG), b)
202216 else 0
203- makeString(["%s%d%d", "wallet", toString(aF.available), toString(aG)], g)
217+ makeString(["%s%d%d", "wallet", toString(aH.available), toString(aI)], g)
204218 }
205219
206220
207-func aH (X,aI) = {
208- let aJ = valueOrElse(getInteger(K, ab(X)), 0)
209- let aK = valueOrElse(getInteger(K, ac(h, X)), if (valueOrElse(getBoolean(K, ae(X)), false))
210- then aI
221+func aJ (Y,aK) = {
222+ let aL = valueOrElse(getInteger(K, ac(Y)), 0)
223+ let aM = valueOrElse(getInteger(K, ad(h, Y)), if (valueOrElse(getBoolean(K, af(Y)), false))
224+ then aK
211225 else 0)
212- $Tuple3(aJ, aK, ((i + fraction(i, aJ, 4)) + fraction(i, (aK * 3), (aI * 20))))
226+ $Tuple3(aL, aM, ((i + fraction(i, aL, 4)) + fraction(i, (aM * 3), (aK * 20))))
213227 }
214228
215229
216-func aL (aM) = {
217- let c = aM
230+func aN (aO) = {
231+ let c = aO
218232 if (("S" == c))
219233 then l
220234 else if (("M" == c))
229243 }
230244
231245
232-func aN (aO,aP,aJ) = {
233- let aQ = ((toString(aP) + "_") + toString(aJ))
234- let aR = split(valueOrElse(getString(K, aO), (aQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0")), ":")
235-[aR[u], if ((size(split(aR[v], "_")) == k))
236- then aR[v]
237- else "0_0_0_0_0_0", if ((size(split(aR[w], "_")) == k))
238- then aR[w]
239- else "0_0_0_0_0_0", aR[x], if ((5 > size(aR)))
246+func aP (aQ,aR,aL) = {
247+ let aS = ((toString(aR) + "_") + toString(aL))
248+ let aT = split(valueOrElse(getString(K, aQ), (aS + ":0_0_0_0_0_0:0_0_0_0_0_0::0")), ":")
249+[aT[u], if ((size(split(aT[v], "_")) == k))
250+ then aT[v]
251+ else "0_0_0_0_0_0", if ((size(split(aT[w], "_")) == k))
252+ then aT[w]
253+ else "0_0_0_0_0_0", aT[x], if ((5 > size(aT)))
240254 then "0"
241- else aR[y]]
255+ else aT[y]]
242256 }
243257
244258
245-func aS (V) = $Tuple5(valueOrElse(getInteger(K, P(V)), -1), value(assetInfo(fromBase58String(V))).name, valueOrElse(getString(K, Y(V)), ""), valueOrElse(getInteger(K, Z(V)), -1), ah(invoke(K, "getBackpackREADONLY", [V], nil)))
259+func aU (W) = $Tuple5(valueOrElse(getInteger(K, Q(W)), -1), value(assetInfo(fromBase58String(W))).name, valueOrElse(getString(K, Z(W)), ""), valueOrElse(getInteger(K, aa(W)), -1), ai(invoke(K, "getBackpackREADONLY", [W], nil)))
246260
247261
248-func aT (V,aU,aV) = [("%s%s__assetId__" + V), ("%s%s__owner__" + aU), ("%s%d__stakedTime__" + toString(aV._1)), ("%s%s__name__" + aV._2), ("%s%s__location__" + aV._3), ("%s%d__health__" + toString(aV._4)), ("%s%s__backPack__" + aV._5)]
262+func aV (W,aW,aX) = [("%s%s__assetId__" + W), ("%s%s__owner__" + aW), ("%s%d__stakedTime__" + toString(aX._1)), ("%s%s__name__" + aX._2), ("%s%s__location__" + aX._3), ("%s%d__health__" + toString(aX._4)), ("%s%s__backPack__" + aX._5)]
249263
250264
251-func aW (X,aU,aX) = if ((X == ""))
265+func aY (Y,aW,aZ) = if ((Y == ""))
252266 then throw("landAssetId is required")
253267 else {
254- let aY = value(assetInfo(fromBase58String(X)))
255- let aZ = split(aY.description, "_")
256- let ba = if ((aY.quantity > 0))
257- then aZ[q]
258- else ("-" + aZ[q])
259- let aI = aL(aZ[r])
260- let bb = aH(X, aI)
261- let bc = (lastBlock.timestamp - aX)
262- let bd = if ((aX > 0))
263- then fraction(bc, (bb._3 * aI), j)
268+ let ba = value(assetInfo(fromBase58String(Y)))
269+ let bb = split(ba.description, "_")
270+ let bc = if ((ba.quantity > 0))
271+ then bb[q]
272+ else ("-" + bb[q])
273+ let aK = aN(bb[r])
274+ let bd = aJ(Y, aK)
275+ let be = (lastBlock.timestamp - aZ)
276+ let bf = if ((aZ > 0))
277+ then fraction(be, (bd._3 * aK), j)
264278 else 0
265- let be = fraction(d, (aI * (bb._1 + 1)), l)
266- let bf = if ((aX > 0))
267- then aA(invoke(K, "splitByGlobalAndLocalWeightsREADONLY", [be, bd, aZ[s]], nil))
268- else $Tuple2(ak(invoke(K, "splitByGlobalWeightsREADONLY", [be], nil)), "")
269-[("%s%s__assetId__" + X), ("%s%s__owner__" + aU), ("%s%d__stakedTime__" + toString(aX)), ("%s%s__description__" + makeString([ba, aZ[r], aZ[s], aZ[t]], "_")), ("%s%d__infraLevel__" + toString(bb._1)), ("%s%s__availResByType__" + bf._2), ("%s%d__availResTotal__" + toString(bd)), ("%s%s__needMaterial__" + bf._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bb._2))], g), ("%s%s__warehouse__" + makeString(aN(W(X), (aI / l), bb._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ag(X)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
279+ let bg = fraction(d, (aK * (bd._1 + 1)), l)
280+ let bh = if ((aZ > 0))
281+ then aC(invoke(K, "splitByGlobalAndLocalWeightsREADONLY", [bg, bf, bb[s]], nil))
282+ else $Tuple2(am(invoke(K, "splitByGlobalWeightsREADONLY", [bg], nil)), "")
283+[("%s%s__assetId__" + Y), ("%s%s__owner__" + aW), ("%s%d__stakedTime__" + toString(aZ)), ("%s%s__description__" + makeString([bc, bb[r], bb[s], bb[t]], "_")), ("%s%d__infraLevel__" + toString(bd._1)), ("%s%s__availResByType__" + bh._2), ("%s%d__availResTotal__" + toString(bf)), ("%s%s__needMaterial__" + bh._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bd._2))], g), ("%s%s__warehouse__" + makeString(aP(X(Y), (aK / l), bd._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ah(Y)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
270284 }
271285
272286
273-func bg (X,aU) = if ((X == ""))
287+func bi (Y,aW) = if ((Y == ""))
274288 then throw("landAssetId is required")
275289 else {
276- let aY = value(assetInfo(fromBase58String(X)))
277- let aZ = split(aY.description, "_")
278- let aI = aL(aZ[r])
279- let bb = aH(X, aI)
280-[("%s%s__assetId__" + X), ("%s%s__owner__" + aU), ("%s%s__warehouse__" + makeString(aN(W(X), (aI / l), bb._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ag(X)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
290+ let ba = value(assetInfo(fromBase58String(Y)))
291+ let bb = split(ba.description, "_")
292+ let aK = aN(bb[r])
293+ let bd = aJ(Y, aK)
294+[("%s%s__assetId__" + Y), ("%s%s__owner__" + aW), ("%s%s__warehouse__" + makeString(aP(X(Y), (aK / l), bd._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ah(Y)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
281295 }
282296
283297
284-@Callable(bh)
285-func constructorV1 (K,L,M) = if ((bh.caller != this))
298+@Callable(bj)
299+func constructorV1 (K,L,M) = if ((bj.caller != this))
286300 then throw("permissions denied")
287301 else [StringEntry(z(), makeString(["%s%s%s", K, L, M], g))]
288302
289303
290304
291-@Callable(bh)
292-func walletInfoREADONLY (aD) = $Tuple2(nil, aC(aD))
305+@Callable(bj)
306+func walletInfoREADONLY (aF) = $Tuple2(nil, aE(aF))
293307
294308
295309
296-@Callable(bh)
297-func duckInfoREADONLY (V,aD) = {
298- let aE = addressFromString(aD)
299- let bi = fromBase58String(V)
300- if ((V == ""))
310+@Callable(bj)
311+func duckInfoREADONLY (W,aF) = {
312+ let aG = addressFromString(aF)
313+ let bk = fromBase58String(W)
314+ if ((W == ""))
301315 then throw("duckAssetId is required")
302316 else {
303- let bj = getString(K, N(V))
304- let aU = if (isDefined(bj))
305- then value(bj)
306- else if (if (isDefined(aE))
307- then (assetBalance(value(aE), bi) == 1)
317+ let bl = getString(K, O(W))
318+ let aW = if (isDefined(bl))
319+ then value(bl)
320+ else if (if (isDefined(aG))
321+ then (assetBalance(value(aG), bk) == 1)
308322 else false)
309- then aD
323+ then aF
310324 else ""
311- $Tuple2(nil, $Tuple2(aT(V, aU, aS(V)), aC(aD)))
325+ $Tuple2(nil, $Tuple2(aV(W, aW, aU(W)), aE(aF)))
312326 }
313327 }
314328
315329
316330
317-@Callable(bh)
318-func landInfoREADONLY (X,aD) = {
319- let aE = addressFromString(aD)
320- let bk = fromBase58String(X)
321- if ((X == ""))
331+@Callable(bj)
332+func landInfoREADONLY (Y,aF) = {
333+ let aG = addressFromString(aF)
334+ let bm = fromBase58String(Y)
335+ if ((Y == ""))
322336 then throw("landAssetId is required")
323337 else {
324- let aX = valueOrElse(getInteger(K, P(X)), 0)
325- let aU = if ((aX > 0))
326- then value(getString(K, aa(X)))
327- else if (if (isDefined(aE))
328- then (assetBalance(value(aE), bk) == 1)
338+ let aZ = valueOrElse(getInteger(K, Q(Y)), 0)
339+ let aW = if ((aZ > 0))
340+ then value(getString(K, ab(Y)))
341+ else if (if (isDefined(aG))
342+ then (assetBalance(value(aG), bm) == 1)
329343 else false)
330- then aD
344+ then aF
331345 else ""
332- let bl = getString(K, Q(aD))
333- let aV = if (if (isDefined(aE))
334- then isDefined(bl)
346+ let bn = getString(K, R(aF))
347+ let aX = if (if (isDefined(aG))
348+ then isDefined(bn)
335349 else false)
336350 then {
337- let V = value(bl)
338- $Tuple2(V, aS(V))
351+ let W = value(bn)
352+ $Tuple2(W, aU(W))
339353 }
340354 else $Tuple2("", $Tuple5(-1, "", "", -1, ""))
341- $Tuple2(nil, $Tuple3(aW(X, aU, aX), aT(aV._1, aD, aV._2), aC(aD)))
355+ $Tuple2(nil, $Tuple3(aY(Y, aW, aZ), aV(aX._1, aF, aX._2), aE(aF)))
342356 }
343357 }
344358
345359
346360
347-@Callable(bh)
348-func stakedLandsInfoREADONLY (bm,bn) = if ((bn == ""))
361+@Callable(bj)
362+func stakedLandsInfoREADONLY (bo,bp) = if ((bp == ""))
349363 then throw("landOwnerAddress is required")
350364 else {
351- let bo = addressFromString(bm)
352- let bp = getString(K, af(bn))
353- let bq = if (isDefined(bp))
354- then split_51C(value(bp), "_")
365+ let bq = addressFromString(bo)
366+ let br = getString(K, ag(bp))
367+ let bs = if (isDefined(br))
368+ then split_51C(value(br), "_")
355369 else nil
356- func br (ao,X) = {
357- let bk = fromBase58String(X)
358- if ((X == ""))
370+ func bt (aq,Y) = {
371+ let bm = fromBase58String(Y)
372+ if ((Y == ""))
359373 then throw("landAssetId is required")
360374 else {
361- let aX = valueOrElse(getInteger(K, P(X)), 0)
362- let bs = value(assetInfo(bk)).description
363- let aZ = split(bs, "_")
364- let aI = aL(aZ[r])
365- let bb = aH(X, aI)
366- let bc = (lastBlock.timestamp - aX)
367- let bd = fraction(bc, (bb._3 * aI), j)
368- (ao :+ [("%s%s__landAssetId__" + X), ("%s%d__stakedTime__" + toString(aX)), ("%s%s__description__" + bs), ("%s%d__infraLevel__" + toString(bb._1)), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bb._2))], g), ("%s%s__availRes__" + toString(bd))])
375+ let aZ = valueOrElse(getInteger(K, Q(Y)), 0)
376+ let bu = value(assetInfo(bm)).description
377+ let bb = split(bu, "_")
378+ let aK = aN(bb[r])
379+ let bd = aJ(Y, aK)
380+ let be = (lastBlock.timestamp - aZ)
381+ let bf = fraction(be, (bd._3 * aK), j)
382+ (aq :+ [("%s%s__landAssetId__" + Y), ("%s%d__stakedTime__" + toString(aZ)), ("%s%s__description__" + bu), ("%s%d__infraLevel__" + toString(bd._1)), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bd._2))], g), ("%s%s__availRes__" + toString(bf))])
369383 }
370384 }
371385
372- let as = {
373- let at = bq
374- let au = size(at)
375- let av = nil
376- func aw (ax,ay) = if ((ay >= au))
377- then ax
378- else br(ax, at[ay])
386+ let au = {
387+ let av = bs
388+ let aw = size(av)
389+ let ax = nil
390+ func ay (az,aA) = if ((aA >= aw))
391+ then az
392+ else bt(az, av[aA])
379393
380- func az (ax,ay) = if ((ay >= au))
381- then ax
394+ func aB (az,aA) = if ((aA >= aw))
395+ then az
382396 else throw("List size exceeds 100")
383397
384- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
398+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
385399 }
386- let bl = getString(K, Q(bm))
387- let aV = if (if (isDefined(bo))
388- then isDefined(bl)
400+ let bn = getString(K, R(bo))
401+ let aX = if (if (isDefined(bq))
402+ then isDefined(bn)
389403 else false)
390404 then {
391- let V = value(bl)
392- $Tuple2(V, aS(V))
405+ let W = value(bn)
406+ $Tuple2(W, aU(W))
393407 }
394408 else $Tuple2("", $Tuple5(-1, "", "", -1, ""))
395- $Tuple2(nil, $Tuple3(as, aT(aV._1, bm, aV._2), aC(bm)))
409+ $Tuple2(nil, $Tuple3(au, aV(aX._1, bo, aX._2), aE(bo)))
396410 }
397411
398412
399413
400-@Callable(bh)
401-func duckByOwnerInfoREADONLY (bt) = {
402- let bl = getString(K, Q(bt))
403- $Tuple2(nil, if (if (isDefined(addressFromString(bt)))
404- then isDefined(bl)
414+@Callable(bj)
415+func duckByOwnerInfoREADONLY (bv) = {
416+ let bn = getString(K, R(bv))
417+ $Tuple2(nil, if (if (isDefined(addressFromString(bv)))
418+ then isDefined(bn)
405419 else false)
406420 then {
407- let V = value(bl)
408- aT(V, bt, aS(V))
421+ let W = value(bn)
422+ aV(W, bv, aU(W))
409423 }
410- else aT("", bt, $Tuple5(-1, "", "", -1, "")))
424+ else aV("", bv, $Tuple5(-1, "", "", -1, "")))
411425 }
412426
413427
414428
415-@Callable(bh)
416-func duckByAssetIdInfoREADONLY (V) = {
417- let aU = getString(K, N(V))
418- let aV = aS(V)
419- $Tuple2(nil, aT(V, if (isDefined(aU))
420- then value(aU)
421- else "", aS(V)))
429+@Callable(bj)
430+func duckByAssetIdInfoREADONLY (W) = {
431+ let aW = getString(K, O(W))
432+ let aX = aU(W)
433+ $Tuple2(nil, aV(W, if (isDefined(aW))
434+ then value(aW)
435+ else "", aU(W)))
422436 }
423437
424438
425439
426-@Callable(bh)
427-func landByAssetIdInfoREADONLY (X) = if ((X == ""))
440+@Callable(bj)
441+func landByAssetIdInfoREADONLY (Y) = if ((Y == ""))
428442 then throw("landAssetId is required")
429443 else {
430- let aX = valueOrElse(getInteger(K, P(X)), -1)
431- let aU = if ((aX > 0))
432- then value(getString(K, aa(X)))
444+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
445+ let aW = if ((aZ > 0))
446+ then value(getString(K, ab(Y)))
433447 else ""
434- $Tuple2(nil, aW(X, aU, aX))
448+ $Tuple2(nil, aY(Y, aW, aZ))
435449 }
436450
437451
438452
439-@Callable(bh)
440-func stakedLandsByOwnerInfoREADONLY (bn) = if ((bn == ""))
453+@Callable(bj)
454+func stakedLandsByOwnerInfoREADONLY (bp) = if ((bp == ""))
441455 then throw("landOwnerAddress is required")
442456 else {
443- let bp = getString(K, af(bn))
444- let bq = if (isDefined(bp))
445- then split_51C(value(bp), "_")
457+ let br = getString(K, ag(bp))
458+ let bs = if (isDefined(br))
459+ then split_51C(value(br), "_")
446460 else nil
447- func br (ao,X) = if ((X == ""))
461+ func bt (aq,Y) = if ((Y == ""))
448462 then throw("landAssetId is required")
449463 else {
450- let aX = valueOrElse(getInteger(K, P(X)), -1)
451- (ao :+ aW(X, bn, aX))
464+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
465+ (aq :+ aY(Y, bp, aZ))
452466 }
453467
454- let as = {
455- let at = bq
456- let au = size(at)
457- let av = nil
458- func aw (ax,ay) = if ((ay >= au))
459- then ax
460- else br(ax, at[ay])
468+ let au = {
469+ let av = bs
470+ let aw = size(av)
471+ let ax = nil
472+ func ay (az,aA) = if ((aA >= aw))
473+ then az
474+ else bt(az, av[aA])
461475
462- func az (ax,ay) = if ((ay >= au))
463- then ax
476+ func aB (az,aA) = if ((aA >= aw))
477+ then az
464478 else throw("List size exceeds 100")
465479
466- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
480+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
467481 }
468- $Tuple2(nil, as)
482+ $Tuple2(nil, au)
469483 }
470484
471485
472486
473-@Callable(bh)
474-func landsByIdsInfoREADONLY (bu) = {
475- func br (ao,X) = if ((X == ""))
487+@Callable(bj)
488+func landsByIdsInfoREADONLY (bw) = {
489+ func bt (aq,Y) = if ((Y == ""))
476490 then throw("landAssetId is required")
477491 else {
478- let aX = valueOrElse(getInteger(K, P(X)), -1)
479- let aU = if ((aX > 0))
480- then value(getString(K, aa(X)))
492+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
493+ let aW = if ((aZ > 0))
494+ then value(getString(K, ab(Y)))
481495 else ""
482- (ao :+ aW(X, aU, aX))
496+ (aq :+ aY(Y, aW, aZ))
483497 }
484498
485- let as = {
486- let at = bu
487- let au = size(at)
488- let av = nil
489- func aw (ax,ay) = if ((ay >= au))
490- then ax
491- else br(ax, at[ay])
499+ let au = {
500+ let av = bw
501+ let aw = size(av)
502+ let ax = nil
503+ func ay (az,aA) = if ((aA >= aw))
504+ then az
505+ else bt(az, av[aA])
492506
493- func az (ax,ay) = if ((ay >= au))
494- then ax
507+ func aB (az,aA) = if ((aA >= aw))
508+ then az
495509 else throw("List size exceeds 100")
496510
497- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
511+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
498512 }
499- $Tuple2(nil, as)
513+ $Tuple2(nil, au)
500514 }
501515
502516
503517
504-@Callable(bh)
505-func warehouseOrderByAssetIdInfoREADONLY (X) = if ((X == ""))
518+@Callable(bj)
519+func warehouseOrderByAssetIdInfoREADONLY (Y) = if ((Y == ""))
506520 then throw("landAssetId is required")
507521 else {
508- let aX = valueOrElse(getInteger(K, P(X)), -1)
509- let aU = if ((aX > 0))
510- then value(getString(K, aa(X)))
522+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
523+ let aW = if ((aZ > 0))
524+ then value(getString(K, ab(Y)))
511525 else ""
512- $Tuple2(nil, bg(X, aU))
526+ $Tuple2(nil, bi(Y, aW))
513527 }
514528
515529
516530
517-@Callable(bh)
518-func ordersByLandIdsInfoREADONLY (bu) = {
519- func br (ao,X) = if ((X == ""))
531+@Callable(bj)
532+func ordersByLandIdsInfoREADONLY (bw) = {
533+ func bt (aq,Y) = if ((Y == ""))
520534 then throw("landAssetId is required")
521535 else {
522- let aX = valueOrElse(getInteger(K, P(X)), -1)
523- let aU = if ((aX > 0))
524- then value(getString(K, aa(X)))
536+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
537+ let aW = if ((aZ > 0))
538+ then value(getString(K, ab(Y)))
525539 else ""
526- (ao :+ bg(X, aU))
540+ (aq :+ bi(Y, aW))
527541 }
528542
529- let as = {
530- let at = bu
531- let au = size(at)
532- let av = nil
533- func aw (ax,ay) = if ((ay >= au))
534- then ax
535- else br(ax, at[ay])
543+ let au = {
544+ let av = bw
545+ let aw = size(av)
546+ let ax = nil
547+ func ay (az,aA) = if ((aA >= aw))
548+ then az
549+ else bt(az, av[aA])
536550
537- func az (ax,ay) = if ((ay >= au))
538- then ax
551+ func aB (az,aA) = if ((aA >= aw))
552+ then az
539553 else throw("List size exceeds 100")
540554
541- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
555+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
542556 }
543- $Tuple2(nil, as)
557+ $Tuple2(nil, au)
544558 }
559+
560+
561+
562+@Callable(bj)
563+func cancelWarehouseOrders (bw) = if ((bj.caller != this))
564+ then throw("permission denied")
565+ else {
566+ let bx = getBoolean(K, N())
567+ if (if (!(isDefined(bx)))
568+ then true
569+ else (value(bx) == false))
570+ then throw("Contracts should be blocked before canceling orders")
571+ else {
572+ func bt (aq,Y) = if ((Y == ""))
573+ then throw("landAssetId is required")
574+ else {
575+ let by = al(invoke(L, "setWarehouseOrder", [Y, "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"], nil))
576+ if (aq)
577+ then true
578+ else by
579+ }
580+
581+ let au = {
582+ let av = bw
583+ let aw = size(av)
584+ let ax = false
585+ func ay (az,aA) = if ((aA >= aw))
586+ then az
587+ else bt(az, av[aA])
588+
589+ func aB (az,aA) = if ((aA >= aw))
590+ then az
591+ else throw("List size exceeds 30")
592+
593+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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)
594+ }
595+ $Tuple2(nil, au)
596+ }
597+ }
545598
546599
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = take(drop(this.bytes, 1), 1)
55
66 let b = {
77 let c = a
88 if ((base58'2W' == c))
99 then base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1010 else if ((base58'2T' == c))
1111 then base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
1212 else throw("Unknown chain")
1313 }
1414
1515 let d = {
1616 let c = a
1717 if ((base58'2W' == c))
1818 then 6307198406
1919 else if ((base58'2T' == c))
2020 then 63071984
2121 else throw("Unknown chain")
2222 }
2323
2424 let e = "LAND"
2525
2626 let f = "DUCK"
2727
2828 let g = "__"
2929
3030 let h = "PRESALE"
3131
3232 let i = 3456000
3333
3434 let j = 86400000
3535
3636 let k = 6
3737
3838 let l = 25
3939
4040 let m = 100
4141
4242 let n = 225
4343
4444 let o = 400
4545
4646 let p = 625
4747
4848 let q = 0
4949
5050 let r = 1
5151
5252 let s = 2
5353
5454 let t = 3
5555
5656 let u = 0
5757
5858 let v = 1
5959
6060 let w = 2
6161
6262 let x = 3
6363
6464 let y = 4
6565
6666 func z () = "%s__restConfig"
6767
6868
6969 let A = 1
7070
7171 let B = 2
7272
7373 let C = 3
7474
7575 func D (E,F) = valueOrErrorMessage(getString(E, F), makeString(["mandatory ", toString(E), ".", F, " is not defined"], ""))
7676
7777
7878 func G () = split_4C(D(this, z()), g)
7979
8080
8181 func H (I,J) = valueOrErrorMessage(addressFromString(I[J]), ("Rest cfg doesn't contain address at index " + toString(J)))
8282
8383
8484 let I = G()
8585
8686 let K = H(I, A)
8787
8888 let L = H(I, B)
8989
9090 let M = H(I, B)
9191
92-func N (O) = ("duckOwner_" + O)
92+func N () = "contractsBlocked"
9393
9494
95-func P (O) = ("stakedTime_" + O)
95+func O (P) = ("duckOwner_" + P)
9696
9797
98-func Q (R) = ("stakedDuckByOwner_" + R)
98+func Q (P) = ("stakedTime_" + P)
9999
100100
101-func S (T,O,R) = ((((("stakedTimeByTypeAssetIdAndOwner_" + T) + "_") + O) + "_") + R)
101+func R (S) = ("stakedDuckByOwner_" + S)
102102
103103
104-func U (V) = ("backPack_" + V)
104+func T (U,P,S) = ((((("stakedTimeByTypeAssetIdAndOwner_" + U) + "_") + P) + "_") + S)
105105
106106
107-func W (X) = ("wareHouse_" + X)
107+func V (W) = ("backPack_" + W)
108108
109109
110-func Y (V) = ("duckLocation_" + V)
110+func X (Y) = ("wareHouse_" + Y)
111111
112112
113-func Z (V) = ("duckHealth_" + V)
113+func Z (W) = ("duckLocation_" + W)
114114
115115
116-func aa (O) = ("nftOwner_" + O)
116+func aa (W) = ("duckHealth_" + W)
117117
118118
119-func ab (O) = ("infraLevel_" + O)
119+func ab (P) = ("nftOwner_" + P)
120120
121121
122-func ac (ad,O) = makeString(["landArtStatus", ad, O], "_")
122+func ac (P) = ("infraLevel_" + P)
123123
124124
125-func ae (O) = ("presaleArtActivated_" + O)
125+func ad (ae,P) = makeString(["landArtStatus", ae, P], "_")
126126
127127
128-func af (R) = ("stakedLandsByOwner_" + R)
128+func af (P) = ("presaleArtActivated_" + P)
129129
130130
131-func ag (X) = ("landOrder_" + X)
131+func ag (S) = ("stakedLandsByOwner_" + S)
132132
133133
134-func ah (ai) = {
135- let c = ai
134+func ah (Y) = ("landOrder_" + Y)
135+
136+
137+func ai (aj) = {
138+ let c = aj
136139 if ($isInstanceOf(c, "String"))
137140 then {
138- let aj = c
139- aj
141+ let ak = c
142+ ak
140143 }
141144 else throw("fail to cast into String")
142145 }
143146
144147
145-func ak (al) = {
146- let c = al
148+func al (aj) = {
149+ let c = aj
150+ if ($isInstanceOf(c, "Boolean"))
151+ then {
152+ let ak = c
153+ ak
154+ }
155+ else throw("fail to cast into Boolean")
156+ }
157+
158+
159+func am (an) = {
160+ let c = an
147161 if ($isInstanceOf(c, "List[Any]"))
148162 then {
149- let am = c
150- if ((size(am) != k))
151- then throw(("Array size is " + toString(size(am))))
163+ let ao = c
164+ if ((size(ao) != k))
165+ then throw(("Array size is " + toString(size(ao))))
152166 else {
153- func an (ao,ap) = {
154- let aq = ap
155- if ($isInstanceOf(aq, "Int"))
167+ func ap (aq,ar) = {
168+ let as = ar
169+ if ($isInstanceOf(as, "Int"))
156170 then {
157- let ar = aq
158- (ao :+ toString(ar))
171+ let at = as
172+ (aq :+ toString(at))
159173 }
160174 else throw("List type is not Int")
161175 }
162176
163- let as = {
164- let at = am
165- let au = size(at)
166- let av = nil
167- func aw (ax,ay) = if ((ay >= au))
168- then ax
169- else an(ax, at[ay])
177+ let au = {
178+ let av = ao
179+ let aw = size(av)
180+ let ax = nil
181+ func ay (az,aA) = if ((aA >= aw))
182+ then az
183+ else ap(az, av[aA])
170184
171- func az (ax,ay) = if ((ay >= au))
172- then ax
185+ func aB (az,aA) = if ((aA >= aw))
186+ then az
173187 else throw("List size exceeds 6")
174188
175- az(aw(aw(aw(aw(aw(aw(av, 0), 1), 2), 3), 4), 5), 6)
189+ aB(ay(ay(ay(ay(ay(ay(ax, 0), 1), 2), 3), 4), 5), 6)
176190 }
177- makeString(as, "_")
191+ makeString(au, "_")
178192 }
179193 }
180194 else throw("fail to cast into List")
181195 }
182196
183197
184-func aA (al) = {
185- let c = al
198+func aC (an) = {
199+ let c = an
186200 if ($isInstanceOf(c, "(List[Any], List[Any])"))
187201 then {
188- let aB = c
189- $Tuple2(ak(aB._1), ak(aB._2))
202+ let aD = c
203+ $Tuple2(am(aD._1), am(aD._2))
190204 }
191205 else throw("fail to cast into (List, List)")
192206 }
193207
194208
195-func aC (aD) = {
196- let aE = addressFromString(aD)
197- let aF = if (isDefined(aE))
198- then wavesBalance(value(aE))
209+func aE (aF) = {
210+ let aG = addressFromString(aF)
211+ let aH = if (isDefined(aG))
212+ then wavesBalance(value(aG))
199213 else BalanceDetails(0, 0, 0, 0)
200- let aG = if (isDefined(aE))
201- then assetBalance(value(aE), b)
214+ let aI = if (isDefined(aG))
215+ then assetBalance(value(aG), b)
202216 else 0
203- makeString(["%s%d%d", "wallet", toString(aF.available), toString(aG)], g)
217+ makeString(["%s%d%d", "wallet", toString(aH.available), toString(aI)], g)
204218 }
205219
206220
207-func aH (X,aI) = {
208- let aJ = valueOrElse(getInteger(K, ab(X)), 0)
209- let aK = valueOrElse(getInteger(K, ac(h, X)), if (valueOrElse(getBoolean(K, ae(X)), false))
210- then aI
221+func aJ (Y,aK) = {
222+ let aL = valueOrElse(getInteger(K, ac(Y)), 0)
223+ let aM = valueOrElse(getInteger(K, ad(h, Y)), if (valueOrElse(getBoolean(K, af(Y)), false))
224+ then aK
211225 else 0)
212- $Tuple3(aJ, aK, ((i + fraction(i, aJ, 4)) + fraction(i, (aK * 3), (aI * 20))))
226+ $Tuple3(aL, aM, ((i + fraction(i, aL, 4)) + fraction(i, (aM * 3), (aK * 20))))
213227 }
214228
215229
216-func aL (aM) = {
217- let c = aM
230+func aN (aO) = {
231+ let c = aO
218232 if (("S" == c))
219233 then l
220234 else if (("M" == c))
221235 then m
222236 else if (("L" == c))
223237 then n
224238 else if (("XL" == c))
225239 then o
226240 else if (("XXL" == c))
227241 then p
228242 else throw("Unknown land size")
229243 }
230244
231245
232-func aN (aO,aP,aJ) = {
233- let aQ = ((toString(aP) + "_") + toString(aJ))
234- let aR = split(valueOrElse(getString(K, aO), (aQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0")), ":")
235-[aR[u], if ((size(split(aR[v], "_")) == k))
236- then aR[v]
237- else "0_0_0_0_0_0", if ((size(split(aR[w], "_")) == k))
238- then aR[w]
239- else "0_0_0_0_0_0", aR[x], if ((5 > size(aR)))
246+func aP (aQ,aR,aL) = {
247+ let aS = ((toString(aR) + "_") + toString(aL))
248+ let aT = split(valueOrElse(getString(K, aQ), (aS + ":0_0_0_0_0_0:0_0_0_0_0_0::0")), ":")
249+[aT[u], if ((size(split(aT[v], "_")) == k))
250+ then aT[v]
251+ else "0_0_0_0_0_0", if ((size(split(aT[w], "_")) == k))
252+ then aT[w]
253+ else "0_0_0_0_0_0", aT[x], if ((5 > size(aT)))
240254 then "0"
241- else aR[y]]
255+ else aT[y]]
242256 }
243257
244258
245-func aS (V) = $Tuple5(valueOrElse(getInteger(K, P(V)), -1), value(assetInfo(fromBase58String(V))).name, valueOrElse(getString(K, Y(V)), ""), valueOrElse(getInteger(K, Z(V)), -1), ah(invoke(K, "getBackpackREADONLY", [V], nil)))
259+func aU (W) = $Tuple5(valueOrElse(getInteger(K, Q(W)), -1), value(assetInfo(fromBase58String(W))).name, valueOrElse(getString(K, Z(W)), ""), valueOrElse(getInteger(K, aa(W)), -1), ai(invoke(K, "getBackpackREADONLY", [W], nil)))
246260
247261
248-func aT (V,aU,aV) = [("%s%s__assetId__" + V), ("%s%s__owner__" + aU), ("%s%d__stakedTime__" + toString(aV._1)), ("%s%s__name__" + aV._2), ("%s%s__location__" + aV._3), ("%s%d__health__" + toString(aV._4)), ("%s%s__backPack__" + aV._5)]
262+func aV (W,aW,aX) = [("%s%s__assetId__" + W), ("%s%s__owner__" + aW), ("%s%d__stakedTime__" + toString(aX._1)), ("%s%s__name__" + aX._2), ("%s%s__location__" + aX._3), ("%s%d__health__" + toString(aX._4)), ("%s%s__backPack__" + aX._5)]
249263
250264
251-func aW (X,aU,aX) = if ((X == ""))
265+func aY (Y,aW,aZ) = if ((Y == ""))
252266 then throw("landAssetId is required")
253267 else {
254- let aY = value(assetInfo(fromBase58String(X)))
255- let aZ = split(aY.description, "_")
256- let ba = if ((aY.quantity > 0))
257- then aZ[q]
258- else ("-" + aZ[q])
259- let aI = aL(aZ[r])
260- let bb = aH(X, aI)
261- let bc = (lastBlock.timestamp - aX)
262- let bd = if ((aX > 0))
263- then fraction(bc, (bb._3 * aI), j)
268+ let ba = value(assetInfo(fromBase58String(Y)))
269+ let bb = split(ba.description, "_")
270+ let bc = if ((ba.quantity > 0))
271+ then bb[q]
272+ else ("-" + bb[q])
273+ let aK = aN(bb[r])
274+ let bd = aJ(Y, aK)
275+ let be = (lastBlock.timestamp - aZ)
276+ let bf = if ((aZ > 0))
277+ then fraction(be, (bd._3 * aK), j)
264278 else 0
265- let be = fraction(d, (aI * (bb._1 + 1)), l)
266- let bf = if ((aX > 0))
267- then aA(invoke(K, "splitByGlobalAndLocalWeightsREADONLY", [be, bd, aZ[s]], nil))
268- else $Tuple2(ak(invoke(K, "splitByGlobalWeightsREADONLY", [be], nil)), "")
269-[("%s%s__assetId__" + X), ("%s%s__owner__" + aU), ("%s%d__stakedTime__" + toString(aX)), ("%s%s__description__" + makeString([ba, aZ[r], aZ[s], aZ[t]], "_")), ("%s%d__infraLevel__" + toString(bb._1)), ("%s%s__availResByType__" + bf._2), ("%s%d__availResTotal__" + toString(bd)), ("%s%s__needMaterial__" + bf._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bb._2))], g), ("%s%s__warehouse__" + makeString(aN(W(X), (aI / l), bb._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ag(X)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
279+ let bg = fraction(d, (aK * (bd._1 + 1)), l)
280+ let bh = if ((aZ > 0))
281+ then aC(invoke(K, "splitByGlobalAndLocalWeightsREADONLY", [bg, bf, bb[s]], nil))
282+ else $Tuple2(am(invoke(K, "splitByGlobalWeightsREADONLY", [bg], nil)), "")
283+[("%s%s__assetId__" + Y), ("%s%s__owner__" + aW), ("%s%d__stakedTime__" + toString(aZ)), ("%s%s__description__" + makeString([bc, bb[r], bb[s], bb[t]], "_")), ("%s%d__infraLevel__" + toString(bd._1)), ("%s%s__availResByType__" + bh._2), ("%s%d__availResTotal__" + toString(bf)), ("%s%s__needMaterial__" + bh._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bd._2))], g), ("%s%s__warehouse__" + makeString(aP(X(Y), (aK / l), bd._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ah(Y)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
270284 }
271285
272286
273-func bg (X,aU) = if ((X == ""))
287+func bi (Y,aW) = if ((Y == ""))
274288 then throw("landAssetId is required")
275289 else {
276- let aY = value(assetInfo(fromBase58String(X)))
277- let aZ = split(aY.description, "_")
278- let aI = aL(aZ[r])
279- let bb = aH(X, aI)
280-[("%s%s__assetId__" + X), ("%s%s__owner__" + aU), ("%s%s__warehouse__" + makeString(aN(W(X), (aI / l), bb._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ag(X)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
290+ let ba = value(assetInfo(fromBase58String(Y)))
291+ let bb = split(ba.description, "_")
292+ let aK = aN(bb[r])
293+ let bd = aJ(Y, aK)
294+[("%s%s__assetId__" + Y), ("%s%s__owner__" + aW), ("%s%s__warehouse__" + makeString(aP(X(Y), (aK / l), bd._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(L, ah(Y)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
281295 }
282296
283297
284-@Callable(bh)
285-func constructorV1 (K,L,M) = if ((bh.caller != this))
298+@Callable(bj)
299+func constructorV1 (K,L,M) = if ((bj.caller != this))
286300 then throw("permissions denied")
287301 else [StringEntry(z(), makeString(["%s%s%s", K, L, M], g))]
288302
289303
290304
291-@Callable(bh)
292-func walletInfoREADONLY (aD) = $Tuple2(nil, aC(aD))
305+@Callable(bj)
306+func walletInfoREADONLY (aF) = $Tuple2(nil, aE(aF))
293307
294308
295309
296-@Callable(bh)
297-func duckInfoREADONLY (V,aD) = {
298- let aE = addressFromString(aD)
299- let bi = fromBase58String(V)
300- if ((V == ""))
310+@Callable(bj)
311+func duckInfoREADONLY (W,aF) = {
312+ let aG = addressFromString(aF)
313+ let bk = fromBase58String(W)
314+ if ((W == ""))
301315 then throw("duckAssetId is required")
302316 else {
303- let bj = getString(K, N(V))
304- let aU = if (isDefined(bj))
305- then value(bj)
306- else if (if (isDefined(aE))
307- then (assetBalance(value(aE), bi) == 1)
317+ let bl = getString(K, O(W))
318+ let aW = if (isDefined(bl))
319+ then value(bl)
320+ else if (if (isDefined(aG))
321+ then (assetBalance(value(aG), bk) == 1)
308322 else false)
309- then aD
323+ then aF
310324 else ""
311- $Tuple2(nil, $Tuple2(aT(V, aU, aS(V)), aC(aD)))
325+ $Tuple2(nil, $Tuple2(aV(W, aW, aU(W)), aE(aF)))
312326 }
313327 }
314328
315329
316330
317-@Callable(bh)
318-func landInfoREADONLY (X,aD) = {
319- let aE = addressFromString(aD)
320- let bk = fromBase58String(X)
321- if ((X == ""))
331+@Callable(bj)
332+func landInfoREADONLY (Y,aF) = {
333+ let aG = addressFromString(aF)
334+ let bm = fromBase58String(Y)
335+ if ((Y == ""))
322336 then throw("landAssetId is required")
323337 else {
324- let aX = valueOrElse(getInteger(K, P(X)), 0)
325- let aU = if ((aX > 0))
326- then value(getString(K, aa(X)))
327- else if (if (isDefined(aE))
328- then (assetBalance(value(aE), bk) == 1)
338+ let aZ = valueOrElse(getInteger(K, Q(Y)), 0)
339+ let aW = if ((aZ > 0))
340+ then value(getString(K, ab(Y)))
341+ else if (if (isDefined(aG))
342+ then (assetBalance(value(aG), bm) == 1)
329343 else false)
330- then aD
344+ then aF
331345 else ""
332- let bl = getString(K, Q(aD))
333- let aV = if (if (isDefined(aE))
334- then isDefined(bl)
346+ let bn = getString(K, R(aF))
347+ let aX = if (if (isDefined(aG))
348+ then isDefined(bn)
335349 else false)
336350 then {
337- let V = value(bl)
338- $Tuple2(V, aS(V))
351+ let W = value(bn)
352+ $Tuple2(W, aU(W))
339353 }
340354 else $Tuple2("", $Tuple5(-1, "", "", -1, ""))
341- $Tuple2(nil, $Tuple3(aW(X, aU, aX), aT(aV._1, aD, aV._2), aC(aD)))
355+ $Tuple2(nil, $Tuple3(aY(Y, aW, aZ), aV(aX._1, aF, aX._2), aE(aF)))
342356 }
343357 }
344358
345359
346360
347-@Callable(bh)
348-func stakedLandsInfoREADONLY (bm,bn) = if ((bn == ""))
361+@Callable(bj)
362+func stakedLandsInfoREADONLY (bo,bp) = if ((bp == ""))
349363 then throw("landOwnerAddress is required")
350364 else {
351- let bo = addressFromString(bm)
352- let bp = getString(K, af(bn))
353- let bq = if (isDefined(bp))
354- then split_51C(value(bp), "_")
365+ let bq = addressFromString(bo)
366+ let br = getString(K, ag(bp))
367+ let bs = if (isDefined(br))
368+ then split_51C(value(br), "_")
355369 else nil
356- func br (ao,X) = {
357- let bk = fromBase58String(X)
358- if ((X == ""))
370+ func bt (aq,Y) = {
371+ let bm = fromBase58String(Y)
372+ if ((Y == ""))
359373 then throw("landAssetId is required")
360374 else {
361- let aX = valueOrElse(getInteger(K, P(X)), 0)
362- let bs = value(assetInfo(bk)).description
363- let aZ = split(bs, "_")
364- let aI = aL(aZ[r])
365- let bb = aH(X, aI)
366- let bc = (lastBlock.timestamp - aX)
367- let bd = fraction(bc, (bb._3 * aI), j)
368- (ao :+ [("%s%s__landAssetId__" + X), ("%s%d__stakedTime__" + toString(aX)), ("%s%s__description__" + bs), ("%s%d__infraLevel__" + toString(bb._1)), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bb._2))], g), ("%s%s__availRes__" + toString(bd))])
375+ let aZ = valueOrElse(getInteger(K, Q(Y)), 0)
376+ let bu = value(assetInfo(bm)).description
377+ let bb = split(bu, "_")
378+ let aK = aN(bb[r])
379+ let bd = aJ(Y, aK)
380+ let be = (lastBlock.timestamp - aZ)
381+ let bf = fraction(be, (bd._3 * aK), j)
382+ (aq :+ [("%s%s__landAssetId__" + Y), ("%s%d__stakedTime__" + toString(aZ)), ("%s%s__description__" + bu), ("%s%d__infraLevel__" + toString(bd._1)), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(bd._2))], g), ("%s%s__availRes__" + toString(bf))])
369383 }
370384 }
371385
372- let as = {
373- let at = bq
374- let au = size(at)
375- let av = nil
376- func aw (ax,ay) = if ((ay >= au))
377- then ax
378- else br(ax, at[ay])
386+ let au = {
387+ let av = bs
388+ let aw = size(av)
389+ let ax = nil
390+ func ay (az,aA) = if ((aA >= aw))
391+ then az
392+ else bt(az, av[aA])
379393
380- func az (ax,ay) = if ((ay >= au))
381- then ax
394+ func aB (az,aA) = if ((aA >= aw))
395+ then az
382396 else throw("List size exceeds 100")
383397
384- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
398+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
385399 }
386- let bl = getString(K, Q(bm))
387- let aV = if (if (isDefined(bo))
388- then isDefined(bl)
400+ let bn = getString(K, R(bo))
401+ let aX = if (if (isDefined(bq))
402+ then isDefined(bn)
389403 else false)
390404 then {
391- let V = value(bl)
392- $Tuple2(V, aS(V))
405+ let W = value(bn)
406+ $Tuple2(W, aU(W))
393407 }
394408 else $Tuple2("", $Tuple5(-1, "", "", -1, ""))
395- $Tuple2(nil, $Tuple3(as, aT(aV._1, bm, aV._2), aC(bm)))
409+ $Tuple2(nil, $Tuple3(au, aV(aX._1, bo, aX._2), aE(bo)))
396410 }
397411
398412
399413
400-@Callable(bh)
401-func duckByOwnerInfoREADONLY (bt) = {
402- let bl = getString(K, Q(bt))
403- $Tuple2(nil, if (if (isDefined(addressFromString(bt)))
404- then isDefined(bl)
414+@Callable(bj)
415+func duckByOwnerInfoREADONLY (bv) = {
416+ let bn = getString(K, R(bv))
417+ $Tuple2(nil, if (if (isDefined(addressFromString(bv)))
418+ then isDefined(bn)
405419 else false)
406420 then {
407- let V = value(bl)
408- aT(V, bt, aS(V))
421+ let W = value(bn)
422+ aV(W, bv, aU(W))
409423 }
410- else aT("", bt, $Tuple5(-1, "", "", -1, "")))
424+ else aV("", bv, $Tuple5(-1, "", "", -1, "")))
411425 }
412426
413427
414428
415-@Callable(bh)
416-func duckByAssetIdInfoREADONLY (V) = {
417- let aU = getString(K, N(V))
418- let aV = aS(V)
419- $Tuple2(nil, aT(V, if (isDefined(aU))
420- then value(aU)
421- else "", aS(V)))
429+@Callable(bj)
430+func duckByAssetIdInfoREADONLY (W) = {
431+ let aW = getString(K, O(W))
432+ let aX = aU(W)
433+ $Tuple2(nil, aV(W, if (isDefined(aW))
434+ then value(aW)
435+ else "", aU(W)))
422436 }
423437
424438
425439
426-@Callable(bh)
427-func landByAssetIdInfoREADONLY (X) = if ((X == ""))
440+@Callable(bj)
441+func landByAssetIdInfoREADONLY (Y) = if ((Y == ""))
428442 then throw("landAssetId is required")
429443 else {
430- let aX = valueOrElse(getInteger(K, P(X)), -1)
431- let aU = if ((aX > 0))
432- then value(getString(K, aa(X)))
444+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
445+ let aW = if ((aZ > 0))
446+ then value(getString(K, ab(Y)))
433447 else ""
434- $Tuple2(nil, aW(X, aU, aX))
448+ $Tuple2(nil, aY(Y, aW, aZ))
435449 }
436450
437451
438452
439-@Callable(bh)
440-func stakedLandsByOwnerInfoREADONLY (bn) = if ((bn == ""))
453+@Callable(bj)
454+func stakedLandsByOwnerInfoREADONLY (bp) = if ((bp == ""))
441455 then throw("landOwnerAddress is required")
442456 else {
443- let bp = getString(K, af(bn))
444- let bq = if (isDefined(bp))
445- then split_51C(value(bp), "_")
457+ let br = getString(K, ag(bp))
458+ let bs = if (isDefined(br))
459+ then split_51C(value(br), "_")
446460 else nil
447- func br (ao,X) = if ((X == ""))
461+ func bt (aq,Y) = if ((Y == ""))
448462 then throw("landAssetId is required")
449463 else {
450- let aX = valueOrElse(getInteger(K, P(X)), -1)
451- (ao :+ aW(X, bn, aX))
464+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
465+ (aq :+ aY(Y, bp, aZ))
452466 }
453467
454- let as = {
455- let at = bq
456- let au = size(at)
457- let av = nil
458- func aw (ax,ay) = if ((ay >= au))
459- then ax
460- else br(ax, at[ay])
468+ let au = {
469+ let av = bs
470+ let aw = size(av)
471+ let ax = nil
472+ func ay (az,aA) = if ((aA >= aw))
473+ then az
474+ else bt(az, av[aA])
461475
462- func az (ax,ay) = if ((ay >= au))
463- then ax
476+ func aB (az,aA) = if ((aA >= aw))
477+ then az
464478 else throw("List size exceeds 100")
465479
466- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
480+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
467481 }
468- $Tuple2(nil, as)
482+ $Tuple2(nil, au)
469483 }
470484
471485
472486
473-@Callable(bh)
474-func landsByIdsInfoREADONLY (bu) = {
475- func br (ao,X) = if ((X == ""))
487+@Callable(bj)
488+func landsByIdsInfoREADONLY (bw) = {
489+ func bt (aq,Y) = if ((Y == ""))
476490 then throw("landAssetId is required")
477491 else {
478- let aX = valueOrElse(getInteger(K, P(X)), -1)
479- let aU = if ((aX > 0))
480- then value(getString(K, aa(X)))
492+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
493+ let aW = if ((aZ > 0))
494+ then value(getString(K, ab(Y)))
481495 else ""
482- (ao :+ aW(X, aU, aX))
496+ (aq :+ aY(Y, aW, aZ))
483497 }
484498
485- let as = {
486- let at = bu
487- let au = size(at)
488- let av = nil
489- func aw (ax,ay) = if ((ay >= au))
490- then ax
491- else br(ax, at[ay])
499+ let au = {
500+ let av = bw
501+ let aw = size(av)
502+ let ax = nil
503+ func ay (az,aA) = if ((aA >= aw))
504+ then az
505+ else bt(az, av[aA])
492506
493- func az (ax,ay) = if ((ay >= au))
494- then ax
507+ func aB (az,aA) = if ((aA >= aw))
508+ then az
495509 else throw("List size exceeds 100")
496510
497- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
511+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
498512 }
499- $Tuple2(nil, as)
513+ $Tuple2(nil, au)
500514 }
501515
502516
503517
504-@Callable(bh)
505-func warehouseOrderByAssetIdInfoREADONLY (X) = if ((X == ""))
518+@Callable(bj)
519+func warehouseOrderByAssetIdInfoREADONLY (Y) = if ((Y == ""))
506520 then throw("landAssetId is required")
507521 else {
508- let aX = valueOrElse(getInteger(K, P(X)), -1)
509- let aU = if ((aX > 0))
510- then value(getString(K, aa(X)))
522+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
523+ let aW = if ((aZ > 0))
524+ then value(getString(K, ab(Y)))
511525 else ""
512- $Tuple2(nil, bg(X, aU))
526+ $Tuple2(nil, bi(Y, aW))
513527 }
514528
515529
516530
517-@Callable(bh)
518-func ordersByLandIdsInfoREADONLY (bu) = {
519- func br (ao,X) = if ((X == ""))
531+@Callable(bj)
532+func ordersByLandIdsInfoREADONLY (bw) = {
533+ func bt (aq,Y) = if ((Y == ""))
520534 then throw("landAssetId is required")
521535 else {
522- let aX = valueOrElse(getInteger(K, P(X)), -1)
523- let aU = if ((aX > 0))
524- then value(getString(K, aa(X)))
536+ let aZ = valueOrElse(getInteger(K, Q(Y)), -1)
537+ let aW = if ((aZ > 0))
538+ then value(getString(K, ab(Y)))
525539 else ""
526- (ao :+ bg(X, aU))
540+ (aq :+ bi(Y, aW))
527541 }
528542
529- let as = {
530- let at = bu
531- let au = size(at)
532- let av = nil
533- func aw (ax,ay) = if ((ay >= au))
534- then ax
535- else br(ax, at[ay])
543+ let au = {
544+ let av = bw
545+ let aw = size(av)
546+ let ax = nil
547+ func ay (az,aA) = if ((aA >= aw))
548+ then az
549+ else bt(az, av[aA])
536550
537- func az (ax,ay) = if ((ay >= au))
538- then ax
551+ func aB (az,aA) = if ((aA >= aw))
552+ then az
539553 else throw("List size exceeds 100")
540554
541- az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
555+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
542556 }
543- $Tuple2(nil, as)
557+ $Tuple2(nil, au)
544558 }
559+
560+
561+
562+@Callable(bj)
563+func cancelWarehouseOrders (bw) = if ((bj.caller != this))
564+ then throw("permission denied")
565+ else {
566+ let bx = getBoolean(K, N())
567+ if (if (!(isDefined(bx)))
568+ then true
569+ else (value(bx) == false))
570+ then throw("Contracts should be blocked before canceling orders")
571+ else {
572+ func bt (aq,Y) = if ((Y == ""))
573+ then throw("landAssetId is required")
574+ else {
575+ let by = al(invoke(L, "setWarehouseOrder", [Y, "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"], nil))
576+ if (aq)
577+ then true
578+ else by
579+ }
580+
581+ let au = {
582+ let av = bw
583+ let aw = size(av)
584+ let ax = false
585+ func ay (az,aA) = if ((aA >= aw))
586+ then az
587+ else bt(az, av[aA])
588+
589+ func aB (az,aA) = if ((aA >= aw))
590+ then az
591+ else throw("List size exceeds 30")
592+
593+ aB(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ax, 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)
594+ }
595+ $Tuple2(nil, au)
596+ }
597+ }
545598
546599

github/deemru/w8io/873ac7e 
562.69 ms