tx · 3CgS6g187uELSF8hEPPQ8sNDnf5arpLZ3SLUdA2mT1Tb

3Mynj79w9PikhwUwMwFPk2vifkm8zkDt2Zt:  -0.01400000 Waves

2022.03.11 17:25 [1959405] smart account 3Mynj79w9PikhwUwMwFPk2vifkm8zkDt2Zt > SELF 0.00000000 Waves

{ "type": 13, "id": "3CgS6g187uELSF8hEPPQ8sNDnf5arpLZ3SLUdA2mT1Tb", "fee": 1400000, "feeAssetId": null, "timestamp": 1647008756270, "version": 1, "sender": "3Mynj79w9PikhwUwMwFPk2vifkm8zkDt2Zt", "senderPublicKey": "5195SwZ4ifX6bBstZ6tN31kEQFVHaKpFYLc1GCa3Myrh", "proofs": [ "47xSPU1AfpkBLLcP35BhgkKDFF3jbeYTUqyyPeqjddzgBT4KqJNAvAg1zEWGeaV1LjKevFmQsDBtPSbiY6kyRdEb" ], "script": "base64:AAIFAAAAAAAAACIIAhIJCgcBAQEBAQgBEgASBAoCCAgSBAoCCAgSAwoBCBIAAAAALwEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAAAAAANTRVACAAAAAl9fAAAAAAhCVUZTQ0FMRQkAATYAAAABAA3gtrOnZAAAAQAAAB1jb252ZXJ0UHJpY2VBc3NldEludG9JZG9Bc3NldAAAAAUAAAAQcHJpY2VBc3NldEFtb3VudAAAAA5wcmljZUFzc2V0TVVMVAAAAAVwcmljZQAAAAlwcmljZU1VTFQAAAAMaWRvQXNzZXRNVUxUBAAAAA9iUHJpY2VBc3NldE1VTFQJAAE2AAAAAQUAAAAOcHJpY2VBc3NldE1VTFQEAAAADWJJZG9Bc3NldE1VTFQJAAE2AAAAAQUAAAAMaWRvQXNzZXRNVUxUBAAAAA5iUHJpY2VBc3NldEJVRgkAATwAAAADCQABNgAAAAEFAAAAEHByaWNlQXNzZXRBbW91bnQFAAAACEJVRlNDQUxFBQAAAA9iUHJpY2VBc3NldE1VTFQEAAAAD2JBbW91bnRBc3NldEJVRgkAATwAAAADBQAAAA5iUHJpY2VBc3NldEJVRgkAATYAAAABBQAAAAlwcmljZU1VTFQJAAE2AAAAAQUAAAAFcHJpY2UJAAGgAAAAAQkAATwAAAADBQAAAA9iQW1vdW50QXNzZXRCVUYJAAE2AAAAAQUAAAAMaWRvQXNzZXRNVUxUBQAAAAhCVUZTQ0FMRQAAAAAOSWR4Q2ZnSWRvU3RhcnQAAAAAAAAAAAEAAAAAEUlkeENmZ0lkb0R1cmF0aW9uAAAAAAAAAAACAAAAABBJZHhDZmdDbGFpbVN0YXJ0AAAAAAAAAAADAAAAABNJZHhDZmdDbGFpbUR1cmF0aW9uAAAAAAAAAAAEAAAAAAtJZHhDZmdQcmljZQAAAAAAAAAABQAAAAAPSWR4Q2ZnUHJpY2VNdWx0AAAAAAAAAAAGAAAAABBJZHhDZmdJZG9Bc3NldElkAAAAAAAAAAAHAAAAABJJZHhDZmdJZG9Bc3NldE11bHQAAAAAAAAAAAgAAAAAEklkeENmZ1ByaWNlQXNzZXRJZAAAAAAAAAAACQAAAAAUSWR4Q2ZnUHJpY2VBc3NldE11bHQAAAAAAAAAAAoAAAAAFUlkeENmZ01pbkludmVzdEFtb3VudAAAAAAAAAAACwEAAAANZnJvbWF0Q29uZmlnUwAAAAwAAAAIaWRvU3RhcnQAAAALaWRvRHVyYXRpb24AAAAKY2xhaW1TdGFydAAAAA1jbGFpbUR1cmF0aW9uAAAABXByaWNlAAAACXByaWNlTXVsdAAAAAxpZG9Bc3NldElkNTgAAAAMaWRvQXNzZXRNdWx0AAAADnByaWNlQXNzZXRJZDU4AAAADnByaWNlQXNzZXRNdWx0AAAAD21pbkludmVzdEFtb3VudAAAABN0b3RhbElkb0Fzc2V0VG9TZWxsCQAEuQAAAAIJAARMAAAAAgIAAAAYJWQlZCVkJWQlZCVkJXMlZCVzJWQlZCVkCQAETAAAAAIFAAAACGlkb1N0YXJ0CQAETAAAAAIFAAAAC2lkb0R1cmF0aW9uCQAETAAAAAIFAAAACmNsYWltU3RhcnQJAARMAAAAAgUAAAANY2xhaW1EdXJhdGlvbgkABEwAAAACBQAAAAVwcmljZQkABEwAAAACBQAAAAlwcmljZU11bHQJAARMAAAAAgUAAAAMaWRvQXNzZXRJZDU4CQAETAAAAAIFAAAADGlkb0Fzc2V0TXVsdAkABEwAAAACBQAAAA5wcmljZUFzc2V0SWQ1OAkABEwAAAACBQAAAA5wcmljZUFzc2V0TXVsdAkABEwAAAACBQAAAA9taW5JbnZlc3RBbW91bnQJAARMAAAAAgUAAAATdG90YWxJZG9Bc3NldFRvU2VsbAUAAAADbmlsBQAAAANTRVABAAAADGZyb21hdENvbmZpZwAAAAwAAAAIaWRvU3RhcnQAAAALaWRvRHVyYXRpb24AAAAKY2xhaW1TdGFydAAAAA1jbGFpbUR1cmF0aW9uAAAABXByaWNlAAAACXByaWNlTXVsdAAAAAxpZG9Bc3NldElkNTgAAAAMaWRvQXNzZXRNdWx0AAAADnByaWNlQXNzZXRJZDU4AAAADnByaWNlQXNzZXRNdWx0AAAAD21pbkludmVzdEFtb3VudAAAABN0b3RhbElkb0Fzc2V0VG9TZWxsCQEAAAANZnJvbWF0Q29uZmlnUwAAAAwJAAGkAAAAAQUAAAAIaWRvU3RhcnQJAAGkAAAAAQUAAAALaWRvRHVyYXRpb24JAAGkAAAAAQUAAAAKY2xhaW1TdGFydAkAAaQAAAABBQAAAA1jbGFpbUR1cmF0aW9uCQABpAAAAAEFAAAABXByaWNlCQABpAAAAAEFAAAACXByaWNlTXVsdAUAAAAMaWRvQXNzZXRJZDU4CQABpAAAAAEFAAAADGlkb0Fzc2V0TXVsdAUAAAAOcHJpY2VBc3NldElkNTgJAAGkAAAAAQUAAAAOcHJpY2VBc3NldE11bHQJAAGkAAAAAQUAAAAPbWluSW52ZXN0QW1vdW50CQABpAAAAAEFAAAAE3RvdGFsSWRvQXNzZXRUb1NlbGwAAAAAEUlkeEludlRvdGFsQW1vdW50AAAAAAAAAAABAAAAABVJZHhJbnZSZW1haW5pbmdBbW91bnQAAAAAAAAAAAIAAAAAHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50AAAAAAAAAAADAAAAABtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQAAAAAAAAAAAQAAAAAF0lkeEludkxhc3RDbGFpbWVkSGVpZ2h0AAAAAAAAAAAFAQAAAA9mb3JtYXRJbnZlc3RvclMAAAAFAAAAC3RvdGFsQW1vdW50AAAAD3JlbWFpbmluZ0Ftb3VudAAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQAAAARbGFzdENsYWltZWRIZWlnaHQJAAS5AAAAAgkABEwAAAACAgAAAAolZCVkJWQlZCVkCQAETAAAAAIFAAAAC3RvdGFsQW1vdW50CQAETAAAAAIFAAAAD3JlbWFpbmluZ0Ftb3VudAkABEwAAAACBQAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQJAARMAAAAAgUAAAARbGFzdENsYWltZWRIZWlnaHQFAAAAA25pbAUAAAADU0VQAQAAAA5mb3JtYXRJbnZlc3RvcgAAAAUAAAALdG90YWxBbW91bnQAAAAPcmVtYWluaW5nQW1vdW50AAAAF2NsYWltZWRQcmljZUFzc2V0QW1vdW50AAAAFWNsYWltZWRJZG9Bc3NldEFtb3VudAAAABFsYXN0Q2xhaW1lZEhlaWdodAkBAAAAD2Zvcm1hdEludmVzdG9yUwAAAAUJAAGkAAAAAQUAAAALdG90YWxBbW91bnQJAAGkAAAAAQUAAAAPcmVtYWluaW5nQW1vdW50CQABpAAAAAEFAAAAF2NsYWltZWRQcmljZUFzc2V0QW1vdW50CQABpAAAAAEFAAAAFWNsYWltZWRJZG9Bc3NldEFtb3VudAkAAaQAAAABBQAAABFsYXN0Q2xhaW1lZEhlaWdodAEAAAATZm9ybWF0SGlzdG9yeVJlY29yZAAAAAIAAAAQcHJpY2VBc3NldEFtb3VudAAAAA5pZG9Bc3NldEFtb3VudAkABLkAAAACCQAETAAAAAICAAAACCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAGaGVpZ2h0CQAETAAAAAIJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkAAaQAAAABBQAAABBwcmljZUFzc2V0QW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAOaWRvQXNzZXRBbW91bnQFAAAAA25pbAUAAAADU0VQAQAAAAlrZXlDb25maWcAAAAAAgAAAAolc19fY29uZmlnAQAAAAtrZXlJbnZlc3RvcgAAAAEAAAALdXNlckFkZHJlc3MJAAEsAAAAAgIAAAAEJXNfXwUAAAALdXNlckFkZHJlc3MBAAAACWtleVRvdGFscwAAAAACAAAACiVzX190b3RhbHMBAAAAGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQAAAADAAAABHR5cGUAAAALdXNlckFkZHJlc3MAAAAGdHhJZDU4CQAEuQAAAAIJAARMAAAAAgIAAAARJXMlcyVzJXNfX2hpc3RvcnkJAARMAAAAAgUAAAAEdHlwZQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAZ0eElkNTgFAAAAA25pbAUAAAADU0VQAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAAA9yZWFkQ29uZmlnQXJyYXkAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAJa2V5Q29uZmlnAAAAAAUAAAADU0VQAQAAACNyZWFkVG90YWxzQXJyYXlPckRlZmF1bHRCeUN1c3RvbUtleQAAAAEAAAAJY3VzdG9tS2V5CQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQiAAAAAQUAAAAJY3VzdG9tS2V5CQEAAAAPZm9ybWF0SW52ZXN0b3JTAAAABQIAAAABMAIAAAABMAIAAAABMAIAAAABMAIAAAABMAUAAAADU0VQAQAAABhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQAAAAACQEAAAAjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkAAAABCQEAAAAJa2V5VG90YWxzAAAAAAEAAAAacmVhZEludmVzdG9yQXJyYXlPckRlZmF1bHQAAAABAAAAC3VzZXJBZGRyZXNzCQEAAAAjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkAAAABCQEAAAALa2V5SW52ZXN0b3IAAAABBQAAAAt1c2VyQWRkcmVzcwEAAAAXcmVhZEludmVzdG9yQXJyYXlPckZhaWwAAAABAAAAC3VzZXJBZGRyZXNzCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAALa2V5SW52ZXN0b3IAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAADU0VQAAAAABVJZHhEaWZmVG90YWxJbmNyZW1lbnQAAAAAAAAAAAAAAAAAJElkeERpZmZSZW1haW5pbmdQcmljZUFtb3VudEluY3JlbWVudAAAAAAAAAAAAQAAAAAiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAAAAAAAAAAAAgAAAAAlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudAAAAAAAAAAAAwEAAAALVG90YWxzRW50cnkAAAAEAAAAA2tleQAAAAlvcmlnQXJyYXkAAAANaW5jcmVtZW50RGlmZgAAABRuZXdMYXN0Q2xhaW1lZEhlaWdodAQAAAALdG90YWxBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAEUlkeEludlRvdGFsQW1vdW50BAAAAA9yZW1haW5pbmdBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAFUlkeEludlJlbWFpbmluZ0Ftb3VudAQAAAAXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50BAAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAG0lkeEludkNsYWltZWRJZG9Bc3NldEFtb3VudAQAAAARbGFzdENsYWltZWRIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAF0lkeEludkxhc3RDbGFpbWVkSGVpZ2h0BAAAAA5uZXdUb3RhbEFtb3VudAkAAGQAAAACBQAAAAt0b3RhbEFtb3VudAkAAZEAAAACBQAAAA1pbmNyZW1lbnREaWZmBQAAABVJZHhEaWZmVG90YWxJbmNyZW1lbnQEAAAAEm5ld1JlbWFpbmluZ0Ftb3VudAkAAGQAAAACBQAAAA9yZW1haW5pbmdBbW91bnQJAAGRAAAAAgUAAAANaW5jcmVtZW50RGlmZgUAAAAkSWR4RGlmZlJlbWFpbmluZ1ByaWNlQW1vdW50SW5jcmVtZW50BAAAABpuZXdDbGFpbWVkUHJpY2VBc3NldEFtb3VudAkAAGQAAAACBQAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAkAAZEAAAACBQAAAA1pbmNyZW1lbnREaWZmBQAAACJJZHhEaWZmQ2xhaW1lZFByaWNlQW1vdW50SW5jcmVtZW50BAAAABhuZXdDbGFpbWVkSWRvQXNzZXRBbW91bnQJAABkAAAAAgUAAAAVY2xhaW1lZElkb0Fzc2V0QW1vdW50CQABkQAAAAIFAAAADWluY3JlbWVudERpZmYFAAAAJUlkeERpZmZDbGFpbWVkSWRvQXNzZXRBbW91bnRJbmNyZW1lbnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEm5ld1JlbWFpbmluZ0Ftb3VudAkAAAIAAAABAgAAAAxpbnZhbGlkIG1hdGgJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQkBAAAADmZvcm1hdEludmVzdG9yAAAABQUAAAAObmV3VG90YWxBbW91bnQFAAAAEm5ld1JlbWFpbmluZ0Ftb3VudAUAAAAabmV3Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQFAAAAGG5ld0NsYWltZWRJZG9Bc3NldEFtb3VudAUAAAAUbmV3TGFzdENsYWltZWRIZWlnaHQBAAAAG0ludmVzdE9wZXJhdGlvbkhpc3RvcnlFbnRyeQAAAAQAAAALdXNlckFkZHJlc3MAAAAQcHJpY2VBc3NldEFtb3VudAAAAA5pZG9Bc3NldEFtb3VudAAAAAR0eElkCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZAAAAAMCAAAABmludmVzdAUAAAALdXNlckFkZHJlc3MJAAJYAAAAAQUAAAAEdHhJZAkBAAAAE2Zvcm1hdEhpc3RvcnlSZWNvcmQAAAACBQAAABBwcmljZUFzc2V0QW1vdW50BQAAAA5pZG9Bc3NldEFtb3VudAEAAAAaQ2xhaW1PcGVyYXRpb25IaXN0b3J5RW50cnkAAAAEAAAAC3VzZXJBZGRyZXNzAAAAEHByaWNlQXNzZXRBbW91bnQAAAAOaWRvQXNzZXRBbW91bnQAAAAEdHhJZAkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQAAAADAgAAAAVjbGFpbQUAAAALdXNlckFkZHJlc3MJAAJYAAAAAQUAAAAEdHhJZAkBAAAAE2Zvcm1hdEhpc3RvcnlSZWNvcmQAAAACBQAAABBwcmljZUFzc2V0QW1vdW50BQAAAA5pZG9Bc3NldEFtb3VudAEAAAANaW50ZXJuYWxDbGFpbQAAAAMAAAAQY2xhaW1lZEFzc2V0SWQ1OAAAAAt1c2VyQWRkcmVzcwAAAAR0eElkBAAAAAhjZmdBcnJheQkBAAAAD3JlYWRDb25maWdBcnJheQAAAAAEAAAACmNsYWltU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAQSWR4Q2ZnQ2xhaW1TdGFydAQAAAANY2xhaW1EdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABNJZHhDZmdDbGFpbUR1cmF0aW9uBAAAAAhjbGFpbUVuZAkAAGQAAAACBQAAAApjbGFpbVN0YXJ0BQAAAA1jbGFpbUR1cmF0aW9uBAAAAAVwcmljZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAAtJZHhDZmdQcmljZQQAAAAJcHJpY2VNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAD0lkeENmZ1ByaWNlTXVsdAQAAAAMaWRvQXNzZXRJZDU4CQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABBJZHhDZmdJZG9Bc3NldElkBAAAAAppZG9Bc3NldElkCQACWQAAAAEFAAAADGlkb0Fzc2V0SWQ1OAQAAAAMaWRvQXNzZXRNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ0lkb0Fzc2V0TXVsdAQAAAAOcHJpY2VBc3NldElkNTgJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ1ByaWNlQXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQACWQAAAAEFAAAADnByaWNlQXNzZXRJZDU4BAAAAA5wcmljZUFzc2V0TXVsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABRJZHhDZmdQcmljZUFzc2V0TXVsdAQAAAANdXNlckFkZHJlc3M1OAkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAAPb3JpZ0ludmVzdEFycmF5CQEAAAAXcmVhZEludmVzdG9yQXJyYXlPckZhaWwAAAABBQAAAA11c2VyQWRkcmVzczU4BAAAABFpbnZlc3RUb3RhbEFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD29yaWdJbnZlc3RBcnJheQUAAAARSWR4SW52VG90YWxBbW91bnQEAAAAGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPb3JpZ0ludmVzdEFycmF5BQAAABdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodAQAAAAXaW52ZXN0TGFzdENsYWltZWRIZWlnaHQDCQAAZwAAAAIFAAAACmNsYWltU3RhcnQFAAAAGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QBQAAAApjbGFpbVN0YXJ0BQAAABppbnZlc3RMYXN0Q2xhaW1lZEhlaWdodFRNUAQAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAIY2xhaW1FbmQFAAAACGNsYWltRW5kAwkAAGYAAAACBQAAAApjbGFpbVN0YXJ0BQAAAAZoZWlnaHQFAAAACmNsYWltU3RhcnQFAAAABmhlaWdodAQAAAAOY2xhaW1pbmdCbG9ja3MJAABlAAAAAgUAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQFAAAAF2ludmVzdExhc3RDbGFpbWVkSGVpZ2h0BAAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQJAABrAAAAAwUAAAARaW52ZXN0VG90YWxBbW91bnQFAAAADmNsYWltaW5nQmxvY2tzBQAAAA1jbGFpbUR1cmF0aW9uBAAAABZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50CQEAAAAdY29udmVydFByaWNlQXNzZXRJbnRvSWRvQXNzZXQAAAAFBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQFAAAADnByaWNlQXNzZXRNdWx0BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0BQAAAAxpZG9Bc3NldE11bHQDCQAAAAAAAAIFAAAAEGNsYWltZWRBc3NldElkNTgFAAAADnByaWNlQXNzZXRJZDU4CQAFGAAAAAYJAARMAAAAAgAAAAAAAAAAAAkABEwAAAACCQEAAAABLQAAAAEFAAAAGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQFAAAADHByaWNlQXNzZXRJZAUAAAAPb3JpZ0ludmVzdEFycmF5BQAAABRuZXdDbGFpbVBlcmlvZEhlaWdodAkABEwAAAACBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQJAARMAAAAAgUAAAAWY2xhaW1pbmdJZG9Bc3NldEFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAABBjbGFpbWVkQXNzZXRJZDU4BQAAAAxpZG9Bc3NldElkNTgJAAUYAAAABgkABEwAAAACAAAAAAAAAAAACQAETAAAAAIJAQAAAAEtAAAAAQUAAAAYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50CQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgUAAAAWY2xhaW1pbmdJZG9Bc3NldEFtb3VudAUAAAADbmlsBQAAABZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50BQAAAAppZG9Bc3NldElkBQAAAA9vcmlnSW52ZXN0QXJyYXkFAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CQAETAAAAAIFAAAAGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAABZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50BQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAABV1bnN1cHBvcnRlZCBhc3NldElkOiAFAAAAEGNsYWltZWRBc3NldElkNTgBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAA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AAAAAAkABEwAAAACAAAAAAAAAAAACQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5Q29uZmlnAAAAAAkBAAAADGZyb21hdENvbmZpZwAAAAwFAAAACGlkb1N0YXJ0BQAAAAtpZG9EdXJhdGlvbgUAAAAKY2xhaW1TdGFydAUAAAANY2xhaW1EdXJhdGlvbgUAAAAFcHJpY2UFAAAACXByaWNlTXVsdAUAAAAMaWRvQXNzZXRJZDU4BQAAAAxpZG9Bc3NldE11bHQFAAAADnByaWNlQXNzZXRJZDU4BQAAAA5wcmljZUFzc2V0TXVsdAUAAAAPbWluSW52ZXN0QW1vdW50CAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAALVG90YWxzRW50cnkAAAAECQEAAAAJa2V5VG90YWxzAAAAAAUAAAAPb3JpZ1RvdGFsc0FycmF5BQAAAAp0b3RhbHNEaWZmBQAAAApjbGFpbVN0YXJ0BQAAAANuaWwAAAABaQEAAAAGaW52ZXN0AAAAAAQAAAAIY2ZnQXJyYXkJAQAAAA9yZWFkQ29uZmlnQXJyYXkAAAAABAAAAAhpZG9TdGFydAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA5JZHhDZmdJZG9TdGFydAQAAAALaWRvRHVyYXRpb24JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAARSWR4Q2ZnSWRvRHVyYXRpb24EAAAABmlkb0VuZAkAAGQAAAACBQAAAAhpZG9TdGFydAUAAAALaWRvRHVyYXRpb24EAAAACmNsYWltU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAQSWR4Q2ZnQ2xhaW1TdGFydAQAAAANY2xhaW1EdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABNJZHhDZmdDbGFpbUR1cmF0aW9uBAAAAAVwcmljZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAAtJZHhDZmdQcmljZQQAAAAJcHJpY2VNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAD0lkeENmZ1ByaWNlTXVsdAQAAAAMaWRvQXNzZXRJZDU4CQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABBJZHhDZmdJZG9Bc3NldElkBAAAAAppZG9Bc3NldElkCQACWQAAAAEFAAAADGlkb0Fzc2V0SWQ1OAQAAAAMaWRvQXNzZXRNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ0lkb0Fzc2V0TXVsdAQAAAAOcHJpY2VBc3NldElkNTgJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ1ByaWNlQXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQACWQAAAAEFAAAADnByaWNlQXNzZXRJZDU4BAAAAA5wcmljZUFzc2V0TXVsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABRJZHhDZmdQcmljZUFzc2V0TXVsdAQAAAAObWluSXZlc3RBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAVSWR4Q2ZnTWluSW52ZXN0QW1vdW50BAAAAAt1c2VyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQAAZgAAAAIFAAAACGlkb1N0YXJ0BQAAAAZoZWlnaHQJAAACAAAAAQIAAAAcaWRvIGhhcyBub3QgYmVlbiBzdGFydGVkIHlldAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAZpZG9FbmQJAAACAAAAAQIAAAAaaWRvIGhhcyBiZWVuIGFscmVhZHkgZW5kZWQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAADHByaWNlQXNzZXRJZAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAaaW52YWxpZCBwYXltZW50IGFzc2V0IGlkOiAJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAIAAAAMIGlzIGV4cGVjdGVkBAAAABFvcmlnSW52ZXN0b3JBcnJheQkBAAAAGnJlYWRJbnZlc3RvckFycmF5T3JEZWZhdWx0AAAAAQUAAAALdXNlckFkZHJlc3MEAAAAD29yaWdUb3RhbHNBcnJheQkBAAAAGHJlYWRUb3RhbHNBcnJheU9yRGVmYXVsdAAAAAAEAAAAE25ld1ByaWNlVG90YWxBbW91bnQJAABkAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD29yaWdUb3RhbHNBcnJheQUAAAARSWR4SW52VG90YWxBbW91bnQFAAAACXBtdEFtb3VudAQAAAAWcmVxdWlyZWRJZG9Bc3NldEFtb3VudAkAAGgAAAACBQAAABNuZXdQcmljZVRvdGFsQW1vdW50AAAAAAAAAABkAwkAAGYAAAACBQAAABZyZXF1aXJlZElkb0Fzc2V0QW1vdW50CQAD8AAAAAIFAAAABHRoaXMFAAAACmlkb0Fzc2V0SWQJAAACAAAAAQIAAAA5SURPIGFzc2V0IGhhcyBiZWVuIC0gc29sZCBjb25zaWRlciB0byB1c2Ugc21hbGxlciBwYXltZW50BAAAAAp0b3RhbHNEaWZmCQAETAAAAAIFAAAACXBtdEFtb3VudAkABEwAAAACBQAAAAlwbXRBbW91bnQJAARMAAAAAgAAAAAAAAAAAAkABEwAAAACAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAC1RvdGFsc0VudHJ5AAAABAkBAAAAC2tleUludmVzdG9yAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAEW9yaWdJbnZlc3RvckFycmF5BQAAAAp0b3RhbHNEaWZmBQAAAApjbGFpbVN0YXJ0CQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAQJAQAAAAlrZXlUb3RhbHMAAAAABQAAAA9vcmlnVG90YWxzQXJyYXkFAAAACnRvdGFsc0RpZmYFAAAACmNsYWltU3RhcnQJAARMAAAAAgkBAAAAG0ludmVzdE9wZXJhdGlvbkhpc3RvcnlFbnRyeQAAAAQFAAAAC3VzZXJBZGRyZXNzBQAAAAlwbXRBbW91bnQAAAAAAAAAAAAIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAIAAAAQY2xhaW1lZEFzc2V0SWQ1OAAAAA11c2VyQWRkcmVzczU4BAAAAA9jYWxsZXJBZGRyZXNzNTgJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAANdXNlckFkZHJlc3M1OAUAAAAPY2FsbGVyQWRkcmVzczU4CQAAAgAAAAECAAAADm5vdCBhdXRob3JpemVkBAAAABBjbGFpbVJlc3VsdFR1cGxlCQEAAAANaW50ZXJuYWxDbGFpbQAAAAMFAAAAEGNsYWltZWRBc3NldElkNTgIBQAAAAFpAAAABmNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAKdG90YWxzRGlmZggFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzEEAAAACW91dEFtb3VudAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzIEAAAACm91dEFzc2V0SWQIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl8zBAAAAA9vcmlnSW52ZXN0QXJyYXkIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl80BAAAABRuZXdDbGFpbVBlcmlvZEhlaWdodAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzUEAAAAGmNsYWltZWRQcmljZUFtb3VudEZyb21EaWZmCQABkQAAAAIFAAAACnRvdGFsc0RpZmYFAAAAIklkeERpZmZDbGFpbWVkUHJpY2VBbW91bnRJbmNyZW1lbnQEAAAAHWNsYWltZWRJZG9Bc3NldEFtb3VudEZyb21EaWZmCQABkQAAAAIFAAAACnRvdGFsc0RpZmYFAAAAJUlkeERpZmZDbGFpbWVkSWRvQXNzZXRBbW91bnRJbmNyZW1lbnQJAAUUAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACW91dEFtb3VudAUAAAAKb3V0QXNzZXRJZAkABEwAAAACCQEAAAALVG90YWxzRW50cnkAAAAECQEAAAALa2V5SW52ZXN0b3IAAAABBQAAAA11c2VyQWRkcmVzczU4BQAAAA9vcmlnSW52ZXN0QXJyYXkFAAAACnRvdGFsc0RpZmYFAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAQJAQAAAAlrZXlUb3RhbHMAAAAACQEAAAAYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0AAAAAAUAAAAKdG90YWxzRGlmZgUAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQJAARMAAAAAgkBAAAAGkNsYWltT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABAUAAAANdXNlckFkZHJlc3M1OAUAAAAaY2xhaW1lZFByaWNlQW1vdW50RnJvbURpZmYFAAAAHWNsYWltZWRJZG9Bc3NldEFtb3VudEZyb21EaWZmCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwFAAAABHVuaXQAAAABaQEAAAANY2xhaW1SRUFET05MWQAAAAIAAAAQY2xhaW1lZEFzc2V0SWQ1OAAAAA11c2VyQWRkcmVzczU4BAAAABBjbGFpbVJlc3VsdFR1cGxlCQEAAAANaW50ZXJuYWxDbGFpbQAAAAMFAAAAEGNsYWltZWRBc3NldElkNTgJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADXVzZXJBZGRyZXNzNTgJAAJZAAAAAQIAAAAABAAAAAp0b3RhbHNEaWZmCAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMQQAAAAJb3V0QW1vdW50CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMgQAAAAKb3V0QXNzZXRJZAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzMEAAAAD29yaWdJbnZlc3RBcnJheQgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzQEAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNQQAAAAVYXZhaWxhYmxlVG9DbGFpbUFycmF5CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNgQAAAAbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltCQABkQAAAAIFAAAAFWF2YWlsYWJsZVRvQ2xhaW1BcnJheQAAAAAAAAAAAAQAAAAZYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbQkAAZEAAAACBQAAABVhdmFpbGFibGVUb0NsYWltQXJyYXkAAAAAAAAAAAEJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlZCVkCQAETAAAAAIFAAAADXVzZXJBZGRyZXNzNTgJAARMAAAAAgkAAaQAAAABBQAAABthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0JAARMAAAAAgkAAaQAAAABBQAAABlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltBQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAPdGFyZ2V0UHVibGljS2V5BAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwBQAAAAJwawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAD3RhcmdldFB1YmxpY0tleXyBoDE=", "chainId": 84, "height": 1959405, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CgNH7Va1KMxmJGvqDHn6KwDhAmHyPZQSAm1YUaumXS8w Next: DnqRDhj4rEU5QBPacjKFSUpyowNaUSCZD8jBVP5JEVJW Diff:
OldNewDifferences
7676 func ae (af,ac,ag) = makeString(["%s%s%s%s__history", af, ac, ag], c)
7777
7878
79-func ah () = split(a(aa()), c)
79+func ah () = "%s__managerPublicKey"
8080
8181
82-func ai (aj) = split(valueOrElse(getString(aj), R("0", "0", "0", "0", "0")), c)
82+func ai () = "%s__pendingManagerPublicKey"
8383
8484
85-func ak () = ai(ad())
85+func aj () = split(a(aa()), c)
8686
8787
88-func al (ac) = ai(ab(ac))
88+func ak (al) = split(valueOrElse(getString(al), R("0", "0", "0", "0", "0")), c)
8989
9090
91-func am (ac) = split(a(ab(ac)), c)
91+func am () = ak(ad())
9292
9393
94-let an = 0
94+func an (ac) = ak(ab(ac))
9595
96-let ao = 1
9796
98-let ap = 2
97+func ao (ac) = split(a(ab(ac)), c)
9998
100-let aq = 3
10199
102-func ar (b,as,at,au) = {
103- let S = parseIntValue(as[M])
104- let T = parseIntValue(as[N])
105- let U = parseIntValue(as[O])
106- let V = parseIntValue(as[P])
107- let W = parseIntValue(as[Q])
108- let av = (S + at[an])
109- let aw = (T + at[ao])
110- let ax = (U + at[ap])
111- let ay = (V + at[aq])
112- if ((0 > aw))
100+let ap = 0
101+
102+let aq = 1
103+
104+let ar = 2
105+
106+let as = 3
107+
108+func at (b,au,av,aw) = {
109+ let S = parseIntValue(au[M])
110+ let T = parseIntValue(au[N])
111+ let U = parseIntValue(au[O])
112+ let V = parseIntValue(au[P])
113+ let W = parseIntValue(au[Q])
114+ let ax = (S + av[ap])
115+ let ay = (T + av[aq])
116+ let az = (U + av[ar])
117+ let aA = (V + av[as])
118+ if ((0 > ay))
113119 then throw("invalid math")
114- else StringEntry(b, X(av, aw, ax, ay, au))
120+ else StringEntry(b, X(ax, ay, az, aA, aw))
115121 }
116122
117123
118-func az (ac,f,Z,aA) = StringEntry(ae("invest", ac, toBase58String(aA)), Y(f, Z))
124+func aB (ac,f,Z,aC) = StringEntry(ae("invest", ac, toBase58String(aC)), Y(f, Z))
119125
120126
121-func aB (ac,f,Z,aA) = StringEntry(ae("claim", ac, toBase58String(aA)), Y(f, Z))
127+func aD (ac,f,Z,aC) = StringEntry(ae("claim", ac, toBase58String(aC)), Y(f, Z))
122128
123129
124-func aC (aD,ac,aA) = {
125- let aE = ah()
126- let C = parseIntValue(aE[q])
127- let D = parseIntValue(aE[r])
128- let aF = (C + D)
129- let h = parseIntValue(aE[s])
130- let E = parseIntValue(aE[t])
131- let F = aE[u]
132- let aG = fromBase58String(F)
133- let G = parseIntValue(aE[v])
134- let H = aE[w]
135- let aH = fromBase58String(H)
136- let I = parseIntValue(aE[x])
137- let aI = toString(ac)
138- let aJ = am(aI)
139- let aK = parseIntValue(aJ[M])
140- let aL = parseIntValue(aJ[Q])
141- let aM = if ((C >= aL))
130+func aE (aF,ac,aC) = {
131+ let aG = aj()
132+ let C = parseIntValue(aG[q])
133+ let D = parseIntValue(aG[r])
134+ let aH = (C + D)
135+ let h = parseIntValue(aG[s])
136+ let E = parseIntValue(aG[t])
137+ let F = aG[u]
138+ let aI = fromBase58String(F)
139+ let G = parseIntValue(aG[v])
140+ let H = aG[w]
141+ let aJ = fromBase58String(H)
142+ let I = parseIntValue(aG[x])
143+ let aK = toString(ac)
144+ let aL = ao(aK)
145+ let aM = parseIntValue(aL[M])
146+ let aN = parseIntValue(aL[Q])
147+ let aO = if ((C >= aN))
142148 then C
143- else aL
144- let aN = if ((height > aF))
145- then aF
149+ else aN
150+ let aP = if ((height > aH))
151+ then aH
146152 else if ((C > height))
147153 then C
148154 else height
149- let aO = (aN - aM)
150- let aP = fraction(aK, aO, D)
151- let aQ = e(aP, I, h, E, G)
152- if ((aD == H))
153- then $Tuple6([0, -(aP), aP, 0], aP, aH, aJ, aN, [aP, aQ])
154- else if ((aD == F))
155- then $Tuple6([0, -(aP), 0, aQ], aQ, aG, aJ, aN, [aP, aQ])
156- else throw(("unsupported assetId: " + aD))
155+ let aQ = (aP - aO)
156+ let aR = fraction(aM, aQ, D)
157+ let aS = e(aR, I, h, E, G)
158+ if ((aF == H))
159+ then $Tuple6([0, -(aR), aR, 0], aR, aJ, aL, aP, [aR, aS])
160+ else if ((aF == F))
161+ then $Tuple6([0, -(aR), 0, aS], aS, aI, aL, aP, [aR, aS])
162+ else throw(("unsupported assetId: " + aF))
157163 }
158164
159165
160-@Callable(aR)
166+func aT () = {
167+ let aU = getString(ah())
168+ if ($isInstanceOf(aU, "String"))
169+ then {
170+ let aV = aU
171+ fromBase58String(aV)
172+ }
173+ else if ($isInstanceOf(aU, "Unit"))
174+ then unit
175+ else throw("Match error")
176+ }
177+
178+
179+func aW () = {
180+ let aU = getString(ai())
181+ if ($isInstanceOf(aU, "String"))
182+ then {
183+ let aV = aU
184+ fromBase58String(aV)
185+ }
186+ else if ($isInstanceOf(aU, "Unit"))
187+ then unit
188+ else throw("Match error")
189+ }
190+
191+
192+func aX (aY) = {
193+ let aZ = throw("Permission denied")
194+ let aU = aT()
195+ if ($isInstanceOf(aU, "ByteVector"))
196+ then {
197+ let ba = aU
198+ if ((aY.callerPublicKey == ba))
199+ then true
200+ else aZ
201+ }
202+ else if ($isInstanceOf(aU, "Unit"))
203+ then if ((aY.caller == this))
204+ then true
205+ else aZ
206+ else throw("Match error")
207+ }
208+
209+
210+@Callable(aY)
161211 func constructor (A,B,C,D,h,H,J) = {
162212 let E = ((100 * 1000) * 1000)
163- let aS = (A + B)
213+ let bb = (A + B)
164214 if (isDefined(getString(aa())))
165215 then throw("already initialized")
166- else if (("3N4Aib5iubWiGMzdTh6wWiVDVbo32oeVUmH" != toString(aR.caller)))
216+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(aY.caller)))
167217 then throw("not authorized")
168- else if ((size(aR.payments) != 1))
218+ else if ((size(aY.payments) != 1))
169219 then throw("exactly 1 payment must be attached")
170- else if ((aS >= C))
220+ else if ((bb >= C))
171221 then throw("claimStart must be greater than idoEnd")
172222 else {
173- let aT = value(aR.payments[0])
174- let aG = value(aT.assetId)
175- let aU = valueOrErrorMessage(assetInfo(aG), "fail to load ido asset info")
176- let F = toBase58String(aG)
177- let G = pow(10, 0, aU.decimals, 0, 0, DOWN)
178- let aH = fromBase58String(H)
179- let aV = valueOrErrorMessage(assetInfo(aH), "fail to load price asset info")
180- let I = pow(10, 0, aV.decimals, 0, 0, DOWN)
181- let aW = ak()
182- let aX = [0, 0, 0, 0]
183-[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, aT.amount)), ar(ad(), aW, aX, C)]
223+ let bc = value(aY.payments[0])
224+ let aI = value(bc.assetId)
225+ let bd = valueOrErrorMessage(assetInfo(aI), "fail to load ido asset info")
226+ let F = toBase58String(aI)
227+ let G = pow(10, 0, bd.decimals, 0, 0, DOWN)
228+ let aJ = fromBase58String(H)
229+ let be = valueOrErrorMessage(assetInfo(aJ), "fail to load price asset info")
230+ let I = pow(10, 0, be.decimals, 0, 0, DOWN)
231+ let bf = am()
232+ let bg = [0, 0, 0, 0]
233+[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, bc.amount)), at(ad(), bf, bg, C)]
184234 }
185235 }
186236
187237
188238
189-@Callable(aR)
239+@Callable(aY)
190240 func invest () = {
191- let aE = ah()
192- let A = parseIntValue(aE[o])
193- let B = parseIntValue(aE[p])
194- let aS = (A + B)
195- let C = parseIntValue(aE[q])
196- let D = parseIntValue(aE[r])
197- let h = parseIntValue(aE[s])
198- let E = parseIntValue(aE[t])
199- let F = aE[u]
200- let aG = fromBase58String(F)
201- let G = parseIntValue(aE[v])
202- let H = aE[w]
203- let aH = fromBase58String(H)
204- let I = parseIntValue(aE[x])
205- let aY = parseIntValue(aE[y])
206- let ac = toString(aR.caller)
241+ let aG = aj()
242+ let A = parseIntValue(aG[o])
243+ let B = parseIntValue(aG[p])
244+ let bb = (A + B)
245+ let C = parseIntValue(aG[q])
246+ let D = parseIntValue(aG[r])
247+ let h = parseIntValue(aG[s])
248+ let E = parseIntValue(aG[t])
249+ let F = aG[u]
250+ let aI = fromBase58String(F)
251+ let G = parseIntValue(aG[v])
252+ let H = aG[w]
253+ let aJ = fromBase58String(H)
254+ let I = parseIntValue(aG[x])
255+ let bh = parseIntValue(aG[y])
256+ let ac = toString(aY.caller)
207257 if ((A > height))
208258 then throw("ido has not been started yet")
209- else if ((height > aS))
259+ else if ((height > bb))
210260 then throw("ido has been already ended")
211- else if ((size(aR.payments) != 1))
261+ else if ((size(aY.payments) != 1))
212262 then throw("exactly 1 payment is expected")
213263 else {
214- let aT = value(aR.payments[0])
215- let aZ = value(aT.assetId)
216- let ba = aT.amount
217- if ((aZ != aH))
218- then throw((("invalid payment asset id: " + toBase58String(aZ)) + " is expected"))
264+ let bc = value(aY.payments[0])
265+ let bi = value(bc.assetId)
266+ let bj = bc.amount
267+ if ((bi != aJ))
268+ then throw((("invalid payment asset id: " + toBase58String(bi)) + " is expected"))
219269 else {
220- let bb = al(ac)
221- let aW = ak()
222- let bc = (parseIntValue(aW[M]) + ba)
223- let bd = (bc * 100)
224- if ((bd > assetBalance(this, aG)))
270+ let bk = an(ac)
271+ let bf = am()
272+ let bl = (parseIntValue(bf[M]) + bj)
273+ let bm = (bl * 100)
274+ if ((bm > assetBalance(this, aI)))
225275 then throw("IDO asset has been - sold consider to use smaller payment")
226276 else {
227- let aX = [ba, ba, 0, 0]
228-[ar(ab(ac), bb, aX, C), ar(ad(), aW, aX, C), az(ac, ba, 0, aR.transactionId)]
277+ let bg = [bj, bj, 0, 0]
278+[at(ab(ac), bk, bg, C), at(ad(), bf, bg, C), aB(ac, bj, 0, aY.transactionId)]
229279 }
230280 }
231281 }
233283
234284
235285
236-@Callable(aR)
237-func claim (aD,aI) = {
238- let be = toString(aR.caller)
239- if ((aI != be))
286+@Callable(aY)
287+func claim (aF,aK) = {
288+ let bn = toString(aY.caller)
289+ if ((aK != bn))
240290 then throw("not authorized")
241291 else {
242- let bf = aC(aD, aR.caller, aR.transactionId)
243- let aX = bf._1
244- let bg = bf._2
245- let bh = bf._3
246- let aJ = bf._4
247- let aN = bf._5
248- let bi = aX[ap]
249- let bj = aX[aq]
250- $Tuple2([ScriptTransfer(aR.caller, bg, bh), ar(ab(aI), aJ, aX, aN), ar(ad(), ak(), aX, aN), aB(aI, bi, bj, aR.transactionId)], unit)
292+ let bo = aE(aF, aY.caller, aY.transactionId)
293+ let bg = bo._1
294+ let bp = bo._2
295+ let bq = bo._3
296+ let aL = bo._4
297+ let aP = bo._5
298+ let br = bg[ar]
299+ let bs = bg[as]
300+ $Tuple2([ScriptTransfer(aY.caller, bp, bq), at(ab(aK), aL, bg, aP), at(ad(), am(), bg, aP), aD(aK, br, bs, aY.transactionId)], unit)
251301 }
252302 }
253303
254304
255305
256-@Callable(aR)
257-func claimREADONLY (aD,aI) = {
258- let bf = aC(aD, addressFromStringValue(aI), fromBase58String(""))
259- let aX = bf._1
260- let bg = bf._2
261- let bh = bf._3
262- let aJ = bf._4
263- let aN = bf._5
264- let bk = bf._6
265- let bl = bk[0]
266- let bm = bk[1]
267- $Tuple2(nil, makeString(["%s%d%d", aI, toString(bl), toString(bm)], c))
306+@Callable(aY)
307+func claimREADONLY (aF,aK) = {
308+ let bo = aE(aF, addressFromStringValue(aK), fromBase58String(""))
309+ let bg = bo._1
310+ let bp = bo._2
311+ let bq = bo._3
312+ let aL = bo._4
313+ let aP = bo._5
314+ let bt = bo._6
315+ let bu = bt[0]
316+ let bv = bt[1]
317+ $Tuple2(nil, makeString(["%s%d%d", aK, toString(bu), toString(bv)], c))
268318 }
269319
320+
321+
322+@Callable(aY)
323+func setManager (bw) = {
324+ let bx = aX(aY)
325+ if ((bx == bx))
326+ then {
327+ let by = fromBase58String(bw)
328+ if ((by == by))
329+ then [StringEntry(ai(), bw)]
330+ else throw("Strict value is not equal to itself.")
331+ }
332+ else throw("Strict value is not equal to itself.")
333+ }
334+
335+
336+
337+@Callable(aY)
338+func confirmManager () = {
339+ let bz = aW()
340+ let bA = if (isDefined(bz))
341+ then true
342+ else throw("No pending manager")
343+ if ((bA == bA))
344+ then {
345+ let bB = if ((aY.callerPublicKey == value(bz)))
346+ then true
347+ else throw("You are not pending manager")
348+ if ((bB == bB))
349+ then [StringEntry(ah(), toBase58String(value(bz))), DeleteEntry(ai())]
350+ else throw("Strict value is not equal to itself.")
351+ }
352+ else throw("Strict value is not equal to itself.")
353+ }
354+
355+
356+@Verifier(bC)
357+func bD () = {
358+ let bE = {
359+ let aU = aT()
360+ if ($isInstanceOf(aU, "ByteVector"))
361+ then {
362+ let ba = aU
363+ ba
364+ }
365+ else if ($isInstanceOf(aU, "Unit"))
366+ then bC.senderPublicKey
367+ else throw("Match error")
368+ }
369+ sigVerify(bC.bodyBytes, bC.proofs[0], bE)
370+ }
270371
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined"))
55
66
77 let c = "__"
88
99 let d = toBigInt(1000000000000000000)
1010
1111 func e (f,g,h,i,j) = {
1212 let k = toBigInt(g)
1313 let l = toBigInt(j)
1414 let m = fraction(toBigInt(f), d, k)
1515 let n = fraction(m, toBigInt(i), toBigInt(h))
1616 toInt(fraction(n, toBigInt(j), d))
1717 }
1818
1919
2020 let o = 1
2121
2222 let p = 2
2323
2424 let q = 3
2525
2626 let r = 4
2727
2828 let s = 5
2929
3030 let t = 6
3131
3232 let u = 7
3333
3434 let v = 8
3535
3636 let w = 9
3737
3838 let x = 10
3939
4040 let y = 11
4141
4242 func z (A,B,C,D,h,E,F,G,H,I,J,K) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", A, B, C, D, h, E, F, G, H, I, J, K], c)
4343
4444
4545 func L (A,B,C,D,h,E,F,G,H,I,J,K) = z(toString(A), toString(B), toString(C), toString(D), toString(h), toString(E), F, toString(G), H, toString(I), toString(J), toString(K))
4646
4747
4848 let M = 1
4949
5050 let N = 2
5151
5252 let O = 3
5353
5454 let P = 4
5555
5656 let Q = 5
5757
5858 func R (S,T,U,V,W) = makeString(["%d%d%d%d%d", S, T, U, V, W], c)
5959
6060
6161 func X (S,T,U,V,W) = R(toString(S), toString(T), toString(U), toString(V), toString(W))
6262
6363
6464 func Y (f,Z) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(f), toString(Z)], c)
6565
6666
6767 func aa () = "%s__config"
6868
6969
7070 func ab (ac) = ("%s__" + ac)
7171
7272
7373 func ad () = "%s__totals"
7474
7575
7676 func ae (af,ac,ag) = makeString(["%s%s%s%s__history", af, ac, ag], c)
7777
7878
79-func ah () = split(a(aa()), c)
79+func ah () = "%s__managerPublicKey"
8080
8181
82-func ai (aj) = split(valueOrElse(getString(aj), R("0", "0", "0", "0", "0")), c)
82+func ai () = "%s__pendingManagerPublicKey"
8383
8484
85-func ak () = ai(ad())
85+func aj () = split(a(aa()), c)
8686
8787
88-func al (ac) = ai(ab(ac))
88+func ak (al) = split(valueOrElse(getString(al), R("0", "0", "0", "0", "0")), c)
8989
9090
91-func am (ac) = split(a(ab(ac)), c)
91+func am () = ak(ad())
9292
9393
94-let an = 0
94+func an (ac) = ak(ab(ac))
9595
96-let ao = 1
9796
98-let ap = 2
97+func ao (ac) = split(a(ab(ac)), c)
9998
100-let aq = 3
10199
102-func ar (b,as,at,au) = {
103- let S = parseIntValue(as[M])
104- let T = parseIntValue(as[N])
105- let U = parseIntValue(as[O])
106- let V = parseIntValue(as[P])
107- let W = parseIntValue(as[Q])
108- let av = (S + at[an])
109- let aw = (T + at[ao])
110- let ax = (U + at[ap])
111- let ay = (V + at[aq])
112- if ((0 > aw))
100+let ap = 0
101+
102+let aq = 1
103+
104+let ar = 2
105+
106+let as = 3
107+
108+func at (b,au,av,aw) = {
109+ let S = parseIntValue(au[M])
110+ let T = parseIntValue(au[N])
111+ let U = parseIntValue(au[O])
112+ let V = parseIntValue(au[P])
113+ let W = parseIntValue(au[Q])
114+ let ax = (S + av[ap])
115+ let ay = (T + av[aq])
116+ let az = (U + av[ar])
117+ let aA = (V + av[as])
118+ if ((0 > ay))
113119 then throw("invalid math")
114- else StringEntry(b, X(av, aw, ax, ay, au))
120+ else StringEntry(b, X(ax, ay, az, aA, aw))
115121 }
116122
117123
118-func az (ac,f,Z,aA) = StringEntry(ae("invest", ac, toBase58String(aA)), Y(f, Z))
124+func aB (ac,f,Z,aC) = StringEntry(ae("invest", ac, toBase58String(aC)), Y(f, Z))
119125
120126
121-func aB (ac,f,Z,aA) = StringEntry(ae("claim", ac, toBase58String(aA)), Y(f, Z))
127+func aD (ac,f,Z,aC) = StringEntry(ae("claim", ac, toBase58String(aC)), Y(f, Z))
122128
123129
124-func aC (aD,ac,aA) = {
125- let aE = ah()
126- let C = parseIntValue(aE[q])
127- let D = parseIntValue(aE[r])
128- let aF = (C + D)
129- let h = parseIntValue(aE[s])
130- let E = parseIntValue(aE[t])
131- let F = aE[u]
132- let aG = fromBase58String(F)
133- let G = parseIntValue(aE[v])
134- let H = aE[w]
135- let aH = fromBase58String(H)
136- let I = parseIntValue(aE[x])
137- let aI = toString(ac)
138- let aJ = am(aI)
139- let aK = parseIntValue(aJ[M])
140- let aL = parseIntValue(aJ[Q])
141- let aM = if ((C >= aL))
130+func aE (aF,ac,aC) = {
131+ let aG = aj()
132+ let C = parseIntValue(aG[q])
133+ let D = parseIntValue(aG[r])
134+ let aH = (C + D)
135+ let h = parseIntValue(aG[s])
136+ let E = parseIntValue(aG[t])
137+ let F = aG[u]
138+ let aI = fromBase58String(F)
139+ let G = parseIntValue(aG[v])
140+ let H = aG[w]
141+ let aJ = fromBase58String(H)
142+ let I = parseIntValue(aG[x])
143+ let aK = toString(ac)
144+ let aL = ao(aK)
145+ let aM = parseIntValue(aL[M])
146+ let aN = parseIntValue(aL[Q])
147+ let aO = if ((C >= aN))
142148 then C
143- else aL
144- let aN = if ((height > aF))
145- then aF
149+ else aN
150+ let aP = if ((height > aH))
151+ then aH
146152 else if ((C > height))
147153 then C
148154 else height
149- let aO = (aN - aM)
150- let aP = fraction(aK, aO, D)
151- let aQ = e(aP, I, h, E, G)
152- if ((aD == H))
153- then $Tuple6([0, -(aP), aP, 0], aP, aH, aJ, aN, [aP, aQ])
154- else if ((aD == F))
155- then $Tuple6([0, -(aP), 0, aQ], aQ, aG, aJ, aN, [aP, aQ])
156- else throw(("unsupported assetId: " + aD))
155+ let aQ = (aP - aO)
156+ let aR = fraction(aM, aQ, D)
157+ let aS = e(aR, I, h, E, G)
158+ if ((aF == H))
159+ then $Tuple6([0, -(aR), aR, 0], aR, aJ, aL, aP, [aR, aS])
160+ else if ((aF == F))
161+ then $Tuple6([0, -(aR), 0, aS], aS, aI, aL, aP, [aR, aS])
162+ else throw(("unsupported assetId: " + aF))
157163 }
158164
159165
160-@Callable(aR)
166+func aT () = {
167+ let aU = getString(ah())
168+ if ($isInstanceOf(aU, "String"))
169+ then {
170+ let aV = aU
171+ fromBase58String(aV)
172+ }
173+ else if ($isInstanceOf(aU, "Unit"))
174+ then unit
175+ else throw("Match error")
176+ }
177+
178+
179+func aW () = {
180+ let aU = getString(ai())
181+ if ($isInstanceOf(aU, "String"))
182+ then {
183+ let aV = aU
184+ fromBase58String(aV)
185+ }
186+ else if ($isInstanceOf(aU, "Unit"))
187+ then unit
188+ else throw("Match error")
189+ }
190+
191+
192+func aX (aY) = {
193+ let aZ = throw("Permission denied")
194+ let aU = aT()
195+ if ($isInstanceOf(aU, "ByteVector"))
196+ then {
197+ let ba = aU
198+ if ((aY.callerPublicKey == ba))
199+ then true
200+ else aZ
201+ }
202+ else if ($isInstanceOf(aU, "Unit"))
203+ then if ((aY.caller == this))
204+ then true
205+ else aZ
206+ else throw("Match error")
207+ }
208+
209+
210+@Callable(aY)
161211 func constructor (A,B,C,D,h,H,J) = {
162212 let E = ((100 * 1000) * 1000)
163- let aS = (A + B)
213+ let bb = (A + B)
164214 if (isDefined(getString(aa())))
165215 then throw("already initialized")
166- else if (("3N4Aib5iubWiGMzdTh6wWiVDVbo32oeVUmH" != toString(aR.caller)))
216+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(aY.caller)))
167217 then throw("not authorized")
168- else if ((size(aR.payments) != 1))
218+ else if ((size(aY.payments) != 1))
169219 then throw("exactly 1 payment must be attached")
170- else if ((aS >= C))
220+ else if ((bb >= C))
171221 then throw("claimStart must be greater than idoEnd")
172222 else {
173- let aT = value(aR.payments[0])
174- let aG = value(aT.assetId)
175- let aU = valueOrErrorMessage(assetInfo(aG), "fail to load ido asset info")
176- let F = toBase58String(aG)
177- let G = pow(10, 0, aU.decimals, 0, 0, DOWN)
178- let aH = fromBase58String(H)
179- let aV = valueOrErrorMessage(assetInfo(aH), "fail to load price asset info")
180- let I = pow(10, 0, aV.decimals, 0, 0, DOWN)
181- let aW = ak()
182- let aX = [0, 0, 0, 0]
183-[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, aT.amount)), ar(ad(), aW, aX, C)]
223+ let bc = value(aY.payments[0])
224+ let aI = value(bc.assetId)
225+ let bd = valueOrErrorMessage(assetInfo(aI), "fail to load ido asset info")
226+ let F = toBase58String(aI)
227+ let G = pow(10, 0, bd.decimals, 0, 0, DOWN)
228+ let aJ = fromBase58String(H)
229+ let be = valueOrErrorMessage(assetInfo(aJ), "fail to load price asset info")
230+ let I = pow(10, 0, be.decimals, 0, 0, DOWN)
231+ let bf = am()
232+ let bg = [0, 0, 0, 0]
233+[StringEntry(aa(), L(A, B, C, D, h, E, F, G, H, I, J, bc.amount)), at(ad(), bf, bg, C)]
184234 }
185235 }
186236
187237
188238
189-@Callable(aR)
239+@Callable(aY)
190240 func invest () = {
191- let aE = ah()
192- let A = parseIntValue(aE[o])
193- let B = parseIntValue(aE[p])
194- let aS = (A + B)
195- let C = parseIntValue(aE[q])
196- let D = parseIntValue(aE[r])
197- let h = parseIntValue(aE[s])
198- let E = parseIntValue(aE[t])
199- let F = aE[u]
200- let aG = fromBase58String(F)
201- let G = parseIntValue(aE[v])
202- let H = aE[w]
203- let aH = fromBase58String(H)
204- let I = parseIntValue(aE[x])
205- let aY = parseIntValue(aE[y])
206- let ac = toString(aR.caller)
241+ let aG = aj()
242+ let A = parseIntValue(aG[o])
243+ let B = parseIntValue(aG[p])
244+ let bb = (A + B)
245+ let C = parseIntValue(aG[q])
246+ let D = parseIntValue(aG[r])
247+ let h = parseIntValue(aG[s])
248+ let E = parseIntValue(aG[t])
249+ let F = aG[u]
250+ let aI = fromBase58String(F)
251+ let G = parseIntValue(aG[v])
252+ let H = aG[w]
253+ let aJ = fromBase58String(H)
254+ let I = parseIntValue(aG[x])
255+ let bh = parseIntValue(aG[y])
256+ let ac = toString(aY.caller)
207257 if ((A > height))
208258 then throw("ido has not been started yet")
209- else if ((height > aS))
259+ else if ((height > bb))
210260 then throw("ido has been already ended")
211- else if ((size(aR.payments) != 1))
261+ else if ((size(aY.payments) != 1))
212262 then throw("exactly 1 payment is expected")
213263 else {
214- let aT = value(aR.payments[0])
215- let aZ = value(aT.assetId)
216- let ba = aT.amount
217- if ((aZ != aH))
218- then throw((("invalid payment asset id: " + toBase58String(aZ)) + " is expected"))
264+ let bc = value(aY.payments[0])
265+ let bi = value(bc.assetId)
266+ let bj = bc.amount
267+ if ((bi != aJ))
268+ then throw((("invalid payment asset id: " + toBase58String(bi)) + " is expected"))
219269 else {
220- let bb = al(ac)
221- let aW = ak()
222- let bc = (parseIntValue(aW[M]) + ba)
223- let bd = (bc * 100)
224- if ((bd > assetBalance(this, aG)))
270+ let bk = an(ac)
271+ let bf = am()
272+ let bl = (parseIntValue(bf[M]) + bj)
273+ let bm = (bl * 100)
274+ if ((bm > assetBalance(this, aI)))
225275 then throw("IDO asset has been - sold consider to use smaller payment")
226276 else {
227- let aX = [ba, ba, 0, 0]
228-[ar(ab(ac), bb, aX, C), ar(ad(), aW, aX, C), az(ac, ba, 0, aR.transactionId)]
277+ let bg = [bj, bj, 0, 0]
278+[at(ab(ac), bk, bg, C), at(ad(), bf, bg, C), aB(ac, bj, 0, aY.transactionId)]
229279 }
230280 }
231281 }
232282 }
233283
234284
235285
236-@Callable(aR)
237-func claim (aD,aI) = {
238- let be = toString(aR.caller)
239- if ((aI != be))
286+@Callable(aY)
287+func claim (aF,aK) = {
288+ let bn = toString(aY.caller)
289+ if ((aK != bn))
240290 then throw("not authorized")
241291 else {
242- let bf = aC(aD, aR.caller, aR.transactionId)
243- let aX = bf._1
244- let bg = bf._2
245- let bh = bf._3
246- let aJ = bf._4
247- let aN = bf._5
248- let bi = aX[ap]
249- let bj = aX[aq]
250- $Tuple2([ScriptTransfer(aR.caller, bg, bh), ar(ab(aI), aJ, aX, aN), ar(ad(), ak(), aX, aN), aB(aI, bi, bj, aR.transactionId)], unit)
292+ let bo = aE(aF, aY.caller, aY.transactionId)
293+ let bg = bo._1
294+ let bp = bo._2
295+ let bq = bo._3
296+ let aL = bo._4
297+ let aP = bo._5
298+ let br = bg[ar]
299+ let bs = bg[as]
300+ $Tuple2([ScriptTransfer(aY.caller, bp, bq), at(ab(aK), aL, bg, aP), at(ad(), am(), bg, aP), aD(aK, br, bs, aY.transactionId)], unit)
251301 }
252302 }
253303
254304
255305
256-@Callable(aR)
257-func claimREADONLY (aD,aI) = {
258- let bf = aC(aD, addressFromStringValue(aI), fromBase58String(""))
259- let aX = bf._1
260- let bg = bf._2
261- let bh = bf._3
262- let aJ = bf._4
263- let aN = bf._5
264- let bk = bf._6
265- let bl = bk[0]
266- let bm = bk[1]
267- $Tuple2(nil, makeString(["%s%d%d", aI, toString(bl), toString(bm)], c))
306+@Callable(aY)
307+func claimREADONLY (aF,aK) = {
308+ let bo = aE(aF, addressFromStringValue(aK), fromBase58String(""))
309+ let bg = bo._1
310+ let bp = bo._2
311+ let bq = bo._3
312+ let aL = bo._4
313+ let aP = bo._5
314+ let bt = bo._6
315+ let bu = bt[0]
316+ let bv = bt[1]
317+ $Tuple2(nil, makeString(["%s%d%d", aK, toString(bu), toString(bv)], c))
268318 }
269319
320+
321+
322+@Callable(aY)
323+func setManager (bw) = {
324+ let bx = aX(aY)
325+ if ((bx == bx))
326+ then {
327+ let by = fromBase58String(bw)
328+ if ((by == by))
329+ then [StringEntry(ai(), bw)]
330+ else throw("Strict value is not equal to itself.")
331+ }
332+ else throw("Strict value is not equal to itself.")
333+ }
334+
335+
336+
337+@Callable(aY)
338+func confirmManager () = {
339+ let bz = aW()
340+ let bA = if (isDefined(bz))
341+ then true
342+ else throw("No pending manager")
343+ if ((bA == bA))
344+ then {
345+ let bB = if ((aY.callerPublicKey == value(bz)))
346+ then true
347+ else throw("You are not pending manager")
348+ if ((bB == bB))
349+ then [StringEntry(ah(), toBase58String(value(bz))), DeleteEntry(ai())]
350+ else throw("Strict value is not equal to itself.")
351+ }
352+ else throw("Strict value is not equal to itself.")
353+ }
354+
355+
356+@Verifier(bC)
357+func bD () = {
358+ let bE = {
359+ let aU = aT()
360+ if ($isInstanceOf(aU, "ByteVector"))
361+ then {
362+ let ba = aU
363+ ba
364+ }
365+ else if ($isInstanceOf(aU, "Unit"))
366+ then bC.senderPublicKey
367+ else throw("Match error")
368+ }
369+ sigVerify(bC.bodyBytes, bC.proofs[0], bE)
370+ }
270371

github/deemru/w8io/03bedc9 
86.50 ms