Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hadvk-0004zU-FK for pgadmin-hackers@arkaria.postgresql.org; Tue, 11 Jun 2019 10:23:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hadvj-0001od-Bc for pgadmin-hackers@arkaria.postgresql.org; Tue, 11 Jun 2019 10:23:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hadvi-0001oN-S3 for pgadmin-hackers@lists.postgresql.org; Tue, 11 Jun 2019 10:23:03 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hadvf-0003wy-Ph for pgadmin-hackers@postgresql.org; Tue, 11 Jun 2019 10:23:02 +0000 Received: by mail-lf1-x12e.google.com with SMTP id u10so8854093lfm.12 for ; Tue, 11 Jun 2019 03:22:59 -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=V5j4Dasc7w04BuYRXyAYjt61lWgwtqr1OQ0aEdYrJlw=; b=z0SIXnD5RbJeXwHw8XnB2XFJFT1y997ozwbnV55EGPydmfdjC4WclKXsoTXsSQC7/W ao+8khBHteAK2h6zcKXSfClkV3yhCmqUzEgP3oDBR4iBZ7AU2IcKH6Do3jbEb/O2/TXA xuZmck0fBXRkdh59oAsOnSSsnKrtxHUeK9j7Lx5Fd4/BR33h7qKsP7L/h3FujtkPYLZK hmzhcbL2pf1hQiIwatnyvXkHoY28QKiJTmU/WLPAsNvvx/+JGRc0IAlDmGJDm6BROWw0 3yv9Rdc9YnrC1nQXsPk3yF1twmCQCE6CUPGWli47522DvT/yV0kiqNTK2qL1vqMPcFxK 1hsw== 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=V5j4Dasc7w04BuYRXyAYjt61lWgwtqr1OQ0aEdYrJlw=; b=fFIOajnoY+j+AM/uXjzw9vsitQhx2OvNYsMJQ3V5zQhHqYShjuc6Eu5nv/2Md24B9g sHbC1JwBGaBS3ukj7+2tTn3aWWyniqNva90Q2t8akMJi0ByKL2dspllVjNNgoharlOzw TKRt2z6xfrk9KgzBpuY1659BupGc5zHCakwvveky8SK/gyQ7CNZARtZQ2Y4vsnAh7Mfa FYo34aUnZysleN0NDe8jegSGp2fWRanH2NBS0kP8EULK1LW9SD5y5W1ExwyiRYnUxYx0 eQk1sspdsOPtV0IWzTW6a6RDfF/vy1nv8qdVlB9fxV5N4IcwQGSsczYx6pE8WlKSPy5M HFbw== X-Gm-Message-State: APjAAAXHOQw64US6GrCSStmniPOC8JvUH55v3SqiAhJ3jCGFjIrXWV8k 8mDRFIJ6ufz6ZcfE5PfywXBwRrXqAPJog3RJidMpmg== X-Google-Smtp-Source: APXvYqzSg3PPYLCLK1K5SP3dpWcBN9duhMOwhyVJnVfOfOhLpGqs+qo+Qy2bya/FP1uLk6UXX+MB2Z+ejGLTPqnkNnc= X-Received: by 2002:a19:3f4b:: with SMTP id m72mr36558601lfa.91.1560248578862; Tue, 11 Jun 2019 03:22:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Tue, 11 Jun 2019 15:52:22 +0530 Message-ID: Subject: Re: [pgAdmin][RM4228] Incorrect table listed in panel header To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000004e2ed1058b09ae62" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000004e2ed1058b09ae62 Content-Type: multipart/alternative; boundary="0000000000004e2ece058b09ae60" --0000000000004e2ece058b09ae60 Content-Type: text/plain; charset="UTF-8" Hi, It is failing irrespective of patch applied or not. :) However, I have fixed it. Attached is the updated patch. I have also flag for chromedriver 75. Just to add, I have also changed "Filtered Rows" dialog title to add table details also. Kindly review. On Tue, Jun 11, 2019 at 2:50 PM Dave Page wrote: > Hi > > This doesn't pass the feature tests: > > ====================================================================== > ERROR: runTest > (pgadmin.feature_tests.browser_tool_bar_test.BrowserToolBarFeatureTest) > Browser tool bar feature test > ---------------------------------------------------------------------- > Traceback (most recent call last): > File > "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/browser_tool_bar_test.py", > line 55, in runTest > self.test_filtered_rows_tool_button() > File > "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/browser_tool_bar_test.py", > line 112, in test_filtered_rows_tool_button > ".alertify .ajs-header[data-title='Data Filter']") > File > "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 305, in find_by_css_selector > lambda driver: driver.find_element_by_css_selector(css_selector) > File > "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 485, in wait_for_element > self._wait_for("element to exist", element_if_it_exists) > File > "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", > line 560, in _wait_for > "Timed out waiting for " + waiting_for_message > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", > line 80, in until > raise TimeoutException(message, screen, stacktrace) > selenium.common.exceptions.TimeoutException: Message: Timed out waiting > for element to exist > > > On Tue, Jun 11, 2019 at 8:35 AM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Attached is the patch to fix incorrect label on panels when using >> filtered rows. >> I've also moved redundant code for filter data in datagrid.js to >> show_data.js, reusing the existing code of view/edit data. >> >> Kindly review. >> >> -- >> Thanks and Regards, >> Aditya Toshniwal >> Software Engineer | EnterpriseDB India | Pune >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > -- Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --0000000000004e2ece058b09ae60 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

It is failing irrespective of patch applied or not. :)=
However, I have fixed it. Attached is the updated patch.
I have also fla= g for chromedriver 75.

Just to add, I have also changed "Filtered= Rows" dialog title to add table details also.

Kindly review.

On Tue, Jun 11, 2019 at 2:50 PM Dave Page <dpage@pgadmin.org> wrote:
Hi

This doesn't pass the feature tests:

= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runT= est (pgadmin.feature_tests.browser_tool_bar_test.BrowserToolBarFeatureTest)=
Browser tool bar feature test
--------------------------------------= --------------------------------
Traceback (most recent call last):
= =C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/brows= er_tool_bar_test.py", line 55, in runTest
=C2=A0 =C2=A0 self.test_f= iltered_rows_tool_button()
=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/pgadmin/feature_tests/browser_tool_bar_test.py", line 112, in test_= filtered_rows_tool_button
=C2=A0 =C2=A0 ".alertify .ajs-header[data= -title=3D'Data Filter']")
=C2=A0 File "/Users/dpage/gi= t/pgadmin4/web/regression/feature_utils/pgadmin_page.py", line 305, in= find_by_css_selector
=C2=A0 =C2=A0 lambda driver: driver.find_element_b= y_css_selector(css_selector)
=C2=A0 File "/Users/dpage/git/pgadmin4= /web/regression/feature_utils/pgadmin_page.py", line 485, in wait_for_= element
=C2=A0 =C2=A0 self._wait_for("element to exist", eleme= nt_if_it_exists)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/regress= ion/feature_utils/pgadmin_page.py", line 560, in _wait_for
=C2=A0 = =C2=A0 "Timed out waiting for " + waiting_for_message
=C2=A0 F= ile "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/se= lenium/webdriver/support/wait.py", line 80, in until
=C2=A0 =C2=A0 = raise TimeoutException(message, screen, stacktrace)
selenium.common.exce= ptions.TimeoutException: Message: Timed out waiting for element to exist


On Tue, Jun 11, 2019 at 8:35 AM Aditya Toshniwal <= adit= ya.toshniwal@enterprisedb.com> wrote:
Hi Hackers,

Attached is t= he patch to fix incorrect label on panels when using filtered rows.
I've also moved redundant code for filter data in datagrid.j= s to show_data.js, reusing the existing code of view/edit data.

<= div class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">Kindly= review.

--
Thanks and Re= gards,
Aditya Toshniwal
Softwar= e Engineer |=C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Complain about Heat, Pl= ant a TREE"


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

Ent= erpriseDB UK: htt= p://www.enterprisedb.com
The Enterprise PostgreSQL Company


