Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aRJYz-0007qL-R9 for pgadmin-hackers@arkaria.postgresql.org; Thu, 04 Feb 2016 13:03:10 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aRJYz-0005U8-DE for pgadmin-hackers@arkaria.postgresql.org; Thu, 04 Feb 2016 13:03:09 +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) (envelope-from ) id 1aRJYd-0005FT-5c for pgadmin-hackers@postgresql.org; Thu, 04 Feb 2016 13:02:47 +0000 Received: from mail-ig0-x22d.google.com ([2607:f8b0:4001:c05::22d]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aRJYV-0001sJ-LN for pgadmin-hackers@postgresql.org; Thu, 04 Feb 2016 13:02:46 +0000 Received: by mail-ig0-x22d.google.com with SMTP id 5so59882490igt.0 for ; Thu, 04 Feb 2016 05:02:39 -0800 (PST) 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:from:date:message-id:subject:to :cc:content-type; bh=0pQJh0BobqAv5Go+WfkxexMFrXwshRTtfQpXOIev348=; b=TO4LyNHe/zk/OpklOPbWlGvDfwv3DeqfaotfqGuF6VFTTysrV4ZxKrOTdHUmTrpkSh w+UfOxEMF7bEGs35xgO+/dH6yVKYietb8Z/uzulMF5BDjBedHRooVNSUxtNfBtle2rZl 69+o1BZ7aMYSHD/qZPfi2X1kun5neQ/+jPXJ4yzbSCh0e+rrCbwCCn6TbbrWjX7bFWlc YkGKbTp30uBjuSO1pd82eXlDu7pARv9ZBtQCZ+p8kF66ofkpmREBYW6rWNH1Jp/VZw8d xWfJfdhpHnEWkQloVVwr6+q5+hgeTffbkI9+CVh4Xqpw+LzMIpKyIbd5mgR4LQHE76ZN AAow== 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:from:date :message-id:subject:to:cc:content-type; bh=0pQJh0BobqAv5Go+WfkxexMFrXwshRTtfQpXOIev348=; b=C9A9oRk+2U0VuPQ9JW7HjID3dXj+B2o11c0jmzxHa8G2ef/4sKYplBR415MunSjeA1 JDJEQGETwGksBxJ6RLSwDmDk+k0aIgY2Q0PJtmvF/i+y5AhilKvXeIKBeC+Wvzv/oJs/ vtYY0xJvnweNHWkmNitOHO8ZtSe3ITE+iygX0DF2++DlzjRG+noOM1P7q6EyS0Y3OFUg R4yL/MNnDE02u3a1pGmu/DudaC/zpM7n9PsgB5QUoiRx1/aLLBfU4gpn7vXF1AeU0Zw/ 2J1j8nsQLNychuyYwHHuWUpb/7cDJ2BtCMmFsh/+Vr4KwagMQs28vPMRySTs7ZDoJLv3 XOqg== X-Gm-Message-State: AG10YOTNzLwemkQoD+Z0n3qCuHngFg1UZM4OV4yFYT+cG7z60LDaRSfBYYMGckAD9xfFRgCvkv/fgk1gqfS0c5sq X-Received: by 10.50.64.178 with SMTP id p18mr9511322igs.35.1454590959035; Thu, 04 Feb 2016 05:02:39 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.26.138 with HTTP; Thu, 4 Feb 2016 05:02:19 -0800 (PST) In-Reply-To: References: <569759C0.90009@enterprisedb.com> <569F47F0.4070106@enterprisedb.com> From: Ashesh Vashi Date: Thu, 4 Feb 2016 18:32:19 +0530 Message-ID: Subject: Re: PATCH: Login/Group Role Node To: Murtuza Zabuawala Cc: pgadmin-hackers , Akshay Joshi Content-Type: multipart/mixed; boundary=047d7bd75c3a685a90052af1592f X-Pg-Spam-Score: -2.6 (--) 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 --047d7bd75c3a685a90052af1592f Content-Type: multipart/alternative; boundary=047d7bd75c3a685a8c052af1592d --047d7bd75c3a685a8c052af1592d Content-Type: text/plain; charset=UTF-8 Hi Team, Please ignore the previous patch. It was not a git binary-patch. Please find the updated patch, which includes both binary patch, and Security Label changes (which were disabled by default). -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* On Thu, Feb 4, 2016 at 5:37 PM, Ashesh Vashi wrote: > Hi Team, > > Please find the update patch for the Login/Group Role node. > > > On Wed, Jan 20, 2016 at 2:10 PM, Murtuza Zabuawala < > murtuza.zabuawala@enterprisedb.com> wrote: > >> Hi Ashesh, >> >> Addition to below, I also observed two more issues, >> >> - It's a bad idea to give md5 hash of current role's password in >> properties/edit mode, A malicious user can use that hash to crack another >> role's password. >> > Ok. > I am not sending the password any more to the client in edit mode. > >> >> - When you select a role and click on SQL panel (near to Statistic >> panel), we encounter exception as below, >> >> File >> "/home/murtuza/PROJECT/pgadmin4/web/pgadmin/browser/server_groups/servers/roles/__init__.py", >> line 531, in wrapped >> return f(self, **kwargs) >> File >> "/home/murtuza/PROJECT/pgadmin4/web/pgadmin/browser/server_groups/servers/roles/__init__.py", >> line 714, in sql >> data=self.request, >> AttributeError: 'RoleView' object has no attribute 'request' >> > Statistics are yet implemented for any node. > It will be taken care as a separate patch. > >> >> >> Regards, >> Murtuza >> >> >> >> On Thursday 14 January 2016 01:48 PM, Murtuza Zabuawala wrote: >> >> Hi Ashesh, >> >> Observed so far, >> >> In pgAdmin4, >> 1) We are not displaying below items in properties when compare to >> pgAdmin3 >> - Account expires >> - Member of >> >> Added. > >> >> 2) Seems life one of menu item missing when right click on role >> - Reassign/ Drop owned >> >> It'll be added as a separate module. > >> >> 3) Security label is disabled by default, Even though security label is >> disabled, we get precondition error from server saying. >> >> *"errormsg": "Security Label must be passed as an array of JSON object in the following.."* >> >> Done. > >> >> Causing: >> - When we add variables in Security tab on existing role, Sql does not >> gets generated in sql tab. >> - When we add roles role membership on existing role, Sql does not gets >> generated in sql tab and it also allow us to enter invalid role which does >> not exists. >> >> Done. > > -- > > Thanks & Regards, > > Ashesh Vashi > EnterpriseDB INDIA: Enterprise PostgreSQL Company > > > > *http://www.linkedin.com/in/asheshvashi* > > > >> >> >> Regards, >> Murtuza >> >> On Tuesday 12 January 2016 10:47 PM, Ashesh Vashi wrote: >> >> Hi Team, >> >> Please find the patch for Login/Group Role(s). >> >> Akshay/Murtuza, >> >> Can you please review it? >> >> -- >> >> Thanks & Regards, >> >> Ashesh Vashi >> EnterpriseDB INDIA: Enterprise PostgreSQL Company >> >> >> >> * >> http://www.linkedin.com/in/asheshvashi >> * >> >> >> >> > --047d7bd75c3a685a8c052af1592d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Team,

Please ignore the previous pat= ch.
It was not a git binary-patch.

Pleas= e find the updated patch, which includes both binary patch, and Security La= bel changes (which were disabled by default).


--

Thanks & Regards,

Ashesh V= ashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company

<= br>

<= a href=3D"http://www.linkedin.com/in/asheshvashi" target=3D"_blank">http= ://www.linkedin.com/in/asheshvashi


On Thu, Feb 4, 2016 at 5:37 PM, Ashesh Vashi= <ashesh.vashi@enterprisedb.com> wrote:
Hi Team,

Plea= se find the update patch for the Login/Group Role node.


On Wed, Jan 20, 2016 at 2:10 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
=20=20 =20=20=20=20 =20=20
Hi Ashesh,

Addition to below, I also observed two more issues,

- It's a bad idea to give md5 hash of current role's password in properties/edit mode, A malicious user can use that hash to crack another role's password.
Ok.
I am not sending the password any more to the client in edit mode.=C2= =A0

- When you select a role and click on SQL panel (near to Statistic panel), we encounter exception as below,

=C2=A0 File "/home/murtuza/PROJECT/pgadmin4/web/pgadmin/browser/server_group= s/servers/roles/__init__.py", line 531, in wrapped
=C2=A0=C2=A0=C2=A0 return f(self, **kwargs)
=C2=A0 File "/home/murtuza/PROJECT/pgadmin4/web/pgadmin/browser/server_group= s/servers/roles/__init__.py", line 714, in sql
=C2=A0=C2=A0=C2=A0 data=3Dself.request,
AttributeError: 'RoleView' object has no attribute 'reque= st'
Statistics are yet implem= ented for any node.
It will be taken care as a separate patch.=C2= =A0


Regards,
Murtuza



On Thursday 14 January 2016 01:48 PM, Murtuza Zabuawala wrote:
=20=20=20=20=20=20 Hi Ashesh,

Observed so far,

In pgAdmin4,
1) We are not displaying below items in properties when compare to pgAdmin3
- Account expires
- Member of
Added.=C2=A0

2) Seems life one of menu item missing when right click on role
- Reassign/ Drop owned
It'll be added as a separate module.=C2=A0

3) Security label is disabled by default, Even though security label is disabled, we get precondition error from server saying.
"errormsg": "Security Label must be pass=
ed as an array of JSON object in the following.."
Done.=C2=A0
=

Causing:
- When we add variables in Security tab on existing role, Sql does not gets generated in sql tab.
- When we add roles role membership on existing role,=C2=A0 Sql does not gets generated in sql tab and it also allow us to enter invalid role which does not exists.
Done.

<= div>

--

Thanks & Regards,

Ashesh Vashi<= /span>
Ent= erpriseDB INDIA:=C2=A0Enterprise PostgreSQL Company


http://www.linkedin.com/in/asheshvashi

=C2=A0


Regards,
Murtuza

On Tuesday 12 January 2016 10:47 PM, Ashesh Vashi wrote:
Hi Team,

Please find the patch for Login/Group Role(s).

Akshay/Murtuza,

Can you please review it?

--

Thanks & Regards,

Ashesh Vashi
Enterpris= eDB INDIA: Enterprise PostgreSQL Company


http://www.linkedin.com/in/asheshvashi<= /i>





