tx · 2NTwFwKNhbHq1UWMjeUmmVFghbW2nwpxYGW888AyBRGu

3NCUrmBwKvfQDkfTg1gL8BPKZid8fC4YDx3:  -0.02800000 Waves

2022.10.14 09:18 [2271654] smart account 3NCUrmBwKvfQDkfTg1gL8BPKZid8fC4YDx3 > SELF 0.00000000 Waves

{ "type": 13, "id": "2NTwFwKNhbHq1UWMjeUmmVFghbW2nwpxYGW888AyBRGu", "fee": 2800000, "feeAssetId": null, "timestamp": 1665728382300, "version": 1, "sender": "3NCUrmBwKvfQDkfTg1gL8BPKZid8fC4YDx3", "senderPublicKey": "DnbhDz6GvchfLCy83fxyPKD7SoAmXD6DrJ5ubi3LXtgM", "proofs": [ "kQNn5GRx1aiu8ZRRMmqKFH7v8F67MZokqsxo9c5ANcD54KhpgsJKHZjKJkG6KzYTY1AmuWizGEWyz8QY6TpZT2u" ], "script": "base64:BgKOJwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgUKAwgBARIECgIIARIAEgQKAgEBEgMKAQESBAoCCAgSABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc0ODQ3NjUwIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCINJHQwMjIxNjcyMjM0NSILcG9vbEFkZHJlc3MiDWFtb3VudEFzc2V0SWQiE2Ftb3VudEFzc2V0RGVjaW1hbHMiEnByaWNlQXNzZXREZWNpbWFscyIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI2NzUyMjk2OCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMjk3MjIzMTIxIhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzMjQzMjMzMDIiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCINJHQwMjUyNTIyNTQxMyIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjY0ODAyNjUzMCILdG90YWxBbW91bnQiDSR0MDI2NTM0MjY3NjAiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciCGN1clByWDE4IgFyIg5zdW1PZkdldEFzc2V0cyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgJwZCICcGsiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52IgttYXhTbGlwcGFnZSIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMxMTAxMzEyMjgiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMTk1NDMyMDg5Ig11bnN0YWtlQW1vdW50Ig1pc0dldERpc2FibGVkIg0kdDAzMjY0NTMyNzkyIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDMzNDQzMzM1ODEiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDWNoZWNrUGF5bWVudHMiCnVuc3Rha2VJbnYiD2NoZWNrUG9vbFN0YXR1cyILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiDXBvb2xMUEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoYQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFLAUwBTQkAawMFAUsFAUwFAU0BAU4BAUgDCQC/AgIFAWUFAUgJAL4CAQUBSAUBSAEBTwACEyVzX19mYWN0b3J5Q29udHJhY3QBAVAAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUgACESVzJXNfX3ByaWNlX19sYXN0AQFTAgFUAVUJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFUCQDMCAIJAKQDAQUBVQUDbmlsBQFqAQFWAgFXAVgJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFXAgJfXwUBWAEBWQIBVwFYCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBVwICX18FAVgBAVoAAg8lc19fYW1vdW50QXNzZXQBAmFhAAIOJXNfX3ByaWNlQXNzZXQAAmFiAgclc19fZmVlAAJhYwkAawMABQUBYgCQTgACYWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWIFAmFjAQJhZQACESVzX19mYWN0b3J5Q29uZmlnAQJhZgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWcBAmFoCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFoAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYWkCAmFqAmFrCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhagICX18FAmFrAghfX2NvbmZpZwECYWwBAmFtCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFtAQJhbgACDCVzX19zaHV0ZG93bgECYW8BAmFwCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXABAmFxAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFyAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXMDAmF0AmF1AmF2CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhdAINIHNlbmRlclZhbGlkPQkApQMBBQJhdQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYXYBAmF3AgJheAJheQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF4BQJheQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheAkAzAgCAgEuCQDMCAIFAmF5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmF6AgJheAJheQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF4BQJheQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheAkAzAgCAgEuCQDMCAIFAmF5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFBAQJhQgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhQgUDbmlsAgEgAAJhQwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF3AgUEdGhpcwkBAU8AAAJhRAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF3AgUCYUMFAmFyAQJhRQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUMJAQJhbgAHAQJhRgAJANkEAQkBAmF3AgUCYUMJAQJhZgABAmFHAAQCYUgJAQJhdwIFBHRoaXMJAQFaAAQCYUkJAQJhdwIFBHRoaXMJAQJhYQAEAmFrCQECYXoCBQJhQwkBAmFsAQUCYUkEAmFqCQECYXoCBQJhQwkBAmFsAQUCYUgJALUJAgkBAmF3AgUCYUMJAQJhaQIJAKQDAQUCYWoJAKQDAQUCYWsFAWoBAmFKAQJhSwMJAAACBQJhSwUBaQUEdW5pdAkA2QQBBQJhSwECYUwBAmFLAwkAAAIFAmFLBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFLAQJhTQECYU4JAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhTgUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFOBQFwCQDZBAEJAJEDAgUCYU4FAXEJAQJhSgEJAJEDAgUCYU4FAXIJAQJhSgEJAJEDAgUCYU4FAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTgUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFOBQF1AAJhTwkBAmFNAQkBAmFHAAACYVAFAmFPAAJhUQgFAmFQAl8xAAJhUggFAmFQAl8yAAJhUwgFAmFQAl8zAAJhVAgFAmFQAl80AAJhVQgFAmFQAl81AAJhVggFAmFQAl82AAJhVwgFAmFQAl83AQJhWAAJALUJAgkBAmF3AgUCYUMJAQJhZQAFAWoAAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYVgABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJhWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFYAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmEKAmJiAmJjAmJkAmJlAmJmAmJnAmJoAmJpAmJqAmJrCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiYgkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBBQJiaAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoJAMwIAgkApAMBBQJiawUDbmlsBQFqAQJibAYCYm0CYm4CYm8CYmUCYmgCYmkJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJibQkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkFA25pbAUBagECYnABAmJxAwkAAAIFAmJxAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJicQECYnICAmJzAmJ0CQC8AgMFAmJzBQFkBQJidAECYnUEAmJ2AmJ3AmJ4AmJ5BAJiegkBAUQCBQJieAUCYnYEAmJBCQEBRAIFAmJ5BQJidwkBAmJyAgUCYkEFAmJ6AQJiQgMCYngCYnkCYkMEAmJECQECYUcABAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF0BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF1BAJiRwkBAmJ1BAUCYkUFAmJGBQJieAUCYnkEAmJ0CQEBRAIFAmJ4BQJiRQQCYnMJAQFEAgUCYnkFAmJGBAJiSAkBAUQCBQJiQwUBYgQCYkkJAQJicgIFAmJ0BQJiSAQCYkoJAQJicgIFAmJzBQJiSAkAzAgCBQJiRwkAzAgCBQJiSQkAzAgCBQJiSgUDbmlsAQJiSwMCYngCYnkCYkMEAmJMCQECYkIDBQJieAUCYnkFAmJDCQDMCAIJAQFHAgkAkQMCBQJiTAAABQFiCQDMCAIJAQFHAgkAkQMCBQJiTAABBQFiCQDMCAIJAQFHAgkAkQMCBQJiTAACBQFiBQNuaWwBAmJNBAJiTgJiTwJiUAFXBAJiRAkBAmFHAAQCYlEJAJEDAgUCYkQFAXEEAmJSCQCRAwIFAmJEBQFyBAJiUwkAkQMCBQJiRAUBcwQCYnYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdAQCYncJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdQQCYlQJAJEDAgUCYkQFAXAEAmJVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlEJAKwCAgkArAICAgZBc3NldCAFAmJRAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJRBQJiTwkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCYlYJAQJicAEFAmJSBAJiVwkBAUQCBQJiVgUCYnYEAmJYCQECYnABBQJiUwQCYlkJAQFEAgUCYlgFAmJ3BAJiWgkBAmJyAgUCYlkFAmJXBAJjYQkBAUcCBQJiWgUBYgQCY2IJAQFEAgUCYlAFAWIEAmNjCQEBRAIFAmJVBQFiBAJjZAkAvAIDBQJiVwUCY2IFAmNjBAJjZQkAvAIDBQJiWQUCY2IFAmNjBAJjZgkBAUcCBQJjZAUCYnYEAmNnCQEBRwIFAmNlBQJidwQCY2gDCQAAAgUCYk4CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVcFAmNmAwkAAAIFAmJSAgVXQVZFUwUEdW5pdAkA2QQBBQJiUgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFXBQJjZwMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCCQClCAEFAVcFAmJOCQECYmwGBQJjZgUCY2cFAmJQBQJjYQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVIABQJjYQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYQUDbmlsCQCcCgoFAmNmBQJjZwUCYlIFAmJTBQJiVgUCYlgFAmJVBQJiWgUCYlQFAmNoAQJjaQkCYk4CY2oCY2sCY2wCY20CY24BVwJjbwJjcAQCYkQJAQJhRwAEAmJRCQDZBAEJAJEDAgUCYkQFAXEEAmNxCQCRAwIFAmJEBQFyBAJjcgkAkQMCBQJiRAUBcwQCY3MJAJEDAgUCYkQFAXYEAmN0CQCRAwIFAmJEBQF3BAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF0BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF1BAJiVAkAkQMCBQJiRAUBcAQCYlUICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlEJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjdQkA2AQBCQELdmFsdWVPckVsc2UCBQJjbAkA2QQBAgVXQVZFUwQCY3YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY24JANkEAQIFV0FWRVMDAwkBAiE9AgUCY3EFAmN1BgkBAiE9AgUCY3IFAmN2CQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCYlYDBQJjbwkBAmJwAQUCY3EJAGUCCQECYnABBQJjcQUCY2sEAmJYAwUCY28JAQJicAEFAmNyCQBlAgkBAmJwAQUCY3IFAmNtBAJjdwkBAUQCBQJjawUCYkUEAmN4CQEBRAIFAmNtBQJiRgQCY3kJAQJicgIFAmN4BQJjdwQCYlcJAQFEAgUCYlYFAmJFBAJiWQkBAUQCBQJiWAUCYkYEAmN6AwkAAAIFAmJVAAAEAmJaBQFlBAJjQQUBZQQCYkgJAHYGCQC5AgIFAmN3BQJjeAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiSAUBYgkBAUcCBQJjdwUCYkUJAQFHAgUCY3gFAmJGCQECYnICCQC3AgIFAmJZBQJjeAkAtwICBQJiVwUCY3cFAmNBBAJiWgkBAmJyAgUCYlkFAmJXBAJjQQkAvAIDCQEBTgEJALgCAgUCYloFAmN5BQFkBQJiWgQCY0IJAQFEAgUCY2oFAWIDAwkBAiE9AgUCYloFAWUJAL8CAgUCY0EFAmNCBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjQQIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNCBAJjYwkBAUQCBQJiVQUBYgQCY0MJALwCAwUCY3cFAmJaBQFkBAJjRAkAvAIDBQJjeAUBZAUCYloEAmNFAwkAvwICBQJjQwUCY3gJAJQKAgUCY0QFAmN4CQCUCgIFAmN3BQJjQwQCY0YIBQJjRQJfMQQCY0cIBQJjRQJfMgQCYkgJALwCAwUCY2MFAmNHBQJiWQkAlwoFCQEBRwIFAmJIBQFiCQEBRwIFAmNGBQJiRQkBAUcCBQJjRwUCYkYFAmJaBQJjQQQCY0gIBQJjegJfMQQCY0kIBQJjegJfMgQCY0oIBQJjegJfMwQCY2EJAQFHAggFAmN6Al80BQFiBAJjSwkBAUcCCAUCY3oCXzUFAWIDCQBnAgAABQJjSAkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY0wDCQEBIQEFAmNwAAAFAmNIBAJjTQkAZQIFAmNrBQJjSQQCY04JAGUCBQJjbQUCY0oEAmNPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgAFAmNhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAgUBVwUCYk4JAQJiYQoFAmNJBQJjSgUCY0wFAmNhBQJjagUCY0sFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNNBQJjTgUDbmlsCQCfCg0FAmNIBQJjTAUCY2EFAmJWBQJiWAUCYlUFAmJRBQJiVAUCY08FAmNNBQJjTgUCY2wFAmNuAQJjUAECY1EEAmJECQECYUcABAJjUgkAkQMCBQJiRAUBcgQCY1MJAJEDAgUCYkQFAXMEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXAEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXQEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXUEAmNUCQECYnABBQJjUgQCY1UJAQJicAEFAmNTBAJiWgMJAAACCAUCY1EJb3JkZXJUeXBlBQNCdXkJAQJidQQFAmJFBQJiRgkAZAIFAmNUCAUCY1EGYW1vdW50BQJjVQkBAmJ1BAUCYkUFAmJGCQBlAgUCY1QIBQJjUQZhbW91bnQFAmNVBAJjYQkBAUcCBQJiWgUBYgMDAwkBAmFFAAYJAAACBQJiVAUBbQYJAAACBQJiVAUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmNWCAgFAmNRCWFzc2V0UGFpcgthbW91bnRBc3NldAQCY1cDCQAAAgUCY1YFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNWBAJjWAgIBQJjUQlhc3NldFBhaXIKcHJpY2VBc3NldAQCY1kDCQAAAgUCY1gFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNYAwMJAQIhPQIFAmNXBQJjUgYJAQIhPQIFAmNZBQJjUwkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmNaCAUCY1EFcHJpY2UEAmRhCQBrAwUBYgUCYkYFAmJFBAJkYgkBAUoDBQJjWgUBYgUCZGEEAmRjAwkAAAIIBQJjUQlvcmRlclR5cGUFA0J1eQkAZwIFAmNhBQJkYgkAZwIFAmRiBQJjYQYBAmRkAQJkZQMJAQIhPQIJAJADAQgFAmRlCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZGYJAQV2YWx1ZQEJAJEDAggFAmRlCHBheW1lbnRzAAAEAmJPCQEFdmFsdWUBCAUCZGYHYXNzZXRJZAQCZGcIBQJkZgZhbW91bnQEAmN6CQECYk0ECQDYBAEIBQJkZQ10cmFuc2FjdGlvbklkCQDYBAEFAmJPBQJkZwgFAmRlBmNhbGxlcgQCY2YIBQJjegJfMQQCY2cIBQJjegJfMgQCYlQJAQ1wYXJzZUludFZhbHVlAQgFAmN6Al85BAJjaAgFAmN6A18xMAMDCQECYUUABgkAAAIFAmJUBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVAkAlwoFBQJjZgUCY2cFAmRnBQJiTwUCY2gBAmRoAwJkZQJjagJjcAMJAQIhPQIJAJADAQgFAmRlCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkaQkBBXZhbHVlAQkAkQMCCAUCZGUIcGF5bWVudHMAAAQCZGoJAQV2YWx1ZQEJAJEDAggFAmRlCHBheW1lbnRzAAEEAmRrCQECY2kJCQDYBAEIBQJkZQ10cmFuc2FjdGlvbklkBQJjaggFAmRpBmFtb3VudAgFAmRpB2Fzc2V0SWQIBQJkagZhbW91bnQIBQJkagdhc3NldElkCQClCAEIBQJkZQZjYWxsZXIHBQJjcAQCYlQJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl84AwMDCQECYUUABgkAAAIFAmJUBQFsBgkAAAIFAmJUBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVAUCZGsBAmRsAQJkbQQCZG4JAPwHBAUCYUMCBGVtaXQJAMwIAgUCZG0FA25pbAUDbmlsAwkAAAIFAmRuBQJkbgQCZG8EAmRwBQJkbgMJAAECBQJkcAIHQWRkcmVzcwQCZHEFAmRwCQD8BwQFAmRxAgRlbWl0CQDMCAIFAmRtBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkbwUCZG8FAmRtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkcgECZG0EAmRzCQBrAwUCZG0FAmFkBQFiCQCUCgIJAGUCBQJkbQUCZHMFAmRzAQJkdAQCZHUCZHYBVwFYBAJkdwkAAAIFAVgFBHVuaXQEAmR4CQECYU0BCQECYUcABAJkeQgFAmR4Al8xBAJiVAgFAmR4Al8yBAJiUQgFAmR4Al8zBAJkeggFAmR4Al80BAJjUwgFAmR4Al81BAJkQQgFAmR4Al82BAJkQggFAmR4Al83BAJkQwkBAmJwAQkBAmFMAQUCZHoEAmRECQECYnABCQECYUwBBQJjUwQCZEUDCQAAAgUCZHYFAmR6BgMJAAACBQJkdgUCY1MHCQECYUEBAg1pbnZhbGlkIGFzc2V0BAJkRgMFAmR3CQCUCgIFAmRDBQJkRAMFAmRFCQCUCgIJAGUCBQJkQwUCZHUFAmRECQCUCgIFAmRDCQBlAgUCZEQFAmR1BAJkRwgFAmRGAl8xBAJkSAgFAmRGAl8yBAJkSQMFAmRFCQCUCgIFAmR1AAAJAJQKAgAABQJkdQQCZEoIBQJkSQJfMQQCZEsIBQJkSQJfMgQCZEwICQECZHIBBQJkSgJfMQQCZE0ICQECZHIBBQJkSwJfMQQCZE4JAQJkcgEFAmR1BAJkTwgFAmROAl8xBAJkcwgFAmROAl8yBAJkUAkAZAIFAmRHBQJkTAQCZFEJAGQCBQJkSAUCZE0EAmNhCQEBRwIJAQJicgIJAQFEAgUCZFEFAmRCCQEBRAIFAmRQBQJkQQUBYgQCZFIDBQJkRQUCZEcFAmRIBAJkUwkAtgIBBQJkUgQCZFQJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiUQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRVAwkAvwICBQJkVAUBZgYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRVBQJkVQQCZFYJALYCAQUCZE8EAmRXCQCgAwEJALoCAgkAuQICBQJkVAkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBYwkAugICCQC5AgIFAmRWBQFjBQJkUwAIAAgFBERPV04FAWMFAWMEAmNPAwUCZHcFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVIABQJjYQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgIJAKUIAQkBBXZhbHVlAQUBVwkA2AQBCQEFdmFsdWUBBQFYCQECYmEKBQJkSgUCZEsFAmRXBQJjYQAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmRYCQBrAwUCZEgFAWIFAmRHBAJkWQkAawMFAmR1BQFiCQBkAgUCZFgFAWIEAmRaCQBlAgUCZHUFAmRZBAJlYQkAvAIDBQJkVAkAtgIBBQJkWgkAtgIBBQJkSAQCZWIJAKADAQkAvAIDCQC4AgIJALYCAQUCZFcFAmVhBQFjBQJlYQkAlgoEBQJkVwUCY08FAmRzBQJlYgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWMFAmVkAmRPAmR2AVcBWAQCZHcJAAACBQFYBQR1bml0BAJlZQkBAmFNAQkBAmFHAAQCZHkIBQJlZQJfMQQCYlQIBQJlZQJfMgQCYlEIBQJlZQJfMwQCZHoIBQJlZQJfNAQCY1MIBQJlZQJfNQQCZWYIBQJlZQJfNgQCZWcIBQJlZQJfNwQCZWgJAMwIAgMJAAACBQJkdgUCYlEGCQACAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVoBQJlaAQCZWkDCQAAAgUCZWQFAmR6BgMJAAACBQJlZAUCY1MHCQECYUEBAg1pbnZhbGlkIGFzc2V0BAJlagMFAmVpCQC2AgEJAQJicAEJAQJhTAEFAmR6CQC2AgEJAQJicAEJAQJhTAEFAmNTBAJlawkBAmJwAQkBAmFMAQUCZHoEAmVsCQECYnABCQECYUwBBQJjUwQCZW0DBQJlaQUCZWsFAmVsBAJlbgkAtgIBBQJlbQQCZFQJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiUQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVvCQC2AgEFAmRPBAJlcAkAoAMBCQC6AgIJALkCAgUCZWoJALgCAgUBYwkAdgYJALgCAgUBYwkAugICCQC5AgIFAmVvBQFjBQJkVAAIBQFoAAAACAUERE9XTgUBYwQCZXEJAQJkcgEFAmVwBAJlcggFAmVxAl8xBAJkcwgFAmVxAl8yBAJlcwMFAmVpCQCWCgQFAmVyAAAJAGUCBQJlawUCZXAFAmVsCQCWCgQAAAUCZXIFAmVrCQBlAgUCZWwFAmVwBAJldAgFAmVzAl8xBAJldQgFAmVzAl8yBAJldggFAmVzAl8zBAJldwgFAmVzAl80BAJleAkBAmJyAgkBAUQCBQJldwUCZWcJAQFEAgUCZXYFAmVmBAJjYQkBAUcCBQJleAUBYgQCY08DBQJkdwUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFXCQDYBAEJAQV2YWx1ZQEFAVgJAQJibAYFAmV0BQJldQUCZE8FAmNhBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgAFAmNhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNhBQNuaWwEAmV5CQECYk0EAgAJAQJhTAEFAmJRBQJkTwUEdGhpcwQCZXoJAGQCCAUCZXkCXzEIBQJleQJfMgQCZWIJAGsDCQBlAgUCZXIFAmV6BQFiBQJlegkAlgoEBQJlcgUCY08FAmRzBQJlYgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUEABAJkcAkAoggBCQEBUAADCQABAgUCZHACBlN0cmluZwQCZUIFAmRwCQDZBAEFAmVCAwkAAQIFAmRwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVDAAQCZHAJAKIIAQkBAVEAAwkAAQIFAmRwAgZTdHJpbmcEAmVCBQJkcAkA2QQBBQJlQgMJAAECBQJkcAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlRAECZGUEAmVFCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRwCQECZUEAAwkAAQIFAmRwAgpCeXRlVmVjdG9yBAJlRgUCZHADCQAAAggFAmRlD2NhbGxlclB1YmxpY0tleQUCZUYGBQJlRQMJAAECBQJkcAIEVW5pdAMJAAACCAUCZGUGY2FsbGVyBQR0aGlzBgUCZUUJAAIBAgtNYXRjaCBlcnJvchgCZGUBCnNldE1hbmFnZXIBAmVHBAJlSAkBAmVEAQUCZGUDCQAAAgUCZUgFAmVIBAJlSQkA2QQBBQJlRwMJAAACBQJlSQUCZUkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEABQJlRwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRlAQ5jb25maXJtTWFuYWdlcgAEAmVKCQECZUMABAJlSwMJAQlpc0RlZmluZWQBBQJlSgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUsFAmVLBAJlTAMJAAACCAUCZGUPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlSgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUwFAmVMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFQAAkA2AQBCQEFdmFsdWUBBQJlSgkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZQEDcHV0AgJjagJlTQMJAGYCAAAFAmNqCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRrCQECZGgDBQJkZQUCY2oGBAJjTAgFAmRrAl8yBAJiUQgFAmRrAl83BAJjaAgFAmRrAl85BAJjTQgFAmRrA18xMAQCY04IBQJkawNfMTEEAmVOCAUCZGsDXzEyBAJlTwgFAmRrA18xMwQCZG4JAPwHBAUCYUMCBGVtaXQJAMwIAgUCY0wFA25pbAUDbmlsAwkAAAIFAmRuBQJkbgQCZG8EAmRwBQJkbgMJAAECBQJkcAIHQWRkcmVzcwQCZHEFAmRwCQD8BwQFAmRxAgRlbWl0CQDMCAIFAmNMBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkbwUCZG8EAmVQAwkAZgIFAmNNAAAJAPwHBAUCYVoCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlTgUCY00FA25pbAUDbmlsAwkAAAIFAmVQBQJlUAQCZVEDCQBmAgUCY04AAAkA/AcEBQJhWgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVPBQJjTgUDbmlsBQNuaWwDCQAAAgUCZVEFAmVRBAJlUgMFAmVNBAJlUwkA/AcEBQJhWQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlEFAmNMBQNuaWwDCQAAAgUCZVMFAmVTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRlBmNhbGxlcgUCY0wFAmJRBQNuaWwJAM4IAgUCY2gFAmVSCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRlAQpwdXRGb3JGcmVlAQJlVAMJAGYCAAAFAmVUCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRrCQECZGgDBQJkZQUCZVQHCAUCZGsCXzkCZGUBCXB1dE9uZVRrbgICZVUCZVYEAmVXAwMJAQJhRQAGCQAAAgUCYVIFAWwGCQAAAgUCYVIFAW4EAmVoCQDMCAIDCQEBIQEFAmVXBgkBAmFBAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGUIcGF5bWVudHMAAQYJAQJhQQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVoBQJlaAQCZVgJAJEDAggFAmRlCHBheW1lbnRzAAAEAmR2CAUCZVgHYXNzZXRJZAQCZHUIBQJlWAZhbW91bnQEAVcIBQJkZQZjYWxsZXIEAVgIBQJkZQ10cmFuc2FjdGlvbklkBAJlWQkBAmR0BAUCZHUFAmR2BQFXBQFYBAJlWggFAmVZAl8xBAJjTwgFAmVZAl8yBAJkcwgFAmVZAl8zBAJlYggFAmVZAl80BAJmYQMDCQBmAgUCZVUAAAkAZgIFAmVVBQJlWgcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVVBQNuaWwCAAUCZVoEAmRuCQECZGwBBQJmYQMJAAACBQJkbgUCZG4EAmVSAwUCZVYEAmZiCQD8BwQFAmFZAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhUwUCZmEFA25pbAMJAAACBQJmYgUCZmIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGUGY2FsbGVyBQJmYQUCYVMFA25pbAQCZmMDCQBmAgUCZHMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRAUCZHMFAmR2BQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY08FAmVSBQJmYwUCZmEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGUBEXB1dE9uZVRrblJFQURPTkxZAgJkdgJkdQQCZmQJAQJkdAQFAmR1CQECYUoBBQJkdgUEdW5pdAUEdW5pdAQCZVoIBQJmZAJfMQQCY08IBQJmZAJfMgQCZHMIBQJmZAJfMwQCZWIIBQJmZAJfNAkAlAoCBQNuaWwJAJUKAwUCZVoFAmRzBQJlYgJkZQEJZ2V0T25lVGtuAwJlZAJlVQJmZQQCZmYDCQECYUUABgkAAAIFAmFSBQFuBAJlaAkAzAgCAwkBASEBBQJmZgYJAQJhQQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRlCHBheW1lbnRzAAEGCQECYUEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlaAUCZWgEAmVYCQCRAwIIBQJkZQhwYXltZW50cwAABAJkdggFAmVYB2Fzc2V0SWQEAmRPCAUCZVgGYW1vdW50BAFXCAUCZGUGY2FsbGVyBAFYCAUCZGUNdHJhbnNhY3Rpb25JZAQCZmcJAQJlYwUJAQJhSgEFAmVkBQJkTwUCZHYFAVcFAVgEAmZoCAUCZmcCXzEEAmNPCAUCZmcCXzIEAmRzCAUCZmcCXzMEAmViCAUCZmcCXzQEAmRtAwMJAGYCBQJlVQAACQBmAgUCZVUFAmZoBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVUFA25pbAIABQJmaAQCZmkJAPwHBAUCYUMCBGJ1cm4JAMwIAgUCZE8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHYFAmRPBQNuaWwDCQAAAgUCZmkFAmZpBAJmagkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFXBQJkbQkBAmFKAQUCZWQFA25pbAQCZmMDCQBmAgUCZHMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRAUCZHMFAmR2BQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY08FAmZqBQJmYwUCZG0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGUBEWdldE9uZVRrblJFQURPTkxZAgJlZAJkTwQCZmsJAQJlYwUJAQJhSgEFAmVkBQJkTwUCYVMFBHVuaXQFBHVuaXQEAmZoCAUCZmsCXzEEAmNPCAUCZmsCXzIEAmRzCAUCZmsCXzMEAmViCAUCZmsCXzQJAJQKAgUDbmlsCQCVCgMFAmZoBQJkcwUCZWICZGUBA2dldAAEAmN6CQECZGQBBQJkZQQCZmwIBQJjegJfMQQCY2cIBQJjegJfMgQCZGcIBQJjegJfMwQCYk8IBQJjegJfNAQCY2gIBQJjegJfNQQCZm0JAPwHBAUCYUMCBGJ1cm4JAMwIAgUCZGcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYk8FAmRnBQNuaWwDCQAAAgUCZm0FAmZtBQJjaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZQEJZ2V0Tm9MZXNzAgJmbgJmbwQCY3oJAQJkZAEFAmRlBAJjZggFAmN6Al8xBAJjZwgFAmN6Al8yBAJkZwgFAmN6Al8zBAJiTwgFAmN6Al80BAJjaAgFAmN6Al81AwkAZgIFAmZuBQJjZgkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY2YCAyA8IAkApAMBBQJmbgMJAGYCBQJmbwUCY2cJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjZwIDIDwgCQCkAwEFAmZvBAJmbQkA/AcEBQJhQwIEYnVybgkAzAgCBQJkZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTwUCZGcFA25pbAMJAAACBQJmbQUCZm0FAmNoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRlAQ11bnN0YWtlQW5kR2V0AQJkbQQCZnADCQECIT0CCQCQAwEIBQJkZQhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmcAUCZnAEAmJECQECYUcABAJiUQkA2QQBCQCRAwIFAmJEBQFxBAJmcQkA/AcEBQJhWQIHdW5zdGFrZQkAzAgCCQDYBAEFAmJRCQDMCAIFAmRtBQNuaWwFA25pbAMJAAACBQJmcQUCZnEEAmN6CQECYk0ECQDYBAEIBQJkZQ10cmFuc2FjdGlvbklkCQDYBAEFAmJRBQJkbQgFAmRlBmNhbGxlcgQCYlQJAQ1wYXJzZUludFZhbHVlAQgFAmN6Al85BAJjaAgFAmN6A18xMAQCZnIDAwkBAmFFAAYJAAACBQJiVAUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlQGAwkAAAIFAmZyBQJmcgQCZm0JAPwHBAUCYUMCBGJ1cm4JAMwIAgUCZG0FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlEFAmRtBQNuaWwDCQAAAgUCZm0FAmZtBQJjaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZQEIYWN0aXZhdGUCAmZzAmZ0AwkBAiE9AgkApQgBCAUCZGUGY2FsbGVyCQClCAEFAmFDCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQJmcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJmdAUDbmlsAgdzdWNjZXNzAmRlARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhRwACZGUBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJxCQCUCgIFA25pbAkBAmJwAQUCYnECZGUBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ4AmJ5AmJDBAJiTAkBAmJCAwUCYngFAmJ5BQJiQwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJMAAAJAMwIAgkApgMBCQCRAwIFAmJMAAEJAMwIAgkApgMBCQCRAwIFAmJMAAIFA25pbAJkZQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRlARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkZQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJicwJidAkAlAoCBQNuaWwJAKYDAQkBAmJyAgkApwMBBQJicwkApwMBBQJidAJkZQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJOAmNqAmNrAmNsAmNtAmNuAVcCY28CY3AJAJQKAgUDbmlsCQECY2kJBQJiTgUCY2oFAmNrBQJjbAUCY20FAmNuBQFXBQJjbwUCY3ACZGUBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiTgJiTwJiUAFXBAJjegkBAmJNBAUCYk4FAmJPBQJiUAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBVwkAlAoCBQNuaWwJAJwKCggFAmN6Al8xCAUCY3oCXzIIBQJjegJfMwgFAmN6Al80CAUCY3oCXzUIBQJjegJfNggFAmN6Al83CQCmAwEIBQJjegJfOAgFAmN6Al85CAUCY3oDXzEwAmRlAQ1zdGF0c1JFQURPTkxZAAQCYkQJAQJhRwAEAmJRCQDZBAEJAJEDAgUCYkQFAXEEAmNSCQCRAwIFAmJEBQFyBAJjUwkAkQMCBQJiRAUBcwQCY3MJAJEDAgUCYkQFAXYEAmN0CQCRAwIFAmJEBQF3BAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF0BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF1BAJmdQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNUCQECYnABBQJjUgQCY1UJAQJicAEFAmNTBAJmdgMJAAACBQJmdQAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiQgMFAmNUBQJjVQUCZnUEAmNhAAAEAmZ3CQEBRwIJAJEDAgUCZnYAAQUBYgQCZngJAQFHAgkAkQMCBQJmdgACBQFiBAJmeQkBBXZhbHVlAQkAmggCBQJhQwkBAmFvAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1QJAMwIAgkApAMBBQJjVQkAzAgCCQCkAwEFAmZ1CQDMCAIJAKQDAQUCY2EJAMwIAgkApAMBBQJmdwkAzAgCCQCkAwEFAmZ4CQDMCAIJAKQDAQUCZnkFA25pbAUBagJkZQEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmNrBAJiRAkBAmFHAAQCYlEJANkEAQkAkQMCBQJiRAUBcQQCY3EJAJEDAgUCYkQFAXIEAmJSCQDZBAEFAmNxBAJjcgkAkQMCBQJiRAUBcwQCYlMJANkEAQUCY3IEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXQEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXUEAmJUCQCRAwIFAmJEBQFwBAJmdQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNUCQECYnABBQJjcQQCY1UJAQJicAEFAmNyBAJiegkBAUQCBQJjVAUCYkUEAmJBCQEBRAIFAmNVBQJiRgQCYloDCQAAAgUCZnUAAAUBZQkBAmJyAgUCYkEFAmJ6BAJjdwkBAUQCBQJjawUCYkUEAmN4CQC8AgMFAmN3BQJiWgUBZAQCY20JAQFHAgUCY3gFAmJGBAJkawkBAmNpCQIAAKDCHgUCY2sFAmJSBQJjbQUCYlMCAAYHBAJjSAgFAmRrAl8xBAJmeggFAmRrAl8zBAJiVggFAmRrAl80BAJiWAgFAmRrAl81BAJiVQgFAmRrAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSAkAzAgCCQCkAwEJAQFHAgUCYloFAWIJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJYCQDMCAIJAKQDAQUCYlUJAMwIAgUCYlQJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmNtBQNuaWwFAWoCZGUBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmNtBAJiRAkBAmFHAAQCYlEJANkEAQkAkQMCBQJiRAUBcQQCY3EJAJEDAgUCYkQFAXIEAmJSCQDZBAEFAmNxBAJjcgkAkQMCBQJiRAUBcwQCYlMJANkEAQUCY3IEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXQEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXUEAmJUCQCRAwIFAmJEBQFwBAJmdQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZBCQECYnABBQJjcQQCZkIJAQJicAEFAmNyBAJmQwkBAUQCBQJmQQUCYkUEAmZECQEBRAIFAmZCBQJiRgQCYloDCQAAAgUCZnUAAAUBZQkBAmJyAgUCZkQFAmZDBAJjeAkBAUQCBQJjbQUCYkYEAmN3CQC8AgMFAmN4BQFkBQJiWgQCY2sJAQFHAgUCY3cFAmJFBAJkawkBAmNpCQIAAKDCHgUCY2sFAmJSBQJjbQUCYlMCAAYHBAJjSAgFAmRrAl8xBAJmeggFAmRrAl8zBAJiVggFAmRrAl80BAJiWAgFAmRrAl81BAJiVQgFAmRrAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSAkAzAgCCQCkAwEJAQFHAgUCYloFAWIJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJYCQDMCAIJAKQDAQUCYlUJAMwIAgUCYlQJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmNtBQNuaWwFAWoCZGUBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmZFAmZGBAJjegkBAmJNBAIABQJmRQUCZkYFBHRoaXMEAmNmCAUCY3oCXzEEAmNnCAUCY3oCXzIEAmJWCAUCY3oCXzUEAmJYCAUCY3oCXzYEAmJVCAUCY3oCXzcEAmNhCAUCY3oCXzgEAmJUCQENcGFyc2VJbnRWYWx1ZQEIBQJjegJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNmCQDMCAIJAKQDAQUCY2cJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJYCQDMCAIJAKQDAQUCYlUJAMwIAgkApgMBBQJjYQkAzAgCCQCkAwEFAmJUBQNuaWwFAWoBAmZHAQJmSAAEAmZJBAJkcAkBAmVBAAMJAAECBQJkcAIKQnl0ZVZlY3RvcgQCZUYFAmRwBQJlRgMJAAECBQJkcAIEVW5pdAgFAmZHD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkcAUCZkcDCQABAgUCZHACBU9yZGVyBAJjUQUCZHAEAmZKCQECYUYABAJhdAkBAmNQAQUCY1EEAmF1CQD0AwMIBQJjUQlib2R5Qnl0ZXMJAJEDAggFAmNRBnByb29mcwAACAUCY1EPc2VuZGVyUHVibGljS2V5BAJhdgkA9AMDCAUCY1EJYm9keUJ5dGVzCQCRAwIIBQJjUQZwcm9vZnMAAQUCZkoDAwMFAmF0BQJhdQcFAmF2BwYJAQJhcwMFAmF0BQJhdQUCYXYDCQABAgUCZHACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlQgUCZHAEAmZLCQD2AwEJAQV2YWx1ZQEIBQJlQgZzY3JpcHQEAmZMCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUMJAQJhcQAEAmZNCQDxBwEFBHRoaXMDAwkAAAIFAmZMBQJmSwkBAiE9AgUCZk0FAmZLBwYJAPQDAwgFAmZHCWJvZHlCeXRlcwkAkQMCCAUCZkcGcHJvb2ZzAAAFAmZJCQD0AwMIBQJmRwlib2R5Qnl0ZXMJAJEDAggFAmZHBnByb29mcwAABQJmSW++K8U=", "chainId": 84, "height": 2271654, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7XaAM3M8NqX6bhUm6VmwKfhgoxLJjpwiUt6VzHEfac6C Next: 44k2WYdbWhXtXpu1GZ4ZnakAziq67Px4NxcjC4UhWtZT Diff:
OldNewDifferences
823823 if ((fi == fi))
824824 then {
825825 let fj = [ScriptTransfer(W, dm, aJ(ed))]
826- $Tuple2(fj, dm)
826+ let fc = if ((ds > 0))
827+ then [ScriptTransfer(aD, ds, dv)]
828+ else nil
829+ $Tuple2(((cO ++ fj) ++ fc), dm)
827830 }
828831 else throw("Strict value is not equal to itself.")
829832 }
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 (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((e > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O () = "%s__factoryContract"
7777
7878
7979 func P () = "%s__managerPublicKey"
8080
8181
8282 func Q () = "%s__pendingManagerPublicKey"
8383
8484
8585 func R () = "%s%s__price__last"
8686
8787
8888 func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
8989
9090
9191 func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
9292
9393
9494 func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9595
9696
9797 func Z () = "%s__amountAsset"
9898
9999
100100 func aa () = "%s__priceAsset"
101101
102102
103103 let ab = "%s__fee"
104104
105105 let ac = fraction(5, b, 10000)
106106
107107 let ad = valueOrElse(getInteger(this, ab), ac)
108108
109109 func ae () = "%s__factoryConfig"
110110
111111
112112 func af () = "%s%s__matcher__publicKey"
113113
114114
115115 func ag (ah) = (("%s%s%s__" + ah) + "__mappings__poolContract2LpAsset")
116116
117117
118118 func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
119119
120120
121121 func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
122122
123123
124124 func an () = "%s__shutdown"
125125
126126
127127 func ao (ap) = ("%s%s__poolWeight__" + ap)
128128
129129
130130 func aq () = "%s__allowedLpScriptHash"
131131
132132
133133 let ar = "%s__feeCollectorAddress"
134134
135135 func as (at,au,av) = throw(((((("order validation failed: orderValid=" + toString(at)) + " senderValid=") + toString(au)) + " matcherValid=") + toString(av)))
136136
137137
138138 func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " is not defined"], ""))
139139
140140
141141 func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " is not defined"], ""))
142142
143143
144144 func aA (aB) = throw(makeString(["lp.ride:", aB], " "))
145145
146146
147147 let aC = addressFromStringValue(aw(this, O()))
148148
149149 let aD = addressFromStringValue(aw(aC, ar))
150150
151151 func aE () = valueOrElse(getBoolean(aC, an()), false)
152152
153153
154154 func aF () = fromBase58String(aw(aC, af()))
155155
156156
157157 func aG () = {
158158 let aH = aw(this, Z())
159159 let aI = aw(this, aa())
160160 let ak = az(aC, al(aI))
161161 let aj = az(aC, al(aH))
162162 split(aw(aC, ai(toString(aj), toString(ak))), j)
163163 }
164164
165165
166166 func aJ (aK) = if ((aK == i))
167167 then unit
168168 else fromBase58String(aK)
169169
170170
171171 func aL (aK) = if ((aK == unit))
172172 then i
173173 else toBase58String(value(aK))
174174
175175
176176 func aM (aN) = $Tuple7(addressFromStringValue(aN[o]), parseIntValue(aN[p]), fromBase58String(aN[q]), aJ(aN[r]), aJ(aN[s]), parseIntValue(aN[t]), parseIntValue(aN[u]))
177177
178178
179179 let aO = aM(aG())
180180
181181 let aP = aO
182182
183183 let aQ = aP._1
184184
185185 let aR = aP._2
186186
187187 let aS = aP._3
188188
189189 let aT = aP._4
190190
191191 let aU = aP._5
192192
193193 let aV = aP._6
194194
195195 let aW = aP._7
196196
197197 func aX () = split(aw(aC, ae()), j)
198198
199199
200200 let aY = valueOrErrorMessage(addressFromString(aX()[B]), "incorrect staking address")
201201
202202 let aZ = valueOrErrorMessage(addressFromString(aX()[C]), "incorrect staking address")
203203
204204 func ba (bb,bc,bd,be,bf,bg,bh,bi,bj,bk) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk)], j)
205205
206206
207207 func bl (bm,bn,bo,be,bh,bi) = makeString(["%d%d%d%d%d%d", toString(bm), toString(bn), toString(bo), toString(be), toString(bh), toString(bi)], j)
208208
209209
210210 func bp (bq) = if ((bq == "WAVES"))
211211 then wavesBalance(this).available
212212 else assetBalance(this, fromBase58String(bq))
213213
214214
215215 func br (bs,bt) = fraction(bs, d, bt)
216216
217217
218218 func bu (bv,bw,bx,by) = {
219219 let bz = D(bx, bv)
220220 let bA = D(by, bw)
221221 br(bA, bz)
222222 }
223223
224224
225225 func bB (bx,by,bC) = {
226226 let bD = aG()
227227 let bE = parseIntValue(bD[t])
228228 let bF = parseIntValue(bD[u])
229229 let bG = bu(bE, bF, bx, by)
230230 let bt = D(bx, bE)
231231 let bs = D(by, bF)
232232 let bH = D(bC, b)
233233 let bI = br(bt, bH)
234234 let bJ = br(bs, bH)
235235 [bG, bI, bJ]
236236 }
237237
238238
239239 func bK (bx,by,bC) = {
240240 let bL = bB(bx, by, bC)
241241 [G(bL[0], b), G(bL[1], b), G(bL[2], b)]
242242 }
243243
244244
245245 func bM (bN,bO,bP,W) = {
246246 let bD = aG()
247247 let bQ = bD[q]
248248 let bR = bD[r]
249249 let bS = bD[s]
250250 let bv = parseIntValue(bD[t])
251251 let bw = parseIntValue(bD[u])
252252 let bT = bD[p]
253253 let bU = valueOrErrorMessage(assetInfo(fromBase58String(bQ)), (("Asset " + bQ) + " doesn't exist")).quantity
254254 if ((bQ != bO))
255255 then throw("Invalid asset passed.")
256256 else {
257257 let bV = bp(bR)
258258 let bW = D(bV, bv)
259259 let bX = bp(bS)
260260 let bY = D(bX, bw)
261261 let bZ = br(bY, bW)
262262 let ca = G(bZ, b)
263263 let cb = D(bP, b)
264264 let cc = D(bU, b)
265265 let cd = fraction(bW, cb, cc)
266266 let ce = fraction(bY, cb, cc)
267267 let cf = G(cd, bv)
268268 let cg = G(ce, bw)
269269 let ch = if ((bN == ""))
270270 then nil
271271 else [ScriptTransfer(W, cf, if ((bR == "WAVES"))
272272 then unit
273273 else fromBase58String(bR)), ScriptTransfer(W, cg, if ((bS == "WAVES"))
274274 then unit
275275 else fromBase58String(bS)), StringEntry(Y(toString(W), bN), bl(cf, cg, bP, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
276276 $Tuple10(cf, cg, bR, bS, bV, bX, bU, bZ, bT, ch)
277277 }
278278 }
279279
280280
281281 func ci (bN,cj,ck,cl,cm,cn,W,co,cp) = {
282282 let bD = aG()
283283 let bQ = fromBase58String(bD[q])
284284 let cq = bD[r]
285285 let cr = bD[s]
286286 let cs = bD[v]
287287 let ct = bD[w]
288288 let bE = parseIntValue(bD[t])
289289 let bF = parseIntValue(bD[u])
290290 let bT = bD[p]
291291 let bU = valueOrErrorMessage(assetInfo(bQ), (("Asset " + toBase58String(bQ)) + " doesn't exist")).quantity
292292 let cu = toBase58String(valueOrElse(cl, fromBase58String("WAVES")))
293293 let cv = toBase58String(valueOrElse(cn, fromBase58String("WAVES")))
294294 if (if ((cq != cu))
295295 then true
296296 else (cr != cv))
297297 then throw("Invalid amt or price asset passed.")
298298 else {
299299 let bV = if (co)
300300 then bp(cq)
301301 else (bp(cq) - ck)
302302 let bX = if (co)
303303 then bp(cr)
304304 else (bp(cr) - cm)
305305 let cw = D(ck, bE)
306306 let cx = D(cm, bF)
307307 let cy = br(cx, cw)
308308 let bW = D(bV, bE)
309309 let bY = D(bX, bF)
310310 let cz = if ((bU == 0))
311311 then {
312312 let bZ = e
313313 let cA = e
314314 let bH = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
315315 $Tuple5(G(bH, b), G(cw, bE), G(cx, bF), br((bY + cx), (bW + cw)), cA)
316316 }
317317 else {
318318 let bZ = br(bY, bW)
319319 let cA = fraction(N((bZ - cy)), d, bZ)
320320 let cB = D(cj, b)
321321 if (if ((bZ != e))
322322 then (cA > cB)
323323 else false)
324324 then throw(((("Price slippage " + toString(cA)) + " exceeded the passed limit of ") + toString(cB)))
325325 else {
326326 let cc = D(bU, b)
327327 let cC = fraction(cw, bZ, d)
328328 let cD = fraction(cx, d, bZ)
329329 let cE = if ((cC > cx))
330330 then $Tuple2(cD, cx)
331331 else $Tuple2(cw, cC)
332332 let cF = cE._1
333333 let cG = cE._2
334334 let bH = fraction(cc, cG, bY)
335335 $Tuple5(G(bH, b), G(cF, bE), G(cG, bF), bZ, cA)
336336 }
337337 }
338338 let cH = cz._1
339339 let cI = cz._2
340340 let cJ = cz._3
341341 let ca = G(cz._4, b)
342342 let cK = G(cz._5, b)
343343 if ((0 >= cH))
344344 then throw("Invalid calculations. LP calculated is less than zero.")
345345 else {
346346 let cL = if (!(cp))
347347 then 0
348348 else cH
349349 let cM = (ck - cI)
350350 let cN = (cm - cJ)
351351 let cO = [IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca), StringEntry(V(W, bN), ba(cI, cJ, cL, ca, cj, cK, height, lastBlock.timestamp, cM, cN))]
352352 $Tuple13(cH, cL, ca, bV, bX, bU, bQ, bT, cO, cM, cN, cl, cn)
353353 }
354354 }
355355 }
356356
357357
358358 func cP (cQ) = {
359359 let bD = aG()
360360 let cR = bD[r]
361361 let cS = bD[s]
362362 let bT = parseIntValue(bD[p])
363363 let bE = parseIntValue(bD[t])
364364 let bF = parseIntValue(bD[u])
365365 let cT = bp(cR)
366366 let cU = bp(cS)
367367 let bZ = if ((cQ.orderType == Buy))
368368 then bu(bE, bF, (cT + cQ.amount), cU)
369369 else bu(bE, bF, (cT - cQ.amount), cU)
370370 let ca = G(bZ, b)
371371 if (if (if (aE())
372372 then true
373373 else (bT == m))
374374 then true
375375 else (bT == n))
376376 then throw("Exchange operations disabled")
377377 else {
378378 let cV = cQ.assetPair.amountAsset
379379 let cW = if ((cV == unit))
380380 then "WAVES"
381381 else toBase58String(value(cV))
382382 let cX = cQ.assetPair.priceAsset
383383 let cY = if ((cX == unit))
384384 then "WAVES"
385385 else toBase58String(value(cX))
386386 if (if ((cW != cR))
387387 then true
388388 else (cY != cS))
389389 then throw("Wrong order assets.")
390390 else {
391391 let cZ = cQ.price
392392 let da = fraction(b, bF, bE)
393393 let db = J(cZ, b, da)
394394 let dc = if ((cQ.orderType == Buy))
395395 then (ca >= db)
396396 else (db >= ca)
397397 true
398398 }
399399 }
400400 }
401401
402402
403403 func dd (de) = if ((size(de.payments) != 1))
404404 then throw("exactly 1 payment is expected")
405405 else {
406406 let df = value(de.payments[0])
407407 let bO = value(df.assetId)
408408 let dg = df.amount
409409 let cz = bM(toBase58String(de.transactionId), toBase58String(bO), dg, de.caller)
410410 let cf = cz._1
411411 let cg = cz._2
412412 let bT = parseIntValue(cz._9)
413413 let ch = cz._10
414414 if (if (aE())
415415 then true
416416 else (bT == n))
417417 then throw(("Get operation is blocked by admin. Status = " + toString(bT)))
418418 else $Tuple5(cf, cg, dg, bO, ch)
419419 }
420420
421421
422422 func dh (de,cj,cp) = if ((size(de.payments) != 2))
423423 then throw("exactly 2 payments are expected")
424424 else {
425425 let di = value(de.payments[0])
426426 let dj = value(de.payments[1])
427427 let dk = ci(toBase58String(de.transactionId), cj, di.amount, di.assetId, dj.amount, dj.assetId, toString(de.caller), false, cp)
428428 let bT = parseIntValue(dk._8)
429429 if (if (if (aE())
430430 then true
431431 else (bT == l))
432432 then true
433433 else (bT == n))
434434 then throw(("Put operation is blocked by admin. Status = " + toString(bT)))
435435 else dk
436436 }
437437
438438
439439 func dl (dm) = {
440440 let dn = invoke(aC, "emit", [dm], nil)
441441 if ((dn == dn))
442442 then {
443443 let do = {
444444 let dp = dn
445445 if ($isInstanceOf(dp, "Address"))
446446 then {
447447 let dq = dp
448448 invoke(dq, "emit", [dm], nil)
449449 }
450450 else unit
451451 }
452452 if ((do == do))
453453 then dm
454454 else throw("Strict value is not equal to itself.")
455455 }
456456 else throw("Strict value is not equal to itself.")
457457 }
458458
459459
460460 func dr (dm) = {
461461 let ds = fraction(dm, ad, b)
462462 $Tuple2((dm - ds), ds)
463463 }
464464
465465
466466 func dt (du,dv,W,X) = {
467467 let dw = (X == unit)
468468 let dx = aM(aG())
469469 let dy = dx._1
470470 let bT = dx._2
471471 let bQ = dx._3
472472 let dz = dx._4
473473 let cS = dx._5
474474 let dA = dx._6
475475 let dB = dx._7
476476 let dC = bp(aL(dz))
477477 let dD = bp(aL(cS))
478478 let dE = if ((dv == dz))
479479 then true
480480 else if ((dv == cS))
481481 then false
482482 else aA("invalid asset")
483483 let dF = if (dw)
484484 then $Tuple2(dC, dD)
485485 else if (dE)
486486 then $Tuple2((dC - du), dD)
487487 else $Tuple2(dC, (dD - du))
488488 let dG = dF._1
489489 let dH = dF._2
490490 let dI = if (dE)
491491 then $Tuple2(du, 0)
492492 else $Tuple2(0, du)
493493 let dJ = dI._1
494494 let dK = dI._2
495495 let dL = dr(dJ)._1
496496 let dM = dr(dK)._1
497497 let dN = dr(du)
498498 let dO = dN._1
499499 let ds = dN._2
500500 let dP = (dG + dL)
501501 let dQ = (dH + dM)
502502 let ca = G(br(D(dQ, dB), D(dP, dA)), b)
503503 let dR = if (dE)
504504 then dG
505505 else dH
506506 let dS = toBigInt(dR)
507507 let dT = toBigInt(valueOrErrorMessage(assetInfo(bQ), (("asset " + toBase58String(bQ)) + " doesn't exist")).quantity)
508508 let dU = if ((dT > f))
509509 then true
510510 else throw("initial deposit requires all coins")
511511 if ((dU == dU))
512512 then {
513513 let dV = toBigInt(dO)
514514 let dW = toInt(((dT * (sqrtBigInt((c + ((dV * c) / dS)), 8, 8, DOWN) - c)) / c))
515515 let cO = if (dw)
516516 then nil
517517 else [IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca), StringEntry(V(toString(value(W)), toBase58String(value(X))), ba(dJ, dK, dW, ca, 0, 0, height, lastBlock.timestamp, 0, 0))]
518518 let dX = fraction(dH, b, dG)
519519 let dY = fraction(du, b, (dX + b))
520520 let dZ = (du - dY)
521521 let ea = fraction(dT, toBigInt(dZ), toBigInt(dH))
522522 let eb = toInt(fraction((toBigInt(dW) - ea), c, ea))
523523 $Tuple4(dW, cO, ds, eb)
524524 }
525525 else throw("Strict value is not equal to itself.")
526526 }
527527
528528
529529 func ec (ed,dO,dv,W,X) = {
530530 let dw = (X == unit)
531531 let ee = aM(aG())
532532 let dy = ee._1
533533 let bT = ee._2
534534 let bQ = ee._3
535535 let dz = ee._4
536536 let cS = ee._5
537537 let ef = ee._6
538538 let eg = ee._7
539539 let eh = [if ((dv == bQ))
540540 then true
541541 else throw("invalid lp asset")]
542542 if ((eh == eh))
543543 then {
544544 let ei = if ((ed == dz))
545545 then true
546546 else if ((ed == cS))
547547 then false
548548 else aA("invalid asset")
549549 let ej = if (ei)
550550 then toBigInt(bp(aL(dz)))
551551 else toBigInt(bp(aL(cS)))
552552 let ek = bp(aL(dz))
553553 let el = bp(aL(cS))
554554 let em = if (ei)
555555 then ek
556556 else el
557557 let en = toBigInt(em)
558558 let dT = toBigInt(valueOrErrorMessage(assetInfo(bQ), (("asset " + toBase58String(bQ)) + " doesn't exist")).quantity)
559559 let eo = toBigInt(dO)
560560 let ep = toInt(((ej * (c - pow((c - ((eo * c) / dT)), 8, h, 0, 8, DOWN))) / c))
561561 let eq = dr(ep)
562562 let er = eq._1
563563 let ds = eq._2
564564 let es = if (ei)
565565 then $Tuple4(er, 0, (ek - ep), el)
566566 else $Tuple4(0, er, ek, (el - ep))
567567 let et = es._1
568568 let eu = es._2
569569 let ev = es._3
570570 let ew = es._4
571571 let ex = br(D(ew, eg), D(ev, ef))
572572 let ca = G(ex, b)
573573 let cO = if (dw)
574574 then nil
575575 else [StringEntry(Y(toString(value(W)), toBase58String(value(X))), bl(et, eu, dO, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
576576 let ey = bM("", aL(bQ), dO, this)
577577 let ez = (ey._1 + ey._2)
578578 let eb = fraction((er - ez), b, ez)
579579 $Tuple4(er, cO, ds, eb)
580580 }
581581 else throw("Strict value is not equal to itself.")
582582 }
583583
584584
585585 func eA () = {
586586 let dp = getString(P())
587587 if ($isInstanceOf(dp, "String"))
588588 then {
589589 let eB = dp
590590 fromBase58String(eB)
591591 }
592592 else if ($isInstanceOf(dp, "Unit"))
593593 then unit
594594 else throw("Match error")
595595 }
596596
597597
598598 func eC () = {
599599 let dp = getString(Q())
600600 if ($isInstanceOf(dp, "String"))
601601 then {
602602 let eB = dp
603603 fromBase58String(eB)
604604 }
605605 else if ($isInstanceOf(dp, "Unit"))
606606 then unit
607607 else throw("Match error")
608608 }
609609
610610
611611 func eD (de) = {
612612 let eE = throw("Permission denied")
613613 let dp = eA()
614614 if ($isInstanceOf(dp, "ByteVector"))
615615 then {
616616 let eF = dp
617617 if ((de.callerPublicKey == eF))
618618 then true
619619 else eE
620620 }
621621 else if ($isInstanceOf(dp, "Unit"))
622622 then if ((de.caller == this))
623623 then true
624624 else eE
625625 else throw("Match error")
626626 }
627627
628628
629629 @Callable(de)
630630 func setManager (eG) = {
631631 let eH = eD(de)
632632 if ((eH == eH))
633633 then {
634634 let eI = fromBase58String(eG)
635635 if ((eI == eI))
636636 then [StringEntry(Q(), eG)]
637637 else throw("Strict value is not equal to itself.")
638638 }
639639 else throw("Strict value is not equal to itself.")
640640 }
641641
642642
643643
644644 @Callable(de)
645645 func confirmManager () = {
646646 let eJ = eC()
647647 let eK = if (isDefined(eJ))
648648 then true
649649 else throw("No pending manager")
650650 if ((eK == eK))
651651 then {
652652 let eL = if ((de.callerPublicKey == value(eJ)))
653653 then true
654654 else throw("You are not pending manager")
655655 if ((eL == eL))
656656 then [StringEntry(P(), toBase58String(value(eJ))), DeleteEntry(Q())]
657657 else throw("Strict value is not equal to itself.")
658658 }
659659 else throw("Strict value is not equal to itself.")
660660 }
661661
662662
663663
664664 @Callable(de)
665665 func put (cj,eM) = if ((0 > cj))
666666 then throw("Invalid slippageTolerance passed")
667667 else {
668668 let dk = dh(de, cj, true)
669669 let cL = dk._2
670670 let bQ = dk._7
671671 let ch = dk._9
672672 let cM = dk._10
673673 let cN = dk._11
674674 let eN = dk._12
675675 let eO = dk._13
676676 let dn = invoke(aC, "emit", [cL], nil)
677677 if ((dn == dn))
678678 then {
679679 let do = {
680680 let dp = dn
681681 if ($isInstanceOf(dp, "Address"))
682682 then {
683683 let dq = dp
684684 invoke(dq, "emit", [cL], nil)
685685 }
686686 else unit
687687 }
688688 if ((do == do))
689689 then {
690690 let eP = if ((cM > 0))
691691 then invoke(aZ, "put", nil, [AttachedPayment(eN, cM)])
692692 else nil
693693 if ((eP == eP))
694694 then {
695695 let eQ = if ((cN > 0))
696696 then invoke(aZ, "put", nil, [AttachedPayment(eO, cN)])
697697 else nil
698698 if ((eQ == eQ))
699699 then {
700700 let eR = if (eM)
701701 then {
702702 let eS = invoke(aY, "stake", nil, [AttachedPayment(bQ, cL)])
703703 if ((eS == eS))
704704 then nil
705705 else throw("Strict value is not equal to itself.")
706706 }
707707 else [ScriptTransfer(de.caller, cL, bQ)]
708708 (ch ++ eR)
709709 }
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716 else throw("Strict value is not equal to itself.")
717717 }
718718
719719
720720
721721 @Callable(de)
722722 func putForFree (eT) = if ((0 > eT))
723723 then throw("Invalid value passed")
724724 else {
725725 let dk = dh(de, eT, false)
726726 dk._9
727727 }
728728
729729
730730
731731 @Callable(de)
732732 func putOneTkn (eU,eV) = {
733733 let eW = if (if (aE())
734734 then true
735735 else (aR == l))
736736 then true
737737 else (aR == n)
738738 let eh = [if (!(eW))
739739 then true
740740 else aA("put operation is blocked by admin"), if ((size(de.payments) == 1))
741741 then true
742742 else aA("exactly 1 payment are expected")]
743743 if ((eh == eh))
744744 then {
745745 let eX = de.payments[0]
746746 let dv = eX.assetId
747747 let du = eX.amount
748748 let W = de.caller
749749 let X = de.transactionId
750750 let eY = dt(du, dv, W, X)
751751 let eZ = eY._1
752752 let cO = eY._2
753753 let ds = eY._3
754754 let eb = eY._4
755755 let fa = if (if ((eU > 0))
756756 then (eU > eZ)
757757 else false)
758758 then throw(makeString(["amount to receive is less than ", toString(eU)], ""))
759759 else eZ
760760 let dn = dl(fa)
761761 if ((dn == dn))
762762 then {
763763 let eR = if (eV)
764764 then {
765765 let fb = invoke(aY, "stake", nil, [AttachedPayment(aS, fa)])
766766 if ((fb == fb))
767767 then nil
768768 else throw("Strict value is not equal to itself.")
769769 }
770770 else [ScriptTransfer(de.caller, fa, aS)]
771771 let fc = if ((ds > 0))
772772 then [ScriptTransfer(aD, ds, dv)]
773773 else nil
774774 $Tuple2(((cO ++ eR) ++ fc), fa)
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780
781781
782782
783783 @Callable(de)
784784 func putOneTknREADONLY (dv,du) = {
785785 let fd = dt(du, aJ(dv), unit, unit)
786786 let eZ = fd._1
787787 let cO = fd._2
788788 let ds = fd._3
789789 let eb = fd._4
790790 $Tuple2(nil, $Tuple3(eZ, ds, eb))
791791 }
792792
793793
794794
795795 @Callable(de)
796796 func getOneTkn (ed,eU,fe) = {
797797 let ff = if (aE())
798798 then true
799799 else (aR == n)
800800 let eh = [if (!(ff))
801801 then true
802802 else aA("get operation is blocked by admin"), if ((size(de.payments) == 1))
803803 then true
804804 else aA("exactly 1 payment are expected")]
805805 if ((eh == eh))
806806 then {
807807 let eX = de.payments[0]
808808 let dv = eX.assetId
809809 let dO = eX.amount
810810 let W = de.caller
811811 let X = de.transactionId
812812 let fg = ec(aJ(ed), dO, dv, W, X)
813813 let fh = fg._1
814814 let cO = fg._2
815815 let ds = fg._3
816816 let eb = fg._4
817817 let dm = if (if ((eU > 0))
818818 then (eU > fh)
819819 else false)
820820 then throw(makeString(["amount to receive is less than ", toString(eU)], ""))
821821 else fh
822822 let fi = invoke(aC, "burn", [dO], [AttachedPayment(dv, dO)])
823823 if ((fi == fi))
824824 then {
825825 let fj = [ScriptTransfer(W, dm, aJ(ed))]
826- $Tuple2(fj, dm)
826+ let fc = if ((ds > 0))
827+ then [ScriptTransfer(aD, ds, dv)]
828+ else nil
829+ $Tuple2(((cO ++ fj) ++ fc), dm)
827830 }
828831 else throw("Strict value is not equal to itself.")
829832 }
830833 else throw("Strict value is not equal to itself.")
831834 }
832835
833836
834837
835838 @Callable(de)
836839 func getOneTknREADONLY (ed,dO) = {
837840 let fk = ec(aJ(ed), dO, aS, unit, unit)
838841 let fh = fk._1
839842 let cO = fk._2
840843 let ds = fk._3
841844 let eb = fk._4
842845 $Tuple2(nil, $Tuple3(fh, ds, eb))
843846 }
844847
845848
846849
847850 @Callable(de)
848851 func get () = {
849852 let cz = dd(de)
850853 let fl = cz._1
851854 let cg = cz._2
852855 let dg = cz._3
853856 let bO = cz._4
854857 let ch = cz._5
855858 let fm = invoke(aC, "burn", [dg], [AttachedPayment(bO, dg)])
856859 if ((fm == fm))
857860 then ch
858861 else throw("Strict value is not equal to itself.")
859862 }
860863
861864
862865
863866 @Callable(de)
864867 func getNoLess (fn,fo) = {
865868 let cz = dd(de)
866869 let cf = cz._1
867870 let cg = cz._2
868871 let dg = cz._3
869872 let bO = cz._4
870873 let ch = cz._5
871874 if ((fn > cf))
872875 then throw(((("noLessThenAmtAsset failed: " + toString(cf)) + " < ") + toString(fn)))
873876 else if ((fo > cg))
874877 then throw(((("noLessThenPriceAsset failed: " + toString(cg)) + " < ") + toString(fo)))
875878 else {
876879 let fm = invoke(aC, "burn", [dg], [AttachedPayment(bO, dg)])
877880 if ((fm == fm))
878881 then ch
879882 else throw("Strict value is not equal to itself.")
880883 }
881884 }
882885
883886
884887
885888 @Callable(de)
886889 func unstakeAndGet (dm) = {
887890 let fp = if ((size(de.payments) != 0))
888891 then throw("No payments are expected")
889892 else true
890893 if ((fp == fp))
891894 then {
892895 let bD = aG()
893896 let bQ = fromBase58String(bD[q])
894897 let fq = invoke(aY, "unstake", [toBase58String(bQ), dm], nil)
895898 if ((fq == fq))
896899 then {
897900 let cz = bM(toBase58String(de.transactionId), toBase58String(bQ), dm, de.caller)
898901 let bT = parseIntValue(cz._9)
899902 let ch = cz._10
900903 let fr = if (if (aE())
901904 then true
902905 else (bT == n))
903906 then throw(("Get operation is blocked by admin. Status = " + toString(bT)))
904907 else true
905908 if ((fr == fr))
906909 then {
907910 let fm = invoke(aC, "burn", [dm], [AttachedPayment(bQ, dm)])
908911 if ((fm == fm))
909912 then ch
910913 else throw("Strict value is not equal to itself.")
911914 }
912915 else throw("Strict value is not equal to itself.")
913916 }
914917 else throw("Strict value is not equal to itself.")
915918 }
916919 else throw("Strict value is not equal to itself.")
917920 }
918921
919922
920923
921924 @Callable(de)
922925 func activate (fs,ft) = if ((toString(de.caller) != toString(aC)))
923926 then throw("permissions denied")
924927 else $Tuple2([StringEntry(Z(), fs), StringEntry(aa(), ft)], "success")
925928
926929
927930
928931 @Callable(de)
929932 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
930933
931934
932935
933936 @Callable(de)
934937 func getAccBalanceWrapperREADONLY (bq) = $Tuple2(nil, bp(bq))
935938
936939
937940
938941 @Callable(de)
939942 func calcPricesWrapperREADONLY (bx,by,bC) = {
940943 let bL = bB(bx, by, bC)
941944 $Tuple2(nil, [toString(bL[0]), toString(bL[1]), toString(bL[2])])
942945 }
943946
944947
945948
946949 @Callable(de)
947950 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
948951
949952
950953
951954 @Callable(de)
952955 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
953956
954957
955958
956959 @Callable(de)
957960 func calcPriceBigIntWrapperREADONLY (bs,bt) = $Tuple2(nil, toString(br(parseBigIntValue(bs), parseBigIntValue(bt))))
958961
959962
960963
961964 @Callable(de)
962965 func estimatePutOperationWrapperREADONLY (bN,cj,ck,cl,cm,cn,W,co,cp) = $Tuple2(nil, ci(bN, cj, ck, cl, cm, cn, W, co, cp))
963966
964967
965968
966969 @Callable(de)
967970 func estimateGetOperationWrapperREADONLY (bN,bO,bP,W) = {
968971 let cz = bM(bN, bO, bP, addressFromStringValue(W))
969972 $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
970973 }
971974
972975
973976
974977 @Callable(de)
975978 func statsREADONLY () = {
976979 let bD = aG()
977980 let bQ = fromBase58String(bD[q])
978981 let cR = bD[r]
979982 let cS = bD[s]
980983 let cs = bD[v]
981984 let ct = bD[w]
982985 let bE = parseIntValue(bD[t])
983986 let bF = parseIntValue(bD[u])
984987 let fu = valueOrErrorMessage(assetInfo(bQ), (("Asset " + toBase58String(bQ)) + " doesn't exist")).quantity
985988 let cT = bp(cR)
986989 let cU = bp(cS)
987990 let fv = if ((fu == 0))
988991 then [e, e, e]
989992 else bB(cT, cU, fu)
990993 let ca = 0
991994 let fw = G(fv[1], b)
992995 let fx = G(fv[2], b)
993996 let fy = value(getInteger(aC, ao(toString(this))))
994997 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cT), toString(cU), toString(fu), toString(ca), toString(fw), toString(fx), toString(fy)], j))
995998 }
996999
9971000
9981001
9991002 @Callable(de)
10001003 func evaluatePutByAmountAssetREADONLY (ck) = {
10011004 let bD = aG()
10021005 let bQ = fromBase58String(bD[q])
10031006 let cq = bD[r]
10041007 let bR = fromBase58String(cq)
10051008 let cr = bD[s]
10061009 let bS = fromBase58String(cr)
10071010 let bE = parseIntValue(bD[t])
10081011 let bF = parseIntValue(bD[u])
10091012 let bT = bD[p]
10101013 let fu = valueOrErrorMessage(assetInfo(bQ), (("Asset " + toBase58String(bQ)) + " doesn't exist")).quantity
10111014 let cT = bp(cq)
10121015 let cU = bp(cr)
10131016 let bz = D(cT, bE)
10141017 let bA = D(cU, bF)
10151018 let bZ = if ((fu == 0))
10161019 then e
10171020 else br(bA, bz)
10181021 let cw = D(ck, bE)
10191022 let cx = fraction(cw, bZ, d)
10201023 let cm = G(cx, bF)
10211024 let dk = ci("", 500000, ck, bR, cm, bS, "", true, false)
10221025 let cH = dk._1
10231026 let fz = dk._3
10241027 let bV = dk._4
10251028 let bX = dk._5
10261029 let bU = dk._6
10271030 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cH), toString(G(bZ, b)), toString(bV), toString(bX), toString(bU), bT, toString(ck), toString(cm)], j))
10281031 }
10291032
10301033
10311034
10321035 @Callable(de)
10331036 func evaluatePutByPriceAssetREADONLY (cm) = {
10341037 let bD = aG()
10351038 let bQ = fromBase58String(bD[q])
10361039 let cq = bD[r]
10371040 let bR = fromBase58String(cq)
10381041 let cr = bD[s]
10391042 let bS = fromBase58String(cr)
10401043 let bE = parseIntValue(bD[t])
10411044 let bF = parseIntValue(bD[u])
10421045 let bT = bD[p]
10431046 let fu = valueOrErrorMessage(assetInfo(bQ), (("Asset " + toBase58String(bQ)) + " doesn't exist")).quantity
10441047 let fA = bp(cq)
10451048 let fB = bp(cr)
10461049 let fC = D(fA, bE)
10471050 let fD = D(fB, bF)
10481051 let bZ = if ((fu == 0))
10491052 then e
10501053 else br(fD, fC)
10511054 let cx = D(cm, bF)
10521055 let cw = fraction(cx, d, bZ)
10531056 let ck = G(cw, bE)
10541057 let dk = ci("", 500000, ck, bR, cm, bS, "", true, false)
10551058 let cH = dk._1
10561059 let fz = dk._3
10571060 let bV = dk._4
10581061 let bX = dk._5
10591062 let bU = dk._6
10601063 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cH), toString(G(bZ, b)), toString(bV), toString(bX), toString(bU), bT, toString(ck), toString(cm)], j))
10611064 }
10621065
10631066
10641067
10651068 @Callable(de)
10661069 func evaluateGetREADONLY (fE,fF) = {
10671070 let cz = bM("", fE, fF, this)
10681071 let cf = cz._1
10691072 let cg = cz._2
10701073 let bV = cz._5
10711074 let bX = cz._6
10721075 let bU = cz._7
10731076 let ca = cz._8
10741077 let bT = parseIntValue(cz._9)
10751078 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cf), toString(cg), toString(bV), toString(bX), toString(bU), toString(ca), toString(bT)], j))
10761079 }
10771080
10781081
10791082 @Verifier(fG)
10801083 func fH () = {
10811084 let fI = {
10821085 let dp = eA()
10831086 if ($isInstanceOf(dp, "ByteVector"))
10841087 then {
10851088 let eF = dp
10861089 eF
10871090 }
10881091 else if ($isInstanceOf(dp, "Unit"))
10891092 then fG.senderPublicKey
10901093 else throw("Match error")
10911094 }
10921095 let dp = fG
10931096 if ($isInstanceOf(dp, "Order"))
10941097 then {
10951098 let cQ = dp
10961099 let fJ = aF()
10971100 let at = cP(cQ)
10981101 let au = sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
10991102 let av = sigVerify(cQ.bodyBytes, cQ.proofs[1], fJ)
11001103 if (if (if (at)
11011104 then au
11021105 else false)
11031106 then av
11041107 else false)
11051108 then true
11061109 else as(at, au, av)
11071110 }
11081111 else if ($isInstanceOf(dp, "SetScriptTransaction"))
11091112 then {
11101113 let eB = dp
11111114 let fK = blake2b256(value(eB.script))
11121115 let fL = fromBase64String(value(getString(aC, aq())))
11131116 let fM = scriptHash(this)
11141117 if (if ((fL == fK))
11151118 then (fM != fK)
11161119 else false)
11171120 then true
11181121 else sigVerify(fG.bodyBytes, fG.proofs[0], fI)
11191122 }
11201123 else sigVerify(fG.bodyBytes, fG.proofs[0], fI)
11211124 }
11221125

github/deemru/w8io/169f3d6 
107.67 ms