Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b0Qk1-0007Ur-2l for pgadmin-hackers@arkaria.postgresql.org; Wed, 11 May 2016 09:47:41 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b0Qk0-0001In-Fb for pgadmin-hackers@arkaria.postgresql.org; Wed, 11 May 2016 09:47:40 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b0Qje-00013X-BT for pgadmin-hackers@postgresql.org; Wed, 11 May 2016 09:47:18 +0000 Received: from mail-lf0-x22e.google.com ([2a00:1450:4010:c07::22e]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b0QjX-0002LY-Ul for pgadmin-hackers@postgresql.org; Wed, 11 May 2016 09:47:17 +0000 Received: by mail-lf0-x22e.google.com with SMTP id m64so43244612lfd.1 for ; Wed, 11 May 2016 02:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=+5ucwEonQEuxqhq8QgONIKtYNvIO963Yu3E05asIx24=; b=pXXy4avl9rpHcsX5Qw2UerHIFRFmdBatMFTBftaaerlO5dvjX33g+Vwnj9dwmk1dOr lEB3FSW+KRziXAqffp1Jphjy7f321JsVfsFw9OwZOf7/laEN1n7Q0BY9eOiDWzbH/LT9 ufhb9CjOzbVPy+rVfPl0UbpmLnezRwu4OqeWi8HnkeqJ8VZnGCkUIry44CXZGF3ul/kT jF6DGzvPcYjy0Eej9AV7ZnxRH5KVhTY3kN7Ia2ioMU0CEgf32eWjPMwInLSC3F/UTH4l Jxbg809v9zJ9vKIjs+Fqg3RNAIB2DXNUxxq8IzBp2bSobSX8uToe/+7BNUrtMBSg/qWl LczA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=+5ucwEonQEuxqhq8QgONIKtYNvIO963Yu3E05asIx24=; b=IUo4WYEDFbAfnyhyBhCEFPe38KAs1EG8bTPyvZPE1hFyz3rvx5vnKYoMrnv84VbIJ6 ifzuK9kucfrRrpxpLUJDjOuVWstJD863SSI8ChffKrgta1Xd+3k+HnrF9QOeeEbAU5Gf aR5SNnSr1WJLdsig+HhVzA+rxYQnyR7QXr+2jUkU0r54G2C5UXJf26vG2eK/phwPu41U xhYUyVKUxLXxMcVkKYBYRRS3WugqJqgLreQhWhfyRRZjlTc3jexnzNh86+ckviosV6rv urYmSNmHDht3jMm9BLzAaaWdAdCGfcvejq2lgvljOQwNIj5FYkrdmrYF7zYJZjRlsraG f6rA== X-Gm-Message-State: AOPr4FVpdeXrf09/mq4gbLwh0SILaIKL3e3stmvUylyKxy2EZQgut7Ot1XeN1o42d/Mwdv/Jfj1LcIijx1Wsjm1U MIME-Version: 1.0 X-Received: by 10.112.125.9 with SMTP id mm9mr1025644lbb.45.1462960029682; Wed, 11 May 2016 02:47:09 -0700 (PDT) Received: by 10.25.206.85 with HTTP; Wed, 11 May 2016 02:47:09 -0700 (PDT) In-Reply-To: References: <58B5FCCE-9882-44C0-B990-8BF5D2FA17DC@enterprisedb.com> <928839C0-1CD1-4307-9C62-6A693D6F0533@enterprisedb.com> <2BC9FA40-F05D-48AA-8796-29808FC15498@enterprisedb.com> Date: Wed, 11 May 2016 15:17:09 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Foreign Table Module From: Khushboo Vashi To: Dave Page Cc: Ashesh Vashi , Murtuza Zabuawala , Neel Patel , pgadmin-hackers Content-Type: multipart/mixed; boundary=089e0112c022e40ff905328dec3c X-Pg-Spam-Score: 0.7 (/) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --089e0112c022e40ff905328dec3c Content-Type: multipart/alternative; boundary=089e0112c022e40feb05328dec3a --089e0112c022e40feb05328dec3a Content-Type: text/plain; charset=UTF-8 Hi, Please find the attached updated patch for the Foreign Table module. Thanks, Khushboo On Tue, May 10, 2016 at 4:33 PM, Dave Page wrote: > > > On Mon, May 9, 2016 at 1:23 PM, Ashesh Vashi < > ashesh.vashi@enterprisedb.com> wrote: > >> On Mon, May 9, 2016 at 5:50 PM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> Please find the attached updated patch for the Foreign Tables module. >>> >> > Feedback from my initial testing: > > - Owner is missing from the New dialogue. > > Done > - The Properties list shows "Select from the list" in a combo box for > Owner and > Inherits. > > > This is a generalize issue, I will create a new Kanban card for the same. > - s/Oid/OID > > Done > - s/Foreign Server/Foreign server > > Done > - SQL Help filenames are not defined. > > Done > - SQL formatting is weird, e.g. > > CREATE FOREIGN TABLE public.redis_table > (id text NOT NULL COLLATE pg_catalog."default", > value text NULL COLLATE pg_catalog."default") > SERVER redis_server1 > OPTIONS (database '0'); > > instead of: > > CREATE FOREIGN TABLE public.redis_table ( > id text NOT NULL COLLATE pg_catalog."default", > value text NULL COLLATE pg_catalog."default" > ) > SERVER redis_server1 > OPTIONS (database '0'); > > Done > - In the validation error messages, please replace ! with . and "can not" > with > "cannot" for consistency with recently reviewed strings. > > Done > - s/mulitple/multiple (in the js). > > Done > - How do I manage the ACL? > > Done. I missed this as I was following pgAdmin-3 as usual. > Thanks. > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --089e0112c022e40feb05328dec3a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch for the Foreign Table module.

Thanks,
Khushboo

O= n Tue, May 10, 2016 at 4:33 PM, Dave Page <dpage@pgadmin.org> wrote:


On Mon, Ma= y 9, 2016 at 1:23 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.= com> wrote:

On Mon, May 9, 2016 at 5:50 PM, Khushboo V= ashi <khushboo.vashi@enterprisedb.com> wrote:<= br>

Hi,

Please find the attach= ed updated patch for the Foreign Tables module.

Feedback from= my initial testing:

- Owner is missing from the N= ew dialogue.

Done= =C2=A0
- The Properties lis= t shows "Select from the list" in a combo box for Owner and
=
=C2=A0 Inherits.
=C2=A0
=
=
=C2=A0
=
This is a generalize issue, I will create a new Kanban card for the sa= me.
- s/Oid/OID

Done=C2=A0
- s/Foreign Server/Foreign server

Done=C2=A0
- SQL Help filenames are not defined.

=
Done=C2=A0
- SQL formatting is weird, e.g.

CREATE FOREIGN TABLE public.redis_table
(id text NOT NULL COLLA= TE pg_catalog."default",
value text NULL COLLATE pg_cat= alog."default")
=C2=A0 =C2=A0 SERVER redis_server1
=C2=A0 =C2=A0 OPTIONS (database '0');
=C2=A0 =C2=A0= =C2=A0
instead of:

CREATE FOREIGN TABLE = public.redis_table (
=C2=A0 =C2=A0 id text NOT NULL COLLATE pg_ca= talog."default",
=C2=A0 =C2=A0 value text NULL COLLATE = pg_catalog."default"
)
=C2=A0 =C2=A0 SERVER r= edis_server1
=C2=A0 =C2=A0 OPTIONS (database '0');
<= div>=C2=A0 =C2=A0=C2=A0
Done=C2=A0=
- In the validation error messages, p= lease replace ! with . and "can not" with=C2=A0
=C2=A0 = "cannot" for consistency with recently reviewed strings.
=C2=A0=C2=A0
Done=C2=A0
- s/mulitple/multiple (in the js).
<= br>
Done=C2=A0
- How do I manage the ACL?=C2=A0
Done. I missed this as I was fol= lowing pgAdmin-3 as usual.=C2=A0
Thanks.


--
Dave = Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

<= /span>EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company<= br>

--089e0112c022e40feb05328dec3a-- --089e0112c022e40ff905328dec3c Content-Type: text/x-patch; charset=US-ASCII; name="pgAdmin4_foreign_tables_ver4.patch" Content-Disposition: attachment; filename="pgAdmin4_foreign_tables_ver4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_io2ol4ys0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u Y2MwNDA0NwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTExOCBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi SW1wbGVtZW50cyB0aGUgRm9yZWlnbiBUYWJsZSBNb2R1bGUuIiIiCisKK2lt cG9ydCBqc29uCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2ltcG9y dCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eSwgXAorICAgIGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBp bXBvcnQgZ2V0dGV4dAorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jl c3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIGdvbmUKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zy b20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rp b25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcyBhcyBzY2hlbWFzCitm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3Jl cXVpcmVkCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgaW1wb3J0IFwKKyAgICBT Y2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIKK2Zyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudXRp bHMgaW1wb3J0IFwKKyAgICBwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGls cyBpbXBvcnQgcGFyc2VfcHJpdl9mcm9tX2RiLCBcCisgICAgcGFyc2VfcHJp dl90b19kYgorCisKK2NsYXNzIEZvcmVpZ25UYWJsZU1vZHVsZShTY2hlbWFD aGlsZE1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgRm9yZWlnblRhYmxl TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKworICAgICAgICBUaGlz IGNsYXNzIHJlcHJlc2VudHMgVGhlIEZvcmVpZ24gVGFibGUgTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIEluaXRpYWxpemUgdGhlIEZvcmVp Z24gVGFibGUgTW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCkKKyAgICAgIC0gR2VuZXJhdGUgdGhlIEZvcmVpZ24gVGFi bGUgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCk6Cisg ICAgICAtIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0aGUgRm9y ZWlnbiBUYWJsZSBub2RlIGFzIGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0 X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBG b3JlaWduIFRhYmxlLCB3aGVuIHNjaGVtYSBub2RlIGlzCisgICAgICAgIGlu aXRpYWxpemVkLgorICAgICIiIgorICAgIE5PREVfVFlQRSA9ICdmb3JlaWdu LXRhYmxlJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJGb3Jl aWduIFRhYmxlcyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRm9yZWlnblRhYmxlTW9kdWxl LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNl bGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdmVyID0gTm9u ZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBGb3Jl aWduIFRhYmxlIGNvbGxlY3Rpb24gbm9kZS4KKyAgICAgICAgIiIiCisgICAg ICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25v ZGUoc2NpZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2Rl KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSB0aGUgbm9kZSBh cyBsZWFmIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRmFs c2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxm KToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3Jp cHQgZm9yIGZvcmVpZ24gdGFibGUsIHdoZW4gdGhlCisgICAgICAgIHNjaGVt YSBub2RlIGlzIGluaXRpYWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAg cmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQorCisKK2Js dWVwcmludCA9IEZvcmVpZ25UYWJsZU1vZHVsZShfX25hbWVfXykKKworCitj bGFzcyBGb3JlaWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5 cGVSZWFkZXIpOgorICAgICIiIgorICAgIGNsYXNzIEZvcmVpZ25UYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgVGhpcyBjbGFzcyBpbmhlcml0 cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJlbnQgcm91dGVz IGZvcgorICAgIHRoZSBtb2R1bGUuCisKKyAgICBUaGUgY2xhc3MgaXMgcmVz cG9uc2libGUgdG8gQ3JlYXRlLCBSZWFkLCBVcGRhdGUgYW5kIERlbGV0ZSBv cGVyYXRpb25zIGZvcgorICAgIHRoZSBGb3JlaWduIFRhYmxlLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxpZGF0ZV9yZXF1ZXN0 KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAg VmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0IG9mIGNyZWF0ZSwg dXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAqIG1vZHVsZV9qcygp OgorICAgICAgLSBPdmVycmlkZXMgdGhpcyBwcm9wZXJ0eSB0byBkZWZpbmUg amF2YXNjcmlwdCBmb3IgRm9yZWlnbiBUYWJsZSBub2RlLgorCisgICAgKiBj aGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAtIFdvcmtzIGFzIGEgZGVj b3JhdG9yLgorICAgICAgLSBDaGVja3MgZGF0YWJhc2UgY29ubmVjdGlvbiBz dGF0dXMuCisgICAgICAtIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQg dGVtcGxhdGUgcGF0aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBz Y2lkKToKKyAgICAgIC0gTGlzdCB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAg ICogbm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVy bnMgYWxsIHRoZSBGb3JlaWduIFRhYmxlIHRvIGdlbmVyYXRlIE5vZGVzIGlu IHRoZSBicm93c2VyLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBGb3JlaWdu IFRhYmxlIHByb3BlcnRpZXMuCisKKyAgICAqIGdldF9jb2xsYXRpb25zKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVy bnMgQ29sbGF0aW9ucy4KKworICAgICogZ2V0X3R5cGVzKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgRGF0YSBU eXBlcy4KKworICAgICogZ2V0X2ZvcmVpZ25fc2VydmVycyhnaWQsIHNpZCwg ZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBG b3JlaWduIFNlcnZlcnMuCisKKyAgICAqIGdldF90YWJsZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUg Rm9yZWlnbiBUYWJsZXMgYXMgd2VsbCBhcyBQbGFpbiBUYWJsZXMuCisKKyAg ICAqIGdldF9jb2x1bW5zKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9u ZSk6CisgICAgICAtIFJldHVybnMgdGhlIFRhYmxlIENvbHVtbnMuCisKKyAg ICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gQ3Jl YXRlcyBhIG5ldyBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICogdXBk YXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBVcGRh dGVzIHRoZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICogZGVsZXRl KGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBEcm9wcyB0 aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIHNxbChnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgU1FM IGZvciB0aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIG1zcWwo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAgKiBnZXRfc3FsKGdpZCwg c2lkLCBkYXRhLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBHZW5lcmF0 ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIEZv cmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBk ZXBlbmRlbnRzIGZvciB0aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAg ICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToK KyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRm9y ZWlnbiBUYWJsZSBvYmplY3QuCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUg PSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWwor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICB7J3R5cGUnOiAn aW50JywgJ2lkJzogJ3NjaWQnfQorICAgIF0KKyAgICBpZHMgPSBbCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZm9pZCd9CisgICAgXQorCisg ICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAg ICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVs ZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAg ICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAg J2NoaWxkcmVuJzogW3snZ2V0JzogJ2NoaWxkcmVuJ31dLAorICAgICAgICAn bm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwK KyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdt c3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAg ICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAg ICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwK KyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31d LAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9k dWxlX2pzJ31dLAorICAgICAgICAnZ2V0X2NvbGxhdGlvbnMnOiBbCisgICAg ICAgICAgICB7J2dldCc6ICdnZXRfY29sbGF0aW9ucyd9LAorICAgICAgICAg ICAgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfQorICAgICAgICAgICAgXSwK KyAgICAgICAgJ2dldF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dl dCc6ICd0eXBlcyd9XSwKKyAgICAgICAgJ2dldF9mb3JlaWduX3NlcnZlcnMn OiBbeydnZXQnOiAnZ2V0X2ZvcmVpZ25fc2VydmVycyd9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRfZm9yZWlnbl9z ZXJ2ZXJzJ31dLAorICAgICAgICAnZ2V0X3RhYmxlcyc6IFt7J2dldCc6ICdn ZXRfdGFibGVzJ30sIHsnZ2V0JzogJ2dldF90YWJsZXMnfV0sCisgICAgICAg ICdnZXRfY29sdW1ucyc6IFt7J2dldCc6ICdnZXRfY29sdW1ucyd9LCB7J2dl dCc6ICdnZXRfY29sdW1ucyd9XQorICAgIH0pCisKKyAgICBkZWYgdmFsaWRh dGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdvcmtzIGFz IGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0aW5nIHJlcXVlc3Qgb24g dGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUgYW5kIG1vZGlmaWVkIFNR TC4KKworICAgICAgICBSZXF1aXJlZCBBcmdzOgorICAgICAgICAgICAgICAg ICAgICBuYW1lOiBOYW1lIG9mIHRoZSBGb3JlaWduIFRhYmxlCisgICAgICAg ICAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9yZWlnbiBTZXJ2ZXIgTmFtZQor CisgICAgICAgIEFib3ZlIGJvdGggdGhlIGFyZ3VtZW50cyB3aWxsIG5vdCBi ZSB2YWxpZGF0ZWQgaW4gdGhlIHVwZGF0ZSBhY3Rpb24uCisgICAgICAgICIi IgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoc2VsZiwg Kiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30KKworICAgICAg ICAgICAgaWYgcmVxdWVzdC5kYXRhOgorICAgICAgICAgICAgICAgIHJlcSA9 IGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXEgPSByZXF1ZXN0LmFyZ3Mg b3IgcmVxdWVzdC5mb3JtCisKKyAgICAgICAgICAgIGlmICdmb2lkJyBub3Qg aW4ga3dhcmdzOgorICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBb CisgICAgICAgICAgICAgICAgICAgICduYW1lJywKKyAgICAgICAgICAgICAg ICAgICAgJ2Z0c3J2bmFtZScKKyAgICAgICAgICAgICAgICBdCisKKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVthcmddID09 ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRu J3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbGlzdF9w YXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9k ID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3BhcmFtcyA9 IFsnY29uc3RyYWludHMnLCAnY29sdW1ucycsICdmdG9wdGlvbnMnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjbGFiZWxzJywg J2luaGVyaXRzJywgJ2FjbCddCisgICAgICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICAgICAgbGlzdF9wYXJhbXMgPSBbJ2luaGVyaXRzJ10K KworICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAg ICAgICAgICAgICBpZiBrZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXld ICE9ICcnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVx W2tleV0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAj IENvdmVydHMgc3RyaW5nIGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQu CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXSBpZlwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHJlcVtrZXldKSA9 PSBsaXN0IGFuZCBsZW4ocmVxW2tleV0pID09IDAgZWxzZSBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAganNvbi5sb2FkcyhyZXFba2V5XSkKKwor ICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmhlcml0cyc6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IFRhYmxl IGlkcyBmcm9tIHVuaWNvZGUvc3RyaW5nIHRvIGludAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgYW5kIG1ha2UgdHVwbGUgZm9yICdJTicgcXVl cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSB0 dXBsZShbaW50KHgpIGZvciB4IGluIGRhdGFba2V5XV0pCisKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5oZXJpdHMpID09IDE6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIHR1cHBs ZSBoYXMgLCBhZnRlciB0aGUgZmlyc3QgcGFyYW0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHNpbmdsZSBwYXJhbWV0 ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU28sIHdl IG5lZWQgdG8gbWFrZSBpdCB0dXBsZSBleHBsaWNpdGx5LgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyA9ICIoIiArIHN0cihp bmhlcml0c1swXSkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBpbmhlcml0czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBGZXRjaCBUYWJsZSBOYW1lcyBmcm9tIHRoZWlyIHJlc3BlY3RpdmUg SWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFzIHdl IG5lZWQgVGFibGUgbmFtZXMgdG8gZ2VuZXJhdGUgdGhlIFNRTC4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3RhYmxlcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy ZWxpZD1pbmhlcml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBp biByZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFba2V5XSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0 cyddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0g PSBbXQorCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICd0eXBu b3RudWxsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9 IFRydWUgaWYgKHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg VHJ1ZSkgZWxzZSBGYWxzZSBpZlwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVxW2tleV0gPT0gJ2ZhbHNlJyBvciByZXFba2V5XSkgaXMgRmFs c2UgZWxzZSAnJworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gcmVxW2tleV0KKworICAg ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQorCisgICAgICAgICAgICBzZWxmLnJlcXVlc3QgPSBkYXRhCisgICAg ICAgICAgICByZXR1cm4gZihzZWxmLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAg ICAgIiIiCisgICAgICAgIExvYWQgSlMgZmlsZSAoZm9yZWlnbl90YWJsZXMu anMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICJmb3JlaWduX3RhYmxlcy9qcy9mb3Jl aWduX3RhYmxlcy5qcyIsCisgICAgICAgICAgICAgICAgXz1nZXR0ZXh0Cisg ICAgICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlw ZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisK KyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIK KyAgICAgICAgV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIENoZWNr cyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAgICAgIEF0 dGFjaGVzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aCB0byB0aGUgY2xhc3Mgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAg QHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAgZHJp dmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAg ICAgIHNlbGYubWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIo a3dhcmdzWydzaWQnXSkKKworICAgICAgICAgICAgIyBHZXQgZGF0YWJhc2Ug Y29ubmVjdGlvbgorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5h Z2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisKKyAgICAgICAg ICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElkZW50CisKKyAgICAgICAg ICAgIGlmIG5vdCBzZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAg ICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJzaW9uCisgICAgICAg ICAgICBzZXJ2ZXJfdHlwZSA9IHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZQor CisgICAgICAgICAgICAjIFNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2Ny aXB0cyBkZXBlbmRpbmcKKyAgICAgICAgICAgICMgb24gdGhlIHNlcnZlciB2 ZXJzaW9uLgorCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTA1MDA6CisgICAg ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fdGFi bGVzL3NxbC85LjVfcGx1cycKKyAgICAgICAgICAgIGVsaWYgdmVyID49IDkw MjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdm b3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMnCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdmb3Jl aWduX3RhYmxlcy9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAgICAgIHJldHVy biBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg TGlzdCBhbGwgdGhlIEZvcmVpZ24gVGFibGVzLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIK KyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdub2RlLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10s CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IHRoZSBGb3JlaWduIFRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgTm9kZXMuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdub2RlLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJz ZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgK KyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisg ICAgICAgICAgICAgICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAgICAg IHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29u LWZvcmVpZ24tdGFibGUiCisgICAgICAgICAgICAgICAgKSkKKworICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0 YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGUgcHJvcGVydGll cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAg ICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0 aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpCisKKyAgICAgICAgaWYg bm90IGRhdGE6CisgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KCIi IgorQ291bGQgbm90IGZpbmQgdGhlIGZvcmVpZ24gdGFibGUgaW4gdGhlIGRh dGFiYXNlLgorSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFub3RoZXIg dXNlciBvcgorc2hpZnRlZCB0byB0aGUgYW5vdGhlciBzY2hlbWEuCisiIiIp KQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAg ICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfY29sbGF0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgQ29s bGF0aW9ucy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUg SWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAn JywgJ3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9jb2xsYXRpb25zLnNxbCddKSkKKyAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgeyds YWJlbCc6IHJvd1snY29weV9jb2xsYXRpb24nXSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWx1ZSc6IHJvd1snY29weV9jb2xsYXRpb24nXX0KKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB0eXBlcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyB0aGUgRGF0YSBUeXBlcy4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisKKyAgICAg ICAgY29uZGl0aW9uID0gIiIidHlwaXNkZWZpbmVkIEFORCB0eXB0eXBlIElO ICgnYicsICdjJywgJ2QnLCAnZScsICdyJykKK0FORCBOT1QgRVhJU1RTIChT RUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWVzcGFjZT10eXBu YW1lc3BhY2UKK0FORCByZWxuYW1lID0gdHlwbmFtZSBBTkQgcmVsa2luZCAh PSAnYycpIEFORAorKHR5cG5hbWUgTk9UIExJS0UgJ18lJyBPUiBOT1QgRVhJ U1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFCityZWxuYW1lc3Bh Y2U9dHlwbmFtZXNwYWNlIEFORCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5h bWUgRlJPTSAyKTo6bmFtZQorQU5EIHJlbGtpbmQgIT0gJ2MnKSkiIiIKKwor ICAgICAgICBpZiBzZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3Rz OgorICAgICAgICAgICAgY29uZGl0aW9uICs9ICIgQU5EIG5zcC5uc3BuYW1l ICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnIgorCisgICAgICAgICMgR2V0IFR5 cGVzCisgICAgICAgIHN0YXR1cywgdHlwZXMgPSBzZWxmLmdldF90eXBlcyhz ZWxmLmNvbm4sIGNvbmRpdGlvbikKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz10eXBlcykKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgZGF0YT10eXBlcywKKyAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBnZXRfZm9yZWlnbl9zZXJ2ZXJzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBGb3JlaWduIFNlcnZlcnMuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAg ICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2ZvcmVpZ25fc2Vy dmVycy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBl bmQoCisgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ3Nydm5h bWUnXSwgJ3ZhbHVlJzogcm93WydzcnZuYW1lJ119CisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGdldF90YWJsZXMoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGVzIGFzIHdlbGwgYXMgUGxhaW4g VGFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJ ZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFibGVzLnNxbCddKSwgZm9p ZD1mb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cnNldFsncm93 cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNfdHlwZSwg ZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAg ICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAgICAg ICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKGV4Y190eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj X3ZhbHVlLCBleGNfdHJhY2ViYWNrLCBsaW1pdD0yKSkKKworICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZXhjX3ZhbHVlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X2NvbHVtbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9p ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIFRh YmxlIENvbHVtbnMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ ZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRh YmxlIElkCisgICAgICAgICAgICBhdHRyZWxpZDogVGFibGUgb2lkCisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICAgSlNPTiBBcnJheSB3aXRo IGJlbG93IHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgIGF0dG5hbWU6IENv bHVtbiBOYW1lCisgICAgICAgICAgICAgIGRhdGF0eXBlOiBDb2x1bW4gRGF0 YSBUeXBlCisgICAgICAgICAgICAgIGluaGVyaXRlZF9mcm9tOiBQYXJlbnQg VGFibGUgZnJvbSB3aGljaCB0aGUgcmVsYXRlZCBjb2x1bW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlzIGluaGVyaXR0ZWQuCisgICAgICAg ICIiIgorICAgICAgICByZXMgPSBbXQorICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgZGF0YSBhbmQgJ2F0dHJlbGlkJyBpbiBkYXRh OgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90YWJsZV9jb2x1 bW5zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXR0cmVsaWQ9ZGF0YVsnYXR0cmVsaWQnXSkKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3Mn XSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjX3R5 cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjayA9IHN5cy5leGNfaW5mbygp CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IodHJhY2Vi YWNrLnByaW50X2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICBleGNfdHlw ZSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUsCisgICAgICAgICAgICAg ICAgZXhjX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICBsaW1pdD0yCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl eGNfdmFsdWUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2 YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMg YSBuZXcgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBm b2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICAgICBuYW1lOiBGb3Jl aWduIFRhYmxlIE5hbWUKKyAgICAgICAgICAgIGJhc2Vuc3A6IFNjaGVtYSBO YW1lCisgICAgICAgICAgICBmdHNydm5hbWU6IEZvcmVpZ24gU2VydmVyIE5h bWUKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRm9yZWlnbiBU YWJsZSBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisgICAgICAgICIiIgorICAg ICAgICB0cnk6CisgICAgICAgICAgICAjIEdldCBTUUwgdG8gY3JlYXRlIEZv cmVpZ24gVGFibGUKKyAgICAgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5n ZXRfc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHNlbGYucmVxdWVzdCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgICMgTmVlZCBvaWQgdG8gYWRkIG9iamVj dCBpbiB0aGUgdHJlZSBhdCBicm93c2VyLgorICAgICAgICAgICAgYmFzZW5z cCA9IHNlbGYucmVxdWVzdFsnYmFzZW5zcCddIGlmICgnYmFzZW5zcCcgaW4g c2VsZi5yZXF1ZXN0KSBcCisgICAgICAgICAgICAgICAgZWxzZSBOb25lCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vuc3A9YmFzZW5zcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXNlbGYucmVx dWVzdFsnbmFtZSddKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvaWQs IHNjaWQgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICByZXR1cm4g anNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAg Zm9pZCwKKyAgICAgICAgICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5yZXF1ZXN0WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgIGljb249Imljb24tZm9yZWlnbi10YWJsZSIKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZm9pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9wcyB0aGUgRm9y ZWlnbiBUYWJsZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFi bGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuY21kID09ICdk ZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVy YXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKworICAgICAgICB0 cnk6CisgICAgICAgICAgICAjIEZldGNoIE5hbWUgYW5kIFNjaGVtYSBOYW1l IHRvIGRlbGV0ZSB0aGUgZm9yZWlnbiB0YWJsZS4KKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxl dGUuc3FsJ10pLCBzY2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICBuYW1lLCBiYXNlbnNwID0gcmVzWydyb3dzJ11bMF0K KworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9bmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbnNwPWJhc2Vuc3As CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1j YXNjYWRlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisg ICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJGb3JlaWduIFRhYmxlIGRy b3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAgICAgICAgICAgJ3Nj aWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAor ICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAg ICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2 YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVw ZGF0ZXMgdGhlIEZvcmVpZ24gVGFibGUuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lk OiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAgICAgICBzdGF0 dXMsIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBz ZWxmLnJlcXVlc3QsIGZvaWQpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9U1FMKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIFNR TCBhbmQgU1FMLnN0cmlwKCdcbicpIGFuZCBTUUwuc3RyaXAoJyAnKToKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdnZXRfb2lkLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9pZD1mb2lkKQorICAgICAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICBzY2lkID0gcmVzWydyb3dzJ11bMF1b J3NjaWQnXQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAg ICAgICAgICAgICAgICAgICBpbmZvPSJGb3JlaWduIFRhYmxlIHVwZGF0ZWQi LAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg ICAgICAgICAgICdpZCc6IGZvaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lk Jzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAg ICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAg ICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg ICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lk Jzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVy bnMgdGhlIFNRTCBmb3IgdGhlIEZvcmVpZ24gVGFibGUgb2JqZWN0LgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAi IiIKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZm9pZCwgaW5oZXJpdHM9VHJ1ZSkKKworICAg ICAgICBjb2xfZGF0YSA9IFtdCisgICAgICAgIGZvciBjIGluIGRhdGFbJ2Nv bHVtbnMnXToKKyAgICAgICAgICAgIGlmIChub3QgJ2luaGVyaXRlZGZyb20n IGluIGMpIG9yIChjWydpbmhlcml0ZWRmcm9tJ10gaXMgTm9uZSk6CisgICAg ICAgICAgICAgICAgY29sX2RhdGEuYXBwZW5kKGMpCisKKyAgICAgICAgZGF0 YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorCisgICAgICAgIHNxbF9oZWFkZXIgPSAi IiItLSB7MH06IHsxfQorCistLSBEUk9QIHswfSB7MX07CisKKyIiIi5mb3Jt YXQoJ0ZPUkVJR04gVEFCTEUnLCBkYXRhWydiYXNlbnNwJ10gKyAiLiIgKyBk YXRhWyduYW1lJ10pCisKKyAgICAgICAgU1FMID0gc3FsX2hlYWRlciArIFNR TAorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNR TC5zdHJpcCgnXG4nKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAg ICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICAgICBuYW1lOiBG b3JlaWduIFRhYmxlIE5hbWUKKyAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9y ZWlnbiBTZXJ2ZXIgTmFtZQorCisgICAgICAgIFJldHVybnM6CisgICAgICAg ICAgICBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBGb3Jl aWduIFRhYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCBTUUwg PSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgc2VsZi5yZXF1 ZXN0LCBmb2lkKQorICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRh dGE9U1FMLnN0cmlwKCdcbicpLAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg IHJldHVybiBTUUwKKworICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRhdGEsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBHZW5yYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRl L3VwZGF0ZSB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZv aWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIHRy eToKKyAgICAgICAgICAgIGlmIGZvaWQgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgICAgb2xkX2RhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzPVRydWUp CisKKyAgICAgICAgICAgICAgICBpZiBub3Qgb2xkX2RhdGE6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIiIiCisgICAgICAg IENvdWxkIG5vdCBmaW5kIHRoZSBmb3JlaWduIHRhYmxlIGluIHRoZSBkYXRh YmFzZS4KKyAgICAgICAgSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFu b3RoZXIgdXNlciBvcgorICAgICAgICBzaGlmdGVkIHRvIHRoZSBhbm90aGVy IHNjaGVtYS4KKyAgICAgICAgIiIiKSkKKworICAgICAgICAgICAgICAgICMg UHJlcGFyZSBkaWN0IG9mIGNvbHVtbnMgd2l0aCBrZXkgPSBjb2x1bW4ncyBh dHRudW0KKyAgICAgICAgICAgICAgICAjIFdpbGwgdXNlIHRoaXMgaW4gdGhl IHVwZGF0ZSB0ZW1wbGF0ZSB3aGVuIGFueSBjb2x1bW4gaXMKKyAgICAgICAg ICAgICAgICAjIGNoYW5nZWQsIHRvIGlkZW50aWZ5IHRoZSBjb2x1bW5zLgor ICAgICAgICAgICAgICAgIGNvbF9kYXRhID0ge30KKyAgICAgICAgICAgICAg ICBmb3IgYyBpbiBvbGRfZGF0YVsnY29sdW1ucyddOgorICAgICAgICAgICAg ICAgICAgICBjb2xfZGF0YVtjWydhdHRudW0nXV0gPSBjCisKKyAgICAgICAg ICAgICAgICBvbGRfZGF0YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAg ICAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCAnYWRkZWQn IGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnY29sdW1ucyddWydhZGRlZCddID0gc2VsZi5fZm9ybWF0X2NvbHVtbnMo CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ11bJ2Fk ZGVkJ10pCisKKyAgICAgICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0 YSBhbmQgJ2NoYW5nZWQnIGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAg ICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddWydjaGFuZ2VkJ10gPSBzZWxm Ll9mb3JtYXRfY29sdW1ucygKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFbJ2NvbHVtbnMnXVsnY2hhbmdlZCddKQorCisgICAgICAgICAgICAgICAg IyBQYXJzZSBQcml2aWxlZ2VzCisgICAgICAgICAgICAgICAgaWYgJ2FjbCcg aW4gZGF0YSBhbmQgJ2FkZGVkJyBpbiBkYXRhWydhY2wnXToKKyAgICAgICAg ICAgICAgICAgICAgZGF0YVsnYWNsJ11bJ2FkZGVkJ10gPSBwYXJzZV9wcml2 X3RvX2RiKGRhdGFbJ2FjbCddWydhZGRlZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhIiwgInIi LCAidyIsICJ4Il0pCisgICAgICAgICAgICAgICAgaWYgJ2FjbCcgaW4gZGF0 YSBhbmQgJ2NoYW5nZWQnIGluIGRhdGFbJ2FjbCddOgorICAgICAgICAgICAg ICAgICAgICBkYXRhWydhY2wnXVsnY2hhbmdlZCddID0gcGFyc2VfcHJpdl90 b19kYigKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2FjbCddWydj aGFuZ2VkJ10sWyJhIiwgInIiLCAidyIsICJ4Il0pCisgICAgICAgICAgICAg ICAgaWYgJ2FjbCcgaW4gZGF0YSBhbmQgJ2RlbGV0ZWQnIGluIGRhdGFbJ2Fj bCddOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydhY2wnXVsnZGVsZXRl ZCddID0gcGFyc2VfcHJpdl90b19kYigKKyAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFbJ2FjbCddWydkZWxldGVkJ10sWyJhIiwgInIiLCAidyIsICJ4 Il0pCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YVsnY29s dW1ucyddID0gc2VsZi5fZm9ybWF0X2NvbHVtbnMoZGF0YVsnY29sdW1ucydd KQorCisgICAgICAgICAgICAgICAgIyBQYXJzZSBQcml2aWxlZ2VzCisgICAg ICAgICAgICAgICAgaWYgJ2FjbCcgaW4gZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgZGF0YVsnYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ2Fj bCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWyJhIiwgInIiLCAidyIsICJ4Il0pCisKKyAgICAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEp CisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgU1FMCisKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBlCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVu ZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5k ZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRo ZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6 IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVu ZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4s IGZvaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXgg cmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSAgRm9yZWlnbiBUYWJsZSBvYmpl Y3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisg ICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2Vs Zi5nZXRfZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgZm9pZCkKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1k ZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICApCisKKyAgICBkZWYgX2Zvcm1hdF9jb2x1bW5zKHNlbGYsIGNv bHVtbnMpOgorICAgICAgICAiIiIKKyAgICAgICAgRm9ybWF0IFRhYmxlIENv bHVtbnMuCisgICAgICAgICIiIgorICAgICAgICBmb3IgYyBpbiBjb2x1bW5z OgorICAgICAgICAgICAgaWYgJ1tdJyBpbiBjWydkYXRhdHlwZSddOgorICAg ICAgICAgICAgICAgIGNbJ2RhdGF0eXBlJ10gPSBjWydkYXRhdHlwZSddLnJl cGxhY2UoJ1tdJywgJycpCisgICAgICAgICAgICAgICAgY1snaXNBcnJheVR5 cGUnXSA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgY1snaXNBcnJheVR5cGUnXSA9IEZhbHNlCisKKyAgICAgICAgcmV0dXJu IGNvbHVtbnMKKworCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsIGluaGVyaXRzPUZhbHNlKToK KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIEZvcmVpZ24gVGFi bGUgcHJvcGVydGllcyB3aGljaCB3aWxsIGJlIHVzZWQgaW4KKyAgICAgICAg cHJvcGVydGllcywgc3FsIGFuZCBnZXRfc3FsIGZ1bmN0aW9ucy4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQK KyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAg ICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgICAg IGluaGVyaXRzOiBJZiBUcnVlIHRoZW4gaW5oZXJpdGVkIHRhYmxlIHdpbGwg YmUgZmV0Y2hlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgZGF0YWJh c2UKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzY2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxl bihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBGYWxz ZQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAg IGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDkwMjAwOgorICAgICAgICAg ICAgIyBGZXRjaCBwcml2aWxlZ2VzCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Fj bC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9pZD1mb2lkKQorICAgICAgICAgICAgc3RhdHVzLCBhY2xyZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1hY2xyZXMpCisKKyAgICAgICAgICAgICMgR2V0 IEZvcm1hdHRlZCBQcml2aWxlZ2VzCisgICAgICAgICAgICBkYXRhLnVwZGF0 ZShzZWxmLl9mb3JtYXRfcHJvYWNsX2Zyb21fZGIoYWNscmVzWydyb3dzJ10p KQorCisgICAgICAgICMgR2V0IGZvcm1hdHRlZCBTZWN1cml0eSBMYWJlbHMK KyAgICAgICAgaWYgJ3NlY2xhYmVscycgaW4gZGF0YToKKyAgICAgICAgICAg IGRhdGEudXBkYXRlKHBhcnNlX3NlY19sYWJlbHNfZnJvbV9kYihkYXRhWydz ZWNsYWJlbHMnXSkpCisKKyAgICAgICAgIyBHZXQgZm9ybWF0dGVkIFZhcmlh YmxlcworICAgICAgICBpZiAnZnRvcHRpb25zJyBpbiBkYXRhOgorICAgICAg ICAgICAgZGF0YS51cGRhdGUoeydzdHJmdG9wdGlvbnMnOiBkYXRhWydmdG9w dGlvbnMnXX0pCisgICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxmLl9wYXJz ZV92YXJpYWJsZXNfZnJvbV9kYihkYXRhWydmdG9wdGlvbnMnXSkpCisKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9jb25zdHJhaW50cy5zcWwnXSksIGZvaWQ9Zm9pZCkK KyAgICAgICAgc3RhdHVzLCBjb25zID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNvbnMpCisK KyAgICAgICAgaWYgY29ucyBhbmQgJ3Jvd3MnIGluIGNvbnM6CisgICAgICAg ICAgICBkYXRhWydjb25zdHJhaW50cyddID0gY29uc1sncm93cyddCisKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwgZm9pZD1mb2lkKQorICAg ICAgICBzdGF0dXMsIGNvbHMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y29scykKKworICAg ICAgICAjIFRoZSBMZW5ndGggYW5kIHRoZSBwcmVjaXNpb24gb2YgdGhlIERh dGF0eXBlIHNob3VsZCBiZSBzZXBhcmF0ZWQuCisgICAgICAgICMgVGhlIEZv cm1hdCB3ZSBnZXR0aW5nIGZyb20gZGF0YWJhc2UgaXM6IG51bWVyaWMoMSwx KQorICAgICAgICAjIFNvLCB3ZSBuZWVkIHRvIHNlcGFyYXRlIGl0IGFzIExl bmd0aDogMSwgUHJlY2lzaW9uOiAxCisgICAgICAgIGZvciBjIGluIGNvbHNb J3Jvd3MnXToKKyAgICAgICAgICAgIGlmIGNbJ2Z1bGx0eXBlJ10gIT0gJycg YW5kIGNbJ2Z1bGx0eXBlJ10uZmluZCgiKCIpID4gMDoKKyAgICAgICAgICAg ICAgICBzdWJzdHIgPSBjWydmdWxsdHlwZSddW2NbJ2Z1bGx0eXBlJ10uZmlu ZCgiKCIpICsgMTpjWydmdWxsdHlwZSddLmZpbmQoIikiKV0KKyAgICAgICAg ICAgICAgICB0eXBsZW4gPSBzdWJzdHIuc3BsaXQoIiwiKQorICAgICAgICAg ICAgICAgIGlmIGxlbih0eXBsZW4pID4gMToKKyAgICAgICAgICAgICAgICAg ICAgY1sndHlwbGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAgICAgICAg ICAgICAgICBjWydwcmVjaXNpb24nXSA9IGludCh0eXBsZW5bMV0pCisgICAg ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY1sndHlw bGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAgICAgICAgICAgICAgICBj WydwcmVjaXNpb24nXSA9IE5vbmUKKworICAgICAgICBpZiBjb2xzIGFuZCAn cm93cycgaW4gY29sczoKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9 IGNvbHNbJ3Jvd3MnXQorCisgICAgICAgIGRhdGFbJ3N0cmNvbHVtbiddID0g JycKKyAgICAgICAgc3RyX2NvbHMgPSBbXQorICAgICAgICBpZiAnY29sdW1u cycgaW4gZGF0YToKKyAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2NvbHVt bnMnXToKKyAgICAgICAgICAgICAgICBzdHJfY29scy5hcHBlbmQoY1snc3Ry Y29sdW1uJ10pCisgICAgICAgICAgICBkYXRhWydzdHJjb2x1bW4nXSA9ICcs ICcuam9pbihzdHJfY29scykKKworICAgICAgICAjIEdldCBJbmhlcml0ZWQg dGFibGUgbmFtZXMgZnJvbSB0aGVpciBPSUQKKyAgICAgICAgaWYgaW5oZXJp dHM6CisgICAgICAgICAgICBpZiAnaW5oZXJpdHMnIGluIGRhdGEgYW5kIGRh dGFbJ2luaGVyaXRzJ106CisgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSB0 dXBsZShbaW50KHgpIGZvciB4IGluIGRhdGFbJ2luaGVyaXRzJ11dKQorICAg ICAgICAgICAgICAgIGlmIGxlbihpbmhlcml0cykgPT0gMToKKyAgICAgICAg ICAgICAgICAgICAgaW5oZXJpdHMgPSAiKCIgKyBzdHIoaW5oZXJpdHNbMF0p ICsgIikiCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFi bGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXR0cmVsaWQ9aW5oZXJpdHMpCisgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiByZXNbJ3Jv d3MnXVswXToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnaW5oZXJpdHMn XSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0cyddCisKKyAgICAgICAgcmV0 dXJuIGRhdGEKKworICAgIGRlZiBfZm9ybWF0X3Byb2FjbF9mcm9tX2RiKHNl bGYsIHByb2FjbCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHBy aXZpbGVnZXMuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcm9hY2w6 IFByaXZpbGVnZXMgRGljdAorICAgICAgICAiIiIKKyAgICAgICAgcHJpdmls ZWdlcyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcHJvYWNsOgorICAgICAg ICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCisgICAgICAg ICAgICBwcml2aWxlZ2VzLmFwcGVuZChwcml2KQorCisgICAgICAgIHJldHVy biB7ImFjbCI6IHByaXZpbGVnZXN9CisKKyAgICBkZWYgX3BhcnNlX3Zhcmlh Ymxlc19mcm9tX2RiKHNlbGYsIGRiX3ZhcmlhYmxlcyk6CisgICAgICAgICIi IgorICAgICAgICBGdW5jdGlvbiB0byBmb3JtYXQgdGhlIG91dHB1dCBmb3Ig dmFyaWFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkYl92 YXJpYWJsZXM6IFZhcmlhYmxlIG9iamVjdAorCisgICAgICAgICAgICAgICAg RXhwZWN0ZWQgT2JqZWN0IEZvcm1hdDoKKyAgICAgICAgICAgICAgICAgICAg WydvcHRpb24xPXZhbHVlMScsIC4uXQorICAgICAgICAgICAgICAgIHdoZXJl OgorICAgICAgICAgICAgICAgICAgICB1c2VyX25hbWUgYW5kIGRhdGFiYXNl IGFyZSBvcHRpb25hbAorICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAg VmFyaWFibGUgT2JqZWN0IGluIGJlbG93IGZvcm1hdDoKKyAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6IFsKKyAgICAg ICAgICAgICAgICAgICAgeyduYW1lJzogJ3Zhcl9uYW1lJywgJ3ZhbHVlJzog J3Zhcl92YWx1ZScsCisgICAgICAgICAgICAgICAgICAgICd1c2VyX25hbWUn OiAndXNlcl9uYW1lJywgJ2RhdGFiYXNlJzogJ2RhdGFiYXNlX25hbWUnfSwK KyAgICAgICAgICAgICAgICAgICAgLi4uXQorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICB3aGVyZToKKyAgICAgICAgICAgICAgICAgICAg dXNlcl9uYW1lIGFuZCBkYXRhYmFzZSBhcmUgb3B0aW9uYWwKKyAgICAgICAg IiIiCisgICAgICAgIHZhcmlhYmxlc19sc3QgPSBbXQorCisgICAgICAgIGlm IGRiX3ZhcmlhYmxlcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBy b3cgaW4gZGJfdmFyaWFibGVzOgorICAgICAgICAgICAgICAgIHZhcl9uYW1l LCB2YXJfdmFsdWUgPSByb3cuc3BsaXQoIj0iKQorICAgICAgICAgICAgICAg ICMgQmVjYXVzZSB3ZSBzYXZlIGFzIGJvb2xlYW4gc3RyaW5nIGluIGRiIHNv IGl0IG5lZWRzCisgICAgICAgICAgICAgICAgIyBjb252ZXJzaW9uCisgICAg ICAgICAgICAgICAgaWYgdmFyX3ZhbHVlID09ICdmYWxzZScgb3IgdmFyX3Zh bHVlID09ICdvZmYnOgorICAgICAgICAgICAgICAgICAgICB2YXJfdmFsdWUg PSBGYWxzZQorCisgICAgICAgICAgICAgICAgdmFyX2RpY3QgPSB7J29wdGlv bic6IHZhcl9uYW1lLCAndmFsdWUnOiB2YXJfdmFsdWV9CisKKyAgICAgICAg ICAgICAgICB2YXJpYWJsZXNfbHN0LmFwcGVuZCh2YXJfZGljdCkKKworICAg ICAgICByZXR1cm4geyJmdG9wdGlvbnMiOiB2YXJpYWJsZXNfbHN0fQorCitG b3JlaWduVGFibGVWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9z dGF0aWMvaW1nL2NvbGwtZm9yZWlnbi10YWJsZS5wbmcgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2NvbGwtZm9yZWlnbi10 YWJsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMxZjc0MmJiY2Ew NTk4MGYzYzRjYmYzYzE2YWYwZTBjZjlhZmE0MQpHSVQgYmluYXJ5IHBhdGNo CmxpdGVyYWwgNDkyCnpjbVY8STBUY2QtUCk8aDszS3xMazAwMGUxTkpMVHEw MDBtRzAwMG1PMHt7UjNDQGx8RDAwMDAxYjVjaF8wSXRwKQp6PT5QeCN4PT43 MU1Qc0A0QShpS2YmaTw2b2BLe0lSJUd+UFM8TEJuKj1qUF8tI258Unt4IyUj UT0hbmghUW4yIX4KeikkUUhnLUdqXmlkZEI7MiExLTNQXkdVMWxKKkRrMnA2 ZSU+PkU3UG5nVWtJJnRNRU9mP0lAWSktezBUajteTzF1Cno8S15ZJGhyczlI O05ZakhyPnZ+Mz9DazlCPyhYVTc+RVlxd3Jsekstc0htOzJ0KkBgST5nd3V7 JUpiKnY9ai1lMQp6PTstTEZzajJWcEBBMntSP2R8UVZzO2FRQ3UoR25VPG1C WT1AYkcpYWApfFBiRDRGUHFwVCMycDAwMDRXUWNoQzwKeks8M3pIMDAwMDFW b09JdjBFaCkwTkJ7cjszMjtiUmF7dkdmNjk1MVU2OUU5NG9FUUtBMDAocVFP K15SVzB+ezQ3CnpDVmM7JWNLYHFZbz1IU09SMmI3OyYlRi05RmJxYn5kXkNh OUY1eT1RM0poVXRtUTFkTSF1ITckUDc2WlI8SVIhZgp6ODJyWUpnR0ZXQ2Ej aHoyQGY2eml6ZDxgUUBIMnpXJDI9bnVIQyUkND9UKG0yQWw3ZyQ9RTVZfGlB WGZLN3NFajsKelBMaWAySmM9UXkwNHZzTT0rJl5kSCtZZERKQ2wrY0VRYnlV ZUlIIThxfUwjRjFvazI/NFFrTm5QVChxVGBYT1RRCmk8REg0OGtsTlVOWitg PU0oaFVtbUs7Ull0MDAwMDxNTlVNbkxTVFg9VGx2dWQKCmxpdGVyYWwgMApI Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3N0YXRpYy9pbWcvZm9yZWlnbi10YWJsZS5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2ZvcmVpZ24t dGFibGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzEzMzg4NWEw YzBjNzA1MGU0Yzg1ODBhZGZkNzVmOGNlYWE4NTIKR0lUIGJpbmFyeSBwYXRj aApsaXRlcmFsIDU2Mwp6Y21WLTMwP2hyMVApPGg7M0t8TGswMDBlMU5KTFRx MDAwbUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+UHgjKWxm YFNNZGFrPEEoaUtpKEVwT3BgPVpuSnk0ZFp9LXw2NHU9akc8LT1IfSt3O3BN RSg9VlAoeEV9UTYhCnomO056WXsoaXsoYjtKNT56VzhDZF9FeGc8T1JWcmZy fHZoUD5AQSQ/Q1liNGslPjhTPV8oNyliSGxnZTtvYShnSgp6PyVtenAtcm5C ZC17MFdpO05qdW47Xk59dDxLeU0hPCVockw9Oy1MXz5GTVhePWMlY3d0Z05p Oz9Da0NCP2VGakoKej5nd3ZKcj5DZj5zSTlIN3VkbERgPitBNkZAYmRFVj8o WGladEU7ZkV1KDdlUnZhKylBQCR2S1heWSEpaHdZOWJPCnpfVilQcl9fbnNU eFZYNllfeER0I0tSb35kMDBER1RQRSFDdD1HYk5jMDAwNEVPR2lXaWh5QCk7 MDAwMDlhN2JCbQp6MDAwWFUwMDBYVTBSV251N3l0a08yWHNrSU1GLW1oOTJG PWVsSldtcjAwMDJXTmtsPFo3fUhoSC1FTStGNUMhMCEKeiFhYFNPRSE1JnFP TiYlKHc/SVRPYVQ5SF9HNHVaSzxTZXhwJmZSPURuYW1MYT9uVmQhND8hclNf KSkxKmc0KUNRCnpEYjFjSUZacHlmVWtyKXlZbnJfPTZ6P0JAUCVmOSU9VzR6 QWBjYEl1K2tXWDBqVH1IVktrV3VKQ0kmVE1ne25XYQp6dHV8eU1CSSs0QDl1 MCpzQldzQ2FSbzhvQDAzZFh3YlBWaEVxPzIrMWwzWnNhMkchSU1jUjVWVCRh Tmw/b3JSZEYKejBMYUx0NEU2YiE7fl9VSU5iK1pKKzsrV0BMKVNvaUBQcWso fDBfeXo2d3wmUVF7P352MDAyb3ZQREhMa1YxbkZoCkJDbkVwPQoKbGl0ZXJh bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL2pzL2Zv cmVpZ25fdGFibGVzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25fdGFibGVz LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZGZj ZDkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvanMvZm9yZWlnbl90 YWJsZXMuanMKQEAgLTAsMCArMSw3MjYgQEAKKy8qIENyZWF0ZSBhbmQgUmVn aXN0ZXIgRm9yZWlnbiBUYWJsZSBDb2xsZWN0aW9uIGFuZCBOb2RlLiAqLwor ZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3Vu ZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2Vy JywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10s CitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5KSB7CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZm9yZWln bi10YWJsZSddKSB7CisgICAgdmFyIGZvcmVpZ250YWJsZSA9IHBnQWRtaW4u QnJvd3Nlci5Ob2Rlc1snY29sbC1mb3JlaWduLXRhYmxlJ10gPQorICAgICAg cGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAg bm9kZTogJ2ZvcmVpZ24tdGFibGUnLAorICAgICAgICBsYWJlbDogJ3t7IF8o J0ZvcmVpZ24gVGFibGVzJykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1m b3JlaWduLXRhYmxlJywKKyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ293 bmVyJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisgIC8v IFNlY3VyaXR5IE1vZGVsCisgIHZhciBTZWN1cml0eU1vZGVsID0gQmFja2Zv cm0uU2VjdXJpdHlNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVs LmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHByb3ZpZGVyOiBu dWxsLAorICAgICAgbGFiZWw6IG51bGwKKyAgICB9LAorICAgIHNjaGVtYTog W3sKKyAgICAgIGlkOiAncHJvdmlkZXInLCBsYWJlbDogJ3t7IF8oJ1Byb3Zp ZGVyJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJsZTogdHJ1 ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnCisgICAg fSx7CisgICAgICBpZDogJ3NlY3VyaXR5X2xhYmVsJywgbGFiZWw6ICd7eyBf KCdTZWN1cml0eSBMYWJlbCcpIH19JywKKyAgICAgIHR5cGU6ICd0ZXh0Jywg ZWRpdGFibGU6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJj ZW50XzUwJworICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsK KyAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICBlcnJtc2cgPSBudWxs LAorICAgICAgICAgIGRhdGEgPSB0aGlzLnRvSlNPTigpOworCisgICAgICBp ZiAoXy5pc1VuZGVmaW5lZChkYXRhLnNlY3VyaXR5X2xhYmVsKSB8fAorICAg ICAgICBfLmlzTnVsbChkYXRhLnNlY3VyaXR5X2xhYmVsKSB8fAorICAgICAg ICBTdHJpbmcoZGF0YS5zZWN1cml0eV9sYWJlbCkucmVwbGFjZSgvXlxzK3xc cyskL2csICcnKSA9PSAnJykgeworICAgICAgICByZXR1cm4gXygiUGxlYXNl IHNwZWNpZnkgdGhlIHZhbHVlIGZvciBhbGwgdGhlIHNlY3VyaXR5IHByb3Zp ZGVycy4iKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBudWxsOworICAgIH0K KyAgfSk7CisKKyAgLy8gSW50ZWdlciBDZWxsIGZvciBDb2x1bW5zIExlbmd0 aCBhbmQgUHJlY2lzaW9uCisgIHZhciBJbnRlZ2VyRGVwQ2VsbCA9IEJhY2tn cmlkLkludGVnZXJDZWxsLmV4dGVuZCh7CisgICAgICBpbml0aWFsaXplOiBm dW5jdGlvbigpIHsKKyAgICAgICAgQmFja2dyaWQuTnVtYmVyQ2VsbC5wcm90 b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAg ICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uRGVwZW5kZW50Q2VsbC5wcm90b3R5 cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAg fSwKKyAgICAgIGRlcGVuZGVudENoYW5nZWQ6IGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKKyAgICAgICAgdmFyIG1vZGVsID0g dGhpcy5tb2RlbDsKKyAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1u OworICAgICAgICBlZGl0YWJsZSA9IHRoaXMuY29sdW1uLmdldCgiZWRpdGFi bGUiKTsKKworICAgICAgICBpc19lZGl0YWJsZSA9IF8uaXNGdW5jdGlvbihl ZGl0YWJsZSkgPyAhIWVkaXRhYmxlLmFwcGx5KGNvbHVtbiwgW21vZGVsXSkg OiAhIWVkaXRhYmxlOworICAgICAgICBpZiAoaXNfZWRpdGFibGUpeyB0aGlz LiRlbC5hZGRDbGFzcygiZWRpdGFibGUiKTsgfQorICAgICAgICBlbHNlIHsg dGhpcy4kZWwucmVtb3ZlQ2xhc3MoImVkaXRhYmxlIik7IH0KKworICAgICAg ICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICAgIHJldHVybiB0aGlz OworICAgICAgfSwKKyAgICAgIHJlbW92ZTogQmFja2dyaWQuRXh0ZW5zaW9u LkRlcGVuZGVudENlbGwucHJvdG90eXBlLnJlbW92ZQorICAgIH0pOworCisK KyAgLy8gQ29sdW1ucyBNb2RlbAorICB2YXIgQ29sdW1uc01vZGVsID0gcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBpZEF0dHJp YnV0ZTogJ2F0dG51bScsCisgICAgZGVmYXVsdHM6IHsKKyAgICAgIGF0dG5h bWU6IHVuZGVmaW5lZCwKKyAgICAgIGRhdGF0eXBlOiB1bmRlZmluZWQsCisg ICAgICB0eXBsZW46IHVuZGVmaW5lZCwKKyAgICAgIHByZWNpc2lvbjogdW5k ZWZpbmVkLAorICAgICAgdHlwZGVmYXVsdDogdW5kZWZpbmVkLAorICAgICAg YXR0bm90bnVsbDogdW5kZWZpbmVkLAorICAgICAgY29sbG5hbWU6IHVuZGVm aW5lZCwKKyAgICAgIGF0dG51bTogdW5kZWZpbmVkLAorICAgICAgaW5oZXJp dGVkZnJvbTogdW5kZWZpbmVkLAorICAgICAgaW5oZXJpdGVkaWQ6IHVuZGVm aW5lZCwKKyAgICB9LAorICAgIHR5cGVfb3B0aW9uczogdW5kZWZpbmVkLAor ICAgIHNjaGVtYTogW3sKKyAgICAgICAgaWQ6ICdhdHRuYW1lJywgbGFiZWw6 J3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCB0eXBlOiAndGV4 dCcsCisgICAgICAgIGVkaXRhYmxlOiAnaXNfZWRpdGFibGVfY29sdW1uJywg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJworICAgICAg fSx7CisgICAgICAgIGlkOiAnZGF0YXR5cGUnLCBsYWJlbDone3sgXygnRGF0 YSBUeXBlJykgfX0nLCBjZWxsOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAg ICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB0eXBlOiAndGV4 dCcsIHVybDogJ2dldF90eXBlcycsCisgICAgICAgIGVkaXRhYmxlOiAnaXNf ZWRpdGFibGVfY29sdW1uJywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9w ZXJjZW50XzIwJywKKyAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkLCBz ZWxmKXsKKyAgICAgICAgICAgIHNlbGYubW9kZWwudHlwZV9vcHRpb25zID0g ZDsKKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICAgIH0KKyAgICAg IH0seworICAgICAgICBpZDogJ3R5cGxlbicsIGxhYmVsOid7eyBfKCdMZW5n dGgnKSB9fScsCisgICAgICAgIGNlbGw6IEludGVnZXJEZXBDZWxsLAorICAg ICAgICB0eXBlOiAndGV4dCcsIGRlcHM6IFsnZGF0YXR5cGUnXSwKKyAgICAg ICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgLy8gV2Ugd2ls bCBzdG9yZSB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveAorICAg ICAgICAgIGlmKCEoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQn KSkKKyAgICAgICAgICAgIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRp ZCcpKQorICAgICAgICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5o ZXJpdGVkZnJvbScpKQorICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQo J2luaGVyaXRlZGZyb20nKSkpKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAg ICAgIHZhciBvZl90eXBlID0gbS5nZXQoJ2RhdGF0eXBlJyk7CisgICAgICAg IGlmKG0udHlwZV9vcHRpb25zKSB7CisgICAgICAgICAgbS5zZXQoJ2lzX3Rs ZW5ndGgnLCBmYWxzZSwge3NpbGVudDogdHJ1ZX0pOworCisgICAgICAgICAg Ly8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgIF8u ZWFjaChtLnR5cGVfb3B0aW9ucywgZnVuY3Rpb24obykgeworICAgICAgICAg ICAgLy8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0 Y2hlcyBpbiBvcHRpb25zCisgICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0g by52YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAvLyBpZiBsZW5ndGggaXMg YWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQorICAgICAgICAgICAgICAgIGlm KG8ubGVuZ3RoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAg ICAgICBtLnNldCgnaXNfdGxlbmd0aCcsIHRydWUsIHtzaWxlbnQ6IHRydWV9 KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdtaW5fdmFsJywgby5taW5f dmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICBtLnNl dCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsK KyAgICAgICAgICByZXR1cm4gbS5nZXQoJ2lzX3RsZW5ndGgnKTsKKyAgICAg ICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAg ICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzEwJworICAg ICAgfSx7CisgICAgICAgIGlkOiAncHJlY2lzaW9uJywgbGFiZWw6J3t7IF8o J1ByZWNpc2lvbicpIH19JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBkZXBz OiBbJ2RhdGF0eXBlJ10sCisgICAgICAgIGNlbGw6IEludGVnZXJEZXBDZWxs LAorICAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAg IGlmKCEoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAg ICAgICAgICAgIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQor ICAgICAgICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVk ZnJvbScpKQorICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVy aXRlZGZyb20nKSkpKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgICAgICAg dmFyIG9mX3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKTsKKyAgICAgICAgICBp ZihtLnR5cGVfb3B0aW9ucykgeworICAgICAgICAgICAgIG0uc2V0KCdpc19w cmVjaXNpb24nLCBmYWxzZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAg ICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAg ICAgXy5lYWNoKG0udHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CisgICAg ICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJv Ym94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICBpZiAoIG9m X3R5cGUgPT0gby52YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAvLyBpZiBw cmVjZXNzaW9uIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAg ICAgICAgICAgICBpZihvLnByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2Rl bAorICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIHRy dWUsIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0 KCdtaW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAg ICAgICAgICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3Np bGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgICByZXR1cm4gbS5nZXQoJ2lz X3ByZWNpc2lvbicpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICB9LCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNl bnRfMTAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICd0eXBkZWZhdWx0Jywg bGFiZWw6J3t7IF8oJ0RlZmF1bHQnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAg ICAgICAgY2VsbDogJ3N0cmluZycsIG1pbl92ZXJzaW9uOiA5MDMwMCwKKyAg ICAgICAgcGxhY2Vob2xkZXI6ICJFbnRlciBhbiBleHByZXNzaW9uIG9yIGEg dmFsdWUuIiwKKyAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9w ZXJjZW50XzEwJywKKyAgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICBpZighKF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRl ZGlkJykpCisgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJp dGVkaWQnKSkKKyAgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQo J2luaGVyaXRlZGZyb20nKSkKKyAgICAgICAgICAgIHx8IF8uaXNOdWxsKG0u Z2V0KCdpbmhlcml0ZWRmcm9tJykpKSkgeyByZXR1cm4gZmFsc2U7IH0KKyAg ICAgICAgICBpZiAodGhpcy5nZXQoJ25vZGVfaW5mbycpLnNlcnZlci52ZXJz aW9uIDwgOTAzMDApeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor ICAgICAgfSx7CisgICAgICAgIGlkOiAnYXR0bm90bnVsbCcsIGxhYmVsOid7 eyBfKCdOb3QgTnVsbCcpIH19JywKKyAgICAgICAgY2VsbDogJ2Jvb2xlYW4n LHR5cGU6ICdzd2l0Y2gnLCBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlX2NvbHVt bicsCisgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2Vu dF8xMCcKKyAgICAgIH0seworICAgICAgICBpZDogJ2NvbGxuYW1lJywgbGFi ZWw6J3t7IF8oJ0NvbGxhdGlvbicpIH19JywgY2VsbDogJ25vZGUtYWpheC1v cHRpb25zJywKKyAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25z JywgdHlwZTogJ3RleHQnLCB1cmw6ICdnZXRfY29sbGF0aW9ucycsCisgICAg ICAgIG1pbl92ZXJzaW9uOiA5MDMwMCwgZWRpdGFibGU6ICdpc19lZGl0YWJs ZV9jb2x1bW4nLAorICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRo X3BlcmNlbnRfMjAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdhdHRudW0n LCBjZWxsOiAnc3RyaW5nJyx0eXBlOiAndGV4dCcsIHZpc2libGU6IGZhbHNl CisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdpbmhlcml0ZWRmcm9tJywgbGFi ZWw6J3t7IF8oJ0luaGVyaXRlZCBGcm9tJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCB2aXNpYmxlOiBmYWxzZSwgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnXSwKKyAgICAgICAgY2VsbEhlYWRl ckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzEwJworICAgIH1dLAorICAgIHZh bGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBlcnIgPSB7fSwKKyAg ICAgIGVycm1zZzsKKworICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ2F0dG5hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdhdHRuYW1lJykp LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAg ZXJyWyduYW1lJ10gPSAne3sgXygnQ29sdW1uIE5hbWUgY2FuIG5vdCBiZSBl bXB0eSEnKSB9fSc7CisgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJb J2F0dG5hbWUnXTsKKyAgICAgIH0KKworICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ2RhdGF0eXBlJykpIHx8IFN0cmluZyh0aGlzLmdldCgn ZGF0YXR5cGUnKSkKKyAgICAgIC5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7CisgICAgICAgIGVyclsnYmFzZW5zcCddID0gJ3t7IF8oJ0Nv bHVtbiBEYXRhdHlwZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAg ICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnZGF0YXR5cGUnXTsKKyAgICAg IH0KKworICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7 CisKKyAgICAgIHJldHVybiBlcnJtc2c7CisgICAgfSwKKyAgICBpc19lZGl0 YWJsZV9jb2x1bW46IGZ1bmN0aW9uKG0pIHsKKyAgICAgIHJldHVybiAoXy5p c1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkgfHwgXy5pc051bGwo bS5nZXQoJ2luaGVyaXRlZGlkJykpCisgICAgICAgfHwgXy5pc1VuZGVmaW5l ZChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSB8fCBfLmlzTnVsbChtLmdldCgn aW5oZXJpdGVkZnJvbScpKSkgPyB0cnVlIDogZmFsc2UKKyAgICB9LAorICAg IHRvSlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNPTgorICB9 KTsKKworICB2YXIgZm9ybWF0Tm9kZSA9IGZ1bmN0aW9uKG9wdCkgeworICAg IGlmICghb3B0LmlkKSB7CisgICAgICByZXR1cm4gb3B0LnRleHQ7CisgICAg fQorCisgICAgdmFyIG9wdGltYWdlID0gJChvcHQuZWxlbWVudCkuZGF0YSgn aW1hZ2UnKTsKKworICAgIGlmKCFvcHRpbWFnZSl7CisgICAgICByZXR1cm4g b3B0LnRleHQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAkKAorICAg ICAgICAgICc8c3Bhbj48c3BhbiBjbGFzcz0id2NUYWJJY29uICcgKyBvcHRp bWFnZSArICciLz4nICsgb3B0LnRleHQgKyAnPC9zcGFuPicKKyAgICAgICAg ICApOworICAgIH0KKyAgfTsKKworCisgIC8qIE5vZGVBamF4T3B0aW9uc011 bHRpcGxlQ29udHJvbCBpcyBmb3IgbXVsdGlwbGUgc2VsZWN0aW9uIG9mIENv bWJvYm94LgorICAqICBUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBzZWxlY3Qg TXVsdGlwbGUgUGFyZW50IFRhYmxlcyB0byBiZSBpbmhlcml0ZWQuCisgICog IEl0IGFsc28gcG9wdWxhdGVzL3ZhY2F0ZXMgQ29sdW1ucyBvbiBzZWxlY3Rp b24vZGVzZWxlY3Rpb24gb2YgdGhlIG9wdGlvbiAoaS5lLiB0YWJsZSBuYW1l KS4KKyAgKiAgVG8gcG9wdWxhdGVzIHRoZSBjb2x1bW4sIGl0IGNhbGxzIHRo ZSBzZXJ2ZXIgYW5kIGZldGNoIHRoZSBjb2x1bW5zIGRhdGEKKyAgKiAgZm9y IHRoZSBzZWxlY3RlZCB0YWJsZS4KKyAgKi8KKworICB2YXIgTm9kZUFqYXhP cHRpb25zTXVsdGlwbGVDb250cm9sID0gQmFja2Zvcm0uTm9kZUFqYXhPcHRp b25zTXVsdGlwbGVDb250cm9sID0gQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25z Q29udHJvbC5leHRlbmQoeworICAgIHRlbXBsYXRlOiBfLnRlbXBsYXRlKFsK KyAgICAgICc8bGFiZWwgY2xhc3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xMYWJl bENsYXNzTmFtZSU+Ij48JT1sYWJlbCU+PC9sYWJlbD4nLAorICAgICAgJzxk aXYgY2xhc3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xzQ2xhc3NOYW1lJT4gPCU9 ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iPicsCisgICAgICAnICA8c2Vs ZWN0IGNsYXNzPSJwZ2FkbWluLW5vZGUtc2VsZWN0IGZvcm0tY29udHJvbCIg bmFtZT0iPCU9bmFtZSU+IiBzdHlsZT0id2lkdGg6MTAwJTsiIHZhbHVlPTwl LXZhbHVlJT4gPCU9ZGlzYWJsZWQgPyAiZGlzYWJsZWQiIDogIiIlPiA8JT1y ZXF1aXJlZCA/ICJyZXF1aXJlZCIgOiAiIiU+ID4nLAorICAgICAgJyAgPC9z ZWxlY3Q+JywKKyAgICAgICc8L2Rpdj4nXS5qb2luKCJcbiIpKSwKKyAgICBk ZWZhdWx0czogXy5leHRlbmQoCisgICAgICB7fSwgQmFja2Zvcm0uTm9kZUFq YXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUuZGVmYXVsdHMsCisgICAgICB7 CisgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICBhbGxvd0NsZWFyOiB0 cnVlLAorICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGZyb20gdGhl IGxpc3QnLAorICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAgICAg IHRlbXBsYXRlUmVzdWx0OiBmb3JtYXROb2RlLAorICAgICAgICAgIHRlbXBs YXRlU2VsZWN0aW9uOiBmb3JtYXROb2RlCisgICAgICAgIH0KKyAgICAgIH0p LAorICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZmllbGQg PSBfLmRlZmF1bHRzKHRoaXMuZmllbGQudG9KU09OKCksIHRoaXMuZGVmYXVs dHMpLAorICAgICAgICBhdHRyaWJ1dGVzID0gdGhpcy5tb2RlbC50b0pTT04o KSwKKyAgICAgICAgYXR0ckFyciA9IGZpZWxkLm5hbWUuc3BsaXQoJy4nKSwK KyAgICAgICAgbmFtZSA9IGF0dHJBcnIuc2hpZnQoKSwKKyAgICAgICAgcGF0 aCA9IGF0dHJBcnIuam9pbignLicpLAorICAgICAgICByYXdWYWx1ZSA9IHRo aXMua2V5UGF0aEFjY2Vzc29yKGF0dHJpYnV0ZXNbbmFtZV0sIHBhdGgpLAor ICAgICAgICBkYXRhID0gXy5leHRlbmQoZmllbGQsIHsKKyAgICAgICAgICBy YXdWYWx1ZTogcmF3VmFsdWUsCisgICAgICAgICAgdmFsdWU6IHRoaXMuZm9y bWF0dGVyLmZyb21SYXcocmF3VmFsdWUsIHRoaXMubW9kZWwpLAorICAgICAg ICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMsCisgICAgICAgICAgZm9ybWF0 dGVyOiB0aGlzLmZvcm1hdHRlcgorICAgICAgICB9KSwKKyAgICAgICAgZXZh bEYgPSBmdW5jdGlvbihmLCBkLCBtKSB7CisgICAgICAgICAgcmV0dXJuIChf LmlzRnVuY3Rpb24oZikgPyAhIWYuYXBwbHkoZCwgW21dKSA6ICEhZik7Cisg ICAgICAgIH07CisKKyAgICAgIC8vIEV2YWx1YXRlIHRoZSBkaXNhYmxlZCwg dmlzaWJsZSwgYW5kIHJlcXVpcmVkIG9wdGlvbgorICAgICAgXy5leHRlbmQo ZGF0YSwgeworICAgICAgICBkaXNhYmxlZDogZXZhbEYoZGF0YS5kaXNhYmxl ZCwgZGF0YSwgdGhpcy5tb2RlbCksCisgICAgICAgIHZpc2libGU6ICBldmFs RihkYXRhLnZpc2libGUsIGRhdGEsIHRoaXMubW9kZWwpLAorICAgICAgICBy ZXF1aXJlZDogZXZhbEYoZGF0YS5yZXF1aXJlZCwgZGF0YSwgdGhpcy5tb2Rl bCkKKyAgICAgIH0pOworCisgICAgICBpZiAoZmllbGQubm9kZV9pbmZvLnNl cnZlci52ZXJzaW9uIDwgZmllbGQubWluX3ZlcnNpb24pIHsKKyAgICAgICAg ZmllbGQudmVyc2lvbl9jb21wYXRpYmxlID0gZmFsc2UKKyAgICAgICAgcmV0 dXJuIHRoaXM7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgLy8g RXZhbHVhdGlvbiB0aGUgb3B0aW9ucworICAgICAgICBpZiAoXy5pc0Z1bmN0 aW9uKGRhdGEub3B0aW9ucykpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg ICBkYXRhLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnMuYXBwbHkodGhpcykKKyAg ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgLy8gRG8gbm90aGluZwor ICAgICAgICAgIGRhdGEub3B0aW9ucyA9IFtdCisgICAgICAgICAgdGhpcy5t b2RlbC50cmlnZ2VyKCdwZ2FkbWluLXZpZXc6dHJhbnNmb3JtOmVycm9yJywg c2VsZi5tb2RlbCwgc2VsZi5maWVsZCwgZSk7CisgICAgICAgIH0KKyAgICAg ICAgfQorCisgICAgICAgIC8vIENsZWFuIHVwIGZpcnN0CisgICAgICAgIHRo aXMuJGVsLnJlbW92ZUNsYXNzKEJhY2tmb3JtLmhpZGRlbkNsYXNzbmFtZSk7 CisgICAgICAgIHRoaXMuJGVsLmh0bWwodGhpcy50ZW1wbGF0ZShkYXRhKSku YWRkQ2xhc3MoZmllbGQubmFtZSk7CisKKyAgICAgICAgaWYgKCFkYXRhLnZp c2libGUpIHsKKyAgICAgICAgdGhpcy4kZWwuYWRkQ2xhc3MoQmFja2Zvcm0u aGlkZGVuQ2xhc3NuYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg dmFyIG9wdHMgPSBfLmV4dGVuZCgKKyAgICAgICAgICB7fSwgdGhpcy5kZWZh dWx0cy5zZWxlY3QyLCBkYXRhLnNlbGVjdDIsCisgICAgICAgICAgeworICAg ICAgICAgICAgJ2RhdGEnOiBkYXRhLm9wdGlvbnMKKyAgICAgICAgICB9KTsK KyAgICAgICAgdGhpcy4kZWwuZmluZCgic2VsZWN0Iikuc2VsZWN0MihvcHRz KS52YWwoZGF0YS5yYXdWYWx1ZSkudHJpZ2dlcigiY2hhbmdlIik7CisgICAg ICAgIHRoaXMudXBkYXRlSW52YWxpZCgpOworICAgICAgICB9CisgICAgICB9 CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorICAgIG9uQ2hhbmdlOiBm dW5jdGlvbihlKSB7CisgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsLAor ICAgICAgICAgICRlbCA9ICQoZS50YXJnZXQpLAorICAgICAgICAgIGF0dHJB cnIgPSB0aGlzLmZpZWxkLmdldCgibmFtZSIpLnNwbGl0KCcuJyksCisgICAg ICAgICAgbmFtZSA9IGF0dHJBcnIuc2hpZnQoKSwKKyAgICAgICAgICBwYXRo ID0gYXR0ckFyci5qb2luKCcuJyksCisgICAgICAgICAgdmFsdWUgPSB0aGlz LmdldFZhbHVlRnJvbURPTSgpLAorICAgICAgICAgIGNoYW5nZXMgPSB7fSwK KyAgICAgICAgICBjb2x1bW5zID0gbW9kZWwuZ2V0KCdjb2x1bW5zJyksCisg ICAgICAgICAgaW5oZXJpdHMgPSBtb2RlbC5nZXQobmFtZSk7CisKKyAgICAg IGlmICh0aGlzLm1vZGVsLmVycm9yTW9kZWwgaW5zdGFuY2VvZiBCYWNrYm9u ZS5Nb2RlbCkgeworICAgICAgICBpZiAoXy5pc0VtcHR5KHBhdGgpKSB7Cisg ICAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciBuZXN0ZWRFcnJvciA9 IHRoaXMubW9kZWwuZXJyb3JNb2RlbC5nZXQobmFtZSk7CisgICAgICAgICAg aWYgKG5lc3RlZEVycm9yKSB7CisgICAgICAgICAgICB0aGlzLmtleVBhdGhT ZXR0ZXIobmVzdGVkRXJyb3IsIHBhdGgsIG51bGwpOworICAgICAgICAgICAg dGhpcy5tb2RlbC5lcnJvck1vZGVsLnNldChuYW1lLCBuZXN0ZWRFcnJvcik7 CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHZh ciBzZWxmID0gdGhpczsKKworICAgICAgaWYgKHR5cGVvZihpbmhlcml0cykg ID09ICJzdHJpbmciKXsgaW5oZXJpdHMgPSBKU09OLnBhcnNlKGluaGVyaXRz KTsgfQorCisgICAgICAvLyBSZW1vdmUgQ29sdW1ucyBpZiBpbmhlcml0IG9w dGlvbiBpcyBkZXNlbGVjdGVkIGZyb20gdGhlIGNvbWJvYm94CisgICAgICBp ZihfLnNpemUoSlNPTi5wYXJzZSh2YWx1ZSkpIDwgXy5zaXplKGluaGVyaXRz KSkgeworICAgICAgICB2YXIgZGlmID0gIF8uZGlmZmVyZW5jZShpbmhlcml0 cywgSlNPTi5wYXJzZSh2YWx1ZSkpOworICAgICAgICB2YXIgcm12X2NvbHVt bnMgPSBjb2x1bW5zLndoZXJlKHtpbmhlcml0ZWRpZDogcGFyc2VJbnQoZGlm WzBdKX0pOworICAgICAgICBjb2x1bW5zLnJlbW92ZShybXZfY29sdW1ucyk7 CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIF8uZWFj aChKU09OLnBhcnNlKHZhbHVlKSwgZnVuY3Rpb24oaSkgeworICAgICAgICAg IC8vIEZldGNoIENvbHVtbnMgZnJvbSBzZXJ2ZXIKKyAgICAgICAgICB2YXIg Zm5kX2NvbHVtbnMgPSBjb2x1bW5zLndoZXJlKHtpbmhlcml0ZWRpZDogcGFy c2VJbnQoaSl9KTsKKyAgICAgICAgICBpZiAoZm5kX2NvbHVtbnMgJiYgZm5k X2NvbHVtbnMubGVuZ3RoIDw9IDApIHsKKyAgICAgICAgICAgIGluaHRlZF9j b2x1bW5zID0gc2VsZi5mZXRjaENvbHVtbnMoaSk7CisgICAgICAgICAgICBj b2x1bW5zLmFkZChpbmh0ZWRfY29sdW1ucyk7CisgICAgICAgICAgfQorICAg ICAgICB9KTsKKyAgICAgIH0KKworICAgICAgY2hhbmdlc1tuYW1lXSA9IF8u aXNFbXB0eShwYXRoKSA/IHZhbHVlIDogXy5jbG9uZShtb2RlbC5nZXQobmFt ZSkpIHx8IHt9OworICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRoaXMubW9k ZWwsICJjaGFuZ2U6IiArIG5hbWUsIHRoaXMucmVuZGVyKTsKKyAgICAgIG1v ZGVsLnNldChjaGFuZ2VzKTsKKyAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5t b2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhpcy5yZW5kZXIpOworICAgIH0s CisgICAgZmV0Y2hDb2x1bW5zOiBmdW5jdGlvbih0YWJsZV9pZCl7CisgICAg ICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgdXJsID0gJ2dldF9jb2x1 bW5zJywKKyAgICAgICAgICBtID0gc2VsZi5tb2RlbC50b3AgfHwgc2VsZi5t b2RlbDsKKworICAgICAgaWYgKHVybCkgeworICAgICAgICB2YXIgbm9kZSA9 IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpLAorICAgICAgICAgICAg bm9kZV9pbmZvID0gdGhpcy5maWVsZC5nZXQoJ25vZGVfaW5mbycpLAorICAg ICAgICAgICAgZnVsbF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgK KyAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAgICAgICAgIG51bGws IHVybCwgdGhpcy5maWVsZC5nZXQoJ25vZGVfZGF0YScpLAorICAgICAgICAg ICAgICAgIHRoaXMuZmllbGQuZ2V0KCd1cmxfd2l0aF9pZCcpIHx8IGZhbHNl LCBub2RlX2luZm8KKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBj YWNoZV9sZXZlbCA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9sZXZlbCcpIHx8 IG5vZGUudHlwZSwKKyAgICAgICAgICAgIGNhY2hlX25vZGUgPSB0aGlzLmZp ZWxkLmdldCgnY2FjaGVfbm9kZScpOworCisgICAgICAgIGNhY2hlX25vZGUg PSAoY2FjaGVfbm9kZSAmJiBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NhY2hl X25vZGUnXSkgfHwgbm9kZTsKKworICAgICAgICBtLnRyaWdnZXIoJ3BnYWRt aW46dmlldzpmZXRjaGluZycsIG0sIHNlbGYuZmllbGQpOworICAgICAgICBk YXRhID0ge2F0dHJlbGlkOiB0YWJsZV9pZH0KKworICAgICAgICAvLyBGZXRj aGluZyBDb2x1bW5zIGRhdGEgZm9yIHRoZSBzZWxlY3RlZCB0YWJsZS4KKyAg ICAgICAgJC5hamF4KHsKKyAgICAgICAgICBhc3luYzogZmFsc2UsCisgICAg ICAgICAgdXJsOiBmdWxsX3VybCwKKyAgICAgICAgICBkYXRhOiBkYXRhLAor ICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAqIFdlIHdpbGwgY2FjaGUgdGhpcyBkYXRh IGZvciBzaG9ydCBwZXJpb2Qgb2YgdGltZSBmb3IgYXZvaWRpbmcKKyAgICAg ICAgICAgICAqIHNhbWUgY2FsbHMuCisgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgIGRhdGEgPSBjYWNoZV9ub2RlLmNhY2hlKHVybCwgbm9kZV9pbmZv LCBjYWNoZV9sZXZlbCwgcmVzLmRhdGEpOworCisgICAgICAgICAgfSwKKyAg ICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBtLnRy aWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaDplcnJvcicsIG0sIHNlbGYuZmll bGQpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIG0udHJp Z2dlcigncGdhZG1pbjp2aWV3OmZldGNoZWQnLCBtLCBzZWxmLmZpZWxkKTsK KworICAgICAgICAvLyBUbyBmZXRjaCBvbmx5IG9wdGlvbnMgZnJvbSBjYWNo ZSwgd2UgZG8gbm90IG5lZWQgdGltZSBmcm9tICdhdCcKKyAgICAgICAgLy8g YXR0cmlidXRlIGJ1dCBvbmx5IG9wdGlvbnMuCisgICAgICAgIC8vCisgICAg ICAgIC8vIEl0IGlzIGZlYXNpYmxlIHRoYXQgdGhlIGRhdGEgbWF5IG5vdCBo YXZlIGJlZW4gZmV0Y2hlZC4KKyAgICAgICAgZGF0YSA9IChkYXRhICYmIGRh dGEuZGF0YSkgfHwgW107CisgICAgICAgIHJldHVybiBkYXRhOworICAgICAg fQorICAgIH0sCisgIH0pOworCisKKyAgLy8gQ29uc3RyYWludHMgTW9kZWwK KyAgdmFyIENvbnN0cmFpbnRNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rl Lk1vZGVsLmV4dGVuZCh7CisgICAgaWRBdHRyaWJ1dGU6ICdjb25vaWQnLAor ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAg ICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7CisgICAgICBp ZiAoIWlzTmV3KSB7CisgICAgICAgIHRoaXMuY29udmFsaWRhdGVkX2RlZmF1 bHQgPSB0aGlzLmdldCgnY29udmFsaWRhdGVkJykKKyAgICAgIH0KKyAgICAg IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFs aXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgfSwKKyAgICBkZWZh dWx0czogeworICAgICAgY29ub2lkOiB1bmRlZmluZWQsCisgICAgICBjb25u YW1lOiB1bmRlZmluZWQsCisgICAgICBjb25zcmM6IHVuZGVmaW5lZCwKKyAg ICAgIGNvbm5vaW5oZXJpdDogdW5kZWZpbmVkLAorICAgICAgY29udmFsaWRh dGVkOiB0cnVlCisgICAgfSwKKyAgICBjb252YWxpZGF0ZWRfZGVmYXVsdDog dHJ1ZSwKKyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ2Nvbm9pZCcsIHR5 cGU6ICd0ZXh0JywgY2VsbDogJ3N0cmluZycsIHZpc2libGU6IGZhbHNlCisg ICAgfSx7CisgICAgICBpZDogJ2Nvbm5hbWUnLCBsYWJlbDone3sgXygnTmFt ZScpIH19JywgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3RyaW5nJywKKyAgICAg IGVkaXRhYmxlOiAnaXNfZWRpdGFibGUnLCBjZWxsSGVhZGVyQ2xhc3Nlczog J3dpZHRoX3BlcmNlbnRfMzAnCisgICAgfSx7CisgICAgICBpZDogJ2NvbnNy YycsIGxhYmVsOid7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211bHRpbGlu ZScsCisgICAgICBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlJywgY2VsbDogQmFj a2dyaWQuRXh0ZW5zaW9uLlRleHRhcmVhQ2VsbCwKKyAgICAgIGNlbGxIZWFk ZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcKKyAgICB9LHsKKyAgICAg IGlkOiAnY29ubm9pbmhlcml0JywgbGFiZWw6J3t7IF8oJ05vIEluaGVyaXQn KSB9fScsIHR5cGU6ICdzd2l0Y2gnLAorICAgICAgY2VsbDogJ2Jvb2xlYW4n LCBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlJywKKyAgICAgIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICB9LHsKKyAgICAgIGlk OiAnY29udmFsaWRhdGVkJywgbGFiZWw6J3t7IF8oJ1ZhbGlkYXRlPycpIH19 JywgdHlwZTogJ3N3aXRjaCcsCisgICAgICBjZWxsOiAnYm9vbGVhbicsIGNl bGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcsCisgICAgICBl ZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICB2YXIgc2VydmVyID0g dGhpcy5nZXQoJ25vZGVfaW5mbycpLnNlcnZlcjsKKyAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQobS5pc05ldykpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg ICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICBpZihtLmdldCgnY29u dmFsaWRhdGVkJykgJiYgbS5jb252YWxpZGF0ZWRfZGVmYXVsdCkgeworICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgIH0KKyAgICAgfQorICAgIF0sCisgICAgdmFsaWRhdGU6IGZ1 bmN0aW9uKCkgeworICAgICAgdmFyIGVyciA9IHt9LAorICAgICAgZXJybXNn OworCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY29ubmFt ZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Nvbm5hbWUnKSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICBlcnJbJ2Nvbm5h bWUnXSA9ICd7eyBfKCdDb25zdHJhaW50IE5hbWUgY2FuIG5vdCBiZSBlbXB0 eSEnKSB9fSc7CisgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Nv bm5hbWUnXTsKKyAgICAgIH0KKworICAgICAgaWYgKF8uaXNVbmRlZmluZWQo dGhpcy5nZXQoJ2NvbnNyYycpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2NvbnNy YycpKQorICAgICAgLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycp IHsKKyAgICAgICAgZXJyWydjb25zcmMnXSA9ICd7eyBfKCdDb25zdHJhaW50 IENoZWNrIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICBlcnJt c2cgPSBlcnJtc2cgfHwgZXJyWydjb25zcmMnXTsKKyAgICAgIH0KKworICAg ICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7CisKKyAgICAg IHJldHVybiBlcnJtc2c7CisgICAgfSwKKyAgICBpc19lZGl0YWJsZTogZnVu Y3Rpb24obSkgeworICAgICAgICByZXR1cm4gXy5pc1VuZGVmaW5lZChtLmlz TmV3KSA/IHRydWUgOiBtLmlzTmV3KCk7CisgICAgfSwKKyAgICB0b0pTT046 IEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS50b0pTT04KKyAgfSk7CisKKwor ICAvLyBPcHRpb25zIE1vZGVsCisgIHZhciBPcHRpb25zTW9kZWwgPSBwZ0Fk bWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRz OiB7CisgICAgICBvcHRpb246IHVuZGVmaW5lZCwKKyAgICAgIHZhbHVlOiB1 bmRlZmluZWQKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAn b3B0aW9uJywgbGFiZWw6J3t7IF8oJ09wdGlvbicpIH19JywgY2VsbDogJ3N0 cmluZycsIHR5cGU6ICd0ZXh0JywKKyAgICAgIGVkaXRhYmxlOiB0cnVlLCBj ZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcKKyAgICB9LHsK KyAgICAgIGlkOiAndmFsdWUnLCBsYWJlbDone3sgXygnVmFsdWUnKSB9fScs IGNlbGw6ICdzdHJpbmcnLHR5cGU6ICd0ZXh0JywKKyAgICAgIGVkaXRhYmxl OiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcK KyAgICB9CisgICAgXSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7Cisg ICAgICAvLyBUT0RPOiBBZGQgdmFsaWRhdGlvbiBoZXJlCisgICAgfSwKKyAg ICB0b0pTT046IEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS50b0pTT04KKyAg fSk7CisKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbi10YWJs ZSddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmb3JlaWduLXRh YmxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgdHlwZTog J2ZvcmVpZ24tdGFibGUnLAorICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFs dGVyZm9yZWlnbnRhYmxlLmh0bWwnLAorICAgICAgc3FsQ3JlYXRlSGVscDog J3NxbC1jcmVhdGVmb3JlaWdudGFibGUuaHRtbCcsCisgICAgICBsYWJlbDog J3t7IF8oJ0ZvcmVpZ24gVGFibGUnKSB9fScsCisgICAgICBjb2xsZWN0aW9u X3R5cGU6ICdjb2xsLWZvcmVpZ24tdGFibGUnLAorICAgICAgaGFzU1FMOiB0 cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIHBhcmVudF90 eXBlOiBbJ3NjaGVtYSddLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7Cisg ICAgICAgIC8qIEF2b2lkIG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51 cyAqLworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAg ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1 ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAg ICAgbmFtZTogJ2NyZWF0ZV9mb3JlaWduLXRhYmxlX29uX2NvbGwnLCBub2Rl OiAnY29sbC1mb3JlaWduLXRhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAg ICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6 ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTog J2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0ZvcmVpZ24g VGFibGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLWZvcmVpZ24tdGFibGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywg Y2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScK KyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9mb3JlaWdu LXRhYmxlJywgbm9kZTogJ2ZvcmVpZ24tdGFibGUnLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn Rm9yZWlnbiBUYWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NU YWJJY29uIGljb24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rpb246ICdj cmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2Fu Q3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRl X2ZvcmVpZ24tdGFibGUnLCBub2RlOiAnc2NoZW1hJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J0ZvcmVpZ24gVGFibGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLWZvcmVpZ24tdGFibGUnLCBkYXRhOiB7YWN0aW9uOiAn Y3JlYXRlJywgY2hlY2s6IGZhbHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdj YW5DcmVhdGUnCisgICAgICAgIH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0s CisgICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNh bkNoaWxkRHJvcCwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIu Tm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKKyAgICAgIG1vZGVsOiBw Z0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBp bml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgeworICAgICAgICAg IHZhciBpc05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsKKyAgICAgICAg ICBpZiAoaXNOZXcpIHsKKyAgICAgICAgICAgIC8vIFNldCBTZWxlY3RlZCBT Y2hlbWEKKyAgICAgICAgICAgIHNjaGVtYSA9IGFyZ3Mubm9kZV9pbmZvLnNj aGVtYS5sYWJlbAorICAgICAgICAgICAgdGhpcy5zZXQoeydiYXNlbnNwJzog c2NoZW1hfSwge3NpbGVudDogdHJ1ZX0pOworCisgICAgICAgICAgICAvLyBT ZXQgQ3VycmVudCBVc2VyCisgICAgICAgICAgICB2YXIgdXNlckluZm8gPSBw Z0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lk XS51c2VyOworICAgICAgICAgICAgdGhpcy5zZXQoeydvd25lcic6IHVzZXJJ bmZvLm5hbWV9LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQorICAg ICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0s CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZp bmVkLAorICAgICAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIG93 bmVyOiB1bmRlZmluZWQsCisgICAgICAgICAgYmFzZW5zcDogdW5kZWZpbmVk LAorICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsCisgICAgICAg ICAgZnRzcnZuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgc3RyY29sdW1u OiB1bmRlZmluZWQsCisgICAgICAgICAgc3RyZnRvcHRpb25zOiB1bmRlZmlu ZWQsCisgICAgICAgICAgaW5oZXJpdHM6IFtdLAorICAgICAgICAgIGNvbHVt bnM6IFtdLAorICAgICAgICAgIGNvbnN0cmFpbnRzOiBbXSwKKyAgICAgICAg ICBmdG9wdGlvbnM6IFtdLAorICAgICAgICAgIHJlbGFjbDogW10sCisgICAg ICAgICAgc3RyYWNsOiBbXSwKKyAgICAgICAgICBzZWNsYWJlbHM6IFtdCisg ICAgICAgIH0sCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDog J25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0 aWVzJywgJ2NyZWF0ZScsICdlZGl0J10KKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdvaWQnLCBsYWJlbDone3sgXygnT0lEJykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ293bmVy JywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywg Y29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAorICAg ICAgICAgIG5vZGU6ICdyb2xlJywgIHR5cGU6ICd0ZXh0JworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2Jhc2Vuc3AnLCBsYWJlbDone3sgXygnU2No ZW1hJykgfX0nLCBjZWxsOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAgICAg ICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBjYWNoZV9sZXZl bDogJ2RhdGFiYXNlJywgdHlwZTogJ3RleHQnLAorICAgICAgICAgICBub2Rl OiAnc2NoZW1hJywgbW9kZTpbJ2NyZWF0ZScsICdlZGl0J10KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOid7eyBf KCdDb21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0 eXBlOiAnbXVsdGlsaW5lJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2Z0c3J2bmFtZScsIGxhYmVsOid7eyBfKCdGb3JlaWduIHNlcnZlcicpIH19 JywgY2VsbDogJ3N0cmluZycsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9u cycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ0RlZmluaXRp b24nLCB1cmw6ICdnZXRfZm9yZWlnbl9zZXJ2ZXJzJywgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdpbmhlcml0cycsIGxhYmVsOid7eyBfKCdJbmhl cml0cycpIH19JywgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAnRGVmaW5pdGlv bicsCisgICAgICAgICAgdHlwZTogJ2xpc3QnLCBtaW5fdmVyc2lvbjogOTA1 MDAsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucy1tdWx0aXBsZScsCisg ICAgICAgICAgdXJsOiAnZ2V0X3RhYmxlcycsIHNlbGVjdDI6IHttdWx0aXBs ZTogdHJ1ZX0sCisgICAgICAgICAgJ2NhY2hlX2xldmVsJzogJ2RhdGFiYXNl JywKKyAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQsIHNlbGYpewor ICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuZ2V0KCdtb2RlJykgPT0gJ2Vk aXQnKSB7CisgICAgICAgICAgICAgIG9pZCA9IHRoaXMubW9kZWwuZ2V0KCdv aWQnKTsKKyAgICAgICAgICAgICAgcyA9IF8uZmluZFdoZXJlKGQsIHsnaWQn OiBvaWR9KTsKKyAgICAgICAgICAgICAgaWYgKHMpIHsKKyAgICAgICAgICAg ICAgICBkID0gXy5yZWplY3QoZCwgcyk7CisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICAg IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzdHJjb2x1bW4nLCBs YWJlbDone3sgXygnQ29sdW1ucycpIH19JywgY2VsbDogJ3N0cmluZycsIGdy b3VwOiAnRGVmaW5pdGlvbicsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBt aW5fdmVyc2lvbjogOTA1MDAsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnY29sdW1ucycsIGxhYmVsOid7eyBf KCdDb2x1bW5zJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0 eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAnQ29sdW1ucycsIHZpc2libGU6 IGZhbHNlLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAg bW9kZWw6IENvbHVtbnNNb2RlbCwgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6 IHRydWUsIGNhbkVkaXQ6IGZhbHNlLAorICAgICAgICAgIGNvbHVtbnM6IFsn YXR0bmFtZScsICdkYXRhdHlwZScsICd0eXBsZW4nLCAncHJlY2lzaW9uJywg J3R5cGRlZmF1bHQnLCAnYXR0bm90bnVsbCcsICdjb2xsbmFtZScsICdpbmhl cml0ZWRmcm9tJ10KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg IGlkOiAnY29uc3RyYWludHMnLCBsYWJlbDone3sgXygnQ29uc3RyYWludHMn KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdjb2xs ZWN0aW9uJywgZ3JvdXA6ICdDb25zdHJhaW50cycsIHZpc2libGU6IGZhbHNl LCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgbW9kZWw6 IENvbnN0cmFpbnRNb2RlbCwgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRy dWUsIGNvbHVtbnM6IFsnY29ubmFtZScsJ2NvbnNyYycsICdjb25ub2luaGVy aXQnLCAnY29udmFsaWRhdGVkJ10sCisgICAgICAgICAgY2FuRWRpdDogZnVu Y3Rpb24obykgeworICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBCYWNr Ym9uZS5Nb2RlbCkgeworICAgICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9m IENvbnN0cmFpbnRNb2RlbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBv LmlzTmV3KCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0sIG1pbl92ZXJz aW9uOiA5MDUwMAorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3N0cmZ0 b3B0aW9ucycsIGxhYmVsOid7eyBfKCdPcHRpb25zJykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAnRGVm aW5pdGlvbicsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnZnRvcHRpb25zJywgbGFiZWw6J3t7IF8oJ09wdGlv bnMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdj b2xsZWN0aW9uJywgZ3JvdXA6ICdPcHRpb25zJywgbW9kZTogWydlZGl0Jywg J2NyZWF0ZSddLAorICAgICAgICAgIG1vZGVsOiBPcHRpb25zTW9kZWwsIGNh bkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjYW5FZGl0OiBmYWxzZSwK KyAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywg dW5pcXVlQ29sIDogWydvcHRpb24nXQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3JlbGFjbCcsIGxhYmVsOiAne3sgXygnUHJpdmlsZWdlcycpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBn cm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLAorICAgICAgICAgIG1vZGU6 IFsncHJvcGVydGllcyddLCBtaW5fdmVyc2lvbjogOTAyMDAKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdhY2wnLCBsYWJlbDogJ3t7IF8oJ1ByaXZp bGVnZXMnKSB9fScsIG1vZGVsOiBwZ0FkbWluCisgICAgICAgICAgLkJyb3dz ZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKAorICAgICAgICAg IHtwcml2aWxlZ2VzOiBbJ2EnLCdyJywndycsJ3gnXX0pLCB1bmlxdWVDb2wg OiBbJ2dyYW50ZWUnLCAnZ3JhbnRvciddLAorICAgICAgICAgIGVkaXRhYmxl OiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLCBncm91cDogJ3t7IF8oJ1Nl Y3VyaXR5JykgfX0nLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVh dGUnXSwKKyAgICAgICAgICBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1 ZSwgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisgICAgICAg ICAgbWluX3ZlcnNpb246IDkwMjAwCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7eyBfKCdTZWN1cml0eSBMYWJl bHMnKSB9fScsCisgICAgICAgICAgbW9kZWw6IFNlY3VyaXR5TW9kZWwsIHR5 cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1Nl Y3VyaXR5JykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAg ICAgICAgbWluX3ZlcnNpb246IDkwMTAwLCBjYW5BZGQ6IHRydWUsCisgICAg ICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAg ICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywgdW5pcXVl Q29sIDogWydwcm92aWRlciddCisgICAgICAgIH0KKyAgICAgICAgXSwKKyAg ICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAg ICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgZXJybXNnLAorICAg ICAgICAgICAgICBzZWNsYWJlbHMgPSB0aGlzLmdldCgnc2VjbGFiZWxzJyk7 CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFt ZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgZXJyWyduYW1l J10gPSAne3sgXygnTmFtZSBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOworICAg ICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnbmFtZSddOworICAg ICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCdiYXNlbnNwJykpIHx8IFN0cmluZyh0aGlzLmdldCgnYmFzZW5zcCcp KQorICAgICAgICAgIC5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcn KSB7CisgICAgICAgICAgICBlcnJbJ2Jhc2Vuc3AnXSA9ICd7eyBfKCdTY2hl bWEgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIGVycm1z ZyA9IGVycm1zZyB8fCBlcnJbJ2Jhc2Vuc3AnXTsKKyAgICAgICAgICB9CisK KyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZnRzcnZu YW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnZnRzcnZuYW1lJykpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVy clsnZnRzcnZuYW1lJ10gPSAne3sgXygnRm9yZWlnbiBzZXJ2ZXIgY2Fubm90 IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1z ZyB8fCBlcnJbJ2Z0c3J2bmFtZSddOworICAgICAgICAgIH0KKworICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChlcnIpOworCisgICAg ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0pLAorICAg ICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg eworICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxs IGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgIGlmIChkYXRhICYmIGRhdGEu Y2hlY2sgPT0gZmFsc2UpCisgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg ICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBp dGVtRGF0YTsKKyAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8g Y2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgd2hpbGUgKGkpIHsKKyAgICAg ICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNy ZWF0ZSBmb3JlaWduIHRhYmxlCisgICAgICAgICAgaWYgKF8uaW5kZXhPZihb J3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQorICAgICAgICAgICAgcmV0dXJu IHRydWU7CisKKyAgICAgICAgICBpZiAoJ2NvbGwtZm9yZWlnbi10YWJsZScg PT0gZC5fdHlwZSkgeworICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUg bm90IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAgIHByZXZfaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAg ICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVs bDsKKyAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cn KSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgZCA9IGkg PyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAgICAgfQorICAgICAgICAv LyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBt ZW51CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICB9KTsKKwor ICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbi10YWJs ZSddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVz L2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNkNjAy NwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbApAQCAtMCwwICsxLDM2IEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK0NSRUFURSBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJ ZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0oCit7JSBpZiBkYXRh LmNvbHVtbnMgJX0KK3slIGZvciBjIGluIGRhdGEuY29sdW1ucyAlfQorICAg IHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0VHlwZUlk ZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxl bn19IHslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9ufX17JSBl bmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMuaXNBcnJheVR5cGUgJX1bXXsl IGVuZGlmICV9eyUgaWYgYy5hdHRub3RudWxsICV9CisgTk9UIE5VTEx7JSBl bHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUgaWYgbm90IGxvb3AubGFzdCAl fSwKK3slIGVuZGlmICV9eyUgZW5kZm9yIC0lfXslIGVuZGlmICV9CisKKykK KyAgICBTRVJWRVIge3sgY29ubnxxdElkZW50KGRhdGEuZnRzcnZuYW1lKSB9 fXslIGlmIGRhdGEuZnRvcHRpb25zICV9CisKK3slIGZvciBvIGluIGRhdGEu ZnRvcHRpb25zICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQor eyUgaWYgbG9vcC5maXJzdCAlfSAgICBPUFRJT05TICh7JSBlbmRpZiAlfXsl IGlmIG5vdCBsb29wLmZpcnN0ICV9LCB7JSBlbmRpZiAlfXt7by5vcHRpb259 fSB7e28udmFsdWV8cXRMaXRlcmFsfX17JSBpZiBsb29wLmxhc3QgJX0peyUg ZW5kaWYgJX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgLSV9 OworeyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxF IHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0K KyAgICBPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19OworeyUgZW5kaWYgLSV9 Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRh Lm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0nOwor eyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAlfQoreyUgZm9y IHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmIHIuc2VjdXJpdHlfbGFi ZWwgYW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4s ICdGT1JFSUdOIFRBQkxFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNl Y3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjQzZTA1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBAIC0w LDAgKzEsMTUgQEAKK3slIGlmIHNjaWQgYW5kIGZvaWQgJX0KK1NFTEVDVAor ICAgIGMucmVsbmFtZSBBUyBuYW1lLCBuc3BuYW1lIGFzIGJhc2Vuc3AKK0ZS T00KKyAgICBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19u YW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorV0hF UkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICBB TkQgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KKworeyUg aWYgbmFtZSAlfQorRFJPUCBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVu dChiYXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERXsl IGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5YzE3ZAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMu c3FsCkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxu YW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBs ZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgIGNvbmNhdChuc3BuYW1l LCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29w eV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRpb24gYywgcGdfbmFt ZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNwYWNlPW4ub2lkCitP UkRFUiBCWQorICAgIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sdW1ucy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9jb2x1bW5zLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmY1ZTE3Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sdW1ucy5z cWwKQEAgLTAsMCArMSwyMiBAQAorU0VMRUNUCisgICAgYXR0bmFtZSwgYXR0 bmRpbXMsIGF0dHR5cG1vZCwgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMg ZGF0YXR5cGUsCisgICAgZm9ybWF0X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBt b2QpIEFTIGZ1bGx0eXBlLCBhdHRub3RudWxsLCBhdHRudW0sCisgICAgKFNF TEVDVCBDT1VOVCgxKSBmcm9tIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFt ZT10LnR5cG5hbWUpID4gMSBBUyBpc2R1cCwKKyAgICAoCisgICAgICAgIGF0 dG5hbWUgfHwgJyAnIHx8IGZvcm1hdF90eXBlKHQub2lkLCBhdHQuYXR0dHlw bW9kKSB8fCAnICcgfHwKKyAgICAgICAgKENBU0UgV0hFTiBhdHRub3RudWxs PSd0cnVlJworICAgICAgICBUSEVOICdOT1QgTlVMTCcgRUxTRSAnTlVMTCcK KyAgICAgICAgRU5EKQorICAgICkgYXMgc3RyY29sdW1uCitGUk9NCisgICAg cGdfYXR0cmlidXRlIGF0dAorSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0Lm9p ZD1hdHR0eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gdC50 eXBuYW1lc3BhY2U9bnNwLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdf dHlwZSBiIE9OIHQudHlwZWxlbT1iLm9pZAorV0hFUkUKKyAgICBhdHQuYXR0 cmVsaWQ9e3tmb2lkfX06Om9pZAorICAgIEFORCBhdHRudW0+MAorT1JERVIg YnkgYXR0bnVtOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1 cy9nZXRfY29uc3RyYWludHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1 cy9nZXRfY29uc3RyYWludHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmZjOTM1NDkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKQEAgLTAs MCArMSw3IEBACitTRUxFQ1QKKyAgICBjb25uYW1lLCBjb250eXBlLCBjb25z cmMKK0ZST00KKyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNvbnJl bGlkPXt7Zm9pZH19OjpvaWQKK09SREVSIGJ5IGNvbm5hbWU7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9mb3JlaWduX3NlcnZl cnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfZm9yZWlnbl9z ZXJ2ZXJzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xOTgwZjAyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjFfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApAQCAtMCwwICsxLDUg QEAKK1NFTEVDVAorICAgIHNydm5hbWUKK0ZST00KKyAgICBwZ19mb3JlaWdu X3NlcnZlcgorT1JERVIgQlkgc3J2bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuMV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjlhNWY1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsMTkg QEAKK3slIGlmIGJhc2Vuc3AgJX0KK1NFTEVDVAorICAgIGMub2lkLCBibi5v aWQgYXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAgICBw Z19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWMucmVsbmFtZXNwYWNlCitXSEVS RQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0TGl0ZXJhbCB9fQor ICAgIEFORCBjLnJlbG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07CisKK3sl IGVsaWYgZm9pZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lc3BhY2UgYXMg c2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK1dIRVJFCisgICAgYy5vaWQg PSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuMV9wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmJjNzMxYzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMV9wbHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAKK1NF TEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0X3Vz ZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlvbnMsIG5z cG5hbWUgYXMgYmFzZW5zcCwgZGVzY3JpcHRpb24KK0ZST00KKyAgICBwZ19j bGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBjLm9p ZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorTEVGVCBPVVRF UiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3Mp CitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAor T1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3Nx bC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4x X3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMjVhYmMxYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwy NSBAQAorU0VMRUNUCisgICAgYy5vaWQsIGMucmVsbmFtZSBBUyBuYW1lLCBw Z19nZXRfdXNlcmJ5aWQocmVsb3duZXIpIEFTIG93bmVyLAorICAgIGZ0b3B0 aW9ucywgc3J2bmFtZSBBUyBmdHNydm5hbWUsIGRlc2NyaXB0aW9uLCBuc3Bu YW1lIGFzIGJhc2Vuc3AsCisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9h Z2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKQorICAgIEZST00KKyAgICAg ICAgcGdfc2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAgICAgICAgc2wxLm9i am9pZD1jLm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisgICAgcGdfY2xhc3Mg YworSk9JTgorICAgIHBnX2ZvcmVpZ25fdGFibGUgZnQgT04gYy5vaWQ9ZnQu ZnRyZWxpZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZm9yZWlnbl9zZXJ2 ZXIgZnMgT04gZnQuZnRzZXJ2ZXI9ZnMub2lkCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9 Yy5yZWxuYW1lc3BhY2UpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0g e3tzY2lkfX06Om9pZAorICAgIHslIGlmIGZvaWQgJX0KKyAgICBBTkQgYy5v aWQgPSB7e2ZvaWR9fTo6b2lkCisgICAgeyUgZW5kaWYgJX0KK09SREVSIEJZ IGMucmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3Bs dXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvdXBkYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmI1 NTJkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1 cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsOTcgQEAKK3slIGltcG9ydCAnbWFj cm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQor eyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUgPSBvX2RhdGEubmFtZSAlfQor eyUgaWYgZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5hbWUgIT0gb19kYXRh Lm5hbWUgJX0KK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBvX2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUg VE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFt ZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQor Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUg e3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAg IE9XTkVSIFRPIHt7IGRhdGEub3duZXIgfX07Cit7JSBlbmRpZiAtJX0KKwor eyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVt bnMuZGVsZXRlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENP TFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX07Cit7JSBlbmRmb3Ig LSV9CisKK3slIGZvciBjIGluIGRhdGEuY29sdW1ucy5hZGRlZCAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09MVU1OIHt7Y29ubnxxdElkZW50 KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUp IH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYgYy5wcmVj aXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlm ICV9eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtdeyUgZW5kaWYgJX0KK3slIGlm IGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVsc2UgJX0gTlVMTHslIGVu ZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQgJX0gREVGQVVMVCB7e2MudHlw ZGVmYXVsdH19eyUgZW5kaWYgJX0KK3slIGlmIGMuY29sbG5hbWUgJX0gQ09M TEFURSB7e2MuY29sbG5hbWV9fXslIGVuZGlmICV9OworeyUgZW5kZm9yIC0l fQorCit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuY2hhbmdlZCAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTFVNTiB7e2Nvbm58cXRJZGVu dChvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ2F0dG5hbWUnXSl9fTsK KworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUREIENPTFVNTiB7e2Nvbm58cXRJ ZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxxdFR5cGVJZGVudChjLmRhdGF0 eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7Yy50eXBsZW59fXslIGlmIGMu cHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBl bmRpZiAlfXslIGlmIGMuaXNBcnJheVR5cGUgJX1bXXslIGVuZGlmICV9Cit7 JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7 JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICV9IERFRkFVTFQge3tj LnR5cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7JSBpZiBjLmNvbGxuYW1lICV9 IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBlbmRpZiAlfTsKK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmZ0b3B0aW9ucyAlfQor eyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuZGVsZXRlZCAlfQoreyUgaWYg by5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIgRk9SRUlHTiBUQUJM RSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19Cisg ICAgT1BUSU9OUyAoRFJPUCB7e28ub3B0aW9ufX0pOworeyUgZW5kaWYgJX0K K3slIGVuZGZvciAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuYWRk ZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIE9QVElPTlMgKEFERCB7e28ub3B0aW9ufX0ge3tv LnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3Ig JX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmNoYW5nZWQgJX0KK3sl IGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVSIEZPUkVJR04g VEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIE9QVElPTlMgKFNFVCB7e28ub3B0aW9ufX0ge3tvLnZhbHVlfHF0 TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmIC0lfQoreyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxzICV9 Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMu ZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMu ZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuVU5TRVQoY29ubiwgJ0ZPUkVJR04g VEFCTEUnLCBuYW1lLCByLnByb3ZpZGVyLCBvX2RhdGEuYmFzZW5zcCkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnYWRkZWQnIGlu IHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQorCit7eyBTRUNMQUJM RS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVy LCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2Vj bGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7 JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBTRUNMQUJM RS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVy LCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9u ICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgSVMge3sgZGF0YS5k ZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAtJX0KK3slIGlm IGRhdGEuYmFzZW5zcCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNv bm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQg U0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3ApIH19OworeyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMl9wbHVzL2FjbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVz L2FjbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MTIxYTAzNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4y X3BsdXMvYWNsLnNxbApAQCAtMCwwICsxLDM1IEBACitTRUxFQ1QKKyAgICBD T0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgQVMgZ3JhbnRlZSwKKyAg ICBnLnJvbG5hbWUgQVMgZ3JhbnRvciwgYXJyYXlfYWdnKHByaXZpbGVnZV90 eXBlKSBBUyBwcml2aWxlZ2VzLAorICAgIGFycmF5X2FnZyhpc19ncmFudGFi bGUpIEFTIGdyYW50YWJsZQorRlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAg ZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRhYmxlLAorICAgICAg ICBDQVNFIGQucHJpdmlsZWdlX3R5cGUKKyAgICAgICAgV0hFTiAnQ09OTkVD VCcgVEhFTiAnYycKKyAgICAgICAgV0hFTiAnQ1JFQVRFJyBUSEVOICdDJwor ICAgICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4g J0VYRUNVVEUnIFRIRU4gJ1gnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhF TiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAg ICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVOICdU RU1QT1JBUlknIFRIRU4gJ1QnCisgICAgICAgIFdIRU4gJ1RSSUdHRVInIFRI RU4gJ3QnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAg ICAgICBXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4gJ1VT QUdFJyBUSEVOICdVJworICAgICAgICBFTFNFICdVTktOT1dOJworICAgICAg ICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAgIChT RUxFQ1QKKyAgICAgICAgICAgIChkKS5ncmFudGVlIEFTIGdyYW50ZWUsIChk KS5ncmFudG9yIEFTIGdyYW50b3IsCisgICAgICAgICAgICAoZCkuaXNfZ3Jh bnRhYmxlIEFTIGlzX2dyYW50YWJsZSwKKyAgICAgICAgICAgIChkKS5wcml2 aWxlZ2VfdHlwZSBBUyBwcml2aWxlZ2VfdHlwZQorICAgICAgICBGUk9NCisg ICAgICAgICAgICAoU0VMRUNUIGFjbGV4cGxvZGUoZGIucmVsYWNsKSBBUyBk IEZST00gcGdfY2xhc3MgZGIKKyAgICAgICAgICAgIFdIRVJFIGRiLm9pZCA9 IHt7Zm9pZH19OjpPSUQpIGEKKyAgICAgICAgKSBkCisgICAgKSBkCisgICAg TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAoZC5ncmFudG9y ID0gZy5vaWQpCisgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMg Z3QgT04gKGQuZ3JhbnRlZSA9IGd0Lm9pZCkKK0dST1VQIEJZIGcucm9sbmFt ZSwgZ3Qucm9sbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4y X3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvY3Jl YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40 OTdiMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJf cGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNDQgQEAKK3slIGltcG9ydCAn bWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAl fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9z JyBhcyBQUklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK0NSRUFURSBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0oCit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3slIGZvciBjIGlu IGRhdGEuY29sdW1ucyAlfQorICAgIHt7Y29ubnxxdElkZW50KGMuYXR0bmFt ZSl9fSB7e2Nvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17JSBpZiBj LnR5cGxlbiAlfSh7e2MudHlwbGVufX17JSBpZiBjLnByZWNpc2lvbiAlfSwg e3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17JSBpZiBj LmlzQXJyYXlUeXBlICV9W117JSBlbmRpZiAlfXslIGlmIGMuYXR0bm90bnVs bCAlfQorIE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYgJX17JSBp ZiBjLnR5cGRlZmF1bHQgJX0KKyBERUZBVUxUIHt7Yy50eXBkZWZhdWx0fX17 JSBlbmRpZiAlfXslIGlmIGMuY29sbG5hbWUgJX0KKyBDT0xMQVRFIHt7Yy5j b2xsbmFtZX19eyUgZW5kaWYgJX0KK3slIGlmIG5vdCBsb29wLmxhc3QgJX0s Cit7JSBlbmRpZiAlfXslIGVuZGZvciAtJX17JSBlbmRpZiAlfQorCispCisg ICAgU0VSVkVSIHt7IGNvbm58cXRJZGVudChkYXRhLmZ0c3J2bmFtZSkgfX17 JSBpZiBkYXRhLmZ0b3B0aW9ucyAlfQorCit7JSBmb3IgbyBpbiBkYXRhLmZ0 b3B0aW9ucyAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KK3sl IGlmIGxvb3AuZmlyc3QgJX0gICAgT1BUSU9OUyAoeyUgZW5kaWYgJX17JSBp ZiBub3QgbG9vcC5maXJzdCAlfSwgeyUgZW5kaWYgJX17e28ub3B0aW9ufX0g e3tvLnZhbHVlfHF0TGl0ZXJhbH19eyUgaWYgbG9vcC5sYXN0ICV9KXslIGVu ZGlmICV9eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9Owor eyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAg ICBPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19OworeyUgZW5kaWYgLSV9Cit7 JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9SRUlH TiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5h bWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0nOworeyUg ZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmFjbCAlfQorCit7JSBmb3IgcHJpdiBp biBkYXRhLmFjbCAlfQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUn LCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50 LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZv ciAtJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0K KworeyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX17JSBpZiByLnNlY3Vy aXR5X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9Cit7eyBTRUNMQUJMRS5TRVQo Y29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIs IHIuc2VjdXJpdHlfbGFiZWwsIGRhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9kZWxldGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjA5NjkKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2RlbGV0ZS5zcWwK QEAgLTAsMCArMSwxNyBAQAoreyUgaWYgc2NpZCBhbmQgZm9pZCAlfQorU0VM RUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsIG5zcG5hbWUgYXMgYmFzZW5z cAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgT1VURVIgSk9JTgorICAg IHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2Up CitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAor QU5ECisgICAgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0K KworCit7JSBpZiBuYW1lICV9CitEUk9QIEZPUkVJR04gVEFCTEUge3sgY29u bnxxdElkZW50KGJhc2Vuc3AsIG5hbWUpIH19eyUgaWYgY2FzY2FkZSV9IENB U0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZDI3NGIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9jb2xs YXRpb25zLnNxbApAQCAtMCwwICsxLDkgQEAKK1NFTEVDVCAtLW5zcG5hbWUs IGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAw IEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgIGNvbmNhdChu c3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQg QVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRpb24gYywg cGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNwYWNlPW4u b2lkCitPUkRFUiBCWSBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbHVtbnMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29sdW1ucy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyNGQzZQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbHVtbnMu c3FsCkBAIC0wLDAgKzEsMzQgQEAKK1NFTEVDVAorICAgIGF0dG5hbWUsIGF0 dG5kaW1zLCBhdHR0eXBtb2QsIGZvcm1hdF90eXBlKHQub2lkLE5VTEwpIEFT IGRhdGF0eXBlLAorICAgIGF0dG5vdG51bGwsIGF0dG51bSwgZm9ybWF0X3R5 cGUodC5vaWQsIGF0dC5hdHR0eXBtb2QpIEFTIGZ1bGx0eXBlLAorICAgIENB U0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY2wu Y29sbG5hbWUpID4gMCBUSEVOCisgICAgY29uY2F0KGNuLm5zcG5hbWUsICcu IicsIGNsLmNvbGxuYW1lLCciJykgRUxTRSAnJyBFTkQgQVMgY29sbG5hbWUs CisgICAgKFNFTEVDVCBDT1VOVCgxKSBmcm9tIHBnX3R5cGUgdDIgV0hFUkUg dDIudHlwbmFtZT10LnR5cG5hbWUpID4gMSBBUyBpc2R1cCwKKyAgICBwZ19j YXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpIEFT IHR5cGRlZmF1bHQsCisgICAgKAorICAgICAgICBhdHRuYW1lIHx8ICcgJyB8 fCBmb3JtYXRfdHlwZSh0Lm9pZCwgYXR0LmF0dHR5cG1vZCkgfHwgJyAnIHx8 CisgICAgICAgIChDQVNFIFdIRU4gYXR0bm90bnVsbD0ndHJ1ZScKKyAgICAg ICAgVEhFTiAnTk9UIE5VTEwnIEVMU0UgJ05VTEwnCisgICAgICAgIEVORCkg fHwgJyAnIHx8CisgICAgICAgIChDQVNFIFdIRU4gcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihkZWYuYWRiaW4sIGRlZi5hZHJlbGlkKTw+JycKKyAgICAgICAg VEhFTiAnREVGQVVMVCAnIHx8IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZGVm LmFkYmluLCBkZWYuYWRyZWxpZCkKKyAgICAgICAgRUxTRSAnJyBFTkQpCisg ICAgKSBhcyBzdHJjb2x1bW4KK0ZST00KKyAgICBwZ19hdHRyaWJ1dGUgYXR0 CitKT0lOCisgICAgcGdfdHlwZSB0IE9OIHQub2lkPWF0dHR5cGlkCitKT0lO CisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiB0LnR5cG5hbWVzcGFjZT1uc3Au b2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19hdHRyZGVmIGRlZiBPTiBh ZHJlbGlkPWF0dC5hdHRyZWxpZCBBTkQgYWRudW09YXR0LmF0dG51bQorTEVG VCBPVVRFUiBKT0lOCisgICAgcGdfdHlwZSBiIE9OIHQudHlwZWxlbT1iLm9p ZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfY29sbGF0aW9uIGNsIE9OIHQu dHlwY29sbGF0aW9uPWNsLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdf bmFtZXNwYWNlIGNuIE9OIGNsLmNvbGxuYW1lc3BhY2U9Y24ub2lkCitXSEVS RQorICAgIGF0dC5hdHRyZWxpZD17e2ZvaWR9fTo6b2lkCisgICAgQU5EIGF0 dG51bT4wCitPUkRFUiBieSBhdHRudW07CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5MzU0OQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFp bnRzLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVAorICAgIGNvbm5hbWUs IGNvbnR5cGUsIGNvbnNyYworRlJPTQorICAgIHBnX2NvbnN0cmFpbnQKK1dI RVJFCisgICAgY29ucmVsaWQ9e3tmb2lkfX06Om9pZAorT1JERVIgYnkgY29u bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0 X2ZvcmVpZ25fc2VydmVycy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVz L2dldF9mb3JlaWduX3NlcnZlcnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjFjOTVjZTUKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3Fs CkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAgc3J2bmFtZQorRlJPTQor ICAgIHBnX2ZvcmVpZ25fc2VydmVyCitPUkRFUiBCWQorICAgIHNydm5hbWU7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9vaWQu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTVmNWQxCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfb2lk LnNxbApAQCAtMCwwICsxLDE5IEBACit7JSBpZiBiYXNlbnNwICV9CitTRUxF Q1QKKyAgICBjLm9pZCwgYm4ub2lkIGFzIHNjaWQKK0ZST00KKyAgICBwZ19j bGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1j LnJlbG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFz ZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgYy5yZWxuYW1lPXt7IG5hbWV8 cXRMaXRlcmFsIH19OworCit7JSBlbGlmIGZvaWQgJX0KK1NFTEVDVAorICAg IGMucmVsbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBj CitXSEVSRQorICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL25vZGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9ub2RlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzczMWM1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9ub2RlLnNxbApA QCAtMCwwICsxLDE0IEBACitTRUxFQ1QKKyAgICBjLm9pZCwgYy5yZWxuYW1l IEFTIG5hbWUsIHBnX2dldF91c2VyYnlpZChyZWxvd25lcikgQVMgb3duZXIs CisgICAgZnRvcHRpb25zLCBuc3BuYW1lIGFzIGJhc2Vuc3AsIGRlc2NyaXB0 aW9uCitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX2ZvcmVp Z25fdGFibGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAorTEVGVCBPVVRFUiBK T0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5h bWVzcGFjZSkKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9u IGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdw Z19jbGFzcyc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFj ZSA9IHt7c2NpZH19OjpvaWQKK09SREVSIEJZIGMucmVsbmFtZTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NTdjODcKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL3Byb3BlcnRp ZXMuc3FsCkBAIC0wLDAgKzEsMjcgQEAKK1NFTEVDVAorICAgIGMub2lkLCBj LnJlbG5hbWUgQVMgbmFtZSwgYy5yZWxhY2wsIHBnX2dldF91c2VyYnlpZChy ZWxvd25lcikgQVMgb3duZXIsCisgICAgZnRvcHRpb25zLCBzcnZuYW1lIEFT IGZ0c3J2bmFtZSwgZGVzY3JpcHRpb24sIG5zcG5hbWUgYXMgYmFzZW5zcCwg Y29uc3JjLAorICAgIChTRUxFQ1QKKyAgICAgICAgYXJyYXlfYWdnKHByb3Zp ZGVyIHx8ICc9JyB8fCBsYWJlbCkKKyAgICBGUk9NCisgICAgICAgIHBnX3No c2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAgICAgICAgc2wxLm9iam9pZD1j Lm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisgICAgcGdfY2xhc3MgYworSk9J TgorICAgIHBnX2ZvcmVpZ25fdGFibGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxp ZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZm9yZWlnbl9zZXJ2ZXIgZnMg T04gZnQuZnRzZXJ2ZXI9ZnMub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBw Z19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRl cy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIg Sk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxu YW1lc3BhY2UpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jb25zdHJhaW50 IGNuIE9OIChjbi5jb25yZWxpZD1jLm9pZCkKK1dIRVJFCisgICAgYy5yZWxu YW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCisgICAgeyUgaWYgZm9pZCAlfQor ICAgIEFORCBjLm9pZCA9IHt7Zm9pZH19OjpvaWQKKyAgICB7JSBlbmRpZiAl fQorT1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjJfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJf cGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjc5MTVlZGEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxMjkgQEAKK3sl IGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBT RUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxl Z2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK3sl IHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAl fQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBG T1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg b19kYXRhLm5hbWUpIH19CisgICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVu dChkYXRhLm5hbWUpIH19OworeyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0K K3slIGVuZGlmICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEub3duZXIg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgT1dORVIgVE8ge3sgZGF0YS5v d25lciB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5jb2x1bW5zICV9 Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuZGVsZXRlZCAlfQorCitBTFRF UiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5z cCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTFVNTiB7e2Nvbm58cXRJZGVudChj LmF0dG5hbWUpfX07Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRh LmNvbHVtbnMuYWRkZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQURE IENPTFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxx dFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7 Yy50eXBsZW59fXslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9u fX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMuaXNBcnJheVR5cGUg JX1bXXslIGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5V TEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZh dWx0ICV9IERFRkFVTFQge3tjLnR5cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7 JSBpZiBjLmNvbGxuYW1lICV9IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBl bmRpZiAlfTsKK3slIGVuZGZvciAtJX0KK3slIGZvciBjIGluIGRhdGEuY29s dW1ucy5jaGFuZ2VkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29u bnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1Ag Q09MVU1OIHt7Y29ubnxxdElkZW50KG9fZGF0YVsnY29sdW1ucyddW2MuYXR0 bnVtXVsnYXR0bmFtZSddKX19OworCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBB REQgQ09MVU1OIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fSB7eyBjb25u fHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0o e3tjLnR5cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNp b259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5pc0FycmF5VHlw ZSAlfVtdeyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1Qg TlVMTHslIGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRl ZmF1bHQgJX0gREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0K K3slIGlmIGMuY29sbG5hbWUgJX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXsl IGVuZGlmICV9OworeyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgLSV9Cit7JSBp ZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0 cmFpbnRzLmRlbGV0ZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJP UCBDT05TVFJBSU5UIHt7Y29ubnxxdElkZW50KGMuY29ubmFtZSl9fTsKK3sl IGVuZGZvciAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25zdHJhaW50cy5hZGRl ZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7 e2Nvbm58cXRJZGVudChjLmNvbm5hbWUpfX0geyUgaWYgYy5jb25zcmMgJX0g Q0hFQ0sgKHt7Yy5jb25zcmN9fSl7JSBlbmRpZiAlfSB7JSBpZiBjLmNvbm5v aW5oZXJpdCAlfSBOTyBJTkhFUklUeyUgZW5kaWYgJX07Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5mdG9wdGlvbnMgJX0KK3sl IGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmRlbGV0ZWQgJX0KK3slIGlmIG8u b3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUg e3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAg IE9QVElPTlMgKCBEUk9QIHt7by5vcHRpb259fSk7Cit7JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5hZGRl ZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIg Rk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG5hbWUpIH19CisgICAgT1BUSU9OUyAoQUREIHt7by5vcHRpb259fSB7e28u dmFsdWV8cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAl fQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuY2hhbmdlZCAlfQoreyUg aWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgT1BUSU9OUyAoU0VUIHt7by5vcHRpb259fSB7e28udmFsdWV8cXRM aXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgLSV9Cit7JSBpZiBkYXRhLmFjbCAlfQoreyUgaWYgJ2RlbGV0ZWQnIGlu IGRhdGEuYWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmFjbC5kZWxldGVk ICV9CisKK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBw cml2LmdyYW50ZWUsIG5hbWUsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRh LmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuY2hhbmdlZCAlfQor Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxFJywgcHJpdi5n cmFudGVlLCBuYW1lLCBvX2RhdGEuYmFzZW5zcCkgfX0KKwore3sgUFJJVklM RUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIG5hbWUsIHBy aXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBvX2RhdGEuYmFz ZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAn YWRkZWQnIGluIGRhdGEuYWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmFj bC5hZGRlZCAlfQorCit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgbmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2 LndpdGhfZ3JhbnQsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgLSV9Cit7JSBzZXQgc2VjbGFiZWxz ID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNs YWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3sl IGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9CisKK3t7IFNFQ0xBQkxF LlVOU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRl ciwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm IC0lfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMu YWRkZWQgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRB QkxFJywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19k YXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQor eyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNo YW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNo YW5nZWQgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRB QkxFJywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19k YXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQor eyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIEZPUkVJ R04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19 OworeyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmJhc2Vuc3AgJX0KKworQUxU RVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG5hbWUpIH19CisgICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRlbnQo ZGF0YS5iYXNlbnNwKSB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9hY2wuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjVfcGx1cy9hY2wuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMWEwMzUKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2FjbC5zcWwKQEAgLTAsMCAr MSwzNSBAQAorU0VMRUNUCisgICAgQ09BTEVTQ0UoZ3Qucm9sbmFtZSwgJ3B1 YmxpYycpIEFTIGdyYW50ZWUsCisgICAgZy5yb2xuYW1lIEFTIGdyYW50b3Is IGFycmF5X2FnZyhwcml2aWxlZ2VfdHlwZSkgQVMgcHJpdmlsZWdlcywKKyAg ICBhcnJheV9hZ2coaXNfZ3JhbnRhYmxlKSBBUyBncmFudGFibGUKK0ZST00K KyAgICAoU0VMRUNUCisgICAgICAgIGQuZ3JhbnRlZSwgZC5ncmFudG9yLCBk LmlzX2dyYW50YWJsZSwKKyAgICAgICAgQ0FTRSBkLnByaXZpbGVnZV90eXBl CisgICAgICAgIFdIRU4gJ0NPTk5FQ1QnIFRIRU4gJ2MnCisgICAgICAgIFdI RU4gJ0NSRUFURScgVEhFTiAnQycKKyAgICAgICAgV0hFTiAnREVMRVRFJyBU SEVOICdkJworICAgICAgICBXSEVOICdFWEVDVVRFJyBUSEVOICdYJworICAg ICAgICBXSEVOICdJTlNFUlQnIFRIRU4gJ2EnCisgICAgICAgIFdIRU4gJ1JF RkVSRU5DRVMnIFRIRU4gJ3gnCisgICAgICAgIFdIRU4gJ1NFTEVDVCcgVEhF TiAncicKKyAgICAgICAgV0hFTiAnVEVNUE9SQVJZJyBUSEVOICdUJworICAg ICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdU UlVOQ0FURScgVEhFTiAnRCcKKyAgICAgICAgV0hFTiAnVVBEQVRFJyBUSEVO ICd3JworICAgICAgICBXSEVOICdVU0FHRScgVEhFTiAnVScKKyAgICAgICAg RUxTRSAnVU5LTk9XTicKKyAgICAgICAgRU5EIEFTIHByaXZpbGVnZV90eXBl CisgICAgRlJPTQorICAgICAgICAoU0VMRUNUCisgICAgICAgICAgICAoZCku Z3JhbnRlZSBBUyBncmFudGVlLCAoZCkuZ3JhbnRvciBBUyBncmFudG9yLAor ICAgICAgICAgICAgKGQpLmlzX2dyYW50YWJsZSBBUyBpc19ncmFudGFibGUs CisgICAgICAgICAgICAoZCkucHJpdmlsZWdlX3R5cGUgQVMgcHJpdmlsZWdl X3R5cGUKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgKFNFTEVDVCBhY2xl eHBsb2RlKGRiLnJlbGFjbCkgQVMgZCBGUk9NIHBnX2NsYXNzIGRiCisgICAg ICAgICAgICBXSEVSRSBkYi5vaWQgPSB7e2ZvaWR9fTo6T0lEKSBhCisgICAg ICAgICkgZAorICAgICkgZAorICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBn X3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQorICAgIExFRlQgSk9J TiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5v aWQpCitHUk9VUCBCWSBnLnJvbG5hbWUsIGd0LnJvbG5hbWU7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZWY1NzAwOAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvY3JlYXRlLnNxbApAQCAtMCww ICsxLDYxIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5 Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3Nj aGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBz ZXQgaXNfY29sdW1ucyA9IFtdICV9Cit7JSBpZiBkYXRhICV9CitDUkVBVEUg Rk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBk YXRhLm5hbWUpIH19KAoreyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3Ig YyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIChub3QgYy5pbmhlcml0ZWRm cm9tIG9yIGMuaW5oZXJpdGVkZnJvbSA9PScnIG9yICBjLmluaGVyaXRlZGZy b20gPT0gTm9uZSBvciAgYy5pbmhlcml0ZWRmcm9tID09ICdOb25lJyApICV9 Cit7JSBpZiBpc19jb2x1bW5zLmFwcGVuZCgnMScpICV9eyUgZW5kaWYgJX0K KyAgICB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0ge3tjb25ufHF0VHlw ZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5 cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXsl IGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtd eyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHsl IGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQg JX0gREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0KK3slIGlm IGMuY29sbG5hbWUgJX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXslIGVuZGlm ICV9Cit7JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKKykKK3sl IGlmIGRhdGEuaW5oZXJpdHMgJX0KKyAgICBJTkhFUklUUyAoeyUgZm9yIGkg aW4gZGF0YS5pbmhlcml0cyAlfXslIGlmIGkgJX17e2l9fXslIGlmIG5vdCBs b29wLmxhc3QgJX0sIHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRmb3Ig JX0pCit7JSBlbmRpZiAlfQorICAgIFNFUlZFUiB7eyBjb25ufHF0SWRlbnQo ZGF0YS5mdHNydm5hbWUpIH19eyUgaWYgZGF0YS5mdG9wdGlvbnMgJX0KKwor eyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMgJX0KK3slIGlmIG8ub3B0aW9u IGFuZCBvLnZhbHVlICV9Cit7JSBpZiBsb29wLmZpcnN0ICV9ICAgIE9QVElP TlMgKHslIGVuZGlmICV9eyUgaWYgbm90IGxvb3AuZmlyc3QgJX0sIHslIGVu ZGlmICV9e3tvLm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fXslIGlm IGxvb3AubGFzdCAlfSl7JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBlbmRm b3IgJX17JSBlbmRpZiAlfTsKK3slIGlmIGRhdGEub3duZXIgJX0KKworQUxU RVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNw LCBkYXRhLm5hbWUpIH19CisgICAgT1dORVIgVE8ge3sgZGF0YS5vd25lciB9 fTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQor eyUgZm9yIGMgaW4gZGF0YS5jb25zdHJhaW50cyAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQo Yy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25zcmMgfX0peyUgaWYgbm90 IGMuY29udmFsaWRhdGVkICV9IE5PVCBWQUxJRHslIGVuZGlmICV9eyUgaWYg Yy5jb25ub2luaGVyaXQgJX0gTk8gSU5IRVJJVHslIGVuZGlmICV9OworeyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlv biAlfQorCitDT01NRU5UIE9OIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7eyBk YXRhLmRlc2NyaXB0aW9uIH19JzsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0 YS5hY2wgJX0KKworeyUgZm9yIHByaXYgaW4gZGF0YS5hY2wgJX0KK3t7IFBS SVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRh Lm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBk YXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAtJX0K K3slIGlmIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBmb3IgciBpbiBkYXRhLnNl Y2xhYmVscyAlfQoreyUgaWYgci5zZWN1cml0eV9sYWJlbCBhbmQgci5wcm92 aWRlciAlfQorCit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFC TEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWws IGRhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFi bGVzL3NxbC85LjVfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjVfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjViYjA5NjkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuNV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwxNyBAQAor eyUgaWYgc2NpZCBhbmQgZm9pZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1l IEFTIG5hbWUsIG5zcG5hbWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX2Ns YXNzIGMKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3Ag T04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2UpCitXSEVSRQorICAgIGMucmVs bmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorQU5ECisgICAgYy5vaWQgPSB7 e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KKworCit7JSBpZiBuYW1lICV9 CitEUk9QIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGJhc2Vuc3As IG5hbWUpIH19eyUgaWYgY2FzY2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfTsK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9w bHVzL2dldF9jb2xsYXRpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3Bs dXMvZ2V0X2NvbGxhdGlvbnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmU4ZDI3NGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApAQCAtMCww ICsxLDkgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxuYW1lLAorICAgIENB U0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29sbG5h bWUpID4gMCAgVEhFTgorICAgIGNvbmNhdChuc3BuYW1lLCAnLiInLCBjb2xs bmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29weV9jb2xsYXRpb24K K0ZST00KKyAgICBwZ19jb2xsYXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dI RVJFCisgICAgYy5jb2xsbmFtZXNwYWNlPW4ub2lkCitPUkRFUiBCWSBuc3Bu YW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvZ2V0X2NvbHVtbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1 cy9nZXRfY29sdW1ucy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZDMxNDU2NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS41X3BsdXMvZ2V0X2NvbHVtbnMuc3FsCkBAIC0wLDAgKzEsNTMg QEAKK1dJVEggSU5IX1RBQkxFUyBBUworICAgIChTRUxFQ1QKKyAgICAgZGlz dGluY3Qgb24gKGF0LmF0dG5hbWUpIGF0dG5hbWUsIHBoLmluaHBhcmVudCBB UyBpbmhlcml0ZWRpZCwgcGguaW5oc2Vxbm8sCisgICAgIGNvbmNhdChubXNw X3BhcmVudC5uc3BuYW1lLCAnLicscGFyZW50LnJlbG5hbWUgKSBBUyBpbmhl cml0ZWRmcm9tCisgICAgRlJPTQorICAgICAgICBwZ19hdHRyaWJ1dGUgYXQK KyAgICBKT0lOCisgICAgICAgIHBnX2luaGVyaXRzIHBoIE9OIHBoLmluaHBh cmVudCA9IGF0LmF0dHJlbGlkIEFORCBwaC5pbmhyZWxpZCA9IHt7Zm9pZH19 OjpvaWQKKyAgICBKT0lOCisgICAgICAgIHBnX2NsYXNzIHBhcmVudCBPTiBw aC5pbmhwYXJlbnQgID0gcGFyZW50Lm9pZAorICAgIEpPSU4KKyAgICAgICAg cGdfbmFtZXNwYWNlIG5tc3BfcGFyZW50IE9OIG5tc3BfcGFyZW50Lm9pZCAg PSBwYXJlbnQucmVsbmFtZXNwYWNlCisgICAgR1JPVVAgQlkgYXQuYXR0bmFt ZSwgcGguaW5ocGFyZW50LCBwaC5pbmhzZXFubywgaW5oZXJpdGVkZnJvbQor ICAgIE9SREVSIEJZIGF0LmF0dG5hbWUsIHBoLmluaHBhcmVudCwgcGguaW5o c2Vxbm8sIGluaGVyaXRlZGZyb20KKyAgICApCitTRUxFQ1QgSU5ILmluaGVy aXRlZGZyb20sIElOSC5pbmhlcml0ZWRpZCwKKyAgICBhdHQuYXR0bmFtZSwg YXR0LmF0dG5kaW1zLCBhdHQuYXR0dHlwbW9kLCBmb3JtYXRfdHlwZSh0Lm9p ZCxOVUxMKSBBUyBkYXRhdHlwZSwKKyAgICBhdHQuYXR0bm90bnVsbCwgYXR0 LmF0dG51bSwgZm9ybWF0X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBtb2QpIEFT IGZ1bGx0eXBlLAorICAgIENBU0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkg PiAwIEFORCBsZW5ndGgoY2wuY29sbG5hbWUpID4gMCBUSEVOCisgICAgY29u Y2F0KGNuLm5zcG5hbWUsICcuIicsIGNsLmNvbGxuYW1lLCciJykKKyAgICBF TFNFICcnIEVORCBBUyBjb2xsbmFtZSwKKyAgICBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpIEFTIHR5cGRlZmF1bHQs CisgICAgKAorICAgICAgICBhdHQuYXR0bmFtZSB8fCAnICcgfHwgZm9ybWF0 X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBtb2QpIHx8ICcgJyB8fAorICAgICAg ICAoQ0FTRSBXSEVOIGF0dG5vdG51bGw9J3RydWUnCisgICAgICAgIFRIRU4g J05PVCBOVUxMJyBFTFNFICdOVUxMJworICAgICAgICBFTkQpIHx8ICcgJyB8 fAorICAgICAgICAoQ0FTRSBXSEVOIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo ZGVmLmFkYmluLCBkZWYuYWRyZWxpZCk8PicnCisgICAgICAgIFRIRU4gJ0RF RkFVTFQgJyB8fCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwg ZGVmLmFkcmVsaWQpCisgICAgICAgIEVMU0UgJycgRU5EKQorICAgICkgYXMg c3RyY29sdW1uLAorCisgICAgKFNFTEVDVCBDT1VOVCgxKSBmcm9tIHBnX3R5 cGUgdDIgV0hFUkUgdDIudHlwbmFtZT10LnR5cG5hbWUpID4gMSBBUyBpc2R1 cAorRlJPTQorICAgIHBnX2F0dHJpYnV0ZSBhdHQKK0xFRlQgSk9JTgorICAg IElOSF9UQUJMRVMgYXMgSU5IIE9OIGF0dC5hdHRuYW1lID0gSU5ILmF0dG5h bWUKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9YXR0dHlwaWQKK0pP SU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5z cC5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2F0dHJkZWYgZGVmIE9O IGFkcmVsaWQ9YXR0LmF0dHJlbGlkIEFORCBhZG51bT1hdHQuYXR0bnVtCitM RUZUIE9VVEVSIEpPSU4KKyAgICBwZ190eXBlIGIgT04gdC50eXBlbGVtPWIu b2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jb2xsYXRpb24gY2wgT04g dC50eXBjb2xsYXRpb249Y2wub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBw Z19uYW1lc3BhY2UgY24gT04gY2wuY29sbG5hbWVzcGFjZT1jbi5vaWQKK1dI RVJFCisgICAgYXR0LmF0dHJlbGlkPXt7Zm9pZH19OjpvaWQKKyAgICBBTkQg YXR0LmF0dG51bT4wCisgICAgT1JERVIgQlkgYXR0LmF0dG5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb25zdHJhaW50 cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb25zdHJhaW50 cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2 MGMzMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3Bs dXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVD VAorICAgIG9pZCBhcyBjb25vaWQsIGNvbm5hbWUsIGNvbnR5cGUsIGNvbnNy YywgY29ubm9pbmhlcml0LCBjb252YWxpZGF0ZWQKK0ZST00KKyAgICBwZ19j b25zdHJhaW50CitXSEVSRQorICAgIGNvbnJlbGlkPXt7Zm9pZH19OjpvaWQK K09SREVSIGJ5IGNvbm5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuNV9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjVfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTdiZGQzCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfZm9yZWln bl9zZXJ2ZXJzLnNxbApAQCAtMCwwICsxLDYgQEAKK1NFTEVDVAorICAgIHNy dm5hbWUKK0ZST00KKyAgICBwZ19mb3JlaWduX3NlcnZlcgorT1JERVIKKyAg ICBCWSBzcnZuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVf cGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0 X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OWE1ZjVkMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSwxOSBAQAoreyUgaWYgYmFz ZW5zcCAlfQorU0VMRUNUCisgICAgYy5vaWQsIGJuLm9pZCBhcyBzY2lkCitG Uk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX25hbWVzcGFjZSBi biBPTiBibi5vaWQ9Yy5yZWxuYW1lc3BhY2UKK1dIRVJFCisgICAgYm4ubnNw bmFtZSA9IHt7IGJhc2Vuc3B8cXRMaXRlcmFsIH19CisgICAgQU5EIGMucmVs bmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKKworeyUgZWxpZiBmb2lkICV9 CitTRUxFQ1QKKyAgICBjLnJlbG5hbWVzcGFjZSBhcyBzY2lkCitGUk9NCisg ICAgcGdfY2xhc3MgYworV0hFUkUKKyAgICBjLm9pZCA9IHt7Zm9pZH19Ojpv aWQ7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjVfcGx1cy9nZXRfdGFibGVfY29sdW1ucy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuNV9wbHVzL2dldF90YWJsZV9jb2x1bW5zLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4MmRiCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfdGFibGVfY29sdW1u cy5zcWwKQEAgLTAsMCArMSwxNCBAQAoreyUgaWYgYXR0cmVsaWQgICV9CitT RUxFQ1QKKyAgICBhLmF0dG5hbWUsIGZvcm1hdF90eXBlKGEuYXR0dHlwaWQs IE5VTEwpIEFTIGRhdGF0eXBlLAorICAgIHF1b3RlX2lkZW50KG4ubnNwbmFt ZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBhcyBpbmhlcml0ZWRm cm9tLAorICAgIGMub2lkIGFzIGluaGVyaXRlZGlkCitGUk9NCisgICAgcGdf Y2xhc3MgYworSk9JTgorICAgIHBnX25hbWVzcGFjZSBuIE9OIGMucmVsbmFt ZXNwYWNlPW4ub2lkCitKT0lOCisgICAgcGdfYXR0cmlidXRlIGEgT04gYS5h dHRyZWxpZCA9IGMub2lkIEFORCBOT1QgYS5hdHRpc2Ryb3BwZWQgQU5EIGEu YXR0bnVtPjAKK1dIRVJFCisgICAgYy5vaWQgPSB7e2F0dHJlbGlkfX06Ok9J RAoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvZ2V0X3RhYmxlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L2dldF90YWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjgzNDQ1YTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuNV9wbHVzL2dldF90YWJsZXMuc3FsCkBAIC0wLDAgKzEsMjIgQEAK K3slIGlmIGF0dHJlbGlkICAlfQorU0VMRUNUCisgICAgYXJyYXlfYWdnKHF1 b3RlX2lkZW50KG4ubnNwbmFtZSkgfHwgJy4nIHx8IHF1b3RlX2lkZW50KGMu cmVsbmFtZSkpIGFzIGluaGVyaXRzCitGUk9NCisgICAgcGdfY2xhc3MgYywg cGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2U9bi5v aWQgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAnZicpCisgICAgQU5EIGMub2lk IGluIHt7YXR0cmVsaWR9fTsKKworeyUgZWxzZSAlfQorU0VMRUNUCisgICAg Yy5vaWQgQVMgaWQsIHF1b3RlX2lkZW50KG4ubnNwbmFtZSkgfHwgJy4nIHx8 IHF1b3RlX2lkZW50KGMucmVsbmFtZSkgYXMgdGV4dAorRlJPTQorICAgIHBn X2NsYXNzIGMsIHBnX25hbWVzcGFjZSBuCitXSEVSRQorICAgIGMucmVsbmFt ZXNwYWNlPW4ub2lkIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ2YnKQoreyUg aWYgZm9pZCAlfQorICAgIEFORCBjLm9pZCA8PiB7e2ZvaWR9fTo6b2lkCit7 JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBuLm5zcG5hbWUsIGMucmVsbmFt ZTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku NV9wbHVzL25vZGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9ub2Rl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzcz MWM1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1 cy9ub2RlLnNxbApAQCAtMCwwICsxLDE0IEBACitTRUxFQ1QKKyAgICBjLm9p ZCwgYy5yZWxuYW1lIEFTIG5hbWUsIHBnX2dldF91c2VyYnlpZChyZWxvd25l cikgQVMgb3duZXIsCisgICAgZnRvcHRpb25zLCBuc3BuYW1lIGFzIGJhc2Vu c3AsIGRlc2NyaXB0aW9uCitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgor ICAgIHBnX2ZvcmVpZ25fdGFibGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNw Lm9pZD1jLnJlbG5hbWVzcGFjZSkKK0xFRlQgT1VURVIgSk9JTgorICAgIHBn X2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVz LmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBj LnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK09SREVSIEJZIGMucmVs bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvcHJv cGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL3Byb3BlcnRp ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5 NzZhMDcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9w bHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzEgQEAKK1NFTEVDVAor ICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgYy5yZWxhY2wsIHBnX2dl dF91c2VyYnlpZChyZWxvd25lcikgQVMgb3duZXIsCisgICAgZnRvcHRpb25z LCBzcnZuYW1lIEFTIGZ0c3J2bmFtZSwgZGVzY3JpcHRpb24sIG5zcG5hbWUg QVMgYmFzZW5zcCwKKyAgICAoU0VMRUNUCisgICAgICAgIGFycmF5X2FnZyhw cm92aWRlciB8fCAnPScgfHwgbGFiZWwpCisgICAgRlJPTQorICAgICAgICBw Z19zaHNlY2xhYmVsIHNsMQorICAgIFdIRVJFCisgICAgICAgIHNsMS5vYmpv aWQ9Yy5vaWQpIEFTIHNlY2xhYmVscworICAgIHslIGlmIGZvaWQgJX0sCisg ICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2coaS5pbmhwYXJlbnQpIEZS T00gcGdfaW5oZXJpdHMgaQorICAgIFdIRVJFCisgICAgICAgIGkuaW5ocmVs aWQgPSB7e2ZvaWR9fTo6b2lkIEdST1VQIEJZIGkuaW5ocmVsaWQpIEFTIGlu aGVyaXRzCisgICAgeyUgZW5kaWYgJX0KK0ZST00KKyAgICBwZ19jbGFzcyBj CitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBjLm9pZD1mdC5m dHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19mb3JlaWduX3NlcnZl ciBmcyBPTiBmdC5mdHNlcnZlcj1mcy5vaWQKK0xFRlQgT1VURVIgSk9JTgor ICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBB TkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorTEVGVCBP VVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1j LnJlbG5hbWVzcGFjZSkKK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7 e3NjaWR9fTo6b2lkCisgICAgeyUgaWYgZm9pZCAlfQorICAgIEFORCBjLm9p ZCA9IHt7Zm9pZH19OjpvaWQKKyAgICB7JSBlbmRpZiAlfQorT1JERVIgQlkg Yy5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1 cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy91cGRhdGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYjU0 YjMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxNjIgQEAKK3slIGltcG9ydCAnbWFj cm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBh cyBQUklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0g b19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfXslIGlmIGRhdGEu bmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0YS5uYW1lKSB9 fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9 fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBlbmRpZiAlfXsl IGVuZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIEZPUkVJ R04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorICAgIE9XTkVSIFRPIHt7IGRhdGEub3duZXIgfX07Cit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3IgYyBpbiBkYXRh LmNvbHVtbnMuZGVsZXRlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBE Uk9QIENPTFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX07Cit7JSBl bmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuYWRkZWQgJX0K K3slIGlmIChub3QgYy5pbmhlcml0ZWRmcm9tIG9yIGMuaW5oZXJpdGVkZnJv bSA9PScnIG9yICBjLmluaGVyaXRlZGZyb20gPT0gTm9uZSBvciAgYy5pbmhl cml0ZWRmcm9tID09ICdOb25lJyApICV9CisKK0FMVEVSIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIEFERCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19IHt7 IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17JSBpZiBjLnR5cGxl biAlfSh7e2MudHlwbGVufX17JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnBy ZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17JSBpZiBjLmlzQXJy YXlUeXBlICV9W117JSBlbmRpZiAlfQoreyUgaWYgYy5hdHRub3RudWxsICV9 IE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYgJX0KK3slIGlmIGMu dHlwZGVmYXVsdCAlfSBERUZBVUxUIHt7Yy50eXBkZWZhdWx0fX17JSBlbmRp ZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsbmFt ZX19eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yIC0lfQor eyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmNoYW5nZWQgJX0KKworQUxURVIg Rk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG5hbWUpIH19CisgICAgRFJPUCBDT0xVTU4ge3tjb25ufHF0SWRlbnQob19k YXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRuYW1lJ10pfX07CisKK0FM VEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIEFERCBDT0xVTU4ge3tjb25ufHF0SWRlbnQo Yy5hdHRuYW1lKX19IHt7IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkg fX17JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX17JSBpZiBjLnByZWNp c2lvbiAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYg JX17JSBpZiBjLmlzQXJyYXlUeXBlICV9W117JSBlbmRpZiAlfQoreyUgaWYg Yy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5k aWYgJX0KK3slIGlmIGMudHlwZGVmYXVsdCAlfSBERUZBVUxUIHt7Yy50eXBk ZWZhdWx0fX17JSBlbmRpZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xM QVRFIHt7Yy5jb2xsbmFtZX19eyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmluaGVyaXRzIGFuZCBkYXRhLmlu aGVyaXRzfGxlbmd0aCA+IDAlfQoreyUgaWYgb19kYXRhLmluaGVyaXRzID09 IE5vbmUgb3Igb19kYXRhLmluaGVyaXRzID09ICdOb25lJyAlfQoreyUgc2V0 IGluaGVyaXRzID0gJycgJX0KK3slIGVsc2UgJX0KK3slIHNldCBpbmhlcml0 cyA9IG9fZGF0YS5pbmhlcml0cyAlfQoreyUgZW5kaWYgJX0KK3slIGZvciBp IGluIGRhdGEuaW5oZXJpdHMgJX0KK3slIGlmIGkgbm90IGluIGluaGVyaXRz ICV9eyUgaWYgaSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0gSU5IRVJJVCB7e2l9 fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7 JSBlbmRpZiAlfQoreyUgaWYgb19kYXRhLmluaGVyaXRzIGFuZCAnaW5oZXJp dHMnIGluIGRhdGEgJX0KK3slIGlmIGRhdGEuaW5oZXJpdHMgPT0gTm9uZSBv ciBkYXRhLmluaGVyaXRzID09ICdOb25lJyAlfQoreyUgc2V0IGluaGVyaXRz ID0gJycgJX0KK3slIGVsc2UgJX0KK3slIHNldCBpbmhlcml0cyA9IGRhdGEu aW5oZXJpdHMgJX0KK3slIGVuZGlmICV9Cit7JSBmb3IgaSBpbiBvX2RhdGEu aW5oZXJpdHMgJX17JSBpZiBpIG5vdCBpbiBpbmhlcml0cyAlfXslIGlmIGkg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19IE5PIElOSEVSSVQge3tpfX07eyUgZW5k aWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRh LmNvbnN0cmFpbnRzLmRlbGV0ZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJM RSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19Cisg ICAgRFJPUCBDT05TVFJBSU5UIHt7Y29ubnxxdElkZW50KGMuY29ubmFtZSl9 fTsKK3slIGVuZGZvciAtJX0KK3slIGZvciBjIGluIGRhdGEuY29uc3RyYWlu dHMuYWRkZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUREIENPTlNU UkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7 IGMuY29uc3JjIH19KXslIGlmIG5vdCBjLmNvbnZhbGlkYXRlZCAlfSBOT1Qg VkFMSUR7JSBlbmRpZiAlfXslIGlmIGMuY29ubm9pbmhlcml0ICV9IE5PIElO SEVSSVR7JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZm9yIGMgaW4g ZGF0YS5jb25zdHJhaW50cy5jaGFuZ2VkICV9Cit7JSBpZiBjLmNvbnZhbGlk YXRlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBWQUxJREFURSBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19OworeyUgZW5k aWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEu ZnRvcHRpb25zICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5kZWxl dGVkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRF UiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5z cCwgbmFtZSkgfX0KKyAgICBPUFRJT05TICggRFJPUCB7e28ub3B0aW9ufX0p OworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZm9yIG8gaW4gZGF0 YS5mdG9wdGlvbnMuYWRkZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZh bHVlICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIE9QVElPTlMgKEFERCB7 e28ub3B0aW9ufX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25z LmNoYW5nZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIE9QVElPTlMgKFNFVCB7e28ub3B0aW9u fX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgc2V0IHNlY2xhYmVscyA9IGRh dGEuc2VjbGFiZWxzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3Ig ciBpbiBzZWNsYWJlbHMuZGVsZXRlZCAlfQorCit7eyBTRUNMQUJMRS5VTlNF VChjb25uLCAnRk9SRUlHTiBUQUJMRScsIG5hbWUsIHIucHJvdmlkZXIsIG9f ZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRl ZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQg JX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywg bmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJh c2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAn Y2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxs ZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAl fQorCit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBu YW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFz ZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJM RSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CitJ UyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlm IC0lfQoreyUgaWYgZGF0YS5hY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBk YXRhLmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuZGVsZXRlZCAl fQorCit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxFJywgcHJp di5ncmFudGVlLCBuYW1lLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0YS5h Y2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuYWNsLmNoYW5nZWQgJX0KKwor e3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3Jh bnRlZSwgbmFtZSwgb19kYXRhLmJhc2Vuc3ApIH19CisKK3t7IFBSSVZJTEVH RS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBwcml2 LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgb19kYXRhLmJhc2Vu c3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2Fk ZGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wu YWRkZWQgJX0KKwore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBw cml2LmdyYW50ZWUsIG5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53 aXRoX2dyYW50LCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5iYXNlbnNw ICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9f ZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29u bnxxdElkZW50KGRhdGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0K --089e0112c022e40ff905328dec3c Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --089e0112c022e40ff905328dec3c--