Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aj1yc-0005ZO-Vl for pgadmin-hackers@arkaria.postgresql.org; Thu, 24 Mar 2016 09:54:51 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aj1yc-0000pr-Hu for pgadmin-hackers@arkaria.postgresql.org; Thu, 24 Mar 2016 09:54:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aj1yX-0000js-KB for pgadmin-hackers@postgresql.org; Thu, 24 Mar 2016 09:54:45 +0000 Received: from mail-lb0-x232.google.com ([2a00:1450:4010:c04::232]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aj1yQ-0001RJ-80 for pgadmin-hackers@postgresql.org; Thu, 24 Mar 2016 09:54:45 +0000 Received: by mail-lb0-x232.google.com with SMTP id qe11so26512349lbc.3 for ; Thu, 24 Mar 2016 02:54:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=UZ3xThPpQhWO40EzDi/14ftV3iJzgD6VPsy239DLZVs=; b=M3UVvf7MsNF1mECw4QpeewObv9pXRhUp4KS+R20AxoZvqg+YedreNQw1k/FZH6qJZY mVqIXpHUxdKhpS+54JGZyil9zaI/KLBR1GO+hLlJBUbXi3F29kdJgn64g3CWWzqy7J1T hYLpsDydP4SD9A3zGZmZzoPgyWXXXKU2BtUom7FTOU0Puh2KXus29T9IlzIF1ys6dLwu I2d+4ynNuk8h1ry2xkc42/jvy+5qeBddoyU8ZimEyDQtM4TqUDNOhUxZSzCNm9sV2GS1 9uKq7rpCxdIIM6Z0fEYK28ULkVP+LWDZDaibH+r5rowiY0wVK5brqTLx0MWF3+IGnq/O V8rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=UZ3xThPpQhWO40EzDi/14ftV3iJzgD6VPsy239DLZVs=; b=fROOr0GbOWstXpbPEodeY5Ukcoqmon4iJvVTEWfzhxTuAKajb7Ze2IZetLl3+AXL+G SV/Ecek3R3GOSv+P811OT/fOAEwcR8oDFdYOBCR0nD2tzz5j5joOBfoePTwpB1Ql1VVR KXUlOrt9fMwQv/SdTQXs9SDTqh1MhrYE4PLupaHZcHj2hWGI4GMj1gR70gNromkSYZN8 jKleeeMJrN+rODfjd8f7mAIrvEfRotUd3vfDLD1eUZTu+sLo4HwT87r4LlOLDZ5+OPIe JXkIDGah38czlvH/j+0gbFoTUehdZJTErmGg3PXPWAEE3XRWGSa4UnNLLB7WPcqlPBho l16g== X-Gm-Message-State: AD7BkJLCucdGdBw1l9MMK/25I886rJ2Nk/KvO83Vhj6Vif0xvAzMiQa5jXaVei4cFFZkx871Xdd8WWse/YembdmV MIME-Version: 1.0 X-Received: by 10.112.199.138 with SMTP id jk10mr3019568lbc.91.1458813276816; Thu, 24 Mar 2016 02:54:36 -0700 (PDT) Received: by 10.25.159.85 with HTTP; Thu, 24 Mar 2016 02:54:36 -0700 (PDT) In-Reply-To: References: Date: Thu, 24 Mar 2016 15:24:36 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11c3358a2923a8052ec86fac 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 --001a11c3358a2923a8052ec86fac Content-Type: multipart/alternative; boundary=001a11c3358a2923a2052ec86faa --001a11c3358a2923a2052ec86faa Content-Type: text/plain; charset=UTF-8 Hi, Please find the attached updated patch for the Domain module. Thanks, Khushboo On Wed, Mar 23, 2016 at 6:35 PM, Dave Page wrote: > Hi > > Almost there :-s > > - The hint for default should be a placeholder in the textbox itself > (like combos have "Select from the list" > Done > - I should be able to check the "Validate?" option on one or more > constraints from within the Domain dialogue > Done. Constraint Name can also be changed through the Domain dialogue. > - Please ensure the capitalisation of all property labels is > consistent - it should be "Base type" not "Base Type", "System > domain?" not "System Domain?" etc. > Done > - The check constraint reverse engineered SQL should include the path > to the constraint, e.g. > > Done > -- CHECK: schema.domain.check_at > > Once that's done, it can be committed I think. > > Thanks. > > On Wed, Mar 23, 2016 at 7:27 AM, Khushboo Vashi > wrote: > > Updated one comment. > > > > On Wed, Mar 23, 2016 at 12:48 PM, Khushboo Vashi > > wrote: > >> > >> Hi, > >> > >> Please find attached updated patch for the Domains module. > >> > >> On Wed, Mar 16, 2016 at 9:40 PM, Dave Page wrote: > >>> > >>> Hi > >>> > >>> On Wed, Mar 16, 2016 at 2:03 PM, Khushboo Vashi > >>> wrote: > >>> > Hi, > >>> > > >>> > Please find the updated Domain Module Patch. > >>> > > >>> > To test this patch, please apply Backgrid Textarea Cell Patch before > >>> > this. > >>> > >>> Thanks. I believe with the following fixes, we'll be done :-) > >>> > >>> - Default values should be auto-quoted when necessary (ie. strings, on > >>> a text-based domain). > >> > >> As per our discussion, this should leave unquoted. > > > > And also added a hint to the field stated 'Enter an expression or a > value.' > >> > >> > >>> - "System Domain?" should be in the General section, between owner and > >>> comment. > >> > >> Done > >>> > >>> - The switches should use the same colouring/styling as other objects, > >>> e.g. > >>> > >>> options: { > >>> 'onText': 'Yes', 'offText': 'No', > >>> 'onColor': 'success', 'offColor': 'primary', > >>> 'size': 'small' > >>> } > >> > >> Done > >>> > >>> - Please remove the Schema property from the main properties tab (not > >>> the properties dialogue). > >> > >> Done > >>> > >>> - No icon is show for Checks on the Dependents tab for a domain. > >> > >> Done > >>> > >>> - The add button on the Security Labels tab is spelt "Add". Why is > >>> that? Other instances of this grid use "ADD" which is the default in > >>> backform.pgadmin.js. > >> > >> Done > >>> > >>> - Dependencies on domain check constraints are listed as being on a > >>> "Type" not a "Domain". > >> > >> Done > >>> > >>> - If adding a domain constraint using the grid on the Domain dialogue, > >>> I cannot specify "NOT VALID". We need a checkbox for that in a narrow > >>> columns at the end. Unchecking it for an existing constraint should be > >>> the equivalent of doing "ALTER DOMAIN ... VALIDATE CONSTRAINT" > >> > >> Done > >>> > >>> - If I switch the "Don't Validate" switch on a constraint, there are > >>> leading blank lines in the generated SQL. The same occurs when adding > >>> a comment to a constraint. > >> > >> Done > >>> > >>> - I think we need to reverse the meaning of "Don't Validate" and > >>> rename to match the "Valid?" field that's on the properties list. > >>> Otherwise it's not clear they're the same thing. > >> > >> Done > >>> > >>> - s/Not Null/Not Null?/ > >> > >> Done > >>> > >>> > >>> > >>> -- > >>> Dave Page > >>> Blog: http://pgsnake.blogspot.com > >>> Twitter: @pgsnake > >>> > >>> EnterpriseDB UK: http://www.enterprisedb.com > >>> The Enterprise PostgreSQL Company > >> > >> > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a11c3358a2923a2052ec86faa Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached u= pdated patch for the Domain module.

Thanks,
Khushboo<= br>

On Wed, Mar 23= , 2016 at 6:35 PM, Dave Page <dpage@pgadmin.org> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">Hi

Almost there :-s

- The hint for default should be a placeholder in the textbox itself
(like combos have "Select from the list"
Done
- I should be able to check the "Validate?" option on one or more=
constraints from within the Domain dialogue
Done.
Constraint Name can also be changed through the Domain dial= ogue.
- Please ensure the capitalisation of all property labels is
consistent - it should be "Base type" not "Base Type", = "System
domain?" not "System Domain?" etc.
Done=C2=A0
- The check constraint reverse engineered SQL should include the path
to the constraint, e.g.

Done=C2=A0
-- CHECK: schema.domain.check_at

Once that's done, it can be committed I think.

Thanks.

On Wed, Mar 23, 2016 at 7:27 AM, Khushboo Vashi
<khushboo.vashi@enter= prisedb.com> wrote:
> Updated one comment.
>
> On Wed, Mar 23, 2016 at 12:48 PM, Khushboo Vashi
> <khushboo.vashi@= enterprisedb.com> wrote:
>>
>> Hi,
>>
>> Please find attached updated patch for the Domains module.
>>
>> On Wed, Mar 16, 2016 at 9:40 PM, Dave Page <dpage@pgadmin.org> wrote:
>>>
>>> Hi
>>>
>>> On Wed, Mar 16, 2016 at 2:03 PM, Khushboo Vashi
>>> <khushbo= o.vashi@enterprisedb.com> wrote:
>>> > Hi,
>>> >
>>> > Please find the updated Domain Module Patch.
>>> >
>>> > To test this patch, please apply Backgrid Textarea Cell P= atch before
>>> > this.
>>>
>>> Thanks. I believe with the following fixes, we'll be done = :-)
>>>
>>> - Default values should be auto-quoted when necessary (ie. str= ings, on
>>> a text-based domain).
>>
>> As per our discussion, this should leave unquoted.
>
> And also added a hint to the field stated 'Enter an expression or = a value.'
>>
>>
>>> - "System Domain?" should be in the General section,= between owner and
>>> comment.
>>
>> Done
>>>
>>> - The switches should use the same colouring/styling as other = objects,
>>> e.g.
>>>
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0options: {
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'onText'= ;: 'Yes', 'offText': 'No',
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'onColor= 9;: 'success', 'offColor': 'primary',
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'size':= 'small'
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>
>> Done
>>>
>>> - Please remove the Schema property from the main properties t= ab (not
>>> the properties dialogue).
>>
>> Done
>>>
>>> - No icon is show for Checks on the Dependents tab for a domai= n.
>>
>> Done
>>>
>>> - The add button on the Security Labels tab is spelt "Add= ". Why is
>>> that? Other instances of this grid use "ADD" which i= s the default in
>>> backform.pgadmin.js.
>>
>> Done
>>>
>>> - Dependencies on domain check constraints are listed as being= on a
>>> "Type" not a "Domain".
>>
>> Done
>>>
>>> - If adding a domain constraint using the grid on the Domain d= ialogue,
>>> I cannot specify "NOT VALID". We need a checkbox for= that in a narrow
>>> columns at the end. Unchecking it for an existing constraint s= hould be
>>> the equivalent of doing "ALTER DOMAIN ... VALIDATE CONSTR= AINT"
>>
>> Done
>>>
>>> - If I switch the "Don't Validate" switch on a c= onstraint, there are
>>> leading blank lines in the generated SQL. The same occurs when= adding
>>> a comment to a constraint.
>>
>> Done
>>>
>>> - I think we need to reverse the meaning of "Don't Va= lidate" and
>>> rename to match the "Valid?" field that's on the= properties list.
>>> Otherwise it's not clear they're the same thing.
>>
>> Done
>>>
>>> - s/Not Null/Not Null?/
>>
>> Done
>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>
>>
>



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

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--001a11c3358a2923a2052ec86faa-- --001a11c3358a2923a8052ec86fac Content-Type: text/x-patch; charset=US-ASCII; name="Domains_ver_7.patch" Content-Disposition: attachment; filename="Domains_ver_7.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_im63q7z20 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMWIyNGEKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsODI0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBEb21haW4g Tm9kZS4iIiIKKworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20g cGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2Us IFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVy bmFsX3NlcnZlcl9lcnJvciwgZ29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIu dXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJy b3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUK K2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LmRhdGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20g cGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzLnV0aWxzIGltcG9ydCBcCisgICAgU2NoZW1hQ2hpbGRNb2R1bGUsIERh dGFUeXBlUmVhZGVyCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnV0aWxzIGltcG9ydCBcCisgICAgcGFy c2Vfc2VjX2xhYmVsc19mcm9tX2RiCitmcm9tIGZ1bmN0b29scyBpbXBvcnQg d3JhcHMKKworCitjbGFzcyBEb21haW5Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1 bGUpOgorICAgICIiIgorICAgIGNsYXNzIERvbWFpbk1vZHVsZShTY2hlbWFD aGlsZE1vZHVsZSk6CisKKyAgICAgICAgVGhpcyBjbGFzcyByZXByZXNlbnRz IFRoZSBEb21haW4gTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0t LS0tCisgICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAt IEluaXRpYWxpemUgdGhlIERvbWFpbiBNb2R1bGUuCisKKyAgICAqIGdldF9u b2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBHZW5lcmF0ZSB0 aGUgZG9tYWluIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogc2NyaXB0X2xv YWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBkb21h aW4sIHdoZW4gc2NoZW1hIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQu CisgICAgIiIiCisKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWluJworICAgIENP TExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJEb21haW5zIikKKworICAgIGRl ZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBz dXBlcihEb21haW5Nb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3 YXJncykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBz ZWxmLm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg R2VuZXJhdGUgdGhlIGRvbWFpbiBjb2xsZWN0aW9uIG5vZGUuCisgICAgICAg ICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29s bGVjdGlvbl9ub2RlKHNjaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg c2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2Fk IHRoZSBtb2R1bGUgc2NyaXB0IGZvciBkb21haW4sIHdoZW4gc2NoZW1hIG5v ZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAg ICAgICByZXR1cm4gc2NoZW1hcy5TY2hlbWFNb2R1bGUuTk9ERV9UWVBFCisK KworYmx1ZXByaW50ID0gRG9tYWluTW9kdWxlKF9fbmFtZV9fKQorCisKK2Ns YXNzIERvbWFpblZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRl cik6CisgICAgIiIiCisgICAgY2xhc3MgRG9tYWluVmlldworCisgICAgVGhp cyBjbGFzcyBpbmhlcml0cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBk aWZmZXJlbnQgcm91dGVzIGZvcgorICAgIHRoZSBtb2R1bGUuIEFsc28sIGlu aGVyaXRzIERhdGFUeXBlUmVhZGVyIHRvIGdldCBkYXRhIHR5cGVzLgorCisg ICAgVGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRvIENyZWF0ZSwgUmVhZCwg VXBkYXRlIGFuZCBEZWxldGUgb3BlcmF0aW9ucyBmb3IKKyAgICB0aGUgRG9t YWluLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxp ZGF0ZV9yZXF1ZXN0KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRv ci4KKyAgICAgICAgVmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0 IG9mIGNyZWF0ZSwgdXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAq IG1vZHVsZV9qcygpOgorICAgICAgLSBMb2FkIEpTIGZpbGUgKGRvbWFpbnMu anMpIGZvciB0aGlzIG1vZHVsZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0 aW9uKGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg IC0gIENoZWNrcyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAg IC0gIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToK KyAgICAgIC0gTGlzdCB0aGUgRG9tYWlucy4KKworICAgICogbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBE b21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisg ICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgor ICAgICAgLSBSZXR1cm5zIHRoZSBEb21haW4gcHJvcGVydGllcy4KKworICAg ICogZ2V0X2NvbGxhdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1O b25lKToKKyAgICAgIC0gUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgKiBj cmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMg YSBuZXcgRG9tYWluIG9iamVjdC4KKworICAgICogdXBkYXRlKGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVzIHRoZSBEb21h aW4gb2JqZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gb2JqZWN0Lgor CisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToK KyAgICAgIC0gUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIG9iamVj dC4KKworICAgICogbXNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5v bmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAg ICAqIGdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6 CisgICAgICAtIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3Jl YXRlL3VwZGF0ZSB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICogZGVwZW5k ZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBvYmplY3QuCisK KyAgICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk KToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUg RG9tYWluIG9iamVjdC4KKworICAgICogdHlwZXMoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZm5pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyBEYXRhIFR5cGVz LgorICAgICIiIgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVf dHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0eXBlJzog J2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdkaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lk J30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50 JywgJ2lkJzogJ2RvaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBk aWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0Jzog J3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBk YXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAn Y3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2Rl bGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dl dCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0Jzog J25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBb eydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdt c3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7 J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6 IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRl bnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVs ZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAg ICAgJ2dldF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dldCc6ICd0 eXBlcyd9XSwKKyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAg ICAgICAgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAg IHsnZ2V0JzogJ2dldF9jb2xsYXRpb25zJ30KKyAgICAgICAgXQorICAgIH0p CisKKyAgICBkZWYgdmFsaWRhdGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIi CisgICAgICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxp ZGF0aW5nIHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRh dGUgYW5kIG1vZGlmaWVkIFNRTC4KKworICAgICAgICBSZXF1aXJlZCBBcmdz OgorICAgICAgICAgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHRoZSBEb21h aW4KKyAgICAgICAgICAgICAgICAgICAgb3duZXI6IERvbWFpbiBPd25lcgor ICAgICAgICAgICAgICAgICAgICBiYXNlbnNwOiBTY2hlbWEgTmFtZQorICAg ICAgICAgICAgICAgICAgICBiYXNldHlwZTogRGF0YSBUeXBlIG9mIHRoZSBE b21haW4KKworICAgICAgICBBYm92ZSBib3RoIHRoZSBhcmd1bWVudHMgd2ls bCBub3QgYmUgdmFsaWRhdGVkIGluIHRoZSB1cGRhdGUgYWN0aW9uLgorICAg ICAgICAiIiIKKworICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdy YXAoc2VsZiwgKiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30K KyAgICAgICAgICAgIGlmIHJlcXVlc3QuZGF0YToKKyAgICAgICAgICAgICAg ICByZXEgPSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVxID0gcmVxdWVz dC5hcmdzIG9yIHJlcXVlc3QuZm9ybQorCisgICAgICAgICAgICBpZiAnZG9p ZCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICByZXF1aXJlZF9h cmdzID0gWworICAgICAgICAgICAgICAgICAgICAnbmFtZScsCisgICAgICAg ICAgICAgICAgICAgICdiYXNldHlwZScKKyAgICAgICAgICAgICAgICBdCisK KyAgICAgICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Cisg ICAgICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVth cmddID09ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1z Zz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Q291bGRuJ3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg ICAgICAgKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg bGlzdF9wYXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3Qu bWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3Bh cmFtcyA9IFsnY29uc3RyYWludHMnLCAnc2VjbGFiZWxzJ10KKworICAgICAg ICAgICAgICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAgICAgICAgICAg ICBpZiBrZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXldICE9ICcnIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVxW2tleV0gaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmVydHMg c3RyaW5nIGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQuCisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBqc29uLmxvYWRzKHJlcVtr ZXldKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAndHlwbm90 bnVsbCc6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBU cnVlIGlmIHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XSBpc1wKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRydWUgZWxzZVwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoRmFsc2UgaWYgcmVxW2tleV0gPT0gJ2ZhbHNlJyBv ciByZXFba2V5XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlIGVsc2UgJycp CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICAgICAgICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAgIHJl dHVybiBmKHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFw CisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgTG9hZCBKUyBmaWxlIChkb21haW5zLmpzKSBmb3IgdGhpcyBtb2R1 bGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25z ZSgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAiZG9tYWlucy9qcy9kb21haW5zLmpzIiwKKyAgICAgICAgICAgICAg ICBfPWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAs IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9 CisgICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6 CisgICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4K KyAgICAgICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgor ICAgICAgICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRl IHBhdGguCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAg ICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNl bGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5hZ2Vy ID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQor ICAgICAgICAgICAgIyBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAg ICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlk PWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBk cml2ZXIucXRJZGVudAorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25u LmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25k aXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQo IkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIpCisg ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1h bmFnZXIudmVyc2lvbgorICAgICAgICAgICAgc2VydmVyX3R5cGUgPSBzZWxm Lm1hbmFnZXIuc2VydmVyX3R5cGUKKworICAgICAgICAgICAgIyB3ZSB3aWxs IHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAg ICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVt cGxhdGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjJfcGx1cycKKyAgICAgICAg ICAgIGVsaWYgdmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYu dGVtcGxhdGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjFfcGx1cycKKworICAg ICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAg IHJldHVybiB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAg ICIiIgorICAgICAgICBMaXN0IHRoZSBEb21haW5zLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAi IiIKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jv d3MnXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl dHVybnMgYWxsIHRoZSBEb21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRo ZSBicm93c2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIKKworICAgICAgICByZXMgPSBb XQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQo CisgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJv d3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAor ICAgICAgICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAg ICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNv bi1kb21haW4iCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMs CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFJldHVybnMgdGhlIERvbWFpbiBwcm9wZXJ0aWVzLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0 YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAg ICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9ZG9pZCkKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlm IGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBn b25lKGdldHRleHQoIiIiCitDb3VsZCBub3QgZmluZCB0aGUgZG9tYWluIGlu IHRoZSBkYXRhYmFzZS4KK0l0IG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBieSBh bm90aGVyIHVzZXIgb3IKK3NoaWZ0ZWQgdG8gdGhlIGFub3RoZXIgc2NoZW1h LgorIiIiKSkKKworICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKwor ICAgICAgICAjIEdldCBUeXBlIExlbmd0aCBhbmQgUHJlY2lzaW9uCisgICAg ICAgIGRhdGEudXBkYXRlKHNlbGYuX3BhcnNlX3R5cGUoZGF0YVsnZnVsbHR5 cGUnXSkpCisKKyAgICAgICAgIyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfY29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsn Y29uc3RyYWludHMnXSA9IHJlc1sncm93cyddCisKKyAgICAgICAgIyBHZXQg Zm9ybWF0dGVkIFNlY3VyaXR5IExhYmVscworICAgICAgICBpZiAnc2VjbGFi ZWxzJyBpbiBkYXRhOgorICAgICAgICAgICAgZGF0YS51cGRhdGUocGFyc2Vf c2VjX2xhYmVsc19mcm9tX2RiKGRhdGFbJ3NlY2xhYmVscyddKSkKKworICAg ICAgICAjIFNldCBTeXN0ZW0gRG9tYWluIFN0YXR1cworICAgICAgICBkYXRh WydzeXNkb21haW4nXSA9IEZhbHNlCisgICAgICAgIGlmIGRvaWQgPD0gc2Vs Zi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCddOgorICAg ICAgICAgICAgZGF0YVsnc3lzZG9tYWluJ10gPSBUcnVlCisKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1k YXRhLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAg ICBkZWYgX3BhcnNlX3R5cGUoc2VsZiwgYmFzZXR5cGUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyBUeXBlIGFuZCBEYXRhIFR5cGUgZnJvbSB0 aGUgYmFzZXR5cGUuCisgICAgICAgICIiIgorICAgICAgICB0eXBfbGVuID0g JycKKyAgICAgICAgdHlwX3ByZWNpc2lvbiA9ICcnCisKKyAgICAgICAgIyBU aGUgTGVuZ3RoIGFuZCB0aGUgcHJlY2lzaW9uIG9mIHRoZSBEYXRhdHlwZSBz aG91bGQgYmUgc2VwYXJhdGUuCisgICAgICAgICMgVGhlIEZvcm1hdCB3ZSBn ZXR0aW5nIGZyb20gZGF0YWJhc2UgaXM6IG51bWVyaWMoMSwxKQorICAgICAg ICAjIFNvLCB3ZSBuZWVkIHRvIHNlcGFyYXRlIExlbmd0aDogMSwgUHJlY2lz aW9uOiAxCisKKyAgICAgICAgaWYgYmFzZXR5cGUgIT0gJycgYW5kIGJhc2V0 eXBlLmZpbmQoIigiKSA+IDA6CisgICAgICAgICAgICBzdWJzdHIgPSBiYXNl dHlwZVtiYXNldHlwZS5maW5kKCIoIikgKyAxOmxlbigKKyAgICAgICAgICAg ICAgIGJhc2V0eXBlKSAtIDFdCisgICAgICAgICAgICB0eXBsZW4gPSBzdWJz dHIuc3BsaXQoIiwiKQorICAgICAgICAgICAgaWYgbGVuKHR5cGxlbikgPiAx OgorICAgICAgICAgICAgICAgIHR5cF9sZW4gPSB0eXBsZW5bMF0KKyAgICAg ICAgICAgICAgICB0eXBfcHJlY2lzaW9uID0gdHlwbGVuWzFdCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHR5cF9sZW4gPSB0eXBsZW4K KyAgICAgICAgICAgICAgICB0eXBfcHJlY2lzaW9uID0gJycKKworICAgICAg ICByZXR1cm4geyd0eXBsZW4nOiB0eXBfbGVuLCAncHJlY2lzaW9uJzogdHlw X3ByZWNpc2lvbn0KKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X2NvbGxhdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgQ29s bGF0aW9ucy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAg ICAgICAiIiIKKworICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFs dWUnOiAnJ31dCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X2NvbGxhdGlvbnMuc3FsJ10pKQorICAgICAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICByZXMuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydj b3B5X2NvbGxhdGlvbiddfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgdHlwZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVy bnMgdGhlIERhdGEgVHlwZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmbmlkOiBGdW5j dGlvbiBJZAorICAgICAgICAiIiIKKworICAgICAgICBjb25kaXRpb24gPSAi IiJ0eXBpc2RlZmluZWQgQU5EIHR5cHR5cGUgSU4gKCdiJywgJ2MnLCAnZCcs ICdlJywgJ3InKQorQU5EIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZQorQU5EIHJl bG5hbWUgPSB0eXBuYW1lIEFORCByZWxraW5kICE9ICdjJykgQU5ECisodHlw bmFtZSBOT1QgTElLRSAnXyUnIE9SIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZS T00gcGdfY2xhc3MgV0hFUkUKK3JlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2Ug QU5EIHJlbG5hbWUgPSBzdWJzdHJpbmcodHlwbmFtZSBGUk9NIDIpOjpuYW1l CitBTkQgcmVsa2luZCAhPSAnYycpKSIiIgorCisgICAgICAgIGlmIHNlbGYu Ymx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHM6CisgICAgICAgICAgICBj b25kaXRpb24gKz0gIiBBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9u X3NjaGVtYSciCisKKyAgICAgICAgIyBHZXQgVHlwZXMKKyAgICAgICAgc3Rh dHVzLCB0eXBlcyA9IHNlbGYuZ2V0X3R5cGVzKHNlbGYuY29ubiwgY29uZGl0 aW9uKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXR5cGVzKQor CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBkYXRhPXR5cGVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQHZhbGlk YXRlX3JlcXVlc3QKKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlcyBhIG5l dyBEb21haW4gb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAg ICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWlu IElkCisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5h bWU6IERvbWFpbiBOYW1lCisgICAgICAgICAgICBvd25lcjogT3duZXIgTmFt ZQorICAgICAgICAgICAgYmFzZW5zcDogU2NoZW1hIE5hbWUKKyAgICAgICAg ICAgIGJhc2V0eXBlOiBEb21haW4gQmFzZSBUeXBlCisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIERvbWFpbiBvYmplY3QgaW4ganNvbiBmb3Jt YXQuCisgICAgICAgICIiIgorCisgICAgICAgIGRhdGEgPSBzZWxmLnJlcXVl c3QKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhdHVzLCBTUUwgPSBz ZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQpCisKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNR TCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgICMgV2UgbmVlZCBvaWQgdG8gdG8gYWRkIG9iamVj dCBpbiB0cmVlIGF0IGJyb3dzZXIsIGJlbG93IHNxbCB3aWxsCisgICAgICAg ICAgICAjIGdpdmVzIHRoZSBzYW1lCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9vaWQuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJhc2Vuc3A9ZGF0YVsnYmFzZW5zcCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWU9ZGF0YVsnbmFtZSddKQorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgIGRvaWQsIHNjaWQgPSByZXNbJ3Jvd3MnXVsw XQorCisgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAg ICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9k ZSgKKyAgICAgICAgICAgICAgICAgICAgZG9pZCwKKyAgICAgICAgICAgICAg ICAgICAgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSdd LAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWRvbWFpbiIKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9w cyB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAg ICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDog U2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERv bWFpbiBJZAorICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLmNtZCA9 PSAnZGVsZXRlJzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUg b3BlcmF0aW9uCisgICAgICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwg ZG9pZD1kb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIG5hbWUsIGJh c2Vuc3AgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZT1uYW1lLCBiYXNlbnNwPWJhc2Vuc3AsIGNhc2NhZGU9Y2Fz Y2FkZSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAg ICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiRG9tYWluIGRyb3BwZWQiKSwK KyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg J2lkJzogZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lk LAorICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAg ICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAn ZGlkJzogZGlkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2YWxpZGF0ZV9y ZXF1ZXN0CisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZXMgdGhl IERvbWFpbiBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4g SWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxm LmdldF9zcWwoZ2lkLCBzaWQsIHNlbGYucmVxdWVzdCwgc2NpZCwgZG9pZCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgICAgICMgR2V0IFNjaGVtYSBJZAorICAg ICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQp CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHNj aWQgPSByZXNbJ3Jvd3MnXVswXVsnc2NpZCddCisKKyAgICAgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkRv bWFpbiB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzog ZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1 cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6 IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBEb21haW4gb2JqZWN0 LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIi IgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAj IEdldCBUeXBlIExlbmd0aCBhbmQgUHJlY2lzaW9uCisgICAgICAgIGRhdGEu dXBkYXRlKHNlbGYuX3BhcnNlX3R5cGUoZGF0YVsnZnVsbHR5cGUnXSkpCisK KyAgICAgICAgIyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfY29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsnY29uc3RyYWlu dHMnXSA9IHJlc1sncm93cyddCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwn XSksIGRhdGE9ZGF0YSkKKworICAgICAgICBzcWxfaGVhZGVyID0gIiIiLS0g RE9NQUlOOiB7MH0KKworLS0gRFJPUCBET01BSU4gezB9OworCisiIiIuZm9y bWF0KGRhdGFbJ2Jhc2Vuc3AnXSArICcuJyArIGRhdGFbJ25hbWUnXSkKKwor ICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgU1FMCisKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMLnN0cmlwKCdcbicpKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2YWxpZGF0ZV9yZXF1 ZXN0CisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhl IG1vZGlmaWVkIFNRTC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJ ZAorCisgICAgICAgIFJlcXVpcmVkIEFyZ3M6CisgICAgICAgICAgICBuYW1l OiBEb21haW4gTmFtZQorICAgICAgICAgICAgb3duZXI6IE93bmVyIE5hbWUK KyAgICAgICAgICAgIGJhc2Vuc3A6IFNjaGVtYSBOYW1lCisgICAgICAgICAg ICBiYXNldHlwZTogRG9tYWluIEJhc2UgVHlwZQorCisgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBk YXRlIHRoZSBEb21haW4uCisgICAgICAgICIiIgorCisgICAgICAgIHN0YXR1 cywgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBzZWxmLnJlcXVlc3Qs IHNjaWQsIGRvaWQpCisKKyAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBk YXRhPVNRTCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gU1FM CisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBnaWQsIHNpZCwgZGF0YSwgc2Np ZCwgZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRl cyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9t YWluLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAg ICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGRvaWQgaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJl c1sncm93cyddWzBdCisKKyAgICAgICAgICAgICAgICAjIEdldCBEb21haW4g Q29uc3RyYWludHMKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf Y29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgICAgIGNvbl9kYXRhID0ge30KKyAgICAgICAgICAg ICAgICBmb3IgYyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAg ICAgY29uX2RhdGFbY1snY29ub2lkJ11dID0gYworCisgICAgICAgICAgICAg ICAgb2xkX2RhdGFbJ2NvbnN0cmFpbnRzJ10gPSBjb25fZGF0YQorCisgICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBk YXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBv X2RhdGE9b2xkX2RhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSkKKyAgICAg ICAgICAgIHJldHVybiBUcnVlLCBTUUwuc3RyaXAoJ1xuJykKKworICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g RmFsc2UsIGUKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg ZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBk ZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBm b3IgdGhlIERvbWFpbiBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9t YWluIElkCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRzX3Jlc3Vs dCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25uLCBkb2lkKQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBy ZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbmNpZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4g YWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhlIERvbWFpbiBub2RlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ ZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5k ZW5jaWVzKHNlbGYuY29ubiwgZG9pZCkKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5j aWVzX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAg ICAgICAgICAgICAgKQorCitEb21haW5WaWV3LnJlZ2lzdGVyX25vZGVfdmll dyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL2RvbWFpbi1jb25zdHJhaW50cy9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmY2FjZTEK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDY5MSBA QAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor IiIiSW1wbGVtZW50cyB0aGUgRG9tYWluIENvbnN0cmFpbnQgTW9kdWxlLiIi IgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQg UEdDaGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNj aGVtYXMuZG9tYWlucyBcCisgICAgYXMgZG9tYWlucworZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJlZAorZnJv bSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJv bSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIGZ1bmN0 b29scyBpbXBvcnQgd3JhcHMKKworCitjbGFzcyBEb21haW5Db25zdHJhaW50 TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIKKyAgICBj bGFzcyBEb21haW5Db25zdHJhaW50TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9k dWxlKToKKworICAgICAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgVGhlIERv bWFpbiBDb25zdHJhaW50IE1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAg LS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAg ICAgLSBJbml0aWFsaXplIHRoZSBEb21haW4gQ29uc3RyYWludCBNb2R1bGUu CisKKyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAg ICAgLSBHZW5lcmF0ZSB0aGUgRG9tYWluIENvbnN0cmFpbnQgY29sbGVjdGlv biBub2RlLgorCisgICAgKiBub2RlX2lub2RlKGdpZCwgc2lkLCBkaWQsIHNj aWQpCisgICAgICAtIFJldHVybnMgRG9tYWluIENvbnN0cmFpbnQgbm9kZSBh cyBsZWFmIG5vZGUuCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0g TG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgdGhlIERvbWFpbiBDb25zdHJh aW50LCB3aGVuIGFueSBvZiB0aGUKKyAgICAgICAgRG9tYWluIG5vZGUgaXMg aW5pdGlhbGl6ZWQuCisgICAgIiIiCisgICAgTk9ERV9UWVBFID0gJ2RvbWFp bi1jb25zdHJhaW50cycKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4 dCgiRG9tYWluIENvbnN0cmFpbnRzIikKKworICAgIGRlZiBfX2luaXRfXyhz ZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihEb21haW5D b25zdHJhaW50TW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2Fy Z3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2Vs Zi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIEdlbmVyYXRlIHRoZSBEb21haW4gQ29uc3RyYWludCBjb2xsZWN0aW9u IG5vZGUuCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVy YXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGRvaWQpCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgRG9tYWluIENvbnN0cmFpbnQgbm9kZSBhcyBs ZWFmIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRmFsc2UK KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQg Zm9yIHRoZSBEb21haW4gQ29uc3RyYWludCwgd2hlbiBhbnkgb2YgdGhlCisg ICAgICAgIERvbWFpbiBub2RlIGlzIGluaXRpYWxpemVkLgorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIGRvbWFpbnMuRG9tYWluTW9kdWxlLk5PREVf VFlQRQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNzc3NuaXBwZXRzKHNl bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIHNuaXBwZXQg b2YgY3NzIHRvIGluY2x1ZGUgaW4gdGhlIHBhZ2UKKyAgICAgICAgIiIiCisg ICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiZG9tYWluLWNvbnN0cmFpbnRz L2Nzcy9kb21haW4tY29uc3RyYWludHMuY3NzIiwKKyAgICAgICAgICAgICAg ICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlCisgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICBdCisKKworCitibHVlcHJpbnQg PSBEb21haW5Db25zdHJhaW50TW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNz IERvbWFpbkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAg IiIiCisgICAgY2xhc3MgRG9tYWluQ29uc3RyYWludFZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKKworICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgUEdDaGlsZE5v ZGVWaWV3IHRvIGdldCB0aGUgZGlmZmVyZW50IHJvdXRlcyBmb3IKKyAgICB0 aGUgbW9kdWxlLgorCisgICAgVGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRv IENyZWF0ZSwgUmVhZCwgVXBkYXRlIGFuZCBEZWxldGUgb3BlcmF0aW9ucyBm b3IKKyAgICB0aGUgRG9tYWluIENvbnN0cmFpbnQuCisKKyAgICBNZXRob2Rz OgorICAgIC0tLS0tLS0KKworICAgICogbW9kdWxlX2pzKCk6CisgICAgICAt IExvYWQgSlMgZmlsZSAoZG9tYWluLWNvbnN0cmFpbnRzLmpzKSBmb3IgdGhp cyBtb2R1bGUuCisKKyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAg ICAgIC0gV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAtICBDaGVja3Mg ZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAgICAtICBBdHRhY2gg Y29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisKKyAgICAq IGxpc3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAtIExp c3QgdGhlIERvbWFpbiBDb25zdHJhaW50cy4KKworICAgICogbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBE b21haW4gQ29uc3RyYWludHMgdG8gZ2VuZXJhdGUgTm9kZXMgaW4gdGhlIGJy b3dzZXIuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAtIFJldHVybnMgdGhlIERvbWFpbiBDb25zdHJh aW50IHByb3BlcnRpZXMuCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlk LCBzY2lkKToKKyAgICAgIC0gQ3JlYXRlcyBhIG5ldyBEb21haW4gQ29uc3Ry YWludCBvYmplY3QuCisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBz Y2lkLCBkb2lkKToKKyAgICAgIC0gVXBkYXRlcyB0aGUgRG9tYWluIENvbnN0 cmFpbnQgb2JqZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gQ29uc3Ry YWludCBvYmplY3QuCisKKyAgICAqIHNxbChnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBTUUwgZm9yIHRo ZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAqIG1zcWwoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJu cyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAgKiBnZXRfc3FsKGdpZCwgc2lk LCBkYXRhLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgLSBHZW5lcmF0ZXMg dGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIERvbWFp biBDb25zdHJhaW50LgorICAgICAgICBvYmplY3QuCisKKyAgICAqIGRlcGVu ZGVudHMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAg ICAtIFJldHVybnMgdGhlIGRlcGVuZGVudHMgZm9yIHRoZSBEb21haW4gQ29u c3RyYWludCBvYmplY3QuCisKKyAgICAqIGRlcGVuZGVuY2llcyhnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lkKToKKyAgICAgIC0gUmV0dXJucyB0 aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2Jq ZWN0LgorICAgICIiIgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2Rl X3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgIHsndHlwZSc6 ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnZGlkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2Np ZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2RvaWQnfQor ICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAn aWQnOiAnY29pZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3Qo eworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJv cGVydGllcycsICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUn fSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVh dGUnfQorICAgICAgICBdLAorICAgICAgICAnZGVsZXRlJzogW3snZGVsZXRl JzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ2NoaWxkcmVuJzogW3snZ2V0Jzog J2NoaWxkcmVuJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9k ZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dl dCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwn fSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0 JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3sn Z2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6 IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dCisgICAgfSkKKwor ICAgIGRlZiB2YWxpZGF0ZV9yZXF1ZXN0KGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIFZhbGlkYXRp bmcgcmVxdWVzdCBvbiB0aGUgcmVxdWVzdCBvZiBjcmVhdGUsIHVwZGF0ZSBh bmQgbW9kaWZpZWQgU1FMLgorCisgICAgICAgIFJlcXVpcmVkIEFyZ3M6Cisg ICAgICAgICAgICAgICAgICAgIG5hbWU6IE5hbWUgb2YgdGhlIERvbWFpbiBD b25zdHJhaW50CisgICAgICAgICAgICAgICAgICAgIGNvbnNyYzogQ2hlY2sg Q29uc3RyYWludCBEZWZpbml0aW9uCisKKyAgICAgICAgQWJvdmUgYm90aCB0 aGUgYXJndW1lbnRzIHdpbGwgbm90IGJlIHZhbGlkYXRlZCBpbiB0aGUgdXBk YXRlIGFjdGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYp CisgICAgICAgIGRlZiB3cmFwKHNlbGYsICoqa3dhcmdzKToKKworICAgICAg ICAgICAgZGF0YSA9IHt9CisgICAgICAgICAgICBpZiByZXF1ZXN0LmRhdGE6 CisgICAgICAgICAgICAgICAgcmVxID0ganNvbi5sb2FkcyhyZXF1ZXN0LmRh dGEuZGVjb2RlKCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIHJlcSA9IHJlcXVlc3QuYXJncyBvciByZXF1ZXN0LmZvcm0KKworICAg ICAgICAgICAgaWYgJ2NvaWQnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAg ICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICAgICAgICAg J25hbWUnLAorICAgICAgICAgICAgICAgICAgICAnY29uc3JjJworICAgICAg ICAgICAgICAgIF0KKworICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gcmVx dWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBp biByZXEgb3IgcmVxW2FyZ10gPT0gJyc6CisgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVycm9ybXNnPWdldHRleHQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJh bWV0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJXMp LiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRyeToKKyAg ICAgICAgICAgICAgICBmb3Iga2V5IGluIHJlcToKKyAgICAgICAgICAgICAg ICAgICAgaWYga2V5ID09ICdjb252YWxpZGF0ZWQnOgorICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YVtrZXldID0gVHJ1ZSBpZiAocmVxW2tleV0gPT0g J3RydWUnIG9yIHJlcVtrZXldIGlzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSBlbHNlIEZhbHNlCisgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICAgICAg ICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAgIHJldHVybiBm KHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAg ICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg TG9hZCBKUyBmaWxlIChkb21haW4tY29uc3RyYWludHMuanMpIGZvciB0aGlz IG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jl c3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICJkb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNvbnN0 cmFpbnRzLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdldHRleHQKKyAgICAg ICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVudC1UeXBlJzog J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAgICkKKworICAg IGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgorICAg ICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAgQ2hlY2tzIGRh dGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAgICBBdHRhY2ggY29u bmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisgICAgICAgICIi IgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAg ICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVS KQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rp b25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5j b25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlk J10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIucXRJZGVu dAorCisgICAgICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiBy ZXR1cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNl bGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4g cHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBn ZXR0ZXh0KCJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9z dCEiKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgdmVyID0g c2VsZi5tYW5hZ2VyLnZlcnNpb24KKworICAgICAgICAgICAgIyB3ZSB3aWxs IHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAg ICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVt cGxhdGVfcGF0aCA9ICdkb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVz JworICAgICAgICAgICAgZWxpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdz LCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlz dCB0aGUgRG9tYWluIENvbnN0cmFpbnRzLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9p ZDogRG9tYWluIElkCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhbGwgdGhlIERv bWFpbiBDb25zdHJhaW50cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2Vy dmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAg ICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFp biBJZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgaWYgJ2NvbnZhbGlkYXRlZCcg bm90IGluIHJvdzoKKyAgICAgICAgICAgICAgICBpY29uID0gJ2ljb24tZG9t YWluLWNvbnN0cmFpbnRzJworICAgICAgICAgICAgZWxpZiByb3dbJ2NvbnZh bGlkYXRlZCddOgorICAgICAgICAgICAgICAgIGljb24gPSAnaWNvbi1kb21h aW4tY29uc3RyYWludHMnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIGljb24gPSAnaWNvbi1kb21haW4tY29uc3RyYWludHMtYmFkJwor ICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxm LmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAg ICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgIGRv aWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICBpY29uPWljb24KKyAgICAgICAgICAgICAgICApKQor CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9w ZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQp OgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgRG9tYWluIENv bnN0cmFpbnRzIHByb3BlcnR5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9t YWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJ ZAorICAgICAgICAiIiIKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQs IGNvaWQ9Y29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3Bv bnNlPWRhdGEsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAdmFsaWRhdGVfcmVx dWVzdAorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGVzIGEgbmV3 IERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRv aWQ6IERvbWFpbiBJZAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBEb21haW4gQ29uc3RyYWludCBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0gc2VsZi5yZXF1ZXN0CisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRf c3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lkKQorICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPVNRTCkKKworICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQor CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICAjIEdldCB0aGUgcmVjZW50bHkgYWRkZWQgY29uc3Ry YWludHMgb2lkCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9ZG9p ZCwgbmFtZT1kYXRhWyduYW1lJ10pCisgICAgICAgICAgICBzdGF0dXMsIGNv aWQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNvaWQpCisKKyAgICAgICAg ICAgIGlmICdjb252YWxpZGF0ZWQnIG5vdCBpbiBkYXRhOgorICAgICAgICAg ICAgICAgIGljb24gPSAnaWNvbi1kb21haW4tY29uc3RyYWludHMnCisgICAg ICAgICAgICBlbGlmICdjb252YWxpZGF0ZWQnIGluIGRhdGEgYW5kIGRhdGFb J2NvbnZhbGlkYXRlZCddOgorICAgICAgICAgICAgICAgIGljb24gPSAnaWNv bi1kb21haW4tY29uc3RyYWludHMnCisgICAgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgICAgIGljb24gPSAnaWNvbi1kb21haW4tY29uc3RyYWludHMt YmFkJworCisgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAg ICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJf bm9kZSgKKyAgICAgICAgICAgICAgICAgICAgY29pZCwKKyAgICAgICAgICAg ICAgICAgICAgZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFt ZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPWljb24KKyAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9w cyB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAg ICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4g Q29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQsIGNvaWQ9Y29p ZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3Mn XVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhKQor ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAg ICAgICAgaW5mbz1nZXR0ZXh0KCJEb21haW4gQ29uc3RyYWludCBkcm9wcGVk IiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAg ICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICdzY2lkJzog c2NpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAg ICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAdmFsaWRh dGVfcmVxdWVzdAorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAgICBV cGRhdGVzIHRoZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisg ICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAg ICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERv bWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBkYXRh ID0gc2VsZi5yZXF1ZXN0CisgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5n ZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lkLCBjb2lkKQorCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIFNRTCBhbmQgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIGlmICdj b252YWxpZGF0ZWQnIGluIGRhdGEgYW5kIGRhdGFbJ2NvbnZhbGlkYXRlZCdd OgorICAgICAgICAgICAgICAgICAgICBpY29uID0gJ2ljb24tZG9tYWluLWNv bnN0cmFpbnRzJworICAgICAgICAgICAgICAgIGVsaWYgJ2NvbnZhbGlkYXRl ZCcgaW4gZGF0YSBhbmQgbm90IGRhdGFbJ2NvbnZhbGlkYXRlZCddOgorICAg ICAgICAgICAgICAgICAgICBpY29uID0gJ2ljb24tZG9tYWluLWNvbnN0cmFp bnRzLWJhZCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgICAgICBpY29uID0gJycKKworICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iRG9tYWluIENvbnN0 cmFpbnQgdXBkYXRlZCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ewor ICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogY29pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdkb2lkJzogZG9pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lk JzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdpY29uJzogaWNvbgorICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAg ICAgICAgICAgICAgICAgIGluZm89Ik5vdGhpbmcgdG8gdXBkYXRlIiwKKyAg ICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAg ICAgICAnaWQnOiBjb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Rv aWQnOiBkb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBz Y2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkLCBjb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0 dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0 LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAg ICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKwor ICAgICAgICAjIEdldCBTY2hlbWEgYW5kIERvbWFpbi4KKyAgICAgICAgZG9t YWluLCBzY2hlbWEgPSBzZWxmLl9nZXRfZG9tYWluKGRvaWQpCisKKyAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9pZD1kb2lkLCBjb2lkPWNvaWQpCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBkYXRh ID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg ZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKworICAgICAgICBzcWxf aGVhZGVyID0gIiIiLS0gQ0hFQ0s6IHsxfS57MH0KKworLS0gQUxURVIgRE9N QUlOIHsxfSBEUk9QIENPTlNUUkFJTlQgezB9OworCisiIiIuZm9ybWF0KGRh dGFbJ25hbWUnXSwgc2NoZW1hICsgJy4nICsgZG9tYWluKQorCisgICAgICAg IFNRTCA9IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYgbXNxbChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kaWZpZWQgU1FM LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAg ICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorCisgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICBEb21haW4gQ29uc3RyYWludCBvYmplY3QgaW4g anNvbiBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gc2Vs Zi5yZXF1ZXN0CisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9z cWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQsIGNvaWQpCisgICAgICAg IGlmIHN0YXR1cyBhbmQgU1FMOgorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPVNRTCwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gU1FMCisKKyAgICBkZWYg Z2V0X3NxbChzZWxmLCBnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwgY29p ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlcyB0aGUg U1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9tYWluIENv bnN0cmFpbnQuCisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisg ICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAg ICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgY29pZCBpcyBu b3QgTm9uZToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9pZD1kb2lkLCBjb2lkPWNvaWQpCisgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKwor ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVz Wydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYu Y29ubgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2NoZW1hID0gc2VsZi5fZ2V0 X2RvbWFpbihkb2lkKQorCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Y3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBkb21haW49ZG9tYWluLCBzY2hlbWE9c2No ZW1hKQorICAgICAgICAgICAgcmV0dXJuIFRydWUsIFNRTC5zdHJpcCgnXG4n KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBkZWYgX2dldF9kb21haW4oc2VsZiwgZG9pZCk6 CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIERvbWFpbiBhbmQgU2No ZW1hIG5hbWUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGRvaWQ6 IERvbWFpbiBJZAorCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Rv bWFpbi5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gcmVzWydyb3dz J11bMF0KKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVw ZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAg ICBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogIFNlcnZlciBHcm91cCBJZAorICAg ICAgICAgICAgc2lkOiAgU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6ICBE YXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAg ICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERv bWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBkZXBl bmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25u LCBjb2lkKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbmNpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5k ZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBmb3Ig dGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBk b2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25z dHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNf cmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgY29p ZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCitEb21h aW5Db25zdHJhaW50Vmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50 KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvc3RhdGljL2ltZy9jb2xsLWRvbWFpbi1jb25zdHJhaW50 cy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzLnBuZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjJlMTM3MDVjNTBlNmMwY2Y4ZjE5 ZDY4MDA1M2U4NjQzZTI4NzUxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAz MTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNzM/JCMpZUZQRnYz R2ZNVjE9MlRyTzg0N3tKbGB8dGBRcGFzCnpuPGhTK2w9ck1ZPlJHUHF2bHlk aXpSSiY+QmBPbSNWfVIteU9NPzdAODYyTTdOQ1I+PjNwXnI9ZndUdTB5UGVG bwp6MTJUTClUXnZJPXR8dW9QVXx8WkY8dGdhSEcqUXNRIT9tJlRxPT8zbUN1 fUojRHgzeEBtTX19XmlFPTVOSVdYbmsKemtwbkM0YWklYT5AO0dnNz11dW1z PTliSUs9RWdkfih1cy0zZ0BJdjAyZ2ZzS15KUF4pZ0g9bWhCVDc7ZE9IIT9w CnppJkI5VWdPUCF1ZnYleUV1N1AyUWslNShvdjZZRjV3dD1hWWZxfShMUlhH JDV4JW54WFhfWEtTMjl7dEFBa3xnfApYVylLYWhyaVpRcFlHQ2ttXj5iUDBs K1hrS3l5UlV9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9z dGF0aWMvaW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQucG5nIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2lt Zy9kb21haW4tY29uc3RyYWludHMtYmFkLnBuZwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4zMmEwNDViOGZhZmRjMDg2NDBkNTNiMmE4NmIxZGNhYmNiMGZl MGZkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NzkKemNtVi1KMD0pZitQ KTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tSM0NAbHxEMDAwMDFi NWNoXzBJdHApCno9PlB4JEFXJSRITVIxWjkjUSpAUkVIbWRIQW08PDs9cGBs VERsNiRMRTE1JHxuTTZ5eEozIzYmRn1eKVF4PHAzbgp6SCNoNHpJSylPdSM3 OWZUTUAjSEpLa1koOD9MJFFFTGBDakpNZWFzTT9uZyg7UUI+fG9OYlgyVT9u K0FVT0gxIWUKek96JXhpP0BkbmNQRVhLUlM/XkN6I2FtdFFRQm0reFF0KHEj QEthUnFSODtVKVJxPDk8QG1FKllWcShgflYpMHZCCnorR1M8KVZQVyVQViU9 JEphZyFKSFhsVjZxWlNgKCRfSHVIM3BkPEVuY0pfQzdmMUBYV3FiR3U+RHU9 OHVocGpKKQp6dk40YWdIPGkzVXJNWWdXeUs8ZXlOMVZxK3AydGJBIUc1QzNQ TyFtJHF8SHZWI0QkfkpPc3Y7ZnRrX3F2LUNlUVgKelQqY0MlJEozOz48Nl9M JHQ8S3I4KSF3fHJAbz5jUGFtNFgqK35taWBeS3tHbGN8eGg8TmROITwwZCFK TVF2ZzhiCnoqayU5IzAwQ2w0TT8/VUsxc3pCTDAwMFNhTkxoMEwwMUZjVTAx RmNWMEdnWl8wMDAwN2JWKkdgMmlwZjM0PFJPZwp6KHA3MnowMDU2a0xfdCYt KTF7MlozY15xVDFtREVvZHk2SVp1Q1cmczFWIWBeNH0kZ29lPygxOEBiMkRi KmoqdzEKeiU0TShwOyZadz85WmFLQXhvKng7Q09YfTw4ZnpqcUtSdl4ya0Yx c3B5bVlITWpFMm03SGx8YX5lbUNOd0c4KGk/Cno4SSNgYChraUJyRWJofShR bjhUTDIrJH1iM0huXjdwYEs2UiNfNnpRMiQ/dXg7bFhCWUI+aGtOQEMlZz80 dlZCTQpSJGJiTDwwMDJvdlBESExrVjFtaW4wT1NBdwoKbGl0ZXJhbCAwCkhj bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3Ry YWludHMucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3RyYWludHMucG5nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMWQyYTA2MWM3OTQ4MTY4ZDdiMWMy NDc0ZDc2OWIzMTcwOWYxY2YKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQw Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVhA RjBORTA4e1ZZMm5oSGNeZU1hVSVqYGQKemFJJCMrSHVFS0N7cEtFWktZbj5o KCthSU1IXk1qR2pjczN9ZjlDcXl0JmZ2eDdBVCopeHZeYEw7aGZ7SGlfaVA0 Cnp4Z0slJlY/cTY1XzRjKjs4fUclO0pNTVk8U0xNX19fTTRCaTl7RV4hPFlV cFgmbjFnYWA3UGdGd0VrZFMhKCNQPAp6Tm4mQE45T3FpSyhpJihuVkBaJS1G b1ZPaDgpLWxlWE1zbSNGXzg4RVc0RHZwYzBmamlyO0I1ViNPMzZLMXNuIU8K emhSVmZ9NWpTc0dQSD9mPHh1ZGN8dkJvWTwmNWNiPXVUR0I5djE4N0o0SUkr aXQ1P2pobjhGe1RzQ1pJV1JhZCRECnpnMSpLOVclY3UyTnNEKGhFZlZUIyp3 bSNwWXc7RDA0KzBFKHVRRT9zYFo2KlpYb3FUdlllWSMoVm85bzFhIzFSZgp6 VmxYbD1HfCk5UChsc3kpRioyfCtGfTUtPihLYXgoR0JCezFzVmF3fUF2WnJJ R3AhUCQhTjN4JTBpQGM+enptfHsKVCliITliS24pQ0B1NnsxLW9EIU08PTRP XmsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvY3NzL2RvbWFpbi1jb25zdHJhaW50cy5j c3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL2Nzcy9kb21haW4tY29u c3RyYWludHMuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjQ2OTFjNjAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL2Nzcy9kb21haW4tY29uc3RyYWludHMuY3NzCkBAIC0w LDAgKzEsMjMgQEAKKy5pY29uLWNvbGwtZG9tYWluLWNvbnN0cmFpbnRzIHsK KyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdOT0RFLSVz LnN0YXRpYycgJSBub2RlX3R5cGUsIGZpbGVuYW1lPSdpbWcvY29sbC1kb21h aW4tY29uc3RyYWludHMucG5nJyApfX0nKSAhaW1wb3J0YW50OworICBiYWNr Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBhbGlnbi1jb250ZW50OiBj ZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisgIGhlaWdodDog MS4zZW07Cit9CisKKy5pY29uLWNoZWNrLWJhZCwgLmljb24tZG9tYWluLWNv bnN0cmFpbnRzLWJhZCB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgne3sg dXJsX2ZvcignTk9ERS0lcy5zdGF0aWMnICUgbm9kZV90eXBlLCBmaWxlbmFt ZT0naW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQucG5nJyApfX0nKSAhaW1w b3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBh bGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRk bGU7CisgIGhlaWdodDogMS4zZW07Cit9CisKKy5pY29uLWNoZWNrLCAuaWNv bi1kb21haW4tY29uc3RyYWludHMgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1 cmwoJ3t7IHVybF9mb3IoJ05PREUtJXMuc3RhdGljJyAlIG5vZGVfdHlwZSwg ZmlsZW5hbWU9J2ltZy9kb21haW4tY29uc3RyYWludHMucG5nJyApfX0nKSAh aW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owor ICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBt aWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9qcy9kb21haW4tY29uc3RyYWludHMuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL2pzL2RvbWFpbi1jb25zdHJhaW50cy5qcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2QxYTg1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9kb21h aW4tY29uc3RyYWludHMuanMKQEAgLTAsMCArMSwxNDIgQEAKKy8vIERvbWFp biBDb25zdHJhaW50IE1vZHVsZTogQ29sbGVjdGlvbiBhbmQgTm9kZQorZGVm aW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywg J2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitm dW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5 KSB7CisKKyAgLy8gRGVmaW5lIERvbWFpbiBDb25zdHJhaW50IENvbGxlY3Rp b24gTm9kZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21haW4t Y29uc3RyYWludHMnXSkgeworICAgIHZhciBkb21haW5fY29uc3RyYWludHMg PSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluLWNvbnN0cmFp bnRzJ10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0 ZW5kKHsKKyAgICAgICAgbm9kZTogJ2RvbWFpbi1jb25zdHJhaW50cycsCisg ICAgICAgIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnRzJykgfX0n LAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4tY29uc3RyYWludHMnLAor ICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXQorICAg ICAgfSk7CisgIH07CisKKyAgLy8gRG9tYWluIENvbnN0cmFpbnQgTm9kZQor ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluLWNvbnN0cmFpbnRzJ10p IHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2RvbWFpbi1jb25zdHJh aW50cyddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIHR5cGU6 ICdkb21haW4tY29uc3RyYWludHMnLAorICAgICAgbGFiZWw6ICd7eyBfKCdE b21haW4gQ29uc3RyYWludHMnKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5 cGU6ICdjb2xsLWRvbWFpbi1jb25zdHJhaW50cycsCisgICAgICBoYXNTUUw6 IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFyZW50 X3R5cGU6IFsnZG9tYWluJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsK KyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1l bnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAg ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVl OworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAg ICBuYW1lOiAnY3JlYXRlX2RvbWFpbl9vbl9jb2xsJywgbm9kZTogJ2NvbGwt ZG9tYWluLWNvbnN0cmFpbnRzJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25z dHJhaW50Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24g aWNvbi1kb21haW4tY29uc3RyYWludHMnLCBkYXRhOiB7YWN0aW9uOiAnY3Jl YXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNy ZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9k b21haW4tY29uc3RyYWludHMnLCBub2RlOiAnZG9tYWluLWNvbnN0cmFpbnRz JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0 JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVz JywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0 LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25zdHJhaW50Li4uJykgfX0nLAor ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1kb21haW4tY29uc3Ry YWludHMnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9 LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7 CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9kb21haW4tY29uc3RyYWludHMn LCBub2RlOiAnZG9tYWluJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93 X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25zdHJh aW50Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNv bi1kb21haW4tY29uc3RyYWludHMnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRl JywgY2hlY2s6IGZhbHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVh dGUnCisgICAgICAgIH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0sCisgICAg ICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxk RHJvcCwKKyAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2Rl bC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAgICAgICAgIG5h bWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKKyAg ICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAorICAgICAgICAgIGNv bnNyYzogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbm5vaW5oZXJpdDogdW5k ZWZpbmVkLAorICAgICAgICAgIGNvbnZhbGlkYXRlZDogdHJ1ZQorICAgICAg ICB9LAorICAgICAgICAvLyBEb21haW4gQ29uc3RyYWludCBTY2hlbWEKKyAg ICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVs OiAne3sgXygnTmFtZScpIH19JywgdHlwZTondGV4dCcsIGNlbGw6J3N0cmlu ZycsCisgICAgICAgICAgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQn KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JyAsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ3t7IF8oJ0NvbW1lbnQn KSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsOgorICAgICAgICAgICdz dHJpbmcnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwgbWluX3ZlcnNpb246IDkwNTAwLAorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2NvbnNyYycsIGxhYmVsOiAne3sgXygnQ2hlY2snKSB9fScsIHR5 cGU6ICdtdWx0aWxpbmUnLCBjZWw6CisgICAgICAgICAgJ3N0cmluZycsIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgbW9kZTogWydwcm9wZXJ0 aWVzJywKKyAgICAgICAgICAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdjb25ub2luaGVyaXQnLCBsYWJlbDogJ3t7 IF8oJ05vIEluaGVyaXQnKSB9fScsIHR5cGU6CisgICAgICAgICAgJ3N3aXRj aCcsIGNlbGw6ICdib29sZWFuJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9u JykgfX0nLCBtb2RlOgorICAgICAgICAgIFsncHJvcGVydGllcycsICdjcmVh dGUnLCAnZWRpdCddLCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAg ICAgIHZpc2libGU6IGZhbHNlCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnY29udmFsaWRhdGVkJywgbGFiZWw6ICJ7eyBfKCJWYWxpZGF0ZT8iKSB9 fSIsIHR5cGU6ICdzd2l0Y2gnLCBjZWxsOgorICAgICAgICAgICdib29sZWFu JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtaW5fdmVyc2lv bjogOTAyMDAsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgdmFy IHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlcjsKKyAgICAgICAgICAg IGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKSB7IHJldHVybiB0cnVlOwor ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZihtLmdldCgnY29u dmFsaWRhdGVkJykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg IH0sCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScs ICdlZGl0J10KKyAgICAgICAgfV0sCisgICAgICAgIC8vIENsaWVudCBTaWRl IFZhbGlkYXRpb24KKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgZXJybXNn OworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25h bWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnbmFt ZSddID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7Cisg ICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1lJ107Cisg ICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhp cy5nZXQoJ2NvbnNyYycpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2NvbnNyYycp KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICBlcnJbJ2NvbnNyYyddID0gJ3t7IF8oJ0NoZWNrIGNhbiBub3QgYmUg ZW1wdHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8 IGVyclsnY29uc3JjJ107CisgICAgICAgICAgfQorCisgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7CisKKyAgICAgICAgICBp ZiAoXy5zaXplKGVycikpIHsKKyAgICAgICAgICAgIHRoaXMudHJpZ2dlcign b24tc3RhdHVzJywge21zZzogZXJybXNnfSk7CisgICAgICAgICAgICByZXR1 cm4gZXJybXNnOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBu dWxsOworCisgICAgICAgIH0sCisgICAgICAgIGlzRGlzYWJsZWQ6IGZ1bmN0 aW9uKG0peworICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAg ICAgICB2YXIgc2VydmVyID0gdGhpcy5ub2RlX2luZm8uc2VydmVyOworICAg ICAgICAgICAgaWYgKHNlcnZlci52ZXJzaW9uIDwgOTAyMDApCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH0KKyAgICAgIH0pLAorICB9KTsKKworICB9CisKKyAgcmV0dXJu IHBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluJ107Cit9KTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3Rl bXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2NyZWF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmJlOTQzZDIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAg KzEsMyBAQAoreyUgaWYgZGF0YSBhbmQgc2NoZW1hIGFuZCBkb21haW4gJX0K K0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoc2NoZW1hLCBkb21haW4p IH19CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEu bmFtZSkgfX0gQ0hFQ0sgKHt7IGRhdGEuY29uc3JjIH19KTt7JSBlbmRpZiAt JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3Fs LzkuMV9wbHVzL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFp bnRzL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjI2MGMzYzAKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90 ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9kZWxl dGUuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyUgaWYgZGF0YSAlfQorQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLm5zcG5hbWUsIGRhdGEucmVs bmFtZSkgfX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50 KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZ2V0X2RvbWFp bi5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9nZXRfZG9tYWluLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xMDQwYzBlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZ2V0X2RvbWFpbi5zcWwK QEAgLTAsMCArMSw4IEBACitTRUxFQ1QKKyAgICBkLnR5cG5hbWUgYXMgZG9t YWluLCBibi5uc3BuYW1lIGFzIHNjaGVtYQorRlJPTQorICAgIHBnX3R5cGUg ZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBu YW1lc3BhY2UKK1dIRVJFCisgICAgZC5vaWQgPSB7e2RvaWR9fTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFp bnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVz L2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjU5ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3Fs CkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgb2lkLCBjb25uYW1lIGFz IG5hbWUKK0ZST00KKyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNv bnR5cGlkID0ge3tkb2lkfX06Om9pZAorICAgIEFORCBjb25uYW1lPXt7IG5h bWV8cXRMaXRlcmFsIH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDNm MDExCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwx NCBAQAorU0VMRUNUCisgICAgYy5vaWQsIGNvbm5hbWUgQVMgbmFtZSwgdHlw bmFtZSBBUyByZWxuYW1lLCBuc3BuYW1lLAorICAgIHJlZ2V4cF9yZXBsYWNl KHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdDSEVDSyBc XCgoLiopXFwpLionLCBFJ1xcMScpIEFTIGNvbnNyYworRlJPTQorICAgIHBn X2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0Lm9pZD1j b250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBubCBPTiBubC5vaWQ9 dHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGNvbnR5cGUgPSAnYycgQU5EIGNv bnR5cGlkID0gIHt7ZG9pZH19OjpvaWQKK3slIGlmIGNvaWQgJX0KKyAgICBB TkQgYy5vaWQgPSB7eyBjb2lkIH19Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvdXBk YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0 cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9w bHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjk5YmE2YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAs MCArMSwzIEBACit7JSBpZiBkYXRhLm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7 eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1l KSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChv X2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX07eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOTkzZjcKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85 LjJfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK3slIGlmIGRh dGEgYW5kIHNjaGVtYSBhbmQgZG9tYWluICV9CitBTFRFUiBET01BSU4ge3sg Y29ubnxxdElkZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIEFERCBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IENIRUNLICh7 eyBkYXRhLmNvbnNyYyB9fSl7JSBpZiBub3QgZGF0YS5jb252YWxpZGF0ZWQg JX0KKworICAgIE5PVCBWQUxJRHslIGVuZGlmICV9O3slIGlmIGRhdGEuZGVz Y3JpcHRpb24gJX0KKworCitDT01NRU5UIE9OIENPTlNUUkFJTlQge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX0gT04gRE9NQUlOIHt7IGNvbm58cXRJ ZGVudChzY2hlbWEsIGRvbWFpbikgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNj cmlwdGlvbiB9fSc7eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9k ZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApAQCAt MCwwICsxLDQgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBkYXRhLnJlbG5hbWUpIH19Cisg ICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4t Y29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF9kb21haW4uc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0X2RvbWFp bi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0 MGMwZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMl9wbHVzL2dldF9kb21haW4uc3FsCkBAIC0wLDAgKzEs OCBAQAorU0VMRUNUCisgICAgZC50eXBuYW1lIGFzIGRvbWFpbiwgYm4ubnNw bmFtZSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAg ICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitX SEVSRQorICAgIGQub2lkID0ge3tkb2lkfX07CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRz L3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dl dF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY1OWUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNv bnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsx LDcgQEAKK1NFTEVDVAorICAgIG9pZCwgY29ubmFtZSBhcyBuYW1lCitGUk9N CisgICAgcGdfY29uc3RyYWludAorV0hFUkUKKyAgICBjb250eXBpZCA9IHt7 ZG9pZH19OjpvaWQKKyAgICBBTkQgY29ubmFtZT17eyBuYW1lfHF0TGl0ZXJh bCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMv c3FsLzkuMl9wbHVzL2dldF90eXBlX2NhdGVnb3J5LnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9k b21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF90eXBlX2NhdGVn b3J5LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z ZTNiMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0X3R5cGVfY2F0ZWdvcnkuc3FsCkBA IC0wLDAgKzEsNSBAQAorU0VMRUNUCisgICAgdHlwY2F0ZWdvcnkKK0ZST00K KyAgICBwZ190eXBlCitXSEVSRSB0eXBuYW1lID0ge3tkYXRhdHlwZX19Owpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFp bnRzL3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGQ4YjM0Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMv cHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwxNyBAQAorU0VMRUNUCisgICAg Yy5vaWQsIGNvbm5hbWUgQVMgbmFtZSwgdHlwbmFtZSBBUyByZWxuYW1lLCBu c3BuYW1lLCBkZXNjcmlwdGlvbiwKKyAgICByZWdleHBfcmVwbGFjZShwZ19n ZXRfY29uc3RyYWludGRlZihjLm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4q KVxcKS4qJywgRSdcXDEnKSBBUyBjb25zcmMsCisgICAgY29ubm9pbmhlcml0 LCBjb252YWxpZGF0ZWQsIGNvbnZhbGlkYXRlZCBBUyBjb252YWxpZGF0ZWRf cAorRlJPTQorICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5 cGUgdCBPTiB0Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFj ZSBubCBPTiBubC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQor V0hFUkUKKyAgICBjb250eXBlID0gJ2MnIEFORCBjb250eXBpZCA9ICB7e2Rv aWR9fTo6b2lkCit7JSBpZiBjb2lkICV9CisgICAgQU5EIGMub2lkID0ge3sg Y29pZCB9fQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy91cGRhdGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOGViNmUK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRz L3NxbC85LjJfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sl IHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAl fQoreyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7 eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1l KSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChv X2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX07eyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5jb252YWxpZGF0ZWQgJX0KKwor CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1l LCBvX2RhdGEucmVsbmFtZSkgfX0KKyAgICBWQUxJREFURSBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChuYW1lKSB9fTt7JSBlbmRpZiAtJX17JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CisKKworQ09NTUVOVCBPTiBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChuYW1lKSB9fSBPTiBET01BSU4ge3sgY29ubnxx dElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEucmVsbmFtZSkgfX0KKyAg ICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7eyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2ltZy9j b2xsLWRvbWFpbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9pbWcvY29sbC1kb21haW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjU1NjIxNTI4YTFkYmE0OTI4NTM4ZmU1NTU3YjliOTg4ZWQ3OGQ2YWIKR0lU IGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ2Mgp6Y21lQVNATj8ob2xIeWB1VkJx IWlhMHZwXjB3QiE2Mz93eWxgR2JLfVU0VCFCRTBCSmVvcWZXPTtnRnswUEQ4 X28KemkmcE5fKEspQjdgRlBpJTJpeGBAdjlMVSh0TlVRKiFLMWN6WE94dWdn b0dUXygjcEB6ZjRKdyEhekhWKWAzRjdUCnpkLVVtfUh9YGlSSWlqY2NAV3Ej PiZwdGtSYFNzekc1NFV6NnpXNG1nP01Mc2daOWpiYj5FfnkhelRTQjlgUmUx KAp6alMxUzk5KF85aEBZQzRgQTVZKV5fXj5ASjMrTXZJa3w0aWUyOFUtaSh0 c1MhMCp9YUlBbmdJaFpZUSh0ZlEpdWUKejdzbjhaJWJ8VUAjaE1nRVNVdnM0 d0tvU3hPPn57Tz0tWXEkOF8hciktXmUlNC1sNmYtSm94MSU4fUZJVng+RkNX CnpQTVZ3bHVRR2JrUDFiY1N3VlYwZF8/UFpiWlZpcyVIZVlUV3lVKiRPdllw JHVUYzNRTGJEPzJ0ck9uRHVoWmE+Zgp6PTNkX3soekVSOXh0KDxuM1VzQkk0 U05DP1khckJXPG0yYG4+eURSeWckdW9FOFF4fWJvMUQwcXc7dCN1KWVfZjsK emw5YUBmUklCOG9SM09EKldNRjhaWWlPaXZVPklVI1V9YSkjV24hWGpVfXxN eFVAPW93NG47JDVlb0FJcUJ9OVhQCmVDMEdNVXdVdlB4TThtMStwPSpFfDco OEE1VC1HQHlHeXdvUkNDMkxqCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9pbWcv ZG9tYWluLXNtLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2ltZy9kb21haW4tc20ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1 MjFjZGRlYWFhZjBlZTRlM2M2MGU5NDgwNzhkNzBlMTdlMDY4OTMKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDQwMQp6Y21lQVNATj8ob2xIeWB1VkJxIWlh MHZwXjB3QiE2Mz93eWxgR2JLfVQ3WFo4RTBEZXU5ZXUqVjtnRnswS2BwSWcK emM2S2ByNEllSUFjfVEzSHhWYD0zeStAeHVkVUpwR2t0MkZ+UG9JNSFeNzhB JENtKExASmJjWVI9OzRibV9udj5iCnp7cGtJKj9UN0QjZ3lpU3ZLWVI3e19T NFRkb194T2dfO1hgfF9ON09rJk9pS2dfUUEpfl9kbExvODV7dyRpTG9UZQp6 RlBPcE0qXk0rSGhxSiZWdktVQnZmVSg9alkmIyQkJDx4SSNNQjtNcWBJQUJw MjBSVDl3VVhrYUwoMVIocE9uP2MKej4zODwrZT5LYU4yeyUwSmRAc01iWSQr MTNaJiVaPCUhUCsqU051KyMoe1JyPXtfS3hVaHN3SGRJRDBRV1RDQnZECnop Xmt5O0BndWBFI1JBQyNsYEpjbmVsUzByeGtLTjdiMUI+SDU2Z1gpMCZQPCph ZzhXUk5pMGRWTi1qelRRVmQyMAp6aDZjS1pNIUUpdUF3fnZQQ2RPN0tDZld3 M1J0NSRaR2dha0tIMDApfFdUc1VARyNGVGRIR291RzhKSXlkb1NHaUcKUTJC PzktKTc4JnFvbGA7KzAzX3EzZ2E3fmwKCmxpdGVyYWwgMApIY21WP2QwMDAw MQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2ltZy9kb21haW4ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9zdGF0 aWMvaW1nL2RvbWFpbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJj YTkyOTMyNTg1NGI4ZjM0Nzg3NDI1ZTgwOTRkMDhjNzU5ODNiYwpHSVQgYmlu YXJ5IHBhdGNoCmxpdGVyYWwgNDI0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw dnBeMHdCITYzP3d5bGBHYkt9UEptQntFMEJKZW9xZlc9O2dGezBQRDheNwp6 aSZzNmBiTDhveEh9YGlSZEhVPypsYjJyfkpeNlRoPWl4XiR6VFNXUzw/Zj5v SCtDSFVhXn1wVmZgYVd2TXQ3Zm0KengmOEY+amZkfkFZKEhGYG1VaVJHPVc5 PHNVd1FCQEtSPkBRTEhvKyVQWnVBM0l7KXl+KiQxRF9Kb3RGKHt6dkh0Cnpv JXVsZjcpeWZ1ZipCbTEtQURzK0kxNC0/aS1FS1U3YHZVIXdnV1BYSnpYM19C cmNicGU9WEZjQW1TRk5lQzNxJgp6bCFaKyhSc1lOMTImLU5Xe1AqXiM8cng4 Ml8yLStpaSZTcWZHZ09gSmNqQDswMUBIVEh7JiY3I3Y/an1JKT1KNm0KemVg fmhwcFpuNz9XQXwleiF9VDZwZj56MElqYlpyUzVJQ0QqMjc1Kl9iQW8pcjh0 I1ZnNEEqTHopO3hjNEpLcTAzCnpYWEN9emQpWXdpUlpDbldOPlVPX1FtdkFV UWhea01rJTZJc3VBen54Zm5rVnxmdDg3fG01R1ZBZnZKXiZmeUdRIQpxSVRR YEtgNi0hY2xASlhFbVM3RGEpbTg+KDVEbGxNaHBxdT9WRE5QSGI2TXc8Jjsk Vk9SPUZxdQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9qcy9k b21haW5zLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9qcy9kb21haW5zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjNkYzMyMDEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL2pzL2RvbWFp bnMuanMKQEAgLTAsMCArMSwzNzAgQEAKKy8vIERvbWFpbiBNb2R1bGU6IENv bGxlY3Rpb24gYW5kIE5vZGUuCitkZWZpbmUoCisgICAgICAgIFsnanF1ZXJ5 JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1p bicsCisgICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5Jywg J3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBf LCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisKKyAgLy8g RGVmaW5lIERvbWFpbiBDb2xsZWN0aW9uIE5vZGUKKyAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10pIHsKKyAgICB2YXIgZG9tYWlucyA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21haW4nXSA9CisgICAg ICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAg ICBub2RlOiAnZG9tYWluJywKKyAgICAgICAgbGFiZWw6ICd7eyBfKCdEb21h aW5zJykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4nLAorICAg ICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXInLCAnZGVzY3JpcHRpb24n XQorICAgICAgfSk7CisgIH07CisKKyAgLy8gU2VjdXJpdHkgTW9kZWwKKyAg dmFyIFNlY3VyaXR5TW9kZWwgPSBCYWNrZm9ybS5TZWN1cml0eU1vZGVsID0g cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBkZWZh dWx0czogeworICAgICAgcHJvdmlkZXI6IG51bGwsCisgICAgICBzZWN1cml0 eV9sYWJlbDogbnVsbAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAg aWQ6ICdwcm92aWRlcicsIGxhYmVsOiAne3sgXygnUHJvdmlkZXInKSB9fScs CisgICAgICB0eXBlOiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVh ZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcKKyAgICB9LHsKKyAgICAg IGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5 IExhYmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJsZTog dHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnCisg ICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFy IGVyciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGw7CisKKyAgICAg IGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdzZWN1cml0eV9sYWJlbCcp KSB8fAorICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnc2VjdXJpdHlfbGFi ZWwnKSkgfHwKKyAgICAgICAgU3RyaW5nKHRoaXMuZ2V0KCdzZWN1cml0eV9s YWJlbCcpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Cisg ICAgICAgICAgICBlcnJtc2cgPSAgJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5IHRo ZSB2YWx1ZSBmb3IgYWxsIHRoZSBzZWN1cml0eSBwcm92aWRlcnMuJyl9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZWN1cml0eV9s YWJlbCcsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gZXJybXNnOwor ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwudW5zZXQoJ3NlY3VyaXR5X2xhYmVsJyk7CisgICAgICAgICAgfQorICAg ICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9KTsKKworICAvLyBDb25zdHJh aW50IE1vZGVsCisgIHZhciBDb25zdHJhaW50TW9kZWwgPSBwZ0FkbWluLkJy b3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGlkQXR0cmlidXRlOiAn Y29ub2lkJywKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJn cykgeworICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDAp OworICAgICAgaWYgKCFpc05ldykgeworICAgICAgICB0aGlzLmNvbnZhbGlk YXRlZF9kZWZhdWx0ID0gdGhpcy5nZXQoJ2NvbnZhbGlkYXRlZCcpCisgICAg ICAgIGNvbnNvbGUubG9nKHRoaXMpOworICAgICAgICBjb25zb2xlLmxvZyhh cmdzKTsKKyAgICAgIH0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1v ZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50 cyk7CisgICAgfSwKKyAgICBkZWZhdWx0czogeworICAgICAgY29ub2lkOiB1 bmRlZmluZWQsCisgICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisgICAgICBj b25zcmM6IHVuZGVmaW5lZCwKKyAgICAgIGNvbnZhbGlkYXRlZDogdHJ1ZQor ICAgIH0sCisgICAgY29udmFsaWRhdGVkX2RlZmF1bHQ6IHRydWUsCisgICAg c2NoZW1hOiBbeworICAgICAgaWQ6ICdjb25uYW1lJywgbGFiZWw6ICd7eyBf KCdOYW1lJykgfX0nLCB0eXBlOiAndGV4dCcsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzQwJywK KyAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgIGlmIChf LmlzVW5kZWZpbmVkKG0uaXNOZXcpKSB7IHJldHVybiB0cnVlOyB9CisgICAg ICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAgICAgdmFyIHNlcnZlciA9 IHRoaXMuZ2V0KCdub2RlX2luZm8nKS5zZXJ2ZXI7CisgICAgICAgICAgaWYg KHNlcnZlci52ZXJzaW9uIDwgOTAyMDApIHsgcmV0dXJuIGZhbHNlOworICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgIH0KKyAgICB9LHsKKyAgICAgIGlkOiAnY29uc3JjJywgbGFiZWw6ICd7 eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211bHRpbGluZScsCisgICAgICBj ZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uVGV4dGFyZWFDZWxsLCBncm91cDog J3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICBjZWxsSGVhZGVyQ2xh c3NlczogJ3dpZHRoX3BlcmNlbnRfNjAnLCBlZGl0YWJsZTogZnVuY3Rpb24o bSkgeworICAgICAgICByZXR1cm4gXy5pc1VuZGVmaW5lZChtLmlzTmV3KSA/ IHRydWUgOiBtLmlzTmV3KCk7CisgICAgICB9CisgICAgfSx7CisgICAgICBp ZDogJ2NvbnZhbGlkYXRlZCcsIGxhYmVsOiAne3sgXygnVmFsaWRhdGU/Jykg fX0nLCB0eXBlOiAnc3dpdGNoJywgY2VsbDoKKyAgICAgICdib29sZWFuJywg Z3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgZWRpdGFi bGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMu Z2V0KCdub2RlX2luZm8nKS5zZXJ2ZXI7CisgICAgICAgIGlmIChzZXJ2ZXIu dmVyc2lvbiA8IDkwMjAwKSB7IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor ICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChtLmlzTmV3KSkgeyByZXR1cm4g dHJ1ZTsgfQorICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAg IGlmKG0uZ2V0KCdjb252YWxpZGF0ZWQnKSAmJiBtLmNvbnZhbGlkYXRlZF9k ZWZhdWx0KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH1dLAorICAgIHRvSlNP TjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNPTgorICB9KTsKKwor ICAvLyBEb21haW4gTm9kZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZG9t YWluJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2RvbWFpbidd ID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIHR5cGU6ICdkb21h aW4nLAorICAgICAgbGFiZWw6ICd7eyBfKCdEb21haW4nKSB9fScsCisgICAg ICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLWRvbWFpbicsCisgICAgICBoYXNT UUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFy ZW50X3R5cGU6IFsnc2NoZW1hJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigp IHsKKyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9m IG1lbnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAg ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0 cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAg ICAgICBuYW1lOiAnY3JlYXRlX2RvbWFpbl9vbl9jb2xsJywgbm9kZTogJ2Nv bGwtZG9tYWluJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHBy aW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbi4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluJywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBl bmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5h bWU6ICdjcmVhdGVfZG9tYWluJywgbm9kZTogJ2RvbWFpbicsIG1vZHVsZTog dGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0 J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7 eyBfKCdEb21haW4uLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFi SWNvbiBpY29uLWRvbWFpbicsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBj aGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJwor ICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2RvbWFpbics IG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBw bGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3df b2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRl JywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRG9tYWluLi4uJykgfX0n LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1kb21haW4nLCBk YXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IGZhbHNlfSwKKyAgICAg ICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0KKyAgICAgICAg XSk7CisKKyAgICAgIH0sCisgICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9k ZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKKyAgICAgIGNhbkRyb3BDYXNj YWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwK KyAgICAgIC8vIERvbWFpbiBOb2RlIE1vZGVsCisgICAgICBtb2RlbDogcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgaW5p dGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKKyAgICAgICAgICB2 YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7CisgICAgICAgICAg aWYgKGlzTmV3KSB7CisgICAgICAgICAgICAvLyBTZXQgU2VsZWN0ZWQgU2No ZW1hCisgICAgICAgICAgICBzY2hlbWEgPSBhcmdzLm5vZGVfaW5mby5zY2hl bWEubGFiZWwKKyAgICAgICAgICAgIHRoaXMuc2V0KHsnYmFzZW5zcCc6IHNj aGVtYX0sIHtzaWxlbnQ6IHRydWV9KTsKKworICAgICAgICAgICAgLy8gU2V0 IEN1cnJlbnQgVXNlcgorICAgICAgICAgICAgdmFyIHVzZXJJbmZvID0gcGdC cm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVyLl9pZF0u dXNlcjsKKyAgICAgICAgICAgIHRoaXMuc2V0KHsnb3duZXInOiB1c2VySW5m by5uYW1lfSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgIH0KKyAgICAg ICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5p dGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICB9LAor ICAgICAgICBkZWZhdWx0czogeworICAgICAgICAgIG5hbWU6IHVuZGVmaW5l ZCwKKyAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvd25l cjogdW5kZWZpbmVkLAorICAgICAgICAgIGJhc2Vuc3A6IHVuZGVmaW5lZCwK KyAgICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAorICAgICAgICAg IGJhc2V0eXBlOiB1bmRlZmluZWQsCisgICAgICAgICAgdHlwbGVuOiB1bmRl ZmluZWQsCisgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsCisgICAg ICAgICAgdHlwZGVmYXVsdDogdW5kZWZpbmVkLAorICAgICAgICAgIHR5cG5v dG51bGw6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzeXNkb21haW46IHVuZGVm aW5lZCwKKyAgICAgICAgICBjb2xsbmFtZTogdW5kZWZpbmVkLAorICAgICAg ICAgIGNvbnN0cmFpbnRzOiBbXSwKKyAgICAgICAgICBzZWNsYWJlbHM6IFtd CisgICAgICAgIH0sCisgICAgICAgIHR5cGVfb3B0aW9uczogdW5kZWZpbmVk LAorICAgICAgICAvLyBEb21haW4gU2NoZW1hCisgICAgICAgIHNjaGVtYTog W3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUn KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDone3sgXygn T0lEJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAn dGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0n LCBjZWxsOiAnc3RyaW5nJywgY29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RC eU5hbWVDb250cm9sLAorICAgICAgICAgIG5vZGU6ICdyb2xlJywgIHR5cGU6 ICd0ZXh0JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZScsICdwcm9wZXJ0aWVz J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdiYXNlbnNwJywgbGFi ZWw6J3t7IF8oJ1NjaGVtYScpIH19JywgY2VsbDogJ25vZGUtbGlzdC1ieS1u YW1lJywKKyAgICAgICAgICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1l JywgY2FjaGVfbGV2ZWw6ICdkYXRhYmFzZScsIHR5cGU6ICd0ZXh0JywKKyAg ICAgICAgICAgbm9kZTogJ3NjaGVtYScsIG1vZGU6IFsnY3JlYXRlJywgJ2Vk aXQnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3N5c2RvbWFpbics IGxhYmVsOid7eyBfKCdTeXN0ZW0gZG9tYWluPycpIH19JywgY2VsbDogJ2Jv b2xlYW4nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3By b3BlcnRpZXMnXSwKKyAgICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAg ICAnb25UZXh0JzogJ1llcycsICdvZmZUZXh0JzogJ05vJywKKyAgICAgICAg ICAgICdvbkNvbG9yJzogJ3N1Y2Nlc3MnLCAnb2ZmQ29sb3InOiAncHJpbWFy eScsCisgICAgICAgICAgICAnc2l6ZSc6ICdzbWFsbCcKKyAgICAgICAgICB9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBs YWJlbDone3sgXygnQ29tbWVudCcpIH19JywgY2VsbDogJ3N0cmluZycsCisg ICAgICAgICAgdHlwZTogJ211bHRpbGluZScKKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdiYXNldHlwZScsIGxhYmVsOid7eyBfKCdCYXNlIHR5cGUn KSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9sOiAnbm9kZS1hamF4LW9w dGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTpbJ3Byb3Bl cnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICd7eyBfKCdEZWZp bml0aW9uJykgfX0nLCB1cmw6ICdnZXRfdHlwZXMnLAorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5pc05ldygpOyB9LCBm aXJzdF9lbXB0eTogdHJ1ZSwKKyAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0 aW9uKGQpeworICAgICAgICAgICAgdGhpcy5tb2RlbC50eXBlX29wdGlvbnMg PSAgZDsKKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICAgIH0KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd0eXBsZW4nLCBsYWJlbDone3sg XygnTGVuZ3RoJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0 eXBlOiAndGV4dCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19Jywg ZGVwczogWydiYXNldHlwZSddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICAvLyBXZSB3aWxsIHN0b3JlIHR5cGUg ZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94CisgICAgICAgICAgICBpZiAo IW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBvZl90eXBlID0gbS5nZXQo J2Jhc2V0eXBlJyk7CisgICAgICAgICAgICBpZihtLnR5cGVfb3B0aW9ucykg eworICAgICAgICAgICAgICAvLyBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIHR5 cGVzCisgICAgICAgICAgICAgIF8uZWFjaChtLnR5cGVfb3B0aW9ucywgZnVu Y3Rpb24obykgeworICAgICAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBz ZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAg ICAgICAgICAgICAgIGlmICggb2ZfdHlwZSA9PSBvLnZhbHVlICkgeworICAg ICAgICAgICAgICAgICAgICAvLyBpZiBsZW5ndGggaXMgYWxsb3dlZCBmb3Ig c2VsZWN0ZWQgdHlwZQorICAgICAgICAgICAgICAgICAgICBpZihvLmxlbmd0 aCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAg ICAgICAgICAgbS5zZXQoJ2lzX3RsZW5ndGgnLCB0cnVlLCB7c2lsZW50OiB0 cnVlfSk7CisgICAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwn LCBvLm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAg ICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDog dHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIHJldHVybiAhbS5nZXQoJ2lzX3RsZW5ndGgnKTsKKyAgICAgICAg ICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncHJlY2lzaW9uJywg bGFiZWw6J3t7IF8oJ1ByZWNpc2lvbicpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0RlZmlu aXRpb24nKSB9fScsIGRlcHM6IFsnYmFzZXR5cGUnXSwKKyAgICAgICAgICBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gV2Ugd2ls bCBzdG9yZSB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveAorICAg ICAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgb2Zf dHlwZSA9IG0uZ2V0KCdiYXNldHlwZScpOworICAgICAgICAgICAgaWYobS50 eXBlX29wdGlvbnMpIHsKKyAgICAgICAgICAgICAgLy8gaXRlcmF0aW5nIG92 ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgICAgICBfLmVhY2gobS50eXBl X29wdGlvbnMsIGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgICAgICAgICAvLyBp ZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGlu IG9wdGlvbnMKKyAgICAgICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0gby52 YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgcHJlY2Vzc2lv biBpcyBhbGxvd2VkIGZvciBzZWxlY3RlZCB0eXBlCisgICAgICAgICAgICAg ICAgICAgIGlmKG8ucHJlY2lzaW9uKQorICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZXMgaW4g bW9kZWwKKyAgICAgICAgICAgICAgICAgICAgICBtLnNldCgnaXNfcHJlY2lz aW9uJywgdHJ1ZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAg ICAgICAgIG0uc2V0KCdtaW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0 cnVlfSk7CisgICAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ21heF92YWwn LCBvLm1heF92YWwsIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gIW0uZ2V0KCdp c19wcmVjaXNpb24nKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAndHlwZGVmYXVsdCcsIGxhYmVsOid7eyBfKCdEZWZhdWx0 JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4 dCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAg ICBwbGFjZWhvbGRlcjogIkVudGVyIGFuIGV4cHJlc3Npb24gb3IgYSB2YWx1 ZS4iCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlwbm90bnVsbCcs IGxhYmVsOid7eyBfKCdOb3QgTnVsbD8nKSB9fScsIGNlbGw6ICdib29sZWFu JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAg ICAgICAgICdvblRleHQnOiAnWWVzJywgJ29mZlRleHQnOiAnTm8nLAorICAg ICAgICAgICAgJ29uQ29sb3InOiAnc3VjY2VzcycsICdvZmZDb2xvcic6ICdw cmltYXJ5JywKKyAgICAgICAgICAgICdzaXplJzogJ3NtYWxsJworICAgICAg ICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb2xsbmFtZScs IGxhYmVsOid7eyBfKCdDb2xsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcn LCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCB1 cmw6ICdnZXRfY29sbGF0aW9ucycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKTsKKyAgICAgICAgICB9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29uc3RyYWludHMnLCBs YWJlbDone3sgXygnQ29uc3RyYWludHMnKSB9fScsIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICd7eyBf KCdDb25zdHJhaW50cycpIH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSdd LAorICAgICAgICAgIG1vZGVsOiBDb25zdHJhaW50TW9kZWwsIGNhbkFkZDog dHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZh bHNlCisgICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xhYmVscycs IGxhYmVsOiAne3sgXygnU2VjdXJpdHkgTGFiZWxzJykgfX0nLAorICAgICAg ICAgIG1vZGVsOiBTZWN1cml0eU1vZGVsLCB0eXBlOiAnY29sbGVjdGlvbics CisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19JywgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1pbl92ZXJzaW9u OiA5MDEwMCwgY2FuQWRkOiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZh bHNlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgY29udHJvbDogJ3Vu aXF1ZS1jb2wtY29sbGVjdGlvbicsIHVuaXF1ZUNvbCA6IFsncHJvdmlkZXIn XQorICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgIHZhbGlkYXRlOiBm dW5jdGlvbigpIC8vIENsaWVudCBTaWRlIFZhbGlkYXRpb24KKyAgICAgICAg eworICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgZXJy bXNnLAorICAgICAgICAgICAgICBzZWNsYWJlbHMgPSB0aGlzLmdldCgnc2Vj bGFiZWxzJyk7CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlz LmdldCgnbmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAg ZXJyWyduYW1lJ10gPSAne3sgXygnTmFtZSBjYW4gbm90IGJlIGVtcHR5IScp IH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ25h bWUnXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgnYmFzZXR5cGUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0 KCdiYXNldHlwZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcn KSB7CisgICAgICAgICAgICBlcnJbJ2Jhc2V0eXBlJ10gPSAne3sgXygnQmFz ZSBUeXBlIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAg ZXJybXNnID0gZXJybXNnIHx8IGVyclsnYmFzZXR5cGUnXTsKKyAgICAgICAg ICB9CisKKyAgICAgICAgICBpZiAoc2VjbGFiZWxzKSB7CisgICAgICAgICAg ICB2YXIgc2VjTGFiZWxzRXJyOworICAgICAgICAgICAgZm9yICh2YXIgaSA9 IDA7IGkgPCBzZWNsYWJlbHMubW9kZWxzLmxlbmd0aCAmJiAhc2VjTGFiZWxz RXJyOyBpKyspIHsKKyAgICAgICAgICAgICAgc2VjTGFiZWxzRXJyID0gKHNl Y2xhYmVscy5tb2RlbHNbaV0pLnZhbGlkYXRlLmFwcGx5KHNlY2xhYmVscy5t b2RlbHNbaV0pOworICAgICAgICAgICAgICBpZiAoc2VjTGFiZWxzRXJyKSB7 CisgICAgICAgICAgICAgICAgZXJyWydzZWNsYWJlbHMnXSA9IHNlY0xhYmVs c0VycjsKKyAgICAgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgc2Vj TGFiZWxzRXJyOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg ICAgICAgICAgfQorCisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFy KCkuc2V0KGVycik7CisKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg ICAgfQorICAgICAgfSksCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0 ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgIC8vSWYgY2hlY2sgaXMg ZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAg ICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKKyAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50 cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAvLyBUbyBp dGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAg ICB3aGlsZSAoaSkgeworICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0 aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGRvbWFpbgorICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKKyAgICAg ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgaWYgKCdjb2xsLWRv bWFpbicgPT0gZC5fdHlwZSkgeworICAgICAgICAgICAgLy9DaGVjayBpZiB3 ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAgIHByZXZf aSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAg ICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kp IDogbnVsbDsKKyAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2Nh dGFsb2cnKSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAg ZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAgICAgfQorICAg ICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNy ZWF0ZSBtZW51CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAg ICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uKG0peworICAgICAgICAgIGlmICgh bS5pc05ldygpKSB7CisgICAgICAgICAgICB2YXIgc2VydmVyID0gdGhpcy5u b2RlX2luZm8uc2VydmVyOworICAgICAgICAgICAgaWYgKHNlcnZlci52ZXJz aW9uIDwgOTAyMDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgfSk7CisKKyAgfQor CisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddOworfSk7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvY3Jl YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m OGIwYjc1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNx bApAQCAtMCwwICsxLDMwIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFz L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRhdGEg JX0KK0NSRUFURSBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5z cCwgZGF0YS5uYW1lKSB9fQorICAgIEFTIHt7IGNvbm58cXRUeXBlSWRlbnQo ZGF0YS5iYXNldHlwZSkgfX17JSBpZiBkYXRhLnR5cGxlbiAlfSh7e2RhdGEu dHlwbGVufX17JSBpZiBkYXRhLnByZWNpc2lvbiAlfSx7e2RhdGEucHJlY2lz aW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGRhdGEuY29sbG5h bWUgJX0KKworICAgIENPTExBVEUge3sgZGF0YS5jb2xsbmFtZSB9fXslIGVu ZGlmICV9eyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CisKKyAgICBERUZBVUxU IHt7IGRhdGEudHlwZGVmYXVsdCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50 eXBub3RudWxsICV9CisKKyAgICBOT1QgTlVMTHslIGVuZGlmICV9eyUgaWYg ZGF0YS5jb25zdHJhaW50cyAlfXslIGZvciBjIGluIGRhdGEuY29uc3RyYWlu dHMgJX17JSBpZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9CisKKyAgICBD T05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNL ICh7eyBjLmNvbnNyYyB9fSl7JSBlbmRpZiAtJX0KK3slIGVuZGZvciAtJX0K K3slIGVuZGlmIC0lfTsKKworeyUgaWYgZGF0YS5vd25lciAlfQorQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFt ZSkgfX0gT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19 O3slIGVuZGlmICV9eyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCisKK0NP TU1FTlQgT04gRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3As IGRhdGEubmFtZSkgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9 fSc7eyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZv ciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5X2xh YmVsIGFuZCByLnByb3ZpZGVyICV9CisKKwore3sgU0VDTEFCTEUuU0VUKGNv bm4sICdET01BSU4nLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJp dHlfbGFiZWwsIGRhdGEuYmFzZW5zcCkgfX17JSBlbmRpZiAtJX0KK3slIGVu ZGZvciAtJX0KK3slIGVuZGlmIC0lfQorCit7JSBlbmRpZiAtJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxldGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMTJi NTAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBA IC0wLDAgKzEsMTYgQEAKK3slIGlmIHNjaWQgYW5kIGRvaWQgJX0KK1NFTEVD VAorICAgIGQudHlwbmFtZSBhcyBuYW1lLCBibi5uc3BuYW1lIGFzIGJhc2Vu c3AKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQu dHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorQU5ECisgICAgZC5vaWQ9 e3tkb2lkfX06OmludDsKK3slIGVuZGlmICV9CisKK3slIGlmIG5hbWUgJX0K K0RST1AgRE9NQUlOIHt7IGNvbm58cXRJZGVudChiYXNlbnNwLCBuYW1lKSB9 fXslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTlmZGJiCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEs MTAgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxuYW1lLAorICAgIENBU0Ug V0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUp ID4gMCBUSEVOCisgICAgY29uY2F0KG5zcG5hbWUsICcuIicsIGNvbGxuYW1l LCciJykKKyAgICBFTFNFICcnIEVORCBBUyBjb3B5X2NvbGxhdGlvbgorRlJP TQorICAgIHBnX2NvbGxhdGlvbiBjLCBwZ19uYW1lc3BhY2UgbgorV0hFUkUK KyAgICBjLmNvbGxuYW1lc3BhY2U9bi5vaWQKK09SREVSIEJZCisgICAgbnNw bmFtZSwgY29sbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29u c3RyYWludHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0 ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTdmYjI0Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNx bApAQCAtMCwwICsxLDE1IEBACitTRUxFQ1QKKyAgICAnRE9NQUlOJyBBUyBv YmplY3RraW5kLCBjLm9pZCBhcyBjb25vaWQsIGNvbm5hbWUsIHR5cG5hbWUg YXMgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRpb24sCisgICAgcmVnZXhw X3JlcGxhY2UocGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQsIHRydWUpLCBF J0NIRUNLIFxcKCguKilcXCkuKicsIEUnXFwxJykgYXMgY29ucworRlJPTQor ICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0 Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBubCBPTiBu bC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19k ZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQgQU5EIGRlcy5j bGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUKKyAg ICBjb250eXBlID0gJ2MnCisgICAgQU5EIGNvbnR5cGlkID0gIHt7ZG9pZH19 OjpvaWQKK09SREVSIEJZIGNvbm5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1 cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNWM4OTEKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsxLDE4 IEBACit7JSBpZiBkb2lkICV9CitTRUxFQ1QKKyAgICBkLnR5cG5hbWVzcGFj ZSBhcyBzY2lkCitGUk9NCisgICAgcGdfdHlwZSBkCitXSEVSRQorICAgIGQu b2lkPXt7IGRvaWQgfX06Om9pZDsKK3slIGVsc2UgJX0KK1NFTEVDVAorICAg IGQub2lkLCBkLnR5cG5hbWVzcGFjZQorRlJPTQorICAgIHBnX3R5cGUgZAor Sk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1l c3BhY2UKK1dIRVJFCisgICAgYm4ubnNwbmFtZSA9IHt7IGJhc2Vuc3B8cXRM aXRlcmFsIH19CisgICAgQU5EIGQudHlwbmFtZT17eyBuYW1lfHF0TGl0ZXJh bCB9fTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9ub2Rl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMV9wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjdiZDNlNWIKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85 LjFfcGx1cy9ub2RlLnNxbApAQCAtMCwwICsxLDEzIEBACitTRUxFQ1QKKyAg ICBkLm9pZCwgZC50eXBuYW1lIGFzIG5hbWUsIHBnX2dldF91c2VyYnlpZChk LnR5cG93bmVyKSBhcyBvd25lciwKKyAgICBibi5uc3BuYW1lIGFzIGJhc2Vu c3AKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ190eXBlIGIg T04gYi5vaWQgPSBkLnR5cGJhc2V0eXBlCitKT0lOCisgICAgcGdfbmFtZXNw YWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBk LnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK09SREVSIEJZCisgICAg ZC50eXBuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi40MmFmMzlkCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9z cWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwzNSBAQAor U0VMRUNUCisgICAgZC5vaWQsIGQudHlwbmFtZSBhcyBuYW1lLCBkLnR5cGJh c2V0eXBlLCBmb3JtYXRfdHlwZShiLm9pZCxOVUxMKSBhcyBiYXNldHlwZSwK KyAgICBwZ19nZXRfdXNlcmJ5aWQoZC50eXBvd25lcikgYXMgb3duZXIsCisg ICAgYy5vaWQgQVMgY29sbG9pZCwgZm9ybWF0X3R5cGUoYi5vaWQsIGQudHlw dHlwbW9kKSBBUyBmdWxsdHlwZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKGNu Lm5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKGMuY29sbG5hbWUpID4gMCBUSEVO CisgICAgY29uY2F0KGNuLm5zcG5hbWUsICcuIicsIGMuY29sbG5hbWUsJyIn KQorICAgIEVMU0UgJycgRU5EIEFTIGNvbGxuYW1lLAorICAgIGQudHlwdHlw bW9kLCBkLnR5cG5vdG51bGwsIGQudHlwZGVmYXVsdCwgZC50eXBuZGltcywg ZC50eXBkZWxpbSwgYm4ubnNwbmFtZSBhcyBiYXNlbnNwLAorICAgIGRlc2Ny aXB0aW9uLCAoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBXSEVS RSB0Mi50eXBuYW1lPWQudHlwbmFtZSkgPiAxIEFTIGRvbWlzZHVwLAorICAg IChTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQzIFdIRVJFIHQzLnR5 cG5hbWU9Yi50eXBuYW1lKSA+IDEgQVMgYmFzZWlzZHVwLAorICAgIChTRUxF Q1QKKyAgICAgICAgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJl bCkKKyAgICBGUk9NCisgICAgICAgIHBnX3NlY2xhYmVsIHNsMQorICAgIFdI RVJFCisgICAgICAgIHNsMS5vYmpvaWQ9ZC5vaWQpIEFTIHNlY2xhYmVscwor RlJPTQorICAgIHBnX3R5cGUgZAorSk9JTgorICAgIHBnX3R5cGUgYiBPTiBi Lm9pZCA9IGQudHlwYmFzZXR5cGUKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2Ug Ym4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9ZC5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfdHlwZSc6OnJlZ2NsYXNzKQorTEVGVCBP VVRFUiBKT0lOCisgICAgcGdfY29sbGF0aW9uIGMgT04gZC50eXBjb2xsYXRp b249Yy5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBj biBPTiBjLmNvbGxuYW1lc3BhY2U9Y24ub2lkCitXSEVSRQorICAgIGQudHlw bmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorICAgIHslIGlmIGRvaWQgJX0K KyAgICBBTkQgZC5vaWQ9e3tkb2lkfX06OmludAorICAgIHslIGVuZGlmICV9 CitPUkRFUiBCWQorICAgIGQudHlwbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9w bHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBs YXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjA1ZGMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNjkg QEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9z JyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUg PSBvX2RhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9Cit7JSBpZiBk YXRhLm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRZUEUge3sgY29u bnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBvX2RhdGEubmFtZSkgfX0KKyAg ICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7 JSBzZXQgbmFtZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVu ZGlmIC0lfQoreyUgaWYgZGF0YS50eXBub3RudWxsIGFuZCBub3Qgb19kYXRh LnR5cG5vdG51bGwgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQgTk9UIE5VTEw7 Cit7JSBlbGlmICd0eXBub3RudWxsJyBpbiBkYXRhIGFuZCBub3QgZGF0YS50 eXBub3RudWxsIGFuZCBvX2RhdGEudHlwbm90bnVsbCV9CisKK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgRFJPUCBOT1QgTlVMTDsKK3slIGVuZGlmIC0lfXslIGlmIGRhdGEu dHlwZGVmYXVsdCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBERUZBVUxUIHt7 IGRhdGEudHlwZGVmYXVsdCB9fTsKK3slIGVsaWYgZGF0YS50eXBkZWZhdWx0 ID09ICcnIGFuZCBvX2RhdGEudHlwZGVmYXVsdCAlfQorCitBTFRFUiBET01B SU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIERST1AgREVGQVVMVDsKK3slIGVuZGlmIC0lfXslIGlmIGRhdGEub3du ZXIgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBjb25ufHF0SWRl bnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLmNv bnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmRl bGV0ZWQgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sg Y29ubnxxdElkZW50KGMuY29ubmFtZSkgfX07Cit7JSBlbmRmb3IgLSV9Cit7 JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFkZGVkICV9Cit7JSBpZiBj LmNvbm5hbWUgYW5kIGMuY29uc3JjICV9CisKK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQURE IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hF Q0sgKHt7IGMuY29uc3JjIH19ICk7eyUgZW5kaWYgLSV9Cit7JSBlbmRmb3Ig LSV9eyUgZW5kaWYgLSV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNs YWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNl Y2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNl Y2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5VTlNFVChjb25uLCAn RE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLmJhc2Vuc3ApIH19 CisKK3slIGVuZGZvciAtJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQn IGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFC TEUuU0VUKGNvbm4sICdET01BSU4nLCBuYW1lLCByLnByb3ZpZGVyLCByLnNl Y3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KKworeyUgZW5kZm9y IC0lfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJl bHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3slIGZv ciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7eyBTRUNMQUJMRS5TRVQo Y29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlf bGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQorCit7JSBlbmRmb3IgLSV9Cit7 JSBlbmRpZiAtJX17JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1F TlQgT04gRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg bmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJh bCB9fTsKK3slIGVuZGlmIC0lfXslIGlmIGRhdGEuYmFzZW5zcCAlfQorCitB TFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEu YmFzZW5zcCkgfX07eyUgZW5kaWYgLSV9Cit7JSBlbmRpZiAtJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9jcmVhdGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MWU1 YTMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCkBA IC0wLDAgKzEsMzYgQEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2Vj dXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0YSAlfQor Q1JFQVRFIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBk YXRhLm5hbWUpIH19CisgICAgQVMge3sgY29ubnxxdFR5cGVJZGVudChkYXRh LmJhc2V0eXBlKSB9fXslIGlmIGRhdGEudHlwbGVuICV9KHt7ZGF0YS50eXBs ZW59fXslIGlmIGRhdGEucHJlY2lzaW9uICV9LHt7ZGF0YS5wcmVjaXNpb259 fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgZGF0YS5jb2xsbmFtZSBh bmQgZGF0YS5jb2xsbmFtZSAhPSAicGdfY2F0YWxvZy5cImRlZmF1bHRcIiIg JX0KKworICAgIENPTExBVEUge3sgZGF0YS5jb2xsbmFtZSB9fXslIGVuZGlm ICV9eyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CisKKyAgICBERUZBVUxUIHt7 IGRhdGEudHlwZGVmYXVsdCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBu b3RudWxsICV9CisKKyAgICBOT1QgTlVMTHslIGVuZGlmICV9OworCit7JSBp ZiBkYXRhLm93bmVyICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fSBPV05FUiBUTyB7eyBjb25u fHF0SWRlbnQoZGF0YS5vd25lcikgfX07eyUgZW5kaWYgJX0KKworeyUgaWYg ZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25zdHJh aW50cyAlfXslIGlmIGMuY29ubmFtZSBhbmQgYy5jb25zcmMgJX0KKworQUxU RVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQo Yy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25zcmMgfX0peyUgaWYgbm90 IGMuY29udmFsaWRhdGVkICV9IE5PVCBWQUxJRHslIGVuZGlmICV9eyUgZW5k aWYgLSV9OworeyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgJX0KKworeyUgaWYg ZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBET01BSU4ge3sgY29u bnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElT ICd7eyBkYXRhLmRlc2NyaXB0aW9uIH19Jzt7JSBlbmRpZiAtJX0KKworeyUg aWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFi ZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5X2xhYmVsIGFuZCByLnByb3ZpZGVy ICV9CisKKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdET01BSU4nLCBkYXRh Lm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwsIGRhdGEuYmFz ZW5zcCkgfX17JSBlbmRpZiAtJX0KK3slIGVuZGZvciAtJX0KK3slIGVuZGlm IC0lfQorCit7JSBlbmRpZiAtJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2Rl bGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMTJiNTAKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTYgQEAKK3sl IGlmIHNjaWQgYW5kIGRvaWQgJX0KK1NFTEVDVAorICAgIGQudHlwbmFtZSBh cyBuYW1lLCBibi5uc3BuYW1lIGFzIGJhc2Vuc3AKK0ZST00KKyAgICBwZ190 eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQu dHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQudHlwbmFtZXNwYWNlID0ge3tz Y2lkfX06Om9pZAorQU5ECisgICAgZC5vaWQ9e3tkb2lkfX06OmludDsKK3sl IGVuZGlmICV9CisKK3slIGlmIG5hbWUgJX0KK0RST1AgRE9NQUlOIHt7IGNv bm58cXRJZGVudChiYXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUgJX0g Q0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3Fs LzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9j b2xsYXRpb25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lNTljMTdkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0 X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVDVCAtLW5z cG5hbWUsIGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFt ZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgIGNv bmNhdChuc3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAn JyBFTkQgQVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRp b24gYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNw YWNlPW4ub2lkCitPUkRFUiBCWQorICAgIG5zcG5hbWUsIGNvbGxuYW1lOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku Ml9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZGY5NTZiZgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3Fs LzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCArMSwxNSBA QAorU0VMRUNUCisgICAgJ0RPTUFJTicgQVMgb2JqZWN0a2luZCwgYy5vaWQg YXMgY29ub2lkLCBjb25uYW1lLCB0eXBuYW1lIGFzIHJlbG5hbWUsIG5zcG5h bWUsIGRlc2NyaXB0aW9uLAorICAgIHJlZ2V4cF9yZXBsYWNlKHBnX2dldF9j b25zdHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdDSEVDSyBcXCgoLiopXFwp LionLCBFJ1xcMScpIGFzIGNvbnNyYywgY29ubm9pbmhlcml0LCBjb252YWxp ZGF0ZWQKK0ZST00KKyAgICBwZ19jb25zdHJhaW50IGMKK0pPSU4KKyAgICBw Z190eXBlIHQgT04gdC5vaWQ9Y29udHlwaWQKK0pPSU4KKyAgICBwZ19uYW1l c3BhY2UgbmwgT04gbmwub2lkPXR5cG5hbWVzcGFjZQorTEVGVCBPVVRFUiBK T0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPXQu b2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFpbnQnOjpyZWdjbGFz cykKK1dIRVJFCisgICAgY29udHlwZSA9ICdjJyBBTkQgY29udHlwaWQgPSAg e3tkb2lkfX06Om9pZAorT1JERVIgQlkKKyAgICBjb25uYW1lOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfb2lk LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjVj ODkxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwK QEAgLTAsMCArMSwxOCBAQAoreyUgaWYgZG9pZCAlfQorU0VMRUNUCisgICAg ZC50eXBuYW1lc3BhY2UgYXMgc2NpZAorRlJPTQorICAgIHBnX3R5cGUgZAor V0hFUkUKKyAgICBkLm9pZD17eyBkb2lkIH19OjpvaWQ7Cit7JSBlbHNlICV9 CitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBuYW1lc3BhY2UKK0ZST00KKyAg ICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4u b2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGJuLm5zcG5hbWUgPSB7 eyBiYXNlbnNwfHF0TGl0ZXJhbCB9fQorICAgIEFORCBkLnR5cG5hbWU9e3sg bmFtZXxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9ub2RlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmQzZTViCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4yX3BsdXMvbm9kZS5zcWwKQEAgLTAsMCArMSwxMyBA QAorU0VMRUNUCisgICAgZC5vaWQsIGQudHlwbmFtZSBhcyBuYW1lLCBwZ19n ZXRfdXNlcmJ5aWQoZC50eXBvd25lcikgYXMgb3duZXIsCisgICAgYm4ubnNw bmFtZSBhcyBiYXNlbnNwCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisg ICAgcGdfdHlwZSBiIE9OIGIub2lkID0gZC50eXBiYXNldHlwZQorSk9JTgor ICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UK K1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitP UkRFUiBCWQorICAgIGQudHlwbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg5Mjk4OAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsMzQgQEAKK1NFTEVDVAorICAgIGQub2lkLCBkLnR5cG5hbWUgYXMg bmFtZSwgZC50eXBiYXNldHlwZSwgZm9ybWF0X3R5cGUoYi5vaWQsTlVMTCkg YXMgYmFzZXR5cGUsIHBnX2dldF91c2VyYnlpZChkLnR5cG93bmVyKSBhcyBv d25lciwKKyAgICBjLm9pZCBBUyBjb2xsb2lkLCBmb3JtYXRfdHlwZShiLm9p ZCwgZC50eXB0eXBtb2QpIEFTIGZ1bGx0eXBlLAorICAgIENBU0UgV0hFTiBs ZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoYy5jb2xsbmFtZSkg PiAwIFRIRU4KKyAgICBjb25jYXQoY24ubnNwbmFtZSwgJy4iJywgYy5jb2xs bmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29sbG5hbWUsCisgICAg ZC50eXB0eXBtb2QsIGQudHlwbm90bnVsbCwgZC50eXBkZWZhdWx0LCBkLnR5 cG5kaW1zLCBkLnR5cGRlbGltLCBibi5uc3BuYW1lIGFzIGJhc2Vuc3AsCisg ICAgZGVzY3JpcHRpb24sIChTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBl IHQyIFdIRVJFIHQyLnR5cG5hbWU9ZC50eXBuYW1lKSA+IDEgQVMgZG9taXNk dXAsCisgICAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBnX3R5cGUgdDMgV0hF UkUgdDMudHlwbmFtZT1iLnR5cG5hbWUpID4gMSBBUyBiYXNlaXNkdXAsCisg ICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0n IHx8IGxhYmVsKQorICAgIEZST00KKyAgICAgICAgcGdfc2hzZWNsYWJlbCBz bDEKKyAgICBXSEVSRQorICAgICAgICBzbDEub2Jqb2lkPWQub2lkKSBBUyBz ZWNsYWJlbHMKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ190 eXBlIGIgT04gYi5vaWQgPSBkLnR5cGJhc2V0eXBlCitKT0lOCisgICAgcGdf bmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorTEVGVCBP VVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jq b2lkPWQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX3R5cGUnOjpyZWdjbGFz cykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2NvbGxhdGlvbiBjIE9OIGQu dHlwY29sbGF0aW9uPWMub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19u YW1lc3BhY2UgY24gT04gYy5jb2xsbmFtZXNwYWNlPWNuLm9pZAorV0hFUkUK KyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK3slIGlmIGRv aWQgJX0KKyAgQU5EIGQub2lkPXt7ZG9pZH19OjppbnQKK3slIGVuZGlmICV9 CitPUkRFUiBCWQorICAgIGQudHlwbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9w bHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBs YXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YWUxOWUKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsODAg QEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9z JyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUg PSBvX2RhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9Cit7JSBpZiBk YXRhLm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0YS5uYW1lKSB9fQor ICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsK K3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBlbmRpZiAlfQoreyUg ZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnR5cG5vdG51bGwgYW5kIG5vdCBvX2Rh dGEudHlwbm90bnVsbCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBOT1QgTlVM TDsKK3slIGVsaWYgJ3R5cG5vdG51bGwnIGluIGRhdGEgYW5kIG5vdCBkYXRh LnR5cG5vdG51bGwgYW5kIG9fZGF0YS50eXBub3RudWxsJX0KKworQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkg fX0KKyAgICBEUk9QIE5PVCBOVUxMOworeyUgZW5kaWYgLSV9eyUgaWYgZGF0 YS50eXBkZWZhdWx0ICV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VUIERFRkFVTFQg e3sgZGF0YS50eXBkZWZhdWx0IH19OworeyUgZWxpZiBkYXRhLnR5cGRlZmF1 bHQgPT0gJycgYW5kIG9fZGF0YS50eXBkZWZhdWx0ICV9CisKK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgRFJPUCBERUZBVUxUOworeyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5v d25lciAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJ ZGVudChkYXRhLm93bmVyKSB9fTsKK3slIGVuZGlmIC0lfXslIGlmIGRhdGEu Y29uc3RyYWludHMgJX0KK3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMu ZGVsZXRlZCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9f ZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgQ09OU1RSQUlOVCB7 eyBjb25ufHF0SWRlbnQob19kYXRhWydjb25zdHJhaW50cyddW2MuY29ub2lk XVsnY29ubmFtZSddKSB9fTsKK3slIGVuZGZvciAtJX0KK3slIGZvciBjIGlu IGRhdGEuY29uc3RyYWludHMuY2hhbmdlZCAlfQoreyUgaWYgYy5jb25uYW1l IGFuZCBjLmNvbm5hbWUgIT1vX2RhdGFbJ2NvbnN0cmFpbnRzJ11bYy5jb25v aWRdWydjb25uYW1lJ10gJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICAgUkVOQU1FIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KG9fZGF0YVsnY29uc3RyYWludHMn XVtjLmNvbm9pZF1bJ2Nvbm5hbWUnXSkgfX0gVE8ge3sgY29ubnxxdElkZW50 KGMuY29ubmFtZSkgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgYy5jb252YWxp ZGF0ZWQgYW5kIG5vdCBvX2RhdGFbJ2NvbnN0cmFpbnRzJ11bYy5jb25vaWRd Wydjb252YWxpZGF0ZWQnXSAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxx dElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgICBWQUxJREFU RSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19Owor eyUgZW5kaWYgJX0KK3slIGVuZGZvciAtJX0KK3slIGZvciBjIGluIGRhdGEu Y29uc3RyYWludHMuYWRkZWQgJX0KK3slIGlmIGMuY29ubmFtZSBhbmQgYy5j b25zcmMgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25zcmMg fX0peyUgaWYgbm90IGMuY29udmFsaWRhdGVkICV9IE5PVCBWQUxJRHslIGVu ZGlmICV9eyUgaWYgYy5jb25ub2luaGVyaXQgJX0gTk8gSU5IRVJJVHslIGVu ZGlmIC0lfTt7JSBlbmRpZiAtJX0KK3slIGVuZGZvciAtJX17JSBlbmRpZiAt JX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KK3t7IFNFQ0xBQkxFLlVOU0VUKGNvbm4sICdET01BSU4nLCBuYW1l LCByLnByb3ZpZGVyLCBvX2RhdGEuYmFzZW5zcCkgfX0KKworeyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmFkZGVkICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25u LCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJl bCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm IC0lfXslIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVs cy5jaGFuZ2VkICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRE9NQUlO JywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRh LmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfXslIGlm IGRhdGEuZGVzY3JpcHRpb24gJX0KKworQ09NTUVOVCBPTiBET01BSU4ge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIElT IHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYg LSV9eyUgaWYgZGF0YS5iYXNlbnNwICV9CisKK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VU IFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTt7JSBl bmRpZiAtJX0KK3slIGVuZGlmIC0lfQo= --001a11c3358a2923a8052ec86fac 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 --001a11c3358a2923a8052ec86fac--