--
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB I= ndia |=C2=A0Pune
"Don't Complain about Heat, Plant a TREE"
--0000000000004e2ece058b09ae60-- --0000000000004e2ed1058b09ae62 Content-Type: application/octet-stream; name="RM4228_v2.patch" Content-Disposition: attachment; filename="RM4228_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwrnp1oj0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvYnJvd3Nlcl90b29sX2Jhcl90 ZXN0LnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9icm93c2VyX3Rvb2xfYmFyX3Rlc3Qu cHkKaW5kZXggODI0ODYwNTkuLjAxYzdiYzU0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0 dXJlX3Rlc3RzL2Jyb3dzZXJfdG9vbF9iYXJfdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9mZWF0 dXJlX3Rlc3RzL2Jyb3dzZXJfdG9vbF9iYXJfdGVzdC5weQpAQCAtNzAsNyArNzAsOCBAQCBjbGFz cyBCcm93c2VyVG9vbEJhckZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgIHdo aWxlIHJldHJ5X2NvdW50IDwgNToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCi0gICAgICAgICAgICAgICAgICAgICIud2NG cmFtZUJ1dHRvblt0aXRsZT0nUXVlcnkgVG9vbCddIikuY2xpY2soKQorICAgICAgICAgICAgICAg ICAgICAiLndjRnJhbWVCdXR0b25bdGl0bGU9J1F1ZXJ5IFRvb2wnXTpub3QoLmRpc2FibGVkKSIp XAorICAgICAgICAgICAgICAgICAgICAuY2xpY2soKQogICAgICAgICAgICAgICAgIGJyZWFrCiAg ICAgICAgICAgICBleGNlcHQgU3RhbGVFbGVtZW50UmVmZXJlbmNlRXhjZXB0aW9uOgogICAgICAg ICAgICAgICAgIHJldHJ5X2NvdW50ICs9IDEKQEAgLTg5LDcgKzkwLDcgQEAgY2xhc3MgQnJvd3Nl clRvb2xCYXJGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICB3aGlsZSByZXRy eV9jb3VudCA8IDU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYWdl LmZpbmRfYnlfY3NzX3NlbGVjdG9yKAotICAgICAgICAgICAgICAgICAgICAiLndjRnJhbWVCdXR0 b25bdGl0bGU9J1ZpZXcgRGF0YSddIikuY2xpY2soKQorICAgICAgICAgICAgICAgICAgICAiLndj RnJhbWVCdXR0b25bdGl0bGU9J1ZpZXcgRGF0YSddOm5vdCguZGlzYWJsZWQpIikuY2xpY2soKQog ICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgU3RhbGVFbGVtZW50UmVm ZXJlbmNlRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHJldHJ5X2NvdW50ICs9IDEKQEAgLTEw MiwxMiArMTAzLDEzIEBAIGNsYXNzIEJyb3dzZXJUb29sQmFyRmVhdHVyZVRlc3QoQmFzZUZlYXR1 cmVUZXN0KToKICAgICAgICAgd2hpbGUgcmV0cnlfY291bnQgPCA1OgogICAgICAgICAgICAgdHJ5 OgogICAgICAgICAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKLSAgICAg ICAgICAgICAgICAgICAgIi53Y0ZyYW1lQnV0dG9uW3RpdGxlPSdGaWx0ZXJlZCBSb3dzJ10iKS5j bGljaygpCisgICAgICAgICAgICAgICAgICAgICIud2NGcmFtZUJ1dHRvblt0aXRsZT0nRmlsdGVy ZWQgUm93cyddOm5vdCguZGlzYWJsZWQpIilcCisgICAgICAgICAgICAgICAgICAgIC5jbGljaygp CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGV4Y2VwdCBTdGFsZUVsZW1lbnRS ZWZlcmVuY2VFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmV0cnlfY291bnQgKz0gMQogCiAg ICAgICAgIHRpbWUuc2xlZXAoMC41KQogICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2Vs ZWN0b3IoCi0gICAgICAgICAgICAiLmFsZXJ0aWZ5IC5hanMtaGVhZGVyW2RhdGEtdGl0bGU9J0Rh dGEgRmlsdGVyJ10iKQorICAgICAgICAgICAgIi5hbGVydGlmeSAuYWpzLWhlYWRlcltkYXRhLXRp dGxlfj0nRmlsdGVyJ10iKQogICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfbW9kYWwoJ0NhbmNlbCcp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fYWxlcnRpZnkub3ZlcnJpZGVz LnNjc3MgYi93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fYWxlcnRpZnkub3ZlcnJpZGVzLnNjc3MK aW5kZXggOGNiZmEyNDIuLjQxM2UwOWU3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMv c2Nzcy9fYWxlcnRpZnkub3ZlcnJpZGVzLnNjc3MKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Nj c3MvX2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3NzCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgY29sb3I6 ICRjb2xvci1wcmltYXJ5LWZnOwogICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgd2hpdGUtc3Bh Y2U6IG5vd3JhcDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICBib3JkZXItcmFk aXVzOiAwcmVtOwogICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRwYW5lbC1ib3JkZXItcmFk aXVzOwogICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcGFuZWwtYm9yZGVyLXJhZGl1czsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19wZ2FkbWluLnN0eWxlLnNjc3Mg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fcGdhZG1pbi5zdHlsZS5zY3NzCmluZGV4IGQ3Yjhm YmVhLi5lZDQyNjU0NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX3BnYWRt aW4uc3R5bGUuc2NzcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fcGdhZG1pbi5zdHls ZS5zY3NzCkBAIC05NjgsMyArOTY4LDE4IEBAIHRhYmxlLnRhYmxlLWVtcHR5LXJvd3N7CiAgICAg Ym90dG9tOiAwOwogICB9CiB9CisKKy5maWx0ZXItdGV4dGFyZWEgeworICAgIGhlaWdodDogMTAw JTsKKyAgICAmIC5Db2RlTWlycm9yLXNjcm9sbCB7CisgICAgICBtaW4taGVpZ2h0OiAxMjBweDsK KyAgICAgIG1heC1oZWlnaHQ6IDEyMHB4OworICAgIH0KK30KKworLmRhdGF2aWV3X2ZpbHRlcl9k aWFsb2cgeworICBsZWZ0OiAwICFpbXBvcnRhbnQ7CisgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7Cisg IHBhZGRpbmc6IDBweCAhaW1wb3J0YW50OworICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMg Yi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKaW5kZXgg M2UyZTE0NDAuLjU5MTBmYzQzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3Jp ZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv c3RhdGljL2pzL2RhdGFncmlkLmpzCkBAIC0xMiwxOCArMTIsMTYgQEAgZGVmaW5lKCdwZ2FkbWlu LmRhdGFncmlkJywgWwogICAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3NvdXJjZXMvcGdhZG1pbics ICdidW5kbGVkX2NvZGVtaXJyb3InLAogICAnc291cmNlcy9zcWxlZGl0b3JfdXRpbHMnLCAnYmFj a2JvbmUnLAogICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YScsCi0gICd0b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlJywKICAgJ3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnLCAncGdhZG1pbi5icm93c2VyLnRvb2xiYXInLAog ICAnd2Nkb2NrZXInLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIGFs ZXJ0aWZ5LCBwZ0FkbWluLCBjb2RlbWlycm9yLCBzcWxFZGl0b3JVdGlscywKLSAgQmFja2JvbmUs IHNob3dEYXRhLCBwYW5lbFRpdGxlLCBzaG93UXVlcnlUb29sLCB0b29sQmFyCisgIEJhY2tib25l LCBzaG93RGF0YSwgc2hvd1F1ZXJ5VG9vbCwgdG9vbEJhcgogKSB7CiAgIC8vIFNvbWUgc2NyaXB0 cyBkbyBleHBvcnQgdGhlaXIgb2JqZWN0IGluIHRoZSB3aW5kb3cgb25seS4KICAgLy8gR2VuZXJh bGx5IHRoZSBvbmUsIHdoaWNoIGRvIG5vIGhhdmUgQU1EIHN1cHBvcnQuCiAgIHZhciB3Y0RvY2tl ciA9IHdpbmRvdy53Y0RvY2tlciwKLSAgICBwZ0Jyb3dzZXIgPSBwZ0FkbWluLkJyb3dzZXIsCi0g ICAgQ29kZU1pcnJvciA9IGNvZGVtaXJyb3IuZGVmYXVsdDsKKyAgICBwZ0Jyb3dzZXIgPSBwZ0Fk bWluLkJyb3dzZXI7CiAKICAgLyogUmV0dXJuIGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVkIG1v cmUgdGhhbiBvbmNlICovCiAgIGlmIChwZ0FkbWluLkRhdGFHcmlkKQpAQCAtMjAyLDE4OCArMjAw LDE0IEBAIGRlZmluZSgncGdhZG1pbi5kYXRhZ3JpZCcsIFsKIAogICAgICAgLy8gVGhpcyBpcyBh IGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHNob3cgZmlsdGVyZWQgZGF0YSB3aGVuIHVzZXIgY2xpY2sg b24gbWVudSBpdGVtLgogICAgICAgc2hvd19maWx0ZXJlZF9yb3c6IGZ1bmN0aW9uKGRhdGEsIGkp IHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAgIGQgPSBwZ0FkbWluLkJyb3dz ZXIudHJlZS5pdGVtRGF0YShpKTsKLSAgICAgICAgaWYgKGQgPT09IHVuZGVmaW5lZCkgewotICAg ICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgZ2V0dGV4dCgnRGF0YSBHcmlkIEVy cm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykKLSAgICAg ICAgICApOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldCB0 aGUgcGFyZW50IGRhdGEgZnJvbSB0aGUgdHJlZSBub2RlIGhpZXJhcmNoeS4KLSAgICAgICAgdmFy IG5vZGUgPSBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0sCi0gICAgICAgICAgcGFyZW50RGF0YSA9 IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkoaSk7Ci0KLSAgICAgICAgLy8gSWYgc2VydmVyIG9y IGRhdGFiYXNlIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi4KLSAg ICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQgfHwgcGFyZW50RGF0YS5k YXRhYmFzZSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K LSAgICAgICAgLy8gSWYgc2NoZW1hLCB2aWV3LCBjYXRhbG9nIG9iamVjdCBhbGwgYXJlIHVuZGVm aW5lZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKHBhcmVudERh dGEuc2NoZW1hID09PSB1bmRlZmluZWQgJiYgcGFyZW50RGF0YS52aWV3ID09PSB1bmRlZmluZWQg JiYKLSAgICAgICAgICAgICBwYXJlbnREYXRhLmNhdGFsb2cgPT09IHVuZGVmaW5lZCkgewotICAg ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBuc3BfbmFtZSA9IHNob3dE YXRhLnJldHJpZXZlTmFtZVNwYWNlTmFtZShwYXJlbnREYXRhKTsKLQotICAgICAgICB2YXIgdXJs X3BhcmFtcyA9IHsKLSAgICAgICAgICAnY21kX3R5cGUnOiBkYXRhLm1udWlkLAotICAgICAgICAg ICdvYmpfdHlwZSc6IGQuX3R5cGUsCi0gICAgICAgICAgJ3NnaWQnOiBwYXJlbnREYXRhLnNlcnZl cl9ncm91cC5faWQsCi0gICAgICAgICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKLSAg ICAgICAgICAnZGlkJzogcGFyZW50RGF0YS5kYXRhYmFzZS5faWQsCi0gICAgICAgICAgJ29ial9p ZCc6IGQuX2lkLAotICAgICAgICB9OwotCi0gICAgICAgIHZhciBiYXNlVXJsID0gdXJsX2Zvcign ZGF0YWdyaWQuaW5pdGlhbGl6ZV9kYXRhZ3JpZCcsIHVybF9wYXJhbXMpOwotCi0gICAgICAgIC8v IENyZWF0ZSB1cmwgdG8gdmFsaWRhdGUgdGhlIFNRTCBmaWx0ZXIKLSAgICAgICAgdmFyIHZhbGlk YXRlVXJsID0gdXJsX2ZvcignZGF0YWdyaWQuZmlsdGVyX3ZhbGlkYXRlJywgewotICAgICAgICAg ICdzaWQnOiB1cmxfcGFyYW1zWydzaWQnXSwKLSAgICAgICAgICAnZGlkJzogdXJsX3BhcmFtc1sn ZGlkJ10sCi0gICAgICAgICAgJ29ial9pZCc6IHVybF9wYXJhbXNbJ29ial9pZCddLAotICAgICAg ICB9KTsKLQotICAgICAgICBsZXQgZ3JpZF90aXRsZSA9IHNob3dEYXRhLmdlbmVyYXRlRGF0YWdy aWRUaXRsZShwYXJlbnREYXRhLCBuc3BfbmFtZSwgZCk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGZp bHRlciBkaWFsb2cgdXNpbmcgYWxlcnRpZnkKLSAgICAgICAgaWYgKCFhbGVydGlmeS5maWx0ZXJE aWFsb2cpIHsKLSAgICAgICAgICBhbGVydGlmeS5kaWFsb2coJ2ZpbHRlckRpYWxvZycsIGZ1bmN0 aW9uIGZhY3RvcnkoKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICBtYWlu OiBmdW5jdGlvbih0aXRsZSwgbWVzc2FnZSwgYmFzZVVybCwgdmFsaWRhdGVVcmwpIHsKLSAgICAg ICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7Ci0gICAgICAgICAgICAgICAgdGhp cy5tZXNzYWdlID0gbWVzc2FnZTsKLSAgICAgICAgICAgICAgICB0aGlzLmJhc2VVcmwgPSBiYXNl VXJsOwotICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVVcmwgPSB2YWxpZGF0ZVVybDsKLSAg ICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICBzZXR1cDpmdW5jdGlvbigpIHsKLSAgICAg ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgYnV0dG9uczpbewotICAgICAg ICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwKLSAgICAgICAgICAgICAgICAg ICAga2V5OiAyNywKLSAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1zZWNv bmRhcnkgZmEgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAg IH0sewotICAgICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdPSycpLAotICAgICAgICAg ICAgICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4g YnRuLXByaW1hcnkgZmEgZmEtY2hlY2sgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAg ICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgICAg ICAgICBtb2RhbDogMCwKLSAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAotICAg ICAgICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICAg IHBpbm5hYmxlOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgYXV0b1Jlc2V0OiBmYWxzZSwK LSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAg fSwKLSAgICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFs ZXJ0aWZ5LnBnRGlhbG9nQnVpbGQuYXBwbHkodGhpcyk7Ci0gICAgICAgICAgICAgIH0sCi0gICAg ICAgICAgICAgIHByZXBhcmU6ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRoYXQg PSB0aGlzLAotICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkKHRoaXMubWVzc2FnZSksCi0g ICAgICAgICAgICAgICAgICAkc3FsX2ZpbHRlciA9ICRjb250ZW50LmZpbmQoJyNzcWxfZmlsdGVy Jyk7Ci0KLSAgICAgICAgICAgICAgICAkKHRoaXMuZWxlbWVudHMuaGVhZGVyKS5hdHRyKCdkYXRh LXRpdGxlJywgdGhpcy5nZXQoJ3RpdGxlJykpOwotICAgICAgICAgICAgICAgICQodGhpcy5lbGVt ZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNzKAotICAgICAgICAgICAgICAgICAgJ2Rh dGF2aWV3X2ZpbHRlcl9kaWFsb2cnCi0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAg ICAgIHRoaXMuc2V0Q29udGVudCgkY29udGVudC5nZXQoMCkpOwotICAgICAgICAgICAgICAgIC8v IERpc2FibGUgT0sgYnV0dG9uCi0gICAgICAgICAgICAgICAgdGhhdC5fX2ludGVybmFsLmJ1dHRv bnNbMV0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAvLyBBcHBs eSBDb2RlTWlycm9yIHRvIGZpbHRlciB0ZXh0IGFyZWEuCi0gICAgICAgICAgICAgICAgdGhpcy5m aWx0ZXJfb2JqID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJHNxbF9maWx0ZXIuZ2V0KDApLCB7 Ci0gICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg IG1vZGU6ICd0ZXh0L3gtcGdzcWwnLAotICAgICAgICAgICAgICAgICAgZXh0cmFLZXlzOiBwZ0Jy b3dzZXIuZWRpdG9yX3Nob3J0Y3V0X2tleXMsCi0gICAgICAgICAgICAgICAgICBpbmRlbnRXaXRo VGFiczogIXNlbGYucHJlZmVyZW5jZXMudXNlX3NwYWNlcywKLSAgICAgICAgICAgICAgICAgIGlu ZGVudFVuaXQ6IHNlbGYucHJlZmVyZW5jZXMudGFiX3NpemUsCi0gICAgICAgICAgICAgICAgICB0 YWJTaXplOiBzZWxmLnByZWZlcmVuY2VzLnRhYl9zaXplLAotICAgICAgICAgICAgICAgICAgbGlu ZVdyYXBwaW5nOiBzZWxmLnByZWZlcmVuY2VzLndyYXBfY29kZSwKLSAgICAgICAgICAgICAgICAg IGF1dG9DbG9zZUJyYWNrZXRzOiBzZWxmLnByZWZlcmVuY2VzLmluc2VydF9wYWlyX2JyYWNrZXRz LAotICAgICAgICAgICAgICAgICAgbWF0Y2hCcmFja2V0czogc2VsZi5wcmVmZXJlbmNlcy5icmFj ZV9tYXRjaGluZywKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIGxldCBz cWxfZm9udF9zaXplID0gc3FsRWRpdG9yVXRpbHMuY2FsY0ZvbnRTaXplKHNlbGYucHJlZmVyZW5j ZXMuc3FsX2ZvbnRfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgJCh0aGlzLmZpbHRlcl9vYmouZ2V0 V3JhcHBlckVsZW1lbnQoKSkuY3NzKCdmb250LXNpemUnLCBzcWxfZm9udF9zaXplKTsKLQotICAg ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAv LyBTZXQgZm9jdXMgb24gZWRpdG9yCi0gICAgICAgICAgICAgICAgICB0aGF0LmZpbHRlcl9vYmou cmVmcmVzaCgpOwotICAgICAgICAgICAgICAgICAgdGhhdC5maWx0ZXJfb2JqLmZvY3VzKCk7Ci0g ICAgICAgICAgICAgICAgfSwgNTAwKTsKLQotICAgICAgICAgICAgICAgIHRoYXQuZmlsdGVyX29i ai5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICBpZiAodGhhdC5m aWx0ZXJfb2JqLmdldFZhbHVlKCkgIT09ICcnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoYXQu X19pbnRlcm5hbC5idXR0b25zWzFdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoYXQuX19pbnRlcm5hbC5i dXR0b25zWzFdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgIGNh bGxiYWNrOiBmdW5jdGlvbihjbG9zZUV2ZW50KSB7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2xv c2VFdmVudC5idXR0b24udGV4dCA9PSBnZXR0ZXh0KCdPSycpKSB7Ci0gICAgICAgICAgICAgICAg ICB2YXIgc3FsID0gdGhpcy5maWx0ZXJfb2JqLmdldFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg ICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgICBjbG9zZUV2ZW50LmNhbmNlbCA9 IHRydWU7IC8vIERvIG5vdCBjbG9zZSBkaWFsb2cKLQotICAgICAgICAgICAgICAgICAgLy8gTWFr ZSBhamF4IGNhbGwgdG8gaW5jbHVkZSB0aGUgZmlsdGVyIGJ5IHNlbGVjdGlvbgotICAgICAgICAg ICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGF0LnZhbGlkYXRl VXJsLAotICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICAgICAg ICAgICAgYXN5bmM6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogJ2Fw cGxpY2F0aW9uL2pzb24nLAotICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lm eShzcWwpLAotICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAgICAgLmRvbmUo ZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1 cykgewotICAgICAgICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGRhdGEgZ3JpZC4K LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3RyYW5zYWN0aW9uKHRoYXQuYmFz ZVVybCwgbnVsbCwgJ2ZhbHNlJywgcGFyZW50RGF0YS5zZXJ2ZXIuc2VydmVyX3R5cGUsICcnLCBn cmlkX3RpdGxlLCBzcWwsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2xv c2UoKTsgLy8gQ2xvc2UgdGhlIGRpYWxvZwotICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5 LmFsZXJ0KAotICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdWYWxpZGF0aW9uIEVy cm9yJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLnJlc3VsdAotICAgICAg ICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKGUpIHsKLSAg ICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgICAgICAgICAg ICAgIGdldHRleHQoJ1ZhbGlkYXRpb24gRXJyb3InKSwKLSAgICAgICAgICAgICAgICAgICAgICAg IGUKLSAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9OwotICAgICAg ICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgJC5nZXQodXJsX2ZvcignZGF0YWdyaWQuZmls dGVyJyksCi0gICAgICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgYWxlcnRpZnku ZmlsdGVyRGlhbG9nKCdEYXRhIEZpbHRlcicsIGRhdGEsIGJhc2VVcmwsIHZhbGlkYXRlVXJsKQot ICAgICAgICAgICAgICAucmVzaXplVG8ocGdCcm93c2VyLnN0ZFcuc20scGdCcm93c2VyLnN0ZEgu c20pOwotICAgICAgICAgIH0KLSAgICAgICAgKTsKKyAgICAgICAgc2hvd0RhdGEuc2hvd0RhdGFH cmlkKHRoaXMsIHBnQnJvd3NlciwgYWxlcnRpZnksIGRhdGEsIGksIHRydWUsIHRoaXMucHJlZmVy ZW5jZXMpOwogICAgICAgfSwKIAotICAgICAgZ2V0X3BhbmVsX3RpdGxlOiBmdW5jdGlvbigpIHsK LSAgICAgICAgcmV0dXJuIHBhbmVsVGl0bGUuZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIpOwotICAg ICAgfSwKICAgICAgIC8vIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IHF1ZXJ5 IHRvb2wgd2hlbiB1c2VyIGNsaWNrIG9uIG1lbnUgaXRlbS4KLSAgICAgIHNob3dfcXVlcnlfdG9v bDogZnVuY3Rpb24odXJsLCBhY2lUcmVlSWRlbnRpZmllciwgcGFuZWxUaXRsZSkgewotICAgICAg ICBzaG93UXVlcnlUb29sLnNob3dRdWVyeVRvb2wodGhpcywgcGdCcm93c2VyLCBhbGVydGlmeSwg dXJsLAotICAgICAgICAgIGFjaVRyZWVJZGVudGlmaWVyLCBwYW5lbFRpdGxlKTsKKyAgICAgIHNo b3dfcXVlcnlfdG9vbDogZnVuY3Rpb24odXJsLCBhY2lUcmVlSWRlbnRpZmllcikgeworICAgICAg ICBzaG93UXVlcnlUb29sLnNob3dRdWVyeVRvb2wodGhpcywgcGdCcm93c2VyLCBhbGVydGlmeSwg dXJsLCBhY2lUcmVlSWRlbnRpZmllcik7CiAgICAgICB9LAorCiAgICAgICBjcmVhdGVfdHJhbnNh Y3Rpb246IGZ1bmN0aW9uKGJhc2VVcmwsIHRhcmdldCwgaXNfcXVlcnlfdG9vbCwgc2VydmVyX3R5 cGUsIHNVUkwsIHBhbmVsX3RpdGxlLCBzcWxfZmlsdGVyLCByZWNyZWF0ZSkgewogICAgICAgICB2 YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgIHRhcmdldCA9ICB0YXJnZXQgfHwgc2VsZjsKQEAgLTQz OSwyOCArMjYzLDIwIEBAIGRlZmluZSgncGdhZG1pbi5kYXRhZ3JpZCcsIFsKICAgICAgIGxhdW5j aF9ncmlkOiBmdW5jdGlvbih0cmFuc19vYmopIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAog ICAgICAgICAgIHBhbmVsX3RpdGxlID0gdHJhbnNfb2JqLnBhbmVsX3RpdGxlLAotICAgICAgICAg IGdyaWRfdGl0bGUgPSBzZWxmLmdldF9wYW5lbF90aXRsZSgpLAorICAgICAgICAgIGdyaWRfdGl0 bGUgPSB0cmFuc19vYmoucGFuZWxfdGl0bGUsCiAgICAgICAgICAgcGFuZWxfaWNvbiA9ICcnLAog ICAgICAgICAgIHBhbmVsX3Rvb2x0aXAgPSAnJzsKIAogICAgICAgICBpZiAodHJhbnNfb2JqLmlz X3F1ZXJ5X3Rvb2wgPT0gJ2ZhbHNlJykgewogICAgICAgICAgIC8vIEVkaXQgZ3JpZCB0aXRsZXMK LSAgICAgICAgICBncmlkX3RpdGxlID0gcGFuZWxfdGl0bGUgKyAnLycgKyBncmlkX3RpdGxlOwog ICAgICAgICAgIHBhbmVsX3Rvb2x0aXAgPSBnZXR0ZXh0KCdWaWV3L0VkaXQgRGF0YSAtICcpICsg Z3JpZF90aXRsZTsKICAgICAgICAgICBwYW5lbF90aXRsZSA9IGdyaWRfdGl0bGU7CiAgICAgICAg ICAgcGFuZWxfaWNvbiA9ICdmYSBmYS10YWJsZSc7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgaWYgKHBhbmVsX3RpdGxlKSB7Ci0gICAgICAgICAgICAvLyBTY3JpcHQgdGl0bGVzCi0gICAg ICAgICAgICBwYW5lbF90b29sdGlwID0gcGFuZWxfdGl0bGUudG9VcHBlckNhc2UoKSArICcgJyAr IGdldHRleHQoJ1NjcmlwdCAtICcpICsgZ3JpZF90aXRsZTsKLSAgICAgICAgICAgIHBhbmVsX3Rp dGxlID0gZ3JpZF90aXRsZTsKLSAgICAgICAgICAgIHBhbmVsX2ljb24gPSAnZmEgZmEtZmlsZS10 ZXh0LW8nOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBRdWVyeSB0b29sIHRp dGxlcwotICAgICAgICAgICAgcGFuZWxfdG9vbHRpcCA9IGdldHRleHQoJ1F1ZXJ5IFRvb2wgLSAn KSArIGdyaWRfdGl0bGU7Ci0gICAgICAgICAgICBwYW5lbF90aXRsZSA9IGdyaWRfdGl0bGU7Ci0g ICAgICAgICAgICBwYW5lbF9pY29uID0gJ2ZhIGZhLWJvbHQnOwotICAgICAgICAgIH0KKyAgICAg ICAgICAvLyBRdWVyeSB0b29sIHRpdGxlcworICAgICAgICAgIHBhbmVsX3Rvb2x0aXAgPSBnZXR0 ZXh0KCdRdWVyeSBUb29sIC0gJykgKyBncmlkX3RpdGxlOworICAgICAgICAgIHBhbmVsX3RpdGxl ID0gZ3JpZF90aXRsZTsKKyAgICAgICAgICBwYW5lbF9pY29uID0gJ2ZhIGZhLWJvbHQnOwogICAg ICAgICB9CiAKICAgICAgICAgLy8gT3BlbiB0aGUgcGFuZWwgaWYgZnJhbWUgaXMgaW5pdGlhbGl6 ZWQKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRf cGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0 X3BhbmVsX3RpdGxlLmpzCmluZGV4IDYzNWUzZDgyLi42YWZmOTA1ZCAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRsZS5qcworKysg Yi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlLmpz CkBAIC0xOCw4ICsxOCwxMCBAQCBmdW5jdGlvbiBpc1NlcnZlckluZm9ybWF0aW9uQXZhaWxhYmxl KHBhcmVudERhdGEpIHsKICAgcmV0dXJuIHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQ7 CiB9CiAKLWV4cG9ydCBmdW5jdGlvbiBnZXRQYW5lbFRpdGxlKHBnQnJvd3NlcikgewotICBjb25z dCBzZWxlY3RlZF9pdGVtID0gcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdGVkKCk7CitleHBvcnQg ZnVuY3Rpb24gZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIsIHNlbGVjdGVkX2l0ZW09bnVsbCkgewor ICBpZihzZWxlY3RlZF9pdGVtID09IG51bGwpIHsKKyAgICBzZWxlY3RlZF9pdGVtID0gcGdCcm93 c2VyLnRyZWVNZW51LnNlbGVjdGVkKCk7CisgIH0KIAogICBjb25zdCBwYXJlbnREYXRhID0gZ2V0 VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcgogICAgIC5jYWxsKHBnQnJvd3Nlciwgc2Vs ZWN0ZWRfaXRlbSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0 aWMvanMvc2hvd19kYXRhLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L3Nob3dfZGF0YS5qcwppbmRleCBlY2EyNzUyNi4uMjUzZjMxZDMgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEuanMKKysrIGIvd2ViL3Bn YWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcwpAQCAtOSwxMyArOSwx OSBAQAogaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQn OwogaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9mb3InOwog aW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQge2dldFBhbmVs VGl0bGV9IGZyb20gJy4vZ2V0X3BhbmVsX3RpdGxlJzsKK2ltcG9ydCBDb2RlTWlycm9yIGZyb20g J2J1bmRsZWRfY29kZW1pcnJvcic7CitpbXBvcnQgKiBhcyBTcWxFZGl0b3JVdGlscyBmcm9tICdz b3VyY2VzL3NxbGVkaXRvcl91dGlscyc7CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOwogCiBleHBv cnQgZnVuY3Rpb24gc2hvd0RhdGFHcmlkKAogICBkYXRhZ3JpZCwKICAgcGdCcm93c2VyLAogICBh bGVydGlmeSwKICAgY29ubmVjdGlvbkRhdGEsCi0gIGFjaVRyZWVJZGVudGlmaWVyCisgIGFjaVRy ZWVJZGVudGlmaWVyLAorICBmaWx0ZXI9ZmFsc2UsCisgIHByZWZlcmVuY2VzPW51bGwKICkgewog ICBjb25zdCBub2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFj aVRyZWVJZGVudGlmaWVyKTsKICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCB8fCAhbm9kZS5nZXRE YXRhKCkpIHsKQEAgLTM2LDE5ICs0Miw0NCBAQCBleHBvcnQgZnVuY3Rpb24gc2hvd0RhdGFHcmlk KAogICAgIHJldHVybjsKICAgfQogCi0gIGxldCBuYW1lc3BhY2VOYW1lID0gcmV0cmlldmVOYW1l U3BhY2VOYW1lKHBhcmVudERhdGEpOwogICBjb25zdCBiYXNlVXJsID0gZ2VuZXJhdGVVcmwoY29u bmVjdGlvbkRhdGEsIG5vZGUuZ2V0RGF0YSgpLCBwYXJlbnREYXRhKTsKLSAgY29uc3QgZ3JpZF90 aXRsZSA9IGdlbmVyYXRlRGF0YWdyaWRUaXRsZShwYXJlbnREYXRhLCBuYW1lc3BhY2VOYW1lLCBu b2RlLmdldERhdGEoKSk7Ci0KLSAgZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKAotICAgIGJh c2VVcmwsCi0gICAgbnVsbCwKLSAgICAnZmFsc2UnLAotICAgIHBhcmVudERhdGEuc2VydmVyLnNl cnZlcl90eXBlLAotICAgICcnLAotICAgIGdyaWRfdGl0bGUsCi0gICAgJycKLSAgKTsKKyAgY29u c3QgZ3JpZF90aXRsZSA9IGdlbmVyYXRlRGF0YWdyaWRUaXRsZShwZ0Jyb3dzZXIsIGFjaVRyZWVJ ZGVudGlmaWVyKTsKKworICBpZihmaWx0ZXIpIHsKKyAgICBpbml0RmlsdGVyRGlhbG9nKGFsZXJ0 aWZ5LCBwZ0Jyb3dzZXIsIHByZWZlcmVuY2VzKTsKKworICAgIGNvbnN0IHZhbGlkYXRlVXJsID0g Z2VuZXJhdGVGaWx0ZXJWYWxpZGF0ZVVybChub2RlLmdldERhdGEoKSwgcGFyZW50RGF0YSk7CisK KyAgICBsZXQgb2tDYWxsYmFjayA9IGZ1bmN0aW9uKHNxbCkgeworICAgICAgZGF0YWdyaWQuY3Jl YXRlX3RyYW5zYWN0aW9uKAorICAgICAgICBiYXNlVXJsLAorICAgICAgICBudWxsLAorICAgICAg ICAnZmFsc2UnLAorICAgICAgICBwYXJlbnREYXRhLnNlcnZlci5zZXJ2ZXJfdHlwZSwKKyAgICAg ICAgJycsCisgICAgICAgIGdyaWRfdGl0bGUsCisgICAgICAgIHNxbCwKKyAgICAgICAgZmFsc2UK KyAgICAgICk7CisgICAgfTsKKworICAgICQuZ2V0KHVybF9mb3IoJ2RhdGFncmlkLmZpbHRlcicp LAorICAgICAgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICBhbGVydGlmeS5maWx0ZXJEaWFsb2co YERhdGEgRmlsdGVyIC0gJHtncmlkX3RpdGxlfWAsIGRhdGEsIHZhbGlkYXRlVXJsLCBwcmVmZXJl bmNlcywgb2tDYWxsYmFjaykKKyAgICAgICAgICAucmVzaXplVG8ocGdCcm93c2VyLnN0ZFcuc20s cGdCcm93c2VyLnN0ZEguc20pOworICAgICAgfQorICAgICk7CisgIH0gZWxzZSB7CisgICAgZGF0 YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKAorICAgICAgYmFzZVVybCwKKyAgICAgIG51bGwsCisg ICAgICAnZmFsc2UnLAorICAgICAgcGFyZW50RGF0YS5zZXJ2ZXIuc2VydmVyX3R5cGUsCisgICAg ICAnJywKKyAgICAgIGdyaWRfdGl0bGUsCisgICAgICAnJworICAgICk7CisgIH0KIH0KIAogCkBA IC03OCw2ICsxMDksMTM4IEBAIGZ1bmN0aW9uIGdlbmVyYXRlVXJsKGNvbm5lY3Rpb25EYXRhLCBu b2RlRGF0YSwgcGFyZW50RGF0YSkgewogICByZXR1cm4gdXJsX2ZvcignZGF0YWdyaWQuaW5pdGlh bGl6ZV9kYXRhZ3JpZCcsIHVybF9wYXJhbXMpOwogfQogCitmdW5jdGlvbiBnZW5lcmF0ZUZpbHRl clZhbGlkYXRlVXJsKG5vZGVEYXRhLCBwYXJlbnREYXRhKSB7CisgIC8vIENyZWF0ZSB1cmwgdG8g dmFsaWRhdGUgdGhlIFNRTCBmaWx0ZXIKKyAgdmFyIHVybF9wYXJhbXMgPSB7CisgICAgJ3NpZCc6 IHBhcmVudERhdGEuc2VydmVyLl9pZCwKKyAgICAnZGlkJzogcGFyZW50RGF0YS5kYXRhYmFzZS5f aWQsCisgICAgJ29ial9pZCc6IG5vZGVEYXRhLl9pZCwKKyAgfTsKKworICByZXR1cm4gdXJsX2Zv cignZGF0YWdyaWQuZmlsdGVyX3ZhbGlkYXRlJywgdXJsX3BhcmFtcyk7Cit9CisKK2Z1bmN0aW9u IGluaXRGaWx0ZXJEaWFsb2coYWxlcnRpZnksIHBnQnJvd3NlcikgeworICAvLyBDcmVhdGUgZmls dGVyIGRpYWxvZyB1c2luZyBhbGVydGlmeQorICBpZiAoIWFsZXJ0aWZ5LmZpbHRlckRpYWxvZykg eworICAgIGFsZXJ0aWZ5LmRpYWxvZygnZmlsdGVyRGlhbG9nJywgZnVuY3Rpb24gZmFjdG9yeSgp IHsKKyAgICAgIHJldHVybiB7CisgICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlLCBtZXNzYWdl LCB2YWxpZGF0ZVVybCwgcHJlZmVyZW5jZXMsIG9rQ2FsbGJhY2spIHsKKyAgICAgICAgICB0aGlz LnNldCgndGl0bGUnLCB0aXRsZSk7CisgICAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsK KyAgICAgICAgICB0aGlzLnZhbGlkYXRlVXJsID0gdmFsaWRhdGVVcmw7CisgICAgICAgICAgdGhp cy5va0NhbGxiYWNrID0gb2tDYWxsYmFjazsKKyAgICAgICAgICB0aGlzLnByZWZlcmVuY2VzID0g cHJlZmVyZW5jZXM7CisgICAgICAgIH0sCisKKyAgICAgICAgc2V0dXA6ZnVuY3Rpb24oKSB7Cisg ICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGJ1dHRvbnM6W3sKKyAgICAgICAgICAgICAg dGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCisgICAgICAgICAgICAgIGtleTogMjcsCisgICAgICAg ICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFsZXJ0 aWZ5LWJ1dHRvbicsCisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4 dCgnT0snKSwKKyAgICAgICAgICAgICAga2V5OiAxMywKKyAgICAgICAgICAgICAgY2xhc3NOYW1l OiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWNoZWNrIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAg ICAgICAgICB9XSwKKyAgICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICAgICAgbW9kYWw6 IDAsCisgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgbWF4aW1p emFibGU6IGZhbHNlLAorICAgICAgICAgICAgICBwaW5uYWJsZTogZmFsc2UsCisgICAgICAgICAg ICAgIGF1dG9SZXNldDogZmFsc2UsCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisgICAg ICAgIH0sCisgICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBhbGVydGlmeS5w Z0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMpOworICAgICAgICB9LAorICAgICAgICBwcmVwYXJlOmZ1 bmN0aW9uKCkgeworICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKKyAgICAgICAgICAgICRjb250 ZW50ID0gJCh0aGlzLm1lc3NhZ2UpLAorICAgICAgICAgICAgJHNxbF9maWx0ZXIgPSAkY29udGVu dC5maW5kKCcjc3FsX2ZpbHRlcicpOworCisgICAgICAgICAgJCh0aGlzLmVsZW1lbnRzLmhlYWRl cikuYXR0cignZGF0YS10aXRsZScsIHRoaXMuZ2V0KCd0aXRsZScpKTsKKyAgICAgICAgICAkKHRo aXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKKyAgICAgICAgICAgICdk YXRhdmlld19maWx0ZXJfZGlhbG9nJworICAgICAgICAgICk7CisKKyAgICAgICAgICB0aGlzLnNl dENvbnRlbnQoJGNvbnRlbnQuZ2V0KDApKTsKKyAgICAgICAgICAvLyBEaXNhYmxlIE9LIGJ1dHRv bgorICAgICAgICAgIHRoYXQuX19pbnRlcm5hbC5idXR0b25zWzFdLmVsZW1lbnQuZGlzYWJsZWQg PSB0cnVlOworCisgICAgICAgICAgLy8gQXBwbHkgQ29kZU1pcnJvciB0byBmaWx0ZXIgdGV4dCBh cmVhLgorICAgICAgICAgIHRoaXMuZmlsdGVyX29iaiA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVh KCRzcWxfZmlsdGVyLmdldCgwKSwgeworICAgICAgICAgICAgbGluZU51bWJlcnM6IHRydWUsCisg ICAgICAgICAgICBtb2RlOiAndGV4dC94LXBnc3FsJywKKyAgICAgICAgICAgIGV4dHJhS2V5czog cGdCcm93c2VyLmVkaXRvcl9zaG9ydGN1dF9rZXlzLAorICAgICAgICAgICAgaW5kZW50V2l0aFRh YnM6ICF0aGF0LnByZWZlcmVuY2VzLnVzZV9zcGFjZXMsCisgICAgICAgICAgICBpbmRlbnRVbml0 OiB0aGF0LnByZWZlcmVuY2VzLnRhYl9zaXplLAorICAgICAgICAgICAgdGFiU2l6ZTogdGhhdC5w cmVmZXJlbmNlcy50YWJfc2l6ZSwKKyAgICAgICAgICAgIGxpbmVXcmFwcGluZzogdGhhdC5wcmVm ZXJlbmNlcy53cmFwX2NvZGUsCisgICAgICAgICAgICBhdXRvQ2xvc2VCcmFja2V0czogdGhhdC5w cmVmZXJlbmNlcy5pbnNlcnRfcGFpcl9icmFja2V0cywKKyAgICAgICAgICAgIG1hdGNoQnJhY2tl dHM6IHRoYXQucHJlZmVyZW5jZXMuYnJhY2VfbWF0Y2hpbmcsCisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBsZXQgc3FsX2ZvbnRfc2l6ZSA9IFNxbEVkaXRvclV0aWxzLmNhbGNGb250U2l6ZSh0 aGF0LnByZWZlcmVuY2VzLnNxbF9mb250X3NpemUpOworICAgICAgICAgICQodGhpcy5maWx0ZXJf b2JqLmdldFdyYXBwZXJFbGVtZW50KCkpLmNzcygnZm9udC1zaXplJywgc3FsX2ZvbnRfc2l6ZSk7 CisKKyAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gU2V0 IGZvY3VzIG9uIGVkaXRvcgorICAgICAgICAgICAgdGhhdC5maWx0ZXJfb2JqLnJlZnJlc2goKTsK KyAgICAgICAgICAgIHRoYXQuZmlsdGVyX29iai5mb2N1cygpOworICAgICAgICAgIH0sIDUwMCk7 CisKKyAgICAgICAgICB0aGF0LmZpbHRlcl9vYmoub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewor ICAgICAgICAgICAgaWYgKHRoYXQuZmlsdGVyX29iai5nZXRWYWx1ZSgpICE9PSAnJykgeworICAg ICAgICAgICAgICB0aGF0Ll9faW50ZXJuYWwuYnV0dG9uc1sxXS5lbGVtZW50LmRpc2FibGVkID0g ZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0aGF0Ll9faW50ZXJu YWwuYnV0dG9uc1sxXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICB9KTsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oY2xv c2VFdmVudCkgeworCisgICAgICAgICAgaWYgKGNsb3NlRXZlbnQuYnV0dG9uLnRleHQgPT0gZ2V0 dGV4dCgnT0snKSkgeworICAgICAgICAgICAgdmFyIHNxbCA9IHRoaXMuZmlsdGVyX29iai5nZXRW YWx1ZSgpOworICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOworICAgICAgICAgICAgY2xvc2VF dmVudC5jYW5jZWwgPSB0cnVlOyAvLyBEbyBub3QgY2xvc2UgZGlhbG9nCisKKyAgICAgICAgICAg IC8vIE1ha2UgYWpheCBjYWxsIHRvIGluY2x1ZGUgdGhlIGZpbHRlciBieSBzZWxlY3Rpb24KKyAg ICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgIHVybDogdGhhdC52YWxpZGF0ZVVybCwK KyAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCisgICAgICAgICAgICAgIGFzeW5jOiBmYWxz ZSwKKyAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJywKKyAgICAg ICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoc3FsKSwKKyAgICAgICAgICAgIH0pCisgICAg ICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgIGlmIChyZXMu ZGF0YS5zdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgIHRoYXQub2tDYWxsYmFjayhzcWwpOwor ICAgICAgICAgICAgICAgICAgdGhhdC5jbG9zZSgpOyAvLyBDbG9zZSB0aGUgZGlhbG9nCisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg YWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ1ZhbGlkYXRpb24g RXJyb3InKSwKKyAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEucmVzdWx0CisgICAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSkKKyAgICAgICAg ICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0 KAorICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnVmFsaWRhdGlvbiBFcnJvcicpLAorICAgICAg ICAgICAgICAgICAgZQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIH0pOworICAg ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgIH07CisgICAgfSk7CisgIH0KK30KKwogZnVuY3Rp b24gaGFzU2VydmVyT3JEYXRhYmFzZUNvbmZpZ3VyYXRpb24ocGFyZW50RGF0YSkgewogICByZXR1 cm4gcGFyZW50RGF0YS5zZXJ2ZXIgPT09IHVuZGVmaW5lZCB8fCBwYXJlbnREYXRhLmRhdGFiYXNl ID09PSB1bmRlZmluZWQ7CiB9CkBAIC04Nyw2ICsyNTAsMTcgQEAgZnVuY3Rpb24gaGFzU2NoZW1h T3JDYXRhbG9nT3JWaWV3SW5mb3JtYXRpb24ocGFyZW50RGF0YSkgewogICAgIHBhcmVudERhdGEu Y2F0YWxvZyAhPT0gdW5kZWZpbmVkOwogfQogCi1leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVEYXRh Z3JpZFRpdGxlKHBhcmVudERhdGEsIG5hbWVzcGFjZU5hbWUsIG5vZGVEYXRhKSB7Ci0gIHJldHVy biBgJHtuYW1lc3BhY2VOYW1lfS4ke25vZGVEYXRhLmxhYmVsfWA7CitleHBvcnQgZnVuY3Rpb24g Z2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBnQnJvd3NlciwgYWNpVHJlZUlkZW50aWZpZXIpIHsKKyAg Y29uc3QgYmFzZVRpdGxlID0gZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIsIGFjaVRyZWVJZGVudGlm aWVyKTsKKworICBjb25zdCBwYXJlbnREYXRhID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRl bnRpZmllci5jYWxsKAorICAgIHBnQnJvd3NlciwKKyAgICBhY2lUcmVlSWRlbnRpZmllcgorICAp OworCisgIGNvbnN0IG5hbWVzcGFjZU5hbWUgPSByZXRyaWV2ZU5hbWVTcGFjZU5hbWUocGFyZW50 RGF0YSk7CisKKyAgY29uc3Qgbm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5RG9t RWxlbWVudChhY2lUcmVlSWRlbnRpZmllcik7CisKKyAgcmV0dXJuIGAke25hbWVzcGFjZU5hbWV9 LiR7bm9kZS5nZXREYXRhKCkubGFiZWx9LyR7YmFzZVRpdGxlfWA7CiB9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzIGIv d2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpp bmRleCBiNmNjZDVjOC4uMWZkOWVlZTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2Rh dGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpAQCAtMTAsNiArMTAsNyBA QAogaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQnOwog aW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9mb3InOwogaW1w b3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8uLi8uLi8u Li9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQge2dldFBhbmVsVGl0 bGV9IGZyb20gJy4vZ2V0X3BhbmVsX3RpdGxlJzsKIAogZnVuY3Rpb24gaGFzRGF0YWJhc2VJbmZv cm1hdGlvbihwYXJlbnREYXRhKSB7CiAgIHJldHVybiBwYXJlbnREYXRhLmRhdGFiYXNlOwpAQCAt MzQsMTAgKzM1LDE0IEBAIGZ1bmN0aW9uIGhhc1NlcnZlckluZm9ybWF0aW9ucyhwYXJlbnREYXRh KSB7CiAgIHJldHVybiBwYXJlbnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkOwogfQogCi1leHBv cnQgZnVuY3Rpb24gc2hvd1F1ZXJ5VG9vbChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwg dXJsLAotICBhY2lUcmVlSWRlbnRpZmllciwgcGFuZWxUaXRsZSkgeworZnVuY3Rpb24gZ2VuZXJh dGVUaXRsZShwZ0Jyb3dzZXIsIGFjaVRyZWVJZGVudGlmaWVyKSB7CisgIGNvbnN0IGJhc2VUaXRs ZSA9IGdldFBhbmVsVGl0bGUocGdCcm93c2VyLCBhY2lUcmVlSWRlbnRpZmllcik7CisgIHJldHVy biBiYXNlVGl0bGU7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBzaG93UXVlcnlUb29sKGRhdGFncmlk LCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB1cmwsIGFjaVRyZWVJZGVudGlmaWVyKSB7CiAgIGNvbnN0 IHNVUkwgPSB1cmwgfHwgJyc7Ci0gIGNvbnN0IHF1ZXJ5VG9vbFRpdGxlID0gcGFuZWxUaXRsZSB8 fCAnJzsKKyAgY29uc3QgcXVlcnlUb29sVGl0bGUgPSBnZW5lcmF0ZVRpdGxlKHBnQnJvd3Nlciwg YWNpVHJlZUlkZW50aWZpZXIpOwogCiAgIGNvbnN0IGN1cnJlbnROb2RlID0gcGdCcm93c2VyLnRy ZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRyZWVJZGVudGlmaWVyKTsKICAgaWYgKGN1 cnJlbnROb2RlID09PSB1bmRlZmluZWQpIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9maWx0ZXIuaHRtbCBiL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9maWx0ZXIuaHRtbAppbmRleCA5ZjE5ZGQ1 Ny4uMjQxMDMwZTYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBs YXRlcy9kYXRhZ3JpZC9maWx0ZXIuaHRtbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3Jp ZC90ZW1wbGF0ZXMvZGF0YWdyaWQvZmlsdGVyLmh0bWwKQEAgLTEsMTUgKzEsMyBAQAogPGRpdiBj bGFzcz0iZmlsdGVyLXRleHRhcmVhIj4KICAgICA8dGV4dGFyZWEgaWQ9InNxbF9maWx0ZXIiIHJv d3M9IjUiIHRhYmluZGV4PSIwIj48L3RleHRhcmVhPgotICAgIDxzdHlsZT4KLSAgICAgICAgLmZp bHRlci10ZXh0YXJlYSAuQ29kZU1pcnJvci1zY3JvbGwgewotICAgICAgICAgIG1pbi1oZWlnaHQ6 IDEyMHB4OwotICAgICAgICAgIG1heC1oZWlnaHQ6IDEyMHB4OwotICAgICAgICB9Ci0gICAgICAg IC5kYXRhdmlld19maWx0ZXJfZGlhbG9nIHsKLSAgICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7 Ci0gICAgICAgICAgcmlnaHQ6IDAgIWltcG9ydGFudDsKLSAgICAgICAgICBwYWRkaW5nOiAwcHgg IWltcG9ydGFudDsKLSAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgIH0KLSAg ICA8L3N0eWxlPgogPC9kaXY+CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2RhdGFncmlkL3Nob3dfZGF0YV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9k YXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcwppbmRleCBjNWMwMTI1Ni4uM2E5N2U1YTIgMTAwNjQ0 Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19kYXRhX3NwZWMu anMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3Bl Yy5qcwpAQCAtNjMsNiArNjMsNyBAQCBkZXNjcmliZSgnI3Nob3dfZGF0YScsICgpID0+IHsKICAg ICAgIGxhYmVsOiAnc2VydmVyMScsCiAgICAgICBzZXJ2ZXJfdHlwZTogJ3BnJywKICAgICAgIF9p ZDogMiwKKyAgICAgIHVzZXI6IHtuYW1lOiAnc29tZXVzZXInfSwKICAgICB9LCBbJ3BhcmVudCcs ICdzZXJ2ZXJfZ3JvdXAxJ10pOwogICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2 ZXJHcm91cDEsIHNlcnZlcjEpOwogCkBAIC0xMzMsNyArMTM0LDcgQEAgZGVzY3JpYmUoJyNzaG93 X2RhdGEnLCAoKSA9PiB7CiAgICAgICAgICdmYWxzZScsCiAgICAgICAgICdwZycsCiAgICAgICAg ICcnLAotICAgICAgICAnc2NoZW1hMS5zY2hlbWExJywKKyAgICAgICAgJ3NjaGVtYTEuc2NoZW1h MS9kYXRhYmFzZTEvc29tZXVzZXJAc2VydmVyMScsCiAgICAgICAgICcnCiAgICAgICApOwogICAg IH0pOwpAQCAtMTQ4LDcgKzE0OSw3IEBAIGRlc2NyaWJlKCcjc2hvd19kYXRhJywgKCkgPT4gewog ICAgICAgICAnZmFsc2UnLAogICAgICAgICAncGcnLAogICAgICAgICAnJywKLSAgICAgICAgJ3Zp ZXcxLnZpZXcxJywKKyAgICAgICAgJ3ZpZXcxLnZpZXcxL2RhdGFiYXNlMS9zb21ldXNlckBzZXJ2 ZXIxJywKICAgICAgICAgJycKICAgICAgICk7CiAgICAgfSk7CkBAIC0xNjMsNyArMTY0LDcgQEAg ZGVzY3JpYmUoJyNzaG93X2RhdGEnLCAoKSA9PiB7CiAgICAgICAgICdmYWxzZScsCiAgICAgICAg ICdwZycsCiAgICAgICAgICcnLAotICAgICAgICAnY2F0YWxvZzEuY2F0YWxvZzEnLAorICAgICAg ICAnY2F0YWxvZzEuY2F0YWxvZzEvZGF0YWJhc2UxL3NvbWV1c2VyQHNlcnZlcjEnLAogICAgICAg ICAnJwogICAgICAgKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvZGF0YWdyaWQvc2hvd19xdWVyeV90b29sX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzCmluZGV4IDNkYmQ0Nzgx Li4wNGNkYTkyNiAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3Jp ZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzCkBAIC01MSw2ICs1MSw4IEBAIGRlc2Ny aWJlKCcjc2hvd1F1ZXJ5VG9vbCcsICgpID0+IHsKICAgICAgIGxhYmVsOiAnc2VydmVyMScsCiAg ICAgICBzZXJ2ZXJfdHlwZTogJ3BnJywKICAgICAgIF9pZDogMiwKKyAgICAgIHVzZXI6IHtuYW1l OiAnc29tZXVzZXInfSwKKyAgICAgIGRiOiAnb3RoZXJkYmxhYmVsJywKICAgICB9KTsKICAgICBw Z0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIxKTsKIApAQCAt NjQsNyArNjYsNyBAQCBkZXNjcmliZSgnI3Nob3dRdWVyeVRvb2wnLCAoKSA9PiB7CiAKICAgY29u dGV4dCgnY2Fubm90IGZpbmQgdGhlIHRyZWUgbm9kZScsICgpID0+IHsKICAgICBiZWZvcmVFYWNo KCgpID0+IHsKLSAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5LCAnJywgW3tpZDogJzEwJ31dLCAndGl0bGUnKTsKKyAgICAgIHNob3dRdWVyeVRvb2wocXVl cnlUb29sLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCAnJywgW3tpZDogJzEwJ31dKTsKICAgICB9KTsK ICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CiAgICAgICBl eHBlY3QocXVlcnlUb29sLmNyZWF0ZV90cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQo KTsKQEAgLTkyLDE0ICs5NCwxNCBAQCBkZXNjcmliZSgnI3Nob3dRdWVyeVRvb2wnLCAoKSA9PiB7 CiAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgc2VydmVyJywgKCkgPT4g ewogICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyBub3QgdW5kZXJuZWF0aCBhIGRhdGFiYXNl JywgKCkgPT4gewogICAgICAgaXQoJ2NyZWF0ZXMgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKLSAg ICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRpZnksICdodHRw Oi8vc29tZXVybCcsIFt7aWQ6ICdzZXJ2ZXIxJ31dLCAndGl0bGUnKTsKKyAgICAgICAgc2hvd1F1 ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRpZnksICdodHRwOi8vc29tZXVybCcs IFt7aWQ6ICdzZXJ2ZXIxJ31dKTsKICAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5jcmVhdGVfdHJh bnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAogICAgICAgICAgICcvaW5pdGlhbGl6ZS9x dWVyeV90b29sLzEvMicsCiAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAndHJ1ZScsCiAgICAg ICAgICAgJ3BnJywKICAgICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAotICAgICAgICAgICd0aXRs ZScsCisgICAgICAgICAgJ290aGVyZGJsYWJlbC9zb21ldXNlckBzZXJ2ZXIxJywKICAgICAgICAg ICAnJywKICAgICAgICAgICBmYWxzZQogICAgICAgICApOwpAQCAtMTE1LDcgKzExNyw3IEBAIGRl c2NyaWJlKCcjc2hvd1F1ZXJ5VG9vbCcsICgpID0+IHsKICAgICAgICAgICAndHJ1ZScsCiAgICAg ICAgICAgJ3BnJywKICAgICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAotICAgICAgICAgICd0aXRs ZScsCisgICAgICAgICAgJ2RhdGFiYXNlMS9zb21ldXNlckBzZXJ2ZXIxJywKICAgICAgICAgICAn JywKICAgICAgICAgICBmYWxzZQogICAgICAgICApOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vcnVudGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQppbmRleCBkMDBiNDJh NC4uNGY4MTMxNDUgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBi L3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CkBAIC0yMzMsNiArMjMzLDcgQEAgZGVmIGdldF90 ZXN0X21vZHVsZXMoYXJndW1lbnRzKToKICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9zZXR1 cC5jb25maWdfZGF0YVsnaGVhZGxlc3NfY2hyb21lJ106CiAgICAgICAgICAgICAgICAgICAgICAg ICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1oZWFkbGVzcyIpCiAgICAgICAgICAgICBvcHRpb25z LmFkZF9hcmd1bWVudCgiLS13aW5kb3ctc2l6ZT0xMjgwLDEwMjQiKQorICAgICAgICAgICAgb3B0 aW9ucy5hZGRfZXhwZXJpbWVudGFsX29wdGlvbigndzNjJywgRmFsc2UpCiAgICAgICAgICAgICBk cml2ZXIgPSB3ZWJkcml2ZXIuQ2hyb21lKGNocm9tZV9vcHRpb25zPW9wdGlvbnMpCiAKICAgICAg ICAgIyBtYXhpbWl6ZSBicm93c2VyIHdpbmRvdwo= --0000000000004e2ed1058b09ae62--