Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bNJ5t-0001pm-Cq for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Jul 2016 12:16:49 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bNJ5s-0001M7-Vi for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Jul 2016 12:16:49 +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 1bNJ5r-0001M1-Ng for pgadmin-hackers@postgresql.org; Wed, 13 Jul 2016 12:16:48 +0000 Received: from mail-oi0-x229.google.com ([2607:f8b0:4003:c06::229]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bNJ5n-0004Te-V0 for pgadmin-hackers@postgresql.org; Wed, 13 Jul 2016 12:16:46 +0000 Received: by mail-oi0-x229.google.com with SMTP id s66so66655648oif.1 for ; Wed, 13 Jul 2016 05:16:43 -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:from:date:message-id:subject:to :cc; bh=WI58jsRZPXLSi8y9UR5kbR3rCiK6PsIymC9jPDLZ7cI=; b=iSI7e/t06EH+DP+QJSPk1ZuFRM3iZG5v3SQaNiDaaXBmzL2hqmILWbBR+VOIRYGrYy i8CbPhTtoTfGUAUqyMpM+jNY0xIPl7hg5pATq5YmX/azJgIDiZFFI/PTQs/6Pn4h5gW2 6CpB/oAUP6IZh0J6+mr8//akVC62ponxsBjIK5SpxRaSzhFoIdDaLKpVBSZMrNo05W5f y3duW5e9c9CwRN54rIOBbTBI4DiZGqFrZhq05aumQBX3Q1pZlPzFOB266wdfjo7GKILz StZVRRjU7fz+Ztz5aGrd18gIhrFmNh9rVAC7OcO2AYEDektMyzJbPhuEX6r0UXo5lPaD BfMQ== 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:from:date :message-id:subject:to:cc; bh=WI58jsRZPXLSi8y9UR5kbR3rCiK6PsIymC9jPDLZ7cI=; b=XpD0jWftVDpdFOiEWpa/+58iLB/6dG+OQJc7A/PVmCRCYeK2G0IX+hnmCNvVLXrrnQ lRyhwAglYlio/XzpljBd3kppNMyfwOHp4ibSPhA17kHQY2FVIc9p8VidGX8b2QuuU4xo MJx7RM7gxhYvGIEPHiriXgkRYEvLpPDY4ftGzw+zYT7Uip7HEOF5hstXZMLiRtl/WKRh 70Rj9fDmlflTAlpXDOjPNf5e0TbTHYXJ7Z5+JImfaJzEZZnVPQUYRQuAbxyxyXzFMMGB 2PFuZPnw8AxSXeinzdlT7gbur6UyYp9YORhtzMPMRjLfJoVrwPssb6mIqYEEYmg44B5Y 5dlA== X-Gm-Message-State: ALyK8tIMbkB4IJq/2fOKb7lJG1u3PM+A5FwUtF7M44/UY/VCTvBzkySWBsM9YsvRgWDlOhbI9iWpNZKNzCr1o2ip X-Received: by 10.202.168.12 with SMTP id r12mr1051740oie.1.1468412202854; Wed, 13 Jul 2016 05:16:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.5.99 with HTTP; Wed, 13 Jul 2016 05:16:42 -0700 (PDT) In-Reply-To: References: <70470862-26C1-4281-838E-F2C755E5C645@enterprisedb.com> <671D8CC8-C1D8-4CC1-BC32-431C496C4C5C@enterprisedb.com> From: Harshal Dhumal Date: Wed, 13 Jul 2016 17:46:42 +0530 Message-ID: Subject: Re: PATCH: Fix the issue for saving query output as CSV To: Dave Page Cc: Akshay Joshi , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a113cc4a2bc5b350537835b34 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 --001a113cc4a2bc5b350537835b34 Content-Type: multipart/alternative; boundary=001a113cc4a2bc5b300537835b32 --001a113cc4a2bc5b300537835b32 Content-Type: text/plain; charset=UTF-8 Hi, PFA rebased patch for RM1405 -- *Harshal Dhumal* *Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Wed, Jul 13, 2016 at 5:15 PM, Harshal Dhumal < harshal.dhumal@enterprisedb.com> wrote: > Yes sure > > -- > *Harshal Dhumal* > *Software Engineer* > > EnterpriseDB India: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > On Wed, Jul 13, 2016 at 5:10 PM, Dave Page wrote: > >> Hi >> >> Can you rebase this please? >> >> Thanks. >> >> On Mon, Jul 11, 2016 at 9:16 AM, Harshal Dhumal < >> harshal.dhumal@enterprisedb.com> wrote: >> >>> Hi, >>> >>> PFA patch for RM1405. Also to allow download in runtime we will still >>> need patch >>> >>> sent by Neel. >>> >>> Changes: To download query result to CSV directly from server and not to >>> use download attr. of anchor tag () as it's not support by all of major >>> browsers (e.g. Safari). >>> Also it's not feasible to load data in html to download if result set of >>> query is very huge (in GBs). >>> >>> >>> >>> >>> >>> -- >>> *Harshal Dhumal* >>> *Software Engineer* >>> >>> EnterpriseDB India: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> On Wed, Jun 29, 2016 at 4:53 PM, Akshay Joshi < >>> akshay.joshi@enterprisedb.com> wrote: >>> >>>> >>>> >>>> On Wed, Jun 29, 2016 at 3:52 PM, Murtuza Zabuawala >>> enterprisedb.com> wrote: >>>> >>>>> Yes, It will not work in runtime as well but I think Neel is working >>>>> for fix in run time for this issue, We might able to fix it in run time but >>>>> issue persists in Safari unless they add support in browser itself. >>>>> >>>>> https://webkit.org/status/#feature-download-attribute >>>>> >>>>> >>>>> > On 29-Jun-2016, at 3:40 pm, Dave Page wrote: >>>>> > >>>>> > On Tue, Jun 28, 2016 at 10:33 AM, Murtuza Zabuawala >>>>> > wrote: >>>>> >> Yes Dave, I agree that downloading files has been supported in >>>>> browsers since long . >>>>> >> >>>>> >> But in general we send request & then receives files from web >>>>> server but in our case we are fetching our data from Backbone models & then >>>>> converting it to CSV format for downloading as a file at client side in >>>>> browser itself. >>>>> > >>>>> > If Safari doesn't support client-side saving of files, then I have to >>>>> > wonder if our runtime will either - both are webkit based. >>>>> > >>>>> > So I guess the next question to ask is; why don't we just generate >>>>> the >>>>> > CSV on the server side? >>>>> > >>>>> >>>>> @Akshay, >>>>> Can you please suggest on above? >>>>> >>>> >>>> As we already have complete data in backgrid's full collection, so >>>> I have used it instead of fetching it again. >>>> >>>>> >>>>> > -- >>>>> > Dave Page >>>>> > Blog: http://pgsnake.blogspot.com >>>>> > Twitter: @pgsnake >>>>> > >>>>> > EnterpriseDB UK: http://www.enterprisedb.com >>>>> > The Enterprise PostgreSQL Company >>>>> >>>>> >>>>> >>>>> -- >>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>>> To make changes to your subscription: >>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>> >>>> >>>> >>>> >>>> -- >>>> *Akshay Joshi* >>>> *Principal Software Engineer * >>>> >>>> >>>> >>>> *Phone: +91 20-3058-9517 <%2B91%2020-3058-9517>Mobile: +91 976-788-8246* >>>> >>> >>> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --001a113cc4a2bc5b300537835b32 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA rebased patch for RM1405


On Wed, Jul 13, 2016 at 5:15 PM, Harshal Dhu= mal <harshal.dhumal@enterprisedb.com> wrote:
Yes sure

=
--=C2=A0
Harshal Dhumal
Software Enginee= r

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
T= he Enterprise PostgreSQL Company

On Wed, Jul 13= , 2016 at 5:10 PM, Dave Page <dpage@pgadmin.org> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
Hi

Can yo= u rebase this please?

Thanks.

On Mon, Jul 11, = 2016 at 9:16 AM, Harshal Dhumal <harshal.dhumal@enterprisedb= .com> wrote:
Hi,

PFA patch for RM1405. Also to allow download = in runtime we will still need patch sent by Neel.

Changes: To = download query result to CSV directly from server and not to use download a= ttr. of anchor tag (<a>) as it's not support by all of major brow= sers (e.g. Safari).
Also it's not feasible to load data in html to d= ownload if result set of query is very huge (in GBs).





--=C2=A0
Harshal Dhumal
Software Engine= er

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
= The Enterprise PostgreSQL Company
<= /div>

On Wed, Jun 29, 2016 at 4:53 PM, Akshay Josh= i <akshay.joshi@enterprisedb.com> wrote:

=
On Wed, Jun 29, 2016 at 3:52 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wro= te:
Yes, It will not work in runtime as w= ell but I think Neel is working for fix in run time for this issue, We migh= t able to fix it in run time but issue persists in Safari unless they add s= upport in browser itself.

https://webkit.org/status/#feature-download-att= ribute


> On 29-Jun-2016, at 3:40 pm, Dave Page <dpage@pgadmin.org> wrote:
>
> On Tue, Jun 28, 2016 at 10:33 AM, Murtuza Zabuawala
> <murtuza.zabuawala@enterprisedb.com> wrote:
>> Yes Dave, I agree that downloading files has been supported in bro= wsers since long .
>>
>> But in general we send request & then receives files from web = server but in our case we are fetching our data from Backbone models & = then converting it to CSV format for downloading as a file at client side i= n browser itself.
>
> If Safari doesn't support client-side saving of files, then I have= to
> wonder if our runtime will either - both are webkit based.
>
> So I guess the next question to ask is; why don't we just generate= the
> CSV on the server side?
>

@Akshay,
Can you please suggest on above?

=C2=A0 =C2=A0As we already have complete data in backgrid's full collection, so I have used it instead of fetching it again. =C2=A0 = =C2=A0

> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company



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


--
Akshay Joshi
Principal Software Enginee= r=C2=A0

=

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




--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @= pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL= Company


--001a113cc4a2bc5b300537835b32-- --001a113cc4a2bc5b350537835b34 Content-Type: text/x-patch; charset=US-ASCII; name="RM1405_V3_download_query_result_to_csv_server_side.patch" Content-Disposition: attachment; filename="RM1405_V3_download_query_result_to_csv_server_side.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iqkuoxxe0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBs YXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vdG9vbHMv ZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKaW5kZXgg ZjJmNjA4NS4uNjdjZjEwNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9v bHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFn cmlkL2luZGV4Lmh0bWwKQEAgLTE4Miw2ICsxODIsNyBAQAogICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJl ZGl0b3ItcGFuZWwiPjwvZGl2PgorICAgICAgICA8aWZyYW1lIGlkPSJkb3du bG9hZC1jc3YiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvaWZyYW1lPgogICAg IDwvZGl2PgogPC9kaXY+CiB7JSBlbmRibG9jayAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CmluZGV4IGM3 MTNmYjUuLjQ4ZmQwYmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvX19pbml0X18ucHkKQEAgLTI4LDYgKzI4LDcgQEAgZnJv bSBwZ2FkbWluLnV0aWxzLnNxbGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUg aW1wb3J0IFNRTEF1dG9Db21wbGV0ZQogCiBmcm9tIGNvbmZpZyBpbXBvcnQg UEdfREVGQVVMVF9EUklWRVIKIAorCiAjIGltcG9ydCB1bnF1b3RlIGZyb20g dXJsaWIgZm9yIHB5dGhvbjIueCBhbmQgcHl0aG9uMy54CiB0cnk6CiAgICAg ZnJvbSB1cmxsaWIgaW1wb3J0IHVucXVvdGUKQEAgLTEyMTIsMyArMTIxMyw1 OCBAQCBkZWYgc2F2ZV9maWxlKCk6CiAgICAgICAgICAgICAnc3RhdHVzJzog VHJ1ZSwKICAgICAgICAgfQogICAgICkKKworCitAYmx1ZXByaW50LnJvdXRl KCcvcXVlcnlfdG9vbC9kb3dubG9hZC88aW50OnRyYW5zX2lkPicsIG1ldGhv ZHM9WyJHRVQiXSkKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIHN0YXJ0X3F1ZXJ5 X2Rvd25sb2FkX3Rvb2wodHJhbnNfaWQpOgorICAgIHN5bmNfY29ubiA9IE5v bmUKKyAgICBzdGF0dXMsIGVycm9yX21zZywgY29ubiwgdHJhbnNfb2JqLCBz ZXNzaW9uX29iaiA9IGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19p ZCkKKworICAgIGlmIHN0YXR1cyBhbmQgY29ubiBpcyBub3QgTm9uZSBcCisg ICAgICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNz aW9uX29iaiBpcyBub3QgTm9uZToKKworICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgZGF0YSBhbmQgJ3F1ZXJ5JyBpbiBkYXRhOgor ICAgICAgICAgICAgICAgIHNxbCA9IGRhdGFbJ3F1ZXJ5J10KKyAgICAgICAg ICAgICAgICBjb25uX2lkID0gc3RyKHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5 OTkpKQorICAgICAgICAgICAgICAgIHN5bmNfY29ubiA9IGNvbm4ubWFuYWdl ci5jb25uZWN0aW9uKAorICAgICAgICAgICAgICAgICAgICBkaWQ9dHJhbnNf b2JqLmRpZCwKKyAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1jb25uX2lk LAorICAgICAgICAgICAgICAgICAgICBhdXRvX3JlY29ubmVjdD1GYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgYXN5bmM9RmFsc2UKKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgICAgICBzeW5jX2Nvbm4uY29ubmVjdChh dXRvY29tbWl0PUZhbHNlKQorCisgICAgICAgICAgICAgICAgIyBUaGlzIHJl dHVybnMgZ2VuZXJhdG9yIG9mIHJlY29yZHMuCisgICAgICAgICAgICAgICAg c3RhdHVzLCBnZW4gPSBzeW5jX2Nvbm4uZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNf Y3N2KHNxbCwgcmVjb3Jkcz0yMDAwKQorCisgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgY29ubi5tYW5hZ2Vy LnJlbGVhc2UoY29ubl9pZD1jb25uX2lkLCBkaWQ9dHJhbnNfb2JqLmRpZCkK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZ2VuKSkKKworICAgICAgICAgICAgICAgIGRl ZiBjbGVhbnVwKCk6CisgICAgICAgICAgICAgICAgICAgIGNvbm4ubWFuYWdl ci5jb25uZWN0aW9uc1tzeW5jX2Nvbm4uY29ubl9pZF0uX3JlbGVhc2UoKQor ICAgICAgICAgICAgICAgICAgICBkZWwgY29ubi5tYW5hZ2VyLmNvbm5lY3Rp b25zW3N5bmNfY29ubi5jb25uX2lkXQorCisgICAgICAgICAgICAgICAgciA9 IFJlc3BvbnNlKGdlbigpLCBtaW1ldHlwZT0ndGV4dC9jc3YnKQorCisgICAg ICAgICAgICAgICAgaWYgJ2ZpbGVuYW1lJyBpbiBkYXRhIGFuZCBkYXRhWydm aWxlbmFtZSddICE9ICIiOgorICAgICAgICAgICAgICAgICAgICBmaWxlbmFt ZSA9IGRhdGFbJ2ZpbGVuYW1lJ10KKyAgICAgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdGltZQorICAgICAgICAgICAg ICAgICAgICBmaWxlbmFtZSA9IHN0cihpbnQodGltZS50aW1lKCkpKSArICIu Y3N2IgorCisgICAgICAgICAgICAgICAgci5oZWFkZXJzWyJDb250ZW50LURp c3Bvc2l0aW9uIl0gPSAiYXR0YWNobWVudDtmaWxlbmFtZT17MH0iLmZvcm1h dChmaWxlbmFtZSkKKworICAgICAgICAgICAgICAgIHIuY2FsbF9vbl9jbG9z ZShjbGVhbnVwKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHIKKworICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjb25u Lm1hbmFnZXIucmVsZWFzZShjb25uX2lkPWNvbm5faWQsIGRpZD10cmFuc19v YmouZGlkKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisgICAgZWxzZToKKyAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1nZXR0ZXh0KCJU cmFuc2FjdGlvbiBzdGF0dXMgY2hlY2sgZmFpbGVkLiIpKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxl ZGl0b3IvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCmlu ZGV4IDVmYjA3YzMuLmU4YjJhMGQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVk aXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVt cGxhdGVzL3NxbGVkaXRvci9qcy9zcWxlZGl0b3IuanMKQEAgLTI1ODgsNzYg KzI1ODgsNjMgQEAgZGVmaW5lKAogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rp b24gd2lsbCBkb3dubG9hZCB0aGUgZ3JpZCBkYXRhIGFzIENTViBmaWxlLgog ICAgICAgICBfZG93bmxvYWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZh ciBzZWxmID0gdGhpczsKLSAgICAgICAgICB2YXIgY29sbCA9IHNlbGYuY29s bGVjdGlvbi5mdWxsQ29sbGVjdGlvbiA9PT0gdW5kZWZpbmVkID8gc2VsZi5j b2xsZWN0aW9uIDogc2VsZi5jb2xsZWN0aW9uLmZ1bGxDb2xsZWN0aW9uOwot Ci0gICAgICAgICAgaWYgKHNlbGYuY29sdW1ucyAhPSB1bmRlZmluZWQgJiYK LSAgICAgICAgICAgICAgY29sbCAhPSB1bmRlZmluZWQgJiYKLSAgICAgICAg ICAgICAgY29sbC5sZW5ndGggPiAwKQotICAgICAgICAgIHsKLSAgICAgICAg ICAgIHZhciBjc3ZfY29sID0gXy5pbmRleEJ5KHNlbGYuY29sdW1ucywgJ25h bWUnKSwKLSAgICAgICAgICAgICAgICBsYWJlbHMgPSBfLnBsdWNrKHNlbGYu Y29sdW1ucywgJ2xhYmVsJyksCi0gICAgICAgICAgICAgICAga2V5cyA9IF8u cGx1Y2soc2VsZi5jb2x1bW5zLCAnbmFtZScpOwotCi0gICAgICAgICAgICAv LyBGZXRjaCB0aGUgaXRlbXMgZnJvbSBmdWxsQ29sbGVjdGlvbiBhbmQgY29u dmVydCBpdCBhcyBjc3YgZm9ybWF0Ci0gICAgICAgICAgICB2YXIgY3N2ID0g a2V5cy5qb2luKCcsJykgKyAnXG4nOwotICAgICAgICAgICAgY3N2ICs9IGNv bGwubWFwKGZ1bmN0aW9uKGl0ZW0pIHsKLSAgICAgICAgICAgICAgICByZXR1 cm4gXy5tYXAoa2V5cywgZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAg ICAgICB2YXIgY2VsbCA9IGNzdl9jb2wgW2tleV0uY2VsbCwKLSAgICAgICAg ICAgICAgICAgICAgICAvLyBzdXBwb3NlIHlvdSB3YW50IHRvIHByZXNlcnZl IGN1c3RvbSBmb3JtYXR0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgZm9y bWF0dGVyID0gY2VsbC5wcm90b3R5cGUgJiYgY2VsbC5wcm90b3R5cGUuZm9y bWF0dGVyOwotCi0gICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVy ICYmIGZvcm1hdHRlci5mcm9tUmF3ID8KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXR0ZXIuZnJvbVJhdyhpdGVtLmdldChrZXkpLCBpdGVt KSA6IGl0ZW0uZ2V0KGtleSk7Ci0gICAgICAgICAgICAgICAgfSkuam9pbign LCcpOwotICAgICAgICAgICAgfSkuam9pbignXG4nKTsKLQotICAgICAgICAg ICAgLy8gRG93bmxvYWQgdGhlIGZpbGUuCi0gICAgICAgICAgICB2YXIgZW5j b2RlZFVyaSA9IGVuY29kZVVSSSgnZGF0YTp0ZXh0L2NzdiZjaGFyc2V0PXV0 Zi04JmZpbGVuYW1lPWRvd25sb2FkLmNzdiZ2YWx1ZT0nICsgY3N2KSwKLSAg ICAgICAgICAgICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ2EnKTsKLSAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVm JywgZW5jb2RlZFVyaSk7Ci0KLSAgICAgICAgICAgIC8qIElmIGRvd25sb2Fk IGlzIGZyb20gdmlldyBkYXRhIHRoZW4gZmlsZSBuYW1lIHNob3VsZCBiZQot ICAgICAgICAgICAgICogdGhlIG9iamVjdCBuYW1lIGZvciB3aGljaCBkYXRh IGlzIHRvIGJlIGRpc3BsYXllZC4KLSAgICAgICAgICAgICAqLwotICAgICAg ICAgICAgaWYgKCFzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKLSAgICAgICAgICAg ICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICB1cmw6ICJ7eyB1cmxfZm9y KCdzcWxlZGl0b3IuaW5kZXgnKSB9fSIgKyAib2JqZWN0L2dldC8iICsgc2Vs Zi50cmFuc0lkLAotICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsCi0g ICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Ci0gICAg ICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7Ci0gICAgICAg ICAgICAgICAgICAgIGZpbGVuYW1lID0gcmVzLmRhdGEucmVzdWx0ICsgJy5j c3YnOwotICAgICAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgn ZG93bmxvYWQnLCBmaWxlbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGxp bmsuY2xpY2soKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICB9LAotICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7 Ci0gICAgICAgICAgICAgICAgICBpZiAoZS5yZWFkeVN0YXRlID09IDApIHsK LSAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoJ0dldCBPYmpl Y3QgTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAne3sgXygn Tm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9u IHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpIH19JwotICAgICAg ICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47 Ci0gICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgdmFyIHNlbGYgPSB0 aGlzLAorICAgICAgICAgIHNlbGVjdGVkX2NvZGUgPSBzZWxmLmdyaWRWaWV3 LnF1ZXJ5X3Rvb2xfb2JqLmdldFNlbGVjdGlvbigpLAorICAgICAgICAgIHNx bCA9ICIiOwogCi0gICAgICAgICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNw b25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgICBpZiAoZS5yZXNwb25zZUpT T04gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAgICAgICAgZS5y ZXNwb25zZUpTT04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKQotICAgICAgICAg ICAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKKyAg ICAgICAgICBpZiAoc2VsZWN0ZWRfY29kZS5sZW5ndGggPiAwKQorICAgICAg ICAgICAgc3FsID0gc2VsZWN0ZWRfY29kZTsKKyAgICAgICAgICBlbHNlCisg ICAgICAgICAgICBzcWwgPSBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2Jq LmdldFZhbHVlKCk7CiAKLSAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KCdHZXQgT2JqZWN0IE5hbWUgRXJyb3InLCBtc2cpOworICAgICAgICAg IC8vIElmIGl0IGlzIGFuIGVtcHR5IHF1ZXJ5LCBkbyBub3RoaW5nLgorICAg ICAgICAgIGlmIChzcWwubGVuZ3RoIDw9IDApIHJldHVybjsKKworICAgICAg ICAgIC8qIElmIGRvd25sb2FkIGlzIGZyb20gdmlldyBkYXRhIHRoZW4gZmls ZSBuYW1lIHNob3VsZCBiZQorICAgICAgICAgICAqIHRoZSBvYmplY3QgbmFt ZSBmb3Igd2hpY2ggZGF0YSBpcyB0byBiZSBkaXNwbGF5ZWQuCisgICAgICAg ICAgICovCisgICAgICAgICAgaWYgKCFzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsK KyAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgIHVybDogInt7 IHVybF9mb3IoJ3NxbGVkaXRvci5pbmRleCcpIH19IiArICJvYmplY3QvZ2V0 LyIgKyBzZWxmLnRyYW5zSWQsCisgICAgICAgICAgICAgIG1ldGhvZDogJ0dF VCcsCisgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewor ICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHsKKyAgICAg ICAgICAgICAgICAgIGZpbGVuYW1lID0gcmVzLmRhdGEucmVzdWx0ICsgJy5j c3YnOworICAgICAgICAgICAgICAgICAgc2VsZi5fdHJpZ2dlcl9jc3ZfZG93 bmxvYWQoc3FsLCBmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9u KGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZS5yZWFkeVN0YXRlID09IDAp IHsKKyAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KCdHZXQgT2Jq ZWN0IE5hbWUgRXJyb3InLAorICAgICAgICAgICAgICAgICAgICd7eyBfKCdO b3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24g dG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykgfX0nCisgICAgICAg ICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgdmFyIGN1 cl90aW1lID0gbmV3IERhdGUoKTsKLSAgICAgICAgICAgICAgdmFyIGZpbGVu YW1lID0gJ2RhdGEtJyArIGN1cl90aW1lLmdldFRpbWUoKSArICcuY3N2JzsK LSAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywg ZmlsZW5hbWUpOwotICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7Ci0gICAg ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAg ICAgICAgICAgYWxlcnRpZnkuYWxlcnQoJ0Rvd25sb2FkIERhdGEnLCAnTm8g ZGF0YSBpcyBhdmFpbGFibGUgdG8gZG93bmxvYWQnKTsKLSAgICAgICAgICB9 CisKKyAgICAgICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNwb25zZVRleHQ7 CisgICAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVm aW5lZCAmJgorICAgICAgICAgICAgICAgICAgICBlLnJlc3BvbnNlSlNPTi5l cnJvcm1zZyAhPSB1bmRlZmluZWQpCisgICAgICAgICAgICAgICAgICBtc2cg PSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKKworICAgICAgICAgICAgICAg IGFsZXJ0aWZ5LmFsZXJ0KCdHZXQgT2JqZWN0IE5hbWUgRXJyb3InLCBtc2cp OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAg ICAgfQorICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBjdXJf dGltZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICB2YXIgZmlsZW5hbWUg PSAnZGF0YS0nICsgY3VyX3RpbWUuZ2V0VGltZSgpICsgJy5jc3YnOworICAg ICAgICAgICAgc2VsZi5fdHJpZ2dlcl9jc3ZfZG93bmxvYWQoc3FsLCBmaWxl bmFtZSk7CisgICAgICAgICAgIH0KKworICAgICAgICB9LAorICAgICAgICAv LyBUcmlnZ2VyIHF1ZXJ5IHJlc3VsdCBkb3dubG9hZCB0byBjc3YuCisgICAg ICAgIF90cmlnZ2VyX2Nzdl9kb3dubG9hZDogZnVuY3Rpb24ocXVlcnksIGZp bGVuYW1lKSB7CisgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAg ICAgICAgbGluayA9ICQodGhpcy5jb250YWluZXIpLmZpbmQoIiNkb3dubG9h ZC1jc3YiKSwKKyAgICAgICAgICAgIHVybCA9ICJ7eyB1cmxfZm9yKCdzcWxl ZGl0b3IuaW5kZXgnKSB9fSIgKyAicXVlcnlfdG9vbC9kb3dubG9hZC8iICsg c2VsZi50cmFuc0lkOworCisgICAgICAgICAgdXJsICs9Ij8iICsgJC5wYXJh bSh7cXVlcnk6cXVlcnksIGZpbGVuYW1lOmZpbGVuYW1lfSk7CisgICAgICAg ICAgbGluay5hdHRyKCJzcmMiLCB1cmwpOwogICAgICAgICB9LAogCiAgICAg ICAgIF9hdXRvX3JvbGxiYWNrOiBmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9fX2luaXRfXy5w eSBiL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9fX2luaXRf Xy5weQppbmRleCAwYmZjZjhhLi5mMmE4NzhiIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29wZzIvX19pbml0X18ucHkKKysr IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL19faW5pdF9f LnB5CkBAIC0xNywxMCArMTcsMTIgQEAgaW1wb3J0IGRhdGV0aW1lCiBpbXBv cnQgb3MKIGltcG9ydCByYW5kb20KIGltcG9ydCBzZWxlY3QKK2ltcG9ydCBz eXMKK2ltcG9ydCBjc3YKIAogaW1wb3J0IHBzeWNvcGcyCiBpbXBvcnQgcHN5 Y29wZzIuZXh0cmFzCi1mcm9tIGZsYXNrIGltcG9ydCBnLCBjdXJyZW50X2Fw cCwgc2Vzc2lvbgorZnJvbSBmbGFzayBpbXBvcnQgZywgY3VycmVudF9hcHAs IHNlc3Npb24sIFJlc3BvbnNlCiBmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBv cnQgZ2V0dGV4dAogZnJvbSBmbGFzay5leHQuc2VjdXJpdHkgaW1wb3J0IGN1 cnJlbnRfdXNlcgogZnJvbSBwZ2FkbWluLnV0aWxzLmNyeXB0byBpbXBvcnQg ZGVjcnlwdApAQCAtMzEsNiArMzMsMTEgQEAgZnJvbSBwZ2FkbWluLm1vZGVs IGltcG9ydCBTZXJ2ZXIsIFVzZXIKIGZyb20gLmtleXdvcmRzIGltcG9ydCBT Y2FuS2V5d29yZAogZnJvbSAuLmFic3RyYWN0IGltcG9ydCBCYXNlRHJpdmVy LCBCYXNlQ29ubmVjdGlvbgogCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMs KToKKyAgICBmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworZWxzZToK KyAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworCiBfID0gZ2V0dGV4dAog CiBBU1lOQ19XQUlUX1RJTUVPVVQgPSAwLjAxICAjIGluIHNlY29uZHMgb3Ig MTAgbWlsbGlzZWNvbmRzCkBAIC0yODAsNyArMjg3LDEwIEBAIEZhaWxlZCB0 byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIoI3tzZXJ2ZXJfaWR9 KSBmb3IgY29ubmVjdGlvbiAoe2Nvbm5faWR9CiAgICAgICAgICMgYXV0b2Nv bW1pdCBmbGFnIGRvZXMgbm90IHdvcmsgd2l0aCBhc3luY2hyb25vdXMgY29u bmVjdGlvbnMuCiAgICAgICAgICMgQnkgZGVmYXVsdCBhc3luY2hyb25vdXMg Y29ubmVjdGlvbiBydW5zIGluIGF1dG9jb21taXQgbW9kZS4KICAgICAgICAg aWYgc2VsZi5hc3luYyA9PSAwOgotICAgICAgICAgICAgc2VsZi5jb25uLmF1 dG9jb21taXQgPSBUcnVlCisgICAgICAgICAgICBpZiAnYXV0b2NvbW1pdCcg aW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2F1dG9jb21taXQnXSA9PSBGYWxzZToK KyAgICAgICAgICAgICAgICBzZWxmLmNvbm4uYXV0b2NvbW1pdCA9IEZhbHNl CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuY29u bi5hdXRvY29tbWl0ID0gVHJ1ZQogICAgICAgICAgICAgcmVnaXN0ZXJfZGF0 ZV90eXBlY2FzdGVycyhzZWxmLmNvbm4pCiAKICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmV4ZWN1dGVfc2NhbGFyKCIiIgpAQCAtMzgwLDExICszOTAs MTIgQEAgV0hFUkUKIAogICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQogCi0g ICAgZGVmIF9fY3Vyc29yKHNlbGYpOgorICAgIGRlZiBfX2N1cnNvcihzZWxm LCBzZXJ2ZXJfY3Vyc29yPUZhbHNlKToKICAgICAgICAgY3VyID0gZ2V0YXR0 cihnLCBzdHIoc2VsZi5tYW5hZ2VyLnNpZCkgKyAnIycgKyBzZWxmLmNvbm5f aWQsIE5vbmUpCiAKICAgICAgICAgaWYgc2VsZi5jb25uZWN0ZWQoKSBhbmQg Y3VyIGFuZCBub3QgY3VyLmNsb3NlZDoKLSAgICAgICAgICAgIHJldHVybiBU cnVlLCBjdXIKKyAgICAgICAgICAgIGlmIG5vdCBzZXJ2ZXJfY3Vyc29yIG9y IChzZXJ2ZXJfY3Vyc29yIGFuZCBjdXIubmFtZSk6CisgICAgICAgICAgICAg ICAgcmV0dXJuIFRydWUsIGN1cgogCiAgICAgICAgIGlmIG5vdCBzZWxmLmNv bm5lY3RlZCgpOgogICAgICAgICAgICAgc3RhdHVzID0gRmFsc2UKQEAgLTQx NSw3ICs0MjYsMTMgQEAgQXR0ZW1wdCB0byByZWNvbm5lY3QgZmFpbGVkIHdp dGggdGhlIGVycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwg bXNnCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY3VyID0gc2VsZi5j b25uLmN1cnNvcihjdXJzb3JfZmFjdG9yeT1wc3ljb3BnMi5leHRyYXMuRGlj dEN1cnNvcikKKyAgICAgICAgICAgIGlmIHNlcnZlcl9jdXJzb3I6CisgICAg ICAgICAgICAgICAgIyBQcm92aWRpbmcgbmFtZSB0byBjdXJzb3Igd2lsbCBj cmVhdGUgc2VydmVyIHNpZGUgY3Vyc29yLgorICAgICAgICAgICAgICAgIGN1 cnNvcl9uYW1lID0gIkNVUlNPUjp7MH0iLmZvcm1hdChzZWxmLmNvbm5faWQp CisgICAgICAgICAgICAgICAgY3VyID0gc2VsZi5jb25uLmN1cnNvcihuYW1l PWN1cnNvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3Vyc29yX2ZhY3Rvcnk9cHN5Y29wZzIuZXh0cmFzLkRpY3RD dXJzb3IpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGN1 ciA9IHNlbGYuY29ubi5jdXJzb3IoY3Vyc29yX2ZhY3Rvcnk9cHN5Y29wZzIu ZXh0cmFzLkRpY3RDdXJzb3IpCiAgICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5F cnJvciBhcyBwZToKICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoIiIi CiBGYWlsZWQgdG8gY3JlYXRlIGN1cnNvciBmb3IgcHN5Y29wZzIgY29ubmVj dGlvbiB3aXRoIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBcCkBAIC00NjcsNiAr NDg0LDgzIEBAIEF0dGVtcHQgdG8gcmVjb25uZWN0IGl0IGZhaWxlZCB3aXRo IHRoZSBlcnJvcjoKICAgICAgICAgaWYgc2VsZi5hc3luYyA9PSAxOgogICAg ICAgICAgICAgc2VsZi5fd2FpdChjdXIuY29ubmVjdGlvbikKIAorICAgIGRl ZiBleGVjdXRlX29uX3NlcnZlcl9hc19jc3Yoc2VsZiwgcXVlcnksIHBhcmFt cz1Ob25lLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSwgcmVjb3Jk cz0yMDAwKToKKyAgICAgICAgc3RhdHVzLCBjdXIgPSBzZWxmLl9fY3Vyc29y KHNlcnZlcl9jdXJzb3I9VHJ1ZSkKKyAgICAgICAgc2VsZi5yb3dfY291bnQg PSAwCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZSwgc3RyKGN1cikKKyAgICAgICAgcXVlcnlfaWQgPSByYW5k b20ucmFuZGludCgxLCA5OTk5OTk5KQorCisgICAgICAgIGN1cnJlbnRfYXBw LmxvZ2dlci5sb2coMjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkV4ZWN1dGUgKHdpdGggc2VydmVyIGN1cnNvcikgZm9yIHNlcnZlciAj e3NlcnZlcl9pZH0gLSB7Y29ubl9pZH0gKFF1ZXJ5LWlkOiB7cXVlcnlfaWR9 KTpcbntxdWVyeX0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5faWQ9c2VsZi5j b25uX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBx dWVyeT1xdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcXVlcnlfaWQ9cXVlcnlfaWQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWxfYmxv Y2tpbmdfZXhlY3V0ZShjdXIsIHF1ZXJ5LCBwYXJhbXMpCisgICAgICAgIGV4 Y2VwdCBwc3ljb3BnMi5FcnJvciBhcyBwZToKKyAgICAgICAgICAgIGN1ci5j bG9zZSgpCisgICAgICAgICAgICBlcnJtc2cgPSBzZWxmLl9mb3JtYXR0ZWRf ZXhjZXB0aW9uX21zZyhwZSwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cpCisg ICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCisgICAgICAg ICAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5ICgod2l0aCBzZXJ2 ZXIgY3Vyc29yKSBmb3IgdGhlIHNlcnZlciAje3NlcnZlcl9pZH0gLSB7Y29u bl9pZH0gKFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KTpcbkVycm9yIE1lc3NhZ2U6 e2Vycm1zZ30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VydmVy X2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAgICAgICAgIGNv bm5faWQ9c2VsZi5jb25uX2lkLAorICAgICAgICAgICAgICAgICAgICBxdWVy eT1xdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZywK KyAgICAgICAgICAgICAgICAgICAgcXVlcnlfaWQ9cXVlcnlfaWQKKyAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1 cm4gRmFsc2UsIGVycm1zZworCisgICAgICAgIGltcG9ydCBjb3B5CisKKyAg ICAgICAgZGVmIGdlbigpOgorCisgICAgICAgICAgICByZXN1bHRzID0gY3Vy LmZldGNobWFueShyZWNvcmRzKQorICAgICAgICAgICAgaWYgbm90IHJlc3Vs dHM6CisgICAgICAgICAgICAgICAgaWYgbm90IGN1ci5jbG9zZWQ6CisgICAg ICAgICAgICAgICAgICAgIGN1ci5jbG9zZSgpCisgICAgICAgICAgICAgICAg cmV0dXJuCisKKyAgICAgICAgICAgIGNvbHVtbnMgPSBjdXIuZGVzY3JpcHRp b24gYW5kIFsKKyAgICAgICAgICAgICAgICAgICAgY29weS5kZWVwY29weShk ZXNjLl9hc2RpY3QoKSkgZm9yIGRlc2MgaW4gY3VyLmRlc2NyaXB0aW9uCisg ICAgICAgICAgICAgICAgICAgIF0gb3IgW10KKworICAgICAgICAgICAgaGVh ZGVyID0gW2NbJ25hbWUnXSBmb3IgYyBpbiBjb2x1bW5zXQorCisgICAgICAg ICAgICBhcmdzX2Nzdl9pbyA9IFN0cmluZ0lPKCkKKworICAgICAgICAgICAg Y3N2X3dyaXRlciA9IGNzdi53cml0ZXIoCisgICAgICAgICAgICAgICAgYXJn c19jc3ZfaW8sIGRlbGltaXRlcj1zdHIoJywnKSwgcXVvdGluZz1jc3YuUVVP VEVfTk9OTlVNRVJJQworICAgICAgICAgICAgKQorICAgICAgICAgICAgY3N2 X3dyaXRlci53cml0ZXJvdyhoZWFkZXIpCisgICAgICAgICAgICBjc3Zfd3Jp dGVyLndyaXRlcm93cyhyZXN1bHRzKQorCisgICAgICAgICAgICB5aWVsZCBh cmdzX2Nzdl9pby5nZXR2YWx1ZSgpLnN0cmlwKHN0cignXHJcbicpKQorCisg ICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlc3Vs dHMgPSBjdXIuZmV0Y2htYW55KHJlY29yZHMpCisKKyAgICAgICAgICAgICAg ICBpZiBub3QgcmVzdWx0czoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90 IGN1ci5jbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXIuY2xv c2UoKQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAg ICAgICAgYXJnc19jc3ZfaW8gPSBTdHJpbmdJTygpCisKKyAgICAgICAgICAg ICAgICBjc3Zfd3JpdGVyID0gY3N2LndyaXRlcigKKyAgICAgICAgICAgICAg ICAgICAgYXJnc19jc3ZfaW8sIGRlbGltaXRlcj1zdHIoJywnKSwgcXVvdGlu Zz1jc3YuUVVPVEVfTUlOSU1BTAorICAgICAgICAgICAgICAgICkKKworICAg ICAgICAgICAgICAgIGNzdl93cml0ZXIud3JpdGVyb3dzKHJlc3VsdHMpCisg ICAgICAgICAgICAgICAgeWllbGQgYXJnc19jc3ZfaW8uZ2V0dmFsdWUoKS5z dHJpcChzdHIoJ1xyXG4nKSkKKworICAgICAgICByZXR1cm4gVHJ1ZSwgZ2Vu CisKICAgICBkZWYgZXhlY3V0ZV9zY2FsYXIoc2VsZiwgcXVlcnksIHBhcmFt cz1Ob25lLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSk6CiAgICAg ICAgIHN0YXR1cywgY3VyID0gc2VsZi5fX2N1cnNvcigpCiAgICAgICAgIHNl bGYucm93X2NvdW50ID0gMApAQCAtMTE0Myw3ICsxMjM3LDggQEAgY2xhc3Mg U2VydmVyTWFuYWdlcihvYmplY3QpOgogICAgICAgICByYWlzZSBFeGNlcHRp b24oIkluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUuIikKIAogICAgIGRl ZiBjb25uZWN0aW9uKAotICAgICAgICAgICAgc2VsZiwgZGF0YWJhc2U9Tm9u ZSwgY29ubl9pZD1Ob25lLCBhdXRvX3JlY29ubmVjdD1UcnVlLCBkaWQ9Tm9u ZQorICAgICAgICAgICAgc2VsZiwgZGF0YWJhc2U9Tm9uZSwgY29ubl9pZD1O b25lLCBhdXRvX3JlY29ubmVjdD1UcnVlLCBkaWQ9Tm9uZSwKKyAgICAgICAg ICAgIGFzeW5jPU5vbmUKICAgICApOgogICAgICAgICBtc2dfYWN0aXZlX2Nv bm4gPSBnZXR0ZXh0KAogICAgICAgICAgICAgIlNlcnZlciBoYXMgbm8gYWN0 aXZlIGNvbm5lY3Rpb24uIFBsZWFzZSBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIu IgpAQCAtMTE4OSw3ICsxMjg0LDEwIEBAIFdIRVJFIGRiLm9pZCA9IHswfSIi Ii5mb3JtYXQoZGlkKSkKICAgICAgICAgaWYgbXlfaWQgaW4gc2VsZi5jb25u ZWN0aW9uczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb25z W215X2lkXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXN5bmMgPSAx IGlmIGNvbm5faWQgaXMgbm90IE5vbmUgZWxzZSAwCisgICAgICAgICAgICBp ZiBhc3luYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGFzeW5jID0gMSBp ZiBjb25uX2lkIGlzIG5vdCBOb25lIGVsc2UgMAorICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICBhc3luYyA9IDEgaWYgYXN5bmMgaXMgVHJ1 ZSBlbHNlIDAKICAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbnNbbXlfaWRd ID0gQ29ubmVjdGlvbigKICAgICAgICAgICAgICAgICBzZWxmLCBteV9pZCwg ZGF0YWJhc2UsIGF1dG9fcmVjb25uZWN0LCBhc3luYwogICAgICAgICAgICAg KQo= --001a113cc4a2bc5b350537835b34 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 --001a113cc4a2bc5b350537835b34--