From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id B286F461D0B; Mon, 15 May 2023 14:12:00 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org B286F461D0B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1684149120; bh=AIDilLHs9fkg6Gn/YIxGFrDALMcjuK2SGbJbro233co=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=gN3MYVP6nMcqt7/ZZroSoCgqhdcK6bcCbx9MAjzquyq6PiifwxjYRnKUmpwo9Tu1b ACMfIS80SNsr1ICfl3KV0U3j264z2VSA2iCY3ijB/Az6vfU8+rwtHgSbECioPXFJ// rgFE6wQ7po4tdxSQAykdWzhGgAeHAUd6+T+113OQ= Received: from f521.i.mail.ru (f521.i.mail.ru [45.84.129.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 4D2D645FC07 for ; Mon, 15 May 2023 14:11:59 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 4D2D645FC07 Received: by f521.i.mail.ru with local (envelope-from ) id 1pyW7R-0003yr-B4; Mon, 15 May 2023 14:11:57 +0300 Received: by e.mail.ru with HTTP; Mon, 15 May 2023 14:11:57 +0300 To: =?UTF-8?B?U2VyZ2V5IEthcGx1bg==?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 16837223431084979031 X-SenderField-Remind: 0 Date: Mon, 15 May 2023 14:11:57 +0300 X-Priority: 3 (Normal) Message-ID: <1684149117.34095260@f521.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--91d737Ce76fB46F1994B8816729CfE2a1684149117" In-Reply-To: <44354d682d3cabf5a3ab1a268f900d7e6f981020.1683720396.git.skaplun@tarantool.org> References: <44354d682d3cabf5a3ab1a268f900d7e6f981020.1683720396.git.skaplun@tarantool.org> X-7564579A: 78E4E2B564C1792B X-77F55803: 119C1F4DF6A9251CE1E28CC68DAD74E71FDD86B3378BA93C18E9C6248E3D20F9ABF6EAE57C0FACE95939C4C0E83BD25811D141CA38DAFDBA6FE48D3330D4CB41AAF74BEEA48AC221 X-C1DE0DAB: 0D63561A33F958A562F0ACBAD5926F2A91F9449F057764E80389C099FEA826F4F87CCE6106E1FC07E67D4AC08A07B9B0DB8A315C1FF4794DBDAD6C7F3747799A X-C8649E89: 1C3962B70DF3F0AD5177F0B940C8B66ECE892A7B2722663E91682638B966EB3F662256BEEFA9527FF9C24CCD17EF66933FCC025F64E5CB94A43BC4E929DCCE321282C91FC6838517A7573C0CF1B2147637FD76D11AF80A0D244C02EC4AC5441E8F9AE3C31A7CC489EA455F16B58544A26220462FF7A38676 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDh7kcH3wu0+uEbfOeTU9qfpg== X-Mailru-MI: 800 X-Mailru-Sender: 11C2EC085EDE56FA38FD4C59F7EFE4071DF19BEE0384B29E793A981587EBCF6187346ECE9D7C33AB06CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: OK Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_luajit_1/2=5D_test=3A_add?= =?utf-8?q?_utility_for_parsing_=60jit=2Edump=60?= X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maxim Kokryashkin via Tarantool-patches Reply-To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--91d737Ce76fB46F1994B8816729CfE2a1684149117 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLCBTZXJnZXkhClRoYW5rcyBmb3IgdGhlIHBhdGNoIQpQbGVhc2UgY29uc2lkZXIgbXkgY29t bWVudHMgYmVsb3cuCsKgCj7CoAo+PlRoaXMgY29tbWl0IGFkZHMgc2ltcGxlIHBhcnNlciBmb3Ig dHJhY2VzIHRvIGJlIGFuYWx5emVkIGluIHRoZSB0ZXN0Lgo+VHlwbzogcy9hZGRzL2FkZHMgYS8K Pj5Gb3Igbm93IG5vdGhpbmcgdG9vIGZhbmN5IGF0IGFsbCAtLSBqdXN0IHN0YXJ0IGBqaXQuZHVt cGAgdG8gdGVtcG9yYXJ5Cj5UeXBvOiBzL3RlbXBvcmFyeS9hIHRlbXBvcmFyeS8KPj5maWxlIGFu ZCBwYXJzZSBhbmQgcmVtb3ZlIHRoaXMgZmlsZSB3aGVuIGR1bXAgaXMgc3RvcHBlZC4gVGhlIGFy cmF5Cj4+d2l0aCByZXN1bHRpbmcgdHJhY2VzIGlzIHJldHVybmVkLgo+Pgo+PkZvciBub3csIGp1 c3QgZmluZCBhIHNpbmdsZSBJUiBieSBwYXR0ZXJuIGFuZCByZXR1cm4gcmVmIG51bWJlciBhbmQg SVIsCj4+aWYgZXhpc3RzLiBNb3JlIGZ1bmN0aW9uYWxpdHkgbWF5IGJlIGFkZGVkIGlmIGl0IHdp bGwgYmUgbmVjZXNzYXJ5IGZvcgo+VHlwbzogcy9pZiBleGlzdHMvaWYgdGhleSBleGlzdC8KPlR5 cG86IHMvaXQgd2lsbCBiZS9pdCBpcy8KPj50ZXN0cy4KPj4tLS0KPj7CoHRlc3QvdGFyYW50b29s LXRlc3RzL3V0aWxzL2ppdF9wYXJzZS5sdWEgfCAxNTYgKysrKysrKysrKysrKysrKysrKysrKysK Pj7CoDEgZmlsZSBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKQo+PsKgY3JlYXRlIG1vZGUgMTAw NjQ0IHRlc3QvdGFyYW50b29sLXRlc3RzL3V0aWxzL2ppdF9wYXJzZS5sdWEKPj4KPj5kaWZmIC0t Z2l0IGEvdGVzdC90YXJhbnRvb2wtdGVzdHMvdXRpbHMvaml0X3BhcnNlLmx1YSBiL3Rlc3QvdGFy YW50b29sLXRlc3RzL3V0aWxzL2ppdF9wYXJzZS5sdWEKPj5uZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PmluZGV4IDAwMDAwMDAwLi5mZThlMGUwOAo+Pi0tLSAvZGV2L251bGwKPj4rKysgYi90ZXN0L3Rh cmFudG9vbC10ZXN0cy91dGlscy9qaXRfcGFyc2UubHVhCj4+QEAgLTAsMCArMSwxNTYgQEAKPj4r bG9jYWwgamR1bXAgPSByZXF1aXJlKCdqaXQuZHVtcCcpCj4+Kwo+Pitsb2NhbCBNID0ge30KPj4r Cj4+K2xvY2FsIHRyYWNlX210ID0ge30KPj4rdHJhY2VfbXQuX19pbmRleCA9IHRyYWNlX210Cj4+ Kwo+PistLSBGaW5kIGFuZCByZXR1cm4gdGhlIGZpcnN0IElSIHJlZiBhbmQgdmFsdWUgbWF0Y2hl ZCB0aGUgcGF0dGVybgo+PistLSBmb3IgdGhlIHRyYWNlLgo+Pit0cmFjZV9tdC5oYXNfaXIgPSBm dW5jdGlvbih0cmFjZSwgaXJfcGF0dGVybikKPj4rIGZvciBpID0gMSwgI3RyYWNlLmlyIGRvCj4+ KyBsb2NhbCBpciA9IHRyYWNlLmlyW2ldCj4+KyBpZiBpcjptYXRjaChpcl9wYXR0ZXJuKSB0aGVu Cj4+KyByZXR1cm4gaSwgaXIKPj4rIGVuZAo+PisgZW5kCj4+K2VuZAo+PisKPj4rbG9jYWwgZnVu Y3Rpb24gdHJhY2VfbmV3KG4pCj4+KyByZXR1cm4gc2V0bWV0YXRhYmxlKHsKPj4rIG51bWJlciA9 IG4sCj4+KyBwYXJlbnQgPSBuaWwsCj4+KyBwYXJlbnRfZXhpdG5vID0gbmlsLAo+Pisgc3RhcnRf bG9jID0gbmlsLAo+PisgYmMgPSB7fSwKPj4rIGlyID0ge30sCj4+KyBtY29kZSA9IHt9LAo+Pisg c25hcHMgPSB7fSwKPj4rIH0sIHRyYWNlX210KQo+PitlbmQKPj4rCj4+K2xvY2FsIGZ1bmN0aW9u IHBhcnNlX2JjKHRyYWNlLCBsaW5lKQo+PisgdHJhY2UuYmNbI3RyYWNlLmJjICsgMV0gPSBsaW5l Cj4+K2VuZAo+PisKPj4rbG9jYWwgZnVuY3Rpb24gcGFyc2Vfc25hcCh0cmFjZSwgbl9zbmFwLCBs aW5lKQo+PisgYXNzZXJ0KHRyYWNlLnNuYXBzW25fc25hcF0gPT0gbmlsKQo+PisgdHJhY2Vbbl9z bmFwXSA9IHtyZWYgPSAjdHJhY2UuaXIgKyAxLCBzbG90cyA9IGxpbmU6bWF0Y2goJyVbKC4qKSVd JCcpLH0KPj4rZW5kCj4+Kwo+Pitsb2NhbCBmdW5jdGlvbiBwYXJzZV9pcih0cmFjZSwgbGluZSkK Pj4rIGxvY2FsIG5fc25hcCA9IGxpbmU6bWF0Y2goJ1NOQVAlcysjKCVkKyknKQo+PisgaWYgbl9z bmFwIHRoZW4KPj4rIHBhcnNlX3NuYXAodHJhY2UsIG5fc25hcCwgbGluZSkKPj4rIHJldHVybgo+ PisgZW5kCj4+Kwo+PisgbG9jYWwgY3VycmVudF9pbnMsIGlyID0gbGluZTptYXRjaCgnXiglZCsp JXMrKC4qKSQnKQo+PisgY3VycmVudF9pbnMgPSB0b251bWJlcihjdXJyZW50X2lucykKPj4rIC0t IEluc2VydCBOT1AgaW5zdHJ1Y3Rpb24gaGlkZGVuIGluIElSIGR1bXAuCj4+KyBpZiBjdXJyZW50 X2lucyB+PSAjdHJhY2UuaXIgKyAxIHRoZW4KPj4rIHRyYWNlLmlyWyN0cmFjZS5pciArIDFdID0g J25pbCBOT1AnCj4+KyBlbmQKPj4rIGFzc2VydChjdXJyZW50X2lucyA9PSAjdHJhY2UuaXIgKyAx KQo+PisgdHJhY2UuaXJbY3VycmVudF9pbnNdID0gaXIKPj4rZW5kCj4+Kwo+Pitsb2NhbCBmdW5j dGlvbiBwYXJzZV9tY29kZSh0cmFjZSwgbGluZSkKPj4rIC0tIFNraXAgbG9vcCBsYWJlbC4KPj4r IGlmIGxpbmUgPT0gJy0+IExPT1A6JyB0aGVuCj4+KyByZXR1cm4KPj4rIGVuZAo+PisgbG9jYWwg YWRkciwgaW5zdHJ1Y3Rpb24gPSBsaW5lOm1hdGNoKCdeKCV3KyklcysoLiopJCcpCj4+KyB0cmFj ZS5tY29kZVsjdHJhY2UubWNvZGUgKyAxXSA9IHthZGRyID0gYWRkciwgaW5zdHJ1Y3Rpb24gPSBp bnN0cnVjdGlvbix9Cj4+K2VuZAo+PisKPj4rbG9jYWwgZnVuY3Rpb24gcGFyc2VfdHJhY2VfaGRy KGN0eCwgbGluZSwgdHJhY2VfbnVtLCBzdGF0dXMpCj4+KyBsb2NhbCB0cmFjZXMgPSBjdHgudHJh Y2VzCj4+KyBpZiBzdGF0dXMgPT0gJ3N0YXJ0JyB0aGVuCj4+KyBsb2NhbCB0cmFjZSA9IHRyYWNl X25ldyh0cmFjZV9udW0pCj4+KyB0cmFjZS5wYXJlbnQsIHRyYWNlLnBhcmVudF9leGl0bm8gPSBs aW5lOm1hdGNoKCdzdGFydCAoJWQrKS8oJWQrKScpCj4+KyAtLSBYWFg6IEFzc3VtZSwgdGhhdCBz b3VyY2UgbGluZSBjYW4ndCBjb250YWluIHNwYWNlcy4KPj4rIC0tIEZvciBleGFtcGxlLCBpdCdz IG5vdCAiKGNvbW1hbmQgbGluZSkiLgo+PisgdHJhY2Uuc3RhcnRfbG9jID0gbGluZTptYXRjaCgn IChbXiVzXSspJCcpCj4+KyB0cmFjZXNbdHJhY2VfbnVtXSA9IHRyYWNlCj4+KyBjdHgucGFyc2lu Z190cmFjZSA9IHRyYWNlX251bQo+PisgY3R4LnBhcnNpbmcgPSAnYmMnCj4+KyBlbHNlaWYgc3Rh dHVzID09ICdzdG9wJyB0aGVuCj4+KyBhc3NlcnQoY3R4LnBhcnNpbmdfdHJhY2UgPT0gdHJhY2Vf bnVtKQo+PisgY3R4LnBhcnNpbmdfdHJhY2UgPSBuaWwKPj4rIGN0eC5wYXJzaW5nID0gbmlsCj4+ KyBlbHNlaWYgc3RhdHVzID09ICdhYm9ydCcgdGhlbgo+PisgYXNzZXJ0KGN0eC5wYXJzaW5nX3Ry YWNlID09IHRyYWNlX251bSkKPj4rIGN0eC5wYXJzaW5nX3RyYWNlID0gbmlsCj4+KyBjdHgucGFy c2luZyA9IG5pbAo+PisgdHJhY2VzW3RyYWNlX251bV0gPSBuaWwKPlR3byBicmFuY2hlcyBiZWxv dyBhcmUgYWxtb3N0IGlkZW50aWNhbC4gSXMgaXQgcG9zc2libGUgdG8gYXZvaWQKPmR1cGxpY2F0 aW9uPwo+U2lkZSBub3RlOiBBbHNvLCBJIGxpa2UgaXQgbXVjaCBtb3JlIHdoZW4gc3dpdGNoLWxp a2UgY29uc3RydWN0aW9ucwo+aW4gTHVhIGFyZSBpbXBsZW1lbnRlZCB3aXRoIHRhYmxlcywgYmVj YXVzZSBpdCBzZWVtcyB0byBiZSBjbGVhbmVyLgo+RmVlbCBmcmVlIHRvIGlnbm9yZS4KPj4rIGVs c2VpZiBzdGF0dXMgPT0gJ0lSJyB0aGVuCj4+KyBjdHgucGFyc2luZyA9ICdJUicKPj4rIGVsc2Vp ZiBzdGF0dXMgPT0gJ21jb2RlJyB0aGVuCj4+KyBjdHgucGFyc2luZyA9ICdtY29kZScKPj4rIGVs c2UKPj4rIGVycm9yKCdVbmtub3duIHRyYWNlIHN0YXR1czogJyAuLiBzdGF0dXMpCj4+KyBlbmQK Pj4rZW5kCj4+Kwo+Pitsb2NhbCBmdW5jdGlvbiBwYXJzZV9saW5lKGN0eCwgbGluZSkKPj4rIGlm IGxpbmUgPT0gJycgdGhlbgo+PisgcmV0dXJuCj4+KyBlbmQKPj4rCj4+KyBpZiBsaW5lOm1hdGNo KCdUUkFDRSBmbHVzaCcpIHRoZW4KPj4rIGN0eC50cmFjZXMgPSB7fQo+PisgcmV0dXJuCj4+KyBl bmQKPj4rCj4+KyBsb2NhbCB0cmFjZV9udW0sIHN0YXR1cyA9IGxpbmU6bWF0Y2goJ1RSQUNFICgl ZCspICgldyspJykKPj4rIGlmIHRyYWNlX251bSB0aGVuCj4+KyBwYXJzZV90cmFjZV9oZHIoY3R4 LCBsaW5lLCB0b251bWJlcih0cmFjZV9udW0pLCBzdGF0dXMpCj4+KyByZXR1cm4KPj4rIGVuZAo+ PisKPj4rIGFzc2VydChjdHgucGFyc2luZ190cmFjZSkKPj4rCj4+KyBsb2NhbCB0cmFjZSA9IGN0 eC50cmFjZXNbY3R4LnBhcnNpbmdfdHJhY2VdCj4+KyBpZiBjdHgucGFyc2luZyA9PSAnYmMnIHRo ZW4KPj4rIHBhcnNlX2JjKHRyYWNlLCBsaW5lKQo+PisgZWxzZWlmIGN0eC5wYXJzaW5nID09ICdJ UicgdGhlbgo+PisgcGFyc2VfaXIodHJhY2UsIGxpbmUpCj4+KyBlbHNlaWYgY3R4LnBhcnNpbmcg PT0gJ21jb2RlJyB0aGVuCj4+KyBwYXJzZV9tY29kZSh0cmFjZSwgbGluZSkKPj4rIGVuZAo+Pitl bmQKPj4rCj4+K2xvY2FsIEpEVU1QX0ZJTEUKPj4rCj4+K2xvY2FsIGZ1bmN0aW9uIHBhcnNlX2pp dF9kdW1wKCkKPj4rIGxvY2FsIGN0eCA9IHt0cmFjZXMgPSB7fX0KPj4rIGZvciBsaW5lIGluIGlv LmxpbmVzKEpEVU1QX0ZJTEUpIGRvCj5JIHRoaW5rIHdlIHNob3VsZCBwZXJmb3JtIGVycm9yIGNo ZWNraW5nIGZvciB0aGF0wqBpbyBvcGVyYXRpb24uCj4+KyBwYXJzZV9saW5lKGN0eCwgbGluZSkK Pj4rIGVuZAo+PisgcmV0dXJuIGN0eC50cmFjZXMKPj4rZW5kCj4+Kwo+PitNLnN0YXJ0ID0gZnVu Y3Rpb24oZmxhZ3MpCj4+KyBhc3NlcnQoSkRVTVBfRklMRSA9PSBuaWwsICdqaXRfcGFyc2UgaXMg YWxyZWFkeSBydW5uaW5nJykKPj4rIC0tIEFsd2F5cyB1c2UgcGxhaW4gdGV4dCBvdXRwdXQuCj4+ KyBmbGFncyA9IGZsYWdzIC4uICdUJwo+Tml0OiBXaGF0IGlmIGVpdGhlciBgQWAgb3LCoGBIYCBp cyBwcmVzZW50IGluIHRoZSBmbGFncz8gSSBiZWxpZXZlLCBubwo+b25lIGlzIGdvaW5nIHRvIGRv IHN1Y2ggdGhpbmdzLCBidXQgYW55d2F5IGl0IGlzIHdvcnRoIGNvbnNpZGVyaW5nCj5hcyBhIHRo aW5nIHRvIGNoZWNrLiBGZWVsIGZyZWUgdG8gaWdub3JlLgo+PisgSkRVTVBfRklMRSA9IG9zLnRt cG5hbWUoKQo+PisgamR1bXAuc3RhcnQoZmxhZ3MsIEpEVU1QX0ZJTEUpCj4+K2VuZAo+PisKPj4r TS5maW5pc2ggPSBmdW5jdGlvbigpCj4+KyBhc3NlcnQoSkRVTVBfRklMRSB+PSBuaWwsICdqaXRf cGFyc2UgaXMgbm90IHJ1bm5pbmcnKQo+PisgamR1bXAub2ZmKCkKPj4rIGxvY2FsIHRyYWNlcyA9 IHBhcnNlX2ppdF9kdW1wKCkKPj4rIG9zLnJlbW92ZShKRFVNUF9GSUxFKQo+PisgSkRVTVBfRklM RSA9IG5pbAo+PisgcmV0dXJuIHRyYWNlcwo+PitlbmQKPj4rCj4+Ky0tIFR1cm4gb2ZmIGNvbXBp bGF0aW9uIGZvciB0aGVzZSBtb2R1bGVzIHRvIGF2b2lkIHNpZGUgZWZmZWN0cy4KPj4raml0Lm9m Zih0cnVlLCB0cnVlKQo+PitqaXQub2ZmKGpkdW1wLm9uLCB0cnVlKQo+PitqaXQub2ZmKGpkdW1w Lm9mZiwgdHJ1ZSkKPj4rCj4+K3JldHVybiBNCj4+LS0KPj4yLjM0LjEKPi0tCj5CZXN0IHJlZ2Fy ZHMsCj5NYXhpbSBLb2tyeWFzaGtpbgo+wqA= ----ALT--91d737Ce76fB46F1994B8816729CfE2a1684149117 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGksIFNlcmdleSE8L2Rpdj48ZGl2PlRoYW5rcyBmb3IgdGhlIHBh dGNoITwvZGl2PjxkaXY+UGxlYXNlIGNvbnNpZGVyIG15IGNvbW1lbnRzIGJlbG93LjwvZGl2Pjxk aXY+Jm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAj MDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj4mbmJzcDs8Ymxv Y2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4 OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBq cy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2IGlkPSJzdHlsZV8xNjgzNzIyMzQzMTA4NDk3OTAzMV9C T0RZIj5UaGlzIGNvbW1pdCBhZGRzIHNpbXBsZSBwYXJzZXIgZm9yIHRyYWNlcyB0byBiZSBhbmFs eXplZCBpbiB0aGUgdGVzdC48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRp dj5UeXBvOiBzL2FkZHMvYWRkcyBhLzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxk aXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+Rm9yIG5v dyBub3RoaW5nIHRvbyBmYW5jeSBhdCBhbGwgLS0ganVzdCBzdGFydCBgaml0LmR1bXBgIHRvIHRl bXBvcmFyeTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PlR5cG86IHMv dGVtcG9yYXJ5L2EgdGVtcG9yYXJ5LzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxk aXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+ZmlsZSBh bmQgcGFyc2UgYW5kIHJlbW92ZSB0aGlzIGZpbGUgd2hlbiBkdW1wIGlzIHN0b3BwZWQuIFRoZSBh cnJheTxicj53aXRoIHJlc3VsdGluZyB0cmFjZXMgaXMgcmV0dXJuZWQuPGJyPjxicj5Gb3Igbm93 LCBqdXN0IGZpbmQgYSBzaW5nbGUgSVIgYnkgcGF0dGVybiBhbmQgcmV0dXJuIHJlZiBudW1iZXIg YW5kIElSLDxicj5pZiBleGlzdHMuIE1vcmUgZnVuY3Rpb25hbGl0eSBtYXkgYmUgYWRkZWQgaWYg aXQgd2lsbCBiZSBuZWNlc3NhcnkgZm9yPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1 b3RlPjxkaXY+VHlwbzogcy9pZiBleGlzdHMvaWYgdGhleSBleGlzdC88L2Rpdj48ZGl2PlR5cG86 IHMvaXQgd2lsbCBiZS9pdCBpcy88L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6 MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2 PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2PnRlc3RzLjxi cj4tLS08YnI+Jm5ic3A7dGVzdC90YXJhbnRvb2wtdGVzdHMvdXRpbHMvaml0X3BhcnNlLmx1YSB8 IDE1NiArKysrKysrKysrKysrKysrKysrKysrKzxicj4mbmJzcDsxIGZpbGUgY2hhbmdlZCwgMTU2 IGluc2VydGlvbnMoKyk8YnI+Jm5ic3A7Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvdGFyYW50b29s LXRlc3RzL3V0aWxzL2ppdF9wYXJzZS5sdWE8YnI+PGJyPmRpZmYgLS1naXQgYS90ZXN0L3RhcmFu dG9vbC10ZXN0cy91dGlscy9qaXRfcGFyc2UubHVhIGIvdGVzdC90YXJhbnRvb2wtdGVzdHMvdXRp bHMvaml0X3BhcnNlLmx1YTxicj5uZXcgZmlsZSBtb2RlIDEwMDY0NDxicj5pbmRleCAwMDAwMDAw MC4uZmU4ZTBlMDg8YnI+LS0tIC9kZXYvbnVsbDxicj4rKysgYi90ZXN0L3RhcmFudG9vbC10ZXN0 cy91dGlscy9qaXRfcGFyc2UubHVhPGJyPkBAIC0wLDAgKzEsMTU2IEBAPGJyPitsb2NhbCBqZHVt cCA9IHJlcXVpcmUoJ2ppdC5kdW1wJyk8YnI+Kzxicj4rbG9jYWwgTSA9IHt9PGJyPis8YnI+K2xv Y2FsIHRyYWNlX210ID0ge308YnI+K3RyYWNlX210Ll9faW5kZXggPSB0cmFjZV9tdDxicj4rPGJy PistLSBGaW5kIGFuZCByZXR1cm4gdGhlIGZpcnN0IElSIHJlZiBhbmQgdmFsdWUgbWF0Y2hlZCB0 aGUgcGF0dGVybjxicj4rLS0gZm9yIHRoZSB0cmFjZS48YnI+K3RyYWNlX210Lmhhc19pciA9IGZ1 bmN0aW9uKHRyYWNlLCBpcl9wYXR0ZXJuKTxicj4rIGZvciBpID0gMSwgI3RyYWNlLmlyIGRvPGJy PisgbG9jYWwgaXIgPSB0cmFjZS5pcltpXTxicj4rIGlmIGlyOm1hdGNoKGlyX3BhdHRlcm4pIHRo ZW48YnI+KyByZXR1cm4gaSwgaXI8YnI+KyBlbmQ8YnI+KyBlbmQ8YnI+K2VuZDxicj4rPGJyPits b2NhbCBmdW5jdGlvbiB0cmFjZV9uZXcobik8YnI+KyByZXR1cm4gc2V0bWV0YXRhYmxlKHs8YnI+ KyBudW1iZXIgPSBuLDxicj4rIHBhcmVudCA9IG5pbCw8YnI+KyBwYXJlbnRfZXhpdG5vID0gbmls LDxicj4rIHN0YXJ0X2xvYyA9IG5pbCw8YnI+KyBiYyA9IHt9LDxicj4rIGlyID0ge30sPGJyPisg bWNvZGUgPSB7fSw8YnI+KyBzbmFwcyA9IHt9LDxicj4rIH0sIHRyYWNlX210KTxicj4rZW5kPGJy Pis8YnI+K2xvY2FsIGZ1bmN0aW9uIHBhcnNlX2JjKHRyYWNlLCBsaW5lKTxicj4rIHRyYWNlLmJj WyN0cmFjZS5iYyArIDFdID0gbGluZTxicj4rZW5kPGJyPis8YnI+K2xvY2FsIGZ1bmN0aW9uIHBh cnNlX3NuYXAodHJhY2UsIG5fc25hcCwgbGluZSk8YnI+KyBhc3NlcnQodHJhY2Uuc25hcHNbbl9z bmFwXSA9PSBuaWwpPGJyPisgdHJhY2Vbbl9zbmFwXSA9IHtyZWYgPSAjdHJhY2UuaXIgKyAxLCBz bG90cyA9IGxpbmU6bWF0Y2goJyVbKC4qKSVdJCcpLH08YnI+K2VuZDxicj4rPGJyPitsb2NhbCBm dW5jdGlvbiBwYXJzZV9pcih0cmFjZSwgbGluZSk8YnI+KyBsb2NhbCBuX3NuYXAgPSBsaW5lOm1h dGNoKCdTTkFQJXMrIyglZCspJyk8YnI+KyBpZiBuX3NuYXAgdGhlbjxicj4rIHBhcnNlX3NuYXAo dHJhY2UsIG5fc25hcCwgbGluZSk8YnI+KyByZXR1cm48YnI+KyBlbmQ8YnI+Kzxicj4rIGxvY2Fs IGN1cnJlbnRfaW5zLCBpciA9IGxpbmU6bWF0Y2goJ14oJWQrKSVzKyguKikkJyk8YnI+KyBjdXJy ZW50X2lucyA9IHRvbnVtYmVyKGN1cnJlbnRfaW5zKTxicj4rIC0tIEluc2VydCBOT1AgaW5zdHJ1 Y3Rpb24gaGlkZGVuIGluIElSIGR1bXAuPGJyPisgaWYgY3VycmVudF9pbnMgfj0gI3RyYWNlLmly ICsgMSB0aGVuPGJyPisgdHJhY2UuaXJbI3RyYWNlLmlyICsgMV0gPSAnbmlsIE5PUCc8YnI+KyBl bmQ8YnI+KyBhc3NlcnQoY3VycmVudF9pbnMgPT0gI3RyYWNlLmlyICsgMSk8YnI+KyB0cmFjZS5p cltjdXJyZW50X2luc10gPSBpcjxicj4rZW5kPGJyPis8YnI+K2xvY2FsIGZ1bmN0aW9uIHBhcnNl X21jb2RlKHRyYWNlLCBsaW5lKTxicj4rIC0tIFNraXAgbG9vcCBsYWJlbC48YnI+KyBpZiBsaW5l ID09ICctJmd0OyBMT09QOicgdGhlbjxicj4rIHJldHVybjxicj4rIGVuZDxicj4rIGxvY2FsIGFk ZHIsIGluc3RydWN0aW9uID0gbGluZTptYXRjaCgnXigldyspJXMrKC4qKSQnKTxicj4rIHRyYWNl Lm1jb2RlWyN0cmFjZS5tY29kZSArIDFdID0ge2FkZHIgPSBhZGRyLCBpbnN0cnVjdGlvbiA9IGlu c3RydWN0aW9uLH08YnI+K2VuZDxicj4rPGJyPitsb2NhbCBmdW5jdGlvbiBwYXJzZV90cmFjZV9o ZHIoY3R4LCBsaW5lLCB0cmFjZV9udW0sIHN0YXR1cyk8YnI+KyBsb2NhbCB0cmFjZXMgPSBjdHgu dHJhY2VzPGJyPisgaWYgc3RhdHVzID09ICdzdGFydCcgdGhlbjxicj4rIGxvY2FsIHRyYWNlID0g dHJhY2VfbmV3KHRyYWNlX251bSk8YnI+KyB0cmFjZS5wYXJlbnQsIHRyYWNlLnBhcmVudF9leGl0 bm8gPSBsaW5lOm1hdGNoKCdzdGFydCAoJWQrKS8oJWQrKScpPGJyPisgLS0gWFhYOiBBc3N1bWUs IHRoYXQgc291cmNlIGxpbmUgY2FuJ3QgY29udGFpbiBzcGFjZXMuPGJyPisgLS0gRm9yIGV4YW1w bGUsIGl0J3Mgbm90ICIoY29tbWFuZCBsaW5lKSIuPGJyPisgdHJhY2Uuc3RhcnRfbG9jID0gbGlu ZTptYXRjaCgnIChbXiVzXSspJCcpPGJyPisgdHJhY2VzW3RyYWNlX251bV0gPSB0cmFjZTxicj4r IGN0eC5wYXJzaW5nX3RyYWNlID0gdHJhY2VfbnVtPGJyPisgY3R4LnBhcnNpbmcgPSAnYmMnPGJy PisgZWxzZWlmIHN0YXR1cyA9PSAnc3RvcCcgdGhlbjxicj4rIGFzc2VydChjdHgucGFyc2luZ190 cmFjZSA9PSB0cmFjZV9udW0pPGJyPisgY3R4LnBhcnNpbmdfdHJhY2UgPSBuaWw8YnI+KyBjdHgu cGFyc2luZyA9IG5pbDxicj4rIGVsc2VpZiBzdGF0dXMgPT0gJ2Fib3J0JyB0aGVuPGJyPisgYXNz ZXJ0KGN0eC5wYXJzaW5nX3RyYWNlID09IHRyYWNlX251bSk8YnI+KyBjdHgucGFyc2luZ190cmFj ZSA9IG5pbDxicj4rIGN0eC5wYXJzaW5nID0gbmlsPGJyPisgdHJhY2VzW3RyYWNlX251bV0gPSBu aWw8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5Ud28gYnJhbmNoZXMg YmVsb3cgYXJlIGFsbW9zdCBpZGVudGljYWwuIElzIGl0IHBvc3NpYmxlIHRvIGF2b2lkPC9kaXY+ PGRpdj5kdXBsaWNhdGlvbj88L2Rpdj48ZGl2PlNpZGUgbm90ZTogQWxzbywgSSBsaWtlIGl0IG11 Y2ggbW9yZSB3aGVuIHN3aXRjaC1saWtlIGNvbnN0cnVjdGlvbnM8L2Rpdj48ZGl2PmluIEx1YSBh cmUgaW1wbGVtZW50ZWQgd2l0aCB0YWJsZXMsIGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgY2xlYW5l ci48L2Rpdj48ZGl2PkZlZWwgZnJlZSB0byBpZ25vcmUuPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9 ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAg MCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+ PGRpdj4rIGVsc2VpZiBzdGF0dXMgPT0gJ0lSJyB0aGVuPGJyPisgY3R4LnBhcnNpbmcgPSAnSVIn PGJyPisgZWxzZWlmIHN0YXR1cyA9PSAnbWNvZGUnIHRoZW48YnI+KyBjdHgucGFyc2luZyA9ICdt Y29kZSc8YnI+KyBlbHNlPGJyPisgZXJyb3IoJ1Vua25vd24gdHJhY2Ugc3RhdHVzOiAnIC4uIHN0 YXR1cyk8YnI+KyBlbmQ8YnI+K2VuZDxicj4rPGJyPitsb2NhbCBmdW5jdGlvbiBwYXJzZV9saW5l KGN0eCwgbGluZSk8YnI+KyBpZiBsaW5lID09ICcnIHRoZW48YnI+KyByZXR1cm48YnI+KyBlbmQ8 YnI+Kzxicj4rIGlmIGxpbmU6bWF0Y2goJ1RSQUNFIGZsdXNoJykgdGhlbjxicj4rIGN0eC50cmFj ZXMgPSB7fTxicj4rIHJldHVybjxicj4rIGVuZDxicj4rPGJyPisgbG9jYWwgdHJhY2VfbnVtLCBz dGF0dXMgPSBsaW5lOm1hdGNoKCdUUkFDRSAoJWQrKSAoJXcrKScpPGJyPisgaWYgdHJhY2VfbnVt IHRoZW48YnI+KyBwYXJzZV90cmFjZV9oZHIoY3R4LCBsaW5lLCB0b251bWJlcih0cmFjZV9udW0p LCBzdGF0dXMpPGJyPisgcmV0dXJuPGJyPisgZW5kPGJyPis8YnI+KyBhc3NlcnQoY3R4LnBhcnNp bmdfdHJhY2UpPGJyPis8YnI+KyBsb2NhbCB0cmFjZSA9IGN0eC50cmFjZXNbY3R4LnBhcnNpbmdf dHJhY2VdPGJyPisgaWYgY3R4LnBhcnNpbmcgPT0gJ2JjJyB0aGVuPGJyPisgcGFyc2VfYmModHJh Y2UsIGxpbmUpPGJyPisgZWxzZWlmIGN0eC5wYXJzaW5nID09ICdJUicgdGhlbjxicj4rIHBhcnNl X2lyKHRyYWNlLCBsaW5lKTxicj4rIGVsc2VpZiBjdHgucGFyc2luZyA9PSAnbWNvZGUnIHRoZW48 YnI+KyBwYXJzZV9tY29kZSh0cmFjZSwgbGluZSk8YnI+KyBlbmQ8YnI+K2VuZDxicj4rPGJyPits b2NhbCBKRFVNUF9GSUxFPGJyPis8YnI+K2xvY2FsIGZ1bmN0aW9uIHBhcnNlX2ppdF9kdW1wKCk8 YnI+KyBsb2NhbCBjdHggPSB7dHJhY2VzID0ge319PGJyPisgZm9yIGxpbmUgaW4gaW8ubGluZXMo SkRVTVBfRklMRSkgZG88L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5J IHRoaW5rIHdlIHNob3VsZCBwZXJmb3JtIGVycm9yIGNoZWNraW5nIGZvciB0aGF0Jm5ic3A7aW8g b3BlcmF0aW9uLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQg IzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFz cz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+KyBwYXJzZV9saW5lKGN0eCwg bGluZSk8YnI+KyBlbmQ8YnI+KyByZXR1cm4gY3R4LnRyYWNlczxicj4rZW5kPGJyPis8YnI+K00u c3RhcnQgPSBmdW5jdGlvbihmbGFncyk8YnI+KyBhc3NlcnQoSkRVTVBfRklMRSA9PSBuaWwsICdq aXRfcGFyc2UgaXMgYWxyZWFkeSBydW5uaW5nJyk8YnI+KyAtLSBBbHdheXMgdXNlIHBsYWluIHRl eHQgb3V0cHV0Ljxicj4rIGZsYWdzID0gZmxhZ3MgLi4gJ1QnPC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9ibG9ja3F1b3RlPjxkaXY+Tml0OiBXaGF0IGlmIGVpdGhlciBgQWAgb3ImbmJzcDtgSGAg aXMgcHJlc2VudCBpbiB0aGUgZmxhZ3M/IEkgYmVsaWV2ZSwgbm88L2Rpdj48ZGl2Pm9uZSBpcyBn b2luZyB0byBkbyBzdWNoIHRoaW5ncywgYnV0IGFueXdheSBpdCBpcyB3b3J0aCBjb25zaWRlcmlu ZzwvZGl2PjxkaXY+YXMgYSB0aGluZyB0byBjaGVjay4gRmVlbCBmcmVlIHRvIGlnbm9yZS48L2Rp dj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdp bjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBq cy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2PisgSkRVTVBfRklMRSA9IG9zLnRtcG5hbWUoKTxicj4r IGpkdW1wLnN0YXJ0KGZsYWdzLCBKRFVNUF9GSUxFKTxicj4rZW5kPGJyPis8YnI+K00uZmluaXNo ID0gZnVuY3Rpb24oKTxicj4rIGFzc2VydChKRFVNUF9GSUxFIH49IG5pbCwgJ2ppdF9wYXJzZSBp cyBub3QgcnVubmluZycpPGJyPisgamR1bXAub2ZmKCk8YnI+KyBsb2NhbCB0cmFjZXMgPSBwYXJz ZV9qaXRfZHVtcCgpPGJyPisgb3MucmVtb3ZlKEpEVU1QX0ZJTEUpPGJyPisgSkRVTVBfRklMRSA9 IG5pbDxicj4rIHJldHVybiB0cmFjZXM8YnI+K2VuZDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv YmxvY2txdW90ZT48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3 QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9Impz LWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pis8YnI+Ky0tIFR1cm4gb2ZmIGNvbXBp bGF0aW9uIGZvciB0aGVzZSBtb2R1bGVzIHRvIGF2b2lkIHNpZGUgZWZmZWN0cy48YnI+K2ppdC5v ZmYodHJ1ZSwgdHJ1ZSk8YnI+K2ppdC5vZmYoamR1bXAub24sIHRydWUpPGJyPitqaXQub2ZmKGpk dW1wLm9mZiwgdHJ1ZSk8YnI+Kzxicj4rcmV0dXJuIE08YnI+LS08YnI+Mi4zNC4xPC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGRpdj4tLTxicj5CZXN0IHJlZ2FyZHMs PC9kaXY+PGRpdj5NYXhpbSBLb2tyeWFzaGtpbjwvZGl2PjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+ PC9kaXY+PC9ibG9ja3F1b3RlPjwvQk9EWT48L0hUTUw+Cg== ----ALT--91d737Ce76fB46F1994B8816729CfE2a1684149117--