Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aUCMW-0004Kh-IB for pgadmin-hackers@arkaria.postgresql.org; Fri, 12 Feb 2016 11:58:12 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aUCMV-0005LS-5k for pgadmin-hackers@arkaria.postgresql.org; Fri, 12 Feb 2016 11:58:11 +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_SHA384:256) (Exim 4.84) (envelope-from ) id 1aUCMS-0005Kl-9i for pgadmin-hackers@postgresql.org; Fri, 12 Feb 2016 11:58:08 +0000 Received: from mail-yw0-x233.google.com ([2607:f8b0:4002:c05::233]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aUCMM-0000vb-MB for pgadmin-hackers@postgresql.org; Fri, 12 Feb 2016 11:58:07 +0000 Received: by mail-yw0-x233.google.com with SMTP id h129so62740704ywb.1 for ; Fri, 12 Feb 2016 03:58:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=/3tgVmQ0OS50skovpvoWextSBGxI/VZnZBINMqWJi3A=; b=F6oNcyQUPIB84oO1KzpLoy50MTbeLqqARgN9p3cioX63+l+dcCWxfdFFbp+8vYw/EP L6qBTmkLKlR1bi4WvV8CieeID1y7OkYYB4IF2QT7R3xwtgzS7XGEj4COovl6UgtImv4f 5iyIYUPFJyKleey4vjY9k1HkJjQ4cN8lIOC2pofCXoPW5UtH3NH6cyVrBxUBo4WLeulM 309oqzpkq2s5f9y3LE4zOVpownY4g+MtsWUKE7+hodiVK4d3E9nnAMSFixjbSkbvVPTZ MozPpGLEaIf5AqixLEM86a43o91ee0EnIrwu0hXXWV3XWcM2s9AvG5icyHOkTySt6MGV PZHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=/3tgVmQ0OS50skovpvoWextSBGxI/VZnZBINMqWJi3A=; b=SGCrS6VutIZ8TzB8i259OKNvzvSyQm32P0xwIiP9c4Qx5OibCEay8SLIY6m//BitP4 dE1SA6wlOdozGqy/w1ryonNGC5BJ9R97NbY1P/SE9QK5ao1jVqs43isDOUx2nE6G364C 0aPa6qCUGnIfL+c/SJoRxZCUiHT4x8Gekke51kRemrrptU1FitCr0jhsdiYYLgDgGD9X Mn/06wDkCp5U0hsoEeQ4MlPyzouZEVogypifsRqbSlKf5SlX3afbhkqB7pSZXq12HOZf 83i/NZKfBEpvQsXAzcA8D3g0nKwlVtTDdlpEW7fJl1bMjiK7E1ONFqZ00pxNYCga+xlV 3mBg== X-Gm-Message-State: AG10YOQtpLg2Sm6vWpPpqa7np66TbWFUbyWBW1f2qgm/8mgoM50UWfde0OXn+n6OYxdguvSLnG3cL+b8W98Anh9O MIME-Version: 1.0 X-Received: by 10.13.217.209 with SMTP id b200mr595606ywe.200.1455278279848; Fri, 12 Feb 2016 03:57:59 -0800 (PST) Received: by 10.129.84.198 with HTTP; Fri, 12 Feb 2016 03:57:59 -0800 (PST) In-Reply-To: References: Date: Fri, 12 Feb 2016 17:27:59 +0530 Message-ID: Subject: Re: patch for cast module From: Sanket Mehta To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114fa476ec1f4a052b9160c6 X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a114fa476ec1f4a052b9160c6 Content-Type: multipart/alternative; boundary=001a114fa476ec1f45052b9160c4 --001a114fa476ec1f45052b9160c4 Content-Type: text/plain; charset=UTF-8 Hi Akshay, PFA the updated patch. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Thu, Feb 11, 2016 at 12:09 PM, Akshay Joshi < akshay.joshi@enterprisedb.com> wrote: > Hi Sanket > > Most of the review comments has been resolved but I found some issues with > this patch > > - When select some system cast it is showing wrong query, for example > when select "abstime->date" in pgAdmin3 it is showing "AS ASSIGNMENT" > and with your code it is showing "AS IMPLICIT". > - For some of the system casts SQL query showing "WITH FUNCTION date" > instead of "WITH FUNCTION date(abstime)" source type is not appended > in query with new code. > - For casts "bit->"bit"" function and target type is not listed. > - When we create a new cast like "character->bytea" without selecting > function, it creates successfully but when we select the newly created cast > it shows the function "bpcharsend" in functions property. It may come > for other combinations too, please verify. > - Please fixed warnings in python file by using pep8 tool. > > > On Mon, Feb 8, 2016 at 3:45 PM, Sanket Mehta .com> wrote: > >> Hi Akshay, >> >> PFA the revised patch. >> All the comments are inline. >> >> >> Regards, >> Sanket Mehta >> Sr Software engineer >> Enterprisedb >> >> On Fri, Feb 5, 2016 at 12:43 PM, Akshay Joshi < >> akshay.joshi@enterprisedb.com> wrote: >> >>> Hi Sanket >>> >>> Below are the review comments >>> >>> - As "Show System Object" is not implemented yet, we should show all >>> the objects by default. >>> >>> Done >> >>> >>> - As in pgAdmin3 when click on Casts (Collection) node it should >>> show only Name, Owner and Comments. With current code it is showing all the >>> properties. >>> >>> Done.. Owner field is ignore as it is not a part of cast properties. >> >>> >>> - Properties Tab contains only one control "Comment" can that be a >>> part of the Definition tab??? >>> - For some data type like "Character", "Integer", it is throwing >>> error that data type doesn't exist. >>> >>> resolved >> >>> >>> - If node is leaf node then it should not show (+) expand symbol. >>> >>> Done >> >>> >>> - Remove extra lines from create.sql and update.sql files as it >>> shown in the SQL tab as well. >>> >>> Ignored as it was suggested by Ashesh. >> >>> >>> - When select any system cast it is not showing function in the >>> function control. >>> >>> Resolved. >> >>> >>> - If comment is already exist and we remove the comments, sql query >>> not generated in the SQL tab while it is generating in pgAdmin3. >>> >>> Done. >> >> >>> *Question*: With current implementation in "pgAdmin3" to create "Cast" >>> user will have to select source type and target type and then click on OK >>> button. If source and target type is not physically compatible, server will >>> throw an error. I am not sure, but instead of that can we implement it like >>> when user select the source type from combo box, target type combo will >>> only show types which are physically compatible? >>> >> After consulting with db server team, it is clear that they do not >> maintain any mapping for compatible source and target types. in postgresql, >> they pick selected source and target type and check them for compatibility. >> So its not possible to filter out target type based on selected source type. >> >>> >>> >>> >>> On Thu, Feb 4, 2016 at 6:31 PM, Sanket Mehta < >>> sanket.mehta@enterprisedb.com> wrote: >>> >>>> Hi Akshay, >>>> >>>> PFA the latest patch for Cast module. >>>> Please do review it and let me know if anything is missing. >>>> >>>> >>>> Regards, >>>> Sanket Mehta >>>> Sr Software engineer >>>> Enterprisedb >>>> >>>> On Wed, Jan 20, 2016 at 5:03 PM, Sanket Mehta < >>>> sanket.mehta@enterprisedb.com> wrote: >>>> >>>>> Hi Neel. >>>>> >>>>> PFA the revised patch which has changed according to your comments. >>>>> Please do review it and let me know in case anything is missing. >>>>> >>>>> >>>>> >>>>> Regards, >>>>> Sanket Mehta >>>>> Sr Software engineer >>>>> Enterprisedb >>>>> >>>>> On Wed, Jan 20, 2016 at 10:20 AM, Neel Patel < >>>>> neel.patel@enterprisedb.com> wrote: >>>>> >>>>>> Hi Sanket, >>>>>> >>>>>> Below are the review comments. >>>>>> >>>>>> - When we edit any existing cast node then it gives error "*Response >>>>>> object has no attribute strip*". This error is coming because >>>>>> generated SQL is >>>>>> wrong. >>>>>> - Unnecessary debug logs are coming on console. Please remove >>>>>> unnecessary debug logs. >>>>>> - In some of the sql file, 'qtIdent' and 'qtLiteral' is not used. >>>>>> Please check all the SQL files. >>>>>> - "Delete" cast functionality is not working. Error is getting >>>>>> displayed saying *"syntax error at or near "castsource"*. >>>>>> - "Delete cascade" functionality is not working - error is getting >>>>>> displayed saying *"The requested URL not found".* >>>>>> - Do the proper comments, in some of the function like "script_load" >>>>>> , comments are wrong. >>>>>> - Is "configs" really required in __init__.py file ? We have not seen >>>>>> any usage for this. Please remove it if it is not required. >>>>>> - Remove commented code from the source file. >>>>>> >>>>>> Please check all the generated SQL statements . Test the basic >>>>>> functionality of "create", "Edit" and "Delete" node before sending patch >>>>>> file. >>>>>> >>>>>> Do let us know for any comments/issues. >>>>>> >>>>>> Thanks, >>>>>> Neel Patel >>>>>> >>>>>> On Tue, Jan 19, 2016 at 8:06 PM, Sanket Mehta < >>>>>> sanket.mehta@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> PFA updated patch for cast module as per check list provided by Neel. >>>>>>> Please do review it and let me know in case of anything is missing. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Regards, >>>>>>> Sanket Mehta >>>>>>> Sr Software engineer >>>>>>> Enterprisedb >>>>>>> >>>>>>> On Mon, Jan 18, 2016 at 7:16 PM, Sanket Mehta < >>>>>>> sanket.mehta@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> PFA patch for cast module. >>>>>>>> Please do review it and let me know in case of any issue. >>>>>>>> >>>>>>>> >>>>>>>> Regards, >>>>>>>> Sanket Mehta >>>>>>>> Sr Software engineer >>>>>>>> Enterprisedb >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Sent via pgadmin-hackers mailing list ( >>>>>>> pgadmin-hackers@postgresql.org) >>>>>>> To make changes to your subscription: >>>>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>> To make changes to your subscription: >>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>> >>>> >>> >>> >>> -- >>> *Akshay Joshi* >>> *Principal Software Engineer * >>> >>> >>> >>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* >>> >> >> > > > -- > *Akshay Joshi* > *Principal Software Engineer * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > --001a114fa476ec1f45052b9160c4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Akshay,

PFA the updated patch.

Regards,
Sanket Mehta
Sr Software e= ngineer
Enterprisedb

On Thu, Feb 11, 2016 at 12:09 PM, Akshay Jos= hi <akshay.joshi@enterprisedb.com> wrote:
Hi Sanket=C2=A0
Most of the review comments has been resolved but I found= some issues with this patch=C2=A0
  • When select some syste= m cast it is showing wrong query, for example when select "absti= me->date" in pgAdmin3 it is showing "AS ASSIGNMENT"= ; and with your code it is showing "AS IMPLICIT".
  • For som= e of the system casts SQL query showing "WITH FUNCTION da= te" instead of "WITH FUNCTION date(abstime)" so= urce type is not appended in query with new code.
  • For casts "b= it->"bit"" function and target type is not listed.
  • When we create a new cast like "character->bytea&quo= t; without selecting function, it creates successfully but when we select t= he newly created cast it shows the function "bpcharsend&q= uot; in functions property. It may come for other combinations too, please = verify.=C2=A0
  • Please fixed warnings in python file by using pep8 to= ol. =C2=A0 =C2=A0

On Mon, Feb 8, 2016 at 3:45 PM, = Sanket Mehta <sanket.me= hta@enterprisedb.com> wrote:
Hi Akshay,

PFA the revised patc= h.
All the comments are inline.


Regards= ,
Sanket Mehta
Sr Software engineer
Enterprisedb

On Fri, Feb 5, 2016 at 12:43 PM= , Akshay Joshi <akshay.joshi@enterprisedb.com> w= rote:
Hi Sanket=C2=A0
Below are the review comments
  • As "Sh= ow System Object" is not implemented yet, we should show all the objec= ts by default.
Done
=
  • As in pgAdmin3 when cl= ick on Casts (Collection) node it should show only Name, Owner and Comments= . With current code it is showing all the properties.
=
Done.. Owner field is ignore as it is not a part o= f cast properties.
=
  • Properties Tab contains only one control "Comment" can th= at be a part of the Definition tab???
  • For some data type like "= ;Character", "Integer", it is throwing error that data type = doesn't exist.
resolved <= br>
  • If node is le= af node then it should not show (+) expand symbol.
Done
  • Remove extra lines from create.sql and update.<= span>sql files as it shown in the SQL tab as well.
  • =
Ignored as it was suggested by As= hesh.
  • When s= elect any system cast it is not showing function in the function control.
Resolved.
  • If comment is already exist and = we remove the comments, sql query not generated in the S= QL tab while it is generating in pgAdmin3.
Done.
=C2=A0
Question: With current implementation in "pgAdm= in3" to create "Cast" user will have to select source type a= nd target type and then click on OK button. If source and target type is no= t physically compatible, server will throw an error. I am not sure, but ins= tead of that can we implement it like when user select the source type from= combo box, target type combo will only show types which are physically com= patible?
After consulting with db s= erver team, it is clear that they do not maintain any mapping for compatibl= e source and target types. in postgresql, they pick selected source and tar= get type and check them for compatibility. So its not possible to filter ou= t target type based on selected source type.

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0=C2=A0
On Thu, Feb 4, 2016 at 6:31 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi Akshay,

PFA the latest = patch for Cast module.
Please do review it and let me know if anyt= hing is missing.


Regards,
Sanket Mehta
Sr Sof= tware engineer
Enterprisedb

On Wed, Jan 20, 2016 at 5:0= 3 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi Neel.

= PFA the revised patch which has changed according to your comments.
Please do review it and let me know in case anything is missing.



Regards,
Sanket Mehta
Sr= Software engineer
Enterprisedb

On Wed, Jan 20, 2016 at 10:= 20 AM, Neel Patel <neel.patel@enterprisedb.com> wr= ote:
Hi Sanket,

Below are the review comments.

- When we edit a= ny existing cast node then it gives error "Response object has no a= ttribute strip". This error is coming because generated SQL is=C2= =A0
=C2=A0 wrong.
- Unnecessary debug logs are coming on console. P= lease remove unnecessary debug logs.
- In some of the sql file, &= #39;qtIdent' and 'qtLiteral' is not used. Please check all the = SQL files.
- "Delete" cast functionality is not w= orking. Error is getting displayed saying "syntax error at or near = "castsource".=C2=A0
-=C2=A0"Delete cascade&quo= t; functionality is not working=C2=A0- error is getting displayed saying "The requested URL not found".
- Do the proper com= ments, in some of the function like "script_load" , comments are = wrong.
- Is "configs" really required in __init__.py fi= le ? We have not seen any usage for this. Please remove it if it is not req= uired.
- Remove commented code from the source file.
Please check all the generated SQL statements . Test the basic= functionality of "create", "Edit" and "Delete&quo= t; node before sending patch file.

Do let us know = for any comments/issues.

Thanks,
Neel Pa= tel

On Tue, Jan 19, 2016 at 8:06 PM, Sanket Mehta <sanket.meht= a@enterprisedb.com> wrote:
<= div dir=3D"ltr">Hi,

PFA updated patch for cast module as= per check list provided by Neel.
Please do review it and let me = know in case of anything is missing.



Regards,
Sanket Mehta
Sr Software engineer
En= terprisedb

On Mon, Jan 18, 2016 at 7:1= 6 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi,

PFA p= atch for cast module.
Please do review it and let me know in case= of any issue.


Regards,
Sanket Mehta
Sr Software engineer
Enterprisedb



--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=






--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=




--
Akshay Joshi
Principal Softw= are Engineer=C2=A0
<= span style=3D"color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px;= border-collapse:collapse">
<= /b>
=
Phone: +91 20-3058-9517
Mobile: +91 976-788-8246
<= /font>




--
= Akshay Joshi
Principal Software Engineer=C2=A0


Phone: += 91 20-3058-9517
Mobile: +91 976-788-8246

--001a114fa476ec1f45052b9160c4-- --001a114fa476ec1f4a052b9160c6 Content-Type: text/x-patch; charset=US-ASCII; name="castv7.patch" Content-Disposition: attachment; filename="castv7.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikjn40mm0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9jYXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43NjY5NmUwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNDk3IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQganNvbgorZnJvbSBm bGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBj dXJyZW50X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQu YmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4 IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3Bv bnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgor ZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IE5vZGVWaWV3Citm cm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0 aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNlcworZnJvbSBw Z2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJl ZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZl cgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9t IGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2Zyb20gaHRtbCBpbXBvcnQgZXNj YXBlCisKKworY2xhc3MgQ2FzdE1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVs ZSk6CisgICAgTk9ERV9UWVBFID0gJ2Nhc3QnCisgICAgQ09MTEVDVElPTl9M QUJFTCA9ICdDYXN0cycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJn cywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihDYXN0TW9kdWxlLCBzZWxm KS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZ2V0X25v ZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9kZQorICAgICAgICA6cGFy YW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIg aWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAg IiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xs ZWN0aW9uX25vZGUoZGlkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5v ZGVfaW5vZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBPdmVycmlk ZSB0aGUgcHJvcGVydHkgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUK KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHBy b3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAi IiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgY2FzdCwg d2hlbiBhbnkgb2YgdGhlIGRhdGFiYXNlIG5vZGUgaXMKKyAgICAgICAgaW5p dGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gZGF0YWJh c2VzLkRhdGFiYXNlTW9kdWxlLk5PREVfVFlQRQorCisKK2JsdWVwcmludCA9 IENhc3RNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgQ2FzdFZpZXcoTm9k ZVZpZXcpOgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUK KworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnc2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlk J30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50 JywgJ2lkJzogJ2NpZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRp Y3QoeworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAn cHJvcGVydGllcycsICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRh dGUnfSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdj cmVhdGUnfQorICAgICAgICBdLAorICAgICAgICAnY2hpbGRyZW4nOiBbewor ICAgICAgICAgICAgJ2dldCc6ICdjaGlsZHJlbicKKyAgICAgICAgfV0sCisg ICAgICAgICdkZWxldGUnOiBbeydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAg ICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rl cyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAg ICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9 XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0s CisgICAgICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2ll cyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRl bnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQn OiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAnZ2V0X3R5cGUnOiBbeydnZXQn OiAnZ2V0X3NyY19hbmRfdHJnX3R5cGUnfSwgeydnZXQnOiAnZ2V0X3NyY19h bmRfdHJnX3R5cGUnfV0sCisgICAgICAgICdnZXRfZnVuY3Rpb25zJzogW3sn cG9zdCc6ICdnZXRfZnVuY3Rpb25zJ30sIHsncG9zdCc6ICdnZXRfZnVuY3Rp b25zJ31dCisgICAgfSkKKworICAgIGRlZiBfaW5pdF8oc2VsZiwgKiprd2Fy Z3MpOgorICAgICAgICBzZWxmLmNvbm4gPSBOb25lCisgICAgICAgIHNlbGYu dGVtcGxhdGVfcGF0aCA9IE5vbmUKKyAgICAgICAgc2VsZi5tYW5hZ2VyID0g Tm9uZQorICAgICAgICBzdXBlcihDYXN0Vmlldywgc2VsZikuX19pbml0X18o Kiprd2FyZ3MpCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZh c2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJp ZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMuCisgICAgICAg ICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiY2FzdC9q cy9jYXN0cy5qcyIsCisgICAgICAgICAgICAgICAgXz1nZXR0ZXh0CisgICAg ICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6 ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisKKyAg ICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRv ciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0 aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hl cworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3Bl cnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKworICAgICAgICBAd3JhcHMo ZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg ICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dhcmdz IHdpbGwgaG9sZCBnaWQsc2lkLGRpZAorICAgICAgICAgICAgc2VsZiA9IGFy Z3NbMF0KKyAgICAgICAgICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIo UEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3Nb J3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2Vy LmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICAj IElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJv d3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5jb25uZWN0ZWQo KToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVp cmVkKAorICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAg ICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMg YmVlbiBsb3N0ISIKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJz aW9uCisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0IHRlbXBsYXRlIHBhdGgg Zm9yIHNxbCBzY3JpcHRzCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTAxMDA6 CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2Nhc3Qv c3FsLzkuMV9wbHVzJworCisgICAgICAgICAgICByZXR1cm4gZigqYXJncywg Kiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwg ZGlkKToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRp ZXMuc3FsJ10pLAorICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLm1h bmFnZXIuZGJfaW5mb1tkaWRdWydkYXRsYXN0c3lzb2lkJ10KKyAgICAgICAg KQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAg ICAgcm93WydjYXN0Y29udGV4dCddID0gVHJ1ZSBpZiByb3dbJ2Nhc3Rjb250 ZXh0J10gPT0gJ0lNUExJQ0lUJyBlbHNlIEZhbHNlCisKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNb J3Jvd3MnXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxm LCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAg ICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLm1hbmFnZXIuZGJfaW5mb1tk aWRdWydkYXRsYXN0c3lzb2lkJ10KKyAgICAgICAgKQorICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KHNxbCkKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJvd1snY2Fz dGNvbnRleHQnXSA9IFRydWUgaWYgcm93WydjYXN0Y29udGV4dCddID09ICdJ TVBMSUNJVCcgZWxzZSBGYWxzZQorICAgICAgICAgICAgcmVzLmFwcGVuZCgK KyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisg ICAgICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAgICAgICAgICAg cm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24t Y2FzdCIKKyAgICAgICAgICAgICAgICApKQorCisgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJlcywKKyAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIGNpZCk6CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgIGNpZD1jaWQsCisg ICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9pbmZv W2RpZF1bJ2RhdGxhc3RzeXNvaWQnXQorICAgICAgICApCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXN1 bHQgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0s CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwg c2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biB3aWxsIGNyZWF0ZXMgbmV3IHRoZSBjYXN0IG9iamVjdAorICAgICAgICA6 cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2lkOiBz ZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAg ICAgIiIiCisKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAg ICAgICdzcmN0eXAnLAorICAgICAgICAgICAgJ3RyZ3R5cCcKKyAgICAgICAg XQorCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5m b3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisg ICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAg IGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAg ICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoCisgICAgICAgICAg ICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCB0aGUgcmVxdWlyZWQgcGFy YW1ldGVyICglcykuIiAlIGFyZworICAgICAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICAgKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg ICMgd2UgbmVlZCBvaWQgdG8gdG8gYWRkIG9iamVjdCBpbiB0cmVlIGF0IGJy b3dzZXIsIGJlbG93IHNxbCB3aWxsIGdpdmVzIHRoZSBzYW1lCisgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNyY3R5cD1kYXRhWydzcmN0eXAnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmd0eXA9ZGF0 YVsndHJndHlwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0bGFzdHN5c29pZD1zZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydk YXRsYXN0c3lzb2lkJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICBzdGF0dXMsIGNpZCA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9Y2lkKQorCisgICAgICAgICAgICByZXR1cm4ganNvbmlm eSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVy YXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgY2lkLAor ICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAgICAgICAgICAgICAg IGRhdGFbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNv bi1jYXN0IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShzZWxm LCBnaWQsIHNpZCwgZGlkLCBjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBjYXN0IG9iamVjdAorICAgICAg ICA6cGFyYW0gY2lkOiBjYXN0IGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRh dGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAg ICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICAiIiIKKyAgICAg ICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBq c29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgc3Fs ID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkaWQsIGRhdGEsIGNpZCkKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc3FsIGFuZCBzcWwuc3RyaXAo J1xuJykgYW5kIHNxbC5zdHJpcCgnICcpOgorICAgICAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAg ICAgICAgICAgICAgaW5mbz0iQ2FzdCB1cGRhdGVkIiwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQn OiBjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAg ICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAgICAgICAgICAg ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzog Y2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBj aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGRyb3AgdGhlIGNhc3Qgb2JqZWN0CisgICAgICAgIDpwYXJhbSBjaWQ6IGNh c3QgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAg ICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBnaWQ6 IGdyb3VwIGlkCisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93IHdpbGwg ZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2Nh ZGUgY2FsbAorICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAg ICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAg ICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgIyBHZXQgbmFtZSBmb3IgY2FzdCBmcm9tIGNpZAorICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNpZD1jaWQpCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgIyBkcm9wIGNhc3QKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc1sncm93 cyddWzBdCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzdHNvdXJjZT1y ZXN1bHRbJ2Nhc3Rzb3VyY2UnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXN0dGFyZ2V0PXJlc3VsdFsnY2FzdHRhcmdldCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2NhZGU9Y2Fz Y2FkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAg ICAgIGluZm89Z2V0dGV4dCgiQ2FzdCBkcm9wcGVkIiksCisgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGNpZCwK KyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2Rp ZCc6IGRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNxbChzZWxm LCBnaWQsIHNpZCwgZGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIG1vZGlmaWVkIFNRTAorICAg ICAgICAgOnBhcmFtIGNpZDogY2FzdCBpZAorICAgICAgICAgOnBhcmFtIGRp ZDogZGF0YWJhc2UgaWQKKyAgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBp ZAorICAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgIiIi CisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmFyZ3MKKyAgICAgICAgc3FsID0g c2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkaWQsIGRhdGEsIGNpZCkKKyAgICAg ICAgaWYgaXNpbnN0YW5jZShzcWwsIHN0cikgYW5kIHNxbCBhbmQgc3FsLnN0 cmlwKCdcbicpIGFuZCBzcWwuc3RyaXAoJyAnKToKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0 YT1zcWwsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPSItLW1vZGlm aWVkIFNRTCIsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgKQorCisgICAgZGVmIGdldF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgZGF0YSwgY2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIHJldHVybiBzcWwgZm9yIG1vZGVsIGRhdGEKKyAg ICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNp ZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlk CisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgOnBhcmFt IGRhdGE6IG1vZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIGlmIGNpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9Y2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNl bGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQnXSkKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3Qoc3FsKQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBvbGRfZGF0 YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEKKyAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIGlmICdzcmN0eXAnIGluIGRhdGEgYW5kICd0cmd0eXAnIGluIGRhdGE6 CisgICAgICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwg ZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICBzcWwgPSAiLS0gaW5jb21wbGV0 ZSBkZWZpbml0aW9uIgorICAgICAgICAgICAgcmV0dXJuIHNxbAorCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfZnVuY3Rpb25z KHNlbGYsIGdpZCwgc2lkLCBkaWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZnVuY3Rpb25z IGxpc3QgYXNzb2NpYXRlZCB0byBhIGNhc3QKKyAgICAgICAgOnBhcmFtIGdp ZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisg ICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJh bSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtd CisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3Jt IGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZnVuY3Rpb25zLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNyY3R5cD1kYXRhWydzcmN0eXAnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRyZ3R5cD1kYXRhWyd0cmd0eXAn XSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNl dCkKKyAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVsJzogJycsCisgICAgICAg ICAgICAgICAgICAgICd2YWx1ZSc6ICcnfSkKKworICAgICAgICBmb3Igcm93 IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoeyds YWJlbCc6IHJvd1sncHJvbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgJ3ZhbHVlJzogcm93Wydwcm9uYW1lJ119KQorICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3NyY19hbmRfdHJnX3R5cGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgY2lkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0eXBlIGxpc3QK KyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFt IHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNl IGlkCisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgIiIi CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdnZXRzcmNhbmR0cmd0dHlwZS5zcWwnXSksCisgICAgICAgICAgICBj aWQ9Y2lkCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICByZXMgPSBbeydsYWJlbCc6 ICcnLCAndmFsdWUnOiAnJ31dCisgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCh7CisgICAgICAgICAg ICAgICAgJ2xhYmVsJzogcm93Wyd0eXBuYW1lJ10sCisgICAgICAgICAgICAg ICAgJ3ZhbHVlJzogZXNjYXBlKHJvd1sndHlwbmFtZSddKQorICAgICAgICAg ICAgfSkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGNpZCk6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZv ciBzcWwgcGFuZWwKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAg ICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBk aWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3QgaWQK KyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsLnNxbCddKSwKKyAgICAgICAgICAg ICAgICBjaWQ9Y2lkLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25u CisgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oIkVSUk9SOiBD b3VsZG4ndCBnZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIFF1ZXJ5IGZv ciB0aGUgY2FzdCFcbnswfSIpLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJlcworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmIHJlcyBpcyBOb25l OgorICAgICAgICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAg ICAgICAgICBfKCJFUlJPUjogQ291bGRuJ3QgZ2VuZXJhdGUgcmV2ZXJzZWQg ZW5naW5lZXJlZCBRdWVyeSBmb3IgdGhlIHJvbGUvdXNlciEiKQorICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKHJlc3BvbnNlPXJlcykKKworICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworCitDYXN0Vmlldy5yZWdpc3Rl cl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nh c3RzL3N0YXRpYy9pbWcvY2FzdC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvc3RhdGlj L2ltZy9jYXN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmU3ZjM3 NDJhNzYwZmFhNzcwOTA1MjY2OWY0NDRiYTg5NDljMzMwCkdJVCBiaW5hcnkg cGF0Y2gKbGl0ZXJhbCA0MjYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4w d0IhNjM/d3lsYEdiS31hKTN7V0UwQTg9WExJWX5gYmhzPmJFalhzCnpkdGMo PCMpX1Z7XkdsY2hLZWV+Iy1VR1E2RUJAYnFzSWhMe3xBJnVfSCpmeWA8Zjs5 eFVIX2p3X2M/Zyp8QklKVgp6Q3I8by17V3t+cWg1djhnbVJgSHx8TlotPmQt d2kte01oXldAJkNgQ3JvRExhZjZ3O0UoUXsoc2Z6fmpWMW87SXMKekk2UytO MklPIVNjdGpRaFglOEBWSkRGXzxXWWxAT0lFRn1FJk9MdXlzTDRRcGBORlpR eXdqREdJeWBwJV8jZEJuCnpRMChgRU83Q1VIWFFlKk5gPyk9dF5RN0Q4dzh9 OVYqTSZPWG1ZY1NRTVRUeFhhNWVaXnNZYnpWam9IdGxBTTZYPgp6dylWdDc7 WFVodT9hQ2c4LXEpVCNkanNwPzF2UW4wKCNIWnsmYXZLPkc7N018S2V6aSox Snw5QHdNQEE4R0l1NWEKejdrQFN2S0ElbExmaTYpa2FnOFdSTmkwZFZOLWp6 VFFWZDIwaDZjS1pNIUUpdUF3fnZQQ2RPN0tDZld3M1J0NSRaCnNHZ2FrS0gw MCl8V1RzVUBHI0ZUZEhHb3VHOEpJeWRvU0dpRzJCPzktKTc4JnFvbGA7KzA2 ekAzaHlWWnAKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy9zdGF0aWMvaW1nL2NvbGwtY2FzdC5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvY2FzdHMvc3RhdGljL2ltZy9jb2xsLWNhc3QucG5nCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjA5ZWI2NWFmMDJjNjZiZDY0YWIzNDA1YzU5MmVmZTRk OTBkNDFjOTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQwMgp6Y21lQVNA Tj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVJEZSYyRTA4fDV3 YFhhZU88bHE0TmRIfVAKenIoZTUhVSFwIypkZzs+dF9afSF0WjRBcCNvY2kj UXs9U1hvUG9DUUUtKDxVTCkmR3FmfExAeE18TEZGRj1Qdj5lCnpBTzhSMGVj UCo3RFFEMEF8TVkzeytxYjNIdUttQSV8TnBhUnwxWmhSajBjKnxTUTZ3SCU7 NTBzTWpEWEFTPk8+Xwp6NDVVNTQqeklKdDlndmFsPkVhazdhaz0jVFpONnAm MGhTQT95R3AmNVg2USVoZSowZV5Ub1paV05Uc3IrYil0KWwKemo5JTRMcTRx Wk93ZkZEY3pje09xPDYpcm1rc0VKJm5FaU9Gd0B5M0RWeipaTz04K1RBWj1K UUMmQ2g9SWxKJXEwCnpuI2ElZCRPbjV9ZVEhX3tgTzA8MVBrV3NeYGcpTyEh SkFtLXV7O1hnNHp5YWUjNUpOTUM5eCNjRCFDe1hOSEd7MAp6NyNpcHI4dEVE c2g4UClHbkhYRHttfW5jQVN7V0V2JXY2O18oVTY7O2w5XlRzKE9fVCspJk5w JVduYyE7YUI2eiEKUThsVk9TUGdnJmVieHNMUTA5WGZ+ZmRCdmkKCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90 ZW1wbGF0ZXMvY2FzdC9qcy9jYXN0cy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1w bGF0ZXMvY2FzdC9qcy9jYXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4zMDk1ZmE1Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L2pzL2Nhc3RzLmpzCkBAIC0wLDAg KzEsMjM4IEBACitkZWZpbmUoCisgICAgICAgIFsnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdwZ2Fk bWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJv d3NlciwgYWxlcnRpZnkpIHsKKworICAgIGlmICghcGdCcm93c2VyLk5vZGVz Wydjb2xsLWNhc3QnXSkgeworICAgICAgdmFyIGNhc3RzID0gcGdBZG1pbi5C cm93c2VyLk5vZGVzWydjb2xsLWNhc3QnXSA9CisgICAgICAgIHBnQWRtaW4u QnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgICAgbm9kZTog J2Nhc3QnLAorICAgICAgICAgIGxhYmVsOiAne3sgXygnQ2FzdHMnKSB9fScs CisgICAgICAgICAgdHlwZTogJ2NvbGwtY2FzdCcsCisgICAgICAgICAgY29s dW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgICAgfSk7Cisg ICAgfTsKKworICAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjYXN0J10pIHsK KyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2FzdCddID0gcGdBZG1p bi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgICAgcGFyZW50X3R5cGU6 ICdkYXRhYmFzZScsCisgICAgICAgIHR5cGU6ICdjYXN0JywKKyAgICAgICAg Y2FuRHJvcDogdHJ1ZSwKKyAgICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUs CisgICAgICAgIGxhYmVsOiAne3sgXygnQ2FzdCcpIH19JywKKyAgICAgICAg aGFzU1FMOiB0cnVlLAorICAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVu dXMgKi8KKyAgICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAg ICAgICAgIHJldHVybjsKKworICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQg PSB0cnVlOworCisgICAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbewor ICAgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9jYXN0X29uX2RhdGFiYXNlJywg bm9kZTogJ2RhdGFiYXNlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgICAg YXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3No b3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgICAgY2F0ZWdvcnk6ICdj cmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdDYXN0Li4uJykg fX0nLAorICAgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWNhc3Qn LCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIG5hbWU6ICdjcmVhdGVfY2FzdF9vbl9jb2xsJywgbm9kZTog J2NvbGwtY2FzdCcsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICAgIGFwcGxp ZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29i al9wcm9wZXJ0aWVzJywKKyAgICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRl JywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnQ2FzdC4uLicpIH19JywK KyAgICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1jYXN0JywgZGF0 YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgICAgfSx7CisgICAgICAg ICAgICBuYW1lOiAnY3JlYXRlX2Nhc3QnLCBub2RlOiAnY2FzdCcsIG1vZHVs ZTogdGhpcywKKyAgICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2Nv bnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxh YmVsOiAne3sgXygnQ2FzdC4uLicpIH19JywKKyAgICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi1jYXN0JywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZSd9CisgICAgICAgICAgfV0pOworCisgICAgICAgIH0sCisgICAgICAgIG1v ZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAg ICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgICBuYW1lOiB1bmRlZmlu ZWQsCisgICAgICAgICAgICBlbmNvZGluZzogJ1VURjgnLAorICAgICAgICAg ICAgc3JjdHlwOiB1bmRlZmluZWQsCisgICAgICAgICAgICB0cmd0eXA6IHVu ZGVmaW5lZCwKKyAgICAgICAgICAgIHByb25hbWU6IHVuZGVmaW5lZCwKKyAg ICAgICAgICAgIGNhc3Rjb250ZXh0OiB1bmRlZmluZWQsCisgICAgICAgICAg ICBzeXNjYXN0OiB1bmRlZmluZWQsCisgICAgICAgICAgICBkZXNjcmlwdGlv bjogdW5kZWZpbmVkCisgICAgICAgICAgfSwKKyAgICAgICAgICBzY2hlbWE6 IFt7CisgICAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05h bWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmlu aXRpb24nKSB9fScsCisgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5 cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2Vz OiAnd2lkdGhfcGVyY2VudF81MCcKKyAgICAgICAgICB9LHsKKyAgICAgICAg ICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8oJ09pZCcpIH19JywgY2VsbDog J3N0cmluZycsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAg ICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnLCBkaXNh YmxlZDogdHJ1ZQorICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdz cmN0eXAnLCBsYWJlbDone3sgXygnU291cmNlIHR5cGUnKSB9fScsIHVybDog J2dldF90eXBlJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6 ICdEZWZpbml0aW9uJywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgIHJldHVybiAhbS5pc05ldygpCisgICAgICAgICAgICB9LCBtb2Rl OiBbJ2NyZWF0ZSddLAorICAgICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlv bihyb3dzKSB7CisgICAgICAgICAgICAgIF8uZWFjaChyb3dzLCBmdW5jdGlv bihyKSB7CisgICAgICAgICAgICAgICAgclsnaW1hZ2UnXSA9ICdpY29uLWNh c3QnOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgcmV0dXJu IHJvd3M7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgLyogIEFzIG5h bWUgaXMgYmVpbmcgZ2VuZXJhdGVkIGZyb20gc3JjdHlwIGFuZCB0cmd0eXAs IGEgY2hlY2sgaGFzIGJlZW4gcHV0IGluCisgICAgICAgICAgICAgKiAgY29u dHJvbCBmaWVsZCBpZiBib3RoIGFyZSBjaGFuZ2VkIG9yIG5vdCBhbmQgZGVw ZW5kaW5nIHVwb24gaXQsIG5hbWUgaGFzIGJlZW4gc2V0LgorICAgICAgICAg ICAgICovCisgICAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUFq YXhPcHRpb25zQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgICAgb25D aGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICBCYWNrZm9y bS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlwZS5vbkNoYW5nZS5h cHBseSgKKyAgICAgICAgICAgICAgICAgICAgdGhpcywgYXJndW1lbnRzCisg ICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgIHZhciBz cmN0eXBlID0gdGhpcy5tb2RlbC5nZXQoJ3NyY3R5cCcpOworICAgICAgICAg ICAgICAgICB2YXIgdHJndHlwZSA9IHRoaXMubW9kZWwuZ2V0KCd0cmd0eXAn KTsKKyAgICAgICAgICAgICAgICAgaWYoc3JjdHlwZSAhPSB1bmRlZmluZWQg JiYgc3JjdHlwZSAhPSAnJyAmJgorICAgICAgICAgICAgICAgICAgICB0cmd0 eXBlICE9IHVuZGVmaW5lZCAmJiB0cmd0eXBlICE9ICcnKQorICAgICAgICAg ICAgICAgICAgIHRoaXMubW9kZWwuc2V0KCJuYW1lIiwgc3JjdHlwZSsiLT4i K3RyZ3R5cGUpOworICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgICAgdGhpcy5tb2RlbC51bnNldCgibmFtZSIpOworICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfSkKKyAgICAgICAgICB9LHsKKyAgICAg ICAgICAgIGlkOiAnc3JjdHlwJywgbGFiZWw6J3t7IF8oJ1NvdXJjZSB0eXBl JykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgICBncm91cDogJ0Rl ZmluaXRpb24nLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTpbJ3Byb3BlcnRpZXMn LCdlZGl0J10KKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAndHJn dHlwJywgbGFiZWw6J3t7IF8oJ1RhcmdldCB0eXBlJykgfX0nLCB1cmw6ICdn ZXRfdHlwZScsCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAn RGVmaW5pdGlvbicsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICAgIHJldHVybiAhbS5pc05ldygpCisgICAgICAgICAgICAgIH0sIG1v ZGU6IFsnY3JlYXRlJ10sCisgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0 aW9uKHJvd3MpIHsKKyAgICAgICAgICAgICAgXy5lYWNoKHJvd3MsIGZ1bmN0 aW9uKHIpIHsKKyAgICAgICAgICAgICAgICByWydpbWFnZSddID0gJ2ljb24t Y2FzdCc7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICByZXR1 cm4gcm93czsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvKiAgQXMg bmFtZSBpcyBiZWluZyBnZW5lcmF0ZWQgZnJvbSBzcmN0eXAgYW5kIHRyZ3R5 cCwgYSBjaGVjayBoYXMgYmVlbiBwdXQgaW4KKyAgICAgICAgICAgICAqICBj b250cm9sIGZpZWxkIGlmIGJvdGggYXJlIGNoYW5nZWQgb3Igbm90IGFuZCBk ZXBlbmRpbmcgdXBvbiBpdCwgbmFtZSBoYXMgYmVlbiBzZXQuCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2Rl QWpheE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICAgb25D aGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgQmFja2Zvcm0u Tm9kZUFqYXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2UuYXBw bHkoCisgICAgICAgICAgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAgICAg ICAgICAgICAgICApOworICAgICAgICAgICAgICAgdmFyIHNyY1R5cGUgPSB0 aGlzLm1vZGVsLmdldCgnc3JjdHlwJyk7CisgICAgICAgICAgICAgICB2YXIg dHJndHlwZSA9IHRoaXMubW9kZWwuZ2V0KCd0cmd0eXAnKTsKKyAgICAgICAg ICAgICAgIGlmKHNyY1R5cGUgIT0gdW5kZWZpbmVkICYmIHNyY1R5cGUgIT0g JycgJiYKKyAgICAgICAgICAgICAgICAgIHRyZ3R5cGUgIT0gdW5kZWZpbmVk ICYmIHRyZ3R5cGUgIT0gJycpCisgICAgICAgICAgICAgICAgIHRoaXMubW9k ZWwuc2V0KCJuYW1lIiwgc3JjVHlwZSsiLT4iK3RyZ3R5cGUpOworICAgICAg ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVu c2V0KCJuYW1lIik7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0p CisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ3RyZ3R5cCcsIGxh YmVsOid7eyBfKCdUYXJnZXQgdHlwZScpIH19JywgdHlwZTogJ3RleHQnLAor ICAgICAgICAgICAgZ3JvdXA6ICdEZWZpbml0aW9uJywgZGlzYWJsZWQ6IHRy dWUsIG1vZGU6Wydwcm9wZXJ0aWVzJywnZWRpdCddCisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ3Byb25hbWUnLCBsYWJlbDone3sgXygnRnVu Y3Rpb24nKSB9fScsIGRlcHM6WydzcmN0eXAnLCAndHJndHlwJ10sCisgICAg ICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 IHJldHVybiAhbS5pc05ldygpOyB9LAorICAgICAgICAgICAgZ3JvdXA6ICdE ZWZpbml0aW9uJywgbW9kZTogWydjcmVhdGUnXSwKKyAgICAgICAgICAgIGNv bnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgICAgICBvcHRp b25zOiBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgICB2YXIgc3JjVHlw ID0gdGhpcy5tb2RlbC5nZXQoJ3NyY3R5cCcpOworICAgICAgICAgICAgICB2 YXIgdHJndHlwID0gdGhpcy5tb2RlbC5nZXQoJ3RyZ3R5cCcpOworICAgICAg ICAgICAgICB2YXIgcmVzID0gW107CisgICAgICAgICAgICAgIC8qICBPbiBz cmN0eXAgYW5kIHRyZ3R5cCBzdGF0ZSBjaGFuZ2UgZXZlbnQgYW4gYWpheCBj YWxsIGlzIG1hZGUgdG8KKyAgICAgICAgICAgICAgKiAgIGZldGNoIGxpc3Qg b2YgcmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgICAgaWYoc3JjVHlwICE9IHVuZGVmaW5lZCAmJiBzcmNUeXAgIT0g JycgJiYKKyAgICAgICAgICAgICAgICAgdHJndHlwICE9IHVuZGVmaW5lZCAm JiB0cmd0eXAgIT0gJycpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgdmFyIG5vZGUgPSB0aGlzLmZpZWxkLmdldCgnc2NoZW1hX25vZGUn KSwKKyAgICAgICAgICAgICAgICAgX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJs LmFwcGx5KAorICAgICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAg ICAgICAgICAgbnVsbCwgJ2dldF9mdW5jdGlvbnMnLCB0aGlzLmZpZWxkLmdl dCgnbm9kZV9kYXRhJyksIGZhbHNlLAorICAgICAgICAgICAgICAgICAgIHRo aXMuZmllbGQuZ2V0KCdub2RlX2luZm8nKQorICAgICAgICAgICAgICAgICBd KTsKKyAgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAg ICAgdHlwZTogJ1BPU1QnLAorICAgICAgICAgICAgICAgICB0aW1lb3V0OiAz MDAwMCwKKyAgICAgICAgICAgICAgICAgdXJsOiBfdXJsLAorICAgICAgICAg ICAgICAgICBjYWNoZTogZmFsc2UsCisgICAgICAgICAgICAgICAgIGFzeW5j OiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgZGF0YTogeyJzcmN0eXAiIDog c3JjVHlwLCAidHJndHlwIiA6IHRyZ3R5cH0sCisgICAgICAgICAgICAgICAg IHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAg ICAgIHJlcyA9IHJlc3VsdC5kYXRhOworICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXM7CisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg ICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAg ICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAg dmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOworICAg ICAgICAgICAgICAgICAgICAgaWYgKGVyci5zdWNjZXNzID09IDApIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgbXNnID0gUygne3sgXygnICsgZXJyLmVy cm9ybXNnICsgJyl9fScpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg ICAgIGFsZXJ0aWZ5LmVycm9yKCJ7eyBfKCciICsgZXJyLmVycm9ybXNnICsg IicpIH19Iik7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9CisgICAgICAg ICAgICByZXR1cm4gcmVzOworICAgICAgICAgIH0KKyAgICAgICAgfSx7Cisg ICAgICAgICAgICBpZDogJ3Byb25hbWUnLCBsYWJlbDone3sgXygnRnVuY3Rp b24nKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgIGdyb3VwOiAn RGVmaW5pdGlvbicsIGRpc2FibGVkOiB0cnVlLCBtb2RlOlsncHJvcGVydGll cycsJ2VkaXQnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Nhc3Rj b250ZXh0JywgbGFiZWw6J3t7IF8oJ0NvbnRleHQnKSB9fScsCisgICAgICAg ICAgb3B0aW9uczp7J29uVGV4dCc6J0lNUExJQ0lUJywnb2ZmVGV4dCc6J0VY UExJQ0lUJ30sCisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAn c3RyaW5nJywgZ3JvdXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICBtb2Rl OlsnY3JlYXRlJ10sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU3dp dGNoQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgZ2V0VmFsdWVGcm9t RE9NOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu JGlucHV0LnByb3AoJ2NoZWNrZWQnKSA/ICdJTVBMSUNJVCcgOiAnRVhQTElD SVQnOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnY2FzdGNvbnRleHQnLCBsYWJlbDone3sgXygn Q29udGV4dCcpIH19JywgZGlzYWJsZWQ6IHRydWUsCisgICAgICAgICAgb3B0 aW9uczpbeworICAgICAgICAgICAgbGFiZWw6ICdJTVBMSUNJVCcsIHZhbHVl OiAnSU1QTElDSVQnCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBsYWJl bDogJ0VYUExJQ0lUJywgdmFsdWU6ICdFWFBMSUNJVCcKKyAgICAgICAgICB9 LHsKKyAgICAgICAgICAgIGxhYmVsOiAnQVNTSUdOTUVOVCcsIHZhbHVlOiAn QVNTSUdOTUVOVCcKKyAgICAgICAgICB9XSwgZWRpdGFibGU6IGZhbHNlLCB0 eXBlOiAnc2VsZWN0MicsIGdyb3VwOiAnRGVmaW5pdGlvbicsCisgICAgICAg ICAgbW9kZTpbJ3Byb3BlcnRpZXMnLCAnZWRpdCddCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnc3lzY2FzdCcsIGxhYmVsOid7eyBfKCdTeXN0ZW0g Q2FzdD8nKSB9fScsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAg IGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29t bWVudCcpIH19Jyx0eXBlOiAndGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbics CisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF81MCcKKyAgICAgICAgfQorICAgICAgICBd LAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cyl7CisgICAgICAg IC8qCisgICAgICAgICAgICAqIFRyaWdnZXJzIHNwZWNpZmljIGVycm9yIG1l c3NhZ2VzIGZvciBzcmN0eXAgYW5kCisgICAgICAgICAgICAqIHRyZ3R5cCBp ZiBhbnkgb25lIG9mIHRoZW0gaXMgbm90IHNlbGVjdGVkCisgICAgICAgICov CisgICAgICAgICAgdmFyIHNyY3R5cGUgPSB0aGlzLmdldCgnc3JjdHlwJyk7 CisgICAgICAgICAgdmFyIHRyZ3R5cGUgPSB0aGlzLmdldCgndHJndHlwJyk7 CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc3JjdHlwZSkgfHwgXy5p c051bGwoc3JjdHlwZSkgfHwgU3RyaW5nKHNyY3R5cGUpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIHZhciBtc2cg PSAne3sgXygnU291cmNlIHR5cGUgbXVzdCBiZSBzZWxlY3RlZCEnKSB9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzcmN0eXAnLCBt c2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9Cisg ICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC51bnNldCgnc3JjdHlwJyk7CisgICAgICAgICAgfQorCisg ICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodHJndHlwZSkgfHwgXy5pc051 bGwodHJndHlwZSkgfHwgU3RyaW5nKHRyZ3R5cGUpLnJlcGxhY2UoL15ccyt8 XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAn e3sgXygnVGFyZ2V0IHR5cGUgbXVzdCBiZSBzZWxlY3RlZCEnKSB9fSc7Cisg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCd0cmd0eXAnLCBtc2cp OworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisgICAg ICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC51bnNldCgndHJndHlwJyk7CisgICAgICAgICAgfQorICAgICAg ICAgIHRoaXMudHJpZ2dlcignb24tc3RhdHVzLWNsZWFyJyk7CisgICAgICAg ICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0pCisgIH0pOwor CisgIH0KKyAgICByZXR1cm4gcGdCcm93c2VyLk5vZGVzWydjb2xsLWNhc3Qn XTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43MGU4YTE4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9jcmVhdGUuc3Fs CkBAIC0wLDAgKzEsMjIgQEAKKworCit7IyBDUkVBVEUgQ0FTVCBTdGF0ZW1l bnQgI30KK3slIGlmIGlzX3NxbCAlfQorLS0gQ2FzdDoge3tjb25ufHF0VHlw ZUlkZW50KGRhdGEuc3JjdHlwKX19LT57eyBjb25ufHF0VHlwZUlkZW50KGRh dGEudHJndHlwKSB9fTsKKworLS0gRFJPUCBDQVNUICh7eyBjb25ufHF0VHlw ZUlkZW50KGRhdGEuc3JjdHlwKSB9fSBBUyB7eyBjb25ufHF0VHlwZUlkZW50 KGRhdGEudHJndHlwKSB9fSk7CisKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRh IGFuZCBkYXRhLnNyY3R5cCBhbmQgZGF0YS50cmd0eXAgJX0KK0NSRUFURSBD QVNUICh7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEuc3JjdHlwKSB9fSBBUyB7 eyBjb25ufHF0VHlwZUlkZW50KGRhdGEudHJndHlwKSB9fSkKK3slIGlmIGRh dGEucHJvbmFtZSBhbmQgZGF0YS5wcm9uYW1lICE9ICdiaW5hcnkgY29tcGF0 aWJsZSclfQorICAgIFdJVEggRlVOQ1RJT04ge3tkYXRhLnByb25hbWV9fXsl IGVsc2UgJX0KKyAgICBXSVRIT1VUIEZVTkNUSU9OeyUgZW5kaWYgJX0KK3sl IGlmIGRhdGEuY2FzdGNvbnRleHQgYW5kIGRhdGEuY2FzdGNvbnRleHQgIT0g J0VYUExJQ0lUJyAlfQorCisgICAgQVMge3tkYXRhLmNhc3Rjb250ZXh0fX17 JSBlbmRpZiAlfTsKK3sjIERlc2NyaXB0aW9uIGZvciBDQVNUICN9Cit7JSBp ZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIENBU1QgKHt7IGNv bm58cXRUeXBlSWRlbnQoZGF0YS5zcmN0eXApIH19IEFTIHt7IGNvbm58cXRU eXBlSWRlbnQoZGF0YS50cmd0eXApIH19KQorICAgICAgSVMge3sgZGF0YS5k ZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfXslIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9kZWxl dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFf cGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjFiOGQ4YjYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2Fz dHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAg LTAsMCArMSwxNCBAQAoreyMgRkVUQ0ggQ0FTVCBTT1VSQ0UgVFlQRSBBTkQg VEFSR0VUIFRZUEUgU3RhdGVtZW50ICN9Cit7JSBpZiBjaWQgJX0KKyAgU0VM RUNUCisgICAgZm9ybWF0X3R5cGUoY2EuY2FzdHNvdXJjZSwgbnVsbCkgYXMg Y2FzdHNvdXJjZSwKKyAgICBmb3JtYXRfdHlwZShjYS5jYXN0dGFyZ2V0LCBu dWxsKSBhcyBjYXN0dGFyZ2V0CisgIEZST00KKyAgICBwZ19jYXN0IGNhCisg IFdIRVJFCisgICAgY2Eub2lkID0ge3tjaWR9fTo6T0lEOworeyUgZW5kaWYg JX0KK3sjIERST1AgQ0FTVCBTdGF0ZW1lbnQgI30KK3slIGlmIGNhc3Rzb3Vy Y2UgYW5kIGNhc3R0YXJnZXQgJX0KK0RST1AgQ0FTVCAoe3tjYXN0c291cmNl fX0gQVMge3tjYXN0dGFyZ2V0fX0pIHslIGlmIGNhc2NhZGUgJX1DQVNDQURF eyVlbmRpZiV9OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nh c3Qvc3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMv dGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2YWNhOQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9z cWwvOS4xX3BsdXMvZnVuY3Rpb25zLnNxbApAQCAtMCwwICsxLDE4IEBACit7 IyBGRVRDSCBGVU5DVElPTlMgZGVwZW5kaW5nIHVwb24gU09VUkNFIFRZUEUg YW5kIFRBUkdFVCBUWVBFIElOIENBU1QgICN9CitTRUxFQ1QKKyAgcHJvbmFt ZSB8fCAnKCcgfHwgcGdfY2F0YWxvZy5wZ19nZXRfZnVuY3Rpb25faWRlbnRp dHlfYXJndW1lbnRzKHAub2lkKSB8fCAnKScgYXMgcHJvbmFtZSwKKyAgbnNw bmFtZSwKKyAgcHJvYXJndHlwZXMKK0ZST00KKyAgcGdfcHJvYyBwIEpPSU4g cGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9cC5wcm9uYW1lc3BhY2UKK1dIRVJF CisgIHByb2FyZ3R5cGVzWzBdID0gKFNFTEVDVCB0Lm9pZCBGUk9NIHBnX3R5 cGUgdCBXSEVSRSBmb3JtYXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSB7e3NyY3R5 cHxxdExpdGVyYWx9fSkKKyAgQU5EIHByb3JldHR5cGUgPSAoU0VMRUNUIHQu b2lkIEZST00gcGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90eXBlKHQub2lkLCBO VUxMKSA9IHt7dHJndHlwfHF0TGl0ZXJhbH19KQorICBBTkQKKyAgICBDQVNF CisgICAgV0hFTiBhcnJheV9sZW5ndGgocHJvYXJndHlwZXMsMSkgID0gMiBU SEVOCisgICAgICBwcm9hcmd0eXBlc1sxXSA9IDIzCisgICAgV0hFTiBhcnJh eV9sZW5ndGgocHJvYXJndHlwZXMsMSkgID49IDMgVEhFTgorICAgICAgcHJv YXJndHlwZXNbMV0gPSAyMyBBTkQgcHJvYXJndHlwZXNbMl0gPSAxNgorICAg IEVMU0UgVFJVRQorICAgIEVORApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3Rz L3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9nZXRzcmNhbmR0cmd0dHlw ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9w bHVzL2dldHNyY2FuZHRyZ3R0eXBlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4xZTA1Y2NiCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9nZXRz cmNhbmR0cmd0dHlwZS5zcWwKQEAgLTAsMCArMSw0MyBAQAorU0VMRUNUCisg ICAgKgorRlJPTSAoCisJICAgIFNFTEVDVCBmb3JtYXRfdHlwZSh0Lm9pZCxO VUxMKSBBUyB0eXBuYW1lLAorCQlDQVNFCisJCSAgV0hFTiB0eXBlbGVtID4g MCBUSEVOIHR5cGVsZW0KKwkgICAgICBFTFNFIHQub2lkCisJCUVORCBhcyBl bGVtb2lkLAorCQkgIHR5cGxlbiwKKwkJICB0eXB0eXBlLAorCQkgIHQub2lk LAorCSAgICAgIG5zcG5hbWUsCisJCSAgKFNFTEVDVCBDT1VOVCgxKSBGUk9N IHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZSA9IHQudHlwbmFtZSkgPiAx IEFTIGlzZHVwCisJICAgIEZST00KKwkgICAgICBwZ190eXBlIHQKKwkgICAg ICBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gdHlwbmFtZXNwYWNlPW5zcC5v aWQKKwkJV0hFUkUKKwkJICAoTk9UICh0eXBuYW1lID0gJ3Vua25vd24nCisJ CSAgIEFORCBuc3BuYW1lID0gJ3BnX2NhdGFsb2cnKSkKKwkJICAgQU5EIHR5 cGlzZGVmaW5lZAorCQkgICBBTkQgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdl JywgJ3InKQorCQkgICBBTkQgTk9UIEVYSVNUUyAoCisJCSAgICAgICAgICAg ICAgICAgICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgICAgIDEK KwkJICAgICAgICAgICAgICAgICAgICAgRlJPTQorCQkgICAgICAgICAgICAg ICAgICAgICAgIHBnX2NsYXNzCisJCSAgICAgICAgICAgICAgICAgICAgIFdI RVJFCisJCSAgICAgICAgICAgICAgICAgICAgICAgcmVsbmFtZXNwYWNlID0g dHlwbmFtZXNwYWNlCisJCSAgICAgICAgICAgICAgICAgICAgICAgQU5EIHJl bG5hbWUgPSB0eXBuYW1lCisJCSAgICAgICAgICAgICAgICAgICAgICAgQU5E IHJlbGtpbmQgIT0gJ2MnKQorCQkgICAgICAgICAgICAgICAgICAgICAgIEFO RCAodHlwbmFtZSBOT1QgTElLRSAnXyUnCisJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPUiBOT1QgRVhJU1RTICgKKwkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQor CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGUk9NCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfY2xhc3MKKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUKKwkJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxuYW1lc3Bh Y2UgPSB0eXBuYW1lc3BhY2UKKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBBTkQgcmVsbmFtZSA9IFNVQlNUUklO Ryh0eXBuYW1lIEZST00gMik6Om5hbWUKKwkJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgcmVsa2luZCAhPSAn YycpKQorCQkgICBBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3Nj aGVtYScgKSBBUyBkdW1teQorT1JERVIgQlkKKyAgbnNwbmFtZSA8PiAncGdf Y2F0YWxvZycsIG5zcG5hbWUgPD4gJ3B1YmxpYycsIG5zcG5hbWUsIDEKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4x X3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVz L2Nhc3Qvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNGMzMzAKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9w bHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsNjEgQEAKK3sjIEdldCBP SUQgZm9yIENBU1QgI30KK3slIGlmIHNyY3R5cCBhbmQgdHJndHlwICV9Cisg IFNFTEVDVAorICAgIGNhLm9pZAorICBGUk9NIHBnX2Nhc3QgY2EKKyAgV0hF UkUgY2EuY2FzdHNvdXJjZSA9IChTRUxFQ1QgdC5vaWQgRlJPTSBwZ190eXBl IHQgV0hFUkUgZm9ybWF0X3R5cGUodC5vaWQsIE5VTEwpID0ge3tzcmN0eXB8 cXRMaXRlcmFsfX0pCisgIEFORCBjYS5jYXN0dGFyZ2V0ID0gKFNFTEVDVCB0 Lm9pZCBGUk9NIHBnX3R5cGUgdCBXSEVSRSBmb3JtYXRfdHlwZSh0Lm9pZCwg TlVMTCkgPSB7e3RyZ3R5cHxxdExpdGVyYWx9fSkKKyAgeyUgaWYgZGF0bGFz dHN5c29pZCAlfQorICAgQU5EIGNhLm9pZCA+IHt7ZGF0bGFzdHN5c29pZH19 OjpPSUQKKyAgeyUgZW5kaWYgJX0KKworeyMgRkVUQ0ggcHJvcGVydGllcyBm b3IgQ0FTVCAjfQoreyUgZWxzZSAlfQorICBTRUxFQ1QKKyAgICBjYS5vaWQs CisgIENBU0UKKyAgICBXSEVOIHt7ZGF0bGFzdHN5c29pZH19OjpPSUQgPiBj YS5vaWQgdGhlbiAnWWVzJyBFTFNFICdObycKKyAgRU5EIEFTIHN5c2Nhc3Qs CisgIENBU0UKKyAgICBXSEVOIGNhLmNhc3Rjb250ZXh0ID0gJ2EnIFRIRU4g J0FTU0lHTk1FTlQnCisgICAgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdpJyBU SEVOICdJTVBMSUNJVCcKKyAgICBXSEVOIGNhLmNhc3Rjb250ZXh0ID0gJ2Un IFRIRU4gJ0VYUExJQ0lUJworICBFTkQgQVMgY2FzdGNvbnRleHQsCisgIENB U0UKKyAgICBXSEVOIHByb25hbWUgSVMgTlVMTCBUSEVOICdiaW5hcnkgY29t cGF0aWJsZScKKyAgICBFTFNFIHByb25hbWUgfHwgJygnIHx8IHBnX2NhdGFs b2cucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQp IHx8ICcpJworICBFTkQgQVMgcHJvbmFtZSwKKyAgICBjYS5jYXN0ZnVuYywK KyAgICBmb3JtYXRfdHlwZShzdC5vaWQsTlVMTCkgQVMgc3JjdHlwLAorICAg IGZvcm1hdF90eXBlKHR0Lm9pZCx0dC50eXB0eXBtb2QpIEFTIHRyZ3R5cCwK KyAgICBucy5uc3BuYW1lIEFTIHNyY25zcG5hbWUsCisgICAgbnQubnNwbmFt ZSBBUyB0cmduc3BuYW1lLAorICAgIG5wLm5zcG5hbWUgQVMgcHJvbnNwbmFt ZSwKKyAgICBkZXNjcmlwdGlvbiwKKyAgICBjb25jYXQoZm9ybWF0X3R5cGUo c3Qub2lkLE5VTEwpLCctPicsZm9ybWF0X3R5cGUodHQub2lkLHR0LnR5cHR5 cG1vZCkpIGFzIG5hbWUKKyAgRlJPTSBwZ19jYXN0IGNhCisgIEpPSU4gcGdf dHlwZSBzdCBPTiBzdC5vaWQ9Y2FzdHNvdXJjZQorICBKT0lOIHBnX25hbWVz cGFjZSBucyBPTiBucy5vaWQ9c3QudHlwbmFtZXNwYWNlCisgIEpPSU4gcGdf dHlwZSB0dCBPTiB0dC5vaWQ9Y2FzdHRhcmdldAorICBKT0lOIHBnX25hbWVz cGFjZSBudCBPTiBudC5vaWQ9dHQudHlwbmFtZXNwYWNlCisgIExFRlQgSk9J TiBwZ19wcm9jIHByIE9OIHByLm9pZD1jYXN0ZnVuYworICBMRUZUIEpPSU4g cGdfbmFtZXNwYWNlIG5wIE9OIG5wLm9pZD1wci5wcm9uYW1lc3BhY2UKKyAg TEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9i am9pZD1jYS5vaWQgQU5EIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xhc3Nv aWQ9J3BnX2Nhc3QnOjpyZWdjbGFzcykKKworICB7JSBpZiBjaWQgJX0KKyAg ICBXSEVSRSBjYS5vaWQ9e3tjaWR9fTo6aW50CisgIHslIGVuZGlmICV9CisK Ky0tVE9ETzogYWRkIGNoZWNrIGZvciBzaG93U3lzdGVtT2JqZWN0KCkuIGN1 cnJlbnRseSBhc3N1bWVkIGFzIGZhbHNlCisgIHsjCisgIHslIGlmIGRhdGxh c3RzeXNvaWQgJX0KKyAgICB7JSBpZiBjaWQgJX0KKyAgICAgIEFORAorICAg IHslIGVsc2UgJX0KKyAgICAgIFdIRVJFCisgICAgeyUgZW5kaWYgJX0KKyAg ICBjYS5vaWQgPiB7e2RhdGxhc3RzeXNvaWR9fTo6T0lECisgIHslIGVuZGlm ICV9CisgICN9CisgIE9SREVSIEJZIHN0LnR5cG5hbWUsIHR0LnR5cG5hbWUK K3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFf cGx1cy9zcWwuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3Nx bC85LjFfcGx1cy9zcWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjI5YzI4YTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv Y2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3NxbC5zcWwKQEAg LTAsMCArMSw0NCBAQAorU0VMRUNUCisgICAgICAgIGFycmF5X3RvX3N0cmlu ZyhhcnJheV9hZ2coc3FsKSwgRSdcblxuJykgYXMgc3FsCitGUk9NCisoU0VM RUNUCisgICBFJy0tIENhc3Q6ICcgfHwKKyAgIGZvcm1hdF90eXBlKHN0Lm9p ZCwgc3QudHlwdHlwbW9kKXx8IEUnIC0+ICcgfHwKKyAgIGZvcm1hdF90eXBl KHR0Lm9pZCwgdHQudHlwdHlwbW9kKSB8fAorICAgRSdcblxuLS0gRFJPUCBD QVNUICgnIHx8IGZvcm1hdF90eXBlKHN0Lm9pZCwgc3QudHlwdHlwbW9kKSB8 fAorICAgRScgQVMgJyB8fCBmb3JtYXRfdHlwZSh0dC5vaWQsdHQudHlwdHlw bW9kKSB8fAorICAgRScpO1xuXG4gIENSRUFURSBDQVNUICgnIHx8IGZvcm1h dF90eXBlKHN0Lm9pZCwgc3QudHlwdHlwbW9kKSB8fAorICAgRScgQVMgJyB8 fCBmb3JtYXRfdHlwZSh0dC5vaWQsdHQudHlwdHlwbW9kKSB8fCBFJylcbicg fHwKKyAgIENBU0UgV0hFTiBjYS5jYXN0ZnVuYyAhPSAwIFRIRU4KKyAgIEUn XHRXSVRIIEZVTkNUSU9OICcgfHwKKyAgIHByLnByb25hbWUgfHwgJygnIHx8 IENPQUxFU0NFKHBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5 X2FyZ3VtZW50cyhwci5vaWQpLCAnJykgfHwgRScpJworICAgV0hFTiBjYS5j YXN0ZnVuYyA9IDAgQU5EIGNhLmNhc3RtZXRob2QgPSAnaScgVEhFTgorICAg RSdcdFdJVEggSU5PVVQnCisgICBFTFNFIEUnXHRXSVRIT1VUIEZVTkNUSU9O JyBFTkQgfHwKKyAgIENBU0UgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdhJyBU SEVOIEUnXG5cdEFTIEFTU0lHTk1FTlQ7JworICAgV0hFTiBjYS5jYXN0Y29u dGV4dCA9ICdpJyBUSEVOIEUnXG5cdEFTIElNUExJQ0lUOycKKyAgIEVMU0Ug RSc7JyBFTkQgfHwKKyAgIENBU0UgV0hFTiBhLmRlc2NyaXB0aW9uIElTIE5P VCBOVUxMIFRIRU4KKyAgICAgICBFJ1xuXG5DT01NRU5UIE9OIENBU1QgKCcg fHwgKGZvcm1hdF90eXBlKHN0Lm9pZCxOVUxMKSkgfHwKKyAgICAgICBFJyBB UyAnIHx8IChmb3JtYXRfdHlwZSh0dC5vaWQsdHQudHlwdHlwbW9kKSkgfHwK KyAgICAgICBFJykgSVMgJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwo ZGVzY3JpcHRpb24pIHx8IEUnOycKKyAgIEVMU0UgJycgIEVORCBhcyBzcWwK KyBGUk9NCisgICAgcGdfY2FzdCBjYQorICAgIEpPSU4gcGdfdHlwZSBzdCBP TiBzdC5vaWQ9Y2EuY2FzdHNvdXJjZQorICAgIEpPSU4gcGdfbmFtZXNwYWNl IG5zIE9OIG5zLm9pZD1zdC50eXBuYW1lc3BhY2UKKyAgICBKT0lOIHBnX3R5 cGUgdHQgT04gdHQub2lkPWNhLmNhc3R0YXJnZXQKKyAgICBKT0lOIHBnX25h bWVzcGFjZSBudCBPTiBudC5vaWQ9dHQudHlwbmFtZXNwYWNlCisgICAgTEVG VCBKT0lOIHBnX3Byb2MgcHIgT04gcHIub2lkPWNhLmNhc3RmdW5jCisgICAg TEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICAgICAg ZGVzLmRlc2NyaXB0aW9uIGFzIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAg ICAgIGRlcy5vYmpvaWQgYXMgZGVzY29pZAorICAgICAgICBGUk9NCisgICAg ICAgICAgICAgICAgcGdfZGVzY3JpcHRpb24gZGVzCisgICAgICAgIFdIRVJF CisgICAgICAgICAgICAgICAgZGVzLm9iam9pZD17e2NpZH19OjpPSUQgQU5E IGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2Nhc3QnOjpy ZWdjbGFzcworICAgICAgICApIGEgT04gKGEuZGVzY29pZCA9IGNhLm9pZCkK KyBXSEVSRQorICAgIGNhLm9pZD17e2NpZH19OjpPSUQKKyAgICApIGM7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzku MV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nh c3Qvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOGI5MGEyMwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvdXBk YXRlLnNxbApAQCAtMCwwICsxLDYgQEAKK3sjIFVQREFURSBEZXNjcmlwdGlv biBmb3IgQ0FTVCAjfQorCit7JSAgaWYgZGF0YSBhbmQgJ2Rlc2NyaXB0aW9u JyBpbiBkYXRhIGFuZCBkYXRhLmRlc2NyaXB0aW9uICE9IG9fZGF0YS5kZXNj cmlwdGlvbiAlfQorICBDT01NRU5UIE9OIENBU1QgKHt7IGNvbm58cXRUeXBl SWRlbnQob19kYXRhLnNyY3R5cCkgfX0gQVMge3sgY29ubnxxdFR5cGVJZGVu dChvX2RhdGEudHJndHlwKSB9fSkKKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0 aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQo= --001a114fa476ec1f4a052b9160c6 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a114fa476ec1f4a052b9160c6--