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 1wbETC-002OMo-1R for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 09:28:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbETA-002qUf-2h for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 09:28:00 +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 1wbETA-002qUW-1Q for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 09:28:00 +0000 Received: from mail-oa1-x30.google.com ([2001:4860:4864:20::30]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbET8-00000001Zfk-0HWT for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 09:28:00 +0000 Received: by mail-oa1-x30.google.com with SMTP id 586e51a60fabf-440d9bfa309so2535336fac.2 for ; Sun, 21 Jun 2026 02:27:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782034075; cv=none; d=google.com; s=arc-20240605; b=Ilgoufet61mjut/dGS0XQKo/l3W8GUEQoPF9oAQgiqvgGj7dywPajhRpN0K2k9Xnuq Wkdbmcd8ZryFwYbTA0Zx+kpqvmSHc/yDMCMvnLiK8Kx1ZBJnhH3iGwgeZ7ICLGZOZ3kp veNxY1xXs1FE3gnpXEf8VVH43omENgOIcoiQNSO/ys2X/D+nzCGGHtb8H2wqLOmaaQUF GJYejUeg4wjGVtsu8XlHT8QL++nQ+bnqbFvCkAjudnGPrLkHJgERFs22vrkyX+J0mHsr hfA6xaytIFbdUSksOTpUB/uSgwKPU1IGmN6qlKLLdGLAWTpOr+o4RQGYEaI1/IT/Iv5C +u+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=kqUwhl9SBxDRDmyx+W45tpRrTtcaDHHaB3VZOWl1E0o=; fh=z3b2AsBVfjGpCtCvDJyP+GSHIYEw5NV2NWaIgCMULnc=; b=Kl6ODbWrR6WReStMHFjJb0LSuiwVTXWoQpPva3BDwjRRCqSfMHLuSNejkhOyd3e26v UR2zbxbhVsE2XlBkdE0DDFeynjx24IMFQTv5tXm+fWamzKkSmJf9HNf/uMV5ooCfMr0f Es6nqwot1PmJ4LNQOkrDhyxt1qY5Auc6yVhtro5FdX2bTo5l+Oc0AcAXihADwg9BqOn/ 0R4g4lE7btX2PFd9+2uVN5HSCW6g8J+fjQ+lY4b48lRX4DjPenuQYaPME1Cy3p3uWA2p RVIFUunSGSevYFEZug2RvERPvk10xrOLEq27p73VtS4VfjUtts+HVb30RjHmTeLRlqCy FLVA==; 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=1782034075; x=1782638875; 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=kqUwhl9SBxDRDmyx+W45tpRrTtcaDHHaB3VZOWl1E0o=; b=Q+j/kS8HGblVaB8s4vydLYpHQ0fY9EJi0Fzh/DKuXfxrQvwYxQKZceP7CznuhfPCUt dHx60yqTgQAPDYfzqv+UPhL4qz5Ba5JI4BEJJf8q1O7ihehCRD/gmOd2Vo3+wZ2a2pCT Bfol+WdF+ZhFHRlJwOSMu7wkMFO0d+tvEFInCTF8COdHBdHrbAeF/Ve+2a9sh41t0RLQ wMRhnyXedds8rrCR6H2dAWKYj4KY8boWsPj5qmy/7e06w4lkaTDAyNkstHMAwV3ixcZ6 Vue133+fxls7aXFtiRgmkBGU9ANMbQXfPeGvg781bvESh+L2yKeQcAMzejfL93XSLdxE Sklg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782034075; x=1782638875; 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=kqUwhl9SBxDRDmyx+W45tpRrTtcaDHHaB3VZOWl1E0o=; b=T/sNt8IhJfLg50JK+myYxf7iwXD1C4WfQsToYHvWac9opMvFDG7BwZPQRdD1OuG4K5 FBadLWMGYsIiku/jIhgSRVvwwYUNDFTdPOUEz0hOQ059igrFTDMDcQTTHjtCHXZ12kPD QjQ+v239FkJ6mtSVPdzXzHp358NgGFHk3y6Rvue5XVKqu/14X1aZ2p77yIBo3zLVsy5W EBWJ7SMgODoYaZ9970+11BYz/s2E8cZaD4bSKP8clkhBdG8VZQJu/7FC+uBUkjiPtMif iPikX+p789QhO5sdGolp49aiqs5V5635U9P2w2cSBgzaFJmAjrz/zIbZpTkM7lkjk1bs SBXg== X-Forwarded-Encrypted: i=1; AFNElJ8u1Rf4vw65bcVn/B6u7CJU98cbf4FgQ1ruGK7lMxDA4WNdXDApbscn5q3atv8mqgoN3tTNoD0tKIXppn9h@lists.postgresql.org X-Gm-Message-State: AOJu0YzT3KOzbHFAkZMQRRvEVhg7PJ6LvLQf/6xbCbLZIRGFXQxTFlhT BFGWOfguJ66XlevYCp8A+V7LOI1cKWCXli2+p3X4D8NKagTXXYLsKvVCeqQsykW8rG4d3iXg3zn 8PGJhOUDPNhrpw87pU5WQY2c8I9A5WgA= X-Gm-Gg: AfdE7clTtvhG2sBIANXjvqlewn7jQPuDOVxrpPcD0OONbxxxoOoFxKWpD7XrsOU1A8W qMBcDFxuhyd609LpRTjAK0MAi7oofyqaJfbM8e6wnhx2lmrJZpzi8RO4Yw2c1TrRIl3K7Vl/N3Q e1Skm7R6Q2Az/SPRbJ/vGeTRkcgXTybvts4InQ2qPAQB2zow1mgDMvNJcT/Bubs0Ya/1PVSiTXQ kf0Pf3Rz1MOe71UKECVok/ivcfFGnztnZGTlV9CyfS0EfiXi+NR11YWeET4NF6XPOoZH1LMoceV jR/cLgXCHS/QsIpnL3bw0ayKHPOITANMjGB/W0/0 X-Received: by 2002:a05:6870:56aa:b0:43d:1151:3742 with SMTP id 586e51a60fabf-44716a44d7cmr7285440fac.8.1782034074935; Sun, 21 Jun 2026 02:27:54 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: JoongHyuk Shin Date: Sun, 21 Jun 2026 18:27:42 +0900 X-Gm-Features: AVVi8Cf0xnrtLG6UdTr4mMBfEq6Qll8eEDfzdW-KGn4zXyeCy263x8SEKxwkJ2M Message-ID: Subject: Re: [PATCH] Don't call ereport(ERROR) from recovery target GUC assign hooks To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Scott Ray , Fujii Masao , Michael Paquier , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000003bc5c0654c0240d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000003bc5c0654c0240d Content-Type: multipart/alternative; boundary="00000000000003bc5b0654c0240b" --00000000000003bc5b0654c0240b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the reviews. v5 attached. The errdetail now lists which recovery_target_* parameters are actually set= , instead of the full candidate list. This follows Scott's idea to surface the set targets; following =C3=81lvaro, the values are dropped and a new errhint points to pg_settings for them and their sources. I kept the "which ones are set" list in errdetail rather than errhint, it states the current configuration, which reads as detail, while the errhint carries the actionable pg_settings pointer. --=20 JH Shin On Mon, Jun 8, 2026 at 12:44=E2=80=AFAM =C3=81lvaro Herrera wrote: > On 2026-Jun-07, JoongHyuk Shin wrote: > > > On "=3D" vs "set to": I'd stay with "=3D". > > The list is assembled in appendStringInfo and ends up in the dynamic %s= , > > so prose like "set to" there never goes through gettext > > and would print in English even under a translated lc_messages. > > "=3D" is punctuation, so it sidesteps that. > > Agreed on using =3D, although ... > > > That said, I'm not sure the currently-set list belongs in the errdetail > at > > all, > > since an operator can read the values back from the configuration. > > I'd be interested in the committer's view on whether it is worth adding= . > > It may be enough to list which ones are set, without listing their values= . > Those can be obtained easily from pg_settings, which can be mentioned in > errhint -- useful also to figure out exactly _where_ they are set (e.g., > in an include file, postgresql.auto.conf, and so on.) > > -- > =C3=81lvaro Herrera Breisgau, Deutschland =E2=80=94 > https://www.EnterpriseDB.com/ > --00000000000003bc5b0654c0240b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for the reviews.

v5 attached.

The err= detail now lists which recovery_target_* parameters are actually set,
in= stead of the full candidate list.
This follows Scott's idea to surf= ace the set targets;
following =C3=81lvaro, the values are dropped
a= nd a new errhint points to pg_settings for them and their sources.

I= kept the "which ones are set" list in errdetail rather than errh= int,
it states the current configuration, which reads as detail,
whi= le the errhint carries the actionable pg_settings pointer.

--
JH= Shin

On Mon, Jun 8, 2026 at 12:44=E2=80=AFAM =C3=81lv= aro Herrera <alvherre@kurilemu.d= e> wrote:
On 2026-Jun-07, JoongHyuk Shin wrote:

> On "=3D" vs "set to": I'd stay with "=3D&= quot;.
> The list is assembled in appendStringInfo and ends up in the dynamic %= s,
> so prose like "set to" there never goes through gettext
> and would print in English even under a translated lc_messages.
> "=3D" is punctuation, so it sidesteps that.

Agreed on using =3D, although ...

> That said, I'm not sure the currently-set list belongs in the errd= etail at
> all,
> since an operator can read the values back from the configuration.
> I'd be interested in the committer's view on whether it is wor= th adding.

It may be enough to list which ones are set, without listing their values.<= br> Those can be obtained easily from pg_settings, which can be mentioned in errhint -- useful also to figure out exactly _where_ they are set (e.g., in an include file, postgresql.auto.conf, and so on.)

--
=C3=81lvaro Herrera=C2=A0 =C2=A0 =C2=A0 =C2=A0 Breisgau, Deutschland=C2=A0 = =E2=80=94=C2=A0 https://www.EnterpriseDB.com/
--00000000000003bc5b0654c0240b-- --00000000000003bc5c0654c0240d Content-Type: application/octet-stream; name="v5-0001-Don-t-call-ereport-ERROR-from-recovery-target-GUC-as.patch" Content-Disposition: attachment; filename="v5-0001-Don-t-call-ereport-ERROR-from-recovery-target-GUC-as.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnl14py0 RnJvbSAzNjM4YTdiYTUwMzdjNDZlMDEwNjk4OWE2Njc5OTA2YzAzYTJmYzZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb29uZ0h5dWsgU2hpbiA8c2poOTEwODA1QGdtYWlsLmNvbT4K RGF0ZTogU3VuLCAyMSBKdW4gMjAyNiAxNzo0NToyNSArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIERv bid0IGNhbGwgZXJlcG9ydChFUlJPUikgZnJvbSByZWNvdmVyeSB0YXJnZXQgR1VDIGFzc2lnbgog aG9va3MKClRoZSBmaXZlIHJlY292ZXJ5IHRhcmdldCBHVUMgYXNzaWduIGhvb2tzIChhc3NpZ25f cmVjb3ZlcnlfdGFyZ2V0LAphc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X2xzbiwgYXNzaWduX3JlY292 ZXJ5X3RhcmdldF9uYW1lLAphc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X3RpbWUsIGFzc2lnbl9yZWNv dmVyeV90YXJnZXRfeGlkKSBhbGwgY2FsbGVkCmVycm9yX211bHRpcGxlX3JlY292ZXJ5X3Rhcmdl dHMoKSwgd2hpY2ggaW52b2tlZCBlcmVwb3J0KEVSUk9SKS4gIFRoZQpHVUMgUkVBRE1FIGV4cGxp Y2l0bHkgc3RhdGVzIHRoYXQgYXNzaWduIGhvb2tzIG11c3QgbmV2ZXIgZmFpbDsgcmFpc2luZwph biBlcnJvciBmcm9tIGFuIGFzc2lnbiBob29rIGxlYXZlcyBndWMuYydzIGludGVybmFsIHN0YXRl IGluY29uc2lzdGVudApiZWZvcmUgdGhlIGFib3J0LiAgQSBjb21tZW50IGluIHRoZSBjb2RlIGl0 c2VsZiBhY2tub3dsZWRnZWQgdGhpcyBhcwoiYnJva2VuIGJ5IGRlc2lnbi4iCgpGaXggdGhpcyBi eSByZW1vdmluZyB0aGUgY29uZmxpY3QgY2hlY2sgZnJvbSBhbGwgZml2ZSBhc3NpZ24gaG9va3Mg YW5kCmRldGVjdGluZyBtdWx0aXBsZSByZWNvdmVyeSB0YXJnZXRzIGluIGEgbmV3IENoZWNrUmVj b3ZlcnlUYXJnZXRDb25mbGljdHMoKQpmdW5jdGlvbiwgY2FsbGVkIGZyb20gdmFsaWRhdGVSZWNv dmVyeVBhcmFtZXRlcnMoKSBiZWZvcmUgaXRzIGVhcmx5CnJldHVybiBmb3IgIUFyY2hpdmVSZWNv dmVyeVJlcXVlc3RlZC4gIFRoZSBjaGVjayB0aGVyZWZvcmUgcnVucyBhdApldmVyeSBzdGFydHVw IHJlZ2FyZGxlc3Mgb2YgcmVjb3ZlcnkgbW9kZSwgcHJlc2VydmluZyB0aGUgZXhpc3RpbmcKYmVo YXZpb3Igb2YgZGV0ZWN0aW5nIG1pc2NvbmZpZ3VyYXRpb24gYXQgc2VydmVyIHN0YXJ0IHRpbWUg cmF0aGVyCnRoYW4gb25seSB3aGVuIHJlY292ZXJ5LnNpZ25hbCBpcyBhZGRlZC4KCkluIGVhY2gg YXNzaWduIGhvb2sncyBlbXB0eS1zdHJpbmcgYnJhbmNoLCByZXBsYWNlIHRoZSB1bmNvbmRpdGlv bmFsCiJyZWNvdmVyeVRhcmdldCA9IFJFQ09WRVJZX1RBUkdFVF9VTlNFVCIgYXNzaWdubWVudCB3 aXRoIGEgbmFycm93ZXIKImlmIChyZWNvdmVyeVRhcmdldCA9PSBNWV9UWVBFKSIgZm9ybS4gIEVt cHR5IHN0cmluZ3MgZm9yIGFuIHVucmVsYXRlZApyZWNvdmVyeV90YXJnZXRfKiBHVUMgdGhlbiBs ZWF2ZSBhbm90aGVyIEdVQydzIGFscmVhZHktc2V0IHRhcmdldAppbnRhY3QsIHdoaWxlIHN0aWxs IHByZXNlcnZpbmcgdGhlIGRvY3VtZW50ZWQgImxhc3QgdmFsdWUgd2lucyIKcmVhc3NpZ25tZW50 IHNlbWFudGljcyBmb3IgdGhlIHNhbWUgR1VDLgoKV2hlbiBhIGNvbmZsaWN0IGlzIGRldGVjdGVk LCB0aGUgZXJyZGV0YWlsIG5vdyBsaXN0cyB3aGljaApyZWNvdmVyeV90YXJnZXRfKiBwYXJhbWV0 ZXJzIGFyZSBhY3R1YWxseSBzZXQsIHJhdGhlciB0aGFuIHRoZSBmdWxsCmxpc3Qgb2YgY2FuZGlk YXRlIG5hbWVzLCBhbmQgYW4gZXJyaGludCBwb2ludHMgdG8gcGdfc2V0dGluZ3MgZm9yIHRoZWly CnZhbHVlcyBhbmQgd2hlcmUgZWFjaCBpcyBjb25maWd1cmVkLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAgfCAxNTkgKysrKysrKysrLS0tLQogc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMDNfcmVjb3ZlcnlfdGFyZ2V0cy5wbCB8IDI1MSArKysrKysrKysrKysr KysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAzNjEgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCA0ZDYx Nzk1YjQ4My4uZGM4YjQ2YTZjODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dy ZWNvdmVyeS5jCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1z LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJv dG9zLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tz LmgiCiAjaW5jbHVkZSAidXRpbHMvcGdzdGF0X2ludGVybmFsLmgiCiAjaW5jbHVkZSAidXRpbHMv cGdfbHNuLmgiCkBAIC0zNDEsNiArMzQyLDcgQEAgc3RhdGljIHZvaWQgQXBwbHlXYWxSZWNvcmQo WExvZ1JlYWRlclN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpyZWNvcmQsIFRpbWUKIHN0 YXRpYyB2b2lkIEVuYWJsZVN0YW5kYnlNb2RlKHZvaWQpOwogc3RhdGljIHZvaWQgcmVhZFJlY292 ZXJ5U2lnbmFsRmlsZSh2b2lkKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlUmVjb3ZlcnlQYXJhbWV0 ZXJzKHZvaWQpOworc3RhdGljIHZvaWQgQ2hlY2tSZWNvdmVyeVRhcmdldENvbmZsaWN0cyh2b2lk KTsKIHN0YXRpYyBib29sIHJlYWRfYmFja3VwX2xhYmVsKFhMb2dSZWNQdHIgKmNoZWNrUG9pbnRM b2MsCiAJCQkJCQkJICBUaW1lTGluZUlEICpiYWNrdXBMYWJlbFRMSSwKIAkJCQkJCQkgIGJvb2wg KmJhY2t1cEVuZFJlcXVpcmVkLCBib29sICpiYWNrdXBGcm9tU3RhbmRieSk7CkBAIC0xMDY3LDYg KzEwNjksOCBAQCByZWFkUmVjb3ZlcnlTaWduYWxGaWxlKHZvaWQpCiBzdGF0aWMgdm9pZAogdmFs aWRhdGVSZWNvdmVyeVBhcmFtZXRlcnModm9pZCkKIHsKKwlDaGVja1JlY292ZXJ5VGFyZ2V0Q29u ZmxpY3RzKCk7CisKIAlpZiAoIUFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKIAkJcmV0dXJuOwog CkBAIC0xMTQ0LDYgKzExNDgsOTQgQEAgdmFsaWRhdGVSZWNvdmVyeVBhcmFtZXRlcnModm9pZCkK IAl9CiB9CiAKKy8qCisgKiBDaGVja1JlY292ZXJ5VGFyZ2V0Q29uZmxpY3RzCisgKgorICogVmFs aWRhdGUgdGhhdCBhdCBtb3N0IG9uZSBvZiB0aGUgcmVjb3ZlcnlfdGFyZ2V0XyogR1VDcyBpcyBz ZXQgdG8gYQorICogbm9uLWVtcHR5IHZhbHVlLiAgVGhpcyBpcyBjYWxsZWQgZnJvbSB2YWxpZGF0 ZVJlY292ZXJ5UGFyYW1ldGVycygpIGF0IGV2ZXJ5CisgKiBzZXJ2ZXIgc3RhcnR1cCwgcmVnYXJk bGVzcyBvZiB3aGV0aGVyIGFyY2hpdmUgcmVjb3ZlcnkgaXMgcmVxdWVzdGVkLCBzbworICogbWlz Y29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBhdCBzZXJ2ZXIgc3RhcnQgdGltZSByYXRoZXIgdGhh biBsYXRlciB3aGVuCisgKiByZWNvdmVyeS5zaWduYWwgaXMgYWRkZWQuCisgKgorICogVGhlIGNo ZWNrIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gcmF0aGVyIHRoYW4gaW5saW5lZCBpbnRvCisgKiB2 YWxpZGF0ZVJlY292ZXJ5UGFyYW1ldGVycygpIGJlY2F1c2UgaXQgaW50ZW50aW9uYWxseSBydW5z IGV2ZW4gd2hlbiBubworICogcmVjb3ZlcnkgaXMgcmVxdWVzdGVkLCB3aGlsZSB0aGUgcmVzdCBv ZiB2YWxpZGF0ZVJlY292ZXJ5UGFyYW1ldGVycygpIGlzCisgKiByZWNvdmVyeS1tb2RlLW9ubHku ICBLZWVwaW5nIGl0IGFzIGEgbmFtZWQgZnVuY3Rpb24gbWFrZXMgdGhhdCBzZXBhcmF0aW9uCisg KiBleHBsaWNpdC4KKyAqCisgKiBUaGUgY2hlY2sgdXNlZCB0byBsaXZlIGluIHRoZSBhc3NpZ24g aG9va3Mgb2YgdGhlIHJlY292ZXJ5X3RhcmdldF8qIEdVQ3MKKyAqIChjYWxsaW5nIGVyZXBvcnQo RVJST1IpIG9uIGNvbmZsaWN0KSwgd2hpY2ggdmlvbGF0ZWQgZ3VjLmMncyBjb250cmFjdCB0aGF0 CisgKiBhc3NpZ24gaG9va3MgbXVzdCBuZXZlciBmYWlsLiAgTW92aW5nIHRoZSBjaGVjayBoZXJl IGtlZXBzIHRoZSBhc3NpZ24gaG9va3MKKyAqIGNvbnRyYWN0LWNvbXBsaWFudC4KKyAqCisgKiBJ ZiBhIGZ1dHVyZSBwYXRjaCBhZGRzIGEgc2l4dGggcmVjb3ZlcnlfdGFyZ2V0XyogR1VDLCBpdCBt dXN0IGJlIGFkZGVkIHRvIHRoZQorICogbGlzdCBvZiBHZXRDb25maWdPcHRpb24oKSBjaGVja3Mg YmVsb3c7IHRoZSBlcnJkZXRhaWwgYnVpbGRzIGl0cyBsaXN0IG9mIHNldAorICogcGFyYW1ldGVy cyBkeW5hbWljYWxseSwgc28gaXQgbmVlZHMgbm8gY2hhbmdlLgorICovCitzdGF0aWMgdm9pZAor Q2hlY2tSZWNvdmVyeVRhcmdldENvbmZsaWN0cyh2b2lkKQoreworCWludAkJCW50YXJnZXRzID0g MDsKKwljb25zdCBjaGFyICp2YWw7CisJU3RyaW5nSW5mb0RhdGEgYnVmOworCisJaW5pdFN0cmlu Z0luZm8oJmJ1Zik7CisKKwkvKgorCSAqIFRoZXNlIEdVQ3MgYXJlIGFsbCBQR0NfU1RSSU5HLCBz byBHZXRDb25maWdPcHRpb24oKSByZXR1cm5zICIiIChub3QKKwkgKiBOVUxMKSB3aGVuIGEgcGFy YW1ldGVyIGlzIHVuc2V0LiAgQ29sbGVjdCB0aGUgbmFtZSBvZiBlYWNoIG9uZSB0aGF0IGlzCisJ ICogc2V0IGludG8gYnVmLCBzZXBhcmF0ZWQgYnkgIiwgIiwgZm9yIHVzZSBpbiB0aGUgZXJyZGV0 YWlsIGJlbG93LgorCSAqLworCXZhbCA9IEdldENvbmZpZ09wdGlvbigicmVjb3ZlcnlfdGFyZ2V0 IiwgZmFsc2UsIGZhbHNlKTsKKwlpZiAodmFsWzBdICE9ICdcMCcpCisJeworCQludGFyZ2V0cysr OworCQlpZiAoYnVmLmxlbiA+IDApCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIs ICIpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICJcInJlY292ZXJ5X3RhcmdldFwi Iik7CisJfQorCXZhbCA9IEdldENvbmZpZ09wdGlvbigicmVjb3ZlcnlfdGFyZ2V0X2xzbiIsIGZh bHNlLCBmYWxzZSk7CisJaWYgKHZhbFswXSAhPSAnXDAnKQorCXsKKwkJbnRhcmdldHMrKzsKKwkJ aWYgKGJ1Zi5sZW4gPiAwKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiLCAiKTsK KwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiXCJyZWNvdmVyeV90YXJnZXRfbHNuXCIi KTsKKwl9CisJdmFsID0gR2V0Q29uZmlnT3B0aW9uKCJyZWNvdmVyeV90YXJnZXRfbmFtZSIsIGZh bHNlLCBmYWxzZSk7CisJaWYgKHZhbFswXSAhPSAnXDAnKQorCXsKKwkJbnRhcmdldHMrKzsKKwkJ aWYgKGJ1Zi5sZW4gPiAwKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiLCAiKTsK KwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiXCJyZWNvdmVyeV90YXJnZXRfbmFtZVwi Iik7CisJfQorCXZhbCA9IEdldENvbmZpZ09wdGlvbigicmVjb3ZlcnlfdGFyZ2V0X3RpbWUiLCBm YWxzZSwgZmFsc2UpOworCWlmICh2YWxbMF0gIT0gJ1wwJykKKwl7CisJCW50YXJnZXRzKys7CisJ CWlmIChidWYubGVuID4gMCkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiwgIik7 CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIlwicmVjb3ZlcnlfdGFyZ2V0X3RpbWVc IiIpOworCX0KKwl2YWwgPSBHZXRDb25maWdPcHRpb24oInJlY292ZXJ5X3RhcmdldF94aWQiLCBm YWxzZSwgZmFsc2UpOworCWlmICh2YWxbMF0gIT0gJ1wwJykKKwl7CisJCW50YXJnZXRzKys7CisJ CWlmIChidWYubGVuID4gMCkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiwgIik7 CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIlwicmVjb3ZlcnlfdGFyZ2V0X3hpZFwi Iik7CisJfQorCisJaWYgKG50YXJnZXRzID4gMSkKKwkJZXJlcG9ydChGQVRBTCwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJtdWx0 aXBsZSByZWNvdmVyeSB0YXJnZXRzIHNwZWNpZmllZCIpLAorCQkJCSBlcnJkZXRhaWwoIlJlY292 ZXJ5IHRhcmdldHMgJXMgYXJlIHNldCwgYnV0IG9ubHkgb25lIGNhbiBiZSBzZXQuIiwKKwkJCQkJ CSAgIGJ1Zi5kYXRhKSwKKwkJCQkgZXJyaGludCgiU2VlIHBnX3NldHRpbmdzIGZvciB0aGUgcGFy YW1ldGVyIHZhbHVlcyBhbmQgd2hlcmUgZWFjaCBpcyBzZXQuIikpKTsKK30KKwogLyoKICAqIHJl YWRfYmFja3VwX2xhYmVsOiBjaGVjayB0byBzZWUgaWYgYSBiYWNrdXBfbGFiZWwgZmlsZSBpcyBw cmVzZW50CiAgKgpAQCAtNDc2OSwzMiArNDg2MSwyNyBAQCBjaGVja19wcmltYXJ5X3Nsb3RfbmFt ZShjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCiB9CiAKIC8q Ci0gKiBSZWNvdmVyeSB0YXJnZXQgc2V0dGluZ3M6IE9ubHkgb25lIG9mIHRoZSBzZXZlcmFsIHJl Y292ZXJ5X3RhcmdldCogc2V0dGluZ3MKLSAqIG1heSBiZSBzZXQuICBTZXR0aW5nIGEgc2Vjb25k IG9uZSByZXN1bHRzIGluIGFuIGVycm9yLiAgVGhlIGdsb2JhbCB2YXJpYWJsZQorICogUmVjb3Zl cnkgdGFyZ2V0IHNldHRpbmdzOiBBdCBtb3N0IG9uZSBvZiB0aGUgc2V2ZXJhbCByZWNvdmVyeV90 YXJnZXQqCisgKiBzZXR0aW5ncyBtYXkgYmUgc2V0IHRvIGEgbm9uLWVtcHR5IHZhbHVlLiAgVGhl IGdsb2JhbCB2YXJpYWJsZQogICogcmVjb3ZlcnlUYXJnZXQgdHJhY2tzIHdoaWNoIGtpbmQgb2Yg cmVjb3ZlcnkgdGFyZ2V0IHdhcyBjaG9zZW4uICBPdGhlcgogICogdmFyaWFibGVzIHN0b3JlIHRo ZSBhY3R1YWwgdGFyZ2V0IHZhbHVlIChmb3IgZXhhbXBsZSBhIHN0cmluZyBvciBhIHhpZCkuCi0g KiBUaGUgYXNzaWduIGZ1bmN0aW9ucyBvZiB0aGUgcGFyYW1ldGVycyBjaGVjayB3aGV0aGVyIGEg Y29tcGV0aW5nIHBhcmFtZXRlcgotICogd2FzIGFscmVhZHkgc2V0LiAgQnV0IHdlIHdhbnQgdG8g YWxsb3cgc2V0dGluZyB0aGUgc2FtZSBwYXJhbWV0ZXIgbXVsdGlwbGUKLSAqIHRpbWVzLiAgV2Ug YWxzbyB3YW50IHRvIGFsbG93IHVuc2V0dGluZyBhIHBhcmFtZXRlciBhbmQgc2V0dGluZyBhIGRp ZmZlcmVudAotICogb25lLCBzbyB3ZSB1bnNldCByZWNvdmVyeVRhcmdldCB3aGVuIHRoZSBwYXJh bWV0ZXIgaXMgc2V0IHRvIGFuIGVtcHR5Ci0gKiBzdHJpbmcuCisgKiBBbiBlbXB0eSBzdHJpbmcg Zm9yIGFueSBvZiB0aGVzZSBHVUNzIGlzIHRyZWF0ZWQgYXMgIm5vdCBzZXQiLCBlcXVpdmFsZW50 CisgKiB0byB0aGUgR1VDJ3MgZGVmYXVsdDsgYW4gZW1wdHkgdmFsdWUgY2Fubm90IGNsb2JiZXIg YW5vdGhlciBHVUMncworICogYWxyZWFkeS1zZXQgdGFyZ2V0LiAgQ29uZmxpY3RzIGJldHdlZW4g bXVsdGlwbGUgbm9uLWVtcHR5IHNldHRpbmdzIGFyZQorICogZGV0ZWN0ZWQgaW4gQ2hlY2tSZWNv dmVyeVRhcmdldENvbmZsaWN0cygpLCBjYWxsZWQgZnJvbQorICogdmFsaWRhdGVSZWNvdmVyeVBh cmFtZXRlcnMoKSBhdCBldmVyeSBzdGFydHVwLgogICoKLSAqIFhYWCB0aGlzIGNvZGUgaXMgYnJv a2VuIGJ5IGRlc2lnbi4gIFRocm93aW5nIGFuIGVycm9yIGZyb20gYSBHVUMgYXNzaWduCi0gKiBo b29rIGJyZWFrcyBmdW5kYW1lbnRhbCBhc3N1bXB0aW9ucyBvZiBndWMuYy4gIFNvIGxvbmcgYXMg YWxsIHRoZSB2YXJpYWJsZXMKLSAqIGZvciB3aGljaCB0aGlzIGNhbiBoYXBwZW4gYXJlIFBHQ19Q T1NUTUFTVEVSLCB0aGUgY29uc2VxdWVuY2VzIGFyZSBsaW1pdGVkLAotICogc2luY2Ugd2UnZCBq dXN0IGFib3J0IHBvc3RtYXN0ZXIgc3RhcnR1cCBhbnl3YXkuICBOb25ldGhlbGVzcyBpdCdzIGxp a2VseQotICogdGhhdCB3ZSBoYXZlIG9kZCBiZWhhdmlvcnMgc3VjaCBhcyB1bmV4cGVjdGVkIEdV QyBvcmRlcmluZyBkZXBlbmRlbmNpZXMuCisgKiBFYWNoIGFzc2lnbiBob29rIGNsZWFycyByZWNv dmVyeVRhcmdldCBvbmx5IHdoZW4gaXRzIG93biBHVUMgaXMgcmVhc3NpZ25lZAorICogdG8gYW4g ZW1wdHkgc3RyaW5nIGFmdGVyIHRoZSBzYW1lIEdVQyB3YXMgcHJldmlvdXNseSBhc3NpZ25lZCBh IG5vbi1lbXB0eQorICogdmFsdWUsIGUuZy4KKyAqICAgICBwb3N0Z3JlcyAtYyByZWNvdmVyeV90 YXJnZXRfeGlkPTcwMCAtYyByZWNvdmVyeV90YXJnZXRfeGlkPQorICogKHBvc3RncmVzcWwuY29u ZiBjb2xsYXBzZXMgZHVwbGljYXRlIGtleXMgc28gb25seSB0aGUgbGFzdCB2YWx1ZSByZWFjaGVz CisgKiB0aGUgYXNzaWduIGhvb2s7IHRoaXMgc2FtZS1wYXJhbWV0ZXIgc2V0LXRoZW4tY2xlYXIg Y2FzZSBvbmx5IGFyaXNlcyBmcm9tCisgKiAtYykuICBUaGUgY2xlYXIgaXMgcmVzdHJpY3RlZCB0 byB0aGUgaG9vaydzIG93biB0YXJnZXQgdHlwZSBzbyB0aGF0IGFuCisgKiBlbXB0eSB2YWx1ZSBm b3Igb25lIHJlY292ZXJ5X3RhcmdldF8qIEdVQyBjYW5ub3QgY2xvYmJlciBhbm90aGVyIEdVQydz CisgKiBhbHJlYWR5LXNldCB0YXJnZXQuCiAgKi8KIAotcGdfbm9yZXR1cm4gc3RhdGljIHZvaWQK LWVycm9yX211bHRpcGxlX3JlY292ZXJ5X3RhcmdldHModm9pZCkKLXsKLQllcmVwb3J0KEVSUk9S LAotCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkgZXJy bXNnKCJtdWx0aXBsZSByZWNvdmVyeSB0YXJnZXRzIHNwZWNpZmllZCIpLAotCQkJIGVycmRldGFp bCgiQXQgbW9zdCBvbmUgb2YgXCJyZWNvdmVyeV90YXJnZXRcIiwgXCJyZWNvdmVyeV90YXJnZXRf bHNuXCIsIFwicmVjb3ZlcnlfdGFyZ2V0X25hbWVcIiwgXCJyZWNvdmVyeV90YXJnZXRfdGltZVwi LCBcInJlY292ZXJ5X3RhcmdldF94aWRcIiBtYXkgYmUgc2V0LiIpKSk7Ci19Ci0KIC8qCiAgKiBH VUMgY2hlY2tfaG9vayBmb3IgcmVjb3ZlcnlfdGFyZ2V0CiAgKi8KQEAgLTQ4MTUsMTMgKzQ5MDIs OSBAQCBjaGVja19yZWNvdmVyeV90YXJnZXQoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBH dWNTb3VyY2Ugc291cmNlKQogdm9pZAogYXNzaWduX3JlY292ZXJ5X3RhcmdldChjb25zdCBjaGFy ICpuZXd2YWwsIHZvaWQgKmV4dHJhKQogewotCWlmIChyZWNvdmVyeVRhcmdldCAhPSBSRUNPVkVS WV9UQVJHRVRfVU5TRVQgJiYKLQkJcmVjb3ZlcnlUYXJnZXQgIT0gUkVDT1ZFUllfVEFSR0VUX0lN TUVESUFURSkKLQkJZXJyb3JfbXVsdGlwbGVfcmVjb3ZlcnlfdGFyZ2V0cygpOwotCiAJaWYgKG5l d3ZhbCAmJiBzdHJjbXAobmV3dmFsLCAiIikgIT0gMCkKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNP VkVSWV9UQVJHRVRfSU1NRURJQVRFOwotCWVsc2UKKwllbHNlIGlmIChyZWNvdmVyeVRhcmdldCA9 PSBSRUNPVkVSWV9UQVJHRVRfSU1NRURJQVRFKQogCQlyZWNvdmVyeVRhcmdldCA9IFJFQ09WRVJZ X1RBUkdFVF9VTlNFVDsKIH0KIApAQCAtNDg1NiwxNiArNDkzOSwxMiBAQCBjaGVja19yZWNvdmVy eV90YXJnZXRfbHNuKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJj ZSkKIHZvaWQKIGFzc2lnbl9yZWNvdmVyeV90YXJnZXRfbHNuKGNvbnN0IGNoYXIgKm5ld3ZhbCwg dm9pZCAqZXh0cmEpCiB7Ci0JaWYgKHJlY292ZXJ5VGFyZ2V0ICE9IFJFQ09WRVJZX1RBUkdFVF9V TlNFVCAmJgotCQlyZWNvdmVyeVRhcmdldCAhPSBSRUNPVkVSWV9UQVJHRVRfTFNOKQotCQllcnJv cl9tdWx0aXBsZV9yZWNvdmVyeV90YXJnZXRzKCk7Ci0KIAlpZiAobmV3dmFsICYmIHN0cmNtcChu ZXd2YWwsICIiKSAhPSAwKQogCXsKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRf TFNOOwogCQlyZWNvdmVyeVRhcmdldExTTiA9ICooKFhMb2dSZWNQdHIgKikgZXh0cmEpOwogCX0K LQllbHNlCisJZWxzZSBpZiAocmVjb3ZlcnlUYXJnZXQgPT0gUkVDT1ZFUllfVEFSR0VUX0xTTikK IAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5TRVQ7CiB9CiAKQEAgLTQ4OTEs MTYgKzQ5NzAsMTIgQEAgY2hlY2tfcmVjb3ZlcnlfdGFyZ2V0X25hbWUoY2hhciAqKm5ld3ZhbCwg dm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogdm9pZAogYXNzaWduX3JlY292ZXJ5X3Rh cmdldF9uYW1lKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpCiB7Ci0JaWYgKHJlY292 ZXJ5VGFyZ2V0ICE9IFJFQ09WRVJZX1RBUkdFVF9VTlNFVCAmJgotCQlyZWNvdmVyeVRhcmdldCAh PSBSRUNPVkVSWV9UQVJHRVRfTkFNRSkKLQkJZXJyb3JfbXVsdGlwbGVfcmVjb3ZlcnlfdGFyZ2V0 cygpOwotCiAJaWYgKG5ld3ZhbCAmJiBzdHJjbXAobmV3dmFsLCAiIikgIT0gMCkKIAl7CiAJCXJl Y292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX05BTUU7CiAJCXJlY292ZXJ5VGFyZ2V0TmFt ZSA9IG5ld3ZhbDsKIAl9Ci0JZWxzZQorCWVsc2UgaWYgKHJlY292ZXJ5VGFyZ2V0ID09IFJFQ09W RVJZX1RBUkdFVF9OQU1FKQogCQlyZWNvdmVyeVRhcmdldCA9IFJFQ09WRVJZX1RBUkdFVF9VTlNF VDsKIH0KIApAQCAtNDk3MSwxMyArNTA0Niw5IEBAIGNoZWNrX3JlY292ZXJ5X3RhcmdldF90aW1l KGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKIHZvaWQKIGFz c2lnbl9yZWNvdmVyeV90YXJnZXRfdGltZShjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJh KQogewotCWlmIChyZWNvdmVyeVRhcmdldCAhPSBSRUNPVkVSWV9UQVJHRVRfVU5TRVQgJiYKLQkJ cmVjb3ZlcnlUYXJnZXQgIT0gUkVDT1ZFUllfVEFSR0VUX1RJTUUpCi0JCWVycm9yX211bHRpcGxl X3JlY292ZXJ5X3RhcmdldHMoKTsKLQogCWlmIChuZXd2YWwgJiYgc3RyY21wKG5ld3ZhbCwgIiIp ICE9IDApCiAJCXJlY292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX1RJTUU7Ci0JZWxzZQor CWVsc2UgaWYgKHJlY292ZXJ5VGFyZ2V0ID09IFJFQ09WRVJZX1RBUkdFVF9USU1FKQogCQlyZWNv dmVyeVRhcmdldCA9IFJFQ09WRVJZX1RBUkdFVF9VTlNFVDsKIH0KIApAQCAtNTA5OSwxNSArNTE3 MCwxMSBAQCBjaGVja19yZWNvdmVyeV90YXJnZXRfeGlkKGNoYXIgKipuZXd2YWwsIHZvaWQgKipl eHRyYSwgR3VjU291cmNlIHNvdXJjZSkKIHZvaWQKIGFzc2lnbl9yZWNvdmVyeV90YXJnZXRfeGlk KGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpCiB7Ci0JaWYgKHJlY292ZXJ5VGFyZ2V0 ICE9IFJFQ09WRVJZX1RBUkdFVF9VTlNFVCAmJgotCQlyZWNvdmVyeVRhcmdldCAhPSBSRUNPVkVS WV9UQVJHRVRfWElEKQotCQllcnJvcl9tdWx0aXBsZV9yZWNvdmVyeV90YXJnZXRzKCk7Ci0KIAlp ZiAobmV3dmFsICYmIHN0cmNtcChuZXd2YWwsICIiKSAhPSAwKQogCXsKIAkJcmVjb3ZlcnlUYXJn ZXQgPSBSRUNPVkVSWV9UQVJHRVRfWElEOwogCQlyZWNvdmVyeVRhcmdldFhpZCA9ICooKFRyYW5z YWN0aW9uSWQgKikgZXh0cmEpOwogCX0KLQllbHNlCisJZWxzZSBpZiAocmVjb3ZlcnlUYXJnZXQg PT0gUkVDT1ZFUllfVEFSR0VUX1hJRCkKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJH RVRfVU5TRVQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwM19yZWNvdmVy eV90YXJnZXRzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDNfcmVjb3ZlcnlfdGFyZ2V0cy5w bAppbmRleCAwNDdlYjEzMjkzYS4uNmU4YTJjNTU3YzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDAzX3JlY292ZXJ5X3RhcmdldHMucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMDNfcmVjb3ZlcnlfdGFyZ2V0cy5wbApAQCAtNTEsNiArNTEsNDkgQEAgc3ViIHRlc3RfcmVj b3Zlcnlfc3RhbmRieQogCXJldHVybjsKIH0KIAorIyBTdGFydCBhIHN0YW5kYnkgd2l0aCB0aGUg Z2l2ZW4gcGdfY3RsIC0tb3B0aW9ucyBzdHJpbmcgYW5kIHZlcmlmeSB0aGF0CisjIHRoZSBzdGFu ZGJ5IHJlYWNoZXMgdGhlIGdpdmVuIExTTiBhbmQgcm93IGNvdW50LiAgVXNlZCB0byBleGVyY2lz ZQorIyBzY2VuYXJpb3MgdGhhdCByZXF1aXJlIHRoZSBwb3N0bWFzdGVyIGNvbW1hbmQgbGluZSB0 byByZWNlaXZlIG11bHRpcGxlCisjICItYyBuYW1lPXZhbHVlIiBpbnN0YW5jZXMgb2YgdGhlIHNh bWUgR1VDLCB3aGljaCBwb3N0Z3Jlc3FsLmNvbmYgY2Fubm90CisjIGV4cHJlc3MgYmVjYXVzZSBQ cm9jZXNzQ29uZmlnRmlsZSBjb2xsYXBzZXMgZHVwbGljYXRlIGtleXMuCitzdWIgdGVzdF9yZWNv dmVyeV9zdGFuZGJ5X3dpdGhfb3B0aW9ucworeworCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZl bCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7CisKKwlteSAkdGVzdF9uYW1lID0gc2hpZnQ7 CisJbXkgJG5vZGVfbmFtZSA9IHNoaWZ0OworCW15ICRub2RlX3ByaW1hcnkgPSBzaGlmdDsKKwlt eSAkb3B0aW9ucyA9IHNoaWZ0OworCW15ICRudW1fcm93cyA9IHNoaWZ0OworCW15ICR1bnRpbF9s c24gPSBzaGlmdDsKKworCW15ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJG5vZGVfbmFtZSk7CisJJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgk bm9kZV9wcmltYXJ5LCAnbXlfYmFja3VwJywKKwkJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKworCW15 ICRyZXMgPSBydW5fbG9nKAorCQlbCisJCQkncGdfY3RsJywKKwkJCSctLXBnZGF0YScgPT4gJG5v ZGVfc3RhbmRieS0+ZGF0YV9kaXIsCisJCQknLS1sb2cnID0+ICRub2RlX3N0YW5kYnktPmxvZ2Zp bGUsCisJCQknLS1vcHRpb25zJyA9PiAkb3B0aW9ucywKKwkJCSdzdGFydCcsCisJCV0pOworCW9r KCRyZXMsICJzZXJ2ZXIgc3RhcnRzIGZvciAkdGVzdF9uYW1lIik7CisKKwkkbm9kZV9zdGFuZGJ5 LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgJyR1bnRpbF9sc24nOjpw Z19sc24gPD0gcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpIikKKwkgIG9yIGRpZSAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIHN0YW5kYnkgdG8gY2F0Y2ggdXAiOworCisJbXkgJGNvdW50ID0g JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikg RlJPTSB0YWJfaW50Iik7CisJaXMoJGNvdW50LCBxcSgkbnVtX3Jvd3MpLCAiY2hlY2sgc3RhbmRi eSBjb250ZW50IGZvciAkdGVzdF9uYW1lIik7CisKKwkkbm9kZV9zdGFuZGJ5LT50ZWFyZG93bl9u b2RlOworCisJcmV0dXJuOworfQorCiAjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCiBteSAkbm9k ZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7CiAk bm9kZV9wcmltYXJ5LT5pbml0KGhhc19hcmNoaXZpbmcgPT4gMSwgYWxsb3dzX3N0cmVhbWluZyA9 PiAxKTsKQEAgLTEwOCw2ICsxNTEsMTMgQEAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAjIEZvcmNlIGFyY2hpdmluZyBvZiBXQUwgZmlsZQogJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfc3dpdGNoX3dhbCgpIik7CiAKKyMgTFNOIGFm dGVyIHRoZSBmaW5hbCA2MDAwLXJvdyBpbnNlcnQgYW5kIFdBTCBzd2l0Y2guICBVc2VkIGJ5IHRo ZQorIyBzZXQtdGhlbi1jbGVhcmVkIHNjZW5hcmlvcyBiZWxvdyB3aGVyZSByZWNvdmVyeSBoYXMg bm8gdGFyZ2V0IGFuZCBtdXN0CisjIHJlcGxheSBhbGwgYXJjaGl2ZWQgV0FMOyBwb2xsaW5nIG9u ICRsc241IHdvdWxkIHJhY2UgYWdhaW5zdCB0aGUgNTAwMS02MDAwCisjIHJvd3MuCitteSAkbHNu NiA9CisgICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1 cnJlbnRfd2FsX2xzbigpIik7CisKICMgVGVzdCByZWNvdmVyeSB0YXJnZXRzCiBteSBAcmVjb3Zl cnlfcGFyYW1zID0gKCJyZWNvdmVyeV90YXJnZXQgPSAnaW1tZWRpYXRlJyIpOwogdGVzdF9yZWNv dmVyeV9zdGFuZGJ5KCdpbW1lZGlhdGUgdGFyZ2V0JywKQEAgLTEyNSwxMSArMTc1LDI0IEBAIHRl c3RfcmVjb3Zlcnlfc3RhbmRieSgnbmFtZScsICdzdGFuZGJ5XzQnLCAkbm9kZV9wcmltYXJ5LCBc QHJlY292ZXJ5X3BhcmFtcywKIHRlc3RfcmVjb3Zlcnlfc3RhbmRieSgnTFNOJywgJ3N0YW5kYnlf NScsICRub2RlX3ByaW1hcnksIFxAcmVjb3ZlcnlfcGFyYW1zLAogCSI1MDAwIiwgJGxzbjUpOwog CisjIFJlZ3Jlc3Npb246IGVtcHR5LXN0cmluZyBmb3Igb25lIHJlY292ZXJ5X3RhcmdldF8qIEdV QyBtdXN0IG5vdCBjbG9iYmVyCisjIGFub3RoZXIgbm9uLWVtcHR5IHRhcmdldC4gIFNldHRpbmcg cmVjb3ZlcnlfdGFyZ2V0X3hpZCArIHJlY292ZXJ5X3RhcmdldF90aW1lCisjID0gJycgbXVzdCBy ZWNvdmVyIHRvIHRoZSB4aWQsIG5vdCBydW4gYXMgbm8tdGFyZ2V0IHJlY292ZXJ5LgorQHJlY292 ZXJ5X3BhcmFtcyA9ICgKKwkicmVjb3ZlcnlfdGFyZ2V0X3hpZCA9ICckcmVjb3ZlcnlfdHhpZCci LAorCSJyZWNvdmVyeV90YXJnZXRfdGltZSA9ICcnIik7Cit0ZXN0X3JlY292ZXJ5X3N0YW5kYnko J3hpZCB3aXRoIGVtcHR5IHRpbWUgR1VDJywKKwknc3RhbmRieV94aWRfZW1wdHlfdGltZScsICRu b2RlX3ByaW1hcnksIFxAcmVjb3ZlcnlfcGFyYW1zLAorCSIyMDAwIiwgJGxzbjIpOworCiAjIE11 bHRpcGxlIHRhcmdldHMKICMKLSMgTXVsdGlwbGUgY29uZmxpY3Rpbmcgc2V0dGluZ3MgYXJlIG5v dCBhbGxvd2VkLCBidXQgc2V0dGluZyB0aGUgc2FtZQotIyBwYXJhbWV0ZXIgbXVsdGlwbGUgdGlt ZXMgb3IgdW5zZXR0aW5nIGEgcGFyYW1ldGVyIGFuZCBzZXR0aW5nIGEKLSMgZGlmZmVyZW50IG9u ZSBpcyBhbGxvd2VkLgorIyBNdWx0aXBsZSBjb25mbGljdGluZyBub24tZW1wdHkgc2V0dGluZ3Mg YXJlIG5vdCBhbGxvd2VkLiAgU2V0dGluZyB0aGUgc2FtZQorIyBwYXJhbWV0ZXIgbXVsdGlwbGUg dGltZXMgaXMgYWxsb3dlZCAodGhlIGxhc3QgdmFsdWUgd2lucywgcGVyIFByb2Nlc3NDb25maWdG aWxlCisjIGR1cGxpY2F0ZSBoYW5kbGluZykuICBBbiBlbXB0eSBzdHJpbmcgZm9yIGEgcmVjb3Zl cnlfdGFyZ2V0XyogR1VDIGlzIHRyZWF0ZWQKKyMgYXMgdGhlIEdVQydzIGRlZmF1bHQgYW5kIGlz IGEgbm8tb3A7IGl0IGRvZXMgbm90IGNsZWFyIGFueSBvdGhlciBhbHJlYWR5LXNldAorIyB0YXJn ZXQuICBDb25mbGljdCBkZXRlY3Rpb24gcnVucyBpbiBDaGVja1JlY292ZXJ5VGFyZ2V0Q29uZmxp Y3RzKCkgYXQgZXZlcnkKKyMgc2VydmVyIHN0YXJ0LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgcmVj b3ZlcnkgaXMgcmVxdWVzdGVkLgogCiBAcmVjb3ZlcnlfcGFyYW1zID0gKAogCSJyZWNvdmVyeV90 YXJnZXRfbmFtZSA9ICckcmVjb3ZlcnlfbmFtZSciLApAQCAtMTU5LDYgKzIyMiwyMSBAQCBsaWtl KAogCSRsb2dmaWxlLAogCXFyL211bHRpcGxlIHJlY292ZXJ5IHRhcmdldHMgc3BlY2lmaWVkLywK IAknbXVsdGlwbGUgY29uZmxpY3Rpbmcgc2V0dGluZ3MnKTsKKyMgZXJyZGV0YWlsIGxpc3RzIGV4 YWN0bHkgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgc2V0LCBpbiBHVUMtY2hlY2sgb3JkZXIKKyMg KHJlY292ZXJ5X3RhcmdldF9uYW1lIGlzIGNoZWNrZWQgYmVmb3JlIHJlY292ZXJ5X3RhcmdldF90 aW1lKS4KK2xpa2UoCisJJGxvZ2ZpbGUsCisJcXIvUmVjb3ZlcnkgdGFyZ2V0cyAicmVjb3Zlcnlf dGFyZ2V0X25hbWUiLCAicmVjb3ZlcnlfdGFyZ2V0X3RpbWUiIGFyZSBzZXQvLAorCSdlcnJkZXRh aWwgbGlzdHMgdGhlIHNldCBwYXJhbWV0ZXJzIGluIG9yZGVyJyk7CisjIFRoZSBwYXJhbWV0ZXIg dmFsdWVzIG11c3Qgbm90IGJlIGVjaG9lZCAob25seSB0aGUgbmFtZXMgYXJlIGxpc3RlZCkuCit1 bmxpa2UoCisJJGxvZ2ZpbGUsCisJcXIvYXJlIHNldFteXG5dKj0vLAorCSdlcnJkZXRhaWwgZG9l cyBub3QgZWNobyBwYXJhbWV0ZXIgdmFsdWVzJyk7CitsaWtlKAorCSRsb2dmaWxlLAorCXFyL0hJ TlQ6LipwZ19zZXR0aW5ncy8sCisJJ2VycmhpbnQgcG9pbnRzIHRvIHBnX3NldHRpbmdzJyk7CiAK ICMgQ2hlY2sgYmVoYXZpb3Igd2hlbiByZWNvdmVyeSBlbmRzIGJlZm9yZSB0YXJnZXQgaXMgcmVh Y2hlZAogCkBAIC0xOTAsNiArMjY4LDE3MyBAQCBsaWtlKAogCXFyL0ZBVEFMOiAuKiByZWNvdmVy eSBlbmRlZCBiZWZvcmUgY29uZmlndXJlZCByZWNvdmVyeSB0YXJnZXQgd2FzIHJlYWNoZWQvLAog CSdyZWNvdmVyeSBlbmQgYmVmb3JlIHRhcmdldCByZWFjaGVkIGlzIGEgZmF0YWwgZXJyb3InKTsK IAorIyBDb25mbGljdGluZyByZWNvdmVyeSB0YXJnZXRzIGFyZSByZWplY3RlZCBhdCBldmVyeSBz dGFydHVwLCByZWdhcmRsZXNzIG9mCisjIHdoZXRoZXIgcmVjb3Zlcnkuc2lnbmFsIGlzIHByZXNl bnQuICBVc2UgYSB0aHJvd2F3YXkgY2x1c3RlciBpbml0aWFsaXplZAorIyBmcm9tIHRoZSBleGlz dGluZyBiYWNrdXAgc28gd2UgY2FuIGxlYXZlIGNvbmZsaWN0aW5nIEdVQ3MgaW4gaXRzCisjIHBv c3RncmVzcWwuY29uZiB3aXRob3V0IHBvbGx1dGluZyB0aGUgcHJpbWFyeSB1c2VkIGJ5IGxhdGVy IHRlc3RzLgorIyBpbml0X2Zyb21fYmFja3VwIGlzIGNhbGxlZCB3aXRob3V0IGhhc19yZXN0b3Jp bmcsIHNvIG5vIHJlY292ZXJ5LnNpZ25hbAorIyBpcyBjcmVhdGVkIGFuZCB0aGUgY2x1c3RlciB3 b3VsZCBub3JtYWxseSBzdGFydCBhcyBhIHBsYWluIHByaW1hcnk7IHRoZQorIyBjb25mbGljdGlu ZyByZWNvdmVyeV90YXJnZXRfKiBHVUNzIG11c3QgYmUgcmVqZWN0ZWQgYW55d2F5LgorbXkgJG5v ZGVfbm9fc2lnbmFsID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtdWx0aV90YXJn ZXRfbm9fc2lnbmFsJyk7Ciskbm9kZV9ub19zaWduYWwtPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVf cHJpbWFyeSwgJ215X2JhY2t1cCcpOworJG5vZGVfbm9fc2lnbmFsLT5hcHBlbmRfY29uZigKKwkn cG9zdGdyZXNxbC5jb25mJywgInJlY292ZXJ5X3RhcmdldF9uYW1lID0gJyRyZWNvdmVyeV9uYW1l JworcmVjb3ZlcnlfdGFyZ2V0X3RpbWUgPSAnJHJlY292ZXJ5X3RpbWUnIik7CisKK215ICRyZXNf bm9fc2lnbmFsID0gcnVuX2xvZygKKwlbCisJCSdwZ19jdGwnLAorCQknLS1wZ2RhdGEnID0+ICRu b2RlX25vX3NpZ25hbC0+ZGF0YV9kaXIsCisJCSctLWxvZycgPT4gJG5vZGVfbm9fc2lnbmFsLT5s b2dmaWxlLAorCQknc3RhcnQnLAorCV0pOworb2soISRyZXNfbm9fc2lnbmFsLAorCSdzZXJ2ZXIg ZmFpbHMgdG8gc3RhcnQgd2l0aCBjb25mbGljdGluZyByZWNvdmVyeSB0YXJnZXRzIGFuZCBubyBy ZWNvdmVyeS5zaWduYWwnKTsKKworbXkgJGxvZ2ZpbGVfbm9fc2lnbmFsID0gc2x1cnBfZmlsZSgk bm9kZV9ub19zaWduYWwtPmxvZ2ZpbGUoKSk7CitsaWtlKAorCSRsb2dmaWxlX25vX3NpZ25hbCwK Kwlxci9tdWx0aXBsZSByZWNvdmVyeSB0YXJnZXRzIHNwZWNpZmllZC8sCisJJ2V4cGVjdGVkIGVy cm9yIG1lc3NhZ2UgbG9nZ2VkIHdpdGhvdXQgcmVjb3Zlcnkuc2lnbmFsJyk7CitsaWtlKAorCSRs b2dmaWxlX25vX3NpZ25hbCwKKwlxci9SZWNvdmVyeSB0YXJnZXRzICJyZWNvdmVyeV90YXJnZXRf bmFtZSIsICJyZWNvdmVyeV90YXJnZXRfdGltZSIgYXJlIHNldC8sCisJJ2VycmRldGFpbCBsaXN0 cyB0aGUgc2V0IHBhcmFtZXRlcnMgaW4gb3JkZXIgd2l0aG91dCByZWNvdmVyeS5zaWduYWwnKTsK K3VubGlrZSgKKwkkbG9nZmlsZV9ub19zaWduYWwsCisJcXIvYXJlIHNldFteXG5dKj0vLAorCSdl cnJkZXRhaWwgZG9lcyBub3QgZWNobyBwYXJhbWV0ZXIgdmFsdWVzIHdpdGhvdXQgcmVjb3Zlcnku c2lnbmFsJyk7CitsaWtlKAorCSRsb2dmaWxlX25vX3NpZ25hbCwKKwlxci9ISU5UOi4qcGdfc2V0 dGluZ3MvLAorCSdlcnJoaW50IHBvaW50cyB0byBwZ19zZXR0aW5ncyB3aXRob3V0IHJlY292ZXJ5 LnNpZ25hbCcpOworCisjIENvbmZsaWN0IGludm9sdmluZyB0aGUgYmFyZSByZWNvdmVyeV90YXJn ZXQgKG5vIHN1ZmZpeCk6IGl0IGlzIGNoZWNrZWQgZmlyc3QsCisjIHNvIGl0cyBuYW1lIGFwcGVh cnMgYXQgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICBUaGUgbGlzdCBlbnRyaWVzIGFyZSBxdW90ZWQs IHNvCisjIHRoZSByZWdleCBhbmNob3JzIG9uIHRoZSBjbG9zaW5nIHF1b3RlIHRvIGVuc3VyZSAi cmVjb3ZlcnlfdGFyZ2V0IiBkb2VzIG5vdAorIyBtYXRjaCBhIHByZWZpeCBvZiAicmVjb3Zlcnlf dGFyZ2V0X3hpZCIuCitteSAkbm9kZV9iYXJlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdtdWx0aV90YXJnZXRfYmFyZScpOworJG5vZGVfYmFyZS0+aW5pdF9mcm9tX2JhY2t1cCgk bm9kZV9wcmltYXJ5LCAnbXlfYmFja3VwJyk7Ciskbm9kZV9iYXJlLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywKKwkicmVjb3ZlcnlfdGFyZ2V0ID0gJ2ltbWVkaWF0ZSdcbnJlY292ZXJ5 X3RhcmdldF94aWQgPSAnJHJlY292ZXJ5X3R4aWQnIik7CisKK215ICRyZXNfYmFyZSA9IHJ1bl9s b2coCisJWworCQkncGdfY3RsJywKKwkJJy0tcGdkYXRhJyA9PiAkbm9kZV9iYXJlLT5kYXRhX2Rp ciwKKwkJJy0tbG9nJyA9PiAkbm9kZV9iYXJlLT5sb2dmaWxlLAorCQknc3RhcnQnLAorCV0pOwor b2soISRyZXNfYmFyZSwKKwknc2VydmVyIGZhaWxzIHRvIHN0YXJ0IHdpdGggYmFyZSByZWNvdmVy eV90YXJnZXQgY29uZmxpY3QnKTsKKworbXkgJGxvZ2ZpbGVfYmFyZSA9IHNsdXJwX2ZpbGUoJG5v ZGVfYmFyZS0+bG9nZmlsZSgpKTsKK2xpa2UoCisJJGxvZ2ZpbGVfYmFyZSwKKwlxci9SZWNvdmVy eSB0YXJnZXRzICJyZWNvdmVyeV90YXJnZXQiLCAicmVjb3ZlcnlfdGFyZ2V0X3hpZCIgYXJlIHNl dC8sCisJJ2VycmRldGFpbCBsaXN0cyB0aGUgYmFyZSByZWNvdmVyeV90YXJnZXQgZmlyc3QsIHdp dGhvdXQgcHJlZml4IG1pc21hdGNoJyk7CisKKyMgVGhyZWUgY29uZmxpY3RpbmcgdGFyZ2V0czog ZXhlcmNpc2VzIHRoZSAiLCAiIHNlcGFyYXRvciBiZXR3ZWVuIG1vcmUgdGhhbiB0d28KKyMgZW50 cmllcyAobm8gdHJhaWxpbmcgc2VwYXJhdG9yIGFmdGVyIHRoZSBsYXN0IGVudHJ5KS4KK215ICRu b2RlX3RocmVlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtdWx0aV90YXJnZXRf dGhyZWUnKTsKKyRub2RlX3RocmVlLT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICdt eV9iYWNrdXAnKTsKKyRub2RlX3RocmVlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkicmVjb3ZlcnlfdGFyZ2V0X25hbWUgPSAnJHJlY292ZXJ5X25hbWUnXG4iCisJICAuICJyZWNv dmVyeV90YXJnZXRfdGltZSA9ICckcmVjb3ZlcnlfdGltZSdcbiIKKwkgIC4gInJlY292ZXJ5X3Rh cmdldF94aWQgPSAnJHJlY292ZXJ5X3R4aWQnIik7CisKK215ICRyZXNfdGhyZWUgPSBydW5fbG9n KAorCVsKKwkJJ3BnX2N0bCcsCisJCSctLXBnZGF0YScgPT4gJG5vZGVfdGhyZWUtPmRhdGFfZGly LAorCQknLS1sb2cnID0+ICRub2RlX3RocmVlLT5sb2dmaWxlLAorCQknc3RhcnQnLAorCV0pOwor b2soISRyZXNfdGhyZWUsCisJJ3NlcnZlciBmYWlscyB0byBzdGFydCB3aXRoIHRocmVlIGNvbmZs aWN0aW5nIHJlY292ZXJ5IHRhcmdldHMnKTsKKworbXkgJGxvZ2ZpbGVfdGhyZWUgPSBzbHVycF9m aWxlKCRub2RlX3RocmVlLT5sb2dmaWxlKCkpOworbGlrZSgKKwkkbG9nZmlsZV90aHJlZSwKKwlx ci9SZWNvdmVyeSB0YXJnZXRzICJyZWNvdmVyeV90YXJnZXRfbmFtZSIsICJyZWNvdmVyeV90YXJn ZXRfdGltZSIsICJyZWNvdmVyeV90YXJnZXRfeGlkIiBhcmUgc2V0LywKKwknZXJyZGV0YWlsIGxp c3RzIHRocmVlIHNldCBwYXJhbWV0ZXJzIHdpdGggY29ycmVjdCBzZXBhcmF0b3JzJyk7CisKKyMg U2FtZS1HVUMgbGFzdC13aW5zIChvbmUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgR1VDJ3MgdmFs dWUpOiBhc3NpZ25pbmcgYQorIyByZWNvdmVyeV90YXJnZXRfKiBHVUMgYW5kIHRoZW4gYXNzaWdu aW5nIHRoZSBzYW1lIEdVQyB0byBhbiBlbXB0eSBzdHJpbmcKKyMgbGVhdmVzIG5vIHRhcmdldCBz ZXQgYW5kIHJlY292ZXJ5IHByb2NlZWRzIHRvIHRoZSBlbmQgb2YgV0FMLiAgVGhpcyBpcyB0aGUK KyMgInNldCB0aGVuIHVuc2V0IiBmb3JtIG9mIEdVQyByZWFzc2lnbm1lbnQ7IHRoZSBhc3NpZ24g aG9vayBjbGVhcnMgaXRzIG93bgorIyB0eXBlIHdoZW4gdGhlIG5ldyB2YWx1ZSBpcyBlbXB0eS4g IHBvc3RncmVzcWwuY29uZiBjYW5ub3QgZXhwcmVzcyBkdXBsaWNhdGUKKyMga2V5cyAoUHJvY2Vz c0NvbmZpZ0ZpbGUgY29sbGFwc2VzIHRoZW0pLCBzbyB0aGUgcG9zdG1hc3RlciBjb21tYW5kIGxp bmUgaXMKKyMgdXNlZCB2aWEgInBnX2N0bCAtLW9wdGlvbnMiLiAgRWFjaCBvZiB0aGUgZml2ZSBy ZWNvdmVyeV90YXJnZXRfKiBhc3NpZ24KKyMgaG9va3MgaXMgZXhlcmNpc2VkIG9uY2UuCisjCisj IE5vdGU6IEdVQyB2YWx1ZXMgYmVsb3cgYXJlIHBhc3NlZCB1bnF1b3RlZCBvbiB0aGUgY29tbWFu ZCBsaW5lLiAgV2luZG93cworIyBjbWQuZXhlIGRvZXMgbm90IHN0cmlwIHNpbmdsZSBxdW90ZXMg dGhlIHdheSBQT1NJWCBzaGVsbHMgZG8sIHNvIHF1b3RlZAorIyB2YWx1ZXMgd291bGQgcmVhY2gg dGhlIHBvc3RtYXN0ZXIgdmVyYmF0aW0gYW5kIGJlIHJlamVjdGVkLiAgcmVjb3ZlcnlfdGltZQor IyBmcm9tIG5vdygpIGNvbnRhaW5zIGEgc3BhY2U7IHdlIHJlcGxhY2UgaXQgd2l0aCB0aGUgSVNP IDg2MDEgVCBzZXBhcmF0b3IKKyMgc28gdGhlIHZhbHVlIGlzIGEgc2luZ2xlIHNoZWxsIHRva2Vu IHdpdGhvdXQgcXVvdGluZy4KK215ICRyZWNvdmVyeV90aW1lX3QgPSAkcmVjb3ZlcnlfdGltZTsK KyRyZWNvdmVyeV90aW1lX3QgPX4gcy8gL1QvOworCit0ZXN0X3JlY292ZXJ5X3N0YW5kYnlfd2l0 aF9vcHRpb25zKAorCSdyZWNvdmVyeV90YXJnZXRfeGlkIHNldCB0aGVuIGNsZWFyZWQnLAorCSdz dGFuZGJ5X3hpZF9zZXRfY2xlYXInLCAkbm9kZV9wcmltYXJ5LAorCSItYyByZWNvdmVyeV90YXJn ZXRfeGlkPSRyZWNvdmVyeV90eGlkIC1jIHJlY292ZXJ5X3RhcmdldF94aWQ9IiwKKwkiNjAwMCIs ICRsc242KTsKKwordGVzdF9yZWNvdmVyeV9zdGFuZGJ5X3dpdGhfb3B0aW9ucygKKwkncmVjb3Zl cnlfdGFyZ2V0X3RpbWUgc2V0IHRoZW4gY2xlYXJlZCcsCisJJ3N0YW5kYnlfdGltZV9zZXRfY2xl YXInLCAkbm9kZV9wcmltYXJ5LAorCSItYyByZWNvdmVyeV90YXJnZXRfdGltZT0kcmVjb3Zlcnlf dGltZV90IC1jIHJlY292ZXJ5X3RhcmdldF90aW1lPSIsCisJIjYwMDAiLCAkbHNuNik7CisKK3Rl c3RfcmVjb3Zlcnlfc3RhbmRieV93aXRoX29wdGlvbnMoCisJJ3JlY292ZXJ5X3RhcmdldF9uYW1l IHNldCB0aGVuIGNsZWFyZWQnLAorCSdzdGFuZGJ5X25hbWVfc2V0X2NsZWFyJywgJG5vZGVfcHJp bWFyeSwKKwkiLWMgcmVjb3ZlcnlfdGFyZ2V0X25hbWU9JHJlY292ZXJ5X25hbWUgLWMgcmVjb3Zl cnlfdGFyZ2V0X25hbWU9IiwKKwkiNjAwMCIsICRsc242KTsKKwordGVzdF9yZWNvdmVyeV9zdGFu ZGJ5X3dpdGhfb3B0aW9ucygKKwkncmVjb3ZlcnlfdGFyZ2V0X2xzbiBzZXQgdGhlbiBjbGVhcmVk JywKKwknc3RhbmRieV9sc25fc2V0X2NsZWFyJywgJG5vZGVfcHJpbWFyeSwKKwkiLWMgcmVjb3Zl cnlfdGFyZ2V0X2xzbj0kcmVjb3ZlcnlfbHNuIC1jIHJlY292ZXJ5X3RhcmdldF9sc249IiwKKwki NjAwMCIsICRsc242KTsKKwordGVzdF9yZWNvdmVyeV9zdGFuZGJ5X3dpdGhfb3B0aW9ucygKKwkn cmVjb3ZlcnlfdGFyZ2V0IHNldCB0aGVuIGNsZWFyZWQnLAorCSdzdGFuZGJ5X2ltbWVkaWF0ZV9z ZXRfY2xlYXInLCAkbm9kZV9wcmltYXJ5LAorCSItYyByZWNvdmVyeV90YXJnZXQ9aW1tZWRpYXRl IC1jIHJlY292ZXJ5X3RhcmdldD0iLAorCSI2MDAwIiwgJGxzbjYpOworCisjIFNhbWUtR1VDIGVt cHR5LXRoZW4tc2V0IHNhbml0eTogYXNzaWduaW5nIGFuIGVtcHR5IHN0cmluZyBhbmQgdGhlbiBh CisjIG5vbi1lbXB0eSB2YWx1ZSB0byB0aGUgc2FtZSBHVUMgbXVzdCBlbmQgd2l0aCB0aGUgdGFy Z2V0IHNldC4gIFRoZSBlbXB0eQorIyB2YWx1ZSBzZWVuIGZpcnN0IG11c3Qgbm90IHBvaXNvbiBh IGxhdGVyIG5vbi1lbXB0eSBhc3NpZ25tZW50LgorbXkgJG5vZGVfeGlkX2NsZWFyX3NldCA9Cisg IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieV94aWRfY2xlYXJfc2V0Jyk7 Ciskbm9kZV94aWRfY2xlYXJfc2V0LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICdt eV9iYWNrdXAnLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7CisKK215ICRyZXNfeGlkX2NsZWFyX3Nl dCA9IHJ1bl9sb2coCisJWworCQkncGdfY3RsJywKKwkJJy0tcGdkYXRhJyA9PiAkbm9kZV94aWRf Y2xlYXJfc2V0LT5kYXRhX2RpciwKKwkJJy0tbG9nJyA9PiAkbm9kZV94aWRfY2xlYXJfc2V0LT5s b2dmaWxlLAorCQknLS1vcHRpb25zJyA9PgorCQkgICItYyByZWNvdmVyeV90YXJnZXRfeGlkPSAt YyByZWNvdmVyeV90YXJnZXRfeGlkPSRyZWNvdmVyeV90eGlkIiwKKwkJJ3N0YXJ0JywKKwldKTsK K29rKCRyZXNfeGlkX2NsZWFyX3NldCwKKwknc2VydmVyIHN0YXJ0cyB3aXRoIHJlY292ZXJ5X3Rh cmdldF94aWQgY2xlYXJlZCB0aGVuIHNldCcpOworCiskbm9kZV94aWRfY2xlYXJfc2V0LT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCAnJGxzbjInOjpwZ19sc24gPD0gcGdf bGFzdF93YWxfcmVwbGF5X2xzbigpIikKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3Igc3RhbmRieSB0byBjYXRjaCB1cCI7CitteSAkY291bnRfeGlkX2NsZWFyX3NldCA9ICRu b2RlX3hpZF9jbGVhcl9zZXQtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQo KikgRlJPTSB0YWJfaW50Iik7CitpcygkY291bnRfeGlkX2NsZWFyX3NldCwgIjIwMDAiLAorCSdy ZWNvdmVyeV90YXJnZXRfeGlkIGhvbm9yZWQgd2hlbiBjbGVhcmVkIHRoZW4gc2V0Jyk7Ciskbm9k ZV94aWRfY2xlYXJfc2V0LT50ZWFyZG93bl9ub2RlOworCiAjIEludmFsaWQgcmVjb3ZlcnlfdGFy Z2V0X3RpbWVsaW5lIHRlc3RzCiBteSAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9k ZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCiAJIkFMVEVSIFNZU1RFTSBTRVQgcmVjb3Zlcnlf dGFyZ2V0X3RpbWVsaW5lIFRPICdib2d1cyciKTsKLS0gCjIuNTIuMAoK --00000000000003bc5c0654c0240d--