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.94.2) (envelope-from ) id 1vHLSs-004LxZ-S7 for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Nov 2025 12:21:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vHLSr-00E3eX-Dc for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Nov 2025 12:21:13 +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.94.2) (envelope-from ) id 1vHLSq-00E3bh-Mb for pgsql-hackers@lists.postgresql.org; Fri, 07 Nov 2025 12:21:13 +0000 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vHLSk-005tvD-2O for pgsql-hackers@postgresql.org; Fri, 07 Nov 2025 12:21:10 +0000 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-5943d20f352so794117e87.0 for ; Fri, 07 Nov 2025 04:21:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1762518065; x=1763122865; darn=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=8nv3uQ1mb4eSeZz3X8YAETM644HZBJ/INQcpwJhB6nU=; b=f40LXcyHhIDuD97Pq9Sn/E8V7wFAKwZgbOFKO/N4r25oCdUwQtjsZAu6k8iVW0eYva D9YhsyBlDjtWNab0x/c5i2yuTQTTzECtKiuHnZp9h3mIQOljXcASpS1i/BshGnaw5Ap2 0zXIyGh4SXyZvEZpccoKk2ss6+Wm7z4w2yu5x1q1wZaraBXW4c65lo7zlQ4mmr4AgDng 2BEZ6rUK/PnLBoX74GOH/2eEhNoAG9iRLVyKL5iRH6t8ppts709djUArvltYahr+JYSm GE5iQMYqNl2irrY/FTH0MuiwsdN4ZYF69h463KvaAzUuNJ4uPYWhJZvm728O9ebFJwAD 3zRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762518065; x=1763122865; 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=8nv3uQ1mb4eSeZz3X8YAETM644HZBJ/INQcpwJhB6nU=; b=OaB0kpiNOq+SWyNoBDku4U8G5j++uPjNNc0PAlNd4gMINwjSmV76UEmDjDExtmT6Ul vk6v/S0hmylms6uXtwERHXm9GVKEZfCeJzXi+QkMuSKbrTnv3WdLjtcAXh7jTOgoME97 hxqtc77BB/EzDYAk1hMnxCcR8Tr5e4Z22CW9068V6ZeAKqgp1c4eRW6pL5ecnJmGc/+s CXWKqmDm1X9bkrtXy1cQEz0qob8oFGhkpCnULdkAZDbc7ZaCGKWJVpBLvugif/kQFsWE ds6p7c2e+UaeDSnaBNq2nhyhGDvyKy4Ghw45UlDCNHnX3okKREEu9GHgMQx3ZqRKDxto MVYg== X-Forwarded-Encrypted: i=1; AJvYcCWAPjOVDvYFCSXjBpe81iDsPF4bWf/mXmjEpot1LENHhD+OIxJxwbcNkvVQ2CVXwpIbQEbDnwS7tNdNCCzB@postgresql.org X-Gm-Message-State: AOJu0YyxYNFVFZXZye9Nr9GnryTIDfxRhOi8GLvjFIpQ4jHmexeWBlxw EqlBSeKJsSZwnMh7TBKdLfqigHYtZppqTNIbllr2cLURV4zJZWl5EYFKwU4Crl+NLrSfTColN9l hTHCNj05O/tZEm4X2ha2+2ALTI4eer+/4PrRKLD62 X-Gm-Gg: ASbGncuX8MgoHzIRVFxACPTKOI4OFyz7jXXQ9QtLJGOHFEti8+aKAx7u5eY42yvyvAa V0ZuS3zLhEoR1xcgrKJtscrPUxsAAzYLkeYVycVSEg5qnZAUsKnO5mt+4J1XS7GKJPq2wqC/2W2 X+wdOJNmztuTMesLtqevbPJvRfRqDlTy0yQCOmHSbFG22kfb7jD3yXHq5dLusD7vihGat1r7EYE Nb1ZrhuD1rvxyMfRUrv+qHiAGcFnklbFbBDLtc14U7/5tKg4zcohu/FVGBa6dz+MN7AwQs7xg== X-Google-Smtp-Source: AGHT+IHVK9jMbz0+fmI/VCtfnCbWeBMyczNI2g7bYjWSTpiqUkQm0ZD+78VOn6CTtdoBNLwaSDQs+SbNz3zgS7P5aNo= X-Received: by 2002:a05:6512:3c91:b0:594:5206:c1e2 with SMTP id 2adb3069b0e04-59456ba9b86mr956139e87.57.1762518064757; Fri, 07 Nov 2025 04:21:04 -0800 (PST) MIME-Version: 1.0 References: <202510151529.s3fpwsgben57@alvherre.pgsql> In-Reply-To: From: Akshay Joshi Date: Fri, 7 Nov 2025 17:50:52 +0530 X-Gm-Features: AWmQ_blUYObgCLnEcIuoaqGwfcfi01huTt6YFBvcJSyJE28sCxkS_R_yQ8aUtek Message-ID: Subject: Re: [PATCH] Add pg_get_policy_ddl() function to reconstruct CREATE POLICY statement To: Mark Wong Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000002924e40643003796" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002924e40643003796 Content-Type: multipart/alternative; boundary="0000000000002924e20643003794" --0000000000002924e20643003794 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Hackers, Make the pretty flag a default parameter by adding CREATE OR REPLACE FUNCTION in system_functions.sql. Attached is the v7 patch, which is ready for review. On Mon, Nov 3, 2025 at 5:17=E2=80=AFPM Akshay Joshi wrote: > Hi Hackers, > > Added a new #define GET_DDL_PRETTY_FLAGS because the existing #define > GET_PRETTY_FLAGS is not suitable for formatting reconstructed DDLs. The > existing #define GET_PRETTY_FLAGS always indents the code, regardless of > whether the flag is set to true or false, which is not the desired > behavior for pg_get__ddl functions. > > Updated the logic of the get_formatted_string function based on Tim > Waizenegger=E2=80=99s suggestion. > > I am attaching the new v6 patch, which is ready for review. > > On Tue, Oct 28, 2025 at 3:08=E2=80=AFPM Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> Thanks, Mark, for your review comments and the updated patch. >> >> I=E2=80=99ve incorporated your changes and prepared a combined v5 patch.= The v5 >> patch is attached for further review. >> >> On Mon, Oct 27, 2025 at 10:15=E2=80=AFPM Mark Wong w= rote: >> >>> Hi everyone, >>> >>> On Thu, Oct 16, 2025 at 01:47:53PM +0530, Akshay Joshi wrote: >>> > >>> > >>> > On Wed, Oct 15, 2025 at 10:55=E2=80=AFPM =C3=81lvaro Herrera >>> wrote: >>> > >>> > Hello, >>> > >>> > I have reviewed this patch before and provided a number of >>> comments that >>> > have been addressed by Akshay (so I encourage you to list my name >>> and >>> > this address in a Reviewed-by trailer line in the commit >>> message). One >>> > thing I had not noticed is that while this function has a "pretty= " >>> flag, >>> > it doesn't use it to pass anything to pg_get_expr_worker()'s >>> prettyFlags >>> > argument, and I think it should -- probably just >>> > >>> > prettyFlags =3D GET_PRETTY_FLAGS(pretty); >>> > >>> > same as pg_get_querydef() does. >>> >>> Kinda sorta similar thought, I've noticed some existing functions like >>> pg_get_constraintdef make the "pretty" flag optional, so I'm wondering >>> if that scheme is also preferred here. >>> >>> I've attached a small diff to the original >>> 0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch to >>> illustrate the additional work to follow suit, if so desired. >>> >>> Regards, >>> Mark >>> -- >>> Mark Wong >>> EDB https://enterprisedb.com >>> >> --0000000000002924e20643003794 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Make the pretty flag a default parameter= by adding CREATE OR REPLACE FUNCTION in system_functions.sql.
Attached= is the v7 patch, which is ready for review.


