Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b19PJ-0004qC-Bt for pgadmin-hackers@arkaria.postgresql.org; Fri, 13 May 2016 09:29:17 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b19PH-0005jZ-If for pgadmin-hackers@arkaria.postgresql.org; Fri, 13 May 2016 09:29:15 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b19Oz-0005UT-0q for pgadmin-hackers@postgresql.org; Fri, 13 May 2016 09:28:57 +0000 Received: from mail-vk0-x22d.google.com ([2607:f8b0:400c:c05::22d]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b19Ot-0006no-KO for pgadmin-hackers@postgresql.org; Fri, 13 May 2016 09:28:55 +0000 Received: by mail-vk0-x22d.google.com with SMTP id f66so130235180vkh.2 for ; Fri, 13 May 2016 02:28:51 -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; bh=YUy41jLlS7AN7nx+2RGJpdu5xk5dSg8DgCecB9MKgsI=; b=XpYHsV+Sa0jWS9e7798OMj93si3IINApxk6HF+pJdvq+UUwS+MSaWboJyi5yXG44G6 DG60bvBnaCEOFvtu+PTkijxhIACcNzFD+IlVUuzmqDhFPK2uk0dMmpRF2sBqSrEt/vXw WbzM6Dxl0auXbplpA+dLh2zilYgGIiNiQ1uOrdfbNNIQxawTx4ZviGhqOL9InWb8ZHI4 KzRg9678iIxoVOLjEoKb+o6H3x+POStZ0zWjzp9+TZ30ksHXVGYSFf85Yh/kdCK5DIFN J+YlRy/ehSlZ7Wulwqd6ZP0Ld8oz7AqXemL6fkbf364i/CsISJDIZhq1yokj4HD/Z6Rc TsPg== 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; bh=YUy41jLlS7AN7nx+2RGJpdu5xk5dSg8DgCecB9MKgsI=; b=SsetNM+XvVTnN76XEF35ABVO0wvBhtvu2dnfo2M7JY1m0oIuC1nL2SSby575PJYefr TLQjZZo3KkVJczN0qsuhEKmJYq3StGRqDNBngFYg/7ShbjWH4nWtt1+qea8KMwmSH8Iz MEnWhOxhztMabTjH6Il2jqpz8FEKbd2gSqNYeKfuhAGHFynOiaWizQqRB7Mm6lVy009y qm3jz4oENx2TEvG4hlq6c3VnCf9hZRsFMbaEqlaB4fK4t8n/fhsavt8bxy1CLFjch4LF 7BGYntKoqTYUDLsIkhxf6Tlr2phxWw65u4K2PlqkLoxeR4y5US50mtC5DubLYHOiATjy 5rbg== X-Gm-Message-State: AOPr4FXQb6JxoRLFNNbDhGC01zAI7FyGQHqMnaE3JIjlv6zO9xlC54cb52LpIYW7OS6KlSxPZAwTJ3qAMnzRvN2l MIME-Version: 1.0 X-Received: by 10.159.40.99 with SMTP id c90mr7189425uac.85.1463131730477; Fri, 13 May 2016 02:28:50 -0700 (PDT) Received: by 10.31.189.70 with HTTP; Fri, 13 May 2016 02:28:50 -0700 (PDT) In-Reply-To: References: Date: Fri, 13 May 2016 14:58:50 +0530 Message-ID: Subject: Re: PATCH: FTS configuration node From: Sanket Mehta To: pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c0486180e6ba30532b5e7d5 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 --94eb2c0486180e6ba30532b5e7d5 Content-Type: multipart/alternative; boundary=94eb2c0486180e6b9f0532b5e7d3 --94eb2c0486180e6b9f0532b5e7d3 Content-Type: text/plain; charset=UTF-8 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 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 >>> >>> >> > --94eb2c0486180e6b9f0532b5e7d3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi All,

Last patch for FTS configuratio= n 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
<= div class=3D"gmail_extra">
Regards,
Sanket Mehta
Sr Software engin= eer
Enterprisedb

On Thu, May 12, 2016 at 4:38 PM, Sanket Meht= a <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
S= r Software engineer
Enterprisedb

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

=
--=C2=A0
Harshal Dhumal
Software Enginee= r=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=




--94eb2c0486180e6b9f0532b5e7d3-- --94eb2c0486180e6ba30532b5e7d5 Content-Type: text/x-patch; charset=US-ASCII; name="fts_configurationv3.patch" Content-Disposition: attachment; filename="fts_configurationv3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_io5iupvn1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5mYTJkM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL19faW5pdF9fLnB5CkBAIC0wLDAg KzEsOTM3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyIiIkRlZmluZXMgdmlld3MgZm9yIG1hbmFnZW1lbnQgb2YgRnRzIENvbmZp Z3VyYXRpb24gbm9kZSIiIgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBp bXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBjdXJyZW50 X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2VfcmVzcG9u c2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBn b25lCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGls ZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGltcG9y dCBTY2hlbWFDaGlsZE1vZHVsZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBpbXBvcnQgRGF0YWJhc2VN b2R1bGUKK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdh ZG1pbi51dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQK K2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIK K2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBm dW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKworY2xhc3MgRnRzQ29uZmlndXJh dGlvbk1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CisgICAgIiIiCisgICAg IGNsYXNzIEZ0c0NvbmZpZ3VyYXRpb25Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1 bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIEZUUyBDb25maWd1 cmF0aW9uIG5vZGUgZGVyaXZlZCBmcm9tIFNjaGVtYUNoaWxkTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGlu aXRpYWxpemUgdGhlIEZ0c0NvbmZpZ3VyYXRpb25Nb2R1bGUgYW5kCisgICAg ICAgIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAgICAqIGdldF9ub2RlcyhnaWQs IHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBn ZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAq IG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBm cm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBu b2RlCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3IgRlRTIENvbmZpZ3VyYXRpb24sIHdoZW4gYW55 IG9mIHRoZSBzY2hlbWEKKyAgICAgIG5vZGUgaXMgaW5pdGlhbGl6ZWQuCisg ICAgIiIiCisgICAgTk9ERV9UWVBFID0gJ2Z0c19jb25maWd1cmF0aW9uJwor ICAgIENPTExFQ1RJT05fTEFCRUwgPSBfKCdGVFMgQ29uZmlndXJhdGlvbnMn KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5t YXhfdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1hbmFnZXIgPSBOb25lCisg ICAgICAgIHN1cGVyKEZ0c0NvbmZpZ3VyYXRpb25Nb2R1bGUsIHNlbGYpLl9f aW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBnZXRfbm9kZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgIDpw YXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZl ciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAg ICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAg ICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2Rl KHNjaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShz ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoZSBwcm9w ZXJ0eSB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZQorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAg ICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAg ICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBmdHMgdGVtcGxhdGUsIHdo ZW4gYW55IG9mIHRoZSBzY2hlbWEKKyAgICAgICAgbm9kZSBpcyBpbml0aWFs aXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBEYXRhYmFzZU1v ZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBGdHNDb25maWd1cmF0 aW9uTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIEZ0c0NvbmZpZ3VyYXRp b25WaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgY2xhc3Mg RnRzQ29uZmlndXJhdGlvblZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAg ICAgIEEgdmlldyBjbGFzcyBmb3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBk ZXJpdmVkIGZyb20gUEdDaGlsZE5vZGVWaWV3LgorICAgICAgICBUaGlzIGNs YXNzIGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgdGhlIHN0dWZmIHJlbGF0ZWQg dG8gdmlldyBsaWtlCisgICAgICAgIGNyZWF0ZS91cGRhdGUvZGVsZXRlIEZU UyBDb25maWd1cmF0aW9uLAorICAgICAgICBzaG93aW5nIHByb3BlcnRpZXMg b2Ygbm9kZSwgc2hvd2luZyBzcWwgaW4gc3FsIHBhbmUuCisKKyAgICBNZXRo b2RzOgorICAgIC0tLS0tLS0KKyAgICAqIF9faW5pdF9fKCoqa3dhcmdzKQor ICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBGdHND b25maWd1cmF0aW9uVmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAq IG1vZHVsZV9qcygpCisgICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAo aWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAg IE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisK KyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVu bmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFu YWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYK KworICAgICogbGlzdCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byBsaXN0IGFsbCB0aGUgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rp b24uCisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3 aWxsIGJlIHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRo aW4gY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBh bGwgdGhlIEZUUyBDb25maWd1cmF0aW9uIG5vZGVzLgorCisgICAgKiBub2Rl KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gY3Jl YXRlIGEgbm9kZSBnaXZlbiBpdHMgb2lkCisgICAgICAgIEhlcmUgaXQgd2ls bCBjcmVhdGUgdGhlIEZUUyBUZW1wbGF0ZSBub2RlIGJhc2VkIG9uIGl0cyBv aWQKKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBj ZmdpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHBy b3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIEZUUyBDb25maWd1cmF0aW9uIG5v ZGUKKworICAgICogY3JlYXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAg ICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgdGhlIG5ldyBGVFMgQ29u ZmlndXJhdGlvbiBvYmplY3QKKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGNmZ2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwg dXBkYXRlIHRoZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgRlRTIENvbmZpZ3Vy YXRpb24gbm9kZQorCisgICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgY2ZnaWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwg ZHJvcCB0aGUgRlRTIENvbmZpZ3VyYXRpb24gb2JqZWN0CisKKyAgICAqIG1z cWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpCisgICAgICAtIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0 aGUgc2VsZWN0ZWQgbm9kZQorCisgICAgKiBnZXRfc3FsKGRhdGEsIGNmZ2lk KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZy b20gbW9kZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgY2ZnaWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJh dGUgc3FsIHRvIHNob3cgaW4gc3FsIHBhbmUgZm9yIG5vZGUuCisKKyAgICAq IHBhcnNlcnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgZnRwIHBhcnNlcnMgZnJvbSB0aGUg c2FtZSBzY2hlbWEKKworICAgICogY29weUNvbmZpZygpOgorICAgICAgLSBU aGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYWxsIGV4aXN0ZWQgZnRzIGNvbmZp Z3VyYXRpb25zIGZyb20gc2FtZSBzY2hlbWEKKworICAgICogdG9rZW5zKCk6 CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgdG9rZW5z IGZyb20gZnRzIHBhcnNlciByZWxhdGVkIHRvIG5vZGUKKworICAgICogZGlj dGlvbmFyaWVzKCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRj aCBhbGwgZGljdGlvbmFyaWVzIHJlbGF0ZWQgdG8gbm9kZQorCisgICAgKiBk ZXBlbmRlbnRzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAg IC0gVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVy biBhamF4IHJlc3BvbnNlIGZvciB0aGUgbm9kZS4KKworICAgICogZGVwZW5k ZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAg ICAgIC0gVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQg cmV0dXJuIGFqYXggcmVzcG9uc2UgZm9yIG5vZGUuCisKKyAgICAiIiIKKwor ICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBh cmVudF9pZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAn Z2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30s CisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9CisgICAgXQorICAg IGlkcyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdjZmdp ZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAg ICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycs ICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAg ICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAg ICAgICBdLAorICAgICAgICAnY2hpbGRyZW4nOiBbeworICAgICAgICAgICAg J2dldCc6ICdjaGlsZHJlbicKKyAgICAgICAgfV0sCisgICAgICAgICdkZWxl dGUnOiBbeydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAgICAgICAnbm9kZXMn OiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAg ICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzog W3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAg J3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdk ZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAg ICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAg ICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pz J31dLAorICAgICAgICAncGFyc2Vycyc6IFt7J2dldCc6ICdwYXJzZXJzJ30s CisgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0JzogJ3BhcnNlcnMn fV0sCisgICAgICAgICdjb3B5Q29uZmlnJzogW3snZ2V0JzogJ2NvcHlDb25m aWcnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0Jzog J2NvcHlDb25maWcnfV0sCisgICAgICAgICd0b2tlbnMnOiBbeydnZXQnOiAn dG9rZW5zJ30sIHsnZ2V0JzogJ3Rva2Vucyd9XSwKKyAgICAgICAgJ2RpY3Rp b25hcmllcyc6IFt7fSwgeydnZXQnOiAnZGljdGlvbmFyaWVzJ31dLAorICAg IH0pCisKKyAgICBkZWYgX2luaXRfKHNlbGYsICoqa3dhcmdzKToKKyAgICAg ICAgc2VsZi5jb25uID0gTm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRlX3Bh dGggPSBOb25lCisgICAgICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAg ICAgc3VwZXIoRnRzQ29uZmlndXJhdGlvblZpZXcsIHNlbGYpLl9faW5pdF9f KCoqa3dhcmdzKQorCisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAg ICAgIiIiCisgICAgICAgIExvYWQgSlMgZmlsZSAoZnRzX2NvbmZpZ3VyYXRp b24uanMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAg IHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICJmdHNfY29uZmlndXJhdGlvbi9q cy9mdHNfY29uZmlndXJhdGlvbi5qcyIsCisgICAgICAgICAgICAgICAgXz1f CisgICAgICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQt VHlwZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICAp CisKKyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRl Y29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBj b25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBh dHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRo IHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKworICAgICAgICBA d3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToK KyAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYg a3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAorICAgICAgICAgICAgc2Vs ZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYubWFuYWdlciA9IGdldF9k cml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigK KyAgICAgICAgICAgICAgICBrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAg c2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJn c1snZGlkJ10pCisgICAgICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQg dGhlbiByZXR1cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYg bm90IHNlbGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICBy ZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAg ICAgICBfKCJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9z dCEiKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgd2Ugd2ls bCBzZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMgZGVwZW5kaW5n IHVwb24gc2VydmVyIHZlcnNpb24KKyAgICAgICAgICAgIHZlciA9IHNlbGYu bWFuYWdlci52ZXJzaW9uCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTAxMDA6 CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2Z0c19j b25maWd1cmF0aW9uL3NxbC85LjFfcGx1cycKKyAgICAgICAgICAgIHJldHVy biBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg TGlzdCBhbGwgRlRTIENvbmZpZ3VyYXRpb24gbm9kZXMuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICIiIgorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgc2NpZD1zY2lkCisg ICAgICAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgK KyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGFsbCBGVFMgQ29u ZmlndXJhdGlvbnMgdG8gZ2VuZXJhdGUgbm9kZXMuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIi IgorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICBzY2lkPXNjaWQK KyAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3Mn XToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAg ICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAg ICBkaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAg ICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0c19jb25maWd1cmF0aW9u IgorICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAg ICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIG5vZGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgY2ZnaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIEZU UyBDb25maWd1cmF0aW9uIG5vZGUgdG8gZ2VuZXJhdGUgbm9kZQorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgY2ZnaWQ6IGZ0cyBDb25maWd1cmF0aW9uIGlkCisgICAgICAg ICIiIgorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5z cWwnXSksCisgICAgICAgICAgICBjZmdpZD1jZmdpZAorICAgICAgICApCisg ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgIGlmIGxlbihyc2V0Wydyb3dzJ10pID09IDA6CisgICAgICAg ICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAgICAgICAgICAgIENvdWxk IG5vdCBmaW5kIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlLgorICAgICAg ICAgICAgICAgICIiIikpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5ibHVlcHJpbnQuZ2VuZXJh dGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICByb3dbJ29p ZCddLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAgICAgICAg ICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29u PSJpY29uLWZ0c19jb25maWd1cmF0aW9uIgorICAgICAgICAgICAgICAgICks CisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVz KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIFNob3cgcHJvcGVydGllcyBvZiBGVFMgQ29uZmlndXJh dGlvbiBub2RlCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAor ICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2Np ZDogU2NoZW1hIElkCisgICAgICAgICAgICBjZmdpZDogZnRzIENvbmZpZ3Vy YXRpb24gaWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAg ICAgICBzY2lkPXNjaWQsCisgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQK KyAgICAgICAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10p ID09IDA6CisgICAgICAgICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAg ICAgICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBGVFMgQ29uZmlndXJhdGlv biBub2RlLgorICAgICAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgIyBJ biBlZGl0IG1vZGUgZmV0Y2ggdG9rZW4vZGljdGlvbmFyeSBsaXN0IGFsc28K KyAgICAgICAgaWYgY2ZnaWQ6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tl bkRpY3RMaXN0LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2ZnaWQ9Y2ZnaWQpCisKKyAgICAgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAg ICAgcmVzWydyb3dzJ11bMF1bJ3Rva2VucyddID0gcnNldFsncm93cyddCisK KyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICBy ZXNwb25zZT1yZXNbJ3Jvd3MnXVswXSwKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBu ZXcgdGhlIEZUUyBDb25maWd1cmF0aW9uIG9iamVjdAorICAgICAgICA6cGFy YW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIg aWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAg OnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKworICAgICAg ICAjIE1hbmRhdG9yeSBmaWVsZHMgdG8gY3JlYXRlIGEgbmV3IEZUUyBDb25m aWd1cmF0aW9uCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAg ICAgICAnc2NoZW1hJywKKyAgICAgICAgICAgICduYW1lJworICAgICAgICBd CisKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZv cm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6 CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAg ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAjIEVpdGhlciBj b3B5IGNvbmZpZyBvciBwYXJzZXIgbXVzdCBiZSBwcmVzZW50IGluIGRhdGEK KyAgICAgICAgaWYgJ2NvcHlfY29uZmlnJyBub3QgaW4gZGF0YSBhbmQgJ3Bh cnNlcicgbm90IGluIGRhdGE6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisg ICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgIGVy cm9ybXNnPV8oCisgICAgICAgICAgICAgICAgICAgICJwcm92aWRlIGF0bGVh c3QgY29weSBjb25maWcgb3IgcGFyc2VyIgorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAj IEZldGNoIHNjaGVtYSBuYW1lIGZyb20gc2NoZW1hIG9pZAorICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdzY2hlbWEuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHN0YXR1 cywgc2NoZW1hID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWEpCisK KyAgICAgICAgICAgICMgUmVwbGFjZSBzY2hlbWEgb2lkIHdpdGggc2NoZW1h IG5hbWUgYmVmb3JlIHBhc3NpbmcgdG8gY3JlYXRlLnNxbAorICAgICAgICAg ICAgIyBUbyBnZW5lcmF0ZSBwcm9wZXIgc3FsIHF1ZXJ5CisgICAgICAgICAg ICBuZXdfZGF0YSA9IGRhdGEuY29weSgpCisgICAgICAgICAgICBuZXdfZGF0 YVsnc2NoZW1hJ10gPSBzY2hlbWEKKworICAgICAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgIGRhdGE9bmV3X2RhdGEsCisgICAgICAgICAgICAgICAgY29ubj1zZWxm LmNvbm4sCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAg ICAjIFdlIG5lZWQgY2ZnaWQgdG8gYWRkIG9iamVjdCBpbiB0cmVlIGF0IGJy b3dzZXIsCisgICAgICAgICAgICAjIEJlbG93IHNxbCB3aWxsIGdpdmUgdGhl IHNhbWUKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn cHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgbmFtZT1kYXRh WyduYW1lJ10KKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywg Y2ZnaWQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNmZ2lkKQorCisgICAg ICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2Rl PXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAg ICAgICAgICAgICAgICAgY2ZnaWQsCisgICAgICAgICAgICAgICAgICAgIGRp ZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0c19jb25maWd1cmF0aW9uIgor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAu bG9nZ2VyLmV4Y2VwdGlvbihlKQorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBjZmdpZCk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIEZUUyBDb25maWd1cmF0aW9uIG5v ZGUKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBh cmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFi YXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAg ICAgOnBhcmFtIGNmZ2lkOiBmdHMgQ29uZmlndXJhdGlvbiBpZAorICAgICAg ICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0 LmZvcm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5k YXRhLmRlY29kZSgpKQorCisgICAgICAgICMgRmV0Y2ggc3FsIHF1ZXJ5IHRv IHVwZGF0ZSBmdHMgQ29uZmlndXJhdGlvbgorICAgICAgICBzcWwgPSBzZWxm LmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZGF0YSwgY2ZnaWQpCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNxbCBhbmQgc3FsLnN0cmlw KCdcbicpIGFuZCBzcWwuc3RyaXAoJyAnKToKKyAgICAgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICBpZiBjZmdpZCBpcyBub3QgTm9uZToK KyAgICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGNmZ2lkPWNmZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Np ZD1zY2lkCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwp CisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10p ID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnb25lKF8oIiIi CisgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZCBub3QgZmluZCB0aGUg RlRTIENvbmZpZ3VyYXRpb24gbm9kZSB0byB1cGRhdGUuCisgICAgICAgICAg ICAgICAgICAgICIiIikpCisKKyAgICAgICAgICAgICAgICBkYXRhID0gcmVz Wydyb3dzJ11bMF0KKyAgICAgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgK KyAgICAgICAgICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5l cmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBj ZmdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGljb249Imljb24tZnRzX2NvbmZpZ3VyYXRpb24iCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAjIEluIGNhc2UgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBpcyBub3Qg cHJlc2VudAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89Ik5vdGhp bmcgdG8gdXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBjZmdpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J2RpZCc6IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lkJzog c2NpZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg KQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxl dGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGRyb3AgdGhlIEZU UyBDb25maWd1cmF0aW9uIG9iamVjdAorICAgICAgICA6cGFyYW0gZ2lkOiBn cm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAg ICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNj aWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IEZUUyBDb25m aWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93IHdp bGwgZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNh c2NhZGUgY2FsbAorICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoK KyAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisg ICAgICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAg ICAgICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgIyBHZXQgbmFtZSBmb3IgRlRTIENvbmZpZ3VyYXRpb24gZnJv bSBjZmdpZAorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdnZXRfbmFtZS5zcWwnXSksCisgICAgICAgICAgICAgICAgY2ZnaWQ9Y2Zn aWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAg aWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAgICAgIHJl dHVybiBnb25lKF8oIiIiCisgICAgICAgICAgICAgICAgICAgICAgICBDb3Vs ZCBub3QgZmluZCB0aGUgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSB0byBkZWxl dGUuCisgICAgICAgICAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgICAg ICMgRHJvcCBGVFMgQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgcmVzdWx0 ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBu YW1lPXJlc3VsdFsnbmFtZSddLAorICAgICAgICAgICAgICAgIHNjaGVtYT1y ZXN1bHRbJ3NjaGVtYSddLAorICAgICAgICAgICAgICAgIGNhc2NhZGU9Y2Fz Y2FkZQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1fKCJGVFMg Q29uZmlndXJhdGlvbiBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0 YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGNmZ2lkLAorICAgICAg ICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAg ICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk LAorICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2Vy LmV4Y2VwdGlvbihlKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgY2ZnaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIHJldHVybnMgbW9kaWZpZWQgU1FMCisgICAgICAgIDpwYXJh bSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBp ZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6 cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgIDpwYXJhbSBjZmdpZDog RlRTIENvbmZpZ3VyYXRpb24gaWQKKyAgICAgICAgIiIiCisgICAgICAgIGRh dGEgPSB7fQorICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRl bXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRh W2tdID0ganNvbi5sb2Fkcyh2KQorICAgICAgICAgICAgZXhjZXB0IFZhbHVl RXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKworICAgICAg ICAjIEZldGNoIHNxbCBxdWVyeSBmb3IgbW9kaWZpZWQgZGF0YQorICAgICAg ICBzcWwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZGF0 YSwgY2ZnaWQpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzcWwsIHN0cikg YW5kIHNxbCBhbmQgc3FsLnN0cmlwKCdcbicpIGFuZCBzcWwuc3RyaXAoJyAn KToKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgZGF0YT1zcWwsCisgICAgICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICBkYXRhPSItLW1vZGlmaWVkIFNRTCIsCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9zcWwo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZGF0YSwgY2ZnaWQ9Tm9uZSk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0 dXJuIFNRTCBmb3IgbW9kZWwgZGF0YQorICAgICAgICA6cGFyYW0gZ2lkOiBn cm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAg ICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNj aWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IGZ0cyBDb25m aWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAg ICAgICAgICAjIEZldGNoIHNxbCBmb3IgdXBkYXRlCisgICAgICAgICAgICBp ZiBjZmdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQsCisgICAgICAgICAgICAg ICAgICAgIHNjaWQ9c2NpZAorICAgICAgICAgICAgICAgICkKKworICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBpZiBsZW4ocmVzWydy b3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnb25l KF8oIiIiCisgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZCBub3QgZmlu ZCB0aGUgRlRTIENvbmZpZ3VyYXRpb24gbm9kZS4KKyAgICAgICAgICAgICAg ICAgICAgIiIiKSkKKworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVz Wydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgICMgSWYgdXNlciBoYXMg Y2hhbmdlZCB0aGUgc2NoZW1hIHRoZW4gZmV0Y2ggbmV3IHNjaGVtYSBkaXJl Y3RseQorICAgICAgICAgICAgICAgICMgdXNpbmcgaXRzIG9pZCBvdGhlcndp c2UgZmV0Y2ggb2xkIHNjaGVtYSBuYW1lIHVzaW5nIGl0cyBvaWQKKyAgICAg ICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hl bWEuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisK KyAgICAgICAgICAgICAgICBzdGF0dXMsIG5ld19zY2hlbWEgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmV3X3NjaGVtYSkKKworICAgICAg ICAgICAgICAgICMgUmVwbGFjZSBzY2hlbWEgb2lkIHdpdGggc2NoZW1hIG5h bWUKKyAgICAgICAgICAgICAgICBuZXdfZGF0YSA9IGRhdGEuY29weSgpCisg ICAgICAgICAgICAgICAgaWYgJ3NjaGVtYScgaW4gbmV3X2RhdGE6CisgICAg ICAgICAgICAgICAgICAgIG5ld19kYXRhWydzY2hlbWEnXSA9IG5ld19zY2hl bWEKKworICAgICAgICAgICAgICAgICMgRmV0Y2ggb2xkIHNjaGVtYSBuYW1l IHVzaW5nIG9sZCBzY2hlbWEgb2lkCisgICAgICAgICAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc2NoZW1hLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG9sZF9zY2hlbWEg PSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9b2xkX3NjaGVtYSkK KworICAgICAgICAgICAgICAgICMgUmVwbGFjZSBvbGQgc2NoZW1hIG9pZCB3 aXRoIG9sZCBzY2hlbWEgbmFtZQorICAgICAgICAgICAgICAgIG9sZF9kYXRh WydzY2hlbWEnXSA9IG9sZF9zY2hlbWEKKworICAgICAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9bmV3X2RhdGEsIG9fZGF0YT1vbGRf ZGF0YQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg IyBGZXRjaCBzcWwgcXVlcnkgZm9yIG1vZGlmaWVkIGRhdGEKKyAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBGZXRjaCBzY2hlbWEgbmFt ZSBmcm9tIHNjaGVtYSBvaWQKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWEuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgICAgICAgICAgc3RhdHVzLCBzY2hlbWEgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2NoZW1hKQorCisgICAgICAgICAgICAg ICAgIyBSZXBsYWNlIHNjaGVtYSBvaWQgd2l0aCBzY2hlbWEgbmFtZQorICAg ICAgICAgICAgICAgIG5ld19kYXRhID0gZGF0YS5jb3B5KCkKKyAgICAgICAg ICAgICAgICBuZXdfZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKKworICAgICAg ICAgICAgICAgIGlmICduYW1lJyBpbiBuZXdfZGF0YSBhbmQgXAorICAgICAg ICAgICAgICAgICAgICAgICAgJ3NjaGVtYScgaW4gbmV3X2RhdGE6CisgICAg ICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YT1uZXdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc3FsID0gIi0tIGluY29tcGxl dGUgZGVmaW5pdGlvbiIKKyAgICAgICAgICAgIHJldHVybiBzdHIoc3FsLnN0 cmlwKCdcbicpKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBwYXJzZXJzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBm dHMgcGFyc2VycyBsaXN0IGZvciBGVFMgQ29uZmlndXJhdGlvbgorICAgICAg ICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBz ZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAg ICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKyAg ICAgICAgIyBGZXRjaCBsYXN0IHN5c3RlbSBvaWQKKyAgICAgICAgZGF0bGFz dHN5c29pZCA9IHNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3Rz eXNvaWQnXQorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwYXJz ZXIuc3FsJ10pLAorICAgICAgICAgICAgcGFyc2VyPVRydWUKKyAgICAgICAg ICAgICkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKworICAgICAgICAjIEVtcHR5IHNldCBpcyBhZGRlZCBiZWZvcmUg YWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0IHdpbGwgYmUgdmlzaWJsZQor ICAgICAgICAjIGF0IHBhcnNlciBjb250cm9sIHdoaWxlIGNyZWF0aW5nIGEg bmV3IEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIHJlcyA9IFt7J2xhYmVs JzonJywgJ3ZhbHVlJzonJ31dCisgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgaWYgcm93WydzY2hlbWFvaWQnXSA+IGRh dGxhc3RzeXNvaWQ6CisgICAgICAgICAgICAgICAgcm93WydwcnNuYW1lJ10g PSByb3dbJ25zcG5hbWUnXSArICcuJyArIHJvd1sncHJzbmFtZSddCisKKyAg ICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJlbCc6IHJvd1sncHJzbmFtZSdd LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93WydwcnNu YW1lJ119KQorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgY29weUNvbmZpZyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4g Y29weSBjb25maWcgbGlzdCBmb3IgRlRTIENvbmZpZ3VyYXRpb24KKyAgICAg ICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDog c2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisg ICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAgIiIiCisg ICAgICAgICMgRmV0Y2ggbGFzdCBzeXN0ZW0gb2lkCisgICAgICAgIGRhdGxh c3RzeXNvaWQgPSBzZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydkYXRsYXN0 c3lzb2lkJ10KKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY29w eV9jb25maWcuc3FsJ10pLAorICAgICAgICAgICAgY29weV9jb25maWc9VHJ1 ZQorICAgICAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICMgRW1wdHkgc2V0IGlzIGFk ZGVkIGJlZm9yZSBhY3R1YWwgbGlzdCBhcyBpbml0aWFsbHkgaXQgd2lsbCBi ZSB2aXNpYmxlCisgICAgICAgICMgYXQgY29weV9jb25maWcgY29udHJvbCB3 aGlsZSBjcmVhdGluZyBhIG5ldyBGVFMgQ29uZmlndXJhdGlvbgorICAgICAg ICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCisgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgaWYgcm93 WydvaWQnXSA+IGRhdGxhc3RzeXNvaWQ6CisgICAgICAgICAgICAgICAgcm93 WydjZmduYW1lJ10gPSByb3dbJ25zcG5hbWUnXSArICcuJyArIHJvd1snY2Zn bmFtZSddCisKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJlbCc6IHJv d1snY2ZnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVl Jzogcm93WydjZmduYW1lJ119KQorICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgdG9rZW5zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIGNmZ2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIHJldHVybiB0b2tlbiBsaXN0IG9mIGZ0cyBwYXJzZXIg bm9kZSByZWxhdGVkIHRvCisgICAgICAgIGN1cnJlbnQgRlRTIENvbmZpZ3Vy YXRpb24gbm9kZQorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAg ICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRp ZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBp ZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IGZ0cyBjb25maWd1cmF0aW9uIGlk CisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXMg PSBbXQorICAgICAgICAgICAgaWYgY2ZnaWQgaXMgbm90IE5vbmU6CisgICAg ICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncGFy c2VyLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHN0YXR1 cywgcGFyc2Vyb2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkK KworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cGFyc2Vyb2lkKQorCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAndG9rZW5zLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgcGFyc2Vyb2lkPXBhcnNlcm9pZAorICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAgICAgcmVz LmFwcGVuZCh7J2xhYmVsJzogcm93WydhbGlhcyddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ2FsaWFzJ119KQor CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhj ZXB0aW9uKGUpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZGljdGlvbmFyaWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGNmZ2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBkaWN0aW9uYXJ5IGxpc3QgZm9y IEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3Vw IGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6 cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDog c2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCdkaWN0aW9uYXJpZXMuc3FsJ10pCisgICAgICAgICAgICApCisg ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisK KyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKHsnbGFiZWwnOiByb3db J2RpY3RuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUn OiByb3dbJ2RpY3RuYW1lJ119KQorICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCByZXZlcnNlIGdlbmVyYXRlIHNxbCBmb3Igc3FsIHBhbmVsCisgICAg ICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6 IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAor ICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgIDpwYXJh bSBjZmdpZDogRlRTIENvbmZpZ3VyYXRpb24gaWQKKyAgICAgICAgIiIiCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnc3FsLnNxbCddKSwKKyAgICAgICAgICAgICAgICBjZmdpZD1jZmdp ZCwKKyAgICAgICAgICAgICAgICBzY2lkPXNjaWQsCisgICAgICAgICAgICAg ICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKKyAgICAgICAgICAgICAg ICAgICAgXygKKyAgICAgICAgICAgICAgICAgICAgIkVSUk9SOiBDb3VsZG4n dCBnZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIHF1ZXJ5IGZvciB0aGUg RlRTIENvbmZpZ3VyYXRpb24hXG57MH0iCisgICAgICAgICAgICAgICAgICAg ICkuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgIGlmIHJlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVy biBnb25lKAorICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAg ICAgICAgICAgICAgIkVSUk9SOiBDb3VsZG4ndCBnZW5lcmF0ZSByZXZlcnNl ZCBlbmdpbmVlcmVkIHF1ZXJ5IGZvciBGVFMgQ29uZmlndXJhdGlvbiBub2Rl ISIpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZShyZXNwb25zZT1yZXMpCisKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmV4Y2VwdGlvbihlKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBh amF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRlRTIENvbmZpZ3VyYXRp b24gbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSUQKKyAgICAgICAgICAgIGNmZ2lkOiBGVFMgQ29uZmlndXJh dGlvbiBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW50c19yZXN1 bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKHNlbGYuY29ubiwgY2ZnaWQpCisg ICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVz cG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g Z2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNl CisgICAgICAgIGZvciB0aGUgRlRTIENvbmZpZ3VyYXRpb24gbm9kZS4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgIGNmZ2lkOiBGVFMgQ29uZmlndXJhdGlvbiBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYu Z2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4sIGNmZ2lkKQorICAgICAgICBy ZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRl cGVuZGVuY2llc19yZXN1bHQsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICkKKworCitGdHNDb25maWd1cmF0aW9uVmlldy5yZWdpc3Rlcl9u b2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9pbWcvY29sbC1mdHNfY29u ZmlndXJhdGlvbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJh dGlvbnMvc3RhdGljL2ltZy9jb2xsLWZ0c19jb25maWd1cmF0aW9uLnBuZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWJmNGVlNWJiY2MzZjdjODU5OGE0 ZmE5ZDlhNzZlMDYxYmY2MGUwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAz NjkKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0J4KkJwOXFfRVo3VUFt YFp+RGYqQmFmQ1pEd2NAc2htVlReSlp2CnpeKHE/eWQ3SzN2aztPcFQxQn41 SFg0P1Q3T0ZkbTJMbkpPSUNvbld9Nzgtc09tSn4/JWN9QmF4ezx0I2Q3MT0j fAp6SFBxQ1dOJDVAWkBsd0ZVbSM2Mnhffi1TcWstcVV+PylSVV9ganp4PSZy OX56S2pyeTFXJjU3RmY4OTMwXm5kO0wKejxJSGJZP2JeNEFZMDxPU3JgeUJk OWM1dHN3SjxBaHs+Xj5BcyQ+cSYocG9YPV4+Vi1ZSHw+aj1tPURocSopWGV7 CnpKXiM0TUhDXl5kPUNJOGxldGV4X0h7KTxhUit3STBeTW1GcUc1aDxAdSlt SUNQR3dAU1N5Zj1vQEcoOVM9d1Ffbgp6Kk5CcG8jRkE5MjxmMnB7I2I5SiRY ck9Db3EtJFVwVnF7PXRWcipxJXFIU1BtV25mQDJRJmtRe0x2RFViVz9DZ2cK Z2dNbFNqMTR5LSVmZis9QHNwKzk+ZkVwTSlVSHgzdklWQ2chME5fUHxGYVE3 bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9pbWcvZnRzX2Nv bmZpZ3VyYXRpb24ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3Vy YXRpb25zL3N0YXRpYy9pbWcvZnRzX2NvbmZpZ3VyYXRpb24ucG5nCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjBhNWNhZjUzNzM2NzBjYzY4NDYwNWQ0MmM5 ZWIyMTcyNGZkNzU1MjMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM0Ngp6 Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QngqQnA5cV9FWjdVQW1gWn5E ZipCYWZDWkR3Y0BzaG1WVF5KWnYKel4ocT95ZDdLM3ZrO09wVDFCfjVIWDQ/ VDdlViM2a0FyaEM5NkFyTFd5UlBjel9STjF5PCt0PzVla3dtX2B2M3B0Cnpw WFNoVVckeTMpPUtuckRhb2UlKCRvJjJMejg/U24tPjJvJUAxKGxAKWl2Kip7 aFZBe0BiOSt0XjcxP2p0NzZNMwp6fDZkPjdkaWxBWSVuVkR4UX4hVEhJZHJr d3UoTVIpcj5TQjZ5dCNNbCl0Qis3SWJRdWJtRH0lKiVMaGokP3xWdWcKekM5 ajNWPyhhTHAtV2pxc0BjPUt3dX1qeyE3e1pHODBiUW5BO3U9d3NsMzA+em0w WGt4cSFeNDAzPU1QKmpkVHFSCnpMeVFjcE9wTDhlT3RjTTV0cWNxLVd+JDFl WHZvYl4keE4kK1hmVXRAWVhHVVhHQkFUXkk1ajxWNE53RHZyPm1kSwpJSTtW c3QwQUslcTRnZGZFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL2pzL2Z0c19jb25maWd1cmF0aW9uLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29uZmlndXJhdGlvbi5qcwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODJkNjY0Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3Vy YXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29u ZmlndXJhdGlvbi5qcwpAQCAtMCwwICsxLDU4NSBAQAorZGVmaW5lKAorICAg ICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3BnYWRtaW4nLAorICAgICAgICAgJ3BnYWRtaW4uYnJvd3Nlcics ICdhbGVydGlmeScsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAor ZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlm eSkgeworCisKKy8vIE1vZGVsIGZvciB0b2tlbnMgY29udHJvbAorICB2YXIg VG9rZW5Nb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgdG9rZW46IHVu ZGVmaW5lZCwKKyAgICAgICAgICBkaWN0bmFtZTogdW5kZWZpbmVkCisgICAg ICAgIH0sCisgICAgICAgIC8vIERlZmluZSB0aGUgc2NoZW1hIGZvciB0aGUg dG9rZW4vZGljdGlvbmFyeSBsaXN0CisgICAgICAgIHNjaGVtYTogWworICAg ICAgICAgIHsKKyAgICAgICAgICAgIGlkOiAndG9rZW4nLCBsYWJlbDonVG9r ZW4nLCB0eXBlOid0ZXh0JywgZ3JvdXA6IG51bGwsCisgICAgICAgICAgICBj ZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcsIGVkaXRhYmxl OiB0cnVlLAorICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCBjZWxsOiAn c3RyaW5nJywgdXJsOiAndG9rZW5zJworICAgICAgICAgIH0seworICAgICAg ICAgICAgaWQ6ICdkaWN0bmFtZScsIGxhYmVsOiAnRGljdGlvbmFyaWVzJywg dHlwZTogJ3RleHQnLCBncm91cDpudWxsLAorICAgICAgICAgICAgY2VsbEhl YWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnLCBlZGl0YWJsZTogdHJ1 ZSwKKyAgICAgICAgICAgIGNlbGw6QmFja2dyaWQuRXh0ZW5zaW9uLk11bHRp U2VsZWN0QWpheENlbGwsIHVybDogJ2RpY3Rpb25hcmllcycKKyAgICAgICAg ICB9CisgICAgICAgIF0sCisgICAgICAgIC8vIFZhbGlkYXRpb24gZm9yIHRv a2VuIGFuZCBkaWN0aW9uYXJ5IGxpc3QKKyAgICAgICAgdmFsaWRhdGU6IGZ1 bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5n IGVycm9ycy4KKyAgICAgICAgICAgIHZhciBtc2c7CisgICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHZhciB0b2tl biA9IHRoaXMuZ2V0KCd0b2tlbicpOworICAgICAgICAgICAgdmFyIGRpY3Rp b25hcnkgPSB0aGlzLmdldCgnZGljdG5hbWUnKTsKKworICAgICAgICAgICAg aWYgKF8uaXNOdWxsKHRva2VuKSB8fAorICAgICAgICAgICAgICAgIF8uaXNV bmRlZmluZWQodG9rZW4pIHx8CisgICAgICAgICAgICAgICAgU3RyaW5nKHRv a2VuKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAg ICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1Rva2VuIGNhbiBub3QgYmUgZW1w dHkhJykgfX0nOworICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ3Rva2VuJyxtc2cpOworICAgICAgICAgICAgICAgIHJldHVybiBtc2c7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChfLmlzTnVsbChk aWN0aW9uYXJ5KSB8fAorICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQo ZGljdGlvbmFyeSkgfHwKKyAgICAgICAgICAgICAgICBTdHJpbmcoZGljdGlv bmFyeSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAg ICAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdEaWN0aW9uYXJ5IG5hbWUgY2Fu IG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnNldCgnZGljdG5hbWUnLG1zZyk7CisgICAgICAgICAgICAg ICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl dHVybiBudWxsOworICAgICAgICB9CisgIH0pOworCisvLyBDdXN0b21pemVk IGNvbnRyb2wgZm9yIHRva2VuIGNvbnRyb2wKKyAgdmFyIFRva2VuQ29udHJv bCA9ICBCYWNrZm9ybS5Ub2tlbkNvbnRyb2wgPQorICAgIEJhY2tmb3JtLlVu aXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLmV4dGVuZCh7CisKKyAgICBpbml0 aWFsaXplOiBmdW5jdGlvbihvcHRzKSB7CisgICAgICBCYWNrZm9ybS5Vbmlx dWVDb2xDb2xsZWN0aW9uQ29udHJvbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5h cHBseSgKKyAgICAgICAgdGhpcywgYXJndW1lbnRzCisgICAgICApOworCisg ICAgICB2YXIgc2VsZiA9IHRoYXQgPSB0aGlzLAorICAgICAgICAgIG5vZGUg PSAnZnRzX2NvbmZpZ3VyYXRpb24nLAorICAgICAgICAgIGhlYWRlclNjaGVt YSA9IFt7CisgICAgICAgICAgICBpZDogJ3Rva2VuJywgbGFiZWw6JycsIHR5 cGU6J3RleHQnLCB1cmw6ICd0b2tlbnMnLAorICAgICAgICAgICAgbm9kZTon ZnRzX2NvbmZpZ3VyYXRpb24nLCBjYW5BZGQ6IHRydWUsICd1cmxfd2l0aF9p ZCc6IHRydWUsCisKKyAgICAgICAgICAgIC8vIERlZmluaW5nIGNvbnRyb2wg Zm9yIHRva2VucyBkcm9wZG93biBjb250cm9sIGluIGhlYWRlcgorICAgICAg ICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJv bC5leHRlbmQoeworICAgICAgICAgICAgICBmb3JtYXR0ZXI6IEJhY2tmb3Jt Lk5vZGVBamF4T3B0aW9uc0NvbnRyb2wucHJvdG90eXBlLmZvcm1hdHRlciwK KyAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CisgICAg ICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5w cm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSgKKyAgICAgICAgICAgICAgICAg IHRoaXMsCisgICAgICAgICAgICAgICAgICBhcmd1bWVudHMKKyAgICAgICAg ICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMs CisgICAgICAgICAgICAgICAgICB1cmwgPSBzZWxmLmZpZWxkLmdldCgndXJs JykgfHwgc2VsZi5kZWZhdWx0cy51cmwsCisgICAgICAgICAgICAgICAgICBt ID0gc2VsZi5tb2RlbC50b3AgfHwgc2VsZi5tb2RlbDsKKworICAgICAgICAg ICAgICAgIC8qIEZldGNoIHRoZSB0b2tlbnMvZGljdCBsaXN0IGZyb20gJ3Ro YXQnIG5vZGUuCisgICAgICAgICAgICAgICAgICogSGVyZSAndGhhdCcgcmVm ZXJzIHRvIHVuaXF1ZSBjb2xsZWN0aW9uIGNvbnRyb2wgd2hlcmUKKyAgICAg ICAgICAgICAgICAgKiAnc2VsZicgcmVmZXJzIHRvIG5vZGVBamF4T3B0aW9u cyBjb250cm9sIGZvciBkaWN0aW9uYXJ5CisgICAgICAgICAgICAgICAgICov CisgICAgICAgICAgICAgICAgdmFyIGNmZ2lkID0gdGhhdC5tb2RlbC5nZXQo J29pZCcpOworICAgICAgICAgICAgICAgIGlmICh1cmwpIHsKKyAgICAgICAg ICAgICAgICAgIHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9u b2RlJyksCisgICAgICAgICAgICAgICAgICAgIG5vZGVfaW5mbyA9IHRoaXMu ZmllbGQuZ2V0KCdub2RlX2luZm8nKSwKKyAgICAgICAgICAgICAgICAgICAg ZnVsbF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgKKyAgICAgICAg ICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAgICAgICAg ICBudWxsLCB1cmwsIHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuZ2V0KCd1cmxfd2l0 aF9pZCcpIHx8IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZV9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAg ICAgICAgICAgIGNhY2hlX2xldmVsID0gdGhpcy5maWVsZC5nZXQoJ2NhY2hl X2xldmVsJykgfHwgbm9kZS50eXBlLAorICAgICAgICAgICAgICAgICAgICBj YWNoZV9ub2RlID0gdGhpcy5maWVsZC5nZXQoJ2NhY2hlX25vZGUnKTsKKwor ICAgICAgICAgICAgICAgICAgY2FjaGVfbm9kZSA9IChjYWNoZV9ub2RlICYm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ0FkbWlu LkJyb3dzZXIuTm9kZXNbJ2NhY2hlX25vZGUnXSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8fCBub2RlOworCisgICAgICAgICAgICAgICAg ICAvKgorICAgICAgICAgICAgICAgICAgICogV2UgbmVlZHMgdG8gY2hlY2ss IGlmIHdlIGhhdmUgYWxyZWFkeSBjYWNoZWQgZGF0YQorICAgICAgICAgICAg ICAgICAgICogZm9yIHRoaXMgdXJsLiBJZiB5ZXMgLSB1c2UgaXQsIGFuZCBk byBub3QgYm90aGVyIGFib3V0CisgICAgICAgICAgICAgICAgICAgKiBmZXRj aGluZyBpdCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAqLworICAgICAg ICAgICAgICAgICAgdmFyIGRhdGEgPSBjYWNoZV9ub2RlLmNhY2hlKHVybCwg bm9kZV9pbmZvLCBjYWNoZV9sZXZlbCk7CisKKyAgICAgICAgICAgICAgICAg IC8vIEZldGNoIHRva2VuL2RpY3Rpb25hcnkgbGlzdAorICAgICAgICAgICAg ICAgICAgaWYgKHRoaXMuZmllbGQuZ2V0KCd2ZXJzaW9uX2NvbXBhdGlibGUn KSAmJgorICAgICAgICAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChkYXRh KSB8fCBfLmlzTnVsbChkYXRhKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg bS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hpbmcnLCBtLCBzZWxmLmZp ZWxkKTsKKyAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAg ICAgICAgICAgICAgICBhc3luYzogZmFsc2UsCisgICAgICAgICAgICAgICAg ICAgICAgdXJsOiBmdWxsX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICBz dWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAvKgorICAgICAgICAgICAgICAgICAgICAgICAqIFdlIHdpbGwgY2FjaGUg dGhpcyBkYXRhIGZvciBzaG9ydCBwZXJpb2Qgb2YgdGltZSBmb3IKKyAgICAg ICAgICAgICAgICAgICAgICAgKiBhdm9pZGluZyBzYW1lIGNhbGxzLgorICAg ICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YSA9IGNhY2hlX25vZGUuY2FjaGUodXJsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbm9kZV9pbmZvLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbGV2ZWwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7 CisgICAgICAgICAgICAgICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46 dmlldzpmZXRjaDplcnJvcicsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNo ZWQnLCBtLCBzZWxmLmZpZWxkKTsKKyAgICAgICAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgZmVhc2libGUgdGhhdCB0aGUg ZGF0YSBtYXkgbm90IGhhdmUgYmVlbiBmZXRjaGVkLgorICAgICAgICAgICAg ICAgICAgZGF0YSA9IChkYXRhICYmIGRhdGEuZGF0YSkgfHwgW107CisKKyAg ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgKiBUcmFu c2Zvcm0gdGhlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAqLworICAgICAg ICAgICAgICAgICAgdHJhbnNmb3JtID0gKHRoaXMuZmllbGQuZ2V0KCd0cmFu c2Zvcm0nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBz ZWxmLmRlZmF1bHRzLnRyYW5zZm9ybSk7CisgICAgICAgICAgICAgICAgICBp ZiAodHJhbnNmb3JtICYmIF8uaXNGdW5jdGlvbih0cmFuc2Zvcm0pKSB7Cisg ICAgICAgICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRpb25zJywg dHJhbnNmb3JtLmJpbmQoc2VsZiwgZGF0YSkpOworICAgICAgICAgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWVsZC5z ZXQoJ29wdGlvbnMnLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0pLAorICAgICAgICAgICAgLy8gU2VsZWN0MiBjb250cm9sIGZvciBhZGRp bmcgbmV3IHRva2VucworICAgICAgICAgICAgc2VsZWN0MjogeworICAgICAg ICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsIHdpZHRoOiAnc3R5bGUnLAor ICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IHRva2VuJwor ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgZmlyc3RfZW1wdHk6IHRy dWUsCisgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgICByZXR1cm4gXy5pc1VuZGVmaW5lZChzZWxmLm1vZGVsLmdl dCgnb2lkJykpOworICAgICAgICAgICAgfQorICAgICAgICAgIH1dLAorICAg ICAgICAgIGhlYWRlckRlZmF1bHRzID0ge3Rva2VuOiBudWxsfSwKKyAgICAg ICAgICAvLyBHcmlkIGNvbHVtbnMgYmFja2dyaWQKKyAgICAgICAgICBncmlk Q29scyA9IFsndG9rZW4nLCAnZGljdG5hbWUnXTsKKworICAgICAgLy8gQ3Jl YXRpbmcgbW9kZWwgZm9yIGhlYWRlciBjb250cm9sIHdoaWNoIGlzIHVzZWQg dG8gYWRkIG5ldyB0b2tlbnMKKyAgICAgIHNlbGYuaGVhZGVyRGF0YSA9IG5l dyAoQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6 IGhlYWRlckRlZmF1bHRzLAorICAgICAgICBzY2hlbWE6IGhlYWRlclNjaGVt YQorICAgICAgfSkpKHt9KTsKKworICAgICAgLy8gQ3JlYXRpbmcgdmlldyBm cm9tIGhlYWRlciBzY2hlbWEgaW4gdG9rZW5zIGNvbnRyb2wKKyAgICAgIHZh ciBoZWFkZXJHcm91cHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEo CisgICAgICAgICAgc2VsZi5maWVsZC5nZXQoJ25vZGVfaW5mbycpLCBzZWxm LmhlYWRlckRhdGEsICdjcmVhdGUnLAorICAgICAgICAgIHNlbGYuZmllbGQu Z2V0KCdzY2hlbWFfbm9kZScpLCBzZWxmLmZpZWxkLmdldCgnbm9kZV9kYXRh JykKKyAgICAgICAgICApLAorICAgICAgICAgIGZpZWxkcyA9IFtdOworCisg ICAgICBfLmVhY2goaGVhZGVyR3JvdXBzLCBmdW5jdGlvbihvKSB7CisgICAg ICAgIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQoby5maWVsZHMpOworICAgICAg fSk7CisgICAgICBzZWxmLmhlYWRlckZpZWxkcyA9IG5ldyBCYWNrZm9ybS5G aWVsZHMoZmllbGRzKTsKKworICAgICAgLy8gY3JlYXRpbmcgZ3JpZCB1c2lu ZyBncmlkIGNvbHVtbnMKKyAgICAgIHNlbGYuZ3JpZFNjaGVtYSA9IEJhY2tm b3JtLmdlbmVyYXRlR3JpZENvbHVtbnNGcm9tTW9kZWwoCisgICAgICAgICAg c2VsZi5maWVsZC5nZXQoJ25vZGVfaW5mbycpLCBzZWxmLmZpZWxkLmdldCgn bW9kZWwnKSwKKyAgICAgICAgICAnZWRpdCcsIGdyaWRDb2xzLCBzZWxmLmZp ZWxkLmdldCgnc2NoZW1hX25vZGUnKQorICAgICAgICAgICk7CisKKyAgICAg 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 aW5kKCJidXR0b24uYWRkIikucmVtb3ZlKCk7CisgICAgICB9CisgICAgICBz ZWxmLiRoZWFkZXIgPSAkaGVhZGVyOworICAgICAgcmV0dXJuICRoZWFkZXI7 CisgICAgfSwKKworICAgIC8vIFByb3ZpZGluZyBldmVudCBoYW5kbGVyIGZv ciBhZGQgYnV0dG9uIGluIGhlYWRlcgorICAgIGV2ZW50czogXy5leHRlbmQo CisgICAgICAgICAgICAgIHt9LCBCYWNrZm9ybS5VbmlxdWVDb2xDb2xsZWN0 aW9uQ29udHJvbC5wcm90b3R5cGUuZXZlbnRzLAorICAgICAgICAgICAgICB7 J2NsaWNrIGJ1dHRvbi5hZGQnOiAnYWRkVG9rZW5zJ30KKyAgICAgICAgICAg ICksCisKKyAgICAvLyBTaG93IHRva2VuL2RpY3Rpb25hcnkgZ3JpZAorICAg IHNob3dHcmlkQ29udHJvbDogZnVuY3Rpb24oZGF0YSkgeworCisgICAgICB2 YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgdGl0bGVUbXBsID0gXy50ZW1w bGF0ZSgiPGRpdiBjbGFzcz0nc3Vibm9kZS1oZWFkZXInPjwvZGl2PiIpLAor ICAgICAgICAgICRncmlkQm9keSA9ICQoIjxkaXY+PC9kaXY+IiwgeworICAg ICAgICAgICAgY2xhc3M6J3BnYWRtaW4tY29udHJvbC1ncm91cCBiYWNrZ3Jp ZCBmb3JtLWdyb3VwIGNvbC14cy0xMiBvYmplY3Qgc3Vibm9kZScKKyAgICAg ICAgICB9KS5hcHBlbmQoCisgICAgICAgICAgICAgIHRpdGxlVG1wbCh7bGFi ZWw6IGRhdGEubGFiZWx9KQorICAgICAgICAgICAgKTsKKworICAgICAgJGdy aWRCb2R5LmFwcGVuZChzZWxmLmdlbmVyYXRlSGVhZGVyKGRhdGEpKTsKKwor ICAgICAgdmFyIGdyaWRDb2x1bW5zID0gXy5jbG9uZSh0aGlzLmdyaWRTY2hl bWEuY29sdW1ucyk7CisKKyAgICAgIC8vIEluc2VydCBEZWxldGUgQ2VsbCBp bnRvIEdyaWQKKyAgICAgIGlmIChkYXRhLmRpc2FibGVkID09IGZhbHNlICYm IGRhdGEuY2FuRGVsZXRlKSB7CisgICAgICAgICAgZ3JpZENvbHVtbnMudW5z aGlmdCh7CisgICAgICAgICAgICBuYW1lOiAicGctYmFja2Zvcm0tZGVsZXRl IiwgbGFiZWw6ICIiLAorICAgICAgICAgICAgY2VsbDogQmFja2dyaWQuRXh0 ZW5zaW9uLkRlbGV0ZUNlbGwsCisgICAgICAgICAgICBlZGl0YWJsZTogZmFs c2UsIGNlbGxfcHJpb3JpdHk6IC0xCisgICAgICAgICAgfSk7CisgICAgICB9 CisKKyAgICAgIGlmIChzZWxmLmdyaWQpIHsKKyAgICAgICAgc2VsZi5ncmlk LnJlbW92ZSgpOworICAgICAgICBzZWxmLmdyaWQubnVsbDsKKyAgICAgIH0K KyAgICAgIC8vIEluaXRpYWxpemUgYSBuZXcgR3JpZCBpbnN0YW5jZQorICAg ICAgdmFyIGdyaWQgPSBzZWxmLmdyaWQgPSBuZXcgQmFja2dyaWQuR3JpZCh7 CisgICAgICAgIGNvbHVtbnM6IGdyaWRDb2x1bW5zLAorICAgICAgICBjb2xs ZWN0aW9uOiBzZWxmLmNvbGxlY3Rpb24sCisgICAgICAgIGNsYXNzTmFtZTog ImJhY2tncmlkIHRhYmxlLWJvcmRlcmVkIgorICAgICAgfSk7CisgICAgICBz ZWxmLiRncmlkID0gZ3JpZC5yZW5kZXIoKS4kZWw7CisKKyAgICAgICRncmlk Qm9keS5hcHBlbmQoc2VsZi4kZ3JpZCk7CisKKyAgICAgIC8vIEZpbmQgc2Vs ZWN0ZWQgZGljdGlvbmFyaWVzIGluIGdyaWQgYW5kIHNob3cgaXQgYWxsIHRv Z2V0aGVyCisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg ICBzZWxmLmhlYWRlckRhdGEuc2V0KHsKKyAgICAgICAgICAndG9rZW4nOiBz ZWxmLiRoZWFkZXIuZmluZCgKKyAgICAgICAgICAgICdkaXZbaGVhZGVyPSJ0 b2tlbiJdIHNlbGVjdCcKKyAgICAgICAgICAgICkudmFsKCkKKyAgICAgICAg ICAgIH0sIHtzaWxlbnQ6dHJ1ZX0KKyAgICAgICAgICApOworICAgICAgfSwg MTApOworCisgICAgICAvLyBSZW5kZXIgbm9kZSBncmlkCisgICAgICByZXR1 cm4gJGdyaWRCb2R5OworICAgIH0sCisKKyAgICAvLyBXaGVuIHVzZXIgY2hh bmdlIHRoZSBoZWFkZXIgY29udHJvbCB0byBhZGQgYSBuZXcgdG9rZW4KKyAg ICBoZWFkZXJEYXRhQ2hhbmdlZDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIg c2VsZiA9IHRoaXMsIHZhbCwKKyAgICAgICAgICBkYXRhID0gdGhpcy5oZWFk ZXJEYXRhLnRvSlNPTigpLAorICAgICAgICAgIGluU2VsZWN0ZWQgPSBmYWxz ZSwKKyAgICAgICAgICBjaGVja1ZhcnMgPSBbJ3Rva2VuJ107CisKKyAgICAg IGlmICghc2VsZi4kaGVhZGVyKSB7CisgICAgICAgIHJldHVybjsKKyAgICAg IH0KKworICAgICAgaWYgKHNlbGYuY29udHJvbF9kYXRhLmNhbkFkZCkgewor ICAgICAgICBzZWxmLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgaWYgKCFpblNlbGVjdGVkKSB7CisgICAgICAgICAgICBfLmVh Y2goY2hlY2tWYXJzLCBmdW5jdGlvbih2KSB7CisgICAgICAgICAgICAgIGlm ICghaW5TZWxlY3RlZCkgeworICAgICAgICAgICAgICAgIHZhbCA9IG0uZ2V0 KHYpOworICAgICAgICAgICAgICAgIGluU2VsZWN0ZWQgPSAoKAorICAgICAg ICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2 YWwpKSAmJgorICAgICAgICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQoZGF0 YVt2XSkgfHwgXy5pc051bGwoZGF0YVt2XSkpCisgICAgICAgICAgICAgICAg ICApIHx8CisgICAgICAgICAgICAgICAgICAodmFsID09IGRhdGFbdl0pKTsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAg fQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg ICBpblNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgc2VsZi4k aGVhZGVyLmZpbmQoJ2J1dHRvbi5hZGQnKS5wcm9wKCdkaXNhYmxlZCcsIGlu U2VsZWN0ZWQpOworICAgIH0sCisKKyAgICAvLyBHZXQgY2FsbGVkIHdoZW4g dXNlciBjbGljayBvbiBhZGQgYnV0dG9uIGhlYWRlcgorICAgIGFkZFRva2Vu czogZnVuY3Rpb24oZXYpIHsKKyAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7 CisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgdG9rZW4gPSBz ZWxmLmhlYWRlckRhdGEuZ2V0KCd0b2tlbicpOworCisgICAgICBpZiAoIXRv a2VuIHx8IHRva2VuID09ICcnKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgIH0KKworICAgICAgdmFyIGNvbGwgPSBzZWxmLm1vZGVsLmdldChz ZWxmLmZpZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICBtID0gbmV3IChz ZWxmLmZpZWxkLmdldCgnbW9kZWwnKSkoCisgICAgICAgICAgICAgICAgc2Vs Zi5oZWFkZXJEYXRhLnRvSlNPTigpLCB7CisgICAgICAgICAgICAgICAgICBz aWxlbnQ6IHRydWUsIHRvcDogc2VsZi5tb2RlbC50b3AsCisgICAgICAgICAg ICAgICAgICBjb2xsZWN0aW9uOiBjb2xsLCBoYW5kbGVyOiBjb2xsCisgICAg ICAgICAgICAgICAgfSk7CisKKyAgICAgIC8vIEFkZCBuZXcgcm93IGluIGdy aWQKKyAgICAgIGNvbGwuYWRkKG0pOworCisgICAgICAvLyBJbmRleCBvZiBu ZXdseSBjcmVhdGVkIHJvdyBpbiBncmlkCisgICAgICB2YXIgaWR4ID0gY29s bC5pbmRleE9mKG0pOworCisgICAgICAvLyBpZHggbWF5IG5vdCBiZSBhbHdh eXMgPiAtMSBiZWNhdXNlIG91ciBVbmlxdWVDb2xDb2xsZWN0aW9uIG1heQor ICAgICAgLy8gcmVtb3ZlICdtJyBpZiBkdXBsaWNhdGUgdmFsdWUgZm91bmQu CisgICAgICBpZiAoaWR4ID4gLTEpIHsKKyAgICAgICAgc2VsZi4kZ3JpZC5m aW5kKCcubmV3JykucmVtb3ZlQ2xhc3MoJ25ldycpOworICAgICAgICB2YXIg bmV3Um93ID0gc2VsZi5ncmlkLmJvZHkucm93c1tpZHhdLiRlbDsKKyAgICAg ICAgbmV3Um93LmFkZENsYXNzKCJuZXciKTsKKyAgICAgICAgJChuZXdSb3cp LnBnTWFrZVZpc2libGUoJ2JhY2tmb3JtLXRhYicpOworICAgICAgfSBlbHNl IHsKKyAgICAgICAgZGVsZXRlIG07CisgICAgICB9CisKKyAgICAgIHJldHVy biBmYWxzZTsKKyAgICB9LAorCisgICAgLy8gV2hlbiB1c2VyIGRlbGV0ZSB0 b2tlbi9kaWN0aW9uYXJ5IGVudHJ5IGZyb20gZ3JpZAorICAgIG9uQWRkb3JS ZW1vdmVUb2tlbnM6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHNlbGYgPSB0 aGlzOworCisgICAgICAvKgorICAgICAgICogV2FpdCBmb3IgY29sbGVjdGlv biB0byBiZSB1cGRhdGVkIGJlZm9yZSBjaGVja2luZyBmb3IgdGhlIGJ1dHRv biB0bworICAgICAgICogYmUgZW5hYmxlZCwgb3Igbm90LgorICAgICAgICov CisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgIHNl bGYuY29sbGVjdGlvbi50cmlnZ2VyKCdwZ2FkbWluOnRva2Vuczp1cGRhdGVk Jywgc2VsZi5jb2xsZWN0aW9uKTsKKyAgICAgICAgc2VsZi5oZWFkZXJEYXRh Q2hhbmdlZCgpOworICAgICAgfSwgMTApOworICAgIH0sCisKKyAgICAvLyBX aGVuIGNvbnRyb2wgaXMgYWJvdXQgdG8gZGVzdHJveQorICAgIHJlbW92ZTog ZnVuY3Rpb24oKSB7CisgICAgICAvKgorICAgICAgICogU3RvcCBsaXN0ZW5p bmcgdGhlIGV2ZW50cyByZWdpc3RlcmVkIGJ5IHRoaXMgY29udHJvbC4KKyAg ICAgICAqLworICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRoaXMuaGVhZGVy RGF0YSwgImNoYW5nZSIsIHRoaXMuaGVhZGVyRGF0YUNoYW5nZWQpOworICAg ICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmhlYWRlckRhdGEsICJzZWxlY3QyIiwg dGhpcy5oZWFkZXJEYXRhQ2hhbmdlZCk7CisgICAgICB0aGlzLmxpc3RlblRv KHRoaXMuY29sbGVjdGlvbiwgInJlbW92ZSIsIHRoaXMub25BZGRvclJlbW92 ZVRva2Vucyk7CisKKyAgICAgIFRva2VuQ29udHJvbC5fX3N1cGVyX18ucmVt b3ZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAgIC8vIFJlbW92 ZSB0aGUgaGVhZGVyIG1vZGVsCisgICAgICBkZWxldGUgKHRoaXMuaGVhZGVy RGF0YSk7CisKKyAgICB9CisgIH0pOworCisKKyAgLy8gRXh0ZW5kIHRoZSBj b2xsZWN0aW9uIGNsYXNzIGZvciBGVFMgQ29uZmlndXJhdGlvbgorICBpZiAo IXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1mdHNfY29uZmlndXJhdGlvbiddKSB7 CisgICAgdmFyIGZ0c19kaWN0aW9uYXJpZXMgPSBwZ0FkbWluLkJyb3dzZXIu Tm9kZXNbJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nXSA9CisgICAgICBwZ0Fk bWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2Rl OiAnZnRzX2NvbmZpZ3VyYXRpb24nLAorICAgICAgICBsYWJlbDogJ3t7IF8o J0ZUUyBDb25maWd1cmF0aW9ucycpIH19JywKKyAgICAgICAgdHlwZTogJ2Nv bGwtZnRzX2NvbmZpZ3VyYXRpb24nLAorICAgICAgICBjb2x1bW5zOiBbJ25h bWUnLCAnZGVzY3JpcHRpb24nXQorICAgICAgfSk7CisgIH07CisKKyAgLy8g RXh0ZW5kIHRoZSBub2RlIGNsYXNzIGZvciBGVFMgQ29uZmlndXJhdGlvbgor ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZnRzX2NvbmZpZ3VyYXRpb24nXSkg eworICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX2NvbmZpZ3VyYXRp b24nXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBw YXJlbnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgICAgdHlw ZTogJ2Z0c19jb25maWd1cmF0aW9uJywKKyAgICAgIHNxbEFsdGVySGVscDog J3NxbC1hbHRlcnRzY29uZmlndXJhdGlvbi5odG1sJywKKyAgICAgIHNxbENy ZWF0ZUhlbHA6ICdzcWwtY3JlYXRldHNjb25maWd1cmF0aW9uLmh0bWwnLAor ICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiB0 cnVlLAorICAgICAgbGFiZWw6ICd7eyBfKCdGVFMgZGljdGlvbmFyaWVzJykg fX0nLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgaGFzRGVwZW5kczog dHJ1ZSwKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworCisgICAgICAgIC8v IEF2b2lkIG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAgICAg ICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICByZXR1cm47CisK KyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAg Ly8gQWRkIGNvbnRleHQgbWVudXMgZm9yIEZUUyBDb25maWd1cmF0aW9uCisg ICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1l OiAnY3JlYXRlX2Z0c19jb25maWd1cmF0aW9uX29uX3NjaGVtYScsIG5vZGU6 ICdzY2hlbWEnLAorICAgICAgICAgIG1vZHVsZTogdGhpcywgY2F0ZWdvcnk6 ICdjcmVhdGUnLCBwcmlvcml0eTogNCwKKyAgICAgICAgICBhcHBsaWVzOiBb J29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJv cGVydGllcycsCisgICAgICAgICAgbGFiZWw6ICd7e18oJ0ZUUyBDb25maWd1 cmF0aW9uLi4uJyl9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLWZ0c19jb25maWd1cmF0aW9uJywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZSd9CisgICAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9m dHNfY29uZmlndXJhdGlvbl9vbl9jb2xsJywgbW9kdWxlOiB0aGlzLCBwcmlv cml0eTogNCwKKyAgICAgICAgICBub2RlOiAnY29sbC1mdHNfY29uZmlndXJh dGlvbicsIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwKKyAgICAg ICAgICBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLCBjYXRlZ29y eTogJ2NyZWF0ZScsCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdGVFMgQ29u ZmlndXJhdGlvbi4uLicpIH19JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9 LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1mdHNfY29uZmln dXJhdGlvbicKKyAgICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3Jl YXRlX2Z0c19jb25maWd1cmF0aW9uJywgbm9kZTogJ2Z0c19jb25maWd1cmF0 aW9uJywKKyAgICAgICAgICBtb2R1bGU6IHRoaXMsIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwKKyAgICAgICAgICBjYWxsYmFjazogJ3Nob3df b2JqX3Byb3BlcnRpZXMnLCBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5 OiA0LAorICAgICAgICAgIGxhYmVsOiAne3tfKCdGVFMgQ29uZmlndXJhdGlv bi4uLicpfX0nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCisgICAgICAg ICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWZ0c19jb25maWd1cmF0aW9uJwor ICAgICAgICAgIH1dKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIERlZmluaW5n IG1vZGVsIGZvciBGVFMgQ29uZmlndXJhdGlvbiBub2RlCisgICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAg ICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsICAg ICAgICAvLyBGVFMgQ29uZmlndXJhdGlvbiBuYW1lCisgICAgICAgICAgb3du ZXI6IHVuZGVmaW5lZCwgICAgICAgLy8gRlRTIENvbmZpZ3VyYXRpb24gb3du ZXIKKyAgICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLCAvLyBDb21t ZW50IG9uIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgICAgc2NoZW1hOiB1 bmRlZmluZWQsICAgICAgLy8gU2NoZW1hIG5hbWUgRlRTIENvbmZpZ3VyYXRp b24gYmVsb25ncyB0bworICAgICAgICAgIHByc25hbWU6IHVuZGVmaW5lZCwg ICAgLy8gRlRTIHBhcnNlciBsaXN0IGZvciBGVFMgQ29uZmlndXJhdGlvbiBu b2RlCisgICAgICAgICAgY29weV9jb25maWc6IHVuZGVmaW5lZCwgLy8gRlRT IGNvbmZpZ3VyYXRpb24gbGlzdCB0byBjb3B5IGZyb20KKyAgICAgICAgICB0 b2tlbnM6IHVuZGVmaW5lZCAgICAgIC8vIHRva2VuL2RpY3Rpb25hcnkgcGFp ciBsaXN0IGZvciBub2RlCisgICAgICAgIH0sCisgICAgICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAgICAgICAgdmFyIGlz TmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOworCisgICAgICAgICAgaWYg KGlzTmV3KSB7CisgICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dz ZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2Vy OworICAgICAgICAgICAgdGhpcy5zZXQoeydvd25lcic6IHVzZXJJbmZvLm5h bWV9LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQorICAgICAgICAg IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFs aXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ3NjaGVtYScpKSkgeworICAgICAgICAg ICAgICB0aGlzLnNldCgnc2NoZW1hJywgdGhpcy5ub2RlX2luZm8uc2NoZW1h Ll9pZCk7CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAvLyBE ZWZpbmluZyBzY2hlbWEgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAg IHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7 IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50 XzUwJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVs Oid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAg IGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1 ZSwgbW9kZTpbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ293bmVyJywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsn cHJvcGVydGllcycsICdlZGl0JywnY3JlYXRlJ10sIG5vZGU6ICdyb2xlJywK KyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNv bnRyb2wKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzY2hlbWEnLCBs YWJlbDogJ3t7IF8oJ1NjaGVtYScpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsnY3JlYXRlJywnZWRpdCdd LCBub2RlOiAnc2NoZW1hJywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1s aXN0LWJ5LWlkJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2Ny aXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdz dHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAncHJzbmFtZScsIGxhYmVsOiAne3sgXygnUGFyc2Vy Jyl9fScsdHlwZTogJ3RleHQnLAorICAgICAgICAgIHVybDogJ3BhcnNlcnMn LCBmaXJzdF9lbXB0eTogdHJ1ZSwKKyAgICAgICAgICBncm91cDogJ3t7IF8o J0RlZmluaXRpb24nKSB9fScsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9u cycsCisgICAgICAgICAgZGVwczogWydjb3B5X2NvbmZpZyddLAorICAgICAg ICAgIC8vZGlzYWJsZSBwYXJzZXIgd2hlbiB1c2VyIHNlbGVjdCBjb3B5X2Nv bmZpZyBtYW51YWxseSBhbmQgdmljYS12ZXJzYQorICAgICAgICAgIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICB2YXIgY29weV9jb25m aWcgPSBtLmdldCgnY29weV9jb25maWcnKTsKKyAgICAgICAgICAgIHJldHVy biBtLmlzTmV3KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKF8uaXNOdWxs KGNvcHlfY29uZmlnKSB8fAorICAgICAgICAgICAgICAgICAgICBfLmlzVW5k ZWZpbmVkKGNvcHlfY29uZmlnKSB8fAorICAgICAgICAgICAgICAgICAgICBj b3B5X2NvbmZpZyA9PT0gJycpID8gZmFsc2UgOiB0cnVlOworICAgICAgICAg IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb3B5X2NvbmZpZycs IGxhYmVsOiAne3sgXygnQ29weSBDb25maWcnKX19Jyx0eXBlOiAndGV4dCcs CisgICAgICAgICAgbW9kZTogWydjcmVhdGUnXSwgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFq YXgtb3B0aW9ucycsIHVybDogJ2NvcHlDb25maWcnLCBkZXBzOiBbJ3Byc25h bWUnXSwKKworICAgICAgICAgIC8vZGlzYWJsZSBjb3B5X2NvbmZpZyB3aGVu IHVzZXIgc2VsZWN0IHBhcnNlciBtYW51YWxseSBhbmQgdmljYS12ZXJzYQor ICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICB2YXIgcGFyc2VyID0gbS5nZXQoJ3Byc25hbWUnKTsKKyAgICAgICAgICAg IHJldHVybiBtLmlzTmV3KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKF8u aXNOdWxsKHBhcnNlcikgfHwKKyAgICAgICAgICAgICAgICAgICAgXy5pc1Vu ZGVmaW5lZChwYXJzZXIpIHx8CisgICAgICAgICAgICAgICAgICAgIHBhcnNl ciA9PT0gJycpID8gZmFsc2UgOiB0cnVlOworICAgICAgICAgIH0KKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICd0b2tlbnMnLCBsYWJlbDogJ3t7IF8o J1Rva2VucycpIH19JywgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAg IGdyb3VwOiAne3sgXygnVG9rZW5zJykgfX0nLCBjb250cm9sOiBUb2tlbkNv bnRyb2wsCisgICAgICAgICAgbW9kZWw6IFRva2VuTW9kZWwsIGNvbHVtbnM6 IFsndG9rZW4nLCAnZGljdGlvbmFyeSddLAorICAgICAgICAgIHVuaXF1ZUNv bCA6IFsndG9rZW4nXSwgbW9kZTogWydjcmVhdGUnLCdlZGl0J10sCisgICAg ICAgICAgY2FuQWRkOiB0cnVlLCBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRl OiB0cnVlCisgICAgICAgICB9XSwKKworICAgICAgICAvKgorICAgICAgICAg KiBUcmlnZ2VycyBjb250cm9sIHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZv ciBuYW1lLAorICAgICAgICAgKiBjb3B5X2NvbmZpZy9wYXJzZXIgYW5kIHNj aGVtYSwgaWYgYW55IG9uZSBvZiB0aGVtIGlzIG5vdCBzcGVjaWZpZWQKKyAg ICAgICAgICogd2hpbGUgY3JlYXRpbmcgbmV3IGZ0cyBjb25maWd1cmF0aW9u CisgICAgICAgICAqLworICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5 cyl7CisgICAgICAgICAgdmFyIG1zZzsKKyAgICAgICAgICB2YXIgbmFtZSA9 IHRoaXMuZ2V0KCduYW1lJyk7CisgICAgICAgICAgdmFyIHBhcnNlciA9IHRo aXMuZ2V0KCdwcnNuYW1lJyk7CisgICAgICAgICAgdmFyIGNvcHlfY29uZmln X29yX3BhcnNlciA9ICEocGFyc2VyID09PSAnJyB8fAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQocGFy c2VyKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF8uaXNOdWxsKHBhcnNlcikpID8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGlzLmdldCgncHJzbmFtZScpIDogdGhp cy5nZXQoJ2NvcHlfY29uZmlnJyk7CisgICAgICAgICAgdmFyIHNjaGVtYSA9 IHRoaXMuZ2V0KCdzY2hlbWEnKTsKKworICAgICAgICAgIC8vIENsZWFyIHRo ZSBleGlzdGluZyBlcnJvciBtb2RlbAorICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5jbGVhcigpOworICAgICAgICAgIHRoaXMudHJpZ2dlcignb24tc3Rh dHVzLWNsZWFyJyk7CisKKyAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgbmFt ZQorICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8CisgICAg ICAgICAgICAgIF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICAgIFN0 cmluZyhuYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7 CisgICAgICAgICAgICBtc2cgPSAne3sgXygnTmFtZSBtdXN0IGJlIHNwZWNp ZmllZCEnKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0 KCduYW1lJywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAg ICAgICAgfQorCisgICAgICAgICAgLy8gVmFsaWRhdGUgcGFyc2VyIG9yIGNv cHlfY29uZmlnCisgICAgICAgICAgZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChj b3B5X2NvbmZpZ19vcl9wYXJzZXIpIHx8CisgICAgICAgICAgICAgICAgICAg Xy5pc051bGwoY29weV9jb25maWdfb3JfcGFyc2VyKSB8fAorICAgICAgICAg ICAgICAgICAgIFN0cmluZyhjb3B5X2NvbmZpZ19vcl9wYXJzZXIpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIG1z ZyA9ICd7eyBfKCdTZWxlY3QgcGFyc2VyIG9yIGNvbmZpZ3VyYXRpb24gdG8g Y29weSEnKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0 KCdwYXJzZXInLCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAg ICAgICAgICB9CisKKyAgICAgICAgICAvLyBWYWxpZGF0ZSBzY2hlbWEKKyAg ICAgICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwKKyAg ICAgICAgICAgICAgICAgICBfLmlzTnVsbChzY2hlbWEpIHx8CisgICAgICAg ICAgICAgICAgICAgU3RyaW5nKHNjaGVtYSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1Nj aGVtYSBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsKKyAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5zZXQoJ3NjaGVtYScsIG1zZyk7CisgICAgICAgICAg ICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVy biBudWxsOworICAgICAgICB9CisgICAgICB9KQorICAgIH0pOworICB9CisK K3JldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX2NvbmZpZ3VyYXRp b24nXTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1w bGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2NvcHlfY29u ZmlnLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90 ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2NvcHlf Y29uZmlnLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41ODRmYzAwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9zcWwvOS4xX3BsdXMvY29weV9jb25maWcuc3FsCkBAIC0wLDAgKzEsMTUg QEAKK3sjIEZFVENIIGNvcHkgY29uZmlnIGZvciBGVFMgQ09ORklHVVJBVElP TiAjfQoreyUgaWYgY29weV9jb25maWcgJX0KK1NFTEVDVAorICAgIGNmZy5v aWQsCisgICAgY2ZnbmFtZSwKKyAgICBuc3BuYW1lLAorICAgIG4ub2lkIGFz IHNjaGVtYW9pZAorRlJPTQorICAgIHBnX3RzX2NvbmZpZyBjZmcKKyAgICBK T0lOIHBnX25hbWVzcGFjZSBuCisgICAgT04gbi5vaWQ9Y2ZnbmFtZXNwYWNl CitPUkRFUiBCWQorICAgIG5zcG5hbWUsCisgICAgY2ZnbmFtZQoreyUgZW5k aWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVz L2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9m dHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmQ3OWYzCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRp b25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbApAQCAtMCwwICsxLDE1IEBACit7IyBDUkVBVEUgRlRTIENP TkZJR1VSQVRJT04gU3RhdGVtZW50ICN9Cit7JSBpZiBkYXRhIGFuZCBkYXRh LnNjaGVtYSBhbmQgZGF0YS5uYW1lICV9CitDUkVBVEUgVEVYVCBTRUFSQ0gg Q09ORklHVVJBVElPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEubmFtZSkgfX0gKAoreyUgaWYgJ2NvcHlfY29uZmlnJyBpbiBkYXRhICV9 CisgICAgQ09QWT17eyBkYXRhLmNvcHlfY29uZmlnIH19Cit7JSBlbGlmICdw cnNuYW1lJyBpbiBkYXRhICV9CisgICAgUEFSU0VSID0ge3sgZGF0YS5wcnNu YW1lIH19Cit7JSBlbmRpZiAlfQorKTsKK3sjIERlc2NyaXB0aW9uIGZvciBG VFNfQ09ORklHVVJBVElPTiAjfQorCit7JSBpZiBkYXRhLmRlc2NyaXB0aW9u ICV9CitDT01NRU5UIE9OIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3sg Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAg SVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRp ZiAlfXslIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25z L3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZGVs ZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90 ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2RlbGV0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA1 MmY2MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSw0IEBACit7IyBEUk9Q IEZUUyBDT05GSUdVUkFUSU9OIFN0YXRlbWVudCAjfQoreyUgaWYgc2NoZW1h IGFuZCBuYW1lICV9CitEUk9QIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04g e3tjb25ufHF0SWRlbnQoc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUp fX0geyUgaWYgY2FzY2FkZSAlfUNBU0NBREV7JWVuZGlmJX07Cit7JSBlbmRp ZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMv ZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2RpY3Rpb25hcmllcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9kaWN0aW9uYXJp ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYw ZTdiMGYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9kaWN0aW9uYXJpZXMuc3FsCkBAIC0wLDAgKzEsNyBAQAor eyMgRkVUQ0ggRElDVElPTkFSSUVTIHN0YXRlbWVudCAjfQorU0VMRUNUCisg ICAgZGljdG5hbWUKK0ZST00KKyAgICBwZ190c19kaWN0CitPUkRFUiBCWQor ICAgIGRpY3RuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3Rl bXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZ2V0X25h bWUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3Rl bXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZ2V0X25h bWUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcy MzhiOGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9nZXRfbmFtZS5zcWwKQEAgLTAsMCArMSwxNyBAQAoreyMg R0VUIEZUUyBDT05GSUdVUkFUSU9OIG5hbWUgI30KK3slIGlmIGNmZ2lkICV9 CitTRUxFQ1QKKyAgICBjZmcuY2ZnbmFtZSBhcyBuYW1lLAorICAgICgKKyAg ICBTRUxFQ1QKKyAgICAgICAgbnNwbmFtZQorICAgIEZST00KKyAgICAgICAg cGdfbmFtZXNwYWNlCisgICAgV0hFUkUKKyAgICAgICAgb2lkID0gY2ZnLmNm Z25hbWVzcGFjZQorICAgICkgYXMgc2NoZW1hCitGUk9NCisgICAgcGdfdHNf Y29uZmlnIGNmZworV0hFUkUKKyAgICBjZmcub2lkID0ge3tjZmdpZH19OjpP SUQ7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRz X2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9z cWwvOS4xX3BsdXMvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmVjNTBhY2IKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19j b25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwKQEAgLTAsMCAr MSwxMyBAQAoreyMgRkVUQ0ggRlRTIENPTkZJR1VSQVRJT04gTkFNRSBzdGF0 ZW1lbnQgI30KK1NFTEVDVAorICAgIG9pZCwgY2ZnbmFtZSBhcyBuYW1lCitG Uk9NCisgICAgcGdfdHNfY29uZmlnIGNmZworV0hFUkUKK3slIGlmIHNjaWQg JX0KKyAgICBjZmcuY2ZnbmFtZXNwYWNlID0ge3tzY2lkfX06Ok9JRAoreyUg ZWxpZiBjZmdpZCAlfQorICAgIGNmZy5vaWQgPSB7e2NmZ2lkfX06Ok9JRAor eyUgZW5kaWYgJX0KKworT1JERVIgQlkgbmFtZQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL3BhcnNlci5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29u ZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85 LjFfcGx1cy9wYXJzZXIuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmNiY2E5YzkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25m aWd1cmF0aW9uL3NxbC85LjFfcGx1cy9wYXJzZXIuc3FsCkBAIC0wLDAgKzEs MjQgQEAKK3sjIFBBUlNFUiBuYW1lIGZyb20gRlRTIENPTkZJR1VSQVRJT04g T0lEICN9Cit7JSBpZiBjZmdpZCAlfQorU0VMRUNUCisgICAgY2ZncGFyc2Vy CitGUk9NCisgICAgcGdfdHNfY29uZmlnCit3aGVyZQorICAgIG9pZCA9IHt7 Y2ZnaWR9fTo6T0lECit7JSBlbmRpZiAlfQorCisKK3sjIFBBUlNFUiBsaXN0 ICN9Cit7JSBpZiBwYXJzZXIgJX0KK1NFTEVDVAorICAgIHByc25hbWUsCisg ICAgbnNwbmFtZSwKKyAgICBuLm9pZCBhcyBzY2hlbWFvaWQKK0ZST00KKyAg ICBwZ190c19wYXJzZXIKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuCisgICAg T04gbi5vaWQ9cHJzbmFtZXNwYWNlCitPUkRFUiBCWQorICAgIHByc25hbWU7 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRz X2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9z cWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9u L3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5hMmYzNzZlCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5z cWwKQEAgLTAsMCArMSwyNSBAQAoreyMgRkVUQ0ggcHJvcGVydGllcyBmb3Ig RlRTIENPTkZJR1VSQVRJT04gI30KK1NFTEVDVAorICAgIGNmZy5vaWQsCisg ICAgY2ZnLmNmZ25hbWUgYXMgbmFtZSwKKyAgICBwZ19nZXRfdXNlcmJ5aWQo Y2ZnLmNmZ293bmVyKSBhcyBvd25lciwKKyAgICBjZmcuY2ZncGFyc2VyIGFz IHBhcnNlciwKKyAgICBjZmcuY2ZnbmFtZXNwYWNlIGFzIHNjaGVtYSwKKyAg ICBwYXJzZXIucHJzbmFtZSBhcyBwcnNuYW1lLAorICAgIGRlc2NyaXB0aW9u CitGUk9NCisgICAgcGdfdHNfY29uZmlnIGNmZworICAgIExFRlQgT1VURVIg Sk9JTiBwZ190c19wYXJzZXIgcGFyc2VyCisgICAgT04gcGFyc2VyLm9pZD1j ZmcuY2ZncGFyc2VyCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0 aW9uIGRlcworICAgIE9OIChkZXMub2Jqb2lkPWNmZy5vaWQgQU5EIGRlcy5j bGFzc29pZD0ncGdfdHNfY29uZmlnJzo6cmVnY2xhc3MpCitXSEVSRQoreyUg aWYgc2NpZCAlfQorICAgIGNmZy5jZmduYW1lc3BhY2UgPSB7e3NjaWR9fTo6 T0lECit7JSBlbGlmIG5hbWUgJX0KKyAgICBjZmcuY2ZnbmFtZSA9IHt7bmFt ZXxxdExpdGVyYWx9fQoreyUgZW5kaWYgJX0KK3slIGlmIGNmZ2lkICV9Cisg ICAgQU5EIGNmZy5vaWQgPSB7e2NmZ2lkfX06Ok9JRAoreyUgZW5kaWYgJX0K K09SREVSIEJZIGNmZy5jZmduYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1 cmF0aW9uL3NxbC85LjFfcGx1cy9zY2hlbWEuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJh dGlvbi9zcWwvOS4xX3BsdXMvc2NoZW1hLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iNTZjZWI4Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvc2NoZW1hLnNxbApA QCAtMCwwICsxLDE5IEBACit7IyBGRVRDSCBzdGF0ZW1lbnQgZm9yIFNDSEVN QSBuYW1lICN9Cit7JSBpZiBkYXRhLnNjaGVtYSAlfQorU0VMRUNUCisgICAg bnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZQorV0hFUkUKKyAgICBv aWQgPSB7e2RhdGEuc2NoZW1hfX06Ok9JRAorCit7JSBlbGlmIGRhdGEuaWQg JX0KK1NFTEVDVAorICAgIG5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3Bh Y2UgbnNwCisgICAgTEVGVCBKT0lOIHBnX3RzX2NvbmZpZyBjZmcKKyAgICBP TiBjZmcuY2ZnbmFtZXNwYWNlID0gbnNwLm9pZAorV0hFUkUKKyAgICBjZmcu b2lkID0ge3tkYXRhLmlkfX06Ok9JRAoreyUgZW5kaWYgJX0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9zcWwuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRz X2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9z cWwvOS4xX3BsdXMvc3FsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lMzEzMDdkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvc3FsLnNxbApAQCAtMCwwICsxLDc1 IEBACit7IyBSRVZFUlNFRCBFTkdJTkVFUkVEIFNRTCBGT1IgRlRTIENPTkZJ R1VSQVRJT04gI30KK3slIGlmIGNmZ2lkIGFuZCBzY2lkICV9CitTRUxFQ1QK KyAgICBhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCksIEUnXG5cbicp IGFzIHNxbAorRlJPTQorICAgICgKKyAgICBTRUxFQ1QKKyAgICAgICAgRSct LSBUZXh0IFNlYXJjaCBDT05GSUdVUkFUSU9OOiAnIHx8IHF1b3RlX2lkZW50 KG5zcG5hbWUpIHx8IEUnLicKKyAgICAgICAgfHwgcXVvdGVfaWRlbnQoY2Zn LmNmZ25hbWUpIHx8CisgICAgICAgIEUnXG5cbi0tIERST1AgVEVYVCBTRUFS Q0ggQ09ORklHVVJBVElPTiAnIHx8IHF1b3RlX2lkZW50KG5zcG5hbWUpIHx8 CisgICAgICAgIEUnLicgfHwgcXVvdGVfaWRlbnQoY2ZnLmNmZ25hbWUpIHx8 CisgICAgICAgIEUnXG5cbkNSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFU SU9OICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwKKyAgICAgICAgRScu JyB8fCAgcXVvdGVfaWRlbnQoY2ZnLmNmZ25hbWUpIHx8IEUnIChcbicgfHwK KyAgICAgICAgRSdcdFBBUlNFUiA9ICcgfHwgcGFyc2VybmFtZSB8fAorICAg ICAgICBFJ1xuKTsnIHx8CisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdI RU4gZGVzY3JpcHRpb24gSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAg ICAgIEUnXG5cbkNPTU1FTlQgT04gVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElP TiAnIHx8CisgICAgICAgICAgICAgICAgcXVvdGVfaWRlbnQobnNwbmFtZSkg fHwgRScuJyB8fCBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAgICAg ICAgICAgICAgICBFJyBJUyAnIHx8IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJh bChkZXNjcmlwdGlvbikgfHwgRSc7JworICAgICAgICAgICAgRUxTRSAnJwor ICAgICAgICBFTkQgfHwKKyAgICAgICAgKAorICAgICAgICBTRUxFQ1QgYXJy YXkoCisJICAgICAgICBTRUxFQ1QKKwkgICAgICAgICAgICAnQUxURVIgVEVY VCBTRUFSQ0ggQ09ORklHVVJBVElPTiAnIHx8IHF1b3RlX2lkZW50KG5zcG5h bWUpIHx8CisJICAgICAgICAgICAgRScuJyB8fCBxdW90ZV9pZGVudChjZmcu Y2ZnbmFtZSkgfHwgJyBBREQgTUFQUElORyBGT1IgJyB8fAorCSAgICAgICAg ICAgIHQuYWxpYXMgIHx8ICcgV0lUSCAnIHx8CisJICAgICAgICAgICAgYXJy YXlfdG9fc3RyaW5nKGFycmF5X2FnZyhkaWN0LmRpY3RuYW1lKSwgJywgJykg fHwgJzsnCisgICAgICAgICAgICBGUk9NCisgICAgICAgICAgICAgICAgcGdf dHNfY29uZmlnX21hcCBtYXAKKyAgICAgICAgICAgICAgICBMRUZUIEpPSU4g KAorICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRva2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWxpYXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgRlJPTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfY2F0 YWxvZy50c190b2tlbl90eXBlKGNmZy5jZmdwYXJzZXIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICkgdCBPTiAodC50b2tpZCA9IG1hcC5tYXB0b2tl bnR5cGUpCisgICAgICAgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3Rz X2RpY3QgZGljdCBPTiAobWFwLm1hcGRpY3QgPSBkaWN0Lm9pZCkKKyAgICAg ICAgICAgIFdIRVJFCisgICAgICAgICAgICAgICAgbWFwLm1hcGNmZyA9IGNm Zy5vaWQKKyAgICAgICAgICAgIEdST1VQIEJZIHQuYWxpYXMKKyAgICAgICAg ICAgIE9SREVSIEJZIHQuYWxpYXMpCisgICAgICAgICkgYXMgc3FsCisgICAg RlJPTQorICAgICAgICBwZ190c19jb25maWcgY2ZnCisgICAgTEVGVCBKT0lO ICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBkZXMuZGVzY3JpcHRp b24gYXMgZGVzY3JpcHRpb24sCisgICAgICAgICAgICBkZXMub2Jqb2lkIGFz IGRlc2NvaWQKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgcGdfZGVzY3Jp cHRpb24gZGVzCisgICAgICAgIFdIRVJFCisgICAgICAgICAgICBkZXMub2Jq b2lkPXt7Y2ZnaWR9fTo6T0lEIEFORCBkZXMuY2xhc3NvaWQ9J3BnX3RzX2Nv bmZpZyc6OnJlZ2NsYXNzCisgICAgKSBhIE9OIChhLmRlc2NvaWQgPSBjZmcu b2lkKQorICAgIExFRlQgSk9JTiAoCisgICAgICAgIFNFTEVDVAorICAgICAg ICAgICAgbnNwbmFtZSwKKyAgICAgICAgICAgIG5zcC5vaWQgYXMgbm9pZAor ICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19uYW1lc3BhY2UgbnNwCisg ICAgICAgIFdIRVJFCisgICAgICAgICAgICBvaWQgPSB7e3NjaWR9fTo6T0lE CisgICAgKSBiIE9OIChiLm5vaWQgPSBjZmcuY2ZnbmFtZXNwYWNlKQorICAg IExFRlQgSk9JTigKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBwcnMu cHJzbmFtZSBhcyBwYXJzZXJuYW1lLAorICAgICAgICAgICAgcHJzLm9pZCBh cyBvaWQKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgcGdfdHNfcGFyc2Vy IHBycworICAgICljIE9OIChjLm9pZCA9IGNmZy5jZmdwYXJzZXIpCisgICAg V0hFUkUKKyAgICAgICBjZmcub2lkPXt7Y2ZnaWR9fTo6T0lECisgICAgKSBl OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy90b2tl bkRpY3RMaXN0LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVz L3Rva2VuRGljdExpc3Quc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmU4YTJkNWIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25m aWd1cmF0aW9uL3NxbC85LjFfcGx1cy90b2tlbkRpY3RMaXN0LnNxbApAQCAt MCwwICsxLDIzIEBACit7IyBGZXRjaCB0b2tlbi9kaWN0aW9uYXJ5IGxpc3Qg Zm9yIEZUUyBDT05GSUdVUkFUSU9OICN9Cit7JSBpZiBjZmdpZCAlfQorU0VM RUNUCisgICAgKAorICAgIFNFTEVDVAorICAgICAgICB0LmFsaWFzCisgICAg RlJPTQorICAgICAgICBwZ19jYXRhbG9nLnRzX3Rva2VuX3R5cGUoY2ZncGFy c2VyKSBBUyB0CisgICAgV0hFUkUKKyAgICAgICAgdC50b2tpZCA9IG1hcHRv a2VudHlwZQorICAgICkgQVMgdG9rZW4sCisgICAgYXJyYXlfYWdnKGRpY3Ru YW1lKSBBUyBkaWN0bmFtZQorRlJPTQorICAgIHBnX3RzX2NvbmZpZ19tYXAK KyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdHNfY29uZmlnIE9OIG1hcGNmZyA9 IHBnX3RzX2NvbmZpZy5vaWQKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdHNf ZGljdCBPTiBtYXBkaWN0ID0gcGdfdHNfZGljdC5vaWQKK1dIRVJFCisgICAg bWFwY2ZnPXt7Y2ZnaWR9fTo6T0lECitHUk9VUCBCWQorICAgIHRva2VuCitP UkRFUiBCWQorICAgIDEKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwv OS4xX3BsdXMvdG9rZW5zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25m aWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzku MV9wbHVzL3Rva2Vucy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uY2UwYzVlYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZp Z3VyYXRpb24vc3FsLzkuMV9wbHVzL3Rva2Vucy5zcWwKQEAgLTAsMCArMSwx MCBAQAoreyMgVG9rZW5zIGZvciBGVFMgQ09ORklHVVJBVElPTiBub2RlICN9 CisKK3slIGlmIHBhcnNlcm9pZCAlfQorU0VMRUNUCisgICAgYWxpYXMKK0ZS T00KKyAgICB0c190b2tlbl90eXBlKHt7cGFyc2Vyb2lkfX06Ok9JRCkKK09S REVSIEJZCisgICAgYWxpYXMKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRz X2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9z cWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZTQ5N2JlZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2Nv bmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCAr MSw1MSBAQAoreyMgVVBEQVRFIHN0YXRlbWVudCBmb3IgRlRTIENPTkZJR1VS QVRJT04gI30KK3slIGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRh Lm5hbWUgJX0KK3slIHNldCBzY2hlbWEgPSBvX2RhdGEuc2NoZW1hICV9Cit7 JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAl fQoreyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK0FMVEVSIFRFWFQgU0VB UkNIIENPTkZJR1VSQVRJT04ge3tjb25ufHF0SWRlbnQob19kYXRhLnNjaGVt YSl9fS57e2Nvbm58cXRJZGVudChvX2RhdGEubmFtZSl9fQorICAgIFJFTkFN RSBUTyB7e2RhdGEubmFtZX19OworCit7JSBlbmRpZiAlfQoreyUgaWYgJ3Rv a2VucycgaW4gZGF0YSAlfQoreyUgaWYnY2hhbmdlZCcgaW4gZGF0YS50b2tl bnMgJX0KK3slIGZvciB0b2sgaW4gZGF0YS50b2tlbnMuY2hhbmdlZCAlfQor QUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58cXRJZGVu dChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUpfX0KKyAg ICBBTFRFUiBNQVBQSU5HIEZPUiB7e3Rvay50b2tlbn19CisgICAgV0lUSCB7 JSBmb3IgZGljdCBpbiB0b2suZGljdG5hbWUgJX17e2RpY3R9fXslIGlmIG5v dCBsb29wLmxhc3QgJX0sIHslIGVuZGlmICV9eyUgZW5kZm9yICV9OworCit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZidhZGRlZCcgaW4gZGF0 YS50b2tlbnMgJX0KK3slIGZvciB0b2sgaW4gZGF0YS50b2tlbnMuYWRkZWQg JX0KK0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tjb25ufHF0 SWRlbnQob19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChuYW1lKX19 CisgICAgQUREIE1BUFBJTkcgRk9SIHt7dG9rLnRva2VufX0KKyAgICBXSVRI IHslIGZvciBkaWN0IGluIHRvay5kaWN0bmFtZSAlfXt7ZGljdH19eyUgaWYg bm90IGxvb3AubGFzdCAlfSwgeyUgZW5kaWYgJX17JSBlbmRmb3IgJX07CisK K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmJ2RlbGV0ZWQnIGlu IGRhdGEudG9rZW5zICV9Cit7JSBmb3IgdG9rIGluIGRhdGEudG9rZW5zLmRl bGV0ZWQgJX0KK0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tj b25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChu YW1lKX19CisgICAgRFJPUCBNQVBQSU5HIEZPUiB7e3Rvay50b2tlbn19Owor Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ293bmVyJyBpbiBkYXRhIGFuZCBkYXRhLm93bmVyICE9IG9fZGF0YS5v d25lciAlfQorQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nv bm58cXRJZGVudChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5h bWUpfX0KKyAgICBPV05FUiBUTyB7e2RhdGEub3duZXJ9fTsKKworeyUgZW5k aWYgJX0KK3slIGlmICdzY2hlbWEnIGluIGRhdGEgYW5kIGRhdGEuc2NoZW1h ICE9IG9fZGF0YS5zY2hlbWEgJX0KK3slIHNldCBzY2hlbWEgPSBkYXRhLnNj aGVtYSV9CitBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29u bnxxdElkZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFt ZSl9fQorICAgIFNFVCBTQ0hFTUEge3tkYXRhLnNjaGVtYX19OworCit7JSBl bmRpZiAlfQoreyUgaWYgJ2Rlc2NyaXB0aW9uJyBpbiBkYXRhIGFuZCBkYXRh LmRlc2NyaXB0aW9uICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVO VCBPTiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29ubnxxdElkZW50 KHNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChuYW1lKX19CisgICAgSVMge3sg ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQor eyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLnVp LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5q cwppbmRleCBkZTMwZTQ4Li43ZDU4NjkzIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpLmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMKQEAgLTQ5OSw2 ICs0OTksMzUgQEAgZnVuY3Rpb24oJCwgXywgcGdBZG1pbiwgQmFja2JvbmUs IEJhY2tmb3JtLCBBbGVydGlmeSwgTm9kZSkgewogICAgIH0pCiAgIH0pOwog CisgICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBtb2RlbCBjbGFz cyB0byBjcmVhdGUgYSBvcHRpb24vdmFsdWUgcGFpcgorICB2YXIgTXVsdGlT ZWxlY3RBamF4Q2VsbCA9IEJhY2tncmlkLkV4dGVuc2lvbi5NdWx0aVNlbGVj dEFqYXhDZWxsID0gQmFja2dyaWQuRXh0ZW5zaW9uLk5vZGVBamF4T3B0aW9u c0NlbGwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogXy5leHRlbmQoe30sIE5v ZGVBamF4T3B0aW9uc0NlbGwucHJvdG90eXBlLmRlZmF1bHRzLCB7CisgICAg ICB0cmFuc2Zvcm06IHVuZGVmaW5lZCwKKyAgICAgIHVybF93aXRoX2lkOiBm YWxzZSwKKyAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgYWxsb3dDbGVhcjog dHJ1ZSwKKyAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgZnJvbSB0aGUg bGlzdCcsCisgICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAgICBtdWx0 aXBsZTogdHJ1ZQorICAgICAgfSwKKyAgICAgIG9wdDogeworICAgICAgICBs YWJlbDogbnVsbCwKKyAgICAgICAgdmFsdWU6IG51bGwsCisgICAgICAgIGlt YWdlOiBudWxsLAorICAgICAgICBzZWxlY3RlZDogZmFsc2UKKyAgICAgICB9 CisgICAgfSksCisgICAgZ2V0VmFsdWVGcm9tRE9NOiBmdW5jdGlvbigpIHsK KyAgICAgIHZhciByZXMgPSBbXTsKKworICAgICAgdGhpcy4kZWwuZmluZCgi c2VsZWN0IikuZmluZCgnOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbigpIHsK KyAgICAgICAgcmVzLnB1c2goJCh0aGlzKS5hdHRyKCd2YWx1ZScpKTsKKyAg ICAgIH0pOworCisgICAgICByZXR1cm4gcmVzOworICAgIH0sCisgIH0pOwor CiAgIC8qCiAgICAqIENvbnRyb2wgdG8gc2VsZWN0IG11bHRpcGxlIGNvbHVt bnMuCiAgICAqLwo= --94eb2c0486180e6ba30532b5e7d5 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 --94eb2c0486180e6ba30532b5e7d5--