Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2JBc-0000hU-DO for pgadmin-hackers@arkaria.postgresql.org; Mon, 16 May 2016 14:07:56 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b2JBb-0001DI-Sl for pgadmin-hackers@arkaria.postgresql.org; Mon, 16 May 2016 14:07:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b2JBY-0001Cx-IJ for pgadmin-hackers@postgresql.org; Mon, 16 May 2016 14:07:52 +0000 Received: from mail-vk0-x22f.google.com ([2607:f8b0:400c:c05::22f]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b2JBQ-0001uJ-Sc for pgadmin-hackers@postgresql.org; Mon, 16 May 2016 14:07:51 +0000 Received: by mail-vk0-x22f.google.com with SMTP id s184so213811145vkb.3 for ; Mon, 16 May 2016 07:07:44 -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=9LcV18krEtN782eXosHQZ1q0zRhe3XT/uxyrPLluclM=; b=Q5au1L81n47NuLeHq8YRGdVxaePN4fRVkdt5znig5XDr34j2OFfj8/3tn6yZPTQJdw cgOHA9XAZg2u4ufpa9LzdXkw8el93fgFf9EFfxQvrpp8rnItPFkxYr5tI6jInSFs2Dso 3KYe/Uo18BQShi2bQLZe6HaOb4qcap2lWHHLpAFmg2jAmy6/yOdpFDGn2jwFhoDP6bV4 7A5xNCJdie038v1a8EWvVnE0tIkjhLpJX6OkpyP1BBV2mpwyKNFMf7lJc2XTRVOOB0Oz cnUO4h0VvyacoUAnH1tkjK4pwhPu2xIu2Hz23TGJjK3K2I+EZkTmdmY1amTEratjGAvM RHIQ== 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=9LcV18krEtN782eXosHQZ1q0zRhe3XT/uxyrPLluclM=; b=ICojJ/qtPXX6+57kRJDMz5xXNuY33VmpV06xWrlS/EKdW+9lWh2txpcYtrSC9g8wMs HGg0c0IQHRX65elRKBm4RzzX7FfD2F7oO76RlbGWUaTqmMpipeZYAhbFogNylqyD1w5Y iaRZt4wGjSjjGIdjtt1FZF1GT0haeD90d6Re5Red+eaPeyiX1nVLRwPK+UdU56wJtyLY CHcwipKgOI3PU8kcF2j3Qq5meLndTyLz7i2elUreZZXkJVItPwsEt1QYxnfUUuOXoJ0E 0voIQbG7imCsJozxwKOo0OshXUz2yvcIwLqnwVFs7ybUAx09df0LH/PevVY5E1fQD5Va nOKA== X-Gm-Message-State: AOPr4FVZMFPW8ppZALggAD61Yi5hR5kxl/misHNjZhCCwC8i+cTGGruZ/aNEwiaC6ItDN/wgqUvdwZlau777B31w MIME-Version: 1.0 X-Received: by 10.159.35.5 with SMTP id 5mr2635481uae.118.1463407662474; Mon, 16 May 2016 07:07:42 -0700 (PDT) Received: by 10.31.189.70 with HTTP; Mon, 16 May 2016 07:07:42 -0700 (PDT) In-Reply-To: References: Date: Mon, 16 May 2016 19:37:42 +0530 Message-ID: Subject: Re: PATCH: FTS configuration node From: Sanket Mehta To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11379e04e269830532f6254f 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 --001a11379e04e269830532f6254f Content-Type: multipart/alternative; boundary=001a11379e04e2697d0532f6254d --001a11379e04e2697d0532f6254d Content-Type: text/plain; charset=UTF-8 Hi, Revised patch is attached with this mail. My response is inline. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Fri, May 13, 2016 at 6:20 PM, Akshay Joshi wrote: > Hi Sanket > > Below are my review comments: > > > - Add button should be disabled in Tokens tab while creating. > > Done > > - Unable to click on down arrow for token select control. > > Done > > - Title should be change from "Create FTS-dictionaries" to "Create FTS > -Configuration". > > Done > > - Tree node is not getting refreshed on name change. > > Done > > - Unable to rename FTS Configuration when name contains any capital > letter. > > Done > > - If user tries to add already existing token then respective row in > the backgrid should be highlighted. > > Done > > - "URL not found" when click on SQL help icon from the properties > dialog. > > Done > > - SQL should not be generated when remove and add the same token > again. Currently it is creating two sql's one for remove and another > is for add. > - *Fix for the above issue is*: - Add "keys: ['token']," to > TokenModel in your js file. > > Done > > On Fri, May 13, 2016 at 2:58 PM, Sanket Mehta < > sanket.mehta@enterprisedb.com> wrote: > >> Hi All, >> >> Last patch for FTS configuration does not contain node.ui.js file >> Kindly ignore it. >> >> Here is the new revised patch attached with this mail. >> Please do review it and let me know if any changes required >> >> Regards, >> Sanket Mehta >> Sr Software engineer >> Enterprisedb >> >> On Thu, May 12, 2016 at 4:38 PM, Sanket Mehta < >> sanket.mehta@enterprisedb.com> wrote: >> >>> Hi, >>> >>> PFA the revised patch. >>> Please do review it and let me know if anything is not proper. >>> >>> Regards, >>> Sanket Mehta >>> Sr Software engineer >>> Enterprisedb >>> >>> On Thu, May 5, 2016 at 8:19 PM, Harshal Dhumal < >>> harshal.dhumal@enterprisedb.com> wrote: >>> >>>> + patch link >>>> >>>> >>>> http://www.postgresql.org/message-id/CAFiP3vwkka+=1FOJ7kr2zbC4AzecoCa9eO9DZ34-Oyy_9gE92g@mail.gmail.com >>>> >>>> -- >>>> *Harshal Dhumal* >>>> *Software Engineer * >>>> >>>> >>>> >>>> EenterpriseDB >>>> >>>> On Thu, May 5, 2016 at 8:18 PM, Sanket Mehta < >>>> sanket.mehta@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> PFA first patch for FTS configuration node. >>>>> >>>>> It depends upon backgrid select2cell multi select control, for which >>>>> Harshal has sent the patch recently. >>>>> Please do apply his patch first and then apply this patch. >>>>> >>>>> Please do review it and let me know if any changes are required. >>>>> >>>>> >>>>> Regards, >>>>> Sanket Mehta >>>>> Sr Software engineer >>>>> Enterprisedb >>>>> >>>>> >>>>> -- >>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>>> To make changes to your subscription: >>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>> >>>>> >>>> >>> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > > > -- > *Akshay Joshi* > *Principal Software Engineer * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > --001a11379e04e2697d0532f6254d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Revised patch is attached with this= mail.
My response is inline.

Regards,
Sanket Mehta
Sr Softwa= re engineer
Enterprisedb

On Fri, May 13, 2016 at 6:20 PM, Akshay Josh= i <akshay.joshi@enterprisedb.com> wrote:
Hi Sanket=C2=A0
Below are my review comments:

  • Add button should be disabled in Tokens tab while creating.
  • Done=C2=A0
    • Unable to click on down arrow for token = select control.=C2=A0
    Done=C2=A0=
    • Title sh= ould be change from "Create FTS-dictionaries" to &qu= ot;Create FTS-Configuration".
    Done=C2=A0
    • Tree node is not getting refreshed on name change.
    Done=C2=A0
    • Unable to rename FTS Co= nfiguration when name contains any capital letter.
    Done=C2=A0
    • If user tries to add already existing token then resp= ective row in the backgrid should be highlighted.
    Done=C2=A0
    • "URL not found" when click on SQL help icon from the properties dialog.=C2=A0
    Done=C2=A0
    • SQL should not be genera= ted when remove and add the same token again. Currently it is creating two = sql's one for remove and another is for add.
      • <= b>Fix for the above issue is: - Add "keys: ['token'],"= ; to TokenModel in your js file.
    Done
    =C2=A0

    On Fri, May 13, 2016 at 2:58 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
    Hi All,

    Last patch for FT= S configuration does not contain node.ui.js file
    Kindly ignore it= .

    Here is the new revised patch attached with this= mail.
    Please do review it and let me know if any changes require= d

    <= div dir=3D"ltr">Regards,
    Sanket Mehta
    Sr Software engineer
    Enterprisedb

    On Thu, May 12, 2016 at 4:3= 8 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
    Hi,

    PFA the revised patch.
    Please do review it and let me kn= ow if anything is not proper.
    <= br clear=3D"all">
    Regards,
    Sanket Mehta
    =
    Sr Software engineer
    Enterprisedb

    On Thu, May 5, 2016 at 8:19= PM, Harshal Dhumal <harshal.dhumal@enterprisedb.com>= wrote:

    --=C2=A0
    Harshal Dhumal
    Software Engineer=C2=A0




    On Thu, May 5, 2016 at 8:18 PM, Sa= nket Mehta <sanket.mehta@enterprisedb.com> wrote= :
    = Hi,

    PFA first patch for FTS configuration node.

    It depends upon backgrid select2cell multi select control,= for which Harshal has sent the patch recently.
    Please do apply h= is patch first and then apply this patch.

    Please d= o review it and let me know if any changes are required.


    Regards,
    Sanket Meh= ta
    Sr Software engineer
    Enterprisedb
    <= /div>


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






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




    --
    Akshay Joshi


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

    --001a11379e04e2697d0532f6254d-- --001a11379e04e269830532f6254f Content-Type: text/x-patch; charset=US-ASCII; name="fts_configurationv4.patch" Content-Disposition: attachment; filename="fts_configurationv4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ioa34uzg0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xNzEzMGZlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL19faW5pdF9fLnB5CkBAIC0wLDAg KzEsOTUxIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyIiIkRlZmluZXMgdmlld3MgZm9yIG1hbmFnZW1lbnQgb2YgRnRzIENvbmZp Z3VyYXRpb24gbm9kZSIiIgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBp bXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBjdXJyZW50 X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2VfcmVzcG9u c2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBn b25lCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGls ZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGltcG9y dCBTY2hlbWFDaGlsZE1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMgYXMgc2No ZW1hcworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRp dGlvbl9yZXF1aXJlZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBv cnQgZ2V0X2RyaXZlcgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitjbGFz cyBGdHNDb25maWd1cmF0aW9uTW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxlKToK KyAgICAiIiIKKyAgICAgY2xhc3MgRnRzQ29uZmlndXJhdGlvbk1vZHVsZShT Y2hlbWFDaGlsZE1vZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBm b3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBkZXJpdmVkIGZyb20gU2NoZW1h Q2hpbGRNb2R1bGUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAg ICAqIF9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgIC0gTWV0aG9k IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRnRzQ29uZmlndXJhdGlvbk1v ZHVsZSBhbmQKKyAgICAgICAgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICog Z2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAgICAtIE1ldGhv ZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93c2VyIGNvbGxlY3Rpb24g bm9kZS4KKworICAgICogbm9kZV9pbm9kZSgpCisgICAgICAtIE1ldGhvZCBp cyBvdmVycmlkZGVuIGZyb20gaXRzIGJhc2UgY2xhc3MgdG8gbWFrZSB0aGUg bm9kZSBhcyBsZWFmIG5vZGUKKworICAgICogc2NyaXB0X2xvYWQoKQorICAg ICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBGVFMgQ29uZmlndXJh dGlvbiwgd2hlbiBhbnkgb2YgdGhlIHNjaGVtYQorICAgICAgbm9kZSBpcyBp bml0aWFsaXplZC4KKworICAgICogY3Nzc25pcHBldHMoKQorICAgICAgLSBM b2FkIHN0eWxlIHNoZWV0cyBmb3IgdGhpcyBtb2R1bGUKKyAgICAiIiIKKyAg ICBOT0RFX1RZUEUgPSAnZnRzX2NvbmZpZ3VyYXRpb24nCisgICAgQ09MTEVD VElPTl9MQUJFTCA9IF8oJ0ZUUyBDb25maWd1cmF0aW9ucycpCisKKyAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg c2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92ZXIgPSBO b25lCisgICAgICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAgICAgc3Vw ZXIoRnRzQ29uZmlndXJhdGlvbk1vZHVsZSwgc2VsZikuX19pbml0X18oKmFy Z3MsICoqa3dhcmdzKQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVy YXRlIHRoZSBjb2xsZWN0aW9uIG5vZGUKKyAgICAgICAgOnBhcmFtIGdpZDog Z3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAg ICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBz Y2lkOiBzY2hlbWEgaWQKKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNl bGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoc2NpZCkKKwor ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAg ICAgICAiIiIKKyAgICAgICAgT3ZlcnJpZGUgdGhlIHByb3BlcnR5IHRvIG1h a2UgdGhlIG5vZGUgYXMgbGVhZiBub2RlCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3Jp cHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhl IG1vZHVsZSBzY3JpcHQgZm9yIGZ0cyB0ZW1wbGF0ZSwgd2hlbiBhbnkgb2Yg dGhlIHNjaGVtYQorICAgICAgICBub2RlIGlzIGluaXRpYWxpemVkLgorICAg ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxl Lk5PREVfVFlQRQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNzc3NuaXBw ZXRzKHNlbGYpOgorICAgICAgICBzbmlwcGV0cyA9IFtyZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAnZnRzX2NvbmZpZ3VyYXRpb24vY3NzL2Z0c19j b25maWd1cmF0aW9uLmNzcycsCisgICAgICAgICAgICBub2RlX3R5cGUgPSBz ZWxmLm5vZGVfdHlwZSwKKyAgICAgICAgICAgIF89XworICAgICAgICApXQor ICAgICAgICBzbmlwcGV0cy5leHRlbmQoc3VwZXIoU2NoZW1hQ2hpbGRNb2R1 bGUsc2VsZikuY3Nzc25pcHBldHMpCisgICAgICAgIHJldHVybiBzbmlwcGV0 cworCitibHVlcHJpbnQgPSBGdHNDb25maWd1cmF0aW9uTW9kdWxlKF9fbmFt ZV9fKQorCisKK2NsYXNzIEZ0c0NvbmZpZ3VyYXRpb25WaWV3KFBHQ2hpbGRO b2RlVmlldyk6CisgICAgIiIiCisgICAgY2xhc3MgRnRzQ29uZmlndXJhdGlv blZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgICAgIEEgdmlldyBjbGFz cyBmb3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBkZXJpdmVkIGZyb20gUEdD aGlsZE5vZGVWaWV3LgorICAgICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNp YmxlIGZvciBhbGwgdGhlIHN0dWZmIHJlbGF0ZWQgdG8gdmlldyBsaWtlCisg ICAgICAgIGNyZWF0ZS91cGRhdGUvZGVsZXRlIEZUUyBDb25maWd1cmF0aW9u LAorICAgICAgICBzaG93aW5nIHByb3BlcnRpZXMgb2Ygbm9kZSwgc2hvd2lu ZyBzcWwgaW4gc3FsIHBhbmUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0t LS0KKyAgICAqIF9faW5pdF9fKCoqa3dhcmdzKQorICAgICAgLSBNZXRob2Qg aXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBGdHNDb25maWd1cmF0aW9uVmll dyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAqIG1vZHVsZV9qcygpCisg ICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkg ZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMg cHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisKKyAgICAqIGNoZWNrX3By ZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhh dmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAg ZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3 aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVt cGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKworICAgICogbGlzdCgp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0 aGUgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisKKyAgICAqIG5v ZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8g Y3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gY29sbGVjdGlvbi4K KyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIEZUUyBDb25m aWd1cmF0aW9uIG5vZGVzLgorCisgICAgKiBub2RlKCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIGEgbm9kZSBnaXZl biBpdHMgb2lkCisgICAgICAgIEhlcmUgaXQgd2lsbCBjcmVhdGUgdGhlIEZU UyBUZW1wbGF0ZSBub2RlIGJhc2VkIG9uIGl0cyBvaWQKKworICAgICogcHJv cGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhl IHNlbGVjdGVkIEZUUyBDb25maWd1cmF0aW9uIG5vZGUKKworICAgICogY3Jl YXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCBjcmVhdGUgdGhlIG5ldyBGVFMgQ29uZmlndXJhdGlvbiBvYmpl Y3QKKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lk KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRh IGZvciB0aGUgc2VsZWN0ZWQgRlRTIENvbmZpZ3VyYXRpb24gbm9kZQorCisg ICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQp OgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCB0aGUgRlRTIENv bmZpZ3VyYXRpb24gb2JqZWN0CisKKyAgICAqIG1zcWwoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgY2ZnaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0aGUgc2VsZWN0ZWQgbm9k ZQorCisgICAgKiBnZXRfc3FsKGRhdGEsIGNmZ2lkKQorICAgICAgLSBUaGlz IGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQor CisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cg aW4gc3FsIHBhbmUgZm9yIG5vZGUuCisKKyAgICAqIHBhcnNlcnMoZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBm ZXRjaCBhbGwgZnRwIHBhcnNlcnMgZnJvbSB0aGUgc2FtZSBzY2hlbWEKKwor ICAgICogY29weUNvbmZpZygpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdp bGwgZmV0Y2ggYWxsIGV4aXN0ZWQgZnRzIGNvbmZpZ3VyYXRpb25zIGZyb20g c2FtZSBzY2hlbWEKKworICAgICogdG9rZW5zKCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgdG9rZW5zIGZyb20gZnRzIHBhcnNl ciByZWxhdGVkIHRvIG5vZGUKKworICAgICogZGljdGlvbmFyaWVzKCk6Cisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgZGljdGlvbmFy aWVzIHJlbGF0ZWQgdG8gbm9kZQorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlv biBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNl IGZvciB0aGUgbm9kZS4KKworICAgICogZGVwZW5kZW5jaWVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXggcmVz cG9uc2UgZm9yIG5vZGUuCisKKyAgICAiIiIKKworICAgIG5vZGVfdHlwZSA9 IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisg ICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAg IHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlw ZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgIHsndHlwZSc6ICdp bnQnLCAnaWQnOiAnc2NpZCd9CisgICAgXQorICAgIGlkcyA9IFsKKyAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdjZmdpZCd9CisgICAgXQorCisg ICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAg ICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVs ZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAg ICAnY2hpbGRyZW4nOiBbeworICAgICAgICAgICAgJ2dldCc6ICdjaGlsZHJl bicKKyAgICAgICAgfV0sCisgICAgICAgICdkZWxldGUnOiBbeydkZWxldGUn OiAnZGVsZXRlJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9k ZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dl dCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwn fSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0 JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3sn Z2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6 IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAn cGFyc2Vycyc6IFt7J2dldCc6ICdwYXJzZXJzJ30sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsnZ2V0JzogJ3BhcnNlcnMnfV0sCisgICAgICAgICdj b3B5Q29uZmlnJzogW3snZ2V0JzogJ2NvcHlDb25maWcnfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0JzogJ2NvcHlDb25maWcnfV0s CisgICAgICAgICd0b2tlbnMnOiBbeydnZXQnOiAndG9rZW5zJ30sIHsnZ2V0 JzogJ3Rva2Vucyd9XSwKKyAgICAgICAgJ2RpY3Rpb25hcmllcyc6IFt7fSwg eydnZXQnOiAnZGljdGlvbmFyaWVzJ31dLAorICAgIH0pCisKKyAgICBkZWYg X2luaXRfKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5jb25uID0g Tm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSBOb25lCisgICAg ICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAgICAgc3VwZXIoRnRzQ29u ZmlndXJhdGlvblZpZXcsIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQorCisg ICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IExvYWQgSlMgZmlsZSAoZnRzX2NvbmZpZ3VyYXRpb24uanMpIGZvciB0aGlz IG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jl c3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICJmdHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29uZmlndXJh dGlvbi5qcyIsCisgICAgICAgICAgICAgICAgXz1fCisgICAgICAgICAgICAp LAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNh dGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisKKyAgICBkZWYgY2hl Y2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3 aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9y ZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAg ICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8g c2VsZgorICAgICAgICAiIiIKKworICAgICAgICBAd3JhcHMoZikKKyAgICAg ICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMg SGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9s ZCBnaWQsc2lkLGRpZAorICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAg ICAgICAgICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVM VF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigKKyAgICAgICAgICAgICAg ICBrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2Vs Zi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAg ICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJy b3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5j b25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBfKCJDb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiKQorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICMgd2Ugd2lsbCBzZXQgdGVtcGxhdGUg cGF0aCBmb3Igc3FsIHNjcmlwdHMgZGVwZW5kaW5nIHVwb24gc2VydmVyIHZl cnNpb24KKyAgICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJzaW9u CisgICAgICAgICAgICBpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAg ICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cycKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3 YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlzdCBhbGwgRlRTIENv bmZpZ3VyYXRpb24gbm9kZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgorCisgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgc2NpZD1zY2lkCisgICAgICAgICAgICAgKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJl c3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJuIGFsbCBGVFMgQ29uZmlndXJhdGlvbnMgdG8g Z2VuZXJhdGUgbm9kZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgorCisgICAgICAgIHJl cyA9IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5z cWwnXSksCisgICAgICAgICAgICBzY2lkPXNjaWQKKyAgICAgICAgKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKwor ICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAg IHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQu Z2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICBy b3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAg ICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAg ICBpY29uPSJpY29uLWZ0c19jb25maWd1cmF0aW9uIgorICAgICAgICAgICAg ICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIG5vZGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIEZUUyBDb25maWd1cmF0aW9u IG5vZGUgdG8gZ2VuZXJhdGUgbm9kZQorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lk OiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAg ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgY2ZnaWQ6 IGZ0cyBDb25maWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorCisgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSksCisgICAgICAg ICAgICBjZmdpZD1jZmdpZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGlmIGxl bihyc2V0Wydyb3dzJ10pID09IDA6CisgICAgICAgICAgICByZXR1cm4gZ29u ZShfKCIiIgorICAgICAgICAgICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBG VFMgQ29uZmlndXJhdGlvbiBub2RlLgorICAgICAgICAgICAgICAgICIiIikp CisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIGRhdGE9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2Rl KAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAgICAg ICAgICAgICAgICBkaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFt ZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0c19jb25m aWd1cmF0aW9uIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFNo b3cgcHJvcGVydGllcyBvZiBGVFMgQ29uZmlndXJhdGlvbiBub2RlCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElk CisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisg ICAgICAgICAgICBjZmdpZDogZnRzIENvbmZpZ3VyYXRpb24gaWQKKyAgICAg ICAgIiIiCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBzY2lkPXNjaWQs CisgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQKKyAgICAgICAgICAgICAg KQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAg ICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAgICAgICAgICAgIENvdWxk IG5vdCBmaW5kIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlLgorICAgICAg ICAgICAgICAgICIiIikpCisKKyAgICAgICAgIyBJbiBlZGl0IG1vZGUgZmV0 Y2ggdG9rZW4vZGljdGlvbmFyeSBsaXN0IGFsc28KKyAgICAgICAgaWYgY2Zn aWQ6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbkRpY3RMaXN0LnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZnaWQ9Y2Zn aWQpCisKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgcmVzWydyb3dzJ11b MF1bJ3Rva2VucyddID0gcnNldFsncm93cyddCisKKyAgICAgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jv d3MnXVswXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBjcmVhdGUoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBuZXcgdGhlIEZUUyBDb25m aWd1cmF0aW9uIG9iamVjdAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBp ZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBh cmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNj aGVtYSBpZAorICAgICAgICAiIiIKKworICAgICAgICAjIE1hbmRhdG9yeSBm aWVsZHMgdG8gY3JlYXRlIGEgbmV3IEZUUyBDb25maWd1cmF0aW9uCisgICAg ICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAnc2NoZW1hJywK KyAgICAgICAgICAgICduYW1lJworICAgICAgICBdCisKKyAgICAgICAgZGF0 YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxv YWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAg ICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBp ZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz PTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAg ICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAgICAgICAgICAgICAgICAg ICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAo JXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgICkKKworICAgICAgICAjIEVpdGhlciBjb3B5IGNvbmZpZyBvciBw YXJzZXIgbXVzdCBiZSBwcmVzZW50IGluIGRhdGEKKyAgICAgICAgaWYgJ2Nv cHlfY29uZmlnJyBub3QgaW4gZGF0YSBhbmQgJ3BhcnNlcicgbm90IGluIGRh dGE6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAg c3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgIGVycm9ybXNnPV8oCisgICAg ICAgICAgICAgICAgICAgICJwcm92aWRlIGF0bGVhc3QgY29weSBjb25maWcg b3IgcGFyc2VyIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK KworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZldGNoIHNjaGVtYSBu YW1lIGZyb20gc2NoZW1hIG9pZAorICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2hl bWEuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIHN0YXR1cywgc2NoZW1hID0gc2Vs Zi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWEpCisKKyAgICAgICAgICAgICMg UmVwbGFjZSBzY2hlbWEgb2lkIHdpdGggc2NoZW1hIG5hbWUgYmVmb3JlIHBh c3NpbmcgdG8gY3JlYXRlLnNxbAorICAgICAgICAgICAgIyBUbyBnZW5lcmF0 ZSBwcm9wZXIgc3FsIHF1ZXJ5CisgICAgICAgICAgICBuZXdfZGF0YSA9IGRh dGEuY29weSgpCisgICAgICAgICAgICBuZXdfZGF0YVsnc2NoZW1hJ10gPSBz Y2hlbWEKKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9bmV3X2Rh dGEsCisgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sCisgICAgICAg ICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIFdlIG5lZWQgY2Zn aWQgdG8gYWRkIG9iamVjdCBpbiB0cmVlIGF0IGJyb3dzZXIsCisgICAgICAg ICAgICAjIEJlbG93IHNxbCB3aWxsIGdpdmUgdGhlIHNhbWUKKyAgICAgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAgbmFtZT1kYXRhWyduYW1lJ10KKyAgICAg ICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgY2ZnaWQgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPWNmZ2lkKQorCisgICAgICAgICAgICByZXR1cm4g anNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAg Y2ZnaWQsCisgICAgICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBp Y29uPSJpY29uLWZ0c19jb25maWd1cmF0aW9uIgorICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlv bihlKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBj ZmdpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgdXBkYXRlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUKKyAgICAgICAgOnBh cmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVy IGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAg IDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAgOnBhcmFtIGNmZ2lk OiBmdHMgQ29uZmlndXJhdGlvbiBpZAorICAgICAgICAiIiIKKyAgICAgICAg ZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29u LmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLmRlY29kZSgpKQor CisgICAgICAgICMgRmV0Y2ggc3FsIHF1ZXJ5IHRvIHVwZGF0ZSBmdHMgQ29u ZmlndXJhdGlvbgorICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZ2lkLCBz aWQsIGRpZCwgc2NpZCwgZGF0YSwgY2ZnaWQpCisgICAgICAgIHRyeToKKyAg ICAgICAgICAgIGlmIHNxbCBhbmQgc3FsLnN0cmlwKCdcbicpIGFuZCBzcWwu c3RyaXAoJyAnKToKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICBpZiBjZmdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVz LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNmZ2lkPWNmZ2lk LAorICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkCisgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBnb25lKF8oIiIiCisgICAgICAgICAgICAg ICAgICAgICAgICBDb3VsZCBub3QgZmluZCB0aGUgRlRTIENvbmZpZ3VyYXRp b24gbm9kZSB0byB1cGRhdGUuCisgICAgICAgICAgICAgICAgICAgICIiIikp CisKKyAgICAgICAgICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKyAg ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAg ICAgIGluZm89IkZUUyBDb25maWd1cmF0aW9uIFVwZGF0ZWQuIiwKKyAgICAg ICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAg ICAnaWQnOiBjZmdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQn OiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBJbiBj YXNlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUgaXMgbm90IHByZXNlbnQKKyAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0x LAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0 ZSIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAg ICAgICAgICAgICAgJ2lkJzogY2ZnaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dp ZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50 X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSBGVFMgQ29uZmlndXJh dGlvbiBvYmplY3QKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAg ICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBk aWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEg aWQKKyAgICAgICAgOnBhcmFtIGNmZ2lkOiBGVFMgQ29uZmlndXJhdGlvbiBp ZAorICAgICAgICAiIiIKKyAgICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBp ZiBpdCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Agd2l0aCBjYXNjYWRlIGNhbGwK KyAgICAgICAgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0ZSc6CisgICAgICAgICAg ICAjIFRoaXMgaXMgYSBjYXNjYWRlIG9wZXJhdGlvbgorICAgICAgICAgICAg Y2FzY2FkZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNh c2NhZGUgPSBGYWxzZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMg R2V0IG5hbWUgZm9yIEZUUyBDb25maWd1cmF0aW9uIGZyb20gY2ZnaWQKKyAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X25hbWUu c3FsJ10pLAorICAgICAgICAgICAgICAgIGNmZ2lkPWNmZ2lkCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGlmIGxlbihyZXNb J3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShf KCIiIgorICAgICAgICAgICAgICAgICAgICAgICAgQ291bGQgbm90IGZpbmQg dGhlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUgdG8gZGVsZXRlLgorICAgICAg ICAgICAgICAgICAgICAiIiIpKQorCisgICAgICAgICAgICAjIERyb3AgRlRT IENvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc1sncm93 cyddWzBdCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgbmFtZT1yZXN1bHRb J25hbWUnXSwKKyAgICAgICAgICAgICAgICBzY2hlbWE9cmVzdWx0WydzY2hl bWEnXSwKKyAgICAgICAgICAgICAgICBjYXNjYWRlPWNhc2NhZGUKKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3VjY2Vz cz0xLAorICAgICAgICAgICAgICAgIGluZm89XygiRlRTIENvbmZpZ3VyYXRp b24gZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAg ICAgICAgICAgICAgICAnaWQnOiBjZmdpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdp ZCwKKyAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZCwKKyAgICAgICAg ICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24o ZSkKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIG1vZGlmaWVkIFNRTAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91 cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAg OnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6 IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IEZUUyBDb25maWd1 cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAg ICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24u bG9hZHModikKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAg ICAgICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgIyBGZXRjaCBz cWwgcXVlcnkgZm9yIG1vZGlmaWVkIGRhdGEKKyAgICAgICAgc3FsID0gc2Vs Zi5nZXRfc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRhdGEsIGNmZ2lkKQor CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3FsLCBzdHIpIGFuZCBzcWwgYW5k IHNxbC5zdHJpcCgnXG4nKSBhbmQgc3FsLnN0cmlwKCcgJyk6CisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIGRhdGE9c3FsLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT0i LS1tb2RpZmllZCBTUUwiLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRhdGEsIGNmZ2lkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBTUUwgZm9y IG1vZGVsIGRhdGEKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAg ICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBk aWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEg aWQKKyAgICAgICAgOnBhcmFtIGNmZ2lkOiBmdHMgQ29uZmlndXJhdGlvbiBp ZAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBG ZXRjaCBzcWwgZm9yIHVwZGF0ZQorICAgICAgICAgICAgaWYgY2ZnaWQgaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgIGNmZ2lkPWNmZ2lkLAorICAgICAgICAgICAgICAgICAgICBzY2lk PXNjaWQKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAw OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShfKCIiIgorICAg ICAgICAgICAgICAgICAgICAgICAgQ291bGQgbm90IGZpbmQgdGhlIEZUUyBD b25maWd1cmF0aW9uIG5vZGUuCisgICAgICAgICAgICAgICAgICAgICIiIikp CisKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBd CisKKyAgICAgICAgICAgICAgICAjIElmIHVzZXIgaGFzIGNoYW5nZWQgdGhl IHNjaGVtYSB0aGVuIGZldGNoIG5ldyBzY2hlbWEgZGlyZWN0bHkKKyAgICAg ICAgICAgICAgICAjIHVzaW5nIGl0cyBvaWQgb3RoZXJ3aXNlIGZldGNoIG9s ZCBzY2hlbWEgbmFtZSB1c2luZyBpdHMgb2lkCisgICAgICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc2NoZW1hLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhKQorCisgICAgICAgICAg ICAgICAgc3RhdHVzLCBuZXdfc2NoZW1hID0gc2VsZi5jb25uLmV4ZWN1dGVf c2NhbGFyKHNxbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPW5ld19zY2hlbWEpCisKKyAgICAgICAgICAgICAgICAj IFJlcGxhY2Ugc2NoZW1hIG9pZCB3aXRoIHNjaGVtYSBuYW1lCisgICAgICAg ICAgICAgICAgbmV3X2RhdGEgPSBkYXRhLmNvcHkoKQorICAgICAgICAgICAg ICAgIGlmICdzY2hlbWEnIGluIG5ld19kYXRhOgorICAgICAgICAgICAgICAg ICAgICBuZXdfZGF0YVsnc2NoZW1hJ10gPSBuZXdfc2NoZW1hCisKKyAgICAg ICAgICAgICAgICAjIEZldGNoIG9sZCBzY2hlbWEgbmFtZSB1c2luZyBvbGQg c2NoZW1hIG9pZAorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3NjaGVtYS5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgIGRhdGE9b2xkX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgKQorCisg ICAgICAgICAgICAgICAgc3RhdHVzLCBvbGRfc2NoZW1hID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPW9sZF9zY2hlbWEpCisKKyAgICAgICAg ICAgICAgICAjIFJlcGxhY2Ugb2xkIHNjaGVtYSBvaWQgd2l0aCBvbGQgc2No ZW1hIG5hbWUKKyAgICAgICAgICAgICAgICBvbGRfZGF0YVsnc2NoZW1hJ10g PSBvbGRfc2NoZW1hCisKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICBkYXRhPW5ld19kYXRhLCBvX2RhdGE9b2xkX2RhdGEKKyAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICMgRmV0Y2ggc3Fs IHF1ZXJ5IGZvciBtb2RpZmllZCBkYXRhCisgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUgZnJvbSBzY2hl bWEgb2lkCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnc2NoZW1hLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgICAgIHN0YXR1cywgc2NoZW1hID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKHNxbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXNjaGVtYSkKKworICAgICAgICAgICAgICAgICMgUmVwbGFj ZSBzY2hlbWEgb2lkIHdpdGggc2NoZW1hIG5hbWUKKyAgICAgICAgICAgICAg ICBuZXdfZGF0YSA9IGRhdGEuY29weSgpCisgICAgICAgICAgICAgICAgbmV3 X2RhdGFbJ3NjaGVtYSddID0gc2NoZW1hCisKKyAgICAgICAgICAgICAgICBp ZiAnbmFtZScgaW4gbmV3X2RhdGEgYW5kIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdzY2hlbWEnIGluIG5ld19kYXRhOgorICAgICAgICAgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9bmV3X2Rh dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgICAgIHNxbCA9ICItLSBpbmNvbXBsZXRlIGRlZmluaXRp b24iCisgICAgICAgICAgICByZXR1cm4gc3RyKHNxbC5zdHJpcCgnXG4nKSkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcGFyc2Vy cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZnRzIHBhcnNlcnMg bGlzdCBmb3IgRlRTIENvbmZpZ3VyYXRpb24KKyAgICAgICAgOnBhcmFtIGdp ZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisg ICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJh bSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAgIiIiCisgICAgICAgICMgRmV0 Y2ggbGFzdCBzeXN0ZW0gb2lkCisgICAgICAgIGRhdGxhc3RzeXNvaWQgPSBz ZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydkYXRsYXN0c3lzb2lkJ10KKwor ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncGFyc2VyLnNxbCddKSwK KyAgICAgICAgICAgIHBhcnNlcj1UcnVlCisgICAgICAgICAgICApCisgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAg ICAgICAgIyBFbXB0eSBzZXQgaXMgYWRkZWQgYmVmb3JlIGFjdHVhbCBsaXN0 IGFzIGluaXRpYWxseSBpdCB3aWxsIGJlIHZpc2libGUKKyAgICAgICAgIyBh dCBwYXJzZXIgY29udHJvbCB3aGlsZSBjcmVhdGluZyBhIG5ldyBGVFMgQ29u ZmlndXJhdGlvbgorICAgICAgICByZXMgPSBbeydsYWJlbCc6JycsICd2YWx1 ZSc6Jyd9XQorICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgIGlmIHJvd1snc2NoZW1hb2lkJ10gPiBkYXRsYXN0c3lzb2lk OgorICAgICAgICAgICAgICAgIHJvd1sncHJzbmFtZSddID0gcm93Wyduc3Bu YW1lJ10gKyAnLicgKyByb3dbJ3Byc25hbWUnXQorCisgICAgICAgICAgICBy ZXMuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ3Byc25hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1sncHJzbmFtZSddfSkKKyAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg IGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNvcHlDb25m aWcoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGNvcHkgY29uZmln IGxpc3QgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIDpwYXJhbSBn aWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAor ICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFy YW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAgICAjIEZl dGNoIGxhc3Qgc3lzdGVtIG9pZAorICAgICAgICBkYXRsYXN0c3lzb2lkID0g c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCddCisK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NvcHlfY29uZmlnLnNx bCddKSwKKyAgICAgICAgICAgIGNvcHlfY29uZmlnPVRydWUKKyAgICAgICAg ICAgICkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKworICAgICAgICAjIEVtcHR5IHNldCBpcyBhZGRlZCBiZWZvcmUg YWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0IHdpbGwgYmUgdmlzaWJsZQor ICAgICAgICAjIGF0IGNvcHlfY29uZmlnIGNvbnRyb2wgd2hpbGUgY3JlYXRp bmcgYSBuZXcgRlRTIENvbmZpZ3VyYXRpb24KKyAgICAgICAgcmVzID0gW3sn bGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIGlmIHJvd1snb2lkJ10gPiBk YXRsYXN0c3lzb2lkOgorICAgICAgICAgICAgICAgIHJvd1snY2ZnbmFtZSdd ID0gcm93Wyduc3BuYW1lJ10gKyAnLicgKyByb3dbJ2NmZ25hbWUnXQorCisg ICAgICAgICAgICByZXMuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ2NmZ25hbWUn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1snY2Zn bmFtZSddfSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHRva2VucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCByZXR1cm4gdG9rZW4gbGlzdCBvZiBmdHMgcGFyc2VyIG5vZGUgcmVsYXRl ZCB0bworICAgICAgICBjdXJyZW50IEZUUyBDb25maWd1cmF0aW9uIG5vZGUK KyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFt IHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNl IGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAg OnBhcmFtIGNmZ2lkOiBmdHMgY29uZmlndXJhdGlvbiBpZAorICAgICAgICAi IiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gW10KKyAgICAg ICAgICAgIGlmIGNmZ2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3BhcnNlci5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgIGNmZ2lkPWNmZ2lkCisgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHBhcnNlcm9p ZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisKKyAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcnNlcm9p ZCkKKworICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ3Rva2Vucy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIHBh cnNlcm9pZD1wYXJzZXJvaWQKKyAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3Qoc3FsKQorCisgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0 Wydyb3dzJ106CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoeyds YWJlbCc6IHJvd1snYWxpYXMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ3ZhbHVlJzogcm93WydhbGlhcyddfSkKKworICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAg ICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGRpY3Rpb25hcmllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBj ZmdpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCByZXR1cm4gZGljdGlvbmFyeSBsaXN0IGZvciBGVFMgQ29uZmln dXJhdGlvbgorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAg ICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDog ZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAor ICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwnZGlj dGlvbmFyaWVzLnNxbCddKQorICAgICAgICAgICAgKQorICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIHJl cyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVsJzogcm93WydkaWN0bmFtZSdd LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93WydkaWN0 bmFtZSddfSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV2ZXJz ZSBnZW5lcmF0ZSBzcWwgZm9yIHNxbCBwYW5lbAorICAgICAgICA6cGFyYW0g Z2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBh cmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IEZU UyBDb25maWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAgICB0cnk6 CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC5z cWwnXSksCisgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQsCisgICAgICAg ICAgICAgICAgc2NpZD1zY2lkLAorICAgICAgICAgICAgICAgIGNvbm49c2Vs Zi5jb25uCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8oCisg ICAgICAgICAgICAgICAgICAgICJFUlJPUjogQ291bGRuJ3QgZ2VuZXJhdGUg cmV2ZXJzZWQgZW5naW5lZXJlZCBxdWVyeSBmb3IgdGhlIEZUUyBDb25maWd1 cmF0aW9uIVxuezB9IgorICAgICAgICAgICAgICAgICAgICApLmZvcm1hdCgK KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcworICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBy ZXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZSgKKyAg ICAgICAgICAgICAgICAgICAgXygKKyAgICAgICAgICAgICAgICAgICAgICAg ICJFUlJPUjogQ291bGRuJ3QgZ2VuZXJhdGUgcmV2ZXJzZWQgZW5naW5lZXJl ZCBxdWVyeSBmb3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSEiKQorICAgICAg ICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9u c2UocmVzcG9uc2U9cmVzKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRp b24oZSkKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25z ZQorICAgICAgICBmb3IgdGhlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElE CisgICAgICAgICAgICBjZmdpZDogRlRTIENvbmZpZ3VyYXRpb24gSUQKKyAg ICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5n ZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIGNmZ2lkKQorICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRlcGVu ZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVu ZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVw ZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBm b3IgdGhlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAg ICBjZmdpZDogRlRTIENvbmZpZ3VyYXRpb24gSUQKKyAgICAgICAgIiIiCisg ICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRl bmNpZXMoc2VsZi5jb25uLCBjZmdpZCkKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNpZXNf cmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisK KworRnRzQ29uZmlndXJhdGlvblZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJs dWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25m aWd1cmF0aW9ucy9zdGF0aWMvaW1nL2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24u cG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRp Yy9pbWcvY29sbC1mdHNfY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uMDFiZjRlZTViYmNjM2Y3Yzg1OThhNGZhOWQ5YTc2ZTA2 MWJmNjBlMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzY5CnpjbWVBU0BO PyhvbEh5YHVWQnEhaWEwdnBeMHdCeCpCcDlxX0VaN1VBbWBafkRmKkJhZkNa RHdjQHNobVZUXkpadgp6XihxP3lkN0szdms7T3BUMUJ+NUhYND9UN09GZG0y TG5KT0lDb25XfTc4LXNPbUp+PyVjfUJheHs8dCNkNzE9I3wKekhQcUNXTiQ1 QFpAbHdGVW0jNjJ4X34tU3FrLXFVfj8pUlVfYGp6eD0mcjl+ektqcnkxVyY1 N0ZmODkzMF5uZDtMCno8SUhiWT9iXjRBWTA8T1NyYHlCZDljNXRzd0o8QWh7 Pl4+QXMkPnEmKHBvWD1ePlYtWUh8Pmo9bT1EaHEqKVhlewp6Sl4jNE1IQ15e ZD1DSThsZXRleF9Ieyk8YVIrd0kwXk1tRnFHNWg8QHUpbUlDUEd3QFNTeWY9 b0BHKDlTPXdRX24KeipOQnBvI0ZBOTI8ZjJweyNiOUokWHJPQ29xLSRVcFZx ez10VnIqcSVxSFNQbVduZkAyUSZrUXtMdkRVYlc/Q2dnCmdnTWxTajE0eS0l ZmYrPUBzcCs5PmZFcE0pVUh4M3ZJVkNnITBOX1B8RmFRN20KCmxpdGVyYWwg MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19jb25maWd1cmF0aW9ucy9zdGF0aWMvaW1nL2Z0c19jb25maWd1cmF0aW9u LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0 aWMvaW1nL2Z0c19jb25maWd1cmF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4wYTVjYWY1MzczNjcwY2M2ODQ2MDVkNDJjOWViMjE3MjRmZDc1 NTIzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNDYKemNtZUFTQE4/KG9s SHlgdVZCcSFpYTB2cF4wd0J4KkJwOXFfRVo3VUFtYFp+RGYqQmFmQ1pEd2NA c2htVlReSlp2CnpeKHE/eWQ3SzN2aztPcFQxQn41SFg0P1Q3ZVYjNmtBcmhD OTZBckxXeVJQY3pfUk4xeTwrdD81ZWt3bV9gdjNwdAp6cFhTaFVXJHkzKT1L bnJEYW9lJSgkbyYyTHo4P1NuLT4ybyVAMShsQClpdioqe2hWQXtAYjkrdF43 MT9qdDc2TTMKenw2ZD43ZGlsQVklblZEeFF+IVRISWRya3d1KE1SKXI+U0I2 eXQjTWwpdEIrN0liUXVibUR9JSolTGhqJD98VnVnCnpDOWozVj8oYUxwLVdq cXNAYz1Ld3V9anshN3taRzgwYlFuQTt1PXdzbDMwPnptMFhreHEhXjQwMz1N UCpqZFRxUgp6THlRY3BPcEw4ZU90Y001dHFjcS1XfiQxZVh2b2JeJHhOJCtY ZlV0QFlYR1VYR0JBVF5JNWo8VjROd0R2cj5tZEsKSUk7VnN0MEFLJXE0Z2Rm RQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9jc3MvZnRzX2NvbmZpZ3VyYXRpb24uY3NzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9jc3MvZnRzX2NvbmZpZ3VyYXRpb24uY3NzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZWYzOTMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL2Nzcy9mdHNfY29uZmlndXJh dGlvbi5jc3MKQEAgLTAsMCArMSwzIEBACisucGdhZG1pbi1jb250cm9scyB7 CisgICAgbWluLXdpZHRoOiAwcHggIWltcG9ydGFudDsKK30KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL2pzL2Z0c19jb25maWd1cmF0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9qcy9mdHNfY29uZmlndXJhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5iMWQ3M2U2Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9m dHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29uZmlndXJhdGlvbi5qcwpAQCAt MCwwICsxLDU3OSBAQAorZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1 bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAor ICAgICAgICAgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisKKy8vIE1vZGVs IGZvciB0b2tlbnMgY29udHJvbAorICB2YXIgVG9rZW5Nb2RlbCA9IHBnQWRt aW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1 bHRzOiB7CisgICAgICAgICAgdG9rZW46IHVuZGVmaW5lZCwKKyAgICAgICAg ICBkaWN0bmFtZTogdW5kZWZpbmVkCisgICAgICAgIH0sCisgICAgICAgIGtl eXM6IFsndG9rZW4nXSwKKyAgICAgICAgLy8gRGVmaW5lIHRoZSBzY2hlbWEg Zm9yIHRoZSB0b2tlbi9kaWN0aW9uYXJ5IGxpc3QKKyAgICAgICAgc2NoZW1h OiBbeworICAgICAgICAgIGlkOiAndG9rZW4nLCBsYWJlbDonVG9rZW4nLCB0 eXBlOid0ZXh0JywgZ3JvdXA6IG51bGwsCisgICAgICAgICAgY2VsbEhlYWRl ckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnLCBlZGl0YWJsZTogdHJ1ZSwK KyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIGNlbGw6ICdzdHJpbmcnLCB1 cmw6ICd0b2tlbnMnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGlj dG5hbWUnLCBsYWJlbDogJ0RpY3Rpb25hcmllcycsIHR5cGU6ICd0ZXh0Jywg Z3JvdXA6bnVsbCwKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3Nlczond2lk dGhfcGVyY2VudF81MCcsIGVkaXRhYmxlOiB0cnVlLAorICAgICAgICAgIGNl bGw6QmFja2dyaWQuRXh0ZW5zaW9uLk11bHRpU2VsZWN0QWpheENlbGwsIHVy bDogJ2RpY3Rpb25hcmllcycKKyAgICAgICAgfV0sCisgICAgICAgIC8vIFZh bGlkYXRpb24gZm9yIHRva2VuIGFuZCBkaWN0aW9uYXJ5IGxpc3QKKyAgICAg ICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gQ2xl YXIgYW55IGV4aXN0aW5nIGVycm9ycy4KKyAgICAgICAgICB2YXIgbXNnOwor ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICAg IHZhciB0b2tlbiA9IHRoaXMuZ2V0KCd0b2tlbicpOworICAgICAgICAgIHZh ciBkaWN0aW9uYXJ5ID0gdGhpcy5nZXQoJ2RpY3RuYW1lJyk7CisKKyAgICAg ICAgICBpZiAoXy5pc051bGwodG9rZW4pIHx8CisgICAgICAgICAgICAgIF8u aXNVbmRlZmluZWQodG9rZW4pIHx8CisgICAgICAgICAgICAgIFN0cmluZyh0 b2tlbikucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAg ICAgICAgICAgbXNnID0gJ3t7IF8oJ1Rva2VuIGNhbiBub3QgYmUgZW1wdHkh JykgfX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndG9r ZW4nLG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAg IH0KKworICAgICAgICAgIGlmIChfLmlzTnVsbChkaWN0aW9uYXJ5KSB8fAor ICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKGRpY3Rpb25hcnkpIHx8Cisg ICAgICAgICAgICAgIFN0cmluZyhkaWN0aW9uYXJ5KS5yZXBsYWNlKC9eXHMr fFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBtc2cgPSAne3sg XygnRGljdGlvbmFyeSBuYW1lIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOwor ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZGljdG5hbWUnLG1z Zyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKyAg ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICB9KTsKKworLy8g Q3VzdG9taXplZCBjb250cm9sIGZvciB0b2tlbiBjb250cm9sCisgIHZhciBU b2tlbkNvbnRyb2wgPSAgQmFja2Zvcm0uVG9rZW5Db250cm9sID0KKyAgICBC YWNrZm9ybS5VbmlxdWVDb2xDb2xsZWN0aW9uQ29udHJvbC5leHRlbmQoewor CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0cykgeworICAgICAgQmFj a2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wucHJvdG90eXBlLmlu aXRpYWxpemUuYXBwbHkoCisgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAg ICAgKTsKKworICAgICAgdmFyIHNlbGYgPSB0aGF0ID0gdGhpcywKKyAgICAg ICAgICBub2RlID0gJ2Z0c19jb25maWd1cmF0aW9uJywKKyAgICAgICAgICBo ZWFkZXJTY2hlbWEgPSBbeworICAgICAgICAgICAgaWQ6ICd0b2tlbicsIGxh YmVsOicnLCB0eXBlOid0ZXh0JywgdXJsOiAndG9rZW5zJywKKyAgICAgICAg ICAgIG5vZGU6J2Z0c19jb25maWd1cmF0aW9uJywgY2FuQWRkOiB0cnVlLCAn dXJsX3dpdGhfaWQnOiB0cnVlLAorCisgICAgICAgICAgICAvLyBEZWZpbmlu ZyBjb250cm9sIGZvciB0b2tlbnMgZHJvcGRvd24gY29udHJvbCBpbiBoZWFk ZXIKKyAgICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVBamF4T3B0 aW9uc0NvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgZm9ybWF0dGVy OiBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlwZS5m b3JtYXR0ZXIsCisgICAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAgIEJhY2tmb3JtLk5vZGVBamF4T3B0aW9u c0NvbnRyb2wucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkoCisgICAgICAg ICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgYXJndW1lbnRz CisgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdmFyIHNl bGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAgdXJsID0gc2VsZi5maWVs ZC5nZXQoJ3VybCcpIHx8IHNlbGYuZGVmYXVsdHMudXJsLAorICAgICAgICAg ICAgICAgICAgbSA9IHNlbGYubW9kZWwudG9wIHx8IHNlbGYubW9kZWw7CisK KyAgICAgICAgICAgICAgICAvKiBGZXRjaCB0aGUgdG9rZW5zL2RpY3QgbGlz dCBmcm9tICd0aGF0JyBub2RlLgorICAgICAgICAgICAgICAgICAqIEhlcmUg J3RoYXQnIHJlZmVycyB0byB1bmlxdWUgY29sbGVjdGlvbiBjb250cm9sIHdo ZXJlCisgICAgICAgICAgICAgICAgICogJ3NlbGYnIHJlZmVycyB0byBub2Rl QWpheE9wdGlvbnMgY29udHJvbCBmb3IgZGljdGlvbmFyeQorICAgICAgICAg ICAgICAgICAqLworICAgICAgICAgICAgICAgIHZhciBjZmdpZCA9IHRoYXQu bW9kZWwuZ2V0KCdvaWQnKTsKKyAgICAgICAgICAgICAgICBpZiAodXJsKSB7 CisgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0 KCdzY2hlbWFfbm9kZScpLAorICAgICAgICAgICAgICAgICAgICBub2RlX2lu Zm8gPSB0aGlzLmZpZWxkLmdldCgnbm9kZV9pbmZvJyksCisgICAgICAgICAg ICAgICAgICAgIGZ1bGxfdXJsID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHko CisgICAgICAgICAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAgICAg ICAgICAgICAgICAgbnVsbCwgdXJsLCB0aGlzLmZpZWxkLmdldCgnbm9kZV9k YXRhJyksCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmdl dCgndXJsX3dpdGhfaWQnKSB8fCBmYWxzZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIG5vZGVfaW5mbworICAgICAgICAgICAgICAgICAgICAgIF0pLAor ICAgICAgICAgICAgICAgICAgICBjYWNoZV9sZXZlbCA9IHRoaXMuZmllbGQu Z2V0KCdjYWNoZV9sZXZlbCcpIHx8IG5vZGUudHlwZSwKKyAgICAgICAgICAg ICAgICAgICAgY2FjaGVfbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9u b2RlJyk7CisKKyAgICAgICAgICAgICAgICAgIGNhY2hlX25vZGUgPSAoY2Fj aGVfbm9kZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjYWNoZV9ub2RlJ10pCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZTsKKworICAgICAg ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAqIFdlIG5lZWRz IHRvIGNoZWNrLCBpZiB3ZSBoYXZlIGFscmVhZHkgY2FjaGVkIGRhdGEKKyAg ICAgICAgICAgICAgICAgICAqIGZvciB0aGlzIHVybC4gSWYgeWVzIC0gdXNl IGl0LCBhbmQgZG8gbm90IGJvdGhlciBhYm91dAorICAgICAgICAgICAgICAg ICAgICogZmV0Y2hpbmcgaXQgYWdhaW4uCisgICAgICAgICAgICAgICAgICAg Ki8KKyAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gY2FjaGVfbm9kZS5j YWNoZSh1cmwsIG5vZGVfaW5mbywgY2FjaGVfbGV2ZWwpOworCisgICAgICAg ICAgICAgICAgICAvLyBGZXRjaCB0b2tlbi9kaWN0aW9uYXJ5IGxpc3QKKyAg ICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLmdldCgndmVyc2lvbl9j b21wYXRpYmxlJykgJiYKKyAgICAgICAgICAgICAgICAgICAgKF8uaXNVbmRl ZmluZWQoZGF0YSkgfHwgXy5pc051bGwoZGF0YSkpKSB7CisgICAgICAgICAg ICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywg bSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgICAgICAgICAgICQuYWpheCh7 CisgICAgICAgICAgICAgICAgICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAg ICAgICAgICAgICAgICAgIHVybDogZnVsbF91cmwsCisgICAgICAgICAgICAg ICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAg ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgKiBXZSB3 aWxsIGNhY2hlIHRoaXMgZGF0YSBmb3Igc2hvcnQgcGVyaW9kIG9mIHRpbWUg Zm9yCisgICAgICAgICAgICAgICAgICAgICAgICogYXZvaWRpbmcgc2FtZSBj YWxscy4KKyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGEgPSBjYWNoZV9ub2RlLmNhY2hlKHVybCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVfaW5mbywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX2xldmVsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1 bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbS50cmlnZ2Vy KCdwZ2FkbWluOnZpZXc6ZmV0Y2g6ZXJyb3InLCBtLCBzZWxmLmZpZWxkKTsK KyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46 dmlldzpmZXRjaGVkJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGZlYXNpYmxl IHRoYXQgdGhlIGRhdGEgbWF5IG5vdCBoYXZlIGJlZW4gZmV0Y2hlZC4KKyAg ICAgICAgICAgICAgICAgIGRhdGEgPSAoZGF0YSAmJiBkYXRhLmRhdGEpIHx8 IFtdOworCisgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAg ICAgICogVHJhbnNmb3JtIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgICAg Ki8KKyAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9ICh0aGlzLmZpZWxk LmdldCgndHJhbnNmb3JtJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfHwgc2VsZi5kZWZhdWx0cy50cmFuc2Zvcm0pOworICAgICAgICAg ICAgICAgICAgaWYgKHRyYW5zZm9ybSAmJiBfLmlzRnVuY3Rpb24odHJhbnNm b3JtKSkgeworICAgICAgICAgICAgICAgICAgICBzZWxmLmZpZWxkLnNldCgn b3B0aW9ucycsIHRyYW5zZm9ybS5iaW5kKHNlbGYsIGRhdGEpKTsKKyAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNl bGYuZmllbGQuc2V0KCdvcHRpb25zJywgZGF0YSk7CisgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9KSwKKyAgICAgICAgICAgIC8vIFNlbGVjdDIgY29udHJv bCBmb3IgYWRkaW5nIG5ldyB0b2tlbnMKKyAgICAgICAgICAgIHNlbGVjdDI6 IHsKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSwgd2lkdGg6ICdz dHlsZScsCisgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IHRv a2VuJworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZpcnN0X2VtcHR5 OiB0cnVlLAorICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQoc2VsZi5tb2Rl bC5nZXQoJ29pZCcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9XSwK KyAgICAgICAgICBoZWFkZXJEZWZhdWx0cyA9IHt0b2tlbjogbnVsbH0sCisg ICAgICAgICAgLy8gR3JpZCBjb2x1bW5zIGJhY2tncmlkCisgICAgICAgICAg Z3JpZENvbHMgPSBbJ3Rva2VuJywgJ2RpY3RuYW1lJ107CisKKyAgICAgIC8v IENyZWF0aW5nIG1vZGVsIGZvciBoZWFkZXIgY29udHJvbCB3aGljaCBpcyB1 c2VkIHRvIGFkZCBuZXcgdG9rZW5zCisgICAgICBzZWxmLmhlYWRlckRhdGEg PSBuZXcgKEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1 bHRzOiBoZWFkZXJEZWZhdWx0cywKKyAgICAgICAgc2NoZW1hOiBoZWFkZXJT Y2hlbWEKKyAgICAgIH0pKSh7fSk7CisKKyAgICAgIC8vIENyZWF0aW5nIHZp ZXcgZnJvbSBoZWFkZXIgc2NoZW1hIGluIHRva2VucyBjb250cm9sCisgICAg ICB2YXIgaGVhZGVyR3JvdXBzID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2No ZW1hKAorICAgICAgICAgIHNlbGYuZmllbGQuZ2V0KCdub2RlX2luZm8nKSwg c2VsZi5oZWFkZXJEYXRhLCAnY3JlYXRlJywKKyAgICAgICAgICBzZWxmLmZp ZWxkLmdldCgnc2NoZW1hX25vZGUnKSwgc2VsZi5maWVsZC5nZXQoJ25vZGVf ZGF0YScpCisgICAgICAgICAgKSwKKyAgICAgICAgICBmaWVsZHMgPSBbXTsK KworICAgICAgXy5lYWNoKGhlYWRlckdyb3VwcywgZnVuY3Rpb24obykgewor ICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KG8uZmllbGRzKTsKKyAg ICAgIH0pOworICAgICAgc2VsZi5oZWFkZXJGaWVsZHMgPSBuZXcgQmFja2Zv cm0uRmllbGRzKGZpZWxkcyk7CisKKyAgICAgIC8vIGNyZWF0aW5nIGdyaWQg dXNpbmcgZ3JpZCBjb2x1bW5zCisgICAgICBzZWxmLmdyaWRTY2hlbWEgPSBC YWNrZm9ybS5nZW5lcmF0ZUdyaWRDb2x1bW5zRnJvbU1vZGVsKAorICAgICAg ICAgIHNlbGYuZmllbGQuZ2V0KCdub2RlX2luZm8nKSwgc2VsZi5maWVsZC5n ZXQoJ21vZGVsJyksCisgICAgICAgICAgJ2VkaXQnLCBncmlkQ29scywgc2Vs Zi5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJykKKyAgICAgICk7CisKKyAgICAg IC8vIFByb3ZpZGluZyBiZWhhdmlvdXIgY29udHJvbCBmdW5jdGlvbnMgdG8g aGVhZGVyIGFuZCBncmlkIGNvbnRyb2wKKyAgICAgIHNlbGYuY29udHJvbHMg PSBbXTsKKyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5oZWFkZXJEYXRhLCAi Y2hhbmdlIiwgc2VsZi5oZWFkZXJEYXRhQ2hhbmdlZCk7CisgICAgICBzZWxm Lmxpc3RlblRvKHNlbGYuaGVhZGVyRGF0YSwgInNlbGVjdDIiLCBzZWxmLmhl YWRlckRhdGFDaGFuZ2VkKTsKKyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5j b2xsZWN0aW9uLCAiYWRkIiwgc2VsZi5vbkFkZG9yUmVtb3ZlVG9rZW5zKTsK KyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5jb2xsZWN0aW9uLCAicmVtb3Zl Iiwgc2VsZi5vbkFkZG9yUmVtb3ZlVG9rZW5zKTsKKyAgICB9LAorCisgICAg Ly8gVGVtcGxhdGUgZm9yIGNyZWF0aW5nIGhlYWRlciB2aWV3CisgICAgZ2Vu ZXJhdGVIZWFkZXI6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgIHZhciBoZWFk ZXIgPSBbCisgICAgICAgICc8ZGl2IGNsYXNzPSJzdWJub2RlLWhlYWRlci1m b3JtIj4nLAorICAgICAgICAnIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVp ZCI+JywKKyAgICAgICAgJyAgPGRpdiBjbGFzcz0icm93Ij4nLAorICAgICAg ICAnICAgPGRpdiBjbGFzcz0iY29sLXhzLTQiPicsCisgICAgICAgICcgICAg PGxhYmVsIGNsYXNzPSJjb250cm9sLWxhYmVsIj48JS10b2tlbl9sYWJlbCU+ PC9sYWJlbD4nLAorICAgICAgICAnICAgPC9kaXY+JywKKyAgICAgICAgJyAg IDxkaXYgY2xhc3M9ImNvbC14cy00IiBoZWFkZXI9InRva2VuIj48L2Rpdj4n LAorICAgICAgICAnICAgPGRpdiBjbGFzcz0iY29sLXhzLTQiPicsCisgICAg ICAgICcgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1zbSBidG4tZGVmYXVsdCBh ZGQiIDwlPWNhbkFkZCA/ICIiIDogImRpc2FibGVkPVwnZGlzYWJsZWRcJyIl PiA+PCUtYWRkX2xhYmVsJT48L2J1dHR0b24+JywKKyAgICAgICAgJyAgIDwv ZGl2PicsCisgICAgICAgICcgIDwvZGl2PicsCisgICAgICAgICcgPC9kaXY+ JywKKyAgICAgICAgJzwvZGl2PicsXS5qb2luKCJcbiIpCisKKyAgICAgIF8u ZXh0ZW5kKGRhdGEsIHsKKyAgICAgICAgdG9rZW5fbGFiZWw6ICd7eyBfKCdU b2tlbnMnKX19JywKKyAgICAgICAgYWRkX2xhYmVsOiAne3sgXygnQUREJyl9 fScKKyAgICAgIH0pOworCisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAg ICAgICAgaGVhZGVyVG1wbCA9IF8udGVtcGxhdGUoaGVhZGVyKSwKKyAgICAg ICAgICAkaGVhZGVyID0gJChoZWFkZXJUbXBsKGRhdGEpKSwKKyAgICAgICAg ICBjb250cm9scyA9IHRoaXMuY29udHJvbHM7CisKKyAgICAgIHNlbGYuaGVh ZGVyRmllbGRzLmVhY2goZnVuY3Rpb24oZmllbGQpIHsKKyAgICAgICAgdmFy IGNvbnRyb2wgPSBuZXcgKGZpZWxkLmdldCgiY29udHJvbCIpKSh7CisgICAg ICAgICAgZmllbGQ6IGZpZWxkLAorICAgICAgICAgIG1vZGVsOiBzZWxmLmhl YWRlckRhdGEKKyAgICAgICAgfSk7CisKKyAgICAgICAgJGhlYWRlci5maW5k KCdkaXZbaGVhZGVyPSInICsgZmllbGQuZ2V0KCduYW1lJykgKyAnIl0nKS5h cHBlbmQoCisgICAgICAgICAgY29udHJvbC5yZW5kZXIoKS4kZWwKKyAgICAg ICAgKTsKKworICAgICAgICBjb250cm9sLiRlbC5maW5kKCcuY29udHJvbC1s YWJlbCcpLnJlbW92ZSgpOworICAgICAgICBjb250cm9scy5wdXNoKGNvbnRy b2wpOworICAgICAgfSk7CisKKyAgICAgIC8vIFdlIHNob3VsZCBub3Qgc2hv dyBhZGQgYnV0dG9uIGluIHByb3BlcnRpZXMgbW9kZQorICAgICAgaWYgKGRh dGEubW9kZSA9PSAncHJvcGVydGllcycpIHsKKyAgICAgICAgJGhlYWRlci5m aW5kKCJidXR0b24uYWRkIikucmVtb3ZlKCk7CisgICAgICB9CisKKyAgICAg IC8vIERpc2FibGUgYWRkIGJ1dHRvbiBpbiB0b2tlbiBjb250cm9sIGluIGNy ZWF0ZSBtb2RlCisgICAgICBpZihkYXRhLm1vZGUgPT0gJ2NyZWF0ZScpIHsK KyAgICAgICAgJGhlYWRlci5maW5kKCJidXR0b24uYWRkIikuYXR0cignZGlz YWJsZWQnLCB0cnVlKTsKKyAgICAgIH0KKworICAgICAgc2VsZi4kaGVhZGVy ID0gJGhlYWRlcjsKKyAgICAgIHJldHVybiAkaGVhZGVyOworICAgIH0sCisK KyAgICAvLyBQcm92aWRpbmcgZXZlbnQgaGFuZGxlciBmb3IgYWRkIGJ1dHRv biBpbiBoZWFkZXIKKyAgICBldmVudHM6IF8uZXh0ZW5kKAorICAgICAgICAg ICAgICB7fSwgQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wu cHJvdG90eXBlLmV2ZW50cywKKyAgICAgICAgICAgICAgeydjbGljayBidXR0 b24uYWRkJzogJ2FkZFRva2Vucyd9CisgICAgICAgICAgICApLAorCisgICAg Ly8gU2hvdyB0b2tlbi9kaWN0aW9uYXJ5IGdyaWQKKyAgICBzaG93R3JpZENv bnRyb2w6IGZ1bmN0aW9uKGRhdGEpIHsKKworICAgICAgdmFyIHNlbGYgPSB0 aGlzLAorICAgICAgICAgIHRpdGxlVG1wbCA9IF8udGVtcGxhdGUoIjxkaXYg Y2xhc3M9J3N1Ym5vZGUtaGVhZGVyJz48L2Rpdj4iKSwKKyAgICAgICAgICAk Z3JpZEJvZHkgPSAkKCI8ZGl2PjwvZGl2PiIsIHsKKyAgICAgICAgICAgIGNs YXNzOidwZ2FkbWluLWNvbnRyb2wtZ3JvdXAgYmFja2dyaWQgZm9ybS1ncm91 cCBjb2wteHMtMTIgb2JqZWN0IHN1Ym5vZGUnCisgICAgICAgICAgfSkuYXBw ZW5kKAorICAgICAgICAgICAgICAgdGl0bGVUbXBsKHtsYWJlbDogZGF0YS5s YWJlbH0pCisgICAgICAgICAgKTsKKworICAgICAgJGdyaWRCb2R5LmFwcGVu ZChzZWxmLmdlbmVyYXRlSGVhZGVyKGRhdGEpKTsKKworICAgICAgdmFyIGdy aWRDb2x1bW5zID0gXy5jbG9uZSh0aGlzLmdyaWRTY2hlbWEuY29sdW1ucyk7 CisKKyAgICAgIC8vIEluc2VydCBEZWxldGUgQ2VsbCBpbnRvIEdyaWQKKyAg ICAgIGlmIChkYXRhLmRpc2FibGVkID09IGZhbHNlICYmIGRhdGEuY2FuRGVs ZXRlKSB7CisgICAgICAgICAgZ3JpZENvbHVtbnMudW5zaGlmdCh7CisgICAg ICAgICAgICBuYW1lOiAicGctYmFja2Zvcm0tZGVsZXRlIiwgbGFiZWw6ICIi LAorICAgICAgICAgICAgY2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkRlbGV0 ZUNlbGwsCisgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIGNlbGxfcHJp b3JpdHk6IC0xCisgICAgICAgICAgfSk7CisgICAgICB9CisKKyAgICAgIGlm IChzZWxmLmdyaWQpIHsKKyAgICAgICAgc2VsZi5ncmlkLnJlbW92ZSgpOwor ICAgICAgICBzZWxmLmdyaWQubnVsbDsKKyAgICAgIH0KKyAgICAgIC8vIElu aXRpYWxpemUgYSBuZXcgR3JpZCBpbnN0YW5jZQorICAgICAgdmFyIGdyaWQg PSBzZWxmLmdyaWQgPSBuZXcgQmFja2dyaWQuR3JpZCh7CisgICAgICAgIGNv bHVtbnM6IGdyaWRDb2x1bW5zLAorICAgICAgICBjb2xsZWN0aW9uOiBzZWxm LmNvbGxlY3Rpb24sCisgICAgICAgIGNsYXNzTmFtZTogImJhY2tncmlkIHRh YmxlLWJvcmRlcmVkIgorICAgICAgfSk7CisgICAgICBzZWxmLiRncmlkID0g Z3JpZC5yZW5kZXIoKS4kZWw7CisKKyAgICAgICRncmlkQm9keS5hcHBlbmQo c2VsZi4kZ3JpZCk7CisKKyAgICAgIC8vIEZpbmQgc2VsZWN0ZWQgZGljdGlv bmFyaWVzIGluIGdyaWQgYW5kIHNob3cgaXQgYWxsIHRvZ2V0aGVyCisgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLmhlYWRl ckRhdGEuc2V0KHsKKyAgICAgICAgICAndG9rZW4nOiBzZWxmLiRoZWFkZXIu ZmluZCgKKyAgICAgICAgICAgICdkaXZbaGVhZGVyPSJ0b2tlbiJdIHNlbGVj dCcKKyAgICAgICAgICAgICkudmFsKCkKKyAgICAgICAgICAgIH0sIHtzaWxl bnQ6dHJ1ZX0KKyAgICAgICAgICApOworICAgICAgfSwgMTApOworCisgICAg ICAvLyBSZW5kZXIgbm9kZSBncmlkCisgICAgICByZXR1cm4gJGdyaWRCb2R5 OworICAgIH0sCisKKyAgICAvLyBXaGVuIHVzZXIgY2hhbmdlIHRoZSBoZWFk ZXIgY29udHJvbCB0byBhZGQgYSBuZXcgdG9rZW4KKyAgICBoZWFkZXJEYXRh Q2hhbmdlZDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc2VsZiA9IHRoaXMs IHZhbCwKKyAgICAgICAgICBkYXRhID0gdGhpcy5oZWFkZXJEYXRhLnRvSlNP TigpLAorICAgICAgICAgIGluU2VsZWN0ZWQgPSAoXy5pc0VtcHR5KGRhdGEp IHx8IF8uaXNVbmRlZmluZWQoZGF0YSkpLAorICAgICAgICAgIGNoZWNrVmFy cyA9IFsndG9rZW4nXTsKKworICAgICAgaWYgKCFzZWxmLiRoZWFkZXIpIHsK KyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBzZWxmLiRoZWFk ZXIuZmluZCgnYnV0dG9uLmFkZCcpLnByb3AoJ2Rpc2FibGVkJywgaW5TZWxl Y3RlZCk7CisgICAgfSwKKworICAgIC8vIEdldCBjYWxsZWQgd2hlbiB1c2Vy IGNsaWNrIG9uIGFkZCBidXR0b24gaGVhZGVyCisgICAgYWRkVG9rZW5zOiBm dW5jdGlvbihldikgeworICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKKyAg ICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICB0b2tlbiA9IHNlbGYu aGVhZGVyRGF0YS5nZXQoJ3Rva2VuJyk7CisKKyAgICAgIGlmICghdG9rZW4g fHwgdG9rZW4gPT0gJycpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgfQorCisgICAgICB2YXIgY29sbCA9IHNlbGYubW9kZWwuZ2V0KHNlbGYu ZmllbGQuZ2V0KCduYW1lJykpLAorICAgICAgICAgIG0gPSBuZXcgKHNlbGYu ZmllbGQuZ2V0KCdtb2RlbCcpKSgKKyAgICAgICAgICAgICAgICBzZWxmLmhl YWRlckRhdGEudG9KU09OKCksIHsKKyAgICAgICAgICAgICAgICAgIHNpbGVu dDogdHJ1ZSwgdG9wOiBzZWxmLm1vZGVsLnRvcCwKKyAgICAgICAgICAgICAg ICAgIGNvbGxlY3Rpb246IGNvbGwsIGhhbmRsZXI6IGNvbGwKKyAgICAgICAg ICAgICAgICB9KSwKKyAgICAgICAgICBjaGVja1ZhcnMgPSBbJ3Rva2VuJ10s CisgICAgICAgICAgaWR4ID0gLTE7CisKKyAgICAgIC8vIEZpbmQgaWYgdG9r ZW4gZXhpc3RzIGluIGdyaWQKKyAgICAgIHNlbGYuY29sbGVjdGlvbi5lYWNo KGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgXy5lYWNoKGNoZWNrVmFycywgZnVu Y3Rpb24odikgeworICAgICAgICAgIHZhbCA9IG0uZ2V0KHYpOworICAgICAg ICAgIGlmKHZhbCA9PSB0b2tlbikgeworICAgICAgICAgICAgaWR4ID0gY29s bC5pbmRleE9mKG0pOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg ICB9KTsKKworCisKKyAgICAgIC8vIHJlbW92ZSAnbScgaWYgZHVwbGljYXRl IHZhbHVlIGZvdW5kLgorICAgICAgaWYgKGlkeCA9PSAtMSkgeworICAgICAg ICBjb2xsLmFkZChtKTsKKyAgICAgICAgaWR4ID0gY29sbC5pbmRleE9mKG0p OworICAgICAgfQorICAgICAgc2VsZi4kZ3JpZC5maW5kKCcubmV3JykucmVt b3ZlQ2xhc3MoJ25ldycpOworICAgICAgdmFyIG5ld1JvdyA9IHNlbGYuZ3Jp ZC5ib2R5LnJvd3NbaWR4XS4kZWw7CisgICAgICBuZXdSb3cuYWRkQ2xhc3Mo Im5ldyIpOworICAgICAgLy8kKG5ld1JvdykucGdNYWtlVmlzaWJsZSgndGFi bGUtYm9yZGVyZWQnKTsKKyAgICAgICQobmV3Um93KS5wZ01ha2VWaXNpYmxl KCdiYWNrZm9ybS10YWInKTsKKworCisgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgfSwKKworICAgIC8vIFdoZW4gdXNlciBkZWxldGUgdG9rZW4vZGljdGlv bmFyeSBlbnRyeSBmcm9tIGdyaWQKKyAgICBvbkFkZG9yUmVtb3ZlVG9rZW5z OiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAg ICAgLyoKKyAgICAgICAqIFdhaXQgZm9yIGNvbGxlY3Rpb24gdG8gYmUgdXBk YXRlZCBiZWZvcmUgY2hlY2tpbmcgZm9yIHRoZSBidXR0b24gdG8KKyAgICAg ICAqIGJlIGVuYWJsZWQsIG9yIG5vdC4KKyAgICAgICAqLworICAgICAgc2V0 VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICBzZWxmLmNvbGxlY3Rp b24udHJpZ2dlcigncGdhZG1pbjp0b2tlbnM6dXBkYXRlZCcsIHNlbGYuY29s bGVjdGlvbik7CisgICAgICAgIHNlbGYuaGVhZGVyRGF0YUNoYW5nZWQoKTsK KyAgICAgIH0sIDEwKTsKKyAgICB9LAorCisgICAgLy8gV2hlbiBjb250cm9s IGlzIGFib3V0IHRvIGRlc3Ryb3kKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCkg eworICAgICAgLyoKKyAgICAgICAqIFN0b3AgbGlzdGVuaW5nIHRoZSBldmVu dHMgcmVnaXN0ZXJlZCBieSB0aGlzIGNvbnRyb2wuCisgICAgICAgKi8KKyAg ICAgIHRoaXMuc3RvcExpc3RlbmluZyh0aGlzLmhlYWRlckRhdGEsICJjaGFu Z2UiLCB0aGlzLmhlYWRlckRhdGFDaGFuZ2VkKTsKKyAgICAgIHRoaXMubGlz dGVuVG8odGhpcy5oZWFkZXJEYXRhLCAic2VsZWN0MiIsIHRoaXMuaGVhZGVy RGF0YUNoYW5nZWQpOworICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmNvbGxl Y3Rpb24sICJyZW1vdmUiLCB0aGlzLm9uQWRkb3JSZW1vdmVUb2tlbnMpOwor CisgICAgICBUb2tlbkNvbnRyb2wuX19zdXBlcl9fLnJlbW92ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOworCisgICAgICAvLyBSZW1vdmUgdGhlIGhlYWRl ciBtb2RlbAorICAgICAgZGVsZXRlICh0aGlzLmhlYWRlckRhdGEpOworCisg ICAgfQorICB9KTsKKworCisgIC8vIEV4dGVuZCB0aGUgY29sbGVjdGlvbiBj bGFzcyBmb3IgRlRTIENvbmZpZ3VyYXRpb24KKyAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nXSkgeworICAgIHZhciBm dHNfY29uZmlndXJhdGlvbnMgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Nv bGwtZnRzX2NvbmZpZ3VyYXRpb24nXSA9CisgICAgICBwZ0FkbWluLkJyb3dz ZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAnZnRzX2Nv bmZpZ3VyYXRpb24nLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ0ZUUyBDb25m aWd1cmF0aW9ucycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtZnRzX2Nv bmZpZ3VyYXRpb24nLAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVz Y3JpcHRpb24nXQorICAgICAgfSk7CisgIH07CisKKyAgLy8gRXh0ZW5kIHRo ZSBub2RlIGNsYXNzIGZvciBGVFMgQ29uZmlndXJhdGlvbgorICBpZiAoIXBn QnJvd3Nlci5Ob2Rlc1snZnRzX2NvbmZpZ3VyYXRpb24nXSkgeworICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX2NvbmZpZ3VyYXRpb24nXSA9IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBwYXJlbnRfdHlw ZTogWydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgICAgdHlwZTogJ2Z0c19j b25maWd1cmF0aW9uJywKKyAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRl cnRzY29uZmlnLmh0bWwnLAorICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1j cmVhdGV0c2NvbmZpZy5odG1sJywKKyAgICAgIGNhbkRyb3A6IHRydWUsCisg ICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKKyAgICAgIGxhYmVsOiAne3sg XygnRlRTIENvbmZpZ3VyYXRpb24nKSB9fScsCisgICAgICBoYXNTUUw6IHRy dWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgSW5pdDogZnVu Y3Rpb24oKSB7CisKKyAgICAgICAgLy8gQXZvaWQgbXVsdGlwbGUgcmVnaXN0 cmF0aW9uIG9mIG1lbnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVk KQorICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxp emVkID0gdHJ1ZTsKKworICAgICAgICAvLyBBZGQgY29udGV4dCBtZW51cyBm b3IgRlRTIENvbmZpZ3VyYXRpb24KKyAgICAgICAgcGdCcm93c2VyLmFkZF9t ZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZnRzX2NvbmZpZ3Vy YXRpb25fb25fc2NoZW1hJywgbm9kZTogJ3NjaGVtYScsCisgICAgICAgICAg bW9kdWxlOiB0aGlzLCBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0 LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBs YWJlbDogJ3t7XygnRlRTIENvbmZpZ3VyYXRpb24uLi4nKX19JywKKyAgICAg ICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZnRzX2NvbmZpZ3VyYXRpb24n LCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9LHsKKyAg ICAgICAgICBuYW1lOiAnY3JlYXRlX2Z0c19jb25maWd1cmF0aW9uX29uX2Nv bGwnLCBtb2R1bGU6IHRoaXMsIHByaW9yaXR5OiA0LAorICAgICAgICAgIG5v ZGU6ICdjb2xsLWZ0c19jb25maWd1cmF0aW9uJywgYXBwbGllczogWydvYmpl Y3QnLCAnY29udGV4dCddLAorICAgICAgICAgIGNhbGxiYWNrOiAnc2hvd19v YmpfcHJvcGVydGllcycsIGNhdGVnb3J5OiAnY3JlYXRlJywKKyAgICAgICAg ICBsYWJlbDogJ3t7IF8oJ0ZUUyBDb25maWd1cmF0aW9uLi4uJykgfX0nLCBk YXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLWZ0c19jb25maWd1cmF0aW9uJworICAgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZnRzX2NvbmZpZ3VyYXRpb24n LCBub2RlOiAnZnRzX2NvbmZpZ3VyYXRpb24nLAorICAgICAgICAgIG1vZHVs ZTogdGhpcywgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLAorICAg ICAgICAgIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsIGNhdGVn b3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsCisgICAgICAgICAgbGFiZWw6 ICd7e18oJ0ZUUyBDb25maWd1cmF0aW9uLi4uJyl9fScsIGRhdGE6IHthY3Rp b246ICdjcmVhdGUnfSwKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGlj b24tZnRzX2NvbmZpZ3VyYXRpb24nCisgICAgICAgICAgfV0pOworICAgICAg fSwKKworICAgICAgLy8gRGVmaW5pbmcgbW9kZWwgZm9yIEZUUyBDb25maWd1 cmF0aW9uIG5vZGUKKyAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9k ZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAgICAg ICAgIG5hbWU6IHVuZGVmaW5lZCwgICAgICAgIC8vIEZUUyBDb25maWd1cmF0 aW9uIG5hbWUKKyAgICAgICAgICBvd25lcjogdW5kZWZpbmVkLCAgICAgICAv LyBGVFMgQ29uZmlndXJhdGlvbiBvd25lcgorICAgICAgICAgIGRlc2NyaXB0 aW9uOiB1bmRlZmluZWQsIC8vIENvbW1lbnQgb24gRlRTIENvbmZpZ3VyYXRp b24KKyAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCwgICAgICAvLyBTY2hl bWEgbmFtZSBGVFMgQ29uZmlndXJhdGlvbiBiZWxvbmdzIHRvCisgICAgICAg ICAgcHJzbmFtZTogdW5kZWZpbmVkLCAgICAvLyBGVFMgcGFyc2VyIGxpc3Qg Zm9yIEZUUyBDb25maWd1cmF0aW9uIG5vZGUKKyAgICAgICAgICBjb3B5X2Nv bmZpZzogdW5kZWZpbmVkLCAvLyBGVFMgY29uZmlndXJhdGlvbiBsaXN0IHRv IGNvcHkgZnJvbQorICAgICAgICAgIHRva2VuczogdW5kZWZpbmVkICAgICAg Ly8gdG9rZW4vZGljdGlvbmFyeSBwYWlyIGxpc3QgZm9yIG5vZGUKKyAgICAg ICAgfSwKKyAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFy Z3MpIHsKKyAgICAgICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9 PT0gMCk7CisKKyAgICAgICAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAgICAg IHZhciB1c2VySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mubm9k ZV9pbmZvLnNlcnZlci5faWRdLnVzZXI7CisgICAgICAgICAgICB0aGlzLnNl dCh7J293bmVyJzogdXNlckluZm8ubmFtZX0sIHtzaWxlbnQ6IHRydWV9KTsK KyAgICAgICAgICB9CisgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUu TW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn c2NoZW1hJykpKSB7CisgICAgICAgICAgICAgIHRoaXMuc2V0KCdzY2hlbWEn LCB0aGlzLm5vZGVfaW5mby5zY2hlbWEuX2lkKTsKKyAgICAgICAgICB9Cisg ICAgICAgIH0sCisgICAgICAgIC8vIERlZmluaW5nIHNjaGVtYSBmb3IgRlRT IENvbmZpZ3VyYXRpb24KKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAg IGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBjZWxsSGVhZGVy Q2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBl OiAndGV4dCcsIGRpc2FibGVkOiB0cnVlLCBtb2RlOlsncHJvcGVydGllcydd CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnb3duZXInLCBsYWJlbDon e3sgXygnT3duZXInKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAg IHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCdj cmVhdGUnXSwgbm9kZTogJ3JvbGUnLAorICAgICAgICAgIGNvbnRyb2w6IEJh Y2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbAorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ3NjaGVtYScsIGxhYmVsOiAne3sgXygnU2NoZW1hJyl9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg bW9kZTogWydjcmVhdGUnLCdlZGl0J10sIG5vZGU6ICdzY2hlbWEnLAorICAg ICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktaWQnCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygn Q29tbWVudCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlw ZTogJ211bHRpbGluZScsIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF81MCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwcnNuYW1l JywgbGFiZWw6ICd7eyBfKCdQYXJzZXInKX19Jyx0eXBlOiAndGV4dCcsCisg ICAgICAgICAgdXJsOiAncGFyc2VycycsIGZpcnN0X2VtcHR5OiB0cnVlLAor ICAgICAgICAgIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgY29u dHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgICBkZXBzOiBb J2NvcHlfY29uZmlnJ10sCisgICAgICAgICAgLy9kaXNhYmxlIHBhcnNlciB3 aGVuIHVzZXIgc2VsZWN0IGNvcHlfY29uZmlnIG1hbnVhbGx5IGFuZCB2aWNh LXZlcnNhCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgIHZhciBjb3B5X2NvbmZpZyA9IG0uZ2V0KCdjb3B5X2NvbmZp ZycpOworICAgICAgICAgICAgcmV0dXJuIG0uaXNOZXcoKSAmJgorICAgICAg ICAgICAgICAgICAgICAoXy5pc051bGwoY29weV9jb25maWcpIHx8CisgICAg ICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQoY29weV9jb25maWcpIHx8 CisgICAgICAgICAgICAgICAgICAgIGNvcHlfY29uZmlnID09PSAnJykgPyBm YWxzZSA6IHRydWU7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2NvcHlfY29uZmlnJywgbGFiZWw6ICd7eyBfKCdDb3B5IENv bmZpZycpfX0nLHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBtb2RlOiBbJ2Ny ZWF0ZSddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAg ICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAnY29w eUNvbmZpZycsIGRlcHM6IFsncHJzbmFtZSddLAorCisgICAgICAgICAgLy9k aXNhYmxlIGNvcHlfY29uZmlnIHdoZW4gdXNlciBzZWxlY3QgcGFyc2VyIG1h bnVhbGx5IGFuZCB2aWNhLXZlcnNhCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHZhciBwYXJzZXIgPSBtLmdldCgn cHJzbmFtZScpOworICAgICAgICAgICAgcmV0dXJuIG0uaXNOZXcoKSAmJgor ICAgICAgICAgICAgICAgICAgICAoXy5pc051bGwocGFyc2VyKSB8fAorICAg ICAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHBhcnNlcikgfHwKKyAg ICAgICAgICAgICAgICAgICAgcGFyc2VyID09PSAnJykgPyBmYWxzZSA6IHRy dWU7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J3Rva2VucycsIGxhYmVsOiAne3sgXygnVG9rZW5zJykgfX0nLCB0eXBlOiAn Y29sbGVjdGlvbicsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdUb2tlbnMn KSB9fScsIGNvbnRyb2w6IFRva2VuQ29udHJvbCwKKyAgICAgICAgICBtb2Rl bDogVG9rZW5Nb2RlbCwgY29sdW1uczogWyd0b2tlbicsICdkaWN0aW9uYXJ5 J10sCisgICAgICAgICAgdW5pcXVlQ29sIDogWyd0b2tlbiddLCBtb2RlOiBb J2NyZWF0ZScsJ2VkaXQnXSwKKyAgICAgICAgICBjYW5BZGQ6IHRydWUsIGNh bkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IHRydWUKKyAgICAgICAgIH1dLAor CisgICAgICAgIC8qCisgICAgICAgICAqIFRyaWdnZXJzIGNvbnRyb2wgc3Bl Y2lmaWMgZXJyb3IgbWVzc2FnZXMgZm9yIG5hbWUsCisgICAgICAgICAqIGNv cHlfY29uZmlnL3BhcnNlciBhbmQgc2NoZW1hLCBpZiBhbnkgb25lIG9mIHRo ZW0gaXMgbm90IHNwZWNpZmllZAorICAgICAgICAgKiB3aGlsZSBjcmVhdGlu ZyBuZXcgZnRzIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICovCisgICAgICAg IHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKXsKKyAgICAgICAgICB2YXIgbXNn OworICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXQoJ25hbWUnKTsKKyAg ICAgICAgICB2YXIgcGFyc2VyID0gdGhpcy5nZXQoJ3Byc25hbWUnKTsKKyAg ICAgICAgICB2YXIgY29weV9jb25maWdfb3JfcGFyc2VyID0gIShwYXJzZXIg PT09ICcnIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXy5pc1VuZGVmaW5lZChwYXJzZXIpIHx8CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc051bGwocGFyc2VyKSkg PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo aXMuZ2V0KCdwcnNuYW1lJykgOiB0aGlzLmdldCgnY29weV9jb25maWcnKTsK KyAgICAgICAgICB2YXIgc2NoZW1hID0gdGhpcy5nZXQoJ3NjaGVtYScpOwor CisgICAgICAgICAgLy8gQ2xlYXIgdGhlIGV4aXN0aW5nIGVycm9yIG1vZGVs CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAg ICAgdGhpcy50cmlnZ2VyKCdvbi1zdGF0dXMtY2xlYXInKTsKKworICAgICAg ICAgIC8vIFZhbGlkYXRlIHRoZSBuYW1lCisgICAgICAgICAgaWYgKF8uaXNV bmRlZmluZWQobmFtZSkgfHwKKyAgICAgICAgICAgICAgXy5pc051bGwobmFt ZSkgfHwKKyAgICAgICAgICAgICAgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7 eyBfKCdOYW1lIG11c3QgYmUgc3BlY2lmaWVkIScpIH19JzsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOworICAgICAg ICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAv LyBWYWxpZGF0ZSBwYXJzZXIgb3IgY29weV9jb25maWcKKyAgICAgICAgICBl bHNlIGlmIChfLmlzVW5kZWZpbmVkKGNvcHlfY29uZmlnX29yX3BhcnNlcikg fHwKKyAgICAgICAgICAgICAgICAgICBfLmlzTnVsbChjb3B5X2NvbmZpZ19v cl9wYXJzZXIpIHx8CisgICAgICAgICAgICAgICAgICAgU3RyaW5nKGNvcHlf Y29uZmlnX29yX3BhcnNlcikucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1NlbGVjdCBwYXJz ZXIgb3IgY29uZmlndXJhdGlvbiB0byBjb3B5IScpIH19JzsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3BhcnNlcicsIG1zZyk7CisgICAg ICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKworICAgICAgICAg IC8vIFZhbGlkYXRlIHNjaGVtYQorICAgICAgICAgIGVsc2UgaWYgKF8uaXNV bmRlZmluZWQoc2NoZW1hKSB8fAorICAgICAgICAgICAgICAgICAgIF8uaXNO dWxsKHNjaGVtYSkgfHwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcoc2No ZW1hKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAg ICAgICAgICBtc2cgPSAne3sgXygnU2NoZW1hIG11c3QgYmUgc2VsZWN0ZWQh JykgfX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc2No ZW1hJywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAg ICAgfQorCisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAg ICAgIH0pCisgICAgfSk7CisgIH0KKworcmV0dXJuIHBnQnJvd3Nlci5Ob2Rl c1snY29sbC1mdHNfY29uZmlndXJhdGlvbiddOworfSk7ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9zcWwvOS4xX3BsdXMvY29weV9jb25maWcuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJh dGlvbi9zcWwvOS4xX3BsdXMvY29weV9jb25maWcuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NGZjMDAKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVt cGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9jb3B5X2Nv bmZpZy5zcWwKQEAgLTAsMCArMSwxNSBAQAoreyMgRkVUQ0ggY29weSBjb25m aWcgZm9yIEZUUyBDT05GSUdVUkFUSU9OICN9Cit7JSBpZiBjb3B5X2NvbmZp ZyAlfQorU0VMRUNUCisgICAgY2ZnLm9pZCwKKyAgICBjZmduYW1lLAorICAg IG5zcG5hbWUsCisgICAgbi5vaWQgYXMgc2NoZW1hb2lkCitGUk9NCisgICAg cGdfdHNfY29uZmlnIGNmZworICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4KKyAg ICBPTiBuLm9pZD1jZmduYW1lc3BhY2UKK09SREVSIEJZCisgICAgbnNwbmFt ZSwKKyAgICBjZmduYW1lCit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29u ZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85 LjFfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjI2ZDc5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25m aWd1cmF0aW9uL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEs MTUgQEAKK3sjIENSRUFURSBGVFMgQ09ORklHVVJBVElPTiBTdGF0ZW1lbnQg I30KK3slIGlmIGRhdGEgYW5kIGRhdGEuc2NoZW1hIGFuZCBkYXRhLm5hbWUg JX0KK0NSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7IGNvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fSAoCit7JSBpZiAn Y29weV9jb25maWcnIGluIGRhdGEgJX0KKyAgICBDT1BZPXt7IGRhdGEuY29w eV9jb25maWcgfX0KK3slIGVsaWYgJ3Byc25hbWUnIGluIGRhdGEgJX0KKyAg ICBQQVJTRVIgPSB7eyBkYXRhLnByc25hbWUgfX0KK3slIGVuZGlmICV9Cisp OworeyMgRGVzY3JpcHRpb24gZm9yIEZUU19DT05GSUdVUkFUSU9OICN9CisK K3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQgT04gVEVYVCBT RUFSQ0ggQ09ORklHVVJBVElPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEubmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0aW9u fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9eyUgZW5kaWYgJX0KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1 cmF0aW9uL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJh dGlvbi9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4wMDUyZjYxCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApA QCAtMCwwICsxLDQgQEAKK3sjIERST1AgRlRTIENPTkZJR1VSQVRJT04gU3Rh dGVtZW50ICN9Cit7JSBpZiBzY2hlbWEgYW5kIG5hbWUgJX0KK0RST1AgVEVY VCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58cXRJZGVudChzY2hlbWEp fX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fSB7JSBpZiBjYXNjYWRlICV9Q0FT Q0FERXslZW5kaWYlfTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwv OS4xX3BsdXMvZGljdGlvbmFyaWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24v c3FsLzkuMV9wbHVzL2RpY3Rpb25hcmllcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlN2IwZgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0 ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2RpY3Rpb25hcmll cy5zcWwKQEAgLTAsMCArMSw3IEBACit7IyBGRVRDSCBESUNUSU9OQVJJRVMg c3RhdGVtZW50ICN9CitTRUxFQ1QKKyAgICBkaWN0bmFtZQorRlJPTQorICAg IHBnX3RzX2RpY3QKK09SREVSIEJZCisgICAgZGljdG5hbWUKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzOGI4YwotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0 ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2dldF9uYW1lLnNx bApAQCAtMCwwICsxLDE3IEBACit7IyBHRVQgRlRTIENPTkZJR1VSQVRJT04g bmFtZSAjfQoreyUgaWYgY2ZnaWQgJX0KK1NFTEVDVAorICAgIGNmZy5jZmdu YW1lIGFzIG5hbWUsCisgICAgKAorICAgIFNFTEVDVAorICAgICAgICBuc3Bu YW1lCisgICAgRlJPTQorICAgICAgICBwZ19uYW1lc3BhY2UKKyAgICBXSEVS RQorICAgICAgICBvaWQgPSBjZmcuY2ZnbmFtZXNwYWNlCisgICAgKSBhcyBz Y2hlbWEKK0ZST00KKyAgICBwZ190c19jb25maWcgY2ZnCitXSEVSRQorICAg IGNmZy5vaWQgPSB7e2NmZ2lkfX06Ok9JRDsKK3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVt cGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9ub2Rlcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM1MGFjYgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1 cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9w bHVzL25vZGVzLnNxbApAQCAtMCwwICsxLDEzIEBACit7IyBGRVRDSCBGVFMg Q09ORklHVVJBVElPTiBOQU1FIHN0YXRlbWVudCAjfQorU0VMRUNUCisgICAg b2lkLCBjZmduYW1lIGFzIG5hbWUKK0ZST00KKyAgICBwZ190c19jb25maWcg Y2ZnCitXSEVSRQoreyUgaWYgc2NpZCAlfQorICAgIGNmZy5jZmduYW1lc3Bh Y2UgPSB7e3NjaWR9fTo6T0lECit7JSBlbGlmIGNmZ2lkICV9CisgICAgY2Zn Lm9pZCA9IHt7Y2ZnaWR9fTo6T0lECit7JSBlbmRpZiAlfQorCitPUkRFUiBC WSBuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvcGFyc2VyLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMv ZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3BhcnNlci5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjYTljOQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVz L3BhcnNlci5zcWwKQEAgLTAsMCArMSwyNCBAQAoreyMgUEFSU0VSIG5hbWUg ZnJvbSBGVFMgQ09ORklHVVJBVElPTiBPSUQgI30KK3slIGlmIGNmZ2lkICV9 CitTRUxFQ1QKKyAgICBjZmdwYXJzZXIKK0ZST00KKyAgICBwZ190c19jb25m aWcKK3doZXJlCisgICAgb2lkID0ge3tjZmdpZH19OjpPSUQKK3slIGVuZGlm ICV9CisKKworeyMgUEFSU0VSIGxpc3QgI30KK3slIGlmIHBhcnNlciAlfQor U0VMRUNUCisgICAgcHJzbmFtZSwKKyAgICBuc3BuYW1lLAorICAgIG4ub2lk IGFzIHNjaGVtYW9pZAorRlJPTQorICAgIHBnX3RzX3BhcnNlcgorICAgIEpP SU4gcGdfbmFtZXNwYWNlIG4KKyAgICBPTiBuLm9pZD1wcnNuYW1lc3BhY2UK K09SREVSIEJZCisgICAgcHJzbmFtZTsKK3slIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1w bGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3Byb3BlcnRp ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEy ZjM3NmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDI1IEBACit7 IyBGRVRDSCBwcm9wZXJ0aWVzIGZvciBGVFMgQ09ORklHVVJBVElPTiAjfQor U0VMRUNUCisgICAgY2ZnLm9pZCwKKyAgICBjZmcuY2ZnbmFtZSBhcyBuYW1l LAorICAgIHBnX2dldF91c2VyYnlpZChjZmcuY2Znb3duZXIpIGFzIG93bmVy LAorICAgIGNmZy5jZmdwYXJzZXIgYXMgcGFyc2VyLAorICAgIGNmZy5jZmdu YW1lc3BhY2UgYXMgc2NoZW1hLAorICAgIHBhcnNlci5wcnNuYW1lIGFzIHBy c25hbWUsCisgICAgZGVzY3JpcHRpb24KK0ZST00KKyAgICBwZ190c19jb25m aWcgY2ZnCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3RzX3BhcnNlciBwYXJz ZXIKKyAgICBPTiBwYXJzZXIub2lkPWNmZy5jZmdwYXJzZXIKKyAgICBMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzCisgICAgT04gKGRlcy5v YmpvaWQ9Y2ZnLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190c19jb25maWcn OjpyZWdjbGFzcykKK1dIRVJFCit7JSBpZiBzY2lkICV9CisgICAgY2ZnLmNm Z25hbWVzcGFjZSA9IHt7c2NpZH19OjpPSUQKK3slIGVsaWYgbmFtZSAlfQor ICAgIGNmZy5jZmduYW1lID0ge3tuYW1lfHF0TGl0ZXJhbH19Cit7JSBlbmRp ZiAlfQoreyUgaWYgY2ZnaWQgJX0KKyAgICBBTkQgY2ZnLm9pZCA9IHt7Y2Zn aWR9fTo6T0lECit7JSBlbmRpZiAlfQorT1JERVIgQlkgY2ZnLmNmZ25hbWUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3Nj aGVtYS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9zY2hl bWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1 NmNlYjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsMTkgQEAKK3sjIEZF VENIIHN0YXRlbWVudCBmb3IgU0NIRU1BIG5hbWUgI30KK3slIGlmIGRhdGEu c2NoZW1hICV9CitTRUxFQ1QKKyAgICBuc3BuYW1lCitGUk9NCisgICAgcGdf bmFtZXNwYWNlCitXSEVSRQorICAgIG9pZCA9IHt7ZGF0YS5zY2hlbWF9fTo6 T0lECisKK3slIGVsaWYgZGF0YS5pZCAlfQorU0VMRUNUCisgICAgbnNwbmFt ZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AKKyAgICBMRUZUIEpPSU4g cGdfdHNfY29uZmlnIGNmZworICAgIE9OIGNmZy5jZmduYW1lc3BhY2UgPSBu c3Aub2lkCitXSEVSRQorICAgIGNmZy5vaWQgPSB7e2RhdGEuaWR9fTo6T0lE Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90 ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3NxbC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9zcWwuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMTMwN2QKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJh dGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1 cy9zcWwuc3FsCkBAIC0wLDAgKzEsNzUgQEAKK3sjIFJFVkVSU0VEIEVOR0lO RUVSRUQgU1FMIEZPUiBGVFMgQ09ORklHVVJBVElPTiAjfQoreyUgaWYgY2Zn aWQgYW5kIHNjaWQgJX0KK1NFTEVDVAorICAgIGFycmF5X3RvX3N0cmluZyhh cnJheV9hZ2coc3FsKSwgRSdcblxuJykgYXMgc3FsCitGUk9NCisgICAgKAor ICAgIFNFTEVDVAorICAgICAgICBFJy0tIFRleHQgU2VhcmNoIENPTkZJR1VS QVRJT046ICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgRScuJworICAg ICAgICB8fCBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAgICAgICAg RSdcblxuLS0gRFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICcgfHwg cXVvdGVfaWRlbnQobnNwbmFtZSkgfHwKKyAgICAgICAgRScuJyB8fCBxdW90 ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAgICAgICAgRSdcblxuQ1JFQVRF IFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJyB8fCBxdW90ZV9pZGVudChu c3BuYW1lKSB8fAorICAgICAgICBFJy4nIHx8ICBxdW90ZV9pZGVudChjZmcu Y2ZnbmFtZSkgfHwgRScgKFxuJyB8fAorICAgICAgICBFJ1x0UEFSU0VSID0g JyB8fCBwYXJzZXJuYW1lIHx8CisgICAgICAgIEUnXG4pOycgfHwKKyAgICAg ICAgQ0FTRQorICAgICAgICAgICAgV0hFTiBkZXNjcmlwdGlvbiBJUyBOT1Qg TlVMTCBUSEVOCisgICAgICAgICAgICAgICAgRSdcblxuQ09NTUVOVCBPTiBU RVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICcgfHwKKyAgICAgICAgICAgICAg ICBxdW90ZV9pZGVudChuc3BuYW1lKSB8fCBFJy4nIHx8IHF1b3RlX2lkZW50 KGNmZy5jZmduYW1lKSB8fAorICAgICAgICAgICAgICAgIEUnIElTICcgfHwg cGdfY2F0YWxvZy5xdW90ZV9saXRlcmFsKGRlc2NyaXB0aW9uKSB8fCBFJzsn CisgICAgICAgICAgICBFTFNFICcnCisgICAgICAgIEVORCB8fAorICAgICAg ICAoCisgICAgICAgIFNFTEVDVCBhcnJheSgKKwkgICAgICAgIFNFTEVDVAor CSAgICAgICAgICAgICdBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9O ICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwKKwkgICAgICAgICAgICBF Jy4nIHx8IHF1b3RlX2lkZW50KGNmZy5jZmduYW1lKSB8fCAnIEFERCBNQVBQ SU5HIEZPUiAnIHx8CisJICAgICAgICAgICAgdC5hbGlhcyAgfHwgJyBXSVRI ICcgfHwKKwkgICAgICAgICAgICBhcnJheV90b19zdHJpbmcoYXJyYXlfYWdn KGRpY3QuZGljdG5hbWUpLCAnLCAnKSB8fCAnOycKKyAgICAgICAgICAgIEZS T00KKyAgICAgICAgICAgICAgICBwZ190c19jb25maWdfbWFwIG1hcAorICAg ICAgICAgICAgICAgIExFRlQgSk9JTiAoCisgICAgICAgICAgICAgICAgICAg ICAgICAgIFNFTEVDVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9raWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhcwor ICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnRzX3Rva2VuX3R5cGUoY2Zn LmNmZ3BhcnNlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSB0IE9O ICh0LnRva2lkID0gbWFwLm1hcHRva2VudHlwZSkKKyAgICAgICAgICAgICAg ICBMRUZUIE9VVEVSIEpPSU4gcGdfdHNfZGljdCBkaWN0IE9OIChtYXAubWFw ZGljdCA9IGRpY3Qub2lkKQorICAgICAgICAgICAgV0hFUkUKKyAgICAgICAg ICAgICAgICBtYXAubWFwY2ZnID0gY2ZnLm9pZAorICAgICAgICAgICAgR1JP VVAgQlkgdC5hbGlhcworICAgICAgICAgICAgT1JERVIgQlkgdC5hbGlhcykK KyAgICAgICAgKSBhcyBzcWwKKyAgICBGUk9NCisgICAgICAgIHBnX3RzX2Nv bmZpZyBjZmcKKyAgICBMRUZUIEpPSU4gKAorICAgICAgICBTRUxFQ1QKKyAg ICAgICAgICAgIGRlcy5kZXNjcmlwdGlvbiBhcyBkZXNjcmlwdGlvbiwKKyAg ICAgICAgICAgIGRlcy5vYmpvaWQgYXMgZGVzY29pZAorICAgICAgICBGUk9N CisgICAgICAgICAgICBwZ19kZXNjcmlwdGlvbiBkZXMKKyAgICAgICAgV0hF UkUKKyAgICAgICAgICAgIGRlcy5vYmpvaWQ9e3tjZmdpZH19OjpPSUQgQU5E IGRlcy5jbGFzc29pZD0ncGdfdHNfY29uZmlnJzo6cmVnY2xhc3MKKyAgICAp IGEgT04gKGEuZGVzY29pZCA9IGNmZy5vaWQpCisgICAgTEVGVCBKT0lOICgK KyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBuc3BuYW1lLAorICAgICAg ICAgICAgbnNwLm9pZCBhcyBub2lkCisgICAgICAgIEZST00KKyAgICAgICAg ICAgIHBnX25hbWVzcGFjZSBuc3AKKyAgICAgICAgV0hFUkUKKyAgICAgICAg ICAgIG9pZCA9IHt7c2NpZH19OjpPSUQKKyAgICApIGIgT04gKGIubm9pZCA9 IGNmZy5jZmduYW1lc3BhY2UpCisgICAgTEVGVCBKT0lOKAorICAgICAgICBT RUxFQ1QKKyAgICAgICAgICAgIHBycy5wcnNuYW1lIGFzIHBhcnNlcm5hbWUs CisgICAgICAgICAgICBwcnMub2lkIGFzIG9pZAorICAgICAgICBGUk9NCisg ICAgICAgICAgICBwZ190c19wYXJzZXIgcHJzCisgICAgKWMgT04gKGMub2lk ID0gY2ZnLmNmZ3BhcnNlcikKKyAgICBXSEVSRQorICAgICAgIGNmZy5vaWQ9 e3tjZmdpZH19OjpPSUQKKyAgICApIGU7Cit7JSBlbmRpZiAlfQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3Vy YXRpb24vc3FsLzkuMV9wbHVzL3Rva2VuRGljdExpc3Quc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdG9rZW5EaWN0TGlzdC5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhMmQ1YgotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVz L3Rva2VuRGljdExpc3Quc3FsCkBAIC0wLDAgKzEsMjMgQEAKK3sjIEZldGNo IHRva2VuL2RpY3Rpb25hcnkgbGlzdCBmb3IgRlRTIENPTkZJR1VSQVRJT04g I30KK3slIGlmIGNmZ2lkICV9CitTRUxFQ1QKKyAgICAoCisgICAgU0VMRUNU CisgICAgICAgIHQuYWxpYXMKKyAgICBGUk9NCisgICAgICAgIHBnX2NhdGFs b2cudHNfdG9rZW5fdHlwZShjZmdwYXJzZXIpIEFTIHQKKyAgICBXSEVSRQor ICAgICAgICB0LnRva2lkID0gbWFwdG9rZW50eXBlCisgICAgKSBBUyB0b2tl biwKKyAgICBhcnJheV9hZ2coZGljdG5hbWUpIEFTIGRpY3RuYW1lCitGUk9N CisgICAgcGdfdHNfY29uZmlnX21hcAorICAgIExFRlQgT1VURVIgSk9JTiBw Z190c19jb25maWcgT04gbWFwY2ZnID0gcGdfdHNfY29uZmlnLm9pZAorICAg IExFRlQgT1VURVIgSk9JTiBwZ190c19kaWN0IE9OIG1hcGRpY3QgPSBwZ190 c19kaWN0Lm9pZAorV0hFUkUKKyAgICBtYXBjZmc9e3tjZmdpZH19OjpPSUQK K0dST1VQIEJZCisgICAgdG9rZW4KK09SREVSIEJZCisgICAgMQoreyUgZW5k aWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVz L2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy90b2tlbnMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9m dHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdG9rZW5zLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBjNWViCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRp b25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMv dG9rZW5zLnNxbApAQCAtMCwwICsxLDEwIEBACit7IyBUb2tlbnMgZm9yIEZU UyBDT05GSUdVUkFUSU9OIG5vZGUgI30KKworeyUgaWYgcGFyc2Vyb2lkICV9 CitTRUxFQ1QKKyAgICBhbGlhcworRlJPTQorICAgIHRzX3Rva2VuX3R5cGUo e3twYXJzZXJvaWR9fTo6T0lEKQorT1JERVIgQlkKKyAgICBhbGlhcworeyUg ZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy91cGRhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzU5OWY4Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3Vy YXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3Bs dXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDUxIEBACit7IyBVUERBVEUgc3Rh dGVtZW50IGZvciBGVFMgQ09ORklHVVJBVElPTiAjfQoreyUgaWYgZGF0YSAl fQoreyUgc2V0IG5hbWUgPSBvX2RhdGEubmFtZSAlfQoreyUgc2V0IHNjaGVt YSA9IG9fZGF0YS5zY2hlbWEgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0 YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgbmFtZSA9IGRhdGEu bmFtZSAlfQorQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nv bm58cXRJZGVudChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG9f ZGF0YS5uYW1lKX19CisgICAgUkVOQU1FIFRPIHt7Y29ubnxxdElkZW50KGRh dGEubmFtZSl9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmICd0b2tlbnMnIGlu IGRhdGEgJX0KK3slIGlmJ2NoYW5nZWQnIGluIGRhdGEudG9rZW5zICV9Cit7 JSBmb3IgdG9rIGluIGRhdGEudG9rZW5zLmNoYW5nZWQgJX0KK0FMVEVSIFRF WFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tjb25ufHF0SWRlbnQob19kYXRh LnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChuYW1lKX19CisgICAgQUxURVIg TUFQUElORyBGT1Ige3t0b2sudG9rZW59fQorICAgIFdJVEggeyUgZm9yIGRp Y3QgaW4gdG9rLmRpY3RuYW1lICV9e3tkaWN0fX17JSBpZiBub3QgbG9vcC5s YXN0ICV9LCB7JSBlbmRpZiAlfXslIGVuZGZvciAlfTsKKworeyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYnYWRkZWQnIGluIGRhdGEudG9rZW5z ICV9Cit7JSBmb3IgdG9rIGluIGRhdGEudG9rZW5zLmFkZGVkICV9CitBTFRF UiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29ubnxxdElkZW50KG9f ZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fQorICAgIEFE RCBNQVBQSU5HIEZPUiB7e3Rvay50b2tlbn19CisgICAgV0lUSCB7JSBmb3Ig ZGljdCBpbiB0b2suZGljdG5hbWUgJX17e2RpY3R9fXslIGlmIG5vdCBsb29w Lmxhc3QgJX0sIHslIGVuZGlmICV9eyUgZW5kZm9yICV9OworCit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZidkZWxldGVkJyBpbiBkYXRhLnRv a2VucyAlfQoreyUgZm9yIHRvayBpbiBkYXRhLnRva2Vucy5kZWxldGVkICV9 CitBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29ubnxxdElk ZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fQor ICAgIERST1AgTUFQUElORyBGT1Ige3t0b2sudG9rZW59fTsKKworeyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdvd25l cicgaW4gZGF0YSBhbmQgZGF0YS5vd25lciAhPSBvX2RhdGEub3duZXIgJX0K K0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tjb25ufHF0SWRl bnQob19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChuYW1lKX19Cisg ICAgT1dORVIgVE8ge3tkYXRhLm93bmVyfX07CisKK3slIGVuZGlmICV9Cit7 JSBpZiAnc2NoZW1hJyBpbiBkYXRhIGFuZCBkYXRhLnNjaGVtYSAhPSBvX2Rh dGEuc2NoZW1hICV9Cit7JSBzZXQgc2NoZW1hID0gZGF0YS5zY2hlbWElfQor QUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58cXRJZGVu dChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUpfX0KKyAg ICBTRVQgU0NIRU1BIHt7ZGF0YS5zY2hlbWF9fTsKKworeyUgZW5kaWYgJX0K K3slIGlmICdkZXNjcmlwdGlvbicgaW4gZGF0YSBhbmQgZGF0YS5kZXNjcmlw dGlvbiAhPSBvX2RhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQgT04gVEVY VCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58cXRJZGVudChzY2hlbWEp fX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fQorICAgIElTIHt7IGRhdGEuZGVz Y3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMKaW5kZXgg OGJmNzFkYy4uN2U4NDkzNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcworKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpLmpzCkBAIC01MDQsNiArNTA0LDM1 IEBAIGZ1bmN0aW9uKCQsIF8sIHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZm9y bSwgQWxlcnRpZnksIE5vZGUpIHsKICAgICB9KQogICB9KTsKIAorICAgIC8v IEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUgbW9kZWwgY2xhc3MgdG8gY3Jl YXRlIGEgb3B0aW9uL3ZhbHVlIHBhaXIKKyAgdmFyIE11bHRpU2VsZWN0QWph eENlbGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24uTXVsdGlTZWxlY3RBamF4Q2Vs bCA9IEJhY2tncmlkLkV4dGVuc2lvbi5Ob2RlQWpheE9wdGlvbnNDZWxsLmV4 dGVuZCh7CisgICAgZGVmYXVsdHM6IF8uZXh0ZW5kKHt9LCBOb2RlQWpheE9w dGlvbnNDZWxsLnByb3RvdHlwZS5kZWZhdWx0cywgeworICAgICAgdHJhbnNm b3JtOiB1bmRlZmluZWQsCisgICAgICB1cmxfd2l0aF9pZDogZmFsc2UsCisg ICAgICBzZWxlY3QyOiB7CisgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisg ICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGZyb20gdGhlIGxpc3QnLAor ICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAgICAgICAgbXVsdGlwbGU6IHRy dWUKKyAgICAgIH0sCisgICAgICBvcHQ6IHsKKyAgICAgICAgbGFiZWw6IG51 bGwsCisgICAgICAgIHZhbHVlOiBudWxsLAorICAgICAgICBpbWFnZTogbnVs bCwKKyAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlCisgICAgICAgfQorICAgIH0p LAorICAgIGdldFZhbHVlRnJvbURPTTogZnVuY3Rpb24oKSB7CisgICAgICB2 YXIgcmVzID0gW107CisKKyAgICAgIHRoaXMuJGVsLmZpbmQoInNlbGVjdCIp LmZpbmQoJzpzZWxlY3RlZCcpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAg IHJlcy5wdXNoKCQodGhpcykuYXR0cigndmFsdWUnKSk7CisgICAgICB9KTsK KworICAgICAgcmV0dXJuIHJlczsKKyAgICB9LAorICB9KTsKKwogICAvKgog ICAgKiBDb250cm9sIHRvIHNlbGVjdCBtdWx0aXBsZSBjb2x1bW5zLgogICAg Ki8K --001a11379e04e269830532f6254f 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 --001a11379e04e269830532f6254f--