On Mo= n, Nov 3, 2025 at 5:17=E2=80=AFPM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi H= ackers,

Added a new=C2=A0#define GET_DDL_PRETTY_FLAGS= =C2=A0because the existing=C2=A0#define GET_PRETTY_FLAGS=C2=A0= is not suitable for formatting reconstructed DDLs. The existing #define=C2= =A0GET_PRETTY_FLAGS=C2=A0alway= s indents the code, regardless of whether the flag is set to=C2=A0tru= e=C2=A0or=C2=A0false, which is not the desired behavior= for=C2=A0pg_get_<object>_ddl=C2=A0functions.

Upd= ated the logic of the=C2=A0get_formatted_string=C2=A0function = based on Tim Waizenegger=E2=80=99s suggestion.

I am attaching the ne= w v6 patch, which is ready for review.

=
On Tue, Oct 28, 2025 at 3:08=E2=80=AF= PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:

Thanks, Mark, = for your review comments and the updated patch.

I=E2=80=99ve incorporated your changes and prepared a combined v5 patch.= The v5 patch is attached for further review.


--0000000000002924e20643003794-- --0000000000002924e40643003796 Content-Type: application/octet-stream; name="v7-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Disposition: attachment; filename="v7-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhotqiey0 RnJvbSA4YmE4NDFjOTExMjdmOTc3NDkwNzU4NmY5NGY3MzIzMjFiODY3ZmIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBa3NoYXkgSm9zaGkgPGFrc2hheS5qb3NoaUBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBGcmksIDEwIE9jdCAyMDI1IDE1OjQ2OjEzICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2N10gQWRkIHBnX2dldF9wb2xpY3lfZGRsKCkgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3Qg Q1JFQVRFCiBQT0xJQ1kgc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3RlbSBmdW5jdGlvbjoKcGdfZ2V0X3Bv bGljeV9kZGwocmVnY2xhc3MgdGFibGUsIG5hbWUgcG9saWN5X25hbWUsIGJvb2wgcHJldHR5KSwK d2hpY2ggcmVjb25zdHJ1Y3RzIHRoZSBDUkVBVEUgUE9MSUNZIHN0YXRlbWVudCBmb3IgdGhlIHNw ZWNpZmllZCBwb2xpY3kuCgpVc2FnZSBleGFtcGxlczoKU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRs KCdybHNfdGFibGUnLCAncG9sMScpOyAtLSBub24tcHJldHR5IGZvcm1hdHRlZCBEREwKU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGFibGUnLCAncG9sMScsIHRydWUpOyAgLS0gcHJldHR5 IGZvcm1hdHRlZCBEREwKClJlZmVyZW5jZTogUEctMTYzCkF1dGhvcjogQWtzaGF5IEpvc2hpIDxh a3NoYXkuam9zaGlAZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVy YSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZv LnNnbWwgICAgICAgICAgfCAgNTUgKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9m dW5jdGlvbnMuc3FsICB8ICAgNiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYyAgICAg ICAgICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAg ICAgIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3BvbGljeS5o ICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJp dHkub3V0IHwgMjA3ICsrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cm93c2VjdXJpdHkuc3FsICAgICAgfCAgODAgKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNTkx IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv ZnVuYy9mdW5jLWluZm8uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCmlu ZGV4IGQ0NTA4MTE0YTQ4Li5lZGZkOTM4MWJlMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1 bmMvZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwK QEAgLTM3OTcsNCArMzc5Nyw1OSBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0 Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0iZnVuY3Rp b25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8 L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVuY3Rpb25zIGRlc2NyaWJlZCBpbiA8eHJl ZiBsaW5rZW5kPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiLz4KKyAgICByZXR1cm4g dGhlIERhdGEgRGVmaW5pdGlvbiBMYW5ndWFnZSAoRERMKSBzdGF0ZW1lbnQgZm9yIGFueSBnaXZl biBkYXRhYmFzZSBvYmplY3QuCisgICAgVGhpcyBmZWF0dXJlIGlzIGltcGxlbWVudGVkIGFzIGEg c2V0IG9mIGRpc3RpbmN0IGZ1bmN0aW9ucyBmb3IgZWFjaCBvYmplY3QgdHlwZS4KKyAgIDwvcGFy YT4KKworICAgPHRhYmxlIGlkPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiPgorICAg IDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29s cz0iMSI+CisgICAgIDx0aGVhZD4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1 bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgRnVu Y3Rpb24KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIERlc2NyaXB0aW9u CisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90aGVhZD4KKwor ICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+ CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfcG9saWN5X2RkbDwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfcG9saWN5X2RkbDwvZnVuY3Rp b24+CisgICAgICAgICggPHBhcmFtZXRlcj50YWJsZTwvcGFyYW1ldGVyPiA8dHlwZT5yZWdjbGFz czwvdHlwZT4sIDxwYXJhbWV0ZXI+cG9saWN5X25hbWU8L3BhcmFtZXRlcj4gPHR5cGU+bmFtZTwv dHlwZT4sIDxvcHRpb25hbD4gPHBhcmFtZXRlcj5wcmV0dHk8L3BhcmFtZXRlcj4gPHR5cGU+Ym9v bGVhbjwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0 dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0 cnVjdHMgdGhlIDxjb21tYW5kPkNSRUFURSBQT0xJQ1k8L2NvbW1hbmQ+IHN0YXRlbWVudCBmcm9t IHRoZQorICAgICAgICBzeXN0ZW0gY2F0YWxvZ3MgZm9yIGEgc3BlY2lmaWVkIHRhYmxlIGFuZCBw b2xpY3kgbmFtZS4gVGhlIHJlc3VsdCBpcyBhCisgICAgICAgIGNvbXByZWhlbnNpdmUgPGNvbW1h bmQ+Q1JFQVRFIFBPTElDWTwvY29tbWFuZD4gc3RhdGVtZW50LgorICAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+CisgICA8L3Rh YmxlPgorCisgIDxwYXJhPgorICAgTW9zdCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgcmVjb25zdHJ1 Y3QgKGRlY29tcGlsZSkgZGF0YWJhc2Ugb2JqZWN0cyBoYXZlIGFuCisgICBvcHRpb25hbCA8cGFy YW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiBmbGFnLCB3aGljaCBpZgorICAgPGxpdGVyYWw+dHJ1 ZTwvbGl0ZXJhbD4gY2F1c2VzIHRoZSByZXN1bHQgdG8gYmUKKyAgIDxxdW90ZT5wcmV0dHktcHJp bnRlZDwvcXVvdGU+LiBQcmV0dHktcHJpbnRpbmcgYWRkcyB0YWIgY2hhcmFjdGVyIGFuZCBuZXcK KyAgIGxpbmUgY2hhcmFjdGVyIGZvciBsZWdpYmlsaXR5LiBQYXNzaW5nIDxsaXRlcmFsPmZhbHNl PC9saXRlcmFsPiBmb3IgdGhlCisgICA8cGFyYW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiBwYXJh bWV0ZXIgeWllbGRzIHRoZSBzYW1lIHJlc3VsdCBhcyBvbWl0dGluZworICAgdGhlIHBhcmFtZXRl ci4KKyAgPC9wYXJhPgorCisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IDJkOTQ2ZDZkOWU5Li5hNWUyMjM3NDY2OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAorKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCkBAIC02NTcsNiArNjU3 LDEyIEBAIExBTkdVQUdFIElOVEVSTkFMCiBTVFJJQ1QgVk9MQVRJTEUgUEFSQUxMRUwgVU5TQUZF CiBBUyAncGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAnOwogCitDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTgorICBwZ19nZXRfcG9saWN5X2RkbCh0YWJsZUlEIHJlZ2NsYXNzLCBw b2xpY3lOYW1lIG5hbWUsIHByZXR0eSBib29sIERFRkFVTFQgZmFsc2UpCitSRVRVUk5TIHRleHQK K0xBTkdVQUdFIElOVEVSTkFMCitBUyAncGdfZ2V0X3BvbGljeV9kZGwnOworCiAtLQogLS0gVGhl IGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGZ1bmN0aW9ucyBtZWFuIHRoYXQgYW55b25lIGNhbiBl eGVjdXRlIHRoZW0uCiAtLSBBIG51bWJlciBvZiBmdW5jdGlvbnMgc2hvdWxkbid0IGJlIGV4ZWN1 dGFibGUgYnkganVzdCBhbnlvbmUsIGJ1dCByYXRoZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3BvbGljeS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMKaW5kZXgg ODMwNTY5NjBmZTQuLjFhYmUwYzQ0MzUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wb2xpY3kuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYwpAQCAtMTI4LDYg KzEyOCwzMyBAQCBwYXJzZV9wb2xpY3lfY29tbWFuZChjb25zdCBjaGFyICpjbWRfbmFtZSkKIAly ZXR1cm4gcG9sY21kOwogfQogCisvKgorICogZ2V0X3BvbGljeV9jbWRfbmFtZSAtCisgKgkgaGVs cGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgY2hhciByZXByZXNlbnRhdGlvbiB0byBmdWxsIGNvbW1h bmQgc3RyaW5ncy4KKyAqCisgKiBjbWQgLSAgVmFsaWQgdmFsdWVzIGFyZSAnKicsICdyJywgJ2En LCAndycgYW5kICdkJy4KKyAqCisgKi8KK2NoYXIgKgorZ2V0X3BvbGljeV9jbWRfbmFtZShjaGFy IGNtZCkKK3sKKwlzd2l0Y2ggKGNtZCkKKwl7CisJCWNhc2UgJyonOgorCQkJcmV0dXJuICJBTEwi OworCQljYXNlIEFDTF9TRUxFQ1RfQ0hSOgorCQkJcmV0dXJuICJTRUxFQ1QiOworCQljYXNlIEFD TF9JTlNFUlRfQ0hSOgorCQkJcmV0dXJuICJJTlNFUlQiOworCQljYXNlIEFDTF9VUERBVEVfQ0hS OgorCQkJcmV0dXJuICJVUERBVEUiOworCQljYXNlIEFDTF9ERUxFVEVfQ0hSOgorCQkJcmV0dXJu ICJERUxFVEUiOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBwb2xp Y3kgY29tbWFuZCIpOworCX0KK30KKwogLyoKICAqIHBvbGljeV9yb2xlX2xpc3RfdG9fYXJyYXkK ICAqCSBoZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIGxpc3Qgb2YgUm9sZVNwZWNzIHRvIGFu IGFycmF5IG9mCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNTU2YWIwNTdlNWEuLmQ4 ZTE0NWY5ZTRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMywxMiArMzMsMTQg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9j LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3BvbGljeS5oIgogI2luY2x1ZGUgImNvbW1vbi9rZXl3b3Jkcy5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTk0 LDYgKzk2LDEwIEBACiAJKChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFH X0lOREVOVCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBcCiAJIDogUFJFVFRZRkxBR19JTkRFTlQpCiAK KyNkZWZpbmUgR0VUX0RETF9QUkVUVFlfRkxBR1MocHJldHR5KSBcCisJKChwcmV0dHkpID8gKFBS RVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFHX0lOREVOVCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBc CisJIDogMCkKKwogLyogRGVmYXVsdCBsaW5lIGxlbmd0aCBmb3IgcHJldHR5LXByaW50IHdyYXBw aW5nOiAwIG1lYW5zIHdyYXAgYWx3YXlzICovCiAjZGVmaW5lIFdSQVBfQ09MVU1OX0RFRkFVTFQJ CTAKIApAQCAtNTQ2LDYgKzU1MiwxMiBAQCBzdGF0aWMgdm9pZCBnZXRfanNvbl90YWJsZV9uZXN0 ZWRfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQbGFuICpwbGFuLAogCQkJCQkJCQkJ CSAgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgYm9vbCBzaG93aW1wbGlj aXQsCiAJCQkJCQkJCQkJICBib29sIG5lZWRjb21tYSk7CitzdGF0aWMgdm9pZCBnZXRfZm9ybWF0 dGVkX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZiwKKwkJCQkJCQkJIGludCBwcmV0dHlGbGFncywKKwkJ CQkJCQkJIGludCBub09mVGFiQ2hhcnMsCisJCQkJCQkJCSBjb25zdCBjaGFyICpmbXQsLi4uKSBw Z19hdHRyaWJ1dGVfcHJpbnRmKDQsIDUpOworc3RhdGljIGNoYXIgKnBnX2dldF9wb2xpY3lfZGRs X3dvcmtlcihPaWQgdGFibGVJRCwgTmFtZSBwb2xpY3lOYW1lLAorCQkJCQkJCQkJICBpbnQgcHJl dHR5RmxhZ3MpOwogCiAjZGVmaW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIg OiAiT05MWSAiKQogCkBAIC0xMzc0MywzICsxMzc1NSwyMDMgQEAgZ2V0X3JhbmdlX3BhcnRib3Vu ZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi5kYXRhOwogfQorCisv KgorICogZ2V0X2Zvcm1hdHRlZF9zdHJpbmcKKyAqCisgKiBSZXR1cm4gYSBmb3JtYXR0ZWQgdmVy c2lvbiBvZiB0aGUgc3RyaW5nLgorICoKKyAqIHByZXR0eUZsYWdzIC0gQmFzZWQgb24gcHJldHR5 RmxhZ3MgdGhlIG91dHB1dCBpbmNsdWRlcyB0YWJzIChcdCkgYW5kCisgKiAgICAgICAgICAgICAg IG5ld2xpbmVzIChcbikuCisgKiBub09mVGFiQ2hhcnMgLSBpbmRlbnQgd2l0aCBzcGVjaWZpZWQg bm8gb2YgdGFicy4KKyAqIGZtdCAtIHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nIHVzZWQgYnkg YXBwZW5kU3RyaW5nSW5mb1ZBLgorICovCitzdGF0aWMgdm9pZAorZ2V0X2Zvcm1hdHRlZF9zdHJp bmcoU3RyaW5nSW5mbyBidWYsIGludCBwcmV0dHlGbGFncywgaW50IG5vT2ZUYWJDaGFycywgY29u c3QgY2hhciAqZm10LC4uLikKK3sKKwl2YV9saXN0CQlhcmdzOworCisJaWYgKHByZXR0eUZsYWdz ICYgUFJFVFRZRkxBR19JTkRFTlQpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdc bicpOworCQkvKiBJbmRlbnQgd2l0aCB0YWJzICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbm9P ZlRhYkNoYXJzOyBpKyspCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1x0Jyk7 CisJCX0KKwl9CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisKKwl2 YV9zdGFydChhcmdzLCBmbXQpOworCWFwcGVuZFN0cmluZ0luZm9WQShidWYsIGZtdCwgYXJncyk7 CisJdmFfZW5kKGFyZ3MpOworfQorCisvKgorICogcGdfZ2V0X3BvbGljeV9kZGwKKyAqCisgKiBH ZW5lcmF0ZSBhIENSRUFURSBQT0xJQ1kgc3RhdGVtZW50IGZvciB0aGUgc3BlY2lmaWVkIHBvbGlj eS4KKyAqCisgKiB0YWJsZUlEIC0gVGFibGUgSUQgb2YgdGhlIHBvbGljeS4KKyAqIHBvbGljeU5h bWUgLSBOYW1lIG9mIHRoZSBwb2xpY3kgZm9yIHdoaWNoIHRvIGdlbmVyYXRlIHRoZSBEREwuCisg KiBwcmV0dHkgLSBJZiB0cnVlLCBmb3JtYXQgdGhlIERETCB3aXRoIGluZGVudGF0aW9uIGFuZCBs aW5lIGJyZWFrcy4KKyAqLworRGF0dW0KK3BnX2dldF9wb2xpY3lfZGRsKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJT2lkCQkJdGFibGVJRCA9IFBHX0dFVEFSR19PSUQoMCk7CisJTmFtZQkJcG9saWN5 TmFtZSA9IFBHX0dFVEFSR19OQU1FKDEpOworCWJvb2wJCXByZXR0eSA9IFBHX0dFVEFSR19CT09M KDIpOworCWludAkJCXByZXR0eUZsYWdzOworCWNoYXIJICAgKnJlczsKKworCXByZXR0eUZsYWdz ID0gR0VUX0RETF9QUkVUVFlfRkxBR1MocHJldHR5KTsKKwlyZXMgPSBwZ19nZXRfcG9saWN5X2Rk bF93b3JrZXIodGFibGVJRCwgcG9saWN5TmFtZSwgcHJldHR5RmxhZ3MpOworCisJaWYgKHJlcyA9 PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdf dG9fdGV4dChyZXMpKTsKK30KKworc3RhdGljIGNoYXIgKgorcGdfZ2V0X3BvbGljeV9kZGxfd29y a2VyKE9pZCB0YWJsZUlELCBOYW1lIHBvbGljeU5hbWUsIGludCBwcmV0dHlGbGFncykKK3sKKwli b29sCQlhdHRySXNOdWxsOworCURhdHVtCQl2YWx1ZURhdHVtOworCUhlYXBUdXBsZQl0dXBsZVBv bGljeTsKKwlSZWxhdGlvbglwZ1BvbGljeVJlbDsKKwljaGFyCSAgICp0YXJnZXRUYWJsZTsKKwlT Y2FuS2V5RGF0YSBza2V5WzJdOworCVN5c1NjYW5EZXNjIHNzY2FuOworCUZvcm1fcGdfcG9saWN5 IHBvbGljeUZvcm07CisJU3RyaW5nSW5mb0RhdGEgYnVmOworCisJLyogVmFsaWRhdGUgdGhhdCB0 aGUgcmVsYXRpb24gZXhpc3RzICovCisJaWYgKCFPaWRJc1ZhbGlkKHRhYmxlSUQpIHx8IGdldF9y ZWxfbmFtZSh0YWJsZUlEKSA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWluaXRTdHJpbmdJ bmZvKCZidWYpOworCisJdGFyZ2V0VGFibGUgPSBnZW5lcmF0ZV9xdWFsaWZpZWRfcmVsYXRpb25f bmFtZSh0YWJsZUlEKTsKKwkvKiBGaW5kIHBvbGljeSB0byBiZWdpbiBzY2FuICovCisJcGdQb2xp Y3lSZWwgPSB0YWJsZV9vcGVuKFBvbGljeVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwkvKiBTZXQga2V5IC0gcG9saWN5J3MgcmVsYXRpb24gaWQuICovCisJU2NhbktleUluaXQoJnNr ZXlbMF0sCisJCQkJQW51bV9wZ19wb2xpY3lfcG9scmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0odGFibGVJRCkpOworCisJLyog U2V0IGtleSAtIHBvbGljeSdzIG5hbWUuICovCisJU2NhbktleUluaXQoJnNrZXlbMV0sCisJCQkJ QW51bV9wZ19wb2xpY3lfcG9sbmFtZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfTkFN RUVRLAorCQkJCUNTdHJpbmdHZXREYXR1bShOYW1lU3RyKCpwb2xpY3lOYW1lKSkpOworCisJc3Nj YW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdQb2xpY3lSZWwsCisJCQkJCQkJICAgUG9saWN5UG9s cmVsaWRQb2xuYW1lSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMiwKKwkJCQkJCQkgICBza2V5KTsKKwor CXR1cGxlUG9saWN5ID0gc3lzdGFibGVfZ2V0bmV4dChzc2Nhbik7CisJLyogQ2hlY2sgdGhhdCB0 aGUgcG9saWN5IGlzIGZvdW5kLCByYWlzZSBhbiBlcnJvciBpZiBub3QuICovCisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHR1cGxlUG9saWN5KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBvbGljeSBcIiVzXCIg Zm9yIHRhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlOYW1lU3RyKCpwb2xpY3lO YW1lKSwKKwkJCQkJCXRhcmdldFRhYmxlKSkpOworCisJcG9saWN5Rm9ybSA9IChGb3JtX3BnX3Bv bGljeSkgR0VUU1RSVUNUKHR1cGxlUG9saWN5KTsKKworCS8qIEJ1aWxkIHRoZSBDUkVBVEUgUE9M SUNZIHN0YXRlbWVudCAqLworCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBQT0xJQ1kg JXMgT04gJXMiLAorCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKCpwb2xpY3lOYW1lKSks CisJCQkJCSB0YXJnZXRUYWJsZSk7CisKKwkvKiBDaGVjayB0aGUgdHlwZSBpcyBQRVJNSVNTSVZF IG9yIFJFU1RSSUNUSVZFICovCisJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5Rmxh Z3MsIDEsCisJCQkJCQkgcG9saWN5Rm9ybS0+cG9scGVybWlzc2l2ZSA/ICJBUyBQRVJNSVNTSVZF IiA6ICJBUyBSRVNUUklDVElWRSIpOworCisJLyogQ2hlY2sgY29tbWFuZCB0byB3aGljaCB0aGUg cG9saWN5IGFwcGxpZXMgKi8KKwlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVmLCBwcmV0dHlGbGFn cywgMSwgIkZPUiAlcyIsCisJCQkJCQkgZ2V0X3BvbGljeV9jbWRfbmFtZShwb2xpY3lGb3JtLT5w b2xjbWQpKTsKKworCS8qIENoZWNrIGlmIHRoZSBwb2xpY3kgaGFzIGEgVE8gbGlzdCAqLworCXZh bHVlRGF0dW0gPSBoZWFwX2dldGF0dHIodHVwbGVQb2xpY3ksCisJCQkJCQkJICBBbnVtX3BnX3Bv bGljeV9wb2xyb2xlcywKKwkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IocGdQb2xpY3lSZWwpLAor CQkJCQkJCSAgJmF0dHJJc051bGwpOworCWlmICghYXR0cklzTnVsbCkKKwl7CisJCUFycmF5VHlw ZSAgKnBvbGljeV9yb2xlcyA9IERhdHVtR2V0QXJyYXlUeXBlUENvcHkodmFsdWVEYXR1bSk7CisJ CWludAkJCW5pdGVtcyA9IEFSUl9ESU1TKHBvbGljeV9yb2xlcylbMF07CisJCU9pZAkJICAgKnJv bGVzID0gKE9pZCAqKSBBUlJfREFUQV9QVFIocG9saWN5X3JvbGVzKTsKKwkJU3RyaW5nSW5mb0Rh dGEgcm9sZV9uYW1lczsKKworCQlpbml0U3RyaW5nSW5mbygmcm9sZV9uYW1lcyk7CisKKwkJZm9y IChpbnQgaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwkJeworCQkJaWYgKE9pZElzVmFsaWQocm9s ZXNbaV0pKQorCQkJeworCQkJCWNoYXIJICAgKnJvbGVuYW1lID0gR2V0VXNlck5hbWVGcm9tSWQo cm9sZXNbaV0sIGZhbHNlKTsKKworCQkJCWlmIChpID4gMCkKKwkJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmcm9sZV9uYW1lcywgIiwgIik7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cm9sZV9uYW1lcywgcm9sZW5hbWUpOworCQkJfQorCQl9CisKKwkJaWYgKHJvbGVfbmFtZXMubGVu ID4gMCkKKwkJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0eUZsYWdzLCAxLCAiVE8g JXMiLCByb2xlX25hbWVzLmRhdGEpOworCQllbHNlCisKKwkJCS8qCisJCQkgKiBXaGVuIG5vIHNw ZWNpZmljIHJvbGUgaXMgcHJvdmlkZWQsIGdlbmVyYXRlIHRoZSBUTyBjbGF1c2Ugd2l0aAorCQkJ ICogdGhlIFBVQkxJQyByb2xlLgorCQkJICovCisJCQlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVm LCBwcmV0dHlGbGFncywgMSwgIlRPIFBVQkxJQyIpOworCX0KKworCS8qIENoZWNrIGlmIHRoZSBw b2xpY3kgaGFzIGEgVVNJTkcgZXhwciAqLworCXZhbHVlRGF0dW0gPSBoZWFwX2dldGF0dHIodHVw bGVQb2xpY3ksCisJCQkJCQkJICBBbnVtX3BnX3BvbGljeV9wb2xxdWFsLAorCQkJCQkJCSAgUmVs YXRpb25HZXREZXNjcihwZ1BvbGljeVJlbCksCisJCQkJCQkJICAmYXR0cklzTnVsbCk7CisJaWYg KCFhdHRySXNOdWxsKQorCXsKKwkJdGV4dAkgICAqZXhwcnRleHQgPSBEYXR1bUdldFRleHRQUCh2 YWx1ZURhdHVtKTsKKwkJdGV4dAkgICAqdXNpbmdFeHByZXNzaW9uID0gcGdfZ2V0X2V4cHJfd29y a2VyKGV4cHJ0ZXh0LAorCQkJCQkJCQkJCQkJCQkgcG9saWN5Rm9ybS0+cG9scmVsaWQsCisJCQkJ CQkJCQkJCQkJCSBwcmV0dHlGbGFncyk7CisKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1Ziwg cHJldHR5RmxhZ3MsIDEsICJVU0lORyAoJXMpIiwKKwkJCQkJCQkgdGV4dF90b19jc3RyaW5nKHVz aW5nRXhwcmVzc2lvbikpOworCX0KKworCS8qIENoZWNrIGlmIHRoZSBwb2xpY3kgaGFzIGEgV0lU SCBDSEVDSyBleHByICovCisJdmFsdWVEYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBsZVBvbGljeSwK KwkJCQkJCQkgIEFudW1fcGdfcG9saWN5X3BvbHdpdGhjaGVjaywKKwkJCQkJCQkgIFJlbGF0aW9u R2V0RGVzY3IocGdQb2xpY3lSZWwpLAorCQkJCQkJCSAgJmF0dHJJc051bGwpOworCWlmICghYXR0 cklzTnVsbCkKKwl7CisJCXRleHQJICAgKmV4cHJ0ZXh0ID0gRGF0dW1HZXRUZXh0UFAodmFsdWVE YXR1bSk7CisJCXRleHQJICAgKmNoZWNrRXhwcmVzc2lvbiA9IHBnX2dldF9leHByX3dvcmtlcihl eHBydGV4dCwKKwkJCQkJCQkJCQkJCQkJIHBvbGljeUZvcm0tPnBvbHJlbGlkLAorCQkJCQkJCQkJ CQkJCQkgcHJldHR5RmxhZ3MpOworCisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0 eUZsYWdzLCAxLCAiV0lUSCBDSEVDSyAoJXMpIiwKKwkJCQkJCQkgdGV4dF90b19jc3RyaW5nKGNo ZWNrRXhwcmVzc2lvbikpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICc7Jyk7 CisKKwkvKiBDbGVhbiB1cC4gKi8KKwlzeXN0YWJsZV9lbmRzY2FuKHNzY2FuKTsKKwl0YWJsZV9j bG9zZShwZ1BvbGljeVJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBidWYuZGF0YTsK K30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDVjZjllMTJmY2I5Li44MTA1MzcyOWZiYSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC00MDIxLDYgKzQwMjEsOSBAQAogICBwcm9uYW1l ID0+ICdwZ19nZXRfZnVuY3Rpb25fc3FsYm9keScsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJv cmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3Bn X2dldF9mdW5jdGlvbl9zcWxib2R5JyB9LAoreyBvaWQgPT4gJzg4MTEnLCBkZXNjciA9PiAnZ2V0 IENSRUFURSBzdGF0ZW1lbnQgZm9yIHBvbGljeScsCisgIHByb25hbWUgPT4gJ3BnX2dldF9wb2xp Y3lfZGRsJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFz cyBuYW1lIGJvb2wnLCBwcm9zcmMgPT4gJ3BnX2dldF9wb2xpY3lfZGRsJyB9LAogCiB7IG9pZCA9 PiAnMTY4NicsIGRlc2NyID0+ICdsaXN0IG9mIFNRTCBrZXl3b3JkcycsCiAgIHByb25hbWUgPT4g J3BnX2dldF9rZXl3b3JkcycsIHByb2Nvc3QgPT4gJzEwJywgcHJvcm93cyA9PiAnNTAwJywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3BvbGljeS5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvcG9saWN5LmgKaW5kZXggZjA2YWExZGY0MzkuLjQwZTQ1YjczOGY0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wb2xpY3kuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9wb2xpY3kuaApAQCAtMzUsNCArMzUsNiBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyByZW5hbWVf cG9saWN5KFJlbmFtZVN0bXQgKnN0bXQpOwogCiBleHRlcm4gYm9vbCByZWxhdGlvbl9oYXNfcG9s aWNpZXMoUmVsYXRpb24gcmVsKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9wb2xpY3lfY21kX25hbWUo Y2hhciBjbWQpOworCiAjZW5kaWYJCQkJCQkJLyogUE9MSUNZX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKaW5kZXggYzk1OGVmNGQ3MGEuLjRlYmUzMjcxMWNk IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dApAQCAtNTEwMSwx MSArNTEwMSwyMTQgQEAgcmVzZXQgcmxzX3Rlc3QuYmxhaDsKIGRyb3AgZnVuY3Rpb24gcmxzX2Yo dGV4dCk7CiBkcm9wIHRhYmxlIHJsc190LCB0ZXN0X3Q7CiAtLQorLS0gVGVzdCBmb3IgcGdfZ2V0 X3BvbGljeV9kZGwodGFibGVOYW1lLCBwb2xpY3lOYW1lLCBwcmV0dHkpIGZ1bmN0aW9uLgorLS0K K0NSRUFURSBUQUJMRSBybHNfdGJsXzEgKAorICAgIGRpZCAgICAgICAgIGludCBwcmltYXJ5IGtl eSwKKyAgICBjaWQgICAgICAgICBpbnQsCisgICAgZGxldmVsICAgICAgaW50IG5vdCBudWxsLAor ICAgIGRhdXRob3IgICAgIG5hbWUsCisgICAgZHRpdGxlICAgICAgdGV4dAorKTsKK0dSQU5UIEFM TCBPTiBybHNfdGJsXzEgVE8gcHVibGljOworQ1JFQVRFIFRBQkxFIHJsc190YmxfMiAoCisgICAg cGd1c2VyICAgICAgbmFtZSBwcmltYXJ5IGtleSwKKyAgICBzZWNsdiAgICAgICBpbnQKKyk7CitH UkFOVCBTRUxFQ1QgT04gcmxzX3RibF8yIFRPIHB1YmxpYzsKKy0tIFRlc3QgUEVSTUlTU0lWRSBh bmQgUkVTVFJJQ1RJVkUKK0NSRUFURSBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMSBBUyBQRVJN SVNTSVZFCisgICAgVVNJTkcgKGRsZXZlbCA8PSAoU0VMRUNUIHNlY2x2IEZST00gcmxzX3RibF8y IFdIRVJFIHBndXNlciA9IGN1cnJlbnRfdXNlcikpOworQ1JFQVRFIFBPTElDWSBybHNfcDIgT04g cmxzX3RibF8xIEFTIFJFU1RSSUNUSVZFIFVTSU5HIChjaWQgPD4gNDQgQU5EIGNpZCA8IDUwKTsK Ky0tIFRlc3QgRk9SIEFMTCB8IFNFTEVDVCB8IElOU0VSVCB8IFVQREFURSB8IERFTEVURQorQ1JF QVRFIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xIEZPUiBBTEwgVVNJTkcgKGRhdXRob3IgPSBj dXJyZW50X3VzZXIpOworQ1JFQVRFIFBPTElDWSBybHNfcDQgT04gcmxzX3RibF8xIEZPUiBTRUxF Q1QgVVNJTkcgKGNpZCAlIDIgPSAwKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3A1IE9OIHJsc190Ymxf MSBGT1IgSU5TRVJUIFdJVEggQ0hFQ0sgKGNpZCAlIDIgPSAxKTsKK0NSRUFURSBQT0xJQ1kgcmxz X3A2IE9OIHJsc190YmxfMSBGT1IgVVBEQVRFIFVTSU5HIChjaWQgJSAyID0gMCk7CitDUkVBVEUg UE9MSUNZIHJsc19wNyBPTiBybHNfdGJsXzEgRk9SIERFTEVURSBVU0lORyAoY2lkIDwgOCk7Cist LSBUZXN0IFRPIHsgcm9sZV9uYW1lIC4uLiB9CitDUkVBVEUgUE9MSUNZIHJsc19wOCBPTiBybHNf dGJsXzEgVE8gcmVncmVzc19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxpY2UgVVNJTkcgKHRydWUp OworQ1JFQVRFIFBPTElDWSBybHNfcDkgT04gcmxzX3RibF8xIFRPIHJlZ3Jlc3NfcmxzX2V4ZW1w dF91c2VyIFdJVEggQ0hFQ0sgKGNpZCA9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIpKTsK Ky0tIFRlc3QgTlVMTCB2YWx1ZQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKE5VTEwsICdybHNf cDEnKTsKKyBwZ19nZXRfcG9saWN5X2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCd0YWIxJywgTlVMTCk7CitFUlJPUjogIHJl bGF0aW9uICJ0YWIxIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcGdfZ2V0X3BvbGlj eV9kZGwoJ3RhYjEnLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbChOVUxMLCBOVUxMKTsKKyBwZ19nZXRfcG9saWN5X2Rk bCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gVGVzdCAtMSBhcyB0YWJs ZSBvaWQKKyBTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoLTEsICdybHNfcDEnKTsKKyBwZ19nZXRf cG9saWN5X2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gVGFibGUg ZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEn KTsKK0VSUk9SOiAgcmVsYXRpb24gInRhYjEiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVD VCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIFBvbGljeSBkb2VzIG5vdCBleGlzdAorU0VMRUNUIHBnX2dl dF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncG9sMScpOworRVJST1I6ICBwb2xpY3kgInBvbDEi IGZvciB0YWJsZSAicmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMSIgZG9lcyBub3QgZXhpc3QK Ky0tIFdpdGhvdXQgUHJldHR5IGZvcm1hdHRlZAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdy bHNfdGJsXzEnLCAncmxzX3AxJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X3BvbGljeV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIFBPTElDWSBybHNfcDEgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMSBB UyBQRVJNSVNTSVZFIEZPUiBBTEwgVE8gUFVCTElDIFVTSU5HICgoZGxldmVsIDw9IChTRUxFQ1Qg cmxzX3RibF8yLnNlY2x2IEZST00gcmxzX3RibF8yIFdIRVJFIChybHNfdGJsXzIucGd1c2VyID0g Q1VSUkVOVF9VU0VSKSkpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdy bHNfdGJsXzEnLCAncmxzX3AyJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg UE9MSUNZIHJsc19wMiBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFJFU1RSSUNU SVZFIEZPUiBBTEwgVE8gUFVCTElDIFVTSU5HICgoKGNpZCA8PiA0NCkgQU5EIChjaWQgPCA1MCkp KTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxz X3AzJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQT0xJQ1kgcmxzX3AzIE9OIHJlZ3Jlc3Nf cmxzX3NjaGVtYS5ybHNfdGJsXzEgQVMgUEVSTUlTU0lWRSBGT1IgQUxMIFRPIFBVQkxJQyBVU0lO RyAoKGRhdXRob3IgPSBDVVJSRU5UX1VTRVIpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9w b2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A0Jyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBQT0xJQ1kgcmxz X3A0IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEgQVMgUEVSTUlTU0lWRSBGT1IgU0VM RUNUIFRPIFBVQkxJQyBVU0lORyAoKChjaWQgJSAyKSA9IDApKTsKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1Jyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFT IFBFUk1JU1NJVkUgRk9SIElOU0VSVCBUTyBQVUJMSUMgV0lUSCBDSEVDSyAoKChjaWQgJSAyKSA9 IDEpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAn cmxzX3A2JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X3BvbGljeV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUE9MSUNZIHJsc19wNiBPTiByZWdyZXNzX3Js c19zY2hlbWEucmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9SIFVQREFURSBUTyBQVUJMSUMgVVNJ TkcgKCgoY2lkICUgMikgPSAwKSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2Rk bCgncmxzX3RibF8xJywgJ3Jsc19wNycsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFBPTElDWSBybHNfcDcgT04gcmVncmVz c19ybHNfc2NoZW1hLnJsc190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBERUxFVEUgVE8gUFVCTElD IFVTSU5HICgoY2lkIDwgOCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwo J3Jsc190YmxfMScsICdybHNfcDgnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBQT0xJQ1kgcmxzX3A4IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNf dGJsXzEgQVMgUEVSTUlTU0lWRSBGT1IgQUxMIFRPIHJlZ3Jlc3NfcmxzX2RhdmUsIHJlZ3Jlc3Nf cmxzX2FsaWNlIFVTSU5HICh0cnVlKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lf ZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUE9MSUNZIHJsc19wOSBPTiByZWdy ZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9SIEFMTCBUTyByZWdyZXNz X3Jsc19leGVtcHRfdXNlciBXSVRIIENIRUNLICgoY2lkID0gKFNFTEVDVCBybHNfdGJsXzIuc2Vj bHYgRlJPTSBybHNfdGJsXzIpKSk7CisoMSByb3cpCisKKy0tIFdpdGggUHJldHR5IGZvcm1hdHRl ZAorXHBzZXQgZm9ybWF0IHVuYWxpZ25lZAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNf dGJsXzEnLCAncmxzX3AxJywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElD WSBybHNfcDEgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUK KwlGT1IgQUxMCisJVE8gUFVCTElDCisJVVNJTkcgKGRsZXZlbCA8PSAoKCBTRUxFQ1QgcmxzX3Ri bF8yLnNlY2x2CisgICBGUk9NIHJsc190YmxfMgorICBXSEVSRSBybHNfdGJsXzIucGd1c2VyID0g Q1VSUkVOVF9VU0VSKSkpOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNf dGJsXzEnLCAncmxzX3AyJywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElD WSBybHNfcDIgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFJFU1RSSUNUSVZF CisJRk9SIEFMTAorCVRPIFBVQkxJQworCVVTSU5HIChjaWQgPD4gNDQgQU5EIGNpZCA8IDUwKTsK KygxIHJvdykKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMycs IHRydWUpOworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3AzIE9OIHJlZ3Jl c3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJRk9SIEFMTAorCVRPIFBV QkxJQworCVVTSU5HIChkYXV0aG9yID0gQ1VSUkVOVF9VU0VSKTsKKygxIHJvdykKK1NFTEVDVCBw Z19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRydWUpOworcGdfZ2V0X3Bv bGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNf dGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJRk9SIFNFTEVDVAorCVRPIFBVQkxJQworCVVTSU5HICgo Y2lkICUgMikgPSAwKTsKKygxIHJvdykKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3Ri bF8xJywgJ3Jsc19wNScsIHRydWUpOworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kg cmxzX3A1IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJ Rk9SIElOU0VSVAorCVRPIFBVQkxJQworCVdJVEggQ0hFQ0sgKChjaWQgJSAyKSA9IDEpOworKDEg cm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A2JywgdHJ1 ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNfcDYgT04gcmVncmVzc19y bHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUKKwlGT1IgVVBEQVRFCisJVE8gUFVC TElDCisJVVNJTkcgKChjaWQgJSAyKSA9IDApOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xp Y3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3JywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAor Q1JFQVRFIFBPTElDWSBybHNfcDcgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFT IFBFUk1JU1NJVkUKKwlGT1IgREVMRVRFCisJVE8gUFVCTElDCisJVVNJTkcgKGNpZCA8IDgpOwor KDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4Jywg dHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNfcDggT04gcmVncmVz c19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUKKwlGT1IgQUxMCisJVE8gcmVn cmVzc19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxpY2UKKwlVU0lORyAodHJ1ZSk7CisoMSByb3cp CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDknLCB0cnVlKTsK K3BnX2dldF9wb2xpY3lfZGRsCitDUkVBVEUgUE9MSUNZIHJsc19wOSBPTiByZWdyZXNzX3Jsc19z Y2hlbWEucmxzX3RibF8xCisJQVMgUEVSTUlTU0lWRQorCUZPUiBBTEwKKwlUTyByZWdyZXNzX3Js c19leGVtcHRfdXNlcgorCVdJVEggQ0hFQ0sgKGNpZCA9ICgoIFNFTEVDVCBybHNfdGJsXzIuc2Vj bHYKKyAgIEZST00gcmxzX3RibF8yKSkpOworKDEgcm93KQorLS0gQ2xlYW4gdXAgb2JqZWN0cyBj cmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lfZGRsIGZ1bmN0aW9uLgorRFJPUCBQT0xJ Q1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wMiBPTiBybHNfdGJsXzE7 CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A0IE9O IHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElD WSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A3IE9OIHJsc190YmxfMTsK K0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDkgT04g cmxzX3RibF8xOworLS0KIC0tIENsZWFuIHVwIG9iamVjdHMKIC0tCiBSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CiBEUk9QIFNDSEVNQSByZWdyZXNzX3Jsc19zY2hlbWEgQ0FTQ0FERTsKLU5P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMzAgb3RoZXIgb2JqZWN0cworTk9USUNFOiAgZHJvcCBj YXNjYWRlcyB0byAzMiBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1 bmN0aW9uIGZfbGVhayh0ZXh0KQogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB1YWNjb3VudAogZHJv cCBjYXNjYWRlcyB0byB0YWJsZSBjYXRlZ29yeQpAQCAtNTEzNiw2ICs1MzM5LDggQEAgZHJvcCBj YXNjYWRlcyB0byB0YWJsZSBkZXAxCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGRlcDIKIGRyb3Ag Y2FzY2FkZXMgdG8gdGFibGUgZG9iX3QxCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGRvYl90Mgor ZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBybHNfdGJsXzEKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUg cmxzX3RibF8yCiBEUk9QIFVTRVIgcmVncmVzc19ybHNfYWxpY2U7CiBEUk9QIFVTRVIgcmVncmVz c19ybHNfYm9iOwogRFJPUCBVU0VSIHJlZ3Jlc3NfcmxzX2Nhcm9sOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cm93c2VjdXJpdHkuc3FsCmluZGV4IDVkOTIzYzVjYTNiLi5iOTBmNTMwOTU3OCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbApAQCAtMjU0Miw2ICsyNTQyLDg2IEBAIHJlc2V0IHJs c190ZXN0LmJsYWg7CiBkcm9wIGZ1bmN0aW9uIHJsc19mKHRleHQpOwogZHJvcCB0YWJsZSBybHNf dCwgdGVzdF90OwogCistLQorLS0gVGVzdCBmb3IgcGdfZ2V0X3BvbGljeV9kZGwodGFibGVOYW1l LCBwb2xpY3lOYW1lLCBwcmV0dHkpIGZ1bmN0aW9uLgorLS0KK0NSRUFURSBUQUJMRSBybHNfdGJs XzEgKAorICAgIGRpZCAgICAgICAgIGludCBwcmltYXJ5IGtleSwKKyAgICBjaWQgICAgICAgICBp bnQsCisgICAgZGxldmVsICAgICAgaW50IG5vdCBudWxsLAorICAgIGRhdXRob3IgICAgIG5hbWUs CisgICAgZHRpdGxlICAgICAgdGV4dAorKTsKK0dSQU5UIEFMTCBPTiBybHNfdGJsXzEgVE8gcHVi bGljOworQ1JFQVRFIFRBQkxFIHJsc190YmxfMiAoCisgICAgcGd1c2VyICAgICAgbmFtZSBwcmlt YXJ5IGtleSwKKyAgICBzZWNsdiAgICAgICBpbnQKKyk7CitHUkFOVCBTRUxFQ1QgT04gcmxzX3Ri bF8yIFRPIHB1YmxpYzsKKworLS0gVGVzdCBQRVJNSVNTSVZFIGFuZCBSRVNUUklDVElWRQorQ1JF QVRFIFBPTElDWSBybHNfcDEgT04gcmxzX3RibF8xIEFTIFBFUk1JU1NJVkUKKyAgICBVU0lORyAo ZGxldmVsIDw9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIgV0hFUkUgcGd1c2VyID0gY3Vy cmVudF91c2VyKSk7CitDUkVBVEUgUE9MSUNZIHJsc19wMiBPTiBybHNfdGJsXzEgQVMgUkVTVFJJ Q1RJVkUgVVNJTkcgKGNpZCA8PiA0NCBBTkQgY2lkIDwgNTApOworCistLSBUZXN0IEZPUiBBTEwg fCBTRUxFQ1QgfCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUKK0NSRUFURSBQT0xJQ1kgcmxzX3Az IE9OIHJsc190YmxfMSBGT1IgQUxMIFVTSU5HIChkYXV0aG9yID0gY3VycmVudF91c2VyKTsKK0NS RUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMSBGT1IgU0VMRUNUIFVTSU5HIChjaWQgJSAy ID0gMCk7CitDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzEgRk9SIElOU0VSVCBXSVRI IENIRUNLIChjaWQgJSAyID0gMSk7CitDUkVBVEUgUE9MSUNZIHJsc19wNiBPTiBybHNfdGJsXzEg Rk9SIFVQREFURSBVU0lORyAoY2lkICUgMiA9IDApOworQ1JFQVRFIFBPTElDWSBybHNfcDcgT04g cmxzX3RibF8xIEZPUiBERUxFVEUgVVNJTkcgKGNpZCA8IDgpOworCistLSBUZXN0IFRPIHsgcm9s ZV9uYW1lIC4uLiB9CitDUkVBVEUgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzEgVE8gcmVncmVz c19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxpY2UgVVNJTkcgKHRydWUpOworQ1JFQVRFIFBPTElD WSBybHNfcDkgT04gcmxzX3RibF8xIFRPIHJlZ3Jlc3NfcmxzX2V4ZW1wdF91c2VyIFdJVEggQ0hF Q0sgKGNpZCA9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIpKTsKKworLS0gVGVzdCBOVUxM IHZhbHVlCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwgJ3Jsc19wMScpOworU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCd0YWIxJywgTlVMTCk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9k ZGwoTlVMTCwgTlVMTCk7CisKKy0tIFRlc3QgLTEgYXMgdGFibGUgb2lkCisgU0VMRUNUIHBnX2dl dF9wb2xpY3lfZGRsKC0xLCAncmxzX3AxJyk7CisKKy0tIFRhYmxlIGRvZXMgbm90IGV4aXN0CitT RUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3RhYjEnLCAncmxzX3AxJyk7CistLSBQb2xpY3kgZG9l cyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3BvbDEn KTsKKworLS0gV2l0aG91dCBQcmV0dHkgZm9ybWF0dGVkCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9k ZGwoJ3Jsc190YmxfMScsICdybHNfcDEnKTsKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxz X3RibF8xJywgJ3Jsc19wMicpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEn LCAncmxzX3AzJyk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNf cDQnKTsKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNScpOwor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A2JywgZmFsc2UpOwor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3JywgZmFsc2UpOwor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4JywgZmFsc2UpOwor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5JywgZmFsc2UpOwor CistLSBXaXRoIFByZXR0eSBmb3JtYXR0ZWQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVD VCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMScsIHRydWUpOworU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywgdHJ1ZSk7CitTRUxFQ1Qg cGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDMnLCB0cnVlKTsKK1NFTEVDVCBw Z19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRydWUpOworU0VMRUNUIHBn X2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1JywgdHJ1ZSk7CitTRUxFQ1QgcGdf Z2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDYnLCB0cnVlKTsKK1NFTEVDVCBwZ19n ZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNycsIHRydWUpOworU0VMRUNUIHBnX2dl dF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4JywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0 X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDknLCB0cnVlKTsKKworLS0gQ2xlYW4gdXAg b2JqZWN0cyBjcmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lfZGRsIGZ1bmN0aW9uLgor RFJPUCBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wMiBPTiBy bHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kg cmxzX3A0IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzE7CitE Uk9QIFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A3IE9OIHJs c190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBy bHNfcDkgT04gcmxzX3RibF8xOworCiAtLQogLS0gQ2xlYW4gdXAgb2JqZWN0cwogLS0KLS0gCjIu NTEuMAoK --0000000000002924e40643003796--