Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aRIhV-0005Fp-OF for pgadmin-hackers@arkaria.postgresql.org; Thu, 04 Feb 2016 12:07:54 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aRIhV-0003Ft-AN for pgadmin-hackers@arkaria.postgresql.org; Thu, 04 Feb 2016 12:07:53 +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 1aRIh8-0002Z8-2D for pgadmin-hackers@postgresql.org; Thu, 04 Feb 2016 12:07:30 +0000 Received: from mail-ig0-x234.google.com ([2607:f8b0:4001:c05::234]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aRIh1-0000fJ-Sh for pgadmin-hackers@postgresql.org; Thu, 04 Feb 2016 12:07:28 +0000 Received: by mail-ig0-x234.google.com with SMTP id ik10so13141649igb.1 for ; Thu, 04 Feb 2016 04:07:23 -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=fD6s8G7DeRYCoAbnlv1P5YTnygVpqgzUkfrCoOEyTtw=; b=laiJMjXfIesuKEaoiGKq5vOMmN0ugmTvVzAsw7XMfjMWqJB2ctIU88ycGN26sk1XUk UDj1PylKCL/qOhBo0kxgBajFa8AmaKXRBeZPWD8ALF95Kpag4i4pZyFkG8chxWJdOo6t VqgTjl/5eP3RsPuHUw4CebqW3hpeVFbqKBL2/rRZbENNNbYh5ZSEqbg16vj2qyHFHHLR AZzOPqKbRJHFPskWLL4jB2BM3EyUeiV8xo2lgTAzPXdYQVdBzfLJBTZICemVoQS3hc4E 1Kcv+nIta0W8A41bxuoskB2pdVeJNom+kc1su7LSgBlGSma/+8PDJxIiZM+nLTgzFp/y 8/jA== 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=fD6s8G7DeRYCoAbnlv1P5YTnygVpqgzUkfrCoOEyTtw=; b=QNR4QPBo7c+2JbQggC1CJwByI6I5sOX+L7Rza9QQI0lXe+mx+v1GC+M0sIU9HVj5bq paSYaHQoRVzFDST69UcA2TS6+icEeFAkI2T34i8Hze33ZTpL1RyBm6JW2rvTxonIMkNO YN4/n4V/3fY9KEjRlgL8OZvV+gu/mK0CoS8o0ke42rJfy5ibYG0vtstI97eH+ksj7sL5 jV8F4qxZRf28pJh7LpSuMaYckvQDikwmdyLcU7HIB7txhPW40nWaA8mNfyfKIaQlqjKQ Ko6tf3jGB261n68j5SxXZuvcfqHxn4Q98JOeZ3WzcBLIURM6Ujdu5i/TGh2Xu5ljAdB4 o70Q== X-Gm-Message-State: AG10YORNzt667ugBQpcgDSR/y6f1eiW7naY491fkfnpyRsfJXv0+CC3HtTiXW4BCuukFBwWwISnlBtVKoZ1jXMva X-Received: by 10.50.72.48 with SMTP id a16mr8351160igv.73.1454587642948; Thu, 04 Feb 2016 04:07:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.26.138 with HTTP; Thu, 4 Feb 2016 04:07:03 -0800 (PST) In-Reply-To: <569F47F0.4070106@enterprisedb.com> References: <569759C0.90009@enterprisedb.com> <569F47F0.4070106@enterprisedb.com> From: Ashesh Vashi Date: Thu, 4 Feb 2016 17:37:03 +0530 Message-ID: Subject: Re: PATCH: Login/Group Role Node To: Murtuza Zabuawala Cc: pgadmin-hackers , Akshay Joshi Content-Type: multipart/mixed; boundary=047d7bdc15d4c16ec4052af0931d 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 --047d7bdc15d4c16ec4052af0931d Content-Type: multipart/alternative; boundary=047d7bdc15d4c16ebe052af0931b --047d7bdc15d4c16ebe052af0931b Content-Type: text/plain; charset=UTF-8 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 > * > > > > --047d7bdc15d4c16ebe052af0931b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Team,

Please find the update patch f= or the Login/Group Role node.


On Wed, Jan 20, 2016 at 2:10 PM, Murtuza Zabuawala &= lt;= 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 implemented f= or 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.

--

Thanks & Regards,
Ashesh Vash= i
E= nterpriseDB 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>




--047d7bdc15d4c16ebe052af0931b-- --047d7bdc15d4c16ec4052af0931d Content-Type: application/octet-stream; name="role_v2.patch" Content-Disposition: attachment; filename="role_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik87wrrm0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvX19pbml0X18ucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc1ZmViYQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs OTAzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 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 Y3QgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0Ogorcm9sbWVtYmVyc2hpcDp7 CisgICAgJ2FkZGVkJzogW3sKKyAgICAgICAgcHJvdmlkZXI6IDxwcm92aWRl cj4sCisgICAgICAgIGxhYmVsOiA8bGFiZWw+CisgICAgICAgIH0sCisgICAg ICAgIC4uLgorICAgICAgICBdLAorICAgICdkZWxldGVkJzogW3sKKyAgICAg ICAgcHJvdmlkZXI6IDxwcm92aWRlcj4sCisgICAgICAgIGxhYmVsOiA8bGFi ZWw+CisgICAgICAgIH0sCisgICAgICAgIC4uLgorICAgICAgICBdLAorICAg ICd1cGRhdGVkJzogW3sKKyAgICAgICAgcHJvdmlkZXI6IDxwcm92aWRlcj4s CisgICAgICAgIGxhYmVsOiA8bGFiZWw+CisgICAgICAgIH0sCisgICAgICAg IC4uLgorICAgICAgICBdCisiIiIpCisgICAgICAgICAgICAgICAgICAgICAg ICBzZWNsYWJlbHMgPSBkYXRhW3Unc2VjbGFiZWxzJ10KKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIHR5cGUoc2VjbGFiZWxzKSAhPSBkaWN0OgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQobXNnKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB1 J2FkZGVkJyBpbiBzZWNsYWJlbHM6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmV3X3NlY2xhYmVscyA9IHNlY2xhYmVsc1t1J2FkZGVkJ10KKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUobmV3X3NlY2xh YmVscykgIT0gbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBuZXdfc2VjbGFiZWxz OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZShz KSAhPSBkaWN0IG9yIHUncHJvdmlsZGVyJyBub3QgaW4gcyBvcgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnbGFiZWwnIG5v dCBpbiBzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAgICAg ICAgICAgICAgICAgICAgICBpZiB1J2RlbGV0ZWQnIGluIHNlY2xhYmVsczoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkX3NlY2xhYmVs cyA9IHNlY2xhYmVsc1t1J2RlbGV0ZWQnXQorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgdHlwZShyZW1vdmVkX3NlY2xhYmVscykgIT0gbGlz dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBy ZWNvbmRpdGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgcyBpbiByZW1vdmVkX3NlY2xhYmVsczoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUocykgIT0gZGlj dCBvciB1J3Byb3ZpbGRlcicgbm90IGluIHMpOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1 aXJlZChtc2cpCisKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdSdj aGFuZ2VkJyBpbiAgdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoYW5nZWRfc2VjbGFiZWxzID0gc2VjbGFiZWxzW3UnZGVsZXRl ZCddCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKGNo YW5nZWRfc2VjbGFiZWxzKSAhPSBsaXN0OgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1z ZykKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGNo YW5nZWRfc2VjbGFiZWxzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAodHlwZShzKSAhPSBkaWN0IG9yIHUncHJvdmlsZGVyJyBub3Qg aW4gcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFuZCB1J2xhYmVsJyBub3QgaW4gcyk6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVk KG1zZykKKworCisgICAgICAgICAgICBpZiB1J3ZhcmlhYmxlcycgaW4gZGF0 YToKKyAgICAgICAgICAgICAgICBpZiB1J3JpZCcgbm90IGluIGt3YXJncyBv ciBrd2FyZ3NbJ3JpZCddID09IC0xOgorICAgICAgICAgICAgICAgICAgICBt c2cgPSBfKCIiIgorQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzL3ZhcmlhYmxl cyBtdXN0IGJlIHBhc3NlZCBhcyBhbiBhcnJheSBvZiBKU09OIG9iamVjdCBp bgordGhlIGZvbGxvd2luZyBmb3JtYXQgKGNyZWF0ZSBtb2RlKToKK3Zhcmlh YmxlczpbeworICAgIGRhdGFiYXNlOiA8ZGF0YWJhc2U+IG9yIG51bGwsCisg ICAgbmFtZTogPGNvbmZpZ3VyYXRpb24+LAorICAgIHZhbHVlOiA8dmFsdWU+ CisgICAgfSwKKyAgICAuLi4KK10iIiIpCisgICAgICAgICAgICAgICAgICAg IGlmIHR5cGUoZGF0YVt1J3ZhcmlhYmxlcyddKSAhPSBsaXN0OgorICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJl ZChtc2cpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gZGF0YVt1 J3ZhcmlhYmxlcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5 cGUocikgIT0gZGljdCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1J25hbWUnIG5vdCBpbiByIG9yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUndmFsdWUnIG5vdCBpbiByKToKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVk KG1zZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg ICAgICBtc2cgPSBfKCIiIgorQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzL3Zh cmlhYmxlcyBtdXN0IGJlIHBhc3NlZCBhcyBhbiBhcnJheSBvZiBKU09OIG9i amVjdCBpbgordGhlIGZvbGxvd2luZyBmb3JtYXQgKHVwZGF0ZSBtb2RlKToK K3JvbG1lbWJlcnNoaXA6eworICAgICdhZGRlZCc6IFt7CisgICAgICAgIGRh dGFiYXNlOiA8ZGF0YWJhc2U+IG9yIG51bGwsCisgICAgICAgIG5hbWU6IDxj b25maWd1cmF0aW9uPiwKKyAgICAgICAgdmFsdWU6IDx2YWx1ZT4KKyAgICAg ICAgfSwKKyAgICAgICAgLi4uCisgICAgICAgIF0sCisgICAgJ2RlbGV0ZWQn OiBbeworICAgICAgICBkYXRhYmFzZTogPGRhdGFiYXNlPiBvciBudWxsLAor ICAgICAgICBuYW1lOiA8Y29uZmlndXJhdGlvbj4sCisgICAgICAgIHZhbHVl OiA8dmFsdWU+CisgICAgICAgIH0sCisgICAgICAgIC4uLgorICAgICAgICBd LAorICAgICd1cGRhdGVkJzogW3sKKyAgICAgICAgZGF0YWJhc2U6IDxkYXRh YmFzZT4gb3IgbnVsbCwKKyAgICAgICAgbmFtZTogPGNvbmZpZ3VyYXRpb24+ LAorICAgICAgICB2YWx1ZTogPHZhbHVlPgorICAgICAgICB9LAorICAgICAg ICAuLi4KKyAgICAgICAgXQorIiIiKQorICAgICAgICAgICAgICAgICAgICB2 YXJpYWJsZXMgPSBkYXRhW3UndmFyaWFibGVzJ10KKyAgICAgICAgICAgICAg ICAgICAgaWYgdHlwZSh2YXJpYWJsZXMpICE9IGRpY3Q6CisgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1z ZykKKworICAgICAgICAgICAgICAgICAgICBpZiB1J2FkZGVkJyBpbiB2YXJp YWJsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdfdmFycyA9IHZh cmlhYmxlc1t1J2FkZGVkJ10KKworICAgICAgICAgICAgICAgICAgICAgICAg aWYgdHlwZShuZXdfdmFycykgIT0gbGlzdDoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1zZykK KworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHYgaW4gbmV3X3ZhcnM6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUodikgIT0g ZGljdCBvciB1J25hbWUnIG5vdCBpbiB2IG9yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1J3ZhbHVlJyBub3QgaW4gdik6CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRp b25fcmVxdWlyZWQobXNnKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHUn ZGVsZXRlZCcgaW4gdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICAg ICAgZGVsZXRlX3ZhcnMgPSB2YXJpYWJsZXNbdSdkZWxldGVkJ10KKworICAg ICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShkZWxldGVfdmFycykgIT0g bGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJl Y29uZGl0aW9uX3JlcXVpcmVkKG1zZykKKworICAgICAgICAgICAgICAgICAg ICAgICAgZm9yIHYgaW4gZGVsZXRlX3ZhcnM6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgdHlwZSh2KSAhPSBkaWN0IG9yIHUnbmFtZScgbm90 IGluIHY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBwcmVjb25kaXRpb25fcmVxdWlyZWQobXNnKQorCisgICAgICAgICAgICAg ICAgICAgIGlmIHUnY2hhbmdlZCcgaW4gIHZhcmlhYmxlczoKKyAgICAgICAg ICAgICAgICAgICAgICAgIG5ld192YXJzID0gdmFyaWFibGVzW3UnY2hhbmdl ZCddCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUobmV3X3Zh cnMpICE9IGxpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZChtc2cpCisKKyAgICAgICAgICAg ICAgICAgICAgICAgIGZvciB2IGluIG5ld192YXJzOgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmICh0eXBlKHYpICE9IGRpY3Qgb3IgdSduYW1l JyBub3QgaW4gdiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdSd2YWx1ZScgbm90IGluIHYpOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKG1z ZykKKworICAgICAgICAgICAgc2VsZi5yZXF1ZXN0ID0gZGF0YQorCisgICAg ICAgICAgICByZXR1cm4gZihzZWxmLCAqKmt3YXJncykKKyAgICAgICAgcmV0 dXJuIHdyYXAKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oYWN0aW9u PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcyB0 aGUgc3RhdHVzCisgICAgICAgIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9u IGZvciB0aGUgbWFpbnRhaW5hbmNlIGRhdGFiYXNlIG9mIHRoZSBzZXJ2ZXIs CisgICAgICAgIGJlZm9yZWV4ZWN1dGluZyByZXN0IG9mIHRoZSBvcGVyYXRp b24gZm9yIHRoZSB3cmFwcGVkIGZ1bmN0aW9uLiBJdCB3aWxsCisgICAgICAg IGFsc28gYXR0YWNoIG1hbmFnZXIsIGNvbm4gKG1haW50ZW5hbmNlIGNvbm5l Y3Rpb24gZm9yIHRoZSBzZXJ2ZXIpIGFzCisgICAgICAgIHByb3BlcnRpZXMg b2YgdGhlIGluc3RhbmNlLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHdy YXAoZik6CisgICAgICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgICAgIGRl ZiB3cmFwcGVkKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBz ZWxmLm1hbmFnZXIgPSBnZXRfZHJpdmVyKAorICAgICAgICAgICAgICAgICAg ICAgICAgUEdfREVGQVVMVF9EUklWRVIKKyAgICAgICAgICAgICAgICAgICAg ICAgICkuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrd2FyZ3NbJ3NpZCddCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4g PSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbigpCisKKyAgICAgICAgICAgICAg ICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF8oIkNvbm5lY3Rpb24gdG8gdGhlIHNl cnZlciBoYXMgYmVlbiBsb3N0ISIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQorCisgICAgICAgICAgICAgICAgdmVyID0gc2VsZi5tYW5hZ2Vy LnZlcnNpb24KKworICAgICAgICAgICAgICAgIHNlbGYuc3FsX3BhdGggPSAn cm9sZS9zcWwvezB9LycuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAn cG9zdDlfNCcgaWYgdmVyID49IDkwNTAwIGVsc2UgXAorICAgICAgICAgICAg ICAgICAgICAncG9zdDlfMScgaWYgdmVyID49IDkwMjAwIGVsc2UgXAorICAg ICAgICAgICAgICAgICAgICAncG9zdDlfMCcgaWYgdmVyID49IDkwMTAwIGVs c2UgXAorICAgICAgICAgICAgICAgICAgICAncG9zdDhfNCcKKyAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgc2VsZi5hbHRlcktl eXMgPSBbCisgICAgICAgICAgICAgICAgICAgICAgICB1J3JvbGNhbmxvZ2lu JywgdSdyb2xzdXBlcicsIHUncm9sY3JlYXRlZGInLAorICAgICAgICAgICAg ICAgICAgICAgICAgdSdyb2xjcmVhdGVyb2xlJywgdSdyb2xpbmhlcml0Jywg dSdyb2xyZXBsaWNhdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICB1 J3JvbGNvbm5saW1pdCcsIHUncm9sdmFsaWR1bnRpbCcsIHUncm9scGFzc3dv cmQnCisgICAgICAgICAgICAgICAgICAgICAgICBdIGlmIHZlciA+PSA5MDIw MCBlbHNlIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdy b2xjYW5sb2dpbicsIHUncm9sc3VwZXInLCB1J3JvbGNyZWF0ZWRiJywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdyb2xjcmVhdGVyb2xl JywgdSdyb2xpbmhlcml0JywgdSdyb2xjb25ubGltaXQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1J3JvbHZhbGlkdW50aWwnLCB1J3Jv bHBhc3N3b3JkJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd CisKKyAgICAgICAgICAgICAgICBhdXRoX3RibD1GYWxzZQorICAgICAgICAg ICAgICAgIGNoZWNrX3Blcm1pc3Npb249RmFsc2UKKyAgICAgICAgICAgICAg ICBmZXRjaF9uYW1lPUZhbHNlCisgICAgICAgICAgICAgICAgZm9yYmlkZGVu X21zZyA9IE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGFjdGlvbiBpbiBb J2xpc3QnLCAncHJvcGVydGllcyddOgorICAgICAgICAgICAgICAgICAgICBh dXRoX3RibCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIGFjdGlvbiBp biBbJ2Ryb3AnLCAndXBkYXRlJ106CisgICAgICAgICAgICAgICAgICAgIGNo ZWNrX3Blcm1pc3Npb24gPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGZl dGNoX25hbWUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGlmIGFjdGlv biA9PSAnZHJvcCc6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JiaWRk ZW5fbXNnID0gXygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlRoZSBjdXJyZW50IHVzZXIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRv IGRyb3AgdGhlIHJvbGUhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgICAgICAgICBmb3JiaWRkZW5fbXNnID0gXygKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlRoZSBjdXJyZW50IHVzZXIgZG9lcyBu b3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgcm9sZSEiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg ICBlbGlmIGFjdGlvbiA9PSAnY3JlYXRlJzoKKyAgICAgICAgICAgICAgICAg ICAgY2hlY2tfcGVybWlzc2lvbiA9IFRydWUKKyAgICAgICAgICAgICAgICAg ICAgZm9yYmlkZGVuX21zZyA9IF8oCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlRoZSBjdXJyZW50IHVzZXIgZG9lcyBub3QgaGF2ZSBwZXJtaXNz aW9uIHRvIGNyZWF0ZSB0aGUgcm9sZSEiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgIGVsaWYgKGFjdGlvbiA9PSAn bXNxbCcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAncmlkJyBpbiBr d2FyZ3MgYW5kIGt3YXJnc1sncmlkJ10gIT0gLTEpOgorICAgICAgICAgICAg ICAgICAgICBmZXRjaF9uYW1lID0gVHJ1ZQorCisgICAgICAgICAgICAgICAg aWYgYXV0aF90Ymw6CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAgICAgICAg ICAgICAgICAgIlNFTEVDVCBoYXNfdGFibGVfcHJpdmlsZWdlKCdwZ19hdXRo aWQnLCAnU0VMRUNUJykiCisgICAgICAgICAgICAgICAgICAgICAgICApCisK KyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgY2hlY2tpbmcg dGhlIHBlcm1pc3Npb24gdG8gdGhlIHBnX2F1dGhpZCFcbnswfSIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuZm9ybWF0KHJlcykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnJvbGVfdGJsID0gJ3BnX2F1dGhpZCcgaWYgcmVz IGVsc2UgJ3BnX3JvbGVzJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgICAgIHNlbGYucm9sZV90YmwgPSAncGdfcm9sZXMnCisK KyAgICAgICAgICAgICAgICBpZiBjaGVja19wZXJtaXNzaW9uOgorICAgICAg ICAgICAgICAgICAgICB1c2VyID0gc2VsZi5tYW5hZ2VyLnVzZXJfaW5mbwor CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB1c2VyWydpc19zdXBlcnVz ZXInXSBhbmQgbm90IHVzZXJbJ2Nhbl9jcmVhdGVfcm9sZSddOgorICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiAhPSAndXBkYXRlJyBvcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmlkJyBpbiBrd2Fy Z3MgYW5kIGt3YXJnc1sncmlkJ10gIT0gLTEgYW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZXJbJ2lkJ10gIT0gcmlkKToKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9yYmlkZGVuKGZvcmJp ZGRlbl9tc2cpCisKKyAgICAgICAgICAgICAgICBpZiBmZXRjaF9uYW1lOgor ICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiIiCitTRUxFQ1QKKyAgICByb2xuYW1lLCByb2xjYW5sb2dpbiwgcm9sY2F0 dXBkYXRlLCByb2xzdXBlcgorRlJPTQorICAgIHBnX3JvbGVzCitXSEVSRSBv aWQ9JShyaWQpczo6T0lEIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsncmlkJzoga3dhcmdzWydyaWQnXX0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi RVJST1I6IGZldGNoaW5nIHRoZSByb2xlIGluZm9ybWF0aW9uIVxuezB9Igor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQo cmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgor ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvdWxkbid0IGZpbmQgdGhl IHNwZWNpZmljIHJvbGUgaW4gdGhlIGRhdGFiYXNlIHNlcnZlciEiKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAg ICAgICAgICAgcm93ID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAg ICAgICAgICBzZWxmLnJvbGUgPSByb3dbMF0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5yb2xDYW5Mb2dpbiA9IHJvd1sxXQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnJvbENhdFVwZGF0ZSA9IHJvd1syXQorICAgICAgICAgICAg ICAgICAgICBzZWxmLnJvbFN1cGVyID0gcm93WzNdCisKKyAgICAgICAgICAg ICAgICByZXR1cm4gZihzZWxmLCAqKmt3YXJncykKKyAgICAgICAgICAgIHJl dHVybiB3cmFwcGVkCisgICAgICAgIHJldHVybiB3cmFwCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uKGFjdGlvbj0nbGlzdCcpCisgICAgZGVmIGxpc3Qo c2VsZiwgZ2lkLCBzaWQpOgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICAgICAgcmVuZGVyX3Rl bXBsYXRlKHNlbGYuc3FsX3BhdGggKyAncHJvcGVydGllcy5zcWwnLAorICAg ICAgICAgICAgICAgICAgICByb2xlX3RibD1zZWxmLnJvbGVfdGJsCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oCisgICAg ICAgICAgICAgICAgICAgICAgICAiRXJyb3IgZmV0Y2hpbmcgdGhlIHJvbGVz IGZyb20gdGhlIGRhdGFiYXNlIHNlcnZlciFcbnswfSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICkuZm9ybWF0KHJlcykKKyAgICAgICAgICAgICAgICAg ICAgKQorCisgICAgICAgIHNlbGYudHJhbnNmb3JtKHJlcykKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNw b25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bihhY3Rpb249J25vZGVzJykKKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBz aWQpOgorCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KHNlbGYuc3FsX3BhdGggKyAnbm9kZXMuc3FsJywKKyAgICAgICAgICAgICAg ICAgICAgcm9sZV90Ymw9c2VsZi5yb2xlX3RibAorICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKAorICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAgICAg ICAgICAgICAgIkVycm9yIGZldGNoaW5nIHRoZSByb2xlcyBpbmZvcm1hdGlv biBmcm9tIHRoZSBkYXRhYmFzZSBzZXJ2ZXIhXG57MH0iCisgICAgICAgICAg ICAgICAgICAgICAgICApLmZvcm1hdChyZXMpCisgICAgICAgICAgICAgICAg ICAgICkKKworICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dz ZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10s CisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ3JvbG5hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdpY29uLXJvbGUnIGlmIHJvd1sncm9s Y2FubG9naW4nXSBlbHNlICdpY29uLWdyb3VwJywKKyAgICAgICAgICAgICAg ICAgICAgICAgIGNhbl9sb2dpbj1yb3dbJ3JvbGNhbmxvZ2luJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICBpc19zdXBlcnVzZXI9cm93Wydyb2xzdXBl ciddCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg ICAgICAgICkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uKGFjdGlvbj0nbm9kZScpCisgICAgZGVmIG5vZGUoc2Vs ZiwgZ2lkLCBzaWQsIHJpZCk6CisKKyAgICAgICAgc3RhdHVzLCByc2V0ID0g c2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheSgKKyAgICAgICAgICAgICAgICBy ZW5kZXJfdGVtcGxhdGUoc2VsZi5zcWxfcGF0aCArICdub2Rlcy5zcWwnLAor ICAgICAgICAgICAgICAgICAgICByaWQ9cmlkLAorICAgICAgICAgICAgICAg ICAgICByb2xlX3RibD1zZWxmLnJvbGVfdGJsCisgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoCisgICAgICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAg ICAgICAgICAiRXJyb3IgZmV0Y2hpbmcgdGhlIHJvbGVzIGluZm9ybWF0aW9u IGZyb20gdGhlIGRhdGFiYXNlIHNlcnZlciFcbnswfSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICkuZm9ybWF0KHJlcykKKyAgICAgICAgICAgICAgICAg ICAgKQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgZGF0YT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgcm93Wydyb2xuYW1lJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAnaWNvbi1yb2xlJyBpZiByb3dbJ3Jv bGNhbmxvZ2luJ10gZWxzZSAnaWNvbi1ncm91cCcsCisgICAgICAgICAgICAg ICAgICAgICAgICBjYW5fbG9naW49cm93Wydyb2xjYW5sb2dpbiddLAorICAg ICAgICAgICAgICAgICAgICAgICAgaXNfc3VwZXJ1c2VyPXJvd1sncm9sc3Vw ZXInXQorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICAgICApCisK KyAgICAgICAgcmV0dXJuIGdvbmUoXygiQ291bGRuJ3QgZmluZCB0aGUgcm9s ZSBpbmZvcm1hdGlvbiEiKSkKKworICAgIGRlZiB0cmFuc2Zvcm0oc2VsZiwg cnNldCk6CisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgcmVzID0gW10KKyAgICAgICAgICAgIHJvbGVzID0gcm93Wydy b2xtZW1iZXJzaGlwJ10KKyAgICAgICAgICAgIHJvd1sncm9scGFzc3dvcmQn XSA9ICcnCisgICAgICAgICAgICBmb3Igcm9sZSBpbiByb2xlczoKKyAgICAg ICAgICAgICAgICByb2xlID0gcmUuc2VhcmNoKHInKFswMV0pKC4rKScsIHJv bGUpCisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh7CisgICAgICAgICAg ICAgICAgICAgICdyb2xlJzogcm9sZS5ncm91cCgyKSwKKyAgICAgICAgICAg ICAgICAgICAgJ2FkbWluJzogVHJ1ZSBpZiByb2xlLmdyb3VwKDEpID09ICcx JyBlbHNlIEZhbHNlCisgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAg ICAgICByb3dbJ3JvbG1lbWJlcnNoaXAnXSA9IHJlcworICAgICAgICAgICAg cm93Wydyb2x2YWxpZHVudGlsJ10gPSByb3dbJ3JvbHZhbGlkdW50aWwnXS5p c29mb3JtYXQoKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu Y2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Wydyb2x2YWxp ZHVudGlsJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGV0 aW1lLmRhdGUsIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkgZWxzZSBOb25lCisgICAgICAgICAgICBpZiAnc2Vj bGFiZWxzJyBpbiByb3cgYW5kIHJvd1snc2VjbGFiZWxzJ10gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgcmVzID0gW10KKyAgICAgICAgICAgICAg ICBmb3Igc2VjIGluIHJvd1snc2VjbGFiZWxzJ106CisgICAgICAgICAgICAg ICAgICAgIHNlYyA9IHJlLnNlYXJjaChyJyhbXj1dKyk9KC4qJCknLCBzZWMp CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoeworICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3ZpZGVyJzogc2VjLmdyb3VwKDEpLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ2xhYmVsJzogc2VjLmdyb3VwKDIpCisg ICAgICAgICAgICAgICAgICAgICAgICB9KQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbihhY3Rpb249J3Byb3BlcnRpZXMnKQorICAgIGRlZiBwcm9wZXJ0 aWVzKHNlbGYsIGdpZCwgc2lkLCByaWQpOgorCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoc2VsZi5zcWxfcGF0aCArICdwcm9wZXJ0aWVz LnNxbCcsCisgICAgICAgICAgICAgICAgICAgIHJvbGVfdGJsPXNlbGYucm9s ZV90YmwsCisgICAgICAgICAgICAgICAgICAgIHJpZD1yaWQKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgXygKKyAgICAgICAg ICAgICAgICAgICAgICAgICJFcnJvciBmZXRjaGluZyB0aGUgcm9sZXMgZnJv bSB0aGUgZGF0YWJhc2Ugc2VydmVyIVxuezB9IgorICAgICAgICAgICAgICAg ICAgICAgICAgKS5mb3JtYXQocmVzKQorICAgICAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgc2VsZi50cmFuc2Zvcm0ocmVzKQorICAgICAgICBpZiBs ZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICByZXR1cm4gZ29u ZShfKCJDb3VsZG4ndCBmaW5kIHRoZSByb2xlIGluZm9ybWF0aW9uISIpKQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uKGFjdGlvbj0nZHJvcCcpCisgICAgZGVmIGRyb3Aoc2Vs ZiwgZ2lkLCBzaWQsIHJpZCk6CisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KAorICAgICAgICAgICAgICAgICJE Uk9QIFJPTEUgezB9OyIuZm9ybWF0KHNlbGYucm9sZSkKKyAgICAgICAgICAg ICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKAorICAgICAgICAgICAgICAg ICAgICBfKCJFUlJPUjogQ291bGRuJ3QgZHJvcCB0aGUgdXNlciFcbnswfSIp LmZvcm1hdChyZXMpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICByZXR1cm4gc3VjY2Vzc19yZXR1cm4oKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbigpCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgcmlkKToK KyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICAgICBzZWxmLnNxbF9wYXRoICsgJ3NxbC5zcWwnLAorICAg ICAgICAgICAgICAgICAgICByb2xlX3RibD1zZWxmLnJvbGVfdGJsCisgICAg ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZGljdCh7J3Jp ZCc6cmlkfSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oIkVSUk9SOiBDb3VsZG4n dCBnZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIFF1ZXJ5IGZvciB0aGUg cm9sZS91c2VyIVxuezB9IikuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg ICAgICAgcmVzCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICBpZiByZXMgaXMgTm9uZToKKyAg ICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgICAgICAgICBf KCJFUlJPUjogQ291bGRuJ3QgZ2VuZXJhdGUgcmV2ZXJzZWQgZW5naW5lZXJl ZCBRdWVyeSBmb3IgdGhlIHJvbGUvdXNlciEiKQorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9u c2U9cmVzKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbihhY3Rpb249J2Ny ZWF0ZScpCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkKToKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgc2VsZi5zcWxfcGF0aCArICdjcmVh dGUuc3FsJywKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYucmVxdWVzdCwK KyAgICAgICAgICAgICAgICBkdW1teT1GYWxzZSwKKyAgICAgICAgICAgICAg ICBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICkKKworICAgICAg ICBzdGF0dXMsIG1zZyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBf KCJFUlJPUjogQ291bGRuJ3QgY3JlYXRlIHRoZSByb2xlIVxuezB9IikuZm9y bWF0KG1zZykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHN0 YXR1cywgcmlkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAg ICAgICAgICAgICJTRUxFQ1Qgb2lkIEZST00gezB9IFdIRVJFIHJvbG5hbWUg PSAlKHJvbG5hbWUpcyIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBz ZWxmLnJvbGVfdGJsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgICAgeydyb2xuYW1lJzogc2VsZi5yZXF1ZXN0W3Uncm9sbmFtZSdd fQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigK KyAgICAgICAgICAgICAgICAgICAgXygiRVJST1I6IENvdWxkbid0IGZldGNo IHRoZSByb2xlIGluZm9ybWF0aW9uIVxuezB9IikuZm9ybWF0KG1zZykKKyAg ICAgICAgICAgICAgICAgICAgKQorCisKKyAgICAgICAgc3RhdHVzLCByc2V0 ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAgICAgICBy ZW5kZXJfdGVtcGxhdGUoc2VsZi5zcWxfcGF0aCArICdub2Rlcy5zcWwnLAor ICAgICAgICAgICAgICAgICAgICByaWQ9cmlkLAorICAgICAgICAgICAgICAg ICAgICByb2xlX3RibD1zZWxmLnJvbGVfdGJsCisgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoCisgICAgICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAg ICAgICAgICAiRXJyb3IgZmV0Y2hpbmcgdGhlIHJvbGVzIGluZm9ybWF0aW9u IGZyb20gdGhlIGRhdGFiYXNlIHNlcnZlciFcbnswfSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICkuZm9ybWF0KHJlcykKKyAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAg ICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgICAgICBu b2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJvd1sncm9sbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgJ2ljb24tcm9sZScgaWYgcm93Wydyb2xjYW5sb2dpbiddIGVsc2UgJ2lj b24tZ3JvdXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuX2xvZ2lu PXJvd1sncm9sY2FubG9naW4nXQorICAgICAgICAgICAgICAgICAgICAgICAg KQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGdv bmUoXygiQ291bGRuJ3QgZmluZCB0aGUgcm9sZSBpbmZvcm1hdGlvbiEiKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24oYWN0aW9uPSd1cGRhdGUnKQor ICAgIEB2YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIHVwZGF0ZShzZWxmLCBn aWQsIHNpZCwgcmlkKToKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAgICAgc2VsZi5zcWxfcGF0aCArICd1cGRhdGUu c3FsJywKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYucmVxdWVzdCwKKyAg ICAgICAgICAgICAgICBkdW1teT1GYWxzZSwKKyAgICAgICAgICAgICAgICBj b25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICByb2xlPXNlbGYucm9s ZSwKKyAgICAgICAgICAgICAgICByb2xDYW5Mb2dpbj1zZWxmLnJvbENhbkxv Z2luLAorICAgICAgICAgICAgICAgIHJvbENhdFVwZGF0ZT1zZWxmLnJvbENh dFVwZGF0ZSwKKyAgICAgICAgICAgICAgICByb2xTdXBlcj1zZWxmLnJvbFN1 cGVyLAorICAgICAgICAgICAgICAgIGFsdGVyS2V5cz1zZWxmLmFsdGVyS2V5 cworICAgICAgICAgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIG1zZyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBfKCJFUlJPUjogQ291bGRu J3QgY3JlYXRlIHRoZSByb2xlIVxuezB9IikuZm9ybWF0KG1zZykKKyAgICAg ICAgICAgICAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKHNlbGYuc3FsX3BhdGggKyAnbm9kZXMuc3FsJywKKyAgICAg ICAgICAgICAgICAgICAgcmlkPXJpZCwKKyAgICAgICAgICAgICAgICAgICAg cm9sZV90Ymw9c2VsZi5yb2xlX3RibAorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKAor ICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAgICAgICAgICAg ICAgIkVycm9yIGZldGNoaW5nIHRoZSByb2xlcyBpbmZvcm1hdGlvbiBmcm9t IHRoZSBkYXRhYmFzZSBzZXJ2ZXIhXG57MH0iCisgICAgICAgICAgICAgICAg ICAgICAgICApLmZvcm1hdChyZXMpCisgICAgICAgICAgICAgICAgICAgICkK KworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAg ICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgICAgICBub2Rl PXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJvd1sncm9sbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg J2ljb24tcm9sZScgaWYgcm93Wydyb2xjYW5sb2dpbiddIGVsc2UgJ2ljb24t Z3JvdXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuX2xvZ2luPXJv d1sncm9sY2FubG9naW4nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz X3N1cGVydXNlcj1yb3dbJ3JvbHN1cGVyJ10KKyAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHJl dHVybiBnb25lKF8oIkNvdWxkbid0IGZpbmQgdGhlIHJvbGUgaW5mb3JtYXRp b24hIikpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uKGFjdGlvbj0nbXNx bCcpCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYgbXNxbChzZWxm LCBnaWQsIHNpZCwgcmlkPS0xKToKKyAgICAgICAgaWYgcmlkID09IC0xOgor ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICAgICAgZGF0YT1yZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNxbF9wYXRoICsgJ2NyZWF0ZS5zcWwn LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1zZWxmLnJlcXVlc3Qs CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1teT1UcnVlLAorICAgICAg ICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNxbF9wYXRoICsgJ3Vw ZGF0ZS5zcWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1zZWxm LnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBkdW1teT1UcnVl LAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sCisg ICAgICAgICAgICAgICAgICAgICAgICByb2xlPXNlbGYucm9sZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJvbENhbkxvZ2luPXNlbGYucm9sQ2FuTG9n aW4sCisgICAgICAgICAgICAgICAgICAgICAgICByb2xDYXRVcGRhdGU9c2Vs Zi5yb2xDYXRVcGRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICByb2xT dXBlcj1zZWxmLnJvbFN1cGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg YWx0ZXJLZXlzPXNlbGYuYWx0ZXJLZXlzCisgICAgICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24oKQorICAgIGRlZiBkZXBlbmRlbmNpZXMoc2VsZiwgZ2lk LCBzaWQsIHJpZCk6CisgICAgICAgIHJldHVybiBub3RfaW1wbGVtZW50ZWQo KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbigpCisgICAgZGVmIGRlcGVu ZGVudHMoc2VsZiwgZ2lkLCBzaWQsIHJpZCk6CisgICAgICAgIHJldHVybiBu b3RfaW1wbGVtZW50ZWQoKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbigp CisgICAgZGVmIHZhcmlhYmxlcyhzZWxmLCBnaWQsIHNpZCwgcmlkKToKKwor ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZShzZWxmLnNxbF9w YXRoICsgJ3ZhcmlhYmxlcy5zcWwnLAorICAgICAgICAgICAgICAgICAgICBy aWQ9cmlkCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAg ICAgIF8oCisgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgZmV0Y2hp bmcgdGhlIHZhcmlhYmxlIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gcm9s ZSFcbnswfSIKKyAgICAgICAgICAgICAgICAgICAgICAgICkuZm9ybWF0KHJz ZXQpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cnNl dFsncm93cyddCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbigpCisgICAgZGVmIHZvcHRpb25zKHNlbGYsIGdpZCwgc2lk KToKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoCisgICAgICAgICAgICAgICAgIiIiCitTRUxFQ1QKKwluYW1lLCB2 YXJ0eXBlLCBtaW5fdmFsLCBtYXhfdmFsLCBlbnVtdmFscworRlJPTQorICAg ICgKKwlTRUxFQ1QKKwkJJ3JvbGUnOjp0ZXh0IEFTIG5hbWUsICdzdHJpbmcn Ojp0ZXh0IEFTIHZhcnR5cGUsCisJCU5VTEwgQVMgbWluX3ZhbCwgTlVMTCBB UyBtYXhfdmFsLCBOVUxMOjp0ZXh0W10gQVMgZW51bXZhbHMKKwlVTklPTiBB TEwKKwlTRUxFQ1QKKwkJbmFtZSwgdmFydHlwZSwgbWluX3ZhbDo6bnVtZXJp YyBBUyBtaW5fdmFsLCBtYXhfdmFsOjpudW1lcmljIEFTIG1heF92YWwsIGVu dW12YWxzCisJRlJPTQorCQlwZ19zZXR0aW5ncworCVdIRVJFCisJCWNvbnRl eHQgaW4gKCd1c2VyJywgJ3N1cGVydXNlcicpCisJKSBhIiIiKQorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBfKAorICAg ICAgICAgICAgICAgICAgICAgICAgIkVycm9yIGZldGNoaW5nIHRoZSB2YXJp YWJsZSBvcHRpb25zIGZvciByb2xlIVxuezB9IgorICAgICAgICAgICAgICAg ICAgICAgICAgKS5mb3JtYXQocmVzKQorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1yZXNbJ3Jvd3MnXQorICAgICAgICAgICAgICAgICkK KworCitSb2xlVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvc3RhdGljL2ltZy9jb2xsLXJvbGUucG5nIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMv c3RhdGljL2ltZy9jb2xsLXJvbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmY1YzIwYmYKQmluYXJ5IGZpbGVzIC9kZXYvbnVs bCBhbmQgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy9zdGF0aWMvaW1nL2NvbGwtcm9sZS5wbmcgZGlmZmVyCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9yb2xlcy9zdGF0aWMvaW1nL2dyb3VwLnBuZyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3N0YXRp Yy9pbWcvZ3JvdXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjgxOWZmODEKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy9zdGF0aWMvaW1nL2dyb3VwLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVz L3N0YXRpYy9pbWcvcm9sZS5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy9zdGF0aWMvaW1nL3JvbGUucG5n Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTRlODgK QmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy9zdGF0aWMvaW1nL3Jv bGUucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUv Y3NzL3JvbGUuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvY3NzL3JvbGUuY3Nz Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNDVmZWMK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9jc3Mvcm9s ZS5jc3MKQEAgLTAsMCArMSwyNyBAQAorLmljb24tcm9sZSB7CisgIGJhY2tn cm91bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1yb2xlLnN0YXRp YycsIGZpbGVuYW1lPSdpbWcvcm9sZS5wbmcnKX19JykgIWltcG9ydGFudDsK KyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29u dGVudDogY2VudGVyOworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworIGhl aWdodDogMS4zZW07Cit9CisKKy5pY29uLWdyb3VwIHsKKyAgYmFja2dyb3Vu ZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdOT0RFLXJvbGUuc3RhdGljJywg ZmlsZW5hbWU9J2ltZy9ncm91cC5wbmcnKX19JykgIWltcG9ydGFudDsKKyAg YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVu dDogY2VudGVyOworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWln aHQ6IDEuM2VtOworfQorCisucGdhZG1pbi1ub2RlLXNlbGVjdCBvcHRpb25b bm9kZT0icm9sZSJdIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1 cmxfZm9yKCdOT0RFLXJvbGUuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9yb2xl LnBuZycpfX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDog bm8tcmVwZWF0OworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVm dDsKK30KKworLnBnYWRtaW4tbm9kZS1zZWxlY3Qgb3B0aW9uW25vZGU9Imdy b3VwIl0geworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3Io J05PREUtcm9sZS5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL2dyb3VwLnBuZycp fX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw ZWF0OworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDsKK30K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL2pzL3JvbGUuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy90ZW1wbGF0ZXMvcm9sZS9qcy9yb2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmRkZTc0MmMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy90ZW1wbGF0ZXMvcm9sZS9qcy9yb2xlLmpzCkBAIC0wLDAgKzEsNDMy IEBACitkZWZpbmUoCisgICAgWworICAgICdqcXVlcnknLCAndW5kZXJzY29y ZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywgJ3BnYWRtaW4u YnJvd3NlcicsCisgICAgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYmFja2Zvcm0n LCAnc2VsZWN0MicsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisg ICAgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlLnVpJywgJ3BnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXIudmFyaWFibGUnCisgICAgXSwKK2Z1bmN0aW9uKCQsIF8sIFMs IHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnksIEJhY2tmb3JtKSB7CisK KyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcm9sZSddKSB7CisgICAg dmFyIHJvbGUgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtcm9sZSdd ID0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7 CisgICAgICAgIG5vZGU6ICdyb2xlJywKKyAgICAgICAgdHlwZTogJ2NvbGwt cm9sZScsCisgICAgICAgIGNvbHVtbnM6IFsKKyAgICAgICAgICAncm9sbmFt ZScsICdyb2x2YWxpZHVudGlsJywgJ3JvbGNvbm5saW1pdCcsICdyb2xjYW5s b2dpbicsCisgICAgICAgICAgJ3JvbHN1cGVyJywgJ3JvbGNyZWF0ZXJvbGUn LCAncm9sY3JlYXRlZGInLCAncm9sY2F0dXBkYXRlJywKKyAgICAgICAgICAn cm9saW5oZXJpdCcsICdyb2xyZXBsaWNhdGlvbicKKyAgICAgICAgXQorICAg ICAgfSk7CisgIH07CisKKyAgdmFyIFNlY3VyaXR5TW9kZWwgPSBCYWNrZm9y bS5TZWN1cml0eU1vZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwu ZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogeworICAgICAgcHJvdmlkZXI6IG51 bGwsCisgICAgICBzZWN1cml0eV9sYWJlbDogbnVsbAorICAgIH0sCisgICAg c2NoZW1hOiBbeworICAgICAgaWQ6ICdwcm92aWRlcicsIGxhYmVsOiAne3sg XygnUHJvdmlkZXInKSB9fScsCisgICAgICB0eXBlOiAndGV4dCcKKyAgICB9 LHsKKyAgICAgIGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8o J1NlY3VyaXR5IExhYmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnCisg ICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFy IGVyciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAgICAg ICAgZGF0YSA9IHRoaXMudG9KU09OKCk7CisKKyAgICAgIGlmIChfLmlzVW5k ZWZpbmVkKGRhdGEubGFiZWwpIHx8CisgICAgICAgIF8uaXNOdWxsKGRhdGEu bGFiZWwpIHx8CisgICAgICAgIFN0cmluZyhkYXRhLmxhYmVsKS5yZXBsYWNl KC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgIHJldHVybiBf KCJQbGVhc2Ugc3BlY2lmeSB0aGUgdmFsdWUgZm9yIGFsbCB0aGUgc2VjdXJp dHkgcHJvdmlkZXJzLiIpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7 CisgICAgfQorICB9KTsKKworICB2YXIgc3dpdGNoT3B0aW9ucyA9IHsKKyAg ICAnb25UZXh0JzogJ1llcycsICdvZmZUZXh0JzogJ05vJywKKyAgICAnb25D b2xvcic6ICd3YXJuaW5nJywgJ29mZkNvbG9yJzogJ3ByaW1hcnknLAorICAg ICdzaXplJzogJ3NtYWxsJworICB9OworCisgIHZhciBSb2xlTWVtYmVyc0Nv bnRyb2wgPSBCYWNrZm9ybS5Db250cm9sLmV4dGVuZCh7CisgICAgZGVmYXVs dHM6IF8uZGVmYXVsdHMoCisgICAgICAgICAgICAgICAge2V4dHJhQ2xhc3Nl czogWydjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiddfSwKKyAgICAg ICAgICAgICAgICBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wucHJv dG90eXBlLmRlZmF1bHRzCisgICAgICAgICAgICAgICAgKSwKKyAgICBpbml0 aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgIEJhY2tmb3JtLk5vZGVMaXN0 QnlOYW1lQ29udHJvbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlz LCBhcmd1bWVudHMpOworICAgIH0sCisgICAgZm9ybWF0dGVyOiB7CisgICAg ICBmcm9tUmF3OiBmdW5jdGlvbiAocmF3RGF0YSwgbW9kZWwpIHsKKyAgICAg ICAgdmFyIHJlcyA9IF8uaXNPYmplY3QocmF3RGF0YSkgPyByYXdEYXRhIDog SlNPTi5wYXJzZShyYXdEYXRhKTsKKworICAgICAgICByZXR1cm4gXy5wbHVj ayhyZXMsICdyb2xlJyk7CisgICAgICB9LAorICAgICAgdG9SYXc6IGZ1bmN0 aW9uIChmb3JtYXR0ZWREYXRhLCBtb2RlbCkgeworICAgICAgICByZXR1cm4g Zm9ybWF0dGVkRGF0YTsKKyAgICAgIH0KKyAgICB9LAorICAgIHRlbXBsYXRl OiBfLnRlbXBsYXRlKFsKKyAgICAgICc8bGFiZWwgY2xhc3M9ImNvbnRyb2wt bGFiZWwgY29sLXhzLTEyIj48JT1sYWJlbCU+PC9sYWJlbD4nLAorICAgICAg JzxkaXYgY2xhc3M9InBnYWRtaW4tY29udHJvbHMgY29sLXhzLTEyIj4nLAor ICAgICAgJyAgPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiIHN0eWxlPSJ3 aWR0aDoxMDAlOyIgY2xhc3M9InBnYWRtaW4tY29udHJvbHMgPCU9ZXh0cmFD bGFzc2VzLmpvaW4oXCcgXCcpJT4iIG5hbWU9IjwlPW5hbWUlPiIgdmFsdWU9 IjwlLUpTT04uc3RyaW5naWZ5KHZhbHVlKSU+IiA8JT1kaXNhYmxlZCA/ICJk aXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6ICIi JT4+JywKKyAgICAgICcgICAgPCUgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9u cy5sZW5ndGg7IGkrKykgeyAlPicsCisgICAgICAnICAgICAgPCUgdmFyIG9w dGlvbiA9IG9wdGlvbnNbaV07ICU+JywKKyAgICAgICcgICAgICA8b3B0aW9u IHZhbHVlPTwlLW9wdGlvbi52YWx1ZSU+IGRhdGEtaWNvbj08JS1vcHRpb24u aW1hZ2UlPiA8JT12YWx1ZSAhPSBudWxsICYmIF8uaW5kZXhPZih2YWx1ZSwg b3B0aW9uLnZhbHVlKSAhPSAtMSA/ICJzZWxlY3RlZCIgOiAiIiU+IDwlPW9w dGlvbi5kaXNhYmxlZCA/ICJkaXNhYmxlZD1cJ2Rpc2FibGVkXCciIDogIiIl Pj48JS1vcHRpb24ubGFiZWwlPjwvb3B0aW9uPicsCisgICAgICAnICAgIDwl IH0gJT4nLAorICAgICAgJyAgPC9zZWxlY3Q+JywKKyAgICAgICc8L2Rpdj4n LAorICAgICAgJzxkaXYgY2xhc3M9Im5vdGUgPCU9QmFja2Zvcm0uaGVscE1l c3NhZ2VDbGFzc05hbWUlPiBjb2wteHMtMTIiPjwvZGl2PicsCisgICAgICBd LmpvaW4oIlxuIikpLAorICAgIGV2ZW50czogeyJjaGFuZ2Ugc2VsZWN0Ijog Im9uQ2hhbmdlIn0sCisgICAgZ2V0VmFsdWVGcm9tRE9NOiBmdW5jdGlvbigp IHsKKyAgICAgIHZhciByZXMgPSBbXTsKKworICAgICAgdGhpcy4kZWwuZmlu ZCgic2VsZWN0IikuZmluZCgnOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbigp IHsKKyAgICAgICAgcmVzLnB1c2goJCh0aGlzKS5hdHRyKCd2YWx1ZScpKTsK KyAgICAgIH0pOworCisgICAgICByZXR1cm4gcmVzOworICAgIH0sCisgICAg cmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICAgIEJhY2tmb3JtLlNlbGVjdENv bnRyb2wucHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMp OworICAgICAgdmFyIGNvbGxlY3Rpb24gPSB0aGlzLm1vZGVsLmdldCh0aGlz LmZpZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICBmb3JtYXRTdGF0ZSA9 IGZ1bmN0aW9uKG9wdCkgeworICAgICAgICAgICAgaWYgKCFvcHQuaWQpIHsK KyAgICAgICAgICAgICAgcmV0dXJuIG9wdC50ZXh0OworICAgICAgICAgICAg fQorCisgICAgICAgICAgICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVtZW50 KS5kYXRhKCdpY29uJyk7CisKKyAgICAgICAgICAgIGlmKCFvcHRpbWFnZSl7 CisgICAgICAgICAgICAgIHJldHVybiBvcHQudGV4dDsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAkKAorICAgICAgICAg ICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNzPSJ3Y1RhYkljb24gJyArIG9w dGltYWdlICsgJyIvPicgKyBvcHQudGV4dCArICc8L3NwYW4+JworICAgICAg ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LAor ICAgICAgICAgIGZvcm1hdFNlbGVjdGlvbiA9IGZ1bmN0aW9uIChvcHQpIHsK KworICAgICAgICAgICAgaWYgKCFvcHQuaWQpIHsKKyAgICAgICAgICAgICAg cmV0dXJuIG9wdC50ZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVtZW50KS5kYXRhKCdpY29uJyks CisgICAgICAgICAgICAgICAgZ3JhbnRVcGRhdGUgPSBmdW5jdGlvbihldikg eworCisgICAgICAgICAgICAgICAgICBfLmVhY2goY29sbGVjdGlvbi53aGVy ZSh7cm9sZTogb3B0LmlkfSksIGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg ICAgICAgICAgbS5zZXQoJ2FkbWluJywgJChldi50YXJnZXQpLmlzKCI6Y2hl Y2tlZCIpKTsKKyAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfTsKKwor ICAgICAgICAgICAgaWYoIW9wdGltYWdlKXsKKyAgICAgICAgICAgICAgcmV0 dXJuIG9wdC50ZXh0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgdmFyIGogPSAkKCc8c3Bhbj48c3BhbiBjbGFzcz0id2NUYWJJY29u ICcgKyBvcHRpbWFnZSArICciLz4nICsgb3B0LnRleHQgKyAnIDxzcGFuPjxp bnB1dCB0eXBlPSJjaGVja2JveCIvPjwvc3Bhbj48L3NwYW4+Jyk7CisKKyAg ICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjaGVja2JveCBsYXp5CisgICAg ICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgICAgICBfLmVhY2goY29sbGVjdGlvbi53 aGVyZSh7cm9sZTogb3B0LmlkfSksIGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgICAgICAgICAgai5maW5kKCdpbnB1dCcpLnByb3AoJ2NoZWNrZWQnLCBt LmdldCgnYWRtaW4nKSk7CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgICAgICB9LCAyMDApOworCisgICAgICAgICAgICAgIChqLmZpbmQo J2lucHV0JykpLm9uKCdjaGFuZ2UnLCBncmFudFVwZGF0ZSk7CisKKyAgICAg ICAgICAgICAgcmV0dXJuIGo7CisgICAgICAgICAgICB9CisgICAgICAgICAg fTsKKworICAgICAgdGhpcy4kZWwuZmluZCgnc2VsZWN0Jykuc2VsZWN0Mih7 CisgICAgICAgIHRlbXBsYXRlUmVzdWx0OiBmb3JtYXRTdGF0ZSwKKyAgICAg ICAgdGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdFNlbGVjdGlvbiwKKyAgICAg ICAgbXVsdGlwbGU6IHRydWUsCisgICAgICAgIHRhZ3M6IHRydWUsCisgICAg ICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgIHBsYWNlaG9sZGVyOiAi U2VsZWN0IG1lbWJlcnMiLAorICAgICAgICB3aWR0aDogJ3N0eWxlJworICAg ICAgfSkub24oImNoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgJChl LnRhcmdldCkuZmluZCgnOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbigpIHsK KyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgdGhpcy4kZWwuZmlu ZCgnZGl2Lm5vdGUnKS5odG1sKCI8c3Bhbj5OT1RFOjxici8+SW4gb3JkZXIg dG8gZ2l2ZSBncmFudCBvcHRpb25zIHNlbGVjdCB0aGUgY2hlY2tib3ggbmV4 dCB0byB0aGUgcm9sZXMuPC9zcGFuPiIpOworCisgICAgICByZXR1cm4gdGhp czsKKyAgICB9LAorICAgIG9uQ2hhbmdlOiBmdW5jdGlvbihlKSB7CisgICAg ICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsLAorICAgICAgICAgICRlbCA9ICQo ZS50YXJnZXQpLAorICAgICAgICAgIGF0dHJBcnIgPSB0aGlzLmZpZWxkLmdl dCgibmFtZSIpLnNwbGl0KCcuJyksCisgICAgICAgICAgbmFtZSA9IGF0dHJB cnIuc2hpZnQoKSwKKyAgICAgICAgICBwYXRoID0gYXR0ckFyci5qb2luKCcu JyksCisgICAgICAgICAgdmFscyA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCks CisgICAgICAgICAgY29sbGVjdGlvbiA9IG1vZGVsLmdldChuYW1lKSwKKyAg ICAgICAgICByZW1vdmVkID0gW107CisKKyAgICAgIHRoaXMuc3RvcExpc3Rl bmluZyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1lLCB0aGlzLnJlbmRl cik7CisKKyAgICAgIC8qCisgICAgICAgKiBJdGVyYXRlIHRocm91Z2ggYWxs IHRoZSB2YWx1ZXMsIGFuZCBmaW5kIG91dCBob3cgbWFueSBhcmUgYWxyZWFk eQorICAgICAgICogcHJlc2VudCBpbiB0aGUgY29sbGVjdGlvbi4KKyAgICAg ICAqLworICAgICAgY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgdmFyIHJvbGUgPSBtLmdldCgncm9sZScpLAorICAgICAgICAgICAg aWR4ID0gXy5pbmRleE9mKHZhbHMsIHJvbGUpOworCisgICAgICAgIGlmIChp ZHggPiAtMSkgeworICAgICAgICAgIHZhbHMuc3BsaWNlKGlkeCwgMSk7Cisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmVtb3ZlZC5wdXNoKHJvbGUp OworICAgICAgICB9CisgICAgICB9KTsKKworICAgICAgLyoKKyAgICAgICAq IEFkZGluZyBuZXcgdmFsdWVzCisgICAgICAgKi8KKyAgICAgIF8uZWFjaCh2 YWxzLCBmdW5jdGlvbih2KSB7CisgICAgICAgIGNvbGxlY3Rpb24uYWRkKHty b2xlOiB2fSk7CisgICAgICB9KTsKKworICAgICAgLyoKKyAgICAgICAqIFJl bW92aW5nIHVud2FudGVkIQorICAgICAgICovCisgICAgICBfLmVhY2gocmVt b3ZlZCwgZnVuY3Rpb24odikgeworICAgICAgICBjb2xsZWN0aW9uLnJlbW92 ZShjb2xsZWN0aW9uLndoZXJlKHtyb2xlOiB2fSkpOworICAgICAgfSk7CisK KyAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwgImNoYW5nZToiICsg bmFtZSwgdGhpcy5yZW5kZXIpOworICAgIH0KKyAgfSk7CisKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ3JvbGUnXSkgeworICAgIHZhciByb2xlID0gcGdB ZG1pbi5Ccm93c2VyLk5vZGVzWydyb2xlJ10gPSBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6ICdzZXJ2ZXInLAor ICAgICAgdHlwZTogJ3JvbGUnLAorICAgICAgbGFiZWw6ICd7eyBfKCdMb2dp bi9Hcm91cCBSb2xlJykgfX0nLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAg ICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIG5vZGVfbGFiZWw6IGZ1bmN0aW9u KHIpIHsKKyAgICAgICAgaWYgKCFyLmNhbl9sb2dpbikgeworICAgICAgICAg IHJldHVybiByLmxhYmVsICsgJyhHUk9VUCknOworICAgICAgICB9CisgICAg ICAgIHJldHVybiByLmxhYmVsOworICAgICAgfSwKKyAgICAgIG5vZGVfaW1h Z2U6IGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgcmV0dXJuIChyLmNhbl9sb2dp biA/ICdpY29uLXJvbGUnIDogJ2ljb24tZ3JvdXAnKTsKKyAgICAgIH0sCisg ICAgICB0aXRsZTogZnVuY3Rpb24oZCkgeworICAgICAgICBpZiAoIWQpIHsK KyAgICAgICAgICByZXR1cm4gdGhpcy5sYWJlbDsKKyAgICAgICAgfQorICAg ICAgICBpZiAoZC5jYW5fbG9naW4pIHsKKyAgICAgICAgICByZXR1cm4gJ3t7 IF8oJ0xvZ2luIFJvbGUnKSB9fScgKyAnIC0gJyArIGQubGFiZWw7CisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuICd7eyBfKCdHcm91cCBSb2xlJykgfX0n ICsgJyAtICcgKyBkLmxhYmVsOworICAgICAgfSwKKyAgICAgIEluaXQ6IGZ1 bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3Ry YXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6 ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0 aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51 cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcm9sZV9vbl9zZXJ2ZXIn LCBub2RlOiAnc2VydmVyJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93 X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0xvZ2luL0dyb3VwIFJv bGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29u LXJvbGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCisgICAgICAgICAg ZW5hYmxlOiAnY2FuX2NyZWF0ZV9yb2xlJworICAgICAgICB9LHsKKyAgICAg ICAgICBuYW1lOiAnY3JlYXRlX3JvbGVfb25fcm9sZXMnLCBub2RlOiAnY29s bC1yb2xlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn b2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9w ZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9y aXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0xvZ2luL0dyb3VwIFJvbGUuLi4nKSB9 fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXJvbGUnLCBk YXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCisgICAgICAgICAgZW5hYmxlOiAn Y2FuX2NyZWF0ZV9yb2xlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1l OiAnY3JlYXRlX3JvbGUnLCBub2RlOiAncm9sZScsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdM b2dpbi9Hcm91cCBSb2xlLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3 Y1RhYkljb24gaWNvbi1yb2xlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9 LAorICAgICAgICAgIGVuYWJsZTogJ2Nhbl9jcmVhdGVfcm9sZScKKyAgICAg ICAgfV0pOworICAgICAgfSwKKyAgICAgIGNhbl9jcmVhdGVfcm9sZTogZnVu Y3Rpb24obm9kZSwgaXRlbSkgeworICAgICAgICB2YXIgdHJlZURhdGEgPSB0 aGlzLmdldFRyZWVOb2RlSGllcmFyY2h5KGl0ZW0pLAorICAgICAgICAgICAg c2VydmVyID0gdHJlZURhdGFbJ3NlcnZlciddOworCisgICAgICAgIHJldHVy biBzZXJ2ZXIuY29ubmVjdGVkICYmIHNlcnZlci51c2VyLmNhbl9jcmVhdGVf cm9sZTsKKyAgICAgIH0sCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2Vy Lk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgaWRBdHRyaWJ1dGU6ICdv aWQnLAorICAgICAgICBkZWZhdWx0czogeworICAgICAgICAgIG9pZDogbnVs bCwKKyAgICAgICAgICByb2xuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAg cm9sY2FubG9naW46IGZhbHNlLAorICAgICAgICAgIHJvbHBhc3N3b3JkOiBu dWxsLAorICAgICAgICAgIHJvbGNvbm5saW1pdDogLTEsCisgICAgICAgICAg cm9sc3VwZXI6IGZhbHNlLAorICAgICAgICAgIHJvbGNyZWF0ZXJvbGU6IGZh bHNlLAorICAgICAgICAgIHJvbGNyZWF0ZWRiOiBmYWxzZSwKKyAgICAgICAg ICByb2xpbmhlcml0OiB0cnVlLAorICAgICAgICAgIHJvbGNhdHVwZGF0ZTog ZmFsc2UsCisgICAgICAgICAgcm9scmVwbGljYXRpb246IGZhbHNlLAorICAg ICAgICAgIHJvbG1lbWJlcnNoaXA6IFtdLAorICAgICAgICAgIHJvbHZhbGlk dW50aWw6IG51bGwsCisgICAgICAgICAgc2VjbGFiZWxzOiBbXSwKKyAgICAg ICAgICB2YXJpYWJsZXM6IFtdCisgICAgICAgIH0sCisgICAgICAgIHNjaGVt YTogW3sKKyAgICAgICAgICBpZDogJ3JvbG5hbWUnLCBsYWJlbDogJ3t7IF8o J05hbWUnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBkaXNhYmxl ZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ29p ZCcsIGxhYmVsOid7eyBfKCdSb2xlIElEJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0Jywg dmlzaWJsZTogdHJ1ZSwgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdyb2xwYXNzd29yZCcsIGxhYmVsOiAne3sgXygnUGFz c3dvcmQnKSB9fScsIHR5cGU6ICdwYXNzd29yZCcsCisgICAgICAgICAgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCisgICAgICAgICAgY29udHJvbDogJ2lucHV0JywgZGVwczog Wydyb2xjYW5sb2dpbiddLCByZXR5cGU6IHRydWUsCisgICAgICAgICAgY2Vs bDogJ3N0cmluZycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICB2YXIgdXNl ciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlci51c2VyOworCisgICAgICAgICAg ICAgIHJldHVybiAoISh1c2VyLmlzX3N1cGVydXNlciB8fCB1c2VyLmNhbl9j cmVhdGVfcm9sZSkgJiYKKyAgICAgICAgICAgICAgICAgIHVzZXIuaWQgIT0g bS5nZXQoJ29pZCcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAncm9sdmFsaWR1bnRpbCcsIGRpc2FibGVkOiAncmVhZG9ubHkn LCB0eXBlOiAnZGF0ZScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdEZWZp bml0aW9uJykgfX0nLCBsYWJlbDogJ3t7IF8oJ0FjY291bnQgRXhwaXJlcycp IH19JywKKyAgICAgICAgICBjZWxsOiAnc3RyaW5nJywgbW9kZTogWydwcm9w ZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10sIHJldHlwZTogdHJ1ZSwKKyAg ICAgICAgICBkZXBzOiBbJ3JvbGNhbmxvZ2luJ10sIG9wdGlvbnM6IHt9Cisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAncm9sY29ubmxpbWl0JywgIHR5 cGU6ICdpbnQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisg ICAgICAgICAgbGFiZWw6ICd7eyBfKCdDb25uZWN0aW9uIExpbWl0JykgfX0n LCBjZWxsOiAnbnVtYmVyJywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnZWRpdCcsICdjcmVhdGUnXSwgZGlzYWJsZWQ6ICdyZWFkb25seScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyb2xjYW5sb2dpbicsIGxh YmVsOid7eyBfKCdDYW4gTG9naW4/JykgfX0nLCB0eXBlOiAnc3dpdGNoJywK KyAgICAgICAgICBncm91cDogJ3t7IF8oJ1JvbGUgUHJpdmlsZWdlcycpIH19 Jywgb3B0aW9uczogc3dpdGNoT3B0aW9ucywKKyAgICAgICAgICBkaXNhYmxl ZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Jv bHN1cGVyJywgbGFiZWw6J3t7IF8oJ1N1cGVyIFVzZXInKSB9fScsIHR5cGU6 ICdzd2l0Y2gnLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnUm9sZSBQcml2 aWxlZ2VzJykgfX0nLCBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLAorICAgICAg ICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN3aXRjaENvbnRyb2wuZXh0ZW5kKHsK KyAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgQmFja2Zvcm0uU3dpdGNoQ29udHJvbC5wcm90b3R5cGUub25DaGFu Z2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgICAgICAgICAgICB0 aGlzLm1vZGVsLnNldCgncm9sY2F0dXBkYXRlJywgdGhpcy5tb2RlbC5nZXQo J3JvbHN1cGVyJykpOworICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldCgn cm9sY3JlYXRlcm9sZScsIHRoaXMubW9kZWwuZ2V0KCdyb2xzdXBlcicpKTsK KyAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXQoJ3JvbGNyZWF0ZWRiJywg dGhpcy5tb2RlbC5nZXQoJ3JvbHN1cGVyJykpOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0pLAorICAgICAgICAgIGRpc2FibGVkOiAncmVhZG9ubHkn CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncm9sY3JlYXRlcm9sZScs IGxhYmVsOid7eyBfKCdDYW4gQ3JlYXRlIFJvbGU/JykgfX0nLAorICAgICAg ICAgIGdyb3VwOiAne3sgXygnUm9sZSBQcml2aWxlZ2VzJykgfX0nLCB0eXBl OiAnc3dpdGNoJywKKyAgICAgICAgICBvcHRpb25zOiBzd2l0Y2hPcHRpb25z LCBkaXNhYmxlZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnRzJykg fX0nLCB0eXBlOiAnbXVsdGlsaW5lJywKKyAgICAgICAgICBncm91cDogbnVs bCwgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10sCisg ICAgICAgICAgb3B0aW9uczogc3dpdGNoT3B0aW9ucywgZGlzYWJsZWQ6ICdy ZWFkb25seScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyb2xjcmVh dGVkYicsIGxhYmVsOid7eyBfKCdDYW4gY3JlYXRlIGRhdGFiYXNlcz8nKSB9 fScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSb2xlIFByaXZpbGVnZXMn KSB9fScsIHR5cGU6ICdzd2l0Y2gnLAorICAgICAgICAgIG9wdGlvbnM6IHN3 aXRjaE9wdGlvbnMsIGRpc2FibGVkOiAncmVhZG9ubHknCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAncm9sY2F0dXBkYXRlJywgbGFiZWw6J3t7IF8o J0NhbiB1cGRhdGUgY2F0YWxvZz8nKSB9fScsCisgICAgICAgICAgdHlwZTog J3N3aXRjaCcsIG1heF92ZXJzaW9uOiA5MDUwMCwgb3B0aW9uczogc3dpdGNo T3B0aW9ucywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1JvbGUgUHJpdmls ZWdlcycpIH19JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgIHJldHVybiAobS5nZXQoJ3JlYWRfb25seScpIHx8ICghbS5nZXQoJ3Jv bHN1cGVyJykpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAncm9saW5oZXJpdCcsIGdyb3VwOiAne3sgXygnUm9sZSBQcml2 aWxlZ2VzJykgfX0nLAorICAgICAgICAgIGxhYmVsOid7eyBfKCdJbmhlcml0 IHJpZ2h0cyBmcm9tIHRoZSBwYXJlbnQgcm9sZXM/JykgfX0nLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLCBk aXNhYmxlZDogJ3JlYWRvbmx5JworICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ3JvbHJlcGxpY2F0aW9uJywgZ3JvdXA6ICd7eyBfKCdSb2xlIFByaXZp bGVnZXMnKSB9fScsCisgICAgICAgICAgbGFiZWw6J3t7IF8oJ0NhbiBpbml0 aWF0ZSBzdHJlYW1pbmcgcmVwbGljYXRpb24gYW5kIGJhY2t1cHM/JykgfX0n LAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtaW5fdmVyc2lvbjogOTAx MDAsIG9wdGlvbnM6IHN3aXRjaE9wdGlvbnMsCisgICAgICAgICAgZGlzYWJs ZWQ6ICdyZWFkb25seScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdy b2xtZW1iZXJzaGlwJywgbGFiZWw6ICd7eyBfKCdSb2xlIE1lbWJlcnNoaXAn KSB9fScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSb2xlIFByaXZpbGVn ZXMnKSB9fScsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBjZWxs OiAnc3RyaW5nJywgZGlzYWJsZWQ6ICdyZWFkb25seScsCisgICAgICAgICAg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAg ICAgICAgY29udHJvbDogUm9sZU1lbWJlcnNDb250cm9sLCBtb2RlbDogcGdC cm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgICAgIGtleXM6 IFsncm9sZSddLAorICAgICAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAg ICAgICAgcm9sZTogdW5kZWZpbmVkLAorICAgICAgICAgICAgICBhZG1pbjog ZmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwKKyAgICAgICAg ICBmaWx0ZXI6IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgIHJldHVybiB0 aGlzLm1vZGVsLmlzTmV3KCkgfHwgKHRoaXMubW9kZWwuZ2V0KCdyb2xuYW1l JykgIT0gZC5sYWJlbCk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ3ZhcmlhYmxlcycsIGxhYmVsOiAne3sgXygnVmFyaWFi bGVzJykgfX0nLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAgZ3Jv dXA6ICd7eyBfKCdTZWN1cml0eScpIH19JywgaGFzRGF0YWJhc2U6IHRydWUs IHVybDogJ3ZhcmlhYmxlcycsCisgICAgICAgICAgbW9kZWw6IHBnQnJvd3Nl ci5Ob2RlLlZhcmlhYmxlTW9kZWwsIGNvbnRyb2w6ICd2YXJpYWJsZS1jb2xs ZWN0aW9uJywKKyAgICAgICAgICBtb2RlOiBbICdlZGl0JywgJ2NyZWF0ZSdd LCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICB1 cmw6ICJ2YXJpYWJsZXMiLCBkaXNhYmxlZDogJ3JlYWRvbmx5JworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xhYmVscycsIGxhYmVsOiAne3sg XygnU2VjdXJpdHkgTGFiZWxzJykgfX0nLAorICAgICAgICAgIG1vZGVsOiBT ZWN1cml0eU1vZGVsLCBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0 aW9uJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0n LCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgbWluX3Zl cnNpb246IDkwMjAwLCBkaXNhYmxlZDogJ3JlYWRvbmx5JywgY2FuQWRkOiB0 cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IHRy dWUsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nCisgICAgICAg IH1dLAorICAgICAgICByZWFkb25seTogZnVuY3Rpb24obSkgeworICAgICAg ICAgIGlmICghbS5oYXMoJ3JlYWRfb25seScpKSB7CisgICAgICAgICAgICB2 YXIgdXNlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlci51c2VyOworCisgICAg ICAgICAgICBtLnNldCgncmVhZF9vbmx5JywgISh1c2VyLmlzX3N1cGVydXNl ciB8fCB1c2VyLmNhbl9jcmVhdGVfcm9sZSkpOworICAgICAgICAgIH0KKwor ICAgICAgICAgIHJldHVybiBtLmdldCgncmVhZF9vbmx5Jyk7CisgICAgICAg IH0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpCisgICAgICAgIHsK KyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICAgIGVycm1z ZywKKyAgICAgICAgICAgICAgc2VjbGFiZWxzID0gdGhpcy5nZXQoJ3NlY2xh YmVscycpOworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ3JvbG5hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdyb2xuYW1lJykp LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAg ICAgIGVyclsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2FuIGJlIGVtcHR5IScp IH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ25h bWUnXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoc2VjbGFiZWxz KSB7CisgICAgICAgICAgICB2YXIgc2VjTGFiZWxzRXJyOworICAgICAgICAg ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWNsYWJlbHMubW9kZWxzLmxlbmd0 aCAmJiAhc2VjTGFiZWxzRXJyOyBpKyspIHsKKyAgICAgICAgICAgICAgc2Vj TGFiZWxzRXJyID0gKHNlY2xhYmVscy5tb2RlbHNbaV0pLnZhbGlkYXRlLmFw cGx5KHNlY2xhYmVscy5tb2RlbHNbaV0pOworICAgICAgICAgICAgICBpZiAo c2VjTGFiZWxzRXJyKSB7CisgICAgICAgICAgICAgICAgZXJyWydzZWNsYWJl bHMnXSA9IHNlY0xhYmVsc0VycjsKKyAgICAgICAgICAgICAgICBlcnJtc2cg PSBlcnJtc2cgfHwgc2VjTGFiZWxzRXJyOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7CisKKyAgICAgICAgICBpZiAo Xy5zaXplKGVycikpIHsKKyAgICAgICAgICAgIHRoaXMudHJpZ2dlcignb24t c3RhdHVzJywge21zZzogZXJybXNnfSk7CisgICAgICAgICAgICByZXR1cm4g ZXJybXNnOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBudWxs OworICAgICAgICB9CisgICAgICB9KQorICAgIH0pLAorICAgIHNnID0gcGdC cm93c2VyLk5vZGVzWydzZXJ2ZXItZ3JvdXAnXTsKKyAgfQorCisgIHJldHVy biBwZ0Jyb3dzZXIuTm9kZXNbJ3JvbGUnXTsKK30pOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9s ZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q4XzQvY3JlYXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVz L3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L2NyZWF0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVkNmUxNwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L2Ny ZWF0ZS5zcWwKQEAgLTAsMCArMSw0OSBAQAoreyUgaW1wb3J0ICdtYWNyb3Mv c2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdt YWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQorQ1JFQVRF IHslIGlmIGRhdGEucm9sY2FubG9naW4gJX1VU0VSeyUgZWxzZSAlfVJPTEV7 JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBX SVRIeyUgaWYgZGF0YS5yb2xjYW5sb2dpbiBhbmQgZGF0YS5yb2xjYW5sb2dp biBpcyBzYW1lYXMgVHJ1ZSAgJX0KKworCUxPR0lOeyUgZWxzZSAlfQorCisJ Tk9MT0dJTnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xzdXBlciAlfQorCisJ U1VQRVJVU0VSeyUgZWxzZSAlfQorCisJTk9TVVBFUlVTRVJ7JSBlbmRpZiAl fXslIGlmIGRhdGEucm9sY3JlYXRlZGIgJX0KKworCUNSRUFURURCeyUgZWxz ZSAlfQorCisJTk9DUkVBVEVEQnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xj cmVhdGVyb2xlICV9CisKKwlDUkVBVEVST0xFeyUgZWxzZSAlfQorCisJTk9D UkVBVEVST0xFeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbGluaGVyaXQgaXMg c2FtZWFzIHRydWUgJX0KKworCUlOSEVSSVR7JSBlbHNlICV9CisKKwlOT0lO SEVSSVR7JSBlbmRpZiAlfXslIGlmIGRhdGEucm9scmVwbGljYXRpb24gJX0K KworCVJFUExJQ0FUSU9OeyUgZWxzZSAlfQorCisJTk9SRVBMSUNBVElPTnsl IGVuZGlmICV9eyUgaWYgJ3JvbGNvbm5saW1pdCcgaW4gZGF0YSBhbmQgZGF0 YS5yb2xjb25ubGltaXQgaXMgbnVtYmVyIGFuZCBkYXRhLnJvbGNvbm5saW1p dCA+PSAtMSAlfQorCisJQ09OTkVDVElPTiBMSU1JVCB7eyBkYXRhLnJvbGNv bm5saW1pdCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2x2YWxpZHVudGls IGFuZCBkYXRhLnJvbHZhbGlkdW50aWwgaXMgbm90IG5vbmUgJX0KKworCVZB TElEIFVOVElMIHt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX0g eyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbHBhc3N3b3JkICV9CisKKwlQQVNT V09SRCB7JSBpZiBkYXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUgJX1OVUxMeyUg ZWxzZSAlfXslIGlmIGR1bW15ICV9J3h4eHh4eCd7JSBlbHNlICV9IHt7IGRh dGEucm9scGFzc3dvcmQgfCBxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGVu ZGlmICV9eyUgZW5kaWYgJX07eyUgaWYgZGF0YS5yb2xzdXBlciBhbmQgZGF0 YS5yb2xjYXR1cGRhdGUgaXMgc2FtZWFzIGZhbHNlICV9CisKKworVVBEQVRF IHBnX2F1dGhpZCBTRVQgcm9sY2F0dXBkYXRlPWZhbHNlIFdIRVJFIHJvbG5h bWUgPSB7eyBkYXRhLnJvbG5hbWV8cXRMaXRlcmFsIH19O3slIGVuZGlmICV9 eyUgaWYgZGF0YS5tZW1iZXJzIGFuZCBkYXRhLm1lbWJlcnN8bGVuZ3RoID4g MCAlfQorCisKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1lbWJlcnMp fGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEucm9sbmFt ZSkgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5h ZG1pbnN8bGVuZ3RoID4gMCAlfQorCitHUkFOVCB7eyBjb25ufHF0SWRlbnQo ZGF0YS5hZG1pbnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50 KGRhdGEucm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBPUFRJT047eyUgZW5kaWYg JX17JSBpZiBkYXRhLnZhcmlhYmxlcyAlfQorCit7JSBmb3IgdmFyIGluIGRh dGEudmFyaWFibGVzICV9CisKK3t7IFZBUklBQkxFLkFQUExZKGNvbm4sIHZh ci5kYXRhYmFzZSwgZGF0YS5yb2xuYW1lLCB2YXIubmFtZSwgdmFyLnZhbHVl KSB9fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLmRlc2Ny aXB0aW9uICV9CisKK0NPTU1FTlQgT04gUk9MRSB7eyBjb25ufHF0SWRlbnQo ZGF0YS5yb2xuYW1lKSB9fSBJUyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0 ZXJhbCB9fTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDhfNC9ub2Rlcy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMv cm9sZS9zcWwvcG9zdDhfNC9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZmNkNGU0OAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Jv bGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L25vZGVzLnNxbApAQCAt MCwwICsxLDggQEAKK1NFTEVDVAorCXIub2lkLCByLnJvbG5hbWUsIHIucm9s Y2FubG9naW4sIHIucm9sc3VwZXIKK0ZST00KKwl7eyByb2xlX3RibCB9fSBy Cit7JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sgcmlkIH19OjppbnQK K3slIGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxvZ2luLCByLnJvbG5h bWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80 L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q4 XzQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZjk5MzY2MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBs YXRlcy9yb2xlL3NxbC9wb3N0OF80L3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAg KzEsMTYgQEAKK1NFTEVDVAorCXIub2lkLCByLiosCisJcGdfY2F0YWxvZy5z aG9ial9kZXNjcmlwdGlvbihyLm9pZCwgJ3BnX2F1dGhpZCcpIEFTIGRlc2Ny aXB0aW9uLAorCUFSUkFZKAorCQlTRUxFQ1QKKwkJCUNBU0UgV0hFTiBhbS5h ZG1pbl9vcHRpb24gVEhFTiAnMScgRUxTRSAnMCcgRU5EIHx8IHJtLnJvbG5h bWUKKwkJRlJPTQorCQkJKFNFTEVDVCAqIEZST00gcGdfYXV0aF9tZW1iZXJz IFdIRVJFIG1lbWJlciA9IHIub2lkKSBhbQorCQkJTEVGVCBKT0lOIHBnX2Nh dGFsb2cucGdfcm9sZXMgcm0gT04gKHJtLm9pZCA9IGFtLnJvbGVpZCkKKwkp IHJvbG1lbWJlcnNoaXAKK0ZST00KKwl7eyByb2xlX3RibCB9fSByCit7JSBp ZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sgcmlkIH19OjppbnQKK3slIGVu ZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxvZ2luLCByLnJvbG5hbWUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3NxbC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDhfNC9zcWwuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NGEwZmYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDhf NC9zcWwuc3FsCkBAIC0wLDAgKzEsOTggQEAKK1NFTEVDVAorCWFycmF5X3Rv X3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcblxuJykKK0ZST00KKyhTRUxF Q1QKKwlDQVNFIFdIRU4gcm9sY2FubG9naW4gVEhFTiAnLS0gVXNlcjogJyBF TFNFICctLSBSb2xlOiAnIEVORAl8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lk ZW50KHJvbG5hbWUpIHx8CisJCUUnXG4tLSBEUk9QICcgfHwgQ0FTRSBXSEVO IHJvbGNhbmxvZ2luIFRIRU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8 CisJCXBnX2NhdGFsb2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgRSc7XG5c bkNSRUFURSAnIHx8CisJCUNBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdV U0VSICcgRUxTRSAnUk9MRSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3Rl X2lkZW50KHJvbG5hbWUpIHx8IEUnIFdJVEhcbiAgJyB8fAorCQlDQVNFIFdI RU4gcm9sY2FubG9naW4gVEhFTiAnTE9HSU4nIEVMU0UgJ05PTE9HSU4nIEVO RCB8fCBFJ1xuICAnIHx8CisJCUNBU0UgV0hFTiByb2xjYW5sb2dpbiBBTkQg cm9scGFzc3dvcmQgTElLRSAnbWQ1JSUnIFRIRU4gJ0VOQ1JZUFRFRCBQQVNT V09SRCAnIHx8IHF1b3RlX2xpdGVyYWwocm9scGFzc3dvcmQpIHx8IEUnXG4g ICcgRUxTRSAnJyBFTkQgfHwKKwkJQ0FTRSBXSEVOIHJvbHN1cGVyIFRIRU4g J1NVUEVSVVNFUicgRUxTRSAnTk9TVVBFUlVTRVInIEVORCB8fCBFJ1xuICAn IHx8CisJCUNBU0UgV0hFTiByb2xpbmhlcml0IFRIRU4gJ0lOSEVSSVQnIEVM U0UgJ05PSU5IRVJJVCcgRU5EIHx8IEUnXG4gICcgfHwKKwkJQ0FTRSBXSEVO IHJvbGNyZWF0ZWRiIFRIRU4gJ0NSRUFURURCJyBFTFNFICdOT0NSRUFURURC JyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9sY3JlYXRlcm9s ZSBUSEVOICdDUkVBVEVST0xFJyBFTFNFICdOT0NSRUFURVJPTEUnIEVORCB8 fCBFJ1xuICAnIHx8CisJCUNBU0UgV0hFTiByb2xjb25ubGltaXQgPiAwIFRI RU4gRSdcbiAgQ09OTkVDVElPTiBMSU1JVCAnIHx8IHJvbGNvbm5saW1pdCBF TFNFICcnIEVORCB8fAorCQlDQVNFIFdIRU4gcm9sdmFsaWR1bnRpbCBJUyBO T1QgTlVMTCBUSEVOIEUnXG4gIFZBTElEIFVOVElMICcgfHwgcXVvdGVfbGl0 ZXJhbChyb2x2YWxpZHVudGlsOjp0ZXh0KSBFTFNFICc7JyBFTkQgfHwKKwkJ LS0gUG9zdGdyZVNRTCA8IDkuNQorCQlDQVNFIFdIRU4gcm9sc3VwZXIgQU5E IE5PVCByb2xjYXR1cGRhdGUgVEhFTiBFJ1xuXG5VUERBVEUgcGdfYXV0aGlk IFNFVCByb2xjYXR1cGRhdGU9ZmFsc2UgV0hFUkUgcm9sbmFtZT0nIHx8IHBn X2NhdGFsb2cucXVvdGVfbGl0ZXJhbChyb2xuYW1lKSB8fCAnOycgRUxTRSAn JyBFTkQgQVMgc3FsCitGUk9NCisJe3sgcm9sZV90YmwgfX0gcgorV0hFUkUK KwlyLm9pZD0lKHJpZClzOjpPSUQKK1VOSU9OIEFMTAorKFNFTEVDVAorCWFy cmF5X3RvX3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcbicpCitGUk9NCiso U0VMRUNUCisJJ0dSQU5UICcgfHwgYXJyYXlfdG9fc3RyaW5nKGFycmF5X2Fn Zyhyb2xuYW1lKSwgJywgJykgfHwgJyBUTyAnIHx8IHBnX2NhdGFsb2cucXVv dGVfaWRlbnQocGdfZ2V0X3VzZXJieWlkKCUocmlkKXM6Ok9JRCkpIHx8CisJ Q0FTRSBXSEVOIGFkbWluX29wdGlvbiBUSEVOICcgV0lUSCBBRE1JTiBPUFRJ T047JyBFTFNFICc7JyBFTkQgc3FsCitGUk9NCisJKFNFTEVDVAorCQlxdW90 ZV9pZGVudChyLnJvbG5hbWUpIEFTIHJvbG5hbWUsIG0uYWRtaW5fb3B0aW9u IEFTIGFkbWluX29wdGlvbgorCUZST00KKwkJcGdfYXV0aF9tZW1iZXJzIG0K KwkJTEVGVCBKT0lOIHBnX3JvbGVzIHIgT04gKG0ucm9sZWlkID0gci5vaWQp CisJV0hFUkUKKwkJbS5tZW1iZXI9JShyaWQpczo6T0lECisJT1JERVIgQlkK KwkJci5yb2xuYW1lCisJKSBhCitHUk9VUCBCWSBhZG1pbl9vcHRpb24pIHMp CitVTklPTiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlf YWdnKHNxbCksIEUnXG4nKSBzcWwKK0ZST00KKyhTRUxFQ1QKKwknQUxURVIg JyB8fCBDQVNFIFdIRU4gcm9sY2FubG9naW4gVEhFTiAnVVNFUiAnIEVMU0Ug J1JPTEUgJyBFTkQgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1l KSB8fCAnIFNFVCAnIHx8IHBhcmFtIHx8ICcgVE8gJyB8fCBDQVNFIFdIRU4g cGFyYW0gSU4gKCdzZWFyY2hfcGF0aCcsICd0ZW1wX3RhYmxlc3BhY2VzJykg VEhFTiB2YWx1ZSBFTFNFIHF1b3RlX2xpdGVyYWwodmFsdWUpIEVORCB8fCAn OycgQVMgc3FsCitGUk9NCisoU0VMRUNUCisJcm9sY2FubG9naW4sIHJvbG5h bWUsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFTIHBhcmFtLCBy ZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25maWcsICc9Jywg MSkgfHwgJz0nLCAnJykgQVMgdmFsdWUKK0ZST00KKwkoU0VMRUNUCisJCQl1 bm5lc3Qocm9sY29uZmlnKSBBUyByb2xjb25maWcsIHJvbGNhbmxvZ2luLCBy b2xuYW1lCisJRlJPTQorCQlwZ19jYXRhbG9nLnBnX3JvbGVzCisJV0hFUkUK KwkJb2lkPSUocmlkKXM6Ok9JRAorCSkgcgorKSBhKSBiKQorLS0gUG9zdGdy ZVNRTCA+PSA5LjAKK1VOSU9OIEFMTAorKFNFTEVDVAorCWFycmF5X3RvX3N0 cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcbicpIEFTIHNxbAorRlJPTQorCShT RUxFQ1QKKwkJJ0FMVEVSIFJPTEUgJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2lk ZW50KHBnX2dldF91c2VyYnlpZCglKHJpZClzOjpPSUQpKSB8fAorCQknIElO IERBVEFCQVNFICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChkYXRuYW1l KSB8fAorCQknIFNFVCAnIHx8IHBhcmFtfHwgJyBUTyAnIHx8CisJCUNBU0UK KwkJV0hFTiBwYXJhbSBJTiAoJ3NlYXJjaF9wYXRoJywgJ3RlbXBfdGFibGVz cGFjZXMnKSBUSEVOIHZhbHVlCisJCUVMU0UgcXVvdGVfbGl0ZXJhbCh2YWx1 ZSkKKwkJRU5EIHx8ICc7JyBBUyBzcWwKKwlGUk9NCisJCShTRUxFQ1QKKwkJ CWRhdG5hbWUsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFTIHBh cmFtLCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25maWcs ICc9JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUKKwkJRlJPTQorCQkJKFNF TEVDVAorCQkJCWQuZGF0bmFtZSwgdW5uZXN0KGMuc2V0Y29uZmlnKSBBUyBy b2xjb25maWcKKwkJCUZST00KKwkJCQkoU0VMRUNUICoKKwkJCQlGUk9NCisJ CQkJCXBnX2NhdGFsb2cucGdfZGJfcm9sZV9zZXR0aW5nIGRyCisJCQkJV0hF UkUKKwkJCQkJZHIuc2V0cm9sZT0lKHJpZClzOjpPSUQgQU5EIGRyLnNldGRh dGFiYXNlIT0wKSBjCisJCQkJTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfZGF0 YWJhc2UgZCBPTiAoZC5vaWQgPSBjLnNldGRhdGFiYXNlKQorCQkJKSBhCisJ CSkgYgorCSkgZAorKQorVU5JT04gQUxMCisoU0VMRUNUCisJJ0NPTU1FTlQg T04gUk9MRSAnIHx8IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocGdfZ2V0X3Vz ZXJieWlkKCUocmlkKXM6Ok9JRCkpIHx8ICcgSVMgJyB8fCAgcGdfY2F0YWxv Zy5xdW90ZV9saXRlcmFsKGRlc2NyaXB0aW9uKSB8fCAnOycgQVMgc3FsCitG Uk9NCisJKFNFTEVDVAlwZ19jYXRhbG9nLnNob2JqX2Rlc2NyaXB0aW9uKCUo cmlkKXM6Ok9JRCwgJ3BnX2F1dGhpZCcpIEFTIGRlc2NyaXB0aW9uKSBhCitX SEVSRQorCWRlc2NyaXB0aW9uIElTIE5PVCBOVUxMKSkgQVMgYQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q4XzQvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3VwZGF0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE2YjVkMAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0 OF80L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxMTAgQEAKK3slIGltcG9ydCAn bWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0KK3slIGlm ICdyb2xuYW1lJyBpbiBkYXRhICV9Cit7JSBzZXQgcm9sbmFtZT1kYXRhLnJv bG5hbWUgJX0KK0FMVEVSeyUgaWYgcm9sQ2FuTG9naW4gJX0gVVNFUiB7JSBl bHNlICV9IFJPTEUgeyUgZW5kaWYgJX17eyBjb25ufHF0SWRlbnQocm9sZSkg fX0KKwlSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KHJvbG5hbWUpIH19Owor Cit7JSBlbHNlICV9Cit7JSBzZXQgcm9sbmFtZT1yb2xlICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YXxoYXNBbnkoYWx0ZXJLZXlzKSAlfQorQUxURVIg eyUgaWYgcm9sQ2FuTG9naW4gJX1VU0VSeyUgZWxzZSAlfVJPTEV7JSBlbmRp ZiAlfSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX17JSBpZiAncm9sY2Fu bG9naW4nIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5yb2xjYW5sb2dpbiAl fQorCUxPR0lOeyUgZWxzZSAlfQorCU5PTE9HSU57JSBlbmRpZiAlfXslIGVu ZGlmICV9eyUgaWYgJ3JvbHN1cGVyJyBpbiBkYXRhICV9CisKK3slIGlmIGRh dGEucm9sc3VwZXIgJX0KKwlTVVBFUlVTRVJ7JSBlbHNlICV9CisJTk9TVVBF UlVTRVJ7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbGNyZWF0ZWRi JyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9sY3JlYXRlZGIgJX0KKwlD UkVBVEVEQnslIGVsc2UgJX0KKwlOT0NSRUFURURCeyUgZW5kaWYgJX17JSBl bmRpZiAlfXslIGlmICdyb2xjcmVhdGVyb2xlJyBpbiBkYXRhICV9CisKK3sl IGlmIGRhdGEucm9sY3JlYXRlcm9sZSAlfQorCUNSRUFURVJPTEV7JSBlbHNl ICV9CisJTk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlm ICdyb2xpbmhlcml0JyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9saW5o ZXJpdCAlfQorCUlOSEVSSVR7JSBlbHNlICV9CisJTk9JTkhFUklUeyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xyZXBsaWNhdGlvbicgaW4gZGF0 YSAlfQorCit7JSBpZiBkYXRhLnJvbHJlcGxpY2F0aW9uICV9CisJUkVQTElD QVRJT057JSBlbHNlICV9CisJTk9SRVBMSUNBVElPTnslIGVuZGlmICV9eyUg ZW5kaWYgJX17JSBpZiAncm9sY29ubmxpbWl0JyBpbiBkYXRhIGFuZCBkYXRh LnJvbGNvbm5saW1pdCBpcyBudW1iZXIgYW5kIGRhdGEucm9sY29ubmxpbWl0 ID49IC0xICV9CisKKwlDT05ORUNUSU9OIExJTUlUIHt7IGRhdGEucm9sY29u bmxpbWl0IH19Cit7JSBlbmRpZiAlfXslIGlmICdyb2x2YWxpZHVudGlsJyBp biBkYXRhIGFuZCBkYXRhLnJvbHZhbGlkdW50aWwgJX0KKworCVZBTElEIFVO VElMIHslIGlmIGRhdGEucm9sdmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAlfXt7 IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX17JSBlbHNlICV9J2lu ZmluaXR5JworeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xwYXNz d29yZCcgaW4gZGF0YSAlfQorCisJUEFTU1dPUkR7JSBpZiBkYXRhLnJvbHBh c3N3b3JkIGlzIG5vbmUgJX0gTlVMTHslIGVsc2UgJX17JSBpZiBkdW1teSAl fSAneHh4eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNzd29yZHxxdExp dGVyYWwgfX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgZW5kaWYgJX07eyUg ZW5kaWYgJX0KKworeyUgaWYKKwlub3Qgcm9sU3VwZXIgYW5kCisJJ3JvbHN1 cGVyJyBpbiBkYXRhIGFuZAorCSdyb2xjYXR1cGRhdGUnIG5vdCBpbiBkYXRh IGFuZAorCWRhdGEucm9sc3VwZXIgJX0KKworCitVUERBVEUgcGdfYXV0aGlk IFNFVCByb2xjYXR1cGRhdGU9ZmFsc2UgV0hFUkUgcm9sbmFtZSA9IHt7IHJv bG5hbWV8cXRMaXRlcmFsIH19OworCit7JSBlbGlmCisJcm9sU3VwZXIgYW5k CisJJ3JvbHN1cGVyJyBub3QgaW4gZGF0YSBhbmQKKwkncm9sY2F0dXBkYXRl JyBpbiBkYXRhICV9Cit7JSBpZiBkYXRhLnJvbGNhdHVwZGF0ZSAlfQorCisK K1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT10cnVlIFdIRVJF IHJvbG5hbWUgPSB7eyByb2xuYW1lfHF0TGl0ZXJhbCB9fTsKKworeyUgZWxz ZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT1m YWxzZSBXSEVSRSByb2xuYW1lID0ge3sgcm9sbmFtZXxxdExpdGVyYWwgfX07 CisKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ3Jldm9rZWRf YWRtaW5zJyBpbiBkYXRhIGFuZAorCWRhdGEucmV2b2tlZF9hZG1pbnN8bGVu Z3RoID4gMAorJX0KKworLS0gUmV2b2tlZCB0aGUgYWRtaW4gb3B0aW9ucyBm cm9tIHRoZSBtZW1iZXJzCitSRVZPS0UgQURNSU4gT1BUSU9OIEZPUiB7eyBj b25ufHF0SWRlbnQoZGF0YS5yZXZva2VkX2FkbWlucyl8am9pbignLCAnKSB9 fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fTt7JSBlbmRpZiAl fXslIGlmICdyZXZva2VkJyBpbiBkYXRhIGFuZCBkYXRhLnJldm9rZWR8bGVu Z3RoID4gMCAlfQorCisKKy0tIEZvbGxvd2luZyBhcmUgbm8gbW9yZSB0aGUg bWVtYmVycworUkVWT0tFIHt7IGNvbm58cXRJZGVudChkYXRhLnJldm9rZWQp fGpvaW4oJywgJykgfX0gRlJPTSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkg fX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5hZG1p bnN8bGVuZ3RoID4gMCAlfQorCistLSBGb2xsb3dpbmcgYXJlIHRoZSBuZXcg YWRtaW5zIChvciwgZXhpc3RpbmcgbWVtYmVycyBtYWRlIGFkbWlucykKK0dS QU5UIHt7IGNvbm58cXRJZGVudChkYXRhLmFkbWlucyl8am9pbignLCAnKSB9 fSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBP UFRJT047eyUgZW5kaWYgJX17JSBpZiBkYXRhLm1lbWJlcnMgYW5kIGRhdGEu bWVtYmVyc3xsZW5ndGggPiAwICV9CisKKworLS0gRm9sbG93aW5nIGFyZSB0 aGUgbmV3IG1lbWJlcnMKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1l bWJlcnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KHJvbG5h bWUpIH19O3slIGVuZGlmICV9Cit7JSBpZiAndmFyaWFibGVzJyBpbiBkYXRh IGFuZCBkYXRhLnZhcmlhYmxlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgdmFy aWFibGVzID0gZGF0YS52YXJpYWJsZXMgJX0KK3slIGlmICdkZWxldGVkJyBp biB2YXJpYWJsZXMgYW5kIHZhcmlhYmxlcy5kZWxldGVkfGxlbmd0aCA+IDAg JX0KKworeyUgZm9yIHZhciBpbiB2YXJpYWJsZXMuZGVsZXRlZCAlfQore3sg VkFSSUFCTEUuUkVTRVQoY29ubiwgdmFyLmRhdGFiYXNlLCByb2xuYW1lLCB2 YXIubmFtZSkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9Cit7JSBpZiAn YWRkZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFibGVzLmFkZGVkfGxlbmd0 aCA+IDAgJX0KKworeyUgZm9yIHZhciBpbiB2YXJpYWJsZXMuYWRkZWQgJX0K K3t7IFZBUklBQkxFLkFQUExZKGNvbm4sIHZhci5kYXRhYmFzZSwgcm9sbmFt ZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkgfX0KK3slIGVuZGZvciAlfXslIGVu ZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gdmFyaWFibGVzIGFuZCB2YXJp YWJsZXMuY2hhbmdlZHxsZW5ndGggPiAwICV9CisKK3slIGZvciB2YXIgaW4g dmFyaWFibGVzLmNoYW5nZWQgJX0KK3t7IFZBUklBQkxFLkFQUExZKGNvbm4s IHZhci5kYXRhYmFzZSwgcm9sbmFtZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkg fX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiAnZGVzY3JpcHRpb24nIGluIGRhdGEgJX0KKworCitDT01NRU5UIE9O IFJPTEUge3sgY29ubnxxdElkZW50KHJvbG5hbWUpIH19IElTIHt7IGRhdGEu ZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3ZhcmlhYmxl cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDhfNC92YXJpYWJs ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4 NjIwYzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9z cWwvcG9zdDhfNC92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMjUgQEAKK1NF TEVDVAorICAgIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIEFTIG5h bWUsIHJlcGxhY2Uocm9sY29uZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywg Jz0nLCAxKSB8fCAnPScsICcnKSBBUyB2YWx1ZSwgTlVMTDo6dGV4dCBBUyBk YXRhYmFzZQorRlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHVubmVz dChyb2xjb25maWcpIEFTIHJvbGNvbmZpZywgcm9sY2FubG9naW4sIHJvbG5h bWUKKyAgICBGUk9NCisgICAgICAgIHBnX2NhdGFsb2cucGdfcm9sZXMKKyAg ICBXSEVSRQorICAgICAgICBvaWQ9e3sgcmlkfHF0TGl0ZXJhbCB9fTo6T0lE CisgICAgKSByCisKK1VOSU9OIEFMTAorU0VMRUNUCisgICAgc3BsaXRfcGFy dChyb2xjb25maWcsICc9JywgMSkgQVMgbmFtZSwgcmVwbGFjZShyb2xjb25m aWcsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycp IEFTIHZhbHVlLCBkYXRuYW1lIEFTIGRhdGFiYXNlCitGUk9NCisgICAgKFNF TEVDVAorICAgICAgICBkLmRhdG5hbWUsIHVubmVzdChjLnNldGNvbmZpZykg QVMgcm9sY29uZmlnCisgICAgRlJPTQorICAgICAgICAoU0VMRUNUICoKKyAg ICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX2RiX3JvbGVfc2V0dGluZyBkcgor ICAgICAgICBXSEVSRQorICAgICAgICAgICAgZHIuc2V0cm9sZT17eyByaWR8 cXRMaXRlcmFsIH19OjpPSUQgQU5EIGRyLnNldGRhdGFiYXNlIT0wCisgICAg ICAgICkgYworICAgICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19kYXRh YmFzZSBkIE9OIChkLm9pZCA9IGMuc2V0ZGF0YWJhc2UpCisgICAgKSBhOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvY3Jl YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8wL2NyZWF0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZl YjVkMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3Nx bC9wb3N0OV8wL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw0NSBAQAoreyUgaW1w b3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQor eyUgaW1wb3J0ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJM RSAlfQorQ1JFQVRFIHslIGlmIGRhdGEucm9sY2FubG9naW4gJX1VU0VSeyUg ZWxzZSAlfVJPTEV7JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQoZGF0YS5y b2xuYW1lKSB9fSBXSVRIeyUgaWYgZGF0YS5yb2xjYW5sb2dpbiBhbmQgZGF0 YS5yb2xjYW5sb2dpbiBpcyBzYW1lYXMgVHJ1ZSAgJX0KKworCUxPR0lOeyUg ZWxzZSAlfQorCisJTk9MT0dJTnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xz dXBlciAlfQorCisJU1VQRVJVU0VSeyUgZWxzZSAlfQorCisJTk9TVVBFUlVT RVJ7JSBlbmRpZiAlfXslIGlmIGRhdGEucm9sY3JlYXRlZGIgJX0KKworCUNS RUFURURCeyUgZWxzZSAlfQorCisJTk9DUkVBVEVEQnslIGVuZGlmICV9eyUg aWYgZGF0YS5yb2xjcmVhdGVyb2xlICV9CisKKwlDUkVBVEVST0xFeyUgZWxz ZSAlfQorCisJTk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJv bGluaGVyaXQgaXMgc2FtZWFzIHRydWUgJX0KKworCUlOSEVSSVR7JSBlbHNl ICV9CisKKwlOT0lOSEVSSVR7JSBlbmRpZiAlfXslIGlmICdyb2xjb25ubGlt aXQnIGluIGRhdGEgYW5kIGRhdGEucm9sY29ubmxpbWl0IGlzIG51bWJlciBh bmQgZGF0YS5yb2xjb25ubGltaXQgPj0gLTEgJX0KKworCUNPTk5FQ1RJT04g TElNSVQge3sgZGF0YS5yb2xjb25ubGltaXQgfX17JSBlbmRpZiAlfXslIGlm IGRhdGEucm9sdmFsaWR1bnRpbCBhbmQgZGF0YS5yb2x2YWxpZHVudGlsIGlz IG5vdCBub25lICV9CisKKwlWQUxJRCBVTlRJTCB7eyBkYXRhLnJvbHZhbGlk dW50aWx8cXRMaXRlcmFsIH19IHslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xw YXNzd29yZCAlfQorCisJUEFTU1dPUkQgeyUgaWYgZGF0YS5yb2xwYXNzd29y ZCBpcyBub25lICV9TlVMTHslIGVsc2UgJX17JSBpZiBkdW1teSAlfSd4eHh4 eHgneyUgZWxzZSAlfSB7eyBkYXRhLnJvbHBhc3N3b3JkIHwgcXRMaXRlcmFs IH19eyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGVuZGlmICV9O3slIGlmIGRh dGEucm9sc3VwZXIgYW5kIGRhdGEucm9sY2F0dXBkYXRlIGlzIHNhbWVhcyBm YWxzZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0 ZT1mYWxzZSBXSEVSRSByb2xuYW1lID0ge3sgZGF0YS5yb2xuYW1lfHF0TGl0 ZXJhbCB9fTt7JSBlbmRpZiAlfXslIGlmIGRhdGEubWVtYmVycyBhbmQgZGF0 YS5tZW1iZXJzfGxlbmd0aCA+IDAgJX0KKworCitHUkFOVCB7eyBjb25ufHF0 SWRlbnQoZGF0YS5tZW1iZXJzKXxqb2luKCcsICcpIH19IFRPIHt7IGNvbm58 cXRJZGVudChkYXRhLnJvbG5hbWUpIH19O3slIGVuZGlmICV9eyUgaWYgZGF0 YS5hZG1pbnMgYW5kIGRhdGEuYWRtaW5zfGxlbmd0aCA+IDAgJX0KKworR1JB TlQge3sgY29ubnxxdElkZW50KGRhdGEuYWRtaW5zKXxqb2luKCcsICcpIH19 IFRPIHt7IGNvbm58cXRJZGVudChkYXRhLnJvbG5hbWUpIH19IFdJVEggQURN SU4gT1BUSU9OO3slIGVuZGlmICV9eyUgaWYgZGF0YS52YXJpYWJsZXMgJX0K KworeyUgZm9yIHZhciBpbiBkYXRhLnZhcmlhYmxlcyAlfQorCit7eyBWQVJJ QUJMRS5BUFBMWShjb25uLCB2YXIuZGF0YWJhc2UsIGRhdGEucm9sbmFtZSwg dmFyLm5hbWUsIHZhci52YWx1ZSkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlm ICV9eyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIFJP TEUge3sgY29ubnxxdElkZW50KGRhdGEucm9sbmFtZSkgfX0gSVMge3sgZGF0 YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvbm9kZXMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvbm9kZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDRlNDgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9z dDlfMC9ub2Rlcy5zcWwKQEAgLTAsMCArMSw4IEBACitTRUxFQ1QKKwlyLm9p ZCwgci5yb2xuYW1lLCByLnJvbGNhbmxvZ2luLCByLnJvbHN1cGVyCitGUk9N CisJe3sgcm9sZV90YmwgfX0gcgoreyUgaWYgcmlkICV9CitXSEVSRSByLm9p ZCA9IHt7IHJpZCB9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgci5y b2xjYW5sb2dpbiwgci5yb2xuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDlfMC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBs YXRlcy9yb2xlL3NxbC9wb3N0OV8wL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OTM2NjMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC9wcm9w ZXJ0aWVzLnNxbApAQCAtMCwwICsxLDE2IEBACitTRUxFQ1QKKwlyLm9pZCwg ci4qLAorCXBnX2NhdGFsb2cuc2hvYmpfZGVzY3JpcHRpb24oci5vaWQsICdw Z19hdXRoaWQnKSBBUyBkZXNjcmlwdGlvbiwKKwlBUlJBWSgKKwkJU0VMRUNU CisJCQlDQVNFIFdIRU4gYW0uYWRtaW5fb3B0aW9uIFRIRU4gJzEnIEVMU0Ug JzAnIEVORCB8fCBybS5yb2xuYW1lCisJCUZST00KKwkJCShTRUxFQ1QgKiBG Uk9NIHBnX2F1dGhfbWVtYmVycyBXSEVSRSBtZW1iZXIgPSByLm9pZCkgYW0K KwkJCUxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIHJtIE9OIChybS5v aWQgPSBhbS5yb2xlaWQpCisJKSByb2xtZW1iZXJzaGlwCitGUk9NCisJe3sg cm9sZV90YmwgfX0gcgoreyUgaWYgcmlkICV9CitXSEVSRSByLm9pZCA9IHt7 IHJpZCB9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgci5yb2xjYW5s b2dpbiwgci5yb2xuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9s ZS9zcWwvcG9zdDlfMC9zcWwuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3Fs L3Bvc3Q5XzAvc3FsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kNTRhMGZmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxh dGVzL3JvbGUvc3FsL3Bvc3Q5XzAvc3FsLnNxbApAQCAtMCwwICsxLDk4IEBA CitTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUn XG5cbicpCitGUk9NCisoU0VMRUNUCisJQ0FTRSBXSEVOIHJvbGNhbmxvZ2lu IFRIRU4gJy0tIFVzZXI6ICcgRUxTRSAnLS0gUm9sZTogJyBFTkQJfHwKKwkJ cGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fAorCQlFJ1xuLS0g RFJPUCAnIHx8IENBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdVU0VSICcg RUxTRSAnUk9MRSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50 KHJvbG5hbWUpIHx8IEUnO1xuXG5DUkVBVEUgJyB8fAorCQlDQVNFIFdIRU4g cm9sY2FubG9naW4gVEhFTiAnVVNFUiAnIEVMU0UgJ1JPTEUgJyBFTkQgfHwK KwkJcGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fCBFJyBXSVRI XG4gICcgfHwKKwkJQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRIRU4gJ0xPR0lO JyBFTFNFICdOT0xPR0lOJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdI RU4gcm9sY2FubG9naW4gQU5EIHJvbHBhc3N3b3JkIExJS0UgJ21kNSUlJyBU SEVOICdFTkNSWVBURUQgUEFTU1dPUkQgJyB8fCBxdW90ZV9saXRlcmFsKHJv bHBhc3N3b3JkKSB8fCBFJ1xuICAnIEVMU0UgJycgRU5EIHx8CisJCUNBU0Ug V0hFTiByb2xzdXBlciBUSEVOICdTVVBFUlVTRVInIEVMU0UgJ05PU1VQRVJV U0VSJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9saW5oZXJp dCBUSEVOICdJTkhFUklUJyBFTFNFICdOT0lOSEVSSVQnIEVORCB8fCBFJ1xu ICAnIHx8CisJCUNBU0UgV0hFTiByb2xjcmVhdGVkYiBUSEVOICdDUkVBVEVE QicgRUxTRSAnTk9DUkVBVEVEQicgRU5EIHx8IEUnXG4gICcgfHwKKwkJQ0FT RSBXSEVOIHJvbGNyZWF0ZXJvbGUgVEhFTiAnQ1JFQVRFUk9MRScgRUxTRSAn Tk9DUkVBVEVST0xFJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4g cm9sY29ubmxpbWl0ID4gMCBUSEVOIEUnXG4gIENPTk5FQ1RJT04gTElNSVQg JyB8fCByb2xjb25ubGltaXQgRUxTRSAnJyBFTkQgfHwKKwkJQ0FTRSBXSEVO IHJvbHZhbGlkdW50aWwgSVMgTk9UIE5VTEwgVEhFTiBFJ1xuICBWQUxJRCBV TlRJTCAnIHx8IHF1b3RlX2xpdGVyYWwocm9sdmFsaWR1bnRpbDo6dGV4dCkg RUxTRSAnOycgRU5EIHx8CisJCS0tIFBvc3RncmVTUUwgPCA5LjUKKwkJQ0FT RSBXSEVOIHJvbHN1cGVyIEFORCBOT1Qgcm9sY2F0dXBkYXRlIFRIRU4gRSdc blxuVVBEQVRFIHBnX2F1dGhpZCBTRVQgcm9sY2F0dXBkYXRlPWZhbHNlIFdI RVJFIHJvbG5hbWU9JyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwocm9s bmFtZSkgfHwgJzsnIEVMU0UgJycgRU5EIEFTIHNxbAorRlJPTQorCXt7IHJv bGVfdGJsIH19IHIKK1dIRVJFCisJci5vaWQ9JShyaWQpczo6T0lECitVTklP TiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNx bCksIEUnXG4nKQorRlJPTQorKFNFTEVDVAorCSdHUkFOVCAnIHx8IGFycmF5 X3RvX3N0cmluZyhhcnJheV9hZ2cocm9sbmFtZSksICcsICcpIHx8ICcgVE8g JyB8fCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBnX2dldF91c2VyYnlpZCgl KHJpZClzOjpPSUQpKSB8fAorCUNBU0UgV0hFTiBhZG1pbl9vcHRpb24gVEhF TiAnIFdJVEggQURNSU4gT1BUSU9OOycgRUxTRSAnOycgRU5EIHNxbAorRlJP TQorCShTRUxFQ1QKKwkJcXVvdGVfaWRlbnQoci5yb2xuYW1lKSBBUyByb2xu YW1lLCBtLmFkbWluX29wdGlvbiBBUyBhZG1pbl9vcHRpb24KKwlGUk9NCisJ CXBnX2F1dGhfbWVtYmVycyBtCisJCUxFRlQgSk9JTiBwZ19yb2xlcyByIE9O IChtLnJvbGVpZCA9IHIub2lkKQorCVdIRVJFCisJCW0ubWVtYmVyPSUocmlk KXM6Ok9JRAorCU9SREVSIEJZCisJCXIucm9sbmFtZQorCSkgYQorR1JPVVAg QlkgYWRtaW5fb3B0aW9uKSBzKQorVU5JT04gQUxMCisoU0VMRUNUCisJYXJy YXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwpLCBFJ1xuJykgc3FsCitGUk9N CisoU0VMRUNUCisJJ0FMVEVSICcgfHwgQ0FTRSBXSEVOIHJvbGNhbmxvZ2lu IFRIRU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8IHBnX2NhdGFsb2cu cXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgJyBTRVQgJyB8fCBwYXJhbSB8fCAn IFRPICcgfHwgQ0FTRSBXSEVOIHBhcmFtIElOICgnc2VhcmNoX3BhdGgnLCAn dGVtcF90YWJsZXNwYWNlcycpIFRIRU4gdmFsdWUgRUxTRSBxdW90ZV9saXRl cmFsKHZhbHVlKSBFTkQgfHwgJzsnIEFTIHNxbAorRlJPTQorKFNFTEVDVAor CXJvbGNhbmxvZ2luLCByb2xuYW1lLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywg Jz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25maWcsIHNwbGl0X3Bh cnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZhbHVlCitG Uk9NCisJKFNFTEVDVAorCQkJdW5uZXN0KHJvbGNvbmZpZykgQVMgcm9sY29u ZmlnLCByb2xjYW5sb2dpbiwgcm9sbmFtZQorCUZST00KKwkJcGdfY2F0YWxv Zy5wZ19yb2xlcworCVdIRVJFCisJCW9pZD0lKHJpZClzOjpPSUQKKwkpIHIK KykgYSkgYikKKy0tIFBvc3RncmVTUUwgPj0gOS4wCitVTklPTiBBTEwKKyhT RUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUnXG4n KSBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCisJCSdBTFRFUiBST0xFICcgfHwg cGdfY2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNlcmJ5aWQoJShyaWQp czo6T0lEKSkgfHwKKwkJJyBJTiBEQVRBQkFTRSAnIHx8IHBnX2NhdGFsb2cu cXVvdGVfaWRlbnQoZGF0bmFtZSkgfHwKKwkJJyBTRVQgJyB8fCBwYXJhbXx8 ICcgVE8gJyB8fAorCQlDQVNFCisJCVdIRU4gcGFyYW0gSU4gKCdzZWFyY2hf cGF0aCcsICd0ZW1wX3RhYmxlc3BhY2VzJykgVEhFTiB2YWx1ZQorCQlFTFNF IHF1b3RlX2xpdGVyYWwodmFsdWUpCisJCUVORCB8fCAnOycgQVMgc3FsCisJ RlJPTQorCQkoU0VMRUNUCisJCQlkYXRuYW1lLCBzcGxpdF9wYXJ0KHJvbGNv bmZpZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25maWcsIHNw bGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZh bHVlCisJCUZST00KKwkJCShTRUxFQ1QKKwkJCQlkLmRhdG5hbWUsIHVubmVz dChjLnNldGNvbmZpZykgQVMgcm9sY29uZmlnCisJCQlGUk9NCisJCQkJKFNF TEVDVCAqCisJCQkJRlJPTQorCQkJCQlwZ19jYXRhbG9nLnBnX2RiX3JvbGVf c2V0dGluZyBkcgorCQkJCVdIRVJFCisJCQkJCWRyLnNldHJvbGU9JShyaWQp czo6T0lEIEFORCBkci5zZXRkYXRhYmFzZSE9MCkgYworCQkJCUxFRlQgSk9J TiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIGQgT04gKGQub2lkID0gYy5zZXRk YXRhYmFzZSkKKwkJCSkgYQorCQkpIGIKKwkpIGQKKykKK1VOSU9OIEFMTAor KFNFTEVDVAorCSdDT01NRU5UIE9OIFJPTEUgJyB8fCBwZ19jYXRhbG9nLnF1 b3RlX2lkZW50KHBnX2dldF91c2VyYnlpZCglKHJpZClzOjpPSUQpKSB8fCAn IElTICcgfHwgIHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChkZXNjcmlwdGlv bikgfHwgJzsnIEFTIHNxbAorRlJPTQorCShTRUxFQ1QJcGdfY2F0YWxvZy5z aG9ial9kZXNjcmlwdGlvbiglKHJpZClzOjpPSUQsICdwZ19hdXRoaWQnKSBB UyBkZXNjcmlwdGlvbikgYQorV0hFUkUKKwlkZXNjcmlwdGlvbiBJUyBOT1Qg TlVMTCkpIEFTIGEKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3Nx bC9wb3N0OV8wL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwv cG9zdDlfMC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmJhNjU0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC91cGRhdGUuc3FsCkBAIC0wLDAgKzEs MTA2IEBACit7JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3MnIGFz IFZBUklBQkxFICV9Cit7JSBpZiAncm9sbmFtZScgaW4gZGF0YSAlfQoreyUg c2V0IHJvbG5hbWU9ZGF0YS5yb2xuYW1lICV9CitBTFRFUnslIGlmIHJvbENh bkxvZ2luICV9IFVTRVIgeyUgZWxzZSAlfSBST0xFIHslIGVuZGlmICV9e3sg Y29ubnxxdElkZW50KHJvbGUpIH19CisJUkVOQU1FIFRPIHt7IGNvbm58cXRJ ZGVudChyb2xuYW1lKSB9fTsKKworeyUgZWxzZSAlfQoreyUgc2V0IHJvbG5h bWU9cm9sZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGF8aGFzQW55KGFs dGVyS2V5cykgJX0KK0FMVEVSIHslIGlmIHJvbENhbkxvZ2luICV9VVNFUnsl IGVsc2UgJX1ST0xFeyUgZW5kaWYgJX0ge3sgY29ubnxxdElkZW50KHJvbG5h bWUpIH19eyUgaWYgJ3JvbGNhbmxvZ2luJyBpbiBkYXRhICV9CisKK3slIGlm IGRhdGEucm9sY2FubG9naW4gJX0KKwlMT0dJTnslIGVsc2UgJX0KKwlOT0xP R0lOeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xzdXBlcicgaW4g ZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbHN1cGVyICV9CisJU1VQRVJVU0VS eyUgZWxzZSAlfQorCU5PU1VQRVJVU0VSeyUgZW5kaWYgJX17JSBlbmRpZiAl fXslIGlmICdyb2xjcmVhdGVkYicgaW4gZGF0YSAlfQorCit7JSBpZiBkYXRh LnJvbGNyZWF0ZWRiICV9CisJQ1JFQVRFREJ7JSBlbHNlICV9CisJTk9DUkVB VEVEQnslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9sY3JlYXRlcm9s ZScgaW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbGNyZWF0ZXJvbGUgJX0K KwlDUkVBVEVST0xFeyUgZWxzZSAlfQorCU5PQ1JFQVRFUk9MRXslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiAncm9saW5oZXJpdCcgaW4gZGF0YSAlfQor Cit7JSBpZiBkYXRhLnJvbGluaGVyaXQgJX0KKwlJTkhFUklUeyUgZWxzZSAl fQorCU5PSU5IRVJJVHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9s Y29ubmxpbWl0JyBpbiBkYXRhIGFuZCBkYXRhLnJvbGNvbm5saW1pdCBpcyBu dW1iZXIgYW5kIGRhdGEucm9sY29ubmxpbWl0ID49IC0xICV9CisKKwlDT05O RUNUSU9OIExJTUlUIHt7IGRhdGEucm9sY29ubmxpbWl0IH19Cit7JSBlbmRp ZiAlfXslIGlmICdyb2x2YWxpZHVudGlsJyBpbiBkYXRhIGFuZCBkYXRhLnJv bHZhbGlkdW50aWwgJX0KKworCVZBTElEIFVOVElMIHslIGlmIGRhdGEucm9s dmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAlfXt7IGRhdGEucm9sdmFsaWR1bnRp bHxxdExpdGVyYWwgfX17JSBlbHNlICV9J2luZmluaXR5JworeyUgZW5kaWYg JX17JSBlbmRpZiAlfXslIGlmICdyb2xwYXNzd29yZCcgaW4gZGF0YSAlfQor CisJUEFTU1dPUkR7JSBpZiBkYXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUgJX0g TlVMTHslIGVsc2UgJX17JSBpZiBkdW1teSAlfSAneHh4eHh4J3slIGVsc2Ug JX0ge3sgZGF0YS5yb2xwYXNzd29yZHxxdExpdGVyYWwgfX17JSBlbmRpZiAl fXslIGVuZGlmICV9eyUgZW5kaWYgJX07eyUgZW5kaWYgJX0KKworeyUgaWYK Kwlub3Qgcm9sU3VwZXIgYW5kCisJJ3JvbHN1cGVyJyBpbiBkYXRhIGFuZAor CSdyb2xjYXR1cGRhdGUnIG5vdCBpbiBkYXRhIGFuZAorCWRhdGEucm9sc3Vw ZXIgJX0KKworCitVUERBVEUgcGdfYXV0aGlkIFNFVCByb2xjYXR1cGRhdGU9 ZmFsc2UgV0hFUkUgcm9sbmFtZSA9IHt7IHJvbG5hbWV8cXRMaXRlcmFsIH19 OworCit7JSBlbGlmCisJcm9sU3VwZXIgYW5kCisJJ3JvbHN1cGVyJyBub3Qg aW4gZGF0YSBhbmQKKwkncm9sY2F0dXBkYXRlJyBpbiBkYXRhICV9Cit7JSBp ZiBkYXRhLnJvbGNhdHVwZGF0ZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQg U0VUIHJvbGNhdHVwZGF0ZT10cnVlIFdIRVJFIHJvbG5hbWUgPSB7eyByb2xu YW1lfHF0TGl0ZXJhbCB9fTsKKworeyUgZWxzZSAlfQorCisKK1VQREFURSBw Z19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT1mYWxzZSBXSEVSRSByb2xuYW1l ID0ge3sgcm9sbmFtZXxxdExpdGVyYWwgfX07CisKK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQoreyUgaWYgJ3Jldm9rZWRfYWRtaW5zJyBpbiBkYXRhIGFu ZAorCWRhdGEucmV2b2tlZF9hZG1pbnN8bGVuZ3RoID4gMAorJX0KKworLS0g UmV2b2tlZCB0aGUgYWRtaW4gb3B0aW9ucyBmcm9tIHRoZSBtZW1iZXJzCitS RVZPS0UgQURNSU4gT1BUSU9OIEZPUiB7eyBjb25ufHF0SWRlbnQoZGF0YS5y ZXZva2VkX2FkbWlucyl8am9pbignLCAnKSB9fSBGUk9NIHt7IGNvbm58cXRJ ZGVudChyb2xuYW1lKSB9fTt7JSBlbmRpZiAlfXslIGlmICdyZXZva2VkJyBp biBkYXRhIGFuZCBkYXRhLnJldm9rZWR8bGVuZ3RoID4gMCAlfQorCisKKy0t IEZvbGxvd2luZyBhcmUgbm8gbW9yZSB0aGUgbWVtYmVycworUkVWT0tFIHt7 IGNvbm58cXRJZGVudChkYXRhLnJldm9rZWQpfGpvaW4oJywgJykgfX0gRlJP TSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX07eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5hZG1pbnN8bGVuZ3RoID4gMCAlfQor CistLSBGb2xsb3dpbmcgYXJlIHRoZSBuZXcgYWRtaW5zIChvciwgZXhpc3Rp bmcgbWVtYmVycyBtYWRlIGFkbWlucykKK0dSQU5UIHt7IGNvbm58cXRJZGVu dChkYXRhLmFkbWlucyl8am9pbignLCAnKSB9fSBUTyB7eyBjb25ufHF0SWRl bnQocm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBPUFRJT047eyUgZW5kaWYgJX17 JSBpZiBkYXRhLm1lbWJlcnMgYW5kIGRhdGEubWVtYmVyc3xsZW5ndGggPiAw ICV9CisKKworLS0gRm9sbG93aW5nIGFyZSB0aGUgbmV3IG1lbWJlcnMKK0dS QU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1lbWJlcnMpfGpvaW4oJywgJykg fX0gVE8ge3sgY29ubnxxdElkZW50KHJvbG5hbWUpIH19O3slIGVuZGlmICV9 Cit7JSBpZiAndmFyaWFibGVzJyBpbiBkYXRhIGFuZCBkYXRhLnZhcmlhYmxl c3xsZW5ndGggPiAwICV9Cit7JSBzZXQgdmFyaWFibGVzID0gZGF0YS52YXJp YWJsZXMgJX0KK3slIGlmICdkZWxldGVkJyBpbiB2YXJpYWJsZXMgYW5kIHZh cmlhYmxlcy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHZhciBp biB2YXJpYWJsZXMuZGVsZXRlZCAlfQore3sgVkFSSUFCTEUuUkVTRVQoY29u biwgdmFyLmRhdGFiYXNlLCByb2xuYW1lLCB2YXIubmFtZSkgfX0KK3slIGVu ZGZvciAlfXslIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIHZhcmlhYmxl cyBhbmQgdmFyaWFibGVzLmFkZGVkfGxlbmd0aCA+IDAgJX0KKworeyUgZm9y IHZhciBpbiB2YXJpYWJsZXMuYWRkZWQgJX0KK3t7IFZBUklBQkxFLkFQUExZ KGNvbm4sIHZhci5kYXRhYmFzZSwgcm9sbmFtZSwgdmFyLm5hbWUsIHZhci52 YWx1ZSkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9Cit7JSBpZiAnY2hh bmdlZCcgaW4gdmFyaWFibGVzIGFuZCB2YXJpYWJsZXMuY2hhbmdlZHxsZW5n dGggPiAwICV9CisKK3slIGZvciB2YXIgaW4gdmFyaWFibGVzLmNoYW5nZWQg JX0KK3t7IFZBUklBQkxFLkFQUExZKGNvbm4sIHZhci5kYXRhYmFzZSwgcm9s bmFtZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnZGVzY3JpcHRpb24n IGluIGRhdGEgJX0KKworCitDT01NRU5UIE9OIFJPTEUge3sgY29ubnxxdElk ZW50KHJvbG5hbWUpIH19IElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRl cmFsIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRl cy9yb2xlL3NxbC9wb3N0OV8wL3ZhcmlhYmxlcy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDlfMC92YXJpYWJsZXMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjIwYzEKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC92YXJpYWJs ZXMuc3FsCkBAIC0wLDAgKzEsMjUgQEAKK1NFTEVDVAorICAgIHNwbGl0X3Bh cnQocm9sY29uZmlnLCAnPScsIDEpIEFTIG5hbWUsIHJlcGxhY2Uocm9sY29u ZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScsICcn KSBBUyB2YWx1ZSwgTlVMTDo6dGV4dCBBUyBkYXRhYmFzZQorRlJPTQorICAg IChTRUxFQ1QKKyAgICAgICAgICAgIHVubmVzdChyb2xjb25maWcpIEFTIHJv bGNvbmZpZywgcm9sY2FubG9naW4sIHJvbG5hbWUKKyAgICBGUk9NCisgICAg ICAgIHBnX2NhdGFsb2cucGdfcm9sZXMKKyAgICBXSEVSRQorICAgICAgICBv aWQ9e3sgcmlkfHF0TGl0ZXJhbCB9fTo6T0lECisgICAgKSByCisKK1VOSU9O IEFMTAorU0VMRUNUCisgICAgc3BsaXRfcGFydChyb2xjb25maWcsICc9Jywg MSkgQVMgbmFtZSwgcmVwbGFjZShyb2xjb25maWcsIHNwbGl0X3BhcnQocm9s Y29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZhbHVlLCBkYXRuYW1l IEFTIGRhdGFiYXNlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBkLmRh dG5hbWUsIHVubmVzdChjLnNldGNvbmZpZykgQVMgcm9sY29uZmlnCisgICAg RlJPTQorICAgICAgICAoU0VMRUNUICoKKyAgICAgICAgRlJPTSBwZ19jYXRh bG9nLnBnX2RiX3JvbGVfc2V0dGluZyBkcgorICAgICAgICBXSEVSRQorICAg ICAgICAgICAgZHIuc2V0cm9sZT17eyByaWR8cXRMaXRlcmFsIH19OjpPSUQg QU5EIGRyLnNldGRhdGFiYXNlIT0wCisgICAgICAgICkgYworICAgICAgICBM RUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19kYXRhYmFzZSBkIE9OIChkLm9pZCA9 IGMuc2V0ZGF0YWJhc2UpCisgICAgKSBhOwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVt cGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzEvY3JlYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBs YXRlcy9yb2xlL3NxbC9wb3N0OV8xL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjODBmYgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL2NyZWF0ZS5z cWwKQEAgLTAsMCArMSw1NCBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJp dHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mv dmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQorQ1JFQVRFIHslIGlm IGRhdGEucm9sY2FubG9naW4gJX1VU0VSeyUgZWxzZSAlfVJPTEV7JSBlbmRp ZiAlfSB7eyBjb25ufHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBXSVRIeyUg aWYgZGF0YS5yb2xjYW5sb2dpbiBhbmQgZGF0YS5yb2xjYW5sb2dpbiBpcyBz YW1lYXMgVHJ1ZSAgJX0KKworCUxPR0lOeyUgZWxzZSAlfQorCisJTk9MT0dJ TnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xzdXBlciAlfQorCisJU1VQRVJV U0VSeyUgZWxzZSAlfQorCisJTk9TVVBFUlVTRVJ7JSBlbmRpZiAlfXslIGlm IGRhdGEucm9sY3JlYXRlZGIgJX0KKworCUNSRUFURURCeyUgZWxzZSAlfQor CisJTk9DUkVBVEVEQnslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2xjcmVhdGVy b2xlICV9CisKKwlDUkVBVEVST0xFeyUgZWxzZSAlfQorCisJTk9DUkVBVEVS T0xFeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbGluaGVyaXQgaXMgc2FtZWFz IHRydWUgJX0KKworCUlOSEVSSVR7JSBlbHNlICV9CisKKwlOT0lOSEVSSVR7 JSBlbmRpZiAlfXslIGlmIGRhdGEucm9scmVwbGljYXRpb24gJX0KKworCVJF UExJQ0FUSU9OeyUgZWxzZSAlfQorCisJTk9SRVBMSUNBVElPTnslIGVuZGlm ICV9eyUgaWYgJ3JvbGNvbm5saW1pdCcgaW4gZGF0YSBhbmQgZGF0YS5yb2xj b25ubGltaXQgaXMgbnVtYmVyIGFuZCBkYXRhLnJvbGNvbm5saW1pdCA+PSAt MSAlfQorCisJQ09OTkVDVElPTiBMSU1JVCB7eyBkYXRhLnJvbGNvbm5saW1p dCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5yb2x2YWxpZHVudGlsIGFuZCBk YXRhLnJvbHZhbGlkdW50aWwgaXMgbm90IG5vbmUgJX0KKworCVZBTElEIFVO VElMIHt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX0geyUgZW5k aWYgJX17JSBpZiBkYXRhLnJvbHBhc3N3b3JkICV9CisKKwlQQVNTV09SRCB7 JSBpZiBkYXRhLnJvbHBhc3N3b3JkIGlzIG5vbmUgJX1OVUxMeyUgZWxzZSAl fXslIGlmIGR1bW15ICV9J3h4eHh4eCd7JSBlbHNlICV9IHt7IGRhdGEucm9s cGFzc3dvcmQgfCBxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGVuZGlmICV9 eyUgZW5kaWYgJX07eyUgaWYgZGF0YS5yb2xzdXBlciBhbmQgZGF0YS5yb2xj YXR1cGRhdGUgaXMgc2FtZWFzIGZhbHNlICV9CisKKworVVBEQVRFIHBnX2F1 dGhpZCBTRVQgcm9sY2F0dXBkYXRlPWZhbHNlIFdIRVJFIHJvbG5hbWUgPSB7 eyBkYXRhLnJvbG5hbWV8cXRMaXRlcmFsIH19O3slIGVuZGlmICV9eyUgaWYg ZGF0YS5tZW1iZXJzIGFuZCBkYXRhLm1lbWJlcnN8bGVuZ3RoID4gMCAlfQor CisKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm1lbWJlcnMpfGpvaW4o JywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEucm9sbmFtZSkgfX07 eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0YS5hZG1pbnN8 bGVuZ3RoID4gMCAlfQorCitHUkFOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5h ZG1pbnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEu cm9sbmFtZSkgfX0gV0lUSCBBRE1JTiBPUFRJT047eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnNlY2xhYmVscyBhbmQgZGF0YS5zZWNsYWJlbHN8bGVuZ3RoID4g MCAlfQorCit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfQorCit7eyBT RUNMQUJMRS5BUFBMWShjb25uLCAnUk9MRScsIGRhdGEucm9sbmFtZSwgci5w cm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9 eyUgaWYgZGF0YS52YXJpYWJsZXMgJX0KKworeyUgZm9yIHZhciBpbiBkYXRh LnZhcmlhYmxlcyAlfQorCit7eyBWQVJJQUJMRS5BUFBMWShjb25uLCB2YXIu ZGF0YWJhc2UsIGRhdGEucm9sbmFtZSwgdmFyLm5hbWUsIHZhci52YWx1ZSkg fX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS5kZXNjcmlw dGlvbiAlfQorCitDT01NRU5UIE9OIFJPTEUge3sgY29ubnxxdElkZW50KGRh dGEucm9sbmFtZSkgfX0gSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVy YWwgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVz L3JvbGUvc3FsL3Bvc3Q5XzEvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3Jv bGUvc3FsL3Bvc3Q5XzEvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmZjZDRlNDgKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMS9ub2Rlcy5zcWwKQEAgLTAs MCArMSw4IEBACitTRUxFQ1QKKwlyLm9pZCwgci5yb2xuYW1lLCByLnJvbGNh bmxvZ2luLCByLnJvbHN1cGVyCitGUk9NCisJe3sgcm9sZV90YmwgfX0gcgor eyUgaWYgcmlkICV9CitXSEVSRSByLm9pZCA9IHt7IHJpZCB9fTo6aW50Cit7 JSBlbmRpZiAlfQorT1JERVIgQlkgci5yb2xjYW5sb2dpbiwgci5yb2xuYW1l CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMS9w cm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8x L3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmJiNTZlYzQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0 ZXMvcm9sZS9zcWwvcG9zdDlfMS9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsx LDE3IEBACitTRUxFQ1QKKwlyLm9pZCwgci4qLAorCXBnX2NhdGFsb2cuc2hv YmpfZGVzY3JpcHRpb24oci5vaWQsICdwZ19hdXRoaWQnKSBBUyBkZXNjcmlw dGlvbiwKKwlBUlJBWSgKKwkJU0VMRUNUCisJCQlDQVNFIFdIRU4gYW0uYWRt aW5fb3B0aW9uIFRIRU4gJzEnIEVMU0UgJzAnIEVORCB8fCBybS5yb2xuYW1l CisJCUZST00KKwkJCShTRUxFQ1QgKiBGUk9NIHBnX2F1dGhfbWVtYmVycyBX SEVSRSBtZW1iZXIgPSByLm9pZCkgYW0KKwkJCUxFRlQgSk9JTiBwZ19jYXRh bG9nLnBnX3JvbGVzIHJtIE9OIChybS5vaWQgPSBhbS5yb2xlaWQpCisJKSBy b2xtZW1iZXJzaGlwLAorCShTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8 ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zaHNlY2xhYmVsIHNsMSBXSEVSRSBz bDEub2Jqb2lkPXIub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00KKwl7eyByb2xl X3RibCB9fSByCit7JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sgcmlk IH19OjppbnQKK3slIGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxvZ2lu LCByLnJvbG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3Nx bC9wb3N0OV8xL3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9z dDlfMS9zcWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmFiNzhiYWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMv cm9sZS9zcWwvcG9zdDlfMS9zcWwuc3FsCkBAIC0wLDAgKzEsMTE5IEBACitT RUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUnXG5c bicpCitGUk9NCisoU0VMRUNUCisJQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRI RU4gJy0tIFVzZXI6ICcgRUxTRSAnLS0gUm9sZTogJyBFTkQJfHwKKwkJcGdf Y2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fAorCQlFJ1xuLS0gRFJP UCAnIHx8IENBU0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdVU0VSICcgRUxT RSAnUk9MRSAnIEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHJv bG5hbWUpIHx8IEUnO1xuXG5DUkVBVEUgJyB8fAorCQlDQVNFIFdIRU4gcm9s Y2FubG9naW4gVEhFTiAnVVNFUiAnIEVMU0UgJ1JPTEUgJyBFTkQgfHwKKwkJ cGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fCBFJyBXSVRIXG4g ICcgfHwKKwkJQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRIRU4gJ0xPR0lOJyBF TFNFICdOT0xPR0lOJyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4g cm9sY2FubG9naW4gQU5EIHJvbHBhc3N3b3JkIExJS0UgJ21kNSUlJyBUSEVO ICdFTkNSWVBURUQgUEFTU1dPUkQgJyB8fCBxdW90ZV9saXRlcmFsKHJvbHBh c3N3b3JkKSB8fCBFJ1xuICAnIEVMU0UgJycgRU5EIHx8CisJCUNBU0UgV0hF TiByb2xzdXBlciBUSEVOICdTVVBFUlVTRVInIEVMU0UgJ05PU1VQRVJVU0VS JyBFTkQgfHwgRSdcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9saW5oZXJpdCBU SEVOICdJTkhFUklUJyBFTFNFICdOT0lOSEVSSVQnIEVORCB8fCBFJ1xuICAn IHx8CisJCUNBU0UgV0hFTiByb2xjcmVhdGVkYiBUSEVOICdDUkVBVEVEQicg RUxTRSAnTk9DUkVBVEVEQicgRU5EIHx8IEUnXG4gICcgfHwKKwkJQ0FTRSBX SEVOIHJvbGNyZWF0ZXJvbGUgVEhFTiAnQ1JFQVRFUk9MRScgRUxTRSAnTk9D UkVBVEVST0xFJyBFTkQgfHwgRSdcbiAgJyB8fAorCQktLSBQb3N0Z3JlU1FM ID49ICA5LjEKKwkJQ0FTRSBXSEVOIHJvbHJlcGxpY2F0aW9uIFRIRU4gJ1JF UExJQ0FUSU9OJyBFTFNFICdOT1JFUExJQ0FUSU9OJyBFTkQgfHwKKwkJQ0FT RSBXSEVOIHJvbGNvbm5saW1pdCA+IDAgVEhFTiBFJ1xuICBDT05ORUNUSU9O IExJTUlUICcgfHwgcm9sY29ubmxpbWl0IEVMU0UgJycgRU5EIHx8CisJCUNB U0UgV0hFTiByb2x2YWxpZHVudGlsIElTIE5PVCBOVUxMIFRIRU4gRSdcbiAg VkFMSUQgVU5USUwgJyB8fCBxdW90ZV9saXRlcmFsKHJvbHZhbGlkdW50aWw6 OnRleHQpIEVMU0UgJzsnIEVORCB8fAorCQktLSBQb3N0Z3JlU1FMIDwgOS41 CisJCUNBU0UgV0hFTiByb2xzdXBlciBBTkQgTk9UIHJvbGNhdHVwZGF0ZSBU SEVOIEUnXG5cblVQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT1m YWxzZSBXSEVSRSByb2xuYW1lPScgfHwgcGdfY2F0YWxvZy5xdW90ZV9saXRl cmFsKHJvbG5hbWUpIHx8ICc7JyBFTFNFICcnIEVORCBBUyBzcWwKK0ZST00K Kwl7eyByb2xlX3RibCB9fSByCitXSEVSRQorCXIub2lkPSUocmlkKXM6Ok9J RAorVU5JT04gQUxMCisoU0VMRUNUCisJYXJyYXlfdG9fc3RyaW5nKGFycmF5 X2FnZyhzcWwpLCBFJ1xuJykKK0ZST00KKyhTRUxFQ1QKKwknR1JBTlQgJyB8 fCBhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHJvbG5hbWUpLCAnLCAnKSB8 fCAnIFRPICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNl cmJ5aWQoJShyaWQpczo6T0lEKSkgfHwKKwlDQVNFIFdIRU4gYWRtaW5fb3B0 aW9uIFRIRU4gJyBXSVRIIEFETUlOIE9QVElPTjsnIEVMU0UgJzsnIEVORCBz cWwKK0ZST00KKwkoU0VMRUNUCisJCXF1b3RlX2lkZW50KHIucm9sbmFtZSkg QVMgcm9sbmFtZSwgbS5hZG1pbl9vcHRpb24gQVMgYWRtaW5fb3B0aW9uCisJ RlJPTQorCQlwZ19hdXRoX21lbWJlcnMgbQorCQlMRUZUIEpPSU4gcGdfcm9s ZXMgciBPTiAobS5yb2xlaWQgPSByLm9pZCkKKwlXSEVSRQorCQltLm1lbWJl cj0lKHJpZClzOjpPSUQKKwlPUkRFUiBCWQorCQlyLnJvbG5hbWUKKwkpIGEK K0dST1VQIEJZIGFkbWluX29wdGlvbikgcykKK1VOSU9OIEFMTAorKFNFTEVD VAorCWFycmF5X3RvX3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcbicpIHNx bAorRlJPTQorKFNFTEVDVAorCSdBTFRFUiAnIHx8IENBU0UgV0hFTiByb2xj YW5sb2dpbiBUSEVOICdVU0VSICcgRUxTRSAnUk9MRSAnIEVORCB8fCBwZ19j YXRhbG9nLnF1b3RlX2lkZW50KHJvbG5hbWUpIHx8ICcgU0VUICcgfHwgcGFy YW0gfHwgJyBUTyAnIHx8IENBU0UgV0hFTiBwYXJhbSBJTiAoJ3NlYXJjaF9w YXRoJywgJ3RlbXBfdGFibGVzcGFjZXMnKSBUSEVOIHZhbHVlIEVMU0UgcXVv dGVfbGl0ZXJhbCh2YWx1ZSkgRU5EIHx8ICc7JyBBUyBzcWwKK0ZST00KKyhT RUxFQ1QKKwlyb2xjYW5sb2dpbiwgcm9sbmFtZSwgc3BsaXRfcGFydChyb2xj b25maWcsICc9JywgMSkgQVMgcGFyYW0sIHJlcGxhY2Uocm9sY29uZmlnLCBz cGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScsICcnKSBBUyB2 YWx1ZQorRlJPTQorCShTRUxFQ1QKKwkJCXVubmVzdChyb2xjb25maWcpIEFT IHJvbGNvbmZpZywgcm9sY2FubG9naW4sIHJvbG5hbWUKKwlGUk9NCisJCXBn X2NhdGFsb2cucGdfcm9sZXMKKwlXSEVSRQorCQlvaWQ9JShyaWQpczo6T0lE CisJKSByCispIGEpIGIpCistLSBQb3N0Z3JlU1FMID49IDkuMAorVU5JT04g QUxMCisoU0VMRUNUCisJYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwp LCBFJ1xuJykgQVMgc3FsCitGUk9NCisJKFNFTEVDVAorCQknQUxURVIgUk9M RSAnIHx8IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocGdfZ2V0X3VzZXJieWlk KCUocmlkKXM6Ok9JRCkpIHx8CisJCScgSU4gREFUQUJBU0UgJyB8fCBwZ19j YXRhbG9nLnF1b3RlX2lkZW50KGRhdG5hbWUpIHx8CisJCScgU0VUICcgfHwg cGFyYW18fCAnIFRPICcgfHwKKwkJQ0FTRQorCQlXSEVOIHBhcmFtIElOICgn c2VhcmNoX3BhdGgnLCAndGVtcF90YWJsZXNwYWNlcycpIFRIRU4gdmFsdWUK KwkJRUxTRSBxdW90ZV9saXRlcmFsKHZhbHVlKQorCQlFTkQgfHwgJzsnIEFT IHNxbAorCUZST00KKwkJKFNFTEVDVAorCQkJZGF0bmFtZSwgc3BsaXRfcGFy dChyb2xjb25maWcsICc9JywgMSkgQVMgcGFyYW0sIHJlcGxhY2Uocm9sY29u ZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScsICcn KSBBUyB2YWx1ZQorCQlGUk9NCisJCQkoU0VMRUNUCisJCQkJZC5kYXRuYW1l LCB1bm5lc3QoYy5zZXRjb25maWcpIEFTIHJvbGNvbmZpZworCQkJRlJPTQor CQkJCShTRUxFQ1QgKgorCQkJCUZST00KKwkJCQkJcGdfY2F0YWxvZy5wZ19k Yl9yb2xlX3NldHRpbmcgZHIKKwkJCQlXSEVSRQorCQkJCQlkci5zZXRyb2xl PSUocmlkKXM6Ok9JRCBBTkQgZHIuc2V0ZGF0YWJhc2UhPTApIGMKKwkJCQlM RUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19kYXRhYmFzZSBkIE9OIChkLm9pZCA9 IGMuc2V0ZGF0YWJhc2UpCisJCQkpIGEKKwkJKSBiCisJKSBkCispCitVTklP TiBBTEwKKyhTRUxFQ1QKKwknQ09NTUVOVCBPTiBST0xFICcgfHwgcGdfY2F0 YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNlcmJ5aWQoJShyaWQpczo6T0lE KSkgfHwgJyBJUyAnIHx8ICBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwoZGVz Y3JpcHRpb24pIHx8ICc7JyBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCXBnX2Nh dGFsb2cuc2hvYmpfZGVzY3JpcHRpb24oJShyaWQpczo6T0lELCAncGdfYXV0 aGlkJykgQVMgZGVzY3JpcHRpb24pIGEKK1dIRVJFCisJZGVzY3JpcHRpb24g SVMgTk9UIE5VTEwpCistLSBQb3N0Z3JlU1FMID49IDkuMgorVU5JT04gQUxM CisoU0VMRUNUCisJYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwpLCBF J1xuJykgQVMgc3FsCitGUk9NCisJKFNFTEVDVAorCQknU0VDVVJJVFkgTEFC RUwgRk9SICcgfHwgcHJvdmlkZXIgfHwKKwkJRSdcbiAgT04gUk9MRSAnIHx8 IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwKKwkJRSdcbiAg SVMgJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwobGFiZWwpIHx8ICc7 JyBBUyBzcWwKKwlGUk9NCisJCShTRUxFQ1QKKwkJCWxhYmVsLCBwcm92aWRl ciwgcm9sbmFtZQorCQlGUk9NCisJCQkoU0VMRUNUICoKKwkJCUZST00KKwkJ CQlwZ19zaHNlY2xhYmVsIHNsMQorCQkJV0hFUkUgc2wxLm9iam9pZD0lKHJp ZClzOjpPSUQpIHMKKwkJCUxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVz IHIgT04gKHMub2Jqb2lkPXIub2lkKSkgYSkgYgorKSkgQVMgYQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzEvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL3VwZGF0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlOWJkZAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0 OV8xL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxMzIgQEAKK3slIGltcG9ydCAn bWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlt cG9ydCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0K K3slIGlmICdyb2xuYW1lJyBpbiBkYXRhICV9Cit7JSBzZXQgcm9sbmFtZT1k YXRhLnJvbG5hbWUgJX0KK0FMVEVSeyUgaWYgcm9sQ2FuTG9naW4gJX0gVVNF UiB7JSBlbHNlICV9IFJPTEUgeyUgZW5kaWYgJX17eyBjb25ufHF0SWRlbnQo cm9sZSkgfX0KKwlSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KHJvbG5hbWUp IH19OworCit7JSBlbHNlICV9Cit7JSBzZXQgcm9sbmFtZT1yb2xlICV9Cit7 JSBlbmRpZiAlfQoreyUgaWYgZGF0YXxoYXNBbnkoYWx0ZXJLZXlzKSAlfQor QUxURVIgeyUgaWYgcm9sQ2FuTG9naW4gJX1VU0VSeyUgZWxzZSAlfVJPTEV7 JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX17JSBpZiAn cm9sY2FubG9naW4nIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5yb2xjYW5s b2dpbiAlfQorCUxPR0lOeyUgZWxzZSAlfQorCU5PTE9HSU57JSBlbmRpZiAl fXslIGVuZGlmICV9eyUgaWYgJ3JvbHN1cGVyJyBpbiBkYXRhICV9CisKK3sl IGlmIGRhdGEucm9sc3VwZXIgJX0KKwlTVVBFUlVTRVJ7JSBlbHNlICV9CisJ Tk9TVVBFUlVTRVJ7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbGNy ZWF0ZWRiJyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEucm9sY3JlYXRlZGIg JX0KKwlDUkVBVEVEQnslIGVsc2UgJX0KKwlOT0NSRUFURURCeyUgZW5kaWYg JX17JSBlbmRpZiAlfXslIGlmICdyb2xjcmVhdGVyb2xlJyBpbiBkYXRhICV9 CisKK3slIGlmIGRhdGEucm9sY3JlYXRlcm9sZSAlfQorCUNSRUFURVJPTEV7 JSBlbHNlICV9CisJTk9DUkVBVEVST0xFeyUgZW5kaWYgJX17JSBlbmRpZiAl fXslIGlmICdyb2xpbmhlcml0JyBpbiBkYXRhICV9CisKK3slIGlmIGRhdGEu cm9saW5oZXJpdCAlfQorCUlOSEVSSVR7JSBlbHNlICV9CisJTk9JTkhFUklU eyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xyZXBsaWNhdGlvbicg aW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbHJlcGxpY2F0aW9uICV9CisJ UkVQTElDQVRJT057JSBlbHNlICV9CisJTk9SRVBMSUNBVElPTnslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiAncm9sY29ubmxpbWl0JyBpbiBkYXRhIGFu ZCBkYXRhLnJvbGNvbm5saW1pdCBpcyBudW1iZXIgYW5kIGRhdGEucm9sY29u bmxpbWl0ID49IC0xICV9CisKKwlDT05ORUNUSU9OIExJTUlUIHt7IGRhdGEu cm9sY29ubmxpbWl0IH19Cit7JSBlbmRpZiAlfXslIGlmICdyb2x2YWxpZHVu dGlsJyBpbiBkYXRhIGFuZCBkYXRhLnJvbHZhbGlkdW50aWwgJX0KKworCVZB TElEIFVOVElMIHslIGlmIGRhdGEucm9sdmFsaWR1bnRpbCBpcyBub3Qgbm9u ZSAlfXt7IGRhdGEucm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX17JSBlbHNl ICV9J2luZmluaXR5JworeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdy b2xwYXNzd29yZCcgaW4gZGF0YSAlfQorCisJUEFTU1dPUkR7JSBpZiBkYXRh LnJvbHBhc3N3b3JkIGlzIG5vbmUgJX0gTlVMTHslIGVsc2UgJX17JSBpZiBk dW1teSAlfSAneHh4eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNzd29y ZHxxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgZW5kaWYg JX07eyUgZW5kaWYgJX0KKworeyUgaWYKKwlub3Qgcm9sU3VwZXIgYW5kCisJ J3JvbHN1cGVyJyBpbiBkYXRhIGFuZAorCSdyb2xjYXR1cGRhdGUnIG5vdCBp biBkYXRhIGFuZAorCWRhdGEucm9sc3VwZXIgJX0KKworCitVUERBVEUgcGdf YXV0aGlkIFNFVCByb2xjYXR1cGRhdGU9ZmFsc2UgV0hFUkUgcm9sbmFtZSA9 IHt7IHJvbG5hbWV8cXRMaXRlcmFsIH19OworCit7JSBlbGlmCisJcm9sU3Vw ZXIgYW5kCisJJ3JvbHN1cGVyJyBub3QgaW4gZGF0YSBhbmQKKwkncm9sY2F0 dXBkYXRlJyBpbiBkYXRhICV9Cit7JSBpZiBkYXRhLnJvbGNhdHVwZGF0ZSAl fQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVwZGF0ZT10cnVl IFdIRVJFIHJvbG5hbWUgPSB7eyByb2xuYW1lfHF0TGl0ZXJhbCB9fTsKKwor eyUgZWxzZSAlfQorCisKK1VQREFURSBwZ19hdXRoaWQgU0VUIHJvbGNhdHVw ZGF0ZT1mYWxzZSBXSEVSRSByb2xuYW1lID0ge3sgcm9sbmFtZXxxdExpdGVy YWwgfX07CisKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ3Jl dm9rZWRfYWRtaW5zJyBpbiBkYXRhIGFuZAorCWRhdGEucmV2b2tlZF9hZG1p bnN8bGVuZ3RoID4gMAorJX0KKworLS0gUmV2b2tlZCB0aGUgYWRtaW4gb3B0 aW9ucyBmcm9tIHRoZSBtZW1iZXJzCitSRVZPS0UgQURNSU4gT1BUSU9OIEZP UiB7eyBjb25ufHF0SWRlbnQoZGF0YS5yZXZva2VkX2FkbWlucyl8am9pbign LCAnKSB9fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fTt7JSBl bmRpZiAlfXslIGlmICdyZXZva2VkJyBpbiBkYXRhIGFuZCBkYXRhLnJldm9r ZWR8bGVuZ3RoID4gMCAlfQorCisKKy0tIEZvbGxvd2luZyBhcmUgbm8gbW9y ZSB0aGUgbWVtYmVycworUkVWT0tFIHt7IGNvbm58cXRJZGVudChkYXRhLnJl dm9rZWQpfGpvaW4oJywgJykgfX0gRlJPTSB7eyBjb25ufHF0SWRlbnQocm9s bmFtZSkgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmFkbWlucyBhbmQgZGF0 YS5hZG1pbnN8bGVuZ3RoID4gMCAlfQorCistLSBGb2xsb3dpbmcgYXJlIHRo ZSBuZXcgYWRtaW5zIChvciwgZXhpc3RpbmcgbWVtYmVycyBtYWRlIGFkbWlu cykKK0dSQU5UIHt7IGNvbm58cXRJZGVudChkYXRhLmFkbWlucyl8am9pbign LCAnKSB9fSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX0gV0lUSCBB RE1JTiBPUFRJT047eyUgZW5kaWYgJX17JSBpZiBkYXRhLm1lbWJlcnMgYW5k IGRhdGEubWVtYmVyc3xsZW5ndGggPiAwICV9CisKKworLS0gRm9sbG93aW5n IGFyZSB0aGUgbmV3IG1lbWJlcnMKK0dSQU5UIHt7IGNvbm58cXRJZGVudChk YXRhLm1lbWJlcnMpfGpvaW4oJywgJykgfX0gVE8ge3sgY29ubnxxdElkZW50 KHJvbG5hbWUpIH19O3slIGVuZGlmICV9eyUgaWYgZGF0YS5zZWNsYWJlbHMg YW5kCisJZGF0YS5zZWNsYWJlbHN8bGVuZ3RoID4gMAorJX17JSBzZXQgc2Vj bGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBp biBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAg JX0KKworeyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7IFNF Q0xBQkxFLkRST1AoY29ubiwgJ1JPTEUnLCBkYXRhLnJvbG5hbWUsIHIucHJv dmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAn YWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0 aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9Cit7 eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnUk9MRScsIGRhdGEucm9sbmFtZSwg ci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xh YmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gc2Vj bGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdS T0xFJywgZGF0YS5yb2xuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlm ICd2YXJpYWJsZXMnIGluIGRhdGEgYW5kIGRhdGEudmFyaWFibGVzfGxlbmd0 aCA+IDAgJX0KK3slIHNldCB2YXJpYWJsZXMgPSBkYXRhLnZhcmlhYmxlcyAl fQoreyUgaWYgJ2RlbGV0ZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFibGVz LmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgdmFyIGluIHZhcmlh Ymxlcy5kZWxldGVkICV9Cit7eyBWQVJJQUJMRS5SRVNFVChjb25uLCB2YXIu ZGF0YWJhc2UsIHJvbG5hbWUsIHZhci5uYW1lKSB9fQoreyUgZW5kZm9yICV9 eyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gdmFyaWFibGVzIGFuZCB2 YXJpYWJsZXMuYWRkZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgdmFyIGlu IHZhcmlhYmxlcy5hZGRlZCAlfQore3sgVkFSSUFCTEUuQVBQTFkoY29ubiwg dmFyLmRhdGFiYXNlLCByb2xuYW1lLCB2YXIubmFtZSwgdmFyLnZhbHVlKSB9 fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBp biB2YXJpYWJsZXMgYW5kIHZhcmlhYmxlcy5jaGFuZ2VkfGxlbmd0aCA+IDAg JX0KKworeyUgZm9yIHZhciBpbiB2YXJpYWJsZXMuY2hhbmdlZCAlfQore3sg VkFSSUFCTEUuQVBQTFkoY29ubiwgdmFyLmRhdGFiYXNlLCByb2xuYW1lLCB2 YXIubmFtZSwgdmFyLnZhbHVlKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdkZXNjcmlwdGlvbicgaW4gZGF0 YSAlfQorCisKK0NPTU1FTlQgT04gUk9MRSB7eyBjb25ufHF0SWRlbnQocm9s bmFtZSkgfX0gSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUv c3FsL3Bvc3Q5XzEvdmFyaWFibGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L3NxbC9wb3N0OV8xL3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYjg2MjBjMQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Jv bGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL3ZhcmlhYmxlcy5zcWwK QEAgLTAsMCArMSwyNSBAQAorU0VMRUNUCisgICAgc3BsaXRfcGFydChyb2xj b25maWcsICc9JywgMSkgQVMgbmFtZSwgcmVwbGFjZShyb2xjb25maWcsIHNw bGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZh bHVlLCBOVUxMOjp0ZXh0IEFTIGRhdGFiYXNlCitGUk9NCisgICAgKFNFTEVD VAorICAgICAgICAgICAgdW5uZXN0KHJvbGNvbmZpZykgQVMgcm9sY29uZmln LCByb2xjYW5sb2dpbiwgcm9sbmFtZQorICAgIEZST00KKyAgICAgICAgcGdf Y2F0YWxvZy5wZ19yb2xlcworICAgIFdIRVJFCisgICAgICAgIG9pZD17eyBy aWR8cXRMaXRlcmFsIH19OjpPSUQKKyAgICApIHIKKworVU5JT04gQUxMCitT RUxFQ1QKKyAgICBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSBBUyBu YW1lLCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25maWcs ICc9JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUsIGRhdG5hbWUgQVMgZGF0 YWJhc2UKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGQuZGF0bmFtZSwg dW5uZXN0KGMuc2V0Y29uZmlnKSBBUyByb2xjb25maWcKKyAgICBGUk9NCisg ICAgICAgIChTRUxFQ1QgKgorICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdf ZGJfcm9sZV9zZXR0aW5nIGRyCisgICAgICAgIFdIRVJFCisgICAgICAgICAg ICBkci5zZXRyb2xlPXt7IHJpZHxxdExpdGVyYWwgfX06Ok9JRCBBTkQgZHIu c2V0ZGF0YWJhc2UhPTAKKyAgICAgICAgKSBjCisgICAgICAgIExFRlQgSk9J TiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIGQgT04gKGQub2lkID0gYy5zZXRk YXRhYmFzZSkKKyAgICApIGE7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1wbGF0ZXMv cm9sZS9zcWwvcG9zdDlfNC9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3Jv bGUvc3FsL3Bvc3Q5XzQvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lYmZlNmNlCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9s ZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvY3JlYXRlLnNxbApAQCAt MCwwICsxLDUxIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1cml0eS5tYWNy b3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJs ZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9CitDUkVBVEUgeyUgaWYgZGF0YS5y b2xjYW5sb2dpbiAlfVVTRVJ7JSBlbHNlICV9Uk9MRXslIGVuZGlmICV9IHt7 IGNvbm58cXRJZGVudChkYXRhLnJvbG5hbWUpIH19IFdJVEh7JSBpZiBkYXRh LnJvbGNhbmxvZ2luIGFuZCBkYXRhLnJvbGNhbmxvZ2luIGlzIHNhbWVhcyBU cnVlICAlfQorCisJTE9HSU57JSBlbHNlICV9CisKKwlOT0xPR0lOeyUgZW5k aWYgJX17JSBpZiBkYXRhLnJvbHN1cGVyICV9CisKKwlTVVBFUlVTRVJ7JSBl bHNlICV9CisKKwlOT1NVUEVSVVNFUnslIGVuZGlmICV9eyUgaWYgZGF0YS5y b2xjcmVhdGVkYiAlfQorCisJQ1JFQVRFREJ7JSBlbHNlICV9CisKKwlOT0NS RUFURURCeyUgZW5kaWYgJX17JSBpZiBkYXRhLnJvbGNyZWF0ZXJvbGUgJX0K KworCUNSRUFURVJPTEV7JSBlbHNlICV9CisKKwlOT0NSRUFURVJPTEV7JSBl bmRpZiAlfXslIGlmIGRhdGEucm9saW5oZXJpdCBpcyBzYW1lYXMgdHJ1ZSAl fQorCisJSU5IRVJJVHslIGVsc2UgJX0KKworCU5PSU5IRVJJVHslIGVuZGlm ICV9eyUgaWYgZGF0YS5yb2xyZXBsaWNhdGlvbiAlfQorCisJUkVQTElDQVRJ T057JSBlbHNlICV9CisKKwlOT1JFUExJQ0FUSU9OeyUgZW5kaWYgJX17JSBp ZiAncm9sY29ubmxpbWl0JyBpbiBkYXRhIGFuZCBkYXRhLnJvbGNvbm5saW1p dCBpcyBudW1iZXIgYW5kIGRhdGEucm9sY29ubmxpbWl0ID49IC0xICV9CisK KwlDT05ORUNUSU9OIExJTUlUIHt7IGRhdGEucm9sY29ubmxpbWl0IH19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnJvbHZhbGlkdW50aWwgYW5kIGRhdGEucm9s dmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAlfQorCisJVkFMSUQgVU5USUwge3sg ZGF0YS5yb2x2YWxpZHVudGlsfHF0TGl0ZXJhbCB9fSB7JSBlbmRpZiAlfXsl IGlmIGRhdGEucm9scGFzc3dvcmQgJX0KKworCVBBU1NXT1JEIHslIGlmIGRh dGEucm9scGFzc3dvcmQgaXMgbm9uZSAlfU5VTEx7JSBlbHNlICV9eyUgaWYg ZHVtbXkgJX0neHh4eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNzd29y ZCB8IHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRp ZiAlfTt7JSBpZiBkYXRhLm1lbWJlcnMgYW5kIGRhdGEubWVtYmVyc3xsZW5n dGggPiAwICV9CisKKworR1JBTlQge3sgY29ubnxxdElkZW50KGRhdGEubWVt YmVycyl8am9pbignLCAnKSB9fSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5y b2xuYW1lKSB9fTt7JSBlbmRpZiAlfXslIGlmIGRhdGEuYWRtaW5zIGFuZCBk YXRhLmFkbWluc3xsZW5ndGggPiAwICV9CisKK0dSQU5UIHt7IGNvbm58cXRJ ZGVudChkYXRhLmFkbWlucyl8am9pbignLCAnKSB9fSBUTyB7eyBjb25ufHF0 SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBXSVRIIEFETUlOIE9QVElPTjt7JSBl bmRpZiAlfXslIGlmIGRhdGEuc2VjbGFiZWxzIGFuZCBkYXRhLnNlY2xhYmVs c3xsZW5ndGggPiAwICV9CisKK3slIGZvciByIGluIGRhdGEuc2VjbGFiZWxz ICV9CisKK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdST0xFJywgZGF0YS5y b2xuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9yICV9 eyUgZW5kaWYgJX17JSBpZiBkYXRhLnZhcmlhYmxlcyAlfQorCit7JSBmb3Ig dmFyIGluIGRhdGEudmFyaWFibGVzICV9CisKK3t7IFZBUklBQkxFLkFQUExZ KGNvbm4sIHZhci5kYXRhYmFzZSwgZGF0YS5yb2xuYW1lLCB2YXIubmFtZSwg dmFyLnZhbHVlKSB9fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gUk9MRSB7eyBjb25u fHF0SWRlbnQoZGF0YS5yb2xuYW1lKSB9fSBJUyB7eyBkYXRhLmRlc2NyaXB0 aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC9ub2Rlcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90 ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC9ub2Rlcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkNGU0OAotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L25vZGVz LnNxbApAQCAtMCwwICsxLDggQEAKK1NFTEVDVAorCXIub2lkLCByLnJvbG5h bWUsIHIucm9sY2FubG9naW4sIHIucm9sc3VwZXIKK0ZST00KKwl7eyByb2xl X3RibCB9fSByCit7JSBpZiByaWQgJX0KK1dIRVJFIHIub2lkID0ge3sgcmlk IH19OjppbnQKK3slIGVuZGlmICV9CitPUkRFUiBCWSByLnJvbGNhbmxvZ2lu LCByLnJvbG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3Nx bC9wb3N0OV80L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUv c3FsL3Bvc3Q5XzQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYmI1NmVjNAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Jv bGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L3Byb3BlcnRpZXMuc3Fs CkBAIC0wLDAgKzEsMTcgQEAKK1NFTEVDVAorCXIub2lkLCByLiosCisJcGdf Y2F0YWxvZy5zaG9ial9kZXNjcmlwdGlvbihyLm9pZCwgJ3BnX2F1dGhpZCcp IEFTIGRlc2NyaXB0aW9uLAorCUFSUkFZKAorCQlTRUxFQ1QKKwkJCUNBU0Ug V0hFTiBhbS5hZG1pbl9vcHRpb24gVEhFTiAnMScgRUxTRSAnMCcgRU5EIHx8 IHJtLnJvbG5hbWUKKwkJRlJPTQorCQkJKFNFTEVDVCAqIEZST00gcGdfYXV0 aF9tZW1iZXJzIFdIRVJFIG1lbWJlciA9IHIub2lkKSBhbQorCQkJTEVGVCBK T0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgcm0gT04gKHJtLm9pZCA9IGFtLnJv bGVpZCkKKwkpIHJvbG1lbWJlcnNoaXAsCisJKFNFTEVDVCBhcnJheV9hZ2co cHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3Noc2VjbGFiZWwg c2wxIFdIRVJFIHNsMS5vYmpvaWQ9ci5vaWQpIEFTIHNlY2xhYmVscworRlJP TQorCXt7IHJvbGVfdGJsIH19IHIKK3slIGlmIHJpZCAlfQorV0hFUkUgci5v aWQgPSB7eyByaWQgfX06OmludAoreyUgZW5kaWYgJX0KK09SREVSIEJZIHIu cm9sY2FubG9naW4sIHIucm9sbmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxh dGVzL3JvbGUvc3FsL3Bvc3Q5XzQvc3FsLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9y b2xlL3NxbC9wb3N0OV80L3NxbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODFmZTQwYgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVz L3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L3NxbC5zcWwKQEAgLTAsMCAr MSwxMTcgQEAKK1NFTEVDVAorCWFycmF5X3RvX3N0cmluZyhhcnJheV9hZ2co c3FsKSwgRSdcblxuJykKK0ZST00KKyhTRUxFQ1QKKwlDQVNFIFdIRU4gcm9s Y2FubG9naW4gVEhFTiAnLS0gVXNlcjogJyBFTFNFICctLSBSb2xlOiAnIEVO RAl8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHJvbG5hbWUpIHx8CisJ CUUnXG4tLSBEUk9QICcgfHwgQ0FTRSBXSEVOIHJvbGNhbmxvZ2luIFRIRU4g J1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8CisJCXBnX2NhdGFsb2cucXVv dGVfaWRlbnQocm9sbmFtZSkgfHwgRSc7XG5cbkNSRUFURSAnIHx8CisJCUNB U0UgV0hFTiByb2xjYW5sb2dpbiBUSEVOICdVU0VSICcgRUxTRSAnUk9MRSAn IEVORCB8fAorCQlwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHJvbG5hbWUpIHx8 IEUnIFdJVEhcbiAgJyB8fAorCQlDQVNFIFdIRU4gcm9sY2FubG9naW4gVEhF TiAnTE9HSU4nIEVMU0UgJ05PTE9HSU4nIEVORCB8fCBFJ1xuICAnIHx8CisJ CUNBU0UgV0hFTiByb2xjYW5sb2dpbiBBTkQgcm9scGFzc3dvcmQgTElLRSAn bWQ1JSUnIFRIRU4gJ0VOQ1JZUFRFRCBQQVNTV09SRCAnIHx8IHF1b3RlX2xp dGVyYWwocm9scGFzc3dvcmQpIHx8IEUnXG4gICcgRUxTRSAnJyBFTkQgfHwK KwkJQ0FTRSBXSEVOIHJvbHN1cGVyIFRIRU4gJ1NVUEVSVVNFUicgRUxTRSAn Tk9TVVBFUlVTRVInIEVORCB8fCBFJ1xuICAnIHx8CisJCUNBU0UgV0hFTiBy b2xpbmhlcml0IFRIRU4gJ0lOSEVSSVQnIEVMU0UgJ05PSU5IRVJJVCcgRU5E IHx8IEUnXG4gICcgfHwKKwkJQ0FTRSBXSEVOIHJvbGNyZWF0ZWRiIFRIRU4g J0NSRUFURURCJyBFTFNFICdOT0NSRUFURURCJyBFTkQgfHwgRSdcbiAgJyB8 fAorCQlDQVNFIFdIRU4gcm9sY3JlYXRlcm9sZSBUSEVOICdDUkVBVEVST0xF JyBFTFNFICdOT0NSRUFURVJPTEUnIEVORCB8fCBFJ1xuICAnIHx8CisJCS0t IFBvc3RncmVTUUwgPj0gIDkuMQorCQlDQVNFIFdIRU4gcm9scmVwbGljYXRp b24gVEhFTiAnUkVQTElDQVRJT04nIEVMU0UgJ05PUkVQTElDQVRJT04nIEVO RCB8fAorCQlDQVNFIFdIRU4gcm9sY29ubmxpbWl0ID4gMCBUSEVOIEUnXG4g IENPTk5FQ1RJT04gTElNSVQgJyB8fCByb2xjb25ubGltaXQgRUxTRSAnJyBF TkQgfHwKKwkJQ0FTRSBXSEVOIHJvbHZhbGlkdW50aWwgSVMgTk9UIE5VTEwg VEhFTiBFJ1xuICBWQUxJRCBVTlRJTCAnIHx8IHF1b3RlX2xpdGVyYWwocm9s dmFsaWR1bnRpbDo6dGV4dCkgRUxTRSAnOycgRU5EIEFTIHNxbAorRlJPTQor CXt7IHJvbGVfdGJsIH19IHIKK1dIRVJFCisJci5vaWQ9JShyaWQpczo6T0lE CitVTklPTiBBTEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlf YWdnKHNxbCksIEUnXG4nKQorRlJPTQorKFNFTEVDVAorCSdHUkFOVCAnIHx8 IGFycmF5X3RvX3N0cmluZyhhcnJheV9hZ2cocm9sbmFtZSksICcsICcpIHx8 ICcgVE8gJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBnX2dldF91c2Vy YnlpZCglKHJpZClzOjpPSUQpKSB8fAorCUNBU0UgV0hFTiBhZG1pbl9vcHRp b24gVEhFTiAnIFdJVEggQURNSU4gT1BUSU9OOycgRUxTRSAnOycgRU5EIHNx bAorRlJPTQorCShTRUxFQ1QKKwkJcXVvdGVfaWRlbnQoci5yb2xuYW1lKSBB UyByb2xuYW1lLCBtLmFkbWluX29wdGlvbiBBUyBhZG1pbl9vcHRpb24KKwlG Uk9NCisJCXBnX2F1dGhfbWVtYmVycyBtCisJCUxFRlQgSk9JTiBwZ19yb2xl cyByIE9OIChtLnJvbGVpZCA9IHIub2lkKQorCVdIRVJFCisJCW0ubWVtYmVy PSUocmlkKXM6Ok9JRAorCU9SREVSIEJZCisJCXIucm9sbmFtZQorCSkgYQor R1JPVVAgQlkgYWRtaW5fb3B0aW9uKSBzKQorVU5JT04gQUxMCisoU0VMRUNU CisJYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwpLCBFJ1xuJykgc3Fs CitGUk9NCisoU0VMRUNUCisJJ0FMVEVSICcgfHwgQ0FTRSBXSEVOIHJvbGNh bmxvZ2luIFRIRU4gJ1VTRVIgJyBFTFNFICdST0xFICcgRU5EIHx8IHBnX2Nh dGFsb2cucXVvdGVfaWRlbnQocm9sbmFtZSkgfHwgJyBTRVQgJyB8fCBwYXJh bSB8fCAnIFRPICcgfHwgQ0FTRSBXSEVOIHBhcmFtIElOICgnc2VhcmNoX3Bh dGgnLCAndGVtcF90YWJsZXNwYWNlcycpIFRIRU4gdmFsdWUgRUxTRSBxdW90 ZV9saXRlcmFsKHZhbHVlKSBFTkQgfHwgJzsnIEFTIHNxbAorRlJPTQorKFNF TEVDVAorCXJvbGNhbmxvZ2luLCByb2xuYW1lLCBzcGxpdF9wYXJ0KHJvbGNv bmZpZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25maWcsIHNw bGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycpIEFTIHZh bHVlCitGUk9NCisJKFNFTEVDVAorCQkJdW5uZXN0KHJvbGNvbmZpZykgQVMg cm9sY29uZmlnLCByb2xjYW5sb2dpbiwgcm9sbmFtZQorCUZST00KKwkJcGdf Y2F0YWxvZy5wZ19yb2xlcworCVdIRVJFCisJCW9pZD0lKHJpZClzOjpPSUQK KwkpIHIKKykgYSkgYikKKy0tIFBvc3RncmVTUUwgPj0gOS4wCitVTklPTiBB TEwKKyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCks IEUnXG4nKSBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCisJCSdBTFRFUiBST0xF ICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChwZ19nZXRfdXNlcmJ5aWQo JShyaWQpczo6T0lEKSkgfHwKKwkJJyBJTiBEQVRBQkFTRSAnIHx8IHBnX2Nh dGFsb2cucXVvdGVfaWRlbnQoZGF0bmFtZSkgfHwKKwkJJyBTRVQgJyB8fCBw YXJhbXx8ICcgVE8gJyB8fAorCQlDQVNFCisJCVdIRU4gcGFyYW0gSU4gKCdz ZWFyY2hfcGF0aCcsICd0ZW1wX3RhYmxlc3BhY2VzJykgVEhFTiB2YWx1ZQor CQlFTFNFIHF1b3RlX2xpdGVyYWwodmFsdWUpCisJCUVORCB8fCAnOycgQVMg c3FsCisJRlJPTQorCQkoU0VMRUNUCisJCQlkYXRuYW1lLCBzcGxpdF9wYXJ0 KHJvbGNvbmZpZywgJz0nLCAxKSBBUyBwYXJhbSwgcmVwbGFjZShyb2xjb25m aWcsIHNwbGl0X3BhcnQocm9sY29uZmlnLCAnPScsIDEpIHx8ICc9JywgJycp IEFTIHZhbHVlCisJCUZST00KKwkJCShTRUxFQ1QKKwkJCQlkLmRhdG5hbWUs IHVubmVzdChjLnNldGNvbmZpZykgQVMgcm9sY29uZmlnCisJCQlGUk9NCisJ CQkJKFNFTEVDVCAqCisJCQkJRlJPTQorCQkJCQlwZ19jYXRhbG9nLnBnX2Ri X3JvbGVfc2V0dGluZyBkcgorCQkJCVdIRVJFCisJCQkJCWRyLnNldHJvbGU9 JShyaWQpczo6T0lEIEFORCBkci5zZXRkYXRhYmFzZSE9MCkgYworCQkJCUxF RlQgSk9JTiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIGQgT04gKGQub2lkID0g Yy5zZXRkYXRhYmFzZSkKKwkJCSkgYQorCQkpIGIKKwkpIGQKKykKK1VOSU9O IEFMTAorKFNFTEVDVAorCSdDT01NRU5UIE9OIFJPTEUgJyB8fCBwZ19jYXRh bG9nLnF1b3RlX2lkZW50KHBnX2dldF91c2VyYnlpZCglKHJpZClzOjpPSUQp KSB8fCAnIElTICcgfHwgIHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChkZXNj cmlwdGlvbikgfHwgJzsnIEFTIHNxbAorRlJPTQorCShTRUxFQ1QJcGdfY2F0 YWxvZy5zaG9ial9kZXNjcmlwdGlvbiglKHJpZClzOjpPSUQsICdwZ19hdXRo aWQnKSBBUyBkZXNjcmlwdGlvbikgYQorV0hFUkUKKwlkZXNjcmlwdGlvbiBJ UyBOT1QgTlVMTCkKKy0tIFBvc3RncmVTUUwgPj0gOS4yCitVTklPTiBBTEwK KyhTRUxFQ1QKKwlhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUn XG4nKSBBUyBzcWwKK0ZST00KKwkoU0VMRUNUCisJCSdTRUNVUklUWSBMQUJF TCBGT1IgJyB8fCBwcm92aWRlciB8fAorCQlFJ1xuICBPTiBST0xFICcgfHwg cGdfY2F0YWxvZy5xdW90ZV9pZGVudChyb2xuYW1lKSB8fAorCQlFJ1xuICBJ UyAnIHx8IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChsYWJlbCkgfHwgJzsn IEFTIHNxbAorCUZST00KKwkJKFNFTEVDVAorCQkJbGFiZWwsIHByb3ZpZGVy LCByb2xuYW1lCisJCUZST00KKwkJCShTRUxFQ1QgKgorCQkJRlJPTQorCQkJ CXBnX3Noc2VjbGFiZWwgc2wxCisJCQlXSEVSRSBzbDEub2Jqb2lkPSUocmlk KXM6Ok9JRCkgcworCQkJTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMg ciBPTiAocy5vYmpvaWQ9ci5vaWQpKSBhKSBiCispKSBBUyBhCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC91cGRhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvdXBkYXRlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWQ0OThmCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5 XzQvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEwNyBAQAoreyUgaW1wb3J0ICdt YWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1w b3J0ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQor eyUgaWYgJ3JvbG5hbWUnIGluIGRhdGEgJX0KK3slIHNldCByb2xuYW1lPWRh dGEucm9sbmFtZSAlfQorQUxURVJ7JSBpZiByb2xDYW5Mb2dpbiAlfSBVU0VS IHslIGVsc2UgJX0gUk9MRSB7JSBlbmRpZiAlfXt7IGNvbm58cXRJZGVudChy b2xlKSB9fQorCVJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkg fX07CisKK3slIGVsc2UgJX0KK3slIHNldCByb2xuYW1lPXJvbGUgJX0KK3sl IGVuZGlmICV9Cit7JSBpZiBkYXRhfGhhc0FueShhbHRlcktleXMpICV9CitB TFRFUiB7JSBpZiByb2xDYW5Mb2dpbiAlfVVTRVJ7JSBlbHNlICV9Uk9MRXsl IGVuZGlmICV9IHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fXslIGlmICdy b2xjYW5sb2dpbicgaW4gZGF0YSAlfQorCit7JSBpZiBkYXRhLnJvbGNhbmxv Z2luICV9CisJTE9HSU57JSBlbHNlICV9CisJTk9MT0dJTnslIGVuZGlmICV9 eyUgZW5kaWYgJX17JSBpZiAncm9sc3VwZXInIGluIGRhdGEgJX0KKworeyUg aWYgZGF0YS5yb2xzdXBlciAlfQorCVNVUEVSVVNFUnslIGVsc2UgJX0KKwlO T1NVUEVSVVNFUnslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9sY3Jl YXRlZGInIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5yb2xjcmVhdGVkYiAl fQorCUNSRUFURURCeyUgZWxzZSAlfQorCU5PQ1JFQVRFREJ7JSBlbmRpZiAl fXslIGVuZGlmICV9eyUgaWYgJ3JvbGNyZWF0ZXJvbGUnIGluIGRhdGEgJX0K KworeyUgaWYgZGF0YS5yb2xjcmVhdGVyb2xlICV9CisJQ1JFQVRFUk9MRXsl IGVsc2UgJX0KKwlOT0NSRUFURVJPTEV7JSBlbmRpZiAlfXslIGVuZGlmICV9 eyUgaWYgJ3JvbGluaGVyaXQnIGluIGRhdGEgJX0KKworeyUgaWYgZGF0YS5y b2xpbmhlcml0ICV9CisJSU5IRVJJVHslIGVsc2UgJX0KKwlOT0lOSEVSSVR7 JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbHJlcGxpY2F0aW9uJyBp biBkYXRhICV9CisKK3slIGlmIGRhdGEucm9scmVwbGljYXRpb24gJX0KKwlS RVBMSUNBVElPTnslIGVsc2UgJX0KKwlOT1JFUExJQ0FUSU9OeyUgZW5kaWYg JX17JSBlbmRpZiAlfXslIGlmICdyb2xjb25ubGltaXQnIGluIGRhdGEgYW5k IGRhdGEucm9sY29ubmxpbWl0IGlzIG51bWJlciBhbmQgZGF0YS5yb2xjb25u bGltaXQgPj0gLTEgJX0KKworCUNPTk5FQ1RJT04gTElNSVQge3sgZGF0YS5y b2xjb25ubGltaXQgfX0KK3slIGVuZGlmICV9eyUgaWYgJ3JvbHZhbGlkdW50 aWwnIGluIGRhdGEgYW5kIGRhdGEucm9sdmFsaWR1bnRpbCAlfQorCisJVkFM SUQgVU5USUwgeyUgaWYgZGF0YS5yb2x2YWxpZHVudGlsIGlzIG5vdCBub25l ICV9e3sgZGF0YS5yb2x2YWxpZHVudGlsfHF0TGl0ZXJhbCB9fXslIGVsc2Ug JX0naW5maW5pdHknCit7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3Jv bHBhc3N3b3JkJyBpbiBkYXRhICV9CisKKwlQQVNTV09SRHslIGlmIGRhdGEu cm9scGFzc3dvcmQgaXMgbm9uZSAlfSBOVUxMeyUgZWxzZSAlfXslIGlmIGR1 bW15ICV9ICd4eHh4eHgneyUgZWxzZSAlfSB7eyBkYXRhLnJvbHBhc3N3b3Jk fHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRpZiAl fTt7JSBlbmRpZiAlfQorCit7JSBpZiAncmV2b2tlZF9hZG1pbnMnIGluIGRh dGEgYW5kCisJZGF0YS5yZXZva2VkX2FkbWluc3xsZW5ndGggPiAwCislfQor CistLSBSZXZva2VkIHRoZSBhZG1pbiBvcHRpb25zIGZyb20gdGhlIG1lbWJl cnMKK1JFVk9LRSBBRE1JTiBPUFRJT04gRk9SIHt7IGNvbm58cXRJZGVudChk YXRhLnJldm9rZWRfYWRtaW5zKXxqb2luKCcsICcpIH19IEZST00ge3sgY29u bnxxdElkZW50KHJvbG5hbWUpIH19O3slIGVuZGlmICV9eyUgaWYgJ3Jldm9r ZWQnIGluIGRhdGEgYW5kIGRhdGEucmV2b2tlZHxsZW5ndGggPiAwICV9CisK KworLS0gRm9sbG93aW5nIGFyZSBubyBtb3JlIHRoZSBtZW1iZXJzCitSRVZP S0Uge3sgY29ubnxxdElkZW50KGRhdGEucmV2b2tlZCl8am9pbignLCAnKSB9 fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fTt7JSBlbmRpZiAl fXslIGlmIGRhdGEuYWRtaW5zIGFuZCBkYXRhLmFkbWluc3xsZW5ndGggPiAw ICV9CisKKy0tIEZvbGxvd2luZyBhcmUgdGhlIG5ldyBhZG1pbnMgKG9yLCBl eGlzdGluZyBtZW1iZXJzIG1hZGUgYWRtaW5zKQorR1JBTlQge3sgY29ubnxx dElkZW50KGRhdGEuYWRtaW5zKXxqb2luKCcsICcpIH19IFRPIHt7IGNvbm58 cXRJZGVudChyb2xuYW1lKSB9fSBXSVRIIEFETUlOIE9QVElPTjt7JSBlbmRp ZiAlfXslIGlmIGRhdGEubWVtYmVycyBhbmQgZGF0YS5tZW1iZXJzfGxlbmd0 aCA+IDAgJX0KKworCistLSBGb2xsb3dpbmcgYXJlIHRoZSBuZXcgbWVtYmVy cworR1JBTlQge3sgY29ubnxxdElkZW50KGRhdGEubWVtYmVycyl8am9pbign LCAnKSB9fSBUTyB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkgfX07eyUgZW5k aWYgJX17JSBpZiBkYXRhLnNlY2xhYmVscyBhbmQKKwlkYXRhLnNlY2xhYmVs c3xsZW5ndGggPiAwCislfXslIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xh YmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2Vj bGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgciBpbiBz ZWNsYWJlbHMuZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25uLCAn Uk9MRScsIGRhdGEucm9sbmFtZSwgci5wcm92aWRlcikgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3Ig ciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNv bm4sICdST0xFJywgZGF0YS5yb2xuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVs KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5n ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3Ro ID4gMCAlfQorCit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQor e3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1JPTEUnLCBkYXRhLnJvbG5hbWUs IHIucHJvdmlkZXIsIHIubGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ3ZhcmlhYmxlcycgaW4gZGF0 YSBhbmQgZGF0YS52YXJpYWJsZXN8bGVuZ3RoID4gMCAlfQoreyUgc2V0IHZh cmlhYmxlcyA9IGRhdGEudmFyaWFibGVzICV9Cit7JSBpZiAnZGVsZXRlZCcg aW4gdmFyaWFibGVzIGFuZCB2YXJpYWJsZXMuZGVsZXRlZHxsZW5ndGggPiAw ICV9CisKK3slIGZvciB2YXIgaW4gdmFyaWFibGVzLmRlbGV0ZWQgJX0KK3t7 IFZBUklBQkxFLlJFU0VUKGNvbm4sIHZhci5kYXRhYmFzZSwgcm9sbmFtZSwg dmFyLm5hbWUpIH19Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUgaWYg J2FkZGVkJyBpbiB2YXJpYWJsZXMgYW5kIHZhcmlhYmxlcy5hZGRlZHxsZW5n dGggPiAwICV9CisKK3slIGZvciB2YXIgaW4gdmFyaWFibGVzLmFkZGVkICV9 Cit7eyBWQVJJQUJMRS5BUFBMWShjb25uLCB2YXIuZGF0YWJhc2UsIHJvbG5h bWUsIHZhci5uYW1lLCB2YXIudmFsdWUpIH19Cit7JSBlbmRmb3IgJX17JSBl bmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFy aWFibGVzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgdmFyIGlu IHZhcmlhYmxlcy5jaGFuZ2VkICV9Cit7eyBWQVJJQUJMRS5BUFBMWShjb25u LCB2YXIuZGF0YWJhc2UsIHJvbG5hbWUsIHZhci5uYW1lLCB2YXIudmFsdWUp IH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgJ2Rlc2NyaXB0aW9uJyBpbiBkYXRhICV9CisKKworQ09NTUVOVCBP TiBST0xFIHt7IGNvbm58cXRJZGVudChyb2xuYW1lKSB9fSBJUyB7eyBkYXRh LmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC92YXJpYWJs ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvdmFyaWFi bGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i ODYyMGMxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUv c3FsL3Bvc3Q5XzQvdmFyaWFibGVzLnNxbApAQCAtMCwwICsxLDI1IEBACitT RUxFQ1QKKyAgICBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSBBUyBu YW1lLCByZXBsYWNlKHJvbGNvbmZpZywgc3BsaXRfcGFydChyb2xjb25maWcs ICc9JywgMSkgfHwgJz0nLCAnJykgQVMgdmFsdWUsIE5VTEw6OnRleHQgQVMg ZGF0YWJhc2UKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgICAgICB1bm5l c3Qocm9sY29uZmlnKSBBUyByb2xjb25maWcsIHJvbGNhbmxvZ2luLCByb2xu YW1lCisgICAgRlJPTQorICAgICAgICBwZ19jYXRhbG9nLnBnX3JvbGVzCisg ICAgV0hFUkUKKyAgICAgICAgb2lkPXt7IHJpZHxxdExpdGVyYWwgfX06Ok9J RAorICAgICkgcgorCitVTklPTiBBTEwKK1NFTEVDVAorICAgIHNwbGl0X3Bh cnQocm9sY29uZmlnLCAnPScsIDEpIEFTIG5hbWUsIHJlcGxhY2Uocm9sY29u ZmlnLCBzcGxpdF9wYXJ0KHJvbGNvbmZpZywgJz0nLCAxKSB8fCAnPScsICcn KSBBUyB2YWx1ZSwgZGF0bmFtZSBBUyBkYXRhYmFzZQorRlJPTQorICAgIChT RUxFQ1QKKyAgICAgICAgZC5kYXRuYW1lLCB1bm5lc3QoYy5zZXRjb25maWcp IEFTIHJvbGNvbmZpZworICAgIEZST00KKyAgICAgICAgKFNFTEVDVCAqCisg ICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19kYl9yb2xlX3NldHRpbmcgZHIK KyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIGRyLnNldHJvbGU9e3sgcmlk fHF0TGl0ZXJhbCB9fTo6T0lEIEFORCBkci5zZXRkYXRhYmFzZSE9MAorICAg ICAgICApIGMKKyAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfZGF0 YWJhc2UgZCBPTiAoZC5vaWQgPSBjLnNldGRhdGFiYXNlKQorICAgICkgYTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Rh dGFtb2RlbC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Rh dGFtb2RlbC5qcwppbmRleCA0ZGMyOTBlLi45Mzg1YWRmIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwuanMK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0YW1vZGVs LmpzCkBAIC0yMTgsNyArMjE4LDEyIEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4s ICQsIEJhY2tib25lKSB7CiAgICAgICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFs LCBvcHRpb25zKSB7CiAgICAgICAgIHZhciBvcHRzID0gXy5pc09iamVjdChr ZXkpID8gdmFsIDogb3B0aW9uczsKIAorICAgICAgICB0aGlzLl9jaGFuZ2lu ZyA9IHRydWU7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcyA9 IF8uY2xvbmUodGhpcy5hdHRyaWJ1dGVzKTsKKyAgICAgICAgdGhpcy5jaGFu Z2VkID0ge307CisKICAgICAgICAgdmFyIHJlcyA9IEJhY2tib25lLk1vZGVs LnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLCBrZXksIHZhbCwgb3B0aW9ucyk7 CisgICAgICAgIHRoaXMuX2NoYW5naW5nID0gZmFsc2U7CiAKICAgICAgICAg aWYgKChvcHRzJiYgb3B0cy5pbnRlbmFsKSB8fCAhdGhpcy50cmFja0NoYW5n ZXMpIHsKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIzMyw3ICsyMzgs NyBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewogICAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg ICBhdHRyc1trXSA9IHY7Ci0gICAgICAgICAgICBpZiAoc2VsZi5vcmlnU2Vz c0F0dHJzW2tdID09IHYpIHsKKyAgICAgICAgICAgIGlmIChfLmlzRXF1YWwo c2VsZi5vcmlnU2Vzc0F0dHJzW2tdLCB2KSkgewogICAgICAgICAgICAgICBk ZWxldGUgc2VsZi5zZXNzQXR0cnNba107CiAgICAgICAgICAgICB9IGVsc2Ug ewogICAgICAgICAgICAgICBzZWxmLnNlc3NBdHRyc1trXSA9IHY7CkBAIC0y NDgsNyArMjUzLDkgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2Jv bmUpIHsKICAgICAgICAgICB9CiAKICAgICAgICAgICBzZWxmLnRyaWdnZXIo J3BnYWRtaW4tc2Vzc2lvbjpzZXQnLCBzZWxmLCBhdHRycyk7Ci0KKyAgICAg ICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMuc2lsZW50KSB7CisgICAg ICAgICAgICBzZWxmLnRyaWdnZXIoJ2NoYW5nZScsIHNlbGYsIG9wdGlvbnMp OworICAgICAgICAgIH0KICAgICAgICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBz ZWxmICYmIHR5cGVvZihzZWxmWyd2YWxpZGF0ZSddKSA9PT0gJ2Z1bmN0aW9u JykgewogCiAgICAgICAgICAgICB2YXIgbXNnID0gc2VsZi52YWxpZGF0ZShf LmtleXMoYXR0cnMpKTsKQEAgLTc3MCwxNyArNzc3LDE1IEBAIGZ1bmN0aW9u KF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAgICAgICAgICAgICBpc0Fs cmVhZHlJbnZhbGlkID0gKF8uc2l6ZShzZWxmLnNlc3NBdHRyc1snaW52YWxp ZCddKSAhPSAwKSwKICAgICAgICAgICAgIGlkeCA9IHNlbGYub2JqRmluZElu U2Vzc2lvbihvYmosICdkZWxldGVkJyk7CiAKLSAgICAgICAgaWYgKCd2YWxp ZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVu Y3Rpb24nKSB7Ci0gICAgICAgICAgbXNnID0gb2JqLnZhbGlkYXRlKCk7Ci0K LSAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICBzZWxmLnNlc3NB dHRyc1snaW52YWxpZCddLnB1c2gob2JqKTsKLSAgICAgICAgICB9Ci0gICAg ICAgIH0KLQogICAgICAgICAvLyBIbW0uLiAtIGl0IHdhcyBvcmlnaW5hbGx5 IGRlbGV0ZWQgZnJvbSB0aGlzIGNvbGxlY3Rpb24sIHdlIHNob3VsZAogICAg ICAgICAvLyByZW1vdmUgaXQgZnJvbSB0aGUgJ2RlbGV0ZWQnIGxpc3QuCiAg ICAgICAgIGlmIChpZHggPj0gMCkgeworICAgICAgICAgIHZhciBvcmlnT2Jq ID0gc2VsZi5zZXNzQXR0cnNbJ2RlbGV0ZWQnXVtpZHhdOworCisgICAgICAg ICAgb2JqLm9yaWdTZXNzQXR0cnMgPSBfLmNsb25lKG9yaWdPYmoub3JpZ1Nl c3NBdHRycyk7CisgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBfLmV4dGVu ZChvYmouYXR0cmlidXRlcywgb3JpZ09iai5hdHRyaWJ1dGVzKTsKKyAgICAg ICAgICBvYmouc2Vzc0F0dHJzID0gXy5jbG9uZShvcmlnT2JqLnNlc3NBdHRy cyk7CisKICAgICAgICAgICBzZWxmLnNlc3NBdHRyc1snZGVsZXRlZCddLnNw bGljZShpZHgsIDEpOwogCiAgICAgICAgICAgLy8gSXQgaGFzIGJlZW4gY2hh bmdlZCBvcmlnaW5hbGx5IQpAQCAtNzkwLDYgKzc5NSwxNCBAQCBmdW5jdGlv bihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewogCiAgICAgICAgICAgKHNl bGYuaGFuZGxlciB8fCBzZWxmKS50cmlnZ2VyKCdwZ2FkbWluLXNlc3Npb246 YWRkZWQnLCBzZWxmLCBvYmopOwogCisgICAgICAgICAgaWYgKCd2YWxpZGF0 ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVuY3Rp b24nKSB7CisgICAgICAgICAgICBtc2cgPSBvYmoudmFsaWRhdGUoKTsKKwor ICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICBzZWxmLnNl c3NBdHRyc1snaW52YWxpZCddLnB1c2gob2JqKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisKICAgICAgICAgICAvKgogICAgICAgICAgICAqIElm IHRoZSBjb2xsZWN0aW9uIHdhcyBhbHJlYWR5IGludmFsaWQsIHdlIGRvbid0 IG5lZWQgdG8gaW5mb3JtIHRoZQogICAgICAgICAgICAqIHBhcmVudCwgb3Ig cmFpc2UgdGhlIGV2ZW50IGZvciB0aGUgaW52YWxpZCBzdGF0dXMuCkBAIC04 MDQsNiArODE3LDEzIEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJhY2ti b25lKSB7CiAKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQor ICAgICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBvYmogJiYgdHlwZW9mKG9iai52 YWxpZGF0ZSkgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICBtc2cgPSBv YmoudmFsaWRhdGUoKTsKKworICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAg ICAgICAgIHNlbGYuc2Vzc0F0dHJzWydpbnZhbGlkJ10ucHVzaChvYmopOwor ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBzZWxmLnNlc3NBdHRy c1snYWRkZWQnXS5wdXNoKG9iaik7CiAKICAgICAgICAgLyoKQEAgLTg0MCw2 ICs4NjAsNyBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkg ewogICAgICAgICB9CiAKICAgICAgICAgaWR4ID0gc2VsZi5vYmpGaW5kSW5T ZXNzaW9uKG9iaiwgJ2FkZGVkJyk7CisKICAgICAgICAgLy8gSG1tIC0gaXQg d2FzIG5ld2x5IGFkZGVkLCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBpdC4KICAg ICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgICAgc2VsZi5zZXNzQXR0 cnNbJ2FkZGVkJ10uc3BsaWNlKGlkeCwgMSk7Cg== --047d7bdc15d4c16ec4052af0931d 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 --047d7bdc15d4c16ec4052af0931d--