tx · 7cXjW8Xp949t35GG7RN1PP5RDk4oNY7iaDixnCzcGoNY

3N3LtGiBDqDjfHpd7WnTCTKXB3gPWqUrDLL:  -0.03800000 Waves

2023.02.13 10:12 [2447515] smart account 3N3LtGiBDqDjfHpd7WnTCTKXB3gPWqUrDLL > SELF 0.00000000 Waves

{ "type": 13, "id": "7cXjW8Xp949t35GG7RN1PP5RDk4oNY7iaDixnCzcGoNY", "fee": 3800000, "feeAssetId": null, "timestamp": 1676272321544, "version": 2, "chainId": 84, "sender": "3N3LtGiBDqDjfHpd7WnTCTKXB3gPWqUrDLL", "senderPublicKey": "3wnnbmrpP3X4LxULFVHTeu7zNZBzFV7NSxRokwryVFaJ", "proofs": [ "6YyduRY5FCiwCk8ZDCAcUpD2HUf4et7DsfxwxVu59uuS569wF9BVJmUdTbqTjBCmeejFj4vFjbwxJX9e8kJXPch" ], "script": "base64:BgLRLwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIAEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgl0aW1lc3RhbXAiA3BhdSILdXNlckFkZHJlc3MiBHR4SWQiA2dhdSICYWEiAnBhIgZrZXlGZWUiCmZlZURlZmF1bHQiA2ZlZSIGa2V5S0xwIhVrZXlLTHBSZWZyZXNoZWRIZWlnaHQiEmtleUtMcFJlZnJlc2hEZWxheSIWa0xwUmVmcmVzaERlbGF5RGVmYXVsdCIPa0xwUmVmcmVzaERlbGF5IhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg0Njk4NjM1Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiEGFtb3VudEJhbGFuY2VYMTgiD3ByaWNlQmFsYW5jZVgxOCIKdXBkYXRlZEtMcCIOY2FsY0N1cnJlbnRLTHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgZvbGRLTHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMTU0MTIxNzUzIgNrTHAiDSR0MDIyMTkzMjIyOTMiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyNTQwNjI1Njk5IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDI1NzAzMjU4NTIiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAyNTk4NDI2MDQ4Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNzcyOTI3ODk2IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyOTk3NDMwMDMwIgt0b3RhbEFtb3VudCINJHQwMzAwMzQzMDI2MCILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIg1jbGVhbkFtb3VudEluIglpc1JldmVyc2UiDSR0MDMxOTU1MzIyNjAiCGFzc2V0T3V0Igdhc3NldEluIhJwb29sQXNzZXRJbkJhbGFuY2UiE3Bvb2xBc3NldE91dEJhbGFuY2UiCWFtb3VudE91dCIEb2xkSyIEbmV3SyIGY2hlY2tLIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiCGNoZWNrTWluIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwMzcwNjkzNzUzMSIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgttYXhTbGlwcGFnZSINJHQwMzgwOTMzODE1OCIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzOTM0NjM5NDk4IgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDQwMDg0NDAyODEiDSR0MDQwMjg0NDAzOTIiDSR0MDQwNjk4NDA4NTUiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDQxNzQwNDE4OTMiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNDIzOTM0MjY0MCIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNDI2NDM0Mjc1MSINJHQwNDMwMDg0MzE2NCINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNDQwNjk0NDIyMCINJHQwNDQ3MTU0NDk2MiINJHQwNDQ5NjU0NTA3MyIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDYwMTk0NjEwMSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNDcwNTA0NzEzMSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA0ODI1NzQ4MzM4IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNDk2MzM0OTcxNCILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDUwOTAxNTA5NjUiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTYyNzU5Njk2IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hzAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEB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pQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFTCgACYVIJAPwHBAUCYU8CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICA0ludAUCYVIJAAIBCQCsAgIJAAMBBQJhUgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhVAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU8JAQJheAAHAQJhVQAJANkEAQkBAmFIAgUCYU8JAQJhcAABAmFWAAQCYVcJAQJhSAIFBHRoaXMJAQJhZQAEAmFYCQECYUgCBQR0aGlzCQECYWYABAJhdQkBAmFLAgUCYU8JAQJhdgEFAmFYBAJhdAkBAmFLAgUCYU8JAQJhdgEFAmFXCQC1CQIJAQJhSAIFAmFPCQECYXMCCQCkAwEFAmF0CQCkAwEFAmF1BQFqAQJhWQECYVoDCQAAAgUCYVoFAWkFBHVuaXQJANkEAQUCYVoBAmJhAQJhWgMJAAACBQJhWgUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhWgECYmIBAmJjCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmMFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBcAkA2QQBCQCRAwIFAmJjBQFxCQECYVkBCQCRAwIFAmJjBQFyCQECYVkBCQCRAwIFAmJjBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdQACYmQJAQJiYgEJAQJhVgAAAmJlBQJiZAACYmYIBQJiZQJfMQACYmcIBQJiZQJfMgACYmgIBQJiZQJfMwACYmkIBQJiZQJfNAACYmoIBQJiZQJfNQACYmsIBQJiZQJfNgACYmwIBQJiZQJfNwECYm0ACQC1CQIJAQJhSAIFAmFPCQECYW8ABQFqAAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJtAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJibQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJwCgJicQJicgJicwJidAJidQJidgJidwJieAJieQJiegkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoFA25pbAUBagECYkEGAmJCAmJDAmJEAmJ0AmJ3AmJ4CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4BQNuaWwFAWoBAmJFAQJiRgMJAAACBQJiRgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkYBAmJHAgJiSAJiSQkAvAIDBQJiSAUBZAUCYkkBAmJKAwJiSAJiSQFMCQC9AgQFAmJIBQFkBQJiSQUBTAECYksEAmJMAmJNAmJOAmJPBAJiUAkBAUQCBQJiTgUCYkwEAmJRCQEBRAIFAmJPBQJiTQkBAmJHAgUCYlEFAmJQAQJiUgMCYk4CYk8CYlMEAmJUCQECYVYABAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJiVwkBAmJLBAUCYlUFAmJWBQJiTgUCYk8EAmJJCQEBRAIFAmJOBQJiVQQCYkgJAQFEAgUCYk8FAmJWBAJiWAkBAUQCBQJiUwUBYgQCYlkJAQJiRwIFAmJJBQJiWAQCYloJAQJiRwIFAmJIBQJiWAkAzAgCBQJiVwkAzAgCBQJiWQkAzAgCBQJiWgUDbmlsAQJjYQMCYk4CYk8CYlMEAmNiCQECYlIDBQJiTgUCYk8FAmJTCQDMCAIJAQFIAgkAkQMCBQJjYgAABQFiCQDMCAIJAQFIAgkAkQMCBQJjYgABBQFiCQDMCAIJAQFIAgkAkQMCBQJjYgACBQFiBQNuaWwBAmNjBAJjZAJjZQJjZgJhYgQCYlQJAQJhVgAEAmNnCQCRAwIFAmJUBQFxBAJjaAkAkQMCBQJiVAUBcgQCY2kJAJEDAgUCYlQFAXMEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZwUCY2UJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNsCQECYkUBBQJjaAQCY20JAQFEAgUCY2wFAmJMBAJjbgkBAmJFAQUCY2kEAmNvCQEBRAIFAmNuBQJiTQQCY3AJAQJiRwIFAmNvBQJjbQQCY3EJAQFIAgUCY3AFAWIEAmNyCQEBRAIFAmNmBQFiBAJjcwkBAUQCBQJjawUBYgQCY3QJALwCAwUCY20FAmNyBQJjcwQCY3UJALwCAwUCY28FAmNyBQJjcwQCY3YJAQFLAwUCY3QFAmJMBQVGTE9PUgQCY3cJAQFLAwUCY3UFAmJNBQVGTE9PUgQCY3gDCQAAAgUCY2QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJjdgMJAAACBQJjaAIFV0FWRVMFBHVuaXQJANkEAQUCY2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmN3AwkAAAIFAmNpAgVXQVZFUwUEdW5pdAkA2QQBBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJjZAkBAmJBBgUCY3YFAmN3BQJjZgUCY3EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY3EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3EFA25pbAkAnAoKBQJjdgUCY3cFAmNoBQJjaQUCY2wFAmNuBQJjawUCY3AFAmNqBQJjeAECY3kJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGBAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCY0cJAJEDAgUCYlQFAXIEAmNICQCRAwIFAmJUBQFzBAJjSQkAkQMCBQJiVAUBdgQCY0oJAJEDAgUCYlQFAXcEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZwkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNLCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNCCQDZBAECBVdBVkVTBAJjTAkA2AQBCQELdmFsdWVPckVsc2UCBQJjRAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjRwUCY0sGCQECIT0CBQJjSAUCY0wJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjbAMFAmNFCQECYkUBBQJjRwkAZQIJAQJiRQEFAmNHBQJjQQQCY24DBQJjRQkBAmJFAQUCY0gJAGUCCQECYkUBBQJjSAUCY0MEAmNNCQEBRAIFAmNBBQJiVQQCY04JAQFEAgUCY0MFAmJWBAJjTwkBAmJHAgUCY04FAmNNBAJjbQkBAUQCBQJjbAUCYlUEAmNvCQEBRAIFAmNuBQJiVgQCY1ADCQAAAgUCY2sAAAQCY3AFAWUEAmNRBQFlBAJiWAkAdgYJALkCAgUCY00FAmNOAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJYBQFiCQEBSAIFAmNNBQJiVQkBAUgCBQJjTgUCYlYJAQJiRwIJALcCAgUCY28FAmNOCQC3AgIFAmNtBQJjTQUCY1EEAmNwCQECYkcCBQJjbwUCY20EAmNRCQC8AgMJAQFSAQkAuAICBQJjcAUCY08FAWQFAmNwBAJjUgkBAUQCBQJjegUBYgMDCQECIT0CBQJjcAUBZQkAvwICBQJjUQUCY1IHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNRAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY1IEAmNzCQEBRAIFAmNrBQFiBAJjUwkAvQIEBQJjTQkBAmJKAwUCY28FAmNtBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjVAkAvQIEBQJjTgUBZAkBAmJKAwUCY28FAmNtBQVGTE9PUgUHQ0VJTElORwQCY1UDCQC/AgIFAmNTBQJjTgkAlAoCBQJjVAUCY04JAJQKAgUCY00FAmNTBAJjVggFAmNVAl8xBAJjVwgFAmNVAl8yBAJiWAkAvQIEBQJjcwUCY1cFAmNvBQVGTE9PUgkAlwoFCQEBSwMFAmJYBQFiBQVGTE9PUgkBAUsDBQJjVgUCYlUFB0NFSUxJTkcJAQFLAwUCY1cFAmJWBQdDRUlMSU5HBQJjcAUCY1EEAmNYCAUCY1ACXzEEAmNZCAUCY1ACXzIEAmNaCAUCY1ACXzMEAmNxCQEBSAIIBQJjUAJfNAUBYgQCZGEJAQFIAggFAmNQAl81BQFiAwkAZwIAAAUCY1gJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmRiAwkBASEBBQJjRgAABQJjWAQCZGMJAGUCBQJjQQUCY1kEAmRkCQBlAgUCY0MFAmNaBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCY2QJAQJicAoFAmNZBQJjWgUCZGIFAmNxBQJjegUCZGEFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRjBQJkZAUDbmlsCQCfCg0FAmNYBQJkYgUCY3EFAmNsBQJjbgUCY2sFAmNnBQJjagUCZGUFAmRjBQJkZAUCY0IFAmNEAQJkZgMCZGcCZGgCY2sEAmRpCQEBRwIFAmRnCQC2AgEFAmJrBAJkagkBAUcCBQJkaAkAtgIBBQJibAQCZGsJALwCAwkAdgYJALkCAgUCZGkFAmRqAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2sDCQAAAgUCY2sFAWYFAWYFAmRrAQJkbAMCZG0CZG4CZG8EAmRwCQC4AgIJALYCAQkBAmJFAQkBAmJhAQUCYmkFAmRtBAJkcQkAuAICCQC2AgEJAQJiRQEJAQJiYQEFAmJqBQJkbgQCZHIJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZG8EAmRzCQECZGYDBQJkcAUCZHEFAmRyBQJkcwECZHQDAmR1AmR2AmRvBAJkcAkAZAIJAQJiRQEJAQJiYQEFAmJpBQJkdQQCZHEJAGQCCQECYkUBCQECYmEBBQJiagUCZHYEAmRyCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkFAmRvBAJkawkBAmRmAwkAtgIBBQJkcAkAtgIBBQJkcQkAtgIBBQJkcgQCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZGsFA25pbAkAlAoCBQJkdwUCZGsBAmR4AgJkeQJkawMJAMACAgUCZGsFAmR5BgkBAmFMAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkeQkAzAgCCQCmAwEFAmRrBQNuaWwCASABAmR6AQJkQQQCZHAJAQJiRQEJAQJiYQEFAmJpBAJkcQkBAmJFAQkBAmJhAQUCYmoEAmRCCAUCZEEGYW1vdW50BAJkQwkAbgQIBQJkQQZhbW91bnQIBQJkQQVwcmljZQUBYgUFRkxPT1IEAmREAwkAAAIIBQJkQQlvcmRlclR5cGUFA0J1eQkAlAoCBQJkQgkBAS0BBQJkQwkAlAoCCQEBLQEFAmRCBQJkQwQCZHUIBQJkRAJfMQQCZHYIBQJkRAJfMgMDAwkBAmFUAAYJAAACBQJiZwUBbQYJAAACBQJiZwUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkQQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJkQQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhTgECC2ludmFsaWQga0xwBAJkRgkBAmR0AwUCZHUFAmR2AAAEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCQDAAgIFAmRIBQJkRQQCZEoJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZEUJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJkSAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmRwCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJkcQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHUJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHYJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmRJBQJkSgECZEsBAmRMAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCY2UJAQV2YWx1ZQEIBQJkTQdhc3NldElkBAJkTggFAmRNBmFtb3VudAQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCY2UFAmROCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkEAmN4CAUCY1ADXzEwAwMJAQJhVAAGCQAAAgUCY2oFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqCQCXCgUFAmN2BQJjdwUCZE4FAmNlBQJjeAECZE8DAmRMAmN6AmNGAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRQCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABAJkUQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQQCZFIJAQJjeQkJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQFAmN6CAUCZFAGYW1vdW50CAUCZFAHYXNzZXRJZAgFAmRRBmFtb3VudAgFAmRRB2Fzc2V0SWQJAKUIAQgFAmRMBmNhbGxlcgcFAmNGBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCZFICXzgDAwMJAQJhVAAGCQAAAgUCY2oFAWwGCQAAAgUCY2oFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqBQJkUgECZFMBAmRUBAJkVQkA/AcEBQJhTwIEZW1pdAkAzAgCBQJkVAUDbmlsBQNuaWwDCQAAAgUCZFUFAmRVBAJkVgQCZFcFAmRVAwkAAQIFAmRXAgdBZGRyZXNzBAJkWAUCZFcJAPwHBAUCZFgCBGVtaXQJAMwIAgUCZFQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRWBQJkVgUCZFQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRZAgJkVAJhaQQCZFoDCQAAAgUCYWkAAAAACQBrAwUCZFQFAmFpBQFiCQCUCgIJAGUCBQJkVAUCZFoFAmRaAQJlYQQCZWICZWMCYWICYWMEAmVkCQAAAgUCYWMFBHVuaXQEAmVlCQECYkUBCQECYmEBBQJiaQQCZWYJAQJiRQEJAQJiYQEFAmJqBAJlZwMJAAACBQJlYwUCYmkGAwkAAAIFAmVjBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVoAwUCZWQJAJQKAgUCZWUFAmVmAwUCZWcJAJQKAgkAZQIFAmVlBQJlYgUCZWYJAJQKAgUCZWUJAGUCBQJlZgUCZWIEAmVpCAUCZWgCXzEEAmVqCAUCZWgCXzIEAmVrAwUCZWcJAJQKAgUCZWIAAAkAlAoCAAAFAmViBAJlbAgFAmVrAl8xBAJlbQgFAmVrAl8yBAJkQggJAQJkWQIFAmVsBQJhUQJfMQQCZEMICQECZFkCBQJlbQUCYVECXzEEAmVuCQECZFkCBQJlYgUCYVEEAmVvCAUCZW4CXzEEAmRaCAUCZW4CXzIEAmVwCQBkAgUCZWkFAmRCBAJlcQkAZAIFAmVqBQJkQwQCZXIJAQJiRwIJAQFEAgUCZXEFAmJsCQEBRAIFAmVwBQJiawQCZXMJAQFIAgUCZXIFAWIEAmV0AwUCZWcFAmVpBQJlagQCZXUJALYCAQUCZXQEAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJldwMJAL8CAgUCZXYFAWYGCQECYUwBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmV3BQJldwQCZXgJALYCAQUCZW8EAmV5CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV2CQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZXgFAWQFAmV1ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJkZQMFAmVkBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJwCgUCZWwFAmVtBQJleQUCZXMAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlegkBAmJHAgkBAUQCBQJlagUCYmwJAQFEAgUCZWkFAmJrBAJlQQkBAUgCBQJlegUBYgQCZUIEAmVDAwUCZWcJAJQKAgUCZWwFAmVpCQCUCgIFAmVtBQJlagQCZFQIBQJlQwJfMQQCZUQIBQJlQwJfMgQCZUUJAKADAQkAvAIDBQJldgkAtgIBCQBpAgUCZFQAAgkAtgIBBQJlRAkAawMJAGUCBQJleQUCZUUFAWIFAmVFCQCXCgUFAmV5BQJkZQUCZFoFAmVCBQJlZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUYFAmVHAmVvAmVjAmFiAmFjBAJlZAkAAAIFAmFjBQR1bml0BAJiVAkBAmFWAAQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZUgJAMwIAgMJAAACBQJlYwUCYmgGCQECYUwBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZUgFAmVIBAJlSQMJAAACBQJlRwUCYmkGAwkAAAIFAmVHBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVKAwUCZUkJALYCAQkBAmJFAQkBAmJhAQUCYmkJALYCAQkBAmJFAQkBAmJhAQUCYmoEAmVLAwUCZUkFAmJVBQJiVgQCZUwJAQJiRQEJAQJiYQEFAmJpBAJlTQkBAmJFAQkBAmJhAQUCYmoEAmVOAwUCZUkFAmVMBQJlTQQCZU8JALYCAQUCZU4EAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlUAkAtgIBBQJlbwQCZVEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZUoJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVQBQFkBQJldgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlUgkBAmRZAgUCZVEFAmFTBAJlUwgFAmVSAl8xBAJkWggFAmVSAl8yBAJlVAMFAmVJCQCWCgQFAmVTAAAJAGUCBQJlTAUCZVEFAmVNCQCWCgQAAAUCZVMFAmVMCQBlAgUCZU0FAmVRBAJlVQgFAmVUAl8xBAJlVggFAmVUAl8yBAJlVwgFAmVUAl8zBAJlWAgFAmVUAl80BAJlcgkBAmJHAgkBAUQCBQJlWAUCYmwJAQFEAgUCZVcFAmJrBAJlcwkBAUgCBQJlcgUBYgQCZGUDBQJlZAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiQQYFAmVVBQJlVgUCZW8FAmVzBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVzBQNuaWwEAmV6CQECYkcCCQEBRAIFAmVNBQJibAkBAUQCBQJlTAUCYmsEAmVBCQEBSAIFAmV6BQFiBAJlQgQCZVkJAGgCCQCgAwEJALwCAwUCZUoFAmVQBQJldgACCQBrAwkAZQIFAmVTBQJlWQUBYgUCZVkJAJcKBQUCZVMFAmRlBQJkWgUCZUIFAmVJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlWgAEAmRXCQCiCAEJAQFVAAMJAAECBQJkVwIGU3RyaW5nBAJmYQUCZFcJANkEAQUCZmEDCQABAgUCZFcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmIABAJkVwkAoggBCQEBVgADCQABAgUCZFcCBlN0cmluZwQCZmEFAmRXCQDZBAEFAmZhAwkAAQIFAmRXAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZjAQJkTAQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwkAAAIIBQJkTA9jYWxsZXJQdWJsaWNLZXkFAmZkAwkAAQIFAmRXAgRVbml0CQAAAggFAmRMBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJmZQECZEwEAmZmCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRXCQECZVoAAwkAAQIFAmRXAgpCeXRlVmVjdG9yBAJmZAUCZFcDCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQUCZmQGBQJmZgMJAAECBQJkVwIEVW5pdAMJAAACCAUCZEwGY2FsbGVyBQR0aGlzBgUCZmYJAAIBAgtNYXRjaCBlcnJvch0CZEwBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQICZmcCZmgEAmZpAwkAAAIFAmZoBwQCZmoJAQJhSAIFBHRoaXMJAQJhZgAEAmZrCQECYUgCBQR0aGlzCQECYWUACQCUCgIFAmZqBQJmawQCZmoJAQJhSAIFBHRoaXMJAQJhZQAEAmZrCQECYUgCBQR0aGlzCQECYWYACQCUCgIFAmZqBQJmawQCZmoIBQJmaQJfMQQCZmsIBQJmaQJfMgQCZmwJAQJiRQEFAmZrBAJmbQkBAmJFAQUCZmoEAmZuCQBrAwUCZm0FAmZnCQBkAgUCZmwFAmZnBAJmbwkAuQICCQC2AgEFAmZsCQC2AgEFAmZtBAJmcAkAuQICCQC3AgIJALYCAQkBAmJFAQUCZmsJALYCAQUCZmcJALgCAgkAtgIBCQECYkUBBQJmagkAtgIBBQJmbgQCZnEDCQDAAgIFAmZwBQJmbwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJmcQUCZnEJAJQKAgUDbmlsBQJmbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMEAmZnAmZoAmZyAmZzBAJmdAoAAmFSCQD8BwQFAmFPAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVICBlN0cmluZwUCYVIJAAIBCQCsAgIJAAMBBQJhUgIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJlSAkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAUCZmcGCQECYUwBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZEwGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmdAYJAQJhTAECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCZmsJAQJiYQEIBQJkTQdhc3NldElkBAJmagMJAAACBQJmaAcJAQJhSAIFBHRoaXMJAQJhZgAJAQJhSAIFBHRoaXMJAQJhZQAEAmZsCQBlAgkBAmJFAQUCZmsICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAQCZm0JAQJiRQEFAmZqBAJmbgkAawMFAmZtBQJmZwkAZAIFAmZsBQJmZwQCZm8JALkCAgkAtgIBBQJmbAkAtgIBBQJmbQQCZnAJALkCAgkAtgIBCQECYkUBBQJmawkAuAICCQC2AgEJAQJiRQEFAmZqCQC2AgEFAmZuBAJmcQMJAMACAgUCZnAFAmZvBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmZxBQJmcQQCZnUDCQBnAgUCZm4FAmZyBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZ1BQJmdQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZzBQJmbgkBAmFZAQUCZmoFA25pbAUCZm4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCnNldE1hbmFnZXIBAmZ2BAJmdwkBAmZlAQUCZEwDCQAAAgUCZncFAmZ3BAJmeAkA2QQBBQJmdgMJAAACBQJmeAUCZngJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJmdgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQ5jb25maXJtTWFuYWdlcgAEAmZ5CQECZmIABAJmegMJAQlpc0RlZmluZWQBBQJmeQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZnoFAmZ6BAJmQQMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmeQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkEFAmZBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJmeQkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEDcHV0AgJjegJmQgMJAGYCAAAFAmN6CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCY3oGBAJkYggFAmRSAl8yBAJjZwgFAmRSAl83BAJjeAgFAmRSAl85BAJkYwgFAmRSA18xMAQCZGQIBQJkUgNfMTEEAmZDCAUCZFIDXzEyBAJmRAgFAmRSA18xMwQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAGYW1vdW50BAJkUQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQZhbW91bnQEAmRzCQECZGwDBQJkUAUCZFEJALYCAQAAAwkAAAIFAmRzBQJkcwQCZFUJAPwHBAUCYU8CBGVtaXQJAMwIAgUCZGIFA25pbAUDbmlsAwkAAAIFAmRVBQJkVQQCZFYEAmRXBQJkVQMJAAECBQJkVwIHQWRkcmVzcwQCZFgFAmRXCQD8BwQFAmRYAgRlbWl0CQDMCAIFAmRiBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkVgUCZFYEAmZFAwkAZgIFAmRjAAAJAPwHBAUCYm8CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmQwUCZGMFA25pbAUDbmlsAwkAAAIFAmZFBQJmRQQCZkYDCQBmAgUCZGQAAAkA/AcEBQJibwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZEBQJkZAUDbmlsBQNuaWwDCQAAAgUCZkYFAmZGBAJmRwMFAmZCBAJmSAkA/AcEBQJibgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRiBQNuaWwDCQAAAgUCZkgFAmZIBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRMBmNhbGxlcgUCZGIFAmNnBQNuaWwEAmZJCQECZHQDAAAAAAAAAwkAAAIFAmZJBQJmSQQCZGsIBQJmSQJfMgQCZkoIBQJmSQJfMQQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgkAzggCBQJjeAUCZkcFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQpwdXRGb3JGcmVlAQJmTAMJAGYCAAAFAmZMCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCZkwHBAJjeAgFAmRSAl85BAJkUAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmRRCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBmFtb3VudAQCZHMJAQJkbAMFAmRQBQJkUQkAtgIBAAADCQAAAgUCZHMFAmRzBAJmTQkBAmR0AwAAAAAAAAQCZkoIBQJmTQJfMQQCZGsIBQJmTQJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgUCY3gFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQlwdXRPbmVUa24CAmZOAmZPBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZRAwMDCQECYVQABgkAAAIFAmJnBQFsBgkAAAIFAmJnBQFuBgUCZlAEAmVICQDMCAIDAwkBASEBBQJmUQYJAQJmYwEFAmRMBgkBAmFMAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEwIcGF5bWVudHMAAQYJAQJhTAECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZlIJAJEDAggFAmRMCHBheW1lbnRzAAAEAmVjCAUCZlIHYXNzZXRJZAQCZWIIBQJmUgZhbW91bnQEAmRzAwkAAAIFAmVjBQJiaQkBAmRsAwkAtgIBBQJlYgkAtgIBAAAJALYCAQAAAwkAAAIFAmVjBQJiagkBAmRsAwkAtgIBAAAJALYCAQUCZWIJALYCAQAACQECYUwBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZHMFAmRzBAJhYggFAmRMBmNhbGxlcgQCYWMIBQJkTA10cmFuc2FjdGlvbklkBAJmUwkBAmVhBAUCZWIFAmVjBQJhYgUCYWMDCQAAAgUCZlMFAmZTBAJlZwgFAmZTAl81BAJmVAgFAmZTAl80BAJkWggFAmZTAl8zBAJkZQgFAmZTAl8yBAJmVQgFAmZTAl8xBAJmVgMDCQBmAgUCZk4AAAkAZgIFAmZOBQJmVQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJmVQQCZFUJAQJkUwEFAmZWAwkAAAIFAmRVBQJkVQQCZkcDBQJmTwQCZlcJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJmVgUDbmlsAwkAAAIFAmZXBQJmVwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTAZjYWxsZXIFAmZWBQJiaAUDbmlsBAJmWAMJAGYCBQJkWgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFQBQJkWgUCZWMFA25pbAUDbmlsBAJmWQMJAAACBQR0aGlzBQJhUAkAlAoCAAAAAAMFAmVnCQCUCgIJAQEtAQUCZFoAAAkAlAoCAAAJAQEtAQUCZFoEAmR1CAUCZlkCXzEEAmR2CAUCZlkCXzIEAmZaCQECZHQDBQJkdQUCZHYAAAQCZkoIBQJmWgJfMQQCZGsIBQJmWgJfMgQCZEUJAQV2YWx1ZQEJAKIIAQUCYWoEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJmRwUCZlgFAmZKBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERcHV0T25lVGtuUkVBRE9OTFkCAmVjAmViBAJnYQkBAmVhBAUCZWIJAQJhWQEFAmVjBQR1bml0BQR1bml0BAJmVQgFAmdhAl8xBAJkZQgFAmdhAl8yBAJkWggFAmdhAl8zBAJmVAgFAmdhAl80BAJlZwgFAmdhAl81CQCUCgIFA25pbAkAlQoDBQJmVQUCZFoFAmZUAmRMAQlnZXRPbmVUa24CAmdiAmZOBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdjAwMJAQJhVAAGCQAAAgUCYmcFAW4GBQJmUAQCZUgJAMwIAgMDCQEBIQEFAmdjBgkBAmZjAQUCZEwGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwABBgkBAmFMAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJlRwkBAmFZAQUCZ2IEAmZSCQCRAwIIBQJkTAhwYXltZW50cwAABAJlYwgFAmZSB2Fzc2V0SWQEAmVvCAUCZlIGYW1vdW50BAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmFiCAUCZEwGY2FsbGVyBAJhYwgFAmRMDXRyYW5zYWN0aW9uSWQEAmdkCQECZUYFBQJlRwUCZW8FAmVjBQJhYgUCYWMDCQAAAgUCZ2QFAmdkBAJlSQgFAmdkAl81BAJmVAgFAmdkAl80BAJkWggFAmdkAl8zBAJkZQgFAmdkAl8yBAJnZQgFAmdkAl8xBAJkVAMDCQBmAgUCZk4AAAkAZgIFAmZOBQJnZQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJnZQQCZ2YJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZW8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZWMFAmVvBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZFQFAmVHBQNuaWwEAmZYAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVAFAmRaBQJlRwUDbmlsBQNuaWwEAmdoBAJnaQMJAAACBQR0aGlzBQJhUAAABQJkWgMFAmVJCQCUCgIJAQEtAQkAZAIFAmRUBQJnaQAACQCUCgIAAAkBAS0BCQBkAgUCZFQFAmdpBAJkdQgFAmdoAl8xBAJkdggFAmdoAl8yBAJnagkBAmR0AwUCZHUFAmR2AAAEAmZKCAUCZ2oCXzEEAmRrCAUCZ2oCXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJnZwUCZlgFAmZKBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERZ2V0T25lVGtuUkVBRE9OTFkCAmVHAmVvBAJnawkBAmVGBQkBAmFZAQUCZUcFAmVvBQJiaAUEdW5pdAUEdW5pdAQCZ2UIBQJnawJfMQQCZGUIBQJnawJfMgQCZFoIBQJnawJfMwQCZlQIBQJnawJfNAQCZUkIBQJnawJfNQkAlAoCBQNuaWwJAJUKAwUCZ2UFAmRaBQJmVAJkTAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ2wCZ2ICZk4EAmZQCgACYVIJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ2MDAwkBAmFUAAYJAAACBQJiZwUBbgYFAmZQBAJlSAkAzAgCAwMJAQEhAQUCZ2MGCQECZmMBBQJkTAYJAQJhTAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQECYUwBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlSAUCZUgEAmVHCQECYVkBBQJnYgQCYWIIBQJkTAZjYWxsZXIEAmFjCAUCZEwNdHJhbnNhY3Rpb25JZAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmdsBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmduCQECZUYFBQJlRwUCZ2wFAmJoBQJhYgUCYWMDCQAAAgUCZ24FAmduBAJlSQgFAmduAl81BAJmVAgFAmduAl80BAJkWggFAmduAl8zBAJkZQgFAmduAl8yBAJnZQgFAmduAl8xBAJkVAMDCQBmAgUCZk4AAAkAZgIFAmZOBQJnZQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJnZQQCZ2YJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZ2wFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmdsBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEwGY2FsbGVyBQJkVAUCZUcFA25pbAQCZlgDCQBmAgUCZFoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCZFoFAmVHBQNuaWwFA25pbAQCZ28EAmdpAwkAAAIFBHRoaXMFAmFQAAAFAmRaAwUCZUkJAJQKAgkBAS0BCQBkAgUCZFQFAmdpAAAJAJQKAgAACQEBLQEJAGQCBQJkVAUCZ2kEAmR1CAUCZ28CXzEEAmR2CAUCZ28CXzIEAmdwCQECZHQDBQJkdQUCZHYAAAQCZkoIBQJncAJfMQQCZGsIBQJncAJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGUFAmdnBQJmWAUCZkoFAmRUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQNnZXQABAJjUAkBAmRLAQUCZEwEAmdxCAUCY1ACXzEEAmN3CAUCY1ACXzIEAmROCAUCY1ACXzMEAmNlCAUCY1ACXzQEAmN4CAUCY1ACXzUEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmROBQNuaWwDCQAAAgUCZ3IFAmdyBAJncwkBAmR0AwkBAS0BBQJncQkBAS0BBQJjdwAABAJmSggFAmdzAl8xBAJkawgFAmdzAl8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCWdldE5vTGVzcwICZ3QCZ3UEAmNQCQECZEsBBQJkTAQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCZE4IBQJjUAJfMwQCY2UIBQJjUAJfNAQCY3gIBQJjUAJfNQMJAGYCBQJndAUCY3YJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmN2AgMgPCAJAKQDAQUCZ3QDCQBmAgUCZ3UFAmN3CQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY3cCAyA8IAkApAMBBQJndQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJncgkA/AcEBQJhTwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCZE4FA25pbAMJAAACBQJncgUCZ3IEAmd2CQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZKCAUCZ3YCXzEEAmRrCAUCZ3YCXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAENdW5zdGFrZUFuZEdldAECZFQEAmd3AwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZ3cFAmd3BAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmNnCQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmNQCQECY2MECQDYBAEIBQJkTA10cmFuc2FjdGlvbklkCQDYBAEFAmNnBQJkVAgFAmRMBmNhbGxlcgQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY2oJAQ1wYXJzZUludFZhbHVlAQgFAmNQAl85BAJjeAgFAmNQA18xMAQCZ3gDAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oGAwkAAAIFAmd4BQJneAQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRUBQNuaWwDCQAAAgUCZ3IFAmdyBAJneQkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSggFAmd5Al8xBAJkawgFAmd5Al8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmdsAmd6Amd1BAJnYwMJAQJhVAAGCQAAAgUCYmcFAW4EAmVICQDMCAIDCQEBIQEFAmdjBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmdtCQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmgJAMwIAgUCZ2wFA25pbAUDbmlsAwkAAAIFAmdtBQJnbQQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCYmgFAmdsCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjeAgFAmNQA18xMAQCZ0EJAMwIAgMJAGcCBQJjdgUCZ3oGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3oFA25pbAIACQDMCAIDCQBnAgUCY3cFAmd1BgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3UFA25pbAIABQNuaWwDCQAAAgUCZ0EFAmdBBAJncgkA/AcEBQJhTwIEYnVybgkAzAgCBQJnbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCZ2wFA25pbAMJAAACBQJncgUCZ3IEAmdCCQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZKCAUCZ0ICXzEEAmRrCAUCZ0ICXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEIYWN0aXZhdGUCAmdDAmdEAwkBAiE9AgkApQgBCAUCZEwGY2FsbGVyCQClCAEFAmFPCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCZ0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCZ0QFA25pbAIHc3VjY2VzcwJkTAEKcmVmcmVzaEtMcAAEAmdFCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmdGAwkAZwIJAGUCBQZoZWlnaHQFAmdFBQJhbgUEdW5pdAkBAmFMAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdGBQJnRgQCZEUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYU4BAgtpbnZhbGlkIGtMcAQCZ0cJAQJkdAMAAAAAAAAEAmdICAUCZ0cCXzEEAmRrCAUCZ0cCXzIEAmR3AwkBAiE9AgUCZEUFAmRrBQJnSAkBAmFMAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmR3CQCmAwEFAmRrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVgACZEwBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJGCQCUCgIFA25pbAkBAmJFAQUCYkYCZEwBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJOAmJPAmJTBAJjYgkBAmJSAwUCYk4FAmJPBQJiUwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmNiAAAJAMwIAgkApgMBCQCRAwIFAmNiAAEJAMwIAgkApgMBCQCRAwIFAmNiAAIFA25pbAJkTAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRMARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJkTAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSAJiSQkAlAoCBQNuaWwJAKYDAQkBAmJHAgkApwMBBQJiSAkApwMBBQJiSQJkTAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGCQCUCgIFA25pbAkBAmN5CQUCY2QFAmN6BQJjQQUCY0IFAmNDBQJjRAUCYWIFAmNFBQJjRgJkTAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNkAmNlAmNmAmFiBAJjUAkBAmNjBAUCY2QFAmNlBQJjZgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJjUAJfMQgFAmNQAl8yCAUCY1ACXzMIBQJjUAJfNAgFAmNQAl81CAUCY1ACXzYIBQJjUAJfNwkApgMBCAUCY1ACXzgIBQJjUAJfOQgFAmNQA18xMAJkTAENc3RhdHNSRUFET05MWQAEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJnSQkAkQMCBQJiVAUBcgQCZ0oJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTAkBAmJFAQUCZ0kEAmdNCQECYkUBBQJnSgQCZ04DCQAAAgUCZ0sAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYlIDBQJnTAUCZ00FAmdLBAJjcQAABAJnTwkBAUgCCQCRAwIFAmdOAAEFAWIEAmdQCQEBSAIJAJEDAgUCZ04AAgUBYgQCZ1EJAQV2YWx1ZQEJAJoIAgUCYU8JAQJheQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdMCQDMCAIJAKQDAQUCZ00JAMwIAgkApAMBBQJnSwkAzAgCCQCkAwEFAmNxCQDMCAIJAKQDAQUCZ08JAMwIAgkApAMBBQJnUAkAzAgCCQCkAwEFAmdRBQNuaWwFAWoCZEwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjQQQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTAkBAmJFAQUCY0cEAmdNCQECYkUBBQJjSAQCYlAJAQFEAgUCZ0wFAmJVBAJiUQkBAUQCBQJnTQUCYlYEAmNwAwkAAAIFAmdLAAAFAWUJAQJiRwIFAmJRBQJiUAQCY00JAQFEAgUCY0EFAmJVBAJjTgkAvAIDBQJjTQUCY3AFAWQEAmNDCQEBSAIFAmNOBQJiVgQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1IIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjQwQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnUwkBAmJFAQUCY0cEAmdUCQECYkUBBQJjSAQCZ1UJAQFEAgUCZ1MFAmJVBAJnVgkBAUQCBQJnVAUCYlYEAmNwAwkAAAIFAmdLAAAFAWUJAQJiRwIFAmdWBQJnVQQCY04JAQFEAgUCY0MFAmJWBAJjTQkAvAIDBQJjTgUBZAUCY3AEAmNBCQEBSAIFAmNNBQJiVQQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1IIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMARNldmFsdWF0ZUdldFJFQURPTkxZAgJnVwJnWAQCY1AJAQJjYwQCAAUCZ1cFAmdYBQR0aGlzBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjbAgFAmNQAl81BAJjbggFAmNQAl82BAJjawgFAmNQAl83BAJjcQgFAmNQAl84BAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmN3CQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIJAKYDAQUCY3EJAMwIAgkApAMBBQJjagUDbmlsBQFqAQJnWQECZ1oABAJoYQQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwUCZmQDCQABAgUCZFcCBFVuaXQIBQJnWQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZFcFAmdZAwkAAQIFAmRXAgVPcmRlcgQCZEEFAmRXBAJoYgkBAmFVAAQCaGMJAQJkegEFAmRBBAJhRAgFAmhjAl8xBAJhRQgFAmhjAl8yBAJhRgkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAAgFAmRBD3NlbmRlclB1YmxpY0tleQQCYUcJAPQDAwgFAmRBCWJvZHlCeXRlcwkAkQMCCAUCZEEGcHJvb2ZzAAEFAmhiAwMDBQJhRAUCYUYHBQJhRwcGCQECYUMEBQJhRAUCYUUFAmFGBQJhRwMJAAECBQJkVwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmZhBQJkVwMJAPQDAwgFAmdZCWJvZHlCeXRlcwkAkQMCCAUCZ1kGcHJvb2ZzAAAFAmhhBgQCaGQJAPYDAQkBBXZhbHVlAQgFAmZhBnNjcmlwdAQCaGUJANsEAQkBBXZhbHVlAQkAnQgCBQJhTwkBAmFBAAQCaGYJAPEHAQUEdGhpcwMJAAACBQJoZQUCaGQJAQIhPQIFAmhmBQJoZAcJAPQDAwgFAmdZCWJvZHlCeXRlcwkAkQMCCAUCZ1kGcHJvb2ZzAAAFAmhhV7eRkw==", "height": 2447515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 282MxSbs97FhQQ3aFchLZQQGZbv1SqRyh17VpfTfMpBe Next: FXhGsKC29cqimyoyTocmXi3YBD9vgfcziSfkf1ePbfDv Diff:
OldNewDifferences
752752 if ((eH == eH))
753753 then {
754754 let dM = value(dL.payments[0])
755- let fk = if ((dM.assetId == unit))
756- then toBase58String(toBytes("WAVES"))
757- else toBase58String(value(dM.assetId))
755+ let fk = ba(dM.assetId)
758756 let fj = if ((fh == false))
759757 then aH(this, af())
760758 else aH(this, ae())
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao () = "%s__factoryConfig"
134134
135135
136136 func ap () = "%s%s__matcher__publicKey"
137137
138138
139139 func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142142 func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145145 func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148148 func ax () = "%s__shutdown"
149149
150150
151151 func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154154 func aA () = "%s__allowedLpScriptHash"
155155
156156
157157 let aB = "%s__feeCollectorAddress"
158158
159159 func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162162 func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165165 func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168168 func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171171 func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173173
174174 let aO = addressFromStringValue(aH(this, T()))
175175
176176 let aP = addressFromStringValue(aH(aO, aB))
177177
178178 let aQ = {
179179 let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180180 if ($isInstanceOf(aR, "Int"))
181181 then aR
182182 else throw(($getType(aR) + " couldn't be cast to Int"))
183183 }
184184
185185 let aS = {
186186 let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187187 if ($isInstanceOf(aR, "Int"))
188188 then aR
189189 else throw(($getType(aR) + " couldn't be cast to Int"))
190190 }
191191
192192 func aT () = valueOrElse(getBoolean(aO, ax()), false)
193193
194194
195195 func aU () = fromBase58String(aH(aO, ap()))
196196
197197
198198 func aV () = {
199199 let aW = aH(this, ae())
200200 let aX = aH(this, af())
201201 let au = aK(aO, av(aX))
202202 let at = aK(aO, av(aW))
203203 split(aH(aO, as(toString(at), toString(au))), j)
204204 }
205205
206206
207207 func aY (aZ) = if ((aZ == i))
208208 then unit
209209 else fromBase58String(aZ)
210210
211211
212212 func ba (aZ) = if ((aZ == unit))
213213 then i
214214 else toBase58String(value(aZ))
215215
216216
217217 func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
218218
219219
220220 let bd = bb(aV())
221221
222222 let be = bd
223223
224224 let bf = be._1
225225
226226 let bg = be._2
227227
228228 let bh = be._3
229229
230230 let bi = be._4
231231
232232 let bj = be._5
233233
234234 let bk = be._6
235235
236236 let bl = be._7
237237
238238 func bm () = split(aH(aO, ao()), j)
239239
240240
241241 let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
242242
243243 let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
244244
245245 func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
246246
247247
248248 func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
249249
250250
251251 func bE (bF) = if ((bF == "WAVES"))
252252 then wavesBalance(this).available
253253 else assetBalance(this, fromBase58String(bF))
254254
255255
256256 func bG (bH,bI) = fraction(bH, d, bI)
257257
258258
259259 func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260260
261261
262262 func bK (bL,bM,bN,bO) = {
263263 let bP = D(bN, bL)
264264 let bQ = D(bO, bM)
265265 bG(bQ, bP)
266266 }
267267
268268
269269 func bR (bN,bO,bS) = {
270270 let bT = aV()
271271 let bU = parseIntValue(bT[t])
272272 let bV = parseIntValue(bT[u])
273273 let bW = bK(bU, bV, bN, bO)
274274 let bI = D(bN, bU)
275275 let bH = D(bO, bV)
276276 let bX = D(bS, b)
277277 let bY = bG(bI, bX)
278278 let bZ = bG(bH, bX)
279279 [bW, bY, bZ]
280280 }
281281
282282
283283 func ca (bN,bO,bS) = {
284284 let cb = bR(bN, bO, bS)
285285 [H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286286 }
287287
288288
289289 func cc (cd,ce,cf,ab) = {
290290 let bT = aV()
291291 let cg = bT[q]
292292 let ch = bT[r]
293293 let ci = bT[s]
294294 let bL = parseIntValue(bT[t])
295295 let bM = parseIntValue(bT[u])
296296 let cj = bT[p]
297297 let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298298 if ((cg != ce))
299299 then throw("Invalid asset passed.")
300300 else {
301301 let cl = bE(ch)
302302 let cm = D(cl, bL)
303303 let cn = bE(ci)
304304 let co = D(cn, bM)
305305 let cp = bG(co, cm)
306306 let cq = H(cp, b)
307307 let cr = D(cf, b)
308308 let cs = D(ck, b)
309309 let ct = fraction(cm, cr, cs)
310310 let cu = fraction(co, cr, cs)
311311 let cv = K(ct, bL, FLOOR)
312312 let cw = K(cu, bM, FLOOR)
313313 let cx = if ((cd == ""))
314314 then nil
315315 else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316316 then unit
317317 else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318318 then unit
319319 else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320320 $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321321 }
322322 }
323323
324324
325325 func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326326 let bT = aV()
327327 let cg = fromBase58String(bT[q])
328328 let cG = bT[r]
329329 let cH = bT[s]
330330 let cI = bT[v]
331331 let cJ = bT[w]
332332 let bU = parseIntValue(bT[t])
333333 let bV = parseIntValue(bT[u])
334334 let cj = bT[p]
335335 let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336336 let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337337 let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338338 if (if ((cG != cK))
339339 then true
340340 else (cH != cL))
341341 then throw("Invalid amt or price asset passed.")
342342 else {
343343 let cl = if (cE)
344344 then bE(cG)
345345 else (bE(cG) - cA)
346346 let cn = if (cE)
347347 then bE(cH)
348348 else (bE(cH) - cC)
349349 let cM = D(cA, bU)
350350 let cN = D(cC, bV)
351351 let cO = bG(cN, cM)
352352 let cm = D(cl, bU)
353353 let co = D(cn, bV)
354354 let cP = if ((ck == 0))
355355 then {
356356 let cp = e
357357 let cQ = e
358358 let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359359 $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
360360 }
361361 else {
362362 let cp = bG(co, cm)
363363 let cQ = fraction(R((cp - cO)), d, cp)
364364 let cR = D(cz, b)
365365 if (if ((cp != e))
366366 then (cQ > cR)
367367 else false)
368368 then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369369 else {
370370 let cs = D(ck, b)
371371 let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372372 let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373373 let cU = if ((cS > cN))
374374 then $Tuple2(cT, cN)
375375 else $Tuple2(cM, cS)
376376 let cV = cU._1
377377 let cW = cU._2
378378 let bX = fraction(cs, cW, co, FLOOR)
379379 $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380380 }
381381 }
382382 let cX = cP._1
383383 let cY = cP._2
384384 let cZ = cP._3
385385 let cq = H(cP._4, b)
386386 let da = H(cP._5, b)
387387 if ((0 >= cX))
388388 then throw("Invalid calculations. LP calculated is less than zero.")
389389 else {
390390 let db = if (!(cF))
391391 then 0
392392 else cX
393393 let dc = (cA - cY)
394394 let dd = (cC - cZ)
395395 let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396396 $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397397 }
398398 }
399399 }
400400
401401
402402 func df (dg,dh,ck) = {
403403 let di = G(dg, toBigInt(bk))
404404 let dj = G(dh, toBigInt(bl))
405405 let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406406 if ((ck == f))
407407 then f
408408 else dk
409409 }
410410
411411
412412 func dl (dm,dn,do) = {
413413 let dp = (toBigInt(bE(ba(bi))) - dm)
414414 let dq = (toBigInt(bE(ba(bj))) - dn)
415415 let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416416 let ds = df(dp, dq, dr)
417417 ds
418418 }
419419
420420
421421 func dt (du,dv,do) = {
422422 let dp = (bE(ba(bi)) + du)
423423 let dq = (bE(ba(bj)) + dv)
424424 let dr = (value(assetInfo(bh)).quantity + do)
425425 let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426426 let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427427 $Tuple2(dw, dk)
428428 }
429429
430430
431431 func dx (dy,dk) = if ((dk >= dy))
432432 then true
433433 else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434434
435435
436436 func dz (dA) = {
437437 let dp = bE(ba(bi))
438438 let dq = bE(ba(bj))
439439 let dB = dA.amount
440440 let dC = fraction(dA.amount, dA.price, b, FLOOR)
441441 let dD = if ((dA.orderType == Buy))
442442 then $Tuple2(dB, -(dC))
443443 else $Tuple2(-(dB), dC)
444444 let du = dD._1
445445 let dv = dD._2
446446 if (if (if (aT())
447447 then true
448448 else (bg == m))
449449 then true
450450 else (bg == n))
451451 then throw("Exchange operations disabled")
452452 else if (if ((dA.assetPair.amountAsset != bi))
453453 then true
454454 else (dA.assetPair.priceAsset != bj))
455455 then throw("Wrong order assets.")
456456 else {
457457 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458458 let dF = dt(du, dv, 0)
459459 let dG = dF._1
460460 let dH = dF._2
461461 let dI = (dH >= dE)
462462 let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463463 $Tuple2(dI, dJ)
464464 }
465465 }
466466
467467
468468 func dK (dL) = if ((size(dL.payments) != 1))
469469 then throw("exactly 1 payment is expected")
470470 else {
471471 let dM = value(dL.payments[0])
472472 let ce = value(dM.assetId)
473473 let dN = dM.amount
474474 let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475475 let cv = cP._1
476476 let cw = cP._2
477477 let cj = parseIntValue(cP._9)
478478 let cx = cP._10
479479 if (if (aT())
480480 then true
481481 else (cj == n))
482482 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483483 else $Tuple5(cv, cw, dN, ce, cx)
484484 }
485485
486486
487487 func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488488 then throw("exactly 2 payments are expected")
489489 else {
490490 let dP = value(dL.payments[0])
491491 let dQ = value(dL.payments[1])
492492 let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493493 let cj = parseIntValue(dR._8)
494494 if (if (if (aT())
495495 then true
496496 else (cj == l))
497497 then true
498498 else (cj == n))
499499 then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500500 else dR
501501 }
502502
503503
504504 func dS (dT) = {
505505 let dU = invoke(aO, "emit", [dT], nil)
506506 if ((dU == dU))
507507 then {
508508 let dV = {
509509 let dW = dU
510510 if ($isInstanceOf(dW, "Address"))
511511 then {
512512 let dX = dW
513513 invoke(dX, "emit", [dT], nil)
514514 }
515515 else unit
516516 }
517517 if ((dV == dV))
518518 then dT
519519 else throw("Strict value is not equal to itself.")
520520 }
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525 func dY (dT,ai) = {
526526 let dZ = if ((ai == 0))
527527 then 0
528528 else fraction(dT, ai, b)
529529 $Tuple2((dT - dZ), dZ)
530530 }
531531
532532
533533 func ea (eb,ec,ab,ac) = {
534534 let ed = (ac == unit)
535535 let ee = bE(ba(bi))
536536 let ef = bE(ba(bj))
537537 let eg = if ((ec == bi))
538538 then true
539539 else if ((ec == bj))
540540 then false
541541 else aL("invalid asset")
542542 let eh = if (ed)
543543 then $Tuple2(ee, ef)
544544 else if (eg)
545545 then $Tuple2((ee - eb), ef)
546546 else $Tuple2(ee, (ef - eb))
547547 let ei = eh._1
548548 let ej = eh._2
549549 let ek = if (eg)
550550 then $Tuple2(eb, 0)
551551 else $Tuple2(0, eb)
552552 let el = ek._1
553553 let em = ek._2
554554 let dB = dY(el, aQ)._1
555555 let dC = dY(em, aQ)._1
556556 let en = dY(eb, aQ)
557557 let eo = en._1
558558 let dZ = en._2
559559 let ep = (ei + dB)
560560 let eq = (ej + dC)
561561 let er = bG(D(eq, bl), D(ep, bk))
562562 let es = H(er, b)
563563 let et = if (eg)
564564 then ei
565565 else ej
566566 let eu = toBigInt(et)
567567 let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568568 let ew = if ((ev > f))
569569 then true
570570 else aL("initial deposit requires all coins")
571571 if ((ew == ew))
572572 then {
573573 let ex = toBigInt(eo)
574574 let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575575 let de = if (ed)
576576 then nil
577577 else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578578 let ez = bG(D(ej, bl), D(ei, bk))
579579 let eA = H(ez, b)
580580 let eB = {
581581 let eC = if (eg)
582582 then $Tuple2(el, ei)
583583 else $Tuple2(em, ej)
584584 let dT = eC._1
585585 let eD = eC._2
586586 let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587587 fraction((ey - eE), b, eE)
588588 }
589589 $Tuple5(ey, de, dZ, eB, eg)
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593
594594
595595 func eF (eG,eo,ec,ab,ac) = {
596596 let ed = (ac == unit)
597597 let bT = aV()
598598 let bU = parseIntValue(bT[t])
599599 let bV = parseIntValue(bT[u])
600600 let eH = [if ((ec == bh))
601601 then true
602602 else aL("invalid lp asset")]
603603 if ((eH == eH))
604604 then {
605605 let eI = if ((eG == bi))
606606 then true
607607 else if ((eG == bj))
608608 then false
609609 else aL("invalid asset")
610610 let eJ = if (eI)
611611 then toBigInt(bE(ba(bi)))
612612 else toBigInt(bE(ba(bj)))
613613 let eK = if (eI)
614614 then bU
615615 else bV
616616 let eL = bE(ba(bi))
617617 let eM = bE(ba(bj))
618618 let eN = if (eI)
619619 then eL
620620 else eM
621621 let eO = toBigInt(eN)
622622 let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623623 let eP = toBigInt(eo)
624624 let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625625 let eR = dY(eQ, aS)
626626 let eS = eR._1
627627 let dZ = eR._2
628628 let eT = if (eI)
629629 then $Tuple4(eS, 0, (eL - eQ), eM)
630630 else $Tuple4(0, eS, eL, (eM - eQ))
631631 let eU = eT._1
632632 let eV = eT._2
633633 let eW = eT._3
634634 let eX = eT._4
635635 let er = bG(D(eX, bl), D(eW, bk))
636636 let es = H(er, b)
637637 let de = if (ed)
638638 then nil
639639 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640640 let ez = bG(D(eM, bl), D(eL, bk))
641641 let eA = H(ez, b)
642642 let eB = {
643643 let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644644 fraction((eS - eY), b, eY)
645645 }
646646 $Tuple5(eS, de, dZ, eB, eI)
647647 }
648648 else throw("Strict value is not equal to itself.")
649649 }
650650
651651
652652 func eZ () = {
653653 let dW = getString(U())
654654 if ($isInstanceOf(dW, "String"))
655655 then {
656656 let fa = dW
657657 fromBase58String(fa)
658658 }
659659 else if ($isInstanceOf(dW, "Unit"))
660660 then unit
661661 else throw("Match error")
662662 }
663663
664664
665665 func fb () = {
666666 let dW = getString(V())
667667 if ($isInstanceOf(dW, "String"))
668668 then {
669669 let fa = dW
670670 fromBase58String(fa)
671671 }
672672 else if ($isInstanceOf(dW, "Unit"))
673673 then unit
674674 else throw("Match error")
675675 }
676676
677677
678678 func fc (dL) = {
679679 let dW = eZ()
680680 if ($isInstanceOf(dW, "ByteVector"))
681681 then {
682682 let fd = dW
683683 (dL.callerPublicKey == fd)
684684 }
685685 else if ($isInstanceOf(dW, "Unit"))
686686 then (dL.caller == this)
687687 else throw("Match error")
688688 }
689689
690690
691691 func fe (dL) = {
692692 let ff = throw("Permission denied")
693693 let dW = eZ()
694694 if ($isInstanceOf(dW, "ByteVector"))
695695 then {
696696 let fd = dW
697697 if ((dL.callerPublicKey == fd))
698698 then true
699699 else ff
700700 }
701701 else if ($isInstanceOf(dW, "Unit"))
702702 then if ((dL.caller == this))
703703 then true
704704 else ff
705705 else throw("Match error")
706706 }
707707
708708
709709 @Callable(dL)
710710 func calculateAmountOutForSwapREADONLY (fg,fh) = {
711711 let fi = if ((fh == false))
712712 then {
713713 let fj = aH(this, af())
714714 let fk = aH(this, ae())
715715 $Tuple2(fj, fk)
716716 }
717717 else {
718718 let fj = aH(this, ae())
719719 let fk = aH(this, af())
720720 $Tuple2(fj, fk)
721721 }
722722 let fj = fi._1
723723 let fk = fi._2
724724 let fl = bE(fk)
725725 let fm = bE(fj)
726726 let fn = fraction(fm, fg, (fl + fg))
727727 let fo = (toBigInt(fl) * toBigInt(fm))
728728 let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729729 let fq = if ((fp >= fo))
730730 then true
731731 else throw("new K is fewer error")
732732 if ((fq == fq))
733733 then $Tuple2(nil, fn)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(dL)
740740 func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741741 let ft = {
742742 let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743743 if ($isInstanceOf(aR, "String"))
744744 then aR
745745 else throw(($getType(aR) + " couldn't be cast to String"))
746746 }
747747 let eH = [if ((value(dL.payments[0]).amount >= fg))
748748 then true
749749 else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750750 then true
751751 else aL("Permission denied")]
752752 if ((eH == eH))
753753 then {
754754 let dM = value(dL.payments[0])
755- let fk = if ((dM.assetId == unit))
756- then toBase58String(toBytes("WAVES"))
757- else toBase58String(value(dM.assetId))
755+ let fk = ba(dM.assetId)
758756 let fj = if ((fh == false))
759757 then aH(this, af())
760758 else aH(this, ae())
761759 let fl = (bE(fk) - value(dL.payments[0]).amount)
762760 let fm = bE(fj)
763761 let fn = fraction(fm, fg, (fl + fg))
764762 let fo = (toBigInt(fl) * toBigInt(fm))
765763 let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
766764 let fq = if ((fp >= fo))
767765 then true
768766 else throw("new K is fewer error")
769767 if ((fq == fq))
770768 then {
771769 let fu = if ((fn >= fr))
772770 then true
773771 else throw("Exchange result is fewer coins than expected")
774772 if ((fu == fu))
775773 then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
776774 else throw("Strict value is not equal to itself.")
777775 }
778776 else throw("Strict value is not equal to itself.")
779777 }
780778 else throw("Strict value is not equal to itself.")
781779 }
782780
783781
784782
785783 @Callable(dL)
786784 func setManager (fv) = {
787785 let fw = fe(dL)
788786 if ((fw == fw))
789787 then {
790788 let fx = fromBase58String(fv)
791789 if ((fx == fx))
792790 then [StringEntry(V(), fv)]
793791 else throw("Strict value is not equal to itself.")
794792 }
795793 else throw("Strict value is not equal to itself.")
796794 }
797795
798796
799797
800798 @Callable(dL)
801799 func confirmManager () = {
802800 let fy = fb()
803801 let fz = if (isDefined(fy))
804802 then true
805803 else throw("No pending manager")
806804 if ((fz == fz))
807805 then {
808806 let fA = if ((dL.callerPublicKey == value(fy)))
809807 then true
810808 else throw("You are not pending manager")
811809 if ((fA == fA))
812810 then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
813811 else throw("Strict value is not equal to itself.")
814812 }
815813 else throw("Strict value is not equal to itself.")
816814 }
817815
818816
819817
820818 @Callable(dL)
821819 func put (cz,fB) = if ((0 > cz))
822820 then throw("Invalid slippageTolerance passed")
823821 else {
824822 let dR = dO(dL, cz, true)
825823 let db = dR._2
826824 let cg = dR._7
827825 let cx = dR._9
828826 let dc = dR._10
829827 let dd = dR._11
830828 let fC = dR._12
831829 let fD = dR._13
832830 let dP = toBigInt(value(dL.payments[0]).amount)
833831 let dQ = toBigInt(value(dL.payments[1]).amount)
834832 let ds = dl(dP, dQ, toBigInt(0))
835833 if ((ds == ds))
836834 then {
837835 let dU = invoke(aO, "emit", [db], nil)
838836 if ((dU == dU))
839837 then {
840838 let dV = {
841839 let dW = dU
842840 if ($isInstanceOf(dW, "Address"))
843841 then {
844842 let dX = dW
845843 invoke(dX, "emit", [db], nil)
846844 }
847845 else unit
848846 }
849847 if ((dV == dV))
850848 then {
851849 let fE = if ((dc > 0))
852850 then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
853851 else nil
854852 if ((fE == fE))
855853 then {
856854 let fF = if ((dd > 0))
857855 then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
858856 else nil
859857 if ((fF == fF))
860858 then {
861859 let fG = if (fB)
862860 then {
863861 let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
864862 if ((fH == fH))
865863 then nil
866864 else throw("Strict value is not equal to itself.")
867865 }
868866 else [ScriptTransfer(dL.caller, db, cg)]
869867 let fI = dt(0, 0, 0)
870868 if ((fI == fI))
871869 then {
872870 let dk = fI._2
873871 let fJ = fI._1
874872 let fK = dx(ds, dk)
875873 if ((fK == fK))
876874 then ((cx ++ fG) ++ fJ)
877875 else throw("Strict value is not equal to itself.")
878876 }
879877 else throw("Strict value is not equal to itself.")
880878 }
881879 else throw("Strict value is not equal to itself.")
882880 }
883881 else throw("Strict value is not equal to itself.")
884882 }
885883 else throw("Strict value is not equal to itself.")
886884 }
887885 else throw("Strict value is not equal to itself.")
888886 }
889887 else throw("Strict value is not equal to itself.")
890888 }
891889
892890
893891
894892 @Callable(dL)
895893 func putForFree (fL) = if ((0 > fL))
896894 then throw("Invalid value passed")
897895 else {
898896 let dR = dO(dL, fL, false)
899897 let cx = dR._9
900898 let dP = toBigInt(value(dL.payments[0]).amount)
901899 let dQ = toBigInt(value(dL.payments[1]).amount)
902900 let ds = dl(dP, dQ, toBigInt(0))
903901 if ((ds == ds))
904902 then {
905903 let fM = dt(0, 0, 0)
906904 let fJ = fM._1
907905 let dk = fM._2
908906 let fK = dx(ds, dk)
909907 if ((fK == fK))
910908 then (cx ++ fJ)
911909 else throw("Strict value is not equal to itself.")
912910 }
913911 else throw("Strict value is not equal to itself.")
914912 }
915913
916914
917915
918916 @Callable(dL)
919917 func putOneTkn (fN,fO) = {
920918 let fP = {
921919 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922920 if ($isInstanceOf(aR, "Boolean"))
923921 then aR
924922 else throw(($getType(aR) + " couldn't be cast to Boolean"))
925923 }
926924 let fQ = if (if (if (aT())
927925 then true
928926 else (bg == l))
929927 then true
930928 else (bg == n))
931929 then true
932930 else fP
933931 let eH = [if (if (!(fQ))
934932 then true
935933 else fc(dL))
936934 then true
937935 else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
938936 then true
939937 else aL("exactly 1 payment are expected")]
940938 if ((eH == eH))
941939 then {
942940 let fR = dL.payments[0]
943941 let ec = fR.assetId
944942 let eb = fR.amount
945943 let ds = if ((ec == bi))
946944 then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
947945 else if ((ec == bj))
948946 then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
949947 else aL("payment asset is not supported")
950948 if ((ds == ds))
951949 then {
952950 let ab = dL.caller
953951 let ac = dL.transactionId
954952 let fS = ea(eb, ec, ab, ac)
955953 if ((fS == fS))
956954 then {
957955 let eg = fS._5
958956 let fT = fS._4
959957 let dZ = fS._3
960958 let de = fS._2
961959 let fU = fS._1
962960 let fV = if (if ((fN > 0))
963961 then (fN > fU)
964962 else false)
965963 then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
966964 else fU
967965 let dU = dS(fV)
968966 if ((dU == dU))
969967 then {
970968 let fG = if (fO)
971969 then {
972970 let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
973971 if ((fW == fW))
974972 then nil
975973 else throw("Strict value is not equal to itself.")
976974 }
977975 else [ScriptTransfer(dL.caller, fV, bh)]
978976 let fX = if ((dZ > 0))
979977 then [ScriptTransfer(aP, dZ, ec)]
980978 else nil
981979 let fY = if ((this == aP))
982980 then $Tuple2(0, 0)
983981 else if (eg)
984982 then $Tuple2(-(dZ), 0)
985983 else $Tuple2(0, -(dZ))
986984 let du = fY._1
987985 let dv = fY._2
988986 let fZ = dt(du, dv, 0)
989987 let fJ = fZ._1
990988 let dk = fZ._2
991989 let dE = value(getString(aj))
992990 let fK = dx(ds, dk)
993991 if ((fK == fK))
994992 then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
995993 else throw("Strict value is not equal to itself.")
996994 }
997995 else throw("Strict value is not equal to itself.")
998996 }
999997 else throw("Strict value is not equal to itself.")
1000998 }
1001999 else throw("Strict value is not equal to itself.")
10021000 }
10031001 else throw("Strict value is not equal to itself.")
10041002 }
10051003
10061004
10071005
10081006 @Callable(dL)
10091007 func putOneTknREADONLY (ec,eb) = {
10101008 let ga = ea(eb, aY(ec), unit, unit)
10111009 let fU = ga._1
10121010 let de = ga._2
10131011 let dZ = ga._3
10141012 let fT = ga._4
10151013 let eg = ga._5
10161014 $Tuple2(nil, $Tuple3(fU, dZ, fT))
10171015 }
10181016
10191017
10201018
10211019 @Callable(dL)
10221020 func getOneTkn (gb,fN) = {
10231021 let fP = {
10241022 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10251023 if ($isInstanceOf(aR, "Boolean"))
10261024 then aR
10271025 else throw(($getType(aR) + " couldn't be cast to Boolean"))
10281026 }
10291027 let gc = if (if (aT())
10301028 then true
10311029 else (bg == n))
10321030 then true
10331031 else fP
10341032 let eH = [if (if (!(gc))
10351033 then true
10361034 else fc(dL))
10371035 then true
10381036 else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
10391037 then true
10401038 else aL("exactly 1 payment are expected")]
10411039 if ((eH == eH))
10421040 then {
10431041 let eG = aY(gb)
10441042 let fR = dL.payments[0]
10451043 let ec = fR.assetId
10461044 let eo = fR.amount
10471045 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
10481046 if ((ds == ds))
10491047 then {
10501048 let ab = dL.caller
10511049 let ac = dL.transactionId
10521050 let gd = eF(eG, eo, ec, ab, ac)
10531051 if ((gd == gd))
10541052 then {
10551053 let eI = gd._5
10561054 let fT = gd._4
10571055 let dZ = gd._3
10581056 let de = gd._2
10591057 let ge = gd._1
10601058 let dT = if (if ((fN > 0))
10611059 then (fN > ge)
10621060 else false)
10631061 then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
10641062 else ge
10651063 let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
10661064 if ((gf == gf))
10671065 then {
10681066 let gg = [ScriptTransfer(ab, dT, eG)]
10691067 let fX = if ((dZ > 0))
10701068 then [ScriptTransfer(aP, dZ, eG)]
10711069 else nil
10721070 let gh = {
10731071 let gi = if ((this == aP))
10741072 then 0
10751073 else dZ
10761074 if (eI)
10771075 then $Tuple2(-((dT + gi)), 0)
10781076 else $Tuple2(0, -((dT + gi)))
10791077 }
10801078 let du = gh._1
10811079 let dv = gh._2
10821080 let gj = dt(du, dv, 0)
10831081 let fJ = gj._1
10841082 let dk = gj._2
10851083 let fK = dx(ds, dk)
10861084 if ((fK == fK))
10871085 then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10881086 else throw("Strict value is not equal to itself.")
10891087 }
10901088 else throw("Strict value is not equal to itself.")
10911089 }
10921090 else throw("Strict value is not equal to itself.")
10931091 }
10941092 else throw("Strict value is not equal to itself.")
10951093 }
10961094 else throw("Strict value is not equal to itself.")
10971095 }
10981096
10991097
11001098
11011099 @Callable(dL)
11021100 func getOneTknREADONLY (eG,eo) = {
11031101 let gk = eF(aY(eG), eo, bh, unit, unit)
11041102 let ge = gk._1
11051103 let de = gk._2
11061104 let dZ = gk._3
11071105 let fT = gk._4
11081106 let eI = gk._5
11091107 $Tuple2(nil, $Tuple3(ge, dZ, fT))
11101108 }
11111109
11121110
11131111
11141112 @Callable(dL)
11151113 func unstakeAndGetOneTkn (gl,gb,fN) = {
11161114 let fP = {
11171115 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11181116 if ($isInstanceOf(aR, "Boolean"))
11191117 then aR
11201118 else throw(($getType(aR) + " couldn't be cast to Boolean"))
11211119 }
11221120 let gc = if (if (aT())
11231121 then true
11241122 else (bg == n))
11251123 then true
11261124 else fP
11271125 let eH = [if (if (!(gc))
11281126 then true
11291127 else fc(dL))
11301128 then true
11311129 else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
11321130 then true
11331131 else aL("no payments are expected")]
11341132 if ((eH == eH))
11351133 then {
11361134 let eG = aY(gb)
11371135 let ab = dL.caller
11381136 let ac = dL.transactionId
11391137 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
11401138 if ((ds == ds))
11411139 then {
11421140 let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
11431141 if ((gm == gm))
11441142 then {
11451143 let gn = eF(eG, gl, bh, ab, ac)
11461144 if ((gn == gn))
11471145 then {
11481146 let eI = gn._5
11491147 let fT = gn._4
11501148 let dZ = gn._3
11511149 let de = gn._2
11521150 let ge = gn._1
11531151 let dT = if (if ((fN > 0))
11541152 then (fN > ge)
11551153 else false)
11561154 then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
11571155 else ge
11581156 let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
11591157 if ((gf == gf))
11601158 then {
11611159 let gg = [ScriptTransfer(dL.caller, dT, eG)]
11621160 let fX = if ((dZ > 0))
11631161 then [ScriptTransfer(aP, dZ, eG)]
11641162 else nil
11651163 let go = {
11661164 let gi = if ((this == aP))
11671165 then 0
11681166 else dZ
11691167 if (eI)
11701168 then $Tuple2(-((dT + gi)), 0)
11711169 else $Tuple2(0, -((dT + gi)))
11721170 }
11731171 let du = go._1
11741172 let dv = go._2
11751173 let gp = dt(du, dv, 0)
11761174 let fJ = gp._1
11771175 let dk = gp._2
11781176 let fK = dx(ds, dk)
11791177 if ((fK == fK))
11801178 then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11811179 else throw("Strict value is not equal to itself.")
11821180 }
11831181 else throw("Strict value is not equal to itself.")
11841182 }
11851183 else throw("Strict value is not equal to itself.")
11861184 }
11871185 else throw("Strict value is not equal to itself.")
11881186 }
11891187 else throw("Strict value is not equal to itself.")
11901188 }
11911189 else throw("Strict value is not equal to itself.")
11921190 }
11931191
11941192
11951193
11961194 @Callable(dL)
11971195 func get () = {
11981196 let cP = dK(dL)
11991197 let gq = cP._1
12001198 let cw = cP._2
12011199 let dN = cP._3
12021200 let ce = cP._4
12031201 let cx = cP._5
12041202 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12051203 if ((ds == ds))
12061204 then {
12071205 let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
12081206 if ((gr == gr))
12091207 then {
12101208 let gs = dt(-(gq), -(cw), 0)
12111209 let fJ = gs._1
12121210 let dk = gs._2
12131211 let fK = dx(ds, dk)
12141212 if ((fK == fK))
12151213 then (cx ++ fJ)
12161214 else throw("Strict value is not equal to itself.")
12171215 }
12181216 else throw("Strict value is not equal to itself.")
12191217 }
12201218 else throw("Strict value is not equal to itself.")
12211219 }
12221220
12231221
12241222
12251223 @Callable(dL)
12261224 func getNoLess (gt,gu) = {
12271225 let cP = dK(dL)
12281226 let cv = cP._1
12291227 let cw = cP._2
12301228 let dN = cP._3
12311229 let ce = cP._4
12321230 let cx = cP._5
12331231 if ((gt > cv))
12341232 then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
12351233 else if ((gu > cw))
12361234 then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
12371235 else {
12381236 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12391237 if ((ds == ds))
12401238 then {
12411239 let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
12421240 if ((gr == gr))
12431241 then {
12441242 let gv = dt(-(cv), -(cw), 0)
12451243 let fJ = gv._1
12461244 let dk = gv._2
12471245 let fK = dx(ds, dk)
12481246 if ((fK == fK))
12491247 then (cx ++ fJ)
12501248 else throw("Strict value is not equal to itself.")
12511249 }
12521250 else throw("Strict value is not equal to itself.")
12531251 }
12541252 else throw("Strict value is not equal to itself.")
12551253 }
12561254 }
12571255
12581256
12591257
12601258 @Callable(dL)
12611259 func unstakeAndGet (dT) = {
12621260 let gw = if ((size(dL.payments) != 0))
12631261 then throw("No payments are expected")
12641262 else true
12651263 if ((gw == gw))
12661264 then {
12671265 let bT = aV()
12681266 let cg = fromBase58String(bT[q])
12691267 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12701268 if ((ds == ds))
12711269 then {
12721270 let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
12731271 if ((gm == gm))
12741272 then {
12751273 let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
12761274 let cv = cP._1
12771275 let cw = cP._2
12781276 let cj = parseIntValue(cP._9)
12791277 let cx = cP._10
12801278 let gx = if (if (aT())
12811279 then true
12821280 else (cj == n))
12831281 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12841282 else true
12851283 if ((gx == gx))
12861284 then {
12871285 let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
12881286 if ((gr == gr))
12891287 then {
12901288 let gy = dt(-(cv), -(cw), 0)
12911289 let fJ = gy._1
12921290 let dk = gy._2
12931291 let fK = dx(ds, dk)
12941292 if ((fK == fK))
12951293 then (cx ++ fJ)
12961294 else throw("Strict value is not equal to itself.")
12971295 }
12981296 else throw("Strict value is not equal to itself.")
12991297 }
13001298 else throw("Strict value is not equal to itself.")
13011299 }
13021300 else throw("Strict value is not equal to itself.")
13031301 }
13041302 else throw("Strict value is not equal to itself.")
13051303 }
13061304 else throw("Strict value is not equal to itself.")
13071305 }
13081306
13091307
13101308
13111309 @Callable(dL)
13121310 func unstakeAndGetNoLess (gl,gz,gu) = {
13131311 let gc = if (aT())
13141312 then true
13151313 else (bg == n)
13161314 let eH = [if (!(gc))
13171315 then true
13181316 else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
13191317 then true
13201318 else throw("no payments are expected")]
13211319 if ((eH == eH))
13221320 then {
13231321 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
13241322 if ((ds == ds))
13251323 then {
13261324 let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
13271325 if ((gm == gm))
13281326 then {
13291327 let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
13301328 let cv = cP._1
13311329 let cw = cP._2
13321330 let cx = cP._10
13331331 let gA = [if ((cv >= gz))
13341332 then true
13351333 else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
13361334 then true
13371335 else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
13381336 if ((gA == gA))
13391337 then {
13401338 let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
13411339 if ((gr == gr))
13421340 then {
13431341 let gB = dt(-(cv), -(cw), 0)
13441342 let fJ = gB._1
13451343 let dk = gB._2
13461344 let fK = dx(ds, dk)
13471345 if ((fK == fK))
13481346 then (cx ++ fJ)
13491347 else throw("Strict value is not equal to itself.")
13501348 }
13511349 else throw("Strict value is not equal to itself.")
13521350 }
13531351 else throw("Strict value is not equal to itself.")
13541352 }
13551353 else throw("Strict value is not equal to itself.")
13561354 }
13571355 else throw("Strict value is not equal to itself.")
13581356 }
13591357 else throw("Strict value is not equal to itself.")
13601358 }
13611359
13621360
13631361
13641362 @Callable(dL)
13651363 func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
13661364 then throw("permissions denied")
13671365 else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
13681366
13691367
13701368
13711369 @Callable(dL)
13721370 func refreshKLp () = {
13731371 let gE = valueOrElse(getInteger(ak), 0)
13741372 let gF = if (((height - gE) >= an))
13751373 then unit
13761374 else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
13771375 if ((gF == gF))
13781376 then {
13791377 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
13801378 let gG = dt(0, 0, 0)
13811379 let gH = gG._1
13821380 let dk = gG._2
13831381 let dw = if ((dE != dk))
13841382 then gH
13851383 else aL("nothing to refresh")
13861384 $Tuple2(dw, toString(dk))
13871385 }
13881386 else throw("Strict value is not equal to itself.")
13891387 }
13901388
13911389
13921390
13931391 @Callable(dL)
13941392 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13951393
13961394
13971395
13981396 @Callable(dL)
13991397 func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
14001398
14011399
14021400
14031401 @Callable(dL)
14041402 func calcPricesWrapperREADONLY (bN,bO,bS) = {
14051403 let cb = bR(bN, bO, bS)
14061404 $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
14071405 }
14081406
14091407
14101408
14111409 @Callable(dL)
14121410 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14131411
14141412
14151413
14161414 @Callable(dL)
14171415 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
14181416
14191417
14201418
14211419 @Callable(dL)
14221420 func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
14231421
14241422
14251423
14261424 @Callable(dL)
14271425 func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
14281426
14291427
14301428
14311429 @Callable(dL)
14321430 func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
14331431 let cP = cc(cd, ce, cf, addressFromStringValue(ab))
14341432 $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
14351433 }
14361434
14371435
14381436
14391437 @Callable(dL)
14401438 func statsREADONLY () = {
14411439 let bT = aV()
14421440 let cg = fromBase58String(bT[q])
14431441 let gI = bT[r]
14441442 let gJ = bT[s]
14451443 let cI = bT[v]
14461444 let cJ = bT[w]
14471445 let bU = parseIntValue(bT[t])
14481446 let bV = parseIntValue(bT[u])
14491447 let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
14501448 let gL = bE(gI)
14511449 let gM = bE(gJ)
14521450 let gN = if ((gK == 0))
14531451 then [e, e, e]
14541452 else bR(gL, gM, gK)
14551453 let cq = 0
14561454 let gO = H(gN[1], b)
14571455 let gP = H(gN[2], b)
14581456 let gQ = value(getInteger(aO, ay(toString(this))))
14591457 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
14601458 }
14611459
14621460
14631461
14641462 @Callable(dL)
14651463 func evaluatePutByAmountAssetREADONLY (cA) = {
14661464 let bT = aV()
14671465 let cg = fromBase58String(bT[q])
14681466 let cG = bT[r]
14691467 let ch = fromBase58String(cG)
14701468 let cH = bT[s]
14711469 let ci = fromBase58String(cH)
14721470 let bU = parseIntValue(bT[t])
14731471 let bV = parseIntValue(bT[u])
14741472 let cj = bT[p]
14751473 let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
14761474 let gL = bE(cG)
14771475 let gM = bE(cH)
14781476 let bP = D(gL, bU)
14791477 let bQ = D(gM, bV)
14801478 let cp = if ((gK == 0))
14811479 then e
14821480 else bG(bQ, bP)
14831481 let cM = D(cA, bU)
14841482 let cN = fraction(cM, cp, d)
14851483 let cC = H(cN, bV)
14861484 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
14871485 let cX = dR._1
14881486 let gR = dR._3
14891487 let cl = dR._4
14901488 let cn = dR._5
14911489 let ck = dR._6
14921490 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14931491 }
14941492
14951493
14961494
14971495 @Callable(dL)
14981496 func evaluatePutByPriceAssetREADONLY (cC) = {
14991497 let bT = aV()
15001498 let cg = fromBase58String(bT[q])
15011499 let cG = bT[r]
15021500 let ch = fromBase58String(cG)
15031501 let cH = bT[s]
15041502 let ci = fromBase58String(cH)
15051503 let bU = parseIntValue(bT[t])
15061504 let bV = parseIntValue(bT[u])
15071505 let cj = bT[p]
15081506 let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
15091507 let gS = bE(cG)
15101508 let gT = bE(cH)
15111509 let gU = D(gS, bU)
15121510 let gV = D(gT, bV)
15131511 let cp = if ((gK == 0))
15141512 then e
15151513 else bG(gV, gU)
15161514 let cN = D(cC, bV)
15171515 let cM = fraction(cN, d, cp)
15181516 let cA = H(cM, bU)
15191517 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
15201518 let cX = dR._1
15211519 let gR = dR._3
15221520 let cl = dR._4
15231521 let cn = dR._5
15241522 let ck = dR._6
15251523 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
15261524 }
15271525
15281526
15291527
15301528 @Callable(dL)
15311529 func evaluateGetREADONLY (gW,gX) = {
15321530 let cP = cc("", gW, gX, this)
15331531 let cv = cP._1
15341532 let cw = cP._2
15351533 let cl = cP._5
15361534 let cn = cP._6
15371535 let ck = cP._7
15381536 let cq = cP._8
15391537 let cj = parseIntValue(cP._9)
15401538 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
15411539 }
15421540
15431541
15441542 @Verifier(gY)
15451543 func gZ () = {
15461544 let ha = {
15471545 let dW = eZ()
15481546 if ($isInstanceOf(dW, "ByteVector"))
15491547 then {
15501548 let fd = dW
15511549 fd
15521550 }
15531551 else if ($isInstanceOf(dW, "Unit"))
15541552 then gY.senderPublicKey
15551553 else throw("Match error")
15561554 }
15571555 let dW = gY
15581556 if ($isInstanceOf(dW, "Order"))
15591557 then {
15601558 let dA = dW
15611559 let hb = aU()
15621560 let hc = dz(dA)
15631561 let aD = hc._1
15641562 let aE = hc._2
15651563 let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
15661564 let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
15671565 if (if (if (aD)
15681566 then aF
15691567 else false)
15701568 then aG
15711569 else false)
15721570 then true
15731571 else aC(aD, aE, aF, aG)
15741572 }
15751573 else if ($isInstanceOf(dW, "SetScriptTransaction"))
15761574 then {
15771575 let fa = dW
15781576 if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15791577 then true
15801578 else {
15811579 let hd = blake2b256(value(fa.script))
15821580 let he = fromBase64String(value(getString(aO, aA())))
15831581 let hf = scriptHash(this)
15841582 if ((he == hd))
15851583 then (hf != hd)
15861584 else false
15871585 }
15881586 }
15891587 else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15901588 }
15911589

github/deemru/w8io/3ef1775 
320.15 ms