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 2E5A86ECD0; Sun, 28 Jun 2026 04:03:53 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 2E5A86ECD0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1782608633; bh=6/amwmAseFDnXpGfCQlIE8kqAxQrU68u1xWCrel0WAs=; 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=NLXk+VUlpcxAOm6hy2KIR/V00q8LiXRwbVAnTmhI4MpTO3aocHb8RNLFoxekbxJ3Y dTG39tQA+xv8j1Npfb45IRY1/Mnpa+lViFUbip+WQ3MG1XcKKrnBkJ5OsZlib5cRYP x2Vo3QKEvUJ6tWYovqtKX53dPlRY2QrT9sFhhm+I= Received: from send41.i.mail.ru (send41.i.mail.ru [89.221.237.136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 25EC26ECD0 for ; Sun, 28 Jun 2026 04:03:51 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 25EC26ECD0 Received: by exim-f-5489dbc764-9fx6b with local (envelope-from ) id 1wddvm-0000000074r-1flY; Sun, 28 Jun 2026 04:03:50 +0300 Received: by e.mail.ru with HTTP; Sun, 28 Jun 2026 04:03:30 +0300 To: =?UTF-8?B?U2VyZ2V5IEthcGx1bg==?= MIME-Version: 1.0 X-Priority: 3 (Normal) X-Mailer: Mail.Ru Mailer 1.0 X-Senderfield-Remsg: 17824193842013071217 X-Senderfield-Remind: 0 Date: Sun, 28 Jun 2026 04:03:30 +0300 Message-Id: <1782608610.240669306@f725.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--53fE442184Ec82eF9B00Df35F9d8DaDf1782608610" In-Reply-To: <20260625202903.3157425-2-skaplun@tarantool.org> References: <20260625202903.3157425-1-skaplun@tarantool.org> <20260625202903.3157425-2-skaplun@tarantool.org> X-Mailru-Src: fe X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 119C1F4DF6A9251C6EDDC236F443E1972EC02ED91F38343D4C80A2AB747E0E60AA58F7AA52DA7B4B65E2058D9C1295F2167EFE77B6BE4F58367C8DDA1ABA7B45FE12BE926AA4F071DDDE7B70B5F5C79F X-7FA49CB5: 70AAF3C13DB70168C09775C1D3CA48CFE29514AE8B38AD74B2086D80B0504778CF19DD082D7633A0587C8798DFFB2F5764CD17681C2FEB7A176DF2183F8FC7C04BF364620B4639BAB5C8C57E37DE458B66F8DB2973BE5EBB8638F802B75D45FFA18204E546F3947CFD04FE2AD1523FDBAC83A81C8FD4AD23E2E44EFD321A7F275571747095F342E85644E22E05AA81AEE6DE07D961CB05C29ECD01F8117BC8BEBFD28B28ED457873F004C90652538430E3301CADCF4A3327A9D420A4CFB5DD3E103793B4E5BB54525002B1117B3ED69690128FFA3BB1DA9750D7F87C0C4C56F2D2E47CDBA5A96583C09775C1D3CA48CF27ED053E960B195E117882F4460429724CE54428C33FAD30A8DF7F3B2552694AC26CFBAC0749D213D2E47CDBA5A9658378DA827A17800CE767883B903EA3BAEA9FA2833FD35BB23DF004C906525384302BEBFE083D3B9BA71A620F70A64A45A98AA50765F79006372E808ACE2090B5E1725E5C173C3A84C3C5EA940A35A165FF2DBA43225CD8A89F00AD5422731CA18CC6EABA9B74D0DA47B5C8C57E37DE458BEDA766A37F9254B7 X-C1DE0DAB: 0D63561A33F958A5103793B4E5BB54525002B1117B3ED69690128FFA3BB1DA97CCE9A60C8CB01D7C823CB91A9FED034534781492E4B8EEADC30D23F084062BE2BDAD6C7F3747799A X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191543584D22441D852AB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659E74257209517EC4E8EDCFE0BC68B99FF44F3D9F0D9B2CCF7C04EBDDCC677370741AE39F707D196D5B8341EE9D5BE9A0A67918D6D699111C432F37EF7D06AA1E7887A8543B91F3F8D6536EB022892E5344C41F94D744909CEEF9E35A692215F79327F81E6EEE0AEB67A0F9F91F029B6AF33F2C28C22F508233FCF178C6DD14203 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+Od3uM/CLT152eL7j4ZacoUSF0MSa0v5VBmEtSutdC50BIKdL3VIRlkt/X9Gr7QWYXucPUinHATAeHXorM+S1NQOd7Dfgh+EySTqYMd0u1rLZKKL+jzMOvc4= X-Mailru-MI: 20000000010000000000400800 X-Mailru-Sender: 015BA6FC0EFA223A63A6570A1A031285585DA042567430E8B951B70A5BD4BD8ED314A1F93329132B84FAB3A790EBFBA7F9D778B853F92934B6CD0B84B37C39E28916C52554E253A2908EF71C4107D552197AF8DA6C69D34BA7BD66BEAC8CCB0C4198E0F3ECE9B5443453F38A29522196 X-Mras: Ok X-Spam: undefined Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_luajit_1/3=5D_dbg=3A_intr?= =?utf-8?q?oduce_lj-ir=2C_lj-jslots=2C_lj-trace_dumpers?= 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: Evgeniy Temirgaleev via Tarantool-patches Reply-To: =?UTF-8?B?RXZnZW5peSBUZW1pcmdhbGVldg==?= Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--53fE442184Ec82eF9B00Df35F9d8DaDf1782608610 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGksIFNlcmdleSEKClRoYW5rcyBmb3IgdGhlIHBhdGNoLiBQbGVhc2UsIHNlZSBteSBjb21tZW50 cy4KCi0tCkJlc3QgcmVnYXJkcywKRXZnZW5peSBUZW1pcmdhbGVldgoKPiAKPiDQntGCINC60L7Q s9C+OiBTZXJnZXkgS2FwbHVuIDxza2FwbHVuQHRhcmFudG9vbC5vcmc+Cj4g0JrQvtC80YM6IFNl cmdleSBCcm9ubmlrb3YgPHNlcmdleWJAdGFyYW50b29sLm9yZz4sIEV2Z2VuaXkgVGVtaXJnYWxl ZXYgPGUudGVtaXJnYWxlZXZAdGFyYW50b29sLm9yZwo+ID4KPiDQmtC+0L/QuNGPOiB0YXJhbnRv b2wtcGF0Y2hlc0BkZXYudGFyYW50b29sLm9yZywgU2VyZ2V5IEthcGx1biA8c2thcGx1bkB0YXJh bnRvb2wub3JnCj4gPgo+INCU0LDRgtCwOiDQp9C10YLQstC10YDQsywgMjUg0LjRjtC90Y8gMjAy NiwgMjM6MjkgKzAzOjAwCj4gVGhpcyBwYXRjaCBhZGRzIGR1bXBlcnMgZm9yIGEgc2luZ2xlIElS IGluc3RydWN0aW9uIChgbGotaXJgKSwgYXMgd2VsbAo+IGFzIGZvciBhbGwgYnl0ZWNvZGVzIGlu c2lkZSBvbmUgdHJhY2UgKGBsai10cmFjZWApLiBJdHMgZHVtcCBpcyBxdWl0ZQo+IHNpbWlsYXIg dG8gdGhlIC1qZHVtcCBmbGFnIGJ1dCBhbHNvIHJlcG9ydHMgdHlwZXMgb2YgcmVnaXN0ZXIgb3Bl cmFuZHMKPiAoYHJlZmAsIGBsaXRgLCBgY3N0YCkgYW5kIG9wZXJhdGlvbiBtb2RlIChgTmAsIGBB YCwgYFdgLCBldGMuKS4KPiBUaGUgYGxqLXRyYWNlYCBjb21tYW5kIGFjY2VwdHMgb3B0aW9uYWwg L3JzIGZsYWdzIHRvIGR1bXAgcmVnaXN0ZXJzCj4gYXNzb2NpYXRlZCB3aXRoIElSIGFuZCBzbmFw c2hvdHMgZm9yIHRoZSB0cmFjZSBjb3JyZXNwb25kaW5nbHkuCj4gVGhlIGBsai1pcmAgY29tbWFu ZCBjYW4gYmUgdXNlZCBmb3IgZHVtcGluZyBJUiBjb25zdGFudHMgYXMgd2VsbC4KPiBUaGUgYGxq LWpzbG90c2AgY29tbWFuZCBkdW1wcyB0aGUgY29udGVudCBvZiBgSi0+c2xvdGAuIEl0IGlzIHVz ZWZ1bCB0bwo+IHNpbXBsaWZ5IGRlYnVnZ2luZyBvZiBgcmVjX2NoZWNrX3Nsb3RzKClgIGFzc2Vy dGlvbiBmYWlsdXJlcy4KPiAKPiBGb3IgTExEQiB2YWx1ZSwgdGhlIGBfX2dldGl0ZW1fX2AgbWV0 YW1ldGhvZCBub3cgYWNjZXB0cyBib29sIGtleXMuCj4gQWxzbywgYF9faW5kZXhfX2AgaXMgc2V0 IHRvIGFsbG93IGxsZGIudmFsdWUgdG8gYmUgdXNlZCBhcyBhbiBpbmRleAo+IHdpdGhvdXQgZXhw bGljaXQgY29udmVyc2lvbiB0byBpbnQuIE9sZCBHREIgdmVyc2lvbnMgKGJlbG93IDcuMTIpIGFy ZQo+IG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSBvZiB0aGUgZ2RiLlZhbHVlIGxhY2tzIHRoZSBgX19p bmRleF9fYCBtZXRhbWV0aG9kCj4gYW5kIGNhbid0IGJlIG1vbmtleS1wYXRjaGVkLiBUaGUgc3Vw cG9ydCBmb3IgdGhlc2UgdmVyc2lvbnMgbWF5IGJlIGFkZGVkCj4gYnkgZGVtYW5kLgo+IAo+IFBh cnQgb2YgdGFyYW50b29sL3RhcmFudG9vbCM0ODA4Cj4gLS0tCj4gc3JjL2x1YWppdF9kYmcucHkg fCAxMjE2ICsrKysrKysrKysrKysrKystCj4gLi4uL2RlYnVnLWV4dGVuc2lvbi10ZXN0cy5weSB8 IDM2NSArKysrKwo+IDIgZmlsZXMgY2hhbmdlZCwgMTU3MCBpbnNlcnRpb25zKCspLCAxMSBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvc3JjL2x1YWppdF9kYmcucHkgYi9zcmMvbHVhaml0 X2RiZy5weQo+IGluZGV4IDJlZGIxOTlhLi5mZDZjYThhNSAxMDA2NDQKPiAtLS0gYS9zcmMvbHVh aml0X2RiZy5weQo+ICsrKyBiL3NyYy9sdWFqaXRfZGJnLnB5Cj4gQEAgLTU4LDYgKzU4LDI2IEBA IGNsYXNzIERlYnVnZ2VyKG9iamVjdCk6Cj4gc2VsZi5MTERCID0gVHJ1ZQo+IHJldHVybiBzdXBl cihEZWJ1Z2dlciwgc2VsZikuX19uZXdfXyhfTExEQkRlYnVnZ2VyKQo+IAo+ICsgZGVmIHBhcnNl X2ZsYWdzKHNlbGYsIHJhd19mbGFncywgcGVybWl0dGVkX2ZsYWdzKToKPiArIGZsYWdzID0ge30K PiArIGZvciBmbGFnIGluIHJhd19mbGFnczoKPiArIGlmIGZsYWcgbm90IGluIHBlcm1pdHRlZF9m bGFnczoKPiArIHJhaXNlIHNlbGYuZXJyb3IoJ1VucmVjb25nbml6ZWQgb3B0aW9uOiAie30iJy5m b3JtYXQoZmxhZykpCj4gKyBmbGFnc1tmbGFnXSA9IFRydWUKPiArIHJldHVybiBmbGFncwo+ICsK PiArIGRlZiBleHRyYWN0X2ZsYWdzKHNlbGYsIGFyZywgcGVybWl0dGVkX2ZsYWdzKToKPiArIGlm IG5vdCBhcmc6Cj4gKyByZXR1cm4gTm9uZSwgTm9uZQo+ICsgZmxhZ3MgPSB7fQo+ICsgaWYgYXJn LnN0YXJ0c3dpdGgoJy8nKToKPiArIG1hdGNoID0gcmUubWF0Y2gocicvKFxTKilccysoLiopJCcs IGFyZykKPiArIGlmIG5vdCBtYXRjaDoKPiArIHJldHVybiBhcmcsIGZsYWdzCj4gKyByYXdfZmxh Z3MsIGFyZyA9IG1hdGNoLmdyb3VwKDEsIDIpCj4gKyBmbGFncyA9IHNlbGYucGFyc2VfZmxhZ3Mo cmF3X2ZsYWdzLCBwZXJtaXR0ZWRfZmxhZ3MpCj4gKyByZXR1cm4gYXJnLCBmbGFncwo+ICsKPiBk ZWYgY29uZmlndXJlKHNlbGYpOgo+IGdsb2JhbCBQQURESU5HLCBMSl9USVNOVU0KPiBpZiBub3Qg c2VsZi5jaGVja19saWJsdWFqaXQoKToKPiBAQCAtNzAsNiArOTAsMTcgQEAgY2xhc3MgRGVidWdn ZXIob2JqZWN0KToKPiBzZWxmLndyaXRlKCdsdWFqaXRfZGJnLnB5IGZhaWxlZCB0byBsb2FkOiAn Cj4gJ25vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kIGZvciBsaWJsdWFqaXRcbicpCj4gcmV0dXJu IEZhbHNlCj4gKwo+ICsgIyBTZXR1cCBhcmNoLgo+ICsgdHJ5Ogo+ICsgc2VsZi5hcmNoID0gc3Ry KHNlbGYuZXZhbCgnTEpfQVJDSF9OQU1FJykpLnNwbGl0KCciJylbMV0KPiArIGV4Y2VwdCBFeGNl cHRpb246Cj4gKyB0cnk6Cj4gKyBzZWxmLmFyY2ggPSBzZWxmLmRldGVjdF9hcmNoKCkKPiArIGV4 Y2VwdCBFeGNlcHRpb246Cj4gKyAjIFNldHVwIG9uIGRlbWFuZCBpZiBuZWNlc3NhcnkuCj4gKyBw YXNzCj4gKwo+IHJldHVybiBUcnVlCj4gCj4gZGVmIGluaXRpYWxpemVfZXh0ZW5zaW9uKHNlbGYs IGNvbW1hbmRzKToKPiBAQCAtOTksMjEgKzEzMCw0MiBAQCBjbGFzcyBEZWJ1Z2dlcihvYmplY3Qp Ogo+ICcnJ1JldHVybiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nIGJ5IHRoZSBnaXZlbiBwb2lu dGVyLicnJwo+IHBhc3MKPiAKPiArIEBhYmMuYWJzdHJhY3RtZXRob2QKPiArIGRlZiBhZGRyZXNz KHNlbGYsIG9iaik6Cj4gKyAnJydSZXR1cm4gdGhlIGFkZHJlc3MgaW4gbWVtb3J5IG9mIHRoZSBn aXZlbiBvYmplY3QuJycnCj4gKyBwYXNzCj4gKwo+IEBhYmMuYWJzdHJhY3RtZXRob2QKPiBkZWYg bG9va3VwX2dsb2JhbChzZWxmLCBzeW1ib2wpOgo+ICcnJ0xvb2sgdXAgdGhlIGdsb2JhbCBDIHN5 bWJvbCBieSB0aGUgZ2l2ZW4gbmFtZS4nJycKPiBwYXNzCj4gCj4gKyBAYWJjLmFic3RyYWN0bWV0 aG9kCj4gKyBkZWYgbWVtYmVyX2J5X29mZnNldChzZWxmLCB0eXBlbmFtZSwgb2Zmc2V0LCBwcmV2 X25hbWU9Tm9uZSk6Cj4gKyAnJydMb29rIHVwIHRoZSBnbG9iYWwgQyBzeW1ib2wgYnkgdGhlIGdp dmVuIG5hbWUuJycnCj4gKyBwYXNzCj4gKwo+IEBhYmMuYWJzdHJhY3RtZXRob2QKPiBkZWYgZXZh bChzZWxmLCBjb21tYW5kKToKPiAnJydQYXJzZSBhbmQgZXZhbHVhdGUgdGhlIGdpdmVuIGRlYnVn Z2VyIGNvbW1hbmQuJycnCj4gcGFzcwo+IAo+ICsgQGFiYy5hYnN0cmFjdG1ldGhvZAo+ICsgZGVm IGRldGVjdF9hcmNoKHNlbGYpOgo+ICsgJycnRGV0ZWN0IHRoZSBDUFUgYXJjaGl0ZWN0dXJlIGFu ZCBjYW5vbmljYWxpemUgaXQgdG8gdGhlIEx1YUpJVAo+ICsgbm90YXRpb24uJycnCj4gKyBwYXNz Cj4gKwo+IEBhYmMuYWJzdHJhY3RtZXRob2QKPiBkZWYgd3JpdGUoc2VsZiwgbXNnKToKPiAnJydQ cmludCB0aGUgbWVzc2FnZS4nJycKPiBwYXNzCj4gCj4gKyBAYWJjLmFic3RyYWN0bWV0aG9kCj4g KyBkZWYgZXJyb3Ioc2VsZiwgbXNnKToKPiArICcnJ0NyZWF0ZSB0aGUgZXJyb3Igb2JqZWN0IHdp dGggbWVzc2FnZS4nJycKPiArIHBhc3MKPiArCj4gQGFiYy5hYnN0cmFjdG1ldGhvZAo+IGRlZiBj aGVja19saWJsdWFqaXQoc2VsZik6Cj4gJycnQ2hlY2sgdGhhdCBsaWJsdWFqaXQgaXMgbG9hZGVk Lgo+IEBAIC0xNzIsMTAgKzIyNCw1MCBAQCBjbGFzcyBfR0RCRGVidWdnZXIoRGVidWdnZXIpOgo+ ICMgQSBzdHJpbmcgaXMgcHJpbnRlZCB3aXRoIGEgcG9pbnRlciB0byBpdC4gSnVzdCBzdHJpcCBp dC4KPiByZXR1cm4gcmUuc3ViKHInXjB4W2EtZjAtOV0rXHMrKD89IiknLCAnJywgc3RyKHN0cnB0 cikpCj4gCj4gKyBkZWYgYWRkcmVzcyhzZWxmLCBvYmopOgo+ICsgcmV0dXJuIG9iai5hZGRyZXNz Cj4gKwo+IGRlZiBsb29rdXBfZ2xvYmFsKHNlbGYsIHN5bWJvbCk6Cj4gdmFyaWFibGUsIF8gPSBn ZGIubG9va3VwX3N5bWJvbChzeW1ib2wpCj4gcmV0dXJuIHZhcmlhYmxlLnZhbHVlKCkgaWYgdmFy aWFibGUgZWxzZSBOb25lCj4gCj4gKyBkZWYgbWVtYmVyX2J5X29mZnNldChzZWxmLCB0cCwgb2Zm c2V0LCBwcmV2X25hbWU9Tm9uZSk6Cj4gKyBpZiBpc2luc3RhbmNlKHRwLCBzdHIpOgo+ICsgdHAg PSBzZWxmLl9kYmd0eXBlKHRwKQo+ICsgYXNzZXJ0IG9mZnNldCA8IHRwLnNpemVvZiwgJ29mZnNl dCBpcyBiaWdnZXIgdGhhbiBvYmplY3Qgc2l6ZScKPiArIGlmIHRwLmNvZGUgPT0gZ2RiLlRZUEVf Q09ERV9UWVBFREVGOgo+ICsgdHAgPSB0cC5zdHJpcF90eXBlZGVmcygpCj4gKyBpZiB0cC5jb2Rl ID09IGdkYi5UWVBFX0NPREVfU1RSVUNUOgo+ICsgZmllbGRzID0gdHAuZmllbGRzKCkKPiArIGZv ciBuX2ZpZWxkIGluIHJhbmdlKGxlbihmaWVsZHMpKToKPiArIGlzbGFzdCA9IG5fZmllbGQgPT0g KGxlbihmaWVsZHMpIC0gMSkKPiArIGZpZWxkID0gZmllbGRzW25fZmllbGRdCj4gKyBzdGFydF9m aWVsZCA9IGZpZWxkLmJpdHBvcyAvIDgKPiArIGVuZF9maWVsZCA9IGZpZWxkc1tuX2ZpZWxkICsg MV0uYml0cG9zIC8gOCBpZiBub3QgaXNsYXN0IFwKPiArIGVsc2UgdHAuc2l6ZW9mCj4gKyBpZiBz dGFydF9maWVsZCA8PSBvZmZzZXQgYW5kIG9mZnNldCA8IGVuZF9maWVsZDoKPiArIG5leHRfbmFt ZSA9IHNlbGYubWVtYmVyX2J5X29mZnNldCgKPiArIGZpZWxkLnR5cGUsCj4gKyBvZmZzZXQgLSBz dGFydF9maWVsZCwKPiArIHByZXZfbmFtZT1maWVsZC5uYW1lCj4gKyApCj4gKyByZXR1cm4gJy57 ZmllbGR9e3N1ZmZpeH0nLmZvcm1hdCgKPiArIGZpZWxkPWZpZWxkLm5hbWUsCj4gKyBzdWZmaXg9 bmV4dF9uYW1lIGlmIG5leHRfbmFtZSBlbHNlICcnCj4gKyApCj4gKyBlbGlmIHRwLmNvZGUgPT0g Z2RiLlRZUEVfQ09ERV9BUlJBWToKPiArICMgR2V0IGFycmF5IGZpZWxkIHR5cGUuCj4gKyB0YXJn ZXQgPSB0cC50YXJnZXQoKQo+ICsgdHNpemUgPSB0YXJnZXQuc2l6ZW9mCj4gKyBpZHggPSBpbnQo b2Zmc2V0IC8vIHRzaXplKQo+ICsgbmV4dF9uYW1lID0gc2VsZi5tZW1iZXJfYnlfb2Zmc2V0KHRh cmdldCwgb2Zmc2V0IC0gaWR4ICogdHNpemUpCj4gKyBpZHhuYW1lID0gaWR4X25hbWUocHJldl9u YW1lKQo+ICsgaWYgaWR4bmFtZSBhbmQgaWR4IGluIGlkeG5hbWU6Cj4gKyBpZHggPSBpZHhuYW1l W2lkeF0KPiArIHJldHVybiAnW3t9XXt9Jy5mb3JtYXQoaWR4LCBuZXh0X25hbWUgaWYgbmV4dF9u YW1lIGVsc2UgJycpCj4gKyBlbHNlOgo+ICsgcmV0dXJuIE5vbmUKPiArCj4gZGVmIGV2YWwoc2Vs ZiwgY29tbWFuZCk6Cj4gaWYgbm90IGNvbW1hbmQ6Cj4gcmV0dXJuIE5vbmUKPiBAQCAtMTg1LDkg KzI3NywyMyBAQCBjbGFzcyBfR0RCRGVidWdnZXIoRGVidWdnZXIpOgo+IHJhaXNlIGdkYi5HZGJF cnJvcigndGFibGUgYXJndW1lbnQgZW1wdHknKQo+IHJldHVybiByZXQKPiAKPiArIGRlZiBkZXRl Y3RfYXJjaChzZWxmKToKPiArIGlmIGhhc2F0dHIoc2VsZiwgJ2FyY2gnKToKPiArIHJldHVybiBz ZWxmLmFyY2gKPiArIHRhcmdldCA9IHN0cihnZGIuZXhlY3V0ZSgnaW5mbyB0YXJnZXQnLCBGYWxz ZSwgVHJ1ZSkpCj4gKyBpZiByZS5tYXRjaCgnLip4ODYtNjQuKicsIHRhcmdldCwgZmxhZ3M9cmUu RE9UQUxMKToKPiArIHJldHVybiAneDY0Jwo+ICsgZWxpZiByZS5tYXRjaCgnLiphYXJjaDY0Lion LCB0YXJnZXQsIGZsYWdzPXJlLkRPVEFMTCk6Cj4gKyByZXR1cm4gJ2FybTY0Jwo+ICsgZWxzZToK PiArIHJldHVybiAnJwo+ICsKPiBkZWYgd3JpdGUoc2VsZiwgbXNnKToKPiBnZGIud3JpdGUobXNn KQo+IAo+ICsgZGVmIGVycm9yKHNlbGYsIGVycm1zZyk6Cj4gKyByZXR1cm4gZ2RiLkdkYkVycm9y KGVycm1zZykKPiArCj4gZGVmIGNoZWNrX2xpYmx1YWppdChzZWxmKToKPiAjIFhYWCBGcmFnaWxl OiBUaG91Z2ggY29ubmVjdGluZyB0aGUgY2FsbGJhY2sgbG9va3MgYmFkLAo+ICMgaXQgcmVzcGVj dHMgYm90aCBQeXRob24gMiBhbmQgUHl0aG9uIDMgKHNlZSAjNDgyOCkuCj4gQEAgLTMyMiw4ICs0 MjgsMjYgQEAgY2xhc3MgX0xMREJEZWJ1Z2dlcihEZWJ1Z2dlcik6Cj4gZGVmIGxsZGJfX2dldGl0 ZW1fXyhsbGRidmFsLCBrZXkpOgo+IGlmIHR5cGUoa2V5KSBpcyBsbGRiLnZhbHVlOgo+IGtleSA9 IGludChrZXkpCj4gKyBpZiB0eXBlKGtleSkgaXMgYm9vbDoKPiArIGtleSA9IGludChrZXkpCj4g aWYgdHlwZShrZXkpIGlzIGludDoKPiAjIEFsbG93IGFycmF5IGFjY2Vzcy4KPiArIGx0cCA9IGxs ZGJ2YWwuc2J2YWx1ZS5HZXRUeXBlKCkKPiArICMgWFhYOiBMTERCIGluIHZlcnNpb25zIDE3IC0g MTkgY2FuJ3QgdXNlIGFuIGFycmF5Cj4gKyAjIG9iamVjdCBhcyB0aGUgaW5pdGlhbGl6ZXIgZm9y IGBsbGRiLnZhbHVlYCBzaW5jZQo+ICsgIyBgR2V0VmFsdWUoKWAgZm9yIGl0IHJldHVybnMgYE5v bmVgIGxlYWRpbmcgdG8KPiArICMgdGhlIGludmFsaWQgcmVzdWx0LiBTZWUKPiArICMgaHR0cHM6 Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L3B1bGwvOTAxNDQuCj4gKyBpZiAoc2VsZi52 ZXJzaW9uIDwgMTcgb3Igc2VsZi52ZXJzaW9uID4gMTkpIG9yIFwKPiArIGx0cC5HZXRUeXBlQ2xh c3MoKSAhPSBsbGRiLmVUeXBlQ2xhc3NBcnJheToKPiArIHBhc3MKPiArIGVsc2U6Cj4gKyBwdHJf dHAgPSBsdHAuR2V0QXJyYXlFbGVtZW50VHlwZSgpLkdldFBvaW50ZXJUeXBlKCkKPiArIGxsZGJ2 YWwgPSBzZWxmLl9sbGRiX3ZhbHVlX2Zyb21fcmF3KAo+ICsgbGxkYnZhbC5zYnZhbHVlLkdldExv YWRBZGRyZXNzKCksCj4gKyBwdHJfdHAuR2V0Qnl0ZVNpemUoKSwKPiArIHB0cl90cAo+ICsgKQo+ IGlmIGtleSA+PSAwIGFuZCBub3QgbGxkYnZhbC5zYnZhbHVlLlR5cGVJc1BvaW50ZXJUeXBlKCk6 Cj4gcmV0dXJuIGxsZGIudmFsdWUoCj4gbGxkYnZhbC5zYnZhbHVlLkdldFZhbHVlRm9yRXhwcmVz c2lvblBhdGgoJ1slaV0nICUga2V5KQo+IEBAIC0zNDksNiArNDczLDkgQEAgY2xhc3MgX0xMREJE ZWJ1Z2dlcihEZWJ1Z2dlcik6Cj4gZGVmIGxsZGJfX2d0X18obGxkYnZhbCwgb3RoZXIpOgo+IHJl dHVybiBpbnQobGxkYnZhbCkgPiBpbnQob3RoZXIpCj4gCj4gKyBkZWYgbGxkYl9faW5kZXhfXyhs bGRidmFsKToKPiArIHJldHVybiBpbnQobGxkYnZhbCkKPiArCj4gZGVmIGxsZGJfX2xlX18obGxk YnZhbCwgb3RoZXIpOgo+IHJldHVybiBpbnQobGxkYnZhbCkgPD0gaW50KG90aGVyKQo+IAo+IEBA IC00MDYsNiArNTMzLDcgQEAgY2xhc3MgX0xMREJEZWJ1Z2dlcihEZWJ1Z2dlcik6Cj4gbGxkYi52 YWx1ZS5fX2dlX18gPSBsbGRiX19nZV9fCj4gbGxkYi52YWx1ZS5fX2dldGl0ZW1fXyA9IGxsZGJf X2dldGl0ZW1fXwo+IGxsZGIudmFsdWUuX19ndF9fID0gbGxkYl9fZ3RfXwo+ICsgbGxkYi52YWx1 ZS5fX2luZGV4X18gPSBsbGRiX19pbmRleF9fCj4gbGxkYi52YWx1ZS5fX2xlX18gPSBsbGRiX19s ZV9fCj4gbGxkYi52YWx1ZS5fX2x0X18gPSBsbGRiX19sdF9fCj4gbGxkYi52YWx1ZS5fX3N0cl9f ID0gbGxkYl9fc3RyX18KPiBAQCAtNDc0LDYgKzYwMiw5IEBAIGNsYXNzIF9MTERCRGVidWdnZXIo RGVidWdnZXIpOgo+IGRlZiBjc3RyKHNlbGYsIHN0cnB0cik6Cj4gcmV0dXJuIHN0cnB0ci5zYnZh bHVlLnN1bW1hcnkKPiAKPiArIGRlZiBhZGRyZXNzKHNlbGYsIG9iaik6Cj4gKyByZXR1cm4gbGxk Yi52YWx1ZShvYmouc2J2YWx1ZS5hZGRyZXNzX29mKQo+ICsKPiBkZWYgbG9va3VwX2dsb2JhbChz ZWxmLCBzeW1ib2wpOgo+IHNidmFsdWUgPSBzZWxmLnRhcmdldC5GaW5kRmlyc3RHbG9iYWxWYXJp YWJsZShzeW1ib2wpCj4gdHAgPSBzYnZhbHVlLkdldFR5cGUoKQo+IEBAIC00OTIsNiArNjIzLDQ2 IEBAIGNsYXNzIF9MTERCRGVidWdnZXIoRGVidWdnZXIpOgo+IHB0cl90cAo+ICkKPiAKPiArIGRl ZiBtZW1iZXJfYnlfb2Zmc2V0KHNlbGYsIHRwLCBvZmZzZXQsIHByZXZfbmFtZT1Ob25lKToKPiAr IGlmIGlzaW5zdGFuY2UodHAsIHN0cik6Cj4gKyB0cCA9IHNlbGYuX2RiZ3R5cGUodHApCj4gKyBh c3NlcnQgb2Zmc2V0IDwgdHAuR2V0Qnl0ZVNpemUoKSwgJ29mZnNldCBpcyBiaWdnZXIgdGhhbiBv YmplY3Qgc2l6ZScKPiArIHRwID0gdHAuR2V0Q2Fub25pY2FsVHlwZSgpCj4gKyBpZiB0cC5HZXRU eXBlQ2xhc3MoKSA9PSBsbGRiLmVUeXBlQ2xhc3NTdHJ1Y3Q6Cj4gKyBsZW5fZmllbGRzID0gdHAu R2V0TnVtYmVyT2ZGaWVsZHMoKQo+ICsgZm9yIG5fZmllbGQgaW4gcmFuZ2UobGVuX2ZpZWxkcyk6 Cj4gKyBpc2xhc3QgPSBuX2ZpZWxkID09IChsZW5fZmllbGRzIC0gMSkKPiArIGZpZWxkID0gdHAu R2V0RmllbGRBdEluZGV4KG5fZmllbGQpCj4gKyBzdGFydF9maWVsZCA9IGZpZWxkLkdldE9mZnNl dEluQnl0ZXMoKQo+ICsgaWYgbm90IGlzbGFzdDoKPiArIGVuZF9maWVsZCA9IHRwLkdldEZpZWxk QXRJbmRleCgKPiArIG5fZmllbGQgKyAxCj4gKyApLkdldE9mZnNldEluQnl0ZXMoKQo+ICsgZWxz ZToKPiArIGVuZF9maWVsZCA9IHRwLkdldEJ5dGVTaXplKCkKPiArIGlmIHN0YXJ0X2ZpZWxkIDw9 IG9mZnNldCBhbmQgb2Zmc2V0IDwgZW5kX2ZpZWxkOgo+ICsgbmV4dF9uYW1lID0gc2VsZi5tZW1i ZXJfYnlfb2Zmc2V0KAo+ICsgZmllbGQuR2V0VHlwZSgpLAo+ICsgb2Zmc2V0IC0gc3RhcnRfZmll bGQsCj4gKyBwcmV2X25hbWU9ZmllbGQuR2V0TmFtZSgpCj4gKyApCj4gKyByZXR1cm4gJy57Zmll bGR9e3N1ZmZpeH0nLmZvcm1hdCgKPiArIGZpZWxkPWZpZWxkLkdldE5hbWUoKSwKPiArIHN1ZmZp eD1uZXh0X25hbWUgaWYgbmV4dF9uYW1lIGVsc2UgJycKPiArICkKPiArIGlmIHRwLkdldFR5cGVD bGFzcygpID09IGxsZGIuZVR5cGVDbGFzc0FycmF5Ogo+IAoKVHlwbz86IGVsaWYKCj4gCj4gKyAj IEdldCBhcnJheSBmaWVsZCB0eXBlLgo+ICsgdGFyZ2V0ID0gdHAuR2V0QXJyYXlFbGVtZW50VHlw ZSgpCj4gKyB0c2l6ZSA9IHRhcmdldC5HZXRCeXRlU2l6ZSgpCj4gKyBpZHggPSBpbnQob2Zmc2V0 IC8vIHRzaXplKQo+ICsgbmV4dF9uYW1lID0gc2VsZi5tZW1iZXJfYnlfb2Zmc2V0KHRhcmdldCwg b2Zmc2V0IC0gaWR4ICogdHNpemUpCj4gKyBpZHhuYW1lID0gaWR4X25hbWUocHJldl9uYW1lKQo+ ICsgaWYgaWR4bmFtZSBhbmQgaWR4IGluIGlkeG5hbWU6Cj4gKyBpZHggPSBpZHhuYW1lW2lkeF0K PiArIHJldHVybiAnW3t9XXt9Jy5mb3JtYXQoaWR4LCBuZXh0X25hbWUgaWYgbmV4dF9uYW1lIGVs c2UgJycpCj4gKyBlbHNlOgo+ICsgcmV0dXJuIE5vbmUKPiArCj4gZGVmIGV2YWwoc2VsZiwgY29t bWFuZCk6Cj4gaWYgbm90IGNvbW1hbmQ6Cj4gcmV0dXJuIE5vbmUKPiBAQCAtNTAyLDkgKzY3Mywy MyBAQCBjbGFzcyBfTExEQkRlYnVnZ2VyKERlYnVnZ2VyKToKPiByZXQgPSBmcmFtZS5FdmFsdWF0 ZUV4cHJlc3Npb24oY29tbWFuZCkKPiByZXR1cm4gcmV0Cj4gCj4gKyBkZWYgZGV0ZWN0X2FyY2go c2VsZik6Cj4gKyBpZiBoYXNhdHRyKHNlbGYsICdhcmNoJyk6Cj4gKyByZXR1cm4gc2VsZi5hcmNo Cj4gKyB0YXJnZXQgPSBzZWxmLnRhcmdldC5HZXRUcmlwbGUoKS5zcGxpdCgnLScpWzBdCj4gKyBp ZiB0YXJnZXQgPT0gJ3g4Nl82NCc6Cj4gKyByZXR1cm4gJ3g2NCcKPiArIGVsaWYgdGFyZ2V0ID09 ICdhcm02NCcgb3IgdGFyZ2V0ID09ICdhYXJjaDY0JzoKPiArIHJldHVybiAnYXJtNjQnCj4gKyBl bHNlOgo+ICsgcmV0dXJuICcnCj4gKwo+IGRlZiB3cml0ZShzZWxmLCBtc2cpOgo+IHN5cy5zdGRv dXQud3JpdGUobXNnKQo+IAo+ICsgZGVmIGVycm9yKHNlbGYsIGVycm1zZyk6Cj4gKyByZXR1cm4g RXhjZXB0aW9uKGVycm1zZykKPiArCj4gZGVmIGNoZWNrX2xpYmx1YWppdChzZWxmKToKPiAjIFRP RE86IEltcGxlbWVudCBwb3N0cG9uZSBsb2FkaW5nIGZvciBMTERCIHRvby4KPiByZXR1cm4gVHJ1 ZQo+IEBAIC05OTcsNiArMTE4Miw4NiBAQCBkZWYgSihnKToKPiByZXR1cm4gZGJnLmNhc3QoJ2pp dF9TdGF0ZSAqJywgZGJnLmNhc3QoJ2NoYXIgKicsIGcpIC0gZ19vZmZzZXQgKwo+IEpfb2Zmc2V0 KQo+IAo+IAo+ICsjIE1hdGNoZWQgYE1NREVGKF8pYC4KPiArTU1fTkFNRVMgPSBbCj4gKyAnaW5k ZXgnLAo+ICsgJ25ld2luZGV4JywKPiArICdnYycsCj4gKyAnbW9kZScsCj4gKyAnZXEnLAo+ICsg J2xlbicsCj4gKyAnbHQnLAo+ICsgJ2xlJywKPiArICdjb25jYXQnLAo+ICsgJ2NhbGwnLAo+ICsg J2FkZCcsCj4gKyAnc3ViJywKPiArICdtdWwnLAo+ICsgJ2RpdicsCj4gKyAnbW9kJywKPiArICdw b3cnLAo+ICsgJ3VubScsCj4gKyAnbWV0YXRhYmxlJywKPiArICd0b3N0cmluZycsCj4gKyAjIFRP RE86IGRlcGVuZHMgb24gTEpfSEFTRkZJLCBzZWUgYE1NREVGX0ZGSShfKWAuCj4gKyAnbmV3JywK PiArICMgVE9ETzogZGVwZW5kcyBvbiBMSl81MiB8fCBMSl9IQVNGRkksIHNlZSBgTU1ERUZfUEFJ UlMoXylgLgo+ICsgJ3BhaXJzJywKPiArICdpcGFpcnMnLAo+ICtdCj4gKwo+ICsKPiArR0NST09U X01NTkFNRSA9IDAKPiArR0NST09UX0JBU0VNVCA9IEdDUk9PVF9NTU5BTUUgKyBsZW4oTU1fTkFN RVMpCj4gK0dDUk9PVF9JT19JTlBVVCA9IEdDUk9PVF9CQVNFTVQgKyBpMm5vdHUzMihMSl9UWydO VU1YJ10pICsgMQo+ICtHQ1JPT1RfSU9fT1VUUFVUID0gR0NST09UX0lPX0lOUFVUICsgMQo+ICsK PiArCj4gKyMgR2V0IHRoZSBuYW1lIG9mIHRoZSBpbmRleCBpbiB0aGUgcHJlZGVmaW5lZCBhcnJh eXMuCj4gK2RlZiBpZHhfbmFtZShmaWVsZF9uYW1lKToKPiArICMgRG9uJ3QgdXNlICoqeyB0byBi ZSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIuCj4gKyBnY3Jvb3QgPSB7fQo+ICsgZ2Nyb290LnVw ZGF0ZSh7Cj4gKyBpOiAnR0NST09UX01NTkFNRV8nICsgTU1fTkFNRVNbaV0gZm9yIGkgaW4gcmFu Z2UobGVuKE1NX05BTUVTKSkKPiArIH0pCj4gKyBnY3Jvb3QudXBkYXRlKHsKPiArIGkybm90dTMy KExKX1Rba10pICsgR0NST09UX0JBU0VNVDogJ0dDUk9PVF9CQVNFTVRfJyArIGsKPiArIGZvciBr IGluIExKX1Qua2V5cygpCj4gKyB9KQo+ICsgZ2Nyb290LnVwZGF0ZSh7Cj4gKyBHQ1JPT1RfSU9f SU5QVVQ6ICdHQ1JPT1RfSU9fSU5QVVQnLAo+ICsgR0NST09UX0lPX09VVFBVVDogJ0dDUk9PVF9J T19PVVRQVVQnLAo+ICsgfSkKPiArIHJldHVybiB7Cj4gKyAjIE1heSBiZSBvbmUgb2YgMiBzbG90 cyBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBhZGRyZXNzLgo+ICsgJ2tzaW1kJzogewo+ICsgMCAq IDIgKyAwOiAnTEpfS1NJTURfQUJTJywKPiArIDAgKiAyICsgMTogJ0xKX0tTSU1EX0FCUycsCj4g KyAxICogMiArIDA6ICdMSl9LU0lNRF9ORUcnLAo+ICsgMSAqIDIgKyAxOiAnTEpfS1NJTURfTkVH JywKPiArIH0sCj4gKyAnZ2Nyb290JzogZ2Nyb290LAo+ICsgfS5nZXQoZmllbGRfbmFtZSwgTm9u ZSkKPiArCj4gKwo+ICtnZ2ZuYW1lX2NhY2hlID0ge30KPiArCj4gKwo+ICsjIEdldCBHRyBmaWVs ZCBuYW1lIGJ5IGdpdmVuIG9mZnNldC4gVXNlIGluIEpJVCBkdW1wLgo+ICtkZWYgZ2dmbmFtZV9i eV9vZmZzZXQob2Zmc2V0KToKPiArIGlmIG9mZnNldCBpbiBnZ2ZuYW1lX2NhY2hlOgo+ICsgcmV0 dXJuIGdnZm5hbWVfY2FjaGVbb2Zmc2V0XQo+ICsKPiArIGZpZWxkX3BhdGggPSBkYmcubWVtYmVy X2J5X29mZnNldCgnR0dfU3RhdGUnLCBvZmZzZXQpCj4gKyBpZiBub3QgZmllbGRfcGF0aDoKPiAr IHJldHVybiBOb25lCj4gKwo+ICsgIyBSZW1vdmUgZmlyc3QgJy4nLgo+ICsgZ2dmbmFtZSA9ICdv ZmZzZXRvZihHRywge30pJy5mb3JtYXQoZmllbGRfcGF0aFsxOl0pCj4gKyBnZ2ZuYW1lX2NhY2hl W29mZnNldF0gPSBnZ2ZuYW1lCj4gKyByZXR1cm4gZ2dmbmFtZQo+ICsKPiArCj4gZGVmIHZtX3N0 YXRlKGcpOgo+IHJldHVybiB7Cj4gaTJub3R1MzIoMCk6ICdJTlRFUlAnLAo+IEBAIC0xMDg3LDYg KzEzNTIsNTU1IEBAIGRlZiBsaWdodHVkVih0dik6Cj4gcmV0dXJuIGdjdmFsKHR2WydnY3InXSkK PiAKPiAKPiArIyBKSVQgZW5naW5lLgo+ICsKPiArCj4gK0lSUyA9IFsKPiArICMgR3VhcmRlZCBh c3NlcnRpb25zLgo+ICsgJ0xUJywKPiArICdHRScsCj4gKyAnTEUnLAo+ICsgJ0dUJywKPiArCj4g KyAnVUxUJywKPiArICdVR0UnLAo+ICsgJ1VMRScsCj4gKyAnVUdUJywKPiArCj4gKyAnRVEnLAo+ ICsgJ05FJywKPiArCj4gKyAnQUJDJywKPiArICdSRVRGJywKPiArCj4gKyAjIE1pc2NlbGxhbmVv dXMgb3BzLgo+ICsgJ05PUCcsCj4gKyAnQkFTRScsCj4gKyAnUFZBTCcsCj4gKyAnR0NTVEVQJywK PiArICdISU9QJywKPiArICdMT09QJywKPiArICdVU0UnLAo+ICsgJ1BISScsCj4gKyAnUkVOQU1F JywKPiArICdQUk9GJywKPiArCj4gKyAjIENvbnN0YW50cy4KPiArICdLUFJJJywKPiArICdLSU5U JywKPiArICdLR0MnLAo+ICsgJ0tQVFInLAo+ICsgJ0tLUFRSJywKPiArICdLTlVMTCcsCj4gKyAn S05VTScsCj4gKyAnS0lOVDY0JywKPiArICdLU0xPVCcsCj4gKwo+ICsgIyBCaXQgb3BzLgo+ICsg J0JOT1QnLAo+ICsgJ0JTV0FQJywKPiArICdCQU5EJywKPiArICdCT1InLAo+ICsgJ0JYT1InLAo+ ICsgJ0JTSEwnLAo+ICsgJ0JTSFInLAo+ICsgJ0JTQVInLAo+ICsgJ0JST0wnLAo+ICsgJ0JST1In LAo+ICsKPiArICMgQXJpdGhtZXRpYyBvcHMuIE9SREVSIEFSSVRICj4gKyAnQUREJywKPiArICdT VUInLAo+ICsgJ01VTCcsCj4gKyAnRElWJywKPiArICdNT0QnLAo+ICsgJ1BPVycsCj4gKyAnTkVH JywKPiArCj4gKyAnQUJTJywKPiArICdMREVYUCcsCj4gKyAnTUlOJywKPiArICdNQVgnLAo+ICsg J0ZQTUFUSCcsCj4gKwo+ICsgIyBPdmVyZmxvdy1jaGVja2luZyBhcml0aG1ldGljIG9wcy4KPiAr ICdBRERPVicsCj4gKyAnU1VCT1YnLAo+ICsgJ01VTE9WJywKPiArCj4gKyAjIE1lbW9yeSBvcHMu IEEgPSBhcnJheSwgSCA9IGhhc2gsIFUgPSB1cHZhbHVlLCBGID0gZmllbGQsCj4gKyAjIFMgPSBz dGFjay4KPiArCj4gKyAjIE1lbW9yeSByZWZlcmVuY2VzLgo+ICsgJ0FSRUYnLAo+ICsgJ0hSRUZL JywKPiArICdIUkVGJywKPiArICdORVdSRUYnLAo+ICsgJ1VSRUZPJywKPiArICdVUkVGQycsCj4g KyAnRlJFRicsCj4gKyAnU1RSUkVGJywKPiArICdMUkVGJywKPiArCj4gKyAjIExvYWRzIGFuZCBT dG9yZXMuIFRoZXNlIG11c3QgYmUgaW4gdGhlIHNhbWUgb3JkZXIuCj4gKyAnQUxPQUQnLAo+ICsg J0hMT0FEJywKPiArICdVTE9BRCcsCj4gKyAnRkxPQUQnLAo+ICsgJ1hMT0FEJywKPiArICdTTE9B RCcsCj4gKyAnVkxPQUQnLAo+ICsKPiArICdBU1RPUkUnLAo+ICsgJ0hTVE9SRScsCj4gKyAnVVNU T1JFJywKPiArICdGU1RPUkUnLAo+ICsgJ1hTVE9SRScsCj4gKwo+ICsgIyBBbGxvY2F0aW9ucy4K PiArICdTTkVXJywKPiArICdYU05FVycsCj4gKyAnVE5FVycsCj4gKyAnVERVUCcsCj4gKyAnQ05F VycsCj4gKyAnQ05FV0knLAo+ICsKPiArICMgQnVmZmVyIG9wZXJhdGlvbnMuCj4gKyAnQlVGSERS JywKPiArICdCVUZQVVQnLAo+ICsgJ0JVRlNUUicsCj4gKwo+ICsgIyBCYXJyaWVycy4KPiArICdU QkFSJywKPiArICdPQkFSJywKPiArICdYQkFSJywKPiArCj4gKyAjIFR5cGUgY29udmVyc2lvbnMu Cj4gKyAnQ09OVicsCj4gKyAnVE9CSVQnLAo+ICsgJ1RPU1RSJywKPiArICdTVFJUTycsCj4gKwo+ ICsgIyBDYWxscy4KPiArICdDQUxMTicsCj4gKyAnQ0FMTEEnLAo+ICsgJ0NBTExMJywKPiArICdD QUxMUycsCj4gKyAnQ0FMTFhTJywKPiArICdDQVJHJywKPiArXQo+ICsKPiArCj4gKyMgTW9kZSBi aXRzOiBDb21tdXRhdGl2ZSwge05vcm1hbC9SZWYsIEFsbG9jLCBMb2FkLCBTdG9yZX0sCj4gKyMg Tm9uLXdlYWsgZ3VhcmQuICovCj4gCgpUeXBvOiBDIGNvbW1lbnQgZW5kICovCgo+IAo+ICtJUk1f QyA9IDB4MTAKPiArSVJNX0EgPSAweDIwCj4gK0lSTV9MID0gMHg0MAo+ICtJUk1fUyA9IDB4NjAK PiArSVJNX1cgPSAweDgwCj4gKwo+ICsKPiArIyBJUiBvcGVyYW5kIG1vZGUgKDIgYml0KS4KPiAr SVJNID0gWwo+ICsgJ3JlZicsCj4gKyAnbGl0JywKPiArICdjc3QnLAo+ICsgJycsICMgbm9uZQo+ ICtdCj4gKwo+ICsKPiArbGpfaXJfbW9kZV8gPSBOb25lCj4gKwo+ICsKPiArZGVmIGxqX2lyX21v ZGUoKToKPiArIGdsb2JhbCBsal9pcl9tb2RlXwo+ICsgaWYgbGpfaXJfbW9kZV86Cj4gKyByZXR1 cm4gbGpfaXJfbW9kZV8KPiArIGxqX2lyX21vZGVfID0gZGJnLmxvb2t1cF9nbG9iYWwoJ2xqX2ly X21vZGUnKQo+ICsgcmV0dXJuIGxqX2lyX21vZGVfCj4gKwo+ICsKPiArZGVmIGlyX2xlZnQob3Ap Ogo+ICsgcmV0dXJuIElSTVtpbnQobGpfaXJfbW9kZSgpW29wXSAmIDMpXQo+IAoKTWF5IGJlIGJp bmFyeSBjb25zdGFudCB3aWxsIGJlIG1vcmUgY2xlYXI/wqB4eHggJsKgMGIwMDExCgo+IAo+ICsK PiArCj4gK2RlZiBpcl9yaWdodChvcCk6Cj4gKyByZXR1cm4gSVJNW2ludChsal9pcl9tb2RlKClb b3BdID4+IDIgJiAzKV0KPiAKCk1heSBiZSBiaW5hcnkgY29uc3RhbnQgd2lsbCBiZSBtb3JlIGNs ZWFyPyAoeHh4ICbCoDBiMTEwMCkgPj7CoDIKCj4gCj4gKwo+ICsKPiArZGVmIGlyX21vZGUob3Ap Ogo+ICsgbW9kZSA9ICcnCj4gKyBpcl9tb2RlID0gaW50KGxqX2lyX21vZGUoKVtvcF0gXiBJUk1f VykKPiAKCj4gCj4gKyBpZiBpcl9tb2RlID09IElSTV9DOgo+ICsgbW9kZSA9ICdDJwo+ICsgZWxp ZiBpcl9tb2RlID09IElSTV9BOgo+ICsgbW9kZSA9ICdBJwo+ICsgZWxpZiBpcl9tb2RlID09IElS TV9MOgo+ICsgbW9kZSA9ICdMJwo+ICsgZWxpZiBpcl9tb2RlID09IElSTV9TOgo+ICsgbW9kZSA9 ICdTJwo+ICsgZWxzZToKPiArIG1vZGUgPSAnTicKPiAKCj4gCj4gKyBtb2RlICs9ICdXJyBpZiBp cl9tb2RlICYgSVJNX1cgZWxzZSAnJwo+IAoKTWF5IGJlIHRhYmxlIHdpdGggMTYgaXRlbXMgYW5k IGNvbW1lbnRzwqB3aWxsIGJlIG1vcmUgY2xlYXI/wqBFLiBnLsKgcmV0dXJuIFhYWFsobGpfaXJf bW9kZSgpW29wXSAmIDBiMTExMTAwMDApwqA+PiA0XQpBbmQgaXQgd2lsbCBjb250YWluIGludmFs aWQgdmFsdWVzIGFsc28uCiMgPGZsYWcgYml0cyBpbiBhIGNvbW1lbnQ+ClhYWFswYjAwMDBdID0g 4oCYTlfigJkgI8KgTm9ybWFsL1JlZiB8wqAhTm9uLXdlYWsgZ3VhcmQKWFhYWzBiMDAwMV0gPSDi gJhDV+KAmSAjIENvbW11dGF0aXZlIHzCoCFOb24td2VhayBndWFyZApYWFhbMGIwMDExXSA9IOKA mEludmFsaWTigJkKLi4uClhYWFswYjEwMDBdID0g4oCYTuKAmSAjIE5vcm1hbC9SZWYgfMKgTm9u LXdlYWsgZ3VhcmQKWFhYWzBiMTAwMV0gPSDigJhD4oCZICMgQ29tbXV0YXRpdmUgfMKgTm9uLXdl YWsgZ3VhcmQKWFhYWzBiMTAxMV0gPSDigJhJbnZhbGlk4oCZCi4uLgoKPiAKPiArIHJldHVybiBt b2RlCj4gCgo+IAo+ICsKPiArCj4gK0lSVFlQRVMgPSBbCj4gKyAnbmlsJywKPiArICdmYWwnLAo+ ICsgJ3RydScsCj4gKyAnbHVkJywKPiArICdzdHInLAo+ICsgJ3AzMicsCj4gKyAndGhyJywKPiAr ICdwcm8nLAo+ICsgJ2Z1bicsCj4gKyAncDY0JywKPiArICdjZHQnLAo+ICsgJ3RhYicsCj4gKyAn dWR0JywKPiArICdmbHQnLAo+ICsgJ251bScsCj4gKyAnaTggJywKPiArICd1OCAnLAo+ICsgJ2kx NicsCj4gKyAndTE2JywKPiArICdpbnQnLAo+ICsgJ3UzMicsCj4gKyAnaTY0JywKPiArICd1NjQn LAo+ICsgJ3NmcCcsCj4gK10KPiArCj4gKwo+ICtJUlRfTlVNID0gMTQKPiArYXNzZXJ0IElSVFlQ RVNbSVJUX05VTV0gPT0gJ251bScsICdpbmNvcnJlY3QgSVJUX05VTSBkZWZpbml0aW9uJwo+ICsK PiArCj4gK0lSRklFTERTID0gWwo+ICsgJ3N0ci5sZW4nLAo+ICsgJ2Z1bmMuZW52JywKPiArICdm dW5jLnBjJywKPiArICdmdW5jLmZmaWQnLAo+ICsgJ3RocmVhZC5lbnYnLAo+ICsgJ3RhYi5tZXRh JywKPiArICd0YWIuYXJyYXknLAo+ICsgJ3RhYi5ub2RlJywKPiArICd0YWIuYXNpemUnLAo+ICsg J3RhYi5obWFzaycsCj4gKyAndGFiLm5vbW0nLAo+ICsgJ3VkYXRhLm1ldGEnLAo+ICsgJ3VkYXRh LnVkdHlwZScsCj4gKyAndWRhdGEuZmlsZScsCj4gKyAnY2RhdGEuY3R5cGVpZCcsCj4gKyAnY2Rh dGEucHRyJywKPiArICdjZGF0YS5pbnQnLAo+ICsgJ2NkYXRhLmludDY0JywKPiArICdjZGF0YS5p bnQ2NF80JywKPiArXQo+ICsKPiArCj4gK0lSRlBNUyA9IFsKPiArICdmbG9vcicsCj4gKyAnY2Vp bCcsCj4gKyAndHJ1bmMnLAo+ICsgJ3NxcnQnLAo+ICsgJ2V4cDInLAo+ICsgJ2xvZycsCj4gKyAn bG9nMicsCj4gKyAnb3RoZXInCj4gK10KPiArCj4gKwo+ICsjIERvbid0IHVzZSAqWyB0byBiZSBj b21wYXRpYmxlIHdpdGggUHl0aG9uIDIuCj4gK1JFR0lTVEVSUyA9IHsneDY0JzogWwo+ICsgJ3Jh eCcsCj4gKyAncmN4JywKPiArICdyZHgnLAo+ICsgJ3JieCcsCj4gKyAncnNwJywKPiArICdyYnAn LAo+ICsgJ3JzaScsCj4gKyAncmRpJywKPiArXSArIFsKPiArICdye30nLmZvcm1hdChpKSBmb3Ig aSBpbiByYW5nZSg4LCAxNikgIyByOCAuLiByMTUKPiArXSArIFsKPiArICd4bW17fScuZm9ybWF0 KGkpIGZvciBpIGluIHJhbmdlKDAsIDE2KSAjIHhtbTAgLi4geG1tMTUKPiArXSwgJ2FybTY0Jzog Wwo+ICsgJ3h7fScuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAsIDMxKSAjIHgwIC4uIHgzMAo+ ICtdICsgWydzcCddICsgWyAjIHgzMQo+ICsgJ2R7fScuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdl KDAsIDMyKSAjIGQwIC4uIGQzMQo+ICtdfQo+IAoKSXQgc2VlbXMsIHRoZcKg4oCYYXJtNjTigJkg cmVnaXN0ZXJzIGFyZSBtaXNzZWQuCgo+IAo+ICsKPiArCj4gK0lSX0NBTExTID0gWwo+ICsgJ2xq X3N0cl9jbXAnLAo+ICsgJ2xqX3N0cl9maW5kJywKPiArICdsal9zdHJfbmV3JywKPiArICdsal9z dHJzY2FuX251bScsCj4gKyAnbGpfc3RyZm10X2ludCcsCj4gKyAnbGpfc3RyZm10X251bScsCj4g KyAnbGpfc3RyZm10X2NoYXInLAo+ICsgJ2xqX3N0cmZtdF9wdXRpbnQnLAo+ICsgJ2xqX3N0cmZt dF9wdXRudW0nLAo+ICsgJ2xqX3N0cmZtdF9wdXRxdW90ZWQnLAo+ICsgJ2xqX3N0cmZtdF9wdXRm eGludCcsCj4gKyAnbGpfc3RyZm10X3B1dGZudW1faW50JywKPiArICdsal9zdHJmbXRfcHV0Zm51 bV91aW50JywKPiArICdsal9zdHJmbXRfcHV0Zm51bScsCj4gKyAnbGpfc3RyZm10X3B1dGZzdHIn LAo+ICsgJ2xqX3N0cmZtdF9wdXRmY2hhcicsCj4gKyAnbGpfYnVmX3B1dG1lbScsCj4gKyAnbGpf YnVmX3B1dHN0cicsCj4gKyAnbGpfYnVmX3B1dGNoYXInLAo+ICsgJ2xqX2J1Zl9wdXRzdHJfcmV2 ZXJzZScsCj4gKyAnbGpfYnVmX3B1dHN0cl9sb3dlcicsCj4gKyAnbGpfYnVmX3B1dHN0cl91cHBl cicsCj4gKyAnbGpfYnVmX3B1dHN0cl9yZXAnLAo+ICsgJ2xqX2J1Zl9wdXR0YWInLAo+ICsgJ2xq X2J1Zl90b3N0cicsCj4gKyAnbGpfdGFiX25ld19haCcsCj4gKyAnbGpfdGFiX25ldzEnLAo+ICsg J2xqX3RhYl9kdXAnLAo+ICsgJ2xqX3RhYl9jbGVhcicsCj4gKyAnbGpfdGFiX25ld2tleScsCj4g KyAnbGpfdGFiX2xlbicsCj4gKyAnbGpfZ2Nfc3RlcF9qaXQnLAo+ICsgJ2xqX2djX2JhcnJpZXJ1 dicsCj4gKyAnbGpfbWVtX25ld2djbycsCj4gKyAnbGpfbWF0aF9yYW5kb21fc3RlcCcsCj4gKyAn bGpfdm1fbW9kaScsCj4gKyAnbG9nMTAnLAo+ICsgJ2V4cCcsCj4gKyAnc2luJywKPiArICdjb3Mn LAo+ICsgJ3RhbicsCj4gKyAnYXNpbicsCj4gKyAnYWNvcycsCj4gKyAnYXRhbicsCj4gKyAnc2lu aCcsCj4gKyAnY29zaCcsCj4gKyAndGFuaCcsCj4gKyAnZnB1dGMnLAo+ICsgJ2Z3cml0ZScsCj4g KyAnZmZsdXNoJywKPiArICdsal92bV9mbG9vcicsCj4gKyAnbGpfdm1fY2VpbCcsCj4gKyAnbGpf dm1fdHJ1bmMnLAo+ICsgJ3NxcnQnLAo+ICsgJ2xvZycsCj4gKyAnbGpfdm1fbG9nMicsCj4gKyAn cG93JywKPiArICdhdGFuMicsCj4gKyAnbGRleHAnLAo+ICsgJ2xqX3ZtX3RvYml0JywKPiArICdz b2Z0ZnBfYWRkJywKPiArICdzb2Z0ZnBfc3ViJywKPiArICdzb2Z0ZnBfbXVsJywKPiArICdzb2Z0 ZnBfZGl2JywKPiArICdzb2Z0ZnBfY21wJywKPiArICdzb2Z0ZnBfaTJkJywKPiArICdzb2Z0ZnBf ZDJpJywKPiArICdsal92bV9zZm1pbicsCj4gKyAnbGpfdm1fc2ZtYXgnLAo+ICsgJ2xqX3ZtX3Rv aW50ZycsCj4gKyAnc29mdGZwX3VpMmQnLAo+ICsgJ3NvZnRmcF9mMmQnLAo+ICsgJ3NvZnRmcF9k MnVpJywKPiArICdzb2Z0ZnBfZDJmJywKPiArICdzb2Z0ZnBfaTJmJywKPiArICdzb2Z0ZnBfdWky ZicsCj4gKyAnc29mdGZwX2YyaScsCj4gKyAnc29mdGZwX2YydWknLAo+ICsgJ2ZwNjRfbDJkJywK PiArICdmcDY0X3VsMmQnLAo+ICsgJ2ZwNjRfbDJmJywKPiArICdmcDY0X3VsMmYnLAo+ICsgJ2Zw NjRfZDJsJywKPiArICdmcDY0X2QydWwnLAo+ICsgJ2ZwNjRfZjJsJywKPiArICdmcDY0X2YydWwn LAo+ICsgJ2xqX2Nhcml0aF9kaXZpNjQnLAo+ICsgJ2xqX2Nhcml0aF9kaXZ1NjQnLAo+ICsgJ2xq X2Nhcml0aF9tb2RpNjQnLAo+ICsgJ2xqX2Nhcml0aF9tb2R1NjQnLAo+ICsgJ2xqX2Nhcml0aF9w b3dpNjQnLAo+ICsgJ2xqX2Nhcml0aF9wb3d1NjQnLAo+ICsgJ2xqX2NkYXRhX25ld3YnLAo+ICsg J2xqX2NkYXRhX3NldGZpbicsCj4gKyAnc3RybGVuJywKPiArICdtZW1jcHknLAo+ICsgJ21lbXNl dCcsCj4gKyAnbGpfdm1fZXJybm8nLAo+ICsgJ2xqX2Nhcml0aF9tdWw2NCcsCj4gKyAnbGpfY2Fy aXRoX3NobDY0JywKPiArICdsal9jYXJpdGhfc2hyNjQnLAo+ICsgJ2xqX2Nhcml0aF9zYXI2NCcs Cj4gKyAnbGpfY2FyaXRoX3JvbDY0JywKPiArICdsal9jYXJpdGhfcm9yNjQnLAo+ICtdCj4gKwo+ ICsKPiArZGVmIHJlZ25hbWUocmVnX251bWJlcik6Cj4gKyBpZiBub3QgaGFzYXR0cihkYmcsICdh cmNoJyk6Cj4gKyBkYmcuYXJjaCA9IGRiZy5kZXRlY3RfYXJjaCgpCj4gKyByZXR1cm4gUkVHSVNU RVJTW2RiZy5hcmNoXVtyZWdfbnVtYmVyXQo+ICsKPiArCj4gK2RlZiBsaXRuYW1lX3Nsb2FkKG1v ZGUpOgo+ICsgbW9kZXNfc3RyID0gJycKPiArIG1vZGVzX3N0ciArPSAnUCcgaWYgbW9kZSAmIDB4 MSBlbHNlICcnCj4gKyBtb2Rlc19zdHIgKz0gJ0YnIGlmIG1vZGUgJiAweDIgZWxzZSAnJwo+ICsg bW9kZXNfc3RyICs9ICdUJyBpZiBtb2RlICYgMHg0IGVsc2UgJycKPiArIG1vZGVzX3N0ciArPSAn QycgaWYgbW9kZSAmIDB4OCBlbHNlICcnCj4gKyBtb2Rlc19zdHIgKz0gJ1InIGlmIG1vZGUgJiAw eDEwIGVsc2UgJycKPiArIG1vZGVzX3N0ciArPSAnSScgaWYgbW9kZSAmIDB4MjAgZWxzZSAnJwo+ ICsgcmV0dXJuIG1vZGVzX3N0cgo+ICsKPiArCj4gK2RlZiBsaXRuYW1lX3hsb2FkKG1vZGUpOgo+ ICsgZmxhZ3MgPSBbJy0nLCAnUicsICdWJywgJ1JWJywgJ1UnLCAnUlUnLCAnVlUnLCAnUlZVJ10K PiAKCkRvZXMgd2UgbmVlZCBhwqByYW5nZSBjaGVjayBhcyBpbsKgbGl0bmFtZV9idWZoZHIoKT8K Cj4gCj4gKyByZXR1cm4gZmxhZ3NbbW9kZV0KPiArCj4gKwo+ICtkZWYgbGl0bmFtZV9jb252KG1v ZGUpOgo+IAoKRG9lcyB3ZSBuZWVkIHNvbWUgcmFuZ2UgY2hlY2tpbmcgaGVyZT8KCj4gCj4gKyBJ UkNPTlZfRFNIID0gNQo+ICsgSVJDT05WX0NTSCA9IDEyCj4gKyBJUkNPTlZfU0VYVCA9IDB4ODAw Cj4gKyBJUkNPTlZfU1JDTUFTSyA9IDB4MWYKPiArIGNvbnZfc3RyID0gJ3t0b30ue2ZybX0nLmZv cm1hdCgKPiArIHRvPUlSVFlQRVNbKG1vZGUgPj4gSVJDT05WX0RTSCkgJiBJUkNPTlZfU1JDTUFT S10sCj4gKyBmcm09SVJUWVBFU1ttb2RlICYgSVJDT05WX1NSQ01BU0tdCj4gKyApCj4gKyBjb252 X3N0ciArPSAnIHNleHQnIGlmIG1vZGUgJiBJUkNPTlZfU0VYVCBlbHNlICcnCj4gKyBudW0yaW50 X21vZGUgPSBtb2RlID4+IElSQ09OVl9DU0gKPiArIGlmIG51bTJpbnRfbW9kZSA9PSAyOgo+ICsg Y29udl9zdHIgKz0gJyBpbmRleCcKPiArIGVsaWYgbnVtMmludF9tb2RlID09IDM6Cj4gKyBjb252 X3N0ciArPSAnIGNoZWNrJwo+ICsgcmV0dXJuIGNvbnZfc3RyCj4gKwo+ICsKPiArZGVmIGxpdG5h bWVfaXJmaWVsZChtb2RlKToKPiArIGlmIG1vZGUgPj0gbGVuKElSRklFTERTKToKPiArIHJldHVy biAndW5rbm93biBpcmZpZWxkJwo+ICsgcmV0dXJuIElSRklFTERTW21vZGVdCj4gKwo+ICsKPiAr ZGVmIGxpdG5hbWVfZnBtKG1vZGUpOgo+ICsgaWYgbW9kZSA+PSBsZW4oSVJGUE1TKToKPiArIHJl dHVybiAndW5rbm93biBpcmZwbScKPiArIHJldHVybiBJUkZQTVNbbW9kZV0KPiArCj4gKwo+ICtk ZWYgbGl0bmFtZV9idWZoZHIobW9kZSk6Cj4gKyBtb2RlcyA9IFsnUkVTRVQnLCAnQVBQRU5EJ10K PiArIGlmIG1vZGUgPj0gbGVuKG1vZGVzKToKPiArIHJldHVybiAndW5rbm93biBidWZoZHIgbW9k ZScKPiArIHJldHVybiBtb2Rlc1ttb2RlXQo+ICsKPiArCj4gK2RlZiBsaXRuYW1lX3Rvc3RyKG1v ZGUpOgo+ICsgbW9kZXMgPSBbJ0lOVCcsICdOVU0nLCAnQ0hBUiddCj4gKyBpZiBtb2RlID49IGxl bihtb2Rlcyk6Cj4gKyByZXR1cm4gJ3Vua25vd24gdG9zdHIgbW9kZScKPiArIHJldHVybiBtb2Rl c1ttb2RlXQo+ICsKPiArCj4gK0lSX0xJVE5BTUVTID0gewo+ICsgJ1NMT0FEJzogbGl0bmFtZV9z bG9hZCwKPiArICdYTE9BRCc6IGxpdG5hbWVfeGxvYWQsCj4gKyAnQ09OVic6IGxpdG5hbWVfY29u diwKPiArICdGTE9BRCc6IGxpdG5hbWVfaXJmaWVsZCwKPiArICdGUkVGJzogbGl0bmFtZV9pcmZp ZWxkLAo+ICsgJ0ZQTUFUSCc6IGxpdG5hbWVfZnBtLAo+ICsgJ0JVRkhEUic6IGxpdG5hbWVfYnVm aGRyLAo+ICsgJ1RPU1RSJzogbGl0bmFtZV90b3N0cgo+ICt9Cj4gKwo+ICsjIEFkZGl0aW9uYWwg ZmxhZ3MuCj4gK0lSVF9NQVJLID0gMHgyMCAjIE1hcmtlciBmb3IgbWlzYy4gcHVycG9zZXMuCj4g K0lSVF9JU1BISSA9IDB4NDAgIyBJbnN0cnVjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IFBISSBvcGVy YW5kLgo+ICtJUlRfR1VBUkQgPSAweDgwICMgSW5zdHJ1Y3Rpb24gaXMgYSBndWFyZC4KPiArIyBN YXNrcy4KPiArSVJUX1RZUEUgPSAweDFmCj4gKwo+ICtSSURfTk9ORSA9IDB4ODAKPiArUklEX01B U0sgPSAweDdmCj4gK1JJRF9JTklUID0gKFJJRF9OT05FIHwgUklEX01BU0spCj4gK1JJRF9TSU5L ID0gKFJJRF9JTklUIC0gMSkKPiArUklEX1NVTksgPSAoUklEX0lOSVQgLSAyKQo+ICsjIFNwaWxs IHNsb3QgMCBtZWFucyBubyBzcGlsbCBzbG90IGhhcyBiZWVuIGFsbG9jYXRlZC4KPiArU1BTX05P TkUgPSAwCj4gKwo+ICtSRUZfQklBUyA9IDB4ODAwMAo+ICsKPiArVFJFRl9TSElGVCA9IDI0Cj4g Kwo+ICtUUkVGX1JFRk1BU0sgPSAweDAwMDBmZmZmCj4gK1RSRUZfRlJBTUUgPSAweDAwMDEwMDAw Cj4gK1RSRUZfQ09OVCA9IDB4MDAwMjAwMDAKPiArIyBTbmFwc2hvdCBmbGFncyBhbmQgbWFza3Mu Cj4gK1NOQVBfRlJBTUUgPSAweDAxMDAwMAo+ICtTTkFQX1NPRlRGUE5VTSA9IDB4MDgwMDAwCj4g Kwo+ICsKPiArZGVmIGlydF90eXBlKHQpOgo+ICsgcmV0dXJuIGRiZy5jYXN0KCdJUlR5cGUnLCB0 WydpcnQnXSAmIElSVF9UWVBFKQo+ICsKPiArCj4gK2RlZiB0cmVmX3R5cGUodHIpOgo+ICsgcmV0 dXJuIGRiZy5jYXN0KCdJUlR5cGUnLCAodHIgPj4gVFJFRl9TSElGVCkgJiBJUlRfVFlQRSkKPiAr Cj4gKwo+ICtkZWYgdHJlZl9yZWYodHIpOgo+ICsgcmV0dXJuIGludCh0ciAmIFRSRUZfUkVGTUFT SykKPiArCj4gKwo+ICtkZWYgaXJ0X2lzbWFya2VkKHQpOgo+ICsgcmV0dXJuIHRbJ2lydCddICYg SVJUX01BUksKPiAKCkkgcHJvcG9zZSBleHBsaWNpdCBib29sIGNhc3QgKCE9IDApIGhlcmUgYW5k IGJlbG93LgoKPiAKPiArCj4gKwo+ICtkZWYgaXJ0X2lzcGhpKHQpOgo+ICsgcmV0dXJuIHRbJ2ly dCddICYgSVJUX0lTUEhJCj4gKwo+ICsKPiArZGVmIGlydF9pc2d1YXJkKHQpOgo+ICsgcmV0dXJu IHRbJ2lydCddICYgSVJUX0dVQVJECj4gKwo+ICsKPiArZGVmIGlydF90b2l0eXBlKGlydCk6Cj4g KyB0ID0gaXJ0X3R5cGUoaXJ0KQo+ICsgaWYgTEpfRFVBTE5VTSBhbmQgdCA+IElSVF9OVU06Cj4g KyByZXR1cm4gTEpfVFsnTlVNWCddCj4gKyBlbHNlOgo+ICsgcmV0dXJuIGkybm90dTMyKHQpCj4g Kwo+ICsKPiArZGVmIGlyX2twdHIoaXIpOgo+ICsgaXJuYW1lID0gSVJTW2lyWydvJ11dCj4gKyBh c3NlcnQgaXJuYW1lID09ICdLUFRSJyBvciBpcm5hbWUgPT0gJ0tLUFRSJywgJ3dyb25nIElSIGZv ciBpcl9pcHRyKCknCj4gKyByZXR1cm4gbXJlZigndm9pZCAqJywgZGJnLmNhc3QoJ0lSSW5zICon LAo+IGRiZy5hZGRyZXNzKGlyKSlbTEpfR0M2NF1bJ3B0ciddKQo+ICsKPiArCj4gK2RlZiBpcl9r Z2MoaXIpOgo+ICsgaXJuYW1lID0gSVJTW2lyWydvJ11dCj4gKyBhc3NlcnQgaXJuYW1lID09ICdL R0MnLCAnd3JvbmcgSVIgZm9yIGlyX2tnYygpJwo+ICsgcmV0dXJuIGdjcmVmKGRiZy5jYXN0KCdJ UklucyAqJywgZGJnLmFkZHJlc3MoaXIpKVtMSl9HQzY0XVsnZ2NyJ10pCj4gKwo+ICsKPiArZGVm IGlyX2tudW0oaXIpOgo+ICsgaXJuYW1lID0gSVJTW2lyWydvJ11dCj4gKyBhc3NlcnQgaXJuYW1l ID09ICdLTlVNJywgJ3dyb25nIElSIGZvciBpcl9rbnVtKCknCj4gKyByZXR1cm4gZGJnLmFkZHJl c3MoZGJnLmNhc3QoJ0lSSW5zIConLCBkYmcuYWRkcmVzcyhpcikpWzFdWyd0diddKQo+ICsKPiAr Cj4gK2RlZiBpcl9raW50NjQoaXIpOgo+ICsgaXJuYW1lID0gSVJTW2lyWydvJ11dCj4gKyBhc3Nl cnQgaXJuYW1lID09ICdLSU5UNjQnLCAnd3JvbmcgSVIgZm9yIGlyX2tudW0oKScKPiArIHJldHVy biBkYmcuYWRkcmVzcyhkYmcuY2FzdCgnSVJJbnMgKicsIGRiZy5hZGRyZXNzKGlyKSlbMV1bJ3R2 J10pCj4gKwo+ICsKPiAjIER1bXBlcnMuCj4gCj4gIyBHQ29iaiBkdW1wZXJzLgo+IEBAIC0xNDY3 LDYgKzIyODEsMzI1IEBAIGRlZiBkdW1wX2Z1bmMoZnVuYyk6Cj4gcmV0dXJuICdmYXN0IGZ1bmN0 aW9uICN7fVxuJy5mb3JtYXQoaW50KGZmaWQpKQo+IAo+IAo+ICsjIEpJVCBkdW1wZXJzLgo+ICsK PiArCj4gK2RlZiBkdW1wX2NhbGxfZnVuYyh0cmFjZSwgY2FsbG9wKToKPiArIGN0eXBlID0gJycK PiArIGlmIGNhbGxvcCA+IDA6Cj4gKyBpciA9IHRyYWNlWydpciddW1JFRl9CSUFTICsgY2FsbG9w XQo+ICsgaWYgSVJUWVBFU1tpcnRfdHlwZShpclsndCddKV0gPT0gJ25pbCc6ICMgbmlsID09IENB UkcoZnVuYywgY3R5cGUpCj4gKyBjYWxsb3AgPSBpbnQoaXJbJ29wMSddKSAtIFJFRl9CSUFTCj4g KyBjZHRfaWR4X2lyayA9IHRyYWNlWydpciddW2lyWydvcDInXV0KPiArIGFzc2VydCBJUlNbY2R0 X2lkeF9pcmtbJ28nXV0gPT0gJ0tJTlQnLCBcCj4gKyAndW5leHBlY3RlZCBJUiBmb3IgY3R5cGUg c3RvcmFnZScKPiArIGN0eXBlX2lkeCA9IGNkdF9pZHhfaXJrWydpJ10KPiArIGN0eXBlID0gJ2N0 eXBlOiB7fScuZm9ybWF0KGN0eXBlX2lkeCkKPiArCj4gKyBmdW5jX3N0ciA9ICcnCj4gKyBpZiBj YWxsb3AgPCAwOgo+ICsgaXJrID0gdHJhY2VbJ2lyJ11bUkVGX0JJQVMgKyBjYWxsb3BdCj4gKyBh c3NlcnQgSVJTW2lya1snbyddXSA9PSAnS0lOVDY0JywgXAo+ICsgJ3VuZXhwZWN0ZWQgSVIgZm9y IEZGSSBmdW5jdGlvbiBzdG9yYWdlJwo+ICsgZnVuY19hZGRyID0gaW50KGlyX2tpbnQ2NChpcmsp Wyd1NjQnXSkKPiArICMgVE9ETzogU3ltYm9sIGRlbWFuZ2xpbmcuCj4gKyBmdW5jX3N0ciA9ICdb ezojeH1dJy5mb3JtYXQoZnVuY19hZGRyKQo+ICsgZWxzZToKPiArIGZ1bmNfc3RyID0gJ1t7OjA0 ZH1dJy5mb3JtYXQoY2FsbG9wKQo+ICsKPiArIHJldHVybiBmdW5jX3N0ciwgY3R5cGUKPiArCj4g Kwo+ICtkZWYgZHVtcF9jYWxsX2FyZ3ModHJhY2UsIGlucyk6Cj4gKyBpZiBpbnMgPCAwOgo+ICsg cmV0dXJuICd7e3t9fX0nLmZvcm1hdChkdW1wX2lyayh0cmFjZSwgaW5zKSkKPiArIGVsc2U6Cj4g KyBpciA9IHRyYWNlWydpciddW1JFRl9CSUFTICsgaW5zXQo+ICsgaXJuYW1lID0gSVJTW2lyWydv J11dCj4gKyBpZiBpcm5hbWUgPT0gJ0NBUkcnOgo+ICsgbGFzdF9hcmcgPSAnJwo+ICsgYXJncyA9 IGR1bXBfY2FsbF9hcmdzKHRyYWNlLCBpbnQoaXJbJ29wMSddKSAtIFJFRl9CSUFTKQo+ICsgb3Ay ID0gaW50KGlyWydvcDInXSkgLSBSRUZfQklBUwo+ICsgaWYgb3AyIDwgMDoKPiArIGxhc3RfYXJn ID0gJ3t7e319fScuZm9ybWF0KGR1bXBfaXJrKHRyYWNlLCBvcDIpKQo+ICsgZWxzZToKPiArIGxh c3RfYXJnID0gJ3t7ezowNGR9fX0nLmZvcm1hdChvcDIpCj4gKyByZXR1cm4gYXJncyArICcsICcg KyBsYXN0X2FyZwo+ICsgZWxzZToKPiArIHJldHVybiAne3t7OjA0ZH19fScuZm9ybWF0KGlucykK PiArCj4gKwo+ICsjIFNwZWNpYWwgRlAgY29uc3RhbnQuCj4gK0NPTlNUX0JJQVMgPSAyICoqIDUy ICsgMiAqKiA1MQo+ICsKPiArCj4gK2RlZiBkdW1wX2lyayh0cmFjZSwgaWR4KToKPiArIHJlZiA9 IGlkeCArIFJFRl9CSUFTCj4gKyBhc3NlcnQgcmVmID49IHRyYWNlWyduayddIGFuZCByZWYgPCBS RUZfQklBUywgJ2JhZCBjb25zdGFudCBpbiBJUiBkdW1wJwo+ICsgaXJpbnMgPSB0cmFjZVsnaXIn XVtyZWZdCj4gKyBpcm5hbWUgPSBJUlNbaXJpbnNbJ28nXV0KPiArIHNsb3QgPSAnJwo+ICsgaWYg aXJuYW1lID09ICdLU0xPVCc6Cj4gKyBzbG90ID0gJyBLU0xPVDogQHt9Jy5mb3JtYXQoaW50KGly aW5zWydvcDInXSkpCj4gKyBpcmlucyA9IHRyYWNlWydpciddW2lyaW5zWydvcDEnXV0KPiArIGly bmFtZSA9IElSU1tpcmluc1snbyddXQo+ICsKPiArIGlydHlwZSA9IGlyaW5zWyd0J10KPiArIGlm IGlybmFtZSA9PSAnS1BSSSc6Cj4gKyB0eXBlbmFtZSA9IHR5cGVuYW1lcyhpcnRfdG9pdHlwZShp cnR5cGUpKQo+ICsgIyBUcml2aWFsIGR1bXAgZm9yIHByaW1pdGl2ZXMuCj4gKyBpcmsgPSB0dl9k dW1wZXJzLmdldCgKPiArIHR5cGVuYW1lLCBkdW1wX2xqX3R2X2ludmFsaWQgIyBub3FhOiBGODIx ICMgR2VuZXJhdGVkLgo+ICsgKSgwKQo+ICsgZWxpZiBpcm5hbWUgPT0gJ0tJTlQnOgo+ICsgaXJr ID0gJ2ludGVnZXIge30nLmZvcm1hdChkYmcuY2FzdCgnaW50MzJfdCcsIGlyaW5zWydpJ10pKQo+ ICsgZWxpZiBpcm5hbWUgPT0gJ0tHQyc6Cj4gKyB0eXBlbmFtZSA9IHR5cGVuYW1lcyhpcnRfdG9p dHlwZShpcnR5cGUpKQo+ICsgaXJrID0gZ2NvX2R1bXBlcnMuZ2V0KHR5cGVuYW1lLCBkdW1wX2xq X2djb19pbnZhbGlkKShpcl9rZ2MoaXJpbnMpKQo+ICsgZWxpZiBpcm5hbWUgPT0gJ0tLUFRSJzoK PiArIGFkZHIgPSBpcl9rcHRyKGlyaW5zKQo+ICsgaWYgYWRkciA9PSBkYmcuYWRkcmVzcyhHKEwo KSlbJ25pbG5vZGUnXSk6Cj4gKyByZXR1cm4gJ1tnLT5uaWxub2RlXScgKyBzbG90Cj4gKyBpcmsg PSAnW3t9XScuZm9ybWF0KHN0cng2NChhZGRyKSkKPiArIGVsaWYgaXJuYW1lID09ICdLUFRSJzoK PiArIGlyayA9ICdbe31dJy5mb3JtYXQoc3RyeDY0KGlyX2twdHIoaXJpbnMpKSkKPiArIGVsaWYg aXJuYW1lID09ICdLTlVMTCc6Cj4gKyBpcmsgPSAnTlVMTCcKPiArIGVsaWYgaXJuYW1lID09ICdL TlVNJzoKPiArIHR2X251bSA9IGlyX2tudW0oaXJpbnMpCj4gKyBpZiBmbG9hdCh0dl9udW1bJ24n XSkgPT0gQ09OU1RfQklBUzoKPiArIHJldHVybiAnYmlhcycKPiArIGlyayA9IGR1bXBfbGpfdHZf bnVteCh0dl9udW0pCj4gKyBlbGlmIGlybmFtZSA9PSAnS0lOVDY0JzoKPiArIGlyayA9ICdpbnQ2 NF90IHt9Jy5mb3JtYXQoZGJnLmNhc3QoCj4gKyAnaW50NjRfdCcsIGludChpcl9raW50NjQoaXJp bnMpWyd1NjQnXSkKPiArICkpCj4gKyBlbHNlOgo+ICsgcmV0dXJuICdVbmtub3duIElSSzogJyAr IGlybmFtZQo+ICsgcmV0dXJuIGlyayArIHNsb3QKPiArCj4gKwo+ICtkZWYgZHVtcF9pcmlucyhp cmlucywgdHJhY2U9Tm9uZSk6Cj4gKyBpcm9wID0gaW50KGlyaW5zWydvJ10pCj4gKyBpZiBpcm9w ID49IGxlbihJUlMpOgo+ICsgcmV0dXJuICdJTlZBTElEJwo+ICsKPiArIGlybmFtZSA9IElSU1tp cm9wXQo+ICsgbGVmdG9wID0gaXJfbGVmdChpcm9wKQo+ICsgcmlnaHRvcCA9IGlyX3JpZ2h0KGly b3ApCj4gKyBpcnQgPSBpcmluc1sndCddCj4gKyBpc19zaW5rc3VuayA9IGlyaW5zWydyJ10gPT0g UklEX1NJTksgb3IgaXJpbnNbJ3InXSA9PSBSSURfU1VOSwo+ICsgZmxhZ3MgPSAne2lzX3Npbmtz dW5rfXtpc19tYXJrZWR9e2lzX2d1YXJkfXtpc19waGl9Jy5mb3JtYXQoCj4gKyAjIFNpbmsgZmxh ZyBzaG91bGQgYmUgdGhlIGZpcnN0IHRvIG1hdGNoIHNpbmsgc2xvdHMgZHVyaW5nCj4gKyAjIHRo ZSBkdW1wIG9mIHJlZ2lzdGVycy4KPiArIGlzX3NpbmtzdW5rPSd9JyBpZiBpc19zaW5rc3VuayBl bHNlICcgJywKPiArIGlzX21hcmtlZD0nIScgaWYgaXJ0X2lzbWFya2VkKGlydCkgZWxzZSAnICcs Cj4gKyBpc19ndWFyZD0nPicgaWYgaXJ0X2lzZ3VhcmQoaXJ0KSBlbHNlICcgJywKPiArIGlzX3Bo aT0nKycgaWYgaXJ0X2lzcGhpKGlydCkgZWxzZSAnICcKPiArICkKPiArCj4gKyBpZiBub3QgdHJh Y2U6Cj4gKyBnID0gRyhMKE5vbmUpKQo+ICsgY29tcGlsaW5nID0gaml0X3N0YXRlKGcpICE9ICdJ RExFJwo+ICsgYXNzZXJ0IGNvbXBpbGluZywgJ2F0dGVtcHQgdG8gZHVtcCBJUiBmb3IgSi5jdXIg dHJhY2UgaW4gYmFkIFZNIHN0YXRlJwo+ICsgdHJhY2UgPSBKKGcpWydjdXInXQo+ICsKPiArIGxl ZnQgPSAnJwo+ICsgcmlnaHQgPSAnJwo+ICsgbGlzcmVmID0gbGVmdG9wID09ICdyZWYnCj4gKyBy aXNyZWYgPSByaWdodG9wID09ICdyZWYnCj4gKyBvcDEgPSBpbnQoKGlyaW5zWydvcDEnXSAtIFJF Rl9CSUFTKSBpZiBsaXNyZWYgZWxzZSBpcmluc1snb3AxJ10pCj4gKyBvcDIgPSBpbnQoKGlyaW5z WydvcDInXSAtIFJFRl9CSUFTKSBpZiByaXNyZWYgZWxzZSBpcmluc1snb3AyJ10pCj4gCgo+IAo+ ICsKPiArIHNraXBfcmlnaHQgPSBGYWxzZQo+ICsgaWYgcmUubWF0Y2goJ0NBTEwnLCBpcm5hbWUp Ogo+ICsgY3R5cGUgPSAnJwo+ICsgYXJncyA9ICcnCj4gKyBpZiByaWdodG9wID09ICdsaXQnOgo+ ICsgZnVuYyA9IElSX0NBTExTW29wMl0KPiArIGVsc2U6Cj4gKyBmdW5jLCBjdHlwZSA9IGR1bXBf Y2FsbF9mdW5jKHRyYWNlLCBvcDIpCj4gKwo+ICsgaWYgb3AxICE9IC0xOgo+ICsgYXJncyA9IGR1 bXBfY2FsbF9hcmdzKHRyYWNlLCBpbnQob3AxKSkKPiArCj4gKyByZXR1cm4gJ3tmbGFnc30ge3R5 cGV9IHtuYW1lOjZ9IFt7bW9kZToyfV0ge2Z9KHthcmdzfSkge2N0fVxuJy5mb3JtYXQoCj4gKyBm bGFncz1mbGFncywKPiArIG5hbWU9aXJuYW1lLAo+ICsgbW9kZT1pcl9tb2RlKGlyb3ApLAo+ICsg dHlwZT1JUlRZUEVTW2lydF90eXBlKGlydCldLAo+ICsgY3Q9Y3R5cGUsCj4gKyBhcmdzPWFyZ3Ms Cj4gKyBmPWZ1bmMsCj4gKyApCj4gKyBlbGlmIGlybmFtZSA9PSAnQ05FVycgYW5kIG9wMiA9PSAt MToKPiArIGxlZnQgPSBkdW1wX2lyayh0cmFjZSwgb3AxKQo+ICsgc2tpcF9yaWdodCA9IFRydWUK PiArIGVsaWYgbGVmdG9wOgo+ICsgaWYgb3AxIDwgMDoKPiArIGxlZnQgPSBkdW1wX2lyayh0cmFj ZSwgb3AxKQo+ICsgZWxpZiBsZWZ0b3AgPT0gJ2NzdCc6Cj4gKyBpZHggPSBpcmlucyAtIGRiZy5h ZGRyZXNzKHRyYWNlWydpciddW1JFRl9CSUFTXSkKPiArIGxlZnQgPSBkdW1wX2lyayh0cmFjZSwg aWR4KQo+ICsgZWxzZToKPiArIGxlZnQgPSAoJ3s6MDRkfScgaWYgbGlzcmVmIGVsc2UgJyN7Ojwz ZH0nKS5mb3JtYXQob3AxKQo+ICsKPiArIGlmIHJpZ2h0b3A6Cj4gKyBpZiByaWdodG9wID09ICds aXQnOgo+ICsgbGl0bmFtZSA9IElSX0xJVE5BTUVTLmdldChpcm5hbWUsIE5vbmUpCj4gKyBpZiBs aXRuYW1lOgo+ICsgIyBUcnkgdG8gaGFuZGxlIGBsal9pcl9nZ2Zsb2FkKClgLgo+ICsgZ2dmbmFt ZSA9IE5vbmUKPiArIGlmIGlybmFtZSA9PSAnRkxPQUQnIGFuZCBsZWZ0ID09ICduaWwnIFwKPiAr IGFuZCBvcDIgPj0gbGVuKElSRklFTERTKToKPiArIGdnZm5hbWUgPSBnZ2ZuYW1lX2J5X29mZnNl dChvcDIgPDwgMikKPiArCj4gKyBpZiBnZ2ZuYW1lOgo+ICsgcmlnaHQgPSBnZ2ZuYW1lCj4gKyBl bHNlOgo+ICsgcmlnaHQgPSBsaXRuYW1lKG9wMikKPiArIGVsaWYgaXJuYW1lID09ICdVUkVGTycg b3IgaXJuYW1lID09ICdVUkVGQyc6Cj4gKyByaWdodCA9ICcjezo8M2R9Jy5mb3JtYXQob3AyID4+ IDgpCj4gKyBlbHNlOgo+ICsgcmlnaHQgPSAnI3s6PDNkfScuZm9ybWF0KG9wMikKPiArIGVsaWYg b3AyIDwgMDoKPiArIHJpZ2h0ID0gZHVtcF9pcmsodHJhY2UsIG9wMikKPiArIGVsc2U6Cj4gKyBy aWdodCA9ICgnezowNGR9JykuZm9ybWF0KG9wMikKPiArCj4gKyB0eXBlbmFtZSA9ICcnCj4gKyBp ZiBpcm5hbWUgPT0gJ0xPT1AnOgo+ICsgdHlwZW5hbWUgPSAnLS0tJwo+ICsgZWxpZiBpcm5hbWUg PT0gJ05PUCc6Cj4gKyB0eXBlbmFtZSA9ICcgJwo+ICsgZWxzZToKPiArIHR5cGVuYW1lID0gSVJU WVBFU1tpcnRfdHlwZShpcnQpXQo+ICsKPiArIHJldHVybiAne2ZsYWdzfSB7dHlwZX0ge25hbWU6 Nn0gW3ttb2RlOjJ9XSB7bGVmdDo8OXN9IHtyaWdodH1cbicuZm9ybWF0KAo+IAo+ICsgZmxhZ3M9 ZmxhZ3MsCj4gKyBuYW1lPWlybmFtZSwKPiArIG1vZGU9aXJfbW9kZShpcm9wKSwKPiArIHR5cGU9 dHlwZW5hbWUsCj4gKyBsZWZ0PShsZWZ0b3AgKyAnOiAnICsgbGVmdCkgaWYgbGVmdG9wIGVsc2Ug JycsCj4gKyByaWdodD0ocmlnaHRvcCArICc6ICcgKyByaWdodCkgaWYgcmlnaHRvcCBhbmQgbm90 IHNraXBfcmlnaHQgZWxzZSAnJywKPiArICkKPiArCj4gKwo+ICtkZWYgZHVtcF9zbmFwKHRyYWNl LCBzbmFwbm8sIHNuYXApOgo+ICsgZHVtcCA9ICdTTkFQICN7OjwzZH0gWycuZm9ybWF0KHNuYXBu bykKPiArIHNuYXBfbWFwID0gZGJnLmFkZHJlc3ModHJhY2VbJ3NuYXBtYXAnXVtzbmFwWydtYXBv ZnMnXV0pCj4gKyBzbmFwX2VudHJ5X251bSA9IDAKPiArIGZvciBzbG90IGluIHJhbmdlKDAsIHNu YXBbJ25zbG90cyddKToKPiArIGR1bXAgKz0gJyAnCj4gKyBzbmFwX2VudHJ5ID0gaW50KHNuYXBf bWFwW3NuYXBfZW50cnlfbnVtXSkKPiArIGlmIHNuYXBfZW50cnlfbnVtIDwgc25hcFsnbmVudCdd IGFuZCBzbmFwX2VudHJ5ID4+IFRSRUZfU0hJRlQgPT0gc2xvdDoKPiArIHNuYXBfZW50cnlfbnVt ICs9IDEKPiArIHJlZiA9IGludCgoc25hcF9lbnRyeSAmIFRSRUZfUkVGTUFTSykgLSBSRUZfQklB UykKPiArIGlmIHJlZiA8IDA6Cj4gKyBpZiBpbnQoc25hcF9lbnRyeSkgPT0gMHgxMDU3ZmZmOgo+ ICsgZHVtcCArPSAnLS0tLScKPiArIGNvbnRpbnVlCj4gKyBlbGlmIChzbmFwX2VudHJ5ICYgVFJF Rl9DT05UKToKPiArIGR1bXAgKz0gJ2NvbnRwYycKPiArIGVsaWYgKHNuYXBfZW50cnkgJiBUUkVG X0ZSQU1FKToKPiArIGR1bXAgKz0gJ2Z0c3ogJwo+ICsgZWxzZToKPiArIGR1bXAgKz0gJ3t7e2Nv bnN0fX19Jy5mb3JtYXQoY29uc3Q9ZHVtcF9pcmsodHJhY2UsIHJlZikpCj4gKyBlbGlmIHNuYXBf ZW50cnkgJiBTTkFQX1NPRlRGUE5VTToKPiArIGR1bXAgKz0gJ3s6MDRkfS97OjA0ZH0nLmZvcm1h dChyZWYsIHJlZiArIDEpCj4gKyBlbHNlOgo+ICsgZHVtcCArPSAnezowNGR9Jy5mb3JtYXQocmVm KQo+ICsKPiArIGlmIHNuYXBfZW50cnkgJiBTTkFQX0ZSQU1FOgo+ICsgZHVtcCArPSAnfCcKPiAr IGVsc2U6Cj4gKyBkdW1wICs9ICctLS0tJwo+ICsKPiArIGR1bXAgKz0gJyBdXG4nCj4gKyByZXR1 cm4gZHVtcAo+ICsKPiArCj4gK2RlZiBkdW1wX3Npbmtfc2xvdChyaWQsIHNwaWxsLCBpbnNfbnVt YmVyKToKPiArIGFzc2VydCByaWQgPT0gUklEX1NJTksgb3IgcmlkID09IFJJRF9TVU5LLCAnaW5j b3JyZWN0IHJpZCBpbiBzaW5rIGR1bXAnCj4gKyB0cCA9ICdzaW5rJyBpZiByaWQgPT0gUklEX1NJ TksgZWxzZSAnc3VuaycKPiArIHJldHVybiAne3t7fScuZm9ybWF0KHRwKSBpZiBzcGlsbCA9PSBS SURfSU5JVCBvciBzcGlsbCA9PSBTUFNfTk9ORSBcCj4gKyBlbHNlICd7e3s6MDRkfScuZm9ybWF0 KGludChpbnNfbnVtYmVyIC0gc3BpbGwpKQo+ICsKPiArCj4gK2RlZiBkdW1wX3JlZ3NwKGlyaW5z LCBpbnNfbnVtYmVyKToKPiArIHJpZCA9IGlyaW5zWydyJ10KPiArIHNwaWxsID0gaXJpbnNbJ3Mn XQo+ICsgaWYgcmlkID09IFJJRF9TSU5LIG9yIHJpZCA9PSBSSURfU1VOSzoKPiArIHJldHVybiBk dW1wX3Npbmtfc2xvdChyaWQsIHNwaWxsLCBpbnNfbnVtYmVyKQo+ICsgZWxpZiBpcmluc1sncHJl diddID4gMjU1Ogo+ICsgcmV0dXJuICdbezojMDV4fV0nLmZvcm1hdChpbnQoc3BpbGwgKiA0KSkK PiArIGVsaWYgcmlkIDwgMTI4Ogo+ICsgcmV0dXJuIHJlZ25hbWUocmlkKQo+ICsgZWxzZToKPiAr IHJldHVybiAnJwo+ICsKPiArCj4gK2RlZiBkdW1wX3RyYWNlKHRyYWNlLCBmbGFncyk6Cj4gKyBk dW1wID0gJ1RyYWNlIHtudW19IHN0YXJ0XG5cdHByb3RvOiB7c3RhcnRfcHR9XG5cdEJDOgo+IHtz dGFydF9iY31cbicuZm9ybWF0KAo+ICsgbnVtPXRyYWNlWyd0cmFjZW5vJ10sCj4gKyBzdGFydF9w dD1nY3JlZih0cmFjZVsnc3RhcnRwdCddKSwKPiArIHN0YXJ0X2JjPW1yZWYoJ0JDSW5zIConLCB0 cmFjZVsnc3RhcnRwYyddKSwKPiArICkKPiArCj4gKyBuaW5zID0gdHJhY2VbJ25pbnMnXSAtIFJF Rl9CSUFTCj4gKyBkdW1wICs9ICctLS0tIFRSQUNFIElSXG4nCj4gKyBuc25hcCA9IDAKPiArIHNu YXAgPSB0cmFjZVsnc25hcCddW25zbmFwXQo+ICsgc25hcHJlZiA9IHNuYXBbJ3JlZiddCj4gKyBm b3IgaXJudW0gaW4gcmFuZ2UoMSwgbmlucyk6Cj4gKyBpcnJlZiA9IFJFRl9CSUFTICsgaXJudW0K PiArIGlmICdzJyBpbiBmbGFncyBhbmQgaXJyZWYgPj0gc25hcHJlZiBhbmQgbnNuYXAgPCB0cmFj ZVsnbnNuYXAnXToKPiArIGR1bXAgKz0gJy4uLi4gJwo+ICsgaWYgJ3InIGluIGZsYWdzOgo+ICsg ZHVtcCArPSAnICcgKiA3Cj4gKyBkdW1wICs9IGR1bXBfc25hcCh0cmFjZSwgbnNuYXAsIHNuYXAp Cj4gKyBuc25hcCArPSAxCj4gKyBzbmFwID0gdHJhY2VbJ3NuYXAnXVtuc25hcF0KPiArIHNuYXBy ZWYgPSBzbmFwWydyZWYnXQo+ICsgZHVtcCArPSAnezowNGR9ICcuZm9ybWF0KGlybnVtKQo+ICsg aWYgJ3InIGluIGZsYWdzOgo+ICsgZHVtcCArPSAnezo+N30nLmZvcm1hdChkdW1wX3JlZ3NwKHRy YWNlWydpciddW2lycmVmXSwgaXJudW0pKQo+ICsgZHVtcCArPSBkdW1wX2lyaW5zKHRyYWNlWydp ciddW2lycmVmXSwgdHJhY2UpCj4gKyByZXR1cm4gZHVtcAo+ICsKPiArCj4gK2RlZiBkdW1wX3Ry ZWYodHJlZik6Cj4gKyByZXR1cm4gJ1t7Rn17Q31dIHt0cH0ge3JlZjojeH0nLmZvcm1hdCgKPiAr IEY9J0YnIGlmIHRyZWYgJiBUUkVGX0ZSQU1FIGVsc2UgJyAnLAo+ICsgQz0nQycgaWYgdHJlZiAm IFRSRUZfQ09OVCBlbHNlICcgJywKPiArIHRwPUlSVFlQRVNbdHJlZl90eXBlKHRyZWYpXSwKPiAr IHJlZj10cmVmX3JlZih0cmVmKQo+ICsgKQo+ICsKPiArCj4gK2RlZiBkdW1wX2pzbG90cyhjb3Jv dXRpbmUpOgo+ICsgbHN0YXRlID0gTChOb25lKQo+ICsgZyA9IEcobHN0YXRlIG9yIGNvcm91dGlu ZSkKPiArIGogPSBKKGcpCj4gKwo+ICsgZHVtcCA9ICcnCj4gKyBtYXhzbG90ID0galsnYmFzZXNs b3QnXSArIGpbJ21heHNsb3QnXQo+ICsgZmlyc3RfYmFzZV9zbG90ID0gMSArIExKX0ZSMgo+ICsg Zm9yIG4gaW4gcmV2ZXJzZWQocmFuZ2UoZmlyc3RfYmFzZV9zbG90LCBtYXhzbG90KSk6Cj4gKyB0 cmVmID0galsnc2xvdCddW25dCj4gKyByZWYgPSB0cmVmX3JlZih0cmVmKQo+ICsgYWRkcmVzcyA9 IGRiZy5hZGRyZXNzKHRyZWYpCj4gKyBkdW1wICs9ICd7YWRkcn0ge25zbG90OjA0ZH0ge2Jhc2U6 MXN9IHt0cmVmfXtjb25zdH1cbicuZm9ybWF0KAo+ICsgYWRkcj1hZGRyZXNzLAo+ICsgYmFzZT0n QicgaWYgYWRkcmVzcyA9PSBqWydiYXNlJ10gZWxzZSAnICcsCj4gKyBuc2xvdD1uLAo+ICsgdHJl Zj1kdW1wX3RyZWYodHJlZiksCj4gKyBjb25zdD0nICcgKyBkdW1wX2lyayhqWydjdXInXSwgcmVm IC0gUkVGX0JJQVMpCj4gKyBpZiByZWYgIT0gMCBhbmQgcmVmIDwgUkVGX0JJQVMgZWxzZSAnJwo+ ICsgKQo+ICsgcmV0dXJuIGR1bXAKPiArCj4gKwo+ICMgRXh0ZW5zaW9uIGNvbW1hbmRzLiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+IAo+IAo+IEBAIC0xNjAw LDYgKzI3MzMsNDIgQEAgZXJyb3IgbWVzc2FnZSBvY2N1cnMuCj4gZGJnLndyaXRlKCd7fVxuJy5m b3JtYXQoZHVtcF9nY29iaihnY29iaikpKQo+IAo+IAo+ICtjbGFzcyBMSkR1bXBJUihkYmcuTEpC YXNlKToKPiArICcnJwo+ICtsai1pciA8SVJJbnMgKj4KPiArCj4gK1RoZSBjb21tYW5kIHJlY2Vp dmVzIGEgcG9pbnRlciB0byA8aXI+IChJUklucyBhZGRyZXNzKSBhbmQgZHVtcHMKPiArdGhlIElS IHR5cGUgYW5kIHNvbWUgaW5mbyByZWxhdGVkIHRvIGl0LiBUaGUgZm9ybWF0IGlzIHNpbWlsYXIg dG8KPiArdGhlIGBqaXQuZHVtcGAgdG9vbCBidXQgYWxzbyBwcm92aWRlcyBpbmZvcm1hdGlvbiBh Ym91dCBJUiBtb2RlIGFuZAo+ICtvcGVyYW5kcyBtb2Rlcy4KPiArCj4gK0ZvciB0aGUgbGlzdCBv ZiBJUiBuYW1lcyBhbmQgbW9kZXMgKG9wZXJhbmQgdHlwZXMpLCBzZWU6Cj4gKyBodHRwczovL2dp dGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC93aWtpL0x1YUpJVC1TU0EtSVIuCj4gKyAnJycK PiArCj4gKyBkZWYgZXhlY3V0ZShzZWxmLCBhcmcpOgo+ICsgZGJnLndyaXRlKCd7fScuZm9ybWF0 KGR1bXBfaXJpbnMoZGJnLmNhc3QoJ0lSSW5zIConLCBkYmcuZXZhbChhcmcpKSkpKQo+ICsKPiAr Cj4gK2NsYXNzIExKRHVtcEpTbG90cyhkYmcuTEpCYXNlKToKPiArICcnJwo+ICtsai1qc2xvdHMg WzxsdWFfU3RhdGUgKj5dCj4gKwo+ICtUaGUgY29tbWFuZCByZWNlaXZlcyBhbiBvcHRpb25hbCBs dWFfU3RhdGUgYWRkcmVzcyBhbmQgZHVtcHMgdGhlCj4gK3Nsb3RzIG9mIEpJVCBzdGFjayBtYXA6 Cj4gKwo+ICs8c2xvdCBwdHI+IDxzbG90IG51bWJlcj4gWzxGUkFNRXxDT05USU5VQVRJT04+XSA8 SVIgcmVmZXJlbmNlPgo+ICsKPiArVGhlIGx1YV9TdGF0ZSBwb2ludGVyIGlzIG9wdGlvbmFsIHRv IGhlbHAgaW4gZmluZGluZyB0aGUgVk0ncyBKSVQgc3RhdGUKPiArd2hlbiB0aGVyZSBpcyBubyBj b3JvdXRpbmUgdG8gYmUgaW5zcGVjdGVkIGluIHRoZSBkZWJ1Z2dlZCBmcmFtZS4KPiArICcnJwo+ ICsKPiArIGRlZiBleGVjdXRlKHNlbGYsIGFyZyk6Cj4gKyBkYmcud3JpdGUoJ3t9Jy5mb3JtYXQo Cj4gKyBkdW1wX2pzbG90cyhkYmcuY2FzdCgnbHVhX1N0YXRlIConLCBkYmcuZXZhbChhcmcpKSkK PiArICkpCj4gKwo+ICsKPiBjbGFzcyBMSkR1bXBQcm90byhkYmcuTEpCYXNlKToKPiAnJycKPiBs ai1wcm90byA8R0Nwcm90byAqPgo+IEBAIC0xNzg0LDE5ICsyOTUzLDQ0IEBAIGVycm9yIG1lc3Nh Z2Ugb2NjdXJzLgo+IGRiZy53cml0ZSgne31cbicuZm9ybWF0KGR1bXBfdHZhbHVlKHR2KSkpCj4g Cj4gCj4gK2NsYXNzIExKRHVtcFRyYWNlKGRiZy5MSkJhc2UpOgo+ICsgJycnCj4gK2xqLXRyYWNl IFsvRkxBR1NdIDxHQ3RyYWNlICo+Cj4gKwo+ICtUaGUgY29tbWFuZCByZWNlaXZlcyBhIHBvaW50 ZXIgdG8gPHRyYWNlPiAoSVJJbnMgYWRkcmVzcykgYW5kIGR1bXBzCj4gK2l0cyBudW1iZXIsIElS cywgYW5kIGluZm9ybWF0aW9uIGFib3V0IHN0YXJ0IGxvY2F0aW9uLiBUaGUgZm9ybWF0IGlzCj4g K3NpbWlsYXIgdG8gdGhlIGBqaXQuZHVtcGAgdG9vbCBidXQgYWxzbyBwcm92aWRlcyBpbmZvcm1h dGlvbiBhYm91dAo+ICtJUiBtb2RlIGFuZCBvcGVyYW5kcyBtb2Rlcy4KPiArCj4gK1RyYWNlIG1h eSBiZSBwcmVjZWRlZCB3aXRoIC9GTEFHUzoKPiArKiByOiBEdW1wIHJlZ2lzdGVycyBhc3NvY2lh dGVkIHdpdGggSVIsIGlmIGFueS4KPiArKiBzOiBEdW1wIHNuYXBzaG90cyBmb3IgdGhlIHRyYWNl Lgo+ICsgJycnCj4gKwo+ICsgZGVmIGV4ZWN1dGUoc2VsZiwgYXJnKToKPiArIGFyZywgZmxhZ3Mg PSBkYmcuZXh0cmFjdF9mbGFncyhhcmcsICdycycpCj4gKyBkYmcud3JpdGUoJ3t9Jy5mb3JtYXQo ZHVtcF90cmFjZSgKPiArIGRiZy5jYXN0KCdHQ3RyYWNlIConLCBkYmcuZXZhbChhcmcpKSwKPiAr IGZsYWdzCj4gKyApKSkKPiArCj4gKwo+IGRlZiBsb2FkKGV2ZW50PU5vbmUpOgo+IGRiZy5pbml0 aWFsaXplX2V4dGVuc2lvbih7Cj4gLSAnbGotYXJjaCc6IExKRHVtcEFyY2gsCj4gLSAnbGotYmMn OiBMSkR1bXBCQywKPiAtICdsai1mdW5jJzogTEpEdW1wRnVuYywKPiAtICdsai1nYyc6IExKR0Ms Cj4gLSAnbGotZ2NvJzogTEpEdW1wR0NvYmosCj4gLSAnbGotcHJvdG8nOiBMSkR1bXBQcm90bywK PiAtICdsai1zdGFjayc6IExKRHVtcFN0YWNrLAo+IC0gJ2xqLXN0YXRlJzogTEpTdGF0ZSwKPiAt ICdsai1zdHInOiBMSkR1bXBTdHJpbmcsCj4gLSAnbGotdGFiJzogTEpEdW1wVGFibGUsCj4gLSAn bGotdHYnOiBMSkR1bXBUVmFsdWUsCj4gKyAnbGotYXJjaCc6IExKRHVtcEFyY2gsCj4gKyAnbGot YmMnOiBMSkR1bXBCQywKPiArICdsai1mdW5jJzogTEpEdW1wRnVuYywKPiArICdsai1nYyc6IExK R0MsCj4gKyAnbGotZ2NvJzogTEpEdW1wR0NvYmosCj4gKyAnbGotaXInOiBMSkR1bXBJUiwKPiAr ICdsai1qc2xvdHMnOiBMSkR1bXBKU2xvdHMsCj4gKyAnbGotcHJvdG8nOiBMSkR1bXBQcm90bywK PiArICdsai1zdGFjayc6IExKRHVtcFN0YWNrLAo+ICsgJ2xqLXN0YXRlJzogTEpTdGF0ZSwKPiAr ICdsai1zdHInOiBMSkR1bXBTdHJpbmcsCj4gKyAnbGotdGFiJzogTEpEdW1wVGFibGUsCj4gKyAn bGotdHJhY2UnOiBMSkR1bXBUcmFjZSwKPiArICdsai10dic6IExKRHVtcFRWYWx1ZSwKPiB9KQo+ IAo+IAo+IGRpZmYgLS1naXQgYS90ZXN0L3RhcmFudG9vbC1kZWJ1Z2dlci10ZXN0cy9kZWJ1Zy1l eHRlbnNpb24tdGVzdHMucHkKPiBiL3Rlc3QvdGFyYW50b29sLWRlYnVnZ2VyLXRlc3RzL2RlYnVn LWV4dGVuc2lvbi10ZXN0cy5weQo+IGluZGV4IDdlOGVhNWEyLi43NjU0M2RhYSAxMDA2NDQKPiAt LS0gYS90ZXN0L3RhcmFudG9vbC1kZWJ1Z2dlci10ZXN0cy9kZWJ1Zy1leHRlbnNpb24tdGVzdHMu cHkKPiArKysgYi90ZXN0L3RhcmFudG9vbC1kZWJ1Z2dlci10ZXN0cy9kZWJ1Zy1leHRlbnNpb24t dGVzdHMucHkKPiBAQCAtNDYsNyArNDYsOSBAQCBlbHNlOgo+IFJYX0FERFIgPSByJzB4W2EtZjAt OV0rJwo+IFJYX0hBU0ggPSBSWF9BRERSICMgVGhlIHNhbWUgcGF0dGVybiBmb3IgaGV4YWRlbWlj IHZhbHVlcy4KPiBSWF9CQ04gPSByJzAwXGRcZCcKPiArUlhfSVJOID0gUlhfQkNOICMgVGhlIHNh bWUgYXMgZm9yIHRoZSBieXRlY29kZXMuCj4gUlhfRlJBTUUgPSByJ1xbKFN8XHMpKEJ8XHMpKFR8 XHMpKE18XHMpXF0nCj4gK1JYX0lSUkVGID0gcicweFxkXGRcZFxkJwo+IAo+IAo+IGRlZiBwZXJz aXN0KGRhdGEpOgo+IEBAIC0xMDEsNiArMTAzLDkgQEAgSVNfR0M2NCA9IGV4ZWN1dGVfcHJvY2Vz cyhbCj4gTFVBSklUX0JJTkFSWSwgJy1lJywgInByaW50KHJlcXVpcmUoJ2ZmaScpLmFiaSgnZ2M2 NCcpKSIKPiBdKS5zdHJpcCgpID09ICd0cnVlJwo+IAo+ICsjIFJlZ2V4cCBmb3IgcG9pbnRlciB0 eXBlIGluIElSLgo+ICtSWF9QID0gJ3A2NCcgaWYgSVNfR0M2NCBlbHNlICdwMzInCj4gKwo+ICMg SWYgaXQgaXMgdGhlIGd1YXJhbnRlZWQgRFVBTE5VTSBidWlsZCAoZm9yIGV4YW1wbGUsIG9uIGFh cmNoNjQpLAo+ICMgd2UgdXNlIHRoaXMgcmVnZXhwIGZvciB0aGUgZ3VhcmFudGVlZCAnaW50ZWdl cicgY2hlY2sgYW5kCj4gIyAnbnVtYmVyJyBmb3Igc2luZ2xlLW51bWJlciBidWlsZC4KPiBAQCAt MTA4LDYgKzExMywxOCBAQCBSWF9JTlQgPSByJ2ludGVnZXInIGlmIElTX0RVQUxOVU0gZWxzZSBy J251bWJlcicKPiBSWF9JU0RVQUxOVU0gPSByJ1RydWUnIGlmIElTX0RVQUxOVU0gZWxzZSByJ0Zh bHNlJwo+IAo+IAo+ICsjIEFzc3VtZSBub3QgY3Jvc3MtcGxhdGZvcm0gZGVidWdnaW5nLgo+ICtt YWNoaW5lID0gb3MudW5hbWUoKS5tYWNoaW5lCj4gK2lmIG1hY2hpbmUgPT0gJ3g4Nl82NCc6Cj4g KyBSWF9HUFIgPSByJ3Jcd1x3Jwo+ICsgUlhfRlBSID0gcid4bW1cZCsnCj4gK2VsaWYgbWFjaGlu ZSA9PSAnYXJtNjQnIG9yIG1hY2hpbmUgPT0gJ2FhcmNoNjQnOgo+ICsgUlhfR1BSID0gcid4XGQr Jwo+ICsgUlhfRlBSID0gcidkXGQrJwo+ICtlbHNlOgo+ICsgcmFpc2UgRXhjZXB0aW9uKCdVbmtu b3duIGFyY2hldGljdHVyZSBpbiB0ZXN0aW5nJykKPiArCj4gKwo+IGNsYXNzIFRlc3RDYXNlQmFz ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Cj4gQGNsYXNzbWV0aG9kCj4gZGVmIGNvbnN0cnVjdF9jbWRz KGNscyk6Cj4gQEAgLTE5Myw2ICsyMTAsMTYgQEAgZGVmIG1yZWYoYXJnLCB0cCk6Cj4gcmV0dXJu ICcoKCcgKyB0cCArICcqKSgnICsgYXJnICsgJykucHRyMzIpJwo+IAo+IAo+ICtkZWYgZ2NyZWYo YXJnKToKPiArIGlmIFNVUFBPUlRfTUFDUk9fRVhQQU5EOgo+ICsgcmV0dXJuICdnY3JlZignICsg YXJnICsgJyknCj4gKyBlbHNlOgo+ICsgaWYgSVNfR0M2NDoKPiArIHJldHVybiAnKCcgKyBhcmcg KyAnKS5nY3B0cjY0Jwo+ICsgZWxzZToKPiArIHJldHVybiAnKCcgKyBhcmcgKyAnKS5nY3B0cjMy Jwo+ICsKPiArCj4gY2xhc3MgVGVzdExvYWQoVGVzdENhc2VCYXNlKToKPiBleHRlbnNpb25fY21k cyA9ICcnCj4gbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnCj4gQEAgLTIwMywxMSArMjMwLDE0IEBA IGNsYXNzIFRlc3RMb2FkKFRlc3RDYXNlQmFzZSk6Cj4gcidsai1mdW5jIGNvbW1hbmQgaW5pdGlh bGl6ZWRcbicKPiByJ2xqLWdjIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbicKPiByJ2xqLWdjbyBjb21t YW5kIGluaXRpYWxpemVkXG4nCj4gKyByJ2xqLWlyIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbicKPiAr IHInbGotanNsb3RzIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbicKPiByJ2xqLXByb3RvIGNvbW1hbmQg aW5pdGlhbGl6ZWRcbicKPiByJ2xqLXN0YWNrIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbicKPiByJ2xq LXN0YXRlIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbicKPiByJ2xqLXN0ciBjb21tYW5kIGluaXRpYWxp emVkXG4nCj4gcidsai10YWIgY29tbWFuZCBpbml0aWFsaXplZFxuJwo+ICsgcidsai10cmFjZSBj b21tYW5kIGluaXRpYWxpemVkXG4nCj4gcidsai10diBjb21tYW5kIGluaXRpYWxpemVkXG4nCj4g cidMdWFKSVQgZGVidWcgZXh0ZW5zaW9uIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQnCj4gKQo+IEBA IC00NzMsNiArNTAzLDM0MSBAQCBjbGFzcyBUZXN0TEpCQyhUZXN0Q2FzZUJhc2UpOgo+ICkKPiAK PiAKPiArIyBKSVQgZW5naW5lLgo+ICsKPiArCj4gK2NsYXNzIFRlc3RMSlRyYWNlQmFzZShUZXN0 Q2FzZUJhc2UpOgo+ICsgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnCj4gKyBleHRlbnNpb25fY21k cyA9ICgKPiArICduXG4nICMgTG9hZCBMLgo+ICsgJ2xqLXRyYWNlICcgKyBnY3JlZignKChHR19T dGF0ZSAqKUwpLT5KLT50cmFjZVsxXScpCj4gKyApCj4gKyBsdWFfc2NyaXB0ID0gKAo+ICsgJ2pp dC5vcHQuc3RhcnQoImhvdGxvb3A9MSIpXG4nCj4gKyAnZm9yIF8gPSAxLCA0IGRvIGVuZFxuJwo+ ICsgJ3ByaW50KClcbicKPiArICkKPiArIHBhdHRlcm4gPSAoCj4gKyByJ1RyYWNlIDEgc3RhcnRc bicKPiArIHInXHQqcHJvdG86ICcgKyBSWF9BRERSICsgcidcbicgKwo+ICsgcidcdCpCQzogJyAr IFJYX0FERFIgKyByJ1xuJyArCj4gKyByJy0tLS0gVFJBQ0UgSVJcbicgKwo+ICsgUlhfSVJOICsg cidccysgaW50IFNMT0FEIFxbTiBcXSBsaXQ6ICNbMTJdIGxpdDogQz9JXG4nICsKPiArIFJYX0lS TiArIHInXHMrIFwrIGludCBBREQgXFtDIFxdIHJlZjogJyArIFJYX0lSTiArCj4gKyByJyByZWY6 IGludGVnZXIgMVxuJyArCj4gKyBSWF9JUk4gKyByJ1xzKyA+IGludCBMRSBcW04gXF0gcmVmOiAn ICsgUlhfSVJOICsKPiArIHInIHJlZjogaW50ZWdlciA0XG4nICsKPiArIFJYX0lSTiArIHInXHMr ID4gLS0tIExPT1AgXFtOIFxdXHMqXG4nICsKPiArIFJYX0lSTiArIHInXHMrIFwrIGludCBBREQg XFtDIFxdIHJlZjogJyArIFJYX0lSTiArCj4gKyByJyByZWY6IGludGVnZXIgMVxuJyArCj4gKyBS WF9JUk4gKyByJ1xzKyA+IGludCBMRSBcW04gXF0gcmVmOiAnICsgUlhfSVJOICsKPiArIHInIHJl ZjogaW50ZWdlciA0XG4nICsKPiArIFJYX0lSTiArIHInXHMrIGludCBQSEkgXFtTIFxdIHJlZjog JyArIFJYX0lSTiArIHInIHJlZjogJyArCj4gKyBSWF9JUk4gKyByJ1xuJyArCj4gKyBSWF9JUk4g KyByJ1xzKyBOT1AgXFtOIFxdXHMqXG4nCj4gKyApCj4gKwo+ICsKPiArIyBDaGVjayB0aGUgSVIg ZW51bWVyYXRpb24gY29ycmVjbmVzcyBieSB0ZXN0IHRoZSBsb3dlc3QgKExUKSBhbmQKPiArIyB0 aGUgaGlnaGVzdCAoQ0FSRykgSVJzLiBBbHNvLCBjaGVja3MgQ0FMTCogb2NjYXNpb25hbGx5Lgo+ ICtjbGFzcyBUZXN0TEpUcmFjZUlSUmFuZ2UoVGVzdENhc2VCYXNlKToKPiArIGxvY2F0aW9uID0g J2xqX2NmX3ByaW50Jwo+ICsgZXh0ZW5zaW9uX2NtZHMgPSAoCj4gKyAnblxuJyAjIExvYWQgTC4K PiArICdsai10cmFjZSAnICsgZ2NyZWYoJygoR0dfU3RhdGUgKilMKS0+Si0+dHJhY2VbMV0nKQo+ ICsgKQo+ICsgbHVhX3NjcmlwdCA9ICgKPiArICdsb2NhbCBmZmkgPSByZXF1aXJlKCJmZmkiKVxu Jwo+ICsgJ2ZmaS5jZGVmW1tpbnQgZ2V0cGlkKGludCwgaW50KTtdXVxuJyAjIFVzZSBhcmd1bWVu dCBmb3IgdGVzdGluZy4KPiArICdqaXQub3B0LnN0YXJ0KCJob3Rsb29wPTEiKVxuJwo+ICsgJ2Zv ciBpID0gMSwgNCBkb1xuJwo+ICsgJyBpZiBpIDwgMTAwIHRoZW5cbicgIyBMVC4KPiArICcgZmZp LkMuZ2V0cGlkKGksIDFMTClcbicgIyBDQVJHIGFuZCBDQUxMWFMuCj4gKyAnIGVuZFxuJwo+ICsg J2VuZFxuJwo+ICsgJ3ByaW50KClcbicKPiArICkKPiArICMgSVJzIGZyb20gdmFyaWFudCBwYXJ0 IG9mIHRoZSB0cmFjZS4KPiArIHBhdHRlcm4gPSAoCj4gKyBSWF9JUk4gKyByJ1xzKyA+IGludCBM VCBcW04gXF0gcmVmOiAnICsKPiArIFJYX0lSTiArIHInIHJlZjogaW50ZWdlciAxMDBcbicgKwo+ ICsgUlhfSVJOICsgcidccysgbmlsIENBUkcgXFtOIFxdIHJlZjogJyArCj4gKyBSWF9JUk4gKyBy JyByZWY6IGludGVnZXIgMVxuJyArCj4gKyBSWF9JUk4gKyByJ1xzKyBpbnQgQ0FMTFhTIFxbUyBc XSBcWycgKyBSWF9BRERSICsKPiArIHInXF1cKFx7JyArIFJYX0lSTiArIHInXH0sIFx7aW50ZWdl ciAxXH1cKScKPiArICkKPiArCj4gKwo+ICsjIFRlc3QgL3JzIGZsYWdzLgo+ICtjbGFzcyBUZXN0 TEpUcmFjZUZsYWdzKFRlc3RDYXNlQmFzZSk6Cj4gKyBsb2NhdGlvbiA9ICdsal9jZl9wcmludCcK PiArIGV4dGVuc2lvbl9jbWRzID0gKAo+ICsgJ25cbicgIyBMb2FkIEwuCj4gKyAnbGotdHJhY2Ug L3JzICcgKyBnY3JlZignKChHR19TdGF0ZSAqKUwpLT5KLT50cmFjZVsxXScpCj4gKyApCj4gKyBs dWFfc2NyaXB0ID0gKAo+ICsgJ2ppdC5vcHQuc3RhcnQoImhvdGxvb3A9MSIpXG4nCj4gKyAnbG9j YWwgciA9IDAuMVxuJwo+ICsgJ2ZvciBpID0gMSwgNCBkb1xuJwo+ICsgJyByID0gaSArIHJcbicK PiArICdlbmRcbicKPiArICdwcmludCgpXG4nCj4gKyApCj4gKyAjIElScyBhbmQgc25hcHNob3Qg ZnJvbSB2YXJpYW50IHBhcnQgb2YgdGhlIHRyYWNlLgo+ICsgcGF0dGVybiA9ICgKPiArIFJYX0lS TiArIHInXHMrJyArIFJYX0ZQUiArIHInXHMqIFwrIG51bSBBREQuKlxuJyArCj4gKyBSWF9JUk4g KyByJ1xzKycgKyBSWF9HUFIgKyByJ1xzKiBcKyBpbnQgQURELipcbicgKwo+ICsgcidcLlwuXC5c LlxzKiBTTkFQICNcZCBcWyAoLS0tLSApKicgKyBSWF9JUk4gKyByJyBcXScKPiArICkKPiArCj4g Kwo+ICtjbGFzcyBUZXN0TEpJUkNvbnN0KFRlc3RDYXNlQmFzZSk6Cj4gKyBsb2NhdGlvbiA9ICd0 cmFjZV9zdG9wJwo+ICsKPiArICMgTm8gbmFycm93aW5nIG9mIDQyLgo+ICsgaWYgSVNfRFVBTE5V TToKPiArICMgS05VTSBvY2N1cGllcyAyIHNsb3RzLgo+ICsgX2tudW1faXJudW0gPSAnNicKPiAr IF9rZ2NfaXJudW0gPSAnOCcgaWYgSVNfR0M2NCBlbHNlICc3Jwo+ICsgX2twdHJfaXJudW0gPSAn MTAnIGlmIElTX0dDNjQgZWxzZSAnOCcKPiArIGVsc2U6Cj4gKyAjIEtOVU0gb2NjdXBpZXMgMiBz bG90cy4KPiArIF9rbnVtX2lybnVtID0gJzgnCj4gKyBfa2djX2lybnVtID0gJzEwJyBpZiBJU19H QzY0IGVsc2UgJzknCj4gKyBfa3B0cl9pcm51bSA9ICcxMicgaWYgSVNfR0M2NCBlbHNlICcxMCcK PiArIGV4dGVuc2lvbl9jbWRzID0gKAo+ICsgJ25cbicgIyBMb2FkIEouCj4gKyAnbGotaXIgJkot PmN1ci5pclsweDgwMDAgLSAwXVxuJwo+ICsgJ2xqLWlyICZKLT5jdXIuaXJbMHg4MDAwIC0gMV1c bicKPiArICdsai1pciAmSi0+Y3VyLmlyWzB4ODAwMCAtIDJdXG4nCj4gKyAnbGotaXIgJkotPmN1 ci5pclsweDgwMDAgLSAzXVxuJwo+ICsgJ2xqLWlyICZKLT5jdXIuaXJbMHg4MDAwIC0gNF1cbicK PiArICMgU2tpcCBub24tRFVBTE5VTSBuYXJyb3dlZCB2YWx1ZS4KPiArICdsai1pciAmSi0+Y3Vy LmlyWzB4ODAwMCAtICcgKyBfa251bV9pcm51bSArICddXG4nCj4gKyAnbGotaXIgJkotPmN1ci5p clsweDgwMDAgLSAnICsgX2tnY19pcm51bSArICddXG4nCj4gKyAnbGotaXIgJkotPmN1ci5pclsw eDgwMDAgLSAnICsgX2twdHJfaXJudW0gKyAnXVxuJwo+ICsgKQo+ICsgbHVhX3NjcmlwdCA9ICgK PiArICdqaXQub3B0LnN0YXJ0KCJob3Rsb29wPTEiKVxuJwo+ICsgJ2xvY2FsIGZ1bmN0aW9uIHRy YWNlKHgpXG4nCj4gKyAnIHJldHVybiB4ICsgNDIsIHggKyAwLjUsIHggLi4gIjEiXG4nCj4gKyAn ZW5kXG4nCj4gKyAndHJhY2UoMSlcbicKPiArICd0cmFjZSgxKVxuJwo+ICsgKQo+ICsgcGF0dGVy biA9ICgKPiArIFJYX1AgKyByJyBCQVNFLipcbicgKwo+ICsgcidccyogbmlsIEtQUkkuKlxuJwo+ ICsgcidccyogZmFsIEtQUkkuKlxuJwo+ICsgcidccyogdHJ1IEtQUkkuKlxuJwo+ICsgcidccyog aW50IEtJTlQuKmNzdDogaW50ZWdlciA0MlxzKlxuJwo+ICsgcidccyogbnVtIEtOVU0uKmNzdDog bnVtYmVyIDAuNVxzKlxuJwo+ICsgcidccyogc3RyIEtHQy4qY3N0OiBzdHJpbmcgIjEiLipcbicg Kwo+ICsgcidccyonICsgUlhfUCArIHInIEtQVFIuKmNzdDogXFsnICsgUlhfQUREUiArIHInXF0n Cj4gKyApCj4gKwo+ICsKPiArY2xhc3MgVGVzdExKSVJGbG9hZE5lZyhUZXN0Q2FzZUJhc2UpOgo+ ICsgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnCj4gKyBleHRlbnNpb25fY21kcyA9ICgKPiArICdu XG4nICMgTG9hZCBMLgo+ICsgJ2xqLXRyYWNlICcgKyBnY3JlZignKChHR19TdGF0ZSAqKUwpLT5K LT50cmFjZVsxXScpCj4gKyApCj4gKyBsdWFfc2NyaXB0ID0gKAo+ICsgJ2ppdC5vcHQuc3RhcnQo ImhvdGxvb3A9MSIpXG4nCj4gKyAnbG9jYWwgZnVuY3Rpb24gdHJhY2UoYSlcbicKPiArICcgbG9j YWwgeCA9IC1hXG4nCj4gKyAnIHJldHVybiB4XG4nCj4gKyAnZW5kXG4nCj4gKyAndHJhY2UoMS4x KVxuJwo+ICsgJ3RyYWNlKDEuMSlcbicKPiArICdwcmludCgpXG4nCj4gKyApCj4gKyBwYXR0ZXJu ID0gKAo+ICsgcidudW0gRkxPQUQgLiogcmVmOiBuaWwgbGl0OiBvZmZzZXRvZlwoR0csIEpcLmtz aW1kXFtMSl9LU0lNRF9ORUdcXVwpJwo+ICsgKQo+ICsKPiArCj4gK2NsYXNzIFRlc3RMSklSRmxv YWRBYnMoVGVzdENhc2VCYXNlKToKPiArIGxvY2F0aW9uID0gJ2xqX2NmX3ByaW50Jwo+ICsgZXh0 ZW5zaW9uX2NtZHMgPSAoCj4gKyAnblxuJyAjIExvYWQgTC4KPiArICdsai10cmFjZSAnICsgZ2Ny ZWYoJygoR0dfU3RhdGUgKilMKS0+Si0+dHJhY2VbMV0nKQo+ICsgKQo+ICsgbHVhX3NjcmlwdCA9 ICgKPiArICdqaXQub3B0LnN0YXJ0KCJob3Rsb29wPTEiKVxuJwo+ICsgJ2xvY2FsIG1hdGhfYWJz ID0gbWF0aC5hYnNcbicKPiArICdsb2NhbCBmdW5jdGlvbiB0cmFjZShhKVxuJwo+ICsgJyBsb2Nh bCB4ID0gbWF0aF9hYnMoYSlcbicKPiArICcgcmV0dXJuIHhcbicKPiArICdlbmRcbicKPiArICd0 cmFjZSgxKVxuJwo+ICsgJ3RyYWNlKDEpXG4nCj4gKyAncHJpbnQoKVxuJwo+ICsgKQo+ICsgcGF0 dGVybiA9ICgKPiArIHInbnVtIEZMT0FEIC4qIHJlZjogbmlsIGxpdDogb2Zmc2V0b2ZcKEdHLCBK XC5rc2ltZFxbTEpfS1NJTURfQUJTXF1cKScKPiArICkKPiArCj4gKwo+ICsjIFhYWDogSW1wbGVt ZW50ZWQgb25seSBmb3IgR0M2NCBpbiBMdWFKSVQgdW50aWwgYmFja3BvcnRpbmcgdGhlCj4gKyMg Y29ycmVzcG9uZGluZyBjb21taXQuCj4gK2lmIElTX0dDNjQ6Cj4gKyBjbGFzcyBUZXN0TEpJUkZs b2FkR0NSb290QmFzZU1UKFRlc3RDYXNlQmFzZSk6Cj4gKyBsb2NhdGlvbiA9ICdsal9jZl9wcmlu dCcKPiArIGV4dGVuc2lvbl9jbWRzID0gKAo+ICsgJ25cbicgIyBMb2FkIEwuCj4gKyAnbGotdHJh Y2UgJyArIGdjcmVmKCcoKEdHX1N0YXRlICopTCktPkotPnRyYWNlWzFdJykKPiArICkKPiArIGx1 YV9zY3JpcHQgPSAoCj4gKyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbicKPiArICdsb2Nh bCBmdW5jdGlvbiB0cmFjZShhKVxuJwo+ICsgJ2xvY2FsIHggPSBhLnN1YigxLCAyKVxuJwo+ICsg JyByZXR1cm4geFxuJwo+ICsgJ2VuZFxuJwo+ICsgJ3RyYWNlKCIxMiIpXG4nCj4gKyAndHJhY2Uo IjEyIilcbicKPiArICdwcmludCgpXG4nCj4gKyApCj4gKyBwYXR0ZXJuID0gKAo+ICsgcid0YWIg RkxPQUQgLiogcmVmOiBuaWwgbGl0OiAnCj4gKyByJ29mZnNldG9mXChHRywgZ1wuZ2Nyb290XFtH Q1JPT1RfQkFTRU1UX1NUUlxdXC5nY3B0cjY0XCknCj4gKyApCj4gKwo+ICsgY2xhc3MgVGVzdExK SVJGbG9hZEdDUm9vdElPKFRlc3RDYXNlQmFzZSk6Cj4gKyBsb2NhdGlvbiA9ICdsal9jZl9wcmlu dCcKPiArIGV4dGVuc2lvbl9jbWRzID0gKAo+ICsgJ25cbicgIyBMb2FkIEwuCj4gKyAnbGotdHJh Y2UgJyArIGdjcmVmKCcoKEdHX1N0YXRlICopTCktPkotPnRyYWNlWzFdJykKPiArICkKPiArIGx1 YV9zY3JpcHQgPSAoCj4gKyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbicKPiArICdsb2Nh bCBpb19mbHVzaCA9IGlvLmZsdXNoXG4nCj4gKyAnbG9jYWwgZnVuY3Rpb24gdHJhY2UoKVxuJwo+ ICsgJyBpb19mbHVzaCgpXG4nCj4gKyAnZW5kXG4nCj4gKyAndHJhY2UoKVxuJwo+ICsgJ3RyYWNl KClcbicKPiArICdwcmludCgpXG4nCj4gKyApCj4gKyBwYXR0ZXJuID0gKAo+ICsgcid1ZHQgRkxP QUQgLiogcmVmOiBuaWwgbGl0OiAnCj4gKyByJ29mZnNldG9mXChHRywgZ1wuZ2Nyb290XFtHQ1JP T1RfSU9fT1VUUFVUXF1cLmdjcHRyNjRcKScKPiArICkKPiArCj4gKwo+ICsjIFNvbWUgSVJzIHJl bGF0ZWQgdG8gdGFibGVzLgo+ICtjbGFzcyBUZXN0TEpJUlRhYmxlKFRlc3RDYXNlQmFzZSk6Cj4g KyBsb2NhdGlvbiA9ICdsal9jZl9wcmludCcKPiArIGV4dGVuc2lvbl9jbWRzID0gKAo+ICsgJ25c bicgIyBMb2FkIEwuCj4gKyAnbGotdHJhY2UgJyArIGdjcmVmKCcoKEdHX1N0YXRlICopTCktPkot PnRyYWNlWzFdJykKPiArICkKPiArIGx1YV9zY3JpcHQgPSAoCj4gKyAnaml0Lm9wdC5zdGFydCgi aG90bG9vcD0xIilcbicKPiArICdsb2NhbCBmdW5jdGlvbiB0cmFjZSh0KVxuJwo+ICsgJyB0LmEg PSBuaWxcbicKPiArICcgdC5iID0gMVxuJwo+ICsgJyByZXR1cm4gdFxuJwo+ICsgJ2VuZFxuJwo+ ICsgJ3RyYWNlKHthID0gMX0pXG4nCj4gKyAndHJhY2Uoe2EgPSAxfSlcbicKPiArICdwcmludCgp XG4nCj4gKyApCj4gKyBwYXR0ZXJuID0gKAo+ICsgcicoP3MpaW50IEZMT0FEIC4qIHRhYlwuaG1h c2tcbicKPiArIHInLionICsgUlhfUCArIHInIEZMT0FEIC4qIHRhYlwubm9kZVxuJwo+ICsgcicu KicgKyBSWF9QICsgcicgSFJFRksgLiogc3RyaW5nICJhIiBAICcgKyBSWF9BRERSICsKPiArIHIn IEtTTE9UOiBAXGRcbicKPiArIHInLionICsgUlhfUCArIHInIEhSRUYgLiogc3RyaW5nICJiIiBA ICcgKyBSWF9BRERSICsgcidccypcbicKPiArIHInLionICsgUlhfUCArIHInIEVRIC4qIFxbZy0+ bmlsbm9kZVxdJwo+ICsgKQo+ICsKPiArCj4gK2NsYXNzIFRlc3RMSklSVXJlZihUZXN0Q2FzZUJh c2UpOgo+ICsgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnCj4gKyBleHRlbnNpb25fY21kcyA9ICgK PiArICduXG4nICMgTG9hZCBMLgo+ICsgJ2xqLXRyYWNlICcgKyBnY3JlZignKChHR19TdGF0ZSAq KUwpLT5KLT50cmFjZVsxXScpCj4gKyApCj4gKyBsdWFfc2NyaXB0ID0gKAo+ICsgJ2ppdC5vcHQu c3RhcnQoImhvdGxvb3A9MSIpXG4nCj4gKyAnbG9jYWwgdXYgPSAwXG4nCj4gKyAnbG9jYWwgZnVu Y3Rpb24gdHJhY2UoYSlcbicKPiArICcgdXYgPSBhXG4nCj4gKyAnIHJldHVybiB1dlxuJwo+ICsg J2VuZFxuJwo+ICsgJ3RyYWNlKDEpXG4nCj4gKyAndHJhY2UoMSlcbicKPiArICdwcmludCgpXG4n Cj4gKyApCj4gKyBwYXR0ZXJuID0gcidVUkVGTyAuKiBsaXQ6ICMwJwo+ICsKPiArCj4gKyMgQ2hl Y2sgYm9yZGVyIHZhbHVlcyAodGhhdCBhbHdheXMgYXZhbGFibGUpIG9mIENBTEwgSVJzLgo+ICtj bGFzcyBUZXN0TEpJUkNhbGwoVGVzdENhc2VCYXNlKToKPiArIGxvY2F0aW9uID0gJ2xqX2NmX3By aW50Jwo+ICsgZXh0ZW5zaW9uX2NtZHMgPSAoCj4gKyAnblxuJyAjIExvYWQgTC4KPiArICdsai10 cmFjZSAnICsgZ2NyZWYoJygoR0dfU3RhdGUgKilMKS0+Si0+dHJhY2VbMV0nKQo+ICsgKQo+ICsg bHVhX3NjcmlwdCA9ICgKPiArICdsb2NhbCBmZmkgPSByZXF1aXJlKCJmZmkiKVxuJwo+ICsgJ2pp dC5vcHQuc3RhcnQoImhvdGxvb3A9MSIpXG4nCj4gKyAnbG9jYWwgZnVuY3Rpb24gdHJhY2UoYSwg YilcbicKPiArICcgcmV0dXJuIGEgPCBiLCBmZmkuZXJybm8oKVxuJwo+ICsgJ2VuZFxuJwo+ICsg J3RyYWNlKCJhYmMiLCAiYWJkIilcbicKPiArICd0cmFjZSgiYWJjIiwgImFiZCIpXG4nCj4gKyAn cHJpbnQoMSlcbicKPiArICkKPiArIHBhdHRlcm4gPSAoCj4gKyByJyg/cylpbnQgQ0FMTE4gLiog Jwo+ICsgcidsal9zdHJfY21wXChceycgKyBSWF9JUk4gKyByJ1x9LCBceycgKyBSWF9JUk4gKyBy J1x9XCknCj4gKyByJy4qaW50IENBTExTIC4qIGxqX3ZtX2Vycm5vXChcKScKPiArICkKPiArCj4g Kwo+ICsjIFRlc3QgZmZpIGNhbGwgd2l0aCBjdHlwZSBzdG9yZWQgaW4gQ0FSRy4KPiArY2xhc3Mg VGVzdExKSVJDYWxsWFNDVHlwZShUZXN0Q2FzZUJhc2UpOgo+ICsgbG9jYXRpb24gPSAnbGpfY2Zf cHJpbnQnCj4gKyBleHRlbnNpb25fY21kcyA9ICgKPiArICduXG4nICMgTG9hZCBMLgo+ICsgJ2xq LXRyYWNlICcgKyBnY3JlZignKChHR19TdGF0ZSAqKUwpLT5KLT50cmFjZVsxXScpCj4gKyApCj4g KyBsdWFfc2NyaXB0ID0gKAo+ICsgJ2xvY2FsIGZmaSA9IHJlcXVpcmUoImZmaSIpXG4nCj4gKyAn ZmZpLmNkZWZbW2ludCBwcmludGYoY29uc3QgY2hhciAqZm10LCAuLi4pO11dXG4nCj4gKyAnaml0 Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbicKPiArICdsb2NhbCBmdW5jdGlvbiB0cmFjZSgpXG4n Cj4gKyAnIGxvY2FsIHQgPSBmZmkuQy5wcmludGYoIiIpXG4nCj4gKyAnIHJldHVybiB0XG4nCj4g KyAnZW5kXG4nCj4gKyAndHJhY2UoKVxuJwo+ICsgJ3RyYWNlKClcbicKPiArICdwcmludCgpXG4n Cj4gKyApCj4gKyBwYXR0ZXJuID0gcidpbnQgQ0FMTFhTIC4qIFsnICsgUlhfQUREUiArIHInXF1c KC4qXCkgY3R5cGU6IFxkKycKPiArCj4gKwo+ICtjbGFzcyBUZXN0TEpKU2xvdHNCYXNlKFRlc3RD YXNlQmFzZSk6Cj4gKyBsb2NhdGlvbiA9ICd0cmFjZV9zdG9wJwo+ICsgZXh0ZW5zaW9uX2NtZHMg PSAoCj4gKyAnblxuJyAjIExvYWQgSi4KPiArICdsai1qc2xvdHMgSi0+TFxuJwo+ICsgKQo+ICsg bHVhX3NjcmlwdCA9ICgKPiArICdqaXQub3B0LnN0YXJ0KCJob3Rsb29wPTEiKVxuJwo+ICsgJ2Zv ciBfID0gMSwgNCBkbyBlbmRcbicKPiArICkKPiArIHBhdHRlcm4gPSAoCj4gKyByJyg/cykoLion ICsKPiArIFJYX0FERFIgKyAnICcgKyBSWF9JUk4gKyByJyAoQnxccykgXFsoRnxccykoQ3xccylc XSBcd1x3XHcgJyArCj4gKyBSWF9JUlJFRiArCj4gKyByJy4qKSsnCj4gKyApCj4gKwo+ICsKPiBm b3IgdGVzdF9jbHMgaW4gVGVzdENhc2VCYXNlLl9fc3ViY2xhc3Nlc19fKCk6Cj4gdGVzdF9jbHMu dGVzdCA9IGxhbWJkYSBzZWxmOiBzZWxmLmNoZWNrKCkKPiAKPiAtLQo+IDIuNTQuMAo+ ----ALT--53fE442184Ec82eF9B00Df35F9d8DaDf1782608610 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXYgY2xhc3M9ImNsLTF2aGR0eTRuZDciPjxkaXY+SGksIFNlcmdleSE8 L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+VGhhbmtzIGZvciB0aGUgcGF0Y2guIFBsZWFzZSwg c2VlIG15IGNvbW1lbnRzLjxicj4mbmJzcDs8L2Rpdj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdl dD0iY29udGFpbmVyIj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29udGVudCI+PGRpdj4t LTxicj5CZXN0IHJlZ2FyZHMsPC9kaXY+PGRpdj5Fdmdlbml5IFRlbWlyZ2FsZWV2PC9kaXY+PC9k aXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9Im1haWwtcXVvdGUtY29sbGFwc2UiPjxibG9ja3F1b3Rl IHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjttYXJnaW46MTBweDtwYWRkaW5n OjAgMCAwIDEwcHgiPjxzcGFuPtCe0YIg0LrQvtCz0L46IFNlcmdleSBLYXBsdW4gJmx0OzxhIGhy ZWY9Im1haWx0bzpza2FwbHVuQHRhcmFudG9vbC5vcmciPnNrYXBsdW5AdGFyYW50b29sLm9yZzwv YT4mZ3Q7PGJyPtCa0L7QvNGDOiBTZXJnZXkgQnJvbm5pa292ICZsdDs8YSBocmVmPSJtYWlsdG86 c2VyZ2V5YkB0YXJhbnRvb2wub3JnIj5zZXJnZXliQHRhcmFudG9vbC5vcmc8L2E+Jmd0OywgRXZn ZW5peSBUZW1pcmdhbGVldiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmUudGVtaXJnYWxlZXZAdGFyYW50 b29sLm9yZyI+ZS50ZW1pcmdhbGVldkB0YXJhbnRvb2wub3JnPC9hPiZndDs8YnI+0JrQvtC/0LjR jzogdGFyYW50b29sLXBhdGNoZXNAZGV2LnRhcmFudG9vbC5vcmcsIFNlcmdleSBLYXBsdW4gJmx0 OzxhIGhyZWY9Im1haWx0bzpza2FwbHVuQHRhcmFudG9vbC5vcmciPnNrYXBsdW5AdGFyYW50b29s Lm9yZzwvYT4mZ3Q7PGJyPtCU0LDRgtCwOiDQp9C10YLQstC10YDQsywgMjUg0LjRjtC90Y8gMjAy NiwgMjM6MjkgKzAzOjAwPC9zcGFuPjxicj4mbmJzcDs8ZGl2PjxkaXYgaWQ9IiI+PGRpdiBjbGFz cz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVyX21yX2Nzc19hdHRyIGpzLXJl YWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2IGlkPSJzdHlsZV8xNzgyNDE5Mzg0MjAxMzA3MTIx N19tcl9jc3NfYXR0ciI+PGRpdiBpZD0ic3R5bGVfMTc4MjQxOTM4NDIwMTMwNzEyMTdfQk9EWV9t cl9jc3NfYXR0ciI+VGhpcyBwYXRjaCBhZGRzIGR1bXBlcnMgZm9yIGEgc2luZ2xlIElSIGluc3Ry dWN0aW9uIChgbGotaXJgKSwgYXMgd2VsbDxicj5hcyBmb3IgYWxsIGJ5dGVjb2RlcyBpbnNpZGUg b25lIHRyYWNlIChgbGotdHJhY2VgKS4gSXRzIGR1bXAgaXMgcXVpdGU8YnI+c2ltaWxhciB0byB0 aGUgLWpkdW1wIGZsYWcgYnV0IGFsc28gcmVwb3J0cyB0eXBlcyBvZiByZWdpc3RlciBvcGVyYW5k czxicj4oYHJlZmAsIGBsaXRgLCBgY3N0YCkgYW5kIG9wZXJhdGlvbiBtb2RlIChgTmAsIGBBYCwg YFdgLCBldGMuKS48YnI+VGhlIGBsai10cmFjZWAgY29tbWFuZCBhY2NlcHRzIG9wdGlvbmFsIC9y cyBmbGFncyB0byBkdW1wIHJlZ2lzdGVyczxicj5hc3NvY2lhdGVkIHdpdGggSVIgYW5kIHNuYXBz aG90cyBmb3IgdGhlIHRyYWNlIGNvcnJlc3BvbmRpbmdseS48YnI+VGhlIGBsai1pcmAgY29tbWFu ZCBjYW4gYmUgdXNlZCBmb3IgZHVtcGluZyBJUiBjb25zdGFudHMgYXMgd2VsbC48YnI+VGhlIGBs ai1qc2xvdHNgIGNvbW1hbmQgZHVtcHMgdGhlIGNvbnRlbnQgb2YgYEotJmd0O3Nsb3RgLiBJdCBp cyB1c2VmdWwgdG88YnI+c2ltcGxpZnkgZGVidWdnaW5nIG9mIGByZWNfY2hlY2tfc2xvdHMoKWAg YXNzZXJ0aW9uIGZhaWx1cmVzLjxicj48YnI+Rm9yIExMREIgdmFsdWUsIHRoZSBgX19nZXRpdGVt X19gIG1ldGFtZXRob2Qgbm93IGFjY2VwdHMgYm9vbCBrZXlzLjxicj5BbHNvLCBgX19pbmRleF9f YCBpcyBzZXQgdG8gYWxsb3cgbGxkYi52YWx1ZSB0byBiZSB1c2VkIGFzIGFuIGluZGV4PGJyPndp dGhvdXQgZXhwbGljaXQgY29udmVyc2lvbiB0byBpbnQuIE9sZCBHREIgdmVyc2lvbnMgKGJlbG93 IDcuMTIpIGFyZTxicj5ub3Qgc3VwcG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGdkYi5WYWx1ZSBsYWNr cyB0aGUgYF9faW5kZXhfX2AgbWV0YW1ldGhvZDxicj5hbmQgY2FuJ3QgYmUgbW9ua2V5LXBhdGNo ZWQuIFRoZSBzdXBwb3J0IGZvciB0aGVzZSB2ZXJzaW9ucyBtYXkgYmUgYWRkZWQ8YnI+YnkgZGVt YW5kLjxicj48YnI+UGFydCBvZiB0YXJhbnRvb2wvdGFyYW50b29sIzQ4MDg8YnI+LS0tPGJyPnNy Yy9sdWFqaXRfZGJnLnB5IHwgMTIxNiArKysrKysrKysrKysrKysrLTxicj4uLi4vZGVidWctZXh0 ZW5zaW9uLXRlc3RzLnB5IHwgMzY1ICsrKysrPGJyPjIgZmlsZXMgY2hhbmdlZCwgMTU3MCBpbnNl cnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSk8YnI+PGJyPmRpZmYgLS1naXQgYS9zcmMvbHVhaml0 X2RiZy5weSBiL3NyYy9sdWFqaXRfZGJnLnB5PGJyPmluZGV4IDJlZGIxOTlhLi5mZDZjYThhNSAx MDA2NDQ8YnI+LS0tIGEvc3JjL2x1YWppdF9kYmcucHk8YnI+KysrIGIvc3JjL2x1YWppdF9kYmcu cHk8YnI+QEAgLTU4LDYgKzU4LDI2IEBAIGNsYXNzIERlYnVnZ2VyKG9iamVjdCk6PGJyPnNlbGYu TExEQiA9IFRydWU8YnI+cmV0dXJuIHN1cGVyKERlYnVnZ2VyLCBzZWxmKS5fX25ld19fKF9MTERC RGVidWdnZXIpPGJyPjxicj4rIGRlZiBwYXJzZV9mbGFncyhzZWxmLCByYXdfZmxhZ3MsIHBlcm1p dHRlZF9mbGFncyk6PGJyPisgZmxhZ3MgPSB7fTxicj4rIGZvciBmbGFnIGluIHJhd19mbGFnczo8 YnI+KyBpZiBmbGFnIG5vdCBpbiBwZXJtaXR0ZWRfZmxhZ3M6PGJyPisgcmFpc2Ugc2VsZi5lcnJv cignVW5yZWNvbmduaXplZCBvcHRpb246ICJ7fSInLmZvcm1hdChmbGFnKSk8YnI+KyBmbGFnc1tm bGFnXSA9IFRydWU8YnI+KyByZXR1cm4gZmxhZ3M8YnI+Kzxicj4rIGRlZiBleHRyYWN0X2ZsYWdz KHNlbGYsIGFyZywgcGVybWl0dGVkX2ZsYWdzKTo8YnI+KyBpZiBub3QgYXJnOjxicj4rIHJldHVy biBOb25lLCBOb25lPGJyPisgZmxhZ3MgPSB7fTxicj4rIGlmIGFyZy5zdGFydHN3aXRoKCcvJyk6 PGJyPisgbWF0Y2ggPSByZS5tYXRjaChyJy8oXFMqKVxzKyguKikkJywgYXJnKTxicj4rIGlmIG5v dCBtYXRjaDo8YnI+KyByZXR1cm4gYXJnLCBmbGFnczxicj4rIHJhd19mbGFncywgYXJnID0gbWF0 Y2guZ3JvdXAoMSwgMik8YnI+KyBmbGFncyA9IHNlbGYucGFyc2VfZmxhZ3MocmF3X2ZsYWdzLCBw ZXJtaXR0ZWRfZmxhZ3MpPGJyPisgcmV0dXJuIGFyZywgZmxhZ3M8YnI+Kzxicj5kZWYgY29uZmln dXJlKHNlbGYpOjxicj5nbG9iYWwgUEFERElORywgTEpfVElTTlVNPGJyPmlmIG5vdCBzZWxmLmNo ZWNrX2xpYmx1YWppdCgpOjxicj5AQCAtNzAsNiArOTAsMTcgQEAgY2xhc3MgRGVidWdnZXIob2Jq ZWN0KTo8YnI+c2VsZi53cml0ZSgnbHVhaml0X2RiZy5weSBmYWlsZWQgdG8gbG9hZDogJzxicj4n bm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQgZm9yIGxpYmx1YWppdFxuJyk8YnI+cmV0dXJuIEZh bHNlPGJyPis8YnI+KyAjIFNldHVwIGFyY2guPGJyPisgdHJ5Ojxicj4rIHNlbGYuYXJjaCA9IHN0 cihzZWxmLmV2YWwoJ0xKX0FSQ0hfTkFNRScpKS5zcGxpdCgnIicpWzFdPGJyPisgZXhjZXB0IEV4 Y2VwdGlvbjo8YnI+KyB0cnk6PGJyPisgc2VsZi5hcmNoID0gc2VsZi5kZXRlY3RfYXJjaCgpPGJy PisgZXhjZXB0IEV4Y2VwdGlvbjo8YnI+KyAjIFNldHVwIG9uIGRlbWFuZCBpZiBuZWNlc3Nhcnku PGJyPisgcGFzczxicj4rPGJyPnJldHVybiBUcnVlPGJyPjxicj5kZWYgaW5pdGlhbGl6ZV9leHRl bnNpb24oc2VsZiwgY29tbWFuZHMpOjxicj5AQCAtOTksMjEgKzEzMCw0MiBAQCBjbGFzcyBEZWJ1 Z2dlcihvYmplY3QpOjxicj4nJydSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZyBieSB0 aGUgZ2l2ZW4gcG9pbnRlci4nJyc8YnI+cGFzczxicj48YnI+KyBAYWJjLmFic3RyYWN0bWV0aG9k PGJyPisgZGVmIGFkZHJlc3Moc2VsZiwgb2JqKTo8YnI+KyAnJydSZXR1cm4gdGhlIGFkZHJlc3Mg aW4gbWVtb3J5IG9mIHRoZSBnaXZlbiBvYmplY3QuJycnPGJyPisgcGFzczxicj4rPGJyPkBhYmMu YWJzdHJhY3RtZXRob2Q8YnI+ZGVmIGxvb2t1cF9nbG9iYWwoc2VsZiwgc3ltYm9sKTo8YnI+Jycn TG9vayB1cCB0aGUgZ2xvYmFsIEMgc3ltYm9sIGJ5IHRoZSBnaXZlbiBuYW1lLicnJzxicj5wYXNz PGJyPjxicj4rIEBhYmMuYWJzdHJhY3RtZXRob2Q8YnI+KyBkZWYgbWVtYmVyX2J5X29mZnNldChz ZWxmLCB0eXBlbmFtZSwgb2Zmc2V0LCBwcmV2X25hbWU9Tm9uZSk6PGJyPisgJycnTG9vayB1cCB0 aGUgZ2xvYmFsIEMgc3ltYm9sIGJ5IHRoZSBnaXZlbiBuYW1lLicnJzxicj4rIHBhc3M8YnI+Kzxi cj5AYWJjLmFic3RyYWN0bWV0aG9kPGJyPmRlZiBldmFsKHNlbGYsIGNvbW1hbmQpOjxicj4nJydQ YXJzZSBhbmQgZXZhbHVhdGUgdGhlIGdpdmVuIGRlYnVnZ2VyIGNvbW1hbmQuJycnPGJyPnBhc3M8 YnI+PGJyPisgQGFiYy5hYnN0cmFjdG1ldGhvZDxicj4rIGRlZiBkZXRlY3RfYXJjaChzZWxmKTo8 YnI+KyAnJydEZXRlY3QgdGhlIENQVSBhcmNoaXRlY3R1cmUgYW5kIGNhbm9uaWNhbGl6ZSBpdCB0 byB0aGUgTHVhSklUPGJyPisgbm90YXRpb24uJycnPGJyPisgcGFzczxicj4rPGJyPkBhYmMuYWJz dHJhY3RtZXRob2Q8YnI+ZGVmIHdyaXRlKHNlbGYsIG1zZyk6PGJyPicnJ1ByaW50IHRoZSBtZXNz YWdlLicnJzxicj5wYXNzPGJyPjxicj4rIEBhYmMuYWJzdHJhY3RtZXRob2Q8YnI+KyBkZWYgZXJy b3Ioc2VsZiwgbXNnKTo8YnI+KyAnJydDcmVhdGUgdGhlIGVycm9yIG9iamVjdCB3aXRoIG1lc3Nh Z2UuJycnPGJyPisgcGFzczxicj4rPGJyPkBhYmMuYWJzdHJhY3RtZXRob2Q8YnI+ZGVmIGNoZWNr X2xpYmx1YWppdChzZWxmKTo8YnI+JycnQ2hlY2sgdGhhdCBsaWJsdWFqaXQgaXMgbG9hZGVkLjxi cj5AQCAtMTcyLDEwICsyMjQsNTAgQEAgY2xhc3MgX0dEQkRlYnVnZ2VyKERlYnVnZ2VyKTo8YnI+ IyBBIHN0cmluZyBpcyBwcmludGVkIHdpdGggYSBwb2ludGVyIHRvIGl0LiBKdXN0IHN0cmlwIGl0 Ljxicj5yZXR1cm4gcmUuc3ViKHInXjB4W2EtZjAtOV0rXHMrKD89IiknLCAnJywgc3RyKHN0cnB0 cikpPGJyPjxicj4rIGRlZiBhZGRyZXNzKHNlbGYsIG9iaik6PGJyPisgcmV0dXJuIG9iai5hZGRy ZXNzPGJyPis8YnI+ZGVmIGxvb2t1cF9nbG9iYWwoc2VsZiwgc3ltYm9sKTo8YnI+dmFyaWFibGUs IF8gPSBnZGIubG9va3VwX3N5bWJvbChzeW1ib2wpPGJyPnJldHVybiB2YXJpYWJsZS52YWx1ZSgp IGlmIHZhcmlhYmxlIGVsc2UgTm9uZTxicj48YnI+KyBkZWYgbWVtYmVyX2J5X29mZnNldChzZWxm LCB0cCwgb2Zmc2V0LCBwcmV2X25hbWU9Tm9uZSk6PGJyPisgaWYgaXNpbnN0YW5jZSh0cCwgc3Ry KTo8YnI+KyB0cCA9IHNlbGYuX2RiZ3R5cGUodHApPGJyPisgYXNzZXJ0IG9mZnNldCAmbHQ7IHRw LnNpemVvZiwgJ29mZnNldCBpcyBiaWdnZXIgdGhhbiBvYmplY3Qgc2l6ZSc8YnI+KyBpZiB0cC5j b2RlID09IGdkYi5UWVBFX0NPREVfVFlQRURFRjo8YnI+KyB0cCA9IHRwLnN0cmlwX3R5cGVkZWZz KCk8YnI+KyBpZiB0cC5jb2RlID09IGdkYi5UWVBFX0NPREVfU1RSVUNUOjxicj4rIGZpZWxkcyA9 IHRwLmZpZWxkcygpPGJyPisgZm9yIG5fZmllbGQgaW4gcmFuZ2UobGVuKGZpZWxkcykpOjxicj4r IGlzbGFzdCA9IG5fZmllbGQgPT0gKGxlbihmaWVsZHMpIC0gMSk8YnI+KyBmaWVsZCA9IGZpZWxk c1tuX2ZpZWxkXTxicj4rIHN0YXJ0X2ZpZWxkID0gZmllbGQuYml0cG9zIC8gODxicj4rIGVuZF9m aWVsZCA9IGZpZWxkc1tuX2ZpZWxkICsgMV0uYml0cG9zIC8gOCBpZiBub3QgaXNsYXN0IFw8YnI+ KyBlbHNlIHRwLnNpemVvZjxicj4rIGlmIHN0YXJ0X2ZpZWxkICZsdDs9IG9mZnNldCBhbmQgb2Zm c2V0ICZsdDsgZW5kX2ZpZWxkOjxicj4rIG5leHRfbmFtZSA9IHNlbGYubWVtYmVyX2J5X29mZnNl dCg8YnI+KyBmaWVsZC50eXBlLDxicj4rIG9mZnNldCAtIHN0YXJ0X2ZpZWxkLDxicj4rIHByZXZf bmFtZT1maWVsZC5uYW1lPGJyPisgKTxicj4rIHJldHVybiAnLntmaWVsZH17c3VmZml4fScuZm9y bWF0KDxicj4rIGZpZWxkPWZpZWxkLm5hbWUsPGJyPisgc3VmZml4PW5leHRfbmFtZSBpZiBuZXh0 X25hbWUgZWxzZSAnJzxicj4rICk8YnI+KyBlbGlmIHRwLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9B UlJBWTo8YnI+KyAjIEdldCBhcnJheSBmaWVsZCB0eXBlLjxicj4rIHRhcmdldCA9IHRwLnRhcmdl dCgpPGJyPisgdHNpemUgPSB0YXJnZXQuc2l6ZW9mPGJyPisgaWR4ID0gaW50KG9mZnNldCAvLyB0 c2l6ZSk8YnI+KyBuZXh0X25hbWUgPSBzZWxmLm1lbWJlcl9ieV9vZmZzZXQodGFyZ2V0LCBvZmZz ZXQgLSBpZHggKiB0c2l6ZSk8YnI+KyBpZHhuYW1lID0gaWR4X25hbWUocHJldl9uYW1lKTxicj4r IGlmIGlkeG5hbWUgYW5kIGlkeCBpbiBpZHhuYW1lOjxicj4rIGlkeCA9IGlkeG5hbWVbaWR4XTxi cj4rIHJldHVybiAnW3t9XXt9Jy5mb3JtYXQoaWR4LCBuZXh0X25hbWUgaWYgbmV4dF9uYW1lIGVs c2UgJycpPGJyPisgZWxzZTo8YnI+KyByZXR1cm4gTm9uZTxicj4rPGJyPmRlZiBldmFsKHNlbGYs IGNvbW1hbmQpOjxicj5pZiBub3QgY29tbWFuZDo8YnI+cmV0dXJuIE5vbmU8YnI+QEAgLTE4NSw5 ICsyNzcsMjMgQEAgY2xhc3MgX0dEQkRlYnVnZ2VyKERlYnVnZ2VyKTo8YnI+cmFpc2UgZ2RiLkdk YkVycm9yKCd0YWJsZSBhcmd1bWVudCBlbXB0eScpPGJyPnJldHVybiByZXQ8YnI+PGJyPisgZGVm IGRldGVjdF9hcmNoKHNlbGYpOjxicj4rIGlmIGhhc2F0dHIoc2VsZiwgJ2FyY2gnKTo8YnI+KyBy ZXR1cm4gc2VsZi5hcmNoPGJyPisgdGFyZ2V0ID0gc3RyKGdkYi5leGVjdXRlKCdpbmZvIHRhcmdl dCcsIEZhbHNlLCBUcnVlKSk8YnI+KyBpZiByZS5tYXRjaCgnLip4ODYtNjQuKicsIHRhcmdldCwg ZmxhZ3M9cmUuRE9UQUxMKTo8YnI+KyByZXR1cm4gJ3g2NCc8YnI+KyBlbGlmIHJlLm1hdGNoKCcu KmFhcmNoNjQuKicsIHRhcmdldCwgZmxhZ3M9cmUuRE9UQUxMKTo8YnI+KyByZXR1cm4gJ2FybTY0 Jzxicj4rIGVsc2U6PGJyPisgcmV0dXJuICcnPGJyPis8YnI+ZGVmIHdyaXRlKHNlbGYsIG1zZyk6 PGJyPmdkYi53cml0ZShtc2cpPGJyPjxicj4rIGRlZiBlcnJvcihzZWxmLCBlcnJtc2cpOjxicj4r IHJldHVybiBnZGIuR2RiRXJyb3IoZXJybXNnKTxicj4rPGJyPmRlZiBjaGVja19saWJsdWFqaXQo c2VsZik6PGJyPiMgWFhYIEZyYWdpbGU6IFRob3VnaCBjb25uZWN0aW5nIHRoZSBjYWxsYmFjayBs b29rcyBiYWQsPGJyPiMgaXQgcmVzcGVjdHMgYm90aCBQeXRob24gMiBhbmQgUHl0aG9uIDMgKHNl ZSAjNDgyOCkuPGJyPkBAIC0zMjIsOCArNDI4LDI2IEBAIGNsYXNzIF9MTERCRGVidWdnZXIoRGVi dWdnZXIpOjxicj5kZWYgbGxkYl9fZ2V0aXRlbV9fKGxsZGJ2YWwsIGtleSk6PGJyPmlmIHR5cGUo a2V5KSBpcyBsbGRiLnZhbHVlOjxicj5rZXkgPSBpbnQoa2V5KTxicj4rIGlmIHR5cGUoa2V5KSBp cyBib29sOjxicj4rIGtleSA9IGludChrZXkpPGJyPmlmIHR5cGUoa2V5KSBpcyBpbnQ6PGJyPiMg QWxsb3cgYXJyYXkgYWNjZXNzLjxicj4rIGx0cCA9IGxsZGJ2YWwuc2J2YWx1ZS5HZXRUeXBlKCk8 YnI+KyAjIFhYWDogTExEQiBpbiB2ZXJzaW9ucyAxNyAtIDE5IGNhbid0IHVzZSBhbiBhcnJheTxi cj4rICMgb2JqZWN0IGFzIHRoZSBpbml0aWFsaXplciBmb3IgYGxsZGIudmFsdWVgIHNpbmNlPGJy PisgIyBgR2V0VmFsdWUoKWAgZm9yIGl0IHJldHVybnMgYE5vbmVgIGxlYWRpbmcgdG88YnI+KyAj IHRoZSBpbnZhbGlkIHJlc3VsdC4gU2VlPGJyPisgIyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5j b20vbGx2bS9sbHZtLXByb2plY3QvcHVsbC85MDE0NCI+aHR0cHM6Ly9naXRodWIuY29tL2xsdm0v bGx2bS1wcm9qZWN0L3B1bGwvOTAxNDQ8L2E+Ljxicj4rIGlmIChzZWxmLnZlcnNpb24gJmx0OyAx NyBvciBzZWxmLnZlcnNpb24gJmd0OyAxOSkgb3IgXDxicj4rIGx0cC5HZXRUeXBlQ2xhc3MoKSAh PSBsbGRiLmVUeXBlQ2xhc3NBcnJheTo8YnI+KyBwYXNzPGJyPisgZWxzZTo8YnI+KyBwdHJfdHAg PSBsdHAuR2V0QXJyYXlFbGVtZW50VHlwZSgpLkdldFBvaW50ZXJUeXBlKCk8YnI+KyBsbGRidmFs ID0gc2VsZi5fbGxkYl92YWx1ZV9mcm9tX3Jhdyg8YnI+KyBsbGRidmFsLnNidmFsdWUuR2V0TG9h ZEFkZHJlc3MoKSw8YnI+KyBwdHJfdHAuR2V0Qnl0ZVNpemUoKSw8YnI+KyBwdHJfdHA8YnI+KyAp PGJyPmlmIGtleSAmZ3Q7PSAwIGFuZCBub3QgbGxkYnZhbC5zYnZhbHVlLlR5cGVJc1BvaW50ZXJU eXBlKCk6PGJyPnJldHVybiBsbGRiLnZhbHVlKDxicj5sbGRidmFsLnNidmFsdWUuR2V0VmFsdWVG b3JFeHByZXNzaW9uUGF0aCgnWyVpXScgJSBrZXkpPGJyPkBAIC0zNDksNiArNDczLDkgQEAgY2xh c3MgX0xMREJEZWJ1Z2dlcihEZWJ1Z2dlcik6PGJyPmRlZiBsbGRiX19ndF9fKGxsZGJ2YWwsIG90 aGVyKTo8YnI+cmV0dXJuIGludChsbGRidmFsKSAmZ3Q7IGludChvdGhlcik8YnI+PGJyPisgZGVm IGxsZGJfX2luZGV4X18obGxkYnZhbCk6PGJyPisgcmV0dXJuIGludChsbGRidmFsKTxicj4rPGJy PmRlZiBsbGRiX19sZV9fKGxsZGJ2YWwsIG90aGVyKTo8YnI+cmV0dXJuIGludChsbGRidmFsKSAm bHQ7PSBpbnQob3RoZXIpPGJyPjxicj5AQCAtNDA2LDYgKzUzMyw3IEBAIGNsYXNzIF9MTERCRGVi dWdnZXIoRGVidWdnZXIpOjxicj5sbGRiLnZhbHVlLl9fZ2VfXyA9IGxsZGJfX2dlX188YnI+bGxk Yi52YWx1ZS5fX2dldGl0ZW1fXyA9IGxsZGJfX2dldGl0ZW1fXzxicj5sbGRiLnZhbHVlLl9fZ3Rf XyA9IGxsZGJfX2d0X188YnI+KyBsbGRiLnZhbHVlLl9faW5kZXhfXyA9IGxsZGJfX2luZGV4X188 YnI+bGxkYi52YWx1ZS5fX2xlX18gPSBsbGRiX19sZV9fPGJyPmxsZGIudmFsdWUuX19sdF9fID0g bGxkYl9fbHRfXzxicj5sbGRiLnZhbHVlLl9fc3RyX18gPSBsbGRiX19zdHJfXzxicj5AQCAtNDc0 LDYgKzYwMiw5IEBAIGNsYXNzIF9MTERCRGVidWdnZXIoRGVidWdnZXIpOjxicj5kZWYgY3N0cihz ZWxmLCBzdHJwdHIpOjxicj5yZXR1cm4gc3RycHRyLnNidmFsdWUuc3VtbWFyeTxicj48YnI+KyBk ZWYgYWRkcmVzcyhzZWxmLCBvYmopOjxicj4rIHJldHVybiBsbGRiLnZhbHVlKG9iai5zYnZhbHVl LmFkZHJlc3Nfb2YpPGJyPis8YnI+ZGVmIGxvb2t1cF9nbG9iYWwoc2VsZiwgc3ltYm9sKTo8YnI+ c2J2YWx1ZSA9IHNlbGYudGFyZ2V0LkZpbmRGaXJzdEdsb2JhbFZhcmlhYmxlKHN5bWJvbCk8YnI+ dHAgPSBzYnZhbHVlLkdldFR5cGUoKTxicj5AQCAtNDkyLDYgKzYyMyw0NiBAQCBjbGFzcyBfTExE QkRlYnVnZ2VyKERlYnVnZ2VyKTo8YnI+cHRyX3RwPGJyPik8YnI+PGJyPisgZGVmIG1lbWJlcl9i eV9vZmZzZXQoc2VsZiwgdHAsIG9mZnNldCwgcHJldl9uYW1lPU5vbmUpOjxicj4rIGlmIGlzaW5z dGFuY2UodHAsIHN0cik6PGJyPisgdHAgPSBzZWxmLl9kYmd0eXBlKHRwKTxicj4rIGFzc2VydCBv ZmZzZXQgJmx0OyB0cC5HZXRCeXRlU2l6ZSgpLCAnb2Zmc2V0IGlzIGJpZ2dlciB0aGFuIG9iamVj dCBzaXplJzxicj4rIHRwID0gdHAuR2V0Q2Fub25pY2FsVHlwZSgpPGJyPisgaWYgdHAuR2V0VHlw ZUNsYXNzKCkgPT0gbGxkYi5lVHlwZUNsYXNzU3RydWN0Ojxicj4rIGxlbl9maWVsZHMgPSB0cC5H ZXROdW1iZXJPZkZpZWxkcygpPGJyPisgZm9yIG5fZmllbGQgaW4gcmFuZ2UobGVuX2ZpZWxkcyk6 PGJyPisgaXNsYXN0ID0gbl9maWVsZCA9PSAobGVuX2ZpZWxkcyAtIDEpPGJyPisgZmllbGQgPSB0 cC5HZXRGaWVsZEF0SW5kZXgobl9maWVsZCk8YnI+KyBzdGFydF9maWVsZCA9IGZpZWxkLkdldE9m ZnNldEluQnl0ZXMoKTxicj4rIGlmIG5vdCBpc2xhc3Q6PGJyPisgZW5kX2ZpZWxkID0gdHAuR2V0 RmllbGRBdEluZGV4KDxicj4rIG5fZmllbGQgKyAxPGJyPisgKS5HZXRPZmZzZXRJbkJ5dGVzKCk8 YnI+KyBlbHNlOjxicj4rIGVuZF9maWVsZCA9IHRwLkdldEJ5dGVTaXplKCk8YnI+KyBpZiBzdGFy dF9maWVsZCAmbHQ7PSBvZmZzZXQgYW5kIG9mZnNldCAmbHQ7IGVuZF9maWVsZDo8YnI+KyBuZXh0 X25hbWUgPSBzZWxmLm1lbWJlcl9ieV9vZmZzZXQoPGJyPisgZmllbGQuR2V0VHlwZSgpLDxicj4r IG9mZnNldCAtIHN0YXJ0X2ZpZWxkLDxicj4rIHByZXZfbmFtZT1maWVsZC5HZXROYW1lKCk8YnI+ KyApPGJyPisgcmV0dXJuICcue2ZpZWxkfXtzdWZmaXh9Jy5mb3JtYXQoPGJyPisgZmllbGQ9Zmll bGQuR2V0TmFtZSgpLDxicj4rIHN1ZmZpeD1uZXh0X25hbWUgaWYgbmV4dF9uYW1lIGVsc2UgJyc8 YnI+KyApPGJyPisgaWYgdHAuR2V0VHlwZUNsYXNzKCkgPT0gbGxkYi5lVHlwZUNsYXNzQXJyYXk6 PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjwv ZGl2PjxkaXY+VHlwbz86IGVsaWY8L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3Ij48ZGl2 IGNsYXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxl ZnQ6MXB4IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4Ij48ZGl2 PjxkaXY+PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVyX21y X2Nzc19hdHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+KyAjIEdldCBh cnJheSBmaWVsZCB0eXBlLjxicj4rIHRhcmdldCA9IHRwLkdldEFycmF5RWxlbWVudFR5cGUoKTxi cj4rIHRzaXplID0gdGFyZ2V0LkdldEJ5dGVTaXplKCk8YnI+KyBpZHggPSBpbnQob2Zmc2V0IC8v IHRzaXplKTxicj4rIG5leHRfbmFtZSA9IHNlbGYubWVtYmVyX2J5X29mZnNldCh0YXJnZXQsIG9m ZnNldCAtIGlkeCAqIHRzaXplKTxicj4rIGlkeG5hbWUgPSBpZHhfbmFtZShwcmV2X25hbWUpPGJy PisgaWYgaWR4bmFtZSBhbmQgaWR4IGluIGlkeG5hbWU6PGJyPisgaWR4ID0gaWR4bmFtZVtpZHhd PGJyPisgcmV0dXJuICdbe31de30nLmZvcm1hdChpZHgsIG5leHRfbmFtZSBpZiBuZXh0X25hbWUg ZWxzZSAnJyk8YnI+KyBlbHNlOjxicj4rIHJldHVybiBOb25lPGJyPis8YnI+ZGVmIGV2YWwoc2Vs ZiwgY29tbWFuZCk6PGJyPmlmIG5vdCBjb21tYW5kOjxicj5yZXR1cm4gTm9uZTxicj5AQCAtNTAy LDkgKzY3MywyMyBAQCBjbGFzcyBfTExEQkRlYnVnZ2VyKERlYnVnZ2VyKTo8YnI+cmV0ID0gZnJh bWUuRXZhbHVhdGVFeHByZXNzaW9uKGNvbW1hbmQpPGJyPnJldHVybiByZXQ8YnI+PGJyPisgZGVm IGRldGVjdF9hcmNoKHNlbGYpOjxicj4rIGlmIGhhc2F0dHIoc2VsZiwgJ2FyY2gnKTo8YnI+KyBy ZXR1cm4gc2VsZi5hcmNoPGJyPisgdGFyZ2V0ID0gc2VsZi50YXJnZXQuR2V0VHJpcGxlKCkuc3Bs aXQoJy0nKVswXTxicj4rIGlmIHRhcmdldCA9PSAneDg2XzY0Jzo8YnI+KyByZXR1cm4gJ3g2NCc8 YnI+KyBlbGlmIHRhcmdldCA9PSAnYXJtNjQnIG9yIHRhcmdldCA9PSAnYWFyY2g2NCc6PGJyPisg cmV0dXJuICdhcm02NCc8YnI+KyBlbHNlOjxicj4rIHJldHVybiAnJzxicj4rPGJyPmRlZiB3cml0 ZShzZWxmLCBtc2cpOjxicj5zeXMuc3Rkb3V0LndyaXRlKG1zZyk8YnI+PGJyPisgZGVmIGVycm9y KHNlbGYsIGVycm1zZyk6PGJyPisgcmV0dXJuIEV4Y2VwdGlvbihlcnJtc2cpPGJyPis8YnI+ZGVm IGNoZWNrX2xpYmx1YWppdChzZWxmKTo8YnI+IyBUT0RPOiBJbXBsZW1lbnQgcG9zdHBvbmUgbG9h ZGluZyBmb3IgTExEQiB0b28uPGJyPnJldHVybiBUcnVlPGJyPkBAIC05OTcsNiArMTE4Miw4NiBA QCBkZWYgSihnKTo8YnI+cmV0dXJuIGRiZy5jYXN0KCdqaXRfU3RhdGUgKicsIGRiZy5jYXN0KCdj aGFyIConLCBnKSAtIGdfb2Zmc2V0ICsgSl9vZmZzZXQpPGJyPjxicj48YnI+KyMgTWF0Y2hlZCBg TU1ERUYoXylgLjxicj4rTU1fTkFNRVMgPSBbPGJyPisgJ2luZGV4Jyw8YnI+KyAnbmV3aW5kZXgn LDxicj4rICdnYycsPGJyPisgJ21vZGUnLDxicj4rICdlcScsPGJyPisgJ2xlbicsPGJyPisgJ2x0 Jyw8YnI+KyAnbGUnLDxicj4rICdjb25jYXQnLDxicj4rICdjYWxsJyw8YnI+KyAnYWRkJyw8YnI+ KyAnc3ViJyw8YnI+KyAnbXVsJyw8YnI+KyAnZGl2Jyw8YnI+KyAnbW9kJyw8YnI+KyAncG93Jyw8 YnI+KyAndW5tJyw8YnI+KyAnbWV0YXRhYmxlJyw8YnI+KyAndG9zdHJpbmcnLDxicj4rICMgVE9E TzogZGVwZW5kcyBvbiBMSl9IQVNGRkksIHNlZSBgTU1ERUZfRkZJKF8pYC48YnI+KyAnbmV3Jyw8 YnI+KyAjIFRPRE86IGRlcGVuZHMgb24gTEpfNTIgfHwgTEpfSEFTRkZJLCBzZWUgYE1NREVGX1BB SVJTKF8pYC48YnI+KyAncGFpcnMnLDxicj4rICdpcGFpcnMnLDxicj4rXTxicj4rPGJyPis8YnI+ K0dDUk9PVF9NTU5BTUUgPSAwPGJyPitHQ1JPT1RfQkFTRU1UID0gR0NST09UX01NTkFNRSArIGxl bihNTV9OQU1FUyk8YnI+K0dDUk9PVF9JT19JTlBVVCA9IEdDUk9PVF9CQVNFTVQgKyBpMm5vdHUz MihMSl9UWydOVU1YJ10pICsgMTxicj4rR0NST09UX0lPX09VVFBVVCA9IEdDUk9PVF9JT19JTlBV VCArIDE8YnI+Kzxicj4rPGJyPisjIEdldCB0aGUgbmFtZSBvZiB0aGUgaW5kZXggaW4gdGhlIHBy ZWRlZmluZWQgYXJyYXlzLjxicj4rZGVmIGlkeF9uYW1lKGZpZWxkX25hbWUpOjxicj4rICMgRG9u J3QgdXNlICoqeyB0byBiZSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIuPGJyPisgZ2Nyb290ID0g e308YnI+KyBnY3Jvb3QudXBkYXRlKHs8YnI+KyBpOiAnR0NST09UX01NTkFNRV8nICsgTU1fTkFN RVNbaV0gZm9yIGkgaW4gcmFuZ2UobGVuKE1NX05BTUVTKSk8YnI+KyB9KTxicj4rIGdjcm9vdC51 cGRhdGUoezxicj4rIGkybm90dTMyKExKX1Rba10pICsgR0NST09UX0JBU0VNVDogJ0dDUk9PVF9C QVNFTVRfJyArIGs8YnI+KyBmb3IgayBpbiBMSl9ULmtleXMoKTxicj4rIH0pPGJyPisgZ2Nyb290 LnVwZGF0ZSh7PGJyPisgR0NST09UX0lPX0lOUFVUOiAnR0NST09UX0lPX0lOUFVUJyw8YnI+KyBH Q1JPT1RfSU9fT1VUUFVUOiAnR0NST09UX0lPX09VVFBVVCcsPGJyPisgfSk8YnI+KyByZXR1cm4g ezxicj4rICMgTWF5IGJlIG9uZSBvZiAyIHNsb3RzIGRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IGFk ZHJlc3MuPGJyPisgJ2tzaW1kJzogezxicj4rIDAgKiAyICsgMDogJ0xKX0tTSU1EX0FCUycsPGJy PisgMCAqIDIgKyAxOiAnTEpfS1NJTURfQUJTJyw8YnI+KyAxICogMiArIDA6ICdMSl9LU0lNRF9O RUcnLDxicj4rIDEgKiAyICsgMTogJ0xKX0tTSU1EX05FRycsPGJyPisgfSw8YnI+KyAnZ2Nyb290 JzogZ2Nyb290LDxicj4rIH0uZ2V0KGZpZWxkX25hbWUsIE5vbmUpPGJyPis8YnI+Kzxicj4rZ2dm bmFtZV9jYWNoZSA9IHt9PGJyPis8YnI+Kzxicj4rIyBHZXQgR0cgZmllbGQgbmFtZSBieSBnaXZl biBvZmZzZXQuIFVzZSBpbiBKSVQgZHVtcC48YnI+K2RlZiBnZ2ZuYW1lX2J5X29mZnNldChvZmZz ZXQpOjxicj4rIGlmIG9mZnNldCBpbiBnZ2ZuYW1lX2NhY2hlOjxicj4rIHJldHVybiBnZ2ZuYW1l X2NhY2hlW29mZnNldF08YnI+Kzxicj4rIGZpZWxkX3BhdGggPSBkYmcubWVtYmVyX2J5X29mZnNl dCgnR0dfU3RhdGUnLCBvZmZzZXQpPGJyPisgaWYgbm90IGZpZWxkX3BhdGg6PGJyPisgcmV0dXJu IE5vbmU8YnI+Kzxicj4rICMgUmVtb3ZlIGZpcnN0ICcuJy48YnI+KyBnZ2ZuYW1lID0gJ29mZnNl dG9mKEdHLCB7fSknLmZvcm1hdChmaWVsZF9wYXRoWzE6XSk8YnI+KyBnZ2ZuYW1lX2NhY2hlW29m ZnNldF0gPSBnZ2ZuYW1lPGJyPisgcmV0dXJuIGdnZm5hbWU8YnI+Kzxicj4rPGJyPmRlZiB2bV9z dGF0ZShnKTo8YnI+cmV0dXJuIHs8YnI+aTJub3R1MzIoMCk6ICdJTlRFUlAnLDxicj5AQCAtMTA4 Nyw2ICsxMzUyLDU1NSBAQCBkZWYgbGlnaHR1ZFYodHYpOjxicj5yZXR1cm4gZ2N2YWwodHZbJ2dj ciddKTxicj48YnI+PGJyPisjIEpJVCBlbmdpbmUuPGJyPis8YnI+Kzxicj4rSVJTID0gWzxicj4r ICMgR3VhcmRlZCBhc3NlcnRpb25zLjxicj4rICdMVCcsPGJyPisgJ0dFJyw8YnI+KyAnTEUnLDxi cj4rICdHVCcsPGJyPis8YnI+KyAnVUxUJyw8YnI+KyAnVUdFJyw8YnI+KyAnVUxFJyw8YnI+KyAn VUdUJyw8YnI+Kzxicj4rICdFUScsPGJyPisgJ05FJyw8YnI+Kzxicj4rICdBQkMnLDxicj4rICdS RVRGJyw8YnI+Kzxicj4rICMgTWlzY2VsbGFuZW91cyBvcHMuPGJyPisgJ05PUCcsPGJyPisgJ0JB U0UnLDxicj4rICdQVkFMJyw8YnI+KyAnR0NTVEVQJyw8YnI+KyAnSElPUCcsPGJyPisgJ0xPT1An LDxicj4rICdVU0UnLDxicj4rICdQSEknLDxicj4rICdSRU5BTUUnLDxicj4rICdQUk9GJyw8YnI+ Kzxicj4rICMgQ29uc3RhbnRzLjxicj4rICdLUFJJJyw8YnI+KyAnS0lOVCcsPGJyPisgJ0tHQycs PGJyPisgJ0tQVFInLDxicj4rICdLS1BUUicsPGJyPisgJ0tOVUxMJyw8YnI+KyAnS05VTScsPGJy PisgJ0tJTlQ2NCcsPGJyPisgJ0tTTE9UJyw8YnI+Kzxicj4rICMgQml0IG9wcy48YnI+KyAnQk5P VCcsPGJyPisgJ0JTV0FQJyw8YnI+KyAnQkFORCcsPGJyPisgJ0JPUicsPGJyPisgJ0JYT1InLDxi cj4rICdCU0hMJyw8YnI+KyAnQlNIUicsPGJyPisgJ0JTQVInLDxicj4rICdCUk9MJyw8YnI+KyAn QlJPUicsPGJyPis8YnI+KyAjIEFyaXRobWV0aWMgb3BzLiBPUkRFUiBBUklUSDxicj4rICdBREQn LDxicj4rICdTVUInLDxicj4rICdNVUwnLDxicj4rICdESVYnLDxicj4rICdNT0QnLDxicj4rICdQ T1cnLDxicj4rICdORUcnLDxicj4rPGJyPisgJ0FCUycsPGJyPisgJ0xERVhQJyw8YnI+KyAnTUlO Jyw8YnI+KyAnTUFYJyw8YnI+KyAnRlBNQVRIJyw8YnI+Kzxicj4rICMgT3ZlcmZsb3ctY2hlY2tp bmcgYXJpdGhtZXRpYyBvcHMuPGJyPisgJ0FERE9WJyw8YnI+KyAnU1VCT1YnLDxicj4rICdNVUxP VicsPGJyPis8YnI+KyAjIE1lbW9yeSBvcHMuIEEgPSBhcnJheSwgSCA9IGhhc2gsIFUgPSB1cHZh bHVlLCBGID0gZmllbGQsPGJyPisgIyBTID0gc3RhY2suPGJyPis8YnI+KyAjIE1lbW9yeSByZWZl cmVuY2VzLjxicj4rICdBUkVGJyw8YnI+KyAnSFJFRksnLDxicj4rICdIUkVGJyw8YnI+KyAnTkVX UkVGJyw8YnI+KyAnVVJFRk8nLDxicj4rICdVUkVGQycsPGJyPisgJ0ZSRUYnLDxicj4rICdTVFJS RUYnLDxicj4rICdMUkVGJyw8YnI+Kzxicj4rICMgTG9hZHMgYW5kIFN0b3Jlcy4gVGhlc2UgbXVz dCBiZSBpbiB0aGUgc2FtZSBvcmRlci48YnI+KyAnQUxPQUQnLDxicj4rICdITE9BRCcsPGJyPisg J1VMT0FEJyw8YnI+KyAnRkxPQUQnLDxicj4rICdYTE9BRCcsPGJyPisgJ1NMT0FEJyw8YnI+KyAn VkxPQUQnLDxicj4rPGJyPisgJ0FTVE9SRScsPGJyPisgJ0hTVE9SRScsPGJyPisgJ1VTVE9SRScs PGJyPisgJ0ZTVE9SRScsPGJyPisgJ1hTVE9SRScsPGJyPis8YnI+KyAjIEFsbG9jYXRpb25zLjxi cj4rICdTTkVXJyw8YnI+KyAnWFNORVcnLDxicj4rICdUTkVXJyw8YnI+KyAnVERVUCcsPGJyPisg J0NORVcnLDxicj4rICdDTkVXSScsPGJyPis8YnI+KyAjIEJ1ZmZlciBvcGVyYXRpb25zLjxicj4r ICdCVUZIRFInLDxicj4rICdCVUZQVVQnLDxicj4rICdCVUZTVFInLDxicj4rPGJyPisgIyBCYXJy aWVycy48YnI+KyAnVEJBUicsPGJyPisgJ09CQVInLDxicj4rICdYQkFSJyw8YnI+Kzxicj4rICMg VHlwZSBjb252ZXJzaW9ucy48YnI+KyAnQ09OVicsPGJyPisgJ1RPQklUJyw8YnI+KyAnVE9TVFIn LDxicj4rICdTVFJUTycsPGJyPis8YnI+KyAjIENhbGxzLjxicj4rICdDQUxMTicsPGJyPisgJ0NB TExBJyw8YnI+KyAnQ0FMTEwnLDxicj4rICdDQUxMUycsPGJyPisgJ0NBTExYUycsPGJyPisgJ0NB UkcnLDxicj4rXTxicj4rPGJyPis8YnI+KyMgTW9kZSBiaXRzOiBDb21tdXRhdGl2ZSwge05vcm1h bC9SZWYsIEFsbG9jLCBMb2FkLCBTdG9yZX0sPGJyPisjIE5vbi13ZWFrIGd1YXJkLiAqLzwvZGl2 PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48 ZGl2PlR5cG86IEMgY29tbWVudCBlbmQgKi88L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3 Ij48ZGl2IGNsYXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9y ZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4 Ij48ZGl2PjxkaXY+PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVs cGVyX21yX2Nzc19hdHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+K0lS TV9DID0gMHgxMDxicj4rSVJNX0EgPSAweDIwPGJyPitJUk1fTCA9IDB4NDA8YnI+K0lSTV9TID0g MHg2MDxicj4rSVJNX1cgPSAweDgwPGJyPis8YnI+Kzxicj4rIyBJUiBvcGVyYW5kIG1vZGUgKDIg Yml0KS48YnI+K0lSTSA9IFs8YnI+KyAncmVmJyw8YnI+KyAnbGl0Jyw8YnI+KyAnY3N0Jyw8YnI+ KyAnJywgIyBub25lPGJyPitdPGJyPis8YnI+Kzxicj4rbGpfaXJfbW9kZV8gPSBOb25lPGJyPis8 YnI+Kzxicj4rZGVmIGxqX2lyX21vZGUoKTo8YnI+KyBnbG9iYWwgbGpfaXJfbW9kZV88YnI+KyBp ZiBsal9pcl9tb2RlXzo8YnI+KyByZXR1cm4gbGpfaXJfbW9kZV88YnI+KyBsal9pcl9tb2RlXyA9 IGRiZy5sb29rdXBfZ2xvYmFsKCdsal9pcl9tb2RlJyk8YnI+KyByZXR1cm4gbGpfaXJfbW9kZV88 YnI+Kzxicj4rPGJyPitkZWYgaXJfbGVmdChvcCk6PGJyPisgcmV0dXJuIElSTVtpbnQobGpfaXJf bW9kZSgpW29wXSAmYW1wOyAzKV08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48 L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PGRpdj5NYXkgYmUgYmluYXJ5IGNvbnN0YW50IHdpbGwg YmUgbW9yZSBjbGVhcj8mbmJzcDt4eHggJmFtcDsmbmJzcDswYjAwMTE8L2Rpdj48ZGl2IGNsYXNz PSJjbC0xdmhkdHk0bmQ3Ij48ZGl2IGNsYXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48YmxvY2tx dW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7cGFk ZGluZzowIDAgMCAxMHB4Ij48ZGl2PjxkaXY+PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+PGRp diBjbGFzcz0ianMtaGVscGVyX21yX2Nzc19hdHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19hdHRy Ij48ZGl2PjxkaXY+Kzxicj4rPGJyPitkZWYgaXJfcmlnaHQob3ApOjxicj4rIHJldHVybiBJUk1b aW50KGxqX2lyX21vZGUoKVtvcF0gJmd0OyZndDsgMiAmYW1wOyAzKV08L2Rpdj48L2Rpdj48L2Rp dj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PGRpdj5NYXkgYmUg YmluYXJ5IGNvbnN0YW50IHdpbGwgYmUgbW9yZSBjbGVhcj8gKHh4eCAmYW1wOyZuYnNwOzBiMTEw MCkgJmd0OyZndDsmbmJzcDsyPC9kaXY+PGRpdiBjbGFzcz0iY2wtMXZoZHR5NG5kNyI+PGRpdiBj bGFzcz0ibWFpbC1xdW90ZS1jb2xsYXBzZSI+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0 OjFweCBzb2xpZCAjMDg1N0E2O21hcmdpbjoxMHB4O3BhZGRpbmc6MCAwIDAgMTBweCI+PGRpdj48 ZGl2PjxkaXYgY2xhc3M9ImNsLWxiNjBvaW5vODIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlcl9tcl9j c3NfYXR0ciBqcy1yZWFkbXNnLW1zZ19tcl9jc3NfYXR0ciI+PGRpdj48ZGl2Pis8YnI+Kzxicj4r ZGVmIGlyX21vZGUob3ApOjxicj4rIG1vZGUgPSAnJzxicj4rIGlyX21vZGUgPSBpbnQobGpfaXJf bW9kZSgpW29wXSBeIElSTV9XKTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv YmxvY2txdW90ZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3Ij48ZGl2IGNs YXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6 MXB4IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4Ij48ZGl2Pjxk aXY+PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVyX21yX2Nz c19hdHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+KyBpZiBpcl9tb2Rl ID09IElSTV9DOjxicj4rIG1vZGUgPSAnQyc8YnI+KyBlbGlmIGlyX21vZGUgPT0gSVJNX0E6PGJy PisgbW9kZSA9ICdBJzxicj4rIGVsaWYgaXJfbW9kZSA9PSBJUk1fTDo8YnI+KyBtb2RlID0gJ0wn PGJyPisgZWxpZiBpcl9tb2RlID09IElSTV9TOjxicj4rIG1vZGUgPSAnUyc8YnI+KyBlbHNlOjxi cj4rIG1vZGUgPSAnTic8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2Nr cXVvdGU+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2wtMXZoZHR5NG5kNyI+PGRpdiBjbGFzcz0i bWFpbC1xdW90ZS1jb2xsYXBzZSI+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBz b2xpZCAjMDg1N0E2O21hcmdpbjoxMHB4O3BhZGRpbmc6MCAwIDAgMTBweCI+PGRpdj48ZGl2Pjxk aXYgY2xhc3M9ImNsLWxiNjBvaW5vODIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlcl9tcl9jc3NfYXR0 ciBqcy1yZWFkbXNnLW1zZ19tcl9jc3NfYXR0ciI+PGRpdj48ZGl2PisgbW9kZSArPSAnVycgaWYg aXJfbW9kZSAmYW1wOyBJUk1fVyBlbHNlICcnPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PjxkaXY+TWF5IGJlIHRhYmxlIHdpdGggMTYg aXRlbXMgYW5kIGNvbW1lbnRzJm5ic3A7d2lsbCBiZSBtb3JlIGNsZWFyPyZuYnNwO0UuIGcuJm5i c3A7cmV0dXJuIFhYWFsobGpfaXJfbW9kZSgpW29wXSAmYW1wOyAwYjExMTEwMDAwKSZuYnNwOyZn dDsmZ3Q7IDRdPC9kaXY+PGRpdj5BbmQgaXQgd2lsbCBjb250YWluIGludmFsaWQgdmFsdWVzIGFs c28uPC9kaXY+PGRpdj4jICZsdDtmbGFnIGJpdHMgaW4gYSBjb21tZW50Jmd0OzwvZGl2PjxkaXY+ WFhYWzBiMDAwMF0gPSDigJhOV+KAmSAjJm5ic3A7Tm9ybWFsL1JlZiB8Jm5ic3A7IU5vbi13ZWFr IGd1YXJkPC9kaXY+PGRpdj5YWFhbMGIwMDAxXSA9IOKAmENX4oCZICMgQ29tbXV0YXRpdmUgfCZu YnNwOyFOb24td2VhayBndWFyZDwvZGl2PjxkaXY+WFhYWzBiMDAxMV0gPSDigJhJbnZhbGlk4oCZ PC9kaXY+PGRpdj4uLi48YnI+WFhYWzBiMTAwMF0gPSDigJhO4oCZICMgTm9ybWFsL1JlZiB8Jm5i c3A7Tm9uLXdlYWsgZ3VhcmQ8L2Rpdj48ZGl2PlhYWFswYjEwMDFdID0g4oCYQ+KAmSAjIENvbW11 dGF0aXZlIHwmbmJzcDtOb24td2VhayBndWFyZDwvZGl2PjxkaXY+WFhYWzBiMTAxMV0gPSDigJhJ bnZhbGlk4oCZPC9kaXY+PGRpdj4uLi48L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3Ij48 ZGl2IGNsYXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVy LWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4Ij48 ZGl2PjxkaXY+PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVy X21yX2Nzc19hdHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+KyByZXR1 cm4gbW9kZTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48 L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3Ij48ZGl2IGNsYXNzPSJtYWlsLXF1 b3RlLWNvbGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMw ODU3QTY7bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4Ij48ZGl2PjxkaXY+PGRpdiBjbGFz cz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVyX21yX2Nzc19hdHRyIGpzLXJl YWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+Kzxicj4rPGJyPitJUlRZUEVTID0gWzxi cj4rICduaWwnLDxicj4rICdmYWwnLDxicj4rICd0cnUnLDxicj4rICdsdWQnLDxicj4rICdzdHIn LDxicj4rICdwMzInLDxicj4rICd0aHInLDxicj4rICdwcm8nLDxicj4rICdmdW4nLDxicj4rICdw NjQnLDxicj4rICdjZHQnLDxicj4rICd0YWInLDxicj4rICd1ZHQnLDxicj4rICdmbHQnLDxicj4r ICdudW0nLDxicj4rICdpOCAnLDxicj4rICd1OCAnLDxicj4rICdpMTYnLDxicj4rICd1MTYnLDxi cj4rICdpbnQnLDxicj4rICd1MzInLDxicj4rICdpNjQnLDxicj4rICd1NjQnLDxicj4rICdzZnAn LDxicj4rXTxicj4rPGJyPis8YnI+K0lSVF9OVU0gPSAxNDxicj4rYXNzZXJ0IElSVFlQRVNbSVJU X05VTV0gPT0gJ251bScsICdpbmNvcnJlY3QgSVJUX05VTSBkZWZpbml0aW9uJzxicj4rPGJyPis8 YnI+K0lSRklFTERTID0gWzxicj4rICdzdHIubGVuJyw8YnI+KyAnZnVuYy5lbnYnLDxicj4rICdm dW5jLnBjJyw8YnI+KyAnZnVuYy5mZmlkJyw8YnI+KyAndGhyZWFkLmVudicsPGJyPisgJ3RhYi5t ZXRhJyw8YnI+KyAndGFiLmFycmF5Jyw8YnI+KyAndGFiLm5vZGUnLDxicj4rICd0YWIuYXNpemUn LDxicj4rICd0YWIuaG1hc2snLDxicj4rICd0YWIubm9tbScsPGJyPisgJ3VkYXRhLm1ldGEnLDxi cj4rICd1ZGF0YS51ZHR5cGUnLDxicj4rICd1ZGF0YS5maWxlJyw8YnI+KyAnY2RhdGEuY3R5cGVp ZCcsPGJyPisgJ2NkYXRhLnB0cicsPGJyPisgJ2NkYXRhLmludCcsPGJyPisgJ2NkYXRhLmludDY0 Jyw8YnI+KyAnY2RhdGEuaW50NjRfNCcsPGJyPitdPGJyPis8YnI+Kzxicj4rSVJGUE1TID0gWzxi cj4rICdmbG9vcicsPGJyPisgJ2NlaWwnLDxicj4rICd0cnVuYycsPGJyPisgJ3NxcnQnLDxicj4r ICdleHAyJyw8YnI+KyAnbG9nJyw8YnI+KyAnbG9nMicsPGJyPisgJ290aGVyJzxicj4rXTxicj4r PGJyPis8YnI+KyMgRG9uJ3QgdXNlICpbIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi48 YnI+K1JFR0lTVEVSUyA9IHsneDY0JzogWzxicj4rICdyYXgnLDxicj4rICdyY3gnLDxicj4rICdy ZHgnLDxicj4rICdyYngnLDxicj4rICdyc3AnLDxicj4rICdyYnAnLDxicj4rICdyc2knLDxicj4r ICdyZGknLDxicj4rXSArIFs8YnI+KyAncnt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoOCwg MTYpICMgcjggLi4gcjE1PGJyPitdICsgWzxicj4rICd4bW17fScuZm9ybWF0KGkpIGZvciBpIGlu IHJhbmdlKDAsIDE2KSAjIHhtbTAgLi4geG1tMTU8YnI+K10sICdhcm02NCc6IFs8YnI+KyAneHt9 Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzEpICMgeDAgLi4geDMwPGJyPitdICsgWydz cCddICsgWyAjIHgzMTxicj4rICdke30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMikg IyBkMCAuLiBkMzE8YnI+K119PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9i bG9ja3F1b3RlPjwvZGl2PjwvZGl2PjxkaXY+SXQgc2VlbXMsIHRoZSZuYnNwO+KAmGFybTY04oCZ IHJlZ2lzdGVycyBhcmUgbWlzc2VkLjwvZGl2PjxkaXYgY2xhc3M9ImNsLTF2aGR0eTRuZDciPjxk aXYgY2xhc3M9Im1haWwtcXVvdGUtY29sbGFwc2UiPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXIt bGVmdDoxcHggc29saWQgIzA4NTdBNjttYXJnaW46MTBweDtwYWRkaW5nOjAgMCAwIDEwcHgiPjxk aXY+PGRpdj48ZGl2IGNsYXNzPSJjbC1sYjYwb2lubzgyIj48ZGl2IGNsYXNzPSJqcy1oZWxwZXJf bXJfY3NzX2F0dHIganMtcmVhZG1zZy1tc2dfbXJfY3NzX2F0dHIiPjxkaXY+PGRpdj4rPGJyPis8 YnI+K0lSX0NBTExTID0gWzxicj4rICdsal9zdHJfY21wJyw8YnI+KyAnbGpfc3RyX2ZpbmQnLDxi cj4rICdsal9zdHJfbmV3Jyw8YnI+KyAnbGpfc3Ryc2Nhbl9udW0nLDxicj4rICdsal9zdHJmbXRf aW50Jyw8YnI+KyAnbGpfc3RyZm10X251bScsPGJyPisgJ2xqX3N0cmZtdF9jaGFyJyw8YnI+KyAn bGpfc3RyZm10X3B1dGludCcsPGJyPisgJ2xqX3N0cmZtdF9wdXRudW0nLDxicj4rICdsal9zdHJm bXRfcHV0cXVvdGVkJyw8YnI+KyAnbGpfc3RyZm10X3B1dGZ4aW50Jyw8YnI+KyAnbGpfc3RyZm10 X3B1dGZudW1faW50Jyw8YnI+KyAnbGpfc3RyZm10X3B1dGZudW1fdWludCcsPGJyPisgJ2xqX3N0 cmZtdF9wdXRmbnVtJyw8YnI+KyAnbGpfc3RyZm10X3B1dGZzdHInLDxicj4rICdsal9zdHJmbXRf cHV0ZmNoYXInLDxicj4rICdsal9idWZfcHV0bWVtJyw8YnI+KyAnbGpfYnVmX3B1dHN0cicsPGJy PisgJ2xqX2J1Zl9wdXRjaGFyJyw8YnI+KyAnbGpfYnVmX3B1dHN0cl9yZXZlcnNlJyw8YnI+KyAn bGpfYnVmX3B1dHN0cl9sb3dlcicsPGJyPisgJ2xqX2J1Zl9wdXRzdHJfdXBwZXInLDxicj4rICds al9idWZfcHV0c3RyX3JlcCcsPGJyPisgJ2xqX2J1Zl9wdXR0YWInLDxicj4rICdsal9idWZfdG9z dHInLDxicj4rICdsal90YWJfbmV3X2FoJyw8YnI+KyAnbGpfdGFiX25ldzEnLDxicj4rICdsal90 YWJfZHVwJyw8YnI+KyAnbGpfdGFiX2NsZWFyJyw8YnI+KyAnbGpfdGFiX25ld2tleScsPGJyPisg J2xqX3RhYl9sZW4nLDxicj4rICdsal9nY19zdGVwX2ppdCcsPGJyPisgJ2xqX2djX2JhcnJpZXJ1 dicsPGJyPisgJ2xqX21lbV9uZXdnY28nLDxicj4rICdsal9tYXRoX3JhbmRvbV9zdGVwJyw8YnI+ KyAnbGpfdm1fbW9kaScsPGJyPisgJ2xvZzEwJyw8YnI+KyAnZXhwJyw8YnI+KyAnc2luJyw8YnI+ KyAnY29zJyw8YnI+KyAndGFuJyw8YnI+KyAnYXNpbicsPGJyPisgJ2Fjb3MnLDxicj4rICdhdGFu Jyw8YnI+KyAnc2luaCcsPGJyPisgJ2Nvc2gnLDxicj4rICd0YW5oJyw8YnI+KyAnZnB1dGMnLDxi cj4rICdmd3JpdGUnLDxicj4rICdmZmx1c2gnLDxicj4rICdsal92bV9mbG9vcicsPGJyPisgJ2xq X3ZtX2NlaWwnLDxicj4rICdsal92bV90cnVuYycsPGJyPisgJ3NxcnQnLDxicj4rICdsb2cnLDxi cj4rICdsal92bV9sb2cyJyw8YnI+KyAncG93Jyw8YnI+KyAnYXRhbjInLDxicj4rICdsZGV4cCcs PGJyPisgJ2xqX3ZtX3RvYml0Jyw8YnI+KyAnc29mdGZwX2FkZCcsPGJyPisgJ3NvZnRmcF9zdWIn LDxicj4rICdzb2Z0ZnBfbXVsJyw8YnI+KyAnc29mdGZwX2RpdicsPGJyPisgJ3NvZnRmcF9jbXAn LDxicj4rICdzb2Z0ZnBfaTJkJyw8YnI+KyAnc29mdGZwX2QyaScsPGJyPisgJ2xqX3ZtX3NmbWlu Jyw8YnI+KyAnbGpfdm1fc2ZtYXgnLDxicj4rICdsal92bV90b2ludGcnLDxicj4rICdzb2Z0ZnBf dWkyZCcsPGJyPisgJ3NvZnRmcF9mMmQnLDxicj4rICdzb2Z0ZnBfZDJ1aScsPGJyPisgJ3NvZnRm cF9kMmYnLDxicj4rICdzb2Z0ZnBfaTJmJyw8YnI+KyAnc29mdGZwX3VpMmYnLDxicj4rICdzb2Z0 ZnBfZjJpJyw8YnI+KyAnc29mdGZwX2YydWknLDxicj4rICdmcDY0X2wyZCcsPGJyPisgJ2ZwNjRf dWwyZCcsPGJyPisgJ2ZwNjRfbDJmJyw8YnI+KyAnZnA2NF91bDJmJyw8YnI+KyAnZnA2NF9kMmwn LDxicj4rICdmcDY0X2QydWwnLDxicj4rICdmcDY0X2YybCcsPGJyPisgJ2ZwNjRfZjJ1bCcsPGJy PisgJ2xqX2Nhcml0aF9kaXZpNjQnLDxicj4rICdsal9jYXJpdGhfZGl2dTY0Jyw8YnI+KyAnbGpf Y2FyaXRoX21vZGk2NCcsPGJyPisgJ2xqX2Nhcml0aF9tb2R1NjQnLDxicj4rICdsal9jYXJpdGhf cG93aTY0Jyw8YnI+KyAnbGpfY2FyaXRoX3Bvd3U2NCcsPGJyPisgJ2xqX2NkYXRhX25ld3YnLDxi cj4rICdsal9jZGF0YV9zZXRmaW4nLDxicj4rICdzdHJsZW4nLDxicj4rICdtZW1jcHknLDxicj4r ICdtZW1zZXQnLDxicj4rICdsal92bV9lcnJubycsPGJyPisgJ2xqX2Nhcml0aF9tdWw2NCcsPGJy PisgJ2xqX2Nhcml0aF9zaGw2NCcsPGJyPisgJ2xqX2Nhcml0aF9zaHI2NCcsPGJyPisgJ2xqX2Nh cml0aF9zYXI2NCcsPGJyPisgJ2xqX2Nhcml0aF9yb2w2NCcsPGJyPisgJ2xqX2Nhcml0aF9yb3I2 NCcsPGJyPitdPGJyPis8YnI+Kzxicj4rZGVmIHJlZ25hbWUocmVnX251bWJlcik6PGJyPisgaWYg bm90IGhhc2F0dHIoZGJnLCAnYXJjaCcpOjxicj4rIGRiZy5hcmNoID0gZGJnLmRldGVjdF9hcmNo KCk8YnI+KyByZXR1cm4gUkVHSVNURVJTW2RiZy5hcmNoXVtyZWdfbnVtYmVyXTxicj4rPGJyPis8 YnI+K2RlZiBsaXRuYW1lX3Nsb2FkKG1vZGUpOjxicj4rIG1vZGVzX3N0ciA9ICcnPGJyPisgbW9k ZXNfc3RyICs9ICdQJyBpZiBtb2RlICZhbXA7IDB4MSBlbHNlICcnPGJyPisgbW9kZXNfc3RyICs9 ICdGJyBpZiBtb2RlICZhbXA7IDB4MiBlbHNlICcnPGJyPisgbW9kZXNfc3RyICs9ICdUJyBpZiBt b2RlICZhbXA7IDB4NCBlbHNlICcnPGJyPisgbW9kZXNfc3RyICs9ICdDJyBpZiBtb2RlICZhbXA7 IDB4OCBlbHNlICcnPGJyPisgbW9kZXNfc3RyICs9ICdSJyBpZiBtb2RlICZhbXA7IDB4MTAgZWxz ZSAnJzxicj4rIG1vZGVzX3N0ciArPSAnSScgaWYgbW9kZSAmYW1wOyAweDIwIGVsc2UgJyc8YnI+ KyByZXR1cm4gbW9kZXNfc3RyPGJyPis8YnI+Kzxicj4rZGVmIGxpdG5hbWVfeGxvYWQobW9kZSk6 PGJyPisgZmxhZ3MgPSBbJy0nLCAnUicsICdWJywgJ1JWJywgJ1UnLCAnUlUnLCAnVlUnLCAnUlZV J108L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+ PC9kaXY+PGRpdj5Eb2VzIHdlIG5lZWQgYSZuYnNwO3JhbmdlIGNoZWNrIGFzIGluJm5ic3A7bGl0 bmFtZV9idWZoZHIoKT88L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3Ij48ZGl2IGNsYXNz PSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4 IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4Ij48ZGl2PjxkaXY+ PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVyX21yX2Nzc19h dHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+KyByZXR1cm4gZmxhZ3Nb bW9kZV08YnI+Kzxicj4rPGJyPitkZWYgbGl0bmFtZV9jb252KG1vZGUpOjwvZGl2PjwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48ZGl2PkRvZXMg d2UgbmVlZCBzb21lIHJhbmdlIGNoZWNraW5nIGhlcmU/PC9kaXY+PGRpdiBjbGFzcz0iY2wtMXZo ZHR5NG5kNyI+PGRpdiBjbGFzcz0ibWFpbC1xdW90ZS1jb2xsYXBzZSI+PGJsb2NrcXVvdGUgc3R5 bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2O21hcmdpbjoxMHB4O3BhZGRpbmc6MCAw IDAgMTBweCI+PGRpdj48ZGl2PjxkaXYgY2xhc3M9ImNsLWxiNjBvaW5vODIiPjxkaXYgY2xhc3M9 ImpzLWhlbHBlcl9tcl9jc3NfYXR0ciBqcy1yZWFkbXNnLW1zZ19tcl9jc3NfYXR0ciI+PGRpdj48 ZGl2PisgSVJDT05WX0RTSCA9IDU8YnI+KyBJUkNPTlZfQ1NIID0gMTI8YnI+KyBJUkNPTlZfU0VY VCA9IDB4ODAwPGJyPisgSVJDT05WX1NSQ01BU0sgPSAweDFmPGJyPisgY29udl9zdHIgPSAne3Rv fS57ZnJtfScuZm9ybWF0KDxicj4rIHRvPUlSVFlQRVNbKG1vZGUgJmd0OyZndDsgSVJDT05WX0RT SCkgJmFtcDsgSVJDT05WX1NSQ01BU0tdLDxicj4rIGZybT1JUlRZUEVTW21vZGUgJmFtcDsgSVJD T05WX1NSQ01BU0tdPGJyPisgKTxicj4rIGNvbnZfc3RyICs9ICcgc2V4dCcgaWYgbW9kZSAmYW1w OyBJUkNPTlZfU0VYVCBlbHNlICcnPGJyPisgbnVtMmludF9tb2RlID0gbW9kZSAmZ3Q7Jmd0OyBJ UkNPTlZfQ1NIPGJyPisgaWYgbnVtMmludF9tb2RlID09IDI6PGJyPisgY29udl9zdHIgKz0gJyBp bmRleCc8YnI+KyBlbGlmIG51bTJpbnRfbW9kZSA9PSAzOjxicj4rIGNvbnZfc3RyICs9ICcgY2hl Y2snPGJyPisgcmV0dXJuIGNvbnZfc3RyPGJyPis8YnI+Kzxicj4rZGVmIGxpdG5hbWVfaXJmaWVs ZChtb2RlKTo8YnI+KyBpZiBtb2RlICZndDs9IGxlbihJUkZJRUxEUyk6PGJyPisgcmV0dXJuICd1 bmtub3duIGlyZmllbGQnPGJyPisgcmV0dXJuIElSRklFTERTW21vZGVdPGJyPis8YnI+Kzxicj4r ZGVmIGxpdG5hbWVfZnBtKG1vZGUpOjxicj4rIGlmIG1vZGUgJmd0Oz0gbGVuKElSRlBNUyk6PGJy PisgcmV0dXJuICd1bmtub3duIGlyZnBtJzxicj4rIHJldHVybiBJUkZQTVNbbW9kZV08YnI+Kzxi cj4rPGJyPitkZWYgbGl0bmFtZV9idWZoZHIobW9kZSk6PGJyPisgbW9kZXMgPSBbJ1JFU0VUJywg J0FQUEVORCddPGJyPisgaWYgbW9kZSAmZ3Q7PSBsZW4obW9kZXMpOjxicj4rIHJldHVybiAndW5r bm93biBidWZoZHIgbW9kZSc8YnI+KyByZXR1cm4gbW9kZXNbbW9kZV08YnI+Kzxicj4rPGJyPitk ZWYgbGl0bmFtZV90b3N0cihtb2RlKTo8YnI+KyBtb2RlcyA9IFsnSU5UJywgJ05VTScsICdDSEFS J108YnI+KyBpZiBtb2RlICZndDs9IGxlbihtb2Rlcyk6PGJyPisgcmV0dXJuICd1bmtub3duIHRv c3RyIG1vZGUnPGJyPisgcmV0dXJuIG1vZGVzW21vZGVdPGJyPis8YnI+Kzxicj4rSVJfTElUTkFN RVMgPSB7PGJyPisgJ1NMT0FEJzogbGl0bmFtZV9zbG9hZCw8YnI+KyAnWExPQUQnOiBsaXRuYW1l X3hsb2FkLDxicj4rICdDT05WJzogbGl0bmFtZV9jb252LDxicj4rICdGTE9BRCc6IGxpdG5hbWVf aXJmaWVsZCw8YnI+KyAnRlJFRic6IGxpdG5hbWVfaXJmaWVsZCw8YnI+KyAnRlBNQVRIJzogbGl0 bmFtZV9mcG0sPGJyPisgJ0JVRkhEUic6IGxpdG5hbWVfYnVmaGRyLDxicj4rICdUT1NUUic6IGxp dG5hbWVfdG9zdHI8YnI+K308YnI+Kzxicj4rIyBBZGRpdGlvbmFsIGZsYWdzLjxicj4rSVJUX01B UksgPSAweDIwICMgTWFya2VyIGZvciBtaXNjLiBwdXJwb3Nlcy48YnI+K0lSVF9JU1BISSA9IDB4 NDAgIyBJbnN0cnVjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IFBISSBvcGVyYW5kLjxicj4rSVJUX0dV QVJEID0gMHg4MCAjIEluc3RydWN0aW9uIGlzIGEgZ3VhcmQuPGJyPisjIE1hc2tzLjxicj4rSVJU X1RZUEUgPSAweDFmPGJyPis8YnI+K1JJRF9OT05FID0gMHg4MDxicj4rUklEX01BU0sgPSAweDdm PGJyPitSSURfSU5JVCA9IChSSURfTk9ORSB8IFJJRF9NQVNLKTxicj4rUklEX1NJTksgPSAoUklE X0lOSVQgLSAxKTxicj4rUklEX1NVTksgPSAoUklEX0lOSVQgLSAyKTxicj4rIyBTcGlsbCBzbG90 IDAgbWVhbnMgbm8gc3BpbGwgc2xvdCBoYXMgYmVlbiBhbGxvY2F0ZWQuPGJyPitTUFNfTk9ORSA9 IDA8YnI+Kzxicj4rUkVGX0JJQVMgPSAweDgwMDA8YnI+Kzxicj4rVFJFRl9TSElGVCA9IDI0PGJy Pis8YnI+K1RSRUZfUkVGTUFTSyA9IDB4MDAwMGZmZmY8YnI+K1RSRUZfRlJBTUUgPSAweDAwMDEw MDAwPGJyPitUUkVGX0NPTlQgPSAweDAwMDIwMDAwPGJyPisjIFNuYXBzaG90IGZsYWdzIGFuZCBt YXNrcy48YnI+K1NOQVBfRlJBTUUgPSAweDAxMDAwMDxicj4rU05BUF9TT0ZURlBOVU0gPSAweDA4 MDAwMDxicj4rPGJyPis8YnI+K2RlZiBpcnRfdHlwZSh0KTo8YnI+KyByZXR1cm4gZGJnLmNhc3Qo J0lSVHlwZScsIHRbJ2lydCddICZhbXA7IElSVF9UWVBFKTxicj4rPGJyPis8YnI+K2RlZiB0cmVm X3R5cGUodHIpOjxicj4rIHJldHVybiBkYmcuY2FzdCgnSVJUeXBlJywgKHRyICZndDsmZ3Q7IFRS RUZfU0hJRlQpICZhbXA7IElSVF9UWVBFKTxicj4rPGJyPis8YnI+K2RlZiB0cmVmX3JlZih0cik6 PGJyPisgcmV0dXJuIGludCh0ciAmYW1wOyBUUkVGX1JFRk1BU0spPGJyPis8YnI+Kzxicj4rZGVm IGlydF9pc21hcmtlZCh0KTo8YnI+KyByZXR1cm4gdFsnaXJ0J10gJmFtcDsgSVJUX01BUks8L2Rp dj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+ PGRpdj5JIHByb3Bvc2UgZXhwbGljaXQgYm9vbCBjYXN0ICghPSAwKSBoZXJlIGFuZCBiZWxvdy48 L2Rpdj48ZGl2IGNsYXNzPSJjbC0xdmhkdHk0bmQ3Ij48ZGl2IGNsYXNzPSJtYWlsLXF1b3RlLWNv bGxhcHNlIj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7 bWFyZ2luOjEwcHg7cGFkZGluZzowIDAgMCAxMHB4Ij48ZGl2PjxkaXY+PGRpdiBjbGFzcz0iY2wt bGI2MG9pbm84MiI+PGRpdiBjbGFzcz0ianMtaGVscGVyX21yX2Nzc19hdHRyIGpzLXJlYWRtc2ct bXNnX21yX2Nzc19hdHRyIj48ZGl2PjxkaXY+Kzxicj4rPGJyPitkZWYgaXJ0X2lzcGhpKHQpOjxi cj4rIHJldHVybiB0WydpcnQnXSAmYW1wOyBJUlRfSVNQSEk8YnI+Kzxicj4rPGJyPitkZWYgaXJ0 X2lzZ3VhcmQodCk6PGJyPisgcmV0dXJuIHRbJ2lydCddICZhbXA7IElSVF9HVUFSRDxicj4rPGJy Pis8YnI+K2RlZiBpcnRfdG9pdHlwZShpcnQpOjxicj4rIHQgPSBpcnRfdHlwZShpcnQpPGJyPisg aWYgTEpfRFVBTE5VTSBhbmQgdCAmZ3Q7IElSVF9OVU06PGJyPisgcmV0dXJuIExKX1RbJ05VTVgn XTxicj4rIGVsc2U6PGJyPisgcmV0dXJuIGkybm90dTMyKHQpPGJyPis8YnI+Kzxicj4rZGVmIGly X2twdHIoaXIpOjxicj4rIGlybmFtZSA9IElSU1tpclsnbyddXTxicj4rIGFzc2VydCBpcm5hbWUg PT0gJ0tQVFInIG9yIGlybmFtZSA9PSAnS0tQVFInLCAnd3JvbmcgSVIgZm9yIGlyX2lwdHIoKSc8 YnI+KyByZXR1cm4gbXJlZigndm9pZCAqJywgZGJnLmNhc3QoJ0lSSW5zIConLCBkYmcuYWRkcmVz cyhpcikpW0xKX0dDNjRdWydwdHInXSk8YnI+Kzxicj4rPGJyPitkZWYgaXJfa2djKGlyKTo8YnI+ KyBpcm5hbWUgPSBJUlNbaXJbJ28nXV08YnI+KyBhc3NlcnQgaXJuYW1lID09ICdLR0MnLCAnd3Jv bmcgSVIgZm9yIGlyX2tnYygpJzxicj4rIHJldHVybiBnY3JlZihkYmcuY2FzdCgnSVJJbnMgKics IGRiZy5hZGRyZXNzKGlyKSlbTEpfR0M2NF1bJ2djciddKTxicj4rPGJyPis8YnI+K2RlZiBpcl9r bnVtKGlyKTo8YnI+KyBpcm5hbWUgPSBJUlNbaXJbJ28nXV08YnI+KyBhc3NlcnQgaXJuYW1lID09 ICdLTlVNJywgJ3dyb25nIElSIGZvciBpcl9rbnVtKCknPGJyPisgcmV0dXJuIGRiZy5hZGRyZXNz KGRiZy5jYXN0KCdJUklucyAqJywgZGJnLmFkZHJlc3MoaXIpKVsxXVsndHYnXSk8YnI+Kzxicj4r PGJyPitkZWYgaXJfa2ludDY0KGlyKTo8YnI+KyBpcm5hbWUgPSBJUlNbaXJbJ28nXV08YnI+KyBh c3NlcnQgaXJuYW1lID09ICdLSU5UNjQnLCAnd3JvbmcgSVIgZm9yIGlyX2tudW0oKSc8YnI+KyBy ZXR1cm4gZGJnLmFkZHJlc3MoZGJnLmNhc3QoJ0lSSW5zIConLCBkYmcuYWRkcmVzcyhpcikpWzFd Wyd0diddKTxicj4rPGJyPis8YnI+IyBEdW1wZXJzLjxicj48YnI+IyBHQ29iaiBkdW1wZXJzLjxi cj5AQCAtMTQ2Nyw2ICsyMjgxLDMyNSBAQCBkZWYgZHVtcF9mdW5jKGZ1bmMpOjxicj5yZXR1cm4g J2Zhc3QgZnVuY3Rpb24gI3t9XG4nLmZvcm1hdChpbnQoZmZpZCkpPGJyPjxicj48YnI+KyMgSklU IGR1bXBlcnMuPGJyPis8YnI+Kzxicj4rZGVmIGR1bXBfY2FsbF9mdW5jKHRyYWNlLCBjYWxsb3Ap Ojxicj4rIGN0eXBlID0gJyc8YnI+KyBpZiBjYWxsb3AgJmd0OyAwOjxicj4rIGlyID0gdHJhY2Vb J2lyJ11bUkVGX0JJQVMgKyBjYWxsb3BdPGJyPisgaWYgSVJUWVBFU1tpcnRfdHlwZShpclsndCdd KV0gPT0gJ25pbCc6ICMgbmlsID09IENBUkcoZnVuYywgY3R5cGUpPGJyPisgY2FsbG9wID0gaW50 KGlyWydvcDEnXSkgLSBSRUZfQklBUzxicj4rIGNkdF9pZHhfaXJrID0gdHJhY2VbJ2lyJ11baXJb J29wMiddXTxicj4rIGFzc2VydCBJUlNbY2R0X2lkeF9pcmtbJ28nXV0gPT0gJ0tJTlQnLCBcPGJy PisgJ3VuZXhwZWN0ZWQgSVIgZm9yIGN0eXBlIHN0b3JhZ2UnPGJyPisgY3R5cGVfaWR4ID0gY2R0 X2lkeF9pcmtbJ2knXTxicj4rIGN0eXBlID0gJ2N0eXBlOiB7fScuZm9ybWF0KGN0eXBlX2lkeCk8 YnI+Kzxicj4rIGZ1bmNfc3RyID0gJyc8YnI+KyBpZiBjYWxsb3AgJmx0OyAwOjxicj4rIGlyayA9 IHRyYWNlWydpciddW1JFRl9CSUFTICsgY2FsbG9wXTxicj4rIGFzc2VydCBJUlNbaXJrWydvJ11d ID09ICdLSU5UNjQnLCBcPGJyPisgJ3VuZXhwZWN0ZWQgSVIgZm9yIEZGSSBmdW5jdGlvbiBzdG9y YWdlJzxicj4rIGZ1bmNfYWRkciA9IGludChpcl9raW50NjQoaXJrKVsndTY0J10pPGJyPisgIyBU T0RPOiBTeW1ib2wgZGVtYW5nbGluZy48YnI+KyBmdW5jX3N0ciA9ICdbezojeH1dJy5mb3JtYXQo ZnVuY19hZGRyKTxicj4rIGVsc2U6PGJyPisgZnVuY19zdHIgPSAnW3s6MDRkfV0nLmZvcm1hdChj YWxsb3ApPGJyPis8YnI+KyByZXR1cm4gZnVuY19zdHIsIGN0eXBlPGJyPis8YnI+Kzxicj4rZGVm IGR1bXBfY2FsbF9hcmdzKHRyYWNlLCBpbnMpOjxicj4rIGlmIGlucyAmbHQ7IDA6PGJyPisgcmV0 dXJuICd7e3t9fX0nLmZvcm1hdChkdW1wX2lyayh0cmFjZSwgaW5zKSk8YnI+KyBlbHNlOjxicj4r IGlyID0gdHJhY2VbJ2lyJ11bUkVGX0JJQVMgKyBpbnNdPGJyPisgaXJuYW1lID0gSVJTW2lyWydv J11dPGJyPisgaWYgaXJuYW1lID09ICdDQVJHJzo8YnI+KyBsYXN0X2FyZyA9ICcnPGJyPisgYXJn cyA9IGR1bXBfY2FsbF9hcmdzKHRyYWNlLCBpbnQoaXJbJ29wMSddKSAtIFJFRl9CSUFTKTxicj4r IG9wMiA9IGludChpclsnb3AyJ10pIC0gUkVGX0JJQVM8YnI+KyBpZiBvcDIgJmx0OyAwOjxicj4r IGxhc3RfYXJnID0gJ3t7e319fScuZm9ybWF0KGR1bXBfaXJrKHRyYWNlLCBvcDIpKTxicj4rIGVs c2U6PGJyPisgbGFzdF9hcmcgPSAne3t7OjA0ZH19fScuZm9ybWF0KG9wMik8YnI+KyByZXR1cm4g YXJncyArICcsICcgKyBsYXN0X2FyZzxicj4rIGVsc2U6PGJyPisgcmV0dXJuICd7e3s6MDRkfX19 Jy5mb3JtYXQoaW5zKTxicj4rPGJyPis8YnI+KyMgU3BlY2lhbCBGUCBjb25zdGFudC48YnI+K0NP TlNUX0JJQVMgPSAyICoqIDUyICsgMiAqKiA1MTxicj4rPGJyPis8YnI+K2RlZiBkdW1wX2lyayh0 cmFjZSwgaWR4KTo8YnI+KyByZWYgPSBpZHggKyBSRUZfQklBUzxicj4rIGFzc2VydCByZWYgJmd0 Oz0gdHJhY2VbJ25rJ10gYW5kIHJlZiAmbHQ7IFJFRl9CSUFTLCAnYmFkIGNvbnN0YW50IGluIElS IGR1bXAnPGJyPisgaXJpbnMgPSB0cmFjZVsnaXInXVtyZWZdPGJyPisgaXJuYW1lID0gSVJTW2ly aW5zWydvJ11dPGJyPisgc2xvdCA9ICcnPGJyPisgaWYgaXJuYW1lID09ICdLU0xPVCc6PGJyPisg c2xvdCA9ICcgS1NMT1Q6IEB7fScuZm9ybWF0KGludChpcmluc1snb3AyJ10pKTxicj4rIGlyaW5z ID0gdHJhY2VbJ2lyJ11baXJpbnNbJ29wMSddXTxicj4rIGlybmFtZSA9IElSU1tpcmluc1snbydd XTxicj4rPGJyPisgaXJ0eXBlID0gaXJpbnNbJ3QnXTxicj4rIGlmIGlybmFtZSA9PSAnS1BSSSc6 PGJyPisgdHlwZW5hbWUgPSB0eXBlbmFtZXMoaXJ0X3RvaXR5cGUoaXJ0eXBlKSk8YnI+KyAjIFRy aXZpYWwgZHVtcCBmb3IgcHJpbWl0aXZlcy48YnI+KyBpcmsgPSB0dl9kdW1wZXJzLmdldCg8YnI+ KyB0eXBlbmFtZSwgZHVtcF9sal90dl9pbnZhbGlkICMgbm9xYTogRjgyMSAjIEdlbmVyYXRlZC48 YnI+KyApKDApPGJyPisgZWxpZiBpcm5hbWUgPT0gJ0tJTlQnOjxicj4rIGlyayA9ICdpbnRlZ2Vy IHt9Jy5mb3JtYXQoZGJnLmNhc3QoJ2ludDMyX3QnLCBpcmluc1snaSddKSk8YnI+KyBlbGlmIGly bmFtZSA9PSAnS0dDJzo8YnI+KyB0eXBlbmFtZSA9IHR5cGVuYW1lcyhpcnRfdG9pdHlwZShpcnR5 cGUpKTxicj4rIGlyayA9IGdjb19kdW1wZXJzLmdldCh0eXBlbmFtZSwgZHVtcF9sal9nY29faW52 YWxpZCkoaXJfa2djKGlyaW5zKSk8YnI+KyBlbGlmIGlybmFtZSA9PSAnS0tQVFInOjxicj4rIGFk ZHIgPSBpcl9rcHRyKGlyaW5zKTxicj4rIGlmIGFkZHIgPT0gZGJnLmFkZHJlc3MoRyhMKCkpWydu aWxub2RlJ10pOjxicj4rIHJldHVybiAnW2ctJmd0O25pbG5vZGVdJyArIHNsb3Q8YnI+KyBpcmsg PSAnW3t9XScuZm9ybWF0KHN0cng2NChhZGRyKSk8YnI+KyBlbGlmIGlybmFtZSA9PSAnS1BUUic6 PGJyPisgaXJrID0gJ1t7fV0nLmZvcm1hdChzdHJ4NjQoaXJfa3B0cihpcmlucykpKTxicj4rIGVs aWYgaXJuYW1lID09ICdLTlVMTCc6PGJyPisgaXJrID0gJ05VTEwnPGJyPisgZWxpZiBpcm5hbWUg PT0gJ0tOVU0nOjxicj4rIHR2X251bSA9IGlyX2tudW0oaXJpbnMpPGJyPisgaWYgZmxvYXQodHZf bnVtWyduJ10pID09IENPTlNUX0JJQVM6PGJyPisgcmV0dXJuICdiaWFzJzxicj4rIGlyayA9IGR1 bXBfbGpfdHZfbnVteCh0dl9udW0pPGJyPisgZWxpZiBpcm5hbWUgPT0gJ0tJTlQ2NCc6PGJyPisg aXJrID0gJ2ludDY0X3Qge30nLmZvcm1hdChkYmcuY2FzdCg8YnI+KyAnaW50NjRfdCcsIGludChp cl9raW50NjQoaXJpbnMpWyd1NjQnXSk8YnI+KyApKTxicj4rIGVsc2U6PGJyPisgcmV0dXJuICdV bmtub3duIElSSzogJyArIGlybmFtZTxicj4rIHJldHVybiBpcmsgKyBzbG90PGJyPis8YnI+Kzxi cj4rZGVmIGR1bXBfaXJpbnMoaXJpbnMsIHRyYWNlPU5vbmUpOjxicj4rIGlyb3AgPSBpbnQoaXJp bnNbJ28nXSk8YnI+KyBpZiBpcm9wICZndDs9IGxlbihJUlMpOjxicj4rIHJldHVybiAnSU5WQUxJ RCc8YnI+Kzxicj4rIGlybmFtZSA9IElSU1tpcm9wXTxicj4rIGxlZnRvcCA9IGlyX2xlZnQoaXJv cCk8YnI+KyByaWdodG9wID0gaXJfcmlnaHQoaXJvcCk8YnI+KyBpcnQgPSBpcmluc1sndCddPGJy PisgaXNfc2lua3N1bmsgPSBpcmluc1snciddID09IFJJRF9TSU5LIG9yIGlyaW5zWydyJ10gPT0g UklEX1NVTks8YnI+KyBmbGFncyA9ICd7aXNfc2lua3N1bmt9e2lzX21hcmtlZH17aXNfZ3VhcmR9 e2lzX3BoaX0nLmZvcm1hdCg8YnI+KyAjIFNpbmsgZmxhZyBzaG91bGQgYmUgdGhlIGZpcnN0IHRv IG1hdGNoIHNpbmsgc2xvdHMgZHVyaW5nPGJyPisgIyB0aGUgZHVtcCBvZiByZWdpc3RlcnMuPGJy PisgaXNfc2lua3N1bms9J30nIGlmIGlzX3NpbmtzdW5rIGVsc2UgJyAnLDxicj4rIGlzX21hcmtl ZD0nIScgaWYgaXJ0X2lzbWFya2VkKGlydCkgZWxzZSAnICcsPGJyPisgaXNfZ3VhcmQ9JyZndDsn IGlmIGlydF9pc2d1YXJkKGlydCkgZWxzZSAnICcsPGJyPisgaXNfcGhpPScrJyBpZiBpcnRfaXNw aGkoaXJ0KSBlbHNlICcgJzxicj4rICk8YnI+Kzxicj4rIGlmIG5vdCB0cmFjZTo8YnI+KyBnID0g RyhMKE5vbmUpKTxicj4rIGNvbXBpbGluZyA9IGppdF9zdGF0ZShnKSAhPSAnSURMRSc8YnI+KyBh c3NlcnQgY29tcGlsaW5nLCAnYXR0ZW1wdCB0byBkdW1wIElSIGZvciBKLmN1ciB0cmFjZSBpbiBi YWQgVk0gc3RhdGUnPGJyPisgdHJhY2UgPSBKKGcpWydjdXInXTxicj4rPGJyPisgbGVmdCA9ICcn PGJyPisgcmlnaHQgPSAnJzxicj4rIGxpc3JlZiA9IGxlZnRvcCA9PSAncmVmJzxicj4rIHJpc3Jl ZiA9IHJpZ2h0b3AgPT0gJ3JlZic8YnI+KyBvcDEgPSBpbnQoKGlyaW5zWydvcDEnXSAtIFJFRl9C SUFTKSBpZiBsaXNyZWYgZWxzZSBpcmluc1snb3AxJ10pPGJyPisgb3AyID0gaW50KChpcmluc1sn b3AyJ10gLSBSRUZfQklBUykgaWYgcmlzcmVmIGVsc2UgaXJpbnNbJ29wMiddKTwvZGl2PjwvZGl2 PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48ZGl2IGNs YXNzPSJjbC0xdmhkdHk0bmQ3Ij48ZGl2IGNsYXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj48Ymxv Y2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7bWFyZ2luOjEwcHg7 cGFkZGluZzowIDAgMCAxMHB4Ij48ZGl2PjxkaXY+PGRpdiBjbGFzcz0iY2wtbGI2MG9pbm84MiI+ PGRpdiBjbGFzcz0ianMtaGVscGVyX21yX2Nzc19hdHRyIGpzLXJlYWRtc2ctbXNnX21yX2Nzc19h dHRyIj48ZGl2PjxkaXY+Kzxicj4rIHNraXBfcmlnaHQgPSBGYWxzZTxicj4rIGlmIHJlLm1hdGNo KCdDQUxMJywgaXJuYW1lKTo8YnI+KyBjdHlwZSA9ICcnPGJyPisgYXJncyA9ICcnPGJyPisgaWYg cmlnaHRvcCA9PSAnbGl0Jzo8YnI+KyBmdW5jID0gSVJfQ0FMTFNbb3AyXTxicj4rIGVsc2U6PGJy PisgZnVuYywgY3R5cGUgPSBkdW1wX2NhbGxfZnVuYyh0cmFjZSwgb3AyKTxicj4rPGJyPisgaWYg b3AxICE9IC0xOjxicj4rIGFyZ3MgPSBkdW1wX2NhbGxfYXJncyh0cmFjZSwgaW50KG9wMSkpPGJy Pis8YnI+KyByZXR1cm4gJ3tmbGFnc30ge3R5cGV9IHtuYW1lOjZ9IFt7bW9kZToyfV0ge2Z9KHth cmdzfSkge2N0fVxuJy5mb3JtYXQoPGJyPisgZmxhZ3M9ZmxhZ3MsPGJyPisgbmFtZT1pcm5hbWUs PGJyPisgbW9kZT1pcl9tb2RlKGlyb3ApLDxicj4rIHR5cGU9SVJUWVBFU1tpcnRfdHlwZShpcnQp XSw8YnI+KyBjdD1jdHlwZSw8YnI+KyBhcmdzPWFyZ3MsPGJyPisgZj1mdW5jLDxicj4rICk8YnI+ KyBlbGlmIGlybmFtZSA9PSAnQ05FVycgYW5kIG9wMiA9PSAtMTo8YnI+KyBsZWZ0ID0gZHVtcF9p cmsodHJhY2UsIG9wMSk8YnI+KyBza2lwX3JpZ2h0ID0gVHJ1ZTxicj4rIGVsaWYgbGVmdG9wOjxi cj4rIGlmIG9wMSAmbHQ7IDA6PGJyPisgbGVmdCA9IGR1bXBfaXJrKHRyYWNlLCBvcDEpPGJyPisg ZWxpZiBsZWZ0b3AgPT0gJ2NzdCc6PGJyPisgaWR4ID0gaXJpbnMgLSBkYmcuYWRkcmVzcyh0cmFj ZVsnaXInXVtSRUZfQklBU10pPGJyPisgbGVmdCA9IGR1bXBfaXJrKHRyYWNlLCBpZHgpPGJyPisg ZWxzZTo8YnI+KyBsZWZ0ID0gKCd7OjA0ZH0nIGlmIGxpc3JlZiBlbHNlICcjezombHQ7M2R9Jyku Zm9ybWF0KG9wMSk8YnI+Kzxicj4rIGlmIHJpZ2h0b3A6PGJyPisgaWYgcmlnaHRvcCA9PSAnbGl0 Jzo8YnI+KyBsaXRuYW1lID0gSVJfTElUTkFNRVMuZ2V0KGlybmFtZSwgTm9uZSk8YnI+KyBpZiBs aXRuYW1lOjxicj4rICMgVHJ5IHRvIGhhbmRsZSBgbGpfaXJfZ2dmbG9hZCgpYC48YnI+KyBnZ2Zu YW1lID0gTm9uZTxicj4rIGlmIGlybmFtZSA9PSAnRkxPQUQnIGFuZCBsZWZ0ID09ICduaWwnIFw8 YnI+KyBhbmQgb3AyICZndDs9IGxlbihJUkZJRUxEUyk6PGJyPisgZ2dmbmFtZSA9IGdnZm5hbWVf Ynlfb2Zmc2V0KG9wMiAmbHQ7Jmx0OyAyKTxicj4rPGJyPisgaWYgZ2dmbmFtZTo8YnI+KyByaWdo dCA9IGdnZm5hbWU8YnI+KyBlbHNlOjxicj4rIHJpZ2h0ID0gbGl0bmFtZShvcDIpPGJyPisgZWxp ZiBpcm5hbWUgPT0gJ1VSRUZPJyBvciBpcm5hbWUgPT0gJ1VSRUZDJzo8YnI+KyByaWdodCA9ICcj ezombHQ7M2R9Jy5mb3JtYXQob3AyICZndDsmZ3Q7IDgpPGJyPisgZWxzZTo8YnI+KyByaWdodCA9 ICcjezombHQ7M2R9Jy5mb3JtYXQob3AyKTxicj4rIGVsaWYgb3AyICZsdDsgMDo8YnI+KyByaWdo dCA9IGR1bXBfaXJrKHRyYWNlLCBvcDIpPGJyPisgZWxzZTo8YnI+KyByaWdodCA9ICgnezowNGR9 JykuZm9ybWF0KG9wMik8YnI+Kzxicj4rIHR5cGVuYW1lID0gJyc8YnI+KyBpZiBpcm5hbWUgPT0g J0xPT1AnOjxicj4rIHR5cGVuYW1lID0gJy0tLSc8YnI+KyBlbGlmIGlybmFtZSA9PSAnTk9QJzo8 YnI+KyB0eXBlbmFtZSA9ICcgJzxicj4rIGVsc2U6PGJyPisgdHlwZW5hbWUgPSBJUlRZUEVTW2ly dF90eXBlKGlydCldPGJyPis8YnI+KyByZXR1cm4gJ3tmbGFnc30ge3R5cGV9IHtuYW1lOjZ9IFt7 bW9kZToyfV0ge2xlZnQ6Jmx0OzlzfSB7cmlnaHR9XG4nLmZvcm1hdCg8YnI+KyBmbGFncz1mbGFn cyw8YnI+KyBuYW1lPWlybmFtZSw8YnI+KyBtb2RlPWlyX21vZGUoaXJvcCksPGJyPisgdHlwZT10 eXBlbmFtZSw8YnI+KyBsZWZ0PShsZWZ0b3AgKyAnOiAnICsgbGVmdCkgaWYgbGVmdG9wIGVsc2Ug JycsPGJyPisgcmlnaHQ9KHJpZ2h0b3AgKyAnOiAnICsgcmlnaHQpIGlmIHJpZ2h0b3AgYW5kIG5v dCBza2lwX3JpZ2h0IGVsc2UgJycsPGJyPisgKTxicj4rPGJyPis8YnI+K2RlZiBkdW1wX3NuYXAo dHJhY2UsIHNuYXBubywgc25hcCk6PGJyPisgZHVtcCA9ICdTTkFQICN7OiZsdDszZH0gWycuZm9y bWF0KHNuYXBubyk8YnI+KyBzbmFwX21hcCA9IGRiZy5hZGRyZXNzKHRyYWNlWydzbmFwbWFwJ11b c25hcFsnbWFwb2ZzJ11dKTxicj4rIHNuYXBfZW50cnlfbnVtID0gMDxicj4rIGZvciBzbG90IGlu IHJhbmdlKDAsIHNuYXBbJ25zbG90cyddKTo8YnI+KyBkdW1wICs9ICcgJzxicj4rIHNuYXBfZW50 cnkgPSBpbnQoc25hcF9tYXBbc25hcF9lbnRyeV9udW1dKTxicj4rIGlmIHNuYXBfZW50cnlfbnVt ICZsdDsgc25hcFsnbmVudCddIGFuZCBzbmFwX2VudHJ5ICZndDsmZ3Q7IFRSRUZfU0hJRlQgPT0g c2xvdDo8YnI+KyBzbmFwX2VudHJ5X251bSArPSAxPGJyPisgcmVmID0gaW50KChzbmFwX2VudHJ5 ICZhbXA7IFRSRUZfUkVGTUFTSykgLSBSRUZfQklBUyk8YnI+KyBpZiByZWYgJmx0OyAwOjxicj4r IGlmIGludChzbmFwX2VudHJ5KSA9PSAweDEwNTdmZmY6PGJyPisgZHVtcCArPSAnLS0tLSc8YnI+ KyBjb250aW51ZTxicj4rIGVsaWYgKHNuYXBfZW50cnkgJmFtcDsgVFJFRl9DT05UKTo8YnI+KyBk dW1wICs9ICdjb250cGMnPGJyPisgZWxpZiAoc25hcF9lbnRyeSAmYW1wOyBUUkVGX0ZSQU1FKTo8 YnI+KyBkdW1wICs9ICdmdHN6ICc8YnI+KyBlbHNlOjxicj4rIGR1bXAgKz0gJ3t7e2NvbnN0fX19 Jy5mb3JtYXQoY29uc3Q9ZHVtcF9pcmsodHJhY2UsIHJlZikpPGJyPisgZWxpZiBzbmFwX2VudHJ5 ICZhbXA7IFNOQVBfU09GVEZQTlVNOjxicj4rIGR1bXAgKz0gJ3s6MDRkfS97OjA0ZH0nLmZvcm1h dChyZWYsIHJlZiArIDEpPGJyPisgZWxzZTo8YnI+KyBkdW1wICs9ICd7OjA0ZH0nLmZvcm1hdChy ZWYpPGJyPis8YnI+KyBpZiBzbmFwX2VudHJ5ICZhbXA7IFNOQVBfRlJBTUU6PGJyPisgZHVtcCAr PSAnfCc8YnI+KyBlbHNlOjxicj4rIGR1bXAgKz0gJy0tLS0nPGJyPis8YnI+KyBkdW1wICs9ICcg XVxuJzxicj4rIHJldHVybiBkdW1wPGJyPis8YnI+Kzxicj4rZGVmIGR1bXBfc2lua19zbG90KHJp ZCwgc3BpbGwsIGluc19udW1iZXIpOjxicj4rIGFzc2VydCByaWQgPT0gUklEX1NJTksgb3Igcmlk ID09IFJJRF9TVU5LLCAnaW5jb3JyZWN0IHJpZCBpbiBzaW5rIGR1bXAnPGJyPisgdHAgPSAnc2lu aycgaWYgcmlkID09IFJJRF9TSU5LIGVsc2UgJ3N1bmsnPGJyPisgcmV0dXJuICd7e3t9Jy5mb3Jt YXQodHApIGlmIHNwaWxsID09IFJJRF9JTklUIG9yIHNwaWxsID09IFNQU19OT05FIFw8YnI+KyBl bHNlICd7e3s6MDRkfScuZm9ybWF0KGludChpbnNfbnVtYmVyIC0gc3BpbGwpKTxicj4rPGJyPis8 YnI+K2RlZiBkdW1wX3JlZ3NwKGlyaW5zLCBpbnNfbnVtYmVyKTo8YnI+KyByaWQgPSBpcmluc1sn ciddPGJyPisgc3BpbGwgPSBpcmluc1sncyddPGJyPisgaWYgcmlkID09IFJJRF9TSU5LIG9yIHJp ZCA9PSBSSURfU1VOSzo8YnI+KyByZXR1cm4gZHVtcF9zaW5rX3Nsb3QocmlkLCBzcGlsbCwgaW5z X251bWJlcik8YnI+KyBlbGlmIGlyaW5zWydwcmV2J10gJmd0OyAyNTU6PGJyPisgcmV0dXJuICdb ezojMDV4fV0nLmZvcm1hdChpbnQoc3BpbGwgKiA0KSk8YnI+KyBlbGlmIHJpZCAmbHQ7IDEyODo8 YnI+KyByZXR1cm4gcmVnbmFtZShyaWQpPGJyPisgZWxzZTo8YnI+KyByZXR1cm4gJyc8YnI+Kzxi cj4rPGJyPitkZWYgZHVtcF90cmFjZSh0cmFjZSwgZmxhZ3MpOjxicj4rIGR1bXAgPSAnVHJhY2Ug e251bX0gc3RhcnRcblx0cHJvdG86IHtzdGFydF9wdH1cblx0QkM6IHtzdGFydF9iY31cbicuZm9y bWF0KDxicj4rIG51bT10cmFjZVsndHJhY2VubyddLDxicj4rIHN0YXJ0X3B0PWdjcmVmKHRyYWNl WydzdGFydHB0J10pLDxicj4rIHN0YXJ0X2JjPW1yZWYoJ0JDSW5zIConLCB0cmFjZVsnc3RhcnRw YyddKSw8YnI+KyApPGJyPis8YnI+KyBuaW5zID0gdHJhY2VbJ25pbnMnXSAtIFJFRl9CSUFTPGJy PisgZHVtcCArPSAnLS0tLSBUUkFDRSBJUlxuJzxicj4rIG5zbmFwID0gMDxicj4rIHNuYXAgPSB0 cmFjZVsnc25hcCddW25zbmFwXTxicj4rIHNuYXByZWYgPSBzbmFwWydyZWYnXTxicj4rIGZvciBp cm51bSBpbiByYW5nZSgxLCBuaW5zKTo8YnI+KyBpcnJlZiA9IFJFRl9CSUFTICsgaXJudW08YnI+ KyBpZiAncycgaW4gZmxhZ3MgYW5kIGlycmVmICZndDs9IHNuYXByZWYgYW5kIG5zbmFwICZsdDsg dHJhY2VbJ25zbmFwJ106PGJyPisgZHVtcCArPSAnLi4uLiAnPGJyPisgaWYgJ3InIGluIGZsYWdz Ojxicj4rIGR1bXAgKz0gJyAnICogNzxicj4rIGR1bXAgKz0gZHVtcF9zbmFwKHRyYWNlLCBuc25h cCwgc25hcCk8YnI+KyBuc25hcCArPSAxPGJyPisgc25hcCA9IHRyYWNlWydzbmFwJ11bbnNuYXBd PGJyPisgc25hcHJlZiA9IHNuYXBbJ3JlZiddPGJyPisgZHVtcCArPSAnezowNGR9ICcuZm9ybWF0 KGlybnVtKTxicj4rIGlmICdyJyBpbiBmbGFnczo8YnI+KyBkdW1wICs9ICd7OiZndDs3fScuZm9y bWF0KGR1bXBfcmVnc3AodHJhY2VbJ2lyJ11baXJyZWZdLCBpcm51bSkpPGJyPisgZHVtcCArPSBk dW1wX2lyaW5zKHRyYWNlWydpciddW2lycmVmXSwgdHJhY2UpPGJyPisgcmV0dXJuIGR1bXA8YnI+ Kzxicj4rPGJyPitkZWYgZHVtcF90cmVmKHRyZWYpOjxicj4rIHJldHVybiAnW3tGfXtDfV0ge3Rw fSB7cmVmOiN4fScuZm9ybWF0KDxicj4rIEY9J0YnIGlmIHRyZWYgJmFtcDsgVFJFRl9GUkFNRSBl bHNlICcgJyw8YnI+KyBDPSdDJyBpZiB0cmVmICZhbXA7IFRSRUZfQ09OVCBlbHNlICcgJyw8YnI+ KyB0cD1JUlRZUEVTW3RyZWZfdHlwZSh0cmVmKV0sPGJyPisgcmVmPXRyZWZfcmVmKHRyZWYpPGJy PisgKTxicj4rPGJyPis8YnI+K2RlZiBkdW1wX2pzbG90cyhjb3JvdXRpbmUpOjxicj4rIGxzdGF0 ZSA9IEwoTm9uZSk8YnI+KyBnID0gRyhsc3RhdGUgb3IgY29yb3V0aW5lKTxicj4rIGogPSBKKGcp PGJyPis8YnI+KyBkdW1wID0gJyc8YnI+KyBtYXhzbG90ID0galsnYmFzZXNsb3QnXSArIGpbJ21h eHNsb3QnXTxicj4rIGZpcnN0X2Jhc2Vfc2xvdCA9IDEgKyBMSl9GUjI8YnI+KyBmb3IgbiBpbiBy ZXZlcnNlZChyYW5nZShmaXJzdF9iYXNlX3Nsb3QsIG1heHNsb3QpKTo8YnI+KyB0cmVmID0galsn c2xvdCddW25dPGJyPisgcmVmID0gdHJlZl9yZWYodHJlZik8YnI+KyBhZGRyZXNzID0gZGJnLmFk ZHJlc3ModHJlZik8YnI+KyBkdW1wICs9ICd7YWRkcn0ge25zbG90OjA0ZH0ge2Jhc2U6MXN9IHt0 cmVmfXtjb25zdH1cbicuZm9ybWF0KDxicj4rIGFkZHI9YWRkcmVzcyw8YnI+KyBiYXNlPSdCJyBp ZiBhZGRyZXNzID09IGpbJ2Jhc2UnXSBlbHNlICcgJyw8YnI+KyBuc2xvdD1uLDxicj4rIHRyZWY9 ZHVtcF90cmVmKHRyZWYpLDxicj4rIGNvbnN0PScgJyArIGR1bXBfaXJrKGpbJ2N1ciddLCByZWYg LSBSRUZfQklBUyk8YnI+KyBpZiByZWYgIT0gMCBhbmQgcmVmICZsdDsgUkVGX0JJQVMgZWxzZSAn Jzxicj4rICk8YnI+KyByZXR1cm4gZHVtcDxicj4rPGJyPis8YnI+IyBFeHRlbnNpb24gY29tbWFu ZHMuICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjPGJyPjxicj48 YnI+QEAgLTE2MDAsNiArMjczMyw0MiBAQCBlcnJvciBtZXNzYWdlIG9jY3Vycy48YnI+ZGJnLndy aXRlKCd7fVxuJy5mb3JtYXQoZHVtcF9nY29iaihnY29iaikpKTxicj48YnI+PGJyPitjbGFzcyBM SkR1bXBJUihkYmcuTEpCYXNlKTo8YnI+KyAnJyc8YnI+K2xqLWlyICZsdDtJUklucyAqJmd0Ozxi cj4rPGJyPitUaGUgY29tbWFuZCByZWNlaXZlcyBhIHBvaW50ZXIgdG8gJmx0O2lyJmd0OyAoSVJJ bnMgYWRkcmVzcykgYW5kIGR1bXBzPGJyPit0aGUgSVIgdHlwZSBhbmQgc29tZSBpbmZvIHJlbGF0 ZWQgdG8gaXQuIFRoZSBmb3JtYXQgaXMgc2ltaWxhciB0bzxicj4rdGhlIGBqaXQuZHVtcGAgdG9v bCBidXQgYWxzbyBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBJUiBtb2RlIGFuZDxicj4rb3Bl cmFuZHMgbW9kZXMuPGJyPis8YnI+K0ZvciB0aGUgbGlzdCBvZiBJUiBuYW1lcyBhbmQgbW9kZXMg KG9wZXJhbmQgdHlwZXMpLCBzZWU6PGJyPis8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGFy YW50b29sL3RhcmFudG9vbC93aWtpL0x1YUpJVC1TU0EtSVIiPmh0dHBzOi8vZ2l0aHViLmNvbS90 YXJhbnRvb2wvdGFyYW50b29sL3dpa2kvTHVhSklULVNTQS1JUjwvYT4uPGJyPisgJycnPGJyPis8 YnI+KyBkZWYgZXhlY3V0ZShzZWxmLCBhcmcpOjxicj4rIGRiZy53cml0ZSgne30nLmZvcm1hdChk dW1wX2lyaW5zKGRiZy5jYXN0KCdJUklucyAqJywgZGJnLmV2YWwoYXJnKSkpKSk8YnI+Kzxicj4r PGJyPitjbGFzcyBMSkR1bXBKU2xvdHMoZGJnLkxKQmFzZSk6PGJyPisgJycnPGJyPitsai1qc2xv dHMgWyZsdDtsdWFfU3RhdGUgKiZndDtdPGJyPis8YnI+K1RoZSBjb21tYW5kIHJlY2VpdmVzIGFu IG9wdGlvbmFsIGx1YV9TdGF0ZSBhZGRyZXNzIGFuZCBkdW1wcyB0aGU8YnI+K3Nsb3RzIG9mIEpJ VCBzdGFjayBtYXA6PGJyPis8YnI+KyZsdDtzbG90IHB0ciZndDsgJmx0O3Nsb3QgbnVtYmVyJmd0 OyBbJmx0O0ZSQU1FfENPTlRJTlVBVElPTiZndDtdICZsdDtJUiByZWZlcmVuY2UmZ3Q7PGJyPis8 YnI+K1RoZSBsdWFfU3RhdGUgcG9pbnRlciBpcyBvcHRpb25hbCB0byBoZWxwIGluIGZpbmRpbmcg dGhlIFZNJ3MgSklUIHN0YXRlPGJyPit3aGVuIHRoZXJlIGlzIG5vIGNvcm91dGluZSB0byBiZSBp bnNwZWN0ZWQgaW4gdGhlIGRlYnVnZ2VkIGZyYW1lLjxicj4rICcnJzxicj4rPGJyPisgZGVmIGV4 ZWN1dGUoc2VsZiwgYXJnKTo8YnI+KyBkYmcud3JpdGUoJ3t9Jy5mb3JtYXQoPGJyPisgZHVtcF9q c2xvdHMoZGJnLmNhc3QoJ2x1YV9TdGF0ZSAqJywgZGJnLmV2YWwoYXJnKSkpPGJyPisgKSk8YnI+ Kzxicj4rPGJyPmNsYXNzIExKRHVtcFByb3RvKGRiZy5MSkJhc2UpOjxicj4nJyc8YnI+bGotcHJv dG8gJmx0O0dDcHJvdG8gKiZndDs8YnI+QEAgLTE3ODQsMTkgKzI5NTMsNDQgQEAgZXJyb3IgbWVz c2FnZSBvY2N1cnMuPGJyPmRiZy53cml0ZSgne31cbicuZm9ybWF0KGR1bXBfdHZhbHVlKHR2KSkp PGJyPjxicj48YnI+K2NsYXNzIExKRHVtcFRyYWNlKGRiZy5MSkJhc2UpOjxicj4rICcnJzxicj4r bGotdHJhY2UgWy9GTEFHU10gJmx0O0dDdHJhY2UgKiZndDs8YnI+Kzxicj4rVGhlIGNvbW1hbmQg cmVjZWl2ZXMgYSBwb2ludGVyIHRvICZsdDt0cmFjZSZndDsgKElSSW5zIGFkZHJlc3MpIGFuZCBk dW1wczxicj4raXRzIG51bWJlciwgSVJzLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgc3RhcnQgbG9j YXRpb24uIFRoZSBmb3JtYXQgaXM8YnI+K3NpbWlsYXIgdG8gdGhlIGBqaXQuZHVtcGAgdG9vbCBi dXQgYWxzbyBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dDxicj4rSVIgbW9kZSBhbmQgb3BlcmFu ZHMgbW9kZXMuPGJyPis8YnI+K1RyYWNlIG1heSBiZSBwcmVjZWRlZCB3aXRoIC9GTEFHUzo8YnI+ KyogcjogRHVtcCByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIElSLCBpZiBhbnkuPGJyPisqIHM6 IER1bXAgc25hcHNob3RzIGZvciB0aGUgdHJhY2UuPGJyPisgJycnPGJyPis8YnI+KyBkZWYgZXhl Y3V0ZShzZWxmLCBhcmcpOjxicj4rIGFyZywgZmxhZ3MgPSBkYmcuZXh0cmFjdF9mbGFncyhhcmcs ICdycycpPGJyPisgZGJnLndyaXRlKCd7fScuZm9ybWF0KGR1bXBfdHJhY2UoPGJyPisgZGJnLmNh c3QoJ0dDdHJhY2UgKicsIGRiZy5ldmFsKGFyZykpLDxicj4rIGZsYWdzPGJyPisgKSkpPGJyPis8 YnI+Kzxicj5kZWYgbG9hZChldmVudD1Ob25lKTo8YnI+ZGJnLmluaXRpYWxpemVfZXh0ZW5zaW9u KHs8YnI+LSAnbGotYXJjaCc6IExKRHVtcEFyY2gsPGJyPi0gJ2xqLWJjJzogTEpEdW1wQkMsPGJy Pi0gJ2xqLWZ1bmMnOiBMSkR1bXBGdW5jLDxicj4tICdsai1nYyc6IExKR0MsPGJyPi0gJ2xqLWdj byc6IExKRHVtcEdDb2JqLDxicj4tICdsai1wcm90byc6IExKRHVtcFByb3RvLDxicj4tICdsai1z dGFjayc6IExKRHVtcFN0YWNrLDxicj4tICdsai1zdGF0ZSc6IExKU3RhdGUsPGJyPi0gJ2xqLXN0 cic6IExKRHVtcFN0cmluZyw8YnI+LSAnbGotdGFiJzogTEpEdW1wVGFibGUsPGJyPi0gJ2xqLXR2 JzogTEpEdW1wVFZhbHVlLDxicj4rICdsai1hcmNoJzogTEpEdW1wQXJjaCw8YnI+KyAnbGotYmMn OiBMSkR1bXBCQyw8YnI+KyAnbGotZnVuYyc6IExKRHVtcEZ1bmMsPGJyPisgJ2xqLWdjJzogTEpH Qyw8YnI+KyAnbGotZ2NvJzogTEpEdW1wR0NvYmosPGJyPisgJ2xqLWlyJzogTEpEdW1wSVIsPGJy PisgJ2xqLWpzbG90cyc6IExKRHVtcEpTbG90cyw8YnI+KyAnbGotcHJvdG8nOiBMSkR1bXBQcm90 byw8YnI+KyAnbGotc3RhY2snOiBMSkR1bXBTdGFjayw8YnI+KyAnbGotc3RhdGUnOiBMSlN0YXRl LDxicj4rICdsai1zdHInOiBMSkR1bXBTdHJpbmcsPGJyPisgJ2xqLXRhYic6IExKRHVtcFRhYmxl LDxicj4rICdsai10cmFjZSc6IExKRHVtcFRyYWNlLDxicj4rICdsai10dic6IExKRHVtcFRWYWx1 ZSw8YnI+fSk8YnI+PGJyPjxicj5kaWZmIC0tZ2l0IGEvdGVzdC90YXJhbnRvb2wtZGVidWdnZXIt dGVzdHMvZGVidWctZXh0ZW5zaW9uLXRlc3RzLnB5IGIvdGVzdC90YXJhbnRvb2wtZGVidWdnZXIt dGVzdHMvZGVidWctZXh0ZW5zaW9uLXRlc3RzLnB5PGJyPmluZGV4IDdlOGVhNWEyLi43NjU0M2Rh YSAxMDA2NDQ8YnI+LS0tIGEvdGVzdC90YXJhbnRvb2wtZGVidWdnZXItdGVzdHMvZGVidWctZXh0 ZW5zaW9uLXRlc3RzLnB5PGJyPisrKyBiL3Rlc3QvdGFyYW50b29sLWRlYnVnZ2VyLXRlc3RzL2Rl YnVnLWV4dGVuc2lvbi10ZXN0cy5weTxicj5AQCAtNDYsNyArNDYsOSBAQCBlbHNlOjxicj5SWF9B RERSID0gcicweFthLWYwLTldKyc8YnI+UlhfSEFTSCA9IFJYX0FERFIgIyBUaGUgc2FtZSBwYXR0 ZXJuIGZvciBoZXhhZGVtaWMgdmFsdWVzLjxicj5SWF9CQ04gPSByJzAwXGRcZCc8YnI+K1JYX0lS TiA9IFJYX0JDTiAjIFRoZSBzYW1lIGFzIGZvciB0aGUgYnl0ZWNvZGVzLjxicj5SWF9GUkFNRSA9 IHInXFsoU3xccykoQnxccykoVHxccykoTXxccylcXSc8YnI+K1JYX0lSUkVGID0gcicweFxkXGRc ZFxkJzxicj48YnI+PGJyPmRlZiBwZXJzaXN0KGRhdGEpOjxicj5AQCAtMTAxLDYgKzEwMyw5IEBA IElTX0dDNjQgPSBleGVjdXRlX3Byb2Nlc3MoWzxicj5MVUFKSVRfQklOQVJZLCAnLWUnLCAicHJp bnQocmVxdWlyZSgnZmZpJykuYWJpKCdnYzY0JykpIjxicj5dKS5zdHJpcCgpID09ICd0cnVlJzxi cj48YnI+KyMgUmVnZXhwIGZvciBwb2ludGVyIHR5cGUgaW4gSVIuPGJyPitSWF9QID0gJ3A2NCcg aWYgSVNfR0M2NCBlbHNlICdwMzInPGJyPis8YnI+IyBJZiBpdCBpcyB0aGUgZ3VhcmFudGVlZCBE VUFMTlVNIGJ1aWxkIChmb3IgZXhhbXBsZSwgb24gYWFyY2g2NCksPGJyPiMgd2UgdXNlIHRoaXMg cmVnZXhwIGZvciB0aGUgZ3VhcmFudGVlZCAnaW50ZWdlcicgY2hlY2sgYW5kPGJyPiMgJ251bWJl cicgZm9yIHNpbmdsZS1udW1iZXIgYnVpbGQuPGJyPkBAIC0xMDgsNiArMTEzLDE4IEBAIFJYX0lO VCA9IHInaW50ZWdlcicgaWYgSVNfRFVBTE5VTSBlbHNlIHInbnVtYmVyJzxicj5SWF9JU0RVQUxO VU0gPSByJ1RydWUnIGlmIElTX0RVQUxOVU0gZWxzZSByJ0ZhbHNlJzxicj48YnI+PGJyPisjIEFz c3VtZSBub3QgY3Jvc3MtcGxhdGZvcm0gZGVidWdnaW5nLjxicj4rbWFjaGluZSA9IG9zLnVuYW1l KCkubWFjaGluZTxicj4raWYgbWFjaGluZSA9PSAneDg2XzY0Jzo8YnI+KyBSWF9HUFIgPSByJ3Jc d1x3Jzxicj4rIFJYX0ZQUiA9IHIneG1tXGQrJzxicj4rZWxpZiBtYWNoaW5lID09ICdhcm02NCcg b3IgbWFjaGluZSA9PSAnYWFyY2g2NCc6PGJyPisgUlhfR1BSID0gcid4XGQrJzxicj4rIFJYX0ZQ UiA9IHInZFxkKyc8YnI+K2Vsc2U6PGJyPisgcmFpc2UgRXhjZXB0aW9uKCdVbmtub3duIGFyY2hl dGljdHVyZSBpbiB0ZXN0aW5nJyk8YnI+Kzxicj4rPGJyPmNsYXNzIFRlc3RDYXNlQmFzZSh1bml0 dGVzdC5UZXN0Q2FzZSk6PGJyPkBjbGFzc21ldGhvZDxicj5kZWYgY29uc3RydWN0X2NtZHMoY2xz KTo8YnI+QEAgLTE5Myw2ICsyMTAsMTYgQEAgZGVmIG1yZWYoYXJnLCB0cCk6PGJyPnJldHVybiAn KCgnICsgdHAgKyAnKikoJyArIGFyZyArICcpLnB0cjMyKSc8YnI+PGJyPjxicj4rZGVmIGdjcmVm KGFyZyk6PGJyPisgaWYgU1VQUE9SVF9NQUNST19FWFBBTkQ6PGJyPisgcmV0dXJuICdnY3JlZign ICsgYXJnICsgJyknPGJyPisgZWxzZTo8YnI+KyBpZiBJU19HQzY0Ojxicj4rIHJldHVybiAnKCcg KyBhcmcgKyAnKS5nY3B0cjY0Jzxicj4rIGVsc2U6PGJyPisgcmV0dXJuICcoJyArIGFyZyArICcp LmdjcHRyMzInPGJyPis8YnI+Kzxicj5jbGFzcyBUZXN0TG9hZChUZXN0Q2FzZUJhc2UpOjxicj5l eHRlbnNpb25fY21kcyA9ICcnPGJyPmxvY2F0aW9uID0gJ2xqX2NmX3ByaW50Jzxicj5AQCAtMjAz LDExICsyMzAsMTQgQEAgY2xhc3MgVGVzdExvYWQoVGVzdENhc2VCYXNlKTo8YnI+cidsai1mdW5j IGNvbW1hbmQgaW5pdGlhbGl6ZWRcbic8YnI+cidsai1nYyBjb21tYW5kIGluaXRpYWxpemVkXG4n PGJyPnInbGotZ2NvIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbic8YnI+KyByJ2xqLWlyIGNvbW1hbmQg aW5pdGlhbGl6ZWRcbic8YnI+KyByJ2xqLWpzbG90cyBjb21tYW5kIGluaXRpYWxpemVkXG4nPGJy PnInbGotcHJvdG8gY29tbWFuZCBpbml0aWFsaXplZFxuJzxicj5yJ2xqLXN0YWNrIGNvbW1hbmQg aW5pdGlhbGl6ZWRcbic8YnI+cidsai1zdGF0ZSBjb21tYW5kIGluaXRpYWxpemVkXG4nPGJyPnIn bGotc3RyIGNvbW1hbmQgaW5pdGlhbGl6ZWRcbic8YnI+cidsai10YWIgY29tbWFuZCBpbml0aWFs aXplZFxuJzxicj4rIHInbGotdHJhY2UgY29tbWFuZCBpbml0aWFsaXplZFxuJzxicj5yJ2xqLXR2 IGNvbW1hbmQgaW5pdGlhbGl6ZWRcbic8YnI+cidMdWFKSVQgZGVidWcgZXh0ZW5zaW9uIGlzIHN1 Y2Nlc3NmdWxseSBsb2FkZWQnPGJyPik8YnI+QEAgLTQ3Myw2ICs1MDMsMzQxIEBAIGNsYXNzIFRl c3RMSkJDKFRlc3RDYXNlQmFzZSk6PGJyPik8YnI+PGJyPjxicj4rIyBKSVQgZW5naW5lLjxicj4r PGJyPis8YnI+K2NsYXNzIFRlc3RMSlRyYWNlQmFzZShUZXN0Q2FzZUJhc2UpOjxicj4rIGxvY2F0 aW9uID0gJ2xqX2NmX3ByaW50Jzxicj4rIGV4dGVuc2lvbl9jbWRzID0gKDxicj4rICduXG4nICMg TG9hZCBMLjxicj4rICdsai10cmFjZSAnICsgZ2NyZWYoJygoR0dfU3RhdGUgKilMKS0mZ3Q7Si0m Z3Q7dHJhY2VbMV0nKTxicj4rICk8YnI+KyBsdWFfc2NyaXB0ID0gKDxicj4rICdqaXQub3B0LnN0 YXJ0KCJob3Rsb29wPTEiKVxuJzxicj4rICdmb3IgXyA9IDEsIDQgZG8gZW5kXG4nPGJyPisgJ3By aW50KClcbic8YnI+KyApPGJyPisgcGF0dGVybiA9ICg8YnI+KyByJ1RyYWNlIDEgc3RhcnRcbic8 YnI+KyByJ1x0KnByb3RvOiAnICsgUlhfQUREUiArIHInXG4nICs8YnI+KyByJ1x0KkJDOiAnICsg UlhfQUREUiArIHInXG4nICs8YnI+KyByJy0tLS0gVFJBQ0UgSVJcbicgKzxicj4rIFJYX0lSTiAr IHInXHMrIGludCBTTE9BRCBcW04gXF0gbGl0OiAjWzEyXSBsaXQ6IEM/SVxuJyArPGJyPisgUlhf SVJOICsgcidccysgXCsgaW50IEFERCBcW0MgXF0gcmVmOiAnICsgUlhfSVJOICs8YnI+KyByJyBy ZWY6IGludGVnZXIgMVxuJyArPGJyPisgUlhfSVJOICsgcidccysgJmd0OyBpbnQgTEUgXFtOIFxd IHJlZjogJyArIFJYX0lSTiArPGJyPisgcicgcmVmOiBpbnRlZ2VyIDRcbicgKzxicj4rIFJYX0lS TiArIHInXHMrICZndDsgLS0tIExPT1AgXFtOIFxdXHMqXG4nICs8YnI+KyBSWF9JUk4gKyByJ1xz KyBcKyBpbnQgQUREIFxbQyBcXSByZWY6ICcgKyBSWF9JUk4gKzxicj4rIHInIHJlZjogaW50ZWdl ciAxXG4nICs8YnI+KyBSWF9JUk4gKyByJ1xzKyAmZ3Q7IGludCBMRSBcW04gXF0gcmVmOiAnICsg UlhfSVJOICs8YnI+KyByJyByZWY6IGludGVnZXIgNFxuJyArPGJyPisgUlhfSVJOICsgcidccysg aW50IFBISSBcW1MgXF0gcmVmOiAnICsgUlhfSVJOICsgcicgcmVmOiAnICs8YnI+KyBSWF9JUk4g KyByJ1xuJyArPGJyPisgUlhfSVJOICsgcidccysgTk9QIFxbTiBcXVxzKlxuJzxicj4rICk8YnI+ Kzxicj4rPGJyPisjIENoZWNrIHRoZSBJUiBlbnVtZXJhdGlvbiBjb3JyZWNuZXNzIGJ5IHRlc3Qg dGhlIGxvd2VzdCAoTFQpIGFuZDxicj4rIyB0aGUgaGlnaGVzdCAoQ0FSRykgSVJzLiBBbHNvLCBj aGVja3MgQ0FMTCogb2NjYXNpb25hbGx5Ljxicj4rY2xhc3MgVGVzdExKVHJhY2VJUlJhbmdlKFRl c3RDYXNlQmFzZSk6PGJyPisgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnPGJyPisgZXh0ZW5zaW9u X2NtZHMgPSAoPGJyPisgJ25cbicgIyBMb2FkIEwuPGJyPisgJ2xqLXRyYWNlICcgKyBnY3JlZign KChHR19TdGF0ZSAqKUwpLSZndDtKLSZndDt0cmFjZVsxXScpPGJyPisgKTxicj4rIGx1YV9zY3Jp cHQgPSAoPGJyPisgJ2xvY2FsIGZmaSA9IHJlcXVpcmUoImZmaSIpXG4nPGJyPisgJ2ZmaS5jZGVm W1tpbnQgZ2V0cGlkKGludCwgaW50KTtdXVxuJyAjIFVzZSBhcmd1bWVudCBmb3IgdGVzdGluZy48 YnI+KyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbic8YnI+KyAnZm9yIGkgPSAxLCA0IGRv XG4nPGJyPisgJyBpZiBpICZsdDsgMTAwIHRoZW5cbicgIyBMVC48YnI+KyAnIGZmaS5DLmdldHBp ZChpLCAxTEwpXG4nICMgQ0FSRyBhbmQgQ0FMTFhTLjxicj4rICcgZW5kXG4nPGJyPisgJ2VuZFxu Jzxicj4rICdwcmludCgpXG4nPGJyPisgKTxicj4rICMgSVJzIGZyb20gdmFyaWFudCBwYXJ0IG9m IHRoZSB0cmFjZS48YnI+KyBwYXR0ZXJuID0gKDxicj4rIFJYX0lSTiArIHInXHMrICZndDsgaW50 IExUIFxbTiBcXSByZWY6ICcgKzxicj4rIFJYX0lSTiArIHInIHJlZjogaW50ZWdlciAxMDBcbicg Kzxicj4rIFJYX0lSTiArIHInXHMrIG5pbCBDQVJHIFxbTiBcXSByZWY6ICcgKzxicj4rIFJYX0lS TiArIHInIHJlZjogaW50ZWdlciAxXG4nICs8YnI+KyBSWF9JUk4gKyByJ1xzKyBpbnQgQ0FMTFhT IFxbUyBcXSBcWycgKyBSWF9BRERSICs8YnI+KyByJ1xdXChceycgKyBSWF9JUk4gKyByJ1x9LCBc e2ludGVnZXIgMVx9XCknPGJyPisgKTxicj4rPGJyPis8YnI+KyMgVGVzdCAvcnMgZmxhZ3MuPGJy PitjbGFzcyBUZXN0TEpUcmFjZUZsYWdzKFRlc3RDYXNlQmFzZSk6PGJyPisgbG9jYXRpb24gPSAn bGpfY2ZfcHJpbnQnPGJyPisgZXh0ZW5zaW9uX2NtZHMgPSAoPGJyPisgJ25cbicgIyBMb2FkIEwu PGJyPisgJ2xqLXRyYWNlIC9ycyAnICsgZ2NyZWYoJygoR0dfU3RhdGUgKilMKS0mZ3Q7Si0mZ3Q7 dHJhY2VbMV0nKTxicj4rICk8YnI+KyBsdWFfc2NyaXB0ID0gKDxicj4rICdqaXQub3B0LnN0YXJ0 KCJob3Rsb29wPTEiKVxuJzxicj4rICdsb2NhbCByID0gMC4xXG4nPGJyPisgJ2ZvciBpID0gMSwg NCBkb1xuJzxicj4rICcgciA9IGkgKyByXG4nPGJyPisgJ2VuZFxuJzxicj4rICdwcmludCgpXG4n PGJyPisgKTxicj4rICMgSVJzIGFuZCBzbmFwc2hvdCBmcm9tIHZhcmlhbnQgcGFydCBvZiB0aGUg dHJhY2UuPGJyPisgcGF0dGVybiA9ICg8YnI+KyBSWF9JUk4gKyByJ1xzKycgKyBSWF9GUFIgKyBy J1xzKiBcKyBudW0gQURELipcbicgKzxicj4rIFJYX0lSTiArIHInXHMrJyArIFJYX0dQUiArIHIn XHMqIFwrIGludCBBREQuKlxuJyArPGJyPisgcidcLlwuXC5cLlxzKiBTTkFQICNcZCBcWyAoLS0t LSApKicgKyBSWF9JUk4gKyByJyBcXSc8YnI+KyApPGJyPis8YnI+Kzxicj4rY2xhc3MgVGVzdExK SVJDb25zdChUZXN0Q2FzZUJhc2UpOjxicj4rIGxvY2F0aW9uID0gJ3RyYWNlX3N0b3AnPGJyPis8 YnI+KyAjIE5vIG5hcnJvd2luZyBvZiA0Mi48YnI+KyBpZiBJU19EVUFMTlVNOjxicj4rICMgS05V TSBvY2N1cGllcyAyIHNsb3RzLjxicj4rIF9rbnVtX2lybnVtID0gJzYnPGJyPisgX2tnY19pcm51 bSA9ICc4JyBpZiBJU19HQzY0IGVsc2UgJzcnPGJyPisgX2twdHJfaXJudW0gPSAnMTAnIGlmIElT X0dDNjQgZWxzZSAnOCc8YnI+KyBlbHNlOjxicj4rICMgS05VTSBvY2N1cGllcyAyIHNsb3RzLjxi cj4rIF9rbnVtX2lybnVtID0gJzgnPGJyPisgX2tnY19pcm51bSA9ICcxMCcgaWYgSVNfR0M2NCBl bHNlICc5Jzxicj4rIF9rcHRyX2lybnVtID0gJzEyJyBpZiBJU19HQzY0IGVsc2UgJzEwJzxicj4r IGV4dGVuc2lvbl9jbWRzID0gKDxicj4rICduXG4nICMgTG9hZCBKLjxicj4rICdsai1pciAmYW1w O0otJmd0O2N1ci5pclsweDgwMDAgLSAwXVxuJzxicj4rICdsai1pciAmYW1wO0otJmd0O2N1ci5p clsweDgwMDAgLSAxXVxuJzxicj4rICdsai1pciAmYW1wO0otJmd0O2N1ci5pclsweDgwMDAgLSAy XVxuJzxicj4rICdsai1pciAmYW1wO0otJmd0O2N1ci5pclsweDgwMDAgLSAzXVxuJzxicj4rICds ai1pciAmYW1wO0otJmd0O2N1ci5pclsweDgwMDAgLSA0XVxuJzxicj4rICMgU2tpcCBub24tRFVB TE5VTSBuYXJyb3dlZCB2YWx1ZS48YnI+KyAnbGotaXIgJmFtcDtKLSZndDtjdXIuaXJbMHg4MDAw IC0gJyArIF9rbnVtX2lybnVtICsgJ11cbic8YnI+KyAnbGotaXIgJmFtcDtKLSZndDtjdXIuaXJb MHg4MDAwIC0gJyArIF9rZ2NfaXJudW0gKyAnXVxuJzxicj4rICdsai1pciAmYW1wO0otJmd0O2N1 ci5pclsweDgwMDAgLSAnICsgX2twdHJfaXJudW0gKyAnXVxuJzxicj4rICk8YnI+KyBsdWFfc2Ny aXB0ID0gKDxicj4rICdqaXQub3B0LnN0YXJ0KCJob3Rsb29wPTEiKVxuJzxicj4rICdsb2NhbCBm dW5jdGlvbiB0cmFjZSh4KVxuJzxicj4rICcgcmV0dXJuIHggKyA0MiwgeCArIDAuNSwgeCAuLiAi MSJcbic8YnI+KyAnZW5kXG4nPGJyPisgJ3RyYWNlKDEpXG4nPGJyPisgJ3RyYWNlKDEpXG4nPGJy PisgKTxicj4rIHBhdHRlcm4gPSAoPGJyPisgUlhfUCArIHInIEJBU0UuKlxuJyArPGJyPisgcidc cyogbmlsIEtQUkkuKlxuJzxicj4rIHInXHMqIGZhbCBLUFJJLipcbic8YnI+KyByJ1xzKiB0cnUg S1BSSS4qXG4nPGJyPisgcidccyogaW50IEtJTlQuKmNzdDogaW50ZWdlciA0MlxzKlxuJzxicj4r IHInXHMqIG51bSBLTlVNLipjc3Q6IG51bWJlciAwLjVccypcbic8YnI+KyByJ1xzKiBzdHIgS0dD Lipjc3Q6IHN0cmluZyAiMSIuKlxuJyArPGJyPisgcidccyonICsgUlhfUCArIHInIEtQVFIuKmNz dDogXFsnICsgUlhfQUREUiArIHInXF0nPGJyPisgKTxicj4rPGJyPis8YnI+K2NsYXNzIFRlc3RM SklSRmxvYWROZWcoVGVzdENhc2VCYXNlKTo8YnI+KyBsb2NhdGlvbiA9ICdsal9jZl9wcmludCc8 YnI+KyBleHRlbnNpb25fY21kcyA9ICg8YnI+KyAnblxuJyAjIExvYWQgTC48YnI+KyAnbGotdHJh Y2UgJyArIGdjcmVmKCcoKEdHX1N0YXRlICopTCktJmd0O0otJmd0O3RyYWNlWzFdJyk8YnI+KyAp PGJyPisgbHVhX3NjcmlwdCA9ICg8YnI+KyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbic8 YnI+KyAnbG9jYWwgZnVuY3Rpb24gdHJhY2UoYSlcbic8YnI+KyAnIGxvY2FsIHggPSAtYVxuJzxi cj4rICcgcmV0dXJuIHhcbic8YnI+KyAnZW5kXG4nPGJyPisgJ3RyYWNlKDEuMSlcbic8YnI+KyAn dHJhY2UoMS4xKVxuJzxicj4rICdwcmludCgpXG4nPGJyPisgKTxicj4rIHBhdHRlcm4gPSAoPGJy PisgcidudW0gRkxPQUQgLiogcmVmOiBuaWwgbGl0OiBvZmZzZXRvZlwoR0csIEpcLmtzaW1kXFtM Sl9LU0lNRF9ORUdcXVwpJzxicj4rICk8YnI+Kzxicj4rPGJyPitjbGFzcyBUZXN0TEpJUkZsb2Fk QWJzKFRlc3RDYXNlQmFzZSk6PGJyPisgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnPGJyPisgZXh0 ZW5zaW9uX2NtZHMgPSAoPGJyPisgJ25cbicgIyBMb2FkIEwuPGJyPisgJ2xqLXRyYWNlICcgKyBn Y3JlZignKChHR19TdGF0ZSAqKUwpLSZndDtKLSZndDt0cmFjZVsxXScpPGJyPisgKTxicj4rIGx1 YV9zY3JpcHQgPSAoPGJyPisgJ2ppdC5vcHQuc3RhcnQoImhvdGxvb3A9MSIpXG4nPGJyPisgJ2xv Y2FsIG1hdGhfYWJzID0gbWF0aC5hYnNcbic8YnI+KyAnbG9jYWwgZnVuY3Rpb24gdHJhY2UoYSlc bic8YnI+KyAnIGxvY2FsIHggPSBtYXRoX2FicyhhKVxuJzxicj4rICcgcmV0dXJuIHhcbic8YnI+ KyAnZW5kXG4nPGJyPisgJ3RyYWNlKDEpXG4nPGJyPisgJ3RyYWNlKDEpXG4nPGJyPisgJ3ByaW50 KClcbic8YnI+KyApPGJyPisgcGF0dGVybiA9ICg8YnI+KyByJ251bSBGTE9BRCAuKiByZWY6IG5p bCBsaXQ6IG9mZnNldG9mXChHRywgSlwua3NpbWRcW0xKX0tTSU1EX0FCU1xdXCknPGJyPisgKTxi cj4rPGJyPis8YnI+KyMgWFhYOiBJbXBsZW1lbnRlZCBvbmx5IGZvciBHQzY0IGluIEx1YUpJVCB1 bnRpbCBiYWNrcG9ydGluZyB0aGU8YnI+KyMgY29ycmVzcG9uZGluZyBjb21taXQuPGJyPitpZiBJ U19HQzY0Ojxicj4rIGNsYXNzIFRlc3RMSklSRmxvYWRHQ1Jvb3RCYXNlTVQoVGVzdENhc2VCYXNl KTo8YnI+KyBsb2NhdGlvbiA9ICdsal9jZl9wcmludCc8YnI+KyBleHRlbnNpb25fY21kcyA9ICg8 YnI+KyAnblxuJyAjIExvYWQgTC48YnI+KyAnbGotdHJhY2UgJyArIGdjcmVmKCcoKEdHX1N0YXRl ICopTCktJmd0O0otJmd0O3RyYWNlWzFdJyk8YnI+KyApPGJyPisgbHVhX3NjcmlwdCA9ICg8YnI+ KyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbic8YnI+KyAnbG9jYWwgZnVuY3Rpb24gdHJh Y2UoYSlcbic8YnI+KyAnbG9jYWwgeCA9IGEuc3ViKDEsIDIpXG4nPGJyPisgJyByZXR1cm4geFxu Jzxicj4rICdlbmRcbic8YnI+KyAndHJhY2UoIjEyIilcbic8YnI+KyAndHJhY2UoIjEyIilcbic8 YnI+KyAncHJpbnQoKVxuJzxicj4rICk8YnI+KyBwYXR0ZXJuID0gKDxicj4rIHIndGFiIEZMT0FE IC4qIHJlZjogbmlsIGxpdDogJzxicj4rIHInb2Zmc2V0b2ZcKEdHLCBnXC5nY3Jvb3RcW0dDUk9P VF9CQVNFTVRfU1RSXF1cLmdjcHRyNjRcKSc8YnI+KyApPGJyPis8YnI+KyBjbGFzcyBUZXN0TEpJ UkZsb2FkR0NSb290SU8oVGVzdENhc2VCYXNlKTo8YnI+KyBsb2NhdGlvbiA9ICdsal9jZl9wcmlu dCc8YnI+KyBleHRlbnNpb25fY21kcyA9ICg8YnI+KyAnblxuJyAjIExvYWQgTC48YnI+KyAnbGot dHJhY2UgJyArIGdjcmVmKCcoKEdHX1N0YXRlICopTCktJmd0O0otJmd0O3RyYWNlWzFdJyk8YnI+ KyApPGJyPisgbHVhX3NjcmlwdCA9ICg8YnI+KyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilc bic8YnI+KyAnbG9jYWwgaW9fZmx1c2ggPSBpby5mbHVzaFxuJzxicj4rICdsb2NhbCBmdW5jdGlv biB0cmFjZSgpXG4nPGJyPisgJyBpb19mbHVzaCgpXG4nPGJyPisgJ2VuZFxuJzxicj4rICd0cmFj ZSgpXG4nPGJyPisgJ3RyYWNlKClcbic8YnI+KyAncHJpbnQoKVxuJzxicj4rICk8YnI+KyBwYXR0 ZXJuID0gKDxicj4rIHIndWR0IEZMT0FEIC4qIHJlZjogbmlsIGxpdDogJzxicj4rIHInb2Zmc2V0 b2ZcKEdHLCBnXC5nY3Jvb3RcW0dDUk9PVF9JT19PVVRQVVRcXVwuZ2NwdHI2NFwpJzxicj4rICk8 YnI+Kzxicj4rPGJyPisjIFNvbWUgSVJzIHJlbGF0ZWQgdG8gdGFibGVzLjxicj4rY2xhc3MgVGVz dExKSVJUYWJsZShUZXN0Q2FzZUJhc2UpOjxicj4rIGxvY2F0aW9uID0gJ2xqX2NmX3ByaW50Jzxi cj4rIGV4dGVuc2lvbl9jbWRzID0gKDxicj4rICduXG4nICMgTG9hZCBMLjxicj4rICdsai10cmFj ZSAnICsgZ2NyZWYoJygoR0dfU3RhdGUgKilMKS0mZ3Q7Si0mZ3Q7dHJhY2VbMV0nKTxicj4rICk8 YnI+KyBsdWFfc2NyaXB0ID0gKDxicj4rICdqaXQub3B0LnN0YXJ0KCJob3Rsb29wPTEiKVxuJzxi cj4rICdsb2NhbCBmdW5jdGlvbiB0cmFjZSh0KVxuJzxicj4rICcgdC5hID0gbmlsXG4nPGJyPisg JyB0LmIgPSAxXG4nPGJyPisgJyByZXR1cm4gdFxuJzxicj4rICdlbmRcbic8YnI+KyAndHJhY2Uo e2EgPSAxfSlcbic8YnI+KyAndHJhY2Uoe2EgPSAxfSlcbic8YnI+KyAncHJpbnQoKVxuJzxicj4r ICk8YnI+KyBwYXR0ZXJuID0gKDxicj4rIHInKD9zKWludCBGTE9BRCAuKiB0YWJcLmhtYXNrXG4n PGJyPisgcicuKicgKyBSWF9QICsgcicgRkxPQUQgLiogdGFiXC5ub2RlXG4nPGJyPisgcicuKicg KyBSWF9QICsgcicgSFJFRksgLiogc3RyaW5nICJhIiBAICcgKyBSWF9BRERSICs8YnI+KyByJyBL U0xPVDogQFxkXG4nPGJyPisgcicuKicgKyBSWF9QICsgcicgSFJFRiAuKiBzdHJpbmcgImIiIEAg JyArIFJYX0FERFIgKyByJ1xzKlxuJzxicj4rIHInLionICsgUlhfUCArIHInIEVRIC4qIFxbZy0m Z3Q7bmlsbm9kZVxdJzxicj4rICk8YnI+Kzxicj4rPGJyPitjbGFzcyBUZXN0TEpJUlVyZWYoVGVz dENhc2VCYXNlKTo8YnI+KyBsb2NhdGlvbiA9ICdsal9jZl9wcmludCc8YnI+KyBleHRlbnNpb25f Y21kcyA9ICg8YnI+KyAnblxuJyAjIExvYWQgTC48YnI+KyAnbGotdHJhY2UgJyArIGdjcmVmKCco KEdHX1N0YXRlICopTCktJmd0O0otJmd0O3RyYWNlWzFdJyk8YnI+KyApPGJyPisgbHVhX3Njcmlw dCA9ICg8YnI+KyAnaml0Lm9wdC5zdGFydCgiaG90bG9vcD0xIilcbic8YnI+KyAnbG9jYWwgdXYg PSAwXG4nPGJyPisgJ2xvY2FsIGZ1bmN0aW9uIHRyYWNlKGEpXG4nPGJyPisgJyB1diA9IGFcbic8 YnI+KyAnIHJldHVybiB1dlxuJzxicj4rICdlbmRcbic8YnI+KyAndHJhY2UoMSlcbic8YnI+KyAn dHJhY2UoMSlcbic8YnI+KyAncHJpbnQoKVxuJzxicj4rICk8YnI+KyBwYXR0ZXJuID0gcidVUkVG TyAuKiBsaXQ6ICMwJzxicj4rPGJyPis8YnI+KyMgQ2hlY2sgYm9yZGVyIHZhbHVlcyAodGhhdCBh bHdheXMgYXZhbGFibGUpIG9mIENBTEwgSVJzLjxicj4rY2xhc3MgVGVzdExKSVJDYWxsKFRlc3RD YXNlQmFzZSk6PGJyPisgbG9jYXRpb24gPSAnbGpfY2ZfcHJpbnQnPGJyPisgZXh0ZW5zaW9uX2Nt ZHMgPSAoPGJyPisgJ25cbicgIyBMb2FkIEwuPGJyPisgJ2xqLXRyYWNlICcgKyBnY3JlZignKChH R19TdGF0ZSAqKUwpLSZndDtKLSZndDt0cmFjZVsxXScpPGJyPisgKTxicj4rIGx1YV9zY3JpcHQg PSAoPGJyPisgJ2xvY2FsIGZmaSA9IHJlcXVpcmUoImZmaSIpXG4nPGJyPisgJ2ppdC5vcHQuc3Rh cnQoImhvdGxvb3A9MSIpXG4nPGJyPisgJ2xvY2FsIGZ1bmN0aW9uIHRyYWNlKGEsIGIpXG4nPGJy PisgJyByZXR1cm4gYSAmbHQ7IGIsIGZmaS5lcnJubygpXG4nPGJyPisgJ2VuZFxuJzxicj4rICd0 cmFjZSgiYWJjIiwgImFiZCIpXG4nPGJyPisgJ3RyYWNlKCJhYmMiLCAiYWJkIilcbic8YnI+KyAn cHJpbnQoMSlcbic8YnI+KyApPGJyPisgcGF0dGVybiA9ICg8YnI+KyByJyg/cylpbnQgQ0FMTE4g LiogJzxicj4rIHInbGpfc3RyX2NtcFwoXHsnICsgUlhfSVJOICsgcidcfSwgXHsnICsgUlhfSVJO ICsgcidcfVwpJzxicj4rIHInLippbnQgQ0FMTFMgLiogbGpfdm1fZXJybm9cKFwpJzxicj4rICk8 YnI+Kzxicj4rPGJyPisjIFRlc3QgZmZpIGNhbGwgd2l0aCBjdHlwZSBzdG9yZWQgaW4gQ0FSRy48 YnI+K2NsYXNzIFRlc3RMSklSQ2FsbFhTQ1R5cGUoVGVzdENhc2VCYXNlKTo8YnI+KyBsb2NhdGlv biA9ICdsal9jZl9wcmludCc8YnI+KyBleHRlbnNpb25fY21kcyA9ICg8YnI+KyAnblxuJyAjIExv YWQgTC48YnI+KyAnbGotdHJhY2UgJyArIGdjcmVmKCcoKEdHX1N0YXRlICopTCktJmd0O0otJmd0 O3RyYWNlWzFdJyk8YnI+KyApPGJyPisgbHVhX3NjcmlwdCA9ICg8YnI+KyAnbG9jYWwgZmZpID0g cmVxdWlyZSgiZmZpIilcbic8YnI+KyAnZmZpLmNkZWZbW2ludCBwcmludGYoY29uc3QgY2hhciAq Zm10LCAuLi4pO11dXG4nPGJyPisgJ2ppdC5vcHQuc3RhcnQoImhvdGxvb3A9MSIpXG4nPGJyPisg J2xvY2FsIGZ1bmN0aW9uIHRyYWNlKClcbic8YnI+KyAnIGxvY2FsIHQgPSBmZmkuQy5wcmludGYo IiIpXG4nPGJyPisgJyByZXR1cm4gdFxuJzxicj4rICdlbmRcbic8YnI+KyAndHJhY2UoKVxuJzxi cj4rICd0cmFjZSgpXG4nPGJyPisgJ3ByaW50KClcbic8YnI+KyApPGJyPisgcGF0dGVybiA9IHIn aW50IENBTExYUyAuKiBbJyArIFJYX0FERFIgKyByJ1xdXCguKlwpIGN0eXBlOiBcZCsnPGJyPis8 YnI+Kzxicj4rY2xhc3MgVGVzdExKSlNsb3RzQmFzZShUZXN0Q2FzZUJhc2UpOjxicj4rIGxvY2F0 aW9uID0gJ3RyYWNlX3N0b3AnPGJyPisgZXh0ZW5zaW9uX2NtZHMgPSAoPGJyPisgJ25cbicgIyBM b2FkIEouPGJyPisgJ2xqLWpzbG90cyBKLSZndDtMXG4nPGJyPisgKTxicj4rIGx1YV9zY3JpcHQg PSAoPGJyPisgJ2ppdC5vcHQuc3RhcnQoImhvdGxvb3A9MSIpXG4nPGJyPisgJ2ZvciBfID0gMSwg NCBkbyBlbmRcbic8YnI+KyApPGJyPisgcGF0dGVybiA9ICg8YnI+KyByJyg/cykoLionICs8YnI+ KyBSWF9BRERSICsgJyAnICsgUlhfSVJOICsgcicgKEJ8XHMpIFxbKEZ8XHMpKEN8XHMpXF0gXHdc d1x3ICcgKzxicj4rIFJYX0lSUkVGICs8YnI+KyByJy4qKSsnPGJyPisgKTxicj4rPGJyPis8YnI+ Zm9yIHRlc3RfY2xzIGluIFRlc3RDYXNlQmFzZS5fX3N1YmNsYXNzZXNfXygpOjxicj50ZXN0X2Ns cy50ZXN0ID0gbGFtYmRhIHNlbGY6IHNlbGYuY2hlY2soKTxicj48YnI+LS08YnI+Mi41NC4wPC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2 PjwvQk9EWT48L0hUTUw+Cg== ----ALT--53fE442184Ec82eF9B00Df35F9d8DaDf1782608610--