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 1iUsvw-0005vS-Ht for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Nov 2019 13:43:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iUsvv-0003zW-9d for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Nov 2019 13:43:43 +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 1iUsvu-0003zP-N0 for pgadmin-hackers@lists.postgresql.org; Wed, 13 Nov 2019 13:43:43 +0000 Received: from mail-io1-xd34.google.com ([2607:f8b0:4864:20::d34]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iUsvq-00061B-UB for pgadmin-hackers@postgresql.org; Wed, 13 Nov 2019 13:43:42 +0000 Received: by mail-io1-xd34.google.com with SMTP id s3so2582172ioe.3 for ; Wed, 13 Nov 2019 05:43:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=MYGHQspTSE+82iUnaUjh3CAOkJzA8dFKXMe6joogb/U=; b=y+N6PjZme++aTpNB2UL0kHhU3ielSyv7c/P+tB2XZIOCJgcpDerdDlyC0BquxX01OF YSsEV/kkQle69BsOrNntRNHJnyKu0VN6v21AAVnHs28xZ8RUDmi9c4QgAvGi1dcZZW54 NPsemAxkAeDeM6q2RSbbJFdECIgmBCU0pGfLVF3z7YJJdhzIuVk2RUUWLIFl6HowOQgv jOodDKp8++jH7/2tcAxZZp7dSH+lFlDn1ouk44E0UDjarApH+QKTug/f6qlo72U+R4jv dgOtlpKr9+pYjDe5qVsJ4pBCtSmoV+qjFpnQfq5oFQtoUpAEteBElcBSfB8HEUfmaQ9K TqoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=MYGHQspTSE+82iUnaUjh3CAOkJzA8dFKXMe6joogb/U=; b=evgQIT+GXtKVPhDHJ83+dG1Kgfu4ga+M4WZAFA8QmTpjLGvplTo8xxd1nZxxB/T8nz ezTrvR2GM+Jc6bG8kK+A5wKWnT+XGajYAelAGnRV1IrgrIp2zGT1ctrgkf1TZ344TEaj 7x2y2yLUbOUohXwTp8aK0QczJ7H8N1AGnClk3nMjAaj9n3stoziODrGdmRUEXGr76gGu 6ALwWf0Ob/uxlfPdWiK9MGscwgMUlpw02rstOqCkBZNEDfH00WpRuiEwthS28ibkRfK7 mlcywbR4PXXOBaf6jaxbJJnYgsjLyxzUJAXobwsbwUHvgCun84eORsf4lmFIMN0Xs3LZ 0pFA== X-Gm-Message-State: APjAAAU47+Y1Ggzb4OZB1aZOTlyuIvF6IYDV20gTQtjN3bHWNt+MNUYb BcKjeIg+YV8sVkDwOyXt7bQhR2DBKI6yBSfOq3cdh9bI3HsqZ/R1NzAZv+amsGpZUzOue7Oy7dM TOCuyS9sFjWSigWztoc/yBidGVJ3/tEQxI0Uw30I1PV0XTrJMLxVsB0doRlGrJoaayHmuUfcP8i Iv8r8EDvb8QTqLzmL3nj5HMtBjnsdIjrRNZK+U0dzSJpvrE8ouH5uZexl+INk= X-Google-Smtp-Source: APXvYqyrQHvm2zkwy+qJq3MvS9CNKdwPtKroC7aSFspmF6j5kW5m86Gsl0KECgissmKJj36sIUHbB0hpPEWx0irT9AE= X-Received: by 2002:a6b:7d0b:: with SMTP id c11mr3433365ioq.236.1573652615372; Wed, 13 Nov 2019 05:43:35 -0800 (PST) MIME-Version: 1.0 From: Akshay Joshi Date: Wed, 13 Nov 2019 19:13:24 +0530 Message-ID: Subject: Refactored code for Table and its child nodes. To: pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000023ed5605973a8dbd" 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 --00000000000023ed5605973a8dbd Content-Type: multipart/alternative; boundary="00000000000023ed5205973a8dbb" --00000000000023ed5205973a8dbb Content-Type: text/plain; charset="UTF-8" Hi Hackers, For a couple of days, I was working on the code refactoring of Table and it's child nodes. *Problem*: In pgAdmin4 child nodes of the table can be created/modified from table dialog as well as from individual node. For example: Primary Key constraint can be created/updated from tables as well as from individual primary key node. After analyzing the code it seems that we have duplicate logic/functions in '*tables/utils.py*' and '*__init__.py*' of the respective node. So because of the above-described problem, if there is a bug at one place we need to fix it on both the places. *Purpose*: 1. Remove duplicate logic. 2. Child node specific logic should be inside the child node and table node gets the required information from the respective child node. *Solution*: 1. Create '*utils.py*' for each child node. 2. Move the common logic from '*tables/utils.py*' and '*__init__.py*' of the respective node to '*utils.py'.* 3. Both table and its respective child access the functions from the respective '*utils.py*'. *Note*: Refactoring of *columns* node still remaining I'll start working on it. Please review/test the patch thoroughly for tables and it's child nodes. -- *Thanks & Regards* *Akshay Joshi* *Sr. Software Architect* *EnterpriseDB Software India Private Limited* *Mobile: +91 976-788-8246* --00000000000023ed5205973a8dbb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

For a couple=C2=A0of days, = I was working on the code refactoring of Table and it's child nodes.

Problem:=C2=A0 In pgAdmin4 child nodes of the= table can be created/modified from table dialog as well as from individual= node. For=C2=A0example: Primary=C2=A0Key constraint can be created/updated= from tables as well as from individual primary key node.

After analyzing the code it seems that we have duplicate logic/func= tions in 'tables/utils.py' and '__init__.py' = of the respective node.=C2=A0

So because of the ab= ove-described problem, if there is a bug at one place we need to fix it on = both the places.=C2=A0=C2=A0

Purpose:=C2=A0=
  1. Remove duplicate logic.
  2. Child node specific logi= c should be inside the child node and table node gets the required informat= ion from the respective child node.
Solution:
  1. Create 'utils.py' for each child node.
  2. <= li>Move the common logic from 'tables/utils.py' and '= __init__.py' of the respective node to 'utils.py'.
  3. Both table and its respective child access the functions from the re= spective=C2=A0'utils.py'.

Note: Refactoring of columns node still remaining I'll s= tart working on it.

Please review/test=C2=A0the pa= tch thoroughly for tables and it's child nodes.

--
Thanks & Regards
Akshay Joshi<= /div>
Sr. Softwar= e Architect
EnterpriseD= B Software India Private Limited
Mobile: +91 976-788-82= 46
--00000000000023ed5205973a8dbb-- --00000000000023ed5605973a8dbd Content-Type: application/octet-stream; name="Table_Refactor.patch" Content-Disposition: attachment; filename="Table_Refactor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k2xbuu800 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5w eQppbmRleCBhZjBlMDJkOGMuLjBiMjcyNmVjYiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5p dF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weQpAQCAtMjIsNiArMjIsOCBAQCBmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUK IGZyb20gLnV0aWxzIGltcG9ydCBCYXNlVGFibGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMucHJl ZmVyZW5jZXMgaW1wb3J0IFByZWZlcmVuY2VzCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZl cl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIGNvbnN0cmFp bnRzLmZvcmVpZ25fa2V5LnV0aWxzIGFzIGZrZXlfdXRpbHMKIAogCiBjbGFzcyBUYWJsZU1vZHVs ZShTY2hlbWFDaGlsZE1vZHVsZSk6CkBAIC0xMDExLDE4ICsxMDEzLDEwIEBAIGNsYXNzIFRhYmxl VmlldyhCYXNlVGFibGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogCiAg ICAgICAgIGlmICdmb3JlaWduX2tleScgaW4gZGF0YToKICAgICAgICAgICAgIGZvciBjIGluIGRh dGFbJ2ZvcmVpZ25fa2V5J106Ci0gICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbCi0gICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdnZXRfcGFyZW50LnNxbCcKLSAgICAg ICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgIHRpZD1jWydjb2x1bW5zJ11b MF1bJ3JlZmVyZW5jZXMnXQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgICAgICBjWydyZW1vdGVfc2No ZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgY1sncmVt b3RlX3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKyAgICAgICAgICAgICAgICBz Y2hlbWEsIHRhYmxlID0gZmtleV91dGlscy5nZXRfcGFyZW50KAorICAgICAgICAgICAgICAgICAg ICBzZWxmLmNvbm4sIGNbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQorICAgICAgICAgICAg ICAgIGNbJ3JlbW90ZV9zY2hlbWEnXSA9IHNjaGVtYQorICAgICAgICAgICAgICAgIGNbJ3JlbW90 ZV90YWJsZSddID0gdGFibGUKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwYXJ0aXRpb25z X3NxbCA9ICcnCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29tcG91bmRfdHJpZ2dlcnMvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29tcG91bmRfdHJpZ2dlcnMvX19pbml0X18ucHkKaW5kZXggZDcy Y2M4M2YyLi43N2Q3NjE2YWYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb21wb3VuZF90cmlnZ2Vy cy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29tcG91bmRfdHJpZ2dlcnMvX19pbml0X18u cHkKQEAgLTEzLDYgKzEzLDEwIEBAIGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KIGZyb20gZnVu Y3Rvb2xzIGltcG9ydCB3cmFwcwogCiBpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJhc2UKK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5cCisgICAgY29t cG91bmRfdHJpZ2dlcnMudXRpbHMgYXMgY29tcG91bmRfdHJpZ2dlcl91dGlscworZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0aWxz IFwKKyAgICBpbXBvcnQgdHJpZ2dlcl9kZWZpbml0aW9uCiBmcm9tIGZsYXNrIGltcG9ydCByZW5k ZXJfdGVtcGxhdGUsIHJlcXVlc3QsIGpzb25pZnkKIGZyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQg Z2V0dGV4dAogZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlv bk5vZGVNb2R1bGUKQEAgLTE5OSw5ICsyMDMsNiBAQCBjbGFzcyBDb21wb3VuZFRyaWdnZXJWaWV3 KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1 cm4gbW9kaWZpZWQgU1FMIGZvciB0aGUgc2VsZWN0ZWQKICAgICAgICAgQ29tcG91bmQgVHJpZ2dl ciBub2RlCiAKLSAgICAqIGdldF9zcWwoZGF0YSwgc2NpZCwgdGlkLCB0cmlkKQotICAgICAgLSBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQotCiAgICAgKiBz cWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkKToKICAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGdlbmVyYXRlIHNxbCB0byBzaG93IGl0IGluIHNxbCBwYW5lIGZvciB0aGUKICAgICAg ICAgc2VsZWN0ZWQgQ29tcG91bmQgVHJpZ2dlciBub2RlLgpAQCAtMjEzLDEzICsyMTQsNiBAQCBj bGFzcyBDb21wb3VuZFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgKiBkZXBlbmRl bnQoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkKToKICAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGdlbmVyYXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50CiAg ICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBDb21wb3VuZCBUcmlnZ2VyIG5vZGUuCi0KLSAg ICAqIF9jb2x1bW5fZGV0YWlscyh0aWQsIGNsaXN0KTo6Ci0gICAgICAtIFRoaXMgZnVuY3Rpb24g d2lsbCBmZXRjaCB0aGUgY29sdW1ucyBmb3IgY29tcG91bmQgdHJpZ2dlcgotCi0gICAgKiBfdHJp Z2dlcl9kZWZpbml0aW9uKGRhdGEpOgotICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IGFk ZGl0aW9uYWwgY29tcG91bmQgdHJpZ2dlciBkZWZpbml0aW9ucyBpbgotICAgICAgICBBSkFYIHJl c3BvbnNlCiAgICAgIiIiCiAKICAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCkBA IC0yODEsMjggKzI3NSwxMCBAQCBjbGFzcyBDb21wb3VuZFRyaWdnZXJWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1l IGFuZCBzY2hlbWEgbmFtZQogICAgICAgICAgICAgIyB3aGVuIHdlIGNyZWF0ZSBuZXcgY29tcG91 bmQgdHJpZ2dlciBpbiB1cGRhdGUgd2UgY2FuIGZldGNoCiAgICAgICAgICAgICAjIGl0IHVzaW5n IHByb3BlcnR5IHNxbAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aWQ9a3dhcmdzWyd0aWQnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNl bGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJz ZXQpCi0KLSAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAg ICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hlbWEnXQotICAgICAgICAgICAgICAgIHNlbGYudGFi bGUgPSByb3dbJ3RhYmxlJ10KLQotICAgICAgICAgICAgIyBIZXJlIHdlIGFyZSBzdG9yaW5nIGNv bXBvdW5kIHRyaWdnZXIgZGVmaW5pdGlvbgotICAgICAgICAgICAgIyBXZSB3aWxsIHVzZSBpdCB0 byBjaGVjayBjb21wb3VuZCB0cmlnZ2VyIHR5cGUgZGVmaW5pdGlvbgotICAgICAgICAgICAgc2Vs Zi50cmlnZ2VyX2RlZmluaXRpb24gPSB7Ci0gICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9S T1cnOiAoMSA8PCAwKSwKLSAgICAgICAgICAgICAgICAnVFJJR0dFUl9UWVBFX0JFRk9SRSc6ICgx IDw8IDEpLAotICAgICAgICAgICAgICAgICdUUklHR0VSX1RZUEVfSU5TRVJUJzogKDEgPDwgMiks Ci0gICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9ERUxFVEUnOiAoMSA8PCAzKSwKLSAgICAg ICAgICAgICAgICAnVFJJR0dFUl9UWVBFX1VQREFURSc6ICgxIDw8IDQpLAotICAgICAgICAgICAg ICAgICdUUklHR0VSX1RZUEVfVFJVTkNBVEUnOiAoMSA8PCA1KSwKLSAgICAgICAgICAgICAgICAn VFJJR0dFUl9UWVBFX0lOU1RFQUQnOiAoMSA8PCA2KQotICAgICAgICAgICAgfQorICAgICAgICAg ICAgc2NoZW1hLCB0YWJsZSA9IGNvbXBvdW5kX3RyaWdnZXJfdXRpbHMuZ2V0X3BhcmVudCgKKyAg ICAgICAgICAgICAgICBzZWxmLmNvbm4sIGt3YXJnc1sndGlkJ10pCisgICAgICAgICAgICBzZWxm LnNjaGVtYSA9IHNjaGVtYQorICAgICAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAKICAgICAg ICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKIApAQCAtNDIyLDY3ICszOTgsNiBAQCBj bGFzcyBDb21wb3VuZFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICBz dGF0dXM9MjAwCiAgICAgICAgICkKIAotICAgIGRlZiBfY29sdW1uX2RldGFpbHMoc2VsZiwgdGlk LCBjbGlzdCk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uYWwgd2lsbCBmZXRj aCBsaXN0IG9mIGNvbHVtbiBmb3IgY29tcG91bmQgdHJpZ2dlcgotCi0gICAgICAgIEFyZ3M6Ci0g ICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgY2xpc3Q6IExpc3Qgb2YgY29s dW1ucwotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBVcGRhdGVkIHByb3BlcnRpZXMg ZGF0YSB3aXRoIGNvbHVtbgotICAgICAgICAiIiIKLQotICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnMuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xpc3Q9Y2xpc3QpCi0gICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVz OgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQotICAgICAgICAjICd0Z2F0dHInIGNvbnRhaW5zIGxpc3Qgb2YgY29sdW1ucyBmcm9tIHRhYmxl IHVzZWQgaW4KLSAgICAgICAgIyBjb21wb3VuZCB0cmlnZ2VyCi0gICAgICAgIGNvbHVtbnMgPSBb XQotCi0gICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgY29sdW1u cy5hcHBlbmQocm93WyduYW1lJ10pCi0KLSAgICAgICAgcmV0dXJuIGNvbHVtbnMKLQotICAgIGRl ZiBfdHJpZ2dlcl9kZWZpbml0aW9uKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAg VGhpcyBmdW5jdGlvbmFsIHdpbGwgc2V0IHRoZSBjb21wb3VuZCB0cmlnZ2VyIGRlZmluaXRpb24K LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogUHJvcGVydGllcyBkYXRhCi0KLSAg ICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdpdGgg Y29tcG91bmQgdHJpZ2dlciBkZWZpbml0aW9uCi0gICAgICAgICIiIgotCi0gICAgICAgICMgRXZl bnQgZGVmaW5pdGlvbgotICAgICAgICBpZiBkYXRhWyd0Z3R5cGUnXSAmIHNlbGYudHJpZ2dlcl9k ZWZpbml0aW9uWydUUklHR0VSX1RZUEVfSU5TRVJUJ106Ci0gICAgICAgICAgICBkYXRhWydldm50 X2luc2VydCddID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YVsnZXZudF9p bnNlcnQnXSA9IEZhbHNlCi0KLSAgICAgICAgaWYgZGF0YVsndGd0eXBlJ10gJiBzZWxmLnRyaWdn ZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBFX0RFTEVURSddOgotICAgICAgICAgICAgZGF0YVsn ZXZudF9kZWxldGUnXSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGFbJ2V2 bnRfZGVsZXRlJ10gPSBGYWxzZQotCi0gICAgICAgIGlmIGRhdGFbJ3RndHlwZSddICYgc2VsZi50 cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9VUERBVEUnXToKLSAgICAgICAgICAgIGRh dGFbJ2V2bnRfdXBkYXRlJ10gPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRh Wydldm50X3VwZGF0ZSddID0gRmFsc2UKLQotICAgICAgICBpZiBkYXRhWyd0Z3R5cGUnXSAmIHNl bGYudHJpZ2dlcl9kZWZpbml0aW9uWydUUklHR0VSX1RZUEVfVFJVTkNBVEUnXToKLSAgICAgICAg ICAgIGRhdGFbJ2V2bnRfdHJ1bmNhdGUnXSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAg ICAgIGRhdGFbJ2V2bnRfdHJ1bmNhdGUnXSA9IEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIGRhdGEK LQogICAgIEBjaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCB0aWQsIHRyaWQpOgogICAgICAgICAiIiIKQEAgLTUyMCw5ICs0MzUs MTAgQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAg ICBkYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKICAgICAgICAgaWYgbGVuKGRhdGFbJ3RnYXR0 ciddKSA+PSAxOgogICAgICAgICAgICAgY29sdW1ucyA9ICcsICcuam9pbihkYXRhWyd0Z2F0dHIn XS5zcGxpdCgnICcpKQotICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gc2VsZi5fY29sdW1u X2RldGFpbHModGlkLCBjb2x1bW5zKQorICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29t cG91bmRfdHJpZ2dlcl91dGlscy5nZXRfY29sdW1uX2RldGFpbHMoCisgICAgICAgICAgICAgICAg c2VsZi5jb25uLCB0aWQsIGNvbHVtbnMpCiAKLSAgICAgICAgZGF0YSA9IHNlbGYuX3RyaWdnZXJf ZGVmaW5pdGlvbihkYXRhKQorICAgICAgICBkYXRhID0gdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEp CiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAgICAgICByZXNwb25zZT1k YXRhLApAQCAtNjk2LDcgKzYxMiw4IEBAIGNsYXNzIENvbXBvdW5kVHJpZ2dlclZpZXcoUEdDaGls ZE5vZGVWaWV3KToKICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKICAg ICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCiAKLSAgICAgICAgICAgIFNRTCwg bmFtZSA9IHNlbGYuZ2V0X3NxbChzY2lkLCB0aWQsIHRyaWQsIGRhdGEpCisgICAgICAgICAgICBT UUwsIG5hbWUgPSBjb21wb3VuZF90cmlnZ2VyX3V0aWxzLmdldF9zcWwoCisgICAgICAgICAgICAg ICAgc2VsZi5jb25uLCBkYXRhLCB0aWQsIHRyaWQsIHNlbGYuZGF0bGFzdHN5c29pZCkKICAgICAg ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKFNRTCwgKHN0ciwgdW5pY29kZSkpOgogICAgICAgICAg ICAgICAgIHJldHVybiBTUUwKICAgICAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJp cCgnICcpCkBAIC03NzUsNyArNjkyLDggQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQR0No aWxkTm9kZVZpZXcpOgogICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQogCiAgICAg ICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChzY2lkLCB0aWQs IHRyaWQsIGRhdGEpCisgICAgICAgICAgICBzcWwsIG5hbWUgPSBjb21wb3VuZF90cmlnZ2VyX3V0 aWxzLmdldF9zcWwoCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLCBkYXRhLCB0aWQsIHRyaWQs IHNlbGYuZGF0bGFzdHN5c29pZCkKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNxbCwg KHN0ciwgdW5pY29kZSkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzcWwKICAgICAgICAgICAg IHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCkBAIC03ODksNTggKzcwNyw2IEBAIGNs YXNzIENvbXBvdW5kVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBkZWYgZ2V0X3NxbChzZWxmLCBzY2lkLCB0aWQsIHRy aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbnJh dGUgc3FsIGZyb20gbW9kZWwgZGF0YQotICAgICAgICAiIiIKLSAgICAgICAgaWYgdHJpZCBpcyBu b3QgTm9uZToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGlkPXRpZCwgdHJpZD10cmlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKLSAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAg ICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAiIiJDb3Vs ZCBub3QgZmluZCB0aGUgY29tcG91bmQgdHJpZ2dlciBpbiB0aGUgdGFibGUuIiIiKQotICAgICAg ICAgICAgICAgICkKLQotICAgICAgICAgICAgb2xkX2RhdGEgPSBkaWN0KHJlc1sncm93cyddWzBd KQotCi0gICAgICAgICAgICAjIElmIG5hbWUgaXMgbm90IHByZXNlbnQgaW4gZGF0YSB0aGVuCi0g ICAgICAgICAgICAjIHdlIHdpbGwgZmV0Y2ggaXQgZnJvbSBvbGQgZGF0YSwgd2UgYWxzbyBuZWVk IHNjaGVtYSAmIHRhYmxlIG5hbWUKLSAgICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToK LSAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCi0KLSAgICAg ICAgICAgIHNlbGYudHJpZ2dlcl9uYW1lID0gZGF0YVsnbmFtZSddCi0gICAgICAgICAgICBzZWxm LmlzX3RyaWdnZXJfZW5hYmxlZCA9IG9sZF9kYXRhWydpc19lbmFibGVfdHJpZ2dlciddCi0KLSAg ICAgICAgICAgIGlmIGxlbihvbGRfZGF0YVsndGdhdHRyJ10pID4gMToKLSAgICAgICAgICAgICAg ICBjb2x1bW5zID0gJywgJy5qb2luKG9sZF9kYXRhWyd0Z2F0dHInXS5zcGxpdCgnICcpKQotICAg ICAgICAgICAgICAgIG9sZF9kYXRhWydjb2x1bW5zJ10gPSBzZWxmLl9jb2x1bW5fZGV0YWlscyh0 aWQsIGNvbHVtbnMpCi0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5fdHJpZ2dlcl9kZWZp bml0aW9uKG9sZF9kYXRhKQotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCi0g ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwn XSksCi0gICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEsIGNvbm49c2Vs Zi5jb25uCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXF1aXJl ZF9hcmdzID0gewotICAgICAgICAgICAgICAgICduYW1lJzogJ05hbWUnCi0gICAgICAgICAgICB9 Ci0KLSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKLSAgICAgICAgICAgICAg ICBpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXR0ZXh0 KCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAgICAgICAgICAjIElmIHRoZSByZXF1 ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAotICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCi0gICAgICAgIHJldHVybiBTUUwsIGRhdGFbJ25hbWUnXSBpZiAnbmFtZScg aW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10KLQogICAgIEBjaGVja19wcmVjb25kaXRpb24K ICAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgdHJpZCk6CiAgICAg ICAgICIiIgpAQCAtODU1LDQ2ICs3MjEsMTIgQEAgY2xhc3MgQ29tcG91bmRUcmlnZ2VyVmlldyhQ R0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICB0aWQ6IFRhYmxlIElECiAgICAgICAgICAgIHRy aWQ6IFRyaWdnZXIgSUQKICAgICAgICAgIiIiCi0KLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGlkPXRpZCwgdHJpZD10cmlkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCi0KLSAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQotICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAgICAgICAgICByZXR1cm4g Z29uZShnZXR0ZXh0KAotICAgICAgICAgICAgICAgICIiIkNvdWxkIG5vdCBmaW5kIHRoZSBjb21w b3VuZCB0cmlnZ2VyIGluIHRoZSB0YWJsZS4iIiIpKQotCi0gICAgICAgIGRhdGEgPSBkaWN0KHJl c1sncm93cyddWzBdKQotICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdp bGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0gICAgICAgIGRhdGFbJ3NjaGVtYSdd ID0gc2VsZi5zY2hlbWEKLSAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKLQotICAg ICAgICBpZiBsZW4oZGF0YVsndGdhdHRyJ10pID49IDE6Ci0gICAgICAgICAgICBjb2x1bW5zID0g JywgJy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBkYXRhWydj b2x1bW5zJ10gPSBzZWxmLl9jb2x1bW5fZGV0YWlscyh0aWQsIGNvbHVtbnMpCi0KLSAgICAgICAg ZGF0YSA9IHNlbGYuX3RyaWdnZXJfZGVmaW5pdGlvbihkYXRhKQotCi0gICAgICAgIFNRTCwgbmFt ZSA9IHNlbGYuZ2V0X3NxbChzY2lkLCB0aWQsIE5vbmUsIGRhdGEpCi0KLSAgICAgICAgc3FsX2hl YWRlciA9IHUiLS0gQ29tcG91bmQgVHJpZ2dlcjogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25h bWUnXSkKLQotICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0KLSAgICAgICAgU1FMID0gc3Fs X2hlYWRlciArICdcblxuJyArIFNRTC5zdHJpcCgnXG4nKQotCi0gICAgICAgICMgSWYgY29tcG91 bmQgdHJpZ2dlciBpcyBkaXNiYWxlZCB0aGVuIGFkZCBzcWwgY29kZSBmb3IgdGhlIHNhbWUKLSAg ICAgICAgaWYgZGF0YVsnaXNfZW5hYmxlX3RyaWdnZXInXSAhPSAnTyc6Ci0gICAgICAgICAgICBT UUwgKz0gJ1xuXG4nCi0gICAgICAgICAgICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwnXSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIFNRTCA9IGNvbXBvdW5kX3RyaWdnZXJfdXRpbHMuZ2V0X3JldmVy c2VfZW5naW5lZXJlZF9zcWwoCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLCBzZWxmLnNjaGVt YSwgc2VsZi50YWJsZSwgdGlkLCB0cmlkLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0bGFzdHN5 c29pZCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCiAKICAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29tcG91 bmRfdHJpZ2dlcnMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29tcG91bmRfdHJpZ2dlcnMvdXRpbHMu cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5hZDYyMTIwY2MKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29tcG91bmRfdHJpZ2dlcnMvdXRpbHMucHkKQEAgLTAs MCArMSwyMDAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIiBJbXBsZW1lbnRzIFV0 aWxpdHkgY2xhc3MgZm9yIEZvcmVpZ24gS2V5cy4gIiIiCisKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZQorZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KK2Zy b20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20g cGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IE9iamVjdEdvbmUKK2Zyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGlscyBcCisg ICAgaW1wb3J0IHRyaWdnZXJfZGVmaW5pdGlvbgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBz CisKKworZGVmIGdldF90ZW1wbGF0ZV9wYXRoKGYpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBwcmVwYXJlCisgICAgdGhl IHRlbXBsYXRlIHBhdGggYmFzZWQgb24gZGF0YWJhc2Ugc2VydmVyIHZlcnNpb24uCisgICAgIiIi CisKKyAgICBAd3JhcHMoZikKKyAgICBkZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAg ICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgdGhlIGNvbm5lY3Rpb24gb2JqZWN0CisgICAgICAg IGNvbm5fb2JqID0gYXJnc1swXQorICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJycKKyAgICAgICAg aWYgJ3RlbXBsYXRlX3BhdGgnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAgICB0ZW1wbGF0ZV9w YXRoID0gJ2NvbXBvdW5kX3RyaWdnZXJzL3NxbC97MH0vI3sxfSMnLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICBjb25uX29iai5tYW5hZ2VyLnNlcnZlcl90eXBlLCBjb25uX29iai5tYW5hZ2VyLnZl cnNpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoID0ga3dhcmdz Wyd0ZW1wbGF0ZV9wYXRoJ10KKworICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MsIHRl bXBsYXRlX3BhdGg9dGVtcGxhdGVfcGF0aCkKKyAgICByZXR1cm4gd3JhcAorCisKK0BnZXRfdGVt cGxhdGVfcGF0aAorZGVmIGdldF9wYXJlbnQoY29ubiwgdGlkLCB0ZW1wbGF0ZV9wYXRoPU5vbmUp OgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHBhcmVudCBvZiB0 aGUgZ2l2ZW4gdGFibGUuCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAg OnBhcmFtIHRpZDogVGFibGUgb2lkCisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFs IHRlbXBsYXRlIHBhdGgKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLCB0aWQ9dGlkKQorICAgIHN0YXR1cywg cnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICByYWlzZSBFeGNlcHRpb24ocnNldCkKKworICAgIHNjaGVtYSA9ICcnCisgICAgdGFibGUg PSAnJworICAgIGlmICdyb3dzJyBpbiByc2V0IGFuZCBsZW4ocnNldFsncm93cyddKSA+IDA6Cisg ICAgICAgIHNjaGVtYSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUg PSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgIHJldHVybiBzY2hlbWEsIHRhYmxlCisK KworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2NvbHVtbl9kZXRhaWxzKGNvbm4sIHRpZCwg Y2xpc3QsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbmFs IHdpbGwgZmV0Y2ggbGlzdCBvZiBjb2x1bW4gZm9yIHRyaWdnZXIuCisgICAgOnBhcmFtIGNvbm46 CisgICAgOnBhcmFtIHRpZDoKKyAgICA6cGFyYW0gY2xpc3Q6CisgICAgOnBhcmFtIHRlbXBsYXRl X3BhdGg6CisgICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdnZXRfY29sdW1ucy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD10aWQsIGNsaXN0PWNsaXN0KQorICAgIHN0YXR1cywgcnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisgICAgY29sdW1ucyA9IFtdCisgICAgZm9yIHJvdyBp biByc2V0Wydyb3dzJ106CisgICAgICAgIGNvbHVtbnMuYXBwZW5kKHJvd1snbmFtZSddKQorCisg ICAgcmV0dXJuIGNvbHVtbnMKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfc3FsKGNv bm4sIGRhdGEsIHRpZCwgdHJpZCwgZGF0bGFzdHN5c29pZCwgdGVtcGxhdGVfcGF0aD1Ob25lKToK KyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwg ZGF0YQorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSBkYXRh OiBEYXRhCisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gdHJpZDogVHJpZ2dl ciBJRAorICAgIDpwYXJhbSBkYXRsYXN0c3lzb2lkOgorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRo OiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKyAgICBuYW1l ID0gZGF0YVsnbmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2UgTm9uZQorICAgIGlmIHRyaWQg aXMgbm90IE5vbmU6CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwgdHJpZD10cmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0bGFzdHN5c29pZD1kYXRsYXN0c3lzb2lkKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gY29u bi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKHJlcykKKworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6 CisgICAgICAgICAgICByYWlzZSBPYmplY3RHb25lKAorICAgICAgICAgICAgICAgIF8oJ0NvdWxk IG5vdCBmaW5kIHRoZSBjb21wb3VuZCB0cmlnZ2VyIGluIHRoZSB0YWJsZS4nKSkKKworICAgICAg ICBvbGRfZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCisgICAgICAgICMgSWYgbmFtZSBpcyBu b3QgcHJlc2VudCBpbiBkYXRhIHRoZW4KKyAgICAgICAgIyB3ZSB3aWxsIGZldGNoIGl0IGZyb20g b2xkIGRhdGEsIHdlIGFsc28gbmVlZCBzY2hlbWEgJiB0YWJsZSBuYW1lCisgICAgICAgIGlmICdu YW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIG5hbWUgPSBkYXRhWyduYW1lJ10gPSBvbGRf ZGF0YVsnbmFtZSddCisKKyAgICAgICAgaWYgbGVuKG9sZF9kYXRhWyd0Z2F0dHInXSkgPiAxOgor ICAgICAgICAgICAgY29sdW1ucyA9ICcsICcuam9pbihvbGRfZGF0YVsndGdhdHRyJ10uc3BsaXQo JyAnKSkKKyAgICAgICAgICAgIG9sZF9kYXRhWydjb2x1bW5zJ10gPSBnZXRfY29sdW1uX2RldGFp bHMoY29ubiwgdGlkLCBjb2x1bW5zKQorCisgICAgICAgIG9sZF9kYXRhID0gdHJpZ2dlcl9kZWZp bml0aW9uKG9sZF9kYXRhKQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAg ICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPWNvbm4KKyAgICAgICAgKQorICAg IGVsc2U6CisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZSc6ICdO YW1lJworICAgICAgICB9CisKKyAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAg ICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBfKCct LSBkZWZpbml0aW9uIGluY29tcGxldGUnKQorCisgICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9y IG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubikKKyAgICByZXR1cm4g U1FMLCBuYW1lCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3JldmVyc2VfZW5naW5l ZXJlZF9zcWwoY29ubiwgc2NoZW1hLCB0YWJsZSwgdGlkLCB0cmlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAg IiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiByZXZlcnNlIGVuZ2luZWVyZWQgc3Fs IGZvciB0cmlnZ2VyKHMpLgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAg IDpwYXJhbSBzY2hlbWE6IFNjaGVtYQorICAgIDpwYXJhbSB0YWJsZTogVGFibGUKKyAgICA6cGFy YW0gdGlkOiBUYWJsZSBJRAorICAgIDpwYXJhbSB0cmlkOiBUcmlnZ2VyIElECisgICAgOnBhcmFt IGRhdGxhc3RzeXNvaWQ6CisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFsIHRlbXBs YXRlIHBhdGgKKyAgICA6cmV0dXJuOgorICAgICIiIgorICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXRyaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9ZGF0bGFzdHN5c29pZCkKKworICAgIHN0YXR1cywgcmVzID0g Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJhaXNl IEV4Y2VwdGlvbihyZXMpCisKKyAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAg IHJhaXNlIE9iamVjdEdvbmUoCisgICAgICAgICAgICBfKCdDb3VsZCBub3QgZmluZCB0aGUgY29t cG91bmQgdHJpZ2dlciBpbiB0aGUgdGFibGUuJykpCisKKyAgICBkYXRhID0gZGljdChyZXNbJ3Jv d3MnXVswXSkKKyAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNp bmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCisgICAgZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKKyAg ICBkYXRhWyd0YWJsZSddID0gdGFibGUKKworICAgIGlmIGxlbihkYXRhWyd0Z2F0dHInXSkgPj0g MToKKyAgICAgICAgY29sdW1ucyA9ICcsICcuam9pbihkYXRhWyd0Z2F0dHInXS5zcGxpdCgnICcp KQorICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBnZXRfY29sdW1uX2RldGFpbHMoY29ubiwgdGlk LCBjb2x1bW5zKQorCisgICAgZGF0YSA9IHRyaWdnZXJfZGVmaW5pdGlvbihkYXRhKQorCisgICAg U1FMLCBuYW1lID0gZ2V0X3NxbChjb25uLCBkYXRhLCB0aWQsIE5vbmUsIGRhdGxhc3RzeXNvaWQp CisKKyAgICBzcWxfaGVhZGVyID0gdSItLSBDb21wb3VuZCBUcmlnZ2VyOiB7MH1cblxuLS0gIi5m b3JtYXQoZGF0YVsnbmFtZSddKQorCisgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1jb25uKQorCisgICAgU1FMID0gc3Fs X2hlYWRlciArICdcblxuJyArIFNRTC5zdHJpcCgnXG4nKQorCisgICAgIyBJZiB0cmlnZ2VyIGlz IGRpc2FibGVkIHRoZW4gYWRkIHNxbCBjb2RlIGZvciB0aGUgc2FtZQorICAgIGlmIGRhdGFbJ2lz X2VuYWJsZV90cmlnZ2VyJ10gIT0gJ08nOgorICAgICAgICBTUUwgKz0gJ1xuXG4nCisgICAgICAg IFNRTCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2Vy LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49 Y29ubikKKyAgICByZXR1cm4gU1FMCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv Y2hlY2tfY29uc3RyYWludC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9jaGVj a19jb25zdHJhaW50L19faW5pdF9fLnB5CmluZGV4IDkwNGUwNzNjYS4uMzkyNDAyNjZhIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9fX2luaXRfXy5w eQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9fX2luaXRfXy5w eQpAQCAtMTMsNiArMTMsOCBAQCBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCiBmcm9tIGZ1bmN0 b29scyBpbXBvcnQgd3JhcHMKIAogaW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIGNvbnN0 cmFpbnRzLmNoZWNrX2NvbnN0cmFpbnQudXRpbHMgYXMgY2hlY2tfdXRpbHMKIGZyb20gZmxhc2sg aW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlmeQog ZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KIGZyb20gcGdhZG1pbi5icm93 c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCkBAIC0xNDEsMTAgKzE0 Myw2IEBAIGNsYXNzIENoZWNrQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAq IG1zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKICAgICAgIC0gUmV0dXJucyB0 aGUgbW9kaWZpZWQgU1FMLgogCi0gICAgKiBnZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB0 aWQ9Tm9uZSk6Ci0gICAgICAtIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRl L3VwZGF0ZSB0aGUgQ2hlY2sgQ29uc3RyYWludC4KLSAgICAgICAgb2JqZWN0LgotCiAgICAgKiBk ZXBlbmRlbnRzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgY2lkKToKICAgICAgIC0gUmV0dXJu cyB0aGUgZGVwZW5kZW50cyBmb3IgdGhlIENoZWNrIENvbnN0cmFpbnQgb2JqZWN0LgogCkBAIC0y MDIsMTUgKzIwMCw5IEBAIGNsYXNzIENoZWNrQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdjaGVja19jb25zdHJhaW50L3Nx bC8jezB9IycuZm9ybWF0KAogICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci52ZXJzaW9uKQog Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1r d2FyZ3NbJ3RpZCddKQotICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAg ICAgICAgc2VsZi5zY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAg ICBzZWxmLnRhYmxlID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisgICAgICAgICAgICBzY2hl bWEsIHRhYmxlID0gY2hlY2tfdXRpbHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sIGt3YXJnc1sndGlk J10pCisgICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHNjaGVtYQorICAgICAgICAgICAgc2VsZi50 YWJsZSA9IHRhYmxlCiAKICAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKIApA QCAtMjcyLDE1ICsyNjQsOSBAQCBjbGFzcyBDaGVja0NvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CiAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdjaGVja19jb25zdHJhaW50L3Nx bC8jezB9IycuZm9ybWF0KAogICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnZlcnNpb24pCiAKLSAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLSAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCi0KLSAgICAgICAgc2VsZi5zY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVt YSddCi0gICAgICAgIHNlbGYudGFibGUgPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKyAgICAg ICAgc2NoZW1hLCB0YWJsZSA9IGNoZWNrX3V0aWxzLmdldF9wYXJlbnQoc2VsZi5jb25uLCB0aWQp CisgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgIHNlbGYudGFibGUgPSB0YWJs ZQogCiAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkKQpAQCAtMzkxLDE1ICszNzcsOSBAQCBjbGFzcyBDaGVja0NvbnN0cmFpbnRWaWV3 KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdjaGVja19j b25zdHJhaW50L3NxbC8jezB9IycuZm9ybWF0KAogICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnZl cnNpb24pCiAKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkK LSAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgc2VsZi5zY2hlbWEgPSByc2V0Wydyb3dz J11bMF1bJ3NjaGVtYSddCi0gICAgICAgIHNlbGYudGFibGUgPSByc2V0Wydyb3dzJ11bMF1bJ3Rh YmxlJ10KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGNoZWNrX3V0aWxzLmdldF9wYXJlbnQoc2Vs Zi5jb25uLCB0aWQpCisgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgIHNlbGYu dGFibGUgPSB0YWJsZQogCiAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLApAQCAtNDM4LDIwICs0MTgsMjEg QEAgY2xhc3MgQ2hlY2tDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAg ICAgY2lkOiBDaGVjayBDb25zdHJhaW50IElkCiAgICAgICAgICIiIgogCi0gICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNpZD1jaWQpCi0gICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIHN0YXR1cywgcmVz ID0gY2hlY2tfdXRpbHMuZ2V0X2NoZWNrX2NvbnN0cmFpbnRzKHNlbGYuY29ubiwgdGlkLCBjaWQp CiAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAw OgotICAgICAgICAgICAgcmV0dXJuIGdvbmUoCi0gICAgICAgICAgICAgICAgXygiQ291bGQgbm90 IGZpbmQgdGhlIG9iamVjdCBvbiB0aGUgc2VydmVyLiIpCi0gICAgICAgICAgICApCisgICAgICAg ICAgICByZXR1cm4gcmVzCisKKyAgICAgICAgaWYgbGVuKHJlcykgPT0gMDoKKyAgICAgICAgICAg IHJldHVybiBnb25lKF8oCisgICAgICAgICAgICAgICAgIiIiQ291bGQgbm90IGZpbmQgdGhlIGNo ZWNrIGNvbnN0cmFpbnQgaW4gdGhlIHRhYmxlLiIiIgorICAgICAgICAgICAgKSkKKworICAgICAg ICByZXN1bHQgPSByZXMKKyAgICAgICAgaWYgY2lkOgorICAgICAgICAgICAgcmVzdWx0ID0gcmVz WzBdCiAKLSAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCiAgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgIHJlc3Bv bnNlPXJlc3VsdCwKICAgICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCkBAIC02NTMs NyArNjM0LDcgQEAgY2xhc3MgQ2hlY2tDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgog ICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAgICAgICAgICAgZGF0 YVsndGFibGUnXSA9IHNlbGYudGFibGUKIAotICAgICAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5n ZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB0aWQsIGNpZCkKKyAgICAgICAgICAgIFNRTCwg bmFtZSA9IGNoZWNrX3V0aWxzLmdldF9zcWwoc2VsZi5jb25uLCBkYXRhLCB0aWQsIGNpZCkKICAg ICAgICAgICAgIGlmIG5vdCBTUUw6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKICAgICAg ICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCkBAIC03NjMsNyArNzQ0LDcg QEAgY2xhc3MgQ2hlY2tDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBk YXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCiAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxm LnRhYmxlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0X3Nx bChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgdGlkLCBjaWQpCisgICAgICAgICAgICBzcWwsIG5hbWUg PSBjaGVja191dGlscy5nZXRfc3FsKHNlbGYuY29ubiwgZGF0YSwgdGlkLCBjaWQpCiAgICAgICAg ICAgICBpZiBub3Qgc3FsOgogICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCiAgICAgICAgICAg ICBzcWwgPSBzcWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQpAQCAtNzc3LDU2ICs3NTgsNiBAQCBj bGFzcyBDaGVja0NvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgZGVmIGdldF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRh dGEsIHNjaWQsIHRpZCwgY2lkPU5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdGVz IHRoZSBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBDaGVjayBDb25zdHJhaW50 LgotCi0gICAgICAgICBBcmdzOgotICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKLSAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCi0gICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCi0g ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKLSAgICAgICAgICAgIHRpZDogVGFibGUgSWQKLSAg ICAgICAgICAgIGNpZDogQ2hlY2sgQ29uc3RyYWludCBJZAotICAgICAgICAiIiIKLSAgICAgICAg aWYgY2lkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9Y2lkKQotICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLQotICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCi0gICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAg ICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBnb25lKAotICAgICAgICAgICAgICAgICAgICBfKCJD b3VsZCBub3QgZmluZCB0aGUgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIuIikKLSAgICAgICAgICAgICAg ICApCi0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KLSAgICAgICAgICAg IHJlcXVpcmVkX2FyZ3MgPSBbJ25hbWUnXQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJl ZF9hcmdzOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAgICAg ICAgICAgICAgZGF0YVthcmddID0gb2xkX2RhdGFbYXJnXQotCi0gICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9 b2xkX2RhdGEsIGNvbm49c2VsZi5jb25uCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gWydjb25zcmMnXQotCi0gICAgICAgICAgICBmb3Ig YXJnIGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRh OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRl JykKLSAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YVthcmddLCBsaXN0KSBhbmQg bGVuKGRhdGFbYXJnXSkgPCAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVm aW5pdGlvbiBpbmNvbXBsZXRlJykKLQotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSkKLQotICAgICAgICByZXR1cm4gU1FMLCBkYXRhWyduYW1l J10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBvbGRfZGF0YVsnbmFtZSddCi0KICAgICBAY2hlY2tf cHJlY29uZGl0aW9uCiAgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCBjaWQpOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy9jaGVja19jb25zdHJhaW50L3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2No ZWNrX2NvbnN0cmFpbnQvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi4yZDZlM2FkMDkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv Y2hlY2tfY29uc3RyYWludC91dGlscy5weQpAQCAtMCwwICsxLDE3NyBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiIEltcGxlbWVudHMgVXRpbGl0eSBjbGFzcyBmb3IgQ2hlY2sgQ29u c3RyYWludC4gIiIiCisKK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZQorZnJvbSBm bGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KK2Zyb20gcGdhZG1pbi51dGlscy5hamF4 IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi51dGlscy5leGNlcHRp b24gaW1wb3J0IE9iamVjdEdvbmUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2Rl ZiBnZXRfdGVtcGxhdGVfcGF0aChmKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg YmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgcHJlcGFyZQorICAgIHRoZSB0ZW1wbGF0 ZSBwYXRoIGJhc2VkIG9uIGRhdGFiYXNlIHNlcnZlciB2ZXJzaW9uLgorICAgICIiIgorCisgICAg QHdyYXBzKGYpCisgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBIZXJl IGFyZ3NbMF0gd2lsbCBob2xkIHRoZSBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICBjb25uX29i aiA9IGFyZ3NbMF0KKyAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICcnCisgICAgICAgIGlmICd0ZW1w bGF0ZV9wYXRoJyBub3QgaW4ga3dhcmdzOgorICAgICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICdj aGVja19jb25zdHJhaW50L3NxbC8jezB9IycuZm9ybWF0KAorICAgICAgICAgICAgICAgIGNvbm5f b2JqLm1hbmFnZXIudmVyc2lvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlbXBsYXRl X3BhdGggPSBrd2FyZ3NbJ3RlbXBsYXRlX3BhdGgnXQorCisgICAgICAgIHJldHVybiBmKCphcmdz LCAqKmt3YXJncywgdGVtcGxhdGVfcGF0aD10ZW1wbGF0ZV9wYXRoKQorICAgIHJldHVybiB3cmFw CisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3BhcmVudChjb25uLCB0aWQsIHRlbXBs YXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0 aGUgcGFyZW50IG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlv biBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBvaWQKKyAgICA6cGFyYW0gdGVtcGxhdGVf cGF0aDoKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLCB0aWQ9dGlkKQorICAgIHN0YXR1cywgcnNldCA9IGNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICByYWlz ZSBFeGNlcHRpb24ocnNldCkKKworICAgIHNjaGVtYSA9ICcnCisgICAgdGFibGUgPSAnJworICAg IGlmICdyb3dzJyBpbiByc2V0IGFuZCBsZW4ocnNldFsncm93cyddKSA+IDA6CisgICAgICAgIHNj aGVtYSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUgPSByc2V0Wydy b3dzJ11bMF1bJ3RhYmxlJ10KKworICAgIHJldHVybiBzY2hlbWEsIHRhYmxlCisKKworQGdldF90 ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2NoZWNrX2NvbnN0cmFpbnRzKGNvbm4sIHRpZCwgY2lkPU5v bmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1 c2VkIHRvIGZldGNoIGluZm9ybWF0aW9uIG9mIHRoZQorICAgIGNoZWNrIGNvbnN0cmFpbnQocykg Zm9yIHRoZSBnaXZlbiB0YWJsZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QK KyAgICA6cGFyYW0gdGlkOiBUYWJsZSBJRAorICAgIDpwYXJhbSBjaWQ6IENoZWNrIENvbnN0cmFp bnQgSUQKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1 cm46CisgICAgIiIiCisKKyAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAg ICAgIFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQsIGNpZD1jaWQp CisKKyAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICByZXR1cm4gc3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgcmV0dXJuIFRydWUsIHJlc3VsdFsncm93cyddCisKKwor QGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2NoZWNrX2NvbnN0cmFpbnRfc3FsKGNvbm4sIHRp ZCwgZGF0YSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgcmV0dXJuIHNxbCBmb3IgY2hlY2sgY29uc3RyYWludHMuCisgICAgOnBhcmFtIGNvbm46 IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0g ZGF0YTogRGF0YQorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBUZW1wbGF0ZSBQYXRoCisgICAg OnJldHVybjoKKyAgICAiIiIKKworICAgIHNxbCA9IFtdCisgICAgIyBDaGVjayBpZiBjb25zdHJh aW50IGlzIGluIGRhdGEKKyAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFk ZC9jaGFuZ2UvZGVsZXRlCisgICAgaWYgJ2NoZWNrX2NvbnN0cmFpbnQnIGluIGRhdGE6CisgICAg ICAgIGNvbnN0cmFpbnQgPSBkYXRhWydjaGVja19jb25zdHJhaW50J10KKyAgICAgICAgIyBJZiBj b25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25z dHJhaW50OgorICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgorICAg ICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAg ICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAjIFNxbCBmb3Ig ZHJvcAorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0 ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9Yywg Y29ubj1jb25uKS5zdHJpcCgiXG4iKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBpZiAn Y2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRb J2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSdd CisgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAg ICAgICAgbW9kaWZpZWRfc3FsLCBuYW1lID0gZ2V0X3NxbChjb25uLCBjLCB0aWQsIGNbJ29pZCdd KQorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQobW9kaWZpZWRfc3FsLnN0cmlwKCdcbicpKQor CisgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2FkZGVkJ106CisgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRh WydzY2hlbWEnXQorICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKwor ICAgICAgICAgICAgICAgIGFkZF9zcWwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGMsIHRpZCkKKyAg ICAgICAgICAgICAgICBzcWwuYXBwZW5kKGFkZF9zcWwuc3RyaXAoIlxuIikpCisKKyAgICBpZiBs ZW4oc3FsKSA+IDA6CisgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3Ry aW5nCisgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCisgICAgZWxzZToKKyAgICAgICAg cmV0dXJuIE5vbmUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfc3FsKGNvbm4sIGRh dGEsIHRpZCwgY2lkPU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisgICAgOnBhcmFt IGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIGRhdGE6IGRhdGEKKyAgICA6cGFy YW0gdGlkOiBUYWJsZSBpZAorICAgIDpwYXJhbSBjaWQ6IENoZWNrIENvbnN0cmFpbnQgSUQKKyAg ICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46CisgICAg IiIiCisgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIE5vbmUK KyAgICBpZiBjaWQgaXMgbm90IE5vbmU6CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2lkPWNpZCkKKyAgICAgICAgc3RhdHVzLCByZXMg PSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkg PT0gMDoKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoCisgICAgICAgICAgICAgICAgXygn Q291bGQgbm90IGZpbmQgdGhlIGNoZWNrIGNvbnN0cmFpbnQgaW4gdGhlIHRhYmxlLicpKQorCisg ICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgaWYgJ25hbWUnIG5vdCBp biBkYXRhOgorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWyduYW1l J10KKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3Bh dGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhLCBvX2RhdGE9b2xkX2RhdGEsIGNvbm49Y29ubikKKyAgICBlbHNlOgorICAgICAgICBpZiAn Y29uc3JjJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0aW9u IGluY29tcGxldGUnKSwgbmFtZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YVsnY29uc3Jj J10sIGxpc3QpIGFuZCBsZW4oZGF0YVsnY29uc3JjJ10pIDwgMToKKyAgICAgICAgICAgIHJldHVy biBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKSwgbmFtZQorCisgICAgICAgIHNxbCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisKKyAgICByZXR1cm4gc3Fs LCBuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQvX19pbml0X18ucHkKaW5kZXggYzA4ZTZlZjY1Li5mYWU5MzYyYzIgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvX19pbml0X18u cHkKQEAgLTEzLDYgKzEzLDggQEAgaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgogZnJvbSBmdW5j dG9vbHMgaW1wb3J0IHdyYXBzCiAKIGltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFzZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKKyAgICBjb25z dHJhaW50cy5leGNsdXNpb25fY29uc3RyYWludC51dGlscyBhcyBleGNsdXNpb25fdXRpbHMKIGZy b20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwg anNvbmlmeQogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KIGZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJs ZXMuXApAQCAtMjMsNiArMjUsNyBAQCBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFr ZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKIGZyb20gcGdhZG1pbi51 dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20gY29uZmlnIGltcG9ydCBQR19ERUZB VUxUX0RSSVZFUgogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBJU19QWTIKKwogIyBJZiB3ZSBh cmUgaW4gUHl0aG9uMwogaWYgbm90IElTX1BZMjoKICAgICB1bmljb2RlID0gc3RyCkBAIC0yMjgs MTYgKzIzMSwxMCBAQCBjbGFzcyBFeGNsdXNpb25Db25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci52ZXJzaW9uKQogCiAgICAgICAgICAg ICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQot ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf cGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9a3dh cmdzWyd0aWQnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAg ICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1h ID0gcm93WydzY2hlbWEnXQotICAgICAgICAgICAgICAgIHNlbGYudGFibGUgPSByb3dbJ3RhYmxl J10KKyAgICAgICAgICAgIHNjaGVtYSwgdGFibGUgPSBleGNsdXNpb25fdXRpbHMuZ2V0X3BhcmVu dChzZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gc2No ZW1hCisgICAgICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICAgICAgcmV0dXJu IGYoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICByZXR1cm4gd3JhcApAQCAtMjY1LDYwICsyNjIs MTkgQEAgY2xhc3MgRXhjbHVzaW9uQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAg ICAgICAgUmV0dXJuczoKIAogICAgICAgICAiIiIKLSAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1leGlkKQot Ci0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KKyAg ICAgICAgc3RhdHVzLCByZXMgPSBleGNsdXNpb25fdXRpbHMuZ2V0X2V4Y2x1c2lvbl9jb25zdHJh aW50cygKKyAgICAgICAgICAgIHNlbGYuY29ubiwgZGlkLCB0aWQsIGV4aWQpCiAgICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKyAgICAgICAgICAgIHJldHVybiByZXMKIAotICAgICAgICBpZiBsZW4ocmVz Wydyb3dzJ10pID09IDA6CisgICAgICAgIGlmIGxlbihyZXMpID09IDA6CiAgICAgICAgICAgICBy ZXR1cm4gZ29uZShfKAogICAgICAgICAgICAgICAgICIiIkNvdWxkIG5vdCBmaW5kIHRoZSBleGNs dXNpb24gY29uc3RyYWludCBpbiB0aGUgdGFibGUuIiIiCiAgICAgICAgICAgICApKQogCi0gICAg ICAgIHJlc3VsdCA9IHJlc1sncm93cyddWzBdCi0KLSAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAotICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9jb25z dHJhaW50X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgY2lkPWV4aWQsCi0gICAgICAgICAgICBj b2xjbnQ9cmVzdWx0Wydjb2xfY291bnQnXSkKLSAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAg Y29sdW1ucyA9IFtdCi0gICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAg ICBpZiByb3dbJ29wdGlvbnMnXSAmIDE6Ci0gICAgICAgICAgICAgICAgb3JkZXIgPSBGYWxzZQot ICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25zJ10gJiAy KSBlbHNlIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9yZGVyID0g VHJ1ZQotICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25z J10gJiAyKSBlbHNlIEZhbHNlCi0KLSAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29sdW1u Ijogcm93Wydjb2xkZWYnXS5zdHJpcCgnIicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJvcGVyX2NsYXNzIjogcm93WydvcGNuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIm9yZGVyIjogb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm51bGxzX29y ZGVyIjogbnVsbHNfb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdG9y Ijogcm93WydvcHJuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbF90eXBl Ijogcm93WydkYXRhdHlwZSddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLQotICAg ICAgICByZXN1bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAjIEFkZCBJbmNsdWRl IGRldGFpbHMgb2YgdGhlIGluZGV4IHN1cHBvcnRlZCBmb3IgUEctMTErCi0gICAgICAgIGlmIHNl bGYubWFuYWdlci52ZXJzaW9uID49IDExMDAwMDoKLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn Z2V0X2NvbnN0cmFpbnRfaW5jbHVkZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgY2lkPWV4aWQp Ci0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQot Ci0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICByZXN1bHRbJ2lu Y2x1ZGUnXSA9IFtjb2xbJ2NvbG5hbWUnXSBmb3IgY29sIGluIHJlc1sncm93cyddXQorICAgICAg ICByZXN1bHQgPSByZXMKKyAgICAgICAgaWYgZXhpZDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHJl c1swXQogCiAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAogICAgICAgICAgICAgcmVzcG9u c2U9cmVzdWx0LApAQCAtMzc0LDE2ICszMzAsOSBAQCBjbGFzcyBFeGNsdXNpb25Db25zdHJhaW50 VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnZlcnNpb24p CiAKICAgICAgICAgIyBXZSBuZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQgc2No ZW1hIG5hbWUKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkK LSAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106 Ci0gICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHJvd1snc2NoZW1hJ10KLSAgICAgICAgICAgIHNl bGYudGFibGUgPSByb3dbJ3RhYmxlJ10KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGV4Y2x1c2lv bl91dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwgdGlkKQorICAgICAgICBzZWxmLnNjaGVtYSA9 IHNjaGVtYQorICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCkBAIC00ODksMTYg KzQzOCw5IEBAIGNsYXNzIEV4Y2x1c2lvbkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CiAgICAgICAgICAgICBzZWxmLm1hbmFnZXIudmVyc2lvbikKIAogICAgICAgICAjIFdlIG5lZWQg cGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQotICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQotICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkK LQotICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgIHNlbGYuc2No ZW1hID0gcm93WydzY2hlbWEnXQotICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sndGFibGUn XQorICAgICAgICBzY2hlbWEsIHRhYmxlID0gZXhjbHVzaW9uX3V0aWxzLmdldF9wYXJlbnQoc2Vs Zi5jb25uLCB0aWQpCisgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgIHNlbGYu dGFibGUgPSB0YWJsZQogCiAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLApAQCAtNjU2LDcgKzU5OCw4IEBA IGNsYXNzIEV4Y2x1c2lvbkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAg IHRyeToKICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKICAgICAgICAg ICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCi0gICAgICAgICAgICBzcWwsIG5hbWUgPSBz ZWxmLmdldF9zcWwoZGF0YSwgZGlkLCB0aWQsIGV4aWQpCisgICAgICAgICAgICBzcWwsIG5hbWUg PSBcCisgICAgICAgICAgICAgICAgZXhjbHVzaW9uX3V0aWxzLmdldF9zcWwoc2VsZi5jb25uLCBk YXRhLCBkaWQsIHRpZCwgZXhpZCkKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNxbCwg KHN0ciwgdW5pY29kZSkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzcWwKICAgICAgICAgICAg IHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCkBAIC03ODcsNyArNzMwLDggQEAgY2xh c3MgRXhjbHVzaW9uQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgZGF0 YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50 YWJsZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcWwsIG5hbWUgPSBzZWxmLmdldF9zcWwo ZGF0YSwgZGlkLCB0aWQsIGV4aWQpCisgICAgICAgICAgICBzcWwsIG5hbWUgPSBcCisgICAgICAg ICAgICAgICAgZXhjbHVzaW9uX3V0aWxzLmdldF9zcWwoc2VsZi5jb25uLCBkYXRhLCBkaWQsIHRp ZCwgZXhpZCkKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNxbCwgKHN0ciwgdW5pY29k ZSkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzcWwKICAgICAgICAgICAgIHNxbCA9IHNxbC5z dHJpcCgnXG4nKS5zdHJpcCgnICcpCkBAIC04MDEsNTMgKzc0NSw2IEBAIGNsYXNzIEV4Y2x1c2lv bkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQogCi0gICAgZGVmIGdldF9zcWwoc2VsZiwgZGF0YSwgZGlkLCB0aWQsIGV4aWQ9 Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg c3FsIGZyb20gbW9kZWwgZGF0YS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGRhdGE6IENv bnRhaW5zIHRoZSBkYXRhIG9mIHRoZSBzZWxlY3RlZCBFeGNsdXNpb24gY29uc3RyYWludC4KLSAg ICAgICAgICB0aWQ6IFRhYmxlIElELgotICAgICAgICAgIGV4aWQ6IEV4Y2x1c2lvbiBjb25zdHJh aW50IElECi0KLSAgICAgICAgUmV0dXJuczoKLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgZXhp ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksCi0gICAgICAgICAgICAgICAgZGlkPWRpZCwKLSAgICAgICAgICAgICAgICB0aWQ9dGlkLAot ICAgICAgICAgICAgICAgIGNpZD1leGlkCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKLSAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAg ICAgICAgICAgICByZXR1cm4gZ29uZShfKCJDb3VsZCBub3QgZmluZCB0aGUgZXhjbHVzaW9uIGNv bnN0cmFpbnQuIikpCi0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KLSAg ICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ25hbWUnXQotICAgICAgICAgICAgZm9yIGFyZyBp biByZXF1aXJlZF9hcmdzOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAg ICAgICAgICAgICAgICAgICAgZGF0YVthcmddID0gb2xkX2RhdGFbYXJnXQotCi0gICAgICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Vw ZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBvX2RhdGE9b2xkX2RhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXF1aXJlZF9h cmdzID0gWydjb2x1bW5zJ10KLQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdz OgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0gICAgICAgICAgICAgICAg ZWxpZiBpc2luc3RhbmNlKGRhdGFbYXJnXSwgbGlzdCkgYW5kIGxlbihkYXRhW2FyZ10pIDwgMToK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScp Ci0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgIHJldHVybiBzcWwsIGRh dGFbJ25hbWUnXQotCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBzcWwoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBleGlkPU5vbmUpOgogICAgICAgICAiIiIKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC91dGlscy5w eSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC91dGlscy5weQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjNiYWFkOWM0NwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC91dGls cy5weQpAQCAtMCwwICsxLDIxOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE5LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiIElt cGxlbWVudHMgVXRpbGl0eSBjbGFzcyBmb3IgRXhjbHVzaW9uIENvbnN0cmFpbnQuICIiIgorCitm cm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUKK2Zyb20gZmxhc2tfYmFiZWxleCBpbXBv cnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgaW50ZXJuYWxf c2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0aW9uIGltcG9ydCBPYmplY3RH b25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitkZWYgZ2V0X3RlbXBsYXRlX3Bh dGgoZik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29y YXRvciB3aGljaCB3aWxsIHByZXBhcmUKKyAgICB0aGUgdGVtcGxhdGUgcGF0aCBiYXNlZCBvbiBk YXRhYmFzZSBzZXJ2ZXIgdmVyc2lvbi4KKyAgICAiIiIKKworICAgIEB3cmFwcyhmKQorICAgIGRl ZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9s ZCB0aGUgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgY29ubl9vYmogPSBhcmdzWzBdCisgICAg ICAgIHRlbXBsYXRlX3BhdGggPSAnJworICAgICAgICBpZiAndGVtcGxhdGVfcGF0aCcgbm90IGlu IGt3YXJnczoKKyAgICAgICAgICAgIHRlbXBsYXRlX3BhdGggPSAnZXhjbHVzaW9uX2NvbnN0cmFp bnQvc3FsLyN7MH0jJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgY29ubl9vYmoubWFuYWdlci52 ZXJzaW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVtcGxhdGVfcGF0aCA9IGt3YXJn c1sndGVtcGxhdGVfcGF0aCddCisKKyAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzLCB0 ZW1wbGF0ZV9wYXRoPXRlbXBsYXRlX3BhdGgpCisgICAgcmV0dXJuIHdyYXAKKworCitAZ2V0X3Rl bXBsYXRlX3BhdGgKK2RlZiBnZXRfcGFyZW50KGNvbm4sIHRpZCwgdGVtcGxhdGVfcGF0aD1Ob25l KToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBwYXJlbnQgb2Yg dGhlIGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAg IDpwYXJhbSB0aWQ6IFRhYmxlIG9pZAorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOgorICAgIDpy ZXR1cm46CisgICAgIiIiCisKKyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Rl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3Bh cmVudC5zcWwnXSksIHRpZD10aWQpCisgICAgc3RhdHVzLCByc2V0ID0gY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihy c2V0KQorCisgICAgc2NoZW1hID0gJycKKyAgICB0YWJsZSA9ICcnCisgICAgaWYgJ3Jvd3MnIGlu IHJzZXQgYW5kIGxlbihyc2V0Wydyb3dzJ10pID4gMDoKKyAgICAgICAgc2NoZW1hID0gcnNldFsn cm93cyddWzBdWydzY2hlbWEnXQorICAgICAgICB0YWJsZSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFi bGUnXQorCisgICAgcmV0dXJuIHNjaGVtYSwgdGFibGUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgK K2RlZiBnZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRzKGNvbm4sIGRpZCwgdGlkLCBleGlkPU5vbmUs IHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIGZldGNoIGluZm9ybWF0aW9uIG9mIHRoZQorICAgIGV4Y2x1c2lvbiBjb25zdHJhaW50KHMp IGZvciB0aGUgZ2l2ZW4gdGFibGUuCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0 CisgICAgOnBhcmFtIGRpZDogRGF0YWJhc2UgSUQKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBJRAor ICAgIDpwYXJhbSBleGlkOiBFeGNsdXNpb24gQ29uc3RyYWludCBJRAorICAgIDpwYXJhbSB0ZW1w bGF0ZV9wYXRoOiBUZW1wbGF0ZSBQYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKyAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgY2lkPWV4 aWQpCisKKyAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICByZXR1cm4gc3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgZm9yIGV4IGluIHJlc3VsdFsncm93cyddOgorICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWV4WydvaWQnXSwgY29s Y250PWV4Wydjb2xfY291bnQnXSkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0 ZV9kaWN0KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBz dGF0dXMsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgY29s dW1ucyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICBp ZiByb3dbJ29wdGlvbnMnXSAmIDE6CisgICAgICAgICAgICAgICAgb3JkZXIgPSBGYWxzZQorICAg ICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25zJ10gJiAyKSBl bHNlIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9yZGVyID0gVHJ1 ZQorICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25zJ10g JiAyKSBlbHNlIEZhbHNlCisKKyAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29sdW1uIjog cm93Wydjb2xkZWYnXS5zdHJpcCgnIicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJv cGVyX2NsYXNzIjogcm93WydvcGNuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im9yZGVyIjogb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm51bGxzX29yZGVy IjogbnVsbHNfb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdG9yIjog cm93WydvcHJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbF90eXBlIjog cm93WydkYXRhdHlwZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAg ICBleFsnY29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICMgSU5DTFVERSBjbGF1c2UgaW4g aW5kZXggaXMgc3VwcG9ydGVkIGZyb20gUEctMTErCisgICAgICAgIGlmIGNvbm4ubWFuYWdlci52 ZXJzaW9uID49IDExMDAwMDoKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9jb25zdHJhaW50X2luY2x1ZGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNpZD1leFsnb2lkJ10pCisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgZXhbJ2luY2x1ZGUnXSA9IFtjb2xbJ2NvbG5hbWUnXSBm b3IgY29sIGluIHJlc1sncm93cyddXQorCisgICAgcmV0dXJuIFRydWUsIHJlc3VsdFsncm93cydd CisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2V4Y2x1c2lvbl9jb25zdHJhaW50X3Nx bChjb25uLCBkaWQsIHRpZCwgZGF0YSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHNxbCBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnRz LgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSBkaWQ6IERh dGFiYXNlIElECisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFyYW0gZGF0YTogRGF0 YQorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBUZW1wbGF0ZSBQYXRoCisgICAgOnJldHVybjoK KyAgICAiIiIKKworICAgIHNxbCA9IFtdCisgICAgIyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGlu IGRhdGEKKyAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2Uv ZGVsZXRlCisgICAgaWYgJ2V4Y2x1ZGVfY29uc3RyYWludCcgaW4gZGF0YToKKyAgICAgICAgY29u c3RyYWludCA9IGRhdGFbJ2V4Y2x1ZGVfY29uc3RyYWludCddCisgICAgICAgICMgSWYgY29uc3Ry YWludChzKSBpcy9hcmUgZGVsZXRlZAorICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWlu dDoKKyAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAgICAg ICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgY1sn dGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AK KyAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVfcGF0 aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49 Y29ubikuc3RyaXAoIlxuIikKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgJ2NoYW5n ZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydjaGFu Z2VkJ106CisgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAg IG1vZGlmaWVkX3NxbCwgbmFtZSA9IGdldF9zcWwoY29ubiwgYywgZGlkLCB0aWQsIGNbJ29pZCdd KQorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQobW9kaWZpZWRfc3FsLnN0cmlwKCdcbicpKQor CisgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2FkZGVkJ106CisgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRh WydzY2hlbWEnXQorICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKwor ICAgICAgICAgICAgICAgIGFkZF9zcWwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGMsIGRpZCwgdGlk KQorICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoYWRkX3NxbC5zdHJpcCgiXG4iKSkKKworICAg IGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAgIyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmds ZSBzdHJpbmcKKyAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKKyAgICBlbHNlOgorICAg ICAgICByZXR1cm4gTm9uZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9zcWwoY29u biwgZGF0YSwgZGlkLCB0aWQsIGV4aWQ9Tm9uZSwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAi IiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YS4K KyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gZGF0YTogZGF0 YQorICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElECisgICAgOnBhcmFtIHRpZDogVGFibGUgaWQK KyAgICA6cGFyYW0gZXhpZDogRXhjbHVzaW9uIENvbnN0cmFpbnQgSUQKKyAgICA6cGFyYW0gdGVt cGxhdGVfcGF0aDogVGVtcGxhdGUgUGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgbmFt ZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIE5vbmUKKyAgICBpZiBleGlk IGlzIG5vdCBOb25lOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Rl bXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1leGlkKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbihyZXMpCisKKyAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9 PSAwOgorICAgICAgICAgICAgcmFpc2UgT2JqZWN0R29uZSgKKyAgICAgICAgICAgICAgICBfKCdD b3VsZCBub3QgZmluZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW4gdGhlIHRhYmxlLicpKQor CisgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgaWYgJ25hbWUnIG5v dCBpbiBkYXRhOgorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWydu YW1lJ10KKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEpCisgICAgZWxzZToKKyAgICAgICAgaWYgJ2NvbHVtbnMn IG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21w bGV0ZScpLCBuYW1lCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhWydjb2x1bW5zJ10sIGxp c3QpIGFuZCBsZW4oZGF0YVsnY29sdW1ucyddKSA8IDE6CisgICAgICAgICAgICByZXR1cm4gXygn LS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJyksIG5hbWUKKworICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPWNvbm4pCisKKyAgICByZXR1 cm4gc3FsLCBuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9r ZXkvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvX19pbml0 X18ucHkKaW5kZXggMjEwNWZlMjEwLi42NmZkNmJlNWYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9mb3JlaWduX2tleS9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3Ry YWludHMvZm9yZWlnbl9rZXkvX19pbml0X18ucHkKQEAgLTEzLDYgKzEzLDggQEAgaW1wb3J0IHNp bXBsZWpzb24gYXMganNvbgogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKIGltcG9ydCBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFz ZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnNjaGVtYXMudGFibGVzLlwKKyAgICBjb25zdHJhaW50cy5mb3JlaWduX2tleS51dGlscyBhcyBm a2V5X3V0aWxzCiBmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2VfcmVzcG9u c2UsIHJlcXVlc3QsIGpzb25pZnkKIGZyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dCBh cyBfCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnNjaGVtYXMudGFibGVzLlwKQEAgLTE3Niw5ICsxNzgsNiBAQCBjbGFzcyBGb3JlaWduS2V5Q29u c3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1 c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZAogICAgICAgZm9yZWln biBrZXkuCiAKLSAgICAqIGdldF9zcWwoKQotICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2Vu ZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YS4KLQogICAgICogc3FsKCk6CiAgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgdG8gc2hvdyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhl CiAgICAgICBzZWxlY3RlZCBmb3JlaWduIGtleS4KQEAgLTIzNywxNiArMjM2LDkgQEAgY2xhc3Mg Rm9yZWlnbktleUNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAg ICAgc2VsZi5tYW5hZ2VyLnZlcnNpb24pCiAKICAgICAgICAgICAgICMgV2UgbmVlZCBwYXJlbnQn cyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBuYW1lCi0gICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1rd2FyZ3NbJ3RpZCddKQotICAgICAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0 Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3NjaGVtYSddCi0g ICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sndGFibGUnXQorICAgICAgICAgICAgc2No ZW1hLCB0YWJsZSA9IGZrZXlfdXRpbHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sIGt3YXJnc1sndGlk J10pCisgICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHNjaGVtYQorICAgICAgICAgICAgc2VsZi50 YWJsZSA9IHRhYmxlCiAKICAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKICAg ICAgICAgcmV0dXJuIHdyYXAKQEAgLTI3NCw1MSArMjY2LDE4IEBAIGNsYXNzIEZvcmVpZ25LZXlD b25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBSZXR1cm5zOgogCiAgICAg ICAgICIiIgotICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwgY2lkPWZraWQpCi0KLSAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQorICAgICAgICBzdGF0dXMsIHJlcyA9IGZrZXlfdXRpbHMu Z2V0X2ZvcmVpZ25fa2V5cyhzZWxmLmNvbm4sIHRpZCwgZmtpZCkKICAgICAgICAgaWYgbm90IHN0 YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgICAgIGlmIGxlbihyZXNbJ3Jvd3Mn XSkgPT0gMDoKKyAgICAgICAgaWYgbGVuKHJlcykgPT0gMDoKICAgICAgICAgICAgIHJldHVybiBn b25lKF8oCiAgICAgICAgICAgICAgICAgIiIiQ291bGQgbm90IGZpbmQgdGhlIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgaW4gdGhlIHRhYmxlLiIiIgogICAgICAgICAgICAgKSkKIAotICAgICAgICBy ZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQotCi0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr ZXlzPXppcChyZXN1bHRbJ2NvbmZrZXknXSwgcmVzdWx0Wydjb25rZXknXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25mcmVsaWQ9cmVzdWx0Wydjb25mcmVsaWQnXSkKLQotICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAg IGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKLQotICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgY29scyA9IFtd Ci0gICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICBjb2x1bW5zLmFw cGVuZCh7ImxvY2FsX2NvbHVtbiI6IHJvd1snY29uYXR0bmFtZSddLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJyZWZlcmVuY2VzIjogcmVzdWx0Wydjb25mcmVsaWQnXSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlZCI6IHJvd1snY29uZmF0dG5hbWUnXX0pCi0g ICAgICAgICAgICBjb2xzLmFwcGVuZChyb3dbJ2NvbmF0dG5hbWUnXSkKLQotICAgICAgICByZXN1 bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQorICAgICAgICByZXN1bHQgPSByZXMKICAgICAgICAg aWYgZmtpZDoKLSAgICAgICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWxmLnNlYXJjaF9jb3Zlcmlu Z2luZGV4KHRpZCwgY29scykKLSAgICAgICAgICAgIHJlc3VsdFsnY292ZXJpbmdpbmRleCddID0g Y292ZXJpbmdpbmRleAotICAgICAgICAgICAgaWYgY292ZXJpbmdpbmRleDoKLSAgICAgICAgICAg ICAgICByZXN1bHRbJ2F1dG9pbmRleCddID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJlc3VsdFsn aGFzaW5kZXgnXSA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVz dWx0WydhdXRvaW5kZXgnXSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0WydoYXNpbmRl eCddID0gRmFsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc1swXQogCiAgICAgICAgIHJldHVy biBhamF4X3Jlc3BvbnNlKAogICAgICAgICAgICAgcmVzcG9uc2U9cmVzdWx0LApAQCAtMzczLDE2 ICszMzIsOSBAQCBjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgICAgIHNlbGYubWFuYWdlci52ZXJzaW9uKQogCiAgICAgICAgICMgV2UgbmVl ZCBwYXJlbnQncyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBuYW1lCi0gICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0gICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVz OgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQotCi0gICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgc2VsZi5z Y2hlbWEgPSByb3dbJ3NjaGVtYSddCi0gICAgICAgICAgICBzZWxmLnRhYmxlID0gcm93Wyd0YWJs ZSddCisgICAgICAgIHNjaGVtYSwgdGFibGUgPSBma2V5X3V0aWxzLmdldF9wYXJlbnQoc2VsZi5j b25uLCB0aWQpCisgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgIHNlbGYudGFi bGUgPSB0YWJsZQogCiAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdwcm9wZXJ0aWVzLnNxbCddKSwKQEAgLTQ4OCwxNiArNDQwLDEwIEBAIGNsYXNzIEZvcmVpZ25L ZXlDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgc2VsZi5tYW5h Z2VyLnZlcnNpb24pCiAKICAgICAgICAgIyBXZSBuZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUg bmFtZSBhbmQgc2NoZW1hIG5hbWUKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGlkPXRpZCkKLSAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRh cnJheShTUUwpCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisgICAgICAgIHNjaGVtYSwgdGFibGUg PSBma2V5X3V0aWxzLmdldF9wYXJlbnQoc2VsZi5jb25uLCB0aWQpCisgICAgICAgIHNlbGYuc2No ZW1hID0gc2NoZW1hCisgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogCi0gICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3NjaGVt YSddCi0gICAgICAgICAgICBzZWxmLnRhYmxlID0gcm93Wyd0YWJsZSddCiAgICAgICAgIHJlcyA9 IFtdCiAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5z cWwnXSksCkBAIC01NzUsMTUgKzUyMSwxMSBAQCBjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZp ZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVt YQogICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQogICAgICAgICB0cnk6Ci0gICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJl bnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1kYXRhWydj b2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgot ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQotCi0gICAgICAgICAgICBkYXRhWydyZW1vdGVfc2NoZW1hJ10gPSByZXNbJ3Jvd3MnXVswXVsn c2NoZW1hJ10KLSAgICAgICAgICAgIGRhdGFbJ3JlbW90ZV90YWJsZSddID0gcmVzWydyb3dzJ11b MF1bJ3RhYmxlJ10KKyAgICAgICAgICAgICMgR2V0IHRoZSBwYXJlbnQgc2NoZW1hIGFuZCB0YWJs ZS4KKyAgICAgICAgICAgIHNjaGVtYSwgdGFibGUgPSBma2V5X3V0aWxzLmdldF9wYXJlbnQoCisg ICAgICAgICAgICAgICAgc2VsZi5jb25uLCBkYXRhWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMn XSkKKyAgICAgICAgICAgIGRhdGFbJ3JlbW90ZV9zY2hlbWEnXSA9IHNjaGVtYQorICAgICAgICAg ICAgZGF0YVsncmVtb3RlX3RhYmxlJ10gPSB0YWJsZQogCiAgICAgICAgICAgICBpZiAnbmFtZScg bm90IGluIGRhdGEgb3IgZGF0YVsnbmFtZSddID09ICIiOgogICAgICAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgKQEAgLTY5MCw3ICs2MzIsNyBAQCBjbGFzcyBGb3JlaWduS2V5Q29u c3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAg ZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9 IHNlbGYudGFibGUKLSAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkYXRhLCB0 aWQsIGZraWQpCisgICAgICAgICAgICBzcWwsIG5hbWUgPSBma2V5X3V0aWxzLmdldF9zcWwoc2Vs Zi5jb25uLCBkYXRhLCB0aWQsIGZraWQpCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShz cWwsIChzdHIsIHVuaWNvZGUpKToKICAgICAgICAgICAgICAgICByZXR1cm4gc3FsCiAgICAgICAg ICAgICBzcWwgPSBzcWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQpAQCAtODI2LDcgKzc2OCw3IEBA IGNsYXNzIEZvcmVpZ25LZXlDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAg ICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCiAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBz ZWxmLnRhYmxlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0 X3NxbChkYXRhLCB0aWQsIGZraWQpCisgICAgICAgICAgICBzcWwsIG5hbWUgPSBma2V5X3V0aWxz LmdldF9zcWwoc2VsZi5jb25uLCBkYXRhLCB0aWQsIGZraWQpCiAgICAgICAgICAgICBpZiBub3Qg aXNpbnN0YW5jZShzcWwsIChzdHIsIHVuaWNvZGUpKToKICAgICAgICAgICAgICAgICByZXR1cm4g c3FsCiAgICAgICAgICAgICBzcWwgPSBzcWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQpAQCAtODQw LDk2ICs3ODIsNiBAQCBjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVW aWV3KToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBkZWYgZ2V0X3Nx bChzZWxmLCBkYXRhLCB0aWQsIGZraWQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlz IGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YS4KLQotICAgICAgICBB cmdzOgotICAgICAgICAgIGRhdGE6IENvbnRhaW5zIHRoZSBkYXRhIG9mIHRoZSBzZWxlY3RlZCBm b3JlaWduIGtleSBjb25zdHJhaW50LgotICAgICAgICAgIHRpZDogVGFibGUgSUQuCi0gICAgICAg ICAgZmtpZDogRm9yZWlnbiBrZXkgY29uc3RyYWludCBJRAotCi0gICAgICAgIFJldHVybnM6Ci0K LSAgICAgICAgIiIiCi0gICAgICAgIGlmIGZraWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgIHRpZD10aWQs IGNpZD1ma2lkKQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgICAgICBpZiBs ZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoXygiIiJD b3VsZCBub3QgZmluZCB0aGUgZm9yZWlnbiBrZXkuIiIiKSkKLQotICAgICAgICAgICAgb2xkX2Rh dGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsnbmFtZSdd Ci0gICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAg aWYgYXJnIG5vdCBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10gPSBvbGRf ZGF0YVthcmddCi0KLSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKLQotICAgICAgICAgICAg aWYgJ2F1dG9pbmRleCcgaW4gZGF0YSBhbmQgZGF0YVsnYXV0b2luZGV4J10gYW5kIFwKLSAgICAg ICAgICAgICAgICAgICAgKCdjb3ZlcmluZ2luZGV4JyBpbiBkYXRhIGFuZCBkYXRhWydjb3Zlcmlu Z2luZGV4J10gIT0gJycpOgotCi0gICAgICAgICAgICAgICAgY29sX3NxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LAotICAgICAgICAgICAgICAgICAgICBrZXlzPXppcChvbGRfZGF0YVsnY29uZmtleSddLCBvbGRf ZGF0YVsnY29ua2V5J10pLAotICAgICAgICAgICAgICAgICAgICBjb25mcmVsaWQ9b2xkX2RhdGFb J2NvbmZyZWxpZCddCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KGNvbF9zcWwpCi0KLSAgICAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBbXQot ICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICAgICAg ICAgIGNvbHVtbnMuYXBwZW5kKHsibG9jYWxfY29sdW1uIjogcm93Wydjb25hdHRuYW1lJ10sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlcyI6IG9sZF9kYXRh Wydjb25mcmVsaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZl cmVuY2VkIjogcm93Wydjb25mYXR0bmFtZSddfSkKLQotICAgICAgICAgICAgICAgIGRhdGFbJ2Nv bHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAgICAgICAgIHNxbCArPSByZW5kZXJfdGVtcGxh dGUoCi0gICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdj cmVhdGVfaW5kZXguc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49 c2VsZi5jb25uKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsn Y29sdW1ucyddCi0KLSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKLSAgICAg ICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy biBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotICAgICAgICAgICAgICAgIGVsaWYgaXNp bnN0YW5jZShkYXRhW2FyZ10sIGxpc3QpIGFuZCBsZW4oZGF0YVthcmddKSA8IDE6Ci0gICAgICAg ICAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAg ICAgICAgICBpZiBkYXRhWydhdXRvaW5kZXgnXSBhbmQgXAotICAgICAgICAgICAgICAgICgnY292 ZXJpbmdpbmRleCcgbm90IGluIGRhdGEgb3IKLSAgICAgICAgICAgICAgICAgZGF0YVsnY292ZXJp bmdpbmRleCddID09ICcnKToKLSAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlv biBpbmNvbXBsZXRlJykKLQotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9ZGF0YVsnY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCi0gICAgICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAgICBkYXRhWydyZW1vdGVfc2No ZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICBkYXRhWydyZW1v dGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQotCi0gICAgICAgICAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKLQotICAgICAgICAgICAgaWYgZGF0YVsnYXV0b2luZGV4J106Ci0gICAgICAg ICAgICAgICAgc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZV9pbmRleC5zcWwnXSksCi0gICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0gICAgICAgIHJldHVybiBz cWwsIGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10K LQogICAgIEBjaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZCwgZmtpZD1Ob25lKToKICAgICAgICAgIiIiCkBAIC05ODAsMTYgKzgzMiwx MSBAQCBjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKIAog ICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCiAKLSAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPWRhdGFbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQot ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICBkYXRhWydyZW1vdGVfc2NoZW1hJ10gPSBy ZXNbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KLSAgICAgICAgZGF0YVsncmVtb3RlX3RhYmxlJ10gPSBy ZXNbJ3Jvd3MnXVswXVsndGFibGUnXQorICAgICAgICAjIEdldCB0aGUgcGFyZW50IHNjaGVtYSBh bmQgdGFibGUuCisgICAgICAgIHNjaGVtYSwgdGFibGUgPSBma2V5X3V0aWxzLmdldF9wYXJlbnQo c2VsZi5jb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQorICAgICAgICBkYXRhWydyZW1vdGVf c2NoZW1hJ10gPSBzY2hlbWEKKyAgICAgICAgZGF0YVsncmVtb3RlX3RhYmxlJ10gPSB0YWJsZQog CiAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEpCkBAIC0xMDg3LDQ2 ICs5MzQsNiBAQCBjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3 KToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBkZWYgc2VhcmNoX2Nv dmVyaW5naW5kZXgoc2VsZiwgdGlkLCBjb2xzKToKLSAgICAgICAgIiIiCi0KLSAgICAgICAgQXJn czoKLSAgICAgICAgICB0aWQ6IFRhYmxlIGlkCi0gICAgICAgICAgY29sczogY29sdW1uIGxpc3QK LQotICAgICAgICBSZXR1cm5zOgotCi0gICAgICAgICIiIgotCi0gICAgICAgIGNvbHMgPSBzZXQo Y29scykKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9j b25zdHJhaW50cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk KQotICAgICAgICBzdGF0dXMsIGNvbnN0cmFpbnRzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bihjb25zdHJhaW50cykKLQotICAgICAgICBmb3IgY29zdHJudCBpbiBjb25zdHJhaW50c1sncm93 cyddOgotCi0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9jb2xzLnNxbCddKSwKLSAgICAg ICAgICAgICAgICBjaWQ9Y29zdHJudFsnb2lkJ10sCi0gICAgICAgICAgICAgICAgY29sY250PWNv c3RybnRbJ2NvbF9jb3VudCddKQotICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQotCi0g ICAgICAgICAgICBpbmRleGNvbHMgPSBzZXQoKQotICAgICAgICAgICAgZm9yIHIgaW4gcmVzdFsn cm93cyddOgotICAgICAgICAgICAgICAgIGluZGV4Y29scy5hZGQoclsnY29sdW1uJ10uc3RyaXAo JyInKSkKLQotICAgICAgICAgICAgaWYgbGVuKGNvbHMgLSBpbmRleGNvbHMpID09IGxlbihpbmRl eGNvbHMgLSBjb2xzKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBjb3N0cm50WyJpZHhu YW1lIl0KLQotICAgICAgICByZXR1cm4gTm9uZQotCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgog ICAgIGRlZiBnZXRfY292ZXJpbmdpbmRleChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9 Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMTE0Niw3ICs5NTMsNyBAQCBjbGFzcyBGb3JlaWduS2V5 Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgdHJ5OgogICAgICAgICAg ICAgaWYgZGF0YSBhbmQgJ2NvbHMnIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgY29scyA9IHNl dChqc29uLmxvYWRzKGRhdGFbJ2NvbHMnXSwgZW5jb2Rpbmc9J3V0Zi04JykpCi0gICAgICAgICAg ICAgICAgaW5kZXggPSBzZWxmLnNlYXJjaF9jb3ZlcmluZ2luZGV4KHRpZCwgY29scykKKyAgICAg ICAgICAgICAgICBpbmRleCA9IGZrZXlfdXRpbHMuc2VhcmNoX2NvdmVyaW5naW5kZXgoc2VsZi5j b25uLCB0aWQsIGNvbHMpCiAKICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CiAgICAgICAgICAgICAgICAgZGF0YT1pbmRleCwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25z dHJhaW50cy9mb3JlaWduX2tleS91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3Jl aWduX2tleS91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjUz ZGFiOTJhYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWdu X2tleS91dGlscy5weQpAQCAtMCwwICsxLDI5MiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIiIiIEltcGxlbWVudHMgVXRpbGl0eSBjbGFzcyBmb3IgRm9yZWlnbiBLZXlzLiAiIiIKKwor ZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlCitmcm9tIGZsYXNrX2JhYmVsZXggaW1w b3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFs X3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQgT2JqZWN0 R29uZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKworZGVmIGdldF90ZW1wbGF0ZV9w YXRoKGYpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNv cmF0b3Igd2hpY2ggd2lsbCBwcmVwYXJlCisgICAgdGhlIHRlbXBsYXRlIHBhdGggYmFzZWQgb24g ZGF0YWJhc2Ugc2VydmVyIHZlcnNpb24uCisgICAgIiIiCisKKyAgICBAd3JhcHMoZikKKyAgICBk ZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhv bGQgdGhlIGNvbm5lY3Rpb24gb2JqZWN0CisgICAgICAgIGNvbm5fb2JqID0gYXJnc1swXQorICAg ICAgICB0ZW1wbGF0ZV9wYXRoID0gJycKKyAgICAgICAgaWYgJ3RlbXBsYXRlX3BhdGgnIG5vdCBp biBrd2FyZ3M6CisgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fa2V5L3NxbC8j ezB9IycuZm9ybWF0KAorICAgICAgICAgICAgICAgIGNvbm5fb2JqLm1hbmFnZXIudmVyc2lvbikK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlbXBsYXRlX3BhdGggPSBrd2FyZ3NbJ3RlbXBs YXRlX3BhdGgnXQorCisgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncywgdGVtcGxhdGVf cGF0aD10ZW1wbGF0ZV9wYXRoKQorICAgIHJldHVybiB3cmFwCisKKworQGdldF90ZW1wbGF0ZV9w YXRoCitkZWYgZ2V0X2ZvcmVpZ25fa2V5cyhjb25uLCB0aWQsIGZraWQ9Tm9uZSwgdGVtcGxhdGVf cGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZmV0Y2gg aW5mb3JtYXRpb24gb2YgdGhlCisgICAgZm9yZWlnbiBrZXkocykgZm9yIHRoZSBnaXZlbiB0YWJs ZS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBU YWJsZSBJRAorICAgIDpwYXJhbSBma2lkOiBGb3JlaWduIEtleSBJRAorICAgIDpwYXJhbSB0ZW1w bGF0ZV9wYXRoOiBUZW1wbGF0ZSBQYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgW3RlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwgdGlkPXRpZCwgY2lkPWZraWQpCisKKyAgICBzdGF0dXMsIHJlc3Vs dCA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICBy ZXR1cm4gc3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQorCisg ICAgZm9yIGZrIGluIHJlc3VsdFsncm93cyddOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl eXM9emlwKGZrWydjb25ma2V5J10sIGZrWydjb25rZXknXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25mcmVsaWQ9ZmtbJ2NvbmZyZWxpZCddKQorCisgICAgICAgIHN0YXR1cywg cmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIHN0YXR1cywgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgY29scyA9IFtdCisgICAgICAgIGZv ciByb3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImxvY2Fs X2NvbHVtbiI6IHJvd1snY29uYXR0bmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJyZWZlcmVuY2VzIjogZmtbJ2NvbmZyZWxpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJyZWZlcmVuY2VkIjogcm93Wydjb25mYXR0bmFtZSddfSkKKyAgICAgICAgICAgIGNvbHMu YXBwZW5kKHJvd1snY29uYXR0bmFtZSddKQorCisgICAgICAgIGZrWydjb2x1bW5zJ10gPSBjb2x1 bW5zCisKKyAgICAgICAgaWYgbm90IGZraWQ6CisgICAgICAgICAgICBzY2hlbWEsIHRhYmxlID0g Z2V0X3BhcmVudChjb25uLCBma1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCisgICAgICAg ICAgICBma1sncmVtb3RlX3NjaGVtYSddID0gc2NoZW1hCisgICAgICAgICAgICBma1sncmVtb3Rl X3RhYmxlJ10gPSB0YWJsZQorCisgICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWFyY2hfY292ZXJp bmdpbmRleChjb25uLCB0aWQsIGNvbHMpCisgICAgICAgIGZrWydjb3ZlcmluZ2luZGV4J10gPSBj b3ZlcmluZ2luZGV4CisgICAgICAgIGlmIGNvdmVyaW5naW5kZXg6CisgICAgICAgICAgICBma1sn YXV0b2luZGV4J10gPSBUcnVlCisgICAgICAgICAgICBma1snaGFzaW5kZXgnXSA9IFRydWUKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIGZrWydhdXRvaW5kZXgnXSA9IEZhbHNlCisgICAgICAg ICAgICBma1snaGFzaW5kZXgnXSA9IEZhbHNlCisKKyAgICByZXR1cm4gVHJ1ZSwgcmVzdWx0Wydy b3dzJ10KKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBzZWFyY2hfY292ZXJpbmdpbmRleChj b25uLCB0aWQsIGNvbHMsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHNlYXJjaCB0aGUgY292ZXJpbmcgaW5kZXgKKyAgICA6cGFyYW0g Y29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBpZAorICAgIDpw YXJhbSBjb2xzOiBDb2x1bW5zCisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IFRlbXBsYXRlIFBh dGgKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgY29scyA9IHNldChjb2xzKQorICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludHMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorICAgIHN0YXR1cywgY29uc3RyYWludHMgPSBj b25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKGNvbnN0cmFpbnRzKQorCisgICAgZm9yIGNvbnN0cmFpbnQgaW4gY29uc3RyYWlu dHNbJ3Jvd3MnXToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdnZXRfY29scy5zcWwnXSksCisgICAgICAgICAgICBj aWQ9Y29uc3RyYWludFsnb2lkJ10sCisgICAgICAgICAgICBjb2xjbnQ9Y29uc3RyYWludFsnY29s X2NvdW50J10pCisgICAgICAgIHN0YXR1cywgcmVzdCA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJl c3QpCisKKyAgICAgICAgaW5kZXhfY29scyA9IHNldCgpCisgICAgICAgIGZvciByIGluIHJlc3Rb J3Jvd3MnXToKKyAgICAgICAgICAgIGluZGV4X2NvbHMuYWRkKHJbJ2NvbHVtbiddLnN0cmlwKCci JykpCisKKyAgICAgICAgaWYgbGVuKGNvbHMgLSBpbmRleF9jb2xzKSA9PSBsZW4oaW5kZXhfY29s cyAtIGNvbHMpID09IDA6CisgICAgICAgICAgICByZXR1cm4gY29uc3RyYWludFsiaWR4bmFtZSJd CisKKyAgICByZXR1cm4gTm9uZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9wYXJl bnQoY29ubiwgdGlkLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCByZXR1cm4gdGhlIHBhcmVudCBvZiB0aGUgZ2l2ZW4gdGFibGUuCisgICAgOnBh cmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIHRpZDogVGFibGUgb2lkCisg ICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6CisgICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwgdGlkPXRpZCkKKyAg ICBzdGF0dXMsIHJzZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJzZXQpCisKKyAgICBzY2hlbWEgPSAnJwor ICAgIHRhYmxlID0gJycKKyAgICBpZiAncm93cycgaW4gcnNldCBhbmQgbGVuKHJzZXRbJ3Jvd3Mn XSkgPiAwOgorICAgICAgICBzY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCisgICAg ICAgIHRhYmxlID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisKKyAgICByZXR1cm4gc2NoZW1h LCB0YWJsZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9mb3JlaWduX2tleV9zcWwo Y29ubiwgdGlkLCBkYXRhLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCByZXR1cm4gc3FsIGZvciBmb3JlaWduIGtleXMuCisgICAgOnBhcmFtIGNv bm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIHRpZDogVGFibGUgSUQKKyAgICA6cGFy YW0gZGF0YTogRGF0YQorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBUZW1wbGF0ZSBQYXRoCisg ICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIHNxbCA9IFtdCisgICAgIyBDaGVjayBpZiBjb25z dHJhaW50IGlzIGluIGRhdGEKKyAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9y IGFkZC9jaGFuZ2UvZGVsZXRlCisgICAgaWYgJ2ZvcmVpZ25fa2V5JyBpbiBkYXRhOgorICAgICAg ICBjb25zdHJhaW50ID0gZGF0YVsnZm9yZWlnbl9rZXknXQorICAgICAgICAjIElmIGNvbnN0cmFp bnQocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6 CisgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106CisgICAgICAgICAg ICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgIGNbJ3Rh YmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCisg ICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWMsIGNvbm49Y29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICBm b3IgYyBpbiBjb25zdHJhaW50WydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgY1snc2NoZW1h J10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWydu YW1lJ10KKworICAgICAgICAgICAgICAgIG1vZGlmaWVkX3NxbCwgbmFtZSA9IGdldF9zcWwoY29u biwgYywgdGlkLCBjWydvaWQnXSkKKyAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKG1vZGlmaWVk X3NxbC5zdHJpcCgiXG4iKSkKKworICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6Cisg ICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgorICAgICAgICAgICAgICAg IGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICBjWyd0YWJsZSdd ID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICBhZGRfc3FsLCBuYW1lID0gZ2V0X3Nx bChjb25uLCBjLCB0aWQpCisgICAgICAgICAgICAgICAgc3FsLmFwcGVuZChhZGRfc3FsLnN0cmlw KCJcbiIpKQorCisgICAgaWYgbGVuKHNxbCkgPiAwOgorICAgICAgICAjIEpvaW4gYWxsIHRoZSBz cWwocykgYXMgc2luZ2xlIHN0cmluZworICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQor ICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitk ZWYgZ2V0X3NxbChjb25uLCBkYXRhLCB0aWQsIGZraWQ9Tm9uZSwgdGVtcGxhdGVfcGF0aD1Ob25l KToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9k ZWwgZGF0YS4KKyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0g ZGF0YTogZGF0YQorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIGlkCisgICAgOnBhcmFtIGZraWQ6IEZv cmVpZ24gS2V5CisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IFRlbXBsYXRlIFBhdGgKKyAgICA6 cmV0dXJuOgorICAgICIiIgorICAgIG5hbWUgPSBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRh dGEgZWxzZSBOb25lCisgICAgaWYgZmtpZCBpcyBub3QgTm9uZToKKyAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9ZmtpZCkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVzKQorCisgICAgICAgIGlmIGxl bihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoCisgICAg ICAgICAgICAgICAgXygnQ291bGQgbm90IGZpbmQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg aW4gdGhlIHRhYmxlLicpKQorCisgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAg ICAgICAgaWYgJ25hbWUnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ25h bWUnXSA9IG9sZF9kYXRhWyduYW1lJ10KKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEpCisKKyAgICAgICAgaWYg J2F1dG9pbmRleCcgaW4gZGF0YSBhbmQgZGF0YVsnYXV0b2luZGV4J10gYW5kIFwKKyAgICAgICAg ICAgICAgICAoJ2NvdmVyaW5naW5kZXgnIGluIGRhdGEgYW5kIGRhdGFbJ2NvdmVyaW5naW5kZXgn XSAhPSAnJyk6CisgICAgICAgICAgICBjb2xfc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRfY29scy5z cWwnXSksCisgICAgICAgICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICBrZXlzPXpp cChvbGRfZGF0YVsnY29uZmtleSddLCBvbGRfZGF0YVsnY29ua2V5J10pLAorICAgICAgICAgICAg ICAgIGNvbmZyZWxpZD1vbGRfZGF0YVsnY29uZnJlbGlkJ10KKyAgICAgICAgICAgICkKKworICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChjb2xfc3FsKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24ocmVz KQorCisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGZvciByb3cgaW4gcmVz Wydyb3dzJ106CisgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJsb2NhbF9jb2x1bW4i OiByb3dbJ2NvbmF0dG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJl ZmVyZW5jZXMiOiBvbGRfZGF0YVsnY29uZnJlbGlkJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJyZWZlcmVuY2VkIjogcm93Wydjb25mYXR0bmFtZSddfSkKKworICAgICAgICAg ICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICAgICBzcWwgKz0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnY3Jl YXRlX2luZGV4LnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubikK KyAgICBlbHNlOgorICAgICAgICBpZiAnY29sdW1ucycgbm90IGluIGRhdGE6CisgICAgICAgICAg ICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJyksIG5hbWUKKyAgICAgICAgZWxp ZiBpc2luc3RhbmNlKGRhdGFbJ2NvbHVtbnMnXSwgbGlzdCkgYW5kIGxlbihkYXRhWydjb2x1bW5z J10pIDwgMToKKyAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0aW9uIGluY29tcGxldGUn KSwgbmFtZQorCisgICAgICAgIGlmIGRhdGFbJ2F1dG9pbmRleCddIGFuZCBcCisgICAgICAgICAg ICAgICAgKCdjb3ZlcmluZ2luZGV4JyBub3QgaW4gZGF0YSBvciBkYXRhWydjb3ZlcmluZ2luZGV4 J10gPT0gJycpOgorICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0 ZScpLCBuYW1lCisKKyAgICAgICAgIyBHZXQgdGhlIHBhcmVudCBzY2hlbWEgYW5kIHRhYmxlLgor ICAgICAgICBzY2hlbWEsIHRhYmxlID0gZ2V0X3BhcmVudChjb25uLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKyAg ICAgICAgZGF0YVsncmVtb3RlX3NjaGVtYSddID0gc2NoZW1hCisgICAgICAgIGRhdGFbJ3JlbW90 ZV90YWJsZSddID0gdGFibGUKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBjb25uPWNvbm4pCisKKyAgICAgICAgaWYgZGF0YVsnYXV0b2lu ZGV4J106CisgICAgICAgICAgICBzcWwgKz0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlX2luZGV4LnNxbCddKSwKKyAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49Y29ubikKKworICAgIHJldHVybiBzcWwsIG5hbWUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L19faW5p dF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvX19pbml0X18u cHkKaW5kZXggYzQ1ZjI0M2MwLi45MzI2M2ExMDEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25z dHJhaW50cy9pbmRleF9jb25zdHJhaW50L19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25z dHJhaW50cy9pbmRleF9jb25zdHJhaW50L19faW5pdF9fLnB5CkBAIC0xMyw2ICsxMyw4IEBAIGlt cG9ydCBzaW1wbGVqc29uIGFzIGpzb24KIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCiBp bXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMg ZGF0YWJhc2UKK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5cCisgICAgY29uc3RyYWludHMuaW5kZXhfY29uc3RyYWlu dC51dGlscyBhcyBpZHhjb25zX3V0aWxzCiBmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxh dGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QsIGpzb25pZnkKIGZyb20gZmxhc2tfYmFiZWxleCBp bXBvcnQgZ2V0dGV4dCBhcyBfCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKQEAgLTI0NywxNiArMjQ5LDEwIEBAIGNs YXNzIEluZGV4Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAg ICAuZm9ybWF0KHNlbGYubWFuYWdlci52ZXJzaW9uKQogCiAgICAgICAgICAgICAjIFdlIG5lZWQg cGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQotICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCdd KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9a3dhcmdzWyd0aWQnXSkK LSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FM KQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisgICAgICAgICAgICBzY2hlbWEsIHRh YmxlID0gaWR4Y29uc191dGlscy5nZXRfcGFyZW50KHNlbGYuY29ubiwga3dhcmdzWyd0aWQnXSkK KyAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAgICAgICAgICBzZWxmLnRhYmxl ID0gdGFibGUKIAotICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAg ICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgc2Vs Zi50YWJsZSA9IHJvd1sndGFibGUnXQogICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dh cmdzKQogCiAgICAgICAgIHJldHVybiB3cmFwCkBAIC0yODQsNDkgKzI4MCwyMCBAQCBjbGFzcyBJ bmRleENvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIFJldHVybnM6CiAK ICAgICAgICAgIiIiCi0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaWQ9ZGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1jaWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9c2VsZi5jb25zdHJhaW50X3R5cGUpCi0g ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KKyAgICAg ICAgc3RhdHVzLCByZXMgPSBpZHhjb25zX3V0aWxzLmdldF9pbmRleF9jb25zdHJhaW50cyhzZWxm LmNvbm4sIGRpZCwgdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3RyYWludF90eXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZCkKICAgICAgICAg aWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgICAgIGlmIGxlbihy ZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgaWYgbGVuKHJlcykgPT0gMDoKICAgICAgICAgICAg IHJldHVybiBnb25lKF8oIiIiQ291bGQgbm90IGZpbmQgdGhlIHt9IGluIHRoZSB0YWJsZS4iIiIu Zm9ybWF0KAogICAgICAgICAgICAgICAgICJwcmltYXJ5IGtleSIgaWYgc2VsZi5jb25zdHJhaW50 X3R5cGUgPT0gInAiIGVsc2UgInVuaXF1ZSBrZXkiCiAgICAgICAgICAgICApKSkKIAotICAgICAg ICByZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQotCi0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKLSAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfY29uc3Ry YWludF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAgIGNpZD1jaWQsCi0gICAgICAgICAgICBjb2xj bnQ9cmVzdWx0Wydjb2xfY291bnQnXSkKLSAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgY29s dW1ucyA9IFtdCi0gICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICBj b2x1bW5zLmFwcGVuZCh7ImNvbHVtbiI6IHJvd1snY29sdW1uJ10uc3RyaXAoJyInKX0pCi0KLSAg ICAgICAgcmVzdWx0Wydjb2x1bW5zJ10gPSBjb2x1bW5zCi0KLSAgICAgICAgIyBBZGQgSW5jbHVk ZSBkZXRhaWxzIG9mIHRoZSBpbmRleCBzdXBwb3J0ZWQgZm9yIFBHLTExKwotICAgICAgICBpZiBz ZWxmLm1hbmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6Ci0gICAgICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2dldF9jb25zdHJhaW50X2luY2x1ZGUuc3FsJ10pLAotICAgICAgICAgICAgICAgIGNpZD1jaWQp Ci0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQot Ci0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICByZXN1bHRbJ2lu Y2x1ZGUnXSA9IFtjb2xbJ2NvbG5hbWUnXSBmb3IgY29sIGluIHJlc1sncm93cyddXQorICAgICAg ICByZXN1bHQgPSByZXMKKyAgICAgICAgaWYgY2lkOgorICAgICAgICAgICAgcmVzdWx0ID0gcmVz WzBdCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAgICAgICByZXNwb25z ZT1yZXN1bHQsCkBAIC0zODEsMTYgKzM0OCw5IEBAIGNsYXNzIEluZGV4Q29uc3RyYWludFZpZXco UEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5tYW5hZ2VyLnZlcnNp b24pCiAKICAgICAgICAgIyBXZSBuZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQg c2NoZW1hIG5hbWUKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCkKLSAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp Ci0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dz J106Ci0gICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHJvd1snc2NoZW1hJ10KLSAgICAgICAgICAg IHNlbGYudGFibGUgPSByb3dbJ3RhYmxlJ10KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGlkeGNv bnNfdXRpbHMuZ2V0X3BhcmVudChzZWxmLmNvbm4sIHRpZCkKKyAgICAgICAgc2VsZi5zY2hlbWEg PSBzY2hlbWEKKyAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAKICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsCkBAIC01MDMsMTYg KzQ2Myw5IEBAIGNsYXNzIEluZGV4Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAg ICAgICAgICAgIC5mb3JtYXQoc2VsZi5tYW5hZ2VyLnZlcnNpb24pCiAKICAgICAgICAgIyBXZSBu ZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQgc2NoZW1hIG5hbWUKLSAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLSAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJz ZXQpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICBzZWxm LnNjaGVtYSA9IHJvd1snc2NoZW1hJ10KLSAgICAgICAgICAgIHNlbGYudGFibGUgPSByb3dbJ3Rh YmxlJ10KKyAgICAgICAgc2NoZW1hLCB0YWJsZSA9IGlkeGNvbnNfdXRpbHMuZ2V0X3BhcmVudChz ZWxmLmNvbm4sIHRpZCkKKyAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hlbWEKKyAgICAgICAgc2Vs Zi50YWJsZSA9IHRhYmxlCiAKICAgICAgICAgcmVzID0gW10KICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSksCkBA IC02ODYsNyArNjM5LDggQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZp ZXcpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2No ZW1hCiAgICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQotICAgICAgICAgICAg c3FsLCBuYW1lID0gc2VsZi5nZXRfc3FsKGRhdGEsIGRpZCwgdGlkLCBjaWQpCisgICAgICAgICAg ICBzcWwsIG5hbWUgPSBpZHhjb25zX3V0aWxzLmdldF9zcWwoc2VsZi5jb25uLCBkYXRhLCBkaWQs IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNvbnN0cmFpbnRfdHlwZSwgY2lkKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3Fs LCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNxbAogICAgICAgICAg ICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTgyNiw3ICs3ODAsOCBAQCBj bGFzcyBJbmRleENvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGRhdGFb J3NjaGVtYSddID0gc2VsZi5zY2hlbWEKICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFi bGUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3FsLCBuYW1lID0gc2VsZi5nZXRfc3FsKGRh dGEsIGRpZCwgdGlkLCBjaWQpCisgICAgICAgICAgICBzcWwsIG5hbWUgPSBpZHhjb25zX3V0aWxz LmdldF9zcWwoc2VsZi5jb25uLCBkYXRhLCBkaWQsIHRpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnN0cmFpbnRfdHlwZSwgY2lkKQogICAg ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2RlKSk6CiAgICAgICAg ICAgICAgICAgcmV0dXJuIHNxbAogICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0 cmlwKCcgJykKQEAgLTg0MCw3NyArNzk1LDYgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50VmlldyhQ R0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAg IGRlZiBnZXRfc3FsKHNlbGYsIGRhdGEsIGRpZCwgdGlkLCBjaWQ9Tm9uZSk6Ci0gICAgICAgICIi IgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0 YS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGRhdGE6IENvbnRhaW5zIHRoZSBkYXRhIG9m IHRoZSBzZWxlY3RlZCBwcmltYXJ5IGtleSBjb25zdHJhaW50LgotICAgICAgICAgIHRpZDogVGFi bGUgSUQuCi0gICAgICAgICAgY2lkOiBQcmltYXJ5IGtleSBjb25zdHJhaW50IElECi0KLSAgICAg ICAgUmV0dXJuczoKLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgY2lkIGlzIG5vdCBOb25lOgot ICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAg ICAgICBkaWQ9ZGlkLAotICAgICAgICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAg Y2lkPWNpZCwKLSAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9c2VsZi5jb25zdHJhaW50 X3R5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChzcWwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAg ICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBn b25lKAotICAgICAgICAgICAgICAgICAgICBfKCIiIkNvdWxkIG5vdCBmaW5kIHRoZSB7fSBpbiB0 aGUgdGFibGUuIiIiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcmltYXJ5IGtl eSIgaWYgc2VsZi5jb25zdHJhaW50X3R5cGUgPT0gInAiCi0gICAgICAgICAgICAgICAgICAgICAg ICBlbHNlICJ1bmlxdWUga2V5IgotICAgICAgICAgICAgICAgICAgICApKQotICAgICAgICAgICAg ICAgICkKLQotICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAg ICAgcmVxdWlyZWRfYXJncyA9IFt1J25hbWUnXQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1 aXJlZF9hcmdzOgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAg ICAgICAgICAgICAgZGF0YVthcmddID0gb2xkX2RhdGFbYXJnXQotCi0gICAgICAgICAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGF0YT1vbGRfZGF0YSkKLSAgICAgICAg ZWxzZToKLSAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCi0gICAgICAgICAgICAgICAgW3Un Y29sdW1ucycsIHUnaW5kZXgnXSAgIyBFaXRoZXIgb2Ygb25lIHNob3VsZCBiZSB0aGVyZS4KLSAg ICAgICAgICAgIF0KLQotICAgICAgICAgICAgZGVmIGlzX2tleV9zdHIoa2V5LCBkYXRhKToKLSAg ICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShkYXRhW2tleV0sIHN0cikgYW5kIGRhdGFb a2V5XSAhPSAiIgotCi0gICAgICAgICAgICBkZWYgaXNfa2V5X2xpc3Qoa2V5LCBkYXRhKToKLSAg ICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShkYXRhW2tleV0sIGxpc3QpIGFuZCBsZW4o ZGF0YVtwYXJhbV0pID4gMAotCi0gICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6 Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIGxpc3QpOgotICAgICAgICAgICAg ICAgICAgICBmb3IgcGFyYW0gaW4gYXJnOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFy YW0gaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19rZXlfc3RyKHBh cmFtLCBkYXRhKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpc19r ZXlfbGlzdChwYXJhbSwgZGF0YSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykKLQotICAgICAgICAgICAgICAgIGVs aWYgYXJnIG5vdCBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVm aW5pdGlvbiBpbmNvbXBsZXRlJykKLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdHJhaW50X25hbWU9c2VsZi5jb25zdHJhaW50X25hbWUpCi0KLSAgICAgICAg cmV0dXJuIHNxbCwgZGF0YVsnbmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFb J25hbWUnXQotCiAgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBzcWwoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjaWQ9Tm9uZSk6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdXRpbHMucHkgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC91dGlscy5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjY0ZGI4MzUyZAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3V0aWxzLnB5CkBAIC0wLDAgKzEs MjMyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiIgSW1wbGVtZW50cyBVdGlsaXR5 IGNsYXNzIGZvciBFeGNsdXNpb24gQ29uc3RyYWludC4gIiIiCisKK2Zyb20gZmxhc2sgaW1wb3J0 IHJlbmRlcl90ZW1wbGF0ZQorZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8K K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zy b20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IE9iamVjdEdvbmUKK2Zyb20gZnVuY3Rv b2xzIGltcG9ydCB3cmFwcworCisKK2RlZiBnZXRfdGVtcGxhdGVfcGF0aChmKToKKyAgICAiIiIK KyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwg cHJlcGFyZQorICAgIHRoZSB0ZW1wbGF0ZSBwYXRoIGJhc2VkIG9uIGRhdGFiYXNlIHNlcnZlciB2 ZXJzaW9uLgorICAgICIiIgorCisgICAgQHdyYXBzKGYpCisgICAgZGVmIHdyYXAoKmFyZ3MsICoq a3dhcmdzKToKKyAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBob2xkIHRoZSBjb25uZWN0aW9u IG9iamVjdAorICAgICAgICBjb25uX29iaiA9IGFyZ3NbMF0KKyAgICAgICAgdGVtcGxhdGVfcGF0 aCA9ICcnCisgICAgICAgIGlmICd0ZW1wbGF0ZV9wYXRoJyBub3QgaW4ga3dhcmdzOgorICAgICAg ICAgICAgdGVtcGxhdGVfcGF0aCA9ICdpbmRleF9jb25zdHJhaW50L3NxbC8jezB9IycuZm9ybWF0 KAorICAgICAgICAgICAgICAgIGNvbm5fb2JqLm1hbmFnZXIudmVyc2lvbikKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIHRlbXBsYXRlX3BhdGggPSBrd2FyZ3NbJ3RlbXBsYXRlX3BhdGgnXQor CisgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncywgdGVtcGxhdGVfcGF0aD10ZW1wbGF0 ZV9wYXRoKQorICAgIHJldHVybiB3cmFwCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0 X3BhcmVudChjb25uLCB0aWQsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhp cyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgcGFyZW50IG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAg ICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBv aWQKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDoKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLCB0aWQ9dGlk KQorICAgIHN0YXR1cywgcnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICByYWlzZSBFeGNlcHRpb24ocnNldCkKKworICAgIHNjaGVtYSA9 ICcnCisgICAgdGFibGUgPSAnJworICAgIGlmICdyb3dzJyBpbiByc2V0IGFuZCBsZW4ocnNldFsn cm93cyddKSA+IDA6CisgICAgICAgIHNjaGVtYSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10K KyAgICAgICAgdGFibGUgPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgIHJldHVybiBz Y2hlbWEsIHRhYmxlCisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X2luZGV4X2NvbnN0 cmFpbnRzKGNvbm4sIGRpZCwgdGlkLCBjdHlwZSwgY2lkPU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9u ZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZldGNoIGluZm9ybWF0 aW9uIG9mIHRoZQorICAgIGluZGV4IGNvbnN0cmFpbnQocykgZm9yIHRoZSBnaXZlbiB0YWJsZS4K KyAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gZGlkOiBEYXRh YmFzZSBJRAorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElECisgICAgOnBhcmFtIGN0eXBlOiBDb25z dHJhaW50IFR5cGUKKyAgICA6cGFyYW0gY2lkOiBpbmRleCBDb25zdHJhaW50IElECisgICAgOnBh cmFtIHRlbXBsYXRlX3BhdGg6IFRlbXBsYXRlIFBhdGgKKyAgICA6cmV0dXJuOgorICAgICIiIgor CisgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10 aWQsIGNpZD1jaWQsIGNvbnN0cmFpbnRfdHlwZT1jdHlwZSkKKyAgICBzdGF0dXMsIHJlc3VsdCA9 IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICByZXR1 cm4gc3RhdHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQorCisgICAg Zm9yIGlkeF9jb25zIGluIHJlc3VsdFsncm93cyddOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2lkPWlkeF9jb25zWydvaWQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbGNudD1pZHhfY29uc1snY29sX2NvdW50J10pCisgICAgICAgIHN0YXR1 cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgZm9yIHIgaW4gcmVzWydyb3dz J106CisgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImNvbHVtbiI6IHJbJ2NvbHVtbiddLnN0 cmlwKCciJyl9KQorCisgICAgICAgIGlkeF9jb25zWydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAg ICAgICAgIyBJTkNMVURFIGNsYXVzZSBpbiBpbmRleCBpcyBzdXBwb3J0ZWQgZnJvbSBQRy0xMSsK KyAgICAgICAgaWYgY29ubi5tYW5hZ2VyLnZlcnNpb24gPj0gMTEwMDAwOgorICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfaW5jbHVk ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWlkeF9jb25z WydvaWQnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rh dHVzLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBp ZHhfY29uc1snaW5jbHVkZSddID0gW2NvbFsnY29sbmFtZSddIGZvciBjb2wgaW4gcmVzWydyb3dz J11dCisKKyAgICByZXR1cm4gVHJ1ZSwgcmVzdWx0Wydyb3dzJ10KKworCitAZ2V0X3RlbXBsYXRl X3BhdGgKK2RlZiBnZXRfaW5kZXhfY29uc3RyYWludF9zcWwoY29ubiwgZGlkLCB0aWQsIGRhdGEs IHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiBzcWwgZm9yIGluZGV4IGNvbnN0cmFpbnRzLgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0 aW9uIE9iamVjdAorICAgIDpwYXJhbSBkaWQ6IERhdGFiYXNlIElECisgICAgOnBhcmFtIHRpZDog VGFibGUgSUQKKyAgICA6cGFyYW0gZGF0YTogRGF0YQorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRo OiBUZW1wbGF0ZSBQYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKyAgICBzcWwgPSBbXQorICAg ICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUK KyAgICBpbmRleF9jb25zdHJhaW50cyA9IHsKKyAgICAgICAgJ3AnOiAncHJpbWFyeV9rZXknLCAn dSc6ICd1bmlxdWVfY29uc3RyYWludCcKKyAgICB9CisKKyAgICBmb3IgY3R5cGUgaW4gaW5kZXhf Y29uc3RyYWludHMua2V5cygpOgorICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4g ZGF0YQorICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFu Z2UvZGVsZXRlCisgICAgICAgIGlmIGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSBpbiBkYXRhOgor ICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbaW5kZXhfY29uc3RyYWludHNbY3R5cGVdXQor ICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgICAg ICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBj b25zdHJhaW50WydkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0g ZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25h bWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCisgICAgICAgICAgICAg ICAgICAgIHNxbC5hcHBlbmQocmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29ubj1jb25uKS5zdHJpcCgnXG4nKSkKKyAgICAgICAgICAgIGlmICdjaGFuZ2Vk JyBpbiBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2No YW5nZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEn XQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAg ICAgICAgICAgICAgICAgbW9kaWZpZWRfc3FsLCBuYW1lID0gZ2V0X3NxbChjb25uLCBjLCBkaWQs IHRpZCwgY3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY1snb2lkJ10pCisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQobW9kaWZpZWRf c3FsLnN0cmlwKCdcbicpKQorCisgICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6 CisgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKKyAgICAgICAg ICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAg ICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgYWRk X3NxbCwgbmFtZSA9IGdldF9zcWwoY29ubiwgYywgZGlkLCB0aWQsIGN0eXBlKQorICAgICAgICAg ICAgICAgICAgICBzcWwuYXBwZW5kKGFkZF9zcWwuc3RyaXAoIlxuIikpCisKKyAgICBpZiBsZW4o c3FsKSA+IDA6CisgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5n CisgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCisgICAgZWxzZToKKyAgICAgICAgcmV0 dXJuIE5vbmUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfc3FsKGNvbm4sIGRhdGEs IGRpZCwgdGlkLCBjdHlwZSwgY2lkPU5vbmUsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIi CisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisg ICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0CisgICAgOnBhcmFtIGRhdGE6IGRhdGEK KyAgICA6cGFyYW0gZGlkOiBEYXRhYmFzZSBJRAorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIGlkCisg ICAgOnBhcmFtIGN0eXBlOiBDb25zdHJhaW50IFR5cGUKKyAgICA6cGFyYW0gY2lkOiBpbmRleCBD b25zdHJhaW50IElECisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IFRlbXBsYXRlIFBhdGgKKyAg ICA6cmV0dXJuOgorICAgICIiIgorICAgIG5hbWUgPSBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGlu IGRhdGEgZWxzZSBOb25lCisgICAgaWYgY2lkIGlzIG5vdCBOb25lOgorICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1j aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9Y3R5cGUp CisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJlcykKKworICAgICAg ICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICByYWlzZSBPYmplY3RHb25l KAorICAgICAgICAgICAgICAgIF8oJ0NvdWxkIG5vdCBmaW5kIHRoZSBjb25zdHJhaW50IGluIHRo ZSB0YWJsZS4nKSkKKworICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAg IGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIG5hbWUgPSBkYXRhWyduYW1lJ10g PSBvbGRfZGF0YVsnbmFtZSddCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFt0ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGF0 YT1vbGRfZGF0YSkKKyAgICBlbHNlOgorICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAg ICAgICAgW3UnY29sdW1ucycsIHUnaW5kZXgnXSAgIyBFaXRoZXIgb2Ygb25lIHNob3VsZCBiZSB0 aGVyZS4KKyAgICAgICAgXQorCisgICAgICAgIGRlZiBpc19rZXlfc3RyKGtleSwgZGF0YSk6Cisg ICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShkYXRhW2tleV0sIHN0cikgYW5kIGRhdGFba2V5 XSAhPSAiIgorCisgICAgICAgIGRlZiBpc19rZXlfbGlzdChrZXksIGRhdGEpOgorICAgICAgICAg ICAgcmV0dXJuIGlzaW5zdGFuY2UoZGF0YVtrZXldLCBsaXN0KSBhbmQgbGVuKGRhdGFbcGFyYW1d KSA+IDAKKworICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBp ZiBpc2luc3RhbmNlKGFyZywgbGlzdCk6CisgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIGFy ZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0gaW4gZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIGlzX2tleV9zdHIocGFyYW0sIGRhdGEpIG9yIGlzX2tleV9saXN0KHBhcmFt LCBkYXRhKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfKCctLSBkZWZpbml0aW9uIGlu Y29tcGxldGUnKSwgbmFtZQorCisgICAgICAgICAgICBlbGlmIGFyZyBub3QgaW4gZGF0YToKKyAg ICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJyksIG5hbWUK KworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs ICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1jb25uLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3RyYWludF9uYW1lPSdQUklNQVJZIEtFWScKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIGN0eXBlID09ICdwJyBlbHNlICdVTklRVUUnKQorICAg IHJldHVybiBzcWwsIG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL19faW5pdF9f LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkKaW5kZXggNWVhN2U5NDc5Li4xYTQ3 NWM5MTMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL19faW5pdF9fLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9pbmRleGVzL19faW5pdF9fLnB5CkBAIC0xMyw2ICsxMyw4IEBAIGltcG9ydCBzaW1w bGVqc29uIGFzIGpzb24KIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCiBpbXBvcnQgcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJhc2UK K2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5z Y2hlbWFzLnRhYmxlcy5cCisgICAgaW5kZXhlcy51dGlscyBhcyBpbmRleF91dGlscwogZnJvbSBm bGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBqc29uaWZ5CiBmcm9tIGZsYXNr X2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24g aW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCkBAIC0yNTYsMTcgKzI1OCw5IEBAIGNsYXNzIElu ZGV4ZXNWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAjIFdlIG5lZWQgcGFyZW50 J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEgbmFtZQogICAgICAgICAgICAgIyB3aGVu IHdlIGNyZWF0ZSBuZXcgaW5kZXggaW4gdXBkYXRlIHdlIGNhbiBmZXRjaCBpdCB1c2luZwogICAg ICAgICAgICAgIyBwcm9wZXJ0eSBzcWwKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X3Bh cmVudC5zcWwnXSksCi0gICAgICAgICAgICAgICAgdGlkPWt3YXJnc1sndGlkJ10KLSAgICAgICAg ICAgICkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgIGZv ciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93 WydzY2hlbWEnXQotICAgICAgICAgICAgICAgIHNlbGYudGFibGUgPSByb3dbJ3RhYmxlJ10KKyAg ICAgICAgICAgIHNjaGVtYSwgdGFibGUgPSBpbmRleF91dGlscy5nZXRfcGFyZW50KHNlbGYuY29u biwga3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gc2NoZW1hCisgICAg ICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKIAogICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3Ms ICoqa3dhcmdzKQogCkBAIC00NzQsOTkgKzQ2OCw2IEBAIGNsYXNzIEluZGV4ZXNWaWV3KFBHQ2hp bGROb2RlVmlldyk6CiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIAotICAgIGRl ZiBfY29sdW1uX2RldGFpbHMoc2VsZiwgaWR4LCBkYXRhLCBtb2RlPSdwcm9wZXJ0aWVzJyk6Ci0g ICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uYWwgd2lsbCBmZXRjaCBsaXN0IG9mIGNv bHVtbiBkZXRhaWxzIGZvciBpbmRleAotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBpZHg6 IEluZGV4IE9JRAotICAgICAgICAgICAgZGF0YTogUHJvcGVydGllcyBkYXRhCi0KLSAgICAgICAg UmV0dXJuczoKLSAgICAgICAgICAgIFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdpdGggY29sdW1u IGRldGFpbHMKLSAgICAgICAgIiIiCi0KLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAot ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NvbHVtbl9kZXRhaWxz LnNxbCddKSwgaWR4PWlkeAotICAgICAgICApCi0gICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotICAgICAg ICAjICdhdHRkZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVlcnkgc28gd2UgbmVlZCB0byBz dHJpcCB0aGVtCi0gICAgICAgICMgJ29wdGlvbnMnIHdlIG5lZWQgdHJ1ZS9mYWxzZSB0byByZW5k ZXIgc3dpdGNoIEFTQyhmYWxzZSkvREVTQyh0cnVlKQotICAgICAgICBjb2x1bW5zID0gW10KLSAg ICAgICAgY29scyA9IFtdCi0gICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAg ICAgICAgIyBXZSBuZWVkIGFsbCBkYXRhIGFzIGNvbGxlY3Rpb24gZm9yIENvbHVtbnNNb2RlbAot ICAgICAgICAgICAgIyB3ZSB3aWxsIG5vdCBzdHJpcCBkb3duIGNvbG5hbWUgd2hlbiB1c2luZyBp biBTUUwgdG8gZGlzcGxheQotICAgICAgICAgICAgY29sc19kYXRhID0gewotICAgICAgICAgICAg ICAgICdjb2xuYW1lJzogcm93WydhdHRkZWYnXSBpZiBtb2RlID09ICdjcmVhdGUnIGVsc2UKLSAg ICAgICAgICAgICAgICByb3dbJ2F0dGRlZiddLnN0cmlwKCciJyksCi0gICAgICAgICAgICAgICAg J2NvbGxzcGNuYW1lJzogcm93Wydjb2xsbnNwbmFtZSddLAotICAgICAgICAgICAgICAgICdvcF9j bGFzcyc6IHJvd1snb3BjbmFtZSddLAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEFT Qy9ERVNDIGFuZCBOVUxMUyB3b3JrcyBvbmx5IHdpdGggYnRyZWUgaW5kZXhlcwotICAgICAgICAg ICAgaWYgJ2FtbmFtZScgaW4gZGF0YSBhbmQgZGF0YVsnYW1uYW1lJ10gPT0gJ2J0cmVlJzoKLSAg ICAgICAgICAgICAgICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IEZhbHNlCi0gICAgICAgICAg ICAgICAgaWYgcm93WydvcHRpb25zJ11bMF0gPT0gJ0RFU0MnOgotICAgICAgICAgICAgICAgICAg ICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IFRydWUKLQotICAgICAgICAgICAgICAgIGNvbHNf ZGF0YVsnbnVsbHMnXSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ11b MV0uc3BsaXQoIiAiKVsxXSA9PSAnRklSU1QnOgotICAgICAgICAgICAgICAgICAgICBjb2xzX2Rh dGFbJ251bGxzJ10gPSBUcnVlCi0KLSAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKGNvbHNfZGF0 YSkKLQotICAgICAgICAgICAgIyBXZSBuZWVkIHNhbWUgZGF0YSBhcyBzdHJpbmcgdG8gZGlzcGxh eSBpbiBwcm9wZXJ0aWVzIHdpbmRvdwotICAgICAgICAgICAgIyBJZiBtdWx0aXBsZSBjb2x1bW4g dGhlbiBzZXBhcmF0ZSBpdCBieSBjb2xvbgotICAgICAgICAgICAgY29sc19zdHIgPSByb3dbJ2F0 dGRlZiddCi0gICAgICAgICAgICBpZiByb3dbJ2NvbGxuc3BuYW1lJ106Ci0gICAgICAgICAgICAg ICAgY29sc19zdHIgKz0gJyBDT0xMQVRFICcgKyByb3dbJ2NvbGxuc3BuYW1lJ10KLSAgICAgICAg ICAgIGlmIHJvd1snb3BjbmFtZSddOgotICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgJyAr IHJvd1snb3BjbmFtZSddCi0KLSAgICAgICAgICAgICMgQVNDL0RFU0MgYW5kIE5VTExTIHdvcmtz IG9ubHkgd2l0aCBidHJlZSBpbmRleGVzCi0gICAgICAgICAgICBpZiAnYW1uYW1lJyBpbiBkYXRh IGFuZCBkYXRhWydhbW5hbWUnXSA9PSAnYnRyZWUnOgotICAgICAgICAgICAgICAgICMgQXBwZW5k IHNvcnQgb3JkZXIKLSAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnICcgKyByb3dbJ29wdGlv bnMnXVswXQotICAgICAgICAgICAgICAgICMgQXBwZW5kIG51bGxzIHZhbHVlCi0gICAgICAgICAg ICAgICAgY29sc19zdHIgKz0gJyAnICsgcm93WydvcHRpb25zJ11bMV0KLQotICAgICAgICAgICAg Y29scy5hcHBlbmQoY29sc19zdHIpCi0KLSAgICAgICAgIyBQdXNoIGFzIGNvbGxlY3Rpb24KLSAg ICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucwotICAgICAgICAjIFB1c2ggYXMgc3RyaW5n Ci0gICAgICAgIGRhdGFbJ2NvbHVtbnNfY3N2J10gPSAnLCAnLmpvaW4oY29scykKLQotICAgICAg ICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9pbmNsdWRlX2RldGFpbHMoc2VsZiwgaWR4LCBkYXRh LCBtb2RlPSdwcm9wZXJ0aWVzJyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9u YWwgd2lsbCBmZXRjaCBsaXN0IG9mIGluY2x1ZGUgZGV0YWlscyBmb3IgaW5kZXgKLSAgICAgICAg c3VwcG9ydGVkIHdpdGggUG9zdGdyZXMgMTErCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg IGlkeDogSW5kZXggT0lECi0gICAgICAgICAgICBkYXRhOiBQcm9wZXJ0aWVzIGRhdGEKLQotICAg ICAgICBSZXR1cm5zOgotICAgICAgICAgICAgVXBkYXRlZCBwcm9wZXJ0aWVzIGRhdGEgd2l0aCBp bmNsdWRlIGRldGFpbHMKLSAgICAgICAgIiIiCi0KLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKAotICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2luY2x1ZGVf ZGV0YWlscy5zcWwnXSksIGlkeD1pZHgKLSAgICAgICAgKQotICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVz OgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQotCi0gICAgICAgICMgUHVzaCBhcyBjb2xsZWN0aW9uCi0gICAgICAgIGRhdGFbJ2luY2x1ZGUn XSA9IFtjb2xbJ2NvbG5hbWUnXSBmb3IgY29sIGluIHJzZXRbJ3Jvd3MnXV0KLSAgICAgICAgcmV0 dXJuIGRhdGEKLQogICAgIEBjaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGlkeCk6CiAgICAgICAgICIiIgpAQCAtNjAy LDExICs1MDMsMTEgQEAgY2xhc3MgSW5kZXhlc1ZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCiAKICAgICAgICAgIyBBZGQgY29sdW1uIGRl dGFpbHMgZm9yIGN1cnJlbnQgaW5kZXgKLSAgICAgICAgZGF0YSA9IHNlbGYuX2NvbHVtbl9kZXRh aWxzKGlkeCwgZGF0YSkKKyAgICAgICAgZGF0YSA9IGluZGV4X3V0aWxzLmdldF9jb2x1bW5fZGV0 YWlscyhzZWxmLmNvbm4sIGlkeCwgZGF0YSkKIAogICAgICAgICAjIEFkZCBJbmNsdWRlIGRldGFp bHMgb2YgdGhlIGluZGV4CiAgICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDExMDAw MDoKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9pbmNsdWRlX2RldGFpbHMoaWR4LCBkYXRhKQor ICAgICAgICAgICAgZGF0YSA9IGluZGV4X3V0aWxzLmdldF9pbmNsdWRlX2RldGFpbHMoc2VsZi5j b25uLCBpZHgsIGRhdGEpCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAg ICAgICByZXNwb25zZT1kYXRhLApAQCAtODA2LDcgKzcwNyw4IEBAIGNsYXNzIEluZGV4ZXNWaWV3 KFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEK ICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKICAgICAgICAgdHJ5OgotICAgICAg ICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRfc3FsKGRpZCwgc2NpZCwgdGlkLCBpZHgsIGRhdGEp CisgICAgICAgICAgICBTUUwsIG5hbWUgPSBpbmRleF91dGlscy5nZXRfc3FsKAorICAgICAgICAg ICAgICAgIHNlbGYuY29ubiwgZGF0YSwgZGlkLCB0aWQsIGlkeCwgc2VsZi5kYXRsYXN0c3lzb2lk KQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoU1FMLCAoc3RyLCB1bmljb2RlKSk6CiAg ICAgICAgICAgICAgICAgcmV0dXJuIFNRTAogICAgICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdc bicpLnN0cmlwKCcgJykKQEAgLTg1NSw3ICs3NTcsOSBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0No aWxkTm9kZVZpZXcpOgogICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQogCiAgICAg ICAgIHRyeToKLSAgICAgICAgICAgIHNxbCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQs IHRpZCwgaWR4LCBkYXRhLCBtb2RlPSdjcmVhdGUnKQorICAgICAgICAgICAgc3FsLCBuYW1lID0g aW5kZXhfdXRpbHMuZ2V0X3NxbCgKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4sIGRhdGEsIGRp ZCwgdGlkLCBpZHgsIHNlbGYuZGF0bGFzdHN5c29pZCwKKyAgICAgICAgICAgICAgICBtb2RlPSdj cmVhdGUnKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3FsLCAoc3RyLCB1bmljb2Rl KSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNxbAogICAgICAgICAgICAgc3FsID0gc3FsLnN0 cmlwKCdcbicpLnN0cmlwKCcgJykKQEAgLTg2OCw2NCArNzcyLDYgQEAgY2xhc3MgSW5kZXhlc1Zp ZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAK LSAgICBkZWYgZ2V0X3NxbChzZWxmLCBkaWQsIHNjaWQsIHRpZCwgaWR4LCBkYXRhLCBtb2RlPU5v bmUpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbnJhdGUgc3Fs IGZyb20gbW9kZWwgZGF0YQotICAgICAgICAiIiIKLSAgICAgICAgaWYgaWR4IGlzIG5vdCBOb25l OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAg ICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9aWR4LCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0 bGFzdHN5c29pZAotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK LSAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAgICAgICBy ZXR1cm4gZ29uZSgKLSAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgiIiJDb3VsZCBub3QgZmlu ZCB0aGUgaW5kZXggaW4gdGhlIHRhYmxlLiIiIikKLSAgICAgICAgICAgICAgICApCi0KLSAgICAg ICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKLQotICAgICAgICAgICAgIyBJ ZiBuYW1lIGlzIG5vdCBwcmVzZW50IGluIGRhdGEgdGhlbgotICAgICAgICAgICAgIyB3ZSB3aWxs IGZldGNoIGl0IGZyb20gb2xkIGRhdGEsIHdlIGFsc28gbmVlZCBzY2hlbWEgJiB0YWJsZSBuYW1l Ci0gICAgICAgICAgICBpZiAnbmFtZScgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgZGF0 YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2Rh dGEsIGNvbm49c2VsZi5jb25uCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAg ICAgICByZXF1aXJlZF9hcmdzID0gewotICAgICAgICAgICAgICAgICduYW1lJzogJ05hbWUnLAot ICAgICAgICAgICAgICAgICdjb2x1bW5zJzogJ0NvbHVtbnMnCi0gICAgICAgICAgICB9Ci0gICAg ICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAgZXJyID0g RmFsc2UKLSAgICAgICAgICAgICAgICBpZiBhcmcgPT0gJ2NvbHVtbnMnIGFuZCBsZW4oZGF0YVsn Y29sdW1ucyddKSA8IDE6Ci0gICAgICAgICAgICAgICAgICAgIGVyciA9IFRydWUKLQotICAgICAg ICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgZXJyID0g VHJ1ZQotICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25l IGNvbHVtbgotICAgICAgICAgICAgICAgIGlmIGVycjoKLSAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGdldHRleHQoJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0KLSAgICAgICAgICAgICMg SWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0gICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgZGF0 YT1kYXRhLCBjb25uPXNlbGYuY29ubiwgbW9kZT1tb2RlCi0gICAgICAgICAgICApCi0gICAgICAg ICAgICBTUUwgKz0gIlxuIgotICAgICAgICAgICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0ZSgKLSAg ICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWx0ZXIuc3FsJ10p LAotICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4KLSAgICAgICAgICAg ICkKLQotICAgICAgICByZXR1cm4gU1FMLCBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEg ZWxzZSBvbGRfZGF0YVsnbmFtZSddCi0KICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVm IHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGlkeCk6CiAgICAgICAgICIiIgpA QCAtOTQwLDQwICs3ODYsOSBAQCBjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxkTm9kZVZpZXcpOgog ICAgICAgICAgICBpZHg6IEluZGV4IElECiAgICAgICAgICIiIgogCi0gICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGlkeD1p ZHgsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCi0gICAgICAgICkKLQotICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICBpZiBu b3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCi0gICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAg IHJldHVybiBnb25lKGdldHRleHQoIiIiQ291bGQgbm90IGZpbmQgdGhlIGluZGV4IGluIHRoZSB0 YWJsZS4iIiIpKQotCi0gICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQotICAgICAg ICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUg Y3JlYXRpbmcgc3FsCi0gICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKLSAgICAg ICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKLQotICAgICAgICAjIEFkZCBjb2x1bW4gZGV0 YWlscyBmb3IgY3VycmVudCBpbmRleAotICAgICAgICBkYXRhID0gc2VsZi5fY29sdW1uX2RldGFp bHMoaWR4LCBkYXRhLCAnY3JlYXRlJykKLQotICAgICAgICAjIEFkZCBJbmNsdWRlIGRldGFpbHMg b2YgdGhlIGluZGV4Ci0gICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDExMDAwMDoK LSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9pbmNsdWRlX2RldGFpbHMoaWR4LCBkYXRhLCAnY3Jl YXRlJykKLQotICAgICAgICBTUUwsIG5hbWUgPSBzZWxmLmdldF9zcWwoZGlkLCBzY2lkLCB0aWQs IE5vbmUsIGRhdGEpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKFNRTCwgKHN0ciwgdW5pY29k ZSkpOgotICAgICAgICAgICAgcmV0dXJuIFNRTAotICAgICAgICBzcWxfaGVhZGVyID0gdSItLSBJ bmRleDogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKLQotICAgICAgICBzcWxfaGVh ZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAotICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNl bGYuY29ubgotICAgICAgICApCi0KLSAgICAgICAgU1FMID0gc3FsX2hlYWRlciArICdcblxuJyAr IFNRTAorICAgICAgICBTUUwgPSBpbmRleF91dGlscy5nZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3Nx bCgKKyAgICAgICAgICAgIHNlbGYuY29ubiwgc2VsZi5zY2hlbWEsIHNlbGYudGFibGUsIGRpZCwg dGlkLCBpZHgsCisgICAgICAgICAgICBzZWxmLmRhdGxhc3RzeXNvaWQpCiAKICAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv aW5kZXhlcy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3V0aWxzLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZWRkODBkZjI2Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2luZGV4ZXMvdXRpbHMucHkKQEAgLTAsMCArMSwyODAgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyIiIiBJbXBsZW1lbnRzIFV0aWxpdHkgY2xhc3MgZm9yIEluZGV4ZXMu ICIiIgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUKK2Zyb20gZmxhc2tfYmFi ZWxleCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQg aW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0aW9uIGltcG9y dCBPYmplY3RHb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitkZWYgZ2V0X3Rl bXBsYXRlX3BhdGgoZik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBh cyBhIGRlY29yYXRvciB3aGljaCB3aWxsIHByZXBhcmUKKyAgICB0aGUgdGVtcGxhdGUgcGF0aCBi YXNlZCBvbiBkYXRhYmFzZSBzZXJ2ZXIgdmVyc2lvbi4KKyAgICAiIiIKKworICAgIEB3cmFwcyhm KQorICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgSGVyZSBhcmdzWzBd IHdpbGwgaG9sZCB0aGUgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgY29ubl9vYmogPSBhcmdz WzBdCisgICAgICAgIHRlbXBsYXRlX3BhdGggPSAnJworICAgICAgICBpZiAndGVtcGxhdGVfcGF0 aCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgIHRlbXBsYXRlX3BhdGggPSBcCisgICAgICAg ICAgICAgICAgJ2luZGV4ZXMvc3FsLyN7MH0jJy5mb3JtYXQoY29ubl9vYmoubWFuYWdlci52ZXJz aW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVtcGxhdGVfcGF0aCA9IGt3YXJnc1sn dGVtcGxhdGVfcGF0aCddCisKKyAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzLCB0ZW1w bGF0ZV9wYXRoPXRlbXBsYXRlX3BhdGgpCisgICAgcmV0dXJuIHdyYXAKKworCitAZ2V0X3RlbXBs YXRlX3BhdGgKK2RlZiBnZXRfcGFyZW50KGNvbm4sIHRpZCwgdGVtcGxhdGVfcGF0aD1Ob25lKToK KyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBwYXJlbnQgb2YgdGhl IGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpw YXJhbSB0aWQ6IFRhYmxlIG9pZAorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCB0 ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKworICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwgdGlkPXRpZCkKKyAgICBzdGF0dXMsIHJz ZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKHJzZXQpCisKKyAgICBzY2hlbWEgPSAnJworICAgIHRhYmxlID0g JycKKyAgICBpZiAncm93cycgaW4gcnNldCBhbmQgbGVuKHJzZXRbJ3Jvd3MnXSkgPiAwOgorICAg ICAgICBzY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCisgICAgICAgIHRhYmxlID0g cnNldFsncm93cyddWzBdWyd0YWJsZSddCisKKyAgICByZXR1cm4gc2NoZW1hLCB0YWJsZQorCisK K0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9jb2x1bW5fZGV0YWlscyhjb25uLCBpZHgsIGRh dGEsIG1vZGU9J3Byb3BlcnRpZXMnLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAg IFRoaXMgZnVuY3Rpb25hbCB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGZvciBpbmRleC4KKwor ICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSBpZHg6IEluZGV4 IElECisgICAgOnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0gbW9kZTogJ2NyZWF0ZScgb3Ig J3Byb3BlcnRpZXMnCisgICAgOnBhcmFtIHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFsIHRlbXBsYXRl IHBhdGgKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2NvbHVtbl9kZXRhaWxzLnNxbCdd KSwgaWR4PWlkeAorICAgICkKKyAgICBzdGF0dXMsIHJzZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJh eShTUUwpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgIyAnYXR0ZGVmJyBjb21lcyB3aXRoIHF1b3Rl cyBmcm9tIHF1ZXJ5IHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorICAgICMgJ29wdGlvbnMnIHdl IG5lZWQgdHJ1ZS9mYWxzZSB0byByZW5kZXIgc3dpdGNoIEFTQyhmYWxzZSkvREVTQyh0cnVlKQor ICAgIGNvbHVtbnMgPSBbXQorICAgIGNvbHMgPSBbXQorICAgIGZvciByb3cgaW4gcnNldFsncm93 cyddOgorICAgICAgICAjIFdlIG5lZWQgYWxsIGRhdGEgYXMgY29sbGVjdGlvbiBmb3IgQ29sdW1u c01vZGVsCisgICAgICAgICMgd2Ugd2lsbCBub3Qgc3RyaXAgZG93biBjb2xuYW1lIHdoZW4gdXNp bmcgaW4gU1FMIHRvIGRpc3BsYXkKKyAgICAgICAgY29sc19kYXRhID0geworICAgICAgICAgICAg J2NvbG5hbWUnOiByb3dbJ2F0dGRlZiddIGlmIG1vZGUgPT0gJ2NyZWF0ZScgZWxzZQorICAgICAg ICAgICAgcm93WydhdHRkZWYnXS5zdHJpcCgnIicpLAorICAgICAgICAgICAgJ2NvbGxzcGNuYW1l Jzogcm93Wydjb2xsbnNwbmFtZSddLAorICAgICAgICAgICAgJ29wX2NsYXNzJzogcm93WydvcGNu YW1lJ10sCisgICAgICAgIH0KKworICAgICAgICAjIEFTQy9ERVNDIGFuZCBOVUxMUyB3b3JrcyBv bmx5IHdpdGggYnRyZWUgaW5kZXhlcworICAgICAgICBpZiAnYW1uYW1lJyBpbiBkYXRhIGFuZCBk YXRhWydhbW5hbWUnXSA9PSAnYnRyZWUnOgorICAgICAgICAgICAgY29sc19kYXRhWydzb3J0X29y ZGVyJ10gPSBGYWxzZQorICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ11bMF0gPT0gJ0RFU0Mn OgorICAgICAgICAgICAgICAgIGNvbHNfZGF0YVsnc29ydF9vcmRlciddID0gVHJ1ZQorCisgICAg ICAgICAgICBjb2xzX2RhdGFbJ251bGxzJ10gPSBGYWxzZQorICAgICAgICAgICAgaWYgcm93Wydv cHRpb25zJ11bMV0uc3BsaXQoIiAiKVsxXSA9PSAnRklSU1QnOgorICAgICAgICAgICAgICAgIGNv bHNfZGF0YVsnbnVsbHMnXSA9IFRydWUKKworICAgICAgICBjb2x1bW5zLmFwcGVuZChjb2xzX2Rh dGEpCisKKyAgICAgICAgIyBXZSBuZWVkIHNhbWUgZGF0YSBhcyBzdHJpbmcgdG8gZGlzcGxheSBp biBwcm9wZXJ0aWVzIHdpbmRvdworICAgICAgICAjIElmIG11bHRpcGxlIGNvbHVtbiB0aGVuIHNl cGFyYXRlIGl0IGJ5IGNvbG9uCisgICAgICAgIGNvbHNfc3RyID0gcm93WydhdHRkZWYnXQorICAg ICAgICBpZiByb3dbJ2NvbGxuc3BuYW1lJ106CisgICAgICAgICAgICBjb2xzX3N0ciArPSAnIENP TExBVEUgJyArIHJvd1snY29sbG5zcG5hbWUnXQorICAgICAgICBpZiByb3dbJ29wY25hbWUnXToK KyAgICAgICAgICAgIGNvbHNfc3RyICs9ICcgJyArIHJvd1snb3BjbmFtZSddCisKKyAgICAgICAg IyBBU0MvREVTQyBhbmQgTlVMTFMgd29ya3Mgb25seSB3aXRoIGJ0cmVlIGluZGV4ZXMKKyAgICAg ICAgaWYgJ2FtbmFtZScgaW4gZGF0YSBhbmQgZGF0YVsnYW1uYW1lJ10gPT0gJ2J0cmVlJzoKKyAg ICAgICAgICAgICMgQXBwZW5kIHNvcnQgb3JkZXIKKyAgICAgICAgICAgIGNvbHNfc3RyICs9ICcg JyArIHJvd1snb3B0aW9ucyddWzBdCisgICAgICAgICAgICAjIEFwcGVuZCBudWxscyB2YWx1ZQor ICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsgcm93WydvcHRpb25zJ11bMV0KKworICAgICAg ICBjb2xzLmFwcGVuZChjb2xzX3N0cikKKworICAgICMgUHVzaCBhcyBjb2xsZWN0aW9uCisgICAg ZGF0YVsnY29sdW1ucyddID0gY29sdW1ucworICAgICMgUHVzaCBhcyBzdHJpbmcKKyAgICBkYXRh Wydjb2x1bW5zX2NzdiddID0gJywgJy5qb2luKGNvbHMpCisKKyAgICByZXR1cm4gZGF0YQorCisK K0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9pbmNsdWRlX2RldGFpbHMoY29ubiwgaWR4LCBk YXRhLCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb25hbCB3 aWxsIGZldGNoIGxpc3Qgb2YgaW5jbHVkZSBkZXRhaWxzIGZvciBpbmRleAorICAgIHN1cHBvcnRl ZCB3aXRoIFBvc3RncmVzIDExKworCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gb2JqZWN0 CisgICAgOnBhcmFtIGlkeDogSW5kZXggSUQKKyAgICA6cGFyYW0gZGF0YTogZGF0YQorICAgIDpw YXJhbSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoK KyAgICAiIiIKKworICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgIi8iLmpvaW4o W3RlbXBsYXRlX3BhdGgsICdpbmNsdWRlX2RldGFpbHMuc3FsJ10pLCBpZHg9aWR4CisgICAgKQor ICAgIHN0YXR1cywgcnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJz ZXQpCisKKyAgICAjIFB1c2ggYXMgY29sbGVjdGlvbgorICAgIGRhdGFbJ2luY2x1ZGUnXSA9IFtj b2xbJ2NvbG5hbWUnXSBmb3IgY29sIGluIHJzZXRbJ3Jvd3MnXV0KKworICAgIHJldHVybiBkYXRh CisKKworQGdldF90ZW1wbGF0ZV9wYXRoCitkZWYgZ2V0X3NxbChjb25uLCBkYXRhLCBkaWQsIHRp ZCwgaWR4LCBkYXRsYXN0c3lzb2lkLAorICAgICAgICAgICAgbW9kZT1Ob25lLCB0ZW1wbGF0ZV9w YXRoPU5vbmUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwg ZnJvbSBtb2RlbCBkYXRhLgorCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2JqZWN0Cisg ICAgOnBhcmFtIGRhdGE6IERhdGEKKyAgICA6cGFyYW0gZGlkOgorICAgIDpwYXJhbSB0aWQ6IFRh YmxlIElECisgICAgOnBhcmFtIGlkeDogSW5kZXggSUQKKyAgICA6cGFyYW0gZGF0bGFzdHN5c29p ZDoKKyAgICA6cGFyYW0gbW9kZToKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogT3B0aW9uYWwg dGVtcGxhdGUgcGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgbmFtZSA9IGRhdGFbJ25h bWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIE5vbmUKKyAgICBpZiBpZHggaXMgbm90IE5vbmU6 CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwg J3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRp ZCwgdGlkPXRpZCwgaWR4PWlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxh c3RzeXNvaWQ9ZGF0bGFzdHN5c29pZCkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihy ZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoXygnQ291bGQg bm90IGZpbmQgdGhlIGluZGV4IGluIHRoZSB0YWJsZS4nKSkKKworICAgICAgICBvbGRfZGF0YSA9 IGRpY3QocmVzWydyb3dzJ11bMF0pCisKKyAgICAgICAgIyBJZiBuYW1lIGlzIG5vdCBwcmVzZW50 IGluIGRhdGEgdGhlbgorICAgICAgICAjIHdlIHdpbGwgZmV0Y2ggaXQgZnJvbSBvbGQgZGF0YSwg d2UgYWxzbyBuZWVkIHNjaGVtYSAmIHRhYmxlIG5hbWUKKyAgICAgICAgaWYgJ25hbWUnIG5vdCBp biBkYXRhOgorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWyduYW1l J10KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9p bihbdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICBkYXRhPWRhdGEs IG9fZGF0YT1vbGRfZGF0YSwgY29ubj1jb25uCisgICAgICAgICkKKyAgICBlbHNlOgorICAgICAg ICByZXF1aXJlZF9hcmdzID0geworICAgICAgICAgICAgJ25hbWUnOiAnTmFtZScsCisgICAgICAg ICAgICAnY29sdW1ucyc6ICdDb2x1bW5zJworICAgICAgICB9CisgICAgICAgIGZvciBhcmcgaW4g cmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgIGVyciA9IEZhbHNlCisgICAgICAgICAgICBpZiBh cmcgPT0gJ2NvbHVtbnMnIGFuZCBsZW4oZGF0YVsnY29sdW1ucyddKSA8IDE6CisgICAgICAgICAg ICAgICAgZXJyID0gVHJ1ZQorCisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAg ICAgICAgICAgICAgZXJyID0gVHJ1ZQorICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2 ZSBhdCBsZWFzdCBvbmUgY29sdW1uCisgICAgICAgICAgICBpZiBlcnI6CisgICAgICAgICAgICAg ICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpLCBuYW1lCisKKyAgICAgICAg IyBJZiB0aGUgcmVxdWVzdCBmb3IgbmV3IG9iamVjdCB3aGljaCBkbyBub3QgaGF2ZSBkaWQKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3RlbXBs YXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPWNv bm4sIG1vZGU9bW9kZQorICAgICAgICApCisgICAgICAgIFNRTCArPSAiXG4iCisgICAgICAgIFNR TCArPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0 aCwgJ2FsdGVyLnNxbCddKSwKKyAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1jb25uCisgICAg ICAgICkKKworICAgIHJldHVybiBTUUwsIG5hbWUKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2Rl ZiBnZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbChjb25uLCBzY2hlbWEsIHRhYmxlLCBkaWQsIHRp ZCwgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAi IiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHJldmVyc2UgZW5naW5lZXJlZCBzcWwg Zm9yIHNwZWNpZmllZCB0cmlnZ2VyLgorCisgICAgOnBhcmFtIGNvbm46IENvbm5lY3Rpb24gT2Jq ZWN0CisgICAgOnBhcmFtIHNjaGVtYTogU2NoZW1hCisgICAgOnBhcmFtIHRhYmxlOiBUYWJsZQor ICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElECisgICAgOnBhcmFtIGlkeDogSW5kZXggSUQKKyAgICA6 cGFyYW0gZGF0bGFzdHN5c29pZDoKKyAgICA6cGFyYW0gdGVtcGxhdGVfcGF0aDogT3B0aW9uYWwg dGVtcGxhdGUgcGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGlkeD1pZHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9ZGF0bGFzdHN5c29pZCkKKworICAgIHN0 YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbihyZXMpCisKKyAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09 IDA6CisgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoXygnQ291bGQgbm90IGZpbmQgdGhlIGluZGV4 IGluIHRoZSB0YWJsZS4nKSkKKworICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAg ICMgQWRkaW5nIHBhcmVudCBpbnRvIGRhdGEgZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGlsZSBj cmVhdGluZyBzcWwKKyAgICBkYXRhWydzY2hlbWEnXSA9IHNjaGVtYQorICAgIGRhdGFbJ3RhYmxl J10gPSB0YWJsZQorCisgICAgIyBBZGQgY29sdW1uIGRldGFpbHMgZm9yIGN1cnJlbnQgaW5kZXgK KyAgICBkYXRhID0gZ2V0X2NvbHVtbl9kZXRhaWxzKGNvbm4sIGlkeCwgZGF0YSwgJ2NyZWF0ZScp CisKKyAgICAjIEFkZCBJbmNsdWRlIGRldGFpbHMgb2YgdGhlIGluZGV4CisgICAgaWYgY29ubi5t YW5hZ2VyLnZlcnNpb24gPj0gMTEwMDAwOgorICAgICAgICBkYXRhID0gZ2V0X2luY2x1ZGVfZGV0 YWlscyhjb25uLCBpZHgsIGRhdGEpCisKKyAgICBTUUwsIG5hbWUgPSBnZXRfc3FsKGNvbm4sIGRh dGEsIGRpZCwgdGlkLCBOb25lLCBkYXRsYXN0c3lzb2lkKQorCisgICAgc3FsX2hlYWRlciA9IHUi LS0gSW5kZXg6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCisKKyAgICBzcWxfaGVh ZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PWNvbm4pCisKKyAgICBTUUwgPSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgU1FMCisKKyAgICByZXR1 cm4gU1FMCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvbWFjcm9z L2NvbnN0cmFpbnRzLm1hY3JvIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsL21hY3Jv cy9jb25zdHJhaW50cy5tYWNybwppbmRleCA3ODJlNzJmYmIuLjQzZGIzMGMxYyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsL21hY3Jvcy9jb25zdHJhaW50cy5tYWNy bworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvbWFjcm9zL2NvbnN0cmFpbnRz Lm1hY3JvCkBAIC0yNiw4ICsyNiw4IEBACiB7JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAl fXslIGlmIGxvb3AuaW5kZXggIT0xICV9LHslIGVuZGlmICV9CiAKICAgICB7JSBpZiBkYXRhLm5h bWUgJX1DT05TVFJBSU5UIHt7Y29ubnxxdElkZW50KGRhdGEubmFtZSl9fSB7JSBlbmRpZiAlfVVO SVFVRSAoeyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zJX0KLXslIGlmIGxvb3AuaW5kZXggIT0gMSAl fSwgeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLmNvbHVtbil9fXslIGVuZGZvciAlfSkKLXsl IGlmIGRhdGEuaW5jbHVkZXxsZW5ndGggPiAwICV9Cit7JSBpZiBsb29wLmluZGV4ICE9IDEgJX0s IHslIGVuZGlmICV9e3tjb25ufHF0SWRlbnQoYy5jb2x1bW4pfX17JSBlbmRmb3IgJX0peyUgaWYg ZGF0YS5pbmNsdWRlfGxlbmd0aCA+IDAgJX0KKwogICAgICAgICBJTkNMVURFKHslIGZvciBjb2wg aW4gZGF0YS5pbmNsdWRlICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfXt7 Y29ubnxxdElkZW50KGNvbCl9fXslIGVuZGZvciAlfSl7JSBlbmRpZiAlfQogeyUgaWYgZGF0YS5m aWxsZmFjdG9yICV9CiAKQEAgLTg5LDggKzg5LDEwIEBACiAgICAgICAgIElOQ0xVREUoeyUgZm9y IGNvbCBpbiBkYXRhLmluY2x1ZGUgJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVuZGlm ICV9e3tjb25ufHF0SWRlbnQoY29sKX19eyUgZW5kZm9yICV9KQogeyUgZW5kaWYgJX17JSBpZiBk YXRhLmZpbGxmYWN0b3IgJX0KICAgICAgICAgV0lUSCAoRklMTEZBQ1RPUj17e2RhdGEuZmlsbGZh Y3Rvcn19KXslIGVuZGlmICV9eyUgaWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRhLnNwY25hbWUgIT0g InBnX2RlZmF1bHQiICV9Ci0gICAgICAgIFVTSU5HIElOREVYIFRBQkxFU1BBQ0Uge3sgY29ubnxx dElkZW50KGRhdGEuc3BjbmFtZSkgfX17JSBlbmRpZiAlfQotICAgICAgICB7JSBpZiBkYXRhLmlu ZGNvbnN0cmFpbnQgJX1XSEVSRSAoe3tkYXRhLmluZGNvbnN0cmFpbnR9fSl7JSBlbmRpZiV9eyUg aWYgZGF0YS5jb25kZWZlcnJhYmxlICV9CisKKyAgICAgICAgVVNJTkcgSU5ERVggVEFCTEVTUEFD RSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKSB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5p bmRjb25zdHJhaW50ICV9CisKKyAgICAgICAgV0hFUkUgKHt7ZGF0YS5pbmRjb25zdHJhaW50fX0p eyUgZW5kaWYlfXslIGlmIGRhdGEuY29uZGVmZXJyYWJsZSAlfQogCiAgICAgICAgIERFRkVSUkFC TEV7JSBpZiBkYXRhLmNvbmRlZmVycmVkICV9CiAgSU5JVElBTExZIERFRkVSUkVEeyUgZW5kaWYl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcGcvMTBfcGx1 cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcGcvMTBfcGx1 cy9jcmVhdGUuc3FsCmluZGV4IDgwN2FiZTQ1Yy4uNzY3NmMxMzMyIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXJzL3NxbC9wZy8xMF9wbHVzL2NyZWF0ZS5zcWwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcGcvMTBfcGx1cy9jcmVhdGUuc3FsCkBA IC0xNyw2ICsxNyw3IEBAIENSRUFURXslIGlmIGRhdGEuaXNfY29uc3RyYWludF90cmlnZ2VyICV9 IENPTlNUUkFJTlR7JSBlbmRpZiAlfSBUUklHR0VSIHt7IGNvbm58CiAgICAgT04ge3sgY29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQogeyUgaWYgZGF0YS50Z2RlZmVycmFi bGUgJX0KICAgICBERUZFUlJBQkxFeyUgaWYgZGF0YS50Z2luaXRkZWZlcnJlZCAlfSBJTklUSUFM TFkgREVGRVJSRUR7JSBlbmRpZiAlfQorCiB7JSBlbmRpZiAlfQogeyUgaWYgZGF0YS50Z29sZHRh YmxlIG9yIGRhdGEudGduZXd0YWJsZSAlfQogICAgIFJFRkVSRU5DSU5HeyUgaWYgZGF0YS50Z25l d3RhYmxlICV9IE5FVyBUQUJMRSBBUyB7eyBjb25ufHF0SWRlbnQoZGF0YS50Z25ld3RhYmxlKSB9 fXslIGVuZGlmICV9eyUgaWYgZGF0YS50Z29sZHRhYmxlICV9IE9MRCBUQUJMRSBBUyB7eyBjb25u fHF0SWRlbnQoZGF0YS50Z29sZHRhYmxlKSB9fXslIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXJzL3NxbC9wZy9kZWZhdWx0L2NyZWF0ZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXJzL3NxbC9wZy9kZWZhdWx0L2NyZWF0ZS5zcWwKaW5kZXgg NGNmZmM5MjBmLi5lMDkwNWYxMDggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJp Z2dlcnMvc3FsL3BnL2RlZmF1bHQvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RyaWdnZXJzL3NxbC9wZy9kZWZhdWx0L2NyZWF0ZS5zcWwKQEAgLTE3LDYgKzE3LDcgQEAgQ1JF QVRFeyUgaWYgZGF0YS5pc19jb25zdHJhaW50X3RyaWdnZXIgJX0gQ09OU1RSQUlOVHslIGVuZGlm ICV9IFRSSUdHRVIge3sgY29ubnwKICAgICBPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEudGFibGUpIH19CiB7JSBpZiBkYXRhLnRnZGVmZXJyYWJsZSAlfQogICAgIERFRkVSUkFC TEV7JSBpZiBkYXRhLnRnaW5pdGRlZmVycmVkICV9IElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlm ICV9CisKIHslIGVuZGlmICV9CiAgICAgRk9SIEVBQ0h7JSBpZiBkYXRhLmlzX3Jvd190cmlnZ2Vy ICV9IFJPV3slIGVsc2UgJX0gU1RBVEVNRU5UeyUgZW5kaWYgJX0KIHslIGlmIGRhdGEud2hlbmNs YXVzZSAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcHBh cy8xMF9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXJzL3NxbC9w cGFzLzEwX3BsdXMvY3JlYXRlLnNxbAppbmRleCA4MDdhYmU0NWMuLjc2NzZjMTMzMiAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcHBhcy8xMF9wbHVzL2NyZWF0 ZS5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcHBhcy8xMF9wbHVz L2NyZWF0ZS5zcWwKQEAgLTE3LDYgKzE3LDcgQEAgQ1JFQVRFeyUgaWYgZGF0YS5pc19jb25zdHJh aW50X3RyaWdnZXIgJX0gQ09OU1RSQUlOVHslIGVuZGlmICV9IFRSSUdHRVIge3sgY29ubnwKICAg ICBPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpIH19CiB7JSBpZiBk YXRhLnRnZGVmZXJyYWJsZSAlfQogICAgIERFRkVSUkFCTEV7JSBpZiBkYXRhLnRnaW5pdGRlZmVy cmVkICV9IElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlmICV9CisKIHslIGVuZGlmICV9CiB7JSBp ZiBkYXRhLnRnb2xkdGFibGUgb3IgZGF0YS50Z25ld3RhYmxlICV9CiAgICAgUkVGRVJFTkNJTkd7 JSBpZiBkYXRhLnRnbmV3dGFibGUgJX0gTkVXIFRBQkxFIEFTIHt7IGNvbm58cXRJZGVudChkYXRh LnRnbmV3dGFibGUpIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRnb2xkdGFibGUgJX0gT0xEIFRB QkxFIEFTIHt7IGNvbm58cXRJZGVudChkYXRhLnRnb2xkdGFibGUpIH19eyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3BwYXMvZGVmYXVsdC9j cmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vycy9zcWwvcHBhcy9kZWZhdWx0 L2NyZWF0ZS5zcWwKaW5kZXggNGNmZmM5MjBmLi5lMDkwNWYxMDggMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3BwYXMvZGVmYXVsdC9jcmVhdGUuc3FsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlcnMvc3FsL3BwYXMvZGVmYXVsdC9jcmVhdGUuc3Fs CkBAIC0xNyw2ICsxNyw3IEBAIENSRUFURXslIGlmIGRhdGEuaXNfY29uc3RyYWludF90cmlnZ2Vy ICV9IENPTlNUUkFJTlR7JSBlbmRpZiAlfSBUUklHR0VSIHt7IGNvbm58CiAgICAgT04ge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQogeyUgaWYgZGF0YS50Z2RlZmVy cmFibGUgJX0KICAgICBERUZFUlJBQkxFeyUgaWYgZGF0YS50Z2luaXRkZWZlcnJlZCAlfSBJTklU SUFMTFkgREVGRVJSRUR7JSBlbmRpZiAlfQorCiB7JSBlbmRpZiAlfQogICAgIEZPUiBFQUNIeyUg aWYgZGF0YS5pc19yb3dfdHJpZ2dlciAlfSBST1d7JSBlbHNlICV9IFNUQVRFTUVOVHslIGVuZGlm ICV9CiB7JSBpZiBkYXRhLndoZW5jbGF1c2UgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0 cy90ZXN0X3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdXRpbHMucHkKaW5kZXggZjg0 ZWMzZDE0Li41YWM2ZjdiMjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3V0aWxz LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3V0aWxzLnB5CkBAIC01NSwxNSArNTUsNiBA QCBjbGFzcyBUZXN0VXRpbHMoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgIHN1 YmplY3QudGFibGVfdGVtcGxhdGVfcGF0aCwgJ3RhYmxlcy9zcWwvI2dwZGIjMTAjJykKICAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc3ViamVjdC5kYXRhX3R5 cGVfdGVtcGxhdGVfcGF0aCwgJ2RhdGF0eXBlL3NxbC8jZ3BkYiMxMCMnKQotICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzdWJqZWN0LmNoZWNrX2NvbnN0cmFp bnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAnY2hlY2tfY29uc3RyYWludC9zcWwv I2dwZGIjMTAjJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAg ICAgc3ViamVjdC5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICdleGNsdXNpb25fY29uc3RyYWludC9zcWwvI2dwZGIjMTAjJykKLSAgICAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc3ViamVjdC5mb3JlaWduX2tleV90 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICdmb3JlaWduX2tleS9zcWwvI2dwZGIjMTAj JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc3ViamVj dC5pbmRleF90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICdpbmRleGVzL3NxbC8jZ3Bk YiMxMCMnKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RyaWdnZXJzL19faW5pdF9fLnB5CmluZGV4IGVjYzIzMTcyNS4uNjFiNTNmOTkzIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RyaWdnZXJzL19faW5pdF9fLnB5CkBAIC0xMyw2ICsxMywxMCBAQCBpbXBvcnQgc2ltcGxlanNv biBhcyBqc29uCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKIAogaW1wb3J0IHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNlCitpbXBv cnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1h cy50YWJsZXMuXAorICAgIHRyaWdnZXJzLnV0aWxzIGFzIHRyaWdnZXJfdXRpbHMKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGls cyBcCisgICAgaW1wb3J0IHRyaWdnZXJfZGVmaW5pdGlvbgogZnJvbSBmbGFzayBpbXBvcnQgcmVu ZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBqc29uaWZ5CiBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0 IGdldHRleHQKIGZyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rp b25Ob2RlTW9kdWxlCkBAIC0xOTIsOSArMTk2LDYgQEAgY2xhc3MgVHJpZ2dlclZpZXcoUEdDaGls ZE5vZGVWaWV3KToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZAogICAgICAgICBUcmlnZ2VyIG5vZGUKIAotICAgICog Z2V0X3NxbChkYXRhLCBzY2lkLCB0aWQsIHRyaWQpCi0gICAgICAtIFRoaXMgZnVuY3Rpb24gd2ls bCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCi0KICAgICAqIHNxbChnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQsIHRyaWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg c3FsIHRvIHNob3cgaXQgaW4gc3FsIHBhbmUgZm9yIHRoZQogICAgICAgICBzZWxlY3RlZCBUcmln Z2VyIG5vZGUuCkBAIC0yMTAsMTMgKzIxMSw2IEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGRO b2RlVmlldyk6CiAgICAgKiBnZXRfdHJpZ2dlcl9mdW5jdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCB0cmlkKToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9m IHRyaWdnZXIgZnVuY3Rpb25zIGF2YWlsYWJsZQogICAgICAgICB2aWEgQUpBWCByZXNwb25zZQot Ci0gICAgKiBfY29sdW1uX2RldGFpbHModGlkLCBjbGlzdCk6OgotICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgZmV0Y2ggdGhlIGNvbHVtbnMgZm9yIHRyaWdnZXIKLQotICAgICogX3RyaWdnZXJf ZGVmaW5pdGlvbihkYXRhKToKLSAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHNldCBhZGRpdGlv bmFsIHRyaWdnZXIgZGVmaW5pdGlvbnMgaW4KLSAgICAgICAgQUpBWCByZXNwb25zZQogICAgICIi IgogCiAgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQpAQCAtMjgwLDI4ICsyNzQs OSBAQCBjbGFzcyBUcmlnZ2VyVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgIyBX ZSBuZWVkIHBhcmVudCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQgc2NoZW1hIG5hbWUKICAgICAg ICAgICAgICMgd2hlbiB3ZSBjcmVhdGUgbmV3IHRyaWdnZXIgaW4gdXBkYXRlIHdlIGNhbiBmZXRj aCBpdCB1c2luZwogICAgICAgICAgICAgIyBwcm9wZXJ0eSBzcWwKLSAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWt3YXJnc1sndGlkJ10pCi0gICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgICAgICBmb3Igcm93IGluIHJz ZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHJvd1snc2NoZW1hJ10K LSAgICAgICAgICAgICAgICBzZWxmLnRhYmxlID0gcm93Wyd0YWJsZSddCi0KLSAgICAgICAgICAg ICMgSGVyZSB3ZSBhcmUgc3RvcmluZyB0cmlnZ2VyIGRlZmluaXRpb24KLSAgICAgICAgICAgICMg V2Ugd2lsbCB1c2UgaXQgdG8gY2hlY2sgdHJpZ2dlciB0eXBlIGRlZmluaXRpb24KLSAgICAgICAg ICAgIHNlbGYudHJpZ2dlcl9kZWZpbml0aW9uID0gewotICAgICAgICAgICAgICAgICdUUklHR0VS X1RZUEVfUk9XJzogKDEgPDwgMCksCi0gICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9CRUZP UkUnOiAoMSA8PCAxKSwKLSAgICAgICAgICAgICAgICAnVFJJR0dFUl9UWVBFX0lOU0VSVCc6ICgx IDw8IDIpLAotICAgICAgICAgICAgICAgICdUUklHR0VSX1RZUEVfREVMRVRFJzogKDEgPDwgMyks Ci0gICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9VUERBVEUnOiAoMSA8PCA0KSwKLSAgICAg ICAgICAgICAgICAnVFJJR0dFUl9UWVBFX1RSVU5DQVRFJzogKDEgPDwgNSksCi0gICAgICAgICAg ICAgICAgJ1RSSUdHRVJfVFlQRV9JTlNURUFEJzogKDEgPDwgNikKLSAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHNjaGVtYSwgdGFibGUgPSB0cmlnZ2VyX3V0aWxzLmdldF9wYXJlbnQoc2VsZi5j b25uLCBrd2FyZ3NbJ3RpZCddKQorICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSBzY2hlbWEKKyAg ICAgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogCiAgICAgICAgICAgICByZXR1cm4gZigqYXJn cywgKiprd2FyZ3MpCiAKQEAgLTQ1OCw5MyArNDMzLDYgQEAgY2xhc3MgVHJpZ2dlclZpZXcoUEdD aGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAg ZGVmIF9jb2x1bW5fZGV0YWlscyhzZWxmLCB0aWQsIGNsaXN0KToKLSAgICAgICAgIiIiCi0gICAg ICAgIFRoaXMgZnVuY3Rpb25hbCB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGZvciB0cmlnZ2Vy Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lECi0gICAgICAgICAg ICBjbGlzdDogTGlzdCBvZiBjb2x1bW5zCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAg IFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdpdGggY29sdW1uCi0gICAgICAgICIiIgotCi0gICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29sdW1ucy5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlzdD1jbGlzdCkK LSAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCi0gICAgICAgICMgJ3RnYXR0cicgY29udGFpbnMgbGlzdCBv ZiBjb2x1bW5zIGZyb20gdGFibGUgdXNlZCBpbiB0cmlnZ2VyCi0gICAgICAgIGNvbHVtbnMgPSBb XQotCi0gICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAgICAgY29sdW1u cy5hcHBlbmQocm93WyduYW1lJ10pCi0KLSAgICAgICAgcmV0dXJuIGNvbHVtbnMKLQotICAgIGRl ZiBfdHJpZ2dlcl9kZWZpbml0aW9uKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAg VGhpcyBmdW5jdGlvbmFsIHdpbGwgc2V0IHRoZSB0cmlnZ2VyIGRlZmluaXRpb24KLQotICAgICAg ICBBcmdzOgotICAgICAgICAgICAgZGF0YTogUHJvcGVydGllcyBkYXRhCi0KLSAgICAgICAgUmV0 dXJuczoKLSAgICAgICAgICAgIFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdpdGggdHJpZ2dlciBk ZWZpbml0aW9uCi0gICAgICAgICIiIgotCi0gICAgICAgICMgRmlyZXMgZXZlbnQgZGVmaW5pdGlv bgotICAgICAgICBpZiBkYXRhWyd0Z3R5cGUnXSAmIHNlbGYudHJpZ2dlcl9kZWZpbml0aW9uWydU UklHR0VSX1RZUEVfQkVGT1JFJ106Ci0gICAgICAgICAgICBkYXRhWydmaXJlcyddID0gJ0JFRk9S RScKLSAgICAgICAgZWxpZiBkYXRhWyd0Z3R5cGUnXSAmIHNlbGYudHJpZ2dlcl9kZWZpbml0aW9u WydUUklHR0VSX1RZUEVfSU5TVEVBRCddOgotICAgICAgICAgICAgZGF0YVsnZmlyZXMnXSA9ICdJ TlNURUFEIE9GJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YVsnZmlyZXMnXSA9ICdB RlRFUicKLQotICAgICAgICAjIFRyaWdnZXIgb2YgdHlwZSBkZWZpbml0aW9uCi0gICAgICAgIGlm IGRhdGFbJ3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9S T1cnXToKLSAgICAgICAgICAgIGRhdGFbJ2lzX3Jvd190cmlnZ2VyJ10gPSBUcnVlCi0gICAgICAg IGVsc2U6Ci0gICAgICAgICAgICBkYXRhWydpc19yb3dfdHJpZ2dlciddID0gRmFsc2UKLQotICAg ICAgICAjIEV2ZW50IGRlZmluaXRpb24KLSAgICAgICAgaWYgZGF0YVsndGd0eXBlJ10gJiBzZWxm LnRyaWdnZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBFX0lOU0VSVCddOgotICAgICAgICAgICAg ZGF0YVsnZXZudF9pbnNlcnQnXSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRh dGFbJ2V2bnRfaW5zZXJ0J10gPSBGYWxzZQotCi0gICAgICAgIGlmIGRhdGFbJ3RndHlwZSddICYg c2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9ERUxFVEUnXToKLSAgICAgICAg ICAgIGRhdGFbJ2V2bnRfZGVsZXRlJ10gPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICBkYXRhWydldm50X2RlbGV0ZSddID0gRmFsc2UKLQotICAgICAgICBpZiBkYXRhWyd0Z3R5cGUn XSAmIHNlbGYudHJpZ2dlcl9kZWZpbml0aW9uWydUUklHR0VSX1RZUEVfVVBEQVRFJ106Ci0gICAg ICAgICAgICBkYXRhWydldm50X3VwZGF0ZSddID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAg ICAgICAgZGF0YVsnZXZudF91cGRhdGUnXSA9IEZhbHNlCi0KLSAgICAgICAgaWYgZGF0YVsndGd0 eXBlJ10gJiBzZWxmLnRyaWdnZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBFX1RSVU5DQVRFJ106 Ci0gICAgICAgICAgICBkYXRhWydldm50X3RydW5jYXRlJ10gPSBUcnVlCi0gICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICBkYXRhWydldm50X3RydW5jYXRlJ10gPSBGYWxzZQotCi0gICAgICAgIHJl dHVybiBkYXRhCi0KLSAgICBkZWYgX2Zvcm1hdF9hcmdzKHNlbGYsIGFyZ3MpOgotICAgICAgICAi IiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZvcm1hdCBhcmd1bWVudHMuCi0KLSAgICAg ICAgQXJnczoKLSAgICAgICAgICAgIGFyZ3M6IEFyZ3VtZW50cwotCi0gICAgICAgIFJldHVybnM6 Ci0gICAgICAgICAgICBGb3JtYXRlZCBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCi0gICAgICAgICIi IgotICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IFsiJ3swfSciLmZvcm1hdChhcmcpIGZvciBhcmcg aW4gYXJnc10KLSAgICAgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0ZWRfYXJncykKLQogICAg IEBjaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkLCB0aWQsIHRyaWQpOgogICAgICAgICAiIiIKQEAgLTU3OSwxOCArNDY3LDEwIEBA IGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6CiAKICAgICAgICAgIyBNYWtpbmcg Y29weSBvZiBvdXRwdXQgZm9yIGZ1dHVyZSB1c2UKICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydy b3dzJ11bMF0pCi0gICAgICAgIGRhdGEgPSBzZWxmLmdldF90cmlnZ2VyX2Z1bmN0aW9uX3NjaGVt YShkYXRhKQotCi0gICAgICAgIGlmIGxlbihkYXRhWydjdXN0b21fdGdhcmdzJ10pID4gMToKLSAg ICAgICAgICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhhbiAxIGFyZ3VtZW50 LCBsZXQncyBqb2luIHRoZW0KLSAgICAgICAgICAgICMgYW5kIGNvbnZlcnQgaXQgdG8gc3RyaW5n Ci0gICAgICAgICAgICBkYXRhWyd0Z2FyZ3MnXSA9IHNlbGYuX2Zvcm1hdF9hcmdzKGRhdGFbJ2N1 c3RvbV90Z2FyZ3MnXSkKKyAgICAgICAgZGF0YSA9IHRyaWdnZXJfdXRpbHMuZ2V0X3RyaWdnZXJf ZnVuY3Rpb25fYW5kX2NvbHVtbnMoCisgICAgICAgICAgICBzZWxmLmNvbm4sIGRhdGEsIHRpZCwg c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKIAotICAgICAgICBpZiBsZW4oZGF0 YVsndGdhdHRyJ10pID49IDE6Ci0gICAgICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKGRhdGFb J3RnYXR0ciddLnNwbGl0KCcgJykpCi0gICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBzZWxm Ll9jb2x1bW5fZGV0YWlscyh0aWQsIGNvbHVtbnMpCi0KLSAgICAgICAgZGF0YSA9IHNlbGYuX3Ry aWdnZXJfZGVmaW5pdGlvbihkYXRhKQorICAgICAgICBkYXRhID0gdHJpZ2dlcl9kZWZpbml0aW9u KGRhdGEpCiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCiAgICAgICAgICAgICByZXNw b25zZT1kYXRhLApAQCAtNzYzLDcgKzY0MywxMCBAQCBjbGFzcyBUcmlnZ2VyVmlldyhQR0NoaWxk Tm9kZVZpZXcpOgogICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQogICAg ICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKIAotICAgICAgICAgICAgU1FMLCBu YW1lID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwgdHJpZCwgZGF0YSkKKyAgICAgICAgICAgIFNR TCwgbmFtZSA9IHRyaWdnZXJfdXRpbHMuZ2V0X3NxbCgKKyAgICAgICAgICAgICAgICBzZWxmLmNv bm4sIGRhdGEsIHRpZCwgdHJpZCwgc2VsZi5kYXRsYXN0c3lzb2lkLAorICAgICAgICAgICAgICAg IHNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMpCisKICAgICAgICAgICAgIGlmIG5v dCBpc2luc3RhbmNlKFNRTCwgKHN0ciwgdW5pY29kZSkpOgogICAgICAgICAgICAgICAgIHJldHVy biBTUUwKICAgICAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCkBAIC04 NDIsNyArNzI1LDkgQEAgY2xhc3MgVHJpZ2dlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAg ICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAg ICBzcWwsIG5hbWUgPSBzZWxmLmdldF9zcWwoc2NpZCwgdGlkLCB0cmlkLCBkYXRhKQorICAgICAg ICAgICAgc3FsLCBuYW1lID0gdHJpZ2dlcl91dGlscy5nZXRfc3FsKAorICAgICAgICAgICAgICAg IHNlbGYuY29ubiwgZGF0YSwgdGlkLCB0cmlkLCBzZWxmLmRhdGxhc3RzeXNvaWQsCisgICAgICAg ICAgICAgICAgc2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKICAgICAgICAgICAg IGlmIG5vdCBpc2luc3RhbmNlKHNxbCwgKHN0ciwgdW5pY29kZSkpOgogICAgICAgICAgICAgICAg IHJldHVybiBzcWwKICAgICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcp CkBAIC04NTYsOTUgKzc0MSw2IEBAIGNsYXNzIFRyaWdnZXJWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgZGVmIGdldF90cmlnZ2Vy X2Z1bmN0aW9uX3NjaGVtYShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCByZXR1cm4gdHJpZ2dlciBmdW5jdGlvbiB3aXRoIHNjaGVtYSBuYW1lCi0g ICAgICAgICIiIgotICAgICAgICAjIElmIGxhbmd1YWdlIGlzICdlZGJzcGwnIHRoZW4gdHJpZ2dl ciBmdW5jdGlvbiBzaG91bGQgYmUKLSAgICAgICAgIyAnSW5saW5lIEVEQi1TUEwnIGVsc2Ugd2Ug d2lsbCBmaW5kIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uCi0gICAgICAgICMgd2l0aCBzY2hlbWEgbmFt ZS4KLSAgICAgICAgaWYgZGF0YVsnbGFubmFtZSddID09ICdlZGJzcGwnOgotICAgICAgICAgICAg ZGF0YVsndGZ1bmN0aW9uJ10gPSAnSW5saW5lIEVEQi1TUEwnCi0gICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF90cmlnZ2VyZnVuY3Rpb25zLnNxbCddKSwKLSAgICAg ICAgICAgICAgICB0Z2ZvaWQ9ZGF0YVsndGdmb2lkJ10sCi0gICAgICAgICAgICAgICAgc2hvd19z eXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzCi0gICAgICAg ICAgICApCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQotCi0gICAgICAgICAg ICAjIFVwZGF0ZSB0aGUgdHJpZ2dlciBmdW5jdGlvbiB3aGljaCB3ZSBoYXZlIGZldGNoZWQgd2l0 aCBzY2hlbWEKLSAgICAgICAgICAgICMgbmFtZQotICAgICAgICAgICAgaWYgJ3Jvd3MnIGluIHJl c3VsdCBhbmQgbGVuKHJlc3VsdFsncm93cyddKSA+IDAgYW5kIFwKLSAgICAgICAgICAgICAgICAg ICAgJ3RmdW5jdGlvbnMnIGluIHJlc3VsdFsncm93cyddWzBdOgotICAgICAgICAgICAgICAgIGRh dGFbJ3RmdW5jdGlvbiddID0gcmVzdWx0Wydyb3dzJ11bMF1bJ3RmdW5jdGlvbnMnXQotICAgICAg ICByZXR1cm4gZGF0YQotCi0gICAgZGVmIGdldF9zcWwoc2VsZiwgc2NpZCwgdGlkLCB0cmlkLCBk YXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5yYXRlIHNx bCBmcm9tIG1vZGVsIGRhdGEKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHRyaWQgaXMgbm90IE5v bmU6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD10aWQsIHRyaWQ9dHJpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRs YXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCi0gICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6Ci0gICAgICAgICAgICAg ICAgcmV0dXJuIGdvbmUoCi0gICAgICAgICAgICAgICAgICAgIGdldHRleHQoIiIiQ291bGQgbm90 IGZpbmQgdGhlIHRyaWdnZXIgaW4gdGhlIHRhYmxlLiIiIikKLSAgICAgICAgICAgICAgICApCi0K LSAgICAgICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKLQotICAgICAgICAg ICAgIyBJZiBuYW1lIGlzIG5vdCBwcmVzZW50IGluIGRhdGEgdGhlbgotICAgICAgICAgICAgIyB3 ZSB3aWxsIGZldGNoIGl0IGZyb20gb2xkIGRhdGEsIHdlIGFsc28gbmVlZCBzY2hlbWEgJiB0YWJs ZSBuYW1lCi0gICAgICAgICAgICBpZiAnbmFtZScgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAg ICAgZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICBzZWxmLnRy aWdnZXJfbmFtZSA9IGRhdGFbJ25hbWUnXQotICAgICAgICAgICAgc2VsZi5sYW5uYW1lID0gb2xk X2RhdGFbJ2xhbm5hbWUnXQotICAgICAgICAgICAgc2VsZi5pc190cmlnZ2VyX2VuYWJsZWQgPSBv bGRfZGF0YVsnaXNfZW5hYmxlX3RyaWdnZXInXQotCi0gICAgICAgICAgICBvbGRfZGF0YSA9IHNl bGYuZ2V0X3RyaWdnZXJfZnVuY3Rpb25fc2NoZW1hKG9sZF9kYXRhKQotCi0gICAgICAgICAgICBp ZiBsZW4ob2xkX2RhdGFbJ2N1c3RvbV90Z2FyZ3MnXSkgPiAxOgotICAgICAgICAgICAgICAgICMg V2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhhbiAxIGFyZ3VtZW50LCBsZXQncyBqb2lu Ci0gICAgICAgICAgICAgICAgIyB0aGVtCi0gICAgICAgICAgICAgICAgb2xkX2RhdGFbJ3RnYXJn cyddID0gXAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXRfYXJncyhvbGRfZGF0YVsn Y3VzdG9tX3RnYXJncyddKQotCi0gICAgICAgICAgICBpZiBsZW4ob2xkX2RhdGFbJ3RnYXR0cidd KSA+IDE6Ci0gICAgICAgICAgICAgICAgY29sdW1ucyA9ICcsICcuam9pbihvbGRfZGF0YVsndGdh dHRyJ10uc3BsaXQoJyAnKSkKLSAgICAgICAgICAgICAgICBvbGRfZGF0YVsnY29sdW1ucyddID0g c2VsZi5fY29sdW1uX2RldGFpbHModGlkLCBjb2x1bW5zKQotCi0gICAgICAgICAgICBvbGRfZGF0 YSA9IHNlbGYuX3RyaWdnZXJfZGVmaW5pdGlvbihvbGRfZGF0YSkKLQotICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19k YXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubgotICAgICAgICAgICAgKQotICAgICAgICBlbHNl OgotICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IHsKLSAgICAgICAgICAgICAgICAnbmFtZSc6 ICdOYW1lJywKLSAgICAgICAgICAgICAgICAndGZ1bmN0aW9uJzogJ1RyaWdnZXIgZnVuY3Rpb24n Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoK LSAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAg IHJldHVybiBnZXR0ZXh0KCctLSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAgICAgICAg ICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAot ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0gICAgICAgIHJldHVybiBTUUwsIGRhdGFbJ25h bWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10KLQogICAgIEBjaGVj a19wcmVjb25kaXRpb24KICAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCwgdHJpZCk6CiAgICAgICAgICIiIgpAQCAtOTU5LDUxICs3NTUsOSBAQCBjbGFzcyBUcmlnZ2Vy VmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICB0cmlkOiBUcmlnZ2VyIElECiAgICAg ICAgICIiIgogCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw cm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs IHRyaWQ9dHJpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9 c2VsZi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgaWYgbGVuKHJl c1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIGdvbmUoCi0gICAgICAgICAgICAg ICAgZ2V0dGV4dCgiIiJDb3VsZCBub3QgZmluZCB0aGUgdHJpZ2dlciBpbiB0aGUgdGFibGUuIiIi KSkKLQotICAgICAgICBkYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKLSAgICAgICAgIyBBZGRp bmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5n IHNxbAotICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCi0gICAgICAgIGRhdGFb J3RhYmxlJ10gPSBzZWxmLnRhYmxlCi0KLSAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RyaWdnZXJf ZnVuY3Rpb25fc2NoZW1hKGRhdGEpCi0KLSAgICAgICAgaWYgbGVuKGRhdGFbJ2N1c3RvbV90Z2Fy Z3MnXSkgPiAxOgotICAgICAgICAgICAgIyBXZSBrbm93IHRoYXQgdHJpZ2dlciBoYXMgbW9yZSB0 aGFuIDEgYXJndW1lbnQsIGxldCdzIGpvaW4gdGhlbQotICAgICAgICAgICAgZGF0YVsndGdhcmdz J10gPSBzZWxmLl9mb3JtYXRfYXJncyhkYXRhWydjdXN0b21fdGdhcmdzJ10pCi0KLSAgICAgICAg aWYgbGVuKGRhdGFbJ3RnYXR0ciddKSA+PSAxOgotICAgICAgICAgICAgY29sdW1ucyA9ICcsICcu am9pbihkYXRhWyd0Z2F0dHInXS5zcGxpdCgnICcpKQotICAgICAgICAgICAgZGF0YVsnY29sdW1u cyddID0gc2VsZi5fY29sdW1uX2RldGFpbHModGlkLCBjb2x1bW5zKQotCi0gICAgICAgIGRhdGEg PSBzZWxmLl90cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKLQotICAgICAgICBTUUwsIG5hbWUgPSBz ZWxmLmdldF9zcWwoc2NpZCwgdGlkLCBOb25lLCBkYXRhKQotCi0gICAgICAgIHNxbF9oZWFkZXIg PSB1Ii0tIFRyaWdnZXI6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCi0KLSAgICAg ICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk ZWxldGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgIFNRTCA9IHNxbF9oZWFkZXIgKyAnXG5c bicgKyBTUUwuc3RyaXAoJ1xuJykKLQotICAgICAgICAjIElmIHRyaWdnZXIgaXMgZGlzYmFsZWQg dGhlbiBhZGQgc3FsIGNvZGUgZm9yIHRoZSBzYW1lCi0gICAgICAgIGlmIGRhdGFbJ2lzX2VuYWJs ZV90cmlnZ2VyJ10gIT0gJ08nOgotICAgICAgICAgICAgU1FMICs9ICdcblxuJwotICAgICAgICAg ICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZV9kaXNh YmxlX3RyaWdnZXIuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICBTUUwgPSB0cmlnZ2VyX3V0aWxzLmdl dF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKAorICAgICAgICAgICAgc2VsZi5jb25uLCBzZWxmLnNj aGVtYSwgc2VsZi50YWJsZSwgdGlkLCB0cmlkLAorICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lz b2lkLCBzZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQogCiAgICAgICAgIHJldHVy biBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNRTCkKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Ry aWdnZXJzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3V0aWxzLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNzBhMjdiZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RyaWdnZXJzL3V0aWxzLnB5CkBAIC0wLDAgKzEsMjU2IEBACisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisiIiIgSW1wbGVtZW50cyBVdGlsaXR5IGNsYXNzIGZvciBGb3JlaWdu IEtleXMuICIiIgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUKK2Zyb20gZmxh c2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBp bXBvcnQgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0aW9u IGltcG9ydCBPYmplY3RHb25lCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGltcG9ydCB0cmlnZ2VyX2RlZmlu aXRpb24KK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2RlZiBnZXRfdGVtcGxhdGVf cGF0aChmKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVj b3JhdG9yIHdoaWNoIHdpbGwgcHJlcGFyZQorICAgIHRoZSB0ZW1wbGF0ZSBwYXRoIGJhc2VkIG9u IGRhdGFiYXNlIHNlcnZlciB2ZXJzaW9uLgorICAgICIiIgorCisgICAgQHdyYXBzKGYpCisgICAg ZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBo b2xkIHRoZSBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICBjb25uX29iaiA9IGFyZ3NbMF0KKyAg ICAgICAgdGVtcGxhdGVfcGF0aCA9ICcnCisgICAgICAgIGlmICd0ZW1wbGF0ZV9wYXRoJyBub3Qg aW4ga3dhcmdzOgorICAgICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICd0cmlnZ2Vycy9zcWwvezB9 LyN7MX0jJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgY29ubl9vYmoubWFuYWdlci5zZXJ2ZXJf dHlwZSwgY29ubl9vYmoubWFuYWdlci52ZXJzaW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgdGVtcGxhdGVfcGF0aCA9IGt3YXJnc1sndGVtcGxhdGVfcGF0aCddCisKKyAgICAgICAgcmV0 dXJuIGYoKmFyZ3MsICoqa3dhcmdzLCB0ZW1wbGF0ZV9wYXRoPXRlbXBsYXRlX3BhdGgpCisgICAg cmV0dXJuIHdyYXAKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2RlZiBnZXRfcGFyZW50KGNvbm4s IHRpZCwgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIHRoZSBwYXJlbnQgb2YgdGhlIGdpdmVuIHRhYmxlLgorICAgIDpwYXJhbSBjb25u OiBDb25uZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSB0aWQ6IFRhYmxlIG9pZAorICAgIDpwYXJh bSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCB0ZW1wbGF0ZSBwYXRoCisgICAgOnJldHVybjoKKyAg ICAiIiIKKworICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCdd KSwgdGlkPXRpZCkKKyAgICBzdGF0dXMsIHJzZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJzZXQpCisKKyAg ICBzY2hlbWEgPSAnJworICAgIHRhYmxlID0gJycKKyAgICBpZiAncm93cycgaW4gcnNldCBhbmQg bGVuKHJzZXRbJ3Jvd3MnXSkgPiAwOgorICAgICAgICBzY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1b J3NjaGVtYSddCisgICAgICAgIHRhYmxlID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisKKyAg ICByZXR1cm4gc2NoZW1hLCB0YWJsZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9j b2x1bW5fZGV0YWlscyhjb25uLCB0aWQsIGNsaXN0LCB0ZW1wbGF0ZV9wYXRoPU5vbmUpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb25hbCB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGZvciB0 cmlnZ2VyLgorICAgIDpwYXJhbSBjb25uOgorICAgIDpwYXJhbSB0aWQ6CisgICAgOnBhcmFtIGNs aXN0OgorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOgorICAgIDpyZXR1cm46CisgICAgIiIiCisK KyAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlzdD1jbGlzdCkKKyAgICBzdGF0dXMs IHJzZXQgPSBjb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAg Y29sdW1ucyA9IFtdCisgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgIGNvbHVt bnMuYXBwZW5kKHJvd1snbmFtZSddKQorCisgICAgcmV0dXJuIGNvbHVtbnMKKworCitAZ2V0X3Rl bXBsYXRlX3BhdGgKK2RlZiBnZXRfdHJpZ2dlcl9mdW5jdGlvbl9hbmRfY29sdW1ucyhjb25uLCBk YXRhLCB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXN0 ZW1fb2JqZWN0cywgdGVtcGxhdGVfcGF0aD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV0dXJuIHRyaWdnZXIgZnVuY3Rpb24gd2l0aCBzY2hlbWEgbmFtZS4KKyAgICA6 cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gZGF0YTogRGF0YQorICAg IDpwYXJhbSB0aWQ6IFRhYmxlIElECisgICAgOnBhcmFtIHNob3dfc3lzdGVtX29iamVjdHM6IHNo b3cgc3lzdGVtIG9iamVjdAorICAgIDpwYXJhbSB0ZW1wbGF0ZV9wYXRoOiBPcHRpb25hbCBUZW1w bGF0ZSBQYXRoCisgICAgOnJldHVybjoKKyAgICAiIiIKKyAgICAjIElmIGxhbmd1YWdlIGlzICdl ZGJzcGwnIHRoZW4gdHJpZ2dlciBmdW5jdGlvbiBzaG91bGQgYmUKKyAgICAjICdJbmxpbmUgRURC LVNQTCcgZWxzZSB3ZSB3aWxsIGZpbmQgdGhlIHRyaWdnZXIgZnVuY3Rpb24KKyAgICAjIHdpdGgg c2NoZW1hIG5hbWUuCisgICAgaWYgZGF0YVsnbGFubmFtZSddID09ICdlZGJzcGwnOgorICAgICAg ICBkYXRhWyd0ZnVuY3Rpb24nXSA9ICdJbmxpbmUgRURCLVNQTCcKKyAgICBlbHNlOgorICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBbdGVtcGxhdGVf cGF0aCwgJ2dldF90cmlnZ2VyZnVuY3Rpb25zLnNxbCddKSwKKyAgICAgICAgICAgIHRnZm9pZD1k YXRhWyd0Z2ZvaWQnXSwKKyAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9c2hvd19zeXN0 ZW1fb2JqZWN0cworICAgICAgICApCisKKyAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmV4 ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgICAgICAjIFVw ZGF0ZSB0aGUgdHJpZ2dlciBmdW5jdGlvbiB3aGljaCB3ZSBoYXZlIGZldGNoZWQgd2l0aAorICAg ICAgICAjIHNjaGVtYSBuYW1lCisgICAgICAgIGlmICdyb3dzJyBpbiByZXN1bHQgYW5kIGxlbihy ZXN1bHRbJ3Jvd3MnXSkgPiAwIGFuZCBcCisgICAgICAgICAgICAgICAgJ3RmdW5jdGlvbnMnIGlu IHJlc3VsdFsncm93cyddWzBdOgorICAgICAgICAgICAgZGF0YVsndGZ1bmN0aW9uJ10gPSByZXN1 bHRbJ3Jvd3MnXVswXVsndGZ1bmN0aW9ucyddCisKKyAgICAgICAgaWYgbGVuKGRhdGFbJ2N1c3Rv bV90Z2FyZ3MnXSkgPiAxOgorICAgICAgICAgICAgIyBXZSBrbm93IHRoYXQgdHJpZ2dlciBoYXMg bW9yZSB0aGFuIDEgYXJndW1lbnQsIGxldCdzIGpvaW4gdGhlbQorICAgICAgICAgICAgIyBhbmQg Y29udmVydCBpdCB0byBzdHJpbmcKKyAgICAgICAgICAgIGZvcm1hdHRlZF9hcmdzID0gWyInezB9 JyIuZm9ybWF0KGFyZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhcmcgaW4g ZGF0YVsnY3VzdG9tX3RnYXJncyddXQorICAgICAgICAgICAgZm9ybWF0dGVkX2FyZ3MgPSAnLCAn LmpvaW4oZm9ybWF0dGVkX2FyZ3MpCisKKyAgICAgICAgICAgIGRhdGFbJ3RnYXJncyddID0gZm9y bWF0dGVkX2FyZ3MKKworICAgICAgICBpZiBsZW4oZGF0YVsndGdhdHRyJ10pID49IDE6CisgICAg ICAgICAgICBjb2x1bW5zID0gJywgJy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCisg ICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBnZXRfY29sdW1uX2RldGFpbHMoY29ubiwgdGlk LCBjb2x1bW5zKQorCisgICAgcmV0dXJuIGRhdGEKKworCitAZ2V0X3RlbXBsYXRlX3BhdGgKK2Rl ZiBnZXRfc3FsKGNvbm4sIGRhdGEsIHRpZCwgdHJpZCwgZGF0bGFzdHN5c29pZCwKKyAgICAgICAg ICAgIHNob3dfc3lzdGVtX29iamVjdHMsIHRlbXBsYXRlX3BhdGg9Tm9uZSk6CisgICAgIiIiCisg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisKKyAg ICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBPYmplY3QKKyAgICA6cGFyYW0gZGF0YTogRGF0YQor ICAgIDpwYXJhbSB0aWQ6IFRhYmxlIElECisgICAgOnBhcmFtIHRyaWQ6IFRyaWdnZXIgSUQKKyAg ICA6cGFyYW0gZGF0bGFzdHN5c29pZDoKKyAgICA6cGFyYW0gc2hvd19zeXN0ZW1fb2JqZWN0czog U2hvdyBTeXN0ZW0gT2JqZWN0IHZhbHVlIFRydWUgb3IgRmFsc2UKKyAgICA6cGFyYW0gdGVtcGxh dGVfcGF0aDogT3B0aW9uYWwgdGVtcGxhdGUgcGF0aAorICAgIDpyZXR1cm46CisgICAgIiIiCisg ICAgbmFtZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIE5vbmUKKyAgICBp ZiB0cmlkIGlzIG5vdCBOb25lOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRpZD10aWQsIHRyaWQ9dHJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9ZGF0bGFzdHN5c29pZCkKKworICAgICAgICBzdGF0dXMsIHJl cyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbihyZXMpCisKKyAgICAgICAgaWYgbGVuKHJlc1sncm93cydd KSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgT2JqZWN0R29uZShfKCdDb3VsZCBub3QgZmluZCB0 aGUgdHJpZ2dlciBpbiB0aGUgdGFibGUuJykpCisKKyAgICAgICAgb2xkX2RhdGEgPSBkaWN0KHJl c1sncm93cyddWzBdKQorICAgICAgICAjIElmIG5hbWUgaXMgbm90IHByZXNlbnQgaW4gZGF0YSB0 aGVuCisgICAgICAgICMgd2Ugd2lsbCBmZXRjaCBpdCBmcm9tIG9sZCBkYXRhLCB3ZSBhbHNvIG5l ZWQgc2NoZW1hICYgdGFibGUgbmFtZQorICAgICAgICBpZiAnbmFtZScgbm90IGluIGRhdGE6Cisg ICAgICAgICAgICBuYW1lID0gZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQorCisgICAg ICAgIG9sZF9kYXRhID0gZ2V0X3RyaWdnZXJfZnVuY3Rpb25fYW5kX2NvbHVtbnMoCisgICAgICAg ICAgICBjb25uLCBvbGRfZGF0YSwgdGlkLCBzaG93X3N5c3RlbV9vYmplY3RzKQorCisgICAgICAg IG9sZF9kYXRhID0gdHJpZ2dlcl9kZWZpbml0aW9uKG9sZF9kYXRhKQorCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAn dXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBj b25uPWNvbm4KKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSB7 CisgICAgICAgICAgICAnbmFtZSc6ICdOYW1lJywKKyAgICAgICAgICAgICd0ZnVuY3Rpb24nOiAn VHJpZ2dlciBmdW5jdGlvbicKKyAgICAgICAgfQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWly ZWRfYXJnczoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAg ICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykKKworICAgICAgICAjIElmIHRo ZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAorICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPWNvbm4p CisgICAgcmV0dXJuIFNRTCwgbmFtZQorCisKK0BnZXRfdGVtcGxhdGVfcGF0aAorZGVmIGdldF9y ZXZlcnNlX2VuZ2luZWVyZWRfc3FsKGNvbm4sIHNjaGVtYSwgdGFibGUsIHRpZCwgdHJpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkLCBzaG93X3N5c3RlbV9v YmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX3BhdGg9Tm9u ZSk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiByZXZlcnNlIGVuZ2lu ZWVyZWQgc3FsIGZvciBzcGVjaWZpZWQgdHJpZ2dlci4KKworICAgIDpwYXJhbSBjb25uOiBDb25u ZWN0aW9uIE9iamVjdAorICAgIDpwYXJhbSBzY2hlbWE6IFNjaGVtYQorICAgIDpwYXJhbSB0YWJs ZTogVGFibGUKKyAgICA6cGFyYW0gdGlkOiBUYWJsZSBJRAorICAgIDpwYXJhbSB0cmlkOiBUcmln Z2VyIElECisgICAgOnBhcmFtIGRhdGxhc3RzeXNvaWQ6CisgICAgOnBhcmFtIHNob3dfc3lzdGVt X29iamVjdHM6IFNob3cgU3lzdGVtIE9iamVjdCB2YWx1ZSBUcnVlIG9yIEZhbHNlCisgICAgOnBh cmFtIHRlbXBsYXRlX3BhdGg6IE9wdGlvbmFsIHRlbXBsYXRlIHBhdGgKKyAgICA6cmV0dXJuOgor ICAgICIiIgorICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0 aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LCB0cmlkPXRyaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9ZGF0 bGFzdHN5c29pZCkKKworICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QoU1FMKQor ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihyZXMpCisKKyAgICBp ZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgIHJhaXNlIE9iamVjdEdvbmUoXygnQ291 bGQgbm90IGZpbmQgdGhlIHRyaWdnZXIgaW4gdGhlIHRhYmxlLicpKQorCisgICAgZGF0YSA9IGRp Y3QocmVzWydyb3dzJ11bMF0pCisKKyAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3Qs IHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCisgICAgZGF0YVsnc2NoZW1hJ10g PSBzY2hlbWEKKyAgICBkYXRhWyd0YWJsZSddID0gdGFibGUKKworICAgIGRhdGEgPSBcCisgICAg ICAgIGdldF90cmlnZ2VyX2Z1bmN0aW9uX2FuZF9jb2x1bW5zKGNvbm4sIGRhdGEsIHRpZCwgc2hv d19zeXN0ZW1fb2JqZWN0cykKKworICAgIGRhdGEgPSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkK KworICAgIFNRTCwgbmFtZSA9IGdldF9zcWwoY29ubiwgZGF0YSwgdGlkLCBOb25lLCBkYXRsYXN0 c3lzb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cykKKwor ICAgIHNxbF9oZWFkZXIgPSB1Ii0tIFRyaWdnZXI6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWydu YW1lJ10pCisKKyAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVt cGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPWNvbm4pCisKKyAgICBTUUwgPSBzcWxfaGVhZGVyICsgJ1xu XG4nICsgU1FMLnN0cmlwKCdcbicpCisKKyAgICAjIElmIHRyaWdnZXIgaXMgZGlzYWJsZWQgdGhl biBhZGQgc3FsIGNvZGUgZm9yIHRoZSBzYW1lCisgICAgaWYgZGF0YVsnaXNfZW5hYmxlX3RyaWdn ZXInXSAhPSAnTyc6CisgICAgICAgIFNRTCArPSAnXG5cbicKKyAgICAgICAgU1FMICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1jb25uKQorICAgIHJl dHVybiBTUUwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGls cy5weQppbmRleCBkNzIxZWFmNGIuLjM3NjNlOTUxMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3V0 aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGlscy5weQpAQCAtMjAsNyArMjAsNyBAQCBmcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXNcCiBm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IsIFwKICAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UKIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1h cy51dGlscyBcCi0gICAgaW1wb3J0IERhdGFUeXBlUmVhZGVyLCB0cmlnZ2VyX2RlZmluaXRpb24s IHBhcnNlX3J1bGVfZGVmaW5pdGlvbgorICAgIGltcG9ydCBEYXRhVHlwZVJlYWRlciwgcGFyc2Vf cnVsZV9kZWZpbml0aW9uCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMudXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfZnJvbV9kYiwgXAogICAgIHBhcnNlX3ByaXZfdG9f ZGIKIGZyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKQEAg LTI4LDYgKzI4LDE4IEBAIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgSVNfUFkyCiBmcm9tIHBn YWRtaW4udXRpbHMuY29tcGlsZV90ZW1wbGF0ZV9uYW1lIGltcG9ydCBjb21waWxlX3RlbXBsYXRl X3BhdGgKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKIGZyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKKyAgICBjb25z dHJhaW50cy5mb3JlaWduX2tleS51dGlscyBhcyBma2V5X3V0aWxzCitpbXBvcnQgcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAor ICAgIGNvbnN0cmFpbnRzLmNoZWNrX2NvbnN0cmFpbnQudXRpbHMgYXMgY2hlY2tfdXRpbHMKK2lt cG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzLnRhYmxlcy5cCisgICAgY29uc3RyYWludHMuZXhjbHVzaW9uX2NvbnN0cmFpbnQudXRpbHMg YXMgZXhjbHVzaW9uX3V0aWxzCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMu c2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIGNvbnN0cmFpbnRzLmluZGV4 X2NvbnN0cmFpbnQudXRpbHMgYXMgaWR4Y29uc191dGlscworaW1wb3J0IHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLlwKKyAgICB0 cmlnZ2Vycy51dGlscyBhcyB0cmlnZ2VyX3V0aWxzCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMuXAorICAgIGNvbXBv dW5kX3RyaWdnZXJzLnV0aWxzIGFzIGNvbXBvdW5kX3RyaWdnZXJfdXRpbHMKIAogCiBjbGFzcyBC YXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKQEAgLTQ5 LDEwICs2MSw2IEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFy dGl0aW9uVGFibGUpOgogICAgICAgLSBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9m IHF1ZXJ5IHJlc3VsdAogICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY29s dW1uIG5vZGUKIAotICAgICogX2luZGV4X2NvbnN0cmFpbnRzX2Zvcm1hdHRlcihzZWxmLCBkaWQs IHRpZCwgZGF0YSk6Ci0gICAgICAtIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2Yg cXVlcnkgcmVzdWx0Ci0gICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBpbmRl eCBjb25zdHJhaW50IG5vZGUKLQogICAgICogX2NsdHlwZV9mb3JtYXR0ZXIodHlwZSk6IChzdGF0 aWNtZXRob2QpCiAgICAgICAtIFdlIG5lZWQgdG8gcmVtb3ZlIFtdIGZyb20gdHlwZSBhbmQgYXBw ZW5kIGl0CiAgICAgICAgIGFmdGVyIGxlbmd0aC9wcmVjaXNpb24gc28gd2Ugd2lsbCBzZW5kIGZs YWcgZm9yCkBAIC03NiwxMiArODQsNiBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2Rl VmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKIAogICAgICogcmVzZXRfc3RhdGlzdGljcyhzZWxm LCBzY2lkLCB0aWQpOgogICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVzZXQgc3RhdGlzdGlj cyBvZiB0YWJsZS4KLQotICAgICogZ2V0X3RyaWdnZXJfZnVuY3Rpb25fc2NoZW1hKHNlbGYsIGRh dGEpCi0gICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdHJpZ2dlciBmdW5jdGlvbiB3 aXRoIHNjaGVtYSBuYW1lCi0KLSAgICAqIF9mb3JtYXRfYXJncyhzZWxmLCBhcmcpCi0gICAgICAt IFRoaXMgZnVuY3Rpb24gd2lsbCBmb3JtYXQgdHJpZ2dlciBmdW5jdGlvbiBhcmd1bWVudHMuCiAg ICAgIiIiCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6 CkBAIC0xMjEsMTggKzEyMyw2IEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBCYXNlUGFydGl0aW9uVGFibGUpOgogICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgQ29sdW1u ICxjaGVjayBjb25zdHJhaW50IGFuZCBleGNsdXNpb24KICAgICAgICAgICAgICMgY29uc3RyYWlu dCBub2RlCiAgICAgICAgICAgICBzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoID0gJ2NvbHVtbnMv c3FsLyN7MH0jJy5mb3JtYXQodmVyKQotICAgICAgICAgICAgc2VsZi5jaGVja19jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGggPSBjb21waWxlX3RlbXBsYXRlX3BhdGgoCi0gICAgICAgICAgICAgICAg J2NoZWNrX2NvbnN0cmFpbnQvc3FsJywgc2VydmVyX3R5cGUsIHZlcikKLSAgICAgICAgICAgIHNl bGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCA9IGNvbXBpbGVfdGVtcGxhdGVf cGF0aCgKLSAgICAgICAgICAgICAgICAnZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsJywgc2VydmVy X3R5cGUsIHZlcikKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgUEsgJiBVbmlxdWUgY29u c3RyYWludCBub2RlCi0gICAgICAgICAgICBzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCA9ICdpbmRleF9jb25zdHJhaW50L3NxbC8jezB9IydcCi0gICAgICAgICAgICAgICAgLmZv cm1hdCh2ZXIpCi0KLSAgICAgICAgICAgICMgVGVtcGxhdGUgZm9yIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgbm9kZQotICAgICAgICAgICAgc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoID0g Y29tcGlsZV90ZW1wbGF0ZV9wYXRoKAotICAgICAgICAgICAgICAgICdmb3JlaWduX2tleS9zcWwn LCBzZXJ2ZXJfdHlwZSwgdmVyKQogCiAgICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBpbmRleCBu b2RlCiAgICAgICAgICAgICBzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGggPSBjb21waWxlX3RlbXBs YXRlX3BhdGgoCkBAIC0xNTksNDggKzE0OSw2IEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGls ZE5vZGVWaWV3LCBCYXNlUGFydGl0aW9uVGFibGUpOgogCiAgICAgICAgIHJldHVybiB3cmFwCiAK LSAgICBkZWYgZ2V0X3RyaWdnZXJfZnVuY3Rpb25fc2NoZW1hKHNlbGYsIGRhdGEpOgotICAgICAg ICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0cmlnZ2VyIGZ1bmN0aW9u IHdpdGggc2NoZW1hIG5hbWUKLSAgICAgICAgIiIiCi0gICAgICAgICMgSWYgbGFuZ3VhZ2UgaXMg J2VkYnNwbCcgdGhlbiB0cmlnZ2VyIGZ1bmN0aW9uIHNob3VsZCBiZQotICAgICAgICAjICdJbmxp bmUgRURCLVNQTCcgZWxzZSB3ZSB3aWxsIGZpbmQgdGhlIHRyaWdnZXIgZnVuY3Rpb24KLSAgICAg ICAgIyB3aXRoIHNjaGVtYSBuYW1lLgotICAgICAgICBpZiBkYXRhWydsYW5uYW1lJ10gPT0gJ2Vk YnNwbCc6Ci0gICAgICAgICAgICBkYXRhWyd0ZnVuY3Rpb24nXSA9ICdJbmxpbmUgRURCLVNQTCcK LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAg ICAgICAgICAgICAiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgW3NlbGYudHJpZ2dlcl90 ZW1wbGF0ZV9wYXRoLCAnZ2V0X3RyaWdnZXJmdW5jdGlvbnMuc3FsJ10KLSAgICAgICAgICAgICAg ICApLAotICAgICAgICAgICAgICAgIHRnZm9pZD1kYXRhWyd0Z2ZvaWQnXSwKLSAgICAgICAgICAg ICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVj dHMKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCi0K LSAgICAgICAgICAgICMgVXBkYXRlIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIHdoaWNoIHdlIGhhdmUg ZmV0Y2hlZCB3aXRoCi0gICAgICAgICAgICAjIHNjaGVtYSBuYW1lCi0gICAgICAgICAgICBpZiAn cm93cycgaW4gcmVzdWx0IGFuZCBsZW4ocmVzdWx0Wydyb3dzJ10pID4gMCBhbmQgXAotICAgICAg ICAgICAgICAgICAgICAndGZ1bmN0aW9ucycgaW4gcmVzdWx0Wydyb3dzJ11bMF06Ci0gICAgICAg ICAgICAgICAgZGF0YVsndGZ1bmN0aW9uJ10gPSByZXN1bHRbJ3Jvd3MnXVswXVsndGZ1bmN0aW9u cyddCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgX2Zvcm1hdF9hcmdzKHNlbGYsIGFy Z3MpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZvcm1hdCBhcmd1 bWVudHMuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGFyZ3M6IEFyZ3VtZW50cwotCi0g ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBGb3JtYXRlZCBhcmd1bWVudHMgZm9yIGZ1bmN0 aW9uCi0gICAgICAgICIiIgotICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IFsiJ3swfSciLmZvcm1h dChhcmcpIGZvciBhcmcgaW4gYXJnc10KLSAgICAgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0 ZWRfYXJncykKLQogICAgIGRlZiBfY29sdW1uc19mb3JtYXR0ZXIoc2VsZiwgdGlkLCBkYXRhKToK ICAgICAgICAgIiIiCiAgICAgICAgIEFyZ3M6CkBAIC0zMjQsMjQ3ICsyNzIsNiBAQCBjbGFzcyBC YXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKIAogICAg ICAgICByZXR1cm4gZGF0YQogCi0gICAgZGVmIF9pbmRleF9jb25zdHJhaW50c19mb3JtYXR0ZXIo c2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAg ICAgICAgIHRpZDogVGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJl c3VsdAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3Jt YXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBt b2RlbCBmb3JtYXQgZm9yIGluZGV4IGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAiIiIKLQotICAg ICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRh YmxlCi0gICAgICAgIGluZGV4X2NvbnN0cmFpbnRzID0gewotICAgICAgICAgICAgJ3AnOiAncHJp bWFyeV9rZXknLCAndSc6ICd1bmlxdWVfY29uc3RyYWludCcKLSAgICAgICAgfQotCi0gICAgICAg IGZvciBjdHlwZSBpbiBpbmRleF9jb25zdHJhaW50cy5rZXlzKCk6Ci0gICAgICAgICAgICBkYXRh W2luZGV4X2NvbnN0cmFpbnRzW2N0eXBlXV0gPSBbXQotCi0gICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAg ICAgIFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3Fs J10KLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIGRpZD1kaWQsCi0gICAgICAg ICAgICAgICAgdGlkPXRpZCwKLSAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9Y3R5cGUK LSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAg ICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcm93 Ci0gICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCi0g ICAgICAgICAgICAgICAgICAgIGNpZD1yb3dbJ29pZCddLAotICAgICAgICAgICAgICAgICAgICBj b2xjbnQ9cm93Wydjb2xfY291bnQnXSkKLSAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgICAgICAg ICBmb3IgciBpbiByZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBl bmQoeyJjb2x1bW4iOiByWydjb2x1bW4nXS5zdHJpcCgnIicpfSkKLQotICAgICAgICAgICAgICAg IHJlc3VsdFsnY29sdW1ucyddID0gY29sdW1ucwotCi0gICAgICAgICAgICAgICAgIyBJTkNMVURF IGNsYXVzZSBpbiBpbmRleCBpcyBzdXBwb3J0ZWQgZnJvbSBQRy0xMSsKLSAgICAgICAgICAgICAg ICBpZiBzZWxmLm1hbmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6Ci0gICAgICAgICAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfaW5jbHVkZS5zcWwnXSksCi0gICAgICAg ICAgICAgICAgICAgICAgICBjaWQ9cm93WydvaWQnXSkKLSAgICAgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgcmVz dWx0WydpbmNsdWRlJ10gPSBbY29sWydjb2xuYW1lJ10gZm9yIGNvbCBpbiByZXNbJ3Jvd3MnXV0K LQotICAgICAgICAgICAgICAgICMgSWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9v ciBhcHBlbmQgaW50bwotICAgICAgICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBp bnRvIG1haW4gZGF0YSBkaWN0XQotICAgICAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdChpbmRl eF9jb25zdHJhaW50c1tjdHlwZV0sIFtdKS5hcHBlbmQocmVzdWx0KQotCi0gICAgICAgIHJldHVy biBkYXRhCi0KLSAgICBkZWYgX2ZvcmVpZ25fa2V5X2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEp OgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lE Ci0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAgICAgIFJldHVy bnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5 IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAiIiIKLQotICAgICAgICAjIFdlIHdpbGwg ZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCi0gICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVz LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0KLSAgICAg ICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXN1bHQpCi0KLSAgICAgICAgZm9yIGZrIGluIHJlc3VsdFsncm93cyddOgot Ci0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWln bl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAga2V5cz16aXAoZmtbJ2NvbmZrZXknXSwgZmtbJ2NvbmtleSddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25mcmVsaWQ9ZmtbJ2NvbmZyZWxpZCddKQotCi0gICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICBjb2x1bW5zID0gW10KLSAgICAg ICAgICAgIGNvbHMgPSBbXQotICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAg ICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImxvY2FsX2NvbHVtbiI6IHJvd1snY29uYXR0 bmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlcyI6IGZr Wydjb25mcmVsaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5j ZWQiOiByb3dbJ2NvbmZhdHRuYW1lJ119KQotICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKHJv d1snY29uYXR0bmFtZSddKQotCi0gICAgICAgICAgICBma1snY29sdW1ucyddID0gY29sdW1ucwot Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWln bl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD1ma1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCi0KLSAgICAgICAgICAg IHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgIGZrWydyZW1vdGVfc2NoZW1hJ10g PSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICBma1sncmVtb3RlX3RhYmxl J10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KLQotICAgICAgICAgICAgY292ZXJpbmdpbmRl eCA9IHNlbGYuc2VhcmNoX2NvdmVyaW5naW5kZXgodGlkLCBjb2xzKQotCi0gICAgICAgICAgICBm a1snY292ZXJpbmdpbmRleCddID0gY292ZXJpbmdpbmRleAotICAgICAgICAgICAgaWYgY292ZXJp bmdpbmRleDoKLSAgICAgICAgICAgICAgICBma1snYXV0b2luZGV4J10gPSBUcnVlCi0gICAgICAg ICAgICAgICAgZmtbJ2hhc2luZGV4J10gPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAg ICAgICAgICAgIGZrWydhdXRvaW5kZXgnXSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZmtbJ2hh c2luZGV4J10gPSBGYWxzZQotICAgICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRl IGxpc3QgYW5kL29yIGFwcGVuZCBpbnRvCi0gICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBB ZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdCgn Zm9yZWlnbl9rZXknLCBbXSkuYXBwZW5kKGZrKQotCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAg ICBkZWYgX2NoZWNrX2NvbnN0cmFpbnRfZm9ybWF0dGVyKHNlbGYsIHRpZCwgZGF0YSk6Ci0gICAg ICAgICIiIgotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKLSAgICAg ICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0Ci0KLSAgICAgICAgUmV0dXJuczoKLSAg ICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0 Ci0gICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY2hlY2sgY29uc3Ry YWludCBub2RlCi0gICAgICAgICIiIgotCi0gICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhl IGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKLSAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQotCi0gICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0KLSAgICAgICAgaWYgbm90IHN0 YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQotICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlzdCBhbmQvb3IgYXBw ZW5kIGludG8KLSAgICAgICAgIyBleGlzdGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRh IGRpY3RdCi0KLSAgICAgICAgZGF0YVsnY2hlY2tfY29uc3RyYWludCddID0gcmVzWydyb3dzJ10K LQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9leGNsdXNpb25fY29uc3RyYWludF9m b3JtYXR0ZXIoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJn czoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBkaWN0IG9m IHF1ZXJ5IHJlc3VsdAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJl dHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVy IGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUKLSAgICAg ICAgIiIiCi0KLSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWlu dHMgZm9yIHRoZSB0YWJsZQotICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAg ICAgICAiLyIuam9pbigKLSAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25fY29uc3RyYWlu dF90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXQotICAgICAgICAgICAgKSwKLSAgICAg ICAgICAgIGRpZD1kaWQsIHRpZD10aWQKLSAgICAgICAgKQotCi0gICAgICAgIHN0YXR1cywgcmVz dWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz dWx0KQotCi0gICAgICAgIGZvciBleCBpbiByZXN1bHRbJ3Jvd3MnXToKLQotICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgIFtzZWxmLmV4 Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICdnZXRf Y29uc3RyYWludF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAgICAgICBjaWQ9ZXhbJ29pZCddLAot ICAgICAgICAgICAgICAgIGNvbGNudD1leFsnY29sX2NvdW50J10pCi0KLSAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotICAgICAgICAgICAg Zm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBpZiByb3dbJ29wdGlvbnMn XSAmIDE6Ci0gICAgICAgICAgICAgICAgICAgIG9yZGVyID0gRmFsc2UKLSAgICAgICAgICAgICAg ICAgICAgbnVsbHNfb3JkZXIgPSBUcnVlIGlmIChyb3dbJ29wdGlvbnMnXSAmIDIpIGVsc2UgRmFs c2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcmRlciA9IFRy dWUKLSAgICAgICAgICAgICAgICAgICAgbnVsbHNfb3JkZXIgPSBUcnVlIGlmIChyb3dbJ29wdGlv bnMnXSAmIDIpIGVsc2UgRmFsc2UKLQotICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsi Y29sdW1uIjogcm93Wydjb2xkZWYnXS5zdHJpcCgnIicpLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAib3Blcl9jbGFzcyI6IHJvd1snb3BjbmFtZSddLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAib3JkZXIiOiBvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIm51bGxzX29yZGVyIjogbnVsbHNfb3JkZXIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJvcGVyYXRvciI6IHJvd1snb3BybmFtZSddLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiY29sX3R5cGUiOiByb3dbJ2RhdGF0eXBlJ10KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfSkKLQotICAgICAgICAgICAgZXhbJ2NvbHVtbnMnXSA9IGNv bHVtbnMKLQotICAgICAgICAgICAgIyBJTkNMVURFIGNsYXVzZSBpbiBpbmRleCBpcyBzdXBwb3J0 ZWQgZnJvbSBQRy0xMSsKLSAgICAgICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDEx MDAwMDoKLSAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3Bh dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfaW5jbHVk ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgIGNpZD1leFsnb2lkJ10pCi0gICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAgZXhbJ2lu Y2x1ZGUnXSA9IFtjb2xbJ2NvbG5hbWUnXSBmb3IgY29sIGluIHJlc1sncm93cyddXQotCi0gICAg ICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGlu dG8KLSAgICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBk aWN0XQotICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KCdleGNsdWRlX2NvbnN0cmFpbnQnLCBb XSkuYXBwZW5kKGV4KQotCi0gICAgICAgIHJldHVybiBkYXRhCi0KICAgICBkZWYgX2Zvcm1hdHRl cihzZWxmLCBkaWQsIHNjaWQsIHRpZCwgZGF0YSk6CiAgICAgICAgICIiIgogICAgICAgICBBcmdz OgpAQCAtNjgwLDEwICszODcsMzYgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZp ZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29sdW1u c19mb3JtYXR0ZXIodGlkLCBkYXRhKQogCiAgICAgICAgICMgSGVyZSB3ZSB3aWxsIGFkZCBjb25z dHJhaW50IGluIG91ciBvdXRwdXQKLSAgICAgICAgZGF0YSA9IHNlbGYuX2luZGV4X2NvbnN0cmFp bnRzX2Zvcm1hdHRlcihkaWQsIHRpZCwgZGF0YSkKLSAgICAgICAgZGF0YSA9IHNlbGYuX2ZvcmVp Z25fa2V5X2Zvcm1hdHRlcih0aWQsIGRhdGEpCi0gICAgICAgIGRhdGEgPSBzZWxmLl9jaGVja19j b25zdHJhaW50X2Zvcm1hdHRlcih0aWQsIGRhdGEpCi0gICAgICAgIGRhdGEgPSBzZWxmLl9leGNs dXNpb25fY29uc3RyYWludF9mb3JtYXR0ZXIoZGlkLCB0aWQsIGRhdGEpCisgICAgICAgIGluZGV4 X2NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgJ3AnOiAncHJpbWFyeV9rZXknLCAndSc6ICd1 bmlxdWVfY29uc3RyYWludCcKKyAgICAgICAgfQorICAgICAgICBmb3IgY3R5cGUgaW4gaW5kZXhf Y29uc3RyYWludHMua2V5cygpOgorICAgICAgICAgICAgZGF0YVtpbmRleF9jb25zdHJhaW50c1tj dHlwZV1dID0gW10KKyAgICAgICAgICAgIHN0YXR1cywgY29uc3RyYWludHMgPSBcCisgICAgICAg ICAgICAgICAgaWR4Y29uc191dGlscy5nZXRfaW5kZXhfY29uc3RyYWludHMoc2VsZi5jb25uLCBk aWQsIHRpZCwgY3R5cGUpCisgICAgICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICAgICAg Zm9yIGNvbnMgaW4gY29uc3RyYWludHM6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuc2V0ZGVm YXVsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSwg W10pLmFwcGVuZChjb25zKQorCisgICAgICAgICMgQWRkIEZvcmVpZ24gS2V5cworICAgICAgICBz dGF0dXMsIGZvcmVpZ25fa2V5cyA9IGZrZXlfdXRpbHMuZ2V0X2ZvcmVpZ25fa2V5cyhzZWxmLmNv bm4sIHRpZCkKKyAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgZm9yIGZrIGluIGZvcmVp Z25fa2V5czoKKyAgICAgICAgICAgICAgICBkYXRhLnNldGRlZmF1bHQoJ2ZvcmVpZ25fa2V5Jywg W10pLmFwcGVuZChmaykKKworICAgICAgICAjIEFkZCBDaGVjayBDb25zdHJhaW50cworICAgICAg ICBzdGF0dXMsIGNoZWNrX2NvbnN0cmFpbnRzID0gXAorICAgICAgICAgICAgY2hlY2tfdXRpbHMu Z2V0X2NoZWNrX2NvbnN0cmFpbnRzKHNlbGYuY29ubiwgdGlkKQorICAgICAgICBpZiBzdGF0dXM6 CisgICAgICAgICAgICBkYXRhWydjaGVja19jb25zdHJhaW50J10gPSBjaGVja19jb25zdHJhaW50 cworCisgICAgICAgICMgQWRkIEV4Y2x1c2lvbiBDb25zdHJhaW50CisgICAgICAgIHN0YXR1cywg ZXhjbHVzaW9uX2NvbnN0cmFpbnRzID0gXAorICAgICAgICAgICAgZXhjbHVzaW9uX3V0aWxzLmdl dF9leGNsdXNpb25fY29uc3RyYWludHMoc2VsZi5jb25uLCBkaWQsIHRpZCkKKyAgICAgICAgaWYg c3RhdHVzOgorICAgICAgICAgICAgZm9yIGV4IGluIGV4Y2x1c2lvbl9jb25zdHJhaW50czoKKyAg ICAgICAgICAgICAgICBkYXRhLnNldGRlZmF1bHQoJ2V4Y2x1ZGVfY29uc3RyYWludCcsIFtdKS5h cHBlbmQoZXgpCiAKICAgICAgICAgcmV0dXJuIGRhdGEKIApAQCAtOTIwLDkxICs2NTMsMTggQEAg Y2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6 CiAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCiAKKyAgICAgICAgIyBEeW5hbWljYWxseSBsb2FkIGlu ZGV4IHV0aWxzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kuCisgICAgICAgIGltcG9ydCBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLlwK KyAgICAgICAgICAgIHRhYmxlcy5pbmRleGVzLnV0aWxzIGFzIGluZGV4X3V0aWxzCiAgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGlkeD1yb3dbJ29p ZCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2Vs Zi5kYXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3QoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAg ICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCi0gICAgICAgICAgICAjIEFkZGluZyBw YXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3Fs Ci0gICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNjaGVtYQotICAgICAgICAgICAgZGF0YVsn dGFibGUnXSA9IHRhYmxlCi0gICAgICAgICAgICAjIFdlIGFsc28gbmVlZCB0byBmZWN0aCBjb2x1 bW5zIG9mIGluZGV4Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NvbHVtbl9kZXRhaWxzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZHg9cm93WydvaWQnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCi0KLSAgICAgICAgICAgICMgJ2F0dGRlZicgY29tZXMgd2l0aCBxdW90ZXMgZnJv bSBxdWVyeSBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KLSAgICAgICAgICAgICMgJ29wdGlvbnMn IHdlIG5lZWQgdHJ1ZS9mYWxzZSB0byByZW5kZXIgc3dpdGNoCi0gICAgICAgICAgICAjIEFTQyhm YWxzZSkvREVTQyh0cnVlKQotICAgICAgICAgICAgY29sdW1ucyA9IFtdCi0gICAgICAgICAgICBj b2xzID0gW10KLSAgICAgICAgICAgIGZvciBjb2xfcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAg ICAgICAgICAgICAjIFdlIG5lZWQgYWxsIGRhdGEgYXMgY29sbGVjdGlvbiBmb3IgQ29sdW1uc01v ZGVsCi0gICAgICAgICAgICAgICAgIyBPbmx5IGZvciBkaXNwbGF5aW5nIFNRTCwgd2UgY2FuIG9t aXQgc3RyaXAgb24gY29sbmFtZQotICAgICAgICAgICAgICAgIGNvbHNfZGF0YSA9IHsKLSAgICAg ICAgICAgICAgICAgICAgJ2NvbG5hbWUnOiBjb2xfcm93WydhdHRkZWYnXSwKLSAgICAgICAgICAg ICAgICAgICAgJ2NvbGxzcGNuYW1lJzogY29sX3Jvd1snY29sbG5zcG5hbWUnXSwKLSAgICAgICAg ICAgICAgICAgICAgJ29wX2NsYXNzJzogY29sX3Jvd1snb3BjbmFtZSddLAotICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgICBpZiBjb2xfcm93WydvcHRpb25zJ11bMF0gPT0gJ0RFU0Mn OgotICAgICAgICAgICAgICAgICAgICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IFRydWUKLSAg ICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChjb2xzX2RhdGEpCi0KLSAgICAgICAgICAgICAg ICAjIFdlIG5lZWQgc2FtZSBkYXRhIGFzIHN0cmluZyB0byBkaXNwbGF5IGluIHByb3BlcnRpZXMg d2luZG93Ci0gICAgICAgICAgICAgICAgIyBJZiBtdWx0aXBsZSBjb2x1bW4gdGhlbiBzZXBhcmF0 ZSBpdCBieSBjb2xvbgotICAgICAgICAgICAgICAgIGNvbHNfc3RyID0gY29sX3Jvd1snYXR0ZGVm J10KLSAgICAgICAgICAgICAgICBpZiBjb2xfcm93Wydjb2xsbnNwbmFtZSddOgotICAgICAgICAg ICAgICAgICAgICBjb2xzX3N0ciArPSAnIENPTExBVEUgJyArIGNvbF9yb3dbJ2NvbGxuc3BuYW1l J10KLSAgICAgICAgICAgICAgICBpZiBjb2xfcm93WydvcGNuYW1lJ106Ci0gICAgICAgICAgICAg ICAgICAgIGNvbHNfc3RyICs9ICcgJyArIGNvbF9yb3dbJ29wY25hbWUnXQotICAgICAgICAgICAg ICAgIGlmIGNvbF9yb3dbJ29wdGlvbnMnXVswXSA9PSAnREVTQyc6Ci0gICAgICAgICAgICAgICAg ICAgIGNvbHNfc3RyICs9ICcgREVTQycKLSAgICAgICAgICAgICAgICBjb2xzLmFwcGVuZChjb2xz X3N0cikKLQotICAgICAgICAgICAgIyBQdXNoIGFzIGNvbGxlY3Rpb24KLSAgICAgICAgICAgIGRh dGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLSAgICAgICAgICAgICMgUHVzaCBhcyBzdHJpbmcKLSAg ICAgICAgICAgIGRhdGFbJ2NvbHMnXSA9ICcsICcuam9pbihjb2xzKQotCi0gICAgICAgICAgICBp ZiBzZWxmLm1hbmFnZXIudmVyc2lvbiA+PSAxMTAwMDA6Ci0gICAgICAgICAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5pbmRl eF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVf ZGV0YWlscy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgIGlkeD1yb3dbJ29pZCddKQotICAg ICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0K LSAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgICAg IGRhdGFbJ2luY2x1ZGUnXSA9IFtjb2xbJ2NvbG5hbWUnXSBmb3IgY29sIGluIHJlc1sncm93cydd XQotCi0gICAgICAgICAgICBzcWxfaGVhZGVyID0gdSJcbi0tIEluZGV4OiB7MH1cblxuLS0gIi5m b3JtYXQoZGF0YVsnbmFtZSddKQotCi0gICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKLQotICAgICAgICAgICAgaW5kZXhfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0g ICAgICAgICAgICBpbmRleF9zcWwgKz0gIlxuIgotICAgICAgICAgICAgaW5kZXhfc3FsICs9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsdGVyLnNxbCdd KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBj b25uPXNlbGYuY29ubikKKyAgICAgICAgICAgIGluZGV4X3NxbCA9IGluZGV4X3V0aWxzLmdldF9y ZXZlcnNlX2VuZ2luZWVyZWRfc3FsKAorICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgc2NoZW1h LCB0YWJsZSwgZGlkLCB0aWQsIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgc2VsZi5kYXRs YXN0c3lzb2lkKQorICAgICAgICAgICAgaW5kZXhfc3FsID0gdSJcbiIgKyBpbmRleF9zcWwKIAog ICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAogICAgICAgICAgICAgaW5kZXhfc3FsID0g cmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIGluZGV4X3NxbCkKLSAgICAgICAgICAgIG1haW5fc3Fs LmFwcGVuZChzcWxfaGVhZGVyICsgJ1xuXG4nICsgaW5kZXhfc3FsLnN0cmlwKCdcbicpKQorICAg ICAgICAgICAgbWFpbl9zcWwuYXBwZW5kKGluZGV4X3NxbCkKIAogICAgICAgICAiIiIKICAgICAg ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTAxOCw2OSAr Njc4LDEwIEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFydGl0 aW9uVGFibGUpOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQogCiAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs IHRyaWQ9cm93WydvaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRs YXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCi0KLSAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKLSAgICAgICAgICAg ICAgICBjb250aW51ZQotICAgICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCi0g ICAgICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcg aXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0gICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNjaGVt YQotICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCi0KLSAgICAgICAgICAgIGRhdGEg PSBzZWxmLmdldF90cmlnZ2VyX2Z1bmN0aW9uX3NjaGVtYShkYXRhKQotCi0gICAgICAgICAgICBp ZiBsZW4oZGF0YVsnY3VzdG9tX3RnYXJncyddKSA+IDE6Ci0gICAgICAgICAgICAgICAgIyBXZSBr bm93IHRoYXQgdHJpZ2dlciBoYXMgbW9yZSB0aGFuIDEgYXJndW1lbnQsIGxldCdzCi0gICAgICAg ICAgICAgICAgIyBqb2luIHRoZW0KLSAgICAgICAgICAgICAgICBkYXRhWyd0Z2FyZ3MnXSA9IHNl bGYuX2Zvcm1hdF9hcmdzKGRhdGFbJ2N1c3RvbV90Z2FyZ3MnXSkKLQotICAgICAgICAgICAgaWYg bGVuKGRhdGFbJ3RnYXR0ciddKSA+PSAxOgotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAn LmpvaW4oZGF0YVsndGdhdHRyJ10uc3BsaXQoJyAnKSkKLQotICAgICAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVt bnMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LCBjbGlzdD1jb2x1bW5zKQotCi0gICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5j b25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yc2V0KQotICAgICAgICAgICAgICAgICMgJ3RnYXR0cicgY29udGFpbnMgbGlzdCBvZiBjb2x1 bW5zIGZyb20gdGFibGUgdXNlZCBpbiB0cmlnZ2VyCi0gICAgICAgICAgICAgICAgY29sdW1ucyA9 IFtdCi0KLSAgICAgICAgICAgICAgICBmb3IgY29sX3JvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAg ICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKGNvbF9yb3dbJ25hbWUnXSkKLQotICAgICAg ICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAgICAgZGF0YSA9 IHRyaWdnZXJfZGVmaW5pdGlvbihkYXRhKQotCi0gICAgICAgICAgICBzcWxfaGVhZGVyID0gdSJc bi0tIFRyaWdnZXI6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCi0KLSAgICAgICAg ICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJf dGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0KLSAgICAgICAgICAgICMg SWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0gICAg ICAgICAgICB0cmlnZ2VyX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50cmln Z2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgICAg ICB0cmlnZ2VyX3NxbCA9IHNxbF9oZWFkZXIgKyAnXG5cbicgKyB0cmlnZ2VyX3NxbC5zdHJpcCgn XG4nKQotCi0gICAgICAgICAgICAjIElmIHRyaWdnZXIgaXMgZGlzYWJsZWQgdGhlbiBhZGQgc3Fs IGNvZGUgZm9yIHRoZSBzYW1lCi0gICAgICAgICAgICBpZiBkYXRhWydpc19lbmFibGVfdHJpZ2dl ciddICE9ICdPJzoKLSAgICAgICAgICAgICAgICB0cmlnZ2VyX3NxbCArPSAnXG5cbicKLSAgICAg ICAgICAgICAgICB0cmlnZ2VyX3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAg ICAgICAgICAgICAgICAgICBzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAg ICAgICAgICAgJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICAgICAgdHJpZ2dlcl9zcWwg PSB0cmlnZ2VyX3V0aWxzLmdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKAorICAgICAgICAgICAg ICAgIHNlbGYuY29ubiwgc2NoZW1hLCB0YWJsZSwgdGlkLCByb3dbJ29pZCddLAorICAgICAgICAg ICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCwgc2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2Jq ZWN0cykKKyAgICAgICAgICAgIHRyaWdnZXJfc3FsID0gdSJcbiIgKyB0cmlnZ2VyX3NxbAogCiAg ICAgICAgICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCiAgICAgICAgICAgICB0cmlnZ2VyX3NxbCA9 IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCB0cmlnZ2VyX3NxbCkKQEAgLTExMDIsNjUgKzcwMywx MSBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRh YmxlKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCiAKICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgotICAgICAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAg ICAgICAgW3NlbGYuY29tcG91bmRfdHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHRyaWQ9cm93WydvaWQnXSwKLSAg ICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCi0KLSAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQot ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAg aWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot ICAgICAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQotICAgICAgICAgICAg ICAgICMgQWRkaW5nIHBhcmVudCBpbnRvIGRhdGEgZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGls ZQotICAgICAgICAgICAgICAgICMgY3JlYXRpbmcgc3FsCi0gICAgICAgICAgICAgICAgZGF0YVsn c2NoZW1hJ10gPSBzY2hlbWEKLSAgICAgICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gdGFibGUK LQotICAgICAgICAgICAgICAgIGlmIGxlbihkYXRhWyd0Z2F0dHInXSkgPj0gMToKLSAgICAgICAg ICAgICAgICAgICAgY29sdW1ucyA9ICcsICcuam9pbihkYXRhWyd0Z2F0dHInXS5zcGxpdCgnICcp KQotCi0gICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigK LSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbXBvdW5kX3RyaWdnZXJfdGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnMuc3FsJ10pLCB0aWQ9 dGlkLCBjbGlzdD1jb2x1bW5zKQotCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQotICAgICAgICAgICAgICAgICAgICAjICd0Z2F0dHInIGNv bnRhaW5zIGxpc3Qgb2YgY29sdW1ucyBmcm9tIHRhYmxlCi0gICAgICAgICAgICAgICAgICAgICMg dXNlZCBpbiB0cmlnZ2VyCi0gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotCi0gICAg ICAgICAgICAgICAgICAgIGZvciBjb2xfcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAg ICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKGNvbF9yb3dbJ25hbWUnXSkKLQotICAgICAgICAg ICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCi0KLSAgICAgICAgICAgICAgICBk YXRhID0gdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEpCi0gICAgICAgICAgICAgICAgc3FsX2hlYWRl ciA9IFwKLSAgICAgICAgICAgICAgICAgICAgdSJcbi0tIENvbXBvdW5kIFRyaWdnZXI6IHswfVxu XG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCi0KLSAgICAgICAgICAgICAgICBzcWxfaGVhZGVy ICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgW3NlbGYu Y29tcG91bmRfdHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLQotICAgICAgICAgICAgICAg ICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0g ICAgICAgICAgICAgICAgY29tcG91bmRfdHJpZ2dlcl9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oCi0gICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbXBvdW5kX3RyaWdnZXJfdGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg Y29ubj1zZWxmLmNvbm4pCi0KICAgICAgICAgICAgICAgICBjb21wb3VuZF90cmlnZ2VyX3NxbCA9 IFwKLSAgICAgICAgICAgICAgICAgICAgc3FsX2hlYWRlciArICdcblxuJyArIGNvbXBvdW5kX3Ry aWdnZXJfc3FsLnN0cmlwKCdcbicpCi0KLSAgICAgICAgICAgICAgICAjIElmIHRyaWdnZXIgaXMg ZGlzYWJsZWQgdGhlbiBhZGQgc3FsIGNvZGUgZm9yIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAg aWYgZGF0YVsnaXNfZW5hYmxlX3RyaWdnZXInXSAhPSAnTyc6Ci0gICAgICAgICAgICAgICAgICAg IGNvbXBvdW5kX3RyaWdnZXJfc3FsICs9ICdcblxuJwotICAgICAgICAgICAgICAgICAgICBjb21w b3VuZF90cmlnZ2VyX3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAg ICAgICAgICAgICAgICBbc2VsZi5jb21wb3VuZF90cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAg ICAgICAgICAgICAgY29tcG91bmRfdHJpZ2dlcl91dGlscy5nZXRfcmV2ZXJzZV9lbmdpbmVlcmVk X3NxbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgc2NoZW1hLCB0YWJsZSwg dGlkLCByb3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lz b2lkKQorICAgICAgICAgICAgICAgIGNvbXBvdW5kX3RyaWdnZXJfc3FsID0gdSJcbiIgKyBjb21w b3VuZF90cmlnZ2VyX3NxbAogCiAgICAgICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAog ICAgICAgICAgICAgICAgIGNvbXBvdW5kX3RyaWdnZXJfc3FsID0gXApAQCAtMTE3NCw3ICs3MjEs NyBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRh YmxlKToKICAgICAgICAgIiIiCiAKICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKAotICAgICAgICAgICAgW3NlbGYucnVsZXNfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMu c3FsJ10pLCB0aWQ9dGlkKQorICAgICAgICAgICAgW3NlbGYucnVsZXNfdGVtcGxhdGVfcGF0aCwg J25vZGVzLnNxbCddKSwgdGlkPXRpZCkKIAogICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAgICAgICAgaWYgbm90IHN0YXR1czoKQEAgLTEzNTEs Mzk5ICs4OTgsNiBAQCBjbGFzcyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBh cnRpdGlvblRhYmxlKToKICAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBzdHIoZGF0YVsn bmFtZSddKQogICAgICAgICByZXR1cm4gZGF0YQogCi0gICAgZGVmIGdldF9pbmRleF9jb25zdHJh aW50X3NxbChzZWxmLCBkaWQsIHRpZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICAgQXJn czoKLSAgICAgICAgICAgdGlkOiBUYWJsZSBJRAotICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3Qg Y29taW5nIGZyb20gdGhlIGNsaWVudAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGluZGV4IGNvbnN0cmFpbnRz Ci0gICAgICAgIChQcmltYXJ5IEtleSAmIFVuaXF1ZSkKLSAgICAgICAgIiIiCi0gICAgICAgIHNx bCA9IFtdCi0gICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRz IGZvciB0aGUgdGFibGUKLSAgICAgICAgaW5kZXhfY29uc3RyYWludHMgPSB7Ci0gICAgICAgICAg ICAncCc6ICdwcmltYXJ5X2tleScsICd1JzogJ3VuaXF1ZV9jb25zdHJhaW50JwotICAgICAgICB9 Ci0KLSAgICAgICAgZm9yIGN0eXBlIGluIGluZGV4X2NvbnN0cmFpbnRzLmtleXMoKToKLSAgICAg ICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCi0gICAgICAgICAgICAjIElm IHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCi0gICAgICAg ICAgICBpZiBpbmRleF9jb25zdHJhaW50c1tjdHlwZV0gaW4gZGF0YToKLSAgICAgICAgICAgICAg ICBjb25zdHJhaW50ID0gZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dCi0gICAgICAgICAg ICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCi0gICAgICAgICAgICAgICAg aWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVt YSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10g PSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AK LSAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAg ICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBp biBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50Wydj aGFuZ2VkJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3Nj aGVtYSddCi0gICAgICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSdd Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3RlbXBs YXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCcKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlkPWRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1jWydvaWQnXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9Y3R5cGUKLSAgICAgICAgICAg ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKLSAgICAgICAgICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAgICAgICAg ICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KLQotICAgICAgICAgICAgICAgICAgICAgICAg IyBJZiBjaGFuZ2VzIGFyZSBmcm9tIHRhYmxlIG5vZGUKLSAgICAgICAgICAgICAgICAgICAgICAg IGlmICduYW1lJyBub3QgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWyduYW1l J10gPSBvbGRfZGF0YVsnbmFtZSddCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1 cGRhdGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0 YT1jLCBvX2RhdGE9b2xkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0g ICAgICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAg ICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgotICAgICAgICAgICAgICAgICAgICAg ICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICAgICAg Y1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNx bCB0byBhZGQgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZhbGlkYXRl X2NvbnN0cmFpbnMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X2NvbnN0 cmFpbnRzW2N0eXBlXSwgYyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVu ZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0 ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3Jl YXRlLnNxbCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZT0nUFJJTUFS WSBLRVknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdHlwZSA9PSAn cCcgZWxzZSAnVU5JUVVFJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlw KCdcbicpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAg ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgezB9ICcKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25zdHJhaW50Jy5mb3JtYXQoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfY29uc3RyYWludHNb Y3R5cGVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0g ICAgICAgIGlmIGxlbihzcWwpID4gMDoKLSAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChz KSBhcyBzaW5nbGUgc3RyaW5nCi0gICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQot ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRfZm9y ZWlnbl9rZXlfc3FsKHNlbGYsIHRpZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICAgQXJn czoKLSAgICAgICAgICAgdGlkOiBUYWJsZSBJRAotICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3Qg Y29taW5nIGZyb20gdGhlIGNsaWVudAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGZvcmVpZ24ga2V5Ci0gICAg ICAgICIiIgotICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQg aXMgaW4gZGF0YQotICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFk ZC9jaGFuZ2UvZGVsZXRlCi0gICAgICAgIGlmICdmb3JlaWduX2tleScgaW4gZGF0YToKLSAgICAg ICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydmb3JlaWduX2tleSddCi0gICAgICAgICAgICAjIElm IGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKLSAgICAgICAgICAgIGlmICdkZWxldGVkJyBp biBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0 ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQot ICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAg ICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKLSAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVu ZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQot ICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25z dHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToK LSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAg ICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAg ICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAg ICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLCAncHJvcGVy dGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9Y1snb2lk J10pCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChwcm9wZXJ0aWVzX3NxbCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11b MF0KLSAgICAgICAgICAgICAgICAgICAgaWYgJ25hbWUnIG5vdCBpbiBjOgotICAgICAgICAgICAg ICAgICAgICAgICAgY1snbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAg ICAgICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMs IG9fZGF0YT1vbGRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYu Y29ubikuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2ZvcmVpZ25fa2V5JywgYyk6 Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdldHRleHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBk ZWZpbml0aW9uIGluY29tcGxldGUgZm9yIGZvcmVpZ25fa2V5ICcKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NvbnN0cmFpbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg KQotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICdcblxuJy5qb2luKHNxbCkKLQotICAgICAgICAgICAgICAgICAgICBpZiAnY29sdW1ucycg aW4gYzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHMgPSBbXQotICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIGNvbCBpbiBjWydjb2x1bW5zJ106Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29scy5hcHBlbmQoY29sWydsb2NhbF9jb2x1bW4nXSkKLQotICAgICAgICAgICAgICAg ICAgICAgICAgY292ZXJpbmdpbmRleCA9IHNlbGYuc2VhcmNoX2NvdmVyaW5naW5kZXgodGlkLCBj b2xzKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3ZlcmluZ2luZGV4IGlzIE5vbmUg YW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXV0b2luZGV4JyBpbiBjIGFuZCBc Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY1snYXV0b2luZGV4J10gYW5kIFwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoJ2NvdmVyaW5naW5kZXgnIGluIGMgYW5kCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2NvdmVyaW5naW5kZXgnXSAhPSAnJyk6Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZChyZW5kZXJfdGVtcGxhdGUoCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY3JlYXRlX2luZGV4LnNxbCcKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwg ZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKLSAgICAg ICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgotICAgICAgICAgICAgICAg ICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNb J3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byBh ZGQgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICMgQ29sdW1ucwotCi0gICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2ZvcmVpZ25fa2V5JywgYyk6 Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdldHRleHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBk ZWZpbml0aW9uIGluY29tcGxldGUgZm9yIGZvcmVpZ25fa2V5ICcKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NvbnN0cmFpbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg KQotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICdcblxuJy5qb2luKHNxbCkKLQotICAgICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbigKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X3Bh cmVudC5zcWwnXQotICAgICAgICAgICAgICAgICAgICAgICAgKSwgdGlkPWNbJ2NvbHVtbnMnXVsw XVsncmVmZXJlbmNlcyddCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgICAg ICAgICAgY1sncmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAg ICAgICAgICAgICAgICAgICBjWydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFi bGUnXQotCi0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAg ICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgotICAgICAgICAgICAgICAgICAgICAgICAg KS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAg ICAgaWYgY1snYXV0b2luZGV4J106Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5k KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVh dGVfaW5kZXguc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMs IGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgKQot Ci0gICAgICAgIGlmIGxlbihzcWwpID4gMDoKLSAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNx bChzKSBhcyBzaW5nbGUgc3RyaW5nCi0gICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3Fs KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRf Y2hlY2tfY29uc3RyYWludF9zcWwoc2VsZiwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAg ICAgICBBcmdzOgotICAgICAgICAgICB0aWQ6IFRhYmxlIElECi0gICAgICAgICAgIGRhdGE6IGRh dGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBjaGVjayBj b25zdHJhaW50Ci0gICAgICAgICIiIgotICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIENoZWNr IGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQotICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQg dG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCi0gICAgICAgIGlmICdjaGVja19jb25zdHJh aW50JyBpbiBkYXRhOgotICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2NoZWNrX2NvbnN0 cmFpbnQnXQotICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCi0g ICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICBm b3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3Nj aGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9 IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCi0gICAg ICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYu Y2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMs IGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAg ICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZv ciBjIGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2No ZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0g ZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5k ZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbigKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddCi0gICAgICAg ICAgICAgICAgICAgICAgICApLCB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10KLSAgICAgICAgICAgICAg ICAgICAgKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QocHJvcGVydGllc19zcWwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93 cyddWzBdCi0gICAgICAgICAgICAgICAgICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QKLSAgICAg ICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j aGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAg ICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKLSAgICAg ICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgotICAgICAgICAgICAgICAg ICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNb J3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2Vs Zi52YWxpZGF0ZV9jb25zdHJhaW5zKCdjaGVja19jb25zdHJhaW50JywgYyk6Ci0gICAgICAgICAg ICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl dHRleHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGlu Y29tcGxldGUgZm9yIGNoZWNrX2NvbnN0cmFpbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuICdcblxuJy5qb2luKHNxbCkKLQotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5k KAotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgot ICAgICAgICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAg ICApCi0KLSAgICAgICAgaWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0 aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9p bihzcWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVm IGdldF9leGNsdXNpb25fY29uc3RyYWludF9zcWwoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAg ICAgICAiIiIKLSAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgIHRpZDogVGFibGUgSUQKLSAgICAg ICAgICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKLQotICAgICAgICBS ZXR1cm5zOgotICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBz cWwgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50Ci0gICAgICAgICIiIgotICAgICAgICBzcWwgPSBb XQotICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQotICAgICAgICAjIElm IHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCi0gICAgICAg IGlmICdleGNsdWRlX2NvbnN0cmFpbnQnIGluIGRhdGE6Ci0gICAgICAgICAgICBjb25zdHJhaW50 ID0gZGF0YVsnZXhjbHVkZV9jb25zdHJhaW50J10KLSAgICAgICAgICAgICMgSWYgY29uc3RyYWlu dChzKSBpcy9hcmUgZGVsZXRlZAotICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFp bnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgotICAg ICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAg ICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAg ICAjIFNxbCBmb3IgZHJvcAotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0g ICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGluIGNvbnN0 cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgot ICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAg ICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAg ICAgICAgICAgICAgICAgIFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAg ICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgY2lkPWNbJ29pZCddKQotICAgICAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGll c19zcWwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQot ICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAgICAg ICAgICAgICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgc3Fs LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNsdXNpb25fY29uc3RyYWlu dF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUuc3Fs J10pLCBkYXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgKQotCi0g ICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9y IGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1h J10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0 YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29u c3RyYWlucygnZXhjbHVkZV9jb25zdHJhaW50JywgYyk6Ci0gICAgICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9y ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2x1c2lvbl9jb25zdHJhaW50 JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAg ICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAg ICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl bmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uCi0gICAgICAgICAgICAgICAgICAgICAgICAp LnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICBpZiBsZW4oc3Fs KSA+IDA6Ci0gICAgICAgICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykgYXMgc2luZ2xlIHN0cmlu ZwotICAgICAgICAgICAgcmV0dXJuIHUnXG5cbicuam9pbihzcWwpCi0gICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICByZXR1cm4gTm9uZQotCiAgICAgZGVmIGdldF9zcWwoc2VsZiwgZGlkLCBzY2lk LCB0aWQsIGRhdGEsIHJlcyk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZ2VuZXJhdGUgY3JlYXRlL3VwZGF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCkBAIC0xOTk5LDI3 ICsxMTUzLDMxIEBAIGNsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFy dGl0aW9uVGFibGUpOgogICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsgcGFydGl0aW9uc19z cWwuc3RyaXAoJ1xuJykKIAogICAgICAgICAgICAgIyBDaGVjayBpZiBpbmRleCBjb25zdHJhaW50 cyBhcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCi0gICAgICAgICAgICBpbmRleF9jb25zdHJhaW50 X3NxbCA9IHNlbGYuZ2V0X2luZGV4X2NvbnN0cmFpbnRfc3FsKAotICAgICAgICAgICAgICAgIGRp ZCwgdGlkLCBkYXRhKQorICAgICAgICAgICAgaW5kZXhfY29uc3RyYWludF9zcWwgPSBcCisgICAg ICAgICAgICAgICAgaWR4Y29uc191dGlscy5nZXRfaW5kZXhfY29uc3RyYWludF9zcWwoCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgZGlkLCB0aWQsIGRhdGEpCiAgICAgICAgICAgICAj IElmIHdlIGhhdmUgaW5kZXggY29uc3RyYWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAog ICAgICAgICAgICAgaWYgaW5kZXhfY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6CiAgICAgICAg ICAgICAgICAgU1FMICs9ICdcbicgKyBpbmRleF9jb25zdHJhaW50X3NxbAogCiAgICAgICAgICAg ICAjIENoZWNrIGlmIGZvcmVpZ24ga2V5KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQK LSAgICAgICAgICAgIGZvcmVpZ25fa2V5X3NxbCA9IHNlbGYuZ2V0X2ZvcmVpZ25fa2V5X3NxbCh0 aWQsIGRhdGEpCisgICAgICAgICAgICBmb3JlaWduX2tleV9zcWwgPSBma2V5X3V0aWxzLmdldF9m b3JlaWduX2tleV9zcWwoCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLCB0aWQsIGRhdGEpCiAg ICAgICAgICAgICAjIElmIHdlIGhhdmUgZm9yZWlnbiBrZXkgc3FsIHRoZW4gYWQgaXQgaW4gbWFp biBzcWwKICAgICAgICAgICAgIGlmIGZvcmVpZ25fa2V5X3NxbCBpcyBub3QgTm9uZToKICAgICAg ICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGZvcmVpZ25fa2V5X3NxbAogCiAgICAgICAgICAgICAj IENoZWNrIGlmIGNoZWNrIGNvbnN0cmFpbnQocykgaXMvYXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRl ZAotICAgICAgICAgICAgY2hlY2tfY29uc3RyYWludF9zcWwgPSBzZWxmLmdldF9jaGVja19jb25z dHJhaW50X3NxbCh0aWQsIGRhdGEpCisgICAgICAgICAgICBjaGVja19jb25zdHJhaW50X3NxbCA9 IGNoZWNrX3V0aWxzLmdldF9jaGVja19jb25zdHJhaW50X3NxbCgKKyAgICAgICAgICAgICAgICBz ZWxmLmNvbm4sIHRpZCwgZGF0YSkKICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBjaGVjayBjb25z dHJhaW50IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3FsCiAgICAgICAgICAgICBpZiBjaGVja19j b25zdHJhaW50X3NxbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBTUUwgKz0gJ1xuJyAr IGNoZWNrX2NvbnN0cmFpbnRfc3FsCiAKICAgICAgICAgICAgICMgQ2hlY2sgaWYgZXhjbHVzaW9u IGNvbnN0cmFpbnQocykgaXMvYXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRlZAotICAgICAgICAgICAg ZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRf c3FsKAotICAgICAgICAgICAgICAgIGRpZCwgdGlkLCBkYXRhKQorICAgICAgICAgICAgZXhjbHVz aW9uX2NvbnN0cmFpbnRfc3FsID0gXAorICAgICAgICAgICAgICAgIGV4Y2x1c2lvbl91dGlscy5n ZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmNv bm4sIGRpZCwgdGlkLCBkYXRhKQogICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGNoZWNrIGNvbnN0 cmFpbnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKICAgICAgICAgICAgIGlmIGV4Y2x1c2lv bl9jb25zdHJhaW50X3NxbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBTUUwgKz0gJ1xu JyArIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbApAQCAtMjA1NiwxNiArMTIxNCwxMCBAQCBjbGFz cyBCYXNlVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgQmFzZVBhcnRpdGlvblRhYmxlKToKIAog ICAgICAgICAgICAgaWYgJ2ZvcmVpZ25fa2V5JyBpbiBkYXRhOgogICAgICAgICAgICAgICAgIGZv ciBjIGluIGRhdGFbJ2ZvcmVpZ25fa2V5J106Ci0gICAgICAgICAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmZv cmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9w YXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWNbJ2NvbHVtbnMnXVsw XVsncmVmZXJlbmNlcyddKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVfc2NoZW1h J10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3Jl bW90ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisgICAgICAgICAgICAgICAg ICAgIHNjaGVtYSwgdGFibGUgPSBma2V5X3V0aWxzLmdldF9wYXJlbnQoCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmNvbm4sIGNbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQorICAg ICAgICAgICAgICAgICAgICBjWydyZW1vdGVfc2NoZW1hJ10gPSBzY2hlbWEKKyAgICAgICAgICAg ICAgICAgICAgY1sncmVtb3RlX3RhYmxlJ10gPSB0YWJsZQogCiAgICAgICAgICAgICBwYXJ0aXRp b25zX3NxbCA9ICcnCiAgICAgICAgICAgICBpZiAnaXNfcGFydGl0aW9uZWQnIGluIGRhdGEgYW5k IGRhdGFbJ2lzX3BhcnRpdGlvbmVkJ106CkBAIC0yNTI1LDQ2ICsxNjc3LDYgQEAgY2xhc3MgQmFz ZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRpb25UYWJsZSk6CiAgICAgICAg ICAgICBkYXRhWydhdHRwcmVjaXNpb24nXSA9IHN0cihkYXRhWydhdHRwcmVjaXNpb24nXSkKICAg ICAgICAgcmV0dXJuIGRhdGEKIAotICAgIGRlZiBzZWFyY2hfY292ZXJpbmdpbmRleChzZWxmLCB0 aWQsIGNvbHMpOgotICAgICAgICAiIiIKLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHRpZDog VGFibGUgaWQKLSAgICAgICAgICBjb2xzOiBjb2x1bW4gbGlzdAotCi0gICAgICAgIFJldHVybnM6 Ci0KLSAgICAgICAgIiIiCi0KLSAgICAgICAgY29scyA9IHNldChjb2xzKQotICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0 aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFp bnRzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0gICAg ICAgIHN0YXR1cywgY29uc3RyYWludHMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLQot ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGNvbnN0 cmFpbnRzKQotCi0gICAgICAgIGZvciBjb3N0cm50IGluIGNvbnN0cmFpbnRzWydyb3dzJ106Ci0K LSAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbHMuc3FsJ10pLAot ICAgICAgICAgICAgICAgIGNpZD1jb3N0cm50WydvaWQnXSwKLSAgICAgICAgICAgICAgICBjb2xj bnQ9Y29zdHJudFsnY29sX2NvdW50J10pCi0gICAgICAgICAgICBzdGF0dXMsIHJlc3QgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3Qp Ci0KLSAgICAgICAgICAgIGluZGV4Y29scyA9IHNldCgpCi0gICAgICAgICAgICBmb3IgciBpbiBy ZXN0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgaW5kZXhjb2xzLmFkZChyWydjb2x1bW4nXS5z dHJpcCgnIicpKQotCi0gICAgICAgICAgICBpZiBsZW4oY29scyAtIGluZGV4Y29scykgPT0gbGVu KGluZGV4Y29scyAtIGNvbHMpID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvc3RybnRb ImlkeG5hbWUiXQotCi0gICAgICAgIHJldHVybiBOb25lCi0KICAgICBkZWYgdXBkYXRlX3ZhY3V1 bV9zZXR0aW5ncyhzZWxmLCB2YWN1dW1fa2V5LCBvbGRfZGF0YSwgZGF0YSk6CiAgICAgICAgICIi IgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGUgdGhlIHZhY3V1bSBhbmQgdmFjdXVtIHRv YXN0IHRhYmxlIGFuZCBjcmVhdGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL2V4Y2Vw dGlvbi5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2V4Y2VwdGlvbi5weQppbmRleCAwOTYwNDNjYjEu LjYxNTlmOWZmOCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZXhjZXB0aW9uLnB5Cisr KyBiL3dlYi9wZ2FkbWluL3V0aWxzL2V4Y2VwdGlvbi5weQpAQCAtMTIsNyArMTIsNyBAQCBmcm9t IHdlcmt6ZXVnLmh0dHAgaW1wb3J0IEhUVFBfU1RBVFVTX0NPREVTCiBmcm9tIGZsYXNrX2JhYmVs ZXggaW1wb3J0IGdldHRleHQgYXMgXwogZnJvbSBmbGFzayBpbXBvcnQgcmVxdWVzdAogCi1mcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgc2VydmljZV91bmF2YWlsYWJsZQorZnJvbSBwZ2Fk bWluLnV0aWxzLmFqYXggaW1wb3J0IHNlcnZpY2VfdW5hdmFpbGFibGUsIGdvbmUKIAogCiBjbGFz cyBDb25uZWN0aW9uTG9zdChIVFRQRXhjZXB0aW9uKToKQEAgLTEwNSwzICsxMDUsMjYgQEAgY2xh c3MgQ3J5cHRLZXlNaXNzaW5nKEhUVFBFeGNlcHRpb24pOgogCiAgICAgZGVmIF9fcmVwcl9fKHNl bGYpOgogICAgICAgICByZXR1cm4gIkNyeXB0IGtleSBpcyBtaXNzaW5nLiIKKworCitjbGFzcyBP YmplY3RHb25lKEhUVFBFeGNlcHRpb24pOgorICAgICIiIgorICAgIEV4Y2VwdGlvbgorICAgICIi IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9yX21zZyk6CisgICAgICAgIHNlbGYuZXJy b3JfbXNnID0gZXJyb3JfbXNnCisgICAgICAgIEhUVFBFeGNlcHRpb24uX19pbml0X18oc2VsZikK KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gSFRU UF9TVEFUVVNfQ09ERVMuZ2V0KDQxMCwgJ0dvbmUnKQorCisgICAgZGVmIGdldF9yZXNwb25zZShz ZWxmLCBlbnZpcm9uPU5vbmUpOgorICAgICAgICByZXR1cm4gZ29uZShzZWxmLmVycm9yX21zZykK KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2cK KworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNn Cg== --00000000000023ed5605973a8dbd--