Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fAzNL-0007T1-E7 for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Apr 2018 14:56:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fAzNK-0006tp-1i for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Apr 2018 14:56:58 +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.89) (envelope-from ) id 1fAzNJ-0006tf-FT for pgadmin-hackers@lists.postgresql.org; Tue, 24 Apr 2018 14:56:57 +0000 Received: from mx0a-00296801.pphosted.com ([148.163.150.38]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fAzNE-0007FK-KQ for pgadmin-hackers@postgresql.org; Tue, 24 Apr 2018 14:56:55 +0000 Received: from pps.filterd (m0114581.ppops.net [127.0.0.1]) by mx0a-00296801.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w3OEnaf9017824 for ; Tue, 24 Apr 2018 14:56:49 GMT Received: from mail-it0-f71.google.com (mail-it0-f71.google.com [209.85.214.71]) by mx0a-00296801.pphosted.com with ESMTP id 2hj3ch85kf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 24 Apr 2018 14:56:49 +0000 Received: by mail-it0-f71.google.com with SMTP id y131-v6so11682709itc.5 for ; Tue, 24 Apr 2018 07:56:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=L3dZ7feLU2CUFcnpb2ed/0jKHiepoYWNoONHAaBukWc=; b=isZFGM5X4K44SJhv22wgrDROVRszdaHPY4mKMEtQTOCogX6eCD1M1VBLTeUEa/KTgC +4w6CyJSv/baKAbL/kBerKiQBuEwBNToUp0oqmyZedWgC3idUDX12xBdNr7Xew5a1l3g IdDEdGLj7Wi9zDXGbyBhmgiHDAM6UVguLcUTFYIAv6hLfEDrQdpijaKrZJtI+v80qeQH cNdzkOqVas5G7/7UGNqaSmQ+3/vmWfwEZghQkHV/EI5hhPc+qQryPp2pebt5YkOMrKLe Nmpcc1h8EAr6lGMW07LBz8HpbUISjJi/dX8LpShhdBbNs1COGlm41StOr6eM8+V/rz7E KGag== X-Gm-Message-State: ALQs6tAopWPbrWRU6YTh30XjC8pdvUoXR6gfhGdNF3qH6hshbBvdVz3s Axw5jUu42ndWUuoXDjMvXz3Wh6RWMbn2fvx2zIfRVlPS9UNMyUO9lBF83ndv6gFr5Y03C7+xQ/H kIlPWnlWKWpmuRLUhPXcfY9kFLPPwDXgP6WbRIY3HyLN/R+xntViqcEUJ3BFAGPDCIrgw X-Received: by 2002:a24:a54b:: with SMTP id w11-v6mr5486650iti.95.1524581806329; Tue, 24 Apr 2018 07:56:46 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqiDavwGc7zNKQ3DX8kRhZ6OoTyteS0nRPltzXFqAdkfrWjKN2RsxHWJJBgjxsKEsjcpLmsIc8pCc3M/fpYZXc= X-Received: by 2002:a24:a54b:: with SMTP id w11-v6mr5486636iti.95.1524581806042; Tue, 24 Apr 2018 07:56:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Joao De Almeida Pereira Date: Tue, 24 Apr 2018 14:56:35 +0000 Message-ID: Subject: Re: [pgAdmin4][RM#3155] Allow user to lock the Layout To: Akshay Joshi Cc: Dave Page , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000fb43de056a995cc3" X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-04-24_03:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=10 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1804240142 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000fb43de056a995cc3 Content-Type: multipart/alternative; boundary="000000000000fb43db056a995cc1" --000000000000fb43db056a995cc1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Murtuza, We tested the patch and everything looks fine. We also refactors some parts to include things like strict equality and using let/const instead of var. The updated patch is attached. In the future, it will be more valuable to have the translation to ES6 and the feature work in separate commits so it is easier to understand what changed. Sincerely, Joao and Victoria On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi wrote: > On Tue, Apr 24, 2018 at 1:17 PM, Dave Page wrote: > >> Akshay, could you review/commit this please? >> >> Please also update the release_notes_3_1.rst file when you commit >> user-visible changes, to make it easier to build the release notes. >> > > Sure > >> >> Thanks. >> >> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala < >> murtuza.zabuawala@enterprisedb.com> wrote: >> >>> Hi Dave, >>> >>> Please find the updated patch, Now we are able to lock wcFrame and >>> wcPanel both. >>> >>> -- >>> Regards, >>> Murtuza Zabuawala >>> EnterpriseDB: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> >>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt >>> wrote: >>> >>>> >>>> >>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> >>>>> >>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page wrote: >>>>> >>>>>> >>>>>> >>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala < >>>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>>> >>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page wrote= : >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala < >>>>>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala < >>>>>>>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Dave, >>>>>>>>>>> >>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala < >>>>>>>>>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks Joao for reviewing. >>>>>>>>>>>>> >>>>>>>>>>>>> PFA updated patch. >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira < >>>>>>>>>>>>> jdealmeidapereira@pivotal.io> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hello, >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala < >>>>>>>>>>>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> =E2=80=8BHello, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Please find updated patch, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Now layout will be locked after user updates its >>>>>>>>>>>>>>> preferences, w >>>>>>>>>>>>>>> e have used =E2=80=8B >>>>>>>>>>>>>>> templated variable in the javascript file >>>>>>>>>>>>>>> =E2=80=8B because we do not have preference module or prefe= rence >>>>>>>>>>>>>>> cache available when the page loads and panels gets rendere= d, >>>>>>>>>>>>>>> =E2=80=8BI >>>>>>>>>>>>>>> =E2=80=8B also >>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> Looks like everything is working when we change the lock. >>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at >>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue= and another >>>>>>>>>>>>>> one that is related to this story. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> All the tests are working, but he linter is failing: >>>>>>>>>>>>>> >>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2 >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (= 2) >>>>>>>>>>>>>> >>>>>>>>>>>>>> 1 E303 too many blank lines (2) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 1 >>>>>>>>>>>>>> >>>>>>>>>>>>> =E2=80=8BFixed=E2=80=8B >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> @Dave/Pivotal team, >>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (al= l >>>>>>>>>>>>>>> the panels from main window as well as from Query tool and = Debugger) but >>>>>>>>>>>>>>> I'm facing an issue while handling the Browser tree section= , It is a wcDocer >>>>>>>>>>>>>>> frame >>>>>>>>>>>>>>> and not a wcDocker panel >>>>>>>>>>>>>>> . Like >>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so th= at a developer >>>>>>>>>>>>>>> can prevent drag-drop functionality on it. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL >>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it loo= ks like >>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can= un-dock the >>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can d= o weird >>>>>>>>>>>> things with the browser tree as well, probably because it's a = frame as you >>>>>>>>>>>> say. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> =E2=80=8BThat is expected behaviour =E2=80=8Bbecause once you d= rag the panel out >>>>>>>>>>> of the group of Panels then it becomes individual Frame, That i= s what the >>>>>>>>>>> author of the wcDocker replied on my question, >>>>>>>>>>> *"A panel must either be initialized as movable or non-movable >>>>>>>>>>> from the beginning and never changed because it generates a dif= ferent >>>>>>>>>>> arrangement of elements depending. This feature should only eve= r be used >>>>>>>>>>> within the onCreate method of the panel. I should probably have= been more >>>>>>>>>>> clear about this limitation in the documentation."* >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> So does it become a panel again if a second panel is added to th= e >>>>>>>>>> new tab group? >>>>>>>>>> >>>>>>>>> =E2=80=8BNo, it stays Frame.=E2=80=8B >>>>>>>>> >>>>>>>>> As far as I understand Panel needs a Frame to render itself if it >>>>>>>>> is not attached to the main docker instance.=E2=80=8B >>>>>>>>> >>>>>>>>>> >>>>>>>>>> There must be some way we can lock a tab that's not part of a >>>>>>>>>> group. >>>>>>>>>> >>>>>>>>> At a moment there is no way of =E2=80=8B >>>>>>>>> locking frames out of the box :( >>>>>>>>> =E2=80=8B >>>>>>>>> >>>>>>>> >>>>>>>> Hmm, so the question becomes: do we include the lock feature, but >>>>>>>> rename it to "Lock Tabs" or something similar, or leave it out alt= ogether? >>>>>>>> It clearly doesn't do everything we want right now. >>>>>>>> >>>>>>> =E2=80=8BI would say lets include the feature by adding warning not= e that >>>>>>> this feature works with default layout only, And I don't think most= user >>>>>>> will try to drag drop Browser panel =E2=80=8B >>>>>>> anyway, meanwhile I'll check what changes are required in main >>>>>>> source code to make the Frame lock. >>>>>>> >>>>>> >>>>>> Anyone else have any thoughts on this? Personally I don't like >>>>>> including half-baked features. >>>>>> >>>>>> +1, but we need to find out the way as this feature is requested by >>>>> many users. >>>>> >>>> >>>> 100% agree. I can convince my self that this feature request has to do >>>> with locking panels into a certain layout. I can also convince myself = that >>>> the same request is simple because users are frustrated with the fact = that >>>> the tabs and panes move around and they find that behavior annoying. >>>> >>>> -- Rob >>>> >>>> >>>>> -- >>>>>> Dave Page >>>>>> Blog: http://pgsnake.blogspot.com >>>>>> Twitter: @pgsnake >>>>>> >>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>> The Enterprise PostgreSQL Company >>>>>> >>>>> >>>>> >>>> >>> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > > > -- > *Akshay Joshi* > > *Sr. Software Architect * > > > > *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 976-788-8246 > <+91%2097678%2088246>* > --000000000000fb43db056a995cc1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Murtuza,

We tested the patch and eve= rything looks fine.=C2=A0 We also refactors some parts to include things li= ke strict equality and using let/const instead of var.=C2=A0 The updated pa= tch is attached.
In the future, it will be more valuable to have = the translation to ES6 and the feature work in separate commits so it is ea= sier to understand what changed.

Sincerely,
<= div>
Joao and Victoria


On Tue, Apr 24, 2018 at 4:58 A= M Akshay Joshi <akshay.= joshi@enterprisedb.com> wrote:
O= n Tue, Apr 24, 2018 at 1:17 PM, Dave Page <dpage@pgadmin.org> wrote:
Akshay, could y= ou review/commit this please?

Please also update the rel= ease_notes_3_1.rst file when you commit user-visible changes, to make it ea= sier to build the release notes.

=C2=A0 =C2=A0Sure=C2=A0

Thanks.

On Tue, Apr = 24, 2018 at 8:45 AM, Murtuza Zabuawala <murtuza.zabuawala= @enterprisedb.com> wrote:
<= div dir=3D"ltr">
Hi Dave,
=
Pleas= e find the updated patch, Now we are able to lock wcFrame and wcPanel both.=

--
Regards,
Murtuza Zab= uawala
EnterpriseDB:=C2=A0http://www.enterprisedb.com
The En= terprise PostgreSQL Company
=
<= div>

On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckha= rdt <reckhardt@pivotal.io> wrote:


On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:


On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <dpage= @pgadmin.org> wrote:


On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
On We= d, Apr 4, 2018 at 5:00 PM, Dave Page <dpage@pgadmin.org> wrote:
<= div class=3D"m_-9161428906115566089m_770385787534553231m_-67393338576108696= 62m_-7492286660467830201m_-3274200323325296947m_3380818914953156086m_-17860= 64842031807024m_7164887386406176197h5">


O= n Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <murtuz= a.zabuawala@enterprisedb.com> wrote:
On Wed, Apr 4, 2018 at 2:47 PM, Dave P= age <dpa= ge@pgadmin.org> wrote:

On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuaw= ala <murtuza.zabuawala@enterprisedb.com> wr= ote:
Hi Dave,

On Tue, Apr 3, 2018 at 9:03 PM, Dave P= age <dpage@pgadmin.org> wrote:
Hi

On Tue, Apr 3, 2018 at 12:56 PM, Mu= rtuza Zabuawala <murtuza.zabuawala@enterprisedb.com&g= t; wrote:
Hi,

Thanks Joao for reviewing.

PFA updated patch.

On Tue, Apr 3, 2018 at 1:11 AM, Joao D= e Almeida Pereira <jdealmeidapereira@pivotal.io> = wrote:
Hello,

On Mon, Apr 2, = 2018 at 10:07 AM Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com&= gt; wrote:

=
=E2=80=8BHello,

Please find updated patch,=C2=A0

Now layout will be locked after user update= s its preferences, w
e have used = =E2=80=8B
=
templated variable i= n the javascript file
=E2=80=8B because we do not have preference= module or preference cache available when the page loads and panels gets r= endered,=C2=A0
=E2=80=8BI
=E2=80=8B also=C2=A0
made changes i= n JS tests as per Joao's review comments.
Looks like eve= rything is working when we change the lock.
As a personal prefere= nces I would prefer to see this in at least 2 commits, one that is related = to the preference issue and another one that is related to this story.


All the tests are working, but he linte= r is failing:
/tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
./pgadmin/misc/__init__.py:78: [E3= 03] too many blank lines (2)
1 E303 too many blank lin= es (2)=C2=A0
= 1=C2=A0
=E2=80=8BFix= ed=E2=80=8B
=C2=A0


@Dave/Pivotal team,
The given patch is= working fine for all the Tabs/Panels (all the panels from main window as w= ell as from Query tool and Debugger) but I'm facing an issue while hand= ling the Browser tree section, It is a wcDocer frame and not a wcDocker panel.=C2=A0Like wcDocker panel, wcDocker frame do not pro= vide any API so that a developer can prevent drag-drop functionality on it.=

It's not working fine for me. For example, if I put t= he SQL Panel on it's own below the properties/stats panels (so it looks= like pgAdmin 3 used to by default), and then lock the layout, I can un-doc= k the SQL panel into a dialogue, but then cannot re-dock it. I can do weird= things with the browser tree as well, probably because it's a frame as= you say.
=C2=A0
=
=E2=80=8B= That is expected behaviour =E2=80=8Bbecause once you drag the panel out of = the group of Panels then it becomes individual Frame, That is what the auth= or of the wcDocker replied on my question,=C2=A0
"A panel must either be initialized as movable or non-mo= vable from the beginning and never changed because it generates a different= arrangement of elements depending. This feature should only ever be used w= ithin the onCreate method of the panel. I should probably have been more cl= ear about this limitation in the documentation."


So does it become a pa= nel again if a second panel is added to the new tab group?
=E2=80=8BNo, it stays Frame.=E2= =80=8B
=C2=A0
As far as I understand Panel needs a Fra= me to render itself if it is not attached to the main docker instance.=E2= =80=8B

Ther= e must be some way we can lock a tab that's not part of a group.
<= /div>
At a moment there is no way= of =E2=80=8B
locking frames out of the = box :(
=E2=80=8B
=
Hmm, so the question becomes: do we include the lock feature= , but rename it to "Lock Tabs" or something similar, or leave it = out altogether? It clearly doesn't do everything we want right now.=C2= =A0
=E2=80=8BI w= ould say lets include the feature by adding warning note that this feature = works with default layout only, And I don't think most user will try to= drag drop Browser panel =E2=80=8B
anyway, meanwhile I'll ch= eck what changes are required in main source code to make the Frame lock.

An= yone else have any thoughts on this? Personally I don't like including = half-baked features.=C2=A0

+1, but we need to find out the way as thi= s feature is requested by many users.=C2=A0

100% agree. I can convince my self that this featu= re request has to do with locking panels into a certain layout. I can also = convince myself that the same request is simple because users are frustrate= d with the fact that the tabs and panes move around and they find that beha= vior annoying.=C2=A0

-- Rob
=C2=A0<= /div>
--
= Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB = UK: http://www.en= terprisedb.com
The Enterprise PostgreSQL Company






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

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Co= mpany



--
Akshay Joshi
Sr. Software Architect
=

<= div>Phone: +91 = 20-3058-9517
Mobile: +91 976-788-8246
=
--000000000000fb43db056a995cc1-- --000000000000fb43de056a995cc3 Content-Type: text/x-patch; charset="US-ASCII"; name="RM_3155_v6.patch" Content-Disposition: attachment; filename="RM_3155_v6.patch" Content-Transfer-Encoding: base64 Content-ID: <162f8274e2ae145a5f71> X-Attachment-Id: 162f8274e2ae145a5f71 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvaW1hZ2VzL3ByZWZlcmVuY2VzX21pc2NfbGF5b3V0LnBu ZyBiL2RvY3MvZW5fVVMvaW1hZ2VzL3ByZWZlcmVuY2VzX21pc2NfbGF5b3V0LnBuZwppbmRleCBl NjlkZTI5Yi4uZDA0ZDNjODUgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2Vz L3ByZWZlcmVuY2VzX21pc2NfbGF5b3V0LnBuZyBhbmQgYi9kb2NzL2VuX1VTL2ltYWdlcy9wcmVm ZXJlbmNlc19taXNjX2xheW91dC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL3By ZWZlcmVuY2VzLnJzdCBiL2RvY3MvZW5fVVMvcHJlZmVyZW5jZXMucnN0CmluZGV4IGUxZGRjOWI2 Li5jNjMxY2UyYSAxMDA2NDQKLS0tIGEvZG9jcy9lbl9VUy9wcmVmZXJlbmNlcy5yc3QKKysrIGIv ZG9jcy9lbl9VUy9wcmVmZXJlbmNlcy5yc3QKQEAgLTk3LDYgKzk3LDExIEBAIEV4cGFuZCB0aGUg Kk1pc2NlbGxhbmVvdXMqIG5vZGUgdG8gc3BlY2lmeSBtaXNjZWxsYW5lb3VzIGRpc3BsYXkgcHJl ZmVyZW5jZXMuCiAKICogVXNlIHRoZSAqVXNlciBsYW5ndWFnZSogZHJvcC1kb3duIGxpc3Rib3gg dG8gc2VsZWN0IHRoZSBkaXNwbGF5IGxhbmd1YWdlIGZvciB0aGUgY2xpZW50LgogCisuLiBpbWFn ZTo6IGltYWdlcy9wcmVmZXJlbmNlc19taXNjX2xheW91dC5wbmcKKyAgICA6YWx0OiBQcmVmZXJl bmNlcyBkaWFsb2cgdXNlciBsYXlvdXQgc2VjdGlvbgorCisqIFdoZW4gdGhlICpMb2NrIGxheW91 dD8qIHN3aXRjaCBpcyBzZXQgdG8gKlRydWUqLCB1c2VyIHdpbGwgbm90IGJlIGFibGUgdG8gZHJh ZyBhbmQgZHJvcCBwYW5lbHMuCisKICoqVGhlIFBhdGhzIE5vZGUqKgogCiBFeHBhbmQgdGhlICpQ YXRocyogbm9kZSB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbnMgb2Ygc3VwcG9ydGluZyB1dGlsaXR5 IGFuZCBoZWxwIGZpbGVzLgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv Y3NzL2Jyb3dzZXIuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvY3NzL2Jyb3dzZXIu Y3NzCmluZGV4IDNiYTMzMGQzLi43ZDZlNzgyMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvY3NzL2Jyb3dzZXIuY3NzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2Nzcy9icm93c2VyLmNzcwpAQCAtNjYsMyArNjYsNyBAQCBzYW1wLAogLnBnLWxvZ2luLWlj b24gewogICBmb250LXNpemU6IDE2cHg7CiB9CisKKy5uby1tb3VzZS1ldmVudCB7CisgIHBvaW50 ZXItZXZlbnRzOiBub25lOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvYnJvd3Nlci5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIu anMKaW5kZXggODk3ZDI3MDguLmIzYjNkYzM1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L2pzL2Jyb3dzZXIuanMKQEAgLTExNSw2ICsxMTUsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nl cicsIFsKICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAogICAgICAgICBpY29uOiAnZmEgZmEtYmlu b2N1bGFycycsCiAgICAgICAgIGNvbnRlbnQ6ICc8ZGl2IGlkPSJ0cmVlIiBjbGFzcz0iYWNpVHJl ZSI+PC9kaXY+JywKKyAgICAgICAgaXNNb3ZlYWJsZTogdHJ1ZSwKICAgICAgIH0pLAogICAgICAg Ly8gUHJvcGVydGllcyBvZiB0aGUgb2JqZWN0IG5vZGUKICAgICAgICdwcm9wZXJ0aWVzJzogbmV3 IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7CkBAIC02OTAsNiArNjkxLDkgQEAgZGVmaW5lKCdwZ2Fk bWluLmJyb3dzZXInLCBbCiAgICAgICAgICAgcGdCcm93c2VyLmtleWJvYXJkTmF2aWdhdGlvbi5p bml0KCk7CiAgICAgICAgICAgbW9kaWZ5QW5pbWF0aW9uLm1vZGlmeUFjaXRyZWVBbmltYXRpb24o c2VsZik7CiAgICAgICAgICAgbW9kaWZ5QW5pbWF0aW9uLm1vZGlmeUFsZXJ0aWZ5QW5pbWF0aW9u KHNlbGYpOworICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKKyAgICAgICAgICAg ICdwZ2FkbWluLWJyb3dzZXI6cHJlZmVyZW5jZXMtdXBkYXRlZCcsIHRoaXMsIGFyZ3VtZW50cwor ICAgICAgICAgICk7CiAgICAgICAgIH0sCiAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIpIHsK ICAgICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvcGFuZWwuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9wYW5lbC5qcwppbmRl eCBhYjA2ODFhOS4uOTJlMzljMDIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL3BhbmVsLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVs LmpzCkBAIC0xLDE4NyArMSwyNjkgQEAKLWRlZmluZSgKLSAgWyd1bmRlcnNjb3JlJywgJ3NvdXJj ZXMvcGdhZG1pbicsICdqcXVlcnknLCAnd2Nkb2NrZXInXSwKLSAgZnVuY3Rpb24oXywgcGdBZG1p biwgJCkgewotCi0gICAgdmFyIHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlciA9IHBnQWRtaW4u QnJvd3NlciB8fCB7fSwKLSAgICAgIHdjRG9ja2VyID0gd2luZG93LndjRG9ja2VyOwotCi0gICAg cGdBZG1pbi5Ccm93c2VyLlBhbmVsID0gZnVuY3Rpb24ob3B0aW9ucykgewotICAgICAgdmFyIGRl ZmF1bHRzID0gWwotICAgICAgICAnbmFtZScsICd0aXRsZScsICd3aWR0aCcsICdoZWlnaHQnLCAn c2hvd1RpdGxlJywgJ2lzQ2xvc2VhYmxlJywKLSAgICAgICAgJ2lzUHJpdmF0ZScsICdjb250ZW50 JywgJ2ljb24nLCAnZXZlbnRzJywgJ29uQ3JlYXRlJywgJ2VsQ29udGFpbmVyJywKLSAgICAgICAg J2NhbkhpZGUnLCAnbGltaXQnLAotICAgICAgXTsKLSAgICAgIF8uZXh0ZW5kKHRoaXMsIF8ucGlj ayhvcHRpb25zLCBkZWZhdWx0cykpOwotICAgIH07Ci0KLSAgICBfLmV4dGVuZChwZ0FkbWluLkJy b3dzZXIuUGFuZWwucHJvdG90eXBlLCB7Ci0gICAgICBuYW1lOiAnJywKLSAgICAgIHRpdGxlOiAn JywKLSAgICAgIHdpZHRoOiAzMDAsCi0gICAgICBoZWlnaHQ6IDYwMCwKLSAgICAgIHNob3dUaXRs ZTogdHJ1ZSwKLSAgICAgIGlzQ2xvc2VhYmxlOiB0cnVlLAotICAgICAgaXNQcml2YXRlOiBmYWxz ZSwKLSAgICAgIGNvbnRlbnQ6ICcnLAotICAgICAgaWNvbjogJycsCi0gICAgICBwYW5lbDogbnVs bCwKLSAgICAgIG9uQ3JlYXRlOiBudWxsLAotICAgICAgZWxDb250YWluZXI6IGZhbHNlLAotICAg ICAgbGltaXQ6IG51bGwsCi0gICAgICBsb2FkOiBmdW5jdGlvbihkb2NrZXIsIHRpdGxlKSB7Ci0g ICAgICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICAgICAgaWYgKCF0aGF0LnBhbmVsKSB7Ci0gICAg ICAgICAgZG9ja2VyLnJlZ2lzdGVyUGFuZWxUeXBlKHRoYXQubmFtZSwgewotICAgICAgICAgICAg dGl0bGU6IHRoYXQudGl0bGUsCi0gICAgICAgICAgICBpc1ByaXZhdGU6IHRoYXQuaXNQcml2YXRl LAotICAgICAgICAgICAgbGltaXQ6IHRoYXQubGltaXQsCi0gICAgICAgICAgICBvbkNyZWF0ZTog ZnVuY3Rpb24obXlQYW5lbCkgewotICAgICAgICAgICAgICAkKG15UGFuZWwpLmRhdGEoJ3BnQWRt aW5OYW1lJywgdGhhdC5uYW1lKTsKLSAgICAgICAgICAgICAgbXlQYW5lbC5pbml0U2l6ZSh0aGF0 LndpZHRoLCB0aGF0LmhlaWdodCk7Ci0KLSAgICAgICAgICAgICAgaWYgKCF0aGF0LnNob3dUaXRs ZSkKLSAgICAgICAgICAgICAgICBteVBhbmVsLnRpdGxlKGZhbHNlKTsKLSAgICAgICAgICAgICAg ZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRpdGxlX2VsZW0gPSAnPGEgaHJlZj0iIyIgdGFi aW5kZXg9IjAiIGNsYXNzPSJwYW5lbC1saW5rLWhlYWRpbmciPicgKyAodGl0bGUgfHwgdGhhdC50 aXRsZSkgKyAnPC9hPic7Ci0gICAgICAgICAgICAgICAgbXlQYW5lbC50aXRsZSh0aXRsZV9lbGVt KTsKLSAgICAgICAgICAgICAgICBpZiAodGhhdC5pY29uICE9ICcnKQotICAgICAgICAgICAgICAg ICAgbXlQYW5lbC5pY29uKHRoYXQuaWNvbik7Ci0gICAgICAgICAgICAgIH0KK2ltcG9ydCAkIGZy b20gJ2pxdWVyeSc7CitpbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsKK2ltcG9ydCBwZ0FkbWlu IGZyb20gJ3NvdXJjZXMvcGdhZG1pbic7CitpbXBvcnQgJ3djZG9ja2VyJzsKIAotICAgICAgICAg ICAgICB2YXIgJGNvbnRhaW5lciA9ICQoJzxkaXY+JywgewotICAgICAgICAgICAgICAgICdjbGFz cyc6ICdwZy1wYW5lbC1jb250ZW50JywKLSAgICAgICAgICAgICAgfSkuYXBwZW5kKCQodGhhdC5j b250ZW50KSk7Ci0KLSAgICAgICAgICAgICAgbXlQYW5lbC5jbG9zZWFibGUoISF0aGF0LmlzQ2xv c2VhYmxlKTsKLSAgICAgICAgICAgICAgbXlQYW5lbC5sYXlvdXQoKS5hZGRJdGVtKCRjb250YWlu ZXIpOwotICAgICAgICAgICAgICB0aGF0LnBhbmVsID0gbXlQYW5lbDsKLSAgICAgICAgICAgICAg aWYgKHRoYXQuZXZlbnRzICYmIF8uaXNPYmplY3QodGhhdC5ldmVudHMpKSB7Ci0gICAgICAgICAg ICAgICAgXy5lYWNoKHRoYXQuZXZlbnRzLCBmdW5jdGlvbih2LCBrKSB7Ci0gICAgICAgICAgICAg ICAgICBpZiAodiAmJiBfLmlzRnVuY3Rpb24odikpIHsKLSAgICAgICAgICAgICAgICAgICAgbXlQ YW5lbC5vbihrLCB2KTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsK LSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBfLmVhY2goWwotICAgICAgICAgICAgICAg IHdjRG9ja2VyLkVWRU5ULlVQREFURUQsIHdjRG9ja2VyLkVWRU5ULlZJU0lCSUxJVFlfQ0hBTkdF RCwKLSAgICAgICAgICAgICAgICB3Y0RvY2tlci5FVkVOVC5CRUdJTl9ET0NLLCB3Y0RvY2tlci5F VkVOVC5FTkRfRE9DSywKLSAgICAgICAgICAgICAgICB3Y0RvY2tlci5FVkVOVC5HQUlOX0ZPQ1VT LCB3Y0RvY2tlci5FVkVOVC5MT1NUX0ZPQ1VTLAotICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVW RU5ULkNMT1NFRCwgd2NEb2NrZXIuRVZFTlQuQlVUVE9OLAotICAgICAgICAgICAgICAgIHdjRG9j a2VyLkVWRU5ULkFUVEFDSEVELCB3Y0RvY2tlci5FVkVOVC5ERVRBQ0hFRCwKLSAgICAgICAgICAg ICAgICB3Y0RvY2tlci5FVkVOVC5NT1ZFX1NUQVJURUQsIHdjRG9ja2VyLkVWRU5ULk1PVkVfRU5E RUQsCi0gICAgICAgICAgICAgICAgd2NEb2NrZXIuRVZFTlQuTU9WRUQsIHdjRG9ja2VyLkVWRU5U LlJFU0laRV9TVEFSVEVELAotICAgICAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlJFU0laRV9F TkRFRCwgd2NEb2NrZXIuRVZFTlQuUkVTSVpFRCwKLSAgICAgICAgICAgICAgICB3Y0RvY2tlci5F VkVOVC5TQ1JPTExFRCwKLSAgICAgICAgICAgICAgXSwgZnVuY3Rpb24oZXYpIHsKLSAgICAgICAg ICAgICAgICBteVBhbmVsLm9uKGV2LCB0aGF0LmV2ZW50RnVuYy5iaW5kKG15UGFuZWwsIGV2KSk7 Ci0gICAgICAgICAgICAgIH0pOworbGV0IHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlciA9IHBn QWRtaW4uQnJvd3NlciB8fCB7fTsKK2xldCB3Y0RvY2tlciA9IHdpbmRvdy53Y0RvY2tlcjsKIAot ICAgICAgICAgICAgICBpZiAodGhhdC5vbkNyZWF0ZSAmJiBfLmlzRnVuY3Rpb24odGhhdC5vbkNy ZWF0ZSkpIHsKLSAgICAgICAgICAgICAgICB0aGF0Lm9uQ3JlYXRlLmFwcGx5KHRoYXQsIFtteVBh bmVsLCAkY29udGFpbmVyXSk7Ci0gICAgICAgICAgICAgIH0KK3BnQWRtaW4uQnJvd3Nlci5QYW5l bCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAgY29uc3QgZGVmYXVsdHMgPSBbCisgICAgJ25hbWUn LCAndGl0bGUnLCAnd2lkdGgnLCAnaGVpZ2h0JywgJ3Nob3dUaXRsZScsICdpc0Nsb3NlYWJsZScs CisgICAgJ2lzUHJpdmF0ZScsICdjb250ZW50JywgJ2ljb24nLCAnZXZlbnRzJywgJ29uQ3JlYXRl JywgJ2VsQ29udGFpbmVyJywKKyAgICAnY2FuSGlkZScsICdsaW1pdCcsICdpc01vdmVhYmxlJywK KyAgXTsKKyAgXy5leHRlbmQodGhpcywgXy5waWNrKG9wdGlvbnMsIGRlZmF1bHRzKSk7Cit9Owog Ci0gICAgICAgICAgICAgIGlmICh0aGF0LmVsQ29udGFpbmVyKSB7Ci0gICAgICAgICAgICAgICAg bXlQYW5lbC5wZ0VsQ29udGFpbmVyID0gJGNvbnRhaW5lcjsKLSAgICAgICAgICAgICAgICAkY29u dGFpbmVyLmFkZENsYXNzKCdwZy1lbC1jb250YWluZXInKTsKLSAgICAgICAgICAgICAgICBfLmVh Y2goWwotICAgICAgICAgICAgICAgICAgd2NEb2NrZXIuRVZFTlQuUkVTSVpFRCwgd2NEb2NrZXIu RVZFTlQuQVRUQUNIRUQsCi0gICAgICAgICAgICAgICAgICB3Y0RvY2tlci5FVkVOVC5ERVRBQ0hF RCwgd2NEb2NrZXIuRVZFTlQuVklTSUJJTElUWV9DSEFOR0VELAotICAgICAgICAgICAgICAgIF0s IGZ1bmN0aW9uKGV2KSB7Ci0gICAgICAgICAgICAgICAgICBteVBhbmVsLm9uKGV2LCB0aGF0LnJl c2l6ZWRDb250YWluZXIuYmluZChteVBhbmVsKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg ICAgICAgICAgICAgdGhhdC5yZXNpemVkQ29udGFpbmVyLmFwcGx5KG15UGFuZWwpOwotICAgICAg ICAgICAgICB9CitfLmV4dGVuZChwZ0FkbWluLkJyb3dzZXIuUGFuZWwucHJvdG90eXBlLCB7Cisg IG5hbWU6ICcnLAorICB0aXRsZTogJycsCisgIHdpZHRoOiAzMDAsCisgIGhlaWdodDogNjAwLAor ICBzaG93VGl0bGU6IHRydWUsCisgIGlzQ2xvc2VhYmxlOiB0cnVlLAorICBpc1ByaXZhdGU6IGZh bHNlLAorICBpc01vdmVhYmxlOiBmYWxzZSwKKyAgY29udGVudDogJycsCisgIGljb246ICcnLAor ICBwYW5lbDogbnVsbCwKKyAgb25DcmVhdGU6IG51bGwsCisgIGVsQ29udGFpbmVyOiBmYWxzZSwK KyAgbGltaXQ6IG51bGwsCisgIGxvYWQ6IGZ1bmN0aW9uKGRvY2tlciwgdGl0bGUpIHsKKyAgICBj b25zdCB0aGF0ID0gdGhpczsKKyAgICBpZiAoIXRoYXQucGFuZWwpIHsKKyAgICAgIGRvY2tlci5y ZWdpc3RlclBhbmVsVHlwZSh0aGF0Lm5hbWUsIHsKKyAgICAgICAgdGl0bGU6IHRoYXQudGl0bGUs CisgICAgICAgIGlzUHJpdmF0ZTogdGhhdC5pc1ByaXZhdGUsCisgICAgICAgIGxpbWl0OiB0aGF0 LmxpbWl0LAorICAgICAgICBvbkNyZWF0ZTogZnVuY3Rpb24obXlQYW5lbCkgeworICAgICAgICAg ICQobXlQYW5lbCkuZGF0YSgncGdBZG1pbk5hbWUnLCB0aGF0Lm5hbWUpOworICAgICAgICAgIG15 UGFuZWwuaW5pdFNpemUodGhhdC53aWR0aCwgdGhhdC5oZWlnaHQpOwogCi0gICAgICAgICAgICAg IC8vIEJpbmQgZXZlbnRzIG9ubHkgaWYgdGhleSBhcmUgY29uZmlndXJhYmxlCi0gICAgICAgICAg ICAgIGlmICh0aGF0LmNhbkhpZGUpIHsKLSAgICAgICAgICAgICAgICBfLmVhY2goW3djRG9ja2Vy LkVWRU5ULkNMT1NFRCwgd2NEb2NrZXIuRVZFTlQuVklTSUJJTElUWV9DSEFOR0VEXSwKLSAgICAg ICAgICAgICAgICAgIGZ1bmN0aW9uKGV2KSB7Ci0gICAgICAgICAgICAgICAgICAgIG15UGFuZWwu b24oZXYsIHRoYXQuaGFuZGxlVmlzaWJpbGl0eS5iaW5kKG15UGFuZWwsIGV2KSk7Ci0gICAgICAg ICAgICAgICAgICB9KTsKKyAgICAgICAgICBpZiAoIXRoYXQuc2hvd1RpdGxlKQorICAgICAgICAg ICAgbXlQYW5lbC50aXRsZShmYWxzZSk7CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBj b25zdCB0aXRsZV9lbGVtID0gJzxhIGhyZWY9IiMiIHRhYmluZGV4PSIwIiBjbGFzcz0icGFuZWwt bGluay1oZWFkaW5nIj4nICsgKHRpdGxlIHx8IHRoYXQudGl0bGUpICsgJzwvYT4nOworICAgICAg ICAgICAgbXlQYW5lbC50aXRsZSh0aXRsZV9lbGVtKTsKKyAgICAgICAgICAgIGlmICh0aGF0Lmlj b24gIT09ICcnKQorICAgICAgICAgICAgICBteVBhbmVsLmljb24odGhhdC5pY29uKTsKKyAgICAg ICAgICB9CisKKyAgICAgICAgICBjb25zdCAkY29udGFpbmVyID0gJCgnPGRpdj4nLCB7CisgICAg ICAgICAgICAnY2xhc3MnOiAncGctcGFuZWwtY29udGVudCcsCisgICAgICAgICAgfSkuYXBwZW5k KCQodGhhdC5jb250ZW50KSk7CisKKyAgICAgICAgICBteVBhbmVsLmNsb3NlYWJsZSghIXRoYXQu aXNDbG9zZWFibGUpOworICAgICAgICAgIG15UGFuZWwubGF5b3V0KCkuYWRkSXRlbSgkY29udGFp bmVyKTsKKyAgICAgICAgICB0aGF0LnBhbmVsID0gbXlQYW5lbDsKKyAgICAgICAgICBpZiAodGhh dC5ldmVudHMgJiYgXy5pc09iamVjdCh0aGF0LmV2ZW50cykpIHsKKyAgICAgICAgICAgIF8uZWFj aCh0aGF0LmV2ZW50cywgZnVuY3Rpb24odiwgaykgeworICAgICAgICAgICAgICBpZiAodiAmJiBf LmlzRnVuY3Rpb24odikpIHsKKyAgICAgICAgICAgICAgICBteVBhbmVsLm9uKGssIHYpOwogICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAorICAgICAgICAgICAgfSk7CisgICAgICAgICAg fQorICAgICAgICAgIF8uZWFjaChbCisgICAgICAgICAgICB3Y0RvY2tlci5FVkVOVC5VUERBVEVE LCB3Y0RvY2tlci5FVkVOVC5WSVNJQklMSVRZX0NIQU5HRUQsCisgICAgICAgICAgICB3Y0RvY2tl ci5FVkVOVC5CRUdJTl9ET0NLLCB3Y0RvY2tlci5FVkVOVC5FTkRfRE9DSywKKyAgICAgICAgICAg IHdjRG9ja2VyLkVWRU5ULkdBSU5fRk9DVVMsIHdjRG9ja2VyLkVWRU5ULkxPU1RfRk9DVVMsCisg ICAgICAgICAgICB3Y0RvY2tlci5FVkVOVC5DTE9TRUQsIHdjRG9ja2VyLkVWRU5ULkJVVFRPTiwK KyAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULkFUVEFDSEVELCB3Y0RvY2tlci5FVkVOVC5ERVRB Q0hFRCwKKyAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULk1PVkVfU1RBUlRFRCwgd2NEb2NrZXIu RVZFTlQuTU9WRV9FTkRFRCwKKyAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULk1PVkVELCB3Y0Rv Y2tlci5FVkVOVC5SRVNJWkVfU1RBUlRFRCwKKyAgICAgICAgICAgIHdjRG9ja2VyLkVWRU5ULlJF U0laRV9FTkRFRCwgd2NEb2NrZXIuRVZFTlQuUkVTSVpFRCwKKyAgICAgICAgICAgIHdjRG9ja2Vy LkVWRU5ULlNDUk9MTEVELAorICAgICAgICAgIF0sIGZ1bmN0aW9uKGV2KSB7CisgICAgICAgICAg ICBteVBhbmVsLm9uKGV2LCB0aGF0LmV2ZW50RnVuYy5iaW5kKG15UGFuZWwsIGV2KSk7CiAgICAg ICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBldmVudEZ1bmM6IGZ1bmN0aW9u KGV2ZW50TmFtZSkgewotICAgICAgICB2YXIgbmFtZSA9ICQodGhpcykuZGF0YSgncGdBZG1pbk5h bWUnKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dl cigKLSAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cGFuZWwnLCBldmVudE5hbWUsIHRoaXMs IGFyZ3VtZW50cwotICAgICAgICAgICk7Ci0gICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmln Z2VyKAotICAgICAgICAgICAgJ3BnYWRtaW4tYnJvd3NlcjpwYW5lbDonICsgZXZlbnROYW1lLCB0 aGlzLCBhcmd1bWVudHMKLSAgICAgICAgICApOwogCi0gICAgICAgICAgaWYgKG5hbWUpIHsKLSAg ICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKLSAgICAgICAgICAgICAgJ3BnYWRt aW4tYnJvd3NlcjpwYW5lbC0nICsgbmFtZSwgZXZlbnROYW1lLCB0aGlzLCBhcmd1bWVudHMKLSAg ICAgICAgICAgICk7Ci0gICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoCi0gICAg ICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cGFuZWwtJyArIG5hbWUgKyAnOicgKyBldmVudE5h bWUsIHRoaXMsIGFyZ3VtZW50cwotICAgICAgICAgICAgKTsKKyAgICAgICAgICBpZiAodGhhdC5v bkNyZWF0ZSAmJiBfLmlzRnVuY3Rpb24odGhhdC5vbkNyZWF0ZSkpIHsKKyAgICAgICAgICAgIHRo YXQub25DcmVhdGUuYXBwbHkodGhhdCwgW215UGFuZWwsICRjb250YWluZXJdKTsKICAgICAgICAg ICB9Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFj ayB8fCBlKTsKLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIHJlc2l6ZWRDb250YWluZXI6IGZ1 bmN0aW9uKCkgewotICAgICAgICB2YXIgcCA9IHRoaXM7Ci0KLSAgICAgICAgaWYgKHAucGdFbENv bnRhaW5lciAmJiAhcC5wZ1Jlc2l6ZVRpbWVvdXQpIHsKLSAgICAgICAgICBpZiAoIXAuaXNWaXNp YmxlKCkpIHsKLSAgICAgICAgICAgIGNsZWFyVGltZW91dChwLnBnUmVzaXplVGltZW91dCk7Ci0g ICAgICAgICAgICBwLnBnUmVzaXplVGltZW91dCA9IG51bGw7Ci0KLSAgICAgICAgICAgIHJldHVy bjsKKworICAgICAgICAgIGlmICh0aGF0LmVsQ29udGFpbmVyKSB7CisgICAgICAgICAgICBteVBh bmVsLnBnRWxDb250YWluZXIgPSAkY29udGFpbmVyOworICAgICAgICAgICAgJGNvbnRhaW5lci5h ZGRDbGFzcygncGctZWwtY29udGFpbmVyJyk7CisgICAgICAgICAgICBfLmVhY2goWworICAgICAg ICAgICAgICB3Y0RvY2tlci5FVkVOVC5SRVNJWkVELCB3Y0RvY2tlci5FVkVOVC5BVFRBQ0hFRCwK KyAgICAgICAgICAgICAgd2NEb2NrZXIuRVZFTlQuREVUQUNIRUQsIHdjRG9ja2VyLkVWRU5ULlZJ U0lCSUxJVFlfQ0hBTkdFRCwKKyAgICAgICAgICAgIF0sIGZ1bmN0aW9uKGV2KSB7CisgICAgICAg ICAgICAgIG15UGFuZWwub24oZXYsIHRoYXQucmVzaXplZENvbnRhaW5lci5iaW5kKG15UGFuZWwp KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdGhhdC5yZXNpemVkQ29udGFpbmVyLmFw cGx5KG15UGFuZWwpOwogICAgICAgICAgIH0KLSAgICAgICAgICBwLnBnUmVzaXplVGltZW91dCA9 IHNldFRpbWVvdXQoCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdmFy IHcgPSBwLndpZHRoKCk7Ci0gICAgICAgICAgICAgIHAucGdSZXNpemVUaW1lb3V0ID0gbnVsbDsK LQotICAgICAgICAgICAgICBpZiAodyA8PSA0ODApIHsKLSAgICAgICAgICAgICAgICB3ID0gJ3hz JzsKLSAgICAgICAgICAgICAgfSBlbHNlIGlmICh3IDwgNjAwKSB7Ci0gICAgICAgICAgICAgICAg dyA9ICdzbSc7Ci0gICAgICAgICAgICAgIH0gZWxzZSBpZiAodyA8IDc2OCkgewotICAgICAgICAg ICAgICAgIHcgPSAnbWQnOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg IHcgPSAnbGcnOwotICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgcC5wZ0VsQ29udGFp bmVyLmF0dHIoJ2VsJywgdyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgMTAwCisgICAg ICAgICAgLy8gQmluZCBldmVudHMgb25seSBpZiB0aGV5IGFyZSBjb25maWd1cmFibGUKKyAgICAg ICAgICBpZiAodGhhdC5jYW5IaWRlKSB7CisgICAgICAgICAgICBfLmVhY2goW3djRG9ja2VyLkVW RU5ULkNMT1NFRCwgd2NEb2NrZXIuRVZFTlQuVklTSUJJTElUWV9DSEFOR0VEXSwKKyAgICAgICAg ICAgICAgZnVuY3Rpb24oZXYpIHsKKyAgICAgICAgICAgICAgICBteVBhbmVsLm9uKGV2LCB0aGF0 LmhhbmRsZVZpc2liaWxpdHkuYmluZChteVBhbmVsLCBldikpOworICAgICAgICAgICAgICB9KTsK KyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBVcGRhdGUgcGFuZWxzIGFzIHBlciBuZXcgcHJl ZmVyZW5jZSB2YWx1ZQorICAgICAgICAgIHdpbmRvdy50b3AucGdBZG1pbi5Ccm93c2VyLkV2ZW50 cy5vbigKKyAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cHJlZmVyZW5jZXMtdXBkYXRlZCcs CisgICAgICAgICAgICB0aGF0LnVwZGF0ZVBhbmVsLCBteVBhbmVsCiAgICAgICAgICAgKTsKLSAg ICAgICAgfQotICAgICAgfSwKLSAgICAgIGhhbmRsZVZpc2liaWxpdHk6IGZ1bmN0aW9uKGV2ZW50 TmFtZSkgewotICAgICAgICAvLyBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdp dGggZGFzaGJvYXJkIHBhbmVsIGJ1dAotICAgICAgICAvLyBhcyBwZXIgbmVlZCBpdCBjYW4gYmUg ZXh0ZW5kZWQKLSAgICAgICAgaWYgKHRoaXMuX3R5cGUgIT0gJ2Rhc2hib2FyZCcgfHwgXy5pc1Vu ZGVmaW5lZChwZ0FkbWluLkRhc2hib2FyZCkpCi0gICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg IGlmIChldmVudE5hbWUgPT0gJ3BhbmVsQ2xvc2VkJykgewotICAgICAgICAgIHBnQnJvd3Nlci5z YXZlX2N1cnJlbnRfbGF5b3V0KHBnQnJvd3Nlcik7Ci0gICAgICAgICAgcGdBZG1pbi5EYXNoYm9h cmQudG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnROYW1l ID09ICdwYW5lbFZpc2liaWxpdHlDaGFuZ2VkJykgewotICAgICAgICAgIGlmIChwZ0Jyb3dzZXIu dHJlZSkgewotICAgICAgICAgICAgcGdCcm93c2VyLnNhdmVfY3VycmVudF9sYXlvdXQocGdCcm93 c2VyKTsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBwZ0Jyb3dzZXIudHJlZS5zZWxl Y3RlZCgpOwotICAgICAgICAgICAgLy8gRGlzY29udGludWUgdGhpcyBldmVudCBhZnRlciBmaXJz dCB0aW1lIHZpc2libGUKLSAgICAgICAgICAgIHRoaXMub2ZmKHdjRG9ja2VyLkVWRU5ULlZJU0lC SUxJVFlfQ0hBTkdFRCk7Ci0gICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQocGdBZG1pbi5E YXNoYm9hcmQpKQotICAgICAgICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC50b2dnbGVWaXNpYmls aXR5KHRydWUpOwotICAgICAgICAgICAgLy8gRXhwbGljaXRseSB0cmlnZ2VyIHRyZWUgc2VsZWN0 ZWQgZXZlbnQgd2hlbiB3ZSBhZGQgdGhlIHRhYi4KLSAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVu dHMudHJpZ2dlcigncGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCBzZWxlY3RlZE5vZGUs Ci0gICAgICAgICAgICAgIHBnQnJvd3Nlci50cmVlLml0ZW1EYXRhKHNlbGVjdGVkTm9kZSksIHBn QnJvd3Nlci5Ob2RlKTsKKworICAgICAgICAgIG15UGFuZWwubW92ZWFibGUodGhhdC5pc01vdmVh YmxlKTsKKyAgICAgICAgICAvLyBJZiBub3QgZnJhbWUgdGhlbiB1cGRhdGUgaXQKKyAgICAgICAg ICBpZighdGhhdC5pc01vdmVhYmxlKSB7CisgICAgICAgICAgICB0aGF0LnVwZGF0ZVBhbmVsLmNh bGwobXlQYW5lbCk7CiAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LAorICAgICAgICB9 LAorICAgICAgfSk7CisgICAgfQorICB9LAorCisgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYWxsb3cg dXMgdG8gbG9jayB0aGUgaW5kaXZpZHVhbCBGcmFtZSBwYW5lbAorICBsb2NrRnJhbWVQYW5lbDog ZnVuY3Rpb24oKSB7CisgICAgLy8gRmluZCBlYWNoIHdjRnJhbWUKKyAgICAkKCcud2NGcmFtZVRp dGxlQmFyJykuZWFjaChmdW5jdGlvbigpIHsKKyAgICAgIC8vIElmIGl0J3Mgbm90IGxvY2tlZAor ICAgICAgaWYoISQodGhpcykuaGFzQ2xhc3MoJ25vLW1vdXNlLWV2ZW50JykpIHsKKyAgICAgICAg JCh0aGlzKS5hZGRDbGFzcygnbm8tbW91c2UtZXZlbnQnKTsKKyAgICAgIH0KKyAgICB9KTsKKyAg fSwKIAorICAvLyBUaGlzIG1ldGhvZCB3aWxsIGFsbG93IHVzIHRvIHVubG9jayB0aGUgaW5kaXZp ZHVhbCBGcmFtZSBwYW5lbAorICB1bmxvY2tGcmFtZVBhbmVsOiBmdW5jdGlvbigpIHsKKyAgICAk KCcud2NGcmFtZVRpdGxlQmFyJykuZWFjaChmdW5jdGlvbigpIHsKKyAgICAgIC8vIElmIGl0J3Mg bG9ja2VkCisgICAgICBpZigkKHRoaXMpLmhhc0NsYXNzKCduby1tb3VzZS1ldmVudCcpKSB7Cisg ICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ25vLW1vdXNlLWV2ZW50Jyk7CisgICAgICB9CiAg ICAgfSk7CisgIH0sCisKKyAgLy8gV2UnbGwgZXhlY3V0ZSB0aGlzIGZ1bmN0aW9uIGFmdGVyIHBy ZWZlcmVuY2VzIHVwZGF0ZQorICB1cGRhdGVQYW5lbDogZnVuY3Rpb24oKSB7CisgICAgbGV0IHBh bmVsID0gdGhpczsKKyAgICBsZXQgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5j ZSgKKyAgICAgICdtaXNjZWxsYW5lb3VzJywgJ2xvY2tfcGFuZWxfbGF5b3V0JworICAgICk7CisK KyAgICAvLyBJZiB0aGUgUGFuZWwgb3BlbnMgaW4gaWZyYW1lCisgICAgaWYoXy5pc1VuZGVmaW5l ZChwcmVmZXJlbmNlKSB8fCBfLmlzTnVsbChwcmVmZXJlbmNlKSkgeworICAgICAgaWYod2luZG93 Lm9wZW5lciAmJiB3aW5kb3cub3BlbmVyLnBnQWRtaW4uQnJvd3Nlcil7CisgICAgICAgIHByZWZl cmVuY2UgPSB3aW5kb3cub3BlbmVyLnBnQWRtaW4uQnJvd3Nlci5nZXRfcHJlZmVyZW5jZSgKKyAg ICAgICAgICAnbWlzY2VsbGFuZW91cycsICdsb2NrX3BhbmVsX2xheW91dCcKKyAgICAgICAgKTsK KyAgICAgIH0gZWxzZSBpZih3aW5kb3cudG9wICYmIHdpbmRvdy50b3AucGdBZG1pbi5Ccm93c2Vy KSB7CisgICAgICAgIHByZWZlcmVuY2UgPSB3aW5kb3cudG9wLnBnQWRtaW4uQnJvd3Nlci5nZXRf cHJlZmVyZW5jZSgKKyAgICAgICAgICAnbWlzY2VsbGFuZW91cycsICdsb2NrX3BhbmVsX2xheW91 dCcKKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiBzdGlsbCBwcmVmZXJl bmNlIGlzIG1pc3NpbmcgdGhlbiBkb24ndCBkbyBhbnl0aGluZworICAgIGlmKF8uaXNVbmRlZmlu ZWQocHJlZmVyZW5jZSkgfHwgXy5pc051bGwocHJlZmVyZW5jZSkpIHsKKyAgICAgIHJldHVybjsK KyAgICB9CisKKyAgICAvKgorICAgICBwcmVmZXJlbmNlLnZhbHVlID09IHRydWUgdGhlbiBMb2Nr CisgICAgIHByZWZlcmVuY2UudmFsdWUgPT0gZmFsc2UgdGhlbiBVbkxvY2sKKyAgICAgcGFuZWwu bW92ZWFibGUoKSByZXR1cm5zIFRydWUgaWYgcGFuZWwgaXMgbW92ZWFibGUKKyAgICAqLworICAg IGxldCBpc01vdmVhYmxlID0gIXByZWZlcmVuY2UudmFsdWU7CisKKyAgICAvLyBJZiBub3QgbW92 ZWFibGUgdGhlbiBsb2NrIGl0CisgICAgaWYgKGlzTW92ZWFibGUpIHsKKyAgICAgIHBnQWRtaW4u QnJvd3Nlci5QYW5lbC5wcm90b3R5cGUudW5sb2NrRnJhbWVQYW5lbCgpOworICAgIH0gZWxzZSB7 CisgICAgICBwZ0FkbWluLkJyb3dzZXIuUGFuZWwucHJvdG90eXBlLmxvY2tGcmFtZVBhbmVsKCk7 CisgICAgfQorCisgICAgLy8gSWYgbm8gY2hhbmdlIGluIHNldHRpbmdzIHRoZW4gcmV0dXJuIGZy b20gaGVyZQorICAgIGlmKHBhbmVsLm1vdmVhYmxlKCkgPT09IGlzTW92ZWFibGUpCisgICAgICBy ZXR1cm47CisKKyAgICBwZ0Jyb3dzZXIudXRpbHMuaXNQYW5lbE1vdmVhYmxlID0gaXNNb3ZlYWJs ZTsKKyAgICBwYW5lbC5tb3ZlYWJsZShpc01vdmVhYmxlKTsKKyAgfSwKKworICBldmVudEZ1bmM6 IGZ1bmN0aW9uKGV2ZW50TmFtZSkgeworICAgIGNvbnN0IG5hbWUgPSAkKHRoaXMpLmRhdGEoJ3Bn QWRtaW5OYW1lJyk7CisKKyAgICB0cnkgeworICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2Vy KAorICAgICAgICAncGdhZG1pbi1icm93c2VyOnBhbmVsJywgZXZlbnROYW1lLCB0aGlzLCBhcmd1 bWVudHMKKyAgICAgICk7CisgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoCisgICAgICAg ICdwZ2FkbWluLWJyb3dzZXI6cGFuZWw6JyArIGV2ZW50TmFtZSwgdGhpcywgYXJndW1lbnRzCisg ICAgICApOworCisgICAgICBpZiAobmFtZSkgeworICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRy aWdnZXIoCisgICAgICAgICAgJ3BnYWRtaW4tYnJvd3NlcjpwYW5lbC0nICsgbmFtZSwgZXZlbnRO YW1lLCB0aGlzLCBhcmd1bWVudHMKKyAgICAgICAgKTsKKyAgICAgICAgcGdCcm93c2VyLkV2ZW50 cy50cmlnZ2VyKAorICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6cGFuZWwtJyArIG5hbWUgKyAn OicgKyBldmVudE5hbWUsIHRoaXMsIGFyZ3VtZW50cworICAgICAgICApOworICAgICAgfQorICAg IH0gY2F0Y2ggKGUpIHsKKyAgICAgIGNvbnNvbGUud2FybihlLnN0YWNrIHx8IGUpOworICAgIH0K KyAgfSwKKyAgcmVzaXplZENvbnRhaW5lcjogZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcCA9IHRo aXM7CisKKyAgICBpZiAocC5wZ0VsQ29udGFpbmVyICYmICFwLnBnUmVzaXplVGltZW91dCkgewor ICAgICAgaWYgKCFwLmlzVmlzaWJsZSgpKSB7CisgICAgICAgIGNsZWFyVGltZW91dChwLnBnUmVz aXplVGltZW91dCk7CisgICAgICAgIHAucGdSZXNpemVUaW1lb3V0ID0gbnVsbDsKKworICAgICAg ICByZXR1cm47CisgICAgICB9CisgICAgICBwLnBnUmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQo CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGxldCB3ID0gcC53aWR0aCgpOworICAg ICAgICAgIHAucGdSZXNpemVUaW1lb3V0ID0gbnVsbDsKKworICAgICAgICAgIGlmICh3IDw9IDQ4 MCkgeworICAgICAgICAgICAgdyA9ICd4cyc7CisgICAgICAgICAgfSBlbHNlIGlmICh3IDwgNjAw KSB7CisgICAgICAgICAgICB3ID0gJ3NtJzsKKyAgICAgICAgICB9IGVsc2UgaWYgKHcgPCA3Njgp IHsKKyAgICAgICAgICAgIHcgPSAnbWQnOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICB3ID0gJ2xnJzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBwLnBnRWxDb250YWluZXIuYXR0 cignZWwnLCB3KTsKKyAgICAgICAgfSwKKyAgICAgICAgMTAwCisgICAgICApOworICAgIH0KKyAg fSwKKyAgaGFuZGxlVmlzaWJpbGl0eTogZnVuY3Rpb24oZXZlbnROYW1lKSB7CisgICAgLy8gQ3Vy cmVudGx5IHRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIGRhc2hib2FyZCBwYW5lbCBidXQK KyAgICAvLyBhcyBwZXIgbmVlZCBpdCBjYW4gYmUgZXh0ZW5kZWQKKyAgICBpZiAodGhpcy5fdHlw ZSAhPT0gJ2Rhc2hib2FyZCcgfHwgXy5pc1VuZGVmaW5lZChwZ0FkbWluLkRhc2hib2FyZCkpCisg ICAgICByZXR1cm47CisKKyAgICBpZiAoZXZlbnROYW1lID09PSAncGFuZWxDbG9zZWQnKSB7Cisg ICAgICBwZ0Jyb3dzZXIuc2F2ZV9jdXJyZW50X2xheW91dChwZ0Jyb3dzZXIpOworICAgICAgcGdB ZG1pbi5EYXNoYm9hcmQudG9nZ2xlVmlzaWJpbGl0eShmYWxzZSk7CisgICAgfSBlbHNlIGlmIChl dmVudE5hbWUgPT09ICdwYW5lbFZpc2liaWxpdHlDaGFuZ2VkJykgeworICAgICAgaWYgKHBnQnJv d3Nlci50cmVlKSB7CisgICAgICAgIHBnQnJvd3Nlci5zYXZlX2N1cnJlbnRfbGF5b3V0KHBnQnJv d3Nlcik7CisgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHBnQnJvd3Nlci50cmVlLnNlbGVj dGVkKCk7CisgICAgICAgIC8vIERpc2NvbnRpbnVlIHRoaXMgZXZlbnQgYWZ0ZXIgZmlyc3QgdGlt ZSB2aXNpYmxlCisgICAgICAgIHRoaXMub2ZmKHdjRG9ja2VyLkVWRU5ULlZJU0lCSUxJVFlfQ0hB TkdFRCk7CisgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChwZ0FkbWluLkRhc2hib2FyZCkpCisg ICAgICAgICAgcGdBZG1pbi5EYXNoYm9hcmQudG9nZ2xlVmlzaWJpbGl0eSh0cnVlKTsKKyAgICAg ICAgLy8gRXhwbGljaXRseSB0cmlnZ2VyIHRyZWUgc2VsZWN0ZWQgZXZlbnQgd2hlbiB3ZSBhZGQg dGhlIHRhYi4KKyAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWluLWJyb3dz ZXI6dHJlZTpzZWxlY3RlZCcsIHNlbGVjdGVkTm9kZSwKKyAgICAgICAgICBwZ0Jyb3dzZXIudHJl ZS5pdGVtRGF0YShzZWxlY3RlZE5vZGUpLCBwZ0Jyb3dzZXIuTm9kZSk7CisgICAgICB9CisgICAg fQorICB9LAorCit9KTsKIAotICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuUGFuZWw7Ci0gIH0p OworbW9kdWxlLmV4cG9ydHMgPSBwZ0FkbWluLkJyb3dzZXIuUGFuZWw7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2pzL3V0aWxzLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9qcy91dGlscy5qcwppbmRleCBiZTNiNzEy Mi4uYWEzNzkyNWIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jy b3dzZXIvanMvdXRpbHMuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJv d3Nlci9qcy91dGlscy5qcwpAQCAtMjYsNiArMjYsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nl ci51dGlscycsCiAgICAgaXNfaW5kZW50X3dpdGhfdGFiczogJ3t7IGVkaXRvcl9pbmRlbnRfd2l0 aF90YWJzIH19JyA9PSAnVHJ1ZScsCiAgICAgYXBwX25hbWU6ICd7eyBhcHBfbmFtZSB9fScsCiAg ICAgcGdfbGlicHFfdmVyc2lvbjoge3twZ19saWJwcV92ZXJzaW9ufGV9fSwKKyAgICBpc1BhbmVs TW92ZWFibGU6IHRydWUsCiAKICAgICBjb3VudGVyOiB7dG90YWw6IDAsIGxvYWRlZDogMH0sCiAg ICAgcmVnaXN0ZXJTY3JpcHRzOiBmdW5jdGlvbiAoY3R4KSB7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9taXNjL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vbWlzYy9fX2luaXRfXy5weQppbmRl eCBkYTI4NDEzYS4uN2I5NTIxYzIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21pc2MvX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vbWlzYy9fX2luaXRfXy5weQpAQCAtNjgsNiArNjgsMTEg QEAgY2xhc3MgTWlzY01vZHVsZShQZ0FkbWluTW9kdWxlKToKICAgICAgICAgICAgIGNhdGVnb3J5 X2xhYmVsPWdldHRleHQoJ1VzZXIgbGFuZ3VhZ2UnKSwKICAgICAgICAgICAgIG9wdGlvbnM9bGFu Z19vcHRpb25zCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5taXNjX3ByZWZlcmVuY2UucmVnaXN0 ZXIoCisgICAgICAgICAgICAnbGF5b3V0JywgJ2xvY2tfcGFuZWxfbGF5b3V0JywKKyAgICAgICAg ICAgIGdldHRleHQoIkxvY2sgbGF5b3V0PyIpLCAnYm9vbGVhbicsIEZhbHNlLAorICAgICAgICAg ICAgY2F0ZWdvcnlfbGFiZWw9Z2V0dGV4dCgnTGF5b3V0JykKKyAgICAgICAgKQogCiAgICAgZGVm IGdldF9leHBvc2VkX3VybF9lbmRwb2ludHMoc2VsZik6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vc2V0dGluZ3MvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9zZXR0aW5n cy9fX2luaXRfXy5weQppbmRleCAyNjliZmRmMS4uMmI4ZWIyZWEgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3NldHRpbmdzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3NldHRpbmdzL19f aW5pdF9fLnB5CkBAIC0xMTUsNyArMTE1LDcgQEAgZGVmIHN0b3JlKHNldHRpbmc9Tm9uZSwgdmFs dWU9Tm9uZSk6CiAgICAgICAgICAgICBzdG9yZV9zZXR0aW5nKHNldHRpbmcsIHZhbHVlKQogICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgc3VjY2VzcyA9IDAKLSAgICAgICAgZXJy b3Jtc2cgPSBlLm1lc3NhZ2UKKyAgICAgICAgZXJyb3Jtc2cgPSBzdHIoZSkKIAogICAgIHRyeToK ICAgICAgICAgaW5mbyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9jc3Mvd2ViY2FiaW4ub3ZlcnJpZGVzLmNzcyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9jc3Mvd2ViY2FiaW4ub3ZlcnJpZGVzLmNzcwppbmRleCAxOGQ4OWY4NC4uMTAyYjM0NTEg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvd2ViY2FiaW4ub3ZlcnJpZGVzLmNz cworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvY3NzL3dlYmNhYmluLm92ZXJyaWRlcy5jc3MKQEAg LTM5OSwzICszOTksMTEgQEAgaS53Y1RhYkljb24gewogICBiYWNrZ3JvdW5kLXNpemU6IDE4cHgg IWltcG9ydGFudDsKICAgaGVpZ2h0OiAxOHB4OwogfQorCisud2NUYWJTY3JvbGxlciB7CisgIHBv c2l0aW9uOiBpbml0aWFsOworfQorCisud2NQYW5lbFRhYiB7CisgIHBvaW50ZXItZXZlbnRzOiBh dXRvOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L2RhdGFncmlkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFn cmlkLmpzCmluZGV4IGIwZWQ2MGY2Li4yNzMyMzE4MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v dG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcwpAQCAtNTI3LDEwICs1MjcsMjEgQEAg ZGVmaW5lKCdwZ2FkbWluLmRhdGFncmlkJywgWwogICAgICAgICAgIC8vIFNldCBwYW5lbCB0aXRs ZSBhbmQgaWNvbgogICAgICAgICAgIHF1ZXJ5VG9vbFBhbmVsLnRpdGxlKCc8c3BhbiB0aXRsZT0i JytwYW5lbF90aXRsZSsnIj4nK3BhbmVsX3RpdGxlKyc8L3NwYW4+Jyk7CiAgICAgICAgICAgcXVl cnlUb29sUGFuZWwuaWNvbignZmEgZmEtYm9sdCcpOworICAgICAgICAgIHF1ZXJ5VG9vbFBhbmVs Lm1vdmVhYmxlKHBnQnJvd3Nlci51dGlscy5pc1BhbmVsTW92ZWFibGUpOworICAgICAgICAgIHBn QnJvd3Nlci5FdmVudHMub24oCisgICAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnByZWZlcmVu Y2VzLXVwZGF0ZWQnLAorICAgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLlBhbmVsLnByb3RvdHlw ZS51cGRhdGVQYW5lbCwgcXVlcnlUb29sUGFuZWwKKyAgICAgICAgICApOworCiAgICAgICAgICAg cXVlcnlUb29sUGFuZWwuZm9jdXMoKTsKIAogICAgICAgICAgIC8vIExpc3RlbiBvbiB0aGUgcGFu ZWwgY2xvc2VkIGV2ZW50LgogICAgICAgICAgIHF1ZXJ5VG9vbFBhbmVsLm9uKHdjRG9ja2VyLkVW RU5ULkNMT1NFRCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9m ZigKKyAgICAgICAgICAgICAgJ3BnYWRtaW4tYnJvd3NlcjpwcmVmZXJlbmNlcy11cGRhdGVkJywK KyAgICAgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLlBhbmVsLnByb3RvdHlwZS51cGRhdGVQYW5l bCwgcXVlcnlUb29sUGFuZWwKKyAgICAgICAgICAgICk7CisKICAgICAgICAgICAgICQuYWpheCh7 CiAgICAgICAgICAgICAgIHVybDogdXJsX2ZvcignZGF0YWdyaWQuY2xvc2UnLCB7J3RyYW5zX2lk JzogdHJhbnNfb2JqLmdyaWRUcmFuc0lkfSksCiAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcs CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdn ZXJfdWkuanMgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXJf dWkuanMKaW5kZXggZjkwNDlkODEuLjNhOTZmZDhiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXJfdWkuanMKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3VpLmpzCkBAIC03MjUsOSArNzI1LDE5 IEBAIGRlZmluZShbCiAgICAgICAgICAgICAgICAgICAgICAgICApOwogCiAgICAgICAgICAgICAg ICAgICAgICAgcGFuZWwuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5tb3Zl YWJsZShwZ0Jyb3dzZXIudXRpbHMuaXNQYW5lbE1vdmVhYmxlKTsKKyAgICAgICAgICAgICAgICAg ICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ3BnYWRt aW4tYnJvd3NlcjpwcmVmZXJlbmNlcy11cGRhdGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAg IHBnQWRtaW4uQnJvd3Nlci5QYW5lbC5wcm90b3R5cGUudXBkYXRlUGFuZWwsIHBhbmVsCisgICAg ICAgICAgICAgICAgICAgICAgKTsKIAogICAgICAgICAgICAgICAgICAgICAgIC8vIFBhbmVsIENs b3NlZCBldmVudAogICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLm9uKHdjRG9ja2VyLkVWRU5U LkNMT1NFRCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIu RXZlbnRzLm9mZigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjpw cmVmZXJlbmNlcy11cGRhdGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGdBZG1pbi5C cm93c2VyLlBhbmVsLnByb3RvdHlwZS51cGRhdGVQYW5lbCwgcGFuZWwKKyAgICAgICAgICAgICAg ICAgICAgICAgICk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9zZVVybCA9IHVy bF9mb3IoJ2RlYnVnZ2VyLmNsb3NlJywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAndHJh bnNfaWQnOiByZXMuZGF0YS5kZWJ1Z2dlclRyYW5zSWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMv c3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxl ZGl0b3IuanMKaW5kZXggZjk1Mzg5YzYuLmJlNzMxNzI4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcwpAQCAtMTU1LDYgKzE1NSw3 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICBoZWlnaHQ6ICcyMCUnLAog ICAgICAgICBpc0Nsb3NlYWJsZTogZmFsc2UsCiAgICAgICAgIGlzUHJpdmF0ZTogdHJ1ZSwKKyAg ICAgICAgaXNNb3ZlYWJsZTogdHJ1ZSwKICAgICAgIH0pOwogCiAgICAgICBzcWxfcGFuZWwubG9h ZChtYWluX2RvY2tlcik7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Jy b3dzZXIvcGFuZWxfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYnJvd3Nlci9w YW5lbF9zcGVjLmpzCmluZGV4IGU2OWRlMjliLi4zZjAxODRjOCAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9icm93c2VyL3BhbmVsX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9icm93c2VyL3BhbmVsX3NwZWMuanMKQEAgLTAsMCArMSw1MiBAQAor Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLworaW1wb3J0IHBnQWRtaW4gZnJvbSAncGdhZG1pbic7CitpbXBvcnQgUGFuZWwgZnJvbSAn YnJvd3Nlci9wYW5lbCc7CisKK2Rlc2NyaWJlKCdQYW5lbCcsIGZ1bmN0aW9uICgpIHsKKyAgbGV0 IHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlcjsKKyAgbGV0IFBhbmVsID0gcGdBZG1pbi5Ccm93 c2VyLlBhbmVsOworICBsZXQgdGVzdFBhbmVsOworICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsK KyAgICB0ZXN0UGFuZWwgPSBuZXcgUGFuZWwoeworICAgICAgbmFtZTogJ3Rlc3QnLAorICAgICAg dGl0bGU6ICdUZXN0JywKKyAgICAgIGlzTW92ZWFibGU6IHRydWUsCisgICAgfSk7CisgIH0pOwor CisgIGRlc2NyaWJlKCd3aGVuIHdlIGNyZWF0ZSBhIHBhbmVsJywgZnVuY3Rpb24gKCkgeworICAg IGRlc2NyaWJlKCdhbmQgaXQgaXMgbW92ZWFibGUgcGFuZWwnLCBmdW5jdGlvbiAoKSB7CisgICAg ICBpdCgnaXQgc2hvdWxkIGNhbGwgbW92ZWFibGUgbWV0aG9kIHdpdGggdHJ1ZSBhcyBhcmd1bWVu dCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KHRlc3RQYW5lbC5pc01vdmVhYmxlKS50 b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnYW5kIGl0IGlz IG5vbi1tb3ZlYWJsZSBwYW5lbCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGJlZm9yZUVhY2goZnVu Y3Rpb24gKCkgeworICAgICAgICB0ZXN0UGFuZWwuaXNNb3ZlYWJsZSA9IGZhbHNlOworICAgICAg fSk7CisgICAgICBpdCgnaXQgc2hvdWxkIGNhbGwgbW92ZWFibGUgbWV0aG9kIHdpdGggZmFsc2Ug YXMgYXJndW1lbnQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV4cGVjdCh0ZXN0UGFuZWwuaXNN b3ZlYWJsZSkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJl KCdhbmQgdXNlciBjcmVhdGVkIHBhbmVsIHdpdGhvdXQgZGVmaW5pbmcgaXNNb3ZlYWJsZSB0aGVu IGl0IHNob3VsZCBiZSBtb3ZlYWJsZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGJlZm9yZUVhY2go ZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0UGFuZWwgPSBuZXcgUGFuZWwoeworICAgICAgICAg IG5hbWU6ICd0ZXN0JywKKyAgICAgICAgICB0aXRsZTogJ1Rlc3QnLAorICAgICAgICB9KTsKKyAg ICAgIH0pOworICAgICAgaXQoJ2l0IHNob3VsZCBjYWxsIG1vdmVhYmxlIG1ldGhvZCB3aXRoIHRy dWUgYXMgYXJndW1lbnQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV4cGVjdCh0ZXN0UGFuZWwu aXNNb3ZlYWJsZSkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpk aWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMgYi93ZWIvd2VicGFjay50ZXN0 LmNvbmZpZy5qcwppbmRleCAzMDZhMDMwYi4uOTkzMjkwN2YgMTAwNjQ0Ci0tLSBhL3dlYi93ZWJw YWNrLnRlc3QuY29uZmlnLmpzCisrKyBiL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpzCkBAIC04 MCw2ICs4MCw3IEBAIG1vZHVsZS5leHBvcnRzID0gewogICAgICAgJ3BnYWRtaW4uYWxlcnRpZnlq cyc6IHNvdXJjZXNEaXIgKyAnL2pzL2FsZXJ0aWZ5LnBnYWRtaW4uZGVmYXVsdHMnLAogICAgICAg J3BnYWRtaW4uYmFja2dyaWQnOiBzb3VyY2VzRGlyICsgJy9qcy9iYWNrZ3JpZC5wZ2FkbWluJywK ICAgICAgICdwZ2FkbWluLmJhY2tmb3JtJzogc291cmNlc0RpciArICcvanMvYmFja2Zvcm0ucGdh ZG1pbicsCisgICAgICAnd2Nkb2NrZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21v ZHVsZXMvd2ViY2FiaW4tZG9ja2VyL0J1aWxkL3djRG9ja2VyJyksCiAgICAgfSwKICAgfSwKIH07 Cg== --000000000000fb43de056a995cc3--