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 1esi5l-00076N-J7 for pgadmin-hackers@arkaria.postgresql.org; Mon, 05 Mar 2018 04:51:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1esi5j-00006I-RL for pgadmin-hackers@arkaria.postgresql.org; Mon, 05 Mar 2018 04:51:15 +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 1esi5j-00005I-9H for pgadmin-hackers@lists.postgresql.org; Mon, 05 Mar 2018 04:51:15 +0000 Received: from mail-oi0-x241.google.com ([2607:f8b0:4003:c06::241]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1esi5a-0005uJ-TL for pgadmin-hackers@postgresql.org; Mon, 05 Mar 2018 04:51:13 +0000 Received: by mail-oi0-x241.google.com with SMTP id x12so11120093oie.13 for ; Sun, 04 Mar 2018 20:51:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=LT0IyuMW/o0Qn7wlWOOIovVKecfHHxm/zABwOHyDeiU=; b=ScG0RA6is5tnMV2bI2Kxmjm7h7zy+Ug5557oECE2j6nwkupZhxDu4f9AoRm/Gz2dF1 4gKH8BheKg7c3+eEKoalTYcbl0PoJGEVN0SB18Tys7GycUZcy1pT6c4f3Z4Zk0htqt+B pcaka8HDcXw/jw8ww+dUBxwv+Xs6iuiOJGW9SPO7ltjencNz5Rm9cEf8bPJOFnConPmX ABgSBI7HKoligrHIMzJ0YYZ4pN3Y3qFPcgoHUSozQCNvKCKTJIiaCLn8yhD4gq/NrPvq HwWxi9/vpnoLkypWvKwLq2jNE+8ToMU1FjghynLEV1+j9gmjDCfk/iX7gU9sMoEMUZ2n fzUA== 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=LT0IyuMW/o0Qn7wlWOOIovVKecfHHxm/zABwOHyDeiU=; b=tutsmJ4Gxu6lpjVqLsAcnA60GGnfmT0Msu3BMKBFY/H2ngLTerSgzewSnTgF3lUpJK Rl9qapaaNI5jkh4ITQWEFAKftcEJVvmc1vvm20A6+DnFue+wvmIhtmtdF41WF0lHhQRF 44uijDbkCfaIAnfvUREDf2Cyft+LvYzB8AxZsZsUtai//4GS+BL/kqqkvUDB6TCjkj0P eN8EOrQzJvRURi9B4cgyooVZk8+lVGNCcdr1xAFUMxxhdY9gBZPRzTifAzmRuyhnDg+k 0xaMfJwI0hpFice3RSdmhRPlj9Q3UaOB83xLBiyMv1YdSOuxyumXu7SZAGEGCwXV9hfx mfTA== X-Gm-Message-State: APf1xPA0XsQys1gQQ6QHYg6Eu6m5A/YbiVt/VNf4zL1HxHCHFm8tLcqK J7Q/GLKep5gynuL7XiwrJIfegjDlkzSUykkGl4/euA== X-Google-Smtp-Source: AG47ELvySQiWHvdHeSYxQ4ZvtsZ+Ny/jmovjS4pbsQdnW3jzHr5F+x/IBayuUmkSbr0WWoTUxj3mKzB8Qd94NXqorME= X-Received: by 10.202.205.206 with SMTP id d197mr8883040oig.253.1520225465893; Sun, 04 Mar 2018 20:51:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.203.154 with HTTP; Sun, 4 Mar 2018 20:51:05 -0800 (PST) In-Reply-To: References: From: Khushboo Vashi Date: Mon, 5 Mar 2018 10:21:05 +0530 Message-ID: Subject: Re: pgAdmin 4 commit: Ensure we pick up the messages from the current query To: Dave Page Cc: Joao De Almeida Pereira , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary="001a1134e278e07a260566a31288" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a1134e278e07a260566a31288 Content-Type: multipart/alternative; boundary="001a1134e278e07a210566a31286" --001a1134e278e07a210566a31286 Content-Type: text/plain; charset="UTF-8" On Fri, Mar 2, 2018 at 6:55 PM, Dave Page wrote: > Could you rebase this please? It no longer applies. > > Please find the attached updated patch. > Thanks. > > On Thu, Mar 1, 2018 at 5:56 AM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi Joao, >> >> Thanks for reviewing. >> >> On Wed, Feb 28, 2018 at 8:55 PM, Joao De Almeida Pereira < >> jdealmeidapereira@pivotal.io> wrote: >> >>> Hello Khushboo, >>> After reviewing the patch I have the gut feeling that we do not have >>> enough test coverage on this issue, specially due to the intricate while >>> loop and conditions around the polling. >>> I think that this deserve Unit tests around it, When I say Unit Test I >>> am not talking about executing queries against the database, but do some >>> stubbing of the database so that we can control the flow that we want. >>> >> You are right. It needs more unit testing. I have checked below scenarios: >> 1. Returns 2 notices with data output >> 2. Returns 1000 notices with data output >> 3. No notices with data output >> >> By running above, I have checked, each time returned notices are >> accurate, no old notices are getting appended, it does not affect with the >> amount of messages (few, none or more). Also, with the updated patch, I >> have made sure that all these queries run with the single transaction id >> (same connection). >> >> So, please let me know if you think I can add more things to this. >> >>> >>> >> It is a temptation to try to always do a Feature Test to test what we >>> want because it is "easier" to write and ultimately it is what users see, >>> but while 1 Feature Test runs we can run 200 Unit Tests that give us much >>> more confidence that the code is doing what we expect it to do. >>> >>> Right, so added regression tests instead of feature tests. >> >> This being said, I run the tests on the CI Pipeline and all tests pass. >>> Running pycodestyle fails due to some line sizes on the >>> psycopg2/__init__py. I believe that it is not what you changed, but since >>> you were changing the file it can be fixed it is just: >>> >>> pgadmin/utils/driver/psycopg2/__init__.py:1276: [E501] line too long >>> (81 > 79 characters) >>> pgadmin/utils/driver/psycopg2/__init__.py:1277: [E501] line too long >>> (91 > 79 characters) >>> pgadmin/utils/driver/psycopg2/__init__.py:1282: [E501] line too long >>> (81 > 79 characters) >>> pgadmin/utils/driver/psycopg2/__init__.py:1283: [E501] line too long >>> (91 > 79 characters) >>> 4 E501 line too long (81 > 79 characters) >>> >>> Fixed. Thanks for pointing out. >> >>> >>> Thanks >>> Joao >>> >>> >>> On Wed, Feb 28, 2018 at 6:49 AM Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> On Mon, Feb 26, 2018 at 10:02 PM, Dave Page wrote: >>>> >>>>> Argh, I ran some tests, but didn't spot any lost messages in the tests >>>>> I ran. I'll revert the patch. >>>>> >>>>> Khushboo; >>>>> >>>>> Please look at the following: >>>>> >>>>> - Fix the patch so it doesn't drop messages. >>>>> >>>> Fixed. >>>> By default, the notice attribute of the connection object of psycopg 2 >>>> only stores 50 notices. Once it reaches to 50 it starts from 1 again. >>>> To fix this I have changed the notice attribute from list to deque to >>>> append more messages. Currently I have kept the maximum limit at a time of >>>> the notice attribute is 100000 (in a single poll). >>>> >>>>> - Add regression tests to make sure it doesn't break in the future. >>>>> This may require creating one or more functions the spew out a whole lot of >>>>> notices, and then running a couple of queries and checking the output. >>>>> >>>> Added. With this regression test, the current code is failing which has >>>> been taken care in this patch. >>>> >>>>> - Check the messages panel on the history tab. I just noticed it seems >>>>> to only be showing an even smaller subset of the messages. >>>>> >>>> Tested and no issues found. >>>> >>>>> >>>>> >>>> Thanks. >>>>> >>>>> On Mon, Feb 26, 2018 at 4:23 PM, Murtuza Zabuawala < >>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>> >>>>>> Sent bit early, >>>>>> >>>>>> You can run 'VACUUM FULL VERBOSE' in query tool and verify the >>>>>> populated messages (pgAdmin3 vs. pgAdmin4). >>>>>> >>>>>> >>>>>> On Mon, Feb 26, 2018 at 9:48 PM, Murtuza Zabuawala < >>>>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Khushboo/Dave, >>>>>>> >>>>>>> With given commit, I'm again seeing the issue raised in >>>>>>> https://redmine.postgresql.org/issues/1523 :( >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Regards, >>>>>>> Murtuza Zabuawala >>>>>>> EnterpriseDB: http://www.enterprisedb.com >>>>>>> The Enterprise PostgreSQL Company >>>>>>> >>>>>>> >>>>>>> On Mon, Feb 26, 2018 at 7:49 PM, Dave Page >>>>>>> wrote: >>>>>>> >>>>>>>> Ensure we pick up the messages from the current query and not a >>>>>>>> previous one. Fixes #3094 >>>>>>>> >>>>>>>> Branch >>>>>>>> ------ >>>>>>>> master >>>>>>>> >>>>>>>> Details >>>>>>>> ------- >>>>>>>> https://git.postgresql.org/gitweb?p=pgadmin4.git;a=commitdif >>>>>>>> f;h=08b3ccc01a4d57e8ea3657f8882a53dcd1b99386 >>>>>>>> Author: Khushboo Vashi >>>>>>>> >>>>>>>> Modified Files >>>>>>>> -------------- >>>>>>>> web/pgadmin/utils/driver/abstract.py | 1 + >>>>>>>> web/pgadmin/utils/driver/psycopg2/__init__.py | 64 >>>>>>>> +++++++++------------------ >>>>>>>> 2 files changed, 21 insertions(+), 44 deletions(-) >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> 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 > --001a1134e278e07a210566a31286 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Fri, Mar 2, 2018 at 6:55 PM, Dave Page <dpage@pgadmin.org> wrote:
Could you r= ebase this please? It no longer applies.

<= div>Please find the attached updated patch.=C2=A0
Thanks.

On Thu, Mar 1, 2018 at 5:56 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Joao,

Thanks for = reviewing.

On Wed, Feb 28, 2018 at 8:55 PM, Joao De Almeida Pereira <jd= ealmeidapereira@pivotal.io> wrote:
Hello Khushboo,
After reviewing the patch I ha= ve the gut feeling that we do not have enough test coverage on this issue, = specially due to the intricate while loop and conditions around the polling= .
I think that this deserve Unit tests around it, When I say Unit= Test I am not talking about executing queries against the database, but do= some stubbing of the database so that we can control the flow that we want= .
You are right. It needs mo= re unit testing. I have checked below scenarios:
1. Returns 2 not= ices with data output
2. Returns 1000 notices with data output
3. No notices with data output=C2=A0

By ru= nning above, I have checked, each time returned notices are accurate, no ol= d notices are getting appended, it does not affect with the amount of messa= ges (few, none or more).=C2=A0 Also, with the updated patch, I have made su= re that all these queries run with the single transaction id (same connecti= on).

So, please let me know if you think I can add= more things to this.
=C2=A0=C2=A0
It is a temptation to try to always do= a Feature Test to test what we want because it is "easier" to wr= ite and ultimately it is what users see, but while 1 Feature Test runs we c= an run 200 Unit Tests that give us much more confidence that the code is do= ing what we expect it to do.

=
Right, so added regression tests instead of feature tests.=C2=A0
=

<= /div>
This being said, I run the tests on the CI Pipeline and all tests= pass. Running pycodestyle fails due to some line sizes on the psycopg2/__i= nit__py. I believe that it is not what you changed, but since you were chan= ging the file it can be fixed it is just:

pga= dmin/utils/driver/psycopg2/__init__.py:1276: [E501] line too long (81 = > 79 characters)
pgadmin/utils/driver/psycopg2/__init__.p= y:1277: [E501] line too long (91 > 79 characters)
pgadmin/util= s/driver/psycopg2/__init__.py:1282: [E501] line too long (81 > 79 c= haracters)
pgadmin/utils/driver/psycopg2/__init__.py:1283: [= E501] line too long (91 > 79 characters)
4=C2=A0 =C2=A0 =C2=A0= =C2=A0E501 line too long (81 > 79 characters)

Fixed. Thanks for pointing out.=C2=A0
=
<= div dir=3D"ltr">

Thanks
Joao


On Wed, = Feb 28, 2018 at 6:49 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
On Mon, Feb 26, 2018 at 1= 0:02 PM, Dave Page <dpage@pgadmin.org> wrote:
Argh, I ran some te= sts, but didn't spot any lost messages in the tests I ran. I'll rev= ert the patch.

Khushboo;

Please= look at the following:

- Fix the patch so it does= n't drop messages.
Fixed.<= /div>
By default, the notice attribute of the connection object of psyc= opg 2 only stores 50 notices. Once it reaches to 50 it starts from 1 again.=
To fix this I have changed the notice attribute from list to deq= ue to append more messages. Currently I have kept the maximum limit at a ti= me of the notice attribute is=C2=A0100000 (in a single poll).=C2=A0
- Add regression tests to make sure it doesn't break in the fu= ture. This may require creating one or more functions the spew out a whole = lot of notices, and then running a couple of queries and checking the outpu= t.
Added. With this regression t= est, the current code is failing which has been taken care in this patch.
- Check the messages panel on the history tab. I just notice= d it seems to only be showing an even smaller subset of the messages.
=
Tested and no issues found= .
=C2=A0
Thanks.
<= div>

<= div class=3D"gmail_quote">On Mon, Feb 26, 2018 at 4:23 PM, Murtuza Zabuawal= a <murtuza.zabuawala@enterprisedb.com>= wrote:
Sent b= it early,=C2=A0

You can run 'VACUUM FULL VERBOSE' in query tool and verify the populated= messages (pgAdmin3 vs. pgAdmin4).=C2=A0


On Mon, Feb 26, 2018 at 9:48 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi Khushboo/Dave,
=

With giv= en commit, I'm again seeing the issue raised in https://redmine.postgresq= l.org/issues/1523 :(



=
--
Regards,
Murtuza Zabuawala
Enterp= riseDB:=C2=A0http://www.enterprisedb.com
The Enterprise Post= greSQL Company


On Mon, Feb 26, 2018 at 7:49 PM, Dave Page <= span dir=3D"ltr"><dpage@pgadmin.org> wrote:
Ensure we pick up the messages from the current query an= d not a previous one. Fixes #3094

Branch
------
master

Details
-------
https://git.postgresql.org/gitweb?p=3Dpgadmin4.git;a=3Dcom= mitdiff;h=3D08b3ccc01a4d57e8ea3657f8882a53dcd1b99386
Author: Khushboo Vashi <khushboo.vashi@enterprisedb.com>

Modified Files
--------------
web/pgadmin/utils/driver/abstract.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= |=C2=A0 1 +
web/pgadmin/utils/driver/psycopg2/__init__.py | 64 +++++++++----------= --------
2 files changed, 21 insertions(+), 44 deletions(-)






--




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

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company

--001a1134e278e07a210566a31286-- --001a1134e278e07a260566a31288 Content-Type: text/x-patch; charset="US-ASCII"; name="RM_3094_ver3.patch" Content-Disposition: attachment; filename="RM_3094_ver3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jedqzeo20 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMva2V5Ym9hcmRfc2hvcnRjdXRf dGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMva2V5Ym9hcmRfc2hvcnRjdXRfdGVz dC5weQppbmRleCA0NDNlZmY2Li5iYmFlMTk0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0 dXJlX3Rlc3RzL2tleWJvYXJkX3Nob3J0Y3V0X3Rlc3QucHkKKysrIGIvd2ViL3BnYWRtaW4vZmVh dHVyZV90ZXN0cy9rZXlib2FyZF9zaG9ydGN1dF90ZXN0LnB5CkBAIC02Miw3ICs2Miw5IEBAIGNs YXNzIEtleWJvYXJkU2hvcnRjdXRGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAg ICAgICAgKS5rZXlfZG93bigKICAgICAgICAgICAgICAgICBrZXlfY29tYm9bMl0KICAgICAgICAg ICAgICkua2V5X3VwKAotICAgICAgICAgICAgICAgIEtleXMuQUxUCisgICAgICAgICAgICAgICAg a2V5X2NvbWJvWzBdCisgICAgICAgICAgICApLmtleV91cCgKKyAgICAgICAgICAgICAgICBrZXlf Y29tYm9bMV0KICAgICAgICAgICAgICkucGVyZm9ybSgpCiAKICAgICAgICAgICAgIHByaW50KCJF eGVjdXRpbmcgc2hvcnRjdXQ6ICIgKyBzZWxmLm5ld19zaG9ydGN1dHNbc11bJ2xvY2F0b3InXSAr CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9wb2xs X3F1ZXJ5X3Rvb2wucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9w b2xsX3F1ZXJ5X3Rvb2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ3 MTI5YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0 cy90ZXN0X3BvbGxfcXVlcnlfdG9vbC5weQpAQCAtMCwwICsxLDExMiBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworaW1wb3J0IGpzb24KKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRh dGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2Vu ZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVn cmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworCisK K2NsYXNzIFRlc3RQb2xsUXVlcnlUb29sKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIgVGhp cyBjbGFzcyB3aWxsIHRlc3QgdGhlIHF1ZXJ5IHRvb2wgcG9sbGluZy4gIiIiCisgICAgc2NlbmFy aW9zID0gWworICAgICAgICAoJ1doZW4gcXVlcnkgdG9vbCBwb2xsaW5nIHJldHVybnMgbWVzc2Fn ZXMgd2l0aCByZXN1bHQgZGF0YS1zZXQnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBz cWw9WworICAgICAgICAgICAgICAgICAiIiIKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHRlc3RfZm9y X25vdGljZXM7CisKK0RPICQkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAnSGVsbG8sIHdvcmxk ISc7CitFTkQgJCQ7CisKK1NFTEVDVCAnQ0hFQ0tJTkcgUE9MTElORyc7CisiIiIsCisgICAgICAg ICAgICAgICAgICIiIgorRE8gJCQKK0JFR0lOCisgICAgRk9SIGkgaW4gMS4uMTAwMCBMT09QCisg ICAgICAgIFJBSVNFIE5PVElDRSAnQ291bnQgaXMgJScsIGk7CisgICAgRU5EIExPT1A7CitFTkQg JCQ7CisKK1NFTEVDVCAnQ0hFQ0tJTkcgUE9MTElORyBGT1IgTE9ORyBNRVNTQUdFUyc7CisiIiIs CisgICAgICAgICAgICAgICAgICJTRUxFQ1QgJ0NIRUNLSU5HIFBPTExJTkcgV0lUSE9VVCBNRVNT QUdFUyc7IgorICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9tZXNz YWdlPVsnTk9USUNFOiAgdGFibGUgInRlc3RfZm9yX25vdGljZXMiICcgKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIiImRvZXMgbm90IGV4aXN0LCBza2lwcGluZworTk9USUNFOiAg SGVsbG8sIHdvcmxkIQorIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIu am9pbihbIk5PVElDRTogIENvdW50IGlzIHswfSIuZm9ybWF0KGkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAxMDAxKV0pICsgIlxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXSwKKyAgICAgICAgICAgICBl eHBlY3RlZF9yZXN1bHQ9WydDSEVDS0lORyBQT0xMSU5HJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdDSEVDS0lORyBQT0xMSU5HIEZPUiBMT05HIE1FU1NBR0VTJywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdDSEVDS0lORyBQT0xMSU5HIFdJVEhPVVQgTUVTU0FHRVMn XSwKKyAgICAgICAgICAgICBwcmludF9tZXNzYWdlcz1bJzIgTk9USUNFUyBXSVRIIERBVEFTRVQn LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTAwMCBOT1RJQ0VTIFdJVEggREFUQVNF VCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOTyBOT1RJQ0UgV0lUSCBEQVRBU0VU JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICApKQorICAgIF0KKwor ICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNo ZWNrIG1lc3NhZ2VzIHJldHVybiBieSBxdWVyeSB0b29sIHBvbGxpbmcuICIiIgorICAgICAgICBk YXRhYmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV0KKyAgICAgICAg c2VsZi5zZXJ2ZXJfaWQgPSBkYXRhYmFzZV9pbmZvWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIHNl bGYuZGJfaWQgPSBkYXRhYmFzZV9pbmZvWyJkYl9pZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFi YXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9p ZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsiaW5mbyJdID09ICJEYXRhYmFzZSBjb25uZWN0ZWQu IjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhl IGRhdGFiYXNlLiIpCisKKyAgICAgICAgIyBJbml0aWFsaXplIHF1ZXJ5IHRvb2wKKyAgICAgICAg dXJsID0gJy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvezB9L3sxfS97Mn0nLmZvcm1h dCgKKyAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYu ZGJfaWQpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwpCisgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICAgICAg cmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04Jykp CisgICAgICAgIHNlbGYudHJhbnNfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2dyaWRUcmFu c0lkJ10KKworICAgICAgICBjbnQgPSAwCisgICAgICAgIGZvciBzIGluIHNlbGYuc3FsOgorICAg ICAgICAgICAgcHJpbnQoIkV4ZWN1dGluZyBhbmQgcG9sbGluZyB3aXRoOiAiICsgc2VsZi5wcmlu dF9tZXNzYWdlc1tjbnRdKQorICAgICAgICAgICAgIyBTdGFydCBxdWVyeSB0b29sIHRyYW5zYWN0 aW9uCisgICAgICAgICAgICB1cmwgPSAnL3NxbGVkaXRvci9xdWVyeV90b29sL3N0YXJ0L3swfScu Zm9ybWF0KHNlbGYudHJhbnNfaWQpCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVy LnBvc3QodXJsLCBkYXRhPWpzb24uZHVtcHMoeyJzcWwiOiBzfSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisg ICAgICAgICAgICAjIFF1ZXJ5IHRvb2wgcG9sbGluZworICAgICAgICAgICAgdXJsID0gJy9zcWxl ZGl0b3IvcG9sbC97MH0nLmZvcm1hdChzZWxmLnRyYW5zX2lkKQorICAgICAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5nZXQodXJsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBq c29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICAj IENoZWNrIHRoZSByZXR1cm5lZCBtZXNzYWdlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMoc2VsZi5leHBlY3RlZF9tZXNzYWdlW2NudF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2FkZGl0aW9uYWxfbWVzc2FnZXMnXSkKKyAgICAg ICAgICAgICMgQ2hlY2sgdGhlIG91dHB1dAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo c2VsZi5leHBlY3RlZF9yZXN1bHRbY250XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsncmVzdWx0J11bMF1bMF0pCisKKyAgICAgICAgICAgIGNu dCArPSAxCisKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRh YmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxm LmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL2Fic3RyYWN0LnB5 IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL2Fic3RyYWN0LnB5CmluZGV4IDMyZTFjOTcuLjI3 MWJmZWMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9hYnN0cmFjdC5weQor KysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvYWJzdHJhY3QucHkKQEAgLTE2OCw2ICsxNjgs OCBAQCBjbGFzcyBCYXNlQ29ubmVjdGlvbihvYmplY3QpOgogICAgIEFTWU5DX1dSSVRFX1RJTUVP VVQgPSAzCiAgICAgQVNZTkNfTk9UX0NPTk5FQ1RFRCA9IDQKICAgICBBU1lOQ19FWEVDVVRJT05f QUJPUlRFRCA9IDUKKyAgICBBU1lOQ19USU1FT1VUID0gMC4yCisgICAgQVNZTkNfTk9USUNFX01B WExFTkdUSCA9IDEwMDAwMAogCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGNvbm5lY3Qo c2VsZiwgKiprd2FyZ3MpOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3Bz eWNvcGcyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL19f aW5pdF9fLnB5CmluZGV4IDgxNDQyZTQuLjk0MWE2OTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3V0aWxzL2RyaXZlci9wc3ljb3BnMi9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi91dGls cy9kcml2ZXIvcHN5Y29wZzIvX19pbml0X18ucHkKQEAgLTM3LDYgKzM3LDcgQEAgZnJvbSAuY3Vy c29yIGltcG9ydCBEaWN0Q3Vyc29yCiBmcm9tIC50eXBlY2FzdCBpbXBvcnQgcmVnaXN0ZXJfZ2xv YmFsX3R5cGVjYXN0ZXJzLCBcCiAgICAgcmVnaXN0ZXJfc3RyaW5nX3R5cGVjYXN0ZXJzLCByZWdp c3Rlcl9iaW5hcnlfdHlwZWNhc3RlcnMsIFwKICAgICByZWdpc3Rlcl9hcnJheV90b19zdHJpbmdf dHlwZWNhc3RlcnMsIEFMTF9KU09OX1RZUEVTCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1 ZQogCiAKIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywpOgpAQCAtMTEwLDcgKzExMSw3IEBAIGNs YXNzIENvbm5lY3Rpb24oQmFzZUNvbm5lY3Rpb24pOgogICAgICAgLSBUaGlzIG1ldGhvZCBpcyB1 c2VkIHRvIHdhaXQgZm9yIGFzeW5jaHJvbm91cyBjb25uZWN0aW9uLiBUaGlzIGlzIGEKICAgICAg ICAgYmxvY2tpbmcgY2FsbC4KIAotICAgICogX3dhaXRfdGltZW91dChjb25uLCB0aW1lKQorICAg ICogX3dhaXRfdGltZW91dChjb25uKQogICAgICAgLSBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHdh aXQgZm9yIGFzeW5jaHJvbm91cyBjb25uZWN0aW9uIHdpdGggdGltZW91dC4KICAgICAgICAgVGhp cyBpcyBhIG5vbiBibG9ja2luZyBjYWxsLgogCkBAIC0zMTAsNiArMzExLDkgQEAgY2xhc3MgQ29u bmVjdGlvbihCYXNlQ29ubmVjdGlvbik6CiAgICAgICAgICAgICApCiAgICAgICAgICAgICByZXR1 cm4gRmFsc2UsIG1zZwogCisgICAgICAgICMgT3ZlcndyaXRlIGNvbm5lY3Rpb24gbm90aWNlIGF0 dHIgdG8gc3VwcG9ydAorICAgICAgICAjIG1vcmUgdGhhbiA1MCBub3RpY2VzIGF0IGEgdGltZQor ICAgICAgICBwZ19jb25uLm5vdGljZXMgPSBkZXF1ZShbXSwgc2VsZi5BU1lOQ19OT1RJQ0VfTUFY TEVOR1RIKQogICAgICAgICBzZWxmLmNvbm4gPSBwZ19jb25uCiAgICAgICAgIHNlbGYud2FzQ29u bmVjdGVkID0gVHJ1ZQogICAgICAgICB0cnk6CkBAIC0xMjA4LDYgKzEyMTIsNyBAQCBGYWlsZWQg dG8gcmVzZXQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBkdWUgdG8gZm9sbG93aW5nIGVy cm9yOgogICAgICAgICAgICAgKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtc2cKIAorICAg ICAgICBwZ19jb25uLm5vdGljZXMgPSBkZXF1ZShbXSwgc2VsZi5BU1lOQ19OT1RJQ0VfTUFYTEVO R1RIKQogICAgICAgICBzZWxmLmNvbm4gPSBwZ19jb25uCiAgICAgICAgIHNlbGYuX19iYWNrZW5k X3BpZCA9IHBnX2Nvbm4uZ2V0X2JhY2tlbmRfcGlkKCkKIApAQCAtMTI2MSw1MSArMTI2NiwzMSBA QCBGYWlsZWQgdG8gcmVzZXQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBkdWUgdG8gZm9s bG93aW5nIGVycm9yOgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBjb25uOiBjb25uZWN0 aW9uIG9iamVjdAotICAgICAgICAgICAgdGltZTogd2FpdCB0aW1lCiAgICAgICAgICIiIgotCi0g ICAgICAgIHN0YXRlID0gY29ubi5wb2xsKCkKLSAgICAgICAgaWYgc3RhdGUgPT0gcHN5Y29wZzIu ZXh0ZW5zaW9ucy5QT0xMX09LOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuQVNZTkNfT0sKLSAg ICAgICAgZWxpZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfV1JJVEU6Ci0gICAg ICAgICAgICAjIFdhaXQgZm9yIHRoZSBnaXZlbiB0aW1lIGFuZCB0aGVuIGNoZWNrIHRoZSByZXR1 cm4gc3RhdHVzCi0gICAgICAgICAgICAjIElmIHRocmVlIGVtcHR5IGxpc3RzIGFyZSByZXR1cm5l ZCB0aGVuIHRoZSB0aW1lLW91dCBpcyByZWFjaGVkLgotICAgICAgICAgICAgdGltZW91dF9zdGF0 dXMgPSBzZWxlY3Quc2VsZWN0KFtdLCBbY29ubi5maWxlbm8oKV0sIFtdLCAwKQotICAgICAgICAg ICAgaWYgdGltZW91dF9zdGF0dXMgPT0gKFtdLCBbXSwgW10pOgotICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLkFTWU5DX1dSSVRFX1RJTUVPVVQKLQotICAgICAgICAgICAgIyBwb2xsIGFnYWlu IHRvIGNoZWNrIHRoZSBzdGF0ZSBpZiBpdCBpcyBzdGlsbCBQT0xMX1dSSVRFCi0gICAgICAgICAg ICAjIHRoZW4gcmV0dXJuIEFTWU5DX1dSSVRFX1RJTUVPVVQgZWxzZSByZXR1cm4gQVNZTkNfT0su CisgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICBzdGF0ZSA9IGNvbm4ucG9sbCgpCi0gICAg ICAgICAgICBpZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfV1JJVEU6Ci0gICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuQVNZTkNfV1JJVEVfVElNRU9VVAotICAgICAgICAgICAg cmV0dXJuIHNlbGYuQVNZTkNfT0sKLSAgICAgICAgZWxpZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRl bnNpb25zLlBPTExfUkVBRDoKLSAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGdpdmVuIHRpbWUg YW5kIHRoZW4gY2hlY2sgdGhlIHJldHVybiBzdGF0dXMKLSAgICAgICAgICAgICMgSWYgdGhyZWUg ZW1wdHkgbGlzdHMgYXJlIHJldHVybmVkIHRoZW4gdGhlIHRpbWUtb3V0IGlzIHJlYWNoZWQuCi0g ICAgICAgICAgICB0aW1lb3V0X3N0YXR1cyA9IHNlbGVjdC5zZWxlY3QoW2Nvbm4uZmlsZW5vKCld LCBbXSwgW10sIDApCi0gICAgICAgICAgICBpZiB0aW1lb3V0X3N0YXR1cyA9PSAoW10sIFtdLCBb XSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuQVNZTkNfUkVBRF9USU1FT1VUCi0KLSAg ICAgICAgICAgICMgc2VsZWN0LnNlbGVjdCB0aW1lb3V0IG9wdGlvbiB3b3JrcyBvbmx5IGlmIHdl IHByb3ZpZGUKLSAgICAgICAgICAgICMgIGVtcHR5IFtdIFtdIFtdIGZpbGUgZGVzY3JpcHRvciBp biBzZWxlY3Quc2VsZWN0KCkgZnVuY3Rpb24KLSAgICAgICAgICAgICMgYW5kIHRoYXQgYWxzbyB3 b3JrcyBvbmx5IG9uIFVOSVggYmFzZWQgc3lzdGVtLCBpdCBkbyBub3Qgc3VwcG9ydAotICAgICAg ICAgICAgIyBXaW5kb3dzIEhlbmNlIHdlIGhhdmUgd3JvdGUgb3VyIG93biBwb29saW5nIG1lY2hh bmlzbSB0byByZWFkCi0gICAgICAgICAgICAjIGRhdGEgZmFzdCBlYWNoIGNhbGwgY29ubi5wb2xs KCkgcmVhZHMgY2h1bmtzIG9mIGRhdGEgZnJvbQotICAgICAgICAgICAgIyBjb25uZWN0aW9uIG9i amVjdCBtb3JlIHdlIHBvbGwgbW9yZSB3ZSByZWFkIGRhdGEgZnJvbSBjb25uZWN0aW9uCi0gICAg ICAgICAgICBjbnQgPSAwCi0gICAgICAgICAgICB3aGlsZSBjbnQgPCAxMDAwOgotICAgICAgICAg ICAgICAgICMgcG9sbCBhZ2FpbiB0byBjaGVjayB0aGUgc3RhdGUgaWYgaXQgaXMgc3RpbGwgUE9M TF9SRUFECi0gICAgICAgICAgICAgICAgIyB0aGVuIHJldHVybiBBU1lOQ19SRUFEX1RJTUVPVVQg ZWxzZSByZXR1cm4gQVNZTkNfT0suCi0gICAgICAgICAgICAgICAgc3RhdGUgPSBjb25uLnBvbGwo KQotICAgICAgICAgICAgICAgIGlmIHN0YXRlID09IHBzeWNvcGcyLmV4dGVuc2lvbnMuUE9MTF9P SzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuQVNZTkNfT0sKLSAgICAgICAgICAg ICAgICBjbnQgKz0gMQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuQVNZTkNfUkVBRF9USU1FT1VU Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBwc3ljb3BnMi5PcGVyYXRpb25hbEVy cm9yKAotICAgICAgICAgICAgICAgICJwb2xsKCkgcmV0dXJuZWQgJXMgZnJvbSBfd2FpdF90aW1l b3V0IGZ1bmN0aW9uIiAlIHN0YXRlCi0gICAgICAgICAgICApCisgICAgICAgICAgICBpZiBzdGF0 ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfT0s6CisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuQVNZTkNfT0sKKyAgICAgICAgICAgIGVsaWYgc3RhdGUgPT0gcHN5Y29wZzIuZXh0ZW5z aW9ucy5QT0xMX1dSSVRFOgorICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGdpdmVuIHRp bWUgYW5kIHRoZW4gY2hlY2sgdGhlIHJldHVybiBzdGF0dXMKKyAgICAgICAgICAgICAgICAjIElm IHRocmVlIGVtcHR5IGxpc3RzIGFyZSByZXR1cm5lZCB0aGVuIHRoZSB0aW1lLW91dCBpcworICAg ICAgICAgICAgICAgICMgcmVhY2hlZC4KKyAgICAgICAgICAgICAgICB0aW1lb3V0X3N0YXR1cyA9 IHNlbGVjdC5zZWxlY3QoW10sIFtjb25uLmZpbGVubygpXSwgW10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQVNZTkNfVElNRU9VVCkKKyAgICAg ICAgICAgICAgICBpZiB0aW1lb3V0X3N0YXR1cyA9PSAoW10sIFtdLCBbXSk6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLkFTWU5DX1dSSVRFX1RJTUVPVVQKKyAgICAgICAgICAgIGVs aWYgc3RhdGUgPT0gcHN5Y29wZzIuZXh0ZW5zaW9ucy5QT0xMX1JFQUQ6CisgICAgICAgICAgICAg ICAgIyBXYWl0IGZvciB0aGUgZ2l2ZW4gdGltZSBhbmQgdGhlbiBjaGVjayB0aGUgcmV0dXJuIHN0 YXR1cworICAgICAgICAgICAgICAgICMgSWYgdGhyZWUgZW1wdHkgbGlzdHMgYXJlIHJldHVybmVk IHRoZW4gdGhlIHRpbWUtb3V0IGlzCisgICAgICAgICAgICAgICAgIyByZWFjaGVkLgorICAgICAg ICAgICAgICAgIHRpbWVvdXRfc3RhdHVzID0gc2VsZWN0LnNlbGVjdChbY29ubi5maWxlbm8oKV0s IFtdLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5BU1lOQ19USU1FT1VUKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXRfc3RhdHVzID09 IChbXSwgW10sIFtdKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuQVNZTkNfUkVB RF9USU1FT1VUCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIHBzeWNv cGcyLk9wZXJhdGlvbmFsRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJwb2xsKCkgcmV0dXJu ZWQgJXMgZnJvbSBfd2FpdF90aW1lb3V0IGZ1bmN0aW9uIiAlIHN0YXRlCisgICAgICAgICAgICAg ICAgKQogCiAgICAgZGVmIHBvbGwoc2VsZiwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2Us IG5vX3Jlc3VsdD1GYWxzZSk6CiAgICAgICAgICIiIgpAQCAtMTM0Nyw4ICsxMzMyLDggQEAgRmFp bGVkIHRvIHJlc2V0IHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgZHVlIHRvIGZvbGxvd2lu ZyBlcnJvcjoKICAgICAgICAgICAgIGlzX2Vycm9yID0gVHJ1ZQogCiAgICAgICAgIGlmIHNlbGYu Y29ubi5ub3RpY2VzIGFuZCBzZWxmLl9fbm90aWNlcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAg IHdoaWxlIHNlbGYuY29ubi5ub3RpY2VzOgotICAgICAgICAgICAgICAgIHNlbGYuX19ub3RpY2Vz LmFwcGVuZChzZWxmLmNvbm4ubm90aWNlcy5wb3AoMClbOl0pCisgICAgICAgICAgICBzZWxmLl9f bm90aWNlcy5leHRlbmQoc2VsZi5jb25uLm5vdGljZXMpCisgICAgICAgICAgICBzZWxmLmNvbm4u bm90aWNlcy5jbGVhcigpCiAKICAgICAgICAgIyBXZSBhbHNvIG5lZWQgdG8gZmV0Y2ggbm90aWNl cyBiZWZvcmUgd2UgcmV0dXJuIGZyb20gZnVuY3Rpb24gaW4gY2FzZQogICAgICAgICAjIG9mIGFu eSBFeGNlcHRpb24sIFRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24gd2Ugd2lsbCByZXR1cm4gYWZ0 ZXIK --001a1134e278e07a260566a31288--