tx · HK9oPSkJJCCb6b449XLJXYEzRApKc1zTqnFUeRFkGhCb

3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT:  -0.01400000 Waves

2021.06.13 16:13 [1568613] smart account 3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT > SELF 0.00000000 Waves

{ "type": 13, "id": "HK9oPSkJJCCb6b449XLJXYEzRApKc1zTqnFUeRFkGhCb", "fee": 1400000, "feeAssetId": null, "timestamp": 1623590044069, "version": 2, "chainId": 84, "sender": "3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT", "senderPublicKey": "3ijdmxaYrpDFsKVbQH2kvB7i6JzHj9bep9bGWiQPra2D", "proofs": [ "2jg3mnG2rrcezs5hcrDQryVvhr6Wqu3d833q7DVykRKacLKF3FYW1GUrWSXotp7wdeyUwjSZSni7wS6BPV6wBf88" ], "script": "base64:AAIEAAAAAAAAACUIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgMKAQgSABIAAAAAWwAAAAAMYWRtaW5QdWJLZXkxAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAMYWRtaW5QdWJLZXkyAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAMYWRtaW5QdWJLZXkzAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQCAAAAGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgIAAAAaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgAAAB50b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX2N1cnJlbnQAAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwAAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAPa2V5TGFzdEludGVyZXN0AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0AgAAABVfbGFzdF9pbnRlcmVzdF9oZWlnaHQAAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAIAAAAUX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAAAlrZXlTV09QaWQCAAAAB1NXT1BfaWQAAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAEGtleUF2YWlsYWJsZVNXT1ACAAAAD19hdmFpbGFibGVfU1dPUAAAAAAVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0AgAAABRmYXJtaW5nX3N0YXJ0X2hlaWdodAAAAAAGa2V5QVBZAgAAAANhcHkAAAAAFmtQcmV2aW91c1RvdGFsVm90ZVNXT1ACAAAAGHByZXZpb3VzX3RvdGFsX3ZvdGVfU1dPUAAAAAATa2V5U3dvcFllYXJFbWlzc2lvbgIAAAASc3dvcF95ZWFyX2VtaXNzaW9uAAAAAA9rZXlCYWxhbmNlY3BtbUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZWNwbW1CAgAAAA9CX2Fzc2V0X2JhbGFuY2UAAAAAIWtIYXJ2ZXN0UG9vbEFjdGl2ZVZvdGVTdHJ1Y1ZvdGluZwIAAAAeX2hhcnZlc3RfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAACVrSGFydmVzdFVzZXJQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nAgAAACNfaGFydmVzdF91c2VyX3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAAAAAZa2V5TGltaXRTaGFyZUZpcnN0SGFydmVzdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa2V5QXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAAC2tleUFzc2V0SWRCAgAAAApCX2Fzc2V0X2lkAAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAABNrZXlmaXJzdEhhcnZlc3RDcG1tAgAAAA1maXJzdF9oYXJ2ZXN0AAAAAA5rZXlUZW1wUHJldlN1bQIAAAATc3VtX3Jld2FyZF9wcmV2aW91cwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAABFnb3Zlcm5hbmNlQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVKr6ad6B9BNShco/LjqIUbMZ6pgcWfINLQAAAAAGd2FsbGV0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU3z1Ll4lYWd4V4ORRC1bdPXpfvbV/hSGJAAAAAA12b3RpbmdBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUGjZ+31einSdpXP6/9ybU5/uhw2g+IMp/AAAAABxhZG1pbkluY3JlYXNlSW50ZXJlc3RBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU3z1Ll4lYWd4V4ORRC1bdPXpfvbV/hSGJAAAAAA5vbmVXZWVrSW5CbG9jawAAAAAAAAAnegAAAAAOdG90YWxWb3RlU2hhcmUAAAAAAlQL5AAAAAAAC3NjYWxlVmFsdWUxAAAAAAAAAAAKAAAAAAtzY2FsZVZhbHVlMwAAAAAAAAAD6AAAAAALc2NhbGVWYWx1ZTUAAAAAAAABhqAAAAAAC3NjYWxlVmFsdWU2AAAAAAAAD0JAAAAAAAtzY2FsZVZhbHVlOAAAAAAABfXhAAAAAAAMc2NhbGVWYWx1ZTExAAAAABdIdugAAQAAAAtzdHJBc3NldElkQQAAAAEAAAAEcG9vbAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEcG9vbAUAAAALa2V5QXNzZXRJZEEBAAAAC3N0ckFzc2V0SWRCAAAAAQAAAARwb29sCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAARwb29sBQAAAAtrZXlBc3NldElkQgEAAAAIYXNzZXRJZEEAAAABAAAABHBvb2wDCQAAAAAAAAIJAQAAAAtzdHJBc3NldElkQQAAAAEFAAAABHBvb2wCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEJAQAAAAtzdHJBc3NldElkQQAAAAEFAAAABHBvb2wBAAAACGFzc2V0SWRCAAAAAQAAAARwb29sAwkAAAAAAAACCQEAAAALc3RyQXNzZXRJZEIAAAABBQAAAARwb29sAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABCQEAAAALc3RyQXNzZXRJZEIAAAABBQAAAARwb29sAAAAAAtrQmFzZVBlcmlvZAIAAAALYmFzZV9wZXJpb2QAAAAADWtQZXJpb2RMZW5ndGgCAAAADXBlcmlvZF9sZW5ndGgAAAAADGtTdGFydEhlaWdodAIAAAAMc3RhcnRfaGVpZ2h0AAAAABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AgAAABRmaXJzdF9oYXJ2ZXN0X2hlaWdodAAAAAAWa0R1cmF0aW9uRnVsbFZvdGVQb3dlcgIAAAAYZHVyYXRpb25fZnVsbF92b3RlX3Bvd2VyAAAAAA1rTWluVm90ZVBvd2VyAgAAAA5taW5fdm90ZV9wb3dlcgAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAAC2tCYXNlUGVyaW9kAgAAABFFbXB0eSBrQmFzZVBlcmlvZAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAAxrU3RhcnRIZWlnaHQCAAAAEkVtcHR5IGtTdGFydEhlaWdodAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa1BlcmlvZExlbmd0aAIAAAATRW1wdHkga1BlcmlvZExlbmd0aAAAAAAVZHVyYXRpb25GdWxsVm90ZVBvd2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAAWa0R1cmF0aW9uRnVsbFZvdGVQb3dlcgIAAAAcRW1wdHkga0R1cmF0aW9uRnVsbFZvdGVQb3dlcgAAAAAMbWluVm90ZVBvd2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa01pblZvdGVQb3dlcgIAAAATRW1wdHkga01pblZvdGVQb3dlcgAAAAAIaXNBY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQAAAAAKY3VyclBlcmlvZAkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAQAAAA1nZXRMaW1pdFRva2VuAAAAAQAAAARwb29sCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAARwb29sBQAAABlrZXlMaW1pdFNoYXJlRmlyc3RIYXJ2ZXN0AAAAAAAAAAAAAAAAAANBUFkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAABmtleUFQWQAAAAAQU3dvcFllYXJFbWlzc2lvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAATa2V5U3dvcFllYXJFbWlzc2lvbgEAAAAKYXNzZXROYW1lQQAAAAEAAAAEcG9vbAQAAAAHJG1hdGNoMAkBAAAACGFzc2V0SWRBAAAAAQUAAAAEcG9vbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAKYXNzZXROYW1lQgAAAAEAAAAEcG9vbAQAAAAHJG1hdGNoMAkBAAAACGFzc2V0SWRCAAAAAQUAAAAEcG9vbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAAEU1dPUAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAlrZXlTV09QaWQBAAAADmlzRmlyc3RIYXJ2ZXN0AAAAAQAAAARwb29sCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHBvb2wFAAAAE2tleWZpcnN0SGFydmVzdENwbW0HAQAAABVnZXRIZWlnaHRGaXJzdEhhcnZlc3QAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAVa2V5Rmlyc3RIYXJ2ZXN0SGVpZ2h0AAAAAAAAAAAAAQAAAAtnZXRCYWxhbmNlQQAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAD2tleUJhbGFuY2VjcG1tQQkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAPa2V5QmFsYW5jZWNwbW1BAQAAAAtnZXRCYWxhbmNlQgAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAD2tleUJhbGFuY2VjcG1tQgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAPa2V5QmFsYW5jZWNwbW1CAQAAABJnZXRTaGFyZUxpbWl0VG9rZW4AAAABAAAABHBvb2wJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAARwb29sBQAAAAtrU2hhcmVMaW1pdAkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAALa1NoYXJlTGltaXQBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAEAAAAEcG9vbAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkAQAAAA5hY2NvdW50QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAJAAPwAAAAAgUAAAAEdGhpcwUAAAACaWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwCAkAA+8AAAABBQAAAAR0aGlzAAAACWF2YWlsYWJsZQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAQAAAAIc3RyaW5nSWQJAAJYAAAAAQUAAAACaWQEAAAABGluZm8JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAJpZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAUAAAAIc3RyaW5nSWQCAAAADiBkb2Vzbid0IGV4aXN0CQAFFQAAAAMFAAAACHN0cmluZ0lkCAUAAAAEaW5mbwAAAARuYW1lCAUAAAAEaW5mbwAAAAhkZWNpbWFscwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAJAAUVAAAAAwIAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAAAAAAICQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAA5jYWxjU2NhbGVWYWx1ZQAAAAIAAAAIYXNzZXRJZDEAAAAIYXNzZXRJZDIEAAAAEGFzc2V0SWQxRGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAACGFzc2V0SWQxAAAACGRlY2ltYWxzBAAAABBhc3NldElkMkRlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAhhc3NldElkMgAAAAhkZWNpbWFscwQAAAALc2NhbGVEaWdpdHMJAABkAAAAAgkAAGUAAAACBQAAABBhc3NldElkMkRlY2ltYWxzBQAAABBhc3NldElkMURlY2ltYWxzAAAAAAAAAAAICQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAC3NjYWxlRGlnaXRzAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhIQUxGRE9XTgEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACAAAABHBvb2wAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAABHVzZXIFAAAAEGtleUF2YWlsYWJsZVNXT1AAAAAAAAAAAAABAAAACnJld2FyZEluZm8AAAABAAAABHBvb2wEAAAAGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAAbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uAAAAAAAAAAAABAAAABpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABFyZXdhcmRQb29sQ3VycmVudAkAAGsAAAADBQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUAAAAZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAUAAAAOdG90YWxWb3RlU2hhcmUEAAAAEnJld2FyZFBvb2xQcmV2aW91cwkAAGsAAAADBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMFAAAAGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAA50b3RhbFZvdGVTaGFyZQMDCQAAZgAAAAIFAAAAEXJld2FyZFBvb2xDdXJyZW50BQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAYJAABmAAAAAgUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAACAAAAAQIAAABicmV3YXJkUG9vbEN1cnJlbnQgPiB0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudCBvciByZXdhcmRQb29sUHJldmlvdXMgPiB0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAUWAAAABAUAAAARcmV3YXJkUG9vbEN1cnJlbnQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQAAAARwb29sBAAAAAxsYXN0SW50ZXJlc3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAFFAAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAMbGFzdEludGVyZXN0AQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAARwb29sAAAAC3VzZXJBZGRyZXNzBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QEAAAACXVzZXJTaGFyZQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAABhrZXlVc2VyU2hhcmVUb2tlbnNMb2NrZWQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0CQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAQAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBAAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BAAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAJdXNlclNoYXJlBQAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUAAAAAAAAAAAAJAAUUAAAAAgUAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQBAAAADGNhbGNJbnRlcmVzdAAAAAoAAAASbGFzdEludGVyZXN0SGVpZ2h0AAAAEnJld2FyZFVwZGF0ZUhlaWdodAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAADGxhc3RJbnRlcmVzdAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sAAAAQc2hhcmVUb2tlbkxvY2tlZAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrAAAADHNoYXJlQXNzZXRJZAAAAApzY2FsZVZhbHVlAAAACXBtdEFtb3VudAMJAAAAAAAAAgUAAAAQc2hhcmVUb2tlbkxvY2tlZAAAAAAAAAAAAAAAAAAAAAAAAAMJAQAAAAIhPQAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAADAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAIhPQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAAAAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAMJAABmAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAZoZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BAAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQBAAAACWNsYWltQ2FsYwAAAAMAAAAEcG9vbAAAAAZjYWxsZXIAAAAJcG10QW1vdW50BAAAAAxzaGFyZUFzc2V0SWQJAQAAAA9nZXRTaGFyZUFzc2V0SWQAAAABBQAAAARwb29sBAAAAApzY2FsZVZhbHVlCQEAAAAOY2FsY1NjYWxlVmFsdWUAAAACBQAAAARTV09QBQAAAAxzaGFyZUFzc2V0SWQEAAAAEHNoYXJlVG9rZW5Mb2NrZWQJAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABBQAAAARwb29sBAAAAA0kdDAxMzE0NjEzMjExCQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAEFAAAABHBvb2wEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAgFAAAADSR0MDEzMTQ2MTMyMTEAAAACXzEEAAAADGxhc3RJbnRlcmVzdAgFAAAADSR0MDEzMTQ2MTMyMTEAAAACXzIEAAAADSR0MDEzMjE2MTMzMjgJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCAUAAAANJHQwMTMyMTYxMzMyOAAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTMyMTYxMzMyOAAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDEzMjE2MTMzMjgAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxMzIxNjEzMzI4AAAAAl80BAAAAA0kdDAxMzMzMzEzNDEyCQEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIFAAAABHBvb2wFAAAABmNhbGxlcgQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAADSR0MDEzMzMzMTM0MTIAAAACXzEEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAgFAAAADSR0MDEzMzMzMTM0MTIAAAACXzIEAAAAD2N1cnJlbnRJbnRlcmVzdAkBAAAADGNhbGNJbnRlcmVzdAAAAAoFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAxsYXN0SW50ZXJlc3QFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawUAAAAQc2hhcmVUb2tlbkxvY2tlZAUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawUAAAAMc2hhcmVBc3NldElkBQAAAApzY2FsZVZhbHVlBQAAAAlwbXRBbW91bnQEAAAAC2NsYWltQW1vdW50CQAAawAAAAMFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAkAAGUAAAACBQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAACnNjYWxlVmFsdWUEAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0CQAFFgAAAAQFAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0BQAAAAtjbGFpbUFtb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50AQAAABdjYWxjdWxhdGVQcm90b2NvbFJld2FyZAAAAAEAAAAEcG9vbAQAAAANJHQwMTM5MzAxMzk5NQkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAxMzkzMDEzOTk1AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAxMzkzMDEzOTk1AAAAAl8yBAAAAA0kdDAxNDAwMDE0MTExCQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE0MDAwMTQxMTEAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE0MDAwMTQxMTEAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNDAwMDE0MTExAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTQwMDAxNDExMQAAAAJfNAQAAAAQc2hhcmVUb2tlbkxvY2tlZAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wDAwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAACQAAAAAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAAHAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMJAABmAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAAGcmV3YXJkBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUDAwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAACQEAAAACIT0AAAACBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAABwMDCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0CQAAAAAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAAAZyZXdhcmQFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQAAAAAAAAAAAAEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIAAAAEcG9vbAAAAApwbXRBc3NldElkBAAAABBwb29sU2hhcmVBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAEHBvb2xTaGFyZUFzc2V0SWQGBwEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgAAAARwb29sAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAR1c2VyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQAAAAAAAAAAAABAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAAAACAAAAAFpAQAAAARpbml0AAAAAQAAAAdlYXJseUxQAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAJa2V5U1dPUGlkCQAAAgAAAAECAAAAGFNXT1AgYWxyZWFkeSBpbml0aWFsaXplZAQAAAAKaW5pdEFtb3VudAAAAFrzEHpAAAQAAAAJU1dPUGlzc3VlCQAEQgAAAAUCAAAABFNXT1ACAAAAE1NXT1AgcHJvdG9jb2wgdG9rZW4FAAAACmluaXRBbW91bnQAAAAAAAAAAAgGBAAAAAZTV09QaWQJAAQ4AAAAAQUAAAAJU1dPUGlzc3VlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAARCAAAABQIAAAAEU1dPUAIAAAATU1dPUCBwcm90b2NvbCB0b2tlbgUAAAAKaW5pdEFtb3VudAAAAAAAAAAACAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa2V5U1dPUGlkCQACWAAAAAEFAAAABlNXT1BpZAUAAAADbmlsAAAAAWkBAAAAFGluaXRQb29sU2hhcmVGYXJtaW5nAAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAK09ubHkgdGhlIERBcHAgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EAAAADSR0MDE3MDk3MTcyMDAJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAANY3VycmVudFJld2FyZAgFAAAADSR0MDE3MDk3MTcyMDAAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE3MDk3MTcyMDAAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNzA5NzE3MjAwAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTcwOTcxNzIwMAAAAAJfNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAABJ1cGRhdGVQb29sSW50ZXJlc3QAAAABAAAABHBvb2wDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABndhbGxldAkAAAIAAAABAgAAACxPbmx5IHRoZSBBZG1pbiBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQAAAANJHQwMTc1MzMxNzY1MwkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wFAAAAHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MAAAAAAAAAAAAEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE3NTMzMTc2NTMAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE3NTMzMTc2NTMAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTc1MzMxNzY1MwAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTc1MzMxNzY1MwAAAAJfNAQAAAANJHQwMTc2NTgxNzc2MQkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAAA1jdXJyZW50UmV3YXJkCAUAAAANJHQwMTc2NTgxNzc2MQAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTc2NTgxNzc2MQAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE3NjU4MTc3NjEAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxNzY1ODE3NzYxAAAAAl80CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAPbG9ja1NoYXJlVG9rZW5zAAAAAQAAAARwb29sBAAAAA0kdDAxNzk1MzE4MDI4CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTc5NTMxODAyOAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE3OTUzMTgwMjgAAAACXzIEAAAADSR0MDE4MDMzMTgxMDYJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAApwbXRBc3NldElkBAAAAA1wbXRTdHJBc3NldElkCAUAAAANJHQwMTgwMzMxODEwNgAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAANJHQwMTgwMzMxODEwNgAAAAJfMgQAAAALcG10RGVjaW1hbHMIBQAAAA0kdDAxODAzMzE4MTA2AAAAAl8zBAAAAA0kdDAxODExMTE4MjE5CQEAAAAJY2xhaW1DYWxjAAAAAwUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE4MTExMTgyMTkAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE4MTExMTgyMTkAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTgxMTExODIxOQAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTgxMTExODIxOQAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZAAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAJcG10QW1vdW50BAAAABFhdmFpbGFibGVGdW5kc05ldwkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABB0b3RhbFNoYXJlQW1vdW50CQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAATdG90YWxTaGFyZUFtb3VudE5ldwkAAGQAAAACBQAAABB0b3RhbFNoYXJlQW1vdW50BQAAAAlwbXRBbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQEAAAACWJhc2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAUAAAASdXNlclNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAA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bGVzcyB0aGFuIDAFAAAACWJhc2VFbnRyeQAAAAFpAQAAABN3aXRoZHJhd1NoYXJlVG9rZW5zAAAAAgAAAARwb29sAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEAAAADXNoYXJlVG9rZW5zSWQJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAARwb29sAgAAAA5zaGFyZV9hc3NldF9pZAQAAAANJHQwMjI2NTMyMjc1MwkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMjI2NTMyMjc1MwAAAAJfMQQAAAAPY3VycmVudEludGVyZXN0CAUAAAANJHQwMjI2NTMyMjc1MwAAAAJfMgQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAyMjY1MzIyNzUzAAAAAl8zBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAyMjY1MzIyNzUzAAAAAl80BAAAABJ1c2VyU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAABFhdmFpbGFibGVGdW5kc05ldwkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABB0b3RhbFNoYXJlQW1vdW50CQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAATdG90YWxTaGFyZUFtb3VudE5ldwkAAGUAAAACBQAAABB0b3RhbFNoYXJlQW1vdW50BQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50AwkAAGYAAAACBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQJAAACAAAAAQIAAAAsV2l0aGRyYXcgYW1vdW50IG1vcmUgdGhlbiB1c2VyIGxvY2tlZCBhbW91bnQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQAAZgAAAAIFAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAkAAAIAAAABAgAAACxXaXRoZHJhdyBhbW91bnQgbW9yZSB0aGVuIHVzZXIgbG9ja2VkIGFtb3VudAMJAABmAAAAAgkAAGsAAAADAAAAAAAAAABjCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAA1zaGFyZVRva2Vuc0lkAAAAAAAAAABkBQAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAAAgAAAAECAAAAMkJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgZ3JlYXRlciB0aGFuIHRvdGFsQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBQAAABJ1c2VyU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQFAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QBQAAABFhdmFpbGFibGVGdW5kc05ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFAAAADXNoYXJlVG9rZW5zSWQFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAEcG9vbAQAAAANc2hhcmVUb2tlbnNJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkBAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAANJHQwMjQ3MzMyNDc5OAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAyNDczMzI0Nzk4AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAyNDczMzI0Nzk4AAAAAl8yBAAAAA0kdDAyNDgwMzI0OTE1CQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDI0ODAzMjQ5MTUAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDI0ODAzMjQ5MTUAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAyNDgwMzI0OTE1AAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMjQ4MDMyNDkxNQAAAAJfNAQAAAANJHQwMjQ5MjAyNTAyMAkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMjQ5MjAyNTAyMAAAAAJfMQQAAAAPY3VycmVudEludGVyZXN0CAUAAAANJHQwMjQ5MjAyNTAyMAAAAAJfMgQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAyNDkyMDI1MDIwAAAAAl8zBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAyNDkyMDI1MDIwAAAAAl80BAAAAA1hdmFpbGFibGVGdW5kCQAAZAAAAAIJAQAAABF1c2VyQXZhaWxhYmxlU1dPUAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgUAAAALY2xhaW1BbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQDCQAAAAAA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", "height": 1568613, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HYxaD9QorkyhpNrfACPmDf86EezwWYy8ivaDwhTsBtGX Next: 7SGZdLk7sTYaTqZwbSjW2zFpNDkhNg96RGj3QfTXZrhg Diff:
OldNewDifferences
206206 if ($isInstanceOf(as, "ByteVector"))
207207 then {
208208 let at = as
209- let aG = toBase58String(at)
210- let aH = valueOrErrorMessage(assetInfo(at), (("Asset " + aG) + " doesn't exist"))
211- $Tuple3(aG, aH.name, aH.decimals)
209+ assetBalance(this, at)
210+ }
211+ else if ($isInstanceOf(as, "Unit"))
212+ then {
213+ let au = as
214+ wavesBalance(this).available
215+ }
216+ else throw("Match error")
217+ }
218+
219+
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
223+ then {
224+ let at = as
225+ let aH = toBase58String(at)
226+ let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227+ $Tuple3(aH, aI.name, aI.decimals)
212228 }
213229 else if ($isInstanceOf(as, "Unit"))
214230 then {
219235 }
220236
221237
222-func aI (aJ,aK) = {
223- let aL = value(assetInfo(aJ)).decimals
238+func aJ (aK,aL) = {
224239 let aM = value(assetInfo(aK)).decimals
225- let aN = ((aM - aL) + 8)
226- pow(10, 0, aN, 0, 0, HALFDOWN)
240+ let aN = value(assetInfo(aL)).decimals
241+ let aO = ((aN - aM) + 8)
242+ pow(10, 0, aO, 0, 0, HALFDOWN)
227243 }
228244
229245
230-func aO (X,aP) = valueOrElse(getInteger(this, (((X + "_") + toString(aP)) + u)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
231247
232248
233-func aQ (X) = {
234- let aR = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
235- let aS = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
236- let aT = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
237- let aU = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
238- let aV = valueOrElse(getInteger(K, (X + j)), 0)
239- let aW = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
240- let aX = fraction(aR, aT, P)
241- let aY = fraction(aS, aW, P)
242- if (if ((aX > aR))
249+func aR (X) = {
250+ let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251+ let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252+ let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253+ let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254+ let aW = valueOrElse(getInteger(K, (X + j)), 0)
255+ let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256+ let aY = fraction(aS, aU, P)
257+ let aZ = fraction(aT, aX, P)
258+ if (if ((aY > aS))
243259 then true
244- else (aY > aS))
260+ else (aZ > aT))
245261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
246- else $Tuple4(aX, aU, aY, aV)
262+ else $Tuple4(aY, aV, aZ, aW)
247263 }
248264
249265
250-func aZ (X) = {
251- let ba = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
252- let bb = valueOrElse(getInteger(this, (X + o)), height)
253- $Tuple2(bb, ba)
266+func ba (X) = {
267+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268+ let bc = valueOrElse(getInteger(this, (X + o)), height)
269+ $Tuple2(bc, bb)
254270 }
255271
256272
257-func bc (X,bd) = {
258- let be = getInteger(this, (((X + "_") + toString(bd)) + q))
259- let bf = getInteger(this, (((X + "_") + toString(bd)) + p))
260- let ba = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
261- let bg = {
262- let as = be
263- if ($isInstanceOf(as, "Int"))
264- then {
265- let be = as
266- be
267- }
268- else ba
269- }
273+func bd (X,be) = {
274+ let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275+ let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
270277 let bh = {
271278 let as = bf
272279 if ($isInstanceOf(as, "Int"))
274281 let bf = as
275282 bf
276283 }
284+ else bb
285+ }
286+ let bi = {
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
289+ then {
290+ let bg = as
291+ bg
292+ }
277293 else 0
278294 }
279- $Tuple2(bg, bh)
295+ $Tuple2(bh, bi)
280296 }
281297
282298
283-func bi (bb,aU,aV,ba,bj,bk,bl,bm,bn,bo) = if ((bk == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
284300 then 0
285- else if ((aV != 0))
286- then if (if ((aU > height))
287- then (aU == aV)
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
288304 else false)
289305 then {
290- let bp = (bl * (height - bb))
291- (ba + fraction(bp, bn, bk))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
292308 }
293- else if (if ((height > aU))
294- then (aU != aV)
309+ else if (if ((height > aV))
310+ then (aV != aW)
295311 else false)
296312 then {
297- let bp = (bl * (height - bb))
298- (ba + fraction(bp, bn, bk))
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
299315 }
300- else if (if (if ((height > aU))
301- then (aU == aV)
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
302318 else false)
303- then (bb > aU)
319+ then (bc > aV)
304320 else false)
305321 then {
306- let bp = (bj * (height - bb))
307- (ba + fraction(bp, bn, bk))
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
308324 }
309325 else {
310- let bq = (bl * (aU - bb))
311- let br = (ba + fraction(bq, bn, bk))
312- let bp = (bj * (height - aU))
313- (br + fraction(bp, bn, bk))
326+ let br = (bm * (aV - bc))
327+ let bs = (bb + fraction(br, bo, bl))
328+ let bq = (bk * (height - aV))
329+ (bs + fraction(bq, bo, bl))
314330 }
315- else if ((aU > height))
331+ else if ((aV > height))
316332 then {
317- let bp = (bl * (height - bb))
318- (ba + fraction(bp, bn, bk))
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
319335 }
320- else if ((bb > aU))
336+ else if ((bc > aV))
321337 then {
322- let bp = (bj * (height - bb))
323- (ba + fraction(bp, bn, bk))
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
324340 }
325341 else {
326- let bq = (bl * (aU - bb))
327- let br = (ba + fraction(bq, bn, bk))
328- let bp = (bj * (height - aU))
329- (br + fraction(bp, bn, bk))
342+ let br = (bm * (aV - bc))
343+ let bs = (bb + fraction(br, bo, bl))
344+ let bq = (bk * (height - aV))
345+ (bs + fraction(bq, bo, bl))
330346 }
331347
332348
333-func bs (X,bt,bo) = {
334- let bm = aD(X)
335- let bn = aI(aw, bm)
336- let bk = aC(X)
337- let bu = aZ(X)
338- let bb = bu._1
339- let ba = bu._2
340- let bv = aQ(X)
341- let bj = bv._1
342- let aU = bv._2
343- let bl = bv._3
344- let aV = bv._4
345- let bw = bc(X, bt)
346- let be = bw._1
347- let bh = bw._2
348- let bx = bi(bb, aU, aV, ba, bj, bk, bl, bm, bn, bo)
349- let by = fraction(bh, (bx - be), bn)
350- let bz = bx
351- $Tuple4(bz, bx, by, bh)
349+func bt (X,bu,bp) = {
350+ let bn = aD(X)
351+ let bo = aJ(aw, bn)
352+ let bl = aC(X)
353+ let bv = ba(X)
354+ let bc = bv._1
355+ let bb = bv._2
356+ let bw = aR(X)
357+ let bk = bw._1
358+ let aV = bw._2
359+ let bm = bw._3
360+ let aW = bw._4
361+ let bx = bd(X, bu)
362+ let bf = bx._1
363+ let bi = bx._2
364+ let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365+ let bz = fraction(bi, (by - bf), bo)
366+ let bA = by
367+ $Tuple4(bA, by, bz, bi)
352368 }
353369
354370
355-func bA (X) = {
356- let bB = aZ(X)
357- let bb = bB._1
358- let ba = bB._2
359- let bC = aQ(X)
360- let bj = bC._1
361- let aU = bC._2
362- let bl = bC._3
363- let aV = bC._4
364- let bk = aC(X)
365- if (if ((bk == 0))
366- then (aV == 0)
371+func bB (X) = {
372+ let bC = ba(X)
373+ let bc = bC._1
374+ let bb = bC._2
375+ let bD = aR(X)
376+ let bk = bD._1
377+ let aV = bD._2
378+ let bm = bD._3
379+ let aW = bD._4
380+ let bl = aC(X)
381+ if (if ((bl == 0))
382+ then (aW == 0)
367383 else false)
368- then if ((aU > height))
384+ then if ((aV > height))
369385 then {
370- let bp = (bl * (height - bb))
371- bp
386+ let bq = (bm * (height - bc))
387+ bq
372388 }
373- else if ((bb > aU))
389+ else if ((bc > aV))
374390 then {
375- let bp = (bj * (height - bb))
376- bp
391+ let bq = (bk * (height - bc))
392+ bq
377393 }
378394 else {
379- let bq = (bl * (aU - bb))
380- let bp = (bj * (height - aU))
381- (bp + bq)
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
397+ (bq + br)
382398 }
383- else if (if ((bk == 0))
384- then (aV != 0)
399+ else if (if ((bl == 0))
400+ then (aW != 0)
385401 else false)
386- then if (if ((aU > height))
387- then (aU == aV)
402+ then if (if ((aV > height))
403+ then (aV == aW)
388404 else false)
389405 then {
390- let bp = (bl * (height - bb))
391- bp
406+ let bq = (bm * (height - bc))
407+ bq
392408 }
393- else if (if ((height > aU))
394- then (aU != aV)
409+ else if (if ((height > aV))
410+ then (aV != aW)
395411 else false)
396412 then {
397- let bp = (bl * (height - bb))
398- bp
413+ let bq = (bm * (height - bc))
414+ bq
399415 }
400- else if (if (if ((height > aU))
401- then (aU == aV)
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
402418 else false)
403- then (bb > aU)
419+ then (bc > aV)
404420 else false)
405421 then {
406- let bp = (bj * (height - bb))
407- bp
422+ let bq = (bk * (height - bc))
423+ bq
408424 }
409425 else {
410- let bq = (bl * (aU - bb))
411- let bp = (bj * (height - aU))
412- (bp + bq)
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
428+ (bq + br)
413429 }
414430 else 0
415431 }
416432
417433
418-func bD (X,bE) = {
419- let bF = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
420- if ((bE == bF))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
421437 then true
422438 else false
423439 }
424440
425441
426-func bG (X,aP) = valueOrElse(getInteger(this, (((X + "_") + toString(aP)) + s)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
427443
428444
429-func bH (bI) = [BooleanEntry(f, false), StringEntry(g, bI)]
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
430446
431447
432-@Callable(bJ)
433-func init (bK) = if (isDefined(getString(this, r)))
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
434450 then throw("SWOP already initialized")
435451 else {
436- let bL = 100000000000000
437- let bM = Issue("SWOP", "SWOP protocol token", bL, 8, true)
438- let bN = calculateAssetId(bM)
439-[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bL, 8, true), StringEntry(r, toBase58String(bN))]
452+ let bM = 100000000000000
453+ let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454+ let bO = calculateAssetId(bN)
455+[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
440456 }
441457
442458
443459
444-@Callable(bJ)
445-func initPoolShareFarming (X) = if ((bJ.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
446462 then throw("Only the DApp itself can call this function")
447463 else {
448- let bO = aQ(X)
449- let bP = bO._1
450- let aU = bO._2
451- let bl = bO._3
452- let aV = bO._4
464+ let bP = aR(X)
465+ let bQ = bP._1
466+ let aV = bP._2
467+ let bm = bP._3
468+ let aW = bP._4
453469 [IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
454470 }
455471
456472
457473
458-@Callable(bJ)
459-func updatePoolInterest (X) = if ((bJ.caller != L))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
460476 then throw("Only the Admin itself can call this function")
461477 else {
462- let bQ = bs(X, N, 0)
463- let bz = bQ._1
464- let bx = bQ._2
465- let by = bQ._3
466- let bh = bQ._4
467- let bR = aQ(X)
468- let bP = bR._1
469- let aU = bR._2
470- let bl = bR._3
471- let aV = bR._4
472-[IntegerEntry((X + n), bz), IntegerEntry((X + o), height)]
478+ let bR = bt(X, N, 0)
479+ let bA = bR._1
480+ let by = bR._2
481+ let bz = bR._3
482+ let bi = bR._4
483+ let bS = aR(X)
484+ let bQ = bS._1
485+ let aV = bS._2
486+ let bm = bS._3
487+ let aW = bS._4
488+[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
473489 }
474490
475491
476492
477-@Callable(bJ)
493+@Callable(bK)
478494 func lockShareTokens (X) = {
479- let bS = $Tuple2(bJ.payments[0].amount, bJ.payments[0].assetId)
480- let bo = bS._1
481- let bE = bS._2
482- let bT = aE(bE)
483- let bU = bT._1
484- let bV = bT._2
485- let bW = bT._3
486- let bX = bs(X, bJ.caller, bo)
487- let bz = bX._1
488- let bx = bX._2
489- let by = bX._3
490- let bh = bX._4
491- let bY = (bh + bo)
492- let bZ = (aO(X, bJ.caller) + by)
493- let ca = aC(X)
494- let cb = (ca + bo)
495- let cc = bG(X, bJ.caller)
496- let cd = (cc + by)
497- let ce = [IntegerEntry((((X + "_") + toString(bJ.caller)) + q), bz), IntegerEntry((((X + "_") + toString(bJ.caller)) + p), bY), IntegerEntry((X + d), cb), IntegerEntry((X + n), bx), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bJ.caller)) + s), cd), IntegerEntry((((X + "_") + toString(bJ.caller)) + t), by), IntegerEntry((((X + "_") + toString(bJ.caller)) + u), bZ)]
498- if ((0 >= bo))
495+ let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
496+ let bp = bT._1
497+ let bF = bT._2
498+ let bU = aG(bF)
499+ let bV = bU._1
500+ let bW = bU._2
501+ let bX = bU._3
502+ let bY = bt(X, bK.caller, bp)
503+ let bA = bY._1
504+ let by = bY._2
505+ let bz = bY._3
506+ let bi = bY._4
507+ let bZ = (bi + bp)
508+ let ca = (aP(X, bK.caller) + bz)
509+ let cb = aC(X)
510+ let cc = (cb + bp)
511+ let cd = bH(X, bK.caller)
512+ let ce = (cd + bz)
513+ let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
514+ if ((0 >= bp))
499515 then throw("You can't lock token")
500516 else if (!(am))
501517 then throw("DApp is inactive at this moment")
502- else if (!(bD(X, bE)))
518+ else if (!(bE(X, bF)))
503519 then throw("Incorrect pmtAssetId")
504520 else if (if (ax(Address(fromBase58String(X))))
505521 then (ay(Address(fromBase58String(X))) > height)
506522 else false)
507523 then {
508- let cf = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
509- let cg = split(getStringValue(M, (((toString(bJ.caller) + "_") + X) + "_user_pool_struc")), "_")
510- let ch = split(getStringValue(M, (X + "_pool_struc")), "_")
511- let ci = split(valueOrElse(getString(M, (((toString(bJ.caller) + "_") + X) + C)), ""), "_")
512- let cj = split(valueOrElse(getString(M, (X + B)), ""), "_")
513- let ck = bh
514- let cl = if ((toString(an) == cg[2]))
515- then valueOrElse(parseInt(ci[0]), 0)
516- else valueOrElse(parseInt(cg[1]), 0)
524+ let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
525+ let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
526+ let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
527+ let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
528+ let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
529+ let cl = bi
517530 let cm = if ((toString(an) == ch[2]))
518531 then valueOrElse(parseInt(cj[0]), 0)
519532 else valueOrElse(parseInt(ch[1]), 0)
520- let cn = bA(X)
521- if ((cl != 0))
533+ let cn = if ((toString(an) == ci[2]))
534+ then valueOrElse(parseInt(ck[0]), 0)
535+ else valueOrElse(parseInt(ci[1]), 0)
536+ let co = bB(X)
537+ if ((cm != 0))
522538 then {
523- let co = aB(addressFromStringValue(X))
524- let cp = (fraction(co, cl, cm) - ck)
525- if (if ((size(ci) > 1))
526- then (valueOrElse(parseInt(ci[1]), 0) >= cf)
539+ let cp = aB(addressFromStringValue(X))
540+ let cq = (fraction(cp, cm, cn) - cl)
541+ if (if ((size(cj) > 1))
542+ then (valueOrElse(parseInt(cj[1]), 0) >= cg)
527543 else false)
528544 then throw("You can't share token")
529- else if ((bo > co))
530- then throw(("You can't share token more than " + toString(co)))
531- else if ((cp > 0))
532- then if ((ca == 0))
533- then (ce ++ [ScriptTransfer(L, cn, aw)])
534- else if ((cp >= bo))
535- then ce
536- else throw(("Your maximum share token is " + toString(cp)))
545+ else if ((bp > cp))
546+ then throw(("You can't share token more than " + toString(cp)))
547+ else if ((cq > 0))
548+ then if ((fraction(99, aE(bF), 100) > cc))
549+ then throw("Balance of share-token is greater than totalAmount")
550+ else if ((cb == 0))
551+ then (cf ++ [ScriptTransfer(L, co, aw)])
552+ else if ((cq >= bp))
553+ then cf
554+ else throw(("Your maximum share token is " + toString(cq)))
537555 else throw("You can't share token")
538556 }
539557 else throw("Your amount of token less than 0")
540558 }
541- else ce
559+ else cf
542560 }
543561
544562
545563
546-@Callable(bJ)
547-func withdrawShareTokens (X,cq) = {
548- let cr = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
549- let cs = bs(X, bJ.caller, 1)
550- let bz = cs._1
551- let bx = cs._2
552- let by = cs._3
553- let bh = cs._4
554- let bY = (bh - cq)
555- let bZ = (aO(X, bJ.caller) + by)
556- let ca = aC(X)
557- let cb = (ca - cq)
558- let cc = bG(X, bJ.caller)
559- let cd = (cc + by)
560- if ((cq > bh))
564+@Callable(bK)
565+func withdrawShareTokens (X,cr) = {
566+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
567+ let ct = bt(X, bK.caller, 1)
568+ let bA = ct._1
569+ let by = ct._2
570+ let bz = ct._3
571+ let bi = ct._4
572+ let bZ = (bi - cr)
573+ let ca = (aP(X, bK.caller) + bz)
574+ let cb = aC(X)
575+ let cc = (cb - cr)
576+ let cd = bH(X, bK.caller)
577+ let ce = (cd + bz)
578+ if ((cr > bi))
561579 then throw("Withdraw amount more then user locked amount")
562580 else if (!(am))
563581 then throw("DApp is inactive at this moment")
564- else [IntegerEntry((((X + "_") + toString(bJ.caller)) + q), bz), IntegerEntry((((X + "_") + toString(bJ.caller)) + p), bY), IntegerEntry((X + n), bx), IntegerEntry((X + o), height), IntegerEntry((X + d), cb), IntegerEntry((((X + "_") + toString(bJ.caller)) + u), bZ), IntegerEntry((((X + "_") + toString(bJ.caller)) + s), cd), IntegerEntry((((X + "_") + toString(bJ.caller)) + t), by), ScriptTransfer(bJ.caller, cq, cr)]
582+ else if ((cr > bi))
583+ then throw("Withdraw amount more then user locked amount")
584+ else if ((fraction(99, aE(cs), 100) > cc))
585+ then throw("Balance of share-token is greater than totalAmount")
586+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
565587 }
566588
567589
568590
569-@Callable(bJ)
591+@Callable(bK)
570592 func claim (X) = {
571- let bk = aC(X)
572- let ct = aZ(X)
573- let bb = ct._1
574- let ba = ct._2
575- let cu = aQ(X)
576- let bj = cu._1
577- let aU = cu._2
578- let bl = cu._3
579- let aV = cu._4
580- let cv = bs(X, bJ.caller, 1)
581- let bz = cv._1
582- let bx = cv._2
583- let by = cv._3
584- let bh = cv._4
585- let cw = (aO(X, bJ.caller) + by)
586- let cc = bG(X, bJ.caller)
587- let cd = (cc + by)
588- if ((cw == 0))
593+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
594+ let bl = aC(X)
595+ let cu = ba(X)
596+ let bc = cu._1
597+ let bb = cu._2
598+ let cv = aR(X)
599+ let bk = cv._1
600+ let aV = cv._2
601+ let bm = cv._3
602+ let aW = cv._4
603+ let cw = bt(X, bK.caller, 1)
604+ let bA = cw._1
605+ let by = cw._2
606+ let bz = cw._3
607+ let bi = cw._4
608+ let cx = (aP(X, bK.caller) + bz)
609+ let cd = bH(X, bK.caller)
610+ let ce = (cd + bz)
611+ if ((cx == 0))
589612 then throw("You have 0 available SWOP")
590613 else if (!(am))
591614 then throw("DApp is inactive at this moment")
592- else [IntegerEntry((((X + "_") + toString(bJ.caller)) + q), bz), IntegerEntry((X + n), bx), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bJ.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bJ.caller)) + s), cd), IntegerEntry((((X + "_") + toString(bJ.caller)) + t), by), ScriptTransfer(bJ.caller, cw, aw)]
615+ else if ((cx == 0))
616+ then throw("You have 0 available SWOP")
617+ else if ((fraction(99, aE(cs), 100) > bl))
618+ then throw("Balance of share-token is greater than totalAmount")
619+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
593620 }
594621
595622
596623
597-@Callable(bJ)
624+@Callable(bK)
598625 func shutdown () = if (!(am))
599626 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
600- else if (!(containsElement([a, b, c], bJ.callerPublicKey)))
627+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
601628 then throw("Only admin can call this function")
602- else bH("Paused by admin")
629+ else bI("Paused by admin")
603630
604631
605632
606-@Callable(bJ)
633+@Callable(bK)
607634 func activate () = if (am)
608635 then throw("DApp is already active")
609- else if (!(containsElement([a, b, c], bJ.callerPublicKey)))
636+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
610637 then throw("Only admin can call this function")
611638 else [BooleanEntry(f, true), DeleteEntry(g)]
612639
613640
614-@Verifier(cx)
615-func cy () = {
616- let as = cx
617- sigVerify(cx.bodyBytes, cx.proofs[0], cx.senderPublicKey)
641+@Verifier(cy)
642+func cz () = {
643+ let as = cy
644+ sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
618645 }
619646
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
55
66 let b = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
77
88 let c = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
99
1010 let d = "_total_share_tokens_locked"
1111
1212 let e = "share_limit_on_first_harvest"
1313
1414 let f = "active"
1515
1616 let g = "shutdown_cause"
1717
1818 let h = "_current_pool_fraction_reward"
1919
2020 let i = "_previous_pool_fraction_reward"
2121
2222 let j = "_pool_reward_update_height"
2323
2424 let k = "total_reward_per_block_current"
2525
2626 let l = "total_reward_per_block_previous"
2727
2828 let m = "reward_update_height"
2929
3030 let n = "_last_interest"
3131
3232 let o = "_last_interest_height"
3333
3434 let p = "_share_tokens_locked"
3535
3636 let q = "_last_interest"
3737
3838 let r = "SWOP_id"
3939
4040 let s = "_SWOP_claimed_amount"
4141
4242 let t = "_SWOP_last_claimed_amount"
4343
4444 let u = "_available_SWOP"
4545
4646 let v = "farming_start_height"
4747
4848 let w = "apy"
4949
5050 let x = "previous_total_vote_SWOP"
5151
5252 let y = "swop_year_emission"
5353
5454 let z = "A_asset_balance"
5555
5656 let A = "B_asset_balance"
5757
5858 let B = "_harvest_pool_activeVote_struc"
5959
6060 let C = "_harvest_user_pool_activeVote_struc"
6161
6262 let D = "share_limit_on_first_harvest"
6363
6464 let E = "A_asset_id"
6565
6666 let F = "B_asset_id"
6767
6868 let G = "first_harvest_height"
6969
7070 let H = "first_harvest"
7171
7272 let I = "sum_reward_previous"
7373
7474 let J = "sum_reward_current"
7575
7676 let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7777
7878 let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
8080 let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8181
8282 let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8383
8484 let O = 10106
8585
8686 let P = 10000000000
8787
8888 let Q = 10
8989
9090 let R = 1000
9191
9292 let S = 100000
9393
9494 let T = 1000000
9595
9696 let U = 100000000
9797
9898 let V = 100000000000
9999
100100 func W (X) = getStringValue(X, E)
101101
102102
103103 func Y (X) = getStringValue(X, F)
104104
105105
106106 func Z (X) = if ((W(X) == "WAVES"))
107107 then unit
108108 else fromBase58String(W(X))
109109
110110
111111 func aa (X) = if ((Y(X) == "WAVES"))
112112 then unit
113113 else fromBase58String(Y(X))
114114
115115
116116 let ab = "base_period"
117117
118118 let ac = "period_length"
119119
120120 let ad = "start_height"
121121
122122 let ae = "first_harvest_height"
123123
124124 let af = "duration_full_vote_power"
125125
126126 let ag = "min_vote_power"
127127
128128 let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
129129
130130 let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
131131
132132 let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
133133
134134 let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
135135
136136 let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
137137
138138 let am = getBooleanValue(this, f)
139139
140140 let an = (ah + ((height - ai) / aj))
141141
142142 func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
143143
144144
145145 let ap = getIntegerValue(this, w)
146146
147147 let aq = getIntegerValue(this, y)
148148
149149 func ar (X) = {
150150 let as = Z(X)
151151 if ($isInstanceOf(as, "ByteVector"))
152152 then {
153153 let at = as
154154 value(assetInfo(at)).name
155155 }
156156 else if ($isInstanceOf(as, "Unit"))
157157 then {
158158 let au = as
159159 "WAVES"
160160 }
161161 else throw("Match error")
162162 }
163163
164164
165165 func av (X) = {
166166 let as = aa(X)
167167 if ($isInstanceOf(as, "ByteVector"))
168168 then {
169169 let at = as
170170 value(assetInfo(at)).name
171171 }
172172 else if ($isInstanceOf(as, "Unit"))
173173 then {
174174 let au = as
175175 "WAVES"
176176 }
177177 else throw("Match error")
178178 }
179179
180180
181181 let aw = fromBase58String(getStringValue(this, r))
182182
183183 func ax (X) = valueOrElse(getBoolean(X, H), false)
184184
185185
186186 func ay (X) = valueOrElse(getInteger(X, G), 0)
187187
188188
189189 func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
190190
191191
192192 func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
193193
194194
195195 func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
196196
197197
198198 func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
199199
200200
201201 func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
202202
203203
204204 func aE (aF) = {
205205 let as = aF
206206 if ($isInstanceOf(as, "ByteVector"))
207207 then {
208208 let at = as
209- let aG = toBase58String(at)
210- let aH = valueOrErrorMessage(assetInfo(at), (("Asset " + aG) + " doesn't exist"))
211- $Tuple3(aG, aH.name, aH.decimals)
209+ assetBalance(this, at)
210+ }
211+ else if ($isInstanceOf(as, "Unit"))
212+ then {
213+ let au = as
214+ wavesBalance(this).available
215+ }
216+ else throw("Match error")
217+ }
218+
219+
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
223+ then {
224+ let at = as
225+ let aH = toBase58String(at)
226+ let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227+ $Tuple3(aH, aI.name, aI.decimals)
212228 }
213229 else if ($isInstanceOf(as, "Unit"))
214230 then {
215231 let au = as
216232 $Tuple3("WAVES", "WAVES", 8)
217233 }
218234 else throw("Match error")
219235 }
220236
221237
222-func aI (aJ,aK) = {
223- let aL = value(assetInfo(aJ)).decimals
238+func aJ (aK,aL) = {
224239 let aM = value(assetInfo(aK)).decimals
225- let aN = ((aM - aL) + 8)
226- pow(10, 0, aN, 0, 0, HALFDOWN)
240+ let aN = value(assetInfo(aL)).decimals
241+ let aO = ((aN - aM) + 8)
242+ pow(10, 0, aO, 0, 0, HALFDOWN)
227243 }
228244
229245
230-func aO (X,aP) = valueOrElse(getInteger(this, (((X + "_") + toString(aP)) + u)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
231247
232248
233-func aQ (X) = {
234- let aR = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
235- let aS = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
236- let aT = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
237- let aU = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
238- let aV = valueOrElse(getInteger(K, (X + j)), 0)
239- let aW = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
240- let aX = fraction(aR, aT, P)
241- let aY = fraction(aS, aW, P)
242- if (if ((aX > aR))
249+func aR (X) = {
250+ let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251+ let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252+ let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253+ let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254+ let aW = valueOrElse(getInteger(K, (X + j)), 0)
255+ let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256+ let aY = fraction(aS, aU, P)
257+ let aZ = fraction(aT, aX, P)
258+ if (if ((aY > aS))
243259 then true
244- else (aY > aS))
260+ else (aZ > aT))
245261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
246- else $Tuple4(aX, aU, aY, aV)
262+ else $Tuple4(aY, aV, aZ, aW)
247263 }
248264
249265
250-func aZ (X) = {
251- let ba = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
252- let bb = valueOrElse(getInteger(this, (X + o)), height)
253- $Tuple2(bb, ba)
266+func ba (X) = {
267+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268+ let bc = valueOrElse(getInteger(this, (X + o)), height)
269+ $Tuple2(bc, bb)
254270 }
255271
256272
257-func bc (X,bd) = {
258- let be = getInteger(this, (((X + "_") + toString(bd)) + q))
259- let bf = getInteger(this, (((X + "_") + toString(bd)) + p))
260- let ba = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
261- let bg = {
262- let as = be
263- if ($isInstanceOf(as, "Int"))
264- then {
265- let be = as
266- be
267- }
268- else ba
269- }
273+func bd (X,be) = {
274+ let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275+ let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
270277 let bh = {
271278 let as = bf
272279 if ($isInstanceOf(as, "Int"))
273280 then {
274281 let bf = as
275282 bf
276283 }
284+ else bb
285+ }
286+ let bi = {
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
289+ then {
290+ let bg = as
291+ bg
292+ }
277293 else 0
278294 }
279- $Tuple2(bg, bh)
295+ $Tuple2(bh, bi)
280296 }
281297
282298
283-func bi (bb,aU,aV,ba,bj,bk,bl,bm,bn,bo) = if ((bk == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
284300 then 0
285- else if ((aV != 0))
286- then if (if ((aU > height))
287- then (aU == aV)
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
288304 else false)
289305 then {
290- let bp = (bl * (height - bb))
291- (ba + fraction(bp, bn, bk))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
292308 }
293- else if (if ((height > aU))
294- then (aU != aV)
309+ else if (if ((height > aV))
310+ then (aV != aW)
295311 else false)
296312 then {
297- let bp = (bl * (height - bb))
298- (ba + fraction(bp, bn, bk))
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
299315 }
300- else if (if (if ((height > aU))
301- then (aU == aV)
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
302318 else false)
303- then (bb > aU)
319+ then (bc > aV)
304320 else false)
305321 then {
306- let bp = (bj * (height - bb))
307- (ba + fraction(bp, bn, bk))
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
308324 }
309325 else {
310- let bq = (bl * (aU - bb))
311- let br = (ba + fraction(bq, bn, bk))
312- let bp = (bj * (height - aU))
313- (br + fraction(bp, bn, bk))
326+ let br = (bm * (aV - bc))
327+ let bs = (bb + fraction(br, bo, bl))
328+ let bq = (bk * (height - aV))
329+ (bs + fraction(bq, bo, bl))
314330 }
315- else if ((aU > height))
331+ else if ((aV > height))
316332 then {
317- let bp = (bl * (height - bb))
318- (ba + fraction(bp, bn, bk))
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
319335 }
320- else if ((bb > aU))
336+ else if ((bc > aV))
321337 then {
322- let bp = (bj * (height - bb))
323- (ba + fraction(bp, bn, bk))
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
324340 }
325341 else {
326- let bq = (bl * (aU - bb))
327- let br = (ba + fraction(bq, bn, bk))
328- let bp = (bj * (height - aU))
329- (br + fraction(bp, bn, bk))
342+ let br = (bm * (aV - bc))
343+ let bs = (bb + fraction(br, bo, bl))
344+ let bq = (bk * (height - aV))
345+ (bs + fraction(bq, bo, bl))
330346 }
331347
332348
333-func bs (X,bt,bo) = {
334- let bm = aD(X)
335- let bn = aI(aw, bm)
336- let bk = aC(X)
337- let bu = aZ(X)
338- let bb = bu._1
339- let ba = bu._2
340- let bv = aQ(X)
341- let bj = bv._1
342- let aU = bv._2
343- let bl = bv._3
344- let aV = bv._4
345- let bw = bc(X, bt)
346- let be = bw._1
347- let bh = bw._2
348- let bx = bi(bb, aU, aV, ba, bj, bk, bl, bm, bn, bo)
349- let by = fraction(bh, (bx - be), bn)
350- let bz = bx
351- $Tuple4(bz, bx, by, bh)
349+func bt (X,bu,bp) = {
350+ let bn = aD(X)
351+ let bo = aJ(aw, bn)
352+ let bl = aC(X)
353+ let bv = ba(X)
354+ let bc = bv._1
355+ let bb = bv._2
356+ let bw = aR(X)
357+ let bk = bw._1
358+ let aV = bw._2
359+ let bm = bw._3
360+ let aW = bw._4
361+ let bx = bd(X, bu)
362+ let bf = bx._1
363+ let bi = bx._2
364+ let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365+ let bz = fraction(bi, (by - bf), bo)
366+ let bA = by
367+ $Tuple4(bA, by, bz, bi)
352368 }
353369
354370
355-func bA (X) = {
356- let bB = aZ(X)
357- let bb = bB._1
358- let ba = bB._2
359- let bC = aQ(X)
360- let bj = bC._1
361- let aU = bC._2
362- let bl = bC._3
363- let aV = bC._4
364- let bk = aC(X)
365- if (if ((bk == 0))
366- then (aV == 0)
371+func bB (X) = {
372+ let bC = ba(X)
373+ let bc = bC._1
374+ let bb = bC._2
375+ let bD = aR(X)
376+ let bk = bD._1
377+ let aV = bD._2
378+ let bm = bD._3
379+ let aW = bD._4
380+ let bl = aC(X)
381+ if (if ((bl == 0))
382+ then (aW == 0)
367383 else false)
368- then if ((aU > height))
384+ then if ((aV > height))
369385 then {
370- let bp = (bl * (height - bb))
371- bp
386+ let bq = (bm * (height - bc))
387+ bq
372388 }
373- else if ((bb > aU))
389+ else if ((bc > aV))
374390 then {
375- let bp = (bj * (height - bb))
376- bp
391+ let bq = (bk * (height - bc))
392+ bq
377393 }
378394 else {
379- let bq = (bl * (aU - bb))
380- let bp = (bj * (height - aU))
381- (bp + bq)
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
397+ (bq + br)
382398 }
383- else if (if ((bk == 0))
384- then (aV != 0)
399+ else if (if ((bl == 0))
400+ then (aW != 0)
385401 else false)
386- then if (if ((aU > height))
387- then (aU == aV)
402+ then if (if ((aV > height))
403+ then (aV == aW)
388404 else false)
389405 then {
390- let bp = (bl * (height - bb))
391- bp
406+ let bq = (bm * (height - bc))
407+ bq
392408 }
393- else if (if ((height > aU))
394- then (aU != aV)
409+ else if (if ((height > aV))
410+ then (aV != aW)
395411 else false)
396412 then {
397- let bp = (bl * (height - bb))
398- bp
413+ let bq = (bm * (height - bc))
414+ bq
399415 }
400- else if (if (if ((height > aU))
401- then (aU == aV)
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
402418 else false)
403- then (bb > aU)
419+ then (bc > aV)
404420 else false)
405421 then {
406- let bp = (bj * (height - bb))
407- bp
422+ let bq = (bk * (height - bc))
423+ bq
408424 }
409425 else {
410- let bq = (bl * (aU - bb))
411- let bp = (bj * (height - aU))
412- (bp + bq)
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
428+ (bq + br)
413429 }
414430 else 0
415431 }
416432
417433
418-func bD (X,bE) = {
419- let bF = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
420- if ((bE == bF))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
421437 then true
422438 else false
423439 }
424440
425441
426-func bG (X,aP) = valueOrElse(getInteger(this, (((X + "_") + toString(aP)) + s)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
427443
428444
429-func bH (bI) = [BooleanEntry(f, false), StringEntry(g, bI)]
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
430446
431447
432-@Callable(bJ)
433-func init (bK) = if (isDefined(getString(this, r)))
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
434450 then throw("SWOP already initialized")
435451 else {
436- let bL = 100000000000000
437- let bM = Issue("SWOP", "SWOP protocol token", bL, 8, true)
438- let bN = calculateAssetId(bM)
439-[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bL, 8, true), StringEntry(r, toBase58String(bN))]
452+ let bM = 100000000000000
453+ let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454+ let bO = calculateAssetId(bN)
455+[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
440456 }
441457
442458
443459
444-@Callable(bJ)
445-func initPoolShareFarming (X) = if ((bJ.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
446462 then throw("Only the DApp itself can call this function")
447463 else {
448- let bO = aQ(X)
449- let bP = bO._1
450- let aU = bO._2
451- let bl = bO._3
452- let aV = bO._4
464+ let bP = aR(X)
465+ let bQ = bP._1
466+ let aV = bP._2
467+ let bm = bP._3
468+ let aW = bP._4
453469 [IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
454470 }
455471
456472
457473
458-@Callable(bJ)
459-func updatePoolInterest (X) = if ((bJ.caller != L))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
460476 then throw("Only the Admin itself can call this function")
461477 else {
462- let bQ = bs(X, N, 0)
463- let bz = bQ._1
464- let bx = bQ._2
465- let by = bQ._3
466- let bh = bQ._4
467- let bR = aQ(X)
468- let bP = bR._1
469- let aU = bR._2
470- let bl = bR._3
471- let aV = bR._4
472-[IntegerEntry((X + n), bz), IntegerEntry((X + o), height)]
478+ let bR = bt(X, N, 0)
479+ let bA = bR._1
480+ let by = bR._2
481+ let bz = bR._3
482+ let bi = bR._4
483+ let bS = aR(X)
484+ let bQ = bS._1
485+ let aV = bS._2
486+ let bm = bS._3
487+ let aW = bS._4
488+[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
473489 }
474490
475491
476492
477-@Callable(bJ)
493+@Callable(bK)
478494 func lockShareTokens (X) = {
479- let bS = $Tuple2(bJ.payments[0].amount, bJ.payments[0].assetId)
480- let bo = bS._1
481- let bE = bS._2
482- let bT = aE(bE)
483- let bU = bT._1
484- let bV = bT._2
485- let bW = bT._3
486- let bX = bs(X, bJ.caller, bo)
487- let bz = bX._1
488- let bx = bX._2
489- let by = bX._3
490- let bh = bX._4
491- let bY = (bh + bo)
492- let bZ = (aO(X, bJ.caller) + by)
493- let ca = aC(X)
494- let cb = (ca + bo)
495- let cc = bG(X, bJ.caller)
496- let cd = (cc + by)
497- let ce = [IntegerEntry((((X + "_") + toString(bJ.caller)) + q), bz), IntegerEntry((((X + "_") + toString(bJ.caller)) + p), bY), IntegerEntry((X + d), cb), IntegerEntry((X + n), bx), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bJ.caller)) + s), cd), IntegerEntry((((X + "_") + toString(bJ.caller)) + t), by), IntegerEntry((((X + "_") + toString(bJ.caller)) + u), bZ)]
498- if ((0 >= bo))
495+ let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
496+ let bp = bT._1
497+ let bF = bT._2
498+ let bU = aG(bF)
499+ let bV = bU._1
500+ let bW = bU._2
501+ let bX = bU._3
502+ let bY = bt(X, bK.caller, bp)
503+ let bA = bY._1
504+ let by = bY._2
505+ let bz = bY._3
506+ let bi = bY._4
507+ let bZ = (bi + bp)
508+ let ca = (aP(X, bK.caller) + bz)
509+ let cb = aC(X)
510+ let cc = (cb + bp)
511+ let cd = bH(X, bK.caller)
512+ let ce = (cd + bz)
513+ let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
514+ if ((0 >= bp))
499515 then throw("You can't lock token")
500516 else if (!(am))
501517 then throw("DApp is inactive at this moment")
502- else if (!(bD(X, bE)))
518+ else if (!(bE(X, bF)))
503519 then throw("Incorrect pmtAssetId")
504520 else if (if (ax(Address(fromBase58String(X))))
505521 then (ay(Address(fromBase58String(X))) > height)
506522 else false)
507523 then {
508- let cf = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
509- let cg = split(getStringValue(M, (((toString(bJ.caller) + "_") + X) + "_user_pool_struc")), "_")
510- let ch = split(getStringValue(M, (X + "_pool_struc")), "_")
511- let ci = split(valueOrElse(getString(M, (((toString(bJ.caller) + "_") + X) + C)), ""), "_")
512- let cj = split(valueOrElse(getString(M, (X + B)), ""), "_")
513- let ck = bh
514- let cl = if ((toString(an) == cg[2]))
515- then valueOrElse(parseInt(ci[0]), 0)
516- else valueOrElse(parseInt(cg[1]), 0)
524+ let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
525+ let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
526+ let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
527+ let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
528+ let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
529+ let cl = bi
517530 let cm = if ((toString(an) == ch[2]))
518531 then valueOrElse(parseInt(cj[0]), 0)
519532 else valueOrElse(parseInt(ch[1]), 0)
520- let cn = bA(X)
521- if ((cl != 0))
533+ let cn = if ((toString(an) == ci[2]))
534+ then valueOrElse(parseInt(ck[0]), 0)
535+ else valueOrElse(parseInt(ci[1]), 0)
536+ let co = bB(X)
537+ if ((cm != 0))
522538 then {
523- let co = aB(addressFromStringValue(X))
524- let cp = (fraction(co, cl, cm) - ck)
525- if (if ((size(ci) > 1))
526- then (valueOrElse(parseInt(ci[1]), 0) >= cf)
539+ let cp = aB(addressFromStringValue(X))
540+ let cq = (fraction(cp, cm, cn) - cl)
541+ if (if ((size(cj) > 1))
542+ then (valueOrElse(parseInt(cj[1]), 0) >= cg)
527543 else false)
528544 then throw("You can't share token")
529- else if ((bo > co))
530- then throw(("You can't share token more than " + toString(co)))
531- else if ((cp > 0))
532- then if ((ca == 0))
533- then (ce ++ [ScriptTransfer(L, cn, aw)])
534- else if ((cp >= bo))
535- then ce
536- else throw(("Your maximum share token is " + toString(cp)))
545+ else if ((bp > cp))
546+ then throw(("You can't share token more than " + toString(cp)))
547+ else if ((cq > 0))
548+ then if ((fraction(99, aE(bF), 100) > cc))
549+ then throw("Balance of share-token is greater than totalAmount")
550+ else if ((cb == 0))
551+ then (cf ++ [ScriptTransfer(L, co, aw)])
552+ else if ((cq >= bp))
553+ then cf
554+ else throw(("Your maximum share token is " + toString(cq)))
537555 else throw("You can't share token")
538556 }
539557 else throw("Your amount of token less than 0")
540558 }
541- else ce
559+ else cf
542560 }
543561
544562
545563
546-@Callable(bJ)
547-func withdrawShareTokens (X,cq) = {
548- let cr = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
549- let cs = bs(X, bJ.caller, 1)
550- let bz = cs._1
551- let bx = cs._2
552- let by = cs._3
553- let bh = cs._4
554- let bY = (bh - cq)
555- let bZ = (aO(X, bJ.caller) + by)
556- let ca = aC(X)
557- let cb = (ca - cq)
558- let cc = bG(X, bJ.caller)
559- let cd = (cc + by)
560- if ((cq > bh))
564+@Callable(bK)
565+func withdrawShareTokens (X,cr) = {
566+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
567+ let ct = bt(X, bK.caller, 1)
568+ let bA = ct._1
569+ let by = ct._2
570+ let bz = ct._3
571+ let bi = ct._4
572+ let bZ = (bi - cr)
573+ let ca = (aP(X, bK.caller) + bz)
574+ let cb = aC(X)
575+ let cc = (cb - cr)
576+ let cd = bH(X, bK.caller)
577+ let ce = (cd + bz)
578+ if ((cr > bi))
561579 then throw("Withdraw amount more then user locked amount")
562580 else if (!(am))
563581 then throw("DApp is inactive at this moment")
564- else [IntegerEntry((((X + "_") + toString(bJ.caller)) + q), bz), IntegerEntry((((X + "_") + toString(bJ.caller)) + p), bY), IntegerEntry((X + n), bx), IntegerEntry((X + o), height), IntegerEntry((X + d), cb), IntegerEntry((((X + "_") + toString(bJ.caller)) + u), bZ), IntegerEntry((((X + "_") + toString(bJ.caller)) + s), cd), IntegerEntry((((X + "_") + toString(bJ.caller)) + t), by), ScriptTransfer(bJ.caller, cq, cr)]
582+ else if ((cr > bi))
583+ then throw("Withdraw amount more then user locked amount")
584+ else if ((fraction(99, aE(cs), 100) > cc))
585+ then throw("Balance of share-token is greater than totalAmount")
586+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
565587 }
566588
567589
568590
569-@Callable(bJ)
591+@Callable(bK)
570592 func claim (X) = {
571- let bk = aC(X)
572- let ct = aZ(X)
573- let bb = ct._1
574- let ba = ct._2
575- let cu = aQ(X)
576- let bj = cu._1
577- let aU = cu._2
578- let bl = cu._3
579- let aV = cu._4
580- let cv = bs(X, bJ.caller, 1)
581- let bz = cv._1
582- let bx = cv._2
583- let by = cv._3
584- let bh = cv._4
585- let cw = (aO(X, bJ.caller) + by)
586- let cc = bG(X, bJ.caller)
587- let cd = (cc + by)
588- if ((cw == 0))
593+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
594+ let bl = aC(X)
595+ let cu = ba(X)
596+ let bc = cu._1
597+ let bb = cu._2
598+ let cv = aR(X)
599+ let bk = cv._1
600+ let aV = cv._2
601+ let bm = cv._3
602+ let aW = cv._4
603+ let cw = bt(X, bK.caller, 1)
604+ let bA = cw._1
605+ let by = cw._2
606+ let bz = cw._3
607+ let bi = cw._4
608+ let cx = (aP(X, bK.caller) + bz)
609+ let cd = bH(X, bK.caller)
610+ let ce = (cd + bz)
611+ if ((cx == 0))
589612 then throw("You have 0 available SWOP")
590613 else if (!(am))
591614 then throw("DApp is inactive at this moment")
592- else [IntegerEntry((((X + "_") + toString(bJ.caller)) + q), bz), IntegerEntry((X + n), bx), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bJ.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bJ.caller)) + s), cd), IntegerEntry((((X + "_") + toString(bJ.caller)) + t), by), ScriptTransfer(bJ.caller, cw, aw)]
615+ else if ((cx == 0))
616+ then throw("You have 0 available SWOP")
617+ else if ((fraction(99, aE(cs), 100) > bl))
618+ then throw("Balance of share-token is greater than totalAmount")
619+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
593620 }
594621
595622
596623
597-@Callable(bJ)
624+@Callable(bK)
598625 func shutdown () = if (!(am))
599626 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
600- else if (!(containsElement([a, b, c], bJ.callerPublicKey)))
627+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
601628 then throw("Only admin can call this function")
602- else bH("Paused by admin")
629+ else bI("Paused by admin")
603630
604631
605632
606-@Callable(bJ)
633+@Callable(bK)
607634 func activate () = if (am)
608635 then throw("DApp is already active")
609- else if (!(containsElement([a, b, c], bJ.callerPublicKey)))
636+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
610637 then throw("Only admin can call this function")
611638 else [BooleanEntry(f, true), DeleteEntry(g)]
612639
613640
614-@Verifier(cx)
615-func cy () = {
616- let as = cx
617- sigVerify(cx.bodyBytes, cx.proofs[0], cx.senderPublicKey)
641+@Verifier(cy)
642+func cz () = {
643+ let as = cy
644+ sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
618645 }
619646

github/deemru/w8io/169f3d6 
167.30 ms