tx · qEY43BeB3q2L8ET2eMYykUpCz25QG9bMyfPthx72jvD

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.01400000 Waves

2021.12.27 22:01 [1853049] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "qEY43BeB3q2L8ET2eMYykUpCz25QG9bMyfPthx72jvD", "fee": 1400000, "feeAssetId": null, "timestamp": 1640631694107, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "5jVBnx7EaE5unLGrXvcvsUkQZYzLtX2DxocHvxdLgVkuxefCzbEDDvxWq7uBcECoJq7hZAa4pWmG6RWgqqsj5Ras" ], "script": "base64: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AAAAAQUAAAAIc2xpcHBhZ2UJAAUUAAAAAgUAAAAGcGFzc2VkCQABmQAAAAEJAARMAAAAAgUAAAAHcmVhbEFtdAkABEwAAAACBQAAAAtleHBlY3RlZEFtdAUAAAADbmlsAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAAAAAphbUFzc2V0RGNtAAAACnByQXNzZXREY20AAAAFYW1BbXQAAAAFcHJBbXQEAAAAC2FtdEFzQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVhbUFtdAUAAAAKYW1Bc3NldERjbQQAAAAKcHJBc0FtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFcHJBbXQFAAAACnByQXNzZXREY20JAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAApwckFzQW10WDE4BQAAAAthbXRBc0FtdFgxOAEAAAAKY2FsY1ByaWNlcwAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAhhbXRBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAALaWR4QW10QXNEY20EAAAAB3ByQXNEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAACHByaWNlWDE4CQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAACGFtdEFzRGNtBQAAAAdwckFzRGNtBQAAAAVhbUFtdAUAAAAFcHJBbXQEAAAACGFtQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVhbUFtdAUAAAAIYW10QXNEY20EAAAACHByQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVwckFtdAUAAAAHcHJBc0RjbQQAAAAIbHBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWxwQW10BQAAAAZzY2FsZTgEAAAADWxwUHJJbkFtQXNYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAhhbUFtdFgxOAUAAAAIbHBBbXRYMTgEAAAADWxwUHJJblByQXNYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAhwckFtdFgxOAUAAAAIbHBBbXRYMTgJAARMAAAAAgUAAAAIcHJpY2VYMTgJAARMAAAAAgUAAAANbHBQckluQW1Bc1gxOAkABEwAAAACBQAAAA1scFBySW5QckFzWDE4BQAAAANuaWwBAAAAD2NhbGN1bGF0ZVByaWNlcwAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAABnByaWNlcwkBAAAACmNhbGNQcmljZXMAAAADBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABWxwQW10CQAETAAAAAIJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAAFAAAABnNjYWxlOAkABEwAAAACCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAABBQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB2Zyb21YMTgAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAgUAAAAGc2NhbGU4BQAAAANuaWwBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAAAAAZ0eElkNTgAAAAKcG10QXNzZXRJZAAAAAhwbXRMcEFtdAAAAAt1c2VyQWRkcmVzcwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABGxwSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAABGFtSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAABHBySWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAABWFtRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAFcHJEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQb29sU3QEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAARscElkAgAAAA1JbnZhbGlkIExQIGlkAAAACHF1YW50aXR5AwkBAAAAAiE9AAAAAgUAAAAEbHBJZAUAAAAKcG10QXNzZXRJZAkAAAIAAAABAgAAABFJbnZhbGlkIHBtdCBhc3NldAQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAALcG10THBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHBtdExwQW10BQAAAAZzY2FsZTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAALb3V0QW1BbXRYMTgJAAE8AAAAAwUAAAAMYW1CYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAALb3V0UHJBbXRYMTgJAAE8AAAAAwUAAAAMcHJCYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAAIb3V0QW1BbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAALb3V0QW1BbXRYMTgFAAAABWFtRGNtBAAAAAhvdXRQckFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRQckFtdFgxOAUAAAAFcHJEY20EAAAABXN0YXRlAwkAAAAAAAACBQAAAAZ0eElkNTgCAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRBbUFtdAMJAAAAAAAAAgUAAAAEYW1JZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEYW1JZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAIb3V0UHJBbXQDCQAAAAAAAAIFAAAABHBySWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAABHBySWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUdldEFjdGlvbkJ5VXNlcgAAAAIJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAhwbXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlBQAAAANuaWwJAAUcAAAACgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAARhbUlkBQAAAARwcklkBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAALY3VyUHJpY2VYMTgFAAAACnBvb2xTdGF0dXMFAAAABXN0YXRlAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAwAAAAGdHhJZDU4AAAACHNsaXBwYWdlAAAAB2luQW1BbXQAAAAGaW5BbUlkAAAAB2luUHJBbXQAAAAGaW5QcklkAAAAC3VzZXJBZGRyZXNzAAAABmlzRXZhbAAAAAZlbWl0THAAAAAKaXNPbmVBc3NldAAAAAZwbXRBbXQAAAAFcG10SWQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAARscElkCQACWQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAAB2FtSWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAAB3BySWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAACWluQW1JZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAC2lkeElBbXRBc0lkBAAAAAlpblBySWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhJUHJpY2VBc0lkBAAAAAZhbXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAhwcmljZURjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAACWlkeFBvb2xTdAQAAAAEbHBFbQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAARscElkAgAAAAhXciBscCBhcwAAAAhxdWFudGl0eQQAAAAJYW1CYWxhbmNlAwUAAAAGaXNFdmFsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtSWRTdHIDAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHYW1JZFN0cgcJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyBQAAAAZwbXRBbXQDBQAAAAppc09uZUFzc2V0CQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtSWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyBQAAAAdpbkFtQW10BAAAAAlwckJhbGFuY2UDBQAAAAZpc0V2YWwJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHcHJJZFN0cgMDBQAAAAppc09uZUFzc2V0CQAAAAAAAAIFAAAABXBtdElkBQAAAAdwcklkU3RyBwkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIFAAAABnBtdEFtdAMFAAAACmlzT25lQXNzZXQJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHcHJJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIFAAAAB2luUHJBbXQEAAAAD2luQW1Bc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAHaW5BbUFtdAUAAAAGYW10RGNtBAAAAA9pblByQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAAB2luUHJBbXQFAAAACHByaWNlRGNtBAAAAAx1c2VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABmFtdERjbQQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAACHByaWNlRGNtBAAAAANyZXMDCQAAAAAAAAIFAAAABGxwRW0AAAAAAAAAAAAEAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50BAAAAAtzbGlwcGFnZVgxOAUAAAAKemVyb0JpZ0ludAQAAAAIbHBBbXRYMTgJAAB2AAAABgkAATkAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAD2luUHJBc3NldEFtdFgxOAAAAAAAAAAAAAkAATYAAAABAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAAABQAAAARET1dOCQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAATcAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkAATcAAAACBQAAAAxhbUJhbGFuY2VYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALc2xpcHBhZ2VYMTgEAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAAxhbUJhbGFuY2VYMTgEAAAAD3NsaXBwYWdlUmVhbFgxOAkAATwAAAADCQEAAAADYWJzAAAAAQkAATgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAMdXNlclByaWNlWDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAALc2xpcHBhZ2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHNsaXBwYWdlBQAAAAZzY2FsZTgDAwkBAAAAAiE9AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAACnplcm9CaWdJbnQJAAE/AAAAAgUAAAAPc2xpcHBhZ2VSZWFsWDE4BQAAAAtzbGlwcGFnZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAD3NsaXBwYWdlUmVhbFgxOAIAAAADID4gCQABpgAAAAEFAAAAC3NsaXBwYWdlWDE4BAAAAA1scEVtaXNzaW9uWDE4CQEAAAAFdG9YMTgAAAACBQAAAARscEVtBQAAAAZzY2FsZTgEAAAACnByVmlhQW1YMTgJAAE8AAAAAwUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAKYW1WaWFQclgxOAkAATwAAAADBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAAAxleHBlY3RlZEFtdHMDCQABPwAAAAIFAAAACnByVmlhQW1YMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAAphbVZpYVByWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAUUAAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAApwclZpYUFtWDE4BAAAABFleHBBbXRBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMQQAAAATZXhwUHJpY2VBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMgQAAAAIbHBBbXRYMTgJAAE8AAAAAwUAAAANbHBFbWlzc2lvblgxOAUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAAMcHJCYWxhbmNlWDE4CQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAABFleHBBbXRBc3NldEFtdFgxOAUAAAAGYW10RGNtCQEAAAAHZnJvbVgxOAAAAAIFAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtBQAAAAtjdXJQcmljZVgxOAUAAAALc2xpcHBhZ2VYMTgEAAAACWNhbGNMcEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAANyZXMAAAACXzIEAAAADmNhbGNQckFzc2V0UG10CAUAAAADcmVzAAAAAl8zBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl80BQAAAAZzY2FsZTgEAAAADHNsaXBwYWdlQ2FsYwkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAkAAAIAAAABAgAAAAdMUCA8PSAwBAAAAAllbWl0THBBbXQDCQEAAAABIQAAAAEFAAAABmVtaXRMcAAAAAAAAAAAAAUAAAAJY2FsY0xwQW10BAAAAAZhbURpZmYJAABlAAAAAgUAAAAHaW5BbUFtdAUAAAAOY2FsY0FtQXNzZXRQbXQEAAAABnByRGlmZgkAAGUAAAACBQAAAAdpblByQW10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAALY29tbW9uU3RhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlQdXRBY3Rpb25CeVVzZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAKBQAAAA5jYWxjQW1Bc3NldFBtdAUAAAAOY2FsY1ByQXNzZXRQbXQFAAAACWVtaXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAACHNsaXBwYWdlBQAAAAxzbGlwcGFnZUNhbGMFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAANuaWwJAAUfAAAADQUAAAAJY2FsY0xwQW10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAEbHBFbQUAAAAEbHBJZAUAAAAKcG9vbFN0YXR1cwUAAAALY29tbW9uU3RhdGUFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAAZpbkFtSWQFAAAABmluUHJJZAEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQAAAAVvcmRlcgQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAAB2FtdEFzSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAABnByQXNJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeFByQXNJZAQAAAAKcG9vbFN0YXR1cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4UG9vbFN0BAAAAAhhbXRBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAALaWR4QW10QXNEY20EAAAAB3ByQXNEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAAD2FjY0FtdEFzQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbXRBc0lkBAAAAA5hY2NQckFzQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAZwckFzSWQEAAAAC2N1clByaWNlWDE4AwkAAAAAAAACCAUAAAAFb3JkZXIAAAAJb3JkZXJUeXBlBQAAAANCdXkJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAAIYW10QXNEY20FAAAAB3ByQXNEY20JAABkAAAAAgUAAAAPYWNjQW10QXNCYWxhbmNlCAUAAAAFb3JkZXIAAAAGYW1vdW50BQAAAA5hY2NQckFzQmFsYW5jZQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAhhbXRBc0RjbQUAAAAHcHJBc0RjbQkAAGUAAAACBQAAAA9hY2NBbXRBc0JhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAADmFjY1ByQXNCYWxhbmNlBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4AwMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADlBvb2xNYXRjaGVyRGlzBgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQIAAAANQWRtaW4gYmxvY2tlZAQAAAAKb3JBbXRBc3NldAgIBQAAAAVvcmRlcgAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQEAAAACm9yQW10QXNTdHIDCQAAAAAAAAIFAAAACm9yQW10QXNzZXQFAAAABHVuaXQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAACm9yQW10QXNzZXQEAAAACW9yUHJBc3NldAgIBQAAAAVvcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAQAAAAJb3JQckFzU3RyAwkAAAAAAAACBQAAAAlvclByQXNzZXQFAAAABHVuaXQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAACW9yUHJBc3NldAMDCQEAAAACIT0AAAACBQAAAApvckFtdEFzU3RyBQAAAAdhbXRBc0lkBgkBAAAAAiE9AAAAAgUAAAAJb3JQckFzU3RyBQAAAAZwckFzSWQJAAACAAAAAQIAAAAJV3IgYXNzZXRzBAAAAApvcmRlclByaWNlCAUAAAAFb3JkZXIAAAAFcHJpY2UEAAAACHByaWNlRGNtCQAAawAAAAMFAAAABnNjYWxlOAUAAAAHcHJBc0RjbQUAAAAIYW10QXNEY20EAAAADmNhc3RPcmRlclByaWNlCQEAAAAHdG9TY2FsZQAAAAMFAAAACm9yZGVyUHJpY2UFAAAABnNjYWxlOAUAAAAIcHJpY2VEY20EAAAAEWlzT3JkZXJQcmljZVZhbGlkAwkAAAAAAAACCAUAAAAFb3JkZXIAAAAJb3JkZXJUeXBlBQAAAANCdXkJAABnAAAAAgUAAAAIY3VyUHJpY2UFAAAADmNhc3RPcmRlclByaWNlCQAAZwAAAAIFAAAADmNhc3RPcmRlclByaWNlBQAAAAhjdXJQcmljZQYBAAAACWNvbW1vbkdldAAAAAEAAAABaQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAPMSBwbW50IGV4cGVjdGVkBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAGcG10QW10CAUAAAADcG10AAAABmFtb3VudAQAAAADcmVzCQEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAECQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10CAUAAAABaQAAAAZjYWxsZXIEAAAACG91dEFtQW10CAUAAAADcmVzAAAAAl8xBAAAAAhvdXRQckFtdAgFAAAAA3JlcwAAAAJfMgQAAAAKcG9vbFN0YXR1cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCAUAAAADcmVzAAAAAl85BAAAAAVzdGF0ZQgFAAAAA3JlcwAAAANfMTADAwkBAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAABgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQkAASwAAAACAgAAABBBZG1pb24gYmxvY2tlZDogCQABpAAAAAEFAAAACnBvb2xTdGF0dXMJAAUXAAAABQUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAZwbXRBbXQFAAAACnBtdEFzc2V0SWQFAAAABXN0YXRlAQAAAAljb21tb25QdXQAAAAJAAAABmNhbGxlcgAAAAR0eElkAAAAB2FtQXNQbXQAAAAHcHJBc1BtdAAAAAhzbGlwcGFnZQAAAAZlbWl0THAAAAAKaXNPbmVBc3NldAAAAAZwbXRBbXQAAAAFcG10SWQEAAAAAXIJAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAwFAAAABHR4SWQFAAAACHNsaXBwYWdlCAkBAAAABXZhbHVlAAAAAQUAAAAHYW1Bc1BtdAAAAAZhbW91bnQICQEAAAAFdmFsdWUAAAABBQAAAAdhbUFzUG10AAAAB2Fzc2V0SWQICQEAAAAFdmFsdWUAAAABBQAAAAdwckFzUG10AAAABmFtb3VudAgJAQAAAAV2YWx1ZQAAAAEFAAAAB3ByQXNQbXQAAAAHYXNzZXRJZAUAAAAGY2FsbGVyBwUAAAAGZW1pdExwBQAAAAppc09uZUFzc2V0BQAAAAZwbXRBbXQFAAAABXBtdElkBAAAAAZzdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAAXIAAAACXzgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAApQb29sUHV0RGlzBgkAAAAAAAACBQAAAAZzdGF0dXMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABCQABLAAAAAICAAAAD0FkbWluIGJsb2NrZWQ6IAkAAaQAAAABBQAAAAZzdGF0dXMFAAAAAXIAAAARAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAgAAAA9mYWN0b3J5Q29udHJhY3QAAAAQbWFuYWdlclB1YmxpY0tleQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABFwZXJtaXNzaW9uIGRlbmllZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5RmFjdENudHIAAAAABQAAAA9mYWN0b3J5Q29udHJhY3QJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleU1hblB1YktleQAAAAAFAAAAEG1hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAAAAAFpAQAAAANwdXQAAAACAAAABHNsaXAAAAAJYXV0b1N0YWtlBAAAAAdmYWN0Q2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAAC3N0YWtpbmdDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAAdmYWN0Q2ZnBQAAAA9pZHhGYWN0U3Rha0NudHICAAAACldyIHN0IGFkZHIEAAAACHNsaXBDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAAdmYWN0Q2ZnBQAAABBpZHhGYWN0U2xpcHBDbnRyAgAAAApXciBzbCBhZGRyAwkAAGYAAAACAAAAAAAAAAAABQAAAARzbGlwCQAAAgAAAAECAAAAEUludmFsaWQgc2xpcHBhZ2UuAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABAyIHBtbnRzIGV4cGVjdGVkBAAAAAZlc3RQdXQJAQAAAAljb21tb25QdXQAAAAJCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAggJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBQAAAARzbGlwBgcAAAAAAAAAAAACAAAAAAQAAAAJZW1pdExwQW10CAUAAAAGZXN0UHV0AAAAAl8yBAAAAAlscEFzc2V0SWQIBQAAAAZlc3RQdXQAAAACXzcEAAAABXN0YXRlCAUAAAAGZXN0UHV0AAAAAl85BAAAAAZhbURpZmYIBQAAAAZlc3RQdXQAAAADXzEwBAAAAAZwckRpZmYIBQAAAAZlc3RQdXQAAAADXzExBAAAAARhbUlkCAUAAAAGZXN0UHV0AAAAA18xMgQAAAAEcHJJZAgFAAAABmVzdFB1dAAAAANfMTMEAAAAB2VtaXRJbnYJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARlbWl0CQAETAAAAAIFAAAACWVtaXRMcEFtdAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB2VtaXRJbnYFAAAAB2VtaXRJbnYEAAAADHNsaXBwYWdlQUludgMJAABmAAAAAgUAAAAGYW1EaWZmAAAAAAAAAAAACQAD/AAAAAQFAAAACHNsaXBDbnRyAgAAAANwdXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAEYW1JZAUAAAAGYW1EaWZmBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAMc2xpcHBhZ2VBSW52BQAAAAxzbGlwcGFnZUFJbnYEAAAADHNsaXBwYWdlUEludgMJAABmAAAAAgUAAAAGcHJEaWZmAAAAAAAAAAAACQAD/AAAAAQFAAAACHNsaXBDbnRyAgAAAANwdXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAEcHJJZAUAAAAGcHJEaWZmBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAMc2xpcHBhZ2VQSW52BQAAAAxzbGlwcGFnZVBJbnYEAAAACGxwVHJuc2ZyAwUAAAAJYXV0b1N0YWtlBAAAAAtzbHBTdGFrZUludgkAA/wAAAAEBQAAAAtzdGFraW5nQ250cgIAAAAFc3Rha2UFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAJbHBBc3NldElkBQAAAAllbWl0THBBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAALc2xwU3Rha2VJbnYFAAAAC3NscFN0YWtlSW52BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJZW1pdExwQW10BQAAAAlscEFzc2V0SWQFAAAAA25pbAkABE4AAAACBQAAAAVzdGF0ZQUAAAAIbHBUcm5zZnIJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAJcHV0T25lVGtuAAAABQAAAAthbUFzc2V0UGFydAAAAAtwckFzc2V0UGFydAAAAAVvdXRMcAAAAAhzbGlwcGFnZQAAAAlhdXRvU3Rha2UEAAAAA2NmZwkBAAAAEGdldEZhY3RvcnlDb25maWcAAAAABAAAAAtzdGFraW5nQ250cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA9pZHhGYWN0U3Rha0NudHICAAAACldyIHN0IGFkZHIEAAAACHNsaXBDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeEZhY3RTbGlwcENudHICAAAACldyIHNsIGFkZHIEAAAAB2d3eENudHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAAA2NmZwUAAAARaWR4RmFjdEd3eFJld0NudHICAAAAC1dyIGd3eCBhZGRyBAAAAAdwb29sQ2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABGFtSWQJAAGRAAAAAgUAAAAHcG9vbENmZwUAAAAJaWR4QW1Bc0lkBAAAAARwcklkCQABkQAAAAIFAAAAB3Bvb2xDZmcFAAAACWlkeFByQXNJZAQAAAAFYW1EY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAdwb29sQ2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAFcHJEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAdwb29sQ2ZnBQAAAA1pZHhQcmljZUFzRGNtAwMDAwkAAGcAAAACAAAAAAAAAAAABQAAAAhzbGlwcGFnZQYJAABnAAAAAgAAAAAAAAAAAAUAAAALYW1Bc3NldFBhcnQGCQAAZwAAAAIAAAAAAAAAAAAFAAAAC3ByQXNzZXRQYXJ0BgkAAGcAAAACAAAAAAAAAAAABQAAAAVvdXRMcAkAAAIAAAABAgAAAAxXcm9uZyBwYXJhbXMDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAADzEgcG1udCBleHBlY3RlZAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAGcG10QW10CAUAAAADcG10AAAABmFtb3VudAQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAACXByQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAARwcklkBAAAAA0kdDAyMzIzMDIzNjEwAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAARhbUlkCQAFGAAAAAYJAABlAAAAAgUAAAAJYW1CYWxhbmNlBQAAAAZwbXRBbXQFAAAACXByQmFsYW5jZQkAAGUAAAACBQAAAAZwbXRBbXQFAAAAC2FtQXNzZXRQYXJ0BQAAAAtwckFzc2V0UGFydAAAAAAAAAAAAAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAEcHJJZAkABRgAAAAGBQAAAAlhbUJhbGFuY2UJAABlAAAAAgUAAAAJcHJCYWxhbmNlBQAAAAZwbXRBbXQAAAAAAAAAAAAAAAAAAAAAAAAJAABlAAAAAgUAAAAGcG10QW10BQAAAAtwckFzc2V0UGFydAUAAAALYW1Bc3NldFBhcnQJAAACAAAAAQIAAAAQd3JvbmcgcG10QXNzZXRJZAQAAAAMYW1CYWxhbmNlTm93CAUAAAANJHQwMjMyMzAyMzYxMAAAAAJfMQQAAAAMcHJCYWxhbmNlTm93CAUAAAANJHQwMjMyMzAyMzYxMAAAAAJfMgQAAAAMdmlydFN3YXBJbkFtCAUAAAANJHQwMjMyMzAyMzYxMAAAAAJfMwQAAAANdmlydFN3YXBPdXRQcggFAAAADSR0MDIzMjMwMjM2MTAAAAACXzQEAAAADHZpcnRTd2FwSW5QcggFAAAADSR0MDIzMjMwMjM2MTAAAAACXzUEAAAADXZpcnRTd2FwT3V0QW0IBQAAAA0kdDAyMzIzMDIzNjEwAAAAAl82BAAAAARkQ3VyCQAD/AAAAAQFAAAAB2d3eENudHICAAAABWNhbGNECQAETAAAAAIJAAGkAAAAAQUAAAAMYW1CYWxhbmNlTm93CQAETAAAAAIJAAGkAAAAAQUAAAAMcHJCYWxhbmNlTm93CQAETAAAAAIFAAAAAUEJAARMAAAAAgUAAAAFQW11bHQJAARMAAAAAgUAAAAFRGNvbnYFAAAAA25pbAUAAAADbmlsBAAAAARkTmV3CQAD/AAAAAQFAAAAB2d3eENudHICAAAABWNhbGNECQAETAAAAAIJAAGmAAAAAQkAATYAAAABCQAAZQAAAAIJAABkAAAAAgUAAAAMYW1CYWxhbmNlTm93BQAAAAx2aXJ0U3dhcEluQW0FAAAADXZpcnRTd2FwT3V0QW0JAARMAAAAAgkAAaYAAAABCQABNgAAAAEJAABlAAAAAgkAAGQAAAACBQAAAAxwckJhbGFuY2VOb3cFAAAADHZpcnRTd2FwSW5QcgUAAAANdmlydFN3YXBPdXRQcgkABEwAAAACBQAAAAFBCQAETAAAAAIFAAAABUFtdWx0CQAETAAAAAIFAAAABURjb252BQAAAANuaWwFAAAAA25pbAQAAAAHZEN1ckJJRwkAAacAAAABCQEAAAAIYXNTdHJpbmcAAAABBQAAAARkQ3VyBAAAAAdkTmV3QklHCQABpwAAAAEJAQAAAAhhc1N0cmluZwAAAAEFAAAABGROZXcEAAAABkQwdnNEMQkBAAAAD3ZhbGlkYXRlQWJzRGlmZgAAAAMFAAAAB2ROZXdCSUcFAAAAB2RDdXJCSUcJAAE2AAAAAQAAAAAAAAAD6AMJAAAAAAAAAgUAAAAGRDB2c0QxBQAAAAZEMHZzRDEEAAAABmVzdFB1dAkBAAAACWNvbW1vblB1dAAAAAkJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQACWQAAAAEFAAAABGFtSWQFAAAAC2FtQXNzZXRQYXJ0CQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkAAlkAAAABBQAAAARwcklkBQAAAAtwckFzc2V0UGFydAAAAAALpDt0AAYGBQAAAAZwbXRBbXQFAAAACnBtdEFzc2V0SWQEAAAAB2VzdGltTFAIBQAAAAZlc3RQdXQAAAACXzIEAAAACWxwQXNzZXRJZAgFAAAABmVzdFB1dAAAAAJfNwQAAAAFc3RhdGUIBQAAAAZlc3RQdXQAAAACXzkEAAAABmFtRGlmZggFAAAABmVzdFB1dAAAAANfMTAEAAAABnByRGlmZggFAAAABmVzdFB1dAAAAANfMTEEAAAACWxwQ2FsY1JlcwkBAAAAD3ZhbGlkYXRlQWJzRGlmZgAAAAMJAAE2AAAAAQUAAAAHZXN0aW1MUAkAATYAAAABBQAAAAVvdXRMcAkAATYAAAABBQAAAAhzbGlwcGFnZQQAAAAJZW1pdExwQW10CQABoAAAAAEIBQAAAAlscENhbGNSZXMAAAACXzIEAAAAB2VtaXRJbnYJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARlbWl0CQAETAAAAAIFAAAACWVtaXRMcEFtdAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB2VtaXRJbnYFAAAAB2VtaXRJbnYEAAAADHNsaXBwYWdlQUludgMJAABmAAAAAgUAAAAGYW1EaWZmAAAAAAAAAAAACQAD/AAAAAQFAAAACHNsaXBDbnRyAgAAAANwdXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkAAlkAAAABBQAAAARhbUlkBQAAAAZhbURpZmYFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAxzbGlwcGFnZUFJbnYFAAAADHNsaXBwYWdlQUludgQAAAAMc2xpcHBhZ2VQSW52AwkAAGYAAAACBQAAAAZwckRpZmYAAAAAAAAAAAAJAAP8AAAABAUAAAAIc2xpcENudHICAAAAA3B1dAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQACWQAAAAEFAAAABHBySWQFAAAABnByRGlmZgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADHNsaXBwYWdlUEludgUAAAAMc2xpcHBhZ2VQSW52BAAAAAhscFRybnNmcgMFAAAACWF1dG9TdGFrZQQAAAALc2xwU3Rha2VJbnYJAAP8AAAABAUAAAALc3Rha2luZ0NudHICAAAABXN0YWtlBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAAJZW1pdExwQW10BQAAAANuaWwDCQAAAAAAAAIFAAAAC3NscFN0YWtlSW52BQAAAAtzbHBTdGFrZUludgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACWVtaXRMcEFtdAUAAAAJbHBBc3NldElkBQAAAANuaWwJAAROAAAAAgUAAAAFc3RhdGUFAAAACGxwVHJuc2ZyCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApwdXRGb3JGcmVlAAAAAQAAAAttYXhTbGlwcGFnZQMJAABmAAAAAgAAAAAAAAAAAAUAAAALbWF4U2xpcHBhZ2UJAAACAAAAAQIAAAAQSW52YWxpZCBzbGlwcGFnZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAAATMiBwYXltZW50cyBleHBlY3RlZAQAAAAGZXN0UHV0CQEAAAAJY29tbW9uUHV0AAAACQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQUAAAALbWF4U2xpcHBhZ2UHBwAAAAAAAAAAAAIAAAAACAUAAAAGZXN0UHV0AAAAAl85AAAAAWkBAAAAA2dldAAAAAAEAAAAA3JlcwkBAAAACWNvbW1vbkdldAAAAAEFAAAAAWkEAAAACW91dEFtdEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAANyZXMAAAACXzIEAAAABnBtdEFtdAgFAAAAA3JlcwAAAAJfMwQAAAAKcG10QXNzZXRJZAgFAAAAA3JlcwAAAAJfNAQAAAAFc3RhdGUIBQAAAANyZXMAAAACXzUEAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAAZwbXRBbXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10BQAAAANuaWwDCQAAAAAAAAIFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACWdldE9uZVRrbgAAAAUAAAALYW1Bc3NldFN3YXAAAAALcHJBc3NldFN3YXAAAAAJb3V0QW1vdW50AAAACm91dEFzc2V0SWQAAAAIc2xpcHBhZ2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAEjEgcGF5bWVudCBleHBlY3RlZAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABGxwSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAABGFtSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAABHBySWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAABWFtRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAFcHJEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQb29sU3QEAAAABGZjZmcJAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAQAAAAHZ3d4Q250cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAEZmNmZwUAAAARaWR4RmFjdEd3eFJld0NudHICAAAACldyIHNsIGFkZHIDAwkBAAAAAiE9AAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEYW1JZAkBAAAAAiE9AAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEcHJJZAcJAAACAAAAAQIAAAAJV3Igb3V0IGFzBAAAAA1yZXN1bHRBc3NldElkAwkAAAAAAAACBQAAAApvdXRBc3NldElkBQAAAARhbUlkBQAAAARhbUlkBQAAAARwcklkBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAC3VzZXJBZGRyZXNzCAUAAAABaQAAAAZjYWxsZXIEAAAABnR4SWQ1OAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAApwbXRBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABnBtdEFtdAgFAAAAA3BtdAAAAAZhbW91bnQDAwMDCQAAZgAAAAIAAAAAAAAAAAAFAAAACHNsaXBwYWdlBgkAAGYAAAACAAAAAAAAAAAABQAAAAthbUFzc2V0U3dhcAYJAABmAAAAAgAAAAAAAAAAAAUAAAALcHJBc3NldFN3YXAGCQAAZgAAAAIAAAAAAAAAAAAFAAAACW91dEFtb3VudAkAAAIAAAABAgAAAAxXcm9uZyBwYXJhbXMDCQEAAAACIT0AAAACBQAAAARscElkCQACWAAAAAEFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAKSW52YWxpZCBMUAQAAAABcgkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEFAAAACnBtdEFzc2V0SWQFAAAABnBtdEFtdAgFAAAAAWkAAAAGY2FsbGVyBAAAAAplc3RpbUFtQW10CAUAAAABcgAAAAJfMQQAAAAKZXN0aW1QckFtdAgFAAAAAXIAAAACXzIEAAAACWFtQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAARhbUlkBAAAAAlwckJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEcHJJZAQAAAANJHQwMjgyNzYyODc2MAMJAAAAAAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEYW1JZAkABRkAAAAHCQAAZQAAAAIFAAAACWFtQmFsYW5jZQUAAAAKZXN0aW1BbUFtdAkAAGUAAAACBQAAAAlwckJhbGFuY2UFAAAACmVzdGltUHJBbXQJAABlAAAAAgUAAAAJb3V0QW1vdW50BQAAAAplc3RpbUFtQW10BQAAAAtwckFzc2V0U3dhcAAAAAAAAAAAAAAAAAAAAAAAAAkAAGQAAAACBQAAAAplc3RpbUFtQW10BQAAAAthbUFzc2V0U3dhcAMJAAAAAAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEcHJJZAkABRkAAAAHCQAAZQAAAAIFAAAACWFtQmFsYW5jZQUAAAAKZXN0aW1BbUFtdAkAAGUAAAACBQAAAAlwckJhbGFuY2UFAAAACmVzdGltUHJBbXQAAAAAAAAAAAAAAAAAAAAAAAAJAABlAAAAAgUAAAAJb3V0QW1vdW50BQAAAAplc3RpbVByQW10BQAAAAthbUFzc2V0U3dhcAkAAGQAAAACBQAAAAplc3RpbVByQW10BQAAAAtwckFzc2V0U3dhcAkAAAIAAAABAgAAABB3cm9uZyBvdXRBc3NldElkBAAAAAxhbUJhbGFuY2VOb3cIBQAAAA0kdDAyODI3NjI4NzYwAAAAAl8xBAAAAAxwckJhbGFuY2VOb3cIBQAAAA0kdDAyODI3NjI4NzYwAAAAAl8yBAAAAAx2aXJ0U3dhcEluQW0IBQAAAA0kdDAyODI3NjI4NzYwAAAAAl8zBAAAAA12aXJ0U3dhcE91dFByCAUAAAANJHQwMjgyNzYyODc2MAAAAAJfNAQAAAAMdmlydFN3YXBJblByCAUAAAANJHQwMjgyNzYyODc2MAAAAAJfNQQAAAANdmlydFN3YXBPdXRBbQgFAAAADSR0MDI4Mjc2Mjg3NjAAAAACXzYEAAAACHRvdGFsR2V0CAUAAAANJHQwMjgyNzYyODc2MAAAAAJfNwQAAAAHaW52TGVmdAkAA/wAAAAEBQAAAAdnd3hDbnRyAgAAAAVjYWxjRAkABEwAAAACCQABpAAAAAEFAAAADGFtQmFsYW5jZU5vdwkABEwAAAACCQABpAAAAAEFAAAADHByQmFsYW5jZU5vdwkABEwAAAACBQAAAAFBCQAETAAAAAIFAAAABUFtdWx0CQAETAAAAAIFAAAABURjb252BQAAAANuaWwFAAAAA25pbAQAAAAIaW52UmlnaHQJAAP8AAAABAUAAAAHZ3d4Q250cgIAAAAFY2FsY0QJAARMAAAAAgkAAaQAAAABCQAAZAAAAAIJAABlAAAAAgUAAAAMYW1CYWxhbmNlTm93BQAAAAx2aXJ0U3dhcEluQW0FAAAADXZpcnRTd2FwT3V0QW0JAARMAAAAAgkAAaQAAAABCQAAZQAAAAIJAABkAAAAAgUAAAAMcHJCYWxhbmNlTm93BQAAAA12aXJ0U3dhcE91dFByBQAAAAx2aXJ0U3dhcEluUHIJAARMAAAAAgUAAAABQQkABEwAAAACBQAAAAVBbXVsdAkABEwAAAACBQAAAAVEY29udgUAAAADbmlsBQAAAANuaWwEAAAABkQwdnNEMQkBAAAAD3ZhbGlkYXRlQWJzRGlmZgAAAAMJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAAIaW52UmlnaHQJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAAHaW52TGVmdAkAATYAAAABAAAAAAAAAAPoAwkAAAAAAAACBQAAAAZEMHZzRDEFAAAABkQwdnNEMQQAAAANYW1vdW50MlJldHVybgkBAAAAD3ZhbGlkYXRlQWJzRGlmZgAAAAMJAAE2AAAAAQUAAAAIdG90YWxHZXQJAAE2AAAAAQUAAAAJb3V0QW1vdW50CQABNgAAAAEFAAAACHNsaXBwYWdlAwkAAAAAAAACBQAAAA1hbW91bnQyUmV0dXJuBQAAAA1hbW91bnQyUmV0dXJuBAAAAAtyZXN1bHRUdXBsZQMJAAAAAAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEYW1JZAkABRQAAAACCQABoAAAAAEIBQAAAA1hbW91bnQyUmV0dXJuAAAAAl8yAAAAAAAAAAAACQAFFAAAAAIAAAAAAAAAAAAJAAGgAAAAAQgFAAAADWFtb3VudDJSZXR1cm4AAAACXzIEAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAAFc3RhdGUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MDCQAAAAAAAAIFAAAADXJlc3VsdEFzc2V0SWQFAAAABGFtSWQIBQAAAAtyZXN1bHRUdXBsZQAAAAJfMQgFAAAAC3Jlc3VsdFR1cGxlAAAAAl8yAwkAAAAAAAACBQAAAA1yZXN1bHRBc3NldElkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAA1yZXN1bHRBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlHZXRBY3Rpb25CeVVzZXIAAAACCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAZ0eElkNTgJAQAAABFkYXRhR2V0QWN0aW9uSW5mbwAAAAYIBQAAAAtyZXN1bHRUdXBsZQAAAAJfMQgFAAAAC3Jlc3VsdFR1cGxlAAAAAl8yBQAAAAZwbXRBbXQFAAAACGN1clByaWNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQUAAAADbmlsAwkAAAAAAAACBQAAAAVzdGF0ZQUAAAAFc3RhdGUEAAAABGJ1cm4JAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARidXJuCQAETAAAAAIFAAAABnBtdEFtdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAAZwbXRBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAAEYnVybgUAAAAEYnVybgUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACWdldE5vTGVzcwAAAAIAAAASbm9MZXNzVGhlbkFtdEFzc2V0AAAAFG5vTGVzc1RoZW5QcmljZUFzc2V0BAAAAANyZXMJAQAAAAljb21tb25HZXQAAAABBQAAAAFpBAAAAAhvdXRBbUFtdAgFAAAAA3JlcwAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAANyZXMAAAACXzIEAAAABnBtdEFtdAgFAAAAA3JlcwAAAAJfMwQAAAAKcG10QXNzZXRJZAgFAAAAA3JlcwAAAAJfNAQAAAAFc3RhdGUIBQAAAANyZXMAAAACXzUDCQAAZgAAAAIFAAAAEm5vTGVzc1RoZW5BbXRBc3NldAUAAAAIb3V0QW1BbXQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJRmFpbGVkOiAgCQABpAAAAAEFAAAACG91dEFtQW10AgAAAAMgPCAJAAGkAAAAAQUAAAASbm9MZXNzVGhlbkFtdEFzc2V0AwkAAGYAAAACBQAAABRub0xlc3NUaGVuUHJpY2VBc3NldAUAAAAIb3V0UHJBbXQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIRmFpbGVkOiAJAAGkAAAAAQUAAAAIb3V0UHJBbXQCAAAAAyA8IAkAAaQAAAABBQAAABRub0xlc3NUaGVuUHJpY2VBc3NldAQAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARidXJuCQAETAAAAAIFAAAABnBtdEFtdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAAZwbXRBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAAAVzdGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANdW5zdGFrZUFuZEdldAAAAAEAAAAGYW1vdW50BAAAAA1jaGVja1BheW1lbnRzAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABFObyBwbW50cyBleHBlY3RlZAYDCQAAAAAAAAIFAAAADWNoZWNrUGF5bWVudHMFAAAADWNoZWNrUGF5bWVudHMEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAApmYWN0b3J5Q2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4TFBBc0lkBAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAD2lkeEZhY3RTdGFrQ250cgIAAAAKV3Igc3QgYWRkcgQAAAAKdW5zdGFrZUludgkAA/wAAAAEBQAAAA9zdGFraW5nQ29udHJhY3QCAAAAB3Vuc3Rha2UJAARMAAAAAgkAAlgAAAABBQAAAAlscEFzc2V0SWQJAARMAAAAAgUAAAAGYW1vdW50BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAKdW5zdGFrZUludgUAAAAKdW5zdGFrZUludgQAAAABcgkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEFAAAACWxwQXNzZXRJZAUAAAAGYW1vdW50CAUAAAABaQAAAAZjYWxsZXIEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAAXIAAAACXzkEAAAABXN0YXRlCAUAAAABcgAAAANfMTAEAAAAD2NoZWNrUG9vbFN0YXR1cwMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABCQABLAAAAAICAAAAD0FkbWluIGJsb2NrZWQ6IAkAAaQAAAABBQAAAApwb29sU3RhdHVzBgMJAAAAAAAAAgUAAAAPY2hlY2tQb29sU3RhdHVzBQAAAA9jaGVja1Bvb2xTdGF0dXMEAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAAZhbW91bnQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAJbHBBc3NldElkBQAAAAZhbW91bnQFAAAAA25pbAMJAAAAAAAAAgUAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAAAVzdGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAIYWN0aXZhdGUAAAACAAAAC2FtdEFzc2V0U3RyAAAADXByaWNlQXNzZXRTdHIDCQEAAAACIT0AAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkABCUAAAABBQAAAA9mYWN0b3J5Q29udHJhY3QJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkCQAFFAAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleUFtdEFzc2V0AAAAAAUAAAALYW10QXNzZXRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVByaWNlQXNzZXQAAAAABQAAAA1wcmljZUFzc2V0U3RyBQAAAANuaWwCAAAAB3N1Y2Nlc3MAAAABaQEAAAAcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAAAAABaQEAAAAcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQAAAAEAAAAHYXNzZXRJZAkABRQAAAACBQAAAANuaWwJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHYXNzZXRJZAAAAAFpAQAAABljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAAGcHJpY2VzCQEAAAAKY2FsY1ByaWNlcwAAAAMFAAAABWFtQW10BQAAAAVwckFtdAUAAAAFbHBBbXQJAAUUAAAAAgUAAAADbmlsCQAETAAAAAIJAAGmAAAAAQkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAAJAARMAAAAAgkAAaYAAAABCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAQkABEwAAAACCQABpgAAAAEJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAACBQAAAANuaWwAAAABaQEAAAAWZnJvbVgxOFdyYXBwZXJSRUFET05MWQAAAAIAAAADdmFsAAAAD3Jlc3VsdFNjYWxlTXVsdAkABRQAAAACBQAAAANuaWwJAQAAAAdmcm9tWDE4AAAAAgkAAacAAAABBQAAAAN2YWwFAAAAD3Jlc3VsdFNjYWxlTXVsdAAAAAFpAQAAABR0b1gxOFdyYXBwZXJSRUFET05MWQAAAAIAAAAHb3JpZ1ZhbAAAAA1vcmlnU2NhbGVNdWx0CQAFFAAAAAIFAAAAA25pbAkAAaYAAAABCQEAAAAFdG9YMTgAAAACBQAAAAdvcmlnVmFsBQAAAA1vcmlnU2NhbGVNdWx0AAAAAWkBAAAAHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQAAAAIAAAAIcHJBbXRYMTgAAAAIYW1BbXRYMTgJAAUUAAAAAgUAAAADbmlsCQABpgAAAAEJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACCQABpwAAAAEFAAAACHByQW10WDE4CQABpwAAAAEFAAAACGFtQW10WDE4AAAAAWkBAAAAI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZAAAACQAAAAZ0eElkNTgAAAAIc2xpcHBhZ2UAAAAHaW5BbUFtdAAAAAZpbkFtSWQAAAAHaW5QckFtdAAAAAZpblBySWQAAAAHdXNyQWRkcgAAAAZpc0V2YWwAAAAGZW1pdExwCQAFFAAAAAIFAAAAA25pbAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAADAUAAAAGdHhJZDU4BQAAAAhzbGlwcGFnZQUAAAAHaW5BbUFtdAUAAAAGaW5BbUlkBQAAAAdpblByQW10BQAAAAZpblBySWQFAAAAB3VzckFkZHIFAAAABmlzRXZhbAUAAAAGZW1pdExwBwAAAAAAAAAAAAIAAAAAAAAAAWkBAAAAI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZAAAABAAAAAZ0eElkNTgAAAAHcG10QXNJZAAAAAhwbXRMcEFtdAAAAAd1c3JBZGRyBAAAAANyZXMJAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQFAAAABnR4SWQ1OAUAAAAHcG10QXNJZAUAAAAIcG10THBBbXQJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB3VzckFkZHIJAAUUAAAAAgUAAAADbmlsCQAFHAAAAAoIBQAAAANyZXMAAAACXzEIBQAAAANyZXMAAAACXzIIBQAAAANyZXMAAAACXzMIBQAAAANyZXMAAAACXzQIBQAAAANyZXMAAAACXzUIBQAAAANyZXMAAAACXzYIBQAAAANyZXMAAAACXzcJAAGmAAAAAQgFAAAAA3JlcwAAAAJfOAgFAAAAA3JlcwAAAAJfOQgFAAAAA3JlcwAAAANfMTAAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAABW9yZGVyBQAAAAckbWF0Y2gwBAAAAAdtdGNoUHViCQEAAAATZ2V0TWF0Y2hlclB1Yk9yRmFpbAAAAAAEAAAAA29yVgkBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEFAAAABW9yZGVyBAAAAAVzbmRyVgkAAfQAAAADCAUAAAAFb3JkZXIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAVvcmRlcgAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAVvcmRlcgAAAA9zZW5kZXJQdWJsaWNLZXkEAAAABW10Y2hWCQAB9AAAAAMIBQAAAAVvcmRlcgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAABW9yZGVyAAAABnByb29mcwAAAAAAAAAAAQUAAAAHbXRjaFB1YgMDAwUAAAADb3JWBQAAAAVzbmRyVgcFAAAABW10Y2hWBwYJAQAAAA90aHJvd09yZGVyRXJyb3IAAAADBQAAAANvclYFAAAABXNuZHJWBQAAAAVtdGNoVgQAAAAFYWRtaW4JAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAADGtleU1hblB1YktleQAAAAAFAAAABUVNUFRZAwkAAAAAAAACBQAAAAVhZG1pbgUAAAAFRU1QVFkJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABBQAAAAVhZG1pbufi4ZY=", "chainId": 84, "height": 1853049, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HMuTWWd5aC9c7iaMCLMYCH1EdrenMV2FnTXsjZcYs5yR Next: HHeuM2zhjjZfidLv6CVqg3kfzAaPBmNhia4jUGVJVnAi Diff:
OldNewDifferences
1111
1212 let e = toBigInt(1)
1313
14-let f = "50"
14+let f = "100000000"
1515
16-let g = "100000000"
16+let g = "1"
1717
18-let h = "1"
18+let h = "__"
1919
20-let i = "__"
20+let i = ""
2121
22-let j = ""
22+let j = 1
2323
24-let k = 1
24+let k = 2
2525
26-let l = 2
26+let l = 3
2727
28-let m = 3
28+let m = 4
2929
30-let n = 4
30+let n = 1
3131
32-let o = 1
32+let o = 2
3333
34-let p = 2
34+let p = 3
3535
36-let q = 3
36+let q = 4
3737
38-let r = 4
38+let r = 5
3939
40-let s = 5
40+let s = 6
4141
42-let t = 6
42+let t = 7
4343
44-let u = 7
44+let u = 8
4545
46-let v = 8
46+let v = 9
4747
48-let w = 9
48+let w = 1
4949
50-let x = 1
50+let x = 7
5151
52-let y = 7
52+let y = 10
5353
54-let z = 10
55-
56-func A (B,C) = fraction(toBigInt(B), c, toBigInt(C))
54+func z (A,B) = fraction(toBigInt(A), c, toBigInt(B))
5755
5856
59-func D (E,F) = toInt(fraction(E, toBigInt(F), c))
57+func C (D,E) = toInt(fraction(D, toBigInt(E), c))
6058
6159
62-func G (H,I,J) = fraction(H, I, J)
60+func F (G,H,I) = fraction(G, H, I)
6361
6462
65-func K (E) = if ((d > E))
66- then -(E)
67- else E
63+func J (D) = if ((d > D))
64+ then -(D)
65+ else D
6866
6967
70-func L () = "%s__factoryContract"
68+func K () = "%s__factoryContract"
7169
7270
73-func M () = "%s__managerPublicKey"
71+func L () = "%s__managerPublicKey"
7472
7573
76-func N () = "%s%s__price__last"
74+func M () = "%s%s__price__last"
7775
7876
79-func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], i)
77+func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
8078
8179
82-func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
80+func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
8381
8482
85-func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
83+func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
8684
8785
88-func V () = "%s__amountAsset"
86+func U () = "%s__amountAsset"
8987
9088
91-func W () = "%s__priceAsset"
89+func V () = "%s__priceAsset"
90+
91+
92+func W () = "%s__amp"
9293
9394
9495 func X () = "%s__factoryConfig"
112113 func ah (ai,aj,ak) = throw(((((("Failed: orderValid=" + toString(ai)) + " senderValid=") + toString(aj)) + " matcherValid=") + toString(ak)))
113114
114115
115-func al (E) = {
116- let am = E
116+func al (D) = {
117+ let am = D
117118 if ($isInstanceOf(am, "String"))
118119 then {
119120 let an = am
129130 func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
130131
131132
132-let as = addressFromStringValue(ao(this, L()))
133+let as = addressFromStringValue(ao(this, K()))
133134
134-func at () = valueOrElse(getBoolean(as, ae()), false)
135+let at = ao(this, W())
136+
137+func au () = valueOrElse(getBoolean(as, ae()), false)
135138
136139
137-func au () = fromBase58String(ao(as, Y()))
140+func av () = fromBase58String(ao(as, Y()))
138141
139142
140-func av () = {
141- let aw = ao(this, V())
142- let ax = ao(this, W())
143- let ay = ar(as, ac(ax))
144- let aa = ar(as, ac(aw))
145- split(ao(as, Z(toString(aa), toString(ay))), i)
143+func aw () = {
144+ let ax = ao(this, U())
145+ let ay = ao(this, V())
146+ let az = ar(as, ac(ay))
147+ let aa = ar(as, ac(ax))
148+ split(ao(as, Z(toString(aa), toString(az))), h)
146149 }
147150
148151
149-func az () = split(ao(as, X()), i)
152+func aA () = split(ao(as, X()), h)
150153
151154
152-func aA (aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK)], i)
155+func aB (aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL)], h)
153156
154157
155-func aL (aM,aN,aO,aE,aH,aI) = makeString(["%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aE), toString(aH), toString(aI)], i)
158+func aM (aN,aO,aP,aF,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aF), toString(aI), toString(aJ)], h)
156159
157160
158-func aP (aQ) = if ((aQ == "WAVES"))
161+func aQ (aR) = if ((aR == "WAVES"))
159162 then wavesBalance(this).available
160- else assetBalance(this, fromBase58String(aQ))
163+ else assetBalance(this, fromBase58String(aR))
161164
162165
163-func aR (aS,aT) = fraction(aS, c, aT)
166+func aS (aT,aU) = fraction(aT, c, aU)
164167
165168
166-func aU (aV,aW,aX) = {
167- let aY = fraction((aV - aW), b, aW)
168- let aZ = ((aX - K(aY)) > d)
169- if (!(aZ))
170- then throw(((("Too big slippage: " + toString(aY)) + " vs ") + toString(aX)))
171- else $Tuple2(aZ, min([aV, aW]))
169+func aV (aW,aX,aY) = {
170+ let aZ = fraction((aW - aX), b, aX)
171+ let ba = ((aY - J(aZ)) > d)
172+ if (!(ba))
173+ then throw(((("Too big slippage: " + toString(aZ)) + " vs ") + toString(aY)))
174+ else $Tuple2(ba, min([aW, aX]))
172175 }
173176
174177
175-func ba (bb,bc,bd,be) = {
176- let bf = A(bd, bb)
177- let bg = A(be, bc)
178- aR(bg, bf)
178+func bb (bc,bd,be,bf) = {
179+ let bg = z(be, bc)
180+ let bh = z(bf, bd)
181+ aS(bh, bg)
179182 }
180183
181184
182-func bh (bd,be,bi) = {
183- let bj = av()
184- let bk = parseIntValue(bj[t])
185- let bl = parseIntValue(bj[u])
186- let bm = ba(bk, bl, bd, be)
187- let aT = A(bd, bk)
188- let aS = A(be, bl)
189- let bn = A(bi, a)
190- let bo = aR(aT, bn)
191- let bp = aR(aS, bn)
192-[bm, bo, bp]
185+func bi (be,bf,bj) = {
186+ let bk = aw()
187+ let bl = parseIntValue(bk[s])
188+ let bm = parseIntValue(bk[t])
189+ let bn = bb(bl, bm, be, bf)
190+ let aU = z(be, bl)
191+ let aT = z(bf, bm)
192+ let bo = z(bj, a)
193+ let bp = aS(aU, bo)
194+ let bq = aS(aT, bo)
195+[bn, bp, bq]
193196 }
194197
195198
196-func bq (bd,be,bi) = {
197- let br = bh(bd, be, bi)
198-[D(br[0], a), D(br[1], a), D(br[2], a)]
199+func br (be,bf,bj) = {
200+ let bs = bi(be, bf, bj)
201+[C(bs[0], a), C(bs[1], a), C(bs[2], a)]
199202 }
200203
201204
202-func bs (bt,bu,bv,bw) = {
203- let bj = av()
204- let bx = bj[q]
205- let by = bj[r]
206- let bz = bj[s]
207- let bA = parseIntValue(bj[t])
208- let bB = parseIntValue(bj[u])
209- let bC = bj[p]
210- let bD = valueOrErrorMessage(assetInfo(fromBase58String(bx)), "Invalid LP id").quantity
211- if ((bx != bu))
205+func bt (bu,bv,bw,bx) = {
206+ let bk = aw()
207+ let by = bk[p]
208+ let bz = bk[q]
209+ let bA = bk[r]
210+ let bB = parseIntValue(bk[s])
211+ let bC = parseIntValue(bk[t])
212+ let bD = bk[o]
213+ let bE = valueOrErrorMessage(assetInfo(fromBase58String(by)), "Invalid LP id").quantity
214+ if ((by != bv))
212215 then throw("Invalid pmt asset")
213216 else {
214- let bE = aP(by)
215- let bF = A(bE, bA)
216- let bG = aP(bz)
217- let bH = A(bG, bB)
218- let bI = aR(bH, bF)
219- let bJ = D(bI, a)
220- let bK = A(bv, a)
221- let bL = A(bD, a)
222- let bM = fraction(bF, bK, bL)
223- let bN = fraction(bH, bK, bL)
224- let bO = D(bM, bA)
225- let bP = D(bN, bB)
226- let bQ = if ((bt == ""))
217+ let bF = aQ(bz)
218+ let bG = z(bF, bB)
219+ let bH = aQ(bA)
220+ let bI = z(bH, bC)
221+ let bJ = aS(bI, bG)
222+ let bK = C(bJ, a)
223+ let bL = z(bw, a)
224+ let bM = z(bE, a)
225+ let bN = fraction(bG, bL, bM)
226+ let bO = fraction(bI, bL, bM)
227+ let bP = C(bN, bB)
228+ let bQ = C(bO, bC)
229+ let bR = if ((bu == ""))
227230 then nil
228- else [ScriptTransfer(bw, bO, if ((by == "WAVES"))
231+ else [ScriptTransfer(bx, bP, if ((bz == "WAVES"))
229232 then unit
230- else fromBase58String(by)), ScriptTransfer(bw, bP, if ((bz == "WAVES"))
233+ else fromBase58String(bz)), ScriptTransfer(bx, bQ, if ((bA == "WAVES"))
231234 then unit
232- else fromBase58String(bz)), StringEntry(U(toString(bw), bt), aL(bO, bP, bv, bJ, height, lastBlock.timestamp)), IntegerEntry(N(), bJ), IntegerEntry(O(height, lastBlock.timestamp), bJ)]
233- $Tuple10(bO, bP, by, bz, bE, bG, bD, bI, bC, bQ)
235+ else fromBase58String(bA)), StringEntry(T(toString(bx), bu), aM(bP, bQ, bw, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
236+ $Tuple10(bP, bQ, bz, bA, bF, bH, bE, bJ, bD, bR)
234237 }
235238 }
236239
237240
238-func bR (bt,aX,bS,bT,bU,bV,bw,bW,bX,bY,bZ,ca) = {
239- let bj = av()
240- let bx = fromBase58String(bj[q])
241- let cb = bj[r]
242- let cc = bj[s]
243- let cd = bj[v]
244- let ce = bj[w]
245- let cf = parseIntValue(bj[t])
246- let cg = parseIntValue(bj[u])
247- let bC = bj[p]
248- let ch = valueOrErrorMessage(assetInfo(bx), "Wr lp as").quantity
249- let bE = if (bW)
250- then aP(cb)
251- else if (if (bY)
252- then (ca == cb)
241+func bS (bu,aY,bT,bU,bV,bW,bx,bX,bY,bZ,ca,cb) = {
242+ let bk = aw()
243+ let by = fromBase58String(bk[p])
244+ let cc = bk[q]
245+ let cd = bk[r]
246+ let ce = bk[u]
247+ let cf = bk[v]
248+ let cg = parseIntValue(bk[s])
249+ let ch = parseIntValue(bk[t])
250+ let bD = bk[o]
251+ let ci = valueOrErrorMessage(assetInfo(by), "Wr lp as").quantity
252+ let bF = if (bX)
253+ then aQ(cc)
254+ else if (if (bZ)
255+ then (cb == cc)
253256 else false)
254- then (aP(cb) - bZ)
255- else if (bY)
256- then aP(cb)
257- else (aP(cb) - bS)
258- let bG = if (bW)
259- then aP(cc)
260- else if (if (bY)
261- then (ca == cc)
257+ then (aQ(cc) - ca)
258+ else if (bZ)
259+ then aQ(cc)
260+ else (aQ(cc) - bT)
261+ let bH = if (bX)
262+ then aQ(cd)
263+ else if (if (bZ)
264+ then (cb == cd)
262265 else false)
263- then (aP(cc) - bZ)
264- else if (bY)
265- then aP(cc)
266- else (aP(cc) - bU)
267- let ci = A(bS, cf)
268- let cj = A(bU, cg)
269- let ck = aR(cj, ci)
270- let bF = A(bE, cf)
271- let bH = A(bG, cg)
272- let cl = if ((ch == 0))
266+ then (aQ(cd) - ca)
267+ else if (bZ)
268+ then aQ(cd)
269+ else (aQ(cd) - bV)
270+ let cj = z(bT, cg)
271+ let ck = z(bV, ch)
272+ let cl = aS(ck, cj)
273+ let bG = z(bF, cg)
274+ let bI = z(bH, ch)
275+ let cm = if ((ci == 0))
273276 then {
274- let bI = d
275- let cm = d
276- let bn = pow((ci * cj), 0, toBigInt(5), 1, 0, DOWN)
277- $Tuple5(D(bn, a), D(ci, cf), D(cj, cg), aR((bH + cj), (bF + ci)), cm)
277+ let bJ = d
278+ let cn = d
279+ let bo = pow((cj * ck), 0, toBigInt(5), 1, 0, DOWN)
280+ $Tuple5(C(bo, a), C(cj, cg), C(ck, ch), aS((bI + ck), (bG + cj)), cn)
278281 }
279282 else {
280- let bI = aR(bH, bF)
281- let cn = fraction(K((bI - ck)), c, bI)
282- let cm = A(aX, a)
283- if (if ((bI != d))
284- then (cn > cm)
283+ let bJ = aS(bI, bG)
284+ let co = fraction(J((bJ - cl)), c, bJ)
285+ let cn = z(aY, a)
286+ if (if ((bJ != d))
287+ then (co > cn)
285288 else false)
286- then throw(((("Price slippage " + toString(cn)) + " > ") + toString(cm)))
289+ then throw(((("Price slippage " + toString(co)) + " > ") + toString(cn)))
287290 else {
288- let bL = A(ch, a)
289- let co = fraction(ci, bI, c)
290- let cp = fraction(cj, c, bI)
291- let cq = if ((co > cj))
292- then $Tuple2(cp, cj)
293- else $Tuple2(ci, co)
294- let cr = cq._1
295- let cs = cq._2
296- let bn = fraction(bL, cs, bH)
297- $Tuple5(D(bn, a), D(cr, cf), D(cs, cg), bI, cm)
291+ let bM = z(ci, a)
292+ let cp = fraction(cj, bJ, c)
293+ let cq = fraction(ck, c, bJ)
294+ let cr = if ((cp > ck))
295+ then $Tuple2(cq, ck)
296+ else $Tuple2(cj, cp)
297+ let cs = cr._1
298+ let ct = cr._2
299+ let bo = fraction(bM, ct, bI)
300+ $Tuple5(C(bo, a), C(cs, cg), C(ct, ch), bJ, cn)
298301 }
299302 }
300- let ct = cl._1
301- let cu = cl._2
302- let cv = cl._3
303- let bJ = D(cl._4, a)
304- let cw = D(cl._5, a)
305- if ((0 >= ct))
303+ let cu = cm._1
304+ let cv = cm._2
305+ let cw = cm._3
306+ let bK = C(cm._4, a)
307+ let cx = C(cm._5, a)
308+ if ((0 >= cu))
306309 then throw("LP <= 0")
307310 else {
308- let cx = if (!(bX))
311+ let cy = if (!(bY))
309312 then 0
310- else ct
311- let cy = (bS - cu)
312- let cz = (bU - cv)
313- let cA = [IntegerEntry(N(), bJ), IntegerEntry(O(height, lastBlock.timestamp), bJ), StringEntry(R(bw, bt), aA(cu, cv, cx, bJ, aX, cw, height, lastBlock.timestamp, cy, cz))]
314- $Tuple13(ct, cx, bJ, bE, bG, ch, bx, bC, cA, cy, cz, bT, bV)
313+ else cu
314+ let cz = (bT - cv)
315+ let cA = (bV - cw)
316+ let cB = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cv, cw, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
317+ $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cB, cz, cA, bU, bW)
315318 }
316319 }
317320
318321
319-func cB (cC) = {
320- let bj = av()
321- let cD = bj[r]
322- let cE = bj[s]
323- let bC = parseIntValue(bj[p])
324- let bk = parseIntValue(bj[t])
325- let bl = parseIntValue(bj[u])
326- let cF = aP(cD)
327- let cG = aP(cE)
328- let bI = if ((cC.orderType == Buy))
329- then ba(bk, bl, (cF + cC.amount), cG)
330- else ba(bk, bl, (cF - cC.amount), cG)
331- let bJ = D(bI, a)
332- if (if (if (at())
322+func cC (cD) = {
323+ let bk = aw()
324+ let cE = bk[q]
325+ let cF = bk[r]
326+ let bD = parseIntValue(bk[o])
327+ let bl = parseIntValue(bk[s])
328+ let bm = parseIntValue(bk[t])
329+ let cG = aQ(cE)
330+ let cH = aQ(cF)
331+ let bJ = if ((cD.orderType == Buy))
332+ then bb(bl, bm, (cG + cD.amount), cH)
333+ else bb(bl, bm, (cG - cD.amount), cH)
334+ let bK = C(bJ, a)
335+ if (if (if (au())
333336 then true
334- else (bC == m))
337+ else (bD == l))
335338 then true
336- else (bC == n))
339+ else (bD == m))
337340 then throw("Admin blocked")
338341 else {
339- let cH = cC.assetPair.amountAsset
340- let cI = if ((cH == unit))
342+ let cI = cD.assetPair.amountAsset
343+ let cJ = if ((cI == unit))
341344 then "WAVES"
342- else toBase58String(value(cH))
343- let cJ = cC.assetPair.priceAsset
344- let cK = if ((cJ == unit))
345+ else toBase58String(value(cI))
346+ let cK = cD.assetPair.priceAsset
347+ let cL = if ((cK == unit))
345348 then "WAVES"
346- else toBase58String(value(cJ))
347- if (if ((cI != cD))
349+ else toBase58String(value(cK))
350+ if (if ((cJ != cE))
348351 then true
349- else (cK != cE))
352+ else (cL != cF))
350353 then throw("Wr assets")
351354 else {
352- let cL = cC.price
353- let cg = fraction(a, bl, bk)
354- let cM = G(cL, a, cg)
355- let cN = if ((cC.orderType == Buy))
356- then (bJ >= cM)
357- else (cM >= bJ)
355+ let cM = cD.price
356+ let ch = fraction(a, bm, bl)
357+ let cN = F(cM, a, ch)
358+ let cO = if ((cD.orderType == Buy))
359+ then (bK >= cN)
360+ else (cN >= bK)
358361 true
359362 }
360363 }
361364 }
362365
363366
364-func cO (cP) = if ((size(cP.payments) != 1))
367+func cP (cQ) = if ((size(cQ.payments) != 1))
365368 then throw("1 pmnt expected")
366369 else {
367- let cQ = value(cP.payments[0])
368- let bu = value(cQ.assetId)
369- let bZ = cQ.amount
370- let cl = bs(toBase58String(cP.transactionId), toBase58String(bu), bZ, cP.caller)
371- let bO = cl._1
372- let bP = cl._2
373- let bC = parseIntValue(cl._9)
374- let bQ = cl._10
375- if (if (at())
370+ let cR = value(cQ.payments[0])
371+ let bv = value(cR.assetId)
372+ let ca = cR.amount
373+ let cm = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
374+ let bP = cm._1
375+ let bQ = cm._2
376+ let bD = parseIntValue(cm._9)
377+ let bR = cm._10
378+ if (if (au())
376379 then true
377- else (bC == n))
378- then throw(("Admion blocked: " + toString(bC)))
379- else $Tuple5(bO, bP, bZ, bu, bQ)
380+ else (bD == m))
381+ then throw(("Admion blocked: " + toString(bD)))
382+ else $Tuple5(bP, bQ, ca, bv, bR)
380383 }
381384
382385
383-func cR (cS,T,cT,cU,aX,bX,bY,bZ,ca) = {
384- let cV = bR(T, aX, value(cT).amount, value(cT).assetId, value(cU).amount, value(cU).assetId, cS, false, bX, bY, bZ, ca)
385- let cW = parseIntValue(cV._8)
386- if (if (if (at())
386+func cS (cT,S,cU,cV,aY,bY,bZ,ca,cb) = {
387+ let cW = bS(S, aY, value(cU).amount, value(cU).assetId, value(cV).amount, value(cV).assetId, cT, false, bY, bZ, ca, cb)
388+ let cX = parseIntValue(cW._8)
389+ if (if (if (au())
387390 then true
388- else (cW == l))
391+ else (cX == k))
389392 then true
390- else (cW == n))
391- then throw(("Admin blocked: " + toString(cW)))
392- else cV
393+ else (cX == m))
394+ then throw(("Admin blocked: " + toString(cX)))
395+ else cW
393396 }
394397
395398
396-@Callable(cP)
397-func constructor (as,cX) = if ((cP.caller != this))
399+@Callable(cQ)
400+func constructor (as,cY) = if ((cQ.caller != this))
398401 then throw("permission denied")
399- else [StringEntry(L(), as), StringEntry(M(), cX)]
402+ else [StringEntry(K(), as), StringEntry(L(), cY)]
400403
401404
402405
403-@Callable(cP)
404-func put (cY,cZ) = {
405- let da = az()
406- let db = valueOrErrorMessage(addressFromString(da[x]), "Wr st addr")
407- let dc = valueOrErrorMessage(addressFromString(da[y]), "Wr sl addr")
408- if ((0 > cY))
406+@Callable(cQ)
407+func put (cZ,da) = {
408+ let db = aA()
409+ let dc = valueOrErrorMessage(addressFromString(db[w]), "Wr st addr")
410+ let dd = valueOrErrorMessage(addressFromString(db[x]), "Wr sl addr")
411+ if ((0 > cZ))
409412 then throw("Invalid slippage.")
410- else if ((size(cP.payments) != 2))
413+ else if ((size(cQ.payments) != 2))
411414 then throw("2 pmnts expected")
412415 else {
413- let dd = cR(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], cY, true, false, 0, "")
414- let cx = dd._2
415- let de = dd._7
416- let bQ = dd._9
417- let cy = dd._10
418- let cz = dd._11
419- let by = dd._12
420- let bz = dd._13
421- let df = invoke(as, "emit", [cx], nil)
422- if ((df == df))
416+ let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], cZ, true, false, 0, "")
417+ let cy = de._2
418+ let df = de._7
419+ let bR = de._9
420+ let cz = de._10
421+ let cA = de._11
422+ let bz = de._12
423+ let bA = de._13
424+ let dg = invoke(as, "emit", [cy], nil)
425+ if ((dg == dg))
423426 then {
424- let dg = if ((cy > 0))
425- then invoke(dc, "put", nil, [AttachedPayment(by, cy)])
427+ let dh = if ((cz > 0))
428+ then invoke(dd, "put", nil, [AttachedPayment(bz, cz)])
426429 else nil
427- if ((dg == dg))
430+ if ((dh == dh))
428431 then {
429- let dh = if ((cz > 0))
430- then invoke(dc, "put", nil, [AttachedPayment(bz, cz)])
432+ let di = if ((cA > 0))
433+ then invoke(dd, "put", nil, [AttachedPayment(bA, cA)])
431434 else nil
432- if ((dh == dh))
435+ if ((di == di))
433436 then {
434- let di = if (cZ)
437+ let dj = if (da)
435438 then {
436- let dj = invoke(db, "stake", nil, [AttachedPayment(de, cx)])
437- if ((dj == dj))
439+ let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
440+ if ((dk == dk))
438441 then nil
439442 else throw("Strict value is not equal to itself.")
440443 }
441- else [ScriptTransfer(cP.caller, cx, de)]
442- (bQ ++ di)
444+ else [ScriptTransfer(cQ.caller, cy, df)]
445+ (bR ++ dj)
443446 }
444447 else throw("Strict value is not equal to itself.")
445448 }
451454
452455
453456
454-@Callable(cP)
455-func putOneTkn (dk,dl,dm,aX,cZ) = {
456- let bj = az()
457- let db = valueOrErrorMessage(addressFromString(bj[x]), "Wr st addr")
458- let dc = valueOrErrorMessage(addressFromString(bj[y]), "Wr sl addr")
459- let dn = valueOrErrorMessage(addressFromString(bj[z]), "Wr gwx addr")
460- let do = av()
461- let by = do[r]
462- let bz = do[s]
463- let bA = parseIntValue(do[t])
464- let bB = parseIntValue(do[u])
465- if (if (if (if ((0 >= aX))
466- then true
467- else (0 >= dk))
457+@Callable(cQ)
458+func putOneTkn (dl,dm,dn,aY,da) = {
459+ let bk = aA()
460+ let dc = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
461+ let dd = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
462+ let do = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
463+ let dp = aw()
464+ let bz = dp[q]
465+ let bA = dp[r]
466+ let bB = parseIntValue(dp[s])
467+ let bC = parseIntValue(dp[t])
468+ if (if (if (if ((0 >= aY))
468469 then true
469470 else (0 >= dl))
470471 then true
471472 else (0 >= dm))
473+ then true
474+ else (0 >= dn))
472475 then throw("Wrong params")
473- else if ((size(cP.payments) != 1))
476+ else if ((size(cQ.payments) != 1))
474477 then throw("1 pmnt expected")
475478 else {
476- let cQ = value(cP.payments[0])
477- let bu = toBase58String(value(cQ.assetId))
478- let bZ = cQ.amount
479- let bE = aP(by)
480- let bG = aP(bz)
481- let dp = if ((bu == by))
482- then $Tuple6((bE - bZ), bG, (bZ - dk), dl, 0, 0)
483- else if ((bu == bz))
484- then $Tuple6(bE, (bG - bZ), 0, 0, (bZ - dl), dk)
479+ let cR = value(cQ.payments[0])
480+ let bv = toBase58String(value(cR.assetId))
481+ let ca = cR.amount
482+ let bF = aQ(bz)
483+ let bH = aQ(bA)
484+ let dq = if ((bv == bz))
485+ then $Tuple6((bF - ca), bH, (ca - dl), dm, 0, 0)
486+ else if ((bv == bA))
487+ then $Tuple6(bF, (bH - ca), 0, 0, (ca - dm), dl)
485488 else throw("wrong pmtAssetId")
486- let dq = dp._1
487- let dr = dp._2
488- let ds = dp._3
489- let dt = dp._4
490- let du = dp._5
491- let dv = dp._6
492- let dw = invoke(dn, "calcD", [toString(dq), toString(dr), f, g, h], nil)
493- let dx = invoke(dn, "calcD", [toString(toBigInt(((dq + ds) - dv))), toString(toBigInt(((dr + du) - dt))), f, g, h], nil)
494- let dy = parseBigIntValue(al(dw))
489+ let dr = dq._1
490+ let ds = dq._2
491+ let dt = dq._3
492+ let du = dq._4
493+ let dv = dq._5
494+ let dw = dq._6
495+ let dx = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
496+ let dy = invoke(do, "calcD", [toString(toBigInt(((dr + dt) - dw))), toString(toBigInt(((ds + dv) - du))), at, f, g], nil)
495497 let dz = parseBigIntValue(al(dx))
496- let dA = aU(dz, dy, toBigInt(1000))
497- if ((dA == dA))
498+ let dA = parseBigIntValue(al(dy))
499+ let dB = aV(dA, dz, toBigInt(1000))
500+ if ((dB == dB))
498501 then {
499- let dd = cR(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(fromBase58String(by), dk), AttachedPayment(fromBase58String(bz), dl), 50000000000, true, true, bZ, bu)
500- let dB = dd._2
501- let de = dd._7
502- let bQ = dd._9
503- let cy = dd._10
504- let cz = dd._11
505- let dC = aU(toBigInt(dB), toBigInt(dm), toBigInt(aX))
506- let cx = toInt(dC._2)
507- let df = invoke(as, "emit", [cx], nil)
508- if ((df == df))
502+ let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(fromBase58String(bz), dl), AttachedPayment(fromBase58String(bA), dm), 50000000000, true, true, ca, bv)
503+ let dC = de._2
504+ let df = de._7
505+ let bR = de._9
506+ let cz = de._10
507+ let cA = de._11
508+ let dD = aV(toBigInt(dC), toBigInt(dn), toBigInt(aY))
509+ let cy = toInt(dD._2)
510+ let dg = invoke(as, "emit", [cy], nil)
511+ if ((dg == dg))
509512 then {
510- let dg = if ((cy > 0))
511- then invoke(dc, "put", nil, [AttachedPayment(fromBase58String(by), cy)])
513+ let dh = if ((cz > 0))
514+ then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
512515 else nil
513- if ((dg == dg))
516+ if ((dh == dh))
514517 then {
515- let dh = if ((cz > 0))
516- then invoke(dc, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
518+ let di = if ((cA > 0))
519+ then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
517520 else nil
518- if ((dh == dh))
521+ if ((di == di))
519522 then {
520- let di = if (cZ)
523+ let dj = if (da)
521524 then {
522- let dj = invoke(db, "stake", nil, [AttachedPayment(de, cx)])
523- if ((dj == dj))
525+ let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
526+ if ((dk == dk))
524527 then nil
525528 else throw("Strict value is not equal to itself.")
526529 }
527- else [ScriptTransfer(cP.caller, cx, de)]
528- (bQ ++ di)
530+ else [ScriptTransfer(cQ.caller, cy, df)]
531+ (bR ++ dj)
529532 }
530533 else throw("Strict value is not equal to itself.")
531534 }
539542
540543
541544
542-@Callable(cP)
543-func putForFree (dD) = if ((0 > dD))
545+@Callable(cQ)
546+func putForFree (dE) = if ((0 > dE))
544547 then throw("Invalid slippage")
545- else if ((size(cP.payments) != 2))
548+ else if ((size(cQ.payments) != 2))
546549 then throw("2 payments expected")
547550 else {
548- let dd = cR(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], dD, false, false, 0, "")
549- dd._9
551+ let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], dE, false, false, 0, "")
552+ de._9
550553 }
551554
552555
553556
554-@Callable(cP)
557+@Callable(cQ)
555558 func get () = {
556- let cl = cO(cP)
557- let dE = cl._1
558- let bP = cl._2
559- let bZ = cl._3
560- let bu = cl._4
561- let bQ = cl._5
562- let dF = invoke(as, "burn", [bZ], [AttachedPayment(bu, bZ)])
563- if ((dF == dF))
564- then bQ
559+ let cm = cP(cQ)
560+ let dF = cm._1
561+ let bQ = cm._2
562+ let ca = cm._3
563+ let bv = cm._4
564+ let bR = cm._5
565+ let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
566+ if ((dG == dG))
567+ then bR
565568 else throw("Strict value is not equal to itself.")
566569 }
567570
568571
569572
570-@Callable(cP)
571-func getOneTkn (dG,dH,dI,dJ,aX) = if ((size(cP.payments) != 1))
573+@Callable(cQ)
574+func getOneTkn (dH,dI,dJ,dK,aY) = if ((size(cQ.payments) != 1))
572575 then throw("1 payment expected")
573576 else {
574- let bj = av()
575- let bx = bj[q]
576- let by = bj[r]
577- let bz = bj[s]
578- let bA = parseIntValue(bj[t])
579- let bB = parseIntValue(bj[u])
580- let bC = bj[p]
581- let dK = az()
582- let dn = valueOrErrorMessage(addressFromString(dK[z]), "Wr sl addr")
583- if (if ((dJ != by))
584- then (dJ != bz)
577+ let bk = aw()
578+ let by = bk[p]
579+ let bz = bk[q]
580+ let bA = bk[r]
581+ let bB = parseIntValue(bk[s])
582+ let bC = parseIntValue(bk[t])
583+ let bD = bk[o]
584+ let dL = aA()
585+ let do = valueOrErrorMessage(addressFromString(dL[y]), "Wr sl addr")
586+ if (if ((dK != bz))
587+ then (dK != bA)
585588 else false)
586589 then throw("Wr out as")
587590 else {
588- let dL = if ((dJ == by))
589- then by
590- else bz
591- let cQ = value(cP.payments[0])
592- let bw = cP.caller
593- let bt = toBase58String(cP.transactionId)
594- let bu = value(cQ.assetId)
595- let bZ = cQ.amount
596- if (if (if (if ((0 > aX))
597- then true
598- else (0 > dG))
591+ let dM = if ((dK == bz))
592+ then bz
593+ else bA
594+ let cR = value(cQ.payments[0])
595+ let bx = cQ.caller
596+ let bu = toBase58String(cQ.transactionId)
597+ let bv = value(cR.assetId)
598+ let ca = cR.amount
599+ if (if (if (if ((0 > aY))
599600 then true
600601 else (0 > dH))
601602 then true
602603 else (0 > dI))
604+ then true
605+ else (0 > dJ))
603606 then throw("Wrong params")
604- else if ((bx != toBase58String(bu)))
607+ else if ((by != toBase58String(bv)))
605608 then throw("Invalid LP")
606609 else {
607- let cV = bs(toBase58String(cP.transactionId), toBase58String(bu), bZ, cP.caller)
608- let dM = cV._1
609- let dN = cV._2
610- let bE = aP(by)
611- let bG = aP(bz)
612- let dO = if ((dJ == by))
613- then $Tuple7((bE - dM), (bG - dN), (dI - dM), dH, 0, 0, (dM + dG))
614- else if ((dJ == bz))
615- then $Tuple7((bE - dM), (bG - dN), 0, 0, (dI - dN), dG, (dN + dH))
610+ let cW = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
611+ let dN = cW._1
612+ let dO = cW._2
613+ let bF = aQ(bz)
614+ let bH = aQ(bA)
615+ let dP = if ((dK == bz))
616+ then $Tuple7((bF - dN), (bH - dO), (dJ - dN), dI, 0, 0, (dN + dH))
617+ else if ((dK == bA))
618+ then $Tuple7((bF - dN), (bH - dO), 0, 0, (dJ - dO), dH, (dO + dI))
616619 else throw("wrong outAssetId")
617- let dq = dO._1
618- let dr = dO._2
619- let ds = dO._3
620- let dt = dO._4
621- let du = dO._5
622- let dv = dO._6
623- let dP = dO._7
624- let dQ = invoke(dn, "calcD", [toString(dq), toString(dr), f, g, h], nil)
625- let dR = invoke(dn, "calcD", [toString(((dq - ds) + dv)), toString(((dr + dt) - du)), f, g, h], nil)
626- let dA = aU(parseBigIntValue(al(dR)), parseBigIntValue(al(dQ)), toBigInt(1000))
627- if ((dA == dA))
620+ let dr = dP._1
621+ let ds = dP._2
622+ let dt = dP._3
623+ let du = dP._4
624+ let dv = dP._5
625+ let dw = dP._6
626+ let dQ = dP._7
627+ let dR = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
628+ let dS = invoke(do, "calcD", [toString(((dr - dt) + dw)), toString(((ds + du) - dv)), at, f, g], nil)
629+ let dB = aV(parseBigIntValue(al(dS)), parseBigIntValue(al(dR)), toBigInt(1000))
630+ if ((dB == dB))
628631 then {
629- let dS = aU(toBigInt(dP), toBigInt(dI), toBigInt(aX))
630- if ((dS == dS))
632+ let dT = aV(toBigInt(dQ), toBigInt(dJ), toBigInt(aY))
633+ if ((dT == dT))
631634 then {
632- let dT = if ((dJ == by))
633- then $Tuple2(toInt(dS._2), 0)
634- else $Tuple2(0, toInt(dS._2))
635- let bI = aR(A(bG, bB), A(bE, bA))
636- let bJ = D(bI, a)
637- let bQ = [ScriptTransfer(bw, if ((dL == by))
638- then dT._1
639- else dT._2, if ((dL == "WAVES"))
635+ let dU = if ((dK == bz))
636+ then $Tuple2(toInt(dT._2), 0)
637+ else $Tuple2(0, toInt(dT._2))
638+ let bJ = aS(z(bH, bC), z(bF, bB))
639+ let bK = C(bJ, a)
640+ let bR = [ScriptTransfer(bx, if ((dM == bz))
641+ then dU._1
642+ else dU._2, if ((dM == "WAVES"))
640643 then unit
641- else fromBase58String(dL)), StringEntry(U(toString(bw), bt), aL(dT._1, dT._2, bZ, bJ, height, lastBlock.timestamp)), IntegerEntry(N(), bJ), IntegerEntry(O(height, lastBlock.timestamp), bJ)]
642- if ((bQ == bQ))
644+ else fromBase58String(dM)), StringEntry(T(toString(bx), bu), aM(dU._1, dU._2, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
645+ if ((bR == bR))
643646 then {
644- let dU = invoke(as, "burn", [bZ], [AttachedPayment(bu, bZ)])
645- if ((dU == dU))
646- then bQ
647+ let dV = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
648+ if ((dV == dV))
649+ then bR
647650 else throw("Strict value is not equal to itself.")
648651 }
649652 else throw("Strict value is not equal to itself.")
657660
658661
659662
660-@Callable(cP)
661-func getNoLess (dV,dW) = {
662- let cl = cO(cP)
663- let bO = cl._1
664- let bP = cl._2
665- let bZ = cl._3
666- let bu = cl._4
667- let bQ = cl._5
668- if ((dV > bO))
669- then throw(((("Failed: " + toString(bO)) + " < ") + toString(dV)))
670- else if ((dW > bP))
671- then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
663+@Callable(cQ)
664+func getNoLess (dW,dX) = {
665+ let cm = cP(cQ)
666+ let bP = cm._1
667+ let bQ = cm._2
668+ let ca = cm._3
669+ let bv = cm._4
670+ let bR = cm._5
671+ if ((dW > bP))
672+ then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
673+ else if ((dX > bQ))
674+ then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dX)))
672675 else {
673- let dF = invoke(as, "burn", [bZ], [AttachedPayment(bu, bZ)])
674- if ((dF == dF))
675- then bQ
676+ let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
677+ if ((dG == dG))
678+ then bR
676679 else throw("Strict value is not equal to itself.")
677680 }
678681 }
679682
680683
681684
682-@Callable(cP)
683-func unstakeAndGet (dX) = {
684- let dY = if ((size(cP.payments) != 0))
685+@Callable(cQ)
686+func unstakeAndGet (dY) = {
687+ let dZ = if ((size(cQ.payments) != 0))
685688 then throw("No pmnts expected")
686689 else true
687- if ((dY == dY))
690+ if ((dZ == dZ))
688691 then {
689- let bj = av()
690- let dZ = az()
691- let de = fromBase58String(bj[q])
692- let ea = valueOrErrorMessage(addressFromString(dZ[x]), "Wr st addr")
693- let eb = invoke(ea, "unstake", [toBase58String(de), dX], nil)
694- if ((eb == eb))
692+ let bk = aw()
693+ let ea = aA()
694+ let df = fromBase58String(bk[p])
695+ let eb = valueOrErrorMessage(addressFromString(ea[w]), "Wr st addr")
696+ let ec = invoke(eb, "unstake", [toBase58String(df), dY], nil)
697+ if ((ec == ec))
695698 then {
696- let cV = bs(toBase58String(cP.transactionId), toBase58String(de), dX, cP.caller)
697- let bC = parseIntValue(cV._9)
698- let bQ = cV._10
699- let ec = if (if (at())
699+ let cW = bt(toBase58String(cQ.transactionId), toBase58String(df), dY, cQ.caller)
700+ let bD = parseIntValue(cW._9)
701+ let bR = cW._10
702+ let ed = if (if (au())
700703 then true
701- else (bC == n))
702- then throw(("Admin blocked: " + toString(bC)))
704+ else (bD == m))
705+ then throw(("Admin blocked: " + toString(bD)))
703706 else true
704- if ((ec == ec))
707+ if ((ed == ed))
705708 then {
706- let dF = invoke(as, "burn", [dX], [AttachedPayment(de, dX)])
707- if ((dF == dF))
708- then bQ
709+ let dG = invoke(as, "burn", [dY], [AttachedPayment(df, dY)])
710+ if ((dG == dG))
711+ then bR
709712 else throw("Strict value is not equal to itself.")
710713 }
711714 else throw("Strict value is not equal to itself.")
717720
718721
719722
720-@Callable(cP)
721-func activate (ed,ee) = if ((toString(cP.caller) != toString(as)))
723+@Callable(cQ)
724+func activate (ee,ef) = if ((toString(cQ.caller) != toString(as)))
722725 then throw("permissions denied")
723- else $Tuple2([StringEntry(V(), ed), StringEntry(W(), ee)], "success")
726+ else $Tuple2([StringEntry(U(), ee), StringEntry(V(), ef)], "success")
724727
725728
726729
727-@Callable(cP)
728-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
730+@Callable(cQ)
731+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aw())
729732
730733
731734
732-@Callable(cP)
733-func getAccBalanceWrapperREADONLY (aQ) = $Tuple2(nil, aP(aQ))
735+@Callable(cQ)
736+func getAccBalanceWrapperREADONLY (aR) = $Tuple2(nil, aQ(aR))
734737
735738
736739
737-@Callable(cP)
738-func calcPricesWrapperREADONLY (bd,be,bi) = {
739- let br = bh(bd, be, bi)
740- $Tuple2(nil, [toString(br[0]), toString(br[1]), toString(br[2])])
740+@Callable(cQ)
741+func calcPricesWrapperREADONLY (be,bf,bj) = {
742+ let bs = bi(be, bf, bj)
743+ $Tuple2(nil, [toString(bs[0]), toString(bs[1]), toString(bs[2])])
741744 }
742745
743746
744747
745-@Callable(cP)
746-func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
748+@Callable(cQ)
749+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
747750
748751
749752
750-@Callable(cP)
751-func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
753+@Callable(cQ)
754+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
752755
753756
754757
755-@Callable(cP)
756-func calcPriceBigIntWrapperREADONLY (aS,aT) = $Tuple2(nil, toString(aR(parseBigIntValue(aS), parseBigIntValue(aT))))
758+@Callable(cQ)
759+func calcPriceBigIntWrapperREADONLY (aT,aU) = $Tuple2(nil, toString(aS(parseBigIntValue(aT), parseBigIntValue(aU))))
757760
758761
759762
760-@Callable(cP)
761-func estimatePutOperationWrapperREADONLY (bt,aX,bS,bT,bU,bV,ef,bW,bX) = $Tuple2(nil, bR(bt, aX, bS, bT, bU, bV, ef, bW, bX, false, 0, ""))
763+@Callable(cQ)
764+func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eg,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eg, bX, bY, false, 0, ""))
762765
763766
764767
765-@Callable(cP)
766-func estimateGetOperationWrapperREADONLY (bt,eg,bv,ef) = {
767- let cl = bs(bt, eg, bv, addressFromStringValue(ef))
768- $Tuple2(nil, $Tuple10(cl._1, cl._2, cl._3, cl._4, cl._5, cl._6, cl._7, toString(cl._8), cl._9, cl._10))
768+@Callable(cQ)
769+func estimateGetOperationWrapperREADONLY (bu,eh,bw,eg) = {
770+ let cm = bt(bu, eh, bw, addressFromStringValue(eg))
771+ $Tuple2(nil, $Tuple10(cm._1, cm._2, cm._3, cm._4, cm._5, cm._6, cm._7, toString(cm._8), cm._9, cm._10))
769772 }
770773
771774
772-@Verifier(eh)
773-func ei () = {
774- let am = eh
775+@Verifier(ei)
776+func ej () = {
777+ let am = ei
775778 if ($isInstanceOf(am, "Order"))
776779 then {
777- let cC = am
778- let ej = au()
779- let ai = cB(cC)
780- let ek = sigVerify(cC.bodyBytes, cC.proofs[0], cC.senderPublicKey)
781- let el = sigVerify(cC.bodyBytes, cC.proofs[1], ej)
780+ let cD = am
781+ let ek = av()
782+ let ai = cC(cD)
783+ let el = sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
784+ let em = sigVerify(cD.bodyBytes, cD.proofs[1], ek)
782785 if (if (if (ai)
783- then ek
784- else false)
785786 then el
786787 else false)
788+ then em
789+ else false)
787790 then true
788- else ah(ai, ek, el)
791+ else ah(ai, el, em)
789792 }
790793 else {
791- let em = valueOrElse(getString(this, M()), j)
792- if ((em == j))
793- then sigVerify(eh.bodyBytes, eh.proofs[0], eh.senderPublicKey)
794- else sigVerify(eh.bodyBytes, eh.proofs[0], fromBase58String(em))
794+ let en = valueOrElse(getString(this, L()), i)
795+ if ((en == i))
796+ then sigVerify(ei.bodyBytes, ei.proofs[0], ei.senderPublicKey)
797+ else sigVerify(ei.bodyBytes, ei.proofs[0], fromBase58String(en))
795798 }
796799 }
797800
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
14-let f = "50"
14+let f = "100000000"
1515
16-let g = "100000000"
16+let g = "1"
1717
18-let h = "1"
18+let h = "__"
1919
20-let i = "__"
20+let i = ""
2121
22-let j = ""
22+let j = 1
2323
24-let k = 1
24+let k = 2
2525
26-let l = 2
26+let l = 3
2727
28-let m = 3
28+let m = 4
2929
30-let n = 4
30+let n = 1
3131
32-let o = 1
32+let o = 2
3333
34-let p = 2
34+let p = 3
3535
36-let q = 3
36+let q = 4
3737
38-let r = 4
38+let r = 5
3939
40-let s = 5
40+let s = 6
4141
42-let t = 6
42+let t = 7
4343
44-let u = 7
44+let u = 8
4545
46-let v = 8
46+let v = 9
4747
48-let w = 9
48+let w = 1
4949
50-let x = 1
50+let x = 7
5151
52-let y = 7
52+let y = 10
5353
54-let z = 10
55-
56-func A (B,C) = fraction(toBigInt(B), c, toBigInt(C))
54+func z (A,B) = fraction(toBigInt(A), c, toBigInt(B))
5755
5856
59-func D (E,F) = toInt(fraction(E, toBigInt(F), c))
57+func C (D,E) = toInt(fraction(D, toBigInt(E), c))
6058
6159
62-func G (H,I,J) = fraction(H, I, J)
60+func F (G,H,I) = fraction(G, H, I)
6361
6462
65-func K (E) = if ((d > E))
66- then -(E)
67- else E
63+func J (D) = if ((d > D))
64+ then -(D)
65+ else D
6866
6967
70-func L () = "%s__factoryContract"
68+func K () = "%s__factoryContract"
7169
7270
73-func M () = "%s__managerPublicKey"
71+func L () = "%s__managerPublicKey"
7472
7573
76-func N () = "%s%s__price__last"
74+func M () = "%s%s__price__last"
7775
7876
79-func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], i)
77+func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
8078
8179
82-func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
80+func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
8381
8482
85-func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
83+func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
8684
8785
88-func V () = "%s__amountAsset"
86+func U () = "%s__amountAsset"
8987
9088
91-func W () = "%s__priceAsset"
89+func V () = "%s__priceAsset"
90+
91+
92+func W () = "%s__amp"
9293
9394
9495 func X () = "%s__factoryConfig"
9596
9697
9798 func Y () = "%s%s__matcher__publicKey"
9899
99100
100101 func Z (aa,ab) = (((("%d%d%s__" + aa) + "__") + ab) + "__config")
101102
102103
103104 func ac (ad) = ("%s%s%s__mappings__baseAsset2internalId__" + ad)
104105
105106
106107 func ae () = "%s__shutdown"
107108
108109
109110 func af (ag) = ("%s%s__poolWeight__" + ag)
110111
111112
112113 func ah (ai,aj,ak) = throw(((((("Failed: orderValid=" + toString(ai)) + " senderValid=") + toString(aj)) + " matcherValid=") + toString(ak)))
113114
114115
115-func al (E) = {
116- let am = E
116+func al (D) = {
117+ let am = D
117118 if ($isInstanceOf(am, "String"))
118119 then {
119120 let an = am
120121 an
121122 }
122123 else throw("fail cast to String")
123124 }
124125
125126
126127 func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
127128
128129
129130 func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
130131
131132
132-let as = addressFromStringValue(ao(this, L()))
133+let as = addressFromStringValue(ao(this, K()))
133134
134-func at () = valueOrElse(getBoolean(as, ae()), false)
135+let at = ao(this, W())
136+
137+func au () = valueOrElse(getBoolean(as, ae()), false)
135138
136139
137-func au () = fromBase58String(ao(as, Y()))
140+func av () = fromBase58String(ao(as, Y()))
138141
139142
140-func av () = {
141- let aw = ao(this, V())
142- let ax = ao(this, W())
143- let ay = ar(as, ac(ax))
144- let aa = ar(as, ac(aw))
145- split(ao(as, Z(toString(aa), toString(ay))), i)
143+func aw () = {
144+ let ax = ao(this, U())
145+ let ay = ao(this, V())
146+ let az = ar(as, ac(ay))
147+ let aa = ar(as, ac(ax))
148+ split(ao(as, Z(toString(aa), toString(az))), h)
146149 }
147150
148151
149-func az () = split(ao(as, X()), i)
152+func aA () = split(ao(as, X()), h)
150153
151154
152-func aA (aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK)], i)
155+func aB (aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL)], h)
153156
154157
155-func aL (aM,aN,aO,aE,aH,aI) = makeString(["%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aE), toString(aH), toString(aI)], i)
158+func aM (aN,aO,aP,aF,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aF), toString(aI), toString(aJ)], h)
156159
157160
158-func aP (aQ) = if ((aQ == "WAVES"))
161+func aQ (aR) = if ((aR == "WAVES"))
159162 then wavesBalance(this).available
160- else assetBalance(this, fromBase58String(aQ))
163+ else assetBalance(this, fromBase58String(aR))
161164
162165
163-func aR (aS,aT) = fraction(aS, c, aT)
166+func aS (aT,aU) = fraction(aT, c, aU)
164167
165168
166-func aU (aV,aW,aX) = {
167- let aY = fraction((aV - aW), b, aW)
168- let aZ = ((aX - K(aY)) > d)
169- if (!(aZ))
170- then throw(((("Too big slippage: " + toString(aY)) + " vs ") + toString(aX)))
171- else $Tuple2(aZ, min([aV, aW]))
169+func aV (aW,aX,aY) = {
170+ let aZ = fraction((aW - aX), b, aX)
171+ let ba = ((aY - J(aZ)) > d)
172+ if (!(ba))
173+ then throw(((("Too big slippage: " + toString(aZ)) + " vs ") + toString(aY)))
174+ else $Tuple2(ba, min([aW, aX]))
172175 }
173176
174177
175-func ba (bb,bc,bd,be) = {
176- let bf = A(bd, bb)
177- let bg = A(be, bc)
178- aR(bg, bf)
178+func bb (bc,bd,be,bf) = {
179+ let bg = z(be, bc)
180+ let bh = z(bf, bd)
181+ aS(bh, bg)
179182 }
180183
181184
182-func bh (bd,be,bi) = {
183- let bj = av()
184- let bk = parseIntValue(bj[t])
185- let bl = parseIntValue(bj[u])
186- let bm = ba(bk, bl, bd, be)
187- let aT = A(bd, bk)
188- let aS = A(be, bl)
189- let bn = A(bi, a)
190- let bo = aR(aT, bn)
191- let bp = aR(aS, bn)
192-[bm, bo, bp]
185+func bi (be,bf,bj) = {
186+ let bk = aw()
187+ let bl = parseIntValue(bk[s])
188+ let bm = parseIntValue(bk[t])
189+ let bn = bb(bl, bm, be, bf)
190+ let aU = z(be, bl)
191+ let aT = z(bf, bm)
192+ let bo = z(bj, a)
193+ let bp = aS(aU, bo)
194+ let bq = aS(aT, bo)
195+[bn, bp, bq]
193196 }
194197
195198
196-func bq (bd,be,bi) = {
197- let br = bh(bd, be, bi)
198-[D(br[0], a), D(br[1], a), D(br[2], a)]
199+func br (be,bf,bj) = {
200+ let bs = bi(be, bf, bj)
201+[C(bs[0], a), C(bs[1], a), C(bs[2], a)]
199202 }
200203
201204
202-func bs (bt,bu,bv,bw) = {
203- let bj = av()
204- let bx = bj[q]
205- let by = bj[r]
206- let bz = bj[s]
207- let bA = parseIntValue(bj[t])
208- let bB = parseIntValue(bj[u])
209- let bC = bj[p]
210- let bD = valueOrErrorMessage(assetInfo(fromBase58String(bx)), "Invalid LP id").quantity
211- if ((bx != bu))
205+func bt (bu,bv,bw,bx) = {
206+ let bk = aw()
207+ let by = bk[p]
208+ let bz = bk[q]
209+ let bA = bk[r]
210+ let bB = parseIntValue(bk[s])
211+ let bC = parseIntValue(bk[t])
212+ let bD = bk[o]
213+ let bE = valueOrErrorMessage(assetInfo(fromBase58String(by)), "Invalid LP id").quantity
214+ if ((by != bv))
212215 then throw("Invalid pmt asset")
213216 else {
214- let bE = aP(by)
215- let bF = A(bE, bA)
216- let bG = aP(bz)
217- let bH = A(bG, bB)
218- let bI = aR(bH, bF)
219- let bJ = D(bI, a)
220- let bK = A(bv, a)
221- let bL = A(bD, a)
222- let bM = fraction(bF, bK, bL)
223- let bN = fraction(bH, bK, bL)
224- let bO = D(bM, bA)
225- let bP = D(bN, bB)
226- let bQ = if ((bt == ""))
217+ let bF = aQ(bz)
218+ let bG = z(bF, bB)
219+ let bH = aQ(bA)
220+ let bI = z(bH, bC)
221+ let bJ = aS(bI, bG)
222+ let bK = C(bJ, a)
223+ let bL = z(bw, a)
224+ let bM = z(bE, a)
225+ let bN = fraction(bG, bL, bM)
226+ let bO = fraction(bI, bL, bM)
227+ let bP = C(bN, bB)
228+ let bQ = C(bO, bC)
229+ let bR = if ((bu == ""))
227230 then nil
228- else [ScriptTransfer(bw, bO, if ((by == "WAVES"))
231+ else [ScriptTransfer(bx, bP, if ((bz == "WAVES"))
229232 then unit
230- else fromBase58String(by)), ScriptTransfer(bw, bP, if ((bz == "WAVES"))
233+ else fromBase58String(bz)), ScriptTransfer(bx, bQ, if ((bA == "WAVES"))
231234 then unit
232- else fromBase58String(bz)), StringEntry(U(toString(bw), bt), aL(bO, bP, bv, bJ, height, lastBlock.timestamp)), IntegerEntry(N(), bJ), IntegerEntry(O(height, lastBlock.timestamp), bJ)]
233- $Tuple10(bO, bP, by, bz, bE, bG, bD, bI, bC, bQ)
235+ else fromBase58String(bA)), StringEntry(T(toString(bx), bu), aM(bP, bQ, bw, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
236+ $Tuple10(bP, bQ, bz, bA, bF, bH, bE, bJ, bD, bR)
234237 }
235238 }
236239
237240
238-func bR (bt,aX,bS,bT,bU,bV,bw,bW,bX,bY,bZ,ca) = {
239- let bj = av()
240- let bx = fromBase58String(bj[q])
241- let cb = bj[r]
242- let cc = bj[s]
243- let cd = bj[v]
244- let ce = bj[w]
245- let cf = parseIntValue(bj[t])
246- let cg = parseIntValue(bj[u])
247- let bC = bj[p]
248- let ch = valueOrErrorMessage(assetInfo(bx), "Wr lp as").quantity
249- let bE = if (bW)
250- then aP(cb)
251- else if (if (bY)
252- then (ca == cb)
241+func bS (bu,aY,bT,bU,bV,bW,bx,bX,bY,bZ,ca,cb) = {
242+ let bk = aw()
243+ let by = fromBase58String(bk[p])
244+ let cc = bk[q]
245+ let cd = bk[r]
246+ let ce = bk[u]
247+ let cf = bk[v]
248+ let cg = parseIntValue(bk[s])
249+ let ch = parseIntValue(bk[t])
250+ let bD = bk[o]
251+ let ci = valueOrErrorMessage(assetInfo(by), "Wr lp as").quantity
252+ let bF = if (bX)
253+ then aQ(cc)
254+ else if (if (bZ)
255+ then (cb == cc)
253256 else false)
254- then (aP(cb) - bZ)
255- else if (bY)
256- then aP(cb)
257- else (aP(cb) - bS)
258- let bG = if (bW)
259- then aP(cc)
260- else if (if (bY)
261- then (ca == cc)
257+ then (aQ(cc) - ca)
258+ else if (bZ)
259+ then aQ(cc)
260+ else (aQ(cc) - bT)
261+ let bH = if (bX)
262+ then aQ(cd)
263+ else if (if (bZ)
264+ then (cb == cd)
262265 else false)
263- then (aP(cc) - bZ)
264- else if (bY)
265- then aP(cc)
266- else (aP(cc) - bU)
267- let ci = A(bS, cf)
268- let cj = A(bU, cg)
269- let ck = aR(cj, ci)
270- let bF = A(bE, cf)
271- let bH = A(bG, cg)
272- let cl = if ((ch == 0))
266+ then (aQ(cd) - ca)
267+ else if (bZ)
268+ then aQ(cd)
269+ else (aQ(cd) - bV)
270+ let cj = z(bT, cg)
271+ let ck = z(bV, ch)
272+ let cl = aS(ck, cj)
273+ let bG = z(bF, cg)
274+ let bI = z(bH, ch)
275+ let cm = if ((ci == 0))
273276 then {
274- let bI = d
275- let cm = d
276- let bn = pow((ci * cj), 0, toBigInt(5), 1, 0, DOWN)
277- $Tuple5(D(bn, a), D(ci, cf), D(cj, cg), aR((bH + cj), (bF + ci)), cm)
277+ let bJ = d
278+ let cn = d
279+ let bo = pow((cj * ck), 0, toBigInt(5), 1, 0, DOWN)
280+ $Tuple5(C(bo, a), C(cj, cg), C(ck, ch), aS((bI + ck), (bG + cj)), cn)
278281 }
279282 else {
280- let bI = aR(bH, bF)
281- let cn = fraction(K((bI - ck)), c, bI)
282- let cm = A(aX, a)
283- if (if ((bI != d))
284- then (cn > cm)
283+ let bJ = aS(bI, bG)
284+ let co = fraction(J((bJ - cl)), c, bJ)
285+ let cn = z(aY, a)
286+ if (if ((bJ != d))
287+ then (co > cn)
285288 else false)
286- then throw(((("Price slippage " + toString(cn)) + " > ") + toString(cm)))
289+ then throw(((("Price slippage " + toString(co)) + " > ") + toString(cn)))
287290 else {
288- let bL = A(ch, a)
289- let co = fraction(ci, bI, c)
290- let cp = fraction(cj, c, bI)
291- let cq = if ((co > cj))
292- then $Tuple2(cp, cj)
293- else $Tuple2(ci, co)
294- let cr = cq._1
295- let cs = cq._2
296- let bn = fraction(bL, cs, bH)
297- $Tuple5(D(bn, a), D(cr, cf), D(cs, cg), bI, cm)
291+ let bM = z(ci, a)
292+ let cp = fraction(cj, bJ, c)
293+ let cq = fraction(ck, c, bJ)
294+ let cr = if ((cp > ck))
295+ then $Tuple2(cq, ck)
296+ else $Tuple2(cj, cp)
297+ let cs = cr._1
298+ let ct = cr._2
299+ let bo = fraction(bM, ct, bI)
300+ $Tuple5(C(bo, a), C(cs, cg), C(ct, ch), bJ, cn)
298301 }
299302 }
300- let ct = cl._1
301- let cu = cl._2
302- let cv = cl._3
303- let bJ = D(cl._4, a)
304- let cw = D(cl._5, a)
305- if ((0 >= ct))
303+ let cu = cm._1
304+ let cv = cm._2
305+ let cw = cm._3
306+ let bK = C(cm._4, a)
307+ let cx = C(cm._5, a)
308+ if ((0 >= cu))
306309 then throw("LP <= 0")
307310 else {
308- let cx = if (!(bX))
311+ let cy = if (!(bY))
309312 then 0
310- else ct
311- let cy = (bS - cu)
312- let cz = (bU - cv)
313- let cA = [IntegerEntry(N(), bJ), IntegerEntry(O(height, lastBlock.timestamp), bJ), StringEntry(R(bw, bt), aA(cu, cv, cx, bJ, aX, cw, height, lastBlock.timestamp, cy, cz))]
314- $Tuple13(ct, cx, bJ, bE, bG, ch, bx, bC, cA, cy, cz, bT, bV)
313+ else cu
314+ let cz = (bT - cv)
315+ let cA = (bV - cw)
316+ let cB = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cv, cw, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
317+ $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cB, cz, cA, bU, bW)
315318 }
316319 }
317320
318321
319-func cB (cC) = {
320- let bj = av()
321- let cD = bj[r]
322- let cE = bj[s]
323- let bC = parseIntValue(bj[p])
324- let bk = parseIntValue(bj[t])
325- let bl = parseIntValue(bj[u])
326- let cF = aP(cD)
327- let cG = aP(cE)
328- let bI = if ((cC.orderType == Buy))
329- then ba(bk, bl, (cF + cC.amount), cG)
330- else ba(bk, bl, (cF - cC.amount), cG)
331- let bJ = D(bI, a)
332- if (if (if (at())
322+func cC (cD) = {
323+ let bk = aw()
324+ let cE = bk[q]
325+ let cF = bk[r]
326+ let bD = parseIntValue(bk[o])
327+ let bl = parseIntValue(bk[s])
328+ let bm = parseIntValue(bk[t])
329+ let cG = aQ(cE)
330+ let cH = aQ(cF)
331+ let bJ = if ((cD.orderType == Buy))
332+ then bb(bl, bm, (cG + cD.amount), cH)
333+ else bb(bl, bm, (cG - cD.amount), cH)
334+ let bK = C(bJ, a)
335+ if (if (if (au())
333336 then true
334- else (bC == m))
337+ else (bD == l))
335338 then true
336- else (bC == n))
339+ else (bD == m))
337340 then throw("Admin blocked")
338341 else {
339- let cH = cC.assetPair.amountAsset
340- let cI = if ((cH == unit))
342+ let cI = cD.assetPair.amountAsset
343+ let cJ = if ((cI == unit))
341344 then "WAVES"
342- else toBase58String(value(cH))
343- let cJ = cC.assetPair.priceAsset
344- let cK = if ((cJ == unit))
345+ else toBase58String(value(cI))
346+ let cK = cD.assetPair.priceAsset
347+ let cL = if ((cK == unit))
345348 then "WAVES"
346- else toBase58String(value(cJ))
347- if (if ((cI != cD))
349+ else toBase58String(value(cK))
350+ if (if ((cJ != cE))
348351 then true
349- else (cK != cE))
352+ else (cL != cF))
350353 then throw("Wr assets")
351354 else {
352- let cL = cC.price
353- let cg = fraction(a, bl, bk)
354- let cM = G(cL, a, cg)
355- let cN = if ((cC.orderType == Buy))
356- then (bJ >= cM)
357- else (cM >= bJ)
355+ let cM = cD.price
356+ let ch = fraction(a, bm, bl)
357+ let cN = F(cM, a, ch)
358+ let cO = if ((cD.orderType == Buy))
359+ then (bK >= cN)
360+ else (cN >= bK)
358361 true
359362 }
360363 }
361364 }
362365
363366
364-func cO (cP) = if ((size(cP.payments) != 1))
367+func cP (cQ) = if ((size(cQ.payments) != 1))
365368 then throw("1 pmnt expected")
366369 else {
367- let cQ = value(cP.payments[0])
368- let bu = value(cQ.assetId)
369- let bZ = cQ.amount
370- let cl = bs(toBase58String(cP.transactionId), toBase58String(bu), bZ, cP.caller)
371- let bO = cl._1
372- let bP = cl._2
373- let bC = parseIntValue(cl._9)
374- let bQ = cl._10
375- if (if (at())
370+ let cR = value(cQ.payments[0])
371+ let bv = value(cR.assetId)
372+ let ca = cR.amount
373+ let cm = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
374+ let bP = cm._1
375+ let bQ = cm._2
376+ let bD = parseIntValue(cm._9)
377+ let bR = cm._10
378+ if (if (au())
376379 then true
377- else (bC == n))
378- then throw(("Admion blocked: " + toString(bC)))
379- else $Tuple5(bO, bP, bZ, bu, bQ)
380+ else (bD == m))
381+ then throw(("Admion blocked: " + toString(bD)))
382+ else $Tuple5(bP, bQ, ca, bv, bR)
380383 }
381384
382385
383-func cR (cS,T,cT,cU,aX,bX,bY,bZ,ca) = {
384- let cV = bR(T, aX, value(cT).amount, value(cT).assetId, value(cU).amount, value(cU).assetId, cS, false, bX, bY, bZ, ca)
385- let cW = parseIntValue(cV._8)
386- if (if (if (at())
386+func cS (cT,S,cU,cV,aY,bY,bZ,ca,cb) = {
387+ let cW = bS(S, aY, value(cU).amount, value(cU).assetId, value(cV).amount, value(cV).assetId, cT, false, bY, bZ, ca, cb)
388+ let cX = parseIntValue(cW._8)
389+ if (if (if (au())
387390 then true
388- else (cW == l))
391+ else (cX == k))
389392 then true
390- else (cW == n))
391- then throw(("Admin blocked: " + toString(cW)))
392- else cV
393+ else (cX == m))
394+ then throw(("Admin blocked: " + toString(cX)))
395+ else cW
393396 }
394397
395398
396-@Callable(cP)
397-func constructor (as,cX) = if ((cP.caller != this))
399+@Callable(cQ)
400+func constructor (as,cY) = if ((cQ.caller != this))
398401 then throw("permission denied")
399- else [StringEntry(L(), as), StringEntry(M(), cX)]
402+ else [StringEntry(K(), as), StringEntry(L(), cY)]
400403
401404
402405
403-@Callable(cP)
404-func put (cY,cZ) = {
405- let da = az()
406- let db = valueOrErrorMessage(addressFromString(da[x]), "Wr st addr")
407- let dc = valueOrErrorMessage(addressFromString(da[y]), "Wr sl addr")
408- if ((0 > cY))
406+@Callable(cQ)
407+func put (cZ,da) = {
408+ let db = aA()
409+ let dc = valueOrErrorMessage(addressFromString(db[w]), "Wr st addr")
410+ let dd = valueOrErrorMessage(addressFromString(db[x]), "Wr sl addr")
411+ if ((0 > cZ))
409412 then throw("Invalid slippage.")
410- else if ((size(cP.payments) != 2))
413+ else if ((size(cQ.payments) != 2))
411414 then throw("2 pmnts expected")
412415 else {
413- let dd = cR(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], cY, true, false, 0, "")
414- let cx = dd._2
415- let de = dd._7
416- let bQ = dd._9
417- let cy = dd._10
418- let cz = dd._11
419- let by = dd._12
420- let bz = dd._13
421- let df = invoke(as, "emit", [cx], nil)
422- if ((df == df))
416+ let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], cZ, true, false, 0, "")
417+ let cy = de._2
418+ let df = de._7
419+ let bR = de._9
420+ let cz = de._10
421+ let cA = de._11
422+ let bz = de._12
423+ let bA = de._13
424+ let dg = invoke(as, "emit", [cy], nil)
425+ if ((dg == dg))
423426 then {
424- let dg = if ((cy > 0))
425- then invoke(dc, "put", nil, [AttachedPayment(by, cy)])
427+ let dh = if ((cz > 0))
428+ then invoke(dd, "put", nil, [AttachedPayment(bz, cz)])
426429 else nil
427- if ((dg == dg))
430+ if ((dh == dh))
428431 then {
429- let dh = if ((cz > 0))
430- then invoke(dc, "put", nil, [AttachedPayment(bz, cz)])
432+ let di = if ((cA > 0))
433+ then invoke(dd, "put", nil, [AttachedPayment(bA, cA)])
431434 else nil
432- if ((dh == dh))
435+ if ((di == di))
433436 then {
434- let di = if (cZ)
437+ let dj = if (da)
435438 then {
436- let dj = invoke(db, "stake", nil, [AttachedPayment(de, cx)])
437- if ((dj == dj))
439+ let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
440+ if ((dk == dk))
438441 then nil
439442 else throw("Strict value is not equal to itself.")
440443 }
441- else [ScriptTransfer(cP.caller, cx, de)]
442- (bQ ++ di)
444+ else [ScriptTransfer(cQ.caller, cy, df)]
445+ (bR ++ dj)
443446 }
444447 else throw("Strict value is not equal to itself.")
445448 }
446449 else throw("Strict value is not equal to itself.")
447450 }
448451 else throw("Strict value is not equal to itself.")
449452 }
450453 }
451454
452455
453456
454-@Callable(cP)
455-func putOneTkn (dk,dl,dm,aX,cZ) = {
456- let bj = az()
457- let db = valueOrErrorMessage(addressFromString(bj[x]), "Wr st addr")
458- let dc = valueOrErrorMessage(addressFromString(bj[y]), "Wr sl addr")
459- let dn = valueOrErrorMessage(addressFromString(bj[z]), "Wr gwx addr")
460- let do = av()
461- let by = do[r]
462- let bz = do[s]
463- let bA = parseIntValue(do[t])
464- let bB = parseIntValue(do[u])
465- if (if (if (if ((0 >= aX))
466- then true
467- else (0 >= dk))
457+@Callable(cQ)
458+func putOneTkn (dl,dm,dn,aY,da) = {
459+ let bk = aA()
460+ let dc = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
461+ let dd = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
462+ let do = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
463+ let dp = aw()
464+ let bz = dp[q]
465+ let bA = dp[r]
466+ let bB = parseIntValue(dp[s])
467+ let bC = parseIntValue(dp[t])
468+ if (if (if (if ((0 >= aY))
468469 then true
469470 else (0 >= dl))
470471 then true
471472 else (0 >= dm))
473+ then true
474+ else (0 >= dn))
472475 then throw("Wrong params")
473- else if ((size(cP.payments) != 1))
476+ else if ((size(cQ.payments) != 1))
474477 then throw("1 pmnt expected")
475478 else {
476- let cQ = value(cP.payments[0])
477- let bu = toBase58String(value(cQ.assetId))
478- let bZ = cQ.amount
479- let bE = aP(by)
480- let bG = aP(bz)
481- let dp = if ((bu == by))
482- then $Tuple6((bE - bZ), bG, (bZ - dk), dl, 0, 0)
483- else if ((bu == bz))
484- then $Tuple6(bE, (bG - bZ), 0, 0, (bZ - dl), dk)
479+ let cR = value(cQ.payments[0])
480+ let bv = toBase58String(value(cR.assetId))
481+ let ca = cR.amount
482+ let bF = aQ(bz)
483+ let bH = aQ(bA)
484+ let dq = if ((bv == bz))
485+ then $Tuple6((bF - ca), bH, (ca - dl), dm, 0, 0)
486+ else if ((bv == bA))
487+ then $Tuple6(bF, (bH - ca), 0, 0, (ca - dm), dl)
485488 else throw("wrong pmtAssetId")
486- let dq = dp._1
487- let dr = dp._2
488- let ds = dp._3
489- let dt = dp._4
490- let du = dp._5
491- let dv = dp._6
492- let dw = invoke(dn, "calcD", [toString(dq), toString(dr), f, g, h], nil)
493- let dx = invoke(dn, "calcD", [toString(toBigInt(((dq + ds) - dv))), toString(toBigInt(((dr + du) - dt))), f, g, h], nil)
494- let dy = parseBigIntValue(al(dw))
489+ let dr = dq._1
490+ let ds = dq._2
491+ let dt = dq._3
492+ let du = dq._4
493+ let dv = dq._5
494+ let dw = dq._6
495+ let dx = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
496+ let dy = invoke(do, "calcD", [toString(toBigInt(((dr + dt) - dw))), toString(toBigInt(((ds + dv) - du))), at, f, g], nil)
495497 let dz = parseBigIntValue(al(dx))
496- let dA = aU(dz, dy, toBigInt(1000))
497- if ((dA == dA))
498+ let dA = parseBigIntValue(al(dy))
499+ let dB = aV(dA, dz, toBigInt(1000))
500+ if ((dB == dB))
498501 then {
499- let dd = cR(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(fromBase58String(by), dk), AttachedPayment(fromBase58String(bz), dl), 50000000000, true, true, bZ, bu)
500- let dB = dd._2
501- let de = dd._7
502- let bQ = dd._9
503- let cy = dd._10
504- let cz = dd._11
505- let dC = aU(toBigInt(dB), toBigInt(dm), toBigInt(aX))
506- let cx = toInt(dC._2)
507- let df = invoke(as, "emit", [cx], nil)
508- if ((df == df))
502+ let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(fromBase58String(bz), dl), AttachedPayment(fromBase58String(bA), dm), 50000000000, true, true, ca, bv)
503+ let dC = de._2
504+ let df = de._7
505+ let bR = de._9
506+ let cz = de._10
507+ let cA = de._11
508+ let dD = aV(toBigInt(dC), toBigInt(dn), toBigInt(aY))
509+ let cy = toInt(dD._2)
510+ let dg = invoke(as, "emit", [cy], nil)
511+ if ((dg == dg))
509512 then {
510- let dg = if ((cy > 0))
511- then invoke(dc, "put", nil, [AttachedPayment(fromBase58String(by), cy)])
513+ let dh = if ((cz > 0))
514+ then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
512515 else nil
513- if ((dg == dg))
516+ if ((dh == dh))
514517 then {
515- let dh = if ((cz > 0))
516- then invoke(dc, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
518+ let di = if ((cA > 0))
519+ then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
517520 else nil
518- if ((dh == dh))
521+ if ((di == di))
519522 then {
520- let di = if (cZ)
523+ let dj = if (da)
521524 then {
522- let dj = invoke(db, "stake", nil, [AttachedPayment(de, cx)])
523- if ((dj == dj))
525+ let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
526+ if ((dk == dk))
524527 then nil
525528 else throw("Strict value is not equal to itself.")
526529 }
527- else [ScriptTransfer(cP.caller, cx, de)]
528- (bQ ++ di)
530+ else [ScriptTransfer(cQ.caller, cy, df)]
531+ (bR ++ dj)
529532 }
530533 else throw("Strict value is not equal to itself.")
531534 }
532535 else throw("Strict value is not equal to itself.")
533536 }
534537 else throw("Strict value is not equal to itself.")
535538 }
536539 else throw("Strict value is not equal to itself.")
537540 }
538541 }
539542
540543
541544
542-@Callable(cP)
543-func putForFree (dD) = if ((0 > dD))
545+@Callable(cQ)
546+func putForFree (dE) = if ((0 > dE))
544547 then throw("Invalid slippage")
545- else if ((size(cP.payments) != 2))
548+ else if ((size(cQ.payments) != 2))
546549 then throw("2 payments expected")
547550 else {
548- let dd = cR(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], dD, false, false, 0, "")
549- dd._9
551+ let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], dE, false, false, 0, "")
552+ de._9
550553 }
551554
552555
553556
554-@Callable(cP)
557+@Callable(cQ)
555558 func get () = {
556- let cl = cO(cP)
557- let dE = cl._1
558- let bP = cl._2
559- let bZ = cl._3
560- let bu = cl._4
561- let bQ = cl._5
562- let dF = invoke(as, "burn", [bZ], [AttachedPayment(bu, bZ)])
563- if ((dF == dF))
564- then bQ
559+ let cm = cP(cQ)
560+ let dF = cm._1
561+ let bQ = cm._2
562+ let ca = cm._3
563+ let bv = cm._4
564+ let bR = cm._5
565+ let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
566+ if ((dG == dG))
567+ then bR
565568 else throw("Strict value is not equal to itself.")
566569 }
567570
568571
569572
570-@Callable(cP)
571-func getOneTkn (dG,dH,dI,dJ,aX) = if ((size(cP.payments) != 1))
573+@Callable(cQ)
574+func getOneTkn (dH,dI,dJ,dK,aY) = if ((size(cQ.payments) != 1))
572575 then throw("1 payment expected")
573576 else {
574- let bj = av()
575- let bx = bj[q]
576- let by = bj[r]
577- let bz = bj[s]
578- let bA = parseIntValue(bj[t])
579- let bB = parseIntValue(bj[u])
580- let bC = bj[p]
581- let dK = az()
582- let dn = valueOrErrorMessage(addressFromString(dK[z]), "Wr sl addr")
583- if (if ((dJ != by))
584- then (dJ != bz)
577+ let bk = aw()
578+ let by = bk[p]
579+ let bz = bk[q]
580+ let bA = bk[r]
581+ let bB = parseIntValue(bk[s])
582+ let bC = parseIntValue(bk[t])
583+ let bD = bk[o]
584+ let dL = aA()
585+ let do = valueOrErrorMessage(addressFromString(dL[y]), "Wr sl addr")
586+ if (if ((dK != bz))
587+ then (dK != bA)
585588 else false)
586589 then throw("Wr out as")
587590 else {
588- let dL = if ((dJ == by))
589- then by
590- else bz
591- let cQ = value(cP.payments[0])
592- let bw = cP.caller
593- let bt = toBase58String(cP.transactionId)
594- let bu = value(cQ.assetId)
595- let bZ = cQ.amount
596- if (if (if (if ((0 > aX))
597- then true
598- else (0 > dG))
591+ let dM = if ((dK == bz))
592+ then bz
593+ else bA
594+ let cR = value(cQ.payments[0])
595+ let bx = cQ.caller
596+ let bu = toBase58String(cQ.transactionId)
597+ let bv = value(cR.assetId)
598+ let ca = cR.amount
599+ if (if (if (if ((0 > aY))
599600 then true
600601 else (0 > dH))
601602 then true
602603 else (0 > dI))
604+ then true
605+ else (0 > dJ))
603606 then throw("Wrong params")
604- else if ((bx != toBase58String(bu)))
607+ else if ((by != toBase58String(bv)))
605608 then throw("Invalid LP")
606609 else {
607- let cV = bs(toBase58String(cP.transactionId), toBase58String(bu), bZ, cP.caller)
608- let dM = cV._1
609- let dN = cV._2
610- let bE = aP(by)
611- let bG = aP(bz)
612- let dO = if ((dJ == by))
613- then $Tuple7((bE - dM), (bG - dN), (dI - dM), dH, 0, 0, (dM + dG))
614- else if ((dJ == bz))
615- then $Tuple7((bE - dM), (bG - dN), 0, 0, (dI - dN), dG, (dN + dH))
610+ let cW = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
611+ let dN = cW._1
612+ let dO = cW._2
613+ let bF = aQ(bz)
614+ let bH = aQ(bA)
615+ let dP = if ((dK == bz))
616+ then $Tuple7((bF - dN), (bH - dO), (dJ - dN), dI, 0, 0, (dN + dH))
617+ else if ((dK == bA))
618+ then $Tuple7((bF - dN), (bH - dO), 0, 0, (dJ - dO), dH, (dO + dI))
616619 else throw("wrong outAssetId")
617- let dq = dO._1
618- let dr = dO._2
619- let ds = dO._3
620- let dt = dO._4
621- let du = dO._5
622- let dv = dO._6
623- let dP = dO._7
624- let dQ = invoke(dn, "calcD", [toString(dq), toString(dr), f, g, h], nil)
625- let dR = invoke(dn, "calcD", [toString(((dq - ds) + dv)), toString(((dr + dt) - du)), f, g, h], nil)
626- let dA = aU(parseBigIntValue(al(dR)), parseBigIntValue(al(dQ)), toBigInt(1000))
627- if ((dA == dA))
620+ let dr = dP._1
621+ let ds = dP._2
622+ let dt = dP._3
623+ let du = dP._4
624+ let dv = dP._5
625+ let dw = dP._6
626+ let dQ = dP._7
627+ let dR = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
628+ let dS = invoke(do, "calcD", [toString(((dr - dt) + dw)), toString(((ds + du) - dv)), at, f, g], nil)
629+ let dB = aV(parseBigIntValue(al(dS)), parseBigIntValue(al(dR)), toBigInt(1000))
630+ if ((dB == dB))
628631 then {
629- let dS = aU(toBigInt(dP), toBigInt(dI), toBigInt(aX))
630- if ((dS == dS))
632+ let dT = aV(toBigInt(dQ), toBigInt(dJ), toBigInt(aY))
633+ if ((dT == dT))
631634 then {
632- let dT = if ((dJ == by))
633- then $Tuple2(toInt(dS._2), 0)
634- else $Tuple2(0, toInt(dS._2))
635- let bI = aR(A(bG, bB), A(bE, bA))
636- let bJ = D(bI, a)
637- let bQ = [ScriptTransfer(bw, if ((dL == by))
638- then dT._1
639- else dT._2, if ((dL == "WAVES"))
635+ let dU = if ((dK == bz))
636+ then $Tuple2(toInt(dT._2), 0)
637+ else $Tuple2(0, toInt(dT._2))
638+ let bJ = aS(z(bH, bC), z(bF, bB))
639+ let bK = C(bJ, a)
640+ let bR = [ScriptTransfer(bx, if ((dM == bz))
641+ then dU._1
642+ else dU._2, if ((dM == "WAVES"))
640643 then unit
641- else fromBase58String(dL)), StringEntry(U(toString(bw), bt), aL(dT._1, dT._2, bZ, bJ, height, lastBlock.timestamp)), IntegerEntry(N(), bJ), IntegerEntry(O(height, lastBlock.timestamp), bJ)]
642- if ((bQ == bQ))
644+ else fromBase58String(dM)), StringEntry(T(toString(bx), bu), aM(dU._1, dU._2, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
645+ if ((bR == bR))
643646 then {
644- let dU = invoke(as, "burn", [bZ], [AttachedPayment(bu, bZ)])
645- if ((dU == dU))
646- then bQ
647+ let dV = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
648+ if ((dV == dV))
649+ then bR
647650 else throw("Strict value is not equal to itself.")
648651 }
649652 else throw("Strict value is not equal to itself.")
650653 }
651654 else throw("Strict value is not equal to itself.")
652655 }
653656 else throw("Strict value is not equal to itself.")
654657 }
655658 }
656659 }
657660
658661
659662
660-@Callable(cP)
661-func getNoLess (dV,dW) = {
662- let cl = cO(cP)
663- let bO = cl._1
664- let bP = cl._2
665- let bZ = cl._3
666- let bu = cl._4
667- let bQ = cl._5
668- if ((dV > bO))
669- then throw(((("Failed: " + toString(bO)) + " < ") + toString(dV)))
670- else if ((dW > bP))
671- then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
663+@Callable(cQ)
664+func getNoLess (dW,dX) = {
665+ let cm = cP(cQ)
666+ let bP = cm._1
667+ let bQ = cm._2
668+ let ca = cm._3
669+ let bv = cm._4
670+ let bR = cm._5
671+ if ((dW > bP))
672+ then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
673+ else if ((dX > bQ))
674+ then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dX)))
672675 else {
673- let dF = invoke(as, "burn", [bZ], [AttachedPayment(bu, bZ)])
674- if ((dF == dF))
675- then bQ
676+ let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
677+ if ((dG == dG))
678+ then bR
676679 else throw("Strict value is not equal to itself.")
677680 }
678681 }
679682
680683
681684
682-@Callable(cP)
683-func unstakeAndGet (dX) = {
684- let dY = if ((size(cP.payments) != 0))
685+@Callable(cQ)
686+func unstakeAndGet (dY) = {
687+ let dZ = if ((size(cQ.payments) != 0))
685688 then throw("No pmnts expected")
686689 else true
687- if ((dY == dY))
690+ if ((dZ == dZ))
688691 then {
689- let bj = av()
690- let dZ = az()
691- let de = fromBase58String(bj[q])
692- let ea = valueOrErrorMessage(addressFromString(dZ[x]), "Wr st addr")
693- let eb = invoke(ea, "unstake", [toBase58String(de), dX], nil)
694- if ((eb == eb))
692+ let bk = aw()
693+ let ea = aA()
694+ let df = fromBase58String(bk[p])
695+ let eb = valueOrErrorMessage(addressFromString(ea[w]), "Wr st addr")
696+ let ec = invoke(eb, "unstake", [toBase58String(df), dY], nil)
697+ if ((ec == ec))
695698 then {
696- let cV = bs(toBase58String(cP.transactionId), toBase58String(de), dX, cP.caller)
697- let bC = parseIntValue(cV._9)
698- let bQ = cV._10
699- let ec = if (if (at())
699+ let cW = bt(toBase58String(cQ.transactionId), toBase58String(df), dY, cQ.caller)
700+ let bD = parseIntValue(cW._9)
701+ let bR = cW._10
702+ let ed = if (if (au())
700703 then true
701- else (bC == n))
702- then throw(("Admin blocked: " + toString(bC)))
704+ else (bD == m))
705+ then throw(("Admin blocked: " + toString(bD)))
703706 else true
704- if ((ec == ec))
707+ if ((ed == ed))
705708 then {
706- let dF = invoke(as, "burn", [dX], [AttachedPayment(de, dX)])
707- if ((dF == dF))
708- then bQ
709+ let dG = invoke(as, "burn", [dY], [AttachedPayment(df, dY)])
710+ if ((dG == dG))
711+ then bR
709712 else throw("Strict value is not equal to itself.")
710713 }
711714 else throw("Strict value is not equal to itself.")
712715 }
713716 else throw("Strict value is not equal to itself.")
714717 }
715718 else throw("Strict value is not equal to itself.")
716719 }
717720
718721
719722
720-@Callable(cP)
721-func activate (ed,ee) = if ((toString(cP.caller) != toString(as)))
723+@Callable(cQ)
724+func activate (ee,ef) = if ((toString(cQ.caller) != toString(as)))
722725 then throw("permissions denied")
723- else $Tuple2([StringEntry(V(), ed), StringEntry(W(), ee)], "success")
726+ else $Tuple2([StringEntry(U(), ee), StringEntry(V(), ef)], "success")
724727
725728
726729
727-@Callable(cP)
728-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
730+@Callable(cQ)
731+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aw())
729732
730733
731734
732-@Callable(cP)
733-func getAccBalanceWrapperREADONLY (aQ) = $Tuple2(nil, aP(aQ))
735+@Callable(cQ)
736+func getAccBalanceWrapperREADONLY (aR) = $Tuple2(nil, aQ(aR))
734737
735738
736739
737-@Callable(cP)
738-func calcPricesWrapperREADONLY (bd,be,bi) = {
739- let br = bh(bd, be, bi)
740- $Tuple2(nil, [toString(br[0]), toString(br[1]), toString(br[2])])
740+@Callable(cQ)
741+func calcPricesWrapperREADONLY (be,bf,bj) = {
742+ let bs = bi(be, bf, bj)
743+ $Tuple2(nil, [toString(bs[0]), toString(bs[1]), toString(bs[2])])
741744 }
742745
743746
744747
745-@Callable(cP)
746-func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
748+@Callable(cQ)
749+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
747750
748751
749752
750-@Callable(cP)
751-func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
753+@Callable(cQ)
754+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
752755
753756
754757
755-@Callable(cP)
756-func calcPriceBigIntWrapperREADONLY (aS,aT) = $Tuple2(nil, toString(aR(parseBigIntValue(aS), parseBigIntValue(aT))))
758+@Callable(cQ)
759+func calcPriceBigIntWrapperREADONLY (aT,aU) = $Tuple2(nil, toString(aS(parseBigIntValue(aT), parseBigIntValue(aU))))
757760
758761
759762
760-@Callable(cP)
761-func estimatePutOperationWrapperREADONLY (bt,aX,bS,bT,bU,bV,ef,bW,bX) = $Tuple2(nil, bR(bt, aX, bS, bT, bU, bV, ef, bW, bX, false, 0, ""))
763+@Callable(cQ)
764+func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eg,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eg, bX, bY, false, 0, ""))
762765
763766
764767
765-@Callable(cP)
766-func estimateGetOperationWrapperREADONLY (bt,eg,bv,ef) = {
767- let cl = bs(bt, eg, bv, addressFromStringValue(ef))
768- $Tuple2(nil, $Tuple10(cl._1, cl._2, cl._3, cl._4, cl._5, cl._6, cl._7, toString(cl._8), cl._9, cl._10))
768+@Callable(cQ)
769+func estimateGetOperationWrapperREADONLY (bu,eh,bw,eg) = {
770+ let cm = bt(bu, eh, bw, addressFromStringValue(eg))
771+ $Tuple2(nil, $Tuple10(cm._1, cm._2, cm._3, cm._4, cm._5, cm._6, cm._7, toString(cm._8), cm._9, cm._10))
769772 }
770773
771774
772-@Verifier(eh)
773-func ei () = {
774- let am = eh
775+@Verifier(ei)
776+func ej () = {
777+ let am = ei
775778 if ($isInstanceOf(am, "Order"))
776779 then {
777- let cC = am
778- let ej = au()
779- let ai = cB(cC)
780- let ek = sigVerify(cC.bodyBytes, cC.proofs[0], cC.senderPublicKey)
781- let el = sigVerify(cC.bodyBytes, cC.proofs[1], ej)
780+ let cD = am
781+ let ek = av()
782+ let ai = cC(cD)
783+ let el = sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
784+ let em = sigVerify(cD.bodyBytes, cD.proofs[1], ek)
782785 if (if (if (ai)
783- then ek
784- else false)
785786 then el
786787 else false)
788+ then em
789+ else false)
787790 then true
788- else ah(ai, ek, el)
791+ else ah(ai, el, em)
789792 }
790793 else {
791- let em = valueOrElse(getString(this, M()), j)
792- if ((em == j))
793- then sigVerify(eh.bodyBytes, eh.proofs[0], eh.senderPublicKey)
794- else sigVerify(eh.bodyBytes, eh.proofs[0], fromBase58String(em))
794+ let en = valueOrElse(getString(this, L()), i)
795+ if ((en == i))
796+ then sigVerify(ei.bodyBytes, ei.proofs[0], ei.senderPublicKey)
797+ else sigVerify(ei.bodyBytes, ei.proofs[0], fromBase58String(en))
795798 }
796799 }
797800

github/deemru/w8io/169f3d6 
351.80 ms