tx · 4oYKDus71AaoZRVdt7isQQQUYVm8mkAiPyWkHUn1UgbG 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h: -0.02000000 Waves 2024.02.28 15:43 [2996092] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves
{ "type": 13, "id": "4oYKDus71AaoZRVdt7isQQQUYVm8mkAiPyWkHUn1UgbG", "fee": 2000000, "feeAssetId": null, "timestamp": 1709124211289, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "k9qZtBXFLFffKCa5KEC5dRxLJigVZGgVc2JA1ZbawbS5fdeGGvLM1t7HBJw4tWfRAY7ZHtpENT5wdyxCsT3U5ni" ], "script": "base64:BgI/CAISAwoBARIDCgEEEgMKAQgSBAoCCAgSAwoBCBIECgIICBIDCgEIEgQKAggBEgQKAggBEgMKAQESABIDCgEINgAMY29udHJhY3RGaWxlAhFsMm1wX2xlYXNpbmcucmlkZQADU0VQAgJfXwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAAMa2V5Rm9yY2VTdG9wCQC5CQIJAMwIAgICJXMJAMwIAgIJZm9yY2VTdG9wBQNuaWwFA1NFUAARa2V5UGVyaW9kT2Zmc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAghvZmZzZXRJZAUDbmlsBQNTRVAAFWtleVBlcmlvZE9mZnNldEhlaWdodAkAuQkCCQDMCAICAiVzCQDMCAICDG9mZnNldEhlaWdodAUDbmlsBQNTRVAAD2tleVBlcmlvZExlbmd0aAkAuQkCCQDMCAICAiVzCQDMCAICDHBlcmlvZExlbmd0aAUDbmlsBQNTRVAADnBlcmlvZE9mZnNldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtleVBlcmlvZE9mZnNldElkAAAADHBlcmlvZExlbmd0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlQZXJpb2RMZW5ndGgAkE4AEnBlcmlvZE9mZnNldEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAPY3VycmVudFBlcmlvZElkAwMJAGYCBQZoZWlnaHQFEnBlcmlvZE9mZnNldEhlaWdodAkBAiE9AgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEHCQBkAgkAaQIJAGUCBQZoZWlnaHQFEnBlcmlvZE9mZnNldEhlaWdodAUMcGVyaW9kTGVuZ3RoBQ5wZXJpb2RPZmZzZXRJZAkAlgMBCQDMCAIAAAkAzAgCCQBlAgUOcGVyaW9kT2Zmc2V0SWQAAQUDbmlsABNjdXJyZW50UGVyaW9kSGVpZ2h0AwMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQYDCQAAAgUPY3VycmVudFBlcmlvZElkAAAJAGYCBRJwZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAcAAAkAZAIFEnBlcmlvZE9mZnNldEhlaWdodAkAaAIJAGUCBQ9jdXJyZW50UGVyaW9kSWQFDnBlcmlvZE9mZnNldElkBQxwZXJpb2RMZW5ndGgAEG5leHRQZXJpb2RIZWlnaHQDAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BBgMJAAACBQ9jdXJyZW50UGVyaW9kSWQAAAkAZgIFEnBlcmlvZE9mZnNldEhlaWdodAUGaGVpZ2h0BwAACQBkAgUTY3VycmVudFBlcmlvZEhlaWdodAUMcGVyaW9kTGVuZ3RoARJrZXlMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzCQC5CQIJAMwIAgICJXMJAMwIAgULbm9kZUFkZHJlc3MFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQAQ5rZXlVc2VyVG9DbGFpbQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICB3RvQ2xhaW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARJrZXlVc2VyVG90YWxMb2NrZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg91c2VyVG90YWxMb2NrZWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQtub2RlQWRkcmVzcwQBaAMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAABQZoZWlnaHQJALkJAgkAzAgCAgQlcyVkCQDMCAIFC25vZGVBZGRyZXNzCQDMCAIJAKQDAQUBaAUDbmlsBQNTRVABFmtleVVzZXJMZWFzaW5nQnlIZWlnaHQCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBAFoAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BAAAFBmhlaWdodAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCBQtub2RlQWRkcmVzcwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEFAWgFA25pbAUDU0VQAA1hc3NldElkU3RyaW5nCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCmtleUFzc2V0SWQCBVdBVkVTAAxhc3NldElkQnl0ZXMDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwALaXNGb3JjZVN0b3AJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMa2V5Rm9yY2VTdG9wBwEOaXNWYWxpZEFkZHJlc3MBB2FkZHJlc3MEByRtYXRjaDAJAKYIAQUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgcAD0FETUlOX0xJU1RfU0laRQAFAAZRVU9SVU0AAwARVFhJRF9CWVRFU19MRU5HVEgAIAEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCWFsbG93VHhJZAkAzAgCBQR0eElkBQNuaWwFA1NFUAEQa2V5RnVsbEFkbWluVm90ZQIGcHJlZml4DGFkbWluQWRkcmVzcwkAuQkCCQDMCAIFBnByZWZpeAkAzAgCBQxhZG1pbkFkZHJlc3MFA25pbAUDU0VQARNrZXlBZG1pbkFkZHJlc3NMaXN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAQ5rZXlBbGxvd2VkVHhJZAAJALkJAgkAzAgCAgIlcwkAzAgCAgR0eElkBQNuaWwFA1NFUAEMZ2V0QWRtaW5Wb3RlAgZwcmVmaXgFYWRtaW4EB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABDWdldEFkbWluc0xpc3QABAckbWF0Y2gwCQCdCAIFBHRoaXMJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUDU0VQBQNuaWwBDWlzSW5BZG1pbkxpc3QBB2FkZHJlc3MJAQ9jb250YWluc0VsZW1lbnQCCQENZ2V0QWRtaW5zTGlzdAAFB2FkZHJlc3MBEmdlblZvdGVzS2V5c0hlbHBlcgIBYQxhZG1pbkFkZHJlc3MECyR0MDM1NjIzNTg2BQFhBAZyZXN1bHQIBQskdDAzNTYyMzU4NgJfMQQGcHJlZml4CAULJHQwMzU2MjM1ODYCXzIJAJQKAgkAzQgCBQZyZXN1bHQJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQxhZG1pbkFkZHJlc3MFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBE2tleUFkbWluQWRkcmVzc0xpc3QABAskdDAzNzMzMzgxNwoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAZyZXN1bHQIBQskdDAzNzMzMzgxNwJfMQQGcHJlZml4CAULJHQwMzczMzM4MTcCXzIFBnJlc3VsdAEQY291bnRWb3Rlc0hlbHBlcgIGcmVzdWx0B3ZvdGVLZXkJAGQCBQZyZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQpjb3VudFZvdGVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjb3VudFZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEQY2xlYXJWb3Rlc0hlbHBlcgIGcmVzdWx0A2tleQkAzQgCBQZyZXN1bHQJAQtEZWxldGVFbnRyeQEFA2tleQETZ2V0Q2xlYXJWb3RlRW50cmllcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBDHZvdGVJTlRFUk5BTAQTY2FsbGVyQWRkcmVzc1N0cmluZwlrZXlQcmVmaXgIbWluVm90ZXMKdm90ZVJlc3VsdAQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEEGFkbWluQ3VycmVudFZvdGUJAQxnZXRBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEA2VycgMJAQEhAQkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QDCQAAAgUQYWRtaW5DdXJyZW50Vm90ZQABCQEIdGhyb3dFcnIBCQCsAgIFB3ZvdGVLZXkCEiB5b3UgYWxyZWFkeSB2b3RlZAUEdW5pdAMJAAACBQNlcnIFA2VycgQFdm90ZXMJAQpjb3VudFZvdGVzAQUJa2V5UHJlZml4AwkAZwIJAGQCBQV2b3RlcwABBQhtaW5Wb3RlcwQQY2xlYXJWb3RlRW50cmllcwkBE2dldENsZWFyVm90ZUVudHJpZXMBBQlrZXlQcmVmaXgJAM4IAgUQY2xlYXJWb3RlRW50cmllcwUKdm90ZVJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdm90ZUtleQABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BE2dldExlYXNpbmdOb2RlRW50cnkDC25vZGVBZGRyZXNzDWN1cnJlbnRMZWFzZWQKbmV4dExlYXNlZAQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQ1jdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCm5leHRMZWFzZWQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQESa2V5TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzBBhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBEmtleUxlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBAckbWF0Y2gwBRhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQRbm9kZUN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBBFub2RlQ3VycmVudExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIEDm5vZGVOZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQObm9kZU5leHRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwMJAGYCBQ5ub2RlTmV4dFBlcmlvZAUGaGVpZ2h0BgkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BCQCUCgIFEW5vZGVDdXJyZW50TGVhc2VkBQ5ub2RlTmV4dExlYXNlZAkAlAoCBQ5ub2RlTmV4dExlYXNlZAUObm9kZU5leHRMZWFzZWQJAJQKAgAAAAABE2dldFVzZXJMZWFzaW5nRW50cnkEC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzEXVzZXJDdXJyZW50TGVhc2VkDnVzZXJOZXh0TGVhc2VkBAt2YWx1ZVN0cmluZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFEXVzZXJDdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFDnVzZXJOZXh0TGVhc2VkBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBFmtleVVzZXJMZWFzaW5nTm9kZURhdGECBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRVc2VyTGVhc2luZ0RhdGECC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBBhsZWFzaW5nVXNlckRhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBFmtleVVzZXJMZWFzaW5nTm9kZURhdGECBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MEByRtYXRjaDAFGGxlYXNpbmdVc2VyRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBBF1c2VyQ3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEEXVzZXJDdXJyZW50TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAgQOdXNlck5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBA51c2VyTmV4dExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDAwkAZgIFDnVzZXJOZXh0UGVyaW9kBQZoZWlnaHQGCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEJAJQKAgURdXNlckN1cnJlbnRMZWFzZWQFDnVzZXJOZXh0TGVhc2VkCQCUCgIFDnVzZXJOZXh0TGVhc2VkBQ51c2VyTmV4dExlYXNlZAkAlAoCAAAAAAETZ2V0VXNlclRvQ2xhaW1FbnRyeQMLdXNlckFkZHJlc3MHdG9DbGFpbQh0b1VubG9jawQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQd0b0NsYWltCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCHRvVW5sb2NrBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MFC3ZhbHVlU3RyaW5nARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBC3VzZXJBZGRyZXNzBBh1c2VyVG9DbGFpbURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MEByRtYXRjaDAFGHVzZXJUb0NsYWltRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBA1jdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQHdG9DbGFpbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIECm5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBAh0b1VubG9jawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDAwkAZgIFCm5leHRQZXJpb2QFBmhlaWdodAYJAAACBQ9jdXJyZW50UGVyaW9kSWQAAAkAlAoCBQd0b0NsYWltBQh0b1VubG9jawkAlAoCCQBkAgUHdG9DbGFpbQUIdG9VbmxvY2sAAAkAlAoCAAAAAAEXZ2V0VXNlclRvdGFsTG9ja2VkRW50cnkCC3VzZXJBZGRyZXNzD3VzZXJUb3RhbExvY2tlZAkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwUPdXNlclRvdGFsTG9ja2VkARJnZXRVc2VyVG90YWxMb2NrZWQBC3VzZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARJrZXlVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwAAARFnZXRVbnN0YWtlQWN0aW9ucwMLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MNdW5zdGFrZUFtb3VudAQLJHQwODg1Nzg5MzAJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQskdDA4ODU3ODkzMAJfMQQObm9kZU5leHRMZWFzZWQIBQskdDA4ODU3ODkzMAJfMgQLJHQwODkzNTkwMjEJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAULJHQwODkzNTkwMjECXzEEDnVzZXJOZXh0TGVhc2VkCAULJHQwODkzNTkwMjECXzIEBmNoZWNrcwkAzAgCAwkBASEBBQtpc0ZvcmNlU3RvcAYJAQh0aHJvd0VycgECHWNvbnRyYWN0IGlzIHRlbXBvcmFyeSBzdG9wcGVkCQDMCAIDCQBmAgUNdW5zdGFrZUFtb3VudAAABgkBCHRocm93RXJyAQIndW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQGCQEIdGhyb3dFcnIBAjl1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCB1c2VyIHN0YWtlZCBhbW91bnQJAMwIAgMJAGcCBQ5ub2RlTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAYJAQh0aHJvd0VycgECOXVuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIG5vZGUgc3Rha2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBBuZXdOb2RlTmV4dExlYXNlCQBlAgUObm9kZU5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEEW5ld1VzZXJOZXh0TGVhc2VkCQBlAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQECyR0MDk4MzQ5ODk0CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQskdDA5ODM0OTg5NAJfMQQIdG9VbmxvY2sIBQskdDA5ODM0OTg5NAJfMgQLbmV3VG9VbmxvY2sJAGQCBQh0b1VubG9jawUNdW5zdGFrZUFtb3VudAQPdXNlclRvdGFsTG9ja2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MEEm5ld1VzZXJUb3RhbExvY2tlZAkAZQIFD3VzZXJUb3RhbExvY2tlZAUNdW5zdGFrZUFtb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFB3RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQIFC3VzZXJBZGRyZXNzBRJuZXdVc2VyVG90YWxMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwILdXNlckFkZHJlc3MLY2xhaW1BbW91bnQEDSR0MDEwNjIzMTA2ODMJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDEwNjIzMTA2ODMCXzEECHRvVW5sb2NrCAUNJHQwMTA2MjMxMDY4MwJfMgQGY2hlY2tzCQDMCAIDCQEBIQEFC2lzRm9yY2VTdG9wBgkBCHRocm93RXJyAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGYCBQtjbGFpbUFtb3VudAAABgkBCHRocm93RXJyAQIlY2xhaW0gYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAZwIFB3RvQ2xhaW0FC2NsYWltQW1vdW50BgkBCHRocm93RXJyAQI0Y2xhaW0gYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHVubG9ja2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApuZXdUb0NsYWltCQBlAgUHdG9DbGFpbQULY2xhaW1BbW91bnQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQUIdG9VbmxvY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFC2NsYWltQW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPZ2V0U3Rha2VBY3Rpb25zBAtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyTGVhc2luZ0Ftb3VudAFpBA0kdDAxMTQ0NDExNTA0CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxMTQ0NDExNTA0Al8xBAh0b1VubG9jawgFDSR0MDExNDQ0MTE1MDQCXzIEDXBheW1lbnRBbW91bnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAAAAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAlhdmFpbGFibGUJAGQCCQBkAgUIdG9VbmxvY2sFB3RvQ2xhaW0FDXBheW1lbnRBbW91bnQEBmNoZWNrcwkAzAgCAwkBASEBBQtpc0ZvcmNlU3RvcAYJAQh0aHJvd0VycgECHWNvbnRyYWN0IGlzIHRlbXBvcmFyeSBzdG9wcGVkCQDMCAIDCQBnAgABCQCQAwEIBQFpCHBheW1lbnRzBgkBCHRocm93RXJyAQIRbWF4aW11bSAxIHBheW1lbnQJAMwIAgMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAABgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMYXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmU6CQDMCAIFDWFzc2V0SWRTdHJpbmcFA25pbAIBIAkAzAgCAwkAZgIFEXVzZXJMZWFzaW5nQW1vdW50AAAGCQEIdGhyb3dFcnIBAh9hbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUJYXZhaWxhYmxlBRF1c2VyTGVhc2luZ0Ftb3VudAYJAQh0aHJvd0VycgECO2Ftb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCAocGF5bWVudCArIGF2YWlsYWJsZSkgYW1vdW50CQDMCAIDCQBnAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQGCQACAQIwYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIG9yIGVxdWFsIHBheW1lbnQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQtub2RlQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQtub2RlQWRkcmVzcwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDEyNTc1MTI2NDgJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQ0kdDAxMjU3NTEyNjQ4Al8xBA5ub2RlTmV4dExlYXNlZAgFDSR0MDEyNTc1MTI2NDgCXzIEEG5ld05vZGVOZXh0TGVhc2UJAGQCBQ5ub2RlTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQEDSR0MDEyNzE2MTI4MDIJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAUNJHQwMTI3MTYxMjgwMgJfMQQOdXNlck5leHRMZWFzZWQIBQ0kdDAxMjcxNjEyODAyAl8yBBFuZXdVc2VyTmV4dExlYXNlZAkAZAIFDnVzZXJOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQSZnJvbVVubG9ja2VkQW1vdW50CQBlAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQEC25ld1RvVW5sb2NrCQCWAwEJAMwIAgAACQDMCAIJAGUCBQh0b1VubG9jawUSZnJvbVVubG9ja2VkQW1vdW50BQNuaWwECm5ld1RvQ2xhaW0JAJcDAQkAzAgCBQd0b0NsYWltCQDMCAIJAGQCBQd0b0NsYWltCQBlAgUIdG9VbmxvY2sFEmZyb21VbmxvY2tlZEFtb3VudAUDbmlsBA91c2VyVG90YWxMb2NrZWQJARJnZXRVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwQSbmV3VXNlclRvdGFsTG9ja2VkCQBkAgUPdXNlclRvdGFsTG9ja2VkBRF1c2VyTGVhc2luZ0Ftb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFCm5ld1RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQIFC3VzZXJBZGRyZXNzBRJuZXdVc2VyVG90YWxMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MBaQQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIgcGF5bWVudCBzaXplIHNob3VsZCBiZSBleGFjdGx5IDEFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBD2dldFN0YWtlQWN0aW9ucwQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFAWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BHGdldFNldE5ld1BlcmlvZExlbmd0aEFjdGlvbnMBD25ld1BlcmlvZExlbmd0aAQFY2hlY2sJAMwIAgMJAGYCBQ9uZXdQZXJpb2RMZW5ndGgAAAYJAQh0aHJvd0VycgECJnBlcmlvZCBsZW5ndGggc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlQZXJpb2RMZW5ndGgFD25ld1BlcmlvZExlbmd0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0BQZoZWlnaHQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5UGVyaW9kT2Zmc2V0SWQJAGQCBQ9jdXJyZW50UGVyaW9kSWQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0BRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlQZXJpb2RMZW5ndGgFD25ld1BlcmlvZExlbmd0aAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuDAFpARJzZXROZXdQZXJpb2RMZW5ndGgBD25ld1BlcmlvZExlbmd0aAQGY2hlY2tzCQDMCAIDCQENaXNJbkFkbWluTGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIaY2FsbGVyIGlzIG5vdCBpbiBhZG1pbkxpc3QFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBHGdldFNldE5ld1BlcmlvZExlbmd0aEFjdGlvbnMBBQ9uZXdQZXJpb2RMZW5ndGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc2V0Rm9yY2VTdG9wRmxhZwEEc3RvcAQFY2hlY2sJAMwIAgMJAQ1pc0luQWRtaW5MaXN0AQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhpjYWxsZXIgaXMgbm90IGluIGFkbWluTGlzdAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa2V5Rm9yY2VTdG9wBQRzdG9wBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZ2V0Tm9kZURhdGFSRUFET05MWQELbm9kZUFkZHJlc3MEDSR0MDE1MjQ1MTUzMDkJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQMY3VycmVudExlYXNlCAUNJHQwMTUyNDUxNTMwOQJfMQQKbmV4dExlYXNlZAgFDSR0MDE1MjQ1MTUzMDkCXzIJAJQKAgUDbmlsCQCXCgUFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDGN1cnJlbnRMZWFzZQUQbmV4dFBlcmlvZEhlaWdodAUKbmV4dExlYXNlZAUGaGVpZ2h0AWkBGmdldFVzZXJMZWFzaW5nRGF0YVJFQURPTkxZAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwQNJHQwMTU2NzkxNTc1NgkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQMY3VycmVudExlYXNlCAUNJHQwMTU2NzkxNTc1NgJfMQQKbmV4dExlYXNlZAgFDSR0MDE1Njc5MTU3NTYCXzIJAJQKAgUDbmlsCQCXCgUFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDGN1cnJlbnRMZWFzZQUQbmV4dFBlcmlvZEhlaWdodAUKbmV4dExlYXNlZAUGaGVpZ2h0AWkBE2dldFVzZXJEYXRhUkVBRE9OTFkBC3VzZXJBZGRyZXNzBA0kdDAxNjExOTE2MTc5CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxNjExOTE2MTc5Al8xBAh0b1VubG9jawgFDSR0MDE2MTE5MTYxNzkCXzIED3VzZXJUb3RhbExvY2tlZAkBEmdldFVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAkAmAoGBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQd0b0NsYWltBRBuZXh0UGVyaW9kSGVpZ2h0BQh0b1VubG9jawUPdXNlclRvdGFsTG9ja2VkBQZoZWlnaHQBaQEObGVhc2VCeUFkZHJlc3MCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzCQEaZ2V0U3Rha2VGcm9tUGF5bWVudEFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFAWkBaQEFbGVhc2UBC25vZGVBZGRyZXNzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpAQ9sZWFzZUZyb21Mb2NrZWQCC25vZGVBZGRyZXNzBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEPZ2V0U3Rha2VBY3Rpb25zBAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQZhbW91bnQFAWkBaQELY2FuY2VsTGVhc2UCC25vZGVBZGRyZXNzBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQERZ2V0VW5zdGFrZUFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFBmFtb3VudAFpAQVjbGFpbQEGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQZhbW91bnQBaQEIY2xhaW1BbGwABAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDSR0MDE3MTkzMTcyNTMJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDE3MTkzMTcyNTMCXzEECHRvVW5sb2NrCAUNJHQwMTcxOTMxNzI1MwJfMgQGY2hlY2tzCQDMCAIDCQBmAgUHdG9DbGFpbQAABgkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEXZ2V0Q2xhaW1VbmxvY2tlZEFjdGlvbnMCBQt1c2VyQWRkcmVzcwUHdG9DbGFpbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXJHASw9", "height": 2996092, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6Vuk1Cyykzh3aLD34UKE3CvGpBQYNkDTgvSMZLCe3gEm Next: CLyiMgWuJ6HyXx8KisjU7xsDap9ownmuqWCHfxWqQtQD Diff:
Old | New | Differences | |
---|---|---|---|
30 | 30 | then (((height - l) / k) + j) | |
31 | 31 | else max([0, (j - 1)]) | |
32 | 32 | ||
33 | - | let n = if ((l == -1)) | |
33 | + | let n = if (if ((l == -1)) | |
34 | + | then true | |
35 | + | else if ((m == 0)) | |
36 | + | then (l > height) | |
37 | + | else false) | |
34 | 38 | then 0 | |
35 | 39 | else (l + ((m - j) * k)) | |
36 | 40 | ||
37 | - | let o = if ((l == -1)) | |
41 | + | let o = if (if ((l == -1)) | |
42 | + | then true | |
43 | + | else if ((m == 0)) | |
44 | + | then (l > height) | |
45 | + | else false) | |
38 | 46 | then 0 | |
39 | 47 | else (n + k) | |
40 | 48 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "l2mp_leasing.ride" | |
5 | 5 | ||
6 | 6 | let b = "__" | |
7 | 7 | ||
8 | 8 | func c (d) = throw(((a + ": ") + d)) | |
9 | 9 | ||
10 | 10 | ||
11 | 11 | let e = makeString(["%s", "assetId"], b) | |
12 | 12 | ||
13 | 13 | let f = makeString(["%s", "forceStop"], b) | |
14 | 14 | ||
15 | 15 | let g = makeString(["%s", "offsetId"], b) | |
16 | 16 | ||
17 | 17 | let h = makeString(["%s", "offsetHeight"], b) | |
18 | 18 | ||
19 | 19 | let i = makeString(["%s", "periodLength"], b) | |
20 | 20 | ||
21 | 21 | let j = valueOrElse(getInteger(this, g), 0) | |
22 | 22 | ||
23 | 23 | let k = valueOrElse(getInteger(this, i), 10000) | |
24 | 24 | ||
25 | 25 | let l = valueOrElse(getInteger(this, h), -1) | |
26 | 26 | ||
27 | 27 | let m = if (if ((height > l)) | |
28 | 28 | then (l != -1) | |
29 | 29 | else false) | |
30 | 30 | then (((height - l) / k) + j) | |
31 | 31 | else max([0, (j - 1)]) | |
32 | 32 | ||
33 | - | let n = if ((l == -1)) | |
33 | + | let n = if (if ((l == -1)) | |
34 | + | then true | |
35 | + | else if ((m == 0)) | |
36 | + | then (l > height) | |
37 | + | else false) | |
34 | 38 | then 0 | |
35 | 39 | else (l + ((m - j) * k)) | |
36 | 40 | ||
37 | - | let o = if ((l == -1)) | |
41 | + | let o = if (if ((l == -1)) | |
42 | + | then true | |
43 | + | else if ((m == 0)) | |
44 | + | then (l > height) | |
45 | + | else false) | |
38 | 46 | then 0 | |
39 | 47 | else (n + k) | |
40 | 48 | ||
41 | 49 | func p (q) = makeString(["%s", q], b) | |
42 | 50 | ||
43 | 51 | ||
44 | 52 | func r (s,q) = makeString(["%s%s", q, s], b) | |
45 | 53 | ||
46 | 54 | ||
47 | 55 | func t (s) = makeString(["%s%s", "toClaim", s], b) | |
48 | 56 | ||
49 | 57 | ||
50 | 58 | func u (s) = makeString(["%s%s", "userTotalLocked", s], b) | |
51 | 59 | ||
52 | 60 | ||
53 | 61 | func v (q) = { | |
54 | 62 | let w = if ((l == -1)) | |
55 | 63 | then 0 | |
56 | 64 | else height | |
57 | 65 | makeString(["%s%d", q, toString(w)], b) | |
58 | 66 | } | |
59 | 67 | ||
60 | 68 | ||
61 | 69 | func x (q,s) = { | |
62 | 70 | let w = if ((l == -1)) | |
63 | 71 | then 0 | |
64 | 72 | else height | |
65 | 73 | makeString(["%s%s%d", q, s, toString(w)], b) | |
66 | 74 | } | |
67 | 75 | ||
68 | 76 | ||
69 | 77 | let y = valueOrElse(getString(this, e), "WAVES") | |
70 | 78 | ||
71 | 79 | let z = if ((y == "WAVES")) | |
72 | 80 | then unit | |
73 | 81 | else fromBase58String(y) | |
74 | 82 | ||
75 | 83 | let A = valueOrElse(getBoolean(this, f), false) | |
76 | 84 | ||
77 | 85 | func B (C) = { | |
78 | 86 | let D = addressFromString(C) | |
79 | 87 | if ($isInstanceOf(D, "Address")) | |
80 | 88 | then { | |
81 | 89 | let E = D | |
82 | 90 | true | |
83 | 91 | } | |
84 | 92 | else false | |
85 | 93 | } | |
86 | 94 | ||
87 | 95 | ||
88 | 96 | let F = 5 | |
89 | 97 | ||
90 | 98 | let G = 3 | |
91 | 99 | ||
92 | 100 | let H = 32 | |
93 | 101 | ||
94 | 102 | func I (J) = makeString(["%s%s%s", "allowTxId", J], b) | |
95 | 103 | ||
96 | 104 | ||
97 | 105 | func K (L,M) = makeString([L, M], b) | |
98 | 106 | ||
99 | 107 | ||
100 | 108 | func N () = makeString(["%s", "adminAddressList"], b) | |
101 | 109 | ||
102 | 110 | ||
103 | 111 | func O () = makeString(["%s", "txId"], b) | |
104 | 112 | ||
105 | 113 | ||
106 | 114 | func P (L,Q) = { | |
107 | 115 | let R = K(L, Q) | |
108 | 116 | valueOrElse(getInteger(R), 0) | |
109 | 117 | } | |
110 | 118 | ||
111 | 119 | ||
112 | 120 | func S () = { | |
113 | 121 | let D = getString(this, N()) | |
114 | 122 | if ($isInstanceOf(D, "String")) | |
115 | 123 | then { | |
116 | 124 | let T = D | |
117 | 125 | split(T, b) | |
118 | 126 | } | |
119 | 127 | else nil | |
120 | 128 | } | |
121 | 129 | ||
122 | 130 | ||
123 | 131 | func U (C) = containsElement(S(), C) | |
124 | 132 | ||
125 | 133 | ||
126 | 134 | func V (E,M) = { | |
127 | 135 | let W = E | |
128 | 136 | let X = W._1 | |
129 | 137 | let L = W._2 | |
130 | 138 | $Tuple2((X :+ K(L, M)), L) | |
131 | 139 | } | |
132 | 140 | ||
133 | 141 | ||
134 | 142 | func Y (Z) = { | |
135 | 143 | let aa = N() | |
136 | 144 | let ab = { | |
137 | 145 | let ac = S() | |
138 | 146 | let ad = size(ac) | |
139 | 147 | let ae = $Tuple2(nil, Z) | |
140 | 148 | func af (ag,ah) = if ((ah >= ad)) | |
141 | 149 | then ag | |
142 | 150 | else V(ag, ac[ah]) | |
143 | 151 | ||
144 | 152 | func ai (ag,ah) = if ((ah >= ad)) | |
145 | 153 | then ag | |
146 | 154 | else throw("List size exceeds 5") | |
147 | 155 | ||
148 | 156 | ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5) | |
149 | 157 | } | |
150 | 158 | let X = ab._1 | |
151 | 159 | let L = ab._2 | |
152 | 160 | X | |
153 | 161 | } | |
154 | 162 | ||
155 | 163 | ||
156 | 164 | func aj (X,R) = (X + valueOrElse(getInteger(R), 0)) | |
157 | 165 | ||
158 | 166 | ||
159 | 167 | func ak (L) = { | |
160 | 168 | let al = Y(L) | |
161 | 169 | let ac = al | |
162 | 170 | let ad = size(ac) | |
163 | 171 | let ae = 0 | |
164 | 172 | func af (ag,ah) = if ((ah >= ad)) | |
165 | 173 | then ag | |
166 | 174 | else aj(ag, ac[ah]) | |
167 | 175 | ||
168 | 176 | func ai (ag,ah) = if ((ah >= ad)) | |
169 | 177 | then ag | |
170 | 178 | else throw("List size exceeds 5") | |
171 | 179 | ||
172 | 180 | ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5) | |
173 | 181 | } | |
174 | 182 | ||
175 | 183 | ||
176 | 184 | func am (X,an) = (X :+ DeleteEntry(an)) | |
177 | 185 | ||
178 | 186 | ||
179 | 187 | func ao (L) = { | |
180 | 188 | let al = Y(L) | |
181 | 189 | let ac = al | |
182 | 190 | let ad = size(ac) | |
183 | 191 | let ae = nil | |
184 | 192 | func af (ag,ah) = if ((ah >= ad)) | |
185 | 193 | then ag | |
186 | 194 | else am(ag, ac[ah]) | |
187 | 195 | ||
188 | 196 | func ai (ag,ah) = if ((ah >= ad)) | |
189 | 197 | then ag | |
190 | 198 | else throw("List size exceeds 5") | |
191 | 199 | ||
192 | 200 | ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5) | |
193 | 201 | } | |
194 | 202 | ||
195 | 203 | ||
196 | 204 | func ap (aq,Z,ar,as) = { | |
197 | 205 | let R = K(Z, aq) | |
198 | 206 | let at = P(Z, aq) | |
199 | 207 | let au = if (!(U(aq))) | |
200 | 208 | then c((("Address: " + aq) + " not in Admin list")) | |
201 | 209 | else if ((at == 1)) | |
202 | 210 | then c((R + " you already voted")) | |
203 | 211 | else unit | |
204 | 212 | if ((au == au)) | |
205 | 213 | then { | |
206 | 214 | let al = ak(Z) | |
207 | 215 | if (((al + 1) >= ar)) | |
208 | 216 | then { | |
209 | 217 | let av = ao(Z) | |
210 | 218 | (av ++ as) | |
211 | 219 | } | |
212 | 220 | else [IntegerEntry(R, 1)] | |
213 | 221 | } | |
214 | 222 | else throw("Strict value is not equal to itself.") | |
215 | 223 | } | |
216 | 224 | ||
217 | 225 | ||
218 | 226 | func aw (q,ax,ay) = { | |
219 | 227 | let az = makeString(["%d%d%d%d", toString(n), toString(ax), toString(o), toString(ay)], b) | |
220 | 228 | StringEntry(p(q), az) | |
221 | 229 | } | |
222 | 230 | ||
223 | 231 | ||
224 | 232 | func aA (q) = { | |
225 | 233 | let aB = getString(this, p(q)) | |
226 | 234 | let D = aB | |
227 | 235 | if ($isInstanceOf(D, "String")) | |
228 | 236 | then { | |
229 | 237 | let aC = D | |
230 | 238 | let aD = split(aC, b) | |
231 | 239 | let aE = parseIntValue(aD[1]) | |
232 | 240 | let aF = parseIntValue(aD[2]) | |
233 | 241 | let aG = parseIntValue(aD[3]) | |
234 | 242 | let aH = parseIntValue(aD[4]) | |
235 | 243 | if (if ((aG > height)) | |
236 | 244 | then true | |
237 | 245 | else (l == -1)) | |
238 | 246 | then $Tuple2(aF, aH) | |
239 | 247 | else $Tuple2(aH, aH) | |
240 | 248 | } | |
241 | 249 | else $Tuple2(0, 0) | |
242 | 250 | } | |
243 | 251 | ||
244 | 252 | ||
245 | 253 | func aI (q,s,aJ,aK) = { | |
246 | 254 | let az = makeString(["%d%d%d%d", toString(n), toString(aJ), toString(o), toString(aK)], b) | |
247 | 255 | StringEntry(r(s, q), az) | |
248 | 256 | } | |
249 | 257 | ||
250 | 258 | ||
251 | 259 | func aL (q,s) = { | |
252 | 260 | let aM = getString(this, r(s, q)) | |
253 | 261 | let D = aM | |
254 | 262 | if ($isInstanceOf(D, "String")) | |
255 | 263 | then { | |
256 | 264 | let aC = D | |
257 | 265 | let aD = split(aC, b) | |
258 | 266 | let aN = parseIntValue(aD[1]) | |
259 | 267 | let aJ = parseIntValue(aD[2]) | |
260 | 268 | let aO = parseIntValue(aD[3]) | |
261 | 269 | let aK = parseIntValue(aD[4]) | |
262 | 270 | if (if ((aO > height)) | |
263 | 271 | then true | |
264 | 272 | else (l == -1)) | |
265 | 273 | then $Tuple2(aJ, aK) | |
266 | 274 | else $Tuple2(aK, aK) | |
267 | 275 | } | |
268 | 276 | else $Tuple2(0, 0) | |
269 | 277 | } | |
270 | 278 | ||
271 | 279 | ||
272 | 280 | func aP (s,aQ,aR) = { | |
273 | 281 | let az = makeString(["%d%d%d%d", toString(n), toString(aQ), toString(o), toString(aR)], b) | |
274 | 282 | StringEntry(t(s), az) | |
275 | 283 | } | |
276 | 284 | ||
277 | 285 | ||
278 | 286 | func aS (s) = { | |
279 | 287 | let aT = getString(this, t(s)) | |
280 | 288 | let D = aT | |
281 | 289 | if ($isInstanceOf(D, "String")) | |
282 | 290 | then { | |
283 | 291 | let aC = D | |
284 | 292 | let aD = split(aC, b) | |
285 | 293 | let aU = parseIntValue(aD[1]) | |
286 | 294 | let aQ = parseIntValue(aD[2]) | |
287 | 295 | let aV = parseIntValue(aD[3]) | |
288 | 296 | let aR = parseIntValue(aD[4]) | |
289 | 297 | if (if ((aV > height)) | |
290 | 298 | then true | |
291 | 299 | else (m == 0)) | |
292 | 300 | then $Tuple2(aQ, aR) | |
293 | 301 | else $Tuple2((aQ + aR), 0) | |
294 | 302 | } | |
295 | 303 | else $Tuple2(0, 0) | |
296 | 304 | } | |
297 | 305 | ||
298 | 306 | ||
299 | 307 | func aW (s,aX) = IntegerEntry(u(s), aX) | |
300 | 308 | ||
301 | 309 | ||
302 | 310 | func aY (s) = valueOrElse(getInteger(this, u(s)), 0) | |
303 | 311 | ||
304 | 312 | ||
305 | 313 | func aZ (q,s,ba) = { | |
306 | 314 | let bb = aA(q) | |
307 | 315 | let aF = bb._1 | |
308 | 316 | let aH = bb._2 | |
309 | 317 | let bc = aL(q, s) | |
310 | 318 | let aJ = bc._1 | |
311 | 319 | let aK = bc._2 | |
312 | 320 | let bd = [if (!(A)) | |
313 | 321 | then true | |
314 | 322 | else c("contract is temporary stopped"), if ((ba > 0)) | |
315 | 323 | then true | |
316 | 324 | else c("unstake amount should be greater than 0"), if ((aK >= ba)) | |
317 | 325 | then true | |
318 | 326 | else c("unstake amount should be less or equal user staked amount"), if ((aH >= ba)) | |
319 | 327 | then true | |
320 | 328 | else c("unstake amount should be less or equal node staked amount"), if (B(q)) | |
321 | 329 | then true | |
322 | 330 | else c(makeString(["node address is not valid:", q], " ")), if (B(s)) | |
323 | 331 | then true | |
324 | 332 | else c(makeString(["user address is not valid:", s], " "))] | |
325 | 333 | if ((bd == bd)) | |
326 | 334 | then { | |
327 | 335 | let be = (aH - ba) | |
328 | 336 | let bf = (aK - ba) | |
329 | 337 | let bg = aS(s) | |
330 | 338 | let aQ = bg._1 | |
331 | 339 | let aR = bg._2 | |
332 | 340 | let bh = (aR + ba) | |
333 | 341 | let aX = aY(s) | |
334 | 342 | let bi = (aX - ba) | |
335 | 343 | [aw(q, aF, be), aI(q, s, aJ, bf), aP(s, aQ, bh), aW(s, bi), IntegerEntry(v(q), be), IntegerEntry(x(q, s), bf)] | |
336 | 344 | } | |
337 | 345 | else throw("Strict value is not equal to itself.") | |
338 | 346 | } | |
339 | 347 | ||
340 | 348 | ||
341 | 349 | func bj (s,bk) = { | |
342 | 350 | let bl = aS(s) | |
343 | 351 | let aQ = bl._1 | |
344 | 352 | let aR = bl._2 | |
345 | 353 | let bd = [if (!(A)) | |
346 | 354 | then true | |
347 | 355 | else c("contract is temporary stopped"), if ((bk > 0)) | |
348 | 356 | then true | |
349 | 357 | else c("claim amount should be greater than 0"), if ((aQ >= bk)) | |
350 | 358 | then true | |
351 | 359 | else c("claim amount should be less or equal unlocked amount"), if (B(s)) | |
352 | 360 | then true | |
353 | 361 | else c(makeString(["user address is not valid:", s], " "))] | |
354 | 362 | if ((bd == bd)) | |
355 | 363 | then { | |
356 | 364 | let bm = (aQ - bk) | |
357 | 365 | [aP(s, bm, aR), ScriptTransfer(addressFromStringValue(s), bk, z)] | |
358 | 366 | } | |
359 | 367 | else throw("Strict value is not equal to itself.") | |
360 | 368 | } | |
361 | 369 | ||
362 | 370 | ||
363 | 371 | func bn (q,s,bo,bp) = { | |
364 | 372 | let bq = aS(s) | |
365 | 373 | let aQ = bq._1 | |
366 | 374 | let aR = bq._2 | |
367 | 375 | let br = if ((size(bp.payments) == 0)) | |
368 | 376 | then 0 | |
369 | 377 | else bp.payments[0].amount | |
370 | 378 | let bs = ((aR + aQ) + br) | |
371 | 379 | let bd = [if (!(A)) | |
372 | 380 | then true | |
373 | 381 | else c("contract is temporary stopped"), if ((1 >= size(bp.payments))) | |
374 | 382 | then true | |
375 | 383 | else c("maximum 1 payment"), if (if ((size(bp.payments) == 0)) | |
376 | 384 | then true | |
377 | 385 | else (bp.payments[0].assetId == z)) | |
378 | 386 | then true | |
379 | 387 | else c(makeString(["payment assetId should be:", y], " ")), if ((bo > 0)) | |
380 | 388 | then true | |
381 | 389 | else c("amount should be greater than 0"), if ((bs >= bo)) | |
382 | 390 | then true | |
383 | 391 | else c("amount should be less or equal (payment + available) amount"), if ((bo >= br)) | |
384 | 392 | then true | |
385 | 393 | else throw("amount should be greater or equal payment amount"), if (B(q)) | |
386 | 394 | then true | |
387 | 395 | else c(makeString(["node address is not valid:", q], " ")), if (B(s)) | |
388 | 396 | then true | |
389 | 397 | else c(makeString(["user address is not valid:", s], " "))] | |
390 | 398 | if ((bd == bd)) | |
391 | 399 | then { | |
392 | 400 | let bt = aA(q) | |
393 | 401 | let aF = bt._1 | |
394 | 402 | let aH = bt._2 | |
395 | 403 | let be = (aH + bo) | |
396 | 404 | let bu = aL(q, s) | |
397 | 405 | let aJ = bu._1 | |
398 | 406 | let aK = bu._2 | |
399 | 407 | let bf = (aK + bo) | |
400 | 408 | let bv = (bo - br) | |
401 | 409 | let bh = max([0, (aR - bv)]) | |
402 | 410 | let bm = min([aQ, (aQ + (aR - bv))]) | |
403 | 411 | let aX = aY(s) | |
404 | 412 | let bi = (aX + bo) | |
405 | 413 | [aw(q, aF, be), aI(q, s, aJ, bf), aP(s, bm, bh), aW(s, bi), IntegerEntry(v(q), be), IntegerEntry(x(q, s), bf)] | |
406 | 414 | } | |
407 | 415 | else throw("Strict value is not equal to itself.") | |
408 | 416 | } | |
409 | 417 | ||
410 | 418 | ||
411 | 419 | func bw (q,s,bp) = { | |
412 | 420 | let bd = [if ((size(bp.payments) == 1)) | |
413 | 421 | then true | |
414 | 422 | else c("payment size should be exactly 1")] | |
415 | 423 | if ((bd == bd)) | |
416 | 424 | then bn(q, s, bp.payments[0].amount, bp) | |
417 | 425 | else throw("Strict value is not equal to itself.") | |
418 | 426 | } | |
419 | 427 | ||
420 | 428 | ||
421 | 429 | func bx (by) = { | |
422 | 430 | let bz = [if ((by > 0)) | |
423 | 431 | then true | |
424 | 432 | else c("period length should be greater than 0")] | |
425 | 433 | if ((bz == bz)) | |
426 | 434 | then if ((l == -1)) | |
427 | 435 | then [IntegerEntry(i, by), IntegerEntry(h, height)] | |
428 | 436 | else [IntegerEntry(g, (m + 1)), IntegerEntry(h, o), IntegerEntry(i, by)] | |
429 | 437 | else throw("Strict value is not equal to itself.") | |
430 | 438 | } | |
431 | 439 | ||
432 | 440 | ||
433 | 441 | @Callable(bp) | |
434 | 442 | func setNewPeriodLength (by) = { | |
435 | 443 | let bd = [if (U(toString(bp.caller))) | |
436 | 444 | then true | |
437 | 445 | else c("caller is not in adminList")] | |
438 | 446 | if ((bd == bd)) | |
439 | 447 | then bx(by) | |
440 | 448 | else throw("Strict value is not equal to itself.") | |
441 | 449 | } | |
442 | 450 | ||
443 | 451 | ||
444 | 452 | ||
445 | 453 | @Callable(bp) | |
446 | 454 | func setForceStopFlag (bA) = { | |
447 | 455 | let bz = [if (U(toString(bp.caller))) | |
448 | 456 | then true | |
449 | 457 | else c("caller is not in adminList")] | |
450 | 458 | if ((bz == bz)) | |
451 | 459 | then [BooleanEntry(f, bA)] | |
452 | 460 | else throw("Strict value is not equal to itself.") | |
453 | 461 | } | |
454 | 462 | ||
455 | 463 | ||
456 | 464 | ||
457 | 465 | @Callable(bp) | |
458 | 466 | func getNodeDataREADONLY (q) = { | |
459 | 467 | let bB = aA(q) | |
460 | 468 | let bC = bB._1 | |
461 | 469 | let ay = bB._2 | |
462 | 470 | $Tuple2(nil, $Tuple5(n, bC, o, ay, height)) | |
463 | 471 | } | |
464 | 472 | ||
465 | 473 | ||
466 | 474 | ||
467 | 475 | @Callable(bp) | |
468 | 476 | func getUserLeasingDataREADONLY (q,s) = { | |
469 | 477 | let bD = aL(q, s) | |
470 | 478 | let bC = bD._1 | |
471 | 479 | let ay = bD._2 | |
472 | 480 | $Tuple2(nil, $Tuple5(n, bC, o, ay, height)) | |
473 | 481 | } | |
474 | 482 | ||
475 | 483 | ||
476 | 484 | ||
477 | 485 | @Callable(bp) | |
478 | 486 | func getUserDataREADONLY (s) = { | |
479 | 487 | let bE = aS(s) | |
480 | 488 | let aQ = bE._1 | |
481 | 489 | let aR = bE._2 | |
482 | 490 | let aX = aY(s) | |
483 | 491 | $Tuple2(nil, $Tuple6(n, aQ, o, aR, aX, height)) | |
484 | 492 | } | |
485 | 493 | ||
486 | 494 | ||
487 | 495 | ||
488 | 496 | @Callable(bp) | |
489 | 497 | func leaseByAddress (q,s) = bw(q, s, bp) | |
490 | 498 | ||
491 | 499 | ||
492 | 500 | ||
493 | 501 | @Callable(bp) | |
494 | 502 | func lease (q) = { | |
495 | 503 | let s = toString(bp.caller) | |
496 | 504 | bw(q, s, bp) | |
497 | 505 | } | |
498 | 506 | ||
499 | 507 | ||
500 | 508 | ||
501 | 509 | @Callable(bp) | |
502 | 510 | func leaseFromLocked (q,bF) = { | |
503 | 511 | let s = toString(bp.caller) | |
504 | 512 | bn(q, s, bF, bp) | |
505 | 513 | } | |
506 | 514 | ||
507 | 515 | ||
508 | 516 | ||
509 | 517 | @Callable(bp) | |
510 | 518 | func cancelLease (q,bF) = { | |
511 | 519 | let s = toString(bp.caller) | |
512 | 520 | aZ(q, s, bF) | |
513 | 521 | } | |
514 | 522 | ||
515 | 523 | ||
516 | 524 | ||
517 | 525 | @Callable(bp) | |
518 | 526 | func claim (bF) = { | |
519 | 527 | let s = toString(bp.caller) | |
520 | 528 | bj(s, bF) | |
521 | 529 | } | |
522 | 530 | ||
523 | 531 | ||
524 | 532 | ||
525 | 533 | @Callable(bp) | |
526 | 534 | func claimAll () = { | |
527 | 535 | let s = toString(bp.caller) | |
528 | 536 | let bG = aS(s) | |
529 | 537 | let aQ = bG._1 | |
530 | 538 | let aR = bG._2 | |
531 | 539 | let bd = [if ((aQ > 0)) | |
532 | 540 | then true | |
533 | 541 | else c("nothing to claim")] | |
534 | 542 | if ((bd == bd)) | |
535 | 543 | then bj(s, aQ) | |
536 | 544 | else throw("Strict value is not equal to itself.") | |
537 | 545 | } | |
538 | 546 | ||
539 | 547 | ||
540 | 548 | ||
541 | 549 | @Callable(bp) | |
542 | 550 | func voteForTxId (J) = { | |
543 | 551 | let aq = toBase58String(bp.caller.bytes) | |
544 | 552 | let Z = I(J) | |
545 | 553 | let X = [StringEntry(O(), J)] | |
546 | 554 | let bH = getString(this, O()) | |
547 | 555 | let au = [if ((size(fromBase58String(J)) == H)) | |
548 | 556 | then true | |
549 | 557 | else c((J + " is not valid txId")), if (if ((bH == unit)) | |
550 | 558 | then true | |
551 | 559 | else (value(bH) != J)) | |
552 | 560 | then true | |
553 | 561 | else c((J + " is already allowed"))] | |
554 | 562 | if ((au == au)) | |
555 | 563 | then ap(aq, Z, G, X) | |
556 | 564 | else throw("Strict value is not equal to itself.") | |
557 | 565 | } | |
558 | 566 | ||
559 | 567 | ||
560 | 568 | @Verifier(bI) | |
561 | 569 | func bJ () = { | |
562 | 570 | let bK = (bI.id == fromBase58String(valueOrElse(getString(this, O()), ""))) | |
563 | 571 | let bL = if ((size(S()) >= G)) | |
564 | 572 | then false | |
565 | 573 | else sigVerify(bI.bodyBytes, bI.proofs[0], bI.senderPublicKey) | |
566 | 574 | if (bK) | |
567 | 575 | then true | |
568 | 576 | else bL | |
569 | 577 | } | |
570 | 578 |
github/deemru/w8io/026f985 47.91 ms ◑