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 1iXfrV-0002VQ-VC for pgadmin-hackers@arkaria.postgresql.org; Thu, 21 Nov 2019 06:22:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iXfqW-00084j-Jf for pgadmin-hackers@arkaria.postgresql.org; Thu, 21 Nov 2019 06:21:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iXfqV-00084c-SZ for pgadmin-hackers@lists.postgresql.org; Thu, 21 Nov 2019 06:21:40 +0000 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1iXfqS-0000CL-8Q for pgadmin-hackers@postgresql.org; Thu, 21 Nov 2019 06:21:38 +0000 Received: by mail-ot1-x344.google.com with SMTP id 94so1928100oty.8 for ; Wed, 20 Nov 2019 22:21:35 -0800 (PST) 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=MG/hdqa/amU08a3t3f5xq5YVuHyYyP9a5w7TFeYvgko=; b=mmpjFABsaPEC/1gNwGMZJt6hu09qablX/6VvE0cogJD+0FEqnlmT2CQv1ylXtZkY9e mpFZhiI82jksVTvEhyyiJLMtfhcj7sXOL6E4cqbnd8AJkHtVltGmhXHb+xVqI0p9/USl G03UG1LetIrddtx/kdS6YTa7rWjNvST4gWFn7vinEE5sa86XTxDa4HYMzqvVX+j36p8J xFu2xDmSGZllf0YsTIPeg+lGSAZ+tAlkKuy0exyME6ATninPwuYVFCqLrQVdRdqmY1Lw EVwFfru9pPFzJ/eIvGL5jg/FxDJMZUbOvitRRb2SCXe85CJctHZqZLknbvmw9DagVgY4 Dwug== 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=MG/hdqa/amU08a3t3f5xq5YVuHyYyP9a5w7TFeYvgko=; b=oREZA/f996ICDeATrL/QwrSaxkiftoKuATuPHmkUfNzeMvUd9iXYtmIA82hy53jEV/ AMmjcx9bZKVg9IPAjRnnYHLqx6N28fyu3H8bVFUPciWUWu77eRbXaOGJhuQt+8T93nXN qFs3UiUTta69+1EZMT2jTe9UQ8qnHlF2yuGlfU7G1WQibQEdVzHAzZhlHtkzBj7taruB SQn3V6ZbvDCqOfbASex8cv3PTkAnG5Rkli782TIInX6QOXblDUGjkYSeJaSY+Y8PSOn7 jBLCqf6CpYkgjHawnZouzLyDts43jAmckOUFh/byy2wAGNLfonZtbQSBirlilcr8ORx5 SEYQ== X-Gm-Message-State: APjAAAVJqM46Mvld8ldZt+IrAMwSrCHE+lVIDleTzCulfH3N6gSiUel+ MWEtb6DmRBqql7rWFe1t/5g4mjY1VUvXBsTJb5/cVuNc5uwtlT5zQbuj0OAlha12Kd/J67bu1Pd q0wz6T2y357a8X9DNMvJWJcxmSgfAYje3k+GdW1Nk8xn7AnCoGnWdU+uOmBPS7xvMMltsSJdZk9 M0yJWAjNfKEeMesZ6x79SBDQrXLkmDo21iGoGWrr6Ml9x3okSgrpExIWOh X-Google-Smtp-Source: APXvYqyOD6wWt6CHbrixFAFUOhD4O4i9CJqYEwe7xZYTcOCyj3qmZ85C0CSwKFZz0fbG4uem70/KcfjjSZMEhqTptBA= X-Received: by 2002:a9d:648f:: with SMTP id g15mr5167336otl.195.1574317294837; Wed, 20 Nov 2019 22:21:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Thu, 21 Nov 2019 11:50:58 +0530 Message-ID: Subject: Re: [pgAdmin][RM4818] Unable to handle loss of connection to server To: pgadmin-hackers Cc: Akshay Joshi Content-Type: multipart/mixed; boundary="0000000000001f9b570597d54f1d" X-CLOUD-SEC-AV-Info: edb,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 --0000000000001f9b570597d54f1d Content-Type: multipart/alternative; boundary="0000000000001f9b540597d54f1b" --0000000000001f9b540597d54f1b Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the updated patch to fix the review comments. Please note, there is some problem with psycopg2/libpq where it hangs when network is lost - https://github.com/psycopg/psycopg2/issues/561 I've also changed the code to make connections after the "Servers" node is expanded to fix - RM4933, so that the servers are listed first. Kindly review. On Fri, Nov 15, 2019 at 2:34 PM Akshay Joshi wrote: > Hi Aditya > > Following are the review comments: > > 1. The default connection timeout should be *10* seconds. > 2. In case the network is disabled and when we expand the "Servers" > node the database server(for which network is disabled) should be shown in > the disconnected state. > 3. For the above case when you try to connect to the server and at > the same time trying to fetch the properties of the valid database server, > it takes long time to fetch it. > 4. Case when the network is disabled, the database servers password > is saved and pgAdmin4 tries to connect the server, after connection > timeout, there is no message to the user, only spinner gets disappeared. We > should show a message. > 5. We should improve the error messages "timeout expired" and > "Connection to the servers has been lost." to the more meaningful messages > like "Check the network settings, check the firewall status." > 6. Install database server on Windows and Enable Windows Firewall. Try > to connect to the same database server. Spinner is not showing, as a user I > am not able to understand is there any action started at the backend or > not. As a user, I'll keep trying to connect multiple times and after the > connection timeout of each request dialog pops up. > > > On Thu, Nov 14, 2019 at 12:15 PM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Attached is the workaround patch to set the default connection timeout to >> 30 seconds instead of the current value of infinite - 0, zero. The input is >> present in the server properties dialogs advanced tab. The workaround >> applies to the RM4724 as well. >> The permanent solution would be to expand the nodes asynchronously - >> https://redmine.postgresql.org/issues/4933 >> >> Also fixed a bug where sql editor is not closing if the server is >> disconnected in between. >> >> Kindly review. >> >> -- >> Thanks and Regards, >> Aditya Toshniwal >> Sr. Software Engineer | EnterpriseDB India | Pune >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > -- Thanks and Regards, Aditya Toshniwal Sr. Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --0000000000001f9b540597d54f1b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the updated p= atch to fix the review comments.
Please note, there is some problem with ps= ycopg2/libpq where it hangs when network is lost -=C2=A0https://github.com/psycopg/psycopg2/issues/561
I've a= lso changed the code to make connections after the "Servers" node= is expanded to fix - RM4933, so that the servers are listed first.

Ki= ndly review.

On Fri, Nov 15, 2019 at 2:34 PM Akshay Joshi <akshay.joshi@enterprisedb.com= > wrote:
Hi=C2=A0Aditya

Following are the review com= ments:
  1. The default connection timeout should be 10 secon= ds.
  2. In case the network is disabled and when we expand the "Se= rvers" node the database server(for which network is disabled) should = be shown in the disconnected state.
  3. =C2=A0For the above case when y= ou try to connect to the server and at the same time trying to fetch the pr= operties of the valid database server, it takes long time to fetch it.
  4. =
  5. =C2=A0Case when the network is disabled, the database servers password = is saved and pgAdmin4 tries to connect the server, after connection timeout= , there is no message to the user, only spinner gets disappeared. We should= show a message.
  6. We should improve the error messages "timeout= expired" and "Connection to the servers has been lost." to = the more meaningful messages like "Check the network settings, check t= he firewall=C2=A0status."
  7. Install database server on Windows a= nd Enable Windows Firewall. Try to connect to the same database server. Spi= nner is not showing, as a user I am not able to understand is there any act= ion started at the backend or not. As a user, I'll keep trying to conne= ct multiple times and after the connection timeout of each request dialog p= ops up.

On Thu, Nov 14, 2019 at 12:15 PM Aditya Toshn= iwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi Hackers,

Attac= hed is the workaround patch to set the default connection timeout to 30 sec= onds instead of the current value of infinite - 0, zero. The input is prese= nt in the server properties dialogs advanced tab. The workaround applies to= the RM4724 as well.
The= permanent solution would be to expand the nodes asynchronously -=C2=A0https://redmine.postgresql.org/i= ssues/4933

Also fixed a bug where sql e= ditor is not closing if the server is disconnected in between.

Kindly review.

--
Thanks and Regards,
Adit= ya Toshniwal
Sr. Software Engineer |=C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Compla= in about Heat, Plant a TREE"


