Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSQnh-003B4E-2M for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 02:48:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSQnf-00AqOt-2I for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 02:48:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSQnf-00AqOk-0A for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 02:48:48 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSQnd-000000016Xr-0CJk for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 02:48:46 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-38e7d983f79so11210231fa.0 for ; Wed, 27 May 2026 19:48:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779936523; cv=none; d=google.com; s=arc-20240605; b=grxDCH44iPNAygv9t4+IPcHceuc2iud5eeMfzSBiZLjI1wksvSr8+1+4uPY/qL8TJX OEFnsHc7kJndqto0Wer823lwFCYR7UCIRCGK/4LKsnjYN2tNDwPz2fCb/Fr5OJJttL6y pxXzef3uJRg6PKgo09fzQWJ3Ak6/WOvBJLsF+RWpA19H0zUlKv6reWTPW+tGWrBRVUVa BDHB3F6xuLAVbNnn3QQ39SOL9WYl6z+U8f6NJT1saBYkHW6ke4aa6FmSFk24+YVu8nAz qmyDG66WpVD8wXp4I5sr3oV8id7BLQ59jIxtlSCdMBQKiVHU1gXbJL63RTw41Q7LWnjt GsXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=5xARWzEB5mmHDzcTt4cjiSs6taSXKwX4U/Vb7YIQ8pE=; fh=yMPUzyu92ao19NBy0iaRj4tXuLRgfgcbkL4mdPlkRkg=; b=LoJPoYc2rWb8Lw07ltxhRLId5px1usrqaAYnex2BqENnSKVLdIM4pD7Js+5Z2L37m9 0eIMkf++oZOCRLykbSauOOUKyihd6TXQy1aivSQLhjwcxO2RXCdxJGIStYlFsB3u3bhe JzPh/pDn9Up0rkE6wJo0q2pxZDGy6p0SW6GXBRxR7fBLxH06bqglN2ko9Y7uJwrbOscI W7QOjOn7also4RnVeah9R6fzw7AuEVXXr+CwoYZQK/eBSFoqJYxV3g5n5sgVBv4TuL3c jg/47DkqS1LlqQohuP70PdOzMElmKD1VgQpQKa9yrD85xnJ04prfZ01VYxHTx/YPV7cM d+lw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779936523; x=1780541323; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5xARWzEB5mmHDzcTt4cjiSs6taSXKwX4U/Vb7YIQ8pE=; b=LT/hr0HrAyz9163wzEHk2arnHSvZfo62pc/NmitmdfGYIsV4nF+G3toXoC0+rSYh4g 7y0URB/+RaQh9sVB673cuAApNrX/YAcUJaC0vY/GaHhIOXmXHsb9KBTxBX9be42ZDWzE hCD6ZtwAkUGYuuU+TlJGrO2CYHopMf+I/JGhb5Q+d8zbgqHtToIi8kQPrR9BSfx4rbmR OzLWJ8yQGN8NU3HKSzFnBssQGwOL0GLp1D0Rb4i0Qor3Y7KLswxX4q1gOXrU9wwqUMV/ 4CpKrYrm1kBtfo+08Npz50LmHRAxyTkda+DeJxuLiO58JcOvELtsXfwdhziGAixVAZDl 5lpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779936523; x=1780541323; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5xARWzEB5mmHDzcTt4cjiSs6taSXKwX4U/Vb7YIQ8pE=; b=cL4mDoTtB/NUSD8gsIOswKb8qjI/Wir1kJ1FyfJu6EIVTxkh0ZVw1DdJMEVD/W+IfB aqReTCnyhRlXUmyMi6Zz+1wM78J5fevqrU1nTuLQyceVOk8MXE3hwX232lD3oT2WzHqu eQTg/H/+jAfAAG0mIOn9evVvgcvS9RCI9EvoHqcg0uDlIfrP/I8Y0Q1YSdE/kBq65Qqv JbOVKlfLQx0QBrYbm6enGQoG1OTP3WgUmFlxjH2t8A9yHh5ZeX+50FhEaGNt8kHyh/Di x2Pv4SlneiXEqY2LQ98ppMF5JZA5TrKhfsu4/MQISChNlFulSeJaC3Wq/eb4ovgGBJog iX0A== X-Forwarded-Encrypted: i=1; AFNElJ+ZJNWVY5mLslhYsvK5755m9lbYS53UbQfU6fSQAZ3ueuPyvZXqUi6wB+zwo4ahtxZbDHwLSE9/m6mMUxvf@lists.postgresql.org X-Gm-Message-State: AOJu0YxYdubT7H0ZDiRsivm6uv3bwAXgR5zx27YrRQ5xBihow4RPbXWz PnOEMz1QsxJq3HRAHYuedY4r/N3NPyWyV5TydRRJqkx/Km+Qt0Ea/wBO477DKpJS81EI8W71kU2 a81SQpuTJ5xZyTDjRRRIPhR0b+NlApy8= X-Gm-Gg: Acq92OHAjoX0xf5RmCsMryae9b0qH2KAG2IyXZzhDt8Sdk9w64qZeiDrAK/tGP52FNE Q3XY+wCgeXCPITaz3r2LceHH0VZ3tcOQXqUb7gcozh2ESejt1f9of/u34be4Fst5IpnI/x4BU1H t/yKx3jXZO2lqXlj4wTQaBrj/DMgt4AAMgNZc7TcW4Q7NIb+Vgjd+YQz4ZY2jPdlHK/PlLoAdd9 PhljeZ5gZG2wSXjtgy4dXUTfdmv6gKx0/xa5klJFoJAk6UmPJhX+LFmb+VR5NYJEZIYTNekOdze /1UhFmkzaWJz3aHDl3kuxyyPb+s79z2C/Qp17LTbvy/3Xtn1em6PEOxR9MtHZ0abPB7cj0GNAmG mXjun2npBs4xFL1EP X-Received: by 2002:a05:651c:552:b0:38d:e977:5533 with SMTP id 38308e7fff4ca-395d8dc5846mr82327791fa.26.1779936523181; Wed, 27 May 2026 19:48:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Thu, 28 May 2026 12:48:30 +1000 X-Gm-Features: AVHnY4LMrsazN3Tm-qo29W--F-koyYOjutKh8b2gMv7Qto5DdTqM9wt9zEq92Kk Message-ID: Subject: Re: [PATCH] Preserve replication origin OIDs in pg_upgrade To: shveta malik Cc: Shlok Kyal , Zsolt Parragi , vignesh C , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , shveta malik Content-Type: multipart/mixed; boundary="0000000000003010660652d7c4eb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003010660652d7c4eb Content-Type: multipart/alternative; boundary="0000000000003010640652d7c4e9" --0000000000003010640652d7c4e9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 22, 2026 at 8:27=E2=80=AFPM shveta malik wrote: > On Fri, May 22, 2026 at 3:16=E2=80=AFPM Shlok Kyal > wrote: > > > > On Mon, 18 May 2026 at 16:13, Ajin Cherian wrote: > > > > > > Rebased the patch as it was no longer applying. > > > > > Hi Ajin, > > > > I have started reviewing the patch. Here is my comment for v6-0002 patc= h: > > > > Suppose we have a replication setup: publisher -> subscriber > > and we are upgrading subscriber to subscriber_new. > > And if initially 'subscriber_new' has a replication origin, upgrading > > the cluster can error out. > > > > Example: > > We set up a logical replication between publisher node and subscriber > node. > > > > On subscriber node: > > postgres=3D# SELECT * FROM pg_replication_origin; > > roident | roname > > ---------+---------- > > 1 | pg_16393 > > (1 row) > > > > And initially subscriber_new has a replication origin: > > postgres=3D# select pg_replication_origin_create('myname'); > > pg_replication_origin_create > > ------------------------------ > > 1 > > (1 row) > > > > postgres=3D# SELECT * FROM pg_replication_origin; > > roident | roname > > ---------+-------- > > 1 | myname > > (1 row) > > > > Now, if we run pg_upgrade to upgrade subscriber node to subscriber_new > > node, we get an error: > > ``` > > SELECT > pg_catalog.binary_upgrade_create_replication_origin('1'::pg_catalog.oid, > > 'pg_16393'::pg_catalog.name, '0/01743078'::pg_catalog.pg_lsn); > > > psql:subscriber_new/pg_upgrade_output.d/20260522T140312.807/dump/pg_upgra= de_dump_globals.sql:37: > > ERROR: replication origin with ID 1 already exists > > ``` > > > > This error occurs in "Performing Upgrade" stage. Should we add a check > > in the "Performing Consistency Checks" stage so that we don't need to > > re-initdb the new cluster to perform the upgrade? > > Maybe we can add a check similar to > > check_new_cluster_replication_slots(), where pg_upgrade errors out if > > the new cluster already contains replication origins. Thoughts? > > +1. I had the same thought while reviewing the patch today. We should > have it unless there is a reason we have avoided it?? > Fixed this. Added a new check for replication origins and if the new cluster has any existing replication origins, then the check will fail. > > Few trivial comments: > > 1) > > +#include "access/skey.h" > +#include "catalog/indexing.h" > > pg_upgrade_support.c compiles without above. > > Removed. > 2) > + Assert(!OidIsValid(rel->rd_rel->reltoastrelid)); > > Is there a reason for this sanity check? I generally do not see a > Null-Toast table sanity check after every table_open. > > Removed. > 3) > > + > + /* Dump replication origins */ > + if (server_version >=3D 170000 && binary_upgrade && archDumpFormat =3D= =3D > archNull) > + dumpReplicationOrigins(conn); > > why the check is for PG17 specifically? > > In PG17, we started migrating pg_subscription_rel and the remote LSN during upgrades; prior to that, these were not migrated. Given that change, it also makes sense to migrate replication origins from them. Otherwise, when upgrading from PG17 to a later version, you could end up with a subscription where pg_subscription_rel and the remote LSN are migrated, but the corresponding replication origin is not created. On Mon, May 25, 2026 at 5:13=E2=80=AFPM shveta malik wrote: > > One issue in 002: > > binary_upgrade_create_replication_origin() has this: > > + originname =3D PG_GETARG_NAME(1); > + > + roname_d =3D CStringGetTextDatum(NameStr(*originname)); > + > > We are getting origin-name (text) into Name-type which can not be more > than 64 bytes. So if an origin has name more than 64, it will end up > trimming the name post-upgrade. > > I tried this: > > Old-setup: > postgres=3D# SELECT > > pg_replication_origin_create('this_is_a_very_long_replication_origin_name= _that_exceeds_the_limit_of_64'); > pg_replication_origin_create > ------------------------------ > 1 > postgres=3D# select * from pg_replication_origin; > roident | roname > > ---------+---------------------------------------------------------------= ------- > 1 | > this_is_a_very_long_replication_origin_name_that_exceeds_the_limit_of_64 > > > Post-upgrade: name got trimmed to 64 length. > ------------------------- > postgres=3D# select * from pg_replication_origin; > roident | roname > ---------+---------------------------------------------------------------= -- > 1 | this_is_a_very_long_replication_origin_name_that_exceeds_the_l= i > > thanks > Shveta Fixed this. Now binary_upgrade_create_replication_origin handles it similarly to the way pg_replication_origin_create handles the name of the origin. Here's an updated version v7 containing these fixes. regards, Ajin Cherian Fujitsu Australia --0000000000003010640652d7c4e9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Fri, May 22,= 2026 at 8:27=E2=80=AFPM shveta malik <shveta.malik@gmail.com> wrote:
On Fri, May 22, 2026 at 3:16=E2=80=AFPM Sh= lok Kyal <= shlok.kyal.oss@gmail.com> wrote:
>
> On Mon, 18 May 2026 at 16:13, Ajin Cherian <itsajin@gmail.com> wrote:
> >
> > Rebased the patch as it was no longer applying.
> >
> Hi Ajin,
>
> I have started reviewing the patch. Here is my comment for v6-0002 pat= ch:
>
> Suppose we have a replication setup: publisher -> subscriber
> and we are upgrading subscriber to subscriber_new.
> And if initially 'subscriber_new' has a replication origin, up= grading
> the cluster can error out.
>
> Example:
> We set up a logical replication between publisher node and subscriber = node.
>
> On subscriber node:
> postgres=3D# SELECT * FROM pg_replication_origin;
>=C2=A0 roident |=C2=A0 roname
> ---------+----------
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 1 | pg_16393
> (1 row)
>
> And initially subscriber_new has a replication origin:
> postgres=3D# select pg_replication_origin_create('myname'); >=C2=A0 pg_replication_origin_create
> ------------------------------
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01
> (1 row)
>
> postgres=3D# SELECT * FROM pg_replication_origin;
>=C2=A0 roident | roname
> ---------+--------
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 1 | myname
> (1 row)
>
> Now, if we run pg_upgrade to upgrade subscriber node to subscriber_new=
> node, we get an error:
> ```
> SELECT pg_catalog.binary_upgrade_create_replication_origin('1'= ::pg_catalog.oid,
> 'pg_16393'::pg_catalog.name, '0/01743078'::pg_catalog= .pg_lsn);
> psql:subscriber_new/pg_upgrade_output.d/20260522T140312.807/dump/pg_up= grade_dump_globals.sql:37:
> ERROR:=C2=A0 replication origin with ID 1 already exists
> ```
>
> This error occurs in "Performing Upgrade" stage. Should we a= dd a check
> in the "Performing Consistency Checks" stage so that we don&= #39;t need to
> re-initdb the new cluster to perform the upgrade?
> Maybe we can add a check similar to
> check_new_cluster_replication_slots(), where pg_upgrade errors out if<= br> > the new cluster already contains replication origins. Thoughts?

