tx · GvABvZADwXGLf6wQGo9QeoL8xhAmuKjJT2xe2g7NeRBz

3PBkKHa5pVUFq7wLBHoM5TvjhUaZiTe4LHq:  -0.04300000 Waves

2024.01.31 17:10 [4021578] smart account 3PBkKHa5pVUFq7wLBHoM5TvjhUaZiTe4LHq > SELF 0.00000000 Waves

{ "type": 13, "id": "GvABvZADwXGLf6wQGo9QeoL8xhAmuKjJT2xe2g7NeRBz", "fee": 4300000, "feeAssetId": null, "timestamp": 1706710312368, "version": 2, "chainId": 87, "sender": "3PBkKHa5pVUFq7wLBHoM5TvjhUaZiTe4LHq", "senderPublicKey": "X4N9NYgvCQEurz2hhgVHLPUqg6BvVf97mM3bNEvY8bz", "proofs": [ "KTnhwjEn715dUAe3FvZ8FQ9gvoXcyoSy1UBUQEU9xpjEm8ouJNh1S3otbYyZocg7Wt6S8woUe2dsWiNMmqBxhUS" ], "script": "base64:BgLjOAgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIhdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcyINYWRkcmVzc1N0cmluZyIHJG1hdGNoMCIBYSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIOZmFjdG9yeUFkZHJlc3MiA2ZjYSIBcyIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiFWtleUFkZHJlc3NXaGl0ZWxpc3RlZCIUaXNBZGRyZXNzV2hpdGVsaXN0ZWQiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwOTc2OTk5MzUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIgdnZXRSYXRlIgVwcm94eSIDaW52IgFyIgdkZXBvc2l0IgZhbW91bnQiDnN0YWtpbmdBc3NldElkIhhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UiGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlIgVhc3NldCINZGVwb3NpdEludm9rZSIUcmVjZWl2ZWRTdGFraW5nQXNzZXQiFG5ld0FkZGl0aW9uYWxCYWxhbmNlIhZuZXdTdGFraW5nQXNzZXRCYWxhbmNlIgh3aXRoZHJhdyIMcHJveHlSYXRlTXVsIg1wcm9maXRBZGRyZXNzIhBjdXJyZW50UHJveHlSYXRlIgdvbGRSYXRlIgxzdGFraW5nQXNzZXQiFG9sZFNlbmRTdGFraW5nQW1vdW50IhZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50Igxwcm9maXRBbW91bnQiDndpdGhkcmF3SW52b2tlIg5yZWNlaXZlZEFzc2V0cyITZ2V0TGVhc2VQcm94eUNvbmZpZyIRcmViYWxhbmNlSW50ZXJuYWwiC3RhcmdldFJhdGlvIgptaW5CYWxhbmNlIhRsZWFzYWJsZVRvdGFsQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0Ig0kdDAxNjE3MTE2MzA3Igppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0IglnZXRBbW91bnQiDSR0MDE2NzA2MTY4NDIiF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlIg53aXRoZHJhd0Ftb3VudCIXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwiFGFtb3VudEFzc2V0T3V0QW1vdW50IhNwcmljZUFzc2V0T3V0QW1vdW50IhJBbUFtdFdpdGhkcmF3U3RhdGUiElByQW10V2l0aGRyYXdTdGF0ZSIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhNza2lwT3JkZXJWYWxpZGF0aW9uIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI5MjMxMjk0NDMiA2tMcCINJHQwMjk4ODMyOTk4MyINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiDWlzR2V0RGlzYWJsZWQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0Ig1pc1B1dERpc2FibGVkIgRlbWl0IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzMzE2OTMzNDYyIhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDMzNDY2MzM2MTUiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAzMzc0NzMzODExIg1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAzNTQ5MjM1NjU5IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzNzczNzM3NzkzIgt0b3RhbEFtb3VudCINJHQwMzc3OTczODAyMyILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzk4ODE0MDE4NiIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCISaXNQb29sU3dhcERpc2FibGVkIg5pc1N3YXBEaXNhYmxlZCIIY2hlY2tNaW4iEXJlZnJlc2hLTHBBY3Rpb25zIg5yZWJhbGFuY2VTdGF0ZSINd2l0aGRyYXdTdGF0ZSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDQ1MzYyNDU4MjQiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NjQzNjQ2NTAxIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ3NzMwNDc4ODIiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDg0Njg0ODY2NSINJHQwNDg2Njg0ODc3NiINJHQwNDkxMzE0OTI4OCINb3V0QXNzZXRJZFN0ciINJHQwNTAyMTA1MDM2MyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA1MTAyNzUxMjc0IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MTI3NzUxMzg1Ig0kdDA1MTY2MzUxODE5Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1Mjc2MTUyOTEyIg0kdDA1MzU3MTUzODE4Ig0kdDA1MzgyMTUzOTI5IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTUwMjQ1NTEwNSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTYyMDA1NjI4MSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NzYyOTU3NzEwIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTkxODg1OTI2OSILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDYwNDczNjA1MzciEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2OTE5OTY5MzE2IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iEAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICDXN0YWtlZEJhbGFuY2UJAMwIAgUCYXAFA25pbAUBagECYXEBAmFwCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFzaGFyZUFzc2V0QmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcgECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFvAQUCYXAAAAECYXMBAmFwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhcQEFAmFwAAABAmF0AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF1AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhdgECYXcJAKwCAgkArAICAgglcyVzJXNfXwUCYXcCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJheAICYXkCYXoJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF5AgJfXwUCYXoCCF9fY29uZmlnAQJhQQECYUIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUIBAmFDAAIMJXNfX3NodXRkb3duAQJhRAECYUUJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhRQECYUYAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUcCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVQAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQEBVgADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQECYU8BBQJhVgUEdGhpcwECYVcCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYVoCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYmEBAmJiCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASABAmJjAQJiYgkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmJkCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBVAAAAmJlCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQJiZAUCYUcAAmJmCgACYmcJAPwHBAUCYmQCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIDSW50BQJiZwkAAgEJAKwCAgkAAwEFAmJnAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJoCgACYmcJAPwHBAUCYmQCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCA0ludAUCYmcJAAIBCQCsAgIJAAMBBQJiZwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiaQECYVgJALkJAgkAzAgCAgQlcyVzCQDMCAICC3doaXRlbGlzdGVkCQDMCAIJAKUIAQUCYVgFA25pbAUBagECYmoBAmFYCQELdmFsdWVPckVsc2UCCQCbCAIFAmJkCQECYmkBBQJhWAcBAmJrAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJiZAkBAmFDAAcBAmJsAAkA2QQBCQECYVcCBQJiZAkBAmF1AAECYm0ABAJibgkBAmFXAgUEdGhpcwkBAmFlAAQCYm8JAQJhVwIFBHRoaXMJAQJhZgAEAmF6CQECYVoCBQJiZAkBAmFBAQUCYm8EAmF5CQECYVoCBQJiZAkBAmFBAQUCYm4JALUJAgkBAmFXAgUCYmQJAQJheAIJAKQDAQUCYXkJAKQDAQUCYXoFAWoBAmJwAQJicQMJAAACBQJicQUBaQUEdW5pdAkA2QQBBQJicQECYnIBAmJxAwkAAAIFAmJxBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmJxAQJicwECYnQJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJidAUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ0BQFwCQDZBAEJAJEDAgUCYnQFAXEJAQJicAEJAJEDAgUCYnQFAXIJAQJicAEJAJEDAgUCYnQFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ0BQF1AAJidQkBAmJzAQkBAmJtAAACYnYFAmJ1AAJidwgFAmJ2Al8xAAJieAgFAmJ2Al8yAAJieQgFAmJ2Al8zAAJieggFAmJ2Al80AAJiQQgFAmJ2Al81AAJiQggFAmJ2Al82AAJiQwgFAmJ2Al83AQJiRAAJALUJAgkBAmFXAgUCYmQJAQJhdAAFAWoAAmJFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYkQABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJEAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYkcKAmJIAmJJAmJKAmJLAmJMAmJNAmJOAmJPAmJQAmJRCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQUDbmlsBQFqAQJiUgYCYlMCYlQCYlUCYksCYk4CYk8JALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiUwkAzAgCCQCkAwEFAmJUCQDMCAIJAKQDAQUCYlUJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8FA25pbAUBagECYlYBAmFwBAJiVwMJAAACBQJhcAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYXAEAmJYCQBlAgkAZAIFAmJXCQECYXIBBQJhcAkBAmFzAQUCYXAJAJYDAQkAzAgCAAAJAMwIAgUCYlgFA25pbAECYlkCAmJaAmNhCQC8AgMFAmJaBQFkBQJjYQECY2IDAmJaAmNhAUwJAL0CBAUCYloFAWQFAmNhBQFMAQJjYwECY2QEAmNlCQD8BwQFAmNkAgdnZXRSYXRlBQNuaWwFA25pbAMJAAACBQJjZQUCY2UEAmFRBQJjZQMJAAECBQJhUQIDSW50BAJjZgUCYVEFAmNmCQECYmEBAiBwcm94eS5nZXRSYXRlKCkgdW5leHBlY3RlZCB2YWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY2cEAmFwAmNoAmNpAmNkBAJjagkBAmFyAQUCYXADCQAAAgUCY2oFAmNqBAJjawkBAmFzAQUCY2kDCQAAAgUCY2sFAmNrBAJjbAkBAmJwAQUCYXADCQBmAgUCY2gAAAQCY20JAPwHBAUCY2QCB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2wFAmNoBQNuaWwDCQAAAgUCY20FAmNtBAJhUQUCY20DCQABAgUCYVECA0ludAQCY24FAmFRBAJjbwkAZAIFAmNqBQJjaAQCY3AJAGQCBQJjawUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjbwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCY2kFAmNwBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjcQYCYXACY2gCY2kCY2QCY3ICY3MEAmNqCQECYXIBBQJhcAMJAAACBQJjagUCY2oEAmNrCQECYXMBBQJjaQMJAAACBQJjawUCY2sEAmN0CQECY2MBBQJjZAMJAAACBQJjdAUCY3QEAmN1CQBrAwUCY3IFAmNqBQJjawQCY3YJAQJicAEFAmNpBAJjdwkAawMFAmNyBQJjaAUCY3UEAmN4CQBrAwUCY3IFAmNoBQJjdAQCY3kJAJYDAQkAzAgCAAAJAMwIAgkAZQIFAmN3BQJjeAUDbmlsAwkAZgIFAmN4AAAEAmN6CQD8BwQFAmNkAgh3aXRoZHJhdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdgUCY3gFA25pbAMJAAACBQJjegUCY3oEAmFRBQJjegMJAAECBQJhUQIDSW50BAJjQQUCYVEEAmNvCQBlAgUCY2oFAmNBBAJjcAkAZQIJAGUCBQJjawUCY3gFAmN5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8BBQJhcAUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmNpBQJjcAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcwUCY3kJAQJicAEFAmNpBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjQgECYXAEAmFRCQD8BwQFAmJkAhpnZXRQb29sTGVhc2VDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMJAMwIAgUCYXAFA25pbAUDbmlsAwkAAQIFAmFRAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmFSBQJhUQUCYVIJAQJiYQEJAKwCAgkArAICAgFbBQJhcAIdXSBnZXRMZWFzZVByb3h5Q29uZmlnKCkgZXJyb3IBAmNDBwJjRAJhcAJjaQJjRQJjZAJjcgJjcwQCY2oJAQJhcgEFAmFwAwkAAAIFAmNqBQJjagQCY2sJAQJhcwEFAmNpAwkAAAIFAmNrBQJjawQCY0YJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAQJiVgEFAmFwBQJjRQUDbmlsBAJjRwkAawMFAmNEBQJjRgBkBAJjSAkAZQIFAmNqBQJjRwMJAAACBQJjSAAABQNuaWwDCQBmAgAABQJjSAQCY0kJAQEtAQUCY0gJAQJjZwQFAmFwBQJjSQUCY2kFAmNkBAJjSgUCY0gJAQJjcQYFAmFwBQJjSgUCY2kFAmNkBQJjcgUCY3MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNLAQJhcAQCY0wJAQJjQgEFAmFwBAJjTQgFAmNMAl8xBAJjTggFAmNMAl8yBAJjRQgFAmNMAl8zBAJjTwgFAmNMAl80BAJjUAgFAmNMAl81BAJjcggFAmNMAl82BAJjUQgFAmNMAl83AwUCY00JAQJjQwcFAmNOBQJhcAUCY1AFAmNFCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwUCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNRBQNuaWwBAmNSAgJhcAJjUwQCY1QJAQJjQgEFAmFwBAJjTQgFAmNUAl8xBAJjTggFAmNUAl8yBAJjRQgFAmNUAl8zBAJjTwgFAmNUAl80BAJjUAgFAmNUAl81BAJjcggFAmNUAl82BAJjUQgFAmNUAl83AwUCY00EAmNVCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBlAgkBAmJWAQUCYXAFAmNTBQJjRQUDbmlsAwkAAAIFAmNVBQJjVQQCY28JAGsDBQJjTgUCY1UAZAMJAAACBQJjbwUCY28EAmNWCQBlAgkBAmFyAQUCYXAFAmNvAwkAAAIFAmNWBQJjVgMJAGYCAAAFAmNWCQECY2cEBQJhcAkBAS0BBQJjVgUCY1AJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNPCQECY3EGBQJhcAUCY1YFAmNQCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwUCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNRCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBAmNXAgJjWAJjWQQCY1oJAQJjUgIJAQJhVwIFBHRoaXMJAQJhZQAFAmNYBAJkYQkBAmNSAgkBAmFXAgUEdGhpcwkBAmFmAAUCY1kJAM4IAgUCY1oFAmRhAQJkYgQCZGMCZGQCZGUCZGYEAmRnCQEBRAIFAmRlBQJkYwQCZGgJAQFEAgUCZGYFAmRkCQECYlkCBQJkaAUCZGcBAmRpAwJkZQJkZgJkagQCZGsJAQJibQAEAmRsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXQEAmRtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXUEAmRuCQECZGIEBQJkbAUCZG0FAmRlBQJkZgQCY2EJAQFEAgUCZGUFAmRsBAJiWgkBAUQCBQJkZgUCZG0EAmRvCQEBRAIFAmRqBQFiBAJkcAkBAmJZAgUCY2EFAmRvBAJkcQkBAmJZAgUCYloFAmRvCQDMCAIFAmRuCQDMCAIFAmRwCQDMCAIFAmRxBQNuaWwBAmRyAwJkZQJkZgJkagQCZHMJAQJkaQMFAmRlBQJkZgUCZGoJAMwIAgkBAUgCCQCRAwIFAmRzAAAFAWIJAMwIAgkBAUgCCQCRAwIFAmRzAAEFAWIJAMwIAgkBAUgCCQCRAwIFAmRzAAIFAWIFA25pbAECZHQEAmR1AmR2AmR3AmFiBAJkawkBAmJtAAQCZHgJAJEDAgUCZGsFAXEEAmR5CQCRAwIFAmRrBQFyBAJkegkAkQMCBQJkawUBcwQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZEEJAJEDAgUCZGsFAXAEAmRCCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCZHgJAKwCAgkArAICAgZBc3NldCAFAmR4Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmR4BQJkdgkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCZEMJAQJiVgEFAmR5BAJkRAkBAUQCBQJkQwUCZGMEAmRFCQECYlYBBQJkegQCZEYJAQFEAgUCZEUFAmRkBAJkRwkBAmJZAgUCZEYFAmREBAJkSAkBAUgCBQJkRwUBYgQCZEkJAQFEAgUCZHcFAWIEAmRKCQEBRAIFAmRCBQFiBAJkSwkAvAIDBQJkRAUCZEkFAmRKBAJkTAkAvAIDBQJkRgUCZEkFAmRKBAJkTQkBAUsDBQJkSwUCZGMFBUZMT09SBAJkTgkBAUsDBQJkTAUCZGQFBUZMT09SBAJkTwMJAAACBQJkdQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRNAwkAAAIFAmR5AgVXQVZFUwUEdW5pdAkA2QQBBQJkeQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZE4DCQAAAgUCZHoCBVdBVkVTBQR1bml0CQDZBAEFAmR6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmR1CQECYlIGBQJkTQUCZE4FAmR3BQJkSAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkSAUDbmlsCQCcCgoFAmRNBQJkTgUCZHkFAmR6BQJkQwUCZEUFAmRCBQJkRwUCZEEFAmRPAQJkUAkCZHUCZFECZFICZFMCZFQCZFUCYWICZFYCZFcEAmRrCQECYm0ABAJkeAkA2QQBCQCRAwIFAmRrBQFxBAJkWAkAkQMCBQJkawUBcgQCZFkJAJEDAgUCZGsFAXMEAmRaCQCRAwIFAmRrBQF2BAJlYQkAkQMCBQJkawUBdwQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZEEJAJEDAgUCZGsFAXAEAmRCCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR4CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR4Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWIJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZFMJANkEAQIFV0FWRVMEAmVjCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRVCQDZBAECBVdBVkVTAwMJAQIhPQIFAmRYBQJlYgYJAQIhPQIFAmRZBQJlYwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmRDAwUCZFYJAQJiVgEFAmRYCQBlAgkBAmJWAQUCZFgFAmRSBAJkRQMFAmRWCQECYlYBBQJkWQkAZQIJAQJiVgEFAmRZBQJkVAQCZWQJAQFEAgUCZFIFAmRsBAJlZQkBAUQCBQJkVAUCZG0EAmVmCQECYlkCBQJlZQUCZWQEAmRECQEBRAIFAmRDBQJkbAQCZEYJAQFEAgUCZEUFAmRtBAJlZwMJAAACBQJkQgAABAJkRwUBZQQCZWgFAWUEAmRvCQB2BgkAuQICBQJlZAUCZWUAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZG8FAWIJAQFIAgUCZWQFAmRsCQEBSAIFAmVlBQJkbQkBAmJZAgkAtwICBQJkRgUCZWUJALcCAgUCZEQFAmVkBQJlaAQCZEcJAQJiWQIFAmRGBQJkRAQCZWgJALwCAwkBAVIBCQC4AgIFAmRHBQJlZgUBZAUCZEcEAmVpCQEBRAIFAmRRBQFiAwMJAQIhPQIFAmRHBQFlCQC/AgIFAmVoBQJlaQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWgCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJlaQQCZEoJAQFEAgUCZEIFAWIEAmVqCQC9AgQFAmVkCQECY2IDBQJkRgUCZEQFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVrCQC9AgQFAmVlBQFkCQECY2IDBQJkRgUCZEQFBUZMT09SBQdDRUlMSU5HBAJlbAMJAL8CAgUCZWoFAmVlCQCUCgIFAmVrBQJlZQkAlAoCBQJlZAUCZWoEAmVtCAUCZWwCXzEEAmVuCAUCZWwCXzIEAmRvCQC9AgQFAmRKBQJlbgUCZEYFBUZMT09SCQCXCgUJAQFLAwUCZG8FAWIFBUZMT09SCQEBSwMFAmVtBQJkbAUHQ0VJTElORwkBAUsDBQJlbgUCZG0FB0NFSUxJTkcFAmRHBQJlaAQCZW8IBQJlZwJfMQQCZXAIBQJlZwJfMgQCZXEIBQJlZwJfMwQCZEgJAQFIAggFAmVnAl80BQFiBAJlcgkBAUgCCAUCZWcCXzUFAWIDCQBnAgAABQJlbwkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZXMDCQEBIQEFAmRXAAAFAmVvBAJldAkAZQIFAmRSBQJlcAQCZXUJAGUCBQJkVAUCZXEEAmV2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmRICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkdQkBAmJHCgUCZXAFAmVxBQJlcwUCZEgFAmRRBQJlcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXQFAmV1BQNuaWwJAJ8KDQUCZW8FAmVzBQJkSAUCZEMFAmRFBQJkQgUCZHgFAmRBBQJldgUCZXQFAmV1BQJkUwUCZFUBAmV3AwJleAJleQJkQgQCZXoJAQFHAgUCZXgJALYCAQUCYkIEAmVBCQEBRwIFAmV5CQC2AgEFAmJDBAJlQgkAvAIDCQB2BgkAuQICBQJlegUCZUEAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkQgMJAAACBQJkQgUBZgUBZgUCZUIBAmVDAwJlRAJlRQJlRgQCZUcJALgCAgkAtgIBCQECYlYBCQECYnIBBQJiegUCZUQEAmVICQC4AgIJALYCAQkBAmJWAQkBAmJyAQUCYkEFAmVFBAJlSQkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ5CHF1YW50aXR5BQJlRgQCZUoJAQJldwMFAmVHBQJlSAUCZUkFAmVKAQJlSwMCZUwCZU0CZUYEAmVHCQBkAgkBAmJWAQkBAmJyAQUCYnoFAmVMBAJlSAkAZAIJAQJiVgEJAQJicgEFAmJBBQJlTQQCZUkJAGQCCAkBBXZhbHVlAQkA7AcBBQJieQhxdWFudGl0eQUCZUYEAmVCCQECZXcDCQC2AgEFAmVHCQC2AgEFAmVICQC2AgEFAmVJBAJlTgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJlQgUDbmlsCQCUCgIFAmVOBQJlQgECZU8ACQELdmFsdWVPckVsc2UCCQCbCAIFAmJkCQECYUgBCQClCAEFBHRoaXMHAQJlUAICZVECZUIDCQDAAgIFAmVCBQJlUQYJAQJiYQEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlQgUDbmlsAgEgAQJlUgECZVMEAmVHCQECYlYBCQECYnIBBQJiegQCZUgJAQJiVgEJAQJicgEFAmJBBAJlVAgFAmVTBmFtb3VudAQCZVUJAG4ECAUCZVMGYW1vdW50CAUCZVMFcHJpY2UFAWIFBUZMT09SBAJlVgMJAAACCAUCZVMJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZVQJAQEtAQUCZVUJAJQKAgkBAS0BBQJlVAUCZVUEAmVMCAUCZVYCXzEEAmVNCAUCZVYCXzIDAwMJAQJiawAGCQAAAgUCYngFAW0GCQAAAgUCYngFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZVMJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiegYJAQIhPQIICAUCZVMJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJBCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZVcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYmMBAgtpbnZhbGlkIGtMcAQCZVgJAQJlSwMFAmVMBQJlTQAABAJlWQgFAmVYAl8xBAJlWggFAmVYAl8yBAJmYQkAwAICBQJlWgUCZVcEAmZiCQC5CQIJAMwIAgIEa0xwPQkAzAgCCQCmAwEFAmVXCQDMCAICCCBrTHBOZXc9CQDMCAIJAKYDAQUCZVoJAMwIAgIUIGFtb3VudEFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlRwkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUgJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVMCQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVNCQDMCAICCCBoZWlnaHQ9CQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAAkAlAoCBQJmYQUCZmIBAmZjAQJmZAMJAQIhPQIJAJADAQgFAmZkCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZmUJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAEAmR2CQEFdmFsdWUBCAUCZmUHYXNzZXRJZAQCZmYIBQJmZQZhbW91bnQEAmVnCQECZHQECQDYBAEIBQJmZA10cmFuc2FjdGlvbklkCQDYBAEFAmR2BQJmZggFAmZkBmNhbGxlcgQCZE0IBQJlZwJfMQQCZE4IBQJlZwJfMgQCZE8IBQJlZwNfMTAEAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwkBAmJrAAYJAAACBQJieAUBbgcDBQJmZwkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYngJAJcKBQUCZE0FAmROBQJmZgUCZHYFAmRPAQJmaAMCZmQCZFECZFcDCQECIT0CCQCQAwEIBQJmZAhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZmkJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAEAmZqCQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwABBAJmawkBAmRQCQkA2AQBCAUCZmQNdHJhbnNhY3Rpb25JZAUCZFEIBQJmaQZhbW91bnQIBQJmaQdhc3NldElkCAUCZmoGYW1vdW50CAUCZmoHYXNzZXRJZAkApQgBCAUCZmQGY2FsbGVyBwUCZFcEAmZsAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAWwGCQAAAgUCYngFAW4HAwUCZmwJAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJ4BQJmawECZm0BAmNoBAJmbgkA/AcEBQJiZAIEZW1pdAkAzAgCBQJjaAUDbmlsBQNuaWwDCQAAAgUCZm4FAmZuBAJmbwQCYVEFAmZuAwkAAQIFAmFRAgdBZGRyZXNzBAJmcAUCYVEJAPwHBAUCZnACBGVtaXQJAMwIAgUCY2gFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZvBQJmbwUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZxAgJjaAJhaQQCZnIDCQAAAgUCYWkAAAAACQBrAwUCY2gFAmFpBQFiCQCUCgIJAGUCBQJjaAUCZnIFAmZyAQJmcwQCZnQCZnUCYWICYWMEAmZ2CQAAAgUCYWMFBHVuaXQEAmZ3CQECYlYBCQECYnIBBQJiegQCZngJAQJiVgEJAQJicgEFAmJBBAJmeQMJAAACBQJmdQUCYnoGAwkAAAIFAmZ1BQJiQQcJAQJiYQECDWludmFsaWQgYXNzZXQEAmZ6AwUCZnYJAJQKAgUCZncFAmZ4AwUCZnkJAJQKAgkAZQIFAmZ3BQJmdAUCZngJAJQKAgUCZncJAGUCBQJmeAUCZnQEAmZBCAUCZnoCXzEEAmZCCAUCZnoCXzIEAmZDAwUCZnkJAJQKAgUCZnQAAAkAlAoCAAAFAmZ0BAJmRAgFAmZDAl8xBAJmRQgFAmZDAl8yBAJlVAgJAQJmcQIFAmZEBQJiZgJfMQQCZVUICQECZnECBQJmRQUCYmYCXzEEAmZGCQECZnECBQJmdAUCYmYEAmZHCAUCZkYCXzEEAmZyCAUCZkYCXzIEAmZICQBkAgUCZkEFAmVUBAJmSQkAZAIFAmZCBQJlVQQCZkoJAQJiWQIJAQFEAgUCZkkFAmJDCQEBRAIFAmZIBQJiQgQCZksJAQFIAgUCZkoFAWIEAmZMAwUCZnkFAmZBBQJmQgQCZk0JALYCAQUCZkwEAmZOCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYnkJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYnkCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmTwMJAL8CAgUCZk4FAWYGCQECYmEBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZPBQJmTwQCZlAJALYCAQUCZkcEAmZRCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZOCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZlAFAWQFAmZNABIAEgUERE9XTgUBZAUBZAUDbmlsBAJldgMFAmZ2BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZksJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZksJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJHCgUCZkQFAmZFBQJmUQUCZksAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmUgkBAmJZAgkBAUQCBQJmQgUCYkMJAQFEAgUCZkEFAmJCBAJmUwkBAUgCBQJmUgUBYgQCZlQEAmZVAwUCZnkJAJQKAgUCZkQFAmZBCQCUCgIFAmZFBQJmQgQCY2gIBQJmVQJfMQQCZlYIBQJmVQJfMgQCZlcJAKADAQkAvAIDBQJmTgkAtgIBCQBpAgUCY2gAAgkAtgIBBQJmVgkAawMJAGUCBQJmUQUCZlcFAWIFAmZXCQCXCgUFAmZRBQJldgUCZnIFAmZUBQJmeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZlgFAmZZAmZHAmZ1AmFiAmFjBAJmdgkAAAIFAmFjBQR1bml0BAJkawkBAmJtAAQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZloJAMwIAgMJAAACBQJmdQUCYnkGCQECYmEBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZloFAmZaBAJnYQMJAAACBQJmWQUCYnoGAwkAAAIFAmZZBQJiQQcJAQJiYQECDWludmFsaWQgYXNzZXQEAmdiAwUCZ2EJALYCAQkBAmJWAQkBAmJyAQUCYnoJALYCAQkBAmJWAQkBAmJyAQUCYkEEAmdjAwUCZ2EFAmRsBQJkbQQCZ2QJAQJiVgEJAQJicgEFAmJ6BAJnZQkBAmJWAQkBAmJyAQUCYkEEAmdmAwUCZ2EFAmdkBQJnZQQCZ2cJALYCAQUCZ2YEAmZOCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYnkJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYnkCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnaAkAtgIBBQJmRwQCZ2kJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZ2IJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmdoBQFkBQJmTgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJnagkBAmZxAgUCZ2kFAmJoBAJnawgFAmdqAl8xBAJmcggFAmdqAl8yBAJnbAMFAmdhCQCWCgQFAmdrAAAJAGUCBQJnZAUCZ2kFAmdlCQCWCgQAAAUCZ2sFAmdkCQBlAgUCZ2UFAmdpBAJnbQgFAmdsAl8xBAJnbggFAmdsAl8yBAJnbwgFAmdsAl8zBAJncAgFAmdsAl80BAJmSgkBAmJZAgkBAUQCBQJncAUCYkMJAQFEAgUCZ28FAmJCBAJmSwkBAUgCBQJmSgUBYgQCZXYDBQJmdgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiUgYFAmdtBQJnbgUCZkcFAmZLBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZLCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZLBQNuaWwEAmZSCQECYlkCCQEBRAIFAmdlBQJiQwkBAUQCBQJnZAUCYkIEAmZTCQEBSAIFAmZSBQFiBAJmVAQCZ3EJAGgCCQCgAwEJALwCAwUCZ2IFAmdoBQJmTgACCQBrAwkAZQIFAmdrBQJncQUBYgUCZ3EJAJcKBQUCZ2sFAmV2BQJmcgUCZlQFAmdhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJncgAEAmdzCQECYVMABAJhUQkAnQgCBQJncwkBAVUAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkA2QQBBQJhVgMJAAECBQJhUQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJndAECZmQEAmFRCQECZ3IAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJndQUCYVEJAAACCAUCZmQPY2FsbGVyUHVibGljS2V5BQJndQMJAAECBQJhUQIEVW5pdAkAAAIIBQJmZAZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3YBAmZkBAJndwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJhUQkBAmdyAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRAwkAAAIIBQJmZA9jYWxsZXJQdWJsaWNLZXkFAmd1BgUCZ3cDCQABAgUCYVECBFVuaXQDCQAAAggFAmZkBmNhbGxlcgUEdGhpcwYFAmd3CQACAQILTWF0Y2ggZXJyb3IcAmZkAQlyZWJhbGFuY2UACQDOCAIJAQJjSwEJAQJhVwIFBHRoaXMJAQJhZQAJAQJjSwEJAQJhVwIFBHRoaXMJAQJhZgACZmQBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ3gCZ3kCZ3oEAmdBAwkAAAIFAmd5BwQCZ0IJAQJhVwIFBHRoaXMJAQJhZgAEAmdDCQECYVcCBQR0aGlzCQECYWUACQCUCgIFAmdCBQJnQwQCZ0IJAQJhVwIFBHRoaXMJAQJhZQAEAmdDCQECYVcCBQR0aGlzCQECYWYACQCUCgIFAmdCBQJnQwQCZ0IIBQJnQQJfMQQCZ0MIBQJnQQJfMgQCZ0QJAQJiVgEFAmdDBAJnRQkBAmJWAQUCZ0IEAmdGCQBrAwUCZ0UFAmd4CQBkAgUCZ0QFAmd4BAJnRwkAuQICCQC2AgEFAmdECQC2AgEFAmdFBAJnSAkAuQICCQC3AgIJALcCAgkAtgIBCQECYlYBBQJnQwkAtgIBBQJneAkAtgIBBQJnegkAuAICCQC2AgEJAQJiVgEFAmdCCQC2AgEFAmdGBAJnSQMJAMACAgUCZ0gFAmdHBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmdJBQJnSQkAlAoCBQNuaWwFAmdGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZ3gCZ3kCZ0oCZ0sCZ3oEAmdMCgACYmcJAPwHBAUCYmQCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiZwIGU3RyaW5nBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmdNCgACYmcJAPwHBAUCYmQCGmlzUG9vbFN3YXBEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdOAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAW4GBQJnTQcEAmZaCQDMCAIDAwkBASEBBQJnTgYJAQJndAEFAmZkBgkBAmJhAQIic3dhcCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwAABmFtb3VudAUCZ3gGCQECYmEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZmQGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTAYJAQJiYQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZloFAmZaBAJmZQkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZ0MJAQJicgEIBQJmZQdhc3NldElkBAJnQgMJAAACBQJneQcJAQJhVwIFBHRoaXMJAQJhZgAJAQJhVwIFBHRoaXMJAQJhZQAEAmdECQBlAgkAZQIJAQJiVgEFAmdDCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAZhbW91bnQFAmd6BAJnRQkBAmJWAQUCZ0IEAmdGCQBrAwUCZ0UFAmd4CQBkAgUCZ0QFAmd4BAJnRwkAuQICCQC2AgEFAmdECQC2AgEFAmdFBAJnSAkAuQICCQC3AgIJALYCAQkBAmJWAQUCZ0MJALYCAQUCZ3oJALgCAgkAtgIBCQECYlYBBQJnQgkAtgIBBQJnRgQCZ0kDCQDAAgIFAmdIBQJnRwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnSQUCZ0kEAmdPAwkAZwIFAmdGBQJnSgYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJnTwUCZ08EAmVMAwUCZ3kJAQEtAQUCZ0YFAmd6BAJlTQMFAmd5BQJnegkBAS0BBQJnRgQCZ1AICQECZUsDBQJlTAUCZU0AAAJfMQMJAAACBQJnUAUCZ1AEAmdRCQECY0sBBQJnQwMJAAACBQJnUQUCZ1EEAmdSCQECY1ICBQJnQgUCZ0YDCQAAAgUCZ1IFAmdSCQCUCgIJAM4IAgkAzggCBQJnUgUCZ1EJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0sFAmdGCQECYnABBQJnQgUDbmlsBQJnRgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEDcHV0AgJkUQJnUwMJAGYCAAAFAmRRCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmZrCQECZmgDBQJmZAUCZFEGBAJlcwgFAmZrAl8yBAJkeAgFAmZrAl83BAJkTwgFAmZrAl85BAJldAgFAmZrA18xMAQCZXUIBQJmawNfMTEEAmdUCAUCZmsDXzEyBAJnVQgFAmZrA18xMwQCZmkJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAGYW1vdW50BAJmagkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAQZhbW91bnQEAmVKCQECZUMDBQJmaQUCZmoJALYCAQAAAwkAAAIFAmVKBQJlSgQCZm4JAPwHBAUCYmQCBGVtaXQJAMwIAgUCZXMFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8EAmFRBQJmbgMJAAECBQJhUQIHQWRkcmVzcwQCZnAFAmFRCQD8BwQFAmZwAgRlbWl0CQDMCAIFAmVzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmbwUCZm8EAmdWAwkAZgIFAmV0AAAJAPwHBAUCYkYCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnVAUCZXQFA25pbAUDbmlsAwkAAAIFAmdWBQJnVgQCZ1cDCQBmAgUCZXUAAAkA/AcEBQJiRgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdVBQJldQUDbmlsBQNuaWwDCQAAAgUCZ1cFAmdXBAJnWAMFAmdTBAJnWQkA/AcEBQJiRQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHgFAmVzBQNuaWwDCQAAAgUCZ1kFAmdZBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZkBmNhbGxlcgUCZXMFAmR4BQNuaWwEAmdaCQECZUsDAAAAAAAAAwkAAAIFAmdaBQJnWgQCZUIIBQJnWgJfMgQCZ1AIBQJnWgJfMQQCaGEJAQJlUAIFAmVKBQJlQgMJAAACBQJoYQUCaGEEAmhiCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCaGIFAmhiCQDOCAIJAM4IAgUCZE8FAmdYBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEKcHV0Rm9yRnJlZQECaGMDCQBmAgAABQJoYwkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJmawkBAmZoAwUCZmQFAmhjBwQCZE8IBQJmawJfOQQCZmkJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAGYW1vdW50BAJmagkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAQZhbW91bnQEAmVKCQECZUMDBQJmaQUCZmoJALYCAQAAAwkAAAIFAmVKBQJlSgQCaGQJAQJlSwMAAAAAAAAEAmdQCAUCaGQCXzEEAmVCCAUCaGQCXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEJcHV0T25lVGtuAgJoZQJoZgQCaGcKAAJiZwkA/AcEBQJiZAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmbAMJAQEhAQkBAmJqAQgFAmZkBmNhbGxlcgMDAwkBAmJrAAYJAAACBQJieAUBbAYJAAACBQJieAUBbgYFAmhnBwQCZloJAMwIAgMDCQEBIQEFAmZsBgkBAmd0AQUCZmQGCQECYmEBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmZAhwYXltZW50cwABBgkBAmJhAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZloFAmZaBAJoaAkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZnUIBQJoaAdhc3NldElkBAJmdAgFAmhoBmFtb3VudAQCZUoDCQAAAgUCZnUFAmJ6CQECZUMDCQC2AgEFAmZ0CQC2AgEAAAkAtgIBAAADCQAAAgUCZnUFAmJBCQECZUMDCQC2AgEAAAkAtgIBBQJmdAkAtgIBAAAJAQJiYQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJlSgUCZUoEAmFiCAUCZmQGY2FsbGVyBAJhYwgFAmZkDXRyYW5zYWN0aW9uSWQEAmhpCQECZnMEBQJmdAUCZnUFAmFiBQJhYwMJAAACBQJoaQUCaGkEAmZ5CAUCaGkCXzUEAmhqCAUCaGkCXzQEAmZyCAUCaGkCXzMEAmV2CAUCaGkCXzIEAmhrCAUCaGkCXzEEAmhsAwMJAGYCBQJoZQAACQBmAgUCaGUFAmhrBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoZQUDbmlsAgAFAmhrBAJmbgkBAmZtAQUCaGwDCQAAAgUCZm4FAmZuBAJnWAMFAmhmBAJobQkA/AcEBQJiRQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYnkFAmhsBQNuaWwDCQAAAgUCaG0FAmhtBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZkBmNhbGxlcgUCaGwFAmJ5BQNuaWwEAmhuAwkAZgIFAmZyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmUFAmZyBQJmdQUDbmlsBQNuaWwEAmhvAwkAAAIFBHRoaXMFAmJlCQCUCgIAAAAAAwUCZnkJAJQKAgkBAS0BBQJmcgAACQCUCgIAAAkBAS0BBQJmcgQCZUwIBQJobwJfMQQCZU0IBQJobwJfMgQCaHAJAQJlSwMFAmVMBQJlTQAABAJnUAgFAmhwAl8xBAJlQggFAmhwAl8yBAJlVwkBBXZhbHVlAQkAoggBBQJhagQCaGEJAQJlUAIFAmVKBQJlQgMJAAACBQJoYQUCaGEEAmhiCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCaGIFAmhiCQCUCgIJAM4IAgkAzggCCQDOCAIFAmV2BQJnWAUCaG4FAmdQBQJobAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAERcHV0T25lVGtuUkVBRE9OTFkCAmZ1AmZ0BAJocQkBAmZzBAUCZnQJAQJicAEFAmZ1BQR1bml0BQR1bml0BAJoawgFAmhxAl8xBAJldggFAmhxAl8yBAJmcggFAmhxAl8zBAJoaggFAmhxAl80BAJmeQgFAmhxAl81CQCUCgIFA25pbAkAlQoDBQJoawUCZnIFAmhqAmZkAQlnZXRPbmVUa24CAmhyAmhlBAJoZwoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAW4GBQJoZwcEAmZaCQDMCAIDAwkBASEBBQJmZwYJAQJndAEFAmZkBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmQIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZaBQJmWgQCZlkJAQJicAEFAmhyBAJoaAkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZnUIBQJoaAdhc3NldElkBAJmRwgFAmhoBmFtb3VudAQCZUoJAQJlQwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUoFAmVKBAJhYggFAmZkBmNhbGxlcgQCYWMIBQJmZA10cmFuc2FjdGlvbklkBAJocwkBAmZYBQUCZlkFAmZHBQJmdQUCYWIFAmFjAwkAAAIFAmhzBQJocwQCZ2EIBQJocwJfNQQCaGoIBQJocwJfNAQCZnIIBQJocwJfMwQCZXYIBQJocwJfMgQCaHQIBQJocwJfMQQCY2gDAwkAZgIFAmhlAAAJAGYCBQJoZQUCaHQHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhlBQNuaWwCAAUCaHQEAmh1CQD8BwQFAmJkAgRidXJuCQDMCAIFAmZHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZ1BQJmRwUDbmlsAwkAAAIFAmh1BQJodQQCZ1IJAQJjUgIFAmhyCQBkAgUCY2gJAJYDAQkAzAgCAAAJAMwIAgUCZnIFA25pbAQCaHYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmNoBQJmWQUDbmlsBAJobgMJAGYCBQJmcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmcgUCZlkFA25pbAUDbmlsBAJodwQCaHgDCQAAAgUEdGhpcwUCYmUAAAUCZnIDBQJnYQkAlAoCCQEBLQEJAGQCBQJjaAUCaHgAAAkAlAoCAAAJAQEtAQkAZAIFAmNoBQJoeAQCZUwIBQJodwJfMQQCZU0IBQJodwJfMgQCaHkJAQJlSwMFAmVMBQJlTQAABAJnUAgFAmh5Al8xBAJlQggFAmh5Al8yBAJoYQkBAmVQAgUCZUoFAmVCAwkAAAIFAmhhBQJoYQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV2BQJnUgUCaHYFAmhuBQJnUAUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBEWdldE9uZVRrblJFQURPTkxZAgJmWQJmRwQCaHoJAQJmWAUJAQJicAEFAmZZBQJmRwUCYnkFBHVuaXQFBHVuaXQEAmh0CAUCaHoCXzEEAmV2CAUCaHoCXzIEAmZyCAUCaHoCXzMEAmhqCAUCaHoCXzQEAmdhCAUCaHoCXzUJAJQKAgUDbmlsCQCVCgMFAmh0BQJmcgUCaGoCZmQBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmhBAmhyAmhlBAJoZwoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAW4GBQJoZwcEAmZaCQDMCAIDAwkBASEBBQJmZwYJAQJndAEFAmZkBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmQIcGF5bWVudHMAAAYJAQJiYQECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZaBQJmWgQCZlkJAQJicAEFAmhyBAJhYggFAmZkBmNhbGxlcgQCYWMIBQJmZA10cmFuc2FjdGlvbklkBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhCCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCYnkJAMwIAgUCaEEFA25pbAUDbmlsAwkAAAIFAmhCBQJoQgQCaEMJAQJmWAUFAmZZBQJoQQUCYnkFAmFiBQJhYwMJAAACBQJoQwUCaEMEAmdhCAUCaEMCXzUEAmhqCAUCaEMCXzQEAmZyCAUCaEMCXzMEAmV2CAUCaEMCXzIEAmh0CAUCaEMCXzEEAmNoAwMJAGYCBQJoZQAACQBmAgUCaGUFAmh0BwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoZQUDbmlsAgAFAmh0BAJodQkA/AcEBQJiZAIEYnVybgkAzAgCBQJoQQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJieQUCaEEFA25pbAMJAAACBQJodQUCaHUEAmdSCQECY1ICBQJocgkAZAIFAmNoCQCWAwEJAMwIAgAACQDMCAIFAmZyBQNuaWwEAmh2CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJmZAZjYWxsZXIFAmNoBQJmWQUDbmlsBAJobgMJAGYCBQJmcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmcgUCZlkFA25pbAUDbmlsBAJoRAQCaHgDCQAAAgUEdGhpcwUCYmUAAAUCZnIDBQJnYQkAlAoCCQEBLQEJAGQCBQJjaAUCaHgAAAkAlAoCAAAJAQEtAQkAZAIFAmNoBQJoeAQCZUwIBQJoRAJfMQQCZU0IBQJoRAJfMgQCaEUJAQJlSwMFAmVMBQJlTQAABAJnUAgFAmhFAl8xBAJlQggFAmhFAl8yBAJoYQkBAmVQAgUCZUoFAmVCAwkAAAIFAmhhBQJoYQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV2BQJnUgUCaHYFAmhuBQJnUAUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBA2dldAAEAmVnCQECZmMBBQJmZAQCZE0IBQJlZwJfMQQCZE4IBQJlZwJfMgQCZmYIBQJlZwJfMwQCZHYIBQJlZwJfNAQCZE8IBQJlZwJfNQQCZ1IJAQJjVwIFAmRNBQJkTgQCZUoJAQJlQwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUoFAmVKBAJoRgkA/AcEBQJiZAIEYnVybgkAzAgCBQJmZgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdgUCZmYFA25pbAMJAAACBQJoRgUCaEYEAmhHCQECZUsDCQEBLQEFAmRNCQEBLQEFAmROAAAEAmdQCAUCaEcCXzEEAmVCCAUCaEcCXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIJAM4IAgUCZ1IFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEJZ2V0Tm9MZXNzAgJoSAJoSQQCZWcJAQJmYwEFAmZkBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJmZggFAmVnAl8zBAJkdggFAmVnAl80BAJkTwgFAmVnAl81AwkAZgIFAmhIBQJkTQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCZE0CAyA8IAkApAMBBQJoSAMJAGYCBQJoSQUCZE4JAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJkTgIDIDwgCQCkAwEFAmhJBAJnUgkBAmNXAgUCZE0FAmROBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhGCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR2BQJmZgUDbmlsAwkAAAIFAmhGBQJoRgQCaEoJAQJlSwMJAQEtAQUCZE0JAQEtAQUCZE4AAAQCZ1AIBQJoSgJfMQQCZUIIBQJoSgJfMgQCaGEJAQJlUAIFAmVKBQJlQgMJAAACBQJoYQUCaGEJAM4IAgkAzggCBQJnUgUCZE8FAmdQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQ11bnN0YWtlQW5kR2V0AQJjaAQCaEsDCQECIT0CCQCQAwEIBQJmZAhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJoSwUCaEsEAmRrCQECYm0ABAJkeAkA2QQBCQCRAwIFAmRrBQFxBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhCCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCZHgJAMwIAgUCY2gFA25pbAUDbmlsAwkAAAIFAmhCBQJoQgQCZWcJAQJkdAQJANgEAQgFAmZkDXRyYW5zYWN0aW9uSWQJANgEAQUCZHgFAmNoCAUCZmQGY2FsbGVyBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkQQkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzkEAmRPCAUCZWcDXzEwBAJnUgkBAmNXAgUCZE0FAmROBAJmZwMJAQEhAQkBAmJqAQgFAmZkBmNhbGxlcgMJAQJiawAGCQAAAgUCYngFAW4HBAJoTAMFAmZnCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkQQYDCQAAAgUCaEwFAmhMBAJoRgkA/AcEBQJiZAIEYnVybgkAzAgCBQJjaAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkeAUCY2gFA25pbAMJAAACBQJoRgUCaEYEAmhNCQECZUsDCQEBLQEFAmRNCQEBLQEFAmROAAAEAmdQCAUCaE0CXzEEAmVCCAUCaE0CXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIJAM4IAgUCZ1IFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAETdW5zdGFrZUFuZEdldE5vTGVzcwMCaEECaE4CaEkEAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwkBAmJrAAYJAAACBQJieAUBbgcEAmZaCQDMCAIDCQEBIQEFAmZnBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmZkCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZloFAmZaBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhCCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCYnkJAMwIAgUCaEEFA25pbAUDbmlsAwkAAAIFAmhCBQJoQgQCZWcJAQJkdAQJANgEAQgFAmZkDXRyYW5zYWN0aW9uSWQJANgEAQUCYnkFAmhBCAUCZmQGY2FsbGVyBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkTwgFAmVnA18xMAQCZ1IJAQJjVwIFAmRNBQJkTgQCaE8JAMwIAgMJAGcCBQJkTQUCaE4GCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaE4FA25pbAIACQDMCAIDCQBnAgUCZE4FAmhJBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEkFA25pbAIABQNuaWwDCQAAAgUCaE8FAmhPBAJoRgkA/AcEBQJiZAIEYnVybgkAzAgCBQJoQQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJieQUCaEEFA25pbAMJAAACBQJoRgUCaEYEAmhQCQECZUsDCQEBLQEFAmRNCQEBLQEFAmROAAAEAmdQCAUCaFACXzEEAmVCCAUCaFACXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIJAM4IAgUCZ1IFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEIYWN0aXZhdGUCAmhRAmhSAwkBAiE9AgkApQgBCAUCZmQGY2FsbGVyCQClCAEFAmJkCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaFEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaFIFA25pbAIHc3VjY2VzcwJmZAEKcmVmcmVzaEtMcAAEAmhTCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmhUAwkAZwIJAGUCBQZoZWlnaHQFAmhTBQJhbgUEdW5pdAkBAmJhAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhUBQJoVAQCZVcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYmMBAgtpbnZhbGlkIGtMcAQCaFUJAQJlSwMAAAAAAAAEAmhWCAUCaFUCXzEEAmVCCAUCaFUCXzIEAmVOAwkBAiE9AgUCZVcFAmVCBQJoVgkBAmJhAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVOCQCmAwEFAmVCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJibQACZmQBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFwCQCUCgIFA25pbAkBAmJWAQUCYXACZmQBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmRlAmRmAmRqBAJkcwkBAmRpAwUCZGUFAmRmBQJkagkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmRzAAAJAMwIAgkApgMBCQCRAwIFAmRzAAEJAMwIAgkApgMBCQCRAwIFAmRzAAIFA25pbAJmZAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmZkARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJmZAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiWgJjYQkAlAoCBQNuaWwJAKYDAQkBAmJZAgkApwMBBQJiWgkApwMBBQJjYQJmZAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmR1AmRRAmRSAmRTAmRUAmRVAmFiAmRWAmRXCQCUCgIFA25pbAkBAmRQCQUCZHUFAmRRBQJkUgUCZFMFAmRUBQJkVQUCYWIFAmRWBQJkVwJmZAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmR1AmR2AmR3AmFiBAJlZwkBAmR0BAUCZHUFAmR2BQJkdwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJlZwJfMQgFAmVnAl8yCAUCZWcCXzMIBQJlZwJfNAgFAmVnAl81CAUCZWcCXzYIBQJlZwJfNwkApgMBCAUCZWcCXzgIBQJlZwJfOQgFAmVnA18xMAJmZAENc3RhdHNSRUFET05MWQAEAmRrCQECYm0ABAJkeAkA2QQBCQCRAwIFAmRrBQFxBAJoVwkAkQMCBQJkawUBcgQCaFgJAJEDAgUCZGsFAXMEAmRaCQCRAwIFAmRrBQF2BAJlYQkAkQMCBQJkawUBdwQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCaFkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoWgkBAmJWAQUCaFcEAmlhCQECYlYBBQJoWAQCaWIDCQAAAgUCaFkAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECZGkDBQJoWgUCaWEFAmhZBAJkSAAABAJpYwkBAUgCCQCRAwIFAmliAAEFAWIEAmlkCQEBSAIJAJEDAgUCaWIAAgUBYgQCaWUJAQV2YWx1ZQEJAJoIAgUCYmQJAQJhRAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmhaCQDMCAIJAKQDAQUCaWEJAMwIAgkApAMBBQJoWQkAzAgCCQCkAwEFAmRICQDMCAIJAKQDAQUCaWMJAMwIAgkApAMBBQJpZAkAzAgCCQCkAwEFAmllBQNuaWwFAWoCZmQBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJkUgQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmRYCQCRAwIFAmRrBQFyBAJkeQkA2QQBBQJkWAQCZFkJAJEDAgUCZGsFAXMEAmR6CQDZBAEFAmRZBAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJkQQkAkQMCBQJkawUBcAQCaFkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoWgkBAmJWAQUCZFgEAmlhCQECYlYBBQJkWQQCZGcJAQFEAgUCaFoFAmRsBAJkaAkBAUQCBQJpYQUCZG0EAmRHAwkAAAIFAmhZAAAFAWUJAQJiWQIFAmRoBQJkZwQCZWQJAQFEAgUCZFIFAmRsBAJlZQkAvAIDBQJlZAUCZEcFAWQEAmRUCQEBSAIFAmVlBQJkbQQCZmsJAQJkUAkCAACgwh4FAmRSBQJkeQUCZFQFAmR6AgAGBwQCZW8IBQJmawJfMQQCaWYIBQJmawJfMwQCZEMIBQJmawJfNAQCZEUIBQJmawJfNQQCZEIIBQJmawJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZW8JAMwIAgkApAMBCQEBSAIFAmRHBQFiCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRCCQDMCAIFAmRBCQDMCAIJAKQDAQUCZFIJAMwIAgkApAMBBQJkVAUDbmlsBQFqAmZkAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJkVAQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmRYCQCRAwIFAmRrBQFyBAJkeQkA2QQBBQJkWAQCZFkJAJEDAgUCZGsFAXMEAmR6CQDZBAEFAmRZBAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJkQQkAkQMCBQJkawUBcAQCaFkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJpZwkBAmJWAQUCZFgEAmloCQECYlYBBQJkWQQCaWkJAQFEAgUCaWcFAmRsBAJpagkBAUQCBQJpaAUCZG0EAmRHAwkAAAIFAmhZAAAFAWUJAQJiWQIFAmlqBQJpaQQCZWUJAQFEAgUCZFQFAmRtBAJlZAkAvAIDBQJlZQUBZAUCZEcEAmRSCQEBSAIFAmVkBQJkbAQCZmsJAQJkUAkCAACgwh4FAmRSBQJkeQUCZFQFAmR6AgAGBwQCZW8IBQJmawJfMQQCaWYIBQJmawJfMwQCZEMIBQJmawJfNAQCZEUIBQJmawJfNQQCZEIIBQJmawJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZW8JAMwIAgkApAMBCQEBSAIFAmRHBQFiCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRCCQDMCAIFAmRBCQDMCAIJAKQDAQUCZFIJAMwIAgkApAMBBQJkVAUDbmlsBQFqAmZkARNldmFsdWF0ZUdldFJFQURPTkxZAgJpawJpbAQCZWcJAQJkdAQCAAUCaWsFAmlsBQR0aGlzBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkQwgFAmVnAl81BAJkRQgFAmVnAl82BAJkQggFAmVnAl83BAJkSAgFAmVnAl84BAJkQQkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkTQkAzAgCCQCkAwEFAmROCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRCCQDMCAIJAKYDAQUCZEgJAMwIAgkApAMBBQJkQQUDbmlsBQFqAQJpbQECaW4ABAJpbwQCYVEJAQJncgADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd1BQJhUQUCZ3UDCQABAgUCYVECBFVuaXQIBQJpbQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYVEFAmltAwkAAQIFAmFRAgVPcmRlcgQCZVMFAmFRBAJpcAkBAmJsAAQCaXEDCQECZU8ACQCUCgIGAgAJAQJlUgEFAmVTBAJhSwgFAmlxAl8xBAJhTAgFAmlxAl8yBAJhTQkA9AMDCAUCZVMJYm9keUJ5dGVzCQCRAwIIBQJlUwZwcm9vZnMAAAgFAmVTD3NlbmRlclB1YmxpY0tleQQCYU4JAPQDAwgFAmVTCWJvZHlCeXRlcwkAkQMCCAUCZVMGcHJvb2ZzAAEFAmlwAwMDBQJhSwUCYU0HBQJhTgcGCQECYUoEBQJhSwUCYUwFAmFNBQJhTgMJAAECBQJhUQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmFWBQJhUQMJAPQDAwgFAmltCWJvZHlCeXRlcwkAkQMCCAUCaW0GcHJvb2ZzAAAFAmlvBgQCaXIJAPYDAQkBBXZhbHVlAQgFAmFWBnNjcmlwdAQCaXMJANsEAQkBBXZhbHVlAQkAnQgCBQJiZAkBAmFGAAQCaXQJAPEHAQUEdGhpcwMJAAACBQJpcwUCaXIJAQIhPQIFAml0BQJpcgcJAPQDAwgFAmltCWJvZHlCeXRlcwkAkQMCCAUCaW0GcHJvb2ZzAAAFAmlv1lDrtA==", "height": 4021578, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: Ay814ndKxJC739HUAipv96G6PXpHrFE9CSYq9Tq64k7K Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 8
5+
6+let b = 100000000
7+
8+let c = toBigInt(100000000)
9+
10+let d = toBigInt(1000000000000000000)
11+
12+let e = toBigInt(0)
13+
14+let f = toBigInt(0)
15+
16+let g = toBigInt(1)
17+
18+let h = toBigInt(2)
19+
20+let i = "WAVES"
21+
22+let j = "__"
23+
24+let k = 1
25+
26+let l = 2
27+
28+let m = 3
29+
30+let n = 4
31+
32+let o = 1
33+
34+let p = 2
35+
36+let q = 3
37+
38+let r = 4
39+
40+let s = 5
41+
42+let t = 6
43+
44+let u = 7
45+
46+let v = 8
47+
48+let w = 9
49+
50+let x = 10
51+
52+let y = 1
53+
54+let z = 2
55+
56+let A = 3
57+
58+let B = 1
59+
60+let C = 7
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
63+
64+
65+func G (E,F) = fraction(E, d, F)
66+
67+
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
69+
70+
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
72+
73+
74+func M (N,O,P) = fraction(N, O, P)
75+
76+
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
80+
81+
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
85+
86+
87+func S () = "%s__swapContract"
88+
89+
90+func T () = "%s__factoryContract"
91+
92+
93+func U () = "%s__managerPublicKey"
94+
95+
96+func V () = "%s__managerVaultAddress"
97+
98+
99+func W () = "%s%s__price__last"
100+
101+
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103+
104+
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106+
107+
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109+
110+
111+func ae () = "%s__amountAsset"
112+
113+
114+func af () = "%s__priceAsset"
115+
116+
117+let ag = "%s__fee"
118+
119+let ah = fraction(10, b, 10000)
120+
121+let ai = valueOrElse(getInteger(this, ag), ah)
122+
123+let aj = makeString(["%s", "kLp"], j)
124+
125+let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126+
127+let al = makeString(["%s", "refreshKLpDelay"], j)
128+
129+let am = 30
130+
131+let an = valueOrElse(getInteger(this, al), am)
132+
133+func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134+
135+
136+func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137+
138+
139+func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140+
141+
142+func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143+
144+
145+func at () = "%s__factoryConfig"
146+
147+
148+func au () = "%s%s__matcher__publicKey"
149+
150+
151+func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152+
153+
154+func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155+
156+
157+func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158+
159+
160+func aC () = "%s__shutdown"
161+
162+
163+func aD (aE) = ("%s%s__poolWeight__" + aE)
164+
165+
166+func aF () = "%s__allowedLpScriptHash"
167+
168+
169+let aG = "%s__feeCollectorAddress"
170+
171+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172+
173+
174+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175+
176+
177+func aO (aP) = {
178+ let aQ = addressFromString(aP)
179+ if ($isInstanceOf(aQ, "Address"))
180+ then {
181+ let aR = aQ
182+ aR
183+ }
184+ else this
185+ }
186+
187+
188+func aS () = {
189+ let aT = {
190+ let aQ = getString(T())
191+ if ($isInstanceOf(aQ, "String"))
192+ then {
193+ let aU = aQ
194+ aO(aU)
195+ }
196+ else this
197+ }
198+ let aQ = getString(aT, V())
199+ if ($isInstanceOf(aQ, "String"))
200+ then {
201+ let aV = aQ
202+ aO(aV)
203+ }
204+ else this
205+ }
206+
207+
208+func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
209+
210+
211+func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
212+
213+
214+func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215+
216+
217+func bc (bb) = makeString(["lp.ride:", bb], " ")
218+
219+
220+let bd = addressFromStringValue(aW(this, T()))
221+
222+let be = addressFromStringValue(aW(bd, aG))
223+
224+let bf = {
225+ let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226+ if ($isInstanceOf(bg, "Int"))
227+ then bg
228+ else throw(($getType(bg) + " couldn't be cast to Int"))
229+ }
230+
231+let bh = {
232+ let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233+ if ($isInstanceOf(bg, "Int"))
234+ then bg
235+ else throw(($getType(bg) + " couldn't be cast to Int"))
236+ }
237+
238+func bi (aX) = makeString(["%s%s", "whitelisted", toString(aX)], j)
239+
240+
241+func bj (aX) = valueOrElse(getBoolean(bd, bi(aX)), false)
242+
243+
244+func bk () = valueOrElse(getBoolean(bd, aC()), false)
245+
246+
247+func bl () = fromBase58String(aW(bd, au()))
248+
249+
250+func bm () = {
251+ let bn = aW(this, ae())
252+ let bo = aW(this, af())
253+ let az = aZ(bd, aA(bo))
254+ let ay = aZ(bd, aA(bn))
255+ split(aW(bd, ax(toString(ay), toString(az))), j)
256+ }
257+
258+
259+func bp (bq) = if ((bq == i))
260+ then unit
261+ else fromBase58String(bq)
262+
263+
264+func br (bq) = if ((bq == unit))
265+ then i
266+ else toBase58String(value(bq))
267+
268+
269+func bs (bt) = $Tuple7(addressFromStringValue(bt[o]), parseIntValue(bt[p]), fromBase58String(bt[q]), bp(bt[r]), bp(bt[s]), parseIntValue(bt[t]), parseIntValue(bt[u]))
270+
271+
272+let bu = bs(bm())
273+
274+let bv = bu
275+
276+let bw = bv._1
277+
278+let bx = bv._2
279+
280+let by = bv._3
281+
282+let bz = bv._4
283+
284+let bA = bv._5
285+
286+let bB = bv._6
287+
288+let bC = bv._7
289+
290+func bD () = split(aW(bd, at()), j)
291+
292+
293+let bE = valueOrErrorMessage(addressFromString(bD()[B]), "incorrect staking address")
294+
295+let bF = valueOrErrorMessage(addressFromString(bD()[C]), "incorrect staking address")
296+
297+func bG (bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ)], j)
298+
299+
300+func bR (bS,bT,bU,bK,bN,bO) = makeString(["%d%d%d%d%d%d", toString(bS), toString(bT), toString(bU), toString(bK), toString(bN), toString(bO)], j)
301+
302+
303+func bV (ap) = {
304+ let bW = if ((ap == "WAVES"))
305+ then wavesBalance(this).available
306+ else assetBalance(this, fromBase58String(ap))
307+ let bX = ((bW + ar(ap)) - as(ap))
308+ max([0, bX])
309+ }
310+
311+
312+func bY (bZ,ca) = fraction(bZ, d, ca)
313+
314+
315+func cb (bZ,ca,L) = fraction(bZ, d, ca, L)
316+
317+
318+func cc (cd) = {
319+ let ce = invoke(cd, "getRate", nil, nil)
320+ if ((ce == ce))
321+ then {
322+ let aQ = ce
323+ if ($isInstanceOf(aQ, "Int"))
324+ then {
325+ let cf = aQ
326+ cf
327+ }
328+ else ba("proxy.getRate() unexpected value")
329+ }
330+ else throw("Strict value is not equal to itself.")
331+ }
332+
333+
334+func cg (ap,ch,ci,cd) = {
335+ let cj = ar(ap)
336+ if ((cj == cj))
337+ then {
338+ let ck = as(ci)
339+ if ((ck == ck))
340+ then {
341+ let cl = bp(ap)
342+ if ((ch > 0))
343+ then {
344+ let cm = invoke(cd, "deposit", nil, [AttachedPayment(cl, ch)])
345+ if ((cm == cm))
346+ then {
347+ let aQ = cm
348+ if ($isInstanceOf(aQ, "Int"))
349+ then {
350+ let cn = aQ
351+ let co = (cj + ch)
352+ let cp = (ck + cn)
353+[IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp)]
354+ }
355+ else nil
356+ }
357+ else throw("Strict value is not equal to itself.")
358+ }
359+ else nil
360+ }
361+ else throw("Strict value is not equal to itself.")
362+ }
363+ else throw("Strict value is not equal to itself.")
364+ }
365+
366+
367+func cq (ap,ch,ci,cd,cr,cs) = {
368+ let cj = ar(ap)
369+ if ((cj == cj))
370+ then {
371+ let ck = as(ci)
372+ if ((ck == ck))
373+ then {
374+ let ct = cc(cd)
375+ if ((ct == ct))
376+ then {
377+ let cu = fraction(cr, cj, ck)
378+ let cv = bp(ci)
379+ let cw = fraction(cr, ch, cu)
380+ let cx = fraction(cr, ch, ct)
381+ let cy = max([0, (cw - cx)])
382+ if ((cx > 0))
383+ then {
384+ let cz = invoke(cd, "withdraw", nil, [AttachedPayment(cv, cx)])
385+ if ((cz == cz))
386+ then {
387+ let aQ = cz
388+ if ($isInstanceOf(aQ, "Int"))
389+ then {
390+ let cA = aQ
391+ let co = (cj - cA)
392+ let cp = ((ck - cx) - cy)
393+[IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp), ScriptTransfer(cs, cy, bp(ci))]
394+ }
395+ else nil
396+ }
397+ else throw("Strict value is not equal to itself.")
398+ }
399+ else nil
400+ }
401+ else throw("Strict value is not equal to itself.")
402+ }
403+ else throw("Strict value is not equal to itself.")
404+ }
405+ else throw("Strict value is not equal to itself.")
406+ }
407+
408+
409+func cB (ap) = {
410+ let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
411+ if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
412+ then {
413+ let aR = aQ
414+ aR
415+ }
416+ else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
417+ }
418+
419+
420+func cC (cD,ap,ci,cE,cd,cr,cs) = {
421+ let cj = ar(ap)
422+ if ((cj == cj))
423+ then {
424+ let ck = as(ci)
425+ if ((ck == ck))
426+ then {
427+ let cF = max([0, (bV(ap) - cE)])
428+ let cG = fraction(cD, cF, 100)
429+ let cH = (cj - cG)
430+ if ((cH == 0))
431+ then nil
432+ else if ((0 > cH))
433+ then {
434+ let cI = -(cH)
435+ cg(ap, cI, ci, cd)
436+ }
437+ else {
438+ let cJ = cH
439+ cq(ap, cJ, ci, cd, cr, cs)
440+ }
441+ }
442+ else throw("Strict value is not equal to itself.")
443+ }
444+ else throw("Strict value is not equal to itself.")
445+ }
446+
447+
448+func cK (ap) = {
449+ let cL = cB(ap)
450+ let cM = cL._1
451+ let cN = cL._2
452+ let cE = cL._3
453+ let cO = cL._4
454+ let cP = cL._5
455+ let cr = cL._6
456+ let cQ = cL._7
457+ if (cM)
458+ then cC(cN, ap, cP, cE, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
459+ else nil
460+ }
461+
462+
463+func cR (ap,cS) = {
464+ let cT = cB(ap)
465+ let cM = cT._1
466+ let cN = cT._2
467+ let cE = cT._3
468+ let cO = cT._4
469+ let cP = cT._5
470+ let cr = cT._6
471+ let cQ = cT._7
472+ if (cM)
473+ then {
474+ let cU = max([0, ((bV(ap) - cS) - cE)])
475+ if ((cU == cU))
476+ then {
477+ let co = fraction(cN, cU, 100)
478+ if ((co == co))
479+ then {
480+ let cV = (ar(ap) - co)
481+ if ((cV == cV))
482+ then if ((0 > cV))
483+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
484+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
485+ else throw("Strict value is not equal to itself.")
486+ }
487+ else throw("Strict value is not equal to itself.")
488+ }
489+ else throw("Strict value is not equal to itself.")
490+ }
491+ else nil
492+ }
493+
494+
495+func cW (cX,cY) = {
496+ let cZ = cR(aW(this, ae()), cX)
497+ let da = cR(aW(this, af()), cY)
498+ (cZ ++ da)
499+ }
500+
501+
502+func db (dc,dd,de,df) = {
503+ let dg = D(de, dc)
504+ let dh = D(df, dd)
505+ bY(dh, dg)
506+ }
507+
508+
509+func di (de,df,dj) = {
510+ let dk = bm()
511+ let dl = parseIntValue(dk[t])
512+ let dm = parseIntValue(dk[u])
513+ let dn = db(dl, dm, de, df)
514+ let ca = D(de, dl)
515+ let bZ = D(df, dm)
516+ let do = D(dj, b)
517+ let dp = bY(ca, do)
518+ let dq = bY(bZ, do)
519+[dn, dp, dq]
520+ }
521+
522+
523+func dr (de,df,dj) = {
524+ let ds = di(de, df, dj)
525+[H(ds[0], b), H(ds[1], b), H(ds[2], b)]
526+ }
527+
528+
529+func dt (du,dv,dw,ab) = {
530+ let dk = bm()
531+ let dx = dk[q]
532+ let dy = dk[r]
533+ let dz = dk[s]
534+ let dc = parseIntValue(dk[t])
535+ let dd = parseIntValue(dk[u])
536+ let dA = dk[p]
537+ let dB = valueOrErrorMessage(assetInfo(fromBase58String(dx)), (("Asset " + dx) + " doesn't exist")).quantity
538+ if ((dx != dv))
539+ then throw("Invalid asset passed.")
540+ else {
541+ let dC = bV(dy)
542+ let dD = D(dC, dc)
543+ let dE = bV(dz)
544+ let dF = D(dE, dd)
545+ let dG = bY(dF, dD)
546+ let dH = H(dG, b)
547+ let dI = D(dw, b)
548+ let dJ = D(dB, b)
549+ let dK = fraction(dD, dI, dJ)
550+ let dL = fraction(dF, dI, dJ)
551+ let dM = K(dK, dc, FLOOR)
552+ let dN = K(dL, dd, FLOOR)
553+ let dO = if ((du == ""))
554+ then nil
555+ else [ScriptTransfer(ab, dM, if ((dy == "WAVES"))
556+ then unit
557+ else fromBase58String(dy)), ScriptTransfer(ab, dN, if ((dz == "WAVES"))
558+ then unit
559+ else fromBase58String(dz)), StringEntry(ad(toString(ab), du), bR(dM, dN, dw, dH, height, lastBlock.timestamp)), IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH)]
560+ $Tuple10(dM, dN, dy, dz, dC, dE, dB, dG, dA, dO)
561+ }
562+ }
563+
564+
565+func dP (du,dQ,dR,dS,dT,dU,ab,dV,dW) = {
566+ let dk = bm()
567+ let dx = fromBase58String(dk[q])
568+ let dX = dk[r]
569+ let dY = dk[s]
570+ let dZ = dk[v]
571+ let ea = dk[w]
572+ let dl = parseIntValue(dk[t])
573+ let dm = parseIntValue(dk[u])
574+ let dA = dk[p]
575+ let dB = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
576+ let eb = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
577+ let ec = toBase58String(valueOrElse(dU, fromBase58String("WAVES")))
578+ if (if ((dX != eb))
579+ then true
580+ else (dY != ec))
581+ then throw("Invalid amt or price asset passed.")
582+ else {
583+ let dC = if (dV)
584+ then bV(dX)
585+ else (bV(dX) - dR)
586+ let dE = if (dV)
587+ then bV(dY)
588+ else (bV(dY) - dT)
589+ let ed = D(dR, dl)
590+ let ee = D(dT, dm)
591+ let ef = bY(ee, ed)
592+ let dD = D(dC, dl)
593+ let dF = D(dE, dm)
594+ let eg = if ((dB == 0))
595+ then {
596+ let dG = e
597+ let eh = e
598+ let do = pow((ed * ee), 0, toBigInt(5), 1, 0, DOWN)
599+ $Tuple5(H(do, b), H(ed, dl), H(ee, dm), bY((dF + ee), (dD + ed)), eh)
600+ }
601+ else {
602+ let dG = bY(dF, dD)
603+ let eh = fraction(R((dG - ef)), d, dG)
604+ let ei = D(dQ, b)
605+ if (if ((dG != e))
606+ then (eh > ei)
607+ else false)
608+ then throw(((("Price slippage " + toString(eh)) + " exceeded the passed limit of ") + toString(ei)))
609+ else {
610+ let dJ = D(dB, b)
611+ let ej = fraction(ed, cb(dF, dD, CEILING), d, CEILING)
612+ let ek = fraction(ee, d, cb(dF, dD, FLOOR), CEILING)
613+ let el = if ((ej > ee))
614+ then $Tuple2(ek, ee)
615+ else $Tuple2(ed, ej)
616+ let em = el._1
617+ let en = el._2
618+ let do = fraction(dJ, en, dF, FLOOR)
619+ $Tuple5(K(do, b, FLOOR), K(em, dl, CEILING), K(en, dm, CEILING), dG, eh)
620+ }
621+ }
622+ let eo = eg._1
623+ let ep = eg._2
624+ let eq = eg._3
625+ let dH = H(eg._4, b)
626+ let er = H(eg._5, b)
627+ if ((0 >= eo))
628+ then throw("Invalid calculations. LP calculated is less than zero.")
629+ else {
630+ let es = if (!(dW))
631+ then 0
632+ else eo
633+ let et = (dR - ep)
634+ let eu = (dT - eq)
635+ let ev = [IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH), StringEntry(aa(ab, du), bG(ep, eq, es, dH, dQ, er, height, lastBlock.timestamp, et, eu))]
636+ $Tuple13(eo, es, dH, dC, dE, dB, dx, dA, ev, et, eu, dS, dU)
637+ }
638+ }
639+ }
640+
641+
642+func ew (ex,ey,dB) = {
643+ let ez = G(ex, toBigInt(bB))
644+ let eA = G(ey, toBigInt(bC))
645+ let eB = fraction(pow((ez * eA), 0, toBigInt(5), 1, 18, DOWN), g, dB)
646+ if ((dB == f))
647+ then f
648+ else eB
649+ }
650+
651+
652+func eC (eD,eE,eF) = {
653+ let eG = (toBigInt(bV(br(bz))) - eD)
654+ let eH = (toBigInt(bV(br(bA))) - eE)
655+ let eI = (toBigInt(value(assetInfo(by)).quantity) - eF)
656+ let eJ = ew(eG, eH, eI)
657+ eJ
658+ }
659+
660+
661+func eK (eL,eM,eF) = {
662+ let eG = (bV(br(bz)) + eL)
663+ let eH = (bV(br(bA)) + eM)
664+ let eI = (value(assetInfo(by)).quantity + eF)
665+ let eB = ew(toBigInt(eG), toBigInt(eH), toBigInt(eI))
666+ let eN = [IntegerEntry(ak, height), StringEntry(aj, toString(eB))]
667+ $Tuple2(eN, eB)
668+ }
669+
670+
671+func eO () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
672+
673+
674+func eP (eQ,eB) = if ((eB >= eQ))
675+ then true
676+ else ba(makeString(["updated KLp lower than current KLp", toString(eQ), toString(eB)], " "))
677+
678+
679+func eR (eS) = {
680+ let eG = bV(br(bz))
681+ let eH = bV(br(bA))
682+ let eT = eS.amount
683+ let eU = fraction(eS.amount, eS.price, b, FLOOR)
684+ let eV = if ((eS.orderType == Buy))
685+ then $Tuple2(eT, -(eU))
686+ else $Tuple2(-(eT), eU)
687+ let eL = eV._1
688+ let eM = eV._2
689+ if (if (if (bk())
690+ then true
691+ else (bx == m))
692+ then true
693+ else (bx == n))
694+ then throw("Exchange operations disabled")
695+ else if (if ((eS.assetPair.amountAsset != bz))
696+ then true
697+ else (eS.assetPair.priceAsset != bA))
698+ then throw("Wrong order assets.")
699+ else {
700+ let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
701+ let eX = eK(eL, eM, 0)
702+ let eY = eX._1
703+ let eZ = eX._2
704+ let fa = (eZ >= eW)
705+ let fb = makeString(["kLp=", toString(eW), " kLpNew=", toString(eZ), " amountAssetBalance=", toString(eG), " priceAssetBalance=", toString(eH), " amountAssetBalanceDelta=", toString(eL), " priceAssetBalanceDelta=", toString(eM), " height=", toString(height)], "")
706+ $Tuple2(fa, fb)
707+ }
708+ }
709+
710+
711+func fc (fd) = if ((size(fd.payments) != 1))
712+ then throw("exactly 1 payment is expected")
713+ else {
714+ let fe = value(fd.payments[0])
715+ let dv = value(fe.assetId)
716+ let ff = fe.amount
717+ let eg = dt(toBase58String(fd.transactionId), toBase58String(dv), ff, fd.caller)
718+ let dM = eg._1
719+ let dN = eg._2
720+ let dO = eg._10
721+ let fg = if (!(bj(fd.caller)))
722+ then if (bk())
723+ then true
724+ else (bx == n)
725+ else false
726+ if (fg)
727+ then throw(("Get operation is blocked by admin. Status = " + toString(bx)))
728+ else $Tuple5(dM, dN, ff, dv, dO)
729+ }
730+
731+
732+func fh (fd,dQ,dW) = if ((size(fd.payments) != 2))
733+ then throw("exactly 2 payments are expected")
734+ else {
735+ let fi = value(fd.payments[0])
736+ let fj = value(fd.payments[1])
737+ let fk = dP(toBase58String(fd.transactionId), dQ, fi.amount, fi.assetId, fj.amount, fj.assetId, toString(fd.caller), false, dW)
738+ let fl = if (!(bj(fd.caller)))
739+ then if (if (bk())
740+ then true
741+ else (bx == l))
742+ then true
743+ else (bx == n)
744+ else false
745+ if (fl)
746+ then throw(("Put operation is blocked by admin. Status = " + toString(bx)))
747+ else fk
748+ }
749+
750+
751+func fm (ch) = {
752+ let fn = invoke(bd, "emit", [ch], nil)
753+ if ((fn == fn))
754+ then {
755+ let fo = {
756+ let aQ = fn
757+ if ($isInstanceOf(aQ, "Address"))
758+ then {
759+ let fp = aQ
760+ invoke(fp, "emit", [ch], nil)
761+ }
762+ else unit
763+ }
764+ if ((fo == fo))
765+ then ch
766+ else throw("Strict value is not equal to itself.")
767+ }
768+ else throw("Strict value is not equal to itself.")
769+ }
770+
771+
772+func fq (ch,ai) = {
773+ let fr = if ((ai == 0))
774+ then 0
775+ else fraction(ch, ai, b)
776+ $Tuple2((ch - fr), fr)
777+ }
778+
779+
780+func fs (ft,fu,ab,ac) = {
781+ let fv = (ac == unit)
782+ let fw = bV(br(bz))
783+ let fx = bV(br(bA))
784+ let fy = if ((fu == bz))
785+ then true
786+ else if ((fu == bA))
787+ then false
788+ else ba("invalid asset")
789+ let fz = if (fv)
790+ then $Tuple2(fw, fx)
791+ else if (fy)
792+ then $Tuple2((fw - ft), fx)
793+ else $Tuple2(fw, (fx - ft))
794+ let fA = fz._1
795+ let fB = fz._2
796+ let fC = if (fy)
797+ then $Tuple2(ft, 0)
798+ else $Tuple2(0, ft)
799+ let fD = fC._1
800+ let fE = fC._2
801+ let eT = fq(fD, bf)._1
802+ let eU = fq(fE, bf)._1
803+ let fF = fq(ft, bf)
804+ let fG = fF._1
805+ let fr = fF._2
806+ let fH = (fA + eT)
807+ let fI = (fB + eU)
808+ let fJ = bY(D(fI, bC), D(fH, bB))
809+ let fK = H(fJ, b)
810+ let fL = if (fy)
811+ then fA
812+ else fB
813+ let fM = toBigInt(fL)
814+ let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
815+ let fO = if ((fN > f))
816+ then true
817+ else ba("initial deposit requires all coins")
818+ if ((fO == fO))
819+ then {
820+ let fP = toBigInt(fG)
821+ let fQ = max([0, toInt(((fN * (sqrtBigInt((d + ((fP * d) / fM)), 18, 18, DOWN) - d)) / d))])
822+ let ev = if (fv)
823+ then nil
824+ else [IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bG(fD, fE, fQ, fK, 0, 0, height, lastBlock.timestamp, 0, 0))]
825+ let fR = bY(D(fB, bC), D(fA, bB))
826+ let fS = H(fR, b)
827+ let fT = {
828+ let fU = if (fy)
829+ then $Tuple2(fD, fA)
830+ else $Tuple2(fE, fB)
831+ let ch = fU._1
832+ let fV = fU._2
833+ let fW = toInt(fraction(fN, toBigInt((ch / 2)), toBigInt(fV)))
834+ fraction((fQ - fW), b, fW)
835+ }
836+ $Tuple5(fQ, ev, fr, fT, fy)
837+ }
838+ else throw("Strict value is not equal to itself.")
839+ }
840+
841+
842+func fX (fY,fG,fu,ab,ac) = {
843+ let fv = (ac == unit)
844+ let dk = bm()
845+ let dl = parseIntValue(dk[t])
846+ let dm = parseIntValue(dk[u])
847+ let fZ = [if ((fu == by))
848+ then true
849+ else ba("invalid lp asset")]
850+ if ((fZ == fZ))
851+ then {
852+ let ga = if ((fY == bz))
853+ then true
854+ else if ((fY == bA))
855+ then false
856+ else ba("invalid asset")
857+ let gb = if (ga)
858+ then toBigInt(bV(br(bz)))
859+ else toBigInt(bV(br(bA)))
860+ let gc = if (ga)
861+ then dl
862+ else dm
863+ let gd = bV(br(bz))
864+ let ge = bV(br(bA))
865+ let gf = if (ga)
866+ then gd
867+ else ge
868+ let gg = toBigInt(gf)
869+ let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
870+ let gh = toBigInt(fG)
871+ let gi = max([0, toInt(((gb * (d - pow((d - ((gh * d) / fN)), 18, h, 0, 18, DOWN))) / d))])
872+ let gj = fq(gi, bh)
873+ let gk = gj._1
874+ let fr = gj._2
875+ let gl = if (ga)
876+ then $Tuple4(gk, 0, (gd - gi), ge)
877+ else $Tuple4(0, gk, gd, (ge - gi))
878+ let gm = gl._1
879+ let gn = gl._2
880+ let go = gl._3
881+ let gp = gl._4
882+ let fJ = bY(D(gp, bC), D(go, bB))
883+ let fK = H(fJ, b)
884+ let ev = if (fv)
885+ then nil
886+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bR(gm, gn, fG, fK, height, lastBlock.timestamp)), IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK)]
887+ let fR = bY(D(ge, bC), D(gd, bB))
888+ let fS = H(fR, b)
889+ let fT = {
890+ let gq = (toInt(fraction(gb, gh, fN)) * 2)
891+ fraction((gk - gq), b, gq)
892+ }
893+ $Tuple5(gk, ev, fr, fT, ga)
894+ }
895+ else throw("Strict value is not equal to itself.")
896+ }
897+
898+
899+func gr () = {
900+ let gs = aS()
901+ let aQ = getString(gs, U())
902+ if ($isInstanceOf(aQ, "String"))
903+ then {
904+ let aV = aQ
905+ fromBase58String(aV)
906+ }
907+ else if ($isInstanceOf(aQ, "Unit"))
908+ then unit
909+ else throw("Match error")
910+ }
911+
912+
913+func gt (fd) = {
914+ let aQ = gr()
915+ if ($isInstanceOf(aQ, "ByteVector"))
916+ then {
917+ let gu = aQ
918+ (fd.callerPublicKey == gu)
919+ }
920+ else if ($isInstanceOf(aQ, "Unit"))
921+ then (fd.caller == this)
922+ else throw("Match error")
923+ }
924+
925+
926+func gv (fd) = {
927+ let gw = throw("Permission denied")
928+ let aQ = gr()
929+ if ($isInstanceOf(aQ, "ByteVector"))
930+ then {
931+ let gu = aQ
932+ if ((fd.callerPublicKey == gu))
933+ then true
934+ else gw
935+ }
936+ else if ($isInstanceOf(aQ, "Unit"))
937+ then if ((fd.caller == this))
938+ then true
939+ else gw
940+ else throw("Match error")
941+ }
942+
943+
944+@Callable(fd)
945+func rebalance () = (cK(aW(this, ae())) ++ cK(aW(this, af())))
946+
947+
948+
949+@Callable(fd)
950+func calculateAmountOutForSwapREADONLY (gx,gy,gz) = {
951+ let gA = if ((gy == false))
952+ then {
953+ let gB = aW(this, af())
954+ let gC = aW(this, ae())
955+ $Tuple2(gB, gC)
956+ }
957+ else {
958+ let gB = aW(this, ae())
959+ let gC = aW(this, af())
960+ $Tuple2(gB, gC)
961+ }
962+ let gB = gA._1
963+ let gC = gA._2
964+ let gD = bV(gC)
965+ let gE = bV(gB)
966+ let gF = fraction(gE, gx, (gD + gx))
967+ let gG = (toBigInt(gD) * toBigInt(gE))
968+ let gH = (((toBigInt(bV(gC)) + toBigInt(gx)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
969+ let gI = if ((gH >= gG))
970+ then true
971+ else throw("new K is fewer error")
972+ if ((gI == gI))
973+ then $Tuple2(nil, gF)
974+ else throw("Strict value is not equal to itself.")
975+ }
976+
977+
978+
979+@Callable(fd)
980+func calculateAmountOutForSwapAndSendTokens (gx,gy,gJ,gK,gz) = {
981+ let gL = {
982+ let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
983+ if ($isInstanceOf(bg, "String"))
984+ then bg
985+ else throw(($getType(bg) + " couldn't be cast to String"))
986+ }
987+ let gM = {
988+ let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
989+ if ($isInstanceOf(bg, "Boolean"))
990+ then bg
991+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
992+ }
993+ let gN = if (!(bj(fd.caller)))
994+ then if (if (bk())
995+ then true
996+ else (bx == n))
997+ then true
998+ else gM
999+ else false
1000+ let fZ = [if (if (!(gN))
1001+ then true
1002+ else gt(fd))
1003+ then true
1004+ else ba("swap operation is blocked by admin"), if ((value(fd.payments[0]).amount >= gx))
1005+ then true
1006+ else ba("Wrong amount"), if ((fd.caller == addressFromStringValue(gL)))
1007+ then true
1008+ else ba("Permission denied")]
1009+ if ((fZ == fZ))
1010+ then {
1011+ let fe = value(fd.payments[0])
1012+ let gC = br(fe.assetId)
1013+ let gB = if ((gy == false))
1014+ then aW(this, af())
1015+ else aW(this, ae())
1016+ let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
1017+ let gE = bV(gB)
1018+ let gF = fraction(gE, gx, (gD + gx))
1019+ let gG = (toBigInt(gD) * toBigInt(gE))
1020+ let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
1021+ let gI = if ((gH >= gG))
1022+ then true
1023+ else throw("new K is fewer error")
1024+ if ((gI == gI))
1025+ then {
1026+ let gO = if ((gF >= gJ))
1027+ then true
1028+ else throw("Exchange result is fewer coins than expected")
1029+ if ((gO == gO))
1030+ then {
1031+ let eL = if (gy)
1032+ then -(gF)
1033+ else gz
1034+ let eM = if (gy)
1035+ then gz
1036+ else -(gF)
1037+ let gP = eK(eL, eM, 0)._1
1038+ if ((gP == gP))
1039+ then {
1040+ let gQ = cK(gC)
1041+ if ((gQ == gQ))
1042+ then {
1043+ let gR = cR(gB, gF)
1044+ if ((gR == gR))
1045+ then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
1046+ else throw("Strict value is not equal to itself.")
1047+ }
1048+ else throw("Strict value is not equal to itself.")
1049+ }
1050+ else throw("Strict value is not equal to itself.")
1051+ }
1052+ else throw("Strict value is not equal to itself.")
1053+ }
1054+ else throw("Strict value is not equal to itself.")
1055+ }
1056+ else throw("Strict value is not equal to itself.")
1057+ }
1058+
1059+
1060+
1061+@Callable(fd)
1062+func put (dQ,gS) = if ((0 > dQ))
1063+ then throw("Invalid slippageTolerance passed")
1064+ else {
1065+ let fk = fh(fd, dQ, true)
1066+ let es = fk._2
1067+ let dx = fk._7
1068+ let dO = fk._9
1069+ let et = fk._10
1070+ let eu = fk._11
1071+ let gT = fk._12
1072+ let gU = fk._13
1073+ let fi = toBigInt(value(fd.payments[0]).amount)
1074+ let fj = toBigInt(value(fd.payments[1]).amount)
1075+ let eJ = eC(fi, fj, toBigInt(0))
1076+ if ((eJ == eJ))
1077+ then {
1078+ let fn = invoke(bd, "emit", [es], nil)
1079+ if ((fn == fn))
1080+ then {
1081+ let fo = {
1082+ let aQ = fn
1083+ if ($isInstanceOf(aQ, "Address"))
1084+ then {
1085+ let fp = aQ
1086+ invoke(fp, "emit", [es], nil)
1087+ }
1088+ else unit
1089+ }
1090+ if ((fo == fo))
1091+ then {
1092+ let gV = if ((et > 0))
1093+ then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
1094+ else nil
1095+ if ((gV == gV))
1096+ then {
1097+ let gW = if ((eu > 0))
1098+ then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
1099+ else nil
1100+ if ((gW == gW))
1101+ then {
1102+ let gX = if (gS)
1103+ then {
1104+ let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1105+ if ((gY == gY))
1106+ then nil
1107+ else throw("Strict value is not equal to itself.")
1108+ }
1109+ else [ScriptTransfer(fd.caller, es, dx)]
1110+ let gZ = eK(0, 0, 0)
1111+ if ((gZ == gZ))
1112+ then {
1113+ let eB = gZ._2
1114+ let gP = gZ._1
1115+ let ha = eP(eJ, eB)
1116+ if ((ha == ha))
1117+ then {
1118+ let hb = invoke(this, "rebalance", nil, nil)
1119+ if ((hb == hb))
1120+ then ((dO ++ gX) ++ gP)
1121+ else throw("Strict value is not equal to itself.")
1122+ }
1123+ else throw("Strict value is not equal to itself.")
1124+ }
1125+ else throw("Strict value is not equal to itself.")
1126+ }
1127+ else throw("Strict value is not equal to itself.")
1128+ }
1129+ else throw("Strict value is not equal to itself.")
1130+ }
1131+ else throw("Strict value is not equal to itself.")
1132+ }
1133+ else throw("Strict value is not equal to itself.")
1134+ }
1135+ else throw("Strict value is not equal to itself.")
1136+ }
1137+
1138+
1139+
1140+@Callable(fd)
1141+func putForFree (hc) = if ((0 > hc))
1142+ then throw("Invalid value passed")
1143+ else {
1144+ let fk = fh(fd, hc, false)
1145+ let dO = fk._9
1146+ let fi = toBigInt(value(fd.payments[0]).amount)
1147+ let fj = toBigInt(value(fd.payments[1]).amount)
1148+ let eJ = eC(fi, fj, toBigInt(0))
1149+ if ((eJ == eJ))
1150+ then {
1151+ let hd = eK(0, 0, 0)
1152+ let gP = hd._1
1153+ let eB = hd._2
1154+ let ha = eP(eJ, eB)
1155+ if ((ha == ha))
1156+ then (dO ++ gP)
1157+ else throw("Strict value is not equal to itself.")
1158+ }
1159+ else throw("Strict value is not equal to itself.")
1160+ }
1161+
1162+
1163+
1164+@Callable(fd)
1165+func putOneTkn (he,hf) = {
1166+ let hg = {
1167+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1168+ if ($isInstanceOf(bg, "Boolean"))
1169+ then bg
1170+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
1171+ }
1172+ let fl = if (!(bj(fd.caller)))
1173+ then if (if (if (bk())
1174+ then true
1175+ else (bx == l))
1176+ then true
1177+ else (bx == n))
1178+ then true
1179+ else hg
1180+ else false
1181+ let fZ = [if (if (!(fl))
1182+ then true
1183+ else gt(fd))
1184+ then true
1185+ else ba("put operation is blocked by admin"), if ((size(fd.payments) == 1))
1186+ then true
1187+ else ba("exactly 1 payment are expected")]
1188+ if ((fZ == fZ))
1189+ then {
1190+ let hh = fd.payments[0]
1191+ let fu = hh.assetId
1192+ let ft = hh.amount
1193+ let eJ = if ((fu == bz))
1194+ then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
1195+ else if ((fu == bA))
1196+ then eC(toBigInt(0), toBigInt(ft), toBigInt(0))
1197+ else ba("payment asset is not supported")
1198+ if ((eJ == eJ))
1199+ then {
1200+ let ab = fd.caller
1201+ let ac = fd.transactionId
1202+ let hi = fs(ft, fu, ab, ac)
1203+ if ((hi == hi))
1204+ then {
1205+ let fy = hi._5
1206+ let hj = hi._4
1207+ let fr = hi._3
1208+ let ev = hi._2
1209+ let hk = hi._1
1210+ let hl = if (if ((he > 0))
1211+ then (he > hk)
1212+ else false)
1213+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1214+ else hk
1215+ let fn = fm(hl)
1216+ if ((fn == fn))
1217+ then {
1218+ let gX = if (hf)
1219+ then {
1220+ let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
1221+ if ((hm == hm))
1222+ then nil
1223+ else throw("Strict value is not equal to itself.")
1224+ }
1225+ else [ScriptTransfer(fd.caller, hl, by)]
1226+ let hn = if ((fr > 0))
1227+ then [ScriptTransfer(be, fr, fu)]
1228+ else nil
1229+ let ho = if ((this == be))
1230+ then $Tuple2(0, 0)
1231+ else if (fy)
1232+ then $Tuple2(-(fr), 0)
1233+ else $Tuple2(0, -(fr))
1234+ let eL = ho._1
1235+ let eM = ho._2
1236+ let hp = eK(eL, eM, 0)
1237+ let gP = hp._1
1238+ let eB = hp._2
1239+ let eW = value(getString(aj))
1240+ let ha = eP(eJ, eB)
1241+ if ((ha == ha))
1242+ then {
1243+ let hb = invoke(this, "rebalance", nil, nil)
1244+ if ((hb == hb))
1245+ then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
1246+ else throw("Strict value is not equal to itself.")
1247+ }
1248+ else throw("Strict value is not equal to itself.")
1249+ }
1250+ else throw("Strict value is not equal to itself.")
1251+ }
1252+ else throw("Strict value is not equal to itself.")
1253+ }
1254+ else throw("Strict value is not equal to itself.")
1255+ }
1256+ else throw("Strict value is not equal to itself.")
1257+ }
1258+
1259+
1260+
1261+@Callable(fd)
1262+func putOneTknREADONLY (fu,ft) = {
1263+ let hq = fs(ft, bp(fu), unit, unit)
1264+ let hk = hq._1
1265+ let ev = hq._2
1266+ let fr = hq._3
1267+ let hj = hq._4
1268+ let fy = hq._5
1269+ $Tuple2(nil, $Tuple3(hk, fr, hj))
1270+ }
1271+
1272+
1273+
1274+@Callable(fd)
1275+func getOneTkn (hr,he) = {
1276+ let hg = {
1277+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1278+ if ($isInstanceOf(bg, "Boolean"))
1279+ then bg
1280+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
1281+ }
1282+ let fg = if (!(bj(fd.caller)))
1283+ then if (if (bk())
1284+ then true
1285+ else (bx == n))
1286+ then true
1287+ else hg
1288+ else false
1289+ let fZ = [if (if (!(fg))
1290+ then true
1291+ else gt(fd))
1292+ then true
1293+ else ba("get operation is blocked by admin"), if ((size(fd.payments) == 1))
1294+ then true
1295+ else ba("exactly 1 payment are expected")]
1296+ if ((fZ == fZ))
1297+ then {
1298+ let fY = bp(hr)
1299+ let hh = fd.payments[0]
1300+ let fu = hh.assetId
1301+ let fG = hh.amount
1302+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1303+ if ((eJ == eJ))
1304+ then {
1305+ let ab = fd.caller
1306+ let ac = fd.transactionId
1307+ let hs = fX(fY, fG, fu, ab, ac)
1308+ if ((hs == hs))
1309+ then {
1310+ let ga = hs._5
1311+ let hj = hs._4
1312+ let fr = hs._3
1313+ let ev = hs._2
1314+ let ht = hs._1
1315+ let ch = if (if ((he > 0))
1316+ then (he > ht)
1317+ else false)
1318+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1319+ else ht
1320+ let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1321+ if ((hu == hu))
1322+ then {
1323+ let gR = cR(hr, (ch + max([0, fr])))
1324+ let hv = [ScriptTransfer(ab, ch, fY)]
1325+ let hn = if ((fr > 0))
1326+ then [ScriptTransfer(be, fr, fY)]
1327+ else nil
1328+ let hw = {
1329+ let hx = if ((this == be))
1330+ then 0
1331+ else fr
1332+ if (ga)
1333+ then $Tuple2(-((ch + hx)), 0)
1334+ else $Tuple2(0, -((ch + hx)))
1335+ }
1336+ let eL = hw._1
1337+ let eM = hw._2
1338+ let hy = eK(eL, eM, 0)
1339+ let gP = hy._1
1340+ let eB = hy._2
1341+ let ha = eP(eJ, eB)
1342+ if ((ha == ha))
1343+ then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
1344+ else throw("Strict value is not equal to itself.")
1345+ }
1346+ else throw("Strict value is not equal to itself.")
1347+ }
1348+ else throw("Strict value is not equal to itself.")
1349+ }
1350+ else throw("Strict value is not equal to itself.")
1351+ }
1352+ else throw("Strict value is not equal to itself.")
1353+ }
1354+
1355+
1356+
1357+@Callable(fd)
1358+func getOneTknREADONLY (fY,fG) = {
1359+ let hz = fX(bp(fY), fG, by, unit, unit)
1360+ let ht = hz._1
1361+ let ev = hz._2
1362+ let fr = hz._3
1363+ let hj = hz._4
1364+ let ga = hz._5
1365+ $Tuple2(nil, $Tuple3(ht, fr, hj))
1366+ }
1367+
1368+
1369+
1370+@Callable(fd)
1371+func unstakeAndGetOneTkn (hA,hr,he) = {
1372+ let hg = {
1373+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1374+ if ($isInstanceOf(bg, "Boolean"))
1375+ then bg
1376+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
1377+ }
1378+ let fg = if (!(bj(fd.caller)))
1379+ then if (if (bk())
1380+ then true
1381+ else (bx == n))
1382+ then true
1383+ else hg
1384+ else false
1385+ let fZ = [if (if (!(fg))
1386+ then true
1387+ else gt(fd))
1388+ then true
1389+ else ba("get operation is blocked by admin"), if ((size(fd.payments) == 0))
1390+ then true
1391+ else ba("no payments are expected")]
1392+ if ((fZ == fZ))
1393+ then {
1394+ let fY = bp(hr)
1395+ let ab = fd.caller
1396+ let ac = fd.transactionId
1397+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1398+ if ((eJ == eJ))
1399+ then {
1400+ let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1401+ if ((hB == hB))
1402+ then {
1403+ let hC = fX(fY, hA, by, ab, ac)
1404+ if ((hC == hC))
1405+ then {
1406+ let ga = hC._5
1407+ let hj = hC._4
1408+ let fr = hC._3
1409+ let ev = hC._2
1410+ let ht = hC._1
1411+ let ch = if (if ((he > 0))
1412+ then (he > ht)
1413+ else false)
1414+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1415+ else ht
1416+ let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1417+ if ((hu == hu))
1418+ then {
1419+ let gR = cR(hr, (ch + max([0, fr])))
1420+ let hv = [ScriptTransfer(fd.caller, ch, fY)]
1421+ let hn = if ((fr > 0))
1422+ then [ScriptTransfer(be, fr, fY)]
1423+ else nil
1424+ let hD = {
1425+ let hx = if ((this == be))
1426+ then 0
1427+ else fr
1428+ if (ga)
1429+ then $Tuple2(-((ch + hx)), 0)
1430+ else $Tuple2(0, -((ch + hx)))
1431+ }
1432+ let eL = hD._1
1433+ let eM = hD._2
1434+ let hE = eK(eL, eM, 0)
1435+ let gP = hE._1
1436+ let eB = hE._2
1437+ let ha = eP(eJ, eB)
1438+ if ((ha == ha))
1439+ then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
1440+ else throw("Strict value is not equal to itself.")
1441+ }
1442+ else throw("Strict value is not equal to itself.")
1443+ }
1444+ else throw("Strict value is not equal to itself.")
1445+ }
1446+ else throw("Strict value is not equal to itself.")
1447+ }
1448+ else throw("Strict value is not equal to itself.")
1449+ }
1450+ else throw("Strict value is not equal to itself.")
1451+ }
1452+
1453+
1454+
1455+@Callable(fd)
1456+func get () = {
1457+ let eg = fc(fd)
1458+ let dM = eg._1
1459+ let dN = eg._2
1460+ let ff = eg._3
1461+ let dv = eg._4
1462+ let dO = eg._5
1463+ let gR = cW(dM, dN)
1464+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1465+ if ((eJ == eJ))
1466+ then {
1467+ let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1468+ if ((hF == hF))
1469+ then {
1470+ let hG = eK(-(dM), -(dN), 0)
1471+ let gP = hG._1
1472+ let eB = hG._2
1473+ let ha = eP(eJ, eB)
1474+ if ((ha == ha))
1475+ then ((gR ++ dO) ++ gP)
1476+ else throw("Strict value is not equal to itself.")
1477+ }
1478+ else throw("Strict value is not equal to itself.")
1479+ }
1480+ else throw("Strict value is not equal to itself.")
1481+ }
1482+
1483+
1484+
1485+@Callable(fd)
1486+func getNoLess (hH,hI) = {
1487+ let eg = fc(fd)
1488+ let dM = eg._1
1489+ let dN = eg._2
1490+ let ff = eg._3
1491+ let dv = eg._4
1492+ let dO = eg._5
1493+ if ((hH > dM))
1494+ then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
1495+ else if ((hI > dN))
1496+ then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
1497+ else {
1498+ let gR = cW(dM, dN)
1499+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1500+ if ((eJ == eJ))
1501+ then {
1502+ let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1503+ if ((hF == hF))
1504+ then {
1505+ let hJ = eK(-(dM), -(dN), 0)
1506+ let gP = hJ._1
1507+ let eB = hJ._2
1508+ let ha = eP(eJ, eB)
1509+ if ((ha == ha))
1510+ then ((gR ++ dO) ++ gP)
1511+ else throw("Strict value is not equal to itself.")
1512+ }
1513+ else throw("Strict value is not equal to itself.")
1514+ }
1515+ else throw("Strict value is not equal to itself.")
1516+ }
1517+ }
1518+
1519+
1520+
1521+@Callable(fd)
1522+func unstakeAndGet (ch) = {
1523+ let hK = if ((size(fd.payments) != 0))
1524+ then throw("No payments are expected")
1525+ else true
1526+ if ((hK == hK))
1527+ then {
1528+ let dk = bm()
1529+ let dx = fromBase58String(dk[q])
1530+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1531+ if ((eJ == eJ))
1532+ then {
1533+ let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1534+ if ((hB == hB))
1535+ then {
1536+ let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
1537+ let dM = eg._1
1538+ let dN = eg._2
1539+ let dA = parseIntValue(eg._9)
1540+ let dO = eg._10
1541+ let gR = cW(dM, dN)
1542+ let fg = if (!(bj(fd.caller)))
1543+ then if (bk())
1544+ then true
1545+ else (bx == n)
1546+ else false
1547+ let hL = if (fg)
1548+ then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
1549+ else true
1550+ if ((hL == hL))
1551+ then {
1552+ let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1553+ if ((hF == hF))
1554+ then {
1555+ let hM = eK(-(dM), -(dN), 0)
1556+ let gP = hM._1
1557+ let eB = hM._2
1558+ let ha = eP(eJ, eB)
1559+ if ((ha == ha))
1560+ then ((gR ++ dO) ++ gP)
1561+ else throw("Strict value is not equal to itself.")
1562+ }
1563+ else throw("Strict value is not equal to itself.")
1564+ }
1565+ else throw("Strict value is not equal to itself.")
1566+ }
1567+ else throw("Strict value is not equal to itself.")
1568+ }
1569+ else throw("Strict value is not equal to itself.")
1570+ }
1571+ else throw("Strict value is not equal to itself.")
1572+ }
1573+
1574+
1575+
1576+@Callable(fd)
1577+func unstakeAndGetNoLess (hA,hN,hI) = {
1578+ let fg = if (!(bj(fd.caller)))
1579+ then if (bk())
1580+ then true
1581+ else (bx == n)
1582+ else false
1583+ let fZ = [if (!(fg))
1584+ then true
1585+ else throw("get operation is blocked by admin"), if ((size(fd.payments) == 0))
1586+ then true
1587+ else throw("no payments are expected")]
1588+ if ((fZ == fZ))
1589+ then {
1590+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1591+ if ((eJ == eJ))
1592+ then {
1593+ let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1594+ if ((hB == hB))
1595+ then {
1596+ let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
1597+ let dM = eg._1
1598+ let dN = eg._2
1599+ let dO = eg._10
1600+ let gR = cW(dM, dN)
1601+ let hO = [if ((dM >= hN))
1602+ then true
1603+ else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
1604+ then true
1605+ else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1606+ if ((hO == hO))
1607+ then {
1608+ let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1609+ if ((hF == hF))
1610+ then {
1611+ let hP = eK(-(dM), -(dN), 0)
1612+ let gP = hP._1
1613+ let eB = hP._2
1614+ let ha = eP(eJ, eB)
1615+ if ((ha == ha))
1616+ then ((gR ++ dO) ++ gP)
1617+ else throw("Strict value is not equal to itself.")
1618+ }
1619+ else throw("Strict value is not equal to itself.")
1620+ }
1621+ else throw("Strict value is not equal to itself.")
1622+ }
1623+ else throw("Strict value is not equal to itself.")
1624+ }
1625+ else throw("Strict value is not equal to itself.")
1626+ }
1627+ else throw("Strict value is not equal to itself.")
1628+ }
1629+
1630+
1631+
1632+@Callable(fd)
1633+func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
1634+ then throw("permissions denied")
1635+ else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
1636+
1637+
1638+
1639+@Callable(fd)
1640+func refreshKLp () = {
1641+ let hS = valueOrElse(getInteger(ak), 0)
1642+ let hT = if (((height - hS) >= an))
1643+ then unit
1644+ else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1645+ if ((hT == hT))
1646+ then {
1647+ let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1648+ let hU = eK(0, 0, 0)
1649+ let hV = hU._1
1650+ let eB = hU._2
1651+ let eN = if ((eW != eB))
1652+ then hV
1653+ else ba("nothing to refresh")
1654+ $Tuple2(eN, toString(eB))
1655+ }
1656+ else throw("Strict value is not equal to itself.")
1657+ }
1658+
1659+
1660+
1661+@Callable(fd)
1662+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bm())
1663+
1664+
1665+
1666+@Callable(fd)
1667+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bV(ap))
1668+
1669+
1670+
1671+@Callable(fd)
1672+func calcPricesWrapperREADONLY (de,df,dj) = {
1673+ let ds = di(de, df, dj)
1674+ $Tuple2(nil, [toString(ds[0]), toString(ds[1]), toString(ds[2])])
1675+ }
1676+
1677+
1678+
1679+@Callable(fd)
1680+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1681+
1682+
1683+
1684+@Callable(fd)
1685+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1686+
1687+
1688+
1689+@Callable(fd)
1690+func calcPriceBigIntWrapperREADONLY (bZ,ca) = $Tuple2(nil, toString(bY(parseBigIntValue(bZ), parseBigIntValue(ca))))
1691+
1692+
1693+
1694+@Callable(fd)
1695+func estimatePutOperationWrapperREADONLY (du,dQ,dR,dS,dT,dU,ab,dV,dW) = $Tuple2(nil, dP(du, dQ, dR, dS, dT, dU, ab, dV, dW))
1696+
1697+
1698+
1699+@Callable(fd)
1700+func estimateGetOperationWrapperREADONLY (du,dv,dw,ab) = {
1701+ let eg = dt(du, dv, dw, addressFromStringValue(ab))
1702+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
1703+ }
1704+
1705+
1706+
1707+@Callable(fd)
1708+func statsREADONLY () = {
1709+ let dk = bm()
1710+ let dx = fromBase58String(dk[q])
1711+ let hW = dk[r]
1712+ let hX = dk[s]
1713+ let dZ = dk[v]
1714+ let ea = dk[w]
1715+ let dl = parseIntValue(dk[t])
1716+ let dm = parseIntValue(dk[u])
1717+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1718+ let hZ = bV(hW)
1719+ let ia = bV(hX)
1720+ let ib = if ((hY == 0))
1721+ then [e, e, e]
1722+ else di(hZ, ia, hY)
1723+ let dH = 0
1724+ let ic = H(ib[1], b)
1725+ let id = H(ib[2], b)
1726+ let ie = value(getInteger(bd, aD(toString(this))))
1727+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dH), toString(ic), toString(id), toString(ie)], j))
1728+ }
1729+
1730+
1731+
1732+@Callable(fd)
1733+func evaluatePutByAmountAssetREADONLY (dR) = {
1734+ let dk = bm()
1735+ let dx = fromBase58String(dk[q])
1736+ let dX = dk[r]
1737+ let dy = fromBase58String(dX)
1738+ let dY = dk[s]
1739+ let dz = fromBase58String(dY)
1740+ let dl = parseIntValue(dk[t])
1741+ let dm = parseIntValue(dk[u])
1742+ let dA = dk[p]
1743+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1744+ let hZ = bV(dX)
1745+ let ia = bV(dY)
1746+ let dg = D(hZ, dl)
1747+ let dh = D(ia, dm)
1748+ let dG = if ((hY == 0))
1749+ then e
1750+ else bY(dh, dg)
1751+ let ed = D(dR, dl)
1752+ let ee = fraction(ed, dG, d)
1753+ let dT = H(ee, dm)
1754+ let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
1755+ let eo = fk._1
1756+ let if = fk._3
1757+ let dC = fk._4
1758+ let dE = fk._5
1759+ let dB = fk._6
1760+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
1761+ }
1762+
1763+
1764+
1765+@Callable(fd)
1766+func evaluatePutByPriceAssetREADONLY (dT) = {
1767+ let dk = bm()
1768+ let dx = fromBase58String(dk[q])
1769+ let dX = dk[r]
1770+ let dy = fromBase58String(dX)
1771+ let dY = dk[s]
1772+ let dz = fromBase58String(dY)
1773+ let dl = parseIntValue(dk[t])
1774+ let dm = parseIntValue(dk[u])
1775+ let dA = dk[p]
1776+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1777+ let ig = bV(dX)
1778+ let ih = bV(dY)
1779+ let ii = D(ig, dl)
1780+ let ij = D(ih, dm)
1781+ let dG = if ((hY == 0))
1782+ then e
1783+ else bY(ij, ii)
1784+ let ee = D(dT, dm)
1785+ let ed = fraction(ee, d, dG)
1786+ let dR = H(ed, dl)
1787+ let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
1788+ let eo = fk._1
1789+ let if = fk._3
1790+ let dC = fk._4
1791+ let dE = fk._5
1792+ let dB = fk._6
1793+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
1794+ }
1795+
1796+
1797+
1798+@Callable(fd)
1799+func evaluateGetREADONLY (ik,il) = {
1800+ let eg = dt("", ik, il, this)
1801+ let dM = eg._1
1802+ let dN = eg._2
1803+ let dC = eg._5
1804+ let dE = eg._6
1805+ let dB = eg._7
1806+ let dH = eg._8
1807+ let dA = parseIntValue(eg._9)
1808+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dM), toString(dN), toString(dC), toString(dE), toString(dB), toString(dH), toString(dA)], j))
1809+ }
1810+
1811+
1812+@Verifier(im)
1813+func in () = {
1814+ let io = {
1815+ let aQ = gr()
1816+ if ($isInstanceOf(aQ, "ByteVector"))
1817+ then {
1818+ let gu = aQ
1819+ gu
1820+ }
1821+ else if ($isInstanceOf(aQ, "Unit"))
1822+ then im.senderPublicKey
1823+ else throw("Match error")
1824+ }
1825+ let aQ = im
1826+ if ($isInstanceOf(aQ, "Order"))
1827+ then {
1828+ let eS = aQ
1829+ let ip = bl()
1830+ let iq = if (eO())
1831+ then $Tuple2(true, "")
1832+ else eR(eS)
1833+ let aK = iq._1
1834+ let aL = iq._2
1835+ let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
1836+ let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
1837+ if (if (if (aK)
1838+ then aM
1839+ else false)
1840+ then aN
1841+ else false)
1842+ then true
1843+ else aJ(aK, aL, aM, aN)
1844+ }
1845+ else if ($isInstanceOf(aQ, "SetScriptTransaction"))
1846+ then {
1847+ let aV = aQ
1848+ if (sigVerify(im.bodyBytes, im.proofs[0], io))
1849+ then true
1850+ else {
1851+ let ir = blake2b256(value(aV.script))
1852+ let is = fromBase64String(value(getString(bd, aF())))
1853+ let it = scriptHash(this)
1854+ if ((is == ir))
1855+ then (it != ir)
1856+ else false
1857+ }
1858+ }
1859+ else sigVerify(im.bodyBytes, im.proofs[0], io)
1860+ }
1861+

github/deemru/w8io/873ac7e 
78.16 ms