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 1wZmQu-001HCy-2K for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 09:19:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZmQt-005Ob0-1t for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 09:19:39 +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 1wZmQs-005Oas-2t for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 09:19:39 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZmQq-00000000mYU-35jZ for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 09:19:38 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-39697a4e16cso52011371fa.3 for ; Wed, 17 Jun 2026 02:19:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781687973; cv=none; d=google.com; s=arc-20240605; b=fShCQFBHn13duPkRhJP8bO63T1ZrVE2TeeUjFmGdIhzdVMrEcM1B+pWGX6LJ6i/zl/ XT4RWXAOvqfNi7MHfw2C3iy6QmiHvkK8OkM7bkC4bjQ0XBUZi0EecNs34xwLAdi5/fcW Wmi5lzxyYvEVnLPxZe2UhWezOCxPIs3Z/j8PKi3cpsBKYN29INjsP3Rz5h6BH1SuhZum ah2jdISC3NhtiFp51rrlfg8Ryp3TMiLppK8qiTitctz7QKpL8fUu/CHf2pV2Cm7GWcuN VJ5RRzij9IYc5Z1CCXseJsSQbP7dAmmWNWIwl6IvA7by6/OYo7JjWpDby/nkIZCJdjFY steQ== 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=pqOVEn1FGEOFmg2H2LTcs4CNUBUNKk3Uroy1L6m4tow=; fh=jy47GEwGzF9jnSL9IEoV7DoQ/0U6zVrbB0IDao8J+3o=; b=I1UR2yyV/fAfZDHIc78tQfB/KDKCcffxtyp7qxx3s+PaNJ4rCxbpFWstoLeAwfOooI cyA/QQ7jwFUpWCPvzINOoMFWVHEiz6HdKsuu2JApz2twE6PhOcTIZiDJdW5OddlGXCR8 dAbUzWDhA7HP32Wf9EU369vUDffJU2bEMu7sjHAazLd1EXqgNZGJCm5ZRcVWAozJD+S9 XFd2G6aHKQ5U/0jKruMoL2dzzJs2BGsnCrYZfLbGNT+f50oztEteSLhPkE1THOi+danu pHVKsUPxbzogZOAKaSwrOfqswzOKq8YU/fQ95HqL9VCGDPRPHeo+q8DnxecyG/3yyFDj 54Ag==; 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=1781687973; x=1782292773; 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=pqOVEn1FGEOFmg2H2LTcs4CNUBUNKk3Uroy1L6m4tow=; b=ZMquvBg1WCVMOWdI8AcBuKp1LYRs/9twt02Rg2PKP7Rp8qSOPa9Eo/VNXGlWkK2WHc gLYbdCzsrrFdtURJFjny90mN4k2yOG/LlypwFA3zaKJ41iBcw+WXkJBF7DgQwmX3XaQz LfkD13Uo3z6kizyHcX3EbXZks6bqPW77xe/T/1PrbtDeE9UTpGj2PYIGNb5mztfP6erL reqUBLTKrNR+qopVeJAPLC1Le1pi5Np+8bFI/47Jht/8NzEYc0FZA+xgG8xRQ1sFVdlB kuKGuQp36NC19DNnTnJj/Qr/a5WKzElPwjc+zl0/JSoExqIK1VkHwKaSMmbYPegBDUWx rbTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781687973; x=1782292773; 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=pqOVEn1FGEOFmg2H2LTcs4CNUBUNKk3Uroy1L6m4tow=; b=ekNAvAMaC/d4tcGeqJaPXRzU2VVVf7sJJzsfJpzzPcvDMXQ82AUfUVYHMsRLBdcaIR ba55H50IS5JnmatpEBgL741vt/Lk/t+AT1ZCTJNQCuhamRY5boB/uj0tA5ivSgf33V9G DedGbrsEm/ypL5xXmZNM68lrWzwWryIBlmA75cJrc2v3IAErVxa0z6jtBY2j0y5WGdWZ TxLDi3paxBMgTa9oKNE4/GqJVjyOovtyG3YidtNwpzQco9rBO8b0pnjWVSCoW8mZ280t hjyWTurV44yGjvelhhqDBVegzvsXLbMDYsP8Mg0CUxdEWH5DzdRHOzxWNpp2Yn5VyE/l ejzQ== X-Forwarded-Encrypted: i=1; AFNElJ+G2vZWPTi8MEIvAUDdSvLsgiSNBTXZ50VyCxbCMUypBdCh92x/pp9Xe8tS9+yqh+e9qpKehTtGfM4E5jGb@lists.postgresql.org X-Gm-Message-State: AOJu0Yxq8i91WlUgaaxCDVNkr9ZYi9s64JPkl7EULtFzFk7HxULSBq6n 4pl5cSqgIX3WmIC7Z7Lw+ceeJ2EdBoikn/cmHTIjRqtRfzMdfxJ1kDt3A+oS9c/9QQnoXKhQJUP 9Ve8WtpqOGD6jfMIQ/3htUX9h9S4sFoNkrcKjYOU= X-Gm-Gg: AfdE7cmgloZH4Un21I/6hayrcmHKGQAFszVYri+XPBnxubv7xeUpQdINNPmNPMK55Vo 5sBhdhWhS6gin4OJ+GE307A66eTQtV1syUJaToDRND2mp2qUQrbqSUgCjdckyyvSWWgonDjk5/S Q7R1JZGQshYdJLKl+52PSxVdxdQtBmrnHH6gn2CD9J/0TZuKSHLW/Xi7DuP1fl3kXH5PLcZaL8f 9LwfAkKIZv5UR58n3znHhIFoGIsfoST53di1IfDNmWMUUNBK5gQLImsk1SJJ9zqn400X+HKgrxk g8fB28doIe2kx6w83MzYGPhVv/GGNmScES8tzE4KbeIPJQwwTeWRObjRKbJFp9bFLZwIo40= X-Received: by 2002:a2e:bd10:0:b0:394:898:a351 with SMTP id 38308e7fff4ca-39969b52403mr6970041fa.13.1781687972642; Wed, 17 Jun 2026 02:19:32 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Wed, 17 Jun 2026 19:19:19 +1000 X-Gm-Features: AVVi8CeAmRU2Q5CANH1J7uESj2tNUdWP7NTMJlfhOA-ak0ERGpp5VnARBxJMfpM Message-ID: Subject: Re: [PATCH] Preserve replication origin OIDs in pg_upgrade To: Shlok Kyal Cc: shveta malik , Zsolt Parragi , vignesh C , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , shveta malik Content-Type: multipart/mixed; boundary="000000000000b6113c06546f8e05" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b6113c06546f8e05 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jun 5, 2026 at 8:10=E2=80=AFPM vignesh C wrot= e: > > Few comments: > 1) pg_dumpall dumps all replication origins, not just subscription > origins and recreates every origin: > SELECT o.*, os.remote_lsn > FROM pg_replication_origin o > LEFT JOIN pg_replication_origin_status os > ON o.roident =3D os.local_id > > Is pg_upgrade expected to preserve user-created origins? > If so, you can mention this in the commit message > I explicitly state that all replication origins are migrated in the commit message, nothing specific about subscription origins. > 2) Should the table lock be released here, if so should we mention > comments similar to how it is mentioned in > binary_upgarde_add_sub_rel_state: > + /* Restore the remote_lsn if provided, while still holding the lock */ > + if (!PG_ARGISNULL(2)) > + { > + XLogRecPtr remote_commit =3D PG_GETARG_LSN(2); > > - ReplicationSlotRelease(); > + replorigin_advance(node, remote_commit, InvalidXLogRecPtr, > + false /* backward */, > + false /* WAL log */); > + } > + > + table_close(rel, RowExclusiveLock); > Is that relevant when creating a new row? or only when updating an existing= one? > 3) We can use new style of ereport to exclude '(' before errcode: > 3.a) > + ereport(ERROR, > + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), > + errmsg("replication origin name is too long"), > + errdetail("Replication origin names must be no longer than %d bytes.", > + MAX_RONAME_LEN))); > > 3.b) Similarly here: > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin with ID %u already exists", node_oid))); > > 3.c) There are many others, you can search other ereport in the patch > and change it too. > Done. > 4) Since only one column will be returned here, can we use > "PQgetvalue(res, 0, 0) and remove PQfnumber: > + res =3D executeQueryOrDie(conn, > + "SELECT count(*) AS nrepl_origins " > + "FROM pg_catalog.pg_replication_origin"); > + i_nrepl_origins =3D PQfnumber(res, "nrepl_origins"); > + cluster->nrepl_origins =3D atoi(PQgetvalue(res, 0, i_nrepl_origins)); > + PQclear(res); > Done. > 5) replorigin_create also has some duplicate code like below, will it > be possible to have a common function so that both of them can use? > /* Check for name collision */ > + ScanKeyInit(&key, > + Anum_pg_replication_origin_roname, > + BTEqualStrategyNumber, F_TEXTEQ, > + roname_d); > + scan =3D systable_beginscan(rel, ReplicationOriginNameIndex, > + true /* indexOK */, > + SnapshotSelf, > + 1, &key); > + collides =3D HeapTupleIsValid(systable_getnext(scan)); > + systable_endscan(scan); > + > + if (collides) > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin \"%s\" already exists", > + originname))); > + > + memset(&nulls, 0, sizeof(nulls)); > + memset(&values, 0, sizeof(values)); > + > + values[Anum_pg_replication_origin_roident - 1] =3D ObjectIdGetDatum(nod= e); > + values[Anum_pg_replication_origin_roname - 1] =3D roname_d; > + > + tuple =3D heap_form_tuple(RelationGetDescr(rel), values, nulls); > + CatalogTupleInsert(rel, tuple); > + heap_freetuple(tuple); > + CommandCounterIncrement(); > I have created a new function replorigin_create_with_id() which has some common code and called that from both replorigin_create() and binary_upgrade_create_replication_origin() On Tue, Jun 9, 2026 at 3:06=E2=80=AFAM Shlok Kyal wrote: > > Hi Ajin, > I have reviewed the patch and here are some comments: > > 1. I want to clarify, what is the expected behaviour when we upgrade > the postgres instance from version <=3D 16 to "HEAD + patch"? > - ReplicationOriginNameForLogicalRep(subid, InvalidOid, originname, > sizeof(originname)); > - replorigin_create(originname); > + if (!IsBinaryUpgrade) > + { > + ReplicationOriginNameForLogicalRep(subid, InvalidOid, > originname, sizeof(originname)); > + replorigin_create(originname); > + } > and > + /* Dump replication origins */ > + if (server_version >=3D 170000 && binary_upgrade && > archDumpFormat =3D=3D archNull) > + dumpReplicationOrigins(conn); > > When the postgres instance with subscription is updated from PG 16 (or > less) to HEAD, the replication origin is created as we do not have "if > (!IsBinaryUpgrade)" check in HEAD, > whereas when the similar instance is upgraded to "HEAD + patch", no > replication origin is present after the upgrade. > Is this difference in the behaviour between HEAD and "HEAD + patch" expec= ted? > I have modified this as option 3 suggested by Shveta and Amit and removed the PG17 restriction for migrating replication origins, now it does it for all versions that have replication origins. > 2.a) Can we replace: > + /* Check for OID collision */ > + ScanKeyInit(&key, > + Anum_pg_replication_origin_roident, > + BTEqualStrategyNumber, F_OIDEQ, > + ObjectIdGetDatum(node)); > + scan =3D systable_beginscan(rel, ReplicationOriginIdentIndex, > + true /* indexOK */, > + SnapshotSelf, > + 1, &key); > + collides =3D HeapTupleIsValid(systable_getnext(scan)); > + systable_endscan(scan); > + > + if (collides) > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin with ID %u already > exists", node_oid))); > > with: > if (SearchSysCacheExists1(REPLORIGIDENT, ObjectIdGetDatum(node))) > ereport(ERROR, errcode(ERRCODE_DUPLICATE_OBJECT), > errmsg("replication origin with ID %u already > exists", node_oid)); > > 2.b) Similarly, Can we replace: > + /* Check for name collision */ > + ScanKeyInit(&key, > + Anum_pg_replication_origin_roname, > + BTEqualStrategyNumber, F_TEXTEQ, > + roname_d); > + scan =3D systable_beginscan(rel, ReplicationOriginNameIndex, > + true /* indexOK */, > + SnapshotSelf, > + 1, &key); > + collides =3D HeapTupleIsValid(systable_getnext(scan)); > + systable_endscan(scan); > + > + if (collides) > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin \"%s\" already exists", > + originname))); > with: > if (SearchSysCacheExists1(REPLORIGNAME, roname_d)) > ereport(ERROR, errcode(ERRCODE_DUPLICATE_OBJECT), > errmsg("replication origin \"%s\" already > exists", originname)); > > This will make the code smaller and easy to read. Thoughts? Done On Tue, Jun 9, 2026 at 2:13=E2=80=AFPM shveta malik wrote: > > > Please find a few comments on v007: > > 1) > > + node =3D (ReplOriginId) node_oid; > + originname =3D text_to_cstring(PG_GETARG_TEXT_PP(1)); > + > + if (strlen(originname) > MAX_RONAME_LEN) > + ereport(ERROR, > + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), > + errmsg("replication origin name is too long"), > + errdetail("Replication origin names must be no longer than %d bytes.", > + MAX_RONAME_LEN))); > + > + roname_d =3D CStringGetTextDatum(originname); > > CStringGetTextDatum is: > #define CStringGetTextDatum(s) PointerGetDatum(cstring_to_text(s)) > --------- > > We are first converting text to C-string , then Cstring to text and > then getting Datum. Double allocation and double conversion. Can we > please try this instead and verify if it works: > > text *origin_text =3D PG_GETARG_TEXT_PP(1); > originname =3D text_to_cstring(origin_text); > roname_d =3D PointerGetDatum(origin_text); > I've restructured the code now, its a bit tough to do this now. > 2) > +check_new_cluster_replication_origins(void) > +{ > + PGconn *conn; > + PGresult *res; > + int norigins; > + > + /* Quick return if there are no replication origins to migrate. */ > + if (old_cluster.nrepl_origins =3D=3D 0) > + return; > > Don't we need a version check simialr to what we have introduced in > pg_dumpall for origins? (Similar to > check_new_cluster_replication_slots as well) > I've removed the version check for PG17 now. > 3) > Since we have introduced check_new_cluster_replication_origins, do we > even need below checks in binary_upgrade_create_replication_origin()? > In which conditions will they be hit? > > + /* Check for OID collision */ > + .... > + if (collides) > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin with ID %u already exists", node_oid))); > + > + /* Check for name collision */ > + .... > + if (collides) > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin \"%s\" already exists", > + originname))); > With the restructured code, its not easy to do this now. > > 4) > Now since check_new_cluster_subscription_configuration() is purely > about checking max-origin GUC configuration, I think the name is > misleading. IMO, we should merge it to > check_new_cluster_replication_origins(). See how > check_new_cluster_replication_slots() does it: checking both > new-cluster's count and the max-configuration for slots. > Done. On Tue, Jun 9, 2026 at 9:32=E2=80=AFPM Shlok Kyal wrote: > > > > One more comment: > > 3. In logical-replication.sgml, we have documentation as: > "Commit timestamps and origin data are not preserved during the upgrade." > Now since the origin related data is preserved after the upgrade, > should we update the documentation here? > Updated. I have addressed the comments in v8 (attached). I've also now taken out the check for PG17 on old cluster and now all clusters which have replication origins are migrated. regards, Ajin Cherian Fujitsu Australia --000000000000b6113c06546f8e05 Content-Type: application/octet-stream; name="v8-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Disposition: attachment; filename="v8-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqhuyrav0 RnJvbSBkNzg2NGE0NWJlMmQ2NDdjYTNmNThjZGY2NDA3YzA2Y2I1M2I1ZmYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDExIEp1biAyMDI2IDEyOjM1OjEzICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2OCAxLzJd IFByZXNlcnZlIHN1YnNjcmlwdGlvbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpDdXJyZW50bHkg c3Vic2NyaXB0aW9uIE9JRHMgY2FuIGJlIGNoYW5nZWQgd2hlbiBhIGNsdXN0ZXIgaXMgdXBncmFk ZWQKdXNpbmcgcGdfdXBncmFkZS4gVGhpcyBpcyByZXF1aXJlZCBmb3IgYSBzdWJzZXF1ZW50IHBh dGNoIHdoaWNoIHdpbGwKcHJlc2VydmUgdGhlIHJlcGxpY2F0aW9uIG9pZHMgYWZ0ZXIgdXBncmFk ZS4KCkF1dGhvcjogVmlnbmVzaCBDIDx2aWduZXNoMjFAZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8IDI1ICsrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAgICB8IDEw ICsrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgOCArKysrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgICAgICAg ICB8ICAzICsrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5wbCAgICAg IHwgIDcgKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmggICAgICAg ICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAg fCAgNCArKysKIC4uLi9leHBlY3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0ICAgICAgICAgICAgICB8 ICA2ICsrKy0tCiA4IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGZkMDI2YjMw NGMyLi43MTM4NmZhN2Q5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny 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 YwppbmRleCBhMGY3ZjhlMjE2OC4uMDQ5MzM3ZGU2MmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf 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 --000000000000b6113c06546f8e05 Content-Type: application/octet-stream; name="v8-0002-Preserve-replication-origin-OIDs-during-pg_upgrad.patch" Content-Disposition: attachment; filename="v8-0002-Preserve-replication-origin-OIDs-during-pg_upgrad.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqhuyrbo1 RnJvbSAxZTc1MGE1OGZkNGUyNDczNjRiN2M2MDY4NjlhYWU2NzI4N2Y4NGExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDE4OjE2OjEzICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2OCAyLzJd IFByZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpXaGVu IHBnX3VwZ3JhZGUgbWlncmF0ZXMgYSBzdWJzY3JpYmVyLCByZXBsaWNhdGlvbiBvcmlnaW4gT0lE cwoocm9pZGVudCkgY2FuIGNoYW5nZSBhY3Jvc3MgdGhlIHVwZ3JhZGUuIFRoaXMgaXMgYSBwcm9i bGVtIGJlY2F1c2UKY29tbWl0LXRpbWVzdGFtcCByZWNvcmRzIGVtYmVkIHJvaWRlbnQgYW5kIGFy ZSBjb3BpZWQgZGlyZWN0bHkgZnJvbQp0aGUgb2xkIGNsdXN0ZXIncyBwZ19jb21taXRfdHMgZGly ZWN0b3J5LCBjYXVzaW5nIHNwdXJpb3VzCiJ1cGRhdGVfb3JpZ2luX2RpZmZlcnMiIGNvbmZsaWN0 cyBhZnRlciB0aGUgdXBncmFkZS4KCkZpeCB0aGlzIGJ5IGR1bXBpbmcgcmVwbGljYXRpb24gb3Jp Z2lucyBhcyBnbG9iYWwgb2JqZWN0cyB2aWEKcGdfZHVtcGFsbCBkdXJpbmcgYmluYXJ5IHVwZ3Jh ZGUsIHVzaW5nIGEgbmV3IGZ1bmN0aW9uCmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlv bl9vcmlnaW4ob2lkLCBuYW1lLCBsc24pIHRvIHJlY3JlYXRlCmVhY2ggb3JpZ2luIHdpdGggaXRz IHByZXNlcnZlZCByb2lkZW50IGFuZCByZW1vdGVfbHNuLiBUbyBhdm9pZApjb25mbGljdHMgd2l0 aCB0aGlzLCBDcmVhdGVTdWJzY3JpcHRpb24oKSBza2lwcyByZXBsb3JpZ2luX2NyZWF0ZSgpCmlu IGJpbmFyeS11cGdyYWRlIG1vZGUgc2luY2UgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IGNyZWF0ZWQg YnkgdGhlCnRpbWUgdGhlIHN1YnNjcmlwdGlvbiBpcyByZXN0b3JlZC4KCkF1dGhvcjogQWppbiBD aGVyaWFuIDxpdHNhamluQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IEhheWF0byBLdXJvZGEgKEZ1aml0 c3UpIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgpSZXZpZXdlcjogWnNvbHQgUGFycmFnaSA8 enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZXI6IFNobG9rIEt5YWwgPHNobG9rLmt5 YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IFNodmV0YSBtYWxpayA8c2h2ZXRhLm1hbGlrQGdt YWlsLmNvbT4KUmV2aWV3ZXI6IFZpZ25lc2ggQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4KLS0tCiBk b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICB8ICAxMSArLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgIHwgMTE3ICsrKysrKysrKysrKysrKy0t LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIHwgIDg4ICsr KysrKystLS0tLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAg ICB8ICAzOCArKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jICAgICAgICAgICAg ICAgfCAgNjQgKysrKysrKysrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9jaGVjay5jICAgICAgICAg ICAgICAgICB8ICA1NCArKysrKystLS0tCiBzcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jICAgICAg ICAgICAgICAgICAgfCAgIDcgKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBs ICAgfCAgNDIgKysrKysrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAg ICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAg IHwgICAyICsKIDEyIGZpbGVzIGNoYW5nZWQsIDI5MyBpbnNlcnRpb25zKCspLCAxNDEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggOWU3ODY4NDg3 ZGUuLjBlNDg0ODAwZmNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAg LTI4MTksNyArMjgxOSw3IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgIDxub3RlPgog ICAgIDxwYXJhPgotICAgICBDb21taXQgdGltZXN0YW1wcyBhbmQgb3JpZ2luIGRhdGEgYXJlIG5v dCBwcmVzZXJ2ZWQgZHVyaW5nIHRoZSB1cGdyYWRlLgorICAgICBDb21taXQgdGltZXN0YW1wcyBh cmUgbm90IHByZXNlcnZlZCBkdXJpbmcgdGhlIHVwZ3JhZGUuCiAgICAgIEFzIGEgcmVzdWx0LCBl dmVuIGlmCiAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1z LXdpdGgtcmV0YWluLWRlYWQtdHVwbGVzIj48bGl0ZXJhbD5yZXRhaW5fZGVhZF90dXBsZXM8L2xp dGVyYWw+PC9saW5rPgogICAgICBpcyBlbmFibGVkLCB0aGUgdXBncmFkZWQgc3Vic2NyaWJlciBt YXkgYmUgdW5hYmxlIHRvIGRldGVjdCBjb25mbGljdHMgb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYwppbmRleCA3MTM4NmZhN2Q5ZC4uODFiMGNlMjJlZTkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNs dWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaCIK ICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL2RlcGVuZGVu Y3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCkBAIC04NjcsOSArODY4LDE1IEBA IENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJICogYXBwbHkgd29ya2VycyBpbml0aWFsaXphdGlvbiwgYW5kIHRvIGhh bmRsZSBvcmlnaW4gY3JlYXRpb24gZHluYW1pY2FsbHkKIAkgKiB3aGVuIHRhYmxlcyBhcmUgYWRk ZWQgdG8gdGhlIHN1YnNjcmlwdGlvbi4gSXQgaXMgbm90IGNsZWFyIHdoZXRoZXIKIAkgKiBwcmV2 ZW50aW5nIGNyZWF0aW9uIG9mIG9yaWdpbnMgaXMgd29ydGggYWRkaXRpb25hbCBjb21wbGV4aXR5 LgorCSAqCisJICogSW4gYmluYXJ5LXVwZ3JhZGUgbW9kZSwgc2tpcCBvcmlnaW4gY3JlYXRpb24g aGVyZS4gVGhpcyBpcyByZXF1aXJlZCB0bworCSAqIHByZXNlcnZlIHRoZSByb2lkZW50IGZyb20g dGhlIG9sZCBjbHVzdGVyIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4KIAkgKi8KLQlSZXBsaWNhdGlv bk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKHN1YmlkLCBJbnZhbGlkT2lkLCBvcmlnaW5uYW1lLCBz aXplb2Yob3JpZ2lubmFtZSkpOwotCXJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCWlm ICghSXNCaW5hcnlVcGdyYWRlKQorCXsKKwkJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNh bFJlcChzdWJpZCwgSW52YWxpZE9pZCwgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsK KwkJcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7CisJfQogCiAJLyoKIAkgKiBDb25uZWN0 IHRvIHJlbW90ZSBzaWRlIHRvIGV4ZWN1dGUgcmVxdWVzdGVkIGNvbW1hbmRzIGFuZCBmZXRjaCB0 YWJsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggYzlkZmIw OTRjMmIuLmI1Yjg3ZjNlOTNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3Jp Z2luLmMKQEAgLTI2NSw2ICsyNjUsNzMgQEAgcmVwbG9yaWdpbl9ieV9uYW1lKGNvbnN0IGNoYXIg KnJvbmFtZSwgYm9vbCBtaXNzaW5nX29rKQogCXJldHVybiByb2lkZW50OwogfQogCisvKgorICog cmVwbG9yaWdpbl9jcmVhdGVfd2l0aF9pZAorICoKKyAqIENyZWF0ZSBhIHJlcGxpY2F0aW9uIG9y aWdpbiB3aXRoIGEgc3BlY2lmaWMgSUQgYW5kIG5hbWUsIG9wdGlvbmFsbHkKKyAqIHJlc3Rvcmlu ZyBpdHMgcmVtb3RlX2xzbi4gIFVzZWQgYnkgcGdfdXBncmFkZSB0byBwcmVzZXJ2ZSByZXBsaWNh dGlvbgorICogb3JpZ2luIElEcyBhY3Jvc3MgdGhlIHVwZ3JhZGUuCisgKgorICogTmVlZHMgdG8g YmUgY2FsbGVkIGluIGEgdHJhbnNhY3Rpb24uCisgKi8KK3ZvaWQKK3JlcGxvcmlnaW5fY3JlYXRl X3dpdGhfaWQoUmVwbE9yaWdpbklkIHJvaWRlbnQsIGNvbnN0IGNoYXIgKnJvbmFtZSwKKwkJCQkJ CSAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKQoreworCURhdHVtCQkJcm9uYW1lX2Q7CisJYm9vbAkJ CW51bGxzW05hdHRzX3BnX3JlcGxpY2F0aW9uX29yaWdpbl07CisJRGF0dW0JCQl2YWx1ZXNbTmF0 dHNfcGdfcmVwbGljYXRpb25fb3JpZ2luXTsKKwlIZWFwVHVwbGUJCXR1cGxlOworCVJlbGF0aW9u CQlyZWw7CisKKwlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJLyoKKwkgKiBUbyBh dm9pZCBuZWVkaW5nIGEgVE9BU1QgdGFibGUgZm9yIHBnX3JlcGxpY2F0aW9uX29yaWdpbiwgd2Ug bGltaXQKKwkgKiByZXBsaWNhdGlvbiBvcmlnaW4gbmFtZXMgdG8gNTEyIGJ5dGVzLiAgVGhpcyBz aG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaAorCSAqIGZvciBhbGwgcHJhY3RpY2FsIHVzZS4KKwkg Ki8KKwlpZiAoc3RybGVuKHJvbmFtZSkgPiBNQVhfUk9OQU1FX0xFTikKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCisJCQkJZXJy bXNnKCJyZXBsaWNhdGlvbiBvcmlnaW4gbmFtZSBpcyB0b28gbG9uZyIpLAorCQkJCWVycmRldGFp bCgiUmVwbGljYXRpb24gb3JpZ2luIG5hbWVzIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gJWQgYnl0 ZXMuIiwKKwkJCQkJCSAgTUFYX1JPTkFNRV9MRU4pKTsKKworCXJvbmFtZV9kID0gQ1N0cmluZ0dl dFRleHREYXR1bShyb25hbWUpOworCisJaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMShSRVBMT1JJ R0lERU5ULCBPYmplY3RJZEdldERhdHVtKHJvaWRlbnQpKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJZXJybXNnKCJyZXBsaWNh dGlvbiBvcmlnaW4gd2l0aCBJRCAldSBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCSAgIChPaWQpIHJv aWRlbnQpKTsKKworCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czEoUkVQTE9SSUdOQU1FLCByb25h bWVfZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9P QkpFQ1QpLAorCQkJCWVycm1zZygicmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBhbHJlYWR5IGV4 aXN0cyIsIHJvbmFtZSkpOworCisJcmVsID0gdGFibGVfb3BlbihSZXBsaWNhdGlvbk9yaWdpblJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJbWVtc2V0KCZudWxscywgMCwgc2l6ZW9m KG51bGxzKSk7CisJbWVtc2V0KCZ2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKworCXZhbHVl c1tBbnVtX3BnX3JlcGxpY2F0aW9uX29yaWdpbl9yb2lkZW50IC0gMV0gPSBPYmplY3RJZEdldERh dHVtKHJvaWRlbnQpOworCXZhbHVlc1tBbnVtX3BnX3JlcGxpY2F0aW9uX29yaWdpbl9yb25hbWUg LSAxXSA9IHJvbmFtZV9kOworCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXRE ZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocmVsLCB0dXBs ZSk7CisJaGVhcF9mcmVldHVwbGUodHVwbGUpOworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisKKwlpZiAocmVtb3RlX2xzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJcmVwbG9yaWdpbl9h ZHZhbmNlKHJvaWRlbnQsIHJlbW90ZV9sc24sIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJICAg ZmFsc2UgLyogYmFja3dhcmQgKi8sCisJCQkJCQkgICBmYWxzZSAvKiBXQUwgbG9nICovKTsKKwor CXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBDcmVhdGUg YSByZXBsaWNhdGlvbiBvcmlnaW4uCiAgKgpAQCAtMjczLDEzICszNDAsMTIgQEAgcmVwbG9yaWdp bl9ieV9uYW1lKGNvbnN0IGNoYXIgKnJvbmFtZSwgYm9vbCBtaXNzaW5nX29rKQogUmVwbE9yaWdp bklkCiByZXBsb3JpZ2luX2NyZWF0ZShjb25zdCBjaGFyICpyb25hbWUpCiB7Ci0JT2lkCQkJcm9p ZGVudDsKLQlIZWFwVHVwbGUJdHVwbGUgPSBOVUxMOwotCVJlbGF0aW9uCXJlbDsKLQlEYXR1bQkJ cm9uYW1lX2Q7Ci0JU25hcHNob3REYXRhIFNuYXBzaG90RGlydHk7Ci0JU3lzU2NhbkRlc2Mgc2Nh bjsKLQlTY2FuS2V5RGF0YSBrZXk7CisJT2lkCQkJCXJvaWRlbnQ7CisJUmVsYXRpb24JCXJlbDsK KwlTbmFwc2hvdERhdGEJU25hcHNob3REaXJ0eTsKKwlTeXNTY2FuRGVzYwkJc2NhbjsKKwlTY2Fu S2V5RGF0YQkJa2V5OworCWJvb2wJCQlmb3VuZCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUbyBhdm9p ZCBuZWVkaW5nIGEgVE9BU1QgdGFibGUgZm9yIHBnX3JlcGxpY2F0aW9uX29yaWdpbiwgd2UgbGlt aXQKQEAgLTI5Myw4ICszNTksNiBAQCByZXBsb3JpZ2luX2NyZWF0ZShjb25zdCBjaGFyICpyb25h bWUpCiAJCQkJIGVycmRldGFpbCgiUmVwbGljYXRpb24gb3JpZ2luIG5hbWVzIG11c3QgYmUgbm8g bG9uZ2VyIHRoYW4gJWQgYnl0ZXMuIiwKIAkJCQkJCSAgIE1BWF9ST05BTUVfTEVOKSkpOwogCi0J cm9uYW1lX2QgPSBDU3RyaW5nR2V0VGV4dERhdHVtKHJvbmFtZSk7Ci0KIAlBc3NlcnQoSXNUcmFu c2FjdGlvblN0YXRlKCkpOwogCiAJLyoKQEAgLTMyMSwxNyArMzg1LDE1IEBAIHJlcGxvcmlnaW5f Y3JlYXRlKGNvbnN0IGNoYXIgKnJvbmFtZSkKIAkgKiBzbmFwc2hvdC4gIFRvIG1ha2UgdGhhdCBz YWZlLCBpdCBuZWVkcyB0byBub3QgaGF2ZSBhIFRPQVNUIHRhYmxlLCBzaW5jZQogCSAqIFRPQVNU ZWQgZGF0YSBjYW5ub3QgYmUgZmV0Y2hlZCB3aXRob3V0IGEgc25hcHNob3QuICBBcyBvZiB0aGlz IHdyaXRpbmcsCiAJICogaXRzIG9ubHkgdmFybGVuYSBjb2x1bW4gaXMgcm9uYW1lLCB3aGljaCB3 ZSBsaW1pdCB0byA1MTIgYnl0ZXMgdG8gYXZvaWQKLQkgKiBuZWVkaW5nIG91dC1vZi1saW5lIHN0 b3JhZ2UuICBJZiB5b3UgYWRkIGEgVE9BU1QgdGFibGUgdG8gdGhpcyBjYXRhbG9nLAotCSAqIGJl IHN1cmUgdG8gc2V0IHVwIGEgc25hcHNob3QgZXZlcnl3aGVyZSBpdCBtaWdodCBiZSBuZWVkZWQu ICBGb3IgbW9yZQorCSAqIG5lZWRpbmcgb3V0LW9mLWxpbmUgc3RvcmFnZS4gSWYgeW91IGFkZCBh IFRPQVNUIHRhYmxlIHRvIHRoaXMgY2F0YWxvZywKKwkgKiBiZSBzdXJlIHRvIHNldCB1cCBhIHNu YXBzaG90IGV2ZXJ5d2hlcmUgaXQgbWlnaHQgYmUgbmVlZGVkLiBGb3IgbW9yZQogCSAqIGluZm9y bWF0aW9uLCBzZWUgaHR0cHM6Ly9wb3N0Z3IuZXMvbS9adk1TVVBPcVVVLVZOQUROJTQwbmF0aGFu LgogCSAqLwogCUFzc2VydCghT2lkSXNWYWxpZChyZWwtPnJkX3JlbC0+cmVsdG9hc3RyZWxpZCkp OwogCiAJZm9yIChyb2lkZW50ID0gSW52YWxpZE9pZCArIDE7IHJvaWRlbnQgPCBQR19VSU5UMTZf TUFYOyByb2lkZW50KyspCiAJewotCQlib29sCQludWxsc1tOYXR0c19wZ19yZXBsaWNhdGlvbl9v cmlnaW5dOwotCQlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3JlcGxpY2F0aW9uX29yaWdpbl07Ci0J CWJvb2wJCWNvbGxpZGVzOworCQlib29sCWNvbGxpZGVzOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKQEAgLTM0MSw0MSArNDAzLDI4IEBAIHJlcGxvcmlnaW5fY3JlYXRlKGNvbnN0IGNo YXIgKnJvbmFtZSkKIAkJCQkJT2JqZWN0SWRHZXREYXR1bShyb2lkZW50KSk7CiAKIAkJc2NhbiA9 IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIFJlcGxpY2F0aW9uT3JpZ2luSWRlbnRJbmRleCwKLQkJ CQkJCQkJICB0cnVlIC8qIGluZGV4T0sgKi8gLAorCQkJCQkJCQkgIHRydWUgLyogaW5kZXhPSyAq LywKIAkJCQkJCQkJICAmU25hcHNob3REaXJ0eSwKIAkJCQkJCQkJICAxLCAma2V5KTsKLQogCQlj b2xsaWRlcyA9IEhlYXBUdXBsZUlzVmFsaWQoc3lzdGFibGVfZ2V0bmV4dChzY2FuKSk7Ci0KIAkJ c3lzdGFibGVfZW5kc2NhbihzY2FuKTsKIAogCQlpZiAoIWNvbGxpZGVzKQogCQl7Ci0JCQkvKgot CQkJICogT2ssIGZvdW5kIGFuIHVudXNlZCByb2lkZW50LCBpbnNlcnQgdGhlIG5ldyByb3cgYW5k IGRvIGEgQ0NJLAotCQkJICogc28gb3VyIGNhbGxlcnMgY2FuIGxvb2sgaXQgdXAgaWYgdGhleSB3 YW50IHRvLgotCQkJICovCi0JCQltZW1zZXQoJm51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKLQot CQkJdmFsdWVzW0FudW1fcGdfcmVwbGljYXRpb25fb3JpZ2luX3JvaWRlbnQgLSAxXSA9IE9iamVj dElkR2V0RGF0dW0ocm9pZGVudCk7Ci0JCQl2YWx1ZXNbQW51bV9wZ19yZXBsaWNhdGlvbl9vcmln aW5fcm9uYW1lIC0gMV0gPSByb25hbWVfZDsKLQotCQkJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUo UmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKLQkJCUNhdGFsb2dUdXBsZUlu c2VydChyZWwsIHR1cGxlKTsKLQkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCQlmb3Vu ZCA9IHRydWU7CiAJCQlicmVhazsKIAkJfQogCX0KIAotCS8qIG5vdyByZWxlYXNlIGxvY2sgYWdh aW4sCSovCi0JdGFibGVfY2xvc2UocmVsLCBFeGNsdXNpdmVMb2NrKTsKLQotCWlmICh0dXBsZSA9 PSBOVUxMKQorCWlmICghZm91bmQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJjb3VsZCBub3QgZmlu ZCBmcmVlIHJlcGxpY2F0aW9uIG9yaWdpbiBJRCIpKSk7CiAKLQloZWFwX2ZyZWV0dXBsZSh0dXBs ZSk7CisJdGFibGVfY2xvc2UocmVsLCBFeGNsdXNpdmVMb2NrKTsKKworCXJlcGxvcmlnaW5fY3Jl YXRlX3dpdGhfaWQocm9pZGVudCwgcm9uYW1lLCBJbnZhbGlkWExvZ1JlY1B0cik7CisKIAlyZXR1 cm4gcm9pZGVudDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3Vw Z3JhZGVfc3VwcG9ydC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9y dC5jCmluZGV4IDU5YzNlN2YwMTQ2Li4xNmI3NDA4NDE2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vz cy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvYmluYXJ5X3VwZ3JhZGUuaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogCiAKICNkZWZpbmUgQ0hFQ0tfSVNfQklOQVJZX1VQR1JBREUJCQkJCQkJCQlcCkBA IC0zNzcsNzEgKzM4MCw2MCBAQCBiaW5hcnlfdXBncmFkZV9hZGRfc3ViX3JlbF9zdGF0ZShQR19G VU5DVElPTl9BUkdTKQogfQogCiAvKgotICogYmluYXJ5X3VwZ3JhZGVfcmVwbG9yaWdpbl9hZHZh bmNlCisgKiBiaW5hcnlfdXBncmFkZV9jcmVhdGVfY29uZmxpY3RfZGV0ZWN0aW9uX3Nsb3QKICAq Ci0gKiBVcGRhdGUgdGhlIHJlbW90ZV9sc24gZm9yIHRoZSBzdWJzY3JpYmVyJ3MgcmVwbGljYXRp b24gb3JpZ2luLgorICogQ3JlYXRlIGEgcmVwbGljYXRpb24gc2xvdCB0byByZXRhaW4gaW5mb3Jt YXRpb24gbmVjZXNzYXJ5IGZvciBjb25mbGljdAorICogZGV0ZWN0aW9uIHN1Y2ggYXMgZGVhZCB0 dXBsZXMsIGNvbW1pdCB0aW1lc3RhbXBzLCBhbmQgb3JpZ2lucy4KICAqLwogRGF0dW0KLWJpbmFy eV91cGdyYWRlX3JlcGxvcmlnaW5fYWR2YW5jZShQR19GVU5DVElPTl9BUkdTKQorYmluYXJ5X3Vw Z3JhZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90KFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0JUmVsYXRpb24JcmVsOwotCU9pZAkJCXN1YmlkOwotCWNoYXIJICAgKnN1Ym5hbWU7Ci0JY2hh cgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JUmVwbE9yaWdpbklkIG5vZGU7Ci0JWExvZ1Jl Y1B0cglyZW1vdGVfY29tbWl0OwotCiAJQ0hFQ0tfSVNfQklOQVJZX1VQR1JBREU7CiAKLQkvKgot CSAqIFdlIG11c3QgZW5zdXJlIGEgbm9uLU5VTEwgc3Vic2NyaXB0aW9uIG5hbWUgYmVmb3JlIGRl cmVmZXJlbmNpbmcgdGhlCi0JICogYXJndW1lbnRzLgotCSAqLwotCWlmIChQR19BUkdJU05VTEwo MCkpCi0JCWVsb2coRVJST1IsICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX3JlcGxv cmlnaW5fYWR2YW5jZSBpcyBub3QgYWxsb3dlZCIpOwotCi0Jc3VibmFtZSA9IHRleHRfdG9fY3N0 cmluZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0JcmVtb3RlX2NvbW1pdCA9IFBHX0FSR0lTTlVM TCgxKSA/IEludmFsaWRYTG9nUmVjUHRyIDogUEdfR0VUQVJHX0xTTigxKTsKLQotCXJlbCA9IHRh YmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7Ci0Jc3Vi aWQgPSBnZXRfc3Vic2NyaXB0aW9uX29pZChzdWJuYW1lLCBmYWxzZSk7Ci0KLQlSZXBsaWNhdGlv bk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKHN1YmlkLCBJbnZhbGlkT2lkLCBvcmlnaW5uYW1lLCBz aXplb2Yob3JpZ2lubmFtZSkpOwotCi0JLyogTG9jayB0byBwcmV2ZW50IHRoZSByZXBsaWNhdGlv biBvcmlnaW4gZnJvbSB2YW5pc2hpbmcgKi8KLQlMb2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25P cmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQlub2RlID0gcmVwbG9yaWdpbl9i eV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKLQotCS8qCi0JICogVGhlIHNlcnZlciB3aWxsIGJl IHN0b3BwZWQgYWZ0ZXIgc2V0dGluZyB1cCB0aGUgb2JqZWN0cyBpbiB0aGUgbmV3Ci0JICogY2x1 c3RlciBhbmQgdGhlIG9yaWdpbnMgd2lsbCBiZSBmbHVzaGVkIGR1cmluZyB0aGUgc2h1dGRvd24g Y2hlY2twb2ludC4KLQkgKiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGxhdGVzdCBMU04gdmFs dWVzIGZvciBvcmlnaW4gd2lsbCBiZQotCSAqIGF2YWlsYWJsZSBhZnRlciB0aGUgdXBncmFkZS4K LQkgKi8KLQlyZXBsb3JpZ2luX2FkdmFuY2Uobm9kZSwgcmVtb3RlX2NvbW1pdCwgSW52YWxpZFhM b2dSZWNQdHIsCi0JCQkJCSAgIGZhbHNlIC8qIGJhY2t3YXJkICovICwKLQkJCQkJICAgZmFsc2Ug LyogV0FMIGxvZyAqLyApOworCUNyZWF0ZUNvbmZsaWN0RGV0ZWN0aW9uU2xvdCgpOwogCi0JVW5s b2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKLQl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVJlcGxpY2F0aW9u U2xvdFJlbGVhc2UoKTsKIAogCVBHX1JFVFVSTl9WT0lEKCk7CiB9CiAKIC8qCi0gKiBiaW5hcnlf dXBncmFkZV9jcmVhdGVfY29uZmxpY3RfZGV0ZWN0aW9uX3Nsb3QKKyAqIGJpbmFyeV91cGdyYWRl X2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4KICAqCi0gKiBDcmVhdGUgYSByZXBsaWNhdGlvbiBz bG90IHRvIHJldGFpbiBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIGNvbmZsaWN0Ci0gKiBkZXRl Y3Rpb24gc3VjaCBhcyBkZWFkIHR1cGxlcywgY29tbWl0IHRpbWVzdGFtcHMsIGFuZCBvcmlnaW5z LgorICogQ3JlYXRlIGEgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggYSBzcGVjaWZpYyBPSUQgYW5k IG5hbWUsIG9wdGlvbmFsbHkKKyAqIHJlc3RvcmluZyBpdHMgcmVtb3RlX2xzbi4gVXNlZCBieSBw Z191cGdyYWRlIHRvIHByZXNlcnZlIHJlcGxpY2F0aW9uCisgKiBvcmlnaW4gT0lEcyBhY3Jvc3Mg dGhlIHVwZ3JhZGUuCiAgKi8KIERhdHVtCi1iaW5hcnlfdXBncmFkZV9jcmVhdGVfY29uZmxpY3Rf ZGV0ZWN0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKK2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9y ZXBsaWNhdGlvbl9vcmlnaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlDSEVDS19JU19CSU5BUllf VVBHUkFERTsKKwlPaWQgICAgICAgICAgICAgbm9kZV9vaWQ7CisJUmVwbE9yaWdpbklkICAgIG5v ZGU7CisJY2hhciAgICAgICAgICAgKm9yaWdpbm5hbWU7CisJWExvZ1JlY1B0ciAgICAgIHJlbW90 ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAotCUNyZWF0ZUNvbmZsaWN0RGV0ZWN0aW9uU2xv dCgpOworCUNIRUNLX0lTX0JJTkFSWV9VUEdSQURFOwogCi0JUmVwbGljYXRpb25TbG90UmVsZWFz ZSgpOworCWlmIChQR19BUkdJU05VTEwoMCkgfHwgUEdfQVJHSVNOVUxMKDEpKQorCQllbG9nKEVS Uk9SLAorCQkJICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNh dGlvbl9vcmlnaW4gaXMgbm90IGFsbG93ZWQiKTsKIAotCVBHX1JFVFVSTl9WT0lEKCk7CisJbm9k ZV9vaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYgKG5vZGVfb2lkID09IEludmFsaWRPaWQg fHwgbm9kZV9vaWQgPiBQR19VSU5UMTZfTUFYKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJyZXBsaWNh dGlvbiBvcmlnaW4gSUQgJXUgaXMgb3V0IG9mIHJhbmdlIiwgbm9kZV9vaWQpKTsKKworCW5vZGUg PSAoUmVwbE9yaWdpbklkKSBub2RlX29pZDsKKwlvcmlnaW5uYW1lID0gdGV4dF90b19jc3RyaW5n KFBHX0dFVEFSR19URVhUX1BQKDEpKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDIpKQorCQlyZW1v dGVfbHNuID0gUEdfR0VUQVJHX0xTTigyKTsKKworCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUo KSk7CisKKwlyZXBsb3JpZ2luX2NyZWF0ZV93aXRoX2lkKG5vZGUsIG9yaWdpbm5hbWUsIHJlbW90 ZV9sc24pOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDA0OTMzN2Rl NjJhLi5mZDEzZTE2NWY3YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01NjY4LDM3ICs1NjY4LDE1IEBAIGR1 bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3Vi aW5mbykKIAkgKiBJbiBiaW5hcnktdXBncmFkZSBtb2RlLCB3ZSBhbGxvdyB0aGUgcmVwbGljYXRp b24gdG8gY29udGludWUgYWZ0ZXIgdGhlCiAJICogdXBncmFkZS4KIAkgKi8KLQlpZiAoZG9wdC0+ YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNzAwMDApCisJaWYgKGRv cHQtPmJpbmFyeV91cGdyYWRlICYmIHN1YmluZm8tPnN1YmVuYWJsZWQgJiYgZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxNzAwMDApCiAJewotCQlpZiAoc3ViaW5mby0+c3Vib3JpZ2lucmVtb3RlbHNu KQotCQl7Ci0JCQkvKgotCQkJICogUHJlc2VydmUgdGhlIHJlbW90ZV9sc24gZm9yIHRoZSBzdWJz Y3JpYmVyJ3MgcmVwbGljYXRpb24KLQkJCSAqIG9yaWdpbi4gVGhpcyB2YWx1ZSBpcyByZXF1aXJl ZCB0byBzdGFydCB0aGUgcmVwbGljYXRpb24gZnJvbQotCQkJICogdGhlIHBvc2l0aW9uIGJlZm9y ZSB0aGUgdXBncmFkZS4gVGhpcyB2YWx1ZSB3aWxsIGJlIHN0YWxlIGlmCi0JCQkgKiB0aGUgcHVi bGlzaGVyIGdldHMgdXBncmFkZWQgYmVmb3JlIHRoZSBzdWJzY3JpYmVyIG5vZGUuCi0JCQkgKiBI b3dldmVyLCB0aGlzIHNob3VsZG4ndCBiZSBhIHByb2JsZW0gYXMgdGhlIHVwZ3JhZGUgb2YgdGhl Ci0JCQkgKiBwdWJsaXNoZXIgZW5zdXJlcyB0aGF0IGFsbCB0aGUgdHJhbnNhY3Rpb25zIHdlcmUg cmVwbGljYXRlZAotCQkJICogYmVmb3JlIHVwZ3JhZGluZyBpdC4KLQkJCSAqLwotCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJCSAiXG4tLSBGb3IgYmluYXJ5IHVwZ3JhZGUs IG11c3QgcHJlc2VydmUgdGhlIHJlbW90ZV9sc24gZm9yIHRoZSBzdWJzY3JpYmVyJ3MgcmVwbGlj YXRpb24gb3JpZ2luLlxuIik7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJ CQkJICJTRUxFQ1QgcGdfY2F0YWxvZy5iaW5hcnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2Uo Iik7Ci0JCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIHN1YmluZm8tPmRvYmoubmFtZSwg Zm91dCk7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgJyVzJyk7XG4iLCBzdWJpbmZv LT5zdWJvcmlnaW5yZW1vdGVsc24pOwotCQl9Ci0KLQkJaWYgKHN1YmluZm8tPnN1YmVuYWJsZWQp Ci0JCXsKLQkJCS8qCi0JCQkgKiBFbmFibGUgdGhlIHN1YnNjcmlwdGlvbiB0byBhbGxvdyB0aGUg cmVwbGljYXRpb24gdG8gY29udGludWUKLQkJCSAqIGFmdGVyIHRoZSB1cGdyYWRlLgotCQkJICov Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkJICJcbi0tIEZvciBiaW5h cnkgdXBncmFkZSwgbXVzdCBwcmVzZXJ2ZSB0aGUgc3Vic2NyaWJlcidzIHJ1bm5pbmcgc3RhdGUu XG4iKTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgU1VCU0NSSVBUSU9OICVz IEVOQUJMRTtcbiIsIHFzdWJuYW1lKTsKLQkJfQorCQkvKgorCQkgKiBFbmFibGUgdGhlIHN1YnNj cmlwdGlvbiB0byBhbGxvdyB0aGUgcmVwbGljYXRpb24gdG8gY29udGludWUKKwkJICogYWZ0ZXIg dGhlIHVwZ3JhZGUuCisJCSAqLworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJ CQkgIlxuLS0gRm9yIGJpbmFyeSB1cGdyYWRlLCBtdXN0IHByZXNlcnZlIHRoZSBzdWJzY3JpYmVy J3MgcnVubmluZyBzdGF0ZS5cbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVS IFNVQlNDUklQVElPTiAlcyBFTkFCTEU7XG4iLCBxc3VibmFtZSk7CiAJfQogCiAJaWYgKHN1Ymlu Zm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RFRklOSVRJT04pCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwu YwppbmRleCBjMWY0MzExM2M1My4uYjcyZGNiMThjOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wYWxsLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYwpAQCAt MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAor I2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlk X2QuaCIKICNpbmNsdWRlICJjb21tb24vY29ubmVjdC5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxl X3Blcm0uaCIKQEAgLTc2LDYgKzc3LDcgQEAgc3RhdGljIHZvaWQgZHJvcERCcyhQR2Nvbm4gKmNv bm4pOwogc3RhdGljIHZvaWQgZHVtcFVzZXJDb25maWcoUEdjb25uICpjb25uLCBjb25zdCBjaGFy ICp1c2VybmFtZSk7CiBzdGF0aWMgdm9pZCBkdW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubik7CiBz dGF0aWMgdm9pZCBkdW1wVGltZXN0YW1wKGNvbnN0IGNoYXIgKm1zZyk7CitzdGF0aWMgdm9pZCBk dW1wUmVwbGljYXRpb25PcmlnaW5zKFBHY29ubiAqY29ubik7CiBzdGF0aWMgaW50CXJ1blBnRHVt cChjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNyZWF0ZV9vcHRzLCBjaGFyICpkYmZp bGUpOwogc3RhdGljIHZvaWQgYnVpbGRTaFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJ IGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSwgT2lkIG9iamVjdElkLApAQCAtODEzLDYgKzgxNSwx MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkvKiBEdW1wIHJvbGUgR1VDIHBy aXZpbGVnZXMgKi8KIAkJCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgJiYgIXNraXBfYWNs cykKIAkJCQlkdW1wUm9sZUdVQ1ByaXZzKGNvbm4pOworCisJCQkvKiBEdW1wIHJlcGxpY2F0aW9u IG9yaWdpbnMgKi8KKwkJCWlmIChiaW5hcnlfdXBncmFkZSAmJiBhcmNoRHVtcEZvcm1hdCA9PSBh cmNoTnVsbCkKKwkJCQlkdW1wUmVwbGljYXRpb25PcmlnaW5zKGNvbm4pOwogCQl9CiAKIAkJLyog RHVtcCB0YWJsZXNwYWNlcyAqLwpAQCAtMjMzOSw2ICsyMzQ1LDY0IEBAIGR1bXBUaW1lc3RhbXAo Y29uc3QgY2hhciAqbXNnKQogCQlmcHJpbnRmKE9QRiwgIi0tICVzICVzXG5cbiIsIG1zZywgYnVm KTsKIH0KIAorc3RhdGljIHZvaWQKK2R1bXBSZXBsaWNhdGlvbk9yaWdpbnMoUEdjb25uICpjb25u KQoreworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUEdyZXN1bHQg ICAqcmVzOworCWludAkJCWlfcm9pZGVudDsKKwlpbnQJCQlpX3JvbmFtZTsKKwlpbnQJCQlpX3Jl bW90ZWxzbjsKKworCS8qIEdldCByZXBsaWNhdGlvbiBvcmlnaW5zIGZyb20gY2F0YWxvZ3MgKi8K KwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsCisJCQkJCQkgIlNFTEVDVCBvLiosIG9zLnJlbW90 ZV9sc24gIgorCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fb3JpZ2luIG8g IgorCQkJCQkJICJMRUZUIE9VVEVSIEpPSU4gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmln aW5fc3RhdHVzIG9zIE9OIG8ucm9pZGVudCA9IG9zLmxvY2FsX2lkICIpOworCisJcmVzID0gZXhl Y3V0ZVF1ZXJ5KGNvbm4sIGJ1Zi0+ZGF0YSk7CisKKwlpX3JvaWRlbnQgPSBQUWZudW1iZXIocmVz LCAicm9pZGVudCIpOworCWlfcm9uYW1lID0gUFFmbnVtYmVyKHJlcywgInJvbmFtZSIpOworCWlf cmVtb3RlbHNuID0gUFFmbnVtYmVyKHJlcywgInJlbW90ZV9sc24iKTsKKworCWlmIChQUW50dXBs ZXMocmVzKSA+IDApCisJCWZwcmludGYoT1BGLCAiLS1cbi0tIFJlcGxpY2F0aW9uIE9yaWdpbnMg XG4tLVxuXG4iKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgUFFudHVwbGVzKHJlcyk7IGkrKykK Kwl7CisJCVJlcGxPcmlnaW5JZCByb2lkZW50OworCQljb25zdCBjaGFyICpyb25hbWU7CisKKwkJ cm9pZGVudCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9yb2lkZW50KSk7CisJCXJvbmFt ZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbmFtZSk7CisKKwkJcmVzZXRQUUV4cEJ1ZmZlcihi dWYpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIlxuLS0gRm9yIGJpbmFyeSB1cGdy YWRlLCBtdXN0IHByZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiByb2lkZW50IGFuZCByZW1vdGVf bHNuXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLAorCQkJIlNFTEVDVCBwZ19jYXRhbG9n LmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4oIgorCQkJIicldSc6OnBn X2NhdGFsb2cub2lkLCAiLCByb2lkZW50KTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbENvbm4oYnVm LCByb25hbWUsIGNvbm4pOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsICI6OnBnX2NhdGFs b2cudGV4dCIpOworCisJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX3JlbW90ZWxzbikpCisJ CXsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIiwgIik7CisJCQlhcHBlbmRTdHJpbmdM aXRlcmFsQ29ubihidWYsIFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbW90ZWxzbiksIGNvbm4pOwor CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCAiOjpwZ19jYXRhbG9nLnBnX2xzbiIpOworCQl9 CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIiwgTlVMTCIpOworCisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIik7XG4iKTsKKwkJZnByaW50ZihPUEYsICIlcyIsIGJ1 Zi0+ZGF0YSk7CisJfQorCisJUFFjbGVhcihyZXMpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYp OworfQorCiAvKgogICogcmVhZF9kdW1wYWxsX2ZpbHRlcnMgLSByZXRyaWV2ZSBkYXRhYmFzZSBp ZGVudGlmaWVyIHBhdHRlcm5zIGZyb20gZmlsZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dXBncmFkZS9jaGVjay5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMKaW5kZXggZjVjOTNl NjExZDIuLjJlYTJiZTJmNDIyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2su YworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYwpAQCAtMzMsNyArMzMsNyBAQCBzdGF0 aWMgdm9pZCBjaGVja19mb3JfbmV3X3RhYmxlc3BhY2VfZGlyKHZvaWQpOwogc3RhdGljIHZvaWQg Y2hlY2tfZm9yX3VzZXJfZGVmaW5lZF9lbmNvZGluZ19jb252ZXJzaW9ucyhDbHVzdGVySW5mbyAq Y2x1c3Rlcik7CiBzdGF0aWMgdm9pZCBjaGVja19mb3JfdW5pY29kZV91cGRhdGUoQ2x1c3Rlcklu Zm8gKmNsdXN0ZXIpOwogc3RhdGljIHZvaWQgY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25f c2xvdHModm9pZCk7Ci1zdGF0aWMgdm9pZCBjaGVja19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25f Y29uZmlndXJhdGlvbih2b2lkKTsKK3N0YXRpYyB2b2lkIGNoZWNrX25ld19jbHVzdGVyX3JlcGxp Y2F0aW9uX29yaWdpbnModm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rlcl9mb3Jf dmFsaWRfc2xvdHModm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rlcl9zdWJzY3Jp cHRpb25fc3RhdGUodm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rlcl9nbG9iYWxf bmFtZXMoQ2x1c3RlckluZm8gKmNsdXN0ZXIpOwpAQCAtNzk3LDcgKzc5Nyw4IEBAIGNoZWNrX25l d19jbHVzdGVyKHZvaWQpCiAKIAljaGVja19uZXdfY2x1c3Rlcl9yZXBsaWNhdGlvbl9zbG90cygp OwogCi0JY2hlY2tfbmV3X2NsdXN0ZXJfc3Vic2NyaXB0aW9uX2NvbmZpZ3VyYXRpb24oKTsKKwlj aGVja19uZXdfY2x1c3Rlcl9yZXBsaWNhdGlvbl9vcmlnaW5zKCk7CisKIH0KIAogCkBAIC0yMzAz LDMxICsyMzA0LDQ1IEBAIGNoZWNrX25ld19jbHVzdGVyX3JlcGxpY2F0aW9uX3Nsb3RzKHZvaWQp CiB9CiAKIC8qCi0gKiBjaGVja19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25fY29uZmlndXJhdGlv bigpCisgKiBjaGVja19uZXdfY2x1c3Rlcl9yZXBsaWNhdGlvbl9vcmlnaW5zKCkKKyAqCisgKiBW ZXJpZnkgdGhhdCB0aGUgbmV3IGNsdXN0ZXIgaGFzIG5vIHJlcGxpY2F0aW9uIG9yaWdpbnMuIER1 cmluZyB1cGdyYWRlLAorICogcGdfdXBncmFkZSByZXN0b3JlcyByZXBsaWNhdGlvbiBvcmlnaW5z IGZyb20gdGhlIG9sZCBjbHVzdGVyIHdpdGggdGhlaXIKKyAqIG9yaWdpbmFsIE9JRHMuIElmIHRo ZSBuZXcgY2x1c3RlciBhbHJlYWR5IGNvbnRhaW5zIG9yaWdpbnMsIHRob3NlIE9JRHMKKyAqIG1h eSBjb2xsaWRlLCBjYXVzaW5nIHRoZSB1cGdyYWRlIHRvIGZhaWwgbWlkLXdheS4KICAqCi0gKiBW ZXJpZnkgdGhhdCB0aGUgbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zIGNvbmZpZ3VyYXRp b24gc3BlY2lmaWVkIGlzCi0gKiBlbm91Z2ggZm9yIGNyZWF0aW5nIHRoZSBzdWJzY3JpcHRpb25z LiBUaGlzIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSB0aGUKLSAqIHJlcGxpY2F0aW9uIG9yaWdpbiBm b3IgZWFjaCBzdWJzY3JpcHRpb24uCisgKiBBbHNvIHZlcmlmeSB0aGF0IHRoZSBtYXhfYWN0aXZl X3JlcGxpY2F0aW9uX29yaWdpbnMgY29uZmlndXJhdGlvbiBpcworICogZW5vdWdoIGZvciBjcmVh dGluZyBhbGwgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVj a19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25fY29uZmlndXJhdGlvbih2b2lkKQorY2hlY2tfbmV3 X2NsdXN0ZXJfcmVwbGljYXRpb25fb3JpZ2lucyh2b2lkKQogewotCVBHcmVzdWx0ICAgKnJlczsK IAlQR2Nvbm4JICAgKmNvbm47CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCW5vcmlnaW5zOwog CWludAkJCW1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2luczsKIAotCS8qIFN1YnNjcmlwdGlv bnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBjYW4gYmUgbWlncmF0ZWQgc2luY2UgUEcxNy4gKi8K LQlpZiAoR0VUX01BSk9SX1ZFUlNJT04ob2xkX2NsdXN0ZXIubWFqb3JfdmVyc2lvbikgPCAxNzAw KQorCS8qIFF1aWNrIHJldHVybiBpZiB0aGVyZSBhcmUgbm8gcmVwbGljYXRpb24gb3JpZ2lucyB0 byBtaWdyYXRlLiAqLworCWlmIChvbGRfY2x1c3Rlci5ucmVwbF9vcmlnaW5zID09IDApCiAJCXJl dHVybjsKIAotCS8qIFF1aWNrIHJldHVybiBpZiB0aGVyZSBhcmUgbm8gc3Vic2NyaXB0aW9ucyB0 byBiZSBtaWdyYXRlZC4gKi8KLQlpZiAob2xkX2NsdXN0ZXIubnN1YnMgPT0gMCkKLQkJcmV0dXJu OwotCi0JcHJlcF9zdGF0dXMoIkNoZWNraW5nIG5ldyBjbHVzdGVyIGNvbmZpZ3VyYXRpb24gZm9y IHN1YnNjcmlwdGlvbnMiKTsKKwlwcmVwX3N0YXR1cygiQ2hlY2tpbmcgcmVwbGljYXRpb24gb3Jp Z2lucyBpbiBuZXcgY2x1c3RlciIpOwogCiAJY29ubiA9IGNvbm5lY3RUb1NlcnZlcigmbmV3X2Ns dXN0ZXIsICJ0ZW1wbGF0ZTEiKTsKIAorCXJlcyA9IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJ CQkJCQkJIlNFTEVDVCBjb3VudCgqKSAiCisJCQkJCQkJIkZST00gcGdfY2F0YWxvZy5wZ19yZXBs aWNhdGlvbl9vcmlnaW4iKTsKKworCWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQorCQlwZ19mYXRh bCgiY291bGQgbm90IGNvdW50IHRoZSBudW1iZXIgb2YgcmVwbGljYXRpb24gb3JpZ2lucyIpOwor CisJbm9yaWdpbnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisJUFFjbGVhcihyZXMp OworCisJaWYgKG5vcmlnaW5zID4gMCkKKwkJcGdfZmF0YWwoImV4cGVjdGVkIDAgcmVwbGljYXRp b24gb3JpZ2lucyBidXQgZm91bmQgJWQiLCBub3JpZ2lucyk7CisKIAlyZXMgPSBleGVjdXRlUXVl cnlPckRpZShjb25uLCAiU0VMRUNUIHNldHRpbmcgRlJPTSBwZ19zZXR0aW5ncyAiCiAJCQkJCQkJ IldIRVJFIG5hbWUgPSAnbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zJzsiKTsKIApAQCAt MjMzNSwxMiArMjM1MCwxMyBAQCBjaGVja19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25fY29uZmln dXJhdGlvbih2b2lkKQogCQlwZ19mYXRhbCgiY291bGQgbm90IGRldGVybWluZSBwYXJhbWV0ZXIg c2V0dGluZ3Mgb24gbmV3IGNsdXN0ZXIiKTsKIAogCW1heF9hY3RpdmVfcmVwbGljYXRpb25fb3Jp Z2lucyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKLQlpZiAob2xkX2NsdXN0ZXIubnN1 YnMgPiBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMpCisJUFFjbGVhcihyZXMpOworCisJ aWYgKG9sZF9jbHVzdGVyLm5yZXBsX29yaWdpbnMgPiBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29y aWdpbnMpCiAJCXBnX2ZhdGFsKCJcIm1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2luc1wiICgl ZCkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiAiCi0JCQkJ ICJzdWJzY3JpcHRpb25zICglZCkgb24gdGhlIG9sZCBjbHVzdGVyIiwKLQkJCQkgbWF4X2FjdGl2 ZV9yZXBsaWNhdGlvbl9vcmlnaW5zLCBvbGRfY2x1c3Rlci5uc3Vicyk7CisJCQkJICJyZXBsaWNh dGlvbiBvcmlnaW5zICglZCkgb24gdGhlIG9sZCBjbHVzdGVyIiwKKwkJCQkgbWF4X2FjdGl2ZV9y ZXBsaWNhdGlvbl9vcmlnaW5zLCBvbGRfY2x1c3Rlci5ucmVwbF9vcmlnaW5zKTsKIAotCVBRY2xl YXIocmVzKTsKIAlQUWZpbmlzaChjb25uKTsKIAogCWNoZWNrX29rKCk7CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYwppbmRl eCAzN2ZmZjkzODkyZi4uMGVkODYyNWViNmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFk ZS9pbmZvLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYwpAQCAtODYyLDYgKzg2Miwx MyBAQCBnZXRfc3Vic2NyaXB0aW9uX2luZm8oQ2x1c3RlckluZm8gKmNsdXN0ZXIpCiAJY2x1c3Rl ci0+c3ViX3JldGFpbl9kZWFkX3R1cGxlcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIDAsIGlf cmV0YWluX2RlYWRfdHVwbGVzKSwgInQiKSA9PSAwKTsKIAogCVBRY2xlYXIocmVzKTsKKworCXJl cyA9IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJCQkJCQkJIlNFTEVDVCBjb3VudCgqKSBBUyBu cmVwbF9vcmlnaW5zICIKKwkJCQkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX29y aWdpbiIpOworCWNsdXN0ZXItPm5yZXBsX29yaWdpbnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCAw LCAwKSk7CisJUFFjbGVhcihyZXMpOworCiAJUFFmaW5pc2goY29ubik7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5oCmluZGV4IGNjZDFhYzBkMDEzLi43N2U3Y2ExYjRjZCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5oCkBAIC0zMTEsNiArMzExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlpbnQJCQlu dW1fdGFibGVzcGFjZXM7CiAJY29uc3QgY2hhciAqdGFibGVzcGFjZV9zdWZmaXg7CS8qIGRpcmVj dG9yeSBzcGVjaWZpY2F0aW9uICovCiAJaW50CQkJbnN1YnM7CQkJLyogbnVtYmVyIG9mIHN1YnNj cmlwdGlvbnMgKi8KKwlpbnQJCQlucmVwbF9vcmlnaW5zOwkvKiBudW1iZXIgb2YgcmVwbGljYXRp b24gb3JpZ2lucyAqLwogCWJvb2wJCXN1Yl9yZXRhaW5fZGVhZF90dXBsZXM7IC8qIHdoZXRoZXIg YSBzdWJzY3JpcHRpb24gZW5hYmxlcwogCQkJCQkJCQkJCSAqIHJldGFpbl9kZWFkX3R1cGxlcy4g Ki8KIH0gQ2x1c3RlckluZm87CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRf c3Vic2NyaXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5w bAppbmRleCA2NDY3NjdmMmE2NS4uZThiMTFkMzlkZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf dXBncmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3Qv MDA0X3N1YnNjcmlwdGlvbi5wbApAQCAtNDIsNyArNDIsNyBAQCBteSAkY29ubnN0ciA9ICRwdWJs aXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAKICMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIENoZWNrIHRoYXQgcGdf dXBncmFkZSBmYWlscyB3aGVuIG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyBjb25maWd1 cmVkCi0jIGluIHRoZSBuZXcgY2x1c3RlciBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBzdWJz Y3JpcHRpb25zIGluIHRoZSBvbGQKKyMgaW4gdGhlIG5ldyBjbHVzdGVyIGlzIGxlc3MgdGhhbiB0 aGUgbnVtYmVyIG9mIHJlcGxpY2F0aW9uIG9yaWdpbnMgaW4gdGhlIG9sZAogIyBjbHVzdGVyLgog IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICMgSXQgaXMgc3VmZmljaWVudCB0byB1c2UgZGlzYWJsZWQgc3Vic2NyaXB0aW9uIHRvIHRlc3Qg dXBncmFkZSBmYWlsdXJlLgpAQCAtNzQsNyArNzQsNyBAQCBjb21tYW5kX2NoZWNrc19hbGwoCiAJ XSwKIAkxLAogCVsKLQkJcXIvIm1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyIgXCgwXCkg bXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBzdWJzY3JpcHRp b25zIFwoMVwpIG9uIHRoZSBvbGQgY2x1c3Rlci8KKwkJcXIvIm1heF9hY3RpdmVfcmVwbGljYXRp b25fb3JpZ2lucyIgXCgwXCkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51 bWJlciBvZiByZXBsaWNhdGlvbiBvcmlnaW5zIFwoMVwpIG9uIHRoZSBvbGQgY2x1c3Rlci8KIAld LAogCVtxci8vXSwKIAkncnVuIG9mIHBnX3VwZ3JhZGUgd2hlcmUgdGhlIG5ldyBjbHVzdGVyIGhh cyBpbnN1ZmZpY2llbnQgbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zJwpAQCAtMzAxLDgg KzMwMSwzMCBAQCBpcygkcmVzdWx0LCBxcSh0KSwgIkNoZWNrIHRoYXQgdGhlIHRhYmxlIGlzIGlu IGluaXQgc3RhdGUiKTsKIAogIyBHZXQgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbidzIHJlbW90ZV9s c24gb2YgdGhlIG9sZCBzdWJzY3JpYmVyCiBteSAkcmVtb3RlX2xzbiA9ICRvbGRfc3ViLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIHJlbW90ZV9sc24gRlJPTSBwZ19yZXBsaWNhdGlv bl9vcmlnaW5fc3RhdHVzIG9zLCBwZ19zdWJzY3JpcHRpb24gcyBXSEVSRSBvcy5leHRlcm5hbF9p ZCA9ICdwZ18nIHx8IHMub2lkIEFORCBzLnN1Ym5hbWUgPSAncmVncmVzc19zdWI0JyIKKyAgICAi U0VMRUNUIG9zLnJlbW90ZV9sc24KKyAgICAgRlJPTSBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3Rh dHVzIG9zCisgICAgIEpPSU4gcGdfcmVwbGljYXRpb25fb3JpZ2luIG8gT04gby5yb2lkZW50ID0g b3MubG9jYWxfaWQKKyAgICAgSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBvLnJvbmFtZSA9ICdw Z18nIHx8IHMub2lkOjp0ZXh0CisgICAgIFdIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX3N1YjQn IgogKTsKKworIyBHZXQgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBPSURzIChyb2lkZW50KSBmb3Ig YWxsIHN1YnNjcmlwdGlvbnMsIGtleWVkIGJ5CisjIHN1YnNjcmlwdGlvbiBuYW1lICh3aGljaCBp cyBzdGFibGUgYWNyb3NzIHVwZ3JhZGUsIHVubGlrZSBzdWJvaWQpLiBUaGVzZQorIyBtdXN0IGJl IHByZXNlcnZlZCBhZnRlciB1cGdyYWRlLiBBIG1pc21hdGNoIHdvdWxkIGNhdXNlIHNwdXJpb3Vz CisjIHVwZGF0ZV9vcmlnaW5fZGlmZmVycyBjb25mbGljdHMuCitteSAlcHJlX3VwZ3JhZGVfcm9p ZGVudDsKK215ICRyb2lkZW50X3Jvd3MgPSAkb2xkX3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisgICAgIlNFTEVDVCBzLnN1Ym5hbWUsIG8ucm9pZGVudAorICAgICBGUk9NIHBnX3N1YnNjcmlw dGlvbiBzCisgICAgIEpPSU4gcGdfcmVwbGljYXRpb25fb3JpZ2luIG8gT04gby5yb25hbWUgPSAn cGdfJyB8fCBzLm9pZDo6dGV4dAorICAgICBPUkRFUiBCWSBzLnN1Ym5hbWUiCispOworZm9yIG15 ICRyb3cgKHNwbGl0IC9cbi8sICRyb2lkZW50X3Jvd3MpCit7CisgICAgbXkgKCRzdWJuYW1lLCAk cm9pZGVudCkgPSBzcGxpdCAvXHwvLCAkcm93OworICAgICRwcmVfdXBncmFkZV9yb2lkZW50eyRz dWJuYW1lfSA9ICRyb2lkZW50OworfQorCiAjIEhhdmUgdGhlIHN1YnNjcmlwdGlvbiBpbiBkaXNh YmxlZCBzdGF0ZSBiZWZvcmUgdXBncmFkZQogJG9sZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc3ViNSBESVNBQkxFIik7CiAKQEAgLTM3OCw2 ICs0MDAsMjAgQEAgcmVncmVzc19zdWI1fGZ8ZnxmKSwKIAkiY2hlY2sgdGhhdCB0aGUgc3Vic2Ny aXB0aW9uJ3MgcnVubmluZyBzdGF0dXMsIGZhaWxvdmVyLCBhbmQgcmV0YWluX2RlYWRfdHVwbGVz IGFyZSBwcmVzZXJ2ZWQiCiApOwogCisjIFZlcmlmeSB0aGF0IHJlcGxpY2F0aW9uIG9yaWdpbiBP SURzIGFyZSBwcmVzZXJ2ZWQgYWZ0ZXIgdXBncmFkZS4KK215ICRwb3N0X3JvaWRlbnRfcm93cyA9 ICRuZXdfc3ViLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiU0VMRUNUIHMuc3VibmFtZSwg by5yb2lkZW50CisgICAgIEZST00gcGdfc3Vic2NyaXB0aW9uIHMKKyAgICAgSk9JTiBwZ19yZXBs aWNhdGlvbl9vcmlnaW4gbyBPTiBvLnJvbmFtZSA9ICdwZ18nIHx8IHMub2lkOjp0ZXh0CisgICAg IE9SREVSIEJZIHMuc3VibmFtZSIKKyk7Citmb3IgbXkgJHJvdyAoc3BsaXQgL1xuLywgJHBvc3Rf cm9pZGVudF9yb3dzKQoreworICAgIG15ICgkc3VibmFtZSwgJHJvaWRlbnQpID0gc3BsaXQgL1x8 LywgJHJvdzsKKyAgICBpcygkcm9pZGVudCwgJHByZV91cGdyYWRlX3JvaWRlbnR7JHN1Ym5hbWV9 LAorICAgICAgICAicm9pZGVudCBwcmVzZXJ2ZWQgZm9yIHN1YnNjcmlwdGlvbiAnJHN1Ym5hbWUn IGFmdGVyIHVwZ3JhZGUiKTsKK30KKwogIyBTdWJzY3JpcHRpb24gcmVsYXRpb25zIHNob3VsZCBi ZSBwcmVzZXJ2ZWQKICRyZXN1bHQgPSAkbmV3X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IlNFTEVDVCBzcnJlbGlkLCBzcnN1YnN0YXRlIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBPUkRF UiBCWSBzcnJlbGlkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzYTI4NDA2OTgxZC4u MjE0NjZkOTI2ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTE5NjAsMTAgKzExOTYw LDYgQEAKICAgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5 cGUgPT4gJ3ZvaWQnLAogICBwcm9hcmd0eXBlcyA9PiAndGV4dCBvaWQgY2hhciBwZ19sc24nLAog ICBwcm9zcmMgPT4gJ2JpbmFyeV91cGdyYWRlX2FkZF9zdWJfcmVsX3N0YXRlJyB9LAoteyBvaWQg PT4gJzYzMjAnLCBkZXNjciA9PiAnZm9yIHVzZSBieSBwZ191cGdyYWRlIChyZW1vdGVfbHNuIGZv ciBvcmlnaW4pJywKLSAgcHJvbmFtZSA9PiAnYmluYXJ5X3VwZ3JhZGVfcmVwbG9yaWdpbl9hZHZh bmNlJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAotICBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFs bGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCi0gIHByb2FyZ3R5cGVzID0+ICd0ZXh0 IHBnX2xzbicsIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfcmVwbG9yaWdpbl9hZHZhbmNlJyB9 LAogeyBvaWQgPT4gJzY1MDUnLCBkZXNjciA9PiAnZm9yIHVzZSBieSBwZ191cGdyYWRlIChjb25m bGljdCBkZXRlY3Rpb24gc2xvdCknLAogICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9jcmVh dGVfY29uZmxpY3RfZGV0ZWN0aW9uX3Nsb3QnLAogICBwcm9pc3N0cmljdCA9PiAnZicsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLApAQCAtMTE5NzMsNiArMTE5NjksMTAg QEAKICAgcHJvbmFtZSA9PiAnYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9u X29pZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICd2b2lkJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAnYmluYXJ5 X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCcgfSwKK3sgb2lkID0+ICc5MTYx JywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFkZSAocmVwbGljYXRpb24gb3JpZ2luKScs CisgIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4n LCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwg PT4gJ3UnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKKyAgcHJvYXJndHlwZXMgPT4gJ29pZCB0ZXh0 IHBnX2xzbicsIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX3JlcGxpY2F0aW9uX29y aWdpbicgfSwKIAogIyBjb252ZXJzaW9uIGZ1bmN0aW9ucwogeyBvaWQgPT4gJzQzMTAnLCBkZXNj ciA9PiAnaW50ZXJuYWwgY29udmVyc2lvbiBmdW5jdGlvbiBmb3IgS09JOFIgdG8gV0lOMTI1MScs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IGE2OWZhZjZlYWFmLi42YjI1YTk2N2ZlOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAgLTU1LDYgKzU1LDggQEAgZXh0ZXJuIFBHRExM SU1QT1JUIGludCBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnM7CiAvKiBBUEkgZm9yIHF1 ZXJ5aW5nICYgbWFuaXB1bGF0aW5nIHJlcGxpY2F0aW9uIG9yaWdpbnMgKi8KIGV4dGVybiBSZXBs T3JpZ2luSWQgcmVwbG9yaWdpbl9ieV9uYW1lKGNvbnN0IGNoYXIgKnJvbmFtZSwgYm9vbCBtaXNz aW5nX29rKTsKIGV4dGVybiBSZXBsT3JpZ2luSWQgcmVwbG9yaWdpbl9jcmVhdGUoY29uc3QgY2hh ciAqcm9uYW1lKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fY3JlYXRlX3dpdGhfaWQoUmVwbE9y aWdpbklkIHJvaWRlbnQsIGNvbnN0IGNoYXIgKnJvbmFtZSwKKwkJCQkJCQkJCSAgWExvZ1JlY1B0 ciByZW1vdGVfbHNuKTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fZHJvcF9ieV9uYW1lKGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgbWlzc2luZ19vaywgYm9vbCBub3dhaXQpOwogZXh0ZXJuIGJvb2wg cmVwbG9yaWdpbl9ieV9vaWQoUmVwbE9yaWdpbklkIHJvaWRlbnQsIGJvb2wgbWlzc2luZ19vaywK IAkJCQkJCQkgIGNoYXIgKipyb25hbWUpOwotLSAKMi40Ny4zCgo= --000000000000b6113c06546f8e05--