tx · 6JfXGKFmXEw4AVzHKcGZS2eJ1bzj5Cqt5gD3ahmxoCvh

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03200000 Waves

2023.01.12 12:15 [2401539] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

{ "type": 13, "id": "6JfXGKFmXEw4AVzHKcGZS2eJ1bzj5Cqt5gD3ahmxoCvh", "fee": 3200000, "feeAssetId": null, "timestamp": 1673514928249, "version": 1, "sender": "3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni", "senderPublicKey": "BRyVaCURUMe7ssUbXucteig1g44bGwWirJQzugKahUQ1", "proofs": [ "pd2V3ZGL2Hj4aTzkoyVE5iYf4vKLU3oXzpudSctuVn2WD9AM36HM8ZwyXLez1UVkZ8aVjB4assSvpG4xUPb4hpm" ], "script": "base64:BgK/IggCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCCIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiCnNsaXBwYWdlNEQiC3dhdmVzU3RyaW5nIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIDdG9lIgNvclYiBnNlbmRyViIGbWF0Y2hWIgNzdHIiByRtYXRjaDAiBnZhbFN0ciIEc3RyZiIEYWRkciIDa2V5IgRpbnRmIgh0aHJvd0VyciIDbXNnIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNjkwOTcwOTUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIDZmVlIglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxNzU2MjE3OTA3Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIDbW9hIgVvcmRlciIHYW10QXNJZCIGcHJBc0lkIg9hY2NBbXRBc0JhbGFuY2UiDmFjY1ByQXNCYWxhbmNlIgpvckFtdEFzc2V0IgpvckFtdEFzU3RyIglvclByQXNzZXQiCW9yUHJBc1N0ciIKb3JkZXJQcmljZSIOY2FzdE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgJjZyIBaSIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10IgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiILeHAwX3hwMV9uX24iEGFubl9zX2FQcmVjaXNpb24iDmFubl9hUHJlY2lzaW9uIgJuMSIEY2FsYyIDYWNjIgNjdXIiDSR0MDIyNDU5MjI0NzkiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDIyOTAwMjI5NDciAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjM0NDcyMzQ2NyIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMzc3NDIzODIxIg1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg9scEFzc2V0RW1pc3Npb24iDWNoZWNoRW1pc3Npb24iDSR0MDI0NjA0MjUwNjYiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNTA3MjI1MjQ4IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI1MjUyMjU1MDYiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDI3NTA4Mjc2MTkiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjc4MDkyODExNiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgFtIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzM0NzgzMzYzNiIHZXN0aW1MUCIHbWF4U2xwZyIGZXN0UHV0IglvdXRBbXRBbXQiDWlzR2V0RGlzYWJsZWQiDSR0MDM2MjU4MzY0MTMiDWxwQXNzZXRBbW91bnQiCmxwRW1pc3Npb24iBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDM3MjAzMzcyNTgiDSR0MDM3NjAzMzc3MTgiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiF2xwQXNzZXRSZWNpcGllbnRBZGRyZXNzIg0kdDA0MTY4ODQxODc2IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDIxMzU0MjIzOCINJHQwNDI1MTc0MjYyMSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgVXQVZFUwABagIDMTAwAAFrAgExAAFsAgJfXwABbQIAAAFuAAEAAW8AAgABcAADAAFxAAQAAXIAAQABcwACAAF0AAMAAXUABAABdgAFAAF3AAYAAXgABwABeQAIAAF6AAkAAUEAAQABQgAGAAFDAAcAAUQACgABRQkAawMACgUBYQCQTgEBRgIBRwFICQC8AgMJALYCAQUBRwUBYwkAtgIBBQFIAQFJAgFKAUsJAKADAQkAvAIDBQFKCQC2AgEFAUsFAWMBAUwDAU0BTgFPCQBrAwUBTQUBTgUBTwEBUAEBSgMJAL8CAgUBZAUBSgkAvgIBBQFKBQFKAQFRAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBbAEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AQJhZQACByVzX19hbXABAmFmAAINJXNfX2FkZG9uQWRkcgECYWcAAhElc19fZmFjdG9yeUNvbmZpZwECYWgAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFpAgJhagJhawkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWoCAl9fBQJhawIIX19jb25maWcBAmFsAQJhbQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbQECYW4AAgwlc19fc2h1dGRvd24BAmFvAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFwAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFxAwJhcgJhcwJhdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcgILIHNuZHJWYWxpZD0JAKUDAQUCYXMCDCBtdGNoclZhbGlkPQkApQMBBQJhdAECYXUBAUoEAmF2BQFKAwkAAQIFAmF2AgZTdHJpbmcEAmF3BQJhdgUCYXcJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJheAICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQQICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQgECYUMJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFDBQNuaWwCASAAAmFECQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQR0aGlzCQEBUgAAAmFFCgACYUYJAPwHBAUCYUQCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRgIDSW50BQJhRgkAAgEJAKwCAgkAAwEFAmFGAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFHCgACYUYJAPwHBAUCYUQCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUYCA0ludAUCYUYJAAIBCQCsAgIJAAMBBQJhRgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhSAkBAmF4AgUEdGhpcwkBAmFlAAECYUkACQELdmFsdWVPckVsc2UCCQCbCAIFAmFECQECYW4ABwECYUoACQDZBAEJAQJheAIFAmFECQECYWgAAAJhSwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUQJAQJhcAABAmFMAAQCYU0JAQJheAIFBHRoaXMJAQJhYwAEAmFOCQECYXgCBQR0aGlzCQECYWQABAJhTwkBAmFBAgUCYUQJAQJhbAEFAmFOBAJhagkBAmFBAgUCYUQJAQJhbAEFAmFNCQC1CQIJAQJheAIFAmFECQECYWkCCQCkAwEFAmFqCQCkAwEFAmFPBQFsAQJhUAECYVEDCQAAAgUCYVEFAWkFBHVuaXQJANkEAQUCYVEBAmFSAQJhUQMJAAACBQJhUQUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhUQECYVMBAmFUCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVQFAXIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBcwkA2QQBCQCRAwIFAmFUBQF0CQECYVABCQCRAwIFAmFUBQF1CQECYVABCQCRAwIFAmFUBQF2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBeAACYVUJAQJhUwEJAQJhTAAAAmFWBQJhVQACYVcIBQJhVgJfMQACYVgIBQJhVgJfMgACYVkIBQJhVgJfMwACYVoIBQJhVgJfNAACYmEIBQJhVgJfNQACYmIIBQJhVgJfNgACYmMIBQJhVgJfNwECYmQACQC1CQIJAQJheAIFAmFECQECYWcABQFsAAJiZQkBAmJkAAACYmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJlBQFBAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJlBQFDAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJlBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJqCgJiawJibAJibQJibgJibwJicAJicQJicgJicwJidAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQFA25pbAUBbAECYnUGAmJ2AmJ3AmJ4AmJuAmJxAmJyCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWwBAmJ5AQJiegMJAAACBQJiegIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnoBAmJBAgJiQgJiQwkAvAIDBQJiQgUBYwUCYkMBAmJEAwJiRQJiRgJiRwQCYkgJALwCAwkAuAICBQJiRQUCYkYFAWIFAmJGBAJiSQkAvwICCQC4AgIFAmJHCQEBUAEFAmJIBQFkAwkBASEBBQJiSQkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiSAkAlAoCBQJiSQkAmQMBCQDMCAIFAmJFCQDMCAIFAmJGBQNuaWwBAmJKAwJiSwJiTAJiTQQCYkgJALwCAwUCYkwFAWIFAmJLBAJiTgkAvwICBQJiTQUCYkgDAwUCYk4GCQC/AgIFAmJMBQJiSwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYkwCASAJAKYDAQUCYksCASAJAKYDAQUCYkgCASAJAKYDAQUCYk0FAmJOAQJiTwQCYlACYlECYlICYlMEAmJUCQEBRgIFAmJSBQJiUAQCYlUJAQFGAgUCYlMFAmJRCQECYkECBQJiVQUCYlQBAmJWAwJiUgJiUwJiVwQCYlgJAQJhTAAEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXcEAmJaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXgEAmNhCQECYk8EBQJiWQUCYloFAmJSBQJiUwQCYkMJAQFGAgUCYlIFAmJZBAJiQgkBAUYCBQJiUwUCYloEAmNiCQEBRgIFAmJXBQFhBAJjYwkBAmJBAgUCYkMFAmNiBAJjZAkBAmJBAgUCYkIFAmNiCQDMCAIFAmNhCQDMCAIFAmNjCQDMCAIFAmNkBQNuaWwBAmNlAwJiUgJiUwJiVwQCY2YJAQJiVgMFAmJSBQJiUwUCYlcJAMwIAgkBAUkCCQCRAwIFAmNmAAAFAWEJAMwIAgkBAUkCCQCRAwIFAmNmAAEFAWEJAMwIAgkBAUkCCQCRAwIFAmNmAAIFAWEFA25pbAECY2cCAmNoAmNpBAJjagMJAAACBQJjaQAAAAAJAGsDBQJjaAUCY2kFAWEJAJQKAgkAZQIFAmNoBQJjagUCY2oBAmNrBAJjbAJjbQJjbgJjbwQCYlgJAQJhTAAEAmNwCQCRAwIFAmJYBQF0BAJjcQkAkQMCBQJiWAUBdQQCY3IJAJEDAgUCYlgFAXYEAmNzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXcEAmN0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXgEAmN1CQCRAwIFAmJYBQFzBAJjdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNwAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmNwBQJjbQkAAgECD1dyb25nIHBtdCBhc3NldAQCY3cJAQJieQEFAmNxBAJjeAkBAUYCBQJjdwUCY3MEAmN5CQECYnkBBQJjcgQCY3oJAQFGAgUCY3kFAmN0BAJjQQkBAmJBAgUCY3oFAmN4BAJjQgkBAUkCBQJjQQUBYQQCY0MJAQFGAgUCY24FAWEEAmNECQEBRgIFAmN2BQFhBAJjRQkAvAIDBQJjeAUCY0MFAmNEBAJjRgkAvAIDBQJjegUCY0MFAmNEBAJjRwkBAUkCBQJjRQUCY3MEAmNICQEBSQIFAmNGBQJjdAQCY0kDCQAAAgUCY2wCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNvBQJjRwMJAAACBQJjcQIFV0FWRVMFBHVuaXQJANkEAQUCY3EJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY28FAmNIAwkAAAIFAmNyAgVXQVZFUwUEdW5pdAkA2QQBBQJjcgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAmNvBQJjbAkBAmJ1BgUCY0cFAmNIBQJjbgUCY0IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0IFA25pbAkAnAoKBQJjRwUCY0gFAmNxBQJjcgUCY3cFAmN5BQJjdgUCY0EFAmN1BQJjSQECY0oNAmNsAmJHAmNLAmNMAmNNAmNOAmNvAmNPAmNQAmNRAmNSAmNTAmNUBAJiWAkBAmFMAAQCY3AJANkEAQkAkQMCBQJiWAUBdAQCY1UJAJEDAgUCYlgFAXUEAmNWCQCRAwIFAmJYBQF2BAJjVwkAkQMCBQJiWAUBeQQCY1gJAJEDAgUCYlgFAXoEAmNZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXcEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXgEAmN1CQCRAwIFAmJYBQFzBAJkYQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjcAIIV3IgbHAgYXMIcXVhbnRpdHkEAmN3AwUCY08JAQJieQEFAmNVAwMFAmNRCQAAAgUCY1QFAmNVBwkAZQIJAQJieQEFAmNVBQJjUwMFAmNRCQECYnkBBQJjVQkAZQIJAQJieQEFAmNVBQJjSwQCY3kDBQJjTwkBAmJ5AQUCY1YDAwUCY1EJAAACBQJjVAUCY1YHCQBlAgkBAmJ5AQUCY1YFAmNTAwUCY1EJAQJieQEFAmNWCQBlAgkBAmJ5AQUCY1YFAmNNBAJkYgkBAUYCBQJjSwUCY1kEAmRjCQEBRgIFAmNNBQJjWgQCZGQJAQJiQQIFAmRjBQJkYgQCY3gJAQFGAgUCY3cFAmNZBAJjegkBAUYCBQJjeQUCY1oEAmRlAwkAAAIFAmRhAAAEAmNBBQFkBAJkZgUBZAQCY2IJAHYGCQC5AgIFAmRiBQJkYwAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUkCBQJjYgUBYQkBAUkCBQJkYgUCY1kJAQFJAgUCZGMFAmNaCQECYkECCQC3AgIFAmN6BQJkYwkAtwICBQJjeAUCZGIFAmRmBAJjQQkBAmJBAgUCY3oFAmN4BAJkZwkAvAIDCQEBUAEJALgCAgUCY0EFAmRkBQFjBQJjQQQCZGYJAQFGAgUCYkcFAWEDAwMFAmNSCQECIT0CBQJjQQUBZAcJAL8CAgUCZGcFAmRmBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkZwIDID4gCQCmAwEFAmRmBAJkaAkBAUYCBQJkYQUBYQQCZGkJALwCAwUCZGIFAmNBBQFjBAJkagkAvAIDBQJkYwUBYwUCY0EEAmRrAwkAvwICBQJkaQUCZGMJAJQKAgUCZGoFAmRjCQCUCgIFAmRiBQJkaQQCZGwIBQJkawJfMQQCZG0IBQJkawJfMgQCY2IJALwCAwUCZGgFAmRtBQJjegkAlwoFCQEBSQIFAmNiBQFhCQEBSQIFAmRsBQJjWQkBAUkCBQJkbQUCY1oFAmNBBQJkZgQCZG4IBQJkZQJfMQQCZG8IBQJkZQJfMgQCZHAIBQJkZQJfMwQCY0IJAQFJAggFAmRlAl80BQFhBAJkcQkBAUkCCAUCZGUCXzUFAWEDCQBnAgAABQJkbgkAAgECB0xQIDw9IDAEAmRyAwkBASEBBQJjUAAABQJkbgQCZHMJAGUCBQJjSwUCZG8EAmR0CQBlAgUCY00FAmRwBAJkdQMDBQJjUQkAAAIFAmNUBQJjVQcJAJQKAgUCY1MAAAMDBQJjUQkAAAIFAmNUBQJjVgcJAJQKAgAABQJjUwkAlAoCBQJkbwUCZHAEAmR2CAUCZHUCXzEEAmR3CAUCZHUCXzIEAmR4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY28FAmNsCQECYmoKBQJkdgUCZHcFAmRyBQJjQgUCYkcFAmRxBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkcwUCZHQFA25pbAkAnwoNBQJkbgUCZHIFAmNCBQJjdwUCY3kFAmRhBQJjcAUCY3UFAmR4BQJkcwUCZHQFAmNMBQJjTgECZHkBAmR6BAJiWAkBAmFMAAQCZEEJAJEDAgUCYlgFAXUEAmRCCQCRAwIFAmJYBQF2BAJjdQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJYBQFzBAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJYBQF3BAJiWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJYBQF4BAJkQwkBAmJ5AQUCZEEEAmRECQECYnkBBQJkQgQCY0EDCQAAAggFAmR6CW9yZGVyVHlwZQUDQnV5CQECYk8EBQJiWQUCYloJAGQCBQJkQwgFAmR6BmFtb3VudAUCZEQJAQJiTwQFAmJZBQJiWgkAZQIFAmRDCAUCZHoGYW1vdW50BQJkRAQCY0IJAQFJAgUCY0EFAWEDAwMJAQJhSQAGCQAAAgUCY3UFAXAGCQAAAgUCY3UFAXEJAAIBAg1BZG1pbiBibG9ja2VkBAJkRQgIBQJkeglhc3NldFBhaXILYW1vdW50QXNzZXQEAmRGAwkAAAIFAmRFBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkRQQCZEcICAUCZHoJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRIAwkAAAIFAmRHBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkRwMDCQECIT0CBQJkRgUCZEEGCQECIT0CBQJkSAUCZEIJAAIBAglXciBhc3NldHMEAmRJCAUCZHoFcHJpY2UEAmNaCQBrAwUBYQUCYloFAmJZBAJkSgkBAUwDBQJkSQUBYQUCY1oEAmRLAwkAAAIIBQJkeglvcmRlclR5cGUFA0J1eQkAZwIFAmNCBQJkSgkAZwIFAmRKBQJjQgYBAmRMAQJkTQMJAQIhPQIJAJADAQgFAmRNCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJkTgkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAQCY20JAQV2YWx1ZQEIBQJkTgdhc3NldElkBAJjUwgFAmROBmFtb3VudAQCZGUJAQJjawQJANgEAQgFAmRNDXRyYW5zYWN0aW9uSWQJANgEAQUCY20FAmNTCAUCZE0GY2FsbGVyBAJjRwgFAmRlAl8xBAJjSAgFAmRlAl8yBAJjdQkBDXBhcnNlSW50VmFsdWUBCAUCZGUCXzkEAmNJCAUCZGUDXzEwAwMJAQJhSQAGCQAAAgUCY3UFAXEJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjdQkAlwoFBQJjRwUCY0gFAmNTBQJjbQUCY0kBAmRPCgJkUAJhYQJkUQJkUgJiRwJjUAJjUQJjUgJjUwJjVAQCZGUJAQJjSg0FAmFhBQJiRwgJAQV2YWx1ZQEFAmRRBmFtb3VudAgJAQV2YWx1ZQEFAmRRB2Fzc2V0SWQICQEFdmFsdWUBBQJkUgZhbW91bnQICQEFdmFsdWUBBQJkUgdhc3NldElkBQJkUAkAAAIFAmFhAgAFAmNQBQJjUQUCY1IFAmNTBQJjVAQCY3UJAQ1wYXJzZUludFZhbHVlAQgFAmRlAl84AwMDCQECYUkABgkAAAIFAmN1BQFvBgkAAAIFAmN1BQFxCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjdQUCZGUBAmRTAQJkVAQCZFUFAWcEAmRWCQCRAwIFAmRUAAAEAmRXCQCRAwIFAmRUAAEEAmRYCQCnAwEFAWoEAmRZCQC5AgIJAKcDAQUCYUgFAmRYBAJkWgkAtwICBQJkVgUCZFcDCQAAAgUCZFoFAWUFAWUEAmVhCQC5AgIFAmRZBQJkVQQCZWIJALkCAgkAuQICCQC5AgIFAmRWBQJkVwUCZFUFAmRVBAJlYwkAugICCQC5AgIFAmVhBQJkWgUCZFgEAmVkCQC4AgIFAmVhBQJkWAQCZWUJALcCAgUCZFUFAWYKAQJlZgICZWcCZWgEAmVpBQJlZwQCZWoIBQJlaQJfMQQCZWsIBQJlaQJfMgMJAQIhPQIFAmVrBQR1bml0BQJlZwQCZWwJALoCAgkAuQICCQC5AgIFAmVqBQJlagUCZWoFAmViBAJlbQkAugICCQC5AgIJALcCAgUCZWMJALkCAgUCZWwFAmRVBQJlagkAtwICCQC6AgIJALkCAgUCZWQFAmVqBQJkWAkAuQICBQJlZQUCZWwEAmVuCQEBUQEJALgCAgUCZW0JAQV2YWx1ZQEFAmVqAwkAwAICBQFmBQJlbgkAlAoCBQJlbQUCZWgJAJQKAgUCZW0FBHVuaXQEAmVvCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVwCgACZXEFAmVvCgACZXIJAJADAQUCZXEKAAJlcwkAlAoCBQJkWgUEdW5pdAoBAmV0AgJldQJldgMJAGcCBQJldgUCZXIFAmV1CQECZWYCBQJldQkAkQMCBQJlcQUCZXYKAQJldwICZXUCZXYDCQBnAgUCZXYFAmVyBQJldQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZXcCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCCQECZXQCBQJlcwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlaggFAmVwAl8xBAJlawgFAmVwAl8yAwkBAiE9AgUCZWsFBHVuaXQFAmVqCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmVqAQJleAMCZFQCZE0CZXkEAmRVBQFnBAJlegkAkQMCBQJkVAMJAAACBQJkTQAAAAEAAAQCZFgJAKcDAQUBagQCZFkJALkCAgkApwMBBQJhSAUCZFgEAmRaBQJlegQCZWEJALkCAgUCZFkFAmRVBAJlQQkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV5BQJleQkAuQICBQJlegUCZFUFAmV5BQJkWAkAuQICBQJlYQUCZFUEAmVCCQC4AgIJALcCAgUCZFoJALoCAgkAuQICBQJleQUCZFgFAmVhBQJleQoBAmVmAgJlZwJlaAQCZUMFAmVnBAJlRAgFAmVDAl8xBAJlawgFAmVDAl8yAwkBAiE9AgUCZWsFBHVuaXQFAmVnBAJlRQkAugICCQC3AgIJALkCAgUCZUQFAmVEBQJlQQkAtwICCQC5AgIFAWcFAmVEBQJlQgQCZUYJAQFRAQkAuAICBQJlRQkBBXZhbHVlAQUCZUQDCQDAAgIFAWYFAmVGCQCUCgIFAmVFBQJlaAkAlAoCBQJlRQUEdW5pdAQCZW8JAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUcKAAJlcQUCZW8KAAJlcgkAkAMBBQJlcQoAAmVzCQCUCgIFAmV5BQR1bml0CgECZXQCAmV1AmV2AwkAZwIFAmV2BQJlcgUCZXUJAQJlZgIFAmV1CQCRAwIFAmVxBQJldgoBAmV3AgJldQJldgMJAGcCBQJldgUCZXIFAmV1CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJldwIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIFAmVzAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVECAUCZUcCXzEEAmVrCAUCZUcCXzIDCQECIT0CBQJlawUEdW5pdAUCZUQJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUQBAmVIBQJlSQJjbQJjbwJhYQJlSgQCYVQJAQJhTAAEAmNxCQCRAwIFAmFUBQF1BAJjcgkAkQMCBQJhVAUBdgQCY3AJAJEDAgUCYVQFAXQEAmNZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXcEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXgEAmVLCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjcAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZUwDCQC/AgIFAmVLBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZUwFAmVMBAJjdwkBAmJ5AQUCY3EEAmN5CQECYnkBBQJjcgQCZU0DCQAAAgUCYWECAAkAlAoCBQJjdwUCY3kDCQAAAgUCY20FAmNxAwkAZgIFAmVJBQJjdwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmN3BQJlSQUCY3kDCQAAAgUCY20FAmNyAwkAZgIFAmVJBQJjeQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY3cJAGUCBQJjeQUCZUkJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJlTggFAmVNAl8xBAJlTwgFAmVNAl8yBAJlUAMJAAACBQJjbQUCY3EJAJQKAgUCZUkAAAMJAAACBQJjbQUCY3IJAJQKAgAABQJlSQkAAgECD2ludmFsaWQgcGF5bWVudAQCZVEIBQJlUAJfMQQCZVIIBQJlUAJfMgQCZVMDBQJlSgkAlQoDCAkBAmNnAgUCZVEFAmFFAl8xCAkBAmNnAgUCZVIFAmFFAl8xCAkBAmNnAgUCZUkFAmFFAl8yCQCVCgMFAmVRBQJlUgAABAJlVAgFAmVTAl8xBAJlVQgFAmVTAl8yBAJjaggFAmVTAl8zBAJlVgkAZAIFAmVOBQJlVAQCZVcJAGQCBQJlTwUCZVUEAmJMCQECZFMBCQDMCAIJALYCAQUCZU4JAMwIAgkAtgIBBQJlTwUDbmlsBAJiSwkBAmRTAQkAzAgCCQC2AgEFAmVWCQDMCAIJALYCAQUCZVcFA25pbAQCZVgDCQC/AgIFAmJLBQJiTAYJAQV0aHJvdwADCQAAAgUCZVgFAmVYBAJlWQkAvAIDBQJlSwkAuAICBQJiSwUCYkwFAmJMBAJjQgkBAUkCCQECYkECCQEBRgIFAmVXBQJjWgkBAUYCBQJlVgUCY1kFAWEEAmR4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY28FAmFhCQECYmoKBQJlUQUCZVIJAKADAQUCZVkFAmNCAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZVoJAGsDBQJlTwUBYQUCZU4EAmZhCQBrAwUCZUkFAWEJAGQCBQJlWgUBYQQCZmIJAGUCBQJlSQUCZmEEAmZjCQC8AgMFAmVLCQC2AgEFAmZiCQC2AgEFAmVPBAJmZAkAoAMBCQC8AgMJALgCAgUCZVkFAmZjBQFiBQJmYwkAlgoECQCgAwEFAmVZBQJkeAUCY2oFAmZkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmZQYCZmYCZmcCZmgCZFACZmkCZmoEAmFUCQECYUwABAJjcAkAkQMCBQJhVAUBdAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJmawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF3BAJmbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF4BAJmbQkAkQMCBQJhVAUBcwQCY28DCQAAAgUCZFAFAmJpBQJmaQUCZFAEAmROCQEFdmFsdWUBCQCRAwIFAmZoAAAEAmNtCQEFdmFsdWUBCAUCZE4HYXNzZXRJZAQCY1MIBQJkTgZhbW91bnQEAmNsCQDYBAEFAmZqAwkBAiE9AgUCY3AJANgEAQUCY20JAAIBAghXcm9uZyBMUAQCY3cJAQJieQEFAmNxBAJjeQkBAmJ5AQUCY3IEAmZuCgACYUYJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmZgkAzAgCBQJjUwUDbmlsBQNuaWwDCQABAgUCYUYCCihJbnQsIEludCkFAmFGCQACAQkArAICCQADAQUCYUYCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZm4FAmZuBAJjaggFAmZuAl8yBAJmbwgFAmZuAl8xBAJmcAMDCQBmAgUCZmcAAAkAZgIFAmZnBQJmbwcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmcFA25pbAIABQJmbwQCZnEDCQAAAgUCZmYFAmNxCQCWCgQFAmZwAAAJAGUCCQBlAgUCY3cFAmZwBQJjagUCY3kDCQAAAgUCZmYFAmNyCQCWCgQAAAUCZnAFAmN3CQBlAgkAZQIFAmN5BQJmcAUCY2oJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZnIIBQJmcQJfMQQCZnMIBQJmcQJfMgQCZVYIBQJmcQJfMwQCZVcIBQJmcQJfNAQCZnQJAQJiQQIJAQFGAgUCZVcFAmZsCQEBRgIFAmVWBQJmawQCZnUJAQFJAgUCZnQFAWEEAmZ2AwkAAAIFAmZmAgVXQVZFUwUEdW5pdAkA2QQBBQJmZgQCZncDCQBmAgUCY2oAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCY2oFAmZ2BQNuaWwFA25pbAQCY0kJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjbwUCZnAFAmZ2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY28FAmNsCQECYnUGBQJmcgUCZnMFAmNTBQJmdQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJmdQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmdQUDbmlsBQJmdwMJAAACBQJjSQUCY0kEAmZ4CQD8BwQFAmFEAgRidXJuCQDMCAIFAmNTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNtBQJjUwUDbmlsAwkAAAIFAmZ4BQJmeAkAlAoCBQJjSQUCZnAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZ5AAQCYXYJAKIIAQkBAVMAAwkAAQIFAmF2AgZTdHJpbmcEAmRaBQJhdgkA2QQBBQJkWgMJAAECBQJhdgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmegAEAmF2CQCiCAEJAQFUAAMJAAECBQJhdgIGU3RyaW5nBAJkWgUCYXYJANkEAQUCZFoDCQABAgUCYXYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZkEJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZkIBAmRNBAJhdgkBAmZ5AAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZkMFAmF2CQAAAggFAmRND2NhbGxlclB1YmxpY0tleQUCZkMDCQABAgUCYXYCBFVuaXQJAAACCAUCZE0GY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmZEAQJkTQQCYXYJAQJmeQADCQABAgUCYXYCCkJ5dGVWZWN0b3IEAmZDBQJhdgMJAAACCAUCZE0PY2FsbGVyUHVibGljS2V5BQJmQwYFAmZBAwkAAQIFAmF2AgRVbml0AwkAAAIIBQJkTQZjYWxsZXIFBHRoaXMGBQJmQQkAAgECC01hdGNoIGVycm9yGwJkTQELY29uc3RydWN0b3IBAVIEAmVBCQECZkQBBQJkTQMJAAACBQJlQQUCZUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQFSBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BCnNldE1hbmFnZXIBAmZFBAJlQQkBAmZEAQUCZE0DCQAAAgUCZUEFAmVBBAJmRgkA2QQBBQJmRQMJAAACBQJmRgUCZkYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJmRQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQ5jb25maXJtTWFuYWdlcgAEAmNmCQECZnoABAJmRwMJAQlpc0RlZmluZWQBBQJjZgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkcFAmZHBAJmSAMJAAACCAUCZE0PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjZgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkgFAmZICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJjZgkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEDcHV0AgJmSQJmSgQCZksJAQJiZAAEAmZMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmSwUBQQIKV3Igc3QgYWRkcgQCZk0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZLBQFDAgpXciBzbCBhZGRyAwkAZgIAAAUCZkkJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRNCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZOCQECZE8KCQClCAEIBQJkTQZjYWxsZXIJANgEAQgFAmRNDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRNCHBheW1lbnRzAAEFAmZJBgcGAAACAAQCZHIIBQJmTgJfMgQCZk8IBQJmTgJfNwQCY0kIBQJmTgJfOQQCZHMIBQJmTgNfMTAEAmR0CAUCZk4DXzExBAJjcQgFAmZOA18xMgQCY3IIBQJmTgNfMTMEAmRlCQD8BwQFAmFEAgRlbWl0CQDMCAIFAmRyBQNuaWwFA25pbAMJAAACBQJkZQUCZGUEAmZQBAJhdgUCZGUDCQABAgUCYXYCB0FkZHJlc3MEAmZRBQJhdgkA/AcEBQJmUQIEZW1pdAkAzAgCBQJkcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZlAFAmZQBAJmUgMJAGYCBQJkcwAACQD8BwQFAmZNAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3EFAmRzBQNuaWwFA25pbAMJAAACBQJmUgUCZlIEAmZTAwkAZgIFAmR0AAAJAPwHBAUCZk0CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcgUCZHQFA25pbAUDbmlsAwkAAAIFAmZTBQJmUwQCZlQDBQJmSgQCZlUJAPwHBAUCZkwCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZPBQJkcgUDbmlsAwkAAAIFAmZVBQJmVQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTQZjYWxsZXIFAmRyBQJmTwUDbmlsCQDOCAIFAmNJBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQELcHV0T25lVGtuVjICAmZnAmZKBAJmVgoAAmFGCQD8BwQFAmFEAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUYCB0Jvb2xlYW4FAmFGCQACAQkArAICCQADAQUCYUYCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZXAwMDCQECYUkABgkAAAIFAmFYBQFvBgkAAAIFAmFYBQFxBgUCZlYEAmZYCQDMCAIDAwkBASEBBQJmVwYJAQJmQgEFAmRNBgkBAmFCAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE0IcGF5bWVudHMAAQYJAQJhQgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZYBQJmWAQCYVQJAQJhTAAEAmNxCQCRAwIFAmFUBQF1BAJjcgkAkQMCBQJhVAUBdgQCY3AJANkEAQkAkQMCBQJhVAUBdAQCZmsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBdwQCZmwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBeAQCY28DCQAAAggFAmRNBmNhbGxlcgUEdGhpcwgFAmRNDG9yaWdpbkNhbGxlcggFAmRNBmNhbGxlcgQCZE4JAQV2YWx1ZQEJAJEDAggFAmRNCHBheW1lbnRzAAAEAmNtCQDYBAEJAQV2YWx1ZQEIBQJkTgdhc3NldElkBAJjUwgFAmROBmFtb3VudAQCZlkJAQJlSAUFAmNTBQJjbQkApQgBBQJjbwkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAYDCQAAAgUCZlkFAmZZBAJjaggFAmZZAl8zBAJjSQgFAmZZAl8yBAJmWggFAmZZAl8xBAJkcgMDCQBmAgUCZmcAAAkAZgIFAmZnBQJmWgcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmcFA25pbAIABQJmWgQCZk4JAPwHBAUCYUQCBGVtaXQJAMwIAgUCZHIFA25pbAUDbmlsAwkAAAIFAmZOBQJmTgQCZlAEAmF2BQJmTgMJAAECBQJhdgIHQWRkcmVzcwQCZlEFAmF2CQD8BwQFAmZRAgRlbWl0CQDMCAIFAmRyBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmUAUCZlAEAmZUAwUCZkoEAmZVCQD8BwQFAmJmAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcAUCZHIFA25pbAMJAAACBQJmVQUCZlUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZE0GY2FsbGVyBQJkcgUCY3AFA25pbAQCZncDCQBmAgUCY2oAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCY2oJANkEAQUCY20FA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjSQUCZlQFAmZ3BQJkcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEKcHV0Rm9yRnJlZQECZ2EDCQBmAgAABQJnYQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkTQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnYgkBAmRPCgkApQgBCAUCZE0GY2FsbGVyCQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRNCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRNCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkTQhwYXltZW50cwABBQJnYQcHBgAAAgAIBQJnYgJfOQJkTQEDZ2V0AAQCZGUJAQJkTAEFAmRNBAJnYwgFAmRlAl8xBAJjSAgFAmRlAl8yBAJjUwgFAmRlAl8zBAJjbQgFAmRlAl80BAJjSQgFAmRlAl81BAJlQgkA/AcEBQJhRAIEYnVybgkAzAgCBQJjUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbQUCY1MFA25pbAMJAAACBQJlQgUCZUIFAmNJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQtnZXRPbmVUa25WMgICZmYCZmcEAmZWCgACYUYJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRgIHQm9vbGVhbgUCYUYJAAIBCQCsAgIJAAMBBQJhRgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ2QDAwkBAmFJAAYJAAACBQJhWAUBcQYFAmZWBAJmWAkAzAgCAwMJAQEhAQUCZ2QGCQECZkIBBQJkTQYJAQJhQgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRNCHBheW1lbnRzAAEGCQECYUIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmWAUCZlgEAmdlCQECZmUGBQJmZgUCZmcIBQJkTQhwYXltZW50cwgFAmRNBmNhbGxlcggFAmRNDG9yaWdpbkNhbGxlcggFAmRNDXRyYW5zYWN0aW9uSWQEAmNJCAUCZ2UCXzEEAmZwCAUCZ2UCXzIJAJQKAgUCY0kFAmZwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNARNnZXRPbmVUa25WMlJFQURPTkxZAgJmZgJnZgQCYVQJAQJhTAAEAmNxCQCRAwIFAmFUBQF1BAJjcgkAkQMCBQJhVAUBdgQCY3AJAJEDAgUCYVQFAXQEAmRUCQDMCAIJALYCAQkBAmJ5AQUCY3EJAMwIAgkAtgIBCQECYnkBBQJjcgUDbmlsBAJnZwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ACEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJMCQECZFMBBQJkVAQCYksJALgCAgUCYkwJALwCAwkAtgIBBQJnZgUCYkwFAmdnBAJnaAMJAAACBQJmZgUCY3EAAAMJAAACBQJmZgUCY3IAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJnaQkBAmV4AwUCZFQFAmdoBQJiSwQCZ2oJALgCAgkAkQMCBQJkVAUCZ2gFAmdpBAJnawkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCZ2oFAWYFA25pbAQCZ2wJAQJjZwIFAmdrBQJhRwQCZm8IBQJnbAJfMQQCY2oIBQJnbAJfMgkAlAoCBQNuaWwJAJQKAgUCZm8FAmNqAmRNARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmZgJnZgQCYVQJAQJhTAAEAmNxCQCRAwIFAmFUBQF1BAJjcgkAkQMCBQJhVAUBdgQCY3AJAJEDAgUCYVQFAXQEAmN3CQECYnkBBQJjcQQCY3kJAQJieQEFAmNyBAJnbQoAAmFGCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZmYJAMwIAgUCZ2YFA25pbAUDbmlsAwkAAQIFAmFGAgooSW50LCBJbnQpBQJhRgkAAgEJAKwCAgkAAwEFAmFGAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmbwgFAmdtAl8xBAJjaggFAmdtAl8yBAJkZQkBAmNrBAIABQJjcAUCZ2YFBHRoaXMEAmNHCAUCZGUCXzEEAmNICAUCZGUCXzIEAmduCQBkAgUCY0cFAmNIBAJmZAMJAAACBQJnbgAAAwkAAAIFAmZvAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZvBQJnbgUBYQUCZ24JAJQKAgUDbmlsCQCVCgMFAmZvBQJjagUCZmQCZE0BCWdldE5vTGVzcwICZ28CZ3AEAmRlCQECZEwBBQJkTQQCY0cIBQJkZQJfMQQCY0gIBQJkZQJfMgQCY1MIBQJkZQJfMwQCY20IBQJkZQJfNAQCY0kIBQJkZQJfNQMJAGYCBQJnbwUCY0cJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY0cCAyA8IAkApAMBBQJnbwMJAGYCBQJncAUCY0gJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjSAIDIDwgCQCkAwEFAmdwBAJncQkA/AcEBQJhRAIEYnVybgkAzAgCBQJjUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbQUCY1MFA25pbAMJAAACBQJncQUCZ3EFAmNJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQ11bnN0YWtlQW5kR2V0AQJjaAQCZ3IDCQECIT0CCQCQAwEIBQJkTQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ3IFAmdyBAJiWAkBAmFMAAQCZ3MJAQJiZAAEAmZPCQDZBAEJAJEDAgUCYlgFAXQEAmd0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJncwUBQQIKV3Igc3QgYWRkcgQCZ3UJAPwHBAUCZ3QCB3Vuc3Rha2UJAMwIAgkA2AQBBQJmTwkAzAgCBQJjaAUDbmlsBQNuaWwDCQAAAgUCZ3UFAmd1BAJkZQkBAmNrBAkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAkA2AQBBQJmTwUCY2gIBQJkTQZjYWxsZXIEAmN1CQENcGFyc2VJbnRWYWx1ZQEIBQJkZQJfOQQCY0kIBQJkZQNfMTAEAmd2AwMJAQJhSQAGCQAAAgUCY3UFAXEJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjdQYDCQAAAgUCZ3YFAmd2BAJndwkA/AcEBQJhRAIEYnVybgkAzAgCBQJjaAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmTwUCY2gFA25pbAMJAAACBQJndwUCZ3cFAmNJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJneAJneQJncAQCZ2QDCQECYUkABgkAAAIFAmFYBQFxBAJmWAkAzAgCAwkBASEBBQJnZAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTQhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZYBQJmWAQCZ3UJAPwHBAUCYmYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWQkAzAgCBQJneAUDbmlsBQNuaWwDCQAAAgUCZ3UFAmd1BAJnegkBAmNrBAkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAkA2AQBBQJhWQUCZ3gIBQJkTQZjYWxsZXIEAmNHCAUCZ3oCXzEEAmNICAUCZ3oCXzIEAmNJCAUCZ3oDXzEwBAJnQQkAzAgCAwkAZwIFAmNHBQJneQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJneQUDbmlsAgAJAMwIAgMJAGcCBQJjSAUCZ3AGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJncAUDbmlsAgAFA25pbAMJAAACBQJnQQUCZ0EEAmdxCQD8BwQFAmFEAgRidXJuCQDMCAIFAmd4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFZBQJneAUDbmlsAwkAAAIFAmdxBQJncQUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90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AwIFAmdLAAIFA25pbAJkTQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSgJnTAkAlAoCBQNuaWwJAQFJAgkApwMBBQFKBQJnTAJkTQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUcBSAkAlAoCBQNuaWwJAKYDAQkBAUYCBQFHBQFIAmRNAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJCAmJDCQCUCgIFA25pbAkApgMBCQECYkECCQCnAwEFAmJCCQCnAwEFAmJDAmRNASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY2wCYkcCY0sCY0wCY00CY04CZ00CY08CY1AJAJQKAgUDbmlsCQECY0oNBQJjbAUCYkcFAmNLBQJjTAUCY00FAmNOBQJnTQUCY08FAmNQBgcAAAIAAmRNASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY2wCZ04CY24CZ00EAmRlCQECY2sEBQJjbAUCZ04FAmNuCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTQkAlAoCBQNuaWwJAJwKCggFAmRlAl8xCAUCZGUCXzIIBQJkZQJfMwgFAmRlAl80CAUCZGUCXzUIBQJkZQJfNggFAmRlAl83CQCmAwEIBQJkZQJfOAgFAmRlAl85CAUCZGUDXzEwAQJnTwECZ1AABAJnUQQCYXYJAQJmeQADCQABAgUCYXYCCkJ5dGVWZWN0b3IEAmZDBQJhdgUCZkMDCQABAgUCYXYCBFVuaXQIBQJnTw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXYFAmdPAwkAAQIFAmF2AgVPcmRlcgQCZHoFAmF2BAJnUgkBAmFKAAQCZ1MJAQJkeQEFAmR6BAJnVAkA9AMDCAUCZHoJYm9keUJ5dGVzCQCRAwIIBQJkegZwcm9vZnMAAAgFAmR6D3NlbmRlclB1YmxpY0tleQQCZ1UJAPQDAwgFAmR6CWJvZHlCeXRlcwkAkQMCCAUCZHoGcHJvb2ZzAAEFAmdSAwMDBQJnUwUCZ1QHBQJnVQcGCQECYXEDBQJnUwUCZ1QFAmdVAwkAAQIFAmF2AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZFoFAmF2BAJnVgkA9gMBCQEFdmFsdWUBCAUCZFoGc2NyaXB0BAJnVwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFECQECYW8ABAJnWAkA8QcBBQR0aGlzAwMJAAACBQJnVwUCZ1YJAQIhPQIFAmdYBQJnVgcGCQD0AwMIBQJnTwlib2R5Qnl0ZXMJAJEDAggFAmdPBnByb29mcwAABQJnUQkA9AMDCAUCZ08JYm9keUJ5dGVzCQCRAwIIBQJnTwZwcm9vZnMAAAUCZ1FK7x6O", "chainId": 84, "height": 2401539, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8pUe4G6CMft4BcS29qBkRwiyCnpsmixyf6P1cZGAWEJD Next: zrsGeqrzzxYnMQuYmrb5m8tELBtdQGwgpd8EbofdkZ8 Diff:
OldNewDifferences
12451245 let gs = bd()
12461246 let fO = fromBase58String(bX[t])
12471247 let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1248+ let co = dM.caller
1249+ let gB = this
1250+ let gu = invoke(gt, "unstakeINTERNAL", [toBase58String(fO), gx, co, gB], nil)
12491251 if ((gu == gu))
12501252 then {
1251- let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252- let cI = gB._1
1253- let fp = gB._2
1253+ let gC = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1254+ let cI = gC._1
1255+ let fp = gC._2
12541256 $Tuple2(cI, fp)
12551257 }
12561258 else throw("Strict value is not equal to itself.")
12611263
12621264
12631265 @Callable(dM)
1264-func putOneTknV2WithBonusREADONLY (gC,gD) = {
1266+func putOneTknV2WithBonusREADONLY (gD,gE) = {
12651267 let aT = aL()
12661268 let cq = aT[u]
12671269 let cr = aT[v]
12681270 let cp = aT[t]
1269- let gE = eH(gC, gD, "", "", true)
1270- let eY = gE._1
1271- let cI = gE._2
1272- let cj = gE._3
1273- let fd = gE._4
1274- $Tuple2(nil, $Tuple3(eY, cj, fd))
1275- }
1276-
1277-
1278-
1279-@Callable(dM)
1280-func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281- let aT = aL()
1282- let cq = aT[u]
1283- let cr = aT[v]
1284- let cp = aT[t]
1285- let gF = eH(gC, gD, "", "", false)
1271+ let gF = eH(gD, gE, "", "", true)
12861272 let eY = gF._1
12871273 let cI = gF._2
12881274 let cj = gF._3
12931279
12941280
12951281 @Callable(dM)
1296-func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
1297- then throw("denied")
1298- else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
1282+func putOneTknV2WithoutTakeFeeREADONLY (gD,gE) = {
1283+ let aT = aL()
1284+ let cq = aT[u]
1285+ let cr = aT[v]
1286+ let cp = aT[t]
1287+ let gG = eH(gD, gE, "", "", false)
1288+ let eY = gG._1
1289+ let cI = gG._2
1290+ let cj = gG._3
1291+ let fd = gG._4
1292+ $Tuple2(nil, $Tuple3(eY, cj, fd))
1293+ }
12991294
13001295
13011296
13021297 @Callable(dM)
1303-func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304- then fA
1305- else [StringEntry(gI, gv)]
1298+func activate (gH,gI) = if ((toString(dM.caller) != toString(aD)))
1299+ then throw("denied")
1300+ else $Tuple2([StringEntry(ac(), gH), StringEntry(ad(), gI)], "success")
13061301
13071302
13081303
13091304 @Callable(dM)
1310-func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1305+func setS (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
13111306 then fA
1312- else [IntegerEntry(gI, gv)]
1307+ else [StringEntry(gJ, gv)]
1308+
1309+
1310+
1311+@Callable(dM)
1312+func setI (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
1313+ then fA
1314+ else [IntegerEntry(gJ, gv)]
13131315
13141316
13151317
13251327
13261328 @Callable(dM)
13271329 func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328- let gJ = bV(bR, bS, bW)
1329- $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
1330+ let gK = bV(bR, bS, bW)
1331+ $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
13301332 }
13311333
13321334
13331335
13341336 @Callable(dM)
1335-func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
1337+func fromX18WrapperREADONLY (J,gL) = $Tuple2(nil, I(parseBigIntValue(J), gL))
13361338
13371339
13381340
13471349
13481350
13491351 @Callable(dM)
1350-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
1352+func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gM,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gM, cO, cP, true, false, 0, ""))
13511353
13521354
13531355
13541356 @Callable(dM)
1355-func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356- let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357+func estimateGetOperationWrapperREADONLY (cl,gN,cn,gM) = {
1358+ let de = ck(cl, gN, cn, addressFromStringValue(gM))
13571359 $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
13581360 }
13591361
13601362
1361-@Verifier(gN)
1362-func gO () = {
1363- let gP = {
1363+@Verifier(gO)
1364+func gP () = {
1365+ let gQ = {
13641366 let av = fy()
13651367 if ($isInstanceOf(av, "ByteVector"))
13661368 then {
13681370 fC
13691371 }
13701372 else if ($isInstanceOf(av, "Unit"))
1371- then gN.senderPublicKey
1373+ then gO.senderPublicKey
13721374 else throw("Match error")
13731375 }
1374- let av = gN
1376+ let av = gO
13751377 if ($isInstanceOf(av, "Order"))
13761378 then {
13771379 let dz = av
1378- let gQ = aJ()
1379- let gR = dy(dz)
1380- let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381- let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382- if (if (if (gR)
1383- then gS
1384- else false)
1380+ let gR = aJ()
1381+ let gS = dy(dz)
1382+ let gT = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1383+ let gU = sigVerify(dz.bodyBytes, dz.proofs[1], gR)
1384+ if (if (if (gS)
13851385 then gT
13861386 else false)
1387+ then gU
1388+ else false)
13871389 then true
1388- else aq(gR, gS, gT)
1390+ else aq(gS, gT, gU)
13891391 }
13901392 else if ($isInstanceOf(av, "SetScriptTransaction"))
13911393 then {
13921394 let dZ = av
1393- let gU = blake2b256(value(dZ.script))
1394- let gV = fromBase64String(value(getString(aD, ao())))
1395- let gW = scriptHash(this)
1396- if (if ((gV == gU))
1397- then (gW != gU)
1395+ let gV = blake2b256(value(dZ.script))
1396+ let gW = fromBase64String(value(getString(aD, ao())))
1397+ let gX = scriptHash(this)
1398+ if (if ((gW == gV))
1399+ then (gX != gV)
13981400 else false)
13991401 then true
1400- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1402+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14011403 }
1402- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1404+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14031405 }
14041406
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
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(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
6464 let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118118 func ag () = "%s__factoryConfig"
119119
120120
121121 func ah () = "%s%s__matcher__publicKey"
122122
123123
124124 func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
125125
126126
127127 func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
128128
129129
130130 func an () = "%s__shutdown"
131131
132132
133133 func ao () = "%s__allowedLpStableScriptHash"
134134
135135
136136 func ap () = "%s__feeCollectorAddress"
137137
138138
139139 func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
140140
141141
142142 func au (J) = {
143143 let av = J
144144 if ($isInstanceOf(av, "String"))
145145 then {
146146 let aw = av
147147 aw
148148 }
149149 else throw("fail cast to String")
150150 }
151151
152152
153153 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
154154
155155
156156 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
157157
158158
159159 func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
160160
161161
162162 let aD = addressFromStringValue(ax(this, R()))
163163
164164 let aE = {
165165 let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166166 if ($isInstanceOf(aF, "Int"))
167167 then aF
168168 else throw(($getType(aF) + " couldn't be cast to Int"))
169169 }
170170
171171 let aG = {
172172 let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173173 if ($isInstanceOf(aF, "Int"))
174174 then aF
175175 else throw(($getType(aF) + " couldn't be cast to Int"))
176176 }
177177
178178 let aH = ax(this, ae())
179179
180180 func aI () = valueOrElse(getBoolean(aD, an()), false)
181181
182182
183183 func aJ () = fromBase58String(ax(aD, ah()))
184184
185185
186186 let aK = addressFromStringValue(ax(aD, ap()))
187187
188188 func aL () = {
189189 let aM = ax(this, ac())
190190 let aN = ax(this, ad())
191191 let aO = aA(aD, al(aN))
192192 let aj = aA(aD, al(aM))
193193 split(ax(aD, ai(toString(aj), toString(aO))), l)
194194 }
195195
196196
197197 func aP (aQ) = if ((aQ == i))
198198 then unit
199199 else fromBase58String(aQ)
200200
201201
202202 func aR (aQ) = if ((aQ == unit))
203203 then i
204204 else toBase58String(value(aQ))
205205
206206
207207 func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
208208
209209
210210 let aU = aS(aL())
211211
212212 let aV = aU
213213
214214 let aW = aV._1
215215
216216 let aX = aV._2
217217
218218 let aY = aV._3
219219
220220 let aZ = aV._4
221221
222222 let ba = aV._5
223223
224224 let bb = aV._6
225225
226226 let bc = aV._7
227227
228228 func bd () = split(ax(aD, ag()), l)
229229
230230
231231 let be = bd()
232232
233233 let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
234234
235235 let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
236236
237237 let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
238238
239239 let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
240240
241241 func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
242242
243243
244244 func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
245245
246246
247247 func by (bz) = if ((bz == "WAVES"))
248248 then wavesBalance(this).available
249249 else assetBalance(this, fromBase58String(bz))
250250
251251
252252 func bA (bB,bC) = fraction(bB, c, bC)
253253
254254
255255 func bD (bE,bF,bG) = {
256256 let bH = fraction((bE - bF), b, bF)
257257 let bI = ((bG - P(bH)) > d)
258258 if (!(bI))
259259 then throw(("Big slpg: " + toString(bH)))
260260 else $Tuple2(bI, min([bE, bF]))
261261 }
262262
263263
264264 func bJ (bK,bL,bM) = {
265265 let bH = fraction(bL, b, bK)
266266 let bN = (bM > bH)
267267 if (if (bN)
268268 then true
269269 else (bL > bK))
270270 then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271271 else bN
272272 }
273273
274274
275275 func bO (bP,bQ,bR,bS) = {
276276 let bT = F(bR, bP)
277277 let bU = F(bS, bQ)
278278 bA(bU, bT)
279279 }
280280
281281
282282 func bV (bR,bS,bW) = {
283283 let bX = aL()
284284 let bY = parseIntValue(bX[w])
285285 let bZ = parseIntValue(bX[x])
286286 let ca = bO(bY, bZ, bR, bS)
287287 let bC = F(bR, bY)
288288 let bB = F(bS, bZ)
289289 let cb = F(bW, a)
290290 let cc = bA(bC, cb)
291291 let cd = bA(bB, cb)
292292 [ca, cc, cd]
293293 }
294294
295295
296296 func ce (bR,bS,bW) = {
297297 let cf = bV(bR, bS, bW)
298298 [I(cf[0], a), I(cf[1], a), I(cf[2], a)]
299299 }
300300
301301
302302 func cg (ch,ci) = {
303303 let cj = if ((ci == 0))
304304 then 0
305305 else fraction(ch, ci, a)
306306 $Tuple2((ch - cj), cj)
307307 }
308308
309309
310310 func ck (cl,cm,cn,co) = {
311311 let bX = aL()
312312 let cp = bX[t]
313313 let cq = bX[u]
314314 let cr = bX[v]
315315 let cs = parseIntValue(bX[w])
316316 let ct = parseIntValue(bX[x])
317317 let cu = bX[s]
318318 let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319319 if ((cp != cm))
320320 then throw("Wrong pmt asset")
321321 else {
322322 let cw = by(cq)
323323 let cx = F(cw, cs)
324324 let cy = by(cr)
325325 let cz = F(cy, ct)
326326 let cA = bA(cz, cx)
327327 let cB = I(cA, a)
328328 let cC = F(cn, a)
329329 let cD = F(cv, a)
330330 let cE = fraction(cx, cC, cD)
331331 let cF = fraction(cz, cC, cD)
332332 let cG = I(cE, cs)
333333 let cH = I(cF, ct)
334334 let cI = if ((cl == ""))
335335 then nil
336336 else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
337337 then unit
338338 else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
339339 then unit
340340 else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341341 $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
342342 }
343343 }
344344
345345
346346 func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347347 let bX = aL()
348348 let cp = fromBase58String(bX[t])
349349 let cU = bX[u]
350350 let cV = bX[v]
351351 let cW = bX[y]
352352 let cX = bX[z]
353353 let cY = parseIntValue(bX[w])
354354 let cZ = parseIntValue(bX[x])
355355 let cu = bX[s]
356356 let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357357 let cw = if (cO)
358358 then by(cU)
359359 else if (if (cQ)
360360 then (cT == cU)
361361 else false)
362362 then (by(cU) - cS)
363363 else if (cQ)
364364 then by(cU)
365365 else (by(cU) - cK)
366366 let cy = if (cO)
367367 then by(cV)
368368 else if (if (cQ)
369369 then (cT == cV)
370370 else false)
371371 then (by(cV) - cS)
372372 else if (cQ)
373373 then by(cV)
374374 else (by(cV) - cM)
375375 let db = F(cK, cY)
376376 let dc = F(cM, cZ)
377377 let dd = bA(dc, db)
378378 let cx = F(cw, cY)
379379 let cz = F(cy, cZ)
380380 let de = if ((da == 0))
381381 then {
382382 let cA = d
383383 let df = d
384384 let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385385 $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
386386 }
387387 else {
388388 let cA = bA(cz, cx)
389389 let dg = fraction(P((cA - dd)), c, cA)
390390 let df = F(bG, a)
391391 if (if (if (cR)
392392 then (cA != d)
393393 else false)
394394 then (dg > df)
395395 else false)
396396 then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
397397 else {
398398 let dh = F(da, a)
399399 let di = fraction(db, cA, c)
400400 let dj = fraction(dc, c, cA)
401401 let dk = if ((di > dc))
402402 then $Tuple2(dj, dc)
403403 else $Tuple2(db, di)
404404 let dl = dk._1
405405 let dm = dk._2
406406 let cb = fraction(dh, dm, cz)
407407 $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
408408 }
409409 }
410410 let dn = de._1
411411 let do = de._2
412412 let dp = de._3
413413 let cB = I(de._4, a)
414414 let dq = I(de._5, a)
415415 if ((0 >= dn))
416416 then throw("LP <= 0")
417417 else {
418418 let dr = if (!(cP))
419419 then 0
420420 else dn
421421 let ds = (cK - do)
422422 let dt = (cM - dp)
423423 let du = if (if (cQ)
424424 then (cT == cU)
425425 else false)
426426 then $Tuple2(cS, 0)
427427 else if (if (cQ)
428428 then (cT == cV)
429429 else false)
430430 then $Tuple2(0, cS)
431431 else $Tuple2(do, dp)
432432 let dv = du._1
433433 let dw = du._2
434434 let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435435 $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
436436 }
437437 }
438438
439439
440440 func dy (dz) = {
441441 let bX = aL()
442442 let dA = bX[u]
443443 let dB = bX[v]
444444 let cu = parseIntValue(bX[s])
445445 let bY = parseIntValue(bX[w])
446446 let bZ = parseIntValue(bX[x])
447447 let dC = by(dA)
448448 let dD = by(dB)
449449 let cA = if ((dz.orderType == Buy))
450450 then bO(bY, bZ, (dC + dz.amount), dD)
451451 else bO(bY, bZ, (dC - dz.amount), dD)
452452 let cB = I(cA, a)
453453 if (if (if (aI())
454454 then true
455455 else (cu == p))
456456 then true
457457 else (cu == q))
458458 then throw("Admin blocked")
459459 else {
460460 let dE = dz.assetPair.amountAsset
461461 let dF = if ((dE == unit))
462462 then "WAVES"
463463 else toBase58String(value(dE))
464464 let dG = dz.assetPair.priceAsset
465465 let dH = if ((dG == unit))
466466 then "WAVES"
467467 else toBase58String(value(dG))
468468 if (if ((dF != dA))
469469 then true
470470 else (dH != dB))
471471 then throw("Wr assets")
472472 else {
473473 let dI = dz.price
474474 let cZ = fraction(a, bZ, bY)
475475 let dJ = L(dI, a, cZ)
476476 let dK = if ((dz.orderType == Buy))
477477 then (cB >= dJ)
478478 else (dJ >= cB)
479479 true
480480 }
481481 }
482482 }
483483
484484
485485 func dL (dM) = if ((size(dM.payments) != 1))
486486 then throw("1 pmnt exp")
487487 else {
488488 let dN = value(dM.payments[0])
489489 let cm = value(dN.assetId)
490490 let cS = dN.amount
491491 let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492492 let cG = de._1
493493 let cH = de._2
494494 let cu = parseIntValue(de._9)
495495 let cI = de._10
496496 if (if (aI())
497497 then true
498498 else (cu == q))
499499 then throw(("Admin blocked: " + toString(cu)))
500500 else $Tuple5(cG, cH, cS, cm, cI)
501501 }
502502
503503
504504 func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505505 let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506506 let cu = parseIntValue(de._8)
507507 if (if (if (aI())
508508 then true
509509 else (cu == o))
510510 then true
511511 else (cu == q))
512512 then throw(("Blocked:" + toString(cu)))
513513 else de
514514 }
515515
516516
517517 func dS (dT) = {
518518 let dU = g
519519 let dV = dT[0]
520520 let dW = dT[1]
521521 let dX = parseBigIntValue(j)
522522 let dY = (parseBigIntValue(aH) * dX)
523523 let dZ = (dV + dW)
524524 if ((dZ == e))
525525 then e
526526 else {
527527 let ea = (dY * dU)
528528 let eb = (((dV * dW) * dU) * dU)
529529 let ec = ((ea * dZ) / dX)
530530 let ed = (ea - dX)
531531 let ee = (dU + f)
532532 func ef (eg,eh) = {
533533 let ei = eg
534534 let ej = ei._1
535535 let ek = ei._2
536536 if ((ek != unit))
537537 then eg
538538 else {
539539 let el = (((ej * ej) * ej) / eb)
540540 let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541541 let en = Q((em - value(ej)))
542542 if ((f >= en))
543543 then $Tuple2(em, eh)
544544 else $Tuple2(em, unit)
545545 }
546546 }
547547
548548 let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549549 let ep = {
550550 let eq = eo
551551 let er = size(eq)
552552 let es = $Tuple2(dZ, unit)
553553 func et (eu,ev) = if ((ev >= er))
554554 then eu
555555 else ef(eu, eq[ev])
556556
557557 func ew (eu,ev) = if ((ev >= er))
558558 then eu
559559 else throw("List size exceeds 15")
560560
561561 ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
562562 }
563563 let ej = ep._1
564564 let ek = ep._2
565565 if ((ek != unit))
566566 then ej
567567 else throw(("D calculation error, D = " + toString(ej)))
568568 }
569569 }
570570
571571
572572 func ex (dT,dM,ey) = {
573573 let dU = g
574574 let ez = dT[if ((dM == 0))
575575 then 1
576576 else 0]
577577 let dX = parseBigIntValue(j)
578578 let dY = (parseBigIntValue(aH) * dX)
579579 let dZ = ez
580580 let ea = (dY * dU)
581581 let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582582 let eB = ((dZ + ((ey * dX) / ea)) - ey)
583583 func ef (eg,eh) = {
584584 let eC = eg
585585 let eD = eC._1
586586 let ek = eC._2
587587 if ((ek != unit))
588588 then eg
589589 else {
590590 let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591591 let eF = Q((eE - value(eD)))
592592 if ((f >= eF))
593593 then $Tuple2(eE, eh)
594594 else $Tuple2(eE, unit)
595595 }
596596 }
597597
598598 let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599599 let eG = {
600600 let eq = eo
601601 let er = size(eq)
602602 let es = $Tuple2(ey, unit)
603603 func et (eu,ev) = if ((ev >= er))
604604 then eu
605605 else ef(eu, eq[ev])
606606
607607 func ew (eu,ev) = if ((ev >= er))
608608 then eu
609609 else throw("List size exceeds 15")
610610
611611 ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
612612 }
613613 let eD = eG._1
614614 let ek = eG._2
615615 if ((ek != unit))
616616 then eD
617617 else throw(("Y calculation error, Y = " + toString(eD)))
618618 }
619619
620620
621621 func eH (eI,cm,co,aa,eJ) = {
622622 let aT = aL()
623623 let cq = aT[u]
624624 let cr = aT[v]
625625 let cp = aT[t]
626626 let cY = parseIntValue(aT[w])
627627 let cZ = parseIntValue(aT[x])
628628 let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629629 let eL = if ((eK > e))
630630 then true
631631 else throw("initial deposit requires all coins")
632632 if ((eL == eL))
633633 then {
634634 let cw = by(cq)
635635 let cy = by(cr)
636636 let eM = if ((aa == ""))
637637 then $Tuple2(cw, cy)
638638 else if ((cm == cq))
639639 then if ((eI > cw))
640640 then throw("invalid payment amount")
641641 else $Tuple2((cw - eI), cy)
642642 else if ((cm == cr))
643643 then if ((eI > cy))
644644 then throw("invalid payment amount")
645645 else $Tuple2(cw, (cy - eI))
646646 else throw("wrong pmtAssetId")
647647 let eN = eM._1
648648 let eO = eM._2
649649 let eP = if ((cm == cq))
650650 then $Tuple2(eI, 0)
651651 else if ((cm == cr))
652652 then $Tuple2(0, eI)
653653 else throw("invalid payment")
654654 let eQ = eP._1
655655 let eR = eP._2
656656 let eS = if (eJ)
657657 then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658658 else $Tuple3(eQ, eR, 0)
659659 let eT = eS._1
660660 let eU = eS._2
661661 let cj = eS._3
662662 let eV = (eN + eT)
663663 let eW = (eO + eU)
664664 let bL = dS([toBigInt(eN), toBigInt(eO)])
665665 let bK = dS([toBigInt(eV), toBigInt(eW)])
666666 let eX = if ((bK > bL))
667667 then true
668668 else throw()
669669 if ((eX == eX))
670670 then {
671671 let eY = fraction(eK, (bK - bL), bL)
672672 let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673673 let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674674 let eZ = fraction(eO, a, eN)
675675 let fa = fraction(eI, a, (eZ + a))
676676 let fb = (eI - fa)
677677 let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678678 let fd = toInt(fraction((eY - fc), b, fc))
679679 $Tuple4(toInt(eY), dx, cj, fd)
680680 }
681681 else throw("Strict value is not equal to itself.")
682682 }
683683 else throw("Strict value is not equal to itself.")
684684 }
685685
686686
687687 func fe (ff,fg,fh,dP,fi,fj) = {
688688 let aT = aL()
689689 let cp = aT[t]
690690 let cq = aT[u]
691691 let cr = aT[v]
692692 let fk = parseIntValue(aT[w])
693693 let fl = parseIntValue(aT[x])
694694 let fm = aT[s]
695695 let co = if ((dP == bi))
696696 then fi
697697 else dP
698698 let dN = value(fh[0])
699699 let cm = value(dN.assetId)
700700 let cS = dN.amount
701701 let cl = toBase58String(fj)
702702 if ((cp != toBase58String(cm)))
703703 then throw("Wrong LP")
704704 else {
705705 let cw = by(cq)
706706 let cy = by(cr)
707707 let fn = {
708708 let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709709 if ($isInstanceOf(aF, "(Int, Int)"))
710710 then aF
711711 else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712712 }
713713 if ((fn == fn))
714714 then {
715715 let cj = fn._2
716716 let fo = fn._1
717717 let fp = if (if ((fg > 0))
718718 then (fg > fo)
719719 else false)
720720 then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721721 else fo
722722 let fq = if ((ff == cq))
723723 then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724724 else if ((ff == cr))
725725 then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726726 else throw("invalid out asset id")
727727 let fr = fq._1
728728 let fs = fq._2
729729 let eV = fq._3
730730 let eW = fq._4
731731 let ft = bA(F(eW, fl), F(eV, fk))
732732 let fu = I(ft, a)
733733 let fv = if ((ff == "WAVES"))
734734 then unit
735735 else fromBase58String(ff)
736736 let fw = if ((cj > 0))
737737 then [ScriptTransfer(aK, cj, fv)]
738738 else nil
739739 let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740740 if ((cI == cI))
741741 then {
742742 let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743743 if ((fx == fx))
744744 then $Tuple2(cI, fp)
745745 else throw("Strict value is not equal to itself.")
746746 }
747747 else throw("Strict value is not equal to itself.")
748748 }
749749 else throw("Strict value is not equal to itself.")
750750 }
751751 }
752752
753753
754754 func fy () = {
755755 let av = getString(S())
756756 if ($isInstanceOf(av, "String"))
757757 then {
758758 let dZ = av
759759 fromBase58String(dZ)
760760 }
761761 else if ($isInstanceOf(av, "Unit"))
762762 then unit
763763 else throw("Match error")
764764 }
765765
766766
767767 func fz () = {
768768 let av = getString(T())
769769 if ($isInstanceOf(av, "String"))
770770 then {
771771 let dZ = av
772772 fromBase58String(dZ)
773773 }
774774 else if ($isInstanceOf(av, "Unit"))
775775 then unit
776776 else throw("Match error")
777777 }
778778
779779
780780 let fA = throw("Permission denied")
781781
782782 func fB (dM) = {
783783 let av = fy()
784784 if ($isInstanceOf(av, "ByteVector"))
785785 then {
786786 let fC = av
787787 (dM.callerPublicKey == fC)
788788 }
789789 else if ($isInstanceOf(av, "Unit"))
790790 then (dM.caller == this)
791791 else throw("Match error")
792792 }
793793
794794
795795 func fD (dM) = {
796796 let av = fy()
797797 if ($isInstanceOf(av, "ByteVector"))
798798 then {
799799 let fC = av
800800 if ((dM.callerPublicKey == fC))
801801 then true
802802 else fA
803803 }
804804 else if ($isInstanceOf(av, "Unit"))
805805 then if ((dM.caller == this))
806806 then true
807807 else fA
808808 else throw("Match error")
809809 }
810810
811811
812812 @Callable(dM)
813813 func constructor (R) = {
814814 let eA = fD(dM)
815815 if ((eA == eA))
816816 then [StringEntry(R(), R)]
817817 else throw("Strict value is not equal to itself.")
818818 }
819819
820820
821821
822822 @Callable(dM)
823823 func setManager (fE) = {
824824 let eA = fD(dM)
825825 if ((eA == eA))
826826 then {
827827 let fF = fromBase58String(fE)
828828 if ((fF == fF))
829829 then [StringEntry(T(), fE)]
830830 else throw("Strict value is not equal to itself.")
831831 }
832832 else throw("Strict value is not equal to itself.")
833833 }
834834
835835
836836
837837 @Callable(dM)
838838 func confirmManager () = {
839839 let cf = fz()
840840 let fG = if (isDefined(cf))
841841 then true
842842 else throw("No pending manager")
843843 if ((fG == fG))
844844 then {
845845 let fH = if ((dM.callerPublicKey == value(cf)))
846846 then true
847847 else throw("You are not pending manager")
848848 if ((fH == fH))
849849 then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
850850 else throw("Strict value is not equal to itself.")
851851 }
852852 else throw("Strict value is not equal to itself.")
853853 }
854854
855855
856856
857857 @Callable(dM)
858858 func put (fI,fJ) = {
859859 let fK = bd()
860860 let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861861 let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862862 if ((0 > fI))
863863 then throw("Wrong slippage")
864864 else if ((size(dM.payments) != 2))
865865 then throw("2 pmnts expd")
866866 else {
867867 let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868868 let dr = fN._2
869869 let fO = fN._7
870870 let cI = fN._9
871871 let ds = fN._10
872872 let dt = fN._11
873873 let cq = fN._12
874874 let cr = fN._13
875875 let de = invoke(aD, "emit", [dr], nil)
876876 if ((de == de))
877877 then {
878878 let fP = {
879879 let av = de
880880 if ($isInstanceOf(av, "Address"))
881881 then {
882882 let fQ = av
883883 invoke(fQ, "emit", [dr], nil)
884884 }
885885 else unit
886886 }
887887 if ((fP == fP))
888888 then {
889889 let fR = if ((ds > 0))
890890 then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891891 else nil
892892 if ((fR == fR))
893893 then {
894894 let fS = if ((dt > 0))
895895 then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896896 else nil
897897 if ((fS == fS))
898898 then {
899899 let fT = if (fJ)
900900 then {
901901 let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902902 if ((fU == fU))
903903 then nil
904904 else throw("Strict value is not equal to itself.")
905905 }
906906 else [ScriptTransfer(dM.caller, dr, fO)]
907907 (cI ++ fT)
908908 }
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Strict value is not equal to itself.")
912912 }
913913 else throw("Strict value is not equal to itself.")
914914 }
915915 else throw("Strict value is not equal to itself.")
916916 }
917917 }
918918
919919
920920
921921 @Callable(dM)
922922 func putOneTknV2 (fg,fJ) = {
923923 let fV = {
924924 let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925925 if ($isInstanceOf(aF, "Boolean"))
926926 then aF
927927 else throw(($getType(aF) + " couldn't be cast to Boolean"))
928928 }
929929 let fW = if (if (if (aI())
930930 then true
931931 else (aX == o))
932932 then true
933933 else (aX == q))
934934 then true
935935 else fV
936936 let fX = [if (if (!(fW))
937937 then true
938938 else fB(dM))
939939 then true
940940 else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
941941 then true
942942 else aB("exactly 1 payment are expected")]
943943 if ((fX == fX))
944944 then {
945945 let aT = aL()
946946 let cq = aT[u]
947947 let cr = aT[v]
948948 let cp = fromBase58String(aT[t])
949949 let fk = parseIntValue(aT[w])
950950 let fl = parseIntValue(aT[x])
951951 let co = if ((dM.caller == this))
952952 then dM.originCaller
953953 else dM.caller
954954 let dN = value(dM.payments[0])
955955 let cm = toBase58String(value(dN.assetId))
956956 let cS = dN.amount
957957 let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958958 if ((fY == fY))
959959 then {
960960 let cj = fY._3
961961 let cI = fY._2
962962 let fZ = fY._1
963963 let dr = if (if ((fg > 0))
964964 then (fg > fZ)
965965 else false)
966966 then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967967 else fZ
968968 let fN = invoke(aD, "emit", [dr], nil)
969969 if ((fN == fN))
970970 then {
971971 let fP = {
972972 let av = fN
973973 if ($isInstanceOf(av, "Address"))
974974 then {
975975 let fQ = av
976976 invoke(fQ, "emit", [dr], nil)
977977 }
978978 else unit
979979 }
980980 if ((fP == fP))
981981 then {
982982 let fT = if (fJ)
983983 then {
984984 let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985985 if ((fU == fU))
986986 then nil
987987 else throw("Strict value is not equal to itself.")
988988 }
989989 else [ScriptTransfer(dM.caller, dr, cp)]
990990 let fw = if ((cj > 0))
991991 then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992992 else nil
993993 $Tuple2(((cI ++ fT) ++ fw), dr)
994994 }
995995 else throw("Strict value is not equal to itself.")
996996 }
997997 else throw("Strict value is not equal to itself.")
998998 }
999999 else throw("Strict value is not equal to itself.")
10001000 }
10011001 else throw("Strict value is not equal to itself.")
10021002 }
10031003
10041004
10051005
10061006 @Callable(dM)
10071007 func putForFree (ga) = if ((0 > ga))
10081008 then throw("Wrong slpg")
10091009 else if ((size(dM.payments) != 2))
10101010 then throw("2 pmnts expd")
10111011 else {
10121012 let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
10131013 gb._9
10141014 }
10151015
10161016
10171017
10181018 @Callable(dM)
10191019 func get () = {
10201020 let de = dL(dM)
10211021 let gc = de._1
10221022 let cH = de._2
10231023 let cS = de._3
10241024 let cm = de._4
10251025 let cI = de._5
10261026 let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
10271027 if ((eB == eB))
10281028 then cI
10291029 else throw("Strict value is not equal to itself.")
10301030 }
10311031
10321032
10331033
10341034 @Callable(dM)
10351035 func getOneTknV2 (ff,fg) = {
10361036 let fV = {
10371037 let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10381038 if ($isInstanceOf(aF, "Boolean"))
10391039 then aF
10401040 else throw(($getType(aF) + " couldn't be cast to Boolean"))
10411041 }
10421042 let gd = if (if (aI())
10431043 then true
10441044 else (aX == q))
10451045 then true
10461046 else fV
10471047 let fX = [if (if (!(gd))
10481048 then true
10491049 else fB(dM))
10501050 then true
10511051 else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
10521052 then true
10531053 else aB("exactly 1 payment are expected")]
10541054 if ((fX == fX))
10551055 then {
10561056 let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
10571057 let cI = ge._1
10581058 let fp = ge._2
10591059 $Tuple2(cI, fp)
10601060 }
10611061 else throw("Strict value is not equal to itself.")
10621062 }
10631063
10641064
10651065
10661066 @Callable(dM)
10671067 func getOneTknV2READONLY (ff,gf) = {
10681068 let aT = aL()
10691069 let cq = aT[u]
10701070 let cr = aT[v]
10711071 let cp = aT[t]
10721072 let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
10731073 let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
10741074 let bL = dS(dT)
10751075 let bK = (bL - fraction(toBigInt(gf), bL, gg))
10761076 let gh = if ((ff == cq))
10771077 then 0
10781078 else if ((ff == cr))
10791079 then 1
10801080 else throw("invalid out asset id")
10811081 let gi = ex(dT, gh, bK)
10821082 let gj = (dT[gh] - gi)
10831083 let gk = max([0, toInt((gj - f))])
10841084 let gl = cg(gk, aG)
10851085 let fo = gl._1
10861086 let cj = gl._2
10871087 $Tuple2(nil, $Tuple2(fo, cj))
10881088 }
10891089
10901090
10911091
10921092 @Callable(dM)
10931093 func getOneTknV2WithBonusREADONLY (ff,gf) = {
10941094 let aT = aL()
10951095 let cq = aT[u]
10961096 let cr = aT[v]
10971097 let cp = aT[t]
10981098 let cw = by(cq)
10991099 let cy = by(cr)
11001100 let gm = {
11011101 let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
11021102 if ($isInstanceOf(aF, "(Int, Int)"))
11031103 then aF
11041104 else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
11051105 }
11061106 let fo = gm._1
11071107 let cj = gm._2
11081108 let de = ck("", cp, gf, this)
11091109 let cG = de._1
11101110 let cH = de._2
11111111 let gn = (cG + cH)
11121112 let fd = if ((gn == 0))
11131113 then if ((fo == 0))
11141114 then 0
11151115 else throw("bonus calculation error")
11161116 else fraction((fo - gn), a, gn)
11171117 $Tuple2(nil, $Tuple3(fo, cj, fd))
11181118 }
11191119
11201120
11211121
11221122 @Callable(dM)
11231123 func getNoLess (go,gp) = {
11241124 let de = dL(dM)
11251125 let cG = de._1
11261126 let cH = de._2
11271127 let cS = de._3
11281128 let cm = de._4
11291129 let cI = de._5
11301130 if ((go > cG))
11311131 then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
11321132 else if ((gp > cH))
11331133 then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
11341134 else {
11351135 let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
11361136 if ((gq == gq))
11371137 then cI
11381138 else throw("Strict value is not equal to itself.")
11391139 }
11401140 }
11411141
11421142
11431143
11441144 @Callable(dM)
11451145 func unstakeAndGet (ch) = {
11461146 let gr = if ((size(dM.payments) != 0))
11471147 then throw("No pmnts expd")
11481148 else true
11491149 if ((gr == gr))
11501150 then {
11511151 let bX = aL()
11521152 let gs = bd()
11531153 let fO = fromBase58String(bX[t])
11541154 let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
11551155 let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
11561156 if ((gu == gu))
11571157 then {
11581158 let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
11591159 let cu = parseIntValue(de._9)
11601160 let cI = de._10
11611161 let gv = if (if (aI())
11621162 then true
11631163 else (cu == q))
11641164 then throw(("Blocked: " + toString(cu)))
11651165 else true
11661166 if ((gv == gv))
11671167 then {
11681168 let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
11691169 if ((gw == gw))
11701170 then cI
11711171 else throw("Strict value is not equal to itself.")
11721172 }
11731173 else throw("Strict value is not equal to itself.")
11741174 }
11751175 else throw("Strict value is not equal to itself.")
11761176 }
11771177 else throw("Strict value is not equal to itself.")
11781178 }
11791179
11801180
11811181
11821182 @Callable(dM)
11831183 func unstakeAndGetNoLess (gx,gy,gp) = {
11841184 let gd = if (aI())
11851185 then true
11861186 else (aX == q)
11871187 let fX = [if (!(gd))
11881188 then true
11891189 else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
11901190 then true
11911191 else throw("no payments are expected")]
11921192 if ((fX == fX))
11931193 then {
11941194 let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
11951195 if ((gu == gu))
11961196 then {
11971197 let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
11981198 let cG = gz._1
11991199 let cH = gz._2
12001200 let cI = gz._10
12011201 let gA = [if ((cG >= gy))
12021202 then true
12031203 else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
12041204 then true
12051205 else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
12061206 if ((gA == gA))
12071207 then {
12081208 let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
12091209 if ((gq == gq))
12101210 then cI
12111211 else throw("Strict value is not equal to itself.")
12121212 }
12131213 else throw("Strict value is not equal to itself.")
12141214 }
12151215 else throw("Strict value is not equal to itself.")
12161216 }
12171217 else throw("Strict value is not equal to itself.")
12181218 }
12191219
12201220
12211221
12221222 @Callable(dM)
12231223 func unstakeAndGetOneTknV2 (gx,ff,fg) = {
12241224 let fV = {
12251225 let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12261226 if ($isInstanceOf(aF, "Boolean"))
12271227 then aF
12281228 else throw(($getType(aF) + " couldn't be cast to Boolean"))
12291229 }
12301230 let gd = if (if (aI())
12311231 then true
12321232 else (aX == q))
12331233 then true
12341234 else fV
12351235 let fX = [if (if (!(gd))
12361236 then true
12371237 else fB(dM))
12381238 then true
12391239 else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
12401240 then true
12411241 else aB("no payments are expected")]
12421242 if ((fX == fX))
12431243 then {
12441244 let bX = aL()
12451245 let gs = bd()
12461246 let fO = fromBase58String(bX[t])
12471247 let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1248+ let co = dM.caller
1249+ let gB = this
1250+ let gu = invoke(gt, "unstakeINTERNAL", [toBase58String(fO), gx, co, gB], nil)
12491251 if ((gu == gu))
12501252 then {
1251- let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252- let cI = gB._1
1253- let fp = gB._2
1253+ let gC = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1254+ let cI = gC._1
1255+ let fp = gC._2
12541256 $Tuple2(cI, fp)
12551257 }
12561258 else throw("Strict value is not equal to itself.")
12571259 }
12581260 else throw("Strict value is not equal to itself.")
12591261 }
12601262
12611263
12621264
12631265 @Callable(dM)
1264-func putOneTknV2WithBonusREADONLY (gC,gD) = {
1266+func putOneTknV2WithBonusREADONLY (gD,gE) = {
12651267 let aT = aL()
12661268 let cq = aT[u]
12671269 let cr = aT[v]
12681270 let cp = aT[t]
1269- let gE = eH(gC, gD, "", "", true)
1270- let eY = gE._1
1271- let cI = gE._2
1272- let cj = gE._3
1273- let fd = gE._4
1274- $Tuple2(nil, $Tuple3(eY, cj, fd))
1275- }
1276-
1277-
1278-
1279-@Callable(dM)
1280-func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281- let aT = aL()
1282- let cq = aT[u]
1283- let cr = aT[v]
1284- let cp = aT[t]
1285- let gF = eH(gC, gD, "", "", false)
1271+ let gF = eH(gD, gE, "", "", true)
12861272 let eY = gF._1
12871273 let cI = gF._2
12881274 let cj = gF._3
12891275 let fd = gF._4
12901276 $Tuple2(nil, $Tuple3(eY, cj, fd))
12911277 }
12921278
12931279
12941280
12951281 @Callable(dM)
1296-func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
1297- then throw("denied")
1298- else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
1282+func putOneTknV2WithoutTakeFeeREADONLY (gD,gE) = {
1283+ let aT = aL()
1284+ let cq = aT[u]
1285+ let cr = aT[v]
1286+ let cp = aT[t]
1287+ let gG = eH(gD, gE, "", "", false)
1288+ let eY = gG._1
1289+ let cI = gG._2
1290+ let cj = gG._3
1291+ let fd = gG._4
1292+ $Tuple2(nil, $Tuple3(eY, cj, fd))
1293+ }
12991294
13001295
13011296
13021297 @Callable(dM)
1303-func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304- then fA
1305- else [StringEntry(gI, gv)]
1298+func activate (gH,gI) = if ((toString(dM.caller) != toString(aD)))
1299+ then throw("denied")
1300+ else $Tuple2([StringEntry(ac(), gH), StringEntry(ad(), gI)], "success")
13061301
13071302
13081303
13091304 @Callable(dM)
1310-func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1305+func setS (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
13111306 then fA
1312- else [IntegerEntry(gI, gv)]
1307+ else [StringEntry(gJ, gv)]
1308+
1309+
1310+
1311+@Callable(dM)
1312+func setI (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
1313+ then fA
1314+ else [IntegerEntry(gJ, gv)]
13131315
13141316
13151317
13161318 @Callable(dM)
13171319 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
13181320
13191321
13201322
13211323 @Callable(dM)
13221324 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
13231325
13241326
13251327
13261328 @Callable(dM)
13271329 func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328- let gJ = bV(bR, bS, bW)
1329- $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
1330+ let gK = bV(bR, bS, bW)
1331+ $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
13301332 }
13311333
13321334
13331335
13341336 @Callable(dM)
1335-func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
1337+func fromX18WrapperREADONLY (J,gL) = $Tuple2(nil, I(parseBigIntValue(J), gL))
13361338
13371339
13381340
13391341 @Callable(dM)
13401342 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
13411343
13421344
13431345
13441346 @Callable(dM)
13451347 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
13461348
13471349
13481350
13491351 @Callable(dM)
1350-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
1352+func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gM,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gM, cO, cP, true, false, 0, ""))
13511353
13521354
13531355
13541356 @Callable(dM)
1355-func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356- let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357+func estimateGetOperationWrapperREADONLY (cl,gN,cn,gM) = {
1358+ let de = ck(cl, gN, cn, addressFromStringValue(gM))
13571359 $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
13581360 }
13591361
13601362
1361-@Verifier(gN)
1362-func gO () = {
1363- let gP = {
1363+@Verifier(gO)
1364+func gP () = {
1365+ let gQ = {
13641366 let av = fy()
13651367 if ($isInstanceOf(av, "ByteVector"))
13661368 then {
13671369 let fC = av
13681370 fC
13691371 }
13701372 else if ($isInstanceOf(av, "Unit"))
1371- then gN.senderPublicKey
1373+ then gO.senderPublicKey
13721374 else throw("Match error")
13731375 }
1374- let av = gN
1376+ let av = gO
13751377 if ($isInstanceOf(av, "Order"))
13761378 then {
13771379 let dz = av
1378- let gQ = aJ()
1379- let gR = dy(dz)
1380- let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381- let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382- if (if (if (gR)
1383- then gS
1384- else false)
1380+ let gR = aJ()
1381+ let gS = dy(dz)
1382+ let gT = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1383+ let gU = sigVerify(dz.bodyBytes, dz.proofs[1], gR)
1384+ if (if (if (gS)
13851385 then gT
13861386 else false)
1387+ then gU
1388+ else false)
13871389 then true
1388- else aq(gR, gS, gT)
1390+ else aq(gS, gT, gU)
13891391 }
13901392 else if ($isInstanceOf(av, "SetScriptTransaction"))
13911393 then {
13921394 let dZ = av
1393- let gU = blake2b256(value(dZ.script))
1394- let gV = fromBase64String(value(getString(aD, ao())))
1395- let gW = scriptHash(this)
1396- if (if ((gV == gU))
1397- then (gW != gU)
1395+ let gV = blake2b256(value(dZ.script))
1396+ let gW = fromBase64String(value(getString(aD, ao())))
1397+ let gX = scriptHash(this)
1398+ if (if ((gW == gV))
1399+ then (gX != gV)
13981400 else false)
13991401 then true
1400- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1402+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14011403 }
1402- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1404+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14031405 }
14041406

github/deemru/w8io/c3f4982 
139.25 ms