Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSGyO-0007zK-8m for pgadmin-hackers@arkaria.postgresql.org; Tue, 04 Jul 2017 06:06:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSGyM-0006aZ-RT for pgadmin-hackers@arkaria.postgresql.org; Tue, 04 Jul 2017 06:06:06 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dSGyL-0006aO-Aw for pgadmin-hackers@lists.postgresql.org; Tue, 04 Jul 2017 06:06:06 +0000 Received: from mail-it0-x231.google.com ([2607:f8b0:4001:c0b::231]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dSGyG-0001Vo-2d for pgadmin-hackers@postgresql.org; Tue, 04 Jul 2017 06:06:03 +0000 Received: by mail-it0-x231.google.com with SMTP id m84so66510909ita.0 for ; Mon, 03 Jul 2017 23:05:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=COW1ZzNEqNVz/7jr0KpfXpX0avHY3ouMeUZcM561HB4=; b=o30mWphoQveZ2/m14TVnID166Oi8/XSF5p8nqfF6sRn4e7ws3iU6I+l68ru0glCzT/ 4ikbh+tkPdf1xzhpN8Mo00TzYOTlA9ophuBob6K2FZg+ej/HqAeCahSqNPrY/ldVCzeQ sj8ulWzG2uYUPN++juwBPrAEOyByDLbc6SKIGa6C+q//KawUXQDotHyzn/cdjimwyw3u nLT7wIM9c5BlLsPqqyaDR5tKOCBpAtJmaoTKysHZiztW4k0IWnVeLYkrsyM6rwNA0rSD 6kvP9v+g4sZO7MeTR1Ju4J87WTGz5rlI/yMfWAMgaBETMqMLbvO6QiCytULT4Fy9bkt+ ANqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=COW1ZzNEqNVz/7jr0KpfXpX0avHY3ouMeUZcM561HB4=; b=SbifwVaL6E4t6SJtdvTe6IwWLirzeDxnYXAivMBU6Xu5hlv3kErSxP3ut+EZmIqtIK eKH2rriGl7PVtAF/2ErLyE47h8gN6D2D12RYWwSsC4RWR3HlxTajnhjEbdRTd3t4bqc/ CPcC6HWoQsHj1EnllXxNx3rwO7qFcZ5zTmhisHFu9jQNsYT9jJKEtFlfruRxRnfQ4o8c P/fyPTWxdMwAeIoYafPlT3ZPOrinwVng+CZxlstztzGHWKq3tFmxov/7FhiMv26sFKHM uDiTlb+39EOgoGQQsF2pLodX//9rm+4LsH1UPJorw3ggwLwcIXtOJZ/qd2BCHXVQ8cJW 8ObQ== X-Gm-Message-State: AIVw110E8v6WsyuaBHGZx1XWLyxmFngeTRAOMzcGQc1qSXmGugNI9LGs /uTAOrBFXMDrRy4mfmc9T7A7qRZzdeHz X-Received: by 10.36.120.67 with SMTP id p64mr12520202itc.23.1499148358818; Mon, 03 Jul 2017 23:05:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.19.40 with HTTP; Mon, 3 Jul 2017 23:05:37 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Tue, 4 Jul 2017 11:35:37 +0530 Message-ID: Subject: Re: [pgadmin-hackers] Declarative partitioning in pgAdmin4 To: Akshay Joshi Cc: Harshal Dhumal , pgadmin-hackers , Dave Page , Robert Eckhardt , Shirley Wang Content-Type: multipart/mixed; boundary="001a114a9ebe668845055377ad3c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Unsubscribe: , List-Archive: Precedence: bulk --001a114a9ebe668845055377ad3c Content-Type: multipart/related; boundary="001a114a9ebe668843055377ad3b" --001a114a9ebe668843055377ad3b Content-Type: multipart/alternative; boundary="001a114a9ebe668840055377ad3a" --001a114a9ebe668840055377ad3a Content-Type: text/plain; charset="UTF-8" Hi Akshay, I found couple of issues, and fixed them in the updated patch. - Validation issue resolved - Disable "Is primary key?" in columns subnode for partitioned table. Review comments: - Add note about - what value is expected in 'from', and 'to' field. Please add an example in the note. - PostgreSQL allows to create partioned table using 'OF TYPE'. - We should add collation, and opclass for 'partition by statement (We can do this later). - Refresh the browser tree after creating, attaching, and detaching the partitions. -- Thanks, Ashesh On Mon, Jul 3, 2017 at 3:14 PM, Akshay Joshi wrote: > Hi Ashesh > > On Fri, Jun 30, 2017 at 12:46 PM, Ashesh Vashi < > ashesh.vashi@enterprisedb.com> wrote: > >> On Thu, Jun 29, 2017 at 5:02 PM, Ashesh Vashi < >> ashesh.vashi@enterprisedb.com> wrote: >> >>> Hi Harshal, >>> >>> These are initial review comments. >>> 1. >>> Please share a separate patch for generic code changes from this patch >>> for the following files: >>> - web/pgadmin/tools/user_management/templates/user_management/ >>> js/user_management.js >>> - web/pgadmin/static/js/backform.pgadmin.js >>> - web/pgadmin/static/js/backgrid.pgadmin.js >>> >>> This should be committed as separate functionality, and should not be >>> part of this commit. >>> >> > Committed. > >> >>> 2. >>> Please put a space after a colon (:) in javascript object definition. >>> i.e. >>> {cell: Backgrid.Extension.StringDepCell, cellHeaderClasses: >>> 'width_percent_30'} >>> >>> 3. >>> Conversion of ptid (partition table OID) to tid (table OID) for its >>> children must not be in 'web/pgadmin/browser/utils.py' file. >>> Please create a inherited class of PGChildNodeView, and extend the >>> functionality in it, and use it as the base class for all children of table. >>> >>> I will keep you posted for further review comments. >>> >> 4. >> URL definition of the javascript for tables & partition tables utility >> must be exposed from the table/partition table module, and not from the >> database module. >> i.e. >> No changes should be done in the database module for this feature. Hence >> - I don't expect any change in the file: >> web/pgadmin/browser/server_groups/servers/databases/__init__.py >> > > Fixed. > > Apart from above this patch contains test cases as well. > >> >> -- Thanks, Ashesh >> >>> >>> >>> -- >>> >>> Thanks & Regards, >>> >>> Ashesh Vashi >>> EnterpriseDB INDIA: Enterprise PostgreSQL Company >>> >>> >>> >>> *http://www.linkedin.com/in/asheshvashi* >>> >>> >>> On Fri, Jun 23, 2017 at 6:55 PM, Harshal Dhumal < >>> harshal.dhumal@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find attached patch for partition support. >>>> >>>> This patch includes all the work done by Akashy and support for child >>>> nodes (constraints, rules, index, triggers and partition itself ) under >>>> partition node. >>>> >>>> >>>> Thanks, >>>> >>>> -- >>>> *Harshal Dhumal* >>>> *Sr. Software Engineer* >>>> >>>> EnterpriseDB India: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>>> On Tue, Jun 20, 2017 at 12:16 AM, Shirley Wang >>>> wrote: >>>> >>>>> >>>>> >>>>> On Mon, Jun 19, 2017 at 1:59 AM Akshay Joshi < >>>>> akshay.joshi@enterprisedb.com> wrote: >>>>> >>>>>> On Fri, Jun 16, 2017 at 11:16 PM, Shirley Wang >>>>>> wrote: >>>>>> >>>>>>> Looks good. I noticed people clicking back and forth to the columns >>>>>>> tab to remember which columns they've created while filling out the >>>>>>> Expressions column. It might be better to have a list of the columns and >>>>>>> the datatype above the 'Partition Keys' subnode and have columns as a type >>>>>>> field rather than a drop down. >>>>>>> >>>>>> >>>>>> I think we should not duplicate that data as we already have all >>>>>> the information on "Columns" tab and by providing drop down user can select >>>>>> columns from there only. >>>>>> >>>>>>> >>>>>>> Also, I think the fields someone sees after selecting the Key type >>>>>>> needs to depend on what they select. Seeing both Column and Expressions >>>>>>> type field might lead someone to think they need to fill out both fields. >>>>>>> >>>>>> >>>>>> We can't, because user can select one column and provide an >>>>>> expression as partition key in this case we will have to show both the >>>>>> columns in subnode control. Anyways when user select columns I have >>>>>> disabled the expression cell and if user selects expression column cell is >>>>>> disabled. >>>>>> >>>>> >>>>> Ah I see what you mean. What I meant was that the column would change >>>>> depending on if someone selects Column or Expressions from the dropdown >>>>> [image: expression.png] >>>>> Can a user select more than one key type? The use case I can see where >>>>> hiding 'Columns' or 'Expressions' would fail is if someone can create an >>>>> expression key type and a column key type. >>>>> >>>>> Disabling a feature is one way to guide user behavior, but it doesn't >>>>> provide enough context for someone to understand why it's disabled. It's >>>>> better to only display what is absolutely necessary and hide fields that >>>>> are unrelated to the workflow. >>>>> >>>>> Typically, disabling a UI element is useful when that disabled UI >>>>> element also provides some context or value while disabled. In this case, >>>>> I'm not sure it is. >>>>> >>>>> If hiding options isn't possible, providing some text in the fields >>>>> (like N/A or --) would be helpful. >>>>> >>>>> >>>>> >>>>>> >>>>>>> [image: coluns_partitioning.png] >>>>>>> When is the 'In' column in the Partitions subnode enabled? >>>>>>> >>>>>> >>>>>> In case of 'List' Partition. >>>>>> >>>>> >>>>> It would improve the experience if the 'In' column was removed when a >>>>> user selects 'Range' partitions then. And then if a user is creating a >>>>> 'List' partition, 'From/To' should be hidden. In this case, 'From/To' and >>>>> 'In' are dependent on that first drop down step, so seeing 'In' while on >>>>> 'Range partitions' (and 'From/To' on 'List partitions') is not providing >>>>> any value. >>>>> >>>>> >>>>>> >>>>>>> For the NoteControl on the bottom, what do 'Mode Control' or 'Attach >>>>>>> Mode' refer to? And how can I tell the difference between 'Create Mode' and >>>>>>> 'Edit Mode'? >>>>>>> >>>>>> >>>>>> 'Mode control' is a switch control in subnode control that should >>>>>> be "Mode switch control". 'Create Mode' is when user creates the new table >>>>>> by clicking create-> table and 'Edit Mode' is when user open the properties >>>>>> dialog for the existing table. In case of 'Edit Mode' there are two ways >>>>>> user can create/attach partitions. In Attach mode we will identify and list >>>>>> down the suitable tables to be attached. >>>>>> >>>>> >>>>> I see. Describing these various states is great in case a user needs >>>>> it. What are your thoughts on having it live in the documentation of >>>>> pgAdmin4 rather than in the dialog? This seems to be the established >>>>> pattern for all other explanations. >>>>> >>>>>> >>>> >>> >> > > > -- > *Akshay Joshi* > *Principal Software Engineer * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > --001a114a9ebe668840055377ad3a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi A= kshay,

I found couple of issues, and fixed them in the updated patch.
- Validation issue resolved
- Disable "Is primary key?" in columns subnode for partitio= ned table.

Review comments:
- Add note about - wh= at value is expected in 'from', and 'to' field. Please add = an example in the note.
- PostgreSQL allows= to create partioned table using 'OF TYPE'.
- We should add collation, and opclass for 'partition by state= ment (We can do this later).=C2=A0
- Refres= h the browser tree after creating, attaching, and detaching the partitions.=

<= br>
-- Thanks, Ashesh

On Mon, Jul 3, 2017 at 3:14= PM, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi Ashesh

On Fri, Jun 30, 2017 at 12:46 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
On Thu, Jun 29, 2017 at 5:02 PM, = Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
Hi Harshal,

These are initial review comments.
=
1.
Please share a separate patch for generic code changes fr= om this patch for the following files:
- web/pgadmin/tools/user_m= anagement/templates/user_management/js/user_management.js
- web/pgadmin/static/js/backform.pgadmin.js
- web/pgadmin= /static/js/backgrid.pgadmin.js

This should be= committed as separate functionality, and should not be part of this commit= .

=C2=A0 =C2=A0 =C2=A0 Committed.=C2=A0
<= div class=3D"gmail_extra">

2.
Please put a space after a colon (:) in javascript object definiti= on.
i.e.
{cell: Backgrid.Extension.String= DepCell, cellHeaderClasses: 'width_percent_30'}

3.
Conversion of ptid (partition table OID) to = tid (table OID) for its children must not be in 'web/pgadmin/browser/ut= ils.py' =C2=A0file.
Please create a inherited class of PGChil= dNodeView, and extend the functionality in it, and use it as the base class= for all children of table.

I will keep you posted= for further review comments.=C2=A0
4= .
URL definition of the javascript for tables & partition tab= les utility must be exposed from the table/partition table module, and not = from the database module.
i.e.
No changes should be don= e in the database module for this feature. Hence - I don't expect any c= hange in the file:
web/pgadmin/browser/server_groups/servers= /databases/__init__.py

=C2=A0 =C2=A0 Fixed.

=C2=A0 =C2=A0= Apart from above this patch contains test cases as well.=C2=A0
-- Thanks, Ashesh


<= div class=3D"gmail-m_3818908010158718661m_-3543863640867465225gmail-m_30896= 68160739423127m_3526224266373862394gmail_signature">

--

Thanks & Regards,
<= br style=3D"font-style:italic">Ashesh Vas= hi
= EnterpriseDB INDIA: Enterprise PostgreSQL Company


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


On Fri, Jun 23, 2017 at 6:55 PM, Harshal Dhu= mal <harshal.dhumal@enterprisedb.com> wro= te:
H= i,

Please find attached patch for partition support.

This patch includes all the work done by Akashy and s= upport for child nodes (constraints, rules, index, triggers and partition i= tself ) under partition node.


Thank= s,

=
--=C2=A0
Harshal Dhumal
Sr. Software Engineer

EnterpriseDB India:=C2=A0http:/= /www.enterprisedb.com
The Enterp= rise PostgreSQL Company
<= div class=3D"gmail-m_3818908010158718661m_-3543863640867465225gmail-m_30896= 68160739423127m_3526224266373862394h5">
On Tue, Jun 20, 2017 at 12:16 AM, Shirley Wa= ng <swang@pivotal.io> wrote:


On Mon, Jun 19, 2017 at 1:59 AM Akshay Joshi <akshay.joshi@= enterprisedb.com> wrote:
On Fri, Jun 16, 2017 at 11:16 PM, Shirley Wang <swang@pi= votal.io> wrote:
Looks good. I noticed people clicking back and = forth to the columns tab to remember which columns they've created whil= e filling out the Expressions column. It might be better to have a list of = the columns and the datatype above the 'Partition Keys' subnode and= have columns as a type field rather than a drop down.

=
=C2=A0 =C2=A0I think we should not duplicat= e that data as we already have all the information on "Columns" t= ab and by providing drop down user can select columns from there only.=C2= =A0

Also, I think the fields someone sees af= ter selecting the Key type needs to depend on what they select. Seeing both= Column and Expressions type field might lead someone to think they need to= fill out both fields.

<= /div>
=C2=A0 =C2=A0We can't, because user can select one column and pro= vide an expression as partition key in this case we will have to show both = the columns in subnode control. Anyways when user select columns I have dis= abled the expression cell and if user selects expression column cell is dis= abled. =C2=A0

Ah I see what you mean. What I meant was that the column would change dep= ending on if someone selects Column or Expressions from the dropdown
<= div>3D"expression.png"
Can a user select more than one= key type? The use case I can see where hiding 'Columns' or 'Ex= pressions' would fail is if someone can create an expression key type a= nd a column key type.

Disabling a feature is one w= ay to guide user behavior, but it doesn't provide enough context for so= meone to understand why it's disabled. It's better to only display = what is absolutely necessary and hide fields that are unrelated to the work= flow.=C2=A0

Typically, disabling a UI element is u= seful when that disabled UI element also provides some context or value whi= le disabled. In this case, I'm not sure it is.

If hiding options isn't possible, providing some text in the fields (l= ike N/A or --) would be helpful.

=C2=A0

3D"coluns_partitioning.png"
When is the 'In' column in the Partitions subn= ode enabled?=C2=A0

=C2=A0 =C2=A0 In case of 'List' Partition.=C2=A0

It would improve the experie= nce if the 'In' column was removed when a user selects 'Range&#= 39; partitions then. And then if a user is creating a 'List' partit= ion, 'From/To' should be hidden. In this case, 'From/To' an= d 'In' are dependent on that first drop down step, so seeing 'I= n' while on 'Range partitions' (and 'From/To' on 'L= ist partitions') is not providing any value.
=C2=A0

For the NoteCon= trol on the bottom, what do 'Mode Control' or 'Attach Mode'= refer to? And how can I tell the difference between 'Create Mode' = and 'Edit Mode'?

=C2=A0 =C2=A0'Mode control' is a switch control in subnode = control that should be "Mode switch control". 'Create Mode= 9; is when user creates the new table by clicking create-> table and = 9;Edit Mode' is when user open the properties dialog for the existing t= able. In case of 'Edit Mode' there are two ways user can create/att= ach partitions. In Attach mode we will identify and list down the suitable = tables to be attached.=C2=A0

<= /div>
I see. Describing these various states is great in case a = user needs it. What are your thoughts on having it live in the documentatio= n of pgAdmin4 rather than in the dialog? This seems to be the established p= attern for all other explanations.






--
Akshay Joshi
= Principal Software Engineer=C2=A0


Phone: +91 20-3058-9= 517
Mobile: +91 976-788-8246

--001a114a9ebe668840055377ad3a-- --001a114a9ebe668843055377ad3b Content-Type: image/png; name="coluns_partitioning.png" Content-Disposition: inline; filename="coluns_partitioning.png" Content-Transfer-Encoding: base64 Content-ID: <15cb1f7bd866477d6182> X-Attachment-Id: 15cb1f7bd866477d6182 iVBORw0KGgoAAAANSUhEUgAAA4QAAALvCAYAAAA9CgsWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA AXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAATnbSURBVHgB7L13cBzH/aetqqururqru3PV3f11 VVeuu7eu3tc/B9lUlizJClawomVZwYpWtGQr50BSgRIVSWVSpERSmRLFIOYIkmACE8CcAeYcQYKZ 7Hc+DXyXjeEusFgugF3M81Q9BezO7ITdntn+TPf0nrRixQqHiIiIiIiIyfOkYtpYREREREREzJ8E QkRERERExIRKIEREREREREyoxwXCXz41BBEREREREduYBEJERERERMSESiBERERERERMqARCRERE RETEBPqrpwYTCBEREREREZPor5/6iUCIiIiIiIhYCF7asb974f2v3Uc9ernPP/88J/VaLUPLanh9 g91v8hEIf/HsSPd/PljjftFjs/vlpxvdr3tsdL/tscG167nenfrZMU+LPCV67jc91rv/t9vG6DWr /WsL9cNARERERERsKe95s2/OITCTd73Rt4F1DnYn5yMQ/n8Kdd3WuadKD7pXp+13Xabvdr1mbXMD 525yo+ZvcGMXyvVuzIL1bkD5Ovf2+PXur/02ut90W+P+jUCIiIiIiIgJV615CnC9evVyJSUlbvHi xTn/hqBeq2VoWVpm5pbCwe63Tw3KTyD8Vbf1rkPZEff6zCPupWkH3QuT97unJtS4h8bsdvcM3+X+ Nmi7u/bHre6Sbza7s3pvcr+MWhP/H1oIERERERER3Qvvf+XDm4JcrkEwrpalZWrZ6debx0D46ygQ vlJ2yL0764B7vWyf6zB5r3tq/B73r9HV7q5hO91NA7e5a36IAuG3m925X2xyv+m5yXcZ/f8IhIiI iIiImHDtnsETaRlM11Jo9xSmX28eA+Fvu69131ZscxVLV7m5S6vcnKUr3dxlq9wc72o3Z/ma6G/k irVu+tIoPI7b6H758RoCISIiIiIiJl675y9fYdC05aZfbx4D4WndV7nJ81e6qsoVrqqqMvpb6ZYt W+pWVlW5VStXusro+XVr17oN69e7TRs3uhnLN7nTP13j/t9nCISIiIiIiJhsiz8QfrrKTVtQ6Sqj eSujMLhkyRI3YsQIt3z5cv/6MWPG+L9rfShc5+at2uzO6NH0QPh83wpXvnK721K9363bvtf9OH21 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 tnbWDRKj8KjpGjjGumtqlNHfvzTKD04TsmLTbh9GT6QAWADcHLVk6rFGObUBbYS6xFpYva9nWWow HLV8Gmq91M9K6PXrttdO71Q3yui3UUtiOMqowuD9n/HzE4iIiIiIhWA29xAuXbrUdx0Nn9NP/ekn /lr1HsKW9uq3x/v75NSN8qyO2QVK/YyDul4qBMV/h/D6rqV+cJXwd/5C9fuDV0dh9KwOx153Seex fv0a4KW59vPM9iPdfdH23tltaoPz6XcI0+1X3HOjMKv9vOvTqc22zYiIiIiI2HSzCYS52CYDISIi IiIiYluSQIiIiIiIiJhQP+rRywc3dQHNVxjUsrRMLTv9egmEiIiIiIiIre4L73/lw1tJSUneAqGW pWVq2enXSyBERERERERsdS/t2N+Ht169evkgdyIthXqtlqFlaZladvr1EggRERERERELwnve/C51 z1++vLNz3wbWSSBEREREREQsGNWapy6edk9hLuq1WkbmlkGTQIiIiIiIiJhQCYSIiIiIiIgJlUCI iIiIiIiYUAmEiIiIiIiICbUJgbBv376IiIiIiIjYRvzuu+/ct99+SyBERERERERMmk0KhKtXr0ZE RERERMQ24qpVqzL+uD2BEBERERERsQ1LIEREREREREyoBEJERERERMSESiBExKJz48aNbu/eve7w 4cOuraJ90z5qX4vps0FERMTikkCIiEXljh07XNLQPhfTZ4SIiIjFI4EQEYtGtZYdPXrUJQ3tMy2F iIiI2BwSCBGxaKypqXFJRfteTJ8VIiIiFocEQkQsGtvyPYONoX0vps8KERERi0MCISIWjUmnmD4r RERELA4JhIhYNCadYvqsEBERsTgkECJi0Zh0iumzQkRExOKQQIiIRWPSKabPChEREYtDAiEiFo1J p5g+K0RERCwO8x4If5q80D3y+RR3Q5fx7rYPJ7hX+k535YsKJ0wuXbHSvfL9DDdh9tK8Lre0Ypl7 /usyd/N7490tH0xwL35T5srmLc/qtdqWV76f7pZXrmyWfW4tfyxdkCoLf/94onuz/0y3eHnz7uPK qEBXrVyV02tHli12r0ZlY9WqxuetrMptHSdiRXQc6Xj6auzcRucdNm2R6zpodotvY1PV8fhy3xl+ 37KZvzH27NnjnnvuuXo+++yzbuTIkS5XwpFN161b5zp06OAOHTrU6LTmINv39eOh5b6smC9HvjVg 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 iIiIiFjs3vXp1KwzW7MGwj++TiBERERERERsSe/sNiXrzEYgREREREREbEMSCBERERERERMqgRAR ERERETGhEggRERERERGLyMtfG+Ee7THOvdBnfNY++dk4d/3bo45bFoEQERERERGxSOzwRYmbM2ee z16VlZVZq/kXLFjgHu/yXb3lEQgRERERERGLwItfGeamzZrjampq3OHDh92RI0ea5MGDB91Hn3Rz f3iyd2qZBEJERERERMQC99+eHOzu7DrSLVu+3B06dChnhw4d6m54qku0vJ/8cgs+EP7+pVHu3MDz Xh7tTn9xRF7f3N89P8wvO900rUvTfvvssLx/qNq3czqOcr95emi95095frhf56kvDM/7OhERERER sfhUILzvw5E+cx04cCCtajncsmWLq66uzjjPiBEj3N+eetv92xNFEAhPfmaoW7Rul1u+sTrlik3V bu7qHe79EYvdqc83PTD96ukh7taPJ7vL3xjnH//uuWFu8Ow1bnbVdv/4j6+Pcbd/MsWvW497TVjh Fq7d6W7+aFJeP9DfRMtfsGanm7pssw+G9vx5r4x2Zcu3umXRvr7wfUWzFShERERERCwe1aJngXD/ /v1pff/9991f//pX984777i9e/emnWf48OF1gXCQX25BB8LfPTfU7Tt42O3ed9DNWLHVTV++xZWv 3O6fO3T4iOsybFGT30gFvcpNu324rG2hG+nmrNrhw5mmfzBysTt05Kh74PMZ/vFnJcvd2m017vr3 J+b1A/3ts0Ndzf5Dbu32mlQgvPH9Ur8th6P1/zh9tftdM7RKIiIiIiJi8WmBcPny5T7spfP+++93 7dq1cw888IDbuXNn2nmGDRtWfIFw6Ybqeq1o/+o9wx08fNRVrNzhH5/2wgh3y0eT3Uv957rno1a1 a94dn5r3ss7jfKvbxa+NdS/9OM/d02OaW7l5j9u4c5+769Op7sz2I9xf3yt113WZ6Lfhi4krfCBT 2Dy7w0h3WdSSeF/Pab4bp5bX7vlh7sYPJ0XLql3Xn+paGuVFnca4q98e785/dbRr32+On+eyYHpo PBDe+P4k3xJpQVctmTbvBdHyHv9qtntlwDz353cnRPs73G+HtleB1uZr91ztcxe8Osa//s9dJriO /ea6DpE3RGFT6yykQo2IiIiIiNlpgXDZsmVuz549aQ0D4fbt29POU5SBcNnG+oFQoWvb7v1uwdra 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 5mXe1uUJBOn8889vSMhklCcesI9vfvObTeIUvyM4fnv55ZeXextrnHLKKY2NTNVJOMnODjvs0Pjt V77ylSbhmwr1uu+++8q5557bNybr9x/+8Ifl0EMPXeKYBP2CCy4Y1cb++te/NvaxvMbBiUL7xRlt jfEOkdVnv/jFLyZkVwcddFATw1cEMiyuXnTRRZPux2KQMWmjjTYqP//5zydUxlNPPVW22267cvbZ Z09q3WpceOGFZeutt15i4oNOJjOu8APjmEmhruNsRc61zTbblA022KCxwYneS1lf/vKXy/HHHz+u 6+TtG2+88WJxfjLw+OOPN/HAmF7/Lo589KMfbSa0R7teXiRXOOqoo4Z6kqXGs88+W770pS81MXxZ 3icJ4Tjx0EMPlfXXX78JXIKIAGMgmejM6njAOSRr22+//aSVKZiss846ZdVVV23a4h5HH3108/en P/3pcQXIcN4TTzyxfO1rX1vmAyTip44xkyQZQ0T32muvZXrfyexP5J4d1b/Tudm7M888s2lfm7yZ STXgSMD222+/cd3zV7/6VaMfZS7PYKu+X/ziF8s555wz0va2LvSfldHNNtusmXSZbF1L0o844ojl 1ublAYm6eGQQnozy+Ozmm29eVl555bLbbruNJI4GeDHhvV65lfREXJqKyQLi/MlPfrKZfJDgLu+J l374wx/+UDbddNO+9aFPdbbS0D527bXXNon+aDZmopItTvXdMhKetdZaq7FlZJ0NHXLIIc3fxvSJ jHe//vWvy9e//vUVghAec8wxDQlpJ+uToVdJq4nMn/70pxMqQ2z585//PCZhmAiiryTU/KC9+mSn jonWyYopdo4heldffXXfXUvae+mll5ZPfepTE1qdjHIjZo93bBOfTLBN1tgR6Kdj91tppZWaFfXR dnL5XZ4gpkxmvVZksCe+YSfCsrxPEsJxwgzqJptsUm644YaR3yRNZlj934BiFcSMj39/9rOfNdfE cr6gaXCWlJtZrIMfPZ522mnNMcTPgBWDDJ05JqmWMJ911lkN4npOhJQqe88992xWjmIGdDQEITRT 9L3vfa+pHzLn7zrxYohWlxAKK4B1YsiIzjjjjKbeyOBhhx22GCGUhEgW1Eu72v3vPLo6/fTTxzVQ jUUI1dv2FauGfvOvwF/f17YNhF4/WXGs76/e2qrtJ598clPGn/70p1HriPiY4TQj3z7mXldccUWj U/3GwZ1rG0VXWYJiFyEMO/vOd74zIUJodZuu9Qcd1rPFdIKkaquZXsngoEnSo48+2rRn7733bq43 METZQQj1gaRE0nDeeectkUTxq8985jNLEEJ1YDeSL2XTHVsdq05sQBv4ysc+9rFGZ/7v+ljNCDth m2yBrbLpQXWqHH1It3TKRurrzRLDVVdd1dzjN7/5zYgdslm2T2f77LNPYx+hEysybGDfffdt+oKP xdYiA4QJgz322KOsvfba5dhjj23aZQtQDLR0P5rfdUEc+/znP1/WWGON8vGPf3xkhns8hFBy43zx iz7FDavecdwEyF133TXyt6SJzelj99OOaC+/o5vwJ4RQ/FO+dknm6y1mdGdSgX2xE30fsTlsNAZW E1/KGG3lrAbds+/oQ/Wu+4pPiSMIoRioHYNMbLAV/aTtv/vd75p6RyLpuPbRj3uq7wknnNDs4qjL cC29WgFnR2A1SPKlHjvvvHOzo0Ad/V1v67MFV7ugXqkQd9jYb3/722aM+P3vf99cizhG3bSbvbtW HWtdgzHILgh9yO/DZ10vGbbFMGzUikDt0651v7Bf5y9twh6EUFxVJ0nqt7/97UY3NSEUn8VWemRz 9conO2CbfI99srWaEPI75EK9XT+eJE77rPpL1F2vz+sVHHmE/ld39WNfoRN9zy9M7LJDNhi+YReN vrc6uuGGGzZ5At3WOzFMNBrvtF2bY7yLPpWgi3HaxIfa2xzp1vg7XkIYkxFsiC/WY3To2wqkNmk3 Ox80T4iYoq/kRHy+JiuRaLs33dX25f/3339/OfLII5u+4Ae1P+snOVnUi95jvAtCqB/lf3RS53MB E0jyyTYhVG9+KfbHeFf7ln5VrmPGUauRgxJCMdw4o83K5QNxjJ0bc9SLv2qb8WmQHEAsiPzVSiB/ ZmPGPceDEIrP4jadtFdQ2XrEorbfRF8aUyLXHHSCku6UrQ9dS1d17h1+p0x9LQ7XsVBc0jZ1VgZf C534vzhW+13YZ5cNib21nbGV8Ds6Uz+2qM58Sk4UOrEgVbfLtfpLvfimHHNpJuWGkhBSosFGcG0P YGMFF4NGPXPepVCzNYKBrQmM11YKTiCw+U0AEJyUte666zYBUNmc3+wdZ3GdgctgyngYs8FBsiag GwwYlwTQfSVMEm6zTZJu25UEvrH24wch5CDOFyCspKhfEEIDgSQdyXPfT3ziE80qZRg9I15zzTUb g7TUz+mDEEoqbD2VtGqLbRIS83pVTKBAQF03nn3jYxFCOtEP3/rWtxqHtL30pJNOGnFUyY5EIBIO +qbTcKgIYOqmXwR97RptO6OAusUWWzQDT/27+9mWZHsxmzMTT19shc66ylpWhFCb2Iq26ssf//jH jW2qlz7Sl2wxyIYgOUjZgr/2IADKMSgog08EIVS2pEQAQzokKXUZ/QihwZTda7PykZWddtppTOKm TepFTx/5yEeaLd7aLeDH85cSWXXRP+zA/9n/IIFV3yib7SDafJePhk3qdzrn5wZttskeDbbq5pgV PgOJ65EJyY9rDcTKQoK12XnO4XcGL+1gO6uvvnoTL/xNn+6pXnwt/I6u+J0kYyx96UOxia6U4bfx EELxgI3xA3bExqxmK0fdlH/44YePzBJH3FBn/ktXbFIZfrc138qD6yWq4ZPK8G9sZQW6Es8QSjph b/UWcomOvuL3YphzttxyyzF3eKinCTx2pw/ZoXYhM467nv4RA2VHfwyyHUucEbfpl7/YzsgGJW2O K0NsFn/EaXYkLsRW+dCh/qUPMYa+2LJEk+3QOV3Qj3ohV3F/fRs26lj8rq/9razaxpCgSGgQbNca 4/RTTZzYKHu2Fc+YxH/px5jEt5SrL8MntTm2bbIFtk7H9G7s009LuwIZhNA4oL7GAPbD3oIQ8l2+ JubzbX3OVtiXMY1t0SW/co02BCF0Dp/RbseRzUH8LiAXUFbkCOIC343+UA+2QF/q5/8xHunvWp/i r1jDbySSfhOD2Se/9DciFveWE7meLcofxGjjnX6Us2lH7ErRfnZWx9+lIYRihjxB3yDb9XGxUh+w XTqlg64J1y4oi+0qWx/b+VDnDJLwiD/ss7Yvti2GicHqpy/q8da4aBufOiHJ9O043whCGHoCtow0 1PXrRwgl/3RhK7K+0n71pGPES734OvIRudN4CKEJRHkPfahDHGMnxl91FYeMiaussspAj1qIgfyU /bKViBfxmEjkU8Ykx9iYNtZjvXPp0u9iRk2cYgyiS23VZ5H/jgUTkLHo4Vo+xa7iuBxXvcUYY7h7 0E/oi12biGSDdCI+BNGt/U4fsQNjBL9zLbtzjRxUf2p/nf8iiOF34gn/cT6/E1OQRbbHlsSruE75 8hh26xp1XG211Rbz6YnEx6EihByVMeoUBmImbzzKMrAymH4zlbF8b9COGQ6DG8OQ6OmwmAEzoDOi cGR/1zNIggsCWc82MDhBuX3fCJpxT+3k1IjJaLOqQQgFIHURDCTsQbaCqNoyFEHUufQneWeUDJJh 0o+ZawNVEEIOK+iYxYr7SQQcj8FEuznDZBNCsyUcN7ZBaUsQeQRI0KJPdaIjQdL5MfuuXjHY06ff 9IWZ1H51cg/EU1KgfRIvM03uK/CHHqI/6XZ5E0J9Fys0JgAMXAI+u5SURaCMLcoSp2j/aDBQ1YTB LLTEiD6DELLd0KF+UnZtn12EUFudJ5iH7umRvdcrTWNBsG8TdX1k9cSxKNsAL9Ea5AFus3/aaPCK ZELCG7Pn2maAk2xbrap1xS79jlQ4z/3pm28oi87riSeB3qBUz5xa1eab7RcK8DuDatvvJEajkegg hGwekVY/9xsPIaRjvhX1RFLZmFlW7ZRg1YSQfoIQGqiRokgezAhLomKbWxDC0KWJNu00qLIZMa9+ 9kSsF0ODqLAvMViyE3pQr7EmBtWHntWbLvWNOCne1PYrxrPzQXZnBNgZP5foKku92IA6sgk2UE/s IQB0EEla6JDv6qe63Pg/AsSm+/U9e9OernjCltRvtK1l2q2PakIoYZZMxqx29JU6uh9/ptOoJ8Ir wY74YDziV1HeZDz3FoSQ37ALsUYcEhclY+zAOCCpi3HAZBR7ZjuSXoTKeOeYc7QhCKGVXeVHsuh+ 2jTo8/hsVzypCYLEMGxX7I7nUuMZsIjXYod6iknx6Ef4XZSlbeyza4VN29iVsSv60Xn0zr7EhbiO H7hX1C3aOhFCWPuYe7QJofIk1eGj4sQgK/psCCFGPGJrpUS7zhkCbJKu6j4Sv+QDdfJer4ryyRgz XGfcUHZNCN2P/pzHv/h1HS+6CKF2mpTnD/V4x3+Nd2KifgobszuF7493y6i+Y6v1bjcEmU/wB/Uw rqhLe9wcDWKBcaodAyOmizHKdlyb4jGSAP2E79e6ku/pj+gj9jboTh4xzLX1ZH7dl4gsv4ttqrGL K9ojR6Yn9eEbdZ7J78SE2u/4GL9TTj02s13HkM1oWxBCfhd2zX7qtomRxs2aEIo9+sakQNic/Kr9 TorxYOgIoUCGbVMeh+fA9QzJWMoSsGLVruucIIRt0sgBzNTqeAEAAQKObMUxVuIMHAYYxyQuEuGa EDK+NoFwraTW4BvXghURMx2jDURBCDklcqwMg2X9rI6BW/lhrGbnJF4CN2PXpggqQVqDEFpmd9z5 US+DbXs2eTzOXQeI0QghB5XQOofDS3AjqXBMvbTdcfUSENQtyEgQwlixGRRmufSxFSiDAoIoEAlI 9ZJ/nQx3lbOsCKHrwqa0Vbvdy4qE9iJa0Vf+3zWAdkF72ae2myQw2CibjQQhlJDE+QY559QEu4sQ 8lW+IBmq+8rM76Av7WgTkfidzUgEbYeL38QD9xpkqxdiok79nnup+7idxEjStUtb2vrW50ijpEDQ 59dsk27rQS0SmfYKVz+/0/ejvfgjCCH/1W/qzWbGSwglYTHgWh1h+xKoQQgh/40+Zw/6Q4Kg3uKS fg+fiMTLJBVbMPlkcI42S1rFgNBPJNXjfTGXSR19E4mbekeMrIkKm0aMxjOxJc5IoGrfYI+SWTag 3WKdSQt+pU36NladQodso98zgsjZaMdHiyf0j3iMtooa7a63YSPjyFD4m2P6SuIa44okOY5rs5dj iE1BLoxhyAB7qcnHRBGEkK3Es/Im7YIQ0o8YFqtyIPESk8RI/c+P6vFOGxBCZVsF0DfsPWzQGEO3 Yz1PqizJnLG2a8xm4+wktviFjiIBVO/a7+L54noygY7bxD0QhLC9GqQ89zGGxm9yFf5Qk4mlJYT0 bCK9TQj1vbyEnm2THPQFLNpNX1aY4zc+NighpA+ERTyhWz5UE2kTqCav9DG/lMtFzhRxSc4R57M3 tlDnOV2EUDxgl5G7xHgXkwExbtSPD4RfjUfftvF3EULjTUwsRU5VT8yMhSCv/Z4hjFU99WeLtiW3 /aCLELJn14sp+rRri3o/xGShtlm1NBEe/RC7t/r5nZhoXBEDw6f1RewoiHhR+53JptgJgcDzf77I TthyFyEcbRW2ixDKT+QFdSwyOeS3ie6kGDpCaAtHEEBKM9jUyeBocL6tMbay9FslCkJYrwTF7wZt RIgjcryAxItTS5jjzVTxDENNnGKQbb9UJmZ3nSspr8uu94f3q28QQnVQbzMbNSEUEJCaSGiRKcYt cJs1ZsxmRqOO2hmEMGaJJbF1vQzu49mu24WoY5sQxuwtsDWrcHQriCLf6hiz7Npd1wthi74NQjjo toRAEEGDgX8FEAFIkKsHlKUhhHQnyNRtHQQSH4EvgpcZRwmOukqMtNfKaq0T9joWWXecbxkI2JDr +JWkwcAahNB2s7iGTuqBDfimoF2THoFVvQyodb1g0Nd1x1ZFCVubEEqi6m2x+ptPDEIIrXoY0PsR gOhjEzPtSSTJScw8tn2D30msYhcDu6Qv96rJsoHbIFOv3riP9vi97Xf6YjS/qwkh/1W+hEh54yGE dQKMuEhoxCJ1Q2xiFa8fIYy41EUIDewRi9gGHzNQmsk3UHueo0ufzlee9oz3LbYSYNfFirR6WwGf TEJY+4aBHTnSr/SpXfxJbJE4tCfh6NDY1C8R0H9jvVRmNEIoho22QtiPECK1oxHC+gVgbbLC1jwv 5zy2IHmtV7vYqnNh0LGkJoS2BJq8Uyb91YTQOBHXsFvjsngseRMv6/HOynsQwtgaa9K07Xfzx3j+ kU74gZyk61yEkO+EDvgAMlgTwtrvJKbhd7VdjbVC2F7ZCUJYEysxaHkRQn1rl4G8S94x6IQOv4qt t/FbexI50EUIo+9N5NOryYkgAXIECTpdijuRr0UZQdLqLaJWcpRR547GWn5ZE8LIqdq5SYx3YmAd iyebEOqDeK/BRAih50BHWyGMSfEghDXJCZ/qIoT0ql78Qx3llW1bGQ339GK+CVZxVT2UE+XKAfr5 nZxJH5mIaPt0+B2br/1OLq69Jg3iMRljiLZrW32vIISj7SrpRwjF5XgePHa5yRnCjv0rPrKRQVbV h44QSqAFCE6pcwRYSd2g15utElDqNnCaUHYQwq5lcAO+gNYe1CCSAg8hR0ciYW1CKCjHtoS6fEGL IdSzgcodywhqQlj/XhNCyaznQKJs+jJLLfHiBAZIKxKxJTO2RsQLSsyu1PqKbVHxt1lw26M4Zftl CaNBghxL9eE0ZmYieMULceKZKqu2Bgh11AfIiESpHgTqt28GIawD5iAw2NIX/amLZXx9qz/re0Ui 1++tsVbs2gN6fa2kxbXjmQ0S3NiJZMjfSKC/BVoBS5Btv/V0kDclCu7x0pjQXzzrVxNCgZBdgP6g l7r+gq4+jeenwkYlWWaoa3tmQ2MlWbW+JMye/2n3t6TVgB9lGWSQjkHeHKy+EpT6cxrh03Ufx0RE fS3foJ96wqH2DYmweBV2LH60CaEVSklG+0UMyuajo/ldF9qEMJ6J1cbJIIT+jk/axDNX9D8eQiie xPOfBnl1M4lmYJTgtD9tUttvEMLxvsVW8qQN8YiBettpImbV9jRRQihWWG2IfuIn+l+b+axZ8bB9 8beLEI72lkz1bo89NYIQdk0wsXFtb9tYDe2uiUaMVZKhGL/0lT41+TQWIXR9tIVNik3tyTnlSQzZ a4wBY6EmhLVfhP7oWL0lgJG4sysJN58yuRDjXdhBbLF2rdjJ79o7QQbZ/RI7gMTEup/Cfu3cqXew OIe+xFl/D0IIESsxpOubdUEI27ar7vy13uWAnOrbetJMfzkvtj4P0h81ghC2CUL9wj5+bwXEhNJY 5ekb/mncDf3y2X6EsL2yUucPdMBu5QxiYJAwdY38QtvbhFCf+Jve2Hr70xbs2vgbEwyhb+OPyZB6 vIvcJHZChM2bfBADJ0oIa5+aDELITsXY9oRq/ZZRf49FCK0Gt3fZRb+wfbYuZg6S/9R9yS70RfS3 3/Rd2+/C/63Iyj/qGBN9Gn7XjxAG2Ys2swuxpYsQjjZmBCGsV5ydr171mGTlUZ4TZfMpBJjN9/sE StvXh4oQCnoURkECo+Xj8axUcT4DgE6VeEgerYxEZ8a20jbBis6RAEq2ODXDsVqDWOlwwYKD2Bsu +ZWct7dWWl4XDBBT9w8j9eIBg4XZQglDfBdqrJm0QQih+glQ8RA60iVJVGeGx7kMgmaG4kUOkVBq s/M5n2sRkHh7Wk28JvJSGc9gKVeCqb2cmm6izertXu5L1xKWIFDubSAVuDy0i4AgKLYOhGNPlBCy J4NQbC2Kl2wE2Ve+gGv2UCLBltRRfeu+loDRu3bp93bSI1DZpsIW2OEgyXq8VAZBoTN9w37j+T9J mr6U4LEjfS7YjTWxoE10K6iybeRF3SQkNSFk0/RhpjZezFCXE7PxBnIDRazmW42hC4Me3ZkJQyTG 86FWtmCQlszRfXxXjR7Vix5tD1Yvs9GDxAX+zv7UTbCmM88CtF8q00UIBXD9z+8lWPpfYhoJnsGO X/Bz7WXrfLL9pjt1d666x/Oy/fyuvWW2y3ZrQug3kyZsZrIIoRjBxsQccYC+x0MI47ledqCebE5f GsDZr0FS2Y4jOHQTg7uyJkII6UW/upe+ipcv1at6IAZOhBCKAbbCsnmJIJIfk2ySMbFEDNCX6t+1 TX80QsguJbNeisCe7nl3hZReHBMf2SGfcg8xNOyE/7IjY5W4IFbGMfYmjphoYatsUEIYz8jqQ2OS vpCYKMe96bNNCOOTCPoZYaFv+nA/MZB+6ln0eHShJkmD+GsXIaz1J0mnKzHcefzIxLF7S2KtCLJf x8TG+qUy4XfslR6do+5j+V3AOC5HUJ4+YMcmZCM28k1lK1dSqS2xdXgQQmgCic7EGHZQJ+39CCFo C5s0Rro3GzRJ0d4pJU7TXbxhcqwdStEu5Utsg0Qh1lbNYgVW/GNDfEH9B3mMw7VIBbtBhNUttnVG G+ONyFb34hlc9zb5bfUOGaJH95Yb8H+2a+LDThZ9zX/EGdcHyQhCKGYa98VE8SJygID7xAuZ2Hq8 XZienW+SJMY7Y4hYgcjFc6sRA8fzUhmTFdopztANHflbXu7Y0hJCBMd2V/7DxiJOjUUI+Sbdg5Uv cUO9EFY6VwdxVzyIt4bb8TNInfRhvOk1VjDrSWBjL78zliufboxTjolF+pme5Q3qxyfjBYWjEUI7 SvSjGCCvN77JUf09CCG0Wux+dMSejGV0wufFG3mKuCsu0w8frb9HGdvd9fMgq+pD+ZZRswAGKwPK RLYt6gzBWIILBtlI5HWSzu73VjGdzyhcJ7DrUAOkIMJYJUacxGCpgxllvS1OB0vQBAOI+7hesOdE rhesBZCxXm4QA3N7/zKnMVjHTAjCIXApW/3r112rk3tpk2OCazw47ByDDocJfXG6+tXlgiJ9as8g A0hdd4kuQqNcDks3kcgaXN2Lnh2XYNTPerEDA7VEIMgiJ4+kSp+qU/tVv2NBuwxunFffCQr6tZ4l kpxHHwbqrZzhnAKQgcjxetUMJF0CYlw/CDkyIMWWKG0W7OtkKt6WGH0lQZSIDjILx7bZMxthKwKT lV+Dp3ZJupQtEDuHTbRfVkN3ZrKUo03xhkjX6xvlRl/ru/F8581AGs/gSjKiX+mNHtmJevHf8axU 8zEJFp9TNz5Yr+pL7CW7XQkhkm8bS8QDNhj9zFb5pmN0IUlgN7VP6xcr5XTqHAlEzISKs22/a7/y uo2IX+G/fkM62SZbGETfCJPtUfXr6tlbrB7xA2WFT7qX89m7Ad9g7Fp9pM/4D9uJ18+zqdCZvqzf 5Ek3doCEz7uPa6LNbL3+KPl4oN70H30lkWq/6ETf2aI+nokK50ouxUCkSfnxkq7wSe33OxuL5wvr uMTGRnszrsQuJi/pLJ7bUXY8A1dD7AqdKZMO4zztjvvwwfa14VvIguRFfOVX6sz+XAvKqRNk9zCW arf68ikTQ9qtDElPbbvyjtgyOWh/xofp2984Uw8rgzFZaPyLevOteKFEbc+OubdJHP0V4x2/i/yA ndBH/ZmP0RDPHPH7GMfrZ0uN8frQMbpRz+gLE5u135n8qP0O4hNR+kJf1R+6Zof9xhHxTPxln+6t fTGe1RA32ady3GOst5wDQiXute1IHKDPKI8+3V89Bn3BEPvWN3Gt8Ucyr16xGty+r3rLQ8Q9sSLa bByut+fpC7YUx9STXvRHTaS0zTn+3ybQyrECLw66d/iDWIdU1+MdfYi/+jeIYLygxPXtnRH9YMKm 3WZwPQJizIgcXT34qTFmkLLDxpwfW6mjTeyQLmLrebxELcinfExsatfL+KCv2Krj4VdixaCfnUD8 IxfUF/yinmBXPr+L/tTn9cql62uf5p+hI34nT6n9zvgUeQ+CGLmBnNr4wKcjnhjf+vkdMtylE5Mb rrfTiz3HGM/Wa9+QIzrOPgf5rmN+h3CCiI+HT+QD3wyn37UM07GJPhQa13O2iWzbGA0MTdldq0XR pn4EW10cV8Zk1yva3FWv2O/vvv10Gu1a2mcaVyREf/XbyhSv8R+vHY7WFwH3nEjZwGfGKn+iCDuY iH3GVpSJ+G5ste7SyVh+NUi9lpXfLQ3CBiZap4i/XXawNH0xFqI/JjO+BiGUqLPvrmQ3bGS0NxxP VQTBG68Nx1a89yo2j3bvsfwyjk/UxiOO9nt+fLTYvaywLP1qEBuaaL4VMXAiY4Zr+Vy/vo5+Gs0+ lybWxb276r60MXRFBD1PNA7WuWA/nUV/dvlW3HsiOh/rvkuDemxY2vKTECYSiUQi8R4hCGH7WZpE IpFIJJYXkhAmEolEIvEewcyuxwVsj12R6p1IJBKJ9w+SECYSiUQikUgkEonEkCIJYSKRSCQSiUQi kUgMKZIQJhKJRCKRSCQSicSQIglhIpFIJBKJRCKRSAwpkhCOE17rGt9RqtHvXN+ygfYx31zx7aSp +spg3++B5aXP+rf4FtSyvvdkwbdg2t+t8/0X366Bth61z7cnHeMLg35LJ/TF38bzvcbJgtcu+2ZO v9ed++5OtLn+TmVi+aDLl6YifKMuvkU1CEaLB17I8sADD4zre5TLAu7P5utvvr0fILZ52c1U9mWv ifetW/pf3p9iWBqI44N8p68L8gffAZwq/dKVE73f478Plk/ke6aTjcgzx/Pt04lCfGN3K8I40w9d fudvuRh05ev6OXKb+MbwoKAv+eB73e5BkIRwnPBBdR8LreFjll0fspZA+2CoD9e2j/nItI9ytr8v w3B8NHg8A5uB0MdqfagzvodzzjnnlG9+85tNWeMNzPFxah/rXpa6VC8f9fQh1AgwPlT+ox/9qPlY 7bK892S2wYdDfUS21vNZZ53VfEB0vfXWaz4WXF8jidVmtrPGGmuUm266aeD76V8fJPbNsuXdVmRw 00037TvwCJZ08bnPfa5sttlmkz5oSIJ8PHd5DHzLE/z3sssuWyp9sT0fu/UB80HJkftddNFFi32g t4a47iPz45mwGKSePtJ7zDHHDBSX9LmPf4u7Xcf5zhe+8IWBCSb/ufTSS8vNN988aW2KPvz4xz/e kNPxXEfHPhzsI9b1xJH44SPayM5k1nO88DHmn//851M2ARRzfEh68803b+xqPBMNyxI+KO0D1f2O +26YvMHHzLtsYiy/O/3005t2v9cTIcA29t9//yXyIja8POxGHBE/6bzrOB3Jg8SSybynj4zzjfea +MrXfEj9+OOPn7S2iY8XXnjhEm2Tr8k/VtSJL37no/J//vOfF/v9j3/8Y9Mu+doBBxywhD7k8HT8 sY99rFx11VUD34/NiUv8earoYDQkIRwnjjvuuCYpPvroo8sJJ5zQwPejEJnagGK2/jvf+U4TONrl eM14VxJ45513llVXXXVcSZiB5yMf+UjZcMMNm9kNScT222/flHP44YcPHLCi3gLMTjvtVA4++OBl qkttR4q32267ET1I9jfYYIOG0C7Le08mkLM2qUP6zCDq/7Ye40O5ZrX12w033DDwvSS0kp+TTz55 pL+WVzv57Sc/+clmdbLr3urGbo844oimDyc7Gbj22mub+7/ftpybyDF5MJEPJwfE4PXXX7+JS4Pa hH4Uy/pNLkgIor8nq63q9vnPf34kLo1V19NOO61p14wZM5Yox79i38YbbzzwbgYJwRe/+MXGRier TRBxGyEcj1/ed9995dOf/nRZc801F5s4YhNix3hnoycbiCrCOlVXfP7whz+UT3ziE80svEnZ9+ID 9m1IqoyfJv36nWN8QOq6Yv8gfnfrrbcuN8I1FtiFCRsTUuL+1ltv3fQLUrE8bMY93POggw7qvJ+c YqWVVmpsZDLv+cMf/rCZMAl/X97+UedrcoLJimnK/MUvftEQoLZ96eOtttqqiUvvRZuXFvzOeCfu tn+Xw1tE2W+//Za4Tr4mxpvovvLKKwe+H9sz3sU3Zqe6vpIQjhMIoZm9fjMklp6RxD333LMJ+Fbu akJoq6DZAhDUw0AYpFkss8Irr7xyk/AL+IxvLCOSFBkUJU5mPpRrJmPdddcdSbx0tJkNKwj77rtv s9JSzy6aWZVMGsTMliCUNZGxdciKoXZZDWsPVo6r7xVXXDFwYjsIIeSIZv7U271PPPHExci3JICD 0zHdsa1aX2aQrYIgbGZ+BLqxHFodzIS1Z+fp67zzziu33HJLcw96jr5E7trlIEcSqn7EGnm3QjgR QqgtZpfphK7YT5xjVkoirS/pRDI9SOKgTewz+tm1t91224g+gxBOnz690eNvfvObJQIrmKnsIoT0 YRJEX5pZ1S+D2Aq9C6jqI3H+3e9+19jaX//615G66Su/sSfJtNXMQXUKiML555/ftFsZ11xzzUjZ fOeCCy5o2sqnnaON6uUcWyCjL6z819uIHNMXP/vZz8ree+/dJE7u5ZhVJXVm/xtttFFTtr/1QVxv u17td10EQR347pZbbjlyrd/EBSQj6hUrgdoj6RTLPvrRjzZJjfuyY21Sf3FEH4sj4pnjdBKxig+x QX6nfu3ta+qpf7VZX9Of+wYhZDuSxoiTXYm8GCvRc4/YMRGz134zcPP9T33qUyOEkD3ZXcD2nWMS Icq++uqry0knnVQ22WSTJmHXJveOWK4MOlBn/XXuuecupu/oazFIvdmhJMGxIITaqV7KEHvG8rsg hCaG2EDUZTyEUL/wSbalzRLjWA2hN/HBGB1tcD7b8H/9bKyJPmIv7m0yy/niF7B3babvevcKe3Gd 9vIbsbGum3GC/bMPZbuPeg6SGLFDcdjsPJ3WCb2Ypv++9a1vNXqLvhxEX+qsXPagXPXWVxGL2Df/ EKfok37qLV/syThnTNEWbaJzY5FYfsoppzSJo5UB9RK7YrzUbvYZ40Ydp7TX+f38DuhAf7pW/Kvt y//Fa/piv/q29httUj9+p136sr5e7hL9LEeIcW4sfQbEYKssbSLMZ/iSdtA3vRo7BynT/fW1+Kpc K5H6KmKJWEBH8h/JvP9rNztwjpguNiKECJPj06ZNa/o6yo4YKZ7pj7rN9MNXIv+I3VtBCPmoXMox udYgWwNdq+/4Bb/Rl2Kxe8ycOXMkjvFpfekc/2/31aGHHtr0o5zErpyaEPLfGJPUa9AJs/ArE5Rs OOw3xnmE0O/qr176s/5+qnpfd911jU+xQXWrc+XwPfkSv1J/8TTOkYdql3rrt0FWddkX226vlvNT 948t73KP8LuunRzO159dhBD0DT1PhBAau40X2iV21DYmn6XjyLkmc+JivBhKQqgDBF9OM94ZRY5r qwZyJRiBIBz75r/2ta81A5TOl7gLRDUhZAwc/zOf+UyzLTMGIQOGa2yPWmWVVZpAwDgE6LHqKGAx VNuwJDqCprLN5AQhFLTUSxDjyBLrmFGToO6www5NosQZot5BZCSZEjMDnOBpVcHfkWQAh0RuxjOr PQghlGwod9ddd20CngEnVuPoTDKr7XSlDQbSOikRwCRbn/3sZ8uOO+7YtJ+OR6uXYEU/7W1lbGaL LbZoArk+oVP9tNZaazW6ag+ey5IQrr766k076A/xF1Rj5dE9BW2JXehkkG0O6ut8kOQrf+21124S e8f5LbugmwMPPLDxAwSxvee+ixCqtwAfNiiJojcJ+iD10r/6b7XVVit77LFH87drY5bSb+uss06T yJjMULaBaRCdKt8kj7byHXozkRN2HCtpEnekS5/bpohgsRX2q0/0M504NxIDv/EbvibRsyUltktK kPi8cvkekqRdkSzxO5M8rleOcsWX2u9AHBNPJHqhc8mpOvIbfek6SZPBU8xhw2yHbxj83TeIhHMQ SNu+2Jl44bjkStkGRv4vxhi8+SS9mBRyXELtvtoqKaBT94iVZQOkfhSrlGECTBLd7hf3s/pXT7aw Yz6jvySI6m+rpoRHHNN37IB90TdbFbNdKxHUZv2sn8Q6Oo+kg060Q30dY9vsKvwa6RNrnKM/rJy5 Po7xDW1WB+eoO9I/mu0FIdxtt90aGwh/GJQQqpvxhD7plW1qXyTlxjq+GFuWDPjig+TD/+nKSoC+ Vob+iLHE+c7VrrAR+uS/kVDzN/dTB49H6JuIFzE2uV4bxRU68289qdcFCa/4I7a5r1Vd/RE2ZpJQ H9kVI745R18M8kweO4w4Rl/h++wj+lJfaJt+pj/+ExOE4oVtZ+qjXeyMDxizJO76zu9iQthYTMbQ mSSbT7m+Hhv4HVLSz+8AGVJnY7s61kmw+itTnzkn+ioIjPqE39Etv0PUok3swOSKeKE/2f5Y/dSO o2JhmxDSi/sak9RL7NCvg2w7VO94LEcuo97aRSfGFLZGx+LAtttu2+hLTI3ntuQr6qO/I+GWnOtL 9eVj9KXNJhfYQYz7dCsWKHvnnXduyjL+x+QX3WqXNoffiXeDtElf8Ff31A98R7xgO46b3GAD/DHu g0CJ79qlHs5XJ/8G4VW+PMVYYUygM7GIrQyy06PLryByFPmUeymTf+hTRFxfqDdiIwbKy8RaZSgv xqXwPXUWg9m4fjPWieHqGTs41F87x3pEhL8aJ9uxFrmUbxgzom7u51yxvl3OsiSEcnr+RC9iZNyf f/E7Y7OxlC758HtFCoeOEOoAAZzzMkqrYeO5XnLBoGsI/gKMmQh/x/IwQ5WsdG0Z5WQ1IQwwas4/ nmdHDLoIjwSYsQsGEoDYmqWTBWFJrqTJPTmrZMAx9bRSEAO5WTL6icFKcsVRY+XDcUYraEUdzBgJ 1JNNCBEdg1SsqnDamPXURgNLkB33bW/R1V8CrkQrSPtYs04CrqDk3gYFNiK4SNTpoU3gBLSu7SrL khAKyNqhL7VXEI4ZUf2qTPWhE4Siywa7+qN+Bkfb6cFAqix+K7AZmBxn7/oqtq/GdV2EUOLLLg0o fg+CyAcHnZQxEaDc9vZBg4zVGTOiyubj7F2SPcgMtySO3yL48ZvBKeyMTQYZjARJ39K9fjcoBkmT kArubMa9XRurt+rG7/lqXS+/efayHQv4nQGx9jv+XfsdSN4N4DVRpNN6IGUH/KhOLtWVLfWLgXza /doDMruokwt2ELsT/C2pED/EwWin8+khCCG7ill8BEGiV+tE/SUMdYz0G0JhUI6y6CgIodhJ9/Xz vGI9W4iYFFtGndNuL3+q466YISmL/pPYs+FYFdSfofMghOzbvaOvxtr6HoRQAgRsQ3vHQwglo+ql LDqS3IaNub4mhPE4gHjg/2KFVQ9jh9gm6ZHoSVycL35ph3Yqz3hCx2IXAiO2moWnC+VJXpGn8B22 QC+S9CAvfGislVNjmmQytjOzH7E+4ke0nZ7cbzwrWZGUSt7VWb/zbZMYMUFaEyF14V/R7xHX1YcO wifiMQ9lsufRyAE7Q3S6xoZ+flcjVrprQqhftcP4pR1snG/o0/C7sKmYBOYfEafEh4jt4Svj2ZLa jxCyD6TKv/4Wx8XrQfNAvh31oDf34Pe1D/it/ax+Hef0d6y+BZRZxzF+jkCwcX8j8fIc5DjuryxE NgghvxOf+Z1cph3b+/msvjCpalLQGGgS2yScyUz30o8IhD7gS2zJOM4uXaM9kfcgKPII8UPZxgPt iMkTvusegz7HNppf8T+TrbGDxngivpiU1Dd8VjyKCSNjAFuOd2yE75lgqsdS19IffcdkKv3zsbHq HaTLooS+Qbb8Rj/qVk9Yh98tb0IYutSXJgHYa+xK4qOxiEEXJnuQw/die+nQEULOzrkYo5lng/Fo D3+3gWDo0HAACLIisRToYjbQMclHVzLO4boI4USfITSbYlbBKoo2CfqSvdjGwDGsIMQ1MVDrO4E6 kqowSgYbg5U2GPgNGCDYIK31S2fC2MfzHNQghJDD0Ic6mD317GVc729tMFhH3RBbyXXdXzWZHQTa ICmSfLJVya0gKzAhf/W2EO1+LwhhzCT6DZHXP4KtGU3/NwCEThD1rucBuvrDLLOgKIjTKwJYE0IB up7t5gtm3WpS10UIJTnays7Yp3oJ/uOxdXauXu34gSBqc5DZWDVpJ0z9gEgqtx8xZZPKaj9rp330 ijTU+pb86HPH1dXAHn5DB5KGWjcx+LZ9ZxC/E3voEVmpy1SWwVi5+lH7Inmv26Uu432GkE71sQRF PztHm4MQ8hNEtmviJZIhbY7n0iQQZkbr+rNDtlf3tXiqPRKp+M0Kh8kQsUts0EZ/h85i63zEtojJ Xc/bGPDVhX3StcRH39Kxekqg69nuGuK2e0d9JUCSh7Fe/lQTQnElZo/153gIobgf9sPX1F89ByGE Yq2ERL8YD/Rt7KIQv6yGBcFDHMVY/9K9+Isghk/TdTxj5PwYZ8b7NkY7Q9hmncSri3qHT0fb6/Fj EERSaryOchAMExDKQQzEUf1Hd9rEjtqEsN8zgrEKO9ozhO0xtt32sZ4hNFlZx7dYdaKP0IV4aeyy VS78Lgh16M4YFxMH/ILNi+fOi23Dg2I0QkiPsdJvAsl9Bt02aostXxDHlGPMqMl2jMFdu3Tq/m6v utCDGCf2xHjnvNhVZbu5vrcDrMvvEEJ+F+MGvw2/G8tn9YX68jt2ZuWXPwVRoJ96pZ1N8DGTXiYD 6kWD2AUghrDdWFFkHxEH/d3vGct+MaXLr9gFvwyCRzd0Z+yVF9CfmBLxgE7Fi1i9i76oJyZBm+Vt jiHZUW99PdazkfTP3+RstoErw44TBNvKfZ1f+L/fljchjEkGkG/I141JJoONc3UOq++7uMHywNAR QqtkQQAZu5nQrjd99QOC0W+gNhBLCiLwLQ0hHO8KIQPTDwJLPQAwxAgY9cqCbRFBCCUEnDgG7Xqw Uo7ZKoFPQOUUYGZ0ad/2SP8Sdw7aJoQx++V3dbXawxnVOR6m57h+QwiiXlCvlOgvCcp434pltUhS i0QLUIKVIKkv6yC5NITQwCgB7Pd2tC4EIawDjOBKLwJMrBa0dTLIMwT6N7bjsUPXaVustPFbhC5m 3Pxmpg9hrO1YQinA1XqSFBgY+EhdLxg0mQtCyMa7fCbsUb0k1IMSQrNxAnG/egRx4lftvrAtE1Hg D3WbkCH3dp0YgODUhKNNCNsvlQm/k5yN5ndImKSv/SynSQYTARInxwzW2livWClH3OBPXe3uRwjj nvxPrJPU6JcgP+JMvSpXI+JSrOJF8sG/6pUfxI9e6/6L1YF6wGZXQQglUOol0a/7gr3WKwxdhNBx 9+M7ynSdpDsSL8fNLPdLquqXyvh7IoTQ37Gljk+NhxDGi1/8xsdiQmZQQqgefL2LEFo5C9tEBF0j KTLhYLyz3aut70iSxTY6rJ9xHgQSYHGuJpLqNJmEMBK72HIu3qunvkAArZbpTxMN/CDiTsR1caOr /MkghPxpIoTQSmzYpxigrxCq8Lt463joLl6KEnWSRJsAQITEn/auA7lEvFCkX5u6CGHkJ/4OQjjI RKhr9BWbNf6Ihey0zqnUhU/3W1WJ/o7V3IDYRT8IFP91nC9G3sM+6KFr23cQwnpLOZIxyMvUakLo niYi2BY/rAlhTTz4dBBC/llPpNaE0LV0xf7oufbLQT99EBOq4t1oL5XxN0LIN/STOEDP2lHfVxvD /6Mv2jlPrNypu/hRXzvIVld5Hv9l/3Qrtxa36jfYh42ORQiV0XWPIITjectoEELPA8dvdkbZVWQF 14JIbEOudRaPVwx6n8nC0BFCnW1liYEyNkFvPJ84CELYRTA4hAHSc4L+5pACYT9CaBBvE0LXKKN+ UHcs1IQwfqsJIWeT6EgyYtukdggq2hEvpYmteLHFIAYrjsVZ62006l2vqCiDXiTisWI6FuZXL8OI GWg6FIRr0h4DmCCE0HNyAyGyhqC0Z/7qJDII4Xjf1icoSWQk0cihwRfJaW+vC0JoIG07sHrQeb/t mmZg1X8825aDECIQdEY/+tgAwqYlMepZf0ogtnONVbbgXs+k6m92UxNCOolVWjpFeCT3ddBFGKwY 1TNzSL2BQ7LTr6/GAvukr/azgbFVO8pmf2yxverUD/TP5+oXPNBXPUmhnfXqdPS9gceAXk/g6KNI ngzUsXVSW53fJoQSGTbangTid5Kzfn7nX9fxuXb/etlF7BTwt8GH7mpCqFy+128GVlzs8i8+hQgH MTXTj+wH+UHI+HD9DG7os45L/QghOxOb2s/wai9SoF/D19Q9djewX35Qb/1t2xifQTYlPF1+Fcmg v5E/9h4rhOK1LV31ymeUPVmEkN/ynUGfxw798dEuQqi96hGxXN3jRT2DEkI2Es/m8RVjhfMlsfWq aNSnfumMxI9eBh0TAsZQNhVjMz0b44zd9cTB0hBCNug6fmenQ0xASNJqoiSuaHObEPab6IuJZhNr /eoQ5Mm40eV3/Ge054gQQrG5JoTGaG2IOIL8KUe9w+8iFrUJIYR/6j8TWO1nz/Uzu7IK1kXw+71U ZmkIoZhvBSVelmWCQOxpE0L90e/zKHIcfmz1qP6dbRqTYtLBeFy/D4BPt59zFxdiO2T9llHHJosQ 0r8x3PG4l/gg1tc7IWKM54smwpwTjyUgyHWOGmPSWPoO2H6rz9qfPxuNEIot9Mw2ax3Ey9dq32v3 vbrRp7Lre7bzzNHihbgpVsWjU/HoRtvv2Gj7sYvoF3G0X97APpC38XxCIgihcT/uIScUa+nQC3b4 Uz3xNWi+tiwwdISQQwmc8SIHzjMeR5EMcRTJggEFJMSCHGUqV2dzWsFCMIvgxRjibXASIDDY2I8d AZaRRDIgkDLuQZ636CKEsZLk/5JOAzNnZYSSKEE0iJYgawuY+nGI+qUyBigBSkJk1krCz6nqGSyr CeN9hjAcWRDRD+6tXEmKflI3qwHIc7whSuCLZ8UkX5IboNN481W94jtRQsghBRSQ3Bnc628GSnCs SADSKIFyf4NM9Jd/DSauM0Mk4NezdAK2BNPAbqDW/rECQSSu+ofdGYT0pe0S9KWu9CHp1Sfq57uO g7y8xeyjPhS8JAJm6ww8MejFS2WsyPiWG8JiS137jZ4IgnIEV+0ymLNv5cQD3a43GeBh+vH4ruBJ Z3wjVsLjeTN6jJcMSITaxKAfkH8zduKBPtCP6h5ELFbS2oQQDGwS1/h2pnvyH3aifxFJ/aGu7Jgt qGft0/TBBySHro+BXnn0W/udmBF+Jza4rv1sDEh+9AFd8DH+HbO3cU58C41O462FNfmUjElw3F+9 YuuU+OG+fEt5/Eu7gvwoQ0ISq236xGBPj+24FLPRNSE0627CoyvuWc2Mz+kY7CWtQQjZGAItVqkX PZkAVF79HGc8q8I2ra7TAxsyLrADyTDfkgwGIXQt2xAP6Ezf8GnjgGNLQwjFjyCE9KF+/G48L5Xp Rwgdt7tDHxtrrBjHmBQvlRmLEKoLO4pVO6TDtaGzsB8+re4mKCIBnCghZCv0J5nid+qjL9rkU9sn SgjFCPapD/2fPYi/xj3jjPbGM1B8fFBCGOMt3xV32Vjs0NAuY5XtgeINe+UffDnyEPfRL22/U654 43pJpXop2/UxGcgXjH9+pz9+FRMa+q4mhHQXsV3+oi/FGLGfv4rzsU0WYsKw3Z+udx1fi5VF29rl NfpFWydKCBEm/Y7s8Wcvd/F3e5LVNnJ+Lzax//ZbYdkoO2Hr2qef6Vk9bA/2G12x9VhpZOP0wOf5 sfsbr+LTMm1C6N6DEsKYfOoihK6nS/Hb2CDOqD+/0hb687cYqU7G+vqlMnZssAN+6jgbN+Exnp1I JhPEdHGWDcYYMxoh1C66ZDfs3rgjjopjMXHRjxCCCUB+ZyzVH/ShTwb5ZqwxnO6Nt2zTwgE7jUWO tt/JE/kNvdf5f+Rr2s1X6kltPsb+2HLY2VireO4bLwFEQqN89qqfTfroS7FX/FQneVf9aMfyxFC+ ZdRMBqeJh/DHc62BjyPW0IExg8VBBHkJkeAhGYnZCAZgcG5fzzjr2RyJh6TDMQPxWHWUkBsg6q1k DNXgHx90lqQxcvUSgMzi1QQSqRQ0HEcIHI+EWr2VE8c9NyVA1y8g4bSc0MzSeLa7CiwGMoFQvdyj npVEagQU9wWDWB3sbfuQDMVxequ/CSio0O9EPvAsKIfjar/7hI71t2DV7st2fwkoynBMMKkDTMxC 0rfjdDdWXxvInC+J0VY682KAOnEU5AxU9CHQxHabsdorkAqCJgZiqzOiGS/K0Gb2q43KdV68pa5d jqQ69BP9IUmmU/ajfAmIgWfQ/ohnHCWHyo2+cQyJQlCjzSY+Bk1ClWHgiNW+eB4l+sLqCF3UyVF9 LbLHRl1LJ+wkfEMyq5/Ui+4M2u1tx/RioEAk6cyzK1G2xK72O/2hbANsfBKga1DiIxIbbQFkVL1q 33BdfMKhyz4NDgaoiEXxtk4+YOCPOulTZdQ7LUwuiD/hl1YjIjHlj/w6zvW8B9uPl7RIhOKNj22I 3doV92YDEufwbzOtVpG02Tl0R4e1jiQPbDh8NnxaksK2XGfSQTLj+khm+J6BOvzO/SNGWoHVf7G9 if7jsxej2Z768tX6eSG+yp7oZBAbljR6xjlsSuJXE0TjQ9TZeCR2x9ur2Y+xkN71EV3w6XjLaHwq IsY0SXC8rAJcZ6yImGEMqD8rIWbQy3g/oO567eDT4VfG3rata3sdBwZBJKX8XQxiK/RRb2tjU+5r XBL/6C22HLI1ehltZwcbc07YWFzLL9hUe9yI1crwO2S07Xf6K8aKNsQotqLf1FlfsIF6ez+/Cx/1 N7+L2G71QxvZtHazf4SunqAU/9yr3Z/qzefadUISle2edX7CfrSt65NFXfEVGdNP2hT2234rsXYi TOKnONveHsqWxLfIt+L9D8oJ2xUjTWjUz7fFZxDiHPFBLqVdSC/yHTYpZvHlQQihOiAU/Cc+N0FP xvV4k6hxPeKYc+K5PXYQRDBe+ibXjFjEfpALeog4xZ4HeQNvPX7YgRVjeOx6ExvqfEpsqfMi8Zkt hw2qY7zQz3F5Su0Pbcj9HA+fN4bU8aYf1Ee94m3rfBOxjPGsn98h23V/qb9+bY8NAf0U4+UgcYfO 1Uu/Rt5jvIxxwvUmg8TVyD3YWD/9LGvkdwiXkVJj1nkq1YujqFckZv3q3c/IHed49RaAyaqXMpXd pTO/qVe8WbB9PLb9KGM8icGKDoN1v/4KnfXr69FAz2NdF/0x3jrXNjjZ/qE8A0A/OxkLYUcTaZe+ 6OcbcWyi7e3yOxNPdiOMRji0Z6L9NGg/jhYL4pxB+yNWVgya7a1KXfbXj2TEfePZv/G0Sx+N1VfR n2PVcSphrNg+FkazYfqOl6tN5rhQ33e8hHI01M8x9YuREQveq61bS4Ow/YnEm9HG4fe6TUtjv/0w Vk5UnzOReLK0dQu/6rpv+HS/ekcsm0zfGU9/TdSO+JxxfEWKr4NAP/Sb4Ktzj8mOoeNBEsJEIpFY wRCE/70cPJYFDJrvRQKTGB6Mtm0tkUgkhhVJCBOJRCKRSAwFTDjYflo/8pBIJBLDjiSEiUQikUgk EolEIjGkSEKYSCQSiUQikUgkEkOKJISJRCKRSCQSiUQiMaRIQphIJBKJRCKRSCQSQ4okhOOE18L6 9opvvfn2Wb/XEHsDoA+ITsXXVvu2iu9DxQdWl9d9fZNlMnXCeLWh36t8Hff9GX3l36nyGmP1pf9+ 30asbYyvvB8+paENvq1Tf0NyGOD7Xr41NxlleRX3aPaeSCQSiUQiMREkIRwnfMTXh1k33XTT5iO8 /V6R7qOjPqw5a9ascZUvYfax7mVBXpA/H0/91Kc+NfIR9+VJNnw0lO7qj6iDOtAXgj2e8nxk+wtf +ELnB8PBB0132GGH8vnPf75pb/sjo0sL9fah1vF+RNTHwNkPUth1HGn2UdnPfe5z5bOf/exyfw2/ evnY+mQSD33uI7fx8dz3Aj6YTfddx+jYx2xffPHFSbsff/NxXB9SnoyJF/bOju+9995Jq2MikUgk EolEEsJxIj6aecwxx5Svfe1rfZN1JOXUU08tzz///LjKd92qq67a3GOy6+7bZYgGkmTlAkFaniuE vvsk6W6vEPou1MYbb1zOOOOMcZV3/fXXl0022WTEntptiQ+Vn3POOWWrrbZq7jOZ7dGONddcs1xy ySXj1sN6663XrFqqc7+PIp955pnNx8eXNyFk28hbm7gvDZSFzOiLrr5a1nA/5Prwww/vvLeJG98m E8sm8578bbfddhvp54m0O65hN5/5zGcau5msOiYSiUQikUgkIZwgrHZ1EUIrfFaNfOfIalz7uG8f HX300WWvvfYqBx54YLn11lubhM82QSuDv/3tb8vKK69cTj755HLWWWeVK6+8cqAkEol48MEHyyGH HFJ++tOfliOOOKLZohnHL7/88nLSSSc1K1OSVGWr4yBlO+e+++5r6rvnnnuWQw89dLHVvKuuumqk Hf6+7bbbytVXXz3yN+Kpbe5n5QlRC+O79tpry3HHHdcQqx//+Mcj9Qq9WQ1BFK2y/OIXv2h0Gqun CCHCpF2/+c1vyi9/+ctmBbfdpgsvvLCTECJ01113XVPuz372s6bsQVaI6BoJRPhXW2215nr1vuCC C5p+dI6+0M/0pU9vvPHGkdXYIITIkTrvvffejX7b93G8ixD6m35/9atfNX3tvvU5yP4JJ5zQ2Nh+ ++3X9P0gK8FIEV1bOd5ss83KH/7wh6Zd9Uom+61tbNAV8CCEBx98cEM4XX/eeectNjlgRdc96Yyt zZw5c6Cyw+aOPPLIptzf/e53zXbbsF02ph0f+9jHyne+853m/3/+85+bOrGl888/vyGKCKG6OX7F FVc0OqNXdqbN6nXAAQc0NlnbmHL4qf5wTqzwByF0T/dz7Pe///1i22ZNWFg1ZQP77LNPc9/Qiftf c801zTFt0jdJCBOJRCKRSEw2khBOEP0Ioe1+EsNtttmmSeYluXFMgrfllluW9ddfv0ksv/e975Vv fetbTScgK66zpRIhlDxKBJGKIFCjAaGQxG+wwQZNYrnOOuuUbbfddoQIIC+77757WXvttZs6RAI6 CCFEAqyubL755k1ivN122zXXxnHtkOjHvUI3kdhKoH/yk580WzcRs1h50u5TTjmlOabN6qtev/71 r8uzzz7b1I0etAnhU39Ju7a4l0T9E5/4RFljjTXKrrvuWrbeeuuy1lprLbH1tB8hRNwR0Z133rn8 8Ic/LB/5yEeafhlLH0gf4oBwqY8+jKTdPbTr+9//ftliiy0aYvOVr3ylWfW1ZdH1CCEiCa7THwgi Ilffpx8hpF91VW/68X9EKmzMvdkYIqpd+i6I6mhAohBv9f7kJz/ZtE/9bOd13Gq3PkSs9t9//8bG EJRBngsMQkhfX/7yl5t6+b8VY8cRS30U9VZn/TnIx6PZiW3Q9Ezf7Ei/2h7Kd9iYdqyyyipN2/yf ryHt2qQtdKk+tng6jlDrR/fXRmWzfVuUP/7xjy9GOF2vf62qIuD6kt8HIVSutuyxxx6NnSOfcS1b X3311ZvJENez37ATkxXK5UtW9V3LHpIQJhKJRCKRmEwkIZwg+hHCgFUHiWS9BU1y+tGPfrS5Nn6z NbAmZZI9RKHfC0f6ASFQ9owZM5q/rUhJRD13FOd4JkxSftRRR42rbNtYJbnx7FJsaYzjCMhohDBw 7LHHNkS5vRXRSqatn0EOalhdrHWMLCBgVvKCEB522GGNDr28g86dU5fRRQjVH7FBDNTT9eqHkDz5 5JMD6UV/SuCtwNW/K0sZ0a/+/epXv9oQAjpCCJEABMNxhAq5QibqlbwuQkgfCDISUtdbeVab1AnB NJEQ1/h9PFsVlWdior1aOn369MbGggyxMTr0+1hlBiGMchFUhFO/qJv6soGwX0TMavZBBx00UJ1r Mq1vEbg2uW/rpX09f2mveNJxbQ/qjSwHqTP54O/a/tlz+DVCqB1sU98g3NFmq9nrrrtus8IbuwSs GPMdZZkoMflickQ9ENUkhIlEIpFIJCYbSQgniLEIoe1wbUIoybPKJqm2tc220Paq0ESeIZRMIjYS zSBhOhZZQf6CDEhSJeW2+o2nrZJkz/iBFQ1b6iZCCG2X6yKESI5Et+sZQuTDyqAVIPe3GhakAiGU jNs+GW2WUFuxrMvoIoQSeQQAEXNv5StL3wyacGsfHbefIYxtilZ1EExlu5cEPwih+0a9AXHYaaed FnuZUBchtDXXKq8VsLreykc6lG/Lp3Z4ds123PG+2Eg/tZ8h1Kbjjz++WWGrbSxWjccinEEIkc3a R+jPRIUVXitgG2644UhfW/nlJ4PU2Somu9hoo42aMviQFdu6/lY3+z1DiIB2PUOorSYqvv71rzd9 qWznRTn6WT90bW8NQgixyk+HCKJ+stXZ5I/+02aw+qg85NBqJEIcfsWOkxAmEolEIpGYbCQhnCCQ HknieAgh2KZmBUuSKGlHnOqVmCCE41khDELoraaRPEpkEYfJIISxmmF1w8pLbHELYvCDH/xgscR1 IoRQMoxo1r9bOUNMbLez4mpFyqrS9ttv35SBECIAfg9jVkdErC6nixBKqiX2tga6HkkD/x/0TZNB uj0XWf+OXFiN0seXXnpps0prVROxDUJoZS3qDd5Y6/yxCKFr9avn1Op600WcZ9uy/lAe4oi0DbL1 MmA7LB3XeghCqP9qG0OyxkMITYLEb54VjdVwkwr6WjuiTeAzC2PVF+HVTqTSaq0ytNmKa11/v3nO cDyEEGlHBJF5/1cnf5sAUY5n/hC8rpfRBCHU73FPOtSndIgc60v2WbeZryGQdGuVczRCqM9te23v NEgkEolEIpEYFEkIJwgvibBa0u/NlQih56Da3yCT6MX2MM/CWRGoP5sgmbdS4t/x1Me2yfo5tEce eaQpJ55HgokSQgkpqLcEFAGwqhGfcbCVTcJspUf7rOr0I4Tu3yZcElq6bNfLVj2fXqAnf7v/Lrvs MrJ6JfHX5iCSttYh6epTlyNpRzjr1/U7FxlBXuttmto3aGKtrbZv1qteYLUIafCik9A70lATQqQ6 2sUJHUdm67qoNz3XNqZf/YYgx29hT20bU5b+7yKto8FKLeLRXr1GQts2pi5W0AYlhDGRAOzIc6/q aTXPttr6RUjaMcjnV2wzNYkSzzIiiFbX2oRQ+W0d1/VjD+3YhIRpY/ixtiOfCLcy3Rupqz+nod7R B/VbRh2rCaE+4f/1xIDzos2ea/RMY2z5td21TQgRbDboHsv7bbSJRCKRSCTeH0hCOEFY9ZEYIj8S 5XiRidl929cknpK90047rVx00UXNSyYku5JSybxk3yoMwlOvLkhMbZXzZkKk0oslBnlDpBdoSEw9 p+Z+ts9JZOutpxMlhJ4RQ8SU602cyvDijiAhElW6OP3005vE3upXEEKJLF3RieTWVkDtV04k8Iik bY5W+6waORdJdFxi7yUkVn68yEbSXhNCzxAqk65sF0UM2uTHqiwiI8FGHtlfvAzE74iZ/kBQrC4O mlgrQzv1IRuwdVRb9LUk3dtHvYE1XlgShFC9tcMzc66JdsXzcwGrY9rnurAxRAOpsuXUy1LoxWqV PlE2G3M/Exba5Fp2OJ5vPNoGaTKBfhCdINL0qF1WhLWLjSGb9YuT+iEIoRe7WLWON8t6CYzjSLLt mMrUJjbi/9o9Vtm+A6nf6Vub2RJ91oQQ4gVFfBLRq1+GQ6/sj09qs9VA9qsuyqJjbxJle9oQq6IC qPvpJ7blfL7Cpx13rB8hZCsmMNg4u+dnbIHenYtomzgwkWJ7KTtvE0LH2JZ4kYQwkUgkEonERJCE cCkUJ2FDIGz3k4j63bNFkrwajt91110NIUOKvCgiPgxvS2Gb8EkMHXOtpHaQt4xKXhE219jWh3gi p/U5EkZbSyXD42mrzw54K6Qtqepta1692mal0PNvcUzyHPXWZvds68TKSXzQXbJsldR2UMcQmlgV kWBLdrWJHq2ESpjp3zVWJr2BFGmErrey+ptuPFsooQ+SYZVQf0V/IAMS70EIeEC/IuHqjajRhbrZ 7hnlapc6W43UJgm9LZK2A9Ipct21yqYcfcXGlB82xt98+iP6Q5vU2/X0bYU07m2rKtI5nja5r7q6 1n29jTVsjG3WNhZ1GgthB7ZLR3+aTInvdMZqJr3EhAMCN8hH2F2rvqEP+jYh035JkVV3kwb0Vdtf wEqd+2sfOwv7ReKibM/QKr9eobV6qH/jHIQZAdYf+tgW3OhbunR99Aeirr+izWwwdMpfTbCEbbNz Oqm3/6pHXd/x+HUikUgkEokEJCFczohtlxLN8STpgyLKbm/XXFrEioayuxJP91tWbWKk7t2v7Ngy OdEVktHatTT9rE6jPdvld/eGiZYf23T72dggWy6Xt42N1p9Bwsazdbfux0E+rzERXUfZY/XlRHwg fKtLJ0HyY7V9stuWSCQSiUQikYQwkUgkEolEIpFIJIYUSQgTiUQikUgkEolEYkiRhDCRSCQSiUQi kUgkhhTvCSH0Io58AUIikUgkEolEIpFIvLfwHgMvkVyuhNC3vLwpL0lhIpFIJBKJRCKRSCx/xCe0 cDmf41quhPDtt99uPh7tletewZ9IJBKJRCKRSCQSieUL37322TT8bLkSwiCFmKlVwkQikUgkEolE IpFILF+88cYb5R//+MeY3G2ZEMKUlJSUlJSUlJSUlJSUqS9JCFNSUlJSUlJSUlJSUoZUkhCmpKSk pKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVl SCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJS UlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKk koQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkp KSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJ QpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSU lJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQh TElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpK SkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCm pKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUl JSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNS UlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKS kjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkp KSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJ GVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSU lJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQM qSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpK 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 7HTmYvhwDw0hPP7qsmsPixPCv42cd8ntj438vem+f32XFD5VVtrhmCXL/N4p5eo7F60IvfOPf5S/ v/XOotWi3v8POfuGhkS2r1mW6CKEd/UIWReu+Oia5f5TTlLZMuvii8rFvb/j2G3rfaxM+9xmZV4v 136zl29e+e3tyy09UthVzoweGbz+B98rb73xxqK2v/VW+cfbbzf/f3P+vHL9N7/Wtw7LA3/b6ydN XZ468rDO452E8LQ1lsBLp3ykwSunrlEW3PK7Xjvf+Od20dn39s5Zszn+8Anrl3fe/OexhY9fUR48 YuXywOErd5YL82/ar/STNxfMKU/8cZu+104GXrtxvzL/xUfKqxf0v88yI4Tz5s1bKiBEPr0Q3+Tz TN3SlgldhHCiZR1xxBGLEcBNN920bL755kusFE5GXROJRCKRSCSGHSOE8PunL4GGEB53VY8QXrVY 0n3xLQ+XD3zz2AbTb324TLvtbyPXbLrPhQ0p/NNVdy9R3s9Pu7G5/saHni3r7nlO89t3j7mqzH/j zWZ76np7LfrtQzueWv7t60eWf/3qoT0c1qwq/sf3Tisf+u7J5V+/dkTv+CkjZX6o9/u/ff2I5gU4 zd/O+erhzbX/1px7amfboJMQ9ghbF2Yec9RiOnh8+rRy8Tprllt7xO/iz25a5j/7zD8Jz+sLyh1f 266znDu++uUeAXqzvPP3v5cnD9x/0e+9lbdnlP/OO2XhnFfKXZtu3Px+08fXKdPX/kiZttZHmn/9 7fc7ewT08t69b+79fUXv3zh+68c/OnIf51z10UXH4Ore//0Wx2/r1fuSd8u+dO01yh3vHnt0jx8v IoSHH9pZ/05CeOrqS+DF03t1OGzNctWvPtzDh8oth69f3njs8h4DfqfMvegrzTlevvL6jKPKwofO Ln//20XltUevKLcfvUl57Oojy+PXHl2eO3G1zrLn3fibpo6v33dqee2Sb/WwQ4OFj1ywiFQ+d8fI uU8dt2q595D/Lncf/F/l4SNXKi+f8s9y/nb0yuWeQ/6r3NM79uDhK5XZJ//z2Eu9/z90xErNsXt7 5zx74qoj5b1w09GofHnsrG3L08ev2lnHZUYIX3vttQlj1qxZ5cILL1wMtl8uTZmBLkI40bKef/75 5tlGxO/kk0/u+cU7DY477rgRQrjWWmtNSl0TiUQikUgkhh1BCD/0vVMXw3/0sIgQXll2PWHxFcL7 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 m4/e/+t2h5STLrqpHHzODUvUBboI4W090teFG9davVzYI1jxbF4/aUjhaiuXW/uU83yPxJFHzj2n TF9tpabcG9Zcrfx19VXK3MdnNWRt5g937pGTt8qcBx8sN/ZW5a7vHb/lx4u2cv7toAPKPVtvOUII o9yZP9plEZE7+MAyu1cHctMPvt+UfV0P9x16cHPNE4cc2Dxv+My115TLVl+53NS7/2W9ez90xunl 0WOOWqycrvp3EsITP9SJNx46exHBvfLgcuUv/q1c9fP/Ua7Z+3+W6375P8vtv/2X5pxnf//B8sR1 R5e7T9++XN07fvXe/6M8Mm3f8vxd55U503boLPe16/b+JyGsfn/1/M83RG3hE1eXeVfv1pzz5BX7 lSeO+kB5/tgPlkeOW7e8cN/F5eXpO5aX7/9rmTV97/Lku8devOmI5vzX7z25ed7QFtEHDvuv5phz nrj812X2jDPKyyevUubffnhzn2f+tEV5rlf/rjouM0Log+1Lgy5CuLRlQhchnIxyH3jggXLZZZc1 uPfeeye9rolEIpFIJBLDjhFC+O5nJEbwrWPfJYTTy849WH1b4pwKH3z3/J2Oml526ZHIhhC2zvnZ yYs+cO+lMvuceFH5zv5nlL1+/5fy5POvNL/vfep15aq7H2/udfQ515TvHXhWmX7T/c2xZ2a/Wj77 szOacn552nUjBOyQ824dKf+ae55ofjvjklvLt/c7vZw+fdH2wzOuur+zzl2E8NYeQerC9GZlcEky +E7HS2Ueu/iv5XLP/XWUc9fmm5W35r66iChNn1au7RG96/f6SXnhrjub3+b0iNqMjddvSNvrs2eX 6/bcvdz0y73L6y8u2jL6t7+cX+7b/msjhDDKfahHIhcRuQMaQkmJC154vnf9T8qNvev/3ltYsV11 xqc2KHNuvL45d+bZfypX7fKDMvPPf2z+fuGcsxcrp6v+nYTwhA90wmclvNDllUeuXaSr3grcm/Nf bp79mzPzkuac+3//id7vf1/0kpuF88tbb7zWPAto1c71XeXOu+7n7xLCfRc/dtJKPb0tLPOfun3R /9+Y03zj8OGL9yn3ntUjgY8sspt5V+3WbDd9561/HnvurvMXEcIZR5YFtx7Q/N9W0Xv/+L3y8EW/ bOr49pxHm/ssuOPw5vhTN59SnrngO511XGaEcHbPKCaKadOmle22224xQrj++uuXffbZp7zYM7Cl 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 IpFIDCn+/+6eCsZPWwq7AAAAAElFTkSuQmCC --001a114a9ebe668843055377ad3b Content-Type: image/png; name="expression.png" Content-Disposition: inline; filename="expression.png" Content-Transfer-Encoding: base64 Content-ID: <15cc18ce64fb15721d31> X-Attachment-Id: 15cc18ce64fb15721d31 iVBORw0KGgoAAAANSUhEUgAAA4QAAAI2CAYAAAAIO0bxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA AXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAARboSURBVHgB7L13cFTH3ud9q7a2amu3dvep2t2/ tmrrqd23tt73PjfjnON1ztc5X+ecAzY2GCdsg8FgDBhsjME22OQcRBRJiCABkgCBQCJIQgQhEBl+ 7/m01MPRMCONhhGaYb7fqk9JMyf1OadPn/72r7vndxs2bDAhhBBCCCGEENnH7zIpsUIIIYQQQggh UocMoRBCCCGEEEJkKTKEQgghhBBCCJGlnGQI//DmRCGEEEIIIYQQZxgyhEIIIYQQQgiRpcgQCiGE EEIIIUSWIkMohBBCCCGEEFnIH9+cIEMohBBCCCGEENnIn94cL0MohBBCCCGEEOnAtV1GW6feP1nf gYPt+++/Twq2ZR/sq/njTbA/p8IQ/r7jNPs/fTbb7wdutz98W2V/Glhlfx1YaR0GbbOzvzvBOQFn Bd/9eeA2+3/7VwXbVLht0/VmCCGEEEIIIcTp4onPRyRtAuPx2GcjmjnmBPtLKgzh/4ep67/V3sw9 bB8tPmg9l+y1wct22tiV1TZ9daXNLIZtllO0zcas2Grd52yzu0ZW2Z/7b7Z/kyEUQgghhBBCZDlE 8zBwgwcPttmzZ9uaNWuS/g1BtmUf7It9xo8UTrC/vjkuNYbwj/23Wee8Y/bp0mP2weLD1mnBQXtz br29mLPXnpiyx+4ft8tuG7XDrvl5u13wQ7X9IYgm/j+KEAohhBBCCCGEdeo9zJk3jFyyRjAa9sU+ 2Xfs46bQEP4pMIQf5h2xL5cdsk/zDljnBfvtzTn77IUZdfbY5Fq7d+xOu/W3wBD+st0u+bHa/jyo 2nUZ/f9kCIUQQgghhBBZjh8zeCqRwViRQj+mMPZxU2gI/zpgi/1SsNMK1pXbynUbrXDdJltZWm6F jgorXL85+BuwYYstWReYx1lV9odvNssQCiGEEEIIIbIeP+YvVWbQ4/cb+7gpNITnDCi3Bas32cay DbZxY1nwt8xKS9fZpo0brXzTJisLvt+6ZYtVbttm1VVVlr++2s79drP9v2/LEAohhBBCCCGym8w3 hN+W2+KiMisL1i0LzODatWtt6tSptn79erd9Tk6O+7vFmcKttqp8u503sPWG8N0RBbZi0y6rqTto W3ftt1FLKuzm7nPa7MZc2nWGXfbhDDu705SU7/sfvebZtJXb4vLFxOK42/6WV+7Weea7vGaXP/7t 4pSnWwghhBBCCJFaMt4Qnvtthc1fWWrTAhM4ceLECBsaDeKUKVOcQZw+fbrNmzvXCjZss/MGtc4Q Tli+xWLpwOGjdm+f+W1yY6prD7hjfDJudcr33WVkoTWnucXVLadr7OqklgshhBBCCCHSh5YMIYG2 jz/+2Dp16mSlpaXuO4Jwr7/+uvXs2TM9DGFe8SZbX7rOJRAYxFhRUWGbN292J1BeXu7+J0JYVLGj VYbwnSAy6FUQRAg7/VpgfaevtcNHj7nvSivr3HpE8y4Lonr8T3SMKBz//+ntSUE0bYm98EO+Xdjl 5GP+c8Aie3FIvj3cb2Hku7PenWLVe04Yq3NCUcLrP59tL/241O77OnkjStp6T11jX01ZY6s217rj 7D901H2GN35abld8lOPSTNqv/Dgnsm3Y8GGGXxyy1EUzYy3333FtOMcnB+W1aWYWQgghhBBCtI6W DCHLOnTo4HjllVespKTEnnrqqch3v/76a/sbwiUl5W68IMYPQ0g30U3BZ2DKU76vqqqymu3VVrxl Z2AItyRsCEu27nEGp7b+sJ373tTI93Sr3LP/sFUFBuiOnvPs2PHjdvTYcSss390QZSuptud/WGJ7 DxyJGMpDR47ZB6NWuu0f6b/QbR/Wrn2H7N7A6B0MIo9hlVbVuWPPKqpq8n1hxe4mZiwZJq3Y6va1 u/6Q+4yBpctncDoR8f/oJRVuuTd8rB8+r9eGLWuy3BvCIfM2uOviRZfbO7/KbZfMLoQQQgghhGhK S4YwLy/Prr322ogBvOqqqyL/33zzzbZixYp2NoQDK2xRUZnlzJjhuof6LqI+Qog5hFmzZtnCBfNt VXmNnf9d4oZw594G4zN+2Za469wQRO2OhRzUvoNHbOG6mkgUMW/9Dptd3GDmMEe395xr23bvbzB1 gYH05hKNXbrZvp1V6vaB5q/dbu+PLAyOv9l9xmAOzS2zusb1pxZuO6UMMGHZliaGsNOvDd1JjwXp 7J+zzqYF+/fpvubTmRHDx/liEn0kk/Se9/7UJoaQaGp43U01+9znymCdv70z+bRmdCGEEEIIIcTJ JDKGcNGiRU1MoTeDy5Yta98uo5g6JohZsWGbVQRRQG8CiQxu377dampq3GQyRAf5vHPHDlu/fW/C hvAvHSdZfaMxGzKvLO56YUM4Jn+z+44umd4oYfiAbpnomxnrnFn6Kljn6+lr7bPxRYHxPOiW+fF7 YWP11yAdftvpQfSue7CvnNWV7jPjGOliGk7PiEWbLH/Djgj9AmMXL+3RhvCmL+a49Py8YKO9/1uh TVyxJRIlvKf3/Ei6hi/c5Nan+6k/d7qyhtNdWL7L/V+8ZY9L8w9BtNDb5me/X9IuGV4IIYQQQghx gkQMIWMGH3vssSaG8MUXX4yMKWx3Q1hQVmVVldussrLSmcJ58+a5/6urq23hwoXu/127dtme2lor C6JUrYkQVjZG8jA14e+J2tUHJo3IHuP/vCl68JsFbrmP6MXSj0GEj4iZDyqGu2fOiWEIr/9sVpMI ZFhE7i7qMr1J2lZv3t1knTnNTBITbQgxeHRd9Qqn8e7euZF0fTRmlVv/7MCM+kjoq0OXNUm3v3ax 5LuYCiGEEEIIIdqPlgwhZjA8ZjAMYwrjmcLTGyFcv9Xmz5trs2fNtFkBs2fNcuMFd9RsdzOL5gbL FiyYb8vyl1hp1Z7AEG5N2BAOD6JtzhAFdAsiZ3x36YczbO22Ovc9Ywtv+3KuM2zeNLFO72kNEULG zNFF9M6v5rnJaIjedR29MmLwBs5a7yZtWVmxO64hJEJ4oHFcYZ9pa92+nhu8xEYsLnfmMjrNTATz 9i8rHB2Hr7Abv5gd9/yiDeH4xs/lO+rd5DgcJ5Yh9BHCOwMDebzxXF4ZGjtCOK+k2qUZhs7f6K4B Jrc9M74QQgghhBCiZUPYr1+/Jt1EGaIX7j46bNiw9jWEZ3+72Wat2R6Ywi22vDQgMIeFQcRwzdZd Abttdfl2W11RY0Wbd7jv8ir22jkDE48QXvXJTGf6vPg/POkLBs13GQ0bQkyin0yF2UknLt/ilsN7 vxZGDCHf/zivLPLZG8LtjWPzGMPI+MMpBQ1j+YhK/hSYqqpG48VYxVPJANGG0H+mC2uPScW2rrIu piEkvYx33L6noasrYxujxxBifP26/HSHN73RE/QIIYQQQggh2oeWDOGqVavs7rvvtltuuSUyZtCP KXzkkUesuLi4/Qzh7ztOs/+nz2br8F2VnfN9pZ0dcE40g6sc5zZy1vfVbhu2TfQi3dpjbmS2US9m 1vx+TkP6fJdOTFN4Bk1+zL7+0NEm2/RvHM83tXGyFm+2ahsnicE8spyJY3x3TWYZvfiD6W5ymrA2 VO91ZvRUMoA3gNuDSCafmeXUT2iD6BLrzepTg/Iik+EQ+fQiesnPSrD91l0Nyz9unGX0lyCSGJ5l FDP49Hf6+QkhhBBCCCHSgUTGEK5bt851HQ1/x0/98RN/7TqG8HRzS/c5bpwc3Sgv6JKYoeRnHOh6 iQmK/h3CO3vluslVwr/zF4bfH7wlMKMXdD6x3TXdZrrjM8FLW53n+e9Ps6eC9D7af1Gz6/E7hLHO K5pLAjPLeT727aI2S7MQQgghhBCi9SRiCJPhjDSEQgghhBBCCHEmIUMohBBCCCGEEFlK34GDnXGj C2iqzCD7Yp/sO/ZxZQiFEEIIIYQQot3p1HuYM2+zZ89OmSFkX+yTfcc+rgyhEEIIIYQQQrQ713YZ 7czb4MGDnZE7lUgh27IP9sU+2Xfs48oQCiGEEEIIIURa8MTnwyNj/lLFo91GNHNMGUIhhBBCCCGE SBuI5tHF048pTAa2ZR/xI4MeGUIhhBBCCCGEyFJkCIUQQgghhBAiS5EhFEIIIYQQQogsRYZQCCGE EEIIIbKUVhjCESNGCCGEEEIIIYQ4Qxg+fLj98ssvMoRCCCGEEEIIkW20yhBWVFQIIYQQQgghhDhD KC8vj/vj9jKEQgghhBBCCHEGI0MohBBCCCGEEFmKDKEQQgghhBBCZCkyhEKIjKOqqsr2799vR48e tTNVnBvnyLlm0r0RQgghRGYhQyiEyCh2795t2SbOOZPukRBCCCEyBxlCIUTGQLTs+PHjlm3inBUp FEIIIURbIEMohMgY6uvrLVvFuWfSvRJCCCFEZiBDKITIGM7kMYMtiXPPpHslhBBCiMxAhlAIkTFk uzLpXgkhhBAiM5AhFEJkDNmuTLpXQgghhMgMZAiFEBlDtiuT7pUQQgghMgMZQiFExpDtyqR7JYQQ QojMQIZQCJExZLsy6V4JIYQQIjNIuSEcv6DYXv5+od3dc4499PVc+3DEEltRkj5mct2GTfbhr/k2 d/m6lO43t6DU3v0pz+77ao490GeuvfdznuWtWp/QtqTlw1+X2PqyTW1yzu3FqNyiSF745zfz7PPR S23N+rY9x01Bht64qTypbaflrbGPgrxRXt7yumUbkzvGqVAQPEc8T8Nmrmxx3cmLS6zXuOWnPY2t heex64h8d26JrN+S9u3bZ++8804TOnbsaNOmTbNkFZ7ZdOvWrda5c2c7cuRIi8vaQole128mrXB5 xdM14Isxy2zV2rJ2v+fx4NmF9kzD1KAMeH3IIrun1xx7+Ot59slv+VayfuNpTQP37ocZKyPXJNny LBmK1m20j4Nzfjh4d98bXIM3gmuRk7+myTqkp1+Qxif759pdX862Z76db99NK2xSbnIOX41P//JH CCFEAyk1hFRAO7wzxW7oNtOZLl4m57431S7pMs0WrSxNixNeEpg00vjL7FUp2+eoeUV21rtT7IoP Z9j7v+RZp8AYXhSc83nBuc9curbF7QdMKXBpKik9vRWPtgRjxTnd+sUs9/+L3y1wn2/6bGabVrCo wF310YyETF00VIQuDu5bS5XS0sC4nx3c72+D+9ZW5xGLL0Yvc9eQvNVS4wHXgWt/OtOXDP55nLci sQaalrRjxw773e9+ZxdeeKE98MADjj//+c/uu/fff99aK7+/1atXu88TJkyw//Jf/osdPHiw2WVt pUSv631fzbUL3p8WNMTk2qN959ldQaMM15kyikp/e9/3WLz6w0LXoNZexx8dNGBxjW75fJYz0L7M uqPH7NNqyjCiLwTH5v/+kwvs3E5TXcNJWx+XY9wYlM/nvz/V3h662Dr/ssTll7OCazB9SYMpXL9x k937VUNeerxfbqN5nOc+PxbkNV92kv8yofwRQgjRQMoMYW5QocMUPR20FoYr1AsLS13FxL/gPFRK qAyGIy1sR0W+LHj5Llm93lavO7k1m8o4kbe1UZEmbwCWFwdpbdwnlWb2szLUKs7nVBpC0nPJB9Pt 9u6zgujXiYpW4ZoyV3F/JKiMhdcnEpIfpCFcwWiNIfTXdmnRBneu4f3yXdgI+WMQFVgSdUwoDo7H 92tTHLWbEbQocz6vBRW8cHrGBdFjvv9s1NImaVxatP6kCFFLeYFly4LzBX9efIcRIr+VNX7nr5c/ jt9+dXBN8qPOnW1KG41Wc8dfu6HBEPYct6zJ+fl72xbRQ9JzzSc5LtpKBW3w9MKT1iH/cXzy/6cj EzeEsZ6TRPKPf97Id7FM9IrGZdHfsx/SSRmQv7ptDOHw4cObfP/ss8/af//v/90OHz7sPh8/ftxq a2tt9+7dTSJ6fI/4jmU1NTVuf4sXL3bfExE8dOiQ+7+5ZV6YQ9aLNonHjh1zf4lokmb/uSUlml+o kN/Wven9HzFntbvWmAz/XUljGVAcVfYkWp6G80lBScMz5bdd1fiMRecb/+xG9xx5dfBCZ8YSWdcf g+e1IEU9UF76fqFrTNoQen4HTm0omyctKol8x/JY1yx8jWK9u+IRfS6UHxyD7/sH7wae99bsL1nG NBpijLH/bmXje4zGXT5TvrKOj2B6vp6wwn3fZ8LySP6TIRRCiMwhZYaQqBiV5Fhdkqi89goqz/zP S+/pAfPdy8NHO4iwsQwDQWvslUGrpF9OS6XfDxESjuGX0QWR76n80jp5X2PL5Zzl69yL66x3Tqx7 y+czIxXbVBrCIcGLkf3RVTZ62a9zV1v3MQ2mYUFBqavs+PRgIqmgsV7YEEZX5Nc3RqPGzi92x+B/ Wvz9fujWQxTAf76+W9PzfOybE+te1nW6q3hTQcO4dwhdH+5fqjLVu8PyXCvzmqhIYHkAFYafZq6K XB+ug0/DzcE9ml9Q2mJe4P7+/eMT3xOBnrCw2G0TPifO9YHec+2tHxe5/RCxLQwqrXf1nN1kvQ+G L2nMX0tdfsTcxDu+v66eZwfOd6aHtPvvOM7QnJVWUVGRMsY3mmm6tP3jy9n2YJ+5Ta7rO8MWR47P tSfttwaGYPaytSdV4MiTrIPZbek5iZV/2AfdnOkJ4JddHizjHrBs8cpSl4f9MqIOvvv0mCAfh+85 96ctDOFPP/3U5PuhQ4faf/pP/8n2799vxcXF9n//7/9168H/+B//w6ZPn+7WO++882zIkCH2v/7X /4pEFj0fffSRzZo1y+1n6dKlcZdxDIxlly5d7N//+3/vlv+7f/fv7L333nPfk0a+f/DBByPb/5// 838SOr9E80usCvnqwIDTaEdXPiI9RHjCefmFQQtcWZVMefpE/xP7ohcA+/KfiTItKGx4rnPy1zZ5 dumayX5Ir/+ONNKLIN66pJ1ykHSeE0TP6LKYimeMZ5keAgsLT/RmIR09xy5zDXx8/j54l50fPN8+ TW8GZYs3dJgionl+2UNB5IzteXa5dmEDyflyTWOdC8tIizdfnocby/3wcIcuQdnFs5eKrraUx+w/ uqvnj0FZNj54tnlvcCy6/0dvSxlEoyjPOtdDhlAIITKLlBlCXn5EL/xnzACVQI+PZnUMKtUXdp5m IwMTSGWC7iZUTokW+Ap9jzENL2Aq4LxIaR3+adYqt4xuqSzzXRIxSrxM+f/2HrPcWIacxggV3VZp zcb88fnn4G+qDSHHpltsaTNd+HhZU0mi9ZlK88Kgwnx/UBGm4kPrdyKGkPR6U0AlOj+IdnGdnCkM Km5EW/15Dgz258/zli8aTAFdVy/pMt1d0wkLS9yy3sGLn1Z9zCCfEx3z2BJUBh4IGZZYEK3jvKh0 UgGbGLTAXx1cHyoU3pDFywuM8aHiNmf5Wlc54nphjGldZ8wiEUJa9Ink+YomFa1fAwOO+bvw/QYD yX6JCngTyLUnbzZ7/CAfTwyuH2lnzChGhu24l1PySpwZwqxhnpLpthqPl75baNd9muPSxn0jLYtX NVRcyfOk9WPye5DWbxujClwX0sA1fap/Q6XZV9xeCaIxNFK09JzEyj+kgX1eH6SHrmScMyb18g+n u8gGx+UYc4NrMyNYTiMFeZT8zb25M1iXe84+b25sJEm1IcTU7d271+rq6qyoqMj++Mc/2u9//3sX ibv55pvtoosussrKStu+fbtdfPHF9vjjj7vtzznnHLc94w5Xrlxpubm57vPYsWPdupMnT3amr76+ Pu4yDOGAAQPcsm+//db27NljAwcOdJ8HDRoUSWOHDh1cAVxWVmb/+q//am+//XaL59eaZxDThgn0 xs13gaTi33fiCpdHfg7KVZbTRbJDo2lJpjzlftOY4xvIaCDh/tOAgdHB3NAlEUNB+UVZQ9l9adA4 wDNIefBQ8Nxc3y3HbYORireuLxM5DumOHuOWLKPnN3T9Z790scVsjZy3OhLh9D0f3v85z5U1XENX 3gZRxGlLGpbxXLFseFDWkEbGb3pDWBJlCLsMz4t5Lt4QEl2l2+ZZje+5vOAzZvTDEfmN75UK905J VWMe5aV/HmkIe+2HRdYviCavbDTD5A3foBBr+0+CfEP6MLkyhEIIkVmkzBDyAiDy5z/7LiQeKtpE JKjIPx+0HtM9ZWzwAh6S01CBIIpIJTzczYlWZV9ZfG7gArsyePnR7ZDt+Mu+qKBSgeGl6ltxebEN mlroKkN0ZfVjG39pI0NIJbe5MSakn2MOCUVpqADxciVi1lpDuLjRuPnudqMau/iQBswOL2x/nj4K CXTbpaLhKy90ZyVNmFIqIqUpmtSGvPBk/+Zb7XsH+YPzD3d7/aGxMjm/YF2zeeGdYQ3RaCpsGEmu g48shk2dTwuVVW/OZgXmhog0DRCYRiZG8OtHG8J4x/f3pFdjxah7ozF/68fFrrsVEUNMVCquJZBW Ig9MVETlbG5jfqJRhOXPBmaXilzYgFIx9fnoyyDCwfbkL0wkFUyev0Sek1j5h/vDsmEzTzxDGPNv ggoyfxvMwxL3nALp5pi+Ah0eV+vzdKoNYTT/83/+T5s5c6Zbh+ge5RldQvn/b3/7mz3xxBMRQ/jU U0+dtL+8vDz3OWz6mlt244032kMPPdQkbffee6/ddNNNke18V1P09NNPR9KQKkMYLn895AvyCWO6 uX/kCcoDugSGy6DWlqe+h4SPeDGpiE/LTYE5xPz4CNSAwGSQL8iDpOf8xgY1xhD6PNvcukVBGjlG Kns1eCiPeF6IeF7wfkO0j67amFIak4j+j218BwHpfSRo1PxgRENDU7i7KWUrkbVEDGH4XLwh5P8B jY07fts3hzT0dqCMmrK4oWFvTgrLGtLPu5jjXBuct4vYvtMwXppr4xsSY21LecS5+IY4GUIhhMgc UmYIMQBXfzwjUhGnNZgXCDBmjIo2UUNeGHBOp6ZgjKiEPz/wxFjDJaHxRXRTOSvGdqwfbaI4DhV9 jsNL+h89ZreZIaQ7EfvDlEQvozJDNycMCOuETQKVsiuCiAotyM0ZwtIYhtBXDvy55DZWphv2OcMZ lehlwPX1FQ1e8OEurLzAfQXwVPF5IVaEjFZnTDzdfalcbQoZ6bzGCUa4Xs3lBQwSXbVoEOA7IhBc N9aLZQipePn9TFxUHETaGro60sBwbRDlimcI4x0/2hBSicKchruXUsFO1YyJX09cEbNyTwSFRoAG A57bZJtwPiKqybPzfRDt+XLs8sh2iTwnsfKPHwuKMYxO6/TGxobo55Rj+G6t4UlNlrTRGMJu3brZ tm3bHMz+6ccOomHDhrkumv/5P/9nu/LKK+1//+//3cQQ/vLLL6dsCM8++2zXZTSsnj172l//+tfI 2EPS5vXCCy+k3BDyDBKJ5T5xH1eEGl/oBnpH4/2+LIi8Xd/Y/TdWGZRIPvH3zz8b4YYE/wwydjFW 3gCiT2FD2K+ZdQvWbIiUial4voDnAYO8INRdlOeX7zjW60G5hSGNlSYiqYx/vKNHbAOUiCEMn0tz htA35tHDgR4K3MNU9URg3+Hxg0DDAcfw94iylghprO25PkRxuW4yhEIIkVmkzBD6lz1dO5seoMKZ IiravHR5YTAzmV9OizJmkIhZ2LBAuLJBV0C6BYb3TQss3YuiKzC08PKSZer9hmOURyopqTaEvjtV l1+WnHTepIluW6cSIfTRoOYM4bxmDOG8GBV6jBdmlfX5GQjXxfDdE2MyT5UvG02yHxvqobsnFQpa wxOJEMbLC78F0YMpjfeWc3mqcUwq+2/JENJ1l+6LfjwP1z5el9F4x482hOQzH6Wl0o3hZd2peSWn /oBWVES6xC5orNyDN4nkaSLudNELVwx5XsL5iHGnjBvl3P2YyUSek1j5Z07juMThoUo/XcAZk+Yj hOPmnxhTS0Sb9A5vnNTEz1gIbRUhjB5D6EU30v/4H/+jM4z+JyOee+65SFQQQxjeti0jhBjVtjSE zVXIabS5IXgW/PPH/eJ5xPwlU55GG8Jog8Mz6CctWRzqmk4jGV0uybthQxhr3VmN65bGOMapQu8V yoGOwxaftIw0ke+JetNFM9zQQ74nrcwujbEORwiJjHPtoscQbgzOlWO1xhD6bX2XbxqcaFAMR2JP FdJLI1v0jKZfNXZRJw1ETlnHNx76LvtEdCnb6dKbSP4TQgiRXqTMEPIi5EVF1zQqf1SM6Rr2hG9Z bqxo88JlzCAtr1TgiRrwsqElsrlKuB9D2G3kUjdGg24tvitLdAWmWxCR5Ji8qPNWlUYmOGA8WKoN ITzRODkD3YYwKFTYn2mctGXw9JXuvKmw+y6vtNYzdu7sGGMImbnyrEYzRev+/Y2TbqTSEPpxPn0b 7xP7dganceKfU4XxP4wHpCst94f7RfdMumByHO51eAxhbnC9ODcqW1ynlgwZE14wno7GACKzRB2p zBYHkSei0UQeaen20bOwIaT7F+aK/dGdi/2wbUGUmWzWEAaNGORzogLcb7qwUsEbM7/IVbA/bhzf mqjJaQ4/bin6Jy6oFJNWnq8fG7tdY7Q5fngMoV/fm23wk1Ik8pzEyj9Unv8eXEcmlaFBhEo9zz7j DRvy+iwHxo97zTgwolXkWyYAuq1xspucNhxDGM8Q0k2U5R9//LEb28dPRfzX//pf7frrr3fjC6MN IeszAcx3331nu3btamL6mlvmxwz279/frefHFP7www9pYQgZu804UJ49Jm/xUb9ZwT1JpjxNxBCS Z2kQpFGC9ckDvrGD9Yj6U25QVmBK4q27vg0MIWBm/DuGcbE82348Jd3Cpzc+i6ST8ouGKbqw0lVy bGPZ/GpQFkXeT43j7XgPsoxxlLzz3m0cs52IIWQSG9ZlrKfv0t93UkNjEGVQcQp/qoioI/u9Pzg+ ZStpxehxT3jWebYx5aSX55Z3FPfmosaeGqTHj0PnHChrOa8wviFPCCFEepHS3yGkKxhj/cLd2qgI MubER2GY5p/Wab8cc0irL9vzog3/PEV0ZYMXaniWUd8tj5c2M0dGtgteSuHZ6Xg5UfF34y2WN7yc x0R1jTkVeFHTXSY8Cx+VdYyxXwdzd3uPE7NbUtkZ2RhBwxD6sRdM8EAUy6/HRAu+NZ4Wej8DH9v5 MR3hLqOYTiohyxqXhbtAUaHn/mCUwrMAAhGkVP78BBUqP0uhhzEp40KzsXL+TL7il1Ph8zP8NZcX MDTXN95PVxEJKmV9G68118jPAsh63Hu65fr9eLPEcq6rvw5E2chHfjKYlvKibwRg/B73gUlVOoT2 66NwpwqRh1gztgL5n/zAT2hQKfXnRUs9eSg8BpI8yjMYHk/Z3HOS2xiZjpV/+J+KoR9jBGznu0TT IHJzqDsyZcC0vDWR+xPuWkt6UmkI+SmJ//Af/oONGzcu7jpMGOPHFjKZC5E7jB1GEEM4ZsyYyLrM Cnrbbbe5dT/88ENn+v7bf/tv7mckWlrWtWtXlxaWs38+8703kkxqEzaETz75pKXKEPI8hyf5iobJ Us4NzZb5XGBAyEvkmdaUp9H5hMYSGmTCXUZp1OrS+Dww8RINP35fdFv322J6MBWucScwOvHW9SZq VArLcKD89d1CO4SeJRpafFSQnjDhWUafHDA/ElHzY3X9MibxoazleQvP6owR5/pRRsQ6F+7dy42R NgyWn5XXm0auDcfx66QSjOyloVmAgR4+4ZlXMYs3ht5RcEXjM/1JY++f8EzYYShnU51mIYQQp05K DaEHw0JFIdZvkEXWCV5qVKRb+5ttvEDZrqUf6uUlTLcWP16JCnGsn8RIJVQoOG9a3TfEOS8mZmBm z5bGl4XT3lZwDWnNTtVkMrHwk6AQKYo11sXfp9VJ3Bs/g2JrfzSaPETrt79H7CMVP/xMRa1wzYbI byCebtx5hX43LhFO9Tnh/pKfYy1jPyyLvu98Jt8lk79TJaJ4RAj97w5iJBP9LcDWiLGL7Ds8hvFU 1Nrr1RzkE54Dn/fJv/F+CzXV5Sn7WpngmOXWrJsKODcmqcIExXqWeL55zmJF59w1DZbFuo5FjWX/ qY75o/GExp9YP3WUCkgfDWAcp7nfP+Q9TKOb/x1IhiH0nZi6LqxCCCFOH21iCIUQoi3IdmXSvRKp hfGD9Apg1tZbGrvWZ1L6hRBCpC8yhEKIjCHblUn3SqQWDCG/S/jW0MXuN0QzKe1CCCHSGxlCIUTG kO3KpHslhBBCiMxAhlAIkTFkuzLpXgkhhBAiM5AhFEJkDNmuTLpXQgghhMgMZAiFEBlDtiuT7pUQ QgghMgMZQiFExpDtyqR7JYQQQojMQIZQCJExZLsy6V4JIYQQIjNolSGUJEmSJEmSJEmSzhwdP37c Dh48KEMoSZIkSZIkSZKUbZIhlCRJkiRJkiRJynLJEEqSJEmSJEmSJGWpZAglSZIkSZIkSZKyVDKE kiRJkiRJkiRJWSoZQkmSJEmSJEmSpCyVDKEkSZIkSZIkSVKWSoZQkiRJkiRJkiQpSyVDKEmSJEmS JEmSlKWSIZQkSZIkSZIkScpSyRBKkiRJkiRJkiRlqWQIJUmSJEmSJEmSslQyhJIkSZIkSZIkSVkq GUJJkiRJkiRJkqQslQyhJEmSJEmSJElSlkqGUEo75ebmWs+ePa1bt25CCCGEEEKIFqDuPGPGDEtG MoRSWiknJ8cmTpxoBw4cMEmSJEmSJEmSWlZtba1NmjTJBVZaKxlCKa1E6wYZWpIkSZIkSZKkxEVA pVevXtZayRBKaSVC3pIkSZIkSZIktV7J1KVlCKW0kgyhJEmSJEmSJCUnGUIp4yVDKEmSJEmSJEnJ SYZQynjJEEqSJEmSJElScpIhlDJeMoSSJEmSJEmSlJxkCKWMlwyhJEmSJEmSJCUnGUIp4yVDKEmS JEmSJEnJKS0N4e9+97uT+Nd//Vfr3LmznarGjBljP/zwg+3evdt97tKli9s/f9HGjRvd8tmzZ0e2 4disw7JUi33GOt8wUvNKNBP7+xjmX/7lX+yRRx6J5AdJkiRJkiRJyialtSH8y1/+YpdddpnDf+eN W7KKNncYRAwBfxFmkOV85/XSSy+1mWkgHaQJMCdhA+yRmldrDCE/vMk192D8ue4vv/yySZIkSZIk SVK2Ka0NYTgi541a2CBh0PgeMHTh9VesWBGJ8vHX402XX9+bAv8/xoDlt956q/ueY/h9hQ1h+Njh aGL42KzD31jrxBLrREcFw+kLHzt8Tn4dfx3i7bu55Zms1hhCrkG0uOfN5auwErmv0dc6eh2//+g8 K0mSJEmSJEmnWxljCL1Z8hX3wYMHN+n25//6yrePBNLN1G8X3V2QaGO4yyhRwOh1fAQvnJ6ePXue tF44ougjmpjK8Dps15xiGUIiWnxmn17etBJBDf8NRxd9Wvnb3PIzQadqCLl3/vr6+81n7l90lJbr 9/DDD0eWk+fC95X85ruhhqPb8ZafafdCkiRJkiRJSp3y8vLs66+/TpjVq1dba5XWhpAIio+2eFND JRxFmzRv7Lwx88upfLPMR2P89z7SEzaEfPYGjOP4fYeP5cf88R37IBroK/2+O2vYELK+32dL3T9j GULSxDmAj1D69Pi0+/MhLd4s+uvgTa7vKhl9nc4EtcYQct4++gd85tr6e83183kMcc3D+Sz62pGv 2B75+xc2eP5+IJ93opeHzb4kSZIkSZIkhdW3b1+78847W4T1klHGTCoTK7Llu3OGDWO0ISSSGFY8 I+nNXKwxhOFtotdH0dFLbwjDXQWjjV4sxTKEyJs60lZQUBCJGPq0xjIw3kD6/8MmyH93pqg1htBH /zx85vpFjw/1eYvxo9GGMHxf/T1D5Ilocxe9nHwa7u7r74ckSZIkSZIkxVNLpjBZM4jS2hAS1QqP 5QpX2n3XO/CTz8QyhNHd8U7VEIbNmVc4aoh8WsLHPhVD6L9nvz7aiNGNldbwscIzmIYnqfGcKV0V T6XLqI/Acl0RJpD8BFxXf70TMYSsH30vvIFHRAM5VtiQejTLqSRJkiRJktSc4pnCUzGDKGPGEIbl K9lU8H1F2lfc29oQ+uOEZ6UMGzaUakOIvPn1s5H6iUnCx0VhcxrubhpWeMKdM0GpGEPo7zdGkKhg WIkaQvIG24cVjgDGWu4nqJEkSZIkSZKklhRtCk/VDKKMNITe9GB0vLnxpi1RQ8h6bBfPELKeH1cY 3lfYZPkoXXT31LYwhOHxgv4cfVoBE0MU1Xed9YY1PKaQ5b4LZLaOIWzJELJO2BD6SYkSMYSsE55k JjyhD/J5J3oSGo0hlCRJkiRJkhKVN4WpMIMoIw0h8kbHG0M/o2dLhtBH+LwJjDaEYQPot4/eFyY0 vE64yyFqC0MY7v7pDUk4QhhOT7gLIn+jZ08907oonqoh5N75KKrPHz4aS77gr4/sNWcIEaY7ekKj WMt9owL34kzpuitJkiRJkiSdHqWyh1laGsJEhanxUbvWqqVKOPtsab9+1tG2Nlf+dwZ95NIrunur T08sncq1Snclk4mbU/S1SiQv+PX8w+nX9799Ga3m7pUkSZIkSZIknS5ltCHMFoWje+FZU+NNKpNt SrUhTFZ+bKu/Rz6SHB5vKkmSJEmSJEnpJBnCDJDv2hodGsZw+N9YzGaliyFE3AvfhTc8DlWSJEmS JEmS0lEyhFLGK50MoSRJkiRJkiRlkmQIpYyXDKEkSZIkSZIkJScZQinjJUMoSZIkSZIkSclJhlDK eMkQSpIkSZIkSVJykiGUMl780PuBAwdMkiRJkiRJkqTEVVtb2+T31BOVDKGUVsrNzbVJkya5DC1J kiRJkiRJUssioDJx4kTLycmx1kqGUEo7kZGJFBLyFkIIIYQQQjQPdWcCK8lIhlCSJEmSJEmSJClL JUMoSZIkSZIkSZKUpZIhlCRJkiRJkiRJylLJEEqSJEmSJEmSJGWpZAglSZIkSZIkSZKyVDKEkiRJ kiRJkiRJWSoZQkmSJEmSJEmSpCyVDKEkSZIkSZIkSVKWSoZQkiRJkiRJkiQpSyVDKEmSJEmSJEmS lKWSIZQkSZIkSZIkScpSyRBKkiRJkiRJkiRlqWQIJUmSJEmSJEmSslQyhJIkSZIkSZIkSVkqGUJJ kiRJkiRJkqQsVZsawqPHjlvOqip7oO9C+8vbk+wPb04UQgghhBBCCJFi/tpxkj327WJbVrbTjh8/ nrBna1NDOGn5FjvnvakZdSGFEEIIIYQQIlM5v/M0W7ZxZ8KerU0N4WMDFmfUxRNCCCGEEEKITOf9 XwsT9mxtagiv7TYzoy6cEEIIIYQQQmQ6j327KGHP1qaG8O+fyhAKIYQQQgghxOnk0f4LE/ZsMoRC CCGEEEIIcQYhQyiEEEIIIYQQWYoMoRBCCCGEEEJkKTKEQgghhBBCCJFBXP/JVHtl4CzrNGROwrzx 3Sy7s/v0k/YlQyiEEEIIIYQQGULnH2dbYeEq573KysoShvWLiorstZ7Dm+xPhlAIIYQQQgghMoCr P5xsi5cVWn19vR09etSOHTvWKg4fPmx9+/W3y9/4IbJPGUIhhBBCCCGESHP+7Y0J9mivaVa6fr0d OXIkaSZNmmR3v9kz2N94t9+0N4QXfzDdLglxadcZdu57U1N6cf/27mS371jLOBbL/tpxcspvKud2 UZfp9ue3JjX5/qx3p7hjnt1pSsqPKYQQQgghhMg8MIRPfT3Nea5Dhw7FhMhhTU2N1dXVxV1n6tSp dv+b3e3fXs8AQ/iXtydZydY9tr6qLsKG6jpbWbHbek9dY2e/23rD9Me3JtqD3yyw6z+b5T7/7Z3J NmH5Zlu+cZf7/PdPc+zhfgvdsfk8eO4GK95Sa/f1nZ/SG/rnYP9Fm2ttUel2Zwz995d+OMPy1u+w 0uBcO/1a0GYZSgghhBBCCJE5ENHzhvDgwYMx6d27t911113Wo0cP279/f8x1pkyZ0mgIx7n9prUh /Ns7k+zA4aO298Bhy9+ww5asr7EVm3a5744cPWY9J5e0+kJi9Mqq9zpz2RChm2aF5budOWN5n2lr 7Mix4/bs9/nu83ez19uWnfV2Z+95Kb2hf+04yeoPHrEtu+ojhvCe3rkuLUeD449aUmF/a4OopBBC CCGEECLz8IZw/fr1zuzF4umnn7YOHTrYs88+a7W1tTHXmTx5cuYZwnWVdU2iaC/8kG+Hjx63gk27 3edzOk21B/ousA9Gr7R3g6jarV/Oiax7XbdZLup29Scz7YNRq+yJgYtt0/Z9VlV7wB77dpGd//5U u+urXLuj5zyXhh/nbXCGDLN5Yedpdl0QSXxq0GLXjZP9dXh3st3z9fxgXw3HuqEx0ghXfZxjt3Sf Y5d9NMPeH1no1rkutDxMtCG8p/d8F4n0RpdIpl/3imB/rw1bbh+OWWW3fzk3ON8pLh2kF0Pr1+vw TsN3V3yU47a/vedc6zJypXUOuDswmxwznTK1EEIIIYQQIjG8ISwtLbV9+/bFJGwId+3aFXOdjDSE pVVNDSGma+feg1a0pSGqN3H5Fjse2tf+Q0ftnREFztARCVywtsZ27zvkloXXO3D4mL33a6Gt2VZn NXUHbdKKrU3SNGNlpds3+3uk/yJ3rKG5Zc4wetXuP+yOhQEbmVduh44cc2bTa1dw3JeGLD3p3MKG 8MHAzK4OIpSHAzNIF9Xwejd+MTuIaO5rkuZvZ5ba09/l2bHjx23W6qrIujcF12VHcB7LynZYx+Er 3LXzOhIY6D7T1p40XlEIIYQQQgiR/nhDuG7dOtu7d6+jurrafvvtN+vTp4/jpptucobwlltusV69 ernvhgwZ4sYV+m0y0hBuqtnnunA+9M0Ce3JQnk0OjFvghWx2UVUQiVvptp9csDWI+C22buNXO/M3 Y1WlXRhEzzZU73XLNwb7+GJCsXUJonbVew4409Y1iCj+o9c8tw6G8KF+C21q4bZg38dt8JwN9uiA RRFD+GhgCD8bX+T2tWzjTmfyiL5t3llvu+sPucgjhtAvfyzY9stJJXYwMIhzS6ojYxI93hDWBtuy PVq4dnskEglMaLM9SCvLPxy9yp4bvMRWVex2phMTSvdSrs9lXRvM8mcTilyE8ZOxq50RZttXhi61 l39capW1+21XsJ/Lg2hjJmR4IYQQQgghxAm8IVy7dq3t2bPHsWzZMrv66qudCYzHJZdcYvn5+ZFt mGU04wxhLFXsqLd7+sy3OwND99OCMnvgm4V2f9/5zvTV1B0IonvbIobwYBBV+3u3hv37MYQbt+9z 5sivgyFkOWMIiQC+MnSZ++wN4XOD8y2/bKfrqkrUzqfx/d9WGgHDXxZuihjC+/o0TEDTITB3FTX1 bsKas6ImwPGGEHGOe+oPB8c9Zr1C4yIxnWh6cC4cH76Y2GD6ONZ7vxa45b0mr3GT1KwOIqZlwXn9 o9dcW1tZF5z3URsyb4M9E0QTnw+27Tpq1UnpEEIIIYQQQqQ/YUO4e/duB91Hn3jiCbvuuusc559/ vjOB5513nl177bXuu/vuu89KSkoi20ycODHzDCEGr++MtYEZKrYvJhUHJqzAru3WMDbvus9m2+zi Khfx23vgiO3ZHxirIMIXNoS+aykkawgxZ4xl5Bjh8X2MzTsQLM8JIpKYNLpmXtTYvdUfq8EQNp0g xhvCg43dVolusm+gCynrvDO8wfDRlRRz58GAzgnOmfGPrF+waZc9FZi+/YeO2IhF5fantybZi0F6 N27f69JDlLI6iBCOWLQp5T/ZIYQQQgghhGh7vCFcs2aNGx8I3uTRJRQef/xxZwgxiVu2bHHfbd++ 3a3jt5kwYULmTyrjwfiMzd/stv85iNDd8Plsu6XHHFtftbeJIeRnKvw2YUN4RSsM4Ys/5Nuqzbvd /xeGJnLxE9xgtrwh9MsTMYRbQ7OMDppV6mY4Xb5xp/uOrp6IcYtcH7itx1x7/adlrksq2zDuEZP4 W3BszOXTg/Lc90yUQ8SUyXS+mrrG1myttaNB2t78eXnaZW4hhBBCCCFE84QN4Y4dOyLs3LkzwlNP PeUM4TPPPGNVVVWR78Prjx8/PvMnlfHww+0L1m63Y4GJevzbRW5Gzx5BBHFfEDVbvH6HXfnxjJMN YWAi11fX2Zad+924wGuCSGPYEPaaUuKM08djVtsVwfbeEDJG8Ie5Def384KNbuwhpmtRaY3VB5G5 1wKTlowhDP/sBJPgjFu62UUEpxRstas+nml1+w+5CCeT2nB+3wSRUgxo90kNXUsfDyKLjKfkOpVs 2eP2dWnXGVa5e78tWlfjZiXlNxeZrIaxkYyxTNdMLoQQQgghhIiNN4R0/yTqF4uXX37ZGUL+VlZW xlxn3LhxmWMIMU0YnbWVe2IaQsbNfT19resiWnfgsFXXHnDdNzFlbNc7MHeYvcLyXU22W7RuuzNH mEAmZwkbQj87JyZwdH6F+9F6/ufH6jFaxYHpYnZPJqbhe9ZlvbPemWy/LS53Zu6iLi13GWXZ/oNH 3VjI8LkRAcQkcow3flrufjKCY+wLzCPdYokClu/YF5kchmtAtBNT2De4FnyHUSZiyuQzTFrDdlwT xjPe1H122mZyIYQQQgghRGy8ISwuLnbRv1jwG4VLly61iooKNwNprHXGjh2bOYYQXg9M0bPf551k qDx/emuidfq10MYurbBfA0NGV8/Xhi2z0Usq7JnvlthLP+YH0b28Jtvc3H2Ovf3LcusYwBhE1vE/ DXHOe1Ps+R/y7d0RK9y4PH6f8I0g+ndB54ao32Uf5rjZPMcEJnBEYLowlH4Zs6C+/cuKyA/KM9bw +cFLXLfS6FlGgXRy3Ohzw3xy/H8OWOg+/3PAIhs2v8zGL9vsJs25ptuJ3zbkGIuDKGXN3oMuEui/ P/f9qYG5LQhM6qbgWpQHEcViuy2IFrZ3RhZCCCGEEEK0nrAh3LZtW0wYM8h4QbqGxltnzJgxmWUI RXzu+3q+fTm5xI07HBUYYP3wvBBCCCGEEGcm3hAWFRXZ1q1bk2b06NEyhGcC/HwEE8qgvQcOR2Ym FUIIIYQQQpx5YAgf7z3NVq1ebZs3b06akSNH2j1v9pAhPBO46pOZ7sfqmTwnk9IthBBCCCGEaB3/ 9sYEu/7DibYof7lt2rTJjRNMhr59+9qVrw0KDOF4t18ZQiGEEEIIIYRIczCEv391jH0wcJx9HZg6 fj5i2rRpCTNp0iQbOHCgPfbGR8F+RruII/uVIRRCCCGEEEKIDIBunn959Ve74tVv7c7Xeth9r3+e MHe93t2uee0b+/Mrw4P9jI3sU4ZQCCGEEEIIITIAFyUMTCERvt+/Msp+//LI1vFKsF1gBtmP36cM oRBCCCGEEEJkCJg5unsSLfx9qxjvxg2GzSDIEAohhBBCCCFEliJDKIQQQgghhBBZigyhEEIIIYQQ QmQpMoRCCCGEEEIIkaXIEAohhBBCCCFEliJDKIQQQgghhBBZSloZwrG5K21hwRohhBBCCCGEEG3M t5OXpZchvOLDaQlzT89Ztig4idZsI4SIz4uDcpt9pjKppUsIIYQQ4kykLeqAGdtllMRTeU33myZE puAbWTIpzUIIIYQQ4tSQIRRCOGQIhRBCCCGyDxlCIYRDhlAIIYQQIvuQIRRCOGQIhRBCCCGyDxlC IYRDhlAIIYQQIvuQIRRCOGQIhRBCCCGyDxlCIYRDhlAIIYQQIvuQIcxCzu88zV4ckm+vDl1q14Su +91fzbfXhi6z14Yts5t7zMmocxKnjgyhEKI9aE59p6/NqHPxLFm/w6X/kaCSlUnpFkJkJzKEWcgN n8+2yt0H7MjR4/bFhOKGjDBgke09cMSOHjtu2/ccsMeCz6k41oPfLLDVFbstb31Nq++xOL3IEAoh 2gOvrbvqT6Lb+NUZdS4e0j0mf7Pd0WtuRqVbCJGdyBBmIdd/Ntuqag/Y8eNmX0wstpu/mG3bAoOI du47aE8OXGx/emtSZP3LP5oRbDPLzu40pdXHwlhiPHfvO2Q3fZF41PGSD6bbdcExL+gy7aRl570/ 1aXngiDS+ce32vdanknIEAoh2oOW6gF8T6QtbK74n+8uCN4Hfjn/8/fdEStOisyFt3/hh/wmy/02 LwbfRx/bL4u1z/OD4/llbBtOfzh9sdaP3lesc4iVHiGEaAtkCLOQsCHsNbnENm7f6+4Bpu3p7/Ii 62HKfpq/0Tbv2OfWX75xp+tS+sLgfMsr3WHTC7fZZV1n2F86TrIh8za4LjLfzFhn577X8AK8pccc W1W+OzjOcTtw+Kit2LTLFq6rcev1ntpw727pPsfmllTb4tIaG5lX7pZNLdhmpVV1Vlm735YFx3xp yFK3Luavy8iVVlpZ59KzZusel/5Mue7pjgyhEKI9aKke8I9e89zyuv2H3Trvjihwn7fu2u+WE4lD JVtrm9Qrxi7d7JazDeL94tdhG76P3mZLEJX06aC7qjvugSMONHN1ZWSfrNuQjvrI9o/0b+hdE91l lDTXHTgc91j+HJZs2BHzHIQQoi2RIcxCvCE8FhhCjJrXx2NWRSKDFweRuRmrKi1YxfYdPBJEEPc7 A7m7/pB9Om61HTpyzEX+Xhm61K76OMdq6xtedJ1/K4zs4x8951pN3cHI/quCfZRWNpjPsuq9rrX0 03FFzjDuCNYbt3RzZF26re5u3OeuwKje2mOuM4Mc8/CR41YRmNQjwQkcOXrM3vp5eUZd/3RFhlAI 0R40J7+ON2cYOIwUBi3aTGEQicxhIPkfMV7eG0K/Dt05ib6Nya9w37Fv1ukWvI8QZi6crvMbo3w5 wTsR88cxfHp+DBpDWXZHz3luGWnhc9gQhs2j//xjbpn77A1m+BzCpheFo4xCCNEWyBBmId4QRmt5 2c5It9CH+i20g0eO2sHAMHYdvdIe6LvAttc1bPP9nPW2LojS+ZdZx18KnFncH6x7XuemL65/Dljo TBym7sYvZtsTAxc7k8l3jC+cXVTt9jM9eNF+O3Od+59W4Ks+ybHrgnQStUSYxeIttYGJPW6D526w e3rPj2xLtPLCGF1LReuQIRRCtAdeJdv2OCMVJryeN1kIw+S/92Yq/J03VD4SGF3XOP/9aZH3je/G Cf471vGmEhOKAQx38wwbNowln8P1mLAhxHy69+Wqysjy8PHD54Ap9ev4yKPG3wsh2hoZwiwkbAiP BgYrL/SS7TNtrYvwdRlZ6CJ3sTStcJv1mFTsllcHkbw5xVXu+9lFVScdyxvC3Y2G8E9vT4oce07J dqsMoob7Dx21139aFjGEdCv12xds2uW+WxqY1VgmFtHyStfTTLn+6YoMoRCiPUi0HuCjaogooP/e m6nocYEIY+YNIe8Kv7xp1PDkyWxYDpg9bwz9Pnw6MYFhk4r8rKhhQ+jN44+5G5qcj++GGj6HsKmV IRRCnC5kCLOQ8BhCxvz97Z3JtmVnw4vnQGDOnh6UZy//uNRF4+oPHrGvA5NId1JexvPWVLsuozd9 0biPYBtvHF8ZuuykY4UjhMxuyncDZ613+2YzYJwgE8R4Q7iheq9b78+BeSzZusd9x7gKuq0yC+qI RZtcevoFaZ8dmNHhCzfZJV2nZ8z1T1dkCIUQ7UEi9QBv4LyJwpj5rpSxomt0C0WYsFiGENzYwMYI ncdPBkMELzz5C/vw4/t8tJDlPg3hiCGfw4aQcYXuPRaKePo0RY+DlCEUQrQHMoRZSPQso3zHxC3H GgOC67btcV1EGRfIOkQE3wleUuU79rnxhHQhZYKX2Y2RQbRz70Fn6qKP5Q0hRm7i8i32+IBFdk+f +bZj74mxhZhS1vWGkHUHzip1XVPdOMFjx+yjwADOKmo4Ht1V3/5lhTOSpGds8CI9570p9oc3J4pT QIZQCNEeeMX72QnG8PkxeBgmhiogH3HzZqqh+2eBM2rRY/ZQtCEMj+OjW+c3jeMCiQpiCL1h9Pvw x+UYkTGEQRq8iWw4hwaDFzaE7MtHGVmfY/nJbHxEUYZQCNGeyBBmIdd1m3WSIaSb6LD5Za4LKWLG z06/FrrIHiIKiGFctK4mMsD+9Z+Xu0gfYOZi3qePc2zzzhMzsH0ydrU7Vm5Jw/g/9o9BZF1vCPcG L2BvTo9hJFdstUuDCOA13Wba2m17IulBm7bvVXfRFCFDKIRoD5oThmloo3HDqLG+N2uI6Ft4hk5v vFjuI4bxDCH78RPLeLEPXx/BuIW7iyJvQmNty7q+K2v0LKNuRtPG95dPX7gLqQyhEKI9kSHMQjq8 M9nu+3q+e1GFu1pe/mFOY/eWhe6ldva7U1yksHtgGonYvTp0mZu8hejg4wMXu5c0ZpAZR+/unRvz WKx7a4859uqwZdZl1Eo3E9ubgZFc2zgpzdLg5et/psIbwgVrtwfrrLABwee3gkjgZR/OiOzv5sD8 YVRJT+eRhXbNp7PS/npnCjKEQohMJGymzm/8XcLzWzEzZ0vb+PGEsZb7bROtwySTPiGEaGtkCEWr +cvbk9w4Py+6coZ/yL45+J1DrwOBkXwn1BrqDeGc4uq0PfczGRlCIUQmEiu6JoQQInFkCEWrIerH D8uPXlLuooexxg7Gg5lGf1tcbr/llbvM1+HdyZFlzDQ6dmmFm7QmHc/7TEeGUAiRidC1k66l4ZlH hRBCJI4MoRDCIUMohBBCCJF9yBAKIRwyhEIIIYQQ2YcMoRDCIUMohBBCCJF9yBAKIRwyhEIIIYQQ 2YcMoRDCIUMohBBCCJF9yBAKIRwyhEIIIYQQ2UdaGcKbPpth9/SalRAvDsp1lddE1xdCNE/HHxc2 +0xlUsEmhBBCCHEmkur6H/4rbQzhU98usDUbym3r1q0Jw/H8/+vXr7eioiIrKCgQQiRAYWGhe2Y2 bdrknqHNmzfHfMiFEEIIIcSZS9eRyxP2bLG2T5khLC8vtyNHjiS8PuuyDaqurrbZs2fbtGnTbNKk SUKIBJkyZYrl5+fbvn377MCBA+6Z4jnes2ePEEIIIYQ4w6HeR2AgUaWlIaypqbEJEyZYWVmZ1dfX 2/Hjx02SpJbFs1JXV+cM4dSpU622tlaGUAghhBAii8h4Q8jxpk+fbqWlpSZJUnI6evSoLVy40JYv Xx55jqMLizvvvDNjCjYhhBBCCJEYGW8I16xZY6NHj7aDBw+aJEnJi+dv5syZ7pmSIRRCCCGEyA4y 3hCWlJTYr7/+apIknZoYhzt58mT3TMkQCiGEEEJkBzKEkiQ5yRAKIYQQQmQfMoSSJDnJEAohhBBC ZB8yhJIkOckQCiGEEEJkH2ltCJcsWWLPP/+8Pfnkk47PP//c/cSElwyhJKVOMoRCCCGEENlH2hpC fk/wkUcesX79+tn48eMdDz74oPutNC8ZQklKnWQIhRBCCCGyj7QyhPwG2ocffmidO3e2V1991S65 5BLr2LGj+wwPPfSQ3XzzzZHPM2bMaLUh/Nd//Vf73e9+F5NMEumdPXu2SVKqJEMohBBCCJF9pJUh XLVqlfXq1csuvfRS69ChQ7PQhXTBggVJGUKOsXHjxpPIJHXp0iXj0iylt2QIhRBCCCGyj7TrMlpR UWE33XSTnXfeedapUye78sor3d/rrrvOXnrpJbvrrrucIRwwYEBSXUYxhD/88EPc5UTdoo0W3+3e vdvh/2cfEG9d/oYjePzP+tFRPdYdM2ZMq5f544TXjZemFStWRNLEcvYpnZk6fPiw5efnW25ubkwW LlzoHvxYkiEUQgghhMg+0tYQXnbZZbZ06VK799573V8ighMmTHCRsbY0hC+//LJbx5stTCifEYaK /4H03Xrrra7rJt1XvfjMNvxlOeLvv/zLv7i/fluEcQvvi///8pe/tLjMH8ebRAwe+4+XJr+f8L4Y nymdmSorK3MTMHXr1q0Jn332mc2bNy/udjKEQgghhBDZR1YaQoyVN0geb6AwgizH1GEcWd9H3DBg mC26nHoRfQubM/5ne28o/T78Z79/9uGNnJdfxj6bW+aP44/J/rkuXqQ3ennYAPrzkM5MHT9+3HWn jjaEY8eOtX379sXdToZQCCGEECL7yEpDiDny3Ss94S6ZGCrMGAwePDjyfTwjRVqJLCKWh7tksgxz 6buQAscnUuf3x2e2CXf1bG6ZP47fX0tp4pyjz49tNAbxzNXRo0dt1KhRkUgheTz8ky2xJEMohBBC CJF9qMtoM+thmnxEDvkuo9HC3PkIXPQ24S6mYfz6mDKMG9/56KI3as0t84bQRyCjxf79MWQIs1M8 4MOGDbOePXvaunXrWlxfhlAIIYQQIvuQIYwhuo+yXvR4Qh+NC0/mgjBqvstmtNHCLIa7cyKWYxr9 3/D37IvjNrfMH4f0FBQUxEyTIoQS4uHmPtONtCXJEAohhBBCZB9pawj56YlJkybZLbfc4v7ef//9 NmjQIHvjjTdO2RA297MT3vT5z348YXiZ/4yIvoTXjzZamE+6nvrvMG6kga6opCN6mTd9zS3zx4k3 RjA6TTKEUiKSIRRCCCGEyD7SzhDu2LHD7rjjjmZ/g/Css86y3377LWlDGO+H6f3MnuGInp80hnF8 vssopgyzxv/R4wxjGS32x/d+/bB5Y1/hZUT2/PbNLQsbQp9uP+4xOk0yhFIikiEUQgghhMg+0s4Q 8jtqX375pZ1zzjlxDeHNN9/sptZPxhCeisJjCInYtdZQsX50187wvlq7LN66kpSMZAiFEEIIIbKP tDOEmLxE1Z6GUJLONMkQCiGEEEJkHzKErRATuOgH3aUzVTKEQgghhBDZhwyhJElOMoRCCCGEENmH DKEkSU4yhEIIIYQQ2ccZYQhHjx7tJqORJCl5bdmyxWbMmCFDKIQQQgiRRWS8IVy3bp3l5OTYpk2b TJKk5MQP1+fn59uyZcvcMyVDKIQQQgiRHWS8IcQIrl+/3qZNm2a1tbV27NgxkyQpMWEEia7z3M6a NcsVBjxTsQyhEEIIIYQ488h4Q8g2iG5ukyZNsnnz5lleXp4QIgEWL15sc+bMsZkzZ7pn6cCBA+6v DKEQQgghRHaQdoZwx44dtmvXroRgXX6I3X8mUki3t/nz51tubq4QogUWLFhgK1assG3btrlnaPv2 7e6ZivWgCyGEEEKIM5O0MYR0+UzUDAohhBBCCCGEOHXq6uoS9mxtagglSZIkSZIkSZKk9JUMoSRJ kiRJkiRJUpZKhlCSJEmSJEmSJClLJUMoSZIkSZIkSZKUpZIhlCRJkiRJkiRJylLJEEqSJEmSJEmS JGWpZAglSZIkSZIkSZKyVDKEkiRJkiRJkiRJWSoZQkmSJEmSJEmSpCyVDKEkSZIkSZIkSVKWSoZQ kiRJkiRJkiQpSyVDKEmSJEmSJEmSlKWSIZQkSZIkSZIkScpSyRBKkiRJkiRJkiRlqWQIJUmSJEmS JEmSslQyhJIkSZIkSZIkSVkqGUJJkiRJkiRJkqQslQyhJEmSJEmSJElSlkqGUJIkSZIkSZIkKUvV 5oZw/8Gjtqi0xsYt22xj8oUQQgghhBBCpJrxyzfbio077cjR463ya21qCHftO2jPfr/Ezn9/qv3x rUn2hzcnCiGEEEIIIYRIMfgtfNcHo1Za3f4jCXu2NjWEX04uyaiLKIQQQgghhBCZzJ/fnmQ/L9iY sGdrU0N4R895GXXxhBBCCCGEECLTeXFIfsKerU0N4d8/nZlRF04IIYQQQgghMp1H+y9M2LPJEAoh hBBCCCHEGYQMoRBCCCGEEEJkKTKEQgghhBBCCJGlyBAKIYQQQgghRJYiQyiEEEIIIYQQGcLlH0yx j36aa6NmLLKpc/MSZuzMRfbVyFy7uuvkJvuTIRRCCCGEEEKIDODPb020n6cstIqKCquvr7cDBw4k DOtXVVXZe92+sr+8MTqyTxlCIYQQQgghhMgAbv9siq0uKrEjR47Y0aNHk+Lnn3+2m97oH+xvgtun DKEQQgghhBBCpDn/9sYEe7LPdOe5Dh8+nDRTp061+97sEexvvNtvWhvCPwYh0ae/W2LPfn+C5wfn 23195tv5709N+mL+7Z3Jbt/+821fzrWnBi12///prUn2l7cnRZbd13d+kIY8u6jL9LTICEIIIYQQ QojsAwP31NfTnOc6dOhQTDZt2mS5ubmuS2m8dTCE97/Z3f7t9XFuv2ltCP/2ziQ7cPjoSeseP37c SrbV2q095rb6QmL4Ri+psP456+yvHSfbBZ2nWWllndXsPeiWv/7TcstZXWnXfjrLfZ60YovtP3TU Hum/KO0yhRBCCCGEECI78IZw/fr1cccJvvjii9ahQwf3d+/evTHXmTJlSuYZwq279ttHY1fbOyMK rMuoQlu6YacdD7aZuHxLqy8k0b+y6r22cfs+u+KjHDun0xT7MbfMBswsdcv7TFtjR48dt1eHLnOf 3wgM4pilFXbVJzlplymEEEIIIYQQ2UHYEO7fvz8mTz/9tDOEzz77rNXW1sZcZ/LkyZlnCEur6uzi D0502aSL5+76Q1a0pdZ9vqPnPPstr9wKN+2y/MAsfjur1C7pOt06vDvZuk8sdl1Nu40vssLy3TZh 2Wa3be3+w/bTgo1u2y4jV1rPySXWcfiKYPsdQQTSbG5Jtb3583J7ZehSGxjsz6fvus9m2c/BdgXl u9y6X01dYxcGUUaWvfXLcvs2MJadRxba8o07bUWQnh7Bfi/q0rD8zq/muejkqs27bUmw7RcTi+zs wJBmQgYUQgghhBBCtB/eEJaWltq+fftiEjaEu3btirnOGWEIHx+42OoOHHHG6ppus1wE8eDhY269 yt37naH7Ye4GuzAwYuuD76prD9iRo8dtf7Cv3fsOuQjgoaPH3HaYQNapqTtowxdusvqDR1x6ausP B5HBzS4K6buM/v2Tmba+ss5tX7Gj3u2X7quTVmx1xxoZmFI+HwyOs3bbHqsKlh86csz6Tl9r/wjM 4JrgO38+O/cecmnqn1PqurFmSkYUQgghhBBCnH68IVy3bp3V1dU5SkpK7JlnnrEbbrjBccEFFzhD eNFFF0W+e/jhh62srCyyzaRJkzLPEO7ce9DGBeZs1JJymxyYr03b9zlTNnDW+iAat9KZwa6jVrqJ Zh76ZqEzYjNWVjqTtqF6r9s/BvHKj3Ps8gC+o9vozd3nuO/4jCFk+wFBNJB9dxpREEQZZ0QM4ROB Cf1t8Sa3r95BVJBJZkjznOIqt/4HwfExhOibGevsgmBf9/aZbzuCtOeX7QyilHl2ODCHuUHk8cpP clwX1PXVdTY9SKeihEIIIYQQQojm8IZw7dq1rjsoLF++3K655hpnAuNx6aWX2tKlSyPbTJw4MfMM 4bEg6kZkD2O4c99B2xZE9r6fs8HOfW+q6xb65KDFrtvnhOWbrWz7XjsYGK8ZK7dFDCFm76/vTHb7 DI8hvPyjGU3WYbkfQ/hK4xhCbwhf/CHfSrbWBhHEo00MHEbxcBDpG5VX4QxhsKn9vVvDhDR/7dhw rOUbd9ndvXODSORedy6bg+ji1MKt9vYvy50pzYQMKIQQQgghhGg/vCFcs2aN6w4K1dXVNmTIEPv8 888d119/vTOBmMRPPvnEfTd48GCrrKyMbDNhwoTMM4SbavbZQ/0WOvN0S485dm1guHw3y+cG57so 3K7AMC7buNNyVlW6/8OGcGXF7sg+kzWELw1Zausq62zvgSNNfrKCn8A4ECyfFhwPQ0g30Asbxwz6 Y2EIz+402e4J1h21pMJWBJ9r9zd0XZ25urJJd1ghhBBCCCGEiCZsCHfu3OnA4NXX10dmEPVjCJ97 7jnbs2eP+46JZFjPbzN+/PjMH0PoIeqXu6bajh0ze3RAw89C3Pj5bGfcZqyqbNYQllU3zDKaqCHE eM5fs92OBobvvq/nu2WY0i8mFLv1v5u9vllD+MS3i212cVUQzcyzDkG6b/9yrhVvqXVm8ubuc5PK FEIIIYQQQojswBtCxg3W1NTE5KmnnnKGEGO4bdu2mOuMGzfuzDGEdBedGRg/JpH5fu56+3D0Sluw drszaOVBVPGOnnNPMoRE95jcZV8Q6WM2UqJ2YUP4xcRi162TSCOT13hD+Gj/Rdbp10Jn+NZuq7Me wXrMKLplZ72LNt7TJ7dZQ/ja0KVuPwWbdtun44rs88BI0vW1Zs9BZ0zTPQMKIYQQQggh2g9vCIuL i11X0Vh0797dbrrpJuvWrZvrJhprnbFjx2aOIfxTYN7qDhy21Zt3u0lcYl2YewMjVrf/cGQ/jM/b sqvemcSf5290Zm9p2c4m2/wUfH8kMI1E597/rcCtwzYse6DvAmcOEVFGJrJh5tH7+jZEBXtNWeMm h/Gqqt1vL/2Y74zmiEWb3Kyi0YZwWWAILwi+w4AePnpiW2Y9ZTKcP7+tWUaFEEIIIYQQ8Qkbwqqq qpjQfRTxN946GWUIE4VJXojg3f/1AjeRy3nvT7WH+y20c99rm9k7iVY+Elw4ZhE9693Jrdr20g9n uO6t9/TOlREUQgghhBBCJETYENIdNFnGjBlz5hlCIYQQQgghhDiT8YawqKjItmzZkjSjR4+WIRRC CCGEEEKITAJD+NCXU62gcJVVVFTY5s2bk2L48OF2xxtfyRAKIYQQQgghRKbwb29MsAvfHWcTZi2y ZcuWWVlZmZWXlycM669YscI++Kibnf3qz85gsl8ZQiGEEEIIIYRIczCEv39trD386S/2ZtcvrMeX X1nv3r0T5suevazTx93t1te+st+/Osbtj/3KEAohhBBCCCFEBvBvr48PzNxo+9srP9sFrwy2i1/5 LmFYv8Mrw9z27MfvU4ZQCCGEEEIIITIEZwpfH+uMXasJIoxhMwgyhEIIIYQQQgiRQdDdM1mi9yVD KIQQQgghhBBZigyhEEIIIYQQQmQpMoRCCCGEEEIIkaXIEAohhBBCCCFEliJDKIQQQgghhBBZSloZ wps+m2H39JolhBBCCCGEEKKNwX+llSH8aeYKG5u7MmE4XmvWF23LooI1jkxKsxDpwsriUpuRV5RR aRbZQ06QN8mjmZRmkT2My22oE6oMFaL19By7JHO7jF7x4TRnPtI9BJtNfDRisSOT0ixEurAwKM9o qcukNIvs4aVBufbt5GUZlWaRXawP6qDUDTMpzUKkCzKEImXIEAqRPDKEIp2RIRTpjgyhEMkjQyhS hgyhEMkjQyjSGRlCke7IEAqRPDKEImXIEAqRPDKEIp2RIRTpjgyhEMkjQyhShgyhEMkjQyjSGRlC ke7IEAqRPDKEImXIEAqRPDKEIp2RIRTpjgyhEMkjQyhShgyhEMkjQyjSGRlCke7IEAqRPDKEImXI EAqRPDKEIp2RIRTpjgyhEMkjQ5gkZ70z2UYs2mSziqps1uoqe2dEQWQZ5+K+D8gJlt3/9fxW7//u 3rk2p7jKphZus8s/mtFu59kaZAhTzwN9FzTko1Xb7PFvF0W+f33YMvf9d7PX29+CvJhJ5yRiI0N4 goe+WeDKP1+OemYHdBy+IqPO5UxBhjBx/tpxsv0wd8NJ+dczYlG5XdhFxiXVyBC2P0Pmlbk83mvK GvvL25MyKu3Zjgxhklz1cY7V1B2MpH/emu32p7caMv/7vxVGvj967Li9OCS/1ft/5rs8t/3eA0fs iuBY7XWerUGGMPV0GbnSjh8/7vJC3vod1qHR/A2cVWp8u3zjLjvr3SkZdU4iNjKEJ+j4y4q474pv ZqzLqHM5U5AhTBzMXln13rh5eEOw7IqPMuO9nknIELY/Kyt2uzw+pWCbDGGGIUOYJFcGJm173YFI +jGHN3Wf45bNLamOfB82hFTmHwxavruMWulaucORPx6cm76YbW8HFaE3f15ubwWgvQcOuxfHXztO shuD5VSUOgcm4faec+2vaRYZkiFMPZ2DxgVvCFGPycXu+wE5DYZwmTOEk61DwO1fzg0i1Q35g3x2 7ntT7Y9vTbSrP8mxq4Pn69IPZ9grQ5fZB0H+u/mLOa7S8sZPy+29Xwvths9nR47JNjcHeZn9vBtE vlv7bIrkkCE8wdu/LI+Un70mr7Gek0uCvyX2xYRiu+urea78JV9e/MF0V2Y+FETSKV9vCvJ1x+EF roxlPd9Ycv77U936lLlEH3kG/jlgkZ0XfP9Y8Lfr6FXumemgaHtcZAgTp0OQ7zr9WmA9Jhbbj0HE xOunBRvdd+RR3vcv/bjU5b1HgooY5XUmnWM6IkPY/oQN4QWdG8pduPazWdZ5VKHL+xcF5XYmnVO2 IEOYJN4QHjt+wvi9F7wAeBHUHzxq0YaQSvmMVZXB+icq90T/MH/sj+6A23bvd9+zxv5DRxvXaTCE VGCq95yISO49eMR1F2yv84+FDGHq8YbQZ5t9QZ4hOh02hJd0nW5jl262I0dP5C3WLyjfFRTI06xg 0y63j931h82vwX5opfb7PXD4qD09KM/+HDQ89J2+1g6F9lUXrPviD/n2hzcnijZEhvAE3hAePnrM zn2/aUX58qBhY/e+Qy7vbt5R79abWrjVvp1Z6vK116EjR21c8FywTe+pa1zZS5nry1aelzXb9kTK ZJ6R3/LK1aodBxnC5PC9fchmNMjx3StDl9rW3fVN6kBLyna4hotMOrd0Q4aw/Qkbwvv65LoymbK4 /uCJsnnj9n1qAElDZAiTJGIIA8NXF5g2xJgXCnxUG1S+qVR7Q0i/aqod9YeO2K+Ly21FUElHu+oP 2Z29cl13QLQ9MH2D56y3qtqG6COG8LnBS6x2/2F3rGkrtwWVnC2uEgN3fZXbbtcgGhnC1OMN4b6g MPVdlMfkb3bjU7whpDHhYFDgUnn+OWiBHhQ0FFD5IO/d+/V8K2zMa+S9SSu22oEjx9xnTCBGck9j /p24Yos9FZjCI8caDOhvQT5dVFrjjr95Z72LGmbStcs0ZAhP4A0hIt9v33PAQbl5Z695zhAi8unW Xftd+VkfGD2eiflrt9uoJeWRBpJu44qsz7QGQ0heXry+xtZXNXTn47tZRZVWtKU2Uh5nypjt040M YXJEG8LLggaN0so69x35sM+0ta6hwpXtQXlMb6BMOr90Qoaw/YllCBF5fubqqkgjNL2ZMum8sgEZ wiQ5YQjJ+FtdRWPX3kOBKWzoLoppoyJDpZzuoYXlDQ/JsNyNbnu6Oh0KKuY8HD8v3OT2RYWebiYs f3VYg7HEEA6m8n+84f/pgSHkQfMPGdGc9roG0cgQph5vCLfs3G8fuPGEDZVYCl1vCK8IKrDksclB Pvxm+jpn4hB5754+Jwzh90FDw9mdptiSDQ2ND6OXVLiupjOCPIWIYP+Y29C9iQo3ZpFJPA66fHrc jY3NpGuXacgQniBsCH3jF5QFLctMuOUN4fdzNrj1v5xU4p6NDUEF+7LgefhLUKlmQi60YG1NxBAW ba61qz6ZaR+PXeXWp+GNCjqNbr681diu2MgQJke0IaTSxbufBrqH+i1063w2vsitQ+PGJV3VIJEs MoTtTyxDSOPz4wMXu94d1Y3BDrpKZ9J5ZQMyhEkSNoRfTi6JRPSONPYh7eK6eB5o7EpaaCVba90L oUdQcWH7P709yUURERVxKjh0ZXqhsWseL4rjjRWUcUsr3P9HgoPVBZFC2BNsuztozaabVHtdg2hk CFOPN4RUFBjzR/TDGivJCEP4WBAhXLO1Lih0j7mCl3yHvCFc0LgNk3Ewpsp/JmpN9zi62/l8OHR+ gyGkwrKnMa/VNua1T8etzqhrl2nIEJ4gMoYwiPLd03t+ZByKxxtCPz67X5C3eSJWBg1v53RqGDdI tBytCioo3hDSfZoIYPi5ouvSiUm8ZAjjIUOYHNGG8J/9F7noNeUrcwGwDmO1kSLUp4YMYfsTyxBS h7i911wZwjRHhjBJwobw5aFLbVReReRcaoIK+S3d57jlVMpZvrgxarNoXY1d1HmaPTlosVuGf2TC BCJA6JegEkMFZcDMdZEKSq8pJW7dnXsP2hPfLnZd9yYs3+IqP0QS2+saRCNDmHqiK6639ZgTGQOF MIQYPSobdDe+NzCAVEB8l9FWGcIgUkiEEVXuPuAm5Xjg6/muKzRd9R7oO9/+8OZE0UbIEJ7AG0Iq zpd2bToBQXgMIfmb7977rcCOHm/ovn9fkGf//klOpFcGPThkCE8dGcLkiDaElKt0b6Z87ho0HLPO mPyG+sOG6n1u3HcmnV86IUPY/sQyhJTXTIooQ5jeyBAmSdgQvjhkqb0WGDM/wQyFO7M2ekNIK/Yn QXSFl8D+Q0eckfMTyGyornOzP47MK3ct3LVBCyGTgfgxBVRQnhyU57pKuS5R1Xtdizf7xRjc2iN9 xnXJEKae6Ior3w3LLXMRPIQhJHJHZZdoXs7qSlu7bY9bxndMBuMNYL9GQ7hwXbQhbOwyGhhCKtN0 dSYv0r1ubWXDvtZX1dl1n8mstCUyhCdI1BDSfZTvbvtyrm2q2efyLX/Xbqtzzw3d8J8dvKSJIaSL tf85FxnCxJEhTI5oQ3jue1NsXklDGUw9gMZixoAfcz2IijPu/NIJGcL2R4Ywc5EhTBIqKbODyMni 9TvcdOUYRH6Mc0nw+dEBi9xnlhMRfPCbha4i3nX0Sve7cUzQAdNWVtp1jdP9XxE8KMyIx+xLRGeI yvCiYAwXFZaH+y20masq3ax6LM8v22Fv/bK83c4/FjKEqefZ75cEearGxi6tiEyhT9fRScu3urz2 Y+5Gu/qTmUGDQoWVBxVhKsPkG/Idy58cmOfGDjLpxqtBZYQxg0PmlrlldGvmtzP75axzn7+Zvtb9 oDIz4OUFx6SyDLlrqjWhzGlAhvAETwxc7PIk+fj8zifPMkq5SJ6mkuG/ZxzgvJJq9xxs3VUfNJbs jPSgYIwteZoxhxe8P9WeCirpfB4dNN7xUxN3BlEbjjensbzNlOt0OpEhTA56bZC3yK/3Nka0b/hs thvDTUPbliCvFm+ptc8nFGmG21NEhrD94adVyO8MpeJngCiTpwd1XXpmUHZPCxqgWf7M93kZdV7Z gAzhaYbJZG4NWrNv/fLkCvafg5fBLT3mum6Bf4kx0xjLqZgzK+nZndLvx8hlCNsP8gvdlG8N8k8q fqieffyj1zzH3/TbbKcFGcJT58/u91znuDL23DQsIzMZGcLUQmPc9YExvKPn3KCBWeMGU4EMoRDJ I0MoUoYMoRDJI0Mo0hkZQpHuyBAKkTwyhCJlyBAKkTwyhCKdkSEU6Y4MoRDJI0MoUoYMoRDJI0Mo 0hkZQpHuyBAKkTwyhCJlyBAKkTwyhCKdkSEU6Y4MoRDJI0MoUoYMoRDJI0Mo0hkZQpHuyBAKkTwy hCJlyBAKkTwyhCKdkSEU6Y4MoRDJI0MoUoYMoRDJI0Mo0hkZQpHuyBAKkTwyhCJlyBAKkTwyhCKd kSEU6Y4MoRDJk1aGsOfYJe6Fkwg/5RTYypJ1Ca8v2p6cJUWOTEqzEOnCyuJSG5e7MqPSLLKHcbmr XKNFJqVZZA8DA6iD/pSzIqPSLUQ60HHogvQxhCPmrrat23daXV1dQuzevdvKysqsurraqqqq3LGL iops5cqV4jSxevVqW7t2rW3dutXdh82bN1tlZWXC91AIcYKNGzfarl27MirNInvYvn27K+szKc0i u6AeSF1ECNE61m3cbGMWrk3Ys7WpISwvL7cjR44kvD7rUoHas2ePlZaWWkFBga1fv94qKioyjhVF pTZmbkHGMXXhSstfXmCrVq2ympoaZwap0EqS1HpRBu7fv98kKR1FhRtTKEnpKuqgBAuoFwohEmfH jh2uwa81z1raGUKihEQG6+vr7eDBgxnJyo011nvy6ozk6ymrbcrC1VZYWOgykwyhJCUnGUIpnSVD KKW7ZAiFSI6MN4REBIkM7ty5M6MM4JlkCKH/tNW2ZFmBrVu3ToZQkpKUDKGUzpIhlNJdMoRCJEfG G0K6ii5btsxVojLJAJ5phrBPwIwFBVZcXCxDKElJSoZQSmfJEErpLhlCIZIjrQ0hgxwnT55s48eP dyxZsqTJcm8Ily5dmlHm70w0hDB5/go3yYwMoSQlJxlCKZ0lQyilu2QIhUiOtDWEx44ds65du9rd d99tTz75pOORRx5x49S8sskQ9ptWZL8uWG/TCypsyrJyGxH8z3dngiE8evSozZkzx1asWGGSlM3y hvDQoUMu2k6D2KRJk1y3eMpEr+PHj7uydvr06TZhwgSbN2+e7d27N+Y+KeQnTpx4Uu8L9kcXb9/o tnjxYnfclsQ6NM6xDdsyoVSsnh2kkbSvWbPGEhHlQElJidsn57Rw4UI7cOBAzP2S1vnz55t0ehU2 hNu2bbOZM2e6fDB79mw3qVhY5EfuIfdy2rRpLq/FEvc4JycnZj6hkpKbm2vjxo2zqVOnulmsW6O8 vDyXBvJMWAwxIc0+7Vu2bDlpnVjCaMydO9dtN2PGDDeHQSzxzHHe0ddEanvJEAqRHGllCP14QAwe lYLrrrvOFbp8hldeecU6d+5s+fn57jOTyWSDIRw+f71trtlj9cGLs3bvfqur32979tXbyk3bbcCM 4pQZup9zS23tlp02ctGG02YIeQnz0r7qqqtswIABJknZLAxhbW2tffnll3bBBRfYP/7xD7vrrrvs wgsvtJ49e7pliAaUa665xi6//HJ76KGH7KKLLrLnnnvOTawVFhXSN954w2666aYm5ornbsiQIXb1 1VfbHXfcYQ888IBdccUV9sknnzRbMT58+LB9+umndu6559q9997rtr3kkkvsp59+arIdZpM0dujQ wVWeWxLbjhw50p0PaSU9HOO9995zRjG8Hsbh5ptvdu8C6fTKG0LKefLmlVde6fIf9428wDuce0Tl gvxI3rj//vvt1ltvtWuvvdY1YITFvaXRgPw7atSoJsuYsZoGYY5Bfrj++uvdsThGIqIuwnuFPBRu TCH/3HDDDS6/sz/+kkbOqTlhgB988MHIOXE+9913nxuyEhbP2ddff22XXnqp+0km6fRKhlCI5Egr Q0ir8+233+4qES3x97//3QYNGnTGG8L+04pt2849Vrdvvy1ZW2mjF5XZuCUbrbh8h+2rP2CL1mxr GkmcXmxfT2mIHPYJ/g4IPvebenIksd/0xmWhKOPYvI0uLROXbmyy7teN+/H7TcQQUinwUImE6Iom pp8K6J133unuqQyhlO3CEBLRoHx77bXXXLd5ohcvvviinXPOOe63P4m8PP/883bPPfe4MpNC/Mcf f7SzzjrLpkyZ4vZDRZTnifXOPvvskwwhyzGDmEWiHFR2OR7rNtegQ2SOdHTs2NEdl/IXI3DjjTe6 7YgUEo3kuWb/PNdESloSlX8q6Y8++qibMZr0vPPOO257IpCIiCBGmUo533fp0sWk0ysMIRWGF154 wW677TZ3T6h8c49pwKCxgDyAuacRA2NEPsE0sT5lPSYQfvvtN5dPMHrk3bAh5F3x8ccfu2VEB2kI oXEYk0VDRjz5BsavvvrKGVbySdgQ7tu3z+UrjCKRQc6HZ+biiy+2L774oknjQ7S++eYbt97gwYPd ORPVxEzybCK+Y9lbb73l0nnZZZfFjYpKbScZQiGSI+26jPKbfFRevOk777zzTvrrzUM2dBnNKdzs luetqWpiyAbPWmNbd+yx9dt2ue6jhWXbg3UrbMO23ZZfWuWifavLa9w6Gyt326Rlm9x23wTmcNbK zVa6dZdtDaKOZZW7bNaqzTZqcXDvgv851qaqWpu6osKtOyXYjnW37aizNUH08NeFG1o0hHTHGTp0 qA0cONC+++47V9F86aWXXOWACq4XL8+XX37Znn76aXdfZQilbBdlIM8OBiscsaA7NeUeZotu85in YcOGRZZTkSVq9uGHH7pyEROF2eP5opEt2hD+8MMProKO+WJ9oOwePny4qzTHEpVtopQYQl4cXgsW LHDRPMwi5UevXr3ccZ999tmEDSGVawxEOILEC4rv+vfv7z5z7uwXM4L5kCE8/cJAkf8w+5iucCPf M888Y0899ZRrsMAUYf6qqqrcMtbjXUB+4DsMms8nDz/88EmGkCgkZhDz5/Mn0W+6nvoGgljykWbe N+zbR5m9IaTxgwaMPn36NNnmn//8pzN28bpd83zREPHYY49F1uG7Dz74wOVF8j0NIp06dXLH5dxl CNtHMoRCJEfaGkJa2Khg0F2KvxTYo0ePtnfffTerDOGqTTW2P6jI/TSv9KRlfaYwtrDYjSs8cOCg g0giJnH77r22tz74PzBzu+vqrX7/Aftt4XqbsHST7Q/+r6nda2s273DLOP7sVVvcNvy/fddey1tb 5SKR+4J97Nyzz3Ul3Rdst6N2nw2Zs65FQ8gLmftE9xpeyLxs+fz444+7aGFYZEJe0jKEUraLMpCo yy+//NJkchnGUfH8MGZr1qxZ7rli3GBYr776quumF23oqFRHG0LMIg017KN79+4ustOcGURUgImu 0DAX7oJHmY9BIOIfFpWyRA3hr7/+6qIvYRNMRZ0ug5jcsDgPuvrJEJ5+YQjpcklZzXhPL+4V94Rh HRgmTB5lfXhM6vLly11+CM8DgOgCSv4JG0LyJYaKbsc0XpA/aYygASNRkSaMWdgQYjQxpuH9kEbS zjMRb0InzCgNLu+//34TE0zjDecUbuhERDNlCNtHMoRCJEfaGkIKU4we41T4y6QyVCyoBGSTIcTc YfIGzVwTNzKHIWQf6wLzRxfQxWsqnQGckN/Q9XNgTknEKM5cucU219Taj3PWuh+UXxSsy7YTA6M4 ZnGZ+5/tiEYSbcQMEo1kP6Mbly8sqWzREGIA6ZaDmUe8RKnkxhpTxDgnohgyhFK2K9Yso1QqiRhS uaVCS6Ts/PPPd5G5sKg0E6Gh0h4W3UnDhpBn0TfQsB8q8UQ1iNJgwKIbbLwobzGRRG7ChtA/v9HG j3IgUUNIGjG50RV+0hZt/Lg+RGtkCE+/Ys0ySr767LPP3L2m+yX5h+6aTzzxxEmzhrNO9Ji7WIaQ SDHRYdYnko2pI98x1nDRokWWiGIZwmiRPrqmEvVmLGO88bOcN2MGmeguvA4NNKSRLs5hkX4ZwvaR DKEQySFDmAERQsxddFSu79Qim7ai3OYWbYkYwimN3ULZhs9EDPc3wmeigkPnrrM5QTSwaldd0Op5 4rcbnSHMazB8EwND+O2MEtdNNLwfv25xxY6Y4wmjDSEtruGoBBUJJghg3EhYMoSS1KCwIeTZoRGF bm8YQj+jIeUgXayTNYSILn1Ugul14cf60sXbRyEZq9ijRw8XPQTGa/P8YgiZ7CtZQ8g+wvv9/PPP 3Xl5Qxg9sYcMYXopbAjJM9wvxn1yn+mGyXe8l0/VEBIhJGLMGFg/Uyfbk/eYbZz9Mp7U5yPG/0Xv tzlDyDImpSMf0RBC91f2yXpMkOT3C0SvvSGki6gMYXpLhlCI5JAhTHNDOL9oqx0Ils8L/tJF1H// XRAx3Fm7z3Xv9IZwYmNEkH3R1XPx2kpn/qCovMaWrKsK/u5wywrKttv0wgrLD76LZQiZzGZLzR7X jdTvY+7qLbZuy06bvqIioQghswCGB+kzxoLZ5qIrcjKEktQgbwgxZIyVY9IKjF64Sxrd0YiU0I00 LBpgGLcX3e0zXoSQmRKZsMZr06ZNkTF7TGxDF1QMmZ/dmQr022+/7SrG0V1GqahHdxmNZQh54bz+ +uuR/QIzS2N8Y0UImV0yusuoDGH7yRtC7gH5hJlu6W6JgfPmjzKf7+gyGjaE5GnyA/c7rFiGkLGC 5EUijt6A8Zd7zpg98jj5PZyPxo4d22S/8Qwh7zi6jTIzKrOE8jMS/j3FejR+hPfbu3dvdzyeoWhD 6Hu9RHcZlSFsP8kQCpEcMoRpbgiHzFnrunvu2rPPzQKKEeS7lYGho4KH6Ys2hEwuQ0RvfvE2t/6w eeusdm+9m5m0YnutM3nDF6y3wbPWurGB0YYQo0gXVSKNdfvqbdLSchsYRAynBUZwX1ARmBMYw0QM IYSjFdxbKrK05oYlQyhJDaIMBIwQxosZE6N/448JZqiI//zzz5HvqNDS2EKXtuj1Y0UIicwxS2n4 d92omNOFlMmeqBj72YE9HIPoHhFLnnEvxjwSzcFEhhWvy2j0fqlgYwA4NpPLeFEJZ7/9+vVrsr0M YfvJG0LyFIYKsxTOC4j7iVmjTA8v8+Pt/EQzXrEMIb/ByZADJojxIk8yhwDzC5DHo/NRdL6PZQj5 y+ymRNh5VqgERSs67/tJbWhAYVKZcMMKeZB9Rf9epgxh+0mGUIjkSGtDyJTqjGnhL62NtABSuGeT IYQpy8udiasPKkLVwV/MIRPNlFTscF07ow3hoJwSZ/T2BkayKoggMnEM/LZwgy1bX+26oDI2cNee emcUeZmVV9fa8PmlzvDxG4crNlS7z5U769w624K/TFLD7yF+F2c8Y7QhpDJHSyyfMX3MwMa9i644 yhBKUoP8LKOUf1RcieB5MG+YJKbgp4GMxjJ+k5XvqEzH+82/WIaQyAvHYKIOnj+e0TfffNN1n6My Hk9Egvhpim7durlteHnQhY/9R79IWjOGkPNmjBjnRRdSXk50LWd7yvewZAjbTxhCynjMGuNOiRqH 8yj3HENFYwURPhoXuJcYI/IIjRbRxi2WISSvMpEcMBkN+/AND9QBEvkR+ViGkHzGmES6PlNXCaed KF+8/fI9s6LSoEk3a9LDs8czxCzZ0dvJELafZAiFSI60M4RUem655RbX6oYZ9H/pTuT/UkngRZMt hhCYZXTmys3uJyXygqjgmCVlbhyhN4CYPWYc9esT0Ru/ZKMtKNnmZhD9sXEMIgaSSOP84q3OSA4L 9ktEMaegoRsoP2HBvohC8vmH2WttamBI2c/kZQ2RwkR+doJZRnkhci8ZT8IYKLr6MM4k+reevCGk q44kZbPotkk3NYwZUUB+XsKDYSI6iBg/SAWbKCLPDuUkXTGjIxUIQ0hFnHLGi/WYTINnlO3ZP2Ur Y6niTcCBqGgRJeRZJsJIGunWinmNrhR7Q+h/G7E5+UmnMAaUFVTaOaePPvropPLCG0KWSadXGEKi dkSJMXzcq3AeZVwfs3ZSpvMOIJrHTOHkM0wk3TOj5Q1hdJdPJo8hjzHunL/kOQxi9KQ28USe4tg0 HPi8SYMGzxbRzXC6wf+GYjzRUEGEkOeErqaYUwwnXWGj5Q3hqdSHpOQkQyhEcqSdIaSiwtTpzf0o PS8ZXizZZAgzgegIIRFBfgCbih6/mcYLPtYLl245vKi5/5KUzcIQMjMvkb5Y+LFKVHAp+0aMGOEi imPGjHEFeiyxHtGVaMNGWcv3PJtMpMGkHM39MLcXFX7GMWIC+akKzGn45wW8KNdIc6IvGIwolWvO iYk8pk6dGvNnAFiPsoSyRTq9whDyO4DMdBsrfzI+0Och/7uBNEiQT6InDPIiHzI5S3RXUkTeJZ+R x/mB+ujuqc2J/M7PVoTHLLJ9vGeLiF9zjSEIo8G5E80kXfRoiiUqVjwj8X7GQmo7yRAKkRxpZwgx DJWVlW4K6HgFN2aQl4gMYXobQrrqNNfiKklSU8X62QlJShfF+tkJSUonyRAKkRxpaQgTlTeEtGxj EDPJAJ5phrBPwNTAEDJLIIaQGRJlCCWpdZIhlNJZMoRSukuGUIjkyHhDyPiDwsJC95MGmWQAzzRD 2H/aalu8rMDdD+4FY0H5K0lS4pIhlNJZMoRSukuGUIjkyHhDyEBvZjpjZrxMjhJmuiEcn7vKGXMy k4ygJCUnGUIpnSVDKKW7ZAiFSI4zwhAyDfuaNWtcd0UGeTMGMdNYXlJmv8wqzDjGBUYwd+lKW16w MnIuMoSSlJxkCKV0lgyhlO6SIRQiOdLOEPKbWkT6EoGXE4aQk+AlxbGZ1IRZxcTpgVkBme0PI8h9 4PecuBeJ3kMhxAl8A1cmpVlkD5TxlPWZlGaRXVAP5GdPyKtCiMRhpue0+x1CEpQoHI+oINB1lElm iBaK0wNmkGvOveMeUKHl/9bcQyFEAzw/rS0DhThdkDfJo5mUZpFdUCf09REhROL4unvaGMJkuowS 6ty2bZuLVgFj2TKN/GUrbH7esowjb+lyKwjSz2QydNNQl1FJSl7qMiqls9RlVEp3qcuoEMlBlDDj DSFhzhUrVri/e/fuzajJZDJ9Upn+04ps+Jwiy11S6CKFGHMZQklKTjKEUjpLhlBKd8kQCpEcGW8I Od6qVaucEckkA3imGELP4JlFLsqJQZchlKTkJEMopbNkCKV0lwyhEMmR8YbQ/zB9fX19RhnAM80Q 9p2y2mYvLrCSkhIZQklKUjKEUjpLhlBKd8kQCpEcZ4QhXLp0aUaZvzPREMLk+SvcLK8yhJKUnGQI pXSWDKGU7pIhFCI50tYQHjt2zEaOHGkXXnihdejQwfHPf/6zycso2wzh10EU7vuZa2zAjJIzxhBy n1kfjh49apKUzQobQp6H5p4Nnh0K8Z07d7rp1uPp0KFDbp3jx4832ZZ9xiIRHT582L08qHixr2ix H5a39rlmXdIKzTUO8tMcnLt0ehU2hOQnxuxzn+mhE0vkZZY3d6/IP7HycLz8Gc7HzclXcGI1sLAP 0hxveXPip7HYjnOPJ5451mlNA7eUGskQCpEcaWsIeek8/PDDtmjRIjc+EN5//30bOnRo5IWQLYaw 37Rim1e01Sp31tmuPftsd129VWyvtfH5m1Jq6AbmlNikpZvs+1lrToshLCoqskcffdSuu+46+/vf /2533HGHzZo1yyQpW+UN4cyZM+2RRx6xa665xvHggw+6rvHefG3atMlee+21yLNz/fXX2y+//HLS /lif7ylLKWe8Bg4caDfeeGNM5s6dGzd9lLm5ubnuWeW4pI19Uw77482YMcPuu+++SNo5j+XLl1tL ojx45pln3Dbsm7RMnz79pPUwJc8995x98cUXJp1eeUNIxeGjjz5y+Y57RT7s3r17xNRh3IYPH+7y ic8HL730kvvZimjx80X33HOPTZ48OfLdunXr7P7774+ZP19++eVm00iFplOnTk3y0c8//+waMRCT z7333ntNnp1+/fq1aAx5fvr372+33HKL2+7aa6+1jz/+2JmPaE2dOtWdO7NvS6dXMoRCJEdaGcIl S5bYvffeazfddJMrxM866yxXaPMZLr74YrvssssinzGHZ7oh7BNQVFETvGgP2rYddZZfWmWry2ts ++69tmdvvU1cmjpTOCavzPYHL/QJ+Rvb3BBSYN922212xRVX2KRJk2zChAn20EMPuZesXqJStgpD SAWZyiRl3Lx582zKlCmucsuzQvlKZfuDDz5w5eG3335r8+fPtxdeeMHOPfdcN8EWomLOb4Ri/NiO fYUjMDk5OTZo0CD77rvvHIMHD3YV8PPPP9/y8/Pjpo+K+uWXX+72t3jxYhs2bJhdeeWV9thjj7nI CQ13pJXym+U82zznnE9zXQ2pjGMc2ffYsWOdEWSbiy66yKqrq906lBn8rBBG5IILLrAuXbqYdHqF IeR+fPXVV3bJJZc4g8R7+4033nC9eMhHNBrQkHveeec5g09+Ih+y/quvvur2Q6MueYU88vjjj7t3 /ahRoyLHwbR9//33kfwJHJNjvPXWW3GjhDRIdO3a1e2P9WlEIQ08KzQ28gyQb84++2y3vKCgwN58 8023nOesOY0bN87t9/XXX3d1jk8//dTOOeecSMOEn/UcY0vepa7C8yKdXskQCpEcaWUImZBk4sSJ rvXNdxONR+fOnd0PKZ7phnDU4jL3EttYtdtF8Pz3IxeV2d76/ZHvf1u4wYbMWWs5hZtt0rJN1mfK ahu7ZKMtLNlmM4Pvvpt5Iuo3ePYam15QYQtYtnKzDZ27zgYF+yAKSVrmBn/5jnUHBdtNXV4e7KfS 7XfA9OKEDCEVW/6nUjpt2jT3siVK4CPAtKBSYSAS4l/u/HQIFVIqhJKUjeK5GTNmjF166aXOtHnx P+Ue0TfKPUxWt27dIt0x6XJHhbtXr17uGcNI3nnnnXb11Vc7UxVtCKNVXFzsjjlgwIBmu+QNGTLE pYNnFbEulXWOjVmbPXu26+afl5cX2eann35ylWMigPHE/igPMAHsE/iOivuIESPcOizDaF511VXO /MoQnn5hCGmwo+EOY0bXSETeokHhxRdfdF0pyZu8xyn//XKMGveNigd5FHNIgy+NANGGMNZx6SFE gzH/xxNdidknDST+2SCafsMNN1jHjh1dYwsNFqTPR9vZhig36YnXDZT8yLndeuutzsj67TgO++NY fE+jJs8cz4MMYftIhlCI5Ei7LqNUdqi8UDmg8kH3DP7+4x//cIU4hTIVEiou2dBldNmG7e5lOiYw huHvv5lW5EzgqMAYTltR4dapqd0XtLQfsLLK3bZqU42L9tXu3e++o7tp/xnF9tO8UqsJoot79+0P ltXbvvoDtmPPPsst3mr7glZ60rIvMJpsjyncWlPntmdd9leyeYd9G2cMozeEVE7p1uO71QBRCipy VB55udKFh5frli1bIve/rKzMGULGjkpSNooy8LfffrMnn3zSFc5ehYWFrtwj+rBgwQIXlQsbRvTs s8+6bqRE6qjYUhGmPCYS0pwh5AVAhI8Ksa/gxxLPLZV6jGN4bBSVbCr1RPVo1KOLqj8W3fR69uzp ygKWxRPRF4wrER0vKtmU/0RiEJEpygj2c/fdd8sQtoMwYxh1jFl0wx3deInGUbF4+umnXcQ33A2T RgrysDeJdB8lf9KIQP6JZwjJd+Qp8odviIgn8jwNEj/++GPkO4zfU0895cwa3Z2JLkcfi4g73Zwr Kytj7pfn4vbbb3fPlzeSpIsIPWbWj3nlfMijvhFEhvD0S4ZQiORIW0NIYYrR48XDXypIdCukEpBN hrBk804XCfyumXF9RPvYB0YPc7g8MJH1QYVs+fpqZ+pYjplbUbbd5q7e6szdjCBqSESRddiWrqdz Vm1piBAG6/w0b12wfrXVBy/0GYUVNmT2WltaWmUHguVTl1e0aAgx7ph6IhZ0/yFfYBJ5ebIOlT1e sj4awTaMQeGlT7RCkrJRlIEYOj/eCWGuiG7QrY1ng14UNJxgDMOi1wQV3+gICg1q8QwhlVu68/Hc +e6m8USaMI2MuQpPJEMlmsgd5XNYP/zwg+teRwUdU9pchJI0ElWJjiJiLKKNHyaDMZUyhKdfvsso ZXc4DxAR5j736dPH3R8acJ944okmDQcYJd7dYdOPiDgSVYtnCHl30AXz7bffbnFCGfIwzwZRdi/f kIHhw1CSf3v06BFJG40nTFjH934sbLSoLNGwyX7CaeBZ5Jx81NCLxhEZwvaRDKEQySFDmPaGcIfV BVG8cJdPD903+d4bwlmBoeN79lUfRPXWBGaysKzGQSSwOogS/hAYuynLy23x2ior3LjddgRRRW8I GUPo/s/fGOy7xLbU7HHjFAs3NuwDc+rTSpfUlgwhlblwlIMXP62zmMSwampq3Mue+0o0INFZ5CTp TFP0z05gtjB5PBtEDinzKAdpbIk2hDw7sQwh0ZJ4hpDCn8gHjTXh545nmMifh7FRpAuDR5e8sBng +WUf0YaQSjeTRpFWzAHrYSTC+yXaR7oYDx7LEL7yyisyhGmk6J+doGGPaBj3DhNIN0oaDjBw0YYQ I5mMIaSrMGYsvB35LzofcWzyD4Zw9OjRTfbx+eefO0NIHqSrKw0gvId4X5HH6MpKDxa2J6+H900v Fkwj+T7aEDLkQYYwvSRDKERyyBCmuSFcvqHaReWiJ3rhpyeqdu51M456QzixcZ3Vm3a4iGBVYACZ iAYwd6Vbd9mCNdtcF9A9+/Zb+fbdbgxiLENIt9CtwXZ1++oj+/D7yVtbGRjCohYNIRGL8JTzjC2k m6ivyPFiZdIJxnfQBY6Kq356QspmeUOIcaIbJRVlP/GSV7wIIWOsWmsI2ReRHcb5hkWEhWi+H7NN BJDoCxFC/g8bQirM7D/aEHpxHqSXCUeobFP5Do8HZ7IPIoSU+dG9Ayj3ZQjTR2FDyLuXbqJMrMKk MpT7iPdyrAghdYPWGkIqKIxNpKtmeF88H+SpcD5ighsfISTPefGe4dnAEJJ+Glno2uq3451E4yUz nVL/CC8DzoPKkp9VNGwIx48fL0OYZpIhFCI5ZAjT3BCOXtxg0jbX1AYm8MSELvw8hB/TF20IF62p dBHC8Y2fieZVVNe67qH8XEVN7V4b3NgFlUlnog3h+CUb3TYYSCKI3zdGJ+liyuymTFyTSJdRZm9j f15UJHjxM0sgL9Uvv/zSVSbeeecd13IrSdkuykAiHYxpwjgR9aMLaVjM2kg0g4mZwmIcIJH2aOMX zxBSfhIZfOCBB06aOp/nlpeDh2eaSjgVYqIr4bGGPPNEiIiW0P2UKf3DhtFHV3jOOWZ4v0C6MKb0 HmDGSi8ah9iOSGNYMoTtJ28IMXU04mH8whMIIT8BC/conHf9xEh0HQ2rOUPIZGTki1gzgEbnI47F uETyJzPoepEX6RJKtJrfHiQv7/fj5YNtSO+HH37oZjv1v5kY3i/Phje5nJdvtGQ7usgy8VF0I4wM YftJhlCI5JAhTHNDCHTtxPzVBVG9ovIa27Btl3uh1ezeZz/PKz3JEGLcmEyGiWOYHAYTyHK6lK4P TB4VMCaeWbd1p4sWsmxpYBbHNJpPTB8zkNK1lOPu3LPPmcmdgTlkbOLIRRsSMoS0qPrfH+Plyf3z Xd+YbpxKJN2B9OO9ktQgykCMHlFBno1YIsLBDKJ0dfMmj8k0qJgyyUV0l+t4hpDKM5XcTz75JOFu 2nTF4xn2ZpTKNpPGYFCJ7jFWkLKbGUe9iGRSqWdCqXii3GA732UciFpyLMxiWDKE7SeMD3mNLsJE 0sJDAsL6+uuv3T33P2GCEXv++efdONjo3/trzhDSGMAyPxFNS6JSw7NBtM+PwyVfcly6e/Ju8g0n /r3Dc8DzRgNluCEjLPLju+++G/npF8S5Uz8hwhi9nQxh+0mGUIjkSOtZRqlo0ELMX2abo0CnNTvb DGG/aUU2OzBzdO/ErG3bWWcrA6P3S26pW85so2zPDKJ+m+Hz1zvzuLVmj22q3u0mjPl6SpH7flXw /ZYg4og5nB8Yv7LKXVa6Zac7Tn5ptdtXzsqGiWMwhUQKt+7YExjIXS6K2NLPTvDS5UeIuU9UFHnR UulkJjnfbYeKH8vpCsSPCHuo5DU3G6Ekncmisk2Eje6adP8MPxtE2KgYU/n0sxsysyhRCspMnrVY hXm8SWUoN5kyvzWz+hIduuuuu9xMo71793ZpIspPlzwq/UR/iBxRcf7mm2/ss88+c8895XdzPztB xNFPOsU+KfPZx80333zSTwHIELafKLuZ6ZZumTT4kVfDeZTGPowY95qZZclfffv2jYzTo8EguvGh OUNIwyLmLpHftkX+Z1B4t9ANlG6kdHEmLUQyWU7XZfIZy4kkch4cn+7MzYnf+6QRkzxJ3mZ7jObw 4cNPWleGsP0kQyhEcqSdIeRBptWtud8gpDCn1ThbDGHkpyamFrluo4zv+zrGGL5o6PbZf3qxM3on mczQ9+y339T4++NYTGDT0jGjI4SYQrqQ0VWH33nCGPrxJ3xP1DcaWpE1y6iUraJSSlQk1rMBGEZE 2Udllq5wTKfPOCeevVhi/CENMNHjc6kg85xGj+lqSYyXYmIOjsmzTSWfmYS9+LFvlvPMAw15GMWW opB03+PcieCwbyaw8ecbFuUlXVfD48Sk0yMMIdedxopY+ZPGB/KZ/x1JTD55gHxCpDrWOFYi3uSX 6J+UYB+YfiaE4Z4nKtZlDCzHJJ2Mc+Sd4iOCGFYmMWI5P43Be6q5xgovzoufyKARBjNIF1Oi2LF6 uBAZ5Zw0FOL0S4ZQiORIO0NIYY3ZoztKvEoRLwkK2mwzhOlOtCGk9Zh7ROt/+CcmJEmKrehZRpsT zxPPFZXs0z0ZE1FKyup4v1vIctLV3O8axhLnxH5B5UX6KXqW0ZZEviQfhH9G5XTJ56NY3UB9Pov+ +YxExDmxrYY6pKdkCIVIjrQzhK0pZMOGkJdOJhnAM9EQToljCCVJSkytMYSSdLrVWkMoSadbMoRC JEfGG0LGH9DVhHEmmWQAzzRD2HfKapu3pMCNcWK8B5NPMI6ita2vkpTNkiGU0lkyhFK6S4ZQiOTI eEPI2BQmIWGsSSYZwDPNEP40e3UQqV3mJgVKdAIASZKaSoZQSmfJEErpLhlCIZIj4w0hkzBwEkQJ +YFkXliZZAQz3RAOnFFso3NXW27ecncvmCBAhlCSkpMMoZTOkiGU0l0yhEIkxxlhCP2JEClkhjvG FIrTAzMUrlq1yplx7oMMoSQlLxlCKZ0lQyilu2QIhUiOtDOErYXjYQqB7qNMMiNOL4zjDN8D/iZz L4XIdnx5lklpFtmDL+czKc0iuwjXCYUQrSNtDCERPyGEEEIIIYQQp5e0MISSJEmSJEmSJElS+kqG UJIkSZIkSZIkKUslQyhJkiRJkiRJkpSlkiGUJEmSJEmSJEnKUskQSpIkSZIkSZIkZalkCCVJkiRJ kiRJkrJUMoSSJEmSJEmSJElZKhlCSZIkSZIkSZKkLJUMoSRJkiRJkiRJUpZKhlCSJEmSJEmSJClL JUMoSZIkSZIkSZKUpZIhlCRJkiRJkiRJylLJEEqSJEmSJEmSJGWpZAglSZIkSZIkSZKyVDKEkiRJ kiRJkiRJWSoZQkmSJEmSJEmSpCyVDKEkSZIkSZIkSVKWSoZQkiRJkiRJkiQpS9UmhnD37t22ceNG W7NmjRBCCCGEEEKI08jatWtt06ZNVltb26J3S7kh3LFjh5WUlFhVVZVt377dampqhBBCCCGEEEKc RrZt22br1q1zwbrTagiLioqcKayvrxdCCCGEEEII0U5UV1e7iOFpNYRLly7NqIskhBBCCCGEEGci RAfxZzKEQgghhBBCCJFlMIZQhlAIIYQQQgghshAZQiGEEEIIIYTIUmQIhRBCCCGEECJLkSEUQggh hBBCiCxFhlAIIYQQQgghshQZwmbYt2+f5ebm2qJFi9z/rd22oKDAbV9eXp5W5yWEEEIIIYQQkNaG sKyszP1IIqxdu9ZqampabcyaY+/evbZr1y7bs2dPzOWlpaV2wQUX2C233OLWjbUtxEpTXV2dPfvs s3bJJZfYjBkz2vQmpoLKykp3jTmf8PdLliyxkSNHuoyS7ueQajhn7mOqr3Pfvn2tR48eju3bt6c8 3eTH8ePH24IFC5p8T37+7LPP3HF/+umnJnma/3/77Te37PPPP7f169cnfDy2HTVqlMsrqT6X0w3P 6oQJE0563ps7d367J5XlUvg+ch8WLlzoru2mTZtSfox4kPcpF0/1vDZv3uzKlfBzxPWiTN+2bVvc Y8d77khPvDL3VBg7dqy7zonsl3u+bt26SEPf1q1b3fmUlJTYxo0bkyozuNapLmMpawYOHOj+pnK/ qcK/Q+Ndc75fvny5K8ui1/HPXXP7p0GWd1f0O00IIcTJpK0h5AXwj3/8wzp06BDh+uuvt169etnO nTtTcvK8aJ5++mlXEY61nJf+ddddZ/fee+9JFUQqAC+//LJ17Ngx5oucFzzLbrjhBps9e/ZpuZmn Qr9+/eyss86yd999t8nLt3///vb4449bdXV12p9DKuEadOrUyVUoUrlf8u7w4cOtc+fOdvXVV7sK c1uk/fXXXz/pXmIIuZ/33Xefa6wIV6ioxFIp7tOnj8sH0WayOcjr7O/rr79O+bmcbj788MOTrk1z YHbeeustV1akMh3ct59//tmuuuoqVwb9/e9/tyuvvNKKi4tTepx4UDZ++eWXp2RSuIbvv/++Pfjg g00q5ePGjXPlOWVv9P79czdt2rS415vtKioqUnauHPO5555z55uIISwqKnLvpm+//dblffLM2Wef 7Z7nSy+91OUHzGGix+fZo5EI85aqcwLeUeSZVatWpXS/qWLOnDn29ttvN5vHBg0a5J7H6PfvsmXL 3LbNPXfkYcq61jRuCSFEtpL2hpDKadeuXd0Lm/+J2E2ZMiUlJ//dd9+5iknv3r1jLudlT5QyVss8 lQJetjfddFPcFxots2yf7i2UvGwffvhhdy245lVVVZFlAwYMiBjCRKMmZwpcC4xyW+x78eLFbWYI gQpzvEpzc6aHvHzRRRe1yhD6aLg3hKmOqp4OfJpbawhXr17tehAQyUhlegoLC+2cc86xjz/+2LZs 2eKeP8o9DFEqjxOPH374wT33p2IIidBgZidNmtTkexrKKGswT0TUorfjufv1119j7hMjwLaxtksW 3jXPP/98xBBSzsUr61iOSbnzzjud0fCG8P7773fPG0b2iiuucEaEHi2JHJ990LiIeU7VOQF5hQYF DCHpTrfnkgao5t6fQBQ5VjlG+cRzt2LFirjb7tixI3KP2vtchRAi3Ul7Q0iliNZWXmYvvfSSM4W0 nLNOt27d7JprrokYxRdffDHSMstLgK5vtE5/8MEHdvPNN9u5557rIifz58+3xx57zFXIqVzw95FH HnERFV4iRHH4n+/g1VdfjbQcs9833njDVQjYln1yDAwVFSDWIarEZ7Z98skn3RjE8Llx/HvuuSdS KSJqwzE5R1qJH3roIXvnnXec4eS8WB6uoFBBpPKNoU200tEc3D8qDj/++KOLaJI+vwxDyLV76qmn XCs4UdqcnJzIciodVBwxERdffLF99dVXrvLKdcLIc4/Cre5ffPGFi/KS8TDKQ4YMccfmWtx1112u Yp1odzAMN10c6ZZLHiCS69OOqe3SpYtdeOGFdt5557l76PMG15n7T5SOSgXbknfo+sUy9sm9C+cN 1vct7aSP+0QF7pNPPnHH4Py5HyzjOE888YQ7LlDRjK6MkSdaYwhZj0pndAWI68w1Hjp0qPv8/fff u/sB33zzTcxr2VaG8NFHH3X3gOsZ3TKfn59vzzzzTORZ7d69e8INJURcwgaByAyRTM4N5s6dG+lN QB786KOPIvvm+pDHMCYsv/XWW23WrFmR60L+9feafcSKnsaC547yyB+X8oD9sK3fN9ELnpvzzz/f PefklUSeV64nz//ll18e9xqRvymHyHOUPzybpIX8wfGJvvA8kTaer2HDhkUqxix74IEHXNlF/qSM 8s/GzJkz3XlwbPIB++Yz2/tjc/18+UX5SxqiDRRpIJ+RH8INTKSB9HD/2BZT4M85/NxRzvjy03c7 5VryvLKc47Mcw0yeBfZJ+cVyTBnXO/zccT9ee+01d86cO/umDPGGkGcc2P7222+PaTYoK31DEdt5 Q8jz5tehBwBlgu8ZQrdwGh3Jm+z7n//8Z8TYsx/uBetzzTknyn+ML8tJA/vmmeFdyP2ga2v4OmNC /fuIdwbXwedtPlMOXnvttW57oq+JNnbwrsS8+3cs+c2bM8pKInRcZ47LfRkxYkSTfDB69Gh3vTlH 8hLnwLPL+5+ygm39+9PnMb/9vHnzIuUYz7N/prhflNU+H/jnLtwbgig695NtSXN0GUvkkPKAfEB5 QDp9WUK5zjOMQff5Ozzkg14WLOd6sD35RXMECCHOBNLeEFLRoRWeKJ2vbGIIWX7bbbe5yiIVCV7u rMsLgJcKL2oqbBTqvIx8RY+XBy/UN998070MWI7h4eXH+CqMGS9M9kkFluU33nhj5EVFBYOKhj8e LzleHrz4vGGgJR8DwguPSkC4+xPnwj45jxdeeMG9cPjMsX3lgs9UEDgGL0wqOeHKNZUEX+lJRUs5 FRiuAcegMoLB8MswhByLigRRUc6L9PBipKLHCxmIaDCOjGvds2dPd38wxpge/8Jk/3xmjBbLMbWs /8svv7j9cU+ouPB/IvmDigGVS17wVPao+PvoMRVqlvEyxyRyD6mEcI2B43LtqQBzfK6lrxiQn1eu XOmWU5ni3Li3vnLOOphdrgv5CXNHGhiXR4WFijjmjUodFV4qYnQJC1eWWmsIyXesP3jw4Cbf04LO czJmzBj3mbRzXI5Phe10GkKMOeaA8W5cAypLHJ9KJPeV54m8yz3hM89RouVA2ABSQSSvcD1pHCH/ 8dyTvyhbyAe+Wzl5kPOhIspyGgHofkllmYo6lXHKFe43FVLuaSKGkGPzPEycONHlM+4z+cR36SSP USElbRhWng1MIc9GS+dMoxSmgfIr3jqct+9BQd7imvOsch4YEcwFDWE8F+QZ1ps+fbrblr98R57G qJOHeTa4tlwTvvdRL/IS5+WfYRq9OA+eC86fxipMR3QUkHRcdtllrmwJf09knLTQc4Lzw+SR56Kf OxqNOC7lJdeS+0G6uJ/cI86R5ZyfH09GA8jkyZNd+cH9oGz27woMDGXb3Xff7Sb6Iu00TvFe8YaQ sproH/vm3UBeib7ulFmUf76rYixDSB6gPOWe82xwrbgflBEs4zng/vLsc3yuMdef68H5c419w0Fe Xp47LxrKOF/eGTw73txjnEg35RHnhNkPG0LKNdJCGcizybqJDGHwzx33mucVuJ+cC8tIO2ac/XLf MH28s3yjKHAtuVdcc9LJPhiewblxL3nHYszCeSxs/HiWOS+uTfj9y3n67tT+uQtHznn2KWe4Dpw7 6fPLuG+kif2StyhHOC+eg3C5TsMmy7lPlA++hwznjBklzRyTc0xl92UhhGgvMmIMIS8N36JH4c1L knWotBIZoQJI5YeKHy8PPyGCN4REcniBUdlhXAXLqXRRkWI50QpeIuHWeNbhhUDrftgQki7W5Rx4 ydPlhZcX3/l12JaXHlGiaEPIy51jvvLKKy49mCNMHxUQtvGGkDTzouHYnDMvPb8PX2mi0p2KlxGG FnPFNaOSzgvPV6ipZHJduRZ8Jh2cN0aK/0k7Ropl/poTHeUaYFapfFMRYjnd0Kg8UhnkXFmPCjMR R6IO7IdzT6RLMBUp9sX19JUj7g0VQ+4DlQVMrK9g8OKmcsSxvSHk5c9y8gLmhcptOP+RNiqA0abK VxzIj76y4Se7oMLL9aG1nO9JC5U48gLH8ftorSEEKq0YXe4546i4blSseDbIE+H0sS6VndNpCKno +oosFTWeHfI4959rRQWN+wysy/PdUjQ4EUN4xx132HvvveeuJWkB1uNcaMDgPpJfOS7GmeeJcWxU GnmOfI8D8gWV19Z2GaXS6SM6HiJu5E+ug++CyHOGyWqp655/Nsi/8dbxhpByxOd/39jBM8w5cq6c MxVxyinKSNLB8anMYh7IQ1RyiciFGywwjDwT0deB8iC8b8wl5/Tpp582WQ/jy32hvPXfkTYiZXxP GngmKR94JqOfOxppYp035S5lRHgbD88X94HzJW1E+TCWnNfUqVOdkSK94d4eLPPPC/iIIdtx/uFr Ql6mnObZ990cYxlCri3rka/Ik76Hhc/75GWuoe854stN8nCs/E9DBo0K3CvKKBqY/ARrPAtE2MLD Gvx7zBtCb4pJP+8MXzYl8txhin03WvIV5siXY+yPdzHpwqjzriOdfh/cX8x/+NkIT1REec/7Ld6z 5rvn8ixER6AxorGeuzDkUe5DuIymvkA6/Zh4yk8MPo15vlynYcu///ie9yHvMm8IuYY89+Rhn39a up5CCJHuZIQhpMJBBZjWSV6iFMJUvH1XQyqbVL54+dCViJdl2BCGX1JhfAtmvFZ7P8to2BB6eCFw zHgvNF9JjjaEvMA5pp+sxJs+zAEvdW8IMYrsg5cP+4h+qVIhpNX7VF9G7IPrx7Wi9Zb0UZH33ZKo AHJN/YyAVMR4EdPyT6sqaQ23zhJdZH3fokrkBjNEOnmxE0nlvDhvKmy8sKm0U1kGrhkt+C2lmxc5 lR0q+rEyNaYmXPEhkkNrNybWG0JvVP29wlxG5z9vRKLzJhUH7k2sigr5Mny/uKf+mvjvkjGEpI8G D9KNEScCyD3jGoYnWmovQ0iU2x+PiiJ5A0PAc8ZzhAn095kGCG/qWioHMBA03sQyhBybBiFMOOaO danEcY8pB4h+xcpjNDpwr0gXecMfj3S11hBitqLLNCI6fvyWPw+6DjdXAfZwL7nPpDXeOt4QRk9E wvXw0S6eaX/OfEd3Yq4ZDTOkAyPBOhiwaEPIukRHotOKacHM+P0CDR7cY78OkR7uRXRUnLzuu3qS bzEY5ONwdNE/d96kR+MNYTjqA5RPlDWcB/mMcoZ0UraTBsoC8kGs3gf+eaFh0FfwYxkR0swzGx4C EC9CiImgjCciReSMss5fL645x/MNm/5dFasBgGtDurlubMu145p5Q0hepRyI9Rz5LqO+LPLPQ7xr G31NuA/hrsKcD+dF3qPBg+g6+Yi0kw6eJRoZ/PpcQ44fb4wgEdRTMYQ8d601hBhqHw3nO3q5UL/w DX+U6zwXfjn74H3nGyAoFzkueYu8RlnUVuPAhRDidJIRXUZ5cdJy618sLKO7DxUDzAYGgtZGCmlf 8Q4bwniV20QNIS+AUzGEvqsW0JLOMTk258F+qDjSUo4584YQExk2hOFrRgswn4lwnOqMq1SMMdK8 6ImOUDmkAuOjZRhCXnz+hegNIREWXzkL/9yAHzfkf06BCAmGkwgWFRkqAXxPBY5jYSBZl3vmSWQS AD+pD8Y5VqbG1ITH0JEODCHbeUPojXr0pCg+j5E+ug7FM4TkvehjU1HBnITHWdKQET3JhJ9UpjU/ JUBli2eCCiB5m0YSKol0dw6nsSVDSCWGSnOsvENepoU8XiNKLPz1Y7yRf06oNJOvMAeMTaVCTHey 8H1OZDwd6aeCRvcyX1kneh42k9xP8iJ5gXT4LmBEMojMkMc4VvjYnCf3gHMNGxKuS2sMIfmJ8iH6 Jzc4V/KnNw/eyPLstDRRC8fmnlK2xFvXG8LoSBrXBPPLs8wzFn3OXBNMAcaOcpvvqfRj4MJlHKaR inN0HsH0EzmjEhzed7h3BdFF9hc9top7RHSLvED6wHdtDffA4LkLG5HofVDmRBs7/zxRvvCu4H5j aL0hxMwRSed+xcpjPC++q3ssI8L5cd2ImIXPNZYhpEylrKF88d3k6bIcvl7gI8V+Uhmi/9HPFfeS POm7OBNhDEcIMeMQK+ocnlSGz8kYQky9/w5Tzb0hX/FM827k3cq5cD84z3B3VK4h+T1eow9mizwe 7x3WnCHkuOyb5zzeOcQzhLzr/PXiXHhf8b0v18P30htCvw+2411GFJq8wDst/AySTpbRyCSjKITI JDLCEEZPtc4yWpepGPDCpICmgsOLsjWGkIoLy6n4YNoY58DLnugVhTovPfbJS5XlfIdpY1vSxPfA hBcs96aV6BpdlEgL0TZeqixnG14UHJNIBuNdaBWm4sx4QSpsiRhColy8jDFqpzqGkMH4VNDYD62l VDQxGlSmOBcMIenDAJI+KlY+AkaFAyOL4WFdKoCkiXviX+BUFPiOlzAvf19J5P6wHteI+8f6VHgw 96ShpXT7sXNcN9+dh79cY28iMGy+0usr2BwjEUMIzGxLRY00h7sEx6o4eIiIUfEkf7IN23JcxrqG KzV+PaJ9pCkRA0L+wnyQdhpJuE+Y7fC4QvZDHqYSyTn7MbHh/VA59QbNXw+/jDRyXan48xwk8tuf /voxphdjRF4gH3Pf2Tf3FINA5c5PnkRFubkZAsNwDzhXKlhcN47jDSFgukgn/3NPadDAPHMcJpYi j3GuLPfdvclj5BfyJWnle6IeGMTWGEIMPZVODBRp8GaBcoLvuY7kPyJFPPNErhLpJoupoOwhAkha SR/liq9kekMYq3JPxJTrTZnD9SdNlBmcH2khIkJjCedI+jHN0YbQzwCJ0eLYPo/Q8MZ9pSzkPvvr 5o0WeRQjTJfL6HTxHeWWL2vAd8EL/yYhzx3lInkz/Nz554YylXSEu/nTEMPzRHpZn2tFPvCGkO9J t//tT/IG+Y//o2cZjWVE/FjUcNdsX46Rf4iWcc95Lrnvvjs/50gZxTuGz+yPe8B63gjxHebC98Tw z4h/rihrfIMGjUHeELIt+YPymJ4S/n54k5QKQ8g18LPc8k4gr5BvuD6+hwOfyXO8J6INYazeNR7u GfuIzmPAubBfjBpjP6PLMfIb5QA9VcLPnb8nfMbAYubIM/73hmmoo07Bs8ExeK+RX3neWjKEnIef z4B7w196qYR7lnCPyWc0CIQnZxNCiHQnIw0hULD7WduouPBiYd1YhjA8K1sYjCIvTF5kfuY6tiXS EP79Qw8vYp8WWtp50VPB8cs5Di9PP1FMGI5B5YTt/GyLfhnniRklzb5LKS8sbwippIavGZXbVEwq w/GoRNEyHX4Z0+WO68l9xRB684nBwABSqeUlzAsa48NyumtR2WC9cBc81mEZ6eXcwi91zonzo4WW 6BIVQa5drFb8WGBOiTCwPYaLfZF2lhEpIFLEy518wPgh3+2QTB+O3PqKV7g1HPjMtcdYsn8/sQ/7 IKoRK0LIvhgnRSUDw0uFivsUnQfJZ7TsU2HivOP9Fmb0M0HeoZWeyifRSwyhj+ZxT7g3HJfryPnz PxXWcKSJ/MMzw/WiIhxdyaXi7q8dXWZbikL73yHkWlF5Y59+IhdfyBDV4zvOmfyAIaXylch9ZsIK nj3OnQop5+wNNpVe7i37JQ8RdaJy7rsxUxnmPKnUsZwuoZw737M9+Zt7Rd4mH2EiuB+JGkLWI39R jrBvztNXgEk314RygmvJPSHCk8h+/Uyj5FPMMOfHNfORyHgRQqCSzv3A7HKtyQOcM5Vb7hV5l/1y zphDnqHoijsGkutCmcg4RT9pkZ9dle3ZL/mNfftxxJgN8k70b99xnXhewt31ACNDvghHWHnu2Af5 iHsWnqWU86acodwiXVxjzolykHPwEwyxnHLJG0Kupx8P7RtLuB+UcT7SFi9C6H+Wh/OOfha8ISRP co8p/8hHGA2/L286SDeGjjzMuuEoJ8bG5xUaQHzDFoaIPMm5Ysi4V2FDiIEkbeQ/GknYN/mXZbEM Idc/3vjM6LKGe8995r6RB9mX39a/fzkPnwdiGcJYvWs8NJJg6ng+fR7zjTY05JC/yPO+HOP8/HPp 8yHXleeOHkP+OJhk1qcc8LPocr99rwG+51zIJ+QZIt70fInV84N87Q0h6SI/sj73kfvB8cPGj2eP fWII49U7hBAiHUlbQwi09vsuQLGW08rKS4fZ0/if9Ym6cVK8HKgo07Lro3rR8ALgpURrOOuxPdtS qPM5GtISbsnmpeQH1Pvj8MIiDbG29zOw0VpJZIgXFy2r/oVNmnlpsS4VHNJHhYkXZbj7CRUk1mEf p/KzE5wr5+QnjPHQykklhnNlGS95Ii6kl4pL+HqSRowVlX/ug//Nq/D+MHh+PE10GngR0z2MyhoR We5jopVxoNJDhIy0cR/DeYUIAPmDZVxH303IV9K8meYzrdTR+ZL7QaMBaQ/fA79+vNn6uK5EiP01 ifdj4lxfGh/CeaMlOCeOS9q4T2zvJ3ngunE/o/Md+Tq6UsYzyzmxfnT3O9/tiW05Vkv3g+vBfaNi xHXletMNM5wPuCZcS+4HkO5Eu8tyfKLw7Jc8T3SaBhQ/kQ95k+eI601UIHq/5DEqsuQx1qNc8OdE unhe2ZbKH5U49tfS2MYwXH+uMdcrPGkJ+Y18R7oZk9fa3yr0EU+2Jx9x7v5ec97co3i/S0jki+eB 8+L54H54Y0XFlnvPMv4S4Yu+X0ADCMuj8yfb0+jj901epxziWhIdI7oX3dWV9BKF8ePmwteOY4cn n+G8yXccN5y/PZwH2/j86Z9ryheuM9eKvEhkmnT782K/HJ/l5EHS4xvCiDKTr/y6NJL4PEaeoGtg uBt4OK2YWf+ssc+wgfXPB88YUWTuJY1W5IVwIxznQFr9fnwe5jpyrlxrGo24Vzyz4W25Pv5eU4b6 coz7xLb+ncW+OIdEZ3GmwQFDykQsXC8aM/y15i/Xl+/JA1wD8kF4sh/eBXzXXEQ8Oo+xLufGtY8u x3g+w89l+Lnz94rvfZkdJlx+c384J8oDypXwe4D8ES7XOR/yuo8kk0buH/eR8/a9W8LPBtecZzWR ni5CCJEupLUhFEIIkRnQUERkJ1bDTybjG7xS8ZuvmUJLk/sIIYQ4s5AhFEIIIUQEDCHdrxPpyi6E ECLzkSEUQgghhBBCiCxFhlAIIYQQQgghshQZQiGEEEIIIYTIUmQIhRBCCCGEECJLkSEUQgghhBBC iCxFhlAIIYQQQgghshQZQiGEEEIIIYTIUmQIhRBCCCGEECJLkSEUQgghhBBCiCxFhlAIIYQQQggh shQZQiGEEEIIIYTIUmQIk2T37t22ZcsWq6qqsr1792ZU2tuakpISW7Vqle3bt69Nj8P+o68937X1 cVOZ/uLiYlu5cmWT7ysrKy0nJ8emTZtmc+fOPekc165da1OnTnVwrVt7bwoLC097nq2rq7OFCxe6 ZybW8j179tisWbMi51xTU3Na0ycyg9LSUlu0aFFaP+M8v/Pnz3f5uLy8PG3TGYbruWzZMtu4cWNS 22/dutWWL1/unuP2PpfTzel636UzvMOmTJni3kn5+flJ7WPXrl22ZMkSl5faKp0VFRXuGNH5lPcS +T9Vx2npfUdeyc3Nde873ns7duxI+ljsKy8vr9VlDcckjafrXevf8Ykcb8WKFc5XnI50ZQL4DXxT vPyUKmQIk4AK9WuvvWb33HOPPfDAA9axY0errq4+LcfmQZkxY0bK9kfB9eKLL9qrr75qZWVl7jsK zeeee87efvvtpIzD0KFD3T7bunLAC+iNN96IPCRk5p49e9rAgQPb9LipgoK8R48e9vLLLzf5ft26 dfb888/b7bffbrfddpsrDMLLR4wYYY8++qhdddVV1r1791Yd8/PPP7euXbuetM+2hufj8ccft3Hj xsVcvn37dpfn7r77bnfe0SY5FUyePNkWL17c5ud6OsEgjR071pmQVOyP8oD88eSTT7qKk/8eg8N3 O3fuPO3nGObHH390eSRdG+Go7DzzzDPuuX3kkUdchS8d0rV69WobPXp03DKZ+/7666/bV199ddIy Kujj///23sPbiir79/0j3nj3jffeHffd+173r4PadjcIiKBiAETBiBGl1bZtTBgxKwbMKAIKShAQ EANig2SQpIBkJAclSM6ZQ3K9+qzDPK5Tp/betffZh+D+zjG+A86uqlVrzTXnXPO71qqqoUOz2tjX X3/t7eNEjYOFgvYTZ2irjXcQWfrshRdeKMiu3n77bR/DTwcyTFwdPnx40f2YGMSYdNlll7nnn3++ oDJ+/vln17p1a/fFF18UtW4hhg0b5m666aYqEx/opJhxBT9gHGNSKOk4tkLOdfPNN7smTZp4Gyz0 XpR12223uZ49e+Z1HXl7s2bNKsX5YmD16tU+HjCmh78TRy644AI/oZ3tevIicoX333+/pCdZQmzY sMHdeuutPobX5H1ECPPE0qVLXePGjX3gIogQYBhICp1ZzQc4B8naXXfdVbQyCSbnn3++q1Onjm8L 9+jWrZv/+4orrsgrQJrz9u7d291xxx01PkBC/KijzSSRjEFEn3nmmRq9bzH7E3KPHYW/o3Nm7z75 5BPfvjh5YyaVAYcE7PXXX8/rni+99JLXD2WeyGBLfW+55RY3ePDgirbHdUH/sTJ65ZVX+kmXYuua JL1r164nrM0nAiTqxCMG4WKUh89ee+21rnbt2q5du3YViSMDPDHhZK/ckvRYXDoVkwWI86WXXuon H0hwT/TESyZ89NFHrkWLFhnrgz6pMysN8WOTJ0/2iX42G2OiEls81XfLkPA0aNDA2zJkHRvq1KmT /5sxvZDx7pVXXnF33nnnaUEIu3fv7klIPFkvhl5JWpnIfPbZZwsqg9jy+eef5yQMhcD6ioQaP4iv PrFTh4nWYsUUdo5B9CZOnJhx1xLtHTNmjLv88ssLWp20ci1m5zu2EZ+YYCvW2GHIpGPuV6tWLb+i nm0nF7+TJxBTilmv0xnYE77BToSavI8IYZ5gBrV58+buu+++q/iNpIkZVv7PgMIqCDM+/Pvcc8/5 a2w5n6DJ4ExSzsxiGPzQY//+/f0xiB8Dlg0y6IxjJNUkzIMGDfKw63EiSCllP/30037lyGZAs8EI ITNF999/v68fZI6/w8QLQ2R1CULBCmCYGGJEAwcO9PWGDHbu3LkSISQJIVmgXrQr3v+ch64GDBiQ 10CVixBSb7avsGrIb/xL4A/vy7YNCD39xIpjeH/qTVtpe9++fX0Zn332WdY6QnyY4WRGPn6Me40f P97rlH7DwTmXbRRJZREUkwih2dk999xTECFkdRtd0x/oMJwtRieQVNrKTC/JYNokaeXKlb497du3 99czMFjZRgjpA5ISkoYhQ4ZUSaLwq6uuuqoKIaQO2A3JF2WjO2w1V52wAdqAr1x44YVeZ/yf6201 w+wE28QWsFVsOq1OKYc+RLfoFBsJr2eWGEyYMMHf49VXX62wQ2wW20dnL7/8srcP0wkrMthAhw4d fF/gY7a1iAGCCYOnnnrKNWzY0H344Ye+XWwBsoEW3WfzuyQQx6677jpXv359d9FFF1XMcOdDCElu OJ/4hT6JG6x623EmQObNm1fxN0kTNkcfcz/aYe3F79CN+ROEkPhH+bSLZD7cYobumFTAvrAT+t5i s9moDaxMfFFGtpWzEOge+7Y+pN5hX+FTxBEIITGQdqSZ2MBW6Cfa/uabb/p6WyLJcdqHfrgn9e3V q5ffxRGWwbXolRVw7AiwGkTyRT0eeughv6OAOvJ3uK2PLbi0C4QrFcQdbOy1117zY8QHH3zgr4U4 Wt1oN/bOtdQx1DVgDGIXBH2I35vPcj3JMFsMzUZZEQh9mmu5n9kv51c3YTdCSFylTiSp//73v71u QkJIfCa2okdsLlz5xA6wTXwP+8TWQkKI30EuqDfX55PE0T5W/UnUuZ4+D1dwyCPof+pO/bAv0wl9 j18wsYsdYoPmG+yioe9ZHW3atKnPE9BtuBODiUbGO9pOm228sz4lQSfG0SZ8KL7NEd0y/uZLCG0y AhvCF8Mx2vTNCiRtot3Yedo8wWIKfUVOhM+HZMUSbe6N7kL74v+LFi1y7733nu8L/CD0Z/qJnMzq hd5tvDNCSD+S/6GTMJ8zMIFEPhknhNQbvyT223gX+hb9SrkcYxxlNTItISSGM87QZsrFB+wYds6Y Q73wV9rG+JQmByAWWP7KSiD+jI0x7nHcCCHxmbiNTuIrqNi6xaK431hfMqZYrpl2ghLdUTZ9yLXo Ksy9ze8ok74mDoexkLhE26gzZeBrphP+TxwL/c7sM8mGiL2hnWEr5nfojPphi9QZnyInMp2wIBW2 i2vpL+qFb5JjVmdSriQJIUoksIL4AJYruDBohDPnSQpltoZgwNYEjJetFDgBgY3fCAAEJ8pq1KiR D4CUjfMze4ezcB0DF4MpxoMxMziQrBHQGQwwLhJA7kvCRMLNbBNJN9uVCHy59uMbIcRBOJ8AwUoK 9TNCyEBAkg7J474XX3yxX6U0o8eIzzvvPG+QLPXj9EYISSrYekrSSlvYJkFiHq6KESggoFyXz77x XIQQndAPd999t3dItpf26dOnwlFJdkgELOFA3+jUHMoCGHWjXwj6tCvbdkYCasuWLf3AE/7O/diW xPZibI6ZePSFraCzpLJqihDSJmyFttKXjz/+uLdN6kUf0ZfYopENgmSasgn+tAcCQDkMCpSBTxgh pGySEgIYpIMkJSwjEyFkMMXuaTPlQ1batm2bk7jRJuqFns4991y/xZt2E/Dt+UsSWepC/2AH/B/7 TxNY6RvKxnYg2vguPmo2Sb+jc/ycQRvbxB4ZbKkbx1jhYyDhesgEyQ/XMhBTFiSYNnMe5+B3DF60 A9upV6+ejxf8jT65J/XC18zv0BV+R5KRS1/0IbEJXVEGv+VDCIkH2Bh+gB1hY6xmUw51o/wuXbpU zBJb3KDO+C+6wiYpg9/Zms/KA9eTqJpPUgb/2lZWgK6IZxBKdIK9hVvISXToK/yeGMY5119/fc4d HtSTCTzsjj7EDmkXZIbjXI/+IQaUbf2RZjsWcYa4jX7xF7YzYoMkbRynDGIz8Yc4jR0RF2yrvOmQ /kUfxBj0hS2TaGI76BxdoB/qBbmy+9O3ZqMcs9/pa/6mrNDGIEGW0ECwuZYxjn4KiRM2ij2zFY8x Cf9FP4xJ+Bbl0pfmk7TZtm1iC9g6OkbvjH30U3VXII0QMg5QX8YA7Ad7M0KI7+JrxHx8mz7HVrAv xjRsC13iV1xDG4wQcg4+Q7s5DtlM43cGcgHKshyBuIDvWn9QD2wBfVE//m/jEf0d6pP4S6zBb0gk +Y0YjH3il/wNEbN7Q8C5HlskfyBGM97Rj+RstMN2pdB+7CyMv9UhhMQM8gT6BrIdHidW0gfYLjpF B0kTrkmgLGyXsuljdj6EOQNJuMUf7DO0L2ybGEYMpn70RTjeMi6yjY86QZLRN8fxDSOEpieALUMa wvplIoQk/+iCrcj0Fe2nnugY4kW98HXIh+VO+RBCJhDJe9AHdbBj2AnjL3UlDjEmnnPOOaketSAG 4qfYL7Zi8cIeE7F8ijGJY9gYbQzHes5Fl/xOzAiJk41B6JK20meW/+YCE5C26MG1+BR2ZcfJcak3 MYYxnHugH9MXds1EJDaITogPRnRDv6OPsAPGCPyOa7E7riEHpT9pf5j/QhDN74gn+A/n43fEFMgi toctEa/sOsonj8FuuYY61q1bt5JPFxIfS4oQ4qgYI52GgTCTl4+yGFgxmEwzlbZ8z6BtMxwMbhgG iR4dZjNgDOgYkTkyf4czSAQXCGQ424DBEZTj97WgafeknTg1xCTbrKoRQgIQdSEYkLAb2TKiypYh C6Kci1GTvGOUGCSGiX6YuWagMkKIwxJ0mMWy+5EIcNwGE9qNMxSbEDJbguPaNijaYkQeAkTQQp/U CR0RJDnfZt+plw326JPf6AtmUjPViXtAPEkKaB+JFzNN3JfAb3qw/kS3J5oQ0ne2QsMEAAMXAR+7 JCmzQGlblEmcrP3ZwEAVEgZmoUmM0KcRQmzXdEg/UXZon0mEkLZyHsHcdI8esfdwpSkXCPZxok4f sXrCMSubAZ5EK80D3Mz+0UYGL0smSHht9py2McCRbLNaFeoKu+R3SAXncX/0jW9QFjoPJ54I9AxK 4cwpq9r4ZvyFAvgdg2rc70iMspFoI4TYPESa+nG/fAghOsa3rJ6QVGyMWVbaSYIVEkL0Y4SQgRpS ZMkDM8IkUbbNzQih6ZKJNtrJoIrNEPPCZ0+I9cRQIyrYFzGYZMf0QL1yTQxSH/RMvdElfUOcJN6E 9kuMx87T7M4wYGf4OYkuZVEvbIA6YhPYQDixBwFAB5akmQ7xXfopLNf+DwHCpjP1PfZGe5LiCbZE /bJtLaPd9FFICEmYSSZtVtv6ijpyP/wZnVo9Ibwk2BYfGI/wKyuvGM+9GSHEb7ALYg1xiLhIMoYd MA6QH9g4wGQU9oztkPRCqBjvOMY5tMEIISu7lG/JIvejTWmfx8d2iSchQSAxNNsldttzqfYMmMVr Ygf1JCbZox/md1YWbcM+k1bYaBt2xdhl/ch56B37Ii7YdfgB97K6WVsLIYShj3GPOCGkPJJq81Hi RJoVfWwIQgzxsK2VJNphzmDAJtFV2EfEL/KBMHkPV0XxSRszuI5xg7JDQsj90B/n4V/4dRgvkggh 7WRSHn8Ixzv8l/GOmEg/mY2xOwXfz3fLKH2HrYa73SDI+AT+QD0YV6hLfNzMBmIB41Q8BlpMJ8ZQ Nsdpkz1GYkA/5vuhrsj36A/rI+wt7U4eYhjXhpP5YV9CZPE726Zqu7isPeTI6In64BthnonfERNC v8PH8DvKCcdmbJdjkE1rmxFC/M7sGvsJ20aMZNwMCSGxh75hUsBsjvwq/k6KfFByhJBABttGwTg8 DhzOkORSFgHLVu2SzjFCGCeNOAAztXQ8AQACBHBkVhxtJY6BgwGGYyQuJMIhIcT44gSCa0lqGXzt WsCKCDMd2QYiI4Q4JeSYMhgsw2d1GLgp34yV2TkSLwI3xk6bLKgYaTVCyDI7xznf6sVgG59Nzse5 wwCRjRDioCS0nIPDk+BaUsEx6kXbOU69CAjUzciIEUJbsUkLZrnoY1agGBQgiAQiAlK45B8mw0nl 1BQh5DqzKdpKu7kXKxK0F6JlfcX/kwbQJNBe7JO2M0nAYEPZ2IgRQhISO59BjnNCgp1ECAl0+ALJ UNhXzPymfWlHnIjY79gMiSDb4ew34gH3SrPVC2JCnTI99xL2cTyJIUmnXbQlrm/6HNJIUkDQx6+x TXQbDmqWyMRXuDL5HX2f7cUfRgjxX/qNemMz+RJCkjAbcFkdwfZJoNIQQvzX+hx7oD9IEKg3cYl+ N5+wxItJKmyByScGZ2szSSsxwPRjSXW+L+ZiUoe+scSNeluMDIkKNg0xymdiizhDAhX6BvZIMosN 0G5iHZMW+BVtom9t1cl0iG1kekYQcpbteLZ4gv4hHtlWUa3d4TZsyDhkyPyNY/QViauNKyTJdpw2 83IMYpORC8YwyAD2EpKPQmGEEFuxZ+WZtDNCiH6IYbYqB0i8iEnESPofPwrHO9oAIaRsVgHoG+zd bJAxBt3mep6UskjmGGuTxmxsHDuxLX6mI0sAqXfod/Z8cTiZgI7jxN1ghDC+GkR53Icx1H4jV8Ef QjJRXUKInplIjxNC+p68BD2zTTLtC1hoN/pihdl+w8fSEkL0AWEhnqBbfCgk0kygMnlFH+OX5HKW M1lcIuew87E3bCHMc5IIIfEAu7TcxcY7mwywcSN8fMD8Kh99s40/iRAy3tjEkuVU4cRMLhh5zfQM oa3qUX9skW3JcT9IIoTYM9cTU+jTpC3qmWCThbSNVUsmwq0fbPdWJr8jJjKuEAPNp+kL21Fg8SL0 OyabbCcEBB7/xxexE2w5iRBmW4VNIoTkJ+QFYSxicojfCt1JUXKEkC0cRgBRGoNNmAxmA+ezNYat LJlWiYwQhitB9juDNkQIR8TxDCReODUJs72Zyp5hCImTDbLxl8rY7C7nkpSHZYf7wzPV1wghdaDe zGyEhJCAAKmxhBYyhXETuJk1xpiZGbU60k4jhDZLTBIb1ovBPZ/tukmwOsYJoc3eAmyNVTh0SxCF fFNHm2Wn3WG9IGzWt0YI025LMBgRZDDgXwIIAYggFw4o1SGE6I4gE7Y1DUh8CHwWvJhxJMGhriRG tJeV1VAn2Gsuss5xfIuBABviOvyKpIGB1Qgh283sGnQSDmwA3yRoh6SHwEq9GFDDeoG0r+u2rYok bHFCSBIVboulv/GJNISQVQ8G9EwEwPqYiZn4JBLJic08xn0DvyOxsl0M2CX64l4hWWbgZpAJV2+4 D+3h97jf0RfZ/C4khPgv5ZMQUV4+hDBMgCEuJDTEIuoGsbFVvEyE0OJSEiFkYLdYhG3gYwyUzOQz UPM8R5I+OZ/yaE++b7ElAeY6W5Gm3qyAF5MQhr7BwA45ol/RJ+3Cn4gtJA7xSTh0yNiUKRGg/3K9 VCYbISSGZVshzEQIIbXZCGH4ArA4WcHWeF6O87AFktdwtQtb5VyQdiwJCSFbApm8o0z0FxJCxgm7 BrtlXCYek7wRL8PxjpV3I4S2NZZJ07jf7cvx/CM6wQ/ISZLOhRDiO6YDfAAyGBLC0O9ITM3vQrvK tUIYX9kxQhgSK2LQiSKE9C27DMi7yDvSTujgV7b11n6LTyIbkgih9T0T+eiVyQkjAeQIJOjokrhj +ZqVYSQt3CLKSg5lhLkjYy1+GRJCy6niuYmNd8TAMBYXmxDSB/Zeg0IIIc+BZlshtElxI4QhyTGf SiKE6JV64R/UkbwybivZQMxngpW4Sj0ox8olB8jkd+RM9BETEXGfNr/D5kO/IxenvUwa2GMyjCG0 nbaF9zJCmG1XSSZCSFy258Ftlxs5g9kx/xIfsZE0q+olRwhJoAkQGDqdQ4AlqUt7PbNVBJSwDZRl yjZCmLQMzoBPQIsPasCSAh5Cto6EhMUJIUHZtiWE5RO0MIRwNpBycxlBSAjD30NCSDLLcyBWNvpi lprECydggGRFwrZk2tYIe0EJsyuhvmxblP3NLDjbo3DK+MsSsoEE2ZbqzWmYmbHgZS/EsWeqWLVl gKCO9AFkhEQpHATCt28aIQwDZhow2KIv9EddWManb+nP8F6WyGV6aywrdvEBPbyWpIVr85kNIrhh JyRD/A0J5G8CLQGLIBt/62maNyUS3O2lMaY/e9YvJIQEQuwC0B/oJaw/QZc+teenzEZJspihDu0Z G8qVZIX6ImHm+Z94f5O0MuBbWQwykI40bw6mviQo4ec0zKfDPraJiPBafAP9hBMOoW+QCBOvzI6J H3FCyAolSUb8RQyUjY9m87skxAmhPRNLG4tBCPnbPmljz1yh/3wIIfHEnv9kkKduTKIxMJLgxD9t EtqvEcJ832JL8kQb7BED6s1OE2JWaE+FEkJiBasN1k/4Cf1Pm/FZZsXN9om/SYQw21syqXd87Alh hDBpggkbp+1xGwtBu0OiYWMVyZCNX/QVfcrkUy5CyPXWFmyS2BSfnKM8EkPs1caAXAgJYegXpj90 TL1JAC1xx65IuPEpJhdsvDM7sC3WXEvsxO/iO0HS7H6xHUDExLCfzH7ZuRPuYOEc9EWc5e80hBBi RQxJ+madEcK47VJ3/DXc5QA5pW/DSTP6i/Ns63Oa/ghhhDBOEMIX9uH3rIAwoZSrPPoG/2TcNf3i s5kIYXxlJcwf0AF2S85ADDQSRl0tv6DtcUJIn/A3esPW45+2wK4Zf22CwfTN+MNkSDjeWW5iOyHM 5pl8IAYWSghDnyoGIcROibHxCdXwLaP8nYsQshoc32Vn/YLtY+vEzDT5T9iX2AV9Yf3Nb/Rd3O/M /1mRJf8IY4z1qfldJkJoZM/ajF0QW5IIYbYxwwhhuOLM+dQrHJNYeSTPsbLxKQgwNp/pEyhxXy8p QkjQQ2EERcDycT4rVTgfAwCdSuJB8sjKiHWmbSuNEyzrHBJAki2cGsNhtQZiRYcTLHAQ9oaT/JKc x7dWsrxOMICYcn8zUl48wGDBbCEJg30XKtdMWhpCSP0IUPYQOqSLJJE6Y3g4F4MgM0P2IgdLKGkz 5+N8XAsBsbenhcSrkJfK8AwW5ZJg0l6cGt1Ym6k39+K+6JqExQgU92YgJXDx0C4EBILC1gFz7EIJ IfbEIGRbi+wlG0b2KZ+Ay+whiQS2RB2pb9jXJGDonXbR7/Gkh0DFNhVsATtMk6zbS2UgKOiMvsF+ 7fk/kjT6kgQPO6LPCXa5JhZoE7olqGLbkBfqRkISEkJsGn0wU2svZgjLsdl4BnIGClvNZzUGXTDo oTtmwiAS+XyoFVtgkCaZQ/f2XTX0SL3QI9uDqRez0WniAv6O/VE3gjU641mA+EtlkgghAZz+x+9J sOh/ElNL8Bjs8Av8nPZi6/hk/E131J1zqbs9L5vJ7+JbZpNsNySE/MakCTZTLEJIjMDGiDnEAfSd DyG053qxA+qJzdGXDODYL4MkZXMcgoNubHCnrEIIIXqhX7kXfWUvXwpX9QAxsBBCSAxgKyw2TyII ybdJNpIxYgkxgL6k/knb9LMRQuySZJaXImBPtkKKXjhGfMQO8SnuQQw1O8F/sSPGKuICsdKOYW/E ESZasFVskITQnpGlDxmT6AsSE8rh3ugzTgjtkwj0M4QFfaMP7kcMRD/hLLo9uhCSpDT+mkQIQ/2R pKMrYjjn4UdMHHNvklhWBLFfjhEbw5fKmN9hr+iRc6h7Lr8zMI6TI1AefYAdMyFrsRHfpGzKJamk LbZ1OA0hZAIJnRFjsIMwac9ECAFtwSYZI7k3NsgkRXynFHEa3dkbJnPtULJ2UT6JrZEoiDWrZrYC S/zDhvAF6p/mMQ6uhVRgNxBh6mbbOq2N9kZkVvfsGVzuzeQ3q3eQIfTIvckN8H9sl4kPdrLQ1/gP cYbrjWQYISRmMu4TE4kXlgMYuI+9kAlbt7cLo2fOZ5LExjvGEGIFRM6eW7UYmM9LZZisoJ3EGXSD jvibvJxj1SWEEBy2u+I/2JjFqVyEEN9E94CVL+IG9YKwonPqQNwlHthbw9nxk6ZO9KG96dVWMMNJ YMZe/I6xnPLRDeMUx4hF9DN6Jm+gfvikvaAwGyFkRwn9SAwgr2d8I0fl7zSEkNVi7oeOsCfGMnSC zxNvyFOIu8Rl9IOPht+jtO3u9HOaVfWSfMsoswAMVgwohWxbpDMIxiS4gEHWEnk6ic7O9FYxOh+j 4DoCOx3KAEkQwVhJjHASBks6GKMMt8XRwSRoBANg9+F6gj1OxPUEawJIrpcb2MAc37+M0zBY20wI hIPARdnUP3zdNXXiXrSJYwRXe3CYcxh0cBjTF04XvrqcoIg+aU+aASSsO4kuhIZycVh0Y4ksgyv3 Qs8cJ8EIn/XCDhioSQSMLOLkllTRp9Qp/qrfXKBdDG44L31HUKBfw1kiknPrQ0O4ldOckwDEQMTx cNUMkHQREO36NOSIAcm2RNFmgn2YTNnbEq2vSBBJRNPMwmHb2DM2gq0QmFj5ZfCkXSRdlE0g5hxs Iv6yGnTHTBbl0CZ7QyTX0zeUa31N3+XznTcGUnsGlyTD+hW9oUfshHrhv/msVONjJFj4HHXDB8NV fRJ7kt2khBCSzzYWiwfYoPUztopvcgxdkCRgN6FP0y+slKNTziGBsJlQ4mzc7+KvvI7D4pf5L79B OrFNbCGNviFMbI8KX1ePvdnqEX5AWeaT3IvzsXcGfAZjrqWP6DP8B9ux189jU6Yz+jJ8kye6YQeI +Tz34RprM7YefpQ8H1Bv9G99RSIVf9EJfccW9XwmKjiX5JIYCGmifHtJl/kk7ed3bMyeLwzjEjaW 7c24JHY2eYnO7LkdyrZn4EIQu0xnlIkO7TzabffBB+PXmm9BFkheiK/4FXXG/rgWUE6YIHMPxlLa TX3xKSaGaDdlkPSEtkveYVsm0/anfZg+/o0z6sHKoE0WMv5ZvfEte6FEaM8c495M4tBfNt7hd5Yf YCfoI/zMRzbYM0f4vY3j4bOljPH0IcfQDfW0vmBiM/Q7Jj9CvwP2iSj6gr4KP3SNHWYaR4hnxF/s k3vTPhvPQhA3sU/K4R653nIOIFTEvbgdEQfQp5WHPrk/9Uj7giHsm76xaxl/SOapl60Gx+9LvclD iHvECmsz43C4PY++wJbsGPVEL/RHSKRoG+fw/ziBphxW4ImD3Nv8gVgHqQ7HO/RB/KV/jQjaC0q4 Pr4zIhOYsIm3GXA9BIQxw3J06oGfMsakKdtsjPNtK7W1CTtEF7b13F6iZuSTfIzYFK8X4wN9ha1y 3PyKWJH2sxMQf8sF6Qv8Ipxgp3z8zvqTPg9XLrk+9Gn803SE35GnhH7H+GR5DwTRcgNyasYHfNri CeNbJr+DDCfphMkNrmenF/ZsYzy2HvoGOSLHsc8033XUdwgLhH08vJAPfGM4ma7FMDlW6EOhdj3O Vsi2jWzA0Cg7abXI2pSJYFMXjlNGsetlbU6ql+33576ZdGrtqu4zjacTrL8ybWWy1/jna4fZ+sLA PQspG+AzucovFGYHhdinbUUpxHdtq3WSTnL5VZp61ZTfVQdmA4XWyeJvkh1Upy9ywfqjmPHVCCGJ OvadlOyajWR7w/GpCiN4+dqwbcU7WbE5271z+aUdL9TGLY5men48W+yuKdSkX6WxoULzLYuBhYwZ XIvPZepr66ds9lmdWGf3Tqp7dWPo6Qj0XGgcDHPBTDqz/kzyLbt3ITrPdd/qIBwbqlu+CKEgCIIg nCQYIYw/SyMIgiAIJwoihIIgCIJwksDMLo8LsD32dKq3IAiC8NuBCKEgCIIgCIIgCEKJQoRQEARB EARBEAShRCFCKAiCIAiCIAiCUKIQIRQEQRAEQRAEQShRiBDmCV7rat9RCpHpXL5lA+LH+OYK3046 VV8ZzPd7wInSZ/ibfQuqpu9dLPAtmPh36/j+C9+uAXE90j6+PckxfCHtt3RMX/hbPt9rLBZ47TLf zMn0unO+u2NtDr9TKZwYJPnSqQi+UWffokqDbPGAF7IsXrw4r+9R1gS4PzYffvPttwBiGy+7OZV9 mdfE861b9H+iP8VQHRDH03ynLwnkD3wH8FTpl6Sc6Lce//lgeSHfMy02LM/M59unhYL4ht2dDuNM JiT5HX+Ti4GkfJ1+ttzGvjGcFuiLfPBktzsNRAjzBB9U52OhIfiYZdKHrEmg+WAoH66NH+Mj03yU M/59GQyHjwbnM7AxEPKxWj7Uad/DGTx4sPvXv/7ly8o3MNvHqflYd03qknrxUU8+hGoBhg+VP/bY Y/5jtTV572K2gQ+H8hHZUM+DBg3yHxC95JJL/MeCw2tIYmkztlO/fn03bdq01Pejf/kgMd8sO9Ft hQy2aNEi48BDsEQX11xzjbvyyiuLPmiQBPHx3BMx8J1I4L9jx46tlr6wPT52ywfM05Ij7jd8+PBK H+gNQVznI/P5TFikqScf6e3evXuquESf8/Fv4m7ScXznhhtuSE0w8Z8xY8a46dOnF61N1ocXXXSR J6f5XIeO+XAwH7EOJ46IH3xEG7JTzHrmCz7G/Pzzz5+yCSAxhw9JX3vttd6u8ploqEnwQWk+UJ3p ON8N4+PWfMw8ySZy+d2AAQN8u0/2RAjANt54440qeRE2fCLshjhC/ETnScfREXkQsaSY9+Qj4/jG ySa+5Gt8SL1nz55FaxvxcdiwYVXaRr5G/nG6TnyZ333++eeVfv/00099u8jX3nrrrSr6IIdHxxde eKGbMGFC6vthc8Ql/PlU0UE2iBDmiR49evikuFu3bq5Xr14efD8KIhMakM3W33PPPT5wxMvhNeNJ SeDcuXNdnTp18krCGHjOPfdc17RpUz+7QRJx1113+XK6dOmSOmBZvQkwbdu2de+8806N6pK2Q4pb t25doQeS/SZNmnhCW5P3LiYgZ3FSB+ljBpH+j+vRPpTLrDb99t1336W+FwktyU/fvn0r+utEtRO/ vfTSS/3qZNK9qRt227VrV9+HxU4GJk+e7O//W9tyzkQOkweFfDjZQAxu3Lixj0tpbYJ+JJZlmlwg IbD+LlZbqdt1111XEZdy1bV///6+XXPmzKlSDv8S+5o1a5Z6NwMJwS233OJttFhtAha3IYT5+OXC hQvdFVdc4c4777xKE0fYBLEj39noYgOiCmE9VVd8PvroI3fxxRf7WXgmZU/GB+zjIKli/GTSL9M5 jA/4XVLsT+N3M2bMOGGEKxewCyZsmJAi7t90002+XyAVJ8JmuAf3fPvttxPvR05Rq1YtbyPFvOej jz7qJ0zM30+0f4T5GjlBsWIaZb7wwgueAMXtiz6+8cYbfVw6GW2uLszviLvx38nhWUR5/fXXq1xH vkaMZ6L7m2++SX0/bI/xzr4xe6rrS4QwT0AIWRHMNEPC0jMk8emnn/azeKzchYSQrYLMFgCCuhkI BsksFrPCtWvX9gk/AR/jy2VEJEUMiiROzHxQLjMZjRo1qki86GhmNlhB6NChg19pCWcXmVklmWQQ Y7YEQhkSGbYOsWJIu1gNiw9WHKe+48ePT53YpiGEOCIzf9Sbe/fu3bsS+SYJwMHRMbrDtkJ9MYPM KgiEjZkfAl0uh6YOzITFZ+fR15AhQ9z333/v74GerS8hd/FyIEckVJmINeSdFcJCCCFtYXYZnaAr 7MfOYVaKRNp0QjKdJnGgTdin9TPXzpw5s0KfRghHjRrl9fjqq69WCayAmcokQog+mAShL5lZpV/S 2Ap6J6BSHxLnN99809va119/XVE3+orfsCeSaVYz0+oUQBS++uor327KmDRpUkXZ+M7QoUN9W/Fp zqGN1Itz2AJpfcHKf7iNiGP0xXPPPefat2/vEyfuxTFWlagz9n/ZZZf5svmbPrDr2a4X+l0SQaAO +O71119fcS2/ERcgGVYvWwmkPSSdxLILLrjAJzXcFzumTdSfOEIfE0eIZxxHJxar8CFsEBujfvHt a9ST/qXN9DX6475GCLEdkkaLk0mJPDGWRI972I4Jm73mNwZufP/yyy+vIITYE7sLiGOcwySClT1x 4kTXp08f17x5c5+w0ybubbGcMtABdaa/vvzyy0r6tr4mBlFv7JAkgWNGCGkn9aIMYk8uvzNCyMQQ NmB1yYcQ0i/4JLZFm0mMbTUEvREfGKOtDZyPbfB/+pmxxvoIe+HeTGZxPvELYO+0GX2Hu1ewF66j vfgNsTGsG+ME9o99UDb3oZ5pEiPskDjM7Dw6DRN6Yhr9d/fdd3u9WV+m0Rd1plzsgXKpN31lsQj7 xj+IU+gT/YRbvrAnxjnGFNpCm9A5YxGxvF+/fj5xZGWAehG7bLyk3dinjRthnKK9nJ/J7wA6oD+5 lvgX2hf/J16jL+yXvg39hjZRP/yOdtGX4fXkLtbP5Ag2zuXSp4EYzCpLnAjjM/gS7UDf6JWxM02Z 3J++Jr5SLiuR9JXFEmIBOiL/IZnn/7QbO+AcYjqxEUIIYeL4yJEjfV9b2RYjiWf0R9hm9IOvWP5h u7eMEOKj5FIcI9dKszWQa+k7/AK/oS+Jxdxj2bJlFXEMn6YvOYf/x/vq3Xff9f1ITsKunJAQ4r82 JlGvtBNm5ldMUGLDZr82zkMI+Z36Uy/6M/x+KvWeMmWK9ylskLqFubL5HvkSfkX9iad2Dnko7aLe 9FuaVV3sC9uOr5bjp9zftryTe5jfJe3k4Hz6M4kQAvoGPRdCCBm7GS9oF7EjtDHyWXRsOVcxJy7y RUkSQjoAhwH5zijiuGzVgFwRjABB2PbN33HHHX6AovNJ3AlEISHEGHD8q666ym/LtEGIAYNr2B51 zjnn+ECAcRCgc9WRgIWhsg2LRIegSdnM5BghJGhRL4IYjkxibTNqJKht2rTxiRLOYPU2IkOSSWLG AEfwZFWBvy3JADgk5CafWe00hJBkg3IfeeQRH/AYcGw1Dp2RzNJ2dEUbGEjDpIQARrJ19dVXu/vu u8+3Hx1nqxfBCv3Et5UxYLds2dIHcvoEndJPDRo08LqKD541SQjr1avn24H+IP4EVVt55J4EbQY4 00mabQ7Ul/MBST7lN2zY0Cf2HMdvsQt007FjR+8HEMT4nvskQki9CfBmgyRR6I0EPU296F/6r27d uu6pp57yf3OtzVLy2/nnn+8TGSYzKJuBKY1OKZ9JHtqK75AQM5FjdmwraSTukC76nG2KECxsBful T+hndMK5lhjwG36Dr5HosSXFtkuSIOHzlIvvQZJolyVL+B2TPFxPOZRLfAn9DhDHiCckeqZzklPq iN/Ql1xH0sTgSczBhrEdfIPBn/sakeAcCCTbvrAz4gXHSa4om4ER/yfGMHjjk+iFSSGOk1BzX9pK UoBOuYetLDNA0o/EKspgAowkOt4v3I/Vv3CyBTvGZ+gvEkTqz1ZNEh7iGH2HHWBf6BtbJWZzLYkg baaf6SdiHTq3pAOd0A7qyzFsG7syv4b0EWs4h/5g5Yzr7Ri+QZupA+dQd0h/NtszQtiuXTtvA+YP aQkhdWM8QZ/oFdukfZaUM9bhi7ZliQGf+EDywf/RFSsB9DVl0B82lnA+59IusxH0if9aQo2/cT/q wOMR9I3FCxubuJ42ElfQGf+Gk3pJIOEl/hDbuC+ruvSH2RiThPQRu2KIb5xDX6R5Jg87tDiGvsz3 sQ/rS/qCttHP6A//sQlC4gXbzqgP7cLO8AHGLBJ3+o7fiQlmYzYZg85IsvEpfDscG/A7YnYmvwOQ IerM2E4dwySY+lMn+oxzrK+MwFAf8zt0i99B1KxN2AGTK8QL+hPbz9VP8ThKLIwTQvTCfRmTqBex g35Ns+2QettjOeQy1Jt2oRPGFGwNHRMHWrVq5fVFTLXntshXqA/9bQk3yTl9SX3xMfRFm5lcwA5s 3Ee3xALKfuihh3xZjP82+YVuaRdtNr8j3qVpE32Bv3JP+gHfIV5gOxxncgMbwB/tPhAo4jvtoh6c T5341wgv5ZOnMFYwJqAzYhG2kmanR5JfActRyKe4F2XiH/QpRJy+oN4QG2IgeRmxljIoz8Yl8z3q TAzGxuk3xjpiOPW0HRzUn3bmekQEf8WX4rEWckm+wZhhdTO/I9bHy6lJQkhOjz+hF2Kk3R//wu8Y mxlL0SU+fLJIYckRQjqAAM7MOEbJalg+15NcYNAhCP4EGGYi+NuWhzFUkpWkLaM4WUgIDRg1zp/P syMMuhAeEmCMnWBAAmBbs+hkgjBJLkkT98RZSQY4Rj3Rhw3kzJIR3GywIrnCUW3lg+MYLUHL6sCM EYG62IQQosMgZasqOK3NetJGBhYjO9w3vkWX/iLgkmgZac8160TAJShxbwYFbITgQqKOHuIEjoCW tF2lJgkhAZl20Je0lyBsM6L0q5WJTiAUSTaY1B/hMzi0HT0wkNI2/JbAxsDEceydvrLtq3ZdEiEk 8cUuGVD43QgiPph2UoaJAMqNbx9kkGF1hhlRysbHsXeS7DQz3CRx+C0E335jcDI7wyaNDFqCRN+i e/qdQdFIGgkpwR2b4d5ca6u31A2/x1fDevEbz17GYwF+x4AY+h3+HfodIHlnAA+JIjoNB1LsAD8K k0vqii1lioH4NPeLD8jYRZhcYAe2O4G/SSqIH8RBayfnowcjhNiVzeJDEEj0Qp1QfxKGMEbyG4SC QdnKQkdGCImd6D58npdYjy1YTLIto5wTby/+FMZdYgZJmfUfiT02bKuC9Kfp3Agh9s29ra9ybX03 QkgCBLAN2psPISQZpV6UhY5Ibs3GuD4khPY4APGA/xMrWPVg7CC2kfSQ6JG4cD7xi3bQTspjPEHH xC4IDLGVWXh0QXkkr5An8x1sAb2QpBt5wYdyrZwyppFM2nZm7IdYb/HD2o6euF8+K1mWlJK8U2f6 Hd9mEsMmSEMiRF3wL+t3i+vUBx2YT9hjHpSJPWcjB9gZRCdpbMjkdyFspTskhPQr7WD8oh3YOL5B n5rfmU3ZJDD+YXGK+GCx3Xwlny2pmQgh9gGp4l/+Jo4Tr9Pmgfi21QO9cQ/8PvQBfos/qx/GOfrb Vt8MlBnGMfwcAoGN8zcknjwHcmz3pyyIrBFC/I74jN+Ry8RjeyafpS+YVGVSkDGQSWwm4ZjM5F70 IwSCPsCXsCXGceySa2iP5T0QFPII4gdlMx7QDps8wXe5R9rn2LL5Ff7HZKvtoGE8Ib4wKUnf4LPE I5swYgzAlu0dG+Z7TDCFYynXoj/0bZOp6B8fy1VvI10sStA3kC1+Qz/ULZywNr870YTQdElfMgmA vdquJHzUFjHQBZM9kMOTsb205Aghzo5z0VHMPDMYZ3v4Ow4IBh1qDgCMrJBYEuhsNpBjJB9JyTgO l0QIC32GkNkUZhVYRaFNBH2SPdvGgGOwgmDX2EBN3xGoLakyo8RgbbCiDQz8DBiAYANpDV86Y8ae z3NQaQghDoM+qAOzpzx7adfzN21gsLa6QWxJrsP+CslsGtAGkiKST2yV5JYgS2CC/IXbQmj3ySCE NpPIbxB5+odgy4wm/2cAMJ1A1JOeB0jqD2aZCYoEcfQKAQwJIQE6nO3GF5h1C0ldEiEkyaGt2Bn2 Sb0I/vnYOnZOveLxA4JIm43M2qpJPGHKBIgk5WYiptgkZcWftaN96BXSEOqb5Ic+5zh1ZWA3v0EH JA2hbmzwjftOGr8j9qBHyEpYJmUxGFMu/Uj7LHkP20Vd8n2GEJ3SxyQo9DPn0GYjhPgJRDZp4sWS Idpsz6WRQDAzGtYfO8T2wr4mntIeEin7jRUOJkOIXcQG2sjfpjPbOm+xzWJy0vM2DPjUBftE1yQ+ 9C06pp4k0OFsdwjiNve2+pIAkTzkevlTSAiJKzZ7TH/mQwiJ+2Y/+Br1p55pCCGxloSEfmE8oG9t FwXxi9UwI3gQR2Is/6J74i8E0XwaXdszRpxv40y+b2NkZwi2GSbx1IV6m09b28PxIw0sKWW8tnIg GExAUA7EgDhK/6E72oQdxQlhpmcEbRU22zOElMGqYtLYQNtzPUPIZGUY32zVCX2YLoiXjF1slTO/ M0JtumOMs4kD/AKbJ55znm0bTotshBA92ko/E0jcJ+22UbbY4gvEMcphzAjJto3BSbt0wv6Or7qg B2IcscfGO86zXVVsN6fv2QGW5HcQQvzOxg381vwul8/SF9QXv8POWPnFn4wooJ9wpR2bwMeY9GIy IFw0sF0AxBBs11YUsQ+Lg/yd6RnLTDElya+wC/zSCB66QXeMveQF6I+YYvEAnRIvbPXO+iKcmAS0 mbyNY5Bsqzd9nevZSPSPv5GzsQ2cMthxAsHGx8L8wvzuRBNCm2QA5Bvk64xJTAYzzoU5LH2fxA1O BEqOELJKZgQQY2cmNOlNX5kAwcg0UDMQkxRY4KsOIcx3hRADox8ILOEAgCFawAhXFtgWYYSQhAAn tkE7JISUw2wVgY+AilMAZkar+7ZH9E/ijoPGCaHNfvE7dWW1B2ekzvYwPY7LbxACqxcIV0roLxKU fN+KxWoRSS0kmgBFsCJI0pdhkKwOIWRgJAHM9Ha0JBghDAMMwRW9EGBstSCukzTPENC/th0PO+Q6 2mYrbfgthM5m3PiNmT4IY2jHJJQEuFBPJAUMDPhIWC+QNpkzQoiNJ/mM2SP1IqFOSwiZjSMQZ6qH ESf8Kt4XbMuEKOAPYZsgQ9yb64gBEJyQcMQJYfylMuZ3JGfZ/A4SRtIXf5aTSQYmAkicOMZgTRvD FSvKIW7gT0ntzkQI7Z74H7GOpIZ+MfJDnAlX5UJYXLJVPEs+8K9w5Qfih17D/rPVgXDAxq6MEJJA US8S/bAvsNdwhSGJEHKc++E7lMl1JN2WeHGcmeVMSVX4Uhn+LoQQ8rdtqcOn8iGE9uIXfsPHbEIm LSGkHvh6EiFk5cxsEyLINSRFTDgw3rHdK65vS5KJbegwfMY5DUiAiXMhkaROxSSEltjZlnPiPfWk LyCArJbRn0w04AcWdyyuEzeSyi8GIcSfCiGErMSafRID6CsIlfmdvXXcdGcvRbE6kUQzAQARIv7E dx2QS9gLRZLalIkQWn7C30YI00yEcg19hc0y/hALsdMwp6Iu+HSmVRXrb1vNNRC70A8ECv/lOL5o eQ/2gR6Stn0bIQy3lEMy0rxMLSSE3JOJCGwLPwwJYUg88GkjhPhnOJEaEkKuRVfYH3oO/TLtpw9s QpV4l+2lMvwNIcQ36CfiAHqmHeF9aaP5v/VFPOexlTvqTvwIr02z1ZU8D//F/tEtuTVxK3yDfeh3 2QghZSTdwwhhPm8ZNULI88D2Gzuj2FXECi4LIrYNOdSZPV6R9j7FQskRQjqblSUMA2Mj6OXziQMj hEkEA4dggOQ5Qf7GIQmEmQghg3icEHINZYQP6uZCSAjtt5AQ4mwkOiQZtm2SdhBUaIe9lMa24tkW AxuscCycNdxGQ73DFRXKQC8k4rZimgvhyzBsBhodEoRD0m4DGEEIQo+TMxBC1iAo8Zm/MIk0Qpjv 2/oISiQyJNGQQwZfSE58e50RQgbSuANTD3SeabsmM7DUP59ty0YIIRDoDP3QxwwgBF2SGOoZfkrA tnPlKpvgHs6k0t/YTUgI0Ymt0qJTCA/JfRh0IQysGIUzc5B6Bg6SnUx9lQvYJ/qKPxtoW7WtbOwP W4yvOmUC+sfnwhc8oK9wkoJ2hqvT1vcMPAzo4QQOfWTJEwO1bZ2krZwfJ4QkMthofBIIvyM5y+R3 /Mt1+Fy8f3nZhe0U4G8GH3QXEkLKxfcyzcASF5P8C5+CCBsxZaYfsm/kB0KGD4fP4Jo+w7iUiRBi Z8Sm+DO8tBdSQL+ar1F3292A/eIH4dbfuI3hM5BNEp4kv7JkkL8hf9i7rRASr9nSFa58WtnFIoT4 Lb6T9nls0x8+mkQIaS/1sFhO3e1FPWkJITZiz+bhK4wVnE8SG66KWn3Cl86Q+KGXtGOCgTEUm7Kx GT0zxjF2hxMH1SGE2CDX4XfsdLAJCJK0kCgRV2hznBBmmuiziWYm1jLVwRJTxo0kv8N/sj1HBCEk NoeEkDGaNlgcgfxRDvU2v7NYFCeEwPyT/mMCK/7sOf2MXbEKlkTwM71UpjqEkJjPCoq9LIsJAmJP nBDSH5k+j0KOgx+zehT+jm0yJtmkA+Nx+D4AfDr+nDtxwbZDhm8Z5VixCCH6ZwznuN2L+ECsD3dC 2BiPLzIRxjn2WAIEOcxRbUzKpW8D22/ps/jnz7IRQmILesY2Qx3Yy9dC34v3PXVDn5Qd3jOeZ2aL F8RNYpU9OmWPbiT5XfyxC+sX4mimvAH7gLzl8wkJI4SM+3YPckJiLTrkBTv4UzjxlTZfqwmUHCHE oQicJPgA58nHUUiGcBSSBQYUQEJMkEOZDO50Nk5LsCCYWfDCGOxtcCRAgMGG/dgWYDESSwYIpBh3 muctkgihrSTxf5JOBmacFSMkiSKIGtEiyLIFjPrhEOFLZRigCFAkRMxakfDjVOEMFqsJ+T5DaI5M EKEfuDflkqTQT9SN1QDIs70hisBnz4qRfJHcAHRqb74KV3wLJYQ4JAEFkNwxuIffDCTBYUUCQBpJ oLg/g4z1F/8ymHAdM0QE/HCWjoBNgsnAzkBN+3MFAktc6R/sjkGIvmS7BPqiruiDpJfyqB/fdUzz 8hZmH+lDgheJALN1DDw26NlLZViR4VtuEBa21MXf6AlBoByCK+1iMMe+Kcce6OZ6JgN4mD4f3yV4 ojN8w1bC7Xkz9GgvGSARihODTID8M2NHPEBn9CN1NyJmK2lxQggY2Ehc7duZ3BP/wU7oX4gk/UFd sWNsgXqGPo0+8AGSQ663gZ7y0G/od8QM8ztiA9fFn40BJD/0AbrAx/Bvm721c7Bh7Bqd2lsLQ/JJ MkaCw/2pl22dIn5wX3yL8vAv2mXkhzJISGy1jT5hsEeP8bhks9EhIWTWnQmPpLjHaqZ9TofBnqTV CCE2BoEmVlEv9MQEIOWFz3HasyrYJqvr6AEbYlzADkiG8S2SQSOEXIttEA/QGX2DTzMOcKw6hJD4 YYQQfVA//C6fl8pkIoQcZ3cHfcxYw4qxjUn2UplchJC6YEe2agfp4FrTmdkPPk3dmaCwBLBQQoit oD+SKfyO+tAXcfJJ2wslhMQI7JM+5P/YA/GXcY9xhvbaM1D4eFpCaOMtvkvcxcZshwbtYqxieyDx BnvFP/Bly0O4D/0S9zvKJd5wPUkl9aJsrrfJQHyB8Y/f0R9+ZRMa9F1ICNGdxXbyF/qSGEPsx1+J 87ZNFtiEYbw/uZ7r8DVbWWRbO3kN/UJbCyWEECb6HbKHP/NyF/6OT7KyjRy/JzZh//G3wmKj2Am2 TvvoZ/RMPdgezG/oClu3lUZsHD3g8/gx92e8sk/LxAkh905LCG3yKYkQcj26JH4zNhBnqD9+RVvQ H38TI6kTY334Uhl2bGAH+CnHsXEmPPLZicRkAjGdOIsN2hiTjRDSLnSJ3WD3jDvEUeKYTVxkIoSA CUD8jrGU/kAf9Emab8YyhqN7xltsk4UD7NQWOeJ+R56I36D3MP+3fI124yvhpDY+hv1hy2ZnuVbx uK+9BBASauVjr/Qzkz70JbGX+EmdyLvCRztOJEryLaPMZOA09hB+Ptcy8OGIIehAm8HCQQjyJEQE D5IRm43AABic49djnOFsDokHSQfHGIhz1ZGEnAEi3EqGoTL42wedSdIwcupFAGIWLySQkEqCBsch BBy3hJp6U44d57kpAnT4AhKcFidkZimf7a4EFgYyAiH14h7hrCREk4DCfQGDWBjs2fZBMmTH0Vv4 TUCCCvot5APPBGVzXNrPfUzH9DfBKt6X8f4ioFAGxwgmYYCxWUj0zXF0l6uvGcg4nySGtqIzXgwQ Jo4EOQYq9EGgse02udpLICUIMjFgW50hmvaiDNqM/dJGyuU8e0tdvBySatOP9QdJMjrFfiifBISB J21/2DOOJIeUa33DMUgUBNXazMRH2iSUMhg4bLXPnkexvmB1BF2EyVF4LWQPG+VadIKdmG+QzNJP 1AvdMWjHtx2jFwYKiCQ649kVK5vELvQ7+oOyGWDtkwBJgxI+QmJDWwBklHqFvsF19gmHJPtkcGCA slhkb+vEBxj4rU70KWWEOy2YXCD+mF+yGmGJKf6IX9u5PO+B7dtLWkiE7I2PcRC7aZfdGxsgcTb/ ZqaVVSTazDnoDh2GOiJ5wIbNZ82nSVKwLa5j0oFkhustmcH3GKjN77i/xUhWYOk/296E/u2zF9ls j/riq+HzQvgq9oRO0tgwSSPPOJtNkfiFBJHxwerMeETstrdXYz+MheidPkIX+LS9ZdQ+FWFjGkmw vawCcB1jhcUMxoDwsxLEDPSS7wfUuZ524NPmV4y9cVun7WEcSANLSvF3YhC2gj7CbW3YFPdlXCL+ oTfbcoitoZdsOzuwMc4xG7Nr8QtsKj5u2Gql+R1kNO539JeNFXEQo7AV+o060xfYQLi9H78zH+Vv /M5iO6sftBGbpt3YP4QunKAk/nGveH9Sb3wuXidIImVzzzA/wX5oW9Ini5LiK2SMfqJNZr/xtxLT TggT8ZM4G98eii0R3yzfsvc/UI7ZLjGSCY3w+Tb7DIKdQ3wgl6JdkF7It9kkMQtfTkMIqQOEAv+x z02gJ8Z1e5Mo47rFMc6x5/awAyOC9tI3ck2LRdgP5AI9WJzCntO8gTccP9iBZWO47XojNoT5FLEl zIuIz9iy2SB1tBf6cZw8JfSHOMj9OG4+zxgSxptMoD7Uy962jm9CLG08y+R3kO2wv6g//RofGwz0 k42XaeIOOqde9KvlPYyXNk5wPZNBxFXLPbCxTPqpaeg7hDWkVJt1PpXqhaNQL0vMMtU7k5FzHMcL twAUq16USdlJOuM36mVvFowft20/lJFPYnC6g8E6U3+hM3vhUb59hZ5zXWf9kW+dQxsstn9QHgNA JjvJBbOjQtpFX2TyDTtWaHuT/I6JJ3YjZCMctKfQfkrbj9ligZ2Ttj9sZYVBM75VKcn+MpEMu689 +5dPu8xvsvWV9WeuOp5KyBXbcyGbDaPvQmNN2vvmSyizIXyOKdN4aLHgZG3dqg7M9guJN9nG4ZPd purYbybkyonCcwqJJ9Wtm/lV0n3NpzPV22JZMX0nn/4q1I7wOcbx0ym+pgH9kGmCL8w9ih1D84EI oSAIwmkGmyQ5mYNHTYBB82QkMELpINu2NUEQhFKFCKEgCIIgCCUBJhzYfho+8iAIglDqECEUBEEQ BEEQBEEoUYgQCoIgCIIgCIIglChECAVBEARBEARBEEoUIoSCIAiCIAiCIAglChHCPMFrYfn2Ct96 49tnmV5DzBsA+YDoqfjaar6twveh7AOrJ+q+fJOlmDrBeGlDplf5cpzvz9BX/HuqvMaY+qL/TN9G DG0MX/ktfEqDNvBtnfAbkqUAvu/Ft+aKURav4s5m74IgCIIgCIVAhDBP8BFfPszaokUL/xHeTK9I 56OjfFhz1apVeZVPwszHumuCvED++Hjq5ZdfXvER9xNJNvhoKLoLP6IOqAP6gmDnUx4f2b7hhhsS PxgO+KBpmzZt3HXXXefbG//IaHVBvflQa74fEeVj4NgPpDDpOKSZj8pec8017uqrrz7hr+GnXnxs vZjEgz7nI7f28dyTAT6Yje6TjqFjPma7ZcuWot0Pf+PjuHxIuRgTL9g7drxgwYKi1VEQBEEQBEGE ME/YRzO7d+/u7rjjjozJOiTl448/dps2bcqrfK6rU6eOv0ex6863yyAakCRWLiBIJ3KFkO8+kXTH Vwj5LlSzZs3cwIED8yrv22+/dc2bN6+wp3hb7EPlgwcPdjfeeKO/TzHbQzvOO+88N3r06Lz1cMkl l/hVS+qc6aPIn3zyif/4+IkmhNg25C1O3KsDyoLM0BdJfVXT4H6Q6y5duiTem4kbvk1GLCvmPfG3 du3aVfRzIe22a7Cbq666yttNseooCIIgCIIgQlggWO1KIoSs8LFqxHeOWI2LH+fbR926dXPPPPOM 69ixo5sxY4ZP+NgmyMrga6+95mrXru369u3rBg0a5L755ptUSSQkYsmSJa5Tp07u2WefdV27dvVb NO34uHHjXJ8+ffzKFEkqZVPHNGVzzsKFC319n376affuu+9WWs2bMGFCRTv4e+bMmW7ixIkVf0M8 aRv3Y+UJombGN3nyZNejRw9PrB5//PGKepneWA2BKLLK8sILL3id2uophBDCRLteffVV9+KLL/oV 3Hibhg0blkgIIXRTpkzx5T733HO+7DQrROgaEgjhr1u3rr+eeg8dOtT3I+fQF/Qz+qJPp06dWrEa a4QQckSd27dv7/Ubvw/Hkwghf6Pfl156yfc19w3Pgez36tXL29jrr7/u+z7NSjCkCF2zcnzllVe6 jz76yLcrXMnEfkMbS7sCboTwnXfe8YST64cMGVJpcoAVXe6JzrC1ZcuWpSrbbO69997z5b755pt+ u63ZLjZGOy688EJ3zz33+P9//vnnvk7Y0ldffeWJIoSQunF8/PjxXmfoFTujzdTrrbfe8jYZ2hjl 4Kf0B+fYCr8RQu7J/Tj2wQcfVNo2y4QFq6bYwMsvv+zvazrh/pMmTfLHaBN9I0IoCIIgCEKxIUJY IDIRQrb7kRjefPPNPpknybVjJHjXX3+9a9y4sU8s77//fnf33Xf7ToCscB1bKiGEJI8kgpAKI1DZ AKEgiW/SpIlPLM8//3zXqlWrCiIAeXniiSdcw4YNfR0sAU1DCCEBrK5ce+21PjFu3bq1v9aO0w4S fbuX6cYSWxLoJ5980m/dhJjZyhPt7tevnz9Gm6kv9XrllVfchg0bfN3QA22C8FF/knbawr1I1C++ +GJXv35998gjj7ibbrrJNWjQoMrW00yEEOIOEX3ooYfco48+6s4991zfL7n0AemDOEC4qA99aEk7 96BdDzzwgGvZsqUnNv/4xz/8qi9bFrkeQgiRBFxHf0AQIXLhfTIRQvRLXak3+uH/ECmzMe5tNka7 6DsjqtkAiYJ4U+9LL73Ut4/6sZ2X46x204cQqzfeeMPbGAQlzXOBRgjR12233ebrxf9ZMeY4xJI+ ot4QaOpMf6b5eDR2wjZo9Iy+sSP6le2h+A42RjvOOecc3zb+j69B2mkTbUGX1IctnhyHUNOP3J82 Uja2zxbliy66qBLh5Hr6l1VVCDh9id8bIaRc2vLUU095O4d82rXYer169fxkCNdjv2YnTFZQLr7E qj7XYg8ihIIgCIIgFBMihAUiEyE0sOpAIhluQSM5veCCC/y19htbA0NSRrIHUcj0wpFMgBBQ9pw5 c/zfrEiRiPLckZ3DM2Ek5e+//35eZbONlSTXnl2yLY12HAKSjRAaPvzwQ0+U41sRWclk66eRgxCs LoY6hixAwFjJM0LYuXNnr0Ne3oHOOScsI4kQUn+IDcSAenI99YOQrF27NpVe6E8SeFbgwt8pizKs X/n39ttv94QAHUEIIQEQDI5DqCBXkIlwJS+JEKIPCDIkJKw35bHaRJ0gmEwk2DX8ns9WRcpjYiK+ Wjpq1ChvY0aGsDF0yO+5yjRCaOVCUCGc9At1o77YgNkvRIzV7LfffjtVnUMyTd9C4OLkPq6X+PX4 S3zFEx2H9kC9IctG6ph84O/Q/rFn82sIIe3ANukbCLe1mdXsRo0a+RVe2yXAijG+Q1lMlDD5wuQI 9YCoihAKgiAIglBsiBAWiFyEkO1wcUJIkscqG0k1W9vYFhpfFSrkGUKSSYgNiaaRMDoWsgL5MzJA kkpSzla/fNpKkswzfoAVDbbUFUII2S6XRAghOSS6Sc8QQj5YGWQFiPuzGmakAkJIMs72SWszCTUr lmEZSYSQRB4CABHj3pRPWfRN2oSb9qHj+DOEtk2RVR0IJmVzLxJ8I4Tc1+oNIA5t27at9DKhJELI 1lxWeVkBC+tN+ZAOymfLJ+2AcLEdN98XG9FP8WcIaVPPnj39CltoY7ZqnItwGiGEbIY+gv6YqGCF lxWwpk2bVvQ1K7/4SZo6s4qJXVx22WW+DHyIFduw/qxuZnqGEAKa9AwhbWWi4s477/R9SdmcZ+XQ z/RD0vZWI4TAVvnRIQSRfmKrM5M/9B9tBqw+Uh7kkNVICLH5FXYsQigIgiAIQrEhQlggID0kifkQ QsA2NVawSBJJ2iFO4UqMEcJ8VgiNEPJWU0seSWQhDsUghLaaweoGKy+2xc2IwYMPPlgpcS2EEJIM QzTD31k5g5iw3Y4VV1akIDl33XWXLwNCCAHgdzNm6ggRC8tJIoQk1ST2bA3kekga4P9p3zRppJvn IsPfIResRtHHY8aM8au0rGpCbI0QsrJm9Qa8sZbzcxFCrqVfeU4trDe6sPPYtkx/UB7EEdKWZuul ge2w6DjUgxFC+i+0MUhWPoSQSRD7jWdFbTWcSQX6mnZYmwCfWchVXwgv7YRUslpLGbSZFdew/vzG c4b5EEJIO0QQMs//qRN/MwFCOTzzB8FLehmNEUL63e6JDulTdAg5pi+xz7DN+BoEEt2yypmNENLn bHuN7zQQBEEQBEFICxHCAsFLIlgtyfTmSgghz0HFv0FGomfbw3gWjhWB8LMJJPOslPBvPvVh22T4 HNqKFSt8OfY8EiiUEJKQAupNAgoBYFXDPuPAVjYSZlZ6aB/PYWUihNw/TrhIaNFlvF5s1ePTC+iJ v7n/ww8/XLF6ReJPm41IsrUOkk59wnJI2iGc4ev6ORcyAnkNt2nSvrSJNW1l+2a46gVYLYI08KIT 0zukISSEkGprF07IcchsWBfqjZ5DG6Nf+Q2CbL+ZPcVtDP3T/0mkNRtYqYV4xFevIaFxG6MurKCl JYQ2kQCwI557pc2s5rGtNnwREu1I8/kVtpkyiWLPMkIQWV2LE0LKj+s4rB/2EI9NkDDaaH5M2yGf EG7K5N6QuvBzGtTb+iB8yyjHQkJIn+D/4cQA51mbea4RX7Itv2x3jRNCCDY2yD1O9NtoBUEQBEH4 bUCEsECw6kNiyJY2EmV7kQmz+2xfI/Ek2evfv78bPny4f8kEyS5JKck8yT6rMBCecHWBxJStcryZ EFLJiyXSvCGSF2iQmPKcGvdj+xyJbLj1tFBCyDNiEDHK5U2clMGLO4yEkKiiiwEDBvjEHiJqhJBE Fl2hE5JbtgLSfsqxBB4iyTZHVvtYNeJcSCLHSex5CQkrP7zIhqQ9JIQ8Q0iZ6IrtohCDOPlhVRYi Q4INecT+7GUg/A4xoz8gKKwupk2sKYN20ofYAFtHaQt9TZLO20d5A6u9sMQIIfWmHTwzxzXWLnt+ zsDqGO3jOrMxiAakii2nvCwFvbBaRZ9QNjbG/Ziw4M2XXIsd5vONR7ZB0ofoB6JjRBo90i5WhGkX NgbZDF+clAlGCHmxC6vW9mZZXgLDcUgy2zEpkzZhI/yfducqm+9A0u/om37EltBnSAiBvaAIn4To hS/DQa/YHz5Jm1kNxH6pC2WhY/SJ7dEGWxUlgHI/+gnb4nx8BZ/mOMcyEUJshQkMbBy7x8+wBfTO uRBtJg6YSGF7KXYeJ4Qcw7aIFyKEgiAIgiAUAhHCaiiOhA0CwXY/ElF+59kikrwQHJ83b54nZJAi XhRhH4ZnS2Gc8JEYcoxrSWrTvGWU5BXCxjVs64N4Qk7Dc0gY2VpKMpxPW/nsAG+FZEsq9WZrXrja xkohz7/ZMZJnqzdt5p5xnbByYh90J1lmlZTtoByD0NiqCAk2yS5tQo+shJIwo3+uYWWSN5BCGkHS W1n5G93wbCEJvZEMVgnpL+sPyACJdxoCbqBfIeHUG6KGLqgb2z2tXNpFnVmNpE0k9GyRZDsgOoVc J62yUQ59hY1RvtkY/sanP6w/aBP15nr0zQqp3ZutqpDOfNrEfakr13Jf3sZqNoZthjZmdcoFswO2 S1t/Mpli3+mkfqxmohebcIDApfkIO9dSX9MH+mZCJv6SIlbdmTRAX6H9GVip4/60Dzsz+4XEWdk8 Q0v54Qotq4f0r50DYYYA0x/0MVtwrW/RJddbf0DU6S9rMzZoOsVfmWAx28bO0Um4/Zd6hPXNx68F QRAEQRCACOEJhm27JNHMJ0lPCys7vl2zurAVDcpOSjy5X021CSPl3pnKti2Tha6QZGtXdfqZOmV7 tovfuTcotHzbppvJxtJsuTzRNpatP42E5bN1N+zHNJ/XKETXVnauvizEB8y3knRiJN9W24vdNkEQ BEEQBBFCQRAEQRAEQRCEEoUIoSAIgiAIgiAIQolChFAQBEEQBEEQBKFEcVIIIS/i0AsQBEEQBEEQ BEEQTi54jwEvkTyhhJBvefGmPJFCQRAEQRAEQRCEEw/7hBZcjs9xnVBCePToUf/xaF65ziv4BUEQ BEEQBEEQhBMLvnvNZ9PgZyeUEBophJmySigIgiAIgiAIgiCcWBw8eND98ssvOblbjRBCiUQikUgk EolEIpGc+iJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQi kUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolE IpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJ RCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQS iUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKE EolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoi hBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUq IoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQl KiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgk JSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFI JCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSYvLLL7+4srIyEUKJ RCKRSCQSiUQiKTXJixC2bNlSEARBEARBEARB+A3hnnvuESEUBEEQBEEQBEEoRXTt2jUdIfzhhx8E QRAEQRAEQRCE3xA+/fRTEUJBEARBEARBEIRShAihIAiCIAiCIAhCiUKEUBAEQRAEQRAEoURRbUI4 f/58N2fOHDdr1qxTAtSFOp3udRUEQRAEQSh1jJo41d3wZHf3t9tecb9r2f43C9p3w1Pd3eiovUl6 mDNmtJvY6mY3pt45bvSZfxQioIuJt94c6WZMos4WThvhfuxzuVvT+X+5nzv+byUL2v9j38vdwukj M/pZtQjhvHnz3OzZs93GjRvdkSNH/HcsTiYOHz7s60KdqNvpWldBEARBEIRSx5hJU91ZrTq4eg/2 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 IAglimyE8P8H4sam5is+PfIAAAAASUVORK5CYII= --001a114a9ebe668843055377ad3b-- --001a114a9ebe668845055377ad3c Content-Type: application/octet-stream; name="Partition_v6.patch" Content-Disposition: attachment; filename="Partition_v6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j4p5puyu1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1h LmpzCmluZGV4IDBlOTA5OTcuLmVmNDk2ZTcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hl bWEuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcwpAQCAtMTQ1LDYgKzE0NSwxNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5zY2hlbWEnLCBbCiAgICAgZ3JvdXA6IGdldHRleHQoJ1RhYmxl JyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKICAgICB0eXBlOiAnc3dpdGNoJywKICAgICBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgLy8gSWYgdGFibGUgaXMgcGFydGl0aW9uZWQg dGFibGUgdGhlbiBkaXNhYmxlZCBpdC4KKyAgICAgIGlmIChtLnRvcCAmJiBtLnRvcC5nZXQoJ2lz X3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAgLy8gV2UgYWxzbyBuZWVkIHRvIHVuc2V0IHJlc3Qg b2YgYWxsCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgbS5zZXQo J2F1dG92YWN1dW1fY3VzdG9tJywgZmFsc2UpOworICAgICAgICB9LCAxMCk7CisKKyAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICB9CisKICAgICAgIGlmKCFtLnRvcC5pblNjaGVtYS5hcHBseSh0 aGlzLCBbbV0pKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KQEAgLTQ1OSw2ICs0 NjksMzIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAgICAgICByZXR1cm4g dHJ1ZTsKICAgICAgIH0KICAgICB9KTsKKworICAgIHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5v ZGVIaWVyYXJjaHkgPSBmdW5jdGlvbihpKSB7CisgICAgICB2YXIgaWR4ID0gMCwKKyAgICAgICAg ICByZXMgPSB7fSwKKyAgICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWU7CisKKyAgICAgIGRvIHsK KyAgICAgICAgZCA9IHQuaXRlbURhdGEoaSk7CisgICAgICAgIGlmICgKKyAgICAgICAgICBkLl90 eXBlIGluIHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQK KyAgICAgICAgKSB7CisgICAgICAgICAgaWYgKGQuX3R5cGUgPT09ICdwYXJ0aXRpb24nIHx8IGQu X3R5cGUgPT09ICd0YWJsZScpIHsKKyAgICAgICAgICAgIGlmICghKCd0YWJsZScgaW4gcmVzKSkg eworICAgICAgICAgICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0 eSc6IGlkeH0pOworICAgICAgICAgICAgICBpZHggLT0gMTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzW2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQs IHsncHJpb3JpdHknOiBpZHh9KTsKKyAgICAgICAgICAgIGlkeCAtPSAxOworICAgICAgICAgIH0K KyAgICAgICAgfQorICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51 bGw7CisgICAgICB9IHdoaWxlIChpKTsKKworICAgICAgcmV0dXJuIHJlczsKKyAgICB9OwogICB9 CiAKICAgLy8gU3dpdGNoIENlbGwgd2l0aCBEZXBzIChzcGVjaWZpY2FsbHkgZm9yIHRhYmxlIGNo aWxkcmVuKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19f aW5pdF9fLnB5CmluZGV4IGY2ZmE2NWUuLjE3ZDk3MDcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvX19pbml0X18ucHkKQEAgLTExLDIyICsxMSwxNiBA QAogCiBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCiBpbXBvcnQgcmUKLWZyb20gZnVuY3Rvb2xz IGltcG9ydCB3cmFwcwogCiBpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMgYXMgZGF0YWJhc2UKLWZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1w bGF0ZSwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRl LCByZXF1ZXN0LCBqc29uaWZ5LCB1cmxfZm9yCiBmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0 ZXh0CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnNjaGVtYXMudXRpbHMgXAotICAgIGltcG9ydCBTY2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVS ZWFkZXIsIFZhY3V1bVNldHRpbmdzLCBcCi0gICAgdHJpZ2dlcl9kZWZpbml0aW9uLCBwYXJzZV9y dWxlX2RlZmluaXRpb24KLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy51dGlscyBpbXBvcnQgcGFyc2VfcHJpdl9mcm9tX2RiLCBcCi0gICAgcGFyc2VfcHJpdl90b19k YgotZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworICAg IGltcG9ydCBTY2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdz Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudXRpbHMgaW1wb3J0 IHBhcnNlX3ByaXZfdG9fZGIKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pz b25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2VfcmVzcG9uc2Ug YXMgYWpheF9yZXNwb25zZSwgZ29uZQotZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQg Z2V0X2RyaXZlcgotCi1mcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20g LnV0aWxzIGltcG9ydCBCYXNlVGFibGVWaWV3CiAKIAogY2xhc3MgVGFibGVNb2R1bGUoU2NoZW1h Q2hpbGRNb2R1bGUpOgpAQCAtNzksMTEgKzczLDIyIEBAIGNsYXNzIFRhYmxlTW9kdWxlKFNjaGVt YUNoaWxkTW9kdWxlKToKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBkYXRhYmFzZS5EYXRh YmFzZU1vZHVsZS5OT0RFX1RZUEUKIAorICAgIGRlZiBnZXRfb3duX2phdmFzY3JpcHRzKHNlbGYp OgorICAgICAgICBzY3JpcHRzID0gU2NoZW1hQ2hpbGRNb2R1bGUuZ2V0X293bl9qYXZhc2NyaXB0 cyhzZWxmKQorCisgICAgICAgIHNjcmlwdHMuYXBwZW5kKHsKKyAgICAgICAgICAgICduYW1lJzog J3BnYWRtaW4uYnJvd3Nlci50YWJsZS5wYXJ0aXRpb24udXRpbHMnLAorICAgICAgICAgICAgJ3Bh dGgnOiB1cmxfZm9yKCdicm93c2VyLmluZGV4JykgKyAndGFibGUvc3RhdGljL2pzL3BhcnRpdGlv bi51dGlscycsCisgICAgICAgICAgICAnd2hlbic6ICdkYXRhYmFzZScsICdpc190ZW1wbGF0ZSc6 IEZhbHNlCisgICAgICAgIH0pCisKKyAgICAgICAgcmV0dXJuIHNjcmlwdHMKKwogCiBibHVlcHJp bnQgPSBUYWJsZU1vZHVsZShfX25hbWVfXykKIAogCi1jbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5v ZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgorY2xhc3MgVGFibGVWaWV3 KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgIiIi CiAgICAgVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9y IFRhYmxlIG5vZGUKIApAQCAtOTYsMTEgKzEwMSw2IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAtIFRoaXMg cHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlzIG5vZGUuCiAg ICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCiAKLSAgICAq IGNoZWNrX3ByZWNvbmRpdGlvbigpCi0gICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUg YXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKLSAgICAgICAgZGF0YWJhc2UgY29ubmVj dGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKLSAgICAgICAg bWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKLQogICAgICog bGlzdCgpCiAgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUgVGFi bGUgbm9kZXMgd2l0aGluIHRoYXQKICAgICAgIGNvbGxlY3Rpb24uCkBAIC0xNDksMTAgKzE0OSw2 IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1 dW1TZXR0aW5ncyk6CiAgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBkZXBlbmRl bnQgbGlzdCB0byBzaG93IGl0IGluIGRlcGVuZGVudAogICAgICAgICBwYW5lIGZvciB0aGUgc2Vs ZWN0ZWQgbm9kZS4KIAotICAgICogX2Zvcm1hdHRlcihkYXRhLCB0aWQpCi0gICAgICAtIEl0IHdp bGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0Ci0gICAgICAgIGFzIHBl ciBjbGllbnQgbW9kZWwgZm9ybWF0Ci0KICAgICAqIGdldF90eXBlcyhzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkKQogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qgb2YgdHlw ZXMgYXZhaWxhYmxlIGZvciBjb2x1bW5zIG5vZGUKICAgICAgICAgdmlhIEFKQVggcmVzcG9uc2UK QEAgLTE3OCwxOSArMTc0LDYgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0 YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAqIGdldF90b2FzdF90YWJsZV92YWN1 dW0oZ2lkLCBzaWQsIGRpZCwgc2NpZD1Ob25lLCB0aWQ9Tm9uZSkKICAgICAgIC0gRmV0Y2ggdGhl IGRlZmF1bHQgdmFsdWVzIGZvciB0b2FzdCB0YWJsZSBhdXRvLXZhY3V1bQogCi0gICAgKiBfY29s dW1uc19mb3JtYXR0ZXIodGlkLCBkYXRhKToKLSAgICAgIC0gSXQgd2lsbCByZXR1cm4gZm9ybWF0 dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBm b3JtYXQgZm9yIGNvbHVtbiBub2RlCi0KLSAgICAqIF9pbmRleF9jb25zdHJhaW50c19mb3JtYXR0 ZXIoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAgICAgLSBJdCB3aWxsIHJldHVybiBmb3JtYXR0 ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZv cm1hdCBmb3IgaW5kZXggY29uc3RyYWludCBub2RlCi0KLSAgICAqIF9jbHR5cGVfZm9ybWF0dGVy KHR5cGUpOiAoc3RhdGljbWV0aG9kKQotICAgICAgLSBXZSBuZWVkIHRvIHJlbW92ZSBbXSBmcm9t IHR5cGUgYW5kIGFwcGVuZCBpdAotICAgICAgICBhZnRlciBsZW5ndGgvcHJlY2lzaW9uIHNvIHdl IHdpbGwgc2VuZCBmbGFnIGZvcgotICAgICAgICBzcWwgdGVtcGxhdGUKLQogICAgICogX3BhcnNl X2Zvcm1hdF9jb2x1bW5zKHNlbGYsIGRhdGEsIG1vZGU9Tm9uZSk6CiAgICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgcGFyc2UgYW5kIHJldHVybiBmb3JtYXR0ZWQgbGlzdCBvZiBjb2x1bW5zCiAg ICAgICAgICBhZGRlZCBieSB1c2VyCkBAIC0yNTIsNzEgKzIzNSwxNiBAQCBjbGFzcyBUYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAg ICAgICAnZ2V0X2FjY2Vzc19tZXRob2RzJzogW3t9LCB7J2dldCc6ICdnZXRfYWNjZXNzX21ldGhv ZHMnfV0sCiAgICAgICAgICdnZXRfb3Blcl9jbGFzcyc6IFt7fSwgeydnZXQnOiAnZ2V0X29wZXJf Y2xhc3MnfV0sCiAgICAgICAgICdnZXRfb3BlcmF0b3InOiBbe30sIHsnZ2V0JzogJ2dldF9vcGVy YXRvcid9XSwKKyAgICAgICAgJ2dldF9hdHRhY2hfdGFibGVzJzogWworICAgICAgICAgICAgeydn ZXQnOiAnZ2V0X2F0dGFjaF90YWJsZXMnfSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2dldF9hdHRh Y2hfdGFibGVzJ31dLAogICAgICAgICAnc2VsZWN0X3NxbCc6IFt7J2dldCc6ICdzZWxlY3Rfc3Fs J31dLAogICAgICAgICAnaW5zZXJ0X3NxbCc6IFt7J2dldCc6ICdpbnNlcnRfc3FsJ31dLAogICAg ICAgICAndXBkYXRlX3NxbCc6IFt7J2dldCc6ICd1cGRhdGVfc3FsJ31dLAogICAgICAgICAnZGVs ZXRlX3NxbCc6IFt7J2dldCc6ICdkZWxldGVfc3FsJ31dCi0KICAgICB9KQogCi0gICAgZGVmIGNo ZWNrX3ByZWNvbmRpdGlvbihmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKLSAgICAgICAgZGF0 YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNo ZXMKLSAgICAgICAgbWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKLSAgICAgICAgIiIiCi0KLSAgICAgICAgQHdyYXBzKGYpCi0gICAgICAgIGRlZiB3cmFwKCph cmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2Vs ZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKLSAgICAgICAgICAgIHNlbGYgPSBhcmdz WzBdCi0gICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQot ICAgICAgICAgICAgZGlkID0ga3dhcmdzWydkaWQnXQotICAgICAgICAgICAgc2VsZi5tYW5hZ2Vy ID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQotICAgICAgICAgICAg c2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCi0g ICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIucXRJZGVudAotICAgICAgICAgICAgc2Vs Zi5xdFR5cGVJZGVudCA9IGRyaXZlci5xdFR5cGVJZGVudAotICAgICAgICAgICAgIyBXZSBuZWVk IGRhdGxhc3RzeXNvaWQgdG8gY2hlY2sgaWYgY3VycmVudCB0YWJsZSBpcyBzeXN0ZW0gdGFibGUK LSAgICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCA9IHNlbGYubWFuYWdlci5kYl9pbmZvWwot ICAgICAgICAgICAgICAgIGRpZAotICAgICAgICAgICAgXVsnZGF0bGFzdHN5c29pZCddIGlmIHNl bGYubWFuYWdlci5kYl9pbmZvIGlzIG5vdCBOb25lIGFuZCBcCi0gICAgICAgICAgICAgICAgZGlk IGluIHNlbGYubWFuYWdlci5kYl9pbmZvIGVsc2UgMAotCi0gICAgICAgICAgICB2ZXIgPSBzZWxm Lm1hbmFnZXIudmVyc2lvbgotICAgICAgICAgICAgIyBTZXQgdGhlIHRlbXBsYXRlIHBhdGggZm9y IHRoZSBTUUwgc2NyaXB0cwotICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ3RhYmxl L3NxbC8jezB9IycuZm9ybWF0KHZlcikKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgQ29s dW1uICxjaGVjayBjb25zdHJhaW50IGFuZCBleGNsdXNpb24gY29uc3RyYWludCBub2RlCi0gICAg ICAgICAgICBzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoID0gJ2NvbHVtbi9zcWwvI3swfSMnLmZv cm1hdCh2ZXIpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0 aCA9ICdjaGVja19jb25zdHJhaW50L3NxbC8jezB9IycuZm9ybWF0KHZlcikKLSAgICAgICAgICAg IHNlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCA9ICdleGNsdXNpb25fY29u c3RyYWludC9zcWwvI3swfSMnLmZvcm1hdCh2ZXIpCi0KLSAgICAgICAgICAgICMgVGVtcGxhdGUg Zm9yIFBLICYgVW5pcXVlIGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAgICAgc2VsZi5pbmRleF9j b25zdHJhaW50X3RlbXBsYXRlX3BhdGggPSAnaW5kZXhfY29uc3RyYWludC9zcWwnCi0KLSAgICAg ICAgICAgICMgVGVtcGxhdGUgZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbm9kZQotICAgICAg ICAgICAgc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fa2V5L3NxbC8j ezB9IycuZm9ybWF0KHZlcikKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgaW5kZXggbm9k ZQotICAgICAgICAgICAgc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoID0gJ2luZGV4L3NxbC8jezB9 IycuZm9ybWF0KHZlcikKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgdHJpZ2dlciBub2Rl Ci0gICAgICAgICAgICBzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCA9ICd0cmlnZ2VyL3NxbC8j ezB9IycuZm9ybWF0KHZlcikKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgcnVsZXMgbm9k ZQotICAgICAgICAgICAgc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoID0gJ3J1bGVzL3NxbCcKLQot ICAgICAgICAgICAgIyBTdXBwb3J0ZWQgQUNMIGZvciB0YWJsZQotICAgICAgICAgICAgc2VsZi5h Y2wgPSBbJ2EnLCAncicsICd3JywgJ2QnLCAnRCcsICd4JywgJ3QnXQotCi0gICAgICAgICAgICAj IFN1cHBvcnRlZCBBQ0wgZm9yIGNvbHVtbnMKLSAgICAgICAgICAgIHNlbGYuY29sdW1uX2FjbCA9 IFsnYScsICdyJywgJ3cnLCAneCddCi0KLSAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3 YXJncykKLQotICAgICAgICByZXR1cm4gd3JhcAotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBsaXN0KHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlv biBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSB0YWJsZSBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0 aW9uLgpAQCAtMzMwLDEwICsyNTgsMTEgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgUmV0dXJuczoKICAg ICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRhYmxlIG5vZGVzCiAgICAgICAgICIiIgotICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5 c29pZCkKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpv aW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAg ICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLAorICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxm LmRhdGxhc3RzeXNvaWQKKyAgICAgICAgKQogICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQogCiAgICAgICAgIGlmIG5vdCBzdGF0dXM6CkBAIC0zNDMsNyAr MjcyLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIs IFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0g ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiBub2RlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAg ICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIHRh YmxlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCkBAIC0zNTksOSArMjg4LDEwIEBAIGNs YXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0 aW5ncyk6CiAgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSB0YWJsZSBub2RlcwogICAgICAg ICAiIiIKICAgICAgICAgcmVzID0gW10KLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjaWQ9c2NpZCwgdGlkPXRpZCkKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCdd KSwKKyAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZAorICAgICAgICApCiAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQogICAgICAgICBpZiBu b3Qgc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQpAQCAtMzcyLDkgKzMwMiwxMCBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5v ZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgICAg IHJzZXRbJ3Jvd3MnXVswXVsnb2lkJ10sCiAgICAgICAgICAgICAgICAgc2NpZCwKICAgICAgICAg ICAgICAgICByc2V0Wydyb3dzJ11bMF1bJ25hbWUnXSwKLSAgICAgICAgICAgICAgICBpY29uPSJp Y29uLXRhYmxlIiwKKyAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlvbiIgaWYgJ2lz X3BhcnRpdGlvbmVkJyBpbiByc2V0Wydyb3dzJ11bMF0gYW5kIHJzZXRbJ3Jvd3MnXVswXVsnaXNf cGFydGl0aW9uZWQnXSBlbHNlICJpY29uLXRhYmxlIiwKICAgICAgICAgICAgICAgICB0aWdnZXJf Y291bnQ9cnNldFsncm93cyddWzBdWyd0cmlnZ2VyY291bnQnXSwKLSAgICAgICAgICAgICAgICBo YXNfZW5hYmxlX3RyaWdnZXJzPXJzZXRbJ3Jvd3MnXVswXVsnaGFzX2VuYWJsZV90cmlnZ2Vycydd CisgICAgICAgICAgICAgICAgaGFzX2VuYWJsZV90cmlnZ2Vycz1yc2V0Wydyb3dzJ11bMF1bJ2hh c19lbmFibGVfdHJpZ2dlcnMnXSwKKyAgICAgICAgICAgICAgICBpc19wYXJ0aXRpb25lZD1yc2V0 Wydyb3dzJ11bMF1bJ2lzX3BhcnRpdGlvbmVkJ10gaWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiByc2V0 Wydyb3dzJ11bMF0gZWxzZSBGYWxzZQogICAgICAgICAgICAgKQogCiAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCkBAIC0zODIsOCArMzEzLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAg ICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0KLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIG5vZGVzKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlv biBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSB0YWJsZSBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0 aW9uLgpAQCAtMzk4LDkgKzMyOCwxMCBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgSlNPTiBvZiBh dmFpbGFibGUgdGFibGUgbm9kZXMKICAgICAgICAgIiIiCiAgICAgICAgIHJlcyA9IFtdCi0gICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQpCisgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRl X3BhdGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICBzY2lkPXNjaWQKKyAgICAgICAgKQog ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAg ICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cnNldCkKQEAgLTQxMSw5ICszNDIsMTAgQEAgY2xhc3MgVGFibGVWaWV3 KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAg ICAgICAgICAgICAgICAgcm93WydvaWQnXSwKICAgICAgICAgICAgICAgICAgICAgc2NpZCwKICAg ICAgICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgIGljb249 Imljb24tdGFibGUiLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlvbiIg aWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiByb3cgYW5kIHJvd1snaXNfcGFydGl0aW9uZWQnXSBlbHNl ICJpY29uLXRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgdGlnZ2VyX2NvdW50PXJvd1sndHJp Z2dlcmNvdW50J10sCi0gICAgICAgICAgICAgICAgICAgIGhhc19lbmFibGVfdHJpZ2dlcnM9cm93 WydoYXNfZW5hYmxlX3RyaWdnZXJzJ10KKyAgICAgICAgICAgICAgICAgICAgaGFzX2VuYWJsZV90 cmlnZ2Vycz1yb3dbJ2hhc19lbmFibGVfdHJpZ2dlcnMnXSwKKyAgICAgICAgICAgICAgICAgICAg aXNfcGFydGl0aW9uZWQ9cm93Wydpc19wYXJ0aXRpb25lZCddIGlmICdpc19wYXJ0aXRpb25lZCcg aW4gcm93IGVsc2UgRmFsc2UKICAgICAgICAgICAgICAgICApKQogCiAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCkBAIC00MjEsNyArMzUzLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAg ICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRfYWxsX3RhYmxl cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAg ICAgICBBcmdzOgpAQCAtNDM1LDkgKzM2NywxMiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5v ZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgUmV0 dXJucyB0aGUgbGl0cyBvZiB0YWJsZXMgcmVxdWlyZWQgZm9yIGNvbnN0cmFpbnRzLgogICAgICAg ICAiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfdGFibGVzX2Zvcl9jb25zdHJhaW50cy5zcWwnXSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXNvYmo9c2VsZi5ibHVlcHJpbnQu c2hvd19zeXN0ZW1fb2JqZWN0cykKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGFi bGVfdGVtcGxhdGVfcGF0aCwgJ2dldF90YWJsZXNfZm9yX2NvbnN0cmFpbnRzLnNxbCcKKyAgICAg ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICBzaG93X3N5c29iaj1zZWxmLmJsdWVwcmlu dC5zaG93X3N5c3RlbV9vYmplY3RzCisgICAgICAgICAgICApCiAKICAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAKQEAgLTQ1Miw3ICszODcsNyBA QCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVt U2V0dGluZ3MpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAg ICBkZWYgZ2V0X3RhYmxlX3ZhY3V1bShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkPU5vbmUsIHRp ZD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIEZldGNoIHRoZSBkZWZhdWx0IHZhbHVlcyBm b3IgdGFibGUgYXV0by12YWN1dW0KQEAgLTQ2OCw3ICs0MDMsNyBAQCBjbGFzcyBUYWJsZVZpZXco UEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAg ICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF90b2FzdF90 YWJsZV92YWN1dW0oc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZD1Ob25lLCB0aWQ9Tm9uZSk6CiAg ICAgICAgICIiIgogICAgICAgICBGZXRjaCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRvYXN0IHRh YmxlIGF1dG8tdmFjdXVtCkBAIC00ODQsNyArNDE5LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hp bGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAg IHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBC YXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRfYWNjZXNzX21ldGhv ZHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAiIiIKICAg ICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFjY2VzcyBtZXRob2RzLgpAQCAtNTAxLDkgKzQz NiwxMCBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwg VmFjdXVtU2V0dGluZ3MpOgogCiAgICAgICAgICIiIgogICAgICAgICByZXMgPSBbeydsYWJlbCc6 ICcnLCAndmFsdWUnOiAnJ31dCi0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgJ2dldF9hY2Nlc3NfbWV0aG9kcy5zcWwnXSkpCisgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCisgICAgICAgICAgICBzZWxmLmV4 Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsICdnZXRfYWNjZXNzX21ldGhvZHMuc3Fs JworICAgICAgICBdKSkKKwogICAgICAgICBzdGF0dXMsIHJlc3QgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KHNxbCkKIAogICAgICAgICBpZiBub3Qgc3RhdHVzOgpAQCAtNTE4LDcgKzQ1NCw3 IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1 dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIAotICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24K ICAgICBkZWYgZ2V0X29wZXJfY2xhc3Moc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5v bmUpOgogICAgICAgICAiIiIKIApAQCAtNTM3LDkgKzQ3MywxMiBAQCBjbGFzcyBUYWJsZVZpZXco UEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAg ICB0cnk6CiAgICAgICAgICAgICBpZiBkYXRhIGFuZCAnaW5kZXh0eXBlJyBpbiBkYXRhOgogICAg ICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb3Blcl9jbGFzcy5zcWwnXSksCi0gICAgICAg ICAgICAgICAgICAgIGluZGV4dHlwZT1kYXRhWydpbmRleHR5cGUnXSkKKyAgICAgICAgICAgICAg ICAgICAgIi8iLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9v cGVyX2NsYXNzLnNxbCcKKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg ICAgIGluZGV4dHlwZT1kYXRhWydpbmRleHR5cGUnXQorICAgICAgICAgICAgICAgICkKIAogICAg ICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CiAKQEAgLTU1NSw3ICs0OTQsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXN0cihlKSkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5j aGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZ2V0X29wZXJhdG9yKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAKQEAgLTU3NCwxMCArNTEzLDEzIEBA IGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1T ZXR0aW5ncyk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGRhdGEgYW5kICdjb2xfdHlw ZScgaW4gZGF0YToKICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAg ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29wZXJhdG9yLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oWworICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9vcGVyYXRvci5zcWwnCisgICAgICAgICAgICAgICAgICAgIF0p LAogICAgICAgICAgICAgICAgICAgICB0eXBlPWRhdGFbJ2NvbF90eXBlJ10sCi0gICAgICAgICAg ICAgICAgICAgIHNob3dfc3lzb2JqPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMp CisgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzb2JqPXNlbGYuYmx1ZXByaW50LnNob3dfc3lz dGVtX29iamVjdHMKKyAgICAgICAgICAgICAgICApCiAKICAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQogCkBAIC01OTMsNTA2ICs1MzUs NyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFj dXVtU2V0dGluZ3MpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIGRl ZiBfY29sdW1uc19mb3JtYXR0ZXIoc2VsZiwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAg ICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgZGF0YTog ZGljdCBvZiBxdWVyeSByZXN1bHQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgSXQg d2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAg IGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBjb2x1bW4gbm9kZQotICAgICAgICAiIiIK LSAgICAgICAgZm9yIGNvbHVtbiBpbiBkYXRhWydjb2x1bW5zJ106Ci0KLSAgICAgICAgICAgICMg V2UgbmVlZCB0byBmb3JtYXQgdmFyaWFibGVzIGFjY29yZGluZyB0byBjbGllbnQganMgY29sbGVj dGlvbgotICAgICAgICAgICAgaWYgJ2F0dG9wdGlvbnMnIGluIGNvbHVtbiBhbmQgY29sdW1uWydh dHRvcHRpb25zJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc3Bjb3B0aW9ucyA9IFtd Ci0gICAgICAgICAgICAgICAgZm9yIHNwY29wdGlvbiBpbiBjb2x1bW5bJ2F0dG9wdGlvbnMnXToK LSAgICAgICAgICAgICAgICAgICAgaywgdiA9IHNwY29wdGlvbi5zcGxpdCgnPScpCi0gICAgICAg ICAgICAgICAgICAgIHNwY29wdGlvbnMuYXBwZW5kKHsnbmFtZSc6IGssICd2YWx1ZSc6IHZ9KQot Ci0gICAgICAgICAgICAgICAgY29sdW1uWydhdHRvcHRpb25zJ10gPSBzcGNvcHRpb25zCi0KLSAg ICAgICAgICAgICMgTmVlZCB0byBmb3JtYXQgc2VjdXJpdHkgbGFiZWxzIGFjY29yZGluZyB0byBj bGllbnQganMgY29sbGVjdGlvbgotICAgICAgICAgICAgaWYgJ3NlY2xhYmVscycgaW4gY29sdW1u IGFuZCBjb2x1bW5bJ3NlY2xhYmVscyddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNl Y2xhYmVscyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIHNlY2xibHMgaW4gY29sdW1uWydzZWNs YWJlbHMnXToKLSAgICAgICAgICAgICAgICAgICAgaywgdiA9IHNlY2xibHMuc3BsaXQoJz0nKQot ICAgICAgICAgICAgICAgICAgICBzZWNsYWJlbHMuYXBwZW5kKHsncHJvdmlkZXInOiBrLCAnbGFi ZWwnOiB2fSkKLQotICAgICAgICAgICAgICAgIGNvbHVtblsnc2VjbGFiZWxzJ10gPSBzZWNsYWJl bHMKLQotICAgICAgICAgICAgaWYgJ2F0dG51bScgaW4gY29sdW1uIGFuZCBjb2x1bW5bJ2F0dG51 bSddIGlzIG5vdCBOb25lIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1u WydhdHRudW0nXSA+IDA6Ci0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBhcnNlICYgY29u dmVydCBBQ0wgY29taW5nIGZyb20gZGF0YWJhc2UgdG8ganNvbiBmb3JtYXQKLSAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRl X3BhdGgsICdhY2wuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkLCBjbGlkPWNvbHVtblsnYXR0bnVtJ10pCi0gICAgICAgICAgICAgICAgc3RhdHVz LCBhY2wgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLQotICAgICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9YWNsKQotCi0gICAgICAgICAgICAgICAgIyBXZSB3aWxsIHNldCBnZXQg cHJpdmlsZWdlcyBmcm9tIGFjbCBzcWwgc28gd2UgZG9uJ3QgbmVlZAotICAgICAgICAgICAgICAg ICMgaXQgZnJvbSBwcm9wZXJ0aWVzIHNxbAotICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0YWNs J10gPSBbXQotCi0gICAgICAgICAgICAgICAgZm9yIHJvdyBpbiBhY2xbJ3Jvd3MnXToKLSAgICAg ICAgICAgICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCi0gICAgICAgICAg ICAgICAgICAgIGNvbHVtbi5zZXRkZWZhdWx0KHJvd1snZGVmdHlwZSddLCBbXSkuYXBwZW5kKHBy aXYpCi0KLSAgICAgICAgICAgICAgICAjIHdlIGFyZSByZWNlaXZpbmcgcmVxdWVzdCB3aGVuIGlu IGVkaXQgbW9kZQotICAgICAgICAgICAgICAgICMgd2Ugd2lsbCBzZW5kIGZpbHRlcmVkIHR5cGVz IHJlbGF0ZWQgdG8gY3VycmVudCB0eXBlCi0gICAgICAgICAgICAgICAgcHJlc2VudF90eXBlID0g Y29sdW1uWydjbHR5cGUnXQotCi0gICAgICAgICAgICAgICAgdHlwZV9pZCA9IGNvbHVtblsnYXR0 dHlwaWQnXQotCi0gICAgICAgICAgICAgICAgZnVsbHR5cGUgPSBzZWxmLmdldF9mdWxsX3R5cGUo Ci0gICAgICAgICAgICAgICAgICAgIGNvbHVtblsndHlwbnNwbmFtZSddLCBjb2x1bW5bJ3R5cG5h bWUnXSwKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uWydpc2R1cCddLCBjb2x1bW5bJ2F0dG5k aW1zJ10sIGNvbHVtblsnYXR0dHlwbW9kJ10KLSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAg ICAgICAgICBsZW5ndGggPSBGYWxzZQotICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IEZhbHNl Ci0gICAgICAgICAgICAgICAgaWYgJ2VsZW1vaWQnIGluIGNvbHVtbjoKLSAgICAgICAgICAgICAg ICAgICAgbGVuZ3RoLCBwcmVjaXNpb24sIHR5cGV2YWwgPSBzZWxmLmdldF9sZW5ndGhfcHJlY2lz aW9uKGNvbHVtblsnZWxlbW9pZCddKQotCi0gICAgICAgICAgICAgICAgIyBTZXQgbGVuZ3RoIGFu ZCBwcmVjaXNpb24gdG8gTm9uZQotICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0bGVuJ10gPSBO b25lCi0gICAgICAgICAgICAgICAgY29sdW1uWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKLQotICAg ICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggJiBwcmVjaXNpb24gYm90aAotICAgICAg ICAgICAgICAgIGlmIGxlbmd0aCBhbmQgcHJlY2lzaW9uOgotICAgICAgICAgICAgICAgICAgICBt YXRjaE9iaiA9IHJlLnNlYXJjaChyJyhcZCspLChcZCspJywgZnVsbHR5cGUpCi0gICAgICAgICAg ICAgICAgICAgIGlmIG1hdGNoT2JqOgotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydh dHRsZW4nXSA9IG1hdGNoT2JqLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW5bJ2F0dHByZWNpc2lvbiddID0gbWF0Y2hPYmouZ3JvdXAoMikKLSAgICAgICAgICAgICAgICBl bGlmIGxlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCBvbmx5 Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyknLCBmdWxs dHlwZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6Ci0gICAgICAgICAgICAgICAg ICAgICAgICBjb2x1bW5bJ2F0dGxlbiddID0gbWF0Y2hPYmouZ3JvdXAoMSkKLSAgICAgICAgICAg ICAgICAgICAgICAgIGNvbHVtblsnYXR0cHJlY2lzaW9uJ10gPSBOb25lCi0KLQotICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdpc19yZWZlcmVuY2VkLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwgY2xpZD1jb2x1bW5bJ2F0dG51bSddKQotCi0gICAgICAgICAgICAgICAg c3RhdHVzLCBpc19yZWZlcmVuY2UgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQotCi0g ICAgICAgICAgICAgICAgZWRpdF90eXBlc19saXN0ID0gbGlzdCgpCi0gICAgICAgICAgICAgICAg IyBXZSB3aWxsIG5lZWQgcHJlc2VudCB0eXBlIGluIGVkaXQgbW9kZQotCi0gICAgICAgICAgICAg ICAgaWYgY29sdW1uWyd0eXBuc3BuYW1lJ10gPT0gInBnX2NhdGFsb2ciIG9yIGNvbHVtblsndHlw bnNwbmFtZSddID09ICJwdWJsaWMiOgotICAgICAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xp c3QuYXBwZW5kKHByZXNlbnRfdHlwZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg ICAgICAgICAgICB0ID0gc2VsZi5xdFR5cGVJZGVudChzZWxmLmNvbm4sIGNvbHVtblsndHlwbnNw bmFtZSddLCBwcmVzZW50X3R5cGUpCi0gICAgICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlz dC5hcHBlbmQodCkKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uWydjbHR5cGUnXSA9IHQKLQot ICAgICAgICAgICAgICAgIGlmIGludChpc19yZWZlcmVuY2UpID09IDA6Ci0gICAgICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZWRpdF9tb2RlX3R5cGVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHR5cGVfaWQ9dHlwZV9pZCkKLSAgICAgICAgICAgICAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0KLSAgICAgICAgICAg ICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgICAgICAg ICBlZGl0X3R5cGVzX2xpc3QuYXBwZW5kKHJvd1sndHlwbmFtZSddKQotICAgICAgICAgICAgICAg IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocHJlc2Vu dF90eXBlKQotCi0gICAgICAgICAgICAgICAgY29sdW1uWydlZGl0X3R5cGVzJ10gPSBlZGl0X3R5 cGVzX2xpc3QKLSAgICAgICAgICAgICAgICBjb2x1bW5bJ2NsdHlwZSddID0gRGF0YVR5cGVSZWFk ZXIucGFyc2VfdHlwZV9uYW1lKGNvbHVtblsnY2x0eXBlJ10pCi0KLSAgICAgICAgICAgICAgICBp ZiAnaW5ka2V5JyBpbiBjb2x1bW46Ci0gICAgICAgICAgICAgICAgICAgICMgQ3VycmVudCBjb2x1 bW4KLSAgICAgICAgICAgICAgICAgICAgYXR0bnVtID0gc3RyKGNvbHVtblsnYXR0bnVtJ10pCi0K LSAgICAgICAgICAgICAgICAgICAgIyBTaW5nbGUvTGlzdCBvZiBwcmltYXJ5IGtleSBjb2x1bW4o cykKLSAgICAgICAgICAgICAgICAgICAgaW5ka2V5ID0gc3RyKGNvbHVtblsnaW5ka2V5J10pCi0K LSAgICAgICAgICAgICAgICAgICAgIyBXZSB3aWxsIGNoZWNrIGlmIGNvbHVtbiBpcyBpbiBwcmlt YXJ5IGNvbHVtbihzKQotICAgICAgICAgICAgICAgICAgICBpZiBhdHRudW0gaW4gaW5ka2V5LnNw bGl0KCIgIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2lzX3ByaW1hcnlfa2V5 J10gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg ICAgICBjb2x1bW5bJ2lzX3ByaW1hcnlfa2V5J10gPSBGYWxzZQotCi0gICAgICAgIHJldHVybiBk YXRhCi0KLSAgICBkZWYgX2luZGV4X2NvbnN0cmFpbnRzX2Zvcm1hdHRlcihzZWxmLCBkaWQsIHRp ZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGlkOiBU YWJsZSBPSUQKLSAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0Ci0KLSAgICAg ICAgUmV0dXJuczoKLSAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQg b2YgcXVlcnkgcmVzdWx0Ci0gICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBm b3IgaW5kZXggY29uc3RyYWludCBub2RlCi0gICAgICAgICIiIgotCi0gICAgICAgICMgV2Ugd2ls bCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKLSAgICAgICAg aW5kZXhfY29uc3RyYWludHMgPSB7Ci0gICAgICAgICAgICAncCc6ICdwcmltYXJ5X2tleScsICd1 JzogJ3VuaXF1ZV9jb25zdHJhaW50JwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIGN0eXBlIGlu IGluZGV4X2NvbnN0cmFpbnRzLmtleXMoKToKLSAgICAgICAgICAgIGRhdGFbaW5kZXhfY29uc3Ry YWludHNbY3R5cGVdXSA9IFtdCi0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfdHlwZT1jdHlwZSkKLSAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIGZvciByb3cgaW4gcmVzWydy b3dzJ106Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcm93Ci0gICAgICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5p bmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgIGNp ZD1yb3dbJ29pZCddLAotICAgICAgICAgICAgICAgICAgICBjb2xjbnQ9cm93WydpbmRuYXR0cydd KQotICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChz cWwpCi0KLSAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAg ICAgICAgIGNvbHVtbnMgPSBbXQotICAgICAgICAgICAgICAgIGZvciByIGluIHJlc1sncm93cydd OgotICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImNvbHVtbiI6IHJbJ2NvbHVt biddLnN0cmlwKCciJyl9KQotCi0gICAgICAgICAgICAgICAgcmVzdWx0Wydjb2x1bW5zJ10gPSBj b2x1bW5zCi0KLSAgICAgICAgICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlz dCBhbmQvb3IgYXBwZW5kIGludG8KLSAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBB ZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgICAgICBkYXRhLnNldGRlZmF1 bHQoaW5kZXhfY29uc3RyYWludHNbY3R5cGVdLCBbXSkuYXBwZW5kKHJlc3VsdCkKLQotICAgICAg ICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9mb3JlaWduX2tleV9mb3JtYXR0ZXIoc2VsZiwgdGlk LCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aWQ6IFRh YmxlIE9JRAotICAgICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1bHQKLQotICAgICAg ICBSZXR1cm5zOgotICAgICAgICAgICAgSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBv ZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZv ciBmb3JlaWduIGtleSBjb25zdHJhaW50IG5vZGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBX ZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQot Ci0gICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0K LSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQotCi0gICAgICAgIGZvciBmayBpbiByZXN1bHRbJ3Jv d3MnXToKLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGtleXM9emlwKGZrWydjb25ma2V5J10sIGZrWydjb25rZXknXSksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZnJlbGlkPWZrWydjb25mcmVsaWQnXSkKLQot ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQot ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgY29sdW1ucyA9IFtd Ci0gICAgICAgICAgICBjb2xzID0gW10KLSAgICAgICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dz J106Ci0gICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJsb2NhbF9jb2x1bW4iOiByb3db J2NvbmF0dG5hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5j ZXMiOiBma1snY29uZnJlbGlkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJy ZWZlcmVuY2VkIjogcm93Wydjb25mYXR0bmFtZSddfSkKLSAgICAgICAgICAgICAgICBjb2xzLmFw cGVuZChyb3dbJ2NvbmF0dG5hbWUnXSkKLQotICAgICAgICAgICAgZmtbJ2NvbHVtbnMnXSA9IGNv bHVtbnMKLQotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWQ9ZmtbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQotCi0gICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAgICBma1sncmVtb3RlX3Nj aGVtYSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICAgICAgZmtbJ3JlbW90 ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCi0KLSAgICAgICAgICAgIGNvdmVy aW5naW5kZXggPSBzZWxmLnNlYXJjaF9jb3ZlcmluZ2luZGV4KHRpZCwgY29scykKLQotICAgICAg ICAgICAgZmtbJ2NvdmVyaW5naW5kZXgnXSA9IGNvdmVyaW5naW5kZXgKLSAgICAgICAgICAgIGlm IGNvdmVyaW5naW5kZXg6Ci0gICAgICAgICAgICAgICAgZmtbJ2F1dG9pbmRleCddID0gVHJ1ZQot ICAgICAgICAgICAgICAgIGZrWydoYXNpbmRleCddID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToK LSAgICAgICAgICAgICAgICBma1snYXV0b2luZGV4J10gPSBGYWxzZQotICAgICAgICAgICAgICAg IGZrWydoYXNpbmRleCddID0gRmFsc2UKLSAgICAgICAgICAgICMgSWYgbm90IGV4aXN0cyB0aGVu IGNyZWF0ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bwotICAgICAgICAgICAgIyBleGlzdGluZyBs aXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRhIGRpY3RdCi0gICAgICAgICAgICBkYXRhLnNldGRl ZmF1bHQoJ2ZvcmVpZ25fa2V5JywgW10pLmFwcGVuZChmaykKLQotICAgICAgICByZXR1cm4gZGF0 YQotCi0gICAgZGVmIF9jaGVja19jb25zdHJhaW50X2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEp OgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lE Ci0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAgICAgIFJldHVy bnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5 IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGNoZWNr IGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAiIiIKLQotICAgICAgICAjIFdlIHdpbGwgZmV0Y2gg YWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCi0gICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3Bh dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLQotICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotCi0gICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKLSAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5k L29yIGFwcGVuZCBpbnRvCi0gICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1h aW4gZGF0YSBkaWN0XQotCi0gICAgICAgIGRhdGFbJ2NoZWNrX2NvbnN0cmFpbnQnXSA9IHJlc1sn cm93cyddCi0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBfZXhjbHVzaW9uX2NvbnN0 cmFpbnRfZm9ybWF0dGVyKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAg ICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgZGF0YTog ZGljdCBvZiBxdWVyeSByZXN1bHQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgSXQg d2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAg IGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBleGNsdXNpb24gY29uc3RyYWludCBub2Rl Ci0gICAgICAgICIiIgotCi0gICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNv bnN0cmFpbnRzIGZvciB0aGUgdGFibGUKLSAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCkKLQotICAgICAgICBz dGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlc3VsdCkKLQotICAgICAgICBmb3IgZXggaW4gcmVzdWx0Wydyb3dzJ106Ci0KLSAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2lkPWV4WydvaWQnXSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb2xjbnQ9ZXhbJ2luZG5hdHRzJ10pCi0KLSAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotICAgICAgICAgICAgZm9y IHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBpZiByb3dbJ29wdGlvbnMnXSAm IDE6Ci0gICAgICAgICAgICAgICAgICAgIG9yZGVyID0gRmFsc2UKLSAgICAgICAgICAgICAgICAg ICAgbnVsbHNfb3JkZXIgPSBUcnVlIGlmIChyb3dbJ29wdGlvbnMnXSAmIDIpIGVsc2UgRmFsc2UK LSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcmRlciA9IFRydWUK LSAgICAgICAgICAgICAgICAgICAgbnVsbHNfb3JkZXIgPSBUcnVlIGlmIChyb3dbJ29wdGlvbnMn XSAmIDIpIGVsc2UgRmFsc2UKLQotICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29s dW1uIjogcm93Wydjb2xkZWYnXS5zdHJpcCgnIicpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAib3Blcl9jbGFzcyI6IHJvd1snb3BjbmFtZSddLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAib3JkZXIiOiBvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIm51bGxzX29yZGVyIjogbnVsbHNfb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJvcGVyYXRvciI6IHJvd1snb3BybmFtZSddLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiY29sX3R5cGUiOiByb3dbJ2RhdGF0eXBlJ10KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSkKLQotICAgICAgICAgICAgZXhbJ2NvbHVtbnMnXSA9IGNvbHVt bnMKLSAgICAgICAgICAgICMgSWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9vciBh cHBlbmQgaW50bwotICAgICAgICAgICAgIyBleGlzdGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFp biBkYXRhIGRpY3RdCi0gICAgICAgICAgICBkYXRhLnNldGRlZmF1bHQoJ2V4Y2x1ZGVfY29uc3Ry YWludCcsIFtdKS5hcHBlbmQoZXgpCi0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBz ZWFyY2hfY292ZXJpbmdpbmRleChzZWxmLCB0aWQsIGNvbHMpOgotICAgICAgICAiIiIKLQotICAg ICAgICBBcmdzOgotICAgICAgICAgIHRpZDogVGFibGUgaWQKLSAgICAgICAgICBjb2xzOiBjb2x1 bW4gbGlzdAotCi0gICAgICAgIFJldHVybnM6Ci0KLSAgICAgICAgIiIiCi0KLSAgICAgICAgY29s cyA9IHNldChjb2xzKQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRpZD10aWQpCi0gICAgICAgIHN0YXR1cywgY29uc3RyYWludHMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgcmFpc2UgRXhjZXB0aW9uKGNvbnN0cmFpbnRzKQotCi0gICAgICAgIGZvciBjb3N0cm50 IGluIGNvbnN0cmFpbnRzWydyb3dzJ106Ci0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0 ZV9wYXRoLCAnZ2V0X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgICAgIGNpZD1jb3N0cm50Wydv aWQnXSwKLSAgICAgICAgICAgICAgICBjb2xjbnQ9Y29zdHJudFsnaW5kbmF0dHMnXSkKLSAgICAg ICAgICAgIHN0YXR1cywgcmVzdCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdCkKLQotICAgICAgICAgICAgaW5kZXhjb2xzID0gc2V0 KCkKLSAgICAgICAgICAgIGZvciByIGluIHJlc3RbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBp bmRleGNvbHMuYWRkKHJbJ2NvbHVtbiddLnN0cmlwKCciJykpCi0KLSAgICAgICAgICAgIGlmIGxl bihjb2xzIC0gaW5kZXhjb2xzKSA9PSBsZW4oaW5kZXhjb2xzIC0gY29scykgPT0gMDoKLSAgICAg ICAgICAgICAgICByZXR1cm4gY29zdHJudFsiaWR4bmFtZSJdCi0KLSAgICAgICAgcmV0dXJuIE5v bmUKLQotICAgIGRlZiBfZm9ybWF0dGVyKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBkYXRhKToKLSAg ICAgICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5 IHJlc3VsdAotICAgICAgICAgICAgc2NpZDogc2NoZW1hIG9pZAotICAgICAgICAgICAgdGlkOiB0 YWJsZSBvaWQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgSXQgd2lsbCByZXR1cm4g Zm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAgIGFzIHBlciBjbGll bnQgbW9kZWwgZm9ybWF0Ci0gICAgICAgICIiIgotICAgICAgICAjIE5lZWQgdG8gZm9ybWF0IHNl Y3VyaXR5IGxhYmVscyBhY2NvcmRpbmcgdG8gY2xpZW50IGpzIGNvbGxlY3Rpb24KLSAgICAgICAg aWYgJ3NlY2xhYmVscycgaW4gZGF0YSBhbmQgZGF0YVsnc2VjbGFiZWxzJ10gaXMgbm90IE5vbmU6 Ci0gICAgICAgICAgICBzZWNsYWJlbHMgPSBbXQotICAgICAgICAgICAgZm9yIHNlY2xibHMgaW4g ZGF0YVsnc2VjbGFiZWxzJ106Ci0gICAgICAgICAgICAgICAgaywgdiA9IHNlY2xibHMuc3BsaXQo Jz0nKQotICAgICAgICAgICAgICAgIHNlY2xhYmVscy5hcHBlbmQoeydwcm92aWRlcic6IGssICds YWJlbCc6IHZ9KQotCi0gICAgICAgICAgICBkYXRhWydzZWNsYWJlbHMnXSA9IHNlY2xhYmVscwot Ci0gICAgICAgICMgV2UgbmVlZCB0byBwYXJzZSAmIGNvbnZlcnQgQUNMIGNvbWluZyBmcm9tIGRh dGFiYXNlIHRvIGpzb24gZm9ybWF0Ci0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWNsLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRpZD10aWQsIHNjaWQ9c2NpZCkKLSAgICAgICAgc3RhdHVzLCBhY2wgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9YWNsKQotCi0gICAg ICAgICMgV2Ugd2lsbCBzZXQgZ2V0IHByaXZpbGVnZXMgZnJvbSBhY2wgc3FsIHNvIHdlIGRvbid0 IG5lZWQKLSAgICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMgc3FsCi0gICAgICAgIGZvciByb3cg aW4gYWNsWydyb3dzJ106Ci0gICAgICAgICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2RiKHJv dykKLSAgICAgICAgICAgIGlmIHJvd1snZGVmdHlwZSddIGluIGRhdGE6Ci0gICAgICAgICAgICAg ICAgZGF0YVtyb3dbJ2RlZnR5cGUnXV0uYXBwZW5kKHByaXYpCi0gICAgICAgICAgICBlbHNlOgot ICAgICAgICAgICAgICAgIGRhdGFbcm93WydkZWZ0eXBlJ11dID0gW3ByaXZdCi0KLSAgICAgICAg IyBXZSB3aWxsIGFkZCBBdXRvIHZhY3V1bSBkZWZhdWx0cyB3aXRoIG91dCByZXN1bHQgZm9yIGdy aWQKLSAgICAgICAgZGF0YVsndmFjdXVtX3RhYmxlJ10gPSBzZWxmLnBhcnNlX3ZhY3V1bV9kYXRh KHNlbGYuY29ubiwgZGF0YSwgJ3RhYmxlJykKLSAgICAgICAgZGF0YVsndmFjdXVtX3RvYXN0J10g PSBzZWxmLnBhcnNlX3ZhY3V1bV9kYXRhKHNlbGYuY29ubiwgZGF0YSwgJ3RvYXN0JykKLQotICAg ICAgICAjIEZldGNoIGNvbHVtbnMgZm9yIHRoZSB0YWJsZSBsb2dpYwotICAgICAgICAjCi0gICAg ICAgICMgMSkgQ2hlY2sgaWYgb2ZfdHlwZSBhbmQgaW5oZXJpdGVkIHRhYmxlcyBhcmUgcHJlc2Vu dD8KLSAgICAgICAgIyAyKSBJZiB5ZXMgdGhlbiBGZXRjaCBhbGwgdGhlIGNvbHVtbnMgZm9yIG9m X3R5cGUgYW5kIGluaGVyaXRlZCB0YWJsZXMKLSAgICAgICAgIyAzKSBBZGQgY29sdW1ucyBpbiBj b2x1bW5zIGNvbGxlY3Rpb24KLSAgICAgICAgIyA0KSBGaW5kIGFsbCB0aGUgY29sdW1ucyBmb3Ig dGFibGVzIGFuZCBmaWx0ZXIgb3V0IGNvbHVtbnMgd2hpY2ggYXJlCi0gICAgICAgICMgICBub3Qg aW5oZXJpdGVkIGZyb20gYW55IHRhYmxlICYgZm9ybWF0IHRoZW0gb25lIGJ5IG9uZQotCi0gICAg ICAgICMgR2V0IG9mX3R5cGUgdGFibGUgY29sdW1ucyBhbmQgYWRkIGl0IGludG8gY29sdW1ucyBk aWN0Ci0gICAgICAgIGlmIGRhdGFbJ3R5cG5hbWUnXToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCdd KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bmFtZT1kYXRhWyd0eXBuYW1l J10pCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgZGF0YVsnY29s dW1ucyddID0gcmVzWydyb3dzJ10KLQotICAgICAgICAjIEdldCBpbmhlcml0ZWQgdGFibGUocykg Y29sdW1ucyBhbmQgYWRkIGl0IGludG8gY29sdW1ucyBkaWN0Ci0gICAgICAgIGVsaWYgZGF0YVsn Y29sbF9pbmhlcml0cyddIGFuZCBsZW4oZGF0YVsnY29sbF9pbmhlcml0cyddKSA+IDA6Ci0gICAg ICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgICAgICMgUmV0dXJuIGFsbCB0YWJsZXMgd2hp Y2ggY2FuIGJlIGluaGVyaXRlZCAmIGRvIG5vdCBzaG93Ci0gICAgICAgICAgICAjIHN5c3RlbSBj b2x1bW5zCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2dldF9pbmhlcml0cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1GYWxzZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0K LSAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgICAgIGlm IHJvd1snaW5oZXJpdHMnXSBpbiBkYXRhWydjb2xsX2luaGVyaXRzJ106Ci0gICAgICAgICAgICAg ICAgICAgICMgRmV0Y2ggY29sdW1ucyB1c2luZyBpbmhlcml0ZWQgdGFibGUgT0lECi0gICAgICAg ICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdnZXRfY29sdW1uc19mb3JfdGFibGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGlkPXJvd1snb2lkJ10pCi0gICAgICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0gICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgICAgICAgICAgICAgY29s dW1ucy5leHRlbmQocmVzWydyb3dzJ11bOl0pCi0gICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10g PSBjb2x1bW5zCi0KLSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgY29sdW1ucyBmb3Ig dGhlIHRhYmxlIHVzaW5nCi0gICAgICAgICMgY29sdW1ucyBwcm9wZXJ0aWVzLnNxbCwgc28gd2Ug bmVlZCB0byBzZXQgdGVtcGxhdGUgcGF0aAotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGlkPXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo b3dfc3lzX29iamVjdHM9RmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLQot ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCi0gICAgICAgIGFsbF9jb2x1bW5zID0gcmVzWydyb3dzJ10KLQotICAg ICAgICAjIEZpbHRlciBpbmhlcml0ZWQgY29sdW1ucyBmcm9tIGFsbCBjb2x1bW5zCi0gICAgICAg IGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCBsZW4oZGF0YVsnY29sdW1ucyddKSA+IDAgXAotICAg ICAgICAgICAgICAgIGFuZCBsZW4oYWxsX2NvbHVtbnMpID4gMDoKLSAgICAgICAgICAgIGZvciBy b3cgaW4gZGF0YVsnY29sdW1ucyddOgotICAgICAgICAgICAgICAgIGZvciBpLCBjb2wgaW4gZW51 bWVyYXRlKGFsbF9jb2x1bW5zKToKLSAgICAgICAgICAgICAgICAgICAgIyBJZiBib3RoIG5hbWUg YXJlIHNhbWUgdGhlbiByZW1vdmUgaXQKLSAgICAgICAgICAgICAgICAgICAgIyBhcyBpdCBpcyBp bmhlcml0ZWQgZnJvbSBvdGhlciB0YWJsZQotICAgICAgICAgICAgICAgICAgICBpZiBjb2xbJ25h bWUnXSA9PSByb3dbJ25hbWUnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIHNh bWUgY29sdW1uIGZyb20gYWxsX2NvbHVtbnMgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICMg YWxyZWFkeSBoYXZlIGl0IGNvbHVtbnMgY29sbGVjdGlvbgotICAgICAgICAgICAgICAgICAgICAg ICAgZGVsIGFsbF9jb2x1bW5zW2ldCi0KLSAgICAgICAgICAgICMgSWYgYW55IGNvbHVtbiBpcyBh ZGRlZCB0aGVuIHVwZGF0ZSBjb2x1bW5zIGNvbGxlY3Rpb24KLSAgICAgICAgICAgIGlmIGxlbihh bGxfY29sdW1ucykgPiAwOgotICAgICAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSArPSBhbGxf Y29sdW1ucwotICAgICAgICAjIElmIG5vIGluaGVyaXRlZCBjb2x1bW5zIGZvdW5kIHRoZW4gYWRk IGFsbCBjb2x1bW5zCi0gICAgICAgIGVsaWYgbGVuKGFsbF9jb2x1bW5zKSA+IDA6Ci0gICAgICAg ICAgICBkYXRhWydjb2x1bW5zJ10gPSBhbGxfY29sdW1ucwotCi0gICAgICAgIGlmICdjb2x1bW5z JyBpbiBkYXRhIGFuZCBsZW4oZGF0YVsnY29sdW1ucyddKSA+IDA6Ci0gICAgICAgICAgICBkYXRh ID0gc2VsZi5fY29sdW1uc19mb3JtYXR0ZXIodGlkLCBkYXRhKQotCi0gICAgICAgICMgSGVyZSB3 ZSB3aWxsIGFkZCBjb25zdHJhaW50IGluIG91ciBvdXRwdXQKLSAgICAgICAgZGF0YSA9IHNlbGYu X2luZGV4X2NvbnN0cmFpbnRzX2Zvcm1hdHRlcihkaWQsIHRpZCwgZGF0YSkKLSAgICAgICAgZGF0 YSA9IHNlbGYuX2ZvcmVpZ25fa2V5X2Zvcm1hdHRlcih0aWQsIGRhdGEpCi0gICAgICAgIGRhdGEg PSBzZWxmLl9jaGVja19jb25zdHJhaW50X2Zvcm1hdHRlcih0aWQsIGRhdGEpCi0gICAgICAgIGRh dGEgPSBzZWxmLl9leGNsdXNpb25fY29uc3RyYWludF9mb3JtYXR0ZXIoZGlkLCB0aWQsIGRhdGEp Ci0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBA QmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgcHJvcGVydGllcyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIHRhYmxlIG5v ZGUuCkBAIC0xMTA5LDEwICs1NTIsMTEgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIEpTT04gb2Yg c2VsZWN0ZWQgdGFibGUgbm9kZQogICAgICAgICAiIiIKIAotICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgZGlk PWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxm LmRhdGxhc3RzeXNvaWQKKyAgICAgICAgKQogICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0xMTIwLDQxICs1 NjQsMjIgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIs IFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgogICAg ICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIlRoZSBzcGVjaWZpZWQgdGFibGUgY291 bGQgbm90IGJlIGZvdW5kLiIpKQogCi0gICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQotCi0g ICAgICAgIGRhdGFbJ3ZhY3V1bV9zZXR0aW5nc19zdHInXSA9ICIiCi0KLSAgICAgICAgaWYgZGF0 YVsndGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg ZGF0YVsndmFjdXVtX3NldHRpbmdzX3N0ciddICs9IGRhdGFbCi0gICAgICAgICAgICAgICAgJ3Rh YmxlX3ZhY3V1bV9zZXR0aW5nc19zdHInXS5yZXBsYWNlKCcsJywgJ1xuJykKLQotICAgICAgICBp ZiBkYXRhWyd0b2FzdF90YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyJ10gaXMgbm90IE5vbmU6Ci0g ICAgICAgICAgICBkYXRhWyd2YWN1dW1fc2V0dGluZ3Nfc3RyJ10gKz0gJ1xuJyArICdcbicuam9p bigKLSAgICAgICAgICAgICAgICBbJ3RvYXN0XycgKyBzZXR0aW5nIGZvciBzZXR0aW5nIGluIGRh dGFbCi0gICAgICAgICAgICAgICAgICAgICd0b2FzdF90YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3Ry JwotICAgICAgICAgICAgICAgIF0uc3BsaXQoJywnKV0KLSAgICAgICAgICAgICkKLSAgICAgICAg ZGF0YVsndmFjdXVtX3NldHRpbmdzX3N0ciddID0gZGF0YVsKLSAgICAgICAgICAgICd2YWN1dW1f c2V0dGluZ3Nfc3RyJwotICAgICAgICBdLnJlcGxhY2UoIj0iLCAiID0gIikKLQotICAgICAgICBk YXRhID0gc2VsZi5fZm9ybWF0dGVyKGRpZCwgc2NpZCwgdGlkLCBkYXRhKQotCi0gICAgICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9ZGF0YSwKLSAgICAgICAg ICAgIHN0YXR1cz0yMDAKLSAgICAgICAgKQorICAgICAgICByZXR1cm4gc3VwZXIoVGFibGVWaWV3 LCBzZWxmKS5wcm9wZXJ0aWVzKAorICAgICAgICAgICAgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk LCByZXMpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hl Y2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIHR5cGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZD1Ob25lLCBjbGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuczoKICAg ICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0eXBlcyBhdmFpbGFi bGUgZm9yIGNvbHVtbiBub2RlCiAgICAgICAgICAgICBmb3Igbm9kZS1hamF4LWNvbnRyb2wKICAg ICAgICAgIiIiCi0gICAgICAgIGNvbmRpdGlvbiA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfdHlwZXNfd2hlcmVfY29uZGl0aW9uLnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9c2VsZi5ibHVlcHJp bnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKKyAgICAgICAgY29uZGl0aW9uID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oWworICAgICAgICAgICAgICAgIHNlbGYudGFibGVf dGVtcGxhdGVfcGF0aCwgJ2dldF90eXBlc193aGVyZV9jb25kaXRpb24uc3FsJworICAgICAgICAg ICAgXSksCisgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNo b3dfc3lzdGVtX29iamVjdHMKKyAgICAgICAgKQogCiAgICAgICAgIHN0YXR1cywgdHlwZXMgPSBz ZWxmLmdldF90eXBlcyhzZWxmLmNvbm4sIGNvbmRpdGlvbiwgVHJ1ZSkKIApAQCAtMTE2Niw3ICs1 OTEsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwg VmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKLSAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0 aW9uCiAgICAgZGVmIGdldF9jb2x1bW5zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1O b25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybnMgdGhlIFRhYmxlIENvbHVtbnMuCkBA IC0xMTg5LDEzICs2MTQsMTkgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0 YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJn cyBpZiByZXF1ZXN0LmFyZ3MgZWxzZSBOb25lCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlm IGRhdGEgYW5kICd0aWQnIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCdd KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWRhdGFbJ3RpZCdd KQorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAgICAgIi8iLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV90ZW1w bGF0ZV9wYXRoLCAnZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCcKKyAgICAgICAgICAgICAgICAg ICAgXSksCisgICAgICAgICAgICAgICAgICAgIHRpZD1kYXRhWyd0aWQnXQorICAgICAgICAgICAg ICAgICkKICAgICAgICAgICAgIGVsaWYgZGF0YSBhbmQgJ3RuYW1lJyBpbiBkYXRhOgotICAgICAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9jb2x1bW5zX2Zvcl90YWJsZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRuYW1lPWRhdGFbJ3RuYW1lJ10pCisgICAgICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbCisgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfY29sdW1uc19mb3Jf dGFibGUuc3FsJworICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAg dG5hbWU9ZGF0YVsndG5hbWUnXQorICAgICAgICAgICAgICAgICkKIAogICAgICAgICAgICAgaWYg U1FMOgogICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChTUUwpCkBAIC0xMjExLDcgKzY0Miw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZp ZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVW aWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRfb2Z0eXBlKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybnM6CkBA IC0xMjIwLDEwICs2NTEsMTIgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0 YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIHJlcyA9 IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KICAgICAgICAgdHJ5OgotICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2Z0eXBlLnNxbCdd KSwgc2NpZD1zY2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl90 eXBlPXNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVj dHMpCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9vZnR5cGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfdHlwZT1z ZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUsCisgICAgICAgICAgICAgICAgc2hvd19zeXNfb2JqZWN0 cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzCisgICAgICAgICAgICApCiAgICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0xMjQxLDcgKzY3NCw3IEBAIGNsYXNzIFRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6 CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRf aW5oZXJpdHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAi IiIKICAgICAgICAgUmV0dXJuczoKQEAgLTEyNTAsMTAgKzY4MywxMiBAQCBjbGFzcyBUYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAg ICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzID0gW10KLSAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0 X2luaGVyaXRzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93 X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfdHlwZT1zZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUpCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpv aW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9pbmhlcml0cy5zcWwnXSksCisgICAg ICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3Rl bV9vYmplY3RzLAorICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgc2Vy dmVyX3R5cGU9c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlCisgICAgICAgICAgICApCiAgICAgICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0xMjcxLDI1ICs3MDYsMzEgQEAgY2xhc3MgVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToK ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCi0gICAgZGVmIGdldF9yZWxhdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk PU5vbmUpOgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfYXR0YWNoX3RhYmxlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CiAg ICAgICAgICIiIgogICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiBsaXN0IG9mIHRhYmxlcyBhdmFpbGFibGUgZm9yIGxpa2UvcmVsYXRpb24KLSAg ICAgICAgICAgIGNvbWJvYm94IHdoaWxlIGNyZWF0aW5nIG5ldyB0YWJsZQorICAgICAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIHRhYmxlcyBhdmFpbGFibGUgdG8gYmUg YXR0YWNoZWQKKyAgICAgICAgICAgIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4KICAgICAgICAg IiIiCi0gICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KICAgICAgICAg dHJ5OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdnZXRfcmVsYXRpb25zLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVt X29iamVjdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU9 c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlKQorICAgICAgICAgICAgcmVzID0gW10KKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbCisg ICAgICAgICAgICAgICAgICAgIHNlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsICdnZXRfYXR0 YWNoX3RhYmxlcy5zcWwnCisgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgdGlk PXRpZAorICAgICAgICAgICAgKQorCiAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK ICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgogICAgICAgICAgICAgICAgIHJl cy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ2xpa2VfcmVsYXRp b24nXSwgJ3ZhbHVlJzogcm93WydsaWtlX3JlbGF0aW9uJ119CisgICAgICAgICAgICAgICAgICAg IHsnbGFiZWwnOiByb3dbJ3RhYmxlX25hbWUnXSwgJ3ZhbHVlJzogcm93WydvaWQnXX0KICAgICAg ICAgICAgICAgICApCisKICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAg ICAgICAgICAgICAgICAgZGF0YT1yZXMsCiAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMApAQCAt MTI5OCw0MCArNzM5LDM0IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFU eXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY2x0eXBlX2Zvcm1hdHRlcihkYXRh X3R5cGUpOgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfcmVsYXRpb25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAg ICAgIiIiCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGRhdGFfdHlwZTogVHlwZSBzdHJp bmcKLQogICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgV2UgbmVlZCB0byByZW1vdmUgW10g ZnJvbSB0eXBlIGFuZCBhcHBlbmQgaXQKLSAgICAgICAgICAgIGFmdGVyIGxlbmd0aC9wcmVjaXNp b24gc28gd2Ugd2lsbCBzZW5kIGZsYWcgZm9yCi0gICAgICAgICAgICBzcWwgdGVtcGxhdGUKLSAg ICAgICAgIiIiCi0gICAgICAgIGlmICdbXScgaW4gZGF0YV90eXBlOgotICAgICAgICAgICAgcmV0 dXJuIGRhdGFfdHlwZVs6LTJdLCBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1 cm4gZGF0YV90eXBlLCBGYWxzZQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjb252ZXJ0 X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKGRhdGEpOgorICAgICAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIHRhYmxlcyBhdmFpbGFibGUgZm9yIGxpa2UvcmVsYXRp b24KKyAgICAgICAgICAgIGNvbWJvYm94IHdoaWxlIGNyZWF0aW5nIG5ldyB0YWJsZQogICAgICAg ICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnZlcnQgbGVuZ3RoICYg cHJlY2lzaW9uIHRvIHN0cmluZwotICAgICAgICB0byBoYW5kbGUgY2FzZSBsaWtlIHdoZW4gdXNl ciBnaXZlcyAwIGFzIGxlbmd0aAotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBkYXRhOiBE YXRhIGZyb20gY2xpZW50CisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcn fV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfcmVs YXRpb25zLnNxbCddKSwKKyAgICAgICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1 ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMsCisgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU9 c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICB7J2xhYmVsJzog cm93WydsaWtlX3JlbGF0aW9uJ10sICd2YWx1ZSc6IHJvd1snbGlrZV9yZWxhdGlvbiddfQorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgKQogCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBDb252ZXJ0ZWQgZGF0 YQotICAgICAgICAiIiIKLSAgICAgICAgaWYgJ2F0dGxlbicgaW4gZGF0YSBhbmQgZGF0YVsnYXR0 bGVuJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkYXRhWydhdHRsZW4nXSA9IHN0cihkYXRh WydhdHRsZW4nXSkKLSAgICAgICAgaWYgJ2F0dHByZWNpc2lvbicgaW4gZGF0YSBhbmQgZGF0YVsn YXR0cHJlY2lzaW9uJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkYXRhWydhdHRwcmVjaXNp b24nXSA9IHN0cihkYXRhWydhdHRwcmVjaXNpb24nXSkKLSAgICAgICAgcmV0dXJuIGRhdGEKKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKICAgICBkZWYgX3BhcnNlX2Zvcm1hdF9j b2x1bW5zKHNlbGYsIGRhdGEsIG1vZGU9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMTM2MCwxMiAr Nzk1LDEyIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0 eXBlIGZvciAnW10nIGluIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1snY2x0eXBl J10sIGNbJ2hhc1NxckJyYWNrZXQnXSA9IHNlbGYuX2NsdHlwZV9mb3JtYXR0ZXIoY1snY2x0eXBl J10pCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzZWxmLmNvbnZlcnRfbGVuZ3RoX3By ZWNpc2lvbl90b19zdHJpbmcoYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBUYWJsZVZp ZXcuY29udmVydF9sZW5ndGhfcHJlY2lzaW9uX3RvX3N0cmluZyhjKQogCiAgICAgICAgICAgICAg ICAgICAgIGRhdGFbJ2NvbHVtbnMnXVthY3Rpb25dID0gZmluYWxfY29sdW1ucwogICAgICAgICBl bHNlOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGV4Y2x1ZGUgYWxsIHRoZSBjb2x1bW5zIHdo aWNoIGFyZSBpbmhlcml0ZWQgZnJvbSBvdGhlciB0YWJsZXMKLSAgICAgICAgICAgICMgJ0NSRUFU RScgbW9kZQorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGV4Y2x1ZGUgYWxsIHRoZSBjb2x1bW5z IHdoaWNoIGFyZSBpbmhlcml0ZWQgZnJvbSBvdGhlcgorICAgICAgICAgICAgIyB0YWJsZXMgJ0NS RUFURScgbW9kZQogICAgICAgICAgICAgZmluYWxfY29sdW1ucyA9IFtdCiAKICAgICAgICAgICAg IGZvciBjIGluIGNvbHVtbnM6CkBAIC0xMzgyLDM1ICs4MTcsMTMgQEAgY2xhc3MgVGFibGVWaWV3 KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAg ICAgICAgICAgICAgICAgIyBjaGVjayB0eXBlIGZvciAnW10nIGluIGl0CiAgICAgICAgICAgICAg ICAgICAgIGNbJ2NsdHlwZSddLCBjWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLl9jbHR5cGVfZm9y bWF0dGVyKGNbJ2NsdHlwZSddKQogCi0gICAgICAgICAgICAgICAgYyA9IHNlbGYuY29udmVydF9s ZW5ndGhfcHJlY2lzaW9uX3RvX3N0cmluZyhjKQorICAgICAgICAgICAgICAgIGMgPSBUYWJsZVZp ZXcuY29udmVydF9sZW5ndGhfcHJlY2lzaW9uX3RvX3N0cmluZyhjKQogCiAgICAgICAgICAgICBk YXRhWydjb2x1bW5zJ10gPSBmaW5hbF9jb2x1bW5zCiAKICAgICAgICAgcmV0dXJuIGRhdGEKIAot ICAgIGRlZiBjaGVja19hbmRfY29udmVydF9uYW1lX3RvX3N0cmluZyhzZWxmLCBkYXRhKToKLSAg ICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBhbmQgY292ZXJ0IHRh YmxlIHRvIHN0cmluZyBpbmNhc2UKLSAgICAgICAgaXQgaXMgbnVtZXJpYwotCi0gICAgICAgIEFy Z3M6Ci0gICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QKLQotICAgICAgICBSZXR1cm5zOgotICAg ICAgICAgICAgVXBkYXRlZCBkYXRhIGRpY3QKLSAgICAgICAgIiIiCi0gICAgICAgICMgRm9yIFB5 dGhvbjIsIGl0IGNhbiBiZSBpbnQsIGxvbmcsIGZsb2F0Ci0gICAgICAgIGlmIGhhc2F0dHIoc3Ry LCAnZGVjb2RlJyk6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGFbJ25hbWUnXSwgKGlu dCwgbG9uZywgZmxvYXQpKToKLSAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBzdHIoZGF0 YVsnbmFtZSddKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBGb3IgUHl0aG9uMywgaXQg Y2FuIGJlIGludCwgZmxvYXQKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YVsnbmFtZSdd LCAoaW50LCBmbG9hdCkpOgotICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSA9IHN0cihkYXRh WyduYW1lJ10pCi0gICAgICAgIHJldHVybiBkYXRhCi0KLQotICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGNyZWF0ZXMgbmV3IHRoZSB0YWJsZSBvYmplY3QKQEAgLTE0NTEsNyArODY0 LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZh Y3V1bVNldHRpbmdzKToKIAogICAgICAgICAjIFBhcnNlICYgZm9ybWF0IGNvbHVtbnMKICAgICAg ICAgZGF0YSA9IHNlbGYuX3BhcnNlX2Zvcm1hdF9jb2x1bW5zKGRhdGEpCi0gICAgICAgIGRhdGEg PSBzZWxmLmNoZWNrX2FuZF9jb252ZXJ0X25hbWVfdG9fc3RyaW5nKGRhdGEpCisgICAgICAgIGRh dGEgPSBUYWJsZVZpZXcuY2hlY2tfYW5kX2NvbnZlcnRfbmFtZV90b19zdHJpbmcoZGF0YSkKIAog ICAgICAgICAjICdjb2xsX2luaGVyaXRzJyBpcyBBcnJheSBidXQgaXQgY29tZXMgYXMgc3RyaW5n IGZyb20gYnJvd3NlcgogICAgICAgICAjIFdlIHdpbGwgY29udmVydCBpdCBhZ2FpbiB0byBsaXN0 CkBAIC0xNDYzLDkgKzg3NiwxMiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogCiAgICAgICAgIGlmICdmb3JlaWduX2tl eScgaW4gZGF0YToKICAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2ZvcmVpZ25fa2V5J106Ci0g ICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmZvcmVp Z25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD1jWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfdGVtcGxh dGVfcGF0aCwgJ2dldF9wYXJlbnQuc3FsJworICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAg ICAgICAgICAgICAgICAgdGlkPWNbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddCisgICAgICAg ICAgICAgICAgKQogICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoU1FMKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkK QEAgLTE0NzQsMTIgKzg5MCwyNiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgICAgIGNbJ3JlbW90 ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCiAKICAgICAgICAgdHJ5OgotICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAg cGFydGl0aW9uc19zcWwgPSAnJworICAgICAgICAgICAgcGFydGl0aW9uZWQgPSBGYWxzZQorICAg ICAgICAgICAgaWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19wYXJ0aXRp b25lZCddOgorICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGtpbmQnXSA9ICdwJworICAgICAgICAg ICAgICAgICMgY3JlYXRlIHBhcnRpdGlvbiBzY2hlbWUKKyAgICAgICAgICAgICAgICBkYXRhWydw YXJ0aXRpb25fc2NoZW1lJ10gPSBzZWxmLmdldF9wYXJ0aXRpb25fc2NoZW1lKGRhdGEpCisgICAg ICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSBzZWxmLmdldF9wYXJ0aXRpb25zX3NxbChkYXRh KQorICAgICAgICAgICAgICAgIHBhcnRpdGlvbmVkID0gVHJ1ZQorCisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVf dGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIEFwcGVuZCBT UUwgZm9yIHBhcnRpdGlvbnMKKyAgICAgICAgICAgIFNRTCArPSAnXG4nICsgcGFydGl0aW9uc19z cWwKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo U1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKIAogICAgICAgICAgICAgIyBQb3N0 Z3JlU1FMIHRydW5jYXRlcyB0aGUgdGFibGUgbmFtZSB0byA2MyBjaGFyYWN0ZXJzLgogICAgICAg ICAgICAgIyBIYXZlIHRvIHRydW5jYXRlIHRoZSBuYW1lIGxpa2UgUG9zdGdyZVNRTCB0byBnZXQg dGhlCkBAIC0xNDkwLDE2ICs5MjAsMjEgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgICAgICBkYXRh WyduYW1lJ10gPSBkYXRhWyduYW1lJ11bMDpDT05TVF9NQVhfQ0hBUl9DT1VOVF0KIAogICAgICAg ICAgICAgIyBHZXQgdXBkYXRlZCBzY2hlbWEgb2lkCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0bmFtZT1kYXRhWyduYW1l J10pCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9zY2hlbWFfb2lkLnNxbCdd KSwKKyAgICAgICAgICAgICAgICB0bmFtZT1kYXRhWyduYW1lJ10KKyAgICAgICAgICAgICkKIAog ICAgICAgICAgICAgc3RhdHVzLCBzY2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2lkKQogCiAgICAgICAgICAgICAjIHdlIG5lZWQg b2lkIHRvIHRvIGFkZCBvYmplY3QgaW4gdHJlZSBhdCBicm93c2VyCi0gICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwnXSksIHNjaWQ9c2NpZCwgZGF0 YT1kYXRhKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfb2lkLnNxbCddKSwK KyAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIGRhdGE9ZGF0YQorICAgICAgICAgICAgKQorCiAg ICAgICAgICAgICBzdGF0dXMsIHRpZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCiAg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9dGlkKQpAQCAtMTUwOSwxMyArOTQ0LDE0IEBAIGNsYXNz IFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5n cyk6CiAgICAgICAgICAgICAgICAgICAgIHRpZCwKICAgICAgICAgICAgICAgICAgICAgc2NpZCwK ICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICBp Y29uPSJpY29uLXRhYmxlIgorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlv biIgaWYgcGFydGl0aW9uZWQgZWxzZSAiaWNvbi10YWJsZSIsCisgICAgICAgICAgICAgICAgICAg IGlzX3BhcnRpdGlvbmVkPXBhcnRpdGlvbmVkCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAg ICAgKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYg dXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGFuIGV4aXN0aW5nIHRhYmxlIG9iamVjdApA QCAtMTUzOCwzNCArOTc0LDIxIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERh dGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgZGF0YVtrXSA9 IHYKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwsIG5hbWUgPSBzZWxmLmdldF9zcWwo ZGlkLCBzY2lkLCB0aWQsIGRhdGEpCi0KLSAgICAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4n KS5zdHJpcCgnICcpCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0 aWQ9dGlkKQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAg ICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCisgICAgICAgICAgICAp CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQog ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKIAotICAgICAgICAgICAgIyBuZXcgc2NoZW1h IGlkCi0gICAgICAgICAgICBzY2lkID0gcmVzWydyb3dzJ11bMF1bJ3NjaWQnXQotCi0gICAgICAg ICAgICByZXR1cm4ganNvbmlmeSgKLSAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKLSAgICAgICAgICAgICAgICAgICAgdGlkLAotICAgICAg ICAgICAgICAgICAgICBzY2lkLAotICAgICAgICAgICAgICAgICAgICBuYW1lLAotICAgICAgICAg ICAgICAgICAgICBpY29uPSJpY29uLSVzIiAlIHNlbGYubm9kZV90eXBlCi0gICAgICAgICAgICAg ICAgKQotICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKFRhYmxlVmlldywg c2VsZikudXBkYXRlKAorICAgICAgICAgICAgICAgIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg ZGF0YSwgcmVzKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAg ICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIi IgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlcyB0aGUgdGFibGUgb2JqZWN0CkBA IC0xNTg1LDEwICsxMDA4LDExIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERh dGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBjYXNjYWRlID0gRmFs c2UKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgIGRh dGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCisgICAgICAgICAgICApCiAgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKQEAgLTE2MDYsMTAgKzEwMzAsMTEgQEAgY2xhc3MgVGFibGVWaWV3 KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAg ICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCiAKLSAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNhc2NhZGU9Y2FzY2FkZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 YWJsZV90ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNhc2NhZGU9Y2FzY2FkZSwKKyAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubgor ICAgICAgICAgICAgKQogICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKQEAgLTE2MjYsNyAr MTA1MSw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0g ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgog ICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHRydW5jYXRlIHRoZSB0YWJs ZSBvYmplY3QKQEAgLTE2MzgsNDMgKzEwNjMsMjMgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGRO b2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgc2Np ZDogU2NoZW1hIElECiAgICAgICAgICAgIHRpZDogVGFibGUgSUQKICAgICAgICAgIiIiCi0gICAg ICAgICMgQmVsb3cgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJvcCBvciBkcm9wIHdpdGgg Y2FzY2FkZSBjYWxsCi0gICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3Jt IGVsc2UganNvbi5sb2FkcygKLSAgICAgICAgICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rpbmc9J3V0 Zi04JwotICAgICAgICApCi0gICAgICAgICMgQ29udmVydCBzdHIgJ3RydWUnIHRvIGJvb2xlYW4g dHlwZQotICAgICAgICBpc19jYXNjYWRlID0ganNvbi5sb2FkcyhkYXRhWydjYXNjYWRlJ10pCiAK ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICBkYXRsYXN0 c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAgICAgICAgKQogICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCi0gICAgICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KIAotICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0ZS5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjYXNj YWRlPWlzX2Nhc2NhZGUpCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcihTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAotICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MSwKLSAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlRhYmxlIHRydW5jYXRlZCIpLAotICAg ICAgICAgICAgICAgIGRhdGE9ewotICAgICAgICAgICAgICAgICAgICAnaWQnOiB0aWQsCi0gICAg ICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICkKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihUYWJsZVZpZXcsIHNlbGYpLnRydW5jYXRl KGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcmVzKQogCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3 LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBlbmFibGVfZGlzYWJsZV90cmlnZ2VycyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGVuYWJsZS9kaXNhYmxlIHRyaWdnZXIocykgb24gdGhlIHRhYmxlIG9iamVj dApAQCAtMTY5NCwxOCArMTA5OSwyMiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBpc19lbmFibGUgPSBq c29uLmxvYWRzKGRhdGFbJ2VuYWJsZSddKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0 aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9 c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdwcm9w ZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10 aWQsCisgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQKKyAg ICAgICAgICAgICkKICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogICAgICAgICAgICAgZGF0 YSA9IHJlc1sncm93cyddWzBdCiAKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwnXSksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBpc19lbmFibGVfdHJpZ2dlcj1p c19lbmFibGUpCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgIi8iLmpvaW4oWworICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX3RlbXBsYXRl X3BhdGgsICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNxbCcKKyAgICAgICAgICAgICAgICBdKSwK KyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGlzX2VuYWJsZV90cmlnZ2VyPWlzX2VuYWJsZQor ICAgICAgICAgICAgKQogICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKQEAgLTE3MjMsNyAr MTEzMiw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0g ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiByZXNldChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAg ICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0IHN0YXRpc3RpY3Mgb2Yg dGFibGUKQEAgLTE3MzUsMjcgKzExNDQsOSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVW aWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICBzY2lkOiBT Y2hlbWEgSUQKICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAogICAgICAgICAiIiIKLSAgICAgICAg dHJ5OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdyZXNldF9zdGF0cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGlkPXRpZCkKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAotICAg ICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiVGFibGUgc3RhdGlzdGljcyBoYXZlIGJlZW4gcmVz ZXQiKSwKLSAgICAgICAgICAgICAgICBkYXRhPXsKLSAgICAgICAgICAgICAgICAgICAgJ2lkJzog dGlkLAotICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICApCisgICAgICAgIHJldHVybiBCYXNlVGFibGVWaWV3LnJlc2V0X3N0YXRp c3RpY3Moc2VsZiwgc2NpZCwgdGlkKQogCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK LSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3By ZWNvbmRpdGlvbgogICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1O b25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgbW9k aWZpZWQgc3FsIGZvciB0YWJsZSBvYmplY3QKQEAgLTE3NjgsNjg2ICsxMTU5LDM0IEBAIGNsYXNz IFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5n cyk6CiAgICAgICAgICAgIHRpZDogVGFibGUgSUQKICAgICAgICAgIiIiCiAgICAgICAgIGRhdGEg PSBkaWN0KCkKKyAgICAgICAgcmVzID0gTm9uZQogICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0 LmFyZ3MuaXRlbXMoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBkYXRhW2td ID0ganNvbi5sb2Fkcyh2LCBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICAgICAgZXhjZXB0IChW YWx1ZUVycm9yLCBUeXBlRXJyb3IsIEtleUVycm9yKToKICAgICAgICAgICAgICAgICBkYXRhW2td ID0gdgogCi0gICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQsIHRpZCwg ZGF0YSkKLSAgICAgICAgU1FMID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIFNRTCkKLSAgICAg ICAgU1FMID0gU1FMLnN0cmlwKCdcbicpCi0gICAgICAgIGlmIFNRTCA9PSAnJzoKLSAgICAgICAg ICAgIFNRTCA9ICItLW1vZGlmaWVkIFNRTCIKLSAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKLSAgICAgICAgICAgIGRhdGE9U1FMLAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAg ICAgICApCi0KLSAgICBkZWYgZ2V0X2luZGV4X2NvbnN0cmFpbnRfc3FsKHNlbGYsIGRpZCwgdGlk LCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgICBBcmdzOgotICAgICAgICAgICB0aWQ6IFRh YmxlIElECi0gICAgICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50 Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRl IG1vZGlmaWVkIHNxbCBmb3IgaW5kZXggY29uc3RyYWludHMKLSAgICAgICAgKFByaW1hcnkgS2V5 ICYgVW5pcXVlKQotICAgICAgICAiIiIKLSAgICAgICAgc3FsID0gW10KLSAgICAgICAgIyBXZSB3 aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAgICAg ICBpbmRleF9jb25zdHJhaW50cyA9IHsKLSAgICAgICAgICAgICdwJzogJ3ByaW1hcnlfa2V5Jywg J3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCi0gICAgICAgIH0KLQotICAgICAgICBmb3IgY3R5cGUg aW4gaW5kZXhfY29uc3RyYWludHMua2V5cygpOgotICAgICAgICAgICAgIyBDaGVjayBpZiBjb25z dHJhaW50IGlzIGluIGRhdGEKLSAgICAgICAgICAgICMgSWYgeWVzIHRoZW4gd2UgbmVlZCB0byBj aGVjayBmb3IgYWRkL2NoYW5nZS9kZWxldGUKLSAgICAgICAgICAgIGlmIGluZGV4X2NvbnN0cmFp bnRzW2N0eXBlXSBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhW2lu ZGV4X2NvbnN0cmFpbnRzW2N0eXBlXV0KLSAgICAgICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQo cykgaXMvYXJlIGRlbGV0ZWQKLSAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3Ry YWludDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCdd OgotICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQot ICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAg ICAgICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgZHJvcAotICAgICAgICAgICAgICAgICAgICAg ICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmluZGV4 X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdkZWxldGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAg KQotCi0gICAgICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAg ICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKLSAgICAgICAgICAg ICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAg ICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAg ICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRp ZCwgdGlkPXRpZCwgY2lkPWNbJ29pZCddLCBjb25zdHJhaW50X3R5cGU9Y3R5cGUpCi0gICAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJv cGVydGllc19zcWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93 cyddWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0Ci0g ICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xk X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5z dHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAg aWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBj b25zdHJhaW50WydhZGRlZCddOgotICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10g PSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRh dGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byBhZGQgb2JqZWN0 Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoaW5k ZXhfY29uc3RyYWludHNbY3R5cGVdLCBjKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxh dGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5p bmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludF9uYW1lPSdQUklNQVJZIEtFWScKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN0eXBlID09ICdwJyBlbHNlICdVTklR VUUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdldHRleHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciB7MH0gY29uc3RyYWludCcuZm9ybWF0 KGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgaWYgbGVuKHNxbCkg PiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcK LSAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0gICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9mb3JlaWduX2tleV9zcWwoc2VsZiwg dGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgICBBcmdzOgotICAgICAgICAgICB0aWQ6 IFRhYmxlIElECi0gICAgICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xp ZW50Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIG1vZGlmaWVkIHNxbCBmb3IgZm9yZWlnbiBrZXkKLSAgICAgICAgIiIiCi0gICAgICAgIHNx bCA9IFtdCi0gICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCi0gICAgICAg ICMgSWYgeWVzIHRoZW4gd2UgbmVlZCB0byBjaGVjayBmb3IgYWRkL2NoYW5nZS9kZWxldGUKLSAg ICAgICAgaWYgJ2ZvcmVpZ25fa2V5JyBpbiBkYXRhOgotICAgICAgICAgICAgY29uc3RyYWludCA9 IGRhdGFbJ2ZvcmVpZ25fa2V5J10KLSAgICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9h cmUgZGVsZXRlZAotICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAg ICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgotICAgICAgICAgICAg ICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAg IGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAjIFNxbCBm b3IgZHJvcAotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAg ICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAg ICkKLQotICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAg ICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAg ICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3Rh YmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3Nx bCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtz ZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNpZD1jWydvaWQnXSkKLSAgICAgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3Fs KQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAg ICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAg ICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0 aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBv X2RhdGE9b2xkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNv bm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAg ICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKCdmb3JlaWduX2tleScsIGMpOgot ICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVm aW5pdGlvbiBpbmNvbXBsZXRlIGZvciBmb3JlaWduX2tleSBjb25zdHJhaW50JwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAgICAgICAgICAgICAg ICAgICAgaWYgJ2NvbHVtbnMnIGluIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2xzID0g W10KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2wgaW4gY1snY29sdW1ucyddOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKGNvbFsnbG9jYWxfY29sdW1uJ10p Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWxmLnNlYXJjaF9j b3ZlcmluZ2luZGV4KHRpZCwgY29scykKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY292 ZXJpbmdpbmRleCBpcyBOb25lIGFuZCAnYXV0b2luZGV4JyBpbiBjIGFuZCBjWydhdXRvaW5kZXgn XSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2NvdmVyaW5naW5kZXgn IGluIGMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2Nv dmVyaW5naW5kZXgnXSAhPSAnJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZChyZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdjcmVhdGVfaW5kZXguc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5j b25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQotCi0gICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAg ICAgZm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1sn c2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSdd ID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gYWRkIG9iamVj dAotICAgICAgICAgICAgICAgICAgICAjIENvbHVtbnMKLQotICAgICAgICAgICAgICAgICAgICBp ZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKCdmb3JlaWduX2tleScsIGMpOgotICAgICAg ICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlv biBpbmNvbXBsZXRlIGZvciBmb3JlaWduX2tleSBjb25zdHJhaW50JwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAgICAgICAgICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGlkPWNbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQotICAgICAgICAgICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAg ICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAg ICAgICAgICAgICBjWydyZW1vdGVfc2NoZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSdd Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV90YWJsZSddID0gcnNldFsncm93cyddWzBd Wyd0YWJsZSddCi0KLSAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAg ICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uCi0gICAgICAgICAgICAgICAgICAg ICAgICApLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAg ICAgICAgICBpZiBjWydhdXRvaW5kZXgnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5h cHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2NyZWF0ZV9pbmRleC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICAg ICApCi0KLSAgICAgICAgaWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0 aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9p bihzcWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVm IGdldF9jaGVja19jb25zdHJhaW50X3NxbChzZWxmLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIK LSAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgIHRpZDogVGFibGUgSUQKLSAgICAgICAgICAgZGF0 YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKLQotICAgICAgICBSZXR1cm5zOgot ICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGNo ZWNrIGNvbnN0cmFpbnQKLSAgICAgICAgIiIiCi0gICAgICAgIHNxbCA9IFtdCi0gICAgICAgICMg Q2hlY2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCi0gICAgICAgICMgSWYgeWVzIHRoZW4gd2Ug bmVlZCB0byBjaGVjayBmb3IgYWRkL2NoYW5nZS9kZWxldGUKLSAgICAgICAgaWYgJ2NoZWNrX2Nv bnN0cmFpbnQnIGluIGRhdGE6Ci0gICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVsnY2hlY2tf Y29uc3RyYWludCddCi0gICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0 ZWQKLSAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAg ICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAg Y1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJs ZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AK LSAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAg IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBb c2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdkZWxldGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkK LQotICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAg ICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAgICBj WydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxl J10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm LmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2lkPWNbJ29pZCddKQotICAgICAgICAgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19z cWwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAg ICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAgICAgICAg ICAgICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRh dGE9Yywgb19kYXRhPW9sZF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49 c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAg ICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICBmb3IgYyBpbiBj b25zdHJhaW50WydhZGRlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRh dGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1l J10KLQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5z KCdjaGVja19jb25zdHJhaW50JywgYyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBw ZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9yIGNoZWNrX2Nv bnN0cmFpbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg ICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNx bCkKLQotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAg ICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5q b2luKFtzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgotICAgICAgICAgICAgICAgICAgICAg ICAgKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgaWYgbGVu KHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBz dHJpbmcKLSAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0gICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9leGNsdXNpb25fY29uc3Ry YWludF9zcWwoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgIEFy Z3M6Ci0gICAgICAgICAgIHRpZDogVGFibGUgSUQKLSAgICAgICAgICAgZGF0YTogZGF0YSBkaWN0 IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGV4Y2x1c2lvbiBjb25z dHJhaW50Ci0gICAgICAgICIiIgotICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIENoZWNrIGlm IGNvbnN0cmFpbnQgaXMgaW4gZGF0YQotICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8g Y2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCi0gICAgICAgIGlmICdleGNsdWRlX2NvbnN0cmFp bnQnIGluIGRhdGE6Ci0gICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVsnZXhjbHVkZV9jb25z dHJhaW50J10KLSAgICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9hcmUgZGVsZXRlZAot ICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAg Zm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydz Y2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10g PSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgZHJvcAotICAg ICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm LmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdkZWxldGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkK LQotICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAg ICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAgICBj WydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxl J10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm LmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwK LSAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1jWydvaWQnXSkK LSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KHByb3BlcnRpZXNfc3FsKQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQot ICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0Ci0gICAgICAgICAgICAg ICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjbHVzaW9u X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn dXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xkX2RhdGEsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAg ICAgICkKLQotICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAg ICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVkJ106Ci0gICAgICAgICAgICAgICAgICAg IGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgY1sndGFi bGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZh bGlkYXRlX2NvbnN0cmFpbnMoJ2V4Y2x1ZGVfY29uc3RyYWludCcsIGMpOgotICAgICAgICAgICAg ICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0 ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNv bXBsZXRlIGZvciBleGNsdXNpb25fY29uc3RyYWludCcKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQotCi0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0 ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYu Y29ubgotICAgICAgICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAg ICAgICAgICApCi0KLSAgICAgICAgaWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2lu IGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJldHVybiB1J1xu XG4nLmpvaW4oc3FsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQot ICAgIGRlZiBnZXRfdHJpZ2dlcl9mdW5jdGlvbl9zY2hlbWEoc2VsZiwgZGF0YSk6Ci0gICAgICAg ICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRyaWdnZXIgZnVuY3Rpb24g d2l0aCBzY2hlbWEgbmFtZQotICAgICAgICAiIiIKLSAgICAgICAgIyBJZiBsYW5ndWFnZSBpcyAn ZWRic3BsJyB0aGVuIHRyaWdnZXIgZnVuY3Rpb24gc2hvdWxkIGJlCi0gICAgICAgICMgJ0lubGlu ZSBFREItU1BMJyBlbHNlIHdlIHdpbGwgZmluZCB0aGUgdHJpZ2dlciBmdW5jdGlvbgotICAgICAg ICAjIHdpdGggc2NoZW1hIG5hbWUuCi0gICAgICAgIGlmIGRhdGFbJ2xhbm5hbWUnXSA9PSAnZWRi c3BsJzoKLSAgICAgICAgICAgIGRhdGFbJ3RmdW5jdGlvbiddID0gJ0lubGluZSBFREItU1BMJwot ICAgICAgICBlbHNlOgorICAgICAgICBpZiB0aWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oCi0gICAgICAg ICAgICAgICAgICAgIFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwnZ2V0X3RyaWdnZXJmdW5j dGlvbnMuc3FsJ10KLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIHRnZm9pZD1k YXRhWyd0Z2ZvaWQnXSwKLSAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYu Ymx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMKKyAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgIGRhdGxh c3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCiAgICAgICAgICAgICApCi0KLSAgICAgICAgICAg IHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0gICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAjIFVwZGF0ZSB0aGUgdHJpZ2dlciBm dW5jdGlvbiB3aGljaCB3ZSBoYXZlIGZldGNoZWQgd2l0aAotICAgICAgICAgICAgIyBzY2hlbWEg bmFtZQotICAgICAgICAgICAgaWYgJ3Jvd3MnIGluIHJlc3VsdCBhbmQgbGVuKHJlc3VsdFsncm93 cyddKSA+IDAgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGZ1bmN0aW9ucycg aW4gcmVzdWx0Wydyb3dzJ11bMF06Ci0gICAgICAgICAgICAgICAgZGF0YVsndGZ1bmN0aW9uJ10g PSByZXN1bHRbJ3Jvd3MnXVswXVsndGZ1bmN0aW9ucyddCi0gICAgICAgIHJldHVybiBkYXRhCi0K LSAgICBkZWYgX2Zvcm1hdF9hcmdzKHNlbGYsIGFyZ3MpOgotICAgICAgICAiIiIKLSAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIGZvcm1hdCBhcmd1bWVudHMuCi0KLSAgICAgICAgQXJnczoKLSAg ICAgICAgICAgIGFyZ3M6IEFyZ3VtZW50cwotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAg ICBGb3JtYXRlZCBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCi0gICAgICAgICIiIgotICAgICAgICBm b3JtYXR0ZWRfYXJncyA9IFsiJ3swfSciLmZvcm1hdChhcmcpIGZvciBhcmcgaW4gYXJnc10KLSAg ICAgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0ZWRfYXJncykKLQotICAgIGRlZiBnZXRfc3Fs KHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBjcmVhdGUvdXBkYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEK LSAgICAgICAgY29taW5nIGZyb20gY2xpZW50Ci0gICAgICAgICIiIgotICAgICAgICBpZiB0aWQg aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKICAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQogCi0gICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cydd WzBdCi0gICAgICAgICAgICBvbGRfZGF0YSA9IHNlbGYuX2Zvcm1hdHRlcihkaWQsIHNjaWQsIHRp ZCwgb2xkX2RhdGEpCi0KLSAgICAgICAgICAgICMgV2Ugd2lsbCBjb252ZXJ0IHByaXZpbGVnZXMg Y29taW5nIGZyb20gY2xpZW50IHJlcXVpcmVkCi0gICAgICAgICAgICBpZiAncmVsYWNsJyBpbiBk YXRhOgotICAgICAgICAgICAgICAgIGZvciBtb2RlIGluIFsnYWRkZWQnLCAnY2hhbmdlZCcsICdk ZWxldGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgaW4gZGF0YVsncmVsYWNsJ106 Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWxhY2wnXVttb2RlXSA9IHBhcnNlX3By aXZfdG9fZGIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVsYWNsJ11bbW9k ZV0sIHNlbGYuYWNsCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMg SWYgbmFtZSBpcyBub3QgcHJlc2VudCBpbiByZXF1ZXN0IGRhdGEKLSAgICAgICAgICAgIGlmICdu YW1lJyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBvbGRfZGF0 YVsnbmFtZSddCi0KLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNoZWNrX2FuZF9jb252ZXJ0X25h bWVfdG9fc3RyaW5nKGRhdGEpCi0KLSAgICAgICAgICAgICMgSWYgbmFtZSBpZiBub3QgcHJlc2Vu dAotICAgICAgICAgICAgaWYgJ3NjaGVtYScgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAg ZGF0YVsnc2NoZW1hJ10gPSBvbGRfZGF0YVsnc2NoZW1hJ10KLQotICAgICAgICAgICAgIyBGaWx0 ZXIgb3V0IG5ldyB0YWJsZXMgZnJvbSBsaXN0LCB3ZSB3aWxsIHNlbmQgY29tcGxldGUgbGlzdAot ICAgICAgICAgICAgIyBhbmQgbm90IG5ld2x5IGFkZGVkIHRhYmxlcyBpbiB0aGUgbGlzdCBmcm9t IGNsaWVudAotICAgICAgICAgICAgIyBzbyB3ZSB3aWxsIGZpbHRlciBuZXcgdGFibGVzIGhlcmUK LSAgICAgICAgICAgIGlmICdjb2xsX2luaGVyaXRzJyBpbiBkYXRhOgotICAgICAgICAgICAgICAg IHBfbGVuID0gbGVuKG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCi0gICAgICAgICAgICAgICAg Y19sZW4gPSBsZW4oZGF0YVsnY29sbF9pbmhlcml0cyddKQotICAgICAgICAgICAgICAgICMgSWYg dGFibGUocykgYWRkZWQKLSAgICAgICAgICAgICAgICBpZiBjX2xlbiA+IHBfbGVuOgotICAgICAg ICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX2FkZGVkJ10gPSBsaXN0KAotICAgICAg ICAgICAgICAgICAgICAgICAgc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkgLSBzZXQob2xkX2Rh dGFbJ2NvbGxfaW5oZXJpdHMnXSkKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg ICAgICMgSWYgdGFibGUocylyZW1vdmVkCi0gICAgICAgICAgICAgICAgZWxpZiBjX2xlbiA8IHBf bGVuOgotICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX3JlbW92ZWQnXSA9 IGxpc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJp dHMnXSkgLSBzZXQoZGF0YVsnY29sbF9pbmhlcml0cyddKQotICAgICAgICAgICAgICAgICAgICAp Ci0gICAgICAgICAgICAgICAgIyBTYWZlIHNpZGUgdmVyaWZpY2F0aW9uLEluIGNhc2UgaXQgaGFw cGVucy4uCi0gICAgICAgICAgICAgICAgIyBJZiB1c2VyIHJlbW92ZXMgYW5kIGFkZHMgc2FtZSBu dW1iZXIgb2YgdGFibGUKLSAgICAgICAgICAgICAgICAjIGVnIHJlbW92ZWQgb25lIHRhYmxlIGFu ZCBhZGRlZCBvbmUgbmV3IHRhYmxlCi0gICAgICAgICAgICAgICAgZWxpZiBjX2xlbiA9PSBwX2xl bjoKLSAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19hZGRlZCddID0gbGlz dCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRhWydjb2xsX2luaGVyaXRzJ10pIC0g c2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCi0gICAgICAgICAgICAgICAgICAgICkKLSAg ICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19yZW1vdmVkJ10gPSBsaXN0KAot ICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pIC0g c2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19k YXRhPW9sZF9kYXRhLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotICAgICAgICAgICAgIyBS ZW1vdmVzIHRyYWluaW5nIG5ldyBsaW5lcwotICAgICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdc bicpICsgJ1xuXG4nCi0KLSAgICAgICAgICAgICMgUGFyc2UvRm9ybWF0IGNvbHVtbnMgJiBjcmVh dGUgc3FsCi0gICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YToKLSAgICAgICAgICAgICAg ICAjIFBhcnNlIHRoZSBkYXRhIGNvbWluZyBmcm9tIGNsaWVudAotICAgICAgICAgICAgICAgIGRh dGEgPSBzZWxmLl9wYXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhLCBtb2RlPSdlZGl0JykKLQotICAg ICAgICAgICAgICAgIGNvbHVtbnMgPSBkYXRhWydjb2x1bW5zJ10KLSAgICAgICAgICAgICAgICBj b2x1bW5fc3FsID0gJ1xuJwotCi0gICAgICAgICAgICAgICAgIyBJZiBjb2x1bW4ocykgaXMvYXJl IGRlbGV0ZWQKLSAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29sdW1uczoKLSAgICAg ICAgICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snZGVsZXRlZCddOgotICAgICAgICAgICAg ICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAg ICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotICAgICAgICAgICAgICAgICAgICAg ICAgIyBTcWwgZm9yIGRyb3AgY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAnaW5o ZXJpdGVkZnJvbScgbm90IGluIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1u X3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3Ry aXAoJ1xuJykgKyAnXG5cbicKLQotICAgICAgICAgICAgICAgICMgSWYgY29sdW1uKHMpIGlzL2Fy ZSBjaGFuZ2VkCi0gICAgICAgICAgICAgICAgIyBIZXJlIHdlIHdpbGwgYmUgbmVlZGluZyBwcmV2 aW91cyBwcm9wZXJ0aWVzIG9mIGNvbHVtbgotICAgICAgICAgICAgICAgICMgc28gdGhhdCB3ZSBj YW4gY29tcGFyZSAmIHVwZGF0ZSBpdAotICAgICAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBj b2x1bW5zOgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb2x1bW5zWydjaGFuZ2VkJ106 Ci0gICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0g ICAgICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0gICAgICAg ICAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jb2x1bW5fYWNsKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZD1jWydhdHRudW0nXSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNob3dfc3lzX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQot Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QocHJvcGVydGllc19zcWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSBy ZXNbJ3Jvd3MnXVswXQotCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnY2x0eXBl J10sIG9sZF9kYXRhWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKG9s ZF9kYXRhWydjbHR5cGUnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gc2Vs Zi5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKG9sZF9kYXRhKQotCi0gICAgICAg ICAgICAgICAgICAgICAgICBmdWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxfdHlwZSgKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsndHlwbnNwbmFtZSddLCBvbGRfZGF0YVsndHlw bmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydpc2R1cCddLCBv bGRfZGF0YVsnYXR0bmRpbXMnXSwgb2xkX2RhdGFbJ2F0dHR5cG1vZCddCi0gICAgICAgICAgICAg ICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5n dGggJiBwcmVjaXNpb24gYm90aAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSBy ZS5zZWFyY2gocicoXGQrKSwoXGQrKScsIGZ1bGx0eXBlKQotICAgICAgICAgICAgICAgICAgICAg ICAgaWYgbWF0Y2hPYmo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2F0 dGxlbiddID0gaW50KG1hdGNoT2JqLmdyb3VwKDEpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IGludChtYXRjaE9iai5ncm91cCgyKSkKLSAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBJZiB3ZSBoYXZlIGxlbmd0aCBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0 Y2hPYmogPSByZS5zZWFyY2gocicoXGQrKScsIGZ1bGx0eXBlKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIG1hdGNoT2JqOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv bGRfZGF0YVsnYXR0bGVuJ10gPSBpbnQobWF0Y2hPYmouZ3JvdXAoMSkpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvbGRfZGF0YVsnYXR0bGVuJ10gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKLQotICAgICAgICAgICAgICAg ICAgICAgICAgb2xkX2RhdGFbJ2NsdHlwZSddID0gRGF0YVR5cGVSZWFkZXIucGFyc2VfdHlwZV9u YW1lKG9sZF9kYXRhWydjbHR5cGUnXSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwg Zm9yIGFsdGVyIGNvbHVtbgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZy b20nIG5vdCBpbiBjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9zcWwgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYu Y29ubikuc3RyaXAoJ1xuJykgKyAnXG5cbicKLQotICAgICAgICAgICAgICAgICMgSWYgY29sdW1u KHMpIGlzL2FyZSBhZGRlZAotICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29sdW1uczoK LSAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snYWRkZWQnXToKLSAgICAgICAg ICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLSAgICAgICAgICAgICAgICAg ICAgICAgICMgU3FsIGZvciBjcmVhdGUgY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICBp ZiAnYXR0YWNsJyBpbiBjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCdd ID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsKQotCi0g ICAgICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25f dG9fc3RyaW5nKGMpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICdpbmhlcml0ZWRmcm9t JyBub3QgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fc3FsICs9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg W3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKSAr ICdcblxuJwotCi0gICAgICAgICAgICAgICAgIyBDb21iaW5lIGFsbCB0aGUgU1FMIHRvZ2V0aGVy Ci0gICAgICAgICAgICAgICAgU1FMICs9IGNvbHVtbl9zcWwuc3RyaXAoJ1xuJykKLQotICAgICAg ICAgICAgIyBDaGVjayBpZiBpbmRleCBjb25zdHJhaW50cyBhcmUgYWRkZWQvY2hhbmdlZC9kZWxl dGVkCi0gICAgICAgICAgICBpbmRleF9jb25zdHJhaW50X3NxbCA9IHNlbGYuZ2V0X2luZGV4X2Nv bnN0cmFpbnRfc3FsKGRpZCwgdGlkLCBkYXRhKQotICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGlu ZGV4IGNvbnN0cmFpbnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKLSAgICAgICAgICAgIGlm IGluZGV4X2NvbnN0cmFpbnRfc3FsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIFNRTCAr PSAnXG4nICsgaW5kZXhfY29uc3RyYWludF9zcWwKLQotICAgICAgICAgICAgIyBDaGVjayBpZiBm b3JlaWduIGtleShzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCi0gICAgICAgICAgICBm b3JlaWduX2tleV9zcWwgPSBzZWxmLmdldF9mb3JlaWduX2tleV9zcWwodGlkLCBkYXRhKQotICAg ICAgICAgICAgIyBJZiB3ZSBoYXZlIGZvcmVpZ24ga2V5IHNxbCB0aGVuIGFkIGl0IGluIG1haW4g c3FsCi0gICAgICAgICAgICBpZiBmb3JlaWduX2tleV9zcWwgaXMgbm90IE5vbmU6Ci0gICAgICAg ICAgICAgICAgU1FMICs9ICdcbicgKyBmb3JlaWduX2tleV9zcWwKLQotICAgICAgICAgICAgIyBD aGVjayBpZiBjaGVjayBjb25zdHJhaW50KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQK LSAgICAgICAgICAgIGNoZWNrX2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRfY2hlY2tfY29uc3Ry YWludF9zcWwodGlkLCBkYXRhKQotICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGNoZWNrIGNvbnN0 cmFpbnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKLSAgICAgICAgICAgIGlmIGNoZWNrX2Nv bnN0cmFpbnRfc3FsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsg Y2hlY2tfY29uc3RyYWludF9zcWwKLQotICAgICAgICAgICAgIyBDaGVjayBpZiBleGNsdXNpb24g Y29uc3RyYWludChzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCi0gICAgICAgICAgICBl eGNsdXNpb25fY29uc3RyYWludF9zcWwgPSBzZWxmLmdldF9leGNsdXNpb25fY29uc3RyYWludF9z cWwoZGlkLCB0aWQsIGRhdGEpCi0gICAgICAgICAgICAjIElmIHdlIGhhdmUgY2hlY2sgY29uc3Ry YWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAotICAgICAgICAgICAgaWYgZXhjbHVzaW9u X2NvbnN0cmFpbnRfc3FsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIFNRTCArPSAnXG4n ICsgZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg IHJlcXVpcmVkX2FyZ3MgPSBbCi0gICAgICAgICAgICAgICAgJ25hbWUnCi0gICAgICAgICAgICBd Ci0KLSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKLSAgICAgICAgICAgICAg ICBpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXR0ZXh0 KCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAgICAgICAgICAjIHZhbGlkYXRlIGNv bnN0cmFpbnQgZGF0YS4KLSAgICAgICAgICAgIGZvciBrZXkgaW4gWydwcmltYXJ5X2tleScsICd1 bmlxdWVfY29uc3RyYWludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZm9yZWlnbl9rZXkn LCAnY2hlY2tfY29uc3RyYWludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXhjbHVkZV9j b25zdHJhaW50J106Ci0gICAgICAgICAgICAgICAgaWYga2V5IGluIGRhdGEgYW5kIGxlbihkYXRh W2tleV0pID4gMDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGNvbnN0cmFpbnQgaW4gZGF0YVtr ZXldOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3Ry YWlucyhrZXksIGNvbnN0cmFpbnQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBnZXR0ZXh0KCctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9yIHswfScuZm9ybWF0KGtleSkp Ci0KLSAgICAgICAgICAgICMgV2Ugd2lsbCBjb252ZXJ0IHByaXZpbGVnZXMgY29taW5nIGZyb20g Y2xpZW50IHJlcXVpcmVkCi0gICAgICAgICAgICAjIGluIHNlcnZlciBzaWRlIGZvcm1hdAotICAg ICAgICAgICAgaWYgJ3JlbGFjbCcgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBkYXRhWydyZWxh Y2wnXSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVsncmVsYWNsJ10sIHNlbGYuYWNsKQotCi0gICAg ICAgICAgICAjIFBhcnNlICYgZm9ybWF0IGNvbHVtbnMKLSAgICAgICAgICAgIGRhdGEgPSBzZWxm Ll9wYXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhKQotICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2hl Y2tfYW5kX2NvbnZlcnRfbmFtZV90b19zdHJpbmcoZGF0YSkKLQotICAgICAgICAgICAgaWYgJ2Zv cmVpZ25fa2V5JyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2ZvcmVp Z25fa2V5J106Ci0gICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1jWydjb2x1bW5zJ11b MF1bJ3JlZmVyZW5jZXMnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3NjaGVt YSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWydy ZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQotCi0gICAgICAgICAgICAj IElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAotICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3Nx bChkaWQsIHNjaWQsIHRpZCwgZGF0YSwgcmVzKQogICAgICAgICBTUUwgPSByZS5zdWIoJ1xuezIs fScsICdcblxuJywgU1FMKQogICAgICAgICBTUUwgPSBTUUwuc3RyaXAoJ1xuJykKKyAgICAgICAg aWYgU1FMID09ICcnOgorICAgICAgICAgICAgU1FMID0gIi0tbW9kaWZpZWQgU1FMIgorICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1TUUwsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKIAotICAgICAgICByZXR1cm4gU1FMLCBkYXRh WyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBvbGRfZGF0YVsnbmFtZSddCi0KLSAgICBA c3RhdGljbWV0aG9kCi0gICAgZGVmIHZhbGlkYXRlX2NvbnN0cmFpbnMoa2V5LCBkYXRhKToKLQot ICAgICAgICBpZiBrZXkgPT0gJ3ByaW1hcnlfa2V5JyBvciBrZXkgPT0gJ3VuaXF1ZV9jb25zdHJh aW50JzoKLSAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCBsZW4oZGF0YVsnY29s dW1ucyddKSA+IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgIGVs c2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGVsaWYga2V5ID09ICdm b3JlaWduX2tleSc6Ci0gICAgICAgICAgICBpZiAnb2lkJyBub3QgaW4gZGF0YToKLSAgICAgICAg ICAgICAgICBmb3IgYXJnIGluIFsnY29sdW1ucyddOgotICAgICAgICAgICAgICAgICAgICBpZiBh cmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg ICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGFbYXJnXSwgbGlzdCkgYW5kIGxl bihkYXRhW2FyZ10pIDwgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQot Ci0gICAgICAgICAgICAgICAgaWYgJ2F1dG9pbmRleCcgaW4gZGF0YSBhbmQgZGF0YVsnYXV0b2lu ZGV4J10gYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICgnY292ZXJpbmdpbmRleCcgbm90 IGluIGRhdGEgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YVsnY292ZXJpbmdpbmRleCddID09ICcnKToKLSAgICAgICAgICAgICAgICAgICAg cmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgZWxpZiBr ZXkgPT0gJ2NoZWNrX2NvbnN0cmFpbnQnOgotICAgICAgICAgICAgZm9yIGFyZyBpbiBbJ2NvbnNy YyddOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YSBvciBkYXRhW2FyZ10gPT0g Jyc6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJu IFRydWUKLQotICAgICAgICBlbGlmIGtleSA9PSAnZXhjbHVkZV9jb25zdHJhaW50JzoKLSAgICAg ICAgICAgIHBhc3MKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBkZXBl bmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAg ICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0dXJuIGFqYXggcmVz cG9uc2UKQEAgLTI0NjAsNDMgKzExOTksOSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVW aWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc2NpZDog U2NoZW1hIElECiAgICAgICAgICAgICB0aWQ6IFRhYmxlIElECiAgICAgICAgICIiIgotICAgICAg ICAjIFNwZWNpZmljIGNvbmRpdGlvbiBmb3IgY29sdW1uIHdoaWNoIHdlIG5lZWQgdG8gYXBwZW5k Ci0gICAgICAgIHdoZXJlID0gIldIRVJFIGRlcC5yZWZvYmppZD17MH06Ok9JRCIuZm9ybWF0KHRp ZCkKKyAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3RhYmxlX2RlcGVuZGVudHMoc2Vs ZiwgdGlkKQogCi0gICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50 cygKLSAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCi0gICAgICAgICkKLQotICAgICAgICAjIFNw ZWNpZmljIHNxbCB0byBydW4gYWdhaW50IGNvbHVtbiB0byBmZXRjaCBkZXBlbmRlbnRzCi0gICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmQuc3FsJ10pLCB3 aGVyZT13aGVyZSkKLQotICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByZXNb J3Jvd3MnXToKLSAgICAgICAgICAgIHJlZl9uYW1lID0gcm93WydyZWZuYW1lJ10KLSAgICAgICAg ICAgIGlmIHJlZl9uYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAg ICAgICAgICAgZGVwX3R5cGUgPSAnJwotICAgICAgICAgICAgZGVwX3N0ciA9IHJvd1snZGVwdHlw ZSddCi0gICAgICAgICAgICBpZiBkZXBfc3RyID09ICdhJzoKLSAgICAgICAgICAgICAgICBkZXBf dHlwZSA9ICdhdXRvJwotICAgICAgICAgICAgZWxpZiBkZXBfc3RyID09ICduJzoKLSAgICAgICAg ICAgICAgICBkZXBfdHlwZSA9ICdub3JtYWwnCi0gICAgICAgICAgICBlbGlmIGRlcF9zdHIgPT0g J2knOgotICAgICAgICAgICAgICAgIGRlcF90eXBlID0gJ2ludGVybmFsJwotCi0gICAgICAgICAg ICBkZXBlbmRlbnRzX3Jlc3VsdC5hcHBlbmQoeyd0eXBlJzogJ3NlcXVlbmNlJywgJ25hbWUnOiBy ZWZfbmFtZSwgJ2ZpZWxkJzogZGVwX3R5cGV9KQotCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCi0gICAgICAgICAg ICBzdGF0dXM9MjAwCi0gICAgICAgICkKLQotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBA QmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZGVwZW5kZW5jaWVzKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlz IGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQpA QCAtMjUwOCwxOCArMTIxMywxMCBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJRAogICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECiAgICAgICAgICAgICB0aWQ6IFRhYmxl IElECi0KICAgICAgICAgIiIiCi0gICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdl dF9kZXBlbmRlbmNpZXMoCi0gICAgICAgICAgICBzZWxmLmNvbm4sIHRpZAotICAgICAgICApCi0K LSAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0gICAgICAgICAgICByZXNwb25zZT1kZXBl bmRlbmNpZXNfcmVzdWx0LAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCisgICAg ICAgIHJldHVybiBCYXNlVGFibGVWaWV3LmdldF90YWJsZV9kZXBlbmRlbmNpZXMoc2VsZiwgdGlk KQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3By ZWNvbmRpdGlvbgogICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToK ICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVzIHJldmVyc2Ug ZW5naW5lZXJlZCBzcWwgZm9yCkBAIC0yNTM0LDE1ICsxMjMxLDExIEBAIGNsYXNzIFRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAg ICAgICIiIgogICAgICAgICBtYWluX3NxbCA9IFtdCiAKLSAgICAgICAgIiIiCi0gICAgICAgICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAgICAgIyAxKSBSZXZlcnNl IGVuZ2luZWVyZWQgc3FsIGZvciBUQUJMRQotICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICIiIgotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVf dGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgZGlkPWRpZCwg c2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxh c3RzeXNvaWQKKyAgICAgICAgKQogICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QoU1FMKQogICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0yNTUyLDI1MCArMTI0NSwx MCBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFj dXVtU2V0dGluZ3MpOgogCiAgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQogCi0gICAgICAg ICMgVGFibGUgJiBTY2hlbWEgZGVjbGFyYXRpb24gc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4g Y2hpbGQgbm9kZXMKLSAgICAgICAgc2NoZW1hID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgdGFi bGUgPSBkYXRhWyduYW1lJ10KLQotICAgICAgICBkYXRhID0gc2VsZi5fZm9ybWF0dGVyKGRpZCwg c2NpZCwgdGlkLCBkYXRhKQotCi0gICAgICAgICMgTm93IHdlIGhhdmUgYWxsIGxpcyBvZiBjb2x1 bW5zIHdoaWNoIHdlIG5lZWQKLSAgICAgICAgIyB0byBpbmNsdWRlIGluIG91ciBjcmVhdGUgZGVm aW5pdGlvbiwgTGV0J3MgZm9ybWF0IHRoZW0KLSAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGE6 Ci0gICAgICAgICAgICBmb3IgYyBpbiBkYXRhWydjb2x1bW5zJ106Ci0gICAgICAgICAgICAgICAg aWYgJ2F0dGFjbCcgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgY1snYXR0YWNsJ10gPSBwYXJz ZV9wcml2X3RvX2RiKGNbJ2F0dGFjbCddLCBzZWxmLmNvbHVtbl9hY2wpCi0KLSAgICAgICAgICAg ICAgICAjIGNoZWNrIHR5cGUgZm9yICdbXScgaW4gaXQKLSAgICAgICAgICAgICAgICBpZiAnY2x0 eXBlJyBpbiBjOgotICAgICAgICAgICAgICAgICAgICBjWydjbHR5cGUnXSwgY1snaGFzU3FyQnJh Y2tldCddID0gc2VsZi5fY2x0eXBlX2Zvcm1hdHRlcihjWydjbHR5cGUnXSkKLQotICAgICAgICBz cWxfaGVhZGVyID0gdSItLSBUYWJsZTogezB9XG5cbi0tICIuZm9ybWF0KHNlbGYucXRJZGVudChz ZWxmLmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddKSkK LQotICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0KLSAgICAgICAgc3FsX2hlYWRlciA9IHNx bF9oZWFkZXIuc3RyaXAoJ1xuJykKLSAgICAgICAgc3FsX2hlYWRlciArPSAnXG4nCi0KLSAgICAg ICAgIyBBZGQgaW50byBtYWluIHNxbAotICAgICAgICBtYWluX3NxbC5hcHBlbmQoc3FsX2hlYWRl cikKLQotICAgICAgICAjIFBhcnNlIHByaXZpbGVnZSBkYXRhCi0gICAgICAgIGlmICdyZWxhY2wn IGluIGRhdGE6Ci0gICAgICAgICAgICBkYXRhWydyZWxhY2wnXSA9IHBhcnNlX3ByaXZfdG9fZGIo ZGF0YVsncmVsYWNsJ10sIHNlbGYuYWNsKQotCi0gICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9y IG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0gICAgICAgIHRhYmxlX3NxbCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubiwg aXNfc3FsPVRydWUpCi0KLSAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAotICAgICAgICB0YWJs ZV9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgdGFibGVfc3FsKQotICAgICAgICBtYWlu X3NxbC5hcHBlbmQodGFibGVfc3FsLnN0cmlwKCdcbicpKQotCi0gICAgICAgICIiIgotICAgICAg ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICAgICAjIDIpIFJl dmVyc2UgZW5naW5lZXJlZCBzcWwgZm9yIElOREVYCi0gICAgICAgICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICIiIgotCi0gICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHRpZD10aWQpCi0g ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAg ICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQorICAgICAgICByZXR1cm4gQmFzZVRhYmxlVmlldy5nZXRfcmV2 ZXJzZV9lbmdpbmVlcmVkX3NxbCgKKyAgICAgICAgICAgIHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBt YWluX3NxbCwgZGF0YSkKIAotICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLQotICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw cm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9 ZGlkLCB0aWQ9dGlkLCBpZHg9cm93WydvaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKLQotICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBd KQotICAgICAgICAgICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVz aW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAotICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBz Y2hlbWEKLSAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSB0YWJsZQotICAgICAgICAgICAgIyBX ZSBhbHNvIG5lZWQgdG8gZmVjdGggY29sdW1ucyBvZiBpbmRleAotICAgICAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW5fZGV0YWlscy5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4PXJvd1snb2lkJ10p Ci0gICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAgICAjICdhdHRk ZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVlcnkgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVt Ci0gICAgICAgICAgICAjICdvcHRpb25zJyB3ZSBuZWVkIHRydWUvZmFsc2UgdG8gcmVuZGVyIHN3 aXRjaCBBU0MoZmFsc2UpL0RFU0ModHJ1ZSkKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotICAg ICAgICAgICAgY29scyA9IFtdCi0gICAgICAgICAgICBmb3IgY29sX3JvdyBpbiByc2V0Wydyb3dz J106Ci0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIGFsbCBkYXRhIGFzIGNvbGxlY3Rpb24gZm9y IENvbHVtbnNNb2RlbAotICAgICAgICAgICAgICAgIGNvbHNfZGF0YSA9IHsKLSAgICAgICAgICAg ICAgICAgICAgJ2NvbG5hbWUnOiBjb2xfcm93WydhdHRkZWYnXS5zdHJpcCgnIicpLAotICAgICAg ICAgICAgICAgICAgICAnY29sbHNwY25hbWUnOiBjb2xfcm93Wydjb2xsbnNwbmFtZSddLAotICAg ICAgICAgICAgICAgICAgICAnb3BfY2xhc3MnOiBjb2xfcm93WydvcGNuYW1lJ10sCi0gICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIGNvbF9yb3dbJ29wdGlvbnMnXVswXSA9PSAn REVTQyc6Ci0gICAgICAgICAgICAgICAgICAgIGNvbHNfZGF0YVsnc29ydF9vcmRlciddID0gVHJ1 ZQotICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKGNvbHNfZGF0YSkKLQotICAgICAgICAg ICAgICAgICMgV2UgbmVlZCBzYW1lIGRhdGEgYXMgc3RyaW5nIHRvIGRpc3BsYXkgaW4gcHJvcGVy dGllcyB3aW5kb3cKLSAgICAgICAgICAgICAgICAjIElmIG11bHRpcGxlIGNvbHVtbiB0aGVuIHNl cGFyYXRlIGl0IGJ5IGNvbG9uCi0gICAgICAgICAgICAgICAgY29sc19zdHIgPSBjb2xfcm93Wydh dHRkZWYnXQotICAgICAgICAgICAgICAgIGlmIGNvbF9yb3dbJ2NvbGxuc3BuYW1lJ106Ci0gICAg ICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgQ09MTEFURSAnICsgY29sX3Jvd1snY29sbG5z cG5hbWUnXQotICAgICAgICAgICAgICAgIGlmIGNvbF9yb3dbJ29wY25hbWUnXToKLSAgICAgICAg ICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsgY29sX3Jvd1snb3BjbmFtZSddCi0gICAgICAg ICAgICAgICAgaWYgY29sX3Jvd1snb3B0aW9ucyddWzBdID09ICdERVNDJzoKLSAgICAgICAgICAg ICAgICAgICAgY29sc19zdHIgKz0gJyBERVNDJwotICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5k KGNvbHNfc3RyKQotCi0gICAgICAgICAgICAjIFB1c2ggYXMgY29sbGVjdGlvbgotICAgICAgICAg ICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucwotICAgICAgICAgICAgIyBQdXNoIGFzIHN0cmlu ZwotICAgICAgICAgICAgZGF0YVsnY29scyddID0gJywgJy5qb2luKGNvbHMpCi0KLSAgICAgICAg ICAgIHNxbF9oZWFkZXIgPSB1IlxuLS0gSW5kZXg6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWydu YW1lJ10pCi0KLSAgICAgICAgICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQot Ci0gICAgICAgICAgICBpbmRleF9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu aW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLSAgICAgICAgICAgIGlu ZGV4X3NxbCArPSAiXG4iCi0gICAgICAgICAgICBpbmRleF9zcWwgKz0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWx0ZXIuc3FsJ10pLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25u KQotCi0gICAgICAgICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCi0gICAgICAgICAgICBpbmRleF9z cWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgaW5kZXhfc3FsKQotICAgICAgICAgICAgbWFp bl9zcWwuYXBwZW5kKHNxbF9oZWFkZXIgKyAnXG5cbicgKyBpbmRleF9zcWwuc3RyaXAoJ1xuJykp Ci0KLSAgICAgICAgIiIiCi0gICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSAgICAgICAgIyAzKSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBUUklHR0VS UwotICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAg ICAgICIiIgotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJp Z2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdub2Rlcy5zcWwnXSksIHRpZD10aWQpCi0gICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAg ICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSAn JwotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJp Z2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwgdHJpZD1yb3dbJ29pZCddLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11b MF0pCi0gICAgICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUg dXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0gICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9 IHNjaGVtYQotICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCi0KLSAgICAgICAgICAg IGRhdGEgPSBzZWxmLmdldF90cmlnZ2VyX2Z1bmN0aW9uX3NjaGVtYShkYXRhKQotCi0gICAgICAg ICAgICBpZiBsZW4oZGF0YVsnY3VzdG9tX3RnYXJncyddKSA+IDE6Ci0gICAgICAgICAgICAgICAg IyBXZSBrbm93IHRoYXQgdHJpZ2dlciBoYXMgbW9yZSB0aGFuIDEgYXJndW1lbnQsIGxldCdzIGpv aW4gdGhlbQotICAgICAgICAgICAgICAgIGRhdGFbJ3RnYXJncyddID0gc2VsZi5fZm9ybWF0X2Fy Z3MoZGF0YVsnY3VzdG9tX3RnYXJncyddKQotCi0gICAgICAgICAgICBpZiBsZW4oZGF0YVsndGdh dHRyJ10pID4gMToKLSAgICAgICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKGRhdGFbJ3Rn YXR0ciddLnNwbGl0KCcgJykpCi0KLSAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xpc3Q9Y29sdW1u cykKLQotICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLSAgICAg ICAgICAgICAgICAjICd0Z2F0dHInIGNvbnRhaW5zIGxpc3Qgb2YgY29sdW1ucyBmcm9tIHRhYmxl IHVzZWQgaW4gdHJpZ2dlcgotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotCi0gICAgICAg ICAgICAgICAgZm9yIGNvbF9yb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgICAgICAg ICBjb2x1bW5zLmFwcGVuZCh7J2NvbHVtbic6IGNvbF9yb3dbJ25hbWUnXX0pCi0KLSAgICAgICAg ICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCi0KLSAgICAgICAgICAgIGRhdGEgPSB0 cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKLQotICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4t LSBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQotCi0gICAgICAgICAg ICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3Rl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgICAgICAjIElm IHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAotICAgICAg ICAgICAgdHJpZ2dlcl9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dl cl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLQotICAgICAgICAgICAg dHJpZ2dlcl9zcWwgPSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgdHJpZ2dlcl9zcWwuc3RyaXAoJ1xu JykKLQotICAgICAgICAgICAgIyBJZiB0cmlnZ2VyIGlzIGRpc2FibGVkIHRoZW4gYWRkIHNxbCBj b2RlIGZvciB0aGUgc2FtZQotICAgICAgICAgICAgaWYgbm90IGRhdGFbJ2lzX2VuYWJsZV90cmln Z2VyJ106Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcl9zcWwgKz0gJ1xuXG4nCi0gICAgICAgICAg ICAgICAgdHJpZ2dlcl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKLSAgICAgICAg ICAgICAgICAgICAgc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLQotICAgICAgICAgICAgIyBBZGQgaW50byBtYWlu IHNxbAotICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywg dHJpZ2dlcl9zcWwpCi0gICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQodHJpZ2dlcl9zcWwpCi0K LSAgICAgICAgIiIiCi0gICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSAgICAgICAgIyA0KSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBSVUxFUwotICAgICAg ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICIiIgotCi0g ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgIFtzZWxm LnJ1bGVzX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgdGlkPXRpZCkKLQotICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAg ICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAg ICAgICAgICAgIHJ1bGVzX3NxbCA9ICdcbicKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXQotICAgICAgICAgICAgKSwgcmlkPXJvd1snb2lkJ10sIGRhdGxh c3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKLQotICAgICAgICAgICAgcmVzX2RhdGEgPSBwYXJzZV9ydWxlX2RlZmluaXRpb24ocmVzKQot ICAgICAgICAgICAgcnVsZXNfc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAg ICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKLSAg ICAgICAgICAgICAgICBkYXRhPXJlc19kYXRhLCBkaXNwbGF5X2NvbW1lbnRzPVRydWUpCi0KLSAg ICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKLSAgICAgICAgICAgIHJ1bGVzX3NxbCA9IHJl LnN1YignXG57Mix9JywgJ1xuXG4nLCBydWxlc19zcWwpCi0gICAgICAgICAgICBtYWluX3NxbC5h cHBlbmQocnVsZXNfc3FsKQotCi0gICAgICAgIHNxbCA9ICdcbicuam9pbihtYWluX3NxbCkKLQot ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwuc3RyaXAoJ1xuJykpCi0K LSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29u ZGl0aW9uCiAgICAgZGVmIHNlbGVjdF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk KToKICAgICAgICAgIiIiCiAgICAgICAgIFNFTEVDVCBzY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0 CkBAIC0yODEwLDEwICsxMjYzLDExIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcs IERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIFJldHVybnM6CiAgICAg ICAgICAgICBTRUxFQ1QgU2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdAogICAgICAgICAiIiIKLSAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0 aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxm LmRhdGxhc3RzeXNvaWQpCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAg IGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCisgICAgICAgICkKICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0 YXR1czoKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQpAQCAtMjgzOSw3ICsxMjkzLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgKQogICAgICAgICBy ZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGluc2Vy dF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAg ICAgIElOU0VSVCBzY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CkBAIC0yODU0LDEwICsxMzA4LDEx IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1 dW1TZXR0aW5ncyk6CiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgICBJTlNFUlQgU2NyaXB0 IHNxbCBmb3IgdGhlIG9iamVjdAogICAgICAgICAiIiIKLSAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRh YmxlX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgIGRpZD1k aWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5k YXRsYXN0c3lzb2lkCisgICAgICAgICkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtMjg4Niw3ICsxMzQx LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZh Y3V1bVNldHRpbmdzKToKIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1z cWwpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tf cHJlY29uZGl0aW9uCiAgICAgZGVmIHVwZGF0ZV9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAgIFVQREFURSBzY3JpcHQgc3FsIGZvciB0aGUg b2JqZWN0CkBAIC0yOTAxLDEwICsxMzU2LDExIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9k ZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIFJldHVybnM6 CiAgICAgICAgICAgICBVUERBVEUgU2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdAogICAgICAgICAi IiIKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRp ZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1z Y2lkLCB0aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29p ZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVz LnNxbCddKSwKKyAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCisgICAgICAgICkKICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYg bm90IHN0YXR1czoKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQpAQCAtMjkzNSw3ICsxMzkxLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGRO b2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGRlbGV0ZV9z cWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAg IERFTEVURSBzY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CkBAIC0yOTUwLDEwICsxNDA2LDExIEBA IGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1T ZXR0aW5ncyk6CiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgICBERUxFVEUgU2NyaXB0IHNx bCBmb3IgdGhlIG9iamVjdAogICAgICAgICAiIiIKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxl X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgIGRpZD1kaWQs IHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRs YXN0c3lzb2lkCisgICAgICAgICkKICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtMjk2Niw3ICsxNDIzLDcg QEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1 bVNldHRpbmdzKToKIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwp CiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJl Y29uZGl0aW9uCiAgICAgZGVmIHN0YXRpc3RpY3Moc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU3RhdGlzdGljcwpAQCAtMjk4Miw2MyAr MTQzOSw2IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBzdGF0 aXN0aWNzIGZvciBhbGwgdGhlIHRhYmxlcyBpbiB0aGF0CiAgICAgICAgIHNjaGVtYS4KICAgICAg ICAgIiIiCi0KLSAgICAgICAgIyBGZXRjaCBzY2hlbWEgbmFtZQotICAgICAgICBzdGF0dXMsIHNj aGVtYV9uYW1lID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAotICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdnZXRfc2NoZW1hLnNxbCddKSwKLSAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2Np ZD1zY2lkCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2NoZW1h X25hbWUpCi0KLSAgICAgICAgaWYgdGlkIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCi0gICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn Y29sbF90YWJsZV9zdGF0cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5j b25uLCBzY2hlbWFfbmFtZT1zY2hlbWFfbmFtZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAg ICAgICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgRm9yIEluZGl2aWR1YWwgdGFibGUg c3RhdHMKLQotICAgICAgICAgICAgIyBDaGVjayBpZiBwZ3N0YXR0dXBsZSBleHRlbnNpb24gaXMg YWxyZWFkeSBjcmVhdGVkPwotICAgICAgICAgICAgIyBpZiBjcmVhdGVkIHRoZW4gb25seSBhZGQg ZXh0ZW5kZWQgc3RhdHMKLSAgICAgICAgICAgIHN0YXR1cywgaXNfcGdzdGF0dHVwbGUgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoIiIiCi0gICAgICAgICAgICBTRUxFQ1QgKGNvdW50KGV4dG5h bWUpID4gMCkgQVMgaXNfcGdzdGF0dHVwbGUKLSAgICAgICAgICAgIEZST00gcGdfZXh0ZW5zaW9u Ci0gICAgICAgICAgICBXSEVSRSBleHRuYW1lPSdwZ3N0YXR0dXBsZScKLSAgICAgICAgICAgICIi IikKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1pc19wZ3N0YXR0dXBsZSkKLQotICAgICAgICAg ICAgIyBGZXRjaCBUYWJsZSBuYW1lCi0gICAgICAgICAgICBzdGF0dXMsIHRhYmxlX25hbWUgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCi0gICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0 X3RhYmxlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9 c2NpZCwgdGlkPXRpZAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKLSAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz10YWJsZV9uYW1lKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCi0gICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3Rh dHMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NoZW1hX25h bWU9c2NoZW1hX25hbWUsCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlX25hbWU9dGFibGVfbmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfcGdzdGF0dHVwbGU9aXNfcGdzdGF0dHVwbGUsIHRp ZD10aWQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0KLSAgICAgICAgaWYgbm90 IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQotCi0gICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCi0gICAgICAgICAg ICBkYXRhPXJlcywKLSAgICAgICAgICAgIHN0YXR1cz0yMDAKLSAgICAgICAgKQotCisgICAgICAg IHJldHVybiBCYXNlVGFibGVWaWV3LmdldF90YWJsZV9zdGF0aXN0aWNzKHNlbGYsIHNjaWQsIHRp ZCkKIAogVGFibGVWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29sdW1uL3RlbXBsYXRlcy9jb2x1bW4vanMvY29sdW1uLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbHVtbi90ZW1wbGF0ZXMvY29sdW1uL2pzL2NvbHVtbi5qcwppbmRleCAxNzliOTYxLi4x MDczN2UwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3RlbXBsYXRlcy9jb2x1bW4vanMv Y29sdW1uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW4vdGVtcGxhdGVzL2NvbHVtbi9qcy9jb2x1 bW4uanMKQEAgLTg2LDYgKzg2LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29sdW1uJywgWwog CiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rl c1snY29sdW1uJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVI aWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICBw YXJlbnRfdHlwZTogWyd0YWJsZScsICd2aWV3JywgJ212aWV3J10sCiAgICAgICBjb2xsZWN0aW9u X3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnLCAnY29sbC1tdmlldyddLAogICAgICAg dHlwZTogJ2NvbHVtbicsCkBAIC0xOTcsMTEgKzE5OCwxNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS5jb2x1bW4nLCBbCiAgICAgICAgICAgICApOwogICAgICAgICAgIH0sCiAgICAgICAgICAgZGlz YWJsZWQ6IGZ1bmN0aW9uKG0pewotICAgICAgICAgICAgLy8gSWYgcHJpbWFyeSBrZXkgYWxyZWFk eSBleGlzdCB0aGVuIGRpc2FibGUuCisgICAgICAgICAgICAvLyBEaXNhYmxlIGl0LCB3aGVuIG9u ZSBvZiB0aGlzOgorICAgICAgICAgICAgLy8gLSBQcmltYXJ5IGtleSBhbHJlYWR5IGV4aXN0Cisg ICAgICAgICAgICAvLyAtIFRhYmxlIGlzIGEgcGFydGl0aW9uZWQgdGFibGUKICAgICAgICAgICAg IGlmICgKLSAgICAgICAgICAgICAgbS50b3AgJiYgIV8uaXNVbmRlZmluZWQobS50b3AuZ2V0KCdv aWQnKSkgJiYKLSAgICAgICAgICAgICAgICBtLnRvcC5nZXQoJ3ByaW1hcnlfa2V5JykubGVuZ3Ro ID4gMCAmJgotICAgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0udG9wLmdldCgncHJpbWFy eV9rZXknKS5maXJzdCgpLmdldCgnb2lkJykpCisgICAgICAgICAgICAgIG0udG9wICYmICgoCisg ICAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobS50b3AuZ2V0KCdvaWQnKSkgJiYKKyAgICAg ICAgICAgICAgICAgIG0udG9wLmdldCgncHJpbWFyeV9rZXknKS5sZW5ndGggPiAwICYmCisgICAg ICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLnRvcC5nZXQoJ3ByaW1hcnlfa2V5JykuZmly c3QoKS5nZXQoJ29pZCcpKQorICAgICAgICAgICAgICApIHx8ICgKKyAgICAgICAgICAgICAgICBt LnRvcC5oYXMoJ2lzX3BhcnRpdGlvbmVkJykgJiYgbS50b3AuZ2V0KCdpc19wYXJ0aXRpb25lZCcp CisgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0yMjgsNiArMjM1LDE3IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLmNvbHVtbicsIFsKICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg ICAgfQogCisgICAgICAgICAgICAvLyBJZiB0YWJsZSBpcyBwYXJ0aXRpb25lZCB0YWJsZSB0aGVu IGRpc2FibGUKKyAgICAgICAgICAgIGlmIChtLnRvcCAmJiAhXy5pc1VuZGVmaW5lZChtLnRvcC5n ZXQoJ2lzX3BhcnRpdGlvbmVkJykpICYmCisgICAgICAgICAgICAgIG0udG9wLmdldCgnaXNfcGFy dGl0aW9uZWQnKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3ByaW1hcnlfa2V5JywgZmFsc2Up OworICAgICAgICAgICAgICB9LCAxMCk7CisKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhDb2x1bW5DaGVj ay5hcHBseSh0aGlzLCBbbV0pICYmCiAgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG5hbWUp ICYmICFfLmlzTnVsbChuYW1lKSAmJiBuYW1lICE9PSAnJykgewogICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW4vdGVzdHMvdGVzdF9jb2x1bW5f Z2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi90ZXN0cy90ZXN0X2NvbHVtbl9nZXQucHkKaW5kZXgg NzEzZDk5OS4uNGFkZmJlZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi90ZXN0cy90ZXN0 X2NvbHVtbl9nZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi90ZXN0cy90ZXN0X2NvbHVtbl9n ZXQucHkKQEAgLTI0LDcgKzI0LDcgQEAgZnJvbSAuIGltcG9ydCB1dGlscyBhcyBjb2x1bW5zX3V0 aWxzCiBjbGFzcyBDb2x1bW5HZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgIiIi VGhpcyBjbGFzcyB3aWxsIGdldCBjb2x1bW4gdW5kZXIgdGFibGUgbm9kZS4iIiIKICAgICBzY2Vu YXJpb3MgPSBbCi0gICAgICAgICgnRmV0Y2ggdGFibGUgTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jy b3dzZXIvY29sdW1uL29iai8nKSkKKyAgICAgICAgKCdGZXRjaCBjb2x1bW5zIHVuZGVyIHRhYmxl IG5vZGUnLCBkaWN0KHVybD0nL2Jyb3dzZXIvY29sdW1uL29iai8nKSkKICAgICBdCiAKICAgICBk ZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tf Y29uc3RyYWludC90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9qcy9jaGVja19jb25zdHJhaW50 LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvdGVtcGxhdGVzL2No ZWNrX2NvbnN0cmFpbnQvanMvY2hlY2tfY29uc3RyYWludC5qcwppbmRleCBiMTJkOWQzLi44NWY2 MmY3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC90 ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9qcy9jaGVja19jb25zdHJhaW50LmpzCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3RlbXBsYXRlcy9jaGVja19jb25z dHJhaW50L2pzL2NoZWNrX2NvbnN0cmFpbnQuanMKQEAgLTEwLDYgKzEwLDcgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUuY2hlY2tfY29uc3RyYWludHMnLCBbCiAgIC8vIENoZWNrIENvbnN0cmFpbnQg Tm9kZQogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3RyYWludHMnXSkgewogICAg IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3RyYWludHMnXSA9IHBnQnJvd3Nlci5O b2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxl Q2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdjaGVja19jb25zdHJhaW50cycs CiAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ2hlY2snKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTog J2NvbGwtY29uc3RyYWludHMnLApAQCAtMTgsNyArMTksNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS5jaGVja19jb25zdHJhaW50cycsIFsKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAu c3RhdGljJywgeydmaWxlbmFtZSc6ICdjaGVja19kaWFsb2cuaHRtbCd9KSwKICAgICAgIGhhc1NR TDogdHJ1ZSwKICAgICAgIGhhc0RlcGVuZHM6IHRydWUsCi0gICAgICBwYXJlbnRfdHlwZTogWyd0 YWJsZSddLAorICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0aXRpb24nXSwKICAgICAg IEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAvLyBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRp b24gb2YgbWVudXMKICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCkBAIC0xMzcsNiArMTM4 LDE4IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNoZWNrX2NvbnN0cmFpbnRzJywgWwogICAgICAg ICAgICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbicsIGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9u JyksIG1vZGU6CiAgICAgICAgICAgWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIG1p bl92ZXJzaW9uOiA5MDIwMCwKICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgLy8gRGlzYWJsZWQgaWYgdGFibGUgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAg ICAgICAgICAgIGlmICgoXy5oYXMobSAsICd0b3AnKSAmJiAhXy5pc1VuZGVmaW5lZChtLnRvcCkg JiYgbS50b3AuZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB8fAorICAgICAgICAgICAgICAgIChfLmhh cyhtLCAnbm9kZV9pbmZvJykgJiYgXy5oYXMobS5ub2RlX2luZm8sICd0YWJsZScpICYmCisgICAg ICAgICAgICAgICAgXy5oYXMobS5ub2RlX2luZm8udGFibGUsICdpc19wYXJ0aXRpb25lZCcpICYm IG0ubm9kZV9pbmZvLnRhYmxlLmlzX3BhcnRpdGlvbmVkKQorICAgICAgICAgICAgKXsKKyAgICAg ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeworICAgICAgICAgICAgICAgICAgbS5zZXQo J2Nvbm5vaW5oZXJpdCcsIGZhbHNlKTsKKyAgICAgICAgICAgICAgfSwxMCk7CisKKyAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVybiAo KF8uaGFzKG0sICdoYW5kbGVyJykgJiYKICAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobS5o YW5kbGVyKSAmJgogICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykpKSB8 fCAoXy5pc0Z1bmN0aW9uKG0uaXNOZXcpICYmICFtLmlzTmV3KCkpKTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC90ZW1wbGF0ZXMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJh aW50L2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzCmluZGV4IDgxNGVkY2UuLjYwNTQ5NWQgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC90ZW1w bGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3RlbXBsYXRlcy9l eGNsdXNpb25fY29uc3RyYWludC9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcwpAQCAtNjAyLDYg KzYwMiw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmV4Y2x1c2lvbl9jb25zdHJhaW50JywgWwog ICAvLyBFeHRlbmQgdGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBleGNsdXNpb24gY29uc3Ry YWludCBub2RlCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCdd KSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddID0g cGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jy b3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ2V4Y2x1c2lv bl9jb25zdHJhaW50JywKICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdFeGNsdXNpb24gY29uc3RyYWlu dCcpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCkBAIC02MDks NyArNjEwLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZXhjbHVzaW9uX2NvbnN0cmFpbnQnLCBb CiAgICAgICBzcWxDcmVhdGVIZWxwOiAnZGRsLWNvbnN0cmFpbnRzLmh0bWwnLAogICAgICAgZGlh bG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2V4Y2x1c2lvbl9j b25zdHJhaW50X2RpYWxvZy5odG1sJ30pLAogICAgICAgaGFzU1FMOiB0cnVlLAotICAgICAgcGFy ZW50X3R5cGU6ICd0YWJsZScsCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3BhcnRpdGlv biddLAogICAgICAgY2FuRHJvcDogdHJ1ZSwKICAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAog ICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKQEAgLTkxNiwxMiArOTE3LDIyIEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLmV4Y2x1c2lvbl9jb25zdHJhaW50JywgWwogICAgICAgICAgIGlmIChkYXRhICYm IGRhdGEuY2hlY2sgPT0gZmFsc2UpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg ICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGEsIHBhcmVu dHMgPSBbXTsKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9 IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10sCisgICAgICAgICAgICBpbW1lZGlhdGVfcGFyZW50X3Rh YmxlX2ZvdW5kID0gZmFsc2UsCisgICAgICAgICAgICBpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxl X3BhcnRpdGlvbmVkID0gZmFsc2U7CiAgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUg dG8gY2hlY2sgcGFyZW50IG5vZGUKICAgICAgICAgICB3aGlsZSAoaSkgeworICAgICAgICAgICAg Ly8gSWYgdGFibGUgaXMgcGFydGl0aW9uZWQgdGFibGUgdGhlbiByZXR1cm4gZmFsc2UKKyAgICAg ICAgICAgIGlmICghaW1tZWRpYXRlX3BhcmVudF90YWJsZV9mb3VuZCAmJiAoZC5fdHlwZSA9PSAn dGFibGUnIHx8IGQuX3R5cGUgPT0gJ3BhcnRpdGlvbicpKSB7CisgICAgICAgICAgICAgIGltbWVk aWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICBpZiAoJ2lzX3Bh cnRpdGlvbmVkJyBpbiBkICYmIGQuaXNfcGFydGl0aW9uZWQpIHsKKyAgICAgICAgICAgICAgICBp c19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkID0gdHJ1ZTsKKyAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhl biBhbGxvdyB1c2VyIHRvIGNyZWF0ZSB0YWJsZQogICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihb J3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgICAgcmV0dXJuICFpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVk OwogICAgICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUpOwogICAgICAgICAgICAgaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwogICAgICAgICAgICAgZCA9IGkgPyB0 Lml0ZW1EYXRhKGkpIDogbnVsbDsKQEAgLTkzMCw3ICs5NDEsNyBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS5leGNsdXNpb25fY29uc3RyYWludCcsIFsKICAgICAgICAgICBpZiAoXy5pbmRleE9mKHBh cmVudHMsICdjYXRhbG9nJykgPiAtMSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJl dHVybiAhaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZDsKICAgICAgICAgICB9 CiAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9y ZWlnbl9rZXkvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L2pzL2ZvcmVpZ25fa2V5LmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3RlbXBsYXRlcy9mb3JlaWduX2tleS9qcy9mb3Jl aWduX2tleS5qcwppbmRleCA5NWFmYTNlLi5hNGJlYzA5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvZm9yZWlnbl9rZXkvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L2pzL2ZvcmVpZ25f a2V5LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS90ZW1wbGF0ZXMv Zm9yZWlnbl9rZXkvanMvZm9yZWlnbl9rZXkuanMKQEAgLTYwMiw2ICs2MDIsNyBAQCBkZWZpbmUo J3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mg bm9kZSBjbGFzcyBmb3IgZm9yZWlnbiBrZXkgbm9kZQogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sn Zm9yZWlnbl9rZXknXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXkn XSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTog cGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdmb3Jl aWduX2tleScsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnRm9yZWlnbiBrZXknKSwKICAgICAgIGNv bGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApAQCAtNjEwLDcgKzYxMSw3IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fa2V5JywgWwogICAgICAgZGlhbG9nSGVscDogdXJs X2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2ZvcmVpZ25fa2V5X2RpYWxvZy5odG1s J30pLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAgICAgaGFzRGVwZW5kczogZmFsc2UsCi0gICAg ICBwYXJlbnRfdHlwZTogJ3RhYmxlJywKKyAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywncGFy dGl0aW9uJ10sCiAgICAgICBjYW5Ecm9wOiB0cnVlLAogICAgICAgY2FuRHJvcENhc2NhZGU6IHRy dWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVlLApAQCAtMTA2OCwxMiArMTA2OSwyMiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsKICAgICAgICAgICBpZiAoZGF0YSAmJiBk YXRhLmNoZWNrID09IGZhbHNlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAg ICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRz ID0gW107CisgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBp dGVtRGF0YSwgcGFyZW50cyA9IFtdLAorICAgICAgICAgICAgaW1tZWRpYXRlX3BhcmVudF90YWJs ZV9mb3VuZCA9IGZhbHNlLAorICAgICAgICAgICAgaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9w YXJ0aXRpb25lZCA9IGZhbHNlOwogICAgICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRv IGNoZWNrIHBhcmVudCBub2RlCiAgICAgICAgICAgd2hpbGUgKGkpIHsKKyAgICAgICAgICAgIC8v IElmIHRhYmxlIGlzIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gcmV0dXJuIGZhbHNlCisgICAgICAg ICAgICBpZiAoIWltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgJiYgKGQuX3R5cGUgPT0gJ3Rh YmxlJyB8fCBkLl90eXBlID09ICdwYXJ0aXRpb24nKSkgeworICAgICAgICAgICAgICBpbW1lZGlh dGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgaWYgKCdpc19wYXJ0 aXRpb25lZCcgaW4gZCAmJiBkLmlzX3BhcnRpdGlvbmVkKSB7CisgICAgICAgICAgICAgICAgaXNf aW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZCA9IHRydWU7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4g YWxsb3cgdXNlciB0byBjIHJlYXRlIHRhYmxlCiAgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsn c2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICByZXR1cm4gIWlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7 CiAgICAgICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlwZSk7CiAgICAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CiAgICAgICAgICAgICBkID0gaSA/IHQu aXRlbURhdGEoaSkgOiBudWxsOwpAQCAtMTA4Miw3ICsxMDkzLDcgQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuZm9yZWlnbl9rZXknLCBbCiAgICAgICAgICAgaWYgKF8uaW5kZXhPZihwYXJlbnRzLCAn Y2F0YWxvZycpID4gLTEpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gIWlz X2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7CiAgICAgICAgICAgfQogICAgICAg fQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0 cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29uc3RyYWludC5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9pbmRleF9j b25zdHJhaW50L2pzL2luZGV4X2NvbnN0cmFpbnQuanMKaW5kZXggOTdhNDA0YS4uOTQ3OWFjZCAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxh dGVzL2luZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29uc3RyYWludC5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWlu dC9qcy9pbmRleF9jb25zdHJhaW50LmpzCkBAIC02LDYgKzYsNyBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS57e25vZGVfdHlwZX19JywgWwogICAvLyBFeHRlbmQgdGhlIGJyb3dzZXIncyBub2RlIGNs YXNzIGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3t7 bm9kZV90eXBlfX0nXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sne3tub2RlX3R5cGV9 fSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5 OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ3t7 bm9kZV90eXBlfX0nLAogICAgICAgbGFiZWw6ICd7eyBub2RlX2xhYmVsIH19JywKICAgICAgIGNv bGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApAQCAtMjAsNyArMjEsNyBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS57e25vZGVfdHlwZX19JywgWwogICAgICAgaGFzRGVwZW5kczogdHJ1 ZSwKICAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCiAgICAgICBzdGF0c1ByZXR0aWZ5RmllbGRz OiBbJ0luZGV4IHNpemUnXSwKLSAgICAgIHBhcmVudF90eXBlOiAndGFibGUnLAorICAgICAgcGFy ZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0aXRpb24nXSwKICAgICAgIGNhbkRyb3A6IHRydWUsCiAg ICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKICAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgewpAQCAt NDUsMTIgKzQ2LDI4IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnt7bm9kZV90eXBlfX0nLCBbCiAg ICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCiAgICAgICAgICAgcmV0dXJu IHRydWU7CiAKLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBp dGVtRGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBp ID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10sCisgICAgICAgICAgaW1tZWRpYXRl X3BhcmVudF90YWJsZV9mb3VuZCA9IGZhbHNlLAorICAgICAgICAgIGlzX2ltbWVkaWF0ZV9wYXJl bnRfdGFibGVfcGFydGl0aW9uZWQgPSBmYWxzZTsKKwogICAgICAgICAvLyBUbyBpdGVyYXRlIG92 ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQogICAgICAgICB3aGlsZSAoaSkgewotICAgICAg ICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gYyByZWF0ZSB0YWJsZQor ICAgICAgICAgIC8vIElmIHRhYmxlIGlzIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gcmV0dXJuIGZh bHNlCisgICAgICAgICAgaWYgKCFpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kICYmIChkLl90 eXBlID09ICd0YWJsZScgfHwgZC5fdHlwZSA9PSAncGFydGl0aW9uJykpIHsKKyAgICAgICAgICAg IGltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgPSB0cnVlOworICAgICAgICAgICAgaWYgKCdp c19wYXJ0aXRpb25lZCcgaW4gZCAmJiBkLmlzX3BhcnRpdGlvbmVkKSB7CisgICAgICAgICAgICAg ICAgaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZCA9IHRydWU7CisgICAgICAg ICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4g YWxsb3cgdXNlciB0byBjcmVhdGUgdGFibGUKICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2No ZW1hJ10sIGQuX3R5cGUpID4gLTEpIHsKICAgICAgICAgICAgIHslIGlmIG5vZGVfdHlwZSA9PSAn cHJpbWFyeV9rZXknICV9CisKKyAgICAgICAgICAgIGlmIChpc19pbW1lZGlhdGVfcGFyZW50X3Rh YmxlX3BhcnRpdGlvbmVkKSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg ICAgIH0KKwogICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIHByaW1hcnkg a2V5IHBlciB0YWJsZS4KICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHQuY2hpbGRyZW4oYXJn dW1lbnRzWzFdLCBmYWxzZSksCiAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2ZvdW5kID0gZmFs c2U7CkBAIC02Myw3ICs4MCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnt7bm9kZV90eXBlfX0n LCBbCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiAhcHJpbWFyeV9rZXlfZm91 bmQ7CiAgICAgICAgICAgICB7JSBlbHNlICV9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIHJldHVybiAhaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZDsK ICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgfQogICAgICAgICAgIHBhcmVudHMu cHVzaChkLl90eXBlKTsKQEAgLTc0LDcgKzkxLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUue3tu b2RlX3R5cGV9fScsIFsKICAgICAgICAgaWYgKF8uaW5kZXhPZihwYXJlbnRzLCAnY2F0YWxvZycp ID4gLTEpIHsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAhaXNfaW1tZWRpYXRlX3Bh cmVudF90YWJsZV9wYXJ0aXRpb25lZDsKICAgICAgICAgfQogICAgICAgfSwKIApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3RlbXBsYXRlcy9jb25zdHJhaW50cy9qcy9jb25zdHJh aW50cy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy90ZW1wbGF0ZXMvY29uc3RyYWludHMvanMv Y29uc3RyYWludHMuanMKaW5kZXggYTczNDZmMS4uZTM3MmIzYyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL3RlbXBsYXRlcy9jb25zdHJhaW50cy9qcy9jb25zdHJhaW50cy5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvdGVtcGxhdGVzL2NvbnN0cmFpbnRzL2pzL2NvbnN0 cmFpbnRzLmpzCkBAIC05LDE2ICs5LDE4IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNvbnN0cmFp bnRzJywgWwogICAgICAgICBub2RlOiAnY29uc3RyYWludHMnLAogICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnQ29uc3RyYWludHMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLAor ICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9k ZUhpZXJhcmNoeSwKICAgICAgICAgY29sdW1uczogWyduYW1lJywgJ2NvbW1lbnQnXQogICAgICAg fSk7CiAgIH07CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbnN0cmFpbnRzJ10pIHsKICAg ICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbnN0cmFpbnRzJ10gPSBwZ0Jyb3dzZXIuTm9kZS5l eHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxk VHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAnY29uc3RyYWludHMnLAogICAgICAgbGFi ZWw6IGdldHRleHQoJ0NvbnN0cmFpbnRzJyksCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xs LWNvbnN0cmFpbnRzJywKLSAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJ10sCisgICAgICBwYXJl bnRfdHlwZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7 CiAgICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAqLwogICAg ICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVz L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkKaW5kZXggZTUyYzE1 Yi4uMTNmOWQ4NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkKQEAgLTcyLDEyICs3MiwyOCBAQCBjbGFz cyBJbmRleGVzTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKICAgICAgICAgaWYgc3VwZXIo SW5kZXhlc01vZHVsZSwgc2VsZikuQmFja2VuZFN1cHBvcnRlZChtYW5hZ2VyLCAqKmt3YXJncyk6 CiAgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCdd KQogCisgICAgICAgICAgICAjIEluIGNhc2Ugb2YgcGFydGl0aW9uZWQgdGFibGUgcmV0dXJuIGZh bHNlLgorICAgICAgICAgICAgaWYgJ3RpZCcgaW4ga3dhcmdzIGFuZCBtYW5hZ2VyLnZlcnNpb24g Pj0gMTAwMDAwOgorICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9wYXRoID0gJ3BhcnRpdGlvbi9z cWwvI3swfSMnLmZvcm1hdChtYW5hZ2VyLnZlcnNpb24pCisgICAgICAgICAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbcGFydGl0aW9u X3BhdGgsICdiYWNrZW5kX3N1cHBvcnQuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICB0aWQ9 a3dhcmdzWyd0aWQnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IGNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorCisgICAgICAgICAgICAgICAgIyBjaGVj ayBpZiBhbnkgZXJyb3JzCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisg ICAgICAgICAgICAgICAgcmV0dXJuIG5vdCByZXMKKwogICAgICAgICAgICAgaWYgJ3ZpZCcgbm90 IGluIGt3YXJnczoKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICB0 ZW1wbGF0ZV9wYXRoID0gJ2luZGV4L3NxbC8jezB9IycuZm9ybWF0KG1hbmFnZXIudmVyc2lvbikK LSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAg ICAgICBbdGVtcGxhdGVfcGF0aCwgJ2JhY2tlbmRfc3VwcG9ydC5zcWwnXSksIHZpZD1rd2FyZ3Nb J3ZpZCddKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnYmFja2VuZF9zdXBwb3J0LnNxbCddKSwKKyAg ICAgICAgICAgICAgICB2aWQ9a3dhcmdzWyd2aWQnXQorICAgICAgICAgICAgKQogICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKIAogICAgICAgICAgICAg IyBjaGVjayBpZiBhbnkgZXJyb3JzCkBAIC0yMzksOSArMjU1LDEwIEBAIGNsYXNzIEluZGV4ZXNW aWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFt ZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQogICAgICAgICAgICAgIyB3aGVuIHdlIGNy ZWF0ZSBuZXcgaW5kZXggaW4gdXBkYXRlIHdlIGNhbiBmZXRjaCBpdCB1c2luZwogICAgICAgICAg ICAgIyBwcm9wZXJ0eSBzcWwKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGlkPWt3YXJnc1sndGlkJ10pCisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2dldF9wYXJlbnQuc3FsJ10pLAorICAgICAgICAgICAgICAgIHRpZD1rd2FyZ3NbJ3RpZCddCisg ICAgICAgICAgICApCiAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQpAQCAtMjYyLDgg KzI3OSw5IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICIi IgogICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCiAgICAgICAgIHRy eToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X2NvbGxhdGlvbnMuc3FsJ10pKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfY29s bGF0aW9ucy5zcWwnXSkKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKQEAgLTI4OSw4ICszMDcsNyBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICAiIiIKICAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzog Jyd9XQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9hbS5zcWwnXSkpCisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9hbS5zcWwnXSkpCiAg ICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0zMTcsMTcgKzMzNCwxNyBAQCBjbGFz cyBJbmRleGVzVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICByZXMgPSBkaWN0KCkKICAg ICAgICAgdHJ5OgogICAgICAgICAgICAgIyBGZXRjaGluZyBhbGwgdGhlIGFjY2VzcyBtZXRob2Rz Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9hbS5zcWwnXSkpCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9hbS5zcWwnXSkpCiAgICAgICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCiAKICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgogICAg ICAgICAgICAgICAgICMgRmV0Y2hpbmcgYWxsIHRoZSBvcF9jbGFzc2VzIGZvciBlYWNoIGFjY2Vz cyBtZXRob2QKLSAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfb3BfY2xhc3Muc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvaWQ9cm93WydvaWQnXSkKKyAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdnZXRfb3BfY2xhc3Muc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBvaWQ9 cm93WydvaWQnXQorICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBzdGF0dXMsIHJl c3VsdCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQogICAgICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtMzY1LDggKzM4Miw5IEBAIGNsYXNzIEluZGV4ZXNWaWV3 KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSBzY2hlbWEg bm9kZXMKICAgICAgICAgIiIiCiAKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ25vZGVzLnNxbCddKSwgdGlkPXRpZCkKKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVz LnNxbCddKSwgdGlkPXRpZAorICAgICAgICApCiAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCiAKICAgICAgICAgaWYgbm90IHN0YXR1czoKQEAgLTM5Mywx MCArNDExLDEwIEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAg IFJldHVybnM6CiAgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSBzY2hlbWEgY2hpbGQgbm9k ZXMKICAgICAgICAgIiIiCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdub2Rlcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4PWlkeCkKKyAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgIHRpZD10aWQsIGlkeD1pZHgKKyAgICAgICAg KQogICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK ICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKQEAgLTQzMyw4ICs0NTEsOSBAQCBjbGFzcyBJbmRleGVz VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgSlNPTiBvZiBhdmFpbGFibGUgc2No ZW1hIGNoaWxkIG5vZGVzCiAgICAgICAgICIiIgogICAgICAgICByZXMgPSBbXQotICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlk KQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkCisgICAgICAgICkKICAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCiAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCkBAIC00NjUsOCArNDg0LDkgQEAgY2xhc3MgSW5kZXhlc1ZpZXco UEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdp dGggY29sdW1uIGRldGFpbHMKICAgICAgICAgIiIiCiAKLSAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2NvbHVtbl9kZXRhaWxzLnNxbCddKSwgaWR4PWlkeCkKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2NvbHVtbl9kZXRhaWxzLnNxbCddKSwgaWR4PWlkeAorICAgICAgICAp CiAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQog ICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQpAQCAtNTIxLDEwICs1NDEsMTAgQEAgY2xhc3MgSW5kZXhl c1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQgc2No ZW1hIG5vZGUKICAgICAgICAgIiIiCiAKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgaWR4PWlkeCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9 aWR4LCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAgICApCiAKICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKIApAQCAtNTk1LDkg KzYxNSwxMCBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICB0 cnk6CiAgICAgICAgICAgICAjIFN0YXJ0IHRyYW5zYWN0aW9uLgogICAgICAgICAgICAgc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKCJCRUdJTjsiKQotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4sIG1vZGU9J2NyZWF0 ZScpCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubiwgbW9kZT0nY3JlYXRlJworICAgICAgICAg ICAgKQogICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo U1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAgICAjIEVuZCB0 cmFuc2FjdGlvbi4KQEAgLTYwNiw5ICs2MjcsMTAgQEAgY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGls ZE5vZGVWaWV3KToKIAogICAgICAgICAgICAgIyBJZiB1c2VyIGNob29zZXMgY29uY3VycmVudCBp bmRleCB0aGVuIHdlIGNhbm5vdCBydW4gaXQgYWxvbmcKICAgICAgICAgICAgICMgd2l0aCBvdGhl ciBhbHRlciBzdGF0ZW1lbnRzIHNvIHdlIHdpbGwgc2VwYXJhdGUgYWx0ZXIgaW5kZXggcGFydAot ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHRl ci5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBj b25uPXNlbGYuY29ubikKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWx0ZXIuc3FsJ10pLAor ICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkK ICAgICAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCiAgICAgICAgICAg ICBpZiBTUUwgIT0gJyc6CiAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQpAQCAtNjE4LDkgKzY0MCwxMCBAQCBjbGFzcyBJbmRleGVzVmll dyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKIAogICAgICAgICAgICAgIyB3ZSBuZWVkIG9pZCB0 byB0byBhZGQgb2JqZWN0IGluIHRyZWUgYXQgYnJvd3NlcgotICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2lkLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBkYXRhPWRhdGEpCisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAgICAgIHRpZD10aWQs IGRhdGE9ZGF0YQorICAgICAgICAgICAgKQogICAgICAgICAgICAgc3RhdHVzLCBpZHggPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAg ICAgICAgICAgICAgICAjIEVuZCB0cmFuc2FjdGlvbi4KQEAgLTY2NSwxMCArNjg4LDEwIEBAIGNs YXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIHRyeToKICAgICAgICAg ICAgICMgV2Ugd2lsbCBmaXJzdCBmZXRjaCB0aGUgaW5kZXggbmFtZSBmb3IgY3VycmVudCByZXF1 ZXN0CiAgICAgICAgICAgICAjIHNvIHRoYXQgd2UgY3JlYXRlIHRlbXBsYXRlIGZvciBkcm9wcGlu ZyBpbmRleAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0 aWQ9dGlkLCBpZHg9aWR4LCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZAorICAgICAg ICAgICAgKQogCiAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKQEAgLTY4Nyw5ICs3MTAsMTAgQEAg Y2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKIAogICAgICAgICAgICAgZGF0YSA9 IGRpY3QocmVzWydyb3dzJ11bMF0pCiAKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uLCBjYXNjYWRlPWNhc2NhZGUp CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubiwgY2FzY2FkZT1jYXNjYWRlCisgICAgICAgICAg ICApCiAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihT UUwpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtNzg3LDEwICs4MTEsMTAgQEAg Y2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgVGhpcyBmdW5jdGlv biB3aWxsIGdlbnJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQogICAgICAgICAiIiIKICAgICAgICAg aWYgaWR4IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5 c29pZAorICAgICAgICAgICAgKQogCiAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKQEAgLTgyNiwx MSArODUwLDE1IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBnZXR0ZXh0KCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQog CiAgICAgICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5v dCBoYXZlIGRpZAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4sIG1vZGU9bW9kZSkKKyAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNvbm49c2VsZi5jb25uLCBtb2RlPW1vZGUKKyAgICAgICAgICAgICkKICAgICAgICAg ICAgIFNRTCArPSAiXG4iCi0gICAgICAgICAgICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdhbHRlci5zcWwnXSksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAg ICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdhbHRlci5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQogCiAgICAgICAgIHJldHVybiBTUUwsIGRh dGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10KIApAQCAt ODQ4LDEwICs4NzYsMTAgQEAgY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAg ICAgICAgICAgaWR4OiBJbmRleCBJRAogICAgICAgICAiIiIKIAotICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgIGRpZD1kaWQs IHRpZD10aWQsIGlkeD1pZHgsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCisgICAg ICAgICkKIAogICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQogICAgICAgICBpZiBub3Qgc3RhdHVzOgpAQCAtODcyLDkgKzkwMCwxMCBAQCBjbGFzcyBJbmRl eGVzVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgcmV0dXJuIFNRTAogICAgICAg ICBzcWxfaGVhZGVyID0gdSItLSBJbmRleDogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUn XSkKIAotICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgIHNxbF9oZWFkZXIgKz0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25u CisgICAgICAgICkKIAogICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgU1FMCiAK QEAgLTk1OSwxMCArOTg4LDExIEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CiAKICAgICAgICAgICAgIGlmIGlzX3Bnc3RhdHR1cGxlOgogICAgICAgICAgICAgICAgICMgRmV0 Y2ggaW5kZXggZGV0YWlscyBvbmx5IGlmIGV4dGVuZGVkIHN0YXRzIGF2YWlsYWJsZQotICAgICAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk aWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgZGlkPWRpZCwgdGlkPXRpZCwgaWR4PWlkeCwKKyAgICAgICAgICAgICAgICAgICAgZGF0bGFz dHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKICAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRl eGVzL3RlbXBsYXRlcy9pbmRleC9qcy9pbmRleC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3RlbXBs YXRlcy9pbmRleC9qcy9pbmRleC5qcwppbmRleCAyNGYzN2YwLi40ZmMxZDU0IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvaW5kZXhlcy90ZW1wbGF0ZXMvaW5kZXgvanMvaW5kZXguanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2luZGV4ZXMvdGVtcGxhdGVzL2luZGV4L2pzL2luZGV4LmpzCkBAIC0xMCw2ICsxMCw3 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAgICBub2RlOiAnaW5kZXgn LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnSW5kZXhlcycpLAogICAgICAgICB0eXBlOiAnY29s bC1pbmRleCcsCisgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVD aGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJp bmRleC5odG1sJywKICAgICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGVpbmRleC5odG1s JywKICAgICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1l JzogJ2luZGV4X2RpYWxvZy5odG1sJ30pLApAQCAtMjEwLDggKzIxMSw5IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLmluZGV4JywgWwogICAgIH0pOwogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydp bmRleCddKSB7Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydpbmRleCddID0gcGdBZG1pbi5C cm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcn LCAnbXZpZXcnXSwKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2luZGV4J10gPSBwZ0Jyb3dz ZXIuTm9kZS5leHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50 YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScs ICd2aWV3JywgJ212aWV3JywgJ3BhcnRpdGlvbiddLAogICAgICAgY29sbGVjdGlvbl90eXBlOiBb J2NvbGwtdGFibGUnLCAnY29sbC12aWV3J10sCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0 ZXJpbmRleC5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRlaW5kZXguaHRt bCcsCkBAIC0yNDcsNiArMjQ5LDEyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwog ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1pbmRleCcsIGRhdGE6IHthY3Rpb246ICdj cmVhdGUnLCBjaGVjazogdHJ1ZX0sCiAgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJwogICAg ICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2luZGV4X29uUGFydGl0aW9uJywgbm9k ZTogJ3BhcnRpdGlvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVj dCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6IGdldHRleHQoJ0luZGV4 Li4uJyksCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWluZGV4JywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVh dGUnCisgICAgICAgIH0sewogICAgICAgICAgIG5hbWU6ICdjcmVhdGVfaW5kZXhfb25NYXRWaWV3 Jywgbm9kZTogJ212aWV3JywgbW9kdWxlOiB0aGlzLAogICAgICAgICAgIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKICAgICAg ICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA1LCBsYWJlbDogZ2V0dGV4dCgnSW5k ZXguLi4nKSwKQEAgLTQ3MiwxMiArNDgwLDIzIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4 JywgWwogICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCiAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkg PSBpdGVtLCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBbXTsKKyAgICAgICAgICB2YXIgdCA9IHBn QnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10sCisgICAg ICAgICAgICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gZmFsc2UsCisgICAgICAgICAg ICBpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkID0gZmFsc2U7CiAgICAgICAg ICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKICAgICAgICAg ICB3aGlsZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cg dXNlciB0byBjIHJlYXRlIHRhYmxlCisgICAgICAgICAgICAvLyBEbyBub3QgYWxsb3cgY3JlYXRp bmcgaW5kZXggb24gcGFydGl0aW9uZWQgdGFibGVzLgorICAgICAgICAgICAgaWYgKCFpbW1lZGlh dGVfcGFyZW50X3RhYmxlX2ZvdW5kICYmCisgICAgICAgICAgICAgICAgXy5pbmRleE9mKFsndGFi bGUnLCAncGFydGl0aW9uJ10sIGQuX3R5cGUpID4gLTEpIHsKKyAgICAgICAgICAgICAgaW1tZWRp YXRlX3BhcmVudF90YWJsZV9mb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgIGlmICgnaXNfcGFy dGl0aW9uZWQnIGluIGQgJiYgZC5pc19wYXJ0aXRpb25lZCkgeworICAgICAgICAgICAgICAgIGlz X2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQgPSB0cnVlOworICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVu IGFsbG93IHVzZXIgdG8gY3JlYXRlIGluZGV4CiAgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsn c2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICByZXR1cm4gIWlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7 CiAgICAgICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlwZSk7CiAgICAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CiAgICAgICAgICAgICBkID0gaSA/IHQu aXRlbURhdGEoaSkgOiBudWxsOwpAQCAtNDg2LDcgKzUwNSw3IEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLmluZGV4JywgWwogICAgICAgICAgIGlmIChfLmluZGV4T2YocGFyZW50cywgJ2NhdGFsb2cn KSA+IC0xKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICFpc19pbW1lZGlh dGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkOwogICAgICAgICAgIH0KICAgICAgIH0KICAgfSk7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9wYXJ0aXRpb25zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmExYzAxMGYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2lu aXRfXy5weQpAQCAtMCwwICsxLDU4MyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi IEltcGxlbWVudHMgUGFydGl0aW9ucyBOb2RlICIiIgorCitpbXBvcnQgcmUKK2ltcG9ydCBzaW1w bGVqc29uIGFzIGpzb24KK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYQorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVy X3RlbXBsYXRlLCByZXF1ZXN0Citmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9t IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMu dXRpbHMgXAorICAgIGltcG9ydCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MKK2Zyb20g cGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKKyAgICBt YWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMudXRpbHMgXAor ICAgIGltcG9ydCBCYXNlVGFibGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9u IGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1w b3J0IG1ha2VfanNvbl9yZXNwb25zZSwgcHJlY29uZGl0aW9uX3JlcXVpcmVkCitmcm9tIGNvbmZp ZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGlt cG9ydCBQR0NoaWxkTW9kdWxlCisKKworY2xhc3MgUGFydGl0aW9uc01vZHVsZShDb2xsZWN0aW9u Tm9kZU1vZHVsZSk6CisgICAgIiIiCisgICAgIGNsYXNzIFBhcnRpdGlvbnNNb2R1bGUoQ29sbGVj dGlvbk5vZGVNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFBhcnRpdGlvbiBu b2RlIGRlcml2ZWQgZnJvbSBDb2xsZWN0aW9uTm9kZU1vZHVsZS4KKworICAgIE1ldGhvZHM6Cisg ICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgLSBNZXRo b2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBQYXJ0aXRpb24gYW5kIGl0J3MgYmFzZSBtb2R1 bGUuCisKKyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpCisgICAgICAt IE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93c2VyIGNvbGxlY3Rpb24gbm9kZS4K KworICAgICogbm9kZV9pbm9kZSgpCisgICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20g aXRzIGJhc2UgY2xhc3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisKKyAgICAqIHNj cmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2NoZW1hLCB3 aGVuIGFueSBvZiB0aGUgc2VydmVyIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAg IiIiCisKKyAgICBOT0RFX1RZUEUgPSAncGFydGl0aW9uJworICAgIENPTExFQ1RJT05fTEFCRUwg PSBnZXR0ZXh0KCJQYXJ0aXRpb25zIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg Kiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlh bGl6ZSB0aGUgUGFydGl0aW9uc01vZHVsZSBhbmQgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgKmFyZ3M6CisgICAgICAgICAgICAqKmt3YXJnczoKKyAgICAg ICAgIiIiCisgICAgICAgIHN1cGVyKFBhcnRpdGlvbnNNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCph cmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gMTAwMDAwCisgICAgICAgIHNl bGYubWF4X3ZlciA9IE5vbmUKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNv bGxlY3Rpb24gbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9i cm93c2VyX2NvbGxlY3Rpb25fbm9kZShrd2FyZ3NbJ3RpZCddKQorCisgICAgQHByb3BlcnR5Cisg ICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3Igc2VydmVyLCB3aGVuIGFueSBvZiB0aGUgc2VydmVyLWdyb3VwIG5v ZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g c2NoZW1hLlNjaGVtYU1vZHVsZS5OT0RFX1RZUEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBu b2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIG5v ZGUgYXMgYSBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBUcnVlCisKKyAg ICBkZWYgQmFja2VuZFN1cHBvcnRlZChzZWxmLCBtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAgICAg ICIiIgorICAgICAgICBMb2FkIHRoaXMgbW9kdWxlIGlmIGl0IGlzIGEgcGFydGl0aW9uIHRhYmxl CisgICAgICAgICIiIgorICAgICAgICBpZiAndGlkJyBpbiBrd2FyZ3MgYW5kIENvbGxlY3Rpb25O b2RlTW9kdWxlLkJhY2tlbmRTdXBwb3J0ZWQoc2VsZiwgbWFuYWdlciwgKiprd2FyZ3MpOgorICAg ICAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKwor ICAgICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICdwYXJ0aXRpb24vc3FsLyN7MH0jJy5mb3JtYXQo bWFuYWdlci52ZXJzaW9uKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKAorICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV9wYXRoLCAnYmFja2VuZF9zdXBwb3J0LnNx bCddKSwgdGlkPWt3YXJnc1sndGlkJ10pCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIGFueSBlcnJvcnMK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiByZXMK KworICAgIGRlZiByZWdpc3RlcihzZWxmLCBhcHAsIG9wdGlvbnMsIGZpcnN0X3JlZ2lzdHJhdGlv bj1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBPdmVycmlkZSB0aGUgZGVmYXVsdCByZWdp c3RlciBmdW5jdGlvbiB0byBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyCisgICAgICAgIHN1Yi1tb2R1 bGVzIG9mIHRhYmxlIG5vZGUgdW5kZXIgcGFydGl0aW9uIHRhYmxlIG5vZGUuCisgICAgICAgICIi IgorCisgICAgICAgIGlmIGZpcnN0X3JlZ2lzdHJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc3Vi bW9kdWxlcyA9IGxpc3QoYXBwLmZpbmRfc3VibW9kdWxlcyhzZWxmLmltcG9ydF9uYW1lKSkKKwor ICAgICAgICBzdXBlcihDb2xsZWN0aW9uTm9kZU1vZHVsZSwgc2VsZikucmVnaXN0ZXIoYXBwLCBv cHRpb25zLCBmaXJzdF9yZWdpc3RyYXRpb24pCisKKyAgICAgICAgZm9yIG1vZHVsZSBpbiBzZWxm LnN1Ym1vZHVsZXM6CisgICAgICAgICAgICBpZiBmaXJzdF9yZWdpc3RyYXRpb246CisgICAgICAg ICAgICAgICAgbW9kdWxlLnBhcmVudG1vZHVsZXMuYXBwZW5kKHNlbGYpCisgICAgICAgICAgICBh cHAucmVnaXN0ZXJfYmx1ZXByaW50KG1vZHVsZSkKKworICAgICAgICAjIE5vdyBhZGQgc3ViIG1v ZHVsZXMgb2YgdGFibGUgbm9kZSB0byBwYXJ0aXRpb24gdGFibGUgbm9kZS4KKyAgICAgICAgaWYg Zmlyc3RfcmVnaXN0cmF0aW9uOgorICAgICAgICAgICAgIyBFeGNsdWRlICdwYXJ0aXRpb24nIG1v ZHVsZSBmb3Igbm93IHRvIGF2b2lkIGN5Y2xpYyBpbXBvcnQgaXNzdWUuCisgICAgICAgICAgICBt b2R1bGVzX3RvX3NraXAgPSBbJ3BhcnRpdGlvbicsICdjb2x1bW4nXQorICAgICAgICAgICAgZm9y IHBhcmVudCBpbiBzZWxmLnBhcmVudG1vZHVsZXM6CisgICAgICAgICAgICAgICAgaWYgcGFyZW50 Lk5PREVfVFlQRSA9PSAndGFibGUnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN1Ym1vZHVs ZXMgKz0gWworICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlIGZvciBzdWJtb2R1bGUg aW4gcGFyZW50LnN1Ym1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1Ym1vZHVs ZS5OT0RFX1RZUEUgbm90IGluIG1vZHVsZXNfdG9fc2tpcAorICAgICAgICAgICAgICAgICAgICBd CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbW9kdWxlX3VzZV90ZW1wbGF0ZV9qYXZhc2NyaXB0 KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB3aGV0aGVyIEppbmphMiB0ZW1w bGF0ZSBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSBqYXZhc2NyaXB0CisgICAgICAgIG1vZHVs ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBGYWxzZQorCisKK2JsdWVwcmludCA9IFBh cnRpdGlvbnNNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgUGFydGl0aW9uc1ZpZXcoQmFzZVRh YmxlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKKyAgICAiIiIKKyAgICBU aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgUGFydGl0 aW9uIG5vZGUKKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorCisgICAgKiBsaXN0KCkKKyAg ICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBQYXJ0aXRpb24gbm9k ZXMgd2l0aGluIHRoYXQKKyAgICAgIGNvbGxlY3Rpb24uCisKKyAgICAqIG5vZGVzKCkKKyAgICAg IC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3 aXRoaW4gdGhhdAorICAgICAgICBjb2xsZWN0aW9uLCBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0 aGUgUGFydGl0aW9uIG5vZGUuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCBwdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVy dGllcyBvZiB0aGUgc2VsZWN0ZWQgUGFydGl0aW9uIG5vZGUKKworICAgICIiIgorCisgICAgbm9k ZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkaWQnfSwKKyAg ICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdp bnQnLCAnaWQnOiAndGlkJ30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAn aW50JywgJ2lkJzogJ3B0aWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAg ICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRl JzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0 JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0 JzogJ25vZGVzJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnY2hpbGRyZW4nOiBbeydn ZXQnOiAnY2hpbGRyZW4nfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAg ICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHt9XSwKKyAgICAgICAgJ2RldGFjaCc6IFt7 J3B1dCc6ICdkZXRhY2gnfV0sCisgICAgICAgICd0cnVuY2F0ZSc6IFt7J3B1dCc6ICd0cnVuY2F0 ZSd9XQorCisgICAgfSkKKworICAgIGRlZiBjaGlsZHJlbihzZWxmLCAqKmt3YXJncyk6CisgICAg ICAgICIiIkJ1aWxkIGEgbGlzdCBvZiB0cmVldmlldyBub2RlcyBmcm9tIHRoZSBjaGlsZCBub2Rl cy4iIiIKKworICAgICAgICBpZiAnc2lkJyBub3QgaW4ga3dhcmdzOgorICAgICAgICAgICAgcmV0 dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICBnZXR0ZXh0KCdSZXF1 aXJlZCBwcm9wZXJ0aWVzIGFyZSBtaXNzaW5nLicpCisgICAgICAgICAgICApCisKKyAgICAgICAg ZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorICAgICAgICBtYW5h Z2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKAor ICAgICAgICAgICAgc2lkPWt3YXJnc1snc2lkJ10KKyAgICAgICAgKQorCisgICAgICAgIGRpZCA9 IE5vbmUKKyAgICAgICAgaWYgJ2RpZCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgZGlkID0ga3dh cmdzWydkaWQnXQorCisgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWRpZCkK KworICAgICAgICBpZiBub3QgY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgIHJldHVybiBw cmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAg ICAgICAgICAgICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0LiIKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgbm9kZXMgPSBbXQorICAg ICAgICBmb3IgbW9kdWxlIGluIHNlbGYuYmx1ZXByaW50LnN1Ym1vZHVsZXM6CisgICAgICAgICAg ICBpZiBpc2luc3RhbmNlKG1vZHVsZSwgUEdDaGlsZE1vZHVsZSk6CisgICAgICAgICAgICAgICAg aWYgbWFuYWdlciBpcyBub3QgTm9uZSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgbW9k dWxlLkJhY2tlbmRTdXBwb3J0ZWQobWFuYWdlciwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAg ICAgICAjIHRyZWF0IHBhcnRpdGlvbiB0YWJsZSBhcyBub3JtYWwgdGFibGUuCisgICAgICAgICAg ICAgICAgICAgICMgcmVwbGFjZSB0aWQgd2l0aCBwdGlkIGFuZCBwb3AgcHRpZCBmcm9tIGt3YXJn cworICAgICAgICAgICAgICAgICAgICBpZiAncHRpZCcgaW4ga3dhcmdzOgorICAgICAgICAgICAg ICAgICAgICAgICAgcHRpZCA9IGt3YXJncy5wb3AoJ3B0aWQnKQorICAgICAgICAgICAgICAgICAg ICAgICAga3dhcmdzWyd0aWQnXSA9IHB0aWQKKyAgICAgICAgICAgICAgICAgICAgbm9kZXMuZXh0 ZW5kKG1vZHVsZS5nZXRfbm9kZXMoKiprd2FyZ3MpKQorICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICBub2Rlcy5leHRlbmQobW9kdWxlLmdldF9ub2RlcygqKmt3YXJncykpCisKKyAg ICAgICAgIyBFeHBsaWNpdGx5IGluY2x1ZGUgJ3BhcnRpdGlvbicgbW9kdWxlIGFzIHdlIGhhZCBl eGNsdWRlZCBpdCBkdXJpbmcKKyAgICAgICAgIyByZWdpc3RyYXRpb24uCisgICAgICAgIG5vZGVz LmV4dGVuZChzZWxmLmJsdWVwcmludC5nZXRfbm9kZXMoKiprd2FyZ3MpKQorCisgICAgICAgICMg UmV0dXJuIHNvcnRlZCBub2RlcyBiYXNlZCBvbiBsYWJlbAorICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1zb3J0ZWQoCisgICAgICAgICAgICAgICAg bm9kZXMsIGtleT1sYW1iZGEgYzogY1snbGFiZWwnXQorICAgICAgICAgICAgKQorICAgICAgICAp CisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSB0YWJsZSBub2RlcyB3aXRoaW4gdGhh dAorICAgICAgICBjb2xsZWN0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBncm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICAgdGlkOiBUYWJsZSBJRAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9m IGF2YWlsYWJsZSB0YWJsZSBub2RlcworICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0 c3lzb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZD1Ob25lKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0 aGUgdGFibGUgbm9kZXMgd2l0aGluIHRoYXQKKyAgICAgICAgY29sbGVjdGlvbi4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgZ3JvdXAgSUQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogUGFyZW50IFRhYmxlIElECisgICAgICAg ICAgICBwdGlkOiBQYXJ0aXRpb24gVGFibGUgSUQKKworICAgICAgICBSZXR1cm5zOgorICAgICAg ICAgICAgSlNPTiBvZiBhdmFpbGFibGUgdGFibGUgbm9kZXMKKyAgICAgICAgIiIiCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5w YXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBz Y2lkPXNjaWQsIHRpZD10aWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQorCisgICAgICAgIGRlZiBicm93c2VyX25vZGUocm93KToKKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgcm93 WydvaWQnXSwKKyAgICAgICAgICAgICAgICB0aWQsCisgICAgICAgICAgICAgICAgcm93WyduYW1l J10sCisgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1wYXJ0aXRpb24iLAorICAgICAgICAgICAg ICAgIHRpZ2dlcl9jb3VudD1yb3dbJ3RyaWdnZXJjb3VudCddLAorICAgICAgICAgICAgICAgIGhh c19lbmFibGVfdHJpZ2dlcnM9cm93WydoYXNfZW5hYmxlX3RyaWdnZXJzJ10sCisgICAgICAgICAg ICAgICAgaXNfcGFydGl0aW9uZWQ9cm93Wydpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAgICAg ICAgIHBhcmVudF9zY2hlbWFfaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICBzY2hlbWFfaWQ9cm93 WydzY2hlbWFfaWQnXSwKKyAgICAgICAgICAgICAgICBzY2hlbWFfbmFtZT1yb3dbJ3NjaGVtYV9u YW1lJ10KKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBwdGlkIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgaWYgbGVuKHJzZXRbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1 cm4gZ29uZShnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAiVGhlIHNwZWNpZmllZCBwYXJ0 aXRpb25lZCB0YWJsZSBjb3VsZCBub3QgYmUgZm91bmQuIgorICAgICAgICAgICAgICAgICkpCisK KyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg ZGF0YT1icm93c2VyX25vZGUocnNldFsncm93cyddWzBdKSwgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICkKKworICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoYnJvd3Nlcl9ub2RlKHJvdykpCisKKyAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCB0aWQsIHB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIHRhYmxlIG5vZGUuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiAgRGF0YWJhc2UgSUQKKyAgICAgICAgICAg IHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAg ICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgICBwdGlkOiBQYXJ0aXRpb24gVGFibGUgSUQKKwor ICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSlNPTiBvZiBzZWxlY3RlZCB0YWJsZSBub2Rl CisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwdGlkPXB0aWQsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAg ICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICJU aGUgc3BlY2lmaWVkIHBhcnRpdGlvbmVkIHRhYmxlIGNvdWxkIG5vdCBiZSBmb3VuZC4iKSkKKwor ICAgICAgICByZXR1cm4gc3VwZXIoUGFydGl0aW9uc1ZpZXcsIHNlbGYpLnByb3BlcnRpZXMoCisg ICAgICAgICAgICBnaWQsIHNpZCwgZGlkLCBzY2lkLCBwdGlkLCByZXMpCisKKyAgICBAQmFzZVRh YmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZCwgcHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgY3JlYXRlcyByZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvcgorICAgICAgICB0aGUgdGFi bGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElECisgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFibGUgSUQK KyAgICAgICAgICAgcHRpZDogUGFydGl0aW9uIFRhYmxlIElECisgICAgICAgICIiIgorICAgICAg ICBtYWluX3NxbCA9IFtdCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHB0aWQ9cHRpZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQp CisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAg IlRoZSBzcGVjaWZpZWQgcGFydGl0aW9uZWQgdGFibGUgY291bGQgbm90IGJlIGZvdW5kLiIpKQor CisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgIHJldHVybiBCYXNlVGFi bGVWaWV3LmdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgcHRpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWFpbl9zcWwsIGRhdGEpCisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgZGV0YWNoKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVzZXQgc3RhdGlzdGljcyBv ZiB0YWJsZQorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisg ICAgICAgICAgIHB0aWQ6IFBhcnRpdGlvbiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAg IyBGZXRjaCBzY2hlbWEgbmFtZQorICAgICAgICBzdGF0dXMsIHBhcmVudF9zY2hlbWEgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9zY2hl bWEuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2lkPXNjaWQKKyAg ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1wYXJlbnRfc2NoZW1hKQor CisgICAgICAgICMgRmV0Y2ggUGFyZW50IFRhYmxlIG5hbWUKKyAgICAgICAgc3RhdHVzLCBwYXJ0 aXRpb25lZF90YWJsZV9uYW1lID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxl X3RlbXBsYXRlX3BhdGgsICdnZXRfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNvbm49 c2VsZi5jb25uLCBzY2lkPXNjaWQsIHRpZD10aWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1wYXJ0aXRpb25lZF90YWJsZV9uYW1lKQorCisgICAgICAgICMgR2V0 IHNjaGVtYSBvaWQgb2YgcGFydGl0aW9uCisgICAgICAgIHN0YXR1cywgcHNjaWQgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9zY2hlbWFfb2lkLnNxbCddKSwgdGlkPXB0aWQpKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zY2lkKQorCisgICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUKKyAgICAgICAgc3RhdHVz LCBwYXJ0aXRpb25fc2NoZW1hID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfc2NoZW1hLnNxbCddKSwg Y29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1wc2NpZCkK KyAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1wYXJ0aXRpb25fc2NoZW1hKQorCisgICAgICAg ICMgRmV0Y2ggUGFydGl0aW9uIFRhYmxlIG5hbWUKKyAgICAgICAgc3RhdHVzLCBwYXJ0aXRpb25f bmFtZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRo LCAnZ2V0X3RhYmxlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2Np ZD1wc2NpZCwgdGlkPXB0aWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1wYXJ0aXRpb25fbmFtZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZW1wX2Rh dGEgPSBkaWN0KCkKKyAgICAgICAgICAgIHRlbXBfZGF0YVsncGFyZW50X3NjaGVtYSddID0gcGFy ZW50X3NjaGVtYQorICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJ0aXRpb25lZF90YWJsZV9uYW1l J10gPSBwYXJ0aXRpb25lZF90YWJsZV9uYW1lCisgICAgICAgICAgICB0ZW1wX2RhdGFbJ3NjaGVt YSddID0gcGFydGl0aW9uX3NjaGVtYQorICAgICAgICAgICAgdGVtcF9kYXRhWyduYW1lJ10gPSBw YXJ0aXRpb25fbmFtZQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYucGFydGl0aW9uX3RlbXBsYXRl X3BhdGgsICdkZXRhY2guc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 dGVtcF9kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJQYXJ0aXRpb24g ZGV0YWNoZWQuIiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAg ICdpZCc6IHB0aWQsCisgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNxbChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHB0aWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIG1vZGlmaWVkIHNxbCBmb3IgdGFibGUg b2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElE CisgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQK KyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAg ICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBkaWN0KCkKKyAgICAgICAgZm9yIGssIHYgaW4gcmVx dWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0 YVtrXSA9IGpzb24ubG9hZHModiwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgIGV4Y2Vw dCAoVmFsdWVFcnJvciwgVHlwZUVycm9yLCBLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgZGF0 YVtrXSA9IHYKKworICAgICAgICBpZiBwdGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGll cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2Np ZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aWQ9 cHRpZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBTUUwsIG5hbWUgPSBzZWxmLmdldF9zcWwoZGlkLCBzY2lk LCBwdGlkLCBkYXRhLCByZXMpCisgICAgICAgIFNRTCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4n LCBTUUwpCisgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKQorICAgICAgICBpZiBTUUwgPT0g Jyc6CisgICAgICAgICAgICBTUUwgPSAiLS1tb2RpZmllZCBTUUwiCisgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPVNRTCwKKyAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHB0aWQp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBhbiBleGlz dGluZyB0YWJsZSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBU YWJsZSBJRAorICAgICAgICAgICBwdGlkOiBQYXJ0aXRpb24gVGFibGUgSUQKKyAgICAgICAgIiIi CisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5s b2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rpbmc9J3V0Zi04JworICAgICAg ICApCisKKyAgICAgICAgZm9yIGssIHYgaW4gZGF0YS5pdGVtcygpOgorICAgICAgICAgICAgdHJ5 OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBqc29uLmxvYWRzKHYsIGVuY29kaW5nPSd1dGYt OCcpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvciwgS2V5RXJyb3Ip OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgdHJ5OgorICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRp ZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0aWQ9cHRpZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIHN1cGVyKFBhcnRpdGlvbnNW aWV3LCBzZWxmKS51cGRhdGUoCisgICAgICAgICAgICAgICAgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg cHRpZCwgZGF0YSwgcmVzLCBwYXJlbnRfaWQ9dGlkKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXN0cihlKSkKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiB0cnVuY2F0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHB0aWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHRydW5jYXRlIHRoZSB0YWJsZSBvYmpl Y3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAg ICAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRpZD1wdGlkLCBkYXRsYXN0c3lzb2lk PXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICByZXR1cm4gc3VwZXIoUGFydGl0aW9uc1ZpZXcsIHNlbGYpLnRydW5jYXRlKGdpZCwg c2lkLCBkaWQsIHNjaWQsIHB0aWQsIHJlcykKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworCitQYXJ0aXRpb25zVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2ltZy9jb2xsLXBhcnRpdGlv bi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvaW1nL2NvbGwtcGFydGl0aW9uLnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTM2YzY2CkJpbmFyeSBmaWxl cyAvZGV2L251bGwgYW5kIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2ltZy9jb2xsLXBh cnRpdGlvbi5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0 aWMvaW1nL3BhcnRpdGlvbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvaW1nL3Bh cnRpdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2ZGQ4YgpC aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9p bWcvcGFydGl0aW9uLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25z L3N0YXRpYy9qcy9wYXJ0aXRpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMv cGFydGl0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYWRiNWUK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMvcGFydGl0 aW9uLmpzCkBAIC0wLDAgKzEsMTI3NiBAQAorZGVmaW5lKFsKKyAgJ3NvdXJjZXMvZ2V0dGV4dCcs ICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAorICAndW5kZXJzY29y ZS5zdHJpbmcnLCAncGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYmFja2Zvcm0nLCAnYWxl cnRpZnknLAorICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2Vy LnRhYmxlLnBhcnRpdGlvbi51dGlscycKK10sCitmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAk LCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBhbGVydGlmeSkgeworCisgIGlm ICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXBhcnRpdGlvbiddKSB7CisgICAgdmFyIGRhdGFiYXNl cyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1wYXJ0aXRpb24nXSA9CisgICAgICBwZ0Fk bWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAncGFydGl0aW9u JywKKyAgICAgICAgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbnMnKSwKKyAgICAgICAgZ2V0VHJl ZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCisg ICAgICAgIHR5cGU6ICdjb2xsLXBhcnRpdGlvbicsCisgICAgICAgIGNvbHVtbnM6IFsKKyAgICAg ICAgICAnbmFtZScsICdzY2hlbWEnLCAncGFydGl0aW9uX3ZhbHVlJywgJ2lzX3BhcnRpdGlvbmVk JywgJ2Rlc2NyaXB0aW9uJworICAgICAgICBdLAorICAgICAgICBoYXNTdGF0aXN0aWNzOiB0cnVl CisgICAgICB9KTsKKyAgfTsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sncGFydGl0aW9uJ10p IHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3BhcnRpdGlvbiddID0gcGdCcm93c2VyLk5v ZGUuZXh0ZW5kKHsKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVD aGlsZFRyZWVOb2RlSGllcmFyY2h5LAorICAgICAgcGFyZW50X3R5cGU6ICd0YWJsZScsCisgICAg ICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXBhcnRpdGlvbicsCisgICAgICB0eXBlOiAncGFydGl0 aW9uJywKKyAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb24nKSwKKyAgICAgIGhhc1NRTDog dHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAgICBoYXNTdGF0aXN0aWNzOiB0cnVl LAorICAgICAgc3RhdHNQcmV0dGlmeUZpZWxkczogWydTaXplJywgJ0luZGV4ZXMgc2l6ZScsICdU YWJsZSBzaXplJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9hc3QgdGFibGUgc2l6 ZScsICdUdXBsZSBsZW5ndGgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWFkIHR1 cGxlIGxlbmd0aCcsICdGcmVlIHNwYWNlJ10sCisgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0 ZXJ0YWJsZS5odG1sJywKKyAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRldGFibGUuaHRt bCcsCisgICAgICBkaWFsb2dIZWxwOiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsnZmlsZW5hbWUn OiAndGFibGVfZGlhbG9nLmh0bWwnfSksCisgICAgICBoYXNTY3JpcHRUeXBlczogWydjcmVhdGUn XSwKKyAgICAgIGhlaWdodDogJzk1JScsCisgICAgICB3aWR0aDogJzg1JScsCisgICAgICBJbml0 OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9m IG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0 dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJv d3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAndHJ1bmNhdGVfdGFibGUnLCBub2Rl OiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0 JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICd0cnVuY2F0ZV90YWJsZScsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdUcnVuY2F0ZScsIHByaW9yaXR5OiAzLCBsYWJlbDogZ2V0dGV4dCgnVHJ1bmNhdGUn KSwKKyAgICAgICAgICBpY29uOiAnZmEgZmEtZXJhc2VyJywgZW5hYmxlIDogJ2NhbkNyZWF0ZScK KyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ3RydW5jYXRlX3RhYmxlX2Nhc2NhZGUnLCBu b2RlOiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICd0cnVuY2F0ZV90YWJsZV9jYXNjYWRlJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ1RydW5jYXRlJywgcHJpb3JpdHk6IDMsIGxhYmVsOiBnZXR0ZXh0 KCdUcnVuY2F0ZSBDYXNjYWRlJyksCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWVyYXNlcicsIGVu YWJsZSA6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIC8vIFRvIGVuYWJsZS9k aXNhYmxlIGFsbCB0cmlnZ2VycyBmb3IgdGhlIHRhYmxlCisgICAgICAgICAgbmFtZTogJ2VuYWJs ZV9hbGxfdHJpZ2dlcnMnLCBub2RlOiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAg ICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdlbmFibGVfdHJp Z2dlcnNfb25fdGFibGUnLAorICAgICAgICAgIGNhdGVnb3J5OiAnVHJpZ2dlcihzKScsIHByaW9y aXR5OiA0LCBsYWJlbDogZ2V0dGV4dCgnRW5hYmxlIEFsbCcpLAorICAgICAgICAgIGljb246ICdm YSBmYS1jaGVjaycsIGVuYWJsZSA6ICdjYW5DcmVhdGVfd2l0aF90cmlnZ2VyX2VuYWJsZScKKyAg ICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2Rpc2FibGVfYWxsX3RyaWdnZXJzJywgbm9kZTog J3BhcnRpdGlvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcs ICdjb250ZXh0J10sIGNhbGxiYWNrOiAnZGlzYWJsZV90cmlnZ2Vyc19vbl90YWJsZScsCisgICAg ICAgICAgY2F0ZWdvcnk6ICdUcmlnZ2VyKHMpJywgcHJpb3JpdHk6IDQsIGxhYmVsOiBnZXR0ZXh0 KCdEaXNhYmxlIEFsbCcpLAorICAgICAgICAgIGljb246ICdmYSBmYS10aW1lcycsIGVuYWJsZSA6 ICdjYW5DcmVhdGVfd2l0aF90cmlnZ2VyX2Rpc2FibGUnCisgICAgICAgIH0seworICAgICAgICAg IG5hbWU6ICdyZXNldF90YWJsZV9zdGF0cycsIG5vZGU6ICdwYXJ0aXRpb24nLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazog J3Jlc2V0X3RhYmxlX3N0YXRzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ1Jlc2V0JywgcHJpb3Jp dHk6IDQsIGxhYmVsOiBnZXR0ZXh0KCdSZXNldCBTdGF0aXN0aWNzJyksCisgICAgICAgICAgaWNv bjogJ2ZhIGZhLWJhci1jaGFydCcsIGVuYWJsZSA6ICdjYW5DcmVhdGUnCisgICAgICAgIH0sewor ICAgICAgICAgIG5hbWU6ICdkZXRhY2hfcGFydGl0aW9uJywgbm9kZTogJ3BhcnRpdGlvbicsIG1v ZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnZGV0YWNoX3BhcnRpdGlvbicsCisgICAgICAgICAgcHJpb3JpdHk6IDIsIGxhYmVs OiBnZXR0ZXh0KCdEZXRhY2ggUGFydGl0aW9uJyksCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLXJl bW92ZScKKyAgICAgICAgfQorICAgICAgICBdKTsKKyAgICAgIH0sCisgICAgICBnZXRUcmVlTm9k ZUhpZXJhcmNoeTogZnVuY3Rpb24oaSkgeworICAgICAgICB2YXIgaWR4ID0gMCwKKyAgICAgICAg ICAgIHJlcyA9IHt9LAorICAgICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlOworCisgICAgICAg IGRvIHsKKyAgICAgICAgICBkID0gdC5pdGVtRGF0YShpKTsKKyAgICAgICAgICBpZiAoCisgICAg ICAgICAgICBkLl90eXBlIGluIHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5f dHlwZV0uaGFzSWQKKyAgICAgICAgICApIHsKKyAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdw YXJ0aXRpb24nICYmICdwYXJ0aXRpb24nIGluIHJlcykgeworICAgICAgICAgICAgICBpZiAoISgn dGFibGUnIGluIHJlcykpIHsKKyAgICAgICAgICAgICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVu ZCh7fSwgZCwgeydwcmlvcml0eSc6IGlkeH0pOworICAgICAgICAgICAgICAgIGlkeCAtPSAxOwor ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ3RhYmxl JykgeworICAgICAgICAgICAgICBpZiAoISgndGFibGUnIGluIHJlcykpIHsKKyAgICAgICAgICAg ICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlkeH0pOwor ICAgICAgICAgICAgICAgIGlkeCAtPSAxOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgeydw cmlvcml0eSc6IGlkeH0pOworICAgICAgICAgICAgICBpZHggLT0gMTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisgICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOworICAgICAgICB9IHdoaWxlIChpKTsKKworICAgICAgICByZXR1cm4gcmVzOworICAg ICAgfSwKKyAgICAgIGdlbmVyYXRlX3VybDogZnVuY3Rpb24oaXRlbSwgdHlwZSwgZCwgd2l0aF9p ZCwgaW5mbykgeworICAgICAgICBpZiAoXy5pbmRleE9mKFsKKyAgICAgICAgICAgICdzdGF0cycs ICdzdGF0aXN0aWNzJywgJ2RlcGVuZGVuY3knLCAnZGVwZW5kZW50JywgJ3Jlc2V0JywKKyAgICAg ICAgICAgICdnZXRfcmVsYXRpb25zJywgJ2dldF9vZnR5cGUnLCAnZ2V0X2F0dGFjaF90YWJsZXMn CisgICAgICAgICAgICBdLCB0eXBlKSA9PSAtMSkgeworICAgICAgICAgIHJldHVybiBwZ0Jyb3dz ZXIuTm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgfQor CisgICAgICAgIGlmICh0eXBlID09ICdzdGF0aXN0aWNzJykgeworICAgICAgICAgIHR5cGUgPSAn c3RhdHMnOworICAgICAgICB9CisKKyAgICAgICAgaW5mbyA9IChfLmlzVW5kZWZpbmVkKGl0ZW0p IHx8IF8uaXNOdWxsKGl0ZW0pKSA/CisgICAgICAgICAgaW5mbyB8fCB7fSA6IHRoaXMuZ2V0VHJl ZU5vZGVIaWVyYXJjaHkoaXRlbSk7CisKKyAgICAgICAgcmV0dXJuIFMoJ3RhYmxlLyVzLyVzLyVz LyVzLyVzLyVzJykuc3ByaW50ZigKKyAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh0eXBl KSwgZW5jb2RlVVJJQ29tcG9uZW50KGluZm9bJ3NlcnZlci1ncm91cCddLl9pZCksCisgICAgICAg ICAgICBlbmNvZGVVUklDb21wb25lbnQoaW5mb1snc2VydmVyJ10uX2lkKSwKKyAgICAgICAgICAg IGVuY29kZVVSSUNvbXBvbmVudChpbmZvWydkYXRhYmFzZSddLl9pZCksCisgICAgICAgICAgICBl bmNvZGVVUklDb21wb25lbnQoaW5mb1sncGFydGl0aW9uJ10uc2NoZW1hX2lkKSwKKyAgICAgICAg ICAgIGVuY29kZVVSSUNvbXBvbmVudChpbmZvWydwYXJ0aXRpb24nXS5faWQpCisgICAgICAgICAg ICApLnZhbHVlKCk7CisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydz Y2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5v ZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYWxsYmFja3M6IHsKKyAgICAgICAg LyogRW5hYmxlIHRyaWdnZXIocykgb24gdGFibGUgKi8KKyAgICAgICAgZW5hYmxlX3RyaWdnZXJz X29uX3RhYmxlOiBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgICAgICB2YXIgcGFyYW1zID0geydl bmFibGUnOiB0cnVlIH07CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrcy5zZXRfdHJpZ2dlcnMu YXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOworICAgICAgICB9LAorICAgICAgICAvKiBEaXNh YmxlIHRyaWdnZXIocykgb24gdGFibGUgKi8KKyAgICAgICAgZGlzYWJsZV90cmlnZ2Vyc19vbl90 YWJsZTogZnVuY3Rpb24oYXJncykgeworICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHsnZW5hYmxl JzogZmFsc2UgfTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tzLnNldF90cmlnZ2Vycy5hcHBs eSh0aGlzLCBbYXJncywgcGFyYW1zXSk7CisgICAgICAgIH0sCisgICAgICAgIHNldF90cmlnZ2Vy czogZnVuY3Rpb24oYXJncywgcGFyYW1zKSB7CisgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3 aWxsIHNlbmQgcmVxdWVzdCB0byBlbmFibGUgb3IKKyAgICAgICAgICAvLyBkaXNhYmxlIHRyaWdn ZXJzIG9uIHRhYmxlIGxldmVsCisgICAgICAgICAgdmFyIGlucHV0ID0gYXJncyB8fCB7fTsKKyAg ICAgICAgICBvYmogPSB0aGlzLAorICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAgICAg ICAgICBpID0gaW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAgICAgICAgZCA9IGkgJiYg aS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQ7CisgICAgICAgICAgaWYg KCFkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgJC5hamF4KHsKKyAg ICAgICAgICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChpLCAnc2V0X3RyaWdnZXInICwgZCwgdHJ1 ZSksCisgICAgICAgICAgICB0eXBlOidQVVQnLAorICAgICAgICAgICAgZGF0YTogcGFyYW1zLAor ICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKKyAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0 aW9uKHJlcykgeworICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAg ICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmluZm8pOworICAgICAgICAgICAgICAgIHQu dW5sb2FkKGkpOworICAgICAgICAgICAgICAgIHQuc2V0SW5vZGUoaSk7CisgICAgICAgICAgICAg ICAgdC5kZXNlbGVjdChpKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICAgICAgdC5zZWxlY3QoaSk7CisgICAgICAgICAgICAgICAgfSwgMTAp OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZXJyb3I6IGZ1 bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAgICAgICAgICAgICB0cnkgeworICAgICAg ICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAg ICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgYWxl cnRpZnkuZXJyb3IoZXJyLmVycm9ybXNnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgICAgICAgIHQudW5sb2FkKGkpOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICAvKiBUcnVuY2F0ZSB0YWJs ZSAqLworICAgICAgICB0cnVuY2F0ZV90YWJsZTogZnVuY3Rpb24oYXJncykgeworICAgICAgICAg ICAgdmFyIHBhcmFtcyA9IHsnY2FzY2FkZSc6IGZhbHNlIH07CisgICAgICAgICAgICB0aGlzLmNh bGxiYWNrcy50cnVuY2F0ZS5hcHBseSh0aGlzLCBbYXJncywgcGFyYW1zXSk7CisgICAgICAgIH0s CisgICAgICAgIC8qIFRydW5jYXRlIHRhYmxlIHdpdGggY2FzY2FkZSAqLworICAgICAgICB0cnVu Y2F0ZV90YWJsZV9jYXNjYWRlOiBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgICAgICB2YXIgcGFy YW1zID0geydjYXNjYWRlJzogdHJ1ZSB9OworICAgICAgICAgICAgdGhpcy5jYWxsYmFja3MudHJ1 bmNhdGUuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOworICAgICAgICB9LAorICAgICAgICB0 cnVuY2F0ZTogZnVuY3Rpb24oYXJncywgcGFyYW1zKSB7CisgICAgICAgICAgdmFyIGlucHV0ID0g YXJncyB8fCB7fTsKKyAgICAgICAgICBvYmogPSB0aGlzLAorICAgICAgICAgIHQgPSBwZ0Jyb3dz ZXIudHJlZSwKKyAgICAgICAgICBpID0gaW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAg ICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQ7 CisKKyAgICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg ICAgICBhbGVydGlmeS5jb25maXJtKAorICAgICAgICAgICAgZ2V0dGV4dCgnVHJ1bmNhdGUgVGFi bGUnKSwKKyAgICAgICAgICAgIFMoZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRy dW5jYXRlIHRhYmxlICVzPycpKS5zcHJpbnRmKGQubGFiZWwpLnZhbHVlKCksCisgICAgICAgICAg ICBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgaWYgKGUpIHsKKyAgICAgICAgICAgICAgdmFy IGRhdGEgPSBkOworICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgIHVybDog b2JqLmdlbmVyYXRlX3VybChpLCAndHJ1bmNhdGUnICwgZCwgdHJ1ZSksCisgICAgICAgICAgICAg ICAgdHlwZTonUFVUJywKKyAgICAgICAgICAgICAgICBkYXRhOiBwYXJhbXMsCisgICAgICAgICAg ICAgICAgZGF0YVR5cGU6ICJqc29uIiwKKyAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlv bihyZXMpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7CisgICAg ICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmluZm8pOworICAgICAgICAgICAg ICAgICAgICB0LnJlbW92ZUljb24oaSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuaWNvbiA9 ICdpY29uLXRhYmxlJzsKKyAgICAgICAgICAgICAgICAgICAgdC5hZGRJY29uKGksIHtpY29uOiBk YXRhLmljb259KTsKKyAgICAgICAgICAgICAgICAgICAgdC51bmxvYWQoaSk7CisgICAgICAgICAg ICAgICAgICAgIHQuc2V0SW5vZGUoaSk7CisgICAgICAgICAgICAgICAgICAgIHQuZGVzZWxlY3Qo aSk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIHVwZGF0ZWQgZGF0YSBmcm9tIHNlcnZl cgorICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgICAgICAgIHQuc2VsZWN0KGkpOworICAgICAgICAgICAgICAgICAgICB9LCAxMCk7Cisg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICB0 cnkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3Bv bnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnIuc3VjY2VzcyA9PSAwKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuZXJyb3IoZXJyLmVycm9ybXNnKTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAg ICAgICAgICAgICAgIHQudW5sb2FkKGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgfSk7CisgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkge30KKyAgICAg ICAgICApOworICAgICAgICB9LAorICAgICAgICByZXNldF90YWJsZV9zdGF0czogZnVuY3Rpb24o YXJncykgeworICAgICAgICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge30sCisgICAgICAgICAgICBv YmogPSB0aGlzLAorICAgICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgICAg aSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxlY3RlZCgpLAorICAgICAgICAgICAgZCA9IGkgJiYgaS5s ZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQ7CisKKyAgICAgICAgICBpZiAo IWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICBhbGVydGlmeS5jb25m aXJtKAorICAgICAgICAgICAgZ2V0dGV4dCgnUmVzZXQgc3RhdGlzdGljcycpLAorICAgICAgICAg ICAgUyhnZXR0ZXh0KCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHN0YXRpc3Rp Y3MgZm9yIHRhYmxlICVzPycpKS5zcHJpbnRmKGQuX2xhYmVsKS52YWx1ZSgpLAorICAgICAgICAg ICAgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgaWYgKGUpIHsKKyAgICAgICAgICAgICAg ICB2YXIgZGF0YSA9IGQ7CisgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAg ICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChpLCAncmVzZXQnICwgZCwgdHJ1ZSksCisgICAgICAg ICAgICAgICAgICB0eXBlOidERUxFVEUnLAorICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVu Y3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7 CisgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2VzcyhyZXMuaW5mbyk7CisgICAg ICAgICAgICAgICAgICAgICAgdC5yZW1vdmVJY29uKGkpOworICAgICAgICAgICAgICAgICAgICAg IGRhdGEuaWNvbiA9ICdpY29uLXRhYmxlJzsKKyAgICAgICAgICAgICAgICAgICAgICB0LmFkZElj b24oaSwge2ljb246IGRhdGEuaWNvbn0pOworICAgICAgICAgICAgICAgICAgICAgIHQudW5sb2Fk KGkpOworICAgICAgICAgICAgICAgICAgICAgIHQuc2V0SW5vZGUoaSk7CisgICAgICAgICAgICAg ICAgICAgICAgdC5kZXNlbGVjdChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCB1 cGRhdGVkIGRhdGEgZnJvbSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0 KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdC5zZWxlY3QoaSk7CisgICAg ICAgICAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3Rh dHVzLCBlcnJvcikgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg ICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAg ICAgICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgYWxlcnRpZnkuZXJyb3IoZXJyLmVycm9ybXNnKTsKKyAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgICAgICAgICAg ICAgIHQudW5sb2FkKGkpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0p OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24o KSB7fQorICAgICAgICAgICk7CisgICAgICAgIH0sCisgICAgICAgIGRldGFjaF9wYXJ0aXRpb246 IGZ1bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9LAorICAg ICAgICAgICAgb2JqID0gdGhpcywKKyAgICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAg ICAgICAgICAgIGkgPSBpbnB1dC5pdGVtIHx8IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICAgIGQg PSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOworCisgICAg ICAgICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgYWxl cnRpZnkuY29uZmlybSgKKyAgICAgICAgICAgIGdldHRleHQoJ0RldGFjaCBQYXJ0aXRpb24nKSwK KyAgICAgICAgICAgIFMoZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRldGFjaCB0 aGUgcGFydGl0aW9uICVzPycpKS5zcHJpbnRmKGQuX2xhYmVsKS52YWx1ZSgpLAorICAgICAgICAg ICAgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgaWYgKGUpIHsKKyAgICAgICAgICAgICAg ICB2YXIgZGF0YSA9IGQ7CisgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAg ICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChpLCAnZGV0YWNoJyAsIGQsIHRydWUpLAorICAgICAg ICAgICAgICAgICAgdHlwZTonUFVUJywKKyAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0 aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgewor ICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmluZm8pOworICAgICAg ICAgICAgICAgICAgICAgIHZhciBuID0gdC5uZXh0KGkpOworICAgICAgICAgICAgICAgICAgICAg IGlmICghbiB8fCAhbi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnBy ZXYoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgIW4ubGVuZ3RoKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnBhcmVudChpKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdC5zZXRJbm9kZShuLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgdC5yZW1v dmUoaSk7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ubGVuZ3RoKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICB0LnNlbGVjdChuKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg ICBlcnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgICAg ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHho ci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIuc3VjY2VzcyA9 PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5lcnJvcihlcnIuZXJyb3Jt c2cpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBjYXRj aCAoZSkge30KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkge30KKyAg ICAgICAgICApOworICAgICAgIH0KKyAgICAgIH0sCisgICAgICBtb2RlbDogcGdCcm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1 bmRlZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgc3Bjb2lkOiB1 bmRlZmluZWQsCisgICAgICAgICAgc3BjbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAgIHJlbG93 bmVyOiB1bmRlZmluZWQsCisgICAgICAgICAgcmVsYWNsOiB1bmRlZmluZWQsCisgICAgICAgICAg cmVsaGFzb2lkczogdW5kZWZpbmVkLAorICAgICAgICAgIHJlbGhhc3N1YmNsYXNzOiB1bmRlZmlu ZWQsCisgICAgICAgICAgcmVsdHVwbGVzOiB1bmRlZmluZWQsCisgICAgICAgICAgZGVzY3JpcHRp b246IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAg Y29ua2V5OiB1bmRlZmluZWQsCisgICAgICAgICAgaXNyZXBsOiB1bmRlZmluZWQsCisgICAgICAg ICAgdHJpZ2dlcmNvdW50OiB1bmRlZmluZWQsCisgICAgICAgICAgcmVscGVyc2lzdGVuY2U6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBmaWxsZmFjdG9yOiB1bmRlZmluZWQsCisgICAgICAgICAgcmVs b2Z0eXBlOiB1bmRlZmluZWQsCisgICAgICAgICAgdHlwbmFtZTogdW5kZWZpbmVkLAorICAgICAg ICAgIGxhYmVsczogdW5kZWZpbmVkLAorICAgICAgICAgIHByb3ZpZGVyczogdW5kZWZpbmVkLAor ICAgICAgICAgIGlzX3N5c190YWJsZTogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbGxfaW5oZXJp dHM6IFtdLAorICAgICAgICAgIGhhc3RvYXN0dGFibGU6IHRydWUsCisgICAgICAgICAgdG9hc3Rf YXV0b3ZhY3V1bV9lbmFibGVkOiBmYWxzZSwKKyAgICAgICAgICBhdXRvdmFjdXVtX2VuYWJsZWQ6 IGZhbHNlLAorICAgICAgICAgIHByaW1hcnlfa2V5OiBbXSwKKyAgICAgICAgICBwYXJ0aXRpb25z OiBbXSwKKyAgICAgICAgICBwYXJ0aXRpb25fdHlwZTogJ3JhbmdlJywKKyAgICAgICAgICBpc19w YXJ0aXRpb25lZDogZmFsc2UsCisgICAgICAgICAgcGFydGl0aW9uX3ZhbHVlOiB1bmRlZmluZWQK KyAgICAgICAgfSwKKyAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMhCisgICAgICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwor CisgICAgICAgICAgaWYgKF8uc2l6ZShhdHRycykgPT09IDApIHsKKyAgICAgICAgICAgIHZhciB1 c2VySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mubm9kZV9pbmZvLnNlcnZlci5faWRd LnVzZXIsCisgICAgICAgICAgICAgICAgc2NoZW1hSW5mbyA9IGFyZ3Mubm9kZV9pbmZvLnNjaGVt YTsKKworICAgICAgICAgICAgdGhpcy5zZXQoeworICAgICAgICAgICAgICAncmVsb3duZXInOiB1 c2VySW5mby5uYW1lLCAnc2NoZW1hJzogc2NoZW1hSW5mby5fbGFiZWwKKyAgICAgICAgICAgIH0s IHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9CisgICAgICAgICAgcGdCcm93c2VyLk5vZGUu TW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAg ICAgICB9LAorICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6 IGdldHRleHQoJ05hbWUnKSwgdHlwZTogJ3RleHQnLAorICAgICAgICAgIG1vZGU6IFsncHJvcGVy dGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Jl bG93bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIHR5cGU6ICd0ZXh0Jywgbm9kZTogJ3Jv bGUnLAorICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBz ZWxlY3QyOiB7YWxsb3dDbGVhcjogZmFsc2V9LAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hl bWEnLCBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnc2NoZW1hJywgbGFiZWw6IGdldHRleHQoJ1NjaGVtYScpLCB0eXBlOiAndGV4dCcsIG5v ZGU6ICdzY2hlbWEnLAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsIG1v ZGU6IFsnY3JlYXRlJywgJ2VkaXQnLCAncHJvcGVydGllcyddLAorICAgICAgICAgIGRpc2FibGVk OiAnaW5TY2hlbWEnLCBmaWx0ZXI6IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgIC8vIElmIHNj aGVtYSBuYW1lIHN0YXJ0IHdpdGggcGdfKiB0aGVuIHdlIG5lZWQgdG8gZXhjbHVkZSB0aGVtCisg ICAgICAgICAgICBpZihkICYmIGQubGFiZWwubWF0Y2goL15wZ18vKSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgfSwgY2FjaGVfbm9kZTogJ2RhdGFiYXNlJywgY2FjaGVf bGV2ZWw6ICdkYXRhYmFzZScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzcGNuYW1lJywg bGFiZWw6IGdldHRleHQoJ1RhYmxlc3BhY2UnKSwgbm9kZTogJ3RhYmxlc3BhY2UnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgZGlzYWJsZWQ6 ICdpblNjaGVtYScsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdl ZGl0J10sCisgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAvLyBJ ZiB0YWJsZXNwYWNlIG5hbWUgaXMgbm90ICJwZ19nbG9iYWwiIHRoZW4gd2UgbmVlZCB0byBleGNs dWRlIHRoZW0KKyAgICAgICAgICAgIHJldHVybiAoIShkICYmIGQubGFiZWwubWF0Y2goL3BnX2ds b2JhbC8pKSkKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0 aW9uJywgdHlwZTogJ2dyb3VwJywgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbicpLAorICAgICAg ICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwgbWluX3ZlcnNpb246IDEwMDAwMCwKKyAgICAg ICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBBbHdheXMgc2hvdyBp biBjYXNlIG9mIGNyZWF0ZSBtb2RlCisgICAgICAgICAgICBpZiAobS5pc05ldygpIHx8IG0uZ2V0 KCdpc19wYXJ0aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnaXNfcGFydGl0aW9uZWQnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb25lZCBUYWJsZT8nKSwg Y2VsbDogJ3N3aXRjaCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVy dGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1Vu ZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZp bmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVf aW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVl OworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKCFtLmlzTmV3KCkpCisgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiBn ZXR0ZXh0KCdDb21tZW50JyksIHR5cGU6ICdtdWx0aWxpbmUnLAorICAgICAgICAgIG1vZGU6IFsn cHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDogJ2luU2NoZW1hJworICAg ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fdmFsdWUnLCBsYWJl bDpnZXR0ZXh0KCdQYXJ0aXRpb24gU2NoZW1lJyksCisgICAgICAgICAgdHlwZTogJ3RleHQnLCB2 aXNpYmxlOiBmYWxzZQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbGxfaW5oZXJpdHMn LCBsYWJlbDogZ2V0dGV4dCgnSW5oZXJpdGVkIGZyb20gdGFibGUocyknKSwKKyAgICAgICAgICB0 eXBlOiAndGV4dCcsIGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ0NvbHVtbnMnLCB0eXBlOiAnZ3JvdXAn LCBsYWJlbDogZ2V0dGV4dCgnQ29sdW1ucycpLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwgbWluX3ZlcnNpb246IDEwMDAwMCwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAvLyBBbHdheXMgaGlkZSBpbiBjYXNlIG9mIHBhcnRpdGlvbiB0 YWJsZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0s eworICAgICAgICAgIC8vIFRhYiBjb250cm9sIGZvciBjb2x1bW5zCisgICAgICAgICAgaWQ6ICdj b2x1bW5zJywgbGFiZWw6IGdldHRleHQoJ0NvbHVtbnMnKSwgdHlwZTogJ2NvbGxlY3Rpb24nLAor ICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdDb2x1bW5zJyksCisgICAgICAgICAgbW9kZWw6IHBn QnJvd3Nlci5Ob2Rlc1snY29sdW1uJ10ubW9kZWwsCisgICAgICAgICAgc3Vibm9kZTogcGdCcm93 c2VyLk5vZGVzWydjb2x1bW4nXS5tb2RlbCwKKyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdl ZGl0J10sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8v IEluIGNhc2Ugb2YgcGFydGl0aW9uZWQgdGFibGUgcmVtb3ZlIGluaGVyaXRlZCBjb2x1bW5zCisg ICAgICAgICAgICBpZiAobS5pc05ldygpICYmIG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7Cisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFy IGNvbGwgPSBtLmdldCgnY29sdW1ucycpOworICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNv bGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICBpZiAoXy5pc1Vu ZGVmaW5lZChtb2RlbC5nZXQoJ2luaGVyaXRlZGZyb20nKSkpCisgICAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZv KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGRl cHM6IFsndHlwbmFtZScsICdpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAgIGNhbkFkZDogJ2No ZWNrX2dyaWRfYWRkX2NvbmRpdGlvbicsCisgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVs ZXRlOiB0cnVlLAorICAgICAgICAgIC8vIEZvciBlYWNoIHJvdyBlZGl0L2RlbGV0ZSBidXR0b24g ZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgICBjYW5FZGl0Um93OiAnY2hlY2tfZ3JpZF9yb3dfZWRp dF9kZWxldGUnLAorICAgICAgICAgIGNhbkRlbGV0ZVJvdzogJ2NoZWNrX2dyaWRfcm93X2VkaXRf ZGVsZXRlJywKKyAgICAgICAgICB1bmlxdWVDb2wgOiBbJ25hbWUnXSwKKyAgICAgICAgICBjb2x1 bW5zIDogWyduYW1lJyAsICdjbHR5cGUnLCAnYXR0bGVuJywgJ2F0dHByZWNpc2lvbicsICdhdHRu b3RudWxsJywgJ2lzX3ByaW1hcnlfa2V5J10sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0u VW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICBCYWNrZm9ybS5VbmlxdWVDb2xDb2xsZWN0 aW9uQ29udHJvbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICBjb2xsZWN0 aW9uID0gc2VsZi5tb2RlbC5nZXQoc2VsZi5maWVsZC5nZXQoJ25hbWUnKSk7CisKKyAgICAgICAg ICAgICAgY29sbGVjdGlvbi5vbigiY2hhbmdlOmlzX3ByaW1hcnlfa2V5IiwgZnVuY3Rpb24obSkg eworICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5X2tleV9jb2xsID0gc2VsZi5tb2RlbC5nZXQo J3ByaW1hcnlfa2V5JyksCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9uYW1lID0gbS5nZXQo J25hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXk7CisKKyAgICAgICAgICAg ICAgICBpZihtLmdldCgnaXNfcHJpbWFyeV9rZXknKSkgeworICAgICAgICAgICAgICAgIC8vIEFk ZCBjb2x1bW4gdG8gcHJpbWFyeSBrZXkuCisgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeV9r ZXlfY29sbC5sZW5ndGggPCAxKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5ID0g bmV3IChwcmltYXJ5X2tleV9jb2xsLm1vZGVsKSh7fSwgeworICAgICAgICAgICAgICAgICAgICAg IHRvcDogc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBwcmlt YXJ5X2tleV9jb2xsLAorICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IHByaW1hcnlfa2V5 X2NvbGwKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHByaW1h cnlfa2V5X2NvbGwuYWRkKHByaW1hcnlfa2V5KTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5ID0gcHJpbWFyeV9rZXlfY29sbC5maXJz dCgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFs dGVyIGV4aXN0aW5nIHByaW1hcnkga2V5IGNvbHVtbnMuCisgICAgICAgICAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZChwcmltYXJ5X2tleS5nZXQoJ29pZCcpKSkgeworICAgICAgICAgICAgICAg ICAgICB2YXIgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwgPSBwcmltYXJ5X2tleS5nZXQoJ2NvbHVt bnMnKSwKKyAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2x1bW5fZXhpc3QgPSBw cmltYXJ5X2tleV9jb2x1bW5fY29sbC53aGVyZSh7Y29sdW1uOmNvbHVtbl9uYW1lfSk7CisKKyAg ICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlfa2V5X2NvbHVtbl9leGlzdC5sZW5ndGggPT0g MCkgeworICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5X2tleV9jb2x1bW4gPSBuZXcg KHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsLm1vZGVsKSgKKyAgICAgICAgICAgICAgICAgICAgICAg ICAge2NvbHVtbjogY29sdW1uX25hbWV9LCB7IHNpbGVudDogdHJ1ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdG9wOiBzZWxmLm1vZGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBj b2xsZWN0aW9uOiBwcmltYXJ5X2tleV9jb2xsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBo YW5kbGVyOiBwcmltYXJ5X2tleV9jb2xsCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwor ICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsLmFkZChwcmltYXJ5 X2tleV9jb2x1bW4pOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg ICAgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwudHJpZ2dlcigncGdhZG1pbjptdWx0aWNvbHVtbjp1 cGRhdGVkJywgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwpOworICAgICAgICAgICAgICAgICAgfQor CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyByZW1vdmUgY29s dW1uIGZyb20gcHJpbWFyeSBrZXkuCisgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeV9rZXlf Y29sbC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5X2tleSA9 IHByaW1hcnlfa2V5X2NvbGwuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90 IGFsdGVyIGV4aXN0aW5nIHByaW1hcnkga2V5IGNvbHVtbnMuCisgICAgICAgICAgICAgICAgICAg IGlmICghXy5pc1VuZGVmaW5lZChwcmltYXJ5X2tleS5nZXQoJ29pZCcpKSkgeworICAgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg ICAgICAgICAgIHZhciAgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwgPSBwcmltYXJ5X2tleS5nZXQo J2NvbHVtbnMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRDb2xzID0gcHJpbWFy eV9rZXlfY29sdW1uX2NvbGwud2hlcmUoe2NvbHVtbjpjb2x1bW5fbmFtZX0pOworICAgICAgICAg ICAgICAgICAgICBpZiAocmVtb3ZlZENvbHMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAg ICAgICAgIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsLnJlbW92ZShyZW1vdmVkQ29scyk7CisgICAg ICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlbW92ZWRDb2xzLCBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBtLmRlc3Ryb3koKTsKKyAgICAgICAgICAgICAgICAgICAgICB9 KQorICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5X2tleV9jb2x1bW5fY29sbC5sZW5n dGggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIHdpbGwgYmUgb25seSBvbiBw cmltYXJ5IGtleSBzbyByZW1vdmUgdGhlIGZpcnN0IG9uZS4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpbWFyeV9rZXlfY29sbC5yZW1vdmUocHJpbWFyeV9rZXlfY29sbC5maXJzdCgpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWRlYWxseSBhYm92ZSBsaW5lIG9mIGNvZGUg c2hvdWxkIGJlICJwcmltYXJ5X2tleV9jb2xsLnJlc2V0KCkiLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKiBCdXQgb3VyIGN1c3RvbSBEYXRhQ29sbGVjdGlvbiAoZXh0ZW5kZWQgZnJvbSBC YWNrYm9uZSBjb2xsZWN0aW9uIGluIGRhdGFtb2RlbC5qcykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICogZG9lcyBub3QgcmVzcG9uZCB0byByZXNldCBldmVudCwgaXQgb25seSBzdXBwb3J0 cyBhZGQsIHJlbW92ZSwgY2hhbmdlIGV2ZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICogQW5kIGhlbmNlIG5vIGN1c3RvbSBldmVudCBsaXN0ZW5lcnMvdmFsaWRhdG9ycyBnZXQgY2Fs bGVkIGZvciByZXNldCBldmVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAg ICAgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2NvbHVt bl9jb2xsLnRyaWdnZXIoJ3BnYWRtaW46bXVsdGljb2x1bW46dXBkYXRlZCcsIHByaW1hcnlfa2V5 X2NvbHVtbl9jb2xsKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVtb3ZlOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSB0aGlzLm1vZGVsLmdldCh0 aGlzLmZpZWxkLmdldCgnbmFtZScpKTsKKyAgICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24pIHsK KyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLm9mZigiY2hhbmdlOmlzX3ByaW1hcnlfa2V5Iik7 CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBCYWNrZm9ybS5VbmlxdWVDb2xDb2xs ZWN0aW9uQ29udHJvbC5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgfSksCisgICAgICAgICAgYWxsb3dNdWx0aXBsZUVtcHR5 Um93OiBmYWxzZQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2luaGVyaXRlZF90YWJsZXNf Y250JywgbGFiZWw6IGdldHRleHQoJ0luaGVyaXRlZCB0YWJsZXMgY291bnQnKSwKKyAgICAgICAg ICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogZ2V0dGV4dCgnQWR2 YW5jZWQnKSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAg ICAgICAgICAvLyBIZXJlIHdlIHdpbGwgY3JlYXRlIHRhYiBjb250cm9sIGZvciBjb25zdHJhaW50 cworICAgICAgICAgIHR5cGU6ICduZXN0ZWQnLCBjb250cm9sOiAndGFiJywgZ3JvdXA6IGdldHRl eHQoJ0NvbnN0cmFpbnRzJyksCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAor ICAgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICAgICAgaWQ6ICdwcmltYXJ5X2tleScsIGxh YmVsOiBnZXR0ZXh0KCdQcmltYXJ5IGtleScpLAorICAgICAgICAgICAgICBtb2RlbDogcGdCcm93 c2VyLk5vZGVzWydwcmltYXJ5X2tleSddLm1vZGVsLAorICAgICAgICAgICAgICBzdWJub2RlOiBw Z0Jyb3dzZXIuTm9kZXNbJ3ByaW1hcnlfa2V5J10ubW9kZWwsCisgICAgICAgICAgICAgIGVkaXRh YmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgICAgICBncm91cDogZ2V0 dGV4dCgnUHJpbWFyeSBLZXknKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAg ICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25l ZCddLAorICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKKyAg ICAgICAgICAgICAgY29sdW1ucyA6IFsnbmFtZScsICdjb2x1bW5zJ10sCisgICAgICAgICAgICAg IGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFy dGl0aW9uZWQnKSkgeworICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbGwgPSBtLmdldCgncHJpbWFyeV9rZXknKTsKKyAg ICAgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwp IHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg ICAgfSkpOworICAgICAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICBjYW5BZGRSb3c6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIG9uZSBwcmltYXJ5IGtl eQorICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBtLmdldCgnY29sdW1ucycpOworCisgICAg ICAgICAgICAgICByZXR1cm4gKG0uZ2V0KCdwcmltYXJ5X2tleScpICYmCisgICAgICAgICAgICAg ICAgICAgICAgICBtLmdldCgncHJpbWFyeV9rZXknKS5sZW5ndGggPCAxICYmCisgICAgICAgICAg ICAgICAgICAgICAgICBfLnNvbWUoY29sdW1ucy5wbHVjaygnbmFtZScpKSk7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICBpZDogJ2ZvcmVpZ25fa2V5Jywg bGFiZWw6IGdldHRleHQoJ0ZvcmVpZ24ga2V5JyksCisgICAgICAgICAgICAgIG1vZGVsOiBwZ0Jy b3dzZXIuTm9kZXNbJ2ZvcmVpZ25fa2V5J10ubW9kZWwsCisgICAgICAgICAgICAgIHN1Ym5vZGU6 IHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXknXS5tb2RlbCwKKyAgICAgICAgICAgICAgZWRp dGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAgICAgIGdyb3VwOiBn ZXR0ZXh0KCdGb3JlaWduIEtleScpLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAg ICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpbJ2lzX3BhcnRpdGlv bmVkJ10sCisgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAor ICAgICAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICBpZiAo bS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2xsID0gbS5nZXQoJ2ZvcmVp Z25fa2V5Jyk7CisgICAgICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1 bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgY29sdW1u cyA6IFsnbmFtZScsICdjb2x1bW5zJ10sCisgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQgaWYgdGhlcmUgaXMg YXQgbGVhc3Qgb25lIGNvbHVtbiB3aXRoIG5hbWUuCisgICAgICAgICAgICAgICB2YXIgY29sdW1u cyA9IG0uZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgICByZXR1cm4gXy5zb21lKGNvbHVt bnMucGx1Y2soJ25hbWUnKSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0seworICAg ICAgICAgICAgICBpZDogJ2NoZWNrX2NvbnN0cmFpbnQnLCBsYWJlbDogZ2V0dGV4dCgnQ2hlY2sg Y29uc3RyYWludCcpLAorICAgICAgICAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGVzWydjaGVj a19jb25zdHJhaW50cyddLm1vZGVsLAorICAgICAgICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIu Tm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnRzJ10ubW9kZWwsCisgICAgICAgICAgICAgIGVkaXRhYmxl OiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgICAgICBncm91cDogZ2V0dGV4 dCgnQ2hlY2snKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgICAgICBjYW5F ZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAorICAg ICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKKyAgICAgICAgICAg ICAgY2FuQWRkOiB0cnVlLAorICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbnNy YyddCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgaWQ6ICd1bmlxdWVfY29uc3RyYWlu dCcsIGxhYmVsOiBnZXR0ZXh0KCdVbmlxdWUgQ29uc3RyYWludCcpLAorICAgICAgICAgICAgICBt b2RlbDogcGdCcm93c2VyLk5vZGVzWyd1bmlxdWVfY29uc3RyYWludCddLm1vZGVsLAorICAgICAg ICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3VuaXF1ZV9jb25zdHJhaW50J10ubW9k ZWwsCisgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAor ICAgICAgICAgICAgICBncm91cDogZ2V0dGV4dCgnVW5pcXVlJyksIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwKKyAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBk ZXBzOlsnaXNfcGFydGl0aW9uZWQnXSwKKyAgICAgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1j b2wtY29sbGVjdGlvbicsCisgICAgICAgICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnLCAnY29sdW1u cyddLAorICAgICAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAg ICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAgICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2xsID0gbS5nZXQo J3VuaXF1ZV9jb25zdHJhaW50Jyk7CisgICAgICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNv bGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICAgIH0sIDEw KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisK KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgY2FuQWRkUm93OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAvLyBVc2VyIGNh biBvbmx5IGFkZCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1uIHdpdGggbmFtZS4KKyAg ICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAg ICAgIHJldHVybiBfLnNvbWUoY29sdW1ucy5wbHVjaygnbmFtZScpKTsKKyAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgIGlkOiAnZXhjbHVkZV9jb25zdHJhaW50 JywgbGFiZWw6IGdldHRleHQoJ0V4Y2x1ZGUgY29uc3RyYWludCcpLAorICAgICAgICAgICAgICBt b2RlbDogcGdCcm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddLm1vZGVsLAorICAg ICAgICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50 J10ubW9kZWwsCisgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rp b24nLAorICAgICAgICAgICAgICBncm91cDogZ2V0dGV4dCgnRXhjbHVkZScpLCBtb2RlOiBbJ2Vk aXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTog dHJ1ZSwgZGVwczpbJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAgICAgIGNvbnRyb2w6ICd1 bmlxdWUtY29sLWNvbGxlY3Rpb24nLAorICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywg J2NvbHVtbnMnLCAnY29uc3RyYWludCddLAorICAgICAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAg ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg ICAgIHZhciBjb2xsID0gbS5nZXQoJ2V4Y2x1ZGVfY29uc3RyYWludCcpOworICAgICAgICAgICAg ICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KSk7Cisg ICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25l IGNvbHVtbiB3aXRoIG5hbWUuCisgICAgICAgICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdj b2x1bW5zJyk7CisgICAgICAgICAgICAgICByZXR1cm4gXy5zb21lKGNvbHVtbnMucGx1Y2soJ25h bWUnKSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9XQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ3R5cG5hbWUnLCBsYWJlbDogZ2V0dGV4dCgnT2YgdHlwZScpLCB0eXBlOiAndGV4 dCcsCisgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgbW9kZTogWydwcm9w ZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdjaGVja09m VHlwZScsIHVybDogJ2dldF9vZnR5cGUnLCBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwKKyAg ICAgICAgICBkZXBzOiBbJ2NvbGxfaW5oZXJpdHMnLCAnaXNfcGFydGl0aW9uZWQnXSwgdHJhbnNm b3JtOiBmdW5jdGlvbihkYXRhLCBjZWxsKSB7CisgICAgICAgICAgICB2YXIgY29udHJvbCA9IGNl bGwgfHwgdGhpcywKKyAgICAgICAgICAgICAgbSA9IGNvbnRyb2wubW9kZWw7CisgICAgICAgICAg ICAgIG0ub2ZfdHlwZXNfdGFibGVzID0gZGF0YTsKKyAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7 CisgICAgICAgICAgfSwKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlQWpheE9wdGlv bnNDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICAgIC8vIFdoZW4gb2ZfdHlwZXMgY2hhbmdl cyB3ZSBuZWVkIHRvIGNsZWFyIGNvbHVtbnMgY29sbGVjdGlvbgorICAgICAgICAgICAgICBvbkNo YW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUFqYXhPcHRp b25zQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAg ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICB0Ymxfb2lk ID0gdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgdGJsX25hbWUgPSBzZWxmLm1vZGVsLmdl dCgndHlwbmFtZScpLAorICAgICAgICAgICAgICAgICAgZGF0YSA9IHVuZGVmaW5lZCwKKyAgICAg ICAgICAgICAgICAgIGFyZyA9IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgIGNvbHVtbl9j b2xsZWN0aW9uID0gc2VsZi5tb2RlbC5nZXQoJ2NvbHVtbnMnKTsKKworICAgICAgICAgICAgICAg IGlmICghXy5pc1VuZGVmaW5lZCh0YmxfbmFtZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgdGJs X25hbWUgIT09ICcnICYmIGNvbHVtbl9jb2xsZWN0aW9uLmxlbmd0aCAhPT0gMCkgeworICAgICAg ICAgICAgICAgICAgdmFyIG1zZyA9IGdldHRleHQoJ0NoYW5naW5nIG9mIHR5cGUgdGFibGUgd2ls bCBjbGVhciBjb2x1bW5zIGNvbGxlY3Rpb24nKTsKKyAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5 LmNvbmZpcm0obXNnLCBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZSkg eworICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZXIgY2xpY2tzIE9rLCBsZXRzIGNsZWFyIGNv bHVtbnMgY29sbGVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9jb2xsZWN0aW9u LnJlc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQodGJsX25h bWUpICYmIHRibF9uYW1lID09PSAnJykgeworICAgICAgICAgICAgICAgICAgY29sdW1uX2NvbGxl Y3Rpb24ucmVzZXQoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBS dW4gQWpheCBub3cgdG8gZmV0Y2ggY29sdW1ucworICAgICAgICAgICAgICAgIGlmICghXy5pc1Vu ZGVmaW5lZCh0YmxfbmFtZSkgJiYgdGJsX25hbWUgIT09ICcnKSB7CisgICAgICAgICAgICAgICAg ICBhcmcgPSB7ICd0bmFtZSc6IHRibF9uYW1lIH0KKyAgICAgICAgICAgICAgICAgIGRhdGEgPSBz ZWxmLm1vZGVsLmZldGNoX2NvbHVtbnNfYWpheC5hcHBseShzZWxmLCBbYXJnXSk7CisgICAgICAg ICAgICAgICAgICAvLyBBZGQgaW50byBjb2x1bW4gY29sbGVjdGlvbgorICAgICAgICAgICAgICAg ICAgY29sdW1uX2NvbGxlY3Rpb24uc2V0KGRhdGEsIHsgbWVyZ2U6ZmFsc2UscmVtb3ZlOmZhbHNl IH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdmaWxsZmFjdG9yJywgbGFiZWw6IGdldHRleHQo J0ZpbGwgZmFjdG9yJyksIHR5cGU6ICdpbnQnLAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywg J2VkaXQnXSwgbWluOiAxMCwgbWF4OiAxMDAsCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVt YScsZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJykKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdyZWxoYXNvaWRzJywgbGFiZWw6IGdldHRleHQoJ0hhcyBPSURzPycpLCBjZWxsOiAnc3dpdGNo JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScsIGdyb3VwOiBnZXR0 ZXh0KCdBZHZhbmNlZCcpCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncmVscGVyc2lzdGVu Y2UnLCBsYWJlbDogZ2V0dGV4dCgnVW5sb2dnZWQ/JyksIGNlbGw6ICdzd2l0Y2gnLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLAorICAgICAg ICAgIGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnY29ubmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdQcmltYXJ5IGtleScpLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDog Z2V0dGV4dCgnQWR2YW5jZWQnKSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ3JlbHR1cGxlcycsIGxhYmVsOiBnZXR0ZXh0KCdSb3dz IChlc3RpbWF0ZWQpJyksIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg bW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpLAorICAgICAg ICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncm93 c19jbnQnLCBsYWJlbDogZ2V0dGV4dCgnUm93cyAoY291bnRlZCknKSwgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6IGdl dHRleHQoJ0FkdmFuY2VkJyksCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdyZWxoYXNzdWJjbGFzcycsIGxhYmVsOiBnZXR0ZXh0KCdJ bmhlcml0cyB0YWJsZXM/JyksIGNlbGw6ICdzd2l0Y2gnLAorICAgICAgICAgIHR5cGU6ICdzd2l0 Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyksCisg ICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdpc19zeXNfdGFibGUnLCBsYWJlbDogZ2V0dGV4dCgnU3lzdGVtIHRhYmxlPycpLCBjZWxsOiAn c3dpdGNoJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJ10s CisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAgICAgICAg dHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiBnZXR0ZXh0KCdMaWtl JyksCisgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyksCisgICAgICAgICAgc2No ZW1hOlt7CisgICAgICAgICAgICBpZDogJ2xpa2VfcmVsYXRpb24nLCBsYWJlbDogZ2V0dGV4dCgn UmVsYXRpb24nKSwKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydjcmVhdGUnLCAn ZWRpdCddLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFq YXgtb3B0aW9ucycsIHVybDogJ2dldF9yZWxhdGlvbnMnLAorICAgICAgICAgICAgZGlzYWJsZWQ6 ICdpc0xpa2VEaXNhYmxlJywgZ3JvdXA6IGdldHRleHQoJ0xpa2UnKQorICAgICAgICAgIH0sewor ICAgICAgICAgICAgaWQ6ICdsaWtlX2RlZmF1bHRfdmFsdWUnLCBsYWJlbDogZ2V0dGV4dCgnV2l0 aCBkZWZhdWx0IHZhbHVlcz8nKSwKKyAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBb J2NyZWF0ZScsICdlZGl0J10sIGRlcHM6IFsndHlwbmFtZSddLAorICAgICAgICAgICAgZGlzYWJs ZWQ6ICdpc0xpa2VEaXNhYmxlJywgZ3JvdXA6IGdldHRleHQoJ0xpa2UnKQorICAgICAgICAgIH0s eworICAgICAgICAgICAgaWQ6ICdsaWtlX2NvbnN0cmFpbnRzJywgbGFiZWw6IGdldHRleHQoJ1dp dGggY29uc3RyYWludHM/JyksCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydj cmVhdGUnLCAnZWRpdCddLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgIGRpc2FibGVk OiAnaXNMaWtlRGlzYWJsZScsIGdyb3VwOiBnZXR0ZXh0KCdMaWtlJykKKyAgICAgICAgICB9LHsK KyAgICAgICAgICAgIGlkOiAnbGlrZV9pbmRleGVzJywgbGFiZWw6IGdldHRleHQoJ1dpdGggaW5k ZXhlcz8nKSwKKyAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ2NyZWF0ZScsICdl ZGl0J10sIGRlcHM6IFsndHlwbmFtZSddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpc0xpa2VE aXNhYmxlJywgZ3JvdXA6IGdldHRleHQoJ0xpa2UnKQorICAgICAgICAgIH0seworICAgICAgICAg ICAgaWQ6ICdsaWtlX3N0b3JhZ2UnLCBsYWJlbDogZ2V0dGV4dCgnV2l0aCBzdG9yYWdlPycpLAor ICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwgZGVw czogWyd0eXBuYW1lJ10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2lzTGlrZURpc2FibGUnLCBn cm91cDogZ2V0dGV4dCgnTGlrZScpCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2xp a2VfY29tbWVudHMnLCBsYWJlbDogZ2V0dGV4dCgnV2l0aCBjb21tZW50cz8nKSwKKyAgICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGRlcHM6IFsndHlw bmFtZSddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpc0xpa2VEaXNhYmxlJywgZ3JvdXA6IGdl dHRleHQoJ0xpa2UnKQorICAgICAgICAgIH1dCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn cGFydGl0aW9uX3R5cGUnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb24gVHlwZScpLAorICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3NlbGVjdDInLCBzZWxlY3QyOiB7YWxsb3dDbGVh cjogZmFsc2V9LAorICAgICAgICAgIGdyb3VwOiAncGFydGl0aW9uJywgZGVwczogWydpc19wYXJ0 aXRpb25lZCddLAorICAgICAgICAgIG9wdGlvbnM6W3sKKyAgICAgICAgICAgIGxhYmVsOiAnUmFu Z2UnLCB2YWx1ZTogJ3JhbmdlJworICAgICAgICAgIH0seworICAgICAgICAgICAgbGFiZWw6ICdM aXN0JywgdmFsdWU6ICdsaXN0JworICAgICAgICAgIH1dLAorICAgICAgICAgIG1vZGU6WydjcmVh dGUnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZigh Xy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8u c2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2 ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24g Pj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgIGlmICghbS5pc05ldygpIHx8ICFtLmdldCgnaXNfcGFydGl0aW9uZWQn KSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlvbl9rZXlz JywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9uIEtleXMnKSwKKyAgICAgICAgICBtb2RlbDogQmFj a2Zvcm0uUGFydGl0aW9uS2V5TW9kZWwsCisgICAgICAgICAgc3Vibm9kZTogQmFja2Zvcm0uUGFy dGl0aW9uS2V5TW9kZWwsCisgICAgICAgICAgZWRpdGFibGU6IHRydWUsIHR5cGU6ICdjb2xsZWN0 aW9uJywKKyAgICAgICAgICBncm91cDogJ3BhcnRpdGlvbicsIG1vZGU6IFsnY3JlYXRlJ10sCisg ICAgICAgICAgZGVwczogWydpc19wYXJ0aXRpb25lZCcsICdwYXJ0aXRpb25fdHlwZSddLAorICAg ICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgY29udHJv bDogJ3N1Yi1ub2RlLWNvbGxlY3Rpb24nLAorICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSAmJiBtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgICAgfSwKKyAgICAgICAgICBjYW5BZGRSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgIHZhciBtYXhf cm93X2NvdW50ID0gMTAwMDsKKworICAgICAgICAgICAgaWYgKG0uZ2V0KCdwYXJ0aXRpb25fdHlw ZScpICYmIG0uZ2V0KCdwYXJ0aXRpb25fdHlwZScpID09ICdsaXN0JykKKyAgICAgICAgICAgICAg bWF4X3Jvd19jb3VudCA9IDE7CisKKyAgICAgICAgICAgIHJldHVybiAobS5nZXQoJ3BhcnRpdGlv bl9rZXlzJykgJiYKKyAgICAgICAgICAgICAgICBtLmdldCgncGFydGl0aW9uX2tleXMnKS5sZW5n dGggPCBtYXhfcm93X2NvdW50ICYmCisgICAgICAgICAgICAgICAgXy5zb21lKGNvbHVtbnMucGx1 Y2soJ25hbWUnKSkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSwKKyAgICAgICAgICB2aXNp YmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVf aW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAg ICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAg ICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg IH0sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICht LmdldCgncGFydGl0aW9uX2tleXMnKSAmJiBtLmdldCgncGFydGl0aW9uX2tleXMnKS5tb2RlbHMu bGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdwYXJ0aXRpb25fa2V5cycpOworICAgICAg ICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAg ICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAncGFydGl0aW9uX3NjaGVtZScsIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRp b24gU2NoZW1lJyksCisgICAgICAgICAgdHlwZTogJ25vdGUnLCBncm91cDogJ3BhcnRpdGlvbics IG1vZGU6IFsnZWRpdCddLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZCht Lm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9k ZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2 ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDog ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAg ICAgdGhpcy50ZXh0ID0gbS5nZXQoJ3BhcnRpdGlvbl9zY2hlbWUnKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9ucycsIGxh YmVsOmdldHRleHQoJ1BhcnRpdGlvbnMnKSwKKyAgICAgICAgICBtb2RlbDogQmFja2Zvcm0uUGFy dGl0aW9uc01vZGVsLAorICAgICAgICAgIHN1Ym5vZGU6IEJhY2tmb3JtLlBhcnRpdGlvbnNNb2Rl bCwKKyAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAg ICAgIGdyb3VwOiAncGFydGl0aW9uJywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAg ICAgIGRlcHM6IFsnaXNfcGFydGl0aW9uZWQnLCAncGFydGl0aW9uX3R5cGUnXSwKKyAgICAgICAg ICBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGN1c3RvbURlbGV0 ZVRpdGxlOiBnZXR0ZXh0KCdEZXRhY2ggUGFydGl0aW9uJyksCisgICAgICAgICAgY3VzdG9tRGVs ZXRlTXNnOiBnZXR0ZXh0KCdBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gZGV0YWNoIHRoaXMgcGFy dGl0aW9uPycpLAorICAgICAgICAgIGNvbHVtbnM6Wydpc19hdHRhY2gnLCAncGFydGl0aW9uX25h bWUnLCAndmFsdWVzX2Zyb20nLCAndmFsdWVzX3RvJywgJ3ZhbHVlc19pbiddLAorICAgICAgICAg IGNvbnRyb2w6IEJhY2tmb3JtLlN1Yk5vZGVDb2xsZWN0aW9uQ29udHJvbC5leHRlbmQoeworICAg ICAgICAgICAgcm93OiBCYWNrZ3JpZC5QYXJ0aXRpb25Sb3csCisgICAgICAgICAgICBpbml0aWFs aXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rp b25Db250cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg ICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgICAgICAgaWYgKCF0aGlzLm1v ZGVsLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0 KCdzY2hlbWFfbm9kZScpLAorICAgICAgICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZp ZWxkLmdldCgnbm9kZV9pbmZvJyk7CisKKyAgICAgICAgICAgICAgICAvLyBNYWtlIGFqYXggY2Fs bCB0byBnZXQgdGhlIHRhYmxlcyB0byBiZSBhdHRhY2hlZAorICAgICAgICAgICAgICAgICQuYWph eCh7CisgICAgICAgICAgICAgICAgICB1cmw6IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAg ICAgICAgICAgICAgICAgICAgIG5vZGUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGws ICdnZXRfYXR0YWNoX3RhYmxlcycsIHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHRydWUsIG5vZGVfaW5mbworICAgICAgICAgICAgICAgICAgICAg IF0pLAorCisgICAgICAgICAgICAgICAgICB0eXBlOiAnR0VUJywKKyAgICAgICAgICAgICAgICAg IGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykg eworICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubW9kZWwudGFibGVfb3B0aW9ucyA9IHJlcy5kYXRhOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg ICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9y IGZldGNoaW5nIHRhYmxlcyB0byBiZSBhdHRhY2hlZCcsIHJlcy5kYXRhLnJlc3VsdAorICAgICAg ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgeworICAgICAgICAg ICAgICAgICAgICB2YXIgZXJybXNnID0gJC5wYXJzZUpTT04oZS5yZXNwb25zZVRleHQpOworICAg ICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydCgnRXJyb3IgZmV0Y2hpbmcgdGFibGVzIHRv IGJlIGF0dGFjaGVkLicsIGVycm1zZy5lcnJvcm1zZyk7CisgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9CisgICAgICAgICAgKSwKKyAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAg ICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5l ZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAg ICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikg JiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgIGlmIChtLmlzTmV3KCkgJiYgbS5nZXQoJ3BhcnRpdGlvbnMnKSAmJiBtLmdldCgncGFydGl0 aW9ucycpLm1vZGVscy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBjb2xsID0gbS5nZXQoJ3BhcnRpdGlvbnMn KTsKKyAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2Rl bCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSkp OworICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlvbl9ub3RlJywgbGFiZWw6IGdldHRleHQo J1BhcnRpdGlvbicpLAorICAgICAgICAgIHR5cGU6ICdub3RlJywgZ3JvdXA6ICdwYXJ0aXRpb24n LAorICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0Fib3ZlIGNvbnRyb2wgd2lsbCBiZSB1c2VkIHRv IENyZWF0ZS9BdHRhY2gvRGV0YWNoIHBhcnRpdGlvbnMuPGJyPicgKworICAgICAgICAgICAgJzx1 bD48bGk+Q3JlYXRlIE1vZGU6IFVzZXIgd2lsbCBiZSBhYmxlIHRvIGNyZWF0ZSBOIG51bWJlciBv ZiBwYXJ0aXRpb25zLiBNb2RlIHN3aXRjaCBjb250cm9sIGlzIGRpc2FibGVkIGluIHRoaXMgc2Nl bmFyaW8uPC9saT4nICsKKyAgICAgICAgICAgICc8bGk+RWRpdCBNb2RlOiBVc2VyIHdpbGwgYmUg YWJsZSB0byBjcmVhdGUvYXR0YWNoL2RldGFjaCBOIG51bWJlciBvZiBwYXJ0aXRpb25zLicgKwor ICAgICAgICAgICAgJ0luIGF0dGFjaCBtb2RlIHRoZXJlIHdpbGwgYmUgbGlzdCBvZiBzdWl0YWJs ZSB0YWJsZXMgdG8gYmUgYXR0YWNoZWQuPC9saT48L3VsPicpLAorICAgICAgICAgIHZpc2libGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZv KSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYm ICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAg ICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQor ICAgICAgICB9LHsKKyAgICAgICAgICAvLyBIZXJlIC0gd2Ugd2lsbCBjcmVhdGUgdGFiIGNvbnRy b2wgZm9yIHN0b3JhZ2UgcGFyYW1ldGVycworICAgICAgICAgIC8vIChhdXRvIHZhY3V1bSkuCisg ICAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICd0YWInLCBncm91cDogZ2V0dGV4dCgn UGFyYW1ldGVyJyksCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLCBkZXBzOiBb J2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAgc2NoZW1hOiBCYWNrZm9ybS5WYWN1dW1TZXR0 aW5nc1NjaGVtYQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3JlbGFjbF9zdHInLCBsYWJl bDogZ2V0dGV4dCgnUHJpdmlsZWdlcycpLCBkaXNhYmxlZDogJ2luU2NoZW1hJywKKyAgICAgICAg ICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogZ2V0dGV4dCgnU2Vj dXJpdHknKQorICAgICAgICB9LCBwZ0Jyb3dzZXIuU2VjdXJpdHlHcm91cFVuZGVyU2NoZW1hLHsK KyAgICAgICAgICBpZDogJ3JlbGFjbCcsIGxhYmVsOiBnZXR0ZXh0KCdQcml2aWxlZ2VzJyksIHR5 cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3NlY3VyaXR5JywgY29udHJvbDog J3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisgICAgICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2Rl LlByaXZpbGVnZVJvbGVNb2RlbC5leHRlbmQoeworICAgICAgICAgIHByaXZpbGVnZXM6IFsnYScs J3InLCd3JywnZCcsJ0QnLCd4JywndCddfSksCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2Ny ZWF0ZSddLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICB1bmlxdWVD b2wgOiBbJ2dyYW50ZWUnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xhYmVscycs IGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBsYWJlbHMnKSwgY2FuRWRpdDogZmFsc2UsCisgICAg ICAgICAgbW9kZWw6IHBnQnJvd3Nlci5TZWNMYWJlbE1vZGVsLCBlZGl0YWJsZTogZmFsc2UsIGNh bkFkZDogdHJ1ZSwKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIG1pbl92ZXJzaW9uOiA5 MDEwMCwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGdyb3VwOiAnc2VjdXJp dHknLCBjYW5EZWxldGU6IHRydWUsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAndmFjdXVtX3NldHRpbmdzX3N0cicsIGxhYmVsOiBn ZXR0ZXh0KCdTdG9yYWdlIHNldHRpbmdzJyksCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScs IGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAg ICB9XSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKKyAgICAgICAgICB2YXIg ZXJyID0ge30sCisgICAgICAgICAgICAgIGNoYW5nZWRBdHRycyA9IHRoaXMuY2hhbmdlZCwKKyAg ICAgICAgICAgICAgbXNnID0gdW5kZWZpbmVkLAorICAgICAgICAgICAgICBuYW1lID0gdGhpcy5n ZXQoJ25hbWUnKSwKKyAgICAgICAgICAgICAgc2NoZW1hID0gdGhpcy5nZXQoJ3NjaGVtYScpLAor ICAgICAgICAgICAgICByZWxvd25lciA9IHRoaXMuZ2V0KCdyZWxvd25lcicpLAorICAgICAgICAg ICAgICBpc19wYXJ0aXRpb25lZCA9IHRoaXMuZ2V0KCdpc19wYXJ0aXRpb25lZCcpLAorICAgICAg ICAgICAgICBwYXJ0aXRpb25fa2V5cyA9IHRoaXMuZ2V0KCdwYXJ0aXRpb25fa2V5cycpOworCisg ICAgICAgICAgLy8gSWYgbm90aGluZyB0byB2YWxpZGF0ZSBvciBWYWN1dW1TZXR0aW5nIGtleXMg dGhlbgorICAgICAgICAgIC8vIHJldHVybiBmcm9tIGhlcmUKKyAgICAgICAgICBpZiAoIGtleXMg JiYgKGtleXMubGVuZ3RoID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IF8uaW5kZXhP ZihrZXlzLCAnYXV0b3ZhY3V1bV9lbmFibGVkJykgIT0gLTEKKyAgICAgICAgICAgICAgICAgICAg ICAgIHx8IF8uaW5kZXhPZihrZXlzLCAndG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkJykgIT0gLTEp ICkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgfQorCisgICAgICAgICAg Ly8gSGF2ZSB0byBjbGVhciBleGlzdGluZyB2YWxpZGF0aW9uIGJlZm9yZSBpbml0aWF0aW5nIGN1 cnJlbnQgc3RhdGUgdmFsaWRhdGlvbiBvbmx5CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNs ZWFyKCk7CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSB8fCBfLmlzTnVsbChu YW1lKSB8fAorICAgICAgICAgICAgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAn JykgPT0gJycpIHsKKyAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1RhYmxlIG5hbWUgY2Fubm90 IGJlIGVtcHR5LicpOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbmFtZScsIG1z Zyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0gZWxzZSBpZiAoXy5pc1Vu ZGVmaW5lZChzY2hlbWEpIHx8IF8uaXNOdWxsKHNjaGVtYSkgfHwKKyAgICAgICAgICAgIFN0cmlu ZyhzY2hlbWEpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAg IG1zZyA9IGdldHRleHQoJ1RhYmxlIHNjaGVtYSBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzY2hlbWEnLCBtc2cpOworICAgICAgICAgICAgcmV0 dXJuIG1zZzsKKyAgICAgICAgICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQocmVsb3duZXIpIHx8 IF8uaXNOdWxsKHJlbG93bmVyKSB8fAorICAgICAgICAgICAgU3RyaW5nKHJlbG93bmVyKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0 KCdUYWJsZSBvd25lciBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdyZWxvd25lcicsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAg ICAgICAgIH0gZWxzZSBpZiAoaXNfcGFydGl0aW9uZWQgJiYgdGhpcy5pc05ldygpICYmCisgICAg ICAgICAgICAhXy5pc051bGwocGFydGl0aW9uX2tleXMpICYmIHBhcnRpdGlvbl9rZXlzLmxlbmd0 aCA8PSAwKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBz cGVjaWZ5IGF0IGxlYXN0IG9uZSBrZXkgZm9yIHBhcnRpdGlvbmVkIHRhYmxlLicpOworICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncGFydGl0aW9uX2tleXMnLCBtc2cpOworICAgICAg ICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIG51bGw7Cisg ICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBldmVyeXRoaW5nIGlmIHdlIGFy ZSB1bmRlciBjYXRhbG9nIG5vZGUKKyAgICAgICAgaW5TY2hlbWE6IGZ1bmN0aW9uKCkgeworICAg ICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnY2F0YWxvZycgaW4gdGhpcy5ub2RlX2luZm8p CisgICAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgaXNJbmhlcml0ZWRUYWJs ZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKCFtLmluU2NoZW1hLmFwcGx5KHRoaXMsIFtt XSkpIHsKKyAgICAgICAgICAgIGlmKAorICAgICAgICAgICAgICAoIV8uaXNVbmRlZmluZWQobS5n ZXQoJ2NvbGxfaW5oZXJpdHMnKSkgJiYgbS5nZXQoJ2NvbGxfaW5oZXJpdHMnKS5sZW5ndGggIT0g MCkKKyAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICAgKCFfLmlzVW5kZWZpbmVk KG0uZ2V0KCd0eXBuYW1lJykpICYmIFN0cmluZyhtLmdldCgndHlwbmFtZScpKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpICE9PSAnJykKKyAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAv LyBFaXRoZXIgb2ZfdHlwZXMgb3IgY29sbF9pbmhlcml0cyBoYXMgdmFsdWUKKyAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gT2Z0eXBlIGlzIGRlZmluZWQ/CisgICAgICAg IGNoZWNrSW5oZXJpdGFuY2U6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAvLyBEaXNhYmxlZCBp ZiBpdCBpcyBwYXJ0aXRpb25lZCB0YWJsZQorICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0 aW9uZWQnKSkgeworICAgICAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAg ICAgICAgICBtLnNldCgnY29sbF9pbmhlcml0cycsIFtdKTsKKyAgICAgICAgICAgIH0sIDEwKTsK KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKworICAgICAgICAgIC8vIGNv bGxfaW5oZXJpdHMgfHwgdHlwbmFtZQorICAgICAgICAgIGlmKCFtLmluU2NoZW1hLmFwcGx5KHRo aXMsIFttXSkgJiYKKyAgICAgICAgICAgICAgKCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCd0eXBuYW1l JykpIHx8CisgICAgICAgICAgICAgICAgXy5pc051bGwobS5nZXQoJ3R5cG5hbWUnKSkgfHwKKyAg ICAgICAgICAgICAgICBTdHJpbmcobS5nZXQoJ3R5cG5hbWUnKSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwg ZGlzYWJsZSBMaWtlIGlmIG9mVHlwZSBpcyBkZWZpbmVkCisgICAgICAgIGlzTGlrZURpc2FibGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFw cGx5KHRoaXMsIFttXSkgJiYKKyAgICAgICAgICAgICAgKCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCd0 eXBuYW1lJykpIHx8CisgICAgICAgICAgICAgICAgXy5pc051bGwobS5nZXQoJ3R5cG5hbWUnKSkg fHwKKyAgICAgICAgICAgICAgICBTdHJpbmcobS5nZXQoJ3R5cG5hbWUnKSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIC8vIENo ZWNrIGZvciBjb2x1bW4gZ3JpZCB3aGVuIHRvIEFkZAorICAgICAgICBjaGVja19ncmlkX2FkZF9j b25kaXRpb246IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICB2YXIgZW5hYmxlX2ZsYWcgPSB0cnVl OworICAgICAgICAgIGlmKCFtLmluU2NoZW1hLmFwcGx5KHRoaXMsIFttXSkpIHsKKyAgICAgICAg ICAgIC8vIGlmIG9mX3R5cGUgdGhlbiBkaXNhYmxlIGFkZCBpbiBncmlkCisgICAgICAgICAgICBp ZiAoIV8uaXNVbmRlZmluZWQobS5nZXQoJ3R5cG5hbWUnKSkgJiYKKyAgICAgICAgICAgICAgICAh Xy5pc051bGwobS5nZXQoJ3R5cG5hbWUnKSkgJiYKKyAgICAgICAgICAgICAgICBtLmdldCgndHlw bmFtZScpICE9PSAnJykgeworICAgICAgICAgICAgICAgICAgICBlbmFibGVfZmxhZyA9IGZhbHNl OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGVuYWJs ZV9mbGFnOworICAgICAgICB9LAorICAgICAgICAvLyBDaGVjayBmb3IgY29sdW1uIGdyaWQgd2hl biB0byBlZGl0L2RlbGV0ZSAoZm9yIGVhY2ggcm93KQorICAgICAgICBjaGVja19ncmlkX3Jvd19l ZGl0X2RlbGV0ZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIHZhciBmbGFnID0gdHJ1ZTsKKyAg ICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSAmJgorICAg ICAgICAgICAgICAgIV8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpICYmCisgICAgICAg ICAgICAgICBTdHJpbmcobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSAhPT0gJycpIHsKKyAgICAgICAgICAgIGZsYWcgPSBmYWxzZTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcmV0dXJuIGZsYWc7CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwg ZGlzYWJsZSBpdCBpZiBJbmhlcml0YW5jZSBpcyBkZWZpbmVkCisgICAgICAgIGNoZWNrT2ZUeXBl OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgLy8gRGlzYWJsZWQgaWYgaXQgaXMgcGFydGl0aW9u ZWQgdGFibGUKKyAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAg ICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgbS5zZXQoJ3R5 cG5hbWUnLCB1bmRlZmluZWQpOworICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy9jb2xsX2luaGVyaXRzIHx8IHR5 cG5hbWUKKyAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5KHRoaXMs IFttXSkgJiYKKyAgICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQobS5nZXQoJ2NvbGxfaW5oZXJp dHMnKSkgfHwKKyAgICAgICAgICAgICAgIF8uaXNOdWxsKG0uZ2V0KCdjb2xsX2luaGVyaXRzJykp IHx8CisgICAgICAgICAgICAgICBTdHJpbmcobS5nZXQoJ2NvbGxfaW5oZXJpdHMnKSkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAg IC8vIFdlIHdpbGwgY2hlY2sgaWYgd2UgYXJlIHVuZGVyIHNjaGVtYSBub2RlICYgaW4gJ2NyZWF0 ZScgbW9kZQorICAgICAgICBpblNjaGVtYVdpdGhNb2RlbENoZWNrOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdzY2hlbWEnIGluIHRoaXMubm9kZV9pbmZv KQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFdlIHdpbGwgZGlzYmFsZSBjb250cm9sIGlm IGl0J3MgaW4gJ2VkaXQnIG1vZGUKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkpIHsKKyAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICBpc1RhYmxlQXV0b1ZhY3V1bUVuYWJsZTog ZnVuY3Rpb24obSkgeworICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgYWRkaXRpb25hbCBj b25kaXRpb24gdG8gdG9nZ2xlIGVuYWJsZS9kaXNhYmxlCisgICAgICAgICAgLy8gZm9yIHRhYmxl IGF1dG8tdmFjdXVtCisgICAgICAgICAgaWYoIW0uaW5TY2hlbWEuYXBwbHkodGhpcywgW21dKSAm JgorICAgICAgICAgICAgICBtLmdldCgnYXV0b3ZhY3V1bV9lbmFibGVkJykgPT09IHRydWUpIHsK KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGlzVG9hc3RUYWJsZUF1dG9WYWN1dW1FbmFibGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGFkZGl0aW9uYWwg Y29uZGl0aW9uIHRvIHRvZ2dsZSBlbmFibGUvZGlzYWJsZQorICAgICAgICAgIC8vIGZvciB0b2Fz dCB0YWJsZSBhdXRvLXZhY3V1bQorICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hl Y2suYXBwbHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAgICBtLmdldCgndG9hc3RfYXV0b3Zh Y3V1bV9lbmFibGVkJykgPT0gdHJ1ZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgZmV0 Y2hfY29sdW1uc19hamF4OiBmdW5jdGlvbihhcmcpIHsKKyAgICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCisgICAgICAgICAgICAgIHVybCA9ICdnZXRfY29sdW1ucycsCisgICAgICAgICAgICAgIG0g PSBzZWxmLm1vZGVsLnRvcCB8fCBzZWxmLm1vZGVsLAorICAgICAgICAgICAgICBvbGRfY29sdW1u cyA9IF8uY2xvbmUobS5nZXQoJ2NvbHVtbnMnKSkKKyAgICAgICAgICAgICAgZGF0YSA9IHVuZGVm aW5lZCwKKyAgICAgICAgICAgICAgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScp LAorICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdldCgnbm9kZV9pbmZvJyks CisgICAgICAgICAgICAgIGZ1bGxfdXJsID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAg ICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAgICAgICAgICAgbnVsbCwgdXJsLCB0aGlzLmZp ZWxkLmdldCgnbm9kZV9kYXRhJyksCisgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmdldCgn dXJsX3dpdGhfaWQnKSB8fCBmYWxzZSwgbm9kZV9pbmZvCisgICAgICAgICAgICAgICAgXQorICAg ICAgICAgICAgICApLAorICAgICAgICAgICAgICBjYWNoZV9sZXZlbCA9IHRoaXMuZmllbGQuZ2V0 KCdjYWNoZV9sZXZlbCcpIHx8IG5vZGUudHlwZSwKKyAgICAgICAgICAgICAgY2FjaGVfbm9kZSA9 IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9ub2RlJyk7CisKKyAgICAgICAgICBjYWNoZV9ub2RlID0g KGNhY2hlX25vZGUgJiYgcGdCcm93c2VyLk5vZGVzWydjYWNoZV9ub2RlJ10pIHx8IG5vZGU7CisK KyAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaGluZycsIG0sIHNlbGYuZmll bGQpOworICAgICAgICAgIC8vIEZldGNoaW5nIENvbHVtbnMgZGF0YSBmb3IgdGhlIHNlbGVjdGVk IHRhYmxlLgorICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICBhc3luYzogZmFsc2UsCisg ICAgICAgICAgICB1cmw6IGZ1bGxfdXJsLAorICAgICAgICAgICAgZGF0YTogYXJnLAorICAgICAg ICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgIGRhdGEgPSBjYWNo ZV9ub2RlLmNhY2hlKHVybCwgbm9kZV9pbmZvLCBjYWNoZV9sZXZlbCwgcmVzLmRhdGEpOworICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2g6ZXJyb3InLCBtLCBzZWxmLmZpZWxkKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRt aW46dmlldzpmZXRjaGVkJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgZGF0YSA9IChkYXRh ICYmIGRhdGEuZGF0YSkgfHwgW107CisgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgIH0K KyAgICAgIH0pLAorICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0 YSkgeworICAgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cg Y3JlYXRlIG1lbnUKKyAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQor ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50 cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAgIC8vIFRvIGl0ZXJhdGUgb3Zl ciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisgICAgICAgICAgd2hpbGUgKGkpIHsKKyAgICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHRhYmxl CisgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCisg ICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAoJ2NvbGwtdGFibGUn ID09IGQuX3R5cGUpIHsKKyAgICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxk IG9mIGNhdGFsb2cKKyAgICAgICAgICAgICAgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBh cmVudChpKSA6IG51bGw7CisgICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURh dGEocHJldl9pKSA6IG51bGw7CisgICAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2Nh dGFsb2cnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChp KSA6IG51bGw7CisgICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAg ICAgICAgIH0KKyAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93 IGNyZWF0ZSBtZW51CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9LAorICAgICAgLy8g Q2hlY2sgdG8gd2hldGhlciB0YWJsZSBoYXMgZGlzYWJsZSB0cmlnZ2VyKHMpCisgICAgICBjYW5D cmVhdGVfd2l0aF90cmlnZ2VyX2VuYWJsZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEp IHsKKyAgICAgICAgaWYodGhpcy5jYW5DcmVhdGUuYXBwbHkodGhpcywgW2l0ZW1EYXRhLCBpdGVt LCBkYXRhXSkpIHsKKyAgICAgICAgICAvLyBXZSBhcmUgaGVyZSBtZWFucyB3ZSBjYW4gY3JlYXRl IG1lbnUsIG5vdyBsZXQncyBjaGVjayBjb25kaXRpb24KKyAgICAgICAgICBpZihpdGVtRGF0YS50 aWdnZXJfY291bnQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgfSwKKyAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdGFibGUgaGFzIGVuYWJsZSB0 cmlnZ2VyKHMpCisgICAgICBjYW5DcmVhdGVfd2l0aF90cmlnZ2VyX2Rpc2FibGU6IGZ1bmN0aW9u KGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgIGlmKHRoaXMuY2FuQ3JlYXRlLmFwcGx5 KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0YV0pKSB7CisgICAgICAgICAgLy8gV2UgYXJlIGhl cmUgbWVhbnMgd2UgY2FuIGNyZWF0ZSBtZW51LCBub3cgbGV0J3MgY2hlY2sgY29uZGl0aW9uCisg ICAgICAgICAgaWYoaXRlbURhdGEudGlnZ2VyX2NvdW50ID4gMCAmJiBpdGVtRGF0YS5oYXNfZW5h YmxlX3RyaWdnZXJzID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3Bh cnRpdGlvbiddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvdGVtcGxhdGVzL3J1 bGVzL2pzL3J1bGVzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3RlbXBsYXRlcy9ydWxlcy9qcy9ydWxl cy5qcwppbmRleCAyNWZlOTYzLi5kYjkxYWYzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMv dGVtcGxhdGVzL3J1bGVzL2pzL3J1bGVzLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy90ZW1wbGF0 ZXMvcnVsZXMvanMvcnVsZXMuanMKQEAgLTE2LDYgKzE2LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5v ZGUucnVsZScsIFsKICAgICAgICAgbm9kZTogJ3J1bGUnLAogICAgICAgICBsYWJlbDogZ2V0dGV4 dCgnUnVsZXMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtcnVsZScsCisgICAgICAgIGdldFRyZWVO b2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAg ICAgICBjb2x1bW5zOiBbIm5hbWUiLCAib3duZXIiLCAiY29tbWVudCJdCiAgICAgICB9KTsKICAg fQpAQCAtMzMsOCArMzQsOSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5ydWxlJywgWwogICAgIHJ1 bGUgb3B0aW9uIGluIHRoZSBjb250ZXh0IG1lbnUKICAgICovCiAgIGlmICghcGdCcm93c2VyLk5v ZGVzWydydWxlJ10pIHsKLSAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3J1bGUnXSA9IHBnQWRt aW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3Zp ZXcnXSwKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3J1bGUnXSA9IHBnQnJvd3Nlci5Ob2Rl LmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hp bGRUcmVlTm9kZUhpZXJhcmNoeSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywndmlldycs ICdwYXJ0aXRpb24nXSwKICAgICAgIHR5cGU6ICdydWxlJywKICAgICAgIHNxbEFsdGVySGVscDog J3NxbC1hbHRlcnJ1bGUuaHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXJ1 bGUuaHRtbCcsCkBAIC05OCw2ICsxMDAsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucnVsZScs IFsKICAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogZ2V0 dGV4dCgnUnVsZS4uLicpLAogICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1ydWxlJywg ZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKICAgICAgICAgICBlbmFibGU6 ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcnVsZScs IG5vZGU6ICdwYXJ0aXRpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydv YmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAg ICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiBnZXR0ZXh0KCdS dWxlLi4uJyksCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXJ1bGUnLCBkYXRhOiB7 YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNy ZWF0ZScKICAgICAgICAgfQogICAgICAgICBdKTsKICAgICAgIH0sCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvc3RhdGljL2pzL3BhcnRpdGlvbi51dGlscy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMv cGFydGl0aW9uLnV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVi MWUzYzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3BhcnRpdGlvbi51 dGlscy5qcwpAQCAtMCwwICsxLDMyMyBAQAorZGVmaW5lKAorICAgICAgICBbJ3NvdXJjZXMvZ2V0 dGV4dCcsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdwZ2FkbWluLmJyb3dzZXInLAorICAgICAg ICAnYmFja2Zvcm0nLCdiYWNrZ3JpZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAor ZnVuY3Rpb24oZ2V0dGV4dCwgJCwgXywgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQpIHsK KworICBCYWNrZ3JpZC5QYXJ0aXRpb25Sb3cgPSBCYWNrZ3JpZC5Sb3cuZXh0ZW5kKHsKKyAgICBt b2RlbER1cGxpY2F0ZUNvbG9yOiAibGlnaHRZZWxsb3ciLAorCisgICAgbW9kZWxVbmlxdWVDb2xv cjogIiNmZmYiLAorCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkgeworICAgICAgQmFja2dy aWQuUm93LnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAg ICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICBzZWxmLm1vZGVsLm9uKCJjaGFuZ2U6aXNfYXR0YWNo IiwgZnVuY3Rpb24oKSB7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg ICAgc2VsZi5jb2x1bW5zLmVhY2goZnVuY3Rpb24oY29sKSB7CisgICAgICAgICAgICBpZiAoY29s LmdldCgnbmFtZScpID09ICdwYXJ0aXRpb25fbmFtZScpIHsKKyAgICAgICAgICAgICAgdmFyIGlk eCA9IHNlbGYuY29sdW1ucy5pbmRleE9mKGNvbCksCisgICAgICAgICAgICAgICAgY2YgPSBjb2wu Z2V0KCJjZWxsRnVuY3Rpb24iKSwKKyAgICAgICAgICAgICAgICBjZWxsID0gbmV3IChjZi5hcHBs eShjb2wsIFtzZWxmLm1vZGVsXSkpKHsKKyAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sLAor ICAgICAgICAgICAgICAgICAgbW9kZWw6IHNlbGYubW9kZWwKKyAgICAgICAgICAgICAgICB9KSwK KyAgICAgICAgICAgICAgICAgIG9sZENlbGwgPSBzZWxmLmNlbGxzW2lkeF07CisgICAgICAgICAg ICAgICAgb2xkQ2VsbC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICBzZWxmLmNlbGxzW2lkeF0g PSBjZWxsOworICAgICAgICAgICAgICAgIHNlbGYucmVuZGVyKCk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgfSk7CisgICAgICAgIH0sIDEwKTsKKyAgICAgIH0pOworICAgICAgc2VsZi5saXN0 ZW5UbyhzZWxmLm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOm1vZGVsOmR1cGxpY2F0ZScsIHNlbGYu bW9kZWxEdXBsaWNhdGUpOworICAgICAgc2VsZi5saXN0ZW5UbyhzZWxmLm1vZGVsLCAncGdhZG1p bi1zZXNzaW9uOm1vZGVsOnVuaXF1ZScsIHNlbGYubW9kZWxVbmlxdWUpOworICAgIH0sCisgICAg bW9kZWxEdXBsaWNhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgJCh0aGlzLmVsKS5yZW1vdmVDbGFz cygibmV3Iik7CisgICAgICB0aGlzLmVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubW9k ZWxEdXBsaWNhdGVDb2xvcjsKKyAgICB9LAorICAgIG1vZGVsVW5pcXVlOiBmdW5jdGlvbigpIHsK KyAgICAgIHRoaXMuZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5tb2RlbFVuaXF1ZUNv bG9yOworICAgIH0KKyAgfSk7CisKKyAgdmFyIGdldFBhcnRpdGlvbkNlbGwgPSBmdW5jdGlvbiht b2RlbCkgeworICAgIHZhciBpc19hdHRhY2ggPSBtb2RlbC5nZXQoImlzX2F0dGFjaCIpOworICAg IGlmIChpc19hdHRhY2gpIHsKKyAgICAgIHZhciBvcHRpb25zID0gW107CisgICAgICBtb2RlbC5z ZXQoeydwYXJ0aXRpb25fbmFtZSc6IHVuZGVmaW5lZH0sIHtzaWxlbnQ6dHJ1ZX0pOworICAgICAg Xy5lYWNoKG1vZGVsLnRvcC50YWJsZV9vcHRpb25zLCBmdW5jdGlvbih0KSB7CisgICAgICAgIG9w dGlvbnMucHVzaChbdC5sYWJlbCwgdC52YWx1ZV0pOworICAgICAgfSk7CisgICAgICByZXR1cm4g QmFja2dyaWQuRXh0ZW5zaW9uLlNlbGVjdDJDZWxsLmV4dGVuZCh7b3B0aW9uVmFsdWVzOiBvcHRp b25zfSk7CisKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIEJhY2tncmlkLlN0cmluZ0NlbGw7 CisgICAgfQorICB9OworCisgIEJhY2tmb3JtLlBhcnRpdGlvbktleU1vZGVsID0gcGdCcm93c2Vy Lk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgZGVmYXVsdHM6IHsKKyAgICAgICBrZXlfdHlwZTog J2NvbHVtbicsCisgICAgICAgcHRfY29sdW1uOiB1bmRlZmluZWQsCisgICAgICAgZXhwcmVzc2lv bjogdW5kZWZpbmVkCisgICAgIH0sCisgICAgIGtleXM6WydwdF9jb2x1bW4nXSwKKyAgICAgc2No ZW1hOiBbeworICAgICAgIGlkOiAna2V5X3R5cGUnLCBsYWJlbDonS2V5IHR5cGUnLCB0eXBlOidz ZWxlY3QyJywgZWRpdGFibGU6IHRydWUsCisgICAgICAgY2VsbDonc2VsZWN0MicsIGNlbGxIZWFk ZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yNScsCisgICAgICAgc2VsZWN0Mjoge2FsbG93Q2xl YXI6IGZhbHNlfSwKKyAgICAgICBvcHRpb25zOlt7CisgICAgICAgICBsYWJlbDogJ0NvbHVtbics IHZhbHVlOiAnY29sdW1uJworICAgICAgIH0seworICAgICAgICAgbGFiZWw6ICdFeHByZXNzaW9u JywgdmFsdWU6ICdleHByZXNzaW9uJworICAgICAgIH1dCisgICAgIH0seworICAgICAgIGlkOiAn cHRfY29sdW1uJywgbGFiZWw6IGdldHRleHQoJ0NvbHVtbicpLCB0eXBlOid0ZXh0JywKKyAgICAg ICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uU2VsZWN0MkRlcENlbGwuZXh0ZW5kKHsKKyAgICAg ICAgIGtleVBhdGhBY2Nlc3NvcjogZnVuY3Rpb24ob2JqLCBwYXRoKSB7CisgICAgICAgICAgIHZh ciByZXMgPSBvYmo7CisgICAgICAgICAgIGlmKF8uaXNBcnJheShyZXMpKSB7CisgICAgICAgICAg ICAgcmV0dXJuIF8ubWFwKHJlcywgZnVuY3Rpb24obykgeyByZXR1cm4gb1sncHRfY29sdW1uJ10K KyAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgfQorICAgICAgICAgICBwYXRoID0gcGF0aC5z cGxpdCgnLicpOworICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBp KyspIHsKKyAgICAgICAgICAgICBpZiAoXy5pc051bGwocmVzKSkgcmV0dXJuIG51bGw7CisgICAg ICAgICAgICAgaWYgKF8uaXNFbXB0eShwYXRoW2ldKSkgY29udGludWU7CisgICAgICAgICAgICAg aWYgKCFfLmlzVW5kZWZpbmVkKHJlc1twYXRoW2ldXSkpIHJlcyA9IHJlc1twYXRoW2ldXTsKKyAg ICAgICAgICAgfQorICAgICAgICAgICByZXR1cm4gXy5pc09iamVjdChyZXMpICYmICFfLmlzQXJy YXkocmVzKSA/IG51bGwgOiByZXM7CisgICAgICAgICB9LAorICAgICAgICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24oKSB7CisgICAgICAgICAvLyBIZXJlIHdlIHdpbGwgZGVjaWRlIGlmIHdlIG5lZWQg dG8gY2FsbCBVUkwKKyAgICAgICAgIC8vIE9yIGZldGNoIHRoZSBkYXRhIGZyb20gcGFyZW50IGNv bHVtbnMgY29sbGVjdGlvbgorICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgICAg IGlmKHRoaXMubW9kZWwuaGFuZGxlcikgeworICAgICAgICAgICAgIEJhY2tncmlkLkV4dGVuc2lv bi5TZWxlY3QyRGVwQ2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVu dHMpOworICAgICAgICAgICAgIC8vIERvIG5vdCBsaXN0ZW4gZm9yIGFueSBldmVudChzKSBmb3Ig ZXhpc3RpbmcgY29uc3RyYWludC4KKyAgICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChzZWxm Lm1vZGVsLmdldCgnb2lkJykpKSB7CisgICAgICAgICAgICAgICB2YXIgdGFibGVDb2xzID0gc2Vs Zi5tb2RlbC50b3AuZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgICBzZWxmLmxpc3RlblRv KHRhYmxlQ29scywgJ3JlbW92ZScgLCBzZWxmLnJlc2V0Q29sT3B0aW9ucyk7CisgICAgICAgICAg ICAgICBzZWxmLmxpc3RlblRvKHRhYmxlQ29scywgJ2NoYW5nZTpuYW1lJywgc2VsZi5yZXNldENv bE9wdGlvbnMpOworICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIHNlbGYuY3VzdG9tX29w dGlvbnMoKTsKKyAgICAgICAgICAgfQorICAgICAgICAgfSwKKyAgICAgICAgIHJlc2V0Q29sT3B0 aW9uczogZnVuY3Rpb24obSkgeworICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAg ICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgc2VsZi5jdXN0b21f b3B0aW9ucygpOworICAgICAgICAgICAgIHNlbGYucmVuZGVyLmFwcGx5KHNlbGYpOworICAgICAg ICAgICB9LCA1MCk7CisgICAgICAgICB9LAorICAgICAgICAgY3VzdG9tX29wdGlvbnM6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAvLyBXZSB3aWxsIGFkZCBhbGwgdGhlIGNvbHVtbnMgZW50ZXJl ZCBieSB1c2VyIGluIHRhYmxlIG1vZGVsCisgICAgICAgICAgIHZhciBjb2x1bW5zID0gdGhpcy5t b2RlbC50b3AuZ2V0KCdjb2x1bW5zJyksCisgICAgICAgICAgICAgYWRkZWRfY29sdW1uc19mcm9t X3RhYmxlcyA9IFtdOworCisgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA+IDApIHsKKyAg ICAgICAgICAgICBfLmVhY2goY29sdW1ucy5tb2RlbHMsIGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgICAgICAgdmFyIGNvbCA9IG0uZ2V0KCduYW1lJyk7CisgICAgICAgICAgICAgICAgIGlmKCFf LmlzVW5kZWZpbmVkKGNvbCkgJiYgIV8uaXNOdWxsKGNvbCkpIHsKKyAgICAgICAgICAgICAgICAg ICBhZGRlZF9jb2x1bW5zX2Zyb21fdGFibGVzLnB1c2goCisgICAgICAgICAgICAgICAgICAgICB7 bGFiZWw6IGNvbCwgdmFsdWU6IGNvbCwgaW1hZ2U6J2ljb24tY29sdW1uJ30KKyAgICAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgIH0KKyAgICAgICAgICAgLy8gU2V0IHRoZSB2YWx1ZXMgaW4gdG8gb3B0aW9ucyBzbyB0aGF0 IHVzZXIgY2FuIHNlbGVjdAorICAgICAgICAgICB0aGlzLmNvbHVtbi5zZXQoJ29wdGlvbnMnLCBh ZGRlZF9jb2x1bW5zX2Zyb21fdGFibGVzKTsKKyAgICAgICAgIH0sCisgICAgICAgICByZW1vdmU6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgICBpZih0aGlzLm1vZGVsLmhhbmRsZXIpIHsKKyAgICAg ICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgdGFibGVDb2xzID0gc2VsZi5t b2RlbC50b3AuZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgc2VsZi5zdG9wTGlzdGVuaW5n KHRhYmxlQ29scywgJ3JlbW92ZScgLCBzZWxmLnJlc2V0Q29sT3B0aW9ucyk7CisgICAgICAgICAg ICAgc2VsZi5zdG9wTGlzdGVuaW5nKHRhYmxlQ29scywgJ2NoYW5nZTpuYW1lJyAsIHNlbGYucmVz ZXRDb2xPcHRpb25zKTsKKyAgICAgICAgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uU2VsZWN0MkRl cENlbGwucHJvdG90eXBlLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAg ICB9CisgICAgICAgICB9CisgICAgICAgfSksCisgICAgICAgZGVwczogWydrZXlfdHlwZSddLAor ICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcsCisgICAgICAgdHJh bnNmb3JtIDogZnVuY3Rpb24oZGF0YSl7CisgICAgICAgICB2YXIgcmVzID0gW107CisgICAgICAg ICBpZiAoZGF0YSAmJiBfLmlzQXJyYXkoZGF0YSkpIHsKKyAgICAgICAgICAgXy5lYWNoKGRhdGEs IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgICByZXMucHVzaCh7bGFiZWw6IGQubGFiZWwsIHZh bHVlOiBkLmxhYmVsLCBpbWFnZTonaWNvbi1jb2x1bW4nfSk7CisgICAgICAgICAgIH0pCisgICAg ICAgICB9CisgICAgICAgICByZXR1cm4gcmVzOworICAgICAgIH0sCisgICAgICAgc2VsZWN0Mjp7 YWxsb3dDbGVhcjpmYWxzZX0sCisgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgIGlmIChtLmdldCgna2V5X3R5cGUnKSA9PSAnZXhwcmVzc2lvbicpIHsKKyAgICAgICAgICAg c2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIG0uc2V0KCdwdF9jb2x1bW4n LCB1bmRlZmluZWQpOworICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgIH0KKyAgICAgfSx7 CisgICAgICAgaWQ6ICdleHByZXNzaW9uJywgbGFiZWw6J0V4cHJlc3Npb24nLCB0eXBlOid0ZXh0 JywKKyAgICAgICBjZWxsOkJhY2tncmlkLkV4dGVuc2lvbi5TdHJpbmdEZXBDZWxsLAorICAgICAg IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF80NScsCisgICAgICAgZGVwczogWydr ZXlfdHlwZSddLAorICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICBpZiAo bS5nZXQoJ2tleV90eXBlJykgPT0gJ2NvbHVtbicpIHsKKyAgICAgICAgICAgc2V0VGltZW91dCgg ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIG0uc2V0KCdleHByZXNzaW9uJywgdW5kZWZpbmVk KTsKKyAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICB9CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICB9CisgICAgIH0KKyAgICBdLAorICAg IHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7CisgICAgICB2YXIgY29sX3R5cGUgPSB0aGlzLmdl dCgna2V5X3R5cGUnKSwKKyAgICAgICAgIHB0X2NvbHVtbiA9IHRoaXMuZ2V0KCdwdF9jb2x1bW4n KSwKKyAgICAgICAgIGV4cHJlc3Npb24gPSB0aGlzLmdldCgnZXhwcmVzc2lvbicpOworCisgICAg ICAvLyBIYXZlIHRvIGNsZWFyIGV4aXN0aW5nIHZhbGlkYXRpb24gYmVmb3JlIGluaXRpYXRpbmcg Y3VycmVudCBzdGF0ZQorICAgICAgLy8gdmFsaWRhdGlvbiBvbmx5CisgICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKTsKKworICAgICAgaWYgKF8uaXNVbmRlZmluZWQoY29sX3R5cGUpIHx8IF8u aXNOdWxsKGNvbF90eXBlKSB8fAorICAgICAgICBTdHJpbmcoY29sX3R5cGUpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGFydGl0aW9u IGtleSB0eXBlIGNhbm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNl dCgna2V5X3R5cGUnLCBtc2cpOworICAgICAgICByZXR1cm4gbXNnOworICAgICAgfQorICAgICAg ZWxzZSBpZiAoY29sX3R5cGUgPT0gJ2NvbHVtbicgJiYKKyAgICAgICAgXy5pc1VuZGVmaW5lZChw dF9jb2x1bW4pIHx8IF8uaXNOdWxsKHB0X2NvbHVtbikgfHwKKyAgICAgICAgU3RyaW5nKHB0X2Nv bHVtbikucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICBtc2cgPSBn ZXR0ZXh0KCdQYXJ0aXRpb24ga2V5IGNvbHVtbiBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3B0X2NvbHVtbicsIG1zZyk7CisgICAgICAgIHJldHVybiBt c2c7CisgICAgICB9CisgICAgICBlbHNlIGlmIChjb2xfdHlwZSA9PSAnZXhwcmVzc2lvbicgJiYK KyAgICAgICAgXy5pc1VuZGVmaW5lZChleHByZXNzaW9uKSB8fCBfLmlzTnVsbChleHByZXNzaW9u KSB8fAorICAgICAgICBTdHJpbmcoZXhwcmVzc2lvbikucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQYXJ0aXRpb24ga2V5IGV4cHJlc3Np b24gY2Fubm90IGJlIGVtcHR5LicpOworICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdleHBy ZXNzaW9uJywgbXNnKTsKKyAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgIH0KKworICAgICAgcmV0 dXJuIG51bGw7CisgICAgfQorICB9KTsKKworICBCYWNrZm9ybS5QYXJ0aXRpb25zTW9kZWwgPSBw Z0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICBvaWQ6 IHVuZGVmaW5lZCwKKyAgICAgIGlzX2F0dGFjaDogZmFsc2UsCisgICAgICBwYXJ0aXRpb25fbmFt ZTogdW5kZWZpbmVkLAorICAgICAgdmFsdWVzX2Zyb206IHVuZGVmaW5lZCwKKyAgICAgIHZhbHVl c190bzogdW5kZWZpbmVkLAorICAgICAgdmFsdWVzX2luOiB1bmRlZmluZWQKKyAgICB9LAorICAg IGtleXM6WydwYXJ0aXRpb25fbmFtZSddLAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAnb2lk JywgbGFiZWw6IGdldHRleHQoJ09JRCcpLCB0eXBlOiAndGV4dCcKKyAgICB9LHsKKyAgICAgIGlk OiAnaXNfYXR0YWNoJywgbGFiZWw6Z2V0dGV4dCgnTW9kZScpLCBjZWxsOiAnc3dpdGNoJywKKyAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBvcHRpb25zOiB7ICdvblRleHQnOiAnQXR0YWNoJywgJ29mZlRl eHQnOiAnQ3JlYXRlJ30sCisgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf NScsCisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICBpZiAobSBpbnN0YW5j ZW9mIEJhY2tib25lLk1vZGVsICYmIG0uaXNOZXcoKSAmJiAhbS50b3AuaXNOZXcoKSkKKyAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0s eworICAgICAgaWQ6ICdwYXJ0aXRpb25fbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIHR5 cGU6ICd0ZXh0JywgY2VsbDonc3RyaW5nJywKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lk dGhfcGVyY2VudF8yNScsCisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICBp ZiAobSBpbnN0YW5jZW9mIEJhY2tib25lLk1vZGVsICYmIG0uaXNOZXcoKSkKKyAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfSwgY2VsbEZ1bmN0aW9u OiBnZXRQYXJ0aXRpb25DZWxsCisgICAgfSx7CisgICAgICBpZDogJ3ZhbHVlc19mcm9tJywgbGFi ZWw6J0Zyb20nLCB0eXBlOid0ZXh0JywKKyAgICAgIGNlbGw6QmFja2dyaWQuRXh0ZW5zaW9uLlN0 cmluZ0RlcENlbGwsCisgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAn LAorICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICBpZihtLmhhbmRsZXIgJiYg bS5oYW5kbGVyLnRvcCAmJgorICAgICAgICAgIG0uaGFuZGxlci50b3AuYXR0cmlidXRlcyAmJgor ICAgICAgICAgIG0uaGFuZGxlci50b3AuYXR0cmlidXRlcy5wYXJ0aXRpb25fdHlwZSA9PSAncmFu Z2UnICYmCisgICAgICAgICAgbSBpbnN0YW5jZW9mIEJhY2tib25lLk1vZGVsICYmIG0uaXNOZXco KSkKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9 CisgICAgfSx7CisgICAgICBpZDogJ3ZhbHVlc190bycsIGxhYmVsOidUbycsIHR5cGU6J3RleHQn LAorICAgICAgY2VsbDpCYWNrZ3JpZC5FeHRlbnNpb24uU3RyaW5nRGVwQ2VsbCwKKyAgICAgIGNl bGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcsCisgICAgICBlZGl0YWJsZTogZnVu Y3Rpb24obSkgeworICAgICAgICBpZihtLmhhbmRsZXIgJiYgbS5oYW5kbGVyLnRvcCAmJgorICAg ICAgICAgIG0uaGFuZGxlci50b3AuYXR0cmlidXRlcyAmJgorICAgICAgICAgIG0uaGFuZGxlci50 b3AuYXR0cmlidXRlcy5wYXJ0aXRpb25fdHlwZSA9PSAncmFuZ2UnICYmCisgICAgICAgICAgbSBp bnN0YW5jZW9mIEJhY2tib25lLk1vZGVsICYmIG0uaXNOZXcoKSkKKyAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0seworICAgICAgaWQ6 ICd2YWx1ZXNfaW4nLCBsYWJlbDonSW4nLCB0eXBlOid0ZXh0JywKKyAgICAgIGNlbGw6QmFja2dy aWQuRXh0ZW5zaW9uLlN0cmluZ0RlcENlbGwsCisgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMjUnLAorICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg aWYobS5oYW5kbGVyICYmIG0uaGFuZGxlci50b3AgJiYKKyAgICAgICAgICBtLmhhbmRsZXIudG9w LmF0dHJpYnV0ZXMgJiYKKyAgICAgICAgICBtLmhhbmRsZXIudG9wLmF0dHJpYnV0ZXMucGFydGl0 aW9uX3R5cGUgPT0gJ2xpc3QnICYmCisgICAgICAgICAgbSBpbnN0YW5jZW9mIEJhY2tib25lLk1v ZGVsICYmIG0uaXNOZXcoKSkKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgfQorICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7 CisgICAgICB2YXIgcGFydGl0aW9uX25hbWUgPSB0aGlzLmdldCgncGFydGl0aW9uX25hbWUnKSwK KyAgICAgICAgIHZhbHVlc19mcm9tID0gdGhpcy5nZXQoJ3ZhbHVlc19mcm9tJyksCisgICAgICAg ICB2YWx1ZXNfdG8gPSB0aGlzLmdldCgndmFsdWVzX3RvJyksCisgICAgICAgICB2YWx1ZXNfaW4g PSB0aGlzLmdldCgndmFsdWVzX2luJyk7CisKKyAgICAgIC8vIEhhdmUgdG8gY2xlYXIgZXhpc3Rp bmcgdmFsaWRhdGlvbiBiZWZvcmUgaW5pdGlhdGluZyBjdXJyZW50IHN0YXRlCisgICAgICAvLyB2 YWxpZGF0aW9uIG9ubHkKKyAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworCisgICAgICBp ZiAoXy5pc1VuZGVmaW5lZChwYXJ0aXRpb25fbmFtZSkgfHwgXy5pc051bGwocGFydGl0aW9uX25h bWUpIHx8CisgICAgICAgU3RyaW5nKHBhcnRpdGlvbl9uYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSB7CisgICAgICAgbXNnID0gZ2V0dGV4dCgnUGFydGl0aW9uIG5hbWUgY2Fu bm90IGJlIGVtcHR5LicpOworICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3BhcnRpdGlvbl9u YW1lJywgbXNnKTsKKyAgICAgICByZXR1cm4gbXNnOworICAgICAgfQorCisgICAgICBpZiAodGhp cy50b3AuZ2V0KCdwYXJ0aXRpb25fdHlwZScpID09ICdyYW5nZScpIHsKKyAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQodmFsdWVzX2Zyb20pIHx8IF8uaXNOdWxsKHZhbHVlc19mcm9tKSB8fAorICAg ICAgICAgIFN0cmluZyh2YWx1ZXNfZnJvbSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAn JykgeworICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0ZvciByYW5nZSBwYXJ0aXRpb24gRnJvbSBm aWVsZCBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgn dmFsdWVzX2Zyb20nLCBtc2cpOworICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgIH0gZWxz ZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZXNfdG8pIHx8IF8uaXNOdWxsKHZhbHVlc190bykgfHwK KyAgICAgICAgICBTdHJpbmcodmFsdWVzX3RvKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09 ICcnKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnRm9yIHJhbmdlIHBhcnRpdGlvbiBUbyBm aWVsZCBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgn dmFsdWVzX3RvJywgbXNnKTsKKyAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICB9CisgICAg ICB9IGVsc2UgaWYgKHRoaXMudG9wLmdldCgncGFydGl0aW9uX3R5cGUnKSA9PSAnbGlzdCcpIHsK KyAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWVzX2luKSB8fCBfLmlzTnVsbCh2YWx1ZXNf aW4pIHx8CisgICAgICAgICAgU3RyaW5nKHZhbHVlc19pbikucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJykgeworICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0ZvciBsaXN0IHBhcnRpdGlv biBJbiBmaWVsZCBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnNldCgndmFsdWVzX2luJywgbXNnKTsKKyAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICB9 CisgICAgICB9CisKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfSk7CisKK30pOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMv anMvdGFibGUuanMKaW5kZXggZGJkMTcxZS4uNmY1Y2Q5OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3N0YXRpYy9qcy90YWJsZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCkBA IC0zLDggKzMsMTAgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICd1bmRlcnNj b3JlLnN0cmluZycsICdwZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsCiAg ICdzb3VyY2VzL2FsZXJ0cy9hbGVydGlmeV93cmFwcGVyJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5j b2xsZWN0aW9uJywgJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLAotICAncGdhZG1pbi5ub2RlLmNvbnN0 cmFpbnRzJwotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwg cGdCcm93c2VyLCBhbGVydGlmeSwgQWxlcnRpZnlXcmFwcGVyKSB7CisgICdwZ2FkbWluLm5vZGUu Y29uc3RyYWludHMnLCAncGdhZG1pbi5icm93c2VyLnRhYmxlLnBhcnRpdGlvbi51dGlscycKK10s IGZ1bmN0aW9uKAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dz ZXIsIGFsZXJ0aWZ5LCBBbGVydGlmeVdyYXBwZXIKKykgewogCiAgIGlmICghcGdCcm93c2VyLk5v ZGVzWydjb2xsLXRhYmxlJ10pIHsKICAgICB2YXIgZGF0YWJhc2VzID0gcGdCcm93c2VyLk5vZGVz Wydjb2xsLXRhYmxlJ10gPQpAQCAtMTIsNyArMTQsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50 YWJsZScsIFsKICAgICAgICAgbm9kZTogJ3RhYmxlJywKICAgICAgICAgbGFiZWw6IGdldHRleHQo J1RhYmxlcycpLAogICAgICAgICB0eXBlOiAnY29sbC10YWJsZScsCi0gICAgICAgIGNvbHVtbnM6 IFsnbmFtZScsICdyZWxvd25lcicsICdkZXNjcmlwdGlvbiddLAorICAgICAgICBjb2x1bW5zOiBb J25hbWUnLCAncmVsb3duZXInLCAnaXNfcGFydGl0aW9uZWQnLCAnZGVzY3JpcHRpb24nXSwKICAg ICAgICAgaGFzU3RhdGlzdGljczogdHJ1ZSwKICAgICAgICAgc3RhdHNQcmV0dGlmeUZpZWxkczog WydTaXplJywgJ0luZGV4ZXMgc2l6ZScsICdUYWJsZSBzaXplJywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdUb2FzdCB0YWJsZSBzaXplJywgJ1R1cGxlIGxlbmd0aCcsCkBAIC0yMiw2 ICsyNCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogCiAgIGlmICghcGdCcm93 c2VyLk5vZGVzWyd0YWJsZSddKSB7CiAgICAgcGdCcm93c2VyLk5vZGVzWyd0YWJsZSddID0gcGdC cm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dz ZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ3RhYmxlJywKICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdUYWJsZScpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29s bC10YWJsZScsCkBAIC0zOSw3ICs0Miw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywg WwogICAgICAgaGVpZ2h0OiAnOTUlJywKICAgICAgIHdpZHRoOiAnODUlJywKICAgICAgIEluaXQ6 IGZ1bmN0aW9uKCkgewotICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2Yg bWVudXMgKi8KKyAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVz ICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQogICAgICAgICAgICAgcmV0dXJuOwog CkBAIC0yODQsNyArMjg3LDEwIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAg ICAgICAgIGhhc3RvYXN0dGFibGU6IHRydWUsCiAgICAgICAgICAgdG9hc3RfYXV0b3ZhY3V1bV9l bmFibGVkOiBmYWxzZSwKICAgICAgICAgICBhdXRvdmFjdXVtX2VuYWJsZWQ6IGZhbHNlLAotICAg ICAgICAgIHByaW1hcnlfa2V5OiBbXQorICAgICAgICAgIHByaW1hcnlfa2V5OiBbXSwKKyAgICAg ICAgICBwYXJ0aXRpb25zOiBbXSwKKyAgICAgICAgICBwYXJ0aXRpb25fdHlwZTogJ3JhbmdlJywK KyAgICAgICAgICBpc19wYXJ0aXRpb25lZDogZmFsc2UKICAgICAgICAgfSwKICAgICAgICAgLy8g RGVmYXVsdCB2YWx1ZXMhCiAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdz KSB7CkBAIC0zMzAsMTIgKzMzNiwzNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsK ICAgICAgICAgICAgIHJldHVybiAoIShkICYmIGQubGFiZWwubWF0Y2goL3BnX2dsb2JhbC8pKSkK ICAgICAgICAgICB9CiAgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9uJywgdHlw ZTogJ2dyb3VwJywgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbicpLAorICAgICAgICAgIG1vZGU6 IFsnZWRpdCcsICdjcmVhdGUnXSwgbWluX3ZlcnNpb246IDEwMDAwMCwKKyAgICAgICAgICB2aXNp YmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBBbHdheXMgc2hvdyBpbiBjYXNlIG9m IGNyZWF0ZSBtb2RlCisgICAgICAgICAgICBpZiAobS5pc05ldygpIHx8IG0uZ2V0KCdpc19wYXJ0 aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnaXNfcGFy dGl0aW9uZWQnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb25lZCBUYWJsZT8nKSwgY2VsbDogJ3N3 aXRjaCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcycsICdj cmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZCht Lm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9k ZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2 ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDog ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKCFtLmlzTmV3KCkpCisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAg ICAgICAgfSx7CiAgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdD b21tZW50JyksIHR5cGU6ICdtdWx0aWxpbmUnLAogICAgICAgICAgIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDogJ2luU2NoZW1hJwogICAgICAgICB9LHsK ICAgICAgICAgICBpZDogJ2NvbGxfaW5oZXJpdHMnLCBsYWJlbDogZ2V0dGV4dCgnSW5oZXJpdGVk IGZyb20gdGFibGUocyknKSwKICAgICAgICAgICB1cmw6ICdnZXRfaW5oZXJpdHMnLCB0eXBlOiAn YXJyYXknLCBncm91cDogZ2V0dGV4dCgnQ29sdW1ucycpLAotICAgICAgICAgIGRpc2FibGVkOiAn Y2hlY2tJbmhlcml0YW5jZScsIGRlcHM6IFsndHlwbmFtZSddLAorICAgICAgICAgIGRpc2FibGVk OiAnY2hlY2tJbmhlcml0YW5jZScsIGRlcHM6IFsndHlwbmFtZScsICdpc19wYXJ0aXRpb25lZCdd LAogICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKICAgICAgICAgICBzZWxlY3Qy OiB7IG11bHRpcGxlOiB0cnVlLCBhbGxvd0NsZWFyOiB0cnVlLAogICAgICAgICAgIHBsYWNlaG9s ZGVyOiBnZXR0ZXh0KCdTZWxlY3QgdG8gaW5oZXJpdCBmcm9tLi4uJyl9LApAQCAtNDMyLDcgKzQ2 MywyNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgICAgICBtb2RlbDog cGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXS5tb2RlbCwKICAgICAgICAgICBzdWJub2RlOiBwZ0Jy b3dzZXIuTm9kZXNbJ2NvbHVtbiddLm1vZGVsLAogICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywg J2VkaXQnXSwKLSAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJywgZGVwczogWyd0eXBuYW1l J10sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIElu IGNhc2Ugb2YgcGFydGl0aW9uZWQgdGFibGUgcmVtb3ZlIGluaGVyaXRlZCBjb2x1bW5zCisgICAg ICAgICAgICBpZiAobS5pc05ldygpICYmIG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIGNv bGwgPSBtLmdldCgnY29sdW1ucycpOworICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwu ZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICBpZiAoXy5pc1VuZGVm aW5lZChtb2RlbC5nZXQoJ2luaGVyaXRlZGZyb20nKSkpCisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg ICAgIH0pKTsKKyAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZvKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGRlcHM6 IFsndHlwbmFtZScsICdpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAgIGNhbkFkZDogJ2NoZWNr X2dyaWRfYWRkX2NvbmRpdGlvbicsCiAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRl OiB0cnVlLAogICAgICAgICAgIC8vIEZvciBlYWNoIHJvdyBlZGl0L2RlbGV0ZSBidXR0b24gZW5h YmxlL2Rpc2FibGUKQEAgLTUzNSwxMCArNTg1LDIyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRh YmxlJywgWwogICAgICAgICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3ByaW1hcnlf a2V5J10ubW9kZWwsCiAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxl Y3Rpb24nLAogICAgICAgICAgICAgICBncm91cDogZ2V0dGV4dCgnUHJpbWFyeSBLZXknKSwgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAotICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5E ZWxldGU6IHRydWUsCisgICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1 ZSwgZGVwczpbJ2lzX3BhcnRpdGlvbmVkJ10sCiAgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlx dWUtY29sLWNvbGxlY3Rpb24nLAogICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2Nv bHVtbnMnXSwKLSAgICAgICAgICAgICAgY2FuQWRkOiB0cnVlLAorICAgICAgICAgICAgICBjYW5B ZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlv bmVkJykpIHsKKyAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg ICAgICAgICAgICAgICAgIHZhciBjb2xsID0gbS5nZXQoJ3ByaW1hcnlfa2V5Jyk7CisgICAgICAg ICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0p KTsKKyAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgY2FuQWRkUm93OiBmdW5jdGlvbihtKSB7 CiAgICAgICAgICAgICAgICAvLyBVc2VyIGNhbiBvbmx5IGFkZCBvbmUgcHJpbWFyeSBrZXkKICAg ICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKQEAgLTU1Myw5ICs2 MTUsMjEgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgICAgIHN1 Ym5vZGU6IHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXknXS5tb2RlbCwKICAgICAgICAgICAg ICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCiAgICAgICAgICAgICAgIGdy b3VwOiBnZXR0ZXh0KCdGb3JlaWduIEtleScpLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCi0g ICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICAg ICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBzOlsnaXNfcGFydGl0aW9uZWQn XSwKICAgICAgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCi0gICAg ICAgICAgICAgIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAg ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg ICB2YXIgY29sbCA9IG0uZ2V0KCdmb3JlaWduX2tleScpOworICAgICAgICAgICAgICAgICAgICBj b2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAg ICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg IH0sCiAgICAgICAgICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnLCAnY29sdW1ucyddLAogICAgICAg ICAgICAgICBjYW5BZGRSb3c6IGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgICAgIC8vIFVzZXIg Y2FuIG9ubHkgYWRkIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjb2x1bW4gd2l0aCBuYW1lLgpA QCAtNTY4LDcgKzY0Miw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAg ICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnRzJ10ubW9k ZWwsCiAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAog ICAgICAgICAgICAgICBncm91cDogZ2V0dGV4dCgnQ2hlY2snKSwgbW9kZTogWydlZGl0JywgJ2Ny ZWF0ZSddLAotICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisg ICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpbJ2lzX3Bh cnRpdGlvbmVkJ10sCiAgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rp b24nLAogICAgICAgICAgICAgICBjYW5BZGQ6IHRydWUsCiAgICAgICAgICAgICAgIGNvbHVtbnMg OiBbJ25hbWUnLCAnY29uc3JjJ10KQEAgLTU3OCwxMCArNjUyLDIyIEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnRhYmxlJywgWwogICAgICAgICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNb J3VuaXF1ZV9jb25zdHJhaW50J10ubW9kZWwsCiAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxz ZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAogICAgICAgICAgICAgICBncm91cDogZ2V0dGV4dCgnVW5p cXVlJyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKLSAgICAgICAgICAgICAgY2FuRWRpdDog dHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5E ZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAgICAgICBjb250 cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgY29sdW1ucyA6IFsn bmFtZScsICdjb2x1bW5zJ10sCi0gICAgICAgICAgICAgIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAg ICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdp c19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCd1bmlxdWVfY29uc3Ry YWludCcpOworICAgICAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5j dGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIGNhbkFkZFJv dzogZnVuY3Rpb24obSkgewogICAgICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQgaWYg dGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiB3aXRoIG5hbWUuCiAgICAgICAgICAgICAgICB2 YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CkBAIC01OTMsMTAgKzY3OSwyMiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93 c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddLm1vZGVsLAogICAgICAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgZ3JvdXA6 IGdldHRleHQoJ0V4Y2x1ZGUnKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAotICAgICAgICAg ICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgICAgIGNhbkVk aXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpbJ2lzX3BhcnRpdGlvbmVkJ10sCiAgICAg ICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAogICAgICAgICAgICAg ICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMnLCAnY29uc3RyYWludCddLAotICAgICAgICAg ICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAg ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy IGNvbGwgPSBtLmdldCgnZXhjbHVkZV9jb25zdHJhaW50Jyk7CisgICAgICAgICAgICAgICAgICAg IGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAg ICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgfSwKICAgICAgICAgICAgICAgY2FuQWRkUm93OiBmdW5jdGlvbihtKSB7CiAgICAgICAgICAg ICAgICAvLyBVc2VyIGNhbiBvbmx5IGFkZCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1u IHdpdGggbmFtZS4KICAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMn KTsKQEAgLTYwNyw3ICs3MDUsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAg ICAgICAgICBpZDogJ3R5cG5hbWUnLCBsYWJlbDogZ2V0dGV4dCgnT2YgdHlwZScpLCB0eXBlOiAn dGV4dCcsCiAgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgbW9kZTogWydw cm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCiAgICAgICAgICAgZGlzYWJsZWQ6ICdjaGVj a09mVHlwZScsIHVybDogJ2dldF9vZnR5cGUnLCBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwK LSAgICAgICAgICBkZXBzOiBbJ2NvbGxfaW5oZXJpdHMnXSwgdHJhbnNmb3JtOiBmdW5jdGlvbihk YXRhLCBjZWxsKSB7CisgICAgICAgICAgZGVwczogWydjb2xsX2luaGVyaXRzJywgJ2lzX3BhcnRp dGlvbmVkJ10sIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0YSwgY2VsbCkgewogICAgICAgICAgICAg dmFyIGNvbnRyb2wgPSBjZWxsIHx8IHRoaXMsCiAgICAgICAgICAgICAgIG0gPSBjb250cm9sLm1v ZGVsOwogICAgICAgICAgICAgICBtLm9mX3R5cGVzX3RhYmxlcyA9IGRhdGE7CkBAIC03MTEsMTAg KzgwOSwxODAgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgICBk aXNhYmxlZDogJ2lzTGlrZURpc2FibGUnLCBncm91cDogZ2V0dGV4dCgnTGlrZScpCiAgICAgICAg ICAgfV0KICAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fdHlwZScsIGxhYmVs OmdldHRleHQoJ1BhcnRpdGlvbiBUeXBlJyksCisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0 eXBlOiAnc2VsZWN0MicsIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBmYWxzZX0sCisgICAgICAgICAg Z3JvdXA6ICdwYXJ0aXRpb24nLCBkZXBzOiBbJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAg b3B0aW9uczpbeworICAgICAgICAgICAgbGFiZWw6ICdSYW5nZScsIHZhbHVlOiAncmFuZ2UnCisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBsYWJlbDogJ0xpc3QnLCB2YWx1ZTogJ2xpc3QnCisg ICAgICAgICAgfV0sCisgICAgICAgICAgbW9kZTpbJ2NyZWF0ZSddLAorICAgICAgICAgIHZpc2li bGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9p bmZvKSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAg ICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAg ICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAg ICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg fSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKCFt LmlzTmV3KCkgfHwgIW0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAg IH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9uX2tleXMnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0 aXRpb24gS2V5cycpLAorICAgICAgICAgIG1vZGVsOiBCYWNrZm9ybS5QYXJ0aXRpb25LZXlNb2Rl bCwKKyAgICAgICAgICBzdWJub2RlOiBCYWNrZm9ybS5QYXJ0aXRpb25LZXlNb2RlbCwKKyAgICAg ICAgICBlZGl0YWJsZTogdHJ1ZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3Vw OiAncGFydGl0aW9uJywgbW9kZTogWydjcmVhdGUnXSwKKyAgICAgICAgICBkZXBzOiBbJ2lzX3Bh cnRpdGlvbmVkJywgJ3BhcnRpdGlvbl90eXBlJ10sCisgICAgICAgICAgY2FuRWRpdDogZmFsc2Us IGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjb250cm9sOiAnc3ViLW5vZGUtY29sbGVjdGlv bicsCisgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZiAobS5p c05ldygpICYmIG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAgICAg IGNhbkFkZFJvdzogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBtLmdl dCgnY29sdW1ucycpOworICAgICAgICAgICAgdmFyIG1heF9yb3dfY291bnQgPSAxMDAwOworCisg ICAgICAgICAgICBpZiAobS5nZXQoJ3BhcnRpdGlvbl90eXBlJykgJiYgbS5nZXQoJ3BhcnRpdGlv bl90eXBlJykgPT0gJ2xpc3QnKQorICAgICAgICAgICAgICBtYXhfcm93X2NvdW50ID0gMTsKKwor ICAgICAgICAgICAgcmV0dXJuIChtLmdldCgncGFydGl0aW9uX2tleXMnKSAmJgorICAgICAgICAg ICAgICAgIG0uZ2V0KCdwYXJ0aXRpb25fa2V5cycpLmxlbmd0aCA8IG1heF9yb3dfY291bnQgJiYK KyAgICAgICAgICAgICAgICBfLnNvbWUoY29sdW1ucy5wbHVjaygnbmFtZScpKQorICAgICAgICAg ICAgKTsKKyAgICAgICAgICB9LAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5l ZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0u bm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5z ZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxl ZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKG0uZ2V0KCdwYXJ0aXRpb25fa2V5cycp ICYmIG0uZ2V0KCdwYXJ0aXRpb25fa2V5cycpLm1vZGVscy5sZW5ndGggPiAwKSB7CisgICAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBjb2xs ID0gbS5nZXQoJ3BhcnRpdGlvbl9rZXlzJyk7CisgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUo Y29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgfSwgMTApOworICAgICAg ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRp b25fc2NoZW1lJywgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbiBTY2hlbWUnKSwKKyAgICAgICAg ICB0eXBlOiAnbm90ZScsIGdyb3VwOiAncGFydGl0aW9uJywgbW9kZTogWydlZGl0J10sCisgICAg ICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmlu ZWQobS5ub2RlX2luZm8pICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlcikKKyAg ICAgICAgICAgICAgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24p ICYmCisgICAgICAgICAgICAgIG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDEwMDAwMCkK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgICB9LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICB0aGlzLnRleHQgPSBtLmdldCgn cGFydGl0aW9uX3NjaGVtZScpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRpb25zJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9u cycpLAorICAgICAgICAgIG1vZGVsOiBCYWNrZm9ybS5QYXJ0aXRpb25zTW9kZWwsCisgICAgICAg ICAgc3Vibm9kZTogQmFja2Zvcm0uUGFydGl0aW9uc01vZGVsLAorICAgICAgICAgIGVkaXRhYmxl OiB0cnVlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAgZ3JvdXA6ICdwYXJ0aXRpb24n LCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgZGVwczogWydpc19wYXJ0aXRp b25lZCcsICdwYXJ0aXRpb25fdHlwZSddLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5E ZWxldGU6IHRydWUsCisgICAgICAgICAgY3VzdG9tRGVsZXRlVGl0bGU6IGdldHRleHQoJ0RldGFj aCBQYXJ0aXRpb24nKSwKKyAgICAgICAgICBjdXN0b21EZWxldGVNc2c6IGdldHRleHQoJ0FyZSB5 b3Ugc3VyZSB5b3Ugd2lzaCB0byBkZXRhY2ggdGhpcyBwYXJ0aXRpb24/JyksCisgICAgICAgICAg Y29sdW1uczpbJ2lzX2F0dGFjaCcsICdwYXJ0aXRpb25fbmFtZScsICd2YWx1ZXNfZnJvbScsICd2 YWx1ZXNfdG8nLCAndmFsdWVzX2luJ10sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU3Vi Tm9kZUNvbGxlY3Rpb25Db250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICByb3c6IEJhY2tncmlk LlBhcnRpdGlvblJvdywKKyAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgICBCYWNrZm9ybS5TdWJOb2RlQ29sbGVjdGlvbkNvbnRyb2wucHJvdG90eXBlLmlu aXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgdmFyIHNlbGYg PSB0aGlzOworICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwuaXNOZXcoKSkgeworICAgICAg ICAgICAgICAgIHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAg ICAgICAgICAgICAgICAgIG5vZGVfaW5mbyA9IHRoaXMuZmllbGQuZ2V0KCdub2RlX2luZm8nKTsK KworICAgICAgICAgICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIGdldCB0aGUgdGFibGVzIHRv IGJlIGF0dGFjaGVkCisgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICAg IHVybDogbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAgICAgICAgbm9k ZSwgWworICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgJ2dldF9hdHRhY2hfdGFibGVzJywg dGhpcy5maWVsZC5nZXQoJ25vZGVfZGF0YScpLAorICAgICAgICAgICAgICAgICAgICAgICAgdHJ1 ZSwgbm9kZV9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgXSksCisKKyAgICAgICAgICAgICAg ICAgIHR5cGU6ICdHRVQnLAorICAgICAgICAgICAgICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAg ICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgICAgICAg IGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2Rl bC50YWJsZV9vcHRpb25zID0gcmVzLmRhdGE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxl cnQoCisgICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3IgZmV0Y2hpbmcgdGFibGVzIHRvIGJl IGF0dGFjaGVkJywgcmVzLmRhdGEucmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg ICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBlcnJtc2cg PSAkLnBhcnNlSlNPTihlLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KCdFcnJvciBmZXRjaGluZyB0YWJsZXMgdG8gYmUgYXR0YWNoZWQuJywgZXJybXNn LmVycm9ybXNnKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICApLAor ICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKG0uZ2V0KCdp c19wYXJ0aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5p c1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5k ZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5v ZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAg ICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSAmJiBt LmdldCgncGFydGl0aW9ucycpICYmIG0uZ2V0KCdwYXJ0aXRpb25zJykubW9kZWxzLmxlbmd0aCA+ IDApIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICAgICAgdmFyIGNvbGwgPSBtLmdldCgncGFydGl0aW9ucycpOworICAgICAgICAgICAgICAgIGNv bGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgIH0sIDEw KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlk OiAncGFydGl0aW9uX25vdGUnLCBsYWJlbDogZ2V0dGV4dCgnUGFydGl0aW9uJyksCisgICAgICAg ICAgdHlwZTogJ25vdGUnLCBncm91cDogJ3BhcnRpdGlvbicsCisgICAgICAgICAgdGV4dDogZ2V0 dGV4dCgnQWJvdmUgY29udHJvbCB3aWxsIGJlIHVzZWQgdG8gQ3JlYXRlL0F0dGFjaC9EZXRhY2gg cGFydGl0aW9ucy48YnI+JyArCisgICAgICAgICAgICAnPHVsPjxsaT5DcmVhdGUgTW9kZTogVXNl ciB3aWxsIGJlIGFibGUgdG8gY3JlYXRlIE4gbnVtYmVyIG9mIHBhcnRpdGlvbnMuIE1vZGUgc3dp dGNoIGNvbnRyb2wgaXMgZGlzYWJsZWQgaW4gdGhpcyBzY2VuYXJpby48L2xpPicgKworICAgICAg ICAgICAgJzxsaT5FZGl0IE1vZGU6IFVzZXIgd2lsbCBiZSBhYmxlIHRvIGNyZWF0ZS9hdHRhY2gv ZGV0YWNoIE4gbnVtYmVyIG9mIHBhcnRpdGlvbnMuJyArCisgICAgICAgICAgICAnSW4gYXR0YWNo IG1vZGUgdGhlcmUgd2lsbCBiZSBsaXN0IG9mIHN1aXRhYmxlIHRhYmxlcyB0byBiZSBhdHRhY2hl ZC48L2xpPjwvdWw+JyksCisgICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgaWYoIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8pICYmICFfLmlzVW5kZWZpbmVkKG0u bm9kZV9pbmZvLnNlcnZlcikKKyAgICAgICAgICAgICAgJiYgIV8uaXNVbmRlZmluZWQobS5ub2Rl X2luZm8uc2VydmVyLnZlcnNpb24pICYmCisgICAgICAgICAgICAgIG0ubm9kZV9pbmZvLnNlcnZl ci52ZXJzaW9uID49IDEwMDAwMCkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0sewogICAgICAgICAg IC8vIEhlcmUgLSB3ZSB3aWxsIGNyZWF0ZSB0YWIgY29udHJvbCBmb3Igc3RvcmFnZSBwYXJhbWV0 ZXJzCiAgICAgICAgICAgLy8gKGF1dG8gdmFjdXVtKS4KICAgICAgICAgICB0eXBlOiAnbmVzdGVk JywgY29udHJvbDogJ3RhYicsIGdyb3VwOiBnZXR0ZXh0KCdQYXJhbWV0ZXInKSwKLSAgICAgICAg ICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2Ny ZWF0ZSddLCBkZXBzOiBbJ2lzX3BhcnRpdGlvbmVkJ10sCiAgICAgICAgICAgc2NoZW1hOiBCYWNr Zm9ybS5WYWN1dW1TZXR0aW5nc1NjaGVtYQogICAgICAgICB9LHsKICAgICAgICAgICBpZDogJ3Jl bGFjbF9zdHInLCBsYWJlbDogZ2V0dGV4dCgnUHJpdmlsZWdlcycpLCBkaXNhYmxlZDogJ2luU2No ZW1hJywKQEAgLTc0MSwzNSArMTAwOSw0NiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScs IFsKICAgICAgICAgICAgICAgbXNnID0gdW5kZWZpbmVkLAogICAgICAgICAgICAgICBuYW1lID0g dGhpcy5nZXQoJ25hbWUnKSwKICAgICAgICAgICAgICAgc2NoZW1hID0gdGhpcy5nZXQoJ3NjaGVt YScpLAotICAgICAgICAgICAgICByZWxvd25lciA9IHRoaXMuZ2V0KCdyZWxvd25lcicpOwotCi0g ICAgICAgICAgLy8gSWYgbm90aGluZyB0byB2YWxpZGF0ZSBvciBWYWN1dW1TZXR0aW5nIGtleXMg dGhlbgotICAgICAgICAgIC8vIHJldHVybiBmcm9tIGhlcmUKLSAgICAgICAgICBpZiAoIGtleXMg JiYgKGtleXMubGVuZ3RoID09IDAKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IF8uaW5kZXhP ZihrZXlzLCAnYXV0b3ZhY3V1bV9lbmFibGVkJykgIT0gLTEKLSAgICAgICAgICAgICAgICAgICAg ICAgIHx8IF8uaW5kZXhPZihrZXlzLCAndG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkJykgIT0gLTEp ICkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgfQorICAgICAgICAgICAg ICByZWxvd25lciA9IHRoaXMuZ2V0KCdyZWxvd25lcicpLAorICAgICAgICAgICAgICBpc19wYXJ0 aXRpb25lZCA9IHRoaXMuZ2V0KCdpc19wYXJ0aXRpb25lZCcpLAorICAgICAgICAgICAgICBwYXJ0 aXRpb25fa2V5cyA9IHRoaXMuZ2V0KCdwYXJ0aXRpb25fa2V5cycpOwogCi0gICAgICAgICAgLy8g SGF2ZSB0byBjbGVhciBleGlzdGluZyB2YWxpZGF0aW9uIGJlZm9yZSBpbml0aWF0aW5nIGN1cnJl bnQgc3RhdGUgdmFsaWRhdGlvbiBvbmx5Ci0gICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFy KCk7Ci0KLSAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSB8fCBfLmlzTnVsbChuYW1l KSB8fAotICAgICAgICAgICAgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpIHsKKyAgICAgICAgICBpZiAoCisgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKG5hbWUp IHx8IF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICBTdHJpbmcobmFtZSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJworICAgICAgICAgICkgewogICAgICAgICAgICAgbXNnID0g Z2V0dGV4dCgnVGFibGUgbmFtZSBjYW5ub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKICAgICAgICAgICAgIHJldHVybiBtc2c7Ci0g ICAgICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwgXy5pc051bGwoc2No ZW1hKSB8fAotICAgICAgICAgICAgU3RyaW5nKHNjaGVtYSkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJykgeworICAgICAgICAgIH0KKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ25hbWUnKTsKKyAgICAgICAgICBpZiAoCisgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHNj aGVtYSkgfHwgXy5pc051bGwoc2NoZW1hKSB8fAorICAgICAgICAgICAgU3RyaW5nKHNjaGVtYSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJworICAgICAgICAgICkgewogICAgICAgICAg ICAgbXNnID0gZ2V0dGV4dCgnVGFibGUgc2NoZW1hIGNhbm5vdCBiZSBlbXB0eS4nKTsKICAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NjaGVtYScsIG1zZyk7CiAgICAgICAgICAgICBy ZXR1cm4gbXNnOwotICAgICAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChyZWxvd25lcikg fHwgXy5pc051bGwocmVsb3duZXIpIHx8Ci0gICAgICAgICAgICBTdHJpbmcocmVsb3duZXIpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICB9CisgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnVuc2V0KCdzY2hlbWEnKTsKKyAgICAgICAgICBpZiAoCisgICAgICAg ICAgICBfLmlzVW5kZWZpbmVkKHJlbG93bmVyKSB8fCBfLmlzTnVsbChyZWxvd25lcikgfHwKKyAg ICAgICAgICAgIFN0cmluZyhyZWxvd25lcikucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAn JworICAgICAgICAgICkgewogICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGFibGUgb3duZXIg Y2Fubm90IGJlIGVtcHR5LicpOwogICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncmVs b3duZXInLCBtc2cpOwogICAgICAgICAgICAgcmV0dXJuIG1zZzsKICAgICAgICAgICB9CisgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdyZWxvd25lcicpOworICAgICAgICAgIGlmICgK KyAgICAgICAgICAgIGlzX3BhcnRpdGlvbmVkICYmIHRoaXMuaXNOZXcoKSAmJgorICAgICAgICAg ICAgIV8uaXNOdWxsKHBhcnRpdGlvbl9rZXlzKSAmJiBwYXJ0aXRpb25fa2V5cy5sZW5ndGggPD0g MAorICAgICAgICAgICkgeworICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIHNwZWNp ZnkgYXQgbGVhc3Qgb25lIGtleSBmb3IgcGFydGl0aW9uZWQgdGFibGUuJyk7CisgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwYXJ0aXRpb25fa2V5cycsIG1zZyk7CisgICAgICAgICAg ICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ3BhcnRpdGlvbl9rZXlzJyk7CiAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0s CiAgICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBldmVyeXRoaW5nIGlmIHdlIGFyZSB1bmRlciBj YXRhbG9nIG5vZGUKQEAgLTc5Nyw3ICsxMDc2LDE1IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRh YmxlJywgWwogICAgICAgICB9LAogICAgICAgICAvLyBPZnR5cGUgaXMgZGVmaW5lZD8KICAgICAg ICAgY2hlY2tJbmhlcml0YW5jZTogZnVuY3Rpb24obSkgewotICAgICAgICAgLy8gY29sbF9pbmhl cml0cyB8fCB0eXBuYW1lCisgICAgICAgICAgLy8gRGlzYWJsZWQgaWYgaXQgaXMgcGFydGl0aW9u ZWQgdGFibGUKKyAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAg ICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgbS5zZXQoJ2Nv bGxfaW5oZXJpdHMnLCBbXSk7CisgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBjb2xsX2luaGVyaXRzIHx8IHR5 cG5hbWUKICAgICAgICAgICBpZighbS5pblNjaGVtYS5hcHBseSh0aGlzLCBbbV0pICYmCiAgICAg ICAgICAgICAgICggXy5pc1VuZGVmaW5lZChtLmdldCgndHlwbmFtZScpKSB8fAogICAgICAgICAg ICAgICAgIF8uaXNOdWxsKG0uZ2V0KCd0eXBuYW1lJykpIHx8CkBAIC04NDEsNyArMTEyOCwxNSBA QCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgICAgfSwKICAgICAgICAgLy8g V2Ugd2lsbCBkaXNhYmxlIGl0IGlmIEluaGVyaXRhbmNlIGlzIGRlZmluZWQKICAgICAgICAgY2hl Y2tPZlR5cGU6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgLy9jb2xsX2luaGVyaXRzIHx8IHR5cG5h bWUKKyAgICAgICAgICAvLyBEaXNhYmxlZCBpZiBpdCBpcyBwYXJ0aXRpb25lZCB0YWJsZQorICAg ICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAgICAgc2V0VGlt ZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICBtLnNldCgndHlwbmFtZScsIHVuZGVm aW5lZCk7CisgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICB9CisKKyAgICAgICAgICAvL2NvbGxfaW5oZXJpdHMgfHwgdHlwbmFtZQogICAgICAg ICAgIGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKSAmJgogICAg ICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChtLmdldCgnY29sbF9pbmhlcml0cycpKSB8fAogICAg ICAgICAgICAgICAgXy5pc051bGwobS5nZXQoJ2NvbGxfaW5oZXJpdHMnKSkgfHwKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVzL2F0dGFjaC5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9hdHRhY2guc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NjFkOWMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9hdHRhY2guc3Fs CkBAIC0wLDAgKzEsMiBAQAorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5wYXJlbnRf c2NoZW1hLCBkYXRhLnBhcnRpdGlvbmVkX3RhYmxlX25hbWUpfX0gQVRUQUNIIFBBUlRJVElPTiB7 e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAge3sgZGF0YS5wYXJ0 aXRpb25fdmFsdWUgfX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlv bi9zcWwvMTBfcGx1cy9iYWNrZW5kX3N1cHBvcnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9w YXJ0aXRpb24vc3FsLzEwX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41ZmExZDdlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbApAQCAt MCwwICsxLDkgQEAKK3sjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBwYXJ0aXRpb25lZCB0 YWJsZT09PT09PT09I30KK3slIGlmIHRpZCAlfQorU0VMRUNUCisgICAgQ0FTRSBXSEVOIGMucmVs a2luZCA9ICdwJyBUSEVOIFRydWUgRUxTRSBGYWxzZSBFTkQgQXMgcHRhYmxlCitGUk9NCisgICAg cGdfY2xhc3MgYworV0hFUkUKKyAgICBjLm9pZCA9IHt7IHRpZCB9fTo6b2lkCit7JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMv Y3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVzL2Ny ZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVlOTQwNAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVz L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwzMCBAQAoreyUgaW1wb3J0ICd0YWJsZS9zcWwvbWFjcm9z L2NvbnN0cmFpbnRzLm1hY3JvJyBhcyBDT05TVFJBSU5UUyAlfQoreyM9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFCTEUgVEVNUExB VEUgU1RBUlRTIEhFUkUgPT09PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSN9Cit7IyMjIENSRUFURSBUQUJMRSBTVEFURU1FTlQgRk9SIHBhcnRpdGlv bnMgIyMjfQorQ1JFQVRFIHslIGlmIGRhdGEucmVscGVyc2lzdGVuY2UgJX1VTkxPR0dFRCB7JSBl bmRpZiAlfVRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX17JSBp ZiBkYXRhLnJlbGlzcGFydGl0aW9uIGlzIGRlZmluZWQgYW5kIGRhdGEucmVsaXNwYXJ0aXRpb24g JX0gUEFSVElUSU9OIE9GIHt7Y29ubnxxdElkZW50KGRhdGEucGFyZW50X3NjaGVtYSwgZGF0YS5w YXJ0aXRpb25lZF90YWJsZV9uYW1lKX19eyUgZW5kaWYgJX0KKworeyMgTWFjcm8gdG8gcmVuZGVy IGZvciBjb25zdHJhaW50cyAjfQoreyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9y IGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxl bmd0aCA+IDAgb3IgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5leGNs dWRlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfQorKCB7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5w cmltYXJ5X2tleXxsZW5ndGggPiAwICV9e3tDT05TVFJBSU5UUy5QUklNQVJZX0tFWShjb25uLCBk YXRhLnByaW1hcnlfa2V5WzBdKX19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnVuaXF1ZV9jb25zdHJh aW50fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgJX0seyUg ZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuVU5JUVVFKGNvbm4sIGRhdGEudW5pcXVlX2NvbnN0cmFp bnQpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCAlfXslIGlm IGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxl bmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuRk9SRUlHTl9LRVkoY29ubiwg ZGF0YS5mb3JlaWduX2tleSl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5jaGVja19jb25zdHJhaW50 fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51 bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4g MCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJBSU5UUy5DSEVDSyhjb25uLCBkYXRhLmNoZWNrX2Nv bnN0cmFpbnQpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxlbmd0 aCA+IDAgJX17JSBpZiBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVf Y29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBk YXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJB SU5UUy5FWENMVURFKGNvbm4sIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19eyUgZW5kaWYgJX0K K3slIGlmIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1ZV9jb25zdHJh aW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwIG9yIGRhdGEuY2hl Y2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxlbmd0 aCA+IDAgJX0KKworKQoreyUgZW5kaWYgJX0KKyAgICB7eyBkYXRhLnBhcnRpdGlvbl92YWx1ZSB9 fXslIGlmIGRhdGEuaXNfcGFydGl0aW9uZWQgaXMgZGVmaW5lZCBhbmQgZGF0YS5pc19wYXJ0aXRp b25lZCAlfQorCisgICAgUEFSVElUSU9OIEJZIHt7IGRhdGEucGFydGl0aW9uX3NjaGVtZSB9fXsl IGVuZGlmICV9OworCisKK3sjIyMgQWx0ZXIgU1FMIGZvciBPd25lciAjIyN9Cit7JSBpZiBkYXRh LnJlbG93bmVyICV9CisKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpfX0KKyAgICBPV05FUiB0byB7e2Nvbm58cXRJZGVudChkYXRhLnJlbG93bmVyKX19 OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9u L3NxbC8xMF9wbHVzL2RldGFjaC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9z cWwvMTBfcGx1cy9kZXRhY2guc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjRiNDEzZGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlv bi9zcWwvMTBfcGx1cy9kZXRhY2guc3FsCkBAIC0wLDAgKzEgQEAKK0FMVEVSIFRBQkxFIHt7Y29u bnxxdElkZW50KGRhdGEucGFyZW50X3NjaGVtYSwgZGF0YS5wYXJ0aXRpb25lZF90YWJsZV9uYW1l KX19IERFVEFDSCBQQVJUSVRJT04ge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSl9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9w bHVzL2dldF9hdHRhY2hfdGFibGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9u L3NxbC8xMF9wbHVzL2dldF9hdHRhY2hfdGFibGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40NzZkYzNmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvZ2V0X2F0dGFjaF90YWJsZXMuc3FsCkBAIC0wLDAg KzEsMjMgQEAKK1NFTEVDVCBvaWQsIHF1b3RlX2lkZW50KG5zcG5hbWUpfHwnLid8fHF1b3RlX2lk ZW50KHJlbG5hbWUpIEFTIHRhYmxlX25hbWUgRlJPTQorKFNFTEVDVAorCXIub2lkLCByLnJlbG5h bWUsIG4ubnNwbmFtZSwgYXJyYXlfYWdnKGEuYXR0bmFtZSkgYXR0bmFtZXMsIGFycmF5X2FnZyhh LmF0dHR5cGlkKSBhdHR0eXBlcworRlJPTQorCShTRUxFQ1Qgb2lkLCByZWxuYW1lLCByZWxuYW1l c3BhY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzCisJICBXSEVSRSByZWxraW5kIGluICgncics ICdwJykgQU5EIE5PVCByZWxpc3BhcnRpdGlvbikgcgorICAgIEpPSU4gKFNFTEVDVCBvaWQgQVMg bnNwb2lkLCBuc3BuYW1lIEZST00KKyAgICAgICAgICBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBX SEVSRSBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXyUnKSBuCisgICAgICAgICAgT04gKHIucmVsbmFt ZXNwYWNlID0gbi5uc3BvaWQpCisgICAgSk9JTiAoU0VMRUNUIGF0dHJlbGlkLCBhdHRuYW1lLCBh dHR0eXBpZCBGUk9NCisgICAgICAgICAgcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBPUkRFUiBCWSBhdHRyZWxpZCwgYXR0bnVtKSBhCisgICAgICAgICAgT04gKHIub2lk ID0gYS5hdHRyZWxpZCkKK0dST1VQIEJZIHIub2lkLCByLnJlbG5hbWUsIHIucmVsbmFtZXNwYWNl LCBuLm5zcG5hbWUpIGFsbF90YWJsZXMKK0pPSU4KKyhTRUxFQ1QKKwlhdHRyZWxpZCwgYXJyYXlf YWdnKGF0dG5hbWUpIGF0dG5hbWVzLCBhcnJheV9hZ2coYXR0dHlwaWQpIGF0dHR5cGVzCitGUk9N CisJKFNFTEVDVCAqIEZST00gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUKKwkgIFdIRVJFIGF0dHJl bGlkID0ge3sgdGlkIH19IEFORCBhdHRudW0gPiAwCisJICBPUkRFUiBCWSBhdHRyZWxpZCwgYXR0 bnVtKSBhdHRyaWJ1dGVzCitHUk9VUCBCWSBhdHRyZWxpZCkgY3VycmVudF90YWJsZSBPTiBjdXJy ZW50X3RhYmxlLmF0dHJlbGlkICE9IGFsbF90YWJsZXMub2lkCisgIEFORCBjdXJyZW50X3RhYmxl LmF0dG5hbWVzID0gYWxsX3RhYmxlcy5hdHRuYW1lcworICBBTkQgY3VycmVudF90YWJsZS5hdHR0 eXBlcyA9IGFsbF90YWJsZXMuYXR0dHlwZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9ub2Rl cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9ub2Rlcy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4MjhjZAotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVzL25vZGVz LnNxbApAQCAtMCwwICsxLDE1IEBACitTRUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFt ZSwKKyAgICAoU0VMRUNUIGNvdW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJl bC5vaWQgQU5EIHRnaXNpbnRlcm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisgICAgKFNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0 Z2lzaW50ZXJuYWwgPSBGQUxTRSBBTkQgdGdlbmFibGVkID0gJ08nKSBBUyBoYXNfZW5hYmxlX3Ry aWdnZXJzLAorICAgIHBnX2dldF9leHByKHJlbC5yZWxwYXJ0Ym91bmQsIHJlbC5vaWQpIEFTIHBh cnRpdGlvbl92YWx1ZSwKKyAgICByZWwucmVsbmFtZXNwYWNlIEFTIHNjaGVtYV9pZCwKKyAgICBu c3AubnNwbmFtZSBBUyBzY2hlbWFfbmFtZSwKKyAgICAoQ0FTRSBXSEVOIHJlbC5yZWxraW5kID0g J3AnIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgaXNfcGFydGl0aW9uZWQsCisgICAgKENB U0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHBnX2dldF9wYXJ0a2V5ZGVmKHJlbC5vaWQ6 Om9pZCkgRUxTRSAnJyBFTkQpIEFTIHBhcnRpdGlvbl9zY2hlbWUKK0ZST00KKyAgICAoU0VMRUNU ICogRlJPTSBwZ19pbmhlcml0cyBXSEVSRSBpbmhwYXJlbnQgPSB7eyB0aWQgfX06Om9pZCkgaW5o CisgICAgTEVGVCBKT0lOIHBnX2NsYXNzIHJlbCBPTiBpbmguaW5ocmVsaWQgPSByZWwub2lkCisg ICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gcmVsLnJlbG5hbWVzcGFjZSA9IG5zcC5v aWQKKyAgICBXSEVSRSByZWwucmVsaXNwYXJ0aXRpb24KKyAgICB7JSBpZiBwdGlkICV9IEFORCBy ZWwub2lkID0ge3sgcHRpZCB9fTo6T0lEIHslIGVuZGlmICV9CisgICAgT1JERVIgQlkgcmVsLnJl bG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBf cGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8x MF9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu Ljg1ZjQ0NzYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlv bi9zcWwvMTBfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDgyIEBACitTRUxFQ1QgcmVs Lm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwgcmVsLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLHJl bC5yZWxhY2wgQVMgcmVsYWNsX3N0ciwKKyAgKENBU0UgV0hFTiBsZW5ndGgoc3BjLnNwY25hbWUp ID4gMCBUSEVOIHNwYy5zcGNuYW1lIEVMU0UKKyAgICAoU0VMRUNUIHNwLnNwY25hbWUgRlJPTSBw Z19kYXRhYmFzZSBkdGIKKyAgICBKT0lOIHBnX3RhYmxlc3BhY2Ugc3AgT04gZHRiLmRhdHRhYmxl c3BhY2U9c3Aub2lkCisgICAgV0hFUkUgZHRiLm9pZCA9IHt7IGRpZCB9fTo6b2lkKQorICBFTkQp IGFzIHNwY25hbWUsCisgIChzZWxlY3QgbnNwbmFtZSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBv aWQgPSB7e3NjaWR9fTo6b2lkICkgYXMgcGFyZW50X3NjaGVtYSwKKyAgbnNwLm5zcG5hbWUgYXMg c2NoZW1hLAorICBwZ19nZXRfdXNlcmJ5aWQocmVsLnJlbG93bmVyKSBBUyByZWxvd25lciwgcmVs LnJlbGhhc29pZHMsIHJlbC5yZWxpc3BhcnRpdGlvbiwKKyAgcmVsLnJlbGhhc3N1YmNsYXNzLCBy ZWwucmVsdHVwbGVzLCBkZXMuZGVzY3JpcHRpb24sIGNvbi5jb25uYW1lLCBjb24uY29ua2V5LAor CUVYSVNUUyhzZWxlY3QgMSBGUk9NIHBnX3RyaWdnZXIKKwkJCUpPSU4gcGdfcHJvYyBwdCBPTiBw dC5vaWQ9dGdmb2lkIEFORCBwdC5wcm9uYW1lPSdsb2d0cmlnZ2VyJworCQkJSk9JTiBwZ19wcm9j IHBjIE9OIHBjLnByb25hbWVzcGFjZT1wdC5wcm9uYW1lc3BhY2UgQU5EIHBjLnByb25hbWU9J3Ns b255dmVyc2lvbicKKwkJCVdIRVJFIHRncmVsaWQ9cmVsLm9pZCkgQVMgaXNyZXBsLAorCShTRUxF Q1QgY291bnQoKikgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQ9cmVsLm9pZCBBTkQgdGdp c2ludGVybmFsID0gRkFMU0UpIEFTIHRyaWdnZXJjb3VudCwKKwkoU0VMRUNUIEFSUkFZKFNFTEVD VCBDQVNFIFdIRU4gKG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xfJScpIFRIRU4KKyAgICAgICAgICAg IHF1b3RlX2lkZW50KG5zcG5hbWUpfHwnLid8fHF1b3RlX2lkZW50KGMucmVsbmFtZSkKKyAgICAg ICAgICAgIEVMU0UgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBFTkQgQVMgaW5oZXJpdGVkX3RhYmxl cworICAgIEZST00gcGdfaW5oZXJpdHMgaQorICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9 IGkuaW5ocGFyZW50CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVz cGFjZQorICAgIFdIRVJFIGkuaW5ocmVsaWQgPSByZWwub2lkIE9SREVSIEJZIGluaHNlcW5vKSkg QVMgY29sbF9pbmhlcml0cywKKyAgKFNFTEVDVCBjb3VudCgqKQorCQlGUk9NIHBnX2luaGVyaXRz IGkKKyAgICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGkuaW5ocGFyZW50CisgICAgICBK T0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPWMucmVsbmFtZXNwYWNlCisJCVdIRVJFIGkuaW5o cmVsaWQgPSByZWwub2lkKSBBUyBpbmhlcml0ZWRfdGFibGVzX2NudCwKKwkoQ0FTRSBXSEVOIHJl bC5yZWxwZXJzaXN0ZW5jZSA9ICd1JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHJlbHBl cnNpc3RlbmNlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcs JykgRlJPTSAnZmlsbGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZpbGxmYWN0b3IsCisJKENBU0UgV0hF TiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdh dXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAndHJ1ZScpCisJICBUSEVOIHRydWUg RUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fZW5hYmxlZCwKKwlzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3Ro cmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1 dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScpIEFTIGF1dG92YWN1dW1f dmFjdXVtX3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxv cHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxl X2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9m YWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMgYXV0b3ZhY3V1 bV92YWN1dW1fY29zdF9kZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxv cHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWluX2Fn ZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1 dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX3RhYmxl X2FnZSwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRp b25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSA9ICAndHJ1 ZScpCisJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0X2F1dG92YWN1dW1fZW5h YmxlZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0oWzAt OV0qWy5dWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVt X2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9w dGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rvcj0oWzAtOV0q Wy5dWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisJ c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRv dmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92 YWN1dW1fY29zdF9kZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRp b25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWlu X2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVf bWF4X2FnZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1 dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwKKwlhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlv bnMsICcsJykgQVMgdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwKKwlhcnJheV90b19zdHJpbmco dHN0LnJlbG9wdGlvbnMsICcsJykgQVMgdG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwK KwlyZWwucmVsb3B0aW9ucyBBUyByZWxvcHRpb25zLCB0c3QucmVsb3B0aW9ucyBBUyB0b2FzdF9y ZWxvcHRpb25zLCByZWwucmVsb2Z0eXBlLCB0eXAudHlwbmFtZSwKKwkoQ0FTRSBXSEVOIHJlbC5y ZWx0b2FzdHJlbGlkID0gMCBUSEVOIGZhbHNlIEVMU0UgdHJ1ZSBFTkQpIEFTIGhhc3RvYXN0dGFi bGUsCisgICAgLS0gQWRkZWQgZm9yIHBnQWRtaW40CisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJs ZWQ9KFthLXp8MC05XSopJykpOjpib29sZWFuICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFT IGF1dG92YWN1dW1fY3VzdG9tLAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJp bmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAt OV0qKScpKTo6Ym9vbGVhbiAgQU5EIHJlbC5yZWx0b2FzdHJlbGlkICE9IDAgVEhFTiB0cnVlIEVM U0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAorCisJKFNFTEVDVCBhcnJheV9hZ2co cHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3NlY2xhYmVscyBzbDEgV0hFUkUgc2wx Lm9iam9pZD1yZWwub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgc2VjbGFiZWxzLAorCShDQVNF IFdIRU4gcmVsLm9pZCA8PSB7eyBkYXRsYXN0c3lzb2lkfX06Om9pZCBUSEVOIHRydWUgRWxTRSBm YWxzZSBFTkQpIEFTIGlzX3N5c190YWJsZSwKKwktLSBBZGRlZCBmb3IgcGFydGl0aW9uIHRhYmxl CisJKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQp IEFTIGlzX3BhcnRpdGlvbmVkLAorCShDQVNFIFdIRU4gcmVsLnJlbGtpbmQgPSAncCcgVEhFTiBw Z19nZXRfcGFydGtleWRlZihyZWwub2lkOjpvaWQpIEVMU0UgJycgRU5EKSBBUyBwYXJ0aXRpb25f c2NoZW1lLAorCXslIGlmIHB0aWQgJX0KKwkgIChDQVNFIFdIRU4gcmVsLnJlbGlzcGFydGl0aW9u IFRIRU4gcGdfZ2V0X2V4cHIocmVsLnJlbHBhcnRib3VuZCwge3sgcHRpZCB9fTo6b2lkKSBFTFNF ICcnIEVORCkgQVMgcGFydGl0aW9uX3ZhbHVlLAorCSAgKFNFTEVDVCByZWxuYW1lIEZST00gcGdf Y2xhc3MgV0hFUkUgb2lkID0ge3sgdGlkIH19OjpvaWQpIEFTIHBhcnRpdGlvbmVkX3RhYmxlX25h bWUKKwl7JSBlbHNlICV9CisJICBwZ19nZXRfZXhwcihyZWwucmVscGFydGJvdW5kLCByZWwub2lk KSBBUyBwYXJ0aXRpb25fdmFsdWUKKwl7JSBlbmRpZiAlfQorCitGUk9NIHBnX2NsYXNzIHJlbAor ICBMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9pZD1yZWwucmVsdGFi bGVzcGFjZQorICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jq b2lkPXJlbC5vaWQgQU5EIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNz Jzo6cmVnY2xhc3MpCisgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiBjb24u Y29ucmVsaWQ9cmVsLm9pZCBBTkQgY29uLmNvbnR5cGU9J3AnCisgIExFRlQgT1VURVIgSk9JTiBw Z19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9IHJlbC5yZWx0b2FzdHJlbGlkCisgIExFRlQgSk9JTiBw Z190eXBlIHR5cCBPTiByZWwucmVsb2Z0eXBlPXR5cC5vaWQKKyAgTEVGVCBKT0lOIHBnX2luaGVy aXRzIGluaCBPTiBpbmguaW5ocmVsaWQgPSByZWwub2lkCisgIExFRlQgSk9JTiBwZ19uYW1lc3Bh Y2UgbnNwIE9OIHJlbC5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkCitXSEVSRSByZWwucmVsaXNwYXJ0 aXRpb24gQU5EIGluaC5pbmhwYXJlbnQgPSB7eyB0aWQgfX06Om9pZAoreyUgaWYgcHRpZCAlfSAg QU5EIHJlbC5vaWQgPSB7eyBwdGlkIH19OjpvaWQgeyUgZW5kaWYgJX0KK09SREVSIEJZIHJlbC5y ZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1 cy9hY2wuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9hY2wuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZGY5ZDUKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2FjbC5zcWwKQEAg LTAsMCArMSw0NiBAQAoreyMjIyBTUUwgdG8gZmV0Y2ggcHJpdmlsZWdlcyBmb3IgdGFibGVzcGFj ZSAjIyN9CitTRUxFQ1QgJ3JlbGFjbCcgYXMgZGVmdHlwZSwgQ09BTEVTQ0UoZ3Qucm9sbmFtZSwg J1BVQkxJQycpIGdyYW50ZWUsIGcucm9sbmFtZSBncmFudG9yLAorICAgIGFycmF5X2FnZyhwcml2 aWxlZ2VfdHlwZSkgYXMgcHJpdmlsZWdlcywgYXJyYXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3Jh bnRhYmxlCitGUk9NCisgIChTRUxFQ1QKKyAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19n cmFudGFibGUsCisgICAgQ0FTRSBkLnByaXZpbGVnZV90eXBlCisJCVdIRU4gJ0NPTk5FQ1QnIFRI RU4gJ2MnCisJCVdIRU4gJ0NSRUFURScgVEhFTiAnQycKKwkJV0hFTiAnREVMRVRFJyBUSEVOICdk JworCQlXSEVOICdFWEVDVVRFJyBUSEVOICdYJworCQlXSEVOICdJTlNFUlQnIFRIRU4gJ2EnCisJ CVdIRU4gJ1JFRkVSRU5DRVMnIFRIRU4gJ3gnCisJCVdIRU4gJ1NFTEVDVCcgVEhFTiAncicKKwkJ V0hFTiAnVEVNUE9SQVJZJyBUSEVOICdUJworCQlXSEVOICdUUklHR0VSJyBUSEVOICd0JworCQlX SEVOICdUUlVOQ0FURScgVEhFTiAnRCcKKwkJV0hFTiAnVVBEQVRFJyBUSEVOICd3JworCQlXSEVO ICdVU0FHRScgVEhFTiAnVScKKwkJRUxTRSAnVU5LTk9XTicKKwlFTkQgQVMgcHJpdmlsZWdlX3R5 cGUKKyAgRlJPTQorICAgIChTRUxFQ1QgcmVsLnJlbGFjbAorICAgICAgICBGUk9NIHBnX2NsYXNz IHJlbAorICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMu b2lkPXJlbC5yZWx0YWJsZXNwYWNlCisgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0 cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1yZWwub2lkIEFORCBjb24uY29udHlwZT0ncCcKKyAg ICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVs dG9hc3RyZWxpZAorICAgICAgICAgIExFRlQgSk9JTiBwZ190eXBlIHR5cCBPTiByZWwucmVsb2Z0 eXBlPXR5cC5vaWQKKyAgICAgICAgV0hFUkUgcmVsLnJlbGtpbmQgSU4gKCdyJywncycsJ3QnLCdw JykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19OjpvaWQKKyAgICAgICAgICAgIEFO RCByZWwub2lkID0ge3sgdGlkIH19OjpvaWQKKyAgICApIGFjbCwKKyAgICAoU0VMRUNUIChkKS5n cmFudGVlIEFTIGdyYW50ZWUsIChkKS5ncmFudG9yIEFTIGdyYW50b3IsIChkKS5pc19ncmFudGFi bGUKKyAgICAgICAgQVMgaXNfZ3JhbnRhYmxlLCAoZCkucHJpdmlsZWdlX3R5cGUgQVMgcHJpdmls ZWdlX3R5cGUgRlJPTSAoU0VMRUNUCisgICAgICAgIGFjbGV4cGxvZGUocmVsLnJlbGFjbCkgYXMg ZAorICAgICAgICBGUk9NIHBnX2NsYXNzIHJlbAorICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBw Z190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lkPXJlbC5yZWx0YWJsZXNwYWNlCisgICAgICAgICAg TEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1yZWwub2lk IEFORCBjb24uY29udHlwZT0ncCcKKyAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3Mg dHN0IE9OIHRzdC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICAgICAgICAgIExFRlQgSk9JTiBw Z190eXBlIHR5cCBPTiByZWwucmVsb2Z0eXBlPXR5cC5vaWQKKyAgICAgICAgV0hFUkUgcmVsLnJl bGtpbmQgSU4gKCdyJywncycsJ3QnLCdwJykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lk IH19OjpvaWQKKyAgICAgICAgICAgIEFORCByZWwub2lkID0ge3sgdGlkIH19OjpvaWQKKyAgICAg ICAgKSBhKSBkCisgICAgKSBkCisgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGcgT04g KGQuZ3JhbnRvciA9IGcub2lkKQorICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBndCBP TiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkgZy5yb2xuYW1lLCBndC5yb2xuYW1lCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF9pbmhl cml0cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF9pbmhl cml0cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI4ZjI5OAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvZ2V0 X2luaGVyaXRzLnNxbApAQCAtMCwwICsxLDE3IEBACit7JSBpbXBvcnQgJ3RhYmxlL3NxbC9tYWNy b3MvZGJfY2F0YWxvZ3MubWFjcm8nIGFzIENBVEFMT0cgJX0KK1NFTEVDVCBjLm9pZCwgYy5yZWxu YW1lICwgbnNwbmFtZSwKK0NBU0UgV0hFTiBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXyUnIFRIRU4K KyBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUpCitFTFNF IHF1b3RlX2lkZW50KGMucmVsbmFtZSkKK0VORCBBUyBpbmhlcml0cworRlJPTSBwZ19jbGFzcyBj CitKT0lOIHBnX25hbWVzcGFjZSBuCitPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorV0hFUkUgcmVs a2luZD0ncicgQU5EIE5PVCByZWxpc3BhcnRpdGlvbgoreyUgaWYgbm90IHNob3dfc3lzdGVtX29i amVjdHMgJX0KK3t7IENBVEFMT0cuVkFMSURfQ0FUQUxPR1Moc2VydmVyX3R5cGUpIH19Cit7JSBl bmRpZiAlfQoreyUgaWYgdGlkICV9CitBTkQgYy5vaWQgIT0gdGlkCit7JSBlbmRpZiAlfQorT1JE RVIgQlkgcmVsbmFtZXNwYWNlLCBjLnJlbG5hbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF9v aWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfb2lkLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjMwNjk4Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfb2lkLnNx bApAQCAtMCwwICsxLDUgQEAKK1NFTEVDVCByZWwub2lkIGFzIHRpZAorRlJPTSBwZ19jbGFzcyBy ZWwKK1dIRVJFIHJlbC5yZWxraW5kIElOICgncicsJ3MnLCd0JywncCcpCitBTkQgcmVsLnJlbG5h bWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorQU5EIHJlbC5yZWxuYW1lID0ge3tkYXRhLm5hbWV8 cXRMaXRlcmFsfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF90YWJsZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF90YWJsZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk1MmM4ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvZ2V0X3RhYmxlLnNxbApAQCAtMCwwICsx LDggQEAKK1NFTEVDVAorICAgIHJlbC5yZWxuYW1lIEFTIG5hbWUKK0ZST00KKyAgICBwZ19jbGFz cyByZWwKK1dIRVJFCisgICAgcmVsLnJlbGtpbmQgSU4gKCdyJywncycsJ3QnLCdwJykKKyAgICBB TkQgcmVsLnJlbG5hbWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorICAgIEFORCByZWwub2lkID0g e3sgdGlkIH19OjpvaWQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9ub2Rlcy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mYmY5YzQyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9ub2Rlcy5zcWwKQEAgLTAsMCArMSw5IEBACitT RUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwKKyAgICAoU0VMRUNUIGNvdW50KCop IEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJlbC5vaWQgQU5EIHRnaXNpbnRlcm5hbCA9 IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisgICAgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3Ry aWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSBBTkQg dGdlbmFibGVkID0gJ08nKSBBUyBoYXNfZW5hYmxlX3RyaWdnZXJzLAorICAgIChDQVNFIFdIRU4g cmVsLnJlbGtpbmQgPSAncCcgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBpc19wYXJ0aXRp b25lZAorRlJPTSBwZ19jbGFzcyByZWwKKyAgICBXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdz JywndCcsJ3AnKSBBTkQgcmVsLnJlbG5hbWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorICAgIEFO RCBOT1QgcmVsLnJlbGlzcGFydGl0aW9uCisgICAgeyUgaWYgdGlkICV9IEFORCByZWwub2lkID0g e3t0aWR9fTo6T0lEIHslIGVuZGlmICV9CisgICAgT1JERVIgQlkgcmVsLnJlbG5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL3Byb3BlcnRpZXMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9wcm9wZXJ0aWVzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDU4OWRmCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9wcm9wZXJ0aWVz LnNxbApAQCAtMCwwICsxLDczIEBACitTRUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFt ZSwgcmVsLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLHJlbC5yZWxhY2wgQVMgcmVsYWNsX3N0ciwK KyAgKENBU0UgV0hFTiBsZW5ndGgoc3BjLnNwY25hbWUpID4gMCBUSEVOIHNwYy5zcGNuYW1lIEVM U0UKKyAgICAoU0VMRUNUIHNwLnNwY25hbWUgRlJPTSBwZ19kYXRhYmFzZSBkdGIKKyAgICBKT0lO IHBnX3RhYmxlc3BhY2Ugc3AgT04gZHRiLmRhdHRhYmxlc3BhY2U9c3Aub2lkCisgICAgV0hFUkUg ZHRiLm9pZCA9IHt7IGRpZCB9fTo6b2lkKQorICBFTkQpIGFzIHNwY25hbWUsCisgIChzZWxlY3Qg bnNwbmFtZSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBvaWQgPSB7e3NjaWR9fTo6b2lkICkgYXMg c2NoZW1hLAorICBwZ19nZXRfdXNlcmJ5aWQocmVsLnJlbG93bmVyKSBBUyByZWxvd25lciwgcmVs LnJlbGhhc29pZHMsIHJlbC5yZWxraW5kLAorICAoQ0FTRSBXSEVOIHJlbC5yZWxraW5kID0gJ3An IFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgaXNfcGFydGl0aW9uZWQsCisgIHJlbC5yZWxo YXNzdWJjbGFzcywgcmVsLnJlbHR1cGxlcywgZGVzLmRlc2NyaXB0aW9uLCBjb24uY29ubmFtZSwg Y29uLmNvbmtleSwKKwlFWElTVFMoc2VsZWN0IDEgRlJPTSBwZ190cmlnZ2VyCisJCQlKT0lOIHBn X3Byb2MgcHQgT04gcHQub2lkPXRnZm9pZCBBTkQgcHQucHJvbmFtZT0nbG9ndHJpZ2dlcicKKwkJ CUpPSU4gcGdfcHJvYyBwYyBPTiBwYy5wcm9uYW1lc3BhY2U9cHQucHJvbmFtZXNwYWNlIEFORCBw Yy5wcm9uYW1lPSdzbG9ueXZlcnNpb24nCisJCQlXSEVSRSB0Z3JlbGlkPXJlbC5vaWQpIEFTIGlz cmVwbCwKKwkoU0VMRUNUIGNvdW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJl bC5vaWQgQU5EIHRnaXNpbnRlcm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisJKFNFTEVD VCBBUlJBWShTRUxFQ1QgQ0FTRSBXSEVOIChuc3BuYW1lIE5PVCBMSUtFIEUncGdcXyUnKSBUSEVO CisgICAgICAgICAgICBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJl bG5hbWUpCisgICAgICAgICAgICBFTFNFIHF1b3RlX2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGlu aGVyaXRlZF90YWJsZXMKKyAgICBGUk9NIHBnX2luaGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNz IGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5v aWQ9Yy5yZWxuYW1lc3BhY2UKKyAgICBXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCBPUkRFUiBC WSBpbmhzZXFubykpIEFTIGNvbGxfaW5oZXJpdHMsCisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJP TSBwZ19pbmhlcml0cyBpCisgICAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBh cmVudAorICAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQor CQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCisJ KENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVuY2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2Ug RU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9y LAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpID0gJ3RydWUnKQor CSAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJl c2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBB UyBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNo b2xkPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1f YW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBBUyBhdXRvdmFjdXVtX2Fu YWx5emVfc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9w dGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScp IEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xp bWl0PShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1f ZnJlZXplX21pbl9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAor CXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0 b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21h eF9hZ2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVt X2ZyZWV6ZV90YWJsZV9hZ2UsCisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmlu Zyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05 XSopJykgPSAgJ3RydWUnKQorCSAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9h dXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2Fs ZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9z Y2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9h c3RfYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9m YWN0b3I9KFswLTldKlsuXVswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVfc2Nh bGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcs JykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIHRvYXN0 X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmlu Zyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0 PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1 dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9t aW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykg RlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92 YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVs b3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKikn KSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJYXJyYXlfdG9fc3RyaW5n KHJlbC5yZWxvcHRpb25zLCAnLCcpIEFTIHRhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJYXJy YXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEFTIHRvYXN0X3RhYmxlX3ZhY3V1bV9z ZXR0aW5nc19zdHIsCisJcmVsLnJlbG9wdGlvbnMgQVMgcmVsb3B0aW9ucywgdHN0LnJlbG9wdGlv bnMgQVMgdG9hc3RfcmVsb3B0aW9ucywgcmVsLnJlbG9mdHlwZSwgdHlwLnR5cG5hbWUsCisJKENB U0UgV0hFTiByZWwucmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBB UyBoYXN0b2FzdHRhYmxlLAorICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAorCShDQVNFIFdIRU4g KHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0 b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpKTo6Ym9vbGVhbiAgVEhFTiB0cnVlIEVMU0Ug ZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2N1c3RvbSwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5h YmxlZD0oW2EtenwwLTldKiknKSk6OmJvb2xlYW4gIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAw IFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwKKworCShTRUxF Q1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJlbHMg c2wxIFdIRVJFIHNsMS5vYmpvaWQ9cmVsLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xh YmVscywKKwkoQ0FTRSBXSEVOIHJlbC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgVEhF TiB0cnVlIEVsU0UgZmFsc2UgRU5EKSBBUyBpc19zeXNfdGFibGUKKwktLSBBZGRlZCBmb3IgcGFy dGl0aW9uIHRhYmxlCisgICAgeyUgaWYgdGlkICV9LCAoQ0FTRSBXSEVOIHJlbC5yZWxraW5kID0g J3AnIFRIRU4gcGdfZ2V0X3BhcnRrZXlkZWYoe3sgdGlkIH19OjpvaWQpIEVMU0UgJycgRU5EKSBB UyBwYXJ0aXRpb25fc2NoZW1lIHslIGVuZGlmICV9CitGUk9NIHBnX2NsYXNzIHJlbAorICBMRUZU IE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9pZD1yZWwucmVsdGFibGVzcGFj ZQorICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPXJl bC5vaWQgQU5EIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVn Y2xhc3MpCisgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiBjb24uY29ucmVs aWQ9cmVsLm9pZCBBTkQgY29uLmNvbnR5cGU9J3AnCisgIExFRlQgT1VURVIgSk9JTiBwZ19jbGFz cyB0c3QgT04gdHN0Lm9pZCA9IHJlbC5yZWx0b2FzdHJlbGlkCisgIExFRlQgSk9JTiBwZ190eXBl IHR5cCBPTiByZWwucmVsb2Z0eXBlPXR5cC5vaWQKK1dIRVJFIHJlbC5yZWxraW5kIElOICgncics J3MnLCd0JywncCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6b2lkCitBTkQg Tk9UIHJlbC5yZWxpc3BhcnRpdGlvbgoreyUgaWYgdGlkICV9ICBBTkQgcmVsLm9pZCA9IHt7IHRp ZCB9fTo6b2lkIHslIGVuZGlmICV9CitPUkRFUiBCWSByZWwucmVsbmFtZTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvY3JlYXRlLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvY3JlYXRlLnNxbAppbmRleCBmOGU4NThm Li41ZWM4ZmZjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC9kZWZh dWx0L2NyZWF0ZS5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvZGVmYXVs dC9jcmVhdGUuc3FsCkBAIC01Nyw3ICs1Nyw4IEBAIENSRUFURSB7JSBpZiBkYXRhLnJlbHBlcnNp c3RlbmNlICV9VU5MT0dHRUQgeyUgZW5kaWYgJX1UQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhCiB7 e0NPTlNUUkFJTlRTLkVYQ0xVREUoY29ubiwgZGF0YS5leGNsdWRlX2NvbnN0cmFpbnQpfX17JSBl bmRpZiAlfQogeyUgaWYgZGF0YS5saWtlX3JlbGF0aW9uIG9yIGRhdGEuY29sbF9pbmhlcml0cyBv ciBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAg b3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8 bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4 Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9CiAKLSkKKyl7JSBpZiBkYXRhLnJlbGtpbmQg aXMgZGVmaW5lZCBhbmQgZGF0YS5yZWxraW5kID09ICdwJyAlfSBQQVJUSVRJT04gQlkge3sgZGF0 YS5wYXJ0aXRpb25fc2NoZW1lIH19IHslIGVuZGlmICV9CisKIHslIGVuZGlmICV9CiB7IyMjIElm IHdlIGFyZSBpbmhlcml0aW5nIGl0IGZyb20gYW5vdGhlciB0YWJsZShzKSAjIyN9CiB7JSBpZiBk YXRhLmNvbGxfaW5oZXJpdHMgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFi bGUvc3FsL2RlZmF1bHQvZ2V0X3NjaGVtYV9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZS9zcWwvZGVmYXVsdC9nZXRfc2NoZW1hX29pZC5zcWwKaW5kZXggNGQzMjlkMi4uOGRmODRi NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvZGVmYXVsdC9nZXRf c2NoZW1hX29pZC5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvZGVmYXVs dC9nZXRfc2NoZW1hX29pZC5zcWwKQEAgLTEsOCArMSw5IEBACiB7IyA9PT09PSBmZXRjaCBuZXcg YXNzaWduZWQgc2NoZW1hIG9pZCA9PT09PSAjfQogU0VMRUNUCi0gICAgYy5yZWxuYW1lc3BhY2Ug YXMgc2NpZAorICAgIGMucmVsbmFtZXNwYWNlIGFzIHNjaWQsIG5zcC5uc3BuYW1lIGFzIG5zcG5h bWUKIEZST00KICAgICBwZ19jbGFzcyBjCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiBu c3Aub2lkID0gYy5yZWxuYW1lc3BhY2UKIFdIRVJFCiB7JSBpZiB0aWQgJX0KICAgICBjLm9pZCA9 IHt7dGlkfX06Om9pZDsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlX2Fk ZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlX2FkZC5weQppbmRleCAwNzAzY2JhLi45 ZTQ4NDZjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9hZGQucHkKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfYWRkLnB5CkBAIC0xNCw2ICsxNCw3IEBAIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1h cy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwogZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRp bHMgYXMgXAogICAgIGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNz aW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3Rf dXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKQEAgLTIzLDcgKzI0LDE5IEBAIGNsYXNz IFRhYmxlQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICIiIiBUaGlzIGNsYXNz IHdpbGwgYWRkIG5ldyBjb2xsYXRpb24gdW5kZXIgc2NoZW1hIG5vZGUuICIiIgogICAgIHNjZW5h cmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgdGFibGUgbm9kZS4K LSAgICAgICAgKCdGZXRjaCB0YWJsZSBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci90YWJs ZS9vYmovJykpCisgICAgICAgICgnQ3JlYXRlIFRhYmxlJywgZGljdCh1cmw9Jy9icm93c2VyL3Rh YmxlL29iai8nKSksCisgICAgICAgICgnQ3JlYXRlIFJhbmdlIHBhcnRpdGlvbmVkIHRhYmxlIHdp dGggMiBwYXJ0aXRpb25zJywKKyAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90YWJsZS9vYmov JywKKyAgICAgICAgICAgICAgc2VydmVyX21pbl92ZXJzaW9uPTEwMDAwMCwKKyAgICAgICAgICAg ICAgcGFydGl0aW9uX3R5cGU9J3JhbmdlJworICAgICAgICAgICAgICApCisgICAgICAgICApLAor ICAgICAgICAoJ0NyZWF0ZSBMaXN0IHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggMiBwYXJ0aXRpb25z JywKKyAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90YWJsZS9vYmovJywKKyAgICAgICAgICAg ICAgc2VydmVyX21pbl92ZXJzaW9uPTEwMDAwMCwKKyAgICAgICAgICAgICAgcGFydGl0aW9uX3R5 cGU9J2xpc3QnCisgICAgICAgICAgICAgICkKKyAgICAgICAgICkKICAgICBdCiAKICAgICBkZWYg c2V0VXAoc2VsZik6CkBAIC00Myw2ICs1NiwxOSBAQCBjbGFzcyBUYWJsZUFkZFRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKICAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQg YSB0YWJsZS4iKQogCisgICAgICAgIHNlbGYuaXNfcGFydGl0aW9uID0gRmFsc2UKKyAgICAgICAg aWYgaGFzYXR0cihzZWxmLCAnc2VydmVyX21pbl92ZXJzaW9uJyk6CisgICAgICAgICAgICBzZXJ2 ZXJfY29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVyX2lk KQorICAgICAgICAgICAgaWYgbm90IHNlcnZlcl9jb25bImluZm8iXSA9PSAiU2VydmVyIGNvbm5l Y3RlZC4iOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5l Y3QgdG8gc2VydmVyIHRvIGFkZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw YXJ0aXRpb25lZCB0YWJsZS4iKQorICAgICAgICAgICAgaWYgc2VydmVyX2NvblsiZGF0YSJdWyJ2 ZXJzaW9uIl0gPCBzZWxmLnNlcnZlcl9taW5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICBtZXNz YWdlID0gIlBhcnRpdGlvbmVkIHRhYmxlIGFyZSBub3Qgc3VwcG9ydGVkIGJ5ICIgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAiUFBBUy9QRyAxMC4wIGFuZCBiZWxvdy4iCisgICAgICAgICAg ICAgICAgc2VsZi5za2lwVGVzdChtZXNzYWdlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICBzZWxmLmlzX3BhcnRpdGlvbiA9IFRydWUKKwogICAgIGRlZiBydW5UZXN0KHNlbGYp OgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCB0YWJsZSB1bmRlciBzY2hlbWEg bm9kZS4gIiIiCiAgICAgICAgIGRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5hbWUiXQpAQCAt NjgsNyArOTQsNyBAQCBjbGFzcyBUYWJsZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK ICAgICAgICAgICAgICAgICAgICAgInNlY2xhYmVscyI6IFtdCiAgICAgICAgICAgICAgICAgfSwK ICAgICAgICAgICAgICAgICB7Im5hbWUiOiAiRE9KIiwKLSAgICAgICAgICAgICAgICAgImNsdHlw ZSI6ICJkYXRlW10iLAorICAgICAgICAgICAgICAgICAiY2x0eXBlIjogImRhdGUiLAogICAgICAg ICAgICAgICAgICAiYXR0YWNsIjogW10sCiAgICAgICAgICAgICAgICAgICJpc19wcmltYXJ5X2tl eSI6IEZhbHNlLAogICAgICAgICAgICAgICAgICAiYXR0b3B0aW9ucyI6IFtdLApAQCAtNzYsNyAr MTAyLDcgQEAgY2xhc3MgVGFibGVBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiZXhjbHVkZV9jb25z dHJhaW50IjogW10sCi0gICAgICAgICAgICAiZmlsbGZhY3RvciI6ICIxMSIsCisgICAgICAgICAg ICAiZmlsbGZhY3RvciI6ICIiLAogICAgICAgICAgICAgImhhc3RvYXN0dGFibGUiOiBUcnVlLAog ICAgICAgICAgICAgImxpa2VfY29uc3RyYWludHMiOiBUcnVlLAogICAgICAgICAgICAgImxpa2Vf ZGVmYXVsdF92YWx1ZSI6IFRydWUsCkBAIC0xNjYsNiArMTkyLDM1IEBAIGNsYXNzIFRhYmxlQWRk VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIF0KICAgICAgICAgfQorCisgICAgICAgIGlmIHNlbGYuaXNfcGFydGl0aW9uOgorICAgICAg ICAgICAgZGF0YVsncGFydGl0aW9uX3R5cGUnXSA9IHNlbGYucGFydGl0aW9uX3R5cGUKKyAgICAg ICAgICAgIGRhdGFbJ2lzX3BhcnRpdGlvbmVkJ10gPSBUcnVlCisgICAgICAgICAgICBpZiBzZWxm LnBhcnRpdGlvbl90eXBlID09ICdyYW5nZSc6CisgICAgICAgICAgICAgICAgZGF0YVsncGFydGl0 aW9ucyddID0gXAorICAgICAgICAgICAgICAgICAgICBbeyd2YWx1ZXNfZnJvbSc6ICInMjAxMC0w MS0wMSciLAorICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXNfdG8nOiAiJzIwMTAtMTItMzEn IiwKKyAgICAgICAgICAgICAgICAgICAgICAnaXNfYXR0YWNoJzogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogJ2VtcF8yMDEwJworICAgICAgICAgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICB7J3ZhbHVlc19mcm9tJzogIicyMDExLTAx LTAxJyIsCisgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlc190byc6ICInMjAxMS0xMi0zMSci LAorICAgICAgICAgICAgICAgICAgICAgICdpc19hdHRhY2gnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICAncGFydGl0aW9uX25hbWUnOiAnZW1wXzIwMTEnCisgICAgICAgICAgICAgICAg ICAgICAgfV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YVsncGFydGl0 aW9ucyddID0gXAorICAgICAgICAgICAgICAgICAgICBbeyd2YWx1ZXNfaW4nOiAiJzIwMTItMDEt MDEnLCAnMjAxMi0xMi0zMSciLAorICAgICAgICAgICAgICAgICAgICAgICdpc19hdHRhY2gnOiBG YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAncGFydGl0aW9uX25hbWUnOiAnZW1wXzIwMTIn CisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsndmFsdWVz X2luJzogIicyMDEzLTAxLTAxJywgJzIwMTMtMTItMzEnIiwKKyAgICAgICAgICAgICAgICAgICAg ICAnaXNfYXR0YWNoJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgJ3BhcnRpdGlvbl9u YW1lJzogJ2VtcF8yMDEzJworICAgICAgICAgICAgICAgICAgICAgIH1dCisgICAgICAgICAgICBk YXRhWydwYXJ0aXRpb25fa2V5cyddID0gXAorICAgICAgICAgICAgICAgIFt7J2tleV90eXBlJzog J2NvbHVtbicsICdwdF9jb2x1bW4nOiAnRE9KJ31dCisKICAgICAgICAgIyBBZGQgdGFibGUKICAg ICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KAogICAgICAgICAgICAgc2VsZi51cmwg KyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVzdHMvdGVzdF90YWJsZV9kZWxldGUucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9k ZWxldGUucHkKaW5kZXggMWIyZjlmNS4uOTc0OWZlZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl c3RzL3Rlc3RfdGFibGVfZGVsZXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxl X2RlbGV0ZS5weQpAQCAtMjMsNyArMjMsNyBAQCBjbGFzcyBUYWJsZURlbGV0ZVRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiJUaGlzIGNsYXNzIHdpbGwgZGVsZXRlIG5ldyB0YWJs ZSB1bmRlciBzY2hlbWEgbm9kZS4iIiIKICAgICBzY2VuYXJpb3MgPSBbCiAgICAgICAgICMgRmV0 Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHRhYmxlIG5vZGUuCi0gICAgICAgICgnRmV0Y2ggdGFibGUg Tm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycpKQorICAgICAgICAoJ0Rl bGV0ZSBUYWJsZScsIGRpY3QodXJsPScvYnJvd3Nlci90YWJsZS9vYmovJykpCiAgICAgXQogCiAg ICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFi bGVfcHV0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfcHV0LnB5CmluZGV4IGJmYmY4 ODQuLmVmNDc2ZDcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlX3B1dC5w eQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9wdXQucHkKQEAgLTE0LDYgKzE0LDcg QEAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5z Y2hlbWFzLnRlc3RzIGltcG9ydCBcCiAgICAgdXRpbHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9y dCB1dGlscyBhcyBcCiAgICAgZGF0YWJhc2VfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCiBm cm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJl Z3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20gcmVncmVzc2lvbi5weXRob25f dGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwpAQCAtMjQsNyArMjUsNDkgQEAg Y2xhc3MgVGFibGVVcGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgIiIiVGhp cyBjbGFzcyB3aWxsIGFkZCBuZXcgY29sbGF0aW9uIHVuZGVyIHNjaGVtYSBub2RlLiIiIgogICAg IHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgdGFibGUg bm9kZS4KLSAgICAgICAgKCdGZXRjaCB0YWJsZSBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nl ci90YWJsZS9vYmovJykpCisgICAgICAgICgnVXBkYXRlIFRhYmxlJywgZGljdCh1cmw9Jy9icm93 c2VyL3RhYmxlL29iai8nKSksCisgICAgICAgICgnQ3JlYXRlIHBhcnRpdGlvbnMgb2YgZXhpc3Rp bmcgcmFuZ2UgcGFydGl0aW9uZWQgdGFibGUnLAorICAgICAgICAgZGljdCh1cmw9Jy9icm93c2Vy L3RhYmxlL29iai8nLAorICAgICAgICAgICAgICBzZXJ2ZXJfbWluX3ZlcnNpb249MTAwMDAwLAor ICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZT0ncmFuZ2UnLAorICAgICAgICAgICAgICBtb2Rl PSdjcmVhdGUnCisgICAgICAgICAgICAgICkKKyAgICAgICAgICksCisgICAgICAgICgnQ3JlYXRl IHBhcnRpdGlvbnMgb2YgZXhpc3RpbmcgbGlzdCBwYXJ0aXRpb25lZCB0YWJsZScsCisgICAgICAg ICBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycsCisgICAgICAgICAgICAgIHNlcnZlcl9t aW5fdmVyc2lvbj0xMDAwMDAsCisgICAgICAgICAgICAgIHBhcnRpdGlvbl90eXBlPSdsaXN0JywK KyAgICAgICAgICAgICAgbW9kZT0nY3JlYXRlJworICAgICAgICAgICAgICApCisgICAgICAgICAp LAorICAgICAgICAoJ0RldGFjaCBwYXJ0aXRpb24gZnJvbSBleGlzdGluZyByYW5nZSBwYXJ0aXRp b25lZCB0YWJsZScsCisgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycsCisg ICAgICAgICAgICAgIHNlcnZlcl9taW5fdmVyc2lvbj0xMDAwMDAsCisgICAgICAgICAgICAgIHBh cnRpdGlvbl90eXBlPSdyYW5nZScsCisgICAgICAgICAgICAgIG1vZGU9J2RldGFjaCcKKyAgICAg ICAgICAgICAgKQorICAgICAgICAgKSwKKyAgICAgICAgKCdEZXRhY2ggcGFydGl0aW9uIGZyb20g ZXhpc3RpbmcgbGlzdCBwYXJ0aXRpb25lZCB0YWJsZScsCisgICAgICAgICBkaWN0KHVybD0nL2Jy b3dzZXIvdGFibGUvb2JqLycsCisgICAgICAgICAgICAgIHNlcnZlcl9taW5fdmVyc2lvbj0xMDAw MDAsCisgICAgICAgICAgICAgIHBhcnRpdGlvbl90eXBlPSdsaXN0JywKKyAgICAgICAgICAgICAg bW9kZT0nZGV0YWNoJworICAgICAgICAgICAgICApCisgICAgICAgICApLAorICAgICAgICAoJ0F0 dGFjaCBwYXJ0aXRpb24gdG8gZXhpc3RpbmcgcmFuZ2UgcGFydGl0aW9uZWQgdGFibGUnLAorICAg ICAgICAgZGljdCh1cmw9Jy9icm93c2VyL3RhYmxlL29iai8nLAorICAgICAgICAgICAgICBzZXJ2 ZXJfbWluX3ZlcnNpb249MTAwMDAwLAorICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZT0ncmFu Z2UnLAorICAgICAgICAgICAgICBtb2RlPSdhdHRhY2gnCisgICAgICAgICAgICAgICkKKyAgICAg ICAgICksCisgICAgICAgICgnQXR0YWNoIHBhcnRpdGlvbiB0byBleGlzdGluZyBsaXN0IHBhcnRp dGlvbmVkIHRhYmxlJywKKyAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90YWJsZS9vYmovJywK KyAgICAgICAgICAgICAgc2VydmVyX21pbl92ZXJzaW9uPTEwMDAwMCwKKyAgICAgICAgICAgICAg cGFydGl0aW9uX3R5cGU9J2xpc3QnLAorICAgICAgICAgICAgICBtb2RlPSdhdHRhY2gnCisgICAg ICAgICAgICAgICkKKyAgICAgICAgICkKICAgICBdCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBA IC00NCw5ICs4NywzMSBAQCBjbGFzcyBUYWJsZVVwZGF0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJh dG9yKToKICAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKICAgICAgICAgICAgIHJhaXNl IEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgYSB0YWJsZS4iKQog ICAgICAgICBzZWxmLnRhYmxlX25hbWUgPSAidGVzdF90YWJsZV9wdXRfJXMiICUgKHN0cih1dWlk LnV1aWQ0KCkpWzE6Nl0pCi0gICAgICAgIHNlbGYudGFibGVfaWQgPSB0YWJsZXNfdXRpbHMuY3Jl YXRlX3RhYmxlKHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVfbmFt ZSkKKworICAgICAgICBzZWxmLmlzX3BhcnRpdGlvbiA9IEZhbHNlCisgICAgICAgIGlmIGhhc2F0 dHIoc2VsZiwgJ3NlcnZlcl9taW5fdmVyc2lvbicpOgorICAgICAgICAgICAgc2VydmVyX2NvbiA9 IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAg ICAgICAgIGlmIG5vdCBzZXJ2ZXJfY29uWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoK KyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHNl cnZlciB0byBhZGQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFydGl0aW9u ZWQgdGFibGUuIikKKyAgICAgICAgICAgIGlmIHNlcnZlcl9jb25bImRhdGEiXVsidmVyc2lvbiJd IDwgc2VsZi5zZXJ2ZXJfbWluX3ZlcnNpb246CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJQ YXJ0aXRpb25lZCB0YWJsZSBhcmUgbm90IHN1cHBvcnRlZCBieSAiIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIlBQQVMvUEcgMTAuMCBhbmQgYmVsb3cuIgorICAgICAgICAgICAgICAgIHNl bGYuc2tpcFRlc3QobWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg c2VsZi5pc19wYXJ0aXRpb24gPSBUcnVlCisKKyAgICAgICAgICAgIHNlbGYudGFibGVfaWQgPSB0 YWJsZXNfdXRpbHMuY3JlYXRlX3RhYmxlX2Zvcl9wYXJ0aXRpb24oCisgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAg ICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lLAor ICAgICAgICAgICAgICAgICdwYXJ0aXRpb25lZCcsCisgICAgICAgICAgICAgICAgc2VsZi5wYXJ0 aXRpb25fdHlwZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGFibGVfaWQgPSB0 YWJsZXNfdXRpbHMuY3JlYXRlX3RhYmxlKHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNj aGVtYV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAg ICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhZGRlZCB0YWJsZSB1bmRlciBzY2hlbWEg bm9kZS4iIiIKQEAgLTU0LDEwICsxMTksMTggQEAgY2xhc3MgVGFibGVVcGRhdGVUZXN0Q2FzZShC YXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnRhYmxlX2lkKQogICAgICAgICBpZiBub3QgdGFibGVfcmVzcG9u c2U6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSB0YWJs ZSB0byB1cGRhdGUuIikKLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICJkZXNjcmlwdGlv biI6ICJUaGlzIGlzIHRlc3QgY29tbWVudCBmb3IgdGFibGUiLAotICAgICAgICAgICAgImlkIjog c2VsZi50YWJsZV9pZAotICAgICAgICB9CisKKyAgICAgICAgaWYgc2VsZi5pc19wYXJ0aXRpb246 CisgICAgICAgICAgICBkYXRhID0geyJpZCI6IHNlbGYudGFibGVfaWR9CisgICAgICAgICAgICB0 YWJsZXNfdXRpbHMuc2V0X3BhcnRpdGlvbl9kYXRhKAorICAgICAgICAgICAgICAgIHNlbGYuc2Vy dmVyLCBzZWxmLmRiX25hbWUsIHNlbGYuc2NoZW1hX25hbWUsIHNlbGYudGFibGVfbmFtZSwKKyAg ICAgICAgICAgICAgICBzZWxmLnBhcnRpdGlvbl90eXBlLCBkYXRhLCBzZWxmLm1vZGUpCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0geworICAgICAgICAgICAgICAgICJkZXNjcmlw dGlvbiI6ICJUaGlzIGlzIHRlc3QgY29tbWVudCBmb3IgdGFibGUiLAorICAgICAgICAgICAgICAg ICJpZCI6IHNlbGYudGFibGVfaWQKKyAgICAgICAgICAgIH0KKwogICAgICAgICByZXNwb25zZSA9 IHNlbGYudGVzdGVyLnB1dCgKICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZF Ul9HUk9VUCkgKyAnLycgKwogICAgICAgICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyAr IHN0cihzZWxmLmRiX2lkKSArICcvJyArCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdXRp bHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdXRpbHMucHkKaW5kZXggNDU2ZjAyMC4uMGM3YWVkZSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0 cy91dGlscy5weQpAQCAtODUsMyArODUsMTUzIEBAIGRlZiB2ZXJpZnlfdGFibGUoc2VydmVyLCBk Yl9uYW1lLCB0YWJsZV9pZCk6CiAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgdHJhY2Vi YWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIHJhaXNlCisKKworZGVmIGNy ZWF0ZV90YWJsZV9mb3JfcGFydGl0aW9uKHNlcnZlciwgZGJfbmFtZSwgc2NoZW1hX25hbWUsIHRh YmxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfdHlwZSwgcGFy dGl0aW9uX3R5cGUsIHBhcnRpdGlvbl9uYW1lPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVu Y3Rpb24gY3JlYXRlcyBwYXJ0aXRpb25lZC9wYXJ0aXRpb24vcmVndWxhciB0YWJsZQorICAgIHVu ZGVyIHByb3ZpZGVkIHNjaGVtYS4KKworICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZlciBkZXRhaWxz CisgICAgOnBhcmFtIGRiX25hbWU6IGRhdGFiYXNlIG5hbWUKKyAgICA6cGFyYW0gc2NoZW1hX25h bWU6IHNjaGVtYSBuYW1lCisgICAgOnBhcmFtIHRhYmxlX25hbWU6IHRhYmxlIG5hbWUKKyAgICA6 cGFyYW0gdGFibGVfdHlwZTogcmVndWxhci9wYXJ0aXRpb25lZC9wYXJ0aXRpb24KKyAgICA6cGFy YW0gcGFydGl0aW9uX3R5cGU6IHBhcnRpdGlvbiB0YWJsZSB0eXBlIChyYW5nZS9saXN0KQorICAg IDpwYXJhbSBwYXJ0aXRpb25fbmFtZTogUGFydGl0aW9uIE5hbWUKKyAgICA6cmV0dXJuIHRhYmxl X2lkOiB0YWJsZSBpZAorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IHV0 aWxzLmdldF9kYl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9y dCddKQorICAgICAgICBvbGRfaXNvbGF0aW9uX2xldmVsID0gY29ubmVjdGlvbi5pc29sYXRpb25f bGV2ZWwKKyAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKDApCisgICAgICAg IHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKworICAgICAgICBxdWVyeSA9ICcnCisg ICAgICAgIGlmIHRhYmxlX3R5cGUgPT0gJ3BhcnRpdGlvbmVkJzoKKyAgICAgICAgICAgIGlmIHBh cnRpdGlvbl90eXBlID09ICdyYW5nZSc6CisgICAgICAgICAgICAgICAgcXVlcnkgPSAiQ1JFQVRF IFRBQkxFICVzLiVzKGNvdW50cnkgdGV4dCwgc2FsZXMgYmlnaW50LCAiIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICJzYWxlZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0Uoc2FsZWRhdGUp IiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChzY2hlbWFfbmFtZSwgdGFibGVfbmFtZSkK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcXVlcnkgPSAiQ1JFQVRFIFRBQkxF ICVzLiVzKGNvdW50cnkgdGV4dCwgc2FsZXMgYmlnaW50LCAiIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICJzYWxlZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgTElTVChzYWxlZGF0ZSkiICUgXAor ICAgICAgICAgICAgICAgICAgICAgICAgKHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1lKQorICAgICAg ICBlbGlmIHRhYmxlX3R5cGUgPT0gJ3BhcnRpdGlvbic6CisgICAgICAgICAgICBpZiBwYXJ0aXRp b25fdHlwZSA9PSAncmFuZ2UnOgorICAgICAgICAgICAgICAgIHF1ZXJ5ID0gIkNSRUFURSBUQUJM RSAlcy4lcyBQQVJUSVRJT04gT0YgJXMuJXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAi Rk9SIFZBTFVFUyBGUk9NICgnMjAxMi0wMS0wMScpIFRPICgnMjAxMi0xMi0zMScpIiAlIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgIChzY2hlbWFfbmFtZSwgcGFydGl0aW9uX25hbWUsIHNjaGVt YV9uYW1lLCB0YWJsZV9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBx dWVyeSA9ICJDUkVBVEUgVEFCTEUgJXMuJXMgUEFSVElUSU9OIE9GICVzLiVzICIgXAorICAgICAg ICAgICAgICAgICAgICAgICAgIkZPUiBWQUxVRVMgSU4gKCcyMDEzLTAxLTAxJykiICUgXAorICAg ICAgICAgICAgICAgICAgICAgICAgKHNjaGVtYV9uYW1lLCBwYXJ0aXRpb25fbmFtZSwgc2NoZW1h X25hbWUsIHRhYmxlX25hbWUpCisKKyAgICAgICAgICAgICMgVG8gZmV0Y2ggT0lEIHRhYmxlIG5h bWUgaXMgYWN0dWFsbHkgcGFydGl0aW9uIG5hbWUKKyAgICAgICAgICAgIHRhYmxlX25hbWUgPSBw YXJ0aXRpb25fbmFtZQorICAgICAgICBlbGlmIHRhYmxlX3R5cGUgPT0gJ3JlZ3VsYXInOgorICAg ICAgICAgICAgcXVlcnkgPSAiQ1JFQVRFIFRBQkxFICVzLiVzKGNvdW50cnkgdGV4dCwgc2FsZXMg YmlnaW50LCIgXAorICAgICAgICAgICAgICAgICAgICAic2FsZWRhdGUgZGF0ZSBOT1QgTlVMTCki ICUgKHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1lKQorCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRl KHF1ZXJ5KQorICAgICAgICBjb25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwob2xkX2lzb2xh dGlvbl9sZXZlbCkKKyAgICAgICAgY29ubmVjdGlvbi5jb21taXQoKQorICAgICAgICAjIEdldCAn b2lkJyBmcm9tIG5ld2x5IGNyZWF0ZWQgdGFibGUKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUo InNlbGVjdCBvaWQgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lPSclcyciICUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZSkKKyAgICAgICAgdGFibGUgPSBwZ19jdXJzb3Iu ZmV0Y2hvbmUoKQorICAgICAgICB0YWJsZV9pZCA9ICcnCisgICAgICAgIGlmIHRhYmxlOgorICAg ICAgICAgICAgdGFibGVfaWQgPSB0YWJsZVswXQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkK KyAgICAgICAgcmV0dXJuIHRhYmxlX2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAg dHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHJhaXNlCisKKwor ZGVmIHNldF9wYXJ0aXRpb25fZGF0YShzZXJ2ZXIsIGRiX25hbWUsIHNjaGVtYV9uYW1lLCB0YWJs ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZSwgZGF0YSwgbW9k ZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgcGFydGl0 aW9ucyBkYXRhIG9uIHRoZSBiYXNpcyBvZgorICAgIHBhcnRpdGlvbiB0eXBlIGFuZCBhY3Rpb24u CisKKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2ZXIgZGV0YWlscworICAgIDpwYXJhbSBkYl9uYW1l OiBEYXRhYmFzZSBOYW1lCisgICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBTY2hlbWEgTmFtZQorICAg IDpwYXJhbSB0YWJsZV9uYW1lOiBUYWJsZSBOYW1lCisgICAgOnBhcmFtIHBhcnRpdGlvbl90eXBl OiByYW5nZSBvciBsaXN0CisgICAgOnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0gbW9kZTog Y3JlYXRlL2RldGFjaAorICAgIDpyZXR1cm46CisgICAgIiIiCisKKyAgICBkYXRhWydwYXJ0aXRp b25zJ10gPSBkaWN0KCkKKyAgICBpZiBwYXJ0aXRpb25fdHlwZSA9PSAncmFuZ2UnIGFuZCBtb2Rl ID09ICdjcmVhdGUnOgorICAgICAgICBkYXRhWydwYXJ0aXRpb25zJ10udXBkYXRlKAorICAgICAg ICAgICAgeydhZGRlZCc6IFt7J3ZhbHVlc19mcm9tJzogIicyMDE0LTAxLTAxJyIsCisgICAgICAg ICAgICAgICAgICAgICAgICAndmFsdWVzX3RvJzogIicyMDE0LTEyLTMxJyIsCisgICAgICAgICAg ICAgICAgICAgICAgICAnaXNfYXR0YWNoJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAncGFydGl0aW9uX25hbWUnOiAnc2FsZV8yMDE0J30sCisgICAgICAgICAgICAgICAgICAgICAg IHsndmFsdWVzX2Zyb20nOiAiJzIwMTUtMDEtMDEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICd2YWx1ZXNfdG8nOiAiJzIwMTUtMTItMzEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICdp c19hdHRhY2gnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0aXRpb25fbmFt ZSc6ICdzYWxlXzIwMTUnCisgICAgICAgICAgICAgICAgICAgICAgICB9XQorICAgICAgICAgICAg IH0KKyAgICAgICAgKQorICAgIGVsaWYgcGFydGl0aW9uX3R5cGUgPT0gJ2xpc3QnIGFuZCBtb2Rl ID09ICdjcmVhdGUnOgorICAgICAgICBkYXRhWydwYXJ0aXRpb25zJ10udXBkYXRlKAorICAgICAg ICAgICAgeydhZGRlZCc6IFt7J3ZhbHVlc19pbic6ICInMjAxNi0wMS0wMScsICcyMDE2LTEyLTMx JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAnaXNfYXR0YWNoJzogRmFsc2UsCisgICAgICAg ICAgICAgICAgICAgICAgICAncGFydGl0aW9uX25hbWUnOiAnc2FsZV8yMDE2J30sCisgICAgICAg ICAgICAgICAgICAgICAgIHsndmFsdWVzX2luJzogIicyMDE3LTAxLTAxJywgJzIwMTctMTItMzEn IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICdpc19hdHRhY2gnOiBGYWxzZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdwYXJ0aXRpb25fbmFtZSc6ICdzYWxlXzIwMTcnCisgICAgICAgICAg ICAgICAgICAgICAgICB9XQorICAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgIGVsaWYgcGFy dGl0aW9uX3R5cGUgPT0gJ3JhbmdlJyBhbmQgbW9kZSA9PSAnZGV0YWNoJzoKKyAgICAgICAgcGFy dGl0aW9uX2lkID0gY3JlYXRlX3RhYmxlX2Zvcl9wYXJ0aXRpb24oc2VydmVyLCBkYl9uYW1lLCBz Y2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGVfbmFtZSwgJ3BhcnRpdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbl90eXBlLCAnc2FsZV8yMDEyJykKKyAg ICAgICAgZGF0YVsncGFydGl0aW9ucyddLnVwZGF0ZSgKKyAgICAgICAgICAgIHsnZGVsZXRlZCc6 IFt7J29pZCc6IHBhcnRpdGlvbl9pZH1dCisgICAgICAgICAgICAgfQorICAgICAgICApCisgICAg ZWxpZiBwYXJ0aXRpb25fdHlwZSA9PSAnbGlzdCcgYW5kIG1vZGUgPT0gJ2RldGFjaCc6CisgICAg ICAgIHBhcnRpdGlvbl9pZCA9IGNyZWF0ZV90YWJsZV9mb3JfcGFydGl0aW9uKHNlcnZlciwgZGJf bmFtZSwgc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhYmxlX25hbWUsICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZSwgJ3NhbGVfMjAx MycpCisgICAgICAgIGRhdGFbJ3BhcnRpdGlvbnMnXS51cGRhdGUoCisgICAgICAgICAgICB7J2Rl bGV0ZWQnOiBbeydvaWQnOiBwYXJ0aXRpb25faWR9XQorICAgICAgICAgICAgIH0KKyAgICAgICAg KQorICAgIGVsaWYgcGFydGl0aW9uX3R5cGUgPT0gJ3JhbmdlJyBhbmQgbW9kZSA9PSAnYXR0YWNo JzoKKyAgICAgICAgcGFydGl0aW9uX2lkID0gY3JlYXRlX3RhYmxlX2Zvcl9wYXJ0aXRpb24oc2Vy dmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2F0dGFjaF9zYWxlXzIwMTAnLCAncmVndWxhcicsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbl90 eXBlKQorICAgICAgICBkYXRhWydwYXJ0aXRpb25zJ10udXBkYXRlKAorICAgICAgICAgICAgeydh ZGRlZCc6IFt7J3ZhbHVlc19mcm9tJzogIicyMDEwLTAxLTAxJyIsCisgICAgICAgICAgICAgICAg ICAgICAgICAndmFsdWVzX3RvJzogIicyMDEwLTEyLTMxJyIsCisgICAgICAgICAgICAgICAgICAg ICAgICAnaXNfYXR0YWNoJzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0aXRp b25fbmFtZSc6IHBhcnRpdGlvbl9pZAorICAgICAgICAgICAgICAgICAgICAgICAgfV0KKyAgICAg ICAgICAgICB9CisgICAgICAgICkKKyAgICBlbGlmIHBhcnRpdGlvbl90eXBlID09ICdsaXN0JyBh bmQgbW9kZSA9PSAnYXR0YWNoJzoKKyAgICAgICAgcGFydGl0aW9uX2lkID0gY3JlYXRlX3RhYmxl X2Zvcl9wYXJ0aXRpb24oc2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dGFjaF9zYWxlXzIwMTEn LCAncmVndWxhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhcnRpdGlvbl90eXBlKQorICAgICAgICBkYXRhWydwYXJ0aXRpb25zJ10udXBkYXRl KAorICAgICAgICAgICAgeydhZGRlZCc6IFt7J3ZhbHVlc19pbic6ICInMjAxMS0wMS0wMSciLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2F0dGFjaCc6IFRydWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAncGFydGl0aW9uX25hbWUnOiBwYXJ0aXRpb25faWQKKyAgICAgICAgICAgICAg ICAgICAgICAgIH1dCisgICAgICAgICAgICAgfQorICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdHJpZ2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvanMvdHJpZ2dlci5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90cmlnZ2Vycy90ZW1wbGF0ZXMvdHJpZ2dlci9qcy90cmlnZ2VyLmpzCmluZGV4IDE2MjNmZTUu Ljg3ZjFlYjMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy90ZW1wbGF0ZXMvdHJpZ2dl ci9qcy90cmlnZ2VyLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy90ZW1wbGF0ZXMvdHJpZ2dl ci9qcy90cmlnZ2VyLmpzCkBAIC0zMCwxMyArMzAsMTUgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUu dHJpZ2dlcicsIFsKICAgICAgICAgbm9kZTogJ3RyaWdnZXInLAogICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnVHJpZ2dlcnMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtdHJpZ2dlcicsCisgICAgICAg IGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFy Y2h5LAogICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXQogICAgICAgfSk7 CiAgIH07CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3RyaWdnZXInXSkgewotICAgIHBnQWRt aW4uQnJvd3Nlci5Ob2Rlc1sndHJpZ2dlciddID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuZXh0ZW5k KHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnXSwKKyAgICBwZ0FkbWluLkJy b3dzZXIuTm9kZXNbJ3RyaWdnZXInXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBn ZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNo eSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnLCAncGFydGl0aW9uJ10sCiAg ICAgICBjb2xsZWN0aW9uX3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAg IHR5cGU6ICd0cmlnZ2VyJywKICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUcmlnZ2VyJyksCkBAIC03 Miw2ICs3NCwxMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyJywgWwogICAgICAgICAg IGljb246ICd3Y1RhYkljb24gaWNvbi10cmlnZ2VyJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScs IGNoZWNrOiB0cnVlfSwKICAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCiAgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfdHJpZ2dlcl9vblBhcnRpdGlvbicsIG5vZGU6ICdw YXJ0aXRpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiBnZXR0ZXh0KCdUcmlnZ2VyLi4u JyksCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXRyaWdnZXInLCBkYXRhOiB7YWN0 aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0 ZScKKyAgICAgICAgfSx7CiAgICAgICAgICAgbmFtZTogJ2VuYWJsZV90cmlnZ2VyJywgbm9kZTog J3RyaWdnZXInLCBtb2R1bGU6IHRoaXMsCiAgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ2VuYWJsZV90cmlnZ2VyJywKICAgICAgICAgICBjYXRlZ29y eTogJ2Nvbm5lY3QnLCBwcmlvcml0eTogMywgbGFiZWw6IGdldHRleHQoJ0VuYWJsZSB0cmlnZ2Vy JyksCkBAIC0yMDYsNiArMjE0LDE3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBb CiAgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMnXSwKICAgICAg ICAgICBkZXBzOiBbJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlciddLAogICAgICAgICAgIGRpc2FibGVk OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBEaXNhYmxlZCBpZiB0YWJsZSBpcyBhIHBh cnRpdGlvbmVkIHRhYmxlLgorICAgICAgICAgICAgaWYgKF8uaGFzKG0sICdub2RlX2luZm8nKSAm JiBfLmhhcyhtLm5vZGVfaW5mbywgJ3RhYmxlJykgJiYKKyAgICAgICAgICAgICAgICBfLmhhcyht Lm5vZGVfaW5mby50YWJsZSwgJ2lzX3BhcnRpdGlvbmVkJykgJiYgbS5ub2RlX2luZm8udGFibGUu aXNfcGFydGl0aW9uZWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdpc19yb3dfdHJpZ2dlcicsIGZh bHNlKTsKKyAgICAgICAgICAgICAgfSwxMCk7CisKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIElmIGNvbnN0cmFpbnQgdHJpZ2dlciBp cyBzZXQgdG8gVHJ1ZSB0aGVuIHJvdyB0cmlnZ2VyIHdpbGwKICAgICAgICAgICAgIC8vIGF1dG9t YXRpY2FsbHkgc2V0IHRvIFRydWUgYW5kIGJlY29tZXMgZGlzYWJsZQogICAgICAgICAgICAgdmFy IGlzX2NvbnN0cmFpbnRfdHJpZ2dlciA9IG0uZ2V0KCdpc19jb25zdHJhaW50X3RyaWdnZXInKTsK QEAgLTIzMiw3ICsyNTEsMTkgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcicsIFsKICAg ICAgICAgICBpZDogJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlcicsIGxhYmVsOiBnZXR0ZXh0KCdDb25z dHJhaW50IHRyaWdnZXI/JyksCiAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGRpc2FibGVkOiAn aW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsCiAgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCdlZGl0 JywgJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgICBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicp CisgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKKyAgICAgICAgICBkaXNh YmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gRGlzYWJsZWQgaWYgdGFibGUgaXMg YSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICAgICAgIGlmIChfLmhhcyhtLCAnbm9kZV9pbmZv JykgJiYgXy5oYXMobS5ub2RlX2luZm8sICd0YWJsZScpICYmCisgICAgICAgICAgICAgICAgXy5o YXMobS5ub2RlX2luZm8udGFibGUsICdpc19wYXJ0aXRpb25lZCcpICYmIG0ubm9kZV9pbmZvLnRh YmxlLmlzX3BhcnRpdGlvbmVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgICBtLnNldCgnaXNfY29uc3RyYWludF90 cmlnZ2VyJywgZmFsc2UpOworICAgICAgICAgICAgICB9LDEwKTsKKworICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CiAgICAgICAgIH0sewogICAg ICAgICAgIGlkOiAndGdkZWZlcnJhYmxlJywgbGFiZWw6IGdldHRleHQoJ0RlZmVycmFibGU/Jyks CiAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyks CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcwOWUxYQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy91dGlscy5weQpAQCAtMCwwICsxLDIxMTIgQEAKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyIiIiBJbXBsZW1lbnRzIFV0aWxpdHkgY2xhc3MgZm9yIFRhYmxlIGFuZCBQ YXJ0aXRpb25lZCBUYWJsZS4gIiIiCisKK2ltcG9ydCByZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0 IHdyYXBzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCitmcm9tIGZsYXNrIGltcG9ydCByZW5k ZXJfdGVtcGxhdGUsIGpzb25pZnksIHJlcXVlc3QKK2Zyb20gZmxhc2tfYmFiZWwgaW1wb3J0IGdl dHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2Us IGludGVybmFsX3NlcnZlcl9lcnJvciwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNw b25zZSwgZ29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnV0aWxzIFwKKyAgICBpbXBvcnQgRGF0YVR5cGVSZWFkZXIsIHRyaWdn ZXJfZGVmaW5pdGlvbiwgcGFyc2VfcnVsZV9kZWZpbml0aW9uCitmcm9tIHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfZnJvbV9kYiwg XAorICAgIHBhcnNlX3ByaXZfdG9fZGIKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9y dCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9k cml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorCisKK2NsYXNzIEJh c2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGlz IGJhc2UgY2xhc3MgZm9yIHRhYmxlcyBhbmQgcGFydGl0aW9uZWQgdGFibGVzLgorCisgICAgTWV0 aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBjaGVja19wcmVjb25kaXRpb24oKQorICAgICAgLSBU aGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tz CisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2ls bCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBsYXRlX3BhdGggcHJv cGVydGllcyB0byBzZWxmCisKKyAgICAqIF9mb3JtYXR0ZXIoZGF0YSwgdGlkKQorICAgICAgLSBJ dCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAgICBh cyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdAorCisgICAgKiBfY29sdW1uc19mb3JtYXR0ZXIodGlk LCBkYXRhKToKKyAgICAgIC0gSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVy eSByZXN1bHQKKyAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGNvbHVtbiBu b2RlCisKKyAgICAqIF9pbmRleF9jb25zdHJhaW50c19mb3JtYXR0ZXIoc2VsZiwgZGlkLCB0aWQs IGRhdGEpOgorICAgICAgLSBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5 IHJlc3VsdAorICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgaW5kZXggY29u c3RyYWludCBub2RlCisKKyAgICAqIF9jbHR5cGVfZm9ybWF0dGVyKHR5cGUpOiAoc3RhdGljbWV0 aG9kKQorICAgICAgLSBXZSBuZWVkIHRvIHJlbW92ZSBbXSBmcm9tIHR5cGUgYW5kIGFwcGVuZCBp dAorICAgICAgICBhZnRlciBsZW5ndGgvcHJlY2lzaW9uIHNvIHdlIHdpbGwgc2VuZCBmbGFnIGZv cgorICAgICAgICBzcWwgdGVtcGxhdGUuCisKKyAgICAqIGdldF90YWJsZV9kZXBlbmRlbnRzKHNl bGYsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCBy ZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhlIHRhYmxlIG5vZGUuCisKKyAgICAq IGdldF90YWJsZV9kZXBlbmRlbmNpZXMoc2VsZiwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlv biBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAg Zm9yIHRoZSB0YWJsZSBub2RlLgorCisgICAgKiBnZXRfdGFibGVfc3RhdGlzdGljcyhzZWxmLCB0 aWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBzdGF0aXN0aWNzIGZvciBhIHBhcnRpY3VsYXIgdGFi bGUgaWYgdGlkIGlzIHNwZWNpZmllZCwKKyAgICAgICAgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJu IHN0YXRpc3RpY3MgZm9yIGFsbCB0aGUgdGFibGVzIGluIHRoYXQKKyAgICAgICAgc2NoZW1hLgor ICAgICogZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoc2VsZiwgZGlkLCBzY2lkLCB0aWQsIG1h aW5fc3FsLCBkYXRhKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZXMgcmV2ZXJz ZSBlbmdpbmVlcmVkIHNxbCBmb3IKKyAgICAgICAgdGhlIHRhYmxlIG9iamVjdC4KKworICAgICog cmVzZXRfc3RhdGlzdGljcyhzZWxmLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9u IHdpbGwgcmVzZXQgc3RhdGlzdGljcyBvZiB0YWJsZS4KKyAgICAiIiIKKyAgICBAc3RhdGljbWV0 aG9kCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVj a3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3 aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBw cm9wZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAg ICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJnc1sw XSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAgICAgICAg ICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RF RkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgZGlkID0ga3dhcmdzWydkaWQnXQorICAgICAgICAg ICAgc2VsZi5tYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCdd KQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3 YXJnc1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIucXRJZGVudAor ICAgICAgICAgICAgc2VsZi5xdFR5cGVJZGVudCA9IGRyaXZlci5xdFR5cGVJZGVudAorICAgICAg ICAgICAgIyBXZSBuZWVkIGRhdGxhc3RzeXNvaWQgdG8gY2hlY2sgaWYgY3VycmVudCB0YWJsZSBp cyBzeXN0ZW0gdGFibGUKKyAgICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCA9IHNlbGYubWFu YWdlci5kYl9pbmZvWworICAgICAgICAgICAgICAgIGRpZAorICAgICAgICAgICAgXVsnZGF0bGFz dHN5c29pZCddIGlmIHNlbGYubWFuYWdlci5kYl9pbmZvIGlzIG5vdCBOb25lIGFuZCBcCisgICAg ICAgICAgICAgICAgZGlkIGluIHNlbGYubWFuYWdlci5kYl9pbmZvIGVsc2UgMAorCisgICAgICAg ICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgorICAgICAgICAgICAgIyBTZXQgdGhlIHRl bXBsYXRlIHBhdGggZm9yIHRoZSBTUUwgc2NyaXB0cworICAgICAgICAgICAgc2VsZi50YWJsZV90 ZW1wbGF0ZV9wYXRoID0gJ3RhYmxlL3NxbC8jezB9IycuZm9ybWF0KHZlcikKKyAgICAgICAgICAg IHNlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGggPSAncGFydGl0aW9uL3NxbC8jezB9IycuZm9y bWF0KHZlcikKKworICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgQ29sdW1uICxjaGVjayBjb25z dHJhaW50IGFuZCBleGNsdXNpb24KKyAgICAgICAgICAgICMgY29uc3RyYWludCBub2RlCisgICAg ICAgICAgICBzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoID0gJ2NvbHVtbi9zcWwvI3swfSMnLmZv cm1hdCh2ZXIpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0 aCA9IFwKKyAgICAgICAgICAgICAgICAnY2hlY2tfY29uc3RyYWludC9zcWwvI3swfSMnLmZvcm1h dCh2ZXIpCisgICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3Bh dGggPSBcCisgICAgICAgICAgICAgICAgJ2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC8jezB9Iycu Zm9ybWF0KHZlcikKKworICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgUEsgJiBVbmlxdWUgY29u c3RyYWludCBub2RlCisgICAgICAgICAgICBzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCA9ICdpbmRleF9jb25zdHJhaW50L3NxbCcKKworICAgICAgICAgICAgIyBUZW1wbGF0ZSBm b3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlCisgICAgICAgICAgICBzZWxmLmZvcmVpZ25f a2V5X3RlbXBsYXRlX3BhdGggPSAnZm9yZWlnbl9rZXkvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQor CisgICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBpbmRleCBub2RlCisgICAgICAgICAgICBzZWxm LmluZGV4X3RlbXBsYXRlX3BhdGggPSAnaW5kZXgvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQorCisg ICAgICAgICAgICAjIFRlbXBsYXRlIGZvciB0cmlnZ2VyIG5vZGUKKyAgICAgICAgICAgIHNlbGYu dHJpZ2dlcl90ZW1wbGF0ZV9wYXRoID0gJ3RyaWdnZXIvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQor CisgICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBydWxlcyBub2RlCisgICAgICAgICAgICBzZWxm LnJ1bGVzX3RlbXBsYXRlX3BhdGggPSAncnVsZXMvc3FsJworCisgICAgICAgICAgICAjIFN1cHBv cnRlZCBBQ0wgZm9yIHRhYmxlCisgICAgICAgICAgICBzZWxmLmFjbCA9IFsnYScsICdyJywgJ3cn LCAnZCcsICdEJywgJ3gnLCAndCddCisKKyAgICAgICAgICAgICMgU3VwcG9ydGVkIEFDTCBmb3Ig Y29sdW1ucworICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsID0gWydhJywgJ3InLCAndycsICd4 J10KKworICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJl dHVybiB3cmFwCisKKyAgICBkZWYgX2NvbHVtbnNfZm9ybWF0dGVyKHNlbGYsIHRpZCwgZGF0YSk6 CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQK KyAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0CisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkg cmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY29sdW1u IG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBjb2x1bW4gaW4gZGF0YVsnY29sdW1ucydd OgorCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gZm9ybWF0IHZhcmlhYmxlcyBhY2NvcmRpbmcg dG8gY2xpZW50IGpzIGNvbGxlY3Rpb24KKyAgICAgICAgICAgIGlmICdhdHRvcHRpb25zJyBpbiBj b2x1bW4gYW5kIGNvbHVtblsnYXR0b3B0aW9ucyddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg ICAgIHNwY29wdGlvbnMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBzcGNvcHRpb24gaW4gY29s dW1uWydhdHRvcHRpb25zJ106CisgICAgICAgICAgICAgICAgICAgIGssIHYgPSBzcGNvcHRpb24u c3BsaXQoJz0nKQorICAgICAgICAgICAgICAgICAgICBzcGNvcHRpb25zLmFwcGVuZCh7J25hbWUn OiBrLCAndmFsdWUnOiB2fSkKKworICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0b3B0aW9ucydd ID0gc3Bjb3B0aW9ucworCisgICAgICAgICAgICAjIE5lZWQgdG8gZm9ybWF0IHNlY3VyaXR5IGxh YmVscyBhY2NvcmRpbmcgdG8gY2xpZW50IGpzIGNvbGxlY3Rpb24KKyAgICAgICAgICAgIGlmICdz ZWNsYWJlbHMnIGluIGNvbHVtbiBhbmQgY29sdW1uWydzZWNsYWJlbHMnXSBpcyBub3QgTm9uZToK KyAgICAgICAgICAgICAgICBzZWNsYWJlbHMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBzZWNs YmxzIGluIGNvbHVtblsnc2VjbGFiZWxzJ106CisgICAgICAgICAgICAgICAgICAgIGssIHYgPSBz ZWNsYmxzLnNwbGl0KCc9JykKKyAgICAgICAgICAgICAgICAgICAgc2VjbGFiZWxzLmFwcGVuZCh7 J3Byb3ZpZGVyJzogaywgJ2xhYmVsJzogdn0pCisKKyAgICAgICAgICAgICAgICBjb2x1bW5bJ3Nl Y2xhYmVscyddID0gc2VjbGFiZWxzCisKKyAgICAgICAgICAgIGlmICdhdHRudW0nIGluIGNvbHVt biBhbmQgY29sdW1uWydhdHRudW0nXSBpcyBub3QgTm9uZSBcCisgICAgICAgICAgICAgICAgICAg IGFuZCBjb2x1bW5bJ2F0dG51bSddID4gMDoKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8g cGFyc2UgJiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRhYmFzZSB0bworICAgICAgICAgICAg ICAgICMganNvbiBmb3JtYXQKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRo LCAnYWNsLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xpZD1jb2x1bW5b J2F0dG51bSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHN0YXR1cywgYWNs ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPWFjbCkKKworICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBzZXQgZ2V0IHByaXZp bGVnZXMgZnJvbSBhY2wgc3FsIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgICAgICAgICAjIGl0 IGZyb20gcHJvcGVydGllcyBzcWwKKyAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dGFjbCddID0g W10KKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gYWNsWydyb3dzJ106CisgICAgICAgICAg ICAgICAgICAgIHByaXYgPSBwYXJzZV9wcml2X2Zyb21fZGIocm93KQorICAgICAgICAgICAgICAg ICAgICBjb2x1bW4uc2V0ZGVmYXVsdChyb3dbJ2RlZnR5cGUnXSwgW10pLmFwcGVuZChwcml2KQor CisgICAgICAgICAgICAgICAgIyB3ZSBhcmUgcmVjZWl2aW5nIHJlcXVlc3Qgd2hlbiBpbiBlZGl0 IG1vZGUKKyAgICAgICAgICAgICAgICAjIHdlIHdpbGwgc2VuZCBmaWx0ZXJlZCB0eXBlcyByZWxh dGVkIHRvIGN1cnJlbnQgdHlwZQorICAgICAgICAgICAgICAgIHByZXNlbnRfdHlwZSA9IGNvbHVt blsnY2x0eXBlJ10KKworICAgICAgICAgICAgICAgIHR5cGVfaWQgPSBjb2x1bW5bJ2F0dHR5cGlk J10KKworICAgICAgICAgICAgICAgIGZ1bGx0eXBlID0gc2VsZi5nZXRfZnVsbF90eXBlKAorICAg ICAgICAgICAgICAgICAgICBjb2x1bW5bJ3R5cG5zcG5hbWUnXSwgY29sdW1uWyd0eXBuYW1lJ10s CisgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnaXNkdXAnXSwgY29sdW1uWydhdHRuZGltcydd LCBjb2x1bW5bJ2F0dHR5cG1vZCddCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAg ICAgbGVuZ3RoID0gRmFsc2UKKyAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSBGYWxzZQorICAg ICAgICAgICAgICAgIGlmICdlbGVtb2lkJyBpbiBjb2x1bW46CisgICAgICAgICAgICAgICAgICAg IGxlbmd0aCwgcHJlY2lzaW9uLCB0eXBldmFsID0gXAorICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5nZXRfbGVuZ3RoX3ByZWNpc2lvbihjb2x1bW5bJ2VsZW1vaWQnXSkKKworICAgICAgICAg ICAgICAgICMgU2V0IGxlbmd0aCBhbmQgcHJlY2lzaW9uIHRvIE5vbmUKKyAgICAgICAgICAgICAg ICBjb2x1bW5bJ2F0dGxlbiddID0gTm9uZQorICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0cHJl Y2lzaW9uJ10gPSBOb25lCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgbGVuZ3RoICYg cHJlY2lzaW9uIGJvdGgKKyAgICAgICAgICAgICAgICBpZiBsZW5ndGggYW5kIHByZWNpc2lvbjoK KyAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFyY2gocicoXGQrKSwoXGQrKScs IGZ1bGx0eXBlKQorICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaE9iajoKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbHVtblsnYXR0bGVuJ10gPSBtYXRjaE9iai5ncm91cCgxKQorICAgICAg ICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRwcmVjaXNpb24nXSA9IG1hdGNoT2JqLmdyb3Vw KDIpCisgICAgICAgICAgICAgICAgZWxpZiBsZW5ndGg6CisgICAgICAgICAgICAgICAgICAgICMg SWYgd2UgaGF2ZSBsZW5ndGggb25seQorICAgICAgICAgICAgICAgICAgICBtYXRjaE9iaiA9IHJl LnNlYXJjaChyJyhcZCspJywgZnVsbHR5cGUpCisgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNo T2JqOgorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRsZW4nXSA9IG1hdGNoT2Jq Lmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dHByZWNpc2lvbidd ID0gTm9uZQorCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnaXNfcmVmZXJlbmNlZC5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNsaWQ9Y29sdW1uWydhdHRudW0n XSkKKworICAgICAgICAgICAgICAgIHN0YXR1cywgaXNfcmVmZXJlbmNlID0gc2VsZi5jb25uLmV4 ZWN1dGVfc2NhbGFyKFNRTCkKKworICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdCA9IGxp c3QoKQorICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBuZWVkIHByZXNlbnQgdHlwZSBpbiBlZGl0 IG1vZGUKKworICAgICAgICAgICAgICAgIGlmIGNvbHVtblsndHlwbnNwbmFtZSddID09ICJwZ19j YXRhbG9nIiBcCisgICAgICAgICAgICAgICAgICAgICAgICBvciBjb2x1bW5bJ3R5cG5zcG5hbWUn XSA9PSAicHVibGljIjoKKyAgICAgICAgICAgICAgICAgICAgZWRpdF90eXBlc19saXN0LmFwcGVu ZChwcmVzZW50X3R5cGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg ICAgdCA9IHNlbGYucXRUeXBlSWRlbnQoc2VsZi5jb25uLCBjb2x1bW5bJ3R5cG5zcG5hbWUnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudF90eXBlKQor ICAgICAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xpc3QuYXBwZW5kKHQpCisgICAgICAgICAg ICAgICAgICAgIGNvbHVtblsnY2x0eXBlJ10gPSB0CisKKyAgICAgICAgICAgICAgICBpZiBpbnQo aXNfcmVmZXJlbmNlKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXRfbW9kZV90eXBlcy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2lk PXR5cGVfaWQpCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAgICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgICAgICAgICAgICAgZWRpdF90eXBlc19saXN0LmFwcGVu ZChyb3dbJ3R5cG5hbWUnXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg ICAgICBlZGl0X3R5cGVzX2xpc3QuYXBwZW5kKHByZXNlbnRfdHlwZSkKKworICAgICAgICAgICAg ICAgIGNvbHVtblsnZWRpdF90eXBlcyddID0gZWRpdF90eXBlc19saXN0CisgICAgICAgICAgICAg ICAgY29sdW1uWydjbHR5cGUnXSA9IERhdGFUeXBlUmVhZGVyLnBhcnNlX3R5cGVfbmFtZShjb2x1 bW5bJ2NsdHlwZSddKQorCisgICAgICAgICAgICAgICAgaWYgJ2luZGtleScgaW4gY29sdW1uOgor ICAgICAgICAgICAgICAgICAgICAjIEN1cnJlbnQgY29sdW1uCisgICAgICAgICAgICAgICAgICAg IGF0dG51bSA9IHN0cihjb2x1bW5bJ2F0dG51bSddKQorCisgICAgICAgICAgICAgICAgICAgICMg U2luZ2xlL0xpc3Qgb2YgcHJpbWFyeSBrZXkgY29sdW1uKHMpCisgICAgICAgICAgICAgICAgICAg IGluZGtleSA9IHN0cihjb2x1bW5bJ2luZGtleSddKQorCisgICAgICAgICAgICAgICAgICAgICMg V2Ugd2lsbCBjaGVjayBpZiBjb2x1bW4gaXMgaW4gcHJpbWFyeSBjb2x1bW4ocykKKyAgICAgICAg ICAgICAgICAgICAgaWYgYXR0bnVtIGluIGluZGtleS5zcGxpdCgiICIpOgorICAgICAgICAgICAg ICAgICAgICAgICAgY29sdW1uWydpc19wcmltYXJ5X2tleSddID0gVHJ1ZQorICAgICAgICAgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydpc19wcmltYXJ5 X2tleSddID0gRmFsc2UKKworICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIF9pbmRleF9j b25zdHJhaW50c19mb3JtYXR0ZXIoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgorICAgICAgICAiIiIK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFibGUgT0lECisgICAgICAgICAgICBk YXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAg ICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGluZGV4IGNvbnN0cmFpbnQgbm9k ZQorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBj b25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCisgICAgICAgIGluZGV4X2NvbnN0cmFpbnRzID0gewor ICAgICAgICAgICAgJ3AnOiAncHJpbWFyeV9rZXknLCAndSc6ICd1bmlxdWVfY29uc3RyYWludCcK KyAgICAgICAgfQorCisgICAgICAgIGZvciBjdHlwZSBpbiBpbmRleF9jb25zdHJhaW50cy5rZXlz KCk6CisgICAgICAgICAgICBkYXRhW2luZGV4X2NvbnN0cmFpbnRzW2N0eXBlXV0gPSBbXQorCisg ICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfY29u c3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdHJhaW50X3R5cGU9Y3R5cGUpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgICAg IHJlc3VsdCA9IHJvdworICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2Nv bHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBjaWQ9cm93WydvaWQnXSwKKyAgICAgICAg ICAgICAgICAgICAgY29sY250PXJvd1snaW5kbmF0dHMnXSkKKyAgICAgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAg ICAgICAgICAgICAgICBmb3IgciBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAgICAg Y29sdW1ucy5hcHBlbmQoeyJjb2x1bW4iOiByWydjb2x1bW4nXS5zdHJpcCgnIicpfSkKKworICAg ICAgICAgICAgICAgIHJlc3VsdFsnY29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICAgICAg ICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5kL29yIGFwcGVuZCBpbnRvCisg ICAgICAgICAgICAgICAgIyBleGlzdGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRhIGRp Y3RdCisgICAgICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KGluZGV4X2NvbnN0cmFpbnRzW2N0 eXBlXSwgW10pLmFwcGVuZChyZXN1bHQpCisKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRl ZiBfZm9yZWlnbl9rZXlfZm9ybWF0dGVyKHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRh dGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAg ICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCBub2RlCisgICAgICAgICIiIgorCisgICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGlu ZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKKworICAgICAgICBzdGF0dXMsIHJlc3Vs dCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3Vs dCkKKworICAgICAgICBmb3IgZmsgaW4gcmVzdWx0Wydyb3dzJ106CisKKyAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Nv bnN0cmFpbnRfY29scy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzPXppcChma1sn Y29uZmtleSddLCBma1snY29ua2V5J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbmZyZWxpZD1ma1snY29uZnJlbGlkJ10pCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICAgICAgY29scyA9IFtd CisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgICAgIGNv bHVtbnMuYXBwZW5kKHsibG9jYWxfY29sdW1uIjogcm93Wydjb25hdHRuYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2VzIjogZmtbJ2NvbmZyZWxpZCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlZCI6IHJvd1snY29uZmF0 dG5hbWUnXX0pCisgICAgICAgICAgICAgICAgY29scy5hcHBlbmQocm93Wydjb25hdHRuYW1lJ10p CisKKyAgICAgICAgICAgIGZrWydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3Bh cmVudC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWZrWydj b2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKworICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0g c2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKworICAgICAgICAgICAgZmtbJ3JlbW90ZV9zY2hlbWEnXSA9IHJzZXRbJ3Jvd3MnXVsw XVsnc2NoZW1hJ10KKyAgICAgICAgICAgIGZrWydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3Mn XVswXVsndGFibGUnXQorCisgICAgICAgICAgICBjb3ZlcmluZ2luZGV4ID0gc2VsZi5zZWFyY2hf Y292ZXJpbmdpbmRleCh0aWQsIGNvbHMpCisKKyAgICAgICAgICAgIGZrWydjb3ZlcmluZ2luZGV4 J10gPSBjb3ZlcmluZ2luZGV4CisgICAgICAgICAgICBpZiBjb3ZlcmluZ2luZGV4OgorICAgICAg ICAgICAgICAgIGZrWydhdXRvaW5kZXgnXSA9IFRydWUKKyAgICAgICAgICAgICAgICBma1snaGFz aW5kZXgnXSA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmtbJ2F1 dG9pbmRleCddID0gRmFsc2UKKyAgICAgICAgICAgICAgICBma1snaGFzaW5kZXgnXSA9IEZhbHNl CisgICAgICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlzdCBhbmQvb3IgYXBw ZW5kIGludG8KKyAgICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1haW4g ZGF0YSBkaWN0XQorICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KCdmb3JlaWduX2tleScsIFtd KS5hcHBlbmQoZmspCisKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfY2hlY2tfY29u c3RyYWludF9mb3JtYXR0ZXIoc2VsZiwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAorICAgICAgICAgICAgZGF0YTogZGlj dCBvZiBxdWVyeSByZXN1bHQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSXQgd2ls bCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKKyAgICAgICAgICAgIGFz IHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBjaGVjayBjb25zdHJhaW50IG5vZGUKKyAgICAg ICAgIiIiCisKKyAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWlu dHMgZm9yIHRoZSB0YWJsZQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10aWQpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICMg SWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bworICAgICAg ICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KKworICAgICAg ICBkYXRhWydjaGVja19jb25zdHJhaW50J10gPSByZXNbJ3Jvd3MnXQorCisgICAgICAgIHJldHVy biBkYXRhCisKKyAgICBkZWYgX2V4Y2x1c2lvbl9jb25zdHJhaW50X2Zvcm1hdHRlcihzZWxmLCBk aWQsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAgICAg dGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0CisK KyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBv dXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZv cm1hdCBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbm9kZQorICAgICAgICAiIiIKKworICAgICAg ICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxl CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHRpZD10aWQpCisKKyAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICAg ICAgZm9yIGV4IGluIHJlc3VsdFsncm93cyddOgorCisgICAgICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhjbHVzaW9uX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2Nv bHMuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNpZD1leFsnb2lkJ10sCisgICAgICAgICAgICAg ICAgY29sY250PWV4WydpbmRuYXR0cyddKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGZvciByb3cgaW4gcmVz Wydyb3dzJ106CisgICAgICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ10gJiAxOgorICAgICAg ICAgICAgICAgICAgICBvcmRlciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIG51bGxzX29y ZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25zJ10gJiAyKSBlbHNlIEZhbHNlCisgICAgICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBUcnVlCisgICAgICAgICAg ICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25zJ10gJiAyKSBlbHNl IEZhbHNlCisKKyAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImNvbHVtbiI6IHJvd1sn Y29sZGVmJ10uc3RyaXAoJyInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9w ZXJfY2xhc3MiOiByb3dbJ29wY25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIm9yZGVyIjogb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudWxs c19vcmRlciI6IG51bGxzX29yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi b3BlcmF0b3IiOiByb3dbJ29wcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImNvbF90eXBlIjogcm93WydkYXRhdHlwZSddCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0pCisKKyAgICAgICAgICAgIGV4Wydjb2x1bW5zJ10gPSBjb2x1bW5zCisgICAgICAg ICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGludG8K KyAgICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0 XQorICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KCdleGNsdWRlX2NvbnN0cmFpbnQnLCBbXSku YXBwZW5kKGV4KQorCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgX2Zvcm1hdHRlcihz ZWxmLCBkaWQsIHNjaWQsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1bHQKKyAgICAgICAgICAgIHNjaWQ6 IHNjaGVtYSBvaWQKKyAgICAgICAgICAgIHRpZDogdGFibGUgb2lkCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkg cmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdAorICAgICAgICAi IiIKKyAgICAgICAgIyBOZWVkIHRvIGZvcm1hdCBzZWN1cml0eSBsYWJlbHMgYWNjb3JkaW5nIHRv IGNsaWVudCBqcyBjb2xsZWN0aW9uCisgICAgICAgIGlmICdzZWNsYWJlbHMnIGluIGRhdGEgYW5k IGRhdGFbJ3NlY2xhYmVscyddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjbGFiZWxzID0g W10KKyAgICAgICAgICAgIGZvciBzZWNsYmxzIGluIGRhdGFbJ3NlY2xhYmVscyddOgorICAgICAg ICAgICAgICAgIGssIHYgPSBzZWNsYmxzLnNwbGl0KCc9JykKKyAgICAgICAgICAgICAgICBzZWNs YWJlbHMuYXBwZW5kKHsncHJvdmlkZXInOiBrLCAnbGFiZWwnOiB2fSkKKworICAgICAgICAgICAg ZGF0YVsnc2VjbGFiZWxzJ10gPSBzZWNsYWJlbHMKKworICAgICAgICAjIFdlIG5lZWQgdG8gcGFy c2UgJiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRhYmFzZSB0byBqc29uIGZvcm1hdAorICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVf cGF0aCwgJ2FjbC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LCBzY2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywgYWNsID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWFjbCkKKworICAgICAgICAjIFdlIHdpbGwgc2V0IGdl dCBwcml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3ZSBkb24ndCBuZWVkCisgICAgICAgICMgaXQg ZnJvbSBwcm9wZXJ0aWVzIHNxbAorICAgICAgICBmb3Igcm93IGluIGFjbFsncm93cyddOgorICAg ICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCisgICAgICAgICAgICBpZiBy b3dbJ2RlZnR5cGUnXSBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGRhdGFbcm93WydkZWZ0eXBl J11dLmFwcGVuZChwcml2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRh W3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQorCisgICAgICAgICMgV2Ugd2lsbCBhZGQgQXV0byB2 YWN1dW0gZGVmYXVsdHMgd2l0aCBvdXQgcmVzdWx0IGZvciBncmlkCisgICAgICAgIGRhdGFbJ3Zh Y3V1bV90YWJsZSddID0gc2VsZi5wYXJzZV92YWN1dW1fZGF0YShzZWxmLmNvbm4sIGRhdGEsICd0 YWJsZScpCisgICAgICAgIGRhdGFbJ3ZhY3V1bV90b2FzdCddID0gc2VsZi5wYXJzZV92YWN1dW1f ZGF0YShzZWxmLmNvbm4sIGRhdGEsICd0b2FzdCcpCisKKyAgICAgICAgIyBGZXRjaCBjb2x1bW5z IGZvciB0aGUgdGFibGUgbG9naWMKKyAgICAgICAgIworICAgICAgICAjIDEpIENoZWNrIGlmIG9m X3R5cGUgYW5kIGluaGVyaXRlZCB0YWJsZXMgYXJlIHByZXNlbnQ/CisgICAgICAgICMgMikgSWYg eWVzIHRoZW4gRmV0Y2ggYWxsIHRoZSBjb2x1bW5zIGZvciBvZl90eXBlIGFuZCBpbmhlcml0ZWQg dGFibGVzCisgICAgICAgICMgMykgQWRkIGNvbHVtbnMgaW4gY29sdW1ucyBjb2xsZWN0aW9uCisg ICAgICAgICMgNCkgRmluZCBhbGwgdGhlIGNvbHVtbnMgZm9yIHRhYmxlcyBhbmQgZmlsdGVyIG91 dCBjb2x1bW5zIHdoaWNoIGFyZQorICAgICAgICAjICAgbm90IGluaGVyaXRlZCBmcm9tIGFueSB0 YWJsZSAmIGZvcm1hdCB0aGVtIG9uZSBieSBvbmUKKworICAgICAgICAjIEdldCBvZl90eXBlIHRh YmxlIGNvbHVtbnMgYW5kIGFkZCBpdCBpbnRvIGNvbHVtbnMgZGljdAorICAgICAgICBpZiBkYXRh Wyd0eXBuYW1lJ106CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zX2Zvcl90YWJsZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG5hbWU9ZGF0YVsndHlwbmFtZSddKQorCisgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IHJlc1sn cm93cyddCisKKyAgICAgICAgIyBHZXQgaW5oZXJpdGVkIHRhYmxlKHMpIGNvbHVtbnMgYW5kIGFk ZCBpdCBpbnRvIGNvbHVtbnMgZGljdAorICAgICAgICBlbGlmIGRhdGFbJ2NvbGxfaW5oZXJpdHMn XSBhbmQgbGVuKGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkgPiAwOgorICAgICAgICAgICAgY29sdW1u cyA9IFtdCisgICAgICAgICAgICAjIFJldHVybiBhbGwgdGFibGVzIHdoaWNoIGNhbiBiZSBpbmhl cml0ZWQgJiBkbyBub3Qgc2hvdworICAgICAgICAgICAgIyBzeXN0ZW0gY29sdW1ucworICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf aW5oZXJpdHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3df c3lzdGVtX29iamVjdHM9RmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICBmb3Igcm93 IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICBpZiByb3dbJ2luaGVyaXRzJ10gaW4g ZGF0YVsnY29sbF9pbmhlcml0cyddOgorICAgICAgICAgICAgICAgICAgICAjIEZldGNoIGNvbHVt bnMgdXNpbmcgaW5oZXJpdGVkIHRhYmxlIE9JRAorICAgICAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi50 YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29sdW1u c19mb3JfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXJvd1snb2lk J10KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuZXh0ZW5k KHJlc1sncm93cyddWzpdKQorICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucwor CisgICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGNvbHVtbnMgZm9yIHRoZSB0YWJsZSB1 c2luZworICAgICAgICAjIGNvbHVtbnMgcHJvcGVydGllcy5zcWwsIHNvIHdlIG5lZWQgdG8gc2V0 IHRlbXBsYXRlIHBhdGgKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c19vYmpl Y3RzPUZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorICAgICAgICBhbGxfY29sdW1ucyA9IHJlc1sncm93cyddCisKKyAgICAgICAgIyBGaWx0 ZXIgaW5oZXJpdGVkIGNvbHVtbnMgZnJvbSBhbGwgY29sdW1ucworICAgICAgICBpZiAnY29sdW1u cycgaW4gZGF0YSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPiAwIFwKKyAgICAgICAgICAgICAg ICBhbmQgbGVuKGFsbF9jb2x1bW5zKSA+IDA6CisgICAgICAgICAgICBmb3Igcm93IGluIGRhdGFb J2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICBmb3IgaSwgY29sIGluIGVudW1lcmF0ZShhbGxf Y29sdW1ucyk6CisgICAgICAgICAgICAgICAgICAgICMgSWYgYm90aCBuYW1lIGFyZSBzYW1lIHRo ZW4gcmVtb3ZlIGl0CisgICAgICAgICAgICAgICAgICAgICMgYXMgaXQgaXMgaW5oZXJpdGVkIGZy b20gb3RoZXIgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgaWYgY29sWyduYW1lJ10gPT0gcm93 WyduYW1lJ106CisgICAgICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSBzYW1lIGNvbHVtbiBm cm9tIGFsbF9jb2x1bW5zIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFscmVhZHkgaGF2 ZSBpdCBjb2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBhbGxf Y29sdW1uc1tpXQorCisgICAgICAgICAgICAjIElmIGFueSBjb2x1bW4gaXMgYWRkZWQgdGhlbiB1 cGRhdGUgY29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAgICBpZiBsZW4oYWxsX2NvbHVtbnMp ID4gMDoKKyAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gKz0gYWxsX2NvbHVtbnMKKyAg ICAgICAgIyBJZiBubyBpbmhlcml0ZWQgY29sdW1ucyBmb3VuZCB0aGVuIGFkZCBhbGwgY29sdW1u cworICAgICAgICBlbGlmIGxlbihhbGxfY29sdW1ucykgPiAwOgorICAgICAgICAgICAgZGF0YVsn Y29sdW1ucyddID0gYWxsX2NvbHVtbnMKKworICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YSBh bmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPiAwOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2Nv bHVtbnNfZm9ybWF0dGVyKHRpZCwgZGF0YSkKKworICAgICAgICAjIEhlcmUgd2Ugd2lsbCBhZGQg Y29uc3RyYWludCBpbiBvdXIgb3V0cHV0CisgICAgICAgIGRhdGEgPSBzZWxmLl9pbmRleF9jb25z dHJhaW50c19mb3JtYXR0ZXIoZGlkLCB0aWQsIGRhdGEpCisgICAgICAgIGRhdGEgPSBzZWxmLl9m b3JlaWduX2tleV9mb3JtYXR0ZXIodGlkLCBkYXRhKQorICAgICAgICBkYXRhID0gc2VsZi5fY2hl Y2tfY29uc3RyYWludF9mb3JtYXR0ZXIodGlkLCBkYXRhKQorICAgICAgICBkYXRhID0gc2VsZi5f ZXhjbHVzaW9uX2NvbnN0cmFpbnRfZm9ybWF0dGVyKGRpZCwgdGlkLCBkYXRhKQorCisgICAgICAg IHJldHVybiBkYXRhCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9jbHR5cGVfZm9ybWF0 dGVyKGRhdGFfdHlwZSk6CisgICAgICAgICIiIgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBkYXRhX3R5cGU6IFR5cGUgc3RyaW5nCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IFdlIG5lZWQgdG8gcmVtb3ZlIFtdIGZyb20gdHlwZSBhbmQgYXBwZW5kIGl0CisgICAgICAgICAg ICBhZnRlciBsZW5ndGgvcHJlY2lzaW9uIHNvIHdlIHdpbGwgc2VuZCBmbGFnIGZvcgorICAgICAg ICAgICAgc3FsIHRlbXBsYXRlCisgICAgICAgICIiIgorICAgICAgICBpZiAnW10nIGluIGRhdGFf dHlwZToKKyAgICAgICAgICAgIHJldHVybiBkYXRhX3R5cGVbOi0yXSwgVHJ1ZQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgcmV0dXJuIGRhdGFfdHlwZSwgRmFsc2UKKworICAgIGRlZiBnZXRf dGFibGVfZGVwZW5kZW50cyhzZWxmLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAg ICAgIGZvciB0aGUgdGFibGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgIyBTcGVjaWZpYyBjb25kaXRpb24gZm9y IGNvbHVtbiB3aGljaCB3ZSBuZWVkIHRvIGFwcGVuZAorICAgICAgICB3aGVyZSA9ICJXSEVSRSBk ZXAucmVmb2JqaWQ9ezB9OjpPSUQiLmZvcm1hdCh0aWQpCisKKyAgICAgICAgZGVwZW5kZW50c19y ZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKAorICAgICAgICAgICAgc2VsZi5jb25uLCB0aWQK KyAgICAgICAgKQorCisgICAgICAgICMgU3BlY2lmaWMgc3FsIHRvIHJ1biBhZ2FpbnQgY29sdW1u IHRvIGZldGNoIGRlcGVuZGVudHMKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2RlcGVuZC5zcWwnXSksIHdoZXJlPXdoZXJlKQorCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgcmVm X25hbWUgPSByb3dbJ3JlZm5hbWUnXQorICAgICAgICAgICAgaWYgcmVmX25hbWUgaXMgTm9uZToK KyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBkZXBfdHlwZSA9ICcnCisg ICAgICAgICAgICBkZXBfc3RyID0gcm93WydkZXB0eXBlJ10KKyAgICAgICAgICAgIGlmIGRlcF9z dHIgPT0gJ2EnOgorICAgICAgICAgICAgICAgIGRlcF90eXBlID0gJ2F1dG8nCisgICAgICAgICAg ICBlbGlmIGRlcF9zdHIgPT0gJ24nOgorICAgICAgICAgICAgICAgIGRlcF90eXBlID0gJ25vcm1h bCcKKyAgICAgICAgICAgIGVsaWYgZGVwX3N0ciA9PSAnaSc6CisgICAgICAgICAgICAgICAgZGVw X3R5cGUgPSAnaW50ZXJuYWwnCisKKyAgICAgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0LmFwcGVu ZCh7J3R5cGUnOiAnc2VxdWVuY2UnLCAnbmFtZSc6IHJlZl9uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiBkZXBfdHlwZX0pCisKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3Vs dCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgZGVmIGdldF90YWJs ZV9kZXBlbmRlbmNpZXMoc2VsZiwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAg ICAgIGZvciB0aGUgdGFibGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgdGlk OiBUYWJsZSBJRAorCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0g c2VsZi5nZXRfZGVwZW5kZW5jaWVzKAorICAgICAgICAgICAgc2VsZi5jb25uLCB0aWQKKyAgICAg ICAgKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9u c2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQorCisgICAgZGVmIGdldF90YWJsZV9zdGF0aXN0aWNzKHNlbGYsIHNjaWQsIHRpZCk6CisgICAg ICAgICIiIgorICAgICAgICBTdGF0aXN0aWNzCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJZAorCisgICAgICAgIFJl dHVybnMgdGhlIHN0YXRpc3RpY3MgZm9yIGEgcGFydGljdWxhciB0YWJsZSBpZiB0aWQgaXMgc3Bl Y2lmaWVkLAorICAgICAgICBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gc3RhdGlzdGljcyBmb3Ig YWxsIHRoZSB0YWJsZXMgaW4gdGhhdAorICAgICAgICBzY2hlbWEuCisgICAgICAgICIiIgorCisg ICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUKKyAgICAgICAgc3RhdHVzLCBzY2hlbWFfbmFtZSA9 IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAnZ2V0 X3NjaGVtYS5zcWwnXSksCisgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9c2Np ZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXNjaGVtYV9uYW1l KQorCisgICAgICAgIGlmIHRpZCBpcyBOb25lOgorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xsX3RhYmxlX3N0YXRzLnNxbCddKSwg Y29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgIHNjaGVtYV9uYW1lPXNjaGVtYV9u YW1lCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAg ICAgICAgICAgIyBGb3IgSW5kaXZpZHVhbCB0YWJsZSBzdGF0cworCisgICAgICAgICAgICAjIENo ZWNrIGlmIHBnc3RhdHR1cGxlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IGNyZWF0ZWQ/CisgICAgICAg ICAgICAjIGlmIGNyZWF0ZWQgdGhlbiBvbmx5IGFkZCBleHRlbmRlZCBzdGF0cworICAgICAgICAg ICAgc3RhdHVzLCBpc19wZ3N0YXR0dXBsZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigiIiIK KyAgICAgICAgICAgIFNFTEVDVCAoY291bnQoZXh0bmFtZSkgPiAwKSBBUyBpc19wZ3N0YXR0dXBs ZQorICAgICAgICAgICAgRlJPTSBwZ19leHRlbnNpb24KKyAgICAgICAgICAgIFdIRVJFIGV4dG5h bWU9J3Bnc3RhdHR1cGxlJworICAgICAgICAgICAgIiIiKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPWlzX3Bnc3RhdHR1cGxlKQorCisgICAgICAgICAgICAjIEZldGNoIFRhYmxlIG5hbWUKKyAg ICAgICAgICAgIHN0YXR1cywgdGFibGVfbmFtZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigK KyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfdGFibGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NpZD1zY2lkLCB0aWQ9dGlkCisgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXRh YmxlX25hbWUpCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdzdGF0cy5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2hlbWFfbmFtZT1zY2hlbWFfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZT10YWJsZV9uYW1lLAorICAgICAgICAg ICAgICAgICAgICBpc19wZ3N0YXR0dXBsZT1pc19wZ3N0YXR0dXBsZSwgdGlkPXRpZAorICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAor ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBkZWYgZ2V0X3JldmVyc2Vf ZW5naW5lZXJlZF9zcWwoc2VsZiwgZGlkLCBzY2lkLCB0aWQsIG1haW5fc3FsLCBkYXRhKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVzIHJldmVyc2UgZW5n aW5lZXJlZCBzcWwgZm9yCisgICAgICAgIHRoZSB0YWJsZSBvYmplY3QKKworICAgICAgICAgQXJn czoKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICBtYWluX3NxbDogTGlzdCBj b250YWlucyBhbGwgdGhlIHJldmVyc2VkIGVuZ2luZWVyZWQgc3FsCisgICAgICAgICAgIGRhdGE6 IFRhYmxlJ3MgRGF0YQorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIyAxKSBSZXZlcnNlIGVuZ2lu ZWVyZWQgc3FsIGZvciBUQUJMRQorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisgICAgICAgICIiIgorCisgICAgICAgICMgVGFibGUgJiBTY2hlbWEgZGVjbGFy YXRpb24gc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gY2hpbGQgbm9kZXMKKyAgICAgICAgc2No ZW1hID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUgPSBkYXRhWyduYW1lJ10KKworICAg ICAgICBkYXRhID0gc2VsZi5fZm9ybWF0dGVyKGRpZCwgc2NpZCwgdGlkLCBkYXRhKQorCisgICAg ICAgICMgTm93IHdlIGhhdmUgYWxsIGxpcyBvZiBjb2x1bW5zIHdoaWNoIHdlIG5lZWQKKyAgICAg ICAgIyB0byBpbmNsdWRlIGluIG91ciBjcmVhdGUgZGVmaW5pdGlvbiwgTGV0J3MgZm9ybWF0IHRo ZW0KKyAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGE6CisgICAgICAgICAgICBmb3IgYyBpbiBk YXRhWydjb2x1bW5zJ106CisgICAgICAgICAgICAgICAgaWYgJ2F0dGFjbCcgaW4gYzoKKyAgICAg ICAgICAgICAgICAgICAgY1snYXR0YWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGNbJ2F0dGFjbCdd LCBzZWxmLmNvbHVtbl9hY2wpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHR5cGUgZm9yICdb XScgaW4gaXQKKyAgICAgICAgICAgICAgICBpZiAnY2x0eXBlJyBpbiBjOgorICAgICAgICAgICAg ICAgICAgICBjWydjbHR5cGUnXSwgY1snaGFzU3FyQnJhY2tldCddID0gXAorICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5fY2x0eXBlX2Zvcm1hdHRlcihjWydjbHR5cGUnXSkKKworICAgICAg ICBzcWxfaGVhZGVyID0gdSItLSBUYWJsZTogezB9XG5cbi0tICIuZm9ybWF0KAorICAgICAgICAg ICAgc2VsZi5xdElkZW50KHNlbGYuY29ubiwgZGF0YVsnc2NoZW1hJ10sIGRhdGFbJ25hbWUnXSkp CisKKyAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorCisgICAgICAgIHNxbF9oZWFk ZXIgPSBzcWxfaGVhZGVyLnN0cmlwKCdcbicpCisgICAgICAgIHNxbF9oZWFkZXIgKz0gJ1xuJwor CisgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKKyAgICAgICAgbWFpbl9zcWwuYXBwZW5kKHNx bF9oZWFkZXIpCisKKyAgICAgICAgIyBQYXJzZSBwcml2aWxlZ2UgZGF0YQorICAgICAgICBpZiAn cmVsYWNsJyBpbiBkYXRhOgorICAgICAgICAgICAgZGF0YVsncmVsYWNsJ10gPSBwYXJzZV9wcml2 X3RvX2RiKGRhdGFbJ3JlbGFjbCddLCBzZWxmLmFjbCkKKworICAgICAgICAjIGlmIHRhYmxlIGlz IHBhcnRpdGlvbnMgdGhlbgorICAgICAgICBpZiAncmVsaXNwYXJ0aXRpb24nIGluIGRhdGEgYW5k IGRhdGFbJ3JlbGlzcGFydGl0aW9uJ106CisgICAgICAgICAgICB0YWJsZV9zcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0YWJsZV9zcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKKworICAgICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCisgICAgICAgIHRhYmxl X3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCB0YWJsZV9zcWwpCisgICAgICAgIG1haW5f c3FsLmFwcGVuZCh0YWJsZV9zcWwuc3RyaXAoJ1xuJykpCisKKyAgICAgICAgIiIiCisgICAgICAg ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgICMgMikgUmV2 ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IgSU5ERVgKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwgdGlkPXRpZCkKKyAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGlkPWRpZCwgdGlkPXRpZCwgaWR4PXJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisKKyAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhID0gZGljdChyZXNbJ3Jvd3Mn XVswXSkKKyAgICAgICAgICAgICMgQWRkaW5nIHBhcmVudCBpbnRvIGRhdGEgZGljdCwgd2lsbCBi ZSB1c2luZyBpdCB3aGlsZSBjcmVhdGluZyBzcWwKKyAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSdd ID0gc2NoZW1hCisgICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gdGFibGUKKyAgICAgICAgICAg ICMgV2UgYWxzbyBuZWVkIHRvIGZlY3RoIGNvbHVtbnMgb2YgaW5kZXgKKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sdW1uX2RldGFp bHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeD1yb3dbJ29p ZCddKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgIyAn YXR0ZGVmJyBjb21lcyB3aXRoIHF1b3RlcyBmcm9tIHF1ZXJ5IHNvIHdlIG5lZWQgdG8gc3RyaXAg dGhlbQorICAgICAgICAgICAgIyAnb3B0aW9ucycgd2UgbmVlZCB0cnVlL2ZhbHNlIHRvIHJlbmRl ciBzd2l0Y2gKKyAgICAgICAgICAgICMgQVNDKGZhbHNlKS9ERVNDKHRydWUpCisgICAgICAgICAg ICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGNvbHMgPSBbXQorICAgICAgICAgICAgZm9yIGNv bF9yb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgICMgV2UgbmVlZCBhbGwgZGF0 YSBhcyBjb2xsZWN0aW9uIGZvciBDb2x1bW5zTW9kZWwKKyAgICAgICAgICAgICAgICBjb2xzX2Rh dGEgPSB7CisgICAgICAgICAgICAgICAgICAgICdjb2xuYW1lJzogY29sX3Jvd1snYXR0ZGVmJ10u c3RyaXAoJyInKSwKKyAgICAgICAgICAgICAgICAgICAgJ2NvbGxzcGNuYW1lJzogY29sX3Jvd1sn Y29sbG5zcG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgJ29wX2NsYXNzJzogY29sX3Jvd1sn b3BjbmFtZSddLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiBjb2xfcm93 WydvcHRpb25zJ11bMF0gPT0gJ0RFU0MnOgorICAgICAgICAgICAgICAgICAgICBjb2xzX2RhdGFb J3NvcnRfb3JkZXInXSA9IFRydWUKKyAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChjb2xz X2RhdGEpCisKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgc2FtZSBkYXRhIGFzIHN0cmluZyB0 byBkaXNwbGF5IGluIHByb3BlcnRpZXMgd2luZG93CisgICAgICAgICAgICAgICAgIyBJZiBtdWx0 aXBsZSBjb2x1bW4gdGhlbiBzZXBhcmF0ZSBpdCBieSBjb2xvbgorICAgICAgICAgICAgICAgIGNv bHNfc3RyID0gY29sX3Jvd1snYXR0ZGVmJ10KKyAgICAgICAgICAgICAgICBpZiBjb2xfcm93Wydj b2xsbnNwbmFtZSddOgorICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnIENPTExBVEUg JyArIGNvbF9yb3dbJ2NvbGxuc3BuYW1lJ10KKyAgICAgICAgICAgICAgICBpZiBjb2xfcm93Wydv cGNuYW1lJ106CisgICAgICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgJyArIGNvbF9yb3db J29wY25hbWUnXQorICAgICAgICAgICAgICAgIGlmIGNvbF9yb3dbJ29wdGlvbnMnXVswXSA9PSAn REVTQyc6CisgICAgICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgREVTQycKKyAgICAgICAg ICAgICAgICBjb2xzLmFwcGVuZChjb2xzX3N0cikKKworICAgICAgICAgICAgIyBQdXNoIGFzIGNv bGxlY3Rpb24KKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKyAgICAgICAg ICAgICMgUHVzaCBhcyBzdHJpbmcKKyAgICAgICAgICAgIGRhdGFbJ2NvbHMnXSA9ICcsICcuam9p bihjb2xzKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyID0gdSJcbi0tIEluZGV4OiB7MH1cblxu LS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgaW5kZXhfc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNv bm4pCisgICAgICAgICAgICBpbmRleF9zcWwgKz0gIlxuIgorICAgICAgICAgICAgaW5kZXhfc3Fs ICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsdGVy LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAor ICAgICAgICAgICAgaW5kZXhfc3FsID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIGluZGV4X3Nx bCkKKyAgICAgICAgICAgIG1haW5fc3FsLmFwcGVuZChzcWxfaGVhZGVyICsgJ1xuXG4nICsgaW5k ZXhfc3FsLnN0cmlwKCdcbicpKQorCisgICAgICAgICIiIgorICAgICAgICAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgICMgMykgUmV2ZXJzZSBlbmdpbmVl cmVkIHNxbCBmb3IgVFJJR0dFUlMKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkKQorICAgICAgICBz dGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAg ICAgIHRyaWdnZXJfc3FsID0gJycKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHRyaWQ9cm93WydvaWQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5 c29pZCkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEg PSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAgIyBBZGRpbmcgcGFyZW50IGludG8g ZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAgICAg ICAgZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKKyAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSB0 YWJsZQorCisgICAgICAgICAgICBpZiBkYXRhWyd0Z25hcmdzJ10gPiAxOgorICAgICAgICAgICAg ICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhhbiAxIGFyZ3VtZW50cywKKyAg ICAgICAgICAgICAgICAjIGxldCdzIGpvaW4gdGhlbQorICAgICAgICAgICAgICAgIGRhdGFbJ3Rn YXJncyddID0gJywgJy5qb2luKGRhdGFbJ3RnYXJncyddKQorCisgICAgICAgICAgICBpZiBsZW4o ZGF0YVsndGdhdHRyJ10pID4gMToKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2lu KGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xp c3Q9Y29sdW1ucykKKworICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNl dCkKKyAgICAgICAgICAgICAgICAjICd0Z2F0dHInIGNvbnRhaW5zIGxpc3Qgb2YgY29sdW1ucyBm cm9tIHRhYmxlIHVzZWQgaW4gdHJpZ2dlcgorICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBbXQor CisgICAgICAgICAgICAgICAgZm9yIGNvbF9yb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAg ICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7J2NvbHVtbic6IGNvbF9yb3dbJ25hbWUnXX0pCisK KyAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAgICAgICAgICAg IGRhdGEgPSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKKworICAgICAgICAgICAgc3FsX2hlYWRl ciA9IHUiXG4tLSBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQorCisg ICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorCisgICAgICAg ICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRp ZAorICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAg ICAgICAgICAgdHJpZ2dlcl9zcWwgPSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgdHJpZ2dlcl9zcWwu c3RyaXAoJ1xuJykKKworICAgICAgICAgICAgIyBJZiB0cmlnZ2VyIGlzIGRpc2FibGVkIHRoZW4g YWRkIHNxbCBjb2RlIGZvciB0aGUgc2FtZQorICAgICAgICAgICAgaWYgbm90IGRhdGFbJ2lzX2Vu YWJsZV90cmlnZ2VyJ106CisgICAgICAgICAgICAgICAgdHJpZ2dlcl9zcWwgKz0gJ1xuXG4nCisg ICAgICAgICAgICAgICAgdHJpZ2dlcl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsK KyAgICAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgIyBBZGQg aW50byBtYWluIHNxbAorICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZS5zdWIoJ1xuezIsfScs ICdcblxuJywgdHJpZ2dlcl9zcWwpCisgICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQodHJpZ2dl cl9zcWwpCisKKyAgICAgICAgIiIiCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyAgICAgICAgIyA0KSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBSVUxF UworICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAg ICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAg ICAgIFtzZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgdGlkPXRp ZCkKKworICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJ1bGVzX3NxbCA9ICdcbicKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1w bGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXQorICAgICAgICAgICAgKSwgcmlkPXJvd1snb2lk J10sIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmVzX2RhdGEgPSBwYXJzZV9ydWxlX2RlZmluaXRp b24ocmVzKQorICAgICAgICAgICAgcnVsZXNfc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNx bCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPXJlc19kYXRhLCBkaXNwbGF5X2NvbW1lbnRzPVRy dWUpCisKKyAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKKyAgICAgICAgICAgIHJ1bGVz X3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBydWxlc19zcWwpCisgICAgICAgICAgICBt YWluX3NxbC5hcHBlbmQocnVsZXNfc3FsKQorCisgICAgICAgICIiIgorICAgICAgICAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIyA1KSBSZXZlcnNl IGVuZ2luZWVyZWQgc3FsIGZvciBQQVJUSVRJT05TCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAiIiIKKyAgICAgICAgaWYgJ2lzX3Bh cnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19wYXJ0aXRpb25lZCddOgorICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9k ZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwg dGlkPXRpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAg IHNxbF9oZWFkZXIgPSB1IlxuLS0gUGFydGl0aW9ucyBTUUwiCisgICAgICAgICAgICBwYXJ0aXRp b25fc3FsID0gJycKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgICAgIHBhcnRfZGF0YSA9IGRpY3QoKQorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsn cGFydGl0aW9uZWRfdGFibGVfbmFtZSddID0gZGF0YVsnbmFtZSddCisgICAgICAgICAgICAgICAg cGFydF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAg ICAgIHBhcnRfZGF0YVsnc2NoZW1hJ10gPSByb3dbJ3NjaGVtYV9uYW1lJ10KKyAgICAgICAgICAg ICAgICBwYXJ0X2RhdGFbJ3JlbGlzcGFydGl0aW9uJ10gPSBUcnVlCisgICAgICAgICAgICAgICAg cGFydF9kYXRhWyduYW1lJ10gPSByb3dbJ25hbWUnXQorICAgICAgICAgICAgICAgIHBhcnRfZGF0 YVsncGFydGl0aW9uX3ZhbHVlJ10gPSByb3dbJ3BhcnRpdGlvbl92YWx1ZSddCisgICAgICAgICAg ICAgICAgcGFydF9kYXRhWydpc19wYXJ0aXRpb25lZCddID0gcm93IFsnaXNfcGFydGl0aW9uZWQn XQorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0aW9uX3NjaGVtZSddID0gcm93Wydw YXJ0aXRpb25fc2NoZW1lJ10KKworICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9zcWwgKz0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi5wYXJ0aXRp b25fdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRh dGE9cGFydF9kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgIyBBZGQgaW50byBt YWluIHNxbAorICAgICAgICAgICAgcGFydGl0aW9uX3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xu XG4nLCBwYXJ0aXRpb25fc3FsKQorICAgICAgICAgICAgbWFpbl9zcWwuYXBwZW5kKHNxbF9oZWFk ZXIgKyAnXG5cbicgKyBwYXJ0aXRpb25fc3FsLnN0cmlwKCdcbicpKQorCisgICAgICAgIHNxbCA9 ICdcbicuam9pbihtYWluX3NxbCkKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNw b25zZT1zcWwuc3RyaXAoJ1xuJykpCisKKyAgICBkZWYgcmVzZXRfc3RhdGlzdGljcyhzZWxmLCBz Y2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0 IHN0YXRpc3RpY3Mgb2YgdGFibGUKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgc2NpZDog U2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgIiIiCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAncmVzZXRfc3RhdHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD10aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlRhYmxlIHN0YXRpc3RpY3MgaGF2ZSBi ZWVuIHJlc2V0IiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAg ICdpZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgZGVmIGdldF9wYXJ0aXRpb25fc2NoZW1lKHNlbGYsIGRhdGEpOgorICAgICAgICBw YXJ0aXRpb25fc2NoZW1lID0gTm9uZQorICAgICAgICBpZiAncGFydGl0aW9uX3R5cGUnIGluIGRh dGEgXAorICAgICAgICAgICAgICAgIGFuZCBkYXRhWydwYXJ0aXRpb25fdHlwZSddID09ICdyYW5n ZSc6CisgICAgICAgICAgICBwYXJ0aXRpb25fc2NoZW1lID0gJ1JBTkdFICgnCisgICAgICAgIGVs aWYgJ3BhcnRpdGlvbl90eXBlJyBpbiBkYXRhIFwKKyAgICAgICAgICAgICAgICBhbmQgZGF0YVsn cGFydGl0aW9uX3R5cGUnXSA9PSAnbGlzdCc6CisgICAgICAgICAgICBwYXJ0aXRpb25fc2NoZW1l ID0gJ0xJU1QgKCcKKworICAgICAgICBmb3Igcm93IGluIGRhdGFbJ3BhcnRpdGlvbl9rZXlzJ106 CisgICAgICAgICAgICBpZiByb3dbJ2tleV90eXBlJ10gPT0gJ2NvbHVtbic6CisgICAgICAgICAg ICAgICAgcGFydGl0aW9uX3NjaGVtZSArPSBzZWxmLnF0SWRlbnQoCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuY29ubiwgcm93WydwdF9jb2x1bW4nXSkgKyAnLCAnCisgICAgICAgICAgICBlbGlm IHJvd1sna2V5X3R5cGUnXSA9PSAnZXhwcmVzc2lvbic6CisgICAgICAgICAgICAgICAgcGFydGl0 aW9uX3NjaGVtZSArPSByb3dbJ2V4cHJlc3Npb24nXSArICcsICcKKworICAgICAgICAjIFJlbW92 ZSBleHRyYSBzcGFjZSBhbmQgY29tbWEKKyAgICAgICAgaWYgbGVuKGRhdGFbJ3BhcnRpdGlvbl9r ZXlzJ10pID4gMDoKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zY2hlbWUgPSBwYXJ0aXRpb25fc2No ZW1lWzotMl0KKyAgICAgICAgcGFydGl0aW9uX3NjaGVtZSArPSAnKScKKworICAgICAgICByZXR1 cm4gcGFydGl0aW9uX3NjaGVtZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiB2YWxpZGF0 ZV9jb25zdHJhaW5zKGtleSwgZGF0YSk6CisKKyAgICAgICAgaWYga2V5ID09ICdwcmltYXJ5X2tl eScgb3Iga2V5ID09ICd1bmlxdWVfY29uc3RyYWludCc6CisgICAgICAgICAgICBpZiAnY29sdW1u cycgaW4gZGF0YSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPiAwOgorICAgICAgICAgICAgICAg IHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZQorICAgICAgICBlbGlmIGtleSA9PSAnZm9yZWlnbl9rZXknOgorICAgICAgICAgICAgaWYg J29pZCcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBbJ2NvbHVtbnMn XToKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0 YW5jZShkYXRhW2FyZ10sIGxpc3QpIGFuZCBsZW4oZGF0YVthcmddKSA8IDE6CisgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgICAgIGlmICdhdXRvaW5k ZXgnIGluIGRhdGEgYW5kIGRhdGFbJ2F1dG9pbmRleCddIGFuZCBcCisgICAgICAgICAgICAgICAg ICAgICAgICAoJ2NvdmVyaW5naW5kZXgnIG5vdCBpbiBkYXRhIG9yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2NvdmVyaW5naW5kZXgnXSA9 PSAnJyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICAgICBy ZXR1cm4gVHJ1ZQorCisgICAgICAgIGVsaWYga2V5ID09ICdjaGVja19jb25zdHJhaW50JzoKKyAg ICAgICAgICAgIGZvciBhcmcgaW4gWydjb25zcmMnXToKKyAgICAgICAgICAgICAgICBpZiBhcmcg bm90IGluIGRhdGEgb3IgZGF0YVthcmddID09ICcnOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZWxpZiBrZXkgPT0g J2V4Y2x1ZGVfY29uc3RyYWludCc6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmV0dXJu IFRydWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY2hlY2tfYW5kX2NvbnZlcnRfbmFt ZV90b19zdHJpbmcoZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgY2hlY2sgYW5kIGNvdmVydCB0YWJsZSB0byBzdHJpbmcgaW5jYXNlCisgICAgICAgIGl0IGlz IG51bWVyaWMKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZGF0YTogZGF0YSBkaWN0CisK KyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFVwZGF0ZWQgZGF0YSBkaWN0CisgICAgICAg ICIiIgorICAgICAgICAjIEZvciBQeXRob24yLCBpdCBjYW4gYmUgaW50LCBsb25nLCBmbG9hdAor ICAgICAgICBpZiBoYXNhdHRyKHN0ciwgJ2RlY29kZScpOgorICAgICAgICAgICAgaWYgaXNpbnN0 YW5jZShkYXRhWyduYW1lJ10sIChpbnQsIGxvbmcsIGZsb2F0KSk6CisgICAgICAgICAgICAgICAg ZGF0YVsnbmFtZSddID0gc3RyKGRhdGFbJ25hbWUnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICMgRm9yIFB5dGhvbjMsIGl0IGNhbiBiZSBpbnQsIGZsb2F0CisgICAgICAgICAgICBpZiBp c2luc3RhbmNlKGRhdGFbJ25hbWUnXSwgKGludCwgZmxvYXQpKToKKyAgICAgICAgICAgICAgICBk YXRhWyduYW1lJ10gPSBzdHIoZGF0YVsnbmFtZSddKQorICAgICAgICByZXR1cm4gZGF0YQorCisg ICAgZGVmIGdldF9pbmRleF9jb25zdHJhaW50X3NxbChzZWxmLCBkaWQsIHRpZCwgZGF0YSk6Cisg ICAgICAgICIiIgorICAgICAgICAgQXJnczoKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAg ICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZyb20gdGhlIGNsaWVudAorCisgICAgICAg IFJldHVybnM6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBz cWwgZm9yIGluZGV4IGNvbnN0cmFpbnRzCisgICAgICAgIChQcmltYXJ5IEtleSAmIFVuaXF1ZSkK KyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IFtdCisgICAgICAgICMgV2Ugd2lsbCBmZXRjaCBh bGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKKyAgICAgICAgaW5kZXhfY29u c3RyYWludHMgPSB7CisgICAgICAgICAgICAncCc6ICdwcmltYXJ5X2tleScsICd1JzogJ3VuaXF1 ZV9jb25zdHJhaW50JworICAgICAgICB9CisKKyAgICAgICAgZm9yIGN0eXBlIGluIGluZGV4X2Nv bnN0cmFpbnRzLmtleXMoKToKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBp biBkYXRhCisgICAgICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFk ZC9jaGFuZ2UvZGVsZXRlCisgICAgICAgICAgICBpZiBpbmRleF9jb25zdHJhaW50c1tjdHlwZV0g aW4gZGF0YToKKyAgICAgICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVtpbmRleF9jb25zdHJh aW50c1tjdHlwZV1dCisgICAgICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBk ZWxldGVkCisgICAgICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6CisgICAg ICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAgICAg ICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAg ICAgICAgICAgIyBTcWwgZm9yIGRyb3AKKyAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5pbmRleF9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNl bGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgICAg ICBmb3IgYyBpbiBjb25zdHJhaW50WydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgICAgICAg ICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgICAgICBj Wyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3Bl cnRpZXNfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRp ZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQs IGNpZD1jWydvaWQnXSwgY29uc3RyYWludF90eXBlPWN0eXBlKQorICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3Fs KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVjdAorICAgICAgICAgICAg ICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykK KyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGlmICdhZGRlZCcg aW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsn YWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2No ZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10K KworICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gYWRkIG9iamVjdAorICAgICAgICAg ICAgICAgICAgICAgICAgaWYgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKGluZGV4X2NvbnN0cmFp bnRzW2N0eXBlXSwgYyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuaW5kZXhfY29uc3Ry YWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZT0nUFJJTUFSWSBLRVknCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBjdHlwZSA9PSAncCcgZWxzZSAnVU5JUVVFJworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRl ZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgezB9IGNvbnN0cmFpbnQnLmZvcm1hdChpbmRleF9jb25z dHJhaW50c1tjdHlwZV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAg ICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAg ICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0 dXJuIE5vbmUKKworICAgIGRlZiBnZXRfZm9yZWlnbl9rZXlfc3FsKHNlbGYsIHRpZCwgZGF0YSk6 CisgICAgICAgICIiIgorICAgICAgICAgQXJnczoKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAor ICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZyb20gdGhlIGNsaWVudAorCisgICAg ICAgIFJldHVybnM6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmll ZCBzcWwgZm9yIGZvcmVpZ24ga2V5CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSBbXQorICAg ICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQorICAgICAgICAjIElmIHllcyB0 aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCisgICAgICAgIGlmICdm b3JlaWduX2tleScgaW4gZGF0YToKKyAgICAgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydmb3Jl aWduX2tleSddCisgICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQK KyAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAg IGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1sn c2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSdd ID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKKyAg ICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2Vs Zi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNv bm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBj IGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1h J10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0 YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWdu X2tleV90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10pCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKKyAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAg ICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgICAgICAgICAgIyBTcWwg dG8gdXBkYXRlIG9iamVjdAorICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9k YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5zdHJpcCgn XG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90 IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygnZm9yZWlnbl9rZXknLCBjKToKKyAgICAgICAgICAg ICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5j b21wbGV0ZSBmb3IgZm9yZWlnbl9rZXkgY29uc3RyYWludCcKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorCisgICAgICAgICAgICAgICAgICAgIGlmICdj b2x1bW5zJyBpbiBjOgorICAgICAgICAgICAgICAgICAgICAgICAgY29scyA9IFtdCisgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgY29sIGluIGNbJ2NvbHVtbnMnXToKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb2xzLmFwcGVuZChjb2xbJ2xvY2FsX2NvbHVtbiddKQorCisgICAgICAg ICAgICAgICAgICAgICAgICBjb3ZlcmluZ2luZGV4ID0gc2VsZi5zZWFyY2hfY292ZXJpbmdpbmRl eCh0aWQsIGNvbHMpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvdmVyaW5naW5kZXgg aXMgTm9uZSBhbmQgJ2F1dG9pbmRleCcgaW4gYyBhbmQgY1snYXV0b2luZGV4J10gYW5kIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjb3ZlcmluZ2luZGV4JyBpbiBjIGFuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWydjb3ZlcmluZ2luZGV4 J10gIT0gJycpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQocmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlX2luZGV4LnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAo J1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2FkZGVkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0g ZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25h bWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3FsIHRvIGFkZCBvYmplY3QKKyAgICAgICAg ICAgICAgICAgICAgIyBDb2x1bW5zCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYu dmFsaWRhdGVfY29uc3RyYWlucygnZm9yZWlnbl9rZXknLCBjKToKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0 ZSBmb3IgZm9yZWlnbl9rZXkgY29uc3RyYWludCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorCisgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFy ZW50LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD1jWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKyAgICAgICAgICAgICAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgICAgICAgICAg Y1sncmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQorICAgICAgICAg ICAgICAgICAgICBjWydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQor CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICAgICAgICAgKS5zdHJp cCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgaWYg Y1snYXV0b2luZGV4J106CisgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfaW5k ZXguc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49 c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAg ICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBh cyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAg ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfY2hlY2tf Y29uc3RyYWludF9zcWwoc2VsZiwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgICBB cmdzOgorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIGRhdGE6IGRhdGEgZGlj dCBjb21pbmcgZnJvbSB0aGUgY2xpZW50CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBjaGVjayBjb25zdHJh aW50CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSBbXQorICAgICAgICAjIENoZWNrIGlmIGNv bnN0cmFpbnQgaXMgaW4gZGF0YQorICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hl Y2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCisgICAgICAgIGlmICdjaGVja19jb25zdHJhaW50JyBp biBkYXRhOgorICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2NoZWNrX2NvbnN0cmFpbnQn XQorICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAg ICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBp biBjb25zdHJhaW50WydkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSdd ID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFb J25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCisgICAgICAgICAg ICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2hlY2tf Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn ZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49 c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10g PSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsn bmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jaGVja19jb25z dHJhaW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHRpZD10aWQsIGNpZD1jWydvaWQnXSkKKyAgICAgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQorICAgICAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAg ICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgICAgICAgICAjIFNx bCB0byB1cGRhdGUgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAg ICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0 YT1vbGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiku c3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiAnYWRk ZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsn YWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEn XQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAg ICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygnY2hlY2tfY29u c3RyYWludCcsIGMpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciBjaGVja19jb25zdHJhaW50Jwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCisKKyAgICAg ICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl cl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5j aGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9YywgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAo J1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGxlbihzcWwpID4gMDoK KyAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAg ICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsKHNl bGYsIGRpZCwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgICBBcmdzOgorICAgICAg ICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJv bSB0aGUgY2xpZW50CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBleGNsdXNpb24gY29uc3RyYWludAorICAg ICAgICAiIiIKKyAgICAgICAgc3FsID0gW10KKyAgICAgICAgIyBDaGVjayBpZiBjb25zdHJhaW50 IGlzIGluIGRhdGEKKyAgICAgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBh ZGQvY2hhbmdlL2RlbGV0ZQorICAgICAgICBpZiAnZXhjbHVkZV9jb25zdHJhaW50JyBpbiBkYXRh OgorICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2V4Y2x1ZGVfY29uc3RyYWludCddCisg ICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgICAg IGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNv bnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBk YXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFt ZSddCisKKyAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKKyAgICAgICAgICAgICAg ICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn ZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49 c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10g PSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsn bmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25f Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10pCisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVz X3NxbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAg ICAgICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVjdAorICAgICAgICAgICAgICAgICAgICBzcWwu YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwn XSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3Ig YyBpbiBjb25zdHJhaW50WydhZGRlZCddOgorICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEn XSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRh WyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25z dHJhaW5zKCdleGNsdWRlX2NvbnN0cmFpbnQnLCBjKToKKyAgICAgICAgICAgICAgICAgICAgICAg IHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3Ig ZXhjbHVzaW9uX2NvbnN0cmFpbnQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdc blxuJy5qb2luKHNxbCkKKworICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4KKyAgICAg ICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNx bChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAgICByZXR1cm4gdSdcblxuJy5qb2luKHNx bCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0 X3NxbChzZWxmLCBkaWQsIHNjaWQsIHRpZCwgZGF0YSwgcmVzKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBjcmVhdGUvdXBkYXRlIHNxbCBmcm9tIG1v ZGVsIGRhdGEKKyAgICAgICAgY29taW5nIGZyb20gY2xpZW50CisgICAgICAgICIiIgorICAgICAg ICBpZiB0aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cydd WzBdCisgICAgICAgICAgICBvbGRfZGF0YSA9IHNlbGYuX2Zvcm1hdHRlcihkaWQsIHNjaWQsIHRp ZCwgb2xkX2RhdGEpCisKKyAgICAgICAgICAgICMgV2Ugd2lsbCBjb252ZXJ0IHByaXZpbGVnZXMg Y29taW5nIGZyb20gY2xpZW50IHJlcXVpcmVkCisgICAgICAgICAgICBpZiAncmVsYWNsJyBpbiBk YXRhOgorICAgICAgICAgICAgICAgIGZvciBtb2RlIGluIFsnYWRkZWQnLCAnY2hhbmdlZCcsICdk ZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgaW4gZGF0YVsncmVsYWNsJ106 CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWxhY2wnXVttb2RlXSA9IHBhcnNlX3By aXZfdG9fZGIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVsYWNsJ11bbW9k ZV0sIHNlbGYuYWNsCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMg SWYgbmFtZSBpcyBub3QgcHJlc2VudCBpbiByZXF1ZXN0IGRhdGEKKyAgICAgICAgICAgIGlmICdu YW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBvbGRfZGF0 YVsnbmFtZSddCisKKyAgICAgICAgICAgIGRhdGEgPSBCYXNlVGFibGVWaWV3LmNoZWNrX2FuZF9j b252ZXJ0X25hbWVfdG9fc3RyaW5nKGRhdGEpCisKKyAgICAgICAgICAgICMgSWYgbmFtZSBpZiBu b3QgcHJlc2VudAorICAgICAgICAgICAgaWYgJ3NjaGVtYScgbm90IGluIGRhdGE6CisgICAgICAg ICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBvbGRfZGF0YVsnc2NoZW1hJ10KKworICAgICAgICAg ICAgIyBGaWx0ZXIgb3V0IG5ldyB0YWJsZXMgZnJvbSBsaXN0LCB3ZSB3aWxsIHNlbmQgY29tcGxl dGUgbGlzdAorICAgICAgICAgICAgIyBhbmQgbm90IG5ld2x5IGFkZGVkIHRhYmxlcyBpbiB0aGUg bGlzdCBmcm9tIGNsaWVudAorICAgICAgICAgICAgIyBzbyB3ZSB3aWxsIGZpbHRlciBuZXcgdGFi bGVzIGhlcmUKKyAgICAgICAgICAgIGlmICdjb2xsX2luaGVyaXRzJyBpbiBkYXRhOgorICAgICAg ICAgICAgICAgIHBfbGVuID0gbGVuKG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCisgICAgICAg ICAgICAgICAgY19sZW4gPSBsZW4oZGF0YVsnY29sbF9pbmhlcml0cyddKQorICAgICAgICAgICAg ICAgICMgSWYgdGFibGUocykgYWRkZWQKKyAgICAgICAgICAgICAgICBpZiBjX2xlbiA+IHBfbGVu OgorICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX2FkZGVkJ10gPSBsaXN0 KAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkgLSBz ZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICMgSWYgdGFibGUocylyZW1vdmVkCisgICAgICAgICAgICAgICAgZWxpZiBj X2xlbiA8IHBfbGVuOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX3Jl bW92ZWQnXSA9IGxpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQob2xkX2RhdGFbJ2Nv bGxfaW5oZXJpdHMnXSkgLSBzZXQoZGF0YVsnY29sbF9pbmhlcml0cyddKQorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgIyBTYWZlIHNpZGUgdmVyaWZpY2F0aW9uLEluIGNh c2UgaXQgaGFwcGVucy4uCisgICAgICAgICAgICAgICAgIyBJZiB1c2VyIHJlbW92ZXMgYW5kIGFk ZHMgc2FtZSBudW1iZXIgb2YgdGFibGUKKyAgICAgICAgICAgICAgICAjIGVnIHJlbW92ZWQgb25l IHRhYmxlIGFuZCBhZGRlZCBvbmUgbmV3IHRhYmxlCisgICAgICAgICAgICAgICAgZWxpZiBjX2xl biA9PSBwX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19hZGRl ZCddID0gbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRhWydjb2xsX2luaGVy aXRzJ10pIC0gc2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCisgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19yZW1vdmVkJ10g PSBsaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG9sZF9kYXRhWydjb2xsX2luaGVy aXRzJ10pIC0gc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFi bGVfdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb19kYXRhPW9sZF9kYXRhLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQor ICAgICAgICAgICAgIyBSZW1vdmVzIHRyYWluaW5nIG5ldyBsaW5lcworICAgICAgICAgICAgU1FM ID0gU1FMLnN0cmlwKCdcbicpICsgJ1xuXG4nCisKKyAgICAgICAgICAgICMgUGFyc2UvRm9ybWF0 IGNvbHVtbnMgJiBjcmVhdGUgc3FsCisgICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YToK KyAgICAgICAgICAgICAgICAjIFBhcnNlIHRoZSBkYXRhIGNvbWluZyBmcm9tIGNsaWVudAorICAg ICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9wYXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhLCBtb2Rl PSdlZGl0JykKKworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBkYXRhWydjb2x1bW5zJ10KKyAg ICAgICAgICAgICAgICBjb2x1bW5fc3FsID0gJ1xuJworCisgICAgICAgICAgICAgICAgIyBJZiBj b2x1bW4ocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4g Y29sdW1uczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snZGVsZXRlZCdd OgorICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQor ICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorICAgICAg ICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AgY29sdW1uCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiAnaW5oZXJpdGVkZnJvbScgbm90IGluIGM6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29sdW1uX3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAnZGVs ZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25u PXNlbGYuY29ubikuc3RyaXAoJ1xuJykgKyAnXG5cbicKKworICAgICAgICAgICAgICAgICMgSWYg Y29sdW1uKHMpIGlzL2FyZSBjaGFuZ2VkCisgICAgICAgICAgICAgICAgIyBIZXJlIHdlIHdpbGwg YmUgbmVlZGluZyBwcmV2aW91cyBwcm9wZXJ0aWVzIG9mIGNvbHVtbgorICAgICAgICAgICAgICAg ICMgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSAmIHVwZGF0ZSBpdAorICAgICAgICAgICAgICAgIGlm ICdjaGFuZ2VkJyBpbiBjb2x1bW5zOgorICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb2x1 bW5zWydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRh dGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsn bmFtZSddCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydh dHRhY2wnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAgICAgICAgICAgICBw cm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp ZD1jWydhdHRudW0nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNob3dfc3lzX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0 ZW1fb2JqZWN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwpCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgICAgICAgICAg ICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICAgICAgICAgICAgICBv bGRfZGF0YVsnY2x0eXBlJ10sIG9sZF9kYXRhWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLl9jbHR5 cGVfZm9ybWF0dGVyKG9sZF9kYXRhWydjbHR5cGUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAg IG9sZF9kYXRhID0gQmFzZVRhYmxlVmlldy5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3Ry aW5nKG9sZF9kYXRhKQorCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsdHlwZSA9IHNlbGYu Z2V0X2Z1bGxfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsndHlw bnNwbmFtZSddLCBvbGRfZGF0YVsndHlwbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9sZF9kYXRhWydpc2R1cCddLCBvbGRfZGF0YVsnYXR0bmRpbXMnXSwgb2xkX2RhdGFbJ2F0 dHR5cG1vZCddCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAg ICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggJiBwcmVjaXNpb24gYm90aAorICAgICAgICAgICAg ICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFyY2gocicoXGQrKSwoXGQrKScsIGZ1bGx0eXBl KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2xkX2RhdGFbJ2F0dGxlbiddID0gaW50KG1hdGNoT2JqLmdyb3VwKDEpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IGlu dChtYXRjaE9iai5ncm91cCgyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCBvbmx5CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFyY2gocicoXGQrKScsIGZ1bGx0 eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoT2JqOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnYXR0bGVuJ10gPSBpbnQobWF0Y2hPYmou Z3JvdXAoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydhdHRw cmVjaXNpb24nXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnYXR0bGVuJ10gPSBOb25lCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9 IE5vbmUKKworICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2NsdHlwZSddID0gRGF0 YVR5cGVSZWFkZXIucGFyc2VfdHlwZV9uYW1lKG9sZF9kYXRhWydjbHR5cGUnXSkKKworICAgICAg ICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGFsdGVyIGNvbHVtbgorICAgICAgICAgICAgICAg ICAgICAgICAgaWYgJ2luaGVyaXRlZGZyb20nIG5vdCBpbiBjOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbHVtbl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ3Vw ZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9Yywgb19k YXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykgKyAnXG5cbicKKworICAg ICAgICAgICAgICAgICMgSWYgY29sdW1uKHMpIGlzL2FyZSBhZGRlZAorICAgICAgICAgICAgICAg IGlmICdhZGRlZCcgaW4gY29sdW1uczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29s dW1uc1snYWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0 YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWydu YW1lJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBjcmVhdGUgY29sdW1uCisg ICAgICAgICAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQmFzZVRh YmxlVmlldy5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKGMpCisKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmICdpbmhlcml0ZWRmcm9tJyBub3QgaW4gYzoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb2x1bW5fc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY29sdW1uX3RlbXBsYXRlX3Bh dGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKSArICdcblxuJworCisgICAgICAgICAgICAg ICAgIyBDb21iaW5lIGFsbCB0aGUgU1FMIHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgU1FMICs9 IGNvbHVtbl9zcWwuc3RyaXAoJ1xuJykKKworICAgICAgICAgICAgIyBDaGVjayBmb3IgcGFydGl0 aW9ucworICAgICAgICAgICAgaWYgJ3BhcnRpdGlvbnMnIGluIGRhdGE6CisgICAgICAgICAgICAg ICAgcGFydGl0aW9ucyA9IGRhdGFbJ3BhcnRpdGlvbnMnXQorICAgICAgICAgICAgICAgIHBhcnRp dGlvbnNfc3FsID0gJ1xuJworCisgICAgICAgICAgICAgICAgIyBJZiBwYXJ0aXRpb24ocykgaXMv YXJlIGRlbGV0ZWQKKyAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gcGFydGl0aW9uczoK KyAgICAgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiBwYXJ0aXRpb25zWydkZWxldGVkJ106Cisg ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGEgPSBkaWN0KCkKKyAgICAgICAgICAgICAg ICAgICAgICAgIHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1lID0gXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuZ2V0X3NjaGVtYV9hbmRfdGFibGVfbmFtZShyb3dbJ29pZCddKQorCisg ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGFbJ3BhcmVudF9zY2hlbWEnXSA9IG9sZF9k YXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJ0aXRp b25lZF90YWJsZV9uYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCisgICAgICAgICAgICAgICAgICAg ICAgICB0ZW1wX2RhdGFbJ3NjaGVtYSddID0gc2NoZW1hX25hbWUKKyAgICAgICAgICAgICAgICAg ICAgICAgIHRlbXBfZGF0YVsnbmFtZSddID0gdGFibGVfbmFtZQorCisgICAgICAgICAgICAgICAg ICAgICAgICAjIFNxbCBmb3IgZGV0YWNoIHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgcGFydGl0aW9uc19zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLCAnZGV0YWNo LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXRlbXBfZGF0YSwgY29u bj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpICsgJ1xuXG4nCisKKyAgICAgICAgICAgICAgICAjIElm IHBhcnRpdGlvbihzKSBpcy9hcmUgYWRkZWQKKyAgICAgICAgICAgICAgICBpZiAnYWRkZWQnIGlu IHBhcnRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YSA9IGRpY3QoKQorICAg ICAgICAgICAgICAgICAgICB0ZW1wX2RhdGFbJ3NjaGVtYSddID0gb2xkX2RhdGFbJ3NjaGVtYSdd CisgICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUn XQorICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgcGFydGl0aW9uIHR5cGUKKyAgICAgICAg ICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJ0aXRpb25fdHlwZSddID0gXAorICAgICAgICAgICAg ICAgICAgICAgICAgb2xkX2RhdGFbJ3BhcnRpdGlvbl9zY2hlbWUnXS5zcGxpdCgpWzBdLmxvd2Vy KCkKKyAgICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJ0aXRpb25zJ10gPSBwYXJ0aXRp b25zWydhZGRlZCddCisKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgKz0gXAor ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfcGFydGl0aW9uc19zcWwodGVtcF9kYXRh KS5zdHJpcCgnXG4nKSArICdcblxuJworCisgICAgICAgICAgICAgICAgIyBDb21iaW5lIGFsbCB0 aGUgU1FMIHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgU1FMICs9IHBhcnRpdGlvbnNfc3FsLnN0 cmlwKCdcbicpCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgaW5kZXggY29uc3RyYWludHMgYXJl IGFkZGVkL2NoYW5nZWQvZGVsZXRlZAorICAgICAgICAgICAgaW5kZXhfY29uc3RyYWludF9zcWwg PSBzZWxmLmdldF9pbmRleF9jb25zdHJhaW50X3NxbChkaWQsIHRpZCwgZGF0YSkKKyAgICAgICAg ICAgICMgSWYgd2UgaGF2ZSBpbmRleCBjb25zdHJhaW50IHNxbCB0aGVuIGFkIGl0IGluIG1haW4g c3FsCisgICAgICAgICAgICBpZiBpbmRleF9jb25zdHJhaW50X3NxbCBpcyBub3QgTm9uZToKKyAg ICAgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGluZGV4X2NvbnN0cmFpbnRfc3FsCisKKyAgICAg ICAgICAgICMgQ2hlY2sgaWYgZm9yZWlnbiBrZXkocykgaXMvYXJlIGFkZGVkL2NoYW5nZWQvZGVs ZXRlZAorICAgICAgICAgICAgZm9yZWlnbl9rZXlfc3FsID0gc2VsZi5nZXRfZm9yZWlnbl9rZXlf c3FsKHRpZCwgZGF0YSkKKyAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBmb3JlaWduIGtleSBzcWwg dGhlbiBhZCBpdCBpbiBtYWluIHNxbAorICAgICAgICAgICAgaWYgZm9yZWlnbl9rZXlfc3FsIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsgZm9yZWlnbl9rZXlfc3Fs CisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgY2hlY2sgY29uc3RyYWludChzKSBpcy9hcmUgYWRk ZWQvY2hhbmdlZC9kZWxldGVkCisgICAgICAgICAgICBjaGVja19jb25zdHJhaW50X3NxbCA9IHNl bGYuZ2V0X2NoZWNrX2NvbnN0cmFpbnRfc3FsKHRpZCwgZGF0YSkKKyAgICAgICAgICAgICMgSWYg d2UgaGF2ZSBjaGVjayBjb25zdHJhaW50IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3FsCisgICAg ICAgICAgICBpZiBjaGVja19jb25zdHJhaW50X3NxbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAg ICAgICBTUUwgKz0gJ1xuJyArIGNoZWNrX2NvbnN0cmFpbnRfc3FsCisKKyAgICAgICAgICAgICMg Q2hlY2sgaWYgZXhjbHVzaW9uIGNvbnN0cmFpbnQocykgaXMvYXJlIGFkZGVkL2NoYW5nZWQvZGVs ZXRlZAorICAgICAgICAgICAgZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRfZXhj bHVzaW9uX2NvbnN0cmFpbnRfc3FsKGRpZCwgdGlkLCBkYXRhKQorICAgICAgICAgICAgIyBJZiB3 ZSBoYXZlIGNoZWNrIGNvbnN0cmFpbnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKKyAgICAg ICAgICAgIGlmIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgICAgICBTUUwgKz0gJ1xuJyArIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbAorCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICByZXMgPSBOb25lCisgICAgICAgICAgICByZXF1aXJlZF9hcmdz ID0gWworICAgICAgICAgICAgICAgICduYW1lJworICAgICAgICAgICAgXQorCisgICAgICAgICAg ICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBp biBkYXRhOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0dGV4dCgnLS0gZGVmaW5pdGlv biBpbmNvbXBsZXRlJykKKworICAgICAgICAgICAgIyB2YWxpZGF0ZSBjb25zdHJhaW50IGRhdGEu CisgICAgICAgICAgICBmb3Iga2V5IGluIFsncHJpbWFyeV9rZXknLCAndW5pcXVlX2NvbnN0cmFp bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcmVpZ25fa2V5JywgJ2NoZWNrX2NvbnN0 cmFpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2x1ZGVfY29uc3RyYWludCddOgor ICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkYXRhIGFuZCBsZW4oZGF0YVtrZXldKSA+IDA6Cisg ICAgICAgICAgICAgICAgICAgIGZvciBjb25zdHJhaW50IGluIGRhdGFba2V5XToKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoa2V5LCBjb25z dHJhaW50KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0dGV4dCgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBm b3IgezB9Jy5mb3JtYXQoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAg ICAgICAgICAgIyBXZSB3aWxsIGNvbnZlcnQgcHJpdmlsZWdlcyBjb21pbmcgZnJvbSBjbGllbnQg cmVxdWlyZWQKKyAgICAgICAgICAgICMgaW4gc2VydmVyIHNpZGUgZm9ybWF0CisgICAgICAgICAg ICBpZiAncmVsYWNsJyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGFjbCddID0g cGFyc2VfcHJpdl90b19kYihkYXRhWydyZWxhY2wnXSwgc2VsZi5hY2wpCisKKyAgICAgICAgICAg ICMgUGFyc2UgJiBmb3JtYXQgY29sdW1ucworICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3BhcnNl X2Zvcm1hdF9jb2x1bW5zKGRhdGEpCisgICAgICAgICAgICBkYXRhID0gQmFzZVRhYmxlVmlldy5j aGVja19hbmRfY29udmVydF9uYW1lX3RvX3N0cmluZyhkYXRhKQorCisgICAgICAgICAgICBpZiAn Zm9yZWlnbl9rZXknIGluIGRhdGE6CisgICAgICAgICAgICAgICAgZm9yIGMgaW4gZGF0YVsnZm9y ZWlnbl9rZXknXToKKyAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10p CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQorCisgICAgICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV9zY2hlbWEnXSA9IHJzZXRbJ3Jvd3Mn XVswXVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3RhYmxlJ10gPSBy c2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSAn JworICAgICAgICAgICAgaWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19w YXJ0aXRpb25lZCddOgorICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGtpbmQnXSA9ICdwJworICAg ICAgICAgICAgICAgICMgY3JlYXRlIHBhcnRpdGlvbiBzY2hlbWUKKyAgICAgICAgICAgICAgICBk YXRhWydwYXJ0aXRpb25fc2NoZW1lJ10gPSBzZWxmLmdldF9wYXJ0aXRpb25fc2NoZW1lKGRhdGEp CisgICAgICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSBzZWxmLmdldF9wYXJ0aXRpb25zX3Nx bChkYXRhKQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgIyBBcHBlbmQg U1FMIGZvciBwYXJ0aXRpb25zCisgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIHBhcnRpdGlvbnNf c3FsCisKKyAgICAgICAgU1FMID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIFNRTCkKKyAgICAg ICAgU1FMID0gU1FMLnN0cmlwKCdcbicpCisKKyAgICAgICAgcmV0dXJuIFNRTCwgZGF0YVsnbmFt ZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFbJ25hbWUnXQorCisgICAgZGVmIHVw ZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGRhdGEsIHJlcywgcGFyZW50X2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBh biBleGlzdGluZyB0YWJsZSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAg dGlkOiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBEYXRhIHRvIHVwZGF0ZQorICAgICAgICAg ICByZXM6IFRhYmxlIHByb3BlcnRpZXMKKyAgICAgICAgICAgcGFyZW50X2lkOiBwYXJlbnQgdGFi bGUgaWQgaWYgY3VycmVudCB0YWJsZSBpcyBwYXJ0aXRpb24gb2YgcGFyZW50CisgICAgICAgICAg ICAgICAgICAgIHRhYmxlIGVsc2Ugbm9uZQorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgcmVsa2luZCA9IHJlc1sncmVsa2luZCddIGlmICdyZWxraW5kJyBpbiByZXMgZWxz ZSAnJworICAgICAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRfc3FsKGRpZCwgc2NpZCwgdGlk LCBkYXRhLCByZXMpCisKKyAgICAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJpcCgn ICcpCisgICAgICAgICAgICBzdGF0dXMsIHJlc3QgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo U1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3QpCisKKyAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfc2NoZW1hX29pZC5zcWwnXSksIHRp ZD10aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlc3QgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQorCisgICAgICAgICAgICBp ZiBub3QgcGFyZW50X2lkOgorICAgICAgICAgICAgICAgIHBhcmVudF9pZCA9IHNjaWQKKworICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVw cmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHRpZCwKKyAg ICAgICAgICAgICAgICAgICAgcGFyZW50X2lkLAorICAgICAgICAgICAgICAgICAgICBuYW1lLAor ICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlvbiIgaWYgKCdpc19wYXJ0aXRp b25lZCcgaW4gcmVzWydyb3dzJ11bMF0gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVswXVsnaXNfcGFydGl0aW9uZWQnXSkgb3IKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubm9kZV90eXBl ID09ICdwYXJ0aXRpb24nIGVsc2UgImljb24tdGFibGUiLAorICAgICAgICAgICAgICAgICAgICBp c19wYXJ0aXRpb25lZD1UcnVlIGlmIHJlbGtpbmQgPT0gJ3AnIGVsc2UgRmFsc2UsCisgICAgICAg ICAgICAgICAgICAgIHBhcmVudF9zY2hlbWFfaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICAgICAg c2NoZW1hX2lkPXJlc3RbJ3Jvd3MnXVswXVsnc2NpZCddLAorICAgICAgICAgICAgICAgICAgICBz Y2hlbWFfbmFtZT1yZXN0Wydyb3dzJ11bMF1bJ25zcG5hbWUnXQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBk ZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHJlcyk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBv ZiB0aGUgc2VsZWN0ZWQgdGFibGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBkaWQ6ICBEYXRhYmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAg ICAgICAgIHJlczogVGFibGUvUGFydGl0aW9uIHRhYmxlIHByb3BlcnRpZXMKKworICAgICAgICBS ZXR1cm5zOgorICAgICAgICAgICAgSlNPTiBvZiBzZWxlY3RlZCB0YWJsZSBub2RlCisgICAgICAg ICIiIgorICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICBkYXRhWyd2YWN1 dW1fc2V0dGluZ3Nfc3RyJ10gPSAiIgorCisgICAgICAgIGlmIGRhdGFbJ3RhYmxlX3ZhY3V1bV9z ZXR0aW5nc19zdHInXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRhdGFbJ3ZhY3V1bV9zZXR0 aW5nc19zdHInXSArPSBkYXRhWworICAgICAgICAgICAgICAgICd0YWJsZV92YWN1dW1fc2V0dGlu Z3Nfc3RyJ10ucmVwbGFjZSgnLCcsICdcbicpCisKKyAgICAgICAgaWYgZGF0YVsndG9hc3RfdGFi bGVfdmFjdXVtX3NldHRpbmdzX3N0ciddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGF0YVsn dmFjdXVtX3NldHRpbmdzX3N0ciddICs9ICdcbicgKyAnXG4nLmpvaW4oCisgICAgICAgICAgICAg ICAgWyd0b2FzdF8nICsgc2V0dGluZyBmb3Igc2V0dGluZyBpbiBkYXRhWworICAgICAgICAgICAg ICAgICAgICAndG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0cicKKyAgICAgICAgICAgICAg ICBdLnNwbGl0KCcsJyldCisgICAgICAgICAgICApCisgICAgICAgIGRhdGFbJ3ZhY3V1bV9zZXR0 aW5nc19zdHInXSA9IGRhdGFbCisgICAgICAgICAgICAndmFjdXVtX3NldHRpbmdzX3N0cicKKyAg ICAgICAgXS5yZXBsYWNlKCI9IiwgIiA9ICIpCisKKyAgICAgICAgZGF0YSA9IHNlbGYuX2Zvcm1h dHRlcihkaWQsIHNjaWQsIHRpZCwgZGF0YSkKKworICAgICAgICAjIEZldGNoIHBhcnRpdGlvbiBv ZiB0aGlzIHRhYmxlIGlmIGl0IGlzIHBhcnRpdGlvbmVkIHRhYmxlLgorICAgICAgICBpZiAnaXNf cGFydGl0aW9uZWQnIGluIGRhdGEgYW5kIGRhdGFbJ2lzX3BhcnRpdGlvbmVkJ106CisgICAgICAg ICAgICAjIGdldCB0aGUgcGFydGl0aW9uIHR5cGUKKyAgICAgICAgICAgIGRhdGFbJ3BhcnRpdGlv bl90eXBlJ10gPSBkYXRhWydwYXJ0aXRpb25fc2NoZW1lJ10uc3BsaXQoKVswXS5sb3dlcigpCisK KyAgICAgICAgICAgIHBhcnRpdGlvbnMgPSBbXQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCkKKyAgICAgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9uYW1lID0gcm93WyduYW1lJ10KKyAg ICAgICAgICAgICAgICAjIGlmIHNjaGVtYSBuYW1lIGlzIGRpZmZlcmVudCB0aGVuIGRpc3BsYXkg c2NoZW1hCisgICAgICAgICAgICAgICAgIyBxdWFsaWZpZWQgbmFtZSBvbiBVSS4KKyAgICAgICAg ICAgICAgICBpZiBkYXRhWydzY2hlbWEnXSAhPSByb3dbJ3NjaGVtYV9uYW1lJ106CisgICAgICAg ICAgICAgICAgICAgIHBhcnRpdGlvbl9uYW1lID0gcm93WydzY2hlbWFfbmFtZSddICsgJy4nICsg cm93WyduYW1lJ10KKworICAgICAgICAgICAgICAgIGlmIGRhdGFbJ3BhcnRpdGlvbl90eXBlJ10g PT0gJ3JhbmdlJzoKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VfcGFydCA9IHJvd1sncGFydGl0 aW9uX3ZhbHVlJ10uc3BsaXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZPUiBWQUxV RVMgRlJPTSAoJylbMV0uc3BsaXQoJykgVE8nKQorICAgICAgICAgICAgICAgICAgICByYW5nZV9m cm9tID0gcmFuZ2VfcGFydFswXQorICAgICAgICAgICAgICAgICAgICByYW5nZV90byA9IHJhbmdl X3BhcnRbMV1bMjotMV0KKworICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zLmFwcGVuZCh7 CisgICAgICAgICAgICAgICAgICAgICAgICAnb2lkJzogcm93WydvaWQnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdwYXJ0aXRpb25fbmFtZSc6IHBhcnRpdGlvbl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ3ZhbHVlc19mcm9tJzogcmFuZ2VfZnJvbSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICd2YWx1ZXNfdG8nOiByYW5nZV90bworICAgICAgICAgICAgICAgICAgICB9KQor ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhbmdlX3BhcnQgPSBc CisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ3BhcnRpdGlvbl92YWx1ZSddLnNwbGl0KCdG T1IgVkFMVUVTIElOICgnKVsxXQorCisgICAgICAgICAgICAgICAgICAgIHJhbmdlX2luID0gcmFu Z2VfcGFydFs6LTFdCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMuYXBwZW5kKHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdvaWQnOiByb3dbJ29pZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogcGFydGl0aW9uX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAndmFsdWVzX2luJzogcmFuZ2VfaW4KKyAgICAgICAgICAgICAgICAgICAgfSkK KworICAgICAgICAgICAgZGF0YVsncGFydGl0aW9ucyddID0gcGFydGl0aW9ucworCisgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAg ICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgZGVmIGdldF9wYXJ0aXRpb25zX3Nx bChzZWxmLCBwYXJ0aXRpb25zKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBpdGVyYXRlIGFsbCB0aGUgcGFydGl0aW9ucyBhbmQgY3JlYXRlIFNRTC4KKworICAgICAg ICA6cGFyYW0gcGFydGl0aW9uczogTGlzdCBvZiBwYXJ0aXRpb25zCisgICAgICAgICIiIgorICAg ICAgICBzcWwgPSAnJworCisgICAgICAgIGZvciByb3cgaW4gcGFydGl0aW9uc1sncGFydGl0aW9u cyddOgorICAgICAgICAgICAgcGFydF9kYXRhID0gZGljdCgpCisgICAgICAgICAgICBwYXJ0X2Rh dGFbJ3BhcnRpdGlvbmVkX3RhYmxlX25hbWUnXSA9IHBhcnRpdGlvbnNbJ25hbWUnXQorICAgICAg ICAgICAgcGFydF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBwYXJ0aXRpb25zWydzY2hlbWEnXQor CisgICAgICAgICAgICBpZiAnaXNfYXR0YWNoJyBpbiByb3cgYW5kIHJvd1snaXNfYXR0YWNoJ106 CisgICAgICAgICAgICAgICAgc2NoZW1hX25hbWUsIHRhYmxlX25hbWUgPSBcCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuZ2V0X3NjaGVtYV9hbmRfdGFibGVfbmFtZShyb3dbJ3BhcnRpdGlvbl9u YW1lJ10pCisKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3NjaGVtYSddID0gc2NoZW1hX25h bWUKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ25hbWUnXSA9IHRhYmxlX25hbWUKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFydF9kYXRhWydzY2hlbWEnXSA9IHBhcnRp dGlvbnNbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgcGFydF9kYXRhWydyZWxpc3BhcnRpdGlv biddID0gVHJ1ZQorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsnbmFtZSddID0gcm93WydwYXJ0 aXRpb25fbmFtZSddCisKKyAgICAgICAgICAgIGlmIHBhcnRpdGlvbnNbJ3BhcnRpdGlvbl90eXBl J10gPT0gJ3JhbmdlJzoKKyAgICAgICAgICAgICAgICByYW5nZV9mcm9tID0gcm93Wyd2YWx1ZXNf ZnJvbSddLnNwbGl0KCcsJykKKyAgICAgICAgICAgICAgICByYW5nZV90byA9IHJvd1sndmFsdWVz X3RvJ10uc3BsaXQoJywnKQorCisgICAgICAgICAgICAgICAgZnJvbV9zdHIgPSAnLCAnLmpvaW4o InswfSIuZm9ybWF0KGl0ZW0pIGZvciBpdGVtIGluIHJhbmdlX2Zyb20pCisgICAgICAgICAgICAg ICAgdG9fc3RyID0gJywgJy5qb2luKCJ7MH0iLmZvcm1hdChpdGVtKSBmb3IgaXRlbSBpbiByYW5n ZV90bykKKworICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0aW9uX3ZhbHVlJ10gPSAn Rk9SIFZBTFVFUyBGUk9NICgnICsgZnJvbV9zdHIgXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArICcpIFRPICgnICsgdG9fc3RyICsgJyknCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhbmdlX2luID0gcm93Wyd2YWx1ZXNfaW4nXS5z cGxpdCgnLCcpCisgICAgICAgICAgICAgICAgaW5fc3RyID0gJywgJy5qb2luKCJ7MH0iLmZvcm1h dChpdGVtKSBmb3IgaXRlbSBpbiByYW5nZV9pbikKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFb J3BhcnRpdGlvbl92YWx1ZSddID0gJ0ZPUiBWQUxVRVMgSU4gKCcgKyBpbl9zdHIgKyAnKScKKwor ICAgICAgICAgICAgaWYgJ2lzX2F0dGFjaCcgaW4gcm93IGFuZCByb3dbJ2lzX2F0dGFjaCddOgor ICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9zcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLCAnYXR0 YWNoLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1wYXJ0X2RhdGEsIGNvbm49c2Vs Zi5jb25uCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICBwYXJ0aXRpb25fc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgIGRhdGE9cGFydF9kYXRhLCBjb25uPXNlbGYuY29ubgorICAg ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgc3FsICs9IHBhcnRpdGlvbl9zcWwgKyAnXG4n CisKKyAgICAgICAgcmV0dXJuIHNxbAorCisgICAgZGVmIHRydW5jYXRlKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCwgcmVzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCB0cnVuY2F0ZSB0aGUgdGFibGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVyIElECisg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisg ICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgIiIiCisgICAgICAgICMgQmVsb3cgd2ls bCBkZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJvcCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxsCisg ICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rpbmc9J3V0Zi04JworICAgICAgICAp CisgICAgICAgICMgQ29udmVydCBzdHIgJ3RydWUnIHRvIGJvb2xlYW4gdHlwZQorICAgICAgICBp c19jYXNjYWRlID0ganNvbi5sb2FkcyhkYXRhWydjYXNjYWRlJ10pCisKKyAgICAgICAgZGF0YSA9 IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ3RydW5jYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGF0YSwgY2FzY2FkZT1pc19jYXNjYWRlKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0x LAorICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJUYWJsZSB0cnVuY2F0ZWQiKSwKKyAgICAgICAg ICAgIGRhdGE9eworICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorCisgICAgZGVmIGdldF9zY2hl bWFfYW5kX3RhYmxlX25hbWUoc2VsZiwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgc2NoZW1hIHF1YWxpZmllZCBuYW1lIG9mIHRoZQorICAg ICAgICBnaXZlbiB0YWJsZSBpZC4KKworICAgICAgICA6cGFyYW0gdGlkOiBUYWJsZSBJZC4KKyAg ICAgICAgIiIiCisgICAgICAgICMgR2V0IHNjaGVtYSBvaWQKKyAgICAgICAgc3RhdHVzLCBzY2lk ID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfc2NoZW1hX29pZC5zcWwnXSksIHRpZD10aWQpKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zY2lkKQorCisgICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUKKyAgICAg ICAgc3RhdHVzLCBzY2hlbWFfbmFtZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYS5zcWwn XSksIGNvbm49c2VsZi5jb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2Np ZCkKKyAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWFfbmFtZSkKKworICAgICAgICAj IEZldGNoIFRhYmxlIG5hbWUKKyAgICAgICAgc3RhdHVzLCB0YWJsZV9uYW1lID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfdGFibGUuc3Fs J10pLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2lkPXNjaWQsIHRpZD10aWQK KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10YWJsZV9uYW1lKQor CisgICAgICAgIHJldHVybiBzY2hlbWFfbmFtZSwgdGFibGVfbmFtZQorCisgICAgQHN0YXRpY21l dGhvZAorICAgIGRlZiBjb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKGRhdGEpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnZlcnQgbGVu Z3RoICYgcHJlY2lzaW9uIHRvIHN0cmluZworICAgICAgICB0byBoYW5kbGUgY2FzZSBsaWtlIHdo ZW4gdXNlciBnaXZlcyAwIGFzIGxlbmd0aAorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBk YXRhOiBEYXRhIGZyb20gY2xpZW50CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIENv bnZlcnRlZCBkYXRhCisgICAgICAgICIiIgorICAgICAgICBpZiAnYXR0bGVuJyBpbiBkYXRhIGFu ZCBkYXRhWydhdHRsZW4nXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRhdGFbJ2F0dGxlbidd ID0gc3RyKGRhdGFbJ2F0dGxlbiddKQorICAgICAgICBpZiAnYXR0cHJlY2lzaW9uJyBpbiBkYXRh IGFuZCBkYXRhWydhdHRwcmVjaXNpb24nXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRhdGFb J2F0dHByZWNpc2lvbiddID0gc3RyKGRhdGFbJ2F0dHByZWNpc2lvbiddKQorICAgICAgICByZXR1 cm4gZGF0YQorCisgICAgZGVmIHNlYXJjaF9jb3ZlcmluZ2luZGV4KHNlbGYsIHRpZCwgY29scyk6 CisgICAgICAgICIiIgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdGlkOiBUYWJsZSBpZAor ICAgICAgICAgIGNvbHM6IGNvbHVtbiBsaXN0CisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAg ICAiIiIKKworICAgICAgICBjb2xzID0gc2V0KGNvbHMpCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludHMuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVz LCBjb25zdHJhaW50cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oY29uc3RyYWludHMpCisK KyAgICAgICAgZm9yIGNvc3RybnQgaW4gY29uc3RyYWludHNbJ3Jvd3MnXToKKworICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdnZXRfY29scy5zcWwnXSksCisgICAgICAgICAg ICAgICAgY2lkPWNvc3RybnRbJ29pZCddLAorICAgICAgICAgICAgICAgIGNvbGNudD1jb3N0cm50 WydpbmRuYXR0cyddKQorICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQorCisgICAgICAg ICAgICBpbmRleGNvbHMgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHIgaW4gcmVzdFsncm93cydd OgorICAgICAgICAgICAgICAgIGluZGV4Y29scy5hZGQoclsnY29sdW1uJ10uc3RyaXAoJyInKSkK KworICAgICAgICAgICAgaWYgbGVuKGNvbHMgLSBpbmRleGNvbHMpID09IGxlbihpbmRleGNvbHMg LSBjb2xzKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBjb3N0cm50WyJpZHhuYW1lIl0K KworICAgICAgICByZXR1cm4gTm9uZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2JhY2t1 cC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2JhY2t1 cC5qcwppbmRleCBjNDNkY2QyLi4zYjU4NDU1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvdGVtcGxhdGVzL2JhY2t1cC9qcy9iYWNrdXAuanMKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3RlbXBsYXRlcy9iYWNrdXAvanMvYmFja3VwLmpzCkBAIC0yNzAsNyArMjcw LDcgQEAgVE9ETyBMSVNUIEZPUiBCQUNLVVA6CiAKICAgICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Yg bm9kZXMgb24gd2hpY2ggYmFja3VwIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwogICAgICAg ICB2YXIgYmFja3VwX3N1cHBvcnRlZF9ub2RlcyA9IFsKLSAgICAgICAgICAgICAgJ2RhdGFiYXNl JywgJ3NjaGVtYScsICd0YWJsZScKKyAgICAgICAgICAgICAgJ2RhdGFiYXNlJywgJ3NjaGVtYScs ICd0YWJsZScsICdwYXJ0aXRpb24nCiAgICAgICAgICAgICBdOwogCiAgICAgICAgIC8qKgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weQppbmRleCA2N2Y2NzI5Li45NWM4M2RkIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weQorKysgYi93 ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weQpAQCAtMTI3LDYgKzEyNywxMCBA QCBkZWYgaW5pdGlhbGl6ZV9kYXRhZ3JpZChjbWRfdHlwZSwgb2JqX3R5cGUsIHNpZCwgZGlkLCBv YmpfaWQpOgogICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihtc2cpKQogCiAgICAgdHJ5OgorICAgICAgICAjIGlmIG9iamVjdCB0eXBlIGlzIHBhcnRpdGlv biB0aGVuIGl0IGlzIG5vdGhpbmcgYnV0IGEgdGFibGUuCisgICAgICAgIGlmIG9ial90eXBlID09 ICdwYXJ0aXRpb24nOgorICAgICAgICAgICAgb2JqX3R5cGUgPSAndGFibGUnCisKICAgICAgICAg IyBHZXQgdGhlIG9iamVjdCBhcyBwZXIgdGhlIG9iamVjdCB0eXBlCiAgICAgICAgIGNvbW1hbmRf b2JqID0gT2JqZWN0UmVnaXN0cnkuZ2V0X29iamVjdChvYmpfdHlwZSwgY29ubl9pZD1jb25uX2lk LCBzaWQ9c2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGlkPWRpZCwgb2JqX2lkPW9ial9pZCwgY21kX3R5cGU9Y21kX3R5cGUsCkBAIC0yMDEsMTIg KzIwNSwxNCBAQCBkZWYgcGFuZWwodHJhbnNfaWQsIGlzX3F1ZXJ5X3Rvb2wsIGVkaXRvcl90aXRs ZSk6CiAgICAgZWxzZToKICAgICAgICAgbmV3X2Jyb3dzZXJfdGFiID0gJ2ZhbHNlJwogCi0gICAg cmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgiZGF0YWdyaWQvaW5kZXguaHRtbCIsIF89Z2V0dGV4dCwg dW5pcXVlSWQ9dHJhbnNfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpc19xdWVyeV90 b29sPWlzX3F1ZXJ5X3Rvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JfdGl0 bGU9ZWRpdG9yX3RpdGxlLCBzY3JpcHRfdHlwZV91cmw9c1VSTCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlzX2Rlc2t0b3BfbW9kZT1hcHAuUEdBRE1JTl9SVU5USU1FLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgaXNfbGludXg9aXNfbGludXhfcGxhdGZvcm0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBpc19uZXdfYnJvd3Nlcl90YWI9bmV3X2Jyb3dzZXJfdGFiKQorICAg IHJldHVybiByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICJkYXRhZ3JpZC9pbmRleC5odG1sIiwg Xz1nZXR0ZXh0LCB1bmlxdWVJZD10cmFuc19pZCwKKyAgICAgICAgaXNfcXVlcnlfdG9vbD1pc19x dWVyeV90b29sLAorICAgICAgICBlZGl0b3JfdGl0bGU9ZWRpdG9yX3RpdGxlLCBzY3JpcHRfdHlw ZV91cmw9c1VSTCwKKyAgICAgICAgaXNfZGVza3RvcF9tb2RlPWFwcC5QR0FETUlOX1JVTlRJTUUs CisgICAgICAgIGlzX2xpbnV4PWlzX2xpbnV4X3BsYXRmb3JtLAorICAgICAgICBpc19uZXdfYnJv d3Nlcl90YWI9bmV3X2Jyb3dzZXJfdGFiCisgICAgKQogCiAKIEBibHVlcHJpbnQucm91dGUoCkBA IC0zNDYsNiArMzUyLDggQEAgZGVmIHZhbGlkYXRlX2ZpbHRlcihzaWQsIGRpZCwgb2JqX2lkKToK IEBsb2dpbl9yZXF1aXJlZAogZGVmIHNjcmlwdCgpOgogICAgICIiInJlbmRlciB0aGUgcmVxdWly ZWQgamF2YXNjcmlwdCIiIgotICAgIHJldHVybiBSZXNwb25zZShyZXNwb25zZT1yZW5kZXJfdGVt cGxhdGUoImRhdGFncmlkL2pzL2RhdGFncmlkLmpzIiwgXz1nZXR0ZXh0KSwKLSAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMCwKLSAgICAgICAgICAgICAgICAgICAgbWltZXR5cGU9ImFwcGxp Y2F0aW9uL2phdmFzY3JpcHQiKQorICAgIHJldHVybiBSZXNwb25zZSgKKyAgICAgICAgcmVzcG9u c2U9cmVuZGVyX3RlbXBsYXRlKCJkYXRhZ3JpZC9qcy9kYXRhZ3JpZC5qcyIsIF89Z2V0dGV4dCks CisgICAgICAgIHN0YXR1cz0yMDAsIG1pbWV0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Igor ICAgICkKKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVz L2RhdGFncmlkL2pzL2RhdGFncmlkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVt cGxhdGVzL2RhdGFncmlkL2pzL2RhdGFncmlkLmpzCmluZGV4IGViODZhMTIuLmNkYTVjNTMgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9q cy9kYXRhZ3JpZC5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMv ZGF0YWdyaWQvanMvZGF0YWdyaWQuanMKQEAgLTI5LDcgKzI5LDcgQEAgZGVmaW5lKFsKICAgICAg ICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9kZXMgb24gd2hpY2ggdmlldyBkYXRhIG9wdGlvbiBhcHBl YXJzCiAgICAgICAgIHZhciBzdXBwb3J0ZWRfbm9kZXMgPSBbCiAgICAgICAgICAgICd0YWJsZScs ICd2aWV3JywgJ212aWV3JywKLSAgICAgICAgICAgJ2ZvcmVpZ24tdGFibGUnLCAnY2F0YWxvZ19v YmplY3QnCisgICAgICAgICAgICdmb3JlaWduLXRhYmxlJywgJ2NhdGFsb2dfb2JqZWN0JywgJ3Bh cnRpdGlvbicKICAgICAgICAgXSwKIAogICAgICAgICAvKiBFbmFibGUvZGlzYWJsZSBWaWV3IGRh dGEgbWVudSBpbiB0b29scyBiYXNlZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFp bnRlbmFuY2UvdGVtcGxhdGVzL21haW50ZW5hbmNlL2pzL21haW50ZW5hbmNlLmpzIGIvd2ViL3Bn YWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVtcGxhdGVzL21haW50ZW5hbmNlL2pzL21haW50ZW5h bmNlLmpzCmluZGV4IDVhYjNjNDQuLjBlNTFmZDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL21haW50ZW5hbmNlL3RlbXBsYXRlcy9tYWludGVuYW5jZS9qcy9tYWludGVuYW5jZS5qcwor KysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZW1wbGF0ZXMvbWFpbnRlbmFuY2Uv anMvbWFpbnRlbmFuY2UuanMKQEAgLTE1MCw3ICsxNTAsNyBAQCBkZWZpbmUoWwogCiAgICAgICAg IHZhciBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXMgPSBbCiAgICAgICAgICAgICAgICdkYXRh YmFzZScsICd0YWJsZScsICdwcmltYXJ5X2tleScsCi0gICAgICAgICAgICAgICd1bmlxdWVfY29u c3RyYWludCcsICdpbmRleCcKKyAgICAgICAgICAgICAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2lu ZGV4JywgJ3BhcnRpdGlvbicKICAgICAgICAgICAgIF07CiAKICAgICAgICAgLyoqCkBAIC0xODAs NyArMTgwLDcgQEAgZGVmaW5lKFsKIAogICAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICAg IG5hbWU6ICdtYWludGVuYW5jZScsIG1vZHVsZTogdGhpcywKLSAgICAgICAgICBhcHBsaWVzOiBb J3Rvb2xzJ10sIGNhbGxiYWNrOiAnY2FsbGJhY2tfbWFpbnRlbmFjZScsCisgICAgICAgICAgYXBw bGllczogWyd0b29scyddLCBjYWxsYmFjazogJ2NhbGxiYWNrX21haW50ZW5hbmNlJywKICAgICAg ICAgICBwcmlvcml0eTogMTAsIGxhYmVsOiBnZXR0ZXh0KCdNYWludGVuYW5jZS4uLicpLAogICAg ICAgICAgIGljb246ICdmYSBmYS13cmVuY2gnLCBlbmFibGU6IG1lbnVfZW5hYmxlZAogICAgICAg ICB9XTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBkZWZpbmUoWwogICAgICAgICAgIG1lbnVzLnB1c2go ewogICAgICAgICAgICAgbmFtZTogJ21haW50ZW5hbmNlX2NvbnRleHRfJyArIG1haW50ZW5hbmNl X3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAogICAgICAgICAgICAgbm9kZTogbWFpbnRlbmFuY2Vfc3Vw cG9ydGVkX25vZGVzW2lkeF0sIG1vZHVsZTogdGhpcywKLSAgICAgICAgICAgIGFwcGxpZXM6IFsn Y29udGV4dCddLCBjYWxsYmFjazogJ2NhbGxiYWNrX21haW50ZW5hY2UnLAorICAgICAgICAgICAg YXBwbGllczogWydjb250ZXh0J10sIGNhbGxiYWNrOiAnY2FsbGJhY2tfbWFpbnRlbmFuY2UnLAog ICAgICAgICAgICAgcHJpb3JpdHk6IDEwLCBsYWJlbDogZ2V0dGV4dCgnTWFpbnRlbmFuY2UuLi4n KSwKICAgICAgICAgICAgIGljb246ICdmYSBmYS13cmVuY2gnLCBlbmFibGU6IG1lbnVfZW5hYmxl ZAogICAgICAgICAgIH0pOwpAQCAtMjAxLDcgKzIwMSw3IEBAIGRlZmluZShbCiAgICAgICAvKgog ICAgICAgICBPcGVuIHRoZSBkaWFsb2cgZm9yIHRoZSBtYWludGVuYW5jZSBmdW5jdGlvbmFsaXR5 CiAgICAgICAqLwotICAgICAgY2FsbGJhY2tfbWFpbnRlbmFjZTogZnVuY3Rpb24oYXJncywgaXRl bSkgeworICAgICAgY2FsbGJhY2tfbWFpbnRlbmFuY2U6IGZ1bmN0aW9uKGFyZ3MsIGl0ZW0pIHsK ICAgICAgICAgdmFyIGkgPSBpdGVtIHx8IHBnQnJvd3Nlci50cmVlLnNlbGVjdGVkKCksCiAgICAg ICAgICAgc2VydmVyX2RhdGEgPSBudWxsOwogCkBAIC0zMjAsNyArMzIwLDEwIEBAIGRlZmluZShb CiAgICAgICAgICAgICAgICAgICBpZiAodHJlZUluZm8uc2NoZW1hICE9IHVuZGVmaW5lZCkgewog ICAgICAgICAgICAgICAgICAgICBzY2hlbWEgPSB0cmVlSW5mby5zY2hlbWEuX2xhYmVsOwogICAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYgKHRyZWVJbmZvLnRhYmxlICE9 IHVuZGVmaW5lZCkgeworCisgICAgICAgICAgICAgICAgICBpZiAodHJlZUluZm8ucGFydGl0aW9u ICE9IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHRyZWVJbmZvLnBh cnRpdGlvbi5fbGFiZWw7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgICh0cmVlSW5mby50 YWJsZSAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgdGFibGUgPSB0cmVlSW5m by50YWJsZS5fbGFiZWw7CiAgICAgICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVtcGxhdGVzL3Jlc3RvcmUvanMvcmVzdG9yZS5qcyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVtcGxhdGVzL3Jlc3RvcmUvanMvcmVzdG9yZS5qcwpp bmRleCBjMjNkOWUzLi4wZGEwMDA0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9yZXN0 b3JlL3RlbXBsYXRlcy9yZXN0b3JlL2pzL3Jlc3RvcmUuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZW1wbGF0ZXMvcmVzdG9yZS9qcy9yZXN0b3JlLmpzCkBAIC0yMjgsNyArMjI4 LDggQEAgZGVmaW5lKFsKICAgICAgICAgdmFyIHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzID0gWwog ICAgICAgICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywKICAgICAgICAgICAgICAgJ3RhYmxl JywgJ2Z1bmN0aW9uJywKLSAgICAgICAgICAgICAgJ3RyaWdnZXInLCAnaW5kZXgnCisgICAgICAg ICAgICAgICd0cmlnZ2VyJywgJ2luZGV4JywKKyAgICAgICAgICAgICAgJ3BhcnRpdGlvbicKICAg ICAgICAgICAgIF07CiAKICAgICAgICAgLyoqCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGls cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL19faW5pdF9fLnB5CmluZGV4IDU1MGJh ZDIuLjcwMWEzOGMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL19faW5pdF9fLnB5Cisr KyBiL3dlYi9wZ2FkbWluL3V0aWxzL19faW5pdF9fLnB5CkBAIC0yOSw2ICsyOSw3IEBAIGNsYXNz IFBnQWRtaW5Nb2R1bGUoQmx1ZXByaW50KToKICAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3Rl bXBsYXRlX2ZvbGRlcicsICd0ZW1wbGF0ZXMnKQogICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgn c3RhdGljX2ZvbGRlcicsICdzdGF0aWMnKQogICAgICAgICBzZWxmLnN1Ym1vZHVsZXMgPSBbXQor ICAgICAgICBzZWxmLnBhcmVudG1vZHVsZXMgPSBbXQogCiAgICAgICAgIHN1cGVyKFBnQWRtaW5N b2R1bGUsIHNlbGYpLl9faW5pdF9fKG5hbWUsIGltcG9ydF9uYW1lLCAqKmt3YXJncykKIApAQCAt NTksNiArNjAsOCBAQCBjbGFzcyBQZ0FkbWluTW9kdWxlKEJsdWVwcmludCk6CiAgICAgICAgIHN1 cGVyKFBnQWRtaW5Nb2R1bGUsIHNlbGYpLnJlZ2lzdGVyKGFwcCwgb3B0aW9ucywgZmlyc3RfcmVn aXN0cmF0aW9uKQogCiAgICAgICAgIGZvciBtb2R1bGUgaW4gc2VsZi5zdWJtb2R1bGVzOgorICAg ICAgICAgICAgaWYgZmlyc3RfcmVnaXN0cmF0aW9uOgorICAgICAgICAgICAgICAgIG1vZHVsZS5w YXJlbnRtb2R1bGVzLmFwcGVuZChzZWxmKQogICAgICAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVw cmludChtb2R1bGUpCiAKICAgICBkZWYgZ2V0X293bl9zdHlsZXNoZWV0cyhzZWxmKToKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL2V4Y2VwdGlvbi5weSBiL3dlYi9wZ2FkbWluL3V0aWxz L2V4Y2VwdGlvbi5weQppbmRleCA1N2MzMjI0Li43N2Q1OWRhIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi91dGlscy9leGNlcHRpb24ucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvZXhjZXB0aW9u LnB5CkBAIC00MCwzICs0MCwxMSBAQCBjbGFzcyBDb25uZWN0aW9uTG9zdChIVFRQRXhjZXB0aW9u KToKICAgICAgICAgICAgICAgICAnY29ubl9pZCc6IHNlbGYuY29ubl9pZAogICAgICAgICAgICAg fQogICAgICAgICApCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJD b25uZWN0aW9uIChpZCAjezJ9KSBsb3N0IGZvciB0aGUgc2VydmVyICgjezB9KSBvbiAiIFwKKyAg ICAgICAgICAgICAgICJkYXRhYmFzZSAoezF9KSIuZm9ybWF0KHNlbGYuc2lkLCBzZWxmLmRiLCBz ZWxmLmNvbm5faWQpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAi Q29ubmVjdGlvbiAoaWQgI3syfSkgbG9zdCBmb3IgdGhlIHNlcnZlciAoI3swfSkgb24gIiBcCisg ICAgICAgICAgICAgICAiZGF0YWJhc2UgKHsxfSkiLmZvcm1hdChzZWxmLnNpZCwgc2VsZi5kYiwg c2VsZi5jb25uX2lkKQo= --001a114a9ebe668845055377ad3c--