--
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 and Regards,
Aditya Toshniwal
Sr. Software Engineer |=C2=A0EnterpriseDB In= dia |=C2=A0Pune
"Don't Complain about Heat, Plant a TREE"
=
--0000000000001f9b540597d54f1b-- --0000000000001f9b570597d54f1d Content-Type: application/octet-stream; name="RM4818_v2.patch" Content-Disposition: attachment; filename="RM4818_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k38bufab0 ZGlmZiAtLWdpdCBhL3dlYi9taWdyYXRpb25zL3ZlcnNpb25zL2FmZjE0MzZlM2M4Y18ucHkgYi93 ZWIvbWlncmF0aW9ucy92ZXJzaW9ucy9hZmYxNDM2ZTNjOGNfLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMC4uNDVjZmI5YjNkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL21p Z3JhdGlvbnMvdmVyc2lvbnMvYWZmMTQzNmUzYzhjXy5weQpAQCAtMCwwICsxLDI3IEBACisKKyIi IiBVcGRhdGUgdGhlIGRlZmF1bHQgdGltZW91dCB0byAzMCBzZWNvbmRzIGluc3RlYWQgb24gMC4K KzAgaW5kaWNhdGVzIHdhaXQgaW5kZWZpbml0ZWx5IHdoaWNoIGNhdXNlcyB0cm91YmxlIHdoZW4g bmV0d29yayBjb25uZWN0aW9uCit0byBzZXJ2ZXIgaXMgbG9zdC4KKworUmV2aXNpb24gSUQ6IGFm ZjE0MzZlM2M4YworUmV2aXNlczogYTc3YTA5MzJhNTY4CitDcmVhdGUgRGF0ZTogMjAxOS0xMC0y OCAxMjo0NzozNi44Mjg3MDkKKworIiIiCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiCisK KyMgcmV2aXNpb24gaWRlbnRpZmllcnMsIHVzZWQgYnkgQWxlbWJpYy4KK3JldmlzaW9uID0gJ2Fm ZjE0MzZlM2M4YycKK2Rvd25fcmV2aXNpb24gPSAnYTc3YTA5MzJhNTY4JworYnJhbmNoX2xhYmVs cyA9IE5vbmUKK2RlcGVuZHNfb24gPSBOb25lCisKKworZGVmIHVwZ3JhZGUoKToKKyAgICBkYi5l bmdpbmUuZXhlY3V0ZSgKKyAgICAgICAgJ1VQREFURSBzZXJ2ZXIgU0VUIGNvbm5lY3RfdGltZW91 dD0xMCBXSEVSRSBjb25uZWN0X3RpbWVvdXQ9MCBPUiBjb25uZWN0X3RpbWVvdXQgSVMgTlVMTCcK KyAgICApCisKKworZGVmIGRvd25ncmFkZSgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvX19pbml0X18ucHkKaW5kZXggZGMz OWExMzkzLi42YjZhZTRjNTMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5CkBAIC0yOCw2ICsyOCw3IEBAIGZyb20gcGdh ZG1pbi5tb2RlbCBpbXBvcnQgZGIsIFNlcnZlciwgU2VydmVyR3JvdXAsIFVzZXIKIGZyb20gcGdh ZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20gcGdhZG1pbi51dGlscy5t YXN0ZXJfcGFzc3dvcmQgaW1wb3J0IGdldF9jcnlwdF9rZXkKIGZyb20gcGdhZG1pbi51dGlscy5l eGNlcHRpb24gaW1wb3J0IENyeXB0S2V5TWlzc2luZworZnJvbSBwc3ljb3BnMiBpbXBvcnQgRXJy b3IgYXMgcHN5Y29wZzJfRXJyb3IKIAogCiBkZWYgaGFzX2FueShkYXRhLCBrZXlzKToKQEAgLTU4 LDcgKzU5LDcgQEAgZGVmIHJlY292ZXJ5X3N0YXRlKGNvbm5lY3Rpb24sIHBvc3RncmVzX3ZlcnNp b24pOgogICAgIGVsc2U6CiAgICAgICAgIGluX3JlY292ZXJ5ID0gTm9uZQogICAgICAgICB3YWxf cGF1c2VkID0gTm9uZQotICAgIHJldHVybiBpbl9yZWNvdmVyeSwgd2FsX3BhdXNlZAorICAgIHJl dHVybiBzdGF0dXMsIHJlc3VsdCwgaW5fcmVjb3ZlcnksIHdhbF9wYXVzZWQKIAogCiBkZWYgc2Vy dmVyX2ljb25fYW5kX2JhY2tncm91bmQoaXNfY29ubmVjdGVkLCBtYW5hZ2VyLCBzZXJ2ZXIpOgpA QCAtMTIxLDE5ICsxMjIsMjEgQEAgY2xhc3MgU2VydmVyTW9kdWxlKHNnLlNlcnZlckdyb3VwUGx1 Z2luTW9kdWxlKToKICAgICAgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgogICAgICAgICAgICAg Y29ubmVjdGVkID0gRmFsc2UKICAgICAgICAgICAgIG1hbmFnZXIgPSBOb25lCisgICAgICAgICAg ICBlcnJtc2cgPSBOb25lCisgICAgICAgICAgICB3YXNfY29ubmVjdGVkID0gRmFsc2UKKyAgICAg ICAgICAgIGluX3JlY292ZXJ5ID0gTm9uZQorICAgICAgICAgICAgd2FsX3BhdXNlZCA9IE5vbmUK ICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5l Y3Rpb25fbWFuYWdlcihzZXJ2ZXIuaWQpCiAgICAgICAgICAgICAgICAgY29ubiA9IG1hbmFnZXIu Y29ubmVjdGlvbigpCi0gICAgICAgICAgICAgICAgY29ubmVjdGVkID0gY29ubi5jb25uZWN0ZWQo KQorICAgICAgICAgICAgICAgIHdhc19jb25uZWN0ZWQgPSBjb25uLndhc0Nvbm5lY3RlZAogICAg ICAgICAgICAgZXhjZXB0IENyeXB0S2V5TWlzc2luZzoKICAgICAgICAgICAgICAgICAjIHNob3cg dGhlIG5vZGVzIGF0IGxlYXN0IGV2ZW4gaWYgbm90IGFibGUgdG8gY29ubmVjdC4KICAgICAgICAg ICAgICAgICBwYXNzCisgICAgICAgICAgICBleGNlcHQgcHN5Y29wZzJfRXJyb3IgYXMgZToKKyAg ICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAg ICAgICAgZXJybXNnID0gc3RyKGUpCiAKLSAgICAgICAgICAgIGluX3JlY292ZXJ5ID0gTm9uZQot ICAgICAgICAgICAgd2FsX3BhdXNlZCA9IE5vbmUKLQotICAgICAgICAgICAgaWYgY29ubmVjdGVk OgotICAgICAgICAgICAgICAgIGluX3JlY292ZXJ5LCB3YWxfcGF1c2VkID0gcmVjb3Zlcnlfc3Rh dGUoY29ubiwgbWFuYWdlci52ZXJzaW9uKQogICAgICAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCiAgICAgICAgICAgICAgICAgIiVkIiAlIChzZXJ2ZXIuaWQpLAogICAg ICAgICAgICAgICAgIGdpZCwKQEAgLTE1MSw3ICsxNTQsOSBAQCBjbGFzcyBTZXJ2ZXJNb2R1bGUo c2cuU2VydmVyR3JvdXBQbHVnaW5Nb2R1bGUpOgogICAgICAgICAgICAgICAgIGlzX3Bhc3N3b3Jk X3NhdmVkPVRydWUgaWYgc2VydmVyLnBhc3N3b3JkIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAg ICAgZWxzZSBGYWxzZSwKICAgICAgICAgICAgICAgICBpc190dW5uZWxfcGFzc3dvcmRfc2F2ZWQ9 VHJ1ZQotICAgICAgICAgICAgICAgIGlmIHNlcnZlci50dW5uZWxfcGFzc3dvcmQgaXMgbm90IE5v bmUgZWxzZSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIHNlcnZlci50dW5uZWxfcGFzc3dvcmQg aXMgbm90IE5vbmUgZWxzZSBGYWxzZSwKKyAgICAgICAgICAgICAgICB3YXNfY29ubmVjdGVkPXdh c19jb25uZWN0ZWQsCisgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZwogICAgICAgICAgICAg KQogCiAgICAgQHByb3BlcnR5CkBAIC0zNTIsMTIgKzM1NywxNiBAQCBjbGFzcyBTZXJ2ZXJOb2Rl KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rp b25fbWFuYWdlcihzZXJ2ZXIuaWQpCiAgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0 aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3RlZCA9IGNvbm4uY29ubmVjdGVkKCkKLQorICAgICAg ICAgICAgZXJybXNnID0gTm9uZQorICAgICAgICAgICAgaW5fcmVjb3ZlcnkgPSBOb25lCisgICAg ICAgICAgICB3YWxfcGF1c2VkID0gTm9uZQogICAgICAgICAgICAgaWYgY29ubmVjdGVkOgotICAg ICAgICAgICAgICAgIGluX3JlY292ZXJ5LCB3YWxfcGF1c2VkID0gcmVjb3Zlcnlfc3RhdGUoY29u biwgbWFuYWdlci52ZXJzaW9uKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBp bl9yZWNvdmVyeSA9IE5vbmUKLSAgICAgICAgICAgICAgICB3YWxfcGF1c2VkID0gTm9uZQorICAg ICAgICAgICAgICAgIHN0YXR1cywgcmVzdWx0LCBpbl9yZWNvdmVyeSwgd2FsX3BhdXNlZCA9XAor ICAgICAgICAgICAgICAgICAgICByZWNvdmVyeV9zdGF0ZShjb25uLCBtYW5hZ2VyLnZlcnNpb24p CisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgY29u bmVjdGVkID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5yZWxlYXNlKCkKKyAg ICAgICAgICAgICAgICAgICAgZXJybXNnID0gInswfSA6IHsxfSIuZm9ybWF0KHNlcnZlci5uYW1l LCByZXN1bHQpCiAKICAgICAgICAgICAgIHJlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgc2Vs Zi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKApAQCAtMzc3LDcgKzM4Niw4IEBAIGNs YXNzIFNlcnZlck5vZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgaXNf cGFzc3dvcmRfc2F2ZWQ9VHJ1ZSBpZiBzZXJ2ZXIucGFzc3dvcmQgaXMgbm90IE5vbmUKICAgICAg ICAgICAgICAgICAgICAgZWxzZSBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgaXNfdHVubmVs X3Bhc3N3b3JkX3NhdmVkPVRydWUKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyLnR1bm5l bF9wYXNzd29yZCBpcyBub3QgTm9uZSBlbHNlIEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGlm IHNlcnZlci50dW5uZWxfcGFzc3dvcmQgaXMgbm90IE5vbmUgZWxzZSBGYWxzZSwKKyAgICAgICAg ICAgICAgICAgICAgZXJybXNnPWVycm1zZwogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICkKIApAQCAtNDA5LDEyICs0MTksMTYgQEAgY2xhc3MgU2VydmVyTm9kZShQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29u bmVjdGlvbl9tYW5hZ2VyKHNlcnZlci5pZCkKICAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVj dGlvbigpCiAgICAgICAgIGNvbm5lY3RlZCA9IGNvbm4uY29ubmVjdGVkKCkKLQorICAgICAgICBl cnJtc2cgPSBOb25lCisgICAgICAgIGluX3JlY292ZXJ5ID0gTm9uZQorICAgICAgICB3YWxfcGF1 c2VkID0gTm9uZQogICAgICAgICBpZiBjb25uZWN0ZWQ6Ci0gICAgICAgICAgICBpbl9yZWNvdmVy eSwgd2FsX3BhdXNlZCA9IHJlY292ZXJ5X3N0YXRlKGNvbm4sIG1hbmFnZXIudmVyc2lvbikKLSAg ICAgICAgZWxzZToKLSAgICAgICAgICAgIGluX3JlY292ZXJ5ID0gTm9uZQotICAgICAgICAgICAg d2FsX3BhdXNlZCA9IE5vbmUKKyAgICAgICAgICAgIHN0YXR1cywgcmVzdWx0LCBpbl9yZWNvdmVy eSwgd2FsX3BhdXNlZCA9XAorICAgICAgICAgICAgICAgIHJlY292ZXJ5X3N0YXRlKGNvbm4sIG1h bmFnZXIudmVyc2lvbikKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgY29ubmVjdGVkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBtYW5hZ2VyLnJlbGVhc2UoKQor ICAgICAgICAgICAgICAgIGVycm1zZyA9ICJ7MH0gOiB7MX0iLmZvcm1hdChzZXJ2ZXIubmFtZSwg cmVzdWx0KQogCiAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAg ICByZXN1bHQ9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKApAQCAtNDM0LDgg KzQ0OCw5IEBAIGNsYXNzIFNlcnZlck5vZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAg ICAgICBpc19wYXNzd29yZF9zYXZlZD1UcnVlIGlmIHNlcnZlci5wYXNzd29yZCBpcyBub3QgTm9u ZQogICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UsCiAgICAgICAgICAgICAgICAgaXNfdHVubmVs X3Bhc3N3b3JkX3NhdmVkPVRydWUKLSAgICAgICAgICAgICAgICBpZiBzZXJ2ZXIudHVubmVsX3Bh c3N3b3JkIGlzIG5vdCBOb25lIGVsc2UgRmFsc2UKLSAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICBpZiBzZXJ2ZXIudHVubmVsX3Bhc3N3b3JkIGlzIG5vdCBOb25lIGVsc2UgRmFsc2UsCisg ICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZworICAgICAgICAgICAgKSwKICAgICAgICAgKQog CiAgICAgQGxvZ2luX3JlcXVpcmVkCkBAIC05NDksMTkgKzk2NCwzMyBAQCBjbGFzcyBTZXJ2ZXJO b2RlKFBHQ2hpbGROb2RlVmlldyk6CiAKICAgICBkZWYgY29ubmVjdF9zdGF0dXMoc2VsZiwgZ2lk LCBzaWQpOgogICAgICAgICAiIiJDaGVjayBhbmQgcmV0dXJuIHRoZSBjb25uZWN0aW9uIHN0YXR1 cy4iIiIKKyAgICAgICAgc2VydmVyID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieShpZD1zaWQpLmZp cnN0KCkKICAgICAgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNv bm5lY3Rpb25fbWFuYWdlcihzaWQpCiAgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24o KQotICAgICAgICByZXMgPSBjb25uLmNvbm5lY3RlZCgpCisgICAgICAgIGNvbm5lY3RlZCA9IGNv bm4uY29ubmVjdGVkKCkKKyAgICAgICAgaW5fcmVjb3ZlcnkgPSBOb25lCisgICAgICAgIHdhbF9w YXVzZWQgPSBOb25lCisgICAgICAgIGVycm1zZyA9IE5vbmUKKyAgICAgICAgaWYgY29ubmVjdGVk OgorICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQsIGluX3JlY292ZXJ5LCB3YWxfcGF1c2VkID1c CisgICAgICAgICAgICAgICAgcmVjb3Zlcnlfc3RhdGUoY29ubiwgbWFuYWdlci52ZXJzaW9uKQog Ci0gICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgIGZyb20gcGdhZG1pbi51dGlscy5leGNlcHRp b24gaW1wb3J0IENvbm5lY3Rpb25Mb3N0LCBcCi0gICAgICAgICAgICAgICAgU1NIVHVubmVsQ29u bmVjdGlvbkxvc3QKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb25uLmV4ZWN1 dGVfc2NhbGFyKCdTRUxFQ1QgMScpCi0gICAgICAgICAgICBleGNlcHQgKENvbm5lY3Rpb25Mb3N0 LCBTU0hUdW5uZWxDb25uZWN0aW9uTG9zdCk6Ci0gICAgICAgICAgICAgICAgcmVzID0gRmFsc2UK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgY29ubmVjdGVkID0g RmFsc2UKKyAgICAgICAgICAgICAgICBtYW5hZ2VyLnJlbGVhc2UoKQorICAgICAgICAgICAgICAg IGVycm1zZyA9ICJ7MH0gOiB7MX0iLmZvcm1hdChzZXJ2ZXIubmFtZSwgcmVzdWx0KQogCi0gICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J2Nvbm5lY3RlZCc6IHJlc30pCisg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXsKKyAg ICAgICAgICAgICAgICAnaWNvbic6IHNlcnZlcl9pY29uX2FuZF9iYWNrZ3JvdW5kKGNvbm5lY3Rl ZCwgbWFuYWdlciwgc2VydmVyKSwKKyAgICAgICAgICAgICAgICAnY29ubmVjdGVkJzogY29ubmVj dGVkLAorICAgICAgICAgICAgICAgICdpbl9yZWNvdmVyeSc6IGluX3JlY292ZXJ5LAorICAgICAg ICAgICAgICAgICd3YWxfcGF1c2UnOiB3YWxfcGF1c2VkLAorICAgICAgICAgICAgICAgICdzZXJ2 ZXJfdHlwZSc6IG1hbmFnZXIuc2VydmVyX3R5cGUgaWYgY29ubmVjdGVkIGVsc2UgInBnIiwKKyAg ICAgICAgICAgICAgICAndXNlcic6IG1hbmFnZXIudXNlcl9pbmZvIGlmIGNvbm5lY3RlZCBlbHNl IE5vbmUsCisgICAgICAgICAgICAgICAgJ2Vycm1zZyc6IGVycm1zZworICAgICAgICAgICAgfQor ICAgICAgICApCiAKICAgICBkZWYgY29ubmVjdChzZWxmLCBnaWQsIHNpZCk6CiAgICAgICAgICIi IgpAQCAtMTEyNSw3ICsxMTU0LDggQEAgY2xhc3MgU2VydmVyTm9kZShQR0NoaWxkTm9kZVZpZXcp OgogICAgICAgICAgICAgICAgICVzIC0gJXMnICUgKHNlcnZlci5pZCwgc2VydmVyLm5hbWUpKQog ICAgICAgICAgICAgIyBVcGRhdGUgdGhlIHJlY292ZXJ5IGFuZCB3YWwgcGF1c2Ugb3B0aW9uIGZv ciB0aGUgc2VydmVyCiAgICAgICAgICAgICAjIGlmIGNvbm5lY3RlZCBzdWNjZXNzZnVsbHkKLSAg ICAgICAgICAgIGluX3JlY292ZXJ5LCB3YWxfcGF1c2VkID0gcmVjb3Zlcnlfc3RhdGUoY29ubiwg bWFuYWdlci52ZXJzaW9uKQorICAgICAgICAgICAgXywgXywgaW5fcmVjb3ZlcnksIHdhbF9wYXVz ZWQgPVwKKyAgICAgICAgICAgICAgICByZWNvdmVyeV9zdGF0ZShjb25uLCBtYW5hZ2VyLnZlcnNp b24pCiAKICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAg ICAgICAgc3VjY2Vzcz0xLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3N0YXRpYy9qcy9zZXJ2ZXIuanMKaW5kZXggOTlmZWQ5NDll Li4wODM2NDc4M2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3N0YXRpYy9qcy9zZXJ2ZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5qcwpAQCAtMjkyLDYgKzI5Miwx MCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5zZXJ2ZXInLCBbCiAKICAgICAgICAgICAvLyBDYWxs IGFkZGVkIG1ldGhvZCBvZiBub2RlLmpzCiAgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUu Y2FsbGJhY2tzLmFkZGVkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAgICAgICBpZihk YXRhLndhc19jb25uZWN0ZWQpIHsKKyAgICAgICAgICAgIGZldGNoX2Nvbm5lY3Rpb25fc3RhdHVz KHRoaXMsIGRhdGEsIHBnQnJvd3Nlci50cmVlLCBpdGVtKTsKKyAgICAgICAgICB9CiAgICAgICAg ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sCiAgICAgICAgIC8qIFJlbG9hZCBjb25maWd1cmF0 aW9uICovCkBAIC03MzIsNyArNzM2LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VydmVyJywg WwogICAgICAgICAgIHR1bm5lbF9wYXNzd29yZDogdW5kZWZpbmVkLAogICAgICAgICAgIHR1bm5l bF9hdXRoZW50aWNhdGlvbjogMCwKICAgICAgICAgICBzYXZlX3R1bm5lbF9wYXNzd29yZDogZmFs c2UsCi0gICAgICAgICAgY29ubmVjdF90aW1lb3V0OiAwLAorICAgICAgICAgIGNvbm5lY3RfdGlt ZW91dDogMTAsCiAgICAgICAgIH0sCiAgICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQogICAgICAg ICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewpAQCAtMTI3Myw3ICsxMjc3LDE0 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnNlcnZlcicsIFsKICAgICAgICAgfQogICAgICAgfTsK IAorICAgICAgLyogV2FpdCB0aWxsIHRoZSBleGlzdGluZyByZXF1ZXN0IGNvbXBsZXRlcyAqLwor ICAgICAgaWYoZGF0YS5pc19jb25uZWN0aW5nKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0K ICAgICAgIGRhdGEuaXNfY29ubmVjdGluZyA9IHRydWU7CisgICAgICB0cmVlLnNldExlYWYoaXRl bSk7CisgICAgICB0cmVlLnJlbW92ZUljb24oaXRlbSk7CisgICAgICB0cmVlLmFkZEljb24oaXRl bSwge2ljb246ICdpY29uLXNlcnZlci1jb25uZWN0aW5nJ30pOwogICAgICAgdmFyIHVybCA9IG9i ai5nZW5lcmF0ZV91cmwoaXRlbSwgJ2Nvbm5lY3QnLCBkYXRhLCB0cnVlKTsKICAgICAgICQucG9z dCh1cmwpCiAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgewpAQCAtMTI4OSw2ICsxMzAwLDM3 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnNlcnZlcicsIFsKICAgICAgICAgICApOwogICAgICAg ICB9KTsKICAgICB9OworICAgIHZhciBmZXRjaF9jb25uZWN0aW9uX3N0YXR1cyA9IGZ1bmN0aW9u KG9iaiwgZGF0YSwgdHJlZSwgaXRlbSkgeworICAgICAgdmFyIHVybCA9IG9iai5nZW5lcmF0ZV91 cmwoaXRlbSwgJ2Nvbm5lY3QnLCBkYXRhLCB0cnVlKTsKKworICAgICAgdHJlZS5zZXRMZWFmKGl0 ZW0pOworICAgICAgdHJlZS5yZW1vdmVJY29uKGl0ZW0pOworICAgICAgdHJlZS5hZGRJY29uKGl0 ZW0sIHtpY29uOiAnaWNvbi1zZXJ2ZXItY29ubmVjdGluZyd9KTsKKyAgICAgICQuZ2V0KHVybCkK KyAgICAgICAgLmRvbmUoZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAgdHJlZS5zZXRJbm9kZShp dGVtKTsKKyAgICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB7CisgICAgICAgICAgICBpZiAo dHlwZW9mIHJlcy5kYXRhLmljb24gPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgdHJlZS5y ZW1vdmVJY29uKGl0ZW0pOworICAgICAgICAgICAgICBkYXRhLmljb24gPSByZXMuZGF0YS5pY29u OworICAgICAgICAgICAgICB0cmVlLmFkZEljb24oaXRlbSwge2ljb246IGRhdGEuaWNvbn0pOwor ICAgICAgICAgICAgfQorICAgICAgICAgICAgXy5leHRlbmQoZGF0YSwgcmVzLmRhdGEpOworCisg ICAgICAgICAgICB2YXIgc2VydmVySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvID0gcGdCcm93 c2VyLnNlcnZlckluZm8gfHwge307CisgICAgICAgICAgICBzZXJ2ZXJJbmZvW2RhdGEuX2lkXSA9 IF8uZXh0ZW5kKHt9LCBkYXRhKTsKKworICAgICAgICAgICAgaWYoZGF0YS5lcnJtc2cpIHsKKyAg ICAgICAgICAgICAgQWxlcnRpZnkuZXJyb3IoZGF0YS5lcnJtc2cpOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgLmZhaWwoZnVuY3Rpb24oeGhyLCBzdGF0 dXMsIGVycm9yKSB7CisgICAgICAgICAgdHJlZS5zZXRJbm9kZShpdGVtKTsKKyAgICAgICAgICB0 cmVlLmFkZEljb24oaXRlbSwge2ljb246ICdpY29uLXNlcnZlci1ub3QtY29ubmVjdGVkJ30pOwor ICAgICAgICAgIEFsZXJ0aWZ5LnBnUmVzcEVycm9yTm90aWZ5KHhociwgZXJyb3IpOworICAgICAg ICB9KTsKKyAgICB9OwogICB9CiAKICAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ107 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci91dGlscy5weQppbmRleCAyYTE3YjNhMmQuLjY3ZGNlMDk0MiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3V0 aWxzLnB5CkBAIC0xNyw3ICsxNyw4IEBAIGZyb20gZmxhc2sudmlld3MgaW1wb3J0IFZpZXcsIE1l dGhvZFZpZXdUeXBlLCB3aXRoX21ldGFjbGFzcwogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBn ZXR0ZXh0CiAKIGZyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgotZnJvbSBwZ2Fk bWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgcHJlY29uZGl0aW9uX3Jl cXVpcmVkCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNl LCBwcmVjb25kaXRpb25fcmVxdWlyZWQsXAorICAgIGludGVybmFsX3NlcnZlcl9lcnJvcgogZnJv bSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQgQ29ubmVjdGlvbkxvc3QsIFNTSFR1bm5l bENvbm5lY3Rpb25Mb3N0LFwKICAgICBDcnlwdEtleU1pc3NpbmcKIApAQCAtMzc3LDExICszNzgs NyBAQCBjbGFzcyBQR0NoaWxkTm9kZVZpZXcoTm9kZVZpZXcpOgogICAgICAgICAgICAgaWYgbm90 IGNvbm4uY29ubmVjdGVkKCk6CiAgICAgICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBjb25uLmNv bm5lY3QoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAg ICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCi0gICAgICAgICAgICAgICAgICAgICAg ICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdC4iCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1tc2cpCiAgICAgICAgIGV4Y2VwdCAoQ29ubmVjdGlvbkxvc3Qs IFNTSFR1bm5lbENvbm5lY3Rpb25Mb3N0LCBDcnlwdEtleU1pc3NpbmcpOgogICAgICAgICAgICAg cmFpc2UKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9hcmQuanMgYi93ZWIvcGdhZG1pbi9kYXNo Ym9hcmQvc3RhdGljL2pzL2Rhc2hib2FyZC5qcwppbmRleCA0MmQyZWNhNGIuLjZlNDY2MDUyYSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9hcmQuanMK KysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9hcmQuanMKQEAgLTU0 Myw2ICs1NDMsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uZGFzaGJvYXJkJywgWwogICAgICAgKTsKICAg ICAgIGNvbnN0IFdBSVRfQ09VTlRFUiA9IDM7CiAgICAgICBsZXQgbGFzdF9wb2xsX3dhaXRfY291 bnRlciA9IDA7CisgICAgICBsZXQgcmVzcF9ub3RfcmVjZWl2ZWRfY291bnRlciA9IDA7CiAKICAg ICAgIC8qIFN0b3AgaWYgcnVubmluZywgb25seSBvbmUgcG9sbGVyIGxpdmVzICovCiAgICAgICBz ZWxmLnN0b3BDaGFydHNQb2xsZXIoKTsKQEAgLTU2Myw3ICs1NjQsNyBAQCBkZWZpbmUoJ3BnYWRt aW4uZGFzaGJvYXJkJywgWwogICAgICAgICAvKiBJZiBub25lIG9mIHRoZSBjaGFydCB3YW50cyBk YXRhLCBkb24ndCB0cm91YmxlCiAgICAgICAgICAqIElmIHJlc3BvbnNlIG5vdCByZWNlaXZlZCBm cm9tIHByZXYgcG9sbCwgZG9uJ3QgdHJvdWJsZSAhIQogICAgICAgICAgKi8KLSAgICAgICAgaWYo Y2hhcnRfbmFtZXNfdG9fZ2V0Lmxlbmd0aCA9PSAwIHx8IGxhc3RfcG9sbF93YWl0X2NvdW50ZXIg PiAwKSB7CisgICAgICAgIGlmKGNoYXJ0X25hbWVzX3RvX2dldC5sZW5ndGggPT0gMCB8fCBsYXN0 X3BvbGxfd2FpdF9jb3VudGVyID4gMCB8fCByZXNwX25vdF9yZWNlaXZlZF9jb3VudGVyID49IFdB SVRfQ09VTlRFUikgewogICAgICAgICAgIC8qIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHRyaWVzLCBy ZXF1ZXN0IHNob3VsZCBiZSBzZW50IGlmIGxhc3RfcG9sbF93YWl0X2NvdW50ZXIKICAgICAgICAg ICAgKiBjb21wbGV0ZXMgV0FJVF9DT1VOVEVSIHRpbWVzLiovCiAgICAgICAgICAgbGFzdF9wb2xs X3dhaXRfY291bnRlci0tOwpAQCAtNTcxLDEyICs1NzIsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLmRh c2hib2FyZCcsIFsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBwYXRoID0gc2VsZi5nZXRTdGF0 c1VybChzaWQsIGRpZCwgY2hhcnRfbmFtZXNfdG9fZ2V0KTsKKyAgICAgICAgcmVzcF9ub3RfcmVj ZWl2ZWRfY291bnRlcisrOwogICAgICAgICAkLmFqYXgoewogICAgICAgICAgIHVybDogcGF0aCwK ICAgICAgICAgICB0eXBlOiAnR0VUJywKICAgICAgICAgfSkKICAgICAgICAgICAuZG9uZShmdW5j dGlvbihyZXNwKSB7Ci0gICAgICAgICAgICBsYXN0X3BvbGxfd2FpdF9jb3VudGVyID0gMDsKICAg ICAgICAgICAgIGZvcihsZXQgY2hhcnRfbmFtZSBpbiByZXNwKSB7CiAgICAgICAgICAgICAgIGxl dCBjaGFydF9vYmogPSBjaGFydF9zdG9yZVtjaGFydF9uYW1lXS5jaGFydF9vYmo7CiAgICAgICAg ICAgICAgICQoY2hhcnRfb2JqLmdldENvbnRhaW5lcigpKS5yZW1vdmVDbGFzcygnZ3JhcGgtZXJy b3InKTsKQEAgLTU4NCw3ICs1ODUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4uZGFzaGJvYXJkJywgWwog ICAgICAgICAgICAgfQogICAgICAgICAgIH0pCiAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24oeGhy KSB7Ci0gICAgICAgICAgICBsYXN0X3BvbGxfd2FpdF9jb3VudGVyID0gMDsKICAgICAgICAgICAg IGxldCBlcnIgPSAnJzsKICAgICAgICAgICAgIGxldCBtc2cgPSAnJzsKICAgICAgICAgICAgIGxl dCBjbHMgPSAnaW5mbyc7CkBAIC02MTMsNiArNjEzLDEwIEBAIGRlZmluZSgncGdhZG1pbi5kYXNo Ym9hcmQnLCBbCiAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LScgKyBj bHMgKyAnIHBnLXBhbmVsLW1lc3NhZ2UiIHJvbGU9ImFsZXJ0Ij4nICsgbXNnICsgJzwvZGl2PicK ICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICAg IC5hbHdheXMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsYXN0X3BvbGxfd2FpdF9jb3VudGVy ID0gMDsKKyAgICAgICAgICAgIHJlc3Bfbm90X3JlY2VpdmVkX2NvdW50ZXItLTsKICAgICAgICAg ICB9KTsKICAgICAgICAgbGFzdF9wb2xsX3dhaXRfY291bnRlciA9IFdBSVRfQ09VTlRFUjsKICAg ICAgIH07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL21vZGVsL19faW5pdF9fLnB5CmluZGV4IDYyOWU5OGYzNy4uYjIyODY4ZmJiIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9t b2RlbC9fX2luaXRfXy5weQpAQCAtMjksNyArMjksNyBAQCBmcm9tIGZsYXNrX3NxbGFsY2hlbXkg aW1wb3J0IFNRTEFsY2hlbXkKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLVNDSEVNQV9WRVJTSU9O ID0gMjMKK1NDSEVNQV9WRVJTSU9OID0gMjQKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcwppbmRleCBm NzE0YzJiNTAuLjYzYWQ3NzIxYiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Nx bGVkaXRvci9leGVjdXRlX3F1ZXJ5LmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxl ZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcwpAQCAtMTIsNiArMTIsNyBAQCBpbXBvcnQgJCBmcm9tICdq cXVlcnknOwogaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vdXJsX2Zvcic7CiBpbXBvcnQgYXhpb3Mg ZnJvbSAnYXhpb3MnOwogaW1wb3J0ICogYXMgaHR0cEVycm9ySGFuZGxlciBmcm9tICcuL3F1ZXJ5 X3Rvb2xfaHR0cF9lcnJvcl9oYW5kbGVyJzsKK2ltcG9ydCAqIGFzIHF1ZXJ5VHhuU3RhdHVzIGZy b20gJ3NvdXJjZXMvc3FsZWRpdG9yL3F1ZXJ5X3R4bl9zdGF0dXNfY29uc3RhbnRzJzsKIAogY2xh c3MgTG9hZGluZ1NjcmVlbiB7CiAgIGNvbnN0cnVjdG9yKHNxbEVkaXRvcikgewpAQCAtODMsNyAr ODQsOCBAQCBjbGFzcyBFeGVjdXRlUXVlcnkgewogICAgICAgICAgIHNlbGYubG9hZGluZ1NjcmVl bi5oaWRlKCk7CiAgICAgICAgICAgc2VsZi5lbmFibGVTUUxFZGl0b3JCdXR0b25zKCk7CiAgICAg ICAgICAgLy8gRW5hYmxlL0Rpc2FibGUgY29tbWl0IGFuZCByb2xsYmFjayBidXR0b24uCi0gICAg ICAgICAgaWYgKHJlc3VsdC5kYXRhLmRhdGEudHJhbnNhY3Rpb25fc3RhdHVzID09IDIgfHwgcmVz dWx0LmRhdGEuZGF0YS50cmFuc2FjdGlvbl9zdGF0dXMgPT0gMykgeworICAgICAgICAgIGlmIChy ZXN1bHQuZGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVyeVR4blN0YXR1cy5UUkFO U0FDVElPTl9TVEFUVVNfSU5UUkFOUworICAgICAgICAgICAgfHwgcmVzdWx0LmRhdGEuZGF0YS50 cmFuc2FjdGlvbl9zdGF0dXMgPT0gcXVlcnlUeG5TdGF0dXMuVFJBTlNBQ1RJT05fU1RBVFVTX0lO RVJST1IpIHsKICAgICAgICAgICAgIHNlbGYuZW5hYmxlVHJhbnNhY3Rpb25CdXR0b25zKCk7CiAg ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNlbGYuZGlzYWJsZVRyYW5zYWN0aW9uQnV0 dG9ucygpOwpAQCAtMTIzLDcgKzEyNSw4IEBAIGNsYXNzIEV4ZWN1dGVRdWVyeSB7CiAgICAgICAg IHNlbGYudXBkYXRlU3FsRWRpdG9yTGFzdFRyYW5zYWN0aW9uU3RhdHVzKGh0dHBNZXNzYWdlLmRh dGEuZGF0YS50cmFuc2FjdGlvbl9zdGF0dXMpOwogCiAgICAgICAgIC8vIEVuYWJsZS9EaXNhYmxl IGNvbW1pdCBhbmQgcm9sbGJhY2sgYnV0dG9uLgotICAgICAgICBpZiAoaHR0cE1lc3NhZ2UuZGF0 YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSAyIHx8IGh0dHBNZXNzYWdlLmRhdGEuZGF0YS50 cmFuc2FjdGlvbl9zdGF0dXMgPT0gMykgeworICAgICAgICBpZiAoaHR0cE1lc3NhZ2UuZGF0YS5k YXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVyeVR4blN0YXR1cy5UUkFOU0FDVElPTl9TVEFU VVNfSU5UUkFOUworICAgICAgICAgIHx8IGh0dHBNZXNzYWdlLmRhdGEuZGF0YS50cmFuc2FjdGlv bl9zdGF0dXMgPT0gcXVlcnlUeG5TdGF0dXMuVFJBTlNBQ1RJT05fU1RBVFVTX0lORVJST1IpIHsK ICAgICAgICAgICBzZWxmLmVuYWJsZVRyYW5zYWN0aW9uQnV0dG9ucygpOwogICAgICAgICB9IGVs c2UgewogICAgICAgICAgIHNlbGYuZGlzYWJsZVRyYW5zYWN0aW9uQnV0dG9ucygpOwpAQCAtMTMx LDcgKzEzNCw3IEBAIGNsYXNzIEV4ZWN1dGVRdWVyeSB7CiAKICAgICAgICAgaWYgKEV4ZWN1dGVR dWVyeS5pc1F1ZXJ5RmluaXNoZWQoaHR0cE1lc3NhZ2UpKSB7CiAgICAgICAgICAgaWYgKHRoaXMu c3FsU2VydmVyT2JqZWN0LmNsb3NlX29uX2lkbGVfdHJhbnNhY3Rpb24gJiYKLSAgICAgICAgICAg ICAgaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSAwKQorICAgICAg ICAgICAgICBodHRwTWVzc2FnZS5kYXRhLmRhdGEudHJhbnNhY3Rpb25fc3RhdHVzID09IHF1ZXJ5 VHhuU3RhdHVzLlRSQU5TQUNUSU9OX1NUQVRVU19JRExFKQogICAgICAgICAgICAgdGhpcy5zcWxT ZXJ2ZXJPYmplY3QuY2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3NpbmdfcGFu ZWwoKTsKIAogICAgICAgICAgIHNlbGYubG9hZGluZ1NjcmVlbi5zZXRNZXNzYWdlKCdMb2FkaW5n IGRhdGEgZnJvbSB0aGUgZGF0YWJhc2Ugc2VydmVyIGFuZCByZW5kZXJpbmcuLi4nKTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdHhuX3N0YXR1c19j b25zdGFudHMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3R4bl9z dGF0dXNfY29uc3RhbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4u MDc1MjY0Mjk2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVk aXRvci9xdWVyeV90eG5fc3RhdHVzX2NvbnN0YW50cy5qcwpAQCAtMCwwICsxLDExIEBACisvKiBw c3ljb3BnMiB0cmFuc2FjdGlvbiBzdGF0dXMgY29uc3RhbnRzCisgKiBodHRwOi8vaW5pdGQub3Jn L3BzeWNvcGcvZG9jcy9leHRlbnNpb25zLmh0bWwjdHJhbnNhY3Rpb24tc3RhdHVzLWNvbnN0YW50 cworICovCisKK21vZHVsZS5leHBvcnRzID0geworICBUUkFOU0FDVElPTl9TVEFUVVNfSURMRTog MCwKKyAgVFJBTlNBQ1RJT05fU1RBVFVTX0FDVElWRTogMSwKKyAgVFJBTlNBQ1RJT05fU1RBVFVT X0lOVFJBTlM6IDIsCisgIFRSQU5TQUNUSU9OX1NUQVRVU19JTkVSUk9SOiAzLAorICBUUkFOU0FD VElPTl9TVEFUVVNfVU5LTk9XTjogNSwKK307CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvdHJlZS90cmVlLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZS5qcwpp bmRleCAzMzM5N2U4MGQuLmUzMTdhZWI4MSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3RyZWUvdHJlZS5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlLmpz CkBAIC05LDYgKzksNyBAQAogCiBpbXBvcnQge2lzVmFsaWREYXRhfSBmcm9tICdzb3VyY2VzL3V0 aWxzJzsKIGltcG9ydCAkIGZyb20gJ2pxdWVyeSc7CitpbXBvcnQgQWxlcnRpZnkgZnJvbSAncGdh ZG1pbi5hbGVydGlmeWpzJzsKIAogZXhwb3J0IGNsYXNzIFRyZWVOb2RlIHsKICAgY29uc3RydWN0 b3IoaWQsIGRhdGEsIGRvbU5vZGUsIHBhcmVudCkgewpAQCAtMjYxLDYgKzI2Miw5IEBAIGV4cG9y dCBjbGFzcyBUcmVlIHsKIAogICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy50cmFuc2xh dGVUcmVlTm9kZUlkRnJvbUFDSVRyZWUoYXBpLnBhcmVudChpdGVtKSk7CiAgICAgICAgICAgdGhp cy5hZGROZXdOb2RlKGlkLCBkYXRhLCBpdGVtLCBwYXJlbnRJZCk7CisgICAgICAgICAgaWYoZGF0 YS5lcnJtc2cpIHsKKyAgICAgICAgICAgIEFsZXJ0aWZ5LmVycm9yKGRhdGEuZXJybXNnKTsKKyAg ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KICAgICB9LmJpbmQodGhpcykpOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMg Yi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcwppbmRl eCA5ZDlhYjVjODQuLjhmNTg5N2YzZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKQEAgLTM2LDYgKzM2LDcgQEAgZGVmaW5lKCd0 b29scy5xdWVyeXRvb2wnLCBbCiAgICdzb3VyY2VzL3NxbGVkaXRvci9jYWxjdWxhdGVfcXVlcnlf cnVuX3RpbWUnLAogICAnc291cmNlcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbCcs CiAgICdzb3VyY2VzL3NxbGVkaXRvci9xdWVyeV90b29sX3ByZWZlcmVuY2VzJywKKyAgJ3NvdXJj ZXMvc3FsZWRpdG9yL3F1ZXJ5X3R4bl9zdGF0dXNfY29uc3RhbnRzJywKICAgJ3NvdXJjZXMvY3Ny ZicsCiAgICd0b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUnLAog ICAnc291cmNlcy93aW5kb3cnLApAQCAtNTIsNyArNTMsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKICAgWENlbGxTZWxlY3Rpb25Nb2RlbCwgc2V0U3RhZ2VkUm93cywgU3FsRWRpdG9y VXRpbHMsIEV4ZWN1dGVRdWVyeSwgaHR0cEVycm9ySGFuZGxlciwgRmlsdGVySGFuZGxlciwKICAg R2VvbWV0cnlWaWV3ZXIsIGhpc3RvcnlDb2xsLCBxdWVyeUhpc3QsIHF1ZXJ5U291cmNlcywKICAg a2V5Ym9hcmRTaG9ydGN1dHMsIHF1ZXJ5VG9vbEFjdGlvbnMsIHF1ZXJ5VG9vbE5vdGlmaWNhdGlv bnMsIERhdGFncmlkLAotICBtb2RpZnlBbmltYXRpb24sIGNhbGN1bGF0ZVF1ZXJ5UnVuVGltZSwg Y2FsbFJlbmRlckFmdGVyUG9sbCwgcXVlcnlUb29sUHJlZiwgY3NyZlRva2VuLCBwYW5lbFRpdGxl RnVuYywKKyAgbW9kaWZ5QW5pbWF0aW9uLCBjYWxjdWxhdGVRdWVyeVJ1blRpbWUsIGNhbGxSZW5k ZXJBZnRlclBvbGwsIHF1ZXJ5VG9vbFByZWYsIHF1ZXJ5VHhuU3RhdHVzLCBjc3JmVG9rZW4sIHBh bmVsVGl0bGVGdW5jLAogICBwZ1dpbmRvdykgewogICAvKiBSZXR1cm4gYmFjaywgdGhpcyBoYXMg YmVlbiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgKi8KICAgaWYgKHBnQWRtaW4uU3FsRWRpdG9yKQpA QCAtNDE4Miw4ICs0MTgzLDkgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg ICAgc2VsZi51bnNhdmVkX2NoYW5nZXNfdXNlcl9jb25maXJtYXRpb24obXNnLCBmYWxzZSk7CiAg ICAgICAgIH0gLy8gSWYgYSB0cmFuc2FjdGlvbiBpcyBjdXJyZW50bHkgb25nb2luZwogICAgICAg ICBlbHNlIGlmIChzZWxmLnByZWZlcmVuY2VzLnByb21wdF9jb21taXRfdHJhbnNhY3Rpb24KLSAg ICAgICAgICAgICAgICAgJiYgc2VsZi5sYXN0X3RyYW5zYWN0aW9uX3N0YXR1cyA+IDApIHsgLy8g MCAtPiBpZGxlIChubyB0cmFuc2FjdGlvbikKLSAgICAgICAgICB2YXIgaXNfY29tbWl0X2Rpc2Fi bGVkID0gc2VsZi5sYXN0X3RyYW5zYWN0aW9uX3N0YXR1cyA9PSAzOyAgLy8gMyAtPiBGYWlsZWQg dHJhbnNhY3Rpb24KKyAgICAgICAgICAgICAgICAgJiYgKHNlbGYubGFzdF90cmFuc2FjdGlvbl9z dGF0dXMgPT09IHF1ZXJ5VHhuU3RhdHVzLlRSQU5TQUNUSU9OX1NUQVRVU19JTlRSQU5TCisgICAg ICAgICAgICAgICAgICAgIHx8IHNlbGYubGFzdF90cmFuc2FjdGlvbl9zdGF0dXMgPT09IHF1ZXJ5 VHhuU3RhdHVzLlRSQU5TQUNUSU9OX1NUQVRVU19JTkVSUk9SKSkgeworICAgICAgICAgIHZhciBp c19jb21taXRfZGlzYWJsZWQgPSBzZWxmLmxhc3RfdHJhbnNhY3Rpb25fc3RhdHVzID09IHF1ZXJ5 VHhuU3RhdHVzLlRSQU5TQUNUSU9OX1NUQVRVU19JTkVSUk9SOwogICAgICAgICAgIHNlbGYudW5j b21taXR0ZWRfdHJhbnNhY3Rpb25fdXNlcl9jb25maXJtYXRpb24oaXNfY29tbWl0X2Rpc2FibGVk KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0 aWxzL2RyaXZlci9wc3ljb3BnMi9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZl ci9wc3ljb3BnMi9fX2luaXRfXy5weQppbmRleCA0YjNlMjIwNGIuLjk0ZGMyOTc2YyAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL19faW5pdF9fLnB5CisrKyBi L3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9fX2luaXRfXy5weQpAQCAtMTQsMTkg KzE0LDIxIEBAIG9iamVjdC4KIAogIiIiCiBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gZmxhc2sgaW1w b3J0IHNlc3Npb24sIHJlcXVlc3QKK2Zyb20gZmxhc2sgaW1wb3J0IHNlc3Npb24KIGZyb20gZmxh c2tfbG9naW4gaW1wb3J0IGN1cnJlbnRfdXNlcgotZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBn ZXR0ZXh0CiBpbXBvcnQgcHN5Y29wZzIKIGZyb20gcHN5Y29wZzIuZXh0ZW5zaW9ucyBpbXBvcnQg YWRhcHQKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBMb2NrCiAKIGltcG9ydCBjb25maWcKLWZyb20g cGdhZG1pbi5tb2RlbCBpbXBvcnQgU2VydmVyLCBVc2VyCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1w b3J0IFNlcnZlcgogZnJvbSAua2V5d29yZHMgaW1wb3J0IFNjYW5LZXl3b3JkCiBmcm9tIC4uYWJz dHJhY3QgaW1wb3J0IEJhc2VEcml2ZXIKIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENvbm5lY3Rp b24KIGZyb20gLnNlcnZlcl9tYW5hZ2VyIGltcG9ydCBTZXJ2ZXJNYW5hZ2VyCiAKK2Nvbm5lY3Rp b25fcmVzdG9yZV9sb2NrID0gTG9jaygpCisKIAogY2xhc3MgRHJpdmVyKEJhc2VEcml2ZXIpOgog ICAgICIiIgpAQCAtODAsMjEgKzgyLDMwIEBAIGNsYXNzIERyaXZlcihCYXNlRHJpdmVyKToKICAg ICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgaWYgc2Vzc2lvbi5zaWQgbm90IGluIHNl bGYubWFuYWdlcnM6Ci0gICAgICAgICAgICBzZWxmLm1hbmFnZXJzW3Nlc3Npb24uc2lkXSA9IG1h bmFnZXJzID0gZGljdCgpCi0gICAgICAgICAgICBpZiAnX19wZ3NxbF9zZXJ2ZXJfbWFuYWdlcnMn IGluIHNlc3Npb246Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbl9tYW5hZ2VycyA9IHNlc3Npb25b J19fcGdzcWxfc2VydmVyX21hbmFnZXJzJ10uY29weSgpCi0KLSAgICAgICAgICAgICAgICBmb3Ig c2VydmVyIGluIFNlcnZlci5xdWVyeS5maWx0ZXJfYnkodXNlcl9pZD1jdXJyZW50X3VzZXIuaWQp OgotICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyID0gbWFuYWdlcnNbc3RyKHNlcnZlci5pZCld ID0gU2VydmVyTWFuYWdlcihzZXJ2ZXIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlci5p ZCBpbiBzZXNzaW9uX21hbmFnZXJzOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5f cmVzdG9yZShzZXNzaW9uX21hbmFnZXJzW3NlcnZlci5pZF0pCi0gICAgICAgICAgICAgICAgICAg ICAgICBtYW5hZ2VyLnVwZGF0ZV9zZXNzaW9uKCkKKyAgICAgICAgICAgIHdpdGggY29ubmVjdGlv bl9yZXN0b3JlX2xvY2s6CisgICAgICAgICAgICAgICAgIyBUaGUgd2FpdCBpcyBvdmVyIGJ1dCB0 aGUgb2JqZWN0IG1pZ2h0IGhhdmUgYmVlbiBsb2FkZWQKKyAgICAgICAgICAgICAgICAjIGJ5IHNv bWUgb3RoZXIgdGhyZWFkIGNoZWNrIGFnYWluCisgICAgICAgICAgICAgICAgaWYgc2Vzc2lvbi5z aWQgbm90IGluIHNlbGYubWFuYWdlcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubWFuYWdl cnNbc2Vzc2lvbi5zaWRdID0gbWFuYWdlcnMgPSBkaWN0KCkKKyAgICAgICAgICAgICAgICAgICAg aWYgJ19fcGdzcWxfc2VydmVyX21hbmFnZXJzJyBpbiBzZXNzaW9uOgorICAgICAgICAgICAgICAg ICAgICAgICAgc2Vzc2lvbl9tYW5hZ2VycyA9XAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlc3Npb25bJ19fcGdzcWxfc2VydmVyX21hbmFnZXJzJ10uY29weSgpCisgICAgICAgICAgICAg ICAgICAgICAgICBmb3Igc2VydmVyIGluIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkKToKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYW5hZ2VyID0gbWFuYWdlcnNbc3RyKHNlcnZlci5pZCldID1cCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNlcnZlck1hbmFnZXIoc2VydmVyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIHNlcnZlci5pZCBpbiBzZXNzaW9uX21hbmFnZXJzOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLl9yZXN0b3JlKHNlc3Npb25fbWFuYWdlcnNb c2VydmVyLmlkXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlci51cGRh dGVfc2Vzc2lvbigpCisKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1hbmFnZXJzID0gc2Vs Zi5tYW5hZ2Vyc1tzZXNzaW9uLnNpZF0KICAgICAgICAgICAgIGlmIHN0cihzaWQpIGluIG1hbmFn ZXJzOgogICAgICAgICAgICAgICAgIG1hbmFnZXIgPSBtYW5hZ2Vyc1tzdHIoc2lkKV0KLSAgICAg ICAgICAgICAgICBtYW5hZ2VyLl9yZXN0b3JlX2Nvbm5lY3Rpb25zKCkKLSAgICAgICAgICAgICAg ICBtYW5hZ2VyLnVwZGF0ZV9zZXNzaW9uKCkKKyAgICAgICAgICAgICAgICB3aXRoIGNvbm5lY3Rp b25fcmVzdG9yZV9sb2NrOgorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLl9yZXN0b3JlX2Nv bm5lY3Rpb25zKCkKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlci51cGRhdGVfc2Vzc2lvbigp CiAKICAgICAgICAgbWFuYWdlcnNbJ3BpbmdlZCddID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkK ICAgICAgICAgaWYgc3RyKHNpZCkgbm90IGluIG1hbmFnZXJzOgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL3NlcnZlcl9tYW5hZ2VyLnB5IGIvd2ViL3BnYWRt aW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL3NlcnZlcl9tYW5hZ2VyLnB5CmluZGV4IDhhZTQ2YzJl ZS4uMTY3NmY3ZTM4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29w ZzIvc2VydmVyX21hbmFnZXIucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNv cGcyL3NlcnZlcl9tYW5hZ2VyLnB5CkBAIC0yNSwxMyArMjUsMTAgQEAgZnJvbSBwZ2FkbWluLm1v ZGVsIGltcG9ydCBTZXJ2ZXIsIFVzZXIKIGZyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1w b3J0IENvbm5lY3Rpb25Mb3N0LCBTU0hUdW5uZWxDb25uZWN0aW9uTG9zdCxcCiAgICAgQ3J5cHRL ZXlNaXNzaW5nCiBmcm9tIHBnYWRtaW4udXRpbHMubWFzdGVyX3Bhc3N3b3JkIGltcG9ydCBnZXRf Y3J5cHRfa2V5Ci1mcm9tIHRocmVhZGluZyBpbXBvcnQgTG9jawogCiBpZiBjb25maWcuU1VQUE9S VF9TU0hfVFVOTkVMOgogICAgIGZyb20gc3NodHVubmVsIGltcG9ydCBTU0hUdW5uZWxGb3J3YXJk ZXIsIEJhc2VTU0hUdW5uZWxGb3J3YXJkZXJFcnJvcgogCi1jb25uZWN0aW9uX3Jlc3RvcmVfbG9j ayA9IExvY2soKQotCiAKIGNsYXNzIFNlcnZlck1hbmFnZXIob2JqZWN0KToKICAgICAiIiIKQEAg LTI5Miw4MCArMjg5LDc5IEBAIFdIRVJFIGRiLm9pZCA9IHswfSIiIi5mb3JtYXQoZGlkKSkKIAog ICAgICAgICBjb25uZWN0aW9ucyA9IGRhdGFbJ2Nvbm5lY3Rpb25zJ10KIAotICAgICAgICB3aXRo IGNvbm5lY3Rpb25fcmVzdG9yZV9sb2NrOgotICAgICAgICAgICAgZm9yIGNvbm5faWQgaW4gY29u bmVjdGlvbnM6Ci0gICAgICAgICAgICAgICAgY29ubl9pbmZvID0gY29ubmVjdGlvbnNbY29ubl9p ZF0KLSAgICAgICAgICAgICAgICBpZiBjb25uX2luZm9bJ2Nvbm5faWQnXSBpbiBzZWxmLmNvbm5l Y3Rpb25zOgotICAgICAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uc1tjb25u X2luZm9bJ2Nvbm5faWQnXV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg ICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uc1tjb25uX2luZm9bJ2Nvbm5faWQnXV0gPSBDb25u ZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgY29ubl9pbmZvWydjb25uX2lk J10sIGNvbm5faW5mb1snZGF0YWJhc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5f aW5mb1snYXV0b19yZWNvbm5lY3QnXSwgY29ubl9pbmZvWydhc3luY18nXSwKLSAgICAgICAgICAg ICAgICAgICAgICAgIHVzZV9iaW5hcnlfcGxhY2Vob2xkZXI9Y29ubl9pbmZvWwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICd1c2VfYmluYXJ5X3BsYWNlaG9sZGVyJ10sCi0gICAgICAgICAg ICAgICAgICAgICAgICBhcnJheV90b19zdHJpbmc9Y29ubl9pbmZvWydhcnJheV90b19zdHJpbmcn XQotICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBjb25uX2lkIGluIGNvbm5lY3Rp b25zOgorICAgICAgICAgICAgY29ubl9pbmZvID0gY29ubmVjdGlvbnNbY29ubl9pZF0KKyAgICAg ICAgICAgIGlmIGNvbm5faW5mb1snY29ubl9pZCddIGluIHNlbGYuY29ubmVjdGlvbnM6CisgICAg ICAgICAgICAgICAgY29ubiA9IHNlbGYuY29ubmVjdGlvbnNbY29ubl9pbmZvWydjb25uX2lkJ11d CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLmNvbm5lY3Rp b25zW2Nvbm5faW5mb1snY29ubl9pZCddXSA9IENvbm5lY3Rpb24oCisgICAgICAgICAgICAgICAg ICAgIHNlbGYsIGNvbm5faW5mb1snY29ubl9pZCddLCBjb25uX2luZm9bJ2RhdGFiYXNlJ10sCisg ICAgICAgICAgICAgICAgICAgIGNvbm5faW5mb1snYXV0b19yZWNvbm5lY3QnXSwgY29ubl9pbmZv Wydhc3luY18nXSwKKyAgICAgICAgICAgICAgICAgICAgdXNlX2JpbmFyeV9wbGFjZWhvbGRlcj1j b25uX2luZm9bCisgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2JpbmFyeV9wbGFjZWhvbGRl ciddLAorICAgICAgICAgICAgICAgICAgICBhcnJheV90b19zdHJpbmc9Y29ubl9pbmZvWydhcnJh eV90b19zdHJpbmcnXQorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgICAgICMgb25s eSB0cnkgdG8gcmVjb25uZWN0IGlmIGNvbm5lY3Rpb24gd2FzIGNvbm5lY3RlZCBwcmV2aW91c2x5 Ci0gICAgICAgICAgICAgICAgIyBhbmQgYXV0b19yZWNvbm5lY3QgaXMgdHJ1ZS4KLSAgICAgICAg ICAgICAgICBpZiBjb25uX2luZm9bJ3dhc0Nvbm5lY3RlZCddIGFuZCBjb25uX2luZm9bJ2F1dG9f cmVjb25uZWN0J106Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg ICAgICAgICMgQ2hlY2sgU1NIIFR1bm5lbCBuZWVkcyB0byBiZSBjcmVhdGVkCi0gICAgICAgICAg ICAgICAgICAgICAgICBpZiBzZWxmLnVzZV9zc2hfdHVubmVsID09IDEgYW5kIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLnR1bm5lbF9jcmVhdGVkOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cywgZXJyb3IgPSBzZWxmLmNyZWF0ZV9zc2hfdHVubmVsKAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyd0dW5uZWxfcGFzc3dvcmQnXSkK LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgU1NIIFR1bm5lbCBpcyBhbGl2 ZSBvciBub3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zc2hfdHVu bmVsX2FsaXZlKCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5jb25uZWN0KAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPWRhdGFbJ3Bhc3N3b3JkJ10sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3R5cGVzPVNlcnZlclR5cGUudHlwZXMoKQot ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlz IHdpbGwgYWxzbyB1cGRhdGUgd2FzQ29ubmVjdGVkIGZsYWcgaW4KLSAgICAgICAgICAgICAgICAg ICAgICAgICMgY29ubmVjdGlvbiBzbyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgZmxhZyBtYW51YWxs eS4KLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IENyeXB0S2V5TWlzc2luZzoKLSAgICAgICAg ICAgICAgICAgICAgICAgICMgbWFpbnRhaW4gdGhlIHN0YXR1cyBhcyB0aGlzIHdpbGwgaGVscCB0 byByZXN0b3JlIG9uY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGtleSBpcyBhdmFp bGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4ud2FzQ29ubmVjdGVkID0gY29ubl9p bmZvWyd3YXNDb25uZWN0ZWQnXQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5hdXRvX3Jl Y29ubmVjdCA9IGNvbm5faW5mb1snYXV0b19yZWNvbm5lY3QnXQotICAgICAgICAgICAgICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50 X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNv bm5lY3Rpb25zLnBvcChjb25uX2luZm9bJ2Nvbm5faWQnXSkKLSAgICAgICAgICAgICAgICAgICAg ICAgIHJhaXNlCisgICAgICAgICAgICAjIG9ubHkgdHJ5IHRvIHJlY29ubmVjdCBpZiBjb25uZWN0 aW9uIHdhcyBjb25uZWN0ZWQgcHJldmlvdXNseQorICAgICAgICAgICAgIyBhbmQgYXV0b19yZWNv bm5lY3QgaXMgdHJ1ZS4KKyAgICAgICAgICAgIGlmIGNvbm5faW5mb1snd2FzQ29ubmVjdGVkJ10g YW5kIGNvbm5faW5mb1snYXV0b19yZWNvbm5lY3QnXToKKyAgICAgICAgICAgICAgICB0cnk6Cisg ICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgU1NIIFR1bm5lbCBuZWVkcyB0byBiZSBjcmVhdGVk CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudXNlX3NzaF90dW5uZWwgPT0gMSBhbmQgXAor ICAgICAgICAgICAgICAgICAgICAgICBub3Qgc2VsZi50dW5uZWxfY3JlYXRlZDoKKyAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cywgZXJyb3IgPSBzZWxmLmNyZWF0ZV9zc2hfdHVubmVsKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3R1bm5lbF9wYXNzd29yZCddKQorCisg ICAgICAgICAgICAgICAgICAgICAgICAjIENoZWNrIFNTSCBUdW5uZWwgaXMgYWxpdmUgb3Igbm90 LgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zc2hfdHVubmVsX2FsaXZlKCkK KworICAgICAgICAgICAgICAgICAgICBjb25uLmNvbm5lY3QoCisgICAgICAgICAgICAgICAgICAg ICAgICBwYXNzd29yZD1kYXRhWydwYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAg c2VydmVyX3R5cGVzPVNlcnZlclR5cGUudHlwZXMoKQorICAgICAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGFsc28gdXBkYXRlIHdhc0Nvbm5lY3RlZCBm bGFnIGluCisgICAgICAgICAgICAgICAgICAgICMgY29ubmVjdGlvbiBzbyBubyBuZWVkIHRvIHVw ZGF0ZSB0aGUgZmxhZyBtYW51YWxseS4KKyAgICAgICAgICAgICAgICBleGNlcHQgQ3J5cHRLZXlN aXNzaW5nOgorICAgICAgICAgICAgICAgICAgICAjIG1haW50YWluIHRoZSBzdGF0dXMgYXMgdGhp cyB3aWxsIGhlbHAgdG8gcmVzdG9yZSBvbmNlCisgICAgICAgICAgICAgICAgICAgICMgdGhlIGtl eSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgY29ubi53YXNDb25uZWN0ZWQgPSBj b25uX2luZm9bJ3dhc0Nvbm5lY3RlZCddCisgICAgICAgICAgICAgICAgICAgIGNvbm4uYXV0b19y ZWNvbm5lY3QgPSBjb25uX2luZm9bJ2F1dG9fcmVjb25uZWN0J10KKyAgICAgICAgICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxv Z2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9ucy5w b3AoY29ubl9pbmZvWydjb25uX2lkJ10pCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKICAg ICBkZWYgX3Jlc3RvcmVfY29ubmVjdGlvbnMoc2VsZik6Ci0gICAgICAgIHdpdGggY29ubmVjdGlv bl9yZXN0b3JlX2xvY2s6Ci0gICAgICAgICAgICBmb3IgY29ubl9pZCBpbiBzZWxmLmNvbm5lY3Rp b25zOgotICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLmNvbm5lY3Rpb25zW2Nvbm5faWRdCi0g ICAgICAgICAgICAgICAgIyBvbmx5IHRyeSB0byByZWNvbm5lY3QgaWYgY29ubmVjdGlvbiB3YXMg Y29ubmVjdGVkIHByZXZpb3VzbHkKLSAgICAgICAgICAgICAgICAjIGFuZCBhdXRvX3JlY29ubmVj dCBpcyB0cnVlLgotICAgICAgICAgICAgICAgIHdhc0Nvbm5lY3RlZCA9IGNvbm4ud2FzQ29ubmVj dGVkCi0gICAgICAgICAgICAgICAgYXV0b19yZWNvbm5lY3QgPSBjb25uLmF1dG9fcmVjb25uZWN0 Ci0gICAgICAgICAgICAgICAgaWYgY29ubi53YXNDb25uZWN0ZWQgYW5kIGNvbm4uYXV0b19yZWNv bm5lY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAg ICMgQ2hlY2sgU1NIIFR1bm5lbCBuZWVkcyB0byBiZSBjcmVhdGVkCi0gICAgICAgICAgICAgICAg ICAgICAgICBpZiBzZWxmLnVzZV9zc2hfdHVubmVsID09IDEgYW5kIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5vdCBzZWxmLnR1bm5lbF9jcmVhdGVkOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cywgZXJyb3IgPSBzZWxmLmNyZWF0ZV9zc2hfdHVubmVsKAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR1bm5lbF9wYXNzd29yZAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hl Y2sgU1NIIFR1bm5lbCBpcyBhbGl2ZSBvciBub3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5jaGVja19zc2hfdHVubmVsX2FsaXZlKCkKKyAgICAgICAgZm9yIGNvbm5faWQgaW4g c2VsZi5jb25uZWN0aW9uczoKKyAgICAgICAgICAgIGNvbm4gPSBzZWxmLmNvbm5lY3Rpb25zW2Nv bm5faWRdCisgICAgICAgICAgICAjIG9ubHkgdHJ5IHRvIHJlY29ubmVjdCBpZiBjb25uZWN0aW9u IHdhcyBjb25uZWN0ZWQgcHJldmlvdXNseQorICAgICAgICAgICAgIyBhbmQgYXV0b19yZWNvbm5l Y3QgaXMgdHJ1ZS4KKyAgICAgICAgICAgIHdhc0Nvbm5lY3RlZCA9IGNvbm4ud2FzQ29ubmVjdGVk CisgICAgICAgICAgICBhdXRvX3JlY29ubmVjdCA9IGNvbm4uYXV0b19yZWNvbm5lY3QKKyAgICAg ICAgICAgIGlmIGNvbm4ud2FzQ29ubmVjdGVkIGFuZCBjb25uLmF1dG9fcmVjb25uZWN0OgorICAg ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBTU0ggVHVubmVs IG5lZWRzIHRvIGJlIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi51c2Vfc3No X3R1bm5lbCA9PSAxIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLnR1bm5l bF9jcmVhdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBlcnJvciA9IHNlbGYu Y3JlYXRlX3NzaF90dW5uZWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50dW5u ZWxfcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgICAg ICAgICAgICAgY29ubi5jb25uZWN0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3 aWxsIGFsc28gdXBkYXRlIHdhc0Nvbm5lY3RlZCBmbGFnIGluCi0gICAgICAgICAgICAgICAgICAg ICAgICAjIGNvbm5lY3Rpb24gc28gbm8gbmVlZCB0byB1cGRhdGUgdGhlIGZsYWcgbWFudWFsbHku Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBDcnlwdEtleU1pc3Npbmc6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAjIG1haW50YWluIHRoZSBzdGF0dXMgYXMgdGhpcyB3aWxsIGhlbHAgdG8g cmVzdG9yZSBvbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBrZXkgaXMgYXZhaWxh YmxlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25uLndhc0Nvbm5lY3RlZCA9IHdhc0Nvbm5l Y3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5hdXRvX3JlY29ubmVjdCA9IGF1dG9f cmVjb25uZWN0Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAg ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKLSAg ICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAjIENo ZWNrIFNTSCBUdW5uZWwgaXMgYWxpdmUgb3Igbm90LgorICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5jaGVja19zc2hfdHVubmVsX2FsaXZlKCkKKworICAgICAgICAgICAgICAgICAgICBjb25u LmNvbm5lY3QoKQorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBhbHNvIHVwZGF0ZSB3 YXNDb25uZWN0ZWQgZmxhZyBpbgorICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gc28g bm8gbmVlZCB0byB1cGRhdGUgdGhlIGZsYWcgbWFudWFsbHkuCisgICAgICAgICAgICAgICAgZXhj ZXB0IENyeXB0S2V5TWlzc2luZzoKKyAgICAgICAgICAgICAgICAgICAgIyBtYWludGFpbiB0aGUg c3RhdHVzIGFzIHRoaXMgd2lsbCBoZWxwIHRvIHJlc3RvcmUgb25jZQorICAgICAgICAgICAgICAg ICAgICAjIHRoZSBrZXkgaXMgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgIGNvbm4ud2Fz Q29ubmVjdGVkID0gd2FzQ29ubmVjdGVkCisgICAgICAgICAgICAgICAgICAgIGNvbm4uYXV0b19y ZWNvbm5lY3QgPSBhdXRvX3JlY29ubmVjdAorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9ucy5wb3AoY29ubl9p ZCkKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQor ICAgICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIHJlbGVhc2Uoc2VsZiwgZGF0YWJh c2U9Tm9uZSwgY29ubl9pZD1Ob25lLCBkaWQ9Tm9uZSk6CiAgICAgICAgICMgU3RvcCB0aGUgU1NI IHR1bm5lbCBpZiByZWxlYXNlKCkgZnVuY3Rpb24gY2FsbHMgd2l0aG91dAo= --0000000000001f9b570597d54f1d--