--047d7bd75c3a685a8c052af1592d-- --047d7bd75c3a685a90052af1592f Content-Type: application/octet-stream; name="role_v4.patch" Content-Disposition: attachment; filename="role_v4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik89vtj11 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvX19pbml0X18ucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMwZGM0OAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs OTAyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0 LCBjdXJyZW50X2FwcCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2VfcmVzcG9u c2UgYXMgYWpheF9yZXNwb25zZSwgcHJlY29uZGl0aW9uX3JlcXVpcmVkLCBc CisgICAgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBmb3JiaWRkZW4sIFwKKyAg ICBub3RfaW1wbGVtZW50ZWQsIHN1Y2Nlc3NfcmV0dXJuCitmcm9tIHBnYWRt aW4uYnJvd3Nlci51dGlscyBpbXBvcnQgTm9kZVZpZXcKK2Zyb20gcGdhZG1p bi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9k dWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMgYXMg c2cKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2 ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgoraW1w b3J0IHJlCitpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZnVuY3Rvb2xzIGltcG9y dCB3cmFwcworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCisKK2NsYXNz IFJvbGVNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgorICAgIE5PREVf VFlQRSA9ICdyb2xlJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBfKCJMb2dp bi9Hcm91cCBSb2xlcyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy Z3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQor ICAgICAgICBzZWxmLm1heF92ZXIgPSBOb25lCisKKyAgICAgICAgc3VwZXIo Um9sZU1vZHVsZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQor CisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCk6CisgICAgICAg ICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisg ICAgICAgICIiIgorCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJv d3Nlcl9jb2xsZWN0aW9uX25vZGUoc2lkKQorCisgICAgQHByb3BlcnR5Cisg ICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2VydmVyLCB3aGVuIGFu eSBvZiB0aGUgc2VydmVyLWdyb3VwIG5vZGUgaXMKKyAgICAgICAgaW5pdGlh bGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2cuU2VydmVy R3JvdXBNb2R1bGUuTk9ERV9UWVBFCisKKyAgICBAcHJvcGVydHkKKyAgICBk ZWYgY3Nzc25pcHBldHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBS ZXR1cm5zIGEgc25pcHBldCBvZiBjc3MgdG8gaW5jbHVkZSBpbiB0aGUgcGFn ZQorICAgICAgICAiIiIKKyAgICAgICAgc25pcHBldHMgPSBbCisgICAgICAg ICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAg ICAiYnJvd3Nlci9jc3MvY29sbGVjdGlvbi5jc3MiLAorICAgICAgICAgICAg ICAgICAgICBub2RlX3R5cGU9c2VsZi5ub2RlX3R5cGUKKyAgICAgICAgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo InJvbGUvY3NzL3JvbGUuY3NzIildCisKKyAgICAgICAgZm9yIHN1Ym1vZHVs ZSBpbiBzZWxmLnN1Ym1vZHVsZXM6CisgICAgICAgICAgICBzbmlwcGV0cy5l eHRlbmQoc3VibW9kdWxlLmNzc3NuaXBwZXRzKQorCisgICAgICAgIHJldHVy biBzbmlwcGV0cworCisKK2JsdWVwcmludCA9IFJvbGVNb2R1bGUoX19uYW1l X18pCisKKworY2xhc3MgUm9sZVZpZXcoTm9kZVZpZXcpOgorICAgIG5vZGVf dHlwZSA9ICdyb2xlJworCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9CisgICAgICAgICAgICBd CisgICAgaWRzID0gWworICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdyaWQnfQorICAgICAgICAgICAgXQorCisgICAgb3BlcmF0aW9ucyA9 IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQn OiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZHJvcCcsICdwdXQnOiAndXBk YXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAn Y3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0 JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwn OiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6 ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdkZXBlbmRl bmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2Rl cGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAn Y2hpbGRyZW4nOiBbeydnZXQnOiAnY2hpbGRyZW4nfV0sCisgICAgICAgICdt b2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisg ICAgICAgICd2b3B0cyc6IFt7fSwgeydnZXQnOiAndm9wdGlvbnMnfV0sCisg ICAgICAgICd2YXJpYWJsZXMnOiBbeydnZXQnOiAndmFyaWFibGVzJ31dLAor ICAgICAgICB9KQorCisgICAgZGVmIHZhbGlkYXRlX3JlcXVlc3QoZik6Cisg ICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3JhcChzZWxmLCAqKmt3 YXJncyk6CisKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgICAg ICBpZiByZXF1ZXN0LmRhdGE6CisgICAgICAgICAgICAgICAgZGF0YSA9IGpz b24ubG9hZHMocmVxdWVzdC5kYXRhKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBkYXRhID0gZGljdCgpCisgICAgICAgICAgICAgICAg cmVxID0gcmVxdWVzdC5hcmdzIG9yIHJlcXVlc3QuZm9ybQorCisgICAgICAg ICAgICAgICAgZm9yIGtleSBpbiByZXE6CisKKyAgICAgICAgICAgICAgICAg ICAgdmFsID0gcmVxW2tleV0KKyAgICAgICAgICAgICAgICAgICAgaWYga2V5 IGluIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3JvbGNhbmxv Z2luJywgdSdyb2xzdXBlcicsIHUncm9sY3JlYXRlZGInLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHUncm9sY3JlYXRlcm9sZScsIHUncm9saW5o ZXJpdCcsIHUncm9scmVwbGljYXRpb24nLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUncm9sY2F0dXBkYXRlJywgdSd2YXJpYWJsZXMnLCB1J3Jv bG1lbWJlcnNoaXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUn c2VjbGFiZWxzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF06Cisg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBqc29uLmxvYWRz KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbAorCisgICAgICAgICAgICBp ZiB1J3JpZCcgbm90IGluIGt3YXJncyBvciBrd2FyZ3NbJ3JpZCddID09IC0x OgorICAgICAgICAgICAgICAgIGlmIHUncm9sbmFtZScgbm90IGluIGRhdGE6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVx dWlyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTmFtZSBp cyBub3QgcHJvdmlkZWQhIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIGlmIHUncm9sY29ubmxpbWl0JyBpbiBkYXRh OgorICAgICAgICAgICAgICAgIGlmIGRhdGFbdSdyb2xjb25ubGltaXQnXSBp cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVt1J3JvbGNv bm5saW1pdCddID0gaW50KGRhdGFbdSdyb2xjb25ubGltaXQnXSkKKyAgICAg ICAgICAgICAgICAgICAgaWYgdHlwZShkYXRhW3Uncm9sY29ubmxpbWl0J10p ICE9IGludCBvciBkYXRhW3Uncm9sY29ubmxpbWl0J10gPCAtMToKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWly ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvbm5l Y3Rpb24gbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlIG9yIGVxdWFs cyB0byAtMSEiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgICAgIGlmIHUncm9sbWVtYmVyc2hpcCcgaW4gZGF0YToK KyAgICAgICAgICAgICAgICBpZiB1J3JpZCcgbm90IGluIGt3YXJncyBvciBr d2FyZ3NbJ3JpZCddID09IC0xOgorICAgICAgICAgICAgICAgICAgICBtc2cg PSBfKCIiIgorUm9sZSBtZW1iZXJzaGlwIGluZm9ybWF0aW9uIG11c3QgYmUg cGFzc2VkIGFzIGFuIGFycmF5IG9mIEpTT04gb2JqZWN0IGluIHRoZQorZm9s bG93aW5nIGZvcm1hdDoKKworcm9sbWVtYmVyc2hpcDpbeworICAgIHJvbGU6 IFtyb2xlbmFtZV0sCisgICAgYWRtaW46IFRydWUvRmFsc2UKKyAgICB9LAor ICAgIC4uLgorXSIiIikKKyAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShk YXRhW3Uncm9sbWVtYmVyc2hpcCddKSAhPSBsaXN0OgorICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZChtc2cp CisKKyAgICAgICAgICAgICAgICAgICAgZGF0YVt1J21lbWJlcnMnXSA9IFtd CisgICAgICAgICAgICAgICAgICAgIGRhdGFbdSdhZG1pbnMnXSA9IFtdCisK KyAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gZGF0YVt1J3JvbG1lbWJl cnNoaXAnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUocikg IT0gZGljdCBvciB1J3JvbGUnIG5vdCBpbiByIG9yIHUnYWRtaW4nIG5vdCBp biByOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVj b25kaXRpb25fcmVxdWlyZWQobXNnKQorICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByW3Un YWRtaW4nXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YVt1J2FkbWlucyddLmFwcGVuZChyW3Uncm9sZSddKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFbdSdtZW1iZXJzJ10uYXBwZW5kKHJbdSdyb2xlJ10p CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg bXNnID0gXygiIiIKK1JvbGUgbWVtYmVyc2hpcCBpbmZvcm1hdGlvbiBtdXN0 IGJlIHBhc3NlZCBhIHN0cmluZyByZXByZXNlbnRpbmcgYW4gYXJyYXkgb2YK K0pTT04gb2JqZWN0IGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ogorcm9sbWVt YmVyc2hpcDp7CisgICAgJ2FkZGVkJzogW3sKKyAgICAgICAgcm9sZTogW3Jv bGVuYW1lXSwKKyAgICAgICAgYWRtaW46IFRydWUvRmFsc2UKKyAgICAgICAg fSwKKyAgICAgICAgLi4uCisgICAgICAgIF0sCisgICAgJ2RlbGV0ZWQnOiBb eworICAgICAgICByb2xlOiBbcm9sZW5hbWVdLAorICAgICAgICBhZG1pbjog VHJ1ZS9GYWxzZQorICAgICAgICB9LAorICAgICAgICAuLi4KKyAgICAgICAg XSwKKyAgICAndXBkYXRlZCc6IFt7CisgICAgICAgIHJvbGU6IFtyb2xlbmFt ZV0sCisgICAgICAgIGFkbWluOiBUcnVlL0ZhbHNlCisgICAgICAgIH0sCisg ICAgICAgIC4uLgorICAgICAgICBdCisiIiIpCisgICAgICAgICAgICAgICAg ICAgIGlmIHR5cGUoZGF0YVt1J3JvbG1lbWJlcnNoaXAnXSkgIT0gZGljdDoK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQobXNnKQorCisgICAgICAgICAgICAgICAgICAgIGRhdGFbdSdt ZW1iZXJzJ10gPSBbXQorICAgICAgICAgICAgICAgICAgICBkYXRhW3UnYWRt aW5zJ10gPSBbXQorICAgICAgICAgICAgICAgICAgICBkYXRhW3UncmV2b2tl ZF9hZG1pbnMnXSA9IFtdCisgICAgICAgICAgICAgICAgICAgIGRhdGFbdSdy ZXZva2VkJ10gPSBbXQorCisgICAgICAgICAgICAgICAgICAgIGlmIHUnYWRk ZWQnIGluIGRhdGFbdSdyb2xtZW1iZXJzaGlwJ106CisgICAgICAgICAgICAg ICAgICAgICAgICByb2xlcyA9IChkYXRhW3Uncm9sbWVtYmVyc2hpcCddKVt1 J2FkZGVkJ10KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShy b2xlcykgIT0gbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1zZykKKworICAgICAgICAg ICAgICAgICAgICAgICAgZm9yIHIgaW4gcm9sZXM6CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHR5cGUocikgIT0gZGljdCBvciB1J3JvbGUn IG5vdCBpbiByIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1J2FkbWluJyBub3QgaW4gcik6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNn KQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgclt1J2FkbWlu J106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbdSdh ZG1pbnMnXS5hcHBlbmQoclt1J3JvbGUnXSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhW3UnbWVtYmVycyddLmFwcGVuZChyW3Uncm9sZSddKQorCisg ICAgICAgICAgICAgICAgICAgIGlmIHUnZGVsZXRlZCcgaW4gZGF0YVt1J3Jv bG1lbWJlcnNoaXAnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVz ID0gKGRhdGFbdSdyb2xtZW1iZXJzaGlwJ10pW3UnZGVsZXRlZCddCisKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUocm9sZXMpICE9IGxpc3Q6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRp dGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAgICAg IGZvciByIGluIHJvbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIHR5cGUocikgIT0gZGljdCBvciB1J3JvbGUnIG5vdCBpbiByOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKG1zZykKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFbdSdyZXZva2VkJ10uYXBwZW5kKHJbdSdyb2xlJ10pCisKKyAg ICAgICAgICAgICAgICAgICAgaWYgdSdjaGFuZ2VkJyBpbiAgZGF0YVt1J3Jv bG1lbWJlcnNoaXAnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVz ID0gKGRhdGFbdSdyb2xtZW1iZXJzaGlwJ10pW3UnY2hhbmdlZCddCisKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUocm9sZXMpICE9IGxpc3Q6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRp dGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAgICAg IGZvciByIGluIHJvbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICh0eXBlKHIpICE9IGRpY3Qgb3IgdSdyb2xlJyBub3QgaW4gciBvcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdhZG1pbicg bm90IGluIHIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1zZykKKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIG5vdCByW3UnYWRtaW4nXToKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVt1J3Jldm9rZWRfYWRt aW5zJ10uYXBwZW5kKHJbdSdyb2xlJ10pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YVt1J2FkbWlucyddLmFwcGVuZChyW3Uncm9sZSddKQorCisgICAg ICAgICAgICBpZiBzZWxmLm1hbmFnZXIudmVyc2lvbiA+PSA5MDIwMDoKKyAg ICAgICAgICAgICAgICBpZiB1J3NlY2xhYmVscycgaW4gZGF0YToKKyAgICAg ICAgICAgICAgICAgICAgaWYgdSdyaWQnIG5vdCBpbiBrd2FyZ3Mgb3Iga3dh cmdzWydyaWQnXSA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1z ZyA9IF8oIiIiCitTZWN1cml0eSBMYWJlbCBtdXN0IGJlIHBhc3NlZCBhcyBh biBhcnJheSBvZiBKU09OIG9iamVjdCBpbiB0aGUgZm9sbG93aW5nCitmb3Jt YXQ6CitzZWNsYWJlbHM6W3sKKyAgICBwcm92aWRlcjogPHByb3ZpZGVyPiwK KyAgICBsYWJlbDogPGxhYmVsPgorICAgIH0sCisgICAgLi4uCitdIiIiKQor ICAgICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShkYXRhW3Unc2VjbGFi ZWxzJ10pICE9IGxpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBzIGluIGRhdGFbdSdzZWNsYWJlbHMnXToK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZShzKSAhPSBk aWN0IG9yIHUncHJvdmlkZXInIG5vdCBpbiBzIG9yCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHUnbGFiZWwnIG5vdCBpbiBzKToKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlv bl9yZXF1aXJlZChtc2cpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBfKCIiIgorU2VjdXJpdHkg TGFiZWwgbXVzdCBiZSBwYXNzZWQgYXMgYW4gYXJyYXkgb2YgSlNPTiBvYmpl Y3QgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0Ogorc2VjbGFiZWxzOnsKKyAg ICAnYWRkZWQnOiBbeworICAgICAgICBwcm92aWRlcjogPHByb3ZpZGVyPiwK KyAgICAgICAgbGFiZWw6IDxsYWJlbD4KKyAgICAgICAgfSwKKyAgICAgICAg Li4uCisgICAgICAgIF0sCisgICAgJ2RlbGV0ZWQnOiBbeworICAgICAgICBw cm92aWRlcjogPHByb3ZpZGVyPiwKKyAgICAgICAgbGFiZWw6IDxsYWJlbD4K KyAgICAgICAgfSwKKyAgICAgICAgLi4uCisgICAgICAgIF0sCisgICAgJ3Vw ZGF0ZWQnOiBbeworICAgICAgICBwcm92aWRlcjogPHByb3ZpZGVyPiwKKyAg ICAgICAgbGFiZWw6IDxsYWJlbD4KKyAgICAgICAgfSwKKyAgICAgICAgLi4u CisgICAgICAgIF0KKyIiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl Y2xhYmVscyA9IGRhdGFbdSdzZWNsYWJlbHMnXQorICAgICAgICAgICAgICAg ICAgICAgICAgaWYgdHlwZShzZWNsYWJlbHMpICE9IGRpY3Q6CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1 aXJlZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHUnYWRk ZWQnIGluIHNlY2xhYmVsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZXdfc2VjbGFiZWxzID0gc2VjbGFiZWxzW3UnYWRkZWQnXQorCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKG5ld19zZWNsYWJl bHMpICE9IGxpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gbmV3X3NlY2xhYmVsczoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUocykg IT0gZGljdCBvciB1J3Byb3ZpZGVyJyBub3QgaW4gcyBvcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnbGFiZWwnIG5vdCBp biBzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAgICAgICAg ICAgICAgICAgICAgICBpZiB1J2RlbGV0ZWQnIGluIHNlY2xhYmVsczoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkX3NlY2xhYmVscyA9 IHNlY2xhYmVsc1t1J2RlbGV0ZWQnXQorCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgdHlwZShyZW1vdmVkX3NlY2xhYmVscykgIT0gbGlzdDoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNv bmRpdGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgcyBpbiByZW1vdmVkX3NlY2xhYmVsczoKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUocykgIT0gZGljdCBv ciB1J3Byb3ZpZGVyJyBub3QgaW4gcyk6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVk KG1zZykKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdSdjaGFuZ2Vk JyBpbiBzZWNsYWJlbHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhbmdlZF9zZWNsYWJlbHMgPSBzZWNsYWJlbHNbdSdkZWxldGVkJ10KKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoY2hhbmdlZF9z ZWNsYWJlbHMpICE9IGxpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gY2hhbmdlZF9z ZWNsYWJlbHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm ICh0eXBlKHMpICE9IGRpY3Qgb3IgdSdwcm92aWRlcicgbm90IGluIHMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdSds YWJlbCcgbm90IGluIHMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZChtc2cpCisK KyAgICAgICAgICAgIGlmIHUndmFyaWFibGVzJyBpbiBkYXRhOgorICAgICAg ICAgICAgICAgIGlmIHUncmlkJyBub3QgaW4ga3dhcmdzIG9yIGt3YXJnc1sn cmlkJ10gPT0gLTE6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IF8oIiIi CitDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMvdmFyaWFibGVzIG11c3QgYmUg cGFzc2VkIGFzIGFuIGFycmF5IG9mIEpTT04gb2JqZWN0IGluCit0aGUgZm9s bG93aW5nIGZvcm1hdCAoY3JlYXRlIG1vZGUpOgordmFyaWFibGVzOlt7Cisg ICAgZGF0YWJhc2U6IDxkYXRhYmFzZT4gb3IgbnVsbCwKKyAgICBuYW1lOiA8 Y29uZmlndXJhdGlvbj4sCisgICAgdmFsdWU6IDx2YWx1ZT4KKyAgICB9LAor ICAgIC4uLgorXSIiIikKKyAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShk YXRhW3UndmFyaWFibGVzJ10pICE9IGxpc3Q6CisgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1zZykKKwor ICAgICAgICAgICAgICAgICAgICBmb3IgciBpbiBkYXRhW3UndmFyaWFibGVz J106CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZShyKSAhPSBk aWN0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnbmFt ZScgbm90IGluIHIgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdSd2YWx1ZScgbm90IGluIHIpOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorICAg ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9 IF8oIiIiCitDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMvdmFyaWFibGVzIG11 c3QgYmUgcGFzc2VkIGFzIGFuIGFycmF5IG9mIEpTT04gb2JqZWN0IGluCit0 aGUgZm9sbG93aW5nIGZvcm1hdCAodXBkYXRlIG1vZGUpOgorcm9sbWVtYmVy c2hpcDp7CisgICAgJ2FkZGVkJzogW3sKKyAgICAgICAgZGF0YWJhc2U6IDxk YXRhYmFzZT4gb3IgbnVsbCwKKyAgICAgICAgbmFtZTogPGNvbmZpZ3VyYXRp b24+LAorICAgICAgICB2YWx1ZTogPHZhbHVlPgorICAgICAgICB9LAorICAg ICAgICAuLi4KKyAgICAgICAgXSwKKyAgICAnZGVsZXRlZCc6IFt7CisgICAg ICAgIGRhdGFiYXNlOiA8ZGF0YWJhc2U+IG9yIG51bGwsCisgICAgICAgIG5h bWU6IDxjb25maWd1cmF0aW9uPiwKKyAgICAgICAgdmFsdWU6IDx2YWx1ZT4K KyAgICAgICAgfSwKKyAgICAgICAgLi4uCisgICAgICAgIF0sCisgICAgJ3Vw ZGF0ZWQnOiBbeworICAgICAgICBkYXRhYmFzZTogPGRhdGFiYXNlPiBvciBu dWxsLAorICAgICAgICBuYW1lOiA8Y29uZmlndXJhdGlvbj4sCisgICAgICAg IHZhbHVlOiA8dmFsdWU+CisgICAgICAgIH0sCisgICAgICAgIC4uLgorICAg ICAgICBdCisiIiIpCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9 IGRhdGFbdSd2YXJpYWJsZXMnXQorICAgICAgICAgICAgICAgICAgICBpZiB0 eXBlKHZhcmlhYmxlcykgIT0gZGljdDoKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAg ICAgICAgICAgICAgICAgIGlmIHUnYWRkZWQnIGluIHZhcmlhYmxlczoKKyAg ICAgICAgICAgICAgICAgICAgICAgIG5ld192YXJzID0gdmFyaWFibGVzW3Un YWRkZWQnXQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKG5l d192YXJzKSAhPSBsaXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgdiBpbiBuZXdfdmFyczoKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSh2KSAhPSBkaWN0IG9yIHUn bmFtZScgbm90IGluIHYgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUndmFsdWUnIG5vdCBpbiB2KToKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJl ZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdSdkZWxldGVkJyBp biB2YXJpYWJsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVf dmFycyA9IHZhcmlhYmxlc1t1J2RlbGV0ZWQnXQorCisgICAgICAgICAgICAg ICAgICAgICAgICBpZiB0eXBlKGRlbGV0ZV92YXJzKSAhPSBsaXN0OgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQobXNnKQorCisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig diBpbiBkZWxldGVfdmFyczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiB0eXBlKHYpICE9IGRpY3Qgb3IgdSduYW1lJyBub3QgaW4gdjoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRp dGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAgaWYg dSdjaGFuZ2VkJyBpbiAgdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAg ICAgICAgbmV3X3ZhcnMgPSB2YXJpYWJsZXNbdSdjaGFuZ2VkJ10KKworICAg ICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShuZXdfdmFycykgIT0gbGlz dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29u ZGl0aW9uX3JlcXVpcmVkKG1zZykKKworICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIHYgaW4gbmV3X3ZhcnM6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHR5cGUodikgIT0gZGljdCBvciB1J25hbWUnIG5vdCBpbiB2 IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3Zh bHVlJyBub3QgaW4gdik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAg ICAgICAgICBzZWxmLnJlcXVlc3QgPSBkYXRhCisKKyAgICAgICAgICAgIHJl dHVybiBmKHNlbGYsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gd3JhcAor CisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihhY3Rpb249Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZl IGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzIHRoZSBzdGF0dXMK KyAgICAgICAgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHRoZSBt YWludGFpbmFuY2UgZGF0YWJhc2Ugb2YgdGhlIHNlcnZlciwKKyAgICAgICAg YmVmb3JlZXhlY3V0aW5nIHJlc3Qgb2YgdGhlIG9wZXJhdGlvbiBmb3IgdGhl IHdyYXBwZWQgZnVuY3Rpb24uIEl0IHdpbGwKKyAgICAgICAgYWxzbyBhdHRh Y2ggbWFuYWdlciwgY29ubiAobWFpbnRlbmFuY2UgY29ubmVjdGlvbiBmb3Ig dGhlIHNlcnZlcikgYXMKKyAgICAgICAgcHJvcGVydGllcyBvZiB0aGUgaW5z dGFuY2UuCisgICAgICAgICIiIgorICAgICAgICBkZWYgd3JhcChmKToKKyAg ICAgICAgICAgIEB3cmFwcyhmKQorICAgICAgICAgICAgZGVmIHdyYXBwZWQo c2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHNlbGYubWFuYWdl ciA9IGdldF9kcml2ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBQR19E RUZBVUxUX0RSSVZFUgorICAgICAgICAgICAgICAgICAgICAgICAgKS5jb25u ZWN0aW9uX21hbmFnZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGt3YXJnc1snc2lkJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFu YWdlci5jb25uZWN0aW9uKCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBz ZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXygiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBi ZWVuIGxvc3QhIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisK KyAgICAgICAgICAgICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgor CisgICAgICAgICAgICAgICAgc2VsZi5zcWxfcGF0aCA9ICdyb2xlL3NxbC97 MH0vJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICdwb3N0OV80JyBp ZiB2ZXIgPj0gOTA1MDAgZWxzZSBcCisgICAgICAgICAgICAgICAgICAgICdw b3N0OV8xJyBpZiB2ZXIgPj0gOTAyMDAgZWxzZSBcCisgICAgICAgICAgICAg ICAgICAgICdwb3N0OV8wJyBpZiB2ZXIgPj0gOTAxMDAgZWxzZSBcCisgICAg ICAgICAgICAgICAgICAgICdwb3N0OF80JworICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgICAgICBzZWxmLmFsdGVyS2V5cyA9IFsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHUncm9sY2FubG9naW4nLCB1J3JvbHN1 cGVyJywgdSdyb2xjcmVhdGVkYicsCisgICAgICAgICAgICAgICAgICAgICAg ICB1J3JvbGNyZWF0ZXJvbGUnLCB1J3JvbGluaGVyaXQnLCB1J3JvbHJlcGxp Y2F0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHUncm9sY29ubmxp bWl0JywgdSdyb2x2YWxpZHVudGlsJywgdSdyb2xwYXNzd29yZCcKKyAgICAg ICAgICAgICAgICAgICAgICAgIF0gaWYgdmVyID49IDkwMjAwIGVsc2UgWwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3JvbGNhbmxvZ2lu JywgdSdyb2xzdXBlcicsIHUncm9sY3JlYXRlZGInLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1J3JvbGNyZWF0ZXJvbGUnLCB1J3JvbGlu aGVyaXQnLCB1J3JvbGNvbm5saW1pdCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUncm9sdmFsaWR1bnRpbCcsIHUncm9scGFzc3dvcmQn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAg ICAgICAgICAgIGF1dGhfdGJsPUZhbHNlCisgICAgICAgICAgICAgICAgY2hl Y2tfcGVybWlzc2lvbj1GYWxzZQorICAgICAgICAgICAgICAgIGZldGNoX25h bWU9RmFsc2UKKyAgICAgICAgICAgICAgICBmb3JiaWRkZW5fbXNnID0gTm9u ZQorCisgICAgICAgICAgICAgICAgaWYgYWN0aW9uIGluIFsnbGlzdCcsICdw cm9wZXJ0aWVzJ106CisgICAgICAgICAgICAgICAgICAgIGF1dGhfdGJsID0g VHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgYWN0aW9uIGluIFsnZHJvcCcs ICd1cGRhdGUnXToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tfcGVybWlz c2lvbiA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZmV0Y2hfbmFtZSA9 IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgYWN0aW9uID09ICdkcm9w JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmJpZGRlbl9tc2cgPSBf KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGN1cnJl bnQgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gZHJvcCB0aGUg cm9sZSEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ICAgIGZvcmJpZGRlbl9tc2cgPSBfKAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiVGhlIGN1cnJlbnQgdXNlciBkb2VzIG5vdCBoYXZlIHBl cm1pc3Npb24gdG8gdXBkYXRlIHRoZSByb2xlISIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGVsaWYgYWN0 aW9uID09ICdjcmVhdGUnOgorICAgICAgICAgICAgICAgICAgICBjaGVja19w ZXJtaXNzaW9uID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBmb3JiaWRk ZW5fbXNnID0gXygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhl IGN1cnJlbnQgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gY3Jl YXRlIHRoZSByb2xlISIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgZWxpZiAoYWN0aW9uID09ICdtc3FsJyBhbmQK KyAgICAgICAgICAgICAgICAgICAgICAgICdyaWQnIGluIGt3YXJncyBhbmQg a3dhcmdzWydyaWQnXSAhPSAtMSk6CisgICAgICAgICAgICAgICAgICAgIGZl dGNoX25hbWUgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBpZiBhdXRoX3Ri bDoKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICAgICAgICAgICAgICAi U0VMRUNUIGhhc190YWJsZV9wcml2aWxlZ2UoJ3BnX2F1dGhpZCcsICdTRUxF Q1QnKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXygKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJFcnJvciBjaGVja2luZyB0aGUgcGVybWlz c2lvbiB0byB0aGUgcGdfYXV0aGlkIVxuezB9IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQocmVzKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg IHNlbGYucm9sZV90YmwgPSAncGdfYXV0aGlkJyBpZiByZXMgZWxzZSAncGdf cm9sZXMnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5yb2xlX3RibCA9ICdwZ19yb2xlcycKKworICAgICAgICAg ICAgICAgIGlmIGNoZWNrX3Blcm1pc3Npb246CisgICAgICAgICAgICAgICAg ICAgIHVzZXIgPSBzZWxmLm1hbmFnZXIudXNlcl9pbmZvCisKKyAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHVzZXJbJ2lzX3N1cGVydXNlciddIGFuZCBu b3QgdXNlclsnY2FuX2NyZWF0ZV9yb2xlJ106CisgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoYWN0aW9uICE9ICd1cGRhdGUnIG9yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdyaWQnIGluIGt3YXJncyBhbmQga3dh cmdzWydyaWQnXSAhPSAtMSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdXNlclsnaWQnXSAhPSByaWQpOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBmb3JiaWRkZW4oZm9yYmlkZGVuX21zZykK KworICAgICAgICAgICAgICAgIGlmIGZldGNoX25hbWU6CisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRh cnJheSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiIKK1NFTEVD VAorICAgIHJvbG5hbWUsIHJvbGNhbmxvZ2luLCByb2xjYXR1cGRhdGUsIHJv bHN1cGVyCitGUk9NCisgICAgcGdfcm9sZXMKK1dIRVJFIG9pZD0lKHJpZClz OjpPSUQiIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydyaWQn OiBrd2FyZ3NbJ3JpZCddfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKKworICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFUlJPUjogZmV0 Y2hpbmcgdGhlIHJvbGUgaW5mb3JtYXRpb24hXG57MH0iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChyZXMpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg ICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZ29uZSgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXygiQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWMg cm9sZSBpbiB0aGUgZGF0YWJhc2Ugc2VydmVyISIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICBy b3cgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICAgICAgICAgIHNl bGYucm9sZSA9IHJvd1swXQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJv bENhbkxvZ2luID0gcm93WzFdCisgICAgICAgICAgICAgICAgICAgIHNlbGYu cm9sQ2F0VXBkYXRlID0gcm93WzJdCisgICAgICAgICAgICAgICAgICAgIHNl bGYucm9sU3VwZXIgPSByb3dbM10KKworICAgICAgICAgICAgICAgIHJldHVy biBmKHNlbGYsICoqa3dhcmdzKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBw ZWQKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVja19wcmVjb25k aXRpb24oYWN0aW9uPSdsaXN0JykKKyAgICBkZWYgbGlzdChzZWxmLCBnaWQs IHNpZCk6CisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoc2Vs Zi5zcWxfcGF0aCArICdwcm9wZXJ0aWVzLnNxbCcsCisgICAgICAgICAgICAg ICAgICAgIHJvbGVfdGJsPXNlbGYucm9sZV90YmwKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcigKKyAgICAgICAgICAgICAgICAgICAgXygKKyAgICAgICAgICAgICAg ICAgICAgICAgICJFcnJvciBmZXRjaGluZyB0aGUgcm9sZXMgZnJvbSB0aGUg ZGF0YWJhc2Ugc2VydmVyIVxuezB9IgorICAgICAgICAgICAgICAgICAgICAg ICAgKS5mb3JtYXQocmVzKQorICAgICAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgc2VsZi50cmFuc2Zvcm0ocmVzKQorCisgICAgICAgIHJldHVybiBh amF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sn cm93cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg ICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uKGFjdGlvbj0n bm9kZXMnKQorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCk6CisKKyAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eSgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoc2VsZi5zcWxf cGF0aCArICdub2Rlcy5zcWwnLAorICAgICAgICAgICAgICAgICAgICByb2xl X3RibD1zZWxmLnJvbGVfdGJsCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAg ICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAgICAgICAgICAi RXJyb3IgZmV0Y2hpbmcgdGhlIHJvbGVzIGluZm9ybWF0aW9uIGZyb20gdGhl IGRhdGFiYXNlIHNlcnZlciFcbnswfSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICkuZm9ybWF0KHJlcykKKyAgICAgICAgICAgICAgICAgICAgKQorCisg ICAgICAgIHJlcyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93 cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAor ICAgICAgICAgICAgICAgICAgICAgICAgcm93WydvaWQnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJvd1sncm9sbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ2ljb24tcm9sZScgaWYgcm93Wydyb2xjYW5sb2dpbidd IGVsc2UgJ2ljb24tZ3JvdXAnLAorICAgICAgICAgICAgICAgICAgICAgICAg Y2FuX2xvZ2luPXJvd1sncm9sY2FubG9naW4nXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlzX3N1cGVydXNlcj1yb3dbJ3JvbHN1cGVyJ10KKyAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24oYWN0aW9uPSdub2RlJykKKyAgICBkZWYgbm9kZShzZWxmLCBnaWQsIHNp ZCwgcmlkKToKKworICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZShzZWxmLnNxbF9wYXRoICsgJ25vZGVzLnNxbCcsCisgICAgICAgICAg ICAgICAgICAgIHJpZD1yaWQsCisgICAgICAgICAgICAgICAgICAgIHJvbGVf dGJsPXNlbGYucm9sZV90YmwKKyAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKKyAgICAg ICAgICAgICAgICAgICAgXygKKyAgICAgICAgICAgICAgICAgICAgICAgICJF cnJvciBmZXRjaGluZyB0aGUgcm9sZXMgaW5mb3JtYXRpb24gZnJvbSB0aGUg ZGF0YWJhc2Ugc2VydmVyIVxuezB9IgorICAgICAgICAgICAgICAgICAgICAg ICAgKS5mb3JtYXQocmVzKQorICAgICAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBkYXRhPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgK KyAgICAgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICByb3dbJ3JvbG5hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdpY29uLXJvbGUnIGlmIHJvd1sncm9sY2FubG9naW4n XSBlbHNlICdpY29uLWdyb3VwJywKKyAgICAgICAgICAgICAgICAgICAgICAg IGNhbl9sb2dpbj1yb3dbJ3JvbGNhbmxvZ2luJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICBpc19zdXBlcnVzZXI9cm93Wydyb2xzdXBlciddCisgICAg ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBy ZXR1cm4gZ29uZShfKCJDb3VsZG4ndCBmaW5kIHRoZSByb2xlIGluZm9ybWF0 aW9uISIpKQorCisgICAgZGVmIHRyYW5zZm9ybShzZWxmLCByc2V0KToKKyAg ICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICBy ZXMgPSBbXQorICAgICAgICAgICAgcm9sZXMgPSByb3dbJ3JvbG1lbWJlcnNo aXAnXQorICAgICAgICAgICAgcm93Wydyb2xwYXNzd29yZCddID0gJycKKyAg ICAgICAgICAgIGZvciByb2xlIGluIHJvbGVzOgorICAgICAgICAgICAgICAg IHJvbGUgPSByZS5zZWFyY2gocicoWzAxXSkoLispJywgcm9sZSkKKyAgICAg ICAgICAgICAgICByZXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAgICAg J3JvbGUnOiByb2xlLmdyb3VwKDIpLAorICAgICAgICAgICAgICAgICAgICAn YWRtaW4nOiBUcnVlIGlmIHJvbGUuZ3JvdXAoMSkgPT0gJzEnIGVsc2UgRmFs c2UKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIHJvd1sn cm9sbWVtYmVyc2hpcCddID0gcmVzCisgICAgICAgICAgICByb3dbJ3JvbHZh bGlkdW50aWwnXSA9IHJvd1sncm9sdmFsaWR1bnRpbCddLmlzb2Zvcm1hdCgp IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICByb3dbJ3JvbHZhbGlkdW50aWwnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZXRpbWUuZGF0ZSwg ZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKSBlbHNlIE5vbmUKKyAgICAgICAgICAgIGlmICdzZWNsYWJlbHMnIGlu IHJvdyBhbmQgcm93WydzZWNsYWJlbHMnXSBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICByZXMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBzZWMg aW4gcm93WydzZWNsYWJlbHMnXToKKyAgICAgICAgICAgICAgICAgICAgc2Vj ID0gcmUuc2VhcmNoKHInKFtePV0rKT0oLiokKScsIHNlYykKKyAgICAgICAg ICAgICAgICAgICAgcmVzLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAg ICAgICAncHJvdmlkZXInOiBzZWMuZ3JvdXAoMSksCisgICAgICAgICAgICAg ICAgICAgICAgICAnbGFiZWwnOiBzZWMuZ3JvdXAoMikKKyAgICAgICAgICAg ICAgICAgICAgICAgIH0pCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uKGFj dGlvbj0ncHJvcGVydGllcycpCisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwg Z2lkLCBzaWQsIHJpZCk6CisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgICAgIHJlbmRlcl90 ZW1wbGF0ZShzZWxmLnNxbF9wYXRoICsgJ3Byb3BlcnRpZXMuc3FsJywKKyAg ICAgICAgICAgICAgICAgICAgcm9sZV90Ymw9c2VsZi5yb2xlX3RibCwKKyAg ICAgICAgICAgICAgICAgICAgcmlkPXJpZAorICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KAorICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAgICAgICAg ICAgICAgIkVycm9yIGZldGNoaW5nIHRoZSByb2xlcyBmcm9tIHRoZSBkYXRh YmFzZSBzZXJ2ZXIhXG57MH0iCisgICAgICAgICAgICAgICAgICAgICAgICAp LmZvcm1hdChyZXMpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICBzZWxmLnRyYW5zZm9ybShyZXMpCisgICAgICAgIGlmIGxlbihyZXNbJ3Jv d3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBnb25lKF8oIkNvdWxk bid0IGZpbmQgdGhlIHJvbGUgaW5mb3JtYXRpb24hIikpCisKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9u c2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24oYWN0aW9uPSdkcm9wJykKKyAgICBkZWYgZHJvcChzZWxmLCBnaWQsIHNp ZCwgcmlkKToKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoCisgICAgICAgICAgICAgICAgIkRST1AgUk9MRSB7 MH07Ii5mb3JtYXQoc2VsZi5yb2xlKQorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oIkVS Uk9SOiBDb3VsZG4ndCBkcm9wIHRoZSB1c2VyIVxuezB9IikuZm9ybWF0KHJl cykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHJldHVybiBz dWNjZXNzX3JldHVybigpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uKCkK KyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCByaWQpOgorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAg ICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3FsX3BhdGggKyAnc3FsLnNxbCcsCisgICAgICAgICAgICAg ICAgICAgIHJvbGVfdGJsPXNlbGYucm9sZV90YmwKKyAgICAgICAgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICAgICBkaWN0KHsncmlkJzpyaWR9KQor ICAgICAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKKyAg ICAgICAgICAgICAgICAgICAgXygiRVJST1I6IENvdWxkbid0IGdlbmVyYXRl IHJldmVyc2VkIGVuZ2luZWVyZWQgUXVlcnkgZm9yIHRoZSByb2xlL3VzZXIh XG57MH0iKS5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICByZXMK KyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg ICAgKQorCisgICAgICAgIGlmIHJlcyBpcyBOb25lOgorICAgICAgICAgICAg cmV0dXJuIGdvbmUoCisgICAgICAgICAgICAgICAgICAgIF8oIkVSUk9SOiBD b3VsZG4ndCBnZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIFF1ZXJ5IGZv ciB0aGUgcm9sZS91c2VyISIpCisgICAgICAgICAgICAgICAgICAgICkKKwor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1yZXMpCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uKGFjdGlvbj0nY3JlYXRlJykKKyAg ICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lk LCBzaWQpOgorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICBzZWxmLnNxbF9wYXRoICsgJ2NyZWF0ZS5zcWwnLAor ICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5yZXF1ZXN0LAorICAgICAgICAg ICAgICAgIGR1bW15PUZhbHNlLAorICAgICAgICAgICAgICAgIGNvbm49c2Vs Zi5jb25uCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywg bXNnID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oIkVSUk9SOiBD b3VsZG4ndCBjcmVhdGUgdGhlIHJvbGUhXG57MH0iKS5mb3JtYXQobXNnKQor ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc3RhdHVzLCByaWQg PSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICAgICAg IlNFTEVDVCBvaWQgRlJPTSB7MH0gV0hFUkUgcm9sbmFtZSA9ICUocm9sbmFt ZSlzIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYucm9sZV90 YmwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICB7 J3JvbG5hbWUnOiBzZWxmLnJlcXVlc3RbdSdyb2xuYW1lJ119CisgICAgICAg ICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKAorICAgICAgICAg ICAgICAgICAgICBfKCJFUlJPUjogQ291bGRuJ3QgZmV0Y2ggdGhlIHJvbGUg aW5mb3JtYXRpb24hXG57MH0iKS5mb3JtYXQobXNnKQorICAgICAgICAgICAg ICAgICAgICApCisKKworICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZShzZWxmLnNxbF9wYXRoICsgJ25vZGVzLnNxbCcsCisgICAgICAgICAg ICAgICAgICAgIHJpZD1yaWQsCisgICAgICAgICAgICAgICAgICAgIHJvbGVf dGJsPXNlbGYucm9sZV90YmwKKyAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKKyAgICAg ICAgICAgICAgICAgICAgXygKKyAgICAgICAgICAgICAgICAgICAgICAgICJF cnJvciBmZXRjaGluZyB0aGUgcm9sZXMgaW5mb3JtYXRpb24gZnJvbSB0aGUg ZGF0YWJhc2Ugc2VydmVyIVxuezB9IgorICAgICAgICAgICAgICAgICAgICAg ICAgKS5mb3JtYXQocmVzKQorICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmV0 dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5i bHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAg ICAgICAgICAgICAgcmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgcm93 Wydyb2xuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbi1y b2xlJyBpZiByb3dbJ3JvbGNhbmxvZ2luJ10gZWxzZSAnaWNvbi1ncm91cCcs CisgICAgICAgICAgICAgICAgICAgICAgICBjYW5fbG9naW49cm93Wydyb2xj YW5sb2dpbiddCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICByZXR1cm4gZ29uZShfKCJDb3Vs ZG4ndCBmaW5kIHRoZSByb2xlIGluZm9ybWF0aW9uISIpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbihhY3Rpb249J3VwZGF0ZScpCisgICAgQHZhbGlk YXRlX3JlcXVlc3QKKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBy aWQpOgorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICBzZWxmLnNxbF9wYXRoICsgJ3VwZGF0ZS5zcWwnLAorICAg ICAgICAgICAgICAgIGRhdGE9c2VsZi5yZXF1ZXN0LAorICAgICAgICAgICAg ICAgIGR1bW15PUZhbHNlLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5j b25uLAorICAgICAgICAgICAgICAgIHJvbGU9c2VsZi5yb2xlLAorICAgICAg ICAgICAgICAgIHJvbENhbkxvZ2luPXNlbGYucm9sQ2FuTG9naW4sCisgICAg ICAgICAgICAgICAgcm9sQ2F0VXBkYXRlPXNlbGYucm9sQ2F0VXBkYXRlLAor ICAgICAgICAgICAgICAgIHJvbFN1cGVyPXNlbGYucm9sU3VwZXIsCisgICAg ICAgICAgICAgICAgYWx0ZXJLZXlzPXNlbGYuYWx0ZXJLZXlzCisgICAgICAg ICAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgbXNnID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCisg ICAgICAgICAgICAgICAgICAgIF8oIkVSUk9SOiBDb3VsZG4ndCBjcmVhdGUg dGhlIHJvbGUhXG57MH0iKS5mb3JtYXQobXNnKQorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo c2VsZi5zcWxfcGF0aCArICdub2Rlcy5zcWwnLAorICAgICAgICAgICAgICAg ICAgICByaWQ9cmlkLAorICAgICAgICAgICAgICAgICAgICByb2xlX3RibD1z ZWxmLnJvbGVfdGJsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAg ICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Ig ZmV0Y2hpbmcgdGhlIHJvbGVzIGluZm9ybWF0aW9uIGZyb20gdGhlIGRhdGFi YXNlIHNlcnZlciFcbnswfSIKKyAgICAgICAgICAgICAgICAgICAgICAgICku Zm9ybWF0KHJlcykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmV0dXJu IGpzb25pZnkoCisgICAgICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVl cHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAg ICAgICAgICAgcmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgcm93Wydy b2xuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbi1yb2xl JyBpZiByb3dbJ3JvbGNhbmxvZ2luJ10gZWxzZSAnaWNvbi1ncm91cCcsCisg ICAgICAgICAgICAgICAgICAgICAgICBjYW5fbG9naW49cm93Wydyb2xjYW5s b2dpbiddLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3VwZXJ1c2Vy PXJvd1sncm9sc3VwZXInXQorICAgICAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGdvbmUo XygiQ291bGRuJ3QgZmluZCB0aGUgcm9sZSBpbmZvcm1hdGlvbiEiKSkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24oYWN0aW9uPSdtc3FsJykKKyAgICBA dmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lk LCByaWQ9LTEpOgorICAgICAgICBpZiByaWQgPT0gLTE6CisgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBkYXRhPXJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3FsX3BhdGggKyAnY3JlYXRlLnNxbCcsCisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPXNlbGYucmVxdWVzdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGR1bW15PVRydWUsCisgICAgICAgICAgICAgICAg ICAgICAgICBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICBkYXRhPXJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3FsX3BhdGggKyAndXBkYXRlLnNxbCcs CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXNlbGYucmVxdWVzdCwK KyAgICAgICAgICAgICAgICAgICAgICAgIGR1bW15PVRydWUsCisgICAgICAg ICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJvbGU9c2VsZi5yb2xlLAorICAgICAgICAgICAgICAg ICAgICAgICAgcm9sQ2FuTG9naW49c2VsZi5yb2xDYW5Mb2dpbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJvbENhdFVwZGF0ZT1zZWxmLnJvbENhdFVw ZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvbFN1cGVyPXNlbGYu cm9sU3VwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcktleXM9 c2VsZi5hbHRlcktleXMKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bigpCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgcmlk KToKKyAgICAgICAgcmV0dXJuIG5vdF9pbXBsZW1lbnRlZCgpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICBkZWYgZGVwZW5kZW50cyhzZWxm LCBnaWQsIHNpZCwgcmlkKToKKyAgICAgICAgcmV0dXJuIG5vdF9pbXBsZW1l bnRlZCgpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICBkZWYg dmFyaWFibGVzKHNlbGYsIGdpZCwgc2lkLCByaWQpOgorCisgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAg ICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKHNlbGYuc3FsX3BhdGggKyAndmFy aWFibGVzLnNxbCcsCisgICAgICAgICAgICAgICAgICAgIHJpZD1yaWQKKyAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgXygKKyAg ICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBmZXRjaGluZyB0aGUgdmFy aWFibGUgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiByb2xlIVxuezB9Igor ICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQocnNldCkKKyAgICAg ICAgICAgICAgICAgICAgKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yc2V0Wydyb3dzJ10K KyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u KCkKKyAgICBkZWYgdm9wdGlvbnMoc2VsZiwgZ2lkLCBzaWQpOgorCisgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAg ICAgICAgICAgICAgICAiIiIKK1NFTEVDVAorCW5hbWUsIHZhcnR5cGUsIG1p bl92YWwsIG1heF92YWwsIGVudW12YWxzCitGUk9NCisgICAgKAorCVNFTEVD VAorCQkncm9sZSc6OnRleHQgQVMgbmFtZSwgJ3N0cmluZyc6OnRleHQgQVMg dmFydHlwZSwKKwkJTlVMTCBBUyBtaW5fdmFsLCBOVUxMIEFTIG1heF92YWws IE5VTEw6OnRleHRbXSBBUyBlbnVtdmFscworCVVOSU9OIEFMTAorCVNFTEVD VAorCQluYW1lLCB2YXJ0eXBlLCBtaW5fdmFsOjpudW1lcmljIEFTIG1pbl92 YWwsIG1heF92YWw6Om51bWVyaWMgQVMgbWF4X3ZhbCwgZW51bXZhbHMKKwlG Uk9NCisJCXBnX3NldHRpbmdzCisJV0hFUkUKKwkJY29udGV4dCBpbiAoJ3Vz ZXInLCAnc3VwZXJ1c2VyJykKKwkpIGEiIiIpCisKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAg ICAgICAgICAgICAiRXJyb3IgZmV0Y2hpbmcgdGhlIHZhcmlhYmxlIG9wdGlv bnMgZm9yIHJvbGUhXG57MH0iCisgICAgICAgICAgICAgICAgICAgICAgICAp LmZvcm1hdChyZXMpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBk YXRhPXJlc1sncm93cyddCisgICAgICAgICAgICAgICAgKQorCisKK1JvbGVW aWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy9zdGF0aWMvaW1nL2NvbGwtcm9sZS5wbmcgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy9zdGF0aWMvaW1n L2NvbGwtcm9sZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVjMjBi ZmI5ZGYzZmNmZDU2MzcxNDJiNWVkYWRlZTg4ZDE2ZjFkZApHSVQgYmluYXJ5 IHBhdGNoCmxpdGVyYWwgNDcyCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBe MHdCITYzP3d5bGBHYkt9ZHdAQGZFMDh7Vl5re3YzZVJxNClnYDt+ZQp6OU5w TDUtdW1PISF8JCkyb0lpVHhgPlBre2p+P0hAZX04di1NfDRhflpGNVYwYVk8 ZnJObzhZOFI3fWtGP2J+fiUKelBRVVclIS1XP2dQQ2ZnMDxuaE8lbnVncm0r fVgyZEgjOVZDSWRXcHcjeSEhfChQdGpOLXVLe1JaaDF7ZlJkd1RwCno9P2ZQ dzM9SXR9dUJAS0ZgXyNNKitqcmRpd0RKMHorfEsoZ0smTFI0MW87SXNJNlMr TjJJTyFTY3RqUWhYJThAVgp6SkRGXzxXT1I3Q0lFRn1FX1UqZVYpP35vTGRp ZXcmKkQwbVlpQS1IUHtgfih3KFRybm56R3ZEd1VJcT5xIztfeWoKejNUPjtL YHtZfFZxJnhFamolR35rNmhIUitoIVRIaG5heHdfJFNHSE1QTWZaTVBpKWk5 JVhoTnVsWT5nUHpGfmlCCnp8S2dLUUxXcTlYSH16ZTZyMmljP3NaSUkrUzJN MGFjdyZ9YHZIOFVSe2gzajw1d3BWUEFNJDszb15jbj9wO2lDNAp6aTI+Y0RU SCtjfWw5RWBHWUwjNCszWnhpfTM9OW8pNFVLZFMzYDJ8enRXMW9wT2laOzZP c3h6ST1EcEtmZ2B5IWgKbUtQNUEqNX45SnQ2MDhCSitRaURoNDVIIUdedzJk eDRHZjtIZWxGe3I1fUUqSmQmWDElCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9yb2xlcy9zdGF0aWMvaW1nL2dyb3VwLnBuZyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3N0 YXRpYy9pbWcvZ3JvdXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgx OWZmODEwZjQ5ZjkzN2ZjM2ZjNmQxZDg1YTAxYTJmNGJkODEyNzcKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDgwNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlh MHZwXjB3QiE2Mz93eWxgR1hsNDd8UjJFTFJeOHxSalhETjc4V0tZI3hHcXMK ekB6I317SD9Rbm12VClMdXdgVl90KDdDeUBkKldpRWBXcChqJnVpSCt6ajt6 cTtpcUAhcmNMY1F3V2p5WCtNYVhrCnpkTTxBMG5iSzE1PGlYKl4zbnhXSk01 SEZoUEd+R1J5c1o4NXJ0U2t2bnZ4T3xtTUByal91YDRXN2YmcilGZWZRNwp6 QHgtZE90REN6SUVwNlB0ZX03VV57RXxoSmUhUk4+PEpINk91TzVHWV49I1JL YEJQZzhaZnh6RShOPDhMbXdJJGwKenxFZ0tfUUlYLV9VJWp8PEBsdHdIT2hS bmJeNXg2ZCZUSWJ2VkFjUW8lTH1zO3pyVDhZPWktJSFzSVVwRTt1anJCCnok fUViZ3NIbkplV2FqXzczcyVqantRbTBndklVRHl7bW5TPko4aTxNKnI9JGVV JD5ZM3pjWTlMaW5ecjRxPFEtaQp6a04tK3RjUmU5QUgxeSUmP3dvPnhSWGNX MXAxJndGSCROamN6aVpDWSpfLXlIPU40fGhue0BPP0BffG9AfDhHczcKenpJ ZkBTbW1raFB8OUpCMCQwTHRGP3RsMWtfeCtGRU9KV1h4T0ZaOzc7czVvQ0o1 T0tPY0s2ZVExRENTUCFWaTlsCnpwRk1sX3w3KDN3NW4tbnV6dWtRTSk0RlQj QXxnWS1UWCtpcmdQeVNAJFM7X3w7bnxIZUFjd1FTQmVFRHNkd3tYcQp6JCF0 M3k8QjZ3PlZ+RTclPE9Db3tObEhwX1VePTYtQ2crWEVwJmxLWElXYU1KWjEm WHJWWHskUlIwfnN4NTlrUHcKemEwJjV8Uzw9P28rd0pXWDxRMyU+PUhvWXli NGx4NVp6c248JnEmdSQtJmtncTF1S3s4RT9LZDdfNDUzTGoxLTxyCnpObDk2 MD5zWCNkTT9eX1JHeWdRKFJgIWtXbCo3S29sUSh5LW1TJTM9LU0pQUViZ2x7 Uy0jJml5YGcjNmcwZjg1aQp6QjVTZXxVT297UGRMPUlRP3dyNndOZkFqPVN6 JjRNYDRlVkxuSW0qU0t5WnJHI0EpKjsmWVVffGM+ZTZeQCZeU2IKek1oT0lS SlFFazR7JCNxRiE0JWdpO1VQXndMJDhgSDYtPyFFNUw1e2AjPXYwbCh8Rk17 LTdrU2F8RWlYX013RnheCnptWlZ4RzdvYEZ6MXx0SlExNkBOU1Q/NH1xQkxn Y0ZWPUVJPVozOXkpMUF9PypeajR2MCRqd2o1T3NqLXdGdDd3YApjMElEe3pH QkFUXkk1ajxWNE53RHZyPm1kS0k7VnN0MENzX2I5Ukw2VAoKbGl0ZXJhbCAw CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvc3RhdGljL2ltZy9yb2xl LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3JvbGVzL3N0YXRpYy9pbWcvcm9sZS5wbmcKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uZWY1NGU4OGFkNWVkNzU0M2ZlNWNiYzI4N2VjZDk5N2E0NzAw MjZiZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTU3CnpjbWVBU0BOPyhv bEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYk1mYDJlMn5TMEZ1ZT1GRl9E dGk1fnApPlZ+bgp6VSRefHBqZE0/S1QtZGc1UmI1ciheKXJXbXl0QEQ2KXgr PHY5KHtsSDxvY1BEYnlaZDBVcEBRJj5jekhvPiVQQncKel80dmxFQDJ9b0d6 SCQ1ZXQ5UlNoWk09NW9MVHl6fGJXQldDT2lXZzg/eUBjMHc7Vm0kSzRFZjdk UFpgM01zd2ZmCno3NWgpa1QpUkNySjJ4c1NZVm41NlM2K1IlYDB+VEs9TzBj I2AqezR4JDBMdEY5KD8kNT99THclUiYwcmdpZi09ZQp6Kj4mJkpfUGR8VFRZ SUtWblgre0FfQVBmbE88MSlmRkU0Tlo8KHIjc2VfREwoYzBAJFBuV3loSS11 a3JSIylyXyoKelB9WmR6RHVHXk5FRDc9cFdeajBSQk1yI21FYnhkZDJHU20y Pn49RVM0Iz00NT5FYWs3YW9QM2tPUUN9WEI1ZTs8Cno/JmopLWhQdUF9eS0m PF8hdGVjUm88NG89P3woaXckQ0JlQHFMYVpkfEk1NldIXzdyZyV7d2pMckZ1 UjFTWDtyKQp6TjJ8NHl5dXo2bUhMMXBPaGFUOGdWJXl+MnIrdWc2cTQodl8l PzRmM3JgfDVQe1BydlI7ZnBfPnBEWnpwKjltYHAKendydTxLaFlNPEs9Qylx dXshISYhZEUodUo8SG5DMF9aQGk4fEZraVhaODErUnFyWlpmKzNLeUlSc2JF U1RIK2N9CnpsOUVgR1lMIzQrM1p4aX0zPTlvKTRVS2RTM2AyfHp0VzFvcE9p Wjs2T3N4ekk9RHBLZmdgeSFoS1A1QSo1fjlKdAplNjA4QkorUWlEaDQ1SCFH XncyZHg0R2Y7SGVsRntyNX1FKjJkPEAkRgoKbGl0ZXJhbCAwCkhjbVY/ZDAw MDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvY3NzL3JvbGUu Y3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvY3NzL3JvbGUuY3NzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNDVmZWMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9jc3Mvcm9sZS5jc3MKQEAg LTAsMCArMSwyNyBAQAorLmljb24tcm9sZSB7CisgIGJhY2tncm91bmQtaW1h Z2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1yb2xlLnN0YXRpYycsIGZpbGVu YW1lPSdpbWcvcm9sZS5wbmcnKX19JykgIWltcG9ydGFudDsKKyAgYmFja2dy b3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2Vu dGVyOworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworIGhlaWdodDogMS4z ZW07Cit9CisKKy5pY29uLWdyb3VwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTog dXJsKCd7eyB1cmxfZm9yKCdOT0RFLXJvbGUuc3RhdGljJywgZmlsZW5hbWU9 J2ltZy9ncm91cC5wbmcnKX19JykgIWltcG9ydGFudDsKKyAgYmFja2dyb3Vu ZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2VudGVy OworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2Vt OworfQorCisucGdhZG1pbi1ub2RlLXNlbGVjdCBvcHRpb25bbm9kZT0icm9s ZSJdIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdO T0RFLXJvbGUuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9yb2xlLnBuZycpfX0n KSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0 OworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDsKK30KKwor LnBnYWRtaW4tbm9kZS1zZWxlY3Qgb3B0aW9uW25vZGU9Imdyb3VwIl0gewor ICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtcm9s ZS5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL2dyb3VwLnBuZycpfX0nKSAhaW1w b3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBi YWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDsKK30KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL2pzL3JvbGUuanMgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9qcy9yb2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmQ3MTVmNWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9qcy9yb2xlLmpzCkBAIC0wLDAgKzEsNDUwIEBACitkZWZp bmUoCisgICAgWworICAgICdqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRl cnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3Nlcics CisgICAgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAnc2VsZWN0 MicsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisgICAgJ3BnYWRt aW4uYnJvd3Nlci5ub2RlLnVpJywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIu dmFyaWFibGUnCisgICAgXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4s IHBnQnJvd3NlciwgYWxlcnRpZnksIEJhY2tmb3JtKSB7CisKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcm9sZSddKSB7CisgICAgdmFyIHJvbGUg PSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtcm9sZSddID0KKyAgICAg IHBnQWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAg IG5vZGU6ICdyb2xlJywKKyAgICAgICAgdHlwZTogJ2NvbGwtcm9sZScsCisg ICAgICAgIGNvbHVtbnM6IFsKKyAgICAgICAgICAncm9sbmFtZScsICdyb2x2 YWxpZHVudGlsJywgJ3JvbGNvbm5saW1pdCcsICdyb2xjYW5sb2dpbicsCisg ICAgICAgICAgJ3JvbHN1cGVyJywgJ3JvbGNyZWF0ZXJvbGUnLCAncm9sY3Jl YXRlZGInLCAncm9sY2F0dXBkYXRlJywKKyAgICAgICAgICAncm9saW5oZXJp dCcsICdyb2xyZXBsaWNhdGlvbicKKyAgICAgICAgXQorICAgICAgfSk7Cisg IH07CisKKyAgdmFyIFNlY3VyaXR5TW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIu U2VjdXJpdHlNb2RlbCA9CisgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5TZWN1 cml0eU1vZGVsIHx8IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHByb3ZpZGVyOiBudWxsLAor ICAgICAgbGFiZWw6IG51bGwKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAg ICAgIGlkOiAncHJvdmlkZXInLCBsYWJlbDogJ3t7IF8oJ1Byb3ZpZGVyJykg fX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZmFsc2UgCisg ICAgfSx7CisgICAgICBpZDogJ2xhYmVsJywgbGFiZWw6ICd7eyBfKCdTZWN1 cml0eSBMYWJlbCcpIH19JywKKyAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJs ZWQ6IGZhbHNlCisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkg eworICAgICAgdmFyIGVyciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51 bGwsCisgICAgICAgICAgZGF0YSA9IHRoaXMudG9KU09OKCk7CisKKyAgICAg IGlmIChfLmlzVW5kZWZpbmVkKGRhdGEucHJvdmlkZXIpIHx8CisgICAgICAg IF8uaXNOdWxsKGRhdGEucHJvdmlkZXIpIHx8CisgICAgICAgIFN0cmluZyhk YXRhLnByb3ZpZGVyKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcn KSB7CisgICAgICAgIHZhciBtc2cgPSAne3sgXygnUGxlYXNlIHNwZWNpZnkg dGhlIHZhbHVlIGZvciBhbGwgdGhlIHNlY3VyaXR5IHByb3ZpZGVycy4nKSB9 fSc7CisKKwl0aGlzLmVycm9yTW9kZWwuc2V0KCdwcm92aWRlcicsIG1zZyk7 CisgICAgICAgIHJldHVybiBtc2c7CisgICAgICB9IGVsc2UgeworCXRoaXMu ZXJyb3JNb2RlbC51bnNldCgncHJvdmlkZXInKTsKKyAgICAgIH0KKworICAg ICAgaWYgKF8uaXNVbmRlZmluZWQoZGF0YS5sYWJlbCkgfHwKKyAgICAgICAg Xy5pc051bGwoZGF0YS5sYWJlbCkgfHwKKyAgICAgICAgU3RyaW5nKGRhdGEu bGFiZWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgdmFyIG1zZyA9ICd7eyBfKCdQbGVhc2Ugc3BlY2lmeSB0aGUgdmFs dWUgZm9yIGFsbCB0aGUgc2VjdXJpdHkgcHJvdmlkZXJzLicpIH19JyA7CisK Kwl0aGlzLmVycm9yTW9kZWwuc2V0KCdsYWJlbCcsIG1zZyk7CisgICAgICAg IHJldHVybiBtc2c7CisgICAgICB9IGVsc2UgeworCXRoaXMuZXJyb3JNb2Rl bC51bnNldCgnbGFiZWwnKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51 bGw7CisgICAgfQorICB9KTsKKworICB2YXIgc3dpdGNoT3B0aW9ucyA9IHsK KyAgICAnb25UZXh0JzogJ1llcycsICdvZmZUZXh0JzogJ05vJywKKyAgICAn b25Db2xvcic6ICd3YXJuaW5nJywgJ29mZkNvbG9yJzogJ3ByaW1hcnknLAor ICAgICdzaXplJzogJ3NtYWxsJworICB9OworCisgIHZhciBSb2xlTWVtYmVy c0NvbnRyb2wgPSBCYWNrZm9ybS5Db250cm9sLmV4dGVuZCh7CisgICAgZGVm YXVsdHM6IF8uZGVmYXVsdHMoCisgICAgICAgICAgICAgICAge2V4dHJhQ2xh c3NlczogWydjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiddfSwKKyAg ICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wu cHJvdG90eXBlLmRlZmF1bHRzCisgICAgICAgICAgICAgICAgKSwKKyAgICBp bml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgIEJhY2tmb3JtLk5vZGVM aXN0QnlOYW1lQ29udHJvbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOworICAgIH0sCisgICAgZm9ybWF0dGVyOiB7Cisg ICAgICBmcm9tUmF3OiBmdW5jdGlvbiAocmF3RGF0YSwgbW9kZWwpIHsKKyAg ICAgICAgdmFyIHJlcyA9IF8uaXNPYmplY3QocmF3RGF0YSkgPyByYXdEYXRh IDogSlNPTi5wYXJzZShyYXdEYXRhKTsKKworICAgICAgICByZXR1cm4gXy5w bHVjayhyZXMsICdyb2xlJyk7CisgICAgICB9LAorICAgICAgdG9SYXc6IGZ1 bmN0aW9uIChmb3JtYXR0ZWREYXRhLCBtb2RlbCkgeworICAgICAgICByZXR1 cm4gZm9ybWF0dGVkRGF0YTsKKyAgICAgIH0KKyAgICB9LAorICAgIHRlbXBs YXRlOiBfLnRlbXBsYXRlKFsKKyAgICAgICc8bGFiZWwgY2xhc3M9ImNvbnRy b2wtbGFiZWwgY29sLXhzLTEyIj48JT1sYWJlbCU+PC9sYWJlbD4nLAorICAg ICAgJzxkaXYgY2xhc3M9InBnYWRtaW4tY29udHJvbHMgY29sLXhzLTEyIj4n LAorICAgICAgJyAgPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiIHN0eWxl PSJ3aWR0aDoxMDAlOyIgY2xhc3M9InBnYWRtaW4tY29udHJvbHMgPCU9ZXh0 cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iIG5hbWU9IjwlPW5hbWUlPiIgdmFs dWU9IjwlLUpTT04uc3RyaW5naWZ5KHZhbHVlKSU+IiA8JT1kaXNhYmxlZCA/ ICJkaXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6 ICIiJT4+JywKKyAgICAgICcgICAgPCUgZm9yICh2YXIgaT0wOyBpIDwgb3B0 aW9ucy5sZW5ndGg7IGkrKykgeyAlPicsCisgICAgICAnICAgICAgPCUgdmFy IG9wdGlvbiA9IG9wdGlvbnNbaV07ICU+JywKKyAgICAgICcgICAgICA8b3B0 aW9uIHZhbHVlPTwlLW9wdGlvbi52YWx1ZSU+IGRhdGEtaWNvbj08JS1vcHRp b24uaW1hZ2UlPiA8JT12YWx1ZSAhPSBudWxsICYmIF8uaW5kZXhPZih2YWx1 ZSwgb3B0aW9uLnZhbHVlKSAhPSAtMSA/ICJzZWxlY3RlZCIgOiAiIiU+IDwl PW9wdGlvbi5kaXNhYmxlZCA/ICJkaXNhYmxlZD1cJ2Rpc2FibGVkXCciIDog IiIlPj48JS1vcHRpb24ubGFiZWwlPjwvb3B0aW9uPicsCisgICAgICAnICAg IDwlIH0gJT4nLAorICAgICAgJyAgPC9zZWxlY3Q+JywKKyAgICAgICc8L2Rp dj4nLAorICAgICAgJzxkaXYgY2xhc3M9Im5vdGUgPCU9QmFja2Zvcm0uaGVs cE1lc3NhZ2VDbGFzc05hbWUlPiBjb2wteHMtMTIiPjwvZGl2PicsCisgICAg ICBdLmpvaW4oIlxuIikpLAorICAgIGV2ZW50czogeyJjaGFuZ2Ugc2VsZWN0 IjogIm9uQ2hhbmdlIn0sCisgICAgZ2V0VmFsdWVGcm9tRE9NOiBmdW5jdGlv bigpIHsKKyAgICAgIHZhciByZXMgPSBbXTsKKworICAgICAgdGhpcy4kZWwu ZmluZCgic2VsZWN0IikuZmluZCgnOnNlbGVjdGVkJykuZWFjaChmdW5jdGlv bigpIHsKKyAgICAgICAgcmVzLnB1c2goJCh0aGlzKS5hdHRyKCd2YWx1ZScp KTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gcmVzOworICAgIH0sCisg ICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICAgIEJhY2tmb3JtLlNlbGVj dENvbnRyb2wucHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVu dHMpOworICAgICAgdmFyIGNvbGxlY3Rpb24gPSB0aGlzLm1vZGVsLmdldCh0 aGlzLmZpZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICBmb3JtYXRTdGF0 ZSA9IGZ1bmN0aW9uKG9wdCkgeworICAgICAgICAgICAgaWYgKCFvcHQuaWQp IHsKKyAgICAgICAgICAgICAgcmV0dXJuIG9wdC50ZXh0OworICAgICAgICAg ICAgfQorCisgICAgICAgICAgICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVt ZW50KS5kYXRhKCdpY29uJyk7CisKKyAgICAgICAgICAgIGlmKCFvcHRpbWFn ZSl7CisgICAgICAgICAgICAgIHJldHVybiBvcHQudGV4dDsKKyAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAkKAorICAgICAg ICAgICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNzPSJ3Y1RhYkljb24gJyAr IG9wdGltYWdlICsgJyIvPicgKyBvcHQudGV4dCArICc8L3NwYW4+JworICAg ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9 LAorICAgICAgICAgIGZvcm1hdFNlbGVjdGlvbiA9IGZ1bmN0aW9uIChvcHQp IHsKKworICAgICAgICAgICAgaWYgKCFvcHQuaWQpIHsKKyAgICAgICAgICAg ICAgcmV0dXJuIG9wdC50ZXh0OworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVtZW50KS5kYXRhKCdpY29u JyksCisgICAgICAgICAgICAgICAgZ3JhbnRVcGRhdGUgPSBmdW5jdGlvbihl dikgeworCisgICAgICAgICAgICAgICAgICBfLmVhY2goY29sbGVjdGlvbi53 aGVyZSh7cm9sZTogb3B0LmlkfSksIGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgICAgICAgICAgbS5zZXQoJ2FkbWluJywgJChldi50YXJnZXQpLmlzKCI6 Y2hlY2tlZCIpKTsKKyAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfTsK KworICAgICAgICAgICAgaWYoIW9wdGltYWdlKXsKKyAgICAgICAgICAgICAg cmV0dXJuIG9wdC50ZXh0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgdmFyIGogPSAkKCc8c3Bhbj48c3BhbiBjbGFzcz0id2NUYWJJ Y29uICcgKyBvcHRpbWFnZSArICciLz4nICsgb3B0LnRleHQgKyAnIDxzcGFu PjxpbnB1dCB0eXBlPSJjaGVja2JveCIvPjwvc3Bhbj48L3NwYW4+Jyk7CisK KyAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjaGVja2JveCBsYXp5Cisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICBfLmVhY2goY29sbGVjdGlv bi53aGVyZSh7cm9sZTogb3B0LmlkfSksIGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgICAgICAgICAgai5maW5kKCdpbnB1dCcpLnByb3AoJ2NoZWNrZWQn LCBtLmdldCgnYWRtaW4nKSk7CisgICAgICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgICAgICB9LCAyMDApOworCisgICAgICAgICAgICAgIChqLmZp bmQoJ2lucHV0JykpLm9uKCdjaGFuZ2UnLCBncmFudFVwZGF0ZSk7CisKKyAg ICAgICAgICAgICAgcmV0dXJuIGo7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfTsKKworICAgICAgdGhpcy4kZWwuZmluZCgnc2VsZWN0Jykuc2VsZWN0 Mih7CisgICAgICAgIHRlbXBsYXRlUmVzdWx0OiBmb3JtYXRTdGF0ZSwKKyAg ICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdFNlbGVjdGlvbiwKKyAg ICAgICAgbXVsdGlwbGU6IHRydWUsCisgICAgICAgIHRhZ3M6IHRydWUsCisg ICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgIHBsYWNlaG9sZGVy OiAiU2VsZWN0IG1lbWJlcnMiLAorICAgICAgICB3aWR0aDogJ3N0eWxlJwor ICAgICAgfSkub24oImNoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg JChlLnRhcmdldCkuZmluZCgnOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbigp IHsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgdGhpcy4kZWwu ZmluZCgnZGl2Lm5vdGUnKS5odG1sKCI8c3Bhbj5OT1RFOjxici8+SW4gb3Jk ZXIgdG8gZ2l2ZSBncmFudCBvcHRpb25zIHNlbGVjdCB0aGUgY2hlY2tib3gg bmV4dCB0byB0aGUgcm9sZXMuPC9zcGFuPiIpOworCisgICAgICByZXR1cm4g dGhpczsKKyAgICB9LAorICAgIG9uQ2hhbmdlOiBmdW5jdGlvbihlKSB7Cisg ICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsLAorICAgICAgICAgICRlbCA9 ICQoZS50YXJnZXQpLAorICAgICAgICAgIGF0dHJBcnIgPSB0aGlzLmZpZWxk LmdldCgibmFtZSIpLnNwbGl0KCcuJyksCisgICAgICAgICAgbmFtZSA9IGF0 dHJBcnIuc2hpZnQoKSwKKyAgICAgICAgICBwYXRoID0gYXR0ckFyci5qb2lu KCcuJyksCisgICAgICAgICAgdmFscyA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9N KCksCisgICAgICAgICAgY29sbGVjdGlvbiA9IG1vZGVsLmdldChuYW1lKSwK KyAgICAgICAgICByZW1vdmVkID0gW107CisKKyAgICAgIHRoaXMuc3RvcExp c3RlbmluZyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1lLCB0aGlzLnJl bmRlcik7CisKKyAgICAgIC8qCisgICAgICAgKiBJdGVyYXRlIHRocm91Z2gg YWxsIHRoZSB2YWx1ZXMsIGFuZCBmaW5kIG91dCBob3cgbWFueSBhcmUgYWxy ZWFkeQorICAgICAgICogcHJlc2VudCBpbiB0aGUgY29sbGVjdGlvbi4KKyAg ICAgICAqLworICAgICAgY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgdmFyIHJvbGUgPSBtLmdldCgncm9sZScpLAorICAgICAgICAg ICAgaWR4ID0gXy5pbmRleE9mKHZhbHMsIHJvbGUpOworCisgICAgICAgIGlm IChpZHggPiAtMSkgeworICAgICAgICAgIHZhbHMuc3BsaWNlKGlkeCwgMSk7 CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmVtb3ZlZC5wdXNoKHJv bGUpOworICAgICAgICB9CisgICAgICB9KTsKKworICAgICAgLyoKKyAgICAg ICAqIEFkZGluZyBuZXcgdmFsdWVzCisgICAgICAgKi8KKyAgICAgIF8uZWFj aCh2YWxzLCBmdW5jdGlvbih2KSB7CisgICAgICAgIGNvbGxlY3Rpb24uYWRk KHtyb2xlOiB2fSk7CisgICAgICB9KTsKKworICAgICAgLyoKKyAgICAgICAq IFJlbW92aW5nIHVud2FudGVkIQorICAgICAgICovCisgICAgICBfLmVhY2go cmVtb3ZlZCwgZnVuY3Rpb24odikgeworICAgICAgICBjb2xsZWN0aW9uLnJl bW92ZShjb2xsZWN0aW9uLndoZXJlKHtyb2xlOiB2fSkpOworICAgICAgfSk7 CisKKyAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwgImNoYW5nZToi ICsgbmFtZSwgdGhpcy5yZW5kZXIpOworICAgIH0KKyAgfSk7CisKKyAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ3JvbGUnXSkgeworICAgIHZhciByb2xlID0g cGdBZG1pbi5Ccm93c2VyLk5vZGVzWydyb2xlJ10gPSBwZ0FkbWluLkJyb3dz ZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6ICdzZXJ2ZXIn LAorICAgICAgdHlwZTogJ3JvbGUnLAorICAgICAgbGFiZWw6ICd7eyBfKCdM b2dpbi9Hcm91cCBSb2xlJykgfX0nLAorICAgICAgaGFzU1FMOiB0cnVlLAor ICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIG5vZGVfbGFiZWw6IGZ1bmN0 aW9uKHIpIHsKKyAgICAgICAgaWYgKCFyLmNhbl9sb2dpbikgeworICAgICAg ICAgIHJldHVybiByLmxhYmVsICsgJyhHUk9VUCknOworICAgICAgICB9Cisg ICAgICAgIHJldHVybiByLmxhYmVsOworICAgICAgfSwKKyAgICAgIG5vZGVf aW1hZ2U6IGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgcmV0dXJuIChyLmNhbl9s b2dpbiA/ICdpY29uLXJvbGUnIDogJ2ljb24tZ3JvdXAnKTsKKyAgICAgIH0s CisgICAgICB0aXRsZTogZnVuY3Rpb24oZCkgeworICAgICAgICBpZiAoIWQp IHsKKyAgICAgICAgICByZXR1cm4gdGhpcy5sYWJlbDsKKyAgICAgICAgfQor ICAgICAgICBpZiAoZC5jYW5fbG9naW4pIHsKKyAgICAgICAgICByZXR1cm4g J3t7IF8oJ0xvZ2luIFJvbGUnKSB9fScgKyAnIC0gJyArIGQubGFiZWw7Cisg ICAgICAgIH0KKyAgICAgICAgcmV0dXJuICd7eyBfKCdHcm91cCBSb2xlJykg fX0nICsgJyAtICcgKyBkLmxhYmVsOworICAgICAgfSwKKyAgICAgIEluaXQ6 IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdp c3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlh bGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5p bml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9t ZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcm9sZV9vbl9zZXJ2 ZXInLCBub2RlOiAnc2VydmVyJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0xvZ2luL0dyb3Vw IFJvbGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLXJvbGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCisgICAgICAg ICAgZW5hYmxlOiAnY2FuX2NyZWF0ZV9yb2xlJworICAgICAgICB9LHsKKyAg ICAgICAgICBuYW1lOiAnY3JlYXRlX3JvbGVfb25fcm9sZXMnLCBub2RlOiAn Y29sbC1yb2xlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHBy aW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0xvZ2luL0dyb3VwIFJvbGUuLi4n KSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXJvbGUn LCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCisgICAgICAgICAgZW5hYmxl OiAnY2FuX2NyZWF0ZV9yb2xlJworICAgICAgICB9LHsKKyAgICAgICAgICBu YW1lOiAnY3JlYXRlX3JvbGUnLCBub2RlOiAncm9sZScsIG1vZHVsZTogdGhp cywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10s IGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAg Y2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBf KCdMb2dpbi9Hcm91cCBSb2xlLi4uJykgfX0nLAorICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi1yb2xlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZSd9LAorICAgICAgICAgIGVuYWJsZTogJ2Nhbl9jcmVhdGVfcm9sZScKKyAg ICAgICAgfV0pOworICAgICAgfSwKKyAgICAgIGNhbl9jcmVhdGVfcm9sZTog ZnVuY3Rpb24obm9kZSwgaXRlbSkgeworICAgICAgICB2YXIgdHJlZURhdGEg PSB0aGlzLmdldFRyZWVOb2RlSGllcmFyY2h5KGl0ZW0pLAorICAgICAgICAg ICAgc2VydmVyID0gdHJlZURhdGFbJ3NlcnZlciddOworCisgICAgICAgIHJl dHVybiBzZXJ2ZXIuY29ubmVjdGVkICYmIHNlcnZlci51c2VyLmNhbl9jcmVh dGVfcm9sZTsKKyAgICAgIH0sCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93 c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgaWRBdHRyaWJ1dGU6 ICdvaWQnLAorICAgICAgICBkZWZhdWx0czogeworICAgICAgICAgIG9pZDog bnVsbCwKKyAgICAgICAgICByb2xuYW1lOiB1bmRlZmluZWQsCisgICAgICAg ICAgcm9sY2FubG9naW46IGZhbHNlLAorICAgICAgICAgIHJvbHBhc3N3b3Jk OiBudWxsLAorICAgICAgICAgIHJvbGNvbm5saW1pdDogLTEsCisgICAgICAg ICAgcm9sc3VwZXI6IGZhbHNlLAorICAgICAgICAgIHJvbGNyZWF0ZXJvbGU6 IGZhbHNlLAorICAgICAgICAgIHJvbGNyZWF0ZWRiOiBmYWxzZSwKKyAgICAg ICAgICByb2xpbmhlcml0OiB0cnVlLAorICAgICAgICAgIHJvbGNhdHVwZGF0 ZTogZmFsc2UsCisgICAgICAgICAgcm9scmVwbGljYXRpb246IGZhbHNlLAor ICAgICAgICAgIHJvbG1lbWJlcnNoaXA6IFtdLAorICAgICAgICAgIHJvbHZh bGlkdW50aWw6IG51bGwsCisgICAgICAgICAgc2VjbGFiZWxzOiBbXSwKKyAg ICAgICAgICB2YXJpYWJsZXM6IFtdCisgICAgICAgIH0sCisgICAgICAgIHNj aGVtYTogW3sKKyAgICAgICAgICBpZDogJ3JvbG5hbWUnLCBsYWJlbDogJ3t7 IF8oJ05hbWUnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBkaXNh YmxlZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J29pZCcsIGxhYmVsOid7eyBfKCdSb2xlIElEJykgfX0nLCBjZWxsOiAnc3Ry aW5nJywKKyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0 JywgdmlzaWJsZTogdHJ1ZSwgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdyb2xwYXNzd29yZCcsIGxhYmVsOiAne3sgXygn UGFzc3dvcmQnKSB9fScsIHR5cGU6ICdwYXNzd29yZCcsCisgICAgICAgICAg Z3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sCisgICAgICAgICAgY29udHJvbDogJ2lucHV0JywgZGVw czogWydyb2xjYW5sb2dpbiddLCByZXR5cGU6IHRydWUsCisgICAgICAgICAg Y2VsbDogJ3N0cmluZycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICB2YXIg dXNlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlci51c2VyOworCisgICAgICAg ICAgICAgIHJldHVybiAoISh1c2VyLmlzX3N1cGVydXNlciB8fCB1c2VyLmNh bl9jcmVhdGVfcm9sZSkgJiYKKyAgICAgICAgICAgICAgICAgIHVzZXIuaWQg IT0gbS5nZXQoJ29pZCcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAncm9sdmFsaWR1bnRpbCcsIGRpc2FibGVkOiAncmVhZG9u bHknLCB0eXBlOiAnZGF0ZScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLCBsYWJlbDogJ3t7IF8oJ0FjY291bnQgRXhwaXJl cycpIH19JywKKyAgICAgICAgICBjZWxsOiAnc3RyaW5nJywgbW9kZTogWydw cm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10sIHJldHlwZTogdHJ1ZSwK KyAgICAgICAgICBkZXBzOiBbJ3JvbGNhbmxvZ2luJ10sIG9wdGlvbnM6IHt9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncm9sY29ubmxpbWl0Jywg IHR5cGU6ICdpbnQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScs CisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdDb25uZWN0aW9uIExpbWl0Jykg fX0nLCBjZWxsOiAnbnVtYmVyJywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3Bl cnRpZXMnLCAnZWRpdCcsICdjcmVhdGUnXSwgZGlzYWJsZWQ6ICdyZWFkb25s eScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyb2xjYW5sb2dpbics IGxhYmVsOid7eyBfKCdDYW4gTG9naW4/JykgfX0nLCB0eXBlOiAnc3dpdGNo JywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1JvbGUgUHJpdmlsZWdlcycp IH19Jywgb3B0aW9uczogc3dpdGNoT3B0aW9ucywKKyAgICAgICAgICBkaXNh YmxlZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J3JvbHN1cGVyJywgbGFiZWw6J3t7IF8oJ1N1cGVyIFVzZXInKSB9fScsIHR5 cGU6ICdzd2l0Y2gnLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnUm9sZSBQ cml2aWxlZ2VzJykgfX0nLCBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN3aXRjaENvbnRyb2wuZXh0ZW5k KHsKKyAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgICAgICAgQmFja2Zvcm0uU3dpdGNoQ29udHJvbC5wcm90b3R5cGUub25D aGFuZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgICAgICAgICAg ICB0aGlzLm1vZGVsLnNldCgncm9sY2F0dXBkYXRlJywgdGhpcy5tb2RlbC5n ZXQoJ3JvbHN1cGVyJykpOworICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNl dCgncm9sY3JlYXRlcm9sZScsIHRoaXMubW9kZWwuZ2V0KCdyb2xzdXBlcicp KTsKKyAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXQoJ3JvbGNyZWF0ZWRi JywgdGhpcy5tb2RlbC5nZXQoJ3JvbHN1cGVyJykpOworICAgICAgICAgICAg fQorICAgICAgICAgIH0pLAorICAgICAgICAgIGRpc2FibGVkOiAncmVhZG9u bHknCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncm9sY3JlYXRlcm9s ZScsIGxhYmVsOid7eyBfKCdDYW4gQ3JlYXRlIFJvbGU/JykgfX0nLAorICAg ICAgICAgIGdyb3VwOiAne3sgXygnUm9sZSBQcml2aWxlZ2VzJykgfX0nLCB0 eXBlOiAnc3dpdGNoJywKKyAgICAgICAgICBvcHRpb25zOiBzd2l0Y2hPcHRp b25zLCBkaXNhYmxlZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnRz JykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJywKKyAgICAgICAgICBncm91cDog bnVsbCwgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10s CisgICAgICAgICAgb3B0aW9uczogc3dpdGNoT3B0aW9ucywgZGlzYWJsZWQ6 ICdyZWFkb25seScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyb2xj cmVhdGVkYicsIGxhYmVsOid7eyBfKCdDYW4gY3JlYXRlIGRhdGFiYXNlcz8n KSB9fScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSb2xlIFByaXZpbGVn ZXMnKSB9fScsIHR5cGU6ICdzd2l0Y2gnLAorICAgICAgICAgIG9wdGlvbnM6 IHN3aXRjaE9wdGlvbnMsIGRpc2FibGVkOiAncmVhZG9ubHknCisgICAgICAg IH0seworICAgICAgICAgIGlkOiAncm9sY2F0dXBkYXRlJywgbGFiZWw6J3t7 IF8oJ0NhbiB1cGRhdGUgY2F0YWxvZz8nKSB9fScsCisgICAgICAgICAgdHlw ZTogJ3N3aXRjaCcsIG1heF92ZXJzaW9uOiA5MDUwMCwgb3B0aW9uczogc3dp dGNoT3B0aW9ucywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1JvbGUgUHJp dmlsZWdlcycpIH19JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgIHJldHVybiAobS5nZXQoJ3JlYWRfb25seScpIHx8ICghbS5nZXQo J3JvbHN1cGVyJykpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAncm9saW5oZXJpdCcsIGdyb3VwOiAne3sgXygnUm9sZSBQ cml2aWxlZ2VzJykgfX0nLAorICAgICAgICAgIGxhYmVsOid7eyBfKCdJbmhl cml0IHJpZ2h0cyBmcm9tIHRoZSBwYXJlbnQgcm9sZXM/JykgfX0nLAorICAg ICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBvcHRpb25zOiBzd2l0Y2hPcHRpb25z LCBkaXNhYmxlZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3JvbHJlcGxpY2F0aW9uJywgZ3JvdXA6ICd7eyBfKCdSb2xlIFBy aXZpbGVnZXMnKSB9fScsCisgICAgICAgICAgbGFiZWw6J3t7IF8oJ0NhbiBp bml0aWF0ZSBzdHJlYW1pbmcgcmVwbGljYXRpb24gYW5kIGJhY2t1cHM/Jykg fX0nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtaW5fdmVyc2lvbjog OTAxMDAsIG9wdGlvbnM6IHN3aXRjaE9wdGlvbnMsCisgICAgICAgICAgZGlz YWJsZWQ6ICdyZWFkb25seScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdyb2xtZW1iZXJzaGlwJywgbGFiZWw6ICd7eyBfKCdSb2xlIE1lbWJlcnNo aXAnKSB9fScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSb2xlIFByaXZp bGVnZXMnKSB9fScsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBj ZWxsOiAnc3RyaW5nJywgZGlzYWJsZWQ6ICdyZWFkb25seScsCisgICAgICAg ICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10sCisg ICAgICAgICAgY29udHJvbDogUm9sZU1lbWJlcnNDb250cm9sLCBtb2RlbDog cGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgICAgIGtl eXM6IFsncm9sZSddLAorICAgICAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAg ICAgICAgICAgcm9sZTogdW5kZWZpbmVkLAorICAgICAgICAgICAgICBhZG1p bjogZmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwKKyAgICAg ICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgIHJldHVy biB0aGlzLm1vZGVsLmlzTmV3KCkgfHwgKHRoaXMubW9kZWwuZ2V0KCdyb2xu YW1lJykgIT0gZC5sYWJlbCk7CisgICAgICAgICAgfQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3ZhcmlhYmxlcycsIGxhYmVsOiAne3sgXygnVmFy aWFibGVzJykgfX0nLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAg Z3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19JywgaGFzRGF0YWJhc2U6IHRy dWUsIHVybDogJ3ZhcmlhYmxlcycsCisgICAgICAgICAgbW9kZWw6IHBnQnJv d3Nlci5Ob2RlLlZhcmlhYmxlTW9kZWwsIGNvbnRyb2w6ICd2YXJpYWJsZS1j b2xsZWN0aW9uJywKKyAgICAgICAgICBtb2RlOiBbICdlZGl0JywgJ2NyZWF0 ZSddLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAg ICB1cmw6ICJ2YXJpYWJsZXMiLCBkaXNhYmxlZDogJ3JlYWRvbmx5JworICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xhYmVscycsIGxhYmVsOiAn e3sgXygnU2VjdXJpdHkgTGFiZWxzJykgfX0nLAorICAgICAgICAgIG1vZGVs OiBTZWN1cml0eU1vZGVsLCBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xs ZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1NlY3VyaXR5Jykg fX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgbWlu X3ZlcnNpb246IDkwMjAwLCBkaXNhYmxlZDogJ3JlYWRvbmx5JywgY2FuQWRk OiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6 IHRydWUsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nCisgICAg ICAgIH1dLAorICAgICAgICByZWFkb25seTogZnVuY3Rpb24obSkgeworICAg ICAgICAgIGlmICghbS5oYXMoJ3JlYWRfb25seScpKSB7CisgICAgICAgICAg ICB2YXIgdXNlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlci51c2VyOworCisg ICAgICAgICAgICBtLnNldCgncmVhZF9vbmx5JywgISh1c2VyLmlzX3N1cGVy dXNlciB8fCB1c2VyLmNhbl9jcmVhdGVfcm9sZSkpOworICAgICAgICAgIH0K KworICAgICAgICAgIHJldHVybiBtLmdldCgncmVhZF9vbmx5Jyk7CisgICAg ICAgIH0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpCisgICAgICAg IHsKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICAgIGVy cm1zZywKKyAgICAgICAgICAgICAgc2VjbGFiZWxzID0gdGhpcy5nZXQoJ3Nl Y2xhYmVscycpOworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhp cy5nZXQoJ3JvbG5hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdyb2xuYW1l JykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAg ICAgICAgIGVyclsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2FuIGJlIGVtcHR5 IScpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJb J25hbWUnXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoc2VjbGFi ZWxzKSB7CisgICAgICAgICAgICB2YXIgc2VjTGFiZWxzRXJyOworICAgICAg ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWNsYWJlbHMubW9kZWxzLmxl bmd0aCAmJiAhc2VjTGFiZWxzRXJyOyBpKyspIHsKKyAgICAgICAgICAgICAg c2VjTGFiZWxzRXJyID0gKHNlY2xhYmVscy5tb2RlbHNbaV0pLnZhbGlkYXRl LmFwcGx5KHNlY2xhYmVscy5tb2RlbHNbaV0pOworICAgICAgICAgICAgICBp ZiAoc2VjTGFiZWxzRXJyKSB7CisgICAgICAgICAgICAgICAgZXJyWydzZWNs YWJlbHMnXSA9IHNlY0xhYmVsc0VycjsKKyAgICAgICAgICAgICAgICBlcnJt c2cgPSBlcnJtc2cgfHwgc2VjTGFiZWxzRXJyOworICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7CisKKyAgICAgICAgICBp ZiAoXy5zaXplKGVycikpIHsKKyAgICAgICAgICAgIHRoaXMudHJpZ2dlcign b24tc3RhdHVzJywge21zZzogZXJybXNnfSk7CisgICAgICAgICAgICByZXR1 cm4gZXJybXNnOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBu dWxsOworICAgICAgICB9CisgICAgICB9KQorICAgIH0pLAorICAgIHNnID0g cGdCcm93c2VyLk5vZGVzWydzZXJ2ZXItZ3JvdXAnXTsKKyAgfQorCisgIHJl dHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3JvbGUnXTsKK30pOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q4XzQvY3JlYXRlLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Jv bGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L2NyZWF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVkNmUxNwotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80 L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw0OSBAQAoreyUgaW1wb3J0ICdtYWNy b3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0 ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQorQ1JF QVRFIHslIGlmIGRhdGEucm9sY2FubG9naW4gJX1VU0VSeyUgZWxzZSAlfVJP TEV7JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9 fSBXSVRIeyUgaWYgZGF0YS5yb2xjYW5sb2dpbiBhbmQgZGF0YS5yb2xjYW5s b2dpbiBpcyBzYW1lYXMgVHJ1ZSAgJX0KKworCUxPR0lOeyUgZWxzZSAlfQor CisJTk9MT0dJTnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xzdXBlciAlfQor CisJU1VQRVJVU0VSeyUgZWxzZSAlfQorCisJTk9TVVBFUlVTRVJ7JSBlbmRp ZiAlfXslIGlmIGRhdGEucm9sY3JlYXRlZGIgJX0KKworCUNSRUFURURCeyUg ZWxzZSAlfQorCisJTk9DUkVBVEVEQnslIGVuZGlmICV9eyUgaWYgZGF0YS5y b2xjcmVhdGVyb2xlICV9CisKKwlDUkVBVEVST0xFeyUgZWxzZSAlfQorCisJ Tk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbGluaGVyaXQg aXMgc2FtZWFzIHRydWUgJX0KKworCUlOSEVSSVR7JSBlbHNlICV9CisKKwlO T0lOSEVSSVR7JSBlbmRpZiAlfXslIGlmIGRhdGEucm9scmVwbGljYXRpb24g JX0KKworCVJFUExJQ0FUSU9OeyUgZWxzZSAlfQorCisJTk9SRVBMSUNBVElP TnslIGVuZGlmICV9eyUgaWYgJ3JvbGNvbm5saW1pdCcgaW4gZGF0YSBhbmQg ZGF0YS5yb2xjb25ubGltaXQgaXMgbnVtYmVyIGFuZCBkYXRhLnJvbGNvbm5s aW1pdCA+PSAtMSAlfQorCisJQ09OTkVDVElPTiBMSU1JVCB7eyBkYXRhLnJv bGNvbm5saW1pdCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2x2YWxpZHVu dGlsIGFuZCBkYXRhLnJvbHZhbGlkdW50aWwgaXMgbm90IG5vbmUgJX0KKwor CVZBTElEIFVOVElMIHt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwg fX0geyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbHBhc3N3b3JkICV9CisKKwlQ QVNTV09SRCB7JSBpZiBkYXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUgJX1OVUxM eyUgZWxzZSAlfXslIGlmIGR1bW15ICV9J3h4eHh4eCd7JSBlbHNlICV9IHt7 IGRhdGEucm9scGFzc3dvcmQgfCBxdExpdGVyYWwgfX17JSBlbmRpZiAlfXsl IGVuZGlmICV9eyUgZW5kaWYgJX07eyUgaWYgZGF0YS5yb2xzdXBlciBhbmQg ZGF0YS5yb2xjYXR1cGRhdGUgaXMgc2FtZWFzIGZhbHNlICV9CisKKworVVBE QVRFIHBnX2F1dGhpZCBTRVQgcm9sY2F0dXBkYXRlPWZhbHNlIFdIRVJFIHJv bG5hbWUgPSB7eyBkYXRhLnJvbG5hbWV8cXRMaXRlcmFsIH19O3slIGVuZGlm ICV9eyUgaWYgZGF0YS5tZW1iZXJzIGFuZCBkYXRhLm1lbWJlcnN8bGVuZ3Ro ID4gMCAlfQorCisKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1lbWJl cnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEucm9s bmFtZSkgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0 YS5hZG1pbnN8bGVuZ3RoID4gMCAlfQorCitHUkFOVCB7eyBjb25ufHF0SWRl bnQoZGF0YS5hZG1pbnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElk ZW50KGRhdGEucm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBPUFRJT047eyUgZW5k aWYgJX17JSBpZiBkYXRhLnZhcmlhYmxlcyAlfQorCit7JSBmb3IgdmFyIGlu IGRhdGEudmFyaWFibGVzICV9CisKK3t7IFZBUklBQkxFLkFQUExZKGNvbm4s IHZhci5kYXRhYmFzZSwgZGF0YS5yb2xuYW1lLCB2YXIubmFtZSwgdmFyLnZh bHVlKSB9fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLmRl c2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gUk9MRSB7eyBjb25ufHF0SWRl bnQoZGF0YS5yb2xuYW1lKSB9fSBJUyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0 TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDhfNC9ub2Rlcy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDhfNC9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkNGU0OAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L25vZGVzLnNxbApA QCAtMCwwICsxLDggQEAKK1NFTEVDVAorCXIub2lkLCByLnJvbG5hbWUsIHIu cm9sY2FubG9naW4sIHIucm9sc3VwZXIKK0ZST00KKwl7eyByb2xlX3RibCB9 fSByCit7JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sgcmlkIH19Ojpp bnQKK3slIGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxvZ2luLCByLnJv bG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0 OF80L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bv c3Q4XzQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjk5MzY2MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rl bXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsMTYgQEAKK1NFTEVDVAorCXIub2lkLCByLiosCisJcGdfY2F0YWxv Zy5zaG9ial9kZXNjcmlwdGlvbihyLm9pZCwgJ3BnX2F1dGhpZCcpIEFTIGRl c2NyaXB0aW9uLAorCUFSUkFZKAorCQlTRUxFQ1QKKwkJCUNBU0UgV0hFTiBh bS5hZG1pbl9vcHRpb24gVEhFTiAnMScgRUxTRSAnMCcgRU5EIHx8IHJtLnJv bG5hbWUKKwkJRlJPTQorCQkJKFNFTEVDVCAqIEZST00gcGdfYXV0aF9tZW1i ZXJzIFdIRVJFIG1lbWJlciA9IHIub2lkKSBhbQorCQkJTEVGVCBKT0lOIHBn X2NhdGFsb2cucGdfcm9sZXMgcm0gT04gKHJtLm9pZCA9IGFtLnJvbGVpZCkK KwkpIHJvbG1lbWJlcnNoaXAKK0ZST00KKwl7eyByb2xlX3RibCB9fSByCit7 JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sgcmlkIH19OjppbnQKK3sl IGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxvZ2luLCByLnJvbG5hbWUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3Nx bC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDhfNC9zcWwuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NGEwZmYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9z dDhfNC9zcWwuc3FsCkBAIC0wLDAgKzEsOTggQEAKK1NFTEVDVAorCWFycmF5 X3RvX3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcblxuJykKK0ZST00KKyhT RUxFQ1QKKwlDQVNFIFdIRU4gcm9sY2FubG9naW4gVEhFTiAnLS0gVXNlcjog JyBFTFNFICctLSBSb2xlOiAnIEVORAl8fAorCQlwZ19jYXRhbG9nLnF1b3Rl X2lkZW50KHJvbG5hbWUpIHx8CisJCUUnXG4tLSBEUk9QICcgfHwgQ0FTRSBX SEVOIHJvbGNhbmxvZ2luIFRIRU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5E IHx8CisJCXBnX2NhdGFsb2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgRSc7 XG5cbkNSRUFURSAnIHx8CisJCUNBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVO ICdVU0VSICcgRUxTRSAnUk9MRSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1 b3RlX2lkZW50KHJvbG5hbWUpIHx8IEUnIFdJVEhcbiAgJyB8fAorCQlDQVNF IFdIRU4gcm9sY2FubG9naW4gVEhFTiAnTE9HSU4nIEVMU0UgJ05PTE9HSU4n IEVORCB8fCBFJ1xuICAnIHx8CisJCUNBU0UgV0hFTiByb2xjYW5sb2dpbiBB TkQgcm9scGFzc3dvcmQgTElLRSAnbWQ1JSUnIFRIRU4gJ0VOQ1JZUFRFRCBQ QVNTV09SRCAnIHx8IHF1b3RlX2xpdGVyYWwocm9scGFzc3dvcmQpIHx8IEUn XG4gICcgRUxTRSAnJyBFTkQgfHwKKwkJQ0FTRSBXSEVOIHJvbHN1cGVyIFRI RU4gJ1NVUEVSVVNFUicgRUxTRSAnTk9TVVBFUlVTRVInIEVORCB8fCBFJ1xu ICAnIHx8CisJCUNBU0UgV0hFTiByb2xpbmhlcml0IFRIRU4gJ0lOSEVSSVQn IEVMU0UgJ05PSU5IRVJJVCcgRU5EIHx8IEUnXG4gICcgfHwKKwkJQ0FTRSBX SEVOIHJvbGNyZWF0ZWRiIFRIRU4gJ0NSRUFURURCJyBFTFNFICdOT0NSRUFU RURCJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9sY3JlYXRl cm9sZSBUSEVOICdDUkVBVEVST0xFJyBFTFNFICdOT0NSRUFURVJPTEUnIEVO RCB8fCBFJ1xuICAnIHx8CisJCUNBU0UgV0hFTiByb2xjb25ubGltaXQgPiAw IFRIRU4gRSdcbiAgQ09OTkVDVElPTiBMSU1JVCAnIHx8IHJvbGNvbm5saW1p dCBFTFNFICcnIEVORCB8fAorCQlDQVNFIFdIRU4gcm9sdmFsaWR1bnRpbCBJ UyBOT1QgTlVMTCBUSEVOIEUnXG4gIFZBTElEIFVOVElMICcgfHwgcXVvdGVf bGl0ZXJhbChyb2x2YWxpZHVudGlsOjp0ZXh0KSBFTFNFICc7JyBFTkQgfHwK KwkJLS0gUG9zdGdyZVNRTCA8IDkuNQorCQlDQVNFIFdIRU4gcm9sc3VwZXIg QU5EIE5PVCByb2xjYXR1cGRhdGUgVEhFTiBFJ1xuXG5VUERBVEUgcGdfYXV0 aGlkIFNFVCByb2xjYXR1cGRhdGU9ZmFsc2UgV0hFUkUgcm9sbmFtZT0nIHx8 IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChyb2xuYW1lKSB8fCAnOycgRUxT RSAnJyBFTkQgQVMgc3FsCitGUk9NCisJe3sgcm9sZV90YmwgfX0gcgorV0hF UkUKKwlyLm9pZD0lKHJpZClzOjpPSUQKK1VOSU9OIEFMTAorKFNFTEVDVAor CWFycmF5X3RvX3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcbicpCitGUk9N CisoU0VMRUNUCisJJ0dSQU5UICcgfHwgYXJyYXlfdG9fc3RyaW5nKGFycmF5 X2FnZyhyb2xuYW1lKSwgJywgJykgfHwgJyBUTyAnIHx8IHBnX2NhdGFsb2cu cXVvdGVfaWRlbnQocGdfZ2V0X3VzZXJieWlkKCUocmlkKXM6Ok9JRCkpIHx8 CisJQ0FTRSBXSEVOIGFkbWluX29wdGlvbiBUSEVOICcgV0lUSCBBRE1JTiBP UFRJT047JyBFTFNFICc7JyBFTkQgc3FsCitGUk9NCisJKFNFTEVDVAorCQlx dW90ZV9pZGVudChyLnJvbG5hbWUpIEFTIHJvbG5hbWUsIG0uYWRtaW5fb3B0 aW9uIEFTIGFkbWluX29wdGlvbgorCUZST00KKwkJcGdfYXV0aF9tZW1iZXJz IG0KKwkJTEVGVCBKT0lOIHBnX3JvbGVzIHIgT04gKG0ucm9sZWlkID0gci5v aWQpCisJV0hFUkUKKwkJbS5tZW1iZXI9JShyaWQpczo6T0lECisJT1JERVIg QlkKKwkJci5yb2xuYW1lCisJKSBhCitHUk9VUCBCWSBhZG1pbl9vcHRpb24p IHMpCitVTklPTiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJy YXlfYWdnKHNxbCksIEUnXG4nKSBzcWwKK0ZST00KKyhTRUxFQ1QKKwknQUxU RVIgJyB8fCBDQVNFIFdIRU4gcm9sY2FubG9naW4gVEhFTiAnVVNFUiAnIEVM U0UgJ1JPTEUgJyBFTkQgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xu YW1lKSB8fCAnIFNFVCAnIHx8IHBhcmFtIHx8ICcgVE8gJyB8fCBDQVNFIFdI RU4gcGFyYW0gSU4gKCdzZWFyY2hfcGF0aCcsICd0ZW1wX3RhYmxlc3BhY2Vz JykgVEhFTiB2YWx1ZSBFTFNFIHF1b3RlX2xpdGVyYWwodmFsdWUpIEVORCB8 fCAnOycgQVMgc3FsCitGUk9NCisoU0VMRUNUCisJcm9sY2FubG9naW4sIHJv bG5hbWUsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFTIHBhcmFt LCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25maWcsICc9 JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUKK0ZST00KKwkoU0VMRUNUCisJ CQl1bm5lc3Qocm9sY29uZmlnKSBBUyByb2xjb25maWcsIHJvbGNhbmxvZ2lu LCByb2xuYW1lCisJRlJPTQorCQlwZ19jYXRhbG9nLnBnX3JvbGVzCisJV0hF UkUKKwkJb2lkPSUocmlkKXM6Ok9JRAorCSkgcgorKSBhKSBiKQorLS0gUG9z dGdyZVNRTCA+PSA5LjAKK1VOSU9OIEFMTAorKFNFTEVDVAorCWFycmF5X3Rv X3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcbicpIEFTIHNxbAorRlJPTQor CShTRUxFQ1QKKwkJJ0FMVEVSIFJPTEUgJyB8fCBwZ19jYXRhbG9nLnF1b3Rl X2lkZW50KHBnX2dldF91c2VyYnlpZCglKHJpZClzOjpPSUQpKSB8fAorCQkn IElOIERBVEFCQVNFICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChkYXRu YW1lKSB8fAorCQknIFNFVCAnIHx8IHBhcmFtfHwgJyBUTyAnIHx8CisJCUNB U0UKKwkJV0hFTiBwYXJhbSBJTiAoJ3NlYXJjaF9wYXRoJywgJ3RlbXBfdGFi bGVzcGFjZXMnKSBUSEVOIHZhbHVlCisJCUVMU0UgcXVvdGVfbGl0ZXJhbCh2 YWx1ZSkKKwkJRU5EIHx8ICc7JyBBUyBzcWwKKwlGUk9NCisJCShTRUxFQ1QK KwkJCWRhdG5hbWUsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFT IHBhcmFtLCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25m aWcsICc9JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUKKwkJRlJPTQorCQkJ KFNFTEVDVAorCQkJCWQuZGF0bmFtZSwgdW5uZXN0KGMuc2V0Y29uZmlnKSBB UyByb2xjb25maWcKKwkJCUZST00KKwkJCQkoU0VMRUNUICoKKwkJCQlGUk9N CisJCQkJCXBnX2NhdGFsb2cucGdfZGJfcm9sZV9zZXR0aW5nIGRyCisJCQkJ V0hFUkUKKwkJCQkJZHIuc2V0cm9sZT0lKHJpZClzOjpPSUQgQU5EIGRyLnNl dGRhdGFiYXNlIT0wKSBjCisJCQkJTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf ZGF0YWJhc2UgZCBPTiAoZC5vaWQgPSBjLnNldGRhdGFiYXNlKQorCQkJKSBh CisJCSkgYgorCSkgZAorKQorVU5JT04gQUxMCisoU0VMRUNUCisJJ0NPTU1F TlQgT04gUk9MRSAnIHx8IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocGdfZ2V0 X3VzZXJieWlkKCUocmlkKXM6Ok9JRCkpIHx8ICcgSVMgJyB8fCAgcGdfY2F0 YWxvZy5xdW90ZV9saXRlcmFsKGRlc2NyaXB0aW9uKSB8fCAnOycgQVMgc3Fs CitGUk9NCisJKFNFTEVDVAlwZ19jYXRhbG9nLnNob2JqX2Rlc2NyaXB0aW9u KCUocmlkKXM6Ok9JRCwgJ3BnX2F1dGhpZCcpIEFTIGRlc2NyaXB0aW9uKSBh CitXSEVSRQorCWRlc2NyaXB0aW9uIElTIE5PVCBOVUxMKSkgQVMgYQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q4XzQvdXBkYXRl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3VwZGF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE2YjVk MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9w b3N0OF80L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxMTAgQEAKK3slIGltcG9y dCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0KK3sl IGlmICdyb2xuYW1lJyBpbiBkYXRhICV9Cit7JSBzZXQgcm9sbmFtZT1kYXRh LnJvbG5hbWUgJX0KK0FMVEVSeyUgaWYgcm9sQ2FuTG9naW4gJX0gVVNFUiB7 JSBlbHNlICV9IFJPTEUgeyUgZW5kaWYgJX17eyBjb25ufHF0SWRlbnQocm9s ZSkgfX0KKwlSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KHJvbG5hbWUpIH19 OworCit7JSBlbHNlICV9Cit7JSBzZXQgcm9sbmFtZT1yb2xlICV9Cit7JSBl bmRpZiAlfQoreyUgaWYgZGF0YXxoYXNBbnkoYWx0ZXJLZXlzKSAlfQorQUxU RVIgeyUgaWYgcm9sQ2FuTG9naW4gJX1VU0VSeyUgZWxzZSAlfVJPTEV7JSBl bmRpZiAlfSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX17JSBpZiAncm9s Y2FubG9naW4nIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5yb2xjYW5sb2dp biAlfQorCUxPR0lOeyUgZWxzZSAlfQorCU5PTE9HSU57JSBlbmRpZiAlfXsl IGVuZGlmICV9eyUgaWYgJ3JvbHN1cGVyJyBpbiBkYXRhICV9CisKK3slIGlm IGRhdGEucm9sc3VwZXIgJX0KKwlTVVBFUlVTRVJ7JSBlbHNlICV9CisJTk9T VVBFUlVTRVJ7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbGNyZWF0 ZWRiJyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9sY3JlYXRlZGIgJX0K KwlDUkVBVEVEQnslIGVsc2UgJX0KKwlOT0NSRUFURURCeyUgZW5kaWYgJX17 JSBlbmRpZiAlfXslIGlmICdyb2xjcmVhdGVyb2xlJyBpbiBkYXRhICV9CisK K3slIGlmIGRhdGEucm9sY3JlYXRlcm9sZSAlfQorCUNSRUFURVJPTEV7JSBl bHNlICV9CisJTk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBlbmRpZiAlfXsl IGlmICdyb2xpbmhlcml0JyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9s aW5oZXJpdCAlfQorCUlOSEVSSVR7JSBlbHNlICV9CisJTk9JTkhFUklUeyUg ZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xyZXBsaWNhdGlvbicgaW4g ZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbHJlcGxpY2F0aW9uICV9CisJUkVQ TElDQVRJT057JSBlbHNlICV9CisJTk9SRVBMSUNBVElPTnslIGVuZGlmICV9 eyUgZW5kaWYgJX17JSBpZiAncm9sY29ubmxpbWl0JyBpbiBkYXRhIGFuZCBk YXRhLnJvbGNvbm5saW1pdCBpcyBudW1iZXIgYW5kIGRhdGEucm9sY29ubmxp bWl0ID49IC0xICV9CisKKwlDT05ORUNUSU9OIExJTUlUIHt7IGRhdGEucm9s Y29ubmxpbWl0IH19Cit7JSBlbmRpZiAlfXslIGlmICdyb2x2YWxpZHVudGls JyBpbiBkYXRhIGFuZCBkYXRhLnJvbHZhbGlkdW50aWwgJX0KKworCVZBTElE IFVOVElMIHslIGlmIGRhdGEucm9sdmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAl fXt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX17JSBlbHNlICV9 J2luZmluaXR5JworeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xw YXNzd29yZCcgaW4gZGF0YSAlfQorCisJUEFTU1dPUkR7JSBpZiBkYXRhLnJv bHBhc3N3b3JkIGlzIG5vbmUgJX0gTlVMTHslIGVsc2UgJX17JSBpZiBkdW1t eSAlfSAneHh4eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNzd29yZHxx dExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgZW5kaWYgJX07 eyUgZW5kaWYgJX0KKworeyUgaWYKKwlub3Qgcm9sU3VwZXIgYW5kCisJJ3Jv bHN1cGVyJyBpbiBkYXRhIGFuZAorCSdyb2xjYXR1cGRhdGUnIG5vdCBpbiBk YXRhIGFuZAorCWRhdGEucm9sc3VwZXIgJX0KKworCitVUERBVEUgcGdfYXV0 aGlkIFNFVCByb2xjYXR1cGRhdGU9ZmFsc2UgV0hFUkUgcm9sbmFtZSA9IHt7 IHJvbG5hbWV8cXRMaXRlcmFsIH19OworCit7JSBlbGlmCisJcm9sU3VwZXIg YW5kCisJJ3JvbHN1cGVyJyBub3QgaW4gZGF0YSBhbmQKKwkncm9sY2F0dXBk YXRlJyBpbiBkYXRhICV9Cit7JSBpZiBkYXRhLnJvbGNhdHVwZGF0ZSAlfQor CisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT10cnVlIFdI RVJFIHJvbG5hbWUgPSB7eyByb2xuYW1lfHF0TGl0ZXJhbCB9fTsKKworeyUg ZWxzZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0 ZT1mYWxzZSBXSEVSRSByb2xuYW1lID0ge3sgcm9sbmFtZXxxdExpdGVyYWwg fX07CisKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ3Jldm9r ZWRfYWRtaW5zJyBpbiBkYXRhIGFuZAorCWRhdGEucmV2b2tlZF9hZG1pbnN8 bGVuZ3RoID4gMAorJX0KKworLS0gUmV2b2tlZCB0aGUgYWRtaW4gb3B0aW9u cyBmcm9tIHRoZSBtZW1iZXJzCitSRVZPS0UgQURNSU4gT1BUSU9OIEZPUiB7 eyBjb25ufHF0SWRlbnQoZGF0YS5yZXZva2VkX2FkbWlucyl8am9pbignLCAn KSB9fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fTt7JSBlbmRp ZiAlfXslIGlmICdyZXZva2VkJyBpbiBkYXRhIGFuZCBkYXRhLnJldm9rZWR8 bGVuZ3RoID4gMCAlfQorCisKKy0tIEZvbGxvd2luZyBhcmUgbm8gbW9yZSB0 aGUgbWVtYmVycworUkVWT0tFIHt7IGNvbm58cXRJZGVudChkYXRhLnJldm9r ZWQpfGpvaW4oJywgJykgfX0gRlJPTSB7eyBjb25ufHF0SWRlbnQocm9sbmFt ZSkgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5h ZG1pbnN8bGVuZ3RoID4gMCAlfQorCistLSBGb2xsb3dpbmcgYXJlIHRoZSBu ZXcgYWRtaW5zIChvciwgZXhpc3RpbmcgbWVtYmVycyBtYWRlIGFkbWlucykK K0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLmFkbWlucyl8am9pbignLCAn KSB9fSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX0gV0lUSCBBRE1J TiBPUFRJT047eyUgZW5kaWYgJX17JSBpZiBkYXRhLm1lbWJlcnMgYW5kIGRh dGEubWVtYmVyc3xsZW5ndGggPiAwICV9CisKKworLS0gRm9sbG93aW5nIGFy ZSB0aGUgbmV3IG1lbWJlcnMKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRh Lm1lbWJlcnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KHJv bG5hbWUpIH19O3slIGVuZGlmICV9Cit7JSBpZiAndmFyaWFibGVzJyBpbiBk YXRhIGFuZCBkYXRhLnZhcmlhYmxlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQg dmFyaWFibGVzID0gZGF0YS52YXJpYWJsZXMgJX0KK3slIGlmICdkZWxldGVk JyBpbiB2YXJpYWJsZXMgYW5kIHZhcmlhYmxlcy5kZWxldGVkfGxlbmd0aCA+ IDAgJX0KKworeyUgZm9yIHZhciBpbiB2YXJpYWJsZXMuZGVsZXRlZCAlfQor e3sgVkFSSUFCTEUuUkVTRVQoY29ubiwgdmFyLmRhdGFiYXNlLCByb2xuYW1l LCB2YXIubmFtZSkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9Cit7JSBp ZiAnYWRkZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFibGVzLmFkZGVkfGxl bmd0aCA+IDAgJX0KKworeyUgZm9yIHZhciBpbiB2YXJpYWJsZXMuYWRkZWQg JX0KK3t7IFZBUklBQkxFLkFQUExZKGNvbm4sIHZhci5kYXRhYmFzZSwgcm9s bmFtZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkgfX0KK3slIGVuZGZvciAlfXsl IGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gdmFyaWFibGVzIGFuZCB2 YXJpYWJsZXMuY2hhbmdlZHxsZW5ndGggPiAwICV9CisKK3slIGZvciB2YXIg aW4gdmFyaWFibGVzLmNoYW5nZWQgJX0KK3t7IFZBUklBQkxFLkFQUExZKGNv bm4sIHZhci5kYXRhYmFzZSwgcm9sbmFtZSwgdmFyLm5hbWUsIHZhci52YWx1 ZSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnZGVzY3JpcHRpb24nIGluIGRhdGEgJX0KKworCitDT01NRU5U IE9OIFJPTEUge3sgY29ubnxxdElkZW50KHJvbG5hbWUpIH19IElTIHt7IGRh dGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3Zhcmlh Ymxlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDhfNC92YXJp YWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmI4NjIwYzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9s ZS9zcWwvcG9zdDhfNC92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMjUgQEAK K1NFTEVDVAorICAgIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFT IG5hbWUsIHJlcGxhY2Uocm9sY29uZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZp ZywgJz0nLCAxKSB8fCAnPScsICcnKSBBUyB2YWx1ZSwgTlVMTDo6dGV4dCBB UyBkYXRhYmFzZQorRlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHVu bmVzdChyb2xjb25maWcpIEFTIHJvbGNvbmZpZywgcm9sY2FubG9naW4sIHJv bG5hbWUKKyAgICBGUk9NCisgICAgICAgIHBnX2NhdGFsb2cucGdfcm9sZXMK KyAgICBXSEVSRQorICAgICAgICBvaWQ9e3sgcmlkfHF0TGl0ZXJhbCB9fTo6 T0lECisgICAgKSByCisKK1VOSU9OIEFMTAorU0VMRUNUCisgICAgc3BsaXRf cGFydChyb2xjb25maWcsICc9JywgMSkgQVMgbmFtZSwgcmVwbGFjZShyb2xj b25maWcsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9Jywg JycpIEFTIHZhbHVlLCBkYXRuYW1lIEFTIGRhdGFiYXNlCitGUk9NCisgICAg KFNFTEVDVAorICAgICAgICBkLmRhdG5hbWUsIHVubmVzdChjLnNldGNvbmZp ZykgQVMgcm9sY29uZmlnCisgICAgRlJPTQorICAgICAgICAoU0VMRUNUICoK KyAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2RiX3JvbGVfc2V0dGluZyBk cgorICAgICAgICBXSEVSRQorICAgICAgICAgICAgZHIuc2V0cm9sZT17eyBy aWR8cXRMaXRlcmFsIH19OjpPSUQgQU5EIGRyLnNldGRhdGFiYXNlIT0wCisg ICAgICAgICkgYworICAgICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19k YXRhYmFzZSBkIE9OIChkLm9pZCA9IGMuc2V0ZGF0YWJhc2UpCisgICAgKSBh OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAv Y3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8wL2Ny ZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MGZlYjVkMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L3NxbC9wb3N0OV8wL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw0NSBAQAoreyUg aW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAl fQoreyUgaW1wb3J0ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJ QUJMRSAlfQorQ1JFQVRFIHslIGlmIGRhdGEucm9sY2FubG9naW4gJX1VU0VS eyUgZWxzZSAlfVJPTEV7JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQoZGF0 YS5yb2xuYW1lKSB9fSBXSVRIeyUgaWYgZGF0YS5yb2xjYW5sb2dpbiBhbmQg ZGF0YS5yb2xjYW5sb2dpbiBpcyBzYW1lYXMgVHJ1ZSAgJX0KKworCUxPR0lO eyUgZWxzZSAlfQorCisJTk9MT0dJTnslIGVuZGlmICV9eyUgaWYgZGF0YS5y b2xzdXBlciAlfQorCisJU1VQRVJVU0VSeyUgZWxzZSAlfQorCisJTk9TVVBF UlVTRVJ7JSBlbmRpZiAlfXslIGlmIGRhdGEucm9sY3JlYXRlZGIgJX0KKwor CUNSRUFURURCeyUgZWxzZSAlfQorCisJTk9DUkVBVEVEQnslIGVuZGlmICV9 eyUgaWYgZGF0YS5yb2xjcmVhdGVyb2xlICV9CisKKwlDUkVBVEVST0xFeyUg ZWxzZSAlfQorCisJTk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBpZiBkYXRh LnJvbGluaGVyaXQgaXMgc2FtZWFzIHRydWUgJX0KKworCUlOSEVSSVR7JSBl bHNlICV9CisKKwlOT0lOSEVSSVR7JSBlbmRpZiAlfXslIGlmICdyb2xjb25u bGltaXQnIGluIGRhdGEgYW5kIGRhdGEucm9sY29ubmxpbWl0IGlzIG51bWJl ciBhbmQgZGF0YS5yb2xjb25ubGltaXQgPj0gLTEgJX0KKworCUNPTk5FQ1RJ T04gTElNSVQge3sgZGF0YS5yb2xjb25ubGltaXQgfX17JSBlbmRpZiAlfXsl IGlmIGRhdGEucm9sdmFsaWR1bnRpbCBhbmQgZGF0YS5yb2x2YWxpZHVudGls IGlzIG5vdCBub25lICV9CisKKwlWQUxJRCBVTlRJTCB7eyBkYXRhLnJvbHZh bGlkdW50aWx8cXRMaXRlcmFsIH19IHslIGVuZGlmICV9eyUgaWYgZGF0YS5y b2xwYXNzd29yZCAlfQorCisJUEFTU1dPUkQgeyUgaWYgZGF0YS5yb2xwYXNz d29yZCBpcyBub25lICV9TlVMTHslIGVsc2UgJX17JSBpZiBkdW1teSAlfSd4 eHh4eHgneyUgZWxzZSAlfSB7eyBkYXRhLnJvbHBhc3N3b3JkIHwgcXRMaXRl cmFsIH19eyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGVuZGlmICV9O3slIGlm IGRhdGEucm9sc3VwZXIgYW5kIGRhdGEucm9sY2F0dXBkYXRlIGlzIHNhbWVh cyBmYWxzZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVw ZGF0ZT1mYWxzZSBXSEVSRSByb2xuYW1lID0ge3sgZGF0YS5yb2xuYW1lfHF0 TGl0ZXJhbCB9fTt7JSBlbmRpZiAlfXslIGlmIGRhdGEubWVtYmVycyBhbmQg ZGF0YS5tZW1iZXJzfGxlbmd0aCA+IDAgJX0KKworCitHUkFOVCB7eyBjb25u fHF0SWRlbnQoZGF0YS5tZW1iZXJzKXxqb2luKCcsICcpIH19IFRPIHt7IGNv bm58cXRJZGVudChkYXRhLnJvbG5hbWUpIH19O3slIGVuZGlmICV9eyUgaWYg ZGF0YS5hZG1pbnMgYW5kIGRhdGEuYWRtaW5zfGxlbmd0aCA+IDAgJX0KKwor R1JBTlQge3sgY29ubnxxdElkZW50KGRhdGEuYWRtaW5zKXxqb2luKCcsICcp IH19IFRPIHt7IGNvbm58cXRJZGVudChkYXRhLnJvbG5hbWUpIH19IFdJVEgg QURNSU4gT1BUSU9OO3slIGVuZGlmICV9eyUgaWYgZGF0YS52YXJpYWJsZXMg JX0KKworeyUgZm9yIHZhciBpbiBkYXRhLnZhcmlhYmxlcyAlfQorCit7eyBW QVJJQUJMRS5BUFBMWShjb25uLCB2YXIuZGF0YWJhc2UsIGRhdGEucm9sbmFt ZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkgfX0KK3slIGVuZGZvciAlfXslIGVu ZGlmICV9eyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9O IFJPTEUge3sgY29ubnxxdElkZW50KGRhdGEucm9sbmFtZSkgfX0gSVMge3sg ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvbm9k ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvbm9kZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDRl NDgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwv cG9zdDlfMC9ub2Rlcy5zcWwKQEAgLTAsMCArMSw4IEBACitTRUxFQ1QKKwly Lm9pZCwgci5yb2xuYW1lLCByLnJvbGNhbmxvZ2luLCByLnJvbHN1cGVyCitG Uk9NCisJe3sgcm9sZV90YmwgfX0gcgoreyUgaWYgcmlkICV9CitXSEVSRSBy Lm9pZCA9IHt7IHJpZCB9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkg ci5yb2xjYW5sb2dpbiwgci5yb2xuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rl bXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8wL3Byb3BlcnRpZXMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OTM2NjMKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC9w cm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDE2IEBACitTRUxFQ1QKKwlyLm9p ZCwgci4qLAorCXBnX2NhdGFsb2cuc2hvYmpfZGVzY3JpcHRpb24oci5vaWQs ICdwZ19hdXRoaWQnKSBBUyBkZXNjcmlwdGlvbiwKKwlBUlJBWSgKKwkJU0VM RUNUCisJCQlDQVNFIFdIRU4gYW0uYWRtaW5fb3B0aW9uIFRIRU4gJzEnIEVM U0UgJzAnIEVORCB8fCBybS5yb2xuYW1lCisJCUZST00KKwkJCShTRUxFQ1Qg KiBGUk9NIHBnX2F1dGhfbWVtYmVycyBXSEVSRSBtZW1iZXIgPSByLm9pZCkg YW0KKwkJCUxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIHJtIE9OIChy bS5vaWQgPSBhbS5yb2xlaWQpCisJKSByb2xtZW1iZXJzaGlwCitGUk9NCisJ e3sgcm9sZV90YmwgfX0gcgoreyUgaWYgcmlkICV9CitXSEVSRSByLm9pZCA9 IHt7IHJpZCB9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgci5yb2xj YW5sb2dpbiwgci5yb2xuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMv cm9sZS9zcWwvcG9zdDlfMC9zcWwuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUv c3FsL3Bvc3Q5XzAvc3FsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5kNTRhMGZmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVt cGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvc3FsLnNxbApAQCAtMCwwICsxLDk4 IEBACitTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCks IEUnXG5cbicpCitGUk9NCisoU0VMRUNUCisJQ0FTRSBXSEVOIHJvbGNhbmxv Z2luIFRIRU4gJy0tIFVzZXI6ICcgRUxTRSAnLS0gUm9sZTogJyBFTkQJfHwK KwkJcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fAorCQlFJ1xu LS0gRFJPUCAnIHx8IENBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdVU0VS ICcgRUxTRSAnUk9MRSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lk ZW50KHJvbG5hbWUpIHx8IEUnO1xuXG5DUkVBVEUgJyB8fAorCQlDQVNFIFdI RU4gcm9sY2FubG9naW4gVEhFTiAnVVNFUiAnIEVMU0UgJ1JPTEUgJyBFTkQg fHwKKwkJcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fCBFJyBX SVRIXG4gICcgfHwKKwkJQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRIRU4gJ0xP R0lOJyBFTFNFICdOT0xPR0lOJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNF IFdIRU4gcm9sY2FubG9naW4gQU5EIHJvbHBhc3N3b3JkIExJS0UgJ21kNSUl JyBUSEVOICdFTkNSWVBURUQgUEFTU1dPUkQgJyB8fCBxdW90ZV9saXRlcmFs KHJvbHBhc3N3b3JkKSB8fCBFJ1xuICAnIEVMU0UgJycgRU5EIHx8CisJCUNB U0UgV0hFTiByb2xzdXBlciBUSEVOICdTVVBFUlVTRVInIEVMU0UgJ05PU1VQ RVJVU0VSJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9saW5o ZXJpdCBUSEVOICdJTkhFUklUJyBFTFNFICdOT0lOSEVSSVQnIEVORCB8fCBF J1xuICAnIHx8CisJCUNBU0UgV0hFTiByb2xjcmVhdGVkYiBUSEVOICdDUkVB VEVEQicgRUxTRSAnTk9DUkVBVEVEQicgRU5EIHx8IEUnXG4gICcgfHwKKwkJ Q0FTRSBXSEVOIHJvbGNyZWF0ZXJvbGUgVEhFTiAnQ1JFQVRFUk9MRScgRUxT RSAnTk9DUkVBVEVST0xFJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdI RU4gcm9sY29ubmxpbWl0ID4gMCBUSEVOIEUnXG4gIENPTk5FQ1RJT04gTElN SVQgJyB8fCByb2xjb25ubGltaXQgRUxTRSAnJyBFTkQgfHwKKwkJQ0FTRSBX SEVOIHJvbHZhbGlkdW50aWwgSVMgTk9UIE5VTEwgVEhFTiBFJ1xuICBWQUxJ RCBVTlRJTCAnIHx8IHF1b3RlX2xpdGVyYWwocm9sdmFsaWR1bnRpbDo6dGV4 dCkgRUxTRSAnOycgRU5EIHx8CisJCS0tIFBvc3RncmVTUUwgPCA5LjUKKwkJ Q0FTRSBXSEVOIHJvbHN1cGVyIEFORCBOT1Qgcm9sY2F0dXBkYXRlIFRIRU4g RSdcblxuVVBEQVRFIHBnX2F1dGhpZCBTRVQgcm9sY2F0dXBkYXRlPWZhbHNl IFdIRVJFIHJvbG5hbWU9JyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwo cm9sbmFtZSkgfHwgJzsnIEVMU0UgJycgRU5EIEFTIHNxbAorRlJPTQorCXt7 IHJvbGVfdGJsIH19IHIKK1dIRVJFCisJci5vaWQ9JShyaWQpczo6T0lECitV TklPTiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdn KHNxbCksIEUnXG4nKQorRlJPTQorKFNFTEVDVAorCSdHUkFOVCAnIHx8IGFy cmF5X3RvX3N0cmluZyhhcnJheV9hZ2cocm9sbmFtZSksICcsICcpIHx8ICcg VE8gJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBnX2dldF91c2VyYnlp ZCglKHJpZClzOjpPSUQpKSB8fAorCUNBU0UgV0hFTiBhZG1pbl9vcHRpb24g VEhFTiAnIFdJVEggQURNSU4gT1BUSU9OOycgRUxTRSAnOycgRU5EIHNxbAor RlJPTQorCShTRUxFQ1QKKwkJcXVvdGVfaWRlbnQoci5yb2xuYW1lKSBBUyBy b2xuYW1lLCBtLmFkbWluX29wdGlvbiBBUyBhZG1pbl9vcHRpb24KKwlGUk9N CisJCXBnX2F1dGhfbWVtYmVycyBtCisJCUxFRlQgSk9JTiBwZ19yb2xlcyBy IE9OIChtLnJvbGVpZCA9IHIub2lkKQorCVdIRVJFCisJCW0ubWVtYmVyPSUo cmlkKXM6Ok9JRAorCU9SREVSIEJZCisJCXIucm9sbmFtZQorCSkgYQorR1JP VVAgQlkgYWRtaW5fb3B0aW9uKSBzKQorVU5JT04gQUxMCisoU0VMRUNUCisJ YXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwpLCBFJ1xuJykgc3FsCitG Uk9NCisoU0VMRUNUCisJJ0FMVEVSICcgfHwgQ0FTRSBXSEVOIHJvbGNhbmxv Z2luIFRIRU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8IHBnX2NhdGFs b2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgJyBTRVQgJyB8fCBwYXJhbSB8 fCAnIFRPICcgfHwgQ0FTRSBXSEVOIHBhcmFtIElOICgnc2VhcmNoX3BhdGgn LCAndGVtcF90YWJsZXNwYWNlcycpIFRIRU4gdmFsdWUgRUxTRSBxdW90ZV9s aXRlcmFsKHZhbHVlKSBFTkQgfHwgJzsnIEFTIHNxbAorRlJPTQorKFNFTEVD VAorCXJvbGNhbmxvZ2luLCByb2xuYW1lLCBzcGxpdF9wYXJ0KHJvbGNvbmZp ZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25maWcsIHNwbGl0 X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZhbHVl CitGUk9NCisJKFNFTEVDVAorCQkJdW5uZXN0KHJvbGNvbmZpZykgQVMgcm9s Y29uZmlnLCByb2xjYW5sb2dpbiwgcm9sbmFtZQorCUZST00KKwkJcGdfY2F0 YWxvZy5wZ19yb2xlcworCVdIRVJFCisJCW9pZD0lKHJpZClzOjpPSUQKKwkp IHIKKykgYSkgYikKKy0tIFBvc3RncmVTUUwgPj0gOS4wCitVTklPTiBBTEwK KyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUn XG4nKSBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCisJCSdBTFRFUiBST0xFICcg fHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNlcmJ5aWQoJShy aWQpczo6T0lEKSkgfHwKKwkJJyBJTiBEQVRBQkFTRSAnIHx8IHBnX2NhdGFs b2cucXVvdGVfaWRlbnQoZGF0bmFtZSkgfHwKKwkJJyBTRVQgJyB8fCBwYXJh bXx8ICcgVE8gJyB8fAorCQlDQVNFCisJCVdIRU4gcGFyYW0gSU4gKCdzZWFy Y2hfcGF0aCcsICd0ZW1wX3RhYmxlc3BhY2VzJykgVEhFTiB2YWx1ZQorCQlF TFNFIHF1b3RlX2xpdGVyYWwodmFsdWUpCisJCUVORCB8fCAnOycgQVMgc3Fs CisJRlJPTQorCQkoU0VMRUNUCisJCQlkYXRuYW1lLCBzcGxpdF9wYXJ0KHJv bGNvbmZpZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25maWcs IHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFT IHZhbHVlCisJCUZST00KKwkJCShTRUxFQ1QKKwkJCQlkLmRhdG5hbWUsIHVu bmVzdChjLnNldGNvbmZpZykgQVMgcm9sY29uZmlnCisJCQlGUk9NCisJCQkJ KFNFTEVDVCAqCisJCQkJRlJPTQorCQkJCQlwZ19jYXRhbG9nLnBnX2RiX3Jv bGVfc2V0dGluZyBkcgorCQkJCVdIRVJFCisJCQkJCWRyLnNldHJvbGU9JShy aWQpczo6T0lEIEFORCBkci5zZXRkYXRhYmFzZSE9MCkgYworCQkJCUxFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIGQgT04gKGQub2lkID0gYy5z ZXRkYXRhYmFzZSkKKwkJCSkgYQorCQkpIGIKKwkpIGQKKykKK1VOSU9OIEFM TAorKFNFTEVDVAorCSdDT01NRU5UIE9OIFJPTEUgJyB8fCBwZ19jYXRhbG9n LnF1b3RlX2lkZW50KHBnX2dldF91c2VyYnlpZCglKHJpZClzOjpPSUQpKSB8 fCAnIElTICcgfHwgIHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChkZXNjcmlw dGlvbikgfHwgJzsnIEFTIHNxbAorRlJPTQorCShTRUxFQ1QJcGdfY2F0YWxv Zy5zaG9ial9kZXNjcmlwdGlvbiglKHJpZClzOjpPSUQsICdwZ19hdXRoaWQn KSBBUyBkZXNjcmlwdGlvbikgYQorV0hFUkUKKwlkZXNjcmlwdGlvbiBJUyBO T1QgTlVMTCkpIEFTIGEKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L3NxbC9wb3N0OV8wL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9z cWwvcG9zdDlfMC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmJhNjU0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90 ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC91cGRhdGUuc3FsCkBAIC0wLDAg KzEsMTA2IEBACit7JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3Mn IGFzIFZBUklBQkxFICV9Cit7JSBpZiAncm9sbmFtZScgaW4gZGF0YSAlfQor eyUgc2V0IHJvbG5hbWU9ZGF0YS5yb2xuYW1lICV9CitBTFRFUnslIGlmIHJv bENhbkxvZ2luICV9IFVTRVIgeyUgZWxzZSAlfSBST0xFIHslIGVuZGlmICV9 e3sgY29ubnxxdElkZW50KHJvbGUpIH19CisJUkVOQU1FIFRPIHt7IGNvbm58 cXRJZGVudChyb2xuYW1lKSB9fTsKKworeyUgZWxzZSAlfQoreyUgc2V0IHJv bG5hbWU9cm9sZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGF8aGFzQW55 KGFsdGVyS2V5cykgJX0KK0FMVEVSIHslIGlmIHJvbENhbkxvZ2luICV9VVNF UnslIGVsc2UgJX1ST0xFeyUgZW5kaWYgJX0ge3sgY29ubnxxdElkZW50KHJv bG5hbWUpIH19eyUgaWYgJ3JvbGNhbmxvZ2luJyBpbiBkYXRhICV9CisKK3sl IGlmIGRhdGEucm9sY2FubG9naW4gJX0KKwlMT0dJTnslIGVsc2UgJX0KKwlO T0xPR0lOeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xzdXBlcicg aW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbHN1cGVyICV9CisJU1VQRVJV U0VSeyUgZWxzZSAlfQorCU5PU1VQRVJVU0VSeyUgZW5kaWYgJX17JSBlbmRp ZiAlfXslIGlmICdyb2xjcmVhdGVkYicgaW4gZGF0YSAlfQorCit7JSBpZiBk YXRhLnJvbGNyZWF0ZWRiICV9CisJQ1JFQVRFREJ7JSBlbHNlICV9CisJTk9D UkVBVEVEQnslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9sY3JlYXRl cm9sZScgaW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbGNyZWF0ZXJvbGUg JX0KKwlDUkVBVEVST0xFeyUgZWxzZSAlfQorCU5PQ1JFQVRFUk9MRXslIGVu ZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9saW5oZXJpdCcgaW4gZGF0YSAl fQorCit7JSBpZiBkYXRhLnJvbGluaGVyaXQgJX0KKwlJTkhFUklUeyUgZWxz ZSAlfQorCU5PSU5IRVJJVHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAn cm9sY29ubmxpbWl0JyBpbiBkYXRhIGFuZCBkYXRhLnJvbGNvbm5saW1pdCBp cyBudW1iZXIgYW5kIGRhdGEucm9sY29ubmxpbWl0ID49IC0xICV9CisKKwlD T05ORUNUSU9OIExJTUlUIHt7IGRhdGEucm9sY29ubmxpbWl0IH19Cit7JSBl bmRpZiAlfXslIGlmICdyb2x2YWxpZHVudGlsJyBpbiBkYXRhIGFuZCBkYXRh LnJvbHZhbGlkdW50aWwgJX0KKworCVZBTElEIFVOVElMIHslIGlmIGRhdGEu cm9sdmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAlfXt7IGRhdGEucm9sdmFsaWR1 bnRpbHxxdExpdGVyYWwgfX17JSBlbHNlICV9J2luZmluaXR5JworeyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xwYXNzd29yZCcgaW4gZGF0YSAl fQorCisJUEFTU1dPUkR7JSBpZiBkYXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUg JX0gTlVMTHslIGVsc2UgJX17JSBpZiBkdW1teSAlfSAneHh4eHh4J3slIGVs c2UgJX0ge3sgZGF0YS5yb2xwYXNzd29yZHxxdExpdGVyYWwgfX17JSBlbmRp ZiAlfXslIGVuZGlmICV9eyUgZW5kaWYgJX07eyUgZW5kaWYgJX0KKworeyUg aWYKKwlub3Qgcm9sU3VwZXIgYW5kCisJJ3JvbHN1cGVyJyBpbiBkYXRhIGFu ZAorCSdyb2xjYXR1cGRhdGUnIG5vdCBpbiBkYXRhIGFuZAorCWRhdGEucm9s c3VwZXIgJX0KKworCitVUERBVEUgcGdfYXV0aGlkIFNFVCByb2xjYXR1cGRh dGU9ZmFsc2UgV0hFUkUgcm9sbmFtZSA9IHt7IHJvbG5hbWV8cXRMaXRlcmFs IH19OworCit7JSBlbGlmCisJcm9sU3VwZXIgYW5kCisJJ3JvbHN1cGVyJyBu b3QgaW4gZGF0YSBhbmQKKwkncm9sY2F0dXBkYXRlJyBpbiBkYXRhICV9Cit7 JSBpZiBkYXRhLnJvbGNhdHVwZGF0ZSAlfQorCisKK1VQREFURSBwZ19hdXRo aWQgU0VUIHJvbGNhdHVwZGF0ZT10cnVlIFdIRVJFIHJvbG5hbWUgPSB7eyBy b2xuYW1lfHF0TGl0ZXJhbCB9fTsKKworeyUgZWxzZSAlfQorCisKK1VQREFU RSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT1mYWxzZSBXSEVSRSByb2xu YW1lID0ge3sgcm9sbmFtZXxxdExpdGVyYWwgfX07CisKK3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgJ3Jldm9rZWRfYWRtaW5zJyBpbiBkYXRh IGFuZAorCWRhdGEucmV2b2tlZF9hZG1pbnN8bGVuZ3RoID4gMAorJX0KKwor LS0gUmV2b2tlZCB0aGUgYWRtaW4gb3B0aW9ucyBmcm9tIHRoZSBtZW1iZXJz CitSRVZPS0UgQURNSU4gT1BUSU9OIEZPUiB7eyBjb25ufHF0SWRlbnQoZGF0 YS5yZXZva2VkX2FkbWlucyl8am9pbignLCAnKSB9fSBGUk9NIHt7IGNvbm58 cXRJZGVudChyb2xuYW1lKSB9fTt7JSBlbmRpZiAlfXslIGlmICdyZXZva2Vk JyBpbiBkYXRhIGFuZCBkYXRhLnJldm9rZWR8bGVuZ3RoID4gMCAlfQorCisK Ky0tIEZvbGxvd2luZyBhcmUgbm8gbW9yZSB0aGUgbWVtYmVycworUkVWT0tF IHt7IGNvbm58cXRJZGVudChkYXRhLnJldm9rZWQpfGpvaW4oJywgJykgfX0g RlJPTSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX07eyUgZW5kaWYgJX17 JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5hZG1pbnN8bGVuZ3RoID4gMCAl fQorCistLSBGb2xsb3dpbmcgYXJlIHRoZSBuZXcgYWRtaW5zIChvciwgZXhp c3RpbmcgbWVtYmVycyBtYWRlIGFkbWlucykKK0dSQU5UIHt7IGNvbm58cXRJ ZGVudChkYXRhLmFkbWlucyl8am9pbignLCAnKSB9fSBUTyB7eyBjb25ufHF0 SWRlbnQocm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBPUFRJT047eyUgZW5kaWYg JX17JSBpZiBkYXRhLm1lbWJlcnMgYW5kIGRhdGEubWVtYmVyc3xsZW5ndGgg PiAwICV9CisKKworLS0gRm9sbG93aW5nIGFyZSB0aGUgbmV3IG1lbWJlcnMK K0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1lbWJlcnMpfGpvaW4oJywg JykgfX0gVE8ge3sgY29ubnxxdElkZW50KHJvbG5hbWUpIH19O3slIGVuZGlm ICV9Cit7JSBpZiAndmFyaWFibGVzJyBpbiBkYXRhIGFuZCBkYXRhLnZhcmlh Ymxlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgdmFyaWFibGVzID0gZGF0YS52 YXJpYWJsZXMgJX0KK3slIGlmICdkZWxldGVkJyBpbiB2YXJpYWJsZXMgYW5k IHZhcmlhYmxlcy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHZh ciBpbiB2YXJpYWJsZXMuZGVsZXRlZCAlfQore3sgVkFSSUFCTEUuUkVTRVQo Y29ubiwgdmFyLmRhdGFiYXNlLCByb2xuYW1lLCB2YXIubmFtZSkgfX0KK3sl IGVuZGZvciAlfXslIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIHZhcmlh YmxlcyBhbmQgdmFyaWFibGVzLmFkZGVkfGxlbmd0aCA+IDAgJX0KKworeyUg Zm9yIHZhciBpbiB2YXJpYWJsZXMuYWRkZWQgJX0KK3t7IFZBUklBQkxFLkFQ UExZKGNvbm4sIHZhci5kYXRhYmFzZSwgcm9sbmFtZSwgdmFyLm5hbWUsIHZh ci52YWx1ZSkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9Cit7JSBpZiAn Y2hhbmdlZCcgaW4gdmFyaWFibGVzIGFuZCB2YXJpYWJsZXMuY2hhbmdlZHxs ZW5ndGggPiAwICV9CisKK3slIGZvciB2YXIgaW4gdmFyaWFibGVzLmNoYW5n ZWQgJX0KK3t7IFZBUklBQkxFLkFQUExZKGNvbm4sIHZhci5kYXRhYmFzZSwg cm9sbmFtZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnZGVzY3JpcHRp b24nIGluIGRhdGEgJX0KKworCitDT01NRU5UIE9OIFJPTEUge3sgY29ubnxx dElkZW50KHJvbG5hbWUpIH19IElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRM aXRlcmFsIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBs YXRlcy9yb2xlL3NxbC9wb3N0OV8wL3ZhcmlhYmxlcy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC92YXJpYWJsZXMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjIwYzEKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC92YXJp YWJsZXMuc3FsCkBAIC0wLDAgKzEsMjUgQEAKK1NFTEVDVAorICAgIHNwbGl0 X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFTIG5hbWUsIHJlcGxhY2Uocm9s Y29uZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScs ICcnKSBBUyB2YWx1ZSwgTlVMTDo6dGV4dCBBUyBkYXRhYmFzZQorRlJPTQor ICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHVubmVzdChyb2xjb25maWcpIEFT IHJvbGNvbmZpZywgcm9sY2FubG9naW4sIHJvbG5hbWUKKyAgICBGUk9NCisg ICAgICAgIHBnX2NhdGFsb2cucGdfcm9sZXMKKyAgICBXSEVSRQorICAgICAg ICBvaWQ9e3sgcmlkfHF0TGl0ZXJhbCB9fTo6T0lECisgICAgKSByCisKK1VO SU9OIEFMTAorU0VMRUNUCisgICAgc3BsaXRfcGFydChyb2xjb25maWcsICc9 JywgMSkgQVMgbmFtZSwgcmVwbGFjZShyb2xjb25maWcsIHNwbGl0X3BhcnQo cm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZhbHVlLCBkYXRu YW1lIEFTIGRhdGFiYXNlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBk LmRhdG5hbWUsIHVubmVzdChjLnNldGNvbmZpZykgQVMgcm9sY29uZmlnCisg ICAgRlJPTQorICAgICAgICAoU0VMRUNUICoKKyAgICAgICAgRlJPTSBwZ19j YXRhbG9nLnBnX2RiX3JvbGVfc2V0dGluZyBkcgorICAgICAgICBXSEVSRQor ICAgICAgICAgICAgZHIuc2V0cm9sZT17eyByaWR8cXRMaXRlcmFsIH19OjpP SUQgQU5EIGRyLnNldGRhdGFiYXNlIT0wCisgICAgICAgICkgYworICAgICAg ICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19kYXRhYmFzZSBkIE9OIChkLm9p ZCA9IGMuc2V0ZGF0YWJhc2UpCisgICAgKSBhOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMv dGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzEvY3JlYXRlLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rl bXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL2NyZWF0ZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjODBmYgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL2NyZWF0 ZS5zcWwKQEAgLTAsMCArMSw1NCBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2Vj dXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNy b3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQorQ1JFQVRFIHsl IGlmIGRhdGEucm9sY2FubG9naW4gJX1VU0VSeyUgZWxzZSAlfVJPTEV7JSBl bmRpZiAlfSB7eyBjb25ufHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBXSVRI eyUgaWYgZGF0YS5yb2xjYW5sb2dpbiBhbmQgZGF0YS5yb2xjYW5sb2dpbiBp cyBzYW1lYXMgVHJ1ZSAgJX0KKworCUxPR0lOeyUgZWxzZSAlfQorCisJTk9M T0dJTnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xzdXBlciAlfQorCisJU1VQ RVJVU0VSeyUgZWxzZSAlfQorCisJTk9TVVBFUlVTRVJ7JSBlbmRpZiAlfXsl IGlmIGRhdGEucm9sY3JlYXRlZGIgJX0KKworCUNSRUFURURCeyUgZWxzZSAl fQorCisJTk9DUkVBVEVEQnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xjcmVh dGVyb2xlICV9CisKKwlDUkVBVEVST0xFeyUgZWxzZSAlfQorCisJTk9DUkVB VEVST0xFeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbGluaGVyaXQgaXMgc2Ft ZWFzIHRydWUgJX0KKworCUlOSEVSSVR7JSBlbHNlICV9CisKKwlOT0lOSEVS SVR7JSBlbmRpZiAlfXslIGlmIGRhdGEucm9scmVwbGljYXRpb24gJX0KKwor CVJFUExJQ0FUSU9OeyUgZWxzZSAlfQorCisJTk9SRVBMSUNBVElPTnslIGVu ZGlmICV9eyUgaWYgJ3JvbGNvbm5saW1pdCcgaW4gZGF0YSBhbmQgZGF0YS5y b2xjb25ubGltaXQgaXMgbnVtYmVyIGFuZCBkYXRhLnJvbGNvbm5saW1pdCA+ PSAtMSAlfQorCisJQ09OTkVDVElPTiBMSU1JVCB7eyBkYXRhLnJvbGNvbm5s aW1pdCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2x2YWxpZHVudGlsIGFu ZCBkYXRhLnJvbHZhbGlkdW50aWwgaXMgbm90IG5vbmUgJX0KKworCVZBTElE IFVOVElMIHt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX0geyUg ZW5kaWYgJX17JSBpZiBkYXRhLnJvbHBhc3N3b3JkICV9CisKKwlQQVNTV09S RCB7JSBpZiBkYXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUgJX1OVUxMeyUgZWxz ZSAlfXslIGlmIGR1bW15ICV9J3h4eHh4eCd7JSBlbHNlICV9IHt7IGRhdGEu cm9scGFzc3dvcmQgfCBxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGVuZGlm ICV9eyUgZW5kaWYgJX07eyUgaWYgZGF0YS5yb2xzdXBlciBhbmQgZGF0YS5y b2xjYXR1cGRhdGUgaXMgc2FtZWFzIGZhbHNlICV9CisKKworVVBEQVRFIHBn X2F1dGhpZCBTRVQgcm9sY2F0dXBkYXRlPWZhbHNlIFdIRVJFIHJvbG5hbWUg PSB7eyBkYXRhLnJvbG5hbWV8cXRMaXRlcmFsIH19O3slIGVuZGlmICV9eyUg aWYgZGF0YS5tZW1iZXJzIGFuZCBkYXRhLm1lbWJlcnN8bGVuZ3RoID4gMCAl fQorCisKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1lbWJlcnMpfGpv aW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEucm9sbmFtZSkg fX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5hZG1p bnN8bGVuZ3RoID4gMCAlfQorCitHUkFOVCB7eyBjb25ufHF0SWRlbnQoZGF0 YS5hZG1pbnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KGRh dGEucm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBPUFRJT047eyUgZW5kaWYgJX17 JSBpZiBkYXRhLnNlY2xhYmVscyBhbmQgZGF0YS5zZWNsYWJlbHN8bGVuZ3Ro ID4gMCAlfQorCit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfQorCit7 eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnUk9MRScsIGRhdGEucm9sbmFtZSwg ci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlm ICV9eyUgaWYgZGF0YS52YXJpYWJsZXMgJX0KKworeyUgZm9yIHZhciBpbiBk YXRhLnZhcmlhYmxlcyAlfQorCit7eyBWQVJJQUJMRS5BUFBMWShjb25uLCB2 YXIuZGF0YWJhc2UsIGRhdGEucm9sbmFtZSwgdmFyLm5hbWUsIHZhci52YWx1 ZSkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS5kZXNj cmlwdGlvbiAlfQorCitDT01NRU5UIE9OIFJPTEUge3sgY29ubnxxdElkZW50 KGRhdGEucm9sbmFtZSkgfX0gSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExp dGVyYWwgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxh dGVzL3JvbGUvc3FsL3Bvc3Q5XzEvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVz L3JvbGUvc3FsL3Bvc3Q5XzEvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmZjZDRlNDgKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMS9ub2Rlcy5zcWwKQEAg LTAsMCArMSw4IEBACitTRUxFQ1QKKwlyLm9pZCwgci5yb2xuYW1lLCByLnJv bGNhbmxvZ2luLCByLnJvbHN1cGVyCitGUk9NCisJe3sgcm9sZV90YmwgfX0g cgoreyUgaWYgcmlkICV9CitXSEVSRSByLm9pZCA9IHt7IHJpZCB9fTo6aW50 Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgci5yb2xjYW5sb2dpbiwgci5yb2xu YW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlf MS9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0 OV8xL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmJiNTZlYzQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDlfMS9wcm9wZXJ0aWVzLnNxbApAQCAtMCww ICsxLDE3IEBACitTRUxFQ1QKKwlyLm9pZCwgci4qLAorCXBnX2NhdGFsb2cu c2hvYmpfZGVzY3JpcHRpb24oci5vaWQsICdwZ19hdXRoaWQnKSBBUyBkZXNj cmlwdGlvbiwKKwlBUlJBWSgKKwkJU0VMRUNUCisJCQlDQVNFIFdIRU4gYW0u YWRtaW5fb3B0aW9uIFRIRU4gJzEnIEVMU0UgJzAnIEVORCB8fCBybS5yb2xu YW1lCisJCUZST00KKwkJCShTRUxFQ1QgKiBGUk9NIHBnX2F1dGhfbWVtYmVy cyBXSEVSRSBtZW1iZXIgPSByLm9pZCkgYW0KKwkJCUxFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX3JvbGVzIHJtIE9OIChybS5vaWQgPSBhbS5yb2xlaWQpCisJ KSByb2xtZW1iZXJzaGlwLAorCShTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVy IHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zaHNlY2xhYmVsIHNsMSBXSEVS RSBzbDEub2Jqb2lkPXIub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00KKwl7eyBy b2xlX3RibCB9fSByCit7JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sg cmlkIH19OjppbnQKK3slIGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxv Z2luLCByLnJvbG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L3NxbC9wb3N0OV8xL3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwv cG9zdDlfMS9zcWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmFiNzhiYWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDlfMS9zcWwuc3FsCkBAIC0wLDAgKzEsMTE5IEBA CitTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUn XG5cbicpCitGUk9NCisoU0VMRUNUCisJQ0FTRSBXSEVOIHJvbGNhbmxvZ2lu IFRIRU4gJy0tIFVzZXI6ICcgRUxTRSAnLS0gUm9sZTogJyBFTkQJfHwKKwkJ cGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fAorCQlFJ1xuLS0g RFJPUCAnIHx8IENBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdVU0VSICcg RUxTRSAnUk9MRSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50 KHJvbG5hbWUpIHx8IEUnO1xuXG5DUkVBVEUgJyB8fAorCQlDQVNFIFdIRU4g cm9sY2FubG9naW4gVEhFTiAnVVNFUiAnIEVMU0UgJ1JPTEUgJyBFTkQgfHwK KwkJcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fCBFJyBXSVRI XG4gICcgfHwKKwkJQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRIRU4gJ0xPR0lO JyBFTFNFICdOT0xPR0lOJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdI RU4gcm9sY2FubG9naW4gQU5EIHJvbHBhc3N3b3JkIExJS0UgJ21kNSUlJyBU SEVOICdFTkNSWVBURUQgUEFTU1dPUkQgJyB8fCBxdW90ZV9saXRlcmFsKHJv bHBhc3N3b3JkKSB8fCBFJ1xuICAnIEVMU0UgJycgRU5EIHx8CisJCUNBU0Ug V0hFTiByb2xzdXBlciBUSEVOICdTVVBFUlVTRVInIEVMU0UgJ05PU1VQRVJV U0VSJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9saW5oZXJp dCBUSEVOICdJTkhFUklUJyBFTFNFICdOT0lOSEVSSVQnIEVORCB8fCBFJ1xu ICAnIHx8CisJCUNBU0UgV0hFTiByb2xjcmVhdGVkYiBUSEVOICdDUkVBVEVE QicgRUxTRSAnTk9DUkVBVEVEQicgRU5EIHx8IEUnXG4gICcgfHwKKwkJQ0FT RSBXSEVOIHJvbGNyZWF0ZXJvbGUgVEhFTiAnQ1JFQVRFUk9MRScgRUxTRSAn Tk9DUkVBVEVST0xFJyBFTkQgfHwgRSdcbiAgJyB8fAorCQktLSBQb3N0Z3Jl U1FMID49ICA5LjEKKwkJQ0FTRSBXSEVOIHJvbHJlcGxpY2F0aW9uIFRIRU4g J1JFUExJQ0FUSU9OJyBFTFNFICdOT1JFUExJQ0FUSU9OJyBFTkQgfHwKKwkJ Q0FTRSBXSEVOIHJvbGNvbm5saW1pdCA+IDAgVEhFTiBFJ1xuICBDT05ORUNU SU9OIExJTUlUICcgfHwgcm9sY29ubmxpbWl0IEVMU0UgJycgRU5EIHx8CisJ CUNBU0UgV0hFTiByb2x2YWxpZHVudGlsIElTIE5PVCBOVUxMIFRIRU4gRSdc biAgVkFMSUQgVU5USUwgJyB8fCBxdW90ZV9saXRlcmFsKHJvbHZhbGlkdW50 aWw6OnRleHQpIEVMU0UgJzsnIEVORCB8fAorCQktLSBQb3N0Z3JlU1FMIDwg OS41CisJCUNBU0UgV0hFTiByb2xzdXBlciBBTkQgTk9UIHJvbGNhdHVwZGF0 ZSBUSEVOIEUnXG5cblVQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0 ZT1mYWxzZSBXSEVSRSByb2xuYW1lPScgfHwgcGdfY2F0YWxvZy5xdW90ZV9s aXRlcmFsKHJvbG5hbWUpIHx8ICc7JyBFTFNFICcnIEVORCBBUyBzcWwKK0ZS T00KKwl7eyByb2xlX3RibCB9fSByCitXSEVSRQorCXIub2lkPSUocmlkKXM6 Ok9JRAorVU5JT04gQUxMCisoU0VMRUNUCisJYXJyYXlfdG9fc3RyaW5nKGFy cmF5X2FnZyhzcWwpLCBFJ1xuJykKK0ZST00KKyhTRUxFQ1QKKwknR1JBTlQg JyB8fCBhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHJvbG5hbWUpLCAnLCAn KSB8fCAnIFRPICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRf dXNlcmJ5aWQoJShyaWQpczo6T0lEKSkgfHwKKwlDQVNFIFdIRU4gYWRtaW5f b3B0aW9uIFRIRU4gJyBXSVRIIEFETUlOIE9QVElPTjsnIEVMU0UgJzsnIEVO RCBzcWwKK0ZST00KKwkoU0VMRUNUCisJCXF1b3RlX2lkZW50KHIucm9sbmFt ZSkgQVMgcm9sbmFtZSwgbS5hZG1pbl9vcHRpb24gQVMgYWRtaW5fb3B0aW9u CisJRlJPTQorCQlwZ19hdXRoX21lbWJlcnMgbQorCQlMRUZUIEpPSU4gcGdf cm9sZXMgciBPTiAobS5yb2xlaWQgPSByLm9pZCkKKwlXSEVSRQorCQltLm1l bWJlcj0lKHJpZClzOjpPSUQKKwlPUkRFUiBCWQorCQlyLnJvbG5hbWUKKwkp IGEKK0dST1VQIEJZIGFkbWluX29wdGlvbikgcykKK1VOSU9OIEFMTAorKFNF TEVDVAorCWFycmF5X3RvX3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcbicp IHNxbAorRlJPTQorKFNFTEVDVAorCSdBTFRFUiAnIHx8IENBU0UgV0hFTiBy b2xjYW5sb2dpbiBUSEVOICdVU0VSICcgRUxTRSAnUk9MRSAnIEVORCB8fCBw Z19jYXRhbG9nLnF1b3RlX2lkZW50KHJvbG5hbWUpIHx8ICcgU0VUICcgfHwg cGFyYW0gfHwgJyBUTyAnIHx8IENBU0UgV0hFTiBwYXJhbSBJTiAoJ3NlYXJj aF9wYXRoJywgJ3RlbXBfdGFibGVzcGFjZXMnKSBUSEVOIHZhbHVlIEVMU0Ug cXVvdGVfbGl0ZXJhbCh2YWx1ZSkgRU5EIHx8ICc7JyBBUyBzcWwKK0ZST00K KyhTRUxFQ1QKKwlyb2xjYW5sb2dpbiwgcm9sbmFtZSwgc3BsaXRfcGFydChy b2xjb25maWcsICc9JywgMSkgQVMgcGFyYW0sIHJlcGxhY2Uocm9sY29uZmln LCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScsICcnKSBB UyB2YWx1ZQorRlJPTQorCShTRUxFQ1QKKwkJCXVubmVzdChyb2xjb25maWcp IEFTIHJvbGNvbmZpZywgcm9sY2FubG9naW4sIHJvbG5hbWUKKwlGUk9NCisJ CXBnX2NhdGFsb2cucGdfcm9sZXMKKwlXSEVSRQorCQlvaWQ9JShyaWQpczo6 T0lECisJKSByCispIGEpIGIpCistLSBQb3N0Z3JlU1FMID49IDkuMAorVU5J T04gQUxMCisoU0VMRUNUCisJYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhz cWwpLCBFJ1xuJykgQVMgc3FsCitGUk9NCisJKFNFTEVDVAorCQknQUxURVIg Uk9MRSAnIHx8IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocGdfZ2V0X3VzZXJi eWlkKCUocmlkKXM6Ok9JRCkpIHx8CisJCScgSU4gREFUQUJBU0UgJyB8fCBw Z19jYXRhbG9nLnF1b3RlX2lkZW50KGRhdG5hbWUpIHx8CisJCScgU0VUICcg fHwgcGFyYW18fCAnIFRPICcgfHwKKwkJQ0FTRQorCQlXSEVOIHBhcmFtIElO ICgnc2VhcmNoX3BhdGgnLCAndGVtcF90YWJsZXNwYWNlcycpIFRIRU4gdmFs dWUKKwkJRUxTRSBxdW90ZV9saXRlcmFsKHZhbHVlKQorCQlFTkQgfHwgJzsn IEFTIHNxbAorCUZST00KKwkJKFNFTEVDVAorCQkJZGF0bmFtZSwgc3BsaXRf cGFydChyb2xjb25maWcsICc9JywgMSkgQVMgcGFyYW0sIHJlcGxhY2Uocm9s Y29uZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScs ICcnKSBBUyB2YWx1ZQorCQlGUk9NCisJCQkoU0VMRUNUCisJCQkJZC5kYXRu YW1lLCB1bm5lc3QoYy5zZXRjb25maWcpIEFTIHJvbGNvbmZpZworCQkJRlJP TQorCQkJCShTRUxFQ1QgKgorCQkJCUZST00KKwkJCQkJcGdfY2F0YWxvZy5w Z19kYl9yb2xlX3NldHRpbmcgZHIKKwkJCQlXSEVSRQorCQkJCQlkci5zZXRy b2xlPSUocmlkKXM6Ok9JRCBBTkQgZHIuc2V0ZGF0YWJhc2UhPTApIGMKKwkJ CQlMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19kYXRhYmFzZSBkIE9OIChkLm9p ZCA9IGMuc2V0ZGF0YWJhc2UpCisJCQkpIGEKKwkJKSBiCisJKSBkCispCitV TklPTiBBTEwKKyhTRUxFQ1QKKwknQ09NTUVOVCBPTiBST0xFICcgfHwgcGdf Y2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNlcmJ5aWQoJShyaWQpczo6 T0lEKSkgfHwgJyBJUyAnIHx8ICBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwo ZGVzY3JpcHRpb24pIHx8ICc7JyBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCXBn X2NhdGFsb2cuc2hvYmpfZGVzY3JpcHRpb24oJShyaWQpczo6T0lELCAncGdf YXV0aGlkJykgQVMgZGVzY3JpcHRpb24pIGEKK1dIRVJFCisJZGVzY3JpcHRp b24gSVMgTk9UIE5VTEwpCistLSBQb3N0Z3JlU1FMID49IDkuMgorVU5JT04g QUxMCisoU0VMRUNUCisJYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwp LCBFJ1xuJykgQVMgc3FsCitGUk9NCisJKFNFTEVDVAorCQknU0VDVVJJVFkg TEFCRUwgRk9SICcgfHwgcHJvdmlkZXIgfHwKKwkJRSdcbiAgT04gUk9MRSAn IHx8IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwKKwkJRSdc biAgSVMgJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwobGFiZWwpIHx8 ICc7JyBBUyBzcWwKKwlGUk9NCisJCShTRUxFQ1QKKwkJCWxhYmVsLCBwcm92 aWRlciwgcm9sbmFtZQorCQlGUk9NCisJCQkoU0VMRUNUICoKKwkJCUZST00K KwkJCQlwZ19zaHNlY2xhYmVsIHNsMQorCQkJV0hFUkUgc2wxLm9iam9pZD0l KHJpZClzOjpPSUQpIHMKKwkJCUxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3Jv bGVzIHIgT04gKHMub2Jqb2lkPXIub2lkKSkgYSkgYgorKSkgQVMgYQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzEvdXBkYXRl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL3VwZGF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlOWJk ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9w b3N0OV8xL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxMzIgQEAKK3slIGltcG9y dCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGltcG9ydCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUg JX0KK3slIGlmICdyb2xuYW1lJyBpbiBkYXRhICV9Cit7JSBzZXQgcm9sbmFt ZT1kYXRhLnJvbG5hbWUgJX0KK0FMVEVSeyUgaWYgcm9sQ2FuTG9naW4gJX0g VVNFUiB7JSBlbHNlICV9IFJPTEUgeyUgZW5kaWYgJX17eyBjb25ufHF0SWRl bnQocm9sZSkgfX0KKwlSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KHJvbG5h bWUpIH19OworCit7JSBlbHNlICV9Cit7JSBzZXQgcm9sbmFtZT1yb2xlICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YXxoYXNBbnkoYWx0ZXJLZXlzKSAl fQorQUxURVIgeyUgaWYgcm9sQ2FuTG9naW4gJX1VU0VSeyUgZWxzZSAlfVJP TEV7JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX17JSBp ZiAncm9sY2FubG9naW4nIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5yb2xj YW5sb2dpbiAlfQorCUxPR0lOeyUgZWxzZSAlfQorCU5PTE9HSU57JSBlbmRp ZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbHN1cGVyJyBpbiBkYXRhICV9CisK K3slIGlmIGRhdGEucm9sc3VwZXIgJX0KKwlTVVBFUlVTRVJ7JSBlbHNlICV9 CisJTk9TVVBFUlVTRVJ7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3Jv bGNyZWF0ZWRiJyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9sY3JlYXRl ZGIgJX0KKwlDUkVBVEVEQnslIGVsc2UgJX0KKwlOT0NSRUFURURCeyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xjcmVhdGVyb2xlJyBpbiBkYXRh ICV9CisKK3slIGlmIGRhdGEucm9sY3JlYXRlcm9sZSAlfQorCUNSRUFURVJP TEV7JSBlbHNlICV9CisJTk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBlbmRp ZiAlfXslIGlmICdyb2xpbmhlcml0JyBpbiBkYXRhICV9CisKK3slIGlmIGRh dGEucm9saW5oZXJpdCAlfQorCUlOSEVSSVR7JSBlbHNlICV9CisJTk9JTkhF UklUeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xyZXBsaWNhdGlv bicgaW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbHJlcGxpY2F0aW9uICV9 CisJUkVQTElDQVRJT057JSBlbHNlICV9CisJTk9SRVBMSUNBVElPTnslIGVu ZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9sY29ubmxpbWl0JyBpbiBkYXRh IGFuZCBkYXRhLnJvbGNvbm5saW1pdCBpcyBudW1iZXIgYW5kIGRhdGEucm9s Y29ubmxpbWl0ID49IC0xICV9CisKKwlDT05ORUNUSU9OIExJTUlUIHt7IGRh dGEucm9sY29ubmxpbWl0IH19Cit7JSBlbmRpZiAlfXslIGlmICdyb2x2YWxp ZHVudGlsJyBpbiBkYXRhIGFuZCBkYXRhLnJvbHZhbGlkdW50aWwgJX0KKwor CVZBTElEIFVOVElMIHslIGlmIGRhdGEucm9sdmFsaWR1bnRpbCBpcyBub3Qg bm9uZSAlfXt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX17JSBl bHNlICV9J2luZmluaXR5JworeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlm ICdyb2xwYXNzd29yZCcgaW4gZGF0YSAlfQorCisJUEFTU1dPUkR7JSBpZiBk YXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUgJX0gTlVMTHslIGVsc2UgJX17JSBp ZiBkdW1teSAlfSAneHh4eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNz d29yZHxxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgZW5k aWYgJX07eyUgZW5kaWYgJX0KKworeyUgaWYKKwlub3Qgcm9sU3VwZXIgYW5k CisJJ3JvbHN1cGVyJyBpbiBkYXRhIGFuZAorCSdyb2xjYXR1cGRhdGUnIG5v dCBpbiBkYXRhIGFuZAorCWRhdGEucm9sc3VwZXIgJX0KKworCitVUERBVEUg cGdfYXV0aGlkIFNFVCByb2xjYXR1cGRhdGU9ZmFsc2UgV0hFUkUgcm9sbmFt ZSA9IHt7IHJvbG5hbWV8cXRMaXRlcmFsIH19OworCit7JSBlbGlmCisJcm9s U3VwZXIgYW5kCisJJ3JvbHN1cGVyJyBub3QgaW4gZGF0YSBhbmQKKwkncm9s Y2F0dXBkYXRlJyBpbiBkYXRhICV9Cit7JSBpZiBkYXRhLnJvbGNhdHVwZGF0 ZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT10 cnVlIFdIRVJFIHJvbG5hbWUgPSB7eyByb2xuYW1lfHF0TGl0ZXJhbCB9fTsK KworeyUgZWxzZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNh dHVwZGF0ZT1mYWxzZSBXSEVSRSByb2xuYW1lID0ge3sgcm9sbmFtZXxxdExp dGVyYWwgfX07CisKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYg J3Jldm9rZWRfYWRtaW5zJyBpbiBkYXRhIGFuZAorCWRhdGEucmV2b2tlZF9h ZG1pbnN8bGVuZ3RoID4gMAorJX0KKworLS0gUmV2b2tlZCB0aGUgYWRtaW4g b3B0aW9ucyBmcm9tIHRoZSBtZW1iZXJzCitSRVZPS0UgQURNSU4gT1BUSU9O IEZPUiB7eyBjb25ufHF0SWRlbnQoZGF0YS5yZXZva2VkX2FkbWlucyl8am9p bignLCAnKSB9fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fTt7 JSBlbmRpZiAlfXslIGlmICdyZXZva2VkJyBpbiBkYXRhIGFuZCBkYXRhLnJl dm9rZWR8bGVuZ3RoID4gMCAlfQorCisKKy0tIEZvbGxvd2luZyBhcmUgbm8g bW9yZSB0aGUgbWVtYmVycworUkVWT0tFIHt7IGNvbm58cXRJZGVudChkYXRh LnJldm9rZWQpfGpvaW4oJywgJykgfX0gRlJPTSB7eyBjb25ufHF0SWRlbnQo cm9sbmFtZSkgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQg ZGF0YS5hZG1pbnN8bGVuZ3RoID4gMCAlfQorCistLSBGb2xsb3dpbmcgYXJl IHRoZSBuZXcgYWRtaW5zIChvciwgZXhpc3RpbmcgbWVtYmVycyBtYWRlIGFk bWlucykKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLmFkbWlucyl8am9p bignLCAnKSB9fSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX0gV0lU SCBBRE1JTiBPUFRJT047eyUgZW5kaWYgJX17JSBpZiBkYXRhLm1lbWJlcnMg YW5kIGRhdGEubWVtYmVyc3xsZW5ndGggPiAwICV9CisKKworLS0gRm9sbG93 aW5nIGFyZSB0aGUgbmV3IG1lbWJlcnMKK0dSQU5UIHt7IGNvbm58cXRJZGVu dChkYXRhLm1lbWJlcnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElk ZW50KHJvbG5hbWUpIH19O3slIGVuZGlmICV9eyUgaWYgZGF0YS5zZWNsYWJl bHMgYW5kCisJZGF0YS5zZWNsYWJlbHN8bGVuZ3RoID4gMAorJX17JSBzZXQg c2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVk JyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+ IDAgJX0KKworeyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7 IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1JPTEUnLCBkYXRhLnJvbG5hbWUsIHIu cHJvdmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBp ZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxl bmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9 Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnUk9MRScsIGRhdGEucm9sbmFt ZSwgci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNl Y2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4g c2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4s ICdST0xFJywgZGF0YS5yb2xuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sl IGlmICd2YXJpYWJsZXMnIGluIGRhdGEgYW5kIGRhdGEudmFyaWFibGVzfGxl bmd0aCA+IDAgJX0KK3slIHNldCB2YXJpYWJsZXMgPSBkYXRhLnZhcmlhYmxl cyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFi bGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgdmFyIGluIHZh cmlhYmxlcy5kZWxldGVkICV9Cit7eyBWQVJJQUJMRS5SRVNFVChjb25uLCB2 YXIuZGF0YWJhc2UsIHJvbG5hbWUsIHZhci5uYW1lKSB9fQoreyUgZW5kZm9y ICV9eyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gdmFyaWFibGVzIGFu ZCB2YXJpYWJsZXMuYWRkZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgdmFy IGluIHZhcmlhYmxlcy5hZGRlZCAlfQore3sgVkFSSUFCTEUuQVBQTFkoY29u biwgdmFyLmRhdGFiYXNlLCByb2xuYW1lLCB2YXIubmFtZSwgdmFyLnZhbHVl KSB9fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2Vk JyBpbiB2YXJpYWJsZXMgYW5kIHZhcmlhYmxlcy5jaGFuZ2VkfGxlbmd0aCA+ IDAgJX0KKworeyUgZm9yIHZhciBpbiB2YXJpYWJsZXMuY2hhbmdlZCAlfQor e3sgVkFSSUFCTEUuQVBQTFkoY29ubiwgdmFyLmRhdGFiYXNlLCByb2xuYW1l LCB2YXIubmFtZSwgdmFyLnZhbHVlKSB9fQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdkZXNjcmlwdGlvbicgaW4g ZGF0YSAlfQorCisKK0NPTU1FTlQgT04gUk9MRSB7eyBjb25ufHF0SWRlbnQo cm9sbmFtZSkgfX0gSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwg fX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3Jv bGUvc3FsL3Bvc3Q5XzEvdmFyaWFibGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9y b2xlL3NxbC9wb3N0OV8xL3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYjg2MjBjMQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL3ZhcmlhYmxlcy5z cWwKQEAgLTAsMCArMSwyNSBAQAorU0VMRUNUCisgICAgc3BsaXRfcGFydChy b2xjb25maWcsICc9JywgMSkgQVMgbmFtZSwgcmVwbGFjZShyb2xjb25maWcs IHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFT IHZhbHVlLCBOVUxMOjp0ZXh0IEFTIGRhdGFiYXNlCitGUk9NCisgICAgKFNF TEVDVAorICAgICAgICAgICAgdW5uZXN0KHJvbGNvbmZpZykgQVMgcm9sY29u ZmlnLCByb2xjYW5sb2dpbiwgcm9sbmFtZQorICAgIEZST00KKyAgICAgICAg cGdfY2F0YWxvZy5wZ19yb2xlcworICAgIFdIRVJFCisgICAgICAgIG9pZD17 eyByaWR8cXRMaXRlcmFsIH19OjpPSUQKKyAgICApIHIKKworVU5JT04gQUxM CitTRUxFQ1QKKyAgICBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSBB UyBuYW1lLCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25m aWcsICc9JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUsIGRhdG5hbWUgQVMg ZGF0YWJhc2UKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGQuZGF0bmFt ZSwgdW5uZXN0KGMuc2V0Y29uZmlnKSBBUyByb2xjb25maWcKKyAgICBGUk9N CisgICAgICAgIChTRUxFQ1QgKgorICAgICAgICBGUk9NIHBnX2NhdGFsb2cu cGdfZGJfcm9sZV9zZXR0aW5nIGRyCisgICAgICAgIFdIRVJFCisgICAgICAg ICAgICBkci5zZXRyb2xlPXt7IHJpZHxxdExpdGVyYWwgfX06Ok9JRCBBTkQg ZHIuc2V0ZGF0YWJhc2UhPTAKKyAgICAgICAgKSBjCisgICAgICAgIExFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIGQgT04gKGQub2lkID0gYy5z ZXRkYXRhYmFzZSkKKyAgICApIGE7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDlfNC9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVz L3JvbGUvc3FsL3Bvc3Q5XzQvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5lYmZlNmNlCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvY3JlYXRlLnNxbApA QCAtMCwwICsxLDUxIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1cml0eS5t YWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92YXJp YWJsZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9CitDUkVBVEUgeyUgaWYgZGF0 YS5yb2xjYW5sb2dpbiAlfVVTRVJ7JSBlbHNlICV9Uk9MRXslIGVuZGlmICV9 IHt7IGNvbm58cXRJZGVudChkYXRhLnJvbG5hbWUpIH19IFdJVEh7JSBpZiBk YXRhLnJvbGNhbmxvZ2luIGFuZCBkYXRhLnJvbGNhbmxvZ2luIGlzIHNhbWVh cyBUcnVlICAlfQorCisJTE9HSU57JSBlbHNlICV9CisKKwlOT0xPR0lOeyUg ZW5kaWYgJX17JSBpZiBkYXRhLnJvbHN1cGVyICV9CisKKwlTVVBFUlVTRVJ7 JSBlbHNlICV9CisKKwlOT1NVUEVSVVNFUnslIGVuZGlmICV9eyUgaWYgZGF0 YS5yb2xjcmVhdGVkYiAlfQorCisJQ1JFQVRFREJ7JSBlbHNlICV9CisKKwlO T0NSRUFURURCeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbGNyZWF0ZXJvbGUg JX0KKworCUNSRUFURVJPTEV7JSBlbHNlICV9CisKKwlOT0NSRUFURVJPTEV7 JSBlbmRpZiAlfXslIGlmIGRhdGEucm9saW5oZXJpdCBpcyBzYW1lYXMgdHJ1 ZSAlfQorCisJSU5IRVJJVHslIGVsc2UgJX0KKworCU5PSU5IRVJJVHslIGVu ZGlmICV9eyUgaWYgZGF0YS5yb2xyZXBsaWNhdGlvbiAlfQorCisJUkVQTElD QVRJT057JSBlbHNlICV9CisKKwlOT1JFUExJQ0FUSU9OeyUgZW5kaWYgJX17 JSBpZiAncm9sY29ubmxpbWl0JyBpbiBkYXRhIGFuZCBkYXRhLnJvbGNvbm5s aW1pdCBpcyBudW1iZXIgYW5kIGRhdGEucm9sY29ubmxpbWl0ID49IC0xICV9 CisKKwlDT05ORUNUSU9OIExJTUlUIHt7IGRhdGEucm9sY29ubmxpbWl0IH19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbHZhbGlkdW50aWwgYW5kIGRhdGEu cm9sdmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAlfQorCisJVkFMSUQgVU5USUwg e3sgZGF0YS5yb2x2YWxpZHVudGlsfHF0TGl0ZXJhbCB9fSB7JSBlbmRpZiAl fXslIGlmIGRhdGEucm9scGFzc3dvcmQgJX0KKworCVBBU1NXT1JEIHslIGlm IGRhdGEucm9scGFzc3dvcmQgaXMgbm9uZSAlfU5VTEx7JSBlbHNlICV9eyUg aWYgZHVtbXkgJX0neHh4eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNz d29yZCB8IHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBl bmRpZiAlfTt7JSBpZiBkYXRhLm1lbWJlcnMgYW5kIGRhdGEubWVtYmVyc3xs ZW5ndGggPiAwICV9CisKKworR1JBTlQge3sgY29ubnxxdElkZW50KGRhdGEu bWVtYmVycyl8am9pbignLCAnKSB9fSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5yb2xuYW1lKSB9fTt7JSBlbmRpZiAlfXslIGlmIGRhdGEuYWRtaW5zIGFu ZCBkYXRhLmFkbWluc3xsZW5ndGggPiAwICV9CisKK0dSQU5UIHt7IGNvbm58 cXRJZGVudChkYXRhLmFkbWlucyl8am9pbignLCAnKSB9fSBUTyB7eyBjb25u fHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBXSVRIIEFETUlOIE9QVElPTjt7 JSBlbmRpZiAlfXslIGlmIGRhdGEuc2VjbGFiZWxzIGFuZCBkYXRhLnNlY2xh YmVsc3xsZW5ndGggPiAwICV9CisKK3slIGZvciByIGluIGRhdGEuc2VjbGFi ZWxzICV9CisKK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdST0xFJywgZGF0 YS5yb2xuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9y ICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLnZhcmlhYmxlcyAlfQorCit7JSBm b3IgdmFyIGluIGRhdGEudmFyaWFibGVzICV9CisKK3t7IFZBUklBQkxFLkFQ UExZKGNvbm4sIHZhci5kYXRhYmFzZSwgZGF0YS5yb2xuYW1lLCB2YXIubmFt ZSwgdmFyLnZhbHVlKSB9fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gUk9MRSB7eyBj b25ufHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBJUyB7eyBkYXRhLmRlc2Ny aXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC9ub2Rlcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC9ub2Rlcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkNGU0OAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L25v ZGVzLnNxbApAQCAtMCwwICsxLDggQEAKK1NFTEVDVAorCXIub2lkLCByLnJv bG5hbWUsIHIucm9sY2FubG9naW4sIHIucm9sc3VwZXIKK0ZST00KKwl7eyBy b2xlX3RibCB9fSByCit7JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sg cmlkIH19OjppbnQKK3slIGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxv Z2luLCByLnJvbG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L3NxbC9wb3N0OV80L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3Jv bGUvc3FsL3Bvc3Q5XzQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1NmVjNAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L3Byb3BlcnRpZXMu c3FsCkBAIC0wLDAgKzEsMTcgQEAKK1NFTEVDVAorCXIub2lkLCByLiosCisJ cGdfY2F0YWxvZy5zaG9ial9kZXNjcmlwdGlvbihyLm9pZCwgJ3BnX2F1dGhp ZCcpIEFTIGRlc2NyaXB0aW9uLAorCUFSUkFZKAorCQlTRUxFQ1QKKwkJCUNB U0UgV0hFTiBhbS5hZG1pbl9vcHRpb24gVEhFTiAnMScgRUxTRSAnMCcgRU5E IHx8IHJtLnJvbG5hbWUKKwkJRlJPTQorCQkJKFNFTEVDVCAqIEZST00gcGdf YXV0aF9tZW1iZXJzIFdIRVJFIG1lbWJlciA9IHIub2lkKSBhbQorCQkJTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgcm0gT04gKHJtLm9pZCA9IGFt LnJvbGVpZCkKKwkpIHJvbG1lbWJlcnNoaXAsCisJKFNFTEVDVCBhcnJheV9h Z2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3Noc2VjbGFi ZWwgc2wxIFdIRVJFIHNsMS5vYmpvaWQ9ci5vaWQpIEFTIHNlY2xhYmVscwor RlJPTQorCXt7IHJvbGVfdGJsIH19IHIKK3slIGlmIHJpZCAlfQorV0hFUkUg ci5vaWQgPSB7eyByaWQgfX06OmludAoreyUgZW5kaWYgJX0KK09SREVSIEJZ IHIucm9sY2FubG9naW4sIHIucm9sbmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVt cGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvc3FsLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRl cy9yb2xlL3NxbC9wb3N0OV80L3NxbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uODFmZTQwYgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Jv bGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L3NxbC5zcWwKQEAgLTAs MCArMSwxMTcgQEAKK1NFTEVDVAorCWFycmF5X3RvX3N0cmluZyhhcnJheV9h Z2coc3FsKSwgRSdcblxuJykKK0ZST00KKyhTRUxFQ1QKKwlDQVNFIFdIRU4g cm9sY2FubG9naW4gVEhFTiAnLS0gVXNlcjogJyBFTFNFICctLSBSb2xlOiAn IEVORAl8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHJvbG5hbWUpIHx8 CisJCUUnXG4tLSBEUk9QICcgfHwgQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRI RU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8CisJCXBnX2NhdGFsb2cu cXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgRSc7XG5cbkNSRUFURSAnIHx8CisJ CUNBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdVU0VSICcgRUxTRSAnUk9M RSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHJvbG5hbWUp IHx8IEUnIFdJVEhcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9sY2FubG9naW4g VEhFTiAnTE9HSU4nIEVMU0UgJ05PTE9HSU4nIEVORCB8fCBFJ1xuICAnIHx8 CisJCUNBU0UgV0hFTiByb2xjYW5sb2dpbiBBTkQgcm9scGFzc3dvcmQgTElL RSAnbWQ1JSUnIFRIRU4gJ0VOQ1JZUFRFRCBQQVNTV09SRCAnIHx8IHF1b3Rl X2xpdGVyYWwocm9scGFzc3dvcmQpIHx8IEUnXG4gICcgRUxTRSAnJyBFTkQg fHwKKwkJQ0FTRSBXSEVOIHJvbHN1cGVyIFRIRU4gJ1NVUEVSVVNFUicgRUxT RSAnTk9TVVBFUlVTRVInIEVORCB8fCBFJ1xuICAnIHx8CisJCUNBU0UgV0hF TiByb2xpbmhlcml0IFRIRU4gJ0lOSEVSSVQnIEVMU0UgJ05PSU5IRVJJVCcg RU5EIHx8IEUnXG4gICcgfHwKKwkJQ0FTRSBXSEVOIHJvbGNyZWF0ZWRiIFRI RU4gJ0NSRUFURURCJyBFTFNFICdOT0NSRUFURURCJyBFTkQgfHwgRSdcbiAg JyB8fAorCQlDQVNFIFdIRU4gcm9sY3JlYXRlcm9sZSBUSEVOICdDUkVBVEVS T0xFJyBFTFNFICdOT0NSRUFURVJPTEUnIEVORCB8fCBFJ1xuICAnIHx8CisJ CS0tIFBvc3RncmVTUUwgPj0gIDkuMQorCQlDQVNFIFdIRU4gcm9scmVwbGlj YXRpb24gVEhFTiAnUkVQTElDQVRJT04nIEVMU0UgJ05PUkVQTElDQVRJT04n IEVORCB8fAorCQlDQVNFIFdIRU4gcm9sY29ubmxpbWl0ID4gMCBUSEVOIEUn XG4gIENPTk5FQ1RJT04gTElNSVQgJyB8fCByb2xjb25ubGltaXQgRUxTRSAn JyBFTkQgfHwKKwkJQ0FTRSBXSEVOIHJvbHZhbGlkdW50aWwgSVMgTk9UIE5V TEwgVEhFTiBFJ1xuICBWQUxJRCBVTlRJTCAnIHx8IHF1b3RlX2xpdGVyYWwo cm9sdmFsaWR1bnRpbDo6dGV4dCkgRUxTRSAnOycgRU5EIEFTIHNxbAorRlJP TQorCXt7IHJvbGVfdGJsIH19IHIKK1dIRVJFCisJci5vaWQ9JShyaWQpczo6 T0lECitVTklPTiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJy YXlfYWdnKHNxbCksIEUnXG4nKQorRlJPTQorKFNFTEVDVAorCSdHUkFOVCAn IHx8IGFycmF5X3RvX3N0cmluZyhhcnJheV9hZ2cocm9sbmFtZSksICcsICcp IHx8ICcgVE8gJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBnX2dldF91 c2VyYnlpZCglKHJpZClzOjpPSUQpKSB8fAorCUNBU0UgV0hFTiBhZG1pbl9v cHRpb24gVEhFTiAnIFdJVEggQURNSU4gT1BUSU9OOycgRUxTRSAnOycgRU5E IHNxbAorRlJPTQorCShTRUxFQ1QKKwkJcXVvdGVfaWRlbnQoci5yb2xuYW1l KSBBUyByb2xuYW1lLCBtLmFkbWluX29wdGlvbiBBUyBhZG1pbl9vcHRpb24K KwlGUk9NCisJCXBnX2F1dGhfbWVtYmVycyBtCisJCUxFRlQgSk9JTiBwZ19y b2xlcyByIE9OIChtLnJvbGVpZCA9IHIub2lkKQorCVdIRVJFCisJCW0ubWVt YmVyPSUocmlkKXM6Ok9JRAorCU9SREVSIEJZCisJCXIucm9sbmFtZQorCSkg YQorR1JPVVAgQlkgYWRtaW5fb3B0aW9uKSBzKQorVU5JT04gQUxMCisoU0VM RUNUCisJYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwpLCBFJ1xuJykg c3FsCitGUk9NCisoU0VMRUNUCisJJ0FMVEVSICcgfHwgQ0FTRSBXSEVOIHJv bGNhbmxvZ2luIFRIRU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8IHBn X2NhdGFsb2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgJyBTRVQgJyB8fCBw YXJhbSB8fCAnIFRPICcgfHwgQ0FTRSBXSEVOIHBhcmFtIElOICgnc2VhcmNo X3BhdGgnLCAndGVtcF90YWJsZXNwYWNlcycpIFRIRU4gdmFsdWUgRUxTRSBx dW90ZV9saXRlcmFsKHZhbHVlKSBFTkQgfHwgJzsnIEFTIHNxbAorRlJPTQor KFNFTEVDVAorCXJvbGNhbmxvZ2luLCByb2xuYW1lLCBzcGxpdF9wYXJ0KHJv bGNvbmZpZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25maWcs IHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFT IHZhbHVlCitGUk9NCisJKFNFTEVDVAorCQkJdW5uZXN0KHJvbGNvbmZpZykg QVMgcm9sY29uZmlnLCByb2xjYW5sb2dpbiwgcm9sbmFtZQorCUZST00KKwkJ cGdfY2F0YWxvZy5wZ19yb2xlcworCVdIRVJFCisJCW9pZD0lKHJpZClzOjpP SUQKKwkpIHIKKykgYSkgYikKKy0tIFBvc3RncmVTUUwgPj0gOS4wCitVTklP TiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNx bCksIEUnXG4nKSBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCisJCSdBTFRFUiBS T0xFICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNlcmJ5 aWQoJShyaWQpczo6T0lEKSkgfHwKKwkJJyBJTiBEQVRBQkFTRSAnIHx8IHBn X2NhdGFsb2cucXVvdGVfaWRlbnQoZGF0bmFtZSkgfHwKKwkJJyBTRVQgJyB8 fCBwYXJhbXx8ICcgVE8gJyB8fAorCQlDQVNFCisJCVdIRU4gcGFyYW0gSU4g KCdzZWFyY2hfcGF0aCcsICd0ZW1wX3RhYmxlc3BhY2VzJykgVEhFTiB2YWx1 ZQorCQlFTFNFIHF1b3RlX2xpdGVyYWwodmFsdWUpCisJCUVORCB8fCAnOycg QVMgc3FsCisJRlJPTQorCQkoU0VMRUNUCisJCQlkYXRuYW1lLCBzcGxpdF9w YXJ0KHJvbGNvbmZpZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xj b25maWcsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9Jywg JycpIEFTIHZhbHVlCisJCUZST00KKwkJCShTRUxFQ1QKKwkJCQlkLmRhdG5h bWUsIHVubmVzdChjLnNldGNvbmZpZykgQVMgcm9sY29uZmlnCisJCQlGUk9N CisJCQkJKFNFTEVDVCAqCisJCQkJRlJPTQorCQkJCQlwZ19jYXRhbG9nLnBn X2RiX3JvbGVfc2V0dGluZyBkcgorCQkJCVdIRVJFCisJCQkJCWRyLnNldHJv bGU9JShyaWQpczo6T0lEIEFORCBkci5zZXRkYXRhYmFzZSE9MCkgYworCQkJ CUxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIGQgT04gKGQub2lk ID0gYy5zZXRkYXRhYmFzZSkKKwkJCSkgYQorCQkpIGIKKwkpIGQKKykKK1VO SU9OIEFMTAorKFNFTEVDVAorCSdDT01NRU5UIE9OIFJPTEUgJyB8fCBwZ19j YXRhbG9nLnF1b3RlX2lkZW50KHBnX2dldF91c2VyYnlpZCglKHJpZClzOjpP SUQpKSB8fCAnIElTICcgfHwgIHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChk ZXNjcmlwdGlvbikgfHwgJzsnIEFTIHNxbAorRlJPTQorCShTRUxFQ1QJcGdf Y2F0YWxvZy5zaG9ial9kZXNjcmlwdGlvbiglKHJpZClzOjpPSUQsICdwZ19h dXRoaWQnKSBBUyBkZXNjcmlwdGlvbikgYQorV0hFUkUKKwlkZXNjcmlwdGlv biBJUyBOT1QgTlVMTCkKKy0tIFBvc3RncmVTUUwgPj0gOS4yCitVTklPTiBB TEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCks IEUnXG4nKSBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCisJCSdTRUNVUklUWSBM QUJFTCBGT1IgJyB8fCBwcm92aWRlciB8fAorCQlFJ1xuICBPTiBST0xFICcg fHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fAorCQlFJ1xu ICBJUyAnIHx8IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChsYWJlbCkgfHwg JzsnIEFTIHNxbAorCUZST00KKwkJKFNFTEVDVAorCQkJbGFiZWwsIHByb3Zp ZGVyLCByb2xuYW1lCisJCUZST00KKwkJCShTRUxFQ1QgKgorCQkJRlJPTQor CQkJCXBnX3Noc2VjbGFiZWwgc2wxCisJCQlXSEVSRSBzbDEub2Jqb2lkPSUo cmlkKXM6Ok9JRCkgcworCQkJTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9s ZXMgciBPTiAocy5vYmpvaWQ9ci5vaWQpKSBhKSBiCispKSBBUyBhCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvdXBkYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWQ0OThm Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bv c3Q5XzQvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEwNyBAQAoreyUgaW1wb3J0 ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUg aW1wb3J0ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAl fQoreyUgaWYgJ3JvbG5hbWUnIGluIGRhdGEgJX0KK3slIHNldCByb2xuYW1l PWRhdGEucm9sbmFtZSAlfQorQUxURVJ7JSBpZiByb2xDYW5Mb2dpbiAlfSBV U0VSIHslIGVsc2UgJX0gUk9MRSB7JSBlbmRpZiAlfXt7IGNvbm58cXRJZGVu dChyb2xlKSB9fQorCVJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFt ZSkgfX07CisKK3slIGVsc2UgJX0KK3slIHNldCByb2xuYW1lPXJvbGUgJX0K K3slIGVuZGlmICV9Cit7JSBpZiBkYXRhfGhhc0FueShhbHRlcktleXMpICV9 CitBTFRFUiB7JSBpZiByb2xDYW5Mb2dpbiAlfVVTRVJ7JSBlbHNlICV9Uk9M RXslIGVuZGlmICV9IHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fXslIGlm ICdyb2xjYW5sb2dpbicgaW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbGNh bmxvZ2luICV9CisJTE9HSU57JSBlbHNlICV9CisJTk9MT0dJTnslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiAncm9sc3VwZXInIGluIGRhdGEgJX0KKwor eyUgaWYgZGF0YS5yb2xzdXBlciAlfQorCVNVUEVSVVNFUnslIGVsc2UgJX0K KwlOT1NVUEVSVVNFUnslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9s Y3JlYXRlZGInIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5yb2xjcmVhdGVk YiAlfQorCUNSRUFURURCeyUgZWxzZSAlfQorCU5PQ1JFQVRFREJ7JSBlbmRp ZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbGNyZWF0ZXJvbGUnIGluIGRhdGEg JX0KKworeyUgaWYgZGF0YS5yb2xjcmVhdGVyb2xlICV9CisJQ1JFQVRFUk9M RXslIGVsc2UgJX0KKwlOT0NSRUFURVJPTEV7JSBlbmRpZiAlfXslIGVuZGlm ICV9eyUgaWYgJ3JvbGluaGVyaXQnIGluIGRhdGEgJX0KKworeyUgaWYgZGF0 YS5yb2xpbmhlcml0ICV9CisJSU5IRVJJVHslIGVsc2UgJX0KKwlOT0lOSEVS SVR7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbHJlcGxpY2F0aW9u JyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9scmVwbGljYXRpb24gJX0K KwlSRVBMSUNBVElPTnslIGVsc2UgJX0KKwlOT1JFUExJQ0FUSU9OeyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xjb25ubGltaXQnIGluIGRhdGEg YW5kIGRhdGEucm9sY29ubmxpbWl0IGlzIG51bWJlciBhbmQgZGF0YS5yb2xj b25ubGltaXQgPj0gLTEgJX0KKworCUNPTk5FQ1RJT04gTElNSVQge3sgZGF0 YS5yb2xjb25ubGltaXQgfX0KK3slIGVuZGlmICV9eyUgaWYgJ3JvbHZhbGlk dW50aWwnIGluIGRhdGEgYW5kIGRhdGEucm9sdmFsaWR1bnRpbCAlfQorCisJ VkFMSUQgVU5USUwgeyUgaWYgZGF0YS5yb2x2YWxpZHVudGlsIGlzIG5vdCBu b25lICV9e3sgZGF0YS5yb2x2YWxpZHVudGlsfHF0TGl0ZXJhbCB9fXslIGVs c2UgJX0naW5maW5pdHknCit7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYg J3JvbHBhc3N3b3JkJyBpbiBkYXRhICV9CisKKwlQQVNTV09SRHslIGlmIGRh dGEucm9scGFzc3dvcmQgaXMgbm9uZSAlfSBOVUxMeyUgZWxzZSAlfXslIGlm IGR1bW15ICV9ICd4eHh4eHgneyUgZWxzZSAlfSB7eyBkYXRhLnJvbHBhc3N3 b3JkfHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRp ZiAlfTt7JSBlbmRpZiAlfQorCit7JSBpZiAncmV2b2tlZF9hZG1pbnMnIGlu IGRhdGEgYW5kCisJZGF0YS5yZXZva2VkX2FkbWluc3xsZW5ndGggPiAwCisl fQorCistLSBSZXZva2VkIHRoZSBhZG1pbiBvcHRpb25zIGZyb20gdGhlIG1l bWJlcnMKK1JFVk9LRSBBRE1JTiBPUFRJT04gRk9SIHt7IGNvbm58cXRJZGVu dChkYXRhLnJldm9rZWRfYWRtaW5zKXxqb2luKCcsICcpIH19IEZST00ge3sg Y29ubnxxdElkZW50KHJvbG5hbWUpIH19O3slIGVuZGlmICV9eyUgaWYgJ3Jl dm9rZWQnIGluIGRhdGEgYW5kIGRhdGEucmV2b2tlZHxsZW5ndGggPiAwICV9 CisKKworLS0gRm9sbG93aW5nIGFyZSBubyBtb3JlIHRoZSBtZW1iZXJzCitS RVZPS0Uge3sgY29ubnxxdElkZW50KGRhdGEucmV2b2tlZCl8am9pbignLCAn KSB9fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fTt7JSBlbmRp ZiAlfXslIGlmIGRhdGEuYWRtaW5zIGFuZCBkYXRhLmFkbWluc3xsZW5ndGgg PiAwICV9CisKKy0tIEZvbGxvd2luZyBhcmUgdGhlIG5ldyBhZG1pbnMgKG9y LCBleGlzdGluZyBtZW1iZXJzIG1hZGUgYWRtaW5zKQorR1JBTlQge3sgY29u bnxxdElkZW50KGRhdGEuYWRtaW5zKXxqb2luKCcsICcpIH19IFRPIHt7IGNv bm58cXRJZGVudChyb2xuYW1lKSB9fSBXSVRIIEFETUlOIE9QVElPTjt7JSBl bmRpZiAlfXslIGlmIGRhdGEubWVtYmVycyBhbmQgZGF0YS5tZW1iZXJzfGxl bmd0aCA+IDAgJX0KKworCistLSBGb2xsb3dpbmcgYXJlIHRoZSBuZXcgbWVt YmVycworR1JBTlQge3sgY29ubnxxdElkZW50KGRhdGEubWVtYmVycyl8am9p bignLCAnKSB9fSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX07eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnNlY2xhYmVscyBhbmQKKwlkYXRhLnNlY2xh YmVsc3xsZW5ndGggPiAwCislfXslIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNl Y2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQg c2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgciBp biBzZWNsYWJlbHMuZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25u LCAnUk9MRScsIGRhdGEucm9sbmFtZSwgci5wcm92aWRlcikgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFi ZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQorCit7JSBm b3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZ KGNvbm4sICdST0xFJywgZGF0YS5yb2xuYW1lLCByLnByb3ZpZGVyLCByLmxh YmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2No YW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVu Z3RoID4gMCAlfQorCit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAl fQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1JPTEUnLCBkYXRhLnJvbG5h bWUsIHIucHJvdmlkZXIsIHIubGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ3ZhcmlhYmxlcycgaW4g ZGF0YSBhbmQgZGF0YS52YXJpYWJsZXN8bGVuZ3RoID4gMCAlfQoreyUgc2V0 IHZhcmlhYmxlcyA9IGRhdGEudmFyaWFibGVzICV9Cit7JSBpZiAnZGVsZXRl ZCcgaW4gdmFyaWFibGVzIGFuZCB2YXJpYWJsZXMuZGVsZXRlZHxsZW5ndGgg PiAwICV9CisKK3slIGZvciB2YXIgaW4gdmFyaWFibGVzLmRlbGV0ZWQgJX0K K3t7IFZBUklBQkxFLlJFU0VUKGNvbm4sIHZhci5kYXRhYmFzZSwgcm9sbmFt ZSwgdmFyLm5hbWUpIH19Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUg aWYgJ2FkZGVkJyBpbiB2YXJpYWJsZXMgYW5kIHZhcmlhYmxlcy5hZGRlZHxs ZW5ndGggPiAwICV9CisKK3slIGZvciB2YXIgaW4gdmFyaWFibGVzLmFkZGVk ICV9Cit7eyBWQVJJQUJMRS5BUFBMWShjb25uLCB2YXIuZGF0YWJhc2UsIHJv bG5hbWUsIHZhci5uYW1lLCB2YXIudmFsdWUpIH19Cit7JSBlbmRmb3IgJX17 JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHZhcmlhYmxlcyBhbmQg dmFyaWFibGVzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgdmFy IGluIHZhcmlhYmxlcy5jaGFuZ2VkICV9Cit7eyBWQVJJQUJMRS5BUFBMWShj b25uLCB2YXIuZGF0YWJhc2UsIHJvbG5hbWUsIHZhci5uYW1lLCB2YXIudmFs dWUpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQoreyUgaWYgJ2Rlc2NyaXB0aW9uJyBpbiBkYXRhICV9CisKKworQ09NTUVO VCBPTiBST0xFIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fSBJUyB7eyBk YXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC92YXJp YWJsZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvdmFy aWFibGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iODYyMGMxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3Jv bGUvc3FsL3Bvc3Q5XzQvdmFyaWFibGVzLnNxbApAQCAtMCwwICsxLDI1IEBA CitTRUxFQ1QKKyAgICBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSBB UyBuYW1lLCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25m aWcsICc9JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUsIE5VTEw6OnRleHQg QVMgZGF0YWJhc2UKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgICAgICB1 bm5lc3Qocm9sY29uZmlnKSBBUyByb2xjb25maWcsIHJvbGNhbmxvZ2luLCBy b2xuYW1lCisgICAgRlJPTQorICAgICAgICBwZ19jYXRhbG9nLnBnX3JvbGVz CisgICAgV0hFUkUKKyAgICAgICAgb2lkPXt7IHJpZHxxdExpdGVyYWwgfX06 Ok9JRAorICAgICkgcgorCitVTklPTiBBTEwKK1NFTEVDVAorICAgIHNwbGl0 X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFTIG5hbWUsIHJlcGxhY2Uocm9s Y29uZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScs ICcnKSBBUyB2YWx1ZSwgZGF0bmFtZSBBUyBkYXRhYmFzZQorRlJPTQorICAg IChTRUxFQ1QKKyAgICAgICAgZC5kYXRuYW1lLCB1bm5lc3QoYy5zZXRjb25m aWcpIEFTIHJvbGNvbmZpZworICAgIEZST00KKyAgICAgICAgKFNFTEVDVCAq CisgICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19kYl9yb2xlX3NldHRpbmcg ZHIKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIGRyLnNldHJvbGU9e3sg cmlkfHF0TGl0ZXJhbCB9fTo6T0lEIEFORCBkci5zZXRkYXRhYmFzZSE9MAor ICAgICAgICApIGMKKyAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf ZGF0YWJhc2UgZCBPTiAoZC5vaWQgPSBjLnNldGRhdGFiYXNlKQorICAgICkg YTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L2RhdGFtb2RlbC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L2RhdGFtb2RlbC5qcwppbmRleCA0ZGMyOTBlLi45Mzg1YWRmIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwu anMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0YW1v ZGVsLmpzCkBAIC0yMTgsNyArMjE4LDEyIEBAIGZ1bmN0aW9uKF8sIHBnQWRt aW4sICQsIEJhY2tib25lKSB7CiAgICAgICBzZXQ6IGZ1bmN0aW9uKGtleSwg dmFsLCBvcHRpb25zKSB7CiAgICAgICAgIHZhciBvcHRzID0gXy5pc09iamVj dChrZXkpID8gdmFsIDogb3B0aW9uczsKIAorICAgICAgICB0aGlzLl9jaGFu Z2luZyA9IHRydWU7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzQXR0cmlidXRl cyA9IF8uY2xvbmUodGhpcy5hdHRyaWJ1dGVzKTsKKyAgICAgICAgdGhpcy5j aGFuZ2VkID0ge307CisKICAgICAgICAgdmFyIHJlcyA9IEJhY2tib25lLk1v ZGVsLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLCBrZXksIHZhbCwgb3B0aW9u cyk7CisgICAgICAgIHRoaXMuX2NoYW5naW5nID0gZmFsc2U7CiAKICAgICAg ICAgaWYgKChvcHRzJiYgb3B0cy5pbnRlbmFsKSB8fCAhdGhpcy50cmFja0No YW5nZXMpIHsKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIzMyw3ICsy MzgsNyBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewog ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg ICAgICBhdHRyc1trXSA9IHY7Ci0gICAgICAgICAgICBpZiAoc2VsZi5vcmln U2Vzc0F0dHJzW2tdID09IHYpIHsKKyAgICAgICAgICAgIGlmIChfLmlzRXF1 YWwoc2VsZi5vcmlnU2Vzc0F0dHJzW2tdLCB2KSkgewogICAgICAgICAgICAg ICBkZWxldGUgc2VsZi5zZXNzQXR0cnNba107CiAgICAgICAgICAgICB9IGVs c2UgewogICAgICAgICAgICAgICBzZWxmLnNlc3NBdHRyc1trXSA9IHY7CkBA IC0yNDgsNyArMjUzLDkgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFj a2JvbmUpIHsKICAgICAgICAgICB9CiAKICAgICAgICAgICBzZWxmLnRyaWdn ZXIoJ3BnYWRtaW4tc2Vzc2lvbjpzZXQnLCBzZWxmLCBhdHRycyk7Ci0KKyAg ICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMuc2lsZW50KSB7Cisg ICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ2NoYW5nZScsIHNlbGYsIG9wdGlv bnMpOworICAgICAgICAgIH0KICAgICAgICAgICBpZiAoJ3ZhbGlkYXRlJyBp biBzZWxmICYmIHR5cGVvZihzZWxmWyd2YWxpZGF0ZSddKSA9PT0gJ2Z1bmN0 aW9uJykgewogCiAgICAgICAgICAgICB2YXIgbXNnID0gc2VsZi52YWxpZGF0 ZShfLmtleXMoYXR0cnMpKTsKQEAgLTc3MCwxNyArNzc3LDE1IEBAIGZ1bmN0 aW9uKF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAgICAgICAgICAgICBp c0FscmVhZHlJbnZhbGlkID0gKF8uc2l6ZShzZWxmLnNlc3NBdHRyc1snaW52 YWxpZCddKSAhPSAwKSwKICAgICAgICAgICAgIGlkeCA9IHNlbGYub2JqRmlu ZEluU2Vzc2lvbihvYmosICdkZWxldGVkJyk7CiAKLSAgICAgICAgaWYgKCd2 YWxpZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAn ZnVuY3Rpb24nKSB7Ci0gICAgICAgICAgbXNnID0gb2JqLnZhbGlkYXRlKCk7 Ci0KLSAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICBzZWxmLnNl c3NBdHRyc1snaW52YWxpZCddLnB1c2gob2JqKTsKLSAgICAgICAgICB9Ci0g ICAgICAgIH0KLQogICAgICAgICAvLyBIbW0uLiAtIGl0IHdhcyBvcmlnaW5h bGx5IGRlbGV0ZWQgZnJvbSB0aGlzIGNvbGxlY3Rpb24sIHdlIHNob3VsZAog ICAgICAgICAvLyByZW1vdmUgaXQgZnJvbSB0aGUgJ2RlbGV0ZWQnIGxpc3Qu CiAgICAgICAgIGlmIChpZHggPj0gMCkgeworICAgICAgICAgIHZhciBvcmln T2JqID0gc2VsZi5zZXNzQXR0cnNbJ2RlbGV0ZWQnXVtpZHhdOworCisgICAg ICAgICAgb2JqLm9yaWdTZXNzQXR0cnMgPSBfLmNsb25lKG9yaWdPYmoub3Jp Z1Nlc3NBdHRycyk7CisgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBfLmV4 dGVuZChvYmouYXR0cmlidXRlcywgb3JpZ09iai5hdHRyaWJ1dGVzKTsKKyAg ICAgICAgICBvYmouc2Vzc0F0dHJzID0gXy5jbG9uZShvcmlnT2JqLnNlc3NB dHRycyk7CisKICAgICAgICAgICBzZWxmLnNlc3NBdHRyc1snZGVsZXRlZCdd LnNwbGljZShpZHgsIDEpOwogCiAgICAgICAgICAgLy8gSXQgaGFzIGJlZW4g Y2hhbmdlZCBvcmlnaW5hbGx5IQpAQCAtNzkwLDYgKzc5NSwxNCBAQCBmdW5j dGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewogCiAgICAgICAgICAg KHNlbGYuaGFuZGxlciB8fCBzZWxmKS50cmlnZ2VyKCdwZ2FkbWluLXNlc3Np b246YWRkZWQnLCBzZWxmLCBvYmopOwogCisgICAgICAgICAgaWYgKCd2YWxp ZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVu Y3Rpb24nKSB7CisgICAgICAgICAgICBtc2cgPSBvYmoudmFsaWRhdGUoKTsK KworICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICBzZWxm LnNlc3NBdHRyc1snaW52YWxpZCddLnB1c2gob2JqKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9CisKICAgICAgICAgICAvKgogICAgICAgICAgICAq IElmIHRoZSBjb2xsZWN0aW9uIHdhcyBhbHJlYWR5IGludmFsaWQsIHdlIGRv bid0IG5lZWQgdG8gaW5mb3JtIHRoZQogICAgICAgICAgICAqIHBhcmVudCwg b3IgcmFpc2UgdGhlIGV2ZW50IGZvciB0aGUgaW52YWxpZCBzdGF0dXMuCkBA IC04MDQsNiArODE3LDEzIEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJh Y2tib25lKSB7CiAKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg fQorICAgICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBvYmogJiYgdHlwZW9mKG9i ai52YWxpZGF0ZSkgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICBtc2cg PSBvYmoudmFsaWRhdGUoKTsKKworICAgICAgICAgIGlmIChtc2cpIHsKKyAg ICAgICAgICAgIHNlbGYuc2Vzc0F0dHJzWydpbnZhbGlkJ10ucHVzaChvYmop OworICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBzZWxmLnNlc3NB dHRyc1snYWRkZWQnXS5wdXNoKG9iaik7CiAKICAgICAgICAgLyoKQEAgLTg0 MCw2ICs4NjAsNyBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9u ZSkgewogICAgICAgICB9CiAKICAgICAgICAgaWR4ID0gc2VsZi5vYmpGaW5k SW5TZXNzaW9uKG9iaiwgJ2FkZGVkJyk7CisKICAgICAgICAgLy8gSG1tIC0g aXQgd2FzIG5ld2x5IGFkZGVkLCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBpdC4K ICAgICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgICAgc2VsZi5zZXNz QXR0cnNbJ2FkZGVkJ10uc3BsaWNlKGlkeCwgMSk7Cg== --047d7bd75c3a685a90052af1592f 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 --047d7bd75c3a685a90052af1592f--