Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aycww-0006Y4-LV for pgadmin-hackers@arkaria.postgresql.org; Fri, 06 May 2016 10:25:35 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aycww-0006e3-7y for pgadmin-hackers@arkaria.postgresql.org; Fri, 06 May 2016 10:25:34 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aycwZ-0006N6-Ui for pgadmin-hackers@postgresql.org; Fri, 06 May 2016 10:25:12 +0000 Received: from mail-lf0-x233.google.com ([2a00:1450:4010:c07::233]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aycwS-0006vl-5f for pgadmin-hackers@postgresql.org; Fri, 06 May 2016 10:25:10 +0000 Received: by mail-lf0-x233.google.com with SMTP id m64so126205570lfd.1 for ; Fri, 06 May 2016 03:25:03 -0700 (PDT) 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 :cc; bh=yV/Dg/Vbnkws4rW9vsNF1erG/I5mmYt0IRcvTfum+qE=; b=JvgoySPhZkgbrVV7FMAWss8a6NHp/D8LylmyhU/SUew3bwSnLtjQOqMVkTqa4y/5dl 1R2NHvGnjfKs8YKYw2LPrGrCIGdfnp+W4G7BpzUQaRcnczJNB8llMxcR9xwWDR/gRUTa aWtylr/w8uUAyqOGu8qD/MPMcqmLO/sMXpMUmoGcjcSgeEf5KbxxmQ31GfGAZDSnXflh f0enGRgLXxCbDp74QwgY3Jgyr9Eq9dJWvd+8x/0eJxhf2dLenwhMX5OMudBIBczTumQt 6ItCAazrqF1xkuhzQXgFzzj2kjFKpvImP93MB61QFsphUOZchMbyCzV2Pf2eaO2FtMfv QcQA== 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:cc; bh=yV/Dg/Vbnkws4rW9vsNF1erG/I5mmYt0IRcvTfum+qE=; b=bpWBhHeQqBLeUMmRO1mgPDZ47NR53X26kB38C8XA4vNEZSItkX+VArYrLLxGXvAsGp dk98o6p0iu6CLtg8DETc30AGuwddAAnsu2UETHKgPjd5Qt5YhcgxhccPr1cgxnDwZVlI tQaaNuwZeJSlxfZsXzlBockjT+WYIRSZPjFSETJ0c0u5cf7Xz7D52bvObciRi+maEBfc jK3+dUcHDL3XC6gX0z1HQZQWlKKboifjG9aZvM01ASJt9ZVtpoHuCXYLjKhwRwu32sjF UVSxKRsyvv0IBZRK3+WHF39rsbkPt/riFfJ0ifYl6/banIfP/GeQk6LQXIW65jW8Hns4 paQg== X-Gm-Message-State: AOPr4FXfxgOTueqP7ZRIgyh8H1ZjY+BL5UUiIvI+nLKTir644p1zvPYtSd97vKmtFC5bInIlhDw1SW8yL3FVQT71 MIME-Version: 1.0 X-Received: by 10.112.154.5 with SMTP id vk5mr9763586lbb.126.1462530302138; Fri, 06 May 2016 03:25:02 -0700 (PDT) Received: by 10.25.144.81 with HTTP; Fri, 6 May 2016 03:25:01 -0700 (PDT) In-Reply-To: References: Date: Fri, 6 May 2016 15:55:01 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Foreign Table Module From: Khushboo Vashi To: Neel Patel Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=089e0122933c2230df053229df21 X-Pg-Spam-Score: -2.6 (--) 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 --089e0122933c2230df053229df21 Content-Type: multipart/alternative; boundary=089e0122933c2230db053229df1f --089e0122933c2230db053229df1f Content-Type: text/plain; charset=UTF-8 Hi, Please find the attached patch for the Foreign Table Node with fixed issues. Thanks, Khushboo On Fri, Apr 29, 2016 at 12:20 PM, Neel Patel wrote: > Hi Khushboo, > > Below are the observations. > > - When we create the new Foreign Table with column name and types then > it shows NULL along with column name and type in properties tab. > > e.g. column_1 xml[] NULL > I think if its NOT NULL, then it should be NULL and it is default, so this should be okay. > > - Once we inherits the table from another table then column and > another parameters of inherited table should not allowed to change. > > Done > > - When we create any foreign table then same foreign table is also > listed under "Tables" node. > > This bug is related to Table node and Harshal is working on this issue. > > - SQL is not generated properly. Please find below SQL which gives > error during execution. > > CREATE FOREIGN TABLE public.test_2 > (id1 integer NOT NULL DEFAULT12 COLLATEpg_catalog."POSIX") > SERVER fsrv; > Done > > - When we create the new foreign table with security label then no SQL > is generated for security label. > > Done > > - In Edit mode, when we provide security label with both value > "provider" and "security label" then security label is displayed NULL > > e.g. SECURITY LABEL FOR frgn_table ON FOREIGN TABLE > public.fsrv_table IS NULL; > Done > > - During creation of the column, when we remove the collation then it > gives below error. > > TypeError: item is undefined > Done > > - Delete/Drop cascade functionality is not working, we are getting > below error. > > TypeError: self.canDrop.apply is not a function > Done > > - When we edit the foreign table and try to remove the existing "Data > Type" of column then it gives below error. > > TypeError: this.dataAdapter is null > Done > > - Create the new foreign table and click on ADD button in Column tab > and do not provide any column name and data type. Need to do proper > validation in Column tab for all parameters. Currently if user do not > provide any value then wrong SQL is getting generated. > > CREATE FOREIGN TABLE public.test_4 > (None None NULL) > SERVER test_fsrv; > Done > > - When we do not provide the Check parameters in constraint then it > gives SQL syntax error. > > CREATE FOREIGN TABLE public.test_5 > () > SERVER test_fsrv; > > ALTER FOREIGN TABLE public.test_5 > ADD CONSTRAINT test CHECK () NOT VALID; > Done > > - If we edit foreign table and change the schema then it gives below > error. > > IndexError: list index out of range > Done > > - We should have proper indentation in the SQL tab once we give the > parameters. Currently it looks like below for "Options" value. > > CREATE FOREIGN TABLE "1_test"."5_test" > () > SERVER asas > OPTIONS (test1 'test2' > , test3 'test4'); > Done > > - If user provide foreign table name and do not provide foreign server > and click on SQL tab then we are getting error on browser side as below. We > should have proper error handling in this case. > > Couldn't find the required parameter (ftsrvname). > Done > > - Create the foreign table, add the constraint and do not provide any > constraint information then SQL generated is wrong. > > CREATE FOREIGN TABLE "1_test"."9_test" > () > SERVER test_fsrv; > > ALTER FOREIGN TABLE "1_test"."9_test" > ADD CONSTRAINT None CHECK (); > Done > > - When we click on the foreign table collection node then "Comment" > column is blank even though we have comment in the foreign table. > > Done > > - Create the foreign table on PG 9.1 and after pressing Save button we > are getting below error. > > "the JSON object must be str, not 'list'" > Done > > - When we delete the options parameters then it gives SQL error > because DROP statement does not include the value. > > ALTER FOREIGN TABLE public.test_12 > OPTIONS ( DROP ser2 'val2'); > Done > > - There are some new functionality added in PG 9.5. Do we really need > to implement ? Need to discuss with Dave/Ashesh. Below are the new > functionality. > > - In create foreign table,we have added column constraint > but "table constraint" is added from 9.5.Do we really require to add > table constraint ? > - In alter foreign table, below are the new functionality > added. > 1. ALTER [ COLUMN ] column_name SET STORAGE { PLAIN > | EXTERNAL | EXTENDED | MAIN } > 2. DISABLE TRIGGER [ trigger_name | ALL | USER ] > 3. ENABLE TRIGGER [ trigger_name | ALL | USER ] > 4. ENABLE REPLICA TRIGGER trigger_name > 5. ENABLE ALWAYS TRIGGER trigger_name > 6. SET WITH OIDS > 7. SET WITHOUT OIDS > > As per the discussion, we will add these functionality into the next phase. > Do let us know in case of any queries. > > Thanks, > Neel Patel > > On Tue, Apr 5, 2016 at 2:27 PM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find updated patch for the Foreign Table Module. >> >> This patch is dependent on >> 1. Backgrid Depscell Patch, (submitted by me) >> 2. NodeAjaxOptionsCell Transform change patch, on which Ashesh and >> Murtuza are working >> >> Thanks, >> Khushboo >> >> >> >> >> On Wed, Feb 24, 2016 at 2:57 PM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> I have updated the Foreign Table module as below: >>> >>> - Used 'NodeByListControl' to get schemas, in the foreign_table.js file >>> as suggested by Ashesh to avoid code redundancy. >>> >>> - Applied *'Security Label Macro'* Patch (Implemented by Harshal). >>> To test the Foreign Table patch, 'Security Label Macro' patch must be >>> applied first as that is not committed yet. >>> >>> Please find attached Foreign Table Patch. >>> >>> Thanks, >>> Khushboo >>> >>> On Tue, Feb 23, 2016 at 6:53 PM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find attached patch for the Foreign Table Module. >>>> >>>> The patch will be modified after Types module implementation as we need >>>> to populate Base Type and some Type related validations from the Types >>>> module. >>>> >>>> Please review it and let me know the feedback. >>>> >>>> Thanks, >>>> Khushboo >>>> >>> >>> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > --089e0122933c2230db053229df1f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached patch for = the Foreign Table Node with fixed issues.

Thanks,<= /div>
Khushboo

On Fri, Apr 29, 2016 at 12:20 PM, Neel Patel <neel.patel@en= terprisedb.com> wrote:
Hi Khushboo,

Below are the observations.
  • When we create the new Foreign Table with column name and t= ypes then it shows NULL along with column name and type in properties tab.<= /li>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0e.g.=C2=A0col= umn_1 xml[] NULL=C2=A0
I think if its NO= T NULL, then it should be NULL and it is default, so this should be okay. <= br>
  • Once = we inherits the table from another table then column and another parameters= of inherited table should not allowed to change.
Done
  • When we create any foreign table then same foreign table is = also listed under "Tables" node.
This bug is related to Table node and Harshal is working on this iss= ue.
  • = SQL is not generated properly. Please find below SQL which gives error duri= ng execution.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CREATE= FOREIGN TABLE public.test_2
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0(id1 integer NOT NULL DEFAULT12 COLLATEpg_catalog."POSIX")<= /div>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0SERVER fsr= v;
Done
  • When we create the new foreign table= with security label then no SQL is generated for security label.
=
Done
  • In Edit mode, when we provide security label= with both value "provider" and "security label" then s= ecurity label is displayed NULL
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 e.g.=C2=A0 SECURITY LABEL FOR frgn_table ON FOREIGN TABLE pub= lic.fsrv_table IS NULL;
Done
  • During creation of the column, when we remove the collation then= it gives below error.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0TypeError: item is undefined
Done
<= ul>
  • Delete/Drop cascade functionality is not working, we are getting bel= ow error.
  • =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0TypeError: self.canDrop.apply is not a function
    =
    Done
    • When we edit the foreign table and= try to remove the existing "Data Type" of column then it gives b= elow error.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = TypeError: this.dataAdapter is null
    = Done
    • Create the new foreign table and click on ADD button= in Column tab and do not provide any column name and data type. Need to do= proper validation in Column tab for all parameters. Currently if user do n= ot provide any value then wrong SQL is getting generated.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CREATE FOREIGN TABLE public.test= _4
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(None None NULL)
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 SERVER test_fsrv;
    Done
    • When we do not provide the Check pa= rameters in constraint then it gives SQL syntax error.
    = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CREATE FOREIGN TABLE public.test_5=
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0()
    =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0SERVER test_fsrv;
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ALTER FOREIGN TABLE public.= test_5
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ADD CONST= RAINT test CHECK () NOT VALID;
    Don= e
    • If= we edit foreign table and change the schema then it gives below error.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 IndexError: lis= t index out of range
    Done
    =
    =
    • We should have proper indentation in the SQL tab once we give the p= arameters. Currently it looks like below for "Options" value.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CREATE FOREIGN TA= BLE "1_test"."5_test"
    =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 ()
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 SERVER asas
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 OPTIONS (test1 'test2'
    =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 , test3 'test4');
    Done
    • If user provide foreign table name and do not provide= foreign server and click on SQL tab then we are getting error on browser s= ide as below. We should have proper error handling in this case.
    <= div>
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Couldn't find = the required parameter (ftsrvname).
    Done
      <= li>Create the foreign table, add the constraint and do not provide any cons= traint information then SQL generated is wrong.
    =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CREATE FOREIGN TABLE "1_test".&= quot;9_test"
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0()
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0SERVER test_f= srv;

    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ALTER FORE= IGN TABLE "1_test"."9_test"
    =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ADD CONSTRAINT None CHECK ();
    Done
    <= div dir=3D"ltr">
    • When we click on the foreign table collection = node then "Comment" column is blank even though we have comment i= n the foreign table.
    Done
    =
    • Create the for= eign table on PG 9.1 and after pressing Save button we are getting below er= ror.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = "the JSON object must be str, not 'list'"
    =
    Done
    • When we delete the options p= arameters then it gives SQL error because DROP statement does not include t= he value.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ALTER FOREIGN TABLE public.test_12
    =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIONS ( DROP ser2 'val2');=
    Done
    • There are some new functionalit= y added in PG 9.5. Do we really need to implement ? Need to discuss with Da= ve/Ashesh. Below are the new functionality.
    =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- In create foreign table,we have add= ed column constraint but "table constraint" is added from 9.5.Do we really require to add ta= ble constraint ?
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0- In alter foreign table, below are the new functionality adde= d.
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A01.=C2=A0 ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | E= XTERNAL | EXTENDED | MAIN }
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A02.=C2=A0 DISABLE TRIGGER [ trigger= _name | ALL | USER ]
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A03.=C2=A0 ENABLE TRIGGER [ trigger_name | = ALL | USER ]
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A04.=C2=A0 ENABLE REPLICA TRIGGER trigger_name
    <= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A05.=C2=A0 ENABLE ALWAYS TRIGGER trigger_name
    =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A06.=C2=A0 SET = WITH OIDS
    =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A07.=C2=A0 SET WITHOUT OIDS

    As per the discussion, we will add these functionality into= the next phase.
    =
    Do let us know in case of any queries.

    =
    Thanks,
    Neel Patel
    On Tue, Apr 5, 2016 at 2:27 PM, Khushboo = Vashi <khushboo.vashi@enterprisedb.com> wrote:=
    Hi,
    Please find updated patch for the Foreign Table Module.
    <= div>
    This patch is dependent on=C2=A0
    1. Backgrid D= epscell Patch, (submitted by me)
    2. NodeAjaxOptionsCell Transform= change patch, on which Ashesh and Murtuza are working

    =
    Thanks,
    Khushboo



    On Wed, Feb 24, 2016 at 2:57 PM, Khushboo Vashi <= ;khush= boo.vashi@enterprisedb.com> wrote:
    Hi,

    I have update= d the Foreign Table module as below:

    - Used 'No= deByListControl' to get schemas, in the foreign_table.js file as sugges= ted by Ashesh to avoid code redundancy.

    - Applied 'Secu= rity Label Macro'=C2=A0 Patch (Implemented by Harshal).
    =C2=A0= To test the Foreign Table patch, 'Security Label Macro' patch must= be applied first as that is not committed yet.

    Please find attached Foreign Table Patch.

    Thanks,
    Khushboo

    On Tue, Feb 23, 2016 at 6:53 PM, Khushboo Vashi <= khushboo.vashi@enterprisedb.com> wrote:
    Hi,

    Please find attached patch for th= e Foreign Table Module.

    The patch will be modified after Types modul= e implementation as we need to populate Base Type=C2=A0 and some Type relat= ed validations from the Types module.

    Please review it and let me kn= ow the feedback.

    Thanks,
    Khushboo




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



    --089e0122933c2230db053229df1f-- --089e0122933c2230df053229df21 Content-Type: text/x-patch; charset=US-ASCII; name="pgAdmin4_Foreign_tables_ver2.patch" Content-Disposition: attachment; filename="pgAdmin4_Foreign_tables_ver2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_invkrs6a0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MzI0OGE5MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTA1MyBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi SW1wbGVtZW50cyB0aGUgRm9yZWlnbiBUYWJsZSBNb2R1bGUuIiIiCisKK2lt cG9ydCBqc29uCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2ltcG9y dCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eSwgXAorICAgIGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBp bXBvcnQgZ2V0dGV4dAorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jl c3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIGdvbmUKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zy b20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rp b25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcyBhcyBzY2hlbWFzCitm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3Jl cXVpcmVkCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgaW1wb3J0IFwKKyAgICBT Y2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIKK2Zyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudXRp bHMgaW1wb3J0IFwKKyAgICBwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIKKwor CitjbGFzcyBGb3JlaWduVGFibGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUp OgorICAgICIiIgorICAgIGNsYXNzIEZvcmVpZ25UYWJsZU1vZHVsZShDb2xs ZWN0aW9uTm9kZU1vZHVsZSk6CisKKyAgICAgICAgVGhpcyBjbGFzcyByZXBy ZXNlbnRzIFRoZSBGb3JlaWduIFRhYmxlIE1vZHVsZS4KKworICAgIE1ldGhv ZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dh cmdzKQorICAgICAgLSBJbml0aWFsaXplIHRoZSBGb3JlaWduIFRhYmxlIE1v ZHVsZS4KKworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQp CisgICAgICAtIEdlbmVyYXRlIHRoZSBGb3JlaWduIFRhYmxlIGNvbGxlY3Rp b24gbm9kZS4KKworICAgICogbm9kZV9pbm9kZSgpOgorICAgICAgLSBPdmVy cmlkZSB0aGlzIHByb3BlcnR5IHRvIG1ha2UgdGhlIEZvcmVpZ24gVGFibGUg bm9kZSBhcyBsZWFmIG5vZGUuCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAg ICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgRm9yZWlnbiBUYWJs ZSwgd2hlbiBzY2hlbWEgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4K KyAgICAiIiIKKyAgICBOT0RFX1RZUEUgPSAnZm9yZWlnbi10YWJsZScKKyAg ICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRm9yZWlnbiBUYWJsZXMi KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgIHN1cGVyKEZvcmVpZ25UYWJsZU1vZHVsZSwgc2VsZikuX19p bml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLm1pbl92ZXIg PSBOb25lCisgICAgICAgIHNlbGYubWF4X3ZlciA9IE5vbmUKKworICAgIGRl ZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAg ICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgRm9yZWlnbiBUYWJsZSBj b2xsZWN0aW9uIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBz ZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKHNjaWQpCisK KyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAg ICAgICAgIiIiCisgICAgICAgIE1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2Rl LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAg ICIiIgorICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBmb3Jl aWduIHRhYmxlLCB3aGVuIHRoZQorICAgICAgICBzY2hlbWEgbm9kZSBpcyBp bml0aWFsaXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzY2hl bWFzLlNjaGVtYU1vZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBG b3JlaWduVGFibGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgRm9yZWln blRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToK KyAgICAiIiIKKyAgICBjbGFzcyBGb3JlaWduVGFibGVWaWV3KFBHQ2hpbGRO b2RlVmlldykKKworICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgUEdDaGlsZE5v ZGVWaWV3IHRvIGdldCB0aGUgZGlmZmVyZW50IHJvdXRlcyBmb3IKKyAgICB0 aGUgbW9kdWxlLgorCisgICAgVGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRv IENyZWF0ZSwgUmVhZCwgVXBkYXRlIGFuZCBEZWxldGUgb3BlcmF0aW9ucyBm b3IKKyAgICB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAgIE1ldGhvZHM6Cisg ICAgLS0tLS0tLQorICAgICogdmFsaWRhdGVfcmVxdWVzdChmKToKKyAgICAg IC0gV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIFZhbGlkYXRpbmcg cmVxdWVzdCBvbiB0aGUgcmVxdWVzdCBvZiBjcmVhdGUsIHVwZGF0ZSBhbmQg bW9kaWZpZWQgU1FMLgorCisgICAgKiBtb2R1bGVfanMoKToKKyAgICAgIC0g T3ZlcnJpZGVzIHRoaXMgcHJvcGVydHkgdG8gZGVmaW5lIGphdmFzY3JpcHQg Zm9yIEZvcmVpZ24gVGFibGUgbm9kZS4KKworICAgICogY2hlY2tfcHJlY29u ZGl0aW9uKGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAg ICAgIC0gQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAg ICAgLSBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBh dGguCisKKyAgICAqIGxpc3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAg ICAtIExpc3QgdGhlIEZvcmVpZ24gVGFibGUuCisKKyAgICAqIG5vZGVzKGdp ZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgLSBSZXR1cm5zIGFsbCB0aGUg Rm9yZWlnbiBUYWJsZSB0byBnZW5lcmF0ZSBOb2RlcyBpbiB0aGUgYnJvd3Nl ci4KKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBm b2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgRm9yZWlnbiBUYWJsZSBwcm9w ZXJ0aWVzLgorCisgICAgKiBnZXRfY29sbGF0aW9ucyhnaWQsIHNpZCwgZGlk LCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIENvbGxhdGlv bnMuCisKKyAgICAqIGdldF90eXBlcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBm b2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIERhdGEgVHlwZXMuCisKKyAg ICAqIGdldF9mb3JlaWduX3NlcnZlcnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg Zm9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUgRm9yZWlnbiBTZXJ2 ZXJzLgorCisgICAgKiBnZXRfdGFibGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIEZvcmVpZ24gVGFi bGVzIGFzIHdlbGwgYXMgUGxhaW4gVGFibGVzLgorCisgICAgKiBnZXRfY29s dW1ucyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAg LSBSZXR1cm5zIHRoZSBUYWJsZSBDb2x1bW5zLgorCisgICAgKiBjcmVhdGUo Z2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMgYSBuZXcg Rm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIHVwZGF0ZShnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgIC0gVXBkYXRlcyB0aGUgRm9y ZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIGRlbGV0ZShnaWQsIHNpZCwg ZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgIC0gRHJvcHMgdGhlIEZvcmVpZ24g VGFibGUgb2JqZWN0LgorCisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZm9pZCk6CisgICAgICAtIFJldHVybnMgdGhlIFNRTCBmb3IgdGhlIEZv cmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIG1v ZGlmaWVkIFNRTC4KKworICAgICogZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwg c2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gR2VuZXJhdGVzIHRoZSBTUUwg c3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBGb3JlaWduIFRhYmxl IG9iamVjdC4KKworICAgICogZGVwZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBz Y2lkLCBmb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW50cyBm b3IgdGhlIEZvcmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAgKiBkZXBlbmRl bmNpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6CisgICAgICAtIFJl dHVybnMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEZvcmVpZ24gVGFibGUg b2JqZWN0LgorICAgICIiIgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50 Lm5vZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0 eXBlJzogJ2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzog J2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdkaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdzY2lkJ30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ2ZvaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlv bnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsn Z2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQn OiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bv c3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6 IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6 IFt7J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3sn Z2V0JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdz cWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dl dCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0 cyc6IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5k ZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdk ZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAg J21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwK KyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAgICAgICAgeydn ZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2dldF9jb2xsYXRpb25zJ30KKyAgICAgICAgICAgIF0sCisgICAgICAgICdn ZXRfdHlwZXMnOiBbeydnZXQnOiAndHlwZXMnfSwgeydnZXQnOiAndHlwZXMn fV0sCisgICAgICAgICdnZXRfZm9yZWlnbl9zZXJ2ZXJzJzogW3snZ2V0Jzog J2dldF9mb3JlaWduX3NlcnZlcnMnfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeydnZXQnOiAnZ2V0X2ZvcmVpZ25fc2VydmVycyd9XSwK KyAgICAgICAgJ2dldF90YWJsZXMnOiBbeydnZXQnOiAnZ2V0X3RhYmxlcyd9 LCB7J2dldCc6ICdnZXRfdGFibGVzJ31dLAorICAgICAgICAnZ2V0X2NvbHVt bnMnOiBbeydnZXQnOiAnZ2V0X2NvbHVtbnMnfSwgeydnZXQnOiAnZ2V0X2Nv bHVtbnMnfV0KKyAgICB9KQorCisgICAgZGVmIHZhbGlkYXRlX3JlcXVlc3Qo Zik6CisgICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRv ci4KKyAgICAgICAgVmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0 IG9mIGNyZWF0ZSwgdXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAg ICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog TmFtZSBvZiB0aGUgRm9yZWlnbiBUYWJsZQorICAgICAgICAgICAgICAgICAg ICBmdHNydm5hbWU6IEZvcmVpZ24gU2VydmVyIE5hbWUKKworICAgICAgICBB Ym92ZSBib3RoIHRoZSBhcmd1bWVudHMgd2lsbCBub3QgYmUgdmFsaWRhdGVk IGluIHRoZSB1cGRhdGUgYWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAg QHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKHNlbGYsICoqa3dhcmdzKToK KworICAgICAgICAgICAgZGF0YSA9IHt9CisKKyAgICAgICAgICAgIGlmIHJl cXVlc3QuZGF0YToKKyAgICAgICAgICAgICAgICByZXEgPSBqc29uLmxvYWRz KHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgcmVxID0gcmVxdWVzdC5hcmdzIG9yIHJlcXVlc3Qu Zm9ybQorCisgICAgICAgICAgICBpZiAnZm9pZCcgbm90IGluIGt3YXJnczoK KyAgICAgICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAg ICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAgICAgICAgICAgICdmdHNy dm5hbWUnCisgICAgICAgICAgICAgICAgXQorCisgICAgICAgICAgICAgICAg Zm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgICAg ICBpZiBhcmcgbm90IGluIHJlcSBvciByZXFbYXJnXSA9PSAnJzoKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhl IHJlcXVpcmVkIHBhcmFtZXRlciBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICglcykuIiAlIGFyZworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxpc3RfcGFyYW1zID0gW10K KyAgICAgICAgICAgICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJzoK KyAgICAgICAgICAgICAgICAgICAgbGlzdF9wYXJhbXMgPSBbJ2NvbnN0cmFp bnRzJywgJ2NvbHVtbnMnLCAnZnRvcHRpb25zJywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3NlY2xhYmVscycsICdpbmhlcml0cydd CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg bGlzdF9wYXJhbXMgPSBbJ2luaGVyaXRzJ10KKworICAgICAgICAgICAgICAg IGZvciBrZXkgaW4gcmVxOgorICAgICAgICAgICAgICAgICAgICBpZiBrZXkg aW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXldICE9ICcnIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbmQgcmVxW2tleV0gaXMgbm90IE5vbmU6 CisgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmVydHMgc3RyaW5nIGlu dG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhW2tleV0gPSBbXSBpZlwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0eXBlKHJlcVtrZXldKSA9PSBsaXN0IGFuZCBsZW4ocmVx W2tleV0pID09IDAgZWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAganNvbi5sb2FkcyhyZXFba2V5XSkKKworICAgICAgICAgICAgICAgICAg ICAgICAgaWYga2V5ID09ICdpbmhlcml0cyc6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBDb252ZXJ0IFRhYmxlIGlkcyBmcm9tIHVuaWNvZGUv c3RyaW5nIHRvIGludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg YW5kIG1ha2UgdHVwbGUgZm9yICdJTicgcXVlcnkuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5oZXJpdHMgPSB0dXBsZShbaW50KHgpIGZvciB4 IGluIGRhdGFba2V5XV0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBsZW4oaW5oZXJpdHMpID09IDE6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgUHl0aG9uIHR1cHBsZSBoYXMgLCBhZnRlciB0aGUg Zmlyc3QgcGFyYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBpbiBjYXNlIG9mIHNpbmdsZSBwYXJhbWV0ZXIuCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgU28sIHdlIG5lZWQgdG8gbWFrZSBpdCB0 dXBsZSBleHBsaWNpdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbmhlcml0cyA9ICIoIiArIHN0cihpbmhlcml0c1swXSkgKyAiKSIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmhlcml0czoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGZXRjaCBUYWJsZSBO YW1lcyBmcm9tIHRoZWlyIHJlc3BlY3RpdmUgSWRzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGFzIHdlIG5lZWQgVGFibGUgbmFtZXMg dG8gZ2VuZXJhdGUgdGhlIFNRTC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZ2V0X3RhYmxlcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdHRyZWxpZD1pbmhlcml0cykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiByZXNbJ3Jvd3MnXVswXToK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5 XSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0cyddCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXQorCisgICAgICAgICAg ICAgICAgICAgIGVsaWYga2V5ID09ICd0eXBub3RudWxsJzoKKyAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IFRydWUgaWYgKHJlcVtrZXld ID09ICd0cnVlJyBvciByZXFba2V5XQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaXMgVHJ1ZSkgZWxzZSBGYWxzZSBp ZlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxW2tleV0gPT0g J2ZhbHNlJyBvciByZXFba2V5XSkgaXMgRmFsc2UgZWxzZSAnJworICAgICAg ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YVtrZXldID0gcmVxW2tleV0KKworICAgICAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgICAgICAg ICBzZWxmLnJlcXVlc3QgPSBkYXRhCisgICAgICAgICAgICByZXR1cm4gZihz ZWxmLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAg ZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExv YWQgSlMgZmlsZSAoZm9yZWlnbl90YWJsZXMuanMpIGZvciB0aGlzIG1vZHVs ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNl KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICJmb3JlaWduX3RhYmxlcy9qcy9mb3JlaWduX3RhYmxlcy5qcyIsCisg ICAgICAgICAgICAgICAgXz1nZXR0ZXh0CisgICAgICAgICAgICApLAorICAg ICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94 LWphdmFzY3JpcHQnfQorICAgICAgICApCisKKyAgICBkZWYgY2hlY2tfcHJl Y29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV29ya3MgYXMg YSBkZWNvcmF0b3IuCisgICAgICAgIENoZWNrcyB0aGUgZGF0YWJhc2UgY29u bmVjdGlvbiBzdGF0dXMuCisgICAgICAgIEF0dGFjaGVzIHRoZSBjb25uZWN0 aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0aCB0byB0aGUgY2xhc3Mgb2Jq ZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBzZWxm ID0gYXJnc1swXQorICAgICAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQ R19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAgICAgIHNlbGYubWFuYWdlciA9 IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKwor ICAgICAgICAgICAgIyBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAg ICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlk PWt3YXJnc1snZGlkJ10pCisKKyAgICAgICAgICAgIHNlbGYucXRJZGVudCA9 IGRyaXZlci5xdElkZW50CisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNv bm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNv bmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICAgICAgZ2V0dGV4 dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHZlciA9IHNl bGYubWFuYWdlci52ZXJzaW9uCisgICAgICAgICAgICBzZXJ2ZXJfdHlwZSA9 IHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZQorCisgICAgICAgICAgICAjIFNl dCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cyBkZXBlbmRpbmcKKyAg ICAgICAgICAgICMgb24gdGhlIHNlcnZlciB2ZXJzaW9uLgorCisgICAgICAg ICAgICBpZiB2ZXIgPj0gOTA1MDA6CisgICAgICAgICAgICAgICAgc2VsZi50 ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cycK KyAgICAgICAgICAgIGVsaWYgdmVyID49IDkwMzAwOgorICAgICAgICAgICAg ICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdmb3JlaWduX3RhYmxlcy9zcWwv OS4zX3BsdXMnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IHNlbGYudGVtcGxhdGVfcGF0aCA9ICdmb3JlaWduX3RhYmxlcy9zcWwvOS4x X3BsdXMnCisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJn cykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlzdCBhbGwgdGhlIEZvcmVp Z24gVGFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdu b2RlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj aWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBGb3JlaWduIFRhYmxl cyB0byBnZW5lcmF0ZSB0aGUgTm9kZXMuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgorCisg ICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2RlLnNxbCddKSwgc2Np ZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz ZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAg ICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAg IHNjaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAg ICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZvcmVpZ24tdGFibGUiCisg ICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMg dGhlIEZvcmVpZ24gVGFibGUgcHJvcGVydGllcy4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAg IGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQs IHNjaWQsIGZvaWQpCisKKyAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAg ICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KCIiIgorQ291bGQgbm90IGZpbmQg dGhlIGZvcmVpZ24gdGFibGUgaW4gdGhlIGRhdGFiYXNlLgorSXQgbWF5IGhh dmUgYmVlbiByZW1vdmVkIGJ5IGFub3RoZXIgdXNlciBvcgorc2hpZnRlZCB0 byB0aGUgYW5vdGhlciBzY2hlbWEuCisiIiIpKQorCisgICAgICAgIHJldHVy biBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9ZGF0YSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfY29sbGF0aW9ucyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyB0aGUgQ29sbGF0aW9ucy4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisK KyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2xsYXRp b25zLnNxbCddKSkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgcmVzLmFwcGVu ZCgKKyAgICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snY29weV9j b2xsYXRpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJv d1snY29weV9jb2xsYXRpb24nXX0KKyAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiB0eXBlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBm b2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUg RGF0YSBUeXBlcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFi bGUgSWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgY29uZGl0aW9uID0gIiIi dHlwaXNkZWZpbmVkIEFORCB0eXB0eXBlIElOICgnYicsICdjJywgJ2QnLCAn ZScsICdyJykKK0FORCBOT1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX2Ns YXNzIFdIRVJFIHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UKK0FORCByZWxu YW1lID0gdHlwbmFtZSBBTkQgcmVsa2luZCAhPSAnYycpIEFORAorKHR5cG5h bWUgTk9UIExJS0UgJ18lJyBPUiBOT1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9N IHBnX2NsYXNzIFdIRVJFCityZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIEFO RCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5hbWUgRlJPTSAyKTo6bmFtZQor QU5EIHJlbGtpbmQgIT0gJ2MnKSkiIiIKKworICAgICAgICBpZiBzZWxmLmJs dWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzOgorICAgICAgICAgICAgY29u ZGl0aW9uICs9ICIgQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9z Y2hlbWEnIgorCisgICAgICAgICMgR2V0IFR5cGVzCisgICAgICAgIHN0YXR1 cywgdHlwZXMgPSBzZWxmLmdldF90eXBlcyhzZWxmLmNvbm4sIGNvbmRpdGlv bikKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10eXBlcykKKwor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgZGF0YT10eXBlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRf Zm9yZWlnbl9zZXJ2ZXJzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZv aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBG b3JlaWduIFNlcnZlcnMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWdu IFRhYmxlIElkCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBbeydsYWJl bCc6ICcnLCAndmFsdWUnOiAnJ31dCisgICAgICAgIHRyeToKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZ2V0X2ZvcmVpZ25fc2VydmVycy5zcWwnXSkpCisgICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAg ICAgICAgIHsnbGFiZWwnOiByb3dbJ3Nydm5hbWUnXSwgJ3ZhbHVlJzogcm93 WydzcnZuYW1lJ119CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBk YXRhPXJlcywKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGdldF90YWJsZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIEZvcmVp Z24gVGFibGVzIGFzIHdlbGwgYXMgUGxhaW4gVGFibGVzLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0 YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAg ICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAiIiIKKyAg ICAgICAgcmVzID0gW10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdnZXRfdGFibGVzLnNxbCddKSkKKyAgICAgICAgICAgIHN0YXR1cywg cnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICBkYXRhPXJzZXRbJ3Jvd3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0OgorICAgICAg ICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjayA9IHN5 cy5leGNfaW5mbygpCisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu ZXJyb3IoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2Vw dGlvbihleGNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjaywgbGltaXQ9 MikpCisKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGV4Y192YWx1ZSkpCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGdldF9jb2x1bW5zKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAg ICBSZXR1cm5zIHRoZSBUYWJsZSBDb2x1bW5zLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAg Zm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAgICAgYXR0cmVsaWQ6 IFRhYmxlIG9pZAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICAg IEpTT04gQXJyYXkgd2l0aCBiZWxvdyBwYXJhbWV0ZXJzLgorICAgICAgICAg ICAgICBhdHRuYW1lOiBDb2x1bW4gTmFtZQorICAgICAgICAgICAgICBkYXRh dHlwZTogQ29sdW1uIERhdGEgVHlwZQorICAgICAgICAgICAgICBpbmhlcml0 ZWRfZnJvbTogUGFyZW50IFRhYmxlIGZyb20gd2hpY2ggdGhlIHJlbGF0ZWQg Y29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBpbmhl cml0dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAg ICAgZGF0YSA9IHJlcXVlc3QuYXJncyBpZiByZXF1ZXN0LmFyZ3MgZWxzZSBO b25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGRhdGEgYW5kICdh dHRyZWxpZCcgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfdGFibGVfY29sdW1ucy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF0dHJlbGlkPWRhdGFbJ2F0dHJlbGlk J10pCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAg IGRhdGE9cmVzWydyb3dzJ10sCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdDoKKyAg ICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2sg PSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmVycm9yKHRyYWNlYmFjay5wcmludF9leGNlcHRpb24oCisgICAgICAg ICAgICAgICAgZXhjX3R5cGUsCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVl LAorICAgICAgICAgICAgICAgIGV4Y190cmFjZWJhY2ssCisgICAgICAgICAg ICAgICAgbGltaXQ9MgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICkKKworICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zdHIoZXhjX3ZhbHVlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBjcmVh dGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBDcmVhdGVzIGEgbmV3IEZvcmVpZ24gVGFibGUgb2JqZWN0Lgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ ZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAg ICAgICAgbmFtZTogRm9yZWlnbiBUYWJsZSBOYW1lCisgICAgICAgICAgICBi YXNlbnNwOiBTY2hlbWEgTmFtZQorICAgICAgICAgICAgZnRzcnZuYW1lOiBG b3JlaWduIFNlcnZlciBOYW1lCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAg ICAgICAgIEZvcmVpZ24gVGFibGUgb2JqZWN0IGluIGpzb24gZm9ybWF0Lgor ICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBHZXQg U1FMIHRvIGNyZWF0ZSBGb3JlaWduIFRhYmxlCisgICAgICAgICAgICBzdGF0 dXMsIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBz ZWxmLnJlcXVlc3QpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9U1FMKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIE5lZWQg b2lkIHRvIGFkZCBvYmplY3QgaW4gdGhlIHRyZWUgYXQgYnJvd3Nlci4KKyAg ICAgICAgICAgIGJhc2Vuc3AgPSBzZWxmLnJlcXVlc3RbJ2Jhc2Vuc3AnXSBp ZiAoJ2Jhc2Vuc3AnIGluIHNlbGYucmVxdWVzdCkgXAorICAgICAgICAgICAg ICAgIGVsc2UgTm9uZQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2lkLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl bnNwPWJhc2Vuc3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZT1zZWxmLnJlcXVlc3RbJ25hbWUnXSkKKyAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICBmb2lkLCBzY2lkID0gcmVzWydyb3dzJ11bMF0KKworICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIGZvaWQsCisgICAgICAgICAgICAgICAgICAgIHNj aWQsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdFsnbmFtZSdd LAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZvcmVpZ24tdGFi bGUiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgRHJvcHMgdGhlIEZvcmVpZ24gVGFibGUuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBm b2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAgICAgICBp ZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAgICAgICAgICAgICMgVGhpcyBp cyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAgICAgICAgICBjYXNjYWRlID0g VHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FzY2FkZSA9IEZh bHNlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGZXRjaCBOYW1l IGFuZCBTY2hlbWEgTmFtZSB0byBkZWxldGUgdGhlIGZvcmVpZ24gdGFibGUu CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwgc2NpZD1zY2lkLCBmb2lkPWZv aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgbmFtZSwgYmFzZW5zcCA9 IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lPW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmFzZW5zcD1iYXNlbnNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNhc2NhZGU9Y2FzY2FkZSkKKyAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgi Rm9yZWlnbiBUYWJsZSBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0 YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGZvaWQsCisgICAgICAg ICAgICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdp ZCwKKyAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiB1cGRh dGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6CisgICAgICAg ICIiIgorICAgICAgICBVcGRhdGVzIHRoZSBGb3JlaWduIFRhYmxlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAi IiIKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBz aWQsIGRpZCwgc2NpZCwgc2VsZi5yZXF1ZXN0LCBmb2lkKQorCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPVNRTCkKKworICAgICAgICB0cnk6Cisg ICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4nKSBhbmQgU1FM LnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvaWQ9Zm9pZCkKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgc2NpZCA9 IHJlc1sncm93cyddWzBdWydzY2lkJ10KKworICAgICAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAg IHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iRm9yZWln biBUYWJsZSB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBmb2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlk JzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0 byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAg ICAgICAgICAgICAgICAgICAgICdpZCc6IGZvaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dp ZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIi IgorICAgICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBGb3JlaWduIFRh YmxlIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFi bGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLl9mZXRj aF9wcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsIGluaGVy aXRzPVRydWUpCisKKyAgICAgICAgY29sX2RhdGEgPSBbXQorICAgICAgICBm b3IgYyBpbiBkYXRhWydjb2x1bW5zJ106CisgICAgICAgICAgICBpZiAobm90 ICdpbmhlcml0ZWRmcm9tJyBpbiBjKSBvciAoY1snaW5oZXJpdGVkZnJvbSdd IGlzIE5vbmUpOgorICAgICAgICAgICAgICAgIGNvbF9kYXRhLmFwcGVuZChj KQorCisgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbF9kYXRhCisKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkKKworICAgICAg ICBzcWxfaGVhZGVyID0gIiIiLS0gezB9OiB7MX0KKworLS0gRFJPUCB7MH0g ezF9OworCisiIiIuZm9ybWF0KCdGT1JFSUdOIFRBQkxFJywgZGF0YVsnYmFz ZW5zcCddICsgIi4iICsgZGF0YVsnbmFtZSddKQorCisgICAgICAgIFNRTCA9 IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZShyZXNwb25zZT1TUUwuc3RyaXAoJ1xuJykpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYg bXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kaWZpZWQgU1FM LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAg ICAgICAgICAgbmFtZTogRm9yZWlnbiBUYWJsZSBOYW1lCisgICAgICAgICAg ICBmdHNydm5hbWU6IEZvcmVpZ24gU2VydmVyIE5hbWUKKworICAgICAgICBS ZXR1cm5zOgorICAgICAgICAgICAgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRl L3VwZGF0ZSB0aGUgRm9yZWlnbiBUYWJsZS4KKyAgICAgICAgIiIiCisgICAg ICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkaWQs IHNjaWQsIHNlbGYucmVxdWVzdCwgZm9pZCkKKyAgICAgICAgaWYgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICBkYXRhPVNRTC5zdHJpcCgnXG4nKSwKKyAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICByZXR1cm4gU1FMCisKKyAgICBkZWYgZ2V0X3Nx bChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkYXRhLCBmb2lkPU5vbmUp OgorICAgICAgICAiIiIKKyAgICAgICAgR2VucmF0ZXMgdGhlIFNRTCBzdGF0 ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIEZvcmVpZ24gVGFibGUuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAg ICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmb2lkIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5fZmV0 Y2hfcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmhlcml0cz1UcnVlKQorCisgICAgICAgICAgICAgICAgaWYgbm90IG9s ZF9kYXRhOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0 ZXh0KCIiIgorICAgICAgICBDb3VsZCBub3QgZmluZCB0aGUgZm9yZWlnbiB0 YWJsZSBpbiB0aGUgZGF0YWJhc2UuCisgICAgICAgIEl0IG1heSBoYXZlIGJl ZW4gcmVtb3ZlZCBieSBhbm90aGVyIHVzZXIgb3IKKyAgICAgICAgc2hpZnRl ZCB0byB0aGUgYW5vdGhlciBzY2hlbWEuCisgICAgICAgICIiIikpCisKKyAg ICAgICAgICAgICAgICAjIFByZXBhcmUgZGljdCBvZiBjb2x1bW5zIHdpdGgg a2V5ID0gY29sdW1uJ3MgYXR0bnVtCisgICAgICAgICAgICAgICAgIyBXaWxs IHVzZSB0aGlzIGluIHRoZSB1cGRhdGUgdGVtcGxhdGUgd2hlbiBhbnkgY29s dW1uIGlzCisgICAgICAgICAgICAgICAgIyBjaGFuZ2VkLCB0byBpZGVudGlm eSB0aGUgY29sdW1ucy4KKyAgICAgICAgICAgICAgICBjb2xfZGF0YSA9IHt9 CisgICAgICAgICAgICAgICAgZm9yIGMgaW4gb2xkX2RhdGFbJ2NvbHVtbnMn XToKKyAgICAgICAgICAgICAgICAgICAgY29sX2RhdGFbY1snYXR0bnVtJ11d ID0gYworCisgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2NvbHVtbnMnXSA9 IGNvbF9kYXRhCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnY3JlYXRlLnNxbCddKSwgZGF0YT1kYXRhKQorICAgICAgICAg ICAgcmV0dXJuIFRydWUsIFNRTAorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJl dHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRm9yZWlnbiBU YWJsZSBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ ZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRh YmxlIElkCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRzX3Jlc3Vs dCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25uLCBmb2lkKQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3Bv bnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBm b2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0 IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisg ICAgICAgIGZvciB0aGUgIEZvcmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAiIiIK KyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVu ZGVuY2llcyhzZWxmLmNvbm4sIGZvaWQpCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVz X3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQor CisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQsIGluaGVyaXRzPUZhbHNlKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGUgcHJvcGVydGll cyB3aGljaCB3aWxsIGJlIHVzZWQgaW4KKyAgICAgICAgcHJvcGVydGllcywg c3FsIGFuZCBnZXRfc3FsIGZ1bmN0aW9ucy4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZv aWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgICAgIGluaGVyaXRzOiBJ ZiBUcnVlIHRoZW4gaW5oZXJpdGVkIHRhYmxlIHdpbGwgYmUgZmV0Y2hlZCBm cm9tCisgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UKKworICAgICAg ICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz Y2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3Mn XSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg IGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICMgR2V0IGZvcm1h dHRlZCBTZWN1cml0eSBMYWJlbHMKKyAgICAgICAgaWYgJ3NlY2xhYmVscycg aW4gZGF0YToKKyAgICAgICAgICAgIGRhdGEudXBkYXRlKHBhcnNlX3NlY19s YWJlbHNfZnJvbV9kYihkYXRhWydzZWNsYWJlbHMnXSkpCisKKyAgICAgICAg IyBHZXQgZm9ybWF0dGVkIFZhcmlhYmxlcworICAgICAgICBpZiAnZnRvcHRp b25zJyBpbiBkYXRhOgorICAgICAgICAgICAgZGF0YS51cGRhdGUoeydzdHJm dG9wdGlvbnMnOiBkYXRhWydmdG9wdGlvbnMnXX0pCisgICAgICAgICAgICBk YXRhLnVwZGF0ZShzZWxmLl9wYXJzZV92YXJpYWJsZXNfZnJvbV9kYihkYXRh WydmdG9wdGlvbnMnXSkpCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50 cy5zcWwnXSksIGZvaWQ9Zm9pZCkKKyAgICAgICAgc3RhdHVzLCBjb25zID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPWNvbnMpCisKKyAgICAgICAgaWYgY29ucyBhbmQgJ3Jv d3MnIGluIGNvbnM6CisgICAgICAgICAgICBkYXRhWydjb25zdHJhaW50cydd ID0gY29uc1sncm93cyddCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNx bCddKSwgZm9pZD1mb2lkKQorICAgICAgICBzdGF0dXMsIGNvbHMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9Y29scykKKworICAgICAgICAjIFRoZSBMZW5ndGggYW5kIHRo ZSBwcmVjaXNpb24gb2YgdGhlIERhdGF0eXBlIHNob3VsZCBiZSBzZXBhcmF0 ZWQuCisgICAgICAgICMgVGhlIEZvcm1hdCB3ZSBnZXR0aW5nIGZyb20gZGF0 YWJhc2UgaXM6IG51bWVyaWMoMSwxKQorICAgICAgICAjIFNvLCB3ZSBuZWVk IHRvIHNlcGFyYXRlIGl0IGFzIExlbmd0aDogMSwgUHJlY2lzaW9uOiAxCisg ICAgICAgIGZvciBjIGluIGNvbHNbJ3Jvd3MnXToKKyAgICAgICAgICAgIGlm IGNbJ2Z1bGx0eXBlJ10gIT0gJycgYW5kIGNbJ2Z1bGx0eXBlJ10uZmluZCgi KCIpID4gMDoKKyAgICAgICAgICAgICAgICBzdWJzdHIgPSBjWydmdWxsdHlw ZSddW2NbJ2Z1bGx0eXBlJ10uZmluZCgiKCIpICsgMTpsZW4oCisgICAgICAg ICAgICAgICAgICAgIGNbJ2Z1bGx0eXBlJ10pIC0gMV0KKyAgICAgICAgICAg ICAgICB0eXBsZW4gPSBzdWJzdHIuc3BsaXQoIiwiKQorICAgICAgICAgICAg ICAgIGlmIGxlbih0eXBsZW4pID4gMToKKyAgICAgICAgICAgICAgICAgICAg Y1sndHlwbGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAgICAgICAgICAg ICAgICBjWydwcmVjaXNpb24nXSA9IGludCh0eXBsZW5bMV0pCisgICAgICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY1sndHlwbGVu J10gPSBpbnQodHlwbGVuKQorICAgICAgICAgICAgICAgICAgICBjWydwcmVj aXNpb24nXSA9ICcnCisKKyAgICAgICAgaWYgY29scyBhbmQgJ3Jvd3MnIGlu IGNvbHM6CisgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2xzWydy b3dzJ10KKworICAgICAgICBkYXRhWydzdHJjb2x1bW4nXSA9ICcnCisgICAg ICAgIHN0cl9jb2xzID0gW10KKyAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRh dGE6CisgICAgICAgICAgICBmb3IgYyBpbiBkYXRhWydjb2x1bW5zJ106Cisg ICAgICAgICAgICAgICAgc3RyX2NvbHMuYXBwZW5kKGNbJ3N0cmNvbHVtbidd KQorICAgICAgICAgICAgZGF0YVsnc3RyY29sdW1uJ10gPSAnLCAnLmpvaW4o c3RyX2NvbHMpCisKKyAgICAgICAgIyBHZXQgSW5oZXJpdGVkIHRhYmxlIG5h bWVzIGZyb20gdGhlaXIgT0lECisgICAgICAgIGlmIGluaGVyaXRzOgorICAg ICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiBkYXRhIGFuZCBkYXRhWydpbmhl cml0cyddOgorICAgICAgICAgICAgICAgIGluaGVyaXRzID0gdHVwbGUoW2lu dCh4KSBmb3IgeCBpbiBkYXRhWydpbmhlcml0cyddXSkKKyAgICAgICAgICAg ICAgICBpZiBsZW4oaW5oZXJpdHMpID09IDE6CisgICAgICAgICAgICAgICAg ICAgIGluaGVyaXRzID0gIigiICsgc3RyKGluaGVyaXRzWzBdKSArICIpIgor CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3RhYmxlcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0 dHJlbGlkPWluaGVyaXRzKQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgICAgIGlmICdpbmhlcml0cycgaW4gcmVzWydyb3dzJ11bMF06 CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2luaGVyaXRzJ10gPSByZXNb J3Jvd3MnXVswXVsnaW5oZXJpdHMnXQorCisgICAgICAgIHJldHVybiBkYXRh CisKKyAgICBkZWYgX3BhcnNlX3ZhcmlhYmxlc19mcm9tX2RiKHNlbGYsIGRi X3ZhcmlhYmxlcyk6CisgICAgICAgICIiIgorICAgICAgICBGdW5jdGlvbiB0 byBmb3JtYXQgdGhlIG91dHB1dCBmb3IgdmFyaWFibGVzLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBkYl92YXJpYWJsZXM6IFZhcmlhYmxlIG9i amVjdAorCisgICAgICAgICAgICAgICAgRXhwZWN0ZWQgT2JqZWN0IEZvcm1h dDoKKyAgICAgICAgICAgICAgICAgICAgWydvcHRpb24xPXZhbHVlMScsIC4u XQorICAgICAgICAgICAgICAgIHdoZXJlOgorICAgICAgICAgICAgICAgICAg ICB1c2VyX25hbWUgYW5kIGRhdGFiYXNlIGFyZSBvcHRpb25hbAorICAgICAg ICBSZXR1cm5zOgorICAgICAgICAgICAgVmFyaWFibGUgT2JqZWN0IGluIGJl bG93IGZvcm1hdDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgJ3ZhcmlhYmxlcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgeyduYW1l JzogJ3Zhcl9uYW1lJywgJ3ZhbHVlJzogJ3Zhcl92YWx1ZScsCisgICAgICAg ICAgICAgICAgICAgICd1c2VyX25hbWUnOiAndXNlcl9uYW1lJywgJ2RhdGFi YXNlJzogJ2RhdGFiYXNlX25hbWUnfSwKKyAgICAgICAgICAgICAgICAgICAg Li4uXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGVy ZToKKyAgICAgICAgICAgICAgICAgICAgdXNlcl9uYW1lIGFuZCBkYXRhYmFz ZSBhcmUgb3B0aW9uYWwKKyAgICAgICAgIiIiCisgICAgICAgIHZhcmlhYmxl c19sc3QgPSBbXQorCisgICAgICAgIGlmIGRiX3ZhcmlhYmxlcyBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGZvciByb3cgaW4gZGJfdmFyaWFibGVzOgor ICAgICAgICAgICAgICAgIHZhcl9uYW1lLCB2YXJfdmFsdWUgPSByb3cuc3Bs aXQoIj0iKQorICAgICAgICAgICAgICAgICMgQmVjYXVzZSB3ZSBzYXZlIGFz IGJvb2xlYW4gc3RyaW5nIGluIGRiIHNvIGl0IG5lZWRzCisgICAgICAgICAg ICAgICAgIyBjb252ZXJzaW9uCisgICAgICAgICAgICAgICAgaWYgdmFyX3Zh bHVlID09ICdmYWxzZScgb3IgdmFyX3ZhbHVlID09ICdvZmYnOgorICAgICAg ICAgICAgICAgICAgICB2YXJfdmFsdWUgPSBGYWxzZQorCisgICAgICAgICAg ICAgICAgdmFyX2RpY3QgPSB7J29wdGlvbic6IHZhcl9uYW1lLCAndmFsdWUn OiB2YXJfdmFsdWV9CisKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXNfbHN0 LmFwcGVuZCh2YXJfZGljdCkKKworICAgICAgICByZXR1cm4geyJmdG9wdGlv bnMiOiB2YXJpYWJsZXNfbHN0fQorCitGb3JlaWduVGFibGVWaWV3LnJlZ2lz dGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2NvbGwtZm9yZWln bi10YWJsZS5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9z dGF0aWMvaW1nL2NvbGwtZm9yZWlnbi10YWJsZS5wbmcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uZGMxZjc0MmJiY2EwNTk4MGYzYzRjYmYzYzE2YWYwZTBj ZjlhZmE0MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDkyCnpjbVY8STBU Y2QtUCk8aDszS3xMazAwMGUxTkpMVHEwMDBtRzAwMG1PMHt7UjNDQGx8RDAw MDAxYjVjaF8wSXRwKQp6PT5QeCN4PT43MU1Qc0A0QShpS2YmaTw2b2BLe0lS JUd+UFM8TEJuKj1qUF8tI258Unt4IyUjUT0hbmghUW4yIX4KeikkUUhnLUdq XmlkZEI7MiExLTNQXkdVMWxKKkRrMnA2ZSU+PkU3UG5nVWtJJnRNRU9mP0lA WSktezBUajteTzF1Cno8S15ZJGhyczlIO05ZakhyPnZ+Mz9DazlCPyhYVTc+ RVlxd3Jsekstc0htOzJ0KkBgST5nd3V7JUpiKnY9ai1lMQp6PTstTEZzajJW cEBBMntSP2R8UVZzO2FRQ3UoR25VPG1CWT1AYkcpYWApfFBiRDRGUHFwVCMy cDAwMDRXUWNoQzwKeks8M3pIMDAwMDFWb09JdjBFaCkwTkJ7cjszMjtiUmF7 dkdmNjk1MVU2OUU5NG9FUUtBMDAocVFPK15SVzB+ezQ3CnpDVmM7JWNLYHFZ bz1IU09SMmI3OyYlRi05RmJxYn5kXkNhOUY1eT1RM0poVXRtUTFkTSF1ITck UDc2WlI8SVIhZgp6ODJyWUpnR0ZXQ2EjaHoyQGY2eml6ZDxgUUBIMnpXJDI9 bnVIQyUkND9UKG0yQWw3ZyQ9RTVZfGlBWGZLN3NFajsKelBMaWAySmM9UXkw NHZzTT0rJl5kSCtZZERKQ2wrY0VRYnlVZUlIIThxfUwjRjFvazI/NFFrTm5Q VChxVGBYT1RRCmk8REg0OGtsTlVOWitgPU0oaFVtbUs7Ull0MDAwMDxNTlVN bkxTVFg9VGx2dWQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9pbWcv Zm9yZWlnbi10YWJsZS5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy9zdGF0aWMvaW1nL2ZvcmVpZ24tdGFibGUucG5nCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjUzYzEzMzg4NWEwYzBjNzA1MGU0Yzg1ODBhZGZkNzVm OGNlYWE4NTIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU2Mwp6Y21WLTMw P2hyMVApPGg7M0t8TGswMDBlMU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0BsfEQw MDAwMWI1Y2hfMEl0cCkKej0+UHgjKWxmYFNNZGFrPEEoaUtpKEVwT3BgPVpu Snk0ZFp9LXw2NHU9akc8LT1IfSt3O3BNRSg9VlAoeEV9UTYhCnomO056WXso aXsoYjtKNT56VzhDZF9FeGc8T1JWcmZyfHZoUD5AQSQ/Q1liNGslPjhTPV8o NyliSGxnZTtvYShnSgp6PyVtenAtcm5CZC17MFdpO05qdW47Xk59dDxLeU0h PCVockw9Oy1MXz5GTVhePWMlY3d0Z05pOz9Da0NCP2VGakoKej5nd3ZKcj5D Zj5zSTlIN3VkbERgPitBNkZAYmRFVj8oWGladEU7ZkV1KDdlUnZhKylBQCR2 S1heWSEpaHdZOWJPCnpfVilQcl9fbnNUeFZYNllfeER0I0tSb35kMDBER1RQ RSFDdD1HYk5jMDAwNEVPR2lXaWh5QCk7MDAwMDlhN2JCbQp6MDAwWFUwMDBY VTBSV251N3l0a08yWHNrSU1GLW1oOTJGPWVsSldtcjAwMDJXTmtsPFo3fUho SC1FTStGNUMhMCEKeiFhYFNPRSE1JnFPTiYlKHc/SVRPYVQ5SF9HNHVaSzxT ZXhwJmZSPURuYW1MYT9uVmQhND8hclNfKSkxKmc0KUNRCnpEYjFjSUZacHlm VWtyKXlZbnJfPTZ6P0JAUCVmOSU9VzR6QWBjYEl1K2tXWDBqVH1IVktrV3VK Q0kmVE1ne25XYQp6dHV8eU1CSSs0QDl1MCpzQldzQ2FSbzhvQDAzZFh3YlBW aEVxPzIrMWwzWnNhMkchSU1jUjVWVCRhTmw/b3JSZEYKejBMYUx0NEU2YiE7 fl9VSU5iK1pKKzsrV0BMKVNvaUBQcWsofDBfeXo2d3wmUVF7P352MDAyb3ZQ REhMa1YxbkZoCkJDbkVwPQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25fdGFibGVzLmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL2pzL2ZvcmVpZ25fdGFibGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmFiMTUxZjEKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvanMvZm9yZWlnbl90YWJsZXMuanMKQEAgLTAsMCArMSw2 OTQgQEAKKy8qIENyZWF0ZSBhbmQgUmVnaXN0ZXIgRm9yZWlnbiBUYWJsZSBD b2xsZWN0aW9uIGFuZCBOb2RlLiAqLworZGVmaW5lKAorICAgICAgICBbJ2px dWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3Bn YWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5JywgJ3BnYWRt aW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBw Z0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisKKyAgaWYgKCFwZ0Jy b3dzZXIuTm9kZXNbJ2NvbGwtZm9yZWlnbi10YWJsZSddKSB7CisgICAgdmFy IGZvcmVpZ250YWJsZSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1m b3JlaWduLXRhYmxlJ10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxl Y3Rpb24uZXh0ZW5kKHsKKyAgICAgICAgbm9kZTogJ2ZvcmVpZ24tdGFibGUn LAorICAgICAgICBsYWJlbDogJ3t7IF8oJ0ZvcmVpZ24gVGFibGVzJykgfX0n LAorICAgICAgICB0eXBlOiAnY29sbC1mb3JlaWduLXRhYmxlJywKKyAgICAg ICAgY29sdW1uczogWyduYW1lJywgJ293bmVyJywgJ2Rlc2NyaXB0aW9uJ10K KyAgICAgIH0pOworICB9OworCisgIC8vIFNlY3VyaXR5IE1vZGVsCisgIHZh ciBTZWN1cml0eU1vZGVsID0gQmFja2Zvcm0uU2VjdXJpdHlNb2RlbCA9IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVs dHM6IHsKKyAgICAgIHByb3ZpZGVyOiBudWxsLAorICAgICAgbGFiZWw6IG51 bGwKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAncHJvdmlk ZXInLCBsYWJlbDogJ3t7IF8oJ1Byb3ZpZGVyJykgfX0nLAorICAgICAgdHlw ZTogJ3RleHQnLCBlZGl0YWJsZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6 J3dpZHRoX3BlcmNlbnRfNTAnCisgICAgfSx7CisgICAgICBpZDogJ3NlY3Vy aXR5X2xhYmVsJywgbGFiZWw6ICd7eyBfKCdTZWN1cml0eSBMYWJlbCcpIH19 JywKKyAgICAgIHR5cGU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUsIGNlbGxI ZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50XzUwJworICAgIH1dLAorICAg IHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBlcnIgPSB7fSwK KyAgICAgICAgICBlcnJtc2cgPSBudWxsLAorICAgICAgICAgIGRhdGEgPSB0 aGlzLnRvSlNPTigpOworCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZChkYXRh LnNlY3VyaXR5X2xhYmVsKSB8fAorICAgICAgICBfLmlzTnVsbChkYXRhLnNl Y3VyaXR5X2xhYmVsKSB8fAorICAgICAgICBTdHJpbmcoZGF0YS5zZWN1cml0 eV9sYWJlbCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewor ICAgICAgICByZXR1cm4gXygiUGxlYXNlIHNwZWNpZnkgdGhlIHZhbHVlIGZv ciBhbGwgdGhlIHNlY3VyaXR5IHByb3ZpZGVycy4iKTsKKyAgICAgIH0KKyAg ICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKyAgLy8gSW50ZWdl ciBDZWxsIGZvciBDb2x1bW5zIExlbmd0aCBhbmQgUHJlY2lzaW9uCisgIHZh ciBJbnRlZ2VyRGVwQ2VsbCA9IEJhY2tncmlkLkludGVnZXJDZWxsLmV4dGVu ZCh7CisgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAg QmFja2dyaWQuTnVtYmVyQ2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBs eSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICBCYWNrZ3JpZC5FeHRlbnNp b24uRGVwZW5kZW50Q2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOworICAgICAgfSwKKyAgICAgIHVwZGF0ZVVJRGVw czogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLiRlbC5lbXB0eSgpOwor ICAgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsOworICAgICAgICB2YXIg Y29sdW1uID0gdGhpcy5jb2x1bW47CisgICAgICAgIGVkaXRhYmxlID0gdGhp cy5jb2x1bW4uZ2V0KCJlZGl0YWJsZSIpOworCisgICAgICAgIGlzX2VkaXRh YmxlID0gXy5pc0Z1bmN0aW9uKGVkaXRhYmxlKSA/ICEhZWRpdGFibGUuYXBw bHkoY29sdW1uLCBbbW9kZWxdKSA6ICEhZWRpdGFibGU7CisgICAgICAgIGlm IChpc19lZGl0YWJsZSl7IHRoaXMuJGVsLmFkZENsYXNzKCJlZGl0YWJsZSIp OyB9CisgICAgICAgIGVsc2UgeyB0aGlzLiRlbC5yZW1vdmVDbGFzcygiZWRp dGFibGUiKTsgfQorCisgICAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsK KyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICB9LAorICAgICAgcmVtb3Zl OiBCYWNrZ3JpZC5FeHRlbnNpb24uRGVwZW5kZW50Q2VsbC5wcm90b3R5cGUu cmVtb3ZlCisgICAgfSk7CisKKworICAvLyBDb2x1bW5zIE1vZGVsCisgIHZh ciBDb2x1bW5zTW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5l eHRlbmQoeworICAgIGlkQXR0cmlidXRlOiAnYXR0bnVtJywKKyAgICBkZWZh dWx0czogeworICAgICAgYXR0bmFtZTogdW5kZWZpbmVkLAorICAgICAgZGF0 YXR5cGU6IHVuZGVmaW5lZCwKKyAgICAgIHR5cGxlbjogdW5kZWZpbmVkLAor ICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsCisgICAgICB0eXBkZWZhdWx0 OiB1bmRlZmluZWQsCisgICAgICBhdHRub3RudWxsOiB1bmRlZmluZWQsCisg ICAgICBjb2xsbmFtZTogdW5kZWZpbmVkLAorICAgICAgYXR0bnVtOiB1bmRl ZmluZWQsCisgICAgICBpbmhlcml0ZWRmcm9tOiB1bmRlZmluZWQsCisgICAg ICBpbmhlcml0ZWRpZDogdW5kZWZpbmVkLAorICAgIH0sCisgICAgdHlwZV9v cHRpb25zOiB1bmRlZmluZWQsCisgICAgc2NoZW1hOiBbeworICAgICAgICBp ZDogJ2F0dG5hbWUnLCBsYWJlbDone3sgXygnTmFtZScpIH19JywgY2VsbDog J3N0cmluZycsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgZWRpdGFibGU6ICdp c19lZGl0YWJsZV9jb2x1bW4nLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRo X3BlcmNlbnRfMjAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdkYXRhdHlw ZScsIGxhYmVsOid7eyBfKCdEYXRhIFR5cGUnKSB9fScsIGNlbGw6ICdub2Rl LWFqYXgtb3B0aW9ucycsCisgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgt b3B0aW9ucycsIHR5cGU6ICd0ZXh0JywgdXJsOiAnZ2V0X3R5cGVzJywKKyAg ICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJsZV9jb2x1bW4nLCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAorICAgICAgICB0cmFu c2Zvcm06IGZ1bmN0aW9uKGQsIHNlbGYpeworICAgICAgICAgICAgc2VsZi5t b2RlbC50eXBlX29wdGlvbnMgPSBkOworICAgICAgICAgICAgcmV0dXJuIGQ7 CisgICAgICAgICAgfQorICAgICAgfSx7CisgICAgICAgIGlkOiAndHlwbGVu JywgbGFiZWw6J3t7IF8oJ0xlbmd0aCcpIH19JywKKyAgICAgICAgY2VsbDog SW50ZWdlckRlcENlbGwsCisgICAgICAgIHR5cGU6ICd0ZXh0JywgZGVwczog WydkYXRhdHlwZSddLAorICAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkg eworICAgICAgICAvLyBXZSB3aWxsIHN0b3JlIHR5cGUgZnJvbSBzZWxlY3Rl ZCBmcm9tIGNvbWJvYm94CisgICAgICAgICAgaWYoIShfLmlzVW5kZWZpbmVk KG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQorICAgICAgICAgICAgfHwgXy5pc051 bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCisgICAgICAgICAgICB8fCBfLmlz VW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpCisgICAgICAgICAg ICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSkpIHsgcmV0 dXJuIGZhbHNlOyB9CisKKyAgICAgICAgdmFyIG9mX3R5cGUgPSBtLmdldCgn ZGF0YXR5cGUnKTsKKyAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsKKyAg ICAgICAgICBtLnNldCgnaXNfdGxlbmd0aCcsIGZhbHNlLCB7c2lsZW50OiB0 cnVlfSk7CisKKyAgICAgICAgICAvLyBpdGVyYXRpbmcgb3ZlciBhbGwgdGhl IHR5cGVzCisgICAgICAgICAgXy5lYWNoKG0udHlwZV9vcHRpb25zLCBmdW5j dGlvbihvKSB7CisgICAgICAgICAgICAvLyBpZiB0eXBlIGZyb20gc2VsZWN0 ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGluIG9wdGlvbnMKKyAgICAgICAg ICAgIGlmICggb2ZfdHlwZSA9PSBvLnZhbHVlICkgeworICAgICAgICAgICAg ICAgIC8vIGlmIGxlbmd0aCBpcyBhbGxvd2VkIGZvciBzZWxlY3RlZCB0eXBl CisgICAgICAgICAgICAgICAgaWYoby5sZW5ndGgpCisgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZXMgaW4g bW9kZWwKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdpc190bGVuZ3RoJywg dHJ1ZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgbS5z ZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKKyAg ICAgICAgICAgICAgICAgIG0uc2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7 c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgfQorICAgICAgICAgIH0pOworICAgICAgICAgIHJldHVybiBtLmdldCgn aXNfdGxlbmd0aCcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICB9LAorICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMTAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdwcmVj aXNpb24nLCBsYWJlbDone3sgXygnUHJlY2lzaW9uJykgfX0nLAorICAgICAg ICB0eXBlOiAndGV4dCcsIGRlcHM6IFsnZGF0YXR5cGUnXSwKKyAgICAgICAg Y2VsbDogSW50ZWdlckRlcENlbGwsCisgICAgICAgIGVkaXRhYmxlOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgaWYoIShfLmlzVW5kZWZpbmVkKG0uZ2V0 KCdpbmhlcml0ZWRpZCcpKQorICAgICAgICAgICAgfHwgXy5pc051bGwobS5n ZXQoJ2luaGVyaXRlZGlkJykpCisgICAgICAgICAgICB8fCBfLmlzVW5kZWZp bmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpCisgICAgICAgICAgICB8fCBf LmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSkpIHsgcmV0dXJuIGZh bHNlOyB9CisKKyAgICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCdkYXRh dHlwZScpOworICAgICAgICAgIGlmKG0udHlwZV9vcHRpb25zKSB7CisgICAg ICAgICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIGZhbHNlLCB7c2lsZW50 OiB0cnVlfSk7CisgICAgICAgICAgICAvLyBpdGVyYXRpbmcgb3ZlciBhbGwg dGhlIHR5cGVzCisgICAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMs IGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgICAgICAgLy8gaWYgdHlwZSBmcm9t IHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0Y2hlcyBpbiBvcHRpb25zCisg ICAgICAgICAgICAgIGlmICggb2ZfdHlwZSA9PSBvLnZhbHVlICkgeworICAg ICAgICAgICAgICAgIC8vIGlmIHByZWNlc3Npb24gaXMgYWxsb3dlZCBmb3Ig c2VsZWN0ZWQgdHlwZQorICAgICAgICAgICAgICAgIGlmKG8ucHJlY2lzaW9u KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIC8vIHNl dCB0aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAgICAgICBtLnNl dCgnaXNfcHJlY2lzaW9uJywgdHJ1ZSwge3NpbGVudDogdHJ1ZX0pOworICAg ICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtz aWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdtYXhf dmFsJywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAg ICAgIHJldHVybiBtLmdldCgnaXNfcHJlY2lzaW9uJyk7CisgICAgICAgIH0K KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF8xMCcKKyAgICAgIH0seworICAgICAg ICBpZDogJ3R5cGRlZmF1bHQnLCBsYWJlbDone3sgXygnRGVmYXVsdCcpIH19 JywgdHlwZTogJ3RleHQnLAorICAgICAgICBjZWxsOiAnc3RyaW5nJywgbWlu X3ZlcnNpb246IDkwMzAwLAorICAgICAgICBwbGFjZWhvbGRlcjogIkVudGVy IGFuIGV4cHJlc3Npb24gb3IgYSB2YWx1ZS4iLAorICAgICAgICBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMTAnLAorICAgICAgICBlZGl0 YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKCEoXy5pc1VuZGVm aW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAgICAgICAgICAgIHx8IF8u aXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQorICAgICAgICAgICAgfHwg Xy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkZnJvbScpKQorICAgICAg ICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkpKSB7 IHJldHVybiBmYWxzZTsgfQorICAgICAgICAgIGlmICh0aGlzLmdldCgnbm9k ZV9pbmZvJykuc2VydmVyLnZlcnNpb24gPCA5MDMwMCl7CisgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICB9CisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdh dHRub3RudWxsJywgbGFiZWw6J3t7IF8oJ05vdCBOdWxsJykgfX0nLAorICAg ICAgICBjZWxsOiAnYm9vbGVhbicsdHlwZTogJ3N3aXRjaCcsIGVkaXRhYmxl OiAnaXNfZWRpdGFibGVfY29sdW1uJywKKyAgICAgICAgY2VsbEhlYWRlckNs YXNzZXM6ICd3aWR0aF9wZXJjZW50XzEwJworICAgICAgfSx7CisgICAgICAg IGlkOiAnY29sbG5hbWUnLCBsYWJlbDone3sgXygnQ29sbGF0aW9uJykgfX0n LCBjZWxsOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICBjb250cm9s OiAnbm9kZS1hamF4LW9wdGlvbnMnLCB0eXBlOiAndGV4dCcsIHVybDogJ2dl dF9jb2xsYXRpb25zJywKKyAgICAgICAgbWluX3ZlcnNpb246IDkwMzAwLCBl ZGl0YWJsZTogJ2lzX2VkaXRhYmxlX2NvbHVtbicsCisgICAgICAgIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICAgIH0sewor ICAgICAgICBpZDogJ2F0dG51bScsIGNlbGw6ICdzdHJpbmcnLHR5cGU6ICd0 ZXh0JywgdmlzaWJsZTogZmFsc2UKKyAgICAgIH0seworICAgICAgICBpZDog J2luaGVyaXRlZGZyb20nLCBsYWJlbDone3sgXygnSW5oZXJpdGVkIEZyb20n KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICB0eXBlOiAndGV4dCcs IHZpc2libGU6IGZhbHNlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCdd LAorICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MTAnCisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAg ICAgdmFyIGVyciA9IHt9LAorICAgICAgZXJybXNnOworCisgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnYXR0bmFtZScpKSB8fCBTdHJpbmco dGhpcy5nZXQoJ2F0dG5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdDb2x1 bW4gTmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgZXJy bXNnID0gZXJybXNnIHx8IGVyclsnYXR0bmFtZSddOworICAgICAgfQorCisg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZGF0YXR5cGUnKSkg fHwgU3RyaW5nKHRoaXMuZ2V0KCdkYXRhdHlwZScpKQorICAgICAgLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgZXJyWydi YXNlbnNwJ10gPSAne3sgXygnQ29sdW1uIERhdGF0eXBlIGNhbiBub3QgYmUg ZW1wdHkhJykgfX0nOworICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJy WydkYXRhdHlwZSddOworICAgICAgfQorCisgICAgICB0aGlzLmVycm9yTW9k ZWwuY2xlYXIoKS5zZXQoZXJyKTsKKworICAgICAgcmV0dXJuIGVycm1zZzsK KyAgICB9LAorICAgIGlzX2VkaXRhYmxlX2NvbHVtbjogZnVuY3Rpb24obSkg eworICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0 ZWRpZCcpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAg ICAgICB8fCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykp IHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSA/IHRydWUg OiBmYWxzZQorICAgIH0sCisgICAgdG9KU09OOiBCYWNrYm9uZS5Nb2RlbC5w cm90b3R5cGUudG9KU09OCisgIH0pOworCisgIHZhciBmb3JtYXROb2RlID0g ZnVuY3Rpb24ob3B0KSB7CisgICAgaWYgKCFvcHQuaWQpIHsKKyAgICAgIHJl dHVybiBvcHQudGV4dDsKKyAgICB9CisKKyAgICB2YXIgb3B0aW1hZ2UgPSAk KG9wdC5lbGVtZW50KS5kYXRhKCdpbWFnZScpOworCisgICAgaWYoIW9wdGlt YWdlKXsKKyAgICAgIHJldHVybiBvcHQudGV4dDsKKyAgICB9IGVsc2Ugewor ICAgICAgcmV0dXJuICQoCisgICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNz PSJ3Y1RhYkljb24gJyArIG9wdGltYWdlICsgJyIvPicgKyBvcHQudGV4dCAr ICc8L3NwYW4+JworICAgICAgICAgICk7CisgICAgfQorICB9OworCisKKyAg LyogTm9kZUFqYXhPcHRpb25zTXVsdGlwbGVDb250cm9sIGlzIGZvciBtdWx0 aXBsZSBzZWxlY3Rpb24gb2YgQ29tYm9ib3guCisgICogIFRoaXMgY29udHJv bCBpcyB1c2VkIHRvIHNlbGVjdCBNdWx0aXBsZSBQYXJlbnQgVGFibGVzIHRv IGJlIGluaGVyaXRlZC4KKyAgKiAgSXQgYWxzbyBwb3B1bGF0ZXMvdmFjYXRl cyBDb2x1bW5zIG9uIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiB0aGUgb3B0 aW9uIChpLmUuIHRhYmxlIG5hbWUpLgorICAqICBUbyBwb3B1bGF0ZXMgdGhl IGNvbHVtbiwgaXQgY2FsbHMgdGhlIHNlcnZlciBhbmQgZmV0Y2ggdGhlIGNv bHVtbnMgZGF0YQorICAqICBmb3IgdGhlIHNlbGVjdGVkIHRhYmxlLgorICAq LworCisgIHZhciBOb2RlQWpheE9wdGlvbnNNdWx0aXBsZUNvbnRyb2wgPSBC YWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNNdWx0aXBsZUNvbnRyb2wgPSBCYWNr Zm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgdGVt cGxhdGU6IF8udGVtcGxhdGUoWworICAgICAgJzxsYWJlbCBjbGFzcz0iPCU9 QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4iPjwlPWxhYmVsJT48 L2xhYmVsPicsCisgICAgICAnPGRpdiBjbGFzcz0iPCU9QmFja2Zvcm0uY29u dHJvbHNDbGFzc05hbWUlPiA8JT1leHRyYUNsYXNzZXMuam9pbihcJyBcJykl PiI+JywKKyAgICAgICcgIDxzZWxlY3QgY2xhc3M9InBnYWRtaW4tbm9kZS1z ZWxlY3QgZm9ybS1jb250cm9sIiBuYW1lPSI8JT1uYW1lJT4iIHN0eWxlPSJ3 aWR0aDoxMDAlOyIgdmFsdWU9PCUtdmFsdWUlPiA8JT1kaXNhYmxlZCA/ICJk aXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6ICIi JT4gPicsCisgICAgICAnICA8L3NlbGVjdD4nLAorICAgICAgJzwvZGl2Pidd LmpvaW4oIlxuIikpLAorICAgIGRlZmF1bHRzOiBfLmV4dGVuZCgKKyAgICAg IHt9LCBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlw ZS5kZWZhdWx0cywKKyAgICAgIHsKKyAgICAgICAgc2VsZWN0MjogeworICAg ICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgcGxhY2Vob2xk ZXI6ICdTZWxlY3QgZnJvbSB0aGUgbGlzdCcsCisgICAgICAgICAgd2lkdGg6 ICdzdHlsZScsCisgICAgICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZvcm1hdE5v ZGUsCisgICAgICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdE5vZGUK KyAgICAgICAgfQorICAgICAgfSksCisgICAgcmVuZGVyOiBmdW5jdGlvbigp IHsKKyAgICAgIHZhciBmaWVsZCA9IF8uZGVmYXVsdHModGhpcy5maWVsZC50 b0pTT04oKSwgdGhpcy5kZWZhdWx0cyksCisgICAgICAgIGF0dHJpYnV0ZXMg PSB0aGlzLm1vZGVsLnRvSlNPTigpLAorICAgICAgICBhdHRyQXJyID0gZmll bGQubmFtZS5zcGxpdCgnLicpLAorICAgICAgICBuYW1lID0gYXR0ckFyci5z aGlmdCgpLAorICAgICAgICBwYXRoID0gYXR0ckFyci5qb2luKCcuJyksCisg ICAgICAgIHJhd1ZhbHVlID0gdGhpcy5rZXlQYXRoQWNjZXNzb3IoYXR0cmli dXRlc1tuYW1lXSwgcGF0aCksCisgICAgICAgIGRhdGEgPSBfLmV4dGVuZChm aWVsZCwgeworICAgICAgICAgIHJhd1ZhbHVlOiByYXdWYWx1ZSwKKyAgICAg ICAgICB2YWx1ZTogdGhpcy5mb3JtYXR0ZXIuZnJvbVJhdyhyYXdWYWx1ZSwg dGhpcy5tb2RlbCksCisgICAgICAgICAgYXR0cmlidXRlczogYXR0cmlidXRl cywKKyAgICAgICAgICBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0dGVyCisgICAg ICAgIH0pLAorICAgICAgICBldmFsRiA9IGZ1bmN0aW9uKGYsIGQsIG0pIHsK KyAgICAgICAgICByZXR1cm4gKF8uaXNGdW5jdGlvbihmKSA/ICEhZi5hcHBs eShkLCBbbV0pIDogISFmKTsKKyAgICAgICAgfTsKKworICAgICAgLy8gRXZh bHVhdGUgdGhlIGRpc2FibGVkLCB2aXNpYmxlLCBhbmQgcmVxdWlyZWQgb3B0 aW9uCisgICAgICBfLmV4dGVuZChkYXRhLCB7CisgICAgICAgIGRpc2FibGVk OiBldmFsRihkYXRhLmRpc2FibGVkLCBkYXRhLCB0aGlzLm1vZGVsKSwKKyAg ICAgICAgdmlzaWJsZTogIGV2YWxGKGRhdGEudmlzaWJsZSwgZGF0YSwgdGhp cy5tb2RlbCksCisgICAgICAgIHJlcXVpcmVkOiBldmFsRihkYXRhLnJlcXVp cmVkLCBkYXRhLCB0aGlzLm1vZGVsKQorICAgICAgfSk7CisKKyAgICAgIGlm IChmaWVsZC5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCBmaWVsZC5taW5f dmVyc2lvbikgeworICAgICAgICBmaWVsZC52ZXJzaW9uX2NvbXBhdGlibGUg PSBmYWxzZQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgIH0KKyAgICAg IGVsc2UgeworICAgICAgICAvLyBFdmFsdWF0aW9uIHRoZSBvcHRpb25zCisg ICAgICAgIGlmIChfLmlzRnVuY3Rpb24oZGF0YS5vcHRpb25zKSkgeworICAg ICAgICB0cnkgeworICAgICAgICAgIGRhdGEub3B0aW9ucyA9IGRhdGEub3B0 aW9ucy5hcHBseSh0aGlzKQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg ICAgICAvLyBEbyBub3RoaW5nCisgICAgICAgICAgZGF0YS5vcHRpb25zID0g W10KKyAgICAgICAgICB0aGlzLm1vZGVsLnRyaWdnZXIoJ3BnYWRtaW4tdmll dzp0cmFuc2Zvcm06ZXJyb3InLCBtLCBzZWxmLmZpZWxkLCBlKTsKKyAgICAg ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYW4gdXAgZmlyc3QK KyAgICAgICAgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoQmFja2Zvcm0uaGlkZGVu Q2xhc3NuYW1lKTsKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRlbXBs YXRlKGRhdGEpKS5hZGRDbGFzcyhmaWVsZC5uYW1lKTsKKworICAgICAgICBp ZiAoIWRhdGEudmlzaWJsZSkgeworICAgICAgICB0aGlzLiRlbC5hZGRDbGFz cyhCYWNrZm9ybS5oaWRkZW5DbGFzc25hbWUpOworICAgICAgICB9IGVsc2Ug eworICAgICAgICB2YXIgb3B0cyA9IF8uZXh0ZW5kKAorICAgICAgICAgIHt9 LCB0aGlzLmRlZmF1bHRzLnNlbGVjdDIsIGRhdGEuc2VsZWN0MiwKKyAgICAg ICAgICB7CisgICAgICAgICAgICAnZGF0YSc6IGRhdGEub3B0aW9ucworICAg ICAgICAgIH0pOworICAgICAgICB0aGlzLiRlbC5maW5kKCJzZWxlY3QiKS5z ZWxlY3QyKG9wdHMpLnZhbChkYXRhLnJhd1ZhbHVlKS50cmlnZ2VyKCJjaGFu Z2UiKTsKKyAgICAgICAgdGhpcy51cGRhdGVJbnZhbGlkKCk7CisgICAgICAg IH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisgICAg b25DaGFuZ2U6IGZ1bmN0aW9uKGUpIHsKKyAgICAgIHZhciBtb2RlbCA9IHRo aXMubW9kZWwsCisgICAgICAgICAgJGVsID0gJChlLnRhcmdldCksCisgICAg ICAgICAgYXR0ckFyciA9IHRoaXMuZmllbGQuZ2V0KCJuYW1lIikuc3BsaXQo Jy4nKSwKKyAgICAgICAgICBuYW1lID0gYXR0ckFyci5zaGlmdCgpLAorICAg ICAgICAgIHBhdGggPSBhdHRyQXJyLmpvaW4oJy4nKSwKKyAgICAgICAgICB2 YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCisgICAgICAgICAgY2hh bmdlcyA9IHt9LAorICAgICAgICAgIGNvbHVtbnMgPSBtb2RlbC5nZXQoJ2Nv bHVtbnMnKSwKKyAgICAgICAgICBpbmhlcml0cyA9IG1vZGVsLmdldChuYW1l KTsKKworICAgICAgaWYgKHRoaXMubW9kZWwuZXJyb3JNb2RlbCBpbnN0YW5j ZW9mIEJhY2tib25lLk1vZGVsKSB7CisgICAgICAgIGlmIChfLmlzRW1wdHko cGF0aCkpIHsKKyAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5z ZXQobmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFyIG5l c3RlZEVycm9yID0gdGhpcy5tb2RlbC5lcnJvck1vZGVsLmdldChuYW1lKTsK KyAgICAgICAgICBpZiAobmVzdGVkRXJyb3IpIHsKKyAgICAgICAgICAgIHRo aXMua2V5UGF0aFNldHRlcihuZXN0ZWRFcnJvciwgcGF0aCwgbnVsbCk7Cisg ICAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0KG5hbWUsIG5l c3RlZEVycm9yKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K KworICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgICBpZiAodHlwZW9m KGluaGVyaXRzKSAgPT0gInN0cmluZyIpeyBpbmhlcml0cyA9IEpTT04ucGFy c2UoaW5oZXJpdHMpOyB9CisKKyAgICAgIC8vIFJlbW92ZSBDb2x1bW5zIGlm IGluaGVyaXQgb3B0aW9uIGlzIGRlc2VsZWN0ZWQgZnJvbSB0aGUgY29tYm9i b3gKKyAgICAgIGlmKF8uc2l6ZShKU09OLnBhcnNlKHZhbHVlKSkgPCBfLnNp emUoaW5oZXJpdHMpKSB7CisgICAgICAgIHZhciBkaWYgPSAgXy5kaWZmZXJl bmNlKGluaGVyaXRzLCBKU09OLnBhcnNlKHZhbHVlKSk7CisgICAgICAgIHZh ciBybXZfY29sdW1ucyA9IGNvbHVtbnMud2hlcmUoe2luaGVyaXRlZGlkOiBw YXJzZUludChkaWZbMF0pfSk7CisgICAgICAgIGNvbHVtbnMucmVtb3ZlKHJt dl9jb2x1bW5zKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAg ICAgICAgXy5lYWNoKEpTT04ucGFyc2UodmFsdWUpLCBmdW5jdGlvbihpKSB7 CisgICAgICAgICAgLy8gRmV0Y2ggQ29sdW1ucyBmcm9tIHNlcnZlcgorICAg ICAgICAgIHZhciBmbmRfY29sdW1ucyA9IGNvbHVtbnMud2hlcmUoe2luaGVy aXRlZGlkOiBwYXJzZUludChpKX0pOworICAgICAgICAgIGlmIChmbmRfY29s dW1ucyAmJiBmbmRfY29sdW1ucy5sZW5ndGggPD0gMCkgeworICAgICAgICAg ICAgaW5odGVkX2NvbHVtbnMgPSBzZWxmLmZldGNoQ29sdW1ucyhpKTsKKyAg ICAgICAgICAgIGNvbHVtbnMuYWRkKGluaHRlZF9jb2x1bW5zKTsKKyAgICAg ICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisgICAgICBjaGFuZ2Vz W25hbWVdID0gXy5pc0VtcHR5KHBhdGgpID8gdmFsdWUgOiBfLmNsb25lKG1v ZGVsLmdldChuYW1lKSkgfHwge307CisgICAgICB0aGlzLnN0b3BMaXN0ZW5p bmcodGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhpcy5yZW5kZXIp OworICAgICAgbW9kZWwuc2V0KGNoYW5nZXMpOworICAgICAgdGhpcy5saXN0 ZW5Ubyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1lLCB0aGlzLnJlbmRl cik7CisgICAgfSwKKyAgICBmZXRjaENvbHVtbnM6IGZ1bmN0aW9uKHRhYmxl X2lkKXsKKyAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICB1cmwg PSAnZ2V0X2NvbHVtbnMnLAorICAgICAgICAgIG0gPSBzZWxmLm1vZGVsLnRv cCB8fCBzZWxmLm1vZGVsOworCisgICAgICBpZiAodXJsKSB7CisgICAgICAg IHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisg ICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdldCgnbm9kZV9p bmZvJyksCisgICAgICAgICAgICBmdWxsX3VybCA9IG5vZGUuZ2VuZXJhdGVf dXJsLmFwcGx5KAorICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAg ICAgICAgbnVsbCwgdXJsLCB0aGlzLmZpZWxkLmdldCgnbm9kZV9kYXRhJyks CisgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ3VybF93aXRoX2lk JykgfHwgZmFsc2UsIG5vZGVfaW5mbworICAgICAgICAgICAgICBdKSwKKyAg ICAgICAgICAgIGNhY2hlX2xldmVsID0gdGhpcy5maWVsZC5nZXQoJ2NhY2hl X2xldmVsJykgfHwgbm9kZS50eXBlLAorICAgICAgICAgICAgY2FjaGVfbm9k ZSA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9ub2RlJyk7CisKKyAgICAgICAg Y2FjaGVfbm9kZSA9IChjYWNoZV9ub2RlICYmIHBnQWRtaW4uQnJvd3Nlci5O b2Rlc1snY2FjaGVfbm9kZSddKSB8fCBub2RlOworCisgICAgICAgIG0udHJp Z2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywgbSwgc2VsZi5maWVsZCk7 CisgICAgICAgIGRhdGEgPSB7YXR0cmVsaWQ6IHRhYmxlX2lkfQorCisgICAg ICAgIC8vIEZldGNoaW5nIENvbHVtbnMgZGF0YSBmb3IgdGhlIHNlbGVjdGVk IHRhYmxlLgorICAgICAgICAkLmFqYXgoeworICAgICAgICAgIGFzeW5jOiBm YWxzZSwKKyAgICAgICAgICB1cmw6IGZ1bGxfdXJsLAorICAgICAgICAgIGRh dGE6IGRhdGEsCisgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7 CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogV2Ugd2lsbCBjYWNo ZSB0aGlzIGRhdGEgZm9yIHNob3J0IHBlcmlvZCBvZiB0aW1lIGZvciBhdm9p ZGluZworICAgICAgICAgICAgICogc2FtZSBjYWxscy4KKyAgICAgICAgICAg ICAqLworICAgICAgICAgICAgZGF0YSA9IGNhY2hlX25vZGUuY2FjaGUodXJs LCBub2RlX2luZm8sIGNhY2hlX2xldmVsLCByZXMuZGF0YSk7CisgICAgICAg ICAgfSwKKyAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CisgICAgICAg ICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaDplcnJvcicsIG0s IHNlbGYuZmllbGQpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg ICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoZWQnLCBtLCBzZWxm LmZpZWxkKTsKKworICAgICAgICAvLyBUbyBmZXRjaCBvbmx5IG9wdGlvbnMg ZnJvbSBjYWNoZSwgd2UgZG8gbm90IG5lZWQgdGltZSBmcm9tICdhdCcKKyAg ICAgICAgLy8gYXR0cmlidXRlIGJ1dCBvbmx5IG9wdGlvbnMuCisgICAgICAg IC8vCisgICAgICAgIC8vIEl0IGlzIGZlYXNpYmxlIHRoYXQgdGhlIGRhdGEg bWF5IG5vdCBoYXZlIGJlZW4gZmV0Y2hlZC4KKyAgICAgICAgZGF0YSA9IChk YXRhICYmIGRhdGEuZGF0YSkgfHwgW107CisgICAgICAgIHJldHVybiBkYXRh OworICAgICAgfQorICAgIH0sCisgIH0pOworCisKKyAgLy8gQ29uc3RyYWlu dHMgTW9kZWwKKyAgdmFyIENvbnN0cmFpbnRNb2RlbCA9IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgaWRBdHRyaWJ1dGU6ICdj b25vaWQnLAorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdz KSB7CisgICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7 CisgICAgICBpZiAoIWlzTmV3KSB7CisgICAgICAgIHRoaXMuY29udmFsaWRh dGVkX2RlZmF1bHQgPSB0aGlzLmdldCgnY29udmFsaWRhdGVkJykKKyAgICAg IH0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgfSwK KyAgICBkZWZhdWx0czogeworICAgICAgY29ub2lkOiB1bmRlZmluZWQsCisg ICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisgICAgICBjb25zcmM6IHVuZGVm aW5lZCwKKyAgICAgIGNvbm5vaW5oZXJpdDogdW5kZWZpbmVkLAorICAgICAg Y29udmFsaWRhdGVkOiB0cnVlCisgICAgfSwKKyAgICBjb252YWxpZGF0ZWRf ZGVmYXVsdDogdHJ1ZSwKKyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ2Nv bm9pZCcsIHR5cGU6ICd0ZXh0JywgY2VsbDogJ3N0cmluZycsIHZpc2libGU6 IGZhbHNlCisgICAgfSx7CisgICAgICBpZDogJ2Nvbm5hbWUnLCBsYWJlbDon e3sgXygnTmFtZScpIH19JywgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgIGVkaXRhYmxlOiAnaXNfZWRpdGFibGUnLCBjZWxsSGVhZGVy Q2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMzAnCisgICAgfSx7CisgICAgICBp ZDogJ2NvbnNyYycsIGxhYmVsOid7eyBfKCdDaGVjaycpIH19JywgdHlwZTog J211bHRpbGluZScsCisgICAgICBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlJywg Y2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLlRleHRhcmVhQ2VsbCwKKyAgICAg IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcKKyAgICB9 LHsKKyAgICAgIGlkOiAnY29ubm9pbmhlcml0JywgbGFiZWw6J3t7IF8oJ05v IEluaGVyaXQnKSB9fScsIHR5cGU6ICdzd2l0Y2gnLAorICAgICAgY2VsbDog J2Jvb2xlYW4nLCBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlJywKKyAgICAgIGNl bGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICB9LHsK KyAgICAgIGlkOiAnY29udmFsaWRhdGVkJywgbGFiZWw6J3t7IF8oJ1ZhbGlk YXRlPycpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAgICBjZWxsOiAnYm9v bGVhbicsIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcs CisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICB2YXIg c2VydmVyID0gdGhpcy5nZXQoJ25vZGVfaW5mbycpLnNlcnZlcjsKKyAgICAg ICAgaWYgKF8uaXNVbmRlZmluZWQobS5pc05ldykpIHsgcmV0dXJuIHRydWU7 IH0KKyAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICBpZiht LmdldCgnY29udmFsaWRhdGVkJykgJiYgbS5jb252YWxpZGF0ZWRfZGVmYXVs dCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0K KyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgfQorICAgIF0sCisgICAgdmFs aWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGVyciA9IHt9LAorICAg ICAgZXJybXNnOworCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdl dCgnY29ubmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Nvbm5hbWUnKSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICBl cnJbJ2Nvbm5hbWUnXSA9ICd7eyBfKCdDb25zdHJhaW50IE5hbWUgY2FuIG5v dCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgIGVycm1zZyA9IGVycm1zZyB8 fCBlcnJbJ2Nvbm5hbWUnXTsKKyAgICAgIH0KKworICAgICAgaWYgKF8uaXNV bmRlZmluZWQodGhpcy5nZXQoJ2NvbnNyYycpKSB8fCBTdHJpbmcodGhpcy5n ZXQoJ2NvbnNyYycpKQorICAgICAgLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAn JykgPT0gJycpIHsKKyAgICAgICAgZXJyWydjb25zcmMnXSA9ICd7eyBfKCdD b25zdHJhaW50IENoZWNrIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAg ICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydjb25zcmMnXTsKKyAgICAg IH0KKworICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7 CisKKyAgICAgIHJldHVybiBlcnJtc2c7CisgICAgfSwKKyAgICBpc19lZGl0 YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICByZXR1cm4gXy5pc1VuZGVm aW5lZChtLmlzTmV3KSA/IHRydWUgOiBtLmlzTmV3KCk7CisgICAgfSwKKyAg ICB0b0pTT046IEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS50b0pTT04KKyAg fSk7CisKKworICAvLyBPcHRpb25zIE1vZGVsCisgIHZhciBPcHRpb25zTW9k ZWwgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAg IGRlZmF1bHRzOiB7CisgICAgICBvcHRpb246IHVuZGVmaW5lZCwKKyAgICAg IHZhbHVlOiB1bmRlZmluZWQKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAg ICAgIGlkOiAnb3B0aW9uJywgbGFiZWw6J3t7IF8oJ09wdGlvbicpIH19Jywg Y2VsbDogJ3N0cmluZycsIHR5cGU6ICd0ZXh0JywKKyAgICAgIGVkaXRhYmxl OiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcK KyAgICB9LHsKKyAgICAgIGlkOiAndmFsdWUnLCBsYWJlbDone3sgXygnVmFs dWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLHR5cGU6ICd0ZXh0JywKKyAgICAg IGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVy Y2VudF81MCcKKyAgICB9CisgICAgXSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rp b24oKSB7CisgICAgICAvLyBUT0RPOiBBZGQgdmFsaWRhdGlvbiBoZXJlCisg ICAgfSwKKyAgICB0b0pTT046IEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS50 b0pTT04KKyAgfSk7CisKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZm9y ZWlnbi10YWJsZSddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydm b3JlaWduLXRhYmxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAg ICAgdHlwZTogJ2ZvcmVpZ24tdGFibGUnLAorICAgICAgbGFiZWw6ICd7eyBf KCdGb3JlaWduIFRhYmxlJykgfX0nLAorICAgICAgY29sbGVjdGlvbl90eXBl OiAnY29sbC1mb3JlaWduLXRhYmxlJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwK KyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAgICBwYXJlbnRfdHlwZTog WydzY2hlbWEnXSwKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworICAgICAg ICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8K KyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICBy ZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisK KyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgIG5h bWU6ICdjcmVhdGVfZm9yZWlnbi10YWJsZV9vbl9jb2xsJywgbm9kZTogJ2Nv bGwtZm9yZWlnbi10YWJsZScsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBh cHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hv d19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVh dGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdGb3JlaWduIFRhYmxl Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1m b3JlaWduLXRhYmxlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNr OiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAg ICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZm9yZWlnbi10YWJs ZScsIG5vZGU6ICdmb3JlaWduLXRhYmxlJywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0ZvcmVp Z24gVGFibGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNv biBpY29uLWZvcmVpZ24tdGFibGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRl JywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0 ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9mb3Jl aWduLXRhYmxlJywgbm9kZTogJ3NjaGVtYScsIG1vZHVsZTogdGhpcywKKyAg ICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxi YWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdv cnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdGb3Jl aWduIFRhYmxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYklj b24gaWNvbi1mb3JlaWduLXRhYmxlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZScsIGNoZWNrOiBmYWxzZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3Jl YXRlJworICAgICAgICB9CisgICAgICAgIF0pOworCisgICAgICB9LAorICAg ICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGls ZERyb3AsCisgICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5vZGVz WydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBtb2RlbDogcGdBZG1p bi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgaW5pdGlh bGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKKyAgICAgICAgICB2YXIg aXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7CisgICAgICAgICAgaWYg KGlzTmV3KSB7CisgICAgICAgICAgICAvLyBTZXQgU2VsZWN0ZWQgU2NoZW1h CisgICAgICAgICAgICBzY2hlbWEgPSBhcmdzLm5vZGVfaW5mby5zY2hlbWEu bGFiZWwKKyAgICAgICAgICAgIHRoaXMuc2V0KHsnYmFzZW5zcCc6IHNjaGVt YX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9CisgICAgICAgICAg cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRpYWxp emUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgfSwKKyAgICAg ICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCisg ICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgb3duZXI6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBiYXNlbnNwOiB1bmRlZmluZWQsCisgICAg ICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAgICAgICAgICBmdHNy dm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzdHJjb2x1bW46IHVuZGVm aW5lZCwKKyAgICAgICAgICBzdHJmdG9wdGlvbnM6IHVuZGVmaW5lZCwKKyAg ICAgICAgICBpbmhlcml0czogW10sCisgICAgICAgICAgY29sdW1uczogW10s CisgICAgICAgICAgY29uc3RyYWludHM6IFtdLAorICAgICAgICAgIGZ0b3B0 aW9uczogW10sCisgICAgICAgICAgc2VjbGFiZWxzOiBbXQorICAgICAgICB9 LAorICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgaWQ6ICduYW1lJywg bGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdj cmVhdGUnLCAnZWRpdCddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn b2lkJywgbGFiZWw6J3t7IF8oJ09pZCcpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVz J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdvd25lcicsIGxhYmVs Oid7eyBfKCdPd25lcicpIH19JywgY2VsbDogJ3N0cmluZycsIGNvbnRyb2w6 IEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbCwKKyAgICAgICAgICBu b2RlOiAncm9sZScsICB0eXBlOiAndGV4dCcsIG1vZGU6IFsnZWRpdCcsICdw cm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdiYXNl bnNwJywgbGFiZWw6J3t7IF8oJ1NjaGVtYScpIH19JywgY2VsbDogJ25vZGUt bGlzdC1ieS1uYW1lJywKKyAgICAgICAgICAgY29udHJvbDogJ25vZGUtbGlz dC1ieS1uYW1lJywgY2FjaGVfbGV2ZWw6ICdkYXRhYmFzZScsIHR5cGU6ICd0 ZXh0JywKKyAgICAgICAgICAgbm9kZTogJ3NjaGVtYScsIG1vZGU6WydjcmVh dGUnLCAnZWRpdCddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGVz Y3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdmdHNydm5hbWUnLCBsYWJlbDone3sg XygnRm9yZWlnbiBTZXJ2ZXInKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250 cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0 ZXh0JywgZ3JvdXA6ICdEZWZpbml0aW9uJywgdXJsOiAnZ2V0X2ZvcmVpZ25f c2VydmVycycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5p c05ldygpOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnaW5oZXJp dHMnLCBsYWJlbDone3sgXygnSW5oZXJpdHMnKSB9fScsIGNlbGw6ICdzdHJp bmcnLCBncm91cDogJ0RlZmluaXRpb24nLAorICAgICAgICAgIHR5cGU6ICds aXN0JywgbWluX3ZlcnNpb246IDkwNTAwLCBjb250cm9sOiAnbm9kZS1hamF4 LW9wdGlvbnMtbXVsdGlwbGUnLAorICAgICAgICAgIHVybDogJ2dldF90YWJs ZXMnLCBzZWxlY3QyOiB7bXVsdGlwbGU6IHRydWV9LAorICAgICAgICAgICdj YWNoZV9sZXZlbCc6ICdkYXRhYmFzZScKKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdzdHJjb2x1bW4nLCBsYWJlbDone3sgXygnQ29sdW1ucycpIH19 JywgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAnRGVmaW5pdGlvbicsCisgICAg ICAgICAgdHlwZTogJ3RleHQnLCBtaW5fdmVyc2lvbjogOTA1MDAsIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn Y29sdW1ucycsIGxhYmVsOid7eyBfKCdDb2x1bW5zJykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3Vw OiAnQ29sdW1ucycsIHZpc2libGU6IGZhbHNlLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCisgICAgICAgICAgbW9kZWw6IENvbHVtbnNNb2RlbCwgY2Fu QWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGNhbkVkaXQ6IGZhbHNlLAor ICAgICAgICAgIGNvbHVtbnM6IFsnYXR0bmFtZScsICdkYXRhdHlwZScsICd0 eXBsZW4nLCAncHJlY2lzaW9uJywgJ3R5cGRlZmF1bHQnLCAnYXR0bm90bnVs bCcsICdjb2xsbmFtZScsICdpbmhlcml0ZWRmcm9tJ10KKyAgICAgICAgfSwK KyAgICAgICAgeworICAgICAgICAgIGlkOiAnY29uc3RyYWludHMnLCBsYWJl bDone3sgXygnQ29uc3RyYWludHMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICdDb25zdHJh aW50cycsIHZpc2libGU6IGZhbHNlLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sCisgICAgICAgICAgbW9kZWw6IENvbnN0cmFpbnRNb2RlbCwgY2FuQWRk OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGNvbHVtbnM6IFsnY29ubmFtZScs J2NvbnNyYycsICdjb25ub2luaGVyaXQnLCAnY29udmFsaWRhdGVkJ10sCisg ICAgICAgICAgY2FuRWRpdDogZnVuY3Rpb24obykgeworICAgICAgICAgICAg aWYgKG8gaW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCkgeworICAgICAgICAg ICAgICBpZiAobyBpbnN0YW5jZW9mIENvbnN0cmFpbnRNb2RlbCkgeworICAg ICAgICAgICAgICAgIHJldHVybiBvLmlzTmV3KCk7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgIH0sIG1pbl92ZXJzaW9uOiA5MDUwMAorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3N0cmZ0b3B0aW9ucycsIGxhYmVsOid7eyBfKCdP cHRpb25zJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBl OiAndGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicsIG1vZGU6IFsncHJvcGVy dGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZnRvcHRpb25z JywgbGFiZWw6J3t7IF8oJ09wdGlvbnMnKSB9fScsIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICdPcHRp b25zJywgdmlzaWJsZTogZmFsc2UsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwKKyAgICAgICAgICBtb2RlbDogT3B0aW9uc01vZGVsLCBjYW5BZGQ6IHRy dWUsIGNhbkRlbGV0ZTogdHJ1ZSwgY2FuRWRpdDogZmFsc2UKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDogJ3t7IF8o J1NlY3VyaXR5IExhYmVscycpIH19JywKKyAgICAgICAgICBtb2RlbDogU2Vj dXJpdHlNb2RlbCwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdy b3VwOiAne3sgXygnU2VjdXJpdHknKSB9fScsIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwKKyAgICAgICAgICBtaW5fdmVyc2lvbjogOTAxMDAsIGNhbkFk ZDogdHJ1ZSwKKyAgICAgICAgICBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRl OiB0cnVlLAorICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxl Y3Rpb24nLCB1bmlxdWVDb2wgOiBbJ3Byb3ZpZGVyJ10KKyAgICAgICAgfQor ICAgICAgICBdLAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKQorICAg ICAgICB7CisgICAgICAgICAgdmFyIGVyciA9IHt9LAorICAgICAgICAgICAg ICBlcnJtc2csCisgICAgICAgICAgICAgIHNlY2xhYmVscyA9IHRoaXMuZ2V0 KCdzZWNsYWJlbHMnKTsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCduYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScp KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBub3QgYmUgZW1w dHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnbmFtZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdiYXNlbnNwJykpIHx8IFN0cmluZyh0aGlz LmdldCgnYmFzZW5zcCcpKQorICAgICAgICAgIC5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJbJ2Jhc2Vuc3An XSA9ICd7eyBfKCdTY2hlbWEgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7Cisg ICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydiYXNlbnNwJ107 CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQo dGhpcy5nZXQoJ2Z0c3J2bmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Z0 c3J2bmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7 CisgICAgICAgICAgICBlcnJbJ2Z0c3J2bmFtZSddID0gJ3t7IF8oJ0ZvcmVp Z24gU2VydmVyIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAg ICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnZnRzcnZuYW1lJ107CisgICAg ICAgICAgfQorCisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCku c2V0KGVycik7CisKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg fQorICAgICAgfSksCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFs c2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAg aWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKKyAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVl LCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAvLyBUbyBpdGVy YXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICB3 aGlsZSAoaSkgeworICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVu IGFsbG93IHVzZXIgdG8gY3JlYXRlIGZvcmVpZ24gdGFibGUKKyAgICAgICAg ICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCisg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgIGlmICgnY29s bC1mb3JlaWduLXRhYmxlJyA9PSBkLl90eXBlKSB7CisgICAgICAgICAgICAv L0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZworICAgICAg ICAgICAgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6 IG51bGw7CisgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1E YXRhKHByZXZfaSkgOiBudWxsOworICAgICAgICAgICAgaWYoIHByZXZfZC5f dHlwZSA9PSAnY2F0YWxvZycpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg ICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsK KyAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAg ICAgICB9CisgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQg dG8gYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICB9CisgIH0pOworCisgIH0KKworICByZXR1cm4gcGdCcm93c2VyLk5v ZGVzWydmb3JlaWduLXRhYmxlJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41ZTA2MWU5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFi bGVzL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMjkgQEAK K3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBh cyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0YSAlfQorQ1JFQVRFIEZPUkVJR04g VEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1l KSB9fSAoeyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3IgYyBpbiBkYXRh LmNvbHVtbnMgJX0KK3slIGlmIG5vdCBsb29wLmZpcnN0JX0gICAgeyUgZW5k aWYgJX17e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxxdFR5 cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7Yy50 eXBsZW59fSB7JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnByZWNpc2lvbn19 eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17JSBpZiBjLmF0dG5vdG51bGwgJX0K KyBOT1QgTlVMTHslIGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBpZiBu b3QgbG9vcC5sYXN0ICV9LAoreyUgZW5kaWYgJX17JSBlbmRmb3IgLSV9eyUg ZW5kaWYgJX0KKykKKyAgICBTRVJWRVIge3sgY29ubnxxdElkZW50KGRhdGEu ZnRzcnZuYW1lKSB9fXslIGlmIGRhdGEuZnRvcHRpb25zICV9CisKK3slIGZv ciBvIGluIGRhdGEuZnRvcHRpb25zICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQg by52YWx1ZSAlfQoreyUgaWYgbG9vcC5maXJzdCAlfSAgICBPUFRJT05TICh7 JSBlbmRpZiAlfXslIGlmIG5vdCBsb29wLmZpcnN0ICV9LCB7JSBlbmRpZiAl fXt7by5vcHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFsfX17JSBpZiBsb29w Lmxhc3QgJX0peyUgZW5kaWYgJX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9 eyUgZW5kaWYgLSV9OworeyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitD T01NRU5UIE9OIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEu YmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7eyBkYXRhLmRlc2Ny aXB0aW9uIH19JzsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5zZWNsYWJl bHMgJX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiBy LnNlY3VyaXR5X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9CisKK3t7IFNFQ0xB QkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIGRhdGEubmFtZSwgci5w cm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fQor eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2Rl bGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0M2UwNQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZGVs ZXRlLnNxbApAQCAtMCwwICsxLDE1IEBACit7JSBpZiBzY2lkIGFuZCBmb2lk ICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwgbnNwbmFtZSBh cyBiYXNlbnNwCitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBPVVRFUiBK T0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5h bWVzcGFjZSkKK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9 fTo6b2lkCisgICAgQU5EIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVu ZGlmICV9CisKK3slIGlmIG5hbWUgJX0KK0RST1AgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRl ICV9IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OWMxN2QK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dl dF9jb2xsYXRpb25zLnNxbApAQCAtMCwwICsxLDEwIEBACitTRUxFQ1QgLS1u c3BuYW1lLCBjb2xsbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5h bWUpID4gMCBBTkQgbGVuZ3RoKGNvbGxuYW1lKSA+IDAgIFRIRU4KKyAgICBj b25jYXQobnNwbmFtZSwgJy4iJywgY29sbG5hbWUsJyInKQorICAgIEVMU0Ug JycgRU5EIEFTIGNvcHlfY29sbGF0aW9uCitGUk9NCisgICAgcGdfY29sbGF0 aW9uIGMsIHBnX25hbWVzcGFjZSBuCitXSEVSRQorICAgIGMuY29sbG5hbWVz cGFjZT1uLm9pZAorT1JERVIgQlkKKyAgICBuc3BuYW1lLCBjb2xsbmFtZTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbHVt bnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sdW1ucy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJmNWUx NwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMv Z2V0X2NvbHVtbnMuc3FsCkBAIC0wLDAgKzEsMjIgQEAKK1NFTEVDVAorICAg IGF0dG5hbWUsIGF0dG5kaW1zLCBhdHR0eXBtb2QsIGZvcm1hdF90eXBlKHQu b2lkLE5VTEwpIEFTIGRhdGF0eXBlLAorICAgIGZvcm1hdF90eXBlKHQub2lk LCBhdHQuYXR0dHlwbW9kKSBBUyBmdWxsdHlwZSwgYXR0bm90bnVsbCwgYXR0 bnVtLAorICAgIChTRUxFQ1QgQ09VTlQoMSkgZnJvbSBwZ190eXBlIHQyIFdI RVJFIHQyLnR5cG5hbWU9dC50eXBuYW1lKSA+IDEgQVMgaXNkdXAsCisgICAg KAorICAgICAgICBhdHRuYW1lIHx8ICcgJyB8fCBmb3JtYXRfdHlwZSh0Lm9p ZCwgYXR0LmF0dHR5cG1vZCkgfHwgJyAnIHx8CisgICAgICAgIChDQVNFIFdI RU4gYXR0bm90bnVsbD0ndHJ1ZScKKyAgICAgICAgVEhFTiAnTk9UIE5VTEwn IEVMU0UgJ05VTEwnCisgICAgICAgIEVORCkKKyAgICApIGFzIHN0cmNvbHVt bgorRlJPTQorICAgIHBnX2F0dHJpYnV0ZSBhdHQKK0pPSU4KKyAgICBwZ190 eXBlIHQgT04gdC5vaWQ9YXR0dHlwaWQKK0pPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5zcC5vaWQKK0xFRlQgT1VURVIg Sk9JTgorICAgIHBnX3R5cGUgYiBPTiB0LnR5cGVsZW09Yi5vaWQKK1dIRVJF CisgICAgYXR0LmF0dHJlbGlkPXt7Zm9pZH19OjpvaWQKKyAgICBBTkQgYXR0 bnVtPjAKK09SREVSIGJ5IGF0dG51bTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzkzNTQ5Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29uc3RyYWlu dHMuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgY29ubmFtZSwg Y29udHlwZSwgY29uc3JjCitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hF UkUKKyAgICBjb25yZWxpZD17e2ZvaWR9fTo6b2lkCitPUkRFUiBieSBjb25u YW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRf Zm9yZWlnbl9zZXJ2ZXJzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMv Z2V0X2ZvcmVpZ25fc2VydmVycy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMTk4MGYwMgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVycy5zcWwK QEAgLTAsMCArMSw1IEBACitTRUxFQ1QKKyAgICBzcnZuYW1lCitGUk9NCisg ICAgcGdfZm9yZWlnbl9zZXJ2ZXIKK09SREVSIEJZIHNydm5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTVmNWQxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApA QCAtMCwwICsxLDE5IEBACit7JSBpZiBiYXNlbnNwICV9CitTRUxFQ1QKKyAg ICBjLm9pZCwgYm4ub2lkIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBj CitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1jLnJlbG5h bWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFzZW5zcHxx dExpdGVyYWwgfX0KKyAgICBBTkQgYy5yZWxuYW1lPXt7IG5hbWV8cXRMaXRl cmFsIH19OworCit7JSBlbGlmIGZvaWQgJX0KK1NFTEVDVAorICAgIGMucmVs bmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBjCitXSEVS RQorICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL25vZGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjFfcGx1cy9ub2RlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzczMWM1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9ub2RlLnNxbApAQCAtMCww ICsxLDE0IEBACitTRUxFQ1QKKyAgICBjLm9pZCwgYy5yZWxuYW1lIEFTIG5h bWUsIHBnX2dldF91c2VyYnlpZChyZWxvd25lcikgQVMgb3duZXIsCisgICAg ZnRvcHRpb25zLCBuc3BuYW1lIGFzIGJhc2Vuc3AsIGRlc2NyaXB0aW9uCitG Uk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX2ZvcmVpZ25fdGFi bGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAorTEVGVCBPVVRFUiBKT0lOCisg ICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5hbWVzcGFj ZSkKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBP TiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFz cyc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7 c2NpZH19OjpvaWQKK09SREVSIEJZIGMucmVsbmFtZTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YWJjMWIKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3Fs CkBAIC0wLDAgKzEsMjUgQEAKK1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5h bWUgQVMgbmFtZSwgcGdfZ2V0X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25l ciwKKyAgICBmdG9wdGlvbnMsIHNydm5hbWUgQVMgZnRzcnZuYW1lLCBkZXNj cmlwdGlvbiwgbnNwbmFtZSBhcyBiYXNlbnNwLAorICAgIChTRUxFQ1QKKyAg ICAgICAgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkKKyAg ICBGUk9NCisgICAgICAgIHBnX3NlY2xhYmVsIHNsMQorICAgIFdIRVJFCisg ICAgICAgIHNsMS5vYmpvaWQ9Yy5vaWQpIEFTIHNlY2xhYmVscworRlJPTQor ICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAgICBwZ19mb3JlaWduX3RhYmxlIGZ0 IE9OIGMub2lkPWZ0LmZ0cmVsaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBn X2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZ0LmZ0c2VydmVyPWZzLm9pZAorTEVG VCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMu b2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVn Y2xhc3MpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNw IE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorV0hFUkUKKyAgICBjLnJl bG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICB7JSBpZiBmb2lkICV9 CisgICAgQU5EIGMub2lkID0ge3tmb2lkfX06Om9pZAorICAgIHslIGVuZGlm ICV9CitPUkRFUiBCWSBjLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku MV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uM2U1YjRmYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEwNSBAQAor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFz IFNFQ0xBQkxFICV9Cit7JSBpZiBkYXRhICV9Cit7JSBzZXQgbmFtZSA9IG9f ZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEu bmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0YS5uYW1lKSB9 fQorUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19Owor eyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK3slIGVuZGlmICV9Cit7JSBl bmRpZiAtJX0KKworeyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KK09XTkVSIFRPIHt7IGRhdGEub3duZXIgfX07Cit7JSBlbmRpZiAt JX0KKworeyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3IgYyBpbiBkYXRh LmNvbHVtbnMuZGVsZXRlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK0RST1Ag Q09MVU1OIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fTsKK3slIGVuZGZv ciAtJX0KKworeyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmFkZGVkICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorQUREIENPTFVNTiB7e2Nvbm58cXRJZGVudChj LmF0dG5hbWUpfX0ge3sgY29ubnxxdFR5cGVJZGVudChjLmRhdGF0eXBlKSB9 fXslIGlmIGMudHlwbGVuICV9KHt7Yy50eXBsZW59fSB7JSBpZiBjLnByZWNp c2lvbiAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYg JX0KK3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVsc2UgJX0g TlVMTHslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQgJX0gREVGQVVM VCB7e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0KK3slIGlmIGMuY29sbG5h bWUgJX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXslIGVuZGlmICV9OworeyUg ZW5kZm9yIC0lfQorCit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuY2hhbmdl ZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK0RST1AgQ09MVU1OIHt7Y29ubnxx dElkZW50KG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsnYXR0bmFtZSdd KX19OworCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK0FERCBDT0xVTU4ge3tjb25ufHF0 SWRlbnQoYy5hdHRuYW1lKX19IHt7IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRh dHlwZSkgfX17JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX0geyUgaWYg Yy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXsl IGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5VTEx7JSBl bHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICV9 IERFRkFVTFQge3tjLnR5cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7JSBpZiBj LmNvbGxuYW1lICV9IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBlbmRpZiAl fTsKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9CisKKworeyUgaWYgZGF0 YS5mdG9wdGlvbnMgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmRl bGV0ZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FM VEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorT1BUSU9OUyAoIERST1Age3tvLm9wdGlvbn19KTsK K3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KKworeyUgZm9yIG8gaW4gZGF0 YS5mdG9wdGlvbnMuYWRkZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZh bHVlICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorT1BUSU9OUyAoQUREIHt7by5v cHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0K K3slIGVuZGZvciAlfQorCit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5j aGFuZ2VkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KK09QVElPTlMgKFNFVCB7e28ub3B0aW9ufX0ge3tv LnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmIC0lfQorCisKK3slIHNldCBzZWNsYWJlbHMgPSBkYXRh LnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7IFNFQ0xBQkxFLlVOU0VUKGNv bm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRh LmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUg aWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxs ZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0K Kwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFt ZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vu c3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2No YW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVu Z3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0K Kwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFt ZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vu c3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQorCit7JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJM RSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19Cisg ICAgSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBl bmRpZiAtJX0KKworeyUgaWYgZGF0YS5iYXNlbnNwICV9CisKK0FMVEVSIEZP UkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEu YmFzZW5zcCkgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvY3JlYXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4zX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmY1NjYwCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9jcmVhdGUuc3FsCkBAIC0w LDAgKzEsMzEgQEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJp dHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0YSAlfQorQ1JF QVRFIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5z cCwgZGF0YS5uYW1lKSB9fSAoeyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBm b3IgYyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIG5vdCBsb29wLmZpcnN0 JX0gICAgeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0g e3tjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBs ZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5w cmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5hdHRu b3RudWxsICV9CisgTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAl fXslIGlmIGMudHlwZGVmYXVsdCAlfQorIERFRkFVTFQge3tjLnR5cGRlZmF1 bHR9fXslIGVuZGlmICV9eyUgaWYgYy5jb2xsbmFtZSAlfQorIENPTExBVEUg e3tjLmNvbGxuYW1lfX17JSBlbmRpZiAlfQoreyUgaWYgbm90IGxvb3AubGFz dCAlfSwKK3slIGVuZGlmICV9eyUgZW5kZm9yIC0lfXslIGVuZGlmICV9Cisp CisgICAgU0VSVkVSIHt7IGNvbm58cXRJZGVudChkYXRhLmZ0c3J2bmFtZSkg fX17JSBpZiBkYXRhLmZ0b3B0aW9ucyAlfQorCit7JSBmb3IgbyBpbiBkYXRh LmZ0b3B0aW9ucyAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0K K3slIGlmIGxvb3AuZmlyc3QgJX0gICAgT1BUSU9OUyAoeyUgZW5kaWYgJX17 JSBpZiBub3QgbG9vcC5maXJzdCAlfSwgeyUgZW5kaWYgJX17e28ub3B0aW9u fX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19eyUgaWYgbG9vcC5sYXN0ICV9KXsl IGVuZGlmICV9eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9 OworeyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIEZP UkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0 YS5uYW1lKSB9fQorICAgIElTICd7eyBkYXRhLmRlc2NyaXB0aW9uIH19JzsK K3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZv ciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5X2xh YmVsIGFuZCByLnByb3ZpZGVyICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25u LCAnRk9SRUlHTiBUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5z ZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kaWYgJX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2RlbGV0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuM19wbHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiMDk2OQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZGVsZXRlLnNxbApAQCAt MCwwICsxLDE3IEBACit7JSBpZiBzY2lkIGFuZCBmb2lkICV9CitTRUxFQ1QK KyAgICBjLnJlbG5hbWUgQVMgbmFtZSwgbnNwbmFtZSBhcyBiYXNlbnNwCitG Uk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBPVVRFUiBKT0lOCisgICAgcGdf bmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5hbWVzcGFjZSkKK1dI RVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitBTkQK KyAgICBjLm9pZCA9IHt7Zm9pZH19OjpvaWQ7Cit7JSBlbmRpZiAlfQorCisK K3slIGlmIG5hbWUgJX0KK0RST1AgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRlJX0gQ0FTQ0FE RXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4zX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFi bGVzL3NxbC85LjNfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkMjc0YgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0X2NvbGxhdGlv bnMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUIC0tbnNwbmFtZSwgY29s bG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5E IGxlbmd0aChjb2xsbmFtZSkgPiAwICBUSEVOCisgICAgY29uY2F0KG5zcG5h bWUsICcuIicsIGNvbGxuYW1lLCciJykKKyAgICBFTFNFICcnIEVORCBBUyBj b3B5X2NvbGxhdGlvbgorRlJPTQorICAgIHBnX2NvbGxhdGlvbiBjLCBwZ19u YW1lc3BhY2UgbgorV0hFUkUKKyAgICBjLmNvbGxuYW1lc3BhY2U9bi5vaWQK K09SREVSIEJZIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjNfcGx1cy9nZXRfY29sdW1ucy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuM19wbHVzL2dldF9jb2x1bW5zLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODI0ZDNlCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9nZXRfY29sdW1ucy5zcWwK QEAgLTAsMCArMSwzNCBAQAorU0VMRUNUCisgICAgYXR0bmFtZSwgYXR0bmRp bXMsIGF0dHR5cG1vZCwgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgZGF0 YXR5cGUsCisgICAgYXR0bm90bnVsbCwgYXR0bnVtLCBmb3JtYXRfdHlwZSh0 Lm9pZCwgYXR0LmF0dHR5cG1vZCkgQVMgZnVsbHR5cGUsCisgICAgQ0FTRSBX SEVOIGxlbmd0aChjbi5uc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChjbC5jb2xs bmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQoY24ubnNwbmFtZSwgJy4iJywg Y2wuY29sbG5hbWUsJyInKSBFTFNFICcnIEVORCBBUyBjb2xsbmFtZSwKKyAg ICAoU0VMRUNUIENPVU5UKDEpIGZyb20gcGdfdHlwZSB0MiBXSEVSRSB0Mi50 eXBuYW1lPXQudHlwbmFtZSkgPiAxIEFTIGlzZHVwLAorICAgIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxpZCkgQVMgdHlw ZGVmYXVsdCwKKyAgICAoCisgICAgICAgIGF0dG5hbWUgfHwgJyAnIHx8IGZv cm1hdF90eXBlKHQub2lkLCBhdHQuYXR0dHlwbW9kKSB8fCAnICcgfHwKKyAg ICAgICAgKENBU0UgV0hFTiBhdHRub3RudWxsPSd0cnVlJworICAgICAgICBU SEVOICdOT1QgTlVMTCcgRUxTRSAnTlVMTCcKKyAgICAgICAgRU5EKSB8fCAn ICcgfHwKKyAgICAgICAgKENBU0UgV0hFTiBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpPD4nJworICAgICAgICBUSEVO ICdERUZBVUxUICcgfHwgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihkZWYuYWRi aW4sIGRlZi5hZHJlbGlkKQorICAgICAgICBFTFNFICcnIEVORCkKKyAgICAp IGFzIHN0cmNvbHVtbgorRlJPTQorICAgIHBnX2F0dHJpYnV0ZSBhdHQKK0pP SU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9YXR0dHlwaWQKK0pPSU4KKyAg ICBwZ19uYW1lc3BhY2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5zcC5vaWQK K0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2F0dHJkZWYgZGVmIE9OIGFkcmVs aWQ9YXR0LmF0dHJlbGlkIEFORCBhZG51bT1hdHQuYXR0bnVtCitMRUZUIE9V VEVSIEpPSU4KKyAgICBwZ190eXBlIGIgT04gdC50eXBlbGVtPWIub2lkCitM RUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jb2xsYXRpb24gY2wgT04gdC50eXBj b2xsYXRpb249Y2wub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1l c3BhY2UgY24gT04gY2wuY29sbG5hbWVzcGFjZT1jbi5vaWQKK1dIRVJFCisg ICAgYXR0LmF0dHJlbGlkPXt7Zm9pZH19OjpvaWQKKyAgICBBTkQgYXR0bnVt PjAKK09SREVSIGJ5IGF0dG51bTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS4zX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS4zX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzkzNTQ5Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9nZXRfY29uc3RyYWludHMu c3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgY29ubmFtZSwgY29u dHlwZSwgY29uc3JjCitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hFUkUK KyAgICBjb25yZWxpZD17e2ZvaWR9fTo6b2lkCitPUkRFUiBieSBjb25uYW1l OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9nZXRfZm9y ZWlnbl9zZXJ2ZXJzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0 X2ZvcmVpZ25fc2VydmVycy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMWM5NWNlNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4zX3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVycy5zcWwKQEAg LTAsMCArMSw2IEBACitTRUxFQ1QKKyAgICBzcnZuYW1lCitGUk9NCisgICAg cGdfZm9yZWlnbl9zZXJ2ZXIKK09SREVSIEJZCisgICAgc3J2bmFtZTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0X29pZC5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNWY1ZDEKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2dldF9vaWQuc3Fs CkBAIC0wLDAgKzEsMTkgQEAKK3slIGlmIGJhc2Vuc3AgJX0KK1NFTEVDVAor ICAgIGMub2lkLCBibi5vaWQgYXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNz IGMKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWMucmVs bmFtZXNwYWNlCitXSEVSRQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNw fHF0TGl0ZXJhbCB9fQorICAgIEFORCBjLnJlbG5hbWU9e3sgbmFtZXxxdExp dGVyYWwgfX07CisKK3slIGVsaWYgZm9pZCAlfQorU0VMRUNUCisgICAgYy5y ZWxuYW1lc3BhY2UgYXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK1dI RVJFCisgICAgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvbm9kZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzMxYzUKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL25vZGUuc3FsCkBAIC0w LDAgKzEsMTQgQEAKK1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMg bmFtZSwgcGdfZ2V0X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAg ICBmdG9wdGlvbnMsIG5zcG5hbWUgYXMgYmFzZW5zcCwgZGVzY3JpcHRpb24K K0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90 YWJsZSBmdCBPTiBjLm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNw YWNlKQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVz IE9OIChkZXMub2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2Ns YXNzJzo6cmVnY2xhc3MpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0g e3tzY2lkfX06Om9pZAorT1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4zX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmMDg4ZgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvcHJvcGVydGllcy5z cWwKQEAgLTAsMCArMSwyNyBAQAorU0VMRUNUCisgICAgYy5vaWQsIGMucmVs bmFtZSBBUyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQocmVsb3duZXIpIEFTIG93 bmVyLAorICAgIGZ0b3B0aW9ucywgc3J2bmFtZSBBUyBmdHNydm5hbWUsIGRl c2NyaXB0aW9uLCBuc3BuYW1lIGFzIGJhc2Vuc3AsIGNvbnNyYywKKyAgICAo U0VMRUNUCisgICAgICAgIGFycmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwg bGFiZWwpCisgICAgRlJPTQorICAgICAgICBwZ19zaHNlY2xhYmVsIHNsMQor ICAgIFdIRVJFCisgICAgICAgIHNsMS5vYmpvaWQ9Yy5vaWQpIEFTIHNlY2xh YmVscworRlJPTQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAgICBwZ19mb3Jl aWduX3RhYmxlIGZ0IE9OIGMub2lkPWZ0LmZ0cmVsaWQKK0xFRlQgT1VURVIg Sk9JTgorICAgIHBnX2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZ0LmZ0c2VydmVy PWZzLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X2NsYXNzJzo6cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19u YW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorTEVG VCBPVVRFUiBKT0lOCisgICAgcGdfY29uc3RyYWludCBjbiBPTiAoY24uY29u cmVsaWQ9Yy5vaWQpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tz Y2lkfX06Om9pZAorICAgIHslIGlmIGZvaWQgJX0KKyAgICBBTkQgYy5vaWQg PSB7e2ZvaWR9fTo6b2lkCisgICAgeyUgZW5kaWYgJX0KK09SREVSIEJZIGMu cmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMv dXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvdXBkYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjg1YWE2 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy91 cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTEzIEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3sl IGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5u YW1lICV9CitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgb19kYXRhLm5hbWUpIH19CitSRU5BTUUgVE8ge3sg Y29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFtZSA9IGRh dGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYg ZGF0YS5vd25lciAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK09XTkVSIFRPIHt7 IGRhdGEub3duZXIgfX07Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuY29s dW1ucyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmRlbGV0ZWQgJX0K KworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CitEUk9QIENPTFVNTiB7e2Nvbm58cXRJZGVu dChjLmF0dG5hbWUpfX07Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBk YXRhLmNvbHVtbnMuYWRkZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CitBREQg Q09MVU1OIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0 VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tj LnR5cGxlbn19IHslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9u fX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfQoreyUgaWYgYy5hdHRub3RudWxs ICV9IE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYgJX0KK3slIGlm IGMudHlwZGVmYXVsdCAlfSBERUZBVUxUIHt7Yy50eXBkZWZhdWx0fX17JSBl bmRpZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xs bmFtZX19eyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBp biBkYXRhLmNvbHVtbnMuY2hhbmdlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K K0RST1AgQ09MVU1OIHt7Y29ubnxxdElkZW50KG9fZGF0YVsnY29sdW1ucydd W2MuYXR0bnVtXVsnYXR0bmFtZSddKX19OworCitBTFRFUiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K K0FERCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19IHt7IGNv bm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17JSBpZiBjLnR5cGxlbiAl fSh7e2MudHlwbGVufX0geyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVj aXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9Cit7JSBpZiBjLmF0dG5v dG51bGwgJX0gTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfQor eyUgaWYgYy50eXBkZWZhdWx0ICV9IERFRkFVTFQge3tjLnR5cGRlZmF1bHR9 fXslIGVuZGlmICV9Cit7JSBpZiBjLmNvbGxuYW1lICV9IENPTExBVEUge3tj LmNvbGxuYW1lfX17JSBlbmRpZiAlfTsKK3slIGVuZGZvciAtJX0KK3slIGVu ZGlmIC0lfQoreyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9yIGMg aW4gZGF0YS5jb25zdHJhaW50cy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJ R04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorRFJPUCBDT05TVFJBSU5UIHt7Y29ubnxxdElkZW50KGMuY29ubmFt ZSl9fTsKK3slIGVuZGZvciAlfQorCit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0 cmFpbnRzLmFkZGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29u bnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorQUREIENPTlNU UkFJTlQge3tjb25ufHF0SWRlbnQoYy5jb25uYW1lKX19IHslIGlmIGMuY29u c3JjICV9IENIRUNLICh7e2MuY29uc3JjfX0peyUgZW5kaWYgJX0geyUgaWYg Yy5jb25ub2luaGVyaXQgJX0gTk8gSU5IRVJJVHslIGVuZGlmICV9OworeyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KKworeyUgaWYgZGF0YS5mdG9wdGlv bnMgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmRlbGV0ZWQgJX0K K3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVSIEZPUkVJ R04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorT1BUSU9OUyAoIERST1Age3tvLm9wdGlvbn19KTsKK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KKworeyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlv bnMuYWRkZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorT1BUSU9OUyAoQUREIHt7by5vcHRpb259fSB7 e28udmFsdWV8cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZv ciAlfQorCit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5jaGFuZ2VkICV9 Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KK09QVElPTlMgKFNFVCB7e28ub3B0aW9ufX0ge3tvLnZhbHVlfHF0 TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmIC0lfQorCit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMg JX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVs cy5kZWxldGVkICV9CisKK3t7IFNFQ0xBQkxFLlVOU0VUKGNvbm4sICdGT1JF SUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLmJhc2Vuc3Ap IH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2FkZGVk JyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAw ICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KKwore3sgU0VD TEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92 aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2NoYW5nZWQnIGlu IHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAl fQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KKwore3sgU0VD TEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92 aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLmRlc2Ny aXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBjb25u fHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgSVMge3sg ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAtJX0K KworeyUgaWYgZGF0YS5iYXNlbnNwICV9CisKK0FMVEVSIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCkg fX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS41X3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS41X3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi45OWJmOTNlCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjVfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNDcg QEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9z JyBhcyBTRUNMQUJMRSAlfQoreyUgc2V0IGlzX2NvbHVtbnMgPSBbXSAlfQor eyUgaWYgZGF0YSAlfQorQ1JFQVRFIEZPUkVJR04gVEFCTEUge3sgY29ubnxx dElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorKHslIGlmIGRh dGEuY29sdW1ucyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7 JSBpZiAobm90IGMuaW5oZXJpdGVkZnJvbSBvciBjLmluaGVyaXRlZGZyb20g PT0nJyBvciAgYy5pbmhlcml0ZWRmcm9tID09IE5vbmUgb3IgIGMuaW5oZXJp dGVkZnJvbSA9PSAnTm9uZScgKSAlfQoreyUgaWYgaXNfY29sdW1ucy5hcHBl bmQoJzEnKSAlfXslIGVuZGlmICV9Cit7e2Nvbm58cXRJZGVudChjLmF0dG5h bWUpfX0ge3tjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYg Yy50eXBsZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0s IHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9Cit7JSBp ZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBl bmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICV9IERFRkFVTFQge3tjLnR5 cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7JSBpZiBjLmNvbGxuYW1lICV9IENP TExBVEUge3tjLmNvbGxuYW1lfX17JSBlbmRpZiAlfQoreyUgaWYgbm90IGxv b3AubGFzdCAlfSwKK3slIGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRmb3Ig LSV9Cit7JSBlbmRpZiAtJX0KKykKK3slIGlmIGRhdGEuaW5oZXJpdHMgJX0K KyAgICBJTkhFUklUUyAoeyUgZm9yIGkgaW4gZGF0YS5pbmhlcml0cyAlfXsl IGlmIGkgJX17e2l9fXslIGlmIG5vdCBsb29wLmxhc3QgJX0sIHslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBlbmRmb3IgJX0pCit7JSBlbmRpZiAlfQorICAg IFNFUlZFUiB7eyBjb25ufHF0SWRlbnQoZGF0YS5mdHNydm5hbWUpIH19eyUg aWYgZGF0YS5mdG9wdGlvbnMgJX0KKworeyUgZm9yIG8gaW4gZGF0YS5mdG9w dGlvbnMgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9Cit7JSBp ZiBsb29wLmZpcnN0ICV9ICAgIE9QVElPTlMgKHslIGVuZGlmICV9eyUgaWYg bm90IGxvb3AuZmlyc3QgJX0sIHslIGVuZGlmICV9e3tvLm9wdGlvbn19IHt7 by52YWx1ZXxxdExpdGVyYWx9fXslIGlmIGxvb3AubGFzdCAlfSl7JSBlbmRp ZiAlfXslIGVuZGlmICV9Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfTsKK3sl IGlmIGRhdGEuY29uc3RyYWludHMgJX0KK3slIGZvciBjIGluIGRhdGEuY29u c3RyYWludHMgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQUREIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sg KHt7IGMuY29uc3JjIH19KXslIGlmIG5vdCBjLmNvbnZhbGlkYXRlZCAlfSBO T1QgVkFMSUR7JSBlbmRpZiAlfXslIGlmIGMuY29ubm9pbmhlcml0ICV9IE5P IElOSEVSSVR7JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KKworQ09NTUVOVCBPTiBG T1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRh dGEubmFtZSkgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7 Cit7JSBlbmRpZiAtJX0KKworeyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3sl IGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5 X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9CisKK3t7IFNFQ0xBQkxFLlNFVChj b25uLCAnRk9SRUlHTiBUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwg ci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kaWYg JX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2RlbGV0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiMDk2OQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZGVsZXRlLnNxbApA QCAtMCwwICsxLDE3IEBACit7JSBpZiBzY2lkIGFuZCBmb2lkICV9CitTRUxF Q1QKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwgbnNwbmFtZSBhcyBiYXNlbnNw CitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5hbWVzcGFjZSkK K1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitB TkQKKyAgICBjLm9pZCA9IHt7Zm9pZH19OjpvaWQ7Cit7JSBlbmRpZiAlfQor CisKK3slIGlmIG5hbWUgJX0KK0RST1AgRk9SRUlHTiBUQUJMRSB7eyBjb25u fHF0SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRlJX0gQ0FT Q0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkMjc0YgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbGxh dGlvbnMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUIC0tbnNwbmFtZSwg Y29sbG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAg QU5EIGxlbmd0aChjb2xsbmFtZSkgPiAwICBUSEVOCisgICAgY29uY2F0KG5z cG5hbWUsICcuIicsIGNvbGxuYW1lLCciJykKKyAgICBFTFNFICcnIEVORCBB UyBjb3B5X2NvbGxhdGlvbgorRlJPTQorICAgIHBnX2NvbGxhdGlvbiBjLCBw Z19uYW1lc3BhY2UgbgorV0hFUkUKKyAgICBjLmNvbGxuYW1lc3BhY2U9bi5v aWQKK09SREVSIEJZIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sdW1ucy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2x1bW5zLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzE0NTY0Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sdW1ucy5z cWwKQEAgLTAsMCArMSw1MyBAQAorV0lUSCBJTkhfVEFCTEVTIEFTCisgICAg KFNFTEVDVAorICAgICBkaXN0aW5jdCBvbiAoYXQuYXR0bmFtZSkgYXR0bmFt ZSwgcGguaW5ocGFyZW50IEFTIGluaGVyaXRlZGlkLCBwaC5pbmhzZXFubywK KyAgICAgY29uY2F0KG5tc3BfcGFyZW50Lm5zcG5hbWUsICcuJyxwYXJlbnQu cmVsbmFtZSApIEFTIGluaGVyaXRlZGZyb20KKyAgICBGUk9NCisgICAgICAg IHBnX2F0dHJpYnV0ZSBhdAorICAgIEpPSU4KKyAgICAgICAgcGdfaW5oZXJp dHMgcGggT04gcGguaW5ocGFyZW50ID0gYXQuYXR0cmVsaWQgQU5EIHBoLmlu aHJlbGlkID0ge3tmb2lkfX06Om9pZAorICAgIEpPSU4KKyAgICAgICAgcGdf Y2xhc3MgcGFyZW50IE9OIHBoLmluaHBhcmVudCAgPSBwYXJlbnQub2lkCisg ICAgSk9JTgorICAgICAgICBwZ19uYW1lc3BhY2Ugbm1zcF9wYXJlbnQgT04g bm1zcF9wYXJlbnQub2lkICA9IHBhcmVudC5yZWxuYW1lc3BhY2UKKyAgICBH Uk9VUCBCWSBhdC5hdHRuYW1lLCBwaC5pbmhwYXJlbnQsIHBoLmluaHNlcW5v LCBpbmhlcml0ZWRmcm9tCisgICAgT1JERVIgQlkgYXQuYXR0bmFtZSwgcGgu aW5ocGFyZW50LCBwaC5pbmhzZXFubywgaW5oZXJpdGVkZnJvbQorICAgICkK K1NFTEVDVCBJTkguaW5oZXJpdGVkZnJvbSwgSU5ILmluaGVyaXRlZGlkLAor ICAgIGF0dC5hdHRuYW1lLCBhdHQuYXR0bmRpbXMsIGF0dC5hdHR0eXBtb2Qs IGZvcm1hdF90eXBlKHQub2lkLE5VTEwpIEFTIGRhdGF0eXBlLAorICAgIGF0 dC5hdHRub3RudWxsLCBhdHQuYXR0bnVtLCBmb3JtYXRfdHlwZSh0Lm9pZCwg YXR0LmF0dHR5cG1vZCkgQVMgZnVsbHR5cGUsCisgICAgQ0FTRSBXSEVOIGxl bmd0aChjbi5uc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChjbC5jb2xsbmFtZSkg PiAwIFRIRU4KKyAgICBjb25jYXQoY24ubnNwbmFtZSwgJy4iJywgY2wuY29s bG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNvbGxuYW1lLAorICAg IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxp ZCkgQVMgdHlwZGVmYXVsdCwKKyAgICAoCisgICAgICAgIGF0dC5hdHRuYW1l IHx8ICcgJyB8fCBmb3JtYXRfdHlwZSh0Lm9pZCwgYXR0LmF0dHR5cG1vZCkg fHwgJyAnIHx8CisgICAgICAgIChDQVNFIFdIRU4gYXR0bm90bnVsbD0ndHJ1 ZScKKyAgICAgICAgVEhFTiAnTk9UIE5VTEwnIEVMU0UgJ05VTEwnCisgICAg ICAgIEVORCkgfHwgJyAnIHx8CisgICAgICAgIChDQVNFIFdIRU4gcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihkZWYuYWRiaW4sIGRlZi5hZHJlbGlkKTw+JycK KyAgICAgICAgVEhFTiAnREVGQVVMVCAnIHx8IHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxpZCkKKyAgICAgICAgRUxTRSAn JyBFTkQpCisgICAgKSBhcyBzdHJjb2x1bW4sCisKKyAgICAoU0VMRUNUIENP VU5UKDEpIGZyb20gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lPXQudHlw bmFtZSkgPiAxIEFTIGlzZHVwCitGUk9NCisgICAgcGdfYXR0cmlidXRlIGF0 dAorTEVGVCBKT0lOCisgICAgSU5IX1RBQkxFUyBhcyBJTkggT04gYXR0LmF0 dG5hbWUgPSBJTkguYXR0bmFtZQorSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0 Lm9pZD1hdHR0eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04g dC50eXBuYW1lc3BhY2U9bnNwLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfYXR0cmRlZiBkZWYgT04gYWRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGFk bnVtPWF0dC5hdHRudW0KK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX3R5cGUg YiBPTiB0LnR5cGVsZW09Yi5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBn X2NvbGxhdGlvbiBjbCBPTiB0LnR5cGNvbGxhdGlvbj1jbC5vaWQKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBjbiBPTiBjbC5jb2xsbmFt ZXNwYWNlPWNuLm9pZAorV0hFUkUKKyAgICBhdHQuYXR0cmVsaWQ9e3tmb2lk fX06Om9pZAorICAgIEFORCBhdHQuYXR0bnVtPjAKKyAgICBPUkRFUiBCWSBh dHQuYXR0bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3Bs dXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3Bs dXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43NTYwYzMxCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29uc3RyYWludHMuc3FsCkBAIC0w LDAgKzEsNyBAQAorU0VMRUNUCisgICAgb2lkIGFzIGNvbm9pZCwgY29ubmFt ZSwgY29udHlwZSwgY29uc3JjLCBjb25ub2luaGVyaXQsIGNvbnZhbGlkYXRl ZAorRlJPTQorICAgIHBnX2NvbnN0cmFpbnQKK1dIRVJFCisgICAgY29ucmVs aWQ9e3tmb2lkfX06Om9pZAorT1JERVIgYnkgY29ubmFtZTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVy cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9mb3JlaWduX3Nl cnZlcnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjcxN2JkZDMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku NV9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3FsCkBAIC0wLDAgKzEsNiBA QAorU0VMRUNUCisgICAgc3J2bmFtZQorRlJPTQorICAgIHBnX2ZvcmVpZ25f c2VydmVyCitPUkRFUgorICAgIEJZIHNydm5hbWU7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjVfcGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi45YTVmNWQxCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsx LDE5IEBACit7JSBpZiBiYXNlbnNwICV9CitTRUxFQ1QKKyAgICBjLm9pZCwg Ym4ub2lkIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lOCisg ICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1jLnJlbG5hbWVzcGFjZQor V0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFzZW5zcHxxdExpdGVyYWwg fX0KKyAgICBBTkQgYy5yZWxuYW1lPXt7IG5hbWV8cXRMaXRlcmFsIH19Owor Cit7JSBlbGlmIGZvaWQgJX0KK1NFTEVDVAorICAgIGMucmVsbmFtZXNwYWNl IGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBjCitXSEVSRQorICAgIGMu b2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF90YWJsZV9jb2x1bW5zLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X3RhYmxlX2NvbHVtbnMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxODgy ZGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L2dldF90YWJsZV9jb2x1bW5zLnNxbApAQCAtMCwwICsxLDE0IEBACit7JSBp ZiBhdHRyZWxpZCAgJX0KK1NFTEVDVAorICAgIGEuYXR0bmFtZSwgZm9ybWF0 X3R5cGUoYS5hdHR0eXBpZCwgTlVMTCkgQVMgZGF0YXR5cGUsCisgICAgcXVv dGVfaWRlbnQobi5uc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5h bWUpIGFzIGluaGVyaXRlZGZyb20sCisgICAgYy5vaWQgYXMgaW5oZXJpdGVk aWQKK0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNw YWNlIG4gT04gYy5yZWxuYW1lc3BhY2U9bi5vaWQKK0pPSU4KKyAgICBwZ19h dHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gYy5vaWQgQU5EIE5PVCBhLmF0 dGlzZHJvcHBlZCBBTkQgYS5hdHRudW0+MAorV0hFUkUKKyAgICBjLm9pZCA9 IHt7YXR0cmVsaWR9fTo6T0lECit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfdGFibGVzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS41X3BsdXMvZ2V0X3RhYmxlcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4NWEyNgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X3RhYmxlcy5zcWwK QEAgLTAsMCArMSwxOSBAQAoreyUgaWYgYXR0cmVsaWQgICV9CitTRUxFQ1QK KyAgICBhcnJheV9hZ2cocXVvdGVfaWRlbnQobi5uc3BuYW1lKSB8fCAnLicg fHwgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSkgYXMgaW5oZXJpdHMKK0ZST00K KyAgICBwZ19jbGFzcyBjLCBwZ19uYW1lc3BhY2UgbgorV0hFUkUKKyAgICBj LnJlbG5hbWVzcGFjZT1uLm9pZCBBTkQgYy5yZWxraW5kIElOICgncicsICdm JykKKyAgICBBTkQgYy5vaWQgaW4ge3thdHRyZWxpZH19OworCit7JSBlbHNl ICV9CitTRUxFQ1QKKyAgICBjLm9pZCBBUyBpZCwgcXVvdGVfaWRlbnQobi5u c3BuYW1lKSB8fCAnLicgfHwgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBhcyB0 ZXh0CitGUk9NCisgICAgcGdfY2xhc3MgYywgcGdfbmFtZXNwYWNlIG4KK1dI RVJFCisgICAgYy5yZWxuYW1lc3BhY2U9bi5vaWQgQU5EIGMucmVsa2luZCBJ TiAoJ3InLCAnZicpCitPUkRFUiBCWQorICAgIG4ubnNwbmFtZSwgYy5yZWxu YW1lOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwv OS41X3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL25v ZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJj NzMxYzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9w bHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAKK1NFTEVDVAorICAgIGMu b2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0X3VzZXJieWlkKHJlbG93 bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlvbnMsIG5zcG5hbWUgYXMgYmFz ZW5zcCwgZGVzY3JpcHRpb24KK0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lO CisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBjLm9pZD1mdC5mdHJlbGlk CitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIChu c3Aub2lkPWMucmVsbmFtZXNwYWNlKQorTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWMub2lkIEFORCBk ZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCitXSEVSRQorICAg IGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkgYy5y ZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9w cm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvcHJvcGVy dGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YzIwYjgyNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwzMSBAQAorU0VMRUNU CisgICAgYy5vaWQsIGMucmVsbmFtZSBBUyBuYW1lLCBwZ19nZXRfdXNlcmJ5 aWQocmVsb3duZXIpIEFTIG93bmVyLAorICAgIGZ0b3B0aW9ucywgc3J2bmFt ZSBBUyBmdHNydm5hbWUsIGRlc2NyaXB0aW9uLCBuc3BuYW1lIEFTIGJhc2Vu c3AsCisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIg fHwgJz0nIHx8IGxhYmVsKQorICAgIEZST00KKyAgICAgICAgcGdfc2hzZWNs YWJlbCBzbDEKKyAgICBXSEVSRQorICAgICAgICBzbDEub2Jqb2lkPWMub2lk KSBBUyBzZWNsYWJlbHMKKyAgICB7JSBpZiBmb2lkICV9LAorICAgIChTRUxF Q1QKKyAgICAgICAgYXJyYXlfYWdnKGkuaW5ocGFyZW50KSBGUk9NIHBnX2lu aGVyaXRzIGkKKyAgICBXSEVSRQorICAgICAgICBpLmluaHJlbGlkID0ge3tm b2lkfX06Om9pZCBHUk9VUCBCWSBpLmluaHJlbGlkKSBBUyBpbmhlcml0cwor ICAgIHslIGVuZGlmICV9CitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgor ICAgIHBnX2ZvcmVpZ25fdGFibGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZm9yZWlnbl9zZXJ2ZXIgZnMgT04g ZnQuZnRzZXJ2ZXI9ZnMub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19k ZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRlcy5j bGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9J TgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxuYW1l c3BhY2UpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06 Om9pZAorICAgIHslIGlmIGZvaWQgJX0KKyAgICBBTkQgYy5vaWQgPSB7e2Zv aWR9fTo6b2lkCisgICAgeyUgZW5kaWYgJX0KK09SREVSIEJZIGMucmVsbmFt ZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvdXBkYXRl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvdXBkYXRlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmEyNjI1Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy91cGRhdGUu c3FsCkBAIC0wLDAgKzEsMTM5IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hl bWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRh dGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRh dGEubmFtZSAlfXslIGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQor QUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJh c2Vuc3AsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBjb25u fHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5u YW1lICV9Cit7JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBpZiBkYXRhLm93 bmVyICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGRh dGEub3duZXIgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2x1bW5z ICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuZGVsZXRlZCAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTFVNTiB7e2Nvbm58cXRJZGVu dChjLmF0dG5hbWUpfX07Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBk YXRhLmNvbHVtbnMuYWRkZWQgJX0KK3slIGlmIChub3QgYy5pbmhlcml0ZWRm cm9tIG9yIGMuaW5oZXJpdGVkZnJvbSA9PScnIG9yICBjLmluaGVyaXRlZGZy b20gPT0gTm9uZSBvciAgYy5pbmhlcml0ZWRmcm9tID09ICdOb25lJyApICV9 CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT0xVTU4ge3tjb25ufHF0 SWRlbnQoYy5hdHRuYW1lKX19IHt7IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRh dHlwZSkgfX17JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX0geyUgaWYg Yy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXsl IGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5VTEx7JSBl bHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICV9 IERFRkFVTFQge3tjLnR5cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7JSBpZiBj LmNvbGxuYW1lICV9IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBlbmRpZiAl fTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBk YXRhLmNvbHVtbnMuY2hhbmdlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxF IHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAg ICBEUk9QIENPTFVNTiB7e2Nvbm58cXRJZGVudChvX2RhdGFbJ2NvbHVtbnMn XVtjLmF0dG51bV1bJ2F0dG5hbWUnXSl9fTsKKworQUxURVIgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgQUREIENPTFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0g e3sgY29ubnxxdFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlw bGVuICV9KHt7Yy50eXBsZW59fSB7JSBpZiBjLnByZWNpc2lvbiAlfSwge3tj LnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX0KK3slIGlmIGMu YXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVsc2UgJX0gTlVMTHslIGVuZGlm ICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQgJX0gREVGQVVMVCB7e2MudHlwZGVm YXVsdH19eyUgZW5kaWYgJX0KK3slIGlmIGMuY29sbG5hbWUgJX0gQ09MTEFU RSB7e2MuY29sbG5hbWV9fXslIGVuZGlmICV9OworeyUgZW5kZm9yICV9Cit7 JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5pbmhlcml0cyBhbmQgZGF0YS5pbmhl cml0c3xsZW5ndGggPiAwJX0KK3slIGlmIG9fZGF0YS5pbmhlcml0cyA9PSBO b25lIG9yIG9fZGF0YS5pbmhlcml0cyA9PSAnTm9uZScgJX0KK3slIHNldCBp bmhlcml0cyA9ICcnICV9Cit7JSBlbHNlICV9Cit7JSBzZXQgaW5oZXJpdHMg PSBvX2RhdGEuaW5oZXJpdHMgJX0KK3slIGVuZGlmICV9Cit7JSBmb3IgaSBp biBkYXRhLmluaGVyaXRzICV9Cit7JSBpZiBpIG5vdCBpbiBpbmhlcml0cyAl fXslIGlmIGkgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19IElOSEVSSVQge3tpfX07 Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3slIGlmIG9fZGF0YS5pbmhlcml0cyBhbmQgJ2luaGVyaXRz JyBpbiBkYXRhICV9Cit7JSBpZiBkYXRhLmluaGVyaXRzID09IE5vbmUgb3Ig ZGF0YS5pbmhlcml0cyA9PSAnTm9uZScgJX0KK3slIHNldCBpbmhlcml0cyA9 ICcnICV9Cit7JSBlbHNlICV9Cit7JSBzZXQgaW5oZXJpdHMgPSBkYXRhLmlu aGVyaXRzICV9Cit7JSBlbmRpZiAlfQoreyUgZm9yIGkgaW4gb19kYXRhLmlu aGVyaXRzICV9eyUgaWYgaSBub3QgaW4gaW5oZXJpdHMgJX17JSBpZiBpICV9 CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fSBOTyBJTkhFUklUIHt7aX19O3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9yIGMgaW4gZGF0YS5j b25zdHJhaW50cy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUg e3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAg IERST1AgQ09OU1RSQUlOVCB7e2Nvbm58cXRJZGVudChjLmNvbm5hbWUpfX07 Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRz LmFkZGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT05TVFJB SU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBj LmNvbnNyYyB9fSl7JSBpZiBub3QgYy5jb252YWxpZGF0ZWQgJX0gTk9UIFZB TElEeyUgZW5kaWYgJX17JSBpZiBjLmNvbm5vaW5oZXJpdCAlfSBOTyBJTkhF UklUeyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgJX0KK3slIGZvciBjIGluIGRh dGEuY29uc3RyYWludHMuY2hhbmdlZCAlfQoreyUgaWYgYy5jb252YWxpZGF0 ZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQo b19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgVkFMSURBVEUgQ09OU1RS QUlOVCB7eyBjb25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fTsKK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmZ0 b3B0aW9ucyAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuZGVsZXRl ZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIg Rk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG5hbWUpIH19CisgICAgT1BUSU9OUyAoIERST1Age3tvLm9wdGlvbn19KTsK K3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGZvciBvIGluIGRhdGEu ZnRvcHRpb25zLmFkZGVkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1 ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPUFRJT05TIChBREQge3tv Lm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5j aGFuZ2VkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBPUFRJT05TIChTRVQge3tvLm9wdGlvbn19 IHt7by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAlfQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRh LnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQo Y29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVyLCBvX2Rh dGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sl IGlmICdhZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9 CisKK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIG5h bWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNl bnNwKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2No YW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVu Z3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0K Kwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFt ZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vu c3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0 YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIEZPUkVJR04gVEFCTEUg e3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorSVMg e3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAt JX0KK3slIGlmIGRhdGEuYmFzZW5zcCAlfQorCitBTFRFUiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K KyAgICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3Ap IH19OworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cg== --089e0122933c2230df053229df21 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 --089e0122933c2230df053229df21--