tx · 94cDfvk46xEqWd5CGo2hNantdXi1bqTZN72tfdwtmCE3

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03100000 Waves

2022.09.28 14:20 [2248902] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "94cDfvk46xEqWd5CGo2hNantdXi1bqTZN72tfdwtmCE3", "fee": 3100000, "feeAssetId": null, "timestamp": 1664364093968, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3vFaY7gN4grgebxeq7SHKKqn1o75jyLVDpDnsqH97gp1hjnJxnmWEb1x5N3TtTAFSoE7Rs5mHg1Qe5v9fXQB3dYY" ], "script": "base64:BgL8HggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IglvbmVCaWdJbnQiCnNsaXBwYWdlNEQiBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYyMzcxNjU4MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMDkwODIwOTUzIg0kdDAyMDk1NzIxNDE4IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE0MjIyMTU1NiIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjAyNTIyMTIxIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNDc2MjM1ODQiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM3NzEyMzg1OCIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgFtIgFzIgJwbSICcGQiAm1tIgJwayIBYyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgVvdXRMcCIHZ3d4Q250ciIHcG9vbENmZyIFYWRkb24iEHBheW1lbnRBbW91bnRSYXciDSR0MDI5MjQ0MjkyOTYiDSR0MDI5NDU2MzAwNzIiDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiCWxwQ2FsY1JlcyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiB21heFNscGciCW91dEFtdEFtdCIBYiIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50Igplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDAzODMyNzM4Nzg3Igt0b3RhbEdldFJhdyIIZmluYWxSZXMiDSR0MDM5NTM0Mzk2MzgiDSR0MDQwNjYzNDA4MTgiDWxwQXNzZXRBbW91bnQiDSR0MDQxMzI4NDE2MzYiFGFtb3VudEJhbGFuY2VGb3JTd2FwIhNwcmljZUJhbGFuY2VGb3JTd2FwIgxhbW91bnRUb1N3YXAiC2Ftb3VudFRvQWRkIgp5UHJlY2lzaW9uIg0kdDA0MjE2NDQyMjEzIg0kdDA0MjU1NzQyNjcyIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50Ig0kdDA0NDk3NzQ1MTY1IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hXAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAEAAWYJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFnAgMxMDAAAWgCATEAAWkCAl9fAAFqAgAAAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAABAAF5AAcAAXoACgABQQkAawMABQUBYQCQTgEBQgIBQwFECQC8AgMJALYCAQUBQwUBYwkAtgIBBQFEAQFFAgFGAUcJAKADAQkAvAIDBQFGCQC2AgEFAUcFAWMBAUgDAUkBSgFLCQBrAwUBSQUBSgUBSwEBTAEBRgMJAL8CAgUBZAUBRgkAvgIBBQFGBQFGAQFNAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFPAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFQAAIRJXMlc19fcHJpY2VfX2xhc3QBAVECAVIBUwkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVIJAMwIAgkApAMBBQFTBQNuaWwFAWkBAVQCAVUBVgkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVUCAl9fBQFWAQFXAgFVAVYJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFVAgJfXwUBVgEBWAACDyVzX19hbW91bnRBc3NldAEBWQACDiVzX19wcmljZUFzc2V0AQFaAAIHJXNfX2FtcAECYWEAAg0lc19fYWRkb25BZGRyAAJhYgIHJXNfX2ZlZQACYWMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWIFAUEBAmFkAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFlAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZgICYWcCYWgJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFnAgJfXwUCYWgCCF9fY29uZmlnAQJhaQECYWoJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWoBAmFrAAIMJXNfX3NodXRkb3duAQJhbAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhbQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhbgMCYW8CYXACYXEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYW8CCyBzbmRyVmFsaWQ9CQClAwEFAmFwAgwgbXRjaHJWYWxpZD0JAKUDAQUCYXEBAmFyAQFGBAJhcwUBRgMJAAECBQJhcwIGU3RyaW5nBAJhdAUCYXMFAmF0CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXUCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXgCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYXkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdQIFBHRoaXMJAQFNAAACYXoJAQJhdQIFBHRoaXMJAQFaAAECYUEACQELdmFsdWVPckVsc2UCCQCbCAIFAmF5CQECYWsABwECYUIACQDZBAEJAQJhdQIFAmF5CQECYWUAAAJhQwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF1AgUCYXkJAQJhbQABAmFEAAQCYUUJAQJhdQIFBHRoaXMJAQFYAAQCYUYJAQJhdQIFBHRoaXMJAQFZAAQCYUcJAQJheAIFAmF5CQECYWkBBQJhRgQCYWcJAQJheAIFAmF5CQECYWkBBQJhRQkAtQkCCQECYXUCBQJheQkBAmFmAgkApAMBBQJhZwkApAMBBQJhRwUBaQECYUgACQC1CQIJAQJhdQIFAmF5CQECYWQABQFpAAJhSQkBAmFIAAACYUoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF4AiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYUsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF5AiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYUwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF6AhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJhTQoCYU4CYU8CYVACYVECYVICYVMCYVQCYVUCYVYCYVcJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFOCQDMCAIJAKQDAQUCYU8JAMwIAgkApAMBBQJhUAkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVIJAMwIAgkApAMBBQJhUwkAzAgCCQCkAwEFAmFUCQDMCAIJAKQDAQUCYVUJAMwIAgkApAMBBQJhVgkAzAgCCQCkAwEFAmFXBQNuaWwFAWkBAmFYBgJhWQJhWgJiYQJhUQJhVAJhVQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoJAMwIAgkApAMBBQJiYQkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQUDbmlsBQFpAQJiYgECYmMDCQAAAgUCYmMCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJjAQJiZAICYmUCYmYJALwCAwUCYmUFAWMFAmJmAQJiZwMCYmgCYmkCYmoEAmJrCQC8AgMJALgCAgUCYmgFAmJpBQFiBQJiaQQCYmwJAL8CAgkAuAICBQJiagkBAUwBBQJiawUBZAMJAQEhAQUCYmwJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYmsJAJQKAgUCYmwJAJkDAQkAzAgCBQJiaAkAzAgCBQJiaQUDbmlsAQJibQMCYm4CYm8CYnAEAmJrCQC8AgMFAmJvBQFiBQJibgQCYnEJAL8CAgUCYnAFAmJrAwMFAmJxBgkAvwICBQJibwUCYm4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJvAgEgCQCmAwEFAmJuAgEgCQCmAwEFAmJrAgEgCQCmAwEFAmJwBQJicQECYnIEAmJzAmJ0AmJ1AmJ2BAJidwkBAUICBQJidQUCYnMEAmJ4CQEBQgIFAmJ2BQJidAkBAmJkAgUCYngFAmJ3AQJieQMCYnUCYnYCYnoEAmJBCQECYUQABAJiQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF0BAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF1BAJiRAkBAmJyBAUCYkIFAmJDBQJidQUCYnYEAmJmCQEBQgIFAmJ1BQJiQgQCYmUJAQFCAgUCYnYFAmJDBAJiRQkBAUICBQJiegUBYQQCYkYJAQJiZAIFAmJmBQJiRQQCYkcJAQJiZAIFAmJlBQJiRQkAzAgCBQJiRAkAzAgCBQJiRgkAzAgCBQJiRwUDbmlsAQJiSAMCYnUCYnYCYnoEAmJJCQECYnkDBQJidQUCYnYFAmJ6CQDMCAIJAQFFAgkAkQMCBQJiSQAABQFhCQDMCAIJAQFFAgkAkQMCBQJiSQABBQFhCQDMCAIJAQFFAgkAkQMCBQJiSQACBQFhBQNuaWwBAmJKAQJiSwQCYkwJAGsDBQJiSwUCYWMFAWEJAJQKAgkAZQIFAmJLBQJiTAUCYkwBAmJNBAJiTgJiTwJiUAJiUQQCYkEJAQJhRAAEAmJSCQCRAwIFAmJBBQFxBAJiUwkAkQMCBQJiQQUBcgQCYlQJAJEDAgUCYkEFAXMEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXUEAmJXCQCRAwIFAmJBBQFwBAJiWAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmJSBQJiTwkAAgECD1dyb25nIHBtdCBhc3NldAQCYlkJAQJiYgEFAmJTBAJiWgkBAUICBQJiWQUCYlUEAmNhCQECYmIBBQJiVAQCY2IJAQFCAgUCY2EFAmJWBAJjYwkBAmJkAgUCY2IFAmJaBAJjZAkBAUUCBQJjYwUBYQQCY2UJAQFCAgUCYlAFAWEEAmNmCQEBQgIFAmJYBQFhBAJjZwkAvAIDBQJiWgUCY2UFAmNmBAJjaAkAvAIDBQJjYgUCY2UFAmNmBAJjaQkBAUUCBQJjZwUCYlUEAmNqCQEBRQIFAmNoBQJiVgQCY2sDCQAAAgUCYk4CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJjaQMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlEFAmNqAwkAAAIFAmJUAgVXQVZFUwUEdW5pdAkA2QQBBQJiVAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQUCYlEFAmJOCQECYVgGBQJjaQUCY2oFAmJQBQJjZAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZAUDbmlsCQCcCgoFAmNpBQJjagUCYlMFAmJUBQJiWQUCY2EFAmJYBQJjYwUCYlcFAmNrAQJjbA0CYk4CYmoCY20CY24CY28CY3ACYlECY3ECY3ICY3MCY3QCY3UCY3YEAmJBCQECYUQABAJiUgkA2QQBCQCRAwIFAmJBBQFxBAJjdwkAkQMCBQJiQQUBcgQCY3gJAJEDAgUCYkEFAXMEAmN5CQCRAwIFAmJBBQF2BAJjegkAkQMCBQJiQQUBdwQCY0EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdAQCY0IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdQQCYlcJAJEDAgUCYkEFAXAEAmNDCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSAghXciBscCBhcwhxdWFudGl0eQQCYlkDBQJjcQkBAmJiAQUCY3cDAwUCY3MJAAACBQJjdgUCY3cHCQBlAgkBAmJiAQUCY3cFAmN1AwUCY3MJAQJiYgEFAmN3CQBlAgkBAmJiAQUCY3cFAmNtBAJjYQMFAmNxCQECYmIBBQJjeAMDBQJjcwkAAAIFAmN2BQJjeAcJAGUCCQECYmIBBQJjeAUCY3UDBQJjcwkBAmJiAQUCY3gJAGUCCQECYmIBBQJjeAUCY28EAmNECQEBQgIFAmNtBQJjQQQCY0UJAQFCAgUCY28FAmNCBAJjRgkBAmJkAgUCY0UFAmNEBAJiWgkBAUICBQJiWQUCY0EEAmNiCQEBQgIFAmNhBQJjQgQCY0cDCQAAAgUCY0MAAAQCY2MFAWQEAmNIBQFkBAJiRQkAdgYJALkCAgUCY0QFAmNFAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRQIFAmJFBQFhCQEBRQIFAmNEBQJjQQkBAUUCBQJjRQUCY0IJAQJiZAIJALcCAgUCY2IFAmNFCQC3AgIFAmJaBQJjRAUCY0gEAmNjCQECYmQCBQJjYgUCYloEAmNJCQC8AgMJAQFMAQkAuAICBQJjYwUCY0YFAWMFAmNjBAJjSAkBAUICBQJiagUBYQMDAwUCY3QJAQIhPQIFAmNjBQFkBwkAvwICBQJjSQUCY0gHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNJAgMgPiAJAKYDAQUCY0gEAmNKCQEBQgIFAmNDBQFhBAJjSwkAvAIDBQJjRAUCY2MFAWMEAmNMCQC8AgMFAmNFBQFjBQJjYwQCY00DCQC/AgIFAmNLBQJjRQkAlAoCBQJjTAUCY0UJAJQKAgUCY0QFAmNLBAJjTggFAmNNAl8xBAJjTwgFAmNNAl8yBAJiRQkAvAIDBQJjSgUCY08FAmNiCQCXCgUJAQFFAgUCYkUFAWEJAQFFAgUCY04FAmNBCQEBRQIFAmNPBQJjQgUCY2MFAmNIBAJjUAgFAmNHAl8xBAJjUQgFAmNHAl8yBAJjUggFAmNHAl8zBAJjZAkBAUUCCAUCY0cCXzQFAWEEAmNTCQEBRQIIBQJjRwJfNQUBYQMJAGcCAAAFAmNQCQACAQIHTFAgPD0gMAQCY1QDCQEBIQEFAmNyAAAFAmNQBAJjVQkAZQIFAmNtBQJjUQQCY1YJAGUCBQJjbwUCY1IEAmNXAwMFAmNzCQAAAgUCY3YFAmN3BwkAlAoCBQJjdQAAAwMFAmNzCQAAAgUCY3YFAmN4BwkAlAoCAAAFAmN1CQCUCgIFAmNRBQJjUgQCY1gIBQJjVwJfMQQCY1kIBQJjVwJfMgQCY1oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCY2QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQJiUQUCYk4JAQJhTQoFAmNYBQJjWQUCY1QFAmNkBQJiagUCY1MFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNVBQJjVgUDbmlsCQCfCg0FAmNQBQJjVAUCY2QFAmJZBQJjYQUCY0MFAmJSBQJiVwUCY1oFAmNVBQJjVgUCY24FAmNwAQJkYQECZGIEAmJBCQECYUQABAJkYwkAkQMCBQJiQQUBcgQCZGQJAJEDAgUCYkEFAXMEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXAEAmJCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXQEAmJDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXUEAmRlCQECYmIBBQJkYwQCZGYJAQJiYgEFAmRkBAJjYwMJAAACCAUCZGIJb3JkZXJUeXBlBQNCdXkJAQJicgQFAmJCBQJiQwkAZAIFAmRlCAUCZGIGYW1vdW50BQJkZgkBAmJyBAUCYkIFAmJDCQBlAgUCZGUIBQJkYgZhbW91bnQFAmRmBAJjZAkBAUUCBQJjYwUBYQMDAwkBAmFBAAYJAAACBQJiVwUBbQYJAAACBQJiVwUBbgkAAgECDUFkbWluIGJsb2NrZWQEAmRnCAgFAmRiCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZGgDCQAAAgUCZGcFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRnBAJkaQgIBQJkYglhc3NldFBhaXIKcHJpY2VBc3NldAQCZGoDCQAAAgUCZGkFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRpAwMJAQIhPQIFAmRoBQJkYwYJAQIhPQIFAmRqBQJkZAkAAgECCVdyIGFzc2V0cwQCZGsIBQJkYgVwcmljZQQCY0IJAGsDBQFhBQJiQwUCYkIEAmRsCQEBSAMFAmRrBQFhBQJjQgQCZG0DCQAAAggFAmRiCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2QFAmRsCQBnAgUCZGwFAmNkBgECZG4BAmRvAwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRwCQEFdmFsdWUBCQCRAwIIBQJkbwhwYXltZW50cwAABAJiTwkBBXZhbHVlAQgFAmRwB2Fzc2V0SWQEAmN1CAUCZHAGYW1vdW50BAJjRwkBAmJNBAkA2AQBCAUCZG8NdHJhbnNhY3Rpb25JZAkA2AQBBQJiTwUCY3UIBQJkbwZjYWxsZXIEAmNpCAUCY0cCXzEEAmNqCAUCY0cCXzIEAmJXCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQQCY2sIBQJjRwNfMTADAwkBAmFBAAYJAAACBQJiVwUBbgkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmJXCQCXCgUFAmNpBQJjagUCY3UFAmJPBQJjawECZHEKAmRyAVYCZHMCZHQCYmoCY3ICY3MCY3QCY3UCY3YEAmNHCQECY2wNBQFWBQJiaggJAQV2YWx1ZQEFAmRzBmFtb3VudAgJAQV2YWx1ZQEFAmRzB2Fzc2V0SWQICQEFdmFsdWUBBQJkdAZhbW91bnQICQEFdmFsdWUBBQJkdAdhc3NldElkBQJkcgcFAmNyBQJjcwUCY3QFAmN1BQJjdgQCYlcJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl84AwMDCQECYUEABgkAAAIFAmJXBQFsBgkAAAIFAmJXBQFuCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJiVwUCY0cBAmR1BAJkdgJiTwJiUQFWBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZHgJAQJiSgEFAmR2BAJjdQgFAmR4Al8xBAJiTAgFAmR4Al8yBAJkeQMJAAACBQFWAgAJAJQKAgUCYlkFAmNhAwkAAAIFAmJPBQJiUwMJAGYCBQJkdgUCYlkJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJiWQUCZHYFAmNhAwkAAAIFAmJPBQJiVAMJAGYCBQJkdgUCY2EJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmJZCQBlAgUCY2EFAmR2CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZHoIBQJkeQJfMQQCZEEIBQJkeQJfMgQCZEIDCQAAAgUCYk8FAmJTCQCUCgIFAmR6BQJkQQkAlAoCBQJkQQUCZHoEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAAEEAmRGCgACZEcJAPwHBAUCYUwCDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmRFCQDMCAIFAWgFA25pbAUDbmlsAwkAAQIFAmRHAgooSW50LCBJbnQpBQJkRwkAAgEJAKwCAgkAAwEJAPwHBAUCYUwCDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmRFCQDMCAIFAWgFA25pbAUDbmlsAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJkSAMJAAACBQJiTwUCYlMFAmRGCQCUCgIIBQJkRgJfMggFAmRGAl8xBAJkSQgFAmRIAl8xBAJkSggFAmRIAl8yBAJkSwkBAmRxCgUCYlEFAVYJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJkSQkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmRKAAAGBgcFAmR2BQJiTwQCZEwIBQJkSwJfMgQCZE0IBQJkSwJfNwQCY2sIBQJkSwJfOQQCY1UIBQJkSwNfMTAEAmNWCAUCZEsDXzExBQJkSwECZE4GAmRPAmRQAmRRAmRyAmRSAmRTAwkBAiE9AgkAkAMBBQJkUQABCQACAQILMSBwbW50IGV4cGQEAmR3CQECYUQABAJiUgkAkQMCBQJkdwUBcQQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJkVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF0BAJkVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF1BAJkVgkAkQMCBQJkdwUBcAQCYlEDCQAAAgUCZHIFBHRoaXMFAmRSBQJkcgQCZHAJAQV2YWx1ZQEJAJEDAgUCZFEAAAQCYk8JAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJjdQgFAmRwBmFtb3VudAMJAGYCAICU69wDBQJjdQkAAgECDU1pbiBwbXQgMTAgTFAEAmJOCQDYBAEFAmRTAwkBAiE9AgUCYlIJANgEAQUCYk8JAAIBAghXcm9uZyBMUAQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmRXCgACZEcJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkTwkAzAgCBQJjdQUDbmlsBQNuaWwDCQABAgUCZEcCCihJbnQsIEludCkFAmRHCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmRPCQDMCAIFAmN1BQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZFgIBQJkVwJfMQQCYkwIBQJkVwJfMgQCZFkDAwkAZgIFAmRQAAAJAGYCBQJkUAUCZFgHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJkUAUDbmlsAgAFAmRYBAJkWgMJAAACBQJkTwUCYlMJAJQKAgUCZFkAAAkAlAoCAAAFAmRZBAJlYQgFAmRaAl8xBAJlYggFAmRaAl8yBAJlYwkBAmJkAgkBAUICBQJjYQUCZFUJAQFCAgUCYlkFAmRUBAJlZAkBAUUCBQJlYwUBYQQCZWUDCQAAAgUCZE8CBVdBVkVTBQR1bml0CQDZBAEFAmRPBAJlZgMJAGYCBQJiTAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFDBQJiTAUCZWUFA25pbAUDbmlsBAJjawkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJkWQUCZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEFAmJRBQJiTgkBAmFYBgUCZWEFAmViBQJjdQUCZWQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWQFA25pbAUCZWYDCQAAAgUCY2sFAmNrBAJlZwkA/AcEBQJheQIEYnVybgkAzAgCBQJjdQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTwUCY3UFA25pbAMJAAACBQJlZwUCZWcJAJQKAgUCY2sFAmRZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlaAAEAmFzCQCiCAEJAQFOAAMJAAECBQJhcwIGU3RyaW5nBAJlaQUCYXMJANkEAQUCZWkDCQABAgUCYXMCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZWoABAJhcwkAoggBCQEBTwADCQABAgUCYXMCBlN0cmluZwQCZWkFAmFzCQDZBAEFAmVpAwkAAQIFAmFzAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmVrCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmVsAQJkbwQCYXMJAQJlaAADCQABAgUCYXMCCkJ5dGVWZWN0b3IEAmVtBQJhcwMJAAACCAUCZG8PY2FsbGVyUHVibGljS2V5BQJlbQYFAmVrAwkAAQIFAmFzAgRVbml0AwkAAAIIBQJkbwZjYWxsZXIFBHRoaXMGBQJlawkAAgECC01hdGNoIGVycm9yHQJkbwELY29uc3RydWN0b3IBAU0EAmVuCQECZWwBBQJkbwMJAAACBQJlbgUCZW4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQFNBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BCnNldE1hbmFnZXIBAmVvBAJlbgkBAmVsAQUCZG8DCQAAAgUCZW4FAmVuBAJlcAkA2QQBBQJlbwMJAAACBQJlcAUCZXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU8ABQJlbwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQ5jb25maXJtTWFuYWdlcgAEAmJJCQECZWoABAJlcQMJAQlpc0RlZmluZWQBBQJiSQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZXEFAmVxBAJlcgMJAAACCAUCZG8PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiSQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZXIFAmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAkA2AQBCQEFdmFsdWUBBQJiSQkAzAgCCQELRGVsZXRlRW50cnkBCQEBTwAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEDcHV0AgJlcwJldAQCZXUJAQJhSAAEAmV2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJldQUBeAIKV3Igc3QgYWRkcgQCZXcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmV1BQF5AgpXciBzbCBhZGRyAwkAZgIAAAUCZXMJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmV4CQECZHEKCQClCAEIBQJkbwZjYWxsZXIJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRvCHBheW1lbnRzAAEFAmVzBgcGAAACAAQCY1QIBQJleAJfMgQCZE0IBQJleAJfNwQCY2sIBQJleAJfOQQCY1UIBQJleANfMTAEAmNWCAUCZXgDXzExBAJiUwgFAmV4A18xMgQCYlQIBQJleANfMTMEAmNHCQD8BwQFAmF5AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAMJAAACBQJjRwUCY0cEAmV5BAJhcwUCY0cDCQABAgUCYXMCB0FkZHJlc3MEAmV6BQJhcwkA/AcEBQJlegIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZXkFAmV5BAJlQQMJAGYCBQJjVQAACQD8BwQFAmV3AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlMFAmNVBQNuaWwFA25pbAMJAAACBQJlQQUCZUEEAmVCAwkAZgIFAmNWAAAJAPwHBAUCZXcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVAUCY1YFA25pbAUDbmlsAwkAAAIFAmVCBQJlQgQCZUMDBQJldAQCZUQJAPwHBAUCZXYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRNBQJjVAUDbmlsAwkAAAIFAmVEBQJlRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbwZjYWxsZXIFAmNUBQJkTQUDbmlsCQDOCAIFAmNrBQJlQwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEJcHV0T25lVGtuBQJkSQJkSgJlRQJiagJldAQCYkEJAQJhSAAEAmV2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQQUBeAIKV3Igc3QgYWRkcgQCZXcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJBBQF5AgpXciBzbCBhZGRyBAJlRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkEFAXoCC1dyIGd3eCBhZGRyBAJlRwkBAmFEAAQCYlMJAJEDAgUCZUcFAXIEAmJUCQCRAwIFAmVHBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVHBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVHBQF1BAJlSAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWEAAgAEAmJRAwkAAAIFAmVICQClCAEIBQJkbwZjYWxsZXIIBQJkbwxvcmlnaW5DYWxsZXIIBQJkbwZjYWxsZXIDAwMDCQBnAgAABQJiagYJAGcCAAAFAmRJBgkAZwIAAAUCZEoGCQBnAgAABQJlRQkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHAJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAEAmJPCQDYBAEJAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJlSQgFAmRwBmFtb3VudAQCZUoJAQJiSgEFAmVJBAJjdQgFAmVKAl8xBAJiTAgFAmVKAl8yAwkAZgIAgK3iBAUCZUkJAAIBAg1Xcm9uZyBwbXQgYW10BAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZUsDCQAAAgUCYk8FAmJTAwMJAGYCBQJlSQUCYlkGCQBmAgUCZEkFAmN1CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCYlkFAmVJBQJjYQkAZQIFAmN1BQJkSQUCZEoAAAAAAwkAAAIFAmJPBQJiVAMDCQBmAgUCZUkFAmNhBgkAZgIFAmRKBQJjdQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCYlkJAGUCBQJjYQUCZUkAAAAACQBlAgUCY3UFAmRKBQJkSQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmR6CAUCZUsCXzEEAmRBCAUCZUsCXzIEAmVMCAUCZUsCXzMEAmVNCAUCZUsCXzQEAmVOCAUCZUsCXzUEAmVPCAUCZUsCXzYEAmJvCQD8BwQFAmVGAgVjYWxjRAkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCZEEJAMwIAgUCYXoJAMwIAgUBZwkAzAgCBQFoBQNuaWwFA25pbAQCYm4JAPwHBAUCZUYCBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmR6BQJlTAUCZU8JAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEEFAmVOBQJlTQkAzAgCBQJhegkAzAgCBQFnCQDMCAIFAWgFA25pbAUDbmlsBAJlUAkBAmJtAwkApwMBCQECYXIBBQJibgkApwMBCQECYXIBBQJibwUBZgMJAAACBQJlUAUCZVAEAmRLCQECZHEKCQClCAEIBQJkbwZjYWxsZXIJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJkSQkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmRKBQJiagYGBgUCY3UFAmJPBAJkTAgFAmRLAl8yBAJkTQgFAmRLAl83BAJjawgFAmRLAl85BAJjVQgFAmRLA18xMAQCY1YIBQJkSwNfMTEEAmVRCQECYmcDCQC2AgEFAmRMCQC2AgEFAmVFCQC2AgEFAmJqBAJjVAkAoAMBCAUCZVECXzIEAmV4CQD8BwQFAmF5AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAMJAAACBQJleAUCZXgEAmV5BAJhcwUCZXgDCQABAgUCYXMCB0FkZHJlc3MEAmV6BQJhcwkA/AcEBQJlegIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZXkFAmV5BAJlQQMJAGYCBQJjVQAACQD8BwQFAmV3AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiUwUCY1UFA25pbAUDbmlsAwkAAAIFAmVBBQJlQQQCZUIDCQBmAgUCY1YAAAkA/AcEBQJldwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmNWBQNuaWwFA25pbAMJAAACBQJlQgUCZUIEAmVDAwUCZXQEAmVECQD8BwQFAmV2AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTQUCY1QFA25pbAMJAAACBQJlRAUCZUQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZG8GY2FsbGVyBQJjVAUCZE0FA25pbAQCZWYDCQBmAgUCYkwAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQwUCYkwJANkEAQUCYk8FA25pbAUDbmlsCQDOCAIJAM4IAgUCY2sFAmVDBQJlZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwELcHV0T25lVGtuVjICAmRQAmV0AwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJkVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF0BAJkVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF1BAJiUQMJAAACCAUCZG8GY2FsbGVyBQR0aGlzCAUCZG8Mb3JpZ2luQ2FsbGVyCAUCZG8GY2FsbGVyBAJkcAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAQCYk8JANgEAQkBBXZhbHVlAQgFAmRwB2Fzc2V0SWQEAmN1CAUCZHAGYW1vdW50AwkAZgIAgK3iBAUCY3UJAAIBAg1Xcm9uZyBwbXQgYW10BAJjRwkBAmR1BAUCY3UFAmJPCQClCAEFAmJRCQDYBAEIBQJkbw10cmFuc2FjdGlvbklkBAJkTAgFAmNHAl8yBAJkTQgFAmNHAl83BAJjawgFAmNHAl85BAJjVQgFAmNHA18xMAQCY1YIBQJjRwNfMTEEAmNUAwMJAGYCBQJkUAAACQBmAgUCZFAFAmRMBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZFAFA25pbAIABQJkTAQCZXgJAPwHBAUCYXkCBGVtaXQJAMwIAgUCY1QFA25pbAUDbmlsAwkAAAIFAmV4BQJleAQCZXkEAmFzBQJleAMJAAECBQJhcwIHQWRkcmVzcwQCZXoFAmFzCQD8BwQFAmV6AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAUEdW5pdAMJAAACBQJleQUCZXkEAmVBAwkAZgIFAmNVAAAJAPwHBAUCYUsCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJjVQUDbmlsBQNuaWwDCQAAAgUCZUEFAmVBBAJlQgMJAGYCBQJjVgAACQD8BwQFAmFLAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVAUCY1YFA25pbAUDbmlsAwkAAAIFAmVCBQJlQgQCZUMDBQJldAQCZUQJAPwHBAUCYUoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRNBQJjVAUDbmlsAwkAAAIFAmVEBQJlRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbwZjYWxsZXIFAmNUBQJkTQUDbmlsBAJiTAgJAQJiSgEFAmN1Al8yBAJlZgMJAGYCBQJiTAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFDBQJiTAkA2QQBBQJiTwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNrBQJlQwUCZWYFAmNUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvARNwdXRPbmVUa25WMlJFQURPTkxZAgJlUgJlUwQCY0cJAQJkdQQFAmVSBQJlUwIAAgAEAmRMCAUCY0cCXzIEAmRNCAUCY0cCXzcEAmNrCAUCY0cCXzkEAmNVCAUCY0cDXzEwBAJjVggFAmNHA18xMQkAlAoCBQNuaWwFAmRMAmRvARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJlUgJlUwQCZHcJAQJhRAAEAmJTCQCRAwIFAmR3BQFyBAJiVAkAkQMCBQJkdwUBcwQCY0cJAQJkdQQFAmVSBQJlUwIAAgAEAmRMCAUCY0cCXzIEAmNkCAUCY0cCXzMEAmVUCAUCY0cCXzYEAmRNCAUCY0cCXzcEAmJZCQECYmIBBQJiUwQCY2EJAQJiYgEFAmJUBAJlVQkAawMFAmNhBQFhBQJiWQQCZVYJAGsDBQJlUgUBYQkAZAIFAmVVBQFhBAJlVwkAZQIFAmVSBQJlVgQCZVgJAGsDBQJlVAUCZVcFAmNhBAJlWQkAawMJAGUCBQJkTAUCZVgFAWEFAmVYBAJiTAgJAQJiSgEFAmVSAl8yCQCUCgIFA25pbAkAlQoDBQJkTAUCYkwFAmVZAmRvAQpwdXRGb3JGcmVlAQJlWgMJAGYCAAAFAmVaCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmRLCQECZHEKCQClCAEIBQJkbwZjYWxsZXIJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRvCHBheW1lbnRzAAEFAmVaBwcGAAACAAgFAmRLAl85AmRvAQNnZXQABAJjRwkBAmRuAQUCZG8EAmZhCAUCY0cCXzEEAmNqCAUCY0cCXzIEAmN1CAUCY0cCXzMEAmJPCAUCY0cCXzQEAmNrCAUCY0cCXzUEAmZiCQD8BwQFAmF5AgRidXJuCQDMCAIFAmN1BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJPBQJjdQUDbmlsAwkAAAIFAmZiBQJmYgUCY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BCWdldE9uZVRrbgUCZmMCZmQCZmUCZE8CYmoDCQECIT0CCQCQAwEIBQJkbwhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJBCQECYUQABAJiUgkAkQMCBQJiQQUBcQQCYlMJAJEDAgUCYkEFAXIEAmJUCQCRAwIFAmJBBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF1BAJiVwkAkQMCBQJiQQUBcAQCZXUJAQJhSAAEAmVGCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJldQUBegIKV3Igc2wgYWRkcgQCZHAJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAEAmVICQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYQACAAQCYlEDCQAAAgUCZUgJAKUIAQgFAmRvBmNhbGxlcggFAmRvDG9yaWdpbkNhbGxlcggFAmRvBmNhbGxlcgQCYk4JANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQEAmJPCQEFdmFsdWUBCAUCZHAHYXNzZXRJZAQCY3UIBQJkcAZhbW91bnQDCQBmAgCAlOvcAwUCY3UJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJiagYJAGYCAAAFAmZjBgkAZgIAAAUCZmUJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiUgkA2AQBBQJiTwkAAgECCFdyb25nIExQBAJjRwkBAmJNBAkA2AQBCAUCZG8NdHJhbnNhY3Rpb25JZAkA2AQBBQJiTwUCY3UIBQJkbwZjYWxsZXIEAmZmCAUCY0cCXzEEAmZnCAUCY0cCXzIEAmJZCQECYmIBBQJiUwQCY2EJAQJiYgEFAmJUBAJmaAMJAAACBQJkTwUCYlMJAJkKBwkAZQIFAmJZBQJmZgkAZQIFAmNhBQJmZwUCZmMFAmZnAAAAAAkAZAIFAmZmBQJmYwMJAAACBQJkTwUCYlQJAJkKBwkAZQIFAmJZBQJmZgkAZQIFAmNhBQJmZwAAAAAFAmZjBQJmZgkAZAIFAmZnBQJmYwkAAgECEHdyb25nIG91dEFzc2V0SWQEAmR6CAUCZmgCXzEEAmRBCAUCZmgCXzIEAmVMCAUCZmgCXzMEAmVNCAUCZmgCXzQEAmVOCAUCZmgCXzUEAmVPCAUCZmgCXzYEAmZpCAUCZmgCXzcDAwkAZgIAAAUCZUwGCQBmAgAABQJlTgkAAgECCldyb25nIGNhbGMEAmJvCQD8BwQFAmVGAgVjYWxjRAkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCZEEJAMwIAgUCYXoJAMwIAgUBZwkAzAgCBQFoBQNuaWwFA25pbAQCYm4JAPwHBAUCZUYCBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkegUCZUwFAmVPCQDMCAIJAKQDAQkAZQIJAGQCBQJkQQUCZU0FAmVOCQDMCAIFAmF6CQDMCAIFAWcJAMwIAgUBaAUDbmlsBQNuaWwEAmVQCQECYm0DCQCnAwEJAQJhcgEFAmJuCQCnAwEJAQJhcgEFAmJvBQFmAwkAAAIFAmVQBQJlUAQCZFgICQECYkoBBQJmaQJfMQQCZmoJAQJiZwMJALYCAQUCZFgJALYCAQUCZmUJALYCAQUCYmoDCQAAAgUCZmoFAmZqBAJmawMJAAACBQJkTwUCYlMJAJQKAgkAoAMBCAUCZmoCXzIAAAkAlAoCAAAJAKADAQgFAmZqAl8yBAJlYQgFAmZrAl8xBAJlYggFAmZrAl8yBAJkWQkAZAIFAmVhBQJlYgQCYkwJAGUCBQJmaQUCZFgEAmVlAwkAAAIFAmRPAgVXQVZFUwUEdW5pdAkA2QQBBQJkTwQCZWYDCQBmAgUCYkwAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQwUCYkwFAmVlBQNuaWwFA25pbAQCZWMJAQJiZAIJAQFCAgUCY2EFAmJWCQEBQgIFAmJZBQJiVQQCZWQJAQFFAgUCZWMFAWEEAmNrCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJkWQUCZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEFAmJRBQJiTgkBAmFYBgUCZWEFAmViBQJjdQUCZWQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWQFA25pbAMJAAACBQJjawUCY2sEAmVnCQD8BwQFAmF5AgRidXJuCQDMCAIFAmN1BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJPBQJjdQUDbmlsAwkAAAIFAmVnBQJlZwkAzggCBQJjawUCZWYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BC2dldE9uZVRrblYyAgJkTwJkUAQCZmwJAQJkTgYFAmRPBQJkUAgFAmRvCHBheW1lbnRzCAUCZG8GY2FsbGVyCAUCZG8Mb3JpZ2luQ2FsbGVyCAUCZG8NdHJhbnNhY3Rpb25JZAQCY2sIBQJmbAJfMQQCZFkIBQJmbAJfMgkAlAoCBQJjawUCZFkCZG8BE2dldE9uZVRrblYyUkVBRE9OTFkCAmRPAmZtBAJkdwkBAmFEAAQCYlIJAJEDAgUCZHcFAXEEAmJTCQCRAwIFAmR3BQFyBAJiVAkAkQMCBQJkdwUBcwQCY0cJAQJiTQQCAAUCYlIFAmZtBQR0aGlzBAJmZggFAmNHAl8xBAJmZwgFAmNHAl8yBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZHoJAGUCBQJiWQUCZmYEAmRBCQBlAgUCY2EFAmZnBAJmbgMJAAACBQJkTwUCYlMJAJYKBAUCZEEFAmR6BQJmZwUCZmYDCQAAAgUCZE8FAmJUCQCWCgQFAmR6BQJkQQUCZmYFAmZnCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZm8IBQJmbgJfMQQCZnAIBQJmbgJfMgQCZnEIBQJmbgJfMwQCZnIIBQJmbgJfNAQCZnMAAQQCZmMKAAJkRwkA/AcEBQJhTAIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUCZnEJAMwIAgkApAMBBQJmbwkAzAgCCQCkAwEFAmZwCQDMCAICAAkAzAgCBQJhegkAzAgCBQFnCQDMCAIJAKQDAQUCZnMJAMwIAgUBaAUDbmlsBQNuaWwDCQABAgUCZEcCA0ludAUCZEcJAAIBCQCsAgIJAAMBCQD8BwQFAmFMAgxjYWxjU3dhcFhUb1kJAMwIAgkApAMBBQJmcQkAzAgCCQCkAwEFAmZvCQDMCAIJAKQDAQUCZnAJAMwIAgIACQDMCAIFAmF6CQDMCAIFAWcJAMwIAgkApAMBBQJmcwkAzAgCBQFoBQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJmaQkAZAIFAmZjBQJmcgQCZnQJAQJiSgEFAmZpBAJkWAgFAmZ0Al8xBAJiTAgFAmZ0Al8yCQCUCgIFA25pbAkAlAoCBQJkWAUCYkwCZG8BHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmRPAmZtBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJiUgkAkQMCBQJkdwUBcQQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmZ1CgACZEcJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkTwkAzAgCBQJmbQUDbmlsBQNuaWwDCQABAgUCZEcCCihJbnQsIEludCkFAmRHCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmRPCQDMCAIFAmZtBQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZFgIBQJmdQJfMQQCYkwIBQJmdQJfMgQCY0cJAQJiTQQCAAUCYlIFAmZtBQR0aGlzBAJjaQgFAmNHAl8xBAJjaggFAmNHAl8yBAJmdgkAZAIFAmNpBQJjagQCZVkJAGsDCQBlAgUCZFgFAmZ2BQFhBQJmdgkAlAoCBQNuaWwJAJUKAwUCZFgFAmJMBQJlWQJkbwEJZ2V0Tm9MZXNzAgJmdwJmeAQCY0cJAQJkbgEF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Tw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXMFAmZPAwkAAQIFAmFzAgVPcmRlcgQCZGIFAmFzBAJmUgkBAmFCAAQCZlMJAQJkYQEFAmRiBAJmVAkA9AMDCAUCZGIJYm9keUJ5dGVzCQCRAwIIBQJkYgZwcm9vZnMAAAgFAmRiD3NlbmRlclB1YmxpY0tleQQCZlUJAPQDAwgFAmRiCWJvZHlCeXRlcwkAkQMCCAUCZGIGcHJvb2ZzAAEFAmZSAwMDBQJmUwUCZlQHBQJmVQcGCQECYW4DBQJmUwUCZlQFAmZVAwkAAQIFAmFzAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZWkFAmFzBAJmVgkA9gMBCQEFdmFsdWUBCAUCZWkGc2NyaXB0BAJmVwkA2wQBCQEFdmFsdWUBCQCdCAIFAmF5CQECYWwABAJmWAkA8QcBBQR0aGlzAwMJAAACBQJmVwUCZlYJAQIhPQIFAmZYBQJmVgcGCQD0AwMIBQJmTwlib2R5Qnl0ZXMJAJEDAggFAmZPBnByb29mcwAABQJmUQkA9AMDCAUCZk8JYm9keUJ5dGVzCQCRAwIIBQJmTwZwcm9vZnMAAAUCZlHDd4Cg", "chainId": 84, "height": 2248902, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DPuhx3wZuQU1Tu8mSuGx4eAd7zg9svLDY9YmV25XQW9f Next: HD5zP6fGy7RVoFaYbUxmuWf3VnPWmzzisQ6ERT9XT8F9 Diff:
OldNewDifferences
11251125 let ft = bJ(fi)
11261126 let dX = ft._1
11271127 let bL = ft._2
1128- if (true)
1129- then throw(makeString([toString(dX), toString(bL), toString(ff), toString(fg), toString(fq), toString(fc)], " "))
1130- else $Tuple2(nil, $Tuple2(dX, bL))
1128+ $Tuple2(nil, $Tuple2(dX, bL))
11311129 }
11321130
11331131
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
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 = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = fraction(5, a, 10000)
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 let ab = "%s__fee"
106106
107107 let ac = valueOrElse(getInteger(this, ab), A)
108108
109109 func ad () = "%s__factoryConfig"
110110
111111
112112 func ae () = "%s%s__matcher__publicKey"
113113
114114
115115 func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
116116
117117
118118 func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
119119
120120
121121 func ak () = "%s__shutdown"
122122
123123
124124 func al () = "%s__allowedLpStableScriptHash"
125125
126126
127127 func am () = "%s__feeCollectorAddress"
128128
129129
130130 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
131131
132132
133133 func ar (F) = {
134134 let as = F
135135 if ($isInstanceOf(as, "String"))
136136 then {
137137 let at = as
138138 at
139139 }
140140 else throw("fail cast to String")
141141 }
142142
143143
144144 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145145
146146
147147 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148148
149149
150150 let ay = addressFromStringValue(au(this, M()))
151151
152152 let az = au(this, Z())
153153
154154 func aA () = valueOrElse(getBoolean(ay, ak()), false)
155155
156156
157157 func aB () = fromBase58String(au(ay, ae()))
158158
159159
160160 let aC = addressFromStringValue(au(ay, am()))
161161
162162 func aD () = {
163163 let aE = au(this, X())
164164 let aF = au(this, Y())
165165 let aG = ax(ay, ai(aF))
166166 let ag = ax(ay, ai(aE))
167167 split(au(ay, af(toString(ag), toString(aG))), i)
168168 }
169169
170170
171171 func aH () = split(au(ay, ad()), i)
172172
173173
174174 let aI = aH()
175175
176176 let aJ = valueOrErrorMessage(addressFromString(aI[x]), "Invalid staking contract address")
177177
178178 let aK = valueOrErrorMessage(addressFromString(aI[y]), "Invalid slipage contract address")
179179
180180 let aL = valueOrErrorMessage(addressFromString(aI[z]), "Invalid gwx contract address")
181181
182182 func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], i)
183183
184184
185185 func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], i)
186186
187187
188188 func bb (bc) = if ((bc == "WAVES"))
189189 then wavesBalance(this).available
190190 else assetBalance(this, fromBase58String(bc))
191191
192192
193193 func bd (be,bf) = fraction(be, c, bf)
194194
195195
196196 func bg (bh,bi,bj) = {
197197 let bk = fraction((bh - bi), b, bi)
198198 let bl = ((bj - L(bk)) > d)
199199 if (!(bl))
200200 then throw(("Big slpg: " + toString(bk)))
201201 else $Tuple2(bl, min([bh, bi]))
202202 }
203203
204204
205205 func bm (bn,bo,bp) = {
206206 let bk = fraction(bo, b, bn)
207207 let bq = (bp > bk)
208208 if (if (bq)
209209 then true
210210 else (bo > bn))
211211 then throw(((((((toString(bo) + " ") + toString(bn)) + " ") + toString(bk)) + " ") + toString(bp)))
212212 else bq
213213 }
214214
215215
216216 func br (bs,bt,bu,bv) = {
217217 let bw = B(bu, bs)
218218 let bx = B(bv, bt)
219219 bd(bx, bw)
220220 }
221221
222222
223223 func by (bu,bv,bz) = {
224224 let bA = aD()
225225 let bB = parseIntValue(bA[t])
226226 let bC = parseIntValue(bA[u])
227227 let bD = br(bB, bC, bu, bv)
228228 let bf = B(bu, bB)
229229 let be = B(bv, bC)
230230 let bE = B(bz, a)
231231 let bF = bd(bf, bE)
232232 let bG = bd(be, bE)
233233 [bD, bF, bG]
234234 }
235235
236236
237237 func bH (bu,bv,bz) = {
238238 let bI = by(bu, bv, bz)
239239 [E(bI[0], a), E(bI[1], a), E(bI[2], a)]
240240 }
241241
242242
243243 func bJ (bK) = {
244244 let bL = fraction(bK, ac, a)
245245 $Tuple2((bK - bL), bL)
246246 }
247247
248248
249249 func bM (bN,bO,bP,bQ) = {
250250 let bA = aD()
251251 let bR = bA[q]
252252 let bS = bA[r]
253253 let bT = bA[s]
254254 let bU = parseIntValue(bA[t])
255255 let bV = parseIntValue(bA[u])
256256 let bW = bA[p]
257257 let bX = valueOrErrorMessage(assetInfo(fromBase58String(bR)), "Wrong LP id").quantity
258258 if ((bR != bO))
259259 then throw("Wrong pmt asset")
260260 else {
261261 let bY = bb(bS)
262262 let bZ = B(bY, bU)
263263 let ca = bb(bT)
264264 let cb = B(ca, bV)
265265 let cc = bd(cb, bZ)
266266 let cd = E(cc, a)
267267 let ce = B(bP, a)
268268 let cf = B(bX, a)
269269 let cg = fraction(bZ, ce, cf)
270270 let ch = fraction(cb, ce, cf)
271271 let ci = E(cg, bU)
272272 let cj = E(ch, bV)
273273 let ck = if ((bN == ""))
274274 then nil
275275 else [ScriptTransfer(bQ, ci, if ((bS == "WAVES"))
276276 then unit
277277 else fromBase58String(bS)), ScriptTransfer(bQ, cj, if ((bT == "WAVES"))
278278 then unit
279279 else fromBase58String(bT)), StringEntry(W(toString(bQ), bN), aX(ci, cj, bP, cd, height, lastBlock.timestamp)), IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd)]
280280 $Tuple10(ci, cj, bS, bT, bY, ca, bX, cc, bW, ck)
281281 }
282282 }
283283
284284
285285 func cl (bN,bj,cm,cn,co,cp,bQ,cq,cr,cs,ct,cu,cv) = {
286286 let bA = aD()
287287 let bR = fromBase58String(bA[q])
288288 let cw = bA[r]
289289 let cx = bA[s]
290290 let cy = bA[v]
291291 let cz = bA[w]
292292 let cA = parseIntValue(bA[t])
293293 let cB = parseIntValue(bA[u])
294294 let bW = bA[p]
295295 let cC = valueOrErrorMessage(assetInfo(bR), "Wr lp as").quantity
296296 let bY = if (cq)
297297 then bb(cw)
298298 else if (if (cs)
299299 then (cv == cw)
300300 else false)
301301 then (bb(cw) - cu)
302302 else if (cs)
303303 then bb(cw)
304304 else (bb(cw) - cm)
305305 let ca = if (cq)
306306 then bb(cx)
307307 else if (if (cs)
308308 then (cv == cx)
309309 else false)
310310 then (bb(cx) - cu)
311311 else if (cs)
312312 then bb(cx)
313313 else (bb(cx) - co)
314314 let cD = B(cm, cA)
315315 let cE = B(co, cB)
316316 let cF = bd(cE, cD)
317317 let bZ = B(bY, cA)
318318 let cb = B(ca, cB)
319319 let cG = if ((cC == 0))
320320 then {
321321 let cc = d
322322 let cH = d
323323 let bE = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
324324 $Tuple5(E(bE, a), E(cD, cA), E(cE, cB), bd((cb + cE), (bZ + cD)), cH)
325325 }
326326 else {
327327 let cc = bd(cb, bZ)
328328 let cI = fraction(L((cc - cF)), c, cc)
329329 let cH = B(bj, a)
330330 if (if (if (ct)
331331 then (cc != d)
332332 else false)
333333 then (cI > cH)
334334 else false)
335335 then throw(((("Price slippage " + toString(cI)) + " > ") + toString(cH)))
336336 else {
337337 let cJ = B(cC, a)
338338 let cK = fraction(cD, cc, c)
339339 let cL = fraction(cE, c, cc)
340340 let cM = if ((cK > cE))
341341 then $Tuple2(cL, cE)
342342 else $Tuple2(cD, cK)
343343 let cN = cM._1
344344 let cO = cM._2
345345 let bE = fraction(cJ, cO, cb)
346346 $Tuple5(E(bE, a), E(cN, cA), E(cO, cB), cc, cH)
347347 }
348348 }
349349 let cP = cG._1
350350 let cQ = cG._2
351351 let cR = cG._3
352352 let cd = E(cG._4, a)
353353 let cS = E(cG._5, a)
354354 if ((0 >= cP))
355355 then throw("LP <= 0")
356356 else {
357357 let cT = if (!(cr))
358358 then 0
359359 else cP
360360 let cU = (cm - cQ)
361361 let cV = (co - cR)
362362 let cW = if (if (cs)
363363 then (cv == cw)
364364 else false)
365365 then $Tuple2(cu, 0)
366366 else if (if (cs)
367367 then (cv == cx)
368368 else false)
369369 then $Tuple2(0, cu)
370370 else $Tuple2(cQ, cR)
371371 let cX = cW._1
372372 let cY = cW._2
373373 let cZ = [IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd), StringEntry(T(bQ, bN), aM(cX, cY, cT, cd, bj, cS, height, lastBlock.timestamp, cU, cV))]
374374 $Tuple13(cP, cT, cd, bY, ca, cC, bR, bW, cZ, cU, cV, cn, cp)
375375 }
376376 }
377377
378378
379379 func da (db) = {
380380 let bA = aD()
381381 let dc = bA[r]
382382 let dd = bA[s]
383383 let bW = parseIntValue(bA[p])
384384 let bB = parseIntValue(bA[t])
385385 let bC = parseIntValue(bA[u])
386386 let de = bb(dc)
387387 let df = bb(dd)
388388 let cc = if ((db.orderType == Buy))
389389 then br(bB, bC, (de + db.amount), df)
390390 else br(bB, bC, (de - db.amount), df)
391391 let cd = E(cc, a)
392392 if (if (if (aA())
393393 then true
394394 else (bW == m))
395395 then true
396396 else (bW == n))
397397 then throw("Admin blocked")
398398 else {
399399 let dg = db.assetPair.amountAsset
400400 let dh = if ((dg == unit))
401401 then "WAVES"
402402 else toBase58String(value(dg))
403403 let di = db.assetPair.priceAsset
404404 let dj = if ((di == unit))
405405 then "WAVES"
406406 else toBase58String(value(di))
407407 if (if ((dh != dc))
408408 then true
409409 else (dj != dd))
410410 then throw("Wr assets")
411411 else {
412412 let dk = db.price
413413 let cB = fraction(a, bC, bB)
414414 let dl = H(dk, a, cB)
415415 let dm = if ((db.orderType == Buy))
416416 then (cd >= dl)
417417 else (dl >= cd)
418418 true
419419 }
420420 }
421421 }
422422
423423
424424 func dn (do) = if ((size(do.payments) != 1))
425425 then throw("1 pmnt exp")
426426 else {
427427 let dp = value(do.payments[0])
428428 let bO = value(dp.assetId)
429429 let cu = dp.amount
430430 let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
431431 let ci = cG._1
432432 let cj = cG._2
433433 let bW = parseIntValue(cG._9)
434434 let ck = cG._10
435435 if (if (aA())
436436 then true
437437 else (bW == n))
438438 then throw(("Admin blocked: " + toString(bW)))
439439 else $Tuple5(ci, cj, cu, bO, ck)
440440 }
441441
442442
443443 func dq (dr,V,ds,dt,bj,cr,cs,ct,cu,cv) = {
444444 let cG = cl(V, bj, value(ds).amount, value(ds).assetId, value(dt).amount, value(dt).assetId, dr, false, cr, cs, ct, cu, cv)
445445 let bW = parseIntValue(cG._8)
446446 if (if (if (aA())
447447 then true
448448 else (bW == l))
449449 then true
450450 else (bW == n))
451451 then throw(("Blocked:" + toString(bW)))
452452 else cG
453453 }
454454
455455
456456 func du (dv,bO,bQ,V) = {
457457 let dw = aD()
458458 let bS = dw[r]
459459 let bT = dw[s]
460460 let bY = bb(bS)
461461 let ca = bb(bT)
462462 let dx = bJ(dv)
463463 let cu = dx._1
464464 let bL = dx._2
465465 let dy = if ((V == ""))
466466 then $Tuple2(bY, ca)
467467 else if ((bO == bS))
468468 then if ((dv > bY))
469469 then throw("invalid payment amount")
470470 else $Tuple2((bY - dv), ca)
471471 else if ((bO == bT))
472472 then if ((dv > ca))
473473 then throw("invalid payment amount")
474474 else $Tuple2(bY, (ca - dv))
475475 else throw("wrong pmtAssetId")
476476 let dz = dy._1
477477 let dA = dy._2
478478 let dB = if ((bO == bS))
479479 then $Tuple2(dz, dA)
480480 else $Tuple2(dA, dz)
481481 let dC = dB._1
482482 let dD = dB._2
483483 let dE = 1
484484 let dF = {
485485 let dG = invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)
486486 if ($isInstanceOf(dG, "(Int, Int)"))
487487 then dG
488488 else throw(($getType(invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)) + " couldn't be cast to (Int, Int)"))
489489 }
490490 let dH = if ((bO == bS))
491491 then dF
492492 else $Tuple2(dF._2, dF._1)
493493 let dI = dH._1
494494 let dJ = dH._2
495495 let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, dv, bO)
496496 let dL = dK._2
497497 let dM = dK._7
498498 let ck = dK._9
499499 let cU = dK._10
500500 let cV = dK._11
501501 dK
502502 }
503503
504504
505505 func dN (dO,dP,dQ,dr,dR,dS) = if ((size(dQ) != 1))
506506 then throw("1 pmnt expd")
507507 else {
508508 let dw = aD()
509509 let bR = dw[q]
510510 let bS = dw[r]
511511 let bT = dw[s]
512512 let dT = parseIntValue(dw[t])
513513 let dU = parseIntValue(dw[u])
514514 let dV = dw[p]
515515 let bQ = if ((dr == this))
516516 then dR
517517 else dr
518518 let dp = value(dQ[0])
519519 let bO = value(dp.assetId)
520520 let cu = dp.amount
521521 if ((1000000000 > cu))
522522 then throw("Min pmt 10 LP")
523523 else {
524524 let bN = toBase58String(dS)
525525 if ((bR != toBase58String(bO)))
526526 then throw("Wrong LP")
527527 else {
528528 let bY = bb(bS)
529529 let ca = bb(bT)
530530 let dW = {
531531 let dG = invoke(this, "getOneTknV2READONLY", [dO, cu], nil)
532532 if ($isInstanceOf(dG, "(Int, Int)"))
533533 then dG
534534 else throw(($getType(invoke(this, "getOneTknV2READONLY", [dO, cu], nil)) + " couldn't be cast to (Int, Int)"))
535535 }
536536 let dX = dW._1
537537 let bL = dW._2
538538 let dY = if (if ((dP > 0))
539539 then (dP > dX)
540540 else false)
541541 then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
542542 else dX
543543 let dZ = if ((dO == bS))
544544 then $Tuple2(dY, 0)
545545 else $Tuple2(0, dY)
546546 let ea = dZ._1
547547 let eb = dZ._2
548548 let ec = bd(B(ca, dU), B(bY, dT))
549549 let ed = E(ec, a)
550550 let ee = if ((dO == "WAVES"))
551551 then unit
552552 else fromBase58String(dO)
553553 let ef = if ((bL > 0))
554554 then [ScriptTransfer(aC, bL, ee)]
555555 else nil
556556 let ck = ([ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)] ++ ef)
557557 if ((ck == ck))
558558 then {
559559 let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
560560 if ((eg == eg))
561561 then $Tuple2(ck, dY)
562562 else throw("Strict value is not equal to itself.")
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566 }
567567 }
568568
569569
570570 func eh () = {
571571 let as = getString(N())
572572 if ($isInstanceOf(as, "String"))
573573 then {
574574 let ei = as
575575 fromBase58String(ei)
576576 }
577577 else if ($isInstanceOf(as, "Unit"))
578578 then unit
579579 else throw("Match error")
580580 }
581581
582582
583583 func ej () = {
584584 let as = getString(O())
585585 if ($isInstanceOf(as, "String"))
586586 then {
587587 let ei = as
588588 fromBase58String(ei)
589589 }
590590 else if ($isInstanceOf(as, "Unit"))
591591 then unit
592592 else throw("Match error")
593593 }
594594
595595
596596 let ek = throw("Permission denied")
597597
598598 func el (do) = {
599599 let as = eh()
600600 if ($isInstanceOf(as, "ByteVector"))
601601 then {
602602 let em = as
603603 if ((do.callerPublicKey == em))
604604 then true
605605 else ek
606606 }
607607 else if ($isInstanceOf(as, "Unit"))
608608 then if ((do.caller == this))
609609 then true
610610 else ek
611611 else throw("Match error")
612612 }
613613
614614
615615 @Callable(do)
616616 func constructor (M) = {
617617 let en = el(do)
618618 if ((en == en))
619619 then [StringEntry(M(), M)]
620620 else throw("Strict value is not equal to itself.")
621621 }
622622
623623
624624
625625 @Callable(do)
626626 func setManager (eo) = {
627627 let en = el(do)
628628 if ((en == en))
629629 then {
630630 let ep = fromBase58String(eo)
631631 if ((ep == ep))
632632 then [StringEntry(O(), eo)]
633633 else throw("Strict value is not equal to itself.")
634634 }
635635 else throw("Strict value is not equal to itself.")
636636 }
637637
638638
639639
640640 @Callable(do)
641641 func confirmManager () = {
642642 let bI = ej()
643643 let eq = if (isDefined(bI))
644644 then true
645645 else throw("No pending manager")
646646 if ((eq == eq))
647647 then {
648648 let er = if ((do.callerPublicKey == value(bI)))
649649 then true
650650 else throw("You are not pending manager")
651651 if ((er == er))
652652 then [StringEntry(N(), toBase58String(value(bI))), DeleteEntry(O())]
653653 else throw("Strict value is not equal to itself.")
654654 }
655655 else throw("Strict value is not equal to itself.")
656656 }
657657
658658
659659
660660 @Callable(do)
661661 func put (es,et) = {
662662 let eu = aH()
663663 let ev = valueOrErrorMessage(addressFromString(eu[x]), "Wr st addr")
664664 let ew = valueOrErrorMessage(addressFromString(eu[y]), "Wr sl addr")
665665 if ((0 > es))
666666 then throw("Wrong slippage")
667667 else if ((size(do.payments) != 2))
668668 then throw("2 pmnts expd")
669669 else {
670670 let ex = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], es, true, false, true, 0, "")
671671 let cT = ex._2
672672 let dM = ex._7
673673 let ck = ex._9
674674 let cU = ex._10
675675 let cV = ex._11
676676 let bS = ex._12
677677 let bT = ex._13
678678 let cG = invoke(ay, "emit", [cT], nil)
679679 if ((cG == cG))
680680 then {
681681 let ey = {
682682 let as = cG
683683 if ($isInstanceOf(as, "Address"))
684684 then {
685685 let ez = as
686686 invoke(ez, "emit", [cT], nil)
687687 }
688688 else unit
689689 }
690690 if ((ey == ey))
691691 then {
692692 let eA = if ((cU > 0))
693693 then invoke(ew, "put", nil, [AttachedPayment(bS, cU)])
694694 else nil
695695 if ((eA == eA))
696696 then {
697697 let eB = if ((cV > 0))
698698 then invoke(ew, "put", nil, [AttachedPayment(bT, cV)])
699699 else nil
700700 if ((eB == eB))
701701 then {
702702 let eC = if (et)
703703 then {
704704 let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
705705 if ((eD == eD))
706706 then nil
707707 else throw("Strict value is not equal to itself.")
708708 }
709709 else [ScriptTransfer(do.caller, cT, dM)]
710710 (ck ++ eC)
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 else throw("Strict value is not equal to itself.")
719719 }
720720 }
721721
722722
723723
724724 @Callable(do)
725725 func putOneTkn (dI,dJ,eE,bj,et) = {
726726 let bA = aH()
727727 let ev = valueOrErrorMessage(addressFromString(bA[x]), "Wr st addr")
728728 let ew = valueOrErrorMessage(addressFromString(bA[y]), "Wr sl addr")
729729 let eF = valueOrErrorMessage(addressFromString(bA[z]), "Wr gwx addr")
730730 let eG = aD()
731731 let bS = eG[r]
732732 let bT = eG[s]
733733 let bU = parseIntValue(eG[t])
734734 let bV = parseIntValue(eG[u])
735735 let eH = valueOrElse(getString(this, aa()), "")
736736 let bQ = if ((eH == toString(do.caller)))
737737 then do.originCaller
738738 else do.caller
739739 if (if (if (if ((0 >= bj))
740740 then true
741741 else (0 >= dI))
742742 then true
743743 else (0 >= dJ))
744744 then true
745745 else (0 >= eE))
746746 then throw("Wrong params")
747747 else if ((size(do.payments) != 1))
748748 then throw("1 pmnt expd")
749749 else {
750750 let dp = value(do.payments[0])
751751 let bO = toBase58String(value(dp.assetId))
752752 let eI = dp.amount
753753 let eJ = bJ(eI)
754754 let cu = eJ._1
755755 let bL = eJ._2
756756 if ((10000000 > eI))
757757 then throw("Wrong pmt amt")
758758 else {
759759 let bY = bb(bS)
760760 let ca = bb(bT)
761761 let eK = if ((bO == bS))
762762 then if (if ((eI > bY))
763763 then true
764764 else (dI > cu))
765765 then throw("invalid payment amount")
766766 else $Tuple6((bY - eI), ca, (cu - dI), dJ, 0, 0)
767767 else if ((bO == bT))
768768 then if (if ((eI > ca))
769769 then true
770770 else (dJ > cu))
771771 then throw("invalid payment amount")
772772 else $Tuple6(bY, (ca - eI), 0, 0, (cu - dJ), dI)
773773 else throw("wrong pmtAssetId")
774774 let dz = eK._1
775775 let dA = eK._2
776776 let eL = eK._3
777777 let eM = eK._4
778778 let eN = eK._5
779779 let eO = eK._6
780780 let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
781781 let bn = invoke(eF, "calcD", [toString(toBigInt(((dz + eL) - eO))), toString(toBigInt(((dA + eN) - eM))), az, g, h], nil)
782782 let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
783783 if ((eP == eP))
784784 then {
785785 let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), bj, true, true, true, cu, bO)
786786 let dL = dK._2
787787 let dM = dK._7
788788 let ck = dK._9
789789 let cU = dK._10
790790 let cV = dK._11
791791 let eQ = bg(toBigInt(dL), toBigInt(eE), toBigInt(bj))
792792 let cT = toInt(eQ._2)
793793 let ex = invoke(ay, "emit", [cT], nil)
794794 if ((ex == ex))
795795 then {
796796 let ey = {
797797 let as = ex
798798 if ($isInstanceOf(as, "Address"))
799799 then {
800800 let ez = as
801801 invoke(ez, "emit", [cT], nil)
802802 }
803803 else unit
804804 }
805805 if ((ey == ey))
806806 then {
807807 let eA = if ((cU > 0))
808808 then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
809809 else nil
810810 if ((eA == eA))
811811 then {
812812 let eB = if ((cV > 0))
813813 then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
814814 else nil
815815 if ((eB == eB))
816816 then {
817817 let eC = if (et)
818818 then {
819819 let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
820820 if ((eD == eD))
821821 then nil
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 else [ScriptTransfer(do.caller, cT, dM)]
825825 let ef = if ((bL > 0))
826826 then [ScriptTransfer(aC, bL, fromBase58String(bO))]
827827 else nil
828828 ((ck ++ eC) ++ ef)
829829 }
830830 else throw("Strict value is not equal to itself.")
831831 }
832832 else throw("Strict value is not equal to itself.")
833833 }
834834 else throw("Strict value is not equal to itself.")
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840 }
841841 }
842842
843843
844844
845845 @Callable(do)
846846 func putOneTknV2 (dP,et) = if ((size(do.payments) != 1))
847847 then throw("1 pmnt expd")
848848 else {
849849 let dw = aD()
850850 let bS = dw[r]
851851 let bT = dw[s]
852852 let dT = parseIntValue(dw[t])
853853 let dU = parseIntValue(dw[u])
854854 let bQ = if ((do.caller == this))
855855 then do.originCaller
856856 else do.caller
857857 let dp = value(do.payments[0])
858858 let bO = toBase58String(value(dp.assetId))
859859 let cu = dp.amount
860860 if ((10000000 > cu))
861861 then throw("Wrong pmt amt")
862862 else {
863863 let cG = du(cu, bO, toString(bQ), toBase58String(do.transactionId))
864864 let dL = cG._2
865865 let dM = cG._7
866866 let ck = cG._9
867867 let cU = cG._10
868868 let cV = cG._11
869869 let cT = if (if ((dP > 0))
870870 then (dP > dL)
871871 else false)
872872 then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
873873 else dL
874874 let ex = invoke(ay, "emit", [cT], nil)
875875 if ((ex == ex))
876876 then {
877877 let ey = {
878878 let as = ex
879879 if ($isInstanceOf(as, "Address"))
880880 then {
881881 let ez = as
882882 invoke(ez, "emit", [cT], nil)
883883 }
884884 else unit
885885 }
886886 if ((ey == ey))
887887 then {
888888 let eA = if ((cU > 0))
889889 then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
890890 else nil
891891 if ((eA == eA))
892892 then {
893893 let eB = if ((cV > 0))
894894 then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
895895 else nil
896896 if ((eB == eB))
897897 then {
898898 let eC = if (et)
899899 then {
900900 let eD = invoke(aJ, "stake", nil, [AttachedPayment(dM, cT)])
901901 if ((eD == eD))
902902 then nil
903903 else throw("Strict value is not equal to itself.")
904904 }
905905 else [ScriptTransfer(do.caller, cT, dM)]
906906 let bL = bJ(cu)._2
907907 let ef = if ((bL > 0))
908908 then [ScriptTransfer(aC, bL, fromBase58String(bO))]
909909 else nil
910910 $Tuple2(((ck ++ eC) ++ ef), cT)
911911 }
912912 else throw("Strict value is not equal to itself.")
913913 }
914914 else throw("Strict value is not equal to itself.")
915915 }
916916 else throw("Strict value is not equal to itself.")
917917 }
918918 else throw("Strict value is not equal to itself.")
919919 }
920920 }
921921
922922
923923
924924 @Callable(do)
925925 func putOneTknV2READONLY (eR,eS) = {
926926 let cG = du(eR, eS, "", "")
927927 let dL = cG._2
928928 let dM = cG._7
929929 let ck = cG._9
930930 let cU = cG._10
931931 let cV = cG._11
932932 $Tuple2(nil, dL)
933933 }
934934
935935
936936
937937 @Callable(do)
938938 func putOneTknV2WithBonusREADONLY (eR,eS) = {
939939 let dw = aD()
940940 let bS = dw[r]
941941 let bT = dw[s]
942942 let cG = du(eR, eS, "", "")
943943 let dL = cG._2
944944 let cd = cG._3
945945 let eT = cG._6
946946 let dM = cG._7
947947 let bY = bb(bS)
948948 let ca = bb(bT)
949949 let eU = fraction(ca, a, bY)
950950 let eV = fraction(eR, a, (eU + a))
951951 let eW = (eR - eV)
952952 let eX = fraction(eT, eW, ca)
953953 let eY = fraction((dL - eX), a, eX)
954954 let bL = bJ(eR)._2
955955 $Tuple2(nil, $Tuple3(dL, bL, eY))
956956 }
957957
958958
959959
960960 @Callable(do)
961961 func putForFree (eZ) = if ((0 > eZ))
962962 then throw("Wrong slpg")
963963 else if ((size(do.payments) != 2))
964964 then throw("2 pmnts expd")
965965 else {
966966 let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], eZ, false, false, true, 0, "")
967967 dK._9
968968 }
969969
970970
971971
972972 @Callable(do)
973973 func get () = {
974974 let cG = dn(do)
975975 let fa = cG._1
976976 let cj = cG._2
977977 let cu = cG._3
978978 let bO = cG._4
979979 let ck = cG._5
980980 let fb = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
981981 if ((fb == fb))
982982 then ck
983983 else throw("Strict value is not equal to itself.")
984984 }
985985
986986
987987
988988 @Callable(do)
989989 func getOneTkn (fc,fd,fe,dO,bj) = if ((size(do.payments) != 1))
990990 then throw("1 pmnt expd")
991991 else {
992992 let bA = aD()
993993 let bR = bA[q]
994994 let bS = bA[r]
995995 let bT = bA[s]
996996 let bU = parseIntValue(bA[t])
997997 let bV = parseIntValue(bA[u])
998998 let bW = bA[p]
999999 let eu = aH()
10001000 let eF = valueOrErrorMessage(addressFromString(eu[z]), "Wr sl addr")
10011001 let dp = value(do.payments[0])
10021002 let eH = valueOrElse(getString(this, aa()), "")
10031003 let bQ = if ((eH == toString(do.caller)))
10041004 then do.originCaller
10051005 else do.caller
10061006 let bN = toBase58String(do.transactionId)
10071007 let bO = value(dp.assetId)
10081008 let cu = dp.amount
10091009 if ((1000000000 > cu))
10101010 then throw("Min pmt 10 LP")
10111011 else if (if (if ((0 > bj))
10121012 then true
10131013 else (0 > fc))
10141014 then true
10151015 else (0 > fe))
10161016 then throw("Wrong params")
10171017 else if ((bR != toBase58String(bO)))
10181018 then throw("Wrong LP")
10191019 else {
10201020 let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
10211021 let ff = cG._1
10221022 let fg = cG._2
10231023 let bY = bb(bS)
10241024 let ca = bb(bT)
10251025 let fh = if ((dO == bS))
10261026 then $Tuple7((bY - ff), (ca - fg), fc, fg, 0, 0, (ff + fc))
10271027 else if ((dO == bT))
10281028 then $Tuple7((bY - ff), (ca - fg), 0, 0, fc, ff, (fg + fc))
10291029 else throw("wrong outAssetId")
10301030 let dz = fh._1
10311031 let dA = fh._2
10321032 let eL = fh._3
10331033 let eM = fh._4
10341034 let eN = fh._5
10351035 let eO = fh._6
10361036 let fi = fh._7
10371037 if (if ((0 > eL))
10381038 then true
10391039 else (0 > eN))
10401040 then throw("Wrong calc")
10411041 else {
10421042 let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
10431043 let bn = invoke(eF, "calcD", [toString(((dz - eL) + eO)), toString(((dA + eM) - eN)), az, g, h], nil)
10441044 let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
10451045 if ((eP == eP))
10461046 then {
10471047 let dX = bJ(fi)._1
10481048 let fj = bg(toBigInt(dX), toBigInt(fe), toBigInt(bj))
10491049 if ((fj == fj))
10501050 then {
10511051 let fk = if ((dO == bS))
10521052 then $Tuple2(toInt(fj._2), 0)
10531053 else $Tuple2(0, toInt(fj._2))
10541054 let ea = fk._1
10551055 let eb = fk._2
10561056 let dY = (ea + eb)
10571057 let bL = (fi - dX)
10581058 let ee = if ((dO == "WAVES"))
10591059 then unit
10601060 else fromBase58String(dO)
10611061 let ef = if ((bL > 0))
10621062 then [ScriptTransfer(aC, bL, ee)]
10631063 else nil
10641064 let ec = bd(B(ca, bV), B(bY, bU))
10651065 let ed = E(ec, a)
10661066 let ck = [ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)]
10671067 if ((ck == ck))
10681068 then {
10691069 let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
10701070 if ((eg == eg))
10711071 then (ck ++ ef)
10721072 else throw("Strict value is not equal to itself.")
10731073 }
10741074 else throw("Strict value is not equal to itself.")
10751075 }
10761076 else throw("Strict value is not equal to itself.")
10771077 }
10781078 else throw("Strict value is not equal to itself.")
10791079 }
10801080 }
10811081 }
10821082
10831083
10841084
10851085 @Callable(do)
10861086 func getOneTknV2 (dO,dP) = {
10871087 let fl = dN(dO, dP, do.payments, do.caller, do.originCaller, do.transactionId)
10881088 let ck = fl._1
10891089 let dY = fl._2
10901090 $Tuple2(ck, dY)
10911091 }
10921092
10931093
10941094
10951095 @Callable(do)
10961096 func getOneTknV2READONLY (dO,fm) = {
10971097 let dw = aD()
10981098 let bR = dw[q]
10991099 let bS = dw[r]
11001100 let bT = dw[s]
11011101 let cG = bM("", bR, fm, this)
11021102 let ff = cG._1
11031103 let fg = cG._2
11041104 let bY = bb(bS)
11051105 let ca = bb(bT)
11061106 let dz = (bY - ff)
11071107 let dA = (ca - fg)
11081108 let fn = if ((dO == bS))
11091109 then $Tuple4(dA, dz, fg, ff)
11101110 else if ((dO == bT))
11111111 then $Tuple4(dz, dA, ff, fg)
11121112 else throw("wrong outAssetId")
11131113 let fo = fn._1
11141114 let fp = fn._2
11151115 let fq = fn._3
11161116 let fr = fn._4
11171117 let fs = 1
11181118 let fc = {
11191119 let dG = invoke(aL, "calcSwapXToY", [toString(fq), toString(fo), toString(fp), "", az, g, toString(fs), h], nil)
11201120 if ($isInstanceOf(dG, "Int"))
11211121 then dG
11221122 else throw(($getType(invoke(aL, "calcSwapXToY", [toString(fq), toString(fo), toString(fp), "", az, g, toString(fs), h], nil)) + " couldn't be cast to Int"))
11231123 }
11241124 let fi = (fc + fr)
11251125 let ft = bJ(fi)
11261126 let dX = ft._1
11271127 let bL = ft._2
1128- if (true)
1129- then throw(makeString([toString(dX), toString(bL), toString(ff), toString(fg), toString(fq), toString(fc)], " "))
1130- else $Tuple2(nil, $Tuple2(dX, bL))
1128+ $Tuple2(nil, $Tuple2(dX, bL))
11311129 }
11321130
11331131
11341132
11351133 @Callable(do)
11361134 func getOneTknV2WithBonusREADONLY (dO,fm) = {
11371135 let dw = aD()
11381136 let bS = dw[r]
11391137 let bT = dw[s]
11401138 let bR = dw[q]
11411139 let bY = bb(bS)
11421140 let ca = bb(bT)
11431141 let fu = {
11441142 let dG = invoke(this, "getOneTknV2READONLY", [dO, fm], nil)
11451143 if ($isInstanceOf(dG, "(Int, Int)"))
11461144 then dG
11471145 else throw(($getType(invoke(this, "getOneTknV2READONLY", [dO, fm], nil)) + " couldn't be cast to (Int, Int)"))
11481146 }
11491147 let dX = fu._1
11501148 let bL = fu._2
11511149 let cG = bM("", bR, fm, this)
11521150 let ci = cG._1
11531151 let cj = cG._2
11541152 let fv = (ci + cj)
11551153 let eY = fraction((dX - fv), a, fv)
11561154 $Tuple2(nil, $Tuple3(dX, bL, eY))
11571155 }
11581156
11591157
11601158
11611159 @Callable(do)
11621160 func getNoLess (fw,fx) = {
11631161 let cG = dn(do)
11641162 let ci = cG._1
11651163 let cj = cG._2
11661164 let cu = cG._3
11671165 let bO = cG._4
11681166 let ck = cG._5
11691167 if ((fw > ci))
11701168 then throw(((("Failed: " + toString(ci)) + " < ") + toString(fw)))
11711169 else if ((fx > cj))
11721170 then throw(((("Failed: " + toString(cj)) + " < ") + toString(fx)))
11731171 else {
11741172 let fy = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
11751173 if ((fy == fy))
11761174 then ck
11771175 else throw("Strict value is not equal to itself.")
11781176 }
11791177 }
11801178
11811179
11821180
11831181 @Callable(do)
11841182 func unstakeAndGet (bK) = {
11851183 let fz = if ((size(do.payments) != 0))
11861184 then throw("No pmnts expd")
11871185 else true
11881186 if ((fz == fz))
11891187 then {
11901188 let bA = aD()
11911189 let fA = aH()
11921190 let dM = fromBase58String(bA[q])
11931191 let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
11941192 let fC = invoke(fB, "unstake", [toBase58String(dM), bK], nil)
11951193 if ((fC == fC))
11961194 then {
11971195 let cG = bM(toBase58String(do.transactionId), toBase58String(dM), bK, do.caller)
11981196 let bW = parseIntValue(cG._9)
11991197 let ck = cG._10
12001198 let fD = if (if (aA())
12011199 then true
12021200 else (bW == n))
12031201 then throw(("Blocked: " + toString(bW)))
12041202 else true
12051203 if ((fD == fD))
12061204 then {
12071205 let fE = invoke(ay, "burn", [bK], [AttachedPayment(dM, bK)])
12081206 if ((fE == fE))
12091207 then ck
12101208 else throw("Strict value is not equal to itself.")
12111209 }
12121210 else throw("Strict value is not equal to itself.")
12131211 }
12141212 else throw("Strict value is not equal to itself.")
12151213 }
12161214 else throw("Strict value is not equal to itself.")
12171215 }
12181216
12191217
12201218
12211219 @Callable(do)
12221220 func unstakeAndGetOneTkn (fF,dO,dP) = {
12231221 let fz = if ((size(do.payments) != 0))
12241222 then throw("No pmnts expd")
12251223 else true
12261224 if ((fz == fz))
12271225 then {
12281226 let bA = aD()
12291227 let fA = aH()
12301228 let dM = fromBase58String(bA[q])
12311229 let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
12321230 let fC = invoke(fB, "unstake", [toBase58String(dM), fF], nil)
12331231 if ((fC == fC))
12341232 then {
12351233 let fG = dN(dO, dP, [AttachedPayment(dM, fF)], do.caller, do.originCaller, do.transactionId)
12361234 let ck = fG._1
12371235 let dY = fG._2
12381236 $Tuple2(ck, dY)
12391237 }
12401238 else throw("Strict value is not equal to itself.")
12411239 }
12421240 else throw("Strict value is not equal to itself.")
12431241 }
12441242
12451243
12461244
12471245 @Callable(do)
12481246 func activate (fH,fI) = if ((toString(do.caller) != toString(ay)))
12491247 then throw("denied")
12501248 else $Tuple2([StringEntry(X(), fH), StringEntry(Y(), fI)], "success")
12511249
12521250
12531251
12541252 @Callable(do)
12551253 func setS (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
12561254 then ek
12571255 else [StringEntry(fJ, fD)]
12581256
12591257
12601258
12611259 @Callable(do)
12621260 func setI (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
12631261 then ek
12641262 else [IntegerEntry(fJ, fD)]
12651263
12661264
12671265
12681266 @Callable(do)
12691267 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
12701268
12711269
12721270
12731271 @Callable(do)
12741272 func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
12751273
12761274
12771275
12781276 @Callable(do)
12791277 func calcPricesWrapperREADONLY (bu,bv,bz) = {
12801278 let fK = by(bu, bv, bz)
12811279 $Tuple2(nil, [toString(fK[0]), toString(fK[1]), toString(fK[2])])
12821280 }
12831281
12841282
12851283
12861284 @Callable(do)
12871285 func fromX18WrapperREADONLY (F,fL) = $Tuple2(nil, E(parseBigIntValue(F), fL))
12881286
12891287
12901288
12911289 @Callable(do)
12921290 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
12931291
12941292
12951293
12961294 @Callable(do)
12971295 func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
12981296
12991297
13001298
13011299 @Callable(do)
13021300 func estimatePutOperationWrapperREADONLY (bN,bj,cm,cn,co,cp,fM,cq,cr) = $Tuple2(nil, cl(bN, bj, cm, cn, co, cp, fM, cq, cr, true, false, 0, ""))
13031301
13041302
13051303
13061304 @Callable(do)
13071305 func estimateGetOperationWrapperREADONLY (bN,fN,bP,fM) = {
13081306 let cG = bM(bN, fN, bP, addressFromStringValue(fM))
13091307 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
13101308 }
13111309
13121310
13131311
13141312 @Callable(do)
13151313 func getFeeREADONLY () = $Tuple2(nil, ac)
13161314
13171315
13181316 @Verifier(fO)
13191317 func fP () = {
13201318 let fQ = {
13211319 let as = eh()
13221320 if ($isInstanceOf(as, "ByteVector"))
13231321 then {
13241322 let em = as
13251323 em
13261324 }
13271325 else if ($isInstanceOf(as, "Unit"))
13281326 then fO.senderPublicKey
13291327 else throw("Match error")
13301328 }
13311329 let as = fO
13321330 if ($isInstanceOf(as, "Order"))
13331331 then {
13341332 let db = as
13351333 let fR = aB()
13361334 let fS = da(db)
13371335 let fT = sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey)
13381336 let fU = sigVerify(db.bodyBytes, db.proofs[1], fR)
13391337 if (if (if (fS)
13401338 then fT
13411339 else false)
13421340 then fU
13431341 else false)
13441342 then true
13451343 else an(fS, fT, fU)
13461344 }
13471345 else if ($isInstanceOf(as, "SetScriptTransaction"))
13481346 then {
13491347 let ei = as
13501348 let fV = blake2b256(value(ei.script))
13511349 let fW = fromBase64String(value(getString(ay, al())))
13521350 let fX = scriptHash(this)
13531351 if (if ((fW == fV))
13541352 then (fX != fV)
13551353 else false)
13561354 then true
13571355 else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
13581356 }
13591357 else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
13601358 }
13611359

github/deemru/w8io/026f985 
151.75 ms