From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.help Subject: Re: cygwin+imagemagick+emacsW32 causes Windows Vista to report program crash Date: Mon, 8 Jun 2009 23:40:51 +0200 Message-ID: References: <79ec923a-4f0b-45b0-82dd-3345027a19ec@f19g2000yqo.googlegroups.com> <36411871-291c-4351-a97d-0f07ef05fd87@g1g2000yqh.googlegroups.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001485f630969996ba046bdd1830 X-Trace: ger.gmane.org 1244497553 10919 80.91.229.12 (8 Jun 2009 21:45:53 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 8 Jun 2009 21:45:53 +0000 (UTC) Cc: help-gnu-emacs@gnu.org To: Xah Lee Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Jun 08 23:45:50 2009 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MDmd6-0002nE-6R for geh-help-gnu-emacs@m.gmane.org; Mon, 08 Jun 2009 23:45:49 +0200 Original-Received: from localhost ([127.0.0.1]:42923 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MDmd5-0008GF-DQ for geh-help-gnu-emacs@m.gmane.org; Mon, 08 Jun 2009 17:43:43 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MDmaT-0006Ip-Ma for help-gnu-emacs@gnu.org; Mon, 08 Jun 2009 17:41:01 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MDmaO-00069w-Q5 for help-gnu-emacs@gnu.org; Mon, 08 Jun 2009 17:41:01 -0400 Original-Received: from [199.232.76.173] (port=41302 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MDmaO-00069n-6x for help-gnu-emacs@gnu.org; Mon, 08 Jun 2009 17:40:56 -0400 Original-Received: from mail-fx0-f217.google.com ([209.85.220.217]:46069) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MDmaN-00036g-36 for help-gnu-emacs@gnu.org; Mon, 08 Jun 2009 17:40:56 -0400 Original-Received: by fxm17 with SMTP id 17so1235163fxm.42 for ; Mon, 08 Jun 2009 14:40:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=jJkbla0zVJJFE/1i++25gBdTMNpsipFSq4eBRhv7vKA=; b=O6EdE6x2oP2nPuuMaoksBcwIUvvjDCv9VxFdmzB51kwVDEYwcQ8KEiG/yge46Ot/K0 8kcwRoDleQ5c8bet+fpDm53jpTvTmOzb1k2W06oQJLOzvmBL6jiKCDoK9je5dHMnTRHY wMNTRTSBh/DZHwQb9vv0zKeoxAUA2uE5GuHj4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=gQKojxZI2RUmGia7ZI/0Wvo+czZRZZswY9cwLTYDZ0Q1H960KnMn2gF/Vb447MbgMG bmgoCzoqGrarU308S2lBU8M8eW0ck7jgXiyjh6OfWnh6PXJ+eLFkmidQ9Mc2BwHnw68G S7P3+s6K/Sif2QHDDwAQ5tSBX7XxDtjHAARi4= Original-Received: by 10.239.151.82 with SMTP id q18mr543478hbb.22.1244497251505; Mon, 08 Jun 2009 14:40:51 -0700 (PDT) In-Reply-To: <36411871-291c-4351-a97d-0f07ef05fd87@g1g2000yqh.googlegroups.com> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:65057 Archived-At: --001485f630969996ba046bdd1830 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On Sun, Jun 7, 2009 at 6:52 PM, Xah Lee wrote: > On Jun 7, 2:13 am, Lennart Borgman wrote: >> On Sun, Jun 7, 2009 at 2:21 AM, Xah Lee wrote: >> > got a very odd problem that's driving me nuts. >> >> > in cygwin prompt, i can call one of imagemagick's command and get >> > result. >> >> > However, while in emacsw32 shell, identical call results Windows Vista >> > poppig up a window telling me some app crashed. >> >> > Anyone got some idea what's wrong? >> >> Different paths. At the cygwin prompt you have imagemagick's >> convert.exe first in path. >> >> At a cmd prompt you by default have windows convert.exe in the path. >> (There is a which utility you can get from gnuwin32.) >> >> So I do not think this is related to EmacsW32. If it is then please >> give me more information. > > Hi Len, > > Thanks! You solved my problem. Good. Now perhaps you could help me solve mine ... ;-) The path in cygwin was not setup correctly cygwin-shell (which I ought to rename). I have tried to fix that, but could not get it entirely correct (probably a cygwin bug, I have asked them right now). Could you please try the attached version of w32shell.el and see if that works for you without you having to change the paths yourself? --001485f630969996ba046bdd1830 Content-Type: text/plain; charset=US-ASCII; name="w32shell.el" Content-Disposition: attachment; filename="w32shell.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvppg9fe0 Ozs7IHczMnNoZWxsLmVsIC0tLSBIZWxwZXJzIGZvciBpbmZlcmlvciBzaGVsbHMgb24gdzMyDQoN Cjs7IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBieSBMZW5uYXJ0IEJvcmdtYW4NCjs7 DQo7OyBBdXRob3I6IExlbm5hcnQgQm9yZ21hbg0KOzsgQ3JlYXRlZDogVHVlIE5vdiAyMiAwMTow NzoxMyAyMDA1DQo7OyBWZXJzaW9uOiAwLjUyDQo7OyBMYXN0LVVwZGF0ZWQ6IEZyaSBNYXkgMTgg MTA6NTg6NDEgMjAwNyAoNzIwMCArMDIwMCkNCjs7IEtleXdvcmRzOg0KOzsgQ29tcGF0aWJpbGl0 eTogRW1hY3MgMjINCjs7DQo7Ow0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzsNCjs7OyBDb21tZW50YXJ5Og0K OzsNCjs7IE9uIHczMiB5b3Ugc29tZXRpbWVzIG5lZWQgYW4gaW5mZXJpb3Igc2hlbGwgbGlrZSBH TlUgYmFzaCBmb3INCjs7IGluc3RhbGxhdGlvbnMgYW5kIG90aGVyIHB1cnBvc2VzLiAoTm90ZTog QW4gImluZmVyaW9yIiBwcm9jZXNzIGluDQo7OyBFbWFjcyBpcyBhIHN1YnByb2Nlc3MuKSBZb3Ug bWF5IGFsc28gbmVlZCB0byBoYXZlIHRoZSBFbWFjcyBiaW4NCjs7IGRpcmVjdG9yeSBpbiBwYXRo IGF0IHRoZSBzYW1lIHRpbWUuIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcw0KOzsgcGFja2FnZSBp cyB0byBtYWtlIHRoaXMgZWFzaWVyLiBUaGVyZSBhcmUgaG93ZXZlciBhbHNvIHNvbWUgaGVscGVy DQo7OyBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBwYXRocyBvbiB3MzIuDQo7Ow0KOzsgVG8g Y2hvb3NlIHNoZWxsIGN1c3RvbWl6ZSBncm91cCB0aGUgYHczMnNoZWxsJy4NCjs7DQo7OyBUbyBy dW4gaW50ZXJhY3RpdmUgc2hlbGxzIHlvdSBjYW4gdXNlIGBjeWd3aW4tc2hlbGwnLCBgbXN5cy1z aGVsbCcNCjs7IGFuZCBgY21kLXNoZWxsJy4NCjs7DQo7OyBOb3RpY2UgdGhhdCB5b3UgY2FuIGdl dCB0aGUgcGF0aHMgdG8gY3lnd2luIGFuZCBNU1lTIGF1dG9tYXRpY2FsbHkNCjs7IGlmIHlvdSB1 c2UgRW1hY3NXMzIuIEZyb20gdGhlIG1lbnUgYmFyIGNob29zZSBPcHRpb25zIC0gQ3VzdG9taXpl DQo7OyBFbWFjc1czMi4uLiBhbmQgdGhlbiBsZXQgRW1hY3Mgc2VhcmNoIGZvciB0aG9zZSBwYXRo cy4NCjs7DQo7OyBQdXQgdGhpcyBpbiB5b3VyIC5lbWFjczoNCjs7DQo7OyAgICAgKHJlcXVpcmUg J3czMnNoZWxsKQ0KOzsNCjs7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7Ow0KOzs7IENoYW5nZSBsb2c6DQo7 Ow0KOzsgMjAwNS0xMi0xNSBNb3JlIGNhcmVmdWwgY2hlY2sgb2Ygc2hlbGwgZXhlYy4NCjs7IDIw MDUtMTItMjEgKHczMnNoZWxsLWRlbGF5ZWQtY3VzdG9taXplKTogTm8gZGlhbG9nIGJveC4NCjs7 IDIwMDUtMTItMjIgKHczMnNoZWxsLXNldC1zaGVsbCk6IENhbGwgY3lnd2luLW1vdW50LWFjdGl2 YXRlIGxhdGVyLg0KOzsgMjAwNi0xMi0xMyBBZGRlZCBzdXBwb3J0IGZvciBnbnV3aW4zMiBwcm9n cyB0aGF0IGNvbWVzIHdpdGggRW1hY3NXMzINCjs7DQo7Ow0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzsNCjs7 OyBDb2RlOg0KDQooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2NsKSkNCg0KOzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0K Ozs7IEhlbHBlcnMNCihkZWZ1biB3MzJzaGVsbC1pbi1leGVjLXBhdGggKHBhdGgpDQogIChsZXQg KChkYy1leGVjLXBhdGggKG1hcGNhciAobGFtYmRhIChlbHQpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChkb3duY2FzZSBlbHQpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXhlYy1wYXRoKSkpDQogICAgKG1lbWJlciAoZG93bmNhc2UgcGF0aCkgZGMtZXhlYy1wYXRo KSkpDQoNCihkZWZ1biB3MzJzaGVsbC1hZGQtZXhlYy1wYXRoIChwYXRoICZvcHRpb25hbCBhcHBl bmQpDQogICh1bmxlc3MgKHczMnNoZWxsLWluLWV4ZWMtcGF0aCBwYXRoKQ0KICAgIChhZGQtdG8t bGlzdCAnZXhlYy1wYXRoIHBhdGggYXBwZW5kKSkpDQoNCihkZWZ1biB3MzJzaGVsbC1yZW1vdmUt ZXhlYy1wYXRoIChwYXRoKQ0KICAodW5sZXNzIChsaXN0cCBwYXRoKSAoc2V0cSBwYXRoIChsaXN0 IHBhdGgpKSkNCiAgKGxldCAoKGRjcGF0aCAobWFwY2FyIChsYW1iZGEgKGVsdCkNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKGRvd25jYXNlIGVsdCkpDQogICAgICAgICAgICAgICAgICAgICAg ICBwYXRoKSkpDQogICAgKGRvbGlzdCAoZGMgZGNwYXRoKQ0KICAgICAgKHNldHEgZXhlYy1wYXRo IChtYXBjYXIgKGxhbWJkYSAoZWx0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dW5sZXNzIChlcXVhbCBkYyAoZG93bmNhc2UgZWx0KSkNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbHQpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy1wYXRo KSkpDQogICAgKHNldHEgZXhlYy1wYXRoIChkZWxldGUgbmlsIGV4ZWMtcGF0aCkpKSkNCg0KDQoo ZGVmdW4gdzMyc2hlbGwtaW4tZW52cGF0aCAocGF0aCkNCiAgKGxldCAoKGVudnBhdGggKHJlcGxh Y2UtcmVnZXhwLWluLXN0cmluZyAiXFxcXCIgIi8iIChnZXRlbnYgIlBBVEgiKSkpDQogICAgICAg IChub3JwYXRoIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlxcXFwiICIvIiBwYXRoKSkNCiAg ICAgICAgKGNhc2UtZm9sZC1zZWFyY2ggdCkpDQogICAgKHN0cmluZy1tYXRjaCAoY29uY2F0ICJc XCg/Ol5cXHw7XFwpIiAocmVnZXhwLXF1b3RlIG5vcnBhdGgpICJcXCgkXFx8O1xcKSIpIGVudnBh dGgpKSkNCg0KKGRlZnVuIHczMnNoZWxsLWFkZC1lbnZwYXRoIChwYXRoICZvcHRpb25hbCBhcHBl bmQpDQogICh1bmxlc3MgKHczMnNoZWxsLWluLWVudnBhdGggcGF0aCkNCiAgICAobGV0ICgoYnNs YXNoLXBhdGggKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiLyIgIlxcXFwiIHBhdGgpKSkNCiAg ICAgIChpZiBhcHBlbmQNCiAgICAgICAgICAoc2V0ZW52ICJQQVRIIiAoY29uY2F0IChnZXRlbnYg IlBBVEgiKSAiOyIgYnNsYXNoLXBhdGgpKQ0KICAgICAgICAoc2V0ZW52ICJQQVRIIiAoY29uY2F0 IGJzbGFzaC1wYXRoICI7IiAoZ2V0ZW52ICJQQVRIIikpKSkpKSkNCg0KKGRlZnVuIHczMnNoZWxs LXJlbW92ZS1lbnZwYXRoIChwYXRoKQ0KICAobGV0ICgocGF0aHMgcGF0aCkpDQogICAgKHVubGVz cyAobGlzdHAgcGF0aHMpIChzZXRxIHBhdGhzIChsaXN0IHBhdGhzKSkpDQogICAgKGRvbGlzdCAo cGF0aCBwYXRoKQ0KICAgICAgKGxldCAoKGVudnBhdGggKHJlcGxhY2UtcmVnZXhwLWluLXN0cmlu ZyAiXFxcXCIgIi8iIChnZXRlbnYgIlBBVEgiKSkpDQogICAgICAgICAgICAocG9zICh3MzJzaGVs bC1pbi1lbnZwYXRoIHBhdGgpKSkNCiAgICAgICAgKHdoaWxlIHBvcw0KICAgICAgICAgIChsZXQq ICgNCiAgICAgICAgICAgICAgICAgKHN1YjEgKGlmICg9IDAgcG9zKSAiIiAoc3Vic3RyaW5nIGVu dnBhdGggMCBwb3MpKSkNCiAgICAgICAgICAgICAgICAgKHN1YjIgKHN1YnN0cmluZyBlbnZwYXRo ICgrIHBvcyAxIChsZW5ndGggcGF0aCkpKSkNCiAgICAgICAgICAgICAgICAgKG5ld2VudnBhdGgg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiLyIgIlxcXFwiIChjb25jYXQgc3ViMSBzdWIyKSkp KQ0KICAgICAgICAgICAgKHNldGVudiAiUEFUSCIgbmV3ZW52cGF0aCkpDQogICAgICAgICAgKHNl dHEgZW52cGF0aCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcXFxcIiAiLyIgKGdldGVudiAi UEFUSCIpKSkNCiAgICAgICAgICAoc2V0cSBwb3MgKHczMnNoZWxsLWluLWVudnBhdGggcGF0aCkp DQogICAgICAgICAgKSkpKSkNCg0KDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7OyBFbWFjcyBpdHNlbGYgaW4gcGF0 aA0KOzsgRkl4LW1lOiBpcyB0aGlzIG5lZWRlZD8NCjs7IChkZWZ1biB3MzJzaGVsbC1lbWFjcy1w YXRoICgpDQo7OyAgIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGV4ZWMtZGlyZWN0b3J5KSkNCjs7 ICAgKGlmIChzdHJpbmc9ICIvIiAoc3Vic3RyaW5nIGV4ZWMtZGlyZWN0b3J5IC0xKSkNCjs7ICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVtYWNzLXBhdGggKHN1YnN0cmluZyBleGVjLWRp cmVjdG9yeSAwIC0xKSkNCjs7ICAgICAgICAgICAgICAgICAgICAgICBleGVjLWRpcmVjdG9yeSkp DQooZGVmdW4gdzMyc2hlbGwtZW1hY3N3MzItZ251d2luMzItYmluZGlyICgpDQogIDs7KGx3YXJu ICcodzMyc2hlbGwtZW1hY3N3MzItZ251d2luMzItYmluZGlyKSA6d2FybmluZyAiZXhlYy1kaXJl Y3Rvcnk9JXMiIGV4ZWMtZGlyZWN0b3J5KQ0KICAobGV0KiAoKHRvcCAoZGlyZWN0b3J5LWZpbGUt bmFtZQ0KICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkNCiAgICAgICAgICAgICAg ICAoZGlyZWN0b3J5LWZpbGUtbmFtZQ0KICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWRpcmVj dG9yeQ0KICAgICAgICAgICAgICAgICAgKGRpcmVjdG9yeS1maWxlLW5hbWUNCiAgICAgICAgICAg ICAgICAgICBleGVjLWRpcmVjdG9yeSkpKSkpKQ0KICAgICAgICAgKGVtYWNzdzMyIChkaXJlY3Rv cnktZmlsZS1uYW1lDQogICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lICJFbWFj c1czMiIgdG9wKSkpDQogICAgICAgICAoZ251d2luMzIgKGRpcmVjdG9yeS1maWxlLW5hbWUNCiAg ICAgICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgImdudXdpbjMyIiBlbWFjc3czMikp KQ0KICAgICAgICAgKGJpbiAoZXhwYW5kLWZpbGUtbmFtZSAgImJpbiIgZ251d2luMzIpKSkNCiAg ICA7Oyhsd2FybiAnKHczMnNoZWxsLWVtYWNzdzMyLWdudXdpbjMyLWJpbmRpcikgOndhcm5pbmcg InRvcD0lcyIgdG9wKQ0KICAgIDs7KGx3YXJuICcodzMyc2hlbGwtZW1hY3N3MzItZ251d2luMzIt YmluZGlyKSA6d2FybmluZyAiZW1hY3N3MzI9JXMiIGVtYWNzdzMyKQ0KICAgIDs7KGx3YXJuICco dzMyc2hlbGwtZW1hY3N3MzItZ251d2luMzItYmluZGlyKSA6d2FybmluZyAiYmluPSVzIiBiaW4p DQogICAgKHdoZW4gKGZpbGUtZGlyZWN0b3J5LXAgYmluKQ0KICAgICAgKGZpbGUtbmFtZS1hcy1k aXJlY3RvcnkgYmluKSkpKQ0KDQooZGVmdW4gdzMyc2hlbGwtYWRkLWVtYWNzICgmb3B0aW9uYWwg YXBwZW5kKQ0KICAiQWRkIEVtYWNzIGl0c2VsZiB0byB0aGUgcGF0aCBvZiBpbmZlcmlvciBzaGVs bHMuIg0KICAoaW50ZXJhY3RpdmUpDQogICh3MzJzaGVsbC1hZGQtZW52cGF0aCBleGVjLWRpcmVj dG9yeSkNCiAgKHczMnNoZWxsLWFkZC1leGVjLXBhdGggZXhlYy1kaXJlY3RvcnkpKQ0KKGRlZnVu IHczMnNoZWxsLXJlbW92ZS1lbWFjcyAoKQ0KICAiUmVtb3ZlIEVtYWNzIGl0c2VsZiBmcm9tIHRo ZSBwYXRoIG9mIGluZmVyaW9yIHNoZWxscy4iDQogIChpbnRlcmFjdGl2ZSkNCiAgKHczMnNoZWxs LXJlbW92ZS1lbnZwYXRoIGV4ZWMtZGlyZWN0b3J5KQ0KICAodzMyc2hlbGwtcmVtb3ZlLWV4ZWMt cGF0aCBleGVjLWRpcmVjdG9yeSkpDQoNCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzs7IENob29zaW5nIGEgdzMyIHNo ZWxsIGZvciBFbWFjcw0KDQooZGVmdW4gdzMyc2hlbGwtZGVsYXllZC1jdXN0b21pemUgKG1zZyBz eW1ib2wpDQogIChsZXQgKCh1c2UtZGlhbG9nLWJveCBuaWwpDQogICAgICAgIChpcy1ncm91cCAo Z2V0IHN5bWJvbCAnY3VzdG9tLWdyb3VwKSkpDQogICAgKHdoZW4gKHktb3Itbi1wIChmb3JtYXQg IiVzLiBEbyB5b3Ugd2FudCB0byBjdXN0b21pemUgJXMgbm93PyAiIG1zZyBzeW1ib2wpKQ0KICAg ICAgKGlmIGlzLWdyb3VwDQogICAgICAgICAgKGN1c3RvbWl6ZS1ncm91cCBzeW1ib2wpDQogICAg ICAgIChjdXN0b21pemUtb3B0aW9uIHN5bWJvbCkpKSkpDQoNCihkZWZ1biB3MzJzaGVsbC12ZXJp ZnktYmluZGlyIChiaW4tc3ltIHNoZXhlKQ0KICAiSWYgQklOLVNZTSB2YWx1ZSBpcyBhIHNoIGJp biBkaXJlY3RvcnkgbmFtZSByZXR1cm4gaXQuDQpPdGhlcndpc2Ugb2ZmZXIgdGhlIHVzZXIgYXQg aWRsZSB0aW1lIHRvIGN1c3RvbWl6ZSBpdC4NCg0KSGVscGVyIGZvciBgdzMyc2hlbGwtc2V0LXNo ZWxsJy4iDQogIChsZXQgKChzdGFuZGFyZC12YWx1ZSAoY2FyIChnZXQgYmluLXN5bSAnc3RhbmRh cmQtdmFsdWUpKSkNCiAgICAgICAgKGJpbmRpciAoc3ltYm9sLXZhbHVlIGJpbi1zeW0pKQ0KICAg ICAgICBlcnJtc2cgZXhlZmlsZSkNCiAgICAoaWYgKGVxdWFsIGJpbmRpciBzdGFuZGFyZC12YWx1 ZSkNCiAgICAgICAgKHNldHEgZXJybXNnIChjb25jYXQgIllvdSBtdXN0IHNldCAiIChzeW1ib2wt bmFtZSBiaW4tc3ltKSkpDQogICAgICAoaWYgKGZpbGUtZGlyZWN0b3J5LXAgYmluZGlyKQ0KICAg ICAgICAgIChwcm9nbg0KICAgICAgICAgICAgOzsoc2V0cSBleGVmaWxlIChjb25jYXQgYmluZGly ICIvIiBzaGV4ZSkpDQogICAgICAgICAgICAoc2V0cSBleGVmaWxlIChleHBhbmQtZmlsZS1uYW1l IHNoZXhlIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGJpbmRpcikpKQ0KICAgICAgICAgICAgKHVu bGVzcyAoZmlsZS1leGVjdXRhYmxlLXAgZXhlZmlsZSkNCiAgICAgICAgICAgICAgKHNldHEgZXJy bXNnIChjb25jYXQgIkNhbid0IGZpbmQgZmlsZSAiIGV4ZWZpbGUpKSkpDQogICAgICAgIChzZXRx IGVycm1zZyAoY29uY2F0ICJDYW4ndCBmaW5kIGRpcmVjdG9yeSAiIGJpbmRpcikpKSkNCiAgICAo aWYgZXJybXNnDQogICAgICAgIChsZXQgKCh1c2UtZGlhbG9nLWJveCBuaWwpKQ0KICAgICAgICAg IChsd2FybiAnKHczMnNoZWxsKSA6d2FybmluZyBlcnJtc2cpDQogICAgICAgICAgKHVubGVzcyAo ZXEgbWFqb3ItbW9kZSAnY3VzdG9tLW1vZGUpDQogICAgICAgICAgICAod2l0aC10aW1lb3V0ICg2 IChwcm9nbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsd2FybiAnKHczMnNoZWxs KSA6d2FybmluZyAiT2ssIHBsZWFzZSBjdXN0b21pemUgdzMyc2hlbGwgbGF0ZXIhIikNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiVGltZSBvdXQsIGNvbnRpbnVpbmci KSkpDQogICAgICAgICAgICAgICh3MzJzaGVsbC1kZWxheWVkLWN1c3RvbWl6ZSBlcnJtc2cgJ3cz MnNoZWxsKSkpDQogICAgICAgICAgbmlsKQ0KICAgICAgYmluZGlyKSkpDQoNCihkZWZ2YXIgdzMy c2hlbGwtY3VycmVudC1zaGVsbC1wYXRoIG5pbCkNCg0KKGRlZmN1c3RvbSB3MzJzaGVsbC13YW50 ZWQtcHJvZ3MNCiAgJygiZ3JlcCIgImZpbmQiICJ4YXJncyIgImNtcCIgImRpZmYiICJkaWZmMyIg ImNtcCIgInBhdGNoIiAibG9jYXRlIikNCiAgIkxpc3Qgb2YgcHJvZ3JhbXMgdGhhdCBhcmUgY2hl Y2tlZCBmb3IgYXZhaWxhYmlsaXR5Lg0KVGhpcyBsaXN0IG9mIHByb2dyYW1zIGFyZSBzZWFyY2hl ZCBmb3IgaW4geW91ciBwYXRoIGJ5DQpgZXhlY3V0YWJsZS1maW5kJyB3aGVuIGNhbGxpbmcgYHcz MnNoZWxsLXNldC1zaGVsbCcuICBJZiBhbnkgb2YNCnRoZW0gaXMgbm90IGZvdW5kIGEgd2Fybmlu ZyBpcyBnaXZlbi4iDQogIDp0eXBlICcocmVwZWF0IHN0cmluZykNCiAgOmdyb3VwICd3MzJzaGVs bCkNCg0KOzsgRml4LW1lOiB3cml0ZSBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGNvbnNpc3RlbmN5 IGFnYWluc3QgdGhpcyENCihkZWZ1biB3MzJzaGVsbC1zZXQtc2hlbGwgKHNoZWxsbmFtZSkNCiAg IlNldCBzaGVsbCB0byB1c2UgZm9yIGluZmVyaW9yIHNoZWxscy4NClRoaXMgc2V0cyBgc2hlbGwt ZmlsZS1uYW1lJyBhbmQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFNIRUxMLg0KSXQgYWxzbyBj aGFuZ2VzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQQVRIIGFuZCBgZXhlYy1wYXRoJy4NCg0K QWNjZXB0ZWQgdmFsdWVzIGZvciBTSEVMTE5BTUUgYXJlIFwiY21kXCIsIFwiY3lnd2luXCIgYW5k DQpcIm1zeXNcIi4NCg0KSWYgU0hFTExOQU1FIGlzIFwiY3lnd2luXCIgdGhlbiBpdCBjYWxscyBg Y3lnd2luLW1vdW50LWFjdGl2YXRlJy4NCg0KSWYgU0hFTExOQU1FIGlzIFwiY3lnd2luXCIgb3Ig XCJtc3lzXCIgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBiaW4NCmRpcmVjdG9yeSBpcyBhZGRlZCB0 byBwYXRoLg0KDQpUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgcHJvZ3JhbXMgaW4gYHczMnNo ZWxsLXdhbnRlZC1wcm9ncycNCnRoYXQgbWF5IGJlIHVzZWQgZnJvbSB0aGUgaW5mZXJpb3Igc2hl bGxzIGFyZSBhdmFpbGFibGUuICBJZiB0aGV5DQphcmUgbm90IGEgd2FybmluZyB3aWxsIGJlIGdp dmVuLiBJdCBhbHNvIGNoZWNrcyBpZiAnZmluZCcgaXMgdGhlDQp1bml4IHN0eWxlIGZpbmQgb3Ig bm90Lg0KDQpSZXR1cm5zIG5vbi1uaWwgaWYgc3VjY2Vzcy4iDQogIChpbnRlcmFjdGl2ZQ0KICAg KGxpc3QNCiAgICAobGV0KiAoIChoaXN0b3J5ICcoImNtZCIgIm1zeXMiICJjeWd3aW4iKSkNCiAg ICAgICAgICAgIChoaXN0b3J5LWxlbmd0aCAobGVuZ3RoIGhpc3RvcnkpKSApDQogICAgICAoY29t cGxldGluZy1yZWFkICJDaG9vc2Ugc2hlbGw6ICIgJygiY21kIiAibXN5cyIgImN5Z3dpbiIpIG5p bCB0ICJjeWd3aW4iICdoaXN0b3J5KSkpKQ0KICA7Oyhsd2FybiAnKHczMnNoZWxsKSA6d2Fybmlu ZyAiQ2FsbGluZyB3MzJzaGVsbC1zZXQtc2hlbGwgJXMiIHNoZWxsbmFtZSkNCiAgKGxldCAoYmlu IHNoZWxsKQ0KICAgIChjb25kICggIChlcXVhbCBzaGVsbG5hbWUgImN5Z3dpbiIpDQogICAgICAg ICAgICAgKHNldHEgYmluICh3MzJzaGVsbC12ZXJpZnktYmluZGlyICd3MzJzaGVsbC1jeWd3aW4t YmluICJiYXNoLmV4ZSIpKQ0KICAgICAgICAgICAgICh3aGVuIGJpbg0KICAgICAgICAgICAgICAg KGxldCAoKHVzci1iaW4gKGV4cGFuZC1maWxlLW5hbWUgIi4uL3Vzci9iaW4iIGJpbikpDQogICAg ICAgICAgICAgICAgICAgICAodXNyLWxvY2FsLWJpbiAoZXhwYW5kLWZpbGUtbmFtZSAiLi4vdXNy L2xvY2FsL2JpbiIgYmluKSkpDQogICAgICAgICAgICAgICAgIChzZXRxIGJpbiAoZXhwYW5kLWZp bGUtbmFtZSAiLi4vYmluIiBiaW4pKQ0KICAgICAgICAgICAgICAgICA7OyhtZXNzYWdlICJiaW49 JXMgdXNyLWJpbj0lcyB1c3ItbG9jYWwtYmluPSVzIiBiaW4gdXNyLWJpbiB1c3ItbG9jYWwtYmlu KQ0KICAgICAgICAgICAgICAgICAoc2V0cSBiaW4gKGxpc3QgYmluIHVzci1iaW4gdXNyLWxvY2Fs LWJpbikpDQogICAgICAgICAgICAgICAgIChtZXNzYWdlICJiaW49JXMiIGJpbikNCiAgICAgICAg ICAgICAgICAgKQ0KICAgICAgICAgICAgICAgOzsgaW4gY3lnd2luIHVzZSAiY3lncGF0aCAtYSAt dyAvYmluIiBhbmQgImVjaG8gJFBBVEgiIHRvIGNoZWNrLg0KICAgICAgICAgICAgICAgOzsNCiAg ICAgICAgICAgICAgIDs7IEZpeC1tZTogYzovY3lnd2luL2JpbiBzaG93cyB1cCBpbiBjeWd3aW4g YXMgL3Vzci9iaW4NCiAgICAgICAgICAgICAgIDs7IC4uLiAtIGxvb2tzIGxpa2UgYSBjeWd3aW4g YnVnLg0KICAgICAgICAgICAgICAgKHNldHEgc2hlbGwgImJhc2giKQ0KICAgICAgICAgICAgICAg KHNldGVudiAiUFMxIiAiQ3lnd2luIFxcdyA+ICIpKQ0KICAgICAgICAgICAgICkNCiAgICAgICAg ICAoICAoZXF1YWwgc2hlbGxuYW1lICJtc3lzIikNCiAgICAgICAgICAgICAoc2V0cSBiaW4gKHcz MnNoZWxsLXZlcmlmeS1iaW5kaXIgJ3czMnNoZWxsLW1zeXMtYmluICJzaC5leGUiKSkNCiAgICAg ICAgICAgICAod2hlbiBiaW4NCiAgICAgICAgICAgICAgIChzZXRxIHNoZWxsICJzaCIpDQogICAg ICAgICAgICAgICAoc2V0ZW52ICJQUzEiICJNU1lTIFxcdyA+ICIpKQ0KICAgICAgICAgICAgICkN CiAgICAgICAgICAoICAoZXF1YWwgc2hlbGxuYW1lICJjbWQiKQ0KICAgICAgICAgICAgIChzZXRx IGJpbiAodzMyc2hlbGwtZW1hY3N3MzItZ251d2luMzItYmluZGlyKSkNCiAgICAgICAgICAgICA7 Oyhsd2FybiAnKHczMnNoZWxsKSA6d2FybmluZyAiY21kIGNvbmQsIGJpbj0lcyIgYmluKQ0KICAg ICAgICAgICAgIChzZXRxIHNoZWxsIChleHBhbmQtZmlsZS1uYW1lICJjbWRwcm94eS5leGUiIGV4 ZWMtZGlyZWN0b3J5KSkNCiAgICAgICAgICAgICApDQogICAgICAgICAgKCAgdA0KICAgICAgICAg ICAgIChlcnJvciAiVW5yZWNvZ25pemVkIHNoZWxsIG5hbWU6ICVzIiBzaGVsbG5hbWUpKSkNCiAg ICAod2hlbiAob3IgYmluIHNoZWxsKQ0KICAgICAgKHdoZW4gYmluDQogICAgICAgICh1bmxlc3Mg KGxpc3RwIGJpbikgKHNldHEgYmluIChjb25zIGJpbiBuaWwpKSkNCiAgICAgICAgKGRvbGlzdCAo YiBiaW4pDQogICAgICAgICAgKHVubGVzcyAoZmlsZS1kaXJlY3RvcnktcCBiKQ0KICAgICAgICAg ICAgKGVycm9yICJDYW4ndCBmaW5kIGRpcmVjdG9yeSAlcyIgYikpKSkNCiAgICAgICh3aGVuIHcz MnNoZWxsLWN1cnJlbnQtc2hlbGwtcGF0aA0KICAgICAgICAodzMyc2hlbGwtcmVtb3ZlLWV4ZWMt cGF0aCB3MzJzaGVsbC1jdXJyZW50LXNoZWxsLXBhdGgpDQogICAgICAgICh3MzJzaGVsbC1yZW1v dmUtZW52cGF0aCAgIHczMnNoZWxsLWN1cnJlbnQtc2hlbGwtcGF0aCkNCiAgICAgICAgKHNldHEg dzMyc2hlbGwtY3VycmVudC1zaGVsbC1wYXRoIG5pbCkpDQogICAgICAoY29uZCAoIChlcXVhbCBz aGVsbG5hbWUgImNtZCIpDQogICAgICAgICAgICAgIChzZXRxIHByb2Nlc3MtY29kaW5nLXN5c3Rl bS1hbGlzdCBuaWwpDQogICAgICAgICAgICAgIChzZXRxIHczMi1wcm9jZXNzLWFyZ3MgbmlsKQ0K ICAgICAgICAgICAgICAocmVtb3ZlLWhvb2sgJ2NvbWludC1vdXRwdXQtZmlsdGVyLWZ1bmN0aW9u cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbWludC1zdHJpcC1jdHJsLW0pDQogICAg ICAgICAgICAgICkNCiAgICAgICAgICAgICggKG9yIChlcXVhbCBzaGVsbG5hbWUgImN5Z3dpbiIp IChlcXVhbCBzaGVsbG5hbWUgIm1zeXMiKSkNCiAgICAgICAgICAgICAgOzsoc2V0cSBwcm9jZXNz LWNvZGluZy1zeXN0ZW0tYWxpc3QgJygoc2hlbGwtZmlsZS1uYW1lIC4gdW5kZWNpZGVkLXVuaXgp KSkNCiAgICAgICAgICAgICAgOzsoc2V0cSBwcm9jZXNzLWNvZGluZy1zeXN0ZW0tYWxpc3QgKGxp c3QgKGNvbnMgc2hlbGwtZmlsZS1uYW1lICd1bmRlY2lkZWQtdW5peCkpKQ0KICAgICAgICAgICAg ICAoc2V0cSB3MzItcHJvY2Vzcy1hcmdzID9cIikNCiAgICAgICAgICAgICAgOzsgRm9yIEphdmE/ Og0KICAgICAgICAgICAgICAoYWRkLWhvb2sgJ2NvbWludC1vdXRwdXQtZmlsdGVyLWZ1bmN0aW9u cyAnY29taW50LXN0cmlwLWN0cmwtbSkNCiAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgKQ0K ICAgICAgKHdoZW4gc2hlbGwNCiAgICAgICAgOzsobHdhcm4gJyh3MzJzaGVsbCkgOndhcm5pbmcg ImJpbj0lcywgc2hlbGwtbmFtZT0lcyIgYmluIHNoZWxsbmFtZSkNCiAgICAgICAgKHdoZW4gYmlu DQogICAgICAgICAgKGRvbGlzdCAoYiBiaW4pDQogICAgICAgICAgICAodzMyc2hlbGwtYWRkLWV4 ZWMtcGF0aCBiKQ0KICAgICAgICAgICAgKHczMnNoZWxsLWFkZC1lbnZwYXRoIGIpKQ0KICAgICAg ICAgIChtZXNzYWdlICJleGVjLXBhdGg9JXMiIGV4ZWMtcGF0aCkNCiAgICAgICAgICAobWVzc2Fn ZSAiZXZuIFBBVEg9JXMiIChnZXRlbnYgIlBBVEgiKSkpDQogICAgICAgIChzZXRxIHczMnNoZWxs LWN1cnJlbnQtc2hlbGwtcGF0aCBiaW4pDQogICAgICAgIDs7IENhbGwgY3lnd2luLW1vdW50LiBB ZnRlciBhbiBpZGVhIGJ5IElzbWFlbCBWYWxsYWRvbGlkIFRvcnJlczoNCiAgICAgICAgKHdoZW4g KGVxdWFsIHNoZWxsbmFtZSAiY3lnd2luIikNCiAgICAgICAgICAod2hlbiAocmVxdWlyZSAnY3ln d2luLW1vdW50IG5pbCB0KQ0KICAgICAgICAgICAgKGN5Z3dpbi1tb3VudC1hY3RpdmF0ZSkpKQ0K ICAgICAgICAoc2V0cSBzaGVsbC1maWxlLW5hbWUgc2hlbGwpIDsgU2luZ2xlIHNoZWxsDQogICAg ICAgIDs7KHNldGVudiAiU0hFTEwiIHNoZWxsLWZpbGUtbmFtZSkgOyBTaW5nbGUgc2hlbGwNCiAg ICAgICAgOzsoc2V0cSBleHBsaWNpdC1zaGVsbC1maWxlLW5hbWUgc2hlbGwtZmlsZS1uYW1lKQ0K ICAgICAgICA7OyBTb21lIHNhbml0eSBjaGVja3M6DQogICAgICAgICh3MzJzaGVsbC1jaGVjay13 YW50ZWQtcHJvZ3MpDQogICAgICAgICkpDQogICAgYmluKSkNCg0KKGRlZnVuIHczMnNoZWxsLWdl dC1taXNzaW5nLXByb2dzICgpDQogIChsZXQgKChtaXNzaW5nKSkNCiAgICAoZG9saXN0IChwcm9n IHczMnNoZWxsLXdhbnRlZC1wcm9ncykNCiAgICAgICh1bmxlc3MgKGV4ZWN1dGFibGUtZmluZCBw cm9nKQ0KICAgICAgICAoYWRkLXRvLWxpc3QgJ21pc3NpbmcgcHJvZykpKQ0KICAgIG1pc3Npbmcp KQ0KDQooZGVmdW4gdzMyc2hlbGwtZmluZC1pcy11bml4LWZpbmQgKCkNCiAgKGxldCAoKGZpbmQt cHJvZyAoZXhlY3V0YWJsZS1maW5kICJmaW5kIikpDQogICAgICAgIChmaW5kc3RyLXByb2cgKGV4 ZWN1dGFibGUtZmluZCAiZmluZHN0ciIpKSkNCiAgICAobm90IChzdHJpbmc9IChmaWxlLW5hbWUt ZGlyZWN0b3J5IGZpbmQtcHJvZykNCiAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0 b3J5IGZpbmRzdHItcHJvZykpKSkpDQoNCihkZWZ1biB3MzJzaGVsbC1jaGVjay13YW50ZWQtcHJv Z3MgKCkNCiAgIkNoZWNrcyBpZiBgdzMyc2hlbGwtd2FudGVkLXByb2dzJyBhcmUgYXZhaWxhYmxl Lg0KVGhpcyBkZXBlbmRzIG9uIGB3MzJzaGVsbCcuIg0KICAoaW50ZXJhY3RpdmUpDQogIChkb2xp c3QgKHByb2cgKHczMnNoZWxsLWdldC1taXNzaW5nLXByb2dzKSkNCiAgICAobHdhcm4gJyh3MzJz aGVsbCkgOndhcm5pbmcNCiAgICAgICAgICAgKGNvbmNhdCAiV2hlbiB1c2luZyAnIiBzaGVsbG5h bWUgIicgcHJvZ3JhbSAnIiBwcm9nICInIGNhbid0IGJlIGZvdW5kIikpKQ0KICAodW5sZXNzICh3 MzJzaGVsbC1maW5kLWlzLXVuaXgtZmluZCkNCiAgICAobHdhcm4gJyh3MzJzaGVsbCkgOndhcm5p bmcNCiAgICAgICAgICAgKGNvbmNhdCAiV2hlbiB1c2luZyAnIiBzaGVsbG5hbWUgIicgcHJvZ3Jh bSAnZmluZCciDQogICAgICAgICAgICAgICAgICAgIiB3aWxsIGJlIFdpbmRvd3MnIGZpbmQsIHNo b3VsZCBiZSB1bml4JyBmaW5kIikpKSkNCg0KKGRlZnVuIHczMnNoZWxsLXF1b3RlLWFyZ3VtZW50 IChhcmd1bWVudCkNCiAgIkxpa2UgYHNoZWxsLXF1b3RlLWFyZ3VtZW50JyBidXQga25vd3MgYWJv dXQgdzMyc2hlbGwuIg0KICAodW5sZXNzIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkgKGVy cm9yICJZb3UgY2FuIG9ubHkgdXNlIHRoaXMgb24gdzMyIikpDQogIChsZXQgKChzeXN0ZW0tdHlw ZSAoaWYgKHN0cmluZz0gImNtZCIgc2hlbGwtZmlsZS1uYW1lKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgIHN5c3RlbS10eXBlDQogICAgICAgICAgICAgICAgICAgICAgICdnbnUvbGludXgpKSkN CiAgICAgIChzaGVsbC1xdW90ZS1hcmd1bWVudCBhcmd1bWVudCkpKQ0KDQoNCjs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7 OyBDdXN0b20NCg0KKGRlZmdyb3VwIHczMnNoZWxsIG5pbA0KICAiQ3VzdG9taXphdGlvbiBncm91 cCBmb3IgdzMyc2hlbGwiDQogIDpncm91cCAndzMyKQ0KDQooZGVmY3VzdG9tIHczMnNoZWxsLWN5 Z3dpbi1iaW4gIiINCiAgIlBhdGggdG8gQ3lnd2luIGJpbiBkaXJlY3RvcnkuDQpOb3RlIHRoYXQg eW91IGNhbiBzZXQgdGhpcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIG1lbnVzIHRocm91Z2gNCk9w dGlvbnMgLSBDdXN0b21pemUgRW1hY3NXMzIgaWYgeW91IGFyZSB1c2luZyBFbWFjc1czMi4iDQog IDp0eXBlICdkaXJlY3RvcnkNCiAgOmdyb3VwICd3MzJzaGVsbCkNCg0KKGRlZmN1c3RvbSB3MzJz aGVsbC1tc3lzLWJpbiAiIg0KICAiUGF0aCB0byBNU1lTIGJpbiBkaXJlY3RvcnkuDQpOb3RlIHRo YXQgeW91IGNhbiBzZXQgdGhpcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIG1lbnVzIHRocm91Z2gN Ck9wdGlvbnMgLSBDdXN0b21pemUgRW1hY3NXMzIgaWYgeW91IGFyZSB1c2luZyBFbWFjc1czMi4i DQogIDp0eXBlICdkaXJlY3RvcnkNCiAgOmdyb3VwICd3MzJzaGVsbCkNCg0KKGRlZnZhciB3MzJz aGVsbC1vbGQgbmlsKQ0KKGRlZmN1c3RvbSB3MzJzaGVsbC1zaGVsbCBuaWwNCiAgIlNoZWxsIHRv IHVzZSBmb3IgYHNoZWxsJyBjb21tYW5kLg0KVmFsdWUgc2hvdWxkIGJlICdjbWQsICdjeWd3aW4g b3IgJ21zeXMuICBJZiBpdCBpcyBjeWd3aW4gb3IgbXN5cw0KdGhvc2UgdXRpbGl0aWVzIGJpbiBw YXRoIGFyZSBwdXQgZmlyc3QgaW4gcGF0aC4NCg0KU2V0dGluZyBpcyBkb25lIHdpdGggYHczMnNo ZWxsLXNldC1zaGVsbCcuIg0KICA7OyBNYWtlIHN1cmUgZW1hY3N3MzIgaXMgbG9hZGVkOg0KICA7 OzpzZXQtYWZ0ZXIgJyhlbWFjc3czMi1zdHlsZS1mcmFtZS10aXRsZSkNCiAgOnR5cGUgJyhjaG9p Y2UNCiAgICAgICAgICAoY29uc3QgOnRhZyAiKHVuc2V0KSIgbmlsKQ0KICAgICAgICAgIChjb25z dCA6dGFnICJXaW5kb3dzIGNtZC5leGUgLSB1c2VzIHVuaXggcHJvZ3MgZnJvbSBFbWFjc1czMiIg Y21kKQ0KICAgICAgICAgIChjb25zdCA6dGFnICJDeWd3aW4iIGN5Z3dpbikNCiAgICAgICAgICAo Y29uc3QgOnRhZyAiTVNZUyIgbXN5cykNCiAgICAgICAgICApDQogIDpzZXQgKGxhbWJkYSAoc3lt Ym9sIHZhbHVlKQ0KICAgICAgICAgKHNldC1kZWZhdWx0IHN5bWJvbCB2YWx1ZSkNCiAgICAgICAg ICh3aGVuIHZhbHVlDQogICAgICAgICAgICh1bmxlc3MgKGVxIHczMnNoZWxsLW9sZCB2YWx1ZSkN CiAgICAgICAgICAgICAoc2V0cSB3MzJzaGVsbC1vbGQgdmFsdWUpDQogICAgICAgICAgICAgKHcz MnNoZWxsLXNldC1zaGVsbCAoZm9ybWF0ICIlcyIgdmFsdWUpKQ0KICAgICAgICAgICAgICkpDQog ICAgICAgICB0KQ0KICA6Z3JvdXAgJ3czMnNoZWxsKQ0KDQooZGVmY3VzdG9tIHczMnNoZWxsLWFk ZC1lbWFjcy10by1wYXRoIHQNCiAgIkFkZCBFbWFjcyBiaW4gZGlyZWN0b3J5IHRvIHBhdGggd2hl biBub24tbmlsLiINCiAgOnR5cGUgJ2Jvb2xlYW4NCiAgOnNldCAobGFtYmRhIChzeW1ib2wgdmFs dWUpDQogICAgICAgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQ0KICAgICAgICAgKGlmIHZh bHVlDQogICAgICAgICAgICAgKHVubGVzcyAodzMyc2hlbGwtaW4tZXhlYy1wYXRoIGV4ZWMtZGly ZWN0b3J5KQ0KICAgICAgICAgICAgICAgKHczMnNoZWxsLWFkZC1lbWFjcykpDQogICAgICAgICAg ICh3MzJzaGVsbC1yZW1vdmUtZW1hY3MpKSkNCiAgOmdyb3VwICd3MzJzaGVsbCkNCg0KKGRlZnZh ciB3MzJzaGVsbC13aXRoLXNoZWxsLWludGVybmFsIG5pbCkNCg0KKGRlZm1hY3JvIHczMnNoZWxs LXdpdGgtc2hlbGwgKHVzZS1zaGVsbCAmcmVzdCBib2R5KQ0KICAiRXhlY3V0ZSB0aGUgQk9EWSBm b3JtcyB3aXRoIHNoZWxsIHRlbXBvcmFyeSBzZXQgdG8gVVNFLVNIRUxMLiINCiAgKGRlY2xhcmUg KGluZGVudCAwKSAoZGVidWcgdCkpDQogIGAobGV0ICgoc2hlbGwtZmlsZS1uYW1lKQ0KICAgICAg ICAgKGV4ZWMtcGF0aCBleGVjLXBhdGgpDQogICAgICAgICAoZW52cGF0aCAoZ2V0ZW52ICJQQVRI IikpKQ0KICAgICAoY29uZGl0aW9uLWNhc2UgZXJyDQogICAgICAgICAod2hlbiAodzMyc2hlbGwt c2V0LXNoZWxsICx1c2Utc2hlbGwpDQogICAgICAgICAgICxAYm9keSkNCiAgICAgICAoZXJyb3Ig KG1lc3NhZ2UgIiVzIiAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkpKQ0KICAgICAoc2V0ZW52 ICJQQVRIIiBlbnZwYXRoKSkpDQoNCg0KKGRlZnVuIGN5Z3dpbi1zaGVsbCAoKQ0KICAiUnVuIGBz aGVsbCcgd2l0aCBDeWd3aW4gYXMgdGhlIHNoZWxsLg0KRG9lcyBub3QgYWZmZWN0IHRoZSBzZXR0 aW5nIG9mIGB3MzJzaGVsbC1zaGVsbCcgYnV0IG90aGVyd2lzZQ0Kd29ya3MgYXMgaWYgeW91IGhh ZCBzZXQgdGhpcyB0byAnY3lnd2luLg0KDQpTZWUgYWxzbyBgbXN5cy1zaGVsbCcgYW5kIGBjbWQt c2hlbGwnLiINCiAgIlJ1biBgc2hlbGwnIHdpdGggTVNZUyBhcyB0aGUgc2hlbGwuDQpJcyBvdGhl cndpc2Ugc2ltaWxhciB0byBgY3lnd2luLXNoZWxsJy4iDQogIChpbnRlcmFjdGl2ZSkNCiAgKHcz MnNoZWxsLXdpdGgtc2hlbGwgImN5Z3dpbiIgKHNoZWxsICIqY3lnd2luIHNoZWxsKiIpKSkNCg0K KGRlZnVuIG1zeXMtc2hlbGwgKCkNCiAgIlJ1biBgc2hlbGwnIHdpdGggTVNZUyBhcyB0aGUgc2hl bGwuDQpJcyBvdGhlcndpc2Ugc2ltaWxhciB0byBgY3lnd2luLXNoZWxsJy4iDQogIChpbnRlcmFj dGl2ZSkNCiAgKHczMnNoZWxsLXdpdGgtc2hlbGwgIm1zeXMiIChzaGVsbCAiKm1zeXMgc2hlbGwq IikpKQ0KDQooZGVmdW4gY21kLXNoZWxsICgpDQogICJSdW4gYHNoZWxsJyB3aXRoIFdpbmRvd3Mg Q29tbWFuZCBQcm9tcHQgYXMgdGhlIHNoZWxsLg0KRmlsZSBuYW1lIGNvbXBsZXRpb24gd2l0aCBU YWIvU2hpZnQtVGFiIGlzIGRvbmUgaW4gdGhlIHN0eWxlIHRoYXQNCldpbmRvd3MgQ29tbWFuZCBQ cm9tcHQgZG9lcyBpdC4NCg0KSXMgb3RoZXJ3aXNlIHNpbWlsYXIgdG8gYGN5Z3dpbi1zaGVsbCcu Ig0KICAoaW50ZXJhY3RpdmUpDQogICh3MzJzaGVsbC13aXRoLXNoZWxsDQogICAgImNtZCINCiAg ICAocHJvZ24NCiAgICAgIChzaGVsbCAiKmNtZCBzaGVsbCoiKQ0KICAgICAgOzsgZml4LW1lOiBU ZW1wb3JhcnksIHVudGlsIHJlbW92ZWQgZnJvbSB2aXBlcg0KICAgICAgKHdoZW4gKGFuZCAoYm91 bmRwICd2aXBlci1pbnNlcnQtYmFzaWMtbWFwKQ0KICAgICAgICAgICAgICAgICAoa2V5bWFwcCB2 aXBlci1pbnNlcnQtYmFzaWMtbWFwKSkNCiAgICAgICAgKGRlZmluZS1rZXkgdmlwZXItaW5zZXJ0 LWJhc2ljLW1hcA0KICAgICAgICAgIChpZiB2aXBlci14ZW1hY3MtcCBbKHNoaWZ0IHRhYildIFtT LXRhYl0pIG5pbCkpDQogICAgICAobG9jYWwtc2V0LWtleSBbdGFiXSAndzMyc2hlbGwtZHluYW1p Yy1jb21wbGV0ZS1maWxlbmFtZS1saWtlLWNtZC1mdykNCiAgICAgIChsb2NhbC1zZXQta2V5IFso c2hpZnQgdGFiKV0NCiAgICAgICAgICAgICAgICAgICAgICd3MzJzaGVsbC1keW5hbWljLWNvbXBs ZXRlLWZpbGVuYW1lLWxpa2UtY21kLWJ3KSkpKQ0KDQoNCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQooZGVmdW4gdzMyc2hlbGwtZHlu YW1pYy1jb21wbGV0ZS1maWxlbmFtZS1saWtlLWNtZC1mdyAoKQ0KICAiVGFiIHN0eWxlIGZpbGUg bmFtZSBjb21wbGV0aW9uIGxpa2UgY21kLmV4ZS4NClRyaWVzIHRvIGRvIFRhYiBzdHlsZSBmaWxl IG5hbWUgY29tcGxldGlvbiBsaWtlIGNtZC5leGUgb24gdzMyDQpkb2VzIGl0Lg0KDQpTZWUgYWxz byBgdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1maWxlbmFtZS1saWtlLWNtZC1idycuIg0KICAo aW50ZXJhY3RpdmUpDQogICh3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLWZpbGVuYW1lLWxpa2Ut Y21kIHQpKQ0KDQooZGVmdW4gdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1maWxlbmFtZS1saWtl LWNtZC1idyAoKQ0KICAiU2hpZnQtVGFiIHN0eWxlIGZpbGUgbmFtZSBjb21wbGV0aW9uIGxpa2Ug Y21kLmV4ZS4NClRyaWVzIHRvIGRvIFNoaWZ0LVRhYiBzdHlsZSBmaWxlIG5hbWUgY29tcGxldGlv biBsaWtlIGNtZC5leGUgb24NCnczMiBkb2VzIGl0Lg0KDQpTZWUgYWxzbyBgdzMyc2hlbGwtZHlu YW1pYy1jb21wbGV0ZS1maWxlbmFtZS1saWtlLWNtZC1mdycuIg0KICAoaW50ZXJhY3RpdmUpDQog ICh3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLWZpbGVuYW1lLWxpa2UtY21kIG5pbCkpDQoNCihk ZWZjb25zdCB3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLXN0YXRlIG5pbCkNCg0KKGRlZmN1c3Rv bSB3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLXN5bmMtZGlycyB0DQogICJTeW5jaHJvbml6ZSBw cm9jZXNzIGRpcmVjdG9yeSBhbmQgYGRlZmF1bHQtZGlyZWN0b3J5JyBpZiBub24tbmlsLg0KSWYg bm9uLW5pbCB0aGVuIGB3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLWZpbGVuYW1lLWxpa2UtY21k LWZ3JyAoYW5kDQpkaXRvIC1idykgd2lsbCBzZW5kIGFuIGludmlzaWJsZSBcImNkXCIgdG8gdGhl IHByb2Nlc3MgcnVubmluZw0KY21kLmV4ZSB0byBmaW5kIG91dCB3aGF0IGRpcmVjdG9yeSB0aGUg Y21kLmV4ZSBwcm9jZXNzDQp1c2VzLiBgZGVmYXVsdC1kaXJlY3RvcnknIGlzIHRoZW4gc2V0IHRv IHRoaXMgZGlyZWN0b3J5LiINCiAgOnR5cGUgJ2Jvb2xlYW4NCiAgOmdyb3VwICd3MzJzaGVsbCkN Cg0KKGRlZmN1c3RvbSB3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLW9ubHktZGlycyAnKCJjZCIg InB1c2hkIikNCiAgIkNvbW1hbmRzIGZvciB3aGljaCBvbmx5IGRpcmVjdG9yaWVzIHNob3VsZCBi ZSBzaG93bi4NCldoZW4gZG9pbmcgZmlsZSBuYW1lIGNvbXBsZXRpb24gdGhlIGNvbW1hbmRzIGlu IHRoaXMgbGlzdCB3aWxsDQpvbmx5IGdldCBkaXJlY3RvcnkgbmFtZXMuDQoNClRoaXMgaXMgdXNl ZCBpbiBgdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1maWxlbmFtZS1saWtlLWNtZC1mdycgKGFu ZA0KZGl0byAtYncpLiINCiAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKQ0KICA6Z3JvdXAgJ3czMnNo ZWxsKQ0KDQooZGVmdW4gdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1maWxlbmFtZS1saWtlLWNt ZCAoZm9yd2FyZCkNCiAgKGxldCogKChwcm9jIChnZXQtYnVmZmVyLXByb2Nlc3MgKGN1cnJlbnQt YnVmZmVyKSkpDQogICAgICAgICAocG1hcmsgKHByb2Nlc3MtbWFyayBwcm9jKSkNCiAgICAgICAg IChwb2ludCAocG9pbnQpKQ0KICAgICAgICAgKGNtZHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzIHBtYXJrIHBvaW50KSkNCiAgICAgICAgIChhcmd2ICh3MzJzaGVsbC1nZXQtYXJn diBjbWRzdHIpKQ0KICAgICAgICAgKGZpcnN0LWFyZyAoY2FyIGFyZ3YpKQ0KICAgICAgICAgKGxh c3QtYXJnIChjYXIgKHJldmVyc2UgYXJndikpKQ0KICAgICAgICAgKG9ubHktZGlycyAobWVtYmVy IChjYXIgZmlyc3QtYXJnKSB3MzJzaGVsbC1keW5hbWljLWNvbXBsZXRlLW9ubHktZGlycykpDQog ICAgICAgICAocHJldi1jbWRzdHIgICAgICAgICAgKG50aCAwIHczMnNoZWxsLWR5bmFtaWMtY29t cGxldGUtc3RhdGUpKQ0KICAgICAgICAgKHByZXYtY29tcGxldGlvbiAgICAgIChudGggMSB3MzJz aGVsbC1keW5hbWljLWNvbXBsZXRlLXN0YXRlKSkNCiAgICAgICAgIChwcmV2LWJlZ2luLWZpbGVu YW1lICAobnRoIDIgdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1zdGF0ZSkpDQogICAgICAgICAo aW4tY29tcGxldGlvbiAoc3RyaW5nPSBjbWRzdHIgcHJldi1jbWRzdHIpKQ0KICAgICAgICAgKGJl Z2luLWZpbGVuYW1lIHByZXYtYmVnaW4tZmlsZW5hbWUpDQogICAgICAgICBuZXctY29tcGxldGlv bg0KICAgICAgICAgbmV3LWZ1bGwtY29tcGxldGlvbg0KICAgICAgICAgY29tcGxldGlvbi1kaXIN CiAgICAgICAgIGNvbXBsZXRpb24tZGlyLWdpdmVuDQogICAgICAgICBkaXItZmlsZXMNCiAgICAg ICAgIHBpY2stbmV4dA0KICAgICAgICAgYmVnaW5uaW5nLWxhc3QNCiAgICAgICAgICkNCiAgICA7 OyBJbml0aWFsaXplDQogICAgKHNldHEgdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1zdGF0ZSBu aWwpDQogICAgKHdoZW4gbGFzdC1hcmcNCiAgICAgIChzZXRxIGNvbXBsZXRpb24tZGlyLWdpdmVu IChmaWxlLW5hbWUtZGlyZWN0b3J5IChjYXIgbGFzdC1hcmcpKSkpDQogICAgKGlmIGNvbXBsZXRp b24tZGlyLWdpdmVuDQogICAgICAgIChzZXRxIGNvbXBsZXRpb24tZGlyLWdpdmVuDQogICAgICAg ICAgICAgIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGNvbXBsZXRpb24tZGlyLWdpdmVuKSkNCiAg ICAgIChzZXRxIGNvbXBsZXRpb24tZGlyLWdpdmVuICIiKSkNCiAgICA7OyBOb3QgY29udGludWlu ZyBjb21wbGV0aW9uIHNldCB1cCBmb3IgY29tcGxldGlvbg0KICAgICh1bmxlc3MgaW4tY29tcGxl dGlvbg0KICAgICAgKHNldHEgcHJldi1jb21wbGV0aW9uIG5pbCkNCiAgICAgIChpZiBsYXN0LWFy Zw0KICAgICAgICAgIChzZXRxIGJlZ2luLWZpbGVuYW1lDQogICAgICAgICAgICAgICAgKGNvbmNh dCAiXiIgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgKGNhciBsYXN0LWFyZykpKSkNCiAgICAgICAg KHNldHEgYmVnaW4tZmlsZW5hbWUgbmlsKSkNCiAgICAgIDs7IFN5bmMgcHJvY2VzcyBkaXJlY3Rv cnkgYW5kIGRlZmF1bHQtZGlyZWN0b3J5DQogICAgICAod2hlbiB3MzJzaGVsbC1keW5hbWljLWNv bXBsZXRlLXN5bmMtZGlycw0KICAgICAgICAobGV0ICgob2xkLW91dC1maWx0ZXIgKHByb2Nlc3Mt ZmlsdGVyIHByb2MpKSkNCiAgICAgICAgICAoY29uZGl0aW9uLWNhc2UgZXJyDQogICAgICAgICAg ICAgIChwcm9nbg0KICAgICAgICAgICAgICAgIChzZXQtcHJvY2Vzcy1maWx0ZXINCiAgICAgICAg ICAgICAgICAgcHJvYw0KICAgICAgICAgICAgICAgICAobGFtYmRhIChwcm9jIHN0cikNCiAgICAg ICAgICAgICAgICAgICAobGV0ICgobHN0ciAoc3BsaXQtc3RyaW5nIHN0ciAiW1xyXG5dKyIpKSkN CiAgICAgICAgICAgICAgICAgICAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSAobnRoIDEgbHN0cikpKSkp KQ0KICAgICAgICAgICAgICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIHByb2MgImNkXG4iKQ0KICAg ICAgICAgICAgICAgIChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQgcHJvYykpDQogICAgICAgICAgICAo ZXJyb3IgKG1lc3NhZ2UgIiVzIiAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkpKQ0KICAgICAg ICAgIChzZXQtcHJvY2Vzcy1maWx0ZXIgcHJvYyBvbGQtb3V0LWZpbHRlcikpKSkNCiAgICA7OyBG aW5kIGNvbXBsZXRpb24NCiAgICAoc2V0cSBjb21wbGV0aW9uLWRpciAoZXhwYW5kLWZpbGUtbmFt ZSBjb21wbGV0aW9uLWRpci1naXZlbikpDQogICAgKHNldHEgZGlyLWZpbGVzIChkaXJlY3Rvcnkt ZmlsZXMgY29tcGxldGlvbi1kaXIgbmlsIGJlZ2luLWZpbGVuYW1lKSkNCiAgICAodW5sZXNzIGZv cndhcmQNCiAgICAgIChzZXRxIGRpci1maWxlcyAocmV2ZXJzZSBkaXItZmlsZXMpKSkNCiAgICAo ZG9saXN0IChmIGRpci1maWxlcykNCiAgICAgICh3aGVuIChhbmQgKG5vdCAobWVtYmVyIGYgJygi LiIgIi4uIikpKQ0KICAgICAgICAgICAgICAgICAob3IgKG5vdCBvbmx5LWRpcnMpDQogICAgICAg ICAgICAgICAgICAgICAoZmlsZS1kaXJlY3RvcnktcCAoZXhwYW5kLWZpbGUtbmFtZSBmIGNvbXBs ZXRpb24tZGlyKSkpKQ0KICAgICAgICAodW5sZXNzIG5ldy1jb21wbGV0aW9uDQogICAgICAgICAg KHNldHEgbmV3LWNvbXBsZXRpb24gZikpDQogICAgICAgIChpZiAoc3RyaW5nPSBmIHByZXYtY29t cGxldGlvbikNCiAgICAgICAgICAgIChzZXRxIHBpY2stbmV4dCB0KQ0KICAgICAgICAgICh3aGVu IHBpY2stbmV4dA0KICAgICAgICAgICAgKHNldHEgcGljay1uZXh0IG5pbCkNCiAgICAgICAgICAg IChzZXRxIG5ldy1jb21wbGV0aW9uIGYpKSkpKQ0KICAgIChzZXRxIG5ldy1mdWxsLWNvbXBsZXRp b24NCiAgICAgICAgICAoY29udmVydC1zdGFuZGFyZC1maWxlbmFtZQ0KICAgICAgICAgICAoY29u Y2F0IGNvbXBsZXRpb24tZGlyLWdpdmVuIG5ldy1jb21wbGV0aW9uKSkpDQogICAgOzsgUmVwbGFz ZSBsYXN0IGFyZ3VtZW50DQogICAgKHNldHEgYmVnaW5uaW5nLWxhc3QgKG50aCAxIGxhc3QtYXJn KSkNCiAgICAodW5sZXNzIGJlZ2lubmluZy1sYXN0DQogICAgICAoc2V0cSBiZWdpbm5pbmctbGFz dCAwKSkNCiAgICAoZ290by1jaGFyICgrIHBtYXJrIGJlZ2lubmluZy1sYXN0KSkNCiAgICAodW5s ZXNzIChlb2xwKSAoa2lsbC1saW5lKSkNCiAgICA7OyBUaGUgY29kZSBiZWxvdyBzaG91bGQgcHJv YmFibHkgdXNlIHNoZWxsLXF1b3RlLWFyZ3VtZW50LCBidXQNCiAgICA7OyBiZWNhdXNlIG9mIHRy b3VibGUgd2l0aCB0aGlzIGZ1bmN0aW9uIEkgYW0gdXNpbmcgYSBtb3JlDQogICAgOzsgdzMyIHNw ZWNpZmljIHF1b3RpbmcgaGVyZSBhdCB0aGUgbW9tZW50Lg0KICAgIChpZiAobm90IChtZW1xID9c ICAoYXBwZW5kIG5ldy1mdWxsLWNvbXBsZXRpb24gbmlsKSkpDQogICAgICAgIChpbnNlcnQgbmV3 LWZ1bGwtY29tcGxldGlvbikNCiAgICAgIChpbnNlcnQgP1wiKQ0KICAgICAgKGluc2VydCBuZXct ZnVsbC1jb21wbGV0aW9uKQ0KICAgICAgKGluc2VydCA/XCIpKQ0KICAgIDs7IFNhdmUgY29tcGxl dGlvbiBzdGF0ZQ0KICAgIDs7DQogICAgOzsgcmV0dXJuIG5vbi1uaWwgdG8gc2hvdyBjb21wbGV0 aW9uIGhhcyBiZWVuIGRvbmUhDQogICAgKHNldHEgdzMyc2hlbGwtZHluYW1pYy1jb21wbGV0ZS1z dGF0ZQ0KICAgICAgICAgIChsaXN0DQogICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMgcG1hcmsgKHBvaW50KSkNCiAgICAgICAgICAgbmV3LWNvbXBsZXRpb24NCiAgICAg ICAgICAgYmVnaW4tZmlsZW5hbWUpKSkpDQoNCihkZWZ1biB3MzJzaGVsbC1nZXQtYXJndiAoY21k bGluZSkNCiAgIlNwbGl0IENNRExJTkUgaW50byBhcmdzLg0KVGhlIHNwbGl0dGluZyBpcyBkb25l IHVzaW5nIHRoZSBzeW50YXggdXNlZCBvbiBNUyBXaW5kb3dzLg0KDQpSZXR1cm4gYSBsaXN0IHdo ZXJlIGVhY2ggZWxlbWVudCBpcyBhIGxpc3QgaW4gdGhlIGZvcm0NCg0KICBcKGFyZyBhcmctYmVn aW4gYXJnLWVuZCkNCg0Kd2hlcmUgQVJHIGlzIHRoZSBhcmd1bWVudCBzdHJpcHBlZCBmcm9tIGFu eSBcIi4gQVJHLUJFR0lOIGFuZA0KQVJHLUVORCBhcmUgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9m IHRoZSBhcmd1bWVudCBpbiBjbWRsaW5lLg0KDQpJZiBDTURMSU5FIGVuZHMgd2l0aCBhIHNwYWNl IG9yIGlzIFwiXCIgYSBsaXN0IGNvbnNpc3Rpbmcgb2YNClwoXCJcIiBMRU4gbmlsKSBpcyBhZGRl ZC4gTEVOIGlzIHRoZSBsZW5ndGggb2YgQ01ETElORS4iDQogIChsZXQgKChsY21kIChhcHBlbmQg Y21kbGluZSBuaWwpKQ0KICAgICAgICAobGVuIChsZW5ndGggY21kbGluZSkpDQogICAgICAgIGFy Z3YNCiAgICAgICAgc3RhdGUNCiAgICAgICAgYXJnDQogICAgICAgIGFyZy1iZWdpbg0KICAgICAg ICBhcmctZW5kDQogICAgICAgIGMNCiAgICAgICAgKQ0KICAgICh3aGlsZSBsY21kDQogICAgICAo c2V0cSBjIChjYXIgbGNtZCkpDQogICAgICAoc2V0cSBsY21kIChjZHIgbGNtZCkpDQogICAgICAo Y29uZA0KICAgICAgICggIChub3Qgc3RhdGUpDQogICAgICAgICAgKHdoZW4gYXJnIChlcnJvciAi YXJnIG5vdCBuaWwiKSkNCiAgICAgICAgICAoY29uZA0KICAgICAgICAgICAoICg9IGMgP1wgKSkN CiAgICAgICAgICAgKCAoPSBjID9cIikNCiAgICAgICAgICAgICAoc2V0cSBhcmctYmVnaW4gKC0g bGVuIDEgKGxlbmd0aCBsY21kKSkpDQogICAgICAgICAgICAgKHNldHEgc3RhdGUgJ3N0YXRlLXFh cmcpKQ0KICAgICAgICAgICAoIHQNCiAgICAgICAgICAgICAoc2V0cSBhcmctYmVnaW4gKC0gbGVu IDEgKGxlbmd0aCBsY21kKSkpDQogICAgICAgICAgICAgKHNldHEgc3RhdGUgJ3N0YXRlLWFyZykN CiAgICAgICAgICAgICAoc2V0cSBhcmcgKGNvbnMgYyBhcmcpKSkpKQ0KICAgICAgICggIChlcSBz dGF0ZSAnc3RhdGUtYXJnKQ0KICAgICAgICAgIChjb25kDQogICAgICAgICAgICggKD0gYyA/XCAp DQogICAgICAgICAgICAgKHNldHEgc3RhdGUgbmlsKQ0KICAgICAgICAgICAgIChzZXRxIGFyZy1l bmQgKC0gbGVuIDEgKGxlbmd0aCBsY21kKSkpDQogICAgICAgICAgICAgKHNldHEgYXJndiAoY29u cw0KICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IChjb25jYXQgKG5yZXZlcnNlIGFyZykp DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLWJlZ2luDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJnLWVuZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2 KSkNCiAgICAgICAgICAgICAoc2V0cSBhcmcgbmlsKSkNCiAgICAgICAgICAgKCAoPSBjID9cIikN CiAgICAgICAgICAgICAoc2V0cSBzdGF0ZSAnc3RhdGUtYXJnLXEpKQ0KICAgICAgICAgICAoIHQN CiAgICAgICAgICAgICAoc2V0cSBhcmcgKGNvbnMgYyBhcmcpKSkpKQ0KICAgICAgICggIChlcSBz dGF0ZSAnc3RhdGUtYXJnLXEpDQogICAgICAgICAgKGNvbmQNCiAgICAgICAgICAgKCAoPSBjID9c IikNCiAgICAgICAgICAgICAoc2V0cSBzdGF0ZSAnc3RhdGUtYXJnKSkNCiAgICAgICAgICAgKCB0 DQogICAgICAgICAgICAgKHNldHEgYXJnIChjb25zIGMgYXJnKSkpKSkNCiAgICAgICAoICAoZXEg c3RhdGUgJ3N0YXRlLXFhcmcpDQogICAgICAgICAgKGNvbmQNCiAgICAgICAgICAgKCAoPSBjID9c IikNCiAgICAgICAgICAgICAoc2V0cSBzdGF0ZSAnc3RhdGUtcWFyZy1xKSkNCiAgICAgICAgICAg KCB0DQogICAgICAgICAgICAgKHNldHEgYXJnIChjb25zIGMgYXJnKSkpKSkNCiAgICAgICAoICAo ZXEgc3RhdGUgJ3N0YXRlLXFhcmctcSkNCiAgICAgICAgICAoY29uZA0KICAgICAgICAgICAoICg9 IGMgP1wgKQ0KICAgICAgICAgICAgIChzZXRxIHN0YXRlIG5pbCkNCiAgICAgICAgICAgICAoc2V0 cSBhcmctZW5kICgtIGxlbiAxIChsZW5ndGggbGNtZCkpKQ0KICAgICAgICAgICAgIChzZXRxIGFy Z3YgKGNvbnMNCiAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAoY29uY2F0IChucmV2ZXJz ZSBhcmcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy1iZWdpbg0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy1lbmQpDQogICAgICAgICAgICAgICAgICAgICAg ICAgYXJndikpDQogICAgICAgICAgICAgKHNldHEgYXJnIG5pbCkpDQogICAgICAgICAgICggKD0g YyA/XCIpDQogICAgICAgICAgICAgKHNldHEgYXJnIChjb25zIGMgYXJnKSkNCiAgICAgICAgICAg ICAoc2V0cSBzdGF0ZSAnc3RhdGUtcWFyZykpDQogICAgICAgICAgICggdA0KICAgICAgICAgICAg IChzZXRxIGFyZyAoY29ucyBjIGFyZykpKSkpDQogICAgICAgKCAgdA0KICAgICAgICAgIChlcnJv ciAidW5rbm93biBzdGF0ZT0lcyIgc3RhdGUpKQ0KICAgICAgICkpDQogICAgKGlmIGFyZw0KICAg ICAgICAocHJvZ24NCiAgICAgICAgICAoc2V0cSBhcmctZW5kICgtIGxlbiAwIChsZW5ndGggbGNt ZCkpKQ0KICAgICAgICAgIChzZXRxIGFyZ3YgKGNvbnMNCiAgICAgICAgICAgICAgICAgICAgICAo bGlzdA0KICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IChucmV2ZXJzZSBhcmcpKQ0KICAg ICAgICAgICAgICAgICAgICAgICBhcmctYmVnaW4NCiAgICAgICAgICAgICAgICAgICAgICAgYXJn LWVuZCkNCiAgICAgICAgICAgICAgICAgICAgICBhcmd2KSkpDQogICAgICAod2hlbiAob3IgKG5v dCBjKSAoPSBjID9cICkpDQogICAgICAgIChzZXRxIGFyZ3YgKGNvbnMgKGxpc3QgIiIgKGxlbmd0 aCBjbWRzdHIpIG5pbCkgYXJndikpKSkNCiAgICAocmV2ZXJzZSBhcmd2KSkpDQoNCjs7IEZvciB0 ZXN0aW5nOg0KKHdoZW4gbmlsDQogIChnbG9iYWwtc2V0LWtleSBbZjldICAgICAgICAgJ3czMnNo ZWxsLWR5bmFtaWMtY29tcGxldGUtZmlsZW5hbWUtbGlrZS1jbWQtZncpDQogIChnbG9iYWwtc2V0 LWtleSBbKHNoaWZ0IGY5KV0gJ3czMnNoZWxsLWR5bmFtaWMtY29tcGxldGUtZmlsZW5hbWUtbGlr ZS1jbWQtYncpDQogICkNCg0KKHdoZW4gbmlsDQogIChsZXQqICgoY21kICJjZCBcXFwiaGVqXCJc XGR1IFwic2lzdGFcIiIpDQogICAgICAgICAoYXJndiAodzMyc2hlbGwtZ2V0LWFyZ3YgY21kKSkp DQogICAgKGRvbGlzdCAoYSBhcmd2KQ0KICAgICAgKG1lc3NhZ2UgIiVzICVzICVzICglcykiDQog ICAgICAgICAgICAgICAobnRoIDAgYSkNCiAgICAgICAgICAgICAgIChudGggMSBhKQ0KICAgICAg ICAgICAgICAgKG50aCAyIGEpDQogICAgICAgICAgICAgICAoc3Vic3RyaW5nIGNtZCAobnRoIDEg YSkgKG50aCAyIGEpKSkpKQ0KICApDQoNCjs7KHczMi1zaGVsbC1leGVjdXRlIG5pbCAoY29uY2F0 IChnZXRlbnYgIlN5c3RlbVJvb3QiKSAiXFxleHBsb3Jlci5leGUiKSAiL24sL3NlbGVjdCxjOlxc dGVzdFxcdGVtcC5odG0iKQ0KKGRlZnVuIHczMnNoZWxsLWV4cGxvcmVyLWZpbGUgKGZpbGUpDQog ICJPcGVuIFdpbmRvd3MgRXhwbG9yZXIgd2l0aCBmaWxlIEZJTEUgc2VsZWN0ZWQuIg0KICAoaW50 ZXJhY3RpdmUgImZGaWxlIHRvIGZvY3VzIGluIEV4cGxvcmVyOiAiKQ0KICAobGV0ICgoZnVsbC1m aWxlIChleHBhbmQtZmlsZS1uYW1lIGZpbGUpKSkNCiAgICAoc2V0cSBmdWxsLWZpbGUgKHJlcGxh Y2UtcmVnZXhwLWluLXN0cmluZyAiLyIgIlxcIiBmdWxsLWZpbGUgdCB0KSkNCiAgICAodzMyLXNo ZWxsLWV4ZWN1dGUgbmlsIChjb25jYXQgKGdldGVudiAiU3lzdGVtUm9vdCIpICJcXGV4cGxvcmVy LmV4ZSIpDQogICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgIi9uLC9zZWxlY3QsIiBmdWxs LWZpbGUpKSkpDQoNCihkZWZ1biB3MzJzaGVsbC1leHBsb3Jlci1jdXJyZW50LWZpbGUgKCkNCiAg Ik9wZW4gV2luZG93cyBFeHBsb3JlciB3aXRoIGN1cnJlbnQgZmlsZSBzZWxlY3RlZC4iDQogIChp bnRlcmFjdGl2ZSkNCiAgKGlmIGJ1ZmZlci1maWxlLW5hbWUNCiAgICAgICh3MzJzaGVsbC1leHBs b3Jlci1maWxlIGJ1ZmZlci1maWxlLW5hbWUpDQogICAgKG1lc3NhZ2UgIkJ1ZmZlciBoYXMgbm8g ZmlsZSBuYW1lIikpKQ0KDQooZGVmdW4gdzMyc2hlbGwtZXhwbG9yZXItb2xkIChkaXIpDQogICJP cGVuIFdpbmRvd3MgRXhwbG9yZXIgaW4gZGlyZWN0b3J5IERJUi4NCkZvciBzb21lIHJlYXNvbiB3 aXRoIHRoaXMgZnVuY3Rpb24gRXhwbG9yZXIgZG9lcyBub3QgZ2V0DQpmb2N1cy4gVXNlIHRoZSBu ZXcgdmVyc2lvbiBpbnN0ZWFkLiINCiAgKGludGVyYWN0aXZlICJEU3RhcnQgaW4gZGlyZWN0b3J5 OiAiKQ0KICAoc2V0cSBkaXIgKGV4cGFuZC1maWxlLW5hbWUgZGlyKSkNCiAgKHczMi1zaGVsbC1l eGVjdXRlIG5pbCBkaXIpKQ0KDQooZGVmdW4gdzMyc2hlbGwtZXhwbG9yZXIgKGRpcikNCiAgIk9w ZW4gV2luZG93cyBFeHBsb3JlciBpbiBkaXJlY3RvcnkgRElSLiINCiAgKGludGVyYWN0aXZlICJE U3RhcnQgaW4gZGlyZWN0b3J5OiAiKQ0KICAoc2V0cSBkaXIgKGV4cGFuZC1maWxlLW5hbWUgZGly KSkNCiAgOzsoc2V0cSBkaXIgKGRpcmVjdG9yeS1maWxlLW5hbWUgZGlyKSkNCiAgKG1lc3NhZ2Ug ImRpcj0lcyIgZGlyKSAoc2l0LWZvciAyKQ0KICAodzMyLXNoZWxsLWV4ZWN1dGUNCiAgICJleHBs b3JlIiA7O25pbA0KICAgIiIgOyhjb25jYXQgKGdldGVudiAiU3lzdGVtUm9vdCIpICJcXGV4cGxv cmVyLmV4ZSIpDQogICAoY29uY2F0ICIvbiwiIGRpcikNCiAgICkpDQoNCihkZWZ1biB3MzJzaGVs bC1leHBsb3Jlci1oZXJlICgpDQogICJPcGVuIFdpbmRvd3MgRXhwbG9yZXIgaW4gY3VycmVudCBk aXJlY3RvcnkuIg0KICAoaW50ZXJhY3RpdmUpDQogICh3MzJzaGVsbC1leHBsb3JlciBkZWZhdWx0 LWRpcmVjdG9yeSkpDQoNCihkZWZ1biB3MzJzaGVsbC1jbWQgKGRpcikNCiAgIk9wZW4gYSBXaW5k b3dzIGNvbW1hbmQgcHJvbXB0IGluIGRpcmVjdG9yeSBESVIuDQpFbWFjcyBiaW4gZGlyIGlzIGFk ZGVkIHRvIHBhdGggaW4gdGhlIHN0YXJ0ZWQgY29tbWFuZCB3aW5kb3cuIg0KICAoaW50ZXJhY3Rp dmUgIkRTdGFydCBpbiBkaXJlY3Rvcnk6ICIpDQogIChsZXQgKChkZWZhdWx0LWRpcmVjdG9yeSAo ZXhwYW5kLWZpbGUtbmFtZSBkaXIpKQ0KICAgICAgICAob2xkLXBhdGggKGdldGVudiAiUEFUSCIp KSkNCiAgICAodzMyc2hlbGwtYWRkLWVudnBhdGggZXhlYy1kaXJlY3RvcnkpDQogICAgKGNvbmRp dGlvbi1jYXNlIGVycg0KICAgICAgICAocHJvZ24NCiAgICAgICAgICA7OyhjYWxsLXByb2Nlc3Mg ImNtZC5leGUiIG5pbCAwIG5pbCAiL2MiICJzdGFydCIgKGNvbmNhdCAnKD9cIikgImhlajQiICco P1wiKSkgImNtZC5leGUiKQ0KICAgICAgICAgIDs7IEJ1ZyBpbiBjYWxsLXByb2Nlc3MgcXVvdGlu ZywgdXNlIHRoaXMgaW5zdGVhZCB0aGlzOg0KICAgICAgICAgIDs7KHczMi1zaGVsbC1leGVjdXRl IG5pbCAiY21kLmV4ZSIgIi9jIHN0YXJ0IFwiQ29tbWFuZCBQcm9tcHQgd2l0aCBFbWFjcyBpbiBQ QVRIXCIiKQ0KICAgICAgICAgIDs7IE5vcGUsIHRoYXQgd2lsbCBub3QgZ2l2ZSB0aGUgY29ycmVj dCBwYXRoIC4uLiAtIHR1cm4gb2ZmIHF1b3RpbmcgaXMgc3Bhd252ZSBpbnN0ZWFkOg0KICAgICAg ICAgIChsZXQgKCh3MzItcXVvdGUtcHJvY2Vzcy1hcmdzIG5pbCkpDQogICAgICAgICAgICAoY2Fs bC1wcm9jZXNzICJjbWQuZXhlIiBuaWwgMCBuaWwgIi9jIiAic3RhcnQiDQogICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25jYXQgJyg/XCIpICJDb21tYW5kIFByb21wdCB3aXRoIEVtYWNzIGlu IFBBVEgiICcoP1wiKSkgImNtZC5leGUiKSkNCiAgICAgICAgICApDQogICAgICAoZXJyb3IgKG1l c3NhZ2UgIiVzIiAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkpKQ0KICAgIChzZXRlbnYgIlBB VEgiIG9sZC1wYXRoKSkpDQoNCihkZWZ1biB3MzJzaGVsbC1jbWQtaGVyZSAoKQ0KICAiT3BlbiBh IFdpbmRvd3MgY29tbWFuZCBwcm9tcHQgaW4gY3VycmVudCBkaXJlY3RvcnkuDQpFbWFjcyBiaW4g ZGlyIGlzIGFkZGVkIHRvIHBhdGggaW4gdGhlIHN0YXJ0ZWQgY29tbWFuZCB3aW5kb3cuIg0KICAo aW50ZXJhY3RpdmUpDQogICh3MzJzaGVsbC1jbWQgZGVmYXVsdC1kaXJlY3RvcnkpKQ0KDQoocHJv dmlkZSAndzMyc2hlbGwpDQoNCjs7OyB3MzJzaGVsbC5lbCBlbmRzIGhlcmUNCg== --001485f630969996ba046bdd1830--