tx · 2M3T8bQFvEsvTtQMRNmisFV4Ko1YQ1KTsEbspzPtZ4oC

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.02800000 Waves

2022.10.19 13:56 [2279179] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "2M3T8bQFvEsvTtQMRNmisFV4Ko1YQ1KTsEbspzPtZ4oC", "fee": 2800000, "feeAssetId": null, "timestamp": 1666177055674, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "Kfpwd9tuQzE94DHgwLfycnRwmSUirEEDk4UzRtQk82qCbUU6JMik7etet8SjkcDskqYeGdwvhCtjdLTzNGdAoSS" ], "script": "base64:BgL7HggCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIGa2V5RmVlIgNmZWUiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIDZmNhIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE2NTA5MTY4NTQiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgNtb2EiBW9yZGVyIgdhbXRBc0lkIgZwckFzSWQiD2FjY0FtdEFzQmFsYW5jZSIOYWNjUHJBc0JhbGFuY2UiCm9yQW10QXNzZXQiCm9yQW10QXNTdHIiCW9yUHJBc3NldCIJb3JQckFzU3RyIgpvcmRlclByaWNlIg5jYXN0T3JkZXJQcmljZSIRaXNPcmRlclByaWNlVmFsaWQiAmNnIgFpIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiBGdldEQiAnhwIgFuIgN4cDAiA3hwMSIKYVByZWNpc2lvbiIBYSIBcyIDYW5uIgt4cDBfeHAxX25fbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgRjYWxjIgNhY2MiA2N1ciINJHQwMjE0MDYyMTQyNiIBZCIFZm91bmQiAmRwIgVkTmV4dCIFZERpZmYiA2FyciINJHQwMjE4NDcyMTg5NCICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMjM5NDIyNDE0IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyNzIxMjI3NjgiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyIKcG9vbENvbmZpZyIPbHBBc3NldEVtaXNzaW9uIg1jaGVjaEVtaXNzaW9uIg0kdDAyMzUyNzIzOTg5IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjM5OTUyNDE3MSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNjM1ODI2NDY2IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI2NjUzMjY5NjAiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIgJtbSICcGsiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzMTc3NDMxODk5Igdlc3RpbUxQIgdtYXhTbHBnIgZlc3RQdXQiCW91dEFtdEFtdCINJHQwMzQwODIzNDIzNyINbHBBc3NldEFtb3VudCIKbHBFbWlzc2lvbiIFaW5kZXgiBG5ld1kiAmR5Igt0b3RhbEdldFJhdyINJHQwMzUwMTYzNTA2NSINJHQwMzU0MTAzNTUyNSIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINdW5zdGFrZUFtb3VudCINJHQwMzc4MzIzODAyMCIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDM4Mjc5MzgzNzYiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaF4AAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABaQIDMTAwAAFqAgExAAFrAgJfXwABbAIAAAFtAAEAAW4AAgABbwADAAFwAAQAAXEAAQABcgACAAFzAAMAAXQABAABdQAFAAF2AAYAAXcABwABeAAIAAF5AAkAAXoAAQABQQAGAAFCAAcAAUMACgABRAkAawMABQUBYQCQTgEBRQIBRgFHCQC8AgMJALYCAQUBRgUBYwkAtgIBBQFHAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWMBAUsDAUwBTQFOCQBrAwUBTAUBTQUBTgEBTwEBSQMJAL8CAgUBZAUBSQkAvgIBBQFJBQFJAQFQAQFJAwkAvwICBQFkBQFJCQC+AgEFAUkFAUkBAVEAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFSAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVMAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVQAAhElcyVzX19wcmljZV9fbGFzdAEBVQIBVgFXCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVgkAzAgCCQCkAwEFAVcFA25pbAUBawEBWAIBWQFaCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWQICX18FAVoBAmFhAgFZAVoJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFZAgJfXwUBWgECYWIAAg8lc19fYW1vdW50QXNzZXQBAmFjAAIOJXNfX3ByaWNlQXNzZXQBAmFkAAIHJXNfX2FtcAECYWUAAg0lc19fYWRkb25BZGRyAAJhZgIHJXNfX2ZlZQACYWcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWYFAUQBAmFoAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFpAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhagICYWsCYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFrAgJfXwUCYWwCCF9fY29uZmlnAQJhbQECYW4JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW4BAmFvAAIMJXNfX3NodXRkb3duAQJhcAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhcQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcgMCYXMCYXQCYXUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXMCCyBzbmRyVmFsaWQ9CQClAwEFAmF0AgwgbXRjaHJWYWxpZD0JAKUDAQUCYXUBAmF2AQFJBAJhdwUBSQMJAAECBQJhdwIGU3RyaW5nBAJheAUCYXcFAmF4CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXkCAmF6AmFBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXoFAmFBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF6CQDMCAICAS4JAMwIAgUCYUEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUICAmF6AmFBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXoFAmFBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF6CQDMCAICAS4JAMwIAgUCYUEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYUMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFBHRoaXMJAQFRAAACYUQJAQJheQIFBHRoaXMJAQJhZAABAmFFAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhQwkBAmFvAAcBAmFGAAkA2QQBCQECYXkCBQJhQwkBAmFpAAACYUcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFAmFDCQECYXEAAQJhSAAEAmFJCQECYXkCBQR0aGlzCQECYWIABAJhSgkBAmF5AgUEdGhpcwkBAmFjAAQCYUsJAQJhQgIFAmFDCQECYW0BBQJhSgQCYWsJAQJhQgIFAmFDCQECYW0BBQJhSQkAtQkCCQECYXkCBQJhQwkBAmFqAgkApAMBBQJhawkApAMBBQJhSwUBawECYUwACQC1CQIJAQJheQIFAmFDCQECYWgABQFrAAJhTQkBAmFMAAACYU4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFNBQF6AiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYU8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFNBQFCAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYVAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFNBQFDAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJhUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYU0FAUECHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFSCgJhUwJhVAJhVQJhVgJhVwJhWAJhWQJhWgJiYQJiYgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJhVAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYCQDMCAIJAKQDAQUCYVkJAMwIAgkApAMBBQJhWgkAzAgCCQCkAwEFAmJhCQDMCAIJAKQDAQUCYmIFA25pbAUBawECYmMGAmJkAmJlAmJmAmFWAmFZAmFaCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhWQkAzAgCCQCkAwEFAmFaBQNuaWwFAWsBAmJnAQJiaAMJAAACBQJiaAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmgBAmJpAgJiagJiawkAvAIDBQJiagUBYwUCYmsBAmJsAwJibQJibgJibwQCYnAJALwCAwkAuAICBQJibQUCYm4FAWIFAmJuBAJicQkAvwICCQC4AgIFAmJvCQEBTwEFAmJwBQFkAwkBASEBBQJicQkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJicAkAlAoCBQJicQkAmQMBCQDMCAIFAmJtCQDMCAIFAmJuBQNuaWwBAmJyAwJicwJidAJidQQCYnAJALwCAwUCYnQFAWIFAmJzBAJidgkAvwICBQJidQUCYnADAwUCYnYGCQC/AgIFAmJ0BQJicwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnQCASAJAKYDAQUCYnMCASAJAKYDAQUCYnACASAJAKYDAQUCYnUFAmJ2AQJidwQCYngCYnkCYnoCYkEEAmJCCQEBRQIFAmJ6BQJieAQCYkMJAQFFAgUCYkEFAmJ5CQECYmkCBQJiQwUCYkIBAmJEAwJiegJiQQJiRQQCYkYJAQJhSAAEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXYEAmJICQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXcEAmJJCQECYncEBQJiRwUCYkgFAmJ6BQJiQQQCYmsJAQFFAgUCYnoFAmJHBAJiagkBAUUCBQJiQQUCYkgEAmJKCQEBRQIFAmJFBQFhBAJiSwkBAmJpAgUCYmsFAmJKBAJiTAkBAmJpAgUCYmoFAmJKCQDMCAIFAmJJCQDMCAIFAmJLCQDMCAIFAmJMBQNuaWwBAmJNAwJiegJiQQJiRQQCYk4JAQJiRAMFAmJ6BQJiQQUCYkUJAMwIAgkBAUgCCQCRAwIFAmJOAAAFAWEJAMwIAgkBAUgCCQCRAwIFAmJOAAEFAWEJAMwIAgkBAUgCCQCRAwIFAmJOAAIFAWEFA25pbAECYk8BAmJQBAJiUQkAawMFAmJQBQJhZwUBYQkAlAoCCQBlAgUCYlAFAmJRBQJiUQECYlIEAmJTAmJUAmJVAmJWBAJiRgkBAmFIAAQCYlcJAJEDAgUCYkYFAXMEAmJYCQCRAwIFAmJGBQF0BAJiWQkAkQMCBQJiRgUBdQQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdgQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdwQCY2IJAJEDAgUCYkYFAXIEAmNjCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlcCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlcFAmJUCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjZAkBAmJnAQUCYlgEAmNlCQEBRQIFAmNkBQJiWgQCY2YJAQJiZwEFAmJZBAJjZwkBAUUCBQJjZgUCY2EEAmNoCQECYmkCBQJjZwUCY2UEAmNpCQEBSAIFAmNoBQFhBAJjagkBAUUCBQJiVQUBYQQCY2sJAQFFAgUCY2MFAWEEAmNsCQC8AgMFAmNlBQJjagUCY2sEAmNtCQC8AgMFAmNnBQJjagUCY2sEAmNuCQEBSAIFAmNsBQJiWgQCY28JAQFIAgUCY20FAmNhBAJjcAMJAAACBQJiUwIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlYFAmNuAwkAAAIFAmJYAgVXQVZFUwUEdW5pdAkA2QQBBQJiWAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVgUCY28DCQAAAgUCYlkCBVdBVkVTBQR1bml0CQDZBAEFAmJZCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIJAKUIAQUCYlYFAmJTCQECYmMGBQJjbgUCY28FAmJVBQJjaQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQABQJjaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaQUDbmlsCQCcCgoFAmNuBQJjbwUCYlgFAmJZBQJjZAUCY2YFAmNjBQJjaAUCY2IFAmNwAQJjcQ0CYlMCYm8CY3ICY3MCY3QCY3UCYlYCY3YCY3cCY3gCY3kCY3oCY0EEAmJGCQECYUgABAJiVwkA2QQBCQCRAwIFAmJGBQFzBAJjQgkAkQMCBQJiRgUBdAQCY0MJAJEDAgUCYkYFAXUEAmNECQCRAwIFAmJGBQF4BAJjRQkAkQMCBQJiRgUBeQQCY0YJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdgQCY0cJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRgUBdwQCY2IJAJEDAgUCYkYFAXIEAmNICAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJXAghXciBscCBhcwhxdWFudGl0eQQCY2QDBQJjdgkBAmJnAQUCY0IDAwUCY3gJAAACBQJjQQUCY0IHCQBlAgkBAmJnAQUCY0IFAmN6AwUCY3gJAQJiZwEFAmNCCQBlAgkBAmJnAQUCY0IFAmNyBAJjZgMFAmN2CQECYmcBBQJjQwMDBQJjeAkAAAIFAmNBBQJjQwcJAGUCCQECYmcBBQJjQwUCY3oDBQJjeAkBAmJnAQUCY0MJAGUCCQECYmcBBQJjQwUCY3QEAmNJCQEBRQIFAmNyBQJjRgQCY0oJAQFFAgUCY3QFAmNHBAJjSwkBAmJpAgUCY0oFAmNJBAJjZQkBAUUCBQJjZAUCY0YEAmNnCQEBRQIFAmNmBQJjRwQCY0wDCQAAAgUCY0gAAAQCY2gFAWQEAmNNBQFkBAJiSgkAdgYJALkCAgUCY0kFAmNKAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJKBQFhCQEBSAIFAmNJBQJjRgkBAUgCBQJjSgUCY0cJAQJiaQIJALcCAgUCY2cFAmNKCQC3AgIFAmNlBQJjSQUCY00EAmNoCQECYmkCBQJjZwUCY2UEAmNOCQC8AgMJAQFPAQkAuAICBQJjaAUCY0sFAWMFAmNoBAJjTQkBAUUCBQJibwUBYQMDAwUCY3kJAQIhPQIFAmNoBQFkBwkAvwICBQJjTgUCY00HCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNOAgMgPiAJAKYDAQUCY00EAmNPCQEBRQIFAmNIBQFhBAJjUAkAvAIDBQJjSQUCY2gFAWMEAmNRCQC8AgMFAmNKBQFjBQJjaAQCY1IDCQC/AgIFAmNQBQJjSgkAlAoCBQJjUQUCY0oJAJQKAgUCY0kFAmNQBAJjUwgFAmNSAl8xBAJjVAgFAmNSAl8yBAJiSgkAvAIDBQJjTwUCY1QFAmNnCQCXCgUJAQFIAgUCYkoFAWEJAQFIAgUCY1MFAmNGCQEBSAIFAmNUBQJjRwUCY2gFAmNNBAJjVQgFAmNMAl8xBAJjVggFAmNMAl8yBAJjVwgFAmNMAl8zBAJjaQkBAUgCCAUCY0wCXzQFAWEEAmNYCQEBSAIIBQJjTAJfNQUBYQMJAGcCAAAFAmNVCQACAQIHTFAgPD0gMAQCY1kDCQEBIQEFAmN3AAAFAmNVBAJjWgkAZQIFAmNyBQJjVgQCZGEJAGUCBQJjdAUCY1cEAmRiAwMFAmN4CQAAAgUCY0EFAmNCBwkAlAoCBQJjegAAAwMFAmN4CQAAAgUCY0EFAmNDBwkAlAoCAAAFAmN6CQCUCgIFAmNWBQJjVwQCZGMIBQJkYgJfMQQCZGQIBQJkYgJfMgQCZGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAAUCY2kJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2kJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCBQJiVgUCYlMJAQJhUgoFAmRjBQJkZAUCY1kFAmNpBQJibwUCY1gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNaBQJkYQUDbmlsCQCfCg0FAmNVBQJjWQUCY2kFAmNkBQJjZgUCY0gFAmJXBQJjYgUCZGUFAmNaBQJkYQUCY3MFAmN1AQJkZgECZGcEAmJGCQECYUgABAJkaAkAkQMCBQJiRgUBdAQCZGkJAJEDAgUCYkYFAXUEAmNiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXIEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXYEAmJICQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkYFAXcEAmRqCQECYmcBBQJkaAQCZGsJAQJiZwEFAmRpBAJjaAMJAAACCAUCZGcJb3JkZXJUeXBlBQNCdXkJAQJidwQFAmJHBQJiSAkAZAIFAmRqCAUCZGcGYW1vdW50BQJkawkBAmJ3BAUCYkcFAmJICQBlAgUCZGoIBQJkZwZhbW91bnQFAmRrBAJjaQkBAUgCBQJjaAUBYQMDAwkBAmFFAAYJAAACBQJjYgUBbwYJAAACBQJjYgUBcAkAAgECDUFkbWluIGJsb2NrZWQEAmRsCAgFAmRnCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZG0DCQAAAgUCZGwFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRsBAJkbggIBQJkZwlhc3NldFBhaXIKcHJpY2VBc3NldAQCZG8DCQAAAgUCZG4FBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRuAwMJAQIhPQIFAmRtBQJkaAYJAQIhPQIFAmRvBQJkaQkAAgECCVdyIGFzc2V0cwQCZHAIBQJkZwVwcmljZQQCY0cJAGsDBQFhBQJiSAUCYkcEAmRxCQEBSwMFAmRwBQFhBQJjRwQCZHIDCQAAAggFAmRnCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2kFAmRxCQBnAgUCZHEFAmNpBgECZHMBAmR0AwkBAiE9AgkAkAMBCAUCZHQIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmR1CQEFdmFsdWUBCQCRAwIIBQJkdAhwYXltZW50cwAABAJiVAkBBXZhbHVlAQgFAmR1B2Fzc2V0SWQEAmN6CAUCZHUGYW1vdW50BAJjTAkBAmJSBAkA2AQBCAUCZHQNdHJhbnNhY3Rpb25JZAkA2AQBBQJiVAUCY3oIBQJkdAZjYWxsZXIEAmNuCAUCY0wCXzEEAmNvCAUCY0wCXzIEAmNiCQENcGFyc2VJbnRWYWx1ZQEIBQJjTAJfOQQCY3AIBQJjTANfMTADAwkBAmFFAAYJAAACBQJjYgUBcAkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNiCQCXCgUFAmNuBQJjbwUCY3oFAmJUBQJjcAECZHYKAmR3AVoCZHgCZHkCYm8CY3cCY3gCY3kCY3oCY0EEAmNMCQECY3ENBQFaBQJibwgJAQV2YWx1ZQEFAmR4BmFtb3VudAgJAQV2YWx1ZQEFAmR4B2Fzc2V0SWQICQEFdmFsdWUBBQJkeQZhbW91bnQICQEFdmFsdWUBBQJkeQdhc3NldElkBQJkdwkAAAIFAVoCAAUCY3cFAmN4BQJjeQUCY3oFAmNBBAJjYgkBDXBhcnNlSW50VmFsdWUBCAUCY0wCXzgDAwMJAQJhRQAGCQAAAgUCY2IFAW4GCQAAAgUCY2IFAXAJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNiBQJjTAECZHoBAmRBBAJkQgUBZwQCZEMJAJEDAgUCZEEAAAQCZEQJAJEDAgUCZEEAAQQCZEUJAKcDAQUBaQQCZEYJALkCAgkApwMBBQJhRAUCZEUEAmRHCQC3AgIFAmRDBQJkRAMJAAACBQJkRwUBZQUBZQQCZEgJALkCAgUCZEYFAmRCBAJkSQkAuQICCQC5AgIJALkCAgUCZEMFAmREBQJkQgUCZEIEAmRKCQC6AgIJALkCAgUCZEgFAmRHBQJkRQQCZEsJALgCAgUCZEgFAmRFBAJkTAkAtwICBQJkQgUBZgoBAmRNAgJkTgJkTwQCZFAFAmROBAJkUQgFAmRQAl8xBAJkUggFAmRQAl8yAwkBAiE9AgUCZFIFBHVuaXQFAmROBAJkUwkAugICCQC5AgIJALkCAgUCZFEFAmRRBQJkUQUCZEkEAmRUCQC6AgIJALkCAgkAtwICBQJkSgkAuQICBQJkUwUCZEIFAmRRCQC3AgIJALoCAgkAuQICBQJkSwUCZFEFAmRFCQC5AgIFAmRMBQJkUwQCZFUJAQFQAQkAuAICBQJkVAkBBXZhbHVlAQUCZFEDCQDAAgIFAWYFAmRVCQCUCgIFAmRUBQJkTwkAlAoCBQJkVAUEdW5pdAQCZFYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZFcKAAJkWAUCZFYKAAJkWQkAkAMBBQJkWAoAAmRaCQCUCgIFAmRHBQR1bml0CgECZWECAmViAmVjAwkAZwIFAmVjBQJkWQUCZWIJAQJkTQIFAmViCQCRAwIFAmRYBQJlYwoBAmVkAgJlYgJlYwMJAGcCBQJlYwUCZFkFAmViCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlZAIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIJAQJlYQIFAmRaAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRRCAUCZFcCXzEEAmRSCAUCZFcCXzIDCQECIT0CBQJkUgUEdW5pdAUCZFEJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFEBAmVlAwJkQQJkdAJlZgQCZEIFAWcEAmVnCQCRAwIFAmRBAwkAAAIFAmR0AAAAAQAABAJkRQkApwMBBQFpBAJkRgkAuQICCQCnAwEFAmFEBQJkRQQCZEcFAmVnBAJkSAkAuQICBQJkRgUCZEIEAmVoCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZWYFAmVmCQC5AgIFAmVnBQJkQgUCZWYFAmRFCQC5AgIFAmRIBQJkQgQCZWkJALgCAgkAtwICBQJkRwkAugICCQC5AgIFAmVmBQJkRQUCZEgFAmVmCgECZE0CAmROAmRPBAJlagUCZE4EAmVrCAUCZWoCXzEEAmRSCAUCZWoCXzIDCQECIT0CBQJkUgUEdW5pdAUCZE4EAmVsCQC6AgIJALcCAgkAuQICBQJlawUCZWsFAmVoCQC3AgIJALkCAgUBZwUCZWsFAmVpBAJlbQkBAVABCQC4AgIFAmVsCQEFdmFsdWUBBQJlawMJAMACAgUBZgUCZW0JAJQKAgUCZWwFAmRPCQCUCgIFAmVsBQR1bml0BAJkVgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlbgoAAmRYBQJkVgoAAmRZCQCQAwEFAmRYCgACZFoJAJQKAgUCZWYFBHVuaXQKAQJlYQICZWICZWMDCQBnAgUCZWMFAmRZBQJlYgkBAmRNAgUCZWIJAJEDAgUCZFgFAmVjCgECZWQCAmViAmVjAwkAZwIFAmVjBQJkWQUCZWIJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVkAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgkBAmVhAgUCZFoAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZWsIBQJlbgJfMQQCZFIIBQJlbgJfMgMJAQIhPQIFAmRSBQR1bml0BQJlawkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlawECZW8EAmVwAmJUAmJWAVoEAmVxCQECYUgABAJiWAkAkQMCBQJlcQUBdAQCYlkJAJEDAgUCZXEFAXUEAmJXCQCRAwIFAmVxBQFzBAJjRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVxBQF2BAJjRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVxBQF3BAJlcgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlcCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmVzAwkAvwICBQJlcgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmVzBQJlcwQCY2QJAQJiZwEFAmJYBAJjZgkBAmJnAQUCYlkEAmV0AwkAAAIFAVoCAAkAlAoCBQJjZAUCY2YDCQAAAgUCYlQFAmJYAwkAZgIFAmVwBQJjZAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmNkBQJlcAUCY2YDCQAAAgUCYlQFAmJZAwkAZgIFAmVwBQJjZgkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY2QJAGUCBQJjZgUCZXAJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJldQgFAmV0Al8xBAJldggFAmV0Al8yBAJldwMJAAACBQJiVAUCYlgJAJQKAgUCZXAAAAMJAAACBQJiVAUCYlkJAJQKAgAABQJlcAkAAgECD2ludmFsaWQgcGF5bWVudAQCZXgIBQJldwJfMQQCZXkIBQJldwJfMgQCZXoICQECYk8BBQJleAJfMQQCZUEICQECYk8BBQJleQJfMQQCYlEICQECYk8BBQJlcAJfMgQCZUIJAGQCBQJldQUCZXoEAmVDCQBkAgUCZXYFAmVBBAJidAkBAmR6AQkAzAgCCQC2AgEFAmV1CQDMCAIJALYCAQUCZXYFA25pbAQCYnMJAQJkegEJAMwIAgkAtgIBBQJlQgkAzAgCCQC2AgEFAmVDBQNuaWwEAmVEAwkAvwICBQJicwUCYnQGCQEFdGhyb3cAAwkAAAIFAmVEBQJlRAQCZUUJALwCAwUCZXIJALgCAgUCYnMFAmJ0BQJidAQCY2kJAQFIAgkBAmJpAgkBAUUCBQJlQwUCY0cJAQFFAgUCZUIFAmNGBQFhBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQABQJjaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAIFAmJWBQFaCQECYVIKBQJleAUCZXkJAKADAQUCZUUFAmNpAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZUYJAGsDBQJldgUBYQUCZXUEAmVHCQBrAwUCZXAFAWEJAGQCBQJlRgUBYQQCZUgJAGUCBQJlcAUCZUcEAmVJCQC8AgMFAmVyCQC2AgEFAmVICQC2AgEFAmV2BAJlSgkAoAMBCQC8AgMJALgCAgUCZUUFAmVJBQFiBQJlSQkAlgoECQCgAwEFAmVFBQJkZQUCYlEFAmVKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlSwYCZUwCZU0CZU4CZHcCZU8CZVADCQECIT0CCQCQAwEFAmVOAAEJAAIBAgsxIHBtbnQgZXhwZAQCZXEJAQJhSAAEAmJXCQCRAwIFAmVxBQFzBAJiWAkAkQMCBQJlcQUBdAQCYlkJAJEDAgUCZXEFAXUEAmVRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXEFAXYEAmVSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXEFAXcEAmVTCQCRAwIFAmVxBQFyBAJiVgMJAAACBQJkdwUCYVEFAmVPBQJkdwQCZHUJAQV2YWx1ZQEJAJEDAgUCZU4AAAQCYlQJAQV2YWx1ZQEIBQJkdQdhc3NldElkBAJjeggFAmR1BmFtb3VudAQCYlMJANgEAQUCZVADCQECIT0CBQJiVwkA2AQBBQJiVAkAAgECCFdyb25nIExQBAJjZAkBAmJnAQUCYlgEAmNmCQECYmcBBQJiWQQCZVQKAAJlVQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVMCQDMCAIFAmN6BQNuaWwFA25pbAMJAAECBQJlVQIKKEludCwgSW50KQUCZVUJAAIBCQCsAgIJAAMBBQJlVQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZVYIBQJlVAJfMQQCYlEIBQJlVAJfMgQCZVcDAwkAZgIFAmVNAAAJAGYCBQJlTQUCZVYHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlTQUDbmlsAgAFAmVWBAJlWAMJAAACBQJlTAUCYlgJAJYKBAUCZVcAAAkAZQIJAGUCBQJjZAUCZVcFAmJRBQJjZgMJAAACBQJlTAUCYlkJAJYKBAAABQJlVwUCY2QJAGUCCQBlAgUCY2YFAmVXBQJiUQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJlWQgFAmVYAl8xBAJlWggFAmVYAl8yBAJlQggFAmVYAl8zBAJlQwgFAmVYAl80BAJmYQkBAmJpAgkBAUUCBQJlQwUCZVIJAQFFAgUCZUIFAmVRBAJmYgkBAUgCBQJmYQUBYQQCZmMDCQAAAgUCZUwCBVdBVkVTBQR1bml0CQDZBAEFAmVMBAJmZAMJAGYCBQJiUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFHBQJiUQUCZmMFA25pbAUDbmlsBAJjcAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJWBQJlVwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBBQJiVgUCYlMJAQJiYwYFAmVZBQJlWgUCY3oFAmZiBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAAFAmZiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZiBQNuaWwFAmZkAwkAAAIFAmNwBQJjcAQCZmUJAPwHBAUCYUMCBGJ1cm4JAMwIAgUCY3oFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlQFAmN6BQNuaWwDCQAAAgUCZmUFAmZlCQCUCgIFAmNwBQJlVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmYABAJhdwkAoggBCQEBUgADCQABAgUCYXcCBlN0cmluZwQCZEcFAmF3CQDZBAEFAmRHAwkAAQIFAmF3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZnAAQCYXcJAKIIAQkBAVMAAwkAAQIFAmF3AgZTdHJpbmcEAmRHBQJhdwkA2QQBBQJkRwMJAAECBQJhdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmaAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmaQECZHQEAmF3CQECZmYAAwkAAQIFAmF3AgpCeXRlVmVjdG9yBAJmagUCYXcDCQAAAggFAmR0D2NhbGxlclB1YmxpY0tleQUCZmoGBQJmaAMJAAECBQJhdwIEVW5pdAMJAAACCAUCZHQGY2FsbGVyBQR0aGlzBgUCZmgJAAIBAgtNYXRjaCBlcnJvchoCZHQBC2NvbnN0cnVjdG9yAQFRBAJlaAkBAmZpAQUCZHQDCQAAAgUCZWgFAmVoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAUBUQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0AQpzZXRNYW5hZ2VyAQJmawQCZWgJAQJmaQEFAmR0AwkAAAIFAmVoBQJlaAQCZmwJANkEAQUCZmsDCQAAAgUCZmwFAmZsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAUCZmsFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdAEOY29uZmlybU1hbmFnZXIABAJiTgkBAmZnAAQCZm0DCQEJaXNEZWZpbmVkAQUCYk4GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZtBQJmbQQCZm4DCQAAAggFAmR0D2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCYk4GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZuBQJmbgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAJANgEAQkBBXZhbHVlAQUCYk4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVMABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBA3B1dAICZm8CZnAEAmZxCQECYUwABAJmcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZnEFAXoCCldyIHN0IGFkZHIEAmZzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmcQUBQgIKV3Igc2wgYWRkcgMJAGYCAAAFAmZvCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkdAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJmdAkBAmR2CgkApQgBCAUCZHQGY2FsbGVyCQDYBAEIBQJkdA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmR0CHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmR0CHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkdAhwYXltZW50cwABBQJmbwYHBgAAAgAEAmNZCAUCZnQCXzIEAmZ1CAUCZnQCXzcEAmNwCAUCZnQCXzkEAmNaCAUCZnQDXzEwBAJkYQgFAmZ0A18xMQQCYlgIBQJmdANfMTIEAmJZCAUCZnQDXzEzBAJjTAkA/AcEBQJhQwIEZW1pdAkAzAgCBQJjWQUDbmlsBQNuaWwDCQAAAgUCY0wFAmNMBAJmdgQCYXcFAmNMAwkAAQIFAmF3AgdBZGRyZXNzBAJmdwUCYXcJAPwHBAUCZncCBGVtaXQJAMwIAgUCY1kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZ2BQJmdgQCZngDCQBmAgUCY1oAAAkA/AcEBQJmcwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJYBQJjWgUDbmlsBQNuaWwDCQAAAgUCZngFAmZ4BAJmeQMJAGYCBQJkYQAACQD8BwQFAmZzAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlkFAmRhBQNuaWwFA25pbAMJAAACBQJmeQUCZnkEAmZ6AwUCZnAEAmZBCQD8BwQFAmZyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmdQUCY1kFA25pbAMJAAACBQJmQQUCZkEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHQGY2FsbGVyBQJjWQUCZnUFA25pbAkAzggCBQJjcAUCZnoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBC3B1dE9uZVRrblYyAgJlTQJmcAMJAQIhPQIJAJADAQgFAmR0CHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZXEJAQJhSAAEAmJYCQCRAwIFAmVxBQF0BAJiWQkAkQMCBQJlcQUBdQQCYlcJANkEAQkAkQMCBQJlcQUBcwQCZVEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlcQUBdgQCZVIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlcQUBdwQCYlYDCQAAAggFAmR0BmNhbGxlcgUEdGhpcwgFAmR0DG9yaWdpbkNhbGxlcggFAmR0BmNhbGxlcgQCZHUJAQV2YWx1ZQEJAJEDAggFAmR0CHBheW1lbnRzAAAEAmJUCQDYBAEJAQV2YWx1ZQEIBQJkdQdhc3NldElkBAJjeggFAmR1BmFtb3VudAQCZkIJAQJlbwQFAmN6BQJiVAkApQgBBQJiVgkA2AQBCAUCZHQNdHJhbnNhY3Rpb25JZAQCZkMIBQJmQgJfMQQCY3AIBQJmQgJfMgQCYlEIBQJmQgJfMwQCY1kDAwkAZgIFAmVNAAAJAGYCBQJlTQUCZkMHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlTQUDbmlsAgAFAmZDBAJmdAkA/AcEBQJhQwIEZW1pdAkAzAgCBQJjWQUDbmlsBQNuaWwDCQAAAgUCZnQFAmZ0BAJmdgQCYXcFAmZ0AwkAAQIFAmF3AgdBZGRyZXNzBAJmdwUCYXcJAPwHBAUCZncCBGVtaXQJAMwIAgUCY1kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZ2BQJmdgQCZnoDBQJmcAQCZkEJAPwHBAUCYU4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJXBQJjWQUDbmlsAwkAAAIFAmZBBQJmQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkdAZjYWxsZXIFAmNZBQJiVwUDbmlsBAJmZAMJAGYCBQJiUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFHBQJiUQkA2QQBBQJiVAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNwBQJmegUCZmQFAmNZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0AQpwdXRGb3JGcmVlAQJmRAMJAGYCAAAFAmZECQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmR0CHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZFCQECZHYKCQClCAEIBQJkdAZjYWxsZXIJANgEAQgFAmR0DXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHQIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHQIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmR0CHBheW1lbnRzAAEFAmZEBwcGAAACAAgFAmZFAl85AmR0AQNnZXQABAJjTAkBAmRzAQUCZHQEAmZGCAUCY0wCXzEEAmNvCAUCY0wCXzIEAmN6CAUCY0wCXzMEAmJUCAUCY0wCXzQEAmNwCAUCY0wCXzUEAmVpCQD8BwQFAmFDAgRidXJuCQDMCAIFAmN6BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJUBQJjegUDbmlsAwkAAAIFAmVpBQJlaQUCY3AJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHQBC2dldE9uZVRrblYyAgJlTAJlTQQCZkcJAQJlSwYFAmVMBQJlTQgFAmR0CHBheW1lbnRzCAUCZHQGY2FsbGVyCAUCZHQMb3JpZ2luQ2FsbGVyCAUCZHQNdHJhbnNhY3Rpb25JZAQCY3AIBQJmRwJfMQQCZVcIBQJmRwJfMgkAlAoCBQJjcAUCZVcCZHQBE2dldE9uZVRrblYyUkVBRE9OTFkCAmVMAmZIBAJlcQkBAmFIAAQCYlgJAJEDAgUCZXEFAXQEAmJZCQCRAwIFAmVxBQF1BAJiVwkAkQMCBQJlcQUBcwQCZEEJAMwIAgkAtgIBCQECYmcBBQJiWAkAzAgCCQC2AgEJAQJiZwEFAmJZBQNuaWwEAmZJCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVwIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYnQJAQJkegEFAmRBBAJicwkAuAICBQJidAkAvAIDCQC2AgEFAmZIBQJidAUCZkkEAmZKAwkAAAIFAmVMBQJiWAAAAwkAAAIFAmVMBQJiWQABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZLCQECZWUDBQJkQQUCZkoFAmJzBAJmTAkAuAICCQCRAwIFAmRBBQJmSgUCZksEAmZNCQCgAwEJALgCAgUCZkwFAWYEAmZOCQECYk8BBQJmTQQCZVYIBQJmTgJfMQQCYlEIBQJmTgJfMgkAlAoCBQNuaWwJAJQKAgUCZVYFAmJRAmR0ARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJlTAJmSAQCZXEJAQJhSAAEAmJYCQCRAwIFAmVxBQF0BAJiWQkAkQMCBQJlcQUBdQQCYlcJAJEDAgUCZXEFAXMEAmNkCQECYmcBBQJiWAQCY2YJAQJiZwEFAmJZBAJmTwoAAmVVCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZUwJAMwIAgUCZkgFA25pbAUDbmlsAwkAAQIFAmVVAgooSW50LCBJbnQpBQJlVQkAAgEJAKwCAgkAAwEFAmVVAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlVggFAmZPAl8xBAJiUQgFAmZPAl8yBAJjTAkBAmJSBAIABQJiVwUCZkgFBHRoaXMEAmNuCAUCY0wCXzEEAmNvCAUCY0wCXzIEAmZQCQBkAgUCY24FAmNvBAJlSgkAawMJAGUCBQJlVgUCZlAFAWEFAmZQCQCUCgIFA25pbAkAlQoDBQJlVgUCYlEFAmVKAmR0AQlnZXROb0xlc3MCAmZRAmZSBAJjTAkBAmRzAQUCZHQEAmNuCAUCY0wCXzEEAmNvCAUCY0wCXzIEAmN6CAUCY0wCXzMEAmJUCAUCY0wCXzQEAmNwCAUCY0wCXzUDCQBmAgUCZlEFAmNuCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNuAgMgPCAJAKQDAQUCZlEDCQBmAgUCZlIFAmNvCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY28CAyA8IAkApAMBBQJmUgQCZlMJAPwHBAUCYUMCBGJ1cm4JAMwIAgUCY3oFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlQFAmN6BQNuaWwDCQAAAgUCZlMFAmZTBQJjcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdAENdW5zdGFrZUFuZEdldAECYlAEAmZUAwkBAiE9AgkAkAMBCAUCZHQIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmZUBQJmVAQCYkYJAQJhSAAEAmZVCQECYUwABAJmdQkA2QQBCQCRAwIFAmJGBQFzBAJmVgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZlUFAXoCCldyIHN0IGFkZHIEAmZXCQD8BwQFAmZWAgd1bnN0YWtlCQDMCAIJANgEAQUCZnUJAMwIAgUCYlAFA25pbAUDbmlsAwkAAAIFAmZXBQJmVwQCY0wJAQJiUgQJANgEAQgFAmR0DXRyYW5zYWN0aW9uSWQJANgEAQUCZnUFAmJQCAUCZHQGY2FsbGVyBAJjYgkBDXBhcnNlSW50VmFsdWUBCAUCY0wCXzkEAmNwCAUCY0wDXzEwBAJmWAMDCQECYUUABgkAAAIFAmNiBQFwCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY2IGAwkAAAIFAmZYBQJmWAQCZlkJAPwHBAUCYUMCBGJ1cm4JAMwIAgUCYlAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZnUFAmJQBQNuaWwDCQAAAgUCZlkFAmZZBQJjcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdAEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJmWgJlTAJlTQQCZlQDCQECIT0CCQCQAwEIBQJkdAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZlQFAmZUBAJiRgkBAmFIAAQCZlUJAQJhTAAEAmZ1CQDZBAEJAJEDAgUCYkYFAXMEAmZWCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmVQUBegIKV3Igc3QgYWRkcgQCZlcJAPwHBAUCZlYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJmdQkAzAgCBQJmWgUDbmlsBQNuaWwDCQAAAgUCZlcFAmZXBAJnYQkBAmVLBgUCZUwFAmVNCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmdQUCZloFA25pbAgFAmR0BmNhbGxlcggFAmR0DG9yaWdpbkNhbGxlcggFAmR0DXRyYW5zYWN0aW9uSWQEAmNwCAUCZ2ECXzEEAmVXCAUCZ2ECXzIJAJQKAgUCY3AFAmVXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR0ARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJnYgJnYwQCZXEJAQJhSAAEAmJYCQCRAwIFAmVxBQF0BAJiWQkAkQMCBQJlcQUBdQQCYlcJAJEDAgUCZXEFAXMEAmdkCQECZW8EBQJnYgUCZ2MCAAIABAJlRQgFAmdkAl8xBAJjcAgFAmdkAl8yBAJiUQgFAmdkAl8zBAJlSggFAmdkAl80CQCUCgIFA25pbAkAlQoDBQJlRQUCYlEFAmVKAmR0AQhhY3RpdmF0ZQICZ2UCZ2YDCQECIT0CCQClCAEIBQJkdAZjYWxsZXIJAKUIAQUCYUMJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJnZQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnZgUDbmlsAgdzdWNjZXNzAmR0AQRzZXRTAgJnZwJmWAMJAQIhPQIJAKUIAQgFAmR0BmNhbGxlcgkBAmF5AgUEdGhpcwkBAmFlAAUCZmgJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ2cFAmZYBQNuaWwCZHQBBHNldEkCAmdnAmZYAwkBAiE9AgkApQgBCAUCZHQGY2FsbGVyCQECYXkCBQR0aGlzCQECYWUABQJmaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ2cFAmZYBQNuaWwCZHQBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFIAAJkdAEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYmgJAJQKAgUDbmlsCQECYmcBBQJiaAJkdAEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYnoCYkECYkUEAmdoCQECYkQDBQJiegUCYkEFAmJFCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ2gAAAkAzAgCCQCmAwEJAJEDAgUCZ2gAAQkAzAgCCQCmAwEJAJEDAgUCZ2gAAgUDbmlsAmR0ARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAmdpCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAmdpAmR0ARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRgFHCQCUCgIFA25pbAkApgMBCQEBRQIFAUYFAUcCZHQBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYmoCYmsJAJQKAgUDbmlsCQCmAwEJAQJiaQIJAKcDAQUCYmoJAKcDAQUCYmsCZHQBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiUwJibwJjcgJjcwJjdAJjdQJnagJjdgJjdwkAlAoCBQNuaWwJAQJjcQ0FAmJTBQJibwUCY3IFAmNzBQJjdAUCY3UFAmdqBQJjdgUCY3cGBwAAAgACZHQBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiUwJnawJiVQJnagQCY0wJAQJiUgQFAmJTBQJnawUCYlUJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdqCQCUCgIFA25pbAkAnAoKCAUCY0wCXzEIBQJjTAJfMggFAmNMAl8zCAUCY0wCXzQIBQJjTAJfNQgFAmNMAl82CAUCY0wCXzcJAKYDAQgFAmNMAl84CAUCY0wCXzkIBQJjTANfMTACZHQBDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFnAQJnbAECZ20ABAJnbgQCYXcJAQJmZgADCQABAgUCYXcCCkJ5dGVWZWN0b3IEAmZqBQJhdwUCZmoDCQABAgUCYXcCBFVuaXQIBQJnbA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXcFAmdsAwkAAQIFAmF3AgVPcmRlcgQCZGcFAmF3BAJnbwkBAmFGAAQCZ3AJAQJkZgEFAmRnBAJncQkA9AMDCAUCZGcJYm9keUJ5dGVzCQCRAwIIBQJkZwZwcm9vZnMAAAgFAmRnD3NlbmRlclB1YmxpY0tleQQCZ3IJAPQDAwgFAmRnCWJvZHlCeXRlcwkAkQMCCAUCZGcGcHJvb2ZzAAEFAmdvAwMDBQJncAUCZ3EHBQJncgcGCQECYXIDBQJncAUCZ3EFAmdyAwkAAQIFAmF3AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZEcFAmF3BAJncwkA9gMBCQEFdmFsdWUBCAUCZEcGc2NyaXB0BAJndAkA2wQBCQEFdmFsdWUBCQCdCAIFAmFDCQECYXAABAJndQkA8QcBBQR0aGlzAwMJAAACBQJndAUCZ3MJAQIhPQIFAmd1BQJncwcGCQD0AwMIBQJnbAlib2R5Qnl0ZXMJAJEDAggFAmdsBnByb29mcwAABQJnbgkA9AMDCAUCZ2wJYm9keUJ5dGVzCQCRAwIIBQJnbAZwcm9vZnMAAAUCZ27v3LKE", "chainId": 84, "height": 2279179, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9GoN5WYqfBRMpjkSgGDzFnvhcBgAXkEveG1zKU9f2Z4d Next: 3SRuzYU4sc2ob2dDBP7nZDeEikdUiSSXQgzRKqdXXJZQ Diff:
OldNewDifferences
649649 let du = value(eN[0])
650650 let bT = value(du.assetId)
651651 let cz = du.amount
652- if ((1000000000 > cz))
653- then throw("Min pmt 10 LP")
652+ let bS = toBase58String(eP)
653+ if ((bW != toBase58String(bT)))
654+ then throw("Wrong LP")
654655 else {
655- let bS = toBase58String(eP)
656- if ((bW != toBase58String(bT)))
657- then throw("Wrong LP")
658- else {
659- let cd = bg(bX)
660- let cf = bg(bY)
661- let eT = {
662- let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
663- if ($isInstanceOf(eU, "(Int, Int)"))
664- then eU
665- else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
666- }
667- let eV = eT._1
668- let bQ = eT._2
669- let eW = if (if ((eM > 0))
670- then (eM > eV)
671- else false)
672- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
673- else eV
674- let eX = if ((eL == bX))
675- then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
676- else if ((eL == bY))
677- then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
678- else throw("invalid out asset id")
679- let eY = eX._1
680- let eZ = eX._2
681- let eB = eX._3
682- let eC = eX._4
683- let fa = bi(E(eC, eR), E(eB, eQ))
684- let fb = H(fa, a)
685- let fc = if ((eL == "WAVES"))
686- then unit
687- else fromBase58String(eL)
688- let fd = if ((bQ > 0))
689- then [ScriptTransfer(aG, bQ, fc)]
690- else nil
691- 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)
692- if ((cp == cp))
693- then {
694- let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
695- if ((fe == fe))
696- then $Tuple2(cp, eW)
697- else throw("Strict value is not equal to itself.")
698- }
656+ let cd = bg(bX)
657+ let cf = bg(bY)
658+ let eT = {
659+ let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
660+ if ($isInstanceOf(eU, "(Int, Int)"))
661+ then eU
662+ else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
663+ }
664+ let eV = eT._1
665+ let bQ = eT._2
666+ let eW = if (if ((eM > 0))
667+ then (eM > eV)
668+ else false)
669+ then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
670+ else eV
671+ let eX = if ((eL == bX))
672+ then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
673+ else if ((eL == bY))
674+ then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
675+ else throw("invalid out asset id")
676+ let eY = eX._1
677+ let eZ = eX._2
678+ let eB = eX._3
679+ let eC = eX._4
680+ let fa = bi(E(eC, eR), E(eB, eQ))
681+ let fb = H(fa, a)
682+ let fc = if ((eL == "WAVES"))
683+ then unit
684+ else fromBase58String(eL)
685+ let fd = if ((bQ > 0))
686+ then [ScriptTransfer(aG, bQ, fc)]
687+ else nil
688+ 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)
689+ if ((cp == cp))
690+ then {
691+ let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
692+ if ((fe == fe))
693+ then $Tuple2(cp, eW)
699694 else throw("Strict value is not equal to itself.")
700695 }
696+ else throw("Strict value is not equal to itself.")
701697 }
702698 }
703699
872868 let du = value(dt.payments[0])
873869 let bT = toBase58String(value(du.assetId))
874870 let cz = du.amount
875- if ((10000000 > cz))
876- then throw("Wrong pmt amt")
877- else {
878- let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
879- let fC = fB._1
880- let cp = fB._2
881- let bQ = fB._3
882- let cY = if (if ((eM > 0))
883- then (eM > fC)
884- else false)
885- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
886- else fC
887- let ft = invoke(aC, "emit", [cY], nil)
888- if ((ft == ft))
871+ let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
872+ let fC = fB._1
873+ let cp = fB._2
874+ let bQ = fB._3
875+ let cY = if (if ((eM > 0))
876+ then (eM > fC)
877+ else false)
878+ then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
879+ else fC
880+ let ft = invoke(aC, "emit", [cY], nil)
881+ if ((ft == ft))
882+ then {
883+ let fv = {
884+ let aw = ft
885+ if ($isInstanceOf(aw, "Address"))
886+ then {
887+ let fw = aw
888+ invoke(fw, "emit", [cY], nil)
889+ }
890+ else unit
891+ }
892+ if ((fv == fv))
889893 then {
890- let fv = {
891- let aw = ft
892- if ($isInstanceOf(aw, "Address"))
893- then {
894- let fw = aw
895- invoke(fw, "emit", [cY], nil)
896- }
897- else unit
898- }
899- if ((fv == fv))
894+ let fz = if (fp)
900895 then {
901- let fz = if (fp)
902- then {
903- let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
904- if ((fA == fA))
905- then nil
906- else throw("Strict value is not equal to itself.")
907- }
908- else [ScriptTransfer(dt.caller, cY, bW)]
909- let fd = if ((bQ > 0))
910- then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
911- else nil
912- $Tuple2(((cp ++ fz) ++ fd), cY)
896+ let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
897+ if ((fA == fA))
898+ then nil
899+ else throw("Strict value is not equal to itself.")
913900 }
914- else throw("Strict value is not equal to itself.")
901+ else [ScriptTransfer(dt.caller, cY, bW)]
902+ let fd = if ((bQ > 0))
903+ then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
904+ else nil
905+ $Tuple2(((cp ++ fz) ++ fd), cY)
915906 }
916907 else throw("Strict value is not equal to itself.")
917908 }
909+ else throw("Strict value is not equal to itself.")
918910 }
919911
920912
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
652- if ((1000000000 > cz))
653- then throw("Min pmt 10 LP")
652+ let bS = toBase58String(eP)
653+ if ((bW != toBase58String(bT)))
654+ then throw("Wrong LP")
654655 else {
655- let bS = toBase58String(eP)
656- if ((bW != toBase58String(bT)))
657- then throw("Wrong LP")
658- else {
659- let cd = bg(bX)
660- let cf = bg(bY)
661- let eT = {
662- let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
663- if ($isInstanceOf(eU, "(Int, Int)"))
664- then eU
665- else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
666- }
667- let eV = eT._1
668- let bQ = eT._2
669- let eW = if (if ((eM > 0))
670- then (eM > eV)
671- else false)
672- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
673- else eV
674- let eX = if ((eL == bX))
675- then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
676- else if ((eL == bY))
677- then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
678- else throw("invalid out asset id")
679- let eY = eX._1
680- let eZ = eX._2
681- let eB = eX._3
682- let eC = eX._4
683- let fa = bi(E(eC, eR), E(eB, eQ))
684- let fb = H(fa, a)
685- let fc = if ((eL == "WAVES"))
686- then unit
687- else fromBase58String(eL)
688- let fd = if ((bQ > 0))
689- then [ScriptTransfer(aG, bQ, fc)]
690- else nil
691- 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)
692- if ((cp == cp))
693- then {
694- let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
695- if ((fe == fe))
696- then $Tuple2(cp, eW)
697- else throw("Strict value is not equal to itself.")
698- }
656+ let cd = bg(bX)
657+ let cf = bg(bY)
658+ let eT = {
659+ let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
660+ if ($isInstanceOf(eU, "(Int, Int)"))
661+ then eU
662+ else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
663+ }
664+ let eV = eT._1
665+ let bQ = eT._2
666+ let eW = if (if ((eM > 0))
667+ then (eM > eV)
668+ else false)
669+ then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
670+ else eV
671+ let eX = if ((eL == bX))
672+ then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
673+ else if ((eL == bY))
674+ then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
675+ else throw("invalid out asset id")
676+ let eY = eX._1
677+ let eZ = eX._2
678+ let eB = eX._3
679+ let eC = eX._4
680+ let fa = bi(E(eC, eR), E(eB, eQ))
681+ let fb = H(fa, a)
682+ let fc = if ((eL == "WAVES"))
683+ then unit
684+ else fromBase58String(eL)
685+ let fd = if ((bQ > 0))
686+ then [ScriptTransfer(aG, bQ, fc)]
687+ else nil
688+ 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)
689+ if ((cp == cp))
690+ then {
691+ let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
692+ if ((fe == fe))
693+ then $Tuple2(cp, eW)
699694 else throw("Strict value is not equal to itself.")
700695 }
696+ else throw("Strict value is not equal to itself.")
701697 }
702698 }
703699
704700
705701 func ff () = {
706702 let aw = getString(R())
707703 if ($isInstanceOf(aw, "String"))
708704 then {
709705 let dG = aw
710706 fromBase58String(dG)
711707 }
712708 else if ($isInstanceOf(aw, "Unit"))
713709 then unit
714710 else throw("Match error")
715711 }
716712
717713
718714 func fg () = {
719715 let aw = getString(S())
720716 if ($isInstanceOf(aw, "String"))
721717 then {
722718 let dG = aw
723719 fromBase58String(dG)
724720 }
725721 else if ($isInstanceOf(aw, "Unit"))
726722 then unit
727723 else throw("Match error")
728724 }
729725
730726
731727 let fh = throw("Permission denied")
732728
733729 func fi (dt) = {
734730 let aw = ff()
735731 if ($isInstanceOf(aw, "ByteVector"))
736732 then {
737733 let fj = aw
738734 if ((dt.callerPublicKey == fj))
739735 then true
740736 else fh
741737 }
742738 else if ($isInstanceOf(aw, "Unit"))
743739 then if ((dt.caller == this))
744740 then true
745741 else fh
746742 else throw("Match error")
747743 }
748744
749745
750746 @Callable(dt)
751747 func constructor (Q) = {
752748 let eh = fi(dt)
753749 if ((eh == eh))
754750 then [StringEntry(Q(), Q)]
755751 else throw("Strict value is not equal to itself.")
756752 }
757753
758754
759755
760756 @Callable(dt)
761757 func setManager (fk) = {
762758 let eh = fi(dt)
763759 if ((eh == eh))
764760 then {
765761 let fl = fromBase58String(fk)
766762 if ((fl == fl))
767763 then [StringEntry(S(), fk)]
768764 else throw("Strict value is not equal to itself.")
769765 }
770766 else throw("Strict value is not equal to itself.")
771767 }
772768
773769
774770
775771 @Callable(dt)
776772 func confirmManager () = {
777773 let bN = fg()
778774 let fm = if (isDefined(bN))
779775 then true
780776 else throw("No pending manager")
781777 if ((fm == fm))
782778 then {
783779 let fn = if ((dt.callerPublicKey == value(bN)))
784780 then true
785781 else throw("You are not pending manager")
786782 if ((fn == fn))
787783 then [StringEntry(R(), toBase58String(value(bN))), DeleteEntry(S())]
788784 else throw("Strict value is not equal to itself.")
789785 }
790786 else throw("Strict value is not equal to itself.")
791787 }
792788
793789
794790
795791 @Callable(dt)
796792 func put (fo,fp) = {
797793 let fq = aL()
798794 let fr = valueOrErrorMessage(addressFromString(fq[z]), "Wr st addr")
799795 let fs = valueOrErrorMessage(addressFromString(fq[B]), "Wr sl addr")
800796 if ((0 > fo))
801797 then throw("Wrong slippage")
802798 else if ((size(dt.payments) != 2))
803799 then throw("2 pmnts expd")
804800 else {
805801 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, "")
806802 let cY = ft._2
807803 let fu = ft._7
808804 let cp = ft._9
809805 let cZ = ft._10
810806 let da = ft._11
811807 let bX = ft._12
812808 let bY = ft._13
813809 let cL = invoke(aC, "emit", [cY], nil)
814810 if ((cL == cL))
815811 then {
816812 let fv = {
817813 let aw = cL
818814 if ($isInstanceOf(aw, "Address"))
819815 then {
820816 let fw = aw
821817 invoke(fw, "emit", [cY], nil)
822818 }
823819 else unit
824820 }
825821 if ((fv == fv))
826822 then {
827823 let fx = if ((cZ > 0))
828824 then invoke(fs, "put", nil, [AttachedPayment(bX, cZ)])
829825 else nil
830826 if ((fx == fx))
831827 then {
832828 let fy = if ((da > 0))
833829 then invoke(fs, "put", nil, [AttachedPayment(bY, da)])
834830 else nil
835831 if ((fy == fy))
836832 then {
837833 let fz = if (fp)
838834 then {
839835 let fA = invoke(fr, "stake", nil, [AttachedPayment(fu, cY)])
840836 if ((fA == fA))
841837 then nil
842838 else throw("Strict value is not equal to itself.")
843839 }
844840 else [ScriptTransfer(dt.caller, cY, fu)]
845841 (cp ++ fz)
846842 }
847843 else throw("Strict value is not equal to itself.")
848844 }
849845 else throw("Strict value is not equal to itself.")
850846 }
851847 else throw("Strict value is not equal to itself.")
852848 }
853849 else throw("Strict value is not equal to itself.")
854850 }
855851 }
856852
857853
858854
859855 @Callable(dt)
860856 func putOneTknV2 (eM,fp) = if ((size(dt.payments) != 1))
861857 then throw("1 pmnt expd")
862858 else {
863859 let eq = aH()
864860 let bX = eq[t]
865861 let bY = eq[u]
866862 let bW = fromBase58String(eq[s])
867863 let eQ = parseIntValue(eq[v])
868864 let eR = parseIntValue(eq[w])
869865 let bV = if ((dt.caller == this))
870866 then dt.originCaller
871867 else dt.caller
872868 let du = value(dt.payments[0])
873869 let bT = toBase58String(value(du.assetId))
874870 let cz = du.amount
875- if ((10000000 > cz))
876- then throw("Wrong pmt amt")
877- else {
878- let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
879- let fC = fB._1
880- let cp = fB._2
881- let bQ = fB._3
882- let cY = if (if ((eM > 0))
883- then (eM > fC)
884- else false)
885- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
886- else fC
887- let ft = invoke(aC, "emit", [cY], nil)
888- if ((ft == ft))
871+ let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
872+ let fC = fB._1
873+ let cp = fB._2
874+ let bQ = fB._3
875+ let cY = if (if ((eM > 0))
876+ then (eM > fC)
877+ else false)
878+ then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
879+ else fC
880+ let ft = invoke(aC, "emit", [cY], nil)
881+ if ((ft == ft))
882+ then {
883+ let fv = {
884+ let aw = ft
885+ if ($isInstanceOf(aw, "Address"))
886+ then {
887+ let fw = aw
888+ invoke(fw, "emit", [cY], nil)
889+ }
890+ else unit
891+ }
892+ if ((fv == fv))
889893 then {
890- let fv = {
891- let aw = ft
892- if ($isInstanceOf(aw, "Address"))
893- then {
894- let fw = aw
895- invoke(fw, "emit", [cY], nil)
896- }
897- else unit
898- }
899- if ((fv == fv))
894+ let fz = if (fp)
900895 then {
901- let fz = if (fp)
902- then {
903- let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
904- if ((fA == fA))
905- then nil
906- else throw("Strict value is not equal to itself.")
907- }
908- else [ScriptTransfer(dt.caller, cY, bW)]
909- let fd = if ((bQ > 0))
910- then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
911- else nil
912- $Tuple2(((cp ++ fz) ++ fd), cY)
896+ let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
897+ if ((fA == fA))
898+ then nil
899+ else throw("Strict value is not equal to itself.")
913900 }
914- else throw("Strict value is not equal to itself.")
901+ else [ScriptTransfer(dt.caller, cY, bW)]
902+ let fd = if ((bQ > 0))
903+ then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
904+ else nil
905+ $Tuple2(((cp ++ fz) ++ fd), cY)
915906 }
916907 else throw("Strict value is not equal to itself.")
917908 }
909+ else throw("Strict value is not equal to itself.")
918910 }
919911
920912
921913
922914 @Callable(dt)
923915 func putForFree (fD) = if ((0 > fD))
924916 then throw("Wrong slpg")
925917 else if ((size(dt.payments) != 2))
926918 then throw("2 pmnts expd")
927919 else {
928920 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, "")
929921 fE._9
930922 }
931923
932924
933925
934926 @Callable(dt)
935927 func get () = {
936928 let cL = ds(dt)
937929 let fF = cL._1
938930 let co = cL._2
939931 let cz = cL._3
940932 let bT = cL._4
941933 let cp = cL._5
942934 let ei = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
943935 if ((ei == ei))
944936 then cp
945937 else throw("Strict value is not equal to itself.")
946938 }
947939
948940
949941
950942 @Callable(dt)
951943 func getOneTknV2 (eL,eM) = {
952944 let fG = eK(eL, eM, dt.payments, dt.caller, dt.originCaller, dt.transactionId)
953945 let cp = fG._1
954946 let eW = fG._2
955947 $Tuple2(cp, eW)
956948 }
957949
958950
959951
960952 @Callable(dt)
961953 func getOneTknV2READONLY (eL,fH) = {
962954 let eq = aH()
963955 let bX = eq[t]
964956 let bY = eq[u]
965957 let bW = eq[s]
966958 let dA = [toBigInt(bg(bX)), toBigInt(bg(bY))]
967959 let fI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
968960 let bt = dz(dA)
969961 let bs = (bt - fraction(toBigInt(fH), bt, fI))
970962 let fJ = if ((eL == bX))
971963 then 0
972964 else if ((eL == bY))
973965 then 1
974966 else throw("invalid out asset id")
975967 let fK = ee(dA, fJ, bs)
976968 let fL = (dA[fJ] - fK)
977969 let fM = toInt((fL - f))
978970 let fN = bO(fM)
979971 let eV = fN._1
980972 let bQ = fN._2
981973 $Tuple2(nil, $Tuple2(eV, bQ))
982974 }
983975
984976
985977
986978 @Callable(dt)
987979 func getOneTknV2WithBonusREADONLY (eL,fH) = {
988980 let eq = aH()
989981 let bX = eq[t]
990982 let bY = eq[u]
991983 let bW = eq[s]
992984 let cd = bg(bX)
993985 let cf = bg(bY)
994986 let fO = {
995987 let eU = invoke(this, "getOneTknV2READONLY", [eL, fH], nil)
996988 if ($isInstanceOf(eU, "(Int, Int)"))
997989 then eU
998990 else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
999991 }
1000992 let eV = fO._1
1001993 let bQ = fO._2
1002994 let cL = bR("", bW, fH, this)
1003995 let cn = cL._1
1004996 let co = cL._2
1005997 let fP = (cn + co)
1006998 let eJ = fraction((eV - fP), a, fP)
1007999 $Tuple2(nil, $Tuple3(eV, bQ, eJ))
10081000 }
10091001
10101002
10111003
10121004 @Callable(dt)
10131005 func getNoLess (fQ,fR) = {
10141006 let cL = ds(dt)
10151007 let cn = cL._1
10161008 let co = cL._2
10171009 let cz = cL._3
10181010 let bT = cL._4
10191011 let cp = cL._5
10201012 if ((fQ > cn))
10211013 then throw(((("Failed: " + toString(cn)) + " < ") + toString(fQ)))
10221014 else if ((fR > co))
10231015 then throw(((("Failed: " + toString(co)) + " < ") + toString(fR)))
10241016 else {
10251017 let fS = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
10261018 if ((fS == fS))
10271019 then cp
10281020 else throw("Strict value is not equal to itself.")
10291021 }
10301022 }
10311023
10321024
10331025
10341026 @Callable(dt)
10351027 func unstakeAndGet (bP) = {
10361028 let fT = if ((size(dt.payments) != 0))
10371029 then throw("No pmnts expd")
10381030 else true
10391031 if ((fT == fT))
10401032 then {
10411033 let bF = aH()
10421034 let fU = aL()
10431035 let fu = fromBase58String(bF[s])
10441036 let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
10451037 let fW = invoke(fV, "unstake", [toBase58String(fu), bP], nil)
10461038 if ((fW == fW))
10471039 then {
10481040 let cL = bR(toBase58String(dt.transactionId), toBase58String(fu), bP, dt.caller)
10491041 let cb = parseIntValue(cL._9)
10501042 let cp = cL._10
10511043 let fX = if (if (aE())
10521044 then true
10531045 else (cb == p))
10541046 then throw(("Blocked: " + toString(cb)))
10551047 else true
10561048 if ((fX == fX))
10571049 then {
10581050 let fY = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
10591051 if ((fY == fY))
10601052 then cp
10611053 else throw("Strict value is not equal to itself.")
10621054 }
10631055 else throw("Strict value is not equal to itself.")
10641056 }
10651057 else throw("Strict value is not equal to itself.")
10661058 }
10671059 else throw("Strict value is not equal to itself.")
10681060 }
10691061
10701062
10711063
10721064 @Callable(dt)
10731065 func unstakeAndGetOneTknV2 (fZ,eL,eM) = {
10741066 let fT = if ((size(dt.payments) != 0))
10751067 then throw("No pmnts expd")
10761068 else true
10771069 if ((fT == fT))
10781070 then {
10791071 let bF = aH()
10801072 let fU = aL()
10811073 let fu = fromBase58String(bF[s])
10821074 let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
10831075 let fW = invoke(fV, "unstake", [toBase58String(fu), fZ], nil)
10841076 if ((fW == fW))
10851077 then {
10861078 let ga = eK(eL, eM, [AttachedPayment(fu, fZ)], dt.caller, dt.originCaller, dt.transactionId)
10871079 let cp = ga._1
10881080 let eW = ga._2
10891081 $Tuple2(cp, eW)
10901082 }
10911083 else throw("Strict value is not equal to itself.")
10921084 }
10931085 else throw("Strict value is not equal to itself.")
10941086 }
10951087
10961088
10971089
10981090 @Callable(dt)
10991091 func putOneTknV2WithBonusREADONLY (gb,gc) = {
11001092 let eq = aH()
11011093 let bX = eq[t]
11021094 let bY = eq[u]
11031095 let bW = eq[s]
11041096 let gd = eo(gb, gc, "", "")
11051097 let eE = gd._1
11061098 let cp = gd._2
11071099 let bQ = gd._3
11081100 let eJ = gd._4
11091101 $Tuple2(nil, $Tuple3(eE, bQ, eJ))
11101102 }
11111103
11121104
11131105
11141106 @Callable(dt)
11151107 func activate (ge,gf) = if ((toString(dt.caller) != toString(aC)))
11161108 then throw("denied")
11171109 else $Tuple2([StringEntry(ab(), ge), StringEntry(ac(), gf)], "success")
11181110
11191111
11201112
11211113 @Callable(dt)
11221114 func setS (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
11231115 then fh
11241116 else [StringEntry(gg, fX)]
11251117
11261118
11271119
11281120 @Callable(dt)
11291121 func setI (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
11301122 then fh
11311123 else [IntegerEntry(gg, fX)]
11321124
11331125
11341126
11351127 @Callable(dt)
11361128 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
11371129
11381130
11391131
11401132 @Callable(dt)
11411133 func getAccBalanceWrapperREADONLY (bh) = $Tuple2(nil, bg(bh))
11421134
11431135
11441136
11451137 @Callable(dt)
11461138 func calcPricesWrapperREADONLY (bz,bA,bE) = {
11471139 let gh = bD(bz, bA, bE)
11481140 $Tuple2(nil, [toString(gh[0]), toString(gh[1]), toString(gh[2])])
11491141 }
11501142
11511143
11521144
11531145 @Callable(dt)
11541146 func fromX18WrapperREADONLY (I,gi) = $Tuple2(nil, H(parseBigIntValue(I), gi))
11551147
11561148
11571149
11581150 @Callable(dt)
11591151 func toX18WrapperREADONLY (F,G) = $Tuple2(nil, toString(E(F, G)))
11601152
11611153
11621154
11631155 @Callable(dt)
11641156 func calcPriceBigIntWrapperREADONLY (bj,bk) = $Tuple2(nil, toString(bi(parseBigIntValue(bj), parseBigIntValue(bk))))
11651157
11661158
11671159
11681160 @Callable(dt)
11691161 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, ""))
11701162
11711163
11721164
11731165 @Callable(dt)
11741166 func estimateGetOperationWrapperREADONLY (bS,gk,bU,gj) = {
11751167 let cL = bR(bS, gk, bU, addressFromStringValue(gj))
11761168 $Tuple2(nil, $Tuple10(cL._1, cL._2, cL._3, cL._4, cL._5, cL._6, cL._7, toString(cL._8), cL._9, cL._10))
11771169 }
11781170
11791171
11801172
11811173 @Callable(dt)
11821174 func getFeeREADONLY () = $Tuple2(nil, ag)
11831175
11841176
11851177 @Verifier(gl)
11861178 func gm () = {
11871179 let gn = {
11881180 let aw = ff()
11891181 if ($isInstanceOf(aw, "ByteVector"))
11901182 then {
11911183 let fj = aw
11921184 fj
11931185 }
11941186 else if ($isInstanceOf(aw, "Unit"))
11951187 then gl.senderPublicKey
11961188 else throw("Match error")
11971189 }
11981190 let aw = gl
11991191 if ($isInstanceOf(aw, "Order"))
12001192 then {
12011193 let dg = aw
12021194 let go = aF()
12031195 let gp = df(dg)
12041196 let gq = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
12051197 let gr = sigVerify(dg.bodyBytes, dg.proofs[1], go)
12061198 if (if (if (gp)
12071199 then gq
12081200 else false)
12091201 then gr
12101202 else false)
12111203 then true
12121204 else ar(gp, gq, gr)
12131205 }
12141206 else if ($isInstanceOf(aw, "SetScriptTransaction"))
12151207 then {
12161208 let dG = aw
12171209 let gs = blake2b256(value(dG.script))
12181210 let gt = fromBase64String(value(getString(aC, ap())))
12191211 let gu = scriptHash(this)
12201212 if (if ((gt == gs))
12211213 then (gu != gs)
12221214 else false)
12231215 then true
12241216 else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
12251217 }
12261218 else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
12271219 }
12281220

github/deemru/w8io/169f3d6 
750.00 ms