tx · N7BbLWWFdE6kT7kJj2CEwNBHcJrRSGiSVad7FcVZEr3

3N63NoZoyyKJNUah7rUPRqDKgWT17QsWTr2:  -0.01400000 Waves

2021.06.11 14:41 [1565651] smart account 3N63NoZoyyKJNUah7rUPRqDKgWT17QsWTr2 > SELF 0.00000000 Waves

{ "type": 13, "id": "N7BbLWWFdE6kT7kJj2CEwNBHcJrRSGiSVad7FcVZEr3", "fee": 1400000, "feeAssetId": null, "timestamp": 1623411715505, "version": 2, "chainId": 84, "sender": "3N63NoZoyyKJNUah7rUPRqDKgWT17QsWTr2", "senderPublicKey": "96iNAhirmCimToEQLtYjUm3MNf4TmkD9rBBTYsrRmqoK", "proofs": [ "N9cdJzPuArKqaDS6THsGBTGgfbKwRwwTU5ULfs5TMuh2sLSLzvkMHhxb3SY2Rj61fQj1GMTDqpEbCeaeyt9RN36" ], "script": "base64:AAIEAAAAAAAAACEIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgMKAQgAAABWAAAAAAxhZG1pblB1YktleTEBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAAAxhZG1pblB1YktleTIBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAAAxhZG1pblB1YktleTMBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAIAAAAaX3RvdGFsX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAC2tTaGFyZUxpbWl0AgAAABxzaGFyZV9saW1pdF9vbl9maXJzdF9oYXJ2ZXN0AAAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgAAAB1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAAAAAAda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCAAAAHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAAAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uAgAAABpfcG9vbF9yZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAAHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAAAAAea2V5VG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAgAAAB90b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX3ByZXZpb3VzAAAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQCAAAAFHJld2FyZF91cGRhdGVfaGVpZ2h0AAAAAA9rZXlMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAABVrZXlMYXN0SW50ZXJlc3RIZWlnaHQCAAAAFV9sYXN0X2ludGVyZXN0X2hlaWdodAAAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkAgAAABRfc2hhcmVfdG9rZW5zX2xvY2tlZAAAAAATa2V5VXNlckxhc3RJbnRlcmVzdAIAAAAOX2xhc3RfaW50ZXJlc3QAAAAACWtleVNXT1BpZAIAAAAHU1dPUF9pZAAAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50AgAAABRfU1dPUF9jbGFpbWVkX2Ftb3VudAAAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAIAAAAZX1NXT1BfbGFzdF9jbGFpbWVkX2Ftb3VudAAAAAAQa2V5QXZhaWxhYmxlU1dPUAIAAAAPX2F2YWlsYWJsZV9TV09QAAAAABVrZXlGYXJtaW5nU3RhcnRIZWlnaHQCAAAAFGZhcm1pbmdfc3RhcnRfaGVpZ2h0AAAAAAZrZXlBUFkCAAAAA2FweQAAAAAWa1ByZXZpb3VzVG90YWxWb3RlU1dPUAIAAAAYcHJldmlvdXNfdG90YWxfdm90ZV9TV09QAAAAABNrZXlTd29wWWVhckVtaXNzaW9uAgAAABJzd29wX3llYXJfZW1pc3Npb24AAAAAD2tleUJhbGFuY2VjcG1tQQIAAAAPQV9hc3NldF9iYWxhbmNlAAAAAA9rZXlCYWxhbmNlY3BtbUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAha0hhcnZlc3RQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nAgAAAB5faGFydmVzdF9wb29sX2FjdGl2ZVZvdGVfc3RydWMAAAAAJWtIYXJ2ZXN0VXNlclBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcCAAAAI19oYXJ2ZXN0X3VzZXJfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAABlrZXlMaW1pdFNoYXJlRmlyc3RIYXJ2ZXN0AgAAABxzaGFyZV9saW1pdF9vbl9maXJzdF9oYXJ2ZXN0AAAAAAtrZXlBc3NldElkQQIAAAAKQV9hc3NldF9pZAAAAAALa2V5QXNzZXRJZEICAAAACkJfYXNzZXRfaWQAAAAAFWtleUZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAE2tleWZpcnN0SGFydmVzdENwbW0CAAAADWZpcnN0X2hhcnZlc3QAAAAADmtleVRlbXBQcmV2U3VtAgAAABNzdW1fcmV3YXJkX3ByZXZpb3VzAAAAAA1rZXlUZW1wQ3VyU3VtAgAAABJzdW1fcmV3YXJkX2N1cnJlbnQAAAAAEWdvdmVybmFuY2VBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUqvpp3oH0E1KFyj8uOohRsxnqmBxZ8g0tAAAAAAZ3YWxsZXQJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTfPUuXiVhZ3hXg5FELVt09el+9tX+FIYkAAAAADXZvdGluZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQaNn7fV6KdJ2lc/r/3JtTn+6HDaD4gyn8AAAAAHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTfPUuXiVhZ3hXg5FELVt09el+9tX+FIYkAAAAADm9uZVdlZWtJbkJsb2NrAAAAAAAAACd6AAAAAA50b3RhbFZvdGVTaGFyZQAAAAACVAvkAAAAAAALc2NhbGVWYWx1ZTEAAAAAAAAAAAoAAAAAC3NjYWxlVmFsdWUzAAAAAAAAAAPoAAAAAAtzY2FsZVZhbHVlNQAAAAAAAAGGoAAAAAALc2NhbGVWYWx1ZTYAAAAAAAAPQkAAAAAAC3NjYWxlVmFsdWU4AAAAAAAF9eEAAAAAAAxzY2FsZVZhbHVlMTEAAAAAF0h26AABAAAAC3N0ckFzc2V0SWRBAAAAAQAAAARwb29sCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAARwb29sBQAAAAtrZXlBc3NldElkQQEAAAALc3RyQXNzZXRJZEIAAAABAAAABHBvb2wJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHBvb2wFAAAAC2tleUFzc2V0SWRCAQAAAAhhc3NldElkQQAAAAEAAAAEcG9vbAMJAAAAAAAAAgkBAAAAC3N0ckFzc2V0SWRBAAAAAQUAAAAEcG9vbAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQkBAAAAC3N0ckFzc2V0SWRBAAAAAQUAAAAEcG9vbAEAAAAIYXNzZXRJZEIAAAABAAAABHBvb2wDCQAAAAAAAAIJAQAAAAtzdHJBc3NldElkQgAAAAEFAAAABHBvb2wCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEJAQAAAAtzdHJBc3NldElkQgAAAAEFAAAABHBvb2wAAAAAC2tCYXNlUGVyaW9kAgAAAAtiYXNlX3BlcmlvZAAAAAANa1BlcmlvZExlbmd0aAIAAAANcGVyaW9kX2xlbmd0aAAAAAAMa1N0YXJ0SGVpZ2h0AgAAAAxzdGFydF9oZWlnaHQAAAAAE2tGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAABZrRHVyYXRpb25GdWxsVm90ZVBvd2VyAgAAABhkdXJhdGlvbl9mdWxsX3ZvdGVfcG93ZXIAAAAADWtNaW5Wb3RlUG93ZXICAAAADm1pbl92b3RlX3Bvd2VyAAAAAApiYXNlUGVyaW9kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAALa0Jhc2VQZXJpb2QCAAAAEUVtcHR5IGtCYXNlUGVyaW9kAAAAAAtzdGFydEhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAADGtTdGFydEhlaWdodAIAAAASRW1wdHkga1N0YXJ0SGVpZ2h0AAAAAAxwZXJpb2RMZW5ndGgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAA1rUGVyaW9kTGVuZ3RoAgAAABNFbXB0eSBrUGVyaW9kTGVuZ3RoAAAAABVkdXJhdGlvbkZ1bGxWb3RlUG93ZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAABZrRHVyYXRpb25GdWxsVm90ZVBvd2VyAgAAABxFbXB0eSBrRHVyYXRpb25GdWxsVm90ZVBvd2VyAAAAAAxtaW5Wb3RlUG93ZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAA1rTWluVm90ZVBvd2VyAgAAABNFbXB0eSBrTWluVm90ZVBvd2VyAAAAAApjdXJyUGVyaW9kCQAAZAAAAAIFAAAACmJhc2VQZXJpb2QJAABpAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAC3N0YXJ0SGVpZ2h0BQAAAAxwZXJpb2RMZW5ndGgBAAAADWdldExpbWl0VG9rZW4AAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHBvb2wFAAAAGWtleUxpbWl0U2hhcmVGaXJzdEhhcnZlc3QAAAAAAAAAAAAAAAAAA0FQWQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAGa2V5QVBZAAAAABBTd29wWWVhckVtaXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAABNrZXlTd29wWWVhckVtaXNzaW9uAQAAAAphc3NldE5hbWVBAAAAAQAAAARwb29sBAAAAAckbWF0Y2gwCQEAAAAIYXNzZXRJZEEAAAABBQAAAARwb29sAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDACAAAABVdBVkVTCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAphc3NldE5hbWVCAAAAAQAAAARwb29sBAAAAAckbWF0Y2gwCQEAAAAIYXNzZXRJZEIAAAABBQAAAARwb29sAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDACAAAABVdBVkVTCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAAAAAARTV09QCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAACWtleVNXT1BpZAEAAAAOaXNGaXJzdEhhcnZlc3QAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEcG9vbAUAAAATa2V5Zmlyc3RIYXJ2ZXN0Q3BtbQcBAAAAFWdldEhlaWdodEZpcnN0SGFydmVzdAAAAAEAAAAEcG9vbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAARwb29sBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQAAAAAAAAAAAABAAAAC2dldEJhbGFuY2VBAAAAAQAAAARwb29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAPa2V5QmFsYW5jZWNwbW1BCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAA9rZXlCYWxhbmNlY3BtbUEBAAAAC2dldEJhbGFuY2VCAAAAAQAAAARwb29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAPa2V5QmFsYW5jZWNwbW1CCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAA9rZXlCYWxhbmNlY3BtbUIBAAAAEmdldFNoYXJlTGltaXRUb2tlbgAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAC2tTaGFyZUxpbWl0CQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAAtrU2hhcmVMaW1pdAEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQAAAARwb29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAQAAAARwb29sCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQBAAAADGdldEFzc2V0SW5mbwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAEAAAACHN0cmluZ0lkCQACWAAAAAEFAAAAAmlkBAAAAARpbmZvCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAACaWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAFAAAACHN0cmluZ0lkAgAAAA4gZG9lc24ndCBleGlzdAkABRUAAAADBQAAAAhzdHJpbmdJZAgFAAAABGluZm8AAAAEbmFtZQgFAAAABGluZm8AAAAIZGVjaW1hbHMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwCQAFFQAAAAMCAAAABVdBVkVTAgAAAAVXQVZFUwAAAAAAAAAACAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAOY2FsY1NjYWxlVmFsdWUAAAACAAAACGFzc2V0SWQxAAAACGFzc2V0SWQyBAAAABBhc3NldElkMURlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAhhc3NldElkMQAAAAhkZWNpbWFscwQAAAAQYXNzZXRJZDJEZWNpbWFscwgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAIYXNzZXRJZDIAAAAIZGVjaW1hbHMEAAAAC3NjYWxlRGlnaXRzCQAAZAAAAAIJAABlAAAAAgUAAAAQYXNzZXRJZDJEZWNpbWFscwUAAAAQYXNzZXRJZDFEZWNpbWFscwAAAAAAAAAACAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAAtzY2FsZURpZ2l0cwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAISEFMRkRPV04BAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgAAAARwb29sAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAR1c2VyBQAAABBrZXlBdmFpbGFibGVTV09QAAAAAAAAAAAAAQAAAApyZXdhcmRJbmZvAAAAAQAAAARwb29sBAAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzBQAAAB1rZXlUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzBQAAAB5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAB5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAAZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzCQABLAAAAAIFAAAABHBvb2wFAAAAHGtleVJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAHGtleVJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgAAAAAAAAAAAAQAAAAacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwkAASwAAAACBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAARcmV3YXJkUG9vbEN1cnJlbnQJAABrAAAAAwUAAAAadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFAAAAGXJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQFAAAADnRvdGFsVm90ZVNoYXJlBAAAABJyZXdhcmRQb29sUHJldmlvdXMJAABrAAAAAwUAAAAbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzBQAAABpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwUAAAAOdG90YWxWb3RlU2hhcmUDAwkAAGYAAAACBQAAABFyZXdhcmRQb29sQ3VycmVudAUAAAAadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQGCQAAZgAAAAIFAAAAEnJld2FyZFBvb2xQcmV2aW91cwUAAAAbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQAAAgAAAAECAAAAYnJld2FyZFBvb2xDdXJyZW50ID4gdG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQgb3IgcmV3YXJkUG9vbFByZXZpb3VzID4gdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQAFFgAAAAQFAAAAEXJld2FyZFBvb2xDdXJyZW50BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFBvb2xQcmV2aW91cwUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAEAAAAEcG9vbAQAAAAMbGFzdEludGVyZXN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BAAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlMYXN0SW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABRQAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAADGxhc3RJbnRlcmVzdAEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIAAAAEcG9vbAAAAAt1c2VyQWRkcmVzcwQAAAAQdXNlckxhc3RJbnRlcmVzdAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BAAAAAl1c2VyU2hhcmUJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBAAAAAxsYXN0SW50ZXJlc3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QEAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQQAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAABB1c2VyTGFzdEludGVyZXN0BQAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0BQAAAAxsYXN0SW50ZXJlc3QEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAQAAAAHJG1hdGNoMAUAAAAJdXNlclNoYXJlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAACXVzZXJTaGFyZQUAAAAHJG1hdGNoMAUAAAAJdXNlclNoYXJlAAAAAAAAAAAACQAFFAAAAAIFAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50AQAAAAxjYWxjSW50ZXJlc3QAAAAKAAAAEmxhc3RJbnRlcmVzdEhlaWdodAAAABJyZXdhcmRVcGRhdGVIZWlnaHQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAAAAAxsYXN0SW50ZXJlc3QAAAAVY3VycmVudFJld2FyZFBlckJsb2NrAAAAEHNoYXJlVG9rZW5Mb2NrZWQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawAAAAxzaGFyZUFzc2V0SWQAAAAKc2NhbGVWYWx1ZQAAAAlwbXRBbW91bnQDCQAAAAAAAAIFAAAAEHNoYXJlVG9rZW5Mb2NrZWQAAAAAAAAAAAAAAAAAAAAAAAADCQEAAAACIT0AAAACBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAAAwMJAABmAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAZoZWlnaHQJAAAAAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAMDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAACIT0AAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwMDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAAAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAABmAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BAAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAZAAAAAIFAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAQAAAAljbGFpbUNhbGMAAAADAAAABHBvb2wAAAAGY2FsbGVyAAAACXBtdEFtb3VudAQAAAAMc2hhcmVBc3NldElkCQEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAQUAAAAEcG9vbAQAAAAKc2NhbGVWYWx1ZQkBAAAADmNhbGNTY2FsZVZhbHVlAAAAAgUAAAAEU1dPUAUAAAAMc2hhcmVBc3NldElkBAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAANJHQwMTI4NzAxMjkzNQkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAxMjg3MDEyOTM1AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAxMjg3MDEyOTM1AAAAAl8yBAAAAA0kdDAxMjk0MDEzMDUyCQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDEyOTQwMTMwNTIAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDEyOTQwMTMwNTIAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxMjk0MDEzMDUyAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTI5NDAxMzA1MgAAAAJfNAQAAAANJHQwMTMwNTcxMzEzNgkBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACBQAAAARwb29sBQAAAAZjYWxsZXIEAAAAEHVzZXJMYXN0SW50ZXJlc3QIBQAAAA0kdDAxMzA1NzEzMTM2AAAAAl8xBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAxMzA1NzEzMTM2AAAAAl8yBAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAAAxjYWxjSW50ZXJlc3QAAAAKBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAUAAAAMbGFzdEludGVyZXN0BQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sFAAAAEHNoYXJlVG9rZW5Mb2NrZWQFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sFAAAADHNoYXJlQXNzZXRJZAUAAAAKc2NhbGVWYWx1ZQUAAAAJcG10QW1vdW50BAAAAAtjbGFpbUFtb3VudAkAAGsAAAADBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQJAABlAAAAAgUAAAAPY3VycmVudEludGVyZXN0BQAAABB1c2VyTGFzdEludGVyZXN0BQAAAApzY2FsZVZhbHVlBAAAAA91c2VyTmV3SW50ZXJlc3QFAAAAD2N1cnJlbnRJbnRlcmVzdAkABRYAAAAEBQAAAA91c2VyTmV3SW50ZXJlc3QFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAALY2xhaW1BbW91bnQFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAEAAAAXY2FsY3VsYXRlUHJvdG9jb2xSZXdhcmQAAAABAAAABHBvb2wEAAAADSR0MDEzNjU0MTM3MTkJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQUAAAAEcG9vbAQAAAASbGFzdEludGVyZXN0SGVpZ2h0CAUAAAANJHQwMTM2NTQxMzcxOQAAAAJfMQQAAAAMbGFzdEludGVyZXN0CAUAAAANJHQwMTM2NTQxMzcxOQAAAAJfMgQAAAANJHQwMTM3MjQxMzgzNQkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxMzcyNDEzODM1AAAAAl8xBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxMzcyNDEzODM1AAAAAl8yBAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCAUAAAANJHQwMTM3MjQxMzgzNQAAAAJfMwQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDEzNzI0MTM4MzUAAAACXzQEAAAAEHNoYXJlVG9rZW5Mb2NrZWQJAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABBQAAAARwb29sAwMJAAAAAAAAAgUAAAAQc2hhcmVUb2tlbkxvY2tlZAAAAAAAAAAAAAkAAAAAAAACBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAABwMJAABmAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAZoZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQDCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQEAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAZAAAAAIFAAAABnJld2FyZAUAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlAwMJAAAAAAAAAgUAAAAQc2hhcmVUb2tlbkxvY2tlZAAAAAAAAAAAAAkBAAAAAiE9AAAAAgUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAAAAAAAAAAAAAcDAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAIhPQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQDAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAAAAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAAGcmV3YXJkBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUAAAAAAAAAAAABAAAAFmNoZWNrUG10QXNzZXRJZENvcnJlY3QAAAACAAAABHBvb2wAAAAKcG10QXNzZXRJZAQAAAAQcG9vbFNoYXJlQXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAABBwb29sU2hhcmVBc3NldElkBgcBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAIAAAAEcG9vbAAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAAEdXNlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAAAAAAAAAAAABgAAAAFpAQAAAARpbml0AAAAAQAAAAdlYXJseUxQAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAJa2V5U1dPUGlkCQAAAgAAAAECAAAAGFNXT1AgYWxyZWFkeSBpbml0aWFsaXplZAQAAAAKaW5pdEFtb3VudAAAAFrzEHpAAAQAAAAJU1dPUGlzc3VlCQAEQgAAAAUCAAAABFNXT1ACAAAAE1NXT1AgcHJvdG9jb2wgdG9rZW4FAAAACmluaXRBbW91bnQAAAAAAAAAAAgGBAAAAAZTV09QaWQJAAQ4AAAAAQUAAAAJU1dPUGlzc3VlCQAETAAAAAIJAARCAAAABQIAAAAEU1dPUAIAAAATU1dPUCBwcm90b2NvbCB0b2tlbgUAAAAKaW5pdEFtb3VudAAAAAAAAAAACAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa2V5U1dPUGlkCQACWAAAAAEFAAAABlNXT1BpZAUAAAADbmlsAAAAAWkBAAAAFGluaXRQb29sU2hhcmVGYXJtaW5nAAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAK09ubHkgdGhlIERBcHAgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EAAAADSR0MDE2Njc1MTY3NzgJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAANY3VycmVudFJld2FyZAgFAAAADSR0MDE2Njc1MTY3NzgAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE2Njc1MTY3NzgAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNjY3NTE2Nzc4AAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTY2NzUxNjc3OAAAAAJfNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAABJ1cGRhdGVQb29sSW50ZXJlc3QAAAABAAAABHBvb2wDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABndhbGxldAkAAAIAAAABAgAAACxPbmx5IHRoZSBBZG1pbiBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQAAAANJHQwMTcxMTIxNzIzMgkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wFAAAAHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MAAAAAAAAAAAAEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE3MTEyMTcyMzIAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE3MTEyMTcyMzIAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTcxMTIxNzIzMgAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTcxMTIxNzIzMgAAAAJfNAQAAAANJHQwMTcyMzcxNzM0MAkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAAA1jdXJyZW50UmV3YXJkCAUAAAANJHQwMTcyMzcxNzM0MAAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTcyMzcxNzM0MAAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE3MjM3MTczNDAAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxNzIzNzE3MzQwAAAAAl80CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAPbG9ja1NoYXJlVG9rZW5zAAAAAQAAAARwb29sBAAAAA0kdDAxNzUzMjE3NjA3CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTc1MzIxNzYwNwAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE3NTMyMTc2MDcAAAACXzIEAAAADSR0MDE3NjEyMTc2ODUJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAApwbXRBc3NldElkBAAAAA1wbXRTdHJBc3NldElkCAUAAAANJHQwMTc2MTIxNzY4NQAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAANJHQwMTc2MTIxNzY4NQAAAAJfMgQAAAALcG10RGVjaW1hbHMIBQAAAA0kdDAxNzYxMjE3Njg1AAAAAl8zBAAAAA0kdDAxNzY5MDE3Nzk4CQEAAAAJY2xhaW1DYWxjAAAAAwUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE3NjkwMTc3OTgAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE3NjkwMTc3OTgAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTc2OTAxNzc5OAAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTc2OTAxNzc5OAAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZAAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAJcG10QW1vdW50BAAAABFhdmFpbGFibGVGdW5kc05ldwkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABB0b3RhbFNoYXJlQW1vdW50CQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAATdG90YWxTaGFyZUFtb3VudE5ldwkAAGQAAAACBQAAABB0b3RhbFNoYXJlQW1vdW50BQAAAAlwbXRBbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQEAAAACWJhc2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAUAAAASdXNlclNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFGtleVNoYXJlVG9rZW5zTG9ja2VkBQAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAQa2V5QXZhaWxhYmxlU1dPUAUAAAARYXZhaWxhYmxlRnVuZHNOZXcFAAAAA25pbAMJAABnAAAAAgAAAAAAAAAAAAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAFFlvdSBjYW4ndCBsb2NrIHRva2VuAwkBAAAAASEAAAABCQEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIFAAAABHBvb2wFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBtdEFzc2V0SWQDAwkBAAAADmlzRmlyc3RIYXJ2ZXN0AAAAAQkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABHBvb2wJAABmAAAAAgkBAAAAFWdldEhlaWdodEZpcnN0SGFydmVzdAAAAAEJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAARwb29sBQAAAAZoZWlnaHQHBAAAAA1oYXJ2ZXN0UGVyaW9kCQAAZQAAAAIJAABpAAAAAgkAAGQAAAACCQAAZQAAAAIJAQAAABVnZXRIZWlnaHRGaXJzdEhhcnZlc3QAAAABCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAEcG9vbAUAAAALc3RhcnRIZWlnaHQAAAAAAAAAAAEFAAAADHBlcmlvZExlbmd0aAAAAAAAAAAAAQQAAAAOYW1vdW50T2ZWb3RpbmcJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAANdm90aW5nQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8FAAAABHBvb2wCAAAAEF91c2VyX3Bvb2xfc3RydWMCAAAAAV8EAAAAEGFtb3VudFBvb2xTdHJhY3QJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAANdm90aW5nQWRkcmVzcwkAASwAAAACBQAAAARwb29sAgAAAAtfcG9vbF9zdHJ1YwIAAAABXwQAAAAeYW1vdW50QWN0aXZlVm90ZVVzZXJQb29sU3RyYWN0CQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAANdm90aW5nQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8FAAAABHBvb2wFAAAAJWtIYXJ2ZXN0VXNlclBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcCAAAAAAIAAAABXwQAAAAaYW1vdW50UG9vbEFjdGl2ZVZvdGVTdHJhY3QJAAS1AAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAA12b3RpbmdBZGRyZXNzCQABLAAAAAIFAAAABHBvb2wFAAAAIWtIYXJ2ZXN0UG9vbEFjdGl2ZVZvdGVTdHJ1Y1ZvdGluZwIAAAAAAgAAAAFfBAAAABR1c2VyU2hhcmVUb2tlbkxvY2tlZAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BAAAABJ1c2VyUG9vbEFjdGl2ZVZvdGUDCQAAAAAAAAIJAAGkAAAAAQUAAAAKY3VyclBlcmlvZAkAAZEAAAACBQAAAA5hbW91bnRPZlZvdGluZwAAAAAAAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABLYAAAABCQABkQAAAAIFAAAAHmFtb3VudEFjdGl2ZVZvdGVVc2VyUG9vbFN0cmFjdAAAAAAAAAAAAAAAAAAAAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABLYAAAABCQABkQAAAAIFAAAADmFtb3VudE9mVm90aW5nAAAAAAAAAAABAAAAAAAAAAAABAAAAA5wb29sQWN0aXZlVm90ZQMJAAAAAAAAAgkAAaQAAAABBQAAAApjdXJyUGVyaW9kCQABkQAAAAIFAAAAEGFtb3VudFBvb2xTdHJhY3QAAAAAAAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAS2AAAAAQkAAZEAAAACBQAAABphbW91bnRQb29sQWN0aXZlVm90ZVN0cmFjdAAAAAAAAAAAAAAAAAAAAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABLYAAAABCQABkQAAAAIFAAAAEGFtb3VudFBvb2xTdHJhY3QAAAAAAAAAAAEAAAAAAAAAAAAEAAAADnByb3RvY29sUmV3YXJkCQEAAAAXY2FsY3VsYXRlUHJvdG9jb2xSZXdhcmQAAAABBQAAAARwb29sAwkBAAAAAiE9AAAAAgUAAAASdXNlclBvb2xBY3RpdmVWb3RlAAAAAAAAAAAABAAAAA9saW1pdFNoYXJlVG9rZW4JAQAAABJnZXRTaGFyZUxpbWl0VG9rZW4AAAABCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAARwb29sBAAAAApzaGFyZVRva2VuCQAAZQAAAAIJAABrAAAAAwUAAAAPbGltaXRTaGFyZVRva2VuBQAAABJ1c2VyUG9vbEFjdGl2ZVZvdGUFAAAADnBvb2xBY3RpdmVWb3RlBQAAABR1c2VyU2hhcmVUb2tlbkxvY2tlZAMDCQAAZgAAAAIJAAGQAAAAAQUAAAAeYW1vdW50QWN0aXZlVm90ZVVzZXJQb29sU3RyYWN0AAAAAAAAAAABCQAAZwAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAS2AAAAAQkAAZEAAAACBQAAAB5hbW91bnRBY3RpdmVWb3RlVXNlclBvb2xTdHJhY3QAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWhhcnZlc3RQZXJpb2QHCQAAAgAAAAECAAAAFVlvdSBjYW4ndCBzaGFyZSB0b2tlbgMJAABmAAAAAgUAAAAJcG10QW1vdW50BQAAAA9saW1pdFNoYXJlVG9rZW4JAAACAAAAAQkAASwAAAACAgAAACBZb3UgY2FuJ3Qgc2hhcmUgdG9rZW4gbW9yZSB0aGFuIAkAAaQAAAABBQAAAA9saW1pdFNoYXJlVG9rZW4DCQAAZgAAAAIFAAAACnNoYXJlVG9rZW4AAAAAAAAAAAADCQAAAAAAAAIFAAAAEHRvdGFsU2hhcmVBbW91bnQAAAAAAAAAAAAJAAROAAAAAgUAAAAJYmFzZUVudHJ5CQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAEU1dPUAUAAAAOcHJvdG9jb2xSZXdhcmQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABndhbGxldAUAAAAOcHJvdG9jb2xSZXdhcmQFAAAABFNXT1AFAAAAA25pbAMJAABnAAAAAgUAAAAKc2hhcmVUb2tlbgUAAAAJcG10QW1vdW50BQAAAAliYXNlRW50cnkJAAACAAAAAQkAASwAAAACAgAAABxZb3VyIG1heGltdW0gc2hhcmUgdG9rZW4gaXMgCQABpAAAAAEFAAAACnNoYXJlVG9rZW4JAAACAAAAAQIAAAAVWW91IGNhbid0IHNoYXJlIHRva2VuCQAAAgAAAAECAAAAIFlvdXIgYW1vdW50IG9mIHRva2VuIGxlc3MgdGhhbiAwBQAAAAliYXNlRW50cnkAAAABaQEAAAATd2l0aGRyYXdTaGFyZVRva2VucwAAAAIAAAAEcG9vbAAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAAA1zaGFyZVRva2Vuc0lkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQEAAAADSR0MDIxOTkyMjIwOTIJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDIxOTkyMjIwOTIAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDIxOTkyMjIwOTIAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMjE5OTIyMjA5MgAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMjE5OTIyMjA5MgAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZQAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARYXZhaWxhYmxlRnVuZHNOZXcJAABkAAAAAgkBAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAABmAAAAAgUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CQAAAgAAAAECAAAALFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBQAAABJ1c2VyU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQFAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QBQAAABFhdmFpbGFibGVGdW5kc05ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFAAAADXNoYXJlVG9rZW5zSWQFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAEcG9vbAQAAAAQc2hhcmVUb2tlbkxvY2tlZAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAADSR0MDIzNTg1MjM2NTAJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQUAAAAEcG9vbAQAAAASbGFzdEludGVyZXN0SGVpZ2h0CAUAAAANJHQwMjM1ODUyMzY1MAAAAAJfMQQAAAAMbGFzdEludGVyZXN0CAUAAAANJHQwMjM1ODUyMzY1MAAAAAJfMgQAAAANJHQwMjM2NTUyMzc2NwkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAyMzY1NTIzNzY3AAAAAl8xBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAyMzY1NTIzNzY3AAAAAl8yBAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCAUAAAANJHQwMjM2NTUyMzc2NwAAAAJfMwQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDIzNjU1MjM3NjcAAAACXzQEAAAADSR0MDIzNzcyMjM4NzIJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDIzNzcyMjM4NzIAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDIzNzcyMjM4NzIAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMjM3NzIyMzg3MgAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMjM3NzIyMzg3MgAAAAJfNAQAAAANYXZhaWxhYmxlRnVuZAkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50AwkAAAAAAAACBQAAAA1hdmFpbGFibGVGdW5kAAAAAAAAAAAACQAAAgAAAAECAAAAGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QAAAAAAAAAAAACQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAEU1dPUAUAAAANYXZhaWxhYmxlRnVuZAYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA1hdmFpbGFibGVGdW5kBQAAAARTV09QBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXlBjZdB", "height": 1565651, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: hi7ChRYMwnJXxPhmvyeU58prNqLe6gbc3x4bHrAyFTb Next: F6qCYfVxcgkM5EBULW6mbTjMznSbvYv7wj4GLJZSWWmb Diff:
OldNewDifferences
1515
1616 let g = "_previous_pool_fraction_reward"
1717
18-let h = "total_reward_per_block_current"
18+let h = "_pool_reward_update_height"
1919
20-let i = "total_reward_per_block_previous"
20+let i = "total_reward_per_block_current"
2121
22-let j = "reward_update_height"
22+let j = "total_reward_per_block_previous"
2323
24-let k = "_last_interest"
24+let k = "reward_update_height"
2525
26-let l = "_last_interest_height"
26+let l = "_last_interest"
2727
28-let m = "_share_tokens_locked"
28+let m = "_last_interest_height"
2929
30-let n = "_last_interest"
30+let n = "_share_tokens_locked"
3131
32-let o = "SWOP_id"
32+let o = "_last_interest"
3333
34-let p = "_SWOP_claimed_amount"
34+let p = "SWOP_id"
3535
36-let q = "_SWOP_last_claimed_amount"
36+let q = "_SWOP_claimed_amount"
3737
38-let r = "_available_SWOP"
38+let r = "_SWOP_last_claimed_amount"
3939
40-let s = "farming_start_height"
40+let s = "_available_SWOP"
4141
42-let t = "apy"
42+let t = "farming_start_height"
4343
44-let u = "previous_total_vote_SWOP"
44+let u = "apy"
4545
46-let v = "swop_year_emission"
46+let v = "previous_total_vote_SWOP"
4747
48-let w = "A_asset_balance"
48+let w = "swop_year_emission"
4949
50-let x = "B_asset_balance"
50+let x = "A_asset_balance"
5151
52-let y = "_harvest_pool_activeVote_struc"
52+let y = "B_asset_balance"
5353
54-let z = "_harvest_user_pool_activeVote_struc"
54+let z = "_harvest_pool_activeVote_struc"
5555
56-let A = "share_limit_on_first_harvest"
56+let A = "_harvest_user_pool_activeVote_struc"
5757
58-let B = "A_asset_id"
58+let B = "share_limit_on_first_harvest"
5959
60-let C = "B_asset_id"
60+let C = "A_asset_id"
6161
62-let D = "first_harvest_height"
62+let D = "B_asset_id"
6363
64-let E = "first_harvest"
64+let E = "first_harvest_height"
6565
66-let F = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
66+let F = "first_harvest"
6767
68-let G = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
68+let G = "sum_reward_previous"
6969
70-let H = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
70+let H = "sum_reward_current"
7171
72-let I = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
72+let I = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7373
74-let J = 10106
74+let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7575
76-let K = 10000000000
76+let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
7777
78-let L = 10
78+let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = 1000
80+let M = 10106
8181
82-let N = 100000
82+let N = 10000000000
8383
84-let O = 1000000
84+let O = 10
8585
86-let P = 100000000
86+let P = 1000
8787
88-let Q = 100000000000
88+let Q = 100000
8989
90-func R (S) = getStringValue(S, B)
90+let R = 1000000
91+
92+let S = 100000000
93+
94+let T = 100000000000
95+
96+func U (V) = getStringValue(V, C)
9197
9298
93-func T (S) = getStringValue(S, C)
99+func W (V) = getStringValue(V, D)
94100
95101
96-func U (S) = if ((R(S) == "WAVES"))
102+func X (V) = if ((U(V) == "WAVES"))
97103 then unit
98- else fromBase58String(R(S))
104+ else fromBase58String(U(V))
99105
100106
101-func V (S) = if ((T(S) == "WAVES"))
107+func Y (V) = if ((W(V) == "WAVES"))
102108 then unit
103- else fromBase58String(T(S))
109+ else fromBase58String(W(V))
104110
105111
106-let W = "base_period"
112+let Z = "base_period"
107113
108-let X = "period_length"
114+let aa = "period_length"
109115
110-let Y = "start_height"
116+let ab = "start_height"
111117
112-let Z = "first_harvest_height"
118+let ac = "first_harvest_height"
113119
114-let aa = "duration_full_vote_power"
120+let ad = "duration_full_vote_power"
115121
116-let ab = "min_vote_power"
122+let ae = "min_vote_power"
117123
118-let ac = valueOrErrorMessage(getInteger(H, W), "Empty kBasePeriod")
124+let af = valueOrErrorMessage(getInteger(K, Z), "Empty kBasePeriod")
119125
120-let ad = valueOrErrorMessage(getInteger(H, Y), "Empty kStartHeight")
126+let ag = valueOrErrorMessage(getInteger(K, ab), "Empty kStartHeight")
121127
122-let ae = valueOrErrorMessage(getInteger(H, X), "Empty kPeriodLength")
128+let ah = valueOrErrorMessage(getInteger(K, aa), "Empty kPeriodLength")
123129
124-let af = valueOrErrorMessage(getInteger(H, aa), "Empty kDurationFullVotePower")
130+let ai = valueOrErrorMessage(getInteger(K, ad), "Empty kDurationFullVotePower")
125131
126-let ag = valueOrErrorMessage(getInteger(H, ab), "Empty kMinVotePower")
132+let aj = valueOrErrorMessage(getInteger(K, ae), "Empty kMinVotePower")
127133
128-let ah = (ac + ((height - ad) / ae))
134+let ak = (af + ((height - ag) / ah))
129135
130-func ai (S) = valueOrElse(getIntegerValue(S, A), 0)
136+func al (V) = valueOrElse(getIntegerValue(V, B), 0)
131137
132138
133-let aj = getIntegerValue(this, t)
139+let am = getIntegerValue(this, u)
134140
135-let ak = getIntegerValue(this, v)
141+let an = getIntegerValue(this, w)
136142
137-func al (S) = {
138- let am = U(S)
139- if ($isInstanceOf(am, "ByteVector"))
143+func ao (V) = {
144+ let ap = X(V)
145+ if ($isInstanceOf(ap, "ByteVector"))
140146 then {
141- let an = am
142- value(assetInfo(an)).name
147+ let aq = ap
148+ value(assetInfo(aq)).name
143149 }
144- else if ($isInstanceOf(am, "Unit"))
150+ else if ($isInstanceOf(ap, "Unit"))
145151 then {
146- let ao = am
152+ let ar = ap
147153 "WAVES"
148154 }
149155 else throw("Match error")
150156 }
151157
152158
153-func ap (S) = {
154- let am = V(S)
155- if ($isInstanceOf(am, "ByteVector"))
159+func as (V) = {
160+ let ap = Y(V)
161+ if ($isInstanceOf(ap, "ByteVector"))
156162 then {
157- let an = am
158- value(assetInfo(an)).name
163+ let aq = ap
164+ value(assetInfo(aq)).name
159165 }
160- else if ($isInstanceOf(am, "Unit"))
166+ else if ($isInstanceOf(ap, "Unit"))
161167 then {
162- let ao = am
168+ let ar = ap
163169 "WAVES"
164170 }
165171 else throw("Match error")
166172 }
167173
168174
169-let aq = fromBase58String(getStringValue(this, o))
175+let at = fromBase58String(getStringValue(this, p))
170176
171-func ar (S) = valueOrElse(getBoolean(S, E), false)
177+func au (V) = valueOrElse(getBoolean(V, F), false)
172178
173179
174-func as (S) = valueOrElse(getInteger(S, D), 0)
180+func av (V) = valueOrElse(getInteger(V, E), 0)
175181
176182
177-func at (S) = valueOrErrorMessage(getInteger(S, w), ("No data on the key: " + w))
183+func aw (V) = valueOrErrorMessage(getInteger(V, x), ("No data on the key: " + x))
178184
179185
180-func au (S) = valueOrErrorMessage(getInteger(S, x), ("No data on the key: " + x))
186+func ax (V) = valueOrErrorMessage(getInteger(V, y), ("No data on the key: " + y))
181187
182188
183-func av (S) = valueOrErrorMessage(getInteger(S, e), ("No data on the key: " + e))
189+func ay (V) = valueOrErrorMessage(getInteger(V, e), ("No data on the key: " + e))
184190
185191
186-func aw (S) = valueOrErrorMessage(getInteger(this, (S + d)), (("No data on the key: " + S) + d))
192+func az (V) = valueOrErrorMessage(getInteger(this, (V + d)), (("No data on the key: " + V) + d))
187193
188194
189-func ax (S) = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
195+func aA (V) = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
190196
191197
192-func ay (az) = {
193- let am = az
194- if ($isInstanceOf(am, "ByteVector"))
198+func aB (aC) = {
199+ let ap = aC
200+ if ($isInstanceOf(ap, "ByteVector"))
195201 then {
196- let an = am
197- let aA = toBase58String(an)
198- let aB = valueOrErrorMessage(assetInfo(an), (("Asset " + aA) + " doesn't exist"))
199- $Tuple3(aA, aB.name, aB.decimals)
202+ let aq = ap
203+ let aD = toBase58String(aq)
204+ let aE = valueOrErrorMessage(assetInfo(aq), (("Asset " + aD) + " doesn't exist"))
205+ $Tuple3(aD, aE.name, aE.decimals)
200206 }
201- else if ($isInstanceOf(am, "Unit"))
207+ else if ($isInstanceOf(ap, "Unit"))
202208 then {
203- let ao = am
209+ let ar = ap
204210 $Tuple3("WAVES", "WAVES", 8)
205211 }
206212 else throw("Match error")
207213 }
208214
209215
210-func aC (aD,aE) = {
211- let aF = value(assetInfo(aD)).decimals
212- let aG = value(assetInfo(aE)).decimals
213- let aH = ((aG - aF) + 8)
214- pow(10, 0, aH, 0, 0, HALFDOWN)
216+func aF (aG,aH) = {
217+ let aI = value(assetInfo(aG)).decimals
218+ let aJ = value(assetInfo(aH)).decimals
219+ let aK = ((aJ - aI) + 8)
220+ pow(10, 0, aK, 0, 0, HALFDOWN)
215221 }
216222
217223
218-func aI (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + r)), 0)
224+func aL (V,aM) = valueOrElse(getInteger(this, (((V + "_") + toString(aM)) + s)), 0)
219225
220226
221-func aK (S) = {
222- let aL = valueOrErrorMessage(getInteger(F, h), ((("No data on the key: " + h) + " at address ") + toString(F)))
223- let aM = valueOrErrorMessage(getInteger(F, i), ((("No data on the key: " + i) + " at address ") + toString(F)))
224- let aN = valueOrErrorMessage(getInteger(F, (S + f)), (((("No data on the key: " + S) + f) + " at address ") + toString(F)))
225- let aO = valueOrErrorMessage(getInteger(F, j), ((("No data on the key: " + j) + " at address ") + toString(F)))
226- let aP = valueOrErrorMessage(getInteger(F, (S + g)), (((("No data on the key: " + S) + g) + " at address ") + toString(F)))
227- let aQ = fraction(aL, aN, K)
228- let aR = fraction(aM, aP, K)
229- if (if ((aQ > aL))
227+func aN (V) = {
228+ let aO = valueOrErrorMessage(getInteger(I, i), ((("No data on the key: " + i) + " at address ") + toString(I)))
229+ let aP = valueOrErrorMessage(getInteger(I, j), ((("No data on the key: " + j) + " at address ") + toString(I)))
230+ let aQ = valueOrErrorMessage(getInteger(I, (V + f)), (((("No data on the key: " + V) + f) + " at address ") + toString(I)))
231+ let aR = valueOrErrorMessage(getInteger(I, k), ((("No data on the key: " + k) + " at address ") + toString(I)))
232+ let aS = valueOrElse(getInteger(I, (V + h)), 0)
233+ let aT = valueOrErrorMessage(getInteger(I, (V + g)), (((("No data on the key: " + V) + g) + " at address ") + toString(I)))
234+ let aU = fraction(aO, aQ, N)
235+ let aV = fraction(aP, aT, N)
236+ if (if ((aU > aO))
230237 then true
231- else (aR > aM))
238+ else (aV > aP))
232239 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
233- else $Tuple3(aQ, aO, aR)
240+ else $Tuple4(aU, aR, aV, aS)
234241 }
235242
236243
237-func aS (S) = {
238- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
239- let aU = valueOrElse(getInteger(this, (S + l)), height)
240- $Tuple2(aU, aT)
244+func aW (V) = {
245+ let aX = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
246+ let aY = valueOrElse(getInteger(this, (V + m)), height)
247+ $Tuple2(aY, aX)
241248 }
242249
243250
244-func aV (S,aW) = {
245- let aX = getInteger(this, (((S + "_") + toString(aW)) + n))
246- let aY = getInteger(this, (((S + "_") + toString(aW)) + m))
247- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
248- let aZ = {
249- let am = aX
250- if ($isInstanceOf(am, "Int"))
251+func aZ (V,ba) = {
252+ let bb = getInteger(this, (((V + "_") + toString(ba)) + o))
253+ let bc = getInteger(this, (((V + "_") + toString(ba)) + n))
254+ let aX = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
255+ let bd = {
256+ let ap = bb
257+ if ($isInstanceOf(ap, "Int"))
251258 then {
252- let aX = am
253- aX
259+ let bb = ap
260+ bb
254261 }
255- else aT
262+ else aX
256263 }
257- let ba = {
258- let am = aY
259- if ($isInstanceOf(am, "Int"))
264+ let be = {
265+ let ap = bc
266+ if ($isInstanceOf(ap, "Int"))
260267 then {
261- let aY = am
262- aY
268+ let bc = ap
269+ bc
263270 }
264271 else 0
265272 }
266- $Tuple2(aZ, ba)
273+ $Tuple2(bd, be)
267274 }
268275
269276
270-func bb (aU,aO,aT,bc,bd,be,bf,bg,bh) = if ((bd == 0))
277+func bf (aY,aR,aS,aX,bg,bh,bi,bj,bk,bl) = if ((bh == 0))
271278 then 0
272- else if ((aO > height))
273- then {
274- let bi = (be * (height - aU))
275- (aT + fraction(bi, bg, bd))
276- }
277- else if ((aU > aO))
279+ else if ((aS != 0))
280+ then if (if ((aR > height))
281+ then (aR == aS)
282+ else false)
278283 then {
279- let bi = (bc * (height - aU))
280- (aT + fraction(bi, bg, bd))
284+ let bm = (bi * (height - aY))
285+ (aX + fraction(bm, bk, bh))
281286 }
282- else {
283- let bj = (be * (aO - aU))
284- let bk = (aT + fraction(bj, bg, bd))
285- let bi = (bc * (height - aO))
286- (bk + fraction(bi, bg, bd))
287+ else if (if ((height > aR))
288+ then (aR != aS)
289+ else false)
290+ then {
291+ let bm = (bi * (height - aY))
292+ (aX + fraction(bm, bk, bh))
293+ }
294+ else if (if (if ((height > aR))
295+ then (aR == aS)
296+ else false)
297+ then (aY > aR)
298+ else false)
299+ then {
300+ let bm = (bg * (height - aY))
301+ (aX + fraction(bm, bk, bh))
302+ }
303+ else {
304+ let bn = (bi * (aR - aY))
305+ let bo = (aX + fraction(bn, bk, bh))
306+ let bm = (bg * (height - aR))
307+ (bo + fraction(bm, bk, bh))
308+ }
309+ else if ((aR > height))
310+ then {
311+ let bm = (bi * (height - aY))
312+ (aX + fraction(bm, bk, bh))
287313 }
314+ else if ((aY > aR))
315+ then {
316+ let bm = (bg * (height - aY))
317+ (aX + fraction(bm, bk, bh))
318+ }
319+ else {
320+ let bn = (bi * (aR - aY))
321+ let bo = (aX + fraction(bn, bk, bh))
322+ let bm = (bg * (height - aR))
323+ (bo + fraction(bm, bk, bh))
324+ }
288325
289326
290-func bl (S,bm,bh) = {
291- let bf = ax(S)
292- let bg = aC(aq, bf)
293- let bd = aw(S)
294- let bn = aS(S)
295- let aU = bn._1
296- let aT = bn._2
297- let bo = aK(S)
298- let bc = bo._1
299- let aO = bo._2
300- let be = bo._3
301- let bp = aV(S, bm)
302- let aX = bp._1
303- let ba = bp._2
304- let bq = bb(aU, aO, aT, bc, bd, be, bf, bg, bh)
305- let br = fraction(ba, (bq - aX), bg)
306- let bs = bq
307- $Tuple4(bs, bq, br, ba)
327+func bp (V,bq,bl) = {
328+ let bj = aA(V)
329+ let bk = aF(at, bj)
330+ let bh = az(V)
331+ let br = aW(V)
332+ let aY = br._1
333+ let aX = br._2
334+ let bs = aN(V)
335+ let bg = bs._1
336+ let aR = bs._2
337+ let bi = bs._3
338+ let aS = bs._4
339+ let bt = aZ(V, bq)
340+ let bb = bt._1
341+ let be = bt._2
342+ let bu = bf(aY, aR, aS, aX, bg, bh, bi, bj, bk, bl)
343+ let bv = fraction(be, (bu - bb), bk)
344+ let bw = bu
345+ $Tuple4(bw, bu, bv, be)
308346 }
309347
310348
311-func bt (S) = {
312- let bu = aS(S)
313- let aU = bu._1
314- let aT = bu._2
315- let bv = aK(S)
316- let bc = bv._1
317- let aO = bv._2
318- let be = bv._3
319- let bd = aw(S)
320- if ((bd == 0))
321- then if ((aO > height))
349+func bx (V) = {
350+ let by = aW(V)
351+ let aY = by._1
352+ let aX = by._2
353+ let bz = aN(V)
354+ let bg = bz._1
355+ let aR = bz._2
356+ let bi = bz._3
357+ let aS = bz._4
358+ let bh = az(V)
359+ if (if ((bh == 0))
360+ then (aS == 0)
361+ else false)
362+ then if ((aR > height))
322363 then {
323- let bi = (be * (height - aU))
324- bi
364+ let bm = (bi * (height - aY))
365+ bm
325366 }
326- else if ((aU > aO))
367+ else if ((aY > aR))
327368 then {
328- let bi = (bc * (height - aU))
329- bi
369+ let bm = (bg * (height - aY))
370+ bm
330371 }
331372 else {
332- let bj = (be * (aO - aU))
333- let bi = (bc * (height - aO))
334- (bi + bj)
373+ let bn = (bi * (aR - aY))
374+ let bm = (bg * (height - aR))
375+ (bm + bn)
335376 }
336- else 0
377+ else if (if ((bh == 0))
378+ then (aS != 0)
379+ else false)
380+ then if (if ((aR > height))
381+ then (aR == aS)
382+ else false)
383+ then {
384+ let bm = (bi * (height - aY))
385+ bm
386+ }
387+ else if (if ((height > aR))
388+ then (aR != aS)
389+ else false)
390+ then {
391+ let bm = (bi * (height - aY))
392+ bm
393+ }
394+ else if (if (if ((height > aR))
395+ then (aR == aS)
396+ else false)
397+ then (aY > aR)
398+ else false)
399+ then {
400+ let bm = (bg * (height - aY))
401+ bm
402+ }
403+ else {
404+ let bn = (bi * (aR - aY))
405+ let bm = (bg * (height - aR))
406+ (bm + bn)
407+ }
408+ else 0
337409 }
338410
339411
340-func bw (S,bx) = {
341- let by = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
342- if ((bx == by))
412+func bA (V,bB) = {
413+ let bC = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
414+ if ((bB == bC))
343415 then true
344416 else false
345417 }
346418
347419
348-func bz (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + p)), 0)
420+func bD (V,aM) = valueOrElse(getInteger(this, (((V + "_") + toString(aM)) + q)), 0)
349421
350422
351-@Callable(bA)
352-func init (bB) = if (isDefined(getString(this, o)))
423+@Callable(bE)
424+func init (bF) = if (isDefined(getString(this, p)))
353425 then throw("SWOP already initialized")
354426 else {
355- let bC = 100000000000000
356- let bD = Issue("SWOP", "SWOP protocol token", bC, 8, true)
357- let bE = calculateAssetId(bD)
358-[Issue("SWOP", "SWOP protocol token", bC, 8, true), StringEntry(o, toBase58String(bE))]
427+ let bG = 100000000000000
428+ let bH = Issue("SWOP", "SWOP protocol token", bG, 8, true)
429+ let bI = calculateAssetId(bH)
430+[Issue("SWOP", "SWOP protocol token", bG, 8, true), StringEntry(p, toBase58String(bI))]
359431 }
360432
361433
362434
363-@Callable(bA)
364-func initPoolShareFarming (S) = if ((bA.caller != this))
435+@Callable(bE)
436+func initPoolShareFarming (V) = if ((bE.caller != this))
365437 then throw("Only the DApp itself can call this function")
366438 else {
367- let bF = aK(S)
368- let bG = bF._1
369- let aO = bF._2
370- let be = bF._3
371-[IntegerEntry((S + d), 0), IntegerEntry((S + k), 0), IntegerEntry((S + l), height)]
439+ let bJ = aN(V)
440+ let bK = bJ._1
441+ let aR = bJ._2
442+ let bi = bJ._3
443+ let aS = bJ._4
444+[IntegerEntry((V + d), 0), IntegerEntry((V + l), 0), IntegerEntry((V + m), height)]
372445 }
373446
374447
375448
376-@Callable(bA)
377-func updatePoolInterest (S) = if ((bA.caller != G))
449+@Callable(bE)
450+func updatePoolInterest (V) = if ((bE.caller != J))
378451 then throw("Only the Admin itself can call this function")
379452 else {
380- let bH = bl(S, I, 0)
381- let bs = bH._1
382- let bq = bH._2
383- let br = bH._3
384- let ba = bH._4
385- let bI = aK(S)
386- let bG = bI._1
387- let aO = bI._2
388- let be = bI._3
389-[IntegerEntry((S + d), 0), IntegerEntry((S + k), bs), IntegerEntry((S + l), height)]
453+ let bL = bp(V, L, 0)
454+ let bw = bL._1
455+ let bu = bL._2
456+ let bv = bL._3
457+ let be = bL._4
458+ let bM = aN(V)
459+ let bK = bM._1
460+ let aR = bM._2
461+ let bi = bM._3
462+ let aS = bM._4
463+[IntegerEntry((V + l), bw), IntegerEntry((V + m), height)]
390464 }
391465
392466
393467
394-@Callable(bA)
395-func lockShareTokens (S) = {
396- let bJ = $Tuple2(bA.payments[0].amount, bA.payments[0].assetId)
397- let bh = bJ._1
398- let bx = bJ._2
399- let bK = ay(bx)
400- let bL = bK._1
401- let bM = bK._2
402- let bN = bK._3
403- let bO = bl(S, bA.caller, bh)
404- let bs = bO._1
405- let bq = bO._2
406- let br = bO._3
407- let ba = bO._4
408- let bP = (ba + bh)
409- let bQ = (aI(S, bA.caller) + br)
410- let bR = aw(S)
411- let bS = (bR + bh)
412- let bT = bz(S, bA.caller)
413- let bU = (bT + br)
414- let bV = [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bP), IntegerEntry((S + d), bS), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bU), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bQ)]
415- if ((0 >= bh))
468+@Callable(bE)
469+func lockShareTokens (V) = {
470+ let bN = $Tuple2(bE.payments[0].amount, bE.payments[0].assetId)
471+ let bl = bN._1
472+ let bB = bN._2
473+ let bO = aB(bB)
474+ let bP = bO._1
475+ let bQ = bO._2
476+ let bR = bO._3
477+ let bS = bp(V, bE.caller, bl)
478+ let bw = bS._1
479+ let bu = bS._2
480+ let bv = bS._3
481+ let be = bS._4
482+ let bT = (be + bl)
483+ let bU = (aL(V, bE.caller) + bv)
484+ let bV = az(V)
485+ let bW = (bV + bl)
486+ let bX = bD(V, bE.caller)
487+ let bY = (bX + bv)
488+ let bZ = [IntegerEntry((((V + "_") + toString(bE.caller)) + o), bw), IntegerEntry((((V + "_") + toString(bE.caller)) + n), bT), IntegerEntry((V + d), bW), IntegerEntry((V + l), bu), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bE.caller)) + q), bY), IntegerEntry((((V + "_") + toString(bE.caller)) + r), bv), IntegerEntry((((V + "_") + toString(bE.caller)) + s), bU)]
489+ if ((0 >= bl))
416490 then throw("You can't lock token")
417- else if (!(bw(S, bx)))
491+ else if (!(bA(V, bB)))
418492 then throw("Incorrect pmtAssetId")
419- else if (if (ar(Address(fromBase58String(S))))
420- then (as(Address(fromBase58String(S))) > height)
493+ else if (if (au(Address(fromBase58String(V))))
494+ then (av(Address(fromBase58String(V))) > height)
421495 else false)
422496 then {
423- let bW = ((((as(Address(fromBase58String(S))) - ad) + 1) / ae) - 1)
424- let bX = split(getStringValue(H, (((toString(bA.caller) + "_") + S) + "_user_pool_struc")), "_")
425- let bY = split(getStringValue(H, (S + "_pool_struc")), "_")
426- let bZ = split(valueOrElse(getString(H, (((toString(bA.caller) + "_") + S) + z)), ""), "_")
427- let ca = split(valueOrElse(getString(H, (S + y)), ""), "_")
428- let cb = ba
429- let cc = if ((toString(ah) == bX[2]))
430- then valueOrElse(parseInt(bZ[0]), 0)
431- else valueOrElse(parseInt(bX[1]), 0)
432- let cd = if ((toString(ah) == bY[2]))
433- then valueOrElse(parseInt(ca[0]), 0)
434- else valueOrElse(parseInt(bY[1]), 0)
435- let ce = bt(S)
436- if ((cc != 0))
497+ let ca = ((((av(Address(fromBase58String(V))) - ag) + 1) / ah) - 1)
498+ let cb = split(getStringValue(K, (((toString(bE.caller) + "_") + V) + "_user_pool_struc")), "_")
499+ let cc = split(getStringValue(K, (V + "_pool_struc")), "_")
500+ let cd = split(valueOrElse(getString(K, (((toString(bE.caller) + "_") + V) + A)), ""), "_")
501+ let ce = split(valueOrElse(getString(K, (V + z)), ""), "_")
502+ let cf = be
503+ let cg = if ((toString(ak) == cb[2]))
504+ then valueOrElse(parseInt(cd[0]), 0)
505+ else valueOrElse(parseInt(cb[1]), 0)
506+ let ch = if ((toString(ak) == cc[2]))
507+ then valueOrElse(parseInt(ce[0]), 0)
508+ else valueOrElse(parseInt(cc[1]), 0)
509+ let ci = bx(V)
510+ if ((cg != 0))
437511 then {
438- let cf = av(addressFromStringValue(S))
439- let cg = (fraction(cf, cc, cd) - cb)
440- if (if ((size(bZ) > 1))
441- then (valueOrElse(parseInt(bZ[1]), 0) >= bW)
512+ let cj = ay(addressFromStringValue(V))
513+ let ck = (fraction(cj, cg, ch) - cf)
514+ if (if ((size(cd) > 1))
515+ then (valueOrElse(parseInt(cd[1]), 0) >= ca)
442516 else false)
443517 then throw("You can't share token")
444- else if ((bh > cf))
445- then throw(("You can't share token more than " + toString(cf)))
446- else if ((cg > 0))
447- then if ((bR == 0))
448- then (bV ++ [Reissue(aq, ce, true), ScriptTransfer(G, ce, aq)])
449- else if ((cg >= bh))
450- then bV
451- else throw(("Your maximum share token is " + toString(cg)))
518+ else if ((bl > cj))
519+ then throw(("You can't share token more than " + toString(cj)))
520+ else if ((ck > 0))
521+ then if ((bV == 0))
522+ then (bZ ++ [Reissue(at, ci, true), ScriptTransfer(J, ci, at)])
523+ else if ((ck >= bl))
524+ then bZ
525+ else throw(("Your maximum share token is " + toString(ck)))
452526 else throw("You can't share token")
453527 }
454528 else throw("Your amount of token less than 0")
455529 }
456- else bV
530+ else bZ
457531 }
458532
459533
460534
461-@Callable(bA)
462-func withdrawShareTokens (S,ch) = {
463- let ci = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
464- let cj = bl(S, bA.caller, 1)
465- let bs = cj._1
466- let bq = cj._2
467- let br = cj._3
468- let ba = cj._4
469- let bP = (ba - ch)
470- let bQ = (aI(S, bA.caller) + br)
471- let bR = aw(S)
472- let bS = (bR - ch)
473- let bT = bz(S, bA.caller)
474- let bU = (bT + br)
475- if ((ch > ba))
535+@Callable(bE)
536+func withdrawShareTokens (V,cl) = {
537+ let cm = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
538+ let cn = bp(V, bE.caller, 1)
539+ let bw = cn._1
540+ let bu = cn._2
541+ let bv = cn._3
542+ let be = cn._4
543+ let bT = (be - cl)
544+ let bU = (aL(V, bE.caller) + bv)
545+ let bV = az(V)
546+ let bW = (bV - cl)
547+ let bX = bD(V, bE.caller)
548+ let bY = (bX + bv)
549+ if ((cl > be))
476550 then throw("Withdraw amount more then user locked amount")
477- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bP), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((S + d), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bQ), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bU), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, ch, ci)]
551+ else [IntegerEntry((((V + "_") + toString(bE.caller)) + o), bw), IntegerEntry((((V + "_") + toString(bE.caller)) + n), bT), IntegerEntry((V + l), bu), IntegerEntry((V + m), height), IntegerEntry((V + d), bW), IntegerEntry((((V + "_") + toString(bE.caller)) + s), bU), IntegerEntry((((V + "_") + toString(bE.caller)) + q), bY), IntegerEntry((((V + "_") + toString(bE.caller)) + r), bv), ScriptTransfer(bE.caller, cl, cm)]
478552 }
479553
480554
481555
482-@Callable(bA)
483-func claim (S) = {
484- let bd = aw(S)
485- let ck = aS(S)
486- let aU = ck._1
487- let aT = ck._2
488- let cl = aK(S)
489- let bc = cl._1
490- let aO = cl._2
491- let be = cl._3
492- let cm = bl(S, bA.caller, 1)
493- let bs = cm._1
494- let bq = cm._2
495- let br = cm._3
496- let ba = cm._4
497- let cn = (aI(S, bA.caller) + br)
498- let bT = bz(S, bA.caller)
499- let bU = (bT + br)
500- if ((cn == 0))
556+@Callable(bE)
557+func claim (V) = {
558+ let bh = az(V)
559+ let co = aW(V)
560+ let aY = co._1
561+ let aX = co._2
562+ let cp = aN(V)
563+ let bg = cp._1
564+ let aR = cp._2
565+ let bi = cp._3
566+ let aS = cp._4
567+ let cq = bp(V, bE.caller, 1)
568+ let bw = cq._1
569+ let bu = cq._2
570+ let bv = cq._3
571+ let be = cq._4
572+ let cr = (aL(V, bE.caller) + bv)
573+ let bX = bD(V, bE.caller)
574+ let bY = (bX + bv)
575+ if ((cr == 0))
501576 then throw("You have 0 available SWOP")
502- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + r), 0), Reissue(aq, cn, true), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bU), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, cn, aq)]
577+ else [IntegerEntry((((V + "_") + toString(bE.caller)) + o), bw), IntegerEntry((V + l), bu), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bE.caller)) + s), 0), Reissue(at, cr, true), IntegerEntry((((V + "_") + toString(bE.caller)) + q), bY), IntegerEntry((((V + "_") + toString(bE.caller)) + r), bv), ScriptTransfer(bE.caller, cr, at)]
503578 }
504579
505580
506-@Verifier(co)
507-func cp () = {
508- let am = co
509- sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
581+@Verifier(cs)
582+func ct () = {
583+ let ap = cs
584+ sigVerify(cs.bodyBytes, cs.proofs[0], cs.senderPublicKey)
510585 }
511586
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 = "_current_pool_fraction_reward"
1515
1616 let g = "_previous_pool_fraction_reward"
1717
18-let h = "total_reward_per_block_current"
18+let h = "_pool_reward_update_height"
1919
20-let i = "total_reward_per_block_previous"
20+let i = "total_reward_per_block_current"
2121
22-let j = "reward_update_height"
22+let j = "total_reward_per_block_previous"
2323
24-let k = "_last_interest"
24+let k = "reward_update_height"
2525
26-let l = "_last_interest_height"
26+let l = "_last_interest"
2727
28-let m = "_share_tokens_locked"
28+let m = "_last_interest_height"
2929
30-let n = "_last_interest"
30+let n = "_share_tokens_locked"
3131
32-let o = "SWOP_id"
32+let o = "_last_interest"
3333
34-let p = "_SWOP_claimed_amount"
34+let p = "SWOP_id"
3535
36-let q = "_SWOP_last_claimed_amount"
36+let q = "_SWOP_claimed_amount"
3737
38-let r = "_available_SWOP"
38+let r = "_SWOP_last_claimed_amount"
3939
40-let s = "farming_start_height"
40+let s = "_available_SWOP"
4141
42-let t = "apy"
42+let t = "farming_start_height"
4343
44-let u = "previous_total_vote_SWOP"
44+let u = "apy"
4545
46-let v = "swop_year_emission"
46+let v = "previous_total_vote_SWOP"
4747
48-let w = "A_asset_balance"
48+let w = "swop_year_emission"
4949
50-let x = "B_asset_balance"
50+let x = "A_asset_balance"
5151
52-let y = "_harvest_pool_activeVote_struc"
52+let y = "B_asset_balance"
5353
54-let z = "_harvest_user_pool_activeVote_struc"
54+let z = "_harvest_pool_activeVote_struc"
5555
56-let A = "share_limit_on_first_harvest"
56+let A = "_harvest_user_pool_activeVote_struc"
5757
58-let B = "A_asset_id"
58+let B = "share_limit_on_first_harvest"
5959
60-let C = "B_asset_id"
60+let C = "A_asset_id"
6161
62-let D = "first_harvest_height"
62+let D = "B_asset_id"
6363
64-let E = "first_harvest"
64+let E = "first_harvest_height"
6565
66-let F = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
66+let F = "first_harvest"
6767
68-let G = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
68+let G = "sum_reward_previous"
6969
70-let H = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
70+let H = "sum_reward_current"
7171
72-let I = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
72+let I = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7373
74-let J = 10106
74+let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7575
76-let K = 10000000000
76+let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
7777
78-let L = 10
78+let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = 1000
80+let M = 10106
8181
82-let N = 100000
82+let N = 10000000000
8383
84-let O = 1000000
84+let O = 10
8585
86-let P = 100000000
86+let P = 1000
8787
88-let Q = 100000000000
88+let Q = 100000
8989
90-func R (S) = getStringValue(S, B)
90+let R = 1000000
91+
92+let S = 100000000
93+
94+let T = 100000000000
95+
96+func U (V) = getStringValue(V, C)
9197
9298
93-func T (S) = getStringValue(S, C)
99+func W (V) = getStringValue(V, D)
94100
95101
96-func U (S) = if ((R(S) == "WAVES"))
102+func X (V) = if ((U(V) == "WAVES"))
97103 then unit
98- else fromBase58String(R(S))
104+ else fromBase58String(U(V))
99105
100106
101-func V (S) = if ((T(S) == "WAVES"))
107+func Y (V) = if ((W(V) == "WAVES"))
102108 then unit
103- else fromBase58String(T(S))
109+ else fromBase58String(W(V))
104110
105111
106-let W = "base_period"
112+let Z = "base_period"
107113
108-let X = "period_length"
114+let aa = "period_length"
109115
110-let Y = "start_height"
116+let ab = "start_height"
111117
112-let Z = "first_harvest_height"
118+let ac = "first_harvest_height"
113119
114-let aa = "duration_full_vote_power"
120+let ad = "duration_full_vote_power"
115121
116-let ab = "min_vote_power"
122+let ae = "min_vote_power"
117123
118-let ac = valueOrErrorMessage(getInteger(H, W), "Empty kBasePeriod")
124+let af = valueOrErrorMessage(getInteger(K, Z), "Empty kBasePeriod")
119125
120-let ad = valueOrErrorMessage(getInteger(H, Y), "Empty kStartHeight")
126+let ag = valueOrErrorMessage(getInteger(K, ab), "Empty kStartHeight")
121127
122-let ae = valueOrErrorMessage(getInteger(H, X), "Empty kPeriodLength")
128+let ah = valueOrErrorMessage(getInteger(K, aa), "Empty kPeriodLength")
123129
124-let af = valueOrErrorMessage(getInteger(H, aa), "Empty kDurationFullVotePower")
130+let ai = valueOrErrorMessage(getInteger(K, ad), "Empty kDurationFullVotePower")
125131
126-let ag = valueOrErrorMessage(getInteger(H, ab), "Empty kMinVotePower")
132+let aj = valueOrErrorMessage(getInteger(K, ae), "Empty kMinVotePower")
127133
128-let ah = (ac + ((height - ad) / ae))
134+let ak = (af + ((height - ag) / ah))
129135
130-func ai (S) = valueOrElse(getIntegerValue(S, A), 0)
136+func al (V) = valueOrElse(getIntegerValue(V, B), 0)
131137
132138
133-let aj = getIntegerValue(this, t)
139+let am = getIntegerValue(this, u)
134140
135-let ak = getIntegerValue(this, v)
141+let an = getIntegerValue(this, w)
136142
137-func al (S) = {
138- let am = U(S)
139- if ($isInstanceOf(am, "ByteVector"))
143+func ao (V) = {
144+ let ap = X(V)
145+ if ($isInstanceOf(ap, "ByteVector"))
140146 then {
141- let an = am
142- value(assetInfo(an)).name
147+ let aq = ap
148+ value(assetInfo(aq)).name
143149 }
144- else if ($isInstanceOf(am, "Unit"))
150+ else if ($isInstanceOf(ap, "Unit"))
145151 then {
146- let ao = am
152+ let ar = ap
147153 "WAVES"
148154 }
149155 else throw("Match error")
150156 }
151157
152158
153-func ap (S) = {
154- let am = V(S)
155- if ($isInstanceOf(am, "ByteVector"))
159+func as (V) = {
160+ let ap = Y(V)
161+ if ($isInstanceOf(ap, "ByteVector"))
156162 then {
157- let an = am
158- value(assetInfo(an)).name
163+ let aq = ap
164+ value(assetInfo(aq)).name
159165 }
160- else if ($isInstanceOf(am, "Unit"))
166+ else if ($isInstanceOf(ap, "Unit"))
161167 then {
162- let ao = am
168+ let ar = ap
163169 "WAVES"
164170 }
165171 else throw("Match error")
166172 }
167173
168174
169-let aq = fromBase58String(getStringValue(this, o))
175+let at = fromBase58String(getStringValue(this, p))
170176
171-func ar (S) = valueOrElse(getBoolean(S, E), false)
177+func au (V) = valueOrElse(getBoolean(V, F), false)
172178
173179
174-func as (S) = valueOrElse(getInteger(S, D), 0)
180+func av (V) = valueOrElse(getInteger(V, E), 0)
175181
176182
177-func at (S) = valueOrErrorMessage(getInteger(S, w), ("No data on the key: " + w))
183+func aw (V) = valueOrErrorMessage(getInteger(V, x), ("No data on the key: " + x))
178184
179185
180-func au (S) = valueOrErrorMessage(getInteger(S, x), ("No data on the key: " + x))
186+func ax (V) = valueOrErrorMessage(getInteger(V, y), ("No data on the key: " + y))
181187
182188
183-func av (S) = valueOrErrorMessage(getInteger(S, e), ("No data on the key: " + e))
189+func ay (V) = valueOrErrorMessage(getInteger(V, e), ("No data on the key: " + e))
184190
185191
186-func aw (S) = valueOrErrorMessage(getInteger(this, (S + d)), (("No data on the key: " + S) + d))
192+func az (V) = valueOrErrorMessage(getInteger(this, (V + d)), (("No data on the key: " + V) + d))
187193
188194
189-func ax (S) = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
195+func aA (V) = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
190196
191197
192-func ay (az) = {
193- let am = az
194- if ($isInstanceOf(am, "ByteVector"))
198+func aB (aC) = {
199+ let ap = aC
200+ if ($isInstanceOf(ap, "ByteVector"))
195201 then {
196- let an = am
197- let aA = toBase58String(an)
198- let aB = valueOrErrorMessage(assetInfo(an), (("Asset " + aA) + " doesn't exist"))
199- $Tuple3(aA, aB.name, aB.decimals)
202+ let aq = ap
203+ let aD = toBase58String(aq)
204+ let aE = valueOrErrorMessage(assetInfo(aq), (("Asset " + aD) + " doesn't exist"))
205+ $Tuple3(aD, aE.name, aE.decimals)
200206 }
201- else if ($isInstanceOf(am, "Unit"))
207+ else if ($isInstanceOf(ap, "Unit"))
202208 then {
203- let ao = am
209+ let ar = ap
204210 $Tuple3("WAVES", "WAVES", 8)
205211 }
206212 else throw("Match error")
207213 }
208214
209215
210-func aC (aD,aE) = {
211- let aF = value(assetInfo(aD)).decimals
212- let aG = value(assetInfo(aE)).decimals
213- let aH = ((aG - aF) + 8)
214- pow(10, 0, aH, 0, 0, HALFDOWN)
216+func aF (aG,aH) = {
217+ let aI = value(assetInfo(aG)).decimals
218+ let aJ = value(assetInfo(aH)).decimals
219+ let aK = ((aJ - aI) + 8)
220+ pow(10, 0, aK, 0, 0, HALFDOWN)
215221 }
216222
217223
218-func aI (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + r)), 0)
224+func aL (V,aM) = valueOrElse(getInteger(this, (((V + "_") + toString(aM)) + s)), 0)
219225
220226
221-func aK (S) = {
222- let aL = valueOrErrorMessage(getInteger(F, h), ((("No data on the key: " + h) + " at address ") + toString(F)))
223- let aM = valueOrErrorMessage(getInteger(F, i), ((("No data on the key: " + i) + " at address ") + toString(F)))
224- let aN = valueOrErrorMessage(getInteger(F, (S + f)), (((("No data on the key: " + S) + f) + " at address ") + toString(F)))
225- let aO = valueOrErrorMessage(getInteger(F, j), ((("No data on the key: " + j) + " at address ") + toString(F)))
226- let aP = valueOrErrorMessage(getInteger(F, (S + g)), (((("No data on the key: " + S) + g) + " at address ") + toString(F)))
227- let aQ = fraction(aL, aN, K)
228- let aR = fraction(aM, aP, K)
229- if (if ((aQ > aL))
227+func aN (V) = {
228+ let aO = valueOrErrorMessage(getInteger(I, i), ((("No data on the key: " + i) + " at address ") + toString(I)))
229+ let aP = valueOrErrorMessage(getInteger(I, j), ((("No data on the key: " + j) + " at address ") + toString(I)))
230+ let aQ = valueOrErrorMessage(getInteger(I, (V + f)), (((("No data on the key: " + V) + f) + " at address ") + toString(I)))
231+ let aR = valueOrErrorMessage(getInteger(I, k), ((("No data on the key: " + k) + " at address ") + toString(I)))
232+ let aS = valueOrElse(getInteger(I, (V + h)), 0)
233+ let aT = valueOrErrorMessage(getInteger(I, (V + g)), (((("No data on the key: " + V) + g) + " at address ") + toString(I)))
234+ let aU = fraction(aO, aQ, N)
235+ let aV = fraction(aP, aT, N)
236+ if (if ((aU > aO))
230237 then true
231- else (aR > aM))
238+ else (aV > aP))
232239 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
233- else $Tuple3(aQ, aO, aR)
240+ else $Tuple4(aU, aR, aV, aS)
234241 }
235242
236243
237-func aS (S) = {
238- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
239- let aU = valueOrElse(getInteger(this, (S + l)), height)
240- $Tuple2(aU, aT)
244+func aW (V) = {
245+ let aX = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
246+ let aY = valueOrElse(getInteger(this, (V + m)), height)
247+ $Tuple2(aY, aX)
241248 }
242249
243250
244-func aV (S,aW) = {
245- let aX = getInteger(this, (((S + "_") + toString(aW)) + n))
246- let aY = getInteger(this, (((S + "_") + toString(aW)) + m))
247- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
248- let aZ = {
249- let am = aX
250- if ($isInstanceOf(am, "Int"))
251+func aZ (V,ba) = {
252+ let bb = getInteger(this, (((V + "_") + toString(ba)) + o))
253+ let bc = getInteger(this, (((V + "_") + toString(ba)) + n))
254+ let aX = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
255+ let bd = {
256+ let ap = bb
257+ if ($isInstanceOf(ap, "Int"))
251258 then {
252- let aX = am
253- aX
259+ let bb = ap
260+ bb
254261 }
255- else aT
262+ else aX
256263 }
257- let ba = {
258- let am = aY
259- if ($isInstanceOf(am, "Int"))
264+ let be = {
265+ let ap = bc
266+ if ($isInstanceOf(ap, "Int"))
260267 then {
261- let aY = am
262- aY
268+ let bc = ap
269+ bc
263270 }
264271 else 0
265272 }
266- $Tuple2(aZ, ba)
273+ $Tuple2(bd, be)
267274 }
268275
269276
270-func bb (aU,aO,aT,bc,bd,be,bf,bg,bh) = if ((bd == 0))
277+func bf (aY,aR,aS,aX,bg,bh,bi,bj,bk,bl) = if ((bh == 0))
271278 then 0
272- else if ((aO > height))
273- then {
274- let bi = (be * (height - aU))
275- (aT + fraction(bi, bg, bd))
276- }
277- else if ((aU > aO))
279+ else if ((aS != 0))
280+ then if (if ((aR > height))
281+ then (aR == aS)
282+ else false)
278283 then {
279- let bi = (bc * (height - aU))
280- (aT + fraction(bi, bg, bd))
284+ let bm = (bi * (height - aY))
285+ (aX + fraction(bm, bk, bh))
281286 }
282- else {
283- let bj = (be * (aO - aU))
284- let bk = (aT + fraction(bj, bg, bd))
285- let bi = (bc * (height - aO))
286- (bk + fraction(bi, bg, bd))
287+ else if (if ((height > aR))
288+ then (aR != aS)
289+ else false)
290+ then {
291+ let bm = (bi * (height - aY))
292+ (aX + fraction(bm, bk, bh))
293+ }
294+ else if (if (if ((height > aR))
295+ then (aR == aS)
296+ else false)
297+ then (aY > aR)
298+ else false)
299+ then {
300+ let bm = (bg * (height - aY))
301+ (aX + fraction(bm, bk, bh))
302+ }
303+ else {
304+ let bn = (bi * (aR - aY))
305+ let bo = (aX + fraction(bn, bk, bh))
306+ let bm = (bg * (height - aR))
307+ (bo + fraction(bm, bk, bh))
308+ }
309+ else if ((aR > height))
310+ then {
311+ let bm = (bi * (height - aY))
312+ (aX + fraction(bm, bk, bh))
287313 }
314+ else if ((aY > aR))
315+ then {
316+ let bm = (bg * (height - aY))
317+ (aX + fraction(bm, bk, bh))
318+ }
319+ else {
320+ let bn = (bi * (aR - aY))
321+ let bo = (aX + fraction(bn, bk, bh))
322+ let bm = (bg * (height - aR))
323+ (bo + fraction(bm, bk, bh))
324+ }
288325
289326
290-func bl (S,bm,bh) = {
291- let bf = ax(S)
292- let bg = aC(aq, bf)
293- let bd = aw(S)
294- let bn = aS(S)
295- let aU = bn._1
296- let aT = bn._2
297- let bo = aK(S)
298- let bc = bo._1
299- let aO = bo._2
300- let be = bo._3
301- let bp = aV(S, bm)
302- let aX = bp._1
303- let ba = bp._2
304- let bq = bb(aU, aO, aT, bc, bd, be, bf, bg, bh)
305- let br = fraction(ba, (bq - aX), bg)
306- let bs = bq
307- $Tuple4(bs, bq, br, ba)
327+func bp (V,bq,bl) = {
328+ let bj = aA(V)
329+ let bk = aF(at, bj)
330+ let bh = az(V)
331+ let br = aW(V)
332+ let aY = br._1
333+ let aX = br._2
334+ let bs = aN(V)
335+ let bg = bs._1
336+ let aR = bs._2
337+ let bi = bs._3
338+ let aS = bs._4
339+ let bt = aZ(V, bq)
340+ let bb = bt._1
341+ let be = bt._2
342+ let bu = bf(aY, aR, aS, aX, bg, bh, bi, bj, bk, bl)
343+ let bv = fraction(be, (bu - bb), bk)
344+ let bw = bu
345+ $Tuple4(bw, bu, bv, be)
308346 }
309347
310348
311-func bt (S) = {
312- let bu = aS(S)
313- let aU = bu._1
314- let aT = bu._2
315- let bv = aK(S)
316- let bc = bv._1
317- let aO = bv._2
318- let be = bv._3
319- let bd = aw(S)
320- if ((bd == 0))
321- then if ((aO > height))
349+func bx (V) = {
350+ let by = aW(V)
351+ let aY = by._1
352+ let aX = by._2
353+ let bz = aN(V)
354+ let bg = bz._1
355+ let aR = bz._2
356+ let bi = bz._3
357+ let aS = bz._4
358+ let bh = az(V)
359+ if (if ((bh == 0))
360+ then (aS == 0)
361+ else false)
362+ then if ((aR > height))
322363 then {
323- let bi = (be * (height - aU))
324- bi
364+ let bm = (bi * (height - aY))
365+ bm
325366 }
326- else if ((aU > aO))
367+ else if ((aY > aR))
327368 then {
328- let bi = (bc * (height - aU))
329- bi
369+ let bm = (bg * (height - aY))
370+ bm
330371 }
331372 else {
332- let bj = (be * (aO - aU))
333- let bi = (bc * (height - aO))
334- (bi + bj)
373+ let bn = (bi * (aR - aY))
374+ let bm = (bg * (height - aR))
375+ (bm + bn)
335376 }
336- else 0
377+ else if (if ((bh == 0))
378+ then (aS != 0)
379+ else false)
380+ then if (if ((aR > height))
381+ then (aR == aS)
382+ else false)
383+ then {
384+ let bm = (bi * (height - aY))
385+ bm
386+ }
387+ else if (if ((height > aR))
388+ then (aR != aS)
389+ else false)
390+ then {
391+ let bm = (bi * (height - aY))
392+ bm
393+ }
394+ else if (if (if ((height > aR))
395+ then (aR == aS)
396+ else false)
397+ then (aY > aR)
398+ else false)
399+ then {
400+ let bm = (bg * (height - aY))
401+ bm
402+ }
403+ else {
404+ let bn = (bi * (aR - aY))
405+ let bm = (bg * (height - aR))
406+ (bm + bn)
407+ }
408+ else 0
337409 }
338410
339411
340-func bw (S,bx) = {
341- let by = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
342- if ((bx == by))
412+func bA (V,bB) = {
413+ let bC = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
414+ if ((bB == bC))
343415 then true
344416 else false
345417 }
346418
347419
348-func bz (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + p)), 0)
420+func bD (V,aM) = valueOrElse(getInteger(this, (((V + "_") + toString(aM)) + q)), 0)
349421
350422
351-@Callable(bA)
352-func init (bB) = if (isDefined(getString(this, o)))
423+@Callable(bE)
424+func init (bF) = if (isDefined(getString(this, p)))
353425 then throw("SWOP already initialized")
354426 else {
355- let bC = 100000000000000
356- let bD = Issue("SWOP", "SWOP protocol token", bC, 8, true)
357- let bE = calculateAssetId(bD)
358-[Issue("SWOP", "SWOP protocol token", bC, 8, true), StringEntry(o, toBase58String(bE))]
427+ let bG = 100000000000000
428+ let bH = Issue("SWOP", "SWOP protocol token", bG, 8, true)
429+ let bI = calculateAssetId(bH)
430+[Issue("SWOP", "SWOP protocol token", bG, 8, true), StringEntry(p, toBase58String(bI))]
359431 }
360432
361433
362434
363-@Callable(bA)
364-func initPoolShareFarming (S) = if ((bA.caller != this))
435+@Callable(bE)
436+func initPoolShareFarming (V) = if ((bE.caller != this))
365437 then throw("Only the DApp itself can call this function")
366438 else {
367- let bF = aK(S)
368- let bG = bF._1
369- let aO = bF._2
370- let be = bF._3
371-[IntegerEntry((S + d), 0), IntegerEntry((S + k), 0), IntegerEntry((S + l), height)]
439+ let bJ = aN(V)
440+ let bK = bJ._1
441+ let aR = bJ._2
442+ let bi = bJ._3
443+ let aS = bJ._4
444+[IntegerEntry((V + d), 0), IntegerEntry((V + l), 0), IntegerEntry((V + m), height)]
372445 }
373446
374447
375448
376-@Callable(bA)
377-func updatePoolInterest (S) = if ((bA.caller != G))
449+@Callable(bE)
450+func updatePoolInterest (V) = if ((bE.caller != J))
378451 then throw("Only the Admin itself can call this function")
379452 else {
380- let bH = bl(S, I, 0)
381- let bs = bH._1
382- let bq = bH._2
383- let br = bH._3
384- let ba = bH._4
385- let bI = aK(S)
386- let bG = bI._1
387- let aO = bI._2
388- let be = bI._3
389-[IntegerEntry((S + d), 0), IntegerEntry((S + k), bs), IntegerEntry((S + l), height)]
453+ let bL = bp(V, L, 0)
454+ let bw = bL._1
455+ let bu = bL._2
456+ let bv = bL._3
457+ let be = bL._4
458+ let bM = aN(V)
459+ let bK = bM._1
460+ let aR = bM._2
461+ let bi = bM._3
462+ let aS = bM._4
463+[IntegerEntry((V + l), bw), IntegerEntry((V + m), height)]
390464 }
391465
392466
393467
394-@Callable(bA)
395-func lockShareTokens (S) = {
396- let bJ = $Tuple2(bA.payments[0].amount, bA.payments[0].assetId)
397- let bh = bJ._1
398- let bx = bJ._2
399- let bK = ay(bx)
400- let bL = bK._1
401- let bM = bK._2
402- let bN = bK._3
403- let bO = bl(S, bA.caller, bh)
404- let bs = bO._1
405- let bq = bO._2
406- let br = bO._3
407- let ba = bO._4
408- let bP = (ba + bh)
409- let bQ = (aI(S, bA.caller) + br)
410- let bR = aw(S)
411- let bS = (bR + bh)
412- let bT = bz(S, bA.caller)
413- let bU = (bT + br)
414- let bV = [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bP), IntegerEntry((S + d), bS), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bU), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bQ)]
415- if ((0 >= bh))
468+@Callable(bE)
469+func lockShareTokens (V) = {
470+ let bN = $Tuple2(bE.payments[0].amount, bE.payments[0].assetId)
471+ let bl = bN._1
472+ let bB = bN._2
473+ let bO = aB(bB)
474+ let bP = bO._1
475+ let bQ = bO._2
476+ let bR = bO._3
477+ let bS = bp(V, bE.caller, bl)
478+ let bw = bS._1
479+ let bu = bS._2
480+ let bv = bS._3
481+ let be = bS._4
482+ let bT = (be + bl)
483+ let bU = (aL(V, bE.caller) + bv)
484+ let bV = az(V)
485+ let bW = (bV + bl)
486+ let bX = bD(V, bE.caller)
487+ let bY = (bX + bv)
488+ let bZ = [IntegerEntry((((V + "_") + toString(bE.caller)) + o), bw), IntegerEntry((((V + "_") + toString(bE.caller)) + n), bT), IntegerEntry((V + d), bW), IntegerEntry((V + l), bu), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bE.caller)) + q), bY), IntegerEntry((((V + "_") + toString(bE.caller)) + r), bv), IntegerEntry((((V + "_") + toString(bE.caller)) + s), bU)]
489+ if ((0 >= bl))
416490 then throw("You can't lock token")
417- else if (!(bw(S, bx)))
491+ else if (!(bA(V, bB)))
418492 then throw("Incorrect pmtAssetId")
419- else if (if (ar(Address(fromBase58String(S))))
420- then (as(Address(fromBase58String(S))) > height)
493+ else if (if (au(Address(fromBase58String(V))))
494+ then (av(Address(fromBase58String(V))) > height)
421495 else false)
422496 then {
423- let bW = ((((as(Address(fromBase58String(S))) - ad) + 1) / ae) - 1)
424- let bX = split(getStringValue(H, (((toString(bA.caller) + "_") + S) + "_user_pool_struc")), "_")
425- let bY = split(getStringValue(H, (S + "_pool_struc")), "_")
426- let bZ = split(valueOrElse(getString(H, (((toString(bA.caller) + "_") + S) + z)), ""), "_")
427- let ca = split(valueOrElse(getString(H, (S + y)), ""), "_")
428- let cb = ba
429- let cc = if ((toString(ah) == bX[2]))
430- then valueOrElse(parseInt(bZ[0]), 0)
431- else valueOrElse(parseInt(bX[1]), 0)
432- let cd = if ((toString(ah) == bY[2]))
433- then valueOrElse(parseInt(ca[0]), 0)
434- else valueOrElse(parseInt(bY[1]), 0)
435- let ce = bt(S)
436- if ((cc != 0))
497+ let ca = ((((av(Address(fromBase58String(V))) - ag) + 1) / ah) - 1)
498+ let cb = split(getStringValue(K, (((toString(bE.caller) + "_") + V) + "_user_pool_struc")), "_")
499+ let cc = split(getStringValue(K, (V + "_pool_struc")), "_")
500+ let cd = split(valueOrElse(getString(K, (((toString(bE.caller) + "_") + V) + A)), ""), "_")
501+ let ce = split(valueOrElse(getString(K, (V + z)), ""), "_")
502+ let cf = be
503+ let cg = if ((toString(ak) == cb[2]))
504+ then valueOrElse(parseInt(cd[0]), 0)
505+ else valueOrElse(parseInt(cb[1]), 0)
506+ let ch = if ((toString(ak) == cc[2]))
507+ then valueOrElse(parseInt(ce[0]), 0)
508+ else valueOrElse(parseInt(cc[1]), 0)
509+ let ci = bx(V)
510+ if ((cg != 0))
437511 then {
438- let cf = av(addressFromStringValue(S))
439- let cg = (fraction(cf, cc, cd) - cb)
440- if (if ((size(bZ) > 1))
441- then (valueOrElse(parseInt(bZ[1]), 0) >= bW)
512+ let cj = ay(addressFromStringValue(V))
513+ let ck = (fraction(cj, cg, ch) - cf)
514+ if (if ((size(cd) > 1))
515+ then (valueOrElse(parseInt(cd[1]), 0) >= ca)
442516 else false)
443517 then throw("You can't share token")
444- else if ((bh > cf))
445- then throw(("You can't share token more than " + toString(cf)))
446- else if ((cg > 0))
447- then if ((bR == 0))
448- then (bV ++ [Reissue(aq, ce, true), ScriptTransfer(G, ce, aq)])
449- else if ((cg >= bh))
450- then bV
451- else throw(("Your maximum share token is " + toString(cg)))
518+ else if ((bl > cj))
519+ then throw(("You can't share token more than " + toString(cj)))
520+ else if ((ck > 0))
521+ then if ((bV == 0))
522+ then (bZ ++ [Reissue(at, ci, true), ScriptTransfer(J, ci, at)])
523+ else if ((ck >= bl))
524+ then bZ
525+ else throw(("Your maximum share token is " + toString(ck)))
452526 else throw("You can't share token")
453527 }
454528 else throw("Your amount of token less than 0")
455529 }
456- else bV
530+ else bZ
457531 }
458532
459533
460534
461-@Callable(bA)
462-func withdrawShareTokens (S,ch) = {
463- let ci = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
464- let cj = bl(S, bA.caller, 1)
465- let bs = cj._1
466- let bq = cj._2
467- let br = cj._3
468- let ba = cj._4
469- let bP = (ba - ch)
470- let bQ = (aI(S, bA.caller) + br)
471- let bR = aw(S)
472- let bS = (bR - ch)
473- let bT = bz(S, bA.caller)
474- let bU = (bT + br)
475- if ((ch > ba))
535+@Callable(bE)
536+func withdrawShareTokens (V,cl) = {
537+ let cm = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
538+ let cn = bp(V, bE.caller, 1)
539+ let bw = cn._1
540+ let bu = cn._2
541+ let bv = cn._3
542+ let be = cn._4
543+ let bT = (be - cl)
544+ let bU = (aL(V, bE.caller) + bv)
545+ let bV = az(V)
546+ let bW = (bV - cl)
547+ let bX = bD(V, bE.caller)
548+ let bY = (bX + bv)
549+ if ((cl > be))
476550 then throw("Withdraw amount more then user locked amount")
477- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bP), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((S + d), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bQ), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bU), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, ch, ci)]
551+ else [IntegerEntry((((V + "_") + toString(bE.caller)) + o), bw), IntegerEntry((((V + "_") + toString(bE.caller)) + n), bT), IntegerEntry((V + l), bu), IntegerEntry((V + m), height), IntegerEntry((V + d), bW), IntegerEntry((((V + "_") + toString(bE.caller)) + s), bU), IntegerEntry((((V + "_") + toString(bE.caller)) + q), bY), IntegerEntry((((V + "_") + toString(bE.caller)) + r), bv), ScriptTransfer(bE.caller, cl, cm)]
478552 }
479553
480554
481555
482-@Callable(bA)
483-func claim (S) = {
484- let bd = aw(S)
485- let ck = aS(S)
486- let aU = ck._1
487- let aT = ck._2
488- let cl = aK(S)
489- let bc = cl._1
490- let aO = cl._2
491- let be = cl._3
492- let cm = bl(S, bA.caller, 1)
493- let bs = cm._1
494- let bq = cm._2
495- let br = cm._3
496- let ba = cm._4
497- let cn = (aI(S, bA.caller) + br)
498- let bT = bz(S, bA.caller)
499- let bU = (bT + br)
500- if ((cn == 0))
556+@Callable(bE)
557+func claim (V) = {
558+ let bh = az(V)
559+ let co = aW(V)
560+ let aY = co._1
561+ let aX = co._2
562+ let cp = aN(V)
563+ let bg = cp._1
564+ let aR = cp._2
565+ let bi = cp._3
566+ let aS = cp._4
567+ let cq = bp(V, bE.caller, 1)
568+ let bw = cq._1
569+ let bu = cq._2
570+ let bv = cq._3
571+ let be = cq._4
572+ let cr = (aL(V, bE.caller) + bv)
573+ let bX = bD(V, bE.caller)
574+ let bY = (bX + bv)
575+ if ((cr == 0))
501576 then throw("You have 0 available SWOP")
502- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + r), 0), Reissue(aq, cn, true), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bU), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, cn, aq)]
577+ else [IntegerEntry((((V + "_") + toString(bE.caller)) + o), bw), IntegerEntry((V + l), bu), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bE.caller)) + s), 0), Reissue(at, cr, true), IntegerEntry((((V + "_") + toString(bE.caller)) + q), bY), IntegerEntry((((V + "_") + toString(bE.caller)) + r), bv), ScriptTransfer(bE.caller, cr, at)]
503578 }
504579
505580
506-@Verifier(co)
507-func cp () = {
508- let am = co
509- sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
581+@Verifier(cs)
582+func ct () = {
583+ let ap = cs
584+ sigVerify(cs.bodyBytes, cs.proofs[0], cs.senderPublicKey)
510585 }
511586

github/deemru/w8io/169f3d6 
176.22 ms