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 1wel1d-004zn7-0z for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 02:50:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wel1c-00BNMo-0h for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 02:50:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wel1b-00BNMg-2e for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 02:50:07 +0000 Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wel1Z-000000017mn-0sgB for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 02:50:07 +0000 Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-3997a448ecbso1820801fa.0 for ; Tue, 30 Jun 2026 19:50:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782874204; cv=none; d=google.com; s=arc-20260327; b=pd9oOIqxn96LLEocjFZ88wlrT/XmMpbgGFjTFq3xAWf7b5BC7u7+/nUobhagrtwX3N gad5/0TnfGq5/SNdmMSIzAQFx+6vy388gnVaBRv4AoEoogq8RvIcemuTNQryaw5GvfAL RezgfQUun/Oh9U0vVOGrjiIG4NCmlkjencdD0dUDknqUHx2ShMHlPPq0OOpD7w2a+U5Q soZ0Ln/7s3t8jwJPSkyUaR52lhAmZDaUcHJB/KAKn/S4V0b4WXGTnIgwhLL2in+m40nE 5iRoi1XRCZ7YkaPZ1oJb38iun9x5cT4++YZkBJXa95jhpjycsMULz4p99nz9up+JCvOO XtIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=N51kkb7TefEjNe/MJ0wyFuQwDwEa98NH1AE7xTwUSQ4=; fh=jA1y0o48KsEr1ncbKeaqgkONBUmAh+4Dc8UAqTSPpFs=; b=DQ7V1whuSdW9LHnsQPbEUbsMzcor6EJTd9YPmLPKak5h4AcsDNkSY7jnWNdZNclq75 oCuODDaA34FfN+YH3mJ29uvuVJhBc771YU/CvV0TL1fSXRc46RLr0Nw+XbMlZtbWYeA4 CKGQIMTCjJDJpztzXsY0cb9eRwn80mO9ZSO+GV+t1/Ql8laGJ+aji7ByH3hEZ15He2KW 0vbO+Llb4e+MoNpWoh+fko9hiKc1rmkQUNzH6crX7jRkxTobDci3MhQn3irvjrOlUBOs DBr+KzAQoC6ii1VjoRFhHCjjVY9SrA1QnmB/O4a6vQreLlhtbPJ6rsBSs0kBkhPjyijB aK5g==; 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=1782874204; x=1783479004; 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=N51kkb7TefEjNe/MJ0wyFuQwDwEa98NH1AE7xTwUSQ4=; b=dPNz1lqFB8SpqY1ZbIeD+wPXF47ciW02/A8tK+8otm3E66Y25sbZKf3veZJ1xpPvrH /nPfqtXL4gZ2xrB8buBrWxM2TERKNrI00e+cVYvJrHzAsWrhlLCAlyBNjJcz5lCOQd6w CTszZk59iMxmmPDD98GGCUIeh9kWraNximl3H/kNcGfFni252eS4QQlDk7/DQB3Q33Me kKlVcJr6kQBd2vFq+pZmR4HaOkHukTov7GWrGl+ypnWGkbALc4Wc0WvAyFhtXiAbsDzf nkaXwZDJUcgilaDnuuS8mXTTO6MD+qhCXVS9QfpRxMZnqQyFcQ8xsrviDqsorAyPvqDI 1UQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782874204; x=1783479004; 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=N51kkb7TefEjNe/MJ0wyFuQwDwEa98NH1AE7xTwUSQ4=; b=hOiLGhmHHHZyi1zT1LwAQPubo8H6z3VApRBRA8/wdyGpDB1OrkhPf47UXz+J4/eQJd aE72EdSy1GO0zV6wvK4FKgSAIVIOjf870iTxp3PxAHo2/kZOkcbvqWLK3B/vNilVzZeX vTc8Ru0cTwXIGU64t3y+y1inTL01DC4EjUzfSwKwHUzfj+/x4W21+DrI2CNuuordtUB2 CiaCk/qokAcWfYobWEtazfF5/HdvA21SfIjFa7M0ixREVlF29/M+8A9wlrWhkN2dvtT5 xhnWKe2zwj3Eb/lxsr6mZphzVenbKzFmqMUou0NbnjYh6PAha1A0VrKYvMMR5tIV1W0E kC2g== X-Gm-Message-State: AOJu0Yyrq5lJtl5nvoKSVI5h1tmJz5Fewc4Gl/Z7JhUcZaErjyfUyKnQ 5OK1D0fc8YeduIH/QEX0EDSen9eLXwxvQtZdomAODFzNeiqQID9DcdBNsW5MMDjDBl159zQW1nN AE7zCiXCMf+efr0EbE3LvHVtmFOUJajs= X-Gm-Gg: AfdE7ckdlGG9a/JcuoZvX8Xw7Ev44Q2Kp4eI2pRejOQ4gkQwSE7cZk64YvSdMUCMTIx sbVtTWnu6swQfxVWnHg5TCYQAUhfgwpKfGZd6c6vVooS3PPJZjr1jRTgwxDzuoC1wQjmhZeA98X /vtAUHDpfU8WbHYWH4pmz5ZBLbVmawY1bOtWR5P8tiHdVUdEgtowGZRiWzNiS4L7+QLI0TnqCwD 1nI1F49wvbBLJYmbN9xnYMDxW8kJYumz3K7/55CcQyC5FdvBVSIV2QCBX8MEhmGeyzwZNNNpL1h QfkfGWbVRIbJQSregL3HWBeUBgEhNwtmyjQUe7Ism4yEKbbwx8+ZS3HUHkemQj7gGz9ehXA= X-Received: by 2002:a05:651c:4382:10b0:39b:2a66:4bf2 with SMTP id 38308e7fff4ca-39b2a664fd7mr5094671fa.37.1782874203127; Tue, 30 Jun 2026 19:50:03 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Wed, 1 Jul 2026 12:49:49 +1000 X-Gm-Features: AVVi8CeSD8PYNNbyTOn4Xf-05zEtwe4c18fdSfh5GSncTdXUJ6G-jmMJoJ-ZG1k Message-ID: Subject: Re: [PATCH] Preserve replication origin OIDs in pg_upgrade To: Zsolt Parragi Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000008ea2b1065583bfb2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008ea2b1065583bfb2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 24, 2026 at 2:07=E2=80=AFAM Rui Zhao wro= te: > > Hi Ajin, > > Thanks for v9, and for addressing both my earlier comments. I also went > through the rest of v9 -- the other reviewers' comments and the > corresponding fixes (including the replorigin_create() locking rework) lo= ok > good to me; I didn't find any issues there. > > A follow-up on the version gating, though: I think it now moved a bit too > far. get_replication_origin_info() is called unconditionally (outside the > >=3D 1700 block): > > /* Get replication origin information */ > get_replication_origin_info(&old_cluster); > > and it runs "SELECT count(*) FROM pg_catalog.pg_replication_origin". > pg_dumpall's dumpReplicationOrigins() queries the same catalog with no > version guard either. But pg_replication_origin only exists from 9.5 > (commit 5aa2350426), while pg_upgrade still accepts old clusters back to > 9.2: > > if (GET_MAJOR_VERSION(old_cluster.major_version) < 902) > pg_fatal("This utility can only upgrade from PostgreSQL version %= s > and later.", "9.2"); > > So upgrading from 9.2/9.3/9.4 now fails: the query hits a non-existent > catalog and pg_fatal()s (and dumpReplicationOrigins would too). > It should be gated on the version where origins were introduced, e.g. > > if (GET_MAJOR_VERSION(old_cluster.major_version) >=3D 905) > get_replication_origin_info(&old_cluster); > > with the matching server_version >=3D 90500 check on the pg_dumpall side. > That keeps the < 17 case I flagged working while not breaking 9.2-9.4 > (which have no origins to migrate anyway). > Thanks, I have added both the flags. > One nit while here: there is an extra blank line after the > check_new_cluster_replication_origins() call in check_new_cluster(). > Removed. On Wed, Jun 24, 2026 at 3:09=E2=80=AFPM shveta malik wrote: > > On Tue, Jun 23, 2026 at 5:20=E2=80=AFPM Ajin Cherian = wrote: > > > > All the above changes have been addressed in patch v9. > > > > Thanks for the patches. A few ocmments: > > 1) > > + * In binary-upgrade mode, skip origin creation here. This is required t= o > + * preserve the roident from the old cluster for this subscription. > > subscription --> subscription's origin > Changed. > 2) > replorigin_create_with_id(): > > + if (SearchSysCacheExists1(REPLORIGNAME, roname_d)) > + ereport(ERROR, > + errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin \"%s\" already exists", roname)); > > Can this ever happen? IIUC, since new-cluster should not have any > origin (as per the check introduced) and old cluster can not have > duplicate names, we should not hit this error. Do we want to keep it > as sanity check? If so, can we put a comment atop it. > I've removed it. > 3) > replorigin_create_with_id: > > + if (remote_lsn !=3D InvalidXLogRecPtr) > + replorigin_advance(roident, remote_lsn, InvalidXLogRecPtr, > + false /* backward */, > + false /* WAL log */); > > We do not want to call 'advance' from regular 'replorigin_create' > flow. It is only for binary-Upgrade flow. Do you think we should have > a sanity check here? > > if (remote_lsn !=3D InvalidXLogRecPtr) > { > Assert(IsBinaryUpgrade) > replorigin_advance(..) > } > Done. > 4) > replorigin_create: > > + found =3D true; > > + if (!found) > ereport(ERROR, > (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), > errmsg("could not find free replication origin ID"))); > > Do you think we can make use of 'collides' itself here instead of > adding a new 'found' variable. We can move 'collides' outside of loop > and use it to emit above error. > I've removed found and instead checked if the roident has reached the max l= imit > 5) > binary_upgrade_create_replication_origin: > > + node =3D (ReplOriginId) node_oid; > + > + if (SearchSysCacheExists1(REPLORIGIDENT, ObjectIdGetDatum(node))) > + ereport(ERROR, > + errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin with ID %u already exists", > + (Oid) node)); > > How can we hit this? Same comment as #2. > Removed > 6) > -check_new_cluster_subscription_configuration(void) > +check_new_cluster_replication_origins(void) > > - /* Quick return if there are no subscriptions to be migrated. */ > - if (old_cluster.nsubs =3D=3D 0) > - return; > > - if (old_cluster.nsubs > max_active_replication_origins) > > With these changes, do we even need to capture old-cluster's 'nsubs' > in get_subscription_info(). I do not see any other usage of nsubs. Let > me know if I am missing any case. I've removed nsubs On Wed, Jun 24, 2026 at 3:21=E2=80=AFPM shveta malik wrote: > > On Wed, Jun 24, 2026 at 10:39=E2=80=AFAM shveta malik wrote: > > > > > > 2) > > replorigin_create_with_id(): > > > > + if (SearchSysCacheExists1(REPLORIGNAME, roname_d)) > > + ereport(ERROR, > > + errcode(ERRCODE_DUPLICATE_OBJECT), > > + errmsg("replication origin \"%s\" already exists", roname)); > > > > Can this ever happen? IIUC, since new-cluster should not have any > > origin (as per the check introduced) and old cluster can not have > > duplicate names, we should not hit this error. Do we want to keep it > > as sanity check? If so, can we put a comment atop it. > > > > Analyzed a bit more, with this change in patch002, we see an error change= : > > Without patch: > postgres=3D# SELECT pg_replication_origin_create('abcd'); > pg_replication_origin_create > ------------------------------ > 1 > postgres=3D# SELECT pg_replication_origin_create('abcd'); > ERROR: duplicate key value violates unique constraint > "pg_replication_origin_roname_index" > DETAIL: Key (roname)=3D(abcd) already exists. > > ---- > > With patch: > postgres=3D# SELECT pg_replication_origin_create('abcd'); > pg_replication_origin_create > ------------------------------ > 1 > > postgres=3D# SELECT pg_replication_origin_create('abcd'); > ERROR: replication origin "abcd" already exists > > > So without the new check also, we can prevent duplicate name insertion > (even if that happens during upgrade, which I can not see how). The > new error and the check is not wrong, but slightly redundant. Or let > me know if I am missing something. > I've removed that check. On Wed, Jun 24, 2026 at 11:27=E2=80=AFPM Shlok Kyal wrote: > > Thanks for the updated patch. I have reviewed the patch and here are > some my comments: > > 1. Since we are quering only one column, do we need to use 'i_norigins'? > > +void > +get_replication_origin_info(ClusterInfo *cluster) > +{ > + PGconn *conn; > + PGresult *res; > + int i_norigins; > + > + conn =3D connectToServer(cluster, "template1"); > + res =3D executeQueryOrDie(conn, "SELECT count(*) AS norigins " > + "FROM pg_catalog.pg_replication_origin"); > + i_norigins =3D PQfnumber(res, "norigins"); > + > + cluster->nrepl_origins =3D atoi(PQgetvalue(res, 0, i_norigins)); > + PQclear(res); > + > + PQfinish(conn); > +} > I think we can directly use: > cluster->nrepl_origins =3D atoi(PQgetvalue(res, 0, 0)); > > Thoughts? Removed it. > > 2. In the above code should we also add a check like: > if (PQntuples(res) !=3D 1) > pg_fatal("could not count the number of replication origins"); > Added. > 3. The brackets are not required: > + if (!tablespaces_only && !roles_only && binary_upgrade) > + { > + /* Dump replication origins */ > + dumpReplicationOrigins(conn); > } > We can move the comment '/* Dump replication origins */' above if conditi= on. > It will make it consistent with the existing code. > I've moved the comment up but keeping the brackets as it has more than one line, that is the recommendation from Tom Lane. > 4. I ran the tests locally and found that the test_decoding test suit > is failing: > not ok 10 - replorigin 249 ms > > diff: > -- ensure duplicate creations fail > SELECT pg_replication_origin_create('regress_test_decoding: regression_s= lot'); > -ERROR: duplicate key value violates unique constraint > "pg_replication_origin_roname_index" > -DETAIL: Key (roname)=3D(regress_test_decoding: regression_slot) already= exists. > +ERROR: replication origin "regress_test_decoding: regression_slot" > already exists > -- ensure inactive origin cannot be set as session one if pid is specifi= ed > SELECT pg_replication_origin_session_setup('regress_test_decoding: > regression_slot', -1); > ERROR: cannot use PID -1 for inactive replication origin with ID 1 > > I think this is expected because this patch adds a new function > 'replorigin_create_with_id' > which adds a check for the already existing replication origin. > In HEAD we don't have such a check. So I think we should update the > expected output file. > Based on feedback from Shveta, I've removed that new error as changing existing behaviour isn't required. On Thu, Jun 25, 2026 at 2:45=E2=80=AFAM Zsolt Parragi wrote: > > Hello > > +# Verify that the subscription related replication origins are > preserved after upgrade. > +my $post_roident_rows =3D $new_sub->safe_psql('postgres', > + "SELECT s.subname, o.roident > + FROM pg_subscription s > + JOIN pg_replication_origin o ON o.roname =3D 'pg_' || s.oid::text > + ORDER BY s.subname" > +); > +for my $row (split /\n/, $post_roident_rows) > +{ > + my ($subname, $roident) =3D split /\|/, $row; > + is($roident, $pre_upgrade_roident{$subname}, > + "roident preserved for subscription '$subname' after upgrade"); > +} > + > > Won't this check miss (and silently pass) if an entry is missing > post-upgrade? It verifies that all entries that exists match the pre > upgrade entries, but it doesn't verify that the list is the same. Modified this to iterate over pre upgrade and post upgrade subscriptions making sure both are present. All the above changes are updated in patch v10. regards, Ajin Cherian Fujitsu Australia --0000000000008ea2b1065583bfb2 Content-Type: application/octet-stream; name="v10-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Disposition: attachment; filename="v10-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1h8mih0 RnJvbSBjYjliOWRhN2IxNDA3MzkyNGI2MzViZTAwMjVmZWY5MTU0MjAzZDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBNb24sIDI5IEp1biAyMDI2IDIxOjQ2OjI5ICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMS8y XSBQcmVzZXJ2ZSBzdWJzY3JpcHRpb24gT0lEcyBkdXJpbmcgcGdfdXBncmFkZQoKQ3VycmVudGx5 IHN1YnNjcmlwdGlvbiBPSURzIGNhbiBiZSBjaGFuZ2VkIHdoZW4gYSBjbHVzdGVyIGlzIHVwZ3Jh ZGVkCnVzaW5nIHBnX3VwZ3JhZGUuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGEgc3Vic2VxdWVudCBw YXRjaCB3aGljaCB3aWxsCnByZXNlcnZlIHRoZSByZXBsaWNhdGlvbiBvaWRzIGFmdGVyIHVwZ3Jh ZGUuCgpBdXRob3I6IFZpZ25lc2ggQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAyNSArKysrKysrKysrKysr KysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgICAgfCAx MCArKysrKysrKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg IHwgIDggKysrKysrCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jICAgICAgICAgICAg ICAgfCAgMyArKysKIHNyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwgICAg ICB8ICA3ICsrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9iaW5hcnlfdXBncmFkZS5oICAgICAg ICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAg IHwgIDQgKysrCiAuLi4vZXhwZWN0ZWQvc3BnaXN0X25hbWVfb3BzLm91dCAgICAgICAgICAgICAg fCAgNiArKystLQogOCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBlZTA2YTcy NmY0Mi4uNWZlNzQ0MDQxOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmMKQEAgLTgzLDYgKzgzLDEyIEBACiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcgaGFzICdiaXRzJyBz ZXQgKi8KICNkZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChiaXRzKSkgPT0gKGJp dHMpKQogCisvKgorICogVGhpcyB3aWxsIGJlIHNldCBieSB0aGUgcGdfdXBncmFkZV9zdXBwb3J0 IGZ1bmN0aW9uIC0tCisgKiBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25f b2lkKCkuCisgKi8KK09pZAkJCWJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9uX29p ZCA9IEludmFsaWRPaWQ7CisKIC8qCiAgKiBTdHJ1Y3R1cmUgdG8gaG9sZCBhIGJpdG1hcCByZXBy ZXNlbnRpbmcgdGhlIHVzZXItcHJvdmlkZWQgQ1JFQVRFL0FMVEVSCiAgKiBTVUJTQ1JJUFRJT04g Y29tbWFuZCBvcHRpb25zIGFuZCB0aGUgcGFyc2VkL2RlZmF1bHQgdmFsdWVzIG9mIGVhY2ggb2Yg dGhlbS4KQEAgLTgwMyw4ICs4MDksMjMgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAltZW1zZXQodmFsdWVzLCAw LCBzaXplb2YodmFsdWVzKSk7CiAJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7 CiAKLQlzdWJpZCA9IEdldE5ld09pZFdpdGhJbmRleChyZWwsIFN1YnNjcmlwdGlvbk9iamVjdElu ZGV4SWQsCi0JCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fb2lkKTsKKwkvKiBVc2UgYmlu YXJ5LXVwZ3JhZGUgb3ZlcnJpZGUgZm9yIHBnX3N1YnNjcmlwdGlvbi5vaWQ/ICovCisJaWYgKElz QmluYXJ5VXBncmFkZSkKKwl7CisJCWlmICghT2lkSXNWYWxpZChiaW5hcnlfdXBncmFkZV9uZXh0 X3BnX3N1YnNjcmlwdGlvbl9vaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coInBnX3N1YnNj cmlwdGlvbiBPSUQgdmFsdWUgbm90IHNldCB3aGVuIGluIGJpbmFyeSB1cGdyYWRlIG1vZGUiKSkp OworCisJCXN1YmlkID0gYmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkOwor CQliaW5hcnlfdXBncmFkZV9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQgPSBJbnZhbGlkT2lkOwor CX0KKwllbHNlCisJeworCQlzdWJpZCA9IEdldE5ld09pZFdpdGhJbmRleChyZWwsIFN1YnNjcmlw dGlvbk9iamVjdEluZGV4SWQsCisJCQkJCQkJCSAgIEFudW1fcGdfc3Vic2NyaXB0aW9uX29pZCk7 CisJfQorCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX29pZCAtIDFdID0gT2JqZWN0SWRH ZXREYXR1bShzdWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRiaWQgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0oTXlEYXRhYmFzZUlkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3Vic2tpcGxzbiAtIDFdID0gTFNOR2V0RGF0dW0oSW52YWxpZFhMb2dSZWNQdHIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCmluZGV4IGI1MDVh NmI0ZmVlLi41OWMzZTdmMDE0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X3VwZ3JhZGVfc3VwcG9ydC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRl X3N1cHBvcnQuYwpAQCAtMTgxLDYgKzE4MSwxNiBAQCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9w Z19hdXRoaWRfb2lkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KIAor RGF0dW0KK2JpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlPaWQJCQlzdWJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlDSEVD S19JU19CSU5BUllfVVBHUkFERTsKKwliaW5hcnlfdXBncmFkZV9uZXh0X3BnX3N1YnNjcmlwdGlv bl9vaWQgPSBzdWJpZDsKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCiBEYXR1bQogYmluYXJ5X3Vw Z3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbihQR19GVU5DVElPTl9BUkdTKQogewpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKaW5kZXggYzU2NDM3ZDYwNTcuLmVhMjJiMDYwNGMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTU1ODMs NiArNTU4MywxNCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNj cmlwdGlvbkluZm8gKnN1YmluZm8pCiAJYXBwZW5kUFFFeHBCdWZmZXIoZGVscSwgIkRST1AgU1VC U0NSSVBUSU9OICVzO1xuIiwKIAkJCQkJICBxc3VibmFtZSk7CiAKKwlpZiAoZG9wdC0+YmluYXJ5 X3VwZ3JhZGUpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIlxuLS0gRm9yIGJp bmFyeSB1cGdyYWRlLCBtdXN0IHByZXNlcnZlIHBnX3N1YnNjcmlwdGlvbi5vaWRcbiIpOworCQlh cHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLmJpbmFy eV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQoJyV1Jzo6cGdfY2F0YWxvZy5v aWQpO1xuXG4iLAorCQkJCQkJICBzdWJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CisJfQorCiAJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzICIsCiAJCQkJCSAg cXN1Ym5hbWUpOwogCWlmIChzdWJpbmZvLT5zdWJzZXJ2ZXJuYW1lKQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdy YWRlLmMKaW5kZXggMjEyN2QyOTdiZmUuLjRlODUzMDk2Njk4IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdy YWRlLmMKQEAgLTM1LDYgKzM1LDkgQEAKICAqCiAgKglXZSBjb250cm9sIGFsbCBhc3NpZ25tZW50 cyBvZiBwZ19kYXRhYmFzZS5vaWQgYmVjYXVzZSB3ZSB3YW50IHRoZSBkaXJlY3RvcnkKICAqCW5h bWVzIHRvIG1hdGNoIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3IGNsdXN0ZXIuCisgKgorICogIFdl IGNvbnRyb2wgYXNzaWdubWVudCBvZiBwZ19zdWJzY3JpcHRpb24ub2lkIGJlY2F1c2Ugd2Ugd2Fu dCB0aGUgb2lkIHRvCisgKiAgbWF0Y2ggYmV0d2VlbiB0aGUgb2xkIGFuZCBuZXcgY2x1c3Rlci4K ICAqLwogCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3JpcHRp b24ucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsCmluZGV4IDM2 ZjA1OWZhYTJlLi45Mjg2YzFkYzg1ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3Qv MDA0X3N1YnNjcmlwdGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2Ny aXB0aW9uLnBsCkBAIC0zMTMsNiArMzEzLDkgQEAgbXkgJHRhYl91cGdyYWRlZDFfb2lkID0gJG9s ZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogbXkgJHRhYl91cGdyYWRlZDJfb2lkID0gJG9s ZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3Mg V0hFUkUgcmVsbmFtZSA9ICd0YWJfdXBncmFkZWQyJyIpOwogCiskc3ViX29pZCA9ICRvbGRfc3Vi LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIG9pZCBGUk9NIHBnX3N1YnNjcmlwdGlv biBPUkRFUiBCWSBzdWJuYW1lIik7CisKICRvbGRfc3ViLT5zdG9wOwogCiAjIENoYW5nZSBjb25m aWd1cmF0aW9uIHNvIHRoYXQgaW5pdGlhbCB0YWJsZSBzeW5jIGRvZXMgbm90IGdldCBzdGFydGVk CkBAIC0zNTksNiArMzYyLDEwIEBAICRwdWJsaXNoZXItPnNhZmVfcHNxbCgKIAogJG5ld19zdWIt PnN0YXJ0OwogCisjIFRoZSBzdWJzY3JpcHRpb24gb2lkIHNob3VsZCBiZSBwcmVzZXJ2ZWQKKyRy ZXN1bHQgPSAkbmV3X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgb2lkIEZST00g cGdfc3Vic2NyaXB0aW9uIE9SREVSIEJZIHN1Ym5hbWUiKTsKK2lzKCRyZXN1bHQsIHFxKCRzdWJf b2lkKSwgInN1YnNjcmlwdGlvbiBvaWQgc2hvdWxkIGhhdmUgYmVlbiBwcmVzZXJ2ZWQiKTsKKwog IyBUaGUgc3Vic2NyaXB0aW9uJ3MgcnVubmluZyBzdGF0dXMsIGZhaWxvdmVyIG9wdGlvbiwgYW5k IHJldGFpbl9kZWFkX3R1cGxlcwogIyBvcHRpb24gc2hvdWxkIGJlIHByZXNlcnZlZCBpbiB0aGUg dXBncmFkZWQgaW5zdGFuY2UuIFNvIHJlZ3Jlc3Nfc3ViNCBzaG91bGQKICMgc3RpbGwgaGF2ZSBz dWJlbmFibGVkLCBzdWJmYWlsb3ZlciwgYW5kIHN1YnJldGFpbmRlYWR0dXBsZXMgc2V0IHRvIHRy dWUsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmgKaW5kZXggN2JmN2FlNDQzODUuLmIx NWIxOGU3ZGM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRl LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9iaW5hcnlfdXBncmFkZS5oCkBAIC0zMiw2ICsz Miw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBSZWxGaWxlTnVtYmVyIGJpbmFyeV91cGdyYWRlX25l eHRfdG9hc3RfcGdfY2xhc3NfcmVsZmlsZW51bWJlCiAKIGV4dGVybiBQR0RMTElNUE9SVCBPaWQg YmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19lbnVtX29pZDsKIGV4dGVybiBQR0RMTElNUE9SVCBPaWQg YmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19hdXRoaWRfb2lkOworZXh0ZXJuIFBHRExMSU1QT1JUIE9p ZCBiaW5hcnlfdXBncmFkZV9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQ7CiAKIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGJpbmFyeV91cGdyYWRlX3JlY29yZF9pbml0X3ByaXZzOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCA0MDJkODY5NzEwYi4uMjMxY2UyY2E5MWUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTE5NjgsNiArMTE5NjgsMTAgQEAKICAgcHJvaXNzdHJpY3QgPT4g J2YnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywKICAgcHJvcmV0dHlw ZSA9PiAndm9pZCcsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ2JpbmFyeV91cGdy YWRlX2NyZWF0ZV9jb25mbGljdF9kZXRlY3Rpb25fc2xvdCcgfSwKK3sgb2lkID0+ICc5MTYwJywg ZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFkZScsCisgIHByb25hbWUgPT4gJ2JpbmFyeV91 cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQnLCBwcm92b2xhdGlsZSA9PiAndics CisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAndm9pZCcsIHByb2FyZ3R5cGVz ID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ2JpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNj cmlwdGlvbl9vaWQnIH0sCiAKICMgY29udmVyc2lvbiBmdW5jdGlvbnMKIHsgb2lkID0+ICc0MzEw JywgZGVzY3IgPT4gJ2ludGVybmFsIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIEtPSThSIHRvIFdJ TjEyNTEnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFtZV9vcHMvZXhw ZWN0ZWQvc3BnaXN0X25hbWVfb3BzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25hbWVf b3BzL2V4cGVjdGVkL3NwZ2lzdF9uYW1lX29wcy5vdXQKaW5kZXggMWVlNjVlZGUyNDMuLjM5ZDQz MzY4YzQyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9leHBl Y3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25h bWVfb3BzL2V4cGVjdGVkL3NwZ2lzdF9uYW1lX29wcy5vdXQKQEAgLTU5LDExICs1OSwxMiBAQCBz ZWxlY3QgKiBmcm9tIHQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9tdWx0aXJhbmdlX3BnX3R5 cGVfb2lkICAgICAgIHwgIDEgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9tdWx0aXJhbmdlX3Bn X3R5cGVfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfYXV0aGlkX29pZCAgICAgICAg ICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfYXV0aGlkX29pZAogIGJp bmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2VudW1fb2lkICAgICAgICAgICAgICAgICAgfCAgICB8 IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2VudW1fb2lkCisgYmluYXJ5X3VwZ3JhZGVfc2V0 X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVf c2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3Bn X3RhYmxlc3BhY2Vfb2lkICAgICAgICAgICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0 X3BnX3RhYmxlc3BhY2Vfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfdHlwZV9vaWQg ICAgICAgICAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfdHlwZV9v aWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9wZ19jbGFzc19vaWQgICAgICAgICAg IHwgIDEgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9wZ19jbGFzc19vaWQKICBiaW5h cnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9yZWxmaWxlbm9kZSAgICAgICAgICAgIHwgICAgfCBi aW5hcnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9yZWxmaWxlbm9kZQotKDEzIHJvd3MpCisoMTQg cm93cykKIAogLS0gVmVyaWZ5IGNsZWFuIGZhaWx1cmUgd2hlbiBJTkNMVURFJ2QgY29sdW1ucyBy ZXN1bHQgaW4gb3Zlcmxlbmd0aCB0dXBsZQogLS0gVGhlIGVycm9yIG1lc3NhZ2UgZGV0YWlscyBh cmUgcGxhdGZvcm0tZGVwZW5kZW50LCBzbyBzaG93IG9ubHkgU1FMU1RBVEUKQEAgLTEwOCwxMSAr MTA5LDEyIEBAIHNlbGVjdCAqIGZyb20gdAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRp cmFuZ2VfcGdfdHlwZV9vaWQgICAgICAgfCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211 bHRpcmFuZ2VfcGdfdHlwZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRf b2lkICAgICAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRo aWRfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQgICAgICAgICAgICAg ICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQKKyBiaW5hcnlf dXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkICAgICAgICAgIHwgICAgfCBiaW5h cnlfdXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkCiAgYmluYXJ5X3VwZ3JhZGVf c2V0X25leHRfcGdfdGFibGVzcGFjZV9vaWQgICAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3Jh ZGVfc2V0X25leHRfcGdfdGFibGVzcGFjZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9w Z190eXBlX29pZCAgICAgICAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4 dF9wZ190eXBlX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29p ZCAgICAgICAgICAgfCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNz X29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlICAgICAgICAg ICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlCi0oMTMg cm93cykKKygxNCByb3dzKQogCiBcc2V0IFZFUkJPU0lUWSBzcWxzdGF0ZQogaW5zZXJ0IGludG8g dCB2YWx1ZXMocmVwZWF0KCd4eXp6eScsIDEyKSwgNDIsIHJlcGVhdCgneHl6enknLCA0MDAwKSk7 Ci0tIAoyLjQ3LjMKCg== --0000000000008ea2b1065583bfb2 Content-Type: application/octet-stream; name="v10-0002-Preserve-replication-origin-OIDs-during-pg_upgra.patch" Content-Disposition: attachment; filename="v10-0002-Preserve-replication-origin-OIDs-during-pg_upgra.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1h8mkm1 RnJvbSBiODlmOGY5NWE5NzAyMjNhM2ZlMTY3Mjk0NmIzMTA2MGMzNTUxMzU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBXZWQsIDEgSnVsIDIwMjYgMTI6Mzk6MTYgKzEwMDAKU3ViamVjdDogW1BBVENIIHYxMCAyLzJd IFByZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpXaGVu IHBnX3VwZ3JhZGUgbWlncmF0ZXMgYSBzdWJzY3JpYmVyLCByZXBsaWNhdGlvbiBvcmlnaW4gT0lE cwoocm9pZGVudCkgY2FuIGNoYW5nZSBhY3Jvc3MgdGhlIHVwZ3JhZGUuIFRoaXMgaXMgYSBwcm9i bGVtIGJlY2F1c2UKY29tbWl0LXRpbWVzdGFtcCByZWNvcmRzIGVtYmVkIHJvaWRlbnQgYW5kIGFy ZSBjb3BpZWQgZGlyZWN0bHkgZnJvbQp0aGUgb2xkIGNsdXN0ZXIncyBwZ19jb21taXRfdHMgZGly ZWN0b3J5LCBjYXVzaW5nIHNwdXJpb3VzCiJ1cGRhdGVfb3JpZ2luX2RpZmZlcnMiIGNvbmZsaWN0 cyBhZnRlciB0aGUgdXBncmFkZS4KCkZpeCB0aGlzIGJ5IGR1bXBpbmcgcmVwbGljYXRpb24gb3Jp Z2lucyBhcyBnbG9iYWwgb2JqZWN0cyB2aWEKcGdfZHVtcGFsbCBkdXJpbmcgYmluYXJ5IHVwZ3Jh ZGUsIHVzaW5nIGEgbmV3IGZ1bmN0aW9uCmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlv bl9vcmlnaW4ob2lkLCBuYW1lLCBsc24pIHRvIHJlY3JlYXRlCmVhY2ggb3JpZ2luIHdpdGggaXRz IHByZXNlcnZlZCByb2lkZW50IGFuZCByZW1vdGVfbHNuLiBUbyBhdm9pZApjb25mbGljdHMgd2l0 aCB0aGlzLCBDcmVhdGVTdWJzY3JpcHRpb24oKSBza2lwcyByZXBsb3JpZ2luX2NyZWF0ZSgpCmlu IGJpbmFyeS11cGdyYWRlIG1vZGUgc2luY2UgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IGNyZWF0ZWQg YnkgdGhlCnRpbWUgdGhlIHN1YnNjcmlwdGlvbiBpcyByZXN0b3JlZC4KCkF1dGhvcjogQWppbiBD aGVyaWFuIDxpdHNhamluQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IEhheWF0byBLdXJvZGEgKEZ1aml0 c3UpIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgpSZXZpZXdlcjogWnNvbHQgUGFycmFnaSA8 enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZXI6IFNobG9rIEt5YWwgPHNobG9rLmt5 YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IFNodmV0YSBtYWxpayA8c2h2ZXRhLm1hbGlrQGdt YWlsLmNvbT4KUmV2aWV3ZXI6IFZpZ25lc2ggQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4KUmV2aWV3 ZXI6IE5pc2hhIE1vb25kIDxuaXNoYS5tb29uZDQxMkBnbWFpbC5jb20+ClJldmlld2VyOiBSdWkg WmhhbyA8emhhb3J1aTEyNkBnbWFpbC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMgICAgfCAgMTEgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L29yaWdpbi5jICAgfCAgOTYgKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyB8IDEwMSArKysrKysrKysrKy0tLS0tLS0tLS0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICB8ICA1MSArKy0tLS0tLS0t LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgICAgICAgICAgICAgICB8ICA2OCArKysrKysrKysr KysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMgICAgICAgICAgICAgICAgIHwgIDU3ICsr KysrKysrLS0tLQogc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYyAgICAgICAgICAgICAgICAgIHwg IDM1ICsrKysrLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICAgICAgICAgICB8 ICAgMyArLQogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5wbCAgIHwgIDY5 ICsrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAg ICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICB8 ICAgMyArCiAxMyBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5zZXJ0aW9ucygrKSwgMTYyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDViZWZlZmQ5YzVh Li4xZWI2NDI1OWZmMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0y ODE5LDcgKzI4MTksNyBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVw bGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAgICA8bm90ZT4KICAg ICA8cGFyYT4KLSAgICAgQ29tbWl0IHRpbWVzdGFtcHMgYW5kIG9yaWdpbiBkYXRhIGFyZSBub3Qg cHJlc2VydmVkIGR1cmluZyB0aGUgdXBncmFkZS4KKyAgICAgQ29tbWl0IHRpbWVzdGFtcHMgYXJl IG5vdCBwcmVzZXJ2ZWQgZHVyaW5nIHRoZSB1cGdyYWRlLgogICAgICBBcyBhIHJlc3VsdCwgZXZl biBpZgogICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13 aXRoLXJldGFpbi1kZWFkLXR1cGxlcyI+PGxpdGVyYWw+cmV0YWluX2RlYWRfdHVwbGVzPC9saXRl cmFsPjwvbGluaz4KICAgICAgaXMgZW5hYmxlZCwgdGhlIHVwZ3JhZGVkIHN1YnNjcmliZXIgbWF5 IGJlIHVuYWJsZSB0byBkZXRlY3QgY29uZmxpY3RzIG9yCkBAIC0yODYxLDcgKzI4NjEsNyBAQCBD T05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJw Z18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgICAgVGhlIG5ldyBjbHVzdGVyIG11c3QgaGF2ZQog ICAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1hY3RpdmUtcmVwbGljYXRpb24tb3JpZ2lucyI+ PHZhcm5hbWU+bWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zPC92YXJuYW1lPjwvbGluaz4K ICAgICAgIGNvbmZpZ3VyZWQgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhl IG51bWJlciBvZgotICAgICAgc3Vic2NyaXB0aW9ucyBwcmVzZW50IGluIHRoZSBvbGQgY2x1c3Rl ci4KKyAgICAgIHJlcGxpY2F0aW9uIG9yaWdpbnMgcHJlc2VudCBpbiB0aGUgb2xkIGNsdXN0ZXIu IFRoZSBuZXcgY2x1c3RlciBtdXN0IGNvbnRhaW4gbm8gcmVwbGljYXRpb24gb3JpZ2lucy4KICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDVmZTc0NDA0MThjLi5hMTBjZGE0ZTBlNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMTksNiArMTksNyBA QAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5o IgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9iaW5hcnlfdXBn cmFkZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cv ZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKQEAgLTg5OCw5ICs4 OTksMTUgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkgKiBhcHBseSB3b3JrZXJzIGluaXRpYWxpemF0aW9uLCBh bmQgdG8gaGFuZGxlIG9yaWdpbiBjcmVhdGlvbiBkeW5hbWljYWxseQogCSAqIHdoZW4gdGFibGVz IGFyZSBhZGRlZCB0byB0aGUgc3Vic2NyaXB0aW9uLiBJdCBpcyBub3QgY2xlYXIgd2hldGhlcgog CSAqIHByZXZlbnRpbmcgY3JlYXRpb24gb2Ygb3JpZ2lucyBpcyB3b3J0aCBhZGRpdGlvbmFsIGNv bXBsZXhpdHkuCisJICoKKwkgKiBJbiBiaW5hcnktdXBncmFkZSBtb2RlLCBza2lwIG9yaWdpbiBj cmVhdGlvbiBoZXJlLiBUaGlzIGlzIHJlcXVpcmVkIHRvCisJICogcHJlc2VydmUgdGhlIHJvaWRl bnQgZnJvbSB0aGUgb2xkIGNsdXN0ZXIgZm9yIHRoaXMgc3Vic2NyaXB0aW9uJ3Mgb3JpZ2luLgog CSAqLwotCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoc3ViaWQsIEludmFsaWRP aWQsIG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7Ci0JcmVwbG9yaWdpbl9jcmVhdGUo b3JpZ2lubmFtZSk7CisJaWYgKCFJc0JpbmFyeVVwZ3JhZGUpCisJeworCQlSZXBsaWNhdGlvbk9y aWdpbk5hbWVGb3JMb2dpY2FsUmVwKHN1YmlkLCBJbnZhbGlkT2lkLCBvcmlnaW5uYW1lLCBzaXpl b2Yob3JpZ2lubmFtZSkpOworCQlyZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKKwl9CiAK IAkvKgogCSAqIENvbm5lY3QgdG8gcmVtb3RlIHNpZGUgdG8gZXhlY3V0ZSByZXF1ZXN0ZWQgY29t bWFuZHMgYW5kIGZldGNoIHRhYmxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmln aW4uYwppbmRleCBjOWRmYjA5NGMyYi4uYTk4NjhhMjliMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtMjY1LDYgKzI2NSw1MiBAQCByZXBsb3JpZ2luX2J5 X25hbWUoY29uc3QgY2hhciAqcm9uYW1lLCBib29sIG1pc3Npbmdfb2spCiAJcmV0dXJuIHJvaWRl bnQ7CiB9CiAKKy8qCisgKiByZXBsb3JpZ2luX2NyZWF0ZV93aXRoX2lkCisgKgorICogQ3JlYXRl IGEgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggYSBzcGVjaWZpYyBJRCBhbmQgbmFtZSwgb3B0aW9u YWxseQorICogcmVzdG9yaW5nIGl0cyByZW1vdGVfbHNuLiAgVXNlZCBieSBwZ191cGdyYWRlIHRv IHByZXNlcnZlIHJlcGxpY2F0aW9uCisgKiBvcmlnaW4gSURzIGFjcm9zcyB0aGUgdXBncmFkZS4K KyAqCisgKiBDYWxsZXIgbXVzdCBob2xkIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIFJlcGxpY2F0aW9u T3JpZ2luUmVsYXRpb25JZC4KKyAqCisgKiBOZWVkcyB0byBiZSBjYWxsZWQgaW4gYSB0cmFuc2Fj dGlvbi4KKyAqLwordm9pZAorcmVwbG9yaWdpbl9jcmVhdGVfd2l0aF9pZChSZXBsT3JpZ2luSWQg cm9pZGVudCwgY29uc3QgY2hhciAqcm9uYW1lLAorCQkJCQkJICBYTG9nUmVjUHRyIHJlbW90ZV9s c24sIFJlbGF0aW9uIHJlbCkKK3sKKwlEYXR1bQkJCXJvbmFtZV9kOworCWJvb2wJCQludWxsc1tO YXR0c19wZ19yZXBsaWNhdGlvbl9vcmlnaW5dOworCURhdHVtCQkJdmFsdWVzW05hdHRzX3BnX3Jl cGxpY2F0aW9uX29yaWdpbl07CisJSGVhcFR1cGxlCQl0dXBsZTsKKworCUFzc2VydChJc1RyYW5z YWN0aW9uU3RhdGUoKSk7CisJQXNzZXJ0KENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHJlbCwgRXhj bHVzaXZlTG9jaywgZmFsc2UpKTsKKworCXJvbmFtZV9kID0gQ1N0cmluZ0dldFRleHREYXR1bShy b25hbWUpOworCisJbWVtc2V0KCZudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KCZ2 YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKworCXZhbHVlc1tBbnVtX3BnX3JlcGxpY2F0aW9u X29yaWdpbl9yb2lkZW50IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHJvaWRlbnQpOworCXZhbHVl c1tBbnVtX3BnX3JlcGxpY2F0aW9uX29yaWdpbl9yb25hbWUgLSAxXSA9IHJvbmFtZV9kOworCisJ dHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51 bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocmVsLCB0dXBsZSk7CisJaGVhcF9mcmVldHVwbGUo dHVwbGUpOworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwlpZiAocmVtb3RlX2xzbiAh PSBJbnZhbGlkWExvZ1JlY1B0cikKKwl7CisJCUFzc2VydChJc0JpbmFyeVVwZ3JhZGUpOworCQly ZXBsb3JpZ2luX2FkdmFuY2Uocm9pZGVudCwgcmVtb3RlX2xzbiwgSW52YWxpZFhMb2dSZWNQdHIs CisJCQkJCQkgICBmYWxzZSAvKiBiYWNrd2FyZCAqLywKKwkJCQkJCSAgIGZhbHNlIC8qIFdBTCBs b2cgKi8pOworCX0KKworfQorCiAvKgogICogQ3JlYXRlIGEgcmVwbGljYXRpb24gb3JpZ2luLgog ICoKQEAgLTI3MywxMyArMzE5LDExIEBAIHJlcGxvcmlnaW5fYnlfbmFtZShjb25zdCBjaGFyICpy b25hbWUsIGJvb2wgbWlzc2luZ19vaykKIFJlcGxPcmlnaW5JZAogcmVwbG9yaWdpbl9jcmVhdGUo Y29uc3QgY2hhciAqcm9uYW1lKQogewotCU9pZAkJCXJvaWRlbnQ7Ci0JSGVhcFR1cGxlCXR1cGxl ID0gTlVMTDsKLQlSZWxhdGlvbglyZWw7Ci0JRGF0dW0JCXJvbmFtZV9kOwotCVNuYXBzaG90RGF0 YSBTbmFwc2hvdERpcnR5OwotCVN5c1NjYW5EZXNjIHNjYW47Ci0JU2NhbktleURhdGEga2V5Owor CU9pZAkJCQlyb2lkZW50OworCVJlbGF0aW9uCQlyZWw7CisJU25hcHNob3REYXRhCVNuYXBzaG90 RGlydHk7CisJU3lzU2NhbkRlc2MJCXNjYW47CisJU2NhbktleURhdGEJCWtleTsKIAogCS8qCiAJ ICogVG8gYXZvaWQgbmVlZGluZyBhIFRPQVNUIHRhYmxlIGZvciBwZ19yZXBsaWNhdGlvbl9vcmln aW4sIHdlIGxpbWl0CkBAIC0yOTMsOCArMzM3LDYgQEAgcmVwbG9yaWdpbl9jcmVhdGUoY29uc3Qg Y2hhciAqcm9uYW1lKQogCQkJCSBlcnJkZXRhaWwoIlJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lcyBt dXN0IGJlIG5vIGxvbmdlciB0aGFuICVkIGJ5dGVzLiIsCiAJCQkJCQkgICBNQVhfUk9OQU1FX0xF TikpKTsKIAotCXJvbmFtZV9kID0gQ1N0cmluZ0dldFRleHREYXR1bShyb25hbWUpOwotCiAJQXNz ZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAogCS8qCkBAIC0zMjEsMTcgKzM2MywxNSBAQCBy ZXBsb3JpZ2luX2NyZWF0ZShjb25zdCBjaGFyICpyb25hbWUpCiAJICogc25hcHNob3QuICBUbyBt YWtlIHRoYXQgc2FmZSwgaXQgbmVlZHMgdG8gbm90IGhhdmUgYSBUT0FTVCB0YWJsZSwgc2luY2UK IAkgKiBUT0FTVGVkIGRhdGEgY2Fubm90IGJlIGZldGNoZWQgd2l0aG91dCBhIHNuYXBzaG90LiAg QXMgb2YgdGhpcyB3cml0aW5nLAogCSAqIGl0cyBvbmx5IHZhcmxlbmEgY29sdW1uIGlzIHJvbmFt ZSwgd2hpY2ggd2UgbGltaXQgdG8gNTEyIGJ5dGVzIHRvIGF2b2lkCi0JICogbmVlZGluZyBvdXQt b2YtbGluZSBzdG9yYWdlLiAgSWYgeW91IGFkZCBhIFRPQVNUIHRhYmxlIHRvIHRoaXMgY2F0YWxv ZywKLQkgKiBiZSBzdXJlIHRvIHNldCB1cCBhIHNuYXBzaG90IGV2ZXJ5d2hlcmUgaXQgbWlnaHQg YmUgbmVlZGVkLiAgRm9yIG1vcmUKKwkgKiBuZWVkaW5nIG91dC1vZi1saW5lIHN0b3JhZ2UuIElm IHlvdSBhZGQgYSBUT0FTVCB0YWJsZSB0byB0aGlzIGNhdGFsb2csCisJICogYmUgc3VyZSB0byBz ZXQgdXAgYSBzbmFwc2hvdCBldmVyeXdoZXJlIGl0IG1pZ2h0IGJlIG5lZWRlZC4gRm9yIG1vcmUK IAkgKiBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcG9zdGdyLmVzL20vWnZNU1VQT3FVVS1WTkFE TiU0MG5hdGhhbi4KIAkgKi8KIAlBc3NlcnQoIU9pZElzVmFsaWQocmVsLT5yZF9yZWwtPnJlbHRv YXN0cmVsaWQpKTsKIAogCWZvciAocm9pZGVudCA9IEludmFsaWRPaWQgKyAxOyByb2lkZW50IDwg UEdfVUlOVDE2X01BWDsgcm9pZGVudCsrKQogCXsKLQkJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcmVw bGljYXRpb25fb3JpZ2luXTsKLQkJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19yZXBsaWNhdGlvbl9v cmlnaW5dOwotCQlib29sCQljb2xsaWRlczsKKwkJYm9vbAljb2xsaWRlczsKIAogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCkBAIC0zNDEsNDEgKzM4MSwyNSBAQCByZXBsb3JpZ2luX2NyZWF0 ZShjb25zdCBjaGFyICpyb25hbWUpCiAJCQkJCU9iamVjdElkR2V0RGF0dW0ocm9pZGVudCkpOwog CiAJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBSZXBsaWNhdGlvbk9yaWdpbklkZW50 SW5kZXgsCi0JCQkJCQkJCSAgdHJ1ZSAvKiBpbmRleE9LICovICwKKwkJCQkJCQkJICB0cnVlIC8q IGluZGV4T0sgKi8sCiAJCQkJCQkJCSAgJlNuYXBzaG90RGlydHksCiAJCQkJCQkJCSAgMSwgJmtl eSk7Ci0KIAkJY29sbGlkZXMgPSBIZWFwVHVwbGVJc1ZhbGlkKHN5c3RhYmxlX2dldG5leHQoc2Nh bikpOwotCiAJCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CiAKIAkJaWYgKCFjb2xsaWRlcykKLQkJ ewotCQkJLyoKLQkJCSAqIE9rLCBmb3VuZCBhbiB1bnVzZWQgcm9pZGVudCwgaW5zZXJ0IHRoZSBu ZXcgcm93IGFuZCBkbyBhIENDSSwKLQkJCSAqIHNvIG91ciBjYWxsZXJzIGNhbiBsb29rIGl0IHVw IGlmIHRoZXkgd2FudCB0by4KLQkJCSAqLwotCQkJbWVtc2V0KCZudWxscywgMCwgc2l6ZW9mKG51 bGxzKSk7Ci0KLQkJCXZhbHVlc1tBbnVtX3BnX3JlcGxpY2F0aW9uX29yaWdpbl9yb2lkZW50IC0g MV0gPSBPYmplY3RJZEdldERhdHVtKHJvaWRlbnQpOwotCQkJdmFsdWVzW0FudW1fcGdfcmVwbGlj YXRpb25fb3JpZ2luX3JvbmFtZSAtIDFdID0gcm9uYW1lX2Q7Ci0KLQkJCXR1cGxlID0gaGVhcF9m b3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7Ci0JCQlDYXRh bG9nVHVwbGVJbnNlcnQocmVsLCB0dXBsZSk7Ci0JCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OwogCQkJYnJlYWs7Ci0JCX0KIAl9CiAKLQkvKiBub3cgcmVsZWFzZSBsb2NrIGFnYWluLAkqLwot CXRhYmxlX2Nsb3NlKHJlbCwgRXhjbHVzaXZlTG9jayk7Ci0KLQlpZiAodHVwbGUgPT0gTlVMTCkK KwlpZiAocm9pZGVudCA+PSBQR19VSU5UMTZfTUFYKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygiY291 bGQgbm90IGZpbmQgZnJlZSByZXBsaWNhdGlvbiBvcmlnaW4gSUQiKSkpOwogCi0JaGVhcF9mcmVl dHVwbGUodHVwbGUpOworCXJlcGxvcmlnaW5fY3JlYXRlX3dpdGhfaWQocm9pZGVudCwgcm9uYW1l LCBJbnZhbGlkWExvZ1JlY1B0ciwgcmVsKTsKKworCXRhYmxlX2Nsb3NlKHJlbCwgRXhjbHVzaXZl TG9jayk7CisKIAlyZXR1cm4gcm9pZGVudDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X3VwZ3JhZGVfc3VwcG9ydC5jCmluZGV4IDU5YzNlN2YwMTQ2Li42MjhiMDc3YWI2OSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMjgsNiArMjgsNyBA QAogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogCiAKQEAgLTM3Nyw3MSArMzc4LDc5IEBAIGJp bmFyeV91cGdyYWRlX2FkZF9zdWJfcmVsX3N0YXRlKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIC8q Ci0gKiBiaW5hcnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2UKKyAqIGJpbmFyeV91cGdyYWRl X2NyZWF0ZV9jb25mbGljdF9kZXRlY3Rpb25fc2xvdAogICoKLSAqIFVwZGF0ZSB0aGUgcmVtb3Rl X2xzbiBmb3IgdGhlIHN1YnNjcmliZXIncyByZXBsaWNhdGlvbiBvcmlnaW4uCisgKiBDcmVhdGUg YSByZXBsaWNhdGlvbiBzbG90IHRvIHJldGFpbiBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIGNv bmZsaWN0CisgKiBkZXRlY3Rpb24gc3VjaCBhcyBkZWFkIHR1cGxlcywgY29tbWl0IHRpbWVzdGFt cHMsIGFuZCBvcmlnaW5zLgogICovCiBEYXR1bQotYmluYXJ5X3VwZ3JhZGVfcmVwbG9yaWdpbl9h ZHZhbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCitiaW5hcnlfdXBncmFkZV9jcmVhdGVfY29uZmxpY3Rf ZGV0ZWN0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlSZWxhdGlvbglyZWw7Ci0JT2lk CQkJc3ViaWQ7Ci0JY2hhcgkgICAqc3VibmFtZTsKLQljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRB TEVOXTsKLQlSZXBsT3JpZ2luSWQgbm9kZTsKLQlYTG9nUmVjUHRyCXJlbW90ZV9jb21taXQ7Ci0K IAlDSEVDS19JU19CSU5BUllfVVBHUkFERTsKIAotCS8qCi0JICogV2UgbXVzdCBlbnN1cmUgYSBu b24tTlVMTCBzdWJzY3JpcHRpb24gbmFtZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGUKLQkgKiBh cmd1bWVudHMuCi0JICovCi0JaWYgKFBHX0FSR0lTTlVMTCgwKSkKLQkJZWxvZyhFUlJPUiwgIm51 bGwgYXJndW1lbnQgdG8gYmluYXJ5X3VwZ3JhZGVfcmVwbG9yaWdpbl9hZHZhbmNlIGlzIG5vdCBh bGxvd2VkIik7Ci0KLQlzdWJuYW1lID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQ KDApKTsKLQlyZW1vdGVfY29tbWl0ID0gUEdfQVJHSVNOVUxMKDEpID8gSW52YWxpZFhMb2dSZWNQ dHIgOiBQR19HRVRBUkdfTFNOKDEpOwotCi0JcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQlzdWJpZCA9IGdldF9zdWJzY3JpcHRpb25f b2lkKHN1Ym5hbWUsIGZhbHNlKTsKLQotCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxS ZXAoc3ViaWQsIEludmFsaWRPaWQsIG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7Ci0K LQkvKiBMb2NrIHRvIHByZXZlbnQgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBmcm9tIHZhbmlzaGlu ZyAqLwotCUxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOwotCW5vZGUgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgZmFs c2UpOwotCi0JLyoKLQkgKiBUaGUgc2VydmVyIHdpbGwgYmUgc3RvcHBlZCBhZnRlciBzZXR0aW5n IHVwIHRoZSBvYmplY3RzIGluIHRoZSBuZXcKLQkgKiBjbHVzdGVyIGFuZCB0aGUgb3JpZ2lucyB3 aWxsIGJlIGZsdXNoZWQgZHVyaW5nIHRoZSBzaHV0ZG93biBjaGVja3BvaW50LgotCSAqIFRoaXMg d2lsbCBlbnN1cmUgdGhhdCB0aGUgbGF0ZXN0IExTTiB2YWx1ZXMgZm9yIG9yaWdpbiB3aWxsIGJl Ci0JICogYXZhaWxhYmxlIGFmdGVyIHRoZSB1cGdyYWRlLgotCSAqLwotCXJlcGxvcmlnaW5fYWR2 YW5jZShub2RlLCByZW1vdGVfY29tbWl0LCBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJICAgZmFs c2UgLyogYmFja3dhcmQgKi8gLAotCQkJCQkgICBmYWxzZSAvKiBXQUwgbG9nICovICk7CisJQ3Jl YXRlQ29uZmxpY3REZXRlY3Rpb25TbG90KCk7CiAKLQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNh dGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCXRhYmxlX2Nsb3NlKHJl bCwgUm93RXhjbHVzaXZlTG9jayk7CisJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOwogCiAJUEdf UkVUVVJOX1ZPSUQoKTsKIH0KIAogLyoKLSAqIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9jb25mbGlj dF9kZXRlY3Rpb25fc2xvdAorICogYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX3JlcGxpY2F0aW9uX29y aWdpbgogICoKLSAqIENyZWF0ZSBhIHJlcGxpY2F0aW9uIHNsb3QgdG8gcmV0YWluIGluZm9ybWF0 aW9uIG5lY2Vzc2FyeSBmb3IgY29uZmxpY3QKLSAqIGRldGVjdGlvbiBzdWNoIGFzIGRlYWQgdHVw bGVzLCBjb21taXQgdGltZXN0YW1wcywgYW5kIG9yaWdpbnMuCisgKiBDcmVhdGUgYSByZXBsaWNh dGlvbiBvcmlnaW4gd2l0aCBhIHNwZWNpZmljIE9JRCBhbmQgbmFtZSwgb3B0aW9uYWxseQorICog cmVzdG9yaW5nIGl0cyByZW1vdGVfbHNuLiBVc2VkIGJ5IHBnX3VwZ3JhZGUgdG8gcHJlc2VydmUg cmVwbGljYXRpb24KKyAqIG9yaWdpbiBPSURzIGFjcm9zcyB0aGUgdXBncmFkZS4KICAqLwogRGF0 dW0KLWJpbmFyeV91cGdyYWRlX2NyZWF0ZV9jb25mbGljdF9kZXRlY3Rpb25fc2xvdChQR19GVU5D VElPTl9BUkdTKQorYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX3JlcGxpY2F0aW9uX29yaWdpbihQR19G VU5DVElPTl9BUkdTKQogeworCU9pZCAgICAgICAgICAgICBub2RlX29pZDsKKwlSZXBsT3JpZ2lu SWQgICAgbm9kZTsKKwlSZWxhdGlvbgkJcmVsOworCWNoYXIgICAgICAgICAgICpvcmlnaW5uYW1l OworCVhMb2dSZWNQdHIgICAgICByZW1vdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisKIAlD SEVDS19JU19CSU5BUllfVVBHUkFERTsKIAotCUNyZWF0ZUNvbmZsaWN0RGV0ZWN0aW9uU2xvdCgp OworCWlmIChQR19BUkdJU05VTEwoMCkgfHwgUEdfQVJHSVNOVUxMKDEpKQorCQllbG9nKEVSUk9S LAorCQkJICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlv bl9vcmlnaW4gaXMgbm90IGFsbG93ZWQiKTsKIAotCVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsK Kwlub2RlX29pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlpZiAobm9kZV9vaWQgPT0gSW52YWxp ZE9pZCB8fCBub2RlX29pZCA+PSBEb05vdFJlcGxpY2F0ZUlkKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNn KCJyZXBsaWNhdGlvbiBvcmlnaW4gSUQgJXUgaXMgb3V0IG9mIHJhbmdlIiwgbm9kZV9vaWQpKTsK KworCW5vZGUgPSAoUmVwbE9yaWdpbklkKSBub2RlX29pZDsKKworCW9yaWdpbm5hbWUgPSB0ZXh0 X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOworCisJLyoKKwkgKiBUbyBhdm9pZCBu ZWVkaW5nIGEgVE9BU1QgdGFibGUgZm9yIHBnX3JlcGxpY2F0aW9uX29yaWdpbiwgd2UgbGltaXQK KwkgKiByZXBsaWNhdGlvbiBvcmlnaW4gbmFtZXMgdG8gNTEyIGJ5dGVzLiAgVGhpcyBzaG91bGQg YmUgbW9yZSB0aGFuIGVub3VnaAorCSAqIGZvciBhbGwgcHJhY3RpY2FsIHVzZS4KKwkgKi8KKwlp ZiAoc3RybGVuKG9yaWdpbm5hbWUpID4gTUFYX1JPTkFNRV9MRU4pCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAorCQkJCWVycm1z ZygicmVwbGljYXRpb24gb3JpZ2luIG5hbWUgaXMgdG9vIGxvbmciKSwKKwkJCQllcnJkZXRhaWwo IlJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lcyBtdXN0IGJlIG5vIGxvbmdlciB0aGFuICVkIGJ5dGVz LiIsCisJCQkJCQkgIE1BWF9ST05BTUVfTEVOKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgyKSkK KwkJcmVtb3RlX2xzbiA9IFBHX0dFVEFSR19MU04oMik7CisKKwlBc3NlcnQoSXNUcmFuc2FjdGlv blN0YXRlKCkpOworCisJLyogQWNxdWlyZSBhbiBleGNsdXNpdmUgbG9jayBiZWZvcmUgaW5zZXJ0 aW5nIHRoZSBuZXcgb3JpZ2luLiAqLworCXJlbCA9IHRhYmxlX29wZW4oUmVwbGljYXRpb25Pcmln aW5SZWxhdGlvbklkLCBFeGNsdXNpdmVMb2NrKTsKKworCXJlcGxvcmlnaW5fY3JlYXRlX3dpdGhf aWQobm9kZSwgb3JpZ2lubmFtZSwgcmVtb3RlX2xzbiwgcmVsKTsKKworCXRhYmxlX2Nsb3NlKHJl bCwgRXhjbHVzaXZlTG9jayk7CiAKIAlQR19SRVRVUk5fVk9JRCgpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5k ZXggZWEyMmIwNjA0YzEuLmUxNTcyMTRiOTI2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTUxNzksNyArNTE3 OSw2IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1YndhbHJj dnRpbWVvdXQ7CiAJaW50CQkJaV9zdWJwdWJsaWNhdGlvbnM7CiAJaW50CQkJaV9zdWJvcmlnaW47 Ci0JaW50CQkJaV9zdWJvcmlnaW5yZW1vdGVsc247CiAJaW50CQkJaV9zdWJlbmFibGVkOwogCWlu dAkJCWlfc3ViZmFpbG92ZXI7CiAJaW50CQkJaV9zdWJyZXRhaW5kZWFkdHVwbGVzOwpAQCAtNTI0 OCwxMSArNTI0Nyw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCQkJCSAg TE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKIAogCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSAmJiBm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgby5yZW1vdGVfbHNuIEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKLQkJCQkJCQkgIiBz LnN1YmVuYWJsZWQsXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJl bmFibGVkLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBOVUxM IEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKLQkJCQkJCQkgIiBmYWxzZSBBUyBzdWJlbmFibGVk LFxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YmVuYWJs ZWQsXG4iKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC01MzMyLDcgKzUzMjksNiBAQCBnZXRTdWJzY3JpcHRp b25zKEFyY2hpdmUgKmZvdXQpCiAJaV9zdWJ3YWxyY3Z0aW1lb3V0ID0gUFFmbnVtYmVyKHJlcywg InN1YndhbHJjdnRpbWVvdXQiKTsKIAlpX3N1YnB1YmxpY2F0aW9ucyA9IFBRZm51bWJlcihyZXMs ICJzdWJwdWJsaWNhdGlvbnMiKTsKIAlpX3N1Ym9yaWdpbiA9IFBRZm51bWJlcihyZXMsICJzdWJv cmlnaW4iKTsKLQlpX3N1Ym9yaWdpbnJlbW90ZWxzbiA9IFBRZm51bWJlcihyZXMsICJzdWJvcmln aW5yZW1vdGVsc24iKTsKIAogCXN1YmluZm8gPSBwZ19tYWxsb2NfYXJyYXkoU3Vic2NyaXB0aW9u SW5mbywgbnR1cHMpOwogCkBAIC01Mzg1LDExICs1MzgxLDYgQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCQlzdWJpbmZvW2ldLnN1YnB1YmxpY2F0aW9ucyA9CiAJCQlwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VicHVibGljYXRpb25zKSk7CiAJCXN1YmluZm9baV0u c3Vib3JpZ2luID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym9yaWdpbikpOwot CQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3N1Ym9yaWdpbnJlbW90ZWxzbikpCi0JCQlzdWJp bmZvW2ldLnN1Ym9yaWdpbnJlbW90ZWxzbiA9IE5VTEw7Ci0JCWVsc2UKLQkJCXN1YmluZm9baV0u c3Vib3JpZ2lucmVtb3RlbHNuID0KLQkJCQlwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlf c3Vib3JpZ2lucmVtb3RlbHNuKSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBk dW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2JqKSwgZm91 dCk7CkBAIC01NjY4LDM3ICs1NjU5LDE1IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91 dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAkgKiBJbiBiaW5hcnktdXBncmFk ZSBtb2RlLCB3ZSBhbGxvdyB0aGUgcmVwbGljYXRpb24gdG8gY29udGludWUgYWZ0ZXIgdGhlCiAJ ICogdXBncmFkZS4KIAkgKi8KLQlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxNzAwMDApCisJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlICYmIHN1Ymlu Zm8tPnN1YmVuYWJsZWQgJiYgZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNzAwMDApCiAJewotCQlp ZiAoc3ViaW5mby0+c3Vib3JpZ2lucmVtb3RlbHNuKQotCQl7Ci0JCQkvKgotCQkJICogUHJlc2Vy dmUgdGhlIHJlbW90ZV9sc24gZm9yIHRoZSBzdWJzY3JpYmVyJ3MgcmVwbGljYXRpb24KLQkJCSAq IG9yaWdpbi4gVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB0byBzdGFydCB0aGUgcmVwbGljYXRpb24g ZnJvbQotCQkJICogdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgdXBncmFkZS4gVGhpcyB2YWx1ZSB3 aWxsIGJlIHN0YWxlIGlmCi0JCQkgKiB0aGUgcHVibGlzaGVyIGdldHMgdXBncmFkZWQgYmVmb3Jl IHRoZSBzdWJzY3JpYmVyIG5vZGUuCi0JCQkgKiBIb3dldmVyLCB0aGlzIHNob3VsZG4ndCBiZSBh IHByb2JsZW0gYXMgdGhlIHVwZ3JhZGUgb2YgdGhlCi0JCQkgKiBwdWJsaXNoZXIgZW5zdXJlcyB0 aGF0IGFsbCB0aGUgdHJhbnNhY3Rpb25zIHdlcmUgcmVwbGljYXRlZAotCQkJICogYmVmb3JlIHVw Z3JhZGluZyBpdC4KLQkJCSAqLwotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJ CQkJCSAiXG4tLSBGb3IgYmluYXJ5IHVwZ3JhZGUsIG11c3QgcHJlc2VydmUgdGhlIHJlbW90ZV9s c24gZm9yIHRoZSBzdWJzY3JpYmVyJ3MgcmVwbGljYXRpb24gb3JpZ2luLlxuIik7Ci0JCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkJICJTRUxFQ1QgcGdfY2F0YWxvZy5iaW5h cnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2UoIik7Ci0JCQlhcHBlbmRTdHJpbmdMaXRlcmFs QUgocXVlcnksIHN1YmluZm8tPmRvYmoubmFtZSwgZm91dCk7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZl cihxdWVyeSwgIiwgJyVzJyk7XG4iLCBzdWJpbmZvLT5zdWJvcmlnaW5yZW1vdGVsc24pOwotCQl9 Ci0KLQkJaWYgKHN1YmluZm8tPnN1YmVuYWJsZWQpCi0JCXsKLQkJCS8qCi0JCQkgKiBFbmFibGUg dGhlIHN1YnNjcmlwdGlvbiB0byBhbGxvdyB0aGUgcmVwbGljYXRpb24gdG8gY29udGludWUKLQkJ CSAqIGFmdGVyIHRoZSB1cGdyYWRlLgotCQkJICovCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwKLQkJCQkJCQkJICJcbi0tIEZvciBiaW5hcnkgdXBncmFkZSwgbXVzdCBwcmVzZXJ2ZSB0 aGUgc3Vic2NyaWJlcidzIHJ1bm5pbmcgc3RhdGUuXG4iKTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVy KHF1ZXJ5LCAiQUxURVIgU1VCU0NSSVBUSU9OICVzIEVOQUJMRTtcbiIsIHFzdWJuYW1lKTsKLQkJ fQorCQkvKgorCQkgKiBFbmFibGUgdGhlIHN1YnNjcmlwdGlvbiB0byBhbGxvdyB0aGUgcmVwbGlj YXRpb24gdG8gY29udGludWUKKwkJICogYWZ0ZXIgdGhlIHVwZ3JhZGUuCisJCSAqLworCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIlxuLS0gRm9yIGJpbmFyeSB1cGdyYWRl LCBtdXN0IHByZXNlcnZlIHRoZSBzdWJzY3JpYmVyJ3MgcnVubmluZyBzdGF0ZS5cbiIpOworCQlh cHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFNVQlNDUklQVElPTiAlcyBFTkFCTEU7XG4i LCBxc3VibmFtZSk7CiAJfQogCiAJaWYgKHN1YmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9O RU5UX0RFRklOSVRJT04pCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3MjZkOGIxMi4uOGYxMjUyYjg1NGUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaApAQCAtNzI5LDcgKzcyOSw2IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3Jp cHRpb25JbmZvCiAJY2hhcgkgICAqc3Vid2FscmN2dGltZW91dDsKIAljaGFyCSAgICpzdWJwdWJs aWNhdGlvbnM7CiAJY2hhcgkgICAqc3Vib3JpZ2luOwotCWNoYXIJICAgKnN1Ym9yaWdpbnJlbW90 ZWxzbjsKIH0gU3Vic2NyaXB0aW9uSW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCmluZGV4IGI5 NjUzZjBhZWZlLi40ODUxNDBiOTMzMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXBhbGwuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCkBAIC0xOCw2ICsxOCw3 IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAi YWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWRfZC5oIgogI2lu Y2x1ZGUgImNvbW1vbi9jb25uZWN0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgpA QCAtNjcsNiArNjgsNyBAQCBzdGF0aWMgdm9pZCBkcm9wREJzKFBHY29ubiAqY29ubik7CiBzdGF0 aWMgdm9pZCBkdW1wVXNlckNvbmZpZyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnVzZXJuYW1l KTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKTsKIHN0YXRpYyB2b2lk IGR1bXBUaW1lc3RhbXAoY29uc3QgY2hhciAqbXNnKTsKK3N0YXRpYyB2b2lkIGR1bXBSZXBsaWNh dGlvbk9yaWdpbnMoUEdjb25uICpjb25uKTsKIHN0YXRpYyBpbnQJcnVuUGdEdW1wKGNvbnN0IGNo YXIgKmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRlX29wdHMpOwogc3RhdGljIHZvaWQgYnVpbGRT aFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFt ZSwgT2lkIG9iamVjdElkLApAQCAtNjYzLDYgKzY2NSwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJCQkvKiBEdW1wIHJvbGUgR1VDIHByaXZpbGVnZXMgKi8KIAkJCWlmIChzZXJ2 ZXJfdmVyc2lvbiA+PSAxNTAwMDAgJiYgIXNraXBfYWNscykKIAkJCQlkdW1wUm9sZUdVQ1ByaXZz KGNvbm4pOworCisJCX0KKworCQkvKiBEdW1wIHJlcGxpY2F0aW9uIG9yaWdpbnMgKi8KKwkJaWYg KCF0YWJsZXNwYWNlc19vbmx5ICYmICFyb2xlc19vbmx5ICYmIGJpbmFyeV91cGdyYWRlKQorCQl7 CisJCQlpZiAoc2VydmVyX3ZlcnNpb24gPj0gOTA1MDApCisJCQlkdW1wUmVwbGljYXRpb25Pcmln aW5zKGNvbm4pOwogCQl9CiAKIAkJLyogRHVtcCB0YWJsZXNwYWNlcyAqLwpAQCAtMTgzMiw2ICsx ODQyLDY0IEBAIGR1bXBUaW1lc3RhbXAoY29uc3QgY2hhciAqbXNnKQogCQlmcHJpbnRmKE9QRiwg Ii0tICVzICVzXG5cbiIsIG1zZywgYnVmKTsKIH0KIAorc3RhdGljIHZvaWQKK2R1bXBSZXBsaWNh dGlvbk9yaWdpbnMoUEdjb25uICpjb25uKQoreworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBR RXhwQnVmZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCWlfcm9pZGVudDsKKwlpbnQJ CQlpX3JvbmFtZTsKKwlpbnQJCQlpX3JlbW90ZWxzbjsKKworCS8qIEdldCByZXBsaWNhdGlvbiBv cmlnaW5zIGZyb20gY2F0YWxvZ3MgKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsCisJCQkJ CQkgIlNFTEVDVCBvLiosIG9zLnJlbW90ZV9sc24gIgorCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cu cGdfcmVwbGljYXRpb25fb3JpZ2luIG8gIgorCQkJCQkJICJMRUZUIE9VVEVSIEpPSU4gcGdfY2F0 YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIG9zIE9OIG8ucm9pZGVudCA9IG9zLmxv Y2FsX2lkICIpOworCisJcmVzID0gZXhlY3V0ZVF1ZXJ5KGNvbm4sIGJ1Zi0+ZGF0YSk7CisKKwlp X3JvaWRlbnQgPSBQUWZudW1iZXIocmVzLCAicm9pZGVudCIpOworCWlfcm9uYW1lID0gUFFmbnVt YmVyKHJlcywgInJvbmFtZSIpOworCWlfcmVtb3RlbHNuID0gUFFmbnVtYmVyKHJlcywgInJlbW90 ZV9sc24iKTsKKworCWlmIChQUW50dXBsZXMocmVzKSA+IDApCisJCWZwcmludGYoT1BGLCAiLS1c bi0tIFJlcGxpY2F0aW9uIE9yaWdpbnMgXG4tLVxuXG4iKTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgUFFudHVwbGVzKHJlcyk7IGkrKykKKwl7CisJCVJlcGxPcmlnaW5JZCByb2lkZW50OworCQlj b25zdCBjaGFyICpyb25hbWU7CisKKwkJcm9pZGVudCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywg aSwgaV9yb2lkZW50KSk7CisJCXJvbmFtZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbmFtZSk7 CisKKwkJcmVzZXRQUUV4cEJ1ZmZlcihidWYpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1 ZiwgIlxuLS0gRm9yIGJpbmFyeSB1cGdyYWRlLCBtdXN0IHByZXNlcnZlIHJlcGxpY2F0aW9uIG9y aWdpbiByb2lkZW50IGFuZCByZW1vdGVfbHNuXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoYnVm LAorCQkJIlNFTEVDVCBwZ19jYXRhbG9nLmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlv bl9vcmlnaW4oIgorCQkJIicldSc6OnBnX2NhdGFsb2cub2lkLCAiLCByb2lkZW50KTsKKwkJYXBw ZW5kU3RyaW5nTGl0ZXJhbENvbm4oYnVmLCByb25hbWUsIGNvbm4pOworCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihidWYsICI6OnBnX2NhdGFsb2cudGV4dCIpOworCisJCWlmICghUFFnZXRpc251bGwo cmVzLCBpLCBpX3JlbW90ZWxzbikpCisJCXsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1Ziwg IiwgIik7CisJCQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubihidWYsIFBRZ2V0dmFsdWUocmVzLCBp LCBpX3JlbW90ZWxzbiksIGNvbm4pOworCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCAiOjpw Z19jYXRhbG9nLnBnX2xzbiIpOworCQl9CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KGJ1ZiwgIiwgTlVMTCIpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIik7XG4iKTsK KwkJZnByaW50ZihPUEYsICIlcyIsIGJ1Zi0+ZGF0YSk7CisJfQorCisJUFFjbGVhcihyZXMpOwor CWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYpOworfQorCiAvKgogICogcmVhZF9kdW1wYWxsX2ZpbHRl cnMgLSByZXRyaWV2ZSBkYXRhYmFzZSBpZGVudGlmaWVyIHBhdHRlcm5zIGZyb20gZmlsZQogICoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9jaGVjay5jIGIvc3JjL2Jpbi9wZ191cGdy YWRlL2NoZWNrLmMKaW5kZXggNzU1NmZiM2YyMmEuLmVhODQ1MWQ2MDcxIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2su YwpAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19mb3JfbmV3X3RhYmxlc3BhY2Vf ZGlyKHZvaWQpOwogc3RhdGljIHZvaWQgY2hlY2tfZm9yX3VzZXJfZGVmaW5lZF9lbmNvZGluZ19j b252ZXJzaW9ucyhDbHVzdGVySW5mbyAqY2x1c3Rlcik7CiBzdGF0aWMgdm9pZCBjaGVja19mb3Jf dW5pY29kZV91cGRhdGUoQ2x1c3RlckluZm8gKmNsdXN0ZXIpOwogc3RhdGljIHZvaWQgY2hlY2tf bmV3X2NsdXN0ZXJfcmVwbGljYXRpb25fc2xvdHModm9pZCk7Ci1zdGF0aWMgdm9pZCBjaGVja19u ZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25fY29uZmlndXJhdGlvbih2b2lkKTsKK3N0YXRpYyB2b2lk IGNoZWNrX25ld19jbHVzdGVyX3JlcGxpY2F0aW9uX29yaWdpbnModm9pZCk7CiBzdGF0aWMgdm9p ZCBjaGVja19vbGRfY2x1c3Rlcl9mb3JfdmFsaWRfc2xvdHModm9pZCk7CiBzdGF0aWMgdm9pZCBj aGVja19vbGRfY2x1c3Rlcl9zdWJzY3JpcHRpb25fc3RhdGUodm9pZCk7CiBzdGF0aWMgdm9pZCBj aGVja19vbGRfY2x1c3Rlcl9nbG9iYWxfbmFtZXMoQ2x1c3RlckluZm8gKmNsdXN0ZXIpOwpAQCAt NjUxLDYgKzY1MSwxMCBAQCBjaGVja19hbmRfZHVtcF9vbGRfY2x1c3Rlcih2b2lkKQogCQljaGVj a19vbGRfY2x1c3Rlcl9zdWJzY3JpcHRpb25fc3RhdGUoKTsKIAl9CiAKKwkvKiBHZXQgcmVwbGlj YXRpb24gb3JpZ2luIGluZm9ybWF0aW9uIGZvciBQRyA5LjUgYW5kIGFib3ZlICovCisJaWYgKEdF VF9NQUpPUl9WRVJTSU9OKG9sZF9jbHVzdGVyLm1ham9yX3ZlcnNpb24pID49IDkwNSkKKwkJZ2V0 X3JlcGxpY2F0aW9uX29yaWdpbl9pbmZvKCZvbGRfY2x1c3Rlcik7CisKIAljaGVja19mb3JfZGF0 YV90eXBlc191c2FnZSgmb2xkX2NsdXN0ZXIpOwogCiAJLyoKQEAgLTc5Nyw3ICs4MDEsNyBAQCBj aGVja19uZXdfY2x1c3Rlcih2b2lkKQogCiAJY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25f c2xvdHMoKTsKIAotCWNoZWNrX25ld19jbHVzdGVyX3N1YnNjcmlwdGlvbl9jb25maWd1cmF0aW9u KCk7CisJY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25fb3JpZ2lucygpOwogfQogCiAKQEAg LTIzMDMsMzEgKzIzMDcsNDUgQEAgY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25fc2xvdHMo dm9pZCkKIH0KIAogLyoKLSAqIGNoZWNrX25ld19jbHVzdGVyX3N1YnNjcmlwdGlvbl9jb25maWd1 cmF0aW9uKCkKKyAqIGNoZWNrX25ld19jbHVzdGVyX3JlcGxpY2F0aW9uX29yaWdpbnMoKQorICoK KyAqIFZlcmlmeSB0aGF0IHRoZSBuZXcgY2x1c3RlciBoYXMgbm8gcmVwbGljYXRpb24gb3JpZ2lu cy4gRHVyaW5nIHVwZ3JhZGUsCisgKiBwZ191cGdyYWRlIHJlc3RvcmVzIHJlcGxpY2F0aW9uIG9y aWdpbnMgZnJvbSB0aGUgb2xkIGNsdXN0ZXIgd2l0aCB0aGVpcgorICogb3JpZ2luYWwgT0lEcy4g SWYgdGhlIG5ldyBjbHVzdGVyIGFscmVhZHkgY29udGFpbnMgb3JpZ2lucywgdGhvc2UgT0lEcwor ICogbWF5IGNvbGxpZGUsIGNhdXNpbmcgdGhlIHVwZ3JhZGUgdG8gZmFpbCBtaWQtd2F5LgogICoK LSAqIFZlcmlmeSB0aGF0IHRoZSBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMgY29uZmln dXJhdGlvbiBzcGVjaWZpZWQgaXMKLSAqIGVub3VnaCBmb3IgY3JlYXRpbmcgdGhlIHN1YnNjcmlw dGlvbnMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIHRoZQotICogcmVwbGljYXRpb24gb3Jp Z2luIGZvciBlYWNoIHN1YnNjcmlwdGlvbi4KKyAqIEFsc28gdmVyaWZ5IHRoYXQgdGhlIG1heF9h Y3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyBjb25maWd1cmF0aW9uIGlzCisgKiBlbm91Z2ggZm9y IGNyZWF0aW5nIGFsbCB0aGUgcmVwbGljYXRpb24gb3JpZ2lucy4KICAqLwogc3RhdGljIHZvaWQK LWNoZWNrX25ld19jbHVzdGVyX3N1YnNjcmlwdGlvbl9jb25maWd1cmF0aW9uKHZvaWQpCitjaGVj a19uZXdfY2x1c3Rlcl9yZXBsaWNhdGlvbl9vcmlnaW5zKHZvaWQpCiB7Ci0JUEdyZXN1bHQgICAq cmVzOwogCVBHY29ubgkgICAqY29ubjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJaW50CQkJbm9yaWdp bnM7CiAJaW50CQkJbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zOwogCi0JLyogU3Vic2Ny aXB0aW9ucyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzIGNhbiBiZSBtaWdyYXRlZCBzaW5jZSBQRzE3 LiAqLwotCWlmIChHRVRfTUFKT1JfVkVSU0lPTihvbGRfY2x1c3Rlci5tYWpvcl92ZXJzaW9uKSA8 IDE3MDApCisJLyogUXVpY2sgcmV0dXJuIGlmIHRoZXJlIGFyZSBubyByZXBsaWNhdGlvbiBvcmln aW5zIHRvIG1pZ3JhdGUuICovCisJaWYgKG9sZF9jbHVzdGVyLm5yZXBsX29yaWdpbnMgPT0gMCkK IAkJcmV0dXJuOwogCi0JLyogUXVpY2sgcmV0dXJuIGlmIHRoZXJlIGFyZSBubyBzdWJzY3JpcHRp b25zIHRvIGJlIG1pZ3JhdGVkLiAqLwotCWlmIChvbGRfY2x1c3Rlci5uc3VicyA9PSAwKQotCQly ZXR1cm47Ci0KLQlwcmVwX3N0YXR1cygiQ2hlY2tpbmcgbmV3IGNsdXN0ZXIgY29uZmlndXJhdGlv biBmb3Igc3Vic2NyaXB0aW9ucyIpOworCXByZXBfc3RhdHVzKCJDaGVja2luZyByZXBsaWNhdGlv biBvcmlnaW5zIGluIG5ldyBjbHVzdGVyIik7CiAKIAljb25uID0gY29ubmVjdFRvU2VydmVyKCZu ZXdfY2x1c3RlciwgInRlbXBsYXRlMSIpOwogCisJcmVzID0gZXhlY3V0ZVF1ZXJ5T3JEaWUoY29u biwKKwkJCQkJCQkiU0VMRUNUIGNvdW50KCopICIKKwkJCQkJCQkiRlJPTSBwZ19jYXRhbG9nLnBn X3JlcGxpY2F0aW9uX29yaWdpbiIpOworCisJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCisJCXBn X2ZhdGFsKCJjb3VsZCBub3QgY291bnQgdGhlIG51bWJlciBvZiByZXBsaWNhdGlvbiBvcmlnaW5z Iik7CisKKwlub3JpZ2lucyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKKwlQUWNsZWFy KHJlcyk7CisKKwlpZiAobm9yaWdpbnMgPiAwKQorCQlwZ19mYXRhbCgiZXhwZWN0ZWQgMCByZXBs aWNhdGlvbiBvcmlnaW5zIGJ1dCBmb3VuZCAlZCIsIG5vcmlnaW5zKTsKKwogCXJlcyA9IGV4ZWN1 dGVRdWVyeU9yRGllKGNvbm4sICJTRUxFQ1Qgc2V0dGluZyBGUk9NIHBnX3NldHRpbmdzICIKIAkJ CQkJCQkiV0hFUkUgbmFtZSA9ICdtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMnOyIpOwog CkBAIC0yMzM1LDEyICsyMzUzLDEzIEBAIGNoZWNrX25ld19jbHVzdGVyX3N1YnNjcmlwdGlvbl9j b25maWd1cmF0aW9uKHZvaWQpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHBhcmFt ZXRlciBzZXR0aW5ncyBvbiBuZXcgY2x1c3RlciIpOwogCiAJbWF4X2FjdGl2ZV9yZXBsaWNhdGlv bl9vcmlnaW5zID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMCkpOwotCWlmIChvbGRfY2x1c3Rl ci5uc3VicyA+IG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucykKKwlQUWNsZWFyKHJlcyk7 CisKKwlpZiAob2xkX2NsdXN0ZXIubnJlcGxfb3JpZ2lucyA+IG1heF9hY3RpdmVfcmVwbGljYXRp b25fb3JpZ2lucykKIAkJcGdfZmF0YWwoIlwibWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5z XCIgKCVkKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mICIK LQkJCQkgInN1YnNjcmlwdGlvbnMgKCVkKSBpbiB0aGUgb2xkIGNsdXN0ZXIiLAotCQkJCSBtYXhf YWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMsIG9sZF9jbHVzdGVyLm5zdWJzKTsKKwkJCQkgInJl cGxpY2F0aW9uIG9yaWdpbnMgKCVkKSBpbiB0aGUgb2xkIGNsdXN0ZXIiLAorCQkJCSBtYXhfYWN0 aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMsIG9sZF9jbHVzdGVyLm5yZXBsX29yaWdpbnMpOwogCi0J UFFjbGVhcihyZXMpOwogCVBRZmluaXNoKGNvbm4pOwogCiAJY2hlY2tfb2soKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5j CmluZGV4IDM3ZmZmOTM4OTJmLi5lYzVkZDViN2U5NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191 cGdyYWRlL2luZm8uYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jCkBAIC04MzIsNiAr ODMyLDMwIEBAIGNvdW50X29sZF9jbHVzdGVyX2xvZ2ljYWxfc2xvdHModm9pZCkKIAlyZXR1cm4g c2xvdF9jb3VudDsKIH0KIAorLyoKKyAqIGdldF9yZXBsaWNhdGlvbl9vcmlnaW5faW5mbygpCisg KgorICogR2V0cyB0aGUgaW5mb3JtYXRpb24gb2YgcmVwbGljYXRpb24gb3JpZ2lucyBpbiB0aGUg Y2x1c3Rlci4KKyAqLwordm9pZAorZ2V0X3JlcGxpY2F0aW9uX29yaWdpbl9pbmZvKENsdXN0ZXJJ bmZvICpjbHVzdGVyKQoreworCVBHY29ubgkgICAqY29ubjsKKwlQR3Jlc3VsdCAgICpyZXM7CisK Kwljb25uID0gY29ubmVjdFRvU2VydmVyKGNsdXN0ZXIsICJ0ZW1wbGF0ZTEiKTsKKwlyZXMgPSBl eGVjdXRlUXVlcnlPckRpZShjb25uLCAiU0VMRUNUIGNvdW50KCopIEFTIG5vcmlnaW5zICIKKwkJ CQkJCQkJICAgIkZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW4iKTsKKworCWlm IChQUW50dXBsZXMocmVzKSAhPSAxKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGdldCB0aGUgbnVt YmVyIG9mIHJlcGxpY2F0aW9uIG9yaWdpbnMiKTsKKworCWNsdXN0ZXItPm5yZXBsX29yaWdpbnMg PSBhdG9pKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisJUFFjbGVhcihyZXMpOworCisJUFFmaW5p c2goY29ubik7Cit9CisKIC8qCiAgKiBnZXRfc3Vic2NyaXB0aW9uX2luZm8oKQogICoKQEAgLTg0 MiwyMyArODY2LDIwIEBAIGdldF9zdWJzY3JpcHRpb25faW5mbyhDbHVzdGVySW5mbyAqY2x1c3Rl cikKIHsKIAlQR2Nvbm4JICAgKmNvbm47CiAJUEdyZXN1bHQgICAqcmVzOwotCWludAkJCWlfbnN1 YjsKIAlpbnQJCQlpX3JldGFpbl9kZWFkX3R1cGxlczsKIAogCWNvbm4gPSBjb25uZWN0VG9TZXJ2 ZXIoY2x1c3RlciwgInRlbXBsYXRlMSIpOwogCWlmIChHRVRfTUFKT1JfVkVSU0lPTihjbHVzdGVy LT5tYWpvcl92ZXJzaW9uKSA+PSAxOTAwKQotCQlyZXMgPSBleGVjdXRlUXVlcnlPckRpZShjb25u LCAiU0VMRUNUIGNvdW50KCopIEFTIG5zdWIsIgotCQkJCQkJCQkiQ09VTlQoQ0FTRSBXSEVOIHN1 YnJldGFpbmRlYWR0dXBsZXMgVEhFTiAxIEVORCkgPiAwIEFTIHJldGFpbl9kZWFkX3R1cGxlcyAi CisJCXJlcyA9IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJCQkJCQkJCSJTRUxFQ1QgQ09VTlQo Q0FTRSBXSEVOIHN1YnJldGFpbmRlYWR0dXBsZXMgVEhFTiAxIEVORCkgPiAwIEFTIHJldGFpbl9k ZWFkX3R1cGxlcyAiCiAJCQkJCQkJCSJGUk9NIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIik7 CiAJZWxzZQotCQlyZXMgPSBleGVjdXRlUXVlcnlPckRpZShjb25uLCAiU0VMRUNUIGNvdW50KCop IEFTIG5zdWIsIgotCQkJCQkJCQkiJ2YnIEFTIHJldGFpbl9kZWFkX3R1cGxlcyAiCisJCXJlcyA9 IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJCQkJCQkJCSJTRUxFQ1QgJ2YnIEFTIHJldGFpbl9k ZWFkX3R1cGxlcyAiCiAJCQkJCQkJCSJGUk9NIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIik7 CiAKLQlpX25zdWIgPSBQUWZudW1iZXIocmVzLCAibnN1YiIpOwogCWlfcmV0YWluX2RlYWRfdHVw bGVzID0gUFFmbnVtYmVyKHJlcywgInJldGFpbl9kZWFkX3R1cGxlcyIpOwogCi0JY2x1c3Rlci0+ bnN1YnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCAwLCBpX25zdWIpKTsKIAljbHVzdGVyLT5zdWJf cmV0YWluX2RlYWRfdHVwbGVzID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywgMCwgaV9yZXRhaW5f ZGVhZF90dXBsZXMpLCAidCIpID09IDApOwogCiAJUFFjbGVhcihyZXMpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191 cGdyYWRlLmgKaW5kZXggY2NkMWFjMGQwMTMuLmU3OTc2NWJmNGZlIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191 cGdyYWRlLmgKQEAgLTMxMCw3ICszMTAsNyBAQCB0eXBlZGVmIHN0cnVjdAogCWNoYXIJICAqKnRh Ymxlc3BhY2VzOwkvKiB0YWJsZXNwYWNlIGRpcmVjdG9yaWVzICovCiAJaW50CQkJbnVtX3RhYmxl c3BhY2VzOwogCWNvbnN0IGNoYXIgKnRhYmxlc3BhY2Vfc3VmZml4OwkvKiBkaXJlY3Rvcnkgc3Bl Y2lmaWNhdGlvbiAqLwotCWludAkJCW5zdWJzOwkJCS8qIG51bWJlciBvZiBzdWJzY3JpcHRpb25z ICovCisJaW50CQkJbnJlcGxfb3JpZ2luczsJLyogbnVtYmVyIG9mIHJlcGxpY2F0aW9uIG9yaWdp bnMgKi8KIAlib29sCQlzdWJfcmV0YWluX2RlYWRfdHVwbGVzOyAvKiB3aGV0aGVyIGEgc3Vic2Ny aXB0aW9uIGVuYWJsZXMKIAkJCQkJCQkJCQkgKiByZXRhaW5fZGVhZF90dXBsZXMuICovCiB9IENs dXN0ZXJJbmZvOwpAQCAtNDUxLDYgKzQ1MSw3IEBAIEZpbGVOYW1lTWFwICpnZW5fZGJfZmlsZV9t YXBzKERiSW5mbyAqb2xkX2RiLAogdm9pZAkJZ2V0X2RiX3JlbF9hbmRfc2xvdF9pbmZvcyhDbHVz dGVySW5mbyAqY2x1c3Rlcik7CiBpbnQJCQljb3VudF9vbGRfY2x1c3Rlcl9sb2dpY2FsX3Nsb3Rz KHZvaWQpOwogdm9pZAkJZ2V0X3N1YnNjcmlwdGlvbl9pbmZvKENsdXN0ZXJJbmZvICpjbHVzdGVy KTsKK3ZvaWQJCWdldF9yZXBsaWNhdGlvbl9vcmlnaW5faW5mbyhDbHVzdGVySW5mbyAqY2x1c3Rl cik7CiAKIC8qIG9wdGlvbi5jICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90 LzAwNF9zdWJzY3JpcHRpb24ucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0 aW9uLnBsCmluZGV4IDkyODZjMWRjODVlLi5lMDk0NTBmYzMzNSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsCkBAIC00Miw3ICs0Miw3IEBAIG15ICRjb25uc3RyID0g JHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKIAogIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2sgdGhh dCBwZ191cGdyYWRlIGZhaWxzIHdoZW4gbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zIGNv bmZpZ3VyZWQKLSMgaW4gdGhlIG5ldyBjbHVzdGVyIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9m IHN1YnNjcmlwdGlvbnMgaW4gdGhlIG9sZAorIyBpbiB0aGUgbmV3IGNsdXN0ZXIgaXMgbGVzcyB0 aGFuIHRoZSBudW1iZXIgb2YgcmVwbGljYXRpb24gb3JpZ2lucyBpbiB0aGUgb2xkCiAjIGNsdXN0 ZXIuCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIyBJdCBpcyBzdWZmaWNpZW50IHRvIHVzZSBkaXNhYmxlZCBzdWJzY3JpcHRpb24gdG8g dGVzdCB1cGdyYWRlIGZhaWx1cmUuCkBAIC03NCw3ICs3NCw3IEBAIGNvbW1hbmRfY2hlY2tzX2Fs bCgKIAldLAogCTEsCiAJWwotCQlxci8ibWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zIiBc KDBcKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHN1YnNj cmlwdGlvbnMgXCgxXCkgaW4gdGhlIG9sZCBjbHVzdGVyLworCQlxci8ibWF4X2FjdGl2ZV9yZXBs aWNhdGlvbl9vcmlnaW5zIiBcKDBcKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0 aGUgbnVtYmVyIG9mIHJlcGxpY2F0aW9uIG9yaWdpbnMgXCgxXCkgaW4gdGhlIG9sZCBjbHVzdGVy LwogCV0sCiAJW3FyLy9dLAogCSdydW4gb2YgcGdfdXBncmFkZSB3aGVyZSB0aGUgbmV3IGNsdXN0 ZXIgaGFzIGluc3VmZmljaWVudCBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMnCkBAIC0z MDEsOCArMzAxLDM4IEBAIGlzKCRyZXN1bHQsIHFxKHQpLCAiQ2hlY2sgdGhhdCB0aGUgdGFibGUg aXMgaW4gaW5pdCBzdGF0ZSIpOwogCiAjIEdldCB0aGUgcmVwbGljYXRpb24gb3JpZ2luJ3MgcmVt b3RlX2xzbiBvZiB0aGUgb2xkIHN1YnNjcmliZXIKIG15ICRyZW1vdGVfbHNuID0gJG9sZF9zdWIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgcmVtb3RlX2xzbiBGUk9NIHBnX3JlcGxp Y2F0aW9uX29yaWdpbl9zdGF0dXMgb3MsIHBnX3N1YnNjcmlwdGlvbiBzIFdIRVJFIG9zLmV4dGVy bmFsX2lkID0gJ3BnXycgfHwgcy5vaWQgQU5EIHMuc3VibmFtZSA9ICdyZWdyZXNzX3N1YjQnIgor ICAgICJTRUxFQ1Qgb3MucmVtb3RlX2xzbgorICAgICBGUk9NIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9zdGF0dXMgb3MKKyAgICAgSk9JTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW4gbyBPTiBvLnJvaWRl bnQgPSBvcy5sb2NhbF9pZAorICAgICBKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIG8ucm9uYW1l ID0gJ3BnXycgfHwgcy5vaWQ6OnRleHQKKyAgICAgV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3Nf c3ViNCciCiApOworCisjIEdldCB0aGUgcmVwbGljYXRpb24gb3JpZ2luIGlkcyAocm9pZGVudCkg Zm9yIGFsbCBzdWJzY3JpcHRpb25zLCBrZXllZCBieQorIyBzdWJzY3JpcHRpb24gbmFtZSAod2hp Y2ggaXMgc3RhYmxlIGFjcm9zcyB1cGdyYWRlLCB1bmxpa2Ugc3Vib2lkKS4gVGhlc2UKKyMgbXVz dCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgdXBncmFkZS4gQSBtaXNtYXRjaCB3b3VsZCBjYXVzZSBzcHVy aW91cworIyB1cGRhdGVfb3JpZ2luX2RpZmZlcnMgY29uZmxpY3RzLgorbXkgJXByZV91cGdyYWRl X3JvaWRlbnQ7CitteSAkcm9pZGVudF9yb3dzID0gJG9sZF9zdWItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorICAgICJTRUxFQ1Qgcy5zdWJuYW1lLCBvLnJvaWRlbnQKKyAgICAgRlJPTSBwZ19zdWJz Y3JpcHRpb24gcworICAgICBKT0lOIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBvIE9OIG8ucm9uYW1l ID0gJ3BnXycgfHwgcy5vaWQ6OnRleHQKKyAgICAgT1JERVIgQlkgcy5zdWJuYW1lIgorKTsKK2Zv ciBteSAkcm93IChzcGxpdCAvXG4vLCAkcm9pZGVudF9yb3dzKQoreworICAgIG15ICgkc3VibmFt ZSwgJHJvaWRlbnQpID0gc3BsaXQgL1x8LywgJHJvdzsKKyAgICAkcHJlX3VwZ3JhZGVfcm9pZGVu dHskc3VibmFtZX0gPSAkcm9pZGVudDsKK30KKworIyBDcmVhdGUgYSB1c2VyIGNyZWF0ZWQgcmVw bGljYXRpb24gb3JpZ2luLCB3aGljaCBzaG91bGQgYWxzbyBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgdXBn cmFkZS4KK215ICR1c2VyX29yaWdpbl9uYW1lID0gJ3JlZ3Jlc3NfdXNlcl9vcmlnaW4nOworJG9s ZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgcGdfcmVwbGljYXRpb25f b3JpZ2luX2NyZWF0ZSgnJHVzZXJfb3JpZ2luX25hbWUnKSIpOworJHByZV91cGdyYWRlX3JvaWRl bnR7JHVzZXJfb3JpZ2luX25hbWV9ID0gJG9sZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor ICAgICJTRUxFQ1Qgcm9pZGVudCBGUk9NIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBXSEVSRSByb25h bWUgPSAnJHVzZXJfb3JpZ2luX25hbWUnIgorKTsKKwogIyBIYXZlIHRoZSBzdWJzY3JpcHRpb24g aW4gZGlzYWJsZWQgc3RhdGUgYmVmb3JlIHVwZ3JhZGUKICRvbGRfc3ViLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3N1YjUgRElTQUJMRSIpOwogCkBA IC0zNzgsNiArNDA4LDM5IEBAIHJlZ3Jlc3Nfc3ViNXxmfGZ8ZiksCiAJImNoZWNrIHRoYXQgdGhl IHN1YnNjcmlwdGlvbidzIHJ1bm5pbmcgc3RhdHVzLCBmYWlsb3ZlciwgYW5kIHJldGFpbl9kZWFk X3R1cGxlcyBhcmUgcHJlc2VydmVkIgogKTsKIAorIyBWZXJpZnkgdGhhdCB0aGUgc3Vic2NyaXB0 aW9uIHJlbGF0ZWQgcmVwbGljYXRpb24gb3JpZ2lucyBhcmUgcHJlc2VydmVkIGFmdGVyIHVwZ3Jh ZGUuCitteSAkcG9zdF9yb2lkZW50X3Jvd3MgPSAkbmV3X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisgICAgIlNFTEVDVCBzLnN1Ym5hbWUsIG8ucm9pZGVudAorICAgICBGUk9NIHBnX3N1YnNj cmlwdGlvbiBzCisgICAgIEpPSU4gcGdfcmVwbGljYXRpb25fb3JpZ2luIG8gT04gby5yb25hbWUg PSAncGdfJyB8fCBzLm9pZDo6dGV4dAorICAgICBPUkRFUiBCWSBzLnN1Ym5hbWUiCispOworCitt eSAlcG9zdF91cGdyYWRlX3JvaWRlbnQ7Citmb3IgbXkgJHJvdyAoc3BsaXQgL1xuLywgJHBvc3Rf cm9pZGVudF9yb3dzKQoreworICAgIG15ICgkc3VibmFtZSwgJHJvaWRlbnQpID0gc3BsaXQgL1x8 LywgJHJvdzsKKwkkcG9zdF91cGdyYWRlX3JvaWRlbnR7JHN1Ym5hbWV9ID0gJHJvaWRlbnQ7Cit9 CisKKyMgSXRlcmF0ZSBvdmVyIHRoZSB1bmlvbiBvZiBwcmUtIGFuZCBwb3N0LXVwZ3JhZGUga2V5 cyBzbyBhIG1pc3Npbmcgb3IKKyMgdW5leHBlY3RlZCBlbnRyeSBvbiBlaXRoZXIgc2lkZSBpcyBj YXVnaHQuCitteSAlYWxsX3N1Ym5hbWVzID0gKCVwcmVfdXBncmFkZV9yb2lkZW50LCAlcG9zdF91 cGdyYWRlX3JvaWRlbnQpOworZm9yIG15ICRzdWJuYW1lIChzb3J0IGtleXMgJWFsbF9zdWJuYW1l cykKK3sKKyAgICBuZXh0IGlmICRzdWJuYW1lIGVxICR1c2VyX29yaWdpbl9uYW1lOworICAgIGlz KCRwb3N0X3VwZ3JhZGVfcm9pZGVudHskc3VibmFtZX0sICRwcmVfdXBncmFkZV9yb2lkZW50eyRz dWJuYW1lfSwKKyAgICAgICAgInJvaWRlbnQgcHJlc2VydmVkIGZvciBzdWJzY3JpcHRpb24gJyRz dWJuYW1lJyBhZnRlciB1cGdyYWRlIik7Cit9CisKKyMgVmVyaWZ5IHRoYXQgdXNlciBjcmVhdGVk IHJlcGxpY2F0aW9uIG9yaWdpbnMgYXJlIHByZXNlcnZlZCBhZnRlciB1cGdyYWRlLgorbXkgJHBv c3RfdXNlcl9yb2lkZW50ID0gJG5ld19zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJT RUxFQ1Qgcm9pZGVudCBGUk9NIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBXSEVSRSByb25hbWUgPSAn JHVzZXJfb3JpZ2luX25hbWUnIgorKTsKK2lzKCRwb3N0X3VzZXJfcm9pZGVudCwgJHByZV91cGdy YWRlX3JvaWRlbnR7JHVzZXJfb3JpZ2luX25hbWV9LAorICAgICJyb2lkZW50IHByZXNlcnZlZCBm b3IgdXNlci1jcmVhdGVkIG9yaWdpbiAnJHVzZXJfb3JpZ2luX25hbWUnIGFmdGVyIHVwZ3JhZGUi CispOworCiAjIFN1YnNjcmlwdGlvbiByZWxhdGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZAogJHJl c3VsdCA9ICRuZXdfc3ViLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHNycmVsaWQs IHNyc3Vic3RhdGUgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIE9SREVSIEJZIHNycmVsaWQiKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDIzMWNlMmNhOTFlLi40ZDkzMDY0MTUyMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMTk1OSwxMCArMTE5NTksNiBAQAogICBwcm92b2xh dGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCiAg IHByb2FyZ3R5cGVzID0+ICd0ZXh0IG9pZCBjaGFyIHBnX2xzbicsCiAgIHByb3NyYyA9PiAnYmlu YXJ5X3VwZ3JhZGVfYWRkX3N1Yl9yZWxfc3RhdGUnIH0sCi17IG9pZCA9PiAnNjMyMCcsIGRlc2Ny ID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUgKHJlbW90ZV9sc24gZm9yIG9yaWdpbiknLAotICBw cm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2UnLCBwcm9pc3N0cmlj dCA9PiAnZicsCi0gIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9y ZXR0eXBlID0+ICd2b2lkJywKLSAgcHJvYXJndHlwZXMgPT4gJ3RleHQgcGdfbHNuJywgcHJvc3Jj ID0+ICdiaW5hcnlfdXBncmFkZV9yZXBsb3JpZ2luX2FkdmFuY2UnIH0sCiB7IG9pZCA9PiAnNjUw NScsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUgKGNvbmZsaWN0IGRldGVjdGlvbiBz bG90KScsCiAgIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9jb25mbGljdF9kZXRl Y3Rpb25fc2xvdCcsCiAgIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBw cm9wYXJhbGxlbCA9PiAndScsCkBAIC0xMTk3Miw2ICsxMTk2OCwxMCBAQAogICBwcm9uYW1lID0+ ICdiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkJywgcHJvdm9sYXRp bGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLCBw cm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdiaW5hcnlfdXBncmFkZV9zZXRfbmV4 dF9wZ19zdWJzY3JpcHRpb25fb2lkJyB9LAoreyBvaWQgPT4gJzkxNjEnLCBkZXNjciA9PiAnZm9y IHVzZSBieSBwZ191cGdyYWRlIChyZXBsaWNhdGlvbiBvcmlnaW4pJywKKyAgcHJvbmFtZSA9PiAn YmluYXJ5X3VwZ3JhZGVfY3JlYXRlX3JlcGxpY2F0aW9uX29yaWdpbicsIHByb2lzc3RyaWN0ID0+ ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5 cGUgPT4gJ3ZvaWQnLAorICBwcm9hcmd0eXBlcyA9PiAnb2lkIHRleHQgcGdfbHNuJywgcHJvc3Jj ID0+ICdiaW5hcnlfdXBncmFkZV9jcmVhdGVfcmVwbGljYXRpb25fb3JpZ2luJyB9LAogCiAjIGNv bnZlcnNpb24gZnVuY3Rpb25zCiB7IG9pZCA9PiAnNDMxMCcsIGRlc2NyID0+ICdpbnRlcm5hbCBj b252ZXJzaW9uIGZ1bmN0aW9uIGZvciBLT0k4UiB0byBXSU4xMjUxJywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3JpZ2luLmgKaW5kZXggYTY5ZmFmNmVhYWYuLjExZWU2MzBmYjI4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vcmlnaW4uaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVhZGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19y ZXBsaWNhdGlvbl9vcmlnaW4uaCIKKyNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogCiB0eXBl ZGVmIHN0cnVjdCB4bF9yZXBsb3JpZ2luX3NldAogewpAQCAtNTUsNiArNTYsOCBAQCBleHRlcm4g UEdETExJTVBPUlQgaW50IG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2luczsKIC8qIEFQSSBm b3IgcXVlcnlpbmcgJiBtYW5pcHVsYXRpbmcgcmVwbGljYXRpb24gb3JpZ2lucyAqLwogZXh0ZXJu IFJlcGxPcmlnaW5JZCByZXBsb3JpZ2luX2J5X25hbWUoY29uc3QgY2hhciAqcm9uYW1lLCBib29s IG1pc3Npbmdfb2spOwogZXh0ZXJuIFJlcGxPcmlnaW5JZCByZXBsb3JpZ2luX2NyZWF0ZShjb25z dCBjaGFyICpyb25hbWUpOworZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9jcmVhdGVfd2l0aF9pZChS ZXBsT3JpZ2luSWQgcm9pZGVudCwgY29uc3QgY2hhciAqcm9uYW1lLAorCQkJCQkJCQkJICBYTG9n UmVjUHRyIHJlbW90ZV9sc24sIFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gdm9pZCByZXBsb3JpZ2lu X2Ryb3BfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBib29sIG1pc3Npbmdfb2ssIGJvb2wgbm93 YWl0KTsKIGV4dGVybiBib29sIHJlcGxvcmlnaW5fYnlfb2lkKFJlcGxPcmlnaW5JZCByb2lkZW50 LCBib29sIG1pc3Npbmdfb2ssCiAJCQkJCQkJICBjaGFyICoqcm9uYW1lKTsKLS0gCjIuNDcuMwoK --0000000000008ea2b1065583bfb2--