From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/97470 Path: news.gmane.org!.POSTED!not-for-mail From: Alan Braslau Newsgroups: gmane.comp.tex.context Subject: Re: openBSD (was: which command would give the same effect as \pause in beamer ?) Date: Thu, 2 Mar 2017 08:40:19 -0700 Organization: CEA DSM-IRAMIS-SPEC Message-ID: <20170302084019.5afc2eb7@zoo.hsd1.co.comcast.net> References: <670609060.5701349.1488302851689.JavaMail.zimbra@thiriet.web4me.fr> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/XmOy5o9qH8sM3LYTFW83rPa" X-Trace: blaine.gmane.org 1488469269 18180 195.159.176.226 (2 Mar 2017 15:41:09 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 2 Mar 2017 15:41:09 +0000 (UTC) Cc: mailing list for ConTeXt users , Hans Hagen , Mojca Miklavec To: kaddour kardio , , Karl Berry Original-X-From: ntg-context-bounces@ntg.nl Thu Mar 02 16:41:03 2017 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cjSqf-0003iY-1Z for gctc-ntg-context-518@m.gmane.org; Thu, 02 Mar 2017 16:40:57 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 9E2AF8341F; Thu, 2 Mar 2017 16:40:40 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FDAUR9jxlqNa; Thu, 2 Mar 2017 16:40:40 +0100 (CET) Original-Received: from zapf.ntg.nl (localhost [IPv6:::1]) by zapf.ntg.nl (Postfix) with ESMTP id ED18F8332C; Thu, 2 Mar 2017 16:40:39 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 91634832FF for ; Thu, 2 Mar 2017 16:40:39 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z86Hi4txkTxH for ; Thu, 2 Mar 2017 16:40:37 +0100 (CET) Original-Received: from cirse-smtp-out.extra.cea.fr (cirse-smtp-out.extra.cea.fr [132.167.192.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id A5F0B832FA for ; Thu, 2 Mar 2017 16:40:27 +0100 (CET) Original-Received: from epeire2.extra.cea.fr (epeire2.extra.cea.fr [132.167.198.32]) by cirse-sys.extra.cea.fr (8.14.7/8.14.7/CEAnet-Internet-out-4.0) with ESMTP id v22FeNkH022119; Thu, 2 Mar 2017 16:40:23 +0100 Original-Received: from epeire2.extra.cea.fr (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id C4F81550A69; Thu, 2 Mar 2017 16:40:23 +0100 (CET) Original-Received: from orpin2.extra.cea.fr (orpin2.extra.cea.fr [132.167.198.5]) by epeire2.extra.cea.fr (Postfix) with ESMTP id B0B41550A82; Thu, 2 Mar 2017 16:40:23 +0100 (CET) Original-Received: from zoo.hsd1.co.comcast.net (charybde.extra.cea.fr [132.166.43.102]) by orpin2.extra.cea.fr (8.15.2/8.15.2/CEAnet-Intranet-out-1.4) with ESMTP id v22FeL2B028741; Thu, 2 Mar 2017 16:40:22 +0100 In-Reply-To: X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-apple-darwin16.3.0) X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.16 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.org gmane.comp.tex.context:97470 Archived-At: --MP_/XmOy5o9qH8sM3LYTFW83rPa Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Karl: read the bottom of this email... Hans: please update mtx-update.lua (attached) On Tue, 28 Feb 2017 18:46:29 +0100 kaddour kardio wrote: > OpenBSD? is context standalone available for this platfrom ? Yes! ...but Hans or Mojca need to update mtx-update.lua using the attached file. In the meantime, one can install using first-setup.sh 1) Run ./first-setup.sh The install *will* fail as "openbsd" is missing from bin/mtx-update.lua 2) Copy the attached version to $CONTEXTHOME/bin/ 3) Edit first-setup.sh to comment-out the rsync line 131 (otherwise it will overwrite the modified mtx-update.lua) 4) Run ./first-setup.sh It should now succeed! 5) If running context then fails to find its scripts, remake the formats. I use: mtxrun --selfupdate mtxrun --generate luatools --generate context --make Not all of these commands are probably necessary, but I run them all (in a script) whenever I need to remake the formats and caches. Once the garden gets updated, none of this should be necessary. A few warnings: I compiled luatex (that I upload to the garden) using openbsd 6.0 *snapshot*. Older versions of openbsd may fail due to shared library problems. If anyone encounters this, please let me know and I will work on a solution. Presently, I do not believe that openBSD is officially built for TeXlive. OpenBSD does provide texlive 2015 as packages, however. Alan --MP_/XmOy5o9qH8sM3LYTFW83rPa Content-Type: application/octet-stream; name=mtx-update.lua Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=mtx-update.lua aWYgbm90IG1vZHVsZXMgdGhlbiBtb2R1bGVzID0geyB9IGVuZCBtb2R1bGVzIFsnbXR4LXVwZGF0 ZSddID0gewogICAgdmVyc2lvbiAgID0gMS4wMDIsCiAgICBjb21tZW50ICAgPSAiY29tcGFuaW9u IHRvIG10eHJ1bi5sdWEiLAogICAgYXV0aG9yICAgID0gIkhhbnMgSGFnZW4sIFBSQUdNQS1BREUs IEhhc3NlbHQgTkwiLAogICAgY29weXJpZ2h0ID0gIlBSQUdNQSBBREUgLyBDb25UZVh0IERldmVs b3BtZW50IFRlYW0iLAogICAgbGljZW5zZSAgID0gInNlZSBjb250ZXh0IHJlbGF0ZWQgcmVhZG1l IGZpbGVzIgp9CgotLSBUaGlzIHNjcmlwdCBpcyBkZWRpY2F0ZWQgdG8gTW9qY2EgTWlrbGF2ZWMs IHdobyBpcyB0aGUgZHJpdmluZyBmb3JjZSBiZWhpbmQKLS0gbW92aW5nIG1pbmltYWwgZ2VuZXJh dGlvbiBmcm9tIG91ciBpbnRlcm5hbCBtYWNoaW5lcyB0byB0aGUgY29udGV4dCBnYXJkZW4uCi0t IFRvZ2V0aGVyIHdpdGggQXJ0aHVyIFJldXRlbmF1ZXIgc2hlIG1hZGUgc3VyZSB0aGF0IGl0IHdv cmtlZCB3ZWxsIG9uIGFsbAotLSBwbGF0Zm9ybXMgdGhhdCBtYXR0ZXIuCgotLSBMdWFUZVggYW5k IEx1YWppdFRlWCBhcmUgbm93IGFsd2F5cyBpbnN0YWxsZWQgdG9nZXRoZXIuCgpsb2NhbCBoZWxw aW5mbyA9IFtbCjw/eG1sIHZlcnNpb249IjEuMCI/Pgo8YXBwbGljYXRpb24+CiA8bWV0YWRhdGE+ CiAgPGVudHJ5IG5hbWU9Im5hbWUiPm10eC11cGRhdGU8L2VudHJ5PgogIDxlbnRyeSBuYW1lPSJk ZXRhaWwiPkNvblRlWHQgTWluaW1hbHMgVXBkYXRlcjwvZW50cnk+CiAgPGVudHJ5IG5hbWU9InZl cnNpb24iPjEuMDI8L2VudHJ5PgogPC9tZXRhZGF0YT4KIDxmbGFncz4KICA8Y2F0ZWdvcnkgbmFt ZT0iYmFzaWMiPgogICA8c3ViY2F0ZWdvcnk+CiAgICA8ZmxhZyBuYW1lPSJwbGF0Zm9ybSIgdmFs dWU9InN0cmluZyI+PHNob3J0PnBsYXRmb3JtICh3aW5kb3dzLCBsaW51eCwgbGludXgtNjQsIG9z eC1pbnRlbCwgb3N4LXBwYywgbGludXgtcHBjKTwvc2hvcnQ+PC9mbGFnPgogICAgPGZsYWcgbmFt ZT0ic2VydmVyIiB2YWx1ZT0ic3RyaW5nIj48c2hvcnQ+cmVwb3NpdG9yeSB1cmwgKHJzeW5jOi8v Y29udGV4dGdhcmRlbi5uZXQpPC9zaG9ydD48L2ZsYWc+CiAgICA8ZmxhZyBuYW1lPSJtb2R1bGUi IHZhbHVlPSJzdHJpbmciPjxzaG9ydD5yZXBvc2l0b3J5IHVybCAobWluaW1hbHMpPC9zaG9ydD48 L2ZsYWc+CiAgICA8ZmxhZyBuYW1lPSJyZXBvc2l0b3J5IiB2YWx1ZT0ic3RyaW5nIj48c2hvcnQ+ c3BlY2lmeSB2ZXJzaW9uIChjdXJyZW50LCBleHBlcmltZW50YWwpPC9zaG9ydD48L2ZsYWc+CiAg ICA8ZmxhZyBuYW1lPSJjb250ZXh0IiB2YWx1ZT0ic3RyaW5nIj48c2hvcnQ+c3BlY2lmeSB2ZXJz aW9uIChjdXJyZW50LCBsYXRlc3QsIGJldGEsIHl5eXkubW0uZGQpPC9zaG9ydD48L2ZsYWc+CiAg ICA8ZmxhZyBuYW1lPSJyc3luYyIgdmFsdWU9InN0cmluZyI+PHNob3J0PnJzeW5jIGJpbmFyeSAo cnN5bmMpPC9zaG9ydD48L2ZsYWc+CiAgICA8ZmxhZyBuYW1lPSJ0ZXhyb290IiB2YWx1ZT0ic3Ry aW5nIj48c2hvcnQ+aW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAobm90IGd1ZXNzZWQgZm9yIHRoZSBt b21lbnQpPC9zaG9ydD48L2ZsYWc+CiAgICA8ZmxhZyBuYW1lPSJlbmdpbmUiIHZhbHVlPSJzdHJp bmciPjxzaG9ydD50ZXggZW5naW5lIChsdWF0ZXgsIHBkZnRleCwgeGV0ZXgpPC9zaG9ydD48L2Zs YWc+CiAgICA8ZmxhZyBuYW1lPSJtb2R1bGVzIiB2YWx1ZT0ic3RyaW5nIj48c2hvcnQ+ZXh0cmEg bW9kdWxlcyAoY2FuIGJlIGxpc3Qgb3IgJ2FsbCcpPC9zaG9ydD48L2ZsYWc+CiAgICA8ZmxhZyBu YW1lPSJmb250cyIgdmFsdWU9InN0cmluZyI+PHNob3J0PmFkZGl0aW9uYWwgZm9udHMgKGNhbiBi ZSBsaXN0IG9yICdhbGwnKTwvc2hvcnQ+PC9mbGFnPgogICAgPGZsYWcgbmFtZT0iZ29vZGllcyIg dmFsdWU9InN0cmluZyI+PHNob3J0PmV4dHJhIGJpbmFyaWVzIChsaWtlIHNjaXRlIGFuZCB0ZXh3 b3Jrcyk8L3Nob3J0PjwvZmxhZz4KICAgIDxmbGFnIG5hbWU9ImZvcmNlIj48c2hvcnQ+aW5zdGVh ZCBvZiBhIGRyeXJ1biwgZG8gdGhlIHJlYWwgdGhpbmc8L3Nob3J0PjwvZmxhZz4KICAgIDxmbGFn IG5hbWU9InVwZGF0ZSI+PHNob3J0PnVwZGF0ZSBtaW5pbWFsIHRyZWU8L3Nob3J0PjwvZmxhZz4K ICAgIDxmbGFnIG5hbWU9Im1ha2UiPjxzaG9ydD5hbHNvIG1ha2UgZm9ybWF0cyBhbmQgZ2VuZXJh dGUgZmlsZSBkYXRhYmFzZXM8L3Nob3J0PjwvZmxhZz4KICAgIDxmbGFnIG5hbWU9ImtlZXAiPjxz aG9ydD5kb24ndCBkZWxldGUgdW51c2VkIG9yIG9ic29sZXRlIGZpbGVzPC9zaG9ydD48L2ZsYWc+ CiAgICA8ZmxhZyBuYW1lPSJzdGF0ZSI+PHNob3J0PnVwZGF0ZSB0cmVlIHVzaW5nIHNhdmVkIHN0 YXRlPC9zaG9ydD48L2ZsYWc+CiAgICA8ZmxhZyBuYW1lPSJjeWd3aW4iPjxzaG9ydD5hZGFwdCBk cml2ZSBzcGVjcyB0byBjeWd3aW48L3Nob3J0PjwvZmxhZz4KICAgIDxmbGFnIG5hbWU9Im1pbmd3 Ij48c2hvcnQ+YXNzdW1lIG1pbmd3IGJpbmFyaWVzIGJlaW5nIHVzZWQ8L3Nob3J0PjwvZmxhZz4K ICAgIDxmbGFnIG5hbWU9InNpbGVudCI+PHNob3J0Pmxlc3MgKG9yIG5vKSBsb2dnaW5nPC9zaG9y dD48L2ZsYWc+CiAgIDwvc3ViY2F0ZWdvcnk+CiAgPC9jYXRlZ29yeT4KIDwvZmxhZ3M+CjwvYXBw bGljYXRpb24+Cl1dCgpsb2NhbCBhcHBsaWNhdGlvbiA9IGxvZ3MuYXBwbGljYXRpb24gewogICAg bmFtZSAgICAgPSAibXR4LXVwZGF0ZSIsCiAgICBiYW5uZXIgICA9ICJDb25UZVh0IE1pbmltYWxz IFVwZGF0ZXIgMS4wMiIsCiAgICBoZWxwaW5mbyA9IGhlbHBpbmZvLAp9Cgpsb2NhbCByZXBvcnQg PSBhcHBsaWNhdGlvbi5yZXBvcnQKCmxvY2FsIGZvcm1hdCwgY29uY2F0LCBnbWF0Y2gsIGdzdWIs IGZpbmQgPSBzdHJpbmcuZm9ybWF0LCB0YWJsZS5jb25jYXQsIHN0cmluZy5nbWF0Y2gsIHN0cmlu Zy5nc3ViLCBzdHJpbmcuZmluZAoKc2NyaXB0cyAgICAgICAgID0gc2NyaXB0cyAgICAgICAgIG9y IHsgfQpzY3JpcHRzLnVwZGF0ZSAgPSBzY3JpcHRzLnVwZGF0ZSAgb3IgeyB9CgptaW5pbWFscyAg ICAgICAgPSBtaW5pbWFscyAgICAgICAgb3IgeyB9Cm1pbmltYWxzLmNvbmZpZyA9IG1pbmltYWxz LmNvbmZpZyBvciB7IH0KCi0tIHRoaXMgaXMgbmVlZGVkIHVuZGVyIHdpbmRvd3MKLS0gZWxzZSBy c3luYyBmYWlscyB0byBzZXQgdGhlIHJpZ2h0IGNobW9kIGZsYWdzIHRvIGZpbGVzCgpvcy5zZXRl bnYoIkNZR1dJTiIsIm5vbnRzZWMiKQoKc2NyaXB0cy51cGRhdGUudGV4Zm9ybWF0cyA9IHsKICAg ICJjb250LWVuIiwKICAgICJjb250LW5sIiwKICAgICJjb250LWN6IiwKICAgICJjb250LWRlIiwK ICAgICJjb250LWZhIiwKICAgICJjb250LWl0IiwKICAgICJjb250LXJvIiwKICAgICJjb250LXVr IiwKICAgICJjb250LXBlIiwKIC0tICJjb250LXhwIiwKICAgICJtcHRvcGRmIiwKICAgICJwbGFp biIKfQoKLS0gc2NyaXB0cy51cGRhdGUubXBmb3JtYXRzID0gewotLSAgLS0gIm1ldGFmdW4iLAot LSAgLS0gIm1wb3N0IiwKLS0gfQoKLS0gZXhwZXJpbWVudGFsIGlzIG5vdCBmdW5jdGlvbmFsIGF0 IHRoZSBtb21lbnQKCnNjcmlwdHMudXBkYXRlLnJlcG9zaXRvcmllcyA9IHsKICAgICJjdXJyZW50 IiwKICAgICJleHBlcmltZW50YWwiCn0KCi0tIG1vcmUgb3B0aW9ucyB0aGFuIGp1c3QgdGhlc2Ug dHdvIGFyZSBhdmFpbGFibGUgKG5vIGlkZWEgd2h5IHRoaXMgaXMgaGVyZSkKCnNjcmlwdHMudXBk YXRlLnZlcnNpb25zID0gewogICAgImN1cnJlbnQiLAogICAgImxhdGVzdCIKfQoKLS0gbGlzdCBv ZiBiYXNpYyBmb2xkZXJzIHRoYXQgYXJlIG5lZWRlZCB0byBtYWtlIGEgZnVuY3Rpb25hbCBkaXN0 cmlidXRpb24KCnNjcmlwdHMudXBkYXRlLmJhc2UgPSB7CiAgICB7ICJiYXNlL3RleC8iLCAgICAg ICAgICAgICAgICAidGV4bWYiIH0sCiAgICB7ICJiYXNlL21ldGFwb3N0LyIsICAgICAgICAgICAi dGV4bWYiIH0sCiAgICB7ICJmb250cy9jb21tb24vIiwgICAgICAgICAgICAidGV4bWYiIH0sCiAg ICB7ICJmb250cy9vdGhlci8iLCAgICAgICAgICAgICAidGV4bWYiIH0sIC0tIG5vdCAqcmVhbGx5 KiBuZWVkZWQsIGJ1dCBoZWxwZnVsCiAgICB7ICJjb250ZXh0Lzx2ZXJzaW9uPi8iLCAgICAgICAi dGV4bWYtY29udGV4dCIgfSwKICAgIHsgIm1pc2Mvc2V0dXB0ZXgvIiwgICAgICAgICAgICIuIiB9 LAogICAgeyAibWlzYy93ZWIyYyIsICAgICAgICAgICAgICAgInRleG1mIiB9LAogICAgeyAiYmlu L2NvbW1vbi88cGxhdGZvcm0+LyIsICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sCiAgICB7ICJiaW4v Y29udGV4dC88cGxhdGZvcm0+LyIsICAidGV4bWYtPHBsYXRmb3JtPiIgfSwKICAgIHsgImJpbi9t ZXRhcG9zdC88cGxhdGZvcm0+LyIsICJ0ZXhtZi08cGxhdGZvcm0+IiB9LAogICAgeyAiYmluL21h bi8iLCAgICAgICAgICAgICAgICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sCn0KCi0tIGJpbmFyaWVz IGFuZCBmb250LXJlbGF0ZWQgZmlsZXMKLS0gZm9yIHBkZnRleCB3ZSBkb24ndCBuZWVkIE9wZW5U eXBlIGZvbnRzLCBmb3IgTHVhVGVYL1hlVGVYIHdlIGRvbid0IG5lZWQgVEZNIGZpbGVzCgpzY3Jp cHRzLnVwZGF0ZS5lbmdpbmVzID0gewogICAgWyJsdWF0ZXgiXSA9IHsKICAgICAgICB7ICJmb250 cy9uZXcvIiwgICAgICAgICAgICAgICAidGV4bWYiIH0sCiAgICAgICAgeyAiYmluL2x1YXRleC88 cGxhdGZvcm0+LyIsICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sCiAgICAgLS0geyAiYmluL2x1YWpp dHRleC88cGxhdGZvcm0+LyIsInRleG1mLTxwbGF0Zm9ybT4iIH0sCiAgICB9LAogICAgWyJ4ZXRl eCJdID0gewogICAgICAgIHsgImJhc2UveGV0ZXgvIiwgICAgICAgICAgICAgICJ0ZXhtZiIgfSwK ICAgICAgICB7ICJmb250cy9uZXcvIiwgICAgICAgICAgICAgICAidGV4bWYiIH0sCiAgICAgICAg eyAiYmluL2x1YXRleC88cGxhdGZvcm0+LyIsICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sIC0tIHRv b2xzCiAgICAgICAgeyAiYmluL3hldGV4LzxwbGF0Zm9ybT4vIiwgICAgInRleG1mLTxwbGF0Zm9y bT4iIH0sCiAgICB9LAogICAgWyJwZGZ0ZXgiXSA9IHsKICAgICAgICB7ICJmb250cy9vbGQvIiwg ICAgICAgICAgICAgICAidGV4bWYiIH0sCiAgICAgICAgeyAiYmluL2x1YXRleC88cGxhdGZvcm0+ LyIsICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sIC0tIHRvb2xzCiAgICAgICAgeyAiYmluL3BkZnRl eC88cGxhdGZvcm0+LyIsICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sCiAgICB9LAogICAgWyJhbGwi XSA9IHsKICAgICAgICB7ICJmb250cy9uZXcvIiwgICAgICAgICAgICAgICAidGV4bWYiIH0sCiAg ICAgICAgeyAiZm9udHMvb2xkLyIsICAgICAgICAgICAgICAgInRleG1mIiB9LAogICAgICAgIHsg ImJhc2UveGV0ZXgvIiwgICAgICAgICAgICAgICJ0ZXhtZiIgfSwKICAgICAgICB7ICJiaW4vbHVh dGV4LzxwbGF0Zm9ybT4vIiwgICAidGV4bWYtPHBsYXRmb3JtPiIgfSwKICAgICAtLSB7ICJiaW4v bHVhaml0dGV4LzxwbGF0Zm9ybT4vIiwidGV4bWYtPHBsYXRmb3JtPiIgfSwKICAgICAgICB7ICJi aW4veGV0ZXgvPHBsYXRmb3JtPi8iLCAgICAidGV4bWYtPHBsYXRmb3JtPiIgfSwKICAgICAgICB7 ICJiaW4vcGRmdGV4LzxwbGF0Zm9ybT4vIiwgICAidGV4bWYtPHBsYXRmb3JtPiIgfSwKICAgIH0s Cn0KCnNjcmlwdHMudXBkYXRlLmdvb2RpZXMgPSB7CiAgICBbInNjaXRlIl0gPSB7CiAgICAgICAg eyAiYmluLzxwbGF0Zm9ybT4vc2NpdGUvIiwgICAgInRleG1mLTxwbGF0Zm9ybT4iIH0sCiAgICB9 LAogICAgWyJ0ZXh3b3JrcyJdID0gewogICAgICAgIHsgImJpbi88cGxhdGZvcm0+L3RleHdvcmtz LyIsICJ0ZXhtZi08cGxhdGZvcm0+IiB9LAogICAgfSwKfQoKc2NyaXB0cy51cGRhdGUucGxhdGZv cm1zID0gewogICAgWyJtc3dpbiJdICAgICAgICAgID0gIm1zd2luIiwKICAgIFsid2luZG93cyJd ICAgICAgICA9ICJtc3dpbiIsCiAgICBbIndpbjMyIl0gICAgICAgICAgPSAibXN3aW4iLAogICAg WyJ3aW4iXSAgICAgICAgICAgID0gIm1zd2luIiwKIC0tIFsibXN3aW4iXSAgICAgICAgICA9ICJ3 aW4zMiIsCiAtLSBbIndpbmRvd3MiXSAgICAgICAgPSAid2luMzIiLAogLS0gWyJ3aW4zMiJdICAg ICAgICAgID0gIndpbjMyIiwKIC0tIFsid2luIl0gICAgICAgICAgICA9ICJ3aW4zMiIsCiAgICAt LQogLS0gWyJtc3dpbi02NCJdICAgICAgID0gIm1zd2luLTY0IiwKIC0tIFsid2luZG93cy02NCJd ICAgICA9ICJtc3dpbi02NCIsCiAtLSBbIndpbjY0Il0gICAgICAgICAgPSAibXN3aW4tNjQiLAog ICAgWyJtc3dpbi02NCJdICAgICAgID0gIndpbjY0IiwKICAgIFsid2luZG93cy02NCJdICAgICA9 ICJ3aW42NCIsCiAgICBbIndpbjY0Il0gICAgICAgICAgPSAid2luNjQiLAogICAgLS0KICAgIFsi bGludXgiXSAgICAgICAgICA9ICJsaW51eCIsCiAgICBbImxpbnV4LTMyIl0gICAgICAgPSAibGlu dXgiLAogICAgWyJsaW51eDMyIl0gICAgICAgID0gImxpbnV4IiwKICAgIC0tCiAgICBbImxpbnV4 LTY0Il0gICAgICAgPSAibGludXgtNjQiLAogICAgWyJsaW51eDY0Il0gICAgICAgID0gImxpbnV4 LTY0IiwKICAgIC0tCiAgICBbImxpbnV4LWFybWhmIl0gICAgPSAibGludXgtYXJtaGYiLAogICAg LS0KICAgIFsiZnJlZWJzZCJdICAgICAgICA9ICJmcmVlYnNkIiwKICAgIC0tCiAgICBbImZyZWVi c2QtYW1kNjQiXSAgPSAiZnJlZWJzZC1hbWQ2NCIsCiAgICAtLQogICAgWyJvcGVuYnNkIl0gICAg ICAgID0gIm9wZW5ic2QiLAogICAgLS0KICAgIFsib3BlbmJzZC1hbWQ2NCJdICA9ICJvcGVuYnNk LWFtZDY0IiwKICAgIC0tCiAgICBbImtmcmVlYnNkIl0gICAgICAgPSAia2ZyZWVic2QtaTM4NiIs CiAgICBbImtmcmVlYnNkLWkzODYiXSAgPSAia2ZyZWVic2QtaTM4NiIsCiAgICAtLQogICAgWyJr ZnJlZWJzZC1hbWQ2NCJdID0gImtmcmVlYnNkLWFtZDY0IiwKICAgIC0tCiAgICBbImxpbnV4LXBw YyJdICAgICAgPSAibGludXgtcHBjIiwKICAgIFsicHBjIl0gICAgICAgICAgICA9ICJsaW51eC1w cGMiLAogICAgLS0KICAgIFsib3N4Il0gICAgICAgICAgICA9ICJvc3gtaW50ZWwiLAogICAgWyJt YWNvc3giXSAgICAgICAgID0gIm9zeC1pbnRlbCIsCiAgICBbIm9zeC1pbnRlbCJdICAgICAgPSAi b3N4LWludGVsIiwKICAgIFsib3N4aW50ZWwiXSAgICAgICA9ICJvc3gtaW50ZWwiLAogICAgLS0K ICAgIFsib3N4LXBwYyJdICAgICAgICA9ICJvc3gtcHBjIiwKICAgIFsib3N4LXBvd2VycGMiXSAg ICA9ICJvc3gtcHBjIiwKICAgIFsib3N4cHBjIl0gICAgICAgICA9ICJvc3gtcHBjIiwKICAgIFsi b3N4cG93ZXJwYyJdICAgICA9ICJvc3gtcHBjIiwKICAgIC0tCiAgICBbIm9zeC02NCJdICAgICAg ICAgPSAib3N4LTY0IiwKICAgIC0tCiAgICBbInNvbGFyaXMtaW50ZWwiXSAgPSAic29sYXJpcy1p bnRlbCIsCiAgICAtLQogICAgWyJzb2xhcmlzLXNwYXJjIl0gID0gInNvbGFyaXMtc3BhcmMiLAog ICAgWyJzb2xhcmlzIl0gICAgICAgID0gInNvbGFyaXMtc3BhcmMiLAp9Cgpsb2NhbCB3aW5kb3dz cGxhdGZvcm0gPSB7CiAgICBbIm1zd2luIl0gPSB0cnVlLAogICAgWyJ3aW4zMiJdID0gdHJ1ZSwK ICAgIFsid2luNjQiXSA9IHRydWUsCn0KCnNjcmlwdHMudXBkYXRlLnNlbGZzY3JpcHRzID0gewog ICAgIm10eHJ1biIsCiAtLSAibHVhdG9vbHMiLAp9CgotLSB0aGUgbGlzdCBpcyBmaWxsZWQgdXAg bGF0ZXIgKHdoZW4gd2Uga25vdyB3aGF0IG1vZHVsZXMgdG8gZG93bmxvYWQpCgpzY3JpcHRzLnVw ZGF0ZS5tb2R1bGVzID0gewp9CgpzY3JpcHRzLnVwZGF0ZS5mb250cyA9IHsKfQoKZnVuY3Rpb24g c2NyaXB0cy51cGRhdGUucnVuKHN0cikKICAgIC0tIGltcG9ydGFudCwgb3RoZXJ3aXNlIGZvcm1h dHMgZmx5IHRvIGEgd2VpcmQgcGxhY2UKICAgIC0tICh0ZXhsdWEgc2V0cyBsdWF0ZXggYXMgdGhl IGVuZ2luZSwgd2UgbmVlZCB0byByZXNldCB0aGF0IG9yIHRvIGZpeCB0ZXhleGVjIDopCiAgICBv cy5zZXRlbnYoImVuZ2luZSIsbmlsKQogICAgaWYgZW52aXJvbm1lbnQuYXJndW1lbnQoImZvcmNl IikgdGhlbgogICAgICAgIHJlcG9ydCgicnVuLCAlcyIsc3RyKQogICAgICAgIG9zLmV4ZWN1dGUo c3RyKQogICAgZWxzZQogICAgICAgIHJlcG9ydCgiZHJ5IHJ1biwgJXMiLHN0cikKICAgIGVuZApl bmQKCmZ1bmN0aW9uIHNjcmlwdHMudXBkYXRlLmZ1bGxwYXRoKHBhdGgpCiAgICBpZiBmaWxlLmlz X3Jvb3RiYXNlZF9wYXRoKHBhdGgpIHRoZW4KICAgICAgICByZXR1cm4gcGF0aAogICAgZWxzZQog ICAgICAgIHJldHVybiBsZnMuY3VycmVudGRpcigpIC4uICIvIiAuLiBwYXRoCiAgICBlbmQKZW5k Cgpsb2NhbCByc3luY192YXJpYW50ID0gImN5Z3dpbiIgLS0gd2lsbCBiZSBjb21lIG1pbmd3Cgps b2NhbCBmdW5jdGlvbiBkcml2ZShkKQogICAgaWYgcnN5bmNfdmFyaWFudCA9PSAiY3lnd2luIiB0 aGVuCiAgICAgICAgZCA9IGdzdWIoZCxbWyhbYS16QS1aXSk6L11dLCAiL2N5Z2RyaXZlLyUxLyIp CiAgICBlbHNlCiAgICAgICAgZCA9IGdzdWIoZCxbWyhbYS16QS1aXSk6L11dLCAiLyUxLyIpCiAg ICBlbmQKICAgIHJldHVybiBkCmVuZAoKZnVuY3Rpb24gc2NyaXB0cy51cGRhdGUuc3luY2hyb25p emUoKQoKICAgIHJlcG9ydCgidXBkYXRlLCBzdGFydCIpCgogICAgbG9jYWwgdGV4cm9vdCAgICAg ID0gc2NyaXB0cy51cGRhdGUuZnVsbHBhdGgoc3RhdGVzLmdldCgicGF0aHMucm9vdCIpKQogICAg bG9jYWwgZW5naW5lcyAgICAgID0gc3RhdGVzLmdldCgnZW5naW5lcycpIG9yIHsgfQogICAgbG9j YWwgcGxhdGZvcm1zICAgID0gc3RhdGVzLmdldCgncGxhdGZvcm1zJykgb3IgeyB9CiAgICBsb2Nh bCByZXBvc2l0b3JpZXMgPSBzdGF0ZXMuZ2V0KCdyZXBvc2l0b3JpZXMnKSAgICAgIC0tIG1pbmlt YWxzCiAgICBsb2NhbCBiaW4gICAgICAgICAgPSBzdGF0ZXMuZ2V0KCJyc3luYy5wcm9ncmFtIikg ICAgIC0tIHJzeW5jCiAgICBsb2NhbCB1cmwgICAgICAgICAgPSBzdGF0ZXMuZ2V0KCJyc3luYy5z ZXJ2ZXIiKSAgICAgIC0tIGNvbnRleHRnYXJkZW4ubmV0CiAgICBsb2NhbCB2ZXJzaW9uICAgICAg PSBzdGF0ZXMuZ2V0KCJjb250ZXh0LnZlcnNpb24iKSAgIC0tIGN1cnJlbnQgKG9yIGJldGEpCiAg ICBsb2NhbCBtb2R1bGVzICAgICAgPSBzdGF0ZXMuZ2V0KCJtb2R1bGVzIikgICAgICAgICAgIC0t IG1vZHVsZXMgKHRoaXJkIHBhcnR5KQogICAgbG9jYWwgZm9udHMgICAgICAgID0gc3RhdGVzLmdl dCgiZm9udHMiKSAgICAgICAgICAgICAtLSBmb250cyAoZXhwZXJpbWVudGFsIG9yIHNwZWNpYWwp CiAgICBsb2NhbCBnb29kaWVzICAgICAgPSBzdGF0ZXMuZ2V0KCJnb29kaWVzIikgICAgICAgICAg IC0tIGdvb2RpZXMgKGxpa2UgZWRpdG9ycykKICAgIGxvY2FsIGZvcmNlICAgICAgICA9IGVudmly b25tZW50LmFyZ3VtZW50KCJmb3JjZSIpCiAgICBsb2NhbCBzaWxlbnQgICAgICAgPSBlbnZpcm9u bWVudC5hcmd1bWVudCgic2lsZW50IikgYW5kICItLXNpbGVudCIgb3IgIiIKICAgIGxvY2FsIHF1 aWV0ICAgICAgICA9IHNpbGVudCA9PSAiIiBhbmQgIiIgb3IgIi0tcXVpZXQiCgogICAgYmluID0g Z3N1YihiaW4sIlxcIiwiLyIpCgogICAgaWYgbm90IGZpbmQodXJsLCI6OiQiKSB0aGVuIHVybCA9 IHVybCAuLiAiOjoiIGVuZAogICAgbG9jYWwgb2sgPSBsZnMuYXR0cmlidXRlcyh0ZXhyb290LCJt b2RlIikgPT0gImRpcmVjdG9yeSIKICAgIGlmIG5vdCBvayBhbmQgZm9yY2UgdGhlbgogICAgICAg IGRpci5ta2RpcnModGV4cm9vdCkKICAgICAgICBvayA9IGxmcy5hdHRyaWJ1dGVzKHRleHJvb3Qs Im1vZGUiKSA9PSAiZGlyZWN0b3J5IgogICAgZW5kCgogICAgaWYgZm9yY2UgdGhlbgogICAgICAg IGRpci5ta2RpcnMoZm9ybWF0KCIlcy8lcyIsIHRleHJvb3QsICJ0ZXhtZi1jYWNoZSIpKQogICAg ICAgIGRpci5ta2RpcnMoZm9ybWF0KCIlcy8lcyIsIHRleHJvb3QsICJ0ZXhtZi1sb2NhbCIpKQog ICAgICAgIGRpci5ta2RpcnMoZm9ybWF0KCIlcy8lcyIsIHRleHJvb3QsICJ0ZXhtZi1wcm9qZWN0 IikpCiAgICAgICAgZGlyLm1rZGlycyhmb3JtYXQoIiVzLyVzIiwgdGV4cm9vdCwgInRleG1mLWZv bnRzIikpCiAgICAgICAgZGlyLm1rZGlycyhmb3JtYXQoIiVzLyVzIiwgdGV4cm9vdCwgInRleG1m LW1vZHVsZXMiKSkKICAgIGVuZAoKICAgIGlmIG9rIG9yIG5vdCBmb3JjZSB0aGVuCgogICAgICAg IGxvY2FsIGZldGNoZWQsIGluZGl2aWR1YWwsIG9zcGxhdGZvcm0gPSB7IH0sIHsgfSwgb3MucGxh dGZvcm0KCiAgICAgICAgLS0gdGFrZXMgYSBjb2xsZWN0aW9uIGFzIGFyZ3VtZW50IGFuZCByZXR1 cm5zIGEgbGlzdCBvZiBmb2xkZXJzCgogICAgICAgIGxvY2FsIGZ1bmN0aW9uIGNvbGxlY3Rpb25f dG9fbGlzdF9vZl9mb2xkZXJzKGNvbGxlY3Rpb24sIHBsYXRmb3JtKQogICAgICAgICAgICBsb2Nh bCBhcmNoaXZlcyA9IHt9CiAgICAgICAgICAgIGZvciBpPTEsI2NvbGxlY3Rpb24gZG8KICAgICAg ICAgICAgICAgIGxvY2FsIGFyY2hpdmUgPSBjb2xsZWN0aW9uW2ldWzFdCiAgICAgICAgICAgICAg ICBhcmNoaXZlID0gZ3N1YihhcmNoaXZlLCI8cGxhdGZvcm0+IixwbGF0Zm9ybSkKICAgICAgICAg ICAgICAgIGFyY2hpdmUgPSBnc3ViKGFyY2hpdmUsIjx2ZXJzaW9uPiIsdmVyc2lvbikKICAgICAg ICAgICAgICAgIGFyY2hpdmVzWyNhcmNoaXZlcysxXSA9IGFyY2hpdmUKICAgICAgICAgICAgZW5k CiAgICAgICAgICAgIHJldHVybiBhcmNoaXZlcwogICAgICAgIGVuZAoKICAgICAgICAtLSB0YWtl cyBhIGxpc3Qgb2YgZm9sZGVycyBhcyBhcmd1bWVudCBhbmQgcmV0dXJucyBhIHN0cmluZyBmb3Ig cnN5bmMKICAgICAgICAtLSBzYW1wbGUgaW5wdXQ6CiAgICAgICAgLS0gICAgIHsnYmluL2NvbW1v bicsICdiaW4vY29udGV4dCd9CiAgICAgICAgLS0gb3V0cHV0OgogICAgICAgIC0tICAgICAnbWlu aW1hbHMvY3VycmVudC9iaW4vY29tbW9uIG1pbmltYWxzL2N1cnJlbnQvYmluL2NvbnRleHQnCgog ICAgICAgIGxvY2FsIGZ1bmN0aW9uIGxpc3Rfb2ZfZm9sZGVyc190b19yc3luY19zdHJpbmcobGlz dF9vZl9mb2xkZXJzKQogICAgICAgICAgICBsb2NhbCByZXBvc2l0b3J5ICA9ICdjdXJyZW50Jwog ICAgICAgICAgICBsb2NhbCBwcmVmaXggPSBmb3JtYXQoIiVzLyVzLyIsIHN0YXRlcy5nZXQoJ3Jz eW5jLm1vZHVsZScpLCByZXBvc2l0b3J5KSAtLSBtaW5pbWFscy9jdXJyZW50LwoKICAgICAgICAg ICAgcmV0dXJuIHByZWZpeCAuLiBjb25jYXQobGlzdF9vZl9mb2xkZXJzLCBmb3JtYXQoIiAlcyIs IHByZWZpeCkpCiAgICAgICAgZW5kCgogICAgICAgIC0tIGV4YW1wbGUgb2YgdXNhZ2U6IHByaW50 KGxpc3Rfb2ZfZm9sZGVyc190b19yc3luY19zdHJpbmcoY29sbGVjdGlvbl90b19saXN0X29mX2Zv bGRlcnMoc2NyaXB0cy51cGRhdGUuYmFzZSwgb3MucGxhdGZvcm0pKSkKCiAgICAgICAgLS0gcmVu YW1lIGZ1bmN0aW9uIGFuZCBhZGQgc29tZSBtb3JlIGZ1bmN0aW9uYWxpdHk6CiAgICAgICAgLS0g ICAqIHJlY3Vyc2l2ZS9ub24tcmVjdXJzaXZlIChkZWZhdWx0OiBub24tcmVjdXJzaXZlKQogICAg ICAgIC0tICAgKiBmaWx0ZXIgZm9sZGVycyBvciByZWd1bGFyIGZpbGVzIG9ubHkgKGRlZmF1bHQ6 IG5vIGZpbHRlcikKICAgICAgICAtLSAgICogZ3JlcCBmb3Igc2l6ZSBvZiBpbmNsdWRlZCBmaWxl cyAod2l0aCAtLXN0YXRzIHN3aXRjaCkKCiAgICAgICAgbG9jYWwgZnVuY3Rpb24gZ2V0X2xpc3Rf b2ZfZmlsZXNfZnJvbV9yc3luYyhsaXN0X29mX2ZvbGRlcnMpCiAgICAgICAgICAgIC0tIHRlbXBv cmFyeSBmaWxlIHRvIHN0b3JlIHRoZSBvdXRwdXQgb2YgcnN5bmMgKGNvdWxkIGJlIGEgbW9yZSBy YW5kb20gbmFtZTsgd2F0Y2ggZm9yIG92ZXJ3cml0ZXMpCiAgICAgICAgICAgIGxvY2FsIHRlbXBf ZmlsZSA9ICJyc3luYy50bXAudHh0IgogICAgICAgICAgICAtLSBhIHNldCBvZiBmb2xkZXJzCiAg ICAgICAgICAgIGxvY2FsIGZvbGRlcnMgPSB7fQogICAgICAgICAgICBsb2NhbCBjb21tYW5kID0g Zm9ybWF0KCIlcyAlcyclcycgPiAlcyIsIGJpbiwgdXJsLCBsaXN0X29mX2ZvbGRlcnNfdG9fcnN5 bmNfc3RyaW5nKGxpc3Rfb2ZfZm9sZGVycyksIHRlbXBfZmlsZSkKICAgICAgICAgICAgb3MuZXhl Y3V0ZShjb21tYW5kKQogICAgICAgICAgICAtLSByZWFkIG91dHB1dCBvZiByc3luYwogICAgICAg ICAgICBsb2NhbCBkYXRhID0gaW8ubG9hZGRhdGEodGVtcF9maWxlKSBvciAiIgogICAgICAgICAg ICAtLSBmb3IgZXZlcnkgbGluZSBleHRyYWN0IHRoZSBmaWxlbmFtZSA6ICBkcnd4ci1zci14ICAg ICAgICAgIDE4IDIwMTMvMTAvMDYgMDY6MTY6MTAgbGliZXJ0aW5lCiAgICAgICAgICAgIGZvciBj aG1vZCwgcyBpbiBnbWF0Y2goZGF0YSwiKFtkJS1dW3J3eHN0JS1dKykuLSglUyspW1xuXHJdIikg ZG8KICAgICAgICAgICAgICAgIC0tIHNraXAgImN1cnJlbnQiIGZvbGRlcgogICAgICAgICAgICAg ICAgaWYgcyB+PSAnLicgYW5kICNjaG1vZCA+PSAxMCB0aGVuCiAgICAgICAgICAgICAgICAgICAg Zm9sZGVyc1sjZm9sZGVycysxXSA9IHMKICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBl bmQKICAgICAgICAgICAgLS0gZGVsZXRlIHRoZSBmaWxlIHRvIHdoaWNoIHdlIGhhdmUgcHV0IG91 dHB1dCBvZiByc3luYwogICAgICAgICAgICBvcy5yZW1vdmUodGVtcF9maWxlKQogICAgICAgICAg ICByZXR1cm4gZm9sZGVycwogICAgICAgIGVuZAoKICAgICAgICAtLSByc3luYzovL2NvbnRleHRn YXJkZW4ubmV0L21pbmltYWxzL2N1cnJlbnQvbW9kdWxlcy8KCiAgICAgICAgbG9jYWwgYXZhaWxh YmxlX3BsYXRmb3JtcyA9IGdldF9saXN0X29mX2ZpbGVzX2Zyb21fcnN5bmMoeyJiaW4vbHVhdGV4 LyJ9KQoKICAgICAgICByZXBvcnQoImF2YWlsYWJsZSBwbGF0Zm9ybXM6ICUgdCIsdGFibGUuc29y dGVkKGF2YWlsYWJsZV9wbGF0Zm9ybXMpKQoKICAgICAgICBpZiBtb2R1bGVzIGFuZCB0eXBlKG1v ZHVsZXMpID09ICJ0YWJsZSIgdGhlbgogICAgICAgICAgICAtLSBmZXRjaCB0aGUgbGlzdCBvZiBh dmFpbGFibGUgbW9kdWxlcyBmcm9tIHJzeW5jIHNlcnZlcgogICAgICAgICAtLSBsb2NhbCBhdmFp bGFibGVfbW9kdWxlcyA9IGdldF9saXN0X29mX2ZpbGVzX2Zyb21fcnN5bmMoeyJtb2R1bGVzLyJ9 KQogICAgICAgICAgICAtLSBoYXNoIG9mIHJlcXVlc3RlZCBtb2R1bGVzCiAgICAgICAgICAgIC0t IGxvY2FsIGggPSB0YWJsZS50b2hhc2gobW9kdWxlczpzcGxpdCgiLCIpKQogICAgICAgICAgICBs b2NhbCBhdmFpbGFibGVfbW9kdWxlcyA9IGdldF9saXN0X29mX2ZpbGVzX2Zyb21fcnN5bmMoeyJt b2R1bGVzLyJ9KQogICAgICAgICAgICBsb2NhbCBhc2tlZCA9IHRhYmxlLmNvcHkobW9kdWxlcykK ICAgICAgICAgICAgYXNrZWQuYWxsID0gbmlsCiAgICAgICAgICAgIHJlcG9ydCgiYXZhaWxhYmxl IG1vZHVsZXM6ICVzIiwjYXZhaWxhYmxlX21vZHVsZXMpCiAgICAgICAgICAgIGZvciBpPTEsI2F2 YWlsYWJsZV9tb2R1bGVzIGRvCiAgICAgICAgICAgICAgICBsb2NhbCBzID0gYXZhaWxhYmxlX21v ZHVsZXNbaV0KICAgICAgICAgICAgICAgIGlmIG1vZHVsZXMuYWxsIG9yIG1vZHVsZXNbc10gdGhl bgogICAgICAgICAgICAgICAgICAgIHNjcmlwdHMudXBkYXRlLm1vZHVsZXNbI3NjcmlwdHMudXBk YXRlLm1vZHVsZXMrMV0gPSB7IGZvcm1hdCgibW9kdWxlcy8lcy8iLHMpLCAidGV4bWYtbW9kdWxl cyIgfQogICAgICAgICAgICAgICAgICAgIHJlcG9ydCgiKyAlcyIscykKICAgICAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgICAgICAgICByZXBvcnQoIiAgJXMiLHMpCiAgICAgICAgICAgICAg ICBlbmQKICAgICAgICAgICAgICAgIGFza2VkW3NdID0gbmlsCiAgICAgICAgICAgIGVuZAogICAg ICAgICAgICBpZiBuZXh0KGFza2VkKSB0aGVuCiAgICAgICAgICAgICAgICByZXBvcnQoInNraXBw aW5nIHVua25vd24gbW9kdWxlczogJXMiLGNvbmNhdCh0YWJsZS5zb3J0ZWRrZXlzKGFza2VkKSwi LCAiKSkKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCgogICAgICAgIC0tIHJzeW5jOi8vY29u dGV4dGdhcmRlbi5uZXQvbWluaW1hbHMvY3VycmVudC9mb250cy9leHRyYS8KCiAgICAgICAgaWYg Zm9udHMgYW5kIHR5cGUoZm9udHMpID09ICJ0YWJsZSIgdGhlbgogICAgICAgICAgICBsb2NhbCBh dmFpbGFibGVfZm9udHMgPSBnZXRfbGlzdF9vZl9maWxlc19mcm9tX3JzeW5jKHsiZm9udHMvZXh0 cmEvIn0pCiAgICAgICAgICAgIGxvY2FsIGFza2VkID0gdGFibGUuY29weShmb250cykKICAgICAg ICAgICAgYXNrZWQuYWxsID0gbmlsCiAgICAgICAgICAgIGZvciBpPTEsI2F2YWlsYWJsZV9mb250 cyBkbwogICAgICAgICAgICAgICAgbG9jYWwgcyA9IGF2YWlsYWJsZV9mb250c1tpXQogICAgICAg ICAgICAgICAgaWYgZm9udHMuYWxsIG9yIGZvbnRzW3NdIHRoZW4KICAgICAgICAgICAgICAgICAg ICBzY3JpcHRzLnVwZGF0ZS5mb250c1sjc2NyaXB0cy51cGRhdGUuZm9udHMrMV0gPSB7IGZvcm1h dCgiZm9udHMvZXh0cmEvJXMvIixzKSwgInRleG1mIiB9CiAgICAgICAgICAgICAgICBlbmQKICAg ICAgICAgICAgICAgIGFza2VkW3NdID0gbmlsCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICBp ZiBuZXh0KGFza2VkKSB0aGVuCiAgICAgICAgICAgICAgICByZXBvcnQoInNraXBwaW5nIHVua25v d24gZm9udHM6ICVzIixjb25jYXQodGFibGUuc29ydGVka2V5cyhhc2tlZCksIiwgIikpCiAgICAg ICAgICAgIGVuZAogICAgICAgIGVuZAoKICAgICAgICBsb2NhbCBmdW5jdGlvbiBhZGRfY29sbGVj dGlvbihjb2xsZWN0aW9uLHBsYXRmb3JtKQogICAgICAgICAgICBpZiBjb2xsZWN0aW9uIGFuZCBw bGF0Zm9ybSB0aGVuCiAgICAgICAgICAgICAgICBwbGF0Zm9ybSA9IHNjcmlwdHMudXBkYXRlLnBs YXRmb3Jtc1twbGF0Zm9ybV0KICAgICAgICAgICAgICAgIGlmIHBsYXRmb3JtIHRoZW4KICAgICAg ICAgICAgICAgICAgICBmb3IgaT0xLCNjb2xsZWN0aW9uIGRvCiAgICAgICAgICAgICAgICAgICAg ICAgIGxvY2FsIGMgPSBjb2xsZWN0aW9uW2ldCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs IGFyY2hpdmUgPSBnc3ViKGNbMV0sIjxwbGF0Zm9ybT4iLHBsYXRmb3JtKQogICAgICAgICAgICAg ICAgICAgICAgICBsb2NhbCBkZXN0aW5hdGlvbiA9IGZvcm1hdCgiJXMvJXMiLCB0ZXhyb290LCBn c3ViKGNbMl0sIjxwbGF0Zm9ybT4iLCBwbGF0Zm9ybSkpCiAgICAgICAgICAgICAgICAgICAgICAg IGRlc3RpbmF0aW9uID0gZ3N1YihkZXN0aW5hdGlvbiwiXFwiLCIvIikKICAgICAgICAgICAgICAg ICAgICAgICAgYXJjaGl2ZSA9IGdzdWIoYXJjaGl2ZSwiPHZlcnNpb24+Iix2ZXJzaW9uKQogICAg ICAgICAgICAgICAgICAgICAgICBpZiBvc3BsYXRmb3JtID09ICJ3aW5kb3dzIiBvciBvc3BsYXRm b3JtID09ICJtc3dpbiIgb3Igb3NwbGF0Zm9ybSA9PSAid2luNjQiIHRoZW4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gZHJpdmUoZGVzdGluYXRpb24pCiAgICAgICAg ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsWyNp bmRpdmlkdWFsKzFdID0geyBhcmNoaXZlLCBkZXN0aW5hdGlvbiB9CiAgICAgICAgICAgICAgICAg ICAgZW5kCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCgog ICAgICAgIGZvciBwbGF0Zm9ybSBpbiB0YWJsZS5zb3J0ZWRoYXNoKHBsYXRmb3JtcykgZG8KICAg ICAgICAgICAgYWRkX2NvbGxlY3Rpb24oc2NyaXB0cy51cGRhdGUuYmFzZSxwbGF0Zm9ybSkKICAg ICAgICBlbmQKICAgICAgICBmb3IgcGxhdGZvcm0gaW4gdGFibGUuc29ydGVkaGFzaChwbGF0Zm9y bXMpIGRvCiAgICAgICAgICAgIGFkZF9jb2xsZWN0aW9uKHNjcmlwdHMudXBkYXRlLm1vZHVsZXMs cGxhdGZvcm0pCiAgICAgICAgZW5kCiAgICAgICAgZm9yIHBsYXRmb3JtIGluIHRhYmxlLnNvcnRl ZGhhc2gocGxhdGZvcm1zKSBkbwogICAgICAgICAgICBhZGRfY29sbGVjdGlvbihzY3JpcHRzLnVw ZGF0ZS5mb250cyxwbGF0Zm9ybSkKICAgICAgICBlbmQKICAgICAgICBmb3IgZW5naW5lIGluIHRh YmxlLnNvcnRlZGhhc2goZW5naW5lcykgZG8KICAgICAgICAgICAgZm9yIHBsYXRmb3JtIGluIHRh YmxlLnNvcnRlZGhhc2gocGxhdGZvcm1zKSBkbwogICAgICAgICAgICAgICAgYWRkX2NvbGxlY3Rp b24oc2NyaXB0cy51cGRhdGUuZW5naW5lc1tlbmdpbmVdLHBsYXRmb3JtKQogICAgICAgICAgICBl bmQKICAgICAgICBlbmQKCiAgICAgICAgaWYgZ29vZGllcyBhbmQgdHlwZShnb29kaWVzKSA9PSAi dGFibGUiIHRoZW4KICAgICAgICAgICAgZm9yIGdvb2RpZSBpbiB0YWJsZS5zb3J0ZWRoYXNoKGdv b2RpZXMpIGRvCiAgICAgICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gdGFibGUuc29ydGVkaGFz aChwbGF0Zm9ybXMpIGRvCiAgICAgICAgICAgICAgICAgICAgYWRkX2NvbGxlY3Rpb24oc2NyaXB0 cy51cGRhdGUuZ29vZGllc1tnb29kaWVdLHBsYXRmb3JtKQogICAgICAgICAgICAgICAgZW5kCiAg ICAgICAgICAgIGVuZAogICAgICAgIGVuZAoKICAgICAgICBsb2NhbCBjb21iaW5lZCA9IHsgfQog ICAgICAgIGxvY2FsIHVwZGF0ZV9yZXBvc2l0b3JpZXMgPSBzY3JpcHRzLnVwZGF0ZS5yZXBvc2l0 b3JpZXMKICAgICAgICBmb3IgaT0xLCN1cGRhdGVfcmVwb3NpdG9yaWVzIGRvCiAgICAgICAgICAg IGxvY2FsIHJlcG9zaXRvcnkgPSB1cGRhdGVfcmVwb3NpdG9yaWVzW2ldCiAgICAgICAgICAgIGlm IHJlcG9zaXRvcmllc1tyZXBvc2l0b3J5XSB0aGVuCiAgICAgICAgICAgICAgICBmb3IgXywgdiBp biB0YWJsZS5zb3J0ZWRoYXNoKGluZGl2aWR1YWwpIGRvCiAgICAgICAgICAgICAgICAgICAgbG9j YWwgYXJjaGl2ZSwgZGVzdGluYXRpb24gPSB2WzFdLCB2WzJdCiAgICAgICAgICAgICAgICAgICAg bG9jYWwgY2QgPSBjb21iaW5lZFtkZXN0aW5hdGlvbl0KICAgICAgICAgICAgICAgICAgICBpZiBu b3QgY2QgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBjZCA9IHsgfQogICAgICAgICAgICAg ICAgICAgICAgICBjb21iaW5lZFtkZXN0aW5hdGlvbl0gPSBjZAogICAgICAgICAgICAgICAgICAg IGVuZAogICAgICAgICAgICAgICAgICAgIGNkWyNjZCsxXSA9IGZvcm1hdCgiJXMvJXMvJXMiLHN0 YXRlcy5nZXQoJ3JzeW5jLm1vZHVsZScpLHJlcG9zaXRvcnksYXJjaGl2ZSkKICAgICAgICAgICAg ICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgICBmb3IgZGVzdGluYXRp b24sIGFyY2hpdmUgaW4gdGFibGUuc29ydGVkaGFzaChjb21iaW5lZCkgZG8KICAgICAgICAgICAg bG9jYWwgYXJjaGl2ZXMsIGNvbW1hbmQgPSBjb25jYXQoYXJjaGl2ZSwiICIpLCAiIgogICAgICAg ICAgICBsb2NhbCBub3JtYWxmbGFncywgZGVsZXRlZmxhZ3MgPSBzdGF0ZXMuZ2V0KCJyc3luYy5m bGFncy5ub3JtYWwiKSwgIiIKICAgICAgICAgICAgaWYgb3MubmFtZSA9PSAid2luZG93cyIgdGhl bgogICAgICAgICAgICAgICAgbm9ybWFsZmxhZ3MgPSBub3JtYWxmbGFncyAuLiAiIC1MIiAtLSBu byBzeW1saW5rcwogICAgICAgICAgICBlbmQKICAgICAgICAgICAgbG9jYWwgZHJ5cnVuZmxhZ3Mg PSAiIgogICAgICAgICAgICBpZiBub3QgZW52aXJvbm1lbnQuYXJndW1lbnQoImZvcmNlIikgdGhl bgogICAgICAgICAgICAgICAgZHJ5cnVuZmxhZ3MgPSAiLS1kcnktcnVuIgogICAgICAgICAgICBl bmQKICAgICAgICAgICAgaWYgKGZpbmQoZGVzdGluYXRpb24sInRleG1mJCIpIG9yIGZpbmQoZGVz dGluYXRpb24sInRleG1mJS1jb250ZXh0JCIpIG9yIGZpbmQoZGVzdGluYXRpb24sInRleG1mJS1t b2R1bGVzJCIpKSBhbmQgKG5vdCBlbnZpcm9ubWVudC5hcmd1bWVudCgia2VlcCIpKSB0aGVuCiAg ICAgICAgICAgICAgICBkZWxldGVmbGFncyA9IHN0YXRlcy5nZXQoInJzeW5jLmZsYWdzLmRlbGV0 ZSIpCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICBjb21tYW5kID0gZm9ybWF0KCIlcyAlcyAl cyAlcyAlcyclcycgJyVzJyIsIGJpbiwgbm9ybWFsZmxhZ3MsIGRlbGV0ZWZsYWdzLCBkcnlydW5m bGFncywgdXJsLCBhcmNoaXZlcywgZHJpdmUoZGVzdGluYXRpb24pKQogICAgICAgICAgICAtLSBy ZXBvcnQoInJ1bm5pbmcgY29tbWFuZDogJXMiLGNvbW1hbmQpCiAgICAgICAgICAgIGlmIG5vdCBm ZXRjaGVkW2NvbW1hbmRdIHRoZW4KICAgICAgICAgICAgICAgIHNjcmlwdHMudXBkYXRlLnJ1bihj b21tYW5kLHRydWUpCiAgICAgICAgICAgICAgICBmZXRjaGVkW2NvbW1hbmRdID0gY29tbWFuZAog ICAgICAgICAgICBlbmQKICAgICAgICBlbmQKCiAgICAgICAgbG9jYWwgZnVuY3Rpb24gdXBkYXRl X3NjcmlwdChzY3JpcHQsIHBsYXRmb3JtKQogICAgICAgICAgICBsb2NhbCBiaW4gPSBnc3ViKGJp biwiXFwiLCIvIikKICAgICAgICAgICAgbG9jYWwgdGV4cm9vdCA9IGdzdWIodGV4cm9vdCwiXFwi LCIvIikKICAgICAgICAgICAgcGxhdGZvcm0gPSBzY3JpcHRzLnVwZGF0ZS5wbGF0Zm9ybXNbcGxh dGZvcm1dCiAgICAgICAgICAgIGlmIHBsYXRmb3JtIHRoZW4KICAgICAgICAgICAgICAgIGxvY2Fs IGNvbW1hbmQKICAgICAgICAgICAgICAgIGlmIHdpbmRvd3NwbGF0Zm9ybVtwbGF0Zm9ybV0gdGhl bgogICAgICAgICAgICAgICAgICAgIGJpbiA9IGRyaXZlKGJpbikKICAgICAgICAgICAgICAgICAg ICB0ZXhyb290ID0gZHJpdmUodGV4cm9vdCkKICAgICAgICAgICAgICAgICAgICBjb21tYW5kID0g Zm9ybWF0KFtbJXMgLXQgIiVzL3RleG1mLWNvbnRleHQvc2NyaXB0cy9jb250ZXh0L2x1YS8lcy5s dWEiICIlcy90ZXhtZi0lcy9iaW4vIl1dLCBiaW4sIHRleHJvb3QsIHNjcmlwdCwgdGV4cm9vdCwg cGxhdGZvcm0pCiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgY29tbWFu ZCA9IGZvcm1hdChbWyVzIC10Z28gLS1jaG1vZD1hK3ggJyVzL3RleG1mLWNvbnRleHQvc2NyaXB0 cy9jb250ZXh0L2x1YS8lcy5sdWEnICclcy90ZXhtZi0lcy9iaW4vJXMnXV0sIGJpbiwgdGV4cm9v dCwgc2NyaXB0LCB0ZXhyb290LCBwbGF0Zm9ybSwgc2NyaXB0KQogICAgICAgICAgICAgICAgZW5k CiAgICAgICAgICAgICAgICByZXBvcnQoInVwZGF0aW5nICVzIGZvciAlczogJXMiLCBzY3JpcHQs IHBsYXRmb3JtLCBjb21tYW5kKQogICAgICAgICAgICAgICAgc2NyaXB0cy51cGRhdGUucnVuKGNv bW1hbmQpCiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAoKICAgICAgICBmb3IgcGxhdGZvcm0g aW4gdGFibGUuc29ydGVkaGFzaChwbGF0Zm9ybXMpIGRvCiAgICAgICAgICAgIGZvciBpPTEsICNz Y3JpcHRzLnVwZGF0ZS5zZWxmc2NyaXB0cyBkbwogICAgICAgICAgICAgICAgdXBkYXRlX3Njcmlw dChzY3JpcHRzLnVwZGF0ZS5zZWxmc2NyaXB0c1tpXSxwbGF0Zm9ybSkKICAgICAgICAgICAgZW5k CiAgICAgICAgZW5kCgogICAgZWxzZQogICAgICAgIHJlcG9ydCgibm8gdmFsaWQgdGV4cm9vdDog JXMiLHRleHJvb3QpCiAgICBlbmQKICAgIGlmIG5vdCBmb3JjZSB0aGVuCiAgICAgICAgcmVwb3J0 KCJ1c2UgLS1mb3JjZSB0byByZWFsbHkgdXBkYXRlIGZpbGVzIikKICAgIGVuZAoKICAgIHJlc29s dmVycy5sb2FkX3RyZWUodGV4cm9vdCkgLS0gZWxzZSB3ZSBvcGVyYXRlIGluIHRoZSB3cm9uZyB0 cmVlCgogICAgLS0gdXBkYXRlIGZpbGVuYW1lIGRhdGFiYXNlIGZvciBwZGZ0ZXgveGV0ZXgKICAg IHNjcmlwdHMudXBkYXRlLnJ1bihmb3JtYXQoJ210eHJ1biAtLXRyZWU9IiVzIiAlcyAtLWRpcmVj dCAtLXJlc29sdmUgbWt0ZXhsc3IgJXMnLHRleHJvb3Qsc2lsZW50LHF1aWV0KSkKICAgIC0tIHVw ZGF0ZSBmaWxlbmFtZSBkYXRhYmFzZSBmb3IgbHVhdGV4CiAgICBzY3JpcHRzLnVwZGF0ZS5ydW4o Zm9ybWF0KCdtdHhydW4gLS10cmVlPSIlcyIgJXMgLS1nZW5lcmF0ZScsdGV4cm9vdCxzaWxlbnQp KQoKICAgIHJlcG9ydCgidXBkYXRlLCBkb25lIikKZW5kCgpmdW5jdGlvbiB0YWJsZS5mcm9taGFz aCh0KQogICAgbG9jYWwgaCA9IHsgfQogICAgZm9yIGssIHYgaW4gdGFibGUuc29ydGVkaGFzaCh0 KSBkbyAtLSBub3QgaW5kZXhlZAogICAgICAgIGlmIHYgdGhlbiBoWyNoKzFdID0gayBlbmQKICAg IGVuZAogICAgcmV0dXJuIGgKZW5kCgotLSBtYWtlIHRoZSBDb25UZVh0IGZvcm1hdHMKZnVuY3Rp b24gc2NyaXB0cy51cGRhdGUubWFrZSgpCgogICAgcmVwb3J0KCJtYWtlLCBzdGFydCIpCgogICAg bG9jYWwgZm9yY2UgICAgID0gZW52aXJvbm1lbnQuYXJndW1lbnQoImZvcmNlIikKICAgIGxvY2Fs IHNpbGVudCAgICA9IGVudmlyb25tZW50LmFyZ3VtZW50KCJzaWxlbnQiKSBhbmQgIi0tc2lsZW50 IiBvciAiIgogICAgbG9jYWwgcXVpZXQgICAgID0gc2lsZW50ID09ICIiIGFuZCAiIiBvciAiLS1x dWlldCIKICAgIGxvY2FsIHRleHJvb3QgICA9IHNjcmlwdHMudXBkYXRlLmZ1bGxwYXRoKHN0YXRl cy5nZXQoInBhdGhzLnJvb3QiKSkKICAgIGxvY2FsIGVuZ2luZXMgICA9IHN0YXRlcy5nZXQoJ2Vu Z2luZXMnKQogICAgbG9jYWwgZ29vZGllcyAgID0gc3RhdGVzLmdldCgnZ29vZGllcycpCiAgICBs b2NhbCBwbGF0Zm9ybXMgPSBzdGF0ZXMuZ2V0KCdwbGF0Zm9ybXMnKQogICAgbG9jYWwgZm9ybWF0 cyAgID0gc3RhdGVzLmdldCgnZm9ybWF0cycpCgogICAgcmVzb2x2ZXJzLmxvYWRfdHJlZSh0ZXhy b290KQoKICAgIHNjcmlwdHMudXBkYXRlLnJ1bihmb3JtYXQoJ210eHJ1biAtLXRyZWU9IiVzIiAl cyAtLWRpcmVjdCAtLXJlc29sdmUgbWt0ZXhsc3IgJXMnLHRleHJvb3Qsc2lsZW50LHF1aWV0KSkK ICAgIHNjcmlwdHMudXBkYXRlLnJ1bihmb3JtYXQoJ210eHJ1biAtLXRyZWU9IiVzIiAlcyAtLWdl bmVyYXRlJyx0ZXhyb290LHNpbGVudCkpCgogICAgbG9jYWwgYXNrZWRmb3JtYXRzID0gZm9ybWF0 cwogICAgbG9jYWwgdGV4Zm9ybWF0cyA9IHRhYmxlLnRvaGFzaChzY3JpcHRzLnVwZGF0ZS50ZXhm b3JtYXRzKQogLS0gbG9jYWwgbXBmb3JtYXRzID0gdGFibGUudG9oYXNoKHNjcmlwdHMudXBkYXRl Lm1wZm9ybWF0cykKICAgIGZvciBrLHYgaW4gdGFibGUuc29ydGVkaGFzaCh0ZXhmb3JtYXRzKSBk bwogICAgICAgIGlmIG5vdCBhc2tlZGZvcm1hdHNba10gdGhlbgogICAgICAgICAgICB0ZXhmb3Jt YXRzW2tdID0gbmlsCiAgICAgICAgZW5kCiAgICBlbmQKIC0tIGZvciBrLHYgaW4gdGFibGUuc29y dGVkaGFzaChtcGZvcm1hdHMpIGRvCiAtLSAgICAgaWYgbm90IGFza2VkZm9ybWF0c1trXSB0aGVu CiAtLSAgICAgICAgIG1wZm9ybWF0c1trXSA9IG5pbAogLS0gICAgIGVuZAogLS0gZW5kCiAgICBs b2NhbCBmb3JtYXRsaXN0ID0gY29uY2F0KHRhYmxlLmZyb21oYXNoKHRleGZvcm1hdHMpLCAiICIp CiAgICBpZiBmb3JtYXRsaXN0IH49ICIiIHRoZW4KICAgICAgICBmb3IgZW5naW5lIGluIHRhYmxl LnNvcnRlZGhhc2goZW5naW5lcykgZG8KICAgICAgICAgICAgaWYgZW5naW5lID09ICJsdWF0ZXgi IG9yIGVuZ2luZSA9PSAibHVhaml0dGV4IiB0aGVuCiAgICAgICAgICAgICAgICBzY3JpcHRzLnVw ZGF0ZS5ydW4oZm9ybWF0KCdtdHhydW4gLS10cmVlPSIlcyIgJXMgLS1zY3JpcHQgY29udGV4dCAt LWF1dG9nZW5lcmF0ZSAtLW1ha2UgJXMnLHRleHJvb3Qsc2lsZW50LHNpbGVudCkpCiAgICAgICAg ICAgICAgICBzY3JpcHRzLnVwZGF0ZS5ydW4oZm9ybWF0KCdtdHhydW4gLS10cmVlPSIlcyIgJXMg LS1zY3JpcHQgY29udGV4dCAtLWF1dG9nZW5lcmF0ZSAtLW1ha2UgLS1lbmdpbmU9bHVhaml0dGV4 ICVzJyx0ZXhyb290LHNpbGVudCxzaWxlbnQpKQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAtLSBzY3JpcHRzLnVwZGF0ZS5ydW4oZm9ybWF0KCdtdHhydW4gLS10cmVlPSIlcyIgJXMgLS1z Y3JpcHQgdGV4ZXhlYyAtLW1ha2UgLS1hbGwgJXMgLS0lcyAlcycsdGV4cm9vdCxzaWxlbnQsc2ls ZW50LGVuZ2luZSxmb3JtYXRsaXN0KSkKICAgICAgICAgICAgICAgIHNjcmlwdHMudXBkYXRlLnJ1 bihmb3JtYXQoJ210eHJ1biAtLXRyZWU9IiVzIiAtLXJlc29sdmUgJXMgLS1zY3JpcHQgY29udGV4 dCAtLXJlc29sdmUgLS1tYWtlICVzIC0tZW5naW5lPSVzICVzJyx0ZXhyb290LHNpbGVudCxzaWxl bnQsZW5naW5lLGZvcm1hdGxpc3QpKQogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgIGVu ZAogLS0gbG9jYWwgZm9ybWF0bGlzdCA9IGNvbmNhdCh0YWJsZS5mcm9taGFzaChtcGZvcm1hdHMp LCAiICIpCiAtLSBpZiBmb3JtYXRsaXN0IH49ICIiIHRoZW4KIC0tICAgICBzY3JpcHRzLnVwZGF0 ZS5ydW4oZm9ybWF0KCdtdHhydW4gLS10cmVlPSIlcyIgJXMgLS1zY3JpcHQgdGV4ZXhlYyAtLW1h a2UgLS1hbGwgJXMgJXMnLHRleHJvb3Qsc2lsZW50LHNpbGVudCxmb3JtYXRsaXN0KSkKIC0tIGVu ZAogICAgaWYgbm90IGZvcmNlIHRoZW4KICAgICAgICByZXBvcnQoIm1ha2UsIHVzZSAtLWZvcmNl IHRvIHJlYWxseSBtYWtlIGZvcm1hdHMiKQogICAgZW5kCgogLS0gc2NyaXB0cy51cGRhdGUucnVu KGZvcm1hdCgnbXR4cnVuIC0tdHJlZT0iJXMiICVzIC0tZGlyZWN0IC0tcmVzb2x2ZSBta3RleGxz cicsdGV4cm9vdCxzaWxlbnQpKSAtLSBuZWVkZWQgZm9yIG1wb3N0CiAgICBzY3JpcHRzLnVwZGF0 ZS5ydW4oZm9ybWF0KCdtdHhydW4gLS10cmVlPSIlcyIgJXMgLS1nZW5lcmF0ZScsdGV4cm9vdCxz aWxlbnQpKQoKICAgIHJlcG9ydCgibWFrZSwgZG9uZSIpCmVuZAoKc2NyaXB0cy5zYXZlc3RhdGUg PSB0cnVlCgppZiBzY3JpcHRzLnNhdmVzdGF0ZSB0aGVuCgogICAgc3RhdGVzLmxvYWQoInN0YXR1 cy1vZi11cGRhdGUubHVhIikKCiAgICAtLSB0YWcsIHZhbHVlLCBkZWZhdWx0LCBwZXJzaXN0ZW50 CgogICAgc3RhdGlzdGljcy5zdGFydHRpbWluZyhzdGF0ZXMpCgogICAgc3RhdGVzLnNldCgiaW5m by52ZXJzaW9uIiwwLjEpIC0tIG9rCiAgICBzdGF0ZXMuc2V0KCJpbmZvLmNvdW50Iiwoc3RhdGVz LmdldCgiaW5mby5jb3VudCIpIG9yIDApICsgMSwxLGZhbHNlKSAtLSBvawogICAgc3RhdGVzLnNl dCgiaW5mby5jb21tZW50IiwidGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBzZXR0aW5ncyBvZiB0aGUg bGFzdCAnbXR4cnVuIC0tc2NyaXB0IHVwZGF0ZScgcnVuIixmYWxzZSkgLS0gb2sKICAgIHN0YXRl cy5zZXQoImluZm8uZGF0ZSIsb3MuZGF0ZSgiISVZLSVtLSVkICVIOiVNOiVTIikpIC0tIG9rCgog ICAgc3RhdGVzLnNldCgicnN5bmMucHJvZ3JhbSIsIGVudmlyb25tZW50LmFyZ3VtZW50KCJyc3lu YyIpLCAicnN5bmMiLCB0cnVlKSAtLSBvawogICAgc3RhdGVzLnNldCgicnN5bmMuc2VydmVyIiwg ZW52aXJvbm1lbnQuYXJndW1lbnQoInNlcnZlciIpLCAiY29udGV4dGdhcmRlbi5uZXQ6OiIsIHRy dWUpIC0tIG9rCiAgICBzdGF0ZXMuc2V0KCJyc3luYy5tb2R1bGUiLCBlbnZpcm9ubWVudC5hcmd1 bWVudCgibW9kdWxlIiksICJtaW5pbWFscyIsIHRydWUpIC0tIG9rCiAgICBzdGF0ZXMuc2V0KCJy c3luYy5mbGFncy5ub3JtYWwiLCBlbnZpcm9ubWVudC5hcmd1bWVudCgiZmxhZ3MiKSwgIi1ycHp0 bHYiLCB0cnVlKSAtLSBvawogICAgc3RhdGVzLnNldCgicnN5bmMuZmxhZ3MuZGVsZXRlIiwgbmls LCAiLS1kZWxldGUiLCB0cnVlKSAtLSBvawoKICAgIHN0YXRlcy5zZXQoInBhdGhzLnJvb3QiLCBl bnZpcm9ubWVudC5hcmd1bWVudCgidGV4cm9vdCIpLCAidGV4IiwgdHJ1ZSkgLS0gb2sKCiAgICBz dGF0ZXMuc2V0KCJjb250ZXh0LnZlcnNpb24iLCBlbnZpcm9ubWVudC5hcmd1bWVudCgiY29udGV4 dCIpLCAiY3VycmVudCIsIHRydWUpIC0tIG9rCgogICAgbG9jYWwgdmFsaWQgPSB0YWJsZS50b2hh c2goc2NyaXB0cy51cGRhdGUucmVwb3NpdG9yaWVzKQogICAgZm9yIHIgaW4gZ21hdGNoKGVudmly b25tZW50LmFyZ3VtZW50KCJyZXBvc2l0b3J5Iikgb3IgImN1cnJlbnQiLCIoW14sIF0rKSIpIGRv CiAgICAgICAgaWYgdmFsaWRbcl0gdGhlbiBzdGF0ZXMuc2V0KCJyZXBvc2l0b3JpZXMuIiAuLiBy LCB0cnVlKSBlbmQKICAgIGVuZAoKICAgIGxvY2FsIHZhbGlkID0gc2NyaXB0cy51cGRhdGUuZW5n aW5lcwogICAgbG9jYWwgZW5naW5lID0gZW52aXJvbm1lbnQuYXJndW1lbnQoImVuZ2luZSIpIG9y ICIiCiAgICBpZiBlbmdpbmUgPT0gIiIgdGhlbgogICAgICAgIGxvY2FsIGUgPSBzdGF0ZXMuZ2V0 KCJlbmdpbmVzIikKICAgICAgICBpZiBub3QgZSBvciBub3QgbmV4dChlKSB0aGVuCiAgICAgICAg ICAgIGVuZ2luZSA9ICJhbGwiCiAgICAgICAgZW5kCiAgICBlbmQKICAgIGlmIGVuZ2luZSB+PSAi IiB0aGVuCiAgICAgICAgZm9yIHIgaW4gZ21hdGNoKGVuZ2luZSwiKFteLCBdKykiKSBkbwogICAg ICAgICAgICBpZiByID09ICJhbGwiIHRoZW4KICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIG5l eHQsIHZhbGlkIGRvCiAgICAgICAgICAgICAgICAgICAgaWYgayB+PSAiYWxsIiB0aGVuCiAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zZXQoImVuZ2luZXMuIiAuLiBrLCB0cnVlKQogICAg ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBi cmVhawogICAgICAgICAgICBlbHNlaWYgdmFsaWRbcl0gdGhlbgogICAgICAgICAgICAgICAgc3Rh dGVzLnNldCgiZW5naW5lcy4iIC4uIHIsIHRydWUpCiAgICAgICAgICAgIGVuZAogICAgICAgIGVu ZAogICAgZW5kCgogICAgbG9jYWwgdmFsaWQgPSBzY3JpcHRzLnVwZGF0ZS5wbGF0Zm9ybXMKICAg IGZvciByIGluIGdtYXRjaChlbnZpcm9ubWVudC5hcmd1bWVudCgicGxhdGZvcm0iKSBvciBvcy5w bGF0Zm9ybSwiKFteLCBdKykiKSBkbwogICAgICAgIGlmIHZhbGlkW3JdIHRoZW4gc3RhdGVzLnNl dCgicGxhdGZvcm1zLiIgLi4gciwgdHJ1ZSkgZW5kCiAgICBlbmQKCiAgICBsb2NhbCB2YWxpZCA9 IHRhYmxlLnRvaGFzaChzY3JpcHRzLnVwZGF0ZS50ZXhmb3JtYXRzKQogICAgZm9yIHIgaW4gZ21h dGNoKGVudmlyb25tZW50LmFyZ3VtZW50KCJmb3JtYXRzIikgb3IgIiIsIihbXiwgXSspIikgZG8K ICAgICAgICBpZiB2YWxpZFtyXSB0aGVuIHN0YXRlcy5zZXQoImZvcm1hdHMuIiAuLiByLCB0cnVl KSBlbmQKICAgIGVuZAogLS0gbG9jYWwgdmFsaWQgPSB0YWJsZS50b2hhc2goc2NyaXB0cy51cGRh dGUubXBmb3JtYXRzKQogLS0gZm9yIHIgaW4gZ21hdGNoKGVudmlyb25tZW50LmFyZ3VtZW50KCJm b3JtYXRzIikgb3IgIiIsIihbXiwgXSspIikgZG8KIC0tICAgICBpZiB2YWxpZFtyXSB0aGVuIHN0 YXRlcy5zZXQoImZvcm1hdHMuIiAuLiByLCB0cnVlKSBlbmQKIC0tIGVuZAoKICAgIHN0YXRlcy5z ZXQoImZvcm1hdHMuY29udC1lbiIsIHRydWUpCiAgICBzdGF0ZXMuc2V0KCJmb3JtYXRzLmNvbnQt bmwiLCB0cnVlKQogLS0gc3RhdGVzLnNldCgiZm9ybWF0cy5tZXRhZnVuIiwgdHJ1ZSkKCiAgICBm b3IgciBpbiBnbWF0Y2goZW52aXJvbm1lbnQuYXJndW1lbnQoImV4dHJhcyIpIG9yICIiLCIoW14s IF0rKSIpIGRvIC0tIGZvciBvbGQgdGltZXMgc2FrZQogICAgICAgIGlmIHIgfj0gImFsbCIgYW5k IG5vdCBmaW5kKHIsIl5bYS16XSUtIikgdGhlbgogICAgICAgICAgICByID0gInQtIiAuLiByCiAg ICAgICAgZW5kCiAgICAgICAgc3RhdGVzLnNldCgibW9kdWxlcy4iIC4uIHIsIHRydWUpCiAgICBl bmQKICAgIGZvciByIGluIGdtYXRjaChlbnZpcm9ubWVudC5hcmd1bWVudCgibW9kdWxlcyIpIG9y ICIiLCIoW14sIF0rKSIpIGRvCiAgICAgICAgaWYgciB+PSAiYWxsIiBhbmQgbm90IGZpbmQociwi XlthLXpdJS0iKSB0aGVuCiAgICAgICAgICAgIHIgPSAidC0iIC4uIHIKICAgICAgICBlbmQKICAg ICAgICBzdGF0ZXMuc2V0KCJtb2R1bGVzLiIgLi4gciwgdHJ1ZSkKICAgIGVuZAogICAgZm9yIHIg aW4gZ21hdGNoKGVudmlyb25tZW50LmFyZ3VtZW50KCJmb250cyIpIG9yICIiLCIoW14sIF0rKSIp IGRvCiAgICAgICAgc3RhdGVzLnNldCgiZm9udHMuIiAuLiByLCB0cnVlKQogICAgZW5kCiAgICBm b3IgciBpbiBnbWF0Y2goZW52aXJvbm1lbnQuYXJndW1lbnQoImdvb2RpZXMiKSBvciAiIiwiKFte LCBdKykiKSBkbwogICAgICAgIHN0YXRlcy5zZXQoImdvb2RpZXMuIiAuLiByLCB0cnVlKQogICAg ZW5kCgogICAgcmVwb3J0KCJzdGF0ZSwgbG9hZGVkIikKICAgIHJlcG9ydCgpCgplbmQKCmlmIGVu dmlyb25tZW50LmFyZ3VtZW50KCJzdGF0ZSIpIHRoZW4KICAgIGVudmlyb25tZW50LnNldGFyZ3Vt ZW50KCJ1cGRhdGUiLHRydWUpCiAgICBlbnZpcm9ubWVudC5zZXRhcmd1bWVudCgiZm9yY2UiLHRy dWUpCiAgICBlbnZpcm9ubWVudC5zZXRhcmd1bWVudCgibWFrZSIsdHJ1ZSkKZW5kCgppZiBlbnZp cm9ubWVudC5hcmd1bWVudCgibWluZ3ciKSB0aGVuCiAgICByc3luY192YXJpYW50ID0gIm1pbmd3 IgplbHNlaWYgZW52aXJvbm1lbnQuYXJndW1lbnQoImN5Z3dpbiIpIHRoZW4KICAgIHJzeW5jX3Zh cmlhbnQgPSAiY3lnd2luIgplbmQKCmlmIGVudmlyb25tZW50LmFyZ3VtZW50KCJ1cGRhdGUiKSB0 aGVuCiAgICBzY3JpcHRzLnVwZGF0ZS5zeW5jaHJvbml6ZSgpCiAgICBpZiBlbnZpcm9ubWVudC5h cmd1bWVudCgibWFrZSIpIHRoZW4KICAgICAgICBzY3JpcHRzLnVwZGF0ZS5tYWtlKCkKICAgIGVu ZAplbHNlaWYgZW52aXJvbm1lbnQuYXJndW1lbnQoIm1ha2UiKSB0aGVuCiAgICBzY3JpcHRzLnVw ZGF0ZS5tYWtlKCkKZWxzZWlmIGVudmlyb25tZW50LmFyZ3VtZW50KCJleHBvcnRoZWxwIikgdGhl bgogICAgYXBwbGljYXRpb24uZXhwb3J0KGVudmlyb25tZW50LmFyZ3VtZW50KCJleHBvcnRoZWxw IiksZW52aXJvbm1lbnQuZmlsZXNbMV0pCmVsc2UKICAgIGFwcGxpY2F0aW9uLmhlbHAoKQplbmQK CmlmIHNjcmlwdHMuc2F2ZXN0YXRlIHRoZW4KICAgIHN0YXRpc3RpY3Muc3RvcHRpbWluZyhzdGF0 ZXMpCiAgICBzdGF0ZXMuc2V0KCJpbmZvLnJ1bnRpbWUiLHRvbnVtYmVyKHN0YXRpc3RpY3MuZWxh cHNlZHRpbWUoc3RhdGVzKSkpCiAgICBpZiBlbnZpcm9ubWVudC5hcmd1bWVudCgiZm9yY2UiKSB0 aGVuCiAgICAgICAgc3RhdGVzLnNhdmUoKQogICAgICAgIHJlcG9ydCgic3RhdGUiLCJzYXZlZCIp CiAgICBlbmQKZW5kCg== --MP_/XmOy5o9qH8sM3LYTFW83rPa Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f --MP_/XmOy5o9qH8sM3LYTFW83rPa--