+1. I had the same thought while reviewing the patch today. We should
have it unless there is a reason we have avoided it??
=
Fixed this. Added a new check for replication origins and if= the new cluster has any existing replication origins, then the check will = fail.=C2=A0

Few trivial comments:

1)

+#include "access/skey.h"
+#include "catalog/indexing.h"

pg_upgrade_support.c compiles without above.


Removed.
=C2=A0
2)
+ Assert(!OidIsValid(rel->rd_rel->reltoastrelid));

Is there a reason for this sanity check? I generally do not see a
Null-Toast table sanity check after every table_open.


Removed.
=C2=A0
3)

+
+ /* Dump replication origins */
+ if (server_version >=3D 170000 && binary_upgrade && ar= chDumpFormat =3D=3D archNull)
+ dumpReplicationOrigins(conn);

why the check is for PG17 specifically?


In PG17, we started migrating pg_subsc= ription_rel and the remote LSN during upgrades; prior t= o that, these were not migrated. Given that change, it also makes sense to = migrate replication origins from them. Otherwise, when upgrading from PG17 = to a later version, you could end up with a subscription where pg_subscription_rel and the remote L= SN are migrated, but the corresponding replication origin is not created.



On Mon, May 25, 2026 at 5:13=E2= =80=AFPM shveta malik <shveta.= malik@gmail.com> wrote:

One issue in 002:

binary_upgrade_create_replication_origin() has this:

+ originname =3D PG_GETARG_NAME(1);
+
+ roname_d =3D CStringGetTextDatum(NameStr(*originname));
+

We are getting origin-name (text) into Name-type which can not be more
than 64 bytes. So if an origin has name more than 64, it will end up
trimming the name post-upgrade.

I tried this:

Old-setup:
postgres=3D# SELECT
pg_replication_origin_create('this_is_a_very_long_replication_origin_na= me_that_exceeds_the_limit_of_64');
=C2=A0pg_replication_origin_create
------------------------------
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 1
postgres=3D# select * from pg_replication_origin;
=C2=A0roident |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 roname
---------+-----------------------------------------------------------------= -----
=C2=A0 =C2=A0 =C2=A0 =C2=A01 | this_is_a_very_long_replication_origin_name_= that_exceeds_the_limit_of_64


Post-upgrade: name got trimmed to 64 length.
-------------------------
postgres=3D#=C2=A0 select * from pg_replication_origin;
=C2=A0roident |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0roname
---------+-----------------------------------------------------------------=
=C2=A0 =C2=A0 =C2=A0 =C2=A01 | this_is_a_very_long_replication_origin_name_= that_exceeds_the_li

thanks
Shveta

Fixed this. Now =C2=A0bina= ry_upgrade_create_replication_origin handles it similarly to the way pg_rep= lication_origin_create handles the name of the origin.

=
Here's an updated version v7 containing these fixes.
regards,
Ajin Cherian
Fujitsu Australia



