Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jWzXZ-0008Uv-La for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 May 2020 09:43:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jWzXY-0004pi-GH for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 May 2020 09:43:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jWzXX-0004mQ-GP for pgadmin-hackers@lists.postgresql.org; Fri, 08 May 2020 09:43:32 +0000 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jWzXT-0001GG-Gc for pgadmin-hackers@postgresql.org; Fri, 08 May 2020 09:43:30 +0000 Received: by mail-ot1-x32a.google.com with SMTP id m33so989653otc.5 for ; Fri, 08 May 2020 02:43:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=VSCEQBRsAloPM+3jBYJhAPCqb2q0lPBOO4kjIff22/k=; b=Yz26ge/GOdjLCcK/dmCW7ZUXC9qLOgnloxP5OBbwK/FaxqZdl0Q6mzWMAGBDBqmK+D s8Yo93ktTdmkfQdjilId8tBC+1JpeqyP1NmEn0GUqD0FjOczVnHBNQb4O0Dp/nxtzWd6 lfHOPaOYoPa42fd+H04SMXpfNWiGrc60S7f+yQ8gy9haZK2dpKJUJyNWCi2DIHVMKw/X ZnSksMZoTp9qdK2w0jjKE3KCNgw91zZw4rDMTpThnmSPAyqAStXyr5WtbCAijsJggPXn 5qJKw203rMc6eP9AwOFKWCZh6EGxVNhRsmrGB5m+T4224L6vsKRX9Gj0VMP4hk6IxhyP VkSg== 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=VSCEQBRsAloPM+3jBYJhAPCqb2q0lPBOO4kjIff22/k=; b=hWDgHlvSSfTojxa9NVSPpH8Jm7UwqTFRL1yYXa/h35UGAS9ZKo6qmiCnmS8hCtzON8 ek50qJfCVFEVss3PAg/MTnLZHihL8fXwFl5kGnWG64Euy9WVojqkCF9iQGEyKHLDm0uS LWpDwKOyZgytyLRQQoznoW+FwHaxlo9k0KkofygAHvzLISQ4jQdF+kEuXiclXVLu6IZK 5pMEo0Qa/gQW+uaF3KiCY6Wn9sLRQ57f4spFvUPlZ3U9bZl6Q1U+oBBDuhM7+OKMTPLG bNP7bpZyXuQU82JFQD58a0XEDrwAGnRJ11VHKwvG1fPsHj0L+QW+wMM6spquXe7+Ys7C UyKg== X-Gm-Message-State: AGi0Pub+5L1/8hllpTPP0t9ymR/uTv+MGmPIZKOCi9EtGeM/F3b24ZiW 5X5UMb4P83vn2iCMGdZ1E7mTKXGeO8r6NSmPqvpSKV7NmM+No+f4BLsBOlZOgm/IcpVjLRkCs1J LMnJLlcAibWZ57mhLJPSrdaolPav9jq8ty2QGzcVLknml/RylA+38dDycEtaGaa5WKQ9D9JAl/r TEpBs42oBWiHcmuzWSR1J1gYB55Q+NxcxUuWIcpy2wqBWk2cMoWMSaKfemdg== X-Google-Smtp-Source: APiQypKZenWPpGAZOWLZgUwQLQVYT+ZrhWGmeCm2H06ez7Zh7S4TGR/A41OpkEWbnzWv76kqO1ZGt7IPqHRpYZBpe/E= X-Received: by 2002:a9d:7343:: with SMTP id l3mr1339297otk.276.1588931006497; Fri, 08 May 2020 02:43:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yogesh Mahajan Date: Fri, 8 May 2020 15:12:50 +0530 Message-ID: Subject: Re: [pgAdmin 4 - Housekeeping #5255] Implement Selenium Grid using multi-threading & solenoid using current test framework To: Akshay Joshi , pgadmin-hackers Cc: Shubham Agarwal , navnath gadakh Content-Type: multipart/mixed; boundary="00000000000037509705a51fd488" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000037509705a51fd488 Content-Type: multipart/alternative; boundary="00000000000037509505a51fd486" --00000000000037509505a51fd486 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Akshay, Please find the attached rebase patch. Looks like there were some commits after my today's git pull. Thanks, Yogesh Mahajan QA - Team EnterpriseDB Corporation Phone: +91-9741705709 On Fri, May 8, 2020 at 2:35 PM Akshay Joshi wrote: > Hi Yogesh > > Unable to apply the patch on the latest code. Please rebase and send it > again. > > On Fri, May 8, 2020 at 2:05 PM Yogesh Mahajan < > yogesh.mahajan@enterprisedb.com> wrote: > >> Attaching patch >> >> Thanks, >> Yogesh Mahajan >> QA - Team >> EnterpriseDB Corporation >> >> Phone: +91-9741705709 >> >> >> On Fri, May 8, 2020 at 1:57 PM Akshay Joshi < >> akshay.joshi@enterprisedb.com> wrote: >> >>> Hi Yogesh >>> >>> You forgot to attach patch :) >>> >>> On Fri, May 8, 2020 at 1:35 PM Yogesh Mahajan < >>> yogesh.mahajan@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find the updates patch with above review comments. >>>> Patch adds below functionality to existing framework - >>>> 1.Ability to run features in parallel using solenoid(selenium + docker= ). >>>> a.Selenoid setup steps are included in /regression/README >>>> b.'python runtests.py --pkg feature_tests --parallel' will >>>> trigger parallel feature tests. >>>> 2.Removes dependency for pyperclip python module. >>>> 3.New script in ../tools/update_selenoid_browsers.py updates browser >>>> images at local selneoid server setup. >>>> >>>> >>>> Thanks, >>>> Yogesh Mahajan >>>> QA - Team >>>> EnterpriseDB Corporation >>>> >>>> Phone: +91-9741705709 >>>> >>>> >>>> On Tue, May 5, 2020 at 3:58 PM Akshay Joshi < >>>> akshay.joshi@enterprisedb.com> wrote: >>>> >>>>> Hi Yogesh >>>>> >>>>> Following are the review comments: >>>>> >>>>> - *pyjq* package is not required as we used it only in one place. >>>>> A result is a normal dictionary that can be easily looped through. >>>>> - Remove "*if (SUPPORT_SSH_TUNNEL is True and ...*" logic from >>>>> config.py, we have already removed that. >>>>> - Remove yarn.lock file. >>>>> - Remove *pyperclip *from the regression/requirements.txt as we >>>>> are not using it. >>>>> - Please mentioned the value of *pgAdmin_default_server *should >>>>> not be '*127.0.0.1*' in the README file even though everything >>>>> runs on the same machine. >>>>> - Please mentioned that if we set the value of the browser version >>>>> is *null* then selenoid will take the latest available browser >>>>> version. >>>>> - Got the below error if selenoid_url is not provided: >>>>> - list index out of range >>>>> Unable to find Selenoid Status >>>>> >>>>> *test_config.json.in *: >>>>> >>>>> - "selenoid_info" should be renamed to "selenoid_config". Proper >>>>> alignment is required. >>>>> - "cross_Browsers" should be renamed to "cross_browsers" or >>>>> "run_on_browsers" or "run_tests_on_browsers". Provide entries for = supported >>>>> browsers with version set to null so that it will run on the lates= t browser >>>>> version. >>>>> - "selenoid_url": "Selenoid Url" should be changed >>>>> to "selenoid_url": "http://>>>> machine>:4444/wd/hub". >>>>> >>>>> If you change the names in test_config.json.in then please update the >>>>> same in README as well. >>>>> >>>>> >>>>> On Mon, May 4, 2020 at 4:27 PM Yogesh Mahajan < >>>>> yogesh.mahajan@enterprisedb.com> wrote: >>>>> >>>>>> Hi Akshay, >>>>>> >>>>>> Please find the updated patch. >>>>>> >>>>>> Thanks, >>>>>> Yogesh Mahajan >>>>>> QA - Team >>>>>> EnterpriseDB Corporation >>>>>> >>>>>> Phone: +91-9741705709 >>>>>> >>>>>> >>>>>> On Mon, May 4, 2020 at 2:51 PM Akshay Joshi < >>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Yogesh >>>>>>> >>>>>>> The patch is not applied to the master branch. Can you please rebas= e >>>>>>> and send the patch again. >>>>>>> >>>>>>> On Fri, May 1, 2020 at 12:28 PM Yogesh Mahajan < >>>>>>> yogesh.mahajan@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> Please find updated patch modified according to review comments - >>>>>>>> Patch implements below things - >>>>>>>> 1.Enable the current framework to provide option to execute Featur= e >>>>>>>> tests in parallel on selenium grid set up. >>>>>>>> - Addition of new switch to start parallel features tests. >>>>>>>> - New parameters with respect to selenoid in test_config.json.i= n >>>>>>>> - Addition of new script to check solenoid updates. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Yogesh Mahajan >>>>>>>> QA - Team >>>>>>>> EnterpriseDB Corporation >>>>>>>> >>>>>>>> Phone: +91-9741705709 >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Apr 21, 2020 at 1:18 PM Shubham Agarwal < >>>>>>>> shubham.agarwal@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Hi Yogesh, >>>>>>>>> Below are the review comments- >>>>>>>>> >>>>>>>>> 1. runtests.py >>>>>>>>> a. The exception traceback logic at line number 653 in >>>>>>>>> runtests.py is not correct since it is particular to the thread >>>>>>>>> but there is much more code in that block which can throw some >>>>>>>>> exception. >>>>>>>>> b. line number 447 -> The drop_database function will only try to >>>>>>>>> drop the database with the name which is newly created >>>>>>>>> at 431 line number, its probability is 1% instead of this you can >>>>>>>>> write a logic so that it will drop all the database which starts = with name >>>>>>>>> =E2=80=98acceptance_test_db'. >>>>>>>>> c. line 584 - Why we are including resql test case execution in >>>>>>>>> GUI execution logic. >>>>>>>>> d. Change the function name run_test as script name is also >>>>>>>>> runtests.py >>>>>>>>> >>>>>>>>> 2. test_utils.py >>>>>>>>> a. Remove the headless chrome code from >>>>>>>>> get_remote_webdriver() in test_utils.py since we are using >>>>>>>>> solenoid and it is not required anymore. >>>>>>>>> b. Create separate functions to instantiate the firefox >>>>>>>>> driver and chrome driver logic since the same code is used in mul= tiple >>>>>>>>> files. >>>>>>>>> c. launch_url_in_browser() -> you can simplify the definition of >>>>>>>>> the function like: >>>>>>>>> retry =3D 60 >>>>>>>>> =EF=BB=BF *while *retry > 0: >>>>>>>>> try: >>>>>>>>> driver.get(url) >>>>>>>>> except WebDriverException: >>>>>>>>> retry -=3D 1 >>>>>>>>> 3. Execution logs are not printing as per the logic some time, I >>>>>>>>> ran the suite for two servers and attached are the execution logs= . >>>>>>>>> 4. Readme - >>>>>>>>> Please provide the Valid selenoid URL to be provided in the >>>>>>>>> test_config.json, with all the steps mentioned in the readme it i= s not >>>>>>>>> clear. >>>>>>>>> Revisit the readme and write the missing steps. >>>>>>>>> 5. copy_selected_query_results_feature_tests.py- >>>>>>>>> Create the function to avoid duplicate code. The code for pasting >>>>>>>>> the values is repeating 8 times in the test code. >>>>>>>>> 6. Provide the valid docstring in newly introduced functions and >>>>>>>>> also valid comments while calling it. for ex.- _update_preference= () >>>>>>>>> function is >>>>>>>>> introduced in pg_utilities_backup_restrore_test.py but from the >>>>>>>>> function name, it is not clear what preferences are going to upda= te in it. >>>>>>>>> 7. test_index_constraint_add test case is failing due to the >>>>>>>>> latest change, please merge and update this test case >>>>>>>>> >>>>>>>>> On Thu, Apr 16, 2020 at 2:41 PM navnath gadakh < >>>>>>>>> navnath.gadakh@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> I think I am not the right person to review this patch now as I >>>>>>>>>> already reviewed this code offline in the last week. I know the = approached >>>>>>>>>> Yogesh has followed, also given some review comments on it. >>>>>>>>>> Someone else please review it. >>>>>>>>>> >>>>>>>>>> Thanks! >>>>>>>>>> >>>>>>>>>> On Mon, Apr 13, 2020 at 2:49 PM Akshay Joshi < >>>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Navnath >>>>>>>>>>> >>>>>>>>>>> Can you please review it? >>>>>>>>>>> >>>>>>>>>>> On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan < >>>>>>>>>>> yogesh.mahajan@enterprisedb.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> Please find the attached patch for running *features tests* >>>>>>>>>>>> using solenoid(selenium grid + docker). >>>>>>>>>>>> KIndly review. >>>>>>>>>>>> To sun feature tests in parallel, required prerequisites can b= e >>>>>>>>>>>> checked in '~/web/regression/README' file. >>>>>>>>>>>> Also detailed instructions are added in the same file. >>>>>>>>>>>> After applying the patch, any existing process for execution o= f >>>>>>>>>>>> API/Features tests remains the same. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Yogesh Mahajan >>>>>>>>>>>> QA - Team >>>>>>>>>>>> EnterpriseDB Corporation >>>>>>>>>>>> >>>>>>>>>>>> Phone: +91-9741705709 >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> *Thanks & Regards* >>>>>>>>>>> *Akshay Joshi* >>>>>>>>>>> >>>>>>>>>>> *Sr. Software Architect* >>>>>>>>>>> *EnterpriseDB Software India Private Limited* >>>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Regards, >>>>>>>>>> Navnath Gadakh >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Thanks & Regards, >>>>>>>>> Shubham Agarwal >>>>>>>>> EnterpriseDB Corporation >>>>>>>>> >>>>>>>>> The Postgres Database Company >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Thanks & Regards* >>>>>>> *Akshay Joshi* >>>>>>> >>>>>>> *Sr. Software Architect* >>>>>>> *EnterpriseDB Software India Private Limited* >>>>>>> *Mobile: +91 976-788-8246* >>>>>>> >>>>>> >>>>> >>>>> -- >>>>> *Thanks & Regards* >>>>> *Akshay Joshi* >>>>> >>>>> *Sr. Software Architect* >>>>> *EnterpriseDB Software India Private Limited* >>>>> *Mobile: +91 976-788-8246* >>>>> >>>> >>> >>> -- >>> *Thanks & Regards* >>> *Akshay Joshi* >>> >>> *Sr. Software Architect* >>> *EnterpriseDB Software India Private Limited* >>> *Mobile: +91 976-788-8246* >>> >> > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > --00000000000037509505a51fd486 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Akshay,

Please find the attached reb= ase patch. Looks like there were some commits after my today's git pull= .

Thanks,
Yogesh M= ahajan
QA - Team
EnterpriseDB Corporation

P= hone: +91-9741705709


On Fri, May 8, = 2020 at 2:35 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi=C2=A0Yogesh

Unable to apply the p= atch on the latest code. Please rebase and send it again.

On Fri, May = 8, 2020 at 2:05 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.com> wro= te:
Attaching patch=C2=A0
Thanks,
Yogesh M= ahajan
QA - Team
EnterpriseDB Corporation

P= hone: +91-9741705709


On Fri, May 8, = 2020 at 1:57 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi=C2=A0Yogesh

You= forgot to attach patch :)

On Fri, May 8, 2020 at 1:35 PM Yogesh Mahaj= an <yogesh.mahajan@enterprisedb.com> wrote:
=
Hi,

Please find the up= dates patch with above review comments.
Patch adds below function= ality to existing framework -=C2=A0
1.Ability to run features in = parallel using solenoid(selenium + docker).
=C2=A0 =C2=A0 =C2=A0a= .Selenoid=C2=A0setup steps are included in /regression/README
=C2= =A0 =C2=A0 =C2=A0b.'python runtests.py =C2=A0--pkg feature_tests --para= llel' will trigger parallel feature tests.
2.Removes dependen= cy for pyperclip python=C2=A0module.
3.New script in ../tools/upd= ate_selenoid_browsers.py updates=C2=A0browser images=C2=A0at local selneoid= server setup.


Thanks,
Yogesh Mahajan
QA - Team
<= div>
EnterpriseDB Corporation

Phone: +91-9741705709
<= /div>


On Tue, May 5, 2020 at 3:58 PM Akshay Josh= i <ak= shay.joshi@enterprisedb.com> wrote:
Hi=C2=A0Yogesh

Following are the review comme= nts:
  • pyjq package is not required as we used = it only in one place. A result is a normal dictionary that can be easily lo= oped=C2=A0through.
  • Remove "if (SUPPORT_SSH_TUNNEL is True a= nd ..." logic from config.py, we have already removed that.
  • Remove yarn.lock file.
  • Remove=C2=A0pyperclip from the regr= ession/requirements.txt as we are not using it.
  • Please mentioned th= e value of=C2=A0pgAdmin_default_server should not be '127.0.0= .1' in the README file even though everything runs on the same mach= ine.
  • Please mentioned that if we set the value of the browser versi= on is null then selenoid=C2=A0will take the latest available browser= version.
  • Got the below error if selenoid_url is not provided:
  • =
    • list index out of range
      Unable to find Selenoid Status
    =
  • "selenoid_info" s= hould be renamed to "selenoid_config". Proper alignment is requir= ed.
  • "cross_Browsers" should be renamed to "cross_bro= wsers" or "run_on_browsers" or "run_tests_on_browsers&q= uot;. Provide entries for supported browsers with version set to null so th= at it will run on the latest browser version.
  • "selenoid_url&qu= ot;: "Selenoid Url" should be changed to=C2=A0"selenoid_url&= quot;: "http://<IP address of Selenoid Installed machine>:4444/w= d/hub".
If you change the names in test_config.json.in then please up= date the same in README as well.

On Mon, May 4, 202= 0 at 4:27 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.com> wrote:
Hi Akshay,

Plea= se find the updated patch.

Thanks,
Yogesh Mahajan
QA - Team
Ent= erpriseDB Corporation

Phone: +91-9741705709
<= /div>

On Mon, May 4, 2020 at 2:51 PM Akshay Joshi <akshay.joshi@e= nterprisedb.com> wrote:
H= i=C2=A0Yogesh

The patch is not applied to the master bra= nch. Can you please rebase and send the patch again.

On Fri, May 1, 20= 20 at 12:28 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.com> wrote:<= br>
Hi,

Please fi= nd updated patch modified according to review comments=C2=A0-=C2=A0
Patch implements below things=C2=A0-=C2=A0
1.Enable the curren= t framework to provide option to execute Feature tests in parallel =C2=A0on= selenium grid set up.
=C2=A0 =C2=A0- Addition of new switch to s= tart parallel features tests.
=C2=A0 =C2=A0- New parameters with = respect to selenoid in test_config.json.in
=C2=A0 =C2=A0- Addition of new scrip= t to check solenoid=C2=A0updates.


<= br clear=3D"all">
Thanks,
Yogesh = Mahajan
QA - Team
EnterpriseDB Corporation

= Phone: +91-9741705709


On Tue, Apr 21= , 2020 at 1:18 PM Shubham Agarwal <shubham.agarwal@enterprisedb.com> w= rote:
Hi Yogesh,
Below are the review comments-

1. runtest= s.py
=C2=A0 =C2=A0 a. The exception traceback = logic at line number 653 in runtests.py is not correct since it is particul= ar to the thread
but there is = much more code in that block which can throw some exception.<= /div>
b. line number 447 -> The drop_database function will only t= ry to drop the database with the name which is newly created =
at 431 line number, its probability is 1% in= stead of this you can write a logic so that it will drop all the database w= hich starts with name =E2=80=98acceptance_test_db'.
=
=C2=A0 c. line 584 -=C2=A0Why we = are including resql test case execution in GUI execution logic.
=C2=A0 =C2=A0 d.=C2=A0Change the function name run_test as scrip= t name is also runtests.py

<= /div>
2. test_ut= ils.py
=C2=A0 =C2=A0 a.= =C2=A0Remove the headless chrome code fr= om get_remote_webdriver() in test_utils.py since we are using solenoid and it is not required anymore.
= =C2=A0 = =C2=A0 b. Crea= te separate functions to instantiate the firefox driver and chrome driver l= ogic since the same code is used in multiple files.
c. l= aunch_url_in_browser() -> you can simplify the definition of the functio= n like:
=C2=A0 =C2=A0=C2=A0retry =3D 60
=EF=BB=BF=C2=A0 =C2=A0 =C2=A0 =C2=A0 while=C2=A0retry > 0= :
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 try:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 driver.get(url)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 except WebDriverException:
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retry -=3D 1
3= . Execution logs are not printing as per the logic some time, I ran the sui= te for two servers and attached are the execution logs.
=
<= font face=3D"arial, sans-serif">4. Readme -
Please provide the Valid selenoid URL to be provided= in the test_config.json, with all the steps mentioned in the readme it is = not clear.
Revisit th= e readme and write the missing steps.
5. copy_selected_query_results_feature_tests.py-
Create the function to avoid du= plicate code. The code for pasting the values is repeating 8 times in the t= est code.
6. Provide the= valid docstring in newly introduced functions and also valid comments whil= e calling it. for ex.- _update_preference() function is
=
<= font face=3D"arial, sans-serif"> introduced in pg_utilities_backup_restro= re_test.py but from the function name, it is not clear what preferences are= going to update in it.
= 7. test_index_const= raint_add test case is failing due to the latest change, please merge and u= pdate this test case
=

On Thu, Apr 16, 2020 at 2:41 PM navnath gadakh <navnath.ga= dakh@enterprisedb.com> wrote:
Hi,
I think I am not the right person to review th= is patch now as I already reviewed this code offline in the last week. I kn= ow the=C2=A0approached Yogesh has followed, also given some review comments= on it.
Someone else plea= se review it.=C2=A0

<= /font>
Thanks!

On Mon,= Apr 13, 2020 at 2:49 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wro= te:
Hi Navnath

Can you please review it?

On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan <yogesh.mahajan@enterpr= isedb.com> wrote:
=
Hi,

Please find the attached=C2=A0patch for running features tests us= ing solenoid(selenium=C2=A0grid + docker).
KIndly review.
To sun feature tests in parallel, required prerequisites can be che= cked in '~/web/regression/README' file.
Also detailed=C2=A0instructions are added in the sam= e=C2=A0file.
After applyi= ng the patch, any existing process for execution of API/Features=C2=A0tests= remains the same.

= Thanks,
Yogesh Mahajan
QA - Team
<= font face=3D"arial, sans-serif">EnterpriseDB Corporation

Phone: +91-= 9741705709


--
Thanks & Regards=
A= kshay Joshi
Sr. Software Architect
EnterpriseDB Software India Private Limited
Mobile: +91 976-788-8246


--
Regards,
Navnath = Gadakh


--
Thanks & Regards,
Shubham Agarwal
EnterpriseDB Corporation

