Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agUrO-0007a9-Lj for pgadmin-hackers@arkaria.postgresql.org; Thu, 17 Mar 2016 10:08:55 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1agUrO-0006AW-6q for pgadmin-hackers@arkaria.postgresql.org; Thu, 17 Mar 2016 10:08:54 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1agUrJ-0006AA-Go for pgadmin-hackers@postgresql.org; Thu, 17 Mar 2016 10:08:50 +0000 Received: from mail-qg0-x232.google.com ([2607:f8b0:400d:c04::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1agUrB-0007uE-A0 for pgadmin-hackers@postgresql.org; Thu, 17 Mar 2016 10:08:47 +0000 Received: by mail-qg0-x232.google.com with SMTP id a36so35615561qge.0 for ; Thu, 17 Mar 2016 03:08:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=1ZgCS5m2YNXh5y4p5pX9o9O662a7toX3BvkAS4v3Ib8=; b=DvlsAkqrKnZvQaJLj3DFKqQfv1LGK2MVckariMoOo0QEBAHGZgt8+HbKbk9qCM+cv4 4h8jDbl5B7fdvupK9JRiIboXqiJz0e7NlEk8U1zbYHY1tq6Fj/IHtE0iisTM24VDKqty FSTJ8Kq0OrCCMOjzh+3xWUVMAHMwK6mjZoMlGywQAdknJE22Npy6gcpxbcG2SgBOUtzK zSE+Lx5EbihUwjD8K3psmG/QLmxoTS/8ZlfTPI+vWACdRWgzTaNvimKzSN6XeKCEPeFM IU6MDGi3ErtDhA8mBj2wf4+CuDwM70p55E9o6jN4O9d4qg55vX4BlYG/w8uTN6XZ/xMv Np8g== 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; bh=1ZgCS5m2YNXh5y4p5pX9o9O662a7toX3BvkAS4v3Ib8=; b=e+IwigOOzhnvWorWO3wpTEePAmNcGh5zsRqfsBdeDm07oCPbvtKX2AEBn3aNtywAOz +YgSfrIIaShB8pJ6P4PVd/pxbqibE/J3UfPMHPsKjJQBRnrqSX/h2h6GN5KWztIcI/jW sWHzeow6R5afA2AfaJ6zBaiALcQgeSNm4vimpBxvd8EK/90hpJ/eUk83eemoCe73Z7P0 jLi9p31piTANo+gUaPl9aLV17TramclnrxPmG/qIvm/TkVgaUgL2VTCBveXSHdMEaCzO GhA96RfEMzjDXIFKFgU8TZY3ywolx4VZ1REPMmUj/oHkJYFwSdo36PWvj0gSeoTvaab5 Vw5Q== X-Gm-Message-State: AD7BkJJIG84WutSqUQ/FH6Rk7G1INoa7UTOBvUwsMxFeatFPRHAWr1whOcJwhhUBDduzrlDCcJB0+LL5CaLPc9G5 X-Received: by 10.140.236.68 with SMTP id h65mr13576729qhc.13.1458209319794; Thu, 17 Mar 2016 03:08:39 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.128.132 with HTTP; Thu, 17 Mar 2016 03:08:20 -0700 (PDT) In-Reply-To: References: From: Murtuza Zabuawala Date: Thu, 17 Mar 2016 15:38:20 +0530 Message-ID: Subject: Re: PATCH: Added Node Type & Catalog objects [pgAdmin4] To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1135a06c8469ee052e3bd02a 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 --001a1135a06c8469ee052e3bd02a Content-Type: multipart/alternative; boundary=001a1135a06c8469eb052e3bd028 --001a1135a06c8469eb052e3bd028 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Dave, Please find updated patch. On 16-Mar-2016, at 6:32 pm, Dave Page wrote: Hi OK, I think it's in pretty good shape now. Here's what I hope are the last of the review comments, mostly minor things :-) - I'm allowed to edit ENUM label names, but PostgreSQL doesn't support that. Done - Security label fields resize in Edit mode. See recent changes by Arun to fix that elsewhere. Done - When editing a type, I cannot select a Grantee on the Privileges tab. This is general issue with privilege control. [We will add it in TODO list] - When adding a composite type, I cannot type/select directly in the grid, I have to expand the row. Because currently in Backgrid we do not have functionality like if I edit one cell second cell re-renders according the value of first cell, If we expand and select the type the other two fields (length & precision)are dependent on the value of type for composite types they become enable/disable accordingly. - If I click ADD to add a new member to a composite type whilst the previous row is expanded, the new row is added, but the expanded panel remains linked to the first row. - If I then click on the Edit button on the new row, I see two expanded panels, neither of which is attached to their row (and they're in the wrong order). I would only expect to see one panel at a time. This is general with sub-node collection control. [We will add it in TODO list] - When creating an External type, the Input, Output, Send, Receive and Analyze function lists are all blank. Is this expected? I would have thought there would be system functions listed as there are for Typmod in/out. Dave, I was not able to test External type functionality completely because it requires external type which is not inbuilt in postgres. Once you create that custom type using C/C++ code, it will be listed in those combobox by sql we are using to fetch external function types added by user in postgres. - Labels for Yes/No fields should typically end in a '?', e.g. "Variable?", "Preferred?=E2=80=9D Done - s/Prefered/Preferred Done - Why does "Range" type have a frame around it? So that we can make visible/hide all the control/elements related to Range type as whole instead having separate code for each control/element. That frame is because we used =E2=80=98FieldsetControl=E2=80=99 of backform= to group all the elements of Range type. - If a field is there to select/display a function, it should have "function" at the end of its label, e.g. "Canonical function=E2=80=9D Done - As above, but with type. E.g. "Element type=E2=80=9D Done - Some of the combo boxes have hint text of "Select from the list", whilst others don't. This should be consistent. Done - The colouring of "No" on the switches should be blue (see "System Schema?") Done - s/Subtype/Sub-type/ Done - s/SubType diff/Sub-type diff function/ Done - Please remove the pre-9.1 support. Done - In def create(self, gid, sid, did, scid), ensure error messages are properly pluralised, e.g. 'Composite types require at least two members' or 'External types require both Input & Output conversion functions.=E2=80=99 Done - additional_features.sql is poorly formatted (lack of proper indentation) Done Thanks! --=20 Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company --001a1135a06c8469eb052e3bd028 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi D= ave,

Please find updated patch.

On 16-Mar-2016, at 6:32 pm, Dave Page <dpage@pgadmin.org> wrote:
=
Hi

OK, I think it's i= n pretty good shape now. Here's what I hope are the
last of the revi= ew comments, mostly minor things :-)

- I'm allowed to edit ENUM = label names, but PostgreSQL doesn't support that.
Done<= div>

- Security label fields resize in Edi= t mode. See recent changes by
Arun to fix that elsewhere.

Done

- When editing a type, I= cannot select a Grantee on the Privileges tab.

This is= general issue with privilege control.=C2=A0
[We will add it in T= ODO list]

- When adding a composite= type, I cannot type/select directly in the
grid, I have to expand the r= ow.

Because currently in Backgrid we do not have functi= onality like if I edit one cell second cell re-renders according the value = of first cell,
If we expand and select the type the other two fie= lds (length & precision)are dependent on the value of type for composit= e types they become enable/disable accordingly.

- If I click ADD to add a new member to a composite= type whilst the
previous row is expanded, the new row is added, but the= expanded panel
remains linked to the first row.

- If I then clic= k on the Edit button on the new row, I see two
expanded panels, neither = of which is attached to their row (and
they're in the wrong order). = I would only expect to see one panel at a
time.

This= is general with sub-node collection control.
[We will add it in = TODO list]

- When creating an Exter= nal type, the Input, Output, Send, Receive and
Analyze function lists ar= e all blank. Is this expected? I would have
thought there would be syste= m functions listed as there are for Typmod
in/out.

D= ave, I was not able to test External type functionality completely because = it requires external type which is not inbuilt in postgres.
Once = you create that custom type using C/C++ code, it will be listed in those co= mbobox by sql we are using to fetch external function types added by user i= n postgres.


- Labels= for Yes/No fields should typically end in a '?', e.g.
"Var= iable?", "Preferred?=E2=80=9D

Done
- s/Prefered/Preferred

Done
- Why does "Range" type have a frame around = it?

So that we can make visible/hide all the contr= ol/elements related to Range type as whole instead having separate code for= each control/element.
That frame is because we used =E2=80= =98FieldsetControl=E2=80=99 of backform to group all the elements of Range = type.

- If a field is there to sele= ct/display a function, it should have
"function" at the end of= its label, e.g. "Canonical function=E2=80=9D

Done=
- As above, but with type. E.g. "Element= type=E2=80=9D
Done
- Some of the = combo boxes have hint text of "Select from the list",
whilst o= thers don't. This should be consistent.

Done
- The colouring of "No" on the switches sh= ould be blue (see "System Schema?")

Done
<= blockquote type=3D"cite">- s/Subtype/Sub-type/

Done
=
- s/SubType diff/Sub-type diff function/

<= /blockquote>Done
- Please remove the pre-9.1 s= upport.

Done
- In def crea= te(self, gid, sid, did, scid), ensure error messages are
properly plural= ised, e.g. 'Composite types require at least two
members' or = 9;External types require both Input & Output conversion
functions.= =E2=80=99

Done
- additiona= l_features.sql is poorly formatted (lack of proper indentation)

Done
Thanks!

--=C2=A0
Dave = Page
Blog: htt= p://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: <= a href=3D"http://www.enterprisedb.com" target=3D"_blank">http://www.enterpr= isedb.com
The Enterprise PostgreSQL Company

--001a1135a06c8469eb052e3bd028-- --001a1135a06c8469ee052e3bd02a Content-Type: application/octet-stream; name="types_node_v3.patch" Content-Disposition: attachment; filename="types_node_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ilw43zhj0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0X18ucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE3N2E2ZQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5CkBA IC0wLDAgKzEsMTE3OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiIEltcGxlbWVudHMgVHlwZSBOb2RlICIiIgor CitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBs YXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZs YXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0 aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1h a2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVy X2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdD aGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGlt cG9ydCBTY2hlbWFDaGlsZE1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNl Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu dXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfZnJvbV9kYiwgXAorICAgIHBhcnNl X3ByaXZfdG9fZGIKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBw cmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2 ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisK KworY2xhc3MgVHlwZU1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CisgICAg IiIiCisgICAgIGNsYXNzIFR5cGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUp CisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFR5cGUgbm9kZSBkZXJp dmVkIGZyb20gU2NoZW1hQ2hpbGRNb2R1bGUKKworICAgIE1ldGhvZHM6Cisg ICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQor ICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBUeXBl IGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBNZXRob2QgaXMgdXNl ZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisK KyAgICAqIG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJp ZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMg bGVhZiBub2RlLgorCisgICAgKiBzY3JpcHRfbG9hZCgpCisgICAgICAtIExv YWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIHR5cGUsIHdoZW4gYW55IG9mIHRo ZSBzZXJ2ZXIgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAi IiIKKworICAgIE5PREVfVFlQRSA9ICd0eXBlJworICAgIENPTExFQ1RJT05f TEFCRUwgPSBnZXR0ZXh0KCJUeXBlcyIpCisKKyAgICBkZWYgX19pbml0X18o c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAg IE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIFR5cGVNb2R1bGUg YW5kIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgICphcmdzOgorICAgICAgICAgICAgKiprd2FyZ3M6CisgICAgICAg ICIiIgorICAgICAgICBzdXBlcihUeXBlTW9kdWxlLCBzZWxmKS5fX2luaXRf XygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5v bmUKKyAgICAgICAgc2VsZi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdl dF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBjb2xsZWN0aW9uIG5vZGUKKyAg ICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nl cl9jb2xsZWN0aW9uX25vZGUoc2NpZCkKKworICAgIEBwcm9wZXJ0eQorICAg IGRlZiBzY3JpcHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIGRhdGFiYXNlLCB3aGVuIGFu eSBvZiB0aGUgZGF0YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0aWFsaXpl ZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5EYXRh YmFzZU1vZHVsZS5OT0RFX1RZUEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRl ZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9h ZCB0aGUgbW9kdWxlIG5vZGUgYXMgYSBsZWFmIG5vZGUKKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiBGYWxzZQorCitibHVlcHJpbnQgPSBUeXBlTW9k dWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIFR5cGVWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBpcyByZXNwb25zaWJs ZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9yIFR5cGUgbm9kZQorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJn cykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg VHlwZVZpZXcgYW5kIGl0J3MgYmFzZSB2aWV3LgorCisgICAgKiBjaGVja19w cmVjb25kaXRpb24oKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVo YXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAg IGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQg d2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRl bXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisKKyAgICAqIGxpc3Qo KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwg dGhlIFR5cGUgbm9kZXMgd2l0aGluIHRoYXQKKyAgICAgIGNvbGxlY3Rpb24u CisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gdGhh dAorICAgICAgICBjb2xsZWN0aW9uLCBIZXJlIGl0IHdpbGwgY3JlYXRlIGFs bCB0aGUgVHlwZSBub2RlLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIFR5cGUgbm9k ZQorCisgICAgKiBjcmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAg IC0gVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSB0aGUgbmV3IFR5cGUgb2Jq ZWN0CisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRhdGEg Zm9yIHRoZSBzZWxlY3RlZCBUeXBlIG5vZGUKKworICAgICogZGVsZXRlKHNl bGYsIGdpZCwgc2lkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgZHJvcCB0aGUgVHlwZSBvYmplY3QKKworICAgICogbXNxbChn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0aGUgc2Vs ZWN0ZWQKKyAgICAgICAgVHlwZSBub2RlCisKKyAgICAqIGdldF9zcWwoZGF0 YSwgc2NpZCwgdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2Vu ZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZW5lcmF0ZSBzcWwgdG8gc2hvdyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhlCisg ICAgICAgIHNlbGVjdGVkIFR5cGUgbm9kZS4KKworICAgICogZGVwZW5kZW5j eShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgZ2VuZXJhdGUgZGVwZW5kZW5jeSBsaXN0IHNob3cgaXQg aW4gZGVwZW5kZW5jeQorICAgICAgICBwYW5lIGZvciB0aGUgc2VsZWN0ZWQg VHlwZSBub2RlLgorCisgICAgKiBkZXBlbmRlbnQoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50Cisg ICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBUeXBlIG5vZGUuCisKKyAg ICAqIGFkZGl0aW9uYWxfcHJvcGVydGllcyhjb3B5X2RpY3QsIHRpZCk6Cisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgYWRkaXRpb25hbCBwcm9w ZXJ0aWVzIGluIHJlc3BvbnNlCisKKyAgICAqIGdldF9jb2xsYXRpb25zKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCByZXR1cm4gbGlzdCBvZiBjb2xsYXRpb24gaW4gYWpheCByZXNw b25zZQorCisgICAgKiBnZXRfdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0 IG9mIHR5cGVzIGluIGFqYXggcmVzcG9uc2UKKworICAgICogZ2V0X3N1YnR5 cGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBzdWJ0eXBlcyBpbiBhamF4 IHJlc3BvbnNlCisKKyAgICAqIGdldF9zdWJ0eXBlX29wY2xhc3MoZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiBsaXN0IG9mIHN1YnR5cGUgb3BjbGFzcyBpbiBhamF4IHJl c3BvbnNlCisKKyAgICAqIGdldF9zdWJ0eXBlX2RpZmYoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiBsaXN0IG9mIHN1YnR5cGUgZGlmZiBmdW5jdGlvbnMKKyAgICAgICAg aW4gYWpheCByZXNwb25zZQorCisgICAgKiBnZXRfY2Fub25pY2FsKGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24g d2lsbCByZXR1cm4gbGlzdCBvZiBjYW5vbmljYWwgZnVuY3Rpb25zCisgICAg ICAgIGluIGFqYXggcmVzcG9uc2UKKworICAgICogZ2V0X2V4dGVybmFsX2Z1 bmN0aW9uc19saXN0KGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAg ICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBleHRlcm5h bCBmdW5jdGlvbnMKKyAgICAgICAgaW4gYWpheCByZXNwb25zZQorICAgICIi IgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisg ICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50Jywg J2lkJzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdkaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnc2NpZCd9CisgICAgICAgICAgICBdCisgICAgaWRzID0gWworICAgICAg ICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICd0aWQnfQorICAgICAgICAg ICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2Jq JzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxl dGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAg IHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBd LAorICAgICAgICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwK KyAgICAgICAgJ2NoaWxkcmVuJzogW3snZ2V0JzogJ2NoaWxkcmVuJ31dLAor ICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdu b2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisg ICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNx bCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3Mn fV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVu Y2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBl bmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydn ZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAnZ2V0X3R5cGVzJzogW3sn Z2V0JzogJ2dldF90eXBlcyd9LCB7J2dldCc6ICdnZXRfdHlwZXMnfV0sCisg ICAgICAgICdnZXRfc3R5cGVzJzogW3snZ2V0JzogJ2dldF9zdWJ0eXBlcyd9 LCB7J2dldCc6ICdnZXRfc3VidHlwZXMnfV0sCisgICAgICAgICdnZXRfc3Vi b3BjbGFzcyc6IFt7J2dldCc6ICdnZXRfc3VidHlwZV9vcGNsYXNzJ30sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRfc3VidHlw ZV9vcGNsYXNzJ31dLAorICAgICAgICAnZ2V0X3N0eXBlZGlmZic6IFt7J2dl dCc6ICdnZXRfc3VidHlwZV9kaWZmJ30sIHsnZ2V0JzogJ2dldF9zdWJ0eXBl X2RpZmYnfV0sCisgICAgICAgICdnZXRfY2Fub25pY2FsJzogW3snZ2V0Jzog J2dldF9jYW5vbmljYWwnfSwgeydnZXQnOiAnZ2V0X2Nhbm9uaWNhbCd9XSwK KyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogW3snZ2V0JzogJ2dldF9jb2xs YXRpb25zJ30sIHsnZ2V0JzogJ2dldF9jb2xsYXRpb25zJ31dLAorICAgICAg ICAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucyc6IFt7J2dldCc6ICdnZXRfZXh0 ZXJuYWxfZnVuY3Rpb25zX2xpc3QnfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeydnZXQnOiAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9u c19saXN0J31dCisgICAgfSkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRp b24oZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisg ICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmll dywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisgICAgICAg ICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFy Z3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdp bGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAor ICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYu bWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5l Y3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2Vs Zi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1sn ZGlkJ10pCisKKyAgICAgICAgICAgICMgV2UgbmVlZCBkYXRsYXN0c3lzb2lk IHRvIGNoZWNrIGlmIGN1cnJlbnQgdHlwZSBpcyBzeXN0ZW0gdHlwZQorICAg ICAgICAgICAgc2VsZi5kYXRsYXN0c3lzb2lkID0gc2VsZi5tYW5hZ2VyLmRi X2luZm9ba3dhcmdzWydkaWQnXV1bJ2RhdGxhc3RzeXNvaWQnXQorCisgICAg ICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJy b3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5j b25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgRGVjbGFy ZSBhbGxvd3MgYWNsIG9uIHR5cGUKKyAgICAgICAgICAgIHNlbGYuYWNsID0g WydVJ10KKworICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBw YXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAgICAgc2VsZi50ZW1wbGF0 ZV9wYXRoID0gJ3R5cGUvc3FsLzkuMV9wbHVzJworCisgICAgICAgICAgICBy ZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdy YXAKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUgdHlw ZSBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBncm91cCBJRAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICAgdGlkOiBUeXBlIElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAg ICAgIEpTT04gb2YgYXZhaWxhYmxlIHR5cGUgbm9kZXMKKyAgICAgICAgIiIi CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRs YXN0c3lzb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hv d19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9v YmplY3RzKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUg d2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxs IGNyZWF0ZSBhbGwgdGhlIHR5cGUgbm9kZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRp ZDogVHlwZSBJRAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBK U09OIG9mIGF2YWlsYWJsZSB0eXBlIGNoaWxkIG5vZGVzCisgICAgICAgICIi IgorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwn XSksIHNjaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNob3dfc3lzdGVtX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0 ZW1fb2JqZWN0cykKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dz J106CisgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAg ICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisg ICAgICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg IHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj0i aWNvbi10eXBlIgorICAgICAgICAgICAgICAgICAgICApKQorCisgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg ZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgICAgICkKKworICAgIGRlZiBhZGRpdGlvbmFsX3Byb3BlcnRpZXMo c2VsZiwgY29weV9kaWN0LCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAg V2Ugd2lsbCB1c2UgdGhpcyBmdW5jdGlvbiB0byBhZGQgYWRkaXRpb25hbCBw cm9wZXJ0aWVzIGFjY29yZGluZyB0byB0eXBlCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdHlw ZSBsaWtlIHJhbmdlL2NvbXBvc2l0ZS9lbnVtCisKKyAgICAgICAgIiIiCisg ICAgICAgICMgRmV0Y2hpbmcgdHlwZSBvZiB0eXBlCisgICAgICAgIG9mX3R5 cGUgPSBjb3B5X2RpY3RbJ3R5cHR5cGUnXQorICAgICAgICByZXMgPSBkaWN0 KCkKKyAgICAgICAgIyBJZiB0eXBlIGlzIG9mIENvbXBvc2l0ZSB0aGVuIHdl IG5lZWQgdG8gYWRkIG1lbWJlcnMgbGlzdCBpbiBvdXIgb3V0cHV0CisgICAg ICAgIGlmIG9mX3R5cGUgPT0gJ2MnOgorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh ZGRpdGlvbmFsX3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGU9J2MnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHR5cHJlbGlkPWNvcHlfZGljdFsndHlwcmVs aWQnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgIyBUbyBkaXNwbGF5 IGluIHByb3BlcnRpZXMKKyAgICAgICAgICAgIHByb3BlcnRpZXNfbGlzdCA9 IFtdCisgICAgICAgICAgICAjIFRvIGRpc3BsYXkgaW4gY29tcG9zaXRlIGNv bGxlY3Rpb24gZ3JpZAorICAgICAgICAgICAgY29tcG9zaXRlX2xzdCA9IFtd CisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgICAgIHR5cGVsaXN0ID0gJyAnLmpvaW4oW3Jvd1snYXR0bmFt ZSddLCByb3dbJ3R5cG5hbWUnXV0pCisgICAgICAgICAgICAgICAgaWYgbm90 IHJvd1snY29sbG5hbWUnXSBvciAocm93Wydjb2xsbmFtZSddID09ICdkZWZh dWx0JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFuZCByb3dbJ2NvbGxuc3BuYW1lJ10gPT0gJ3BnX2NhdGFsb2cnKToK KyAgICAgICAgICAgICAgICAgICAgZnVsbF9jb2xsYXRlID0gJycKKyAgICAg ICAgICAgICAgICAgICAgY29sbGF0ZSA9ICcnCisgICAgICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZnVsbF9jb2xsYXRlID0gZ2V0 X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikucXRJZGVudCgKKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgcm93Wydjb2xsbnNwbmFtZSdd LCByb3dbJ2NvbGxuYW1lJ10pCisgICAgICAgICAgICAgICAgICAgIGNvbGxh dGUgPSAnIENPTExBVEUgJyArIGZ1bGxfY29sbGF0ZQorICAgICAgICAgICAg ICAgIHR5cGVsaXN0ICs9IGNvbGxhdGUKKyAgICAgICAgICAgICAgICBwcm9w ZXJ0aWVzX2xpc3QuYXBwZW5kKHR5cGVsaXN0KQorCisgICAgICAgICAgICAg ICAgIyBCZWxvdyBsb2dpYyB3aWxsIGFsbG93IHVzIHRvIHNwbGl0IGxlbmd0 aCwgcHJlY2lzaW9uIGZyb20gdHlwZSBuYW1lIGZvciBncmlkCisgICAgICAg ICAgICAgICAgaW1wb3J0IHJlCisgICAgICAgICAgICAgICAgbWF0Y2hPYmog PSByZS5tYXRjaCggcicoLiopXCgoLio/KSwoLio/KVwpJywgcm93Wyd0eXBu YW1lJ10pCisgICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6CisgICAgICAg ICAgICAgICAgICAgIHRfbmFtZSA9IG1hdGNoT2JqLmdyb3VwKDEpCisgICAg ICAgICAgICAgICAgICAgIHRfbGVuID0gbWF0Y2hPYmouZ3JvdXAoMikKKyAg ICAgICAgICAgICAgICAgICAgdF9wcmVjID0gbWF0Y2hPYmouZ3JvdXAoMykK KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0 X25hbWUgPSByb3dbJ3R5cG5hbWUnXQorICAgICAgICAgICAgICAgICAgICB0 X2xlbiA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdF9wcmVjID0gTm9u ZQorCisgICAgICAgICAgICAgICAgY29tcG9zaXRlX2xzdC5hcHBlbmQoewor ICAgICAgICAgICAgICAgICAgICAnbWVtYmVyX25hbWUnOiByb3dbJ2F0dG5h bWUnXSwgJ3R5cGUnOiB0X25hbWUsICdjb2xsYXRpb24nOiBmdWxsX2NvbGxh dGUsCisgICAgICAgICAgICAgICAgICAgICd0bGVuZ3RoJzogdF9sZW4sICdw cmVjaXNpb24nOiB0X3ByZWMgfSkKKworICAgICAgICAgICAgIyBBZGRpbmcg Ym90aCByZXN1bHRzCisgICAgICAgICAgICByZXNbJ21lbWJlcl9saXN0J10g PSAnLCAnLmpvaW4ocHJvcGVydGllc19saXN0KQorICAgICAgICAgICAgcmVz Wydjb21wb3NpdGUnXSA9IGNvbXBvc2l0ZV9sc3QKKworICAgICAgICAjIElm IHR5cGUgaXMgb2YgRU5VTSB0aGVuIHdlIG5lZWQgdG8gYWRkIGxhYmVscyBp biBvdXIgb3V0cHV0CisgICAgICAgIGlmIG9mX3R5cGUgPT0gJ2UnOgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdhZGRpdGlvbmFsX3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Un LCB0aWQ9dGlkKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5j b25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgIyBUbyBkaXNw bGF5IGluIHByb3BlcnRpZXMKKyAgICAgICAgICAgIHByb3BlcnRpZXNfbGlz dCA9IFtdCisgICAgICAgICAgICAjIFRvIGRpc3BsYXkgaW4gZW51bSBncmlk CisgICAgICAgICAgICBlbnVtX2xpc3QgPSBbXQorICAgICAgICAgICAgZm9y IHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgcHJvcGVy dGllc19saXN0LmFwcGVuZChyb3dbJ2VudW1sYWJlbCddKQorICAgICAgICAg ICAgICAgIGVudW1fbGlzdC5hcHBlbmQoeydsYWJlbCc6IHJvd1snZW51bWxh YmVsJ119KQorCisgICAgICAgICAgICAjIEFkZGluZyBib3RoIHJlc3VsdHMg aW4gb3VwdXQKKyAgICAgICAgICAgIHJlc1snZW51bV9saXN0J10gPSAnLCAn LmpvaW4ocHJvcGVydGllc19saXN0KQorICAgICAgICAgICAgcmVzWydlbnVt J10gPSBlbnVtX2xpc3QKKworICAgICAgICAjIElmIHR5cGUgaXMgb2YgUmFu Z2UgdGhlbiB3ZSBuZWVkIHRvIGFkZCBjb2xsYXRpb24sc3VidHlwZSBldGMg aW4gb3VyIG91dHB1dAorICAgICAgICBpZiBvZl90eXBlID09ICdyJzoKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdy JywgdGlkPXRpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmFuZ2VfZGljdCA9 IGRpY3QocmVzWydyb3dzJ11bMF0pCisgICAgICAgICAgICByZXMudXBkYXRl KHJhbmdlX2RpY3QpCisKKyAgICAgICAgIyBSZXR1cm5pbmcgb25seSBhZGRp dGlvbmFsIHByb3BlcnRpZXMgb25seQorICAgICAgICByZXR1cm4gcmVzCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0 aWVzIG9mIHRoZSBzZWxlY3RlZCB0eXBlIG5vZGUuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiAgRGF0YWJh c2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFR5cGUgSUQK KworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSlNPTiBvZiBzZWxl Y3RlZCB0eXBlIG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmpl Y3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICMgTWFraW5nIGNv cHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCisgICAgICAgIGNvcHlfZGlj dCA9IGRpY3QocmVzWydyb3dzJ11bMF0pCisKKyAgICAgICAgIyBXZSBuZWVk IHRvIHBhcnNlICYgY29udmVydCBBQ0wgY29taW5nIGZyb20gZGF0YWJhc2Ug dG8ganNvbiBmb3JtYXQKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdhY2wuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9 dGlkKQorICAgICAgICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1hY2wp CisKKyAgICAgICAgIyBXZSB3aWxsIHNldCBnZXQgcHJpdmlsZWdlcyBmcm9t IGFjbCBzcWwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAjIGl0IGZyb20g cHJvcGVydGllcyBzcWwKKyAgICAgICAgY29weV9kaWN0Wyd0eXBhY2wnXSA9 IFtdCisKKworICAgICAgICBmb3Igcm93IGluIGFjbFsncm93cyddOgorICAg ICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCisgICAg ICAgICAgICBpZiByb3dbJ2RlZnR5cGUnXSBpbiBjb3B5X2RpY3Q6CisgICAg ICAgICAgICAgICAgY29weV9kaWN0W3Jvd1snZGVmdHlwZSddXS5hcHBlbmQo cHJpdikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29w eV9kaWN0W3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQorCisgICAgICAgICMg Q2FsbGluZyBmdW5jdGlvbiB0byBjaGVjayBhbmQgYWRkaXRpb25hbCBwcm9w ZXJ0aWVzIGlmIGF2YWlsYWJsZQorICAgICAgICBjb3B5X2RpY3QudXBkYXRl KHNlbGYuYWRkaXRpb25hbF9wcm9wZXJ0aWVzKGNvcHlfZGljdCwgdGlkKSkK KworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICByZXNwb25zZT1jb3B5X2RpY3QsCisgICAgICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgZ2V0X2NvbGxhdGlvbnMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGNvbGxhdGlv biBhdmFpbGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAg ICAgIiIiCisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6 ICcnfV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf Y29sbGF0aW9ucy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHJl cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsYWJl bCc6IHJvd1snY29sbGF0aW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICd2YWx1ZSc6IHJvd1snY29sbGF0aW9uJ119CisgICAgICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGdldF90eXBlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9u ZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg cmV0dXJuIGxpc3Qgb2YgdHlwZXMgYXZhaWxhYmxlCisgICAgICAgIGFzIEFK QVggcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBbXQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90eXBlcy5z cWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgICAgICMgQXR0YWNoaW5nIHBy b3BlcnRpZXMgZm9yIHByZWNlc3Npb24KKyAgICAgICAgICAgICAgICAjICYg bGVuZ3RoIHZhbGlkYXRpb24gZm9yIGN1cnJlbnQgdHlwZQorICAgICAgICAg ICAgICAgIHByZWNpc2lvbiA9IEZhbHNlCisgICAgICAgICAgICAgICAgbGVu Z3RoID0gRmFsc2UKKyAgICAgICAgICAgICAgICBtaW5fdmFsID0gMAorICAg ICAgICAgICAgICAgIG1heF92YWwgPSAwCisKKyAgICAgICAgICAgICAgICAj IENoZWNrIGFnYWluc3QgUEdPSUQgZm9yIHNwZWNpZmljIHR5cGUKKyAgICAg ICAgICAgICAgICBpZiByb3dbJ2VsZW1vaWQnXToKKyAgICAgICAgICAgICAg ICAgICAgaWYgcm93WydlbGVtb2lkJ10gaW4gKDE1NjAsIDE1NjEsIDE1NjIs IDE1NjMsIDEwNDIsIDEwNDMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMDE0LCAxMDE1KToKKyAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGV2YWwgPSAnTCcKKyAgICAgICAgICAgICAgICAgICAg ZWxpZiByb3dbJ2VsZW1vaWQnXSBpbiAoMTA4MywgMTExNCwgMTExNSwgMTE4 MywgMTE4NCwgMTE4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTE4NiwgMTE4NywgMTI2NiwgMTI3MCk6CisgICAg ICAgICAgICAgICAgICAgICAgICB0eXBldmFsID0gJ0QnCisgICAgICAgICAg ICAgICAgICAgIGVsaWYgcm93WydlbGVtb2lkJ10gaW4gKDEyMzEsIDE3MDAp OgorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXZhbCA9ICdQJworICAg ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg ICAgdHlwZXZhbCA9ICcgJworCisgICAgICAgICAgICAgICAgIyBMb2dpYyB0 byBzZXQgcHJlY2lzaW9uICYgbGVuZ3RoL21pbi9tYXggdmFsdWVzCisgICAg ICAgICAgICAgICAgaWYgdHlwZXZhbCA9PSAnUCc6CisgICAgICAgICAgICAg ICAgICAgIHByZWNpc2lvbiA9IFRydWUKKworICAgICAgICAgICAgICAgIGlm IHByZWNpc2lvbiBvciB0eXBldmFsIGluICgnTCcsICdEJyk6CisgICAgICAg ICAgICAgICAgICAgIGxlbmd0aCA9IFRydWUKKyAgICAgICAgICAgICAgICAg ICAgbWluX3ZhbCA9IDAgaWYgdHlwZXZhbCA9PSAnRCcgZWxzZSAxCisgICAg ICAgICAgICAgICAgICAgIGlmIHByZWNpc2lvbjoKKyAgICAgICAgICAgICAg ICAgICAgICAgIG1heF92YWwgPSAxMDAwCisgICAgICAgICAgICAgICAgICAg IGVsaWYgbWluX3ZhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTWF4 IG9mIGludGVnZXIgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h eF92YWwgPSAyMTQ3NDgzNjQ3CisgICAgICAgICAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfdmFsID0gMTAKKworICAg ICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeydsYWJlbCc6IHJvd1sndHlwbmFtZSddLCAndmFsdWUnOiBy b3dbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3R5cHZhbCc6IHR5cGV2YWwsICdwcmVjaXNpb24nOiBwcmVjaXNpb24sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsZW5ndGgnOiBsZW5ndGgs ICdtaW5fdmFsJzogbWluX3ZhbCwgJ21heF92YWwnOiBtYXhfdmFsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgICAgICkKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAg ICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAg KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3N1 YnR5cGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gbGlzdCBvZiBzdWJ0eXBlcyBhdmFpbGFibGUKKyAgICAgICAgYXMgQUpB WCByZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFt7J2xh YmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfc3VidHlwZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9VHJ1ZSkKKyAgICAg ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106 CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7J2xhYmVsJzogcm93WydzdHlwZSddLCAndmFsdWUn OiByb3dbJ3N0eXBlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdpc19jb2xsYXRlJzogcm93Wydpc19jb2xsYXRlJ119CisgICAgICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAor ICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGdldF9zdWJ0eXBlX29wY2xhc3Moc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIHN1YnR5cGUgb3BjbGFzcyBhdmFp bGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAgICAgIiIi CisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0K KyAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncworCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZ2V0X3N1YnR5cGVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlX29wY2xh c3M9VHJ1ZSwgZGF0YT1kYXRhKQorICAgICAgICAgICAgaWYgU1FMOgorICAg ICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgICAgIHJlcy5h cHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGFi ZWwnOiByb3dbJ29wY25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICd2YWx1ZSc6IHJvd1snb3BjbmFtZSddfSkKKworICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfc3VidHlwZV9kaWZmKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBz dWJ0eXBlcyBkaWZmIGZ1bmN0aW9ucyBhdmFpbGFibGUKKyAgICAgICAgYXMg QUpBWCByZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFt7 J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgZGF0YSA9IHJl cXVlc3QuYXJncworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZ2V0X3N1YnR5cGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZXRfb3BjaW50eXBlPVRydWUsIGRhdGE9ZGF0YSkK KyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAgICAgICBzdGF0dXMs IG9wY2ludHlwZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1v cGNpbnR5cGUpCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3N1 YnR5cGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3BjaW50eXBlPW9wY2ludHlwZSwgY29ubj1zZWxmLmNvbm4p CisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAgICAg cmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eydsYWJlbCc6IHJvd1snc3R5cGRpZmYnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1snc3R5cGRpZmYnXX0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAg IGRhdGE9cmVzLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZ2V0X2Nhbm9uaWNhbChzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qgb2YgY2Fub25pY2FsIGZ1 bmN0aW9ucyBhdmFpbGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4K KyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2 YWx1ZSc6ICcnfV0KKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncworICAg ICAgICBjYW5vbmljYWwgPSBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgIyBXZSB3YW50IHRvIHNlbmQgZGF0YSBvbmx5IGlmIGluIHdlIGFy ZSBpbiBlZGl0IG1vZGUKKyAgICAgICAgICAgICMgZWxzZSB3ZSB3aWxsIGRp c2FibGUgdGhlIGNvbWJvYm94CisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9z dWJ0eXBlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2V0b2lkPVRydWUsIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIGlm IFNRTDoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG9pZCA9IHNlbGYuY29u bi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1vaWQpCisgICAgICAgICAgICAgICAg IyBJZiBvaWQgaXMgTm9uZSB0aGVuIGRvIG5vdCBydW4gU1FMCisgICAgICAg ICAgICAgICAgaWYgb2lkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAg IGNhbm9uaWNhbCA9IEZhbHNlCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X3N1YnR5cGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYW5vbmljYWw9Y2Fub25pY2FsLCBjb25uPXNlbGYuY29ubiwg b2lkPW9pZCkKKyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAgICAg ICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xhYmVsJzogcm93Wydj YW5vbmljYWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICd2YWx1ZSc6IHJvd1snY2Fub25pY2FsJ119KQorCisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgZ2V0X2V4dGVybmFsX2Z1bmN0aW9uc19saXN0 KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlz dCBvZiBleHRlcm5hbCBmdW5jdGlvbnMgYXZhaWxhYmxlCisgICAgICAgIGFz IEFKQVggcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBb eydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJywgJ2NidHlwZSc6ICdhbGwnfV0K KworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFRoZSBTUUwgZ2VuZXJh dGVkIGJlbG93IHdpbGwgcG9wdWxhdGUgSW5wdXQvT3V0cHV0L1NlbmQvCisg ICAgICAgICAgICAjIFJlY2VpdmUvQW5hbHl6ZS9UeXBNb2RlSU4vVHlwTW9k T1VUIGNvbWJvIGJveAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfZXh0ZXJu YWxfZnVuY3Rpb25zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleHRmdW5jPVRydWUpCisgICAgICAgICAgICBpZiBTUUw6 CisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAgICAg cmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwn OiByb3dbJ2Z1bmMnXSwgJ3ZhbHVlJzogcm93WydmdW5jJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgJ2NidHlwZSc6ICdhbGwnfSkKKworICAgICAg ICAgICAgIyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIHBvcHVsYXRl IFR5cE1vZGVJTiBjb21ibyBib3gKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X2V4dGVybmFsX2Z1bmN0aW9ucy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZW1vZGluPVRydWUpCisgICAgICAgICAg ICBpZiBTUUw6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAg ICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg IHsnbGFiZWwnOiByb3dbJ2Z1bmMnXSwgJ3ZhbHVlJzogcm93WydmdW5jJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgJ2NidHlwZSc6ICd0eXBtb2Rp bid9KQorCisgICAgICAgICAgICAjIFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93 IHdpbGwgcG9wdWxhdGUgVHlwTW9kZUlOIGNvbWJvIGJveAorICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbW9kb3V0PVRy dWUpCisgICAgICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3Mn XToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAg ICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ2Z1bmMnXSwgJ3ZhbHVl Jzogcm93WydmdW5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ni dHlwZSc6ICd0eXBtb2RvdXQnfSkKKworICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlcywK KyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CisKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZXMgbmV3IHRoZSB0eXBl IG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJRAorICAgICAgICAgICB0aWQ6IFR5cGUgSUQKKyAgICAgICAgIiIi CisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3Jt IGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAg ICAgIHJlcXVpcmVkX2FyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZSc6ICdO YW1lJywKKyAgICAgICAgICAgICd0eXB0eXBlJzogJ1R5cGUnCisgICAgICAg IH0KKworICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAg ICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAg ICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0w LAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAg ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciAoJXMpLiIgJQorICAgICAgICAgICAgICAgICAgICAg ICAgcmVxdWlyZWRfYXJnc1thcmddCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAjIEFkZGl0aW9uYWwg Y2hlY2tzIGdvZXMgaGVyZQorICAgICAgICAgICAgIyBJZiB0eXBlIGlzIGNv bXBvc2l0ZSB0aGVuIGNoZWNrIGlmIGl0IGhhcyB0d28gbWVtYmVycworICAg ICAgICAgICAgaWYgZGF0YSBhbmQgZGF0YVthcmddID09ICdjJzoKKyAgICAg ICAgICAgICAgICBpZiBsZW4oZGF0YVsnY29tcG9zaXRlJ10pIDwgMjoKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAg ICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAg ICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdDb21wb3NpdGUgdHlwZXMgcmVxdWlyZXMgYXQgbGVhc3Qg dHdvIG1lbWJlcnMnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgSWYgdHlwZSBpcyBl bnVtIHRoZW4gY2hlY2sgaWYgaXQgaGFzIG1pbmltdW0gb25lIGxhYmVsCisg ICAgICAgICAgICBpZiBkYXRhIGFuZCBkYXRhW2FyZ10gPT0gJ2UnOgorICAg ICAgICAgICAgICAgIGlmIGxlbihkYXRhWydlbnVtJ10pIDwgMToKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAg ICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAg ICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdFbnVtZXJhdGlvbiB0eXBlcyByZXF1aXJlcyBhdCBsZWFzdCBv bmUgbGFiZWwnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgSWYgdHlwZSBpcyByYW5n ZSB0aGVuIGNoZWNrIGlmIHN1YnR5cGUgaXMgZGVmaW5lZCBvciBub3QKKyAg ICAgICAgICAgIGlmIGRhdGEgYW5kIGRhdGFbYXJnXSA9PSAncic6CisgICAg ICAgICAgICAgICAgaWYgZGF0YVsndHlwbmFtZSddIGlzIE5vbmU6CisgICAg ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAg ICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAg ICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnU3VidHlwZSBtdXN0IGJlIGRlZmluZWQgZm9yIHJhbmdlIHR5 cGVzJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAjIElmIHR5cGUgaXMgZXh0ZXJuYWwg dGhlbiBjaGVjayBpZiBpbnB1dC9vdXRwdXQKKyAgICAgICAgICAgICMgY29u dmVyc2lvbiBmdW5jdGlvbiBpcyBkZWZpbmVkCisgICAgICAgICAgICBpZiBk YXRhIGFuZCBkYXRhW2FyZ10gPT0gJ3gnOgorICAgICAgICAgICAgICAgIGlm IGRhdGFbJ3R5cGlucHV0J10gaXMgTm9uZSBvciBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGFbJ3R5cG91dHB1dCddIGlzIE5vbmU6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAg ICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAg ICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnRXh0ZXJuYWwgdHlwZXMgcmVxdWlyZXMgYm90aCBJ bnB1dCAmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQg Y29udmVyc2lvbiBmdW5jdGlvbi4nCisgICAgICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAjIFRvIGZv cm1hdCBwcml2aWxlZ2VzIGNvbWluZyBmcm9tIGNsaWVudAorICAgICAgICBp ZiAndHlwYWNsJyBpbiBkYXRhIGFuZCBkYXRhWyd0eXBhY2wnXSBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGRhdGFbJ3R5cGFjbCddID0gcGFyc2VfcHJp dl90b19kYihkYXRhWyd0eXBhY2wnXSwgc2VsZi5hY2wpCisKKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIHdlIG5l ZWQgb2lkIHRvIHRvIGFkZCBvYmplY3QgaW4gdHJlZSBhdCBicm93c2VyCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZGF0YT1kYXRh KQorICAgICAgICAgICAgc3RhdHVzLCB0aWQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXRpZCkKKworICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisg ICAgICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9i cm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHRpZCwKKyAgICAg ICAgICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXR5 cGUiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlcyBleGlzdGluZyB0aGUgdHlw ZSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBT Y2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUeXBlIElECisgICAgICAgICIi IgorCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5m b3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHNlbGYuZ2V0X3NxbChn aWQsIHNpZCwgZGF0YSwgc2NpZCwgdGlkKQorICAgICAgICAgICAgaWYgU1FM IGFuZCBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgorICAg ICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf c2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iVHlwZSB1cGRhdGVk IiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAg ICAgICAgICAgICAnaWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lk Jzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAg ICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAg ICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg ICAgJ2lkJzogdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQn OiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXBkYXRlcyBleGlzdGluZyB0aGUgdHlwZSBvYmplY3QK KworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgdGlkOiBUeXBlIElECisgICAgICAgICIiIgorCisgICAg ICAgICMgQmVsb3cgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJvcCBv ciBkcm9wIHdpdGggY2FzY2FkZSBjYWxsCisgICAgICAgIGlmIHNlbGYuY21k ID09ICdkZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2FzY2Fk ZSBvcGVyYXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKworICAg ICAgICB0cnk6CisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Np ZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29i amVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICAjIE1ha2luZyBjb3B5IG9mIG91dHB1dCBmb3IgZnV0dXJl IHVzZQorICAgICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0p CisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNhc2Nh ZGU9Y2FzY2FkZSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRl eHQoIlR5cGUgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9ewor ICAgICAgICAgICAgICAgICAgICAnaWQnOiB0aWQsCisgICAgICAgICAgICAg ICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZW5lcmF0ZXMgbW9kaWZpZWQgc3FsIGZvciB0eXBlIG9iamVjdAorCisgICAg ICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAor ICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAg ICAgICB0aWQ6IFR5cGUgSUQKKyAgICAgICAgIiIiCisgICAgICAgIHJlcSA9 IHJlcXVlc3QuYXJncworICAgICAgICBkYXRhID0gZGljdCgpCisKKyAgICAg ICAgIyBjb252ZXJ0aW5nIG5lc3RlZCByZXF1ZXN0IGRhdGEgaW4gcHJvcGVy IGpzb24gZm9ybWF0CisgICAgICAgIGZvciBrZXksdmFsIGluIHJlcS5pdGVt cygpOgorICAgICAgICAgICAgaWYga2V5IGluIFsnY29tcG9zaXRlJywgJ2Vu dW0nLCAnc2VjbGFiZWxzJywgJ3R5cGFjbCddOgorICAgICAgICAgICAgICAg IGRhdGFba2V5XSA9IGpzb24ubG9hZHModmFsKQorICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSB2YWwKKworICAgICAg ICB0cnk6CisgICAgICAgICAgICBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBz aWQsIGRhdGEsIHNjaWQsIHRpZCkKKworICAgICAgICAgICAgaWYgU1FMIGFu ZCBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgorICAgICAg ICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPVNRTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB0aWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZ2VucmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisgICAgICAgICIiIgor ICAgICAgICBpZiB0aWQgaXMgbm90IE5vbmU6CisKKyAgICAgICAgICAgIGZv ciBrZXkgaW4gWyd0eXBhY2wnXToKKyAgICAgICAgICAgICAgICBpZiBrZXkg aW4gZGF0YSBhbmQgZGF0YVtrZXldIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgICAgICAgICBpZiAnYWRkZWQnIGluIGRhdGFba2V5XToKKyAgICAgICAg ICAgICAgICAgICAgICBkYXRhW2tleV1bJ2FkZGVkJ10gPSBwYXJzZV9wcml2 X3RvX2RiKGRhdGFba2V5XVsnYWRkZWQnXSwgc2VsZi5hY2wpCisgICAgICAg ICAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBkYXRhW2tleV06CisgICAg ICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydjaGFuZ2VkJ10gPSBwYXJz ZV9wcml2X3RvX2RiKGRhdGFba2V5XVsnY2hhbmdlZCddLCBzZWxmLmFjbCkK KyAgICAgICAgICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGRhdGFba2V5 XToKKyAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV1bJ2RlbGV0ZWQn XSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVtrZXldWydkZWxldGVkJ10sIHNl bGYuYWNsKQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9 c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmpl Y3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgIyBNYWtpbmcgY29weSBvZiBvdXRwdXQgZm9yIGZ1dHVyZSB1 c2UKKyAgICAgICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVsw XSkKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdhY2wuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRp ZCkKKyAgICAgICAgICAgIHN0YXR1cywgYWNsID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9YWNsKQorCisgICAgICAgICAgICAjIFdlIHdpbGwgc2V0IGdldCBw cml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3ZSBkb24ndCBuZWVkCisgICAg ICAgICAgICAjIGl0IGZyb20gcHJvcGVydGllcyBzcWwKKyAgICAgICAgICAg IG9sZF9kYXRhWyd0eXBhY2wnXSA9IFtdCisKKyAgICAgICAgICAgIGZvciBy b3cgaW4gYWNsWydyb3dzJ106CisgICAgICAgICAgICAgICAgcHJpdiA9IHBh cnNlX3ByaXZfZnJvbV9kYihyb3cpCisgICAgICAgICAgICAgICAgaWYgcm93 WydkZWZ0eXBlJ10gaW4gb2xkX2RhdGE6CisgICAgICAgICAgICAgICAgICAg IG9sZF9kYXRhW3Jvd1snZGVmdHlwZSddXS5hcHBlbmQocHJpdikKKyAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvbGRfZGF0 YVtyb3dbJ2RlZnR5cGUnXV0gPSBbcHJpdl0KKworICAgICAgICAgICAgIyBD YWxsaW5nIGZ1bmN0aW9uIHRvIGNoZWNrIGFuZCBhZGRpdGlvbmFsIHByb3Bl cnRpZXMgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICBvbGRfZGF0YS51cGRh dGUoc2VsZi5hZGRpdGlvbmFsX3Byb3BlcnRpZXMob2xkX2RhdGEsIHRpZCkp CisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBk YXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0 YT1vbGRfZGF0YSwgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1aXJlZF9hcmdzID0g WworICAgICAgICAgICAgICAgICduYW1lJywKKyAgICAgICAgICAgICAgICAn dHlwdHlwZScKKyAgICAgICAgICAgIF0KKworICAgICAgICAgICAgZm9yIGFy ZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBu b3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIgLS1k ZWZpbml0aW9uIGluY29tcGxldGUiCisKKyAgICAgICAgICAgICMgUHJpdmls ZWdlcworICAgICAgICAgICAgaWYgJ3R5cGFjbCcgaW4gZGF0YSBhbmQgZGF0 YVsndHlwYWNsJ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGF0 YVsndHlwYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ3R5cGFjbCdd LCBzZWxmLmFjbCkKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgcmV0dXJuIFNRTAor CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHNxbChzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlcyByZXZlcnNlIGVu Z2luZWVyZWQgc3FsIGZvciB0eXBlIG9iamVjdAorCisgICAgICAgICBBcmdz OgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6 IFR5cGUgSUQKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVz LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9 c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxm LmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAjIE1ha2luZyBjb3B5IG9mIG91 dHB1dCBmb3IgZnV0dXJlIHVzZQorICAgICAgICBkYXRhID0gZGljdChyZXNb J3Jvd3MnXVswXSkKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2FjbC5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10 aWQpCisgICAgICAgIHN0YXR1cywgYWNsID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWFjbCkK KworICAgICAgICAjIFdlIHdpbGwgc2V0IGdldCBwcml2aWxlZ2VzIGZyb20g YWNsIHNxbCBzbyB3ZSBkb24ndCBuZWVkCisgICAgICAgICMgaXQgZnJvbSBw cm9wZXJ0aWVzIHNxbAorICAgICAgICBkYXRhWyd0eXBhY2wnXSA9IFtdCisK KyAgICAgICAgZm9yIHJvdyBpbiBhY2xbJ3Jvd3MnXToKKyAgICAgICAgICAg IHByaXYgPSBwYXJzZV9wcml2X2Zyb21fZGIocm93KQorICAgICAgICAgICAg aWYgcm93WydkZWZ0eXBlJ10gaW4gZGF0YToKKyAgICAgICAgICAgICAgICBk YXRhW3Jvd1snZGVmdHlwZSddXS5hcHBlbmQocHJpdikKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YVtyb3dbJ2RlZnR5cGUnXV0g PSBbcHJpdl0KKworICAgICAgICAjIFByaXZpbGVnZXMKKyAgICAgICAgaWYg J3R5cGFjbCcgaW4gZGF0YSBhbmQgZGF0YVsndHlwYWNsJ10gaXMgbm90IE5v bmU6CisgICAgICAgICAgICBkYXRhWyduc3BhY2wnXSA9IHBhcnNlX3ByaXZf dG9fZGIoZGF0YVsndHlwYWNsJ10sIHNlbGYuYWNsKQorCisgICAgICAgICMg Q2FsbGluZyBmdW5jdGlvbiB0byBjaGVjayBhbmQgYWRkaXRpb25hbCBwcm9w ZXJ0aWVzIGlmIGF2YWlsYWJsZQorICAgICAgICBkYXRhLnVwZGF0ZShzZWxm LmFkZGl0aW9uYWxfcHJvcGVydGllcyhkYXRhLCB0aWQpKQorCisgICAgICAg ICMgV2UgZG8gbm90IHdhbnQgdG8gZGlzcGxheSB0YWJsZSB3aGljaCBoYXMg Jy0nIHZhbHVlCisgICAgICAgICMgc2V0dGluZyB0aGVtIHRvIE5vbmUgc28g dGhhdCBqaW5qYSBhdm9pZCBkaXNwbGF5aW5nIHRoZW0KKyAgICAgICAgZm9y IGsgaW4gZGF0YToKKyAgICAgICAgICAgIGlmIGRhdGFba10gPT0gJy0nOgor ICAgICAgICAgICAgICAgIGRhdGFba10gPSBOb25lCisKKyAgICAgICAgU1FM ID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB0aWQ9Tm9u ZSkKKworICAgICAgICAjIFdlIGFyZSBhcHBlbmRpbmcgaGVhZGVycyBoZXJl IGZvciBzcWwgcGFuZWwKKyAgICAgICAgc3FsX2hlYWRlciA9ICItLSBUeXBl OiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQorICAgICAgICBz cWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1z ZWxmLmNvbm4pCisgICAgICAgIFNRTCA9IHNxbF9oZWFkZXIgKyAnXG5cbicg KyBTUUwKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25z ZT1TUUwpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRl cGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBl bmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBmb3Ig dGhlIHR5cGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogVHlwZSBJRAor ICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW50c19yZXN1bHQgPSBzZWxm LmdldF9kZXBlbmRlbnRzKAorICAgICAgICAgICAgc2VsZi5jb25uLCB0aWQK KyAgICAgICAgKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVudHNfcmVzdWx0LAor ICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVu Y2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVu Y2llcyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRo ZSB0eXBlIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ RAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFR5cGUgSUQKKyAg ICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxm LmdldF9kZXBlbmRlbmNpZXMoCisgICAgICAgICAgICBzZWxmLmNvbm4sIHRp ZAorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3Vs dCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAg ICAgKQorCitUeXBlVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50 KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3N0YXRpYy9pbWcvY29sbC10eXBlLnBuZyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3R5cGVzL3N0YXRpYy9pbWcvY29sbC10eXBlLnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjAyMGQ3ZDk5Zjg0NDM5MDQ2 ZDI4ODYxNWU4NjVlZTFmYmRiODE1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh bCAzMjkKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNzM/JCMpZUZQ RnYzR2ZNVjE9M05jWEk9YU0+ZkhhUVRAUTkxCnpgaFMxUnt+T0V4VSEzOztN RW1+KG1IJjY8e29sTjMtY0RKZEk+d1M5emhETjNYRSlNLTlMQHJkJFlMUHYw bWcxOAp6dithUDQ3Kjd8KzVSVTclWFFPIT00MHpsZ29ed28kRVUhTXkjM2oo a3MqfUxUOWRVcl5uRlYqeGA8TGZFWExVJnsKek5UX1FaKXtwMTFqcjhCUkpm Kko5dDFxJEQlWDZGSyhxfXVJazRgT1ZfJnYrdEFaRik8Y35fKSF8Tk17Vj1l I1dYCnpOI0o5dkcwK34+NjQhezVsKkUhJHRLXzBvQWpNIzBVfSZJZ1hyeWFr Ny1EMiNXbnllKVZ5Yk9tWUdxKEJAMTVRJQpxNmItcmdEVmJATjVEZjtGVT0y WGtDUlBTITVEbGxNaHBxdT9WRE5QSGI2TXc8JjskVVokOCpPMwoKbGl0ZXJh bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvc3RhdGljL2ltZy90eXBlLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3N0YXRpYy9pbWcvdHlwZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNmMxNjc2NGU3ZDA4YzU2OTIyYTk3YTJmMGM2Y2MwNjQ1NWM4NmE1NgpH SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzI1CnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITczPyQjKWVGUEZ2NUFYP2IxPTh+IzlFbXpUPilRV1U9 bCh4RQp6YHYyanN8Rl9ydHpkWX4lbkY7QG9IdlFqUXsocFBrfElNaykwQCo7 TmozcSZTITMrLTFabG5QQG9DT3x7I1gjQnYKempOTUxWK1d7RyZvLVUzZDlN X1cqNHpNX1JJVnw4dihVNHx0NnI4Wnw1Zmg3X0x0Qj1IMDFLbUpSO0klUW1Y c0NLCnpuSF8tPTdhM1c2OW9uQXhEOW02PCR5bSRPPG0lQSZFbD1TRk9VakVt ajdgbzQrOURmbkBHX2o8QmZhcn5aLSkhZQp6MEBWYE5oPzExVmwyb2hZcUVz Tm9VfVJ1dXBsZktQWWhWfitXTUV9dFktTTdxWkQ0OTtVQC01VS1ZT0lneCVu eFgKa1hfWEtTMjl7dEFLLURIejI0KVpxcj4yTGwwY3YzSWJvRnl0PWFrUnsw MWg1JnF5UFdfCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9qcy90eXBl LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvanMv dHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 ZTVkZGEwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvdGVtcGxhdGVzL3R5cGUvanMvdHlwZS5qcwpAQCAtMCwwICsxLDg2NCBA QAorZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywg J3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICAgICAgJ3Bn YWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdiYWNrZ3JpZCcsICdwZ2Fk bWluLmJhY2tncmlkJywKKyAgICAgICAgICAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJv d3NlciwgYWxlcnRpZnksIEJhY2tncmlkKSB7CisKKyAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2NvbGwtdHlwZSddKSB7CisgICAgdmFyIGRhdGFiYXNlcyA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC10eXBlJ10gPQorICAgICAg cGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAg bm9kZTogJ3R5cGUnLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ1R5cGVzJykg fX0nLAorICAgICAgICB0eXBlOiAnY29sbC10eXBlJywKKyAgICAgICAgY29s dW1uczogWyduYW1lJywgJ3R5cGVvd25lcicsICdkZXNjcmlwdGlvbiddCisg ICAgICB9KTsKKyAgfTsKKworICAvLyBTd2l0Y2ggb3B0aW9ucyB0byBzYXZl IHNwYWNlIGluIG1vZGVsJ3MgZmllbGQKKyAgdmFyIHN3aXRjaE9wdGlvbnMg PSB7CisgICAgJ29uVGV4dCc6ICdZZXMnLCAnb2ZmVGV4dCc6ICdObycsCisg ICAgJ29uQ29sb3InOiAnc3VjY2VzcycsICdvZmZDb2xvcic6ICdwcmltYXJ5 JywKKyAgICAnc2l6ZSc6ICdzbWFsbCcKKyAgfTsKKworICAvLyBTZWN1cml0 eSBsYWJlbCBtb2RlbCBkZWNsYXJhdGlvbgorICB2YXIgU2VjdXJpdHlNb2Rl bCA9IEJhY2tmb3JtLlNlY3VyaXR5TW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICBw cm92aWRlcjogdW5kZWZpbmVkLAorICAgICAgc2VjdXJpdHlfbGFiZWw6IHVu ZGVmaW5lZAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAgaWQ6ICdw cm92aWRlcicsIGxhYmVsOiAne3sgXygnUHJvdmlkZXInKSB9fScsCisgICAg ICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmYWxzZSwgY2VsbEhlYWRlckNs YXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnCisgICAgfSx7CisgICAgICBpZDog J3NlY3VyaXR5X2xhYmVsJywgbGFiZWw6ICd7eyBfKCdTZWN1cml0eSBMYWJl bCcpIH19JywKKyAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IGZhbHNl LCBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcKKyAgICB9 XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZXJy ID0ge30sCisgICAgICAgICAgZXJybXNnID0gbnVsbCwKKyAgICAgICAgICBk YXRhID0gdGhpcy50b0pTT04oKTsKKworICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ3NlY3VyaXR5X2xhYmVsJykpIHx8CisgICAgICAgIF8u aXNOdWxsKHRoaXMuZ2V0KCdzZWN1cml0eV9sYWJlbCcpKSB8fAorICAgICAg ICBTdHJpbmcodGhpcy5nZXQoJ3NlY3VyaXR5X2xhYmVsJykpLnJlcGxhY2Uo L15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVycm1z ZyA9ICd7eyBfKCdQbGVhc2UgcHJvdmlkZSB0aGUgdmFsdWUgZm9yIHNlY3Vy aXR5IGxhYmVsLicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoJ3NlY3VyaXR5X2xhYmVsJywgZXJybXNnKTsKKyAgICAgICAgICAg IHJldHVybiBlcnJtc2c7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnc2VjdXJpdHlfbGFiZWwnKTsK KyAgICAgICAgICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0p OworCisgIC8vIENvbXBvc2l0ZSB0eXBlIG1vZGVsIGRlY2xhcmF0aW9uCisg IHZhciBDb21wb3NpdGVNb2RlbCA9IEJhY2tmb3JtLkNvbXBvc2l0ZU1vZGVs ID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBk ZWZhdWx0czogeworICAgICAgbWVtYmVyX25hbWU6IHVuZGVmaW5lZCwKKyAg ICAgIHR5cGU6IHVuZGVmaW5lZCwKKyAgICAgIHRsZW5ndGg6IHVuZGVmaW5l ZCwKKyAgICAgIGlzX3RsZW5ndGg6IGZhbHNlLAorICAgICAgcHJlY2lzaW9u OiB1bmRlZmluZWQsCisgICAgICBpc19wcmVjaXNpb246IGZhbHNlLAorICAg ICAgY29sbGF0aW9uOiB1bmRlZmluZWQsCisgICAgICBtaW5fdmFsOiB1bmRl ZmluZWQsCisgICAgICBtYXhfdmFsOiB1bmRlZmluZWQsCisgICAgfSwKKyAg ICB0eXBlX29wdGlvbnM6IHVuZGVmaW5lZCwKKyAgICBzdWJ0eXBlczogdW5k ZWZpbmVkLAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAnbWVtYmVyX25h bWUnLCBsYWJlbDogJ3t7IF8oJ01lbWJlciBOYW1lJykgfX0nLAorICAgICAg dHlwZTogJ3RleHQnLCAgZGlzYWJsZWQ6IGZhbHNlLCBlZGl0YWJsZTogZmFs c2UKKyAgICB9LHsKKyAgICAgIGlkOiAndHlwZScsIGxhYmVsOiAne3sgXygn VHlwZScpIH19JywgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAg ICAgIHR5cGU6ICd0ZXh0JywgdXJsOiAnZ2V0X3R5cGVzJywgZGlzYWJsZWQ6 IGZhbHNlLCBub2RlOiAndHlwZScsCisgICAgICBlZGl0YWJsZTogZmFsc2Us CisgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQpeworICAgICAgICB0aGlz Lm1vZGVsLnR5cGVfb3B0aW9ucyA9ICBkOworICAgICAgICByZXR1cm4gZDsK KyAgICAgIH0KKyAgICB9LHsKKyAgICAgIGlkOiAndGxlbmd0aCcsIGxhYmVs OiAne3sgXygnTGVuZ3RoJykgfX0nLCBkZXBzOiBbJ3R5cGUnXSwgdHlwZTog J3RleHQnLAorICAgICAgZWRpdGFibGU6IGZhbHNlLAorICAgICAgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgLy8gV2Ugd2lsbCBzdG9yZSB0 eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveAorICAgICAgICB2YXIg b2ZfdHlwZSA9IG0uZ2V0KCd0eXBlJyk7CisgICAgICAgIGlmKG0udHlwZV9v cHRpb25zKSB7CisgICAgICAgICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRo ZSB0eXBlcworICAgICAgICAgIF8uZWFjaChtLnR5cGVfb3B0aW9ucywgZnVu Y3Rpb24obykgeworICAgICAgICAgICAgLy8gaWYgdHlwZSBmcm9tIHNlbGVj dGVkIGZyb20gY29tYm9ib3ggbWF0Y2hlcyBpbiBvcHRpb25zCisgICAgICAg ICAgICBpZiAoIG9mX3R5cGUgPT0gby52YWx1ZSApIHsKKyAgICAgICAgICAg ICAgICAvLyBpZiBsZW5ndGggaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlw ZQorICAgICAgICAgICAgICAgIGlmKG8ubGVuZ3RoKQorICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGlu IG1vZGVsCisgICAgICAgICAgICAgICAgICBtLnNldCgnaXNfdGxlbmd0aCcs IHRydWUsIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0u c2V0KCdtaW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7Cisg ICAgICAgICAgICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwg e3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1 cm4gIW0uZ2V0KCdpc190bGVuZ3RoJyk7CisgICAgICB9CisgICAgfSx7Cisg ICAgICBpZDogJ3ByZWNpc2lvbicsIGxhYmVsOiAne3sgXygnUHJlY2lzaW9u JykgfX0nLCBkZXBzOiBbJ3R5cGUnXSwKKyAgICAgIHR5cGU6ICd0ZXh0Jywg ZWRpdGFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgLy8gV2Ugd2lsbCBzdG9yZSB0eXBlIGZyb20gc2VsZWN0 ZWQgZnJvbSBjb21ib2JveAorICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0 KCd0eXBlJyk7CisgICAgICAgIGlmKG0udHlwZV9vcHRpb25zKSB7CisgICAg ICAgICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAg ICAgIF8uZWFjaChtLnR5cGVfb3B0aW9ucywgZnVuY3Rpb24obykgeworICAg ICAgICAgICAgLy8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9i b3ggbWF0Y2hlcyBpbiBvcHRpb25zCisgICAgICAgICAgICBpZiAoIG9mX3R5 cGUgPT0gby52YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAvLyBpZiBwcmVj ZXNzaW9uIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAgICAg ICAgICAgICBpZihvLnByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2RlbAor ICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIHRydWUs IHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdt aW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAg ICAgICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVu dDogdHJ1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIW0u Z2V0KCdpc19wcmVjaXNpb24nKTsKKyAgICAgIH0KKyAgICB9LHsKKyAgICAg IGlkOiAnY29sbGF0aW9uJywgbGFiZWw6ICd7eyBfKCdDb2xsYXRpb24nKSB9 fScsCisgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCBlZGl0 YWJsZTogZmFsc2UsCisgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBm YWxzZSwgdXJsOiAnZ2V0X2NvbGxhdGlvbnMnLCBub2RlOiAndHlwZScKKyAg ICB9XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIg ZXJyID0ge30sCisgICAgICAgICAgZXJybXNnID0gbnVsbCwKKyAgICAgICAg ICBkYXRhID0gdGhpcy50b0pTT04oKTsKKyAgICAgIC8vIFZhbGlkYXRpb24g Zm9yIG1lbWJlciBuYW1lCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZChkYXRh Lm1lbWJlcl9uYW1lKSB8fAorICAgICAgICBfLmlzTnVsbChkYXRhLm1lbWJl cl9uYW1lKSB8fAorICAgICAgICBTdHJpbmcoZGF0YS5tZW1iZXJfbmFtZSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAg IGVycm1zZyA9IF8oIlBsZWFzZSBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgbWVt YmVyIG5hbWUuIikKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdt ZW1iZXJfbmFtZScsIGVycm1zZykKKyAgICAgICAgICByZXR1cm4gZXJybXNn OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVu c2V0KCdtZW1iZXJfbmFtZScpOworICAgICAgfQorCisgICAgICAvLyBWYWxp ZGF0aW9uIGZvciBMZW5ndGggZmllbGQKKyAgICAgIGlmIChkYXRhLmlzX3Rs ZW5ndGggJiYgIV8uaXNVbmRlZmluZWQoZGF0YS50bGVuZ3RoKSkgeworICAg ICAgICBpZiAoZGF0YS50bGVuZ3RoIDwgZGF0YS5taW5fdmFsICkKKyAgICAg ICAgICBlcnJtc2cgPSBfKCJMZW5ndGggc2hvdWxkIG5vdCBiZSBsZXNzIHRo YW4gIiArIGRhdGEubWluX3ZhbCkKKyAgICAgICAgaWYgKGRhdGEudGxlbmd0 aCA+IGRhdGEubWF4X3ZhbCApCisgICAgICAgICAgZXJybXNnID0gXygiTGVu Z3RoIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuICIgKyBkYXRhLm1heF92 YWwpCisgICAgICAgIC8vIElmIHdlIGhhdmUgYW55IGVycm9yIHNldCB0aGVu IHRocm93IGl0IHRvIHVzZXIKKyAgICAgICAgaWYoZXJybXNnKSB7CisgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndGxlbmd0aCcsIGVycm1zZykK KyAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICB9CisgICAgICB9 IGVsc2UgeworICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3RsZW5n dGgnKTsKKyAgICAgIH0KKworICAgICAgLy8gVmFsaWRhdGlvbiBmb3IgcHJl Y2lzaW9uIGZpZWxkCisgICAgICBpZiAoZGF0YS5pc19wcmVjaXNpb24gJiYg IV8uaXNVbmRlZmluZWQoZGF0YS5wcmVjaXNpb24pKSB7CisgICAgICAgIGlm IChkYXRhLnByZWNpc2lvbiA8IGRhdGEubWluX3ZhbCApCisgICAgICAgICAg ZXJybXNnID0gXygiUHJlY2lzaW9uIHNob3VsZCBub3QgYmUgbGVzcyB0aGFu ICIgKyBkYXRhLm1pbl92YWwpCisgICAgICAgIGlmIChkYXRhLnByZWNpc2lv biA+IGRhdGEubWF4X3ZhbCApCisgICAgICAgICAgZXJybXNnID0gXygiUHJl Y2lzaW9uIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuICIgKyBkYXRhLm1h eF92YWwpCisgICAgICAgIC8vIElmIHdlIGhhdmUgYW55IGVycm9yIHNldCB0 aGVuIHRocm93IGl0IHRvIHVzZXIKKyAgICAgICAgaWYoZXJybXNnKSB7Cisg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncHJlY2lzaW9uJywgZXJy bXNnKQorICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgIH0KKyAg ICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgn cHJlY2lzaW9uJyk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBudWxsOwor ICAgIH0KKyAgfSk7CisKKyAgdmFyIEVudW1Nb2RlbCA9IEJhY2tmb3JtLkVu dW1Nb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7 CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIGxhYmVsOiB1bmRlZmluZWQsCisg ICAgfSwKKyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ2xhYmVsJywgbGFi ZWw6ICd7eyBfKCdMYWJlbCcpIH19Jyx0eXBlOiAndGV4dCcsIGRpc2FibGVk OiBmYWxzZSwKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF85OScsIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgIHJl dHVybiBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdsYWJlbCcpKTsKKyAgICAgIH0K KyAgICB9XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICB2 YXIgZXJyID0ge30sCisgICAgICAgICAgZXJybXNnID0gbnVsbCwKKyAgICAg ICAgICBkYXRhID0gdGhpcy50b0pTT04oKTsKKworICAgICAgaWYgKF8uaXNV bmRlZmluZWQoZGF0YS5sYWJlbCkgfHwKKyAgICAgICAgXy5pc051bGwoZGF0 YS5sYWJlbCkgfHwKKyAgICAgICAgU3RyaW5nKGRhdGEubGFiZWwpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICBlcnJt c2cgPSBfKCJQbGVhc2Ugc3BlY2lmeSB0aGUgdmFsdWUgZm9yIGxhYmVsLiIp OworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2xhYmVsJywgZXJy bXNnKQorICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICB9IGVsc2Ug eworICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2xhYmVsJyk7Cisg ICAgICB9CisKKworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9KTsK KworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sndHlwZSddKSB7CisgICAgcGdB ZG1pbi5Ccm93c2VyLk5vZGVzWyd0eXBlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5l eHRlbmQoeworICAgICAgdHlwZTogJ3R5cGUnLAorICAgICAgbGFiZWw6ICd7 eyBfKCdUeXBlJykgfX0nLAorICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29s bC10eXBlJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVu ZHM6IHRydWUsCisgICAgICBwYXJlbnRfdHlwZTogWydzY2hlbWEnLCAnY2F0 YWxvZyddLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8q IEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAqLworICAg ICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVy bjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAg ICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAgbmFtZTog J2NyZWF0ZV90eXBlX29uX2NvbGwnLCBub2RlOiAnY29sbC10eXBlJywgbW9k dWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2Nv bnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJl bDogJ3t7IF8oJ1R5cGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLXR5cGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywg Y2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScK KyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV90eXBlJywg bm9kZTogJ3R5cGUnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGll czogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2Jq X3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywg cHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnVHlwZS4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tdHlwZScsIGRhdGE6IHth Y3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5h YmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1l OiAnY3JlYXRlX3R5cGUnLCBub2RlOiAnc2NoZW1hJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J1R5cGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLXR5cGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IGZh bHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAg IH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0sCisgICAgICBjYW5Ecm9wOiBw Z0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKKyAgICAg IGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNh bkNoaWxkRHJvcCwKKyAgICAgIGV4dF9mdW5jczogdW5kZWZpbmVkLAorICAg ICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7 CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZp bmVkLAorICAgICAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIGlz X3N5c190eXBlOiBmYWxzZSwKKyAgICAgICAgICB0eXB0eXBlOiB1bmRlZmlu ZWQKKyAgICAgICB9LAorCisgICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQor ICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewor ICAgICAgICAgIHZhciBpc05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsK KworICAgICAgICAgIGlmIChpc05ldykgeworICAgICAgICAgICAgdmFyIHVz ZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8u c2VydmVyLl9pZF0udXNlcjsKKyAgICAgICAgICAgIHZhciBzY2hlbWFJbmZv ID0gYXJncy5ub2RlX2luZm8uc2NoZW1hOworCisgICAgICAgICAgICB0aGlz LnNldCh7J3R5cGVvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7c2lsZW50OiB0 cnVlfSk7CisgICAgICAgICAgICB0aGlzLnNldCh7J3NjaGVtYSc6IHNjaGVt YUluZm8ubGFiZWx9LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQor ICAgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAg IH0sCisKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFt ZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2lu U2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxh YmVsOid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JyAsIG1vZGU6IFsncHJvcGVydGllcyddLCBkaXNh YmxlZDogdHJ1ZQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3R5cGVv d25lcicsIGxhYmVsOid7eyBfKCdPd25lcicpIH19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywK KyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycs ICdjcmVhdGUnLCAnZWRpdCddLCBub2RlOiAncm9sZScsCisgICAgICAgICAg ZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdzY2hlbWEnLCBsYWJlbDone3sgXygnU2NoZW1hJykgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsn Y3JlYXRlJywgJ2VkaXQnXSwgbm9kZTogJ3NjaGVtYScsCisgICAgICAgICAg ZGlzYWJsZWQ6ICdpblNjaGVtYScsIGZpbHRlcjogZnVuY3Rpb24oZCkgewor ICAgICAgICAgICAgLy8gSWYgc2NoZW1hIG5hbWUgc3RhcnQgd2l0aCBwZ18q IHRoZW4gd2UgbmVlZCB0byBleGNsdWRlIHRoZW0KKyAgICAgICAgICAgIGlm KGQgJiYgZC5sYWJlbC5tYXRjaCgvXnBnXy8pKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9LAorICAgICAg ICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbC5l eHRlbmQoeworICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpeworICAg ICAgICAgICAgLy8gSW5pdGlhbGl6ZSBwYXJlbnQncyByZW5kZXIgbWV0aG9k CisgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wu cHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisg ICAgICAgICAgICAvLyBTZXQgc2NoZW1hIGRlZmF1bHQgdmFsdWUgdG8gaXRz IHBhcmVudCBTY2hlbWEKKyAgICAgICAgICAgIGlmKHRoaXMubW9kZWwuaXNO ZXcoKSl7CisgICAgICAgICAgICB0aGlzLm1vZGVsLnNldCh7J3NjaGVtYSc6 IHRoaXMubW9kZWwubm9kZV9pbmZvLnNjaGVtYS5sYWJlbH0pOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAg ICB9CisgICAgICAgICAgfSkKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICd0eXB0eXBlJywgbGFiZWw6J3t7IF8oJ1R5cGUnKSB9fScsCisgICAgICAg ICAgbW9kZTogWydjcmVhdGUnLCdlZGl0J10sIGRpc2FibGVkOiAnaW5TY2hl bWFXaXRoTW9kZWxDaGVjaycsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwKKyAgICAgICAgICBzZWxlY3QyOiB7IHdpZHRoOiAiNTAlIiB9 LAorICAgICAgICAgIG9wdGlvbnM6IFsKKyAgICAgICAgICAgIHtsYWJlbDog IkNvbXBvc2l0ZSIsIHZhbHVlOiAiYyJ9LAorICAgICAgICAgICAge2xhYmVs OiAiRW51bWVyYXRpb24iLCB2YWx1ZTogImUifSwKKyAgICAgICAgICAgIHts YWJlbDogIkV4dGVybmFsIiwgdmFsdWU6ICJ4In0sCisgICAgICAgICAgICB7 bGFiZWw6ICJSYW5nZSIsIHZhbHVlOiAiciJ9LAorICAgICAgICAgIF0sCisg ICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJywK KyAgICAgICAgICAvLyBJZiBjcmVhdGUgbW9kZSB0aGVuIGJ5IGRlZmF1bHQg b3BlbiBjb21wb3NpdGUgdHlwZQorICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLlNlbGVjdDJDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICByZW5k ZXI6IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUg cGFyZW50J3MgcmVuZGVyIG1ldGhvZAorICAgICAgICAgICAgICBCYWNrZm9y bS5TZWxlY3QyQ29udHJvbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgIGlmKHRoaXMubW9kZWwuaXNO ZXcoKSkgeworICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KHsndHlw dHlwZSc6ICdjJ30pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IHJldHVybiB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29tcG9zaXRlJywgbGFiZWw6 ICd7eyBfKCdDb21wb3NpdGUgVHlwZScpIH19JywKKyAgICAgICAgICBtb2Rl bDogQ29tcG9zaXRlTW9kZWwsIGVkaXRhYmxlOiB0cnVlLCB0eXBlOiAnY29s bGVjdGlvbicsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9u JykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAg Y29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsIHVuaXF1ZUNvbCA6 IFsnbWVtYmVyX25hbWUnXSwKKyAgICAgICAgICBjYW5BZGQ6IHRydWUsIGNh bkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGlzYWJsZWQ6ICdpblNj aGVtYScsCisgICAgICAgICAgZGVwczogWyd0eXB0eXBlJ10sIGRlcHM6IFsn dHlwdHlwZSddLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgaWYgKG0uZ2V0KCd0eXB0eXBlJykgPT09ICdjJykgewor ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICB9CisgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnZW51bScsIGxhYmVsOiAne3sgXygnRW51bWVy YXRpb24gVHlwZScpIH19JywKKyAgICAgICAgICBtb2RlbDogRW51bU1vZGVs LCBlZGl0YWJsZTogdHJ1ZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAg ICAgIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgbW9kZTogWydl ZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGNhbkFkZDogdHJ1ZSwgY2Fu RWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUgaXQgaWYgaXQncyBpbiAnZWRp dCcgbW9kZQorICAgICAgICAgICAgICBpZiAobS5pc05ldygpKSB7CisgICAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9LAorICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWEnLCBkZXBzOiBbJ3R5cHR5cGUnXSwKKyAgICAgICAgICBjb250 cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywgdW5pcXVlQ29sIDogWyds YWJlbCddLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgcmV0dXJuIG0uZ2V0KCd0eXB0eXBlJykgPT09ICdlJzsKKyAg ICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIC8vIFdlIHdpbGwg ZGlzYWJsZSByYW5nZSB0eXBlIGNvbnRyb2wgaW4gZWRpdCBtb2RlCisgICAg ICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBtb2Rl OiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgdmlzaWJsZTogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIG0uZ2V0KCd0eXB0eXBl JykgPT09ICdyJzsKKyAgICAgICAgICB9LCBkZXBzOiBbJ3R5cHR5cGUnXSwg bGFiZWw6ICd7eyBfKCdSYW5nZSBUeXBlJykgfX0nLAorICAgICAgICAgIHNj aGVtYTpbeworICAgICAgICAgICAgaWQ6ICd0eXBuYW1lJywgbGFiZWw6J3t7 IF8oJ1N1Yi10eXBlJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgICAg ICBzZWxlY3QyOiB7IGFsbG93Q2xlYXI6IHRydWUsIHBsYWNlaG9sZGVyOiAi Iiwgd2lkdGg6ICIxMDAlIiB9LAorICAgICAgICAgICAgdXJsOiAnZ2V0X3N0 eXBlcycsIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2Ny ZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICBncm91cDogJ3t7IF8oJ1Jh bmdlIFR5cGUnKSB9fScsIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxD aGVjaycsCisgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQpewor ICAgICAgICAgICAgICB0aGlzLm1vZGVsLnN1YnR5cGVzID0gIGQ7CisgICAg ICAgICAgICAgIHJldHVybiBkOworICAgICAgICAgICAgfQorICAgICAgICAg IH0seworICAgICAgICAgICAgICBpZDogJ29wY25hbWUnLCBsYWJlbDone3sg XygnU3ViLXR5cGUgT3BDbGFzcycpIH19JywgY2VsbDogJ3N0cmluZycsCisg ICAgICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAn ZWRpdCddLCBncm91cDogJ3t7IF8oJ1JhbmdlIFR5cGUnKSB9fScsCisgICAg ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycs IGRlcHM6IFsndHlwbmFtZSddLAorICAgICAgICAgICAgICBjb250cm9sOiAn c2VsZWN0Jywgb3B0aW9uczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgdmFyIGxfdHlwbmFtZSA9IHRoaXMubW9kZWwuZ2V0KCd0eXBuYW1lJyks CisgICAgICAgICAgICAgICAgICBzZWxmID0gdGhpcywKKyAgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IFtdOworICAgICAgICAgICAgICAgIGlmKCFfLmlz VW5kZWZpbmVkKGxfdHlwbmFtZSkgJiYgbF90eXBuYW1lICE9ICcnKQorICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHZhciBub2RlID0g dGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICAg ICAgICBfdXJsID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAg ICAgICAgICAgICAgIG5vZGUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBudWxsLCAnZ2V0X3N1Ym9wY2xhc3MnLCB0aGlzLmZpZWxkLmdldCgn bm9kZV9kYXRhJyksIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMuZmllbGQuZ2V0KCdub2RlX2luZm8nKQorICAgICAgICAgICAg ICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICQuYWpheCh7CisgICAg ICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgdXJsOiBfdXJsLAorICAgICAgICAgICAgICAgICAgICBjYWNoZTog ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsndHlwbmFtZScg OiBsX3R5cG5hbWV9LAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBm dW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHQg PSByZXMuZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcigncGdhZG1pbjp2aWV3OmZl dGNoOmVycm9yJywgc2VsZi5tb2RlbCwgc2VsZi5maWVsZCk7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9LHsKKyAgICAgICAgICAgICAgaWQ6ICdjb2xsbmFtZScsIGxh YmVsOid7eyBfKCdDb2xsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgICAgICBncm91cDog J3t7IF8oJ1JhbmdlIFR5cGUnKSB9fScsCisgICAgICAgICAgICAgIGRlcHM6 IFsndHlwbmFtZSddLCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1 cmw6ICdnZXRfY29sbGF0aW9ucycsCisgICAgICAgICAgICAgIHNlbGVjdDI6 IHsgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6ICIiLCB3aWR0aDog IjEwMCUiIH0sCisgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdj YXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBEaXNiYWxlIGluIGVkaXQg bW9kZQorICAgICAgICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgICAgICAvLyBUbyBjaGVjayBpZiBjb2xsYXRpb24g aXMgYWxsb3dlZD8KKyAgICAgICAgICAgICAgICB2YXIgb2Zfc3VidHlwZSA9 IG0uZ2V0KCd0eXBuYW1lJyksCisgICAgICAgICAgICAgICAgICBpc19jb2xs YXRlID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgIGlmKCFfLmlzVW5k ZWZpbmVkKG9mX3N1YnR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAvLyBp dGVyYXRpbmcgb3ZlciBhbGwgdGhlIHR5cGVzCisgICAgICAgICAgICAgICAg ICBfLmVhY2gobS5zdWJ0eXBlcywgZnVuY3Rpb24ocykgeworICAgICAgICAg ICAgICAgICAgICAvLyBpZiBzdWJ0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBj b21ib2JveCBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAgIGlmICggb2Zf c3VidHlwZSA9PT0gcy5sYWJlbCApIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIC8vIGlmIGNvbGxhdGlvbiBpcyBhbGxvd2VkIGZvciBzZWxlY3RlZCBz dWJ0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGVuYWJs ZSBpdCBlbHNlIGRpc2FibGUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAg IGlzX2NvbGxhdGUgPSBzLmlzX2NvbGxhdGU7CisgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAvLyBJZiBpc19jb2xsYXRlIGlzIHRydWUg dGhlbiBkbyBub3QgZGlzYWJsZQorICAgICAgICAgICAgICAgIHJldHVybiBp c19jb2xsYXRlID8gZmFsc2UgOiB0cnVlOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgaWQ6ICdybmdjYW5vbmlj YWwnLCBsYWJlbDone3sgXygnQ2Fub25pY2FsIGZ1bmN0aW9uJykgfX0nLCBj ZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAg ICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSYW5nZSBUeXBlJykgfX0nLAorICAg ICAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2sn LCBkZXBzOiBbJ25hbWUnLCAndHlwbmFtZSddLAorICAgICAgICAgICAgICBj b250cm9sOiAnc2VsZWN0Jywgb3B0aW9uczogZnVuY3Rpb24oKSB7CisgICAg ICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLm1vZGVsLmdldCgnbmFtZScp LAorICAgICAgICAgICAgICAgICBzZWxmID0gdGhpcywKKyAgICAgICAgICAg ICAgICAgcmVzdWx0ID0gW107CisKKyAgICAgICAgICAgICAgICBpZighXy5p c1VuZGVmaW5lZChuYW1lKSAmJiBuYW1lICE9ICcnKQorICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5maWVs ZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICAgICAgICBfdXJs ID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAg ICAgIG5vZGUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs LCAnZ2V0X2Nhbm9uaWNhbCcsIHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEn KSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5m aWVsZC5nZXQoJ25vZGVfaW5mbycpCisgICAgICAgICAgICAgICAgICAgIF0p OworICAgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAg ICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICB1cmw6 IF91cmwsCisgICAgICAgICAgICAgICAgICAgIGNhY2hlOiBmYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgZGF0YTogeyJuYW1lIiA6IG5hbWV9LAorICAg ICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAg ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZGF0YTsKKyAgICAg ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3I6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9k ZWwudHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoOmVycm9yJywKKyAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1vZGVsLCBzZWxmLmZpZWxkKTsKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHJldHVybiByZXN1 bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9LHsKKyAgICAgICAg ICAgICAgaWQ6ICdybmdzdWJkaWZmJywgbGFiZWw6J3t7IF8oJ1N1Yi1UeXBl IGRpZmYgZnVuY3Rpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdj cmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgICAgICBncm91cDogJ3t7IF8o J1JhbmdlIFR5cGUnKSB9fScsCisgICAgICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsIGRlcHM6IFsnb3BjbmFtZSddLAor ICAgICAgICAgICAgICBjb250cm9sOiAnc2VsZWN0Jywgb3B0aW9uczogZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIGxfdHlwbmFtZSA9IHRo aXMubW9kZWwuZ2V0KCd0eXBuYW1lJyksCisgICAgICAgICAgICAgICAgICBs X29wY25hbWUgPSB0aGlzLm1vZGVsLmdldCgnb3BjbmFtZScpLAorICAgICAg ICAgICAgICAgICAgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICBy ZXN1bHQgPSBbXTsKKworICAgICAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZp bmVkKGxfdHlwbmFtZSkgJiYgbF90eXBuYW1lICE9ICcnICYmCisgICAgICAg ICAgICAgICAgIV8uaXNVbmRlZmluZWQobF9vcGNuYW1lKSAmJiBsX29wY25h bWUgIT0gJycpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gdGhp cy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICAgICAg ICBfdXJsID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAg ICAgICAgICAgIG5vZGUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudWxsLCAnZ2V0X3N0eXBlZGlmZicsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ25vZGVfZGF0YScpLCBmYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmdldCgn bm9kZV9pbmZvJykKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAg ICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgICBhc3lu YzogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHVybDogX3VybCwKKyAg ICAgICAgICAgICAgICAgICAgY2FjaGU6IGZhbHNlLAorICAgICAgICAgICAg ICAgICAgICBkYXRhOiB7J3R5cG5hbWUnIDogbF90eXBuYW1lLCAnb3BjbmFt ZSc6IGxfb3BjbmFtZX0sCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6 IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5tb2RlbC50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6 ZmV0Y2g6ZXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9k ZWwsIHNlbGYuZmllbGQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9XQorICAgICAgICB9LHsKKyAgICAgICAgICB0eXBlOiAnbmVzdGVk JywgY29udHJvbDogJ3RhYicsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicp IH19JywKKyAgICAgICAgICBsYWJlbDogJ3t7IF8oJ0V4dGVybmFsIFR5cGUn KSB9fScsIGRlcHM6IFsndHlwdHlwZSddLAorICAgICAgICAgIG1vZGU6IFsn Y3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICByZXR1cm4gbS5nZXQoJ3R5cHR5cGUnKSA9 PT0gJ3gnOworICAgICAgICAgIH0sCisgICAgICAgICAgc2NoZW1hOlt7Cisg ICAgICAgICAgICBpZDogJ3R5cGlucHV0JywgbGFiZWw6J3t7IF8oJ0lucHV0 IGZ1bmN0aW9uJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N0cmluZycs dHlwZTogJ3RleHQnLAorICAgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiAnUmVxdWlyZWQnLAorICAg ICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJywK KyAgICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVy bDogJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAorICAgICAgICAgICAgdHJh bnNmb3JtOiAnZXh0ZXJuYWxfZnVuY19jb21ibycsCisgICAgICAgICAgICBz ZWxlY3QyOiB7IGFsbG93Q2xlYXI6IHRydWUsIHBsYWNlaG9sZGVyOiAiIiwg d2lkdGg6ICIxMDAlIiB9CisgICAgICAgICAgfSx7CisgICAgICAgICAgICBp ZDogJ3R5cG91dHB1dCcsIGxhYmVsOid7eyBfKCdPdXRwdXQgZnVuY3Rpb24n KSB9fScsCisgICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sCisgICAgICAgICAgICBncm91cDogJ1JlcXVpcmVkJywK KyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVj aycKKyAgICAgICAgICAgICxjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMn LCB1cmw6ICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zJywKKyAgICAgICAgICAg IHRyYW5zZm9ybTogJ2V4dGVybmFsX2Z1bmNfY29tYm8nLAorICAgICAgICAg ICAgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiB0cnVlLCBwbGFjZWhvbGRlcjog IiIsIHdpZHRoOiAiMTAwJSIgfQorICAgICAgICAgIH0seworICAgICAgICAg ICAgaWQ6ICd0eXByZWNlaXZlJywgbGFiZWw6J3t7IF8oJ1JlY2VpdmUgZnVu Y3Rpb24nKSB9fScsCisgICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywgdHlw ZTogJ3RleHQnLCBncm91cDogJ09wdGlvbmFsLTEnLAorICAgICAgICAgICAg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAg ICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snCisg ICAgICAgICAgICAsY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJs OiAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucycsCisgICAgICAgICAgICB0cmFu c2Zvcm06ICdleHRlcm5hbF9mdW5jX2NvbWJvJywKKyAgICAgICAgICAgIHNl bGVjdDI6IHsgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6ICIiLCB3 aWR0aDogIjEwMCUiIH0KKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlk OiAndHlwc2VuZCcsIGxhYmVsOid7eyBfKCdTZW5kIGZ1bmN0aW9uJykgfX0n LAorICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAnT3B0aW9u YWwtMScsCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgICAgZGlz YWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJworICAgICAgICAgICAg LGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDogJ2dldF9leHRl cm5hbF9mdW5jdGlvbnMnLAorICAgICAgICAgICAgdHJhbnNmb3JtOiAnZXh0 ZXJuYWxfZnVuY19jb21ibycsCisgICAgICAgICAgICBzZWxlY3QyOiB7IGFs bG93Q2xlYXI6IHRydWUsIHBsYWNlaG9sZGVyOiAiIiwgd2lkdGg6ICIxMDAl IiB9CisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ3R5cG1vZGlu JywgbGFiZWw6J3t7IF8oJ1R5cG1vZCBpbiBmdW5jdGlvbicpIH19JywKKyAg ICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCB0eXBlOiAndGV4dCcsCisgICAg ICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwgZ3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAgICAgIGRpc2FibGVk OiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsCisgICAgICAgICAgICBjb250 cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdnZXRfZXh0ZXJuYWxf ZnVuY3Rpb25zJywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsgYWxsb3dDbGVh cjogdHJ1ZSwgcGxhY2Vob2xkZXI6ICIiLCB3aWR0aDogIjEwMCUiIH0sCisg ICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAg ICAgICAgdmFyIHJlc3VsdCA9IFt7bGFiZWwgOiIiLCB2YWx1ZSA6ICIifV07 CisgICAgICAgICAgICAgIF8uZWFjaChkLCBmdW5jdGlvbihpdGVtKSB7Cisg ICAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNv bWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICBpZiAo IGl0ZW0uY2J0eXBlID09PSAndHlwbW9kaW4nIHx8IGl0ZW0uY2J0eXBlID09 PSAnYWxsJykgeworICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0p OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICB9LHsKKyAgICAgICAgICAgIGlkOiAndHlwbW9kb3V0JywgbGFiZWw6J3t7 IF8oJ1R5cG1vZCBvdXQgZnVuY3Rpb24nKSB9fScsCisgICAgICAgICAgICBj ZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1h V2l0aE1vZGVsQ2hlY2snLAorICAgICAgICAgICAgY29udHJvbDogJ25vZGUt YWpheC1vcHRpb25zJywgdXJsOiAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucycs CisgICAgICAgICAgICBzZWxlY3QyOiB7IGFsbG93Q2xlYXI6IHRydWUsIHBs YWNlaG9sZGVyOiAiIiwgd2lkdGg6ICIxMDAlIiB9LAorICAgICAgICAgICAg dHJhbnNmb3JtOiBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAgIHZhciBy ZXN1bHQgPSBbe2xhYmVsIDoiIiwgdmFsdWUgOiAiIn1dOworICAgICAgICAg ICAgICBfLmVhY2goZCwgZnVuY3Rpb24oaXRlbSkgeworICAgICAgICAgICAg ICAvLyBpZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRj aGVzIGluIG9wdGlvbnMKKyAgICAgICAgICAgICAgaWYgKCBpdGVtLmNidHlw ZSA9PT0gJ3R5cG1vZG91dCcgfHwgaXRlbS5jYnR5cGUgPT09ICdhbGwnKSB7 CisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7CisgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICByZXR1 cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgIH0seworICAg ICAgICAgICAgaWQ6ICd0eXBsZW4nLCBsYWJlbDone3sgXygnSW50ZXJuYWwg bGVuZ3RoJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ2ludGVnZXInLCBn cm91cDogJ09wdGlvbmFsLTEnLAorICAgICAgICAgICAgdHlwZTogJ2ludCcs IG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAg ICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJwor ICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd2YXJpYWJsZScsIGxh YmVsOid7eyBfKCdWYXJpYWJsZT8nKSB9fScsIGNlbGw6ICdzd2l0Y2gnLAor ICAgICAgICAgICAgZ3JvdXA6ICdPcHRpb25hbC0xJywgdHlwZTogJ3N3aXRj aCcsCisgICAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnXSwgb3B0 aW9uczogc3dpdGNoT3B0aW9ucywKKyAgICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWFXaXRoTW9kZWxDaGVjaycKKyAgICAgICAgICB9LHsKKyAgICAg ICAgICAgIGlkOiAndHlwZGVmYXVsdCcsIGxhYmVsOid7eyBfKCdEZWZhdWx0 PycpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCBncm91cDog J09wdGlvbmFsLTEnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2Rl OiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywnZWRpdCddLAorICAgICAgICAg ICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJworICAgICAg ICAgIH0seworICAgICAgICAgICAgaWQ6ICd0eXBhbmFseXplJywgbGFiZWw6 J3t7IF8oJ0FuYWx5emUgZnVuY3Rpb24nKSB9fScsCisgICAgICAgICAgICBj ZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsJ2VkaXQnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFX aXRoTW9kZWxDaGVjaycKKyAgICAgICAgICAgICxjb250cm9sOiAnbm9kZS1h amF4LW9wdGlvbnMnLCB1cmw6ICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zJywK KyAgICAgICAgICAgIHRyYW5zZm9ybTogJ2V4dGVybmFsX2Z1bmNfY29tYm8n LAorICAgICAgICAgICAgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiB0cnVlLCBw bGFjZWhvbGRlcjogIiIsIHdpZHRoOiAiMTAwJSIgfQorICAgICAgICAgIH0s eworICAgICAgICAgICAgaWQ6ICd0eXBjYXRlZ29yeScsIGxhYmVsOid7eyBf KCdDYXRlZ29yeSB0eXBlJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N0 cmluZycsIGdyb3VwOiAnT3B0aW9uYWwtMScsCisgICAgICAgICAgICB0eXBl OiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCdlZGl0 J10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVs Q2hlY2snLCBjb250cm9sOiAnc2VsZWN0MicsCisgICAgICAgICAgICBzZWxl Y3QyOiB7IGFsbG93Q2xlYXI6IHRydWUsIHBsYWNlaG9sZGVyOiAiIiwgd2lk dGg6ICIxMDAlIiB9LAorICAgICAgICAgICAgb3B0aW9uczogWworICAgICAg ICAgICAgICB7bGFiZWwgOiIiLCB2YWx1ZSA6ICIifSwKKyAgICAgICAgICAg ICAge2xhYmVsIDoiQXJyYXkgdHlwZXMiLCB2YWx1ZSA6ICJBIn0sCisgICAg ICAgICAgICAgIHtsYWJlbCA6IkJvb2xlYW4gdHlwZXMiLCB2YWx1ZSA6ICJC In0sCisgICAgICAgICAgICAgIHtsYWJlbCA6IkNvbXBvc2l0ZSB0eXBlcyIs IHZhbHVlIDogIkMifSwKKyAgICAgICAgICAgICAge2xhYmVsIDoiRGF0ZS90 aW1lIHR5cGVzIiwgdmFsdWUgOiAiRCJ9LAorICAgICAgICAgICAgICB7bGFi ZWwgOiJFbnVtIHR5cGVzIiwgdmFsdWUgOiAiRSJ9LAorICAgICAgICAgICAg ICB7bGFiZWwgOiJHZW9tZXRyaWMgdHlwZXMiLCB2YWx1ZSA6ICJHIn0sCisg ICAgICAgICAgICAgIHtsYWJlbCA6Ik5ldHdvcmsgYWRkcmVzcyB0eXBlcyIs IHZhbHVlIDogIkkifSwKKyAgICAgICAgICAgICAge2xhYmVsIDoiTnVtZXJp YyB0eXBlcyIsIHZhbHVlIDogIk4ifSwKKyAgICAgICAgICAgICAge2xhYmVs IDoiUHNldWRvLXR5cGVzIiwgdmFsdWUgOiAiUCJ9LAorICAgICAgICAgICAg ICB7bGFiZWwgOiJTdHJpbmcgdHlwZXMiLCB2YWx1ZSA6ICJTIn0sCisgICAg ICAgICAgICAgIHtsYWJlbCA6IlRpbWVzcGFuIHR5cGVzIiwgdmFsdWUgOiAi VCJ9LAorICAgICAgICAgICAgICB7bGFiZWwgOiJVc2VyLWRlZmluZWQgdHlw ZXMiLCB2YWx1ZSA6ICJVIn0sCisgICAgICAgICAgICAgIHtsYWJlbCA6IkJp dC1zdHJpbmcgdHlwZXMiLCB2YWx1ZSA6ICJWIn0sCisgICAgICAgICAgICAg IHtsYWJlbCA6InVua25vd24gdHlwZSIsIHZhbHVlIDogIlgifQorICAgICAg ICAgICAgXQorICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd0eXBp c3ByZWZlcnJlZCcsIGxhYmVsOid7eyBfKCdQcmVmZXJyZWQ/JykgfX0nLCBj ZWxsOiAnc3dpdGNoJywKKyAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywnZWRpdCddLAorICAgICAg ICAgICAgb3B0aW9uczogc3dpdGNoT3B0aW9ucywgZGlzYWJsZWQ6ICdpblNj aGVtYVdpdGhNb2RlbENoZWNrJywKKyAgICAgICAgICAgIGdyb3VwOiAnT3B0 aW9uYWwtMScKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnZWxl bWVudCcsIGxhYmVsOid7eyBfKCdFbGVtZW50IHR5cGUnKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1v cHRpb25zJywgZ3JvdXA6ICdPcHRpb25hbC0yJywKKyAgICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdl ZGl0J10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1v ZGVsQ2hlY2snLCB1cmw6ICdnZXRfdHlwZXMnCisgICAgICAgICAgfSx7Cisg ICAgICAgICAgICBpZDogJ3R5cGRlbGltJywgbGFiZWw6J3t7IF8oJ0RlbGlt aXRlcicpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgICB0eXBl OiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRp dCddLAorICAgICAgICAgICAgZ3JvdXA6ICdPcHRpb25hbC0yJywgZGlzYWJs ZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJworICAgICAgICAgIH0sewor ICAgICAgICAgICAgaWQ6ICd0eXBhbGlnbicsIGxhYmVsOid7eyBfKCdBbGln bm1lbnQgdHlwZScpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcn LCBncm91cDogJ09wdGlvbmFsLTInLAorICAgICAgICAgICAgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwK KyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVj aycsIGNvbnRyb2w6ICdzZWxlY3QyJywKKyAgICAgICAgICAgIHNlbGVjdDI6 IHsgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6ICIiLCB3aWR0aDog IjEwMCUiIH0sCisgICAgICAgICAgICBvcHRpb25zOiBbCisgICAgICAgICAg ICAgIHtsYWJlbCA6IiIsIHZhbHVlIDogIiJ9LAorICAgICAgICAgICAgICB7 bGFiZWw6ICJjaGFyIiwgdmFsdWU6ICJjIn0sCisgICAgICAgICAgICAgIHts YWJlbDogImludDIiLCB2YWx1ZTogInMifSwKKyAgICAgICAgICAgICAge2xh YmVsOiAiaW40IiwgdmFsdWU6ICJpIn0sCisgICAgICAgICAgICAgIHtsYWJl bDogImRvdWJsZSIsIHZhbHVlOiAiZCJ9LAorICAgICAgICAgICAgXQorICAg ICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd0eXBzdG9yYWdlJywgbGFi ZWw6J3t7IF8oJ1N0b3JhZ2UgdHlwZScpIH19JywKKyAgICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdl ZGl0J10sCisgICAgICAgICAgICBncm91cDogJ09wdGlvbmFsLTInLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFX aXRoTW9kZWxDaGVjaycsIGNvbnRyb2w6ICdzZWxlY3QyJywKKyAgICAgICAg ICAgIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6 ICIiLCB3aWR0aDogIjEwMCUiIH0sCisgICAgICAgICAgICBvcHRpb25zOiBb CisgICAgICAgICAgICAgIHtsYWJlbCA6IiIsIHZhbHVlIDogIiJ9LAorICAg ICAgICAgICAgICB7bGFiZWw6ICJQTEFJTiIsIHZhbHVlOiAicCJ9LAorICAg ICAgICAgICAgICB7bGFiZWw6ICJNQUlOIiwgdmFsdWU6ICJlIn0sCisgICAg ICAgICAgICAgIHtsYWJlbDogIkVYVEVSTkFMIiwgdmFsdWU6ICJtIn0sCisg ICAgICAgICAgICAgIHtsYWJlbDogIkVYVEVOREVEIiwgdmFsdWU6ICJ4In0s CisgICAgICAgICAgICAgXQorICAgICAgICAgIH0seworICAgICAgICAgICAg aWQ6ICd0eXBieXZhbCcsIGxhYmVsOid7eyBfKCdQYXNzZWQgYnkgVmFsdWU/ JykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N3aXRjaCcsIG9wdGlvbnM6 IHN3aXRjaE9wdGlvbnMsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAg ICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBn cm91cDogJ09wdGlvbmFsLTInLAorICAgICAgICAgIH0seworICAgICAgICAg ICAgaWQ6ICdpc19jb2xsYXRhYmxlJywgbGFiZWw6J3t7IF8oJ0NvbGxhdGFi bGU/JykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N3aXRjaCcsICBtaW5f dmVyc2lvbjogOTAxMDAsIGdyb3VwOiAnT3B0aW9uYWwtMicsCisgICAgICAg ICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2Ny ZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICBvcHRpb25zOiBzd2l0Y2hP cHRpb25zLCBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snCisg ICAgICAgICAgLy8gRW5kIG9mIGV4dGVuc2lvbiB0YWIKKyAgICAgICAgfV0K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdhbGlhcycsIGxhYmVsOid7 eyBfKCdBbGlhcycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAg dHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAg ICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3R5cGVfYWNsJywgbGFiZWw6J3t7IF8oJ1ByaXZpbGVnZXMnKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg bW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3VwOiAne3sgXygnU2VjdXJpdHkn KSB9fScsCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdtZW1iZXJfbGlzdCcsIGxhYmVsOid7 eyBfKCdNZW1iZXJzJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDog J3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgZGlzYWJsZWQ6 ICdpblNjaGVtYScsIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgIGlmKG0uZ2V0KCd0eXB0eXBlJykgPT09ICdjJykgeworICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnZW51bV9saXN0JywgbGFiZWw6J3t7IF8oJ0xhYmVscycp IH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0 aW9uJykgfX0nLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLCB2 aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZihtLmdldCgn dHlwdHlwZScpID09PSAnZScpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2lz X3N5c190eXBlJywgbGFiZWw6J3t7IF8oJ1N5c3RlbSB0eXBlPycpIH19Jywg Y2VsbDogJ3N3aXRjaCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1v ZGU6IFsncHJvcGVydGllcyddLCBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLAor ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29t bWVudCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTog J211bHRpbGluZScsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAn ZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAndHlwYWNsJywgbGFiZWw6ICdQcml2 aWxlZ2VzJywgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3Vw OiAne3sgXygnU2VjdXJpdHknKSB9fScsIGNvbnRyb2w6ICd1bmlxdWUtY29s LWNvbGxlY3Rpb24nLAorICAgICAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dz ZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKHtwcml2aWxlZ2Vz OiBbJ1UnXX0pLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAg dW5pcXVlQ29sIDogWydncmFudGVlJ10KKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5IExh YmVscycpIH19JywKKyAgICAgICAgICBtb2RlbDogU2VjdXJpdHlNb2RlbCwg ZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAg ICAgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19JywgbW9kZTogWydlZGl0 JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1pbl92ZXJzaW9uOiA5MDEwMCwg Y2FuQWRkOiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5E ZWxldGU6IHRydWUsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24n CisgICAgICAgIH1dLAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7 CisgICAgICAgIC8vIFZhbGlkYXRpb24gY29kZSBmb3IgcmVxdWlyZWQgZmll bGRzCisgICAgICAgICAgdmFyIGNoYW5nZWRBdHRycyA9IHRoaXMuc2Vzc0F0 dHJzLAorICAgICAgICAgICAgICBtc2cgPSB1bmRlZmluZWQ7CisKKyAgICAg ICAgICBpZiAoXy5oYXMoY2hhbmdlZEF0dHJzLCAnbmFtZScpICYmCisgICAg ICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25hbWUnKSkK KyAgICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpKSB7CisgICAgICAgICAg ICBtc2cgPSAne3sgXygnTmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cp OworICAgICAgICAgIH0gZWxzZSBpZiAoXy5oYXMoY2hhbmdlZEF0dHJzLCAn c2NoZW1hJykgJiYKKyAgICAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZCh0 aGlzLmdldCgnc2NoZW1hJykpCisgICAgICAgICAgICAgIHx8IFN0cmluZyh0 aGlzLmdldCgnc2NoZW1hJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpKSB7CisgICAgICAgICAgICBtc2cgPSAne3sgXygnU2NoZW1hIGNh biBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnNldCgnc2NoZW1hJywgbXNnKTsKKyAgICAgICAgICB9IGVsc2Ug aWYgKF8uaGFzKGNoYW5nZWRBdHRycywgJ3R5cHR5cGUnKSAmJgorICAgICAg ICAgICAgICAgIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCd0eXB0eXBlJykp CisgICAgICAgICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgeworICAgICAgICAg ICAgbXNnID0gJ3t7IF8oJ1R5cGUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCd0eXB0eXBlJywg bXNnKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KCd0eXB0eXBl JykgPT0gJ3InICYmCisgICAgICAgICAgICAgICAgXy5oYXMoY2hhbmdlZEF0 dHJzLCAndHlwbmFtZScpCisgICAgICAgICAgICAgICYmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCd0eXBuYW1lJykpCisgICAgICAgICAgICAgIHx8IFN0 cmluZyh0aGlzLmdldCgndHlwbmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSkgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1N1 YnR5cGUgTmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3R5cG5hbWUnLCBtc2cpOworICAg ICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ3R5cHR5cGUnKSA9PSAneCcg JiYKKyAgICAgICAgICAgICAgICBfLmhhcyhjaGFuZ2VkQXR0cnMsICd0eXBp bnB1dCcpCisgICAgICAgICAgICAgICYmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCd0eXBpbnB1dCcpKQorICAgICAgICAgICAgICB8fCBTdHJpbmcodGhp cy5nZXQoJ3R5cGlucHV0JykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpKSB7CisgICAgICAgICAgICBtc2cgPSAne3sgXygnSW5wdXQgZnVu Y3Rpb24gY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCd0eXBpbnB1dCcsIG1zZyk7CisgICAgICAg ICAgfSBlbHNlIGlmICh0aGlzLmdldCgndHlwdHlwZScpID09ICd4JyAmJgor ICAgICAgICAgICAgICAgIF8uaGFzKGNoYW5nZWRBdHRycywgJ3R5cG91dHB1 dCcpCisgICAgICAgICAgICAgICYmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0 KCd0eXBvdXRwdXQnKSkKKyAgICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMu Z2V0KCd0eXBvdXRwdXQnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdPdXRwdXQgZnVu Y3Rpb24gY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCd0eXBvdXRwdXQnLCBtc2cpOworICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ25hbWUnKTsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnc2NoZW1hJyk7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ3R5cHR5cGUnKTsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51 bnNldCgndHlwbmFtZScpOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnVuc2V0KCd0eXBpbnB1dCcpOworICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnVuc2V0KCd0eXBvdXRwdXQnKTsKKyAgICAgICAgICB9CisgICAgICAg ICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdp bGwgZGlzYWJsZSBldmVyeXRoaW5nIGlmIHdlIGFyZSB1bmRlciBjYXRhbG9n IG5vZGUKKyAgICAgICAgaW5TY2hlbWE6IGZ1bmN0aW9uKCkgeworICAgICAg ICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnY2F0YWxvZycgaW4gdGhpcy5u b2RlX2luZm8pCisgICAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgfSwKKyAgICAgICAgLy8gV2Ugd2lsbCBjaGVjayBpZiB3ZSBhcmUg dW5kZXIgc2NoZW1hIG5vZGUgJiBpbiAnY3JlYXRlJyBtb2RlCisgICAgICAg IGluU2NoZW1hV2l0aE1vZGVsQ2hlY2s6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ3NjaGVtYScgaW4gdGhpcy5u b2RlX2luZm8pCisgICAgICAgICAgeworICAgICAgICAgICAgLy8gV2Ugd2ls bCBkaXNiYWxlIGNvbnRyb2wgaWYgaXQncyBpbiAnZWRpdCcgbW9kZQorICAg ICAgICAgICAgaWYgKG0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIH0K KyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAg Ly8gV2Ugd2FudCB0byBlbmFibGUgb25seSBpbiBlZGl0IG1vZGUKKyAgICAg ICAgaW5TY2hlbWFXaXRoRWRpdE1vZGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ3NjaGVtYScgaW4gdGhpcy5u b2RlX2luZm8pCisgICAgICAgICAgeworICAgICAgICAgICAgLy8gV2Ugd2ls bCBkaXNiYWxlIGNvbnRyb2wgaWYgaXQncyBpbiAnZWRpdCcgbW9kZQorICAg ICAgICAgICAgaWYgKG0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIH0K KyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAg Ly8gRnVuY3Rpb24gd2lsbCBoZWxwIHVzIHRvIGZpbGwgY29tYm9ib3gKKyAg ICAgICAgZXh0ZXJuYWxfZnVuY19jb21ibzogZnVuY3Rpb24oZCkgeworICAg ICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgICAgIF8uZWFjaChk LCBmdW5jdGlvbihpdGVtKSB7CisgICAgICAgICAgICAgLy8gaWYgdHlwZSBm cm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0Y2hlcyBpbiBvcHRpb25z CisgICAgICAgICAgICAgaWYgKCBpdGVtLmNidHlwZSA9PSAnYWxsJyApIHsK KyAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pOworICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgfSk7CisgICAgICAgICAgIHJldHVybiByZXN1 bHQ7CisgICAgICAgIH0KKyAgICAgIH0pLAorICAgICAgY2FuQ3JlYXRlOiBm dW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgeworICAgICAgICAgIC8v SWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRl IG1lbnUKKyAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZh bHNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICB2 YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRh OworICAgICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNr IHBhcmVudCBub2RlCisgICAgICAgICAgd2hpbGUgKGkpIHsKKyAgICAgICAg ICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3Jl YXRlIHRhYmxlCisgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCisgICAgICAgICAgICAgIHJldHVybiB0cnVl OworCisgICAgICAgICAgICBpZiAoJ2NvbGwtdHlwZScgPT0gZC5fdHlwZSkg eworICAgICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQg b2YgY2F0YWxvZworICAgICAgICAgICAgICBwcmV2X2kgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICAgICAgcHJl dl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKKyAg ICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAg ICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7CisgICAgICAgICAg fQorICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8g YWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgIH0KKyAgfSk7CisgIH0KKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1sn dHlwZSddOworfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsLzkuMV9wbHVzL2FjbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90 ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvYWNsLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGVhYjI1Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsLzkuMV9wbHVzL2FjbC5zcWwKQEAgLTAsMCArMSwyNiBAQAorU0VMRUNU ICd0eXBhY2wnIGFzIGRlZnR5cGUsIENPQUxFU0NFKGd0LnJvbG5hbWUsICdw dWJsaWMnKSBncmFudGVlLCBnLnJvbG5hbWUgZ3JhbnRvciwgYXJyYXlfYWdn KHByaXZpbGVnZV90eXBlKSBhcyBwcml2aWxlZ2VzLCBhcnJheV9hZ2coaXNf Z3JhbnRhYmxlKSBhcyBncmFudGFibGUKK0ZST00KKyAgICAoU0VMRUNUCisg ICAgICAgIGQuZ3JhbnRlZSwgZC5ncmFudG9yLCBkLmlzX2dyYW50YWJsZSwK KyAgICAgICAgQ0FTRSBkLnByaXZpbGVnZV90eXBlCisgICAgICAgIFdIRU4g J1VTQUdFJyBUSEVOICdVJworICAgICAgICBFTFNFICdVTktOT1dOJworICAg ICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAg IChTRUxFQ1QgdC50eXBhY2wKKyAgICAgICAgICAgIEZST00gcGdfdHlwZSB0 CisgICAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdHlwZSBlIE9OIGUu b2lkPXQudHlwZWxlbQorICAgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBn X2NsYXNzIGN0IE9OIGN0Lm9pZD10LnR5cHJlbGlkIEFORCBjdC5yZWxraW5k IDw+ICdjJworICAgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2Ny aXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9pZCBBTkQgZGVzLmNsYXNz b2lkPSdwZ190eXBlJzo6cmVnY2xhc3MpCisgICAgICAgICAgICBXSEVSRSB0 LnR5cHR5cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUgTk9UIExJS0UgRSdcXF8l JyBBTkQgdC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCisgICAgICAg ICAgICB7JSBpZiB0aWQgJX0KKyAgICAgICAgICAgIEFORCB0Lm9pZCA9IHt7 dGlkfX06Om9pZAorICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAg KSBhY2wsCisgICAgICAgIChTRUxFQ1QgKGQpLmdyYW50ZWUgQVMgZ3JhbnRl ZSwgKGQpLmdyYW50b3IgQVMgZ3JhbnRvciwgKGQpLmlzX2dyYW50YWJsZQor ICAgICAgICAgICAgQVMgaXNfZ3JhbnRhYmxlLCAoZCkucHJpdmlsZWdlX3R5 cGUgQVMgcHJpdmlsZWdlX3R5cGUgRlJPTSAoU0VMRUNUCisgICAgICAgICAg ICBhY2xleHBsb2RlKHQudHlwYWNsKSBhcyBkIEZST00gcGdfdHlwZSB0IFdI RVJFIHQub2lkID0ge3t0aWR9fTo6b2lkKSBhKSBkCisgICAgICAgICkgZAor ICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3Jh bnRvciA9IGcub2lkKQorICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3Jv bGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWSBnLnJv bG5hbWUsIGd0LnJvbG5hbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMv dHlwZS9zcWwvOS4xX3BsdXMvYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFf cGx1cy9hZGRpdGlvbmFsX3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZmQ5MjIKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwv OS4xX3BsdXMvYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsx LDM1IEBACit7IyBUaGUgU1FMIGdpdmVuIGJlbG93IHdpbGwgZmV0Y2ggY29t cG9zaXRlIHR5cGUjfQoreyUgaWYgdHlwZSA9PSAnYycgJX0KK1NFTEVDVCBh dHRuYW1lLCBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxMKSBBUyB0eXBuYW1lLCBh dHRuZGltcywgYXR0dHlwbW9kLCBuc3AubnNwbmFtZSwKKyAgICAoU0VMRUNU IENPVU5UKDEpIGZyb20gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lPXQu dHlwbmFtZSkgPiAxIEFTIGlzZHVwLAorICAgIGNvbGxuYW1lLCBuc3BjLm5z cG5hbWUgYXMgY29sbG5zcG5hbWUsIGF0dC5hdHRyZWxpZAorRlJPTSBwZ19h dHRyaWJ1dGUgYXR0CisgICAgSk9JTiBwZ190eXBlIHQgT04gdC5vaWQ9YXR0 dHlwaWQKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gdC50eXBuYW1l c3BhY2U9bnNwLm9pZAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGIg T04gdC50eXBlbGVtPWIub2lkCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Nv bGxhdGlvbiBjIE9OIGF0dC5hdHRjb2xsYXRpb249Yy5vaWQKKyAgICBMRUZU IE9VVEVSIEpPSU4gcGdfbmFtZXNwYWNlIG5zcGMgT04gYy5jb2xsbmFtZXNw YWNlPW5zcGMub2lkCisgICAgV0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0eXBy ZWxpZH19OjpvaWQKKyAgICBPUkRFUiBieSBhdHRudW07Cit7JSBlbmRpZiAl fQorCit7IyBUaGUgU1FMIGdpdmVuIGJlbG93IHdpbGwgZmV0Y2ggZW51bSB0 eXBlI30KK3slIGlmIHR5cGUgPT0gJ2UnICV9CitTRUxFQ1QgZW51bWxhYmVs CitGUk9NIHBnX2VudW0KKyAgICBXSEVSRSBlbnVtdHlwaWQ9e3t0aWR9fTo6 b2lkCisgICAgT1JERVIgYnkgZW51bXNvcnRvcmRlcgoreyUgZW5kaWYgJX0K KworeyMgVGhlIFNRTCBnaXZlbiBiZWxvdyB3aWxsIGZldGNoIHJhbmdlIHR5 cGUjfQoreyUgaWYgdHlwZSA9PSAncicgJX0KK1NFTEVDVCBybmdzdWJ0eXBl LCBzdC50eXBuYW1lLAorICAgIHJuZ2NvbGxhdGlvbiwgY29sLmNvbGxuYW1l LAorICAgIHJuZ3N1Ym9wYywgb3BjLm9wY25hbWUsCisgICAgcm5nY2Fub25p Y2FsLCBybmdzdWJkaWZmCitGUk9NIHBnX3JhbmdlCisgICAgTEVGVCBKT0lO IHBnX3R5cGUgc3QgT04gc3Qub2lkPXJuZ3N1YnR5cGUKKyAgICBMRUZUIEpP SU4gcGdfY29sbGF0aW9uIGNvbCBPTiBjb2wub2lkPXJuZ2NvbGxhdGlvbgor ICAgIExFRlQgSk9JTiBwZ19vcGNsYXNzIG9wYyBPTiBvcGMub2lkPXJuZ3N1 Ym9wYworICAgIFdIRVJFIHJuZ3R5cGlkPXt7dGlkfX06Om9pZDsKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1w bGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9jcmVh dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZh NTM1MzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBl cy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAt MCwwICsxLDc4IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3Vy aXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9z L3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7 IyMjICBDb21wb3NpdGUgVHlwZSAjIyN9Cit7JSBpZiBkYXRhIGFuZCBkYXRh LnR5cHR5cGUgPT0gJ2MnICV9CitDUkVBVEUgVFlQRSB7JSBpZiBkYXRhLnNj aGVtYSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1l KSB9fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXsl IGVuZGlmICV9IEFTCisgICAgKHslIGlmIGRhdGEuY29tcG9zaXRlICV9eyUg Zm9yIGQgaW4gZGF0YS5jb21wb3NpdGUgJX17JSBpZiBsb29wLmluZGV4ICE9 IDEgJX0sIHslIGVuZGlmICV9e3sgY29ubnxxdElkZW50KGQubWVtYmVyX25h bWUpIH19IHt7IGQudHlwZSB9fXslIGlmIGQuaXNfdGxlbmd0aCBhbmQgZC50 bGVuZ3RoICV9KHt7ZC50bGVuZ3RofX17JSBpZiBkLmlzX3ByZWNpc2lvbiBh bmQgZC5wcmVjaXNpb24gJX0se3tkLnByZWNpc2lvbn19eyUgZW5kaWYgJX0p eyUgZW5kaWYgJX17JSBpZiBkLmNvbGxhdGlvbiAlfSBDT0xMQVRFIHt7ZC5j b2xsYXRpb259fXslIGVuZGlmICV9eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0p OworeyUgZW5kaWYgJX0KK3sjIyMgIEVudW0gVHlwZSAjIyN9Cit7JSBpZiBk YXRhIGFuZCBkYXRhLnR5cHR5cGUgPT0gJ2UnICV9CitDUkVBVEUgVFlQRSB7 JSBpZiBkYXRhLnNjaGVtYSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKSB9fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0 YS5uYW1lKSB9fXslIGVuZGlmICV9IEFTIEVOVU0KKyAgICAoeyUgZm9yIGUg aW4gZGF0YS5lbnVtICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBl bmRpZiAlfXt7IGUubGFiZWx8cXRMaXRlcmFsIH19eyUgZW5kZm9yICV9KTsK K3slIGVuZGlmICV9Cit7IyMjICBSYW5nZSBUeXBlICMjI30KK3slIGlmIGRh dGEgYW5kIGRhdGEudHlwdHlwZSA9PSAncicgJX0KK0NSRUFURSBUWVBFIHsl IGlmIGRhdGEuc2NoZW1hICV9e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpIH19eyUgZWxzZSAlfXt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19eyUgZW5kaWYgJX0gQVMgUkFOR0UKKyAgICAoCisgICAgIHsl IGlmIGRhdGEudHlwbmFtZSAlfVNVQlRZUEU9e3sgY29ubnxxdFR5cGVJZGVu dChkYXRhLnR5cG5hbWUpIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbGxu YW1lICV9LAorICAgICBDT0xMQVRJT04gPSB7eyBkYXRhLmNvbGxuYW1lIH19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLm9wY25hbWUgICV9LAorICAgICBTVUJU WVBFX09QQ0xBU1MgPSB7eyBkYXRhLm9wY25hbWUgfX17JSBlbmRpZiAlfXsl IGlmIGRhdGEucm5nY2Fub25pY2FsICV9LAorICAgICBDQU5PTklDQUwgPSB7 eyBkYXRhLnJuZ2Nhbm9uaWNhbCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5y bmdzdWJkaWZmICV9LAorICAgICBTVUJUWVBFX0RJRkYgPSB7eyBkYXRhLnJu Z3N1YmRpZmYgfX17JSBlbmRpZiAlfQorCisgICAgKTsKK3slIGVuZGlmICV9 Cit7IyMjICBFeHRlcm5hbCBUeXBlICMjI30KK3slIGlmIGRhdGEgYW5kIGRh dGEudHlwdHlwZSA9PSAneCcgJX0KK0NSRUFURSBUWVBFIHslIGlmIGRhdGEu c2NoZW1hICV9e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5h bWUpIH19eyUgZWxzZSAlfXt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19 eyUgZW5kaWYgJX0gQVMKKyAgICAoCisgICAgIHslIGlmIGRhdGEudHlwaW5w dXQgJX1JTlBVVCA9IHt7ZGF0YS50eXBpbnB1dH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnR5cG91dHB1dCAlfSwKKyAgICAgT1VUUFVUID0ge3sgZGF0YS50 eXBvdXRwdXQgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwcmVjZWl2ZSAl fSwKKyAgICAgUkVDRUlWRSA9IHt7ZGF0YS50eXByZWNlaXZlfX17JSBlbmRp ZiAlfXslIGlmIGRhdGEudHlwbmFtZSAlfSwKKyAgICAgU0VORCA9IHt7ZGF0 YS50eXBzZW5kfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwbW9kaW4gJX0s CisgICAgIFRZUE1PRF9JTiA9IHt7ZGF0YS50eXBtb2Rpbn19eyUgZW5kaWYg JX17JSBpZiBkYXRhLnR5cG1vZG91dCAlfSwKKyAgICAgVFlQTU9EX09VVCA9 IHt7ZGF0YS50eXBtb2RvdXR9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBh bmFseXplICV9LAorICAgICBBTkFMWVpFID0ge3tkYXRhLnR5cGFuYWx5emV9 fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBsZW4gJX0sCisgICAgIElOVEVS TkFMTEVOR1RIID0ge3tkYXRhLnR5cGxlbn19eyUgZW5kaWYgJX17JSBpZiBk YXRhLnR5cGJ5dmFsICV9LAorICAgICBQQVNTRURCWVZBTFVFeyUgZW5kaWYg JX17JSBpZiBkYXRhLnR5cGFsaWduICV9LAorICAgICBBTElHTk1FTlQgPSAg e3tkYXRhLnR5cGFsaWdufX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwc3Rv cmFnZSAlfSwKKyAgICAgU1RPUkFHRSA9ICB7e2RhdGEudHlwc3RvcmFnZX19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGNhdGVnb3J5ICV9LAorICAgICBD QVRFR09SWSA9IHt7ZGF0YS50eXBjYXRlZ29yeX19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnR5cGlzcHJlZmVycmVkICV9LAorICAgICBQUkVGRVJSRUQgPSAg e3tkYXRhLnR5cGlzcHJlZmVycmVkfX17JSBlbmRpZiAlfXslIGlmIGRhdGEu dHlwZGVmYXVsdCAlfSwKKyAgICAgREVGQVVMVCA9IHt7ZGF0YS50eXBkZWZh dWx0fX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZWxlbWVudCAlfSwKKyAgICAg RUxFTUVOVCA9IHt7ZGF0YS5lbGVtZW50fX17JSBlbmRpZiAlfXslIGlmIGRh dGEudHlwZGVsaW0gJX0sCisgICAgIERFTElNSVRFUiA9IHt7ZGF0YS50eXBk ZWxpbXxxdExpdGVyYWx9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5pc19jb2xs YXRhYmxlICV9LAorICAgICBDT0xMQVRBQkxFID0ge3tkYXRhLmlzX2NvbGxh dGFibGV9fXslIGVuZGlmICV9CisKKyAgICApOworeyUgZW5kaWYgJX0KK3sj IyMgIFR5cGUgT3duZXIgIyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS50eXBl b3duZXIgJX0KKworQUxURVIgVFlQRSB7JSBpZiBkYXRhLnNjaGVtYSAlfXt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fXslIGVs c2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVuZGlmICV9 CisKKyAgICBPV05FUiBUTyB7e2RhdGEudHlwZW93bmVyfX07Cit7JSBlbmRp ZiAlfQoreyMjIyAgVHlwZSBDb21tZW50cyAjIyN9Cit7JSBpZiBkYXRhIGFu ZCBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gVFlQRSB7JSBp ZiBkYXRhLnNjaGVtYSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5u YW1lKSB9fXslIGVuZGlmICV9CisKKyAgICBJUyB7e2RhdGEuZGVzY3JpcHRp b258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyMjIyAgQUNMICMjI30K K3slIGlmIGRhdGEudHlwYWNsICV9CisKK3slIGZvciBwcml2IGluIGRhdGEu dHlwYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUWVBFJywgcHJp di5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJp di53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3sjIyMgIFNlY3VyaXR5IExhYmxlcyAjIyN9Cit7JSBp ZiBkYXRhLnNlY2xhYmVscyAlfQorCit7JSBmb3IgciBpbiBkYXRhLnNlY2xh YmVscyAlfQoreyUgaWYgci5wcm92aWRlciBhbmQgci5zZWN1cml0eV9sYWJl bCAlfQore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdUWVBFJywgZGF0YS5uYW1l LCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBkYXRhLnNjaGVtYSkg fX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlw ZS9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNTg4MjcKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0 ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxIEBA CitEUk9QIFRZUEUge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpIH19eyUgaWYgY2FzY2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfTsK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMv Z2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVt cGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjAxNjliCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxh dGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApAQCAt MCwwICsxLDcgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxuYW1lLAorICAg IENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29s bG5hbWUpID4gMCAgVEhFTgorICAgICAgICBjb25jYXQocXVvdGVfaWRlbnQo bnNwbmFtZSksICcuJywgcXVvdGVfaWRlbnQoY29sbG5hbWUpKQorICAgIEVM U0UgJycgRU5EIEFTIGNvbGxhdGlvbgorRlJPTSBwZ19jb2xsYXRpb24gYywg cGdfbmFtZXNwYWNlIG4KK1dIRVJFIGMuY29sbG5hbWVzcGFjZT1uLm9pZAor T1JERVIgQlkgbnNwbmFtZSwgY29sbG5hbWU7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9leHRlcm5hbF9mdW5j dGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsLzkuMV9wbHVzL2dldF9leHRlcm5hbF9mdW5jdGlvbnMuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NDk0ZGIKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0 ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucy5z cWwKQEAgLTAsMCArMSw0MCBAQAoreyMjIyBJbnB1dC9PdXRwdXQvU2VuZC9S ZWNlaXZlL0FuYWx5emUgZnVuY3Rpb24gbGlzdCBhbHNvIGFwcGVuZCBpbnRv IFR5cE1vZGVJTi9UeXBNb2RPVVQgIyMjfQoreyUgaWYgZXh0ZnVuYyAlfQor U0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0 aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1lKSA+IDAgIFRIRU4K KyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1 b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0UgJycgRU5EIEFTIGZ1bmMK K0ZST00gKAorICAgIFNFTEVDVCBwcm9uYW1lLCBuc3BuYW1lLCBtYXgocHJv YXJndHlwZXNbMF0pIEFTIGFyZzAsIG1heChwcm9hcmd0eXBlc1sxXSkgQVMg YXJnMQorRlJPTSBwZ19wcm9jIHAKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBu IE9OIG4ub2lkPXByb25hbWVzcGFjZQorR1JPVVAgQlkgcHJvbmFtZSwgbnNw bmFtZQorSEFWSU5HIGNvdW50KHByb25hbWUpID0gMSAgICkgQVMgdW5pcXVl ZnVuYworV0hFUkUgYXJnMCA8PiAwIEFORCBhcmcxID0gMDsKK3slIGVuZGlm ICV9Cit7IyMjIFR5cG1vZElOIGxpc3QgIyMjfQoreyUgaWYgdHlwZW1vZGlu ICV9CitTRUxFQ1QgcHJvbmFtZSwgbnNwbmFtZSwKKyAgICBDQVNFIFdIRU4g bGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKHByb25hbWUpID4gMCAg VEhFTgorICAgICAgICBjb25jYXQocXVvdGVfaWRlbnQobnNwbmFtZSksICcu JywgcXVvdGVfaWRlbnQocHJvbmFtZSkpCisgICAgRUxTRSAnJyBFTkQgQVMg ZnVuYworRlJPTSBwZ19wcm9jIHAKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBu IE9OIG4ub2lkPXByb25hbWVzcGFjZQorV0hFUkUgcHJvcmV0dHlwZT0oU0VM RUNUIG9pZCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZT0naW50NCcpCisg ICAgQU5EIHByb2FyZ3R5cGVzWzBdPShTRUxFQ1Qgb2lkIEZST00gcGdfdHlw ZSBXSEVSRSB0eXBuYW1lPSdfY3N0cmluZycpCisgICAgQU5EIHByb2FyZ3R5 cGVzWzFdIElTIE5VTEwKK09SREVSIEJZIG5zcG5hbWUsIHByb25hbWU7Cit7 JSBlbmRpZiAlfQoreyMjIyBUeXBtb2RPVVQgbGlzdCAjIyN9Cit7JSBpZiB0 eXBlbW9kb3V0ICV9CitTRUxFQ1QgcHJvbmFtZSwgbnNwbmFtZSwKKyAgICBD QVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKHByb25h bWUpID4gMCAgVEhFTgorICAgICAgICBjb25jYXQocXVvdGVfaWRlbnQobnNw bmFtZSksICcuJywgcXVvdGVfaWRlbnQocHJvbmFtZSkpCisgICAgRUxTRSAn JyBFTkQgQVMgZnVuYworRlJPTSBwZ19wcm9jIHAKKyAgICBKT0lOIHBnX25h bWVzcGFjZSBuIE9OIG4ub2lkPXByb25hbWVzcGFjZQorV0hFUkUgcHJvcmV0 dHlwZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZT0n Y3N0cmluZycpCisgICAgQU5EIHByb2FyZ3R5cGVzWzBdPShTRUxFQ1Qgb2lk IEZST00gcGdfdHlwZSBXSEVSRSB0eXBuYW1lPSdpbnQ0JykKKyAgICBBTkQg cHJvYXJndHlwZXNbMV0gSVMgTlVMTAorT1JERVIgQlkgbnNwbmFtZSwgcHJv bmFtZTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X29pZC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwv OS4xX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTRmNzk1MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9n ZXRfb2lkLnNxbApAQCAtMCwwICsxLDExIEBACit7IyBCZWxvdyB3aWxsIHBy b3ZpZGUgb2lkIGZvciBuZXdseSBjcmVhdGVkIHR5cGUgI30KK1NFTEVDVCB0 Lm9pZAorRlJPTSBwZ190eXBlIHQKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdf dHlwZSBlIE9OIGUub2lkPXQudHlwZWxlbQorICAgIExFRlQgT1VURVIgSk9J TiBwZ19jbGFzcyBjdCBPTiBjdC5vaWQ9dC50eXByZWxpZCBBTkQgY3QucmVs a2luZCA8PiAnYycKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRp b24gZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9 J3BnX3R5cGUnOjpyZWdjbGFzcykKK1dIRVJFIHQudHlwdHlwZSAhPSAnZCcg QU5EIHQudHlwbmFtZSBOT1QgTElLRSBFJ1xcXyUnIEFORCB0LnR5cG5hbWVz cGFjZSA9IHt7c2NpZH19OjpvaWQKK3slIGlmIGRhdGEgJX0KKyAgICBBTkQg dC50eXBuYW1lID0ge3tkYXRhLm5hbWV8cXRMaXRlcmFsfX0KK3slIGVuZGlm ICV9CitPUkRFUiBCWSB0LnR5cG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVt cGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9zdWJ0eXBlcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3Bs dXMvZ2V0X3N1YnR5cGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43NTI3MWZlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dl dF9zdWJ0eXBlcy5zcWwKQEAgLTAsMCArMSw1NiBAQAoreyMjIyBUbyBmaWxs IHN1YnR5cGUgY29tYm9ib3ggIyMjfQoreyUgaWYgc3VidHlwZSAlfQorU0VM RUNUIERJU1RJTkNUIHR5cC50eXBuYW1lIEFTIHN0eXBlLAorICAgIChDQVNF IFdIRU4gdHlwLnR5cGNvbGxhdGlvbiA+IDAgVEhFTiB0cnVlIEVMU0UgZmFs c2UgRU5EKSBBUyBpc19jb2xsYXRlCitGUk9NIHBnX29wY2xhc3Mgb3BjCisg ICAgSk9JTiBwZ190eXBlIHR5cCBPTiBvcGMub3BjaW50eXBlID0gdHlwLm9p ZAorV0hFUkUgb3BjLm9wY21ldGhvZCA9IDQwMworT1JERVIgQlkgMQoreyUg ZW5kaWYgJX0KK3sjIyMgVG8gZmlsbCBzdWJ0eXBlIG9wY2xhc3MgY29tYm9i b3ggIyMjfQoreyUgaWYgc3VidHlwZV9vcGNsYXNzIGFuZCBkYXRhIGFuZCBk YXRhLnR5cG5hbWUgJX0KK1NFTEVDVCBvcGMub3BjbmFtZQorRlJPTSBwZ19v cGNsYXNzIG9wYworICAgIEpPSU4gcGdfdHlwZSB0eXAgT04gb3BjLm9wY2lu dHlwZT10eXAub2lkCisgICAgQU5EIHR5cC50eXBuYW1lID0ge3sgZGF0YS50 eXBuYW1lfHF0TGl0ZXJhbCB9fQorV0hFUkUgb3BjLm9wY21ldGhvZCA9IDQw MworT1JERVIgQlkgb3BjbmFtZTsKK3slIGVuZGlmICV9Cit7IyMjIFRvIGZl dGNoIG9wY2ludHR5cGUgZnJvbSBzdWJ0eXBlIG9wY2xhc3MgIyMjfQoreyUg aWYgZ2V0X29wY2ludHlwZSBhbmQgZGF0YSBhbmQgZGF0YS50eXBuYW1lIGFu ZCBkYXRhLm9wY25hbWUgJX0KK1NFTEVDVCBvcGMub3BjaW50eXBlCitGUk9N IHBnX29wY2xhc3Mgb3BjCisgICAgSk9JTiBwZ190eXBlIHR5cCBPTiBvcGMu b3BjaW50eXBlPXR5cC5vaWQKKyAgICBBTkQgdHlwLnR5cG5hbWUgPSB7eyBk YXRhLnR5cG5hbWV8cXRMaXRlcmFsIH19CitXSEVSRSBvcGMub3BjbWV0aG9k ID0gNDAzCisgICAgQU5EIG9wYy5vcGNuYW1lID0ge3sgZGF0YS5vcGNuYW1l fHF0TGl0ZXJhbCB9fQorT1JERVIgQlkgb3BjbmFtZTsKK3slIGVuZGlmICV9 Cit7IyMjIFRvIGZpbGwgc3VidHlwZSBkaWZmIGZ1bmN0aW9uIGNvbWJvYm94 ICMjI30KK3slIGlmIG9wY2ludHlwZSAlfQorU0VMRUNUIHByb25hbWUsIG5z cG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5E IGxlbmd0aChwcm9uYW1lKSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1 b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUp KQorICAgIEVMU0UgJycgRU5EIEFTIHN0eXBkaWZmCitGUk9NIHBnX3Byb2MK KyAgICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPXByb25hbWVzcGFj ZQorV0hFUkUgcHJvcmV0dHlwZSA9IDcwMQorICAgIEFORCBwcm9hcmd0eXBl cyA9ICd7e29wY2ludHlwZX19IHt7b3BjaW50eXBlfX0nCitPUkRFUiBCWSBw cm9uYW1lOworeyUgZW5kaWYgJX0KK3sjIyMgVG8gZmlsbCBjYW5vbmljYWwg Y29tYm9ib3ggIyMjfQoreyUgaWYgZ2V0b2lkICV9CitTRUxFQ1Qgb2lkIEZS T00gcGdfdHlwZQorV0hFUkUgdHlwbmFtZSA9IHt7IGRhdGEubmFtZXxxdExp dGVyYWwgfX0KK3slIGVuZGlmICV9Cit7JSBpZiBjYW5vbmljYWwgYW5kIG9p ZCAlfQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FTRSBXSEVO IGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1lKSA+IDAg IFRIRU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAn LicsIHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0UgJycgRU5EIEFT IGNhbm9uaWNhbAorRlJPTSBwZ19wcm9jCisgICAgSk9JTiBwZ19uYW1lc3Bh Y2UgbiBPTiBuLm9pZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHByb3JldHR5cGU9 IHt7IG9pZCB9fQorICAgIEFORCBwcm9hcmd0eXBlcyA9ICd7eyBvaWQgfX0n CitPUkRFUiBCWSBwcm9uYW1lOworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X3R5cGVzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85 LjFfcGx1cy9nZXRfdHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmE1ZDM1MmQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMv Z2V0X3R5cGVzLnNxbApAQCAtMCwwICsxLDEwIEBACitTRUxFQ1QgKiBGUk9N CisgICAgKFNFTEVDVCBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxMKSBBUyB0eXBu YW1lLAorICAgIENBU0UgV0hFTiB0eXBlbGVtID4gMCBUSEVOIHR5cGVsZW0g RUxTRSB0Lm9pZCBFTkQgQVMgZWxlbW9pZCwKKyAgICB0eXBsZW4sIHR5cHR5 cGUsIHQub2lkLCBuc3BuYW1lLAorICAgIChTRUxFQ1QgQ09VTlQoMSkgRlJP TSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5hbWUgPSB0LnR5cG5hbWUpID4g MSBBUyBpc2R1cAorRlJPTSBwZ190eXBlIHQKKyAgIEpPSU4gcGdfbmFtZXNw YWNlIG5zcCBPTiB0eXBuYW1lc3BhY2U9bnNwLm9pZAorV0hFUkUgKE5PVCAo dHlwbmFtZSA9ICd1bmtub3duJyBBTkQgbnNwbmFtZSA9ICdwZ19jYXRhbG9n JykpIEFORCB0eXBpc2RlZmluZWQgQU5EIHR5cHR5cGUgSU4gKCdiJywgJ2Mn LCAnZCcsICdlJywgJ3InKUFORCBOT1QgRVhJU1RTIChzZWxlY3QgMSBmcm9t IHBnX2NsYXNzIHdoZXJlIHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UgYW5k IHJlbG5hbWUgPSB0eXBuYW1lIGFuZCByZWxraW5kICE9ICdjJykgQU5EICh0 eXBuYW1lIG5vdCBsaWtlICdfJScgT1IgTk9UIEVYSVNUUyAoc2VsZWN0IDEg ZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNl IGFuZCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5hbWUgZnJvbSAyKTo6bmFt ZSBhbmQgcmVsa2luZCAhPSAnYycpKSAgQU5EIG5zcC5uc3BuYW1lICE9ICdp bmZvcm1hdGlvbl9zY2hlbWEnCisgICAgKSBBUyBkdW1teQorT1JERVIgQlkg bnNwbmFtZSA8PiAncGdfY2F0YWxvZycsIG5zcG5hbWUgPD4gJ3B1YmxpYycs IG5zcG5hbWUsIDEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9z cWwvOS4xX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL25vZGVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWJjYjE5Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsLzkuMV9wbHVzL25vZGVzLnNxbApAQCAtMCwwICsxLDEwIEBACitT RUxFQ1QgdC5vaWQsIHQudHlwbmFtZSBBUyBuYW1lCitGUk9NIHBnX3R5cGUg dAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGUgT04gZS5vaWQ9dC50 eXBlbGVtCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIGN0IE9OIGN0 Lm9pZD10LnR5cHJlbGlkIEFORCBjdC5yZWxraW5kIDw+ICdjJworICAgIExF RlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIG5zcC5vaWQgPSB0 LnR5cG5hbWVzcGFjZQorV0hFUkUgdC50eXB0eXBlICE9ICdkJyBBTkQgdC50 eXBuYW1lIE5PVCBMSUtFIEUnXFxfJScgQU5EIHQudHlwbmFtZXNwYWNlID0g e3tzY2lkfX06Om9pZAoreyUgaWYgbm90IHNob3dfc3lzdGVtX29iamVjdHMg JX0KKyAgICBBTkQgY3Qub2lkIGlzIE5VTEwKK3slIGVuZGlmICV9CitPUkRF UiBCWSB0LnR5cG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL3Byb3BlcnRp ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRl MjYxYTUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBl cy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwK QEAgLTAsMCArMSwyNCBAQAorU0VMRUNUIHQub2lkLCB0LnR5cG5hbWUgQVMg bmFtZSwKKyAgICAoQ0FTRSBXSEVOIENBU1QoY29hbGVzY2UodC50eXBjb2xs YXRpb24sICcwJykgQVMgaW50ZWdlcikgPSAxMDAgVEhFTiB0cnVlIEVsU0Ug ZmFsc2UgRU5EKSBBUyBpc19jb2xsYXRhYmxlLAorICAgIHQudHlwYWNsIEFT IHR5cGVfYWNsLAorICAgIHQuKiwgZm9ybWF0X3R5cGUodC5vaWQsIG51bGwp IEFTIGFsaWFzLAorICAgIHBnX2dldF91c2VyYnlpZCh0LnR5cG93bmVyKSBh cyB0eXBlb3duZXIsIGUudHlwbmFtZSBhcyBlbGVtZW50LAorICAgIGRlc2Ny aXB0aW9uLCBjdC5vaWQgQVMgdGFib2lkLAorICAgIG5zcC5uc3BuYW1lIEFT IHNjaGVtYSwKKyAgICAtLU1pbmltdW1WZXJzaW9uIDkuMSBTVEFSVAorICAg IChTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkg RlJPTSBwZ19zaHNlY2xhYmVsIHNsMSBXSEVSRSBzbDEub2Jqb2lkPXQub2lk KSBBUyBzZWNsYWJlbHMsCisgICAgLS0gRU5ECisgICAgKENBU0UgV0hFTiAo dC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgT1IgY3Qub2lkICE9 IDApIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMgaXNfc3lzX3R5cGUK K0ZST00gcGdfdHlwZSB0CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3R5cGUg ZSBPTiBlLm9pZD10LnR5cGVsZW0KKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdf Y2xhc3MgY3QgT04gY3Qub2lkPXQudHlwcmVsaWQgQU5EIGN0LnJlbGtpbmQg PD4gJ2MnCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRl cyBPTiAoZGVzLm9iam9pZD10Lm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190 eXBlJzo6cmVnY2xhc3MpCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX25hbWVz cGFjZSBuc3AgT04gbnNwLm9pZCA9IHQudHlwbmFtZXNwYWNlCitXSEVSRSB0 LnR5cHR5cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUgTk9UIExJS0UgRSdcXF8l JyBBTkQgdC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCit7JSBpZiB0 aWQgJX0KKyAgICBBTkQgdC5vaWQgPSB7e3RpZH19OjpvaWQKK3slIGVuZGlm ICV9Cit7JSBpZiBub3Qgc2hvd19zeXN0ZW1fb2JqZWN0cyAlfQorICAgIEFO RCBjdC5vaWQgaXMgTlVMTAoreyUgZW5kaWYgJX0KK09SREVSIEJZIHQudHlw bmFtZTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4x X3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBs YXRlcy90eXBlL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOTU5N2UKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9z cWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEyNyBAQAoreyUg aW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNF Q0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVn ZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaWYgZGF0YSAlfQoreyM9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyBC ZWxvdyB3aWxsIGNoYW5nZSBvYmplY3Qgb3duZXIgI30KK3slIGlmIGRhdGEu dHlwZW93bmVyIGFuZCBkYXRhLnR5cGVvd25lciAhPSBvX2RhdGEudHlwZW93 bmVyICV9CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2No ZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRhLnR5 cGVvd25lciB9fTsKKworeyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMgQmVsb3cgd2lsbCBjaGFu Z2Ugb2JqZWN0cyBjb21tZW50ICAjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlv biBhbmQgZGF0YS5kZXNjcmlwdGlvbiAhPSBvX2RhdGEuZGVzY3JpcHRpb24g JX0KK0NPTU1FTlQgT04gVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNj aGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgSVMge3sgZGF0YS5kZXNjcmlw dGlvbnxxdExpdGVyYWwgfX07CisKK3slIGVuZGlmICV9Cit7Iz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjIyMgVGhlIHNx bCBnaXZlbiBiZWxvdyB3aWxsIHVwZGF0ZSBjb21wb3NpdGUgdHlwZSAjIyN9 Cit7JSBpZiBkYXRhLmNvbXBvc2l0ZSBhbmQgZGF0YS5jb21wb3NpdGV8bGVu Z3RoID4gMCAlfQoreyUgc2V0IGNvbXBvc2l0ZSA9IGRhdGEuY29tcG9zaXRl ICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gY29tcG9zaXRlIGFuZCBjb21wb3Np dGUuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBjb21wb3Np dGUuZGVsZXRlZCAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgRFJPUCBBVFRSSUJV VEUge3tjb25ufHF0SWRlbnQoci5tZW1iZXJfbmFtZSl9fTsKK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gY29tcG9zaXRl IGFuZCBjb21wb3NpdGUuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gY29tcG9zaXRlLmFkZGVkICV9CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBBREQg QVRUUklCVVRFIHt7Y29ubnxxdElkZW50KHIubWVtYmVyX25hbWUpfX0ge3tj b25ufHF0SWRlbnQoci50eXBlKX19eyUgaWYgci5pc190bGVuZ3RoIGFuZCBy LnRsZW5ndGggJX0KKyh7e3IudGxlbmd0aH19eyUgaWYgci5pc19wcmVjaXNp b24gYW5kIHIucHJlY2lzaW9uICV9LHt7ci5wcmVjaXNpb259fXslIGVuZGlm ICV9KXslIGVuZGlmICV9eyUgaWYgci5jb2xsYXRpb24gJX0KKyBDT0xMQVRF IHt7ci5jb2xsYXRpb259fXslIGVuZGlmICV9OworeyUgZW5kZm9yICV9Cit7 JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGNvbXBvc2l0ZSBhbmQg Y29tcG9zaXRlLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4g Y29tcG9zaXRlLmNoYW5nZWQgJX0KK0FMVEVSIFRZUEUge3sgY29ubnxxdElk ZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIEFMVEVS IEFUVFJJQlVURSB7e2Nvbm58cXRJZGVudChyLm1lbWJlcl9uYW1lKX19IFNF VCBEQVRBIFRZUEUge3tjb25ufHF0SWRlbnQoci50eXBlKX19eyUgaWYgci5p c190bGVuZ3RoIGFuZCByLnRsZW5ndGggJX0KKyh7e3IudGxlbmd0aH19eyUg aWYgci5pc19wcmVjaXNpb24gYW5kIHIucHJlY2lzaW9uICV9LHt7ci5wcmVj aXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgci5jb2xsYXRp b24gJX0KKyBDT0xMQVRFIHt7ci5jb2xsYXRpb259fXslIGVuZGlmICV9Owor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAlfQoreyM9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyMj IFRoZSBzcWwgZ2l2ZW4gYmVsb3cgd2lsbCB1cGRhdGUgZW51bSB0eXBlICMj I30KK3slIGlmIGRhdGEuZW51bSBhbmQgZGF0YS5lbnVtfGxlbmd0aCA+IDAg JX0KK3slIHNldCBlbnVtID0gZGF0YS5lbnVtICV9Cit7JSBzZXQgb19lbnVt X2xlbiA9IG9fZGF0YS5lbnVtfGxlbmd0aCAlfQoreyMgV2UgbmVlZCBhY3R1 YWwgbGlzdCBpbmRleCBmcm9tIGxlbmd0aCAjfQoreyUgc2V0IG9fZW51bV9s ZW4gPSBvX2VudW1fbGVuIC0gMSAlfQoreyUgaWYgJ2FkZGVkJyBpbiBlbnVt IGFuZCBlbnVtLmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIGVu dW0uYWRkZWQgJX0KK3slIHNldCBjX2lkeCA9IGxvb3AuaW5kZXggJX0KK3sl IGlmIGNfaWR4ID09IDEgJX0KK3sjIGlmIGZpcnN0IG5ldyBlbGVtZW50IHRo ZW4gYWRkIGl0IGFmdGVyIG9sZCBkYXRhIGVudW0gbGlzdCN9CitBTFRFUiBU WVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFt ZSkgfX0KKyAgICBBREQgVkFMVUUge3tyLmxhYmVsfHF0TGl0ZXJhbH19IEFG VEVSIHt7b19kYXRhLmVudW1bb19lbnVtX2xlbl0ubGFiZWx8cXRMaXRlcmFs IH19OworeyUgZWxzZSAlfQoreyMgaWYgZmlyc3QgbmV3IGVsZW1lbnQgdGhl biBhZGQgaXQgYWZ0ZXIgbmV3IGRhdGEgZW51bSBsaXN0I30KK3slIHNldCBw X2lkeCA9IGxvb3AuaW5kZXggLSAyICV9CitBTFRFUiBUWVBFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBB REQgVkFMVUUge3tyLmxhYmVsfHF0TGl0ZXJhbH19IEFGVEVSIHt7ZW51bS5h ZGRlZFtwX2lkeF0ubGFiZWx8cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAlfQoreyM9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyBU aGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBTZWN1cml0eSBM YWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgYW5kIGRhdGEuc2VjbGFi ZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNl Y2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQg c2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4g c2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7IFNFQ0xBQkxFLlVOU0VUKGNvbm4s ICdUWVBFJywgb19kYXRhLm5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5zY2hl bWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRk ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+ IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VD TEFCTEUuU0VUKGNvbm4sICdUWVBFJywgb19kYXRhLm5hbWUsIHIucHJvdmlk ZXIsIHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5zY2hlbWEpIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2Vj bGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7 JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUu U0VUKGNvbm4sICdUWVBFJywgb19kYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIu c2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9Cit7Iz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjIENoYW5nZSB0aGUg cHJpdmlsZWdlcyAjfQoreyUgaWYgZGF0YS50eXBhY2wgYW5kIGRhdGEudHlw YWNsfGxlbmd0aCA+IDAgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLnR5 cGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS50eXBhY2wuZGVsZXRlZCAl fQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUWVBFJywgcHJpdi5n cmFudGVlLCBvX2RhdGEubmFtZSwgb19kYXRhLnNjaGVtYSkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRh LnR5cGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS50eXBhY2wuY2hhbmdl ZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUWVBFJywgcHJp di5ncmFudGVlLCBvX2RhdGEubmFtZSwgb19kYXRhLnNjaGVtYSkgfX0KK3t7 IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RZUEUnLCBwcml2LmdyYW50ZWUsIG5h bWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBvX2Rh dGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2FkZGVkJyBpbiBkYXRhLnR5cGFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS50eXBhY2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwg J1RZUEUnLCBwcml2LmdyYW50ZWUsIG5hbWUsIHByaXYud2l0aG91dF9ncmFu dCwgcHJpdi53aXRoX2dyYW50LCBvX2RhdGEuc2NoZW1hKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMgQmVsb3cgd2ls bCBjaGFuZ2Ugb2JqZWN0IG5hbWUgI30KK3slIGlmIGRhdGEubmFtZSBhbmQg ZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBUWVBFIHt7IGNv bm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAg ICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07CisK K3slIGVuZGlmICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09I30KK3sjIEJlbG93IHdpbGwgY2hhbmdlIHRoZSBzY2hlbWEg Zm9yIG9iamVjdCAjfQoreyMgd2l0aCBleHRyYSBpZiBjb25kaXRpb24gd2Ug d2lsbCBhbHNvIG1ha2Ugc3VyZSB0aGF0IG9iamVjdCBoYXMgY29ycmVjdCBu YW1lICN9Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0YS5zY2hlbWEgIT0g b19kYXRhLnNjaGVtYSAlfQorQUxURVIgVFlQRSB7JSBpZiBkYXRhLm5hbWUg IT0gb19kYXRhLm5hbWUgJX17eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVt YSwgZGF0YS5uYW1lKSB9fQoreyUgZWxzZSAlfXt7IGNvbm58cXRJZGVudChv X2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX17JSBlbmRpZiAlfQorICAg IFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsK KworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsL3Bvc3RncmVzX2luYnVpdF90eXBlcy50eHQg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcG9z dGdyZXNfaW5idWl0X3R5cGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi42MzEwMzdmCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3Bvc3RncmVz X2luYnVpdF90eXBlcy50eHQKQEAgLTAsMCArMSw1MyBAQAorIiIiCitIZXJl IGlzIHRoZSBsaXN0IG9mIFBvc3RncmVzIGluYnVpbHQgdHlwZXMgJiB0aGVp ciBPSUQncworV2Ugd2lsbCB1c2UgdGhlc2UgdHlwZXMgdG8gY2hlY2sgZm9y IHZhbGlkYXRpb25zCisKKyMjICBQR09JRF9UWVBFX1NFUklBTCAgICAgICAg ICAgICAgICAgICAtNDJMCisjIyAgUEdPSURfVFlQRV9TRVJJQUw4ICAgICAg ICAgICAgICAgICAgLTQzTAorIyMgIFBHT0lEX1RZUEVfU0VSSUFMMiAgICAg ICAgICAgICAgICAgIC00NEwKKyMjICBQR09JRF9UWVBFX0JPT0wgICAgICAg ICAgICAgICAgICAgICAxNkwKKyMjICBQR09JRF9UWVBFX0JZVEVBICAgICAg ICAgICAgICAgICAgICAxN0wKKyMjICBQR09JRF9UWVBFX0NIQVIgICAgICAg ICAgICAgICAgICAgICAxOEwKKyMjICBQR09JRF9UWVBFX05BTUUgICAgICAg ICAgICAgICAgICAgICAxOUwKKyMjICBQR09JRF9UWVBFX0lOVDggICAgICAg ICAgICAgICAgICAgICAyMEwKKyMjICBQR09JRF9UWVBFX0lOVDIgICAgICAg ICAgICAgICAgICAgICAyMUwKKyMjICBQR09JRF9UWVBFX0lOVDQgICAgICAg ICAgICAgICAgICAgICAyM0wKKyMjICBQR09JRF9UWVBFX1RFWFQgICAgICAg ICAgICAgICAgICAgICAyNUwKKyMjICBQR09JRF9UWVBFX09JRCAgICAgICAg ICAgICAgICAgICAgICAyNkwKKyMjICBQR09JRF9UWVBFX1RJRCAgICAgICAg ICAgICAgICAgICAgICAyN0wKKyMjICBQR09JRF9UWVBFX1hJRCAgICAgICAg ICAgICAgICAgICAgICAyOEwKKyMjICBQR09JRF9UWVBFX0NJRCAgICAgICAg ICAgICAgICAgICAgICAyOUwKKyMjICBQR09JRF9UWVBFX0ZMT0FUNCAgICAg ICAgICAgICAgICAgICA3MDBMCisjIyAgUEdPSURfVFlQRV9GTE9BVDggICAg ICAgICAgICAgICAgICAgNzAxTAorIyMgIFBHT0lEX1RZUEVfTU9ORVkgICAg ICAgICAgICAgICAgICAgIDc5MEwKKyMjICBQR09JRF9UWVBFX0NIQVJfQVJS QVkgICAgICAgICAgICAgICAxMDAyTAorIyMgIFBHT0lEX1RZUEVfVEVYVF9B UlJBWSAgICAgICAgICAgICAgIDEwMDlMCisjIyAgUEdPSURfVFlQRV9CUENI QVJfQVJSQVkgICAgICAgICAgICAgMTAxNEwKKyMjICBQR09JRF9UWVBFX1ZB UkNIQVJfQVJSQVkgICAgICAgICAgICAxMDE1TAorIyMgIFBHT0lEX1RZUEVf QlBDSEFSICAgICAgICAgICAgICAgICAgIDEwNDJMCisjIyAgUEdPSURfVFlQ RV9WQVJDSEFSICAgICAgICAgICAgICAgICAgMTA0M0wKKyMjICBQR09JRF9U WVBFX0RBVEUgICAgICAgICAgICAgICAgICAgICAxMDgyTAorIyMgIFBHT0lE X1RZUEVfVElNRSAgICAgICAgICAgICAgICAgICAgIDEwODNMCisjIyAgUEdP SURfVFlQRV9USU1FU1RBTVAgICAgICAgICAgICAgICAgMTExNEwKKyMjICBQ R09JRF9UWVBFX1RJTUVTVEFNUF9BUlJBWSAgICAgICAgICAxMTE1TAorIyMg IFBHT0lEX1RZUEVfVElNRV9BUlJBWSAgICAgICAgICAgICAgIDExODNMCisj IyAgUEdPSURfVFlQRV9USU1FU1RBTVBUWiAgICAgICAgICAgICAgMTE4NEwK KyMjICBQR09JRF9UWVBFX1RJTUVTVEFNUFRaX0FSUkFZICAgICAgICAxMTg1 TAorIyMgIFBHT0lEX1RZUEVfSU5URVJWQUwgICAgICAgICAgICAgICAgIDEx ODZMCisjIyAgUEdPSURfVFlQRV9JTlRFUlZBTF9BUlJBWSAgICAgICAgICAg MTE4N0wKKyMjICBQR09JRF9UWVBFX05VTUVSSUNfQVJSQVkgICAgICAgICAg ICAxMjMxTAorIyMgIFBHT0lEX1RZUEVfVElNRVRaICAgICAgICAgICAgICAg ICAgIDEyNjZMCisjIyAgUEdPSURfVFlQRV9USU1FVFpfQVJSQVkgICAgICAg ICAgICAgMTI3MEwKKyMjICBQR09JRF9UWVBFX0JJVCAgICAgICAgICAgICAg ICAgICAgICAxNTYwTAorIyMgIFBHT0lEX1RZUEVfQklUX0FSUkFZICAgICAg ICAgICAgICAgIDE1NjFMCisjIyAgUEdPSURfVFlQRV9WQVJCSVQgICAgICAg ICAgICAgICAgICAgMTU2MkwKKyMjICBQR09JRF9UWVBFX1ZBUkJJVF9BUlJB WSAgICAgICAgICAgICAxNTYzTAorIyMgIFBHT0lEX1RZUEVfTlVNRVJJQyAg ICAgICAgICAgICAgICAgIDE3MDBMCisjIyAgUEdPSURfVFlQRV9DU1RSSU5H ICAgICAgICAgICAgICAgICAgMjI3NUwKKyMjICBQR09JRF9UWVBFX0FOWSAg ICAgICAgICAgICAgICAgICAgICAyMjc2TAorIyMgIFBHT0lEX1RZUEVfVk9J RCAgICAgICAgICAgICAgICAgICAgIDIyNzhMCisjIyAgUEdPSURfVFlQRV9U UklHR0VSICAgICAgICAgICAgICAgICAgMjI3OUwKKyMjICBQR09JRF9UWVBF X0xBTkdVQUdFX0hBTkRMRVIgICAgICAgICAyMjgwTAorIyMgIFBHT0lEX1RZ UEVfSU5URVJOQUwgICAgICAgICAgICAgICAgIDIyODFMCisjIyAgUEdPSURf VFlQRV9IQU5ETEVSICAgICAgICAgICAgICAgICAgMzExNUwKKyIiIgpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK --001a1135a06c8469ee052e3bd02a 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 --001a1135a06c8469ee052e3bd02a--