tx · B2BrfRVqrpmDrFaNfp6cXxGKGkMokkDtWFncRci8zeW2

3N7NyhNuAsjhx5uFqDqt4Y51hK4FBVi4MHn:  -0.01400000 Waves

2021.03.08 00:55 [1427839] smart account 3N7NyhNuAsjhx5uFqDqt4Y51hK4FBVi4MHn > SELF 0.00000000 Waves

{ "type": 13, "id": "B2BrfRVqrpmDrFaNfp6cXxGKGkMokkDtWFncRci8zeW2", "fee": 1400000, "feeAssetId": null, "timestamp": 1615154149845, "version": 1, "sender": "3N7NyhNuAsjhx5uFqDqt4Y51hK4FBVi4MHn", "senderPublicKey": "79j6PNv9aCQZpss88M5Y7J41MDsKbMrG2Lf69wQ6R6Rd", "proofs": [ "2RU74VhhyszkZm9kFDxxVFQSRGQTkEhijHDYSPgHeC2Jv2WX3xUqskcwZQsLmbtB3GrLSGsP52eUEV7otTCepurJ" ], "script": "base64:AAIEAAAAAAAAABwIAhIDCgEIEgMKAQgSAwoBCBIECgIIARIDCgEIAAAAIwAAAAAMYWRtaW5QdWJLZXkxAQAAACC6Cdc7iVmk0V2g//G7M9Cq4TlpD8vivZHWO+5PXqjgEwAAAAAMYWRtaW5QdWJLZXkyAQAAACDCkUSZs9KwtA0ipZFYvYi8oTe7CMv/3YzmlO9bFg5+QAAAAAAMYWRtaW5QdWJLZXkzAQAAACCOHhcueLEHO/RITnozKGB2KHf8meWSMKMgws+oq+kOVQAAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQCAAAAGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgAAAB1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAAAAAAda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCAAAAHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAAAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAAHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAAAAAea2V5VG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAgAAAB90b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX3ByZXZpb3VzAAAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQCAAAAFV9yZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAPa2V5TGFzdEludGVyZXN0AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0AgAAABVfbGFzdF9pbnRlcmVzdF9oZWlnaHQAAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAIAAAAUX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAAAlrZXlTV09QaWQCAAAAB1NXT1BfaWQAAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAEGtleUF2YWlsYWJsZVNXT1ACAAAAD19hdmFpbGFibGVfU1dPUAAAAAAVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0AgAAABRmYXJtaW5nX3N0YXJ0X2hlaWdodAAAAAANdm90aW5nQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV8lXnLdvepYMywgiOQ98homAomzcs7cW7QAAAAAOb25lV2Vla0luQmxvY2sAAAAAAAAAJ3oAAAAADnRvdGFsVm90ZVNoYXJlAAAAAAJUC+QAAAAAAARTV09QCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAACWtleVNXT1BpZAAAAAASZmFybWluZ1N0YXJ0SGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0CQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAABVrZXlGYXJtaW5nU3RhcnRIZWlnaHQAAAAAFWZhcm1pbmdQcmVTdGFydEhlaWdodAkAAGUAAAACBQAAABJmYXJtaW5nU3RhcnRIZWlnaHQFAAAADm9uZVdlZWtJbkJsb2NrAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABAAAABHBvb2wJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAFGtleVNoYXJlVG9rZW5zTG9ja2VkCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAFGtleVNoYXJlVG9rZW5zTG9ja2VkAQAAAA9nZXRTaGFyZUFzc2V0SWQAAAABAAAABHBvb2wJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAARwb29sAgAAAA5zaGFyZV9hc3NldF9pZAEAAAAOY2FsY1NjYWxlVmFsdWUAAAACAAAACGFzc2V0SWQxAAAACGFzc2V0SWQyBAAAABBhc3NldElkMURlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAhhc3NldElkMQAAAAhkZWNpbWFscwQAAAAQYXNzZXRJZDJEZWNpbWFscwgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAIYXNzZXRJZDIAAAAIZGVjaW1hbHMEAAAAC3NjYWxlRGlnaXRzCQAAZAAAAAIJAABlAAAAAgUAAAAQYXNzZXRJZDJEZWNpbWFscwUAAAAQYXNzZXRJZDFEZWNpbWFscwAAAAAAAAAACAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAAtzY2FsZURpZ2l0cwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAISEFMRkRPV04BAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgAAAARwb29sAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAR1c2VyBQAAABBrZXlBdmFpbGFibGVTV09QAAAAAAAAAAAAAQAAAApyZXdhcmRJbmZvAAAAAQAAAARwb29sBAAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAA12b3RpbmdBZGRyZXNzBAAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAB5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAB5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAA12b3RpbmdBZGRyZXNzBAAAABlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAANdm90aW5nQWRkcmVzcwQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAADXZvdGluZ0FkZHJlc3MEAAAAGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwkAASwAAAACBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAA12b3RpbmdBZGRyZXNzBAAAABFyZXdhcmRQb29sQ3VycmVudAkAAGsAAAADBQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUAAAAZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAUAAAAOdG90YWxWb3RlU2hhcmUEAAAAEnJld2FyZFBvb2xQcmV2aW91cwkAAGsAAAADBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMFAAAAGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAA50b3RhbFZvdGVTaGFyZQMDCQAAZgAAAAIFAAAAEXJld2FyZFBvb2xDdXJyZW50BQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAYJAABmAAAAAgUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAACAAAAAQIAAABicmV3YXJkUG9vbEN1cnJlbnQgPiB0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudCBvciByZXdhcmRQb29sUHJldmlvdXMgPiB0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAUVAAAAAwUAAAARcmV3YXJkUG9vbEN1cnJlbnQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAScmV3YXJkUG9vbFByZXZpb3VzAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQAAAARwb29sBAAAAAxsYXN0SW50ZXJlc3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAVZmFybWluZ1ByZVN0YXJ0SGVpZ2h0CQAFFAAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAMbGFzdEludGVyZXN0AQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAARwb29sAAAAC3VzZXJBZGRyZXNzBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QEAAAACXVzZXJTaGFyZQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAABhrZXlVc2VyU2hhcmVUb2tlbnNMb2NrZWQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0CQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAQAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBAAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BAAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAJdXNlclNoYXJlBQAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUAAAAAAAAAAAAJAAUUAAAAAgUAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQBAAAADGNhbGNJbnRlcmVzdAAAAAkAAAASbGFzdEludGVyZXN0SGVpZ2h0AAAAEnJld2FyZFVwZGF0ZUhlaWdodAAAAAxsYXN0SW50ZXJlc3QAAAAVY3VycmVudFJld2FyZFBlckJsb2NrAAAAEHNoYXJlVG9rZW5Mb2NrZWQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawAAAAxzaGFyZUFzc2V0SWQAAAAKc2NhbGVWYWx1ZQAAAAlwbXRBbW91bnQDCQAAAAAAAAIFAAAAEHNoYXJlVG9rZW5Mb2NrZWQAAAAAAAAAAAAAAAAAAAAAAAADCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAZAAAAAIFAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAQAAAAljbGFpbUNhbGMAAAADAAAABHBvb2wAAAAGY2FsbGVyAAAACXBtdEFtb3VudAQAAAAMc2hhcmVBc3NldElkCQEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAQUAAAAEcG9vbAQAAAAKc2NhbGVWYWx1ZQkBAAAADmNhbGNTY2FsZVZhbHVlAAAAAgUAAAAEU1dPUAUAAAAMc2hhcmVBc3NldElkBAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAALJHQwNzE2NjcyMzEJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQUAAAAEcG9vbAQAAAASbGFzdEludGVyZXN0SGVpZ2h0CAUAAAALJHQwNzE2NjcyMzEAAAACXzEEAAAADGxhc3RJbnRlcmVzdAgFAAAACyR0MDcxNjY3MjMxAAAAAl8yBAAAAAskdDA3MjM2NzMyNAkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sIBQAAAAskdDA3MjM2NzMyNAAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAALJHQwNzIzNjczMjQAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAAskdDA3MjM2NzMyNAAAAAJfMwQAAAALJHQwNzMyOTc0MDgJAQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgUAAAAEcG9vbAUAAAAGY2FsbGVyBAAAABB1c2VyTGFzdEludGVyZXN0CAUAAAALJHQwNzMyOTc0MDgAAAACXzEEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAgFAAAACyR0MDczMjk3NDA4AAAAAl8yBAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAAAxjYWxjSW50ZXJlc3QAAAAJBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAMbGFzdEludGVyZXN0BQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sFAAAAEHNoYXJlVG9rZW5Mb2NrZWQFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sFAAAADHNoYXJlQXNzZXRJZAUAAAAKc2NhbGVWYWx1ZQUAAAAJcG10QW1vdW50BAAAAAtjbGFpbUFtb3VudAkAAGsAAAADBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQJAABlAAAAAgUAAAAPY3VycmVudEludGVyZXN0BQAAABB1c2VyTGFzdEludGVyZXN0BQAAAApzY2FsZVZhbHVlBAAAAA91c2VyTmV3SW50ZXJlc3QFAAAAD2N1cnJlbnRJbnRlcmVzdAkABRYAAAAEBQAAAA91c2VyTmV3SW50ZXJlc3QFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAALY2xhaW1BbW91bnQFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIAAAAEcG9vbAAAAApwbXRBc3NldElkBAAAABBwb29sU2hhcmVBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAEHBvb2xTaGFyZUFzc2V0SWQGBwEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgAAAARwb29sAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAR1c2VyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQAAAAAAAAAAAAAAAAFAAAAAWkBAAAABGluaXQAAAABAAAAB2Vhcmx5TFADCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzAgAAAAlrZXlTV09QaWQJAAACAAAAAQIAAAAYU1dPUCBhbHJlYWR5IGluaXRpYWxpemVkBAAAAAppbml0QW1vdW50AAAAWvMQekAABAAAAAlTV09QaXNzdWUJAARCAAAABQIAAAAEU1dPUAIAAAATU1dPUCBwcm90b2NvbCB0b2tlbgUAAAAKaW5pdEFtb3VudAAAAAAAAAAACAYEAAAABlNXT1BpZAkABDgAAAABBQAAAAlTV09QaXNzdWUFAAAAA25pbAAAAAFpAQAAABRpbml0UG9vbFNoYXJlRmFybWluZwAAAAEAAAAEcG9vbAQAAAALJHQwODk0NjkwMjYJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAANY3VycmVudFJld2FyZAgFAAAACyR0MDg5NDY5MDI2AAAAAl8xBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQIBQAAAAskdDA4OTQ2OTAyNgAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAACyR0MDg5NDY5MDI2AAAAAl8zCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFGtleVNoYXJlVG9rZW5zTG9ja2VkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQAAAA1jdXJyZW50UmV3YXJkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrBQAAAANuaWwAAAABaQEAAAAPbG9ja1NoYXJlVG9rZW5zAAAAAQAAAARwb29sBAAAAAskdDA5NDI5OTUwNAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAACyR0MDk0Mjk5NTA0AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAALJHQwOTQyOTk1MDQAAAACXzIDCQAAZgAAAAIFAAAAEmZhcm1pbmdTdGFydEhlaWdodAUAAAAGaGVpZ2h0AwkBAAAAASEAAAABCQEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIFAAAABHBvb2wFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBtdEFzc2V0SWQEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkAAAAAAAAAAAABAAAAA91c2VyTmV3SW50ZXJlc3QAAAAAAAAAAAAEAAAAEnVzZXJTaGFyZUFtb3VudE5ldwkAAGQAAAACBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQFAAAACXBtdEFtb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABkAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBQAAABJ1c2VyU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0AAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFGtleVNoYXJlVG9rZW5zTG9ja2VkBQAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAQa2V5QXZhaWxhYmxlU1dPUAAAAAAAAAAAAAUAAAADbmlsAwkBAAAAASEAAAABCQEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIFAAAABHBvb2wFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBtdEFzc2V0SWQEAAAADSR0MDEwNTMxMTA2MzkJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAACXBtdEFtb3VudAQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMTA1MzExMDYzOQAAAAJfMQQAAAAPY3VycmVudEludGVyZXN0CAUAAAANJHQwMTA1MzExMDYzOQAAAAJfMgQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAxMDUzMTEwNjM5AAAAAl8zBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAxMDUzMTEwNjM5AAAAAl80BAAAABJ1c2VyU2hhcmVBbW91bnROZXcJAABkAAAAAgUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BQAAAAlwbXRBbW91bnQEAAAAEWF2YWlsYWJsZUZ1bmRzTmV3CQAAZAAAAAIJAQAAABF1c2VyQXZhaWxhYmxlU1dPUAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgUAAAALY2xhaW1BbW91bnQEAAAAEHRvdGFsU2hhcmVBbW91bnQJAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABBQAAAARwb29sBAAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAAZAAAAAIFAAAAEHRvdGFsU2hhcmVBbW91bnQFAAAACXBtdEFtb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAUAAAASdXNlclNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFGtleVNoYXJlVG9rZW5zTG9ja2VkBQAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAQa2V5QXZhaWxhYmxlU1dPUAUAAAARYXZhaWxhYmxlRnVuZHNOZXcFAAAAA25pbAAAAAFpAQAAABN3aXRoZHJhd1NoYXJlVG9rZW5zAAAAAgAAAARwb29sAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEAAAADXNoYXJlVG9rZW5zSWQJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAARwb29sAgAAAA5zaGFyZV9hc3NldF9pZAMJAABmAAAAAgUAAAASZmFybWluZ1N0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkAAAAAAAAAAAAAwkAAGYAAAACBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQJAAACAAAAAQIAAAAsV2l0aGRyYXcgYW1vdW50IG1vcmUgdGhlbiB1c2VyIGxvY2tlZCBhbW91bnQEAAAAD3VzZXJOZXdJbnRlcmVzdAAAAAAAAAAAAAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZQAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAUAAAASdXNlclNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAUAAAATdG90YWxTaGFyZUFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEGtleUF2YWlsYWJsZVNXT1AAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BQAAAA1zaGFyZVRva2Vuc0lkBQAAAANuaWwEAAAADSR0MDEzMDY1MTMxNjUJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDEzMDY1MTMxNjUAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDEzMDY1MTMxNjUAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTMwNjUxMzE2NQAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTMwNjUxMzE2NQAAAAJfNAMJAABmAAAAAgUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CQAAAgAAAAECAAAALFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50BAAAABJ1c2VyU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAABFhdmFpbGFibGVGdW5kc05ldwkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABB0b3RhbFNoYXJlQW1vdW50CQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAATdG90YWxTaGFyZUFtb3VudE5ldwkAAGUAAAACBQAAABB0b3RhbFNoYXJlQW1vdW50BQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBQAAABJ1c2VyU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQFAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QBQAAABFhdmFpbGFibGVGdW5kc05ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFAAAADXNoYXJlVG9rZW5zSWQFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAEcG9vbAMJAABmAAAAAgUAAAASZmFybWluZ1N0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIVRoaXMgbWV0aG9kIHdpbGwgYmUgYWN0aXZlIGFmdGVyIAkAAaQAAAABBQAAABJmYXJtaW5nU3RhcnRIZWlnaHQCAAAAByBoZWlnaHQEAAAAEHNoYXJlVG9rZW5Mb2NrZWQJAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABBQAAAARwb29sBAAAAA0kdDAxNDc4OTE0ODU0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAEFAAAABHBvb2wEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAgFAAAADSR0MDE0Nzg5MTQ4NTQAAAACXzEEAAAADGxhc3RJbnRlcmVzdAgFAAAADSR0MDE0Nzg5MTQ4NTQAAAACXzIEAAAADSR0MDE0ODU5MTQ5NDgJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCAUAAAANJHQwMTQ4NTkxNDk0OAAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTQ4NTkxNDk0OAAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE0ODU5MTQ5NDgAAAACXzMEAAAADSR0MDE0OTUzMTUwNTMJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE0OTUzMTUwNTMAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE0OTUzMTUwNTMAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTQ5NTMxNTA1MwAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTQ5NTMxNTA1MwAAAAJfNAQAAAANYXZhaWxhYmxlRnVuZAkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50AwkAAAAAAAACBQAAAA1hdmFpbGFibGVGdW5kAAAAAAAAAAAACQAAAgAAAAECAAAAGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QAAAAAAAAAAAACQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAEU1dPUAUAAAANYXZhaWxhYmxlRnVuZAYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA1hdmFpbGFibGVGdW5kBQAAAARTV09QBQAAAANuaWwAAAAAEsG6WA==", "chainId": 84, "height": 1427839, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GFyASi2AoCK3Z3C6KdCXaocmMCWTEu9SnGmGxEr63aPa Next: 14Ba7An86rtvw8hPDBGPvokU9nDj5BCmA8Lcvfujd3KY Diff:
OldNewDifferences
174174
175175
176176 @Callable(i)
177-func initPoolShareFarming (pool) = if ((i.caller != this))
178- then throw("Only the DApp itself can call this function")
179- else {
180- let $t089429022 = rewardInfo(pool)
181- let currentReward = $t089429022._1
182- let rewardUpdateHeight = $t089429022._2
183- let previousRewardPerBlock = $t089429022._3
177+func initPoolShareFarming (pool) = {
178+ let $t089469026 = rewardInfo(pool)
179+ let currentReward = $t089469026._1
180+ let rewardUpdateHeight = $t089469026._2
181+ let previousRewardPerBlock = $t089469026._3
184182 [IntegerEntry((pool + keyShareTokensLocked), 0), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyRewardPoolFractionCurrent), currentReward), IntegerEntry((pool + keyRewardUpdateHeight), rewardUpdateHeight), IntegerEntry((pool + keyRewardPoolFractionPrevious), previousRewardPerBlock)]
185- }
183+ }
186184
187185
188186
189187 @Callable(i)
190188 func lockShareTokens (pool) = {
191- let $t094259500 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
192- let pmtAmount = $t094259500._1
193- let pmtAssetId = $t094259500._2
189+ let $t094299504 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
190+ let pmtAmount = $t094299504._1
191+ let pmtAssetId = $t094299504._2
194192 if ((farmingStartHeight > height))
195193 then if (!(checkPmtAssetIdCorrect(pool, pmtAssetId)))
196194 then throw("Incorrect pmtAssetId")
205203 else if (!(checkPmtAssetIdCorrect(pool, pmtAssetId)))
206204 then throw("Incorrect pmtAssetId")
207205 else {
208- let $t01052710635 = claimCalc(pool, i.caller, pmtAmount)
209- let userNewInterest = $t01052710635._1
210- let currentInterest = $t01052710635._2
211- let claimAmount = $t01052710635._3
212- let userShareTokensAmount = $t01052710635._4
206+ let $t01053110639 = claimCalc(pool, i.caller, pmtAmount)
207+ let userNewInterest = $t01053110639._1
208+ let currentInterest = $t01053110639._2
209+ let claimAmount = $t01053110639._3
210+ let userShareTokensAmount = $t01053110639._4
213211 let userShareAmountNew = (userShareTokensAmount + pmtAmount)
214212 let availableFundsNew = (userAvailableSWOP(pool, i.caller) + claimAmount)
215213 let totalShareAmount = getTotalShareTokenLocked(pool)
239237 }
240238 }
241239 else {
242- let $t01306113161 = claimCalc(pool, i.caller, 1)
243- let userNewInterest = $t01306113161._1
244- let currentInterest = $t01306113161._2
245- let claimAmount = $t01306113161._3
246- let userShareTokensAmount = $t01306113161._4
240+ let $t01306513165 = claimCalc(pool, i.caller, 1)
241+ let userNewInterest = $t01306513165._1
242+ let currentInterest = $t01306513165._2
243+ let claimAmount = $t01306513165._3
244+ let userShareTokensAmount = $t01306513165._4
247245 if ((shareTokensWithdrawAmount > userShareTokensAmount))
248246 then throw("Withdraw amount more then user locked amount")
249247 else {
265263 then throw((("This method will be active after " + toString(farmingStartHeight)) + " height"))
266264 else {
267265 let shareTokenLocked = getTotalShareTokenLocked(pool)
268- let $t01478514850 = getLastInterestInfo(pool)
269- let lastInterestHeight = $t01478514850._1
270- let lastInterest = $t01478514850._2
271- let $t01485514944 = rewardInfo(pool)
272- let currentRewardPerBlock = $t01485514944._1
273- let rewardUpdateHeight = $t01485514944._2
274- let previousRewardPerBlock = $t01485514944._3
275- let $t01494915049 = claimCalc(pool, i.caller, 1)
276- let userNewInterest = $t01494915049._1
277- let currentInterest = $t01494915049._2
278- let claimAmount = $t01494915049._3
279- let userShareTokensAmount = $t01494915049._4
266+ let $t01478914854 = getLastInterestInfo(pool)
267+ let lastInterestHeight = $t01478914854._1
268+ let lastInterest = $t01478914854._2
269+ let $t01485914948 = rewardInfo(pool)
270+ let currentRewardPerBlock = $t01485914948._1
271+ let rewardUpdateHeight = $t01485914948._2
272+ let previousRewardPerBlock = $t01485914948._3
273+ let $t01495315053 = claimCalc(pool, i.caller, 1)
274+ let userNewInterest = $t01495315053._1
275+ let currentInterest = $t01495315053._2
276+ let claimAmount = $t01495315053._3
277+ let userShareTokensAmount = $t01495315053._4
280278 let availableFund = (userAvailableSWOP(pool, i.caller) + claimAmount)
281279 let userClaimedAmount = getUserSWOPClaimedAmount(pool, i.caller)
282280 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
55
66 let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
77
88 let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
99
1010 let keyShareTokensLocked = "_total_share_tokens_locked"
1111
1212 let keyRewardPoolFractionCurrent = "_current_pool_fraction_reward"
1313
1414 let keyRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
1515
1616 let keyTotalRewardPerBlockCurrent = "total_reward_per_block_current"
1717
1818 let keyTotalRewardPerBlockPrevious = "total_reward_per_block_previous"
1919
2020 let keyRewardUpdateHeight = "_reward_update_height"
2121
2222 let keyLastInterest = "_last_interest"
2323
2424 let keyLastInterestHeight = "_last_interest_height"
2525
2626 let keyUserShareTokensLocked = "_share_tokens_locked"
2727
2828 let keyUserLastInterest = "_last_interest"
2929
3030 let keySWOPid = "SWOP_id"
3131
3232 let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
3333
3434 let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
3535
3636 let keyAvailableSWOP = "_available_SWOP"
3737
3838 let keyFarmingStartHeight = "farming_start_height"
3939
4040 let votingAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
4141
4242 let oneWeekInBlock = 10106
4343
4444 let totalVoteShare = 10000000000
4545
4646 let SWOP = fromBase58String(getStringValue(this, keySWOPid))
4747
4848 let farmingStartHeight = valueOrErrorMessage(getInteger(this, keyFarmingStartHeight), ("No data on the key: " + keyFarmingStartHeight))
4949
5050 let farmingPreStartHeight = (farmingStartHeight - oneWeekInBlock)
5151
5252 func getTotalShareTokenLocked (pool) = valueOrErrorMessage(getInteger(this, (pool + keyShareTokensLocked)), (("No data on the key: " + pool) + keyShareTokensLocked))
5353
5454
5555 func getShareAssetId (pool) = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
5656
5757
5858 func calcScaleValue (assetId1,assetId2) = {
5959 let assetId1Decimals = value(assetInfo(assetId1)).decimals
6060 let assetId2Decimals = value(assetInfo(assetId2)).decimals
6161 let scaleDigits = ((assetId2Decimals - assetId1Decimals) + 8)
6262 pow(10, 0, scaleDigits, 0, 0, HALFDOWN)
6363 }
6464
6565
6666 func userAvailableSWOP (pool,user) = valueOrElse(getInteger(this, (((pool + "_") + toString(user)) + keyAvailableSWOP)), 0)
6767
6868
6969 func rewardInfo (pool) = {
7070 let totalRewardPerBlockCurrent = valueOrErrorMessage(getInteger(votingAddress, keyTotalRewardPerBlockCurrent), ((("No data on the key: " + keyTotalRewardPerBlockCurrent) + " at address ") + toString(votingAddress)))
7171 let totalRewardPerBlockPrevious = valueOrErrorMessage(getInteger(votingAddress, keyTotalRewardPerBlockPrevious), ((("No data on the key: " + keyTotalRewardPerBlockPrevious) + " at address ") + toString(votingAddress)))
7272 let rewardPoolFractionCurrent = valueOrErrorMessage(getInteger(votingAddress, (pool + keyRewardPoolFractionCurrent)), (((("No data on the key: " + pool) + keyRewardPoolFractionCurrent) + " at address ") + toString(votingAddress)))
7373 let rewardUpdateHeight = valueOrErrorMessage(getInteger(votingAddress, (pool + keyRewardUpdateHeight)), (((("No data on the key: " + pool) + keyRewardUpdateHeight) + " at address ") + toString(votingAddress)))
7474 let rewardPoolFractionPrevious = valueOrErrorMessage(getInteger(votingAddress, (pool + keyRewardPoolFractionPrevious)), (((("No data on the key: " + pool) + keyRewardPoolFractionPrevious) + " at address ") + toString(votingAddress)))
7575 let rewardPoolCurrent = fraction(totalRewardPerBlockCurrent, rewardPoolFractionCurrent, totalVoteShare)
7676 let rewardPoolPrevious = fraction(totalRewardPerBlockPrevious, rewardPoolFractionPrevious, totalVoteShare)
7777 if (if ((rewardPoolCurrent > totalRewardPerBlockCurrent))
7878 then true
7979 else (rewardPoolPrevious > totalRewardPerBlockPrevious))
8080 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
8181 else $Tuple3(rewardPoolCurrent, rewardUpdateHeight, rewardPoolPrevious)
8282 }
8383
8484
8585 func getLastInterestInfo (pool) = {
8686 let lastInterest = valueOrErrorMessage(getInteger(this, (pool + keyLastInterest)), (("No data on the key: " + pool) + keyLastInterest))
8787 let lastInterestHeight = valueOrElse(getInteger(this, (pool + keyLastInterestHeight)), farmingPreStartHeight)
8888 $Tuple2(lastInterestHeight, lastInterest)
8989 }
9090
9191
9292 func getUserInterestInfo (pool,userAddress) = {
9393 let userLastInterest = getInteger(this, (((pool + "_") + toString(userAddress)) + keyUserLastInterest))
9494 let userShare = getInteger(this, (((pool + "_") + toString(userAddress)) + keyUserShareTokensLocked))
9595 let lastInterest = valueOrErrorMessage(getInteger(this, (pool + keyLastInterest)), (("No data on the key: " + pool) + keyLastInterest))
9696 let userLastInterestValue = match userLastInterest {
9797 case userLastInterest: Int =>
9898 userLastInterest
9999 case _ =>
100100 lastInterest
101101 }
102102 let userShareTokensAmount = match userShare {
103103 case userShare: Int =>
104104 userShare
105105 case _ =>
106106 0
107107 }
108108 $Tuple2(userLastInterestValue, userShareTokensAmount)
109109 }
110110
111111
112112 func calcInterest (lastInterestHeight,rewardUpdateHeight,lastInterest,currentRewardPerBlock,shareTokenLocked,previousRewardPerBlock,shareAssetId,scaleValue,pmtAmount) = if ((shareTokenLocked == 0))
113113 then 0
114114 else if ((rewardUpdateHeight > height))
115115 then {
116116 let reward = (previousRewardPerBlock * (height - lastInterestHeight))
117117 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
118118 }
119119 else if ((lastInterestHeight > rewardUpdateHeight))
120120 then {
121121 let reward = (currentRewardPerBlock * (height - lastInterestHeight))
122122 (lastInterest + fraction(reward, scaleValue, shareTokenLocked))
123123 }
124124 else {
125125 let rewardAfterLastInterestBeforeReawardUpdate = (previousRewardPerBlock * (rewardUpdateHeight - lastInterestHeight))
126126 let interestAfterUpdate = (lastInterest + fraction(rewardAfterLastInterestBeforeReawardUpdate, scaleValue, shareTokenLocked))
127127 let reward = (currentRewardPerBlock * (height - rewardUpdateHeight))
128128 (interestAfterUpdate + fraction(reward, scaleValue, shareTokenLocked))
129129 }
130130
131131
132132 func claimCalc (pool,caller,pmtAmount) = {
133133 let shareAssetId = getShareAssetId(pool)
134134 let scaleValue = calcScaleValue(SWOP, shareAssetId)
135135 let shareTokenLocked = getTotalShareTokenLocked(pool)
136136 let $t071667231 = getLastInterestInfo(pool)
137137 let lastInterestHeight = $t071667231._1
138138 let lastInterest = $t071667231._2
139139 let $t072367324 = rewardInfo(pool)
140140 let currentRewardPerBlock = $t072367324._1
141141 let rewardUpdateHeight = $t072367324._2
142142 let previousRewardPerBlock = $t072367324._3
143143 let $t073297408 = getUserInterestInfo(pool, caller)
144144 let userLastInterest = $t073297408._1
145145 let userShareTokensAmount = $t073297408._2
146146 let currentInterest = calcInterest(lastInterestHeight, rewardUpdateHeight, lastInterest, currentRewardPerBlock, shareTokenLocked, previousRewardPerBlock, shareAssetId, scaleValue, pmtAmount)
147147 let claimAmount = fraction(userShareTokensAmount, (currentInterest - userLastInterest), scaleValue)
148148 let userNewInterest = currentInterest
149149 $Tuple4(userNewInterest, currentInterest, claimAmount, userShareTokensAmount)
150150 }
151151
152152
153153 func checkPmtAssetIdCorrect (pool,pmtAssetId) = {
154154 let poolShareAssetId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
155155 if ((pmtAssetId == poolShareAssetId))
156156 then true
157157 else false
158158 }
159159
160160
161161 func getUserSWOPClaimedAmount (pool,user) = valueOrElse(getInteger(this, (((pool + "_") + toString(user)) + keyUserSWOPClaimedAmount)), 0)
162162
163163
164164 @Callable(i)
165165 func init (earlyLP) = if (isDefined(getString(this, "keySWOPid")))
166166 then throw("SWOP already initialized")
167167 else {
168168 let initAmount = 100000000000000
169169 let SWOPissue = Issue("SWOP", "SWOP protocol token", initAmount, 8, true)
170170 let SWOPid = calculateAssetId(SWOPissue)
171171 nil
172172 }
173173
174174
175175
176176 @Callable(i)
177-func initPoolShareFarming (pool) = if ((i.caller != this))
178- then throw("Only the DApp itself can call this function")
179- else {
180- let $t089429022 = rewardInfo(pool)
181- let currentReward = $t089429022._1
182- let rewardUpdateHeight = $t089429022._2
183- let previousRewardPerBlock = $t089429022._3
177+func initPoolShareFarming (pool) = {
178+ let $t089469026 = rewardInfo(pool)
179+ let currentReward = $t089469026._1
180+ let rewardUpdateHeight = $t089469026._2
181+ let previousRewardPerBlock = $t089469026._3
184182 [IntegerEntry((pool + keyShareTokensLocked), 0), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyRewardPoolFractionCurrent), currentReward), IntegerEntry((pool + keyRewardUpdateHeight), rewardUpdateHeight), IntegerEntry((pool + keyRewardPoolFractionPrevious), previousRewardPerBlock)]
185- }
183+ }
186184
187185
188186
189187 @Callable(i)
190188 func lockShareTokens (pool) = {
191- let $t094259500 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
192- let pmtAmount = $t094259500._1
193- let pmtAssetId = $t094259500._2
189+ let $t094299504 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
190+ let pmtAmount = $t094299504._1
191+ let pmtAssetId = $t094299504._2
194192 if ((farmingStartHeight > height))
195193 then if (!(checkPmtAssetIdCorrect(pool, pmtAssetId)))
196194 then throw("Incorrect pmtAssetId")
197195 else {
198196 let userShareTokensAmount = valueOrElse(getInteger(this, (((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked)), 0)
199197 let userNewInterest = 0
200198 let userShareAmountNew = (userShareTokensAmount + pmtAmount)
201199 let totalShareAmount = getTotalShareTokenLocked(pool)
202200 let totalShareAmountNew = (totalShareAmount + pmtAmount)
203201 [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked), userShareAmountNew), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyShareTokensLocked), totalShareAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), 0)]
204202 }
205203 else if (!(checkPmtAssetIdCorrect(pool, pmtAssetId)))
206204 then throw("Incorrect pmtAssetId")
207205 else {
208- let $t01052710635 = claimCalc(pool, i.caller, pmtAmount)
209- let userNewInterest = $t01052710635._1
210- let currentInterest = $t01052710635._2
211- let claimAmount = $t01052710635._3
212- let userShareTokensAmount = $t01052710635._4
206+ let $t01053110639 = claimCalc(pool, i.caller, pmtAmount)
207+ let userNewInterest = $t01053110639._1
208+ let currentInterest = $t01053110639._2
209+ let claimAmount = $t01053110639._3
210+ let userShareTokensAmount = $t01053110639._4
213211 let userShareAmountNew = (userShareTokensAmount + pmtAmount)
214212 let availableFundsNew = (userAvailableSWOP(pool, i.caller) + claimAmount)
215213 let totalShareAmount = getTotalShareTokenLocked(pool)
216214 let totalShareAmountNew = (totalShareAmount + pmtAmount)
217215 let userClaimedAmount = getUserSWOPClaimedAmount(pool, i.caller)
218216 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
219217 [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked), userShareAmountNew), IntegerEntry((pool + keyLastInterest), currentInterest), IntegerEntry((pool + keyLastInterestHeight), height), IntegerEntry((pool + keyShareTokensLocked), totalShareAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), availableFundsNew)]
220218 }
221219 }
222220
223221
224222
225223 @Callable(i)
226224 func withdrawShareTokens (pool,shareTokensWithdrawAmount) = {
227225 let shareTokensId = fromBase58String(getStringValue(value(addressFromString(pool)), "share_asset_id"))
228226 if ((farmingStartHeight > height))
229227 then {
230228 let userShareTokensAmount = valueOrElse(getInteger(this, (((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked)), 0)
231229 if ((shareTokensWithdrawAmount > userShareTokensAmount))
232230 then throw("Withdraw amount more then user locked amount")
233231 else {
234232 let userNewInterest = 0
235233 let userShareAmountNew = (userShareTokensAmount - shareTokensWithdrawAmount)
236234 let totalShareAmount = getTotalShareTokenLocked(pool)
237235 let totalShareAmountNew = (totalShareAmount - shareTokensWithdrawAmount)
238236 [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked), userShareAmountNew), IntegerEntry((pool + keyLastInterest), 0), IntegerEntry((pool + keyShareTokensLocked), totalShareAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), 0), ScriptTransfer(i.caller, shareTokensWithdrawAmount, shareTokensId)]
239237 }
240238 }
241239 else {
242- let $t01306113161 = claimCalc(pool, i.caller, 1)
243- let userNewInterest = $t01306113161._1
244- let currentInterest = $t01306113161._2
245- let claimAmount = $t01306113161._3
246- let userShareTokensAmount = $t01306113161._4
240+ let $t01306513165 = claimCalc(pool, i.caller, 1)
241+ let userNewInterest = $t01306513165._1
242+ let currentInterest = $t01306513165._2
243+ let claimAmount = $t01306513165._3
244+ let userShareTokensAmount = $t01306513165._4
247245 if ((shareTokensWithdrawAmount > userShareTokensAmount))
248246 then throw("Withdraw amount more then user locked amount")
249247 else {
250248 let userShareAmountNew = (userShareTokensAmount - shareTokensWithdrawAmount)
251249 let availableFundsNew = (userAvailableSWOP(pool, i.caller) + claimAmount)
252250 let totalShareAmount = getTotalShareTokenLocked(pool)
253251 let totalShareAmountNew = (totalShareAmount - shareTokensWithdrawAmount)
254252 let userClaimedAmount = getUserSWOPClaimedAmount(pool, i.caller)
255253 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
256254 [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserShareTokensLocked), userShareAmountNew), IntegerEntry((pool + keyLastInterest), currentInterest), IntegerEntry((pool + keyLastInterestHeight), height), IntegerEntry((pool + keyShareTokensLocked), totalShareAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), availableFundsNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, shareTokensWithdrawAmount, shareTokensId)]
257255 }
258256 }
259257 }
260258
261259
262260
263261 @Callable(i)
264262 func claim (pool) = if ((farmingStartHeight > height))
265263 then throw((("This method will be active after " + toString(farmingStartHeight)) + " height"))
266264 else {
267265 let shareTokenLocked = getTotalShareTokenLocked(pool)
268- let $t01478514850 = getLastInterestInfo(pool)
269- let lastInterestHeight = $t01478514850._1
270- let lastInterest = $t01478514850._2
271- let $t01485514944 = rewardInfo(pool)
272- let currentRewardPerBlock = $t01485514944._1
273- let rewardUpdateHeight = $t01485514944._2
274- let previousRewardPerBlock = $t01485514944._3
275- let $t01494915049 = claimCalc(pool, i.caller, 1)
276- let userNewInterest = $t01494915049._1
277- let currentInterest = $t01494915049._2
278- let claimAmount = $t01494915049._3
279- let userShareTokensAmount = $t01494915049._4
266+ let $t01478914854 = getLastInterestInfo(pool)
267+ let lastInterestHeight = $t01478914854._1
268+ let lastInterest = $t01478914854._2
269+ let $t01485914948 = rewardInfo(pool)
270+ let currentRewardPerBlock = $t01485914948._1
271+ let rewardUpdateHeight = $t01485914948._2
272+ let previousRewardPerBlock = $t01485914948._3
273+ let $t01495315053 = claimCalc(pool, i.caller, 1)
274+ let userNewInterest = $t01495315053._1
275+ let currentInterest = $t01495315053._2
276+ let claimAmount = $t01495315053._3
277+ let userShareTokensAmount = $t01495315053._4
280278 let availableFund = (userAvailableSWOP(pool, i.caller) + claimAmount)
281279 let userClaimedAmount = getUserSWOPClaimedAmount(pool, i.caller)
282280 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
283281 if ((availableFund == 0))
284282 then throw("You have 0 available SWOP")
285283 else [IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserLastInterest), userNewInterest), IntegerEntry((pool + keyLastInterest), currentInterest), IntegerEntry((pool + keyLastInterestHeight), height), IntegerEntry((((pool + "_") + toString(i.caller)) + keyAvailableSWOP), 0), Reissue(SWOP, availableFund, true), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((((pool + "_") + toString(i.caller)) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, availableFund, SWOP)]
286284 }
287285
288286

github/deemru/w8io/c3f4982 
50.99 ms