The Postgres Database Company


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=
--00000000000037509505a51fd486-- --00000000000037509705a51fd488 Content-Type: application/octet-stream; name="Selenium_Grid_Implementation_ver5.0.patch" Content-Disposition: attachment; filename="Selenium_Grid_Implementation_ver5.0.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k9y0gxba0 ZGlmZiAtLWdpdCBhL3Rvb2xzL3VwZGF0ZV9zZWxlbm9pZF9icm93c2Vycy5weSBiL3Rvb2xzL3Vw ZGF0ZV9zZWxlbm9pZF9icm93c2Vycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5jMDY3NjIxCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdXBkYXRlX3NlbGVub2lkX2Jy b3dzZXJzLnB5CkBAIC0wLDAgKzEsMjc3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VXBkYXRlcyBicm93c2VyIGltYWdlcyhzZWxlbm9pZC1kb2NrZXIpIGRlcGVuZGluZyBvbiBhcmd1 bWVudHMgcGFzc2VkIHdoaWxlCisjIHJ1bm5pbmcgdGhpcyBzY3JpcHQuCisjIGUuZy4gLS1jaHJv bWUgL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSAtLWZpcmVmb3ggL3Vzci9iaW4vZmlyZWZveAorIyBB Y2Nlc3MgZGV0YWlscyBhYm91dCBzd2l0Y2hlcyB1c2luZyBoZWxwCisjIGUuZy4gLS1oZWxwCisK K2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5 cworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHJlcXVlc3RzCitpbXBvcnQganNvbgorCisKK2Rl ZiByZWFkX2NvbW1hbmRfbGluZSgpOgorICAgICIiIlJlYWQgdGhlIGNvbW1hbmQgbGluZSBhcmd1 bWVudHMuCisgICAgUmV0dXJuczoKKyAgICAgICAgQXJndW1lbnRQYXJzZXI6IFRoZSBwYXJzZWQg YXJndW1lbnRzIG9iamVjdAorCisgICAgIiIiCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1l bnRQYXJzZXIoCisgICAgICAgIGRlc2NyaXB0aW9uPSdHZXQgbGF0ZXN0IGJyb3dzZXIgaW1hZ2Vz KGNocm9tZSAmIGZpcmVmb3gpIGZvciBzZWxlbm9pZC4nCisgICAgICAgICAgICAgICAgICAgICdl LmcuIC0gLS1jaHJvbWUgL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSAtLWZpcmVmb3ggJworICAgICAg ICAgICAgICAgICAgICAnL3Vzci9iaW4vZmlyZWZveCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu dCgiLS1jaHJvbWUiLCBtZXRhdmFyPSJDSFJPTUUiLAorICAgICAgICAgICAgICAgICAgICAgICAg aGVscD0idGhlIENocm9tZSBleGVjdXRhYmxlIHBhdGgiKQorICAgIHBhcnNlci5hZGRfYXJndW1l bnQoIi0tZmlyZWZveCIsIG1ldGF2YXI9IkZJUkVGT1giLAorICAgICAgICAgICAgICAgICAgICAg ICAgaGVscD0idGhlIGZpcmVmb3ggZXhlY3V0YWJsZSBwYXRoIikKKyAgICBhcmdzX3ZhbCA9IHBh cnNlci5wYXJzZV9hcmdzKCkKKyAgICByZXR1cm4gYXJnc192YWwKKworCitkZWYgZ2V0X2Jyb3dz ZXJfdmVyc2lvbihicm93c2VyX25hbWUsIGV4ZWN1dGFibGVfcGF0aCk6CisgICAgIiIiCisgICAg RnVuY3Rpb24gcmV0dXJucyBicm93c2VyIHZlcnNpb24gZm9yIHNwZWNpZmllZCBicm93c2VyIHVz aW5nIGV4ZWN1dGFibGUKKyAgICBwYXRoIHBhc3NlZCBpbiBhcmd1bWVudHMuCisgICAgOnBhcmFt IGJyb3dzZXJfbmFtZToKKyAgICA6cGFyYW0gZXhlY3V0YWJsZV9wYXRoOiBlLmcuIC91c3IvYmlu L2ZpcmVmb3gKKyAgICA6cmV0dXJuOiBicm93c2VyIHZlcnNpb24KKyAgICAiIiIKKyAgICAjIE9u IExpbnV4L01hYyB3ZSBydW4gdGhlIGJyb3dzZXIgZXhlY3V0YWJsZSB3aXRoIHRoZSAtLXZlcnNp b24gZmxhZywKKyAgICAjIHRoZW4gcGFyc2UgdGhlIG91dHB1dC4KKyAgICBicm93c2VyX3ZlcnNp b25fdmFsID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5Qb3Bl bihbZXhlY3V0YWJsZV9wYXRoLCAnLS12ZXJzaW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBleGNlcHQgRmlsZU5vdEZv dW5kRXJyb3I6CisgICAgICAgIHByaW50KCdUaGUgc3BlY2lmaWVkIGJyb3dzZXIgZXhlY3V0YWJs ZSBjb3VsZCBub3QgYmUgZm91bmQuJykKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIHZlcnNp b25fc3RyID0gcmVzdWx0LnN0ZG91dC5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIpCisKKyAgICBpZiBi cm93c2VyX25hbWUubG93ZXIoKSA9PSAiY2hyb21lIjoKKyAgICAgICAgIyBDaGVjayBmb3IgJ0No cm9tJyBub3QgJ0Nocm9tZScgaW4gY2FzZSB0aGUgdXNlciBpcyB1c2luZyBDaHJvbWl1bS4KKyAg ICAgICAgaWYgIkNocm9tIiBub3QgaW4gdmVyc2lvbl9zdHI6CisgICAgICAgICAgICBwcmludCgn VGhlIHNwZWNpZmllZCBDaHJvbWUgZXhlY3V0YWJsZSBvdXRwdXQgYW4gdW5leHBlY3RlZCAnCisg ICAgICAgICAgICAgICAgICAndmVyc2lvbiBzdHJpbmc6IHt9LicuZm9ybWF0KHZlcnNpb25fc3Ry KSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICMgT24gc29tZSBsaW51eCBkaXN0 cm8gYGNocm9tZS0tdmVyc2lvbmAgZ2l2ZXMgb3V0cHV0IGxpa2UKKyAgICAgICAgIyAnR29vZ2xl IENocm9tZSA4MC4wLjM5ODcuMTMyIHVua25vd25cbicKKyAgICAgICAgIyBzbyB3ZSBuZWVkIHRv IGNoZWNrIGFuZCByZW1vdmUgdGhlIHVua25vd24gc3RyaW5nIGZyb20gdGhlIHZlcnNpb24KKyAg ICAgICAgaWYgdmVyc2lvbl9zdHIuZW5kc3dpdGgoInVua25vd25cbiIpOgorICAgICAgICAgICAg dmVyc2lvbl9zdHIgPSB2ZXJzaW9uX3N0ci5zdHJpcCgidW5rbm93blxuIikuc3RyaXAoKQorCisg ICAgICAgIGNocm9tZV92ZXJzaW9uID0gJy4nLmpvaW4odmVyc2lvbl9zdHIuc3BsaXQoKVstMV0u c3BsaXQoJy4nKVs6LTJdKQorCisgICAgICAgICMgTWFrZSBzdXJlIGJyb3dzZXIgdmVyc2lvbiBo YXMgb25seSAxIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgaWYgY2hyb21lX3ZlcnNpb24uY291bnQo Jy4nKSAhPSAxOgorICAgICAgICAgICAgcHJpbnQoJ1RoZSBzcGVjaWZpZWQgQ2hyb21lIGV4ZWN1 dGFibGUgb3V0cHV0IGFuIHVuZXhwZWN0ZWQgJworICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24g c3RyaW5nOiB7fS4nLmZvcm1hdCh2ZXJzaW9uX3N0cikpCisgICAgICAgICAgICBzeXMuZXhpdCgx KQorICAgICAgICBicm93c2VyX3ZlcnNpb25fdmFsID0gY2hyb21lX3ZlcnNpb24KKyAgICBlbGlm IGJyb3dzZXJfbmFtZS5sb3dlcigpID09ICJmaXJlZm94IjoKKyAgICAgICAgaWYgIkZpcmVmb3gi IG5vdCBpbiB2ZXJzaW9uX3N0cjoKKyAgICAgICAgICAgIHByaW50KCdUaGUgc3BlY2lmaWVkIEZp cmVmb3ggZXhlY3V0YWJsZSBvdXRwdXQgYW4gdW5leHBlY3RlZCAnCisgICAgICAgICAgICAgICAg ICAndmVyc2lvbiBzdHJpbmc6IHt9LicuZm9ybWF0KHZlcnNpb25fc3RyKSkKKyAgICAgICAgICAg IHN5cy5leGl0KDEpCisKKyAgICAgICAgIyBTb21lIHRpbWUgZmlyZWZveCAtLXZlcnNpb24gZ2l2 ZXMgb3V0cHV0IGxpa2UKKyAgICAgICAgIyAnUnVubmluZyB3aXRob3V0IGExMXkgc3VwcG9ydCEK KyAgICAgICAgIyBNb3ppbGxhIEZpcmVmb3ggNjguNy4wZXNyJworICAgICAgICAjIE90aGVyIG91 dHB1dCAtIFtyb290QGxvY2FsaG9zdCBsb2NhbF0jIC91c3IvYmluL2ZpcmVmb3ggLS12ZXJzaW9u CisgICAgICAgICMgTW96aWxsYSBGaXJlZm94IDc1LjAKKyAgICAgICAgaWYgJ2VzcicgaW4gdmVy c2lvbl9zdHI6CisgICAgICAgICAgICBmaXJlZm94X3ZlcnNpb24gPSAnLicuam9pbigKKyAgICAg ICAgICAgICAgICB2ZXJzaW9uX3N0ci5zcGxpdCgpWy0xXS5zcGxpdCgnLicpWzotMl0pICsgJy4w JworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlyZWZveF92ZXJzaW9uID0gJy4nLmpvaW4o CisgICAgICAgICAgICAgICAgdmVyc2lvbl9zdHIuc3BsaXQoKVstMV0uc3BsaXQoJy4nKVs6LTFd KSArICcuMCcKKworICAgICAgICAjIE1ha2Ugc3VyZSBicm93c2VyIHZlcnNpb24gaGFzIG9ubHkg MSBkZWNpbWFsIHBvaW50CisgICAgICAgIGlmIGZpcmVmb3hfdmVyc2lvbi5jb3VudCgnLicpICE9 IDE6CisgICAgICAgICAgICBwcmludCgnVGhlIHNwZWNpZmllZCBDaHJvbWUgZXhlY3V0YWJsZSBv dXRwdXQgYW4gdW5leHBlY3RlZCAnCisgICAgICAgICAgICAgICAgICAndmVyc2lvbiBzdHJpbmc6 IHt9LicuZm9ybWF0KHZlcnNpb25fc3RyKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAg ICAgIGJyb3dzZXJfdmVyc2lvbl92YWwgPSBmaXJlZm94X3ZlcnNpb24KKyAgICBlbHNlOgorICAg ICAgICBwcmludCgiezB9IGlzIG5vdCByZWNvZ25pc2VkICIuZm9ybWF0KGJyb3dzZXJfbmFtZSkp CisgICAgICAgIHN5cy5leGl0KDEpCisgICAgcmV0dXJuIGJyb3dzZXJfdmVyc2lvbl92YWwKKwor CitkZWYgY2hlY2tfYW5kX2Rvd25sb2FkX3ZuY19icm93c2VyX2ltYWdlKGJyb3dzZXJfbmFtZSwg YnJvd3Nlcl92ZXJzaW9uKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBjaGVja3MgcHJlc2VuY2Ug Zm9yIHZuYyBpbWFnZXMgZm9yIHBhc3NlZCBicm93c2VyCisgICAgYXQgZG9ja2VyLmlvL3NlbGVu b2lkLyByZWdpc3RyeQorICAgIDpwYXJhbSBicm93c2VyX25hbWU6CisgICAgOnBhcmFtIGJyb3dz ZXJfdmVyc2lvbjoKKyAgICA6cmV0dXJuOnRydWUgaWYgYnJvd3NlciBpbWFnZSBpcyBhdmFpbGFi bGUgJiBkb3dubG9hZGVkIGVsc2UgZmFsc2UKKyAgICAiIiIKKyAgICByZXMgPSByZXF1ZXN0cy5n ZXQoCisgICAgICAgICdodHRwczovL3JlZ2lzdHJ5Lmh1Yi5kb2NrZXIuY29tL3YyL3JlcG9zaXRv cmllcy9zZWxlbm9pZC92bmNfJyArCisgICAgICAgIGJyb3dzZXJfbmFtZSArICcvdGFncy8nKQor ICAgIHJlcyA9IHJlcy5qc29uKCkKKyAgICB2ZXJzaW9uX3RhZyA9IFtdCisgICAgaWYgbGVuKHJl c1sncmVzdWx0cyddKSA+IDA6CisgICAgICAgIGZvciByZXN1bHQgaW4gcmVzWydyZXN1bHRzJ106 CisgICAgICAgICAgICBpZiAnbmFtZScgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgIHZlcnNp b25fdGFnLmFwcGVuZChyZXN1bHRbJ25hbWUnXSkKKyAgICB2bmNfaW1hZ2VfYXZhaWxhYmxlID0g RmFsc2UKKyAgICBpbWFnZV9uYW1lID0gJ3ZuY18nICsgYnJvd3Nlcl9uYW1lICsgJzonICsgYnJv d3Nlcl92ZXJzaW9uCisKKyAgICBmb3IgaWR4LCB0YWcgaW4gZW51bWVyYXRlKHZlcnNpb25fdGFn KToKKyAgICAgICAgaWYgYnJvd3Nlcl92ZXJzaW9uID09IHRhZzoKKyAgICAgICAgICAgIGNvbW1h bmQgPSAnZG9ja2VyIHB1bGwgc2VsZW5vaWQvdm5jXycgKyBicm93c2VyX25hbWUgKyAnOicgXAor ICAgICAgICAgICAgICAgICAgICAgICsgYnJvd3Nlcl92ZXJzaW9uCisgICAgICAgICAgICBwcmlu dCgnIFZOQyBpbWFnZSBpcyBhdmFpbGFibGUgJiBkb3dubG9hZGluZyBub3cuLi4gezB9Jy5mb3Jt YXQoCisgICAgICAgICAgICAgICAgY29tbWFuZCkpCisgICAgICAgICAgICB0cnk6CisgICAgICAg ICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKFtjb21tYW5kXSwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1 YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgICAgICB2bmNfaW1hZ2VfYXZhaWxhYmxlID0gVHJ1 ZQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICB0cmFjZWJh Y2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBwcmludCgKKyAg ICAgICAgICAgICAgICAgICAgJ3swfX0gSW1hZ2UgZm91bmQgYnV0IGNvdWxkIG5vdCBkb3dubG9h ZC4nLmZvcm1hdChjb21tYW5kKSkKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAg ICAgICAgYnJlYWsKKyAgICAgICAgZWxpZiBpZHggPT0gbGVuKHZlcnNpb25fdGFnKToKKyAgICAg ICAgICAgIHByaW50KCJ7MH0gSW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iLmZvcm1hdChpbWFnZV9u YW1lKSkKKyAgICAgICAgICAgIHZuY19pbWFnZV9hdmFpbGFibGUgPSBGYWxzZQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgcGFzcworICAgIHJldHVybiB2bmNfaW1hZ2VfYXZhaWxhYmxlCisK KworZGVmIHJlbG9hZF9zZWxlbm9pZF9jb25maWcoKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBy dW5zIGNvbW1hbmQgdG8gcmVmcmVzaCBzZWxlbm9pZCBjb25maWd1cmF0aW9uCisgICAgOnJldHVy bjogdHJ1ZSBpZiBjb21tYW5kIGV4ZWN1dGlvbiBmb3Igc2VsZW5vaWQgcmVsb2FkIGlzIHN1Y2Nl c3NmdWwKKyAgICBlbHNlIGZhbHNlCisgICAgIiIiCisgICAgY29tbWFuZCA9ICdkb2NrZXIga2ls bCAtcyBIVVAgc2VsZW5vaWQnCisgICAgcmVsb2FkX3N1Y2Nlc3NmdWwgPSBGYWxzZQorICAgIHRy eToKKyAgICAgICAgc3VicHJvY2Vzcy5jYWxsKFtjb21tYW5kXSwgc2hlbGw9VHJ1ZSwgc3Rkb3V0 PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgcHJpbnQoIiBTZWxlbm9pZCBDb25maWd1cmF0aW9u IGlzIHJlbG9hZGVkLiIpCisgICAgICAgIHJlbG9hZF9zdWNjZXNzZnVsID0gVHJ1ZQorICAgIGV4 Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3Rk ZXJyKQorICAgICAgICBwcmludCgnRXJyb3Igd2hpbGUgcmVsb2FkaW5nIHNlbGVub2lkIGNvbmZp Z3VyYXRpb24uJykKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICByZXR1cm4gcmVsb2FkX3N1Y2Nl c3NmdWwKKworCitkZWYgZWRpdF9icm93c2Vyc19qc29uKGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92 ZXJzaW9uKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBlZGl0cyBicm93c2Vycy5qc29uIHdoaWNo IGlzIHVzZWQgYnkgc2VsZW5vaWQgdG8KKyAgICBsb2FkIGJyb3dzZXIgY29uZmlndXJhdGlvbi4K KyAgICBEZWZhdWx0IHBhdGggZm9yIHRoaXMgZmlsZSBpcworICAgICJ1c2VyX2hvbWVfZGlyICsg Jy8uYWVyb2t1YmUvc2VsZW5vaWQvYnJvd3NlcnMuanNvbiciCisgICAgQ3VycmVudGx5IHRoaXMg aXMgaGFyZGNvZGVkLCBtaWdodCBuZWVkIHRvIG1vZGlmeQorICAgIGlmIHdlIHdhbnQgdG8gcGFz cyBjdXN0b21pemUgYnJvd3NlcnMuanNvbgorICAgIDpwYXJhbSBicm93c2VyX25hbWU6CisgICAg OnBhcmFtIGJyb3dzZXJfdmVyc2lvbjoKKyAgICA6cmV0dXJuOgorICAgICIiIgorICAgIGZpbGVf ZWRpdGVkID0gVHJ1ZQorICAgICMgUmVhZCBleGlzdGluZyBicm93c2Vycy5qc29uCisgICAganNv bl9maWxlID0gb3BlbihmaWxlX3BhdGgsICdyJykKKyAgICBleGlzdGluZ19kYXRhID0ganNvbi5s b2FkKGpzb25fZmlsZSkKKyAgICB1cGRhdGVkX2RhdGEgPSBOb25lCisKKyAgICAjIFVwZGF0ZSBk YXRhIGZvciBuZXcgYnJvd3NlciBpbWFnZXMKKyAgICBpZiBicm93c2VyX25hbWUubG93ZXIoKSA9 PSAnY2hyb21lJzoKKyAgICAgICAgdmVyc2lvbl9kYXRhID0gZXhpc3RpbmdfZGF0YVsnY2hyb21l J11bJ3ZlcnNpb25zJ10KKyAgICAgICAgaWYgYnJvd3Nlcl92ZXJzaW9uIGluIHZlcnNpb25fZGF0 YS5rZXlzKCk6CisgICAgICAgICAgICBwcmludCgiIHswfTp7MX0gaXMgYWxyZWFkeSB1cGRhdGVk IGluIGJyb3dzZXJzLmpzb24uIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgYnJvd3Nlcl9uYW1l LCBicm93c2VyX3ZlcnNpb24pKQorICAgICAgICAgICAgZmlsZV9lZGl0ZWQgPSBUcnVlCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhX3RvX2luc2VydCA9IGRpY3QoCisgICAgICAgICAg ICAgICAge2Jyb3dzZXJfdmVyc2lvbjogeworICAgICAgICAgICAgICAgICAgICAnaW1hZ2UnOiAn c2VsZW5vaWQvdm5jX2Nocm9tZTonICsgYnJvd3Nlcl92ZXJzaW9uLAorICAgICAgICAgICAgICAg ICAgICAncG9ydCc6ICc0NDQ0JywgJ3BhdGgnOiAnLyd9fSkKKyAgICAgICAgICAgIChleGlzdGlu Z19kYXRhWydjaHJvbWUnXVsndmVyc2lvbnMnXSkudXBkYXRlKGRhdGFfdG9faW5zZXJ0KQorICAg ICAgICAgICAgdXBkYXRlZF9kYXRhID0gZXhpc3RpbmdfZGF0YQorICAgICAgICAgICAgcHJpbnQo dXBkYXRlZF9kYXRhKQorCisgICAgZWxpZiBicm93c2VyX25hbWUubG93ZXIoKSA9PSAnZmlyZWZv eCc6CisgICAgICAgIHZlcnNpb25fZGF0YSA9IGV4aXN0aW5nX2RhdGFbJ2ZpcmVmb3gnXVsndmVy c2lvbnMnXQorICAgICAgICBpZiBicm93c2VyX3ZlcnNpb24gaW4gdmVyc2lvbl9kYXRhLmtleXMo KToKKyAgICAgICAgICAgIHByaW50KCIgezB9OnsxfSBpcyBhbHJlYWR5IHVwZGF0ZWQgaW4gYnJv d3NlcnMuanNvbi4iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBicm93c2VyX25hbWUsIGJyb3dz ZXJfdmVyc2lvbikpCisgICAgICAgICAgICBmaWxlX2VkaXRlZCA9IFRydWUKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIGRhdGFfdG9faW5zZXJ0ID0gZGljdCgKKyAgICAgICAgICAgICAgICB7 YnJvd3Nlcl92ZXJzaW9uOiB7CisgICAgICAgICAgICAgICAgICAgICdpbWFnZSc6ICdzZWxlbm9p ZC92bmNfZmlyZWZveDonICsgYnJvd3Nlcl92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAn cG9ydCc6ICc0NDQ0JywgJ3BhdGgnOiAnLyd9fSkKKyAgICAgICAgICAgIChleGlzdGluZ19kYXRh WydmaXJlZm94J11bJ3ZlcnNpb25zJ10pLnVwZGF0ZShkYXRhX3RvX2luc2VydCkKKyAgICAgICAg ICAgIHVwZGF0ZWRfZGF0YSA9IGV4aXN0aW5nX2RhdGEKKyAgICBlbHNlOgorICAgICAgICBwcmlu dCgiQnJvd3NlciB2ZXJzaW9uIG5vdCBtYXRjaGVkIikKKyAgICAgICAgZmlsZV9lZGl0ZWQgPSBG YWxzZQorCisgICAgIyBXcml0ZSB1cGRhdGVkIGRhdGEgaW4gYnJvd3NlcnMuanNvbgorICAgIGlm IHVwZGF0ZWRfZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAganNvbl9maWxlID0gb3BlbihmaWxl X3BhdGgsICd3JykKKyAgICAgICAganNvbi5kdW1wKHVwZGF0ZWRfZGF0YSwganNvbl9maWxlKQor ICAgICAgICBwcmludCgiICdicm93c2Vycy5qc29uJyBpcyB1cGRhdGVkIGZvciB7MH0gezF9Ii5m b3JtYXQoCisgICAgICAgICAgICBicm93c2VyX25hbWUsIGJyb3dzZXJfdmVyc2lvbikpCisKKyAg ICAgICAgZmlsZV9lZGl0ZWQgPSBUcnVlCisgICAgcmV0dXJuIGZpbGVfZWRpdGVkCisKKworIyBN YWluIFByb2dyYW0gc3RhcnRzIGhlcmUKKyMgUmVhZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzICYg Z2V0IGxpc3Qgb2YgYnJvd3Nlcl9uYW1lLCBleGVjdXRhYmxlIHBhdGguCithcmdzID0gdmFycyhy ZWFkX2NvbW1hbmRfbGluZSgpKQorCisjIEdldCBwYXRoIHBhdGggZm9yIGJyb3dzZXJzLmpzb24K K3VzZXJfaG9tZV9kaXIgPSBvcy5nZXRlbnYoIkhPTUUiKQorZmlsZV9wYXRoID0gdXNlcl9ob21l X2RpciArICcvLmFlcm9rdWJlL3NlbGVub2lkL2Jyb3dzZXJzLmpzb24nCitwcmludCgiKioqKiog VXBkYXRpbmcgJ3swfScgZm9yIG5ldyBicm93c2VyIHZlcnNpb25zLioqKioqIi5mb3JtYXQoZmls ZV9wYXRoKSkKKworIyBJdGVyYXRlIG92ZXIgYXJndW1lbnRzIHBhc3NlZAorZm9yIGJyb3dzZXIs IGV4ZWN1dGFibGVfcGF0aCBpbiBhcmdzLml0ZW1zKCk6CisgICAgaWYgZXhlY3V0YWJsZV9wYXRo IGlzIG5vdCBOb25lOgorICAgICAgICAjIEdldCBicm93c2VyIG5hbWUKKyAgICAgICAgYnJvd3Nl cl9uYW1lID0gYnJvd3NlcgorICAgICAgICAjIEdldCBicm93c2VyIHZlcnNpb24KKyAgICAgICAg YnJvd3Nlcl92ZXJzaW9uID0gZ2V0X2Jyb3dzZXJfdmVyc2lvbihicm93c2VyLCBleGVjdXRhYmxl X3BhdGgpCisgICAgICAgIHByaW50KAorICAgICAgICAgICAgIiBCcm93c2VyIHZlcnNpb24gZm9y IHswfSBpcyB7MX0gaW4gY3VycmVudCBleGVjdXRhYmxlIHBhdGggIi4KKyAgICAgICAgICAgIGZv cm1hdChicm93c2VyX25hbWUsIGJyb3dzZXJfdmVyc2lvbikpCisKKyAgICAgICAgIyBEb3dubG9h ZCB2bmMgYnJvd3NlciBpbWFnZS4KKyAgICAgICAgZG93bmxvYWRfbmV3X2ltYWdlID0gY2hlY2tf YW5kX2Rvd25sb2FkX3ZuY19icm93c2VyX2ltYWdlKAorICAgICAgICAgICAgYnJvd3Nlcl9uYW1l LCBicm93c2VyX3ZlcnNpb24pCisKKyAgICAgICAgIyBJZiBicm93c2VyIHZuYyBpbWFnZSBpcyBh dmFpbGFibGUsIHRoZW4gZWRpdCBicm93c2Vycy5qc29uCisgICAgICAgIGlmIGRvd25sb2FkX25l d19pbWFnZToKKyAgICAgICAgICAgIGlmIGVkaXRfYnJvd3NlcnNfanNvbihicm93c2VyX25hbWUs IGJyb3dzZXJfdmVyc2lvbik6CisgICAgICAgICAgICAgICAgcHJpbnQoCisgICAgICAgICAgICAg ICAgICAgICIgRmlsZSAnYnJvd3NlcnMuanNvbicgaXMgdXBkYXRlZCBmb3IgezB9IC0gezF9IFxu Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX25hbWUsIGJyb3dzZXJf dmVyc2lvbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KAorICAg ICAgICAgICAgICAgICAgICAiIEZpbGUgJ2Jyb3dzZXJzLmpzb24nIGNhbiBOT1QgYmUgdXBkYXRl ZCBmb3IgezB9IC0gezF9IFxuIgorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGJyb3dzZXJf bmFtZSwgYnJvd3Nlcl92ZXJzaW9uKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50 KCIgQnJvd3NlciBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIGZvciB7MH0sIHsxfSIuZm9ybWF0KAor ICAgICAgICAgICAgICAgIGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92ZXJzaW9uKSkKKworIyBSZWxv YWQgc2VsZW5vaWQgY29uZmlndXJhdGlvbgoraWYgcmVsb2FkX3NlbGVub2lkX2NvbmZpZygpOgor ICAgIHByaW50KAorICAgICAgICAiKioqKiogVXBkYXRlZCAnezB9JyBmb3IgbmV3IGJyb3dzZXIg dmVyc2lvbnMuKioqKioiLmZvcm1hdChmaWxlX3BhdGgpKQpkaWZmIC0tZ2l0IGEvd2ViL2NvbmZp Zy5weSBiL3dlYi9jb25maWcucHkKaW5kZXggN2Y3NGE3ZC4uZDA1YWEwNCAxMDA2NDQKLS0tIGEv d2ViL2NvbmZpZy5weQorKysgYi93ZWIvY29uZmlnLnB5CkBAIC01NjIsNiArNTYyLDEwIEBAIHRy eToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBwYXNzCiAKKyMgT3ZlcnJpZGUgREVGQVVMVF9T RVJWRSB2YWx1ZSBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlLgoraWYgJ1BHQURNSU5fQ09ORklH X0RFRkFVTFRfU0VSVkVSJyBpbiBvcy5lbnZpcm9uOgorICAgIERFRkFVTFRfU0VSVkVSID0gb3Mu ZW52aXJvblsnUEdBRE1JTl9DT05GSUdfREVGQVVMVF9TRVJWRVInXQorCiAjIERpc2FibGUgVVNF Ul9JTkFDVElWSVRZX1RJTUVPVVQgd2hlbiBTRVJWRVJfTU9ERT1GYWxzZQogaWYgbm90IFNFUlZF Ul9NT0RFOgogICAgIFVTRVJfSU5BQ1RJVklUWV9USU1FT1VUID0gMApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25z dHJhaW50X2FkZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rl c3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9hZGQucHkKaW5kZXggZjEyNzA2My4uODg1MjZjYSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMv dGVzdF9pbmRleF9jb25zdHJhaW50X2FkZC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv aW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfYWRkLnB5CkBAIC00 NCwzMSArNDQsMzAgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50QWRkVGVzdENhc2UoQmFzZVRlc3RH ZW5lcmF0b3IpOgogICAgICAgICAgZGljdCh1cmw9Jy9icm93c2VyL3VuaXF1ZV9jb25zdHJhaW50 L29iai8nLCBkYXRhPXVuaXF1ZV9rZXlfZGF0YSkpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9k Ci0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmRiX25hbWUgPSBwYXJlbnRf bm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCisgICAgZGVmIHNldFVwKHNlbGYp OgorICAgICAgICBzZWxmLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0x XVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2No ZW1hIl1bLTFdCi0gICAgICAgIGNscy5zZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lk Il0KLSAgICAgICAgY2xzLmRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lkIl0KLSAgICAgICAgZGJf Y29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShjbHMsIHV0aWxzLlNFUlZFUl9H Uk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bHMuc2VydmVyX2lkLCBjbHMuZGJfaWQpCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2NoZW1h X2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJf aWQiXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNl bGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKICAgICAgICAgaWYg bm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRkIGEgIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJpbmRleCBjb25zdHJhaW50KHByaW1hcnkga2V5IG9yIHVuaXF1 ZSBrZXkpLiIpCi0gICAgICAgIGNscy5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lk Il0KLSAgICAgICAgY2xzLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0K LSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKGNs cy5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSkKKyAgICAgICAgc2VsZi5zY2hlbWFf aWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9 IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNj aGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2No ZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAgICBy YWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgaW5kZXgg IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50KHByaW1hcnkga2V5IG9y IHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy50YWJsZV9uYW1lID0gInRhYmxlX2luZGV4Y29u c3RyYWludF8lcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0cih1dWlkLnV1aWQ0 KCkpWzE6OF0pCi0gICAgICAgIGNscy50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFi bGUoY2xzLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbHMuc2NoZW1hX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRhYmxlX25hbWUpCisgICAgICAgIHNlbGYudGFi bGVfbmFtZSA9ICJ0YWJsZV9pbmRleGNvbnN0cmFpbnRfJXMiICUgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKKyAgICAgICAgc2VsZi50YWJsZV9p ZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFf bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gd2lsbCBhZGQgaW5kZXggY29uc3RyYWludChwcmltYXJ5IGtleSBvciB1bmlx dWUga2V5KQpAQCAtODEsMTAgKzgwLDkgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50QWRkVGVzdENh c2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pz b24nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw KQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICBk ZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKLSAg ICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShjbHMsIGNscy5zZXJ2ZXJf aWQsIGNscy5kYl9pZCkKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFz ZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKIAogCiBjbGFzcyBDb25zdHJhaW50 c1VzaW5nSW5kZXhBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CkBAIC0xMTcsMzAgKzEx NSwyOCBAQCBjbGFzcyBDb25zdHJhaW50c1VzaW5nSW5kZXhBZGRUZXN0Q2FzZShCYXNlVGVzdEdl bmVyYXRvcik6CiAgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdW5pcXVlX2NvbnN0cmFpbnQv b2JqLycsIGRhdGE9dW5pcXVlX2tleV9kYXRhKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QK LSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMuZGJfbmFtZSA9IHBhcmVudF9u b2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICBkZWYgc2V0VXAoc2VsZik6 CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFd WyJkYl9uYW1lIl0KICAgICAgICAgc2NoZW1hX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hl bWEiXVstMV0KLSAgICAgICAgY2xzLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJzZXJ2ZXJfaWQi XQotICAgICAgICBjbHMuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQotICAgICAgICBkYl9j b24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKGNscywgdXRpbHMuU0VSVkVSX0dS T1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs cy5zZXJ2ZXJfaWQsIGNscy5kYl9pZCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBzY2hlbWFf aW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9p ZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2Vs ZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQogICAgICAgICBpZiBu b3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0 aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgYSAiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnQgdXNpbmcgaW5kZXguIikKLSAgICAgICAgY2xz LnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfaWQiXQotICAgICAgICBjbHMuc2NoZW1h X25hbWUgPSBzY2hlbWFfaW5mb1sic2NoZW1hX25hbWUiXQotICAgICAgICBzY2hlbWFfcmVzcG9u c2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoY2xzLnNlcnZlciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5kYl9uYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz LnNjaGVtYV9uYW1lKQorICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hl bWFfaWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9u YW1lIl0KKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hl bWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkKICAgICAgICAgaWYg bm90IHNjaGVtYV9yZXNwb25zZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQg bm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgYSBpbmRleCAiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImNvbnN0cmFpbnQocHJpbWFyeSBrZXkgb3IgdW5pcXVlIGtleSkuIikKLSAgICAg ICAgY2xzLnRhYmxlX25hbWUgPSAidGFibGVfY29uc3RyYWludF8lcyIgJSAoc3RyKHV1aWQudXVp ZDQoKSlbMTo4XSkKLSAgICAgICAgY2xzLnRhYmxlX2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90 YWJsZShjbHMuc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi50 YWJsZV9uYW1lID0gInRhYmxlX2NvbnN0cmFpbnRfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6 OF0pCisgICAgICAgIHNlbGYudGFibGVfaWQgPSB0YWJsZXNfdXRpbHMuY3JlYXRlX3RhYmxlKHNl bGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVfbmFtZSkKIAogICAgIGRl ZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIGluZGV4 IGNvbnN0cmFpbnQocHJpbWFyeSBrZXkgb3IgdW5pcXVlIGtleSkKQEAgLTE1OCw3ICsxNTQsNiBA QCBjbGFzcyBDb25zdHJhaW50c1VzaW5nSW5kZXhBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCiAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgIGRlZiB0ZWFyRG93bihzZWxmKToK ICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQotICAgICAgICBkYXRhYmFzZV91dGls cy5kaXNjb25uZWN0X2RhdGFiYXNlKGNscywgY2xzLnNlcnZlcl9pZCwgY2xzLmRiX2lkKQorICAg ICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVy X2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4 X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25zdHJhaW50X2RlbGV0ZS5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rlc3RzL3Rlc3RfaW5kZXhfY29uc3Ry YWludF9kZWxldGUucHkKaW5kZXggN2VlYTVlOS4uZjM1YTAwYiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25zdHJh aW50X2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWlu dC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfZGVsZXRlLnB5CkBAIC0zOCwzMSArMzgsMzAg QEAgY2xhc3MgSW5kZXhDb25zdHJhaW50RGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3Ip OgogICAgICAgICAgICAgICB0eXBlPSJVTklRVUUiKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMuZGJfbmFtZSA9IHBhcmVu dF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICBkZWYgc2V0VXAoc2Vs Zik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1b LTFdWyJkYl9uYW1lIl0KICAgICAgICAgc2NoZW1hX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJz Y2hlbWEiXVstMV0KLSAgICAgICAgY2xzLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJzZXJ2ZXJf aWQiXQotICAgICAgICBjbHMuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQotICAgICAgICBk Yl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKGNscywgdXRpbHMuU0VSVkVS X0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfaWQsIGNscy5kYl9pZCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBzY2hl bWFfaW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJk Yl9pZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uo c2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQogICAgICAgICBp ZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgogICAgICAgICAgICAgcmFpc2UgRXhj ZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgYSAiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImluZGV4IGNvbnN0cmFpbnQocHJpbWFyeSBrZXkgb3IgdW5p cXVlIGtleSkuIikKLSAgICAgICAgY2xzLnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFf aWQiXQotICAgICAgICBjbHMuc2NoZW1hX25hbWUgPSBzY2hlbWFfaW5mb1sic2NoZW1hX25hbWUi XQotICAgICAgICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMo Y2xzLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2xzLnNjaGVtYV9uYW1lKQorICAgICAgICBzZWxmLnNjaGVt YV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfaWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1l ID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0g c2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z Y2hlbWFfbmFtZSkKICAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKICAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgYSBpbmRl eCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnQocHJpbWFyeSBrZXkg b3IgdW5pcXVlIGtleSkuIikKLSAgICAgICAgY2xzLnRhYmxlX25hbWUgPSAidGFibGVfaW5kZXhj b25zdHJhaW50XyVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHV1aWQudXVp ZDQoKSlbMTo4XSkKLSAgICAgICAgY2xzLnRhYmxlX2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90 YWJsZShjbHMuc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi50 YWJsZV9uYW1lID0gInRhYmxlX2luZGV4Y29uc3RyYWludF8lcyIgJSBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChzdHIodXVpZC51dWlkNCgpKVsxOjhdKQorICAgICAgICBzZWxmLnRhYmxl X2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90YWJsZShzZWxmLnNlcnZlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjaGVt YV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnRhYmxlX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBpbmRleCBjb25zdHJhaW50KHByaW1hcnkga2V5IG9y CkBAIC04MSw3ICs4MCw2IEBAIGNsYXNzIEluZGV4Q29uc3RyYWludERlbGV0ZVRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRl YXJEb3duQ2xhc3MoY2xzKToKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICMgRGlz Y29ubmVjdCB0aGUgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9k YXRhYmFzZShjbHMsIGNscy5zZXJ2ZXJfaWQsIGNscy5kYl9pZCkKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9p ZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rl c3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9nZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv aW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfZ2V0LnB5CmluZGV4 IGMwOGMyYWMuLmY4MzhhMmYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRl eF9jb25zdHJhaW50L3Rlc3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9nZXQucHkKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25z dHJhaW50X2dldC5weQpAQCAtMzgsMzEgKzM4LDMwIEBAIGNsYXNzIEluZGV4Q29uc3RyYWludEdl dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgdHlwZT0iVU5JUVVF IikpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToK LSAgICAgICAgY2xzLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsi ZGJfbmFtZSJdCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUgPSBw YXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVt YV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIGNscy5zZXJ2 ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lkIl0KLSAgICAgICAgY2xzLmRiX2lkID0gc2No ZW1hX2luZm9bImRiX2lkIl0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVj dF9kYXRhYmFzZShjbHMsIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkLCBjbHMuZGJfaWQpCisg ICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAg IHNlbGYuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRh YmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl cl9pZCwgc2VsZi5kYl9pZCkKICAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0 ZWQiXToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8g ZGF0YWJhc2UgdG8gYWRkIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBj b25zdHJhaW50KHByaW1hcnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy5zY2hl bWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KLSAgICAgICAgY2xzLnNjaGVtYV9uYW1l ID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KLSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0g c2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKGNscy5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zY2hl bWFfbmFtZSkKKyAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lk Il0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJd CisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhz ZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBz Y2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBm aW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgaW5kZXggIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjb25zdHJhaW50KHByaW1hcnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNs cy50YWJsZV9uYW1lID0gInRhYmxlX2luZGV4Y29uc3RyYWludF8lcyIgJSBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCi0gICAgICAgIGNscy50YWJs ZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoY2xzLnNlcnZlciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2NoZW1hX25h bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz LnRhYmxlX25hbWUpCisgICAgICAgIHNlbGYudGFibGVfbmFtZSA9ICJ0YWJsZV9pbmRleGNvbnN0 cmFpbnRfJXMiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHV1aWQudXVpZDQo KSlbMTo4XSkKKyAgICAgICAgc2VsZi50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFi bGUoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVm IHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUg aW5kZXggY29uc3RyYWludChwcmltYXJ5IGtleSBvcgpAQCAtODEsNyArODAsNiBAQCBjbGFzcyBJ bmRleENvbnN0cmFpbnRHZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICkK ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKIAot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgZGVmIHRl YXJEb3duKHNlbGYpOgogICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCi0gICAgICAg IGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2UoY2xzLCBjbHMuc2VydmVyX2lkLCBj bHMuZGJfaWQpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2Vs Ziwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfcHV0 LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9p bmRleF9jb25zdHJhaW50X3B1dC5weQppbmRleCA4NzI4OWE2Li42YmRmNzAzIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4 X2NvbnN0cmFpbnRfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25z dHJhaW50L3Rlc3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9wdXQucHkKQEAgLTQwLDMxICs0MCwz MCBAQCBjbGFzcyBJbmRleENvbnN0cmFpbnRVcGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICAgICAgIHR5cGU9IlVOSVFVRSIsIGRhdGE9ZGF0YSkpCiAgICAgXQogCi0g ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmRi X25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCisgICAg ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0 WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50 X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIGNscy5zZXJ2ZXJfaWQgPSBzY2hlbWFf aW5mb1sic2VydmVyX2lkIl0KLSAgICAgICAgY2xzLmRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lk Il0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShjbHMs IHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkLCBjbHMuZGJfaWQpCisgICAgICAgIHNlbGYuc2Vy dmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBz Y2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25u ZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9p ZCkKICAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKICAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRk IGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBjb25zdHJhaW50KHByaW1h cnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy5zY2hlbWFfaWQgPSBzY2hlbWFf aW5mb1sic2NoZW1hX2lkIl0KLSAgICAgICAgY2xzLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9b InNjaGVtYV9uYW1lIl0KLSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZl cmlmeV9zY2hlbWFzKGNscy5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSkKKyAgICAg ICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgc2Vs Zi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNjaGVt YV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6 CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEg dG8gYWRkIGEgaW5kZXggIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50 KHByaW1hcnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy50YWJsZV9uYW1lID0g InRhYmxlX2luZGV4Y29uc3RyYWludF8lcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCi0gICAgICAgIGNscy50YWJsZV9pZCA9IHRhYmxlc191 dGlscy5jcmVhdGVfdGFibGUoY2xzLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2NoZW1hX25hbWUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRhYmxlX25hbWUpCisg ICAgICAgIHNlbGYudGFibGVfbmFtZSA9ICJ0YWJsZV9pbmRleGNvbnN0cmFpbnRfJXMiICUgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKKyAgICAg ICAgc2VsZi50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6 CiAgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgaW5kZXggY29uc3RyYWludChw cmltYXJ5IGtleSBvcgpAQCAtODQsNyArODMsNiBAQCBjbGFzcyBJbmRleENvbnN0cmFpbnRVcGRh dGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICBmb2xsb3dfcmVkaXJl Y3RzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFz ZQotICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKGNscywgY2xzLnNl cnZlcl9pZCwgY2xzLmRiX2lkKQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2Rh dGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfcGFyYW1ldGVycy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90 ZXN0X3RhYmxlX3BhcmFtZXRlcnMucHkKaW5kZXggNGJkNTlmNS4uZmFlMDk0YiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfcGFyYW1ldGVycy5weQorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVzdHMvdGVzdF90YWJsZV9wYXJhbWV0ZXJzLnB5CkBAIC0xMjUsOCArMTI1LDkgQEAgY2xh c3MgVGFibGVVcGRhdGVQYXJhbWV0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAg ICAgICApLAogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNl bGYpOgorICAgIHRhYmxlX25hbWUgPSAidGVzdF90YWJsZV9wYXJhbWV0ZXJzXyVzIiAlIChzdHIo dXVpZC51dWlkNCgpKVsxOjhdKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxm LmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAg ICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCiAgICAg ICAgIHNlbGYuc2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCkBAIC0xNDIsMTIg KzE0MywxNCBAQCBjbGFzcyBUYWJsZVVwZGF0ZVBhcmFtZXRlclRlc3RDYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6 CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEg dG8gYWRkIGEgdGFibGUuIikKLSAgICAgICAgc2VsZi50YWJsZV9uYW1lID0gInRlc3RfdGFibGVf cGFyYW1ldGVyc18lcyIgJSAoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKIAotICAgICAgICBzZWxm LnRhYmxlX2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90YWJsZSgKLSAgICAgICAgICAgIHNlbGYu c2VydmVyLCBzZWxmLmRiX25hbWUsCi0gICAgICAgICAgICBzZWxmLnNjaGVtYV9uYW1lLAotICAg ICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQorICAgICAgICBzZWxmLnRhYmxlX2lkID0gdGFibGVz X3V0aWxzLmdldF90YWJsZV9pZChzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX25hbWUp CisgICAgICAgIGlmIHNlbGYudGFibGVfaWQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYudGFi bGVfaWQgPSB0YWJsZXNfdXRpbHMuY3JlYXRlX3RhYmxlKAorICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSwK KyAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxm KToKICAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGFkZGVkIHRhYmxlIHVuZGVy IHNjaGVtYSBub2RlLiIiIgpAQCAtMTY3LDcgKzE3MCw2IEBAIGNsYXNzIFRhYmxlVXBkYXRlUGFy YW1ldGVyVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICBAY2xhc3NtZXRob2QKLSAg ICBkZWYgdGVhckRvd25DbGFzcyhzZWxmKToKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAg ICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKICAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlz Y29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy91dGlscy5w eQppbmRleCAwYTI5NjNhLi44ZTVmNjY1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdXRp bHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3V0aWxzLnB5CkBAIC00ODMsMyArNDgzLDI2IEBA IGRlZiBnZXRfaGFzaF9wYXJ0aXRpb25zX2RhdGEoZGF0YSk6CiAgICAgICAgICAgfV0KICAgICBk YXRhWydwYXJ0aXRpb25fa2V5cyddID0gXAogICAgICAgICBbeydrZXlfdHlwZSc6ICdjb2x1bW4n LCAncHRfY29sdW1uJzogJ2VtcG5vJ31dCisKKworZGVmIGdldF90YWJsZV9pZChzZXJ2ZXIsIGRi X25hbWUsIHRhYmxlX25hbWUpOgorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IHV0aWxz LmdldF9kYl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydz c2xtb2RlJ10pCisgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAgICAg ICAgcGdfY3Vyc29yLmV4ZWN1dGUoInNlbGVjdCBvaWQgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxu YW1lPSclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZSkKKyAgICAg ICAgdGFibGUgPSBwZ19jdXJzb3IuZmV0Y2hvbmUoKQorICAgICAgICBpZiB0YWJsZToKKyAgICAg ICAgICAgIHRhYmxlX2lkID0gdGFibGVbMF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRh YmxlX2lkID0gTm9uZQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgcmV0dXJu IHRhYmxlX2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50 X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy90ZXN0cy90ZXN0X212aWV3c19wYXJhbWV0ZXJzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVzdHMvdGVzdF9t dmlld3NfcGFyYW1ldGVycy5weQppbmRleCAxNzdhYTIxLi45ZjlhMzg5IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZXN0cy90ZXN0X212aWV3c19wYXJhbWV0ZXJzLnB5CisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl c3RzL3Rlc3RfbXZpZXdzX3BhcmFtZXRlcnMucHkKQEAgLTEyNSw4ICsxMjUsOSBAQCBjbGFzcyBN Vmlld3NVcGRhdGVQYXJhbWV0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg ICApLAogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYp OgorICAgIG1fdmlld19uYW1lID0gInRlc3RfbXZpZXdfcHV0XyVzIiAlIChzdHIodXVpZC51dWlk NCgpKVsxOjhdKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRiX25hbWUg PSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAgICAgIHNj aGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCiAgICAgICAgIHNlbGYu c2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCkBAIC0xNTAsMTcgKzE1MSwxOSBA QCBjbGFzcyBNVmlld3NVcGRhdGVQYXJhbWV0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gdXBkYXRlIGEgbXZpZXcuIikKIAot ICAgICAgICBzZWxmLm1fdmlld19uYW1lID0gInRlc3RfbXZpZXdfcHV0XyVzIiAlIChzdHIodXVp ZC51dWlkNCgpKVsxOjhdKQotICAgICAgICBtX3ZpZXdfc3FsID0gIkNSRUFURSBNQVRFUklBTEla RUQgVklFVyAlcy4lcyBUQUJMRVNQQUNFIHBnX2RlZmF1bHQgIiBcCi0gICAgICAgICAgICAgICAg ICAgICAiQVMgU0VMRUNUICd0ZXN0X3BnYWRtaW4nIFdJVEggTk8gREFUQTtBTFRFUiBUQUJMRSAi IFwKLSAgICAgICAgICAgICAgICAgICAgICIlcy4lcyBPV05FUiBUTyAlcyIKLQotICAgICAgICBz ZWxmLm1fdmlld19pZCA9IHZpZXdzX3V0aWxzLmNyZWF0ZV92aWV3KHNlbGYuc2VydmVyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnNjaGVtYV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1fdmlld19zcWwsCisgICAgICAgIHNlbGYubV92aWV3X2lkID0gdmlld3NfdXRpbHMu Z2V0X3ZpZXdfaWQoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1fdmlld19uYW1lKQogCisgICAg ICAgIGlmIHNlbGYubV92aWV3X2lkIGlzIE5vbmU6CisgICAgICAgICAgICBtX3ZpZXdfc3FsID0g IkNSRUFURSBNQVRFUklBTElaRUQgVklFVyAlcy4lcyBUQUJMRVNQQUNFICIgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICJwZ19kZWZhdWx0IEFTIFNFTEVDVCAndGVzdF9wZ2FkbWluJyBXSVRI IE5PICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICJEQVRBO0FMVEVSIFRBQkxFICVzLiVz IE9XTkVSIFRPICVzIgorICAgICAgICAgICAgc2VsZi5tX3ZpZXdfaWQgPSB2aWV3c191dGlscy5j cmVhdGVfdmlldyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYV9uYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZpZXdfc3Fs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLm1fdmlld19uYW1lKQorCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIHZpZXcvbXZpZXcgdW5kZXIgc2NoZW1hIG5vZGUu IiIiCiAgICAgICAgIG12aWV3X3Jlc3BvbnNlID0gdmlld3NfdXRpbHMudmVyaWZ5X3ZpZXcoc2Vs Zi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKQEAgLTE4MCw3ICsxODMsNiBAQCBjbGFzcyBNVmlld3NV cGRhdGVQYXJhbWV0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKIAotICAgIEBjbGFzc21l dGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgorICAgIGRlZiB0ZWFyRG93bihzZWxm KToKICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQogICAgICAgICBkYXRhYmFzZV91 dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lk KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVzdHMvdGVzdF9tdmlld3NfcmVmcmVzaC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3Rlc3RzL3Rlc3RfbXZpZXdzX3JlZnJlc2gucHkKaW5kZXggYjZjMGJhZC4uM2I0MDU1 ZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVzdHMvdGVzdF9tdmlld3NfcmVmcmVzaC5weQorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZXN0cy90ZXN0X212aWV3c19yZWZyZXNoLnB5CkBAIC00OCw4ICs0OCw3IEBA IGNsYXNzIE1WaWV3c1VwZGF0ZVBhcmFtZXRlclRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK ICAgICAgICAgICksCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xh c3Moc2VsZik6CisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRiX25hbWUgPSBw YXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVt YV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCiAgICAgICAgIHNlbGYuc2Vy dmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCkBAIC0xNDMsNyArMTQyLDYgQEAgY2xh c3MgTVZpZXdzVXBkYXRlUGFyYW1ldGVyVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAg ICAgICAgICAgICAgICMgT24gc3VjY2VzcyB3ZSBnZXQgam9iX2lkIGZyb20gc2VydmVyCiAgICAg ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdqb2JfaWQnIGluIHJlc3BvbnNlLmpzb25bJ2Rh dGEnXSkKIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFz ZQogICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYu c2VydmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVzdHMvdXRpbHMu cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZXN0cy91dGlscy5weQppbmRleCBkNjE4MGM0Li43NjE5ZWU2IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZXN0cy91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZXN0cy91dGls cy5weQpAQCAtODYsMyArODYsMjggQEAgZGVmIHZlcmlmeV92aWV3KHNlcnZlciwgZGJfbmFtZSwg dmlld19uYW1lKToKICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICB0cmFjZWJhY2sucHJp bnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgcmFpc2UKKworCitkZWYgZ2V0X3ZpZXdf aWQoc2VydmVyLCBkYl9uYW1lLCB2aWV3X25hbWUpOgorICAgIHRyeToKKyAgICAgICAgY29ubmVj dGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKGRiX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3Jk J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJb J2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZlclsncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmVyWydzc2xtb2RlJ10pCisgICAgICAgIG9sZF9pc29sYXRpb25fbGV2ZWwgPSBjb25u ZWN0aW9uLmlzb2xhdGlvbl9sZXZlbAorICAgICAgICBjb25uZWN0aW9uLnNldF9pc29sYXRpb25f bGV2ZWwoMCkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAg ICAjIEdldCAnb2lkJyBmcm9tIG5ld2x5IGNyZWF0ZWQgdmlldworICAgICAgICBwZ19jdXJzb3Iu ZXhlY3V0ZSgic2VsZWN0IG9pZCBmcm9tIHBnX2NsYXNzIHdoZXJlIHJlbG5hbWU9JyVzJyIgJQor ICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3X25hbWUpCisgICAgICAgIHZpZXcgPSBwZ19j dXJzb3IuZmV0Y2hvbmUoKQorICAgICAgICB2aWV3X2lkID0gTm9uZQorICAgICAgICBpZiB2aWV3 OgorICAgICAgICAgICAgdmlld19pZCA9IHZpZXdbMF0KKyAgICAgICAgY29ubmVjdGlvbi5jbG9z ZSgpCisgICAgICAgIHJldHVybiB2aWV3X2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAg ICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHJhaXNlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2NvcHlfc2VsZWN0ZWRfcXVlcnlf cmVzdWx0c19mZWF0dXJlX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2NvcHlf c2VsZWN0ZWRfcXVlcnlfcmVzdWx0c19mZWF0dXJlX3Rlc3QucHkKaW5kZXggNzA5MWZmYS4uMWYz YmQ2NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9jb3B5X3NlbGVjdGVk X3F1ZXJ5X3Jlc3VsdHNfZmVhdHVyZV90ZXN0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVf dGVzdHMvY29weV9zZWxlY3RlZF9xdWVyeV9yZXN1bHRzX2ZlYXR1cmVfdGVzdC5weQpAQCAtOCw3 ICs4LDYgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJp bnRfZnVuY3Rpb24KLWltcG9ydCBweXBlcmNsaXAKIGltcG9ydCByYW5kb20KIAogZnJvbSBzZWxl bml1bS53ZWJkcml2ZXIgaW1wb3J0IEFjdGlvbkNoYWlucwpAQCAtNjAsOCArNTksMTggQEAgY2xh c3MgQ29weVNlbGVjdGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToK ICAgICAgICAgc2VsZi5fbW91c2V1cF9vdXRzaWRlX2dyaWRfc3RpbGxfbWFrZXNfYV9zZWxlY3Rp b24oKQogICAgICAgICBzZWxmLl9jb3BpZXNfcm93c193aXRoX2hlYWRlcigpCiAKKyAgICBkZWYg cGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hfcGFkKHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2UuZHJp dmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQorICAgICAgICBzZWxmLnBhZ2UuZHJpdmVy LnN3aXRjaF90b19mcmFtZSgKKyAgICAgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVt ZW50X2J5X3RhZ19uYW1lKCJpZnJhbWUiKSkKKyAgICAgICAgc2NyYXRjaF9wYWRfZWxlID0gc2Vs Zi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKAorICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRv cnMuc2NyYXRjaF9wYWRfY3NzKQorICAgICAgICBzZWxmLnBhZ2UucGFzdGVfdmFsdWVzKHNjcmF0 Y2hfcGFkX2VsZSkKKyAgICAgICAgY2xpcGJvYXJkX3RleHQgPSBzY3JhdGNoX3BhZF9lbGUuZ2V0 X2F0dHJpYnV0ZSgidmFsdWUiKQorICAgICAgICBzY3JhdGNoX3BhZF9lbGUuY2xlYXIoKQorICAg ICAgICByZXR1cm4gY2xpcGJvYXJkX3RleHQKKwogICAgIGRlZiBfY29waWVzX3Jvd3Moc2VsZik6 Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKICAgICAg ICAgZmlyc3Rfcm93ID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCiAgICAgICAgICAgICBRdWVy eVRvb2xMb2NhdG9ycy5vdXRwdXRfcm93X3hwYXRoLmZvcm1hdCgxKSkKICAgICAgICAgZmlyc3Rf cm93LmNsaWNrKCkKQEAgLTcwLDE0ICs3OSwxNCBAQCBjbGFzcyBDb3B5U2VsZWN0ZWRRdWVyeVJl c3VsdHNGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICAgICAgUXVlcnlUb29s TG9jYXRvcnMuY29weV9idXR0b25fY3NzKQogICAgICAgICBjb3B5X2J1dHRvbi5jbGljaygpCiAK KyAgICAgICAgY2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190b19zY3JhdGNoX3Bh ZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyJTb21lLU5hbWUiXHQ2XHQic29tZSBpbmZv IicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHlwZXJjbGlwLnBhc3RlKCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkX3RleHQpCiAKICAgICBkZWYgX2NvcGllc19yb3dz X3dpdGhfaGVhZGVyKHNlbGYpOgogICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0 b3IoJyNidG4tY29weS1yb3ctZHJvcGRvd24nKS5jbGljaygpCiAgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X2Nzc19zZWxlY3RvcignYSNidG4tY29weS13aXRoLWhlYWRlcicpLmNsaWNrKCkKIAot ICAgICAgICBweXBlcmNsaXAuY29weSgib2xkIGNsaXBib2FyZCBjb250ZW50cyIpCiAgICAgICAg IHNlbGVjdF9hbGwgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKICAgICAgICAgICAgIFF1ZXJ5 VG9vbExvY2F0b3JzLnNlbGVjdF9hbGxfY29sdW1uKQogICAgICAgICBzZWxlY3RfYWxsLmNsaWNr KCkKQEAgLTg2LDEzICs5NSwxNCBAQCBjbGFzcyBDb3B5U2VsZWN0ZWRRdWVyeVJlc3VsdHNGZWF0 dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRvcnMu Y29weV9idXR0b25fY3NzKQogICAgICAgICBjb3B5X2J1dHRvbi5jbGljaygpCiAKKyAgICAgICAg Y2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190b19zY3JhdGNoX3BhZCgpCisKICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiJcInNvbWVfY29sdW1uIlx0InZhbHVlIlx0ImRldGFp bHMiCiBcIlNvbWUtTmFtZSJcdDZcdCJzb21lIGluZm8iCiBcIlNvbWUtT3RoZXItTmFtZSJcdDIy XHQic29tZSBvdGhlciBpbmZvIgotXCJZZXQtQW5vdGhlci1OYW1lIlx0MTRcdCJjb29sIGluZm9c IiIiIiwgcHlwZXJjbGlwLnBhc3RlKCkpCitcIllldC1Bbm90aGVyLU5hbWUiXHQxNFx0ImNvb2wg aW5mb1wiIiIiLCBjbGlwYm9hcmRfdGV4dCkKIAogICAgIGRlZiBfY29waWVzX2NvbHVtbnMoc2Vs Zik6Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKICAg ICAgICAgY29sdW1uID0gc2VsZi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKAogICAgICAgICAg ICAgUXVlcnlUb29sTG9jYXRvcnMub3V0cHV0X2NvbHVtbl9oZWFkZXJfY3NzLmZvcm1hdCgnc29t ZV9jb2x1bW4nKSkKICAgICAgICAgY29sdW1uLmNsaWNrKCkKQEAgLTEwMSwxNCArMTExLDE1IEBA IGNsYXNzIENvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVz dCk6CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5jb3B5X2J1dHRvbl9jc3MpCiAgICAg ICAgIGNvcHlfYnV0dG9uLmNsaWNrKCkKIAorICAgICAgICBjbGlwYm9hcmRfdGV4dCA9IHNlbGYu cGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hfcGFkKCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFs KAogICAgICAgICAgICAgIiIiXCJTb21lLU5hbWUiCiAiU29tZS1PdGhlci1OYW1lIgogIllldC1B bm90aGVyLU5hbWVcIiIiIiwKLSAgICAgICAgICAgIHB5cGVyY2xpcC5wYXN0ZSgpKQorICAgICAg ICAgICAgY2xpcGJvYXJkX3RleHQpCiAKICAgICBkZWYgX2NvcGllc19yb3dfdXNpbmdfa2V5Ym9h cmRfc2hvcnRjdXQoc2VsZik6Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJk IGNvbnRlbnRzIikKICAgICAgICAgZmlyc3Rfcm93ID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgo CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5vdXRwdXRfcm93X3hwYXRoLmZvcm1hdCgx KSkKICAgICAgICAgZmlyc3Rfcm93LmNsaWNrKCkKQEAgLTExNiwxMSArMTI3LDEyIEBAIGNsYXNz IENvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAg ICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLnBhZ2UuZHJpdmVyKS5rZXlfZG93bigKICAgICAgICAg ICAgIEtleXMuQ09OVFJPTCkuc2VuZF9rZXlzKCdjJykua2V5X3VwKEtleXMuQ09OVFJPTCkucGVy Zm9ybSgpCiAKKyAgICAgICAgY2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190b19z Y3JhdGNoX3BhZCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnIlNvbWUtTmFtZSJcdDZc dCJzb21lIGluZm8iJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBweXBlcmNsaXAucGFzdGUo KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmRfdGV4dCkKIAogICAgIGRlZiBf Y29waWVzX2NvbHVtbl91c2luZ19rZXlib2FyZF9zaG9ydGN1dChzZWxmKToKLSAgICAgICAgcHlw ZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMiKQogICAgICAgICBjb2x1bW4gPSBz ZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCiAgICAgICAgICAgICBRdWVyeVRvb2xMb2Nh dG9ycy5vdXRwdXRfY29sdW1uX2hlYWRlcl9jc3MuZm9ybWF0KCdzb21lX2NvbHVtbicpKQogICAg ICAgICBjb2x1bW4uY2xpY2soKQpAQCAtMTI4LDE1ICsxNDAsMTUgQEAgY2xhc3MgQ29weVNlbGVj dGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgQWN0 aW9uQ2hhaW5zKHNlbGYucGFnZS5kcml2ZXIpLmtleV9kb3duKAogICAgICAgICAgICAgS2V5cy5D T05UUk9MKS5zZW5kX2tleXMoJ2MnKS5rZXlfdXAoS2V5cy5DT05UUk9MKS5wZXJmb3JtKCkKIAor ICAgICAgICBjbGlwYm9hcmRfdGV4dCA9IHNlbGYucGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hfcGFk KCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgIiIiXCJTb21lLU5h bWUiCiAiU29tZS1PdGhlci1OYW1lIgogIllldC1Bbm90aGVyLU5hbWVcIiIiIiwKLSAgICAgICAg ICAgIHB5cGVyY2xpcC5wYXN0ZSgpKQorICAgICAgICAgICAgY2xpcGJvYXJkX3RleHQpCiAKICAg ICBkZWYgX2NvcGllc19yZWN0YW5ndWxhcl9zZWxlY3Rpb24oc2VsZik6Ci0gICAgICAgIHB5cGVy Y2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKLQogICAgICAgICB0b3BfbGVmdF9j ZWxsID0gXAogICAgICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCiAgICAgICAgICAg ICAgICAgUXVlcnlUb29sTG9jYXRvcnMub3V0cHV0X2NvbHVtbl9kYXRhX3hwYXRoLgpAQCAtMTU0 LDEyICsxNjYsMTIgQEAgY2xhc3MgQ29weVNlbGVjdGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3Qo QmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgICAgIHNlbGYucGFnZS5kcml2ZXIKICAgICAgICAg KS5rZXlfZG93bihLZXlzLkNPTlRST0wpLnNlbmRfa2V5cygnYycpLmtleV91cChLZXlzLkNPTlRS T0wpLnBlcmZvcm0oKQogCisgICAgICAgIGNsaXBib2FyZF90ZXh0ID0gc2VsZi5wYXN0ZV92YWx1 ZXNfdG9fc2NyYXRjaF9wYWQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg ICAgICAnIlNvbWUtT3RoZXItTmFtZSJcdDIyXG4iWWV0LUFub3RoZXItTmFtZSJcdDE0JywgcHlw ZXJjbGlwLnBhc3RlKCkpCisgICAgICAgICAgICAnIlNvbWUtT3RoZXItTmFtZSJcdDIyXG4iWWV0 LUFub3RoZXItTmFtZSJcdDE0JywgY2xpcGJvYXJkX3RleHQpCiAKICAgICBkZWYgX3NoaWZ0X3Jl c2l6ZXNfcmVjdGFuZ3VsYXJfc2VsZWN0aW9uKHNlbGYpOgotICAgICAgICBweXBlcmNsaXAuY29w eSgib2xkIGNsaXBib2FyZCBjb250ZW50cyIpCi0KICAgICAgICAgdG9wX2xlZnRfY2VsbCA9IHNl bGYucGFnZS5maW5kX2J5X3hwYXRoKAogICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRvcnMub3V0 cHV0X2NvbHVtbl9kYXRhX3hwYXRoLgogICAgICAgICAgICAgZm9ybWF0KCdTb21lLU90aGVyLU5h bWUnKQpAQCAtMTgwLDEyICsxOTIsMTIgQEAgY2xhc3MgQ29weVNlbGVjdGVkUXVlcnlSZXN1bHRz RmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgICAgIEtleXMuQ09OVFJPTAog ICAgICAgICApLnNlbmRfa2V5cygnYycpLmtleV91cChLZXlzLkNPTlRST0wpLnBlcmZvcm0oKQog CisgICAgICAgIGNsaXBib2FyZF90ZXh0ID0gc2VsZi5wYXN0ZV92YWx1ZXNfdG9fc2NyYXRjaF9w YWQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIiXCJTb21lLU90aGVyLU5hbWUiXHQy Mlx0InNvbWUgb3RoZXIgaW5mbyIKLSJZZXQtQW5vdGhlci1OYW1lIlx0MTRcdCJjb29sIGluZm9c IiIiIiwgcHlwZXJjbGlwLnBhc3RlKCkpCisiWWV0LUFub3RoZXItTmFtZSJcdDE0XHQiY29vbCBp bmZvXCIiIiIsIGNsaXBib2FyZF90ZXh0KQogCiAgICAgZGVmIF9zaGlmdF9yZXNpemVzX2NvbHVt bl9zZWxlY3Rpb24oc2VsZik6Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJk IGNvbnRlbnRzIikKLQogICAgICAgICBjb2x1bW4gPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2Vs ZWN0b3IoCiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5vdXRwdXRfY29sdW1uX2hlYWRl cl9jc3MuZm9ybWF0KCd2YWx1ZScpCiAgICAgICAgICkKQEAgLTE5NywxMyArMjA5LDEzIEBAIGNs YXNzIENvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6 CiAgICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLnBhZ2UuZHJpdmVyKS5rZXlfZG93bigKICAgICAg ICAgICAgIEtleXMuQ09OVFJPTCkuc2VuZF9rZXlzKCdjJykua2V5X3VwKEtleXMuQ09OVFJPTCku cGVyZm9ybSgpCiAKKyAgICAgICAgY2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190 b19zY3JhdGNoX3BhZCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAg ICciU29tZS1OYW1lIlx0NlxuIlNvbWUtT3RoZXItTmFtZSJcdDIyXG4iWWV0LUFub3RoZXItTmFt ZSJcdDE0JywKLSAgICAgICAgICAgIHB5cGVyY2xpcC5wYXN0ZSgpKQorICAgICAgICAgICAgY2xp cGJvYXJkX3RleHQpCiAKICAgICBkZWYgX21vdXNldXBfb3V0c2lkZV9ncmlkX3N0aWxsX21ha2Vz X2Ffc2VsZWN0aW9uKHNlbGYpOgotICAgICAgICBweXBlcmNsaXAuY29weSgib2xkIGNsaXBib2Fy ZCBjb250ZW50cyIpCi0KICAgICAgICAgYm90dG9tX3JpZ2h0X2NlbGwgPSBzZWxmLnBhZ2UuZmlu ZF9ieV94cGF0aCgKICAgICAgICAgICAgIFF1ZXJ5VG9vbExvY2F0b3JzLm91dHB1dF9jb2x1bW5f ZGF0YV94cGF0aC5mb3JtYXQoJ2Nvb2wgaW5mbycpCiAgICAgICAgICkKQEAgLTIxOCw3ICsyMzAs OSBAQCBjbGFzcyBDb3B5U2VsZWN0ZWRRdWVyeVJlc3VsdHNGZWF0dXJlVGVzdChCYXNlRmVhdHVy ZVRlc3QpOgogICAgICAgICBBY3Rpb25DaGFpbnMoc2VsZi5wYWdlLmRyaXZlcikua2V5X2Rvd24o CiAgICAgICAgICAgICBLZXlzLkNPTlRST0wpLnNlbmRfa2V5cygnYycpLmtleV91cChLZXlzLkNP TlRST0wpLnBlcmZvcm0oKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyJjb29sIGluZm8iJywg cHlwZXJjbGlwLnBhc3RlKCkpCisgICAgICAgIGNsaXBib2FyZF90ZXh0ID0gc2VsZi5wYXN0ZV92 YWx1ZXNfdG9fc2NyYXRjaF9wYWQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyJjb29sIGlu Zm8iJywgY2xpcGJvYXJkX3RleHQpCiAKICAgICBkZWYgYWZ0ZXIoc2VsZik6CiAgICAgICAgIHNl bGYucGFnZS5jbG9zZV9xdWVyeV90b29sKCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvZmlsZV9tYW5hZ2VyX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L2ZpbGVfbWFuYWdlcl90ZXN0LnB5CmluZGV4IDZkMDEyODYuLjMzZjg2YWQgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvZmlsZV9tYW5hZ2VyX3Rlc3QucHkKKysrIGIvd2Vi L3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9maWxlX21hbmFnZXJfdGVzdC5weQpAQCAtMzgsNyArMzgs OCBAQCBjbGFzcyBDaGVja0ZpbGVNYW5hZ2VyRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToK IAogICAgICAgICBzZWxmLnBhZ2UuYWRkX3NlcnZlcihzZWxmLnNlcnZlcikKICAgICAgICAgc2Vs Zi53YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKLSAgICAgICAgc2Vs Zi5YU1NfRklMRSA9ICcvdG1wLzxpbWcgc3JjPXggb25tb3VzZW92ZXI9YWxlcnQoIjEiKT4uc3Fs JworICAgICAgICBzZWxmLlhTU19GSUxFID0gJy90bXAvPGltZyBzcmM9eCAnICsgc2VsZi5zZXJ2 ZXJbJ25hbWUnXVs6MTNdIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgJz1hbGVydCgiMSIp Pi5zcWwnCiAgICAgICAgICMgUmVtb3ZlIGFueSBwcmV2aW91cyBmaWxlCiAgICAgICAgIGlmIG9z LnBhdGguaXNmaWxlKHNlbGYuWFNTX0ZJTEUpOgogICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYu WFNTX0ZJTEUpCkBAIC02Nyw3ICs2OCw3IEBAIGNsYXNzIENoZWNrRmlsZU1hbmFnZXJGZWF0dXJl VGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICBzZWxmLnBhZ2Uub3Blbl9xdWVyeV90b29s KCkKIAogICAgIGRlZiBfY3JlYXRlX25ld19maWxlKHNlbGYpOgotICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV9jc3Nfc2VsZWN0b3IoUXVlcnlUb29sTG9jYXRvcnMuYnRuX3NhdmVfZmlsZSlcCisg ICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcihRdWVyeVRvb2xMb2NhdG9ycy5i dG5fc2F2ZV9maWxlKSBcCiAgICAgICAgICAgICAuY2xpY2soKQogICAgICAgICAjIFNldCB0aGUg WFNTIHZhbHVlIGluIGlucHV0CiAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3Rv cignLmNoYW5nZV9maWxlX3R5cGVzJykKQEAgLTExMiw4ICsxMTMsOCBAQCBjbGFzcyBDaGVja0Zp bGVNYW5hZ2VyRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgc2VsZi5wYWdl LndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKICAg ICAgICAgc2VsZi5fY2hlY2tfZXNjYXBlZF9jaGFyYWN0ZXJzKAogICAgICAgICAgICAgY29udGVu dHMsCi0gICAgICAgICAgICAnJmx0O2ltZyBzcmM9eCBvbm1vdXNlb3Zlcj1hbGVydCgiMSIpJmd0 Oy5zcWwnLAotICAgICAgICAgICAgJ0ZpbGUgbWFuYWdlcicKKyAgICAgICAgICAgICcmbHQ7aW1n IHNyYz14ICcgKyBzZWxmLnNlcnZlclsnbmFtZSddWzoxM10gKworICAgICAgICAgICAgJz1hbGVy dCgiMSIpJmd0Oy5zcWwnLCAnRmlsZSBtYW5hZ2VyJwogICAgICAgICApCiAKICAgICBkZWYgX2No ZWNrX2VzY2FwZWRfY2hhcmFjdGVycyhzZWxmLCBzb3VyY2VfY29kZSwgc3RyaW5nX3RvX2ZpbmQs IHNvdXJjZSk6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2tleWJvYXJk X3Nob3J0Y3V0X3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2tleWJvYXJkX3No b3J0Y3V0X3Rlc3QucHkKaW5kZXggZWEzODFiNC4uZjY4ZTUzMCAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vZmVhdHVyZV90ZXN0cy9rZXlib2FyZF9zaG9ydGN1dF90ZXN0LnB5CisrKyBiL3dlYi9w Z2FkbWluL2ZlYXR1cmVfdGVzdHMva2V5Ym9hcmRfc2hvcnRjdXRfdGVzdC5weQpAQCAtOTQsMjQg Kzk0LDMzIEBAIGNsYXNzIEtleWJvYXJkU2hvcnRjdXRGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRl c3QpOgogICAgICAgICAgICAgTmF2TWVudUxvY2F0b3JzLnByZWZlcmVuY2VfbWVudV9pdGVtX2Nz cykKICAgICAgICAgcHJlZl9tZW51X2l0ZW0uY2xpY2soKQogCi0gICAgICAgICMgV2FpdCB0aWxs IHRoZSBwcmVmZXJlbmNlIGRpYWxvZ3VlIGJveCBpcyBkaXNwbGF5ZWQgYnkgY2hlY2tpbmcgdGhl Ci0gICAgICAgICMgdmlzaWJpbGl0eSBvZiBTaG93IFN5c3RlbSBPYmplY3QgbGFiZWwKLSAgICAg ICAgc2VsZi53YWl0LnVudGlsKEVDLnByZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZCgKLSAgICAg ICAgICAgIChCeS5YUEFUSCwgTmF2TWVudUxvY2F0b3JzLnNob3dfc3lzdGVtX29iamVjdHNfcHJl Zl9sYWJlbF94cGF0aCkpCi0gICAgICAgICkKLQotICAgICAgICBtYXhpbWl6ZV9idXR0b24gPSBz ZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCi0gICAgICAgICAgICBOYXZNZW51TG9jYXRv cnMubWF4aW1pemVfcHJlZl9kaWFsb2d1ZV9jc3MpCi0gICAgICAgIG1heGltaXplX2J1dHRvbi5j bGljaygpCi0KICAgICAgICAgYnJvd3Nlcl9ub2RlID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgo CiAgICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMuc3BlY2lmaWVkX3ByZWZlcmVuY2VfdHJlZV9u b2RlLmZvcm1hdCgnQnJvd3NlcicpKQogICAgICAgICBpZiBzZWxmLnBhZ2UuZmluZF9ieV94cGF0 aCgKICAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5zcGVjaWZpZWRfcHJlZl9ub2RlX2V4cF9z dGF0dXMuCiAgICAgICAgICAgICAgICAgZm9ybWF0KCdCcm93c2VyJykpLmdldF9hdHRyaWJ1dGUo J2FyaWEtZXhwYW5kZWQnKSA9PSAnZmFsc2UnOgotCiAgICAgICAgICAgICBBY3Rpb25DaGFpbnMo c2VsZi5kcml2ZXIpLmRvdWJsZV9jbGljayhicm93c2VyX25vZGUpLnBlcmZvcm0oKQogCisgICAg ICAgIGRpc3BsYXlfbm9kZSA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAg TmF2TWVudUxvY2F0b3JzLnNwZWNpZmllZF9zdWJfbm9kZV9vZl9wcmVmX3RyZWVfbm9kZS5mb3Jt YXQoCisgICAgICAgICAgICAgICAgJ0Jyb3dzZXInLCAnRGlzcGxheScpKQorICAgICAgICBhdHRl bXB0ID0gNQorICAgICAgICB3aGlsZSBhdHRlbXB0ID4gMDoKKyAgICAgICAgICAgIGRpc3BsYXlf bm9kZS5jbGljaygpCisgICAgICAgICAgICAjIEFmdGVyIGNsaWNraW5nIHRoZSBlbGVtZW50IGdl dHMgbG9hZGVkIGluIHRvIHRoZSBkb20gYnV0IHN0aWxsCisgICAgICAgICAgICAjIG5vdCB2aXNp YmxlLCBoZW5jZSBzbGVlcGluZyBmb3IgYSBzZWMuCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEp CisgICAgICAgICAgICBpZiBzZWxmLnBhZ2Uud2FpdF9mb3JfZWxlbWVudF90b19iZV92aXNpYmxl KAorICAgICAgICAgICAgICAgIHNlbGYuZHJpdmVyLAorICAgICAgICAgICAgICAgICAgICBOYXZN ZW51TG9jYXRvcnMuc2hvd19zeXN0ZW1fb2JqZWN0c19wcmVmX2xhYmVsX3hwYXRoLCAzKToKKyAg ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBh dHRlbXB0IC09IDEKKworICAgICAgICBtYXhpbWl6ZV9idXR0b24gPSBzZWxmLnBhZ2UuZmluZF9i eV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMubWF4aW1pemVfcHJl Zl9kaWFsb2d1ZV9jc3MpCisgICAgICAgIG1heGltaXplX2J1dHRvbi5jbGljaygpCisKICAgICAg ICAga2V5Ym9hcmRfbm9kZSA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAogICAgICAgICAgICAg TmF2TWVudUxvY2F0b3JzLnNwZWNpZmllZF9zdWJfbm9kZV9vZl9wcmVmX3RyZWVfbm9kZS5mb3Jt YXQoCiAgICAgICAgICAgICAgICAgJ0Jyb3dzZXInLCAnS2V5Ym9hcmQgc2hvcnRjdXRzJykpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX2RhdGF0eXBlX3ZhbGlkYXRp b25fdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfZGF0YXR5cGVfdmFsaWRh dGlvbl90ZXN0LnB5CmluZGV4IGRiYTRlYWQuLmJhY2NjNzAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2ZlYXR1cmVfdGVzdHMvcGdfZGF0YXR5cGVfdmFsaWRhdGlvbl90ZXN0LnB5CisrKyBiL3dl Yi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfZGF0YXR5cGVfdmFsaWRhdGlvbl90ZXN0LnB5CkBA IC05Miw2ICs5MiwxOCBAQCBjbGFzcyBQR0RhdGF5cGVGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRl c3QpOgogCiAgICAgICAgIHdhaXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDEw KQogCisgICAgICAgIGJyb3dzZXJfbm9kZSA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAg ICAgICAgICAgTmF2TWVudUxvY2F0b3JzLnNwZWNpZmllZF9wcmVmZXJlbmNlX3RyZWVfbm9kZS5m b3JtYXQoJ0Jyb3dzZXInKSkKKyAgICAgICAgaWYgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisg ICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMuc3BlY2lmaWVkX3ByZWZfbm9kZV9leHBfc3RhdHVz LgorICAgICAgICAgICAgICAgIGZvcm1hdCgnQnJvd3NlcicpKS5nZXRfYXR0cmlidXRlKCdhcmlh LWV4cGFuZGVkJykgPT0gJ2ZhbHNlJzoKKyAgICAgICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRy aXZlcikuZG91YmxlX2NsaWNrKGJyb3dzZXJfbm9kZSkucGVyZm9ybSgpCisKKyAgICAgICAgc2Vs Zi5wYWdlLnJldHJ5X2NsaWNrKAorICAgICAgICAgICAgKEJ5LlhQQVRILCBOYXZNZW51TG9jYXRv cnMuc3BlY2lmaWVkX3N1Yl9ub2RlX29mX3ByZWZfdHJlZV9ub2RlLgorICAgICAgICAgICAgIGZv cm1hdCgnQnJvd3NlcicsICdEaXNwbGF5JykpLAorICAgICAgICAgICAgKEJ5LlhQQVRILCBOYXZN ZW51TG9jYXRvcnMuc2hvd19zeXN0ZW1fb2JqZWN0c19wcmVmX2xhYmVsX3hwYXRoKSkKKwogICAg ICAgICAjIFdhaXQgdGlsbCB0aGUgcHJlZmVyZW5jZSBkaWFsb2d1ZSBib3ggaXMgZGlzcGxheWVk IGJ5IGNoZWNraW5nIHRoZQogICAgICAgICAjIHZpc2liaWxpdHkgb2YgU2hvdyBTeXN0ZW0gT2Jq ZWN0IGxhYmVsCiAgICAgICAgIHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2Nh dGVkKApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNf YmFja3VwX3Jlc3RvcmVfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRp bGl0aWVzX2JhY2t1cF9yZXN0b3JlX3Rlc3QucHkKaW5kZXggMWQ2ZDdhNC4uNGNmOTI4MiAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfYmFja3VwX3Jl c3RvcmVfdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGll c19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5CkBAIC0xOCw2ICsxOCw3IEBAIGZyb20gcmVncmVzc2lv bi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscwogZnJvbSByZWdyZXNzaW9uLnB5 dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X2d1aV9oZWxwZXIKIGZyb20gcmVncmVzc2lvbi5m ZWF0dXJlX3V0aWxzLmxvY2F0b3JzIGltcG9ydCBOYXZNZW51TG9jYXRvcnMKIGZyb20gcmVncmVz c2lvbi5mZWF0dXJlX3V0aWxzLnRyZWVfYXJlYV9sb2NhdG9ycyBpbXBvcnQgVHJlZUFyZWFMb2Nh dG9ycworZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIgaW1wb3J0IEFjdGlvbkNoYWlucwogCiAKIGNs YXNzIFBHVXRpbGl0aWVzQmFja3VwRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKQEAgLTU2 LDYgKzU3LDcgQEAgY2xhc3MgUEdVdGlsaXRpZXNCYWNrdXBGZWF0dXJlVGVzdChCYXNlRmVhdHVy ZVRlc3QpOgogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQogICAgICAgICApCiAg ICAgICAgIHRlc3RfdXRpbHMuZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCBzZWxmLmRhdGFiYXNl X25hbWUpCisgICAgICAgIHNlbGYuX3VwZGF0ZV9wcmVmZXJlbmNlcygpCiAgICAgICAgIGRiX2lk ID0gdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNlbGYuZGF0YWJhc2Vf bmFtZSkKICAgICAgICAgaWYgbm90IGRiX2lkOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl KEZhbHNlLCAiRGF0YWJhc2Uge30gaXMgbm90ICIKQEAgLTEzMCw3ICsxMzIsNyBAQCBjbGFzcyBQ R1V0aWxpdGllc0JhY2t1cEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgICAg ICBzZWxmLl9jaGVja19kZXRhaWxlZF93aW5kb3dfZm9yX3hzcygnQmFja3VwJykKICAgICAgICAg ZWxzZToKICAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0 b3IoCi0gICAgICAgICAgICAgICAgTmF2TWVudUxvY2F0b3JzLnByb2Nlc3Nfd2F0Y2hlcl9kZXRh aWxlZF9jb21tYW5kX2NhbnZhc19jc3MpLlwKKyAgICAgICAgICAgICAgICBOYXZNZW51TG9jYXRv cnMucHJvY2Vzc193YXRjaGVyX2RldGFpbGVkX2NvbW1hbmRfY2FudmFzX2NzcykuIFwKICAgICAg ICAgICAgICAgICB0ZXh0CiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5zZXJ2ZXJb J25hbWUnXSwgc3RyKGNvbW1hbmQpKQpAQCAtMTk5LDcgKzIwMSw3IEBAIGNsYXNzIFBHVXRpbGl0 aWVzQmFja3VwRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgICAgIHNlbGYu X2NoZWNrX2RldGFpbGVkX3dpbmRvd19mb3JfeHNzKCdSZXN0b3JlJykKICAgICAgICAgZWxzZToK ICAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCi0g ICAgICAgICAgICAgICAgTmF2TWVudUxvY2F0b3JzLnByb2Nlc3Nfd2F0Y2hlcl9kZXRhaWxlZF9j b21tYW5kX2NhbnZhc19jc3MpLlwKKyAgICAgICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMucHJv Y2Vzc193YXRjaGVyX2RldGFpbGVkX2NvbW1hbmRfY2FudmFzX2NzcykuIFwKICAgICAgICAgICAg ICAgICB0ZXh0CiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5zZXJ2ZXJbJ25hbWUn XSwgc3RyKGNvbW1hbmQpKQpAQCAtMjQyLDMgKzI0NCw3NCBAQCBjbGFzcyBQR1V0aWxpdGllc0Jh Y2t1cEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgICMgRm9yIFhTUyB3ZSBu ZWVkIHRvIHNlYXJjaCBhZ2FpbnN0IGVsZW1lbnQncyBodG1sIGNvZGUKICAgICAgICAgYXNzZXJ0 IHNvdXJjZV9jb2RlLmZpbmQoc3RyaW5nX3RvX2ZpbmQpICE9IC0gXAogICAgICAgICAgICAgMSwg InswfSBtaWdodCBiZSB2dWxuZXJhYmxlIHRvIFhTUyAiLmZvcm1hdChzb3VyY2UpCisKKyAgICBk ZWYgX3VwZGF0ZV9wcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEZ1bmN0 aW9uIHVwZGF0ZXMgcHJlZmVyZW5jZXMgZm9yIGJpbmFyeSBwYXRoLgorICAgICAgICAiIiIKKyAg ICAgICAgZmlsZV9tZW51ID0gc2VsZi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKAorICAgICAg ICAgICAgTmF2TWVudUxvY2F0b3JzLmZpbGVfbWVudV9jc3MpCisgICAgICAgIGZpbGVfbWVudS5j bGljaygpCisKKyAgICAgICAgcHJlZl9tZW51X2l0ZW0gPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nf c2VsZWN0b3IoCisgICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMucHJlZmVyZW5jZV9tZW51X2l0 ZW1fY3NzKQorICAgICAgICBwcmVmX21lbnVfaXRlbS5jbGljaygpCisKKyAgICAgICAgd2FpdCA9 IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgIyBXYWl0IHRp bGwgdGhlIHByZWZlcmVuY2UgZGlhbG9ndWUgYm94IGlzIGRpc3BsYXllZCBieSBjaGVja2luZyB0 aGUKKyAgICAgICAgIyB2aXNpYmlsaXR5IG9mIFNob3cgU3lzdGVtIE9iamVjdCBsYWJlbAorICAg ICAgICB3YWl0LnVudGlsKEVDLnByZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZCgKKyAgICAgICAg ICAgIChCeS5YUEFUSCwgTmF2TWVudUxvY2F0b3JzLnNob3dfc3lzdGVtX29iamVjdHNfcHJlZl9s YWJlbF94cGF0aCkpCisgICAgICAgICkKKworICAgICAgICBtYXhpbWl6ZV9idXR0b24gPSBzZWxm LnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMu bWF4aW1pemVfcHJlZl9kaWFsb2d1ZV9jc3MpCisgICAgICAgIG1heGltaXplX2J1dHRvbi5jbGlj aygpCisKKyAgICAgICAgcGF0aCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAg ICAgTmF2TWVudUxvY2F0b3JzLnNwZWNpZmllZF9wcmVmZXJlbmNlX3RyZWVfbm9kZS5mb3JtYXQo J1BhdGhzJykpCisgICAgICAgIGlmIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAg ICAgTmF2TWVudUxvY2F0b3JzLnNwZWNpZmllZF9wcmVmX25vZGVfZXhwX3N0YXR1cy5mb3JtYXQo J1BhdGhzJykpLiBcCisgICAgICAgICAgICAgICAgZ2V0X2F0dHJpYnV0ZSgnYXJpYS1leHBhbmRl ZCcpID09ICdmYWxzZSc6CisgICAgICAgICAgICBBY3Rpb25DaGFpbnMoc2VsZi5kcml2ZXIpLmRv dWJsZV9jbGljayhwYXRoKS5wZXJmb3JtKCkKKworICAgICAgICBiaW5hcnlfcGF0aCA9IHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgTmF2TWVudUxvY2F0b3JzLnNwZWNpZmll ZF9zdWJfbm9kZV9vZl9wcmVmX3RyZWVfbm9kZS5mb3JtYXQoCisgICAgICAgICAgICAgICAgJ1Bh dGhzJywgJ0JpbmFyeSBwYXRocycpKQorICAgICAgICBiaW5hcnlfcGF0aC5jbGljaygpCisKKyAg ICAgICAgZGVmYXVsdF9iaW5hcnlfcGF0aCA9IHNlbGYuc2VydmVyWydkZWZhdWx0X2JpbmFyeV9w YXRocyddCisgICAgICAgIGlmIGRlZmF1bHRfYmluYXJ5X3BhdGggaXMgbm90IE5vbmU6CisgICAg ICAgICAgICBzZXJ2ZXJfdHlwZXMgPSBkZWZhdWx0X2JpbmFyeV9wYXRoLmtleXMoKQorICAgICAg ICAgICAgZm9yIHNlcnYgaW4gc2VydmVyX3R5cGVzOgorICAgICAgICAgICAgICAgIGlmIHNlcnYg PT0gJ3BnJzoKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9pbnB1dCA9IHNlbGYucGFnZS5maW5k X2J5X3hwYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgIi8vbGFiZWxbdGV4dCgpPSdQb3N0 Z3JlU1FMIEJpbmFyeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiUGF0aCddL2ZvbGxvd2lu Zy1zaWJsaW5nOjpkaXYvL2lucHV0IikKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9pbnB1dC5j bGVhcigpCisgICAgICAgICAgICAgICAgICAgIHBhdGhfaW5wdXQuY2xpY2soKQorICAgICAgICAg ICAgICAgICAgICBwYXRoX2lucHV0LnNlbmRfa2V5cyhkZWZhdWx0X2JpbmFyeV9wYXRoWydwZydd KQorICAgICAgICAgICAgICAgIGVsaWYgc2VydiA9PSAnZ3BkYic6CisgICAgICAgICAgICAgICAg ICAgIHBhdGhfaW5wdXQgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKKyAgICAgICAgICAgICAg ICAgICAgICAgICIvL2xhYmVsW3RleHQoKT0nR3JlZW5wbHVtIERhdGFiYXNlIEJpbmFyeSAiCisg ICAgICAgICAgICAgICAgICAgICAgICAiUGF0aCddL2ZvbGxvd2luZy1zaWJsaW5nOjpkaXYvL2lu cHV0IikKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9pbnB1dC5jbGVhcigpCisgICAgICAgICAg ICAgICAgICAgIHBhdGhfaW5wdXQuY2xpY2soKQorICAgICAgICAgICAgICAgICAgICBwYXRoX2lu cHV0LnNlbmRfa2V5cyhkZWZhdWx0X2JpbmFyeV9wYXRoWydncGRiJ10pCisgICAgICAgICAgICAg ICAgZWxpZiBzZXJ2ID09ICdwcGFzJzoKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9pbnB1dCA9 IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgIi8vbGFi ZWxbdGV4dCgpPSdFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSAiCisgICAgICAgICAgICAgICAg ICAgICAgICAiUGF0aCddL2ZvbGxvd2luZy1zaWJsaW5nOjpkaXYvL2lucHV0IikKKyAgICAgICAg ICAgICAgICAgICAgcGF0aF9pbnB1dC5jbGVhcigpCisgICAgICAgICAgICAgICAgICAgIHBhdGhf aW5wdXQuY2xpY2soKQorICAgICAgICAgICAgICAgICAgICBwYXRoX2lucHV0LnNlbmRfa2V5cyhk ZWZhdWx0X2JpbmFyeV9wYXRoWydwcGFzJ10pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgcHJpbnQoJ0JpbmFyeSBwYXRoIEtleSBpcyBJbmNvcnJlY3QnKQorCisg ICAgICAgICMgc2F2ZSBhbmQgY2xvc2UgdGhlIHByZWZlcmVuY2UgZGlhbG9nLgorICAgICAgICBz ZWxmLnBhZ2UuY2xpY2tfbW9kYWwoJ1NhdmUnKQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zv cl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAgICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZl ci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAgKQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9xdWVyeV90b29sX2pvdXJuZXlf dGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rl c3QucHkKaW5kZXggMmQ3YzRlZi4uZGRiNGUzYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vZmVh dHVyZV90ZXN0cy9xdWVyeV90b29sX2pvdXJuZXlfdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LnB5CkBAIC05LDcgKzksNiBAQAog CiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgc3lzCi1pbXBv cnQgcHlwZXJjbGlwCiBpbXBvcnQgcmFuZG9tCiAKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyIGlt cG9ydCBBY3Rpb25DaGFpbnMKQEAgLTkwLDcgKzg5LDYgQEAgY2xhc3MgUXVlcnlUb29sSm91cm5l eVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgcHJpbnQoIiBPSy4iLCBmaWxlPXN5cy5z dGRlcnIpCiAKICAgICBkZWYgX3Rlc3RfY29waWVzX3Jvd3Moc2VsZik6Ci0gICAgICAgIHB5cGVy Y2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKICAgICAgICAgc2VsZi5wYWdlLmRy aXZlci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250ZW50KCkKICAgICAgICAgc2VsZi5wYWdlLmRyaXZl ci5zd2l0Y2hfdG9fZnJhbWUoCiAgICAgICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLmZpbmRfZWxl bWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikpCkBAIC0xMDMsMTIgKzEwMSwyMSBAQCBjbGFzcyBR dWVyeVRvb2xKb3VybmV5VGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICAgICAgUXVlcnlU b29sTG9jYXRvcnMuY29weV9idXR0b25fY3NzKQogICAgICAgICBjb3B5X3Jvdy5jbGljaygpCiAK KyAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250ZW50KCkKKyAg ICAgICAgc2VsZi5wYWdlLmRyaXZlci5zd2l0Y2hfdG9fZnJhbWUoCisgICAgICAgICAgICBzZWxm LnBhZ2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikpCisKKyAgICAg ICAgc2NyYXRjaF9wYWRfZWxlID0gc2VsZi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKAorICAg ICAgICAgICAgUXVlcnlUb29sTG9jYXRvcnMuc2NyYXRjaF9wYWRfY3NzKQorICAgICAgICBzZWxm LnBhZ2UucGFzdGVfdmFsdWVzKHNjcmF0Y2hfcGFkX2VsZSkKKyAgICAgICAgY2xpcGJvYXJkX3Rl eHQgPSBzY3JhdGNoX3BhZF9lbGUuZ2V0X2F0dHJpYnV0ZSgidmFsdWUiKQorCiAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoJyJTb21lLU5hbWUiXHQ2XHQic29tZSBpbmZvIicsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgcHlwZXJjbGlwLnBhc3RlKCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgY2xpcGJvYXJkX3RleHQpCiAKLSAgICBkZWYgX3Rlc3RfY29waWVzX2NvbHVtbnMoc2VsZik6 Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKKyAgICAg ICAgc2NyYXRjaF9wYWRfZWxlLmNsZWFyKCkKIAorICAgIGRlZiBfdGVzdF9jb3BpZXNfY29sdW1u cyhzZWxmKToKICAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250 ZW50KCkKICAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5zd2l0Y2hfdG9fZnJhbWUoCiAgICAgICAg ICAgICBzZWxmLnBhZ2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikp CkBAIC0xMjEsOSArMTI4LDIwIEBAIGNsYXNzIFF1ZXJ5VG9vbEpvdXJuZXlUZXN0KEJhc2VGZWF0 dXJlVGVzdCk6CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5jb3B5X2J1dHRvbl9jc3Mp CiAgICAgICAgIGNvcHlfYnRuLmNsaWNrKCkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUoJyJT b21lLU5hbWUiJyBpbiBweXBlcmNsaXAucGFzdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl KCciU29tZS1PdGhlci1OYW1lIicgaW4gcHlwZXJjbGlwLnBhc3RlKCkpCi0gICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZSgnIllldC1Bbm90aGVyLU5hbWUiJyBpbiBweXBlcmNsaXAucGFzdGUoKSkKKyAg ICAgICAgc2VsZi5wYWdlLmRyaXZlci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250ZW50KCkKKyAgICAg ICAgc2VsZi5wYWdlLmRyaXZlci5zd2l0Y2hfdG9fZnJhbWUoCisgICAgICAgICAgICBzZWxmLnBh Z2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikpCisKKyAgICAgICAg c2NyYXRjaF9wYWRfZWxlID0gc2VsZi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKAorICAgICAg ICAgICAgUXVlcnlUb29sTG9jYXRvcnMuc2NyYXRjaF9wYWRfY3NzKQorICAgICAgICBzZWxmLnBh Z2UucGFzdGVfdmFsdWVzKHNjcmF0Y2hfcGFkX2VsZSkKKworICAgICAgICBjbGlwYm9hcmRfdGV4 dCA9IHNjcmF0Y2hfcGFkX2VsZS5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCisKKyAgICAgICAgc2Vs Zi5hc3NlcnRUcnVlKCciU29tZS1OYW1lIicgaW4gY2xpcGJvYXJkX3RleHQpCisgICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZSgnIlNvbWUtT3RoZXItTmFtZSInIGluIGNsaXBib2FyZF90ZXh0KQorICAg ICAgICBzZWxmLmFzc2VydFRydWUoJyJZZXQtQW5vdGhlci1OYW1lIicgaW4gY2xpcGJvYXJkX3Rl eHQpCisgICAgICAgIHNjcmF0Y2hfcGFkX2VsZS5jbGVhcigpCiAKICAgICBkZWYgX3Rlc3RfaGlz dG9yeV90YWIoc2VsZik6CiAgICAgICAgIHNlbGYucGFnZS5jbGVhcl9xdWVyeV90b29sKCkKQEAg LTM3MCwxMCArMzg4LDEwIEBAIGNsYXNzIFF1ZXJ5VG9vbEpvdXJuZXlUZXN0KEJhc2VGZWF0dXJl VGVzdCk6CiAgICAgICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCiAgICAg ICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRvcnMuYnRuX2NsZWFyX2Ryb3Bkb3duKQogICAgICAg ICApCi0gICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRyaXZlcilcCisgICAgICAgIEFjdGlvbkNo YWlucyhzZWxmLmRyaXZlcikgXAogICAgICAgICAgICAgLm1vdmVfdG9fZWxlbWVudCgKLSAgICAg ICAgICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCi0gICAgICAgICAgICAg ICAgICAgIFF1ZXJ5VG9vbExvY2F0b3JzLmJ0bl9jbGVhcl9oaXN0b3J5KSkucGVyZm9ybSgpCisg ICAgICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICAg ICAgUXVlcnlUb29sTG9jYXRvcnMuYnRuX2NsZWFyX2hpc3RvcnkpKS5wZXJmb3JtKCkKICAgICAg ICAgc2VsZi5wYWdlLmNsaWNrX2VsZW1lbnQoCiAgICAgICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9jc3Nfc2VsZWN0b3IoUXVlcnlUb29sTG9jYXRvcnMuYnRuX2NsZWFyX2hpc3RvcnkpCiAgICAg ICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvdmlld19kYXRhX2Rt bF9xdWVyaWVzLnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1 ZXJpZXMucHkKaW5kZXggM2Y1M2Q4Ni4uMjE5MjFjYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v ZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMucHkKKysrIGIvd2ViL3BnYWRtaW4v ZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMucHkKQEAgLTEzMSwxMyArMTMxLDE1 IEBAIENSRUFURSBUQUJMRSBwdWJsaWMubm9uaW50cGtleQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2RiLCAncHVibGljJykKIAogICAgICAgICBz ZWxmLl9sb2FkX2NvbmZpZ19kYXRhKCd0YWJsZV9pbnNlcnRfdXBkYXRlX2Nhc2VzJykKKyAgICAg ICAgZGF0YV9sb2NhbCA9IGNvbmZpZ19kYXRhCiAgICAgICAgICMgaXRlcmF0ZSBvbiBib3RoIHRh YmxlcwogICAgICAgICBmb3IgY250IGluICgxLCAyKToKLSAgICAgICAgICAgIHNlbGYuX3BlcmZv cm1fdGVzdF9mb3JfdGFibGUoJ2RlZmF1bHRzX3swfScuZm9ybWF0KHN0cihjbnQpKSkKLQorICAg ICAgICAgICAgc2VsZi5fcGVyZm9ybV90ZXN0X2Zvcl90YWJsZSgnZGVmYXVsdHNfezB9Jy5mb3Jt YXQoc3RyKGNudCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhX2xvY2FsKQogICAgICAgICAjIHRlc3Qgbm9uaW50IHBrZXkgdGFibGUKICAgICAgICAgc2Vs Zi5fbG9hZF9jb25maWdfZGF0YSgndGFibGVfaW5zZXJ0X3VwZGF0ZV9ub25pbnQnKQotICAgICAg ICBzZWxmLl9wZXJmb3JtX3Rlc3RfZm9yX3RhYmxlKCdub25pbnRwa2V5JykKKyAgICAgICAgZGF0 YV9sb2NhbCA9IGNvbmZpZ19kYXRhCisgICAgICAgIHNlbGYuX3BlcmZvcm1fdGVzdF9mb3JfdGFi bGUoJ25vbmludHBrZXknLCBkYXRhX2xvY2FsKQogCiAgICAgZGVmIGFmdGVyKHNlbGYpOgogICAg ICAgICBzZWxmLnBhZ2UucmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZlcikKQEAgLTE2Nyw3ICsxNjks NyBAQCBDUkVBVEUgVEFCTEUgcHVibGljLm5vbmludHBrZXkKICAgICAgICAgZ2xvYmFsIGNvbmZp Z19kYXRhCiAgICAgICAgIGNvbmZpZ19kYXRhID0gY29uZmlnX2RhdGFfanNvbltjb25maWdfa2V5 XQogCi0gICAgZGVmIF9wZXJmb3JtX3Rlc3RfZm9yX3RhYmxlKHNlbGYsIHRhYmxlX25hbWUpOgor ICAgIGRlZiBfcGVyZm9ybV90ZXN0X2Zvcl90YWJsZShzZWxmLCB0YWJsZV9uYW1lLCBjb25maWdf ZGF0YV9sb2NhbCk6CiAgICAgICAgIHNlbGYucGFnZS5jbGlja19hX3RyZWVfbm9kZSgKICAgICAg ICAgICAgIHRhYmxlX25hbWUsCiAgICAgICAgICAgICBUcmVlQXJlYUxvY2F0b3JzLnN1Yl9ub2Rl c19vZl90YWJsZXNfbm9kZSkKQEAgLTE3NiwyMCArMTc4LDIxIEBAIENSRUFURSBUQUJMRSBwdWJs aWMubm9uaW50cGtleQogCiAgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xv YWRpbmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigpCiAgICAgICAgICMgUnVuIHRlc3QgdG8gaW5z ZXJ0IGEgbmV3IHJvdyBpbiB0YWJsZSB3aXRoIGRlZmF1bHQgdmFsdWVzCi0gICAgICAgIHNlbGYu X2FkZF9yb3coKQorICAgICAgICBzZWxmLl9hZGRfcm93KGNvbmZpZ19kYXRhX2xvY2FsKQogICAg ICAgICBzZWxmLl92ZXJpZnlfcm93X2RhdGEocm93X2hlaWdodD0wLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uZmlnX2NoZWNrX2RhdGE9Y29uZmlnX2RhdGFbJ2FkZCddKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX2NoZWNrX2RhdGE9Y29uZmlnX2RhdGFf bG9jYWxbJ2FkZCddKQogCiAgICAgICAgICMgUnVuIHRlc3QgdG8gY29weS9wYXN0ZSBhIHJvdwot ICAgICAgICBzZWxmLl9jb3B5X3Bhc3RlX3JvdygpCisgICAgICAgIHNlbGYuX2NvcHlfcGFzdGVf cm93KGNvbmZpZ19kYXRhX2xvY2FsKQogCi0gICAgICAgIHNlbGYuX3VwZGF0ZV9yb3coKQorICAg ICAgICBzZWxmLl91cGRhdGVfcm93KGNvbmZpZ19kYXRhX2xvY2FsKQogICAgICAgICBzZWxmLnBh Z2UuY2xpY2tfdGFiKCJNZXNzYWdlcyIpCiAgICAgICAgIHNlbGYuX3ZlcmlmeV9tZXNzc2FnZXMo IiIpCiAgICAgICAgIHNlbGYucGFnZS5jbGlja190YWIoIkRhdGEgT3V0cHV0IikKICAgICAgICAg dXBkYXRlZF9yb3dfZGF0YSA9IHsKLSAgICAgICAgICAgIGk6IGNvbmZpZ19kYXRhWyd1cGRhdGUn XVtpXSBpZiBpIGluIGNvbmZpZ19kYXRhWyd1cGRhdGUnXSBlbHNlIHZhbAotICAgICAgICAgICAg Zm9yIGksIHZhbCBpbiBjb25maWdfZGF0YVsnYWRkJ10uaXRlbXMoKQorICAgICAgICAgICAgaTog Y29uZmlnX2RhdGFfbG9jYWxbJ3VwZGF0ZSddW2ldIGlmIGkgaW4gY29uZmlnX2RhdGFfbG9jYWxb CisgICAgICAgICAgICAgICAgJ3VwZGF0ZSddIGVsc2UgdmFsCisgICAgICAgICAgICBmb3IgaSwg dmFsIGluIGNvbmZpZ19kYXRhX2xvY2FsWydhZGQnXS5pdGVtcygpCiAgICAgICAgIH0KICAgICAg ICAgc2VsZi5fdmVyaWZ5X3Jvd19kYXRhKHJvd19oZWlnaHQ9MCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbmZpZ19jaGVja19kYXRhPXVwZGF0ZWRfcm93X2RhdGEpCkBAIC0yMjEs NyArMjI0LDYgQEAgQ1JFQVRFIFRBQkxFIHB1YmxpYy5ub25pbnRwa2V5CiAgICAgICAgIFJldHVy bnM6IE5vbmUKIAogICAgICAgICAiIiIKLQogICAgICAgICBzZWxmLndhaXQudW50aWwoRUMudmlz aWJpbGl0eV9vZl9lbGVtZW50X2xvY2F0ZWQoCiAgICAgICAgICAgICAoQnkuWFBBVEgsIHhwYXRo KSksIENoZWNrRm9yVmlld0RhdGFUZXN0LlRJTUVPVVRfU1RSSU5HCiAgICAgICAgICkKQEAgLTIz OCw3ICsyNDAsNyBAQCBDUkVBVEUgVEFCTEUgcHVibGljLm5vbmludHBrZXkKICAgICAgICAgICAg IGlmIHZhbHVlID09ICdjbGVhcic6CiAgICAgICAgICAgICAgICAgY2VsbF9lbC5maW5kX2VsZW1l bnRfYnlfY3NzX3NlbGVjdG9yKCdpbnB1dCcpLmNsZWFyKCkKICAgICAgICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKS5zZW5kX2tleXModmFsdWUp LlwKKyAgICAgICAgICAgICAgICBBY3Rpb25DaGFpbnMoc2VsZi5kcml2ZXIpLnNlbmRfa2V5cyh2 YWx1ZSkuIFwKICAgICAgICAgICAgICAgICAgICAgc2VuZF9rZXlzKEtleXMuRU5URVIpLnBlcmZv cm0oKQogICAgICAgICBlbGlmIGNlbGxfdHlwZSBpbiBbJ3RleHQnLCAnanNvbicsICd0ZXh0W10n LCAnYm9vbGVhbltdJ106CiAgICAgICAgICAgICB0ZXh0X2FyZWFfZWxlID0gc2VsZi5wYWdlLmZp bmRfYnlfY3NzX3NlbGVjdG9yKApAQCAtMjkwLDcgKzI5Miw3IEBAIENSRUFURSBUQUJMRSBwdWJs aWMubm9uaW50cGtleQogICAgICAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5maW5kX2VsZW1lbnRf YnlfdGFnX25hbWUoJ2lmcmFtZScpCiAgICAgICAgICkKIAotICAgIGRlZiBfY29weV9wYXN0ZV9y b3coc2VsZik6CisgICAgZGVmIF9jb3B5X3Bhc3RlX3JvdyhzZWxmLCBjb25maWdfZGF0YV9sKToK ICAgICAgICAgcm93MF9jZWxsMF94cGF0aCA9IENoZWNrRm9yVmlld0RhdGFUZXN0Ll9nZXRfY2Vs bF94cGF0aCgicjAiLCAxKQogCiAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKHJvdzBf Y2VsbDBfeHBhdGgpLmNsaWNrKCkKQEAgLTMwMCwxMiArMzAyLDEyIEBAIENSRUFURSBUQUJMRSBw dWJsaWMubm9uaW50cGtleQogICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRvcnMucGFzdGVfYnV0 dG9uX2NzcykuY2xpY2soKQogCiAgICAgICAgICMgVXBkYXRlIHByaW1hcnkga2V5IG9mIGNvcGll ZCBjZWxsCi0gICAgICAgIHNlbGYuX2FkZF91cGRhdGVfc2F2ZV9yb3coY29uZmlnX2RhdGFbJ2Nv cHknXSwgcm93PTIpCisgICAgICAgIHNlbGYuX2FkZF91cGRhdGVfc2F2ZV9yb3coY29uZmlnX2Rh dGFfbFsnY29weSddLCByb3c9MikKIAogICAgICAgICAjIFZlcmlmeSByb3cgMSBhbmQgcm93IDIg ZGF0YQogICAgICAgICB1cGRhdGVkX3Jvd19kYXRhID0gewotICAgICAgICAgICAgaTogY29uZmln X2RhdGFbJ2NvcHknXVtpXSBpZiBpIGluIGNvbmZpZ19kYXRhWydjb3B5J10gZWxzZSB2YWwKLSAg ICAgICAgICAgIGZvciBpLCB2YWwgaW4gY29uZmlnX2RhdGFbJ2FkZCddLml0ZW1zKCkKKyAgICAg ICAgICAgIGk6IGNvbmZpZ19kYXRhX2xbJ2NvcHknXVtpXSBpZiBpIGluIGNvbmZpZ19kYXRhX2xb J2NvcHknXSBlbHNlIHZhbAorICAgICAgICAgICAgZm9yIGksIHZhbCBpbiBjb25maWdfZGF0YV9s WydhZGQnXS5pdGVtcygpCiAgICAgICAgIH0KICAgICAgICAgc2VsZi5fdmVyaWZ5X3Jvd19kYXRh KHJvd19oZWlnaHQ9MjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hl Y2tfZGF0YT11cGRhdGVkX3Jvd19kYXRhKQpAQCAtMzI5LDExICszMzEsMTEgQEAgQ1JFQVRFIFRB QkxFIHB1YmxpYy5ub25pbnRwa2V5CiAgICAgICAgICMgc2F2ZSBhamF4IGlzIGNvbXBsZXRlZC4K ICAgICAgICAgdGltZS5zbGVlcCgyKQogCi0gICAgZGVmIF9hZGRfcm93KHNlbGYpOgotICAgICAg ICBzZWxmLl9hZGRfdXBkYXRlX3NhdmVfcm93KGNvbmZpZ19kYXRhWydhZGQnXSwgMSkKKyAgICBk ZWYgX2FkZF9yb3coc2VsZiwgY29uZmlnX2RhdGFfbCk6CisgICAgICAgIHNlbGYuX2FkZF91cGRh dGVfc2F2ZV9yb3coY29uZmlnX2RhdGFfbFsnYWRkJ10sIDEpCiAKLSAgICBkZWYgX3VwZGF0ZV9y b3coc2VsZik6Ci0gICAgICAgIHNlbGYuX2FkZF91cGRhdGVfc2F2ZV9yb3coY29uZmlnX2RhdGFb J3VwZGF0ZSddLCAxKQorICAgIGRlZiBfdXBkYXRlX3JvdyhzZWxmLCBjb25maWdfZGF0YV9sKToK KyAgICAgICAgc2VsZi5fYWRkX3VwZGF0ZV9zYXZlX3Jvdyhjb25maWdfZGF0YV9sWyd1cGRhdGUn XSwgMSkKIAogICAgIGRlZiBfdmVyaWZ5X21lc3NzYWdlcyhzZWxmLCB0ZXh0KToKICAgICAgICAg bWVzc2FnZXNfZWxlID0gc2VsZi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3BhbmVsc19hbmRfcXVlcnlf dG9vbF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3BhbmVs c19hbmRfcXVlcnlfdG9vbF90ZXN0LnB5CmluZGV4IDllZmFkOGEuLjY5YzNjYmEgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNrc19wYW5lbHNfYW5kX3F1ZXJ5 X3Rvb2xfdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hzc19jaGVja3Nf cGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QucHkKQEAgLTIxMSwxNyArMjExLDIzIEBAIGNsYXNz IENoZWNrRm9yWHNzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgICAgICJR dWVyeSB0b29sIChIaXN0b3J5IEVudHJ5KSIKICAgICAgICAgKQogCi0gICAgICAgICMgQ2hlY2sg Zm9yIGhpc3RvcnkgZGV0YWlscyBtZXNzYWdlCi0gICAgICAgIGhpc3RvcnlfZWxlID0gc2VsZi5k cml2ZXJcCi0gICAgICAgICAgICAuZmluZF9lbGVtZW50X2J5X2Nzc19zZWxlY3RvcigiLnF1ZXJ5 LWRldGFpbCAuY29udGVudC12YWx1ZSIpCi0KLSAgICAgICAgc291cmNlX2NvZGUgPSBoaXN0b3J5 X2VsZS5nZXRfYXR0cmlidXRlKCdpbm5lckhUTUwnKQorICAgICAgICByZXRyeSA9IDIKKyAgICAg ICAgd2hpbGUgcmV0cnkgPiAwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhp c3RvcnlfZWxlID0gc2VsZi5kcml2ZXIgXAorICAgICAgICAgICAgICAgICAgICAuZmluZF9lbGVt ZW50X2J5X2Nzc19zZWxlY3RvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICIucXVlcnktZGV0 YWlsIC5jb250ZW50LXZhbHVlIikKKyAgICAgICAgICAgICAgICBzb3VyY2VfY29kZSA9IGhpc3Rv cnlfZWxlLmdldF9hdHRyaWJ1dGUoJ2lubmVySFRNTCcpCisgICAgICAgICAgICAgICAgYnJlYWsK KyAgICAgICAgICAgIGV4Y2VwdCBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFeGNlcHRpb246CisgICAg ICAgICAgICAgICAgcmV0cnkgLT0gMQogCiAgICAgICAgIHNlbGYuX2NoZWNrX2VzY2FwZWRfY2hh cmFjdGVycygKICAgICAgICAgICAgIHNvdXJjZV9jb2RlLAogICAgICAgICAgICAgJyZsdDtzY3Jp cHQmZ3Q7YWxlcnQoMSkmbHQ7L3NjcmlwdCZndDsnLAogICAgICAgICAgICAgIlF1ZXJ5IHRvb2wg KEhpc3RvcnkgRGV0YWlscy1NZXNzYWdlKSIKICAgICAgICAgKQorCiAgICAgICAgIHJldHJ5ID0g MgogICAgICAgICB3aGlsZSByZXRyeSA+IDA6CiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi91dGlscy9yb3V0ZS5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5 CmluZGV4IGE4MDMxMGUuLmZhZmY1MmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL3Jv dXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5CkBAIC0xMjAsOSArMTIwLDgg QEAgY2xhc3MgQmFzZVRlc3RHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAg ICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjYW5ub3QgcnVuIGluOiAlcycgJQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25bJ2RhdGEnXVsndHlwZSddKQogCi0g ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFRlc3RTZXJ2ZXIoY2xzLCBzZXJ2ZXIpOgotICAg ICAgICBjbHMuc2VydmVyID0gc2VydmVyCisgICAgZGVmIHNldFRlc3RTZXJ2ZXIoc2VsZiwgc2Vy dmVyKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKIAogICAgIEBhYnN0cmFjdG1ldGhv ZAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgpAQCAtMTM3LDE3ICsxMzYsMTQgQEAgY2xhc3MgQmFz ZVRlc3RHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRUZXN0Q2xpZW50 KGNscywgdGVzdF9jbGllbnQpOgogICAgICAgICBjbHMudGVzdGVyID0gdGVzdF9jbGllbnQKIAot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXREcml2ZXIoY2xzLCBkcml2ZXIpOgotICAgICAg ICBjbHMuZHJpdmVyID0gZHJpdmVyCisgICAgZGVmIHNldERyaXZlcihzZWxmLCBkcml2ZXIpOgor ICAgICAgICBzZWxmLmRyaXZlciA9IGRyaXZlcgogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm IHNldFNlcnZlckluZm9ybWF0aW9uKGNscywgc2VydmVyX2luZm9ybWF0aW9uKToKLSAgICAgICAg Y2xzLnNlcnZlcl9pbmZvcm1hdGlvbiA9IHNlcnZlcl9pbmZvcm1hdGlvbgorICAgIGRlZiBzZXRT ZXJ2ZXJJbmZvcm1hdGlvbihzZWxmLCBzZXJ2ZXJfaW5mb3JtYXRpb24pOgorICAgICAgICBzZWxm LnNlcnZlcl9pbmZvcm1hdGlvbiA9IHNlcnZlcl9pbmZvcm1hdGlvbgogCi0gICAgQGNsYXNzbWV0 aG9kCi0gICAgZGVmIHNldFRlc3REYXRhYmFzZU5hbWUoY2xzLCBkYXRhYmFzZV9uYW1lKToKLSAg ICAgICAgY2xzLnRlc3RfZGIgPSBkYXRhYmFzZV9uYW1lCisgICAgZGVmIHNldFRlc3REYXRhYmFz ZU5hbWUoc2VsZiwgZGF0YWJhc2VfbmFtZSk6CisgICAgICAgIHNlbGYudGVzdF9kYiA9IGRhdGFi YXNlX25hbWUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRSZVNRTE1vZHVsZUxpc3Qo Y2xzLCBtb2R1bGVfbGlzdCk6CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9SRUFETUUgYi93 ZWIvcmVncmVzc2lvbi9SRUFETUUKaW5kZXggNDZhZGZjYy4uM2E3NDcyZSAxMDA2NDQKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vUkVBRE1FCisrKyBiL3dlYi9yZWdyZXNzaW9uL1JFQURNRQpAQCAtMTQx LDYgKzE0MSw2MSBAQCBQeXRob24gVGVzdHM6CiAgIGFuZCByZWdpc3RlcmVkIGF1dG9tYXRpY2Fs bHkgYnkgaXRzIG1vZHVsZSBuYW1lIGluCiAgICdwZ2FkbWluNC93ZWIvcGdhZG1pbi91dGlscy90 ZXN0LnB5JyBmaWxlLgogCistIFRvIHJ1biBGZWF0dXJlIFRlc3RzIGluIHBhcmFsbGVsIHVzaW5n IHNlbGVub2lkKGdyaWQgKyBkb2NrZXIpLCBzZWxlbm9pZAorICBuZWVkIHRvIGJlIGluc3RhbGxl ZC4gU3RlcHMgdG8gaW5zdGFsbCBzZWxlbm9pZCAtCisKKyAgLSBJbnN0YWxsICYgU3RhcnQgZG9j a2VyCisgICAgJHl1bSAteSBpbnN0YWxsIGRvY2tlciBkb2NrZXItcmVnaXN0cnkKKyAgICAkdmkg L2V0Yy9zeXNjb25maWcvZG9ja2VyICAgIyBpbiBPUFRJT05TIGFkZCDigJgtLXNlbGludXgtZW5h YmxlZD1mYWxzZeKAmQorICAgICRzeXN0ZW1jdGwgZW5hYmxlIGRvY2tlci5zZXJ2aWNlCisgICAg JHN5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZQorICAgICRzeXN0ZW1jdGwgc3RhdHVzIGRv Y2tlci5zZXJ2aWNlCisKKyAgLSBJbnN0YWxsICYgU3RhcnQgU2VsZW5vaWQKKyAgICAkY3VybCAt cyBodHRwczovL2Flcm9rdWJlLmNvbS9jbS9iYXNoIHwgYmFzaAorICAgICQuL2NtIHNlbGVub2lk IHN0YXJ0IC0tdm5jIC0tYXJncyAiLWxpbWl0IDMgLWNwdSAxLjUgLW1lbSAxLjVnIgorICAgICQu L2NtIHNlbGVub2lkLXVpIHN0YXJ0CisgICAgQ2hlY2sgc2VsZW5vaWQgc3RhdHVzIC0KKyAgICBo dHRwOi8vPElQIGFkZHJlc3Mgb2YgU2VsZW5vaWQgSW5zdGFsbGVkIG1hY2hpbmU+OjQ0NDQvc3Rh dHVzCisgICAgICAgICAgICAtIFNob3VsZCBzaG93IGpzb24gd2l0aCBicm93c2VycyBkZXRhaWxz CisgICAgaHR0cDovLzxJUCBhZGRyZXNzIG9mIFNlbGVub2lkIEluc3RhbGxlZCBtYWNoaW5lPjo4 MDgwLyMvCisgICAgICAgICAgICAtIENhcGFiaWxpdGllcyBzaG93cyBhdmFpbGFibGUgYnJvd3Nl cgorICAgIE5vdGUgOiBJbiAtLWFyZ3MgIi1saW1pdCAzIC1jcHUgMS41IC1tZW0gMS41ZyIKKyAg ICAgICAgICAgICAgICAtbGltaXQgMyA6bGltaXRzIG1heGltdW0gcGFyYWxsZWwgc2Vzc2lvbnMo ZG9ja2VycykgaW4gc2VsZW5vaWQsCisgICAgICAgICAgICAgICAgLWNwdSA6bGltaXQgbWVtb3J5 IGFuZCBDUFUgdXNhZ2UsCisgICAgICAgICAgICAgICAgLW1lbSA6bGltaXQgbWVtb3J5IHBlciBz ZXNzaW9uLgorICAgICAgICAgICBHZW5lcmFsbHkgbWF4IHBhcmFsbGVsIHNlc3Npb24gaXMgdGhl IG51bWJlciBvZiBjb3JlcyAqIDEuNSDigJMgMgorICAgICAgICAgICBZb3UgY2FuIGxpc3QgYXZh aWxhYmxlIGZsYWdzIGJ5IHVzaW5nIC4vY20gc2VsZW5vaWQgYXJncworICAgIEFkZGl0aW9uYWwg SW5mb3JtYXRpb24gYWJvdXQgdG9vbAorICAgICAgICAgICAgLSBodHRwczovL2Flcm9rdWJlLmNv bS9zZWxlbm9pZC9sYXRlc3QvCisKKyAgLSBVcGRhdGUgJ3Rlc3RfY29uZmlnLmpzb24nIHdpdGgg c2VsZW5vaWQgY29uZmlnIGluZm9ybWF0aW9uCisgICAgcGdBZG1pbl9kZWZhdWx0X3NlcnZlciAt CisgICAgICAgIEl0IGlzIHRoZSBJUCBhZGRyZXNzIGZvciB0aGUgbWFjaGluZSB3aGVyZSBwZ2Fk bWluIHNvdXJjZSBjb2RlIGlzCisgICAgICAgIHByZXNlbnQuVmFsdWUgc2hvdWxkIE5PVCBiZSAn MTI3LjAuMC4xJyBldmVuIHRob3VnaCBldmVyeXRoaW5nIHJ1bnMKKyAgICAgICAgb24gdGhlIHNh bWUgbWFjaGluZS4KKyAgICAgICAgWW91IGNhbiBnZXQgaXQgb24gbGludXggcnVubmluZyBjb21t YW5kICAnaWZjb25maWcgfCBncmVwIGluZXQnCisgICAgICAgIGUuZy4gLSAxOTIuMTY4LjE0My4x MjEKKyAgICBtYXhfcGFyYWxsZWxfc2Vzc2lvbnMgLQorICAgICAgICBUaGlzIGlzIG90aGVyIHdh eSB0byBjb250cm9sIG51bWJlciBvZiB0ZXN0cyB0byBiZSBydW4gaW4gcGFyYWxsZWwuCisgICAg ICAgIFRoaXMgc2hvdWxkIGJlIGVxdWFsIG9yIGxlc3MgdGhhbiBsaW1pdCBzcGVjaWZpZWQgd2hp bGUgc2V0dGluZyB1cAorICAgICAgICBzZWxlbm9pZAorICAgIHNlbGVub2lkX3VybCAtCisgICAg ICAgIFVybCBzaG91bGQgYmUgZm9ybWVkIGFzIGJlbG93IC0KKyAgICAgICAgaHR0cDovLzxJUCBh ZGRyZXNzIG9mIFNlbGVub2lkIEluc3RhbGxlZCBtYWNoaW5lPjo0NDQ0L3dkL2h1Yi8KKyAgICAg ICAgZS5nLiAtIHNlbGVub2lkX3VybCI6ICJodHRwOi8vMTkyLjE2OC4xNDMuMTIxOjQ0NDQvd2Qv aHViIgorICAgICAgICBJZiBzb3VyY2UgY29kZSAmIHNlbGVub2lkIHNlcnZlcnMgYXJlIG9uIHNh bWUgbWFjaGluZSB0aGVuCisgICAgICAgIHNlbGVub2lkIHVybCB2YWx1ZSBjYW4gYmUgLSAiaHR0 cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1YiIKKyAgICBicm93c2Vyc19saXN0IC0KKyAgICAgICAg TGlzdCBvZiBicm93c2VyIG5hbWUgJiB2ZXJzaW9uIGVuY2xvc2VkIGluIHt9IG9uIHdoaWNoIHRl c3RzIHRvIGJlCisgICAgICAgIGV4ZWN1dGVkLgorICAgICAgICBNYWtlIHN1cmUgbGlzdCBjb250 YWlucyB0aG9zZSBicm93c2VycyAmIHZlcnNpb25zIG9ubHkgd2hpY2ggYXJlIHNob3duCisgICAg ICAgIGluIGNhcGFiaWxpdGllcyB0YWIgd2hpbGUgaW4gc2VsZW5vaWQgc3RhdHVzIHdlYi1wYWdl LgorICAgICAgICBJZiB2ZXJzaW9uIGlzIG1lbnRpb24gYXMgbnVsbCwgdGhlbiBsYXRlc3QgdmVy c2lvbiBhdmFpbGFibGUgaW4KKyAgICAgICAgc2VsZW5vaWQgc2VydmVyIHdpbGwgYmUgdXNlZCBm b3IgZXhlY3V0aW9uLgorICAgICAgICBlLmcuIC0gWyB7Im5hbWUiOiAiQ2hyb21lIiwidmVyc2lv biI6ICI4MC4wIn0sCisgICAgICAgICAgICAgICAgIHsibmFtZSI6ICJGaXJlZm94IiwidmVyc2lv biI6ICI3NC4wIn1dCisKIC0gQ2hhbmdlIHRvIHRoZSByZWdyZXNzaW9uIHRlc3QgZGlyZWN0b3J5 OgogICAgICBydW4gJ2NkIHdlYi9yZWdyZXNzaW9uJwogCkBAIC0xOTAsOSArMjQ1LDE0IEBAIFB5 dGhvbiBUZXN0czoKICAgICAgRXhhbXBsZSAyKSAgRXhlY3V0ZSBvbmx5IHJldmVyc2UgZW5naW5l ZXJlZCBTUUwgdGVzdCBmcmFtZXdvcmsgZm9yIHNvbWUgbW9kdWxlcwogICAgICAgICAgcnVuICdw eXRob24gcnVudGVzdHMucHkgLS1wa2cgcmVzcWwgLS1tb2R1bGVzIHNlcXVlbmNlcyxmdW5jdGlv bnMnCiAKKwogICAgICBFeGFtcGxlIDMpIEV4Y2x1ZGUgcmV2ZXJzZSBlbmdpbmVlcmVkIFNRTCB0 ZXN0IGZyYW1ld29yayBmb3IgYWxsIG1vZHVsZXMKICAgICAgICAgIHJ1biAncHl0aG9uIHJ1bnRl c3RzLnB5IC0tZXhjbHVkZSByZXNxbCcKIAorLSBFeGVjdXRlIHVpIHNlbGVuaXVtIHRlc3RzIGlu IHBhcmFsbGVsIHVzaW5nIHNlbGVub2lkKHNlbGVuaXVtIGdyaWQgKyBkb2NrZXIpCisgICAgIEV4 YW1wbGUgOiAtLXBrZyBmZWF0dXJlX3Rlc3RzIC0tcGFyYWxsZWwKKworCiBDb2RlIENvdmVyYWdl OgogLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVf dXRpbHMvYXBwX3N0YXJ0ZXIucHkgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL2FwcF9z dGFydGVyLnB5CmluZGV4IGZlNGM0NDEuLjdkZTEwYjIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL2ZlYXR1cmVfdXRpbHMvYXBwX3N0YXJ0ZXIucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vZmVh dHVyZV91dGlscy9hcHBfc3RhcnRlci5weQpAQCAtNjEsMTEgKzYxLDE2IEBAIGNsYXNzIEFwcFN0 YXJ0ZXI6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5hYmxlIHRvIHN0 YXJ0IHB5dGhvbiBzZXJ2ZXIgZXZlbiBhZnRlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncmV0cnlpbmcgNjAgdGltZXMuJykKIAotICAgICAgICBsYXVuY2hfYnJvd3Nl cigwKQorICAgICAgICBpZiBzZWxmLmRyaXZlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxh dW5jaF9icm93c2VyKDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gImh0dHA6 Ly8iICsgc2VsZi5hcHBfY29uZmlnLkRFRkFVTFRfU0VSVkVSICsgIjoiIFwKKyAgICAgICAgICAg ICAgICAgICArIHJhbmRvbV9zZXJ2ZXJfcG9ydAogCiAgICAgZGVmIHN0b3BfYXBwKHNlbGYpOgog ICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiBzdG9wIHRoZSBzdGFydGVkIGFwcCBieSBraWxsaW5n IHByb2Nlc3MgIiIiCi0gICAgICAgIHNlbGYuZHJpdmVyLnF1aXQoKQorICAgICAgICBpZiBzZWxm LmRyaXZlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZHJpdmVyLnF1aXQoKQogICAg ICAgICAjIG9zLmtpbGxwZyBzdXBwb3J0ZWQgaW4gTWFjIGFuZCBVbml4IGFzIHRoaXMgZnVuY3Rp b24gbm90IHN1cHBvcnRlZCBpbgogICAgICAgICAjIFdpbmRvd3MKICAgICAgICAgdHJ5OgpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9sb2NhdG9ycy5weSBiL3dlYi9y ZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvbG9jYXRvcnMucHkKaW5kZXggYjgxNjlmYS4uNDc1NjIz MSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9sb2NhdG9ycy5weQor KysgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL2xvY2F0b3JzLnB5CkBAIC0xNzIsNiAr MTcyLDggQEAgY2xhc3MgUXVlcnlUb29sTG9jYXRvcnM6CiAKICAgICBuZXdfcm93X3hwYXRoID0g Ii8vZGl2W2NvbnRhaW5zKEBjbGFzcywgJ25ldy1yb3cnKV0iCiAKKyAgICBzY3JhdGNoX3BhZF9j c3MgPSAiLnNxbC1zY3JhdGNoID4gdGV4dGFyZWEiCisKICAgICBjb3B5X2J1dHRvbl9jc3MgPSAi I2J0bi1jb3B5LXJvdyIKIAogICAgIHBhc3RlX2J1dHRvbl9jc3MgPSAiI2J0bi1wYXN0ZS1yb3ci CkBAIC0yMTcsOSArMjE5LDkgQEAgY2xhc3MgUXVlcnlUb29sTG9jYXRvcnM6CiAgICAgYnRuX2Nv bW1pdCA9ICIjYnRuLWNvbW1pdCIKIAogICAgIHNob3dfcXVlcnlfaW50ZXJuYWxseV9idG4gPSBc Ci0gICAgICAgICIvL2RpdltsYWJlbFtub3JtYWxpemUtc3BhY2UoIiBcCi0gICAgICAgICJ0ZXh0 KCkpPSdTaG93IHF1ZXJpZXMgZ2VuZXJhdGVkIGludGVybmFsbHkgYnkgcGdBZG1pbj8nXV0iIFwK LSAgICAgICAgIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywndG9nZ2xlIGJ0bicpXSIKKyAgICAgICAg Ii8vZGl2W2xhYmVsW2NvbnRhaW5zKG5vcm1hbGl6ZS1zcGFjZSh0ZXh0KCkpLCIgXAorICAgICAg ICAiJ1Nob3cgcXVlcmllcyBnZW5lcmF0ZWQgaW50ZXJuYWxseSBieScpXV0vLyIgXAorICAgICAg ICAiZGl2W2NvbnRhaW5zKEBjbGFzcywndG9nZ2xlIGJ0bicpXSIKIAogICAgIGVkaXRhYmxlX2Nv bHVtbl9pY29uX3hwYXRoID0gIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywiIFwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIgJ2VkaXRhYmxlLWNvbHVtbi1oZWFkZXItaWNvbicpXSIg XApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2Uu cHkgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weQppbmRleCBk N2U4ZmUzLi4zMmVhODVmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxz L3BnYWRtaW5fcGFnZS5weQorKysgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRt aW5fcGFnZS5weQpAQCAtODgsMTEgKzg4LDE3IEBAIGNsYXNzIFBnYWRtaW5QYWdlOgogICAgICAg ICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgImJ1dHRvblt0eXBlPSdzYXZlJ10uYnRuLmJ0bi1wcmlt YXJ5IikpKQogICAgICAgICBzZWxmLmZpbmRfYnlfY3NzX3NlbGVjdG9yKCJidXR0b25bdHlwZT0n c2F2ZSddLmJ0bi5idG4tcHJpbWFyeSIpLlwKICAgICAgICAgICAgIGNsaWNrKCkKLQotICAgICAg ICBXZWJEcml2ZXJXYWl0KHNlbGYuZHJpdmVyLCAxMCkudW50aWwoCi0gICAgICAgICAgICBFQy52 aXNpYmlsaXR5X29mX2VsZW1lbnRfbG9jYXRlZCgKLSAgICAgICAgICAgICAgICAoQnkuWFBBVEgs Ci0gICAgICAgICAgICAgICAgICIvLypbQGlkPSd0cmVlJ10vLypbLj0nIiArIHNlcnZlcl9jb25m aWdbJ25hbWUnXSArICInXSIpKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgV2ViRHJpdmVy V2FpdChzZWxmLmRyaXZlciwgMTApLnVudGlsKAorICAgICAgICAgICAgICAgIEVDLnZpc2liaWxp dHlfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgICAgICAgICAoQnkuWFBBVEgsCisg ICAgICAgICAgICAgICAgICAgICAiLy8qW0BpZD0ndHJlZSddLy8qWy49JyIgKyBzZXJ2ZXJfY29u ZmlnWyduYW1lJ10gKyAiJ10iKSkpCisgICAgICAgIGV4Y2VwdCBUaW1lb3V0RXhjZXB0aW9uOgor ICAgICAgICAgICAgc2VsZi50b2dnbGVfb3Blbl9zZXJ2ZXJzX2dyb3VwKCkKKyAgICAgICAgICAg IFdlYkRyaXZlcldhaXQoc2VsZi5kcml2ZXIsIDEwKS51bnRpbCgKKyAgICAgICAgICAgICAgICBF Qy52aXNpYmlsaXR5X29mX2VsZW1lbnRfbG9jYXRlZCgKKyAgICAgICAgICAgICAgICAgICAgKEJ5 LlhQQVRILAorICAgICAgICAgICAgICAgICAgICAgIi8vKltAaWQ9J3RyZWUnXS8vKlsuPSciICsg c2VydmVyX2NvbmZpZ1snbmFtZSddICsgIiddIikpKQogCiAgICAgZGVmIG9wZW5fcXVlcnlfdG9v bChzZWxmKToKICAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgi VG9vbHMiKS5jbGljaygpCkBAIC05MTAsNyArOTE2LDExIEBAIGNsYXNzIFBnYWRtaW5QYWdlOgog ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudAogICAgICAgICAgICAgZXhjZXB0IChO b1N1Y2hFbGVtZW50RXhjZXB0aW9uLCBXZWJEcml2ZXJFeGNlcHRpb24pOgogICAgICAgICAgICAg ICAgIHJldHVybiBGYWxzZQotCisgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgc2VsZi5k cml2ZXIuc3dpdGNoX3RvLmRlZmF1bHRfY29udGVudCgpCisgICAgICAgIHNlbGYuZHJpdmVyLnN3 aXRjaF90b19mcmFtZSgKKyAgICAgICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90 YWdfbmFtZSgiaWZyYW1lIikpCisgICAgICAgIHNlbGYuZmluZF9ieV94cGF0aCgiLy9hW3RleHQo KT0nUXVlcnkgRWRpdG9yJ10iKS5jbGljaygpCiAgICAgICAgIGNvZGVtaXJyb3JfZWxlID0gV2Vi RHJpdmVyV2FpdCgKICAgICAgICAgICAgIHNlbGYuZHJpdmVyLCB0aW1lb3V0PXNlbGYudGltZW91 dCwgcG9sbF9mcmVxdWVuY3k9MC4wMSlcCiAgICAgICAgICAgICAudW50aWwoZmluZF9jb2RlbWly cm9yLApAQCAtMTE2MSwzICsxMTcxLDM0IEBAIGNsYXNzIFBnYWRtaW5QYWdlOgogICAgICAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBhdHRlbXB0ICs9IDEKICAgICAg ICAgcmV0dXJuIGNsaWNrX3N0YXR1cworCisgICAgZGVmIHBhc3RlX3ZhbHVlcyhzZWxmLCBlbD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEZ1bmN0aW9uIHBhc3RlIHZhbHVlcyBpbiBzY3Jh dGNoIHBhZAorICAgICAgICA6cGFyYW0gZWw6CisgICAgICAgICIiIgorICAgICAgICBhY3Rpb25z ID0gQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKQorICAgICAgICBpZiBlbDoKKyAgICAgICAgICAg ICMgTXVzdCBzdGVwCisgICAgICAgICAgICBlbC5jbGljaygpCisgICAgICAgICAgICBpZiBzZWxm LmRyaXZlci5jYXBhYmlsaXRpZXNbInBsYXRmb3JtTmFtZSJdID09ICdtYWMnOgorICAgICAgICAg ICAgICAgICMgRkYgc3RlcAorICAgICAgICAgICAgICAgIGVsLnNlbmRfa2V5cyhLZXlzLkNPTU1B TkQgKyAidiIpCisgICAgICAgICAgICAgICAgIyBDaHJvbWUgU3RlcAorICAgICAgICAgICAgICAg IGFjdGlvbnMua2V5X2Rvd24oS2V5cy5TSElGVCkKKyAgICAgICAgICAgICAgICBhY3Rpb25zLnNl bmRfa2V5cyhLZXlzLklOU0VSVCkKKyAgICAgICAgICAgICAgICBhY3Rpb25zLmtleV91cChLZXlz LlNISUZUKQorICAgICAgICAgICAgICAgIGFjdGlvbnMucGVyZm9ybSgpCisgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgIGVsLnNlbmRfa2V5cyhLZXlzLkNPTlRST0wgKyAidiIpCisK KyAgICBkZWYgd2FpdF9mb3JfZWxlbWVudF90b19iZV92aXNpYmxlKHNlbGYsIGRyaXZlciwgeHBh dGgsIHRpbWVfdmFsdWU9MjApOgorICAgICAgICAiIiJUaGlzIHdpbGwgd2FpdCB1bnRpbCBhbiBl bGVtZW50IGlzIHZpc2libGUgb24gcGFnZSIiIgorICAgICAgICBlbGVtZW50X2xvY2F0ZWRfc3Rh dHVzID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgV2ViRHJpdmVyV2FpdChk cml2ZXIsIHRpbWVfdmFsdWUpLnVudGlsKAorICAgICAgICAgICAgICAgICAgICBFQy52aXNpYmls aXR5X29mX2VsZW1lbnRfbG9jYXRlZCgoQnkuWFBBVEgsIHhwYXRoKSkpOgorICAgICAgICAgICAg ICAgIGVsZW1lbnRfbG9jYXRlZF9zdGF0dXMgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBUaW1lb3V0 RXhjZXB0aW9uOgorICAgICAgICAgICAgZWxlbWVudF9sb2NhdGVkX3N0YXR1cyA9IEZhbHNlCisg ICAgICAgIHJldHVybiBlbGVtZW50X2xvY2F0ZWRfc3RhdHVzCmRpZmYgLS1naXQgYS93ZWIvcmVn cmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5IGIvd2ViL3JlZ3Jlc3Npb24v cHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weQppbmRleCA5NzFmYzI0Li5iMjkyNDcyIDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5 CisrKyBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKQEAg LTgsNiArOCw4IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0 IHByaW50X2Z1bmN0aW9uCisKK2ltcG9ydCBmaWxlaW5wdXQKIGltcG9ydCB0cmFjZWJhY2sKIGlt cG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMTYsNyArMTgsMTcgQEAgaW1wb3J0IHBzeWNvcGcyCiBp bXBvcnQgc3FsaXRlMwogaW1wb3J0IHNodXRpbAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRp YWwKKworZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC53YWl0IGltcG9ydCBXZWJEcml2 ZXJXYWl0CiBmcm9tIHRlc3R0b29scy50ZXN0Y2FzZSBpbXBvcnQgY2xvbmVfdGVzdF93aXRoX25l d19pZAoraW1wb3J0IHJlCitpbXBvcnQgdGltZQorZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0 aW9ucyBpbXBvcnQgV2ViRHJpdmVyRXhjZXB0aW9uCitpbXBvcnQgdXJsbGliLnJlcXVlc3QgYXMg dXJsbGliCitpbXBvcnQganNvbgorZnJvbSBzZWxlbml1bSBpbXBvcnQgd2ViZHJpdmVyCitmcm9t IHNlbGVuaXVtLndlYmRyaXZlci5jaHJvbWUub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJvbSBz ZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydCBpbXBvcnQgZXhwZWN0ZWRfY29uZGl0aW9ucyBhcyBl YwogCiBpbXBvcnQgY29uZmlnCiBpbXBvcnQgcmVncmVzc2lvbgpAQCAtMTIxNiwzICsxMjI4LDI0 MiBAQCBkZWYgY3JlYXRlX2V4cGVjdGVkX291dHB1dChwYXJhbWV0ZXJzLCBhY3R1YWxfZGF0YSk6 CiAgICAgICAgICAgICBhY3R1YWxfZGF0YS5yZW1vdmUodmFsdWUpCiAgICAgICAgICAgICBicmVh awogICAgIHJldHVybiBleHBlY3RlZF9vdXRwdXQKKworCitkZWYgaXNfcGFyYWxsZWxfdWlfdGVz dHMoYXJncyk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIGNvdmVyYWdl IGFyZ3MgZXhpc3RzIGluIGNvbW1hbmQgbGluZSBhcmdzCisgICAgOnJldHVybjogYm9vbGVhbgor ICAgICIiIgorICAgIGlmICJwYXJhbGxlbCIgaW4gYXJncyBhbmQgYXJnc1sicGFyYWxsZWwiXToK KyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworCitkZWYgZ2V0X3NlbGVu aXVtX2dyaWRfc3RhdHVzX2FuZF9icm93c2VyX2xpc3Qoc2VsZW5vaWRfdXJsKToKKyAgICAiIiIK KyAgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBzZWxlbm9pZCBzdGF0dXMgZm9yIGdpdmVuIHVybAor ICAgIDpwYXJhbSBzZWxybm9pZF91cmw6CisgICAgOnJldHVybjogc3RhdHVzIG9mIHNlbGVub2lk ICYgbGlzdCBvZiBicm93c2VycyBhdmFpbGFibGUgd2l0aCBzZWxlbm9pZCBpZgorICAgIHN0YXR1 cyBpcyB1cAorICAgICIiIgorICAgIHNlbGVub2lkX3N0YXR1cyA9IEZhbHNlCisgICAgYnJvd3Nl cl9saXN0ID0gW10KKyAgICB0cnk6CisgICAgICAgIHNlbGVub2lkX3N0YXR1cyA9IGdldF9zZWxl bml1bV9ncmlkX3N0YXR1c19qc29uKHNlbGVub2lkX3VybCkKKyAgICAgICAgaWYgc2VsZW5vaWRf c3RhdHVzOgorICAgICAgICAgICAgYXZhaWxhYmxlX2Jyb3dzZXJzID0gc2VsZW5vaWRfc3RhdHVz WyJicm93c2VycyJdCisgICAgICAgICAgICBsaXN0X29mX2Jyb3dzZXJzID0gdGVzdF9zZXR1cC5j b25maWdfZGF0YVsnc2VsZW5vaWRfY29uZmlnJ11bCisgICAgICAgICAgICAgICAgJ2Jyb3dzZXJz X2xpc3QnXQorCisgICAgICAgICAgICBmb3IgYnJvd3NlciBpbiBsaXN0X29mX2Jyb3dzZXJzOgor ICAgICAgICAgICAgICAgIGlmIGJyb3dzZXJbIm5hbWUiXS5sb3dlcigpIGluIGF2YWlsYWJsZV9i cm93c2Vycy5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zID0gYXZhaWxhYmxl X2Jyb3dzZXJzWyhicm93c2VyWyJuYW1lIl0ubG93ZXIoKSldCisgICAgICAgICAgICAgICAgICAg IGlmIGJyb3dzZXJbInZlcnNpb24iXSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAg cHJpbnQoIlNwZWNpZmllZCB2ZXJzaW9uIG9mIGJyb3dzZXIgaXMgTm9uZS4gSGVuY2UgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdGVzdCB2ZXJzaW9uIG9mIHswfSBhdmFpbGFi bGUgd2l0aCBzZWxlbm9pZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VydmVy IHdpbGwgYmUgdXNlZC5cbiIuZm9ybWF0KGJyb3dzZXJbIm5hbWUiXSkpCisgICAgICAgICAgICAg ICAgICAgICAgICBicm93c2VyX2xpc3QuYXBwZW5kKGJyb3dzZXIpCisgICAgICAgICAgICAgICAg ICAgIGVsaWYgYnJvd3NlclsidmVyc2lvbiJdIGluIHZlcnNpb25zLmtleXMoKToKKyAgICAgICAg ICAgICAgICAgICAgICAgIGJyb3dzZXJfbGlzdC5hcHBlbmQoYnJvd3NlcikKKyAgICAgICAgICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJBdmFpbGFibGUgezB9IHZlcnNpb25zIHsxfSIuZm9ybWF0KAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyWyJuYW1lIl0sIHZlcnNpb25z LmtleXMoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiU3BlY2lmaWVkIFZlcnNp b24gPSB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyWyJ2 ZXJzaW9uIl0pKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBy aW50KCJ7MH0gaXMgTk9UIGF2YWlsYWJsZSIuZm9ybWF0KGJyb3dzZXJbIm5hbWUiXSkpCisgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAoc3RyKGUpKQorICAgICAgICBwcmludCgi VW5hYmxlIHRvIGZpbmQgU2VsZW5vaWQgU3RhdHVzIikKKworICAgIHJldHVybiBzZWxlbm9pZF9z dGF0dXMsIGJyb3dzZXJfbGlzdAorCisKK2RlZiBpc19mZWF0dXJlX3Rlc3RfaW5jbHVkZWQoYXJn dW1lbnRzKToKKyAgICAiIiIKKyAgICA6cGFyYW0gYXJndW1lbnRzOiBoaXMgaXMgY29tbWFuZCBs aW5lIGFyZ3VtZW50cyBmb3IgbW9kdWxlIG5hbWUgdG8KKyAgICB3aGljaCB0ZXN0IHN1aXRlIHdp bGwgcnVuCisgICAgOnJldHVybjogYm9vbGVhbiB2YWx1ZSB3aGV0aGVyIHRvIGV4ZWN1dGUgZmVh dHVyZSB0ZXN0cyBvciBOT1QgJgorICAgIGJyb3dzZXIgbmFtZSBpZiBmZWF0dXJlX3Rlc3RfdG9i ZV9pbmNsdWRlZCA9IFRydWUKKyAgICAiIiIKKyAgICBleGNsdWRlX3BrZ3MgPSBbXQorICAgIGlm IGFyZ3VtZW50c1snZXhjbHVkZSddIGlzIG5vdCBOb25lOgorICAgICAgICBleGNsdWRlX3BrZ3Mg Kz0gYXJndW1lbnRzWydleGNsdWRlJ10uc3BsaXQoJywnKQorCisgICAgZmVhdHVyZV90ZXN0X3Rv YmVfaW5jbHVkZWQgPSAnZmVhdHVyZV90ZXN0cycgbm90IGluIGV4Y2x1ZGVfcGtncyBhbmQgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3VtZW50c1sncGtnJ10gaXMgTm9u ZSBvciBhcmd1bWVudHNbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Br ZyddID09ICJhbGwiIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1l bnRzWydwa2cnXSA9PSAiZmVhdHVyZV90ZXN0cyIpCisgICAgcmV0dXJuIGZlYXR1cmVfdGVzdF90 b2JlX2luY2x1ZGVkCisKKworZGVmIGxhdW5jaF91cmxfaW5fYnJvd3Nlcihkcml2ZXJfaW5zdGFu Y2UsIHVybCwgdGl0bGU9J3BnQWRtaW4gNCcsIHRpbWVvdXQ9NDApOgorICAgICIiIgorICAgIEZ1 bmN0aW9uIGxhdW5jaGVzIHVybHMgaW4gc3BlY2lmaWVkIGRyaXZlciBpbnN0YW5jZQorICAgIDpw YXJhbSBkcml2ZXJfaW5zdGFuY2U6YnJvd3NlciBpbnN0YW5jZQorICAgIDpwYXJhbSB1cmw6dXJs IHRvIGJlIGxhdW5jaGVkCisgICAgOnBhcmFtIHRpdGxlOndlYi1wYWdlIHRpbGUgb24gc3VjY2Vz c2Z1bCBsYXVuY2ggZGVmYXVsdCBpcyAncGdBZG1pbiA0JworICAgIDpwYXJhbSB0aW1lb3V0Omlu IHNlY29uZHMgZm9yIGdldHRpbmcgc3BlY2lmaWVkIHRpdGxlIGRlZmF1bHQgaXMgMjBzZWMKKyAg ICA6cmV0dXJuOgorICAgICIiIgorICAgIGNvdW50ID0gdGltZW91dCAvIDUKKyAgICB3aGlsZSBj b3VudCA+IDA6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyaXZlcl9pbnN0YW5jZS5nZXQo dXJsKQorICAgICAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQoZHJpdmVyX2luc3RhbmNlLCAx MCkKKyAgICAgICAgICAgIHdhaXQudW50aWwoZWMudGl0bGVfaXModGl0bGUpKQorICAgICAgICAg ICAgYnJlYWsKKyAgICAgICAgZXhjZXB0IFdlYkRyaXZlckV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgdGltZS5zbGVlcCg2KQorICAgICAgICAgICAgY291bnQgLT0gMQorICAgICAgICAgICAg aWYgY291bnQgPT0gMDoKKyAgICAgICAgICAgICAgICBleGNlcHRpb25fbXNnID0gJ1dlYi1wYWdl IHRpdGxlIGRpZCBub3QgbWF0Y2ggdG8gezB9LiAnIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ1BsZWFzZSBjaGVjayB1cmwgezF9IGFjY2Vzc2libGUgb24gJyBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcm5ldC4nLmZvcm1hdCh0aXRsZSwgdXJsKQor ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihleGNlcHRpb25fbXNnKQorCisKK2RlZiBn ZXRfcmVtb3RlX3dlYmRyaXZlcihodWJfdXJsLCBicm93c2VyLCBicm93c2VyX3ZlciwgdGVzdF9u YW1lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9ucyByZXR1cm5zIHJlbW90ZSB3ZWItZHJp dmVyIGluc3RhbmNlIGNyZWF0ZWQgaW4gc2VsZW5vaWQKKyAgICBtYWNoaW5lLgorICAgIDpwYXJh bSBodWJfdXJsCisgICAgOnBhcmFtIGJyb3dzZXI6IGJyb3dzZXIgbmFtZQorICAgIDpwYXJhbSBi cm93c2VyX3ZlcjogdmVyc2lvbiBmb3IgYnJvd3NlcgorICAgIDpwYXJhbSB0ZXN0X25hbWU6IHRl c3QgbmFtZQorICAgIDpyZXR1cm46IHJlbW90ZSB3ZWItZHJpdmVyIGluc3RhbmNlIGZvciBzcGVj aWZpZWQgYnJvd3NlcgorICAgICIiIgorICAgIHRlc3RfbmFtZSA9IGJyb3dzZXIgKyBicm93c2Vy X3ZlciArICJfIiArIHRlc3RfbmFtZSArICItIiArIHRpbWUuc3RyZnRpbWUoCisgICAgICAgICIl bV8lZF8leV8lSF8lTV8lUyIsIHRpbWUubG9jYWx0aW1lKCkpCisgICAgZHJpdmVyX2xvY2FsID0g Tm9uZQorCisgICAgZGVzaXJlZF9jYXBhYmlsaXRpZXMgPSB7CisgICAgICAgICJ2ZXJzaW9uIjog YnJvd3Nlcl92ZXIsCisgICAgICAgICJlbmFibGVWTkMiOiBUcnVlLAorICAgICAgICAiZW5hYmxl VmlkZW8iOiBUcnVlLAorICAgICAgICAiZW5hYmxlTG9nIjogVHJ1ZSwKKyAgICAgICAgInZpZGVv TmFtZSI6IHRlc3RfbmFtZSArICIubXA0IiwKKyAgICAgICAgImxvZ05hbWUiOiB0ZXN0X25hbWUg KyAiLmxvZyIsCisgICAgICAgICJuYW1lIjogdGVzdF9uYW1lLAorICAgICAgICAidGltZVpvbmUi OiAiQXNpYS9Lb2xrYXRhIgorICAgIH0KKworICAgIGlmIGJyb3dzZXIgPT0gJ2ZpcmVmb3gnOgor ICAgICAgICBwcm9maWxlID0gd2ViZHJpdmVyLkZpcmVmb3hQcm9maWxlKCkKKyAgICAgICAgcHJv ZmlsZS5zZXRfcHJlZmVyZW5jZSgiZG9tLmRpc2FibGVfYmVmb3JldW5sb2FkIiwgVHJ1ZSkKKyAg ICAgICAgZGVzaXJlZF9jYXBhYmlsaXRpZXNbImJyb3dzZXJOYW1lIl0gPSAiZmlyZWZveCIKKyAg ICAgICAgZGVzaXJlZF9jYXBhYmlsaXRpZXNbInJlcXVpcmVXaW5kb3dGb2N1cyJdID0gVHJ1ZQor ICAgICAgICBkZXNpcmVkX2NhcGFiaWxpdGllc1siZW5hYmxlUGVyc2lzdGVudEhvdmVyIl0gPSBG YWxzZQorICAgICAgICBkcml2ZXJfbG9jYWwgPSB3ZWJkcml2ZXIuUmVtb3RlKAorICAgICAgICAg ICAgY29tbWFuZF9leGVjdXRvcj1odWJfdXJsLAorICAgICAgICAgICAgZGVzaXJlZF9jYXBhYmls aXRpZXM9ZGVzaXJlZF9jYXBhYmlsaXRpZXMsIGJyb3dzZXJfcHJvZmlsZT1wcm9maWxlKQorICAg IGVsaWYgYnJvd3NlciA9PSAnY2hyb21lJzoKKyAgICAgICAgb3B0aW9ucyA9IE9wdGlvbnMoKQor ICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS13aW5kb3ctc2l6ZT0xMjgwLDEwMjQiKQor ICAgICAgICBkZXNpcmVkX2NhcGFiaWxpdGllc1siYnJvd3Nlck5hbWUiXSA9ICJjaHJvbWUiCisg ICAgICAgIGRyaXZlcl9sb2NhbCA9IHdlYmRyaXZlci5SZW1vdGUoCisgICAgICAgICAgICBjb21t YW5kX2V4ZWN1dG9yPWh1Yl91cmwsCisgICAgICAgICAgICBkZXNpcmVkX2NhcGFiaWxpdGllcz1k ZXNpcmVkX2NhcGFiaWxpdGllcywgb3B0aW9ucz1vcHRpb25zKQorICAgIGVsc2U6CisgICAgICAg IHByaW50KCJTcGVjaWZpZWQgYnJvd3NlciBkb2VzIG5vdCBleGlzdC4iKQorCisgICAgIyBtYXhp bWl6ZSBicm93c2VyIHdpbmRvdworICAgIGRyaXZlcl9sb2NhbC5tYXhpbWl6ZV93aW5kb3coKQor CisgICAgIyBkcml2ZXJfbG9jYWwuaW1wbGljaXRseV93YWl0KDIpCisgICAgcmV0dXJuIGRyaXZl cl9sb2NhbAorCisKK2RlZiBnZXRfcGFyYWxsZWxfc2VxdWVudGlhbF9tb2R1bGVfbGlzdChtb2R1 bGVfbGlzdCk6CisgICAgIiIiCisgICAgRnVuY3Rpb25zIHNlZ3JlZ2F0ZSBwYXJhbGxlbCAmIHNl cXVlbnRpYWwgbW9kdWxlcworICAgIDpwYXJhbSBtb2R1bGVfbGlzdDogQ29tcGxldGUgbGlzdCBv ZiBtb2R1bGVzCisgICAgOnJldHVybjogcGFyYWxsZWwgJiBzZXF1ZW50aWFsIG1vZHVsZSBsaXN0 cworICAgICIiIgorICAgICMgbGlzdCBvZiBmaWxlcyBjb25zaXN0aW5nIHRlc3RzIHRoYXQgbmVl ZHMgdG8gYmUKKyAgICAjIGV4ZWN1dGVkIHNlcXVlbnRpYWxseQorICAgIHNlcXVlbnRpYWxfdGVz dHNfZmlsZSA9IFsKKyAgICAgICAgJ3BnYWRtaW4uZmVhdHVyZV90ZXN0cy5wZ191dGlsaXRpZXNf YmFja3VwX3Jlc3RvcmVfdGVzdCcsCisgICAgICAgICdwZ2FkbWluLmZlYXR1cmVfdGVzdHMucGdf dXRpbGl0aWVzX21haW50ZW5hbmNlX3Rlc3QnLAorICAgICAgICAncGdhZG1pbi5mZWF0dXJlX3Rl c3RzLmtleWJvYXJkX3Nob3J0Y3V0X3Rlc3QnXQorCisgICAgIyAgbGlzdCBvZiB0ZXN0cyBjYW4g YmUgZXhlY3V0ZWQgaW4gcGFyYWxsZWwKKyAgICBwYXJhbGxlbF90ZXN0cyA9IGxpc3QobW9kdWxl X2xpc3QpCisgICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVfbGlzdDoKKyAgICAgICAgaWYgc3RyKG1v ZHVsZVswXSkgaW4gc2VxdWVudGlhbF90ZXN0c19maWxlOgorICAgICAgICAgICAgcGFyYWxsZWxf dGVzdHMucmVtb3ZlKG1vZHVsZSkKKworICAgICMgIGxpc3Qgb2YgdGVzdHMgY2FuIGJlIGV4ZWN1 dGVkIGluIHNlcXVlbnRpYWxseQorICAgIHNlcXVlbnRpYWxfdGVzdHMgPSBsaXN0KAorICAgICAg ICBmaWx0ZXIobGFtYmRhIGk6IGkgbm90IGluIHBhcmFsbGVsX3Rlc3RzLAorICAgICAgICAgICAg ICAgbW9kdWxlX2xpc3QpKQorCisgICAgIyByZXR1cm4gcGFyYWxsZWwgJiBzZXF1ZW50aWFsIGxp c3RzCisgICAgcmV0dXJuIHBhcmFsbGVsX3Rlc3RzLCBzZXF1ZW50aWFsX3Rlc3RzCisKKworZGVm IGdldF9icm93c2VyX2RldGFpbHMoYnJvd3Nlcl9pbmZvX2RpY3QsIHVybCk6CisgICAgIiIiCisg ICAgRnVuY3Rpb24gZXh0cmFjdHMgYnJvd3NlciBuYW1lICYgdmVyc2lvbiBmcm9tIGJyb3dzZXIg aW5mbyBkaWN0CisgICAgaW4gdGVzdF9jb25maWcuanNvbgorICAgIDpwYXJhbSBicm93c2VyX2lu Zm9fZGljdDoKKyAgICA6cmV0dXJuOiBicm93c2VyIG5hbWUgJiB2ZXJzaW9uCisgICAgIiIiCisg ICAgYnJvd3Nlcl9uYW1lID0gYnJvd3Nlcl9pbmZvX2RpY3RbIm5hbWUiXS5sb3dlcigpCisgICAg YnJvd3Nlcl92ZXJzaW9uID0gYnJvd3Nlcl9pbmZvX2RpY3RbInZlcnNpb24iXQorICAgIGlmIGJy b3dzZXJfdmVyc2lvbiBpcyBOb25lOgorICAgICAgICBzZWxlbm9pZF9zdGF0dXMgPSBnZXRfc2Vs ZW5pdW1fZ3JpZF9zdGF0dXNfanNvbih1cmwpCisgICAgICAgIHZlcnNpb25zID0gc2VsZW5vaWRf c3RhdHVzWyJicm93c2VycyJdW2Jyb3dzZXJfbmFtZV0KKyAgICAgICAgYnJvd3Nlcl92ZXJzaW9u ID0gbWF4KHZlcnNpb25zKQorICAgIHJldHVybiBicm93c2VyX25hbWUsIGJyb3dzZXJfdmVyc2lv bgorCisKK2RlZiBwcmludF90ZXN0X3N1bW1hcnkoY29tcGxldGVfbW9kdWxlX2xpc3QsIHBhcmFs bGVsX3Rlc3RsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsX3Rlc3RzX2xp c3QsIGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92ZXJzaW9uKToKKyAgICAiIiIKKyAgICBQcmludHMg dGVzdCBzdW1tYXJ5IGFib3V0IHRvdGFsLCBwYXJhbGxlbCwgc2VxdWVudGlhbCwgYnJvd3NlciBu YW1lLAorICAgIGJyb3dzZXIgdmVyc2lvbiBpbmZvcm1hdGlvbgorICAgIDpwYXJhbSBjb21wbGV0 ZV9tb2R1bGVfbGlzdDoKKyAgICA6cGFyYW0gcGFyYWxsZWxfdGVzdGxpc3Q6CisgICAgOnBhcmFt IHNlcXVlbnRpYWxfdGVzdHNfbGlzdDoKKyAgICA6cGFyYW0gYnJvd3Nlcl9uYW1lOgorICAgIDpw YXJhbSBicm93c2VyX3ZlcnNpb246CisgICAgIiIiCisgICAgcHJpbnQoCisgICAgICAgICI9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSIsCisgICAgICAgIGZpbGU9c3lzLnN0ZGVycgorICAgICkKKyAgICBwcmludCgKKyAgICAg ICAgIlRvdGFsIFRlc3RzICMgezB9XG5QYXJhbGxlbCBUZXN0cyAjIHsxfSwgIgorICAgICAgICAi U2VxdWVudGlhbCBUZXN0cyAjIHsyfSIuZm9ybWF0KAorICAgICAgICAgICAgbGVuKGNvbXBsZXRl X21vZHVsZV9saXN0KSwgbGVuKHBhcmFsbGVsX3Rlc3RsaXN0KSwKKyAgICAgICAgICAgIGxlbihz ZXF1ZW50aWFsX3Rlc3RzX2xpc3QpKSwKKyAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgIHBy aW50KCJCcm93c2VyOiBbTmFtZTp7MH0sIFZlcnNpb246IHsxfV0iLmZvcm1hdCgKKyAgICAgICAg YnJvd3Nlcl9uYW1lLmNhcGl0YWxpemUoKSwgYnJvd3Nlcl92ZXJzaW9uKSwKKyAgICAgICAgZmls ZT1zeXMuc3RkZXJyKQorICAgIHByaW50KAorICAgICAgICAiPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIsCisgICAgICAg IGZpbGU9c3lzLnN0ZGVycgorICAgICkKKworCitkZWYgZ2V0X3NlbGVuaXVtX2dyaWRfc3RhdHVz X2pzb24oc2VsZW5vaWRfdXJsKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbnMgcmV0dXJucyBqc29u IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VsZW5vaWQgc2VydmVyCisgICAgOnBhcmFtIHNlbGVu b2lkX3VybDoKKyAgICA6cmV0dXJuOgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgc2VsZW5v aWRfc3RhdHVzID0gdXJsbGliLnVybG9wZW4oCisgICAgICAgICAgICAiaHR0cDovLyIgKyByZS5z cGxpdCgnLycsIChyZS5zcGxpdCgnLy8nLCBzZWxlbm9pZF91cmwsIDEpWzFdKSlbCisgICAgICAg ICAgICAgICAgMF0gKyAiL3N0YXR1cyIsIHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGVub2lkX3N0 YXR1cyA9IGpzb24ubG9hZChzZWxlbm9pZF9zdGF0dXMpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uo c2VsZW5vaWRfc3RhdHVzLCBkaWN0KToKKyAgICAgICAgICAgIHJldHVybiBzZWxlbm9pZF9zdGF0 dXMKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHByaW50KCJVbmFibGUgdG8g ZmluZCBTZWxlbm9pZCBTdGF0dXMuS2luZGx5IGNoZWNrIHVybCBwYXNzZWQgLSd7MH0nIi4KKyAg ICAgICAgICAgICAgZm9ybWF0KHNlbGVub2lkX3VybCkpCisgICAgICAgIHJldHVybiBOb25lCmRp ZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9yZXF1aXJlbWVudHMudHh0IGIvd2ViL3JlZ3Jlc3Np b24vcmVxdWlyZW1lbnRzLnR4dAppbmRleCAxZWI5MjJiLi4yMzY3ZjJhIDEwMDY0NAotLS0gYS93 ZWIvcmVncmVzc2lvbi9yZXF1aXJlbWVudHMudHh0CisrKyBiL3dlYi9yZWdyZXNzaW9uL3JlcXVp cmVtZW50cy50eHQKQEAgLTIxLDcgKzIxLDYgQEAgZml4dHVyZXM9PTMuMC4wCiBsaW5lY2FjaGUy PT0xLjAuMAogcGJyPT0zLjEuMQogcHljb2Rlc3R5bGU+PTIuNS4wCi1weXBlcmNsaXB+PTEuNi4w CiBweXRob24tbWltZXBhcnNlPT0xLjYuMAogdGVzdHNjZW5hcmlvcz09MC41LjAKIHRlc3R0b29s cz09Mi4zLjAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5IGIvd2ViL3Jl Z3Jlc3Npb24vcnVudGVzdHMucHkKaW5kZXggNDgwYWFhZC4uODc1OWJlMyAxMDA2NDQKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMu cHkKQEAgLTIxLDcgKzIxLDggQEAgaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGpzb24KIGltcG9y dCByYW5kb20KIGltcG9ydCBjb3ZlcmFnZQotCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGlt ZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCk6CkBAIC0x MzYsNyArMTM3LDcgQEAgc2NlbmFyaW9zLmFwcGx5X3NjZW5hcmlvID0gdGVzdF91dGlscy5hcHBs eV9zY2VuYXJpbwogCiAKIGRlZiBnZXRfc3VpdGUobW9kdWxlX2xpc3QsIHRlc3Rfc2VydmVyLCB0 ZXN0X2FwcF9jbGllbnQsIHNlcnZlcl9pbmZvcm1hdGlvbiwKLSAgICAgICAgICAgICAgdGVzdF9k Yl9uYW1lKToKKyAgICAgICAgICAgICAgdGVzdF9kYl9uYW1lLCBkcml2ZXJfcGFzc2VkKToKICAg ICAiIiIKICAgICAgVGhpcyBmdW5jdGlvbiBhZGQgdGhlIHRlc3RzIHRvIHRlc3Qgc3VpdGUgYW5k IHJldHVybiBtb2RpZmllZCB0ZXN0IHN1aXRlCiAgICAgICB2YXJpYWJsZS4KQEAgLTE2Niw3ICsx NjcsNyBAQCBkZWYgZ2V0X3N1aXRlKG1vZHVsZV9saXN0LCB0ZXN0X3NlcnZlciwgdGVzdF9hcHBf Y2xpZW50LCBzZXJ2ZXJfaW5mb3JtYXRpb24sCiAgICAgICAgIG9iai5zZXRBcHAoYXBwKQogICAg ICAgICBvYmouc2V0VGVzdENsaWVudCh0ZXN0X2FwcF9jbGllbnQpCiAgICAgICAgIG9iai5zZXRU ZXN0U2VydmVyKHRlc3Rfc2VydmVyKQotICAgICAgICBvYmouc2V0RHJpdmVyKGRyaXZlcikKKyAg ICAgICAgb2JqLnNldERyaXZlcihkcml2ZXJfcGFzc2VkKQogICAgICAgICBvYmouc2V0U2VydmVy SW5mb3JtYXRpb24oc2VydmVyX2luZm9ybWF0aW9uKQogICAgICAgICBvYmouc2V0VGVzdERhdGFi YXNlTmFtZSh0ZXN0X2RiX25hbWUpCiAgICAgICAgIHNjZW5hcmlvID0gc2NlbmFyaW9zLmdlbmVy YXRlX3NjZW5hcmlvcyhvYmopCkBAIC0yMDcsNTcgKzIwOCw2MiBAQCBkZWYgZ2V0X3Rlc3RfbW9k dWxlcyhhcmd1bWVudHMpOgogICAgICAgICBleGNsdWRlX3BrZ3MgKz0gYXJndW1lbnRzWydleGNs dWRlJ10uc3BsaXQoJywnKQogCiAgICAgaWYgJ2ZlYXR1cmVfdGVzdHMnIG5vdCBpbiBleGNsdWRl X3BrZ3MgYW5kIFwKLSAgICAgICAgICAgIChhcmd1bWVudHNbJ3BrZyddIGlzIE5vbmUgb3IgYXJn dW1lbnRzWydwa2cnXSA9PSAiYWxsIiBvcgotICAgICAgICAgICAgIGFyZ3VtZW50c1sncGtnJ10g PT0gImZlYXR1cmVfdGVzdHMiKToKLQotICAgICAgICBmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJk cml2ZXIKLSAgICAgICAgZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY2hyb21lLm9wdGlvbnMgaW1w b3J0IE9wdGlvbnMKLSAgICAgICAgZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmRlc2ly ZWRfY2FwYWJpbGl0aWVzIGltcG9ydCBcCi0gICAgICAgICAgICBEZXNpcmVkQ2FwYWJpbGl0aWVz Ci0KLSAgICAgICAgZGVmYXVsdF9icm93c2VyID0gJ2Nocm9tZScKLQotICAgICAgICAjIENoZWNr IGRlZmF1bHQgYnJvd3NlciBwcm92aWRlZCB0aHJvdWdoIGNvbW1hbmQgbGluZS4gSWYgcHJvdmlk ZWQKLSAgICAgICAgIyB0aGVuIHVzZSB0aGF0IGJyb3dzZXIgYXMgZGVmYXVsdCBicm93c2VyIGVs c2UgY2hlY2sgZm9yIHRoZSBzZXR0aW5nCi0gICAgICAgICMgcHJvdmlkZWQgaW4gdGVzdF9jb25m aWcuanNvbiBmaWxlLgotICAgICAgICBpZiAoCi0gICAgICAgICAgICAnZGVmYXVsdF9icm93c2Vy JyBpbiBhcmd1bWVudHMgYW5kCi0gICAgICAgICAgICBhcmd1bWVudHNbJ2RlZmF1bHRfYnJvd3Nl ciddIGlzIG5vdCBOb25lCi0gICAgICAgICk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Jyb3dzZXIg PSBhcmd1bWVudHNbJ2RlZmF1bHRfYnJvd3NlciddLmxvd2VyKCkKLSAgICAgICAgZWxpZiAoCi0g ICAgICAgICAgICB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhIGFuZAotICAgICAgICAgICAgImRlZmF1 bHRfYnJvd3NlciIgaW4gdGVzdF9zZXR1cC5jb25maWdfZGF0YQotICAgICAgICApOgotICAgICAg ICAgICAgZGVmYXVsdF9icm93c2VyID0gdGVzdF9zZXR1cC5jb25maWdfZGF0YVsnZGVmYXVsdF9i cm93c2VyJ10ubG93ZXIoKQotCi0gICAgICAgIGlmIGRlZmF1bHRfYnJvd3NlciA9PSAnZmlyZWZv eCc6Ci0gICAgICAgICAgICBjYXAgPSBEZXNpcmVkQ2FwYWJpbGl0aWVzLkZJUkVGT1gKLSAgICAg ICAgICAgIGNhcFsncmVxdWlyZVdpbmRvd0ZvY3VzJ10gPSBUcnVlCi0gICAgICAgICAgICBjYXBb J2VuYWJsZVBlcnNpc3RlbnRIb3ZlciddID0gRmFsc2UKLSAgICAgICAgICAgIHByb2ZpbGUgPSB3 ZWJkcml2ZXIuRmlyZWZveFByb2ZpbGUoKQotICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy ZW5jZSgiZG9tLmRpc2FibGVfYmVmb3JldW5sb2FkIiwgVHJ1ZSkKLSAgICAgICAgICAgIGRyaXZl ciA9IHdlYmRyaXZlci5GaXJlZm94KGNhcGFiaWxpdGllcz1jYXAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmaXJlZm94X3Byb2ZpbGU9cHJvZmlsZSkKLSAgICAgICAg ICAgIGRyaXZlci5pbXBsaWNpdGx5X3dhaXQoMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg IG9wdGlvbnMgPSBPcHRpb25zKCkKLSAgICAgICAgICAgIGlmIHRlc3Rfc2V0dXAuY29uZmlnX2Rh dGE6Ci0gICAgICAgICAgICAgICAgaWYgJ2hlYWRsZXNzX2Nocm9tZScgaW4gdGVzdF9zZXR1cC5j b25maWdfZGF0YToKLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9zZXR1cC5jb25maWdfZGF0 YVsnaGVhZGxlc3NfY2hyb21lJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFk ZF9hcmd1bWVudCgiLS1oZWFkbGVzcyIpCi0gICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVu dCgiLS1uby1zYW5kYm94IikKLSAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWRp c2FibGUtc2V0dWlkLXNhbmRib3giKQotICAgICAgICAgICAgb3B0aW9ucy5hZGRfYXJndW1lbnQo Ii0td2luZG93LXNpemU9MTI4MCwxMDI0IikKLSAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3Vt ZW50KCItLWRpc2FibGUtaW5mb2JhcnMiKQotICAgICAgICAgICAgb3B0aW9ucy5hZGRfZXhwZXJp bWVudGFsX29wdGlvbigndzNjJywgRmFsc2UpCi0gICAgICAgICAgICBkcml2ZXIgPSB3ZWJkcml2 ZXIuQ2hyb21lKGNocm9tZV9vcHRpb25zPW9wdGlvbnMpCi0KLSAgICAgICAgIyBtYXhpbWl6ZSBi cm93c2VyIHdpbmRvdwotICAgICAgICBkcml2ZXIubWF4aW1pemVfd2luZG93KCkKLQotICAgICAg ICBhcHBfc3RhcnRlciA9IEFwcFN0YXJ0ZXIoZHJpdmVyLCBjb25maWcpCi0gICAgICAgIGFwcF9z dGFydGVyLnN0YXJ0X2FwcCgpCisgICAgICAgIChhcmd1bWVudHNbJ3BrZyddIGlzIE5vbmUgb3Ig YXJndW1lbnRzWydwa2cnXSA9PSAiYWxsIiBvcgorICAgICAgICAgYXJndW1lbnRzWydwa2cnXSA9 PSAiZmVhdHVyZV90ZXN0cyIpOgorCisgICAgICAgIGlmIGFyZ3VtZW50c1sncGtnJ10gPT0gImZl YXR1cmVfdGVzdHMiOgorICAgICAgICAgICAgZXhjbHVkZV9wa2dzLmV4dGVuZChbJ3Jlc3FsJ10p CisKKyAgICAgICAgaWYgbm90IHRlc3RfdXRpbHMuaXNfcGFyYWxsZWxfdWlfdGVzdHMoYXJncyk6 CisgICAgICAgICAgICBmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJkcml2ZXIKKyAgICAgICAgICAg IGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNocm9tZS5vcHRpb25zIGltcG9ydCBPcHRpb25zCisg ICAgICAgICAgICBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uZGVzaXJlZF9jYXBhYmls aXRpZXMgaW1wb3J0IFwKKyAgICAgICAgICAgICAgICBEZXNpcmVkQ2FwYWJpbGl0aWVzCisKKyAg ICAgICAgICAgIGRlZmF1bHRfYnJvd3NlciA9ICdjaHJvbWUnCisKKyAgICAgICAgICAgICMgQ2hl Y2sgZGVmYXVsdCBicm93c2VyIHByb3ZpZGVkIHRocm91Z2ggY29tbWFuZCBsaW5lLiBJZiBwcm92 aWRlZAorICAgICAgICAgICAgIyB0aGVuIHVzZSB0aGF0IGJyb3dzZXIgYXMgZGVmYXVsdCBicm93 c2VyIGVsc2UgY2hlY2sgZm9yIHRoZQorICAgICAgICAgICAgIyBzZXR0aW5nIHByb3ZpZGVkIGlu IHRlc3RfY29uZmlnLmpzb24gZmlsZS4KKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAg ICAnZGVmYXVsdF9icm93c2VyJyBpbiBhcmd1bWVudHMgYW5kCisgICAgICAgICAgICAgICAgYXJn dW1lbnRzWydkZWZhdWx0X2Jyb3dzZXInXSBpcyBub3QgTm9uZQorICAgICAgICAgICAgKToKKyAg ICAgICAgICAgICAgICBkZWZhdWx0X2Jyb3dzZXIgPSBhcmd1bWVudHNbJ2RlZmF1bHRfYnJvd3Nl ciddLmxvd2VyKCkKKyAgICAgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgICAgIHRlc3Rfc2V0 dXAuY29uZmlnX2RhdGEgYW5kCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYnJvd3NlciIgaW4g dGVzdF9zZXR1cC5jb25maWdfZGF0YQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBk ZWZhdWx0X2Jyb3dzZXIgPSB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWworICAgICAgICAgICAgICAg ICAgICAnZGVmYXVsdF9icm93c2VyJ10ubG93ZXIoKQorCisgICAgICAgICAgICBpZiBkZWZhdWx0 X2Jyb3dzZXIgPT0gJ2ZpcmVmb3gnOgorICAgICAgICAgICAgICAgIGNhcCA9IERlc2lyZWRDYXBh YmlsaXRpZXMuRklSRUZPWAorICAgICAgICAgICAgICAgIGNhcFsncmVxdWlyZVdpbmRvd0ZvY3Vz J10gPSBUcnVlCisgICAgICAgICAgICAgICAgY2FwWydlbmFibGVQZXJzaXN0ZW50SG92ZXInXSA9 IEZhbHNlCisgICAgICAgICAgICAgICAgcHJvZmlsZSA9IHdlYmRyaXZlci5GaXJlZm94UHJvZmls ZSgpCisgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZSgiZG9tLmRpc2FibGVf YmVmb3JldW5sb2FkIiwgVHJ1ZSkKKyAgICAgICAgICAgICAgICBkcml2ZXIgPSB3ZWJkcml2ZXIu RmlyZWZveChjYXBhYmlsaXRpZXM9Y2FwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZpcmVmb3hfcHJvZmlsZT1wcm9maWxlKQorICAgICAgICAgICAgICAgIGRy aXZlci5pbXBsaWNpdGx5X3dhaXQoMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgb3B0aW9ucyA9IE9wdGlvbnMoKQorICAgICAgICAgICAgICAgIGlmIHRlc3Rfc2V0dXAuY29u ZmlnX2RhdGE6CisgICAgICAgICAgICAgICAgICAgIGlmICdoZWFkbGVzc19jaHJvbWUnIGluIHRl c3Rfc2V0dXAuY29uZmlnX2RhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X3Nl dHVwLmNvbmZpZ19kYXRhWydoZWFkbGVzc19jaHJvbWUnXToKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1oZWFkbGVzcyIpCisgICAgICAgICAgICAg ICAgb3B0aW9ucy5hZGRfYXJndW1lbnQoIi0tbm8tc2FuZGJveCIpCisgICAgICAgICAgICAgICAg b3B0aW9ucy5hZGRfYXJndW1lbnQoIi0tZGlzYWJsZS1zZXR1aWQtc2FuZGJveCIpCisgICAgICAg ICAgICAgICAgb3B0aW9ucy5hZGRfYXJndW1lbnQoIi0td2luZG93LXNpemU9MTI4MCwxMDI0IikK KyAgICAgICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWluZm9iYXJz IikKKyAgICAgICAgICAgICAgICBvcHRpb25zLmFkZF9leHBlcmltZW50YWxfb3B0aW9uKCd3M2Mn LCBGYWxzZSkKKyAgICAgICAgICAgICAgICBkcml2ZXIgPSB3ZWJkcml2ZXIuQ2hyb21lKGNocm9t ZV9vcHRpb25zPW9wdGlvbnMpCisKKyAgICAgICAgICAgICMgbWF4aW1pemUgYnJvd3NlciB3aW5k b3cKKyAgICAgICAgICAgIGRyaXZlci5tYXhpbWl6ZV93aW5kb3coKQorCisgICAgICAgICAgICBh cHBfc3RhcnRlciA9IEFwcFN0YXJ0ZXIoZHJpdmVyLCBjb25maWcpCisgICAgICAgICAgICBhcHBf c3RhcnRlci5zdGFydF9hcHAoKQogCiAgICAgaGFuZGxlX2NsZWFudXAgPSB0ZXN0X3V0aWxzLmdl dF9jbGVhbnVwX2hhbmRsZXIodGVzdF9jbGllbnQsIGFwcF9zdGFydGVyKQogICAgICMgUmVnaXN0 ZXIgY2xlYW51cCBmdW5jdGlvbiB0byBjbGVhbnVwIG9uIGV4aXQKQEAgLTMxOSw2ICszMjUsOSBA QCBkZWYgYWRkX2FyZ3VtZW50cygpOgogICAgICAgICAnLS1tb2R1bGVzJywKICAgICAgICAgaGVs cD0nRXhlY3V0ZXMgdGhlIGZlYXR1cmUgdGVzdCBmb3Igc3BlY2lmaWMgbW9kdWxlcyBpbiBwa2cn CiAgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcGFyYWxsZWwnLCBuYXJncz0nPycs IGNvbnN0PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWJvb2wsIGRlZmF1bHQ9 RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdFbmFibGUgcGFyYWxsZWwgRmVh dHVyZSBUZXN0cycpCiAgICAgYXJnID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgcmV0dXJu IGFyZwpAQCAtNDA0LDExNyArNDEzLDIxMyBAQCBjbGFzcyBTdHJlYW1Ub0xvZ2dlcihvYmplY3Qp OgogICAgICAgICBwYXNzCiAKIAotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAjIEZh aWx1cmUgZGV0ZWN0ZWQ/Ci0gICAgZmFpbHVyZSA9IEZhbHNlCi0gICAgdGVzdF9yZXN1bHQgPSBk aWN0KCkKLSAgICBjb3YgPSBOb25lCitkZWYgZXhlY3V0ZV90ZXN0KHRlc3RfbW9kdWxlX2xpc3Rf cGFzc2VkLCBzZXJ2ZXJfcGFzc2VkLCBkcml2ZXJfcGFzc2VkKToKKyAgICAiIiIKKyAgICBGdW5j dGlvbiBleGVjdXRlcyBhY3R1YWxseSB0ZXN0CisgICAgOnBhcmFtIHRlc3RfbW9kdWxlX2xpc3Rf cGFzc2VkOgorICAgIDpwYXJhbSBzZXJ2ZXJfcGFzc2VkOgorICAgIDpwYXJhbSBkcml2ZXJfcGFz c2VkOgorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBwcmludCgiXG49 PT09PT09PT09PT09UnVubmluZyB0aGUgdGVzdCBjYXNlcyBmb3IgJyVzJyA9PT09PT09PT09PT09 IgorICAgICAgICAgICAgICAlIHNlcnZlcl9wYXNzZWRbJ25hbWUnXSwgZmlsZT1zeXMuc3RkZXJy KQorICAgICAgICAjIENyZWF0ZSB0ZXN0IHNlcnZlcgorICAgICAgICBzZXJ2ZXJfaW5mb3JtYXRp b24gPSBcCisgICAgICAgICAgICB0ZXN0X3V0aWxzLmNyZWF0ZV9wYXJlbnRfc2VydmVyX25vZGUo c2VydmVyX3Bhc3NlZCkKKworICAgICAgICAjIENyZWF0ZSB0ZXN0IGRhdGFiYXNlIHdpdGggcmFu ZG9tIG51bWJlciB0byBhdm9pZCBjb25mbGljdCBpbgorICAgICAgICAjIHBhcmFsbGVsIGV4ZWN1 dGlvbiBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zLiBUaGlzIGRhdGFiYXNlIHdpbGwgYmUKKyAgICAg ICAgIyB1c2VkIGFjcm9zcyBhbGwgZmVhdHVyZSB0ZXN0cy4KKyAgICAgICAgdGVzdF9kYl9uYW1l ID0gImFjY2VwdGFuY2VfdGVzdF9kYiIgKyBcCisgICAgICAgICAgICAgICAgICAgICAgIHN0cihy YW5kb20ucmFuZGludCgxMDAwMCwgNjU1MzUpKQorICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91 dGlscy5nZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlcnZlcl9wYXNzZWRbJ2RiJ10s CisgICAgICAgICAgICBzZXJ2ZXJfcGFzc2VkWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2Vy dmVyX3Bhc3NlZFsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlcnZlcl9wYXNzZWRbJ2hv c3QnXSwKKyAgICAgICAgICAgIHNlcnZlcl9wYXNzZWRbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNl cnZlcl9wYXNzZWRbJ3NzbG1vZGUnXQorICAgICAgICApCiAKLSAgICAjIFNldCBzaWduYWwgaGFu ZGxlciBmb3IgY2xlYW51cAotICAgIHNpZ25hbF9saXN0ID0gZGlyKHNpZ25hbCkKLSAgICByZXF1 aXJlZF9zaWduYWxfbGlzdCA9IFsnU0lHVEVSTScsICdTSUdBQlJUJywgJ1NJR1FVSVQnLCAnU0lH SU5UJ10KLSAgICAjIEdldCB0aGUgT1Mgd2lzZSBzdXBwb3J0ZWQgc2lnbmFscwotICAgIHN1cHBv cnRlZF9zaWduYWxfbGlzdCA9IFtzaWcgZm9yIHNpZyBpbiByZXF1aXJlZF9zaWduYWxfbGlzdCBp ZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWcgaW4gc2lnbmFsX2xpc3RdCi0gICAg Zm9yIHNpZyBpbiBzdXBwb3J0ZWRfc2lnbmFsX2xpc3Q6Ci0gICAgICAgIHNpZ25hbC5zaWduYWwo Z2V0YXR0cihzaWduYWwsIHNpZyksIHNpZ19oYW5kbGVyKQorICAgICAgICAjIEFkZCB0aGUgc2Vy dmVyIHZlcnNpb24gaW4gc2VydmVyIGluZm9ybWF0aW9uCisgICAgICAgIHNlcnZlcl9pbmZvcm1h dGlvblsnc2VydmVyX3ZlcnNpb24nXSA9IGNvbm5lY3Rpb24uc2VydmVyX3ZlcnNpb24KKyAgICAg ICAgc2VydmVyX2luZm9ybWF0aW9uWyd0eXBlJ10gPSBzZXJ2ZXJfcGFzc2VkWyd0eXBlJ10KKwor ICAgICAgICAjIERyb3AgdGhlIGRhdGFiYXNlIGlmIGFscmVhZHkgZXhpc3RzLgorICAgICAgICB0 ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgdGVzdF9kYl9uYW1lKQorCisgICAg ICAgICMgQ3JlYXRlIGRhdGFiYXNlCisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2RhdGFiYXNl KHNlcnZlcl9wYXNzZWQsIHRlc3RfZGJfbmFtZSkKKworICAgICAgICAjIENvbmZpZ3VyZSBwcmVm ZXJlbmNlcyBmb3IgdGhlIHRlc3QgY2FzZXMKKyAgICAgICAgdGVzdF91dGlscy5jb25maWd1cmVf cHJlZmVyZW5jZXMoCisgICAgICAgICAgICBkZWZhdWx0X2JpbmFyeV9wYXRoPXNlcnZlcl9wYXNz ZWRbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10pCisKKyAgICAgICAgIyBHZXQgdW5pdCB0ZXN0IHN1 aXQKKyAgICAgICAgc3VpdGUgPSBnZXRfc3VpdGUodGVzdF9tb2R1bGVfbGlzdF9wYXNzZWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXNzZWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf aW5mb3JtYXRpb24sIHRlc3RfZGJfbmFtZSwgZHJpdmVyX3Bhc3NlZCkKKworICAgICAgICAjIFJ1 biB1bml0IHRlc3Qgc3VpdCBjcmVhdGVkCisgICAgICAgIHRlc3RzID0gdW5pdHRlc3QuVGV4dFRl c3RSdW5uZXIoc3RyZWFtPXN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVzY3JpcHRpb25zPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIpLnJ1bihzdWl0ZSkKKworICAgICAgICAjIHByb2Nl c3NpbmcgcmVzdWx0cworICAgICAgICByYW5fdGVzdHMsIGZhaWxlZF9jYXNlcywgc2tpcHBlZF9j YXNlcywgcGFzc2VkX2Nhc2VzID0gXAorICAgICAgICAgICAgZ2V0X3Rlc3RzX3Jlc3VsdCh0ZXN0 cykKKworICAgICAgICAjIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiBzb21lIHRlc3RzIGFyZSBydW5u aW5nIHBhcmFsbGVsCisgICAgICAgICMgJiBzb21lIHNlcXVlbnRpYWwgaW4gY2FzZSBvZiBwYXJh bGxlbCB1aSB0ZXN0cworICAgICAgICBpZiB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5nZXRO YW1lKCkgPT0gInNlcXVlbnRpYWxfdGVzdHMiOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg ICAgICAgIGlmIHRlc3RfcmVzdWx0W3NlcnZlcl9wYXNzZWRbJ25hbWUnXV1bMF0gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgICAgIHJhbl90ZXN0cyA9IHRlc3RfcmVzdWx0W3NlcnZlcl9w YXNzZWRbJ25hbWUnXV1bMF0gKyBcCisgICAgICAgICAgICAgICAgICAgICAgICByYW5fdGVzdHMK KyAgICAgICAgICAgICAgICAgICAgZmFpbGVkX2Nhc2VzLnVwZGF0ZSh0ZXN0X3Jlc3VsdFtzZXJ2 ZXJfcGFzc2VkWyduYW1lJ11dWzFdKQorICAgICAgICAgICAgICAgICAgICBza2lwcGVkX2Nhc2Vz LnVwZGF0ZSh0ZXN0X3Jlc3VsdFtzZXJ2ZXJfcGFzc2VkWyduYW1lJ11dWzJdKQorICAgICAgICAg ICAgICAgICAgICBwYXNzZWRfY2FzZXMudXBkYXRlKHRlc3RfcmVzdWx0W3NlcnZlcl9wYXNzZWRb J25hbWUnXV1bM10pCisgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRbc2VydmVyX3Bhc3NlZFsn bmFtZSddXSA9IFtyYW5fdGVzdHMsIGZhaWxlZF9jYXNlcywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfY2FzZXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWRfY2Fz ZXNdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwor CisgICAgICAgICMgQWRkIGZpbmFsIHJlc3VsdHMgc2VydmVyIHdpc2UgaW4gdGVzdF9yZXN1bHQg ZGljdAorICAgICAgICB0ZXN0X3Jlc3VsdFtzZXJ2ZXJfcGFzc2VkWyduYW1lJ11dID0gW3Jhbl90 ZXN0cywgZmFpbGVkX2Nhc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNraXBwZWRfY2FzZXMsIHBhc3NlZF9jYXNlc10KKworICAgICAgICAjIFNldCBl bXB0eSBsaXN0IGZvciAncGFzc2VkJyBwYXJhbWV0ZXIgZm9yIGVhY2ggdGVzdFJ1bi4KKyAgICAg ICAgIyBTbyB0aGF0IGl0IHdpbGwgbm90IGFwcGVuZCBzYW1lIHRlc3QgY2FzZSBuYW1lCisgICAg ICAgICMgdW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQucGFzc2VkID0gW10KKworICAgICAgICAj IERyb3AgdGhlIHRlc3RpbmcgZGF0YWJhc2UgY3JlYXRlZCBpbml0aWFsbHkKKyAgICAgICAgaWYg Y29ubmVjdGlvbjoKKyAgICAgICAgICAgIHRlc3RfdXRpbHMuZHJvcF9kYXRhYmFzZShjb25uZWN0 aW9uLCB0ZXN0X2RiX25hbWUpCisgICAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKIAotICAg ICMgU2V0IGJhc2ljIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmb3IgbG9nIGZpbGUKLSAgICBmaCA9 IGxvZ2dpbmcuRmlsZUhhbmRsZXIoQ1VSUkVOVF9QQVRIICsgJy8nICsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3JlZ3Jlc3Npb24ubG9nJywgJ3cnLCAndXRmLTgnKQotICAgIGZoLnNl dExldmVsKGxvZ2dpbmcuREVCVUcpCi0gICAgZmguc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0 dGVyKGNvbmZpZy5GSUxFX0xPR19GT1JNQVQpKQorICAgICAgICAjIERlbGV0ZSB0ZXN0IHNlcnZl cgorICAgICAgICB0ZXN0X3V0aWxzLmRlbGV0ZV90ZXN0X3NlcnZlcih0ZXN0X2NsaWVudCkKKyAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Yyhm aWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHByaW50KHN0cihleGMpKQorICAgICAgICBwcmludCgi RXhjZXB0aW9uIGluIHswfSIuZm9ybWF0KHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50 KSkKKyAgICBmaW5hbGx5OgorICAgICAgICAjIERlbGV0ZSB3ZWItZHJpdmVyIGluc3RhbmNlCisg ICAgICAgIHRocmVhZF9uYW1lID0gInBhcmFsbGVsX3Rlc3RzIiArIHNlcnZlcl9wYXNzZWRbJ25h bWUnXQorICAgICAgICBpZiB0aHJlYWRpbmcuY3VycmVudFRocmVhZCgpLmdldE5hbWUoKSA9PSB0 aHJlYWRfbmFtZToKKyAgICAgICAgICAgIGRyaXZlcl9wYXNzZWQucXVpdCgpCisgICAgICAgICAg ICB0aW1lLnNsZWVwKDIwKQorCisgICAgICAgICMgUHJpbnQgaW5mbyBhYm91dCBjb21wbGV0ZWQg dGVzdHMKKyAgICAgICAgcHJpbnQoCisgICAgICAgICAgICAiXG49PT09PT09PT09PT09Q29tcGxl dGVkIHRoZSB0ZXN0IGNhc2VzIGZvciAnJXMnPT09PT09PT09PT09PSIKKyAgICAgICAgICAgICUg c2VydmVyX3Bhc3NlZFsnbmFtZSddLCBmaWxlPXN5cy5zdGRlcnIpCiAKLSAgICBsb2dnZXIgPSBs b2dnaW5nLmdldExvZ2dlcigpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIoZmgpCiAKLSAgICAjIENy ZWF0ZSBsb2dnZXIgdG8gd3JpdGUgbG9nIGluIHRoZSBsb2dnZXIgZmlsZSBhcyB3ZWxsIGFzIG9u IGNvbnNvbGUKLSAgICBzdGRlcnJfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ1NUREVSUicp Ci0gICAgc3lzLnN0ZGVyciA9IFN0cmVhbVRvTG9nZ2VyKHN0ZGVycl9sb2dnZXIsIGxvZ2dpbmcu RVJST1IpCi0gICAgYXJncyA9IHZhcnMoYWRkX2FyZ3VtZW50cygpKQotICAgICMgR2V0IHRlc3Qg bW9kdWxlIGxpc3QKK2RlZiBydW5fcGFyYWxsZWxfdGVzdHModXJsX2NsaWVudCwgc2VydmVyc19k ZXRhaWxzLCBwYXJhbGxlbF90ZXN0c19saXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgbmFt ZV9vZl9icm93c2VyLCB2ZXJzaW9uX29mX2Jyb3dzZXIsIG1heF90aHJlYWRfY291bnQpOgorICAg ICIiIgorICAgIEZ1bmN0aW9uIHVzZWQgdG8gcnVuIHRlc3RzIGluIHBhcmFsbGVsCisgICAgOnBh cmFtIHVybF9jbGllbnQ6CisgICAgOnBhcmFtIHNlcnZlcnNfZGV0YWlsczoKKyAgICA6cGFyYW0g cGFyYWxsZWxfdGVzdHNfbGlzdHM6CisgICAgOnBhcmFtIG5hbWVfb2ZfYnJvd3NlcjoKKyAgICA6 cGFyYW0gdmVyc2lvbl9vZl9icm93c2VyOgorICAgIDpwYXJhbSBtYXhfdGhyZWFkX2NvdW50Ogor ICAgICIiIgorICAgIGRyaXZlcl9vYmplY3QgPSBOb25lCiAgICAgdHJ5OgotICAgICAgICB0ZXN0 X21vZHVsZV9saXN0ID0gZ2V0X3Rlc3RfbW9kdWxlcyhhcmdzKQotICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKLSAgICAgICAgcHJpbnQoc3RyKGUpKQotICAgICAgICBzeXMuZXhpdCgxKQotICAg ICMgTG9naW4gdGhlIHRlc3QgY2xpZW50Ci0gICAgdGVzdF91dGlscy5sb2dpbl90ZXN0ZXJfYWNj b3VudCh0ZXN0X2NsaWVudCkKKyAgICAgICAgIyBUaHJlYWQgbGlzdAorICAgICAgICB0aHJlYWRz X2xpc3QgPSBbXQorICAgICAgICAjIENyZWF0ZSB0aHJlYWQgZm9yIGVhY2ggc2VydmVyCisgICAg ICAgIGZvciBzZXIgaW4gc2VydmVyc19kZXRhaWxzOgorICAgICAgICAgICAgIyBMb2dpYyB0byBh ZGQgbmV3IHRocmVhZHMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAg IyBJZiBhY3RpdmUgdGhyZWFkIGNvdW50IDw9IG1heF90aHJlYWRfY291bnQsIGFkZCBuZXcgdGhy ZWFkCisgICAgICAgICAgICAgICAgaWYgdGhyZWFkaW5nLmFjdGl2ZUNvdW50KCkgPD0gbWF4X3Ro cmVhZF9jb3VudDoKKyAgICAgICAgICAgICAgICAgICAgIyBHZXQgcmVtb3RlIHdlYi1kcml2ZXIg aW5zdGFuY2UgYXQgc2VydmVyIGxldmVsCisgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vYmpl Y3QgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLmdldF9yZW1vdGVfd2Vi ZHJpdmVyKGh1Yl91cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWVfb2ZfYnJvd3NlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9vZl9icm93c2VyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJb J25hbWUnXSkKKyAgICAgICAgICAgICAgICAgICAgIyBMYXVuY2ggY2xpZW50IHVybCBpbiBicm93 c2VyCisgICAgICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMubGF1bmNoX3VybF9pbl9icm93c2Vy KGRyaXZlcl9vYmplY3QsIHVybF9jbGllbnQpCisKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQg bmFtZSBmb3IgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgIHRocmVhZF9uYW1lID0gInBhcmFs bGVsX3Rlc3RzIiArIHNlclsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgIyBTdGFydCB0 aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWV4 ZWN1dGVfdGVzdCwgbmFtZT10aHJlYWRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXJncz0ocGFyYWxsZWxfdGVzdHNfbGlzdHMsIHNlciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX29iamVjdCkpCisg ICAgICAgICAgICAgICAgICAgIHRocmVhZHNfbGlzdC5hcHBlbmQodCkKKyAgICAgICAgICAgICAg ICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMykKKyAgICAg ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAjIGVsc2Ugc2xlZXAgZm9yIDEw IHNlY29uZHMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0aW1l LnNsZWVwKDEwKQorCisgICAgICAgICMgU3RhcnQgdGhyZWFkcyBpbiBwYXJhbGxlbAorICAgICAg ICBmb3IgdCBpbiB0aHJlYWRzX2xpc3Q6CisgICAgICAgICAgICB0LmpvaW4oKQorICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICAjIFByaW50IGV4Y2VwdGlvbiBzdGFjayB0cmFj ZQorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAg cHJpbnQoc3RyKGV4YykpCisgICAgICAgICMgQ2xlYW4gZHJpdmVyIG9iamVjdCBjcmVhdGVkCisg ICAgICAgIGlmIGRyaXZlcl9vYmplY3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkcml2ZXJf b2JqZWN0LnF1aXQoKQogCi0gICAgc2VydmVyc19pbmZvID0gdGVzdF91dGlscy5nZXRfY29uZmln X2RhdGEoKQotICAgIG5vZGVfbmFtZSA9ICJhbGwiCi0gICAgaWYgYXJnc1sncGtnJ10gaXMgbm90 IE5vbmU6Ci0gICAgICAgIG5vZGVfbmFtZSA9IGFyZ3NbJ3BrZyddLnNwbGl0KCcuJylbLTFdCi0K LSAgICAjIFN0YXJ0IGNvdmVyYWdlCi0gICAgaWYgdGVzdF91dGlscy5pc19jb3ZlcmFnZV9lbmFi bGVkKGFyZ3MpOgotICAgICAgICBjb3YgPSBjb3ZlcmFnZS5Db3ZlcmFnZShjb25maWdfZmlsZT1D T1ZFUkFHRV9DT05GSUdfRklMRSkKLSAgICAgICAgY292LnN0YXJ0KCkKIAorZGVmIHJ1bl9zZXF1 ZW50aWFsX3Rlc3RzKHVybF9jbGllbnQsIHNlcnZlcnNfZGV0YWlscywgc2VxdWVudGlhbF90ZXN0 c19saXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX2Jyb3dzZXIsIHZlcnNp b25fb2ZfYnJvd3Nlcik6CisgICAgIiIiCisgICAgRnVuY3Rpb24gaXMgdXNlZCB0byBleGVjdXRl IHRlc3RzIHRoYXQgbmVlZHMgdG8gYmUgcnVuIGluIHNlcXVlbnRpYWwKKyAgICBtYW5uZXIuCisg ICAgOnBhcmFtIHVybF9jbGllbnQ6CisgICAgOnBhcmFtIHNlcnZlcnNfZGV0YWlsczoKKyAgICA6 cGFyYW0gc2VxdWVudGlhbF90ZXN0c19saXN0czoKKyAgICA6cGFyYW0gbmFtZV9vZl9icm93c2Vy OgorICAgIDpwYXJhbSB2ZXJzaW9uX29mX2Jyb3dzZXI6CisgICAgOnJldHVybjoKKyAgICAiIiIK KyAgICBkcml2ZXJfb2JqZWN0ID0gTm9uZQogICAgIHRyeToKLSAgICAgICAgZm9yIHNlcnZlciBp biBzZXJ2ZXJzX2luZm86Ci0gICAgICAgICAgICBwcmludCgiXG49PT09PT09PT09PT09UnVubmlu ZyB0aGUgdGVzdCBjYXNlcyBmb3IgJyVzJz09PT09PT09PT09PT0iCi0gICAgICAgICAgICAgICAg ICAlIHNlcnZlclsnbmFtZSddLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAjIENyZWF0 ZSB0ZXN0IHNlcnZlcgotICAgICAgICAgICAgc2VydmVyX2luZm9ybWF0aW9uID0gdGVzdF91dGls cy5jcmVhdGVfcGFyZW50X3NlcnZlcl9ub2RlKHNlcnZlcikKLQotICAgICAgICAgICAgIyBDcmVh dGUgdGVzdCBkYXRhYmFzZSB3aXRoIHJhbmRvbSBudW1iZXIgdG8gYXZvaWQgY29uZmxpY3QgaW4K LSAgICAgICAgICAgICMgcGFyYWxsZWwgZXhlY3V0aW9uIG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMu IFRoaXMgZGF0YWJhc2Ugd2lsbCBiZQotICAgICAgICAgICAgIyB1c2VkIGFjcm9zcyBhbGwgZmVh dHVyZSB0ZXN0cy4KLSAgICAgICAgICAgIHRlc3RfZGJfbmFtZSA9ICJhY2NlcHRhbmNlX3Rlc3Rf ZGIiICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRvbS5yYW5kaW50KDEw MDAwLCA2NTUzNSkpCi0gICAgICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91dGlscy5nZXRfZGJf Y29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2RiJ10sCi0gICAgICAgICAgICAg ICAgc2VydmVyWyd1c2VybmFtZSddLAotICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dv cmQnXSwKLSAgICAgICAgICAgICAgICBzZXJ2ZXJbJ2hvc3QnXSwKLSAgICAgICAgICAgICAgICBz ZXJ2ZXJbJ3BvcnQnXSwKLSAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3NzbG1vZGUnXQotICAgICAg ICAgICAgKQotCi0gICAgICAgICAgICAjIEFkZCB0aGUgc2VydmVyIHZlcnNpb24gaW4gc2VydmVy IGluZm9ybWF0aW9uCi0gICAgICAgICAgICBzZXJ2ZXJfaW5mb3JtYXRpb25bJ3NlcnZlcl92ZXJz aW9uJ10gPSBjb25uZWN0aW9uLnNlcnZlcl92ZXJzaW9uCi0gICAgICAgICAgICBzZXJ2ZXJfaW5m b3JtYXRpb25bJ3R5cGUnXSA9IHNlcnZlclsndHlwZSddCi0KLSAgICAgICAgICAgICMgRHJvcCB0 aGUgZGF0YWJhc2UgaWYgYWxyZWFkeSBleGlzdHMuCi0gICAgICAgICAgICB0ZXN0X3V0aWxzLmRy b3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgdGVzdF9kYl9uYW1lKQotICAgICAgICAgICAgIyBDcmVh dGUgZGF0YWJhc2UKLSAgICAgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2RhdGFiYXNlKHNlcnZl ciwgdGVzdF9kYl9uYW1lKQotICAgICAgICAgICAgIyBDb25maWd1cmUgcHJlZmVyZW5jZXMgZm9y IHRoZSB0ZXN0IGNhc2VzCi0gICAgICAgICAgICB0ZXN0X3V0aWxzLmNvbmZpZ3VyZV9wcmVmZXJl bmNlcygKLSAgICAgICAgICAgICAgICBkZWZhdWx0X2JpbmFyeV9wYXRoPXNlcnZlclsnZGVmYXVs dF9iaW5hcnlfcGF0aHMnXSkKLQotICAgICAgICAgICAgc3VpdGUgPSBnZXRfc3VpdGUodGVzdF9t b2R1bGVfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2xpZW50LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2luZm9ybWF0aW9uLCB0ZXN0X2RiX25hbWUpCi0gICAgICAgICAg ICB0ZXN0cyA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHN0cmVhbT1zeXMuc3RkZXJyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnM9VHJ1 ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5 PTIpLnJ1bihzdWl0ZSkKLQotICAgICAgICAgICAgcmFuX3Rlc3RzLCBmYWlsZWRfY2FzZXMsIHNr aXBwZWRfY2FzZXMsIHBhc3NlZF9jYXNlcyA9IFwKLSAgICAgICAgICAgICAgICBnZXRfdGVzdHNf cmVzdWx0KHRlc3RzKQotICAgICAgICAgICAgdGVzdF9yZXN1bHRbc2VydmVyWyduYW1lJ11dID0g W3Jhbl90ZXN0cywgZmFpbGVkX2Nhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNraXBwZWRfY2FzZXMsIHBhc3NlZF9jYXNlc10KLQotICAgICAgICAgICAg IyBTZXQgZW1wdHkgbGlzdCBmb3IgJ3Bhc3NlZCcgcGFyYW1ldGVyIGZvciBlYWNoIHRlc3RSdW4u Ci0gICAgICAgICAgICAjIFNvIHRoYXQgaXQgd2lsbCBub3QgYXBwZW5kIHNhbWUgdGVzdCBjYXNl IG5hbWUKLSAgICAgICAgICAgIHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0LnBhc3NlZCA9IFtd Ci0KLSAgICAgICAgICAgIGlmIGxlbihmYWlsZWRfY2FzZXMpID4gMDoKLSAgICAgICAgICAgICAg ICBmYWlsdXJlID0gVHJ1ZQotCi0gICAgICAgICAgICAjIERyb3AgdGhlIHRlc3RpbmcgZGF0YWJh c2UgY3JlYXRlZCBpbml0aWFsbHkKLSAgICAgICAgICAgIGlmIGNvbm5lY3Rpb246Ci0gICAgICAg ICAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHRlc3RfZGJfbmFt ZSkKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKLQotICAgICAgICAgICAgIyBE ZWxldGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgICAgIHRlc3RfdXRpbHMuZGVsZXRlX3Rlc3Rfc2Vy dmVyKHRlc3RfY2xpZW50KQotICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgotICAgICAgICBpZiBoYW5k bGVfY2xlYW51cDoKLSAgICAgICAgICAgIGhhbmRsZV9jbGVhbnVwKCkKKyAgICAgICAgIyBHZXQg cmVtb3RlIHdlYi1kcml2ZXIgaW5zdGFuY2UKKyAgICAgICAgZHJpdmVyX29iamVjdCA9IHRlc3Rf dXRpbHMuZ2V0X3JlbW90ZV93ZWJkcml2ZXIoaHViX3VybCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vZl9icm93c2VyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz aW9uX29mX2Jyb3dzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJTZXF1ZW50aWFsX1Rlc3RzIikKKworICAgICAgICAjIExhdW5jaCBj bGllbnQgdXJsIGluIGJyb3dzZXIKKyAgICAgICAgdGVzdF91dGlscy5sYXVuY2hfdXJsX2luX2Jy b3dzZXIoZHJpdmVyX29iamVjdCwgdXJsX2NsaWVudCkKKworICAgICAgICAjIEFkZCBuYW1lIGZv ciB0aHJlYWQKKyAgICAgICAgdGhyZWFkX25hbWUgPSAic2VxdWVudGlhbF90ZXN0cyIKKworICAg ICAgICAjIFN0YXJ0IHRocmVhZAorICAgICAgICBmb3Igc2VyIGluIHNlcnZlcnNfZGV0YWlsczoK KyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1leGVjdXRlX3Rlc3QsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXRocmVhZF9uYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VxdWVudGlhbF90ZXN0c19saXN0cywg c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX29iamVj dCkpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgIHQuam9pbigpCisgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICMgUHJpbnQgZXhjZXB0aW9uIHN0YWNrIHRy YWNlCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorICAgICAg ICBwcmludChzdHIoZXhjKSkKKyAgICBmaW5hbGx5OgorICAgICAgICAjIENsZWFuIGRyaXZlciBv YmplY3QgY3JlYXRlZAorICAgICAgICBkcml2ZXJfb2JqZWN0LnF1aXQoKQogCisKK2RlZiBwcmlu dF90ZXN0X3Jlc3VsdHMoKToKICAgICBwcmludCgKICAgICAgICAgIlxuPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgogICAgICAg ICAiPT09PT09PSIsCkBAIC01NDMsNiArNjQ4LDEwIEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5f Xyc6CiAgICAgICAgIHRvdGFsX3Bhc3NlZF9jYXNlcyA9IGludCgKICAgICAgICAgICAgIHRlc3Rf cmVzdWx0W3NlcnZlcl9yZXNdWzBdKSAtIHRvdGFsX2ZhaWxlZCAtIHRvdGFsX3NraXBwZWQKIAor ICAgICAgICBpZiBsZW4oZmFpbGVkX2Nhc2VzKSA+IDA6CisgICAgICAgICAgICBnbG9iYWwgZmFp bHVyZQorICAgICAgICAgICAgZmFpbHVyZSA9IFRydWUKKwogICAgICAgICBwcmludCgKICAgICAg ICAgICAgICIlczpcblxuXHQlcyB0ZXN0JXMgcGFzc2VkXG5cdCVzIHRlc3QlcyBmYWlsZWQlcyVz IgogICAgICAgICAgICAgIlxuXHQlcyB0ZXN0JXMgc2tpcHBlZCVzJXNcbiIgJQpAQCAtNTc4LDEy ICs2ODcsMTYyIEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgIGZpbGU9c3lz LnN0ZGVycgogICAgICkKIAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgRmFp bHVyZSBkZXRlY3RlZD8KKyAgICBmYWlsdXJlID0gRmFsc2UKKyAgICB0ZXN0X3Jlc3VsdCA9IGRp Y3QoKQorICAgIGNvdiA9IE5vbmUKKworICAgICMgU2V0IHNpZ25hbCBoYW5kbGVyIGZvciBjbGVh bnVwCisgICAgc2lnbmFsX2xpc3QgPSBkaXIoc2lnbmFsKQorICAgIHJlcXVpcmVkX3NpZ25hbF9s aXN0ID0gWydTSUdURVJNJywgJ1NJR0FCUlQnLCAnU0lHUVVJVCcsICdTSUdJTlQnXQorICAgICMg R2V0IHRoZSBPUyB3aXNlIHN1cHBvcnRlZCBzaWduYWxzCisgICAgc3VwcG9ydGVkX3NpZ25hbF9s aXN0ID0gW3NpZyBmb3Igc2lnIGluIHJlcXVpcmVkX3NpZ25hbF9saXN0IGlmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpZyBpbiBzaWduYWxfbGlzdF0KKyAgICBmb3Igc2lnIGluIHN1 cHBvcnRlZF9zaWduYWxfbGlzdDoKKyAgICAgICAgc2lnbmFsLnNpZ25hbChnZXRhdHRyKHNpZ25h bCwgc2lnKSwgc2lnX2hhbmRsZXIpCisKKyAgICAjIFNldCBiYXNpYyBsb2dnaW5nIGNvbmZpZ3Vy YXRpb24gZm9yIGxvZyBmaWxlCisgICAgZmggPSBsb2dnaW5nLkZpbGVIYW5kbGVyKENVUlJFTlRf UEFUSCArICcvJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWdyZXNzaW9uLmxv ZycsICd3JywgJ3V0Zi04JykKKyAgICBmaC5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorICAgIGZo LnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignWyUodGhyZWFkKWRdICcgKworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuRklMRV9MT0dfRk9STUFUKSkK KworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuYWRkSGFuZGxl cihmaCkKKworICAgICMgQ3JlYXRlIGxvZ2dlciB0byB3cml0ZSBsb2cgaW4gdGhlIGxvZ2dlciBm aWxlIGFzIHdlbGwgYXMgb24gY29uc29sZQorICAgIHN0ZGVycl9sb2dnZXIgPSBsb2dnaW5nLmdl dExvZ2dlcignU1RERVJSJykKKyAgICBzeXMuc3RkZXJyID0gU3RyZWFtVG9Mb2dnZXIoc3RkZXJy X2xvZ2dlciwgbG9nZ2luZy5FUlJPUikKKyAgICBhcmdzID0gdmFycyhhZGRfYXJndW1lbnRzKCkp CisgICAgIyBHZXQgdGVzdCBtb2R1bGUgbGlzdAorICAgIHRyeToKKyAgICAgICAgdGVzdF9tb2R1 bGVfbGlzdCA9IGdldF90ZXN0X21vZHVsZXMoYXJncykKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CisgICAgICAgIHByaW50KHN0cihlKSkKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAjIExv Z2luIHRoZSB0ZXN0IGNsaWVudAorICAgIHRlc3RfdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQo dGVzdF9jbGllbnQpCisKKyAgICBzZXJ2ZXJzX2luZm8gPSB0ZXN0X3V0aWxzLmdldF9jb25maWdf ZGF0YSgpCisgICAgbm9kZV9uYW1lID0gImFsbCIKKyAgICBpZiBhcmdzWydwa2cnXSBpcyBub3Qg Tm9uZToKKyAgICAgICAgbm9kZV9uYW1lID0gYXJnc1sncGtnJ10uc3BsaXQoJy4nKVstMV0KKwor ICAgICMgU3RhcnQgY292ZXJhZ2UKKyAgICBpZiB0ZXN0X3V0aWxzLmlzX2NvdmVyYWdlX2VuYWJs ZWQoYXJncyk6CisgICAgICAgIGNvdiA9IGNvdmVyYWdlLkNvdmVyYWdlKGNvbmZpZ19maWxlPUNP VkVSQUdFX0NPTkZJR19GSUxFKQorICAgICAgICBjb3Yuc3RhcnQoKQorCisgICAgIyBDaGVjayBp ZiBmZWF0dXJlIHRlc3RzIGluY2x1ZGVkICYgcGFyYWxsZWwgdGVzdHMgc3dpdGNoIHBhc3NlZAor ICAgIGlmIHRlc3RfdXRpbHMuaXNfZmVhdHVyZV90ZXN0X2luY2x1ZGVkKGFyZ3MpIGFuZCBcCisg ICAgICAgICAgICB0ZXN0X3V0aWxzLmlzX3BhcmFsbGVsX3VpX3Rlc3RzKGFyZ3MpOgorCisgICAg ICAgICMgR2V0IHNlbGVuaXVtIGNvbmZpZyBkaWN0CisgICAgICAgIHNlbGVub2lkX2NvbmZpZyA9 IHRlc3Rfc2V0dXAuY29uZmlnX2RhdGFbJ3NlbGVub2lkX2NvbmZpZyddCisKKyAgICAgICAgIyBT ZXQgREVGQVVMVF9TRVJWRVIgdmFsdWUKKyAgICAgICAgZGVmYXVsdF9zZXJ2ZXIgPSBzZWxlbm9p ZF9jb25maWdbJ3BnQWRtaW5fZGVmYXVsdF9zZXJ2ZXInXQorICAgICAgICBvcy5lbnZpcm9uWyJQ R0FETUlOX0NPTkZJR19ERUZBVUxUX1NFUlZFUiJdID0gc3RyKGRlZmF1bHRfc2VydmVyKQorICAg ICAgICBjb25maWcuREVGQVVMVF9TRVJWRVIgPSBzdHIoZGVmYXVsdF9zZXJ2ZXIpCisKKyAgICAg ICAgIyBHZXQgaHViIHVybAorICAgICAgICBodWJfdXJsID0gc2VsZW5vaWRfY29uZmlnWydzZWxl bm9pZF91cmwnXQorCisgICAgICAgICMgR2V0IHNlbGVuaXVtIGdyaWQgc3RhdHVzICYgbGlzdCBv ZiBhdmFpbGFibGUgYnJvd3NlciBvdXQgcGFzc2VkCisgICAgICAgIHNlbGVuaXVtX2dyaWRfc3Rh dHVzLCBsaXN0X29mX2Jyb3dzZXJzIFwKKyAgICAgICAgICAgID0gdGVzdF91dGlscy5nZXRfc2Vs ZW5pdW1fZ3JpZF9zdGF0dXNfYW5kX2Jyb3dzZXJfbGlzdChodWJfdXJsKQorCisgICAgICAgICMg RXhlY3V0ZSB0ZXN0cyBpZiBzZWxlbml1bS1ncmlkIGlzIHVwCisgICAgICAgIGlmIHNlbGVuaXVt X2dyaWRfc3RhdHVzIGFuZCBsZW4obGlzdF9vZl9icm93c2VycykgPiAwOgorICAgICAgICAgICAg YXBwX3N0YXJ0ZXJfbG9jYWwgPSBOb25lCisgICAgICAgICAgICAjIHJ1biBhY3Jvc3MgYnJvd3Nl cnMKKyAgICAgICAgICAgIGZvciBicm93c2VyX2luZm8gaW4gbGlzdF9vZl9icm93c2VyczoKKyAg ICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgYnJvd3NlciBpbmZvCisg ICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92ZXJzaW9uID0gXAorICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdF91dGlscy5nZXRfYnJvd3Nlcl9kZXRhaWxzKGJyb3dz ZXJfaW5mbywgaHViX3VybCkKKworICAgICAgICAgICAgICAgICAgICAjIHRlc3RzIGxpc3RzIGNh biBiZSBleGVjdXRlZCBpbiBwYXJhbGxlbCAmIHNlcXVlbnRpYWxseQorICAgICAgICAgICAgICAg ICAgICBwYXJhbGxlbF90ZXN0cywgc2VxdWVudGlhbF90ZXN0cyA9IFwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHRlc3RfdXRpbHMuZ2V0X3BhcmFsbGVsX3NlcXVlbnRpYWxfbW9kdWxlX2xpc3Qo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tb2R1bGVfbGlzdCkKKworICAgICAg ICAgICAgICAgICAgICAjIFByaW50IHRlc3Qgc3VtbWFyeQorICAgICAgICAgICAgICAgICAgICB0 ZXN0X3V0aWxzLnByaW50X3Rlc3Rfc3VtbWFyeSh0ZXN0X21vZHVsZV9saXN0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxlbF90ZXN0cywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVu dGlhbF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJvd3Nlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb24pCisKKyAgICAgICAgICAgICAgICAgICAgIyBD cmVhdGUgYXBwIGZvcm0gc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgYXBwX3N0YXJ0 ZXJfbG9jYWwgPSBBcHBTdGFydGVyKE5vbmUsIGNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAg Y2xpZW50X3VybCA9IGFwcF9zdGFydGVyX2xvY2FsLnN0YXJ0X2FwcCgpCisKKyAgICAgICAgICAg ICAgICAgICAgIyBSdW5uaW5nIFBhcmFsbGVsIHRlc3RzCisgICAgICAgICAgICAgICAgICAgIGlm IGxlbihwYXJhbGxlbF90ZXN0cykgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWxs ZWxfc2Vzc2lvbnMgPSBpbnQoc2VsZW5vaWRfY29uZmlnWworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9wYXJhbGxlbF9zZXNzaW9ucyddKQorCisg ICAgICAgICAgICAgICAgICAgICAgICBydW5fcGFyYWxsZWxfdGVzdHMoY2xpZW50X3VybCwgc2Vy dmVyc19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh cmFsbGVsX3Rlc3RzLCBicm93c2VyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJvd3Nlcl92ZXJzaW9uLCBwYXJhbGxlbF9zZXNzaW9ucykKKworICAg ICAgICAgICAgICAgICAgICAjIFdhaXQgdGlsbCBhbGwgdGhyZWFkcyBzdGFydGVkIGluIHBhcmFs bGVsIGFyZSBmaW5pc2hlZAorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg ICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRo cmVhZGluZy5hY3RpdmVDb3VudCgpIDw9IDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxMCkKKyAgICAgICAgICAgICAgICAgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmludChzdHIoZSkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBTZXF1ZW50aWFs IFRlc3RzCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihzZXF1ZW50aWFsX3Rlc3RzKSA+IDA6 CisgICAgICAgICAgICAgICAgICAgICAgICBydW5fc2VxdWVudGlhbF90ZXN0cyhjbGllbnRfdXJs LCBzZXJ2ZXJzX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXF1ZW50aWFsX3Rlc3RzLCBicm93c2VyX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb24pCisKKyAgICAgICAgICAg ICAgICAgICAgIyBDbGVhbiB1cCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICBpZiBh cHBfc3RhcnRlcl9sb2NhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcF9zdGFydGVyX2xv Y2FsLnN0b3BfYXBwKCkKKworICAgICAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAg ICAgICAgICAgICAgICAgICBpZiBhcHBfc3RhcnRlcl9sb2NhbDoKKyAgICAgICAgICAgICAgICAg ICAgICAgIGFwcF9zdGFydGVyX2xvY2FsLnN0b3BfYXBwKCkKKyAgICAgICAgICAgICAgICAgICAg aWYgaGFuZGxlX2NsZWFudXA6CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfY2xlYW51 cCgpCisgICAgICAgICAgICAgICAgIyBQYXVzZSBiZWZvcmUgcHJpbnRpbmcgcmVzdWx0IGluIG9y ZGVyIG5vdCB0byBtaXggb3V0cHV0CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1KQorICAg ICAgICAgICAgICAgICMgUHJpbnQgbm90ZSBmb3IgY29tcGxldGlvbiBvZiBleGVjdXRpb24gaW4g YSBicm93c2VyLgorICAgICAgICAgICAgICAgIHByaW50KAorICAgICAgICAgICAgICAgICAgICAi XG49PT09PT09PT09PT09IFRlc3QgZXhlY3V0aW9uIHdpdGggezB9IGlzICIKKyAgICAgICAgICAg ICAgICAgICAgImNvbXBsZXRlZC49PT09PT09PT09PT09Ii5mb3JtYXQoYnJvd3Nlcl9uYW1lKSwK KyAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHBy aW50X3Rlc3RfcmVzdWx0cygpCisgICAgICAgIGRlbCBvcy5lbnZpcm9uWyJQR0FETUlOX0NPTkZJ R19ERUZBVUxUX1NFUlZFUiJdCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg Zm9yIHNlcnZlciBpbiBzZXJ2ZXJzX2luZm86CisgICAgICAgICAgICAgICAgdGhyZWFkID0gdGhy ZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZXhlY3V0ZV90ZXN0LCBhcmdzPSgKKyAgICAgICAgICAgICAg ICAgICAgdGVzdF9tb2R1bGVfbGlzdCwgc2VydmVyLCBkcml2ZXIpKQorICAgICAgICAgICAgICAg IHRocmVhZC5zdGFydCgpCisgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorICAgICAgICBl eGNlcHQgU3lzdGVtRXhpdDoKKyAgICAgICAgICAgIGlmIGhhbmRsZV9jbGVhbnVwOgorICAgICAg ICAgICAgICAgIGhhbmRsZV9jbGVhbnVwKCkKKyAgICAgICAgcHJpbnRfdGVzdF9yZXN1bHRzKCkK KwogICAgICMgU3RvcCBjb2RlIGNvdmVyYWdlCiAgICAgaWYgdGVzdF91dGlscy5pc19jb3ZlcmFn ZV9lbmFibGVkKGFyZ3MpOgogICAgICAgICBjb3Yuc3RvcCgpCiAgICAgICAgIGNvdi5zYXZlKCkK IAotICAgICMgIyBQcmludCBjb3ZlcmFnZSBvbmx5IGlmIGNvdmVyYWdlIGFyZ3MgZ2l2ZW4gaW4g Y29tbWFuZCBsaW5lCisgICAgIyBQcmludCBjb3ZlcmFnZSBvbmx5IGlmIGNvdmVyYWdlIGFyZ3Mg Z2l2ZW4gaW4gY29tbWFuZCBsaW5lCiAgICAgaWYgdGVzdF91dGlscy5pc19jb3ZlcmFnZV9lbmFi bGVkKGFyZ3MpOgogICAgICAgICB0ZXN0X3V0aWxzLnByaW50X2FuZF9zdG9yZV9jb3ZlcmFnZV9y ZXBvcnQoY292KQogCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29u LmluIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgppbmRleCBhZjA2MWI5Li44 MjA3NzExIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCisr KyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KQEAgLTEsNiArMSwxNCBAQAog ewogICAiaGVhZGxlc3NfY2hyb21lIjogZmFsc2UsCiAgICJkZWZhdWx0X2Jyb3dzZXIiOiAiQ2hy b21lIiwKKyAgInNlbGVub2lkX2NvbmZpZyI6eworICAgICAgICAicGdBZG1pbl9kZWZhdWx0X3Nl cnZlciI6IklQIGFkZHJlc3Mgb2YgbWFjaGluZSB3aGVyZSBzb3VyY2UgY29kZSBpcyBnb2luZyB0 byBiZSBleGVjdXRlZCIsCisgICAgICAgICJtYXhfcGFyYWxsZWxfc2Vzc2lvbnMiOiAiMyIsCisg ICAgICAgICJzZWxlbm9pZF91cmwiOiAiImh0dHA6Ly88SVAgYWRkcmVzcyBvZiBTZWxlbm9pZCBJ bnN0YWxsZWQgbWFjaGluZT46NDQ0NC93ZC9odWIiLAorICAgICAgICAiYnJvd3NlcnNfbGlzdCI6 IFsKKyAgICAgICAgICAgIHsibmFtZSI6ICJDaHJvbWUiLCJ2ZXJzaW9uIjpudWxsfSwKKyAgICAg ICAgICAgIHsibmFtZSI6ICJGaXJlZm94IiwidmVyc2lvbiI6bnVsbH0gXQorICB9LAogICAicGdB ZG1pbjRfbG9naW5fY3JlZGVudGlhbHMiOiB7CiAgICAgIm5ld19wYXNzd29yZCI6ICJORVdQQVNT V09SRCIsCiAgICAgImxvZ2luX3Bhc3N3b3JkIjogIlBBU1NXT1JEIiwK --00000000000037509705a51fd488--