tx · DdWkR7ZZsbA5Y1groDktXxQ1dwBZpP3a5abCkKLiEFV8

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.02800000 Waves

2022.10.24 11:22 [2286247] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "DdWkR7ZZsbA5Y1groDktXxQ1dwBZpP3a5abCkKLiEFV8", "fee": 2800000, "feeAssetId": null, "timestamp": 1666599860586, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "31puUpPXW7v1eJj96ow2zLFDzPN3xBTVqX6NS5EbwqXrbTNqT662stqXTTU43SsSxipKqXzSCCpQvrh9tyDEBDkv" ], "script": "base64:BgKKHwgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIGa2V5RmVlIgNmZWUiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIDZmNhIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE2NTA5MTY4NTQiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgNtb2EiBW9yZGVyIgdhbXRBc0lkIgZwckFzSWQiD2FjY0FtdEFzQmFsYW5jZSIOYWNjUHJBc0JhbGFuY2UiCm9yQW10QXNzZXQiCm9yQW10QXNTdHIiCW9yUHJBc3NldCIJb3JQckFzU3RyIgpvcmRlclByaWNlIg5jYXN0T3JkZXJQcmljZSIRaXNPcmRlclByaWNlVmFsaWQiAmNnIgFpIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiBGdldEQiAnhwIgFuIgN4cDAiA3hwMSIKYVByZWNpc2lvbiIBYSIBcyIDYW5uIgt4cDBfeHAxX25fbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgRjYWxjIgNhY2MiA2N1ciINJHQwMjE0MDYyMTQyNiIBZCIFZm91bmQiAmRwIgVkTmV4dCIFZERpZmYiA2FyciINJHQwMjE4NDcyMTg5NCICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMjM5NDIyNDE0IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyNzIxMjI3NjgiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyIKcG9vbENvbmZpZyIPbHBBc3NldEVtaXNzaW9uIg1jaGVjaEVtaXNzaW9uIg0kdDAyMzUyNzIzOTg5IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjM5OTUyNDE3MSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNjM1ODI2NDY2IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI2NjUzMjY5NjAiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIgJtbSICcGsiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzMTc3NDMxODk5Igdlc3RpbUxQIgdtYXhTbHBnIgZlc3RQdXQiCW91dEFtdEFtdCINJHQwMzQwODIzNDIzNyINbHBBc3NldEFtb3VudCIKbHBFbWlzc2lvbiIFaW5kZXgiBG5ld1kiAmR5Igt0b3RhbEdldFJhdyINJHQwMzUwMTYzNTA2NSINY2hlY2tUb3RhbEdldCINJHQwMzU0NzYzNTU5MSIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINdW5zdGFrZUFtb3VudCINJHQwMzc5ODczODE3NSIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDM4NDM0Mzg1MzEiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaF4AAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABaQIDMTAwAAFqAgExAAFrAgJfXwABbAIAAAFtAAEAAW4AAgABbwADAAFwAAQAAXEAAQABcgACAAFzAAMAAXQABAABdQAFAAF2AAYAAXcABwABeAAIAAF5AAkAAXoAAQABQQAGAAFCAAcAAUMACgABRAkAawMABQUBYQCQTgEBRQIBRgFHCQC8AgMJALYCAQUBRgUBYwkAtgIBBQFHAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWMBAUsDAUwBTQFOCQBrAwUBTAUBTQUBTgEBTwEBSQMJAL8CAgUBZAUBSQkAvgIBBQFJBQFJAQFQAQFJAwkAvwICBQFkBQFJCQC+AgEFAUkFAUkBAVEAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFSAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVMAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVQAAhElcyVzX19wcmljZV9fbGFzdAEBVQIBVgFXCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVgkAzAgCCQCkAwEFAVcFA25pbAUBawEBWAIBWQFaCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWQICX18FAVoBAmFhAgFZAVoJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFZAgJfXwUBWgECYWIAAg8lc19fYW1vdW50QXNzZXQBAmFjAAIOJXNfX3ByaWNlQXNzZXQBAmFkAAIHJXNfX2FtcAECYWUAAg0lc19fYWRkb25BZGRyAAJhZgIHJXNfX2ZlZQACYWcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWYFAUQBAmFoAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFpAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhagICYWsCYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFrAgJfXwUCYWwCCF9fY29uZmlnAQJhbQECYW4JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW4BAmFvAAIMJXNfX3NodXRkb3duAQJhcAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhcQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcgMCYXMCYXQCYXUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXMCCyBzbmRyVmFsaWQ9CQClAwEFAmF0AgwgbXRjaHJWYWxpZD0JAKUDAQUCYXUBAmF2AQFJBAJhdwUBSQMJAAECBQJhdwIGU3RyaW5nBAJheAUCYXcFAmF4CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXkCAmF6AmFBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXoFAmFBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF6CQDMCAICAS4JAMwIAgUCYUEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUICAmF6AmFBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXoFAmFBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF6CQDMCAICAS4JAMwIAgUCYUEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYUMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFBHRoaXMJAQFRAAACYUQJAQJheQIFBHRoaXMJAQJhZAABAmFFAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhQwkBAmFvAAcBAmFGAAkA2QQBCQECYXkCBQJhQwkBAmFpAAACYUcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFAmFDCQECYXEAAQJhSAAEAmFJCQECYXkCBQR0aGlzCQECYWIABAJhSgkBAmF5AgUEdGhpcwkBAmFjAAQCYUsJAQJhQgIFAmFDCQECYW0BBQJhSgQCYWsJAQJhQgIFAmFDCQECYW0BBQJhSQkAtQkCCQECYXkCBQJhQwkBAmFqAgkApAMBBQJhawkApAMBBQJhSwUBawECYUwACQC1CQIJAQJheQIFAmFDCQECYWgABQFrAAJhTQkBAmFMAAACYU4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFNBQF6AiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYU8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFNBQFCAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYVAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFNBQFDAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJhUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYU0FAUECHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFSCgJhUwJhVAJhVQJhVgJhVwJhWAJhWQJhWgJiYQJiYgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJhVAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYCQDMCAIJAKQDAQUCYVkJAMwIAgkApAMBBQJhWgkAzAgCCQCkAwEFAmJhCQDMCAIJAKQDAQUCYmIFA25pbAUBawECYmMGAmJkAmJlAmJmAmFWAmFZAmFaCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhWQkAzAgCCQCkAwEFAmFaBQNuaWwFAWsBAmJnAQJiaAMJAAACBQJiaAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmgBAmJpAgJiagJiawkAvAIDBQJiagUBYwUCYmsBAmJsAwJibQJibgJibwQCYnAJALwCAwkAuAICBQJibQUCYm4FAWIFAmJuBAJicQkAvwICCQC4AgIFAmJvCQEBTwEFAmJwBQFkAwkBASEBBQJicQkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJicAkAlAoCBQJicQkAmQMBCQDMCAIFAmJtCQDMCAIFAmJuBQNuaWwBAmJyAwJicwJidAJidQQCYnAJALwCAwUCYnQFAWIFAmJzBAJidgkAvwICBQJidQUCYnADAwUCYnYGCQC/AgIFAmJ0BQJicwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnQCASAJAKYDAQUCYnMCASAJAKYDAQUCYnACASAJAKYDAQUCYnUFAmJ2AQJidwQCYngCYnkCYnoCYkEEAmJCCQEBRQIFAmJ6BQJieAQCYkMJAQFFAgUCYkEFAmJ5CQECYmkCBQJiQwUCYkIBAmJEAwJiegJiQQJiRQQCYkYJAQJhSAAEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXYEAmJICQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXcEAmJJCQECYncEBQJiRwUCYkgFAmJ6BQJiQQQCYmsJAQFFAgUCYnoFAmJHBAJiagkBAUUCBQJiQQUCYkgEAmJKCQEBRQIFAmJFBQFhBAJiSwkBAmJpAgUCYmsFAmJKBAJiTAkBAmJpAgUCYmoFAmJKCQDMCAIFAmJJCQDMCAIFAmJLCQDMCAIFAmJMBQNuaWwBAmJNAwJiegJiQQJiRQQCYk4JAQJiRAMFAmJ6BQJiQQUCYkUJAMwIAgkBAUgCCQCRAwIFAmJOAAAFAWEJAMwIAgkBAUgCCQCRAwIFAmJOAAEFAWEJAMwIAgkBAUgCCQCRAwIFAmJOAAIFAWEFA25pbAECYk8BAmJQBAJiUQkAawMFAmJQBQJhZwUBYQkAlAoCCQBlAgUCYlAFAmJRBQJiUQECYlIEAmJTAmJUAmJVAmJWBAJiRgkBAmFIAAQCYlcJAJEDAgUCYkYFAXMEAmJYCQCRAwIFAmJGBQF0BAJiWQkAkQMCBQJiRgUBdQQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdgQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdwQCY2IJAJEDAgUCYkYFAXIEAmNjCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlcCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlcFAmJUCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjZAkBAmJnAQUCYlgEAmNlCQEBRQIFAmNkBQJiWgQCY2YJAQJiZwEFAmJZBAJjZwkBAUUCBQJjZgUCY2EEAmNoCQECYmkCBQJjZwUCY2UEAmNpCQEBSAIFAmNoBQFhBAJjagkBAUUCBQJiVQUBYQQCY2sJAQFFAgUCY2MFAWEEAmNsCQC8AgMFAmNlBQJjagUCY2sEAmNtCQC8AgMFAmNnBQJjagUCY2sEAmNuCQEBSAIFAmNsBQJiWgQCY28JAQFIAgUCY20FAmNhBAJjcAMJAAACBQJiUwIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlYFAmNuAwkAAAIFAmJYAgVXQVZFUwUEdW5pdAkA2QQBBQJiWAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVgUCY28DCQAAAgUCYlkCBVdBVkVTBQR1bml0CQDZBAEFAmJZCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIJAKUIAQUCYlYFAmJTCQECYmMGBQJjbgUCY28FAmJVBQJjaQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQABQJjaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaQUDbmlsCQCcCgoFAmNuBQJjbwUCYlgFAmJZBQJjZAUCY2YFAmNjBQJjaAUCY2IFAmNwAQJjcQ0CYlMCYm8CY3ICY3MCY3QCY3UCYlYCY3YCY3cCY3gCY3kCY3oCY0EEAmJGCQECYUgABAJiVwkA2QQBCQCRAwIFAmJGBQFzBAJjQgkAkQMCBQJiRgUBdAQCY0MJAJEDAgUCYkYFAXUEAmNECQCRAwIFAmJGBQF4BAJjRQkAkQMCBQJiRgUBeQQCY0YJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdgQCY0cJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdwQCY2IJAJEDAgUCYkYFAXIEAmNICAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJXAghXciBscCBhcwhxdWFudGl0eQQCY2QDBQJjdgkBAmJnAQUCY0IDAwUCY3gJAAACBQJjQQUCY0IHCQBlAgkBAmJnAQUCY0IFAmN6AwUCY3gJAQJiZwEFAmNCCQBlAgkBAmJnAQUCY0IFAmNyBAJjZgMFAmN2CQECYmcBBQJjQwMDBQJjeAkAAAIFAmNBBQJjQwcJAGUCCQECYmcBBQJjQwUCY3oDBQJjeAkBAmJnAQUCY0MJAGUCCQECYmcBBQJjQwUCY3QEAmNJCQEBRQIFAmNyBQJjRgQCY0oJAQFFAgUCY3QFAmNHBAJjSwkBAmJpAgUCY0oFAmNJBAJjZQkBAUUCBQJjZAUCY0YEAmNnCQEBRQIFAmNmBQJjRwQCY0wDCQAAAgUCY0gAAAQCY2gFAWQEAmNNBQFkBAJiSgkAdgYJALkCAgUCY0kFAmNKAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJKBQFhCQEBSAIFAmNJBQJjRgkBAUgCBQJjSgUCY0cJAQJiaQIJALcCAgUCY2cFAmNKCQC3AgIFAmNlBQJjSQUCY00EAmNoCQECYmkCBQJjZwUCY2UEAmNOCQC8AgMJAQFPAQkAuAICBQJjaAUCY0sFAWMFAmNoBAJjTQkBAUUCBQJibwUBYQMDAwUCY3kJAQIhPQIFAmNoBQFkBwkAvwICBQJjTgUCY00HCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNOAgMgPiAJAKYDAQUCY00EAmNPCQEBRQIFAmNIBQFhBAJjUAkAvAIDBQJjSQUCY2gFAWMEAmNRCQC8AgMFAmNKBQFjBQJjaAQCY1IDCQC/AgIFAmNQBQJjSgkAlAoCBQJjUQUCY0oJAJQKAgUCY0kFAmNQBAJjUwgFAmNSAl8xBAJjVAgFAmNSAl8yBAJiSgkAvAIDBQJjTwUCY1QFAmNnCQCXCgUJAQFIAgUCYkoFAWEJAQFIAgUCY1MFAmNGCQEBSAIFAmNUBQJjRwUCY2gFAmNNBAJjVQgFAmNMAl8xBAJjVggFAmNMAl8yBAJjVwgFAmNMAl8zBAJjaQkBAUgCCAUCY0wCXzQFAWEEAmNYCQEBSAIIBQJjTAJfNQUBYQMJAGcCAAAFAmNVCQACAQIHTFAgPD0gMAQCY1kDCQEBIQEFAmN3AAAFAmNVBAJjWgkAZQIFAmNyBQJjVgQCZGEJAGUCBQJjdAUCY1cEAmRiAwMFAmN4CQAAAgUCY0EFAmNCBwkAlAoCBQJjegAAAwMFAmN4CQAAAgUCY0EFAmNDBwkAlAoCAAAFAmN6CQCUCgIFAmNWBQJjVwQCZGMIBQJkYgJfMQQCZGQIBQJkYgJfMgQCZGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAAUCY2kJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2kJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCBQJiVgUCYlMJAQJhUgoFAmRjBQJkZAUCY1kFAmNpBQJibwUCY1gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNaBQJkYQUDbmlsCQCfCg0FAmNVBQJjWQUCY2kFAmNkBQJjZgUCY0gFAmJXBQJjYgUCZGUFAmNaBQJkYQUCY3MFAmN1AQJkZgECZGcEAmJGCQECYUgABAJkaAkAkQMCBQJiRgUBdAQCZGkJAJEDAgUCYkYFAXUEAmNiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXIEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXYEAmJICQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXcEAmRqCQECYmcBBQJkaAQCZGsJAQJiZwEFAmRpBAJjaAMJAAACCAUCZGcJb3JkZXJUeXBlBQNCdXkJAQJidwQFAmJHBQJiSAkAZAIFAmRqCAUCZGcGYW1vdW50BQJkawkBAmJ3BAUCYkcFAmJICQBlAgUCZGoIBQJkZwZhbW91bnQFAmRrBAJjaQkBAUgCBQJjaAUBYQMDAwkBAmFFAAYJAAACBQJjYgUBbwYJAAACBQJjYgUBcAkAAgECDUFkbWluIGJsb2NrZWQEAmRsCAgFAmRnCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZG0DCQAAAgUCZGwFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRsBAJkbggIBQJkZwlhc3NldFBhaXIKcHJpY2VBc3NldAQCZG8DCQAAAgUCZG4FBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRuAwMJAQIhPQIFAmRtBQJkaAYJAQIhPQIFAmRvBQJkaQkAAgECCVdyIGFzc2V0cwQCZHAIBQJkZwVwcmljZQQCY0cJAGsDBQFhBQJiSAUCYkcEAmRxCQEBSwMFAmRwBQFhBQJjRwQCZHIDCQAAAggFAmRnCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2kFAmRxCQBnAgUCZHEFAmNpBgECZHMBAmR0AwkBAiE9AgkAkAMBCAUCZHQIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmR1CQEFdmFsdWUBCQCRAwIIBQJkdAhwYXltZW50cwAABAJiVAkBBXZhbHVlAQgFAmR1B2Fzc2V0SWQEAmN6CAUCZHUGYW1vdW50BAJjTAkBAmJSBAkA2AQBCAUCZHQNdHJhbnNhY3Rpb25JZAkA2AQBBQJiVAUCY3oIBQJkdAZjYWxsZXIEAmNuCAUCY0wCXzEEAmNvCAUCY0wCXzIEAmNiCQENcGFyc2VJbnRWYWx1ZQEIBQJjTAJfOQQCY3AIBQJjTANfMTADAwkBAmFFAAYJAAACBQJjYgUBcAkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNiCQCXCgUFAmNuBQJjbwUCY3oFAmJUBQJjcAECZHYKAmR3AVoCZHgCZHkCYm8CY3cCY3gCY3kCY3oCY0EEAmNMCQECY3ENBQFaBQJibwgJAQV2YWx1ZQEFAmR4BmFtb3VudAgJAQV2YWx1ZQEFAmR4B2Fzc2V0SWQICQEFdmFsdWUBBQJkeQZhbW91bnQICQEFdmFsdWUBBQJkeQdhc3NldElkBQJkdwkAAAIFAVoCAAUCY3cFAmN4BQJjeQUCY3oFAmNBBAJjYgkBDXBhcnNlSW50VmFsdWUBCAUCY0wCXzgDAwMJAQJhRQAGCQAAAgUCY2IFAW4GCQAAAgUCY2IFAXAJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNiBQJjTAECZHoBAmRBBAJkQgUBZwQCZEMJAJEDAgUCZEEAAAQCZEQJAJEDAgUCZEEAAQQCZEUJAKcDAQUBaQQCZEYJALkCAgkApwMBBQJhRAUCZEUEAmRHCQC3AgIFAmRDBQJkRAMJAAACBQJkRwUBZQUBZQQCZEgJALkCAgUCZEYFAmRCBAJkSQkAuQICCQC5AgIJALkCAgUCZEMFAmREBQJkQgUCZEIEAmRKCQC6AgIJALkCAgUCZEgFAmRHBQJkRQQCZEsJALgCAgUCZEgFAmRFBAJkTAkAtwICBQJkQgUBZgoBAmRNAgJkTgJkTwQCZFAFAmROBAJkUQgFAmRQAl8xBAJkUggFAmRQAl8yAwkBAiE9AgUCZFIFBHVuaXQFAmROBAJkUwkAugICCQC5AgIJALkCAgUCZFEFAmRRBQJkUQUCZEkEAmRUCQC6AgIJALkCAgkAtwICBQJkSgkAuQICBQJkUwUCZEIFAmRRCQC3AgIJALoCAgkAuQICBQJkSwUCZFEFAmRFCQC5AgIFAmRMBQJkUwQCZFUJAQFQAQkAuAICBQJkVAkBBXZhbHVlAQUCZFEDCQDAAgIFAWYFAmRVCQCUCgIFAmRUBQJkTwkAlAoCBQJkVAUEdW5pdAQCZFYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZFcKAAJkWAUCZFYKAAJkWQkAkAMBBQJkWAoAAmRaCQCUCgIFAmRHBQR1bml0CgECZWECAmViAmVjAwkAZwIFAmVjBQJkWQUCZWIJAQJkTQIFAmViCQCRAwIFAmRYBQJlYwoBAmVkAgJlYgJlYwMJAGcCBQJlYwUCZFkFAmViCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlZAIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIFAmRaAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRRCAUCZFcCXzEEAmRSCAUCZFcCXzIDCQECIT0CBQJkUgUEdW5pdAUCZFEJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFEBAmVlAwJkQQJkdAJlZgQCZEIFAWcEAmVnCQCRAwIFAmRBAwkAAAIFAmR0AAAAAQAABAJkRQkApwMBBQFpBAJkRgkAuQICCQCnAwEFAmFEBQJkRQQCZEcFAmVnBAJkSAkAuQICBQJkRgUCZEIEAmVoCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZWYFAmVmCQC5AgIFAmVnBQJkQgUCZWYFAmRFCQC5AgIFAmRIBQJkQgQCZWkJALgCAgkAtwICBQJkRwkAugICCQC5AgIFAmVmBQJkRQUCZEgFAmVmCgECZE0CAmROAmRPBAJlagUCZE4EAmVrCAUCZWoCXzEEAmRSCAUCZWoCXzIDCQECIT0CBQJkUgUEdW5pdAUCZE4EAmVsCQC6AgIJALcCAgkAuQICBQJlawUCZWsFAmVoCQC3AgIJALkCAgUBZwUCZWsFAmVpBAJlbQkBAVABCQC4AgIFAmVsCQEFdmFsdWUBBQJlawMJAMACAgUBZgUCZW0JAJQKAgUCZWwFAmRPCQCUCgIFAmVsBQR1bml0BAJkVgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlbgoAAmRYBQJkVgoAAmRZCQCQAwEFAmRYCgACZFoJAJQKAgUCZWYFBHVuaXQKAQJlYQICZWICZWMDCQBnAgUCZWMFAmRZBQJlYgkBAmRNAgUCZWIJAJEDAgUCZFgFAmVjCgECZWQCAmViAmVjAwkAZwIFAmVjBQJkWQUCZWIJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVkAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgUCZFoAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZWsIBQJlbgJfMQQCZFIIBQJlbgJfMgMJAQIhPQIFAmRSBQR1bml0BQJlawkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlawECZW8EAmVwAmJUAmJWAVoEAmVxCQECYUgABAJiWAkAkQMCBQJlcQUBdAQCYlkJAJEDAgUCZXEFAXUEAmJXCQCRAwIFAmVxBQFzBAJjRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVxBQF2BAJjRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVxBQF3BAJlcgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlcCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmVzAwkAvwICBQJlcgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmVzBQJlcwQCY2QJAQJiZwEFAmJYBAJjZgkBAmJnAQUCYlkEAmV0AwkAAAIFAVoCAAkAlAoCBQJjZAUCY2YDCQAAAgUCYlQFAmJYAwkAZgIFAmVwBQJjZAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmNkBQJlcAUCY2YDCQAAAgUCYlQFAmJZAwkAZgIFAmVwBQJjZgkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY2QJAGUCBQJjZgUCZXAJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJldQgFAmV0Al8xBAJldggFAmV0Al8yBAJldwMJAAACBQJiVAUCYlgJAJQKAgUCZXAAAAMJAAACBQJiVAUCYlkJAJQKAgAABQJlcAkAAgECD2ludmFsaWQgcGF5bWVudAQCZXgIBQJldwJfMQQCZXkIBQJldwJfMgQCZXoICQECYk8BBQJleAJfMQQCZUEICQECYk8BBQJleQJfMQQCYlEICQECYk8BBQJlcAJfMgQCZUIJAGQCBQJldQUCZXoEAmVDCQBkAgUCZXYFAmVBBAJidAkBAmR6AQkAzAgCCQC2AgEFAmV1CQDMCAIJALYCAQUCZXYFA25pbAQCYnMJAQJkegEJAMwIAgkAtgIBBQJlQgkAzAgCCQC2AgEFAmVDBQNuaWwEAmVEAwkAvwICBQJicwUCYnQGCQEFdGhyb3cAAwkAAAIFAmVEBQJlRAQCZUUJALwCAwUCZXIJALgCAgUCYnMFAmJ0BQJidAQCY2kJAQFIAgkBAmJpAgkBAUUCBQJlQwUCY0cJAQFFAgUCZUIFAmNGBQFhBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQABQJjaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAIFAmJWBQFaCQECYVIKBQJleAUCZXkJAKADAQUCZUUFAmNpAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZUYJAGsDBQJldgUBYQUCZXUEAmVHCQBrAwUCZXAFAWEJAGQCBQJlRgUBYQQCZUgJAGUCBQJlcAUCZUcEAmVJCQC8AgMFAmVyCQC2AgEFAmVICQC2AgEFAmV2BAJlSgkAoAMBCQC8AgMJALgCAgUCZUUFAmVJBQFiBQJlSQkAlgoECQCgAwEFAmVFBQJkZQUCYlEFAmVKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlSwYCZUwCZU0CZU4CZHcCZU8CZVADCQECIT0CCQCQAwEFAmVOAAEJAAIBAgsxIHBtbnQgZXhwZAQCZXEJAQJhSAAEAmJXCQCRAwIFAmVxBQFzBAJiWAkAkQMCBQJlcQUBdAQCYlkJAJEDAgUCZXEFAXUEAmVRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXEFAXYEAmVSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXEFAXcEAmVTCQCRAwIFAmVxBQFyBAJiVgMJAAACBQJkdwUCYVEFAmVPBQJkdwQCZHUJAQV2YWx1ZQEJAJEDAgUCZU4AAAQCYlQJAQV2YWx1ZQEIBQJkdQdhc3NldElkBAJjeggFAmR1BmFtb3VudAQCYlMJANgEAQUCZVADCQECIT0CBQJiVwkA2AQBBQJiVAkAAgECCFdyb25nIExQBAJjZAkBAmJnAQUCYlgEAmNmCQECYmcBBQJiWQQCZVQKAAJlVQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVMCQDMCAIFAmN6BQNuaWwFA25pbAMJAAECBQJlVQIKKEludCwgSW50KQUCZVUJAAIBCQCsAgIJAAMBBQJlVQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZVYIBQJlVAJfMQQCYlEIBQJlVAJfMgQCZVcDAwkAZgIFAmVNAAAJAGYCBQJlTQUCZVYHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlTQUDbmlsAgAFAmVWBAJlWAMJAAACBQJlTAUCYlgJAJYKBAUCZVcAAAkAZQIJAGUCBQJjZAUCZVcFAmJRBQJjZgMJAAACBQJlTAUCYlkJAJYKBAAABQJlVwUCY2QJAGUCCQBlAgUCY2YFAmVXBQJiUQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJlWQgFAmVYAl8xBAJlWggFAmVYAl8yBAJlQggFAmVYAl8zBAJlQwgFAmVYAl80BAJmYQkBAmJpAgkBAUUCBQJlQwUCZVIJAQFFAgUCZUIFAmVRBAJmYgkBAUgCBQJmYQUBYQQCZmMDCQAAAgUCZUwCBVdBVkVTBQR1bml0CQDZBAEFAmVMBAJmZAMJAGYCBQJiUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFHBQJiUQUCZmMFA25pbAUDbmlsBAJjcAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJWBQJlVwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBBQJiVgUCYlMJAQJiYwYFAmVZBQJlWgUCY3oFAmZiBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAAFAmZiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZiBQNuaWwFAmZkAwkAAAIFAmNwBQJjcAQCZmUJAPwHBAUCYUMCBGJ1cm4JAMwIAgUCY3oFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlQFAmN6BQNuaWwDCQAAAgUCZmUFAmZlCQCUCgIFAmNwBQJlVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmYABAJhdwkAoggBCQEBUgADCQABAgUCYXcCBlN0cmluZwQCZEcFAmF3CQDZBAEFAmRHAwkAAQIFAmF3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZnAAQCYXcJAKIIAQkBAVMAAwkAAQIFAmF3AgZTdHJpbmcEAmRHBQJhdwkA2QQBBQJkRwMJAAECBQJhdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmaAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmaQECZHQEAmF3CQECZmYAAwkAAQIFAmF3AgpCeXRlVmVjdG9yBAJmagUCYXcDCQAAAggFAmR0D2NhbGxlclB1YmxpY0tleQUCZmoGBQJmaAMJAAECBQJhdwIEVW5pdAMJAAACCAUCZHQGY2FsbGVyBQR0aGlzBgUCZmgJAAIBAgtNYXRjaCBlcnJvchoCZHQBC2NvbnN0cnVjdG9yAQFRBAJlaAkBAmZpAQUCZHQDCQAAAgUCZWgFAmVoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAUBUQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0AQpzZXRNYW5hZ2VyAQJmawQCZWgJAQJmaQEFAmR0AwkAAAIFAmVoBQJlaAQCZmwJANkEAQUCZmsDCQAAAgUCZmwFAmZsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAUCZmsFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdAEOY29uZmlybU1hbmFnZXIABAJiTgkBAmZnAAQCZm0DCQEJaXNEZWZpbmVkAQUCYk4GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZtBQJmbQQCZm4DCQAAAggFAmR0D2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCYk4GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZuBQJmbgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAJANgEAQkBBXZhbHVlAQUCYk4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVMABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBA3B1dAICZm8CZnAEAmZxCQECYUwABAJmcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZnEFAXoCCldyIHN0IGFkZHIEAmZzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmcQUBQgIKV3Igc2wgYWRkcgMJAGYCAAAFAmZvCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkdAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJmdAkBAmR2CgkApQgBCAUCZHQGY2FsbGVyCQDYBAEIBQJkdA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmR0CHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmR0CHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkdAhwYXltZW50cwABBQJmbwYHBgAAAgAEAmNZCAUCZnQCXzIEAmZ1CAUCZnQCXzcEAmNwCAUCZnQCXzkEAmNaCAUCZnQDXzEwBAJkYQgFAmZ0A18xMQQCYlgIBQJmdANfMTIEAmJZCAUCZnQDXzEzBAJjTAkA/AcEBQJhQwIEZW1pdAkAzAgCBQJjWQUDbmlsBQNuaWwDCQAAAgUCY0wFAmNMBAJmdgQCYXcFAmNMAwkAAQIFAmF3AgdBZGRyZXNzBAJmdwUCYXcJAPwHBAUCZncCBGVtaXQJAMwIAgUCY1kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZ2BQJmdgQCZngDCQBmAgUCY1oAAAkA/AcEBQJmcwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJYBQJjWgUDbmlsBQNuaWwDCQAAAgUCZngFAmZ4BAJmeQMJAGYCBQJkYQAACQD8BwQFAmZzAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlkFAmRhBQNuaWwFA25pbAMJAAACBQJmeQUCZnkEAmZ6AwUCZnAEAmZBCQD8BwQFAmZyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmdQUCY1kFA25pbAMJAAACBQJmQQUCZkEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHQGY2FsbGVyBQJjWQUCZnUFA25pbAkAzggCBQJjcAUCZnoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBC3B1dE9uZVRrblYyAgJlTQJmcAMJAQIhPQIJAJADAQgFAmR0CHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZXEJAQJhSAAEAmJYCQCRAwIFAmVxBQF0BAJiWQkAkQMCBQJlcQUBdQQCYlcJANkEAQkAkQMCBQJlcQUBcwQCZVEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlcQUBdgQCZVIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlcQUBdwQCYlYDCQAAAggFAmR0BmNhbGxlcgUEdGhpcwgFAmR0DG9yaWdpbkNhbGxlcggFAmR0BmNhbGxlcgQCZHUJAQV2YWx1ZQEJAJEDAggFAmR0CHBheW1lbnRzAAAEAmJUCQDYBAEJAQV2YWx1ZQEIBQJkdQdhc3NldElkBAJjeggFAmR1BmFtb3VudAQCZkIJAQJlbwQFAmN6BQJiVAkApQgBBQJiVgkA2AQBCAUCZHQNdHJhbnNhY3Rpb25JZAQCZkMIBQJmQgJfMQQCY3AIBQJmQgJfMgQCYlEIBQJmQgJfMwQCY1kDAwkAZgIFAmVNAAAJAGYCBQJlTQUCZkMHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlTQUDbmlsAgAFAmZDBAJmdAkA/AcEBQJhQwIEZW1pdAkAzAgCBQJjWQUDbmlsBQNuaWwDCQAAAgUCZnQFAmZ0BAJmdgQCYXcFAmZ0AwkAAQIFAmF3AgdBZGRyZXNzBAJmdwUCYXcJAPwHBAUCZncCBGVtaXQJAMwIAgUCY1kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZ2BQJmdgQCZnoDBQJmcAQCZkEJAPwHBAUCYU4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJXBQJjWQUDbmlsAwkAAAIFAmZBBQJmQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkdAZjYWxsZXIFAmNZBQJiVwUDbmlsBAJmZAMJAGYCBQJiUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFHBQJiUQkA2QQBBQJiVAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNwBQJmegUCZmQFAmNZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0AQpwdXRGb3JGcmVlAQJmRAMJAGYCAAAFAmZECQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmR0CHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZFCQECZHYKCQClCAEIBQJkdAZjYWxsZXIJANgEAQgFAmR0DXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHQIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHQIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmR0CHBheW1lbnRzAAEFAmZEBwcGAAACAAgFAmZFAl85AmR0AQNnZXQABAJjTAkBAmRzAQUCZHQEAmZGCAUCY0wCXzEEAmNvCAUCY0wCXzIEAmN6CAUCY0wCXzMEAmJUCAUCY0wCXzQEAmNwCAUCY0wCXzUEAmVpCQD8BwQFAmFDAgRidXJuCQDMCAIFAmN6BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJUBQJjegUDbmlsAwkAAAIFAmVpBQJlaQUCY3AJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBC2dldE9uZVRrblYyAgJlTAJlTQQCZkcJAQJlSwYFAmVMBQJlTQgFAmR0CHBheW1lbnRzCAUCZHQGY2FsbGVyCAUCZHQMb3JpZ2luQ2FsbGVyCAUCZHQNdHJhbnNhY3Rpb25JZAQCY3AIBQJmRwJfMQQCZVcIBQJmRwJfMgkAlAoCBQJjcAUCZVcCZHQBE2dldE9uZVRrblYyUkVBRE9OTFkCAmVMAmZIBAJlcQkBAmFIAAQCYlgJAJEDAgUCZXEFAXQEAmJZCQCRAwIFAmVxBQF1BAJiVwkAkQMCBQJlcQUBcwQCZEEJAMwIAgkAtgIBCQECYmcBBQJiWAkAzAgCCQC2AgEJAQJiZwEFAmJZBQNuaWwEAmZJCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVwIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYnQJAQJkegEFAmRBBAJicwkAuAICBQJidAkAvAIDCQC2AgEFAmZIBQJidAUCZkkEAmZKAwkAAAIFAmVMBQJiWAAAAwkAAAIFAmVMBQJiWQABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZLCQECZWUDBQJkQQUCZkoFAmJzBAJmTAkAuAICCQCRAwIFAmRBBQJmSgUCZksEAmZNCQCgAwEJALgCAgUCZkwFAWYEAmZOCQECYk8BBQJmTQQCZVYIBQJmTgJfMQQCYlEIBQJmTgJfMgQCZk8DCQBmAgUCZVYAAAYJAAIBAg5ub3RoaW5nIHRvIGdldAMJAAACBQJmTwUCZk8JAJQKAgUDbmlsCQCUCgIFAmVWBQJiUQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdAEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZUwCZkgEAmVxCQECYUgABAJiWAkAkQMCBQJlcQUBdAQCYlkJAJEDAgUCZXEFAXUEAmJXCQCRAwIFAmVxBQFzBAJjZAkBAmJnAQUCYlgEAmNmCQECYmcBBQJiWQQCZlAKAAJlVQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVMCQDMCAIFAmZIBQNuaWwFA25pbAMJAAECBQJlVQIKKEludCwgSW50KQUCZVUJAAIBCQCsAgIJAAMBBQJlVQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZVYIBQJmUAJfMQQCYlEIBQJmUAJfMgQCY0wJAQJiUgQCAAUCYlcFAmZIBQR0aGlzBAJjbggFAmNMAl8xBAJjbwgFAmNMAl8yBAJmUQkAZAIFAmNuBQJjbwQCZUoDCQAAAgUCZlEAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmVWBQJmUQUBYQUCZlEJAJQKAgUDbmlsCQCVCgMFAmVWBQJiUQUCZUoCZHQBCWdldE5vTGVzcwICZlICZlMEAmNMCQECZHMBBQJkdAQCY24IBQJjTAJfMQQCY28IBQJjTAJfMgQCY3oIBQJjTAJfMwQCYlQIBQJjTAJfNAQCY3AIBQJjTAJfNQMJAGYCBQJmUgUCY24JAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY24CAyA8IAkApAMBBQJmUgMJAGYCBQJmUwUCY28JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjbwIDIDwgCQCkAwEFAmZTBAJmVAkA/AcEBQJhQwIEYnVybgkAzAgCBQJjegUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVAUCY3oFA25pbAMJAAACBQJmVAUCZlQFAmNwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0AQ11bnN0YWtlQW5kR2V0AQJiUAQCZlUDCQECIT0CCQCQAwEIBQJkdAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZlUFAmZVBAJiRgkBAmFIAAQCZlYJAQJhTAAEAmZ1CQDZBAEJAJEDAgUCYkYFAXMEAmZXCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmVgUBegIKV3Igc3QgYWRkcgQCZlgJAPwHBAUCZlcCB3Vuc3Rha2UJAMwIAgkA2AQBBQJmdQkAzAgCBQJiUAUDbmlsBQNuaWwDCQAAAgUCZlgFAmZYBAJjTAkBAmJSBAkA2AQBCAUCZHQNdHJhbnNhY3Rpb25JZAkA2AQBBQJmdQUCYlAIBQJkdAZjYWxsZXIEAmNiCQENcGFyc2VJbnRWYWx1ZQEIBQJjTAJfOQQCY3AIBQJjTANfMTAEAmZZAwMJAQJhRQAGCQAAAgUCY2IFAXAJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjYgYDCQAAAgUCZlkFAmZZBAJmWgkA/AcEBQJhQwIEYnVybgkAzAgCBQJiUAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmdQUCYlAFA25pbAMJAAACBQJmWgUCZloFAmNwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0ARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmdhAmVMAmVNBAJmVQMJAQIhPQIJAJADAQgFAmR0CHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJmVQUCZlUEAmJGCQECYUgABAJmVgkBAmFMAAQCZnUJANkEAQkAkQMCBQJiRgUBcwQCZlcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZWBQF6AgpXciBzdCBhZGRyBAJmWAkA/AcEBQJmVwIHdW5zdGFrZQkAzAgCCQDYBAEFAmZ1CQDMCAIFAmdhBQNuaWwFA25pbAMJAAACBQJmWAUCZlgEAmdiCQECZUsGBQJlTAUCZU0JAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZ1BQJnYQUDbmlsCAUCZHQGY2FsbGVyCAUCZHQMb3JpZ2luQ2FsbGVyCAUCZHQNdHJhbnNhY3Rpb25JZAQCY3AIBQJnYgJfMQQCZVcIBQJnYgJfMgkAlAoCBQJjcAUCZVcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmdjAmdkBAJlcQkBAmFIAAQCYlgJAJEDAgUCZXEFAXQEAmJZCQCRAwIFAmVxBQF1BAJiVwkAkQMCBQJlcQUBcwQCZ2UJAQJlbwQFAmdjBQJnZAIAAgAEAmVFCAUCZ2UCXzEEAmNwCAUCZ2UCXzIEAmJRCAUCZ2UCXzMEAmVKCAUCZ2UCXzQJAJQKAgUDbmlsCQCVCgMFAmVFBQJiUQUCZUoCZHQBCGFjdGl2YXRlAgJnZgJnZwMJAQIhPQIJAKUIAQgFAmR0BmNhbGxlcgkApQgBBQJhQwkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmdmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAFAmdnBQNuaWwCB3N1Y2Nlc3MCZHQBBHNldFMCAmdoAmZZAwkBAiE9AgkApQgBCAUCZHQGY2FsbGVyCQECYXkCBQR0aGlzCQECYWUABQJmaAkAzAgCCQELU3RyaW5nRW50cnkCBQJnaAUCZlkFA25pbAJkdAEEc2V0SQICZ2gCZlkDCQECIT0CCQClCAEIBQJkdAZjYWxsZXIJAQJheQIFBHRoaXMJAQJhZQAFAmZoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJnaAUCZlkFA25pbAJkdAEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUgAAmR0ARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiaAkAlAoCBQNuaWwJAQJiZwEFAmJoAmR0ARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiegJiQQJiRQQCZ2kJAQJiRAMFAmJ6BQJiQQUCYkUJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJnaQAACQDMCAIJAKYDAQkAkQMCBQJnaQABCQDMCAIJAKYDAQkAkQMCBQJnaQACBQNuaWwCZHQBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUkCZ2oJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUCZ2oCZHQBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFGAUcJAJQKAgUDbmlsCQCmAwEJAQFFAgUBRgUBRwJkdAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiagJiawkAlAoCBQNuaWwJAKYDAQkBAmJpAgkApwMBBQJiagkApwMBBQJiawJkdAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJTAmJvAmNyAmNzAmN0AmN1AmdrAmN2AmN3CQCUCgIFA25pbAkBAmNxDQUCYlMFAmJvBQJjcgUCY3MFAmN0BQJjdQUCZ2sFAmN2BQJjdwYHAAACAAJkdAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJTAmdsAmJVAmdrBAJjTAkBAmJSBAUCYlMFAmdsBQJiVQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ2sJAJQKAgUDbmlsCQCcCgoIBQJjTAJfMQgFAmNMAl8yCAUCY0wCXzMIBQJjTAJfNAgFAmNMAl81CAUCY0wCXzYIBQJjTAJfNwkApgMBCAUCY0wCXzgIBQJjTAJfOQgFAmNMA18xMAJkdAEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWcBAmdtAQJnbgAEAmdvBAJhdwkBAmZmAAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZmoFAmF3BQJmagMJAAECBQJhdwIEVW5pdAgFAmdtD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdwUCZ20DCQABAgUCYXcCBU9yZGVyBAJkZwUCYXcEAmdwCQECYUYABAJncQkBAmRmAQUCZGcEAmdyCQD0AwMIBQJkZwlib2R5Qnl0ZXMJAJEDAggFAmRnBnByb29mcwAACAUCZGcPc2VuZGVyUHVibGljS2V5BAJncwkA9AMDCAUCZGcJYm9keUJ5dGVzCQCRAwIIBQJkZwZwcm9vZnMAAQUCZ3ADAwMFAmdxBQJncgcFAmdzBwYJAQJhcgMFAmdxBQJncgUCZ3MDCQABAgUCYXcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkRwUCYXcEAmd0CQD2AwEJAQV2YWx1ZQEIBQJkRwZzY3JpcHQEAmd1CQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUMJAQJhcAAEAmd2CQDxBwEFBHRoaXMDAwkAAAIFAmd1BQJndAkBAiE9AgUCZ3YFAmd0BwYJAPQDAwgFAmdtCWJvZHlCeXRlcwkAkQMCCAUCZ20GcHJvb2ZzAAAFAmdvCQD0AwMIBQJnbQlib2R5Qnl0ZXMJAJEDAggFAmdtBnByb29mcwAABQJnb+FP+M8=", "chainId": 84, "height": 2286247, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2VciSbEQiT3HEJ9G6rzoZDjoRDCdNqssfFGKgVBaYw1t Next: BCXfQsLPed7gabn5SBQ7FqkQ3qJKujVDSNxzX9U6Gi8D Diff:
OldNewDifferences
970970 let fN = bO(fM)
971971 let eV = fN._1
972972 let bQ = fN._2
973- $Tuple2(nil, $Tuple2(eV, bQ))
973+ let fO = if ((eV > 0))
974+ then true
975+ else throw("nothing to get")
976+ if ((fO == fO))
977+ then $Tuple2(nil, $Tuple2(eV, bQ))
978+ else throw("Strict value is not equal to itself.")
974979 }
975980
976981
983988 let bW = eq[s]
984989 let cd = bg(bX)
985990 let cf = bg(bY)
986- let fO = {
991+ let fP = {
987992 let eU = invoke(this, "getOneTknV2READONLY", [eL, fH], nil)
988993 if ($isInstanceOf(eU, "(Int, Int)"))
989994 then eU
990995 else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
991996 }
992- let eV = fO._1
993- let bQ = fO._2
997+ let eV = fP._1
998+ let bQ = fP._2
994999 let cL = bR("", bW, fH, this)
9951000 let cn = cL._1
9961001 let co = cL._2
997- let fP = (cn + co)
998- let eJ = if ((fP == 0))
1002+ let fQ = (cn + co)
1003+ let eJ = if ((fQ == 0))
9991004 then throw("bonus calculation error")
1000- else fraction((eV - fP), a, fP)
1005+ else fraction((eV - fQ), a, fQ)
10011006 $Tuple2(nil, $Tuple3(eV, bQ, eJ))
10021007 }
10031008
10041009
10051010
10061011 @Callable(dt)
1007-func getNoLess (fQ,fR) = {
1012+func getNoLess (fR,fS) = {
10081013 let cL = ds(dt)
10091014 let cn = cL._1
10101015 let co = cL._2
10111016 let cz = cL._3
10121017 let bT = cL._4
10131018 let cp = cL._5
1014- if ((fQ > cn))
1015- then throw(((("Failed: " + toString(cn)) + " < ") + toString(fQ)))
1016- else if ((fR > co))
1017- then throw(((("Failed: " + toString(co)) + " < ") + toString(fR)))
1019+ if ((fR > cn))
1020+ then throw(((("Failed: " + toString(cn)) + " < ") + toString(fR)))
1021+ else if ((fS > co))
1022+ then throw(((("Failed: " + toString(co)) + " < ") + toString(fS)))
10181023 else {
1019- let fS = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
1020- if ((fS == fS))
1024+ let fT = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
1025+ if ((fT == fT))
10211026 then cp
10221027 else throw("Strict value is not equal to itself.")
10231028 }
10271032
10281033 @Callable(dt)
10291034 func unstakeAndGet (bP) = {
1030- let fT = if ((size(dt.payments) != 0))
1035+ let fU = if ((size(dt.payments) != 0))
10311036 then throw("No pmnts expd")
10321037 else true
1033- if ((fT == fT))
1038+ if ((fU == fU))
10341039 then {
10351040 let bF = aH()
1036- let fU = aL()
1041+ let fV = aL()
10371042 let fu = fromBase58String(bF[s])
1038- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1039- let fW = invoke(fV, "unstake", [toBase58String(fu), bP], nil)
1040- if ((fW == fW))
1043+ let fW = valueOrErrorMessage(addressFromString(fV[z]), "Wr st addr")
1044+ let fX = invoke(fW, "unstake", [toBase58String(fu), bP], nil)
1045+ if ((fX == fX))
10411046 then {
10421047 let cL = bR(toBase58String(dt.transactionId), toBase58String(fu), bP, dt.caller)
10431048 let cb = parseIntValue(cL._9)
10441049 let cp = cL._10
1045- let fX = if (if (aE())
1050+ let fY = if (if (aE())
10461051 then true
10471052 else (cb == p))
10481053 then throw(("Blocked: " + toString(cb)))
10491054 else true
1050- if ((fX == fX))
1055+ if ((fY == fY))
10511056 then {
1052- let fY = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
1053- if ((fY == fY))
1057+ let fZ = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
1058+ if ((fZ == fZ))
10541059 then cp
10551060 else throw("Strict value is not equal to itself.")
10561061 }
10641069
10651070
10661071 @Callable(dt)
1067-func unstakeAndGetOneTknV2 (fZ,eL,eM) = {
1068- let fT = if ((size(dt.payments) != 0))
1072+func unstakeAndGetOneTknV2 (ga,eL,eM) = {
1073+ let fU = if ((size(dt.payments) != 0))
10691074 then throw("No pmnts expd")
10701075 else true
1071- if ((fT == fT))
1076+ if ((fU == fU))
10721077 then {
10731078 let bF = aH()
1074- let fU = aL()
1079+ let fV = aL()
10751080 let fu = fromBase58String(bF[s])
1076- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1077- let fW = invoke(fV, "unstake", [toBase58String(fu), fZ], nil)
1078- if ((fW == fW))
1081+ let fW = valueOrErrorMessage(addressFromString(fV[z]), "Wr st addr")
1082+ let fX = invoke(fW, "unstake", [toBase58String(fu), ga], nil)
1083+ if ((fX == fX))
10791084 then {
1080- let ga = eK(eL, eM, [AttachedPayment(fu, fZ)], dt.caller, dt.originCaller, dt.transactionId)
1081- let cp = ga._1
1082- let eW = ga._2
1085+ let gb = eK(eL, eM, [AttachedPayment(fu, ga)], dt.caller, dt.originCaller, dt.transactionId)
1086+ let cp = gb._1
1087+ let eW = gb._2
10831088 $Tuple2(cp, eW)
10841089 }
10851090 else throw("Strict value is not equal to itself.")
10901095
10911096
10921097 @Callable(dt)
1093-func putOneTknV2WithBonusREADONLY (gb,gc) = {
1098+func putOneTknV2WithBonusREADONLY (gc,gd) = {
10941099 let eq = aH()
10951100 let bX = eq[t]
10961101 let bY = eq[u]
10971102 let bW = eq[s]
1098- let gd = eo(gb, gc, "", "")
1099- let eE = gd._1
1100- let cp = gd._2
1101- let bQ = gd._3
1102- let eJ = gd._4
1103+ let ge = eo(gc, gd, "", "")
1104+ let eE = ge._1
1105+ let cp = ge._2
1106+ let bQ = ge._3
1107+ let eJ = ge._4
11031108 $Tuple2(nil, $Tuple3(eE, bQ, eJ))
11041109 }
11051110
11061111
11071112
11081113 @Callable(dt)
1109-func activate (ge,gf) = if ((toString(dt.caller) != toString(aC)))
1114+func activate (gf,gg) = if ((toString(dt.caller) != toString(aC)))
11101115 then throw("denied")
1111- else $Tuple2([StringEntry(ab(), ge), StringEntry(ac(), gf)], "success")
1116+ else $Tuple2([StringEntry(ab(), gf), StringEntry(ac(), gg)], "success")
11121117
11131118
11141119
11151120 @Callable(dt)
1116-func setS (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1121+func setS (gh,fY) = if ((toString(dt.caller) != ay(this, ae())))
11171122 then fh
1118- else [StringEntry(gg, fX)]
1123+ else [StringEntry(gh, fY)]
11191124
11201125
11211126
11221127 @Callable(dt)
1123-func setI (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1128+func setI (gh,fY) = if ((toString(dt.caller) != ay(this, ae())))
11241129 then fh
1125- else [IntegerEntry(gg, fX)]
1130+ else [IntegerEntry(gh, fY)]
11261131
11271132
11281133
11381143
11391144 @Callable(dt)
11401145 func calcPricesWrapperREADONLY (bz,bA,bE) = {
1141- let gh = bD(bz, bA, bE)
1142- $Tuple2(nil, [toString(gh[0]), toString(gh[1]), toString(gh[2])])
1146+ let gi = bD(bz, bA, bE)
1147+ $Tuple2(nil, [toString(gi[0]), toString(gi[1]), toString(gi[2])])
11431148 }
11441149
11451150
11461151
11471152 @Callable(dt)
1148-func fromX18WrapperREADONLY (I,gi) = $Tuple2(nil, H(parseBigIntValue(I), gi))
1153+func fromX18WrapperREADONLY (I,gj) = $Tuple2(nil, H(parseBigIntValue(I), gj))
11491154
11501155
11511156
11601165
11611166
11621167 @Callable(dt)
1163-func estimatePutOperationWrapperREADONLY (bS,bo,cr,cs,ct,cu,gj,cv,cw) = $Tuple2(nil, cq(bS, bo, cr, cs, ct, cu, gj, cv, cw, true, false, 0, ""))
1168+func estimatePutOperationWrapperREADONLY (bS,bo,cr,cs,ct,cu,gk,cv,cw) = $Tuple2(nil, cq(bS, bo, cr, cs, ct, cu, gk, cv, cw, true, false, 0, ""))
11641169
11651170
11661171
11671172 @Callable(dt)
1168-func estimateGetOperationWrapperREADONLY (bS,gk,bU,gj) = {
1169- let cL = bR(bS, gk, bU, addressFromStringValue(gj))
1173+func estimateGetOperationWrapperREADONLY (bS,gl,bU,gk) = {
1174+ let cL = bR(bS, gl, bU, addressFromStringValue(gk))
11701175 $Tuple2(nil, $Tuple10(cL._1, cL._2, cL._3, cL._4, cL._5, cL._6, cL._7, toString(cL._8), cL._9, cL._10))
11711176 }
11721177
11761181 func getFeeREADONLY () = $Tuple2(nil, ag)
11771182
11781183
1179-@Verifier(gl)
1180-func gm () = {
1181- let gn = {
1184+@Verifier(gm)
1185+func gn () = {
1186+ let go = {
11821187 let aw = ff()
11831188 if ($isInstanceOf(aw, "ByteVector"))
11841189 then {
11861191 fj
11871192 }
11881193 else if ($isInstanceOf(aw, "Unit"))
1189- then gl.senderPublicKey
1194+ then gm.senderPublicKey
11901195 else throw("Match error")
11911196 }
1192- let aw = gl
1197+ let aw = gm
11931198 if ($isInstanceOf(aw, "Order"))
11941199 then {
11951200 let dg = aw
1196- let go = aF()
1197- let gp = df(dg)
1198- let gq = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
1199- let gr = sigVerify(dg.bodyBytes, dg.proofs[1], go)
1200- if (if (if (gp)
1201- then gq
1202- else false)
1201+ let gp = aF()
1202+ let gq = df(dg)
1203+ let gr = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
1204+ let gs = sigVerify(dg.bodyBytes, dg.proofs[1], gp)
1205+ if (if (if (gq)
12031206 then gr
12041207 else false)
1208+ then gs
1209+ else false)
12051210 then true
1206- else ar(gp, gq, gr)
1211+ else ar(gq, gr, gs)
12071212 }
12081213 else if ($isInstanceOf(aw, "SetScriptTransaction"))
12091214 then {
12101215 let dG = aw
1211- let gs = blake2b256(value(dG.script))
1212- let gt = fromBase64String(value(getString(aC, ap())))
1213- let gu = scriptHash(this)
1214- if (if ((gt == gs))
1215- then (gu != gs)
1216+ let gt = blake2b256(value(dG.script))
1217+ let gu = fromBase64String(value(getString(aC, ap())))
1218+ let gv = scriptHash(this)
1219+ if (if ((gu == gt))
1220+ then (gv != gt)
12161221 else false)
12171222 then true
1218- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1223+ else sigVerify(gm.bodyBytes, gm.proofs[0], go)
12191224 }
1220- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1225+ else sigVerify(gm.bodyBytes, gm.proofs[0], go)
12211226 }
12221227
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "100"
2121
2222 let j = "1"
2323
2424 let k = "__"
2525
2626 let l = ""
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 5
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 8
5151
5252 let y = 9
5353
5454 let z = 1
5555
5656 let A = 6
5757
5858 let B = 7
5959
6060 let C = 10
6161
6262 let D = fraction(5, a, 10000)
6363
6464 func E (F,G) = fraction(toBigInt(F), c, toBigInt(G))
6565
6666
6767 func H (I,J) = toInt(fraction(I, toBigInt(J), c))
6868
6969
7070 func K (L,M,N) = fraction(L, M, N)
7171
7272
7373 func O (I) = if ((d > I))
7474 then -(I)
7575 else I
7676
7777
7878 func P (I) = if ((d > I))
7979 then -(I)
8080 else I
8181
8282
8383 func Q () = "%s__factoryContract"
8484
8585
8686 func R () = "%s__managerPublicKey"
8787
8888
8989 func S () = "%s__pendingManagerPublicKey"
9090
9191
9292 func T () = "%s%s__price__last"
9393
9494
9595 func U (V,W) = makeString(["%s%s%d%d__price__history", toString(V), toString(W)], k)
9696
9797
9898 func X (Y,Z) = ((("%s%s%s__P__" + Y) + "__") + Z)
9999
100100
101101 func aa (Y,Z) = ((("%s%s%s__G__" + Y) + "__") + Z)
102102
103103
104104 func ab () = "%s__amountAsset"
105105
106106
107107 func ac () = "%s__priceAsset"
108108
109109
110110 func ad () = "%s__amp"
111111
112112
113113 func ae () = "%s__addonAddr"
114114
115115
116116 let af = "%s__fee"
117117
118118 let ag = valueOrElse(getInteger(this, af), D)
119119
120120 func ah () = "%s__factoryConfig"
121121
122122
123123 func ai () = "%s%s__matcher__publicKey"
124124
125125
126126 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
127127
128128
129129 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
130130
131131
132132 func ao () = "%s__shutdown"
133133
134134
135135 func ap () = "%s__allowedLpStableScriptHash"
136136
137137
138138 func aq () = "%s__feeCollectorAddress"
139139
140140
141141 func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
142142
143143
144144 func av (I) = {
145145 let aw = I
146146 if ($isInstanceOf(aw, "String"))
147147 then {
148148 let ax = aw
149149 ax
150150 }
151151 else throw("fail cast to String")
152152 }
153153
154154
155155 func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
156156
157157
158158 func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
159159
160160
161161 let aC = addressFromStringValue(ay(this, Q()))
162162
163163 let aD = ay(this, ad())
164164
165165 func aE () = valueOrElse(getBoolean(aC, ao()), false)
166166
167167
168168 func aF () = fromBase58String(ay(aC, ai()))
169169
170170
171171 let aG = addressFromStringValue(ay(aC, aq()))
172172
173173 func aH () = {
174174 let aI = ay(this, ab())
175175 let aJ = ay(this, ac())
176176 let aK = aB(aC, am(aJ))
177177 let ak = aB(aC, am(aI))
178178 split(ay(aC, aj(toString(ak), toString(aK))), k)
179179 }
180180
181181
182182 func aL () = split(ay(aC, ah()), k)
183183
184184
185185 let aM = aL()
186186
187187 let aN = valueOrErrorMessage(addressFromString(aM[z]), "Invalid staking contract address")
188188
189189 let aO = valueOrErrorMessage(addressFromString(aM[B]), "Invalid slipage contract address")
190190
191191 let aP = valueOrErrorMessage(addressFromString(aM[C]), "Invalid gwx contract address")
192192
193193 let aQ = valueOrErrorMessage(addressFromString(aM[A]), "Invalid gwx contract address")
194194
195195 func aR (aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(bb)], k)
196196
197197
198198 func bc (bd,be,bf,aV,aY,aZ) = makeString(["%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(aV), toString(aY), toString(aZ)], k)
199199
200200
201201 func bg (bh) = if ((bh == "WAVES"))
202202 then wavesBalance(this).available
203203 else assetBalance(this, fromBase58String(bh))
204204
205205
206206 func bi (bj,bk) = fraction(bj, c, bk)
207207
208208
209209 func bl (bm,bn,bo) = {
210210 let bp = fraction((bm - bn), b, bn)
211211 let bq = ((bo - O(bp)) > d)
212212 if (!(bq))
213213 then throw(("Big slpg: " + toString(bp)))
214214 else $Tuple2(bq, min([bm, bn]))
215215 }
216216
217217
218218 func br (bs,bt,bu) = {
219219 let bp = fraction(bt, b, bs)
220220 let bv = (bu > bp)
221221 if (if (bv)
222222 then true
223223 else (bt > bs))
224224 then throw(((((((toString(bt) + " ") + toString(bs)) + " ") + toString(bp)) + " ") + toString(bu)))
225225 else bv
226226 }
227227
228228
229229 func bw (bx,by,bz,bA) = {
230230 let bB = E(bz, bx)
231231 let bC = E(bA, by)
232232 bi(bC, bB)
233233 }
234234
235235
236236 func bD (bz,bA,bE) = {
237237 let bF = aH()
238238 let bG = parseIntValue(bF[v])
239239 let bH = parseIntValue(bF[w])
240240 let bI = bw(bG, bH, bz, bA)
241241 let bk = E(bz, bG)
242242 let bj = E(bA, bH)
243243 let bJ = E(bE, a)
244244 let bK = bi(bk, bJ)
245245 let bL = bi(bj, bJ)
246246 [bI, bK, bL]
247247 }
248248
249249
250250 func bM (bz,bA,bE) = {
251251 let bN = bD(bz, bA, bE)
252252 [H(bN[0], a), H(bN[1], a), H(bN[2], a)]
253253 }
254254
255255
256256 func bO (bP) = {
257257 let bQ = fraction(bP, ag, a)
258258 $Tuple2((bP - bQ), bQ)
259259 }
260260
261261
262262 func bR (bS,bT,bU,bV) = {
263263 let bF = aH()
264264 let bW = bF[s]
265265 let bX = bF[t]
266266 let bY = bF[u]
267267 let bZ = parseIntValue(bF[v])
268268 let ca = parseIntValue(bF[w])
269269 let cb = bF[r]
270270 let cc = valueOrErrorMessage(assetInfo(fromBase58String(bW)), "Wrong LP id").quantity
271271 if ((bW != bT))
272272 then throw("Wrong pmt asset")
273273 else {
274274 let cd = bg(bX)
275275 let ce = E(cd, bZ)
276276 let cf = bg(bY)
277277 let cg = E(cf, ca)
278278 let ch = bi(cg, ce)
279279 let ci = H(ch, a)
280280 let cj = E(bU, a)
281281 let ck = E(cc, a)
282282 let cl = fraction(ce, cj, ck)
283283 let cm = fraction(cg, cj, ck)
284284 let cn = H(cl, bZ)
285285 let co = H(cm, ca)
286286 let cp = if ((bS == ""))
287287 then nil
288288 else [ScriptTransfer(bV, cn, if ((bX == "WAVES"))
289289 then unit
290290 else fromBase58String(bX)), ScriptTransfer(bV, co, if ((bY == "WAVES"))
291291 then unit
292292 else fromBase58String(bY)), StringEntry(aa(toString(bV), bS), bc(cn, co, bU, ci, height, lastBlock.timestamp)), IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci)]
293293 $Tuple10(cn, co, bX, bY, cd, cf, cc, ch, cb, cp)
294294 }
295295 }
296296
297297
298298 func cq (bS,bo,cr,cs,ct,cu,bV,cv,cw,cx,cy,cz,cA) = {
299299 let bF = aH()
300300 let bW = fromBase58String(bF[s])
301301 let cB = bF[t]
302302 let cC = bF[u]
303303 let cD = bF[x]
304304 let cE = bF[y]
305305 let cF = parseIntValue(bF[v])
306306 let cG = parseIntValue(bF[w])
307307 let cb = bF[r]
308308 let cH = valueOrErrorMessage(assetInfo(bW), "Wr lp as").quantity
309309 let cd = if (cv)
310310 then bg(cB)
311311 else if (if (cx)
312312 then (cA == cB)
313313 else false)
314314 then (bg(cB) - cz)
315315 else if (cx)
316316 then bg(cB)
317317 else (bg(cB) - cr)
318318 let cf = if (cv)
319319 then bg(cC)
320320 else if (if (cx)
321321 then (cA == cC)
322322 else false)
323323 then (bg(cC) - cz)
324324 else if (cx)
325325 then bg(cC)
326326 else (bg(cC) - ct)
327327 let cI = E(cr, cF)
328328 let cJ = E(ct, cG)
329329 let cK = bi(cJ, cI)
330330 let ce = E(cd, cF)
331331 let cg = E(cf, cG)
332332 let cL = if ((cH == 0))
333333 then {
334334 let ch = d
335335 let cM = d
336336 let bJ = pow((cI * cJ), 0, toBigInt(5), 1, 0, DOWN)
337337 $Tuple5(H(bJ, a), H(cI, cF), H(cJ, cG), bi((cg + cJ), (ce + cI)), cM)
338338 }
339339 else {
340340 let ch = bi(cg, ce)
341341 let cN = fraction(O((ch - cK)), c, ch)
342342 let cM = E(bo, a)
343343 if (if (if (cy)
344344 then (ch != d)
345345 else false)
346346 then (cN > cM)
347347 else false)
348348 then throw(((("Price slippage " + toString(cN)) + " > ") + toString(cM)))
349349 else {
350350 let cO = E(cH, a)
351351 let cP = fraction(cI, ch, c)
352352 let cQ = fraction(cJ, c, ch)
353353 let cR = if ((cP > cJ))
354354 then $Tuple2(cQ, cJ)
355355 else $Tuple2(cI, cP)
356356 let cS = cR._1
357357 let cT = cR._2
358358 let bJ = fraction(cO, cT, cg)
359359 $Tuple5(H(bJ, a), H(cS, cF), H(cT, cG), ch, cM)
360360 }
361361 }
362362 let cU = cL._1
363363 let cV = cL._2
364364 let cW = cL._3
365365 let ci = H(cL._4, a)
366366 let cX = H(cL._5, a)
367367 if ((0 >= cU))
368368 then throw("LP <= 0")
369369 else {
370370 let cY = if (!(cw))
371371 then 0
372372 else cU
373373 let cZ = (cr - cV)
374374 let da = (ct - cW)
375375 let db = if (if (cx)
376376 then (cA == cB)
377377 else false)
378378 then $Tuple2(cz, 0)
379379 else if (if (cx)
380380 then (cA == cC)
381381 else false)
382382 then $Tuple2(0, cz)
383383 else $Tuple2(cV, cW)
384384 let dc = db._1
385385 let dd = db._2
386386 let de = [IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci), StringEntry(X(bV, bS), aR(dc, dd, cY, ci, bo, cX, height, lastBlock.timestamp, cZ, da))]
387387 $Tuple13(cU, cY, ci, cd, cf, cH, bW, cb, de, cZ, da, cs, cu)
388388 }
389389 }
390390
391391
392392 func df (dg) = {
393393 let bF = aH()
394394 let dh = bF[t]
395395 let di = bF[u]
396396 let cb = parseIntValue(bF[r])
397397 let bG = parseIntValue(bF[v])
398398 let bH = parseIntValue(bF[w])
399399 let dj = bg(dh)
400400 let dk = bg(di)
401401 let ch = if ((dg.orderType == Buy))
402402 then bw(bG, bH, (dj + dg.amount), dk)
403403 else bw(bG, bH, (dj - dg.amount), dk)
404404 let ci = H(ch, a)
405405 if (if (if (aE())
406406 then true
407407 else (cb == o))
408408 then true
409409 else (cb == p))
410410 then throw("Admin blocked")
411411 else {
412412 let dl = dg.assetPair.amountAsset
413413 let dm = if ((dl == unit))
414414 then "WAVES"
415415 else toBase58String(value(dl))
416416 let dn = dg.assetPair.priceAsset
417417 let do = if ((dn == unit))
418418 then "WAVES"
419419 else toBase58String(value(dn))
420420 if (if ((dm != dh))
421421 then true
422422 else (do != di))
423423 then throw("Wr assets")
424424 else {
425425 let dp = dg.price
426426 let cG = fraction(a, bH, bG)
427427 let dq = K(dp, a, cG)
428428 let dr = if ((dg.orderType == Buy))
429429 then (ci >= dq)
430430 else (dq >= ci)
431431 true
432432 }
433433 }
434434 }
435435
436436
437437 func ds (dt) = if ((size(dt.payments) != 1))
438438 then throw("1 pmnt exp")
439439 else {
440440 let du = value(dt.payments[0])
441441 let bT = value(du.assetId)
442442 let cz = du.amount
443443 let cL = bR(toBase58String(dt.transactionId), toBase58String(bT), cz, dt.caller)
444444 let cn = cL._1
445445 let co = cL._2
446446 let cb = parseIntValue(cL._9)
447447 let cp = cL._10
448448 if (if (aE())
449449 then true
450450 else (cb == p))
451451 then throw(("Admin blocked: " + toString(cb)))
452452 else $Tuple5(cn, co, cz, bT, cp)
453453 }
454454
455455
456456 func dv (dw,Z,dx,dy,bo,cw,cx,cy,cz,cA) = {
457457 let cL = cq(Z, bo, value(dx).amount, value(dx).assetId, value(dy).amount, value(dy).assetId, dw, (Z == ""), cw, cx, cy, cz, cA)
458458 let cb = parseIntValue(cL._8)
459459 if (if (if (aE())
460460 then true
461461 else (cb == n))
462462 then true
463463 else (cb == p))
464464 then throw(("Blocked:" + toString(cb)))
465465 else cL
466466 }
467467
468468
469469 func dz (dA) = {
470470 let dB = g
471471 let dC = dA[0]
472472 let dD = dA[1]
473473 let dE = parseBigIntValue(i)
474474 let dF = (parseBigIntValue(aD) * dE)
475475 let dG = (dC + dD)
476476 if ((dG == e))
477477 then e
478478 else {
479479 let dH = (dF * dB)
480480 let dI = (((dC * dD) * dB) * dB)
481481 let dJ = ((dH * dG) / dE)
482482 let dK = (dH - dE)
483483 let dL = (dB + f)
484484 func dM (dN,dO) = {
485485 let dP = dN
486486 let dQ = dP._1
487487 let dR = dP._2
488488 if ((dR != unit))
489489 then dN
490490 else {
491491 let dS = (((dQ * dQ) * dQ) / dI)
492492 let dT = (((dJ + (dS * dB)) * dQ) / (((dK * dQ) / dE) + (dL * dS)))
493493 let dU = P((dT - value(dQ)))
494494 if ((f >= dU))
495495 then $Tuple2(dT, dO)
496496 else $Tuple2(dT, unit)
497497 }
498498 }
499499
500500 let dV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
501501 let dW = {
502502 let dX = dV
503503 let dY = size(dX)
504504 let dZ = $Tuple2(dG, unit)
505505 func ea (eb,ec) = if ((ec >= dY))
506506 then eb
507507 else dM(eb, dX[ec])
508508
509509 func ed (eb,ec) = if ((ec >= dY))
510510 then eb
511511 else throw("List size exceeds 15")
512512
513513 ed(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(dZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
514514 }
515515 let dQ = dW._1
516516 let dR = dW._2
517517 if ((dR != unit))
518518 then dQ
519519 else throw(("D calculation error, D = " + toString(dQ)))
520520 }
521521 }
522522
523523
524524 func ee (dA,dt,ef) = {
525525 let dB = g
526526 let eg = dA[if ((dt == 0))
527527 then 1
528528 else 0]
529529 let dE = parseBigIntValue(i)
530530 let dF = (parseBigIntValue(aD) * dE)
531531 let dG = eg
532532 let dH = (dF * dB)
533533 let eh = (((((ef * ef) / (eg * dB)) * ef) * dE) / (dH * dB))
534534 let ei = ((dG + ((ef * dE) / dH)) - ef)
535535 func dM (dN,dO) = {
536536 let ej = dN
537537 let ek = ej._1
538538 let dR = ej._2
539539 if ((dR != unit))
540540 then dN
541541 else {
542542 let el = (((ek * ek) + eh) / ((g * ek) + ei))
543543 let em = P((el - value(ek)))
544544 if ((f >= em))
545545 then $Tuple2(el, dO)
546546 else $Tuple2(el, unit)
547547 }
548548 }
549549
550550 let dV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
551551 let en = {
552552 let dX = dV
553553 let dY = size(dX)
554554 let dZ = $Tuple2(ef, unit)
555555 func ea (eb,ec) = if ((ec >= dY))
556556 then eb
557557 else dM(eb, dX[ec])
558558
559559 func ed (eb,ec) = if ((ec >= dY))
560560 then eb
561561 else throw("List size exceeds 15")
562562
563563 ed(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(dZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
564564 }
565565 let ek = en._1
566566 let dR = en._2
567567 if ((dR != unit))
568568 then ek
569569 else throw(("Y calculation error, Y = " + toString(ek)))
570570 }
571571
572572
573573 func eo (ep,bT,bV,Z) = {
574574 let eq = aH()
575575 let bX = eq[t]
576576 let bY = eq[u]
577577 let bW = eq[s]
578578 let cF = parseIntValue(eq[v])
579579 let cG = parseIntValue(eq[w])
580580 let er = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
581581 let es = if ((er > e))
582582 then true
583583 else throw("initial deposit requires all coins")
584584 if ((es == es))
585585 then {
586586 let cd = bg(bX)
587587 let cf = bg(bY)
588588 let et = if ((Z == ""))
589589 then $Tuple2(cd, cf)
590590 else if ((bT == bX))
591591 then if ((ep > cd))
592592 then throw("invalid payment amount")
593593 else $Tuple2((cd - ep), cf)
594594 else if ((bT == bY))
595595 then if ((ep > cf))
596596 then throw("invalid payment amount")
597597 else $Tuple2(cd, (cf - ep))
598598 else throw("wrong pmtAssetId")
599599 let eu = et._1
600600 let ev = et._2
601601 let ew = if ((bT == bX))
602602 then $Tuple2(ep, 0)
603603 else if ((bT == bY))
604604 then $Tuple2(0, ep)
605605 else throw("invalid payment")
606606 let ex = ew._1
607607 let ey = ew._2
608608 let ez = bO(ex)._1
609609 let eA = bO(ey)._1
610610 let bQ = bO(ep)._2
611611 let eB = (eu + ez)
612612 let eC = (ev + eA)
613613 let bt = dz([toBigInt(eu), toBigInt(ev)])
614614 let bs = dz([toBigInt(eB), toBigInt(eC)])
615615 let eD = if ((bs > bt))
616616 then true
617617 else throw()
618618 if ((eD == eD))
619619 then {
620620 let eE = fraction(er, (bs - bt), bt)
621621 let ci = H(bi(E(eC, cG), E(eB, cF)), a)
622622 let de = [IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci), StringEntry(X(bV, Z), aR(ex, ey, toInt(eE), ci, 0, 0, height, lastBlock.timestamp, 0, 0))]
623623 let eF = fraction(ev, a, eu)
624624 let eG = fraction(ep, a, (eF + a))
625625 let eH = (ep - eG)
626626 let eI = fraction(er, toBigInt(eH), toBigInt(ev))
627627 let eJ = toInt(fraction((eE - eI), b, eI))
628628 $Tuple4(toInt(eE), de, bQ, eJ)
629629 }
630630 else throw("Strict value is not equal to itself.")
631631 }
632632 else throw("Strict value is not equal to itself.")
633633 }
634634
635635
636636 func eK (eL,eM,eN,dw,eO,eP) = if ((size(eN) != 1))
637637 then throw("1 pmnt expd")
638638 else {
639639 let eq = aH()
640640 let bW = eq[s]
641641 let bX = eq[t]
642642 let bY = eq[u]
643643 let eQ = parseIntValue(eq[v])
644644 let eR = parseIntValue(eq[w])
645645 let eS = eq[r]
646646 let bV = if ((dw == aQ))
647647 then eO
648648 else dw
649649 let du = value(eN[0])
650650 let bT = value(du.assetId)
651651 let cz = du.amount
652652 let bS = toBase58String(eP)
653653 if ((bW != toBase58String(bT)))
654654 then throw("Wrong LP")
655655 else {
656656 let cd = bg(bX)
657657 let cf = bg(bY)
658658 let eT = {
659659 let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
660660 if ($isInstanceOf(eU, "(Int, Int)"))
661661 then eU
662662 else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
663663 }
664664 let eV = eT._1
665665 let bQ = eT._2
666666 let eW = if (if ((eM > 0))
667667 then (eM > eV)
668668 else false)
669669 then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
670670 else eV
671671 let eX = if ((eL == bX))
672672 then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
673673 else if ((eL == bY))
674674 then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
675675 else throw("invalid out asset id")
676676 let eY = eX._1
677677 let eZ = eX._2
678678 let eB = eX._3
679679 let eC = eX._4
680680 let fa = bi(E(eC, eR), E(eB, eQ))
681681 let fb = H(fa, a)
682682 let fc = if ((eL == "WAVES"))
683683 then unit
684684 else fromBase58String(eL)
685685 let fd = if ((bQ > 0))
686686 then [ScriptTransfer(aG, bQ, fc)]
687687 else nil
688688 let cp = ([ScriptTransfer(bV, eW, fc), StringEntry(aa(toString(bV), bS), bc(eY, eZ, cz, fb, height, lastBlock.timestamp)), IntegerEntry(T(), fb), IntegerEntry(U(height, lastBlock.timestamp), fb)] ++ fd)
689689 if ((cp == cp))
690690 then {
691691 let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
692692 if ((fe == fe))
693693 then $Tuple2(cp, eW)
694694 else throw("Strict value is not equal to itself.")
695695 }
696696 else throw("Strict value is not equal to itself.")
697697 }
698698 }
699699
700700
701701 func ff () = {
702702 let aw = getString(R())
703703 if ($isInstanceOf(aw, "String"))
704704 then {
705705 let dG = aw
706706 fromBase58String(dG)
707707 }
708708 else if ($isInstanceOf(aw, "Unit"))
709709 then unit
710710 else throw("Match error")
711711 }
712712
713713
714714 func fg () = {
715715 let aw = getString(S())
716716 if ($isInstanceOf(aw, "String"))
717717 then {
718718 let dG = aw
719719 fromBase58String(dG)
720720 }
721721 else if ($isInstanceOf(aw, "Unit"))
722722 then unit
723723 else throw("Match error")
724724 }
725725
726726
727727 let fh = throw("Permission denied")
728728
729729 func fi (dt) = {
730730 let aw = ff()
731731 if ($isInstanceOf(aw, "ByteVector"))
732732 then {
733733 let fj = aw
734734 if ((dt.callerPublicKey == fj))
735735 then true
736736 else fh
737737 }
738738 else if ($isInstanceOf(aw, "Unit"))
739739 then if ((dt.caller == this))
740740 then true
741741 else fh
742742 else throw("Match error")
743743 }
744744
745745
746746 @Callable(dt)
747747 func constructor (Q) = {
748748 let eh = fi(dt)
749749 if ((eh == eh))
750750 then [StringEntry(Q(), Q)]
751751 else throw("Strict value is not equal to itself.")
752752 }
753753
754754
755755
756756 @Callable(dt)
757757 func setManager (fk) = {
758758 let eh = fi(dt)
759759 if ((eh == eh))
760760 then {
761761 let fl = fromBase58String(fk)
762762 if ((fl == fl))
763763 then [StringEntry(S(), fk)]
764764 else throw("Strict value is not equal to itself.")
765765 }
766766 else throw("Strict value is not equal to itself.")
767767 }
768768
769769
770770
771771 @Callable(dt)
772772 func confirmManager () = {
773773 let bN = fg()
774774 let fm = if (isDefined(bN))
775775 then true
776776 else throw("No pending manager")
777777 if ((fm == fm))
778778 then {
779779 let fn = if ((dt.callerPublicKey == value(bN)))
780780 then true
781781 else throw("You are not pending manager")
782782 if ((fn == fn))
783783 then [StringEntry(R(), toBase58String(value(bN))), DeleteEntry(S())]
784784 else throw("Strict value is not equal to itself.")
785785 }
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790
791791 @Callable(dt)
792792 func put (fo,fp) = {
793793 let fq = aL()
794794 let fr = valueOrErrorMessage(addressFromString(fq[z]), "Wr st addr")
795795 let fs = valueOrErrorMessage(addressFromString(fq[B]), "Wr sl addr")
796796 if ((0 > fo))
797797 then throw("Wrong slippage")
798798 else if ((size(dt.payments) != 2))
799799 then throw("2 pmnts expd")
800800 else {
801801 let ft = dv(toString(dt.caller), toBase58String(dt.transactionId), AttachedPayment(value(dt.payments[0]).assetId, value(dt.payments[0]).amount), dt.payments[1], fo, true, false, true, 0, "")
802802 let cY = ft._2
803803 let fu = ft._7
804804 let cp = ft._9
805805 let cZ = ft._10
806806 let da = ft._11
807807 let bX = ft._12
808808 let bY = ft._13
809809 let cL = invoke(aC, "emit", [cY], nil)
810810 if ((cL == cL))
811811 then {
812812 let fv = {
813813 let aw = cL
814814 if ($isInstanceOf(aw, "Address"))
815815 then {
816816 let fw = aw
817817 invoke(fw, "emit", [cY], nil)
818818 }
819819 else unit
820820 }
821821 if ((fv == fv))
822822 then {
823823 let fx = if ((cZ > 0))
824824 then invoke(fs, "put", nil, [AttachedPayment(bX, cZ)])
825825 else nil
826826 if ((fx == fx))
827827 then {
828828 let fy = if ((da > 0))
829829 then invoke(fs, "put", nil, [AttachedPayment(bY, da)])
830830 else nil
831831 if ((fy == fy))
832832 then {
833833 let fz = if (fp)
834834 then {
835835 let fA = invoke(fr, "stake", nil, [AttachedPayment(fu, cY)])
836836 if ((fA == fA))
837837 then nil
838838 else throw("Strict value is not equal to itself.")
839839 }
840840 else [ScriptTransfer(dt.caller, cY, fu)]
841841 (cp ++ fz)
842842 }
843843 else throw("Strict value is not equal to itself.")
844844 }
845845 else throw("Strict value is not equal to itself.")
846846 }
847847 else throw("Strict value is not equal to itself.")
848848 }
849849 else throw("Strict value is not equal to itself.")
850850 }
851851 }
852852
853853
854854
855855 @Callable(dt)
856856 func putOneTknV2 (eM,fp) = if ((size(dt.payments) != 1))
857857 then throw("1 pmnt expd")
858858 else {
859859 let eq = aH()
860860 let bX = eq[t]
861861 let bY = eq[u]
862862 let bW = fromBase58String(eq[s])
863863 let eQ = parseIntValue(eq[v])
864864 let eR = parseIntValue(eq[w])
865865 let bV = if ((dt.caller == this))
866866 then dt.originCaller
867867 else dt.caller
868868 let du = value(dt.payments[0])
869869 let bT = toBase58String(value(du.assetId))
870870 let cz = du.amount
871871 let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
872872 let fC = fB._1
873873 let cp = fB._2
874874 let bQ = fB._3
875875 let cY = if (if ((eM > 0))
876876 then (eM > fC)
877877 else false)
878878 then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
879879 else fC
880880 let ft = invoke(aC, "emit", [cY], nil)
881881 if ((ft == ft))
882882 then {
883883 let fv = {
884884 let aw = ft
885885 if ($isInstanceOf(aw, "Address"))
886886 then {
887887 let fw = aw
888888 invoke(fw, "emit", [cY], nil)
889889 }
890890 else unit
891891 }
892892 if ((fv == fv))
893893 then {
894894 let fz = if (fp)
895895 then {
896896 let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
897897 if ((fA == fA))
898898 then nil
899899 else throw("Strict value is not equal to itself.")
900900 }
901901 else [ScriptTransfer(dt.caller, cY, bW)]
902902 let fd = if ((bQ > 0))
903903 then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
904904 else nil
905905 $Tuple2(((cp ++ fz) ++ fd), cY)
906906 }
907907 else throw("Strict value is not equal to itself.")
908908 }
909909 else throw("Strict value is not equal to itself.")
910910 }
911911
912912
913913
914914 @Callable(dt)
915915 func putForFree (fD) = if ((0 > fD))
916916 then throw("Wrong slpg")
917917 else if ((size(dt.payments) != 2))
918918 then throw("2 pmnts expd")
919919 else {
920920 let fE = dv(toString(dt.caller), toBase58String(dt.transactionId), AttachedPayment(value(dt.payments[0]).assetId, value(dt.payments[0]).amount), dt.payments[1], fD, false, false, true, 0, "")
921921 fE._9
922922 }
923923
924924
925925
926926 @Callable(dt)
927927 func get () = {
928928 let cL = ds(dt)
929929 let fF = cL._1
930930 let co = cL._2
931931 let cz = cL._3
932932 let bT = cL._4
933933 let cp = cL._5
934934 let ei = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
935935 if ((ei == ei))
936936 then cp
937937 else throw("Strict value is not equal to itself.")
938938 }
939939
940940
941941
942942 @Callable(dt)
943943 func getOneTknV2 (eL,eM) = {
944944 let fG = eK(eL, eM, dt.payments, dt.caller, dt.originCaller, dt.transactionId)
945945 let cp = fG._1
946946 let eW = fG._2
947947 $Tuple2(cp, eW)
948948 }
949949
950950
951951
952952 @Callable(dt)
953953 func getOneTknV2READONLY (eL,fH) = {
954954 let eq = aH()
955955 let bX = eq[t]
956956 let bY = eq[u]
957957 let bW = eq[s]
958958 let dA = [toBigInt(bg(bX)), toBigInt(bg(bY))]
959959 let fI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
960960 let bt = dz(dA)
961961 let bs = (bt - fraction(toBigInt(fH), bt, fI))
962962 let fJ = if ((eL == bX))
963963 then 0
964964 else if ((eL == bY))
965965 then 1
966966 else throw("invalid out asset id")
967967 let fK = ee(dA, fJ, bs)
968968 let fL = (dA[fJ] - fK)
969969 let fM = toInt((fL - f))
970970 let fN = bO(fM)
971971 let eV = fN._1
972972 let bQ = fN._2
973- $Tuple2(nil, $Tuple2(eV, bQ))
973+ let fO = if ((eV > 0))
974+ then true
975+ else throw("nothing to get")
976+ if ((fO == fO))
977+ then $Tuple2(nil, $Tuple2(eV, bQ))
978+ else throw("Strict value is not equal to itself.")
974979 }
975980
976981
977982
978983 @Callable(dt)
979984 func getOneTknV2WithBonusREADONLY (eL,fH) = {
980985 let eq = aH()
981986 let bX = eq[t]
982987 let bY = eq[u]
983988 let bW = eq[s]
984989 let cd = bg(bX)
985990 let cf = bg(bY)
986- let fO = {
991+ let fP = {
987992 let eU = invoke(this, "getOneTknV2READONLY", [eL, fH], nil)
988993 if ($isInstanceOf(eU, "(Int, Int)"))
989994 then eU
990995 else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
991996 }
992- let eV = fO._1
993- let bQ = fO._2
997+ let eV = fP._1
998+ let bQ = fP._2
994999 let cL = bR("", bW, fH, this)
9951000 let cn = cL._1
9961001 let co = cL._2
997- let fP = (cn + co)
998- let eJ = if ((fP == 0))
1002+ let fQ = (cn + co)
1003+ let eJ = if ((fQ == 0))
9991004 then throw("bonus calculation error")
1000- else fraction((eV - fP), a, fP)
1005+ else fraction((eV - fQ), a, fQ)
10011006 $Tuple2(nil, $Tuple3(eV, bQ, eJ))
10021007 }
10031008
10041009
10051010
10061011 @Callable(dt)
1007-func getNoLess (fQ,fR) = {
1012+func getNoLess (fR,fS) = {
10081013 let cL = ds(dt)
10091014 let cn = cL._1
10101015 let co = cL._2
10111016 let cz = cL._3
10121017 let bT = cL._4
10131018 let cp = cL._5
1014- if ((fQ > cn))
1015- then throw(((("Failed: " + toString(cn)) + " < ") + toString(fQ)))
1016- else if ((fR > co))
1017- then throw(((("Failed: " + toString(co)) + " < ") + toString(fR)))
1019+ if ((fR > cn))
1020+ then throw(((("Failed: " + toString(cn)) + " < ") + toString(fR)))
1021+ else if ((fS > co))
1022+ then throw(((("Failed: " + toString(co)) + " < ") + toString(fS)))
10181023 else {
1019- let fS = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
1020- if ((fS == fS))
1024+ let fT = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
1025+ if ((fT == fT))
10211026 then cp
10221027 else throw("Strict value is not equal to itself.")
10231028 }
10241029 }
10251030
10261031
10271032
10281033 @Callable(dt)
10291034 func unstakeAndGet (bP) = {
1030- let fT = if ((size(dt.payments) != 0))
1035+ let fU = if ((size(dt.payments) != 0))
10311036 then throw("No pmnts expd")
10321037 else true
1033- if ((fT == fT))
1038+ if ((fU == fU))
10341039 then {
10351040 let bF = aH()
1036- let fU = aL()
1041+ let fV = aL()
10371042 let fu = fromBase58String(bF[s])
1038- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1039- let fW = invoke(fV, "unstake", [toBase58String(fu), bP], nil)
1040- if ((fW == fW))
1043+ let fW = valueOrErrorMessage(addressFromString(fV[z]), "Wr st addr")
1044+ let fX = invoke(fW, "unstake", [toBase58String(fu), bP], nil)
1045+ if ((fX == fX))
10411046 then {
10421047 let cL = bR(toBase58String(dt.transactionId), toBase58String(fu), bP, dt.caller)
10431048 let cb = parseIntValue(cL._9)
10441049 let cp = cL._10
1045- let fX = if (if (aE())
1050+ let fY = if (if (aE())
10461051 then true
10471052 else (cb == p))
10481053 then throw(("Blocked: " + toString(cb)))
10491054 else true
1050- if ((fX == fX))
1055+ if ((fY == fY))
10511056 then {
1052- let fY = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
1053- if ((fY == fY))
1057+ let fZ = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
1058+ if ((fZ == fZ))
10541059 then cp
10551060 else throw("Strict value is not equal to itself.")
10561061 }
10571062 else throw("Strict value is not equal to itself.")
10581063 }
10591064 else throw("Strict value is not equal to itself.")
10601065 }
10611066 else throw("Strict value is not equal to itself.")
10621067 }
10631068
10641069
10651070
10661071 @Callable(dt)
1067-func unstakeAndGetOneTknV2 (fZ,eL,eM) = {
1068- let fT = if ((size(dt.payments) != 0))
1072+func unstakeAndGetOneTknV2 (ga,eL,eM) = {
1073+ let fU = if ((size(dt.payments) != 0))
10691074 then throw("No pmnts expd")
10701075 else true
1071- if ((fT == fT))
1076+ if ((fU == fU))
10721077 then {
10731078 let bF = aH()
1074- let fU = aL()
1079+ let fV = aL()
10751080 let fu = fromBase58String(bF[s])
1076- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1077- let fW = invoke(fV, "unstake", [toBase58String(fu), fZ], nil)
1078- if ((fW == fW))
1081+ let fW = valueOrErrorMessage(addressFromString(fV[z]), "Wr st addr")
1082+ let fX = invoke(fW, "unstake", [toBase58String(fu), ga], nil)
1083+ if ((fX == fX))
10791084 then {
1080- let ga = eK(eL, eM, [AttachedPayment(fu, fZ)], dt.caller, dt.originCaller, dt.transactionId)
1081- let cp = ga._1
1082- let eW = ga._2
1085+ let gb = eK(eL, eM, [AttachedPayment(fu, ga)], dt.caller, dt.originCaller, dt.transactionId)
1086+ let cp = gb._1
1087+ let eW = gb._2
10831088 $Tuple2(cp, eW)
10841089 }
10851090 else throw("Strict value is not equal to itself.")
10861091 }
10871092 else throw("Strict value is not equal to itself.")
10881093 }
10891094
10901095
10911096
10921097 @Callable(dt)
1093-func putOneTknV2WithBonusREADONLY (gb,gc) = {
1098+func putOneTknV2WithBonusREADONLY (gc,gd) = {
10941099 let eq = aH()
10951100 let bX = eq[t]
10961101 let bY = eq[u]
10971102 let bW = eq[s]
1098- let gd = eo(gb, gc, "", "")
1099- let eE = gd._1
1100- let cp = gd._2
1101- let bQ = gd._3
1102- let eJ = gd._4
1103+ let ge = eo(gc, gd, "", "")
1104+ let eE = ge._1
1105+ let cp = ge._2
1106+ let bQ = ge._3
1107+ let eJ = ge._4
11031108 $Tuple2(nil, $Tuple3(eE, bQ, eJ))
11041109 }
11051110
11061111
11071112
11081113 @Callable(dt)
1109-func activate (ge,gf) = if ((toString(dt.caller) != toString(aC)))
1114+func activate (gf,gg) = if ((toString(dt.caller) != toString(aC)))
11101115 then throw("denied")
1111- else $Tuple2([StringEntry(ab(), ge), StringEntry(ac(), gf)], "success")
1116+ else $Tuple2([StringEntry(ab(), gf), StringEntry(ac(), gg)], "success")
11121117
11131118
11141119
11151120 @Callable(dt)
1116-func setS (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1121+func setS (gh,fY) = if ((toString(dt.caller) != ay(this, ae())))
11171122 then fh
1118- else [StringEntry(gg, fX)]
1123+ else [StringEntry(gh, fY)]
11191124
11201125
11211126
11221127 @Callable(dt)
1123-func setI (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1128+func setI (gh,fY) = if ((toString(dt.caller) != ay(this, ae())))
11241129 then fh
1125- else [IntegerEntry(gg, fX)]
1130+ else [IntegerEntry(gh, fY)]
11261131
11271132
11281133
11291134 @Callable(dt)
11301135 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
11311136
11321137
11331138
11341139 @Callable(dt)
11351140 func getAccBalanceWrapperREADONLY (bh) = $Tuple2(nil, bg(bh))
11361141
11371142
11381143
11391144 @Callable(dt)
11401145 func calcPricesWrapperREADONLY (bz,bA,bE) = {
1141- let gh = bD(bz, bA, bE)
1142- $Tuple2(nil, [toString(gh[0]), toString(gh[1]), toString(gh[2])])
1146+ let gi = bD(bz, bA, bE)
1147+ $Tuple2(nil, [toString(gi[0]), toString(gi[1]), toString(gi[2])])
11431148 }
11441149
11451150
11461151
11471152 @Callable(dt)
1148-func fromX18WrapperREADONLY (I,gi) = $Tuple2(nil, H(parseBigIntValue(I), gi))
1153+func fromX18WrapperREADONLY (I,gj) = $Tuple2(nil, H(parseBigIntValue(I), gj))
11491154
11501155
11511156
11521157 @Callable(dt)
11531158 func toX18WrapperREADONLY (F,G) = $Tuple2(nil, toString(E(F, G)))
11541159
11551160
11561161
11571162 @Callable(dt)
11581163 func calcPriceBigIntWrapperREADONLY (bj,bk) = $Tuple2(nil, toString(bi(parseBigIntValue(bj), parseBigIntValue(bk))))
11591164
11601165
11611166
11621167 @Callable(dt)
1163-func estimatePutOperationWrapperREADONLY (bS,bo,cr,cs,ct,cu,gj,cv,cw) = $Tuple2(nil, cq(bS, bo, cr, cs, ct, cu, gj, cv, cw, true, false, 0, ""))
1168+func estimatePutOperationWrapperREADONLY (bS,bo,cr,cs,ct,cu,gk,cv,cw) = $Tuple2(nil, cq(bS, bo, cr, cs, ct, cu, gk, cv, cw, true, false, 0, ""))
11641169
11651170
11661171
11671172 @Callable(dt)
1168-func estimateGetOperationWrapperREADONLY (bS,gk,bU,gj) = {
1169- let cL = bR(bS, gk, bU, addressFromStringValue(gj))
1173+func estimateGetOperationWrapperREADONLY (bS,gl,bU,gk) = {
1174+ let cL = bR(bS, gl, bU, addressFromStringValue(gk))
11701175 $Tuple2(nil, $Tuple10(cL._1, cL._2, cL._3, cL._4, cL._5, cL._6, cL._7, toString(cL._8), cL._9, cL._10))
11711176 }
11721177
11731178
11741179
11751180 @Callable(dt)
11761181 func getFeeREADONLY () = $Tuple2(nil, ag)
11771182
11781183
1179-@Verifier(gl)
1180-func gm () = {
1181- let gn = {
1184+@Verifier(gm)
1185+func gn () = {
1186+ let go = {
11821187 let aw = ff()
11831188 if ($isInstanceOf(aw, "ByteVector"))
11841189 then {
11851190 let fj = aw
11861191 fj
11871192 }
11881193 else if ($isInstanceOf(aw, "Unit"))
1189- then gl.senderPublicKey
1194+ then gm.senderPublicKey
11901195 else throw("Match error")
11911196 }
1192- let aw = gl
1197+ let aw = gm
11931198 if ($isInstanceOf(aw, "Order"))
11941199 then {
11951200 let dg = aw
1196- let go = aF()
1197- let gp = df(dg)
1198- let gq = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
1199- let gr = sigVerify(dg.bodyBytes, dg.proofs[1], go)
1200- if (if (if (gp)
1201- then gq
1202- else false)
1201+ let gp = aF()
1202+ let gq = df(dg)
1203+ let gr = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
1204+ let gs = sigVerify(dg.bodyBytes, dg.proofs[1], gp)
1205+ if (if (if (gq)
12031206 then gr
12041207 else false)
1208+ then gs
1209+ else false)
12051210 then true
1206- else ar(gp, gq, gr)
1211+ else ar(gq, gr, gs)
12071212 }
12081213 else if ($isInstanceOf(aw, "SetScriptTransaction"))
12091214 then {
12101215 let dG = aw
1211- let gs = blake2b256(value(dG.script))
1212- let gt = fromBase64String(value(getString(aC, ap())))
1213- let gu = scriptHash(this)
1214- if (if ((gt == gs))
1215- then (gu != gs)
1216+ let gt = blake2b256(value(dG.script))
1217+ let gu = fromBase64String(value(getString(aC, ap())))
1218+ let gv = scriptHash(this)
1219+ if (if ((gu == gt))
1220+ then (gv != gt)
12161221 else false)
12171222 then true
1218- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1223+ else sigVerify(gm.bodyBytes, gm.proofs[0], go)
12191224 }
1220- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1225+ else sigVerify(gm.bodyBytes, gm.proofs[0], go)
12211226 }
12221227

github/deemru/w8io/169f3d6 
159.47 ms