--0000000000003010640652d7c4e9-- --0000000000003010660652d7c4eb Content-Type: application/octet-stream; name="v7-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Disposition: attachment; filename="v7-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpow8ayz0 RnJvbSA1YzIyZTQ1YTE3NjY5NWMxNmI4YjIyYTc2NDY0MjMyN2U2NjZlODY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBXZWQsIDI3IE1heSAyMDI2IDE0OjEwOjAyICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2NyAxLzJd IFByZXNlcnZlIHN1YnNjcmlwdGlvbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpDdXJyZW50bHkg c3Vic2NyaXB0aW9uIE9JRHMgY2FuIGJlIGNoYW5nZWQgd2hlbiBhIGNsdXN0ZXIgaXMgdXBncmFk ZWQKdXNpbmcgcGdfdXBncmFkZS4gVGhpcyBpcyByZXF1aXJlZCBmb3IgYSBzdWJzZXF1ZW50IHBh dGNoIHdoaWNoIHdpbGwKcHJlc2VydmUgdGhlIHJlcGxpY2F0aW9uIG9pZHMgYWZ0ZXIgdXBncmFk ZS4KCkF1dGhvcjogVmlnbmVzaCBDIDx2aWduZXNoMjFAZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8IDI1ICsrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAgICB8IDEw ICsrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgOCArKysrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgICAgICAg ICB8ICAzICsrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5wbCAgICAg IHwgIDcgKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmggICAgICAg ICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAg fCAgNCArKysKIC4uLi9leHBlY3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0ICAgICAgICAgICAgICB8 ICA2ICsrKy0tCiA4IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDUyMzk1OWJh MGNlLi43YzFmMDVhNWZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YwpAQCAtODMsNiArODMsMTIgQEAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNl dCAqLwogI2RlZmluZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0 cykpCiAKKy8qCisgKiBUaGlzIHdpbGwgYmUgc2V0IGJ5IHRoZSBwZ191cGdyYWRlX3N1cHBvcnQg ZnVuY3Rpb24gLS0KKyAqIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9v aWQoKS4KKyAqLworT2lkCQkJYmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lk ID0gSW52YWxpZE9pZDsKKwogLyoKICAqIFN0cnVjdHVyZSB0byBob2xkIGEgYml0bWFwIHJlcHJl c2VudGluZyB0aGUgdXNlci1wcm92aWRlZCBDUkVBVEUvQUxURVIKICAqIFNVQlNDUklQVElPTiBj b21tYW5kIG9wdGlvbnMgYW5kIHRoZSBwYXJzZWQvZGVmYXVsdCB2YWx1ZXMgb2YgZWFjaCBvZiB0 aGVtLgpAQCAtNzcyLDggKzc3OCwyMyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCW1lbXNldCh2YWx1ZXMsIDAs IHNpemVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsK IAotCXN1YmlkID0gR2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgU3Vic2NyaXB0aW9uT2JqZWN0SW5k ZXhJZCwKLQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9vaWQpOworCS8qIFVzZSBiaW5h cnktdXBncmFkZSBvdmVycmlkZSBmb3IgcGdfc3Vic2NyaXB0aW9uLm9pZD8gKi8KKwlpZiAoSXNC aW5hcnlVcGdyYWRlKQorCXsKKwkJaWYgKCFPaWRJc1ZhbGlkKGJpbmFyeV91cGdyYWRlX25leHRf cGdfc3Vic2NyaXB0aW9uX29pZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicGdfc3Vic2Ny aXB0aW9uIE9JRCB2YWx1ZSBub3Qgc2V0IHdoZW4gaW4gYmluYXJ5IHVwZ3JhZGUgbW9kZSIpKSk7 CisKKwkJc3ViaWQgPSBiaW5hcnlfdXBncmFkZV9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQ7CisJ CWJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCA9IEludmFsaWRPaWQ7CisJ fQorCWVsc2UKKwl7CisJCXN1YmlkID0gR2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgU3Vic2NyaXB0 aW9uT2JqZWN0SW5kZXhJZCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fb2lkKTsK Kwl9CisKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fb2lkIC0gMV0gPSBPYmplY3RJZEdl dERhdHVtKHN1YmlkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGJpZCAtIDFd ID0gT2JqZWN0SWRHZXREYXR1bShNeURhdGFiYXNlSWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJza2lwbHNuIC0gMV0gPSBMU05HZXREYXR1bShJbnZhbGlkWExvZ1JlY1B0cik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKaW5kZXggYjUwNWE2 YjRmZWUuLjU5YzNlN2YwMTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf dXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVf c3VwcG9ydC5jCkBAIC0xODEsNiArMTgxLDE2IEBAIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3Bn X2F1dGhpZF9vaWQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fVk9JRCgpOwogfQogCitE YXR1bQorYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZChQR19GVU5D VElPTl9BUkdTKQoreworCU9pZAkJCXN1YmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCUNIRUNL X0lTX0JJTkFSWV9VUEdSQURFOworCWJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9u X29pZCA9IHN1YmlkOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKIERhdHVtCiBiaW5hcnlfdXBn cmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCBkNTZkY2M3MDFjZS4uNDUyZDBiNWU5OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNTU4Myw2 ICs1NTgzLDE0IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2Ny aXB0aW9uSW5mbyAqc3ViaW5mbykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBTVUJT Q1JJUFRJT04gJXM7XG4iLAogCQkJCQkgIHFzdWJuYW1lKTsKIAorCWlmIChkb3B0LT5iaW5hcnlf dXBncmFkZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiXG4tLSBGb3IgYmlu YXJ5IHVwZ3JhZGUsIG11c3QgcHJlc2VydmUgcGdfc3Vic2NyaXB0aW9uLm9pZFxuIik7CisJCWFw cGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cuYmluYXJ5 X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCgnJXUnOjpwZ19jYXRhbG9nLm9p ZCk7XG5cbiIsCisJCQkJCQkgIHN1YmluZm8tPmRvYmouY2F0SWQub2lkKTsKKwl9CisKIAlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBTVUJTQ1JJUFRJT04gJXMgIiwKIAkJCQkJICBx c3VibmFtZSk7CiAJaWYgKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3Jh ZGUuYwppbmRleCAyMTI3ZDI5N2JmZS4uNGU4NTMwOTY2OTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3Jh ZGUuYwpAQCAtMzUsNiArMzUsOSBAQAogICoKICAqCVdlIGNvbnRyb2wgYWxsIGFzc2lnbm1lbnRz IG9mIHBnX2RhdGFiYXNlLm9pZCBiZWNhdXNlIHdlIHdhbnQgdGhlIGRpcmVjdG9yeQogICoJbmFt ZXMgdG8gbWF0Y2ggYmV0d2VlbiB0aGUgb2xkIGFuZCBuZXcgY2x1c3Rlci4KKyAqCisgKiAgV2Ug Y29udHJvbCBhc3NpZ25tZW50IG9mIHBnX3N1YnNjcmlwdGlvbi5vaWQgYmVjYXVzZSB3ZSB3YW50 IHRoZSBvaWQgdG8KKyAqICBtYXRjaCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBjbHVzdGVyLgog ICovCiAKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlv bi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwKaW5kZXggYzk0 YTgyZGVhZTAuLjY0Njc2N2YyYTY1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDRfc3Vic2NyaXB0aW9uLnBsCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3Jp cHRpb24ucGwKQEAgLTMxMyw2ICszMTMsOSBAQCBteSAkdGFiX3VwZ3JhZGVkMV9vaWQgPSAkb2xk X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiBteSAkdGFiX3VwZ3JhZGVkMl9vaWQgPSAkb2xk X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3RhYl91cGdyYWRlZDInIik7CiAKKyRzdWJfb2lkID0gJG9sZF9zdWIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgb2lkIEZST00gcGdfc3Vic2NyaXB0aW9u IE9SREVSIEJZIHN1Ym5hbWUiKTsKKwogJG9sZF9zdWItPnN0b3A7CiAKICMgQ2hhbmdlIGNvbmZp Z3VyYXRpb24gc28gdGhhdCBpbml0aWFsIHRhYmxlIHN5bmMgZG9lcyBub3QgZ2V0IHN0YXJ0ZWQK QEAgLTM1OSw2ICszNjIsMTAgQEAgJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAogCiAkbmV3X3N1Yi0+ c3RhcnQ7CiAKKyMgVGhlIHN1YnNjcmlwdGlvbiBvaWQgc2hvdWxkIGJlIHByZXNlcnZlZAorJHJl c3VsdCA9ICRuZXdfc3ViLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBvaWQgRlJPTSBw Z19zdWJzY3JpcHRpb24gT1JERVIgQlkgc3VibmFtZSIpOworaXMoJHJlc3VsdCwgcXEoJHN1Yl9v aWQpLCAic3Vic2NyaXB0aW9uIG9pZCBzaG91bGQgaGF2ZSBiZWVuIHByZXNlcnZlZCIpOworCiAj IFRoZSBzdWJzY3JpcHRpb24ncyBydW5uaW5nIHN0YXR1cywgZmFpbG92ZXIgb3B0aW9uLCBhbmQg cmV0YWluX2RlYWRfdHVwbGVzCiAjIG9wdGlvbiBzaG91bGQgYmUgcHJlc2VydmVkIGluIHRoZSB1 cGdyYWRlZCBpbnN0YW5jZS4gU28gcmVncmVzc19zdWI0IHNob3VsZAogIyBzdGlsbCBoYXZlIHN1 YmVuYWJsZWQsIHN1YmZhaWxvdmVyLCBhbmQgc3VicmV0YWluZGVhZHR1cGxlcyBzZXQgdG8gdHJ1 ZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaAppbmRleCA3YmY3YWU0NDM4NS4uYjE1 YjE4ZTdkYzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5X3VwZ3JhZGUu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmgKQEAgLTMyLDYgKzMy LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFJlbEZpbGVOdW1iZXIgYmluYXJ5X3VwZ3JhZGVfbmV4 dF90b2FzdF9wZ19jbGFzc19yZWxmaWxlbnVtYmUKIAogZXh0ZXJuIFBHRExMSU1QT1JUIE9pZCBi aW5hcnlfdXBncmFkZV9uZXh0X3BnX2VudW1fb2lkOwogZXh0ZXJuIFBHRExMSU1QT1JUIE9pZCBi aW5hcnlfdXBncmFkZV9uZXh0X3BnX2F1dGhpZF9vaWQ7CitleHRlcm4gUEdETExJTVBPUlQgT2lk IGJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9uX29pZDsKIAogZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgYmluYXJ5X3VwZ3JhZGVfcmVjb3JkX2luaXRfcHJpdnM7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IGJlMTU3YTVmYmU5Li4zYTI4NDA2OTgxZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0xMTk2OSw2ICsxMTk2OSwxMCBAQAogICBwcm9pc3N0cmljdCA9PiAn ZicsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAogICBwcm9yZXR0eXBl ID0+ICd2b2lkJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3Jh ZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90JyB9LAoreyBvaWQgPT4gJzkxNjAnLCBk ZXNjciA9PiAnZm9yIHVzZSBieSBwZ191cGdyYWRlJywKKyAgcHJvbmFtZSA9PiAnYmluYXJ5X3Vw Z3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCcsIHByb3ZvbGF0aWxlID0+ICd2JywK KyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICd2b2lkJywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCisgIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2Ny aXB0aW9uX29pZCcgfSwKIAogIyBjb252ZXJzaW9uIGZ1bmN0aW9ucwogeyBvaWQgPT4gJzQzMTAn LCBkZXNjciA9PiAnaW50ZXJuYWwgY29udmVyc2lvbiBmdW5jdGlvbiBmb3IgS09JOFIgdG8gV0lO MTI1MScsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9leHBl Y3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFtZV9v cHMvZXhwZWN0ZWQvc3BnaXN0X25hbWVfb3BzLm91dAppbmRleCAxZWU2NWVkZTI0My4uMzlkNDMz NjhjNDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25hbWVfb3BzL2V4cGVj dGVkL3NwZ2lzdF9uYW1lX29wcy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFt ZV9vcHMvZXhwZWN0ZWQvc3BnaXN0X25hbWVfb3BzLm91dApAQCAtNTksMTEgKzU5LDEyIEBAIHNl bGVjdCAqIGZyb20gdAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRpcmFuZ2VfcGdfdHlw ZV9vaWQgICAgICAgfCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRpcmFuZ2VfcGdf dHlwZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRfb2lkICAgICAgICAg ICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRfb2lkCiAgYmlu YXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQgICAgICAgICAgICAgICAgICB8ICAgIHwg YmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQKKyBiaW5hcnlfdXBncmFkZV9zZXRf bmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9z ZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdf dGFibGVzcGFjZV9vaWQgICAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRf cGdfdGFibGVzcGFjZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ190eXBlX29pZCAg ICAgICAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ190eXBlX29p ZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29pZCAgICAgICAgICAg fCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29pZAogIGJpbmFy eV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlICAgICAgICAgICAgfCAgICB8IGJp bmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlCi0oMTMgcm93cykKKygxNCBy b3dzKQogCiAtLSBWZXJpZnkgY2xlYW4gZmFpbHVyZSB3aGVuIElOQ0xVREUnZCBjb2x1bW5zIHJl c3VsdCBpbiBvdmVybGVuZ3RoIHR1cGxlCiAtLSBUaGUgZXJyb3IgbWVzc2FnZSBkZXRhaWxzIGFy ZSBwbGF0Zm9ybS1kZXBlbmRlbnQsIHNvIHNob3cgb25seSBTUUxTVEFURQpAQCAtMTA4LDExICsx MDksMTIgQEAgc2VsZWN0ICogZnJvbSB0CiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfbXVsdGly YW5nZV9wZ190eXBlX29pZCAgICAgICB8ICAxIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfbXVs dGlyYW5nZV9wZ190eXBlX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2F1dGhpZF9v aWQgICAgICAgICAgICAgICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2F1dGhp ZF9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19lbnVtX29pZCAgICAgICAgICAgICAg ICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19lbnVtX29pZAorIGJpbmFyeV91 cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQgICAgICAgICAgfCAgICB8IGJpbmFy eV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQKICBiaW5hcnlfdXBncmFkZV9z ZXRfbmV4dF9wZ190YWJsZXNwYWNlX29pZCAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFk ZV9zZXRfbmV4dF9wZ190YWJsZXNwYWNlX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3Bn X3R5cGVfb2lkICAgICAgICAgICAgICAgICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0 X3BnX3R5cGVfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcGdfY2xhc3Nfb2lk ICAgICAgICAgICB8ICAxIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcGdfY2xhc3Nf b2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcmVsZmlsZW5vZGUgICAgICAgICAg ICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcmVsZmlsZW5vZGUKLSgxMyBy b3dzKQorKDE0IHJvd3MpCiAKIFxzZXQgVkVSQk9TSVRZIHNxbHN0YXRlCiBpbnNlcnQgaW50byB0 IHZhbHVlcyhyZXBlYXQoJ3h5enp5JywgMTIpLCA0MiwgcmVwZWF0KCd4eXp6eScsIDQwMDApKTsK LS0gCjIuNDcuMwoK --0000000000003010660652d7c4eb Content-Type: application/octet-stream; name="v7-0002-Preserve-replication-origin-OIDs-during-pg_upgrad.patch" Content-Disposition: attachment; filename="v7-0002-Preserve-replication-origin-OIDs-during-pg_upgrad.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpow8b0i1 RnJvbSAxYzAyNDY2OTkxMzc3MzAwYzBjYTgxOWRjYTZiYTYyNzYyMWQ0ZWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDI4IE1heSAyMDI2IDEyOjMyOjI3ICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2NyAyLzJd IFByZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpXaGVu IHBnX3VwZ3JhZGUgbWlncmF0ZXMgYSBzdWJzY3JpYmVyLCByZXBsaWNhdGlvbiBvcmlnaW4gT0lE cwoocm9pZGVudCkgY2FuIGNoYW5nZSBhY3Jvc3MgdGhlIHVwZ3JhZGUuIFRoaXMgaXMgYSBwcm9i bGVtIGJlY2F1c2UKY29tbWl0LXRpbWVzdGFtcCByZWNvcmRzIGVtYmVkIHJvaWRlbnQgYW5kIGFy ZSBjb3BpZWQgZGlyZWN0bHkgZnJvbQp0aGUgb2xkIGNsdXN0ZXIncyBwZ19jb21taXRfdHMgZGly ZWN0b3J5LCBjYXVzaW5nIHNwdXJpb3VzCiJ1cGRhdGVfb3JpZ2luX2RpZmZlcnMiIGNvbmZsaWN0 cyBhZnRlciB0aGUgdXBncmFkZS4KCkZpeCB0aGlzIGJ5IGR1bXBpbmcgcmVwbGljYXRpb24gb3Jp Z2lucyBhcyBnbG9iYWwgb2JqZWN0cyB2aWEKcGdfZHVtcGFsbCBkdXJpbmcgYmluYXJ5IHVwZ3Jh ZGUsIHVzaW5nIGEgbmV3IGZ1bmN0aW9uCmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlv bl9vcmlnaW4ob2lkLCBuYW1lLCBsc24pIHRvIHJlY3JlYXRlCmVhY2ggb3JpZ2luIHdpdGggaXRz IHByZXNlcnZlZCByb2lkZW50IGFuZCByZW1vdGVfbHNuLiBUbyBhdm9pZApjb25mbGljdHMgd2l0 aCB0aGlzLCBDcmVhdGVTdWJzY3JpcHRpb24oKSBza2lwcyByZXBsb3JpZ2luX2NyZWF0ZSgpCmlu IGJpbmFyeS11cGdyYWRlIG1vZGUgc2luY2UgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IGNyZWF0ZWQg YnkgdGhlCnRpbWUgdGhlIHN1YnNjcmlwdGlvbiBpcyByZXN0b3JlZC4KCkF1dGhvcjogQWppbiBD aGVyaWFuIDxpdHNhamluQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IEhheWF0byBLdXJvZGEgKEZ1aml0 c3UpIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgpSZXZpZXdlcjogWnNvbHQgUGFycmFnaSA8 enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZXI6IFNobG9rIEt5YWwgPHNobG9rLmt5 YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IFNodmV0YSBtYWxpayA8c2h2ZXRhLm1hbGlrQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAg fCAgMTEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyB8IDE1 NSArKysrKysrKysrKysrKystLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAg ICAgICAgICAgICB8ICAzOCArKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyAgICAg ICAgICAgICAgIHwgIDY0ICsrKysrKysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMgICAg ICAgICAgICAgICAgIHwgIDU1ICsrKysrKystCiBzcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jICAg ICAgICAgICAgICAgICAgfCAgIDkgKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9u LnBsICAgfCAgNDIgKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICAgfCAgIDggKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjkxIGluc2VydGlvbnMoKyksIDkyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCA3 YzFmMDVhNWZkNS4uYjMxZTE1MjU2YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNp bmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFs b2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNpbmNsdWRlICJjYXRhbG9n L2luZGV4aW5nLmgiCkBAIC04NjcsOSArODY4LDE1IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJICogYXBwbHkg d29ya2VycyBpbml0aWFsaXphdGlvbiwgYW5kIHRvIGhhbmRsZSBvcmlnaW4gY3JlYXRpb24gZHlu YW1pY2FsbHkKIAkgKiB3aGVuIHRhYmxlcyBhcmUgYWRkZWQgdG8gdGhlIHN1YnNjcmlwdGlvbi4g SXQgaXMgbm90IGNsZWFyIHdoZXRoZXIKIAkgKiBwcmV2ZW50aW5nIGNyZWF0aW9uIG9mIG9yaWdp bnMgaXMgd29ydGggYWRkaXRpb25hbCBjb21wbGV4aXR5LgorCSAqCisJICogSW4gYmluYXJ5LXVw Z3JhZGUgbW9kZSwgc2tpcCBvcmlnaW4gY3JlYXRpb24gaGVyZS4gVGhpcyBpcyByZXF1aXJlZCB0 bworCSAqIHByZXNlcnZlIHRoZSByb2lkZW50IGZyb20gdGhlIG9sZCBjbHVzdGVyIGZvciB0aGlz IHN1YnNjcmlwdGlvbi4KIAkgKi8KLQlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVw KHN1YmlkLCBJbnZhbGlkT2lkLCBvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSkpOwotCXJl cGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCWlmICghSXNCaW5hcnlVcGdyYWRlKQorCXsK KwkJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChzdWJpZCwgSW52YWxpZE9pZCwg b3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwkJcmVwbG9yaWdpbl9jcmVhdGUob3Jp Z2lubmFtZSk7CisJfQogCiAJLyoKIAkgKiBDb25uZWN0IHRvIHJlbW90ZSBzaWRlIHRvIGV4ZWN1 dGUgcmVxdWVzdGVkIGNvbW1hbmRzIGFuZCBmZXRjaCB0YWJsZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCmluZGV4IDU5YzNlN2YwMTQ2Li4xNzNiYmRjNzY0YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMTEsNiAr MTEsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9nZW5h bS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJs ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaCIKQEAgLTI3LDggKzI4LDEw IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgi CisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCiAKICNkZWZpbmUgQ0hFQ0tfSVNfQklOQVJZ X1VQR1JBREUJCQkJCQkJCQlcCkBAIC0zNzcsNzEgKzM4MCwxMzEgQEAgYmluYXJ5X3VwZ3JhZGVf YWRkX3N1Yl9yZWxfc3RhdGUoUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogLyoKLSAqIGJpbmFyeV91 cGdyYWRlX3JlcGxvcmlnaW5fYWR2YW5jZQorICogYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2NvbmZs aWN0X2RldGVjdGlvbl9zbG90CiAgKgotICogVXBkYXRlIHRoZSByZW1vdGVfbHNuIGZvciB0aGUg c3Vic2NyaWJlcidzIHJlcGxpY2F0aW9uIG9yaWdpbi4KKyAqIENyZWF0ZSBhIHJlcGxpY2F0aW9u IHNsb3QgdG8gcmV0YWluIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgY29uZmxpY3QKKyAqIGRl dGVjdGlvbiBzdWNoIGFzIGRlYWQgdHVwbGVzLCBjb21taXQgdGltZXN0YW1wcywgYW5kIG9yaWdp bnMuCiAgKi8KIERhdHVtCi1iaW5hcnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2UoUEdfRlVO Q1RJT05fQVJHUykKK2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9jb25mbGljdF9kZXRlY3Rpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogewotCVJlbGF0aW9uCXJlbDsKLQlPaWQJCQlzdWJpZDsKLQlj aGFyCSAgICpzdWJuYW1lOwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwotCVJlcGxP cmlnaW5JZCBub2RlOwotCVhMb2dSZWNQdHIJcmVtb3RlX2NvbW1pdDsKLQogCUNIRUNLX0lTX0JJ TkFSWV9VUEdSQURFOwogCi0JLyoKLQkgKiBXZSBtdXN0IGVuc3VyZSBhIG5vbi1OVUxMIHN1YnNj cmlwdGlvbiBuYW1lIGJlZm9yZSBkZXJlZmVyZW5jaW5nIHRoZQotCSAqIGFyZ3VtZW50cy4KLQkg Ki8KLQlpZiAoUEdfQVJHSVNOVUxMKDApKQotCQllbG9nKEVSUk9SLCAibnVsbCBhcmd1bWVudCB0 byBiaW5hcnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2UgaXMgbm90IGFsbG93ZWQiKTsKLQot CXN1Ym5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOwotCXJlbW90 ZV9jb21taXQgPSBQR19BUkdJU05VTEwoMSkgPyBJbnZhbGlkWExvZ1JlY1B0ciA6IFBHX0dFVEFS R19MU04oMSk7Ci0KLQlyZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOwotCXN1YmlkID0gZ2V0X3N1YnNjcmlwdGlvbl9vaWQoc3VibmFtZSwg ZmFsc2UpOwotCi0JUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChzdWJpZCwgSW52 YWxpZE9pZCwgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKLQotCS8qIExvY2sgdG8g cHJldmVudCB0aGUgcmVwbGljYXRpb24gb3JpZ2luIGZyb20gdmFuaXNoaW5nICovCi0JTG9ja1Jl bGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 Ci0Jbm9kZSA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0KLQkvKgot CSAqIFRoZSBzZXJ2ZXIgd2lsbCBiZSBzdG9wcGVkIGFmdGVyIHNldHRpbmcgdXAgdGhlIG9iamVj dHMgaW4gdGhlIG5ldwotCSAqIGNsdXN0ZXIgYW5kIHRoZSBvcmlnaW5zIHdpbGwgYmUgZmx1c2hl ZCBkdXJpbmcgdGhlIHNodXRkb3duIGNoZWNrcG9pbnQuCi0JICogVGhpcyB3aWxsIGVuc3VyZSB0 aGF0IHRoZSBsYXRlc3QgTFNOIHZhbHVlcyBmb3Igb3JpZ2luIHdpbGwgYmUKLQkgKiBhdmFpbGFi bGUgYWZ0ZXIgdGhlIHVwZ3JhZGUuCi0JICovCi0JcmVwbG9yaWdpbl9hZHZhbmNlKG5vZGUsIHJl bW90ZV9jb21taXQsIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkgICBmYWxzZSAvKiBiYWNrd2Fy ZCAqLyAsCi0JCQkJCSAgIGZhbHNlIC8qIFdBTCBsb2cgKi8gKTsKKwlDcmVhdGVDb25mbGljdERl dGVjdGlvblNsb3QoKTsKIAotCVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7Ci0JdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7CiAKIAlQR19SRVRVUk5fVk9JRCgp OwogfQogCiAvKgotICogYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9z bG90CisgKiBiaW5hcnlfdXBncmFkZV9jcmVhdGVfcmVwbGljYXRpb25fb3JpZ2luCiAgKgotICog Q3JlYXRlIGEgcmVwbGljYXRpb24gc2xvdCB0byByZXRhaW4gaW5mb3JtYXRpb24gbmVjZXNzYXJ5 IGZvciBjb25mbGljdAotICogZGV0ZWN0aW9uIHN1Y2ggYXMgZGVhZCB0dXBsZXMsIGNvbW1pdCB0 aW1lc3RhbXBzLCBhbmQgb3JpZ2lucy4KKyAqIENyZWF0ZSBhIHJlcGxpY2F0aW9uIG9yaWdpbiB3 aXRoIGEgc3BlY2lmaWMgT0lEIGFuZCBuYW1lLCBvcHRpb25hbGx5CisgKiByZXN0b3JpbmcgaXRz IHJlbW90ZV9sc24uIFVzZWQgYnkgcGdfdXBncmFkZSB0byBwcmVzZXJ2ZSByZXBsaWNhdGlvbgor ICogb3JpZ2luIE9JRHMgYWNyb3NzIHRoZSB1cGdyYWRlLgogICovCiBEYXR1bQotYmluYXJ5X3Vw Z3JhZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90KFBHX0ZVTkNUSU9OX0FSR1MpCiti aW5hcnlfdXBncmFkZV9jcmVhdGVfcmVwbGljYXRpb25fb3JpZ2luKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CisJT2lkCQkJCW5vZGVfb2lkOworCVJlcGxPcmlnaW5JZAlub2RlOworCWNoYXIJCSAgICpv cmlnaW5uYW1lOworCVJlbGF0aW9uCQlyZWw7CisJSGVhcFR1cGxlCQl0dXBsZTsKKwlEYXR1bQkJ CXJvbmFtZV9kOworCVN5c1NjYW5EZXNjCQlzY2FuOworCVNjYW5LZXlEYXRhCQlrZXk7CisJYm9v bAkJCW51bGxzW05hdHRzX3BnX3JlcGxpY2F0aW9uX29yaWdpbl07CisJRGF0dW0JCQl2YWx1ZXNb TmF0dHNfcGdfcmVwbGljYXRpb25fb3JpZ2luXTsKKwlib29sCQkJY29sbGlkZXM7CisKIAlDSEVD S19JU19CSU5BUllfVVBHUkFERTsKIAotCUNyZWF0ZUNvbmZsaWN0RGV0ZWN0aW9uU2xvdCgpOwor CWlmIChQR19BUkdJU05VTEwoMCkgfHwgUEdfQVJHSVNOVUxMKDEpKQorCQllbG9nKEVSUk9SLAor CQkJICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9v cmlnaW4gaXMgbm90IGFsbG93ZWQiKTsKKworCW5vZGVfb2lkID0gUEdfR0VUQVJHX09JRCgwKTsK KworCWlmIChub2RlX29pZCA9PSBJbnZhbGlkT2lkIHx8IG5vZGVfb2lkID4gUEdfVUlOVDE2X01B WCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJyZXBsaWNhdGlvbiBvcmlnaW4gSUQgJXUgaXMgb3V0 IG9mIHJhbmdlIiwgbm9kZV9vaWQpKSk7CisKKwlub2RlID0gKFJlcGxPcmlnaW5JZCkgbm9kZV9v aWQ7CisJb3JpZ2lubmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgxKSk7 CisKKwlpZiAoc3RybGVuKG9yaWdpbm5hbWUpID4gTUFYX1JPTkFNRV9MRU4pCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKKwkJ CQkgZXJybXNnKCJyZXBsaWNhdGlvbiBvcmlnaW4gbmFtZSBpcyB0b28gbG9uZyIpLAorCQkJCSBl cnJkZXRhaWwoIlJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lcyBtdXN0IGJlIG5vIGxvbmdlciB0aGFu ICVkIGJ5dGVzLiIsCisJCQkJCQkgICBNQVhfUk9OQU1FX0xFTikpKTsKKworCXJvbmFtZV9kID0g Q1N0cmluZ0dldFRleHREYXR1bShvcmlnaW5uYW1lKTsKKworCUFzc2VydChJc1RyYW5zYWN0aW9u U3RhdGUoKSk7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKiBDaGVjayBmb3IgT0lEIGNvbGxpc2lvbiAqLwor CVNjYW5LZXlJbml0KCZrZXksCisJCQkJQW51bV9wZ19yZXBsaWNhdGlvbl9vcmlnaW5fcm9pZGVu dCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShub2RlKSk7CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIFJlcGxpY2F0aW9u T3JpZ2luSWRlbnRJbmRleCwKKwkJCQkJCQkgIHRydWUgLyogaW5kZXhPSyAqLywKKwkJCQkJCQkg IFNuYXBzaG90U2VsZiwKKwkJCQkJCQkgIDEsICZrZXkpOworCWNvbGxpZGVzID0gSGVhcFR1cGxl SXNWYWxpZChzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKTsKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4p OworCisJaWYgKGNvbGxpZGVzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJIGVycm1zZygicmVwbGljYXRpb24gb3JpZ2luIHdp dGggSUQgJXUgYWxyZWFkeSBleGlzdHMiLCBub2RlX29pZCkpKTsKKworCS8qIENoZWNrIGZvciBu YW1lIGNvbGxpc2lvbiAqLworCVNjYW5LZXlJbml0KCZrZXksCisJCQkJQW51bV9wZ19yZXBsaWNh dGlvbl9vcmlnaW5fcm9uYW1lLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9URVhURVEs CisJCQkJcm9uYW1lX2QpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBSZXBsaWNh dGlvbk9yaWdpbk5hbWVJbmRleCwKKwkJCQkJCQkgIHRydWUgLyogaW5kZXhPSyAqLywKKwkJCQkJ CQkgIFNuYXBzaG90U2VsZiwKKwkJCQkJCQkgIDEsICZrZXkpOworCWNvbGxpZGVzID0gSGVhcFR1 cGxlSXNWYWxpZChzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKTsKKwlzeXN0YWJsZV9lbmRzY2FuKHNj YW4pOworCisJaWYgKGNvbGxpZGVzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJIGVycm1zZygicmVwbGljYXRpb24gb3JpZ2lu IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlvcmlnaW5uYW1lKSkpOworCisJbWVtc2V0 KCZudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KCZ2YWx1ZXMsIDAsIHNpemVvZih2 YWx1ZXMpKTsKKworCXZhbHVlc1tBbnVtX3BnX3JlcGxpY2F0aW9uX29yaWdpbl9yb2lkZW50IC0g MV0gPSBPYmplY3RJZEdldERhdHVtKG5vZGUpOworCXZhbHVlc1tBbnVtX3BnX3JlcGxpY2F0aW9u X29yaWdpbl9yb25hbWUgLSAxXSA9IHJvbmFtZV9kOworCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVw bGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJ bnNlcnQocmVsLCB0dXBsZSk7CisJaGVhcF9mcmVldHVwbGUodHVwbGUpOworCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisKKwkvKiBSZXN0b3JlIHRoZSByZW1vdGVfbHNuIGlmIHByb3ZpZGVk LCB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSBsb2NrICovCisJaWYgKCFQR19BUkdJU05VTEwoMikp CisJeworCQlYTG9nUmVjUHRyCXJlbW90ZV9jb21taXQgPSBQR19HRVRBUkdfTFNOKDIpOwogCi0J UmVwbGljYXRpb25TbG90UmVsZWFzZSgpOworCQlyZXBsb3JpZ2luX2FkdmFuY2Uobm9kZSwgcmVt b3RlX2NvbW1pdCwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkgICBmYWxzZSAvKiBiYWNrd2Fy ZCAqLywKKwkJCQkJCSAgIGZhbHNlIC8qIFdBTCBsb2cgKi8pOworCX0KKworCXRhYmxlX2Nsb3Nl KHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlQR19SRVRVUk5fVk9JRCgpOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKaW5kZXggNDUyZDBiNWU5OGEuLmE1ZmIyYjQyYzNkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTU2Njgs MzcgKzU2NjgsMTUgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJz Y3JpcHRpb25JbmZvICpzdWJpbmZvKQogCSAqIEluIGJpbmFyeS11cGdyYWRlIG1vZGUsIHdlIGFs bG93IHRoZSByZXBsaWNhdGlvbiB0byBjb250aW51ZSBhZnRlciB0aGUKIAkgKiB1cGdyYWRlLgog CSAqLwotCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSAmJiBmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE3MDAwMCkKKwlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgc3ViaW5mby0+c3ViZW5hYmxl ZCAmJiBmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKIAl7Ci0JCWlmIChzdWJpbmZvLT5z dWJvcmlnaW5yZW1vdGVsc24pCi0JCXsKLQkJCS8qCi0JCQkgKiBQcmVzZXJ2ZSB0aGUgcmVtb3Rl X2xzbiBmb3IgdGhlIHN1YnNjcmliZXIncyByZXBsaWNhdGlvbgotCQkJICogb3JpZ2luLiBUaGlz IHZhbHVlIGlzIHJlcXVpcmVkIHRvIHN0YXJ0IHRoZSByZXBsaWNhdGlvbiBmcm9tCi0JCQkgKiB0 aGUgcG9zaXRpb24gYmVmb3JlIHRoZSB1cGdyYWRlLiBUaGlzIHZhbHVlIHdpbGwgYmUgc3RhbGUg aWYKLQkJCSAqIHRoZSBwdWJsaXNoZXIgZ2V0cyB1cGdyYWRlZCBiZWZvcmUgdGhlIHN1YnNjcmli ZXIgbm9kZS4KLQkJCSAqIEhvd2V2ZXIsIHRoaXMgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBhcyB0 aGUgdXBncmFkZSBvZiB0aGUKLQkJCSAqIHB1Ymxpc2hlciBlbnN1cmVzIHRoYXQgYWxsIHRoZSB0 cmFuc2FjdGlvbnMgd2VyZSByZXBsaWNhdGVkCi0JCQkgKiBiZWZvcmUgdXBncmFkaW5nIGl0Lgot CQkJICovCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkJICJcbi0tIEZv ciBiaW5hcnkgdXBncmFkZSwgbXVzdCBwcmVzZXJ2ZSB0aGUgcmVtb3RlX2xzbiBmb3IgdGhlIHN1 YnNjcmliZXIncyByZXBsaWNhdGlvbiBvcmlnaW4uXG4iKTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAotCQkJCQkJCQkgIlNFTEVDVCBwZ19jYXRhbG9nLmJpbmFyeV91cGdyYWRlX3Jl cGxvcmlnaW5fYWR2YW5jZSgiKTsKLQkJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxdWVyeSwgc3Vi aW5mby0+ZG9iai5uYW1lLCBmb3V0KTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCAn JXMnKTtcbiIsIHN1YmluZm8tPnN1Ym9yaWdpbnJlbW90ZWxzbik7Ci0JCX0KLQotCQlpZiAoc3Vi aW5mby0+c3ViZW5hYmxlZCkKLQkJewotCQkJLyoKLQkJCSAqIEVuYWJsZSB0aGUgc3Vic2NyaXB0 aW9uIHRvIGFsbG93IHRoZSByZXBsaWNhdGlvbiB0byBjb250aW51ZQotCQkJICogYWZ0ZXIgdGhl IHVwZ3JhZGUuCi0JCQkgKi8KLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJ CQkgIlxuLS0gRm9yIGJpbmFyeSB1cGdyYWRlLCBtdXN0IHByZXNlcnZlIHRoZSBzdWJzY3JpYmVy J3MgcnVubmluZyBzdGF0ZS5cbiIpOwotCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRF UiBTVUJTQ1JJUFRJT04gJXMgRU5BQkxFO1xuIiwgcXN1Ym5hbWUpOwotCQl9CisJCS8qCisJCSAq IEVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uIHRvIGFsbG93IHRoZSByZXBsaWNhdGlvbiB0byBjb250 aW51ZQorCQkgKiBhZnRlciB0aGUgdXBncmFkZS4KKwkJICovCisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAorCQkJCQkJCSAiXG4tLSBGb3IgYmluYXJ5IHVwZ3JhZGUsIG11c3QgcHJlc2Vy dmUgdGhlIHN1YnNjcmliZXIncyBydW5uaW5nIHN0YXRlLlxuIik7CisJCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LCAiQUxURVIgU1VCU0NSSVBUSU9OICVzIEVOQUJMRTtcbiIsIHFzdWJuYW1lKTsK IAl9CiAKIAlpZiAoc3ViaW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElP TikKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcGFsbC5jCmluZGV4IGMxZjQzMTEzYzUzLi5lZmE4ZGEzZTYyNyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcGFsbC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1 ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hdXRoaWRfZC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb25uZWN0LmgiCiAjaW5j bHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgpAQCAtNzYsNiArNzcsNyBAQCBzdGF0aWMgdm9pZCBk cm9wREJzKFBHY29ubiAqY29ubik7CiBzdGF0aWMgdm9pZCBkdW1wVXNlckNvbmZpZyhQR2Nvbm4g KmNvbm4sIGNvbnN0IGNoYXIgKnVzZXJuYW1lKTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZXMo UEdjb25uICpjb25uKTsKIHN0YXRpYyB2b2lkIGR1bXBUaW1lc3RhbXAoY29uc3QgY2hhciAqbXNn KTsKK3N0YXRpYyB2b2lkIGR1bXBSZXBsaWNhdGlvbk9yaWdpbnMoUEdjb25uICpjb25uKTsKIHN0 YXRpYyBpbnQJcnVuUGdEdW1wKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRl X29wdHMsIGNoYXIgKmRiZmlsZSk7CiBzdGF0aWMgdm9pZCBidWlsZFNoU2VjTGFiZWxzKFBHY29u biAqY29ubiwKIAkJCQkJCQkgY29uc3QgY2hhciAqY2F0YWxvZ19uYW1lLCBPaWQgb2JqZWN0SWQs CkBAIC04MTMsNiArODE1LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCS8q IER1bXAgcm9sZSBHVUMgcHJpdmlsZWdlcyAqLwogCQkJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE1 MDAwMCAmJiAhc2tpcF9hY2xzKQogCQkJCWR1bXBSb2xlR1VDUHJpdnMoY29ubik7CisKKwkJCS8q IER1bXAgcmVwbGljYXRpb24gb3JpZ2lucyAqLworCQkJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE3 MDAwMCAmJiBiaW5hcnlfdXBncmFkZSAmJiBhcmNoRHVtcEZvcm1hdCA9PSBhcmNoTnVsbCkKKwkJ CQlkdW1wUmVwbGljYXRpb25PcmlnaW5zKGNvbm4pOwogCQl9CiAKIAkJLyogRHVtcCB0YWJsZXNw YWNlcyAqLwpAQCAtMjMzOSw2ICsyMzQ1LDY0IEBAIGR1bXBUaW1lc3RhbXAoY29uc3QgY2hhciAq bXNnKQogCQlmcHJpbnRmKE9QRiwgIi0tICVzICVzXG5cbiIsIG1zZywgYnVmKTsKIH0KIAorc3Rh dGljIHZvaWQKK2R1bXBSZXBsaWNhdGlvbk9yaWdpbnMoUEdjb25uICpjb25uKQoreworCVBRRXhw QnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzOworCWlu dAkJCWlfcm9pZGVudDsKKwlpbnQJCQlpX3JvbmFtZTsKKwlpbnQJCQlpX3JlbW90ZWxzbjsKKwor CS8qIEdldCByZXBsaWNhdGlvbiBvcmlnaW5zIGZyb20gY2F0YWxvZ3MgKi8KKwlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihidWYsCisJCQkJCQkgIlNFTEVDVCBvLiosIG9zLnJlbW90ZV9sc24gIgorCQkJ CQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fb3JpZ2luIG8gIgorCQkJCQkJICJM RUZUIE9VVEVSIEpPSU4gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIG9z IE9OIG8ucm9pZGVudCA9IG9zLmxvY2FsX2lkICIpOworCisJcmVzID0gZXhlY3V0ZVF1ZXJ5KGNv bm4sIGJ1Zi0+ZGF0YSk7CisKKwlpX3JvaWRlbnQgPSBQUWZudW1iZXIocmVzLCAicm9pZGVudCIp OworCWlfcm9uYW1lID0gUFFmbnVtYmVyKHJlcywgInJvbmFtZSIpOworCWlfcmVtb3RlbHNuID0g UFFmbnVtYmVyKHJlcywgInJlbW90ZV9sc24iKTsKKworCWlmIChQUW50dXBsZXMocmVzKSA+IDAp CisJCWZwcmludGYoT1BGLCAiLS1cbi0tIFJlcGxpY2F0aW9uIE9yaWdpbnMgXG4tLVxuXG4iKTsK KworCWZvciAoaW50IGkgPSAwOyBpIDwgUFFudHVwbGVzKHJlcyk7IGkrKykKKwl7CisJCVJlcGxP cmlnaW5JZCByb2lkZW50OworCQljb25zdCBjaGFyICpyb25hbWU7CisKKwkJcm9pZGVudCA9IGF0 b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9yb2lkZW50KSk7CisJCXJvbmFtZSA9IFBRZ2V0dmFs dWUocmVzLCBpLCBpX3JvbmFtZSk7CisKKwkJcmVzZXRQUUV4cEJ1ZmZlcihidWYpOworCisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIlxuLS0gRm9yIGJpbmFyeSB1cGdyYWRlLCBtdXN0IHBy ZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiByb2lkZW50IGFuZCByZW1vdGVfbHNuXG4iKTsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoYnVmLAorCQkJIlNFTEVDVCBwZ19jYXRhbG9nLmJpbmFyeV91cGdy YWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4oIgorCQkJIicldSc6OnBnX2NhdGFsb2cub2lk LCAiLCByb2lkZW50KTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbENvbm4oYnVmLCByb25hbWUsIGNv bm4pOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsICI6OnBnX2NhdGFsb2cudGV4dCIpOwor CisJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX3JlbW90ZWxzbikpCisJCXsKKwkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIiwgIik7CisJCQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubihi dWYsIFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbW90ZWxzbiksIGNvbm4pOworCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoYnVmLCAiOjpwZ19jYXRhbG9nLnBnX2xzbiIpOworCQl9CisJCWVsc2UKKwkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIiwgTlVMTCIpOworCisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKGJ1ZiwgIik7XG4iKTsKKwkJZnByaW50ZihPUEYsICIlcyIsIGJ1Zi0+ZGF0YSk7CisJ fQorCisJUFFjbGVhcihyZXMpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYpOworfQorCiAvKgog ICogcmVhZF9kdW1wYWxsX2ZpbHRlcnMgLSByZXRyaWV2ZSBkYXRhYmFzZSBpZGVudGlmaWVyIHBh dHRlcm5zIGZyb20gZmlsZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9jaGVj ay5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMKaW5kZXggZjVjOTNlNjExZDIuLjMwMzgx NGZjZTljIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYworKysgYi9zcmMv YmluL3BnX3VwZ3JhZGUvY2hlY2suYwpAQCAtMzMsNiArMzMsNyBAQCBzdGF0aWMgdm9pZCBjaGVj a19mb3JfbmV3X3RhYmxlc3BhY2VfZGlyKHZvaWQpOwogc3RhdGljIHZvaWQgY2hlY2tfZm9yX3Vz ZXJfZGVmaW5lZF9lbmNvZGluZ19jb252ZXJzaW9ucyhDbHVzdGVySW5mbyAqY2x1c3Rlcik7CiBz dGF0aWMgdm9pZCBjaGVja19mb3JfdW5pY29kZV91cGRhdGUoQ2x1c3RlckluZm8gKmNsdXN0ZXIp Owogc3RhdGljIHZvaWQgY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25fc2xvdHModm9pZCk7 CitzdGF0aWMgdm9pZCBjaGVja19uZXdfY2x1c3Rlcl9yZXBsaWNhdGlvbl9vcmlnaW5zKHZvaWQp Owogc3RhdGljIHZvaWQgY2hlY2tfbmV3X2NsdXN0ZXJfc3Vic2NyaXB0aW9uX2NvbmZpZ3VyYXRp b24odm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rlcl9mb3JfdmFsaWRfc2xvdHMo dm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rlcl9zdWJzY3JpcHRpb25fc3RhdGUo dm9pZCk7CkBAIC03OTcsNiArNzk4LDggQEAgY2hlY2tfbmV3X2NsdXN0ZXIodm9pZCkKIAogCWNo ZWNrX25ld19jbHVzdGVyX3JlcGxpY2F0aW9uX3Nsb3RzKCk7CiAKKwljaGVja19uZXdfY2x1c3Rl cl9yZXBsaWNhdGlvbl9vcmlnaW5zKCk7CisKIAljaGVja19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRp b25fY29uZmlndXJhdGlvbigpOwogfQogCkBAIC0yMzAyLDEyICsyMzA1LDUwIEBAIGNoZWNrX25l d19jbHVzdGVyX3JlcGxpY2F0aW9uX3Nsb3RzKHZvaWQpCiAJY2hlY2tfb2soKTsKIH0KIAorLyoK KyAqIGNoZWNrX25ld19jbHVzdGVyX3JlcGxpY2F0aW9uX29yaWdpbnMoKQorICoKKyAqIFZlcmlm eSB0aGF0IHRoZSBuZXcgY2x1c3RlciBoYXMgbm8gcmVwbGljYXRpb24gb3JpZ2lucy4gRHVyaW5n IHVwZ3JhZGUsCisgKiBwZ191cGdyYWRlIHJlc3RvcmVzIHJlcGxpY2F0aW9uIG9yaWdpbnMgZnJv bSB0aGUgb2xkIGNsdXN0ZXIgd2l0aCB0aGVpcgorICogb3JpZ2luYWwgT0lEcy4gSWYgdGhlIG5l dyBjbHVzdGVyIGFscmVhZHkgY29udGFpbnMgb3JpZ2lucywgdGhvc2UgT0lEcworICogbWF5IGNv bGxpZGUsIGNhdXNpbmcgdGhlIHVwZ3JhZGUgdG8gZmFpbCBtaWQtd2F5LgorICovCitzdGF0aWMg dm9pZAorY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25fb3JpZ2lucyh2b2lkKQoreworCVBH Y29ubiAgICAgKmNvbm47CisJUEdyZXN1bHQgICAqcmVzOworCWludCAgICAgICAgIG5vcmlnaW5z OworCisJLyogUXVpY2sgcmV0dXJuIGlmIHRoZXJlIGFyZSBubyByZXBsaWNhdGlvbiBvcmlnaW5z IHRvIG1pZ3JhdGUuICovCisJaWYgKG9sZF9jbHVzdGVyLm5yZXBsX29yaWdpbnMgPT0gMCkKKwkJ cmV0dXJuOworCisJcHJlcF9zdGF0dXMoIkNoZWNraW5nIGZvciByZXBsaWNhdGlvbiBvcmlnaW5z IGluIG5ldyBjbHVzdGVyIik7CisKKwljb25uID0gY29ubmVjdFRvU2VydmVyKCZuZXdfY2x1c3Rl ciwgInRlbXBsYXRlMSIpOworCXJlcyA9IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJCQkJCQkJ IlNFTEVDVCBjb3VudCgqKSAiCisJCQkJCQkJIkZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlv bl9vcmlnaW4iKTsKKworCWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IGNvdW50IHRoZSBudW1iZXIgb2YgcmVwbGljYXRpb24gb3JpZ2lucyIpOworCisJbm9y aWdpbnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisJUFFjbGVhcihyZXMpOworCVBR ZmluaXNoKGNvbm4pOworCisJaWYgKG5vcmlnaW5zID4gMCkKKwkJcGdfZmF0YWwoImV4cGVjdGVk IDAgcmVwbGljYXRpb24gb3JpZ2lucyBidXQgZm91bmQgJWQiLCBub3JpZ2lucyk7CisKKwljaGVj a19vaygpOworfQorCiAvKgogICogY2hlY2tfbmV3X2NsdXN0ZXJfc3Vic2NyaXB0aW9uX2NvbmZp Z3VyYXRpb24oKQogICoKICAqIFZlcmlmeSB0aGF0IHRoZSBtYXhfYWN0aXZlX3JlcGxpY2F0aW9u X29yaWdpbnMgY29uZmlndXJhdGlvbiBzcGVjaWZpZWQgaXMKLSAqIGVub3VnaCBmb3IgY3JlYXRp bmcgdGhlIHN1YnNjcmlwdGlvbnMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIHRoZQotICog cmVwbGljYXRpb24gb3JpZ2luIGZvciBlYWNoIHN1YnNjcmlwdGlvbi4KKyAqIGVub3VnaCBmb3Ig Y3JlYXRpbmcgYWxsIHRoZSByZXBsaWNhdGlvbiBvcmlnaW5zLgogICovCiBzdGF0aWMgdm9pZAog Y2hlY2tfbmV3X2NsdXN0ZXJfc3Vic2NyaXB0aW9uX2NvbmZpZ3VyYXRpb24odm9pZCkKQEAgLTIz MjAsOCArMjM2MSw4IEBAIGNoZWNrX25ld19jbHVzdGVyX3N1YnNjcmlwdGlvbl9jb25maWd1cmF0 aW9uKHZvaWQpCiAJaWYgKEdFVF9NQUpPUl9WRVJTSU9OKG9sZF9jbHVzdGVyLm1ham9yX3ZlcnNp b24pIDwgMTcwMCkKIAkJcmV0dXJuOwogCi0JLyogUXVpY2sgcmV0dXJuIGlmIHRoZXJlIGFyZSBu byBzdWJzY3JpcHRpb25zIHRvIGJlIG1pZ3JhdGVkLiAqLwotCWlmIChvbGRfY2x1c3Rlci5uc3Vi cyA9PSAwKQorCS8qIFF1aWNrIHJldHVybiBpZiB0aGVyZSBhcmUgbm8gcmVwbGljYXRpb24gb3Jp Z2lucyB0byBiZSBtaWdyYXRlZC4gKi8KKwlpZiAob2xkX2NsdXN0ZXIubnJlcGxfb3JpZ2lucyA9 PSAwKQogCQlyZXR1cm47CiAKIAlwcmVwX3N0YXR1cygiQ2hlY2tpbmcgbmV3IGNsdXN0ZXIgY29u ZmlndXJhdGlvbiBmb3Igc3Vic2NyaXB0aW9ucyIpOwpAQCAtMjMzNSwxMCArMjM3NiwxMCBAQCBj aGVja19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25fY29uZmlndXJhdGlvbih2b2lkKQogCQlwZ19m YXRhbCgiY291bGQgbm90IGRldGVybWluZSBwYXJhbWV0ZXIgc2V0dGluZ3Mgb24gbmV3IGNsdXN0 ZXIiKTsKIAogCW1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9IGF0b2koUFFnZXR2YWx1 ZShyZXMsIDAsIDApKTsKLQlpZiAob2xkX2NsdXN0ZXIubnN1YnMgPiBtYXhfYWN0aXZlX3JlcGxp Y2F0aW9uX29yaWdpbnMpCisJaWYgKG9sZF9jbHVzdGVyLm5yZXBsX29yaWdpbnMgPiBtYXhfYWN0 aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMpCiAJCXBnX2ZhdGFsKCJcIm1heF9hY3RpdmVfcmVwbGlj YXRpb25fb3JpZ2luc1wiICglZCkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhl IG51bWJlciBvZiAiCi0JCQkJICJzdWJzY3JpcHRpb25zICglZCkgb24gdGhlIG9sZCBjbHVzdGVy IiwKLQkJCQkgbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zLCBvbGRfY2x1c3Rlci5uc3Vi cyk7CisJCQkJICJyZXBsaWNhdGlvbiBvcmlnaW5zICglZCkgb24gdGhlIG9sZCBjbHVzdGVyIiwK KwkJCQkgbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zLCBvbGRfY2x1c3Rlci5ucmVwbF9v cmlnaW5zKTsKIAogCVBRY2xlYXIocmVzKTsKIAlQUWZpbmlzaChjb25uKTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jCmlu ZGV4IDM3ZmZmOTM4OTJmLi42MzBmM2YwNmUyNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdy YWRlL2luZm8uYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jCkBAIC04NDMsNiArODQz LDcgQEAgZ2V0X3N1YnNjcmlwdGlvbl9pbmZvKENsdXN0ZXJJbmZvICpjbHVzdGVyKQogCVBHY29u bgkgICAqY29ubjsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJaW50CQkJaV9uc3ViOworCWludAkJCWlf bnJlcGxfb3JpZ2luczsKIAlpbnQJCQlpX3JldGFpbl9kZWFkX3R1cGxlczsKIAogCWNvbm4gPSBj b25uZWN0VG9TZXJ2ZXIoY2x1c3RlciwgInRlbXBsYXRlMSIpOwpAQCAtODYyLDYgKzg2MywxNCBA QCBnZXRfc3Vic2NyaXB0aW9uX2luZm8oQ2x1c3RlckluZm8gKmNsdXN0ZXIpCiAJY2x1c3Rlci0+ c3ViX3JldGFpbl9kZWFkX3R1cGxlcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIDAsIGlfcmV0 YWluX2RlYWRfdHVwbGVzKSwgInQiKSA9PSAwKTsKIAogCVBRY2xlYXIocmVzKTsKKworCXJlcyA9 IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJCQkJCQkJIlNFTEVDVCBjb3VudCgqKSBBUyBucmVw bF9vcmlnaW5zICIKKwkJCQkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX29yaWdp biIpOworCWlfbnJlcGxfb3JpZ2lucyA9IFBRZm51bWJlcihyZXMsICJucmVwbF9vcmlnaW5zIik7 CisJY2x1c3Rlci0+bnJlcGxfb3JpZ2lucyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIGlfbnJl cGxfb3JpZ2lucykpOworCVBRY2xlYXIocmVzKTsKKwogCVBRZmluaXNoKGNvbm4pOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3BnX3VwZ3JhZGUuaAppbmRleCBjY2QxYWMwZDAxMy4uNzdlN2NhMWI0Y2QgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3BnX3VwZ3JhZGUuaApAQCAtMzExLDYgKzMxMSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJ aW50CQkJbnVtX3RhYmxlc3BhY2VzOwogCWNvbnN0IGNoYXIgKnRhYmxlc3BhY2Vfc3VmZml4Owkv KiBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiAqLwogCWludAkJCW5zdWJzOwkJCS8qIG51bWJlciBv ZiBzdWJzY3JpcHRpb25zICovCisJaW50CQkJbnJlcGxfb3JpZ2luczsJLyogbnVtYmVyIG9mIHJl cGxpY2F0aW9uIG9yaWdpbnMgKi8KIAlib29sCQlzdWJfcmV0YWluX2RlYWRfdHVwbGVzOyAvKiB3 aGV0aGVyIGEgc3Vic2NyaXB0aW9uIGVuYWJsZXMKIAkJCQkJCQkJCQkgKiByZXRhaW5fZGVhZF90 dXBsZXMuICovCiB9IENsdXN0ZXJJbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRl L3QvMDA0X3N1YnNjcmlwdGlvbi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3Jp cHRpb24ucGwKaW5kZXggNjQ2NzY3ZjJhNjUuLmU4YjExZDM5ZGQwIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsCisrKyBiL3NyYy9iaW4vcGdfdXBn cmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwKQEAgLTQyLDcgKzQyLDcgQEAgbXkgJGNvbm5zdHIg PSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwogCiAjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDaGVjayB0 aGF0IHBnX3VwZ3JhZGUgZmFpbHMgd2hlbiBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMg Y29uZmlndXJlZAotIyBpbiB0aGUgbmV3IGNsdXN0ZXIgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIg b2Ygc3Vic2NyaXB0aW9ucyBpbiB0aGUgb2xkCisjIGluIHRoZSBuZXcgY2x1c3RlciBpcyBsZXNz IHRoYW4gdGhlIG51bWJlciBvZiByZXBsaWNhdGlvbiBvcmlnaW5zIGluIHRoZSBvbGQKICMgY2x1 c3Rlci4KICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAjIEl0IGlzIHN1ZmZpY2llbnQgdG8gdXNlIGRpc2FibGVkIHN1YnNjcmlwdGlvbiB0 byB0ZXN0IHVwZ3JhZGUgZmFpbHVyZS4KQEAgLTc0LDcgKzc0LDcgQEAgY29tbWFuZF9jaGVja3Nf YWxsKAogCV0sCiAJMSwKIAlbCi0JCXFyLyJtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMi IFwoMFwpIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2Ygc3Vi c2NyaXB0aW9ucyBcKDFcKSBvbiB0aGUgb2xkIGNsdXN0ZXIvCisJCXFyLyJtYXhfYWN0aXZlX3Jl cGxpY2F0aW9uX29yaWdpbnMiIFwoMFwpIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv IHRoZSBudW1iZXIgb2YgcmVwbGljYXRpb24gb3JpZ2lucyBcKDFcKSBvbiB0aGUgb2xkIGNsdXN0 ZXIvCiAJXSwKIAlbcXIvL10sCiAJJ3J1biBvZiBwZ191cGdyYWRlIHdoZXJlIHRoZSBuZXcgY2x1 c3RlciBoYXMgaW5zdWZmaWNpZW50IG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucycKQEAg LTMwMSw4ICszMDEsMzAgQEAgaXMoJHJlc3VsdCwgcXEodCksICJDaGVjayB0aGF0IHRoZSB0YWJs ZSBpcyBpbiBpbml0IHN0YXRlIik7CiAKICMgR2V0IHRoZSByZXBsaWNhdGlvbiBvcmlnaW4ncyBy ZW1vdGVfbHNuIG9mIHRoZSBvbGQgc3Vic2NyaWJlcgogbXkgJHJlbW90ZV9sc24gPSAkb2xkX3N1 Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCByZW1vdGVfbHNuIEZST00gcGdfcmVw bGljYXRpb25fb3JpZ2luX3N0YXR1cyBvcywgcGdfc3Vic2NyaXB0aW9uIHMgV0hFUkUgb3MuZXh0 ZXJuYWxfaWQgPSAncGdfJyB8fCBzLm9pZCBBTkQgcy5zdWJuYW1lID0gJ3JlZ3Jlc3Nfc3ViNCci CisgICAgIlNFTEVDVCBvcy5yZW1vdGVfbHNuCisgICAgIEZST00gcGdfcmVwbGljYXRpb25fb3Jp Z2luX3N0YXR1cyBvcworICAgICBKT0lOIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBvIE9OIG8ucm9p ZGVudCA9IG9zLmxvY2FsX2lkCisgICAgIEpPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gby5yb25h bWUgPSAncGdfJyB8fCBzLm9pZDo6dGV4dAorICAgICBXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVz c19zdWI0JyIKICk7CisKKyMgR2V0IHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gT0lEcyAocm9pZGVu dCkgZm9yIGFsbCBzdWJzY3JpcHRpb25zLCBrZXllZCBieQorIyBzdWJzY3JpcHRpb24gbmFtZSAo d2hpY2ggaXMgc3RhYmxlIGFjcm9zcyB1cGdyYWRlLCB1bmxpa2Ugc3Vib2lkKS4gVGhlc2UKKyMg bXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgdXBncmFkZS4gQSBtaXNtYXRjaCB3b3VsZCBjYXVzZSBz cHVyaW91cworIyB1cGRhdGVfb3JpZ2luX2RpZmZlcnMgY29uZmxpY3RzLgorbXkgJXByZV91cGdy YWRlX3JvaWRlbnQ7CitteSAkcm9pZGVudF9yb3dzID0gJG9sZF9zdWItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorICAgICJTRUxFQ1Qgcy5zdWJuYW1lLCBvLnJvaWRlbnQKKyAgICAgRlJPTSBwZ19z dWJzY3JpcHRpb24gcworICAgICBKT0lOIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBvIE9OIG8ucm9u YW1lID0gJ3BnXycgfHwgcy5vaWQ6OnRleHQKKyAgICAgT1JERVIgQlkgcy5zdWJuYW1lIgorKTsK K2ZvciBteSAkcm93IChzcGxpdCAvXG4vLCAkcm9pZGVudF9yb3dzKQoreworICAgIG15ICgkc3Vi bmFtZSwgJHJvaWRlbnQpID0gc3BsaXQgL1x8LywgJHJvdzsKKyAgICAkcHJlX3VwZ3JhZGVfcm9p ZGVudHskc3VibmFtZX0gPSAkcm9pZGVudDsKK30KKwogIyBIYXZlIHRoZSBzdWJzY3JpcHRpb24g aW4gZGlzYWJsZWQgc3RhdGUgYmVmb3JlIHVwZ3JhZGUKICRvbGRfc3ViLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3N1YjUgRElTQUJMRSIpOwogCkBA IC0zNzgsNiArNDAwLDIwIEBAIHJlZ3Jlc3Nfc3ViNXxmfGZ8ZiksCiAJImNoZWNrIHRoYXQgdGhl IHN1YnNjcmlwdGlvbidzIHJ1bm5pbmcgc3RhdHVzLCBmYWlsb3ZlciwgYW5kIHJldGFpbl9kZWFk X3R1cGxlcyBhcmUgcHJlc2VydmVkIgogKTsKIAorIyBWZXJpZnkgdGhhdCByZXBsaWNhdGlvbiBv cmlnaW4gT0lEcyBhcmUgcHJlc2VydmVkIGFmdGVyIHVwZ3JhZGUuCitteSAkcG9zdF9yb2lkZW50 X3Jvd3MgPSAkbmV3X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBzLnN1 Ym5hbWUsIG8ucm9pZGVudAorICAgICBGUk9NIHBnX3N1YnNjcmlwdGlvbiBzCisgICAgIEpPSU4g cGdfcmVwbGljYXRpb25fb3JpZ2luIG8gT04gby5yb25hbWUgPSAncGdfJyB8fCBzLm9pZDo6dGV4 dAorICAgICBPUkRFUiBCWSBzLnN1Ym5hbWUiCispOworZm9yIG15ICRyb3cgKHNwbGl0IC9cbi8s ICRwb3N0X3JvaWRlbnRfcm93cykKK3sKKyAgICBteSAoJHN1Ym5hbWUsICRyb2lkZW50KSA9IHNw bGl0IC9cfC8sICRyb3c7CisgICAgaXMoJHJvaWRlbnQsICRwcmVfdXBncmFkZV9yb2lkZW50eyRz dWJuYW1lfSwKKyAgICAgICAgInJvaWRlbnQgcHJlc2VydmVkIGZvciBzdWJzY3JpcHRpb24gJyRz dWJuYW1lJyBhZnRlciB1cGdyYWRlIik7Cit9CisKICMgU3Vic2NyaXB0aW9uIHJlbGF0aW9ucyBz aG91bGQgYmUgcHJlc2VydmVkCiAkcmVzdWx0ID0gJG5ld19zdWItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJTRUxFQ1Qgc3JyZWxpZCwgc3JzdWJzdGF0ZSBGUk9NIHBnX3N1YnNjcmlwdGlvbl9y ZWwgT1JERVIgQlkgc3JyZWxpZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggM2EyODQw Njk4MWQuLjIxNDY2ZDkyNmYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTExOTYwLDEw ICsxMTk2MCw2IEBACiAgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLCBw cm9yZXR0eXBlID0+ICd2b2lkJywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQgb2lkIGNoYXIgcGdf bHNuJywKICAgcHJvc3JjID0+ICdiaW5hcnlfdXBncmFkZV9hZGRfc3ViX3JlbF9zdGF0ZScgfSwK LXsgb2lkID0+ICc2MzIwJywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFkZSAocmVtb3Rl X2xzbiBmb3Igb3JpZ2luKScsCi0gIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX3JlcGxvcmln aW5fYWR2YW5jZScsIHByb2lzc3RyaWN0ID0+ICdmJywKLSAgcHJvdm9sYXRpbGUgPT4gJ3YnLCBw cm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLAotICBwcm9hcmd0eXBlcyA9 PiAndGV4dCBwZ19sc24nLCBwcm9zcmMgPT4gJ2JpbmFyeV91cGdyYWRlX3JlcGxvcmlnaW5fYWR2 YW5jZScgfSwKIHsgb2lkID0+ICc2NTA1JywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFk ZSAoY29uZmxpY3QgZGV0ZWN0aW9uIHNsb3QpJywKICAgcHJvbmFtZSA9PiAnYmluYXJ5X3VwZ3Jh ZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90JywKICAgcHJvaXNzdHJpY3QgPT4gJ2Yn LCBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywKQEAgLTExOTczLDYgKzEx OTY5LDEwIEBACiAgIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNj cmlwdGlvbl9vaWQnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICdyJywg cHJvcmV0dHlwZSA9PiAndm9pZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4g J2JpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQnIH0sCit7IG9pZCA9 PiAnOTE2MScsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUgKHJlcGxpY2F0aW9uIG9y aWdpbiknLAorICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9jcmVhdGVfcmVwbGljYXRpb25f b3JpZ2luJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAndicsIHByb3Bh cmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCisgIHByb2FyZ3R5cGVzID0+ICdv aWQgdGV4dCBwZ19sc24nLCBwcm9zcmMgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNh dGlvbl9vcmlnaW4nIH0sCiAKICMgY29udmVyc2lvbiBmdW5jdGlvbnMKIHsgb2lkID0+ICc0MzEw JywgZGVzY3IgPT4gJ2ludGVybmFsIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIEtPSThSIHRvIFdJ TjEyNTEnLAotLSAKMi40Ny4zCgo= --0000000000003010660652d7c4eb--