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 1trweb-00CWHY-1z for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Mar 2025 10:16:05 +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 1trweZ-00Cw0s-PV for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Mar 2025 10:16:03 +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.94.2) (envelope-from ) id 1trweZ-00CvxG-8w for pgsql-hackers@lists.postgresql.org; Tue, 11 Mar 2025 10:16:03 +0000 Received: from mail-vk1-xa34.google.com ([2607:f8b0:4864:20::a34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1trweV-002DJK-0U for pgsql-hackers@postgresql.org; Tue, 11 Mar 2025 10:16:02 +0000 Received: by mail-vk1-xa34.google.com with SMTP id 71dfb90a1353d-524168b16d3so1164260e0c.0 for ; Tue, 11 Mar 2025 03:16:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741688158; x=1742292958; 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=NwQomRSNd3MLIKYcv/CcoJedZIEtIeMkgpywunwa8Vw=; b=C5xoGJnOod6V6wjmzK0TY2BR63pWZHIRCsfQR5z3kcdlGCatsoYngqKSmS4OFpuioK DpqXMy0NdS1Whem+1B9YUr+sVm/LYqq6+CRjgdx1TbFWdm0yVBqhi+qq9Gv7wJKTuIY3 YoTrt1w8iBa6xucALJd+FbfPVPT5lSLz9pW8GU9y9VeDJDSlUzuIMo1nJRCFGvuFgMdO WTReMUKh9iG2/aMjsrRRqZiCMMjNeyvQGPtqk894lO2PvDrX2QSOCptScapEaI+VspSZ jWebmtbDmiCIJ22MXuC5kVxARmNiQU+NYsUMYsYy7o5VrjORgCSDEh/18aNQCH+b+/5t swUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741688158; x=1742292958; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NwQomRSNd3MLIKYcv/CcoJedZIEtIeMkgpywunwa8Vw=; b=BOkFG/lp4gmGdxQaxaNOGqvImJWLtev8IMacD4mla6VQlZJvxA/OZyZC5tpWda63dm 8HXYz154FG7of8yS0cLkAdVpGvjSFFjJ7hAW2NHYSuuaoQQOhXw0iPgRkBY/1SoEvO5o NF6PUKZIatPvV2RP15lwDlUZmYF3mt4jG7FP6h1rYuMiIogrl5TUnUYyjPp9jeEJMjrD 9gC/e22CpWVHvA2jYiqv3KV9XcpyHTVbndwcqVCM2HndiG+SXGlBfbAMDT9Jez0q5atI 7PhI9sgk5YtNhTqL6WBQePQPbGRzwNT18qf9HoAQflNeX+4dyN+TYrXNUtwpFv8Zzf2f lbPg== X-Gm-Message-State: AOJu0YzO9vcFYTOpuo6dYUbAaGZySbMum9rlOt5sQnRqxh2XxLafc/HU MmMsJcbXNqisDSTvAP/qy/W2MxKtE1/RSejBIkLnylDx0xK5fmmyTabEB51P65A7/jKpqAz752y kkDQgkfZ6GW4wwpCj9WzxHj4tgg== X-Gm-Gg: ASbGncvBolWuilYsqd72cdskSCiyjUeDOSYIE5hMrV0uvTGoRKFx193MNYeJ0ntqnOA /VZadggCyEdQ6iiyUTLfw31pF6sHTmIWbgn89MZEM4gcKNhTZfbzmUECbAOzdcJ153kOcHbIlx1 EmnF8XSg70f9rynT3K9Mxq/EhiuQ== X-Google-Smtp-Source: AGHT+IEAnY6BYb0KvOhJKWdZsHMWUoR8hfVVos/qT8uA3uY+WNQlmfRMFq1NW51ACxeejV/silRBU2YgTRiPJ/OUpTs= X-Received: by 2002:a05:6122:3c8e:b0:523:a88b:9ac5 with SMTP id 71dfb90a1353d-523e413d0c0mr10431328e0c.9.1741688158422; Tue, 11 Mar 2025 03:15:58 -0700 (PDT) MIME-Version: 1.0 References: <202503101150.dlnf4sfsqjd5@alvherre.pgsql> In-Reply-To: <202503101150.dlnf4sfsqjd5@alvherre.pgsql> From: Rushabh Lathia Date: Tue, 11 Mar 2025 15:45:46 +0530 X-Gm-Features: AQ5f1Jo9t0QcFX0BiiZwED0OMwKz2w5OUea3vlDTK31X0dsbedYD09nuFD1oEPQ Message-ID: Subject: Re: Support NOT VALID / VALIDATE constraint options for named NOT NULL constraints To: Alvaro Herrera Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000fe4e2306300e5f9a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fe4e2306300e5f9a Content-Type: multipart/alternative; boundary="000000000000fe4e2106300e5f98" --000000000000fe4e2106300e5f98 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 10, 2025 at 5:20=E2=80=AFPM Alvaro Herrera wrote: > On 2025-Mar-10, Rushabh Lathia wrote: > > > I adjusted the set_attnotnull() API and removed the added > > queue_validation parameter. Rather, the function start using wqueue > > input parameter as a check. > > If wqueue is NULL, skip the queue_validation. Attaching patch here, > > but not sure how clear it is, in term of understanding the API. Your > > thoughts/inputs? > > Yeah, I think this makes sense, if it supports all the cases correctly. > (If in your code you have any calls of set_attnotnull that pass a NULL > wqueue during ALTER TABLE in order to avoid queueing a check, you had > better have comments to explain this.) > Done. > > Kindly do not send patches standalone, because the CFbot doesn't > understand that it needs to apply it on top of the three previous > patches. You need to send all 4 patches every time. You can see the > result here: > https://commitfest.postgresql.org/patch/5554/ > If you click on the "need rebase!" label you'll see that it tried to > apply patch 0004 to the top of the master branch, and that obviously > failed. (FWIW if you click on the "summary" label you'll also see that > the patch has been failing the CI tests since Feb 27.) > Sure, attaching the rebased patch here. > > > Looking further for AdjustNotNullInheritance() I don't see need of > > rename this API as it's just adding new error check now for an > > existing NOT NULL constraint. > > OK. > > > JFYI, I can reproduce the failure Ashutosh Bapat reported, while > > running the pg_upgrade test through meson commands. I am > > investigating that further. > > Ah good, thanks. > Somehow, I am now not able to reproduce after the clean build. Yesterday I was able to reproduce, so I was happy, but again trying to analyze the issue when I start with the Thanks, Rushabh Lathia www.EnterpriseDB.com --000000000000fe4e2106300e5f98 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Mon, Mar 10,= 2025 at 5:20=E2=80=AFPM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
On 2025-Mar-10, Rushabh Lathia wrote:
> I adjusted the set_attnotnull() API and removed the added
> queue_validation parameter.=C2=A0 Rather, the function start using wqu= eue
> input parameter as a check.
> If wqueue is NULL, skip the queue_validation.=C2=A0 Attaching patch he= re,
> but not sure how clear it is, in term of understanding the API.=C2=A0 = Your
> thoughts/inputs?

Yeah, I think this makes sense, if it supports all the cases correctly.
(If in your code you have any calls of set_attnotnull that pass a NULL
wqueue during ALTER TABLE in order to avoid queueing a check, you had
better have comments to explain this.)

= Done.
=C2=A0

Kindly do not send patches standalone, because the CFbot doesn't
understand that it needs to apply it on top of the three previous
patches.=C2=A0 You need to send all 4 patches every time.=C2=A0 You can see= the
result here:
https://commitfest.postgresql.org/patch/5554/
If you click on the "need rebase!" label you'll see that it t= ried to
apply patch 0004 to the top of the master branch, and that obviously
failed.=C2=A0 (FWIW if you click on the "summary" label you'l= l also see that
the patch has been failing the CI tests since Feb 27.)

Sure, attaching the rebased patch here.
=C2=A0

> Looking further for AdjustNotNullInheritance() I don't see need of=
> rename this API as it's just adding new error check now for an
> existing NOT NULL constraint.

OK.

> JFYI, I can reproduce the failure Ashutosh Bapat reported, while
> running the pg_upgrade test through meson commands.=C2=A0 I am
> investigating that further.

Ah good, thanks.

Somehow, I am now not = able to reproduce after the clean build.=C2=A0 Yesterday
I was ab= le to reproduce, so I was happy, but again trying to analyze the issue
when I start=C2=A0with the=C2=A0

Thanks,
Rushabh Lathia
--000000000000fe4e2106300e5f98-- --000000000000fe4e2306300e5f9a Content-Type: application/octet-stream; name="0002-Support-NOT-VALID-and-VALIDATE-CONSTRAINT-for-named-.patch" Content-Disposition: attachment; filename="0002-Support-NOT-VALID-and-VALIDATE-CONSTRAINT-for-named-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m84c2klt1 RnJvbSBhZWU3NWM4ZjBiNWI3ZTFmNWNjZDgzYWI2MmE2MzE2MTFmYWI3MmY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSdXNoYWJoIExhdGhpYSA8cnVzaGFiaC5sYXRoaWFAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAxMCBGZWIgMjAyNSAxNjoyMjozMCArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMi8zXSBTdXBwb3J0IE5PVCBWQUxJRCBhbmQgVkFMSURBVEUgQ09OU1RSQUlOVCBm b3IgbmFtZWQgTk9UCiBOVUxMIGNvbnN0cmFpbnRzLgoKQ29tbWl0IGFsc28gYWRkIHN1cHBvcnQg Zm9yIHBnX2R1bXAgdG8gZHVtcCBOT1QgVkFMSUQgbmFtZWQgTk9UIE5VTEwKY29uc3RyYWludHMu Ci0tLQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jICAgICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICB8ICAzMSArKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgMjQ5ICsrKysrKysrKysrKysrKysr Ky0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgIHwgICAzICst CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgfCAxNjkgKysrKysrKysrKysr Ky0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICB8ICAxNyArKwogc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfYXR0cmlidXRlLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY29uc3RyYWludC5oICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvbnN0cmFpbnRzLm91dCB8IDE1MyArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9jb25zdHJhaW50cy5zcWwgICAgICB8ICA4NSArKysrKysrKwogMTQgZmlsZXMgY2hhbmdl ZCwgNjU5IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290 c3RyYXAuYwppbmRleCAxZTk1ZGMzMmY0Ni4uOTE5OTcyZGM0MDkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYworKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAv Ym9vdHN0cmFwLmMKQEAgLTU4MiwxMCArNTgyLDggQEAgRGVmaW5lQXR0cihjaGFyICpuYW1lLCBj aGFyICp0eXBlLCBpbnQgYXR0bnVtLCBpbnQgbnVsbG5lc3MpCiAKIAlhdHRydHlwZXNbYXR0bnVt XS0+YXR0dHlwbW9kID0gLTE7CiAJYXR0cnR5cGVzW2F0dG51bV0tPmF0dGlzbG9jYWwgPSB0cnVl OwotCS8qIHNldCBkZWZhdWx0IHRvIGZhbHNlICovCiAJYXR0cnR5cGVzW2F0dG51bV0tPmF0dG5v dG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKIAotCiAJaWYgKG51bGxuZXNzID09IEJP T1RDT0xfTlVMTF9GT1JDRV9OT1RfTlVMTCkKIAl7CiAJCWF0dHJ0eXBlc1thdHRudW1dLT5hdHRu b3RudWxsID0gQVRUUklCVVRFX05PVE5VTExfVFJVRTsKQEAgLTY5OSw3ICs2OTcsNyBAQCBJbnNl cnRPbmVOdWxsKGludCBpKQogewogCWVsb2coREVCVUc0LCAiaW5zZXJ0aW5nIGNvbHVtbiAlZCBO VUxMIiwgaSk7CiAJQXNzZXJ0KGkgPj0gMCAmJiBpIDwgTUFYQVRUUik7Ci0JaWYgKFR1cGxlRGVz Y0F0dHIoYm9vdF9yZWxkZXNjLT5yZF9hdHQsIGkpLT5hdHRub3RudWxsID09IEFUVFJJQlVURV9O T1ROVUxMX1RSVUUpCisJaWYgKFR1cGxlRGVzY0F0dHIoYm9vdF9yZWxkZXNjLT5yZF9hdHQsIGkp LT5hdHRub3RudWxsICE9IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFKQogCQllbG9nKEVSUk9SLAog CQkJICJOVUxMIHZhbHVlIHNwZWNpZmllZCBmb3Igbm90LW51bGwgY29sdW1uIFwiJXNcIiBvZiBy ZWxhdGlvbiBcIiVzXCIiLAogCQkJIE5hbWVTdHIoVHVwbGVEZXNjQXR0cihib290X3JlbGRlc2Mt PnJkX2F0dCwgaSktPmF0dG5hbWUpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCA4YzJkMmNkY2RmZS4uNjQ1 OGY3OGMyMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0yNjI2LDcgKzI2MjYsNyBAQCBBZGRSZWxhdGlv bk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJCSAqIHRvIGFkZCBhbm90aGVyIG9uZTsg anVzdCBhZGp1c3QgaW5oZXJpdGFuY2Ugc3RhdHVzIGFzIG5lZWRlZC4KIAkJCSAqLwogCQkJaWYg KEFkanVzdE5vdE51bGxJbmhlcml0YW5jZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIGNvbG51bSwK LQkJCQkJCQkJCQkgaXNfbG9jYWwsIGNkZWYtPmlzX25vX2luaGVyaXQpKQorCQkJCQkJCQkJCSBj ZGVmLT5jb25uYW1lLCBpc19sb2NhbCwgY2RlZi0+aXNfbm9faW5oZXJpdCkpCiAJCQkJY29udGlu dWU7CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IGFjODA2NTJi YWYyLi5lMTQwNDFiMzRjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25z dHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTU3 NCw3ICs1NzQsNyBAQCBDaG9vc2VDb25zdHJhaW50TmFtZShjb25zdCBjaGFyICpuYW1lMSwgY29u c3QgY2hhciAqbmFtZTIsCiAKIC8qCiAgKiBGaW5kIGFuZCByZXR1cm4gYSBjb3B5IG9mIHRoZSBw Z19jb25zdHJhaW50IHR1cGxlIHRoYXQgaW1wbGVtZW50cyBhCi0gKiB2YWxpZGF0ZWQgbm90LW51 bGwgY29uc3RyYWludCBmb3IgdGhlIGdpdmVuIGNvbHVtbiBvZiB0aGUgZ2l2ZW4gcmVsYXRpb24u CisgKiBub3QtbnVsbCBjb25zdHJhaW50IGZvciB0aGUgZ2l2ZW4gY29sdW1uIG9mIHRoZSBnaXZl biByZWxhdGlvbi4KICAqIElmIG5vIHN1Y2ggY29uc3RyYWludCBleGlzdHMsIHJldHVybiBOVUxM LgogICoKICAqIFhYWCBUaGlzIHdvdWxkIGJlIGVhc2llciBpZiB3ZSBoYWQgcGdfYXR0cmlidXRl Lm5vdG51bGxjb25zdHIgd2l0aCB0aGUgT0lECkBAIC02MDQsMTMgKzYwNCwxMSBAQCBmaW5kTm90 TnVsbENvbnN0cmFpbnRBdHRudW0oT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSkKIAkJQXR0 ck51bWJlcgljb25rZXk7CiAKIAkJLyoKLQkJICogV2UncmUgbG9va2luZyBmb3IgYSBOT1ROVUxM IGNvbnN0cmFpbnQgdGhhdCdzIG1hcmtlZCB2YWxpZGF0ZWQsCi0JCSAqIHdpdGggdGhlIGNvbHVt biB3ZSdyZSBsb29raW5nIGZvciBhcyB0aGUgc29sZSBlbGVtZW50IGluIGNvbmtleS4KKwkJICog V2UncmUgbG9va2luZyBmb3IgYSBOT1ROVUxMIGNvbnN0cmFpbnQgd2l0aCB0aGUgY29sdW1uIHdl J3JlCisJCSAqIGxvb2tpbmcgZm9yIGFzIHRoZSBzb2xlIGVsZW1lbnQgaW4gY29ua2V5LgogCQkg Ki8KIAkJaWYgKGNvbi0+Y29udHlwZSAhPSBDT05TVFJBSU5UX05PVE5VTEwpCiAJCQljb250aW51 ZTsKLQkJaWYgKCFjb24tPmNvbnZhbGlkYXRlZCkKLQkJCWNvbnRpbnVlOwogCiAJCWNvbmtleSA9 IGV4dHJhY3ROb3ROdWxsQ29sdW1uKGNvblR1cCk7CiAJCWlmIChjb25rZXkgIT0gYXR0bnVtKQpA QCAtNjI4LDkgKzYyNiw5IEBAIGZpbmROb3ROdWxsQ29uc3RyYWludEF0dG51bShPaWQgcmVsaWQs IEF0dHJOdW1iZXIgYXR0bnVtKQogfQogCiAvKgotICogRmluZCBhbmQgcmV0dXJuIHRoZSBwZ19j b25zdHJhaW50IHR1cGxlIHRoYXQgaW1wbGVtZW50cyBhIHZhbGlkYXRlZAotICogbm90LW51bGwg Y29uc3RyYWludCBmb3IgdGhlIGdpdmVuIGNvbHVtbiBvZiB0aGUgZ2l2ZW4gcmVsYXRpb24uICBJ ZgotICogbm8gc3VjaCBjb2x1bW4gb3Igbm8gc3VjaCBjb25zdHJhaW50IGV4aXN0cywgcmV0dXJu IE5VTEwuCisgKiBGaW5kIGFuZCByZXR1cm4gdGhlIHBnX2NvbnN0cmFpbnQgdHVwbGUgdGhhdCBp bXBsZW1lbnRzIGEKKyAqIG5vdC1udWxsIGNvbnN0cmFpbnQgZm9yIHRoZSBnaXZlbiBjb2x1bW4g b2YgdGhlIGdpdmVuIHJlbGF0aW9uLgorICogSWYgbm8gc3VjaCBjb2x1bW4gb3Igbm8gc3VjaCBj b25zdHJhaW50IGV4aXN0cywgcmV0dXJuIE5VTEwuCiAgKi8KIEhlYXBUdXBsZQogZmluZE5vdE51 bGxDb25zdHJhaW50KE9pZCByZWxpZCwgY29uc3QgY2hhciAqY29sbmFtZSkKQEAgLTcyNiwxMCAr NzI0LDEzIEBAIGV4dHJhY3ROb3ROdWxsQ29sdW1uKEhlYXBUdXBsZSBjb25zdHJUdXApCiAgKiBj b25pc2xvY2FsL2NvbmluaGNvdW50IGFuZCByZXR1cm4gdHJ1ZS4KICAqIEluIHRoZSBsYXR0ZXIg Y2FzZSwgaWYgaXNfbG9jYWwgaXMgdHJ1ZSB3ZSBmbGlwIGNvbmlzbG9jYWwgdHJ1ZSwgb3IgZG8K ICAqIG5vdGhpbmcgaWYgaXQncyBhbHJlYWR5IHRydWU7IG90aGVyd2lzZSB3ZSBpbmNyZW1lbnQg Y29uaW5oY291bnQgYnkgMS4KKyAqCisgKiBGdW5jdGlvbiBhZGQgYSBjaGVjayBmb3IgZXhpc3Rp bmcgSU5WQUxJRCBub3QtbnVsbCBjb25zdHJhaW50IG9uCisgKiB0aGUgdGFibGUgY29sdW1uLgog ICovCiBib29sCiBBZGp1c3ROb3ROdWxsSW5oZXJpdGFuY2UoT2lkIHJlbGlkLCBBdHRyTnVtYmVy IGF0dG51bSwKLQkJCQkJCSBib29sIGlzX2xvY2FsLCBib29sIGlzX25vX2luaGVyaXQpCisJCQkJ CQkgY29uc3QgY2hhciAqY29ubmFtZSwgYm9vbCBpc19sb2NhbCwgYm9vbCBpc19ub19pbmhlcml0 KQogewogCUhlYXBUdXBsZQl0dXA7CiAKQEAgLTc1Myw2ICs3NTQsMTggQEAgQWRqdXN0Tm90TnVs bEluaGVyaXRhbmNlKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCWVycm1zZygi Y2Fubm90IGNoYW5nZSBOTyBJTkhFUklUIHN0YXR1cyBvZiBOT1QgTlVMTCBjb25zdHJhaW50IFwi JXNcIiBvbiByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJICAgTmFtZVN0cihjb25mb3JtLT5jb25u YW1lKSwgZ2V0X3JlbF9uYW1lKHJlbGlkKSkpOwogCisJCS8qCisJCSAqIFRocm93IGFuIGVycm9y IGlmIGFuIGludmFsaWQgTk9UIE5VTEwgY29uc3RyYWludCBleGlzdHMgb24gdGhlCisJCSAqIHRh YmxlIGNvbHVtbiBhbmQgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGFkZCBhbm90aGVyIHZhbGlkIE5P VCBOVUxMCisJCSAqIGNvbnN0cmFpbnQuCisJCSAqLworCQlpZiAoaXNfbG9jYWwgJiYgIWNvbmZv cm0tPmNvbnZhbGlkYXRlZCAmJiBjb25uYW1lKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJZXJy bXNnKCJJbnZhbGlkIE5PVCBOVUxMIGNvbnN0cmFpbnQgXCIlc1wiIGV4aXN0IG9uIHJlbGF0aW9u IFwiJXNcIiIsCisJCQkJCQkgICBOYW1lU3RyKGNvbmZvcm0tPmNvbm5hbWUpLCBnZXRfcmVsX25h bWUocmVsaWQpKSwKKwkJCQkJZXJyaGludCgiRG8gVkFMSURBVEUgQ09OU1RSQUlOVCIpKTsKKwog CQlpZiAoIWlzX2xvY2FsKQogCQl7CiAJCQlpZiAocGdfYWRkX3MxNl9vdmVyZmxvdyhjb25mb3Jt LT5jb25pbmhjb3VudCwgMSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggM2M4MWU0OGNh YzEuLjZhNzU3YzdjMzc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDEwLDYgKzQx MCw5IEBAIHN0YXRpYyB2b2lkIFF1ZXVlRktDb25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uCiBzdGF0aWMgdm9pZCBRdWV1ZUNoZWNrQ29u c3RyYWludFZhbGlkYXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlv biByZWwsCiAJCQkJCQkJCQkJICAgY2hhciAqY29uc3RyTmFtZSwgSGVhcFR1cGxlIGNvbnR1cGxl LAogCQkJCQkJCQkJCSAgIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxv Y2ttb2RlKTsKK3N0YXRpYyB2b2lkIFF1ZXVlTk5Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoq d3F1ZXVlLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQlIZWFwVHVw bGUgY29udHVwbGUsCisJCQkJCQkJCQkJYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywgTE9D S01PREUgbG9ja21vZGUpOwogc3RhdGljIGludAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQg cmVsSWQsIExpc3QgKmNvbExpc3QsCiAJCQkJCQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0 eXBpZHMsIE9pZCAqYXR0Y29sbGlkcyk7CiBzdGF0aWMgaW50CXRyYW5zZm9ybUZrZXlHZXRQcmlt YXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLApAQCAtNDczLDcgKzQ3Niw3IEBA IHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fY29sbGF0aW9uX2RlcGVuZGVuY3koT2lkIHJlbGlkLCBp bnQzMiBhdHRudW0sIE9pZCBjb2xsaWQpCiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNEcm9w Tm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIGJvb2wgcmVjdXJzZSwK IAkJCQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyB2b2lkIHNldF9hdHRub3Ru dWxsKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0sCi0JCQkJ CQkgICBMT0NLTU9ERSBsb2NrbW9kZSk7CisJCQkJCQkgICBjaGFyIG5ld3ZhbHVlLCBMT0NLTU9E RSBsb2NrbW9kZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXROb3ROdWxsKExpc3Qg Kip3cXVldWUsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY2hhciAqY29uc3RybmFtZSwgY2hh ciAqY29sTmFtZSwKIAkJCQkJCQkJCSAgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKQEAg LTcxMCw2ICs3MTMsNyBAQCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5UmVmcyhS ZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktl eVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXBy ZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29tcHJlc3Npb24pOwogc3RhdGljIGNo YXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vt b2RlKTsKK3N0YXRpYyBib29sIGNoZWNrX2Zvcl9pbnZhbGlkX25vdG51bGwoT2lkIHJlbGlkLCBj b25zdCBjaGFyICphdHRuYW1lKTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzE1LDcgKzEzMTksNyBA QCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25l cklkLAogCW5uY29scyA9IEFkZFJlbGF0aW9uTm90TnVsbENvbnN0cmFpbnRzKHJlbCwgc3RtdC0+ bm5jb25zdHJhaW50cywKIAkJCQkJCQkJCQkgICBvbGRfbm90bnVsbHMpOwogCWZvcmVhY2hfaW50 KGF0dHJudW0sIG5uY29scykKLQkJc2V0X2F0dG5vdG51bGwoTlVMTCwgcmVsLCBhdHRybnVtLCBO b0xvY2spOworCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWwsIGF0dHJudW0sIEFUVFJJQlVURV9O T1ROVUxMX1RSVUUsIE5vTG9jayk7CiAKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0 aW9uUmVsYXRpb25JZCwgcmVsYXRpb25JZCk7CiAKQEAgLTYxOTEsNyArNjE5NSw4IEBAIEFUUmV3 cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXApCiAJCXsKIAkJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKG5ld1R1cERlc2MsIGkpOwog Ci0JCQlpZiAoYXR0ci0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFICYmCisJ CQlpZiAoKGF0dHItPmF0dG5vdG51bGwgPT0gQVRUUklCVVRFX05PVE5VTExfVFJVRSB8fAorCQkJ CSBhdHRyLT5hdHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX0lOVkFMSUQpICYmCiAJCQkJ IWF0dHItPmF0dGlzZHJvcHBlZCkKIAkJCQlub3RudWxsX2F0dHJzID0gbGFwcGVuZF9pbnQobm90 bnVsbF9hdHRycywgaSk7CiAJCX0KQEAgLTc3NDMsMTAgKzc3NDgsMTEgQEAgQVRFeGVjRHJvcE5v dE51bGwoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBib29sIHJlY3Vyc2UsCiAg Ki8KIHN0YXRpYyB2b2lkCiBzZXRfYXR0bm90bnVsbChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAotCQkJICAgTE9DS01PREUgbG9ja21vZGUpCisJCQkgICBj aGFyIG5ld3ZhbHVlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIHsKIAlGb3JtX3BnX2F0dHJpYnV0ZSBh dHRyOwogCisKIAlDaGVja0FsdGVyVGFibGVJc1NhZmUocmVsKTsKIAogCS8qCkBAIC03NzU3LDcg Kzc3NjMsNyBAQCBzZXRfYXR0bm90bnVsbChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEF0 dHJOdW1iZXIgYXR0bnVtLAogCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCiAJCXJldHVybjsKIAot CWlmIChhdHRyLT5hdHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFKQorCWlmIChh dHRyLT5hdHRub3RudWxsICE9IG5ld3ZhbHVlKQogCXsKIAkJUmVsYXRpb24JYXR0cl9yZWw7CiAJ CUhlYXBUdXBsZQl0dXBsZTsKQEAgLTc3NzAsMTUgKzc3NzYsMTcgQEAgc2V0X2F0dG5vdG51bGwo TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkgYXR0 bnVtLCBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCiAJCWF0dHIgPSAoRm9ybV9wZ19hdHRyaWJ1 dGUpIEdFVFNUUlVDVCh0dXBsZSk7Ci0JCUFzc2VydChhdHRyLT5hdHRub3RudWxsID09IEFUVFJJ QlVURV9OT1ROVUxMX0ZBTFNFKTsKLQkJYXR0ci0+YXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1RO VUxMX1RSVUU7CisJCWF0dHItPmF0dG5vdG51bGwgPSBuZXd2YWx1ZTsKKwogCQlDYXRhbG9nVHVw bGVVcGRhdGUoYXR0cl9yZWwsICZ0dXBsZS0+dF9zZWxmLCB0dXBsZSk7CiAKIAkJLyoKLQkJICog SWYgdGhlIG51bGxuZXNzIGlzbid0IGFscmVhZHkgcHJvdmVuIGJ5IHZhbGlkYXRlZCBjb25zdHJh aW50cywgaGF2ZQotCQkgKiBBTFRFUiBUQUJMRSBwaGFzZSAzIHRlc3QgZm9yIGl0LgorCQkgKiBR dWV1ZSBsYXRlciB2YWxpZGF0aW9uIG9mIHRoaXMgY29uc3RyYWludCwgaWYgbmVjZXNzYXJ5IGFu ZAorCQkgKiByZXF1ZXN0ZWQgYnkgY2FsbGVyLgogCQkgKi8KLQkJaWYgKHdxdWV1ZSAmJiAhTm90 TnVsbEltcGxpZWRCeVJlbENvbnN0cmFpbnRzKHJlbCwgYXR0cikpCisJCWlmICh3cXVldWUgJiYK KwkJCW5ld3ZhbHVlID09IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUgJiYKKwkJCSFOb3ROdWxsSW1w bGllZEJ5UmVsQ29uc3RyYWludHMocmVsLCBhdHRyKSkKIAkJewogCQkJQWx0ZXJlZFRhYmxlSW5m byAqdGFiOwogCkBAIC03ODg0LDYgKzc4OTIsMTUgQEAgQVRFeGVjU2V0Tm90TnVsbChMaXN0ICoq d3F1ZXVlLCBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbk5hbWUsIGNoYXIgKmNvbE5hbWUsCiAJCQlj b25Gb3JtLT5jb25pc2xvY2FsID0gdHJ1ZTsKIAkJCWNoYW5nZWQgPSB0cnVlOwogCQl9CisJCWVs c2UgaWYgKCFjb25Gb3JtLT5jb252YWxpZGF0ZWQpCisJCXsKKwkJCS8qCisJCQkgKiBmbGlwIGF0 dG5vdG51bGwgYW5kIGNvbnZhbGlkYXRlZCwgYW5kIGFsc28gdmFsaWRhdGUgdGhlCisJCQkgKiBj b25zdHJhaW50LgorCQkJICovCisJCQlyZXR1cm4gQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KHdx dWV1ZSwgcmVsLCBjb25Gb3JtLT5jb25uYW1lLmRhdGEsCisJCQkJCQkJCQkJCXJlY3Vyc2UsIHJl Y3Vyc2luZywgbG9ja21vZGUpOworCQl9CiAKIAkJaWYgKGNoYW5nZWQpCiAJCXsKQEAgLTc5NDYs OCArNzk2MywxMiBAQCBBVEV4ZWNTZXROb3ROdWxsKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCwgY2hhciAqY29uTmFtZSwgY2hhciAqY29sTmFtZSwKIAlJbnZva2VPYmplY3RQb3N0QWx0ZXJI b29rKFJlbGF0aW9uUmVsYXRpb25JZCwKIAkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg YXR0bnVtKTsKIAotCS8qIE1hcmsgcGdfYXR0cmlidXRlLmF0dG5vdG51bGwgZm9yIHRoZSBjb2x1 bW4gKi8KLQlzZXRfYXR0bm90bnVsbCh3cXVldWUsIHJlbCwgYXR0bnVtLCBsb2NrbW9kZSk7CisJ LyogTWFyayBwZ19hdHRyaWJ1dGUuYXR0bm90bnVsbCBmb3IgdGhlIGNvbHVtbiBhbmQgcmVxdWVz dCB2YWxpZGF0aW9uICovCisJc2V0X2F0dG5vdG51bGwod3F1ZXVlLCByZWwsIGF0dG51bSwKKwkJ CQkgICBjb25zdHJhaW50LT5za2lwX3ZhbGlkYXRpb24gPworCQkJCSAgIEFUVFJJQlVURV9OT1RO VUxMX0lOVkFMSUQgOgorCQkJCSAgIEFUVFJJQlVURV9OT1ROVUxMX1RSVUUsCisJCQkJICAgbG9j a21vZGUpOwogCiAJLyoKIAkgKiBSZWN1cnNlIHRvIHByb3BhZ2F0ZSB0aGUgY29uc3RyYWludCB0 byBjaGlsZHJlbiB0aGF0IGRvbid0IGhhdmUgb25lLgpAQCAtOTM4NywxMiArOTQwOCwxOSBAQCBB VFByZXBBZGRQcmltYXJ5S2V5KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJs ZUNtZCAqY21kLAogCX0KIAogCS8qIEluc2VydCBub3QtbnVsbCBjb25zdHJhaW50cyBpbiB0aGUg cXVldWUgZm9yIHRoZSBQSyBjb2x1bW5zICovCi0JZm9yZWFjaChsYywgcGtjb25zdHItPmtleXMp CisJZm9yZWFjaF9ub2RlKFN0cmluZywgY29sbmFtZSwgcGtjb25zdHItPmtleXMpCiAJewogCQlB bHRlclRhYmxlQ21kICpuZXdjbWQ7CiAJCUNvbnN0cmFpbnQgKm5uY29uc3RyOwogCi0JCW5uY29u c3RyID0gbWFrZU5vdE51bGxDb25zdHJhaW50KGxmaXJzdChsYykpOworCQkvKiBWZXJpZnkgdGhh dCB0aGUgbm90LW51bGwgY29uc3RyYWludCBoYXMgYmVlbiB2YWxpZGF0ZWQgKi8KKwkJaWYgKGNo ZWNrX2Zvcl9pbnZhbGlkX25vdG51bGwoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdHJWYWwoY29s bmFtZSkpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9m IHRhYmxlIFwiJXNcIiBpcyBtYXJrZWQgYXMgTk9UIFZBTElEIE5PVCBOVUxMIGNvbnN0cmFpbnQi LAorCQkJCQkJICAgc3RyVmFsKGNvbG5hbWUpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSk7CisKKwkJbm5jb25zdHIgPSBtYWtlTm90TnVsbENvbnN0cmFpbnQoY29sbmFtZSk7CiAKIAkJ bmV3Y21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CiAJCW5ld2NtZC0+c3VidHlwZSA9IEFU X0FkZENvbnN0cmFpbnQ7CkBAIC05NDAzLDYgKzk0MzEsMzAgQEAgQVRQcmVwQWRkUHJpbWFyeUtl eShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAl9CiB9 CiAKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgYW55IGludmFsaWQgTk9UIE5VTEwg Y29uc3RyYWludCBvbiB0aGUgZ2l2ZW4KKyAqIHJlbGF0aW9uIGFuZCBhdHRyaWJ1dGUgbmFtZS4g SXQgcmV0dXJucyB0cnVlIGlmIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBi b29sCitjaGVja19mb3JfaW52YWxpZF9ub3RudWxsKE9pZCByZWxpZCwgY29uc3QgY2hhciAqYXR0 bmFtZSkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJcmV0dmFsID0gZmFsc2U7CisKKwl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihBVFROQU1FLAorCQkJCQkJCU9iamVjdElkR2V0RGF0dW0o cmVsaWQpLAorCQkJCQkJCUNTdHJpbmdHZXREYXR1bShhdHRuYW1lKSk7CisJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHR1cGxlKSkKKwkJcmV0dXJuIGZhbHNlOworCWlmICghKChGb3JtX3BnX2F0dHJp YnV0ZSkgR0VUU1RSVUNUKHR1cGxlKSktPmF0dGlzZHJvcHBlZCAmJgorCQkoKEZvcm1fcGdfYXR0 cmlidXRlKSBHRVRTVFJVQ1QodHVwbGUpKS0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVM TF9JTlZBTElEKQorCQlyZXR2YWwgPSB0cnVlOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsK KworCXJldHVybiByZXR2YWw7Cit9CisKIC8qCiAgKiBBTFRFUiBUQUJMRSBBREQgSU5ERVgKICAq CkBAIC05NzcwLDcgKzk4MjIsMTEgQEAgQVRBZGRDaGVja05OQ29uc3RyYWludChMaXN0ICoqd3F1 ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJICogcGhhc2UgMyB0 byB2ZXJpZnkgZXhpc3Rpbmcgcm93cywgaWYgbmVlZGVkLgogCQkgKi8KIAkJaWYgKGNvbnN0ci0+ Y29udHlwZSA9PSBDT05TVFJfTk9UTlVMTCkKLQkJCXNldF9hdHRub3RudWxsKHdxdWV1ZSwgcmVs LCBjY29uLT5hdHRudW0sIGxvY2ttb2RlKTsKKwkJCXNldF9hdHRub3RudWxsKHdxdWV1ZSwgcmVs LCBjY29uLT5hdHRudW0sCisJCQkJCQkgICBjY29uLT5za2lwX3ZhbGlkYXRpb24gPworCQkJCQkJ ICAgQVRUUklCVVRFX05PVE5VTExfSU5WQUxJRCA6CisJCQkJCQkgICBBVFRSSUJVVEVfTk9UTlVM TF9UUlVFLAorCQkJCQkJICAgbG9ja21vZGUpOwogCiAJCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNjb24tPmNvbm9pZCk7CiAJfQpAQCAtMTIzNzEsMTAg KzEyNDI3LDExIEBAIEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiByZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAKIAljb24gPSAoRm9ybV9wZ19jb25zdHJhaW50 KSBHRVRTVFJVQ1QodHVwbGUpOwogCWlmIChjb24tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9GT1JF SUdOICYmCi0JCWNvbi0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0NIRUNLKQorCQljb24tPmNvbnR5 cGUgIT0gQ09OU1RSQUlOVF9DSEVDSyAmJgorCQljb24tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9O T1ROVUxMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JK RUNUX1RZUEUpLAotCQkJCSBlcnJtc2coImNvbnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9uIFwi JXNcIiBpcyBub3QgYSBmb3JlaWduIGtleSBvciBjaGVjayBjb25zdHJhaW50IiwKKwkJCQkgZXJy bXNnKCJjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgZm9yZWln biBrZXksIG5vdC1udWxsLCBvciBjaGVjayBjb25zdHJhaW50IiwKIAkJCQkJCWNvbnN0ck5hbWUs IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CiAKIAlpZiAoIWNvbi0+Y29uZW5mb3Jj ZWQpCkBAIC0xMjM5Myw2ICsxMjQ1MCwxMSBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCQkJUXVldWVDaGVj a0NvbnN0cmFpbnRWYWxpZGF0aW9uKHdxdWV1ZSwgY29ucmVsLCByZWwsIGNvbnN0ck5hbWUsCiAJ CQkJCQkJCQkJICAgdHVwbGUsIHJlY3Vyc2UsIHJlY3Vyc2luZywgbG9ja21vZGUpOwogCQl9CisJ CWVsc2UgaWYgKGNvbi0+Y29udHlwZSA9PSBDT05TVFJBSU5UX05PVE5VTEwpCisJCXsKKwkJCVF1 ZXVlTk5Db25zdHJhaW50VmFsaWRhdGlvbih3cXVldWUsIGNvbnJlbCwgcmVsLAorCQkJCQkJCQkJ CXR1cGxlLCByZWN1cnNlLCByZWN1cnNpbmcsIGxvY2ttb2RlKTsKKwkJfQogCiAJCU9iamVjdEFk ZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbi0+b2lkKTsKIAl9CkBA IC0xMjUyMiw5ICsxMjU4NCw3IEBAIFF1ZXVlQ2hlY2tDb25zdHJhaW50VmFsaWRhdGlvbihMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHJlbCwKIAlBbHRlcmVkVGFibGVJ bmZvICp0YWI7CiAJSGVhcFR1cGxlCWNvcHlUdXBsZTsKIAlGb3JtX3BnX2NvbnN0cmFpbnQgY29w eV9jb247Ci0KIAlMaXN0CSAgICpjaGlsZHJlbiA9IE5JTDsKLQlMaXN0Q2VsbCAgICpjaGlsZDsK IAlOZXdDb25zdHJhaW50ICpuZXdjb247CiAJRGF0dW0JCXZhbDsKIAljaGFyCSAgICpjb25iaW47 CkBAIC0xMjUzMywyNCArMTI1OTMsMTkgQEAgUXVldWVDaGVja0NvbnN0cmFpbnRWYWxpZGF0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gcmVsLAogCUFzc2VydChj b24tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9DSEVDSyk7CiAKIAkvKgotCSAqIElmIHdlJ3JlIHJl Y3Vyc2luZywgdGhlIHBhcmVudCBoYXMgYWxyZWFkeSBkb25lIHRoaXMsIHNvIHNraXAgaXQuIEFs c28sCi0JICogaWYgdGhlIGNvbnN0cmFpbnQgaXMgYSBOTyBJTkhFUklUIGNvbnN0cmFpbnQsIHdl IHNob3VsZG4ndCB0cnkgdG8gbG9vawotCSAqIGZvciBpdCBpbiB0aGUgY2hpbGRyZW4uCi0JICov Ci0JaWYgKCFyZWN1cnNpbmcgJiYgIWNvbi0+Y29ubm9pbmhlcml0KQotCQljaGlsZHJlbiA9IGZp bmRfYWxsX2luaGVyaXRvcnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLAotCQkJCQkJCQkJICAgbG9j a21vZGUsIE5VTEwpOwotCi0JLyoKLQkgKiBGb3IgQ0hFQ0sgY29uc3RyYWludHMsIHdlIG11c3Qg ZW5zdXJlIHRoYXQgd2Ugb25seSBtYXJrIHRoZSBjb25zdHJhaW50Ci0JICogYXMgdmFsaWRhdGVk IG9uIHRoZSBwYXJlbnQgaWYgaXQncyBhbHJlYWR5IHZhbGlkYXRlZCBvbiB0aGUgY2hpbGRyZW4u CisJICogRm9yIGNvbnN0cmFpbnRzIHRoYXQgYXJlbid0IE5PIElOSEVSSVQsIHdlIG11c3QgZW5z dXJlIHRoYXQgd2Ugb25seQorCSAqIG1hcmsgdGhlIGNvbnN0cmFpbnQgYXMgdmFsaWRhdGVkIG9u IHRoZSBwYXJlbnQgaWYgaXQncyBhbHJlYWR5CisJICogdmFsaWRhdGVkIG9uIHRoZSBjaGlsZHJl bi4KKwkgKgorCSAqIElmIHdlJ3JlIHJlY3Vyc2luZywgdGhlIHBhcmVudCBoYXMgYWxyZWFkeSBk b25lIHRoaXMsIHNvIHNraXAgaXQuCiAJICoKIAkgKiBXZSByZWN1cnNlIGJlZm9yZSB2YWxpZGF0 aW5nIG9uIHRoZSBwYXJlbnQsIHRvIHJlZHVjZSByaXNrIG9mCiAJICogZGVhZGxvY2tzLgogCSAq LwotCWZvcmVhY2goY2hpbGQsIGNoaWxkcmVuKQorCWlmICghcmVjdXJzaW5nICYmICFjb24tPmNv bm5vaW5oZXJpdCkKKwkJY2hpbGRyZW4gPSBmaW5kX2FsbF9pbmhlcml0b3JzKFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgbG9ja21vZGUsIE5VTEwpOworCWZvcmVhY2hfb2lkKGNoaWxkb2lkLCBjaGls ZHJlbikKIAl7Ci0JCU9pZAkJCWNoaWxkb2lkID0gbGZpcnN0X29pZChjaGlsZCk7CiAJCVJlbGF0 aW9uCWNoaWxkcmVsOwogCiAJCWlmIChjaGlsZG9pZCA9PSBSZWxhdGlvbkdldFJlbGlkKHJlbCkp CkBAIC0xMjYwOSw2ICsxMjY2NCwxMTQgQEAgUXVldWVDaGVja0NvbnN0cmFpbnRWYWxpZGF0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gcmVsLAogCWhlYXBfZnJl ZXR1cGxlKGNvcHlUdXBsZSk7CiB9CiAKKy8qCisgKiBRdWV1ZU5OQ29uc3RyYWludFZhbGlkYXRp b24KKyAqCisgKiBBZGQgYW4gZW50cnkgdG8gdGhlIHdxdWV1ZSB0byB2YWxpZGF0ZSB0aGUgZ2l2 ZW4gbm90LW51bGwgY29uc3RyYWludCBpbgorICogUGhhc2UgMyBhbmQgdXBkYXRlIHRoZSBjb252 YWxpZGF0ZWQgZmllbGQgaW4gdGhlIHBnX2NvbnN0cmFpbnQgY2F0YWxvZyBmb3IKKyAqIHRoZSBz cGVjaWZpZWQgcmVsYXRpb24gYW5kIGFsbCBpdHMgaW5oZXJpdGluZyBjaGlsZHJlbi4KKyAqLwor c3RhdGljIHZvaWQKK1F1ZXVlTk5Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQlIZWFwVHVwbGUgY29udHVwbGUs IGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcsCisJCQkJCQkJTE9DS01PREUgbG9ja21vZGUp Cit7CisJRm9ybV9wZ19jb25zdHJhaW50IGNvbjsKKwlBbHRlcmVkVGFibGVJbmZvICp0YWI7CisJ SGVhcFR1cGxlCWNvcHlUdXBsZTsKKwlGb3JtX3BnX2NvbnN0cmFpbnQgY29weV9jb247CisJTGlz dAkgICAqY2hpbGRyZW4gPSBOSUw7CisJQXR0ck51bWJlcglhdHRudW07CisJY2hhcgkgICAqY29s bmFtZTsKKworCWNvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb250dXBsZSk7 CisJQXNzZXJ0KGNvbi0+Y29udHlwZSA9PSBDT05TVFJBSU5UX05PVE5VTEwpOworCisJYXR0bnVt ID0gZXh0cmFjdE5vdE51bGxDb2x1bW4oY29udHVwbGUpOworCisJLyoKKwkgKiBGb3IgY29uc3Ry YWludHMgdGhhdCBhcmVuJ3QgTk8gSU5IRVJJVCwgd2UgbXVzdCBlbnN1cmUgdGhhdCB3ZSBvbmx5 CisJICogbWFyayB0aGUgY29uc3RyYWludCBhcyB2YWxpZGF0ZWQgb24gdGhlIHBhcmVudCBpZiBp dCdzIGFscmVhZHkKKwkgKiB2YWxpZGF0ZWQgb24gdGhlIGNoaWxkcmVuLgorCSAqCisJICogSWYg d2UncmUgcmVjdXJzaW5nLCB0aGUgcGFyZW50IGhhcyBhbHJlYWR5IGRvbmUgdGhpcywgc28gc2tp cCBpdC4KKwkgKgorCSAqIFdlIHJlY3Vyc2UgYmVmb3JlIHZhbGlkYXRpbmcgb24gdGhlIHBhcmVu dCwgdG8gcmVkdWNlIHJpc2sgb2YKKwkgKiBkZWFkbG9ja3MuCisJICovCisJaWYgKCFyZWN1cnNp bmcgJiYgIWNvbi0+Y29ubm9pbmhlcml0KQorCQljaGlsZHJlbiA9IGZpbmRfYWxsX2luaGVyaXRv cnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBsb2NrbW9kZSwgTlVMTCk7CisKKwljb2xuYW1lID0g Z2V0X2F0dG5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBhdHRudW0sIGZhbHNlKTsKKwlmb3Jl YWNoX29pZChjaGlsZG9pZCwgY2hpbGRyZW4pCisJeworCQlSZWxhdGlvbgljaGlsZHJlbDsKKwkJ SGVhcFR1cGxlCWNvbnR1cDsKKwkJRm9ybV9wZ19jb25zdHJhaW50IGNoaWxkY29uOworCQljaGFy CSAgICpjb25uYW1lOworCisJCWlmIChjaGlsZG9pZCA9PSBSZWxhdGlvbkdldFJlbGlkKHJlbCkp CisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBJZiB3ZSBhcmUgdG9sZCBub3QgdG8gcmVjdXJz ZSwgdGhlcmUgaGFkIGJldHRlciBub3QgYmUgYW55IGNoaWxkCisJCSAqIHRhYmxlcywgYmVjYXVz ZSB3ZSBjYW4ndCBtYXJrIHRoZSBjb25zdHJhaW50IG9uIHRoZSBwYXJlbnQgdmFsaWQKKwkJICog dW5sZXNzIGl0IGlzIHZhbGlkIGZvciBhbGwgY2hpbGQgdGFibGVzLgorCQkgKi8KKwkJaWYgKCFy ZWN1cnNlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf VEFCTEVfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygiY29uc3RyYWludCBtdXN0IGJlIHZhbGlk YXRlZCBvbiBjaGlsZCB0YWJsZXMgdG9vIikpOworCisJCS8qCisJCSAqIFRoZSBjb2x1bW4gb24g Y2hpbGQgbWlnaHQgaGF2ZSBhIGRpZmZlcmVudCBhdHRudW0sIHNvIHNlYXJjaCBieQorCQkgKiBj b2x1bW4gbmFtZS4KKwkJICovCisJCWNvbnR1cCA9IGZpbmROb3ROdWxsQ29uc3RyYWludChjaGls ZG9pZCwgY29sbmFtZSk7CisJCWlmICghY29udHVwKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIG5vdC1udWxsIGNvbnN0cmFpbnQgb24gY29sdW1uIFwiJXNcIiBvZiBy ZWxhdGlvbiBcIiVzXCIiLAorCQkJCSBjb2xuYW1lLCBnZXRfcmVsX25hbWUoY2hpbGRvaWQpKTsK KwkJY2hpbGRjb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29udHVwKTsKKwkJ aWYgKGNoaWxkY29uLT5jb252YWxpZGF0ZWQpCisJCQljb250aW51ZTsKKworCQkvKiBmaW5kX2Fs bF9pbmhlcml0b3JzIGFscmVhZHkgZ290IGxvY2sgKi8KKwkJY2hpbGRyZWwgPSB0YWJsZV9vcGVu KGNoaWxkb2lkLCBOb0xvY2spOworCQljb25uYW1lID0gcHN0cmR1cChOYW1lU3RyKGNoaWxkY29u LT5jb25uYW1lKSk7CisKKwkJLyogWFhYIGltcHJvdmUgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50 IEFQSSB0byBhdm9pZCBkb3VibGUgc2VhcmNoICovCisJCUFURXhlY1ZhbGlkYXRlQ29uc3RyYWlu dCh3cXVldWUsIGNoaWxkcmVsLCBjb25uYW1lLAorCQkJCQkJCQkgZmFsc2UsIHRydWUsIGxvY2tt b2RlKTsKKwkJdGFibGVfY2xvc2UoY2hpbGRyZWwsIE5vTG9jayk7CisJfQorCisJdGFiID0gQVRH ZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgcmVsKTsKKwl0YWItPnZlcmlmeV9uZXdfbm90bnVsbCA9IHRy dWU7CisKKwkvKgorCSAqIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBvdGhlcnMgc2VlIHRo ZSBuZXcgdmFsaWRhdGVkIGNvbnN0cmFpbnQuCisJICovCisJQ2FjaGVJbnZhbGlkYXRlUmVsY2Fj aGUocmVsKTsKKworCS8qCisJICogTm93IHVwZGF0ZSB0aGUgY2F0YWxvZ3MsIHdoaWxlIHdlIGhh dmUgdGhlIGRvb3Igb3Blbi4KKwkgKi8KKwljb3B5VHVwbGUgPSBoZWFwX2NvcHl0dXBsZShjb250 dXBsZSk7CisJY29weV9jb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29weVR1 cGxlKTsKKwljb3B5X2Nvbi0+Y29udmFsaWRhdGVkID0gdHJ1ZTsKKwlDYXRhbG9nVHVwbGVVcGRh dGUoY29ucmVsLCAmY29weVR1cGxlLT50X3NlbGYsIGNvcHlUdXBsZSk7CisKKwkvKgorCSAqIEFs c28gZmxpcCBhdHRub3RudWxsLiBjYWxsIGZ1bmN0aW9uIHdpdGggd3F1ZXVlIGFzIE5VTEwgdG8K KwkgKiBieXBhc3MgdmFsaWRhdGlvbiwgYXMgaXQgaGFzIGFscmVhZHkgYmVlbiBwZXJmb3JtZWQu CisJICovCisJc2V0X2F0dG5vdG51bGwoTlVMTCwgcmVsLCBhdHRudW0sIEFUVFJJQlVURV9OT1RO VUxMX1RSVUUsIGxvY2ttb2RlKTsKKworCUludm9rZU9iamVjdFBvc3RBbHRlckhvb2soQ29uc3Ry YWludFJlbGF0aW9uSWQsIGNvbi0+b2lkLCAwKTsKKworCWhlYXBfZnJlZXR1cGxlKGNvcHlUdXBs ZSk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdCAtIHRyYW5zZm9ybSBsaXN0 IG9mIGNvbHVtbiBuYW1lcwogICoKQEAgLTEzNDgwLDcgKzEzNjQzLDcgQEAgZHJvcGNvbnN0cmFp bnRfaW50ZXJuYWwoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgY29uc3RyYWludFR1cCwgRHJvcEJl aGF2aW9yIGJlaGEKIAkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKIAog CQkvKiBBbGwgZ29vZCAtLSByZXNldCBhdHRub3RudWxsIGlmIG5lZWRlZCAqLwotCQlpZiAoYXR0 Rm9ybS0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFKQorCQlpZiAoYXR0Rm9y bS0+YXR0bm90bnVsbCAhPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRSkKIAkJewogCQkJYXR0Rm9y bS0+YXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFOwogCQkJQ2F0YWxvZ1R1cGxl VXBkYXRlKGF0dHJlbCwgJmF0dHR1cC0+dF9zZWxmLCBhdHR0dXApOwpAQCAtMTY4MTYsMTIgKzE2 OTc5LDIwIEBAIE1lcmdlQXR0cmlidXRlc0ludG9FeGlzdGluZyhSZWxhdGlvbiBjaGlsZF9yZWws IFJlbGF0aW9uIHBhcmVudF9yZWwsIGJvb2wgaXNwYXJ0CiAKIAkJCQljb250dXAgPSBmaW5kTm90 TnVsbENvbnN0cmFpbnRBdHRudW0oUmVsYXRpb25HZXRSZWxpZChwYXJlbnRfcmVsKSwKIAkJCQkJ CQkJCQkJCQkgcGFyZW50X2F0dC0+YXR0bnVtKTsKLQkJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChj b250dXApICYmCi0JCQkJCSEoKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnR1cCkp LT5jb25ub2luaGVyaXQpCi0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJCQllcnJtc2coImNvbHVtbiBcIiVzXCIgaW4g Y2hpbGQgdGFibGUgXCIlc1wiIG11c3QgYmUgbWFya2VkIE5PVCBOVUxMIiwKLQkJCQkJCQkJICAg cGFyZW50X2F0dG5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNoaWxkX3JlbCkpKTsKKwkJ CQlpZiAoSGVhcFR1cGxlSXNWYWxpZChjb250dXApKQorCQkJCXsKKwkJCQkJRm9ybV9wZ19jb25z dHJhaW50CWNoaWxkY29uOworCisJCQkJCWNoaWxkY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkg R0VUU1RSVUNUKGNvbnR1cCk7CisJCQkJCWlmICghY2hpbGRjb24tPmNvbm5vaW5oZXJpdCkKKwkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNN QVRDSCksCisJCQkJCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiBpbiBjaGlsZCB0YWJsZSBcIiVz XCIgbXVzdCBiZSBtYXJrZWQgTk9UIE5VTEwiLAorCQkJCQkJCQkJICAgcGFyZW50X2F0dG5hbWUs IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNoaWxkX3JlbCkpKTsKKworCQkJCQlpZiAoIWNoaWxk Y29uLT5jb252YWxpZGF0ZWQpCisJCQkJCQllbG9nKFdBUk5JTkcsICJmb3VuZCBhbiBpbnZhbGlk IGNvbnN0cmFpbnQiKTsKKwkJCQl9CiAJCQl9CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCBkNTgyMjMxYWI2MC4uNGIwNDQ2YjAwZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwpAQCAtMjA3MCw3ICsyMDcwLDggQEAgRXhlY0NvbnN0cmFpbnRzKFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8sCiAJCXsKIAkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0 dHIodHVwZGVzYywgYXR0ckNoayAtIDEpOwogCi0JCQlpZiAoYXR0LT5hdHRub3RudWxsID09IEFU VFJJQlVURV9OT1ROVUxMX1RSVUUgJiYKKwkJCWlmICgoYXR0LT5hdHRub3RudWxsID09IEFUVFJJ QlVURV9OT1ROVUxMX1RSVUUgfHwKKwkJCQkgYXR0LT5hdHRub3RudWxsID09IEFUVFJJQlVURV9O T1ROVUxMX0lOVkFMSUQpICYmCiAJCQkJc2xvdF9hdHRpc251bGwoc2xvdCwgYXR0ckNoaykpCiAJ CQl7CiAJCQkJY2hhcgkgICAqdmFsX2Rlc2M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAyNzFhZTI2Y2JhZi4u NzE1ZWI1MTMwMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNDIyNCw5ICs0MjI0LDkgQEAgQ29uc3RyYWlu dEVsZW06CiAJCQkJCW4tPmtleXMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcoJDMpKTsKIAkJCQkJ Lyogbm8gTk9UIFZBTElEIHN1cHBvcnQgeWV0ICovCiAJCQkJCXByb2Nlc3NDQVNiaXRzKCQ0LCBA NCwgIk5PVCBOVUxMIiwKLQkJCQkJCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKwkJCQkJ CQkJICAgTlVMTCwgTlVMTCwgTlVMTCwgJm4tPnNraXBfdmFsaWRhdGlvbiwKIAkJCQkJCQkJICAg Jm4tPmlzX25vX2luaGVyaXQsIHl5c2Nhbm5lcik7Ci0JCQkJCW4tPmluaXRpYWxseV92YWxpZCA9 IHRydWU7CisJCQkJCW4tPmluaXRpYWxseV92YWxpZCA9ICFuLT5za2lwX3ZhbGlkYXRpb247CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IFVOSVFVRSBvcHRfdW5pcXVlX251bGxf dHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0IG9wdF93aXRob3V0X292ZXJsYXBzICcpJyBvcHRfY19p bmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBj MzcxNTcwNTAxYS4uMWE5NDY0NjEyMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtODg3Niw2ICs4ODc2LDcg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBu dW1UYWJsZXMpCiAJUFFFeHBCdWZmZXIgcSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAJUFFFeHBC dWZmZXIgdGJsb2lkcyA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAJUFFFeHBCdWZmZXIgY2hlY2tv aWRzID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlciBpbnZhbGlkbm90bnVsbG9p ZHMgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCVBHcmVzdWx0ICAgKnJlczsKIAlpbnQJCQludHVw czsKIAlpbnQJCQljdXJ0YmxpbmR4OwpAQCAtODg5Miw2ICs4ODkzLDcgQEAgZ2V0VGFibGVBdHRy cyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJaW50 CQkJaV9hdHRsZW47CiAJaW50CQkJaV9hdHRhbGlnbjsKIAlpbnQJCQlpX2F0dGlzbG9jYWw7CisJ aW50CQkJaV9ub3RudWxsX3ZhbGlkOwogCWludAkJCWlfbm90bnVsbF9uYW1lOwogCWludAkJCWlf bm90bnVsbF9ub2luaGVyaXQ7CiAJaW50CQkJaV9ub3RudWxsX2lzbG9jYWw7CkBAIC04OTg4LDEx ICs4OTkwLDEzIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0Ymxp bmZvLCBpbnQgbnVtVGFibGVzKQogCSAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE4 MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwKKwkJCQkJCQkgIkNBU0UgV0hFTiBhLmF0 dG5vdG51bGwgPSAnaScgVEhFTiAnZicgRUxTRSAndCcgRU5EIEFTIG5vdG51bGxfdmFsaWQsXG4i CiAJCQkJCQkJICJjby5jb25uYW1lIEFTIG5vdG51bGxfbmFtZSxcbiIKIAkJCQkJCQkgImNvLmNv bm5vaW5oZXJpdCBBUyBub3RudWxsX25vaW5oZXJpdCxcbiIKIAkJCQkJCQkgImNvLmNvbmlzbG9j YWwgQVMgbm90bnVsbF9pc2xvY2FsLFxuIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxLAorCQkJCQkJCSAiJ3QnIEFTIG5vdG51bGxfdmFsaWQsXG4iCiAJCQkJCQkJICJDQVNFIFdI RU4gYS5hdHRub3RudWxsIFRIRU4gJycgRUxTRSBOVUxMIEVORCBBUyBub3RudWxsX25hbWUsXG4i CiAJCQkJCQkJICJmYWxzZSBBUyBub3RudWxsX25vaW5oZXJpdCxcbiIKIAkJCQkJCQkgImEuYXR0 aXNsb2NhbCBBUyBub3RudWxsX2lzbG9jYWwsXG4iKTsKQEAgLTkwNjcsNiArOTA3MSw3IEBAIGdl dFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFi bGVzKQogCWlfYXR0bGVuID0gUFFmbnVtYmVyKHJlcywgImF0dGxlbiIpOwogCWlfYXR0YWxpZ24g PSBQUWZudW1iZXIocmVzLCAiYXR0YWxpZ24iKTsKIAlpX2F0dGlzbG9jYWwgPSBQUWZudW1iZXIo cmVzLCAiYXR0aXNsb2NhbCIpOworCWlfbm90bnVsbF92YWxpZCA9IFBRZm51bWJlcihyZXMsICJu b3RudWxsX3ZhbGlkIik7CiAJaV9ub3RudWxsX25hbWUgPSBQUWZudW1iZXIocmVzLCAibm90bnVs bF9uYW1lIik7CiAJaV9ub3RudWxsX25vaW5oZXJpdCA9IFBRZm51bWJlcihyZXMsICJub3RudWxs X25vaW5oZXJpdCIpOwogCWlfbm90bnVsbF9pc2xvY2FsID0gUFFmbnVtYmVyKHJlcywgIm5vdG51 bGxfaXNsb2NhbCIpOwpAQCAtOTA4Niw2ICs5MDkxLDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJICogciBpcyBoYW5k bGVkIGJ5IHRoZSBpbm5lciBsb29wLgogCSAqLwogCWN1cnRibGluZHggPSAtMTsKKwlhcHBlbmRQ UUV4cEJ1ZmZlckNoYXIoaW52YWxpZG5vdG51bGxvaWRzLCAneycpOwogCWZvciAoaW50IHIgPSAw OyByIDwgbnR1cHM7KQogCXsKIAkJT2lkCQkJYXR0cmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShy ZXMsIHIsIGlfYXR0cmVsaWQpKTsKQEAgLTkxMzQsNiArOTE0MCw3IEBAIGdldFRhYmxlQXR0cnMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQl0Ymlu Zm8tPmF0dGNvbXByZXNzaW9uID0gKGNoYXIgKikgcGdfbWFsbG9jKG51bWF0dHMgKiBzaXplb2Yo Y2hhcikpOwogCQl0YmluZm8tPmF0dGZkd29wdGlvbnMgPSAoY2hhciAqKikgcGdfbWFsbG9jKG51 bWF0dHMgKiBzaXplb2YoY2hhciAqKSk7CiAJCXRiaW5mby0+YXR0bWlzc2luZ3ZhbCA9IChjaGFy ICoqKSBwZ19tYWxsb2MobnVtYXR0cyAqIHNpemVvZihjaGFyICopKTsKKwkJdGJpbmZvLT5ub3Ru dWxsX3ZhbGlkID0gKGJvb2wgKikgcGdfbWFsbG9jKG51bWF0dHMgKiBzaXplb2YoYm9vbCkpOwog CQl0YmluZm8tPm5vdG51bGxfY29uc3RycyA9IChjaGFyICoqKSBwZ19tYWxsb2MobnVtYXR0cyAq IHNpemVvZihjaGFyICopKTsKIAkJdGJpbmZvLT5ub3RudWxsX25vaW5oID0gKGJvb2wgKikgcGdf bWFsbG9jKG51bWF0dHMgKiBzaXplb2YoYm9vbCkpOwogCQl0YmluZm8tPm5vdG51bGxfaXNsb2Nh bCA9IChib29sICopIHBnX21hbGxvYyhudW1hdHRzICogc2l6ZW9mKGJvb2wpKTsKQEAgLTkxNjAs MTIgKzkxNjcsMjkgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRi bGluZm8sIGludCBudW1UYWJsZXMpCiAJCQl0YmluZm8tPmF0dGxlbltqXSA9IGF0b2koUFFnZXR2 YWx1ZShyZXMsIHIsIGlfYXR0bGVuKSk7CiAJCQl0YmluZm8tPmF0dGFsaWduW2pdID0gKihQUWdl dHZhbHVlKHJlcywgciwgaV9hdHRhbGlnbikpOwogCQkJdGJpbmZvLT5hdHRpc2xvY2FsW2pdID0g KFBRZ2V0dmFsdWUocmVzLCByLCBpX2F0dGlzbG9jYWwpWzBdID09ICd0Jyk7CisJCQl0YmluZm8t Pm5vdG51bGxfdmFsaWRbal0gPSAoUFFnZXR2YWx1ZShyZXMsIHIsIGlfbm90bnVsbF92YWxpZClb MF0gPT0gJ3QnKTsKIAotCQkJLyogSGFuZGxlIG5vdC1udWxsIGNvbnN0cmFpbnQgbmFtZSBhbmQg ZmxhZ3MgKi8KLQkJCWRldGVybWluZU5vdE51bGxGbGFncyhmb3V0LCByZXMsIHIsCi0JCQkJCQkJ CSAgdGJpbmZvLCBqLAotCQkJCQkJCQkgIGlfbm90bnVsbF9uYW1lLCBpX25vdG51bGxfbm9pbmhl cml0LAotCQkJCQkJCQkgIGlfbm90bnVsbF9pc2xvY2FsKTsKKwkJCS8qCisJCQkgKiBEdW1wIHRo ZSBpbnZhbGlkIE5PVCBOVUxMIGNvbnN0cmFpbnQgbGlrZSB0aGUgQ2hlY2sgY29uc3RyYWludHMK KwkJCSAqLworCQkJaWYgKHRiaW5mby0+bm90bnVsbF92YWxpZFtqXSkKKwkJCQkvKiBIYW5kbGUg bm90LW51bGwgY29uc3RyYWludCBuYW1lIGFuZCBmbGFncyAqLworCQkJCWRldGVybWluZU5vdE51 bGxGbGFncyhmb3V0LCByZXMsIHIsCisJCQkJCQkJCQkgIHRiaW5mbywgaiwKKwkJCQkJCQkJCSAg aV9ub3RudWxsX25hbWUsIGlfbm90bnVsbF9ub2luaGVyaXQsCisJCQkJCQkJCQkgIGlfbm90bnVs bF9pc2xvY2FsKTsKKwkJCWVsc2UgaWYgKCFQUWdldGlzbnVsbChyZXMsIHIsIGlfbm90bnVsbF9u YW1lKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEFkZCB0aGUgZW50cnkgaW50byBpbnZhbGlkbm90 bnVsbCBsaXN0IHNvIE5PVCBOVUxMCisJCQkJICogY29uc3RyYWludCBnZXQgZHVtcCBhcyBzZXBh cmF0ZSBjb25zdHJhaW50cy4KKwkJCQkgKi8KKwkJCQlpZiAoaW52YWxpZG5vdG51bGxvaWRzLT5s ZW4gPiAxKQkvKiBkbyB3ZSBoYXZlIG1vcmUgdGhhbgorCQkJCQkJCQkJCQkJCSAqIHRoZSAneyc/ ICovCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcihpbnZhbGlkbm90bnVsbG9pZHMsICcsJyk7 CisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoaW52YWxpZG5vdG51bGxvaWRzLCAiJXUiLCB0YmluZm8t PmRvYmouY2F0SWQub2lkKTsKKworCQkJfQogCiAJCQl0YmluZm8tPmF0dG9wdGlvbnNbal0gPSBw Z19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIHIsIGlfYXR0b3B0aW9ucykpOwogCQkJdGJpbmZvLT5h dHRjb2xsYXRpb25bal0gPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIHIsIGlfYXR0Y29sbGF0aW9u KSk7CkBAIC05MTg3LDYgKzkyMTEsNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAl9CiAKIAlQUWNsZWFyKHJlcyk7CisJ YXBwZW5kUFFFeHBCdWZmZXJDaGFyKGludmFsaWRub3RudWxsb2lkcywgJ30nKTsKIAogCS8qCiAJ ICogTm93IGdldCBpbmZvIGFib3V0IGNvbHVtbiBkZWZhdWx0cy4gIFRoaXMgaXMgc2tpcHBlZCBm b3IgYSBkYXRhLW9ubHkKQEAgLTk0NTAsNiArOTQ3NSwxMjggQEAgZ2V0VGFibGVBdHRycyhBcmNo aXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCVBRY2xlYXIo cmVzKTsKIAl9CiAKKwkvKgorCSAqIEdldCBpbmZvIGFib3V0IHRhYmxlIElOVkFMSUQgTk9UIE5V TEwgY29uc3RyYWludHMuICBUaGlzIGlzIHNraXBwZWQgZm9yCisJICogYSBkYXRhLW9ubHkgZHVt cCwgYXMgaXQgaXMgb25seSBuZWVkZWQgZm9yIHRhYmxlIHNjaGVtYXMuCisJICovCisJaWYgKGRv cHQtPmR1bXBTY2hlbWEgJiYgaW52YWxpZG5vdG51bGxvaWRzLT5sZW4gPiAyKQorCXsKKwkJQ29u c3RyYWludEluZm8gKmNvbnN0cnM7CisJCWludAkJCW51bUNvbnN0cnM7CisJCWludAkJCWlfdGFi bGVvaWQ7CisJCWludAkJCWlfb2lkOworCQlpbnQJCQlpX2NvbnJlbGlkOworCQlpbnQJCQlpX2Nv bm5hbWU7CisJCWludAkJCWlfY29uc3JjOworCQlpbnQJCQlpX2NvbmlzbG9jYWw7CisJCWludAkJ CWlfY29udmFsaWRhdGVkOworCisJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIHRhYmxlIGludmFsaWQg bm90IG51bGwgY29uc3RyYWludHMiKTsKKworCQlyZXNldFBRRXhwQnVmZmVyKHEpOworCQlhcHBl bmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQsIGMub2lkLCBjb25y ZWxpZCwgY29ubmFtZSwgIgorCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRl ZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQg IgorCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMgc3JjKHRi bG9pZClcbiIKKwkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNy Yy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICduJyBB TkQgY29udmFsaWRhdGVkID0gJ2YnIgorCQkJCQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5j b25uYW1lIiwKKwkJCQkJCSAgaW52YWxpZG5vdG51bGxvaWRzLT5kYXRhKTsKKworCQlyZXMgPSBF eGVjdXRlU3FsUXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQludW1D b25zdHJzID0gUFFudHVwbGVzKHJlcyk7CisJCWNvbnN0cnMgPSAoQ29uc3RyYWludEluZm8gKikg cGdfbWFsbG9jKG51bUNvbnN0cnMgKiBzaXplb2YoQ29uc3RyYWludEluZm8pKTsKKworCQlpX3Rh Ymxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CisJCWlfb2lkID0gUFFmbnVtYmVy KHJlcywgIm9pZCIpOworCQlpX2NvbnJlbGlkID0gUFFmbnVtYmVyKHJlcywgImNvbnJlbGlkIik7 CisJCWlfY29ubmFtZSA9IFBRZm51bWJlcihyZXMsICJjb25uYW1lIik7CisJCWlfY29uc3JjID0g UFFmbnVtYmVyKHJlcywgImNvbnNyYyIpOworCQlpX2NvbmlzbG9jYWwgPSBQUWZudW1iZXIocmVz LCAiY29uaXNsb2NhbCIpOworCQlpX2NvbnZhbGlkYXRlZCA9IFBRZm51bWJlcihyZXMsICJjb252 YWxpZGF0ZWQiKTsKKworCQkvKiBBcyBhYm92ZSwgdGhpcyBsb29wIGl0ZXJhdGVzIG9uY2UgcGVy IHRhYmxlLCBub3Qgb25jZSBwZXIgcm93ICovCisJCWN1cnRibGluZHggPSAtMTsKKwkJZm9yIChp bnQgaiA9IDA7IGogPCBudW1Db25zdHJzOykKKwkJeworCQkJT2lkCQkJY29ucmVsaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucmVsaWQpKTsKKwkJCVRhYmxlSW5mbyAgKnRiaW5m byA9IE5VTEw7CisJCQlpbnQJCQludW1jb25zOworCisJCQkvKiBDb3VudCByb3dzIGZvciB0aGlz IHRhYmxlICovCisJCQlmb3IgKG51bWNvbnMgPSAxOyBudW1jb25zIDwgbnVtQ29uc3RycyAtIGo7 IG51bWNvbnMrKykKKwkJCQlpZiAoYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqICsgbnVtY29ucywg aV9jb25yZWxpZCkpICE9IGNvbnJlbGlkKQorCQkJCQlicmVhazsKKworCQkJLyoKKwkJCSAqIExv Y2F0ZSB0aGUgYXNzb2NpYXRlZCBUYWJsZUluZm87IHdlIHJlbHkgb24gdGJsaW5mb1tdIGJlaW5n IGluCisJCQkgKiBPSUQgb3JkZXIuCisJCQkgKi8KKwkJCXdoaWxlICgrK2N1cnRibGluZHggPCBu dW1UYWJsZXMpCisJCQl7CisJCQkJdGJpbmZvID0gJnRibGluZm9bY3VydGJsaW5keF07CisJCQkJ aWYgKHRiaW5mby0+ZG9iai5jYXRJZC5vaWQgPT0gY29ucmVsaWQpCisJCQkJCWJyZWFrOworCQkJ fQorCQkJaWYgKGN1cnRibGluZHggPj0gbnVtVGFibGVzKQorCQkJCXBnX2ZhdGFsKCJ1bnJlY29n bml6ZWQgdGFibGUgT0lEICV1IiwgY29ucmVsaWQpOworCisKKwkJCXRiaW5mby0+Y2hlY2tleHBy cyA9IGNvbnN0cnMgKyBqOworCisJCQlmb3IgKGludCBjID0gMDsgYyA8IG51bWNvbnM7IGMrKywg aisrKQorCQkJeworCQkJCWJvb2wJCXZhbGlkYXRlZCA9IFBRZ2V0dmFsdWUocmVzLCBqLCBpX2Nv bnZhbGlkYXRlZClbMF0gPT0gJ3QnOworCisJCQkJY29uc3Ryc1tqXS5kb2JqLm9ialR5cGUgPSBE T19DT05TVFJBSU5UOworCQkJCWNvbnN0cnNbal0uZG9iai5jYXRJZC50YWJsZW9pZCA9IGF0b29p ZChQUWdldHZhbHVlKHJlcywgaiwgaV90YWJsZW9pZCkpOworCQkJCWNvbnN0cnNbal0uZG9iai5j YXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfb2lkKSk7CisJCQkJQXNzaWdu RHVtcElkKCZjb25zdHJzW2pdLmRvYmopOworCQkJCWNvbnN0cnNbal0uZG9iai5uYW1lID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2Nvbm5hbWUpKTsKKwkJCQljb25zdHJzW2pdLmRv YmoubmFtZXNwYWNlID0gdGJpbmZvLT5kb2JqLm5hbWVzcGFjZTsKKwkJCQljb25zdHJzW2pdLmNv bnRhYmxlID0gdGJpbmZvOworCQkJCWNvbnN0cnNbal0uY29uZG9tYWluID0gTlVMTDsKKwkJCQlj b25zdHJzW2pdLmNvbnR5cGUgPSAnbic7CisJCQkJY29uc3Ryc1tqXS5jb25kZWYgPSBwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uc3JjKSk7CisJCQkJY29uc3Ryc1tqXS5jb25mcmVs aWQgPSBJbnZhbGlkT2lkOworCQkJCWNvbnN0cnNbal0uY29uaW5kZXggPSAwOworCQkJCWNvbnN0 cnNbal0uY29uZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWNvbnN0cnNbal0uY29uZGVmZXJyZWQg PSBmYWxzZTsKKwkJCQljb25zdHJzW2pdLmNvbmlzbG9jYWwgPSAoUFFnZXR2YWx1ZShyZXMsIGos IGlfY29uaXNsb2NhbClbMF0gPT0gJ3QnKTsKKworCQkJCS8qCisJCQkJICogQW4gdW52YWxpZGF0 ZWQgY29uc3RyYWludCBuZWVkcyB0byBiZSBkdW1wZWQgc2VwYXJhdGVseSwgc28KKwkJCQkgKiB0 aGF0IHBvdGVudGlhbGx5LXZpb2xhdGluZyBleGlzdGluZyBkYXRhIGlzIGxvYWRlZCBiZWZvcmUK KwkJCQkgKiB0aGUgY29uc3RyYWludC4KKwkJCQkgKi8KKwkJCQljb25zdHJzW2pdLnNlcGFyYXRl ID0gIXZhbGlkYXRlZDsKKworCQkJCWNvbnN0cnNbal0uZG9iai5kdW1wID0gdGJpbmZvLT5kb2Jq LmR1bXA7CisKKwkJCQkvKgorCQkJCSAqIE1hcmsgdGhlIGNvbnN0cmFpbnQgYXMgbmVlZGluZyB0 byBhcHBlYXIgYmVmb3JlIHRoZSB0YWJsZQorCQkJCSAqIC0tLSB0aGlzIGlzIHNvIHRoYXQgYW55 IG90aGVyIGRlcGVuZGVuY2llcyBvZiB0aGUKKwkJCQkgKiBjb25zdHJhaW50IHdpbGwgYmUgZW1p dHRlZCBiZWZvcmUgd2UgdHJ5IHRvIGNyZWF0ZSB0aGUKKwkJCQkgKiB0YWJsZS4gIElmIHRoZSBj b25zdHJhaW50IGlzIHRvIGJlIGR1bXBlZCBzZXBhcmF0ZWx5LCBpdAorCQkJCSAqIHdpbGwgYmUg ZHVtcGVkIGFmdGVyIGRhdGEgaXMgbG9hZGVkIGFueXdheSwgc28gZG9uJ3QgZG8gaXQuCisJCQkJ ICogKFRoZXJlJ3MgYW4gYXV0b21hdGljIGRlcGVuZGVuY3kgaW4gdGhlIG9wcG9zaXRlIGRpcmVj dGlvbgorCQkJCSAqIGFueXdheSwgc28gZG9uJ3QgbmVlZCB0byBhZGQgb25lIG1hbnVhbGx5IGhl cmUuKQorCQkJCSAqLworCQkJCWlmICghY29uc3Ryc1tqXS5zZXBhcmF0ZSkKKwkJCQkJYWRkT2Jq ZWN0RGVwZW5kZW5jeSgmdGJpbmZvLT5kb2JqLAorCQkJCQkJCQkJCWNvbnN0cnNbal0uZG9iai5k dW1wSWQpOworCisJCQkJLyoKKwkJCQkgKiBXZSB3aWxsIGRldGVjdCBsYXRlciB3aGV0aGVyIHRo ZSBjb25zdHJhaW50IG11c3QgYmUgc3BsaXQKKwkJCQkgKiBvdXQgZnJvbSB0aGUgdGFibGUgZGVm aW5pdGlvbi4KKwkJCQkgKi8KKwkJCX0KKwkJfQorCQlQUWNsZWFyKHJlcyk7CisJfQorCiAJZGVz dHJveVBRRXhwQnVmZmVyKHEpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcih0YmxvaWRzKTsKIAlkZXN0 cm95UFFFeHBCdWZmZXIoY2hlY2tvaWRzKTsKQEAgLTE2NTQzLDcgKzE2NjkwLDggQEAgZHVtcFRh YmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCQkg KiBkZWZpbmVkLCBvciBpZiBiaW5hcnkgdXBncmFkZS4gIChJbiB0aGUgbGF0dGVyIGNhc2UsIHdl CiAJCQkJCSAqIHJlc2V0IGNvbmlzbG9jYWwgYmVsb3cuKQogCQkJCQkgKi8KLQkJCQkJcHJpbnRf bm90bnVsbCA9ICh0YmluZm8tPm5vdG51bGxfY29uc3Ryc1tqXSAhPSBOVUxMICYmCisJCQkJCXBy aW50X25vdG51bGwgPSAodGJpbmZvLT5ub3RudWxsX3ZhbGlkW2pdICYmCisJCQkJCQkJCQkgdGJp bmZvLT5ub3RudWxsX2NvbnN0cnNbal0gIT0gTlVMTCAmJgogCQkJCQkJCQkJICh0YmluZm8tPm5v dG51bGxfaXNsb2NhbFtqXSB8fAogCQkJCQkJCQkJICBkb3B0LT5iaW5hcnlfdXBncmFkZSB8fAog CQkJCQkJCQkJICB0YmluZm8tPmlzcGFydGl0aW9uKSk7CkBAIC0xNjYwNSwxMSArMTY3NTMsNiBA QCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8p CiAJCQkJCQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVmc1tqXS0+YWRlZl9leHByKTsKIAkJCQkJfQog Ci0JCQkJCXByaW50X25vdG51bGwgPSAodGJpbmZvLT5ub3RudWxsX2NvbnN0cnNbal0gIT0gTlVM TCAmJgotCQkJCQkJCQkJICh0YmluZm8tPm5vdG51bGxfaXNsb2NhbFtqXSB8fAotCQkJCQkJCQkJ ICBkb3B0LT5iaW5hcnlfdXBncmFkZSB8fAotCQkJCQkJCQkJICB0YmluZm8tPmlzcGFydGl0aW9u KSk7Ci0KIAkJCQkJaWYgKHByaW50X25vdG51bGwpCiAJCQkJCXsKIAkJCQkJCWlmICh0YmluZm8t Pm5vdG51bGxfY29uc3Ryc1tqXVswXSA9PSAnXDAnKQpAQCAtMTc5MzEsOSArMTgwNzQsOSBAQCBk dW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAqY29uaW5m bykKIAkJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxLT5kYXRhLAogCQkJCQkJCQkJICAuZHJvcFN0 bXQgPSBkZWxxLT5kYXRhKSk7CiAJfQotCWVsc2UgaWYgKGNvbmluZm8tPmNvbnR5cGUgPT0gJ2Mn ICYmIHRiaW5mbykKKwllbHNlIGlmICgoY29uaW5mby0+Y29udHlwZSA9PSAnYycgfHwgY29uaW5m by0+Y29udHlwZSA9PSAnbicpICYmIHRiaW5mbykKIAl7Ci0JCS8qIENIRUNLIGNvbnN0cmFpbnQg b24gYSB0YWJsZSAqLworCQkvKiBDSEVDSy9JTlZBTElEX05PVE5VTEwgY29uc3RyYWludCBvbiBh IHRhYmxlICovCiAKIAkJLyogSWdub3JlIGlmIG5vdCB0byBiZSBkdW1wZWQgc2VwYXJhdGVseSwg b3IgaWYgaXQgd2FzIGluaGVyaXRlZCAqLwogCQlpZiAoY29uaW5mby0+c2VwYXJhdGUgJiYgY29u aW5mby0+Y29uaXNsb2NhbCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGJiZGIzMGI1ZjU0Li45MDMzNWQyYmIw YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCkBAIC0zNjEsNiArMzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxl SW5mbwogCWNoYXIJICAgKmF0dGNvbXByZXNzaW9uOyAvKiBwZXItYXR0cmlidXRlIGNvbXByZXNz aW9uIG1ldGhvZCAqLwogCWNoYXIJICAqKmF0dGZkd29wdGlvbnM7CS8qIHBlci1hdHRyaWJ1dGUg ZmR3IG9wdGlvbnMgKi8KIAljaGFyCSAgKiphdHRtaXNzaW5ndmFsOwkvKiBwZXIgYXR0cmlidXRl IG1pc3NpbmcgdmFsdWUgKi8KKwlib29sCSAgICpub3RudWxsX3ZhbGlkOwkvKiBOT1QgTlVMTCBz dGF0dXMgKi8KIAljaGFyCSAgKipub3RudWxsX2NvbnN0cnM7CS8qIE5PVCBOVUxMIGNvbnN0cmFp bnQgbmFtZXMuIElmIG51bGwsCiAJCQkJCQkJCQkgKiB0aGVyZSBpc24ndCBvbmUgb24gdGhpcyBj b2x1bW4uIElmCiAJCQkJCQkJCQkgKiBlbXB0eSBzdHJpbmcsIHVubmFtZWQgY29uc3RyYWludApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBjN2JmZmMxYjA0NS4uNWI1Yjc1NmU1MTIgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4v cGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0xMDk5LDYgKzEwOTksMjMgQEAgbXkgJXRlc3Rz ID0gKAogCQl9LAogCX0sCiAKKyAgICAnQ09OU1RSQUlOVCBOT1QgTlVMTCAvIElOVkFMSUQnID0+ IHsKKyAgICAgICAgY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3Rh YmxlX25uICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wxIGludCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQUxURVIgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfbm4g QUREIENPTlNUUkFJTlQgbm4gTk9UIE5VTEwgY29sMSBOT1QgVkFMSUQ7JywKKyAgICAgICAgcmVn ZXhwID0+IHFyL14KKyAgICAgICAgICAgIFxRQUxURVIgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFi bGVfbm5cRSBcbl5ccysKKyAgICAgICAgICAgIFxRQUREIENPTlNUUkFJTlQgbm4gTk9UIE5VTEwg Y29sMSBOT1QgVkFMSUQ7XEUKKyAgICAgICAgICAgIC94bSwKKyAgICAgICAgbGlrZSA9PiB7Cisg ICAgICAgICAgICAlZnVsbF9ydW5zLCAlZHVtcF90ZXN0X3NjaGVtYV9ydW5zLCBzZWN0aW9uX3Bv c3RfZGF0YSA9PiAxLAorICAgICAgICB9LAorICAgICAgICB1bmxpa2UgPT4geworICAgICAgICAg ICAgZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisgICAgICAgICAgICBvbmx5X2R1bXBf bWVhc3VyZW1lbnQgPT4gMSwKKyAgICAgICAgfSwKKyAgICB9LAorCiAJJ0NPTlNUUkFJTlQgUFJJ TUFSWSBLRVkgLyBXSVRIT1VUIE9WRVJMQVBTJyA9PiB7CiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFU RSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV90cGsgKAogCQkJCQkJCWNvbDEgaW50NHJhbmdl LApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYwppbmRleCBlNmNmNDY4YWM5ZS4uZjQ4YjI0ZWQzOGMgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yMTA3 LDcgKzIxMDcsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFu YW1lLAogCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRj b2xsX2NvbCksIGZhbHNlLCBmYWxzZSk7CiAKIAkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LAot CQkJCQkJCSAgc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRub3RudWxsX2NvbCksICJ0Iikg PT0gMCA/ICJub3QgbnVsbCIgOiAiIiwKKwkJCQkJCQkgIHN0cmNtcChQUWdldHZhbHVlKHJlcywg aSwgYXR0bm90bnVsbF9jb2wpLCAiZiIpID09IDAgPyAiIiA6ICJub3QgbnVsbCIsCiAJCQkJCQkJ ICBmYWxzZSwgZmFsc2UpOwogCiAJCQlpZGVudGl0eSA9IFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRp ZGVudGl0eV9jb2wpOwpAQCAtMzExNCw3ICszMTE0LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFp bHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJewogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwKIAkJCQkJCQkgICJTRUxFQ1QgYy5jb25uYW1lLCBhLmF0dG5hbWUsIGMuY29ubm9pbmhlcml0 LFxuIgotCQkJCQkJCSAgIiAgYy5jb25pc2xvY2FsLCBjLmNvbmluaGNvdW50IDw+IDBcbiIKKwkJ CQkJCQkgICIgIGMuY29uaXNsb2NhbCwgYy5jb25pbmhjb3VudCA8PiAwLCBjLmNvbnZhbGlkYXRl ZCBcbiIKIAkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjIEpPSU5cbiIK IAkJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEgT05cbiIKIAkJCQkJCQkgICIg ICAgKGEuYXR0cmVsaWQgPSBjLmNvbnJlbGlkIEFORCBhLmF0dG51bSA9IGMuY29ua2V5WzFdKVxu IgpAQCAtMzEzOCwxMyArMzEzOCwxNSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCQkJCWJvb2wJCWlzbG9jYWwgPSBQUWdldHZhbHVlKHJlc3VsdCwg aSwgMylbMF0gPT0gJ3QnOwogCQkJCWJvb2wJCWluaGVyaXRlZCA9IFBRZ2V0dmFsdWUocmVzdWx0 LCBpLCA0KVswXSA9PSAndCc7CiAKLQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwi JXNcIiBOT1QgTlVMTCBcIiVzXCIlcyIsCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAg ICBcIiVzXCIgTk9UIE5VTEwgXCIlc1wiJXMlcyIsCiAJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1 bHQsIGksIDApLAogCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSwKIAkJCQkJCQkJ ICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMilbMF0gPT0gJ3QnID8KIAkJCQkJCQkJICAiIE5PIElO SEVSSVQiIDoKIAkJCQkJCQkJICBpc2xvY2FsICYmIGluaGVyaXRlZCA/IF8oIiAobG9jYWwsIGlu aGVyaXRlZCkiKSA6Ci0JCQkJCQkJCSAgaW5oZXJpdGVkID8gXygiIChpbmhlcml0ZWQpIikgOiAi Iik7CisJCQkJCQkJCSAgaW5oZXJpdGVkID8gXygiIChpbmhlcml0ZWQpIikgOiAiIiwKKwkJCQkJ CQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNSlbMF0gPT0gJ2YnID8KKwkJCQkJCQkJICAiIE5P VCBWQUxJRCAiIDogIiIpOwogCiAJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRh dGEpOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKaW5kZXggYjUxYTI2NzA5NTgu LmEwMWEwZmE5NmQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJpYnV0 ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKQEAgLTIyOSw2ICsy MjksNyBAQCBNQUtFX1NZU0NBQ0hFKEFUVE5VTSwgcGdfYXR0cmlidXRlX3JlbGlkX2F0dG51bV9p bmRleCwgMTI4KTsKIAogI2RlZmluZQkJICBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFCQkndCcKICNk ZWZpbmUJCSAgQVRUUklCVVRFX05PVE5VTExfRkFMU0UJCSdmJworI2RlZmluZQkJICBBVFRSSUJV VEVfTk9UTlVMTF9JTlZBTElECQknaScKIAogI2VuZGlmCQkJCQkJCS8qIEVYUE9TRV9UT19DTElF TlRfQ09ERSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IDZkYTE2NGU3 ZTRkLi4wZTAxZmYxYmJiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25z dHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKQEAgLTI2 NCw3ICsyNjQsOCBAQCBleHRlcm4gSGVhcFR1cGxlIGZpbmROb3ROdWxsQ29uc3RyYWludChPaWQg cmVsaWQsIGNvbnN0IGNoYXIgKmNvbG5hbWUpOwogZXh0ZXJuIEhlYXBUdXBsZSBmaW5kRG9tYWlu Tm90TnVsbENvbnN0cmFpbnQoT2lkIHR5cGlkKTsKIGV4dGVybiBBdHRyTnVtYmVyIGV4dHJhY3RO b3ROdWxsQ29sdW1uKEhlYXBUdXBsZSBjb25zdHJUdXApOwogZXh0ZXJuIGJvb2wgQWRqdXN0Tm90 TnVsbEluaGVyaXRhbmNlKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCi0JCQkJCQkJCQkg Ym9vbCBpc19sb2NhbCwgYm9vbCBpc19ub19pbmhlcml0KTsKKwkJCQkJCQkJCSBjb25zdCBjaGFy ICpjb25uYW1lLCBib29sIGlzX2xvY2FsLAorCQkJCQkJCQkJIGJvb2wgaXNfbm9faW5oZXJpdCk7 CiBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBi b29sIGNvb2tlZCwKIAkJCQkJCQkJCQkgICBib29sIGluY2x1ZGVfbm9pbmgpOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CmluZGV4IDRmMzkxMDBmY2RmLi5iNTI1 NzhiZjhkMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50 cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQKQEAg LTg5Niw2ICs4OTYsMTU5IEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogICAgICJmb29iYXIiIE5P VCBOVUxMICJhIgogCiBEUk9QIFRBQkxFIG5vdG51bGxfdGJsMTsKKy0tIHZlcmlmeSBOT1QgTlVM TCBWQUxJRC9OT1QgVkFMSUQKK0NSRUFURSBUQUJMRSBub3RudWxsX3RibDEgKGEgSU5URUdFUiwg YiBJTlRFR0VSKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMSBWQUxVRVMgKE5VTEwsIDEpOwor SU5TRVJUIElOVE8gbm90bnVsbF90YmwxIFZBTFVFUyAoTlVMTCwgMik7CitJTlNFUlQgSU5UTyBu b3RudWxsX3RibDEgVkFMVUVTICgzMDAsIDMpOworLS0gQmVsb3cgc3RhdGVtZW50IHNob3VsZCB0 aHJvdyBhbiBlcnJvcgorQUxURVIgVEFCTEUgbm90bnVsbF90YmwxIEFERCBDT05TVFJBSU5UIG5u IE5PVCBOVUxMIGE7CitFUlJPUjogIGNvbHVtbiAiYSIgb2YgcmVsYXRpb24gIm5vdG51bGxfdGJs MSIgY29udGFpbnMgbnVsbCB2YWx1ZXMKK0FMVEVSIFRBQkxFIG5vdG51bGxfdGJsMSBBREQgQ09O U1RSQUlOVCBubiBOT1QgTlVMTCBhIE5PVCBWQUxJRDsKK1xkKyBub3RudWxsX3RibDEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLm5vdG51bGxfdGJsMSIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFn ZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAg ICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgIm5uIiBOT1QgTlVMTCAiYSIgTk9UIFZBTElEIAor CistLSBUcnkgdG8gaW5zZXJ0IG5ldyByZWNvcmQgd2l0aCBOVUxMLCBzaG91bGQgdGhyb3cgYW4g ZXJyb3IKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMSBWQUxVRVMgKE5VTEwsIDQpOworRVJST1I6 ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYSIgb2YgcmVsYXRpb24gIm5vdG51bGxfdGJsMSIgdmlv bGF0ZXMgbm90LW51bGwgY29uc3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMg KG51bGwsIDQpLgorLS0gU0VMRUNUIE5VTEwgdmFsdWVzIGZvciBDT0xVTU4gYSwgc2hvdWxkIHJl dHVybiAyIHJlY29yZHMuCitTRUxFQ1QgKiBGUk9NIG5vdG51bGxfdGJsMSBXSEVSRSBhIGlzIE5V TEw7CisgYSB8IGIgCistLS0rLS0tCisgICB8IDEKKyAgIHwgMgorKDIgcm93cykKKworLS0gVVBE QVRFIHRoZSBvbmUgb2YgdGhlIE5VTEwgdmFsdWVzCitVUERBVEUgbm90bnVsbF90YmwxIFNFVCBh ID0gMTAwIFdIRVJFIGIgPSAxOworLS0gREVMRVRFIHRoZSByZWNvcmQgKE5VTEwsIDIpCitERUxF VEUgRlJPTSBub3RudWxsX3RibDEgV0hFUkUgYiA9IDI7CitTRUxFQ1QgKiBGUk9NIG5vdG51bGxf dGJsMTsKKyAgYSAgfCBiIAorLS0tLS0rLS0tCisgMzAwIHwgMworIDEwMCB8IDEKKygyIHJvd3Mp CisKKy0tIFRyeSB0byBhZGQgcHJpbWFyeSBrZXkgb24gdGFibGUgY29sdW1uIG1hcmtlZCBhcyBO T1QgVkFMSUQgTk9UIE5VTEwKKy0tIGNvbnN0cmFpbnQuIFRoaXMgc2hvdWxkIHRocm93IGFuIGVy cm9yLgorQUxURVIgVEFCTEUgbm90bnVsbF90YmwxIGFkZCBwcmltYXJ5IGtleSAoYSk7CitFUlJP UjogIGNvbHVtbiAiYSIgb2YgdGFibGUgIm5vdG51bGxfdGJsMSIgaXMgbWFya2VkIGFzIE5PVCBW QUxJRCBOT1QgTlVMTCBjb25zdHJhaW50CistLSBJTkhFUklUUyB0YWJsZSBoYXZpbmcgTk9UIFZB TElEIE5PVCBOVUxMIGNvbnN0cmFpbnRzLgorQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJsMV9jaGls ZChhIElOVEVHRVIsIGIgSU5URUdFUikgSU5IRVJJVFMobm90bnVsbF90YmwxKTsKK05PVElDRTog IG1lcmdpbmcgY29sdW1uICJhIiB3aXRoIGluaGVyaXRlZCBkZWZpbml0aW9uCitOT1RJQ0U6ICBt ZXJnaW5nIGNvbHVtbiAiYiIgd2l0aCBpbmhlcml0ZWQgZGVmaW5pdGlvbgorLS0gQ2hpbGQgdGFi bGUgTk9UIE5VTEwgY29uc3RyYWludHMgc2hvdWxkIGJlIHZhbGlkLgorU0VMRUNUIGNvbm5hbWUs IGNvbnZhbGlkYXRlZCBGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxp ZCA9ICdub3RudWxsX3RibDFfY2hpbGQnOjpyZWdjbGFzczsKKyBjb25uYW1lIHwgY29udmFsaWRh dGVkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgbm4gICAgICB8IHQKKygxIHJvdykKKwor RFJPUCBUQUJMRSBub3RudWxsX3RibDFfY2hpbGQ7CitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEg dmFsaWRhdGUgY29uc3RyYWludCBubjsKK1xkKyBub3RudWxsX3RibDEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLm5vdG51bGxfdGJsMSIKKyBDb2x1bW4gfCAg VHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8IHBs YWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorTm90LW51bGwg Y29uc3RyYWludHM6CisgICAgIm5uIiBOT1QgTlVMTCAiYSIKKworRFJPUCBUQUJMRSBub3RudWxs X3RibDE7CistLSBUZXN0IHRoZSBkaWZmZXJlbnQgTm90IG51bGwgY29uc3RyYWludCBuYW1lIGZv ciBwYXJlbnQgYW5kIGNoaWxkIHRhYmxlCitDUkVBVEUgVEFCTEUgbm90bnVsbF90YmwxIChhIGlu dCk7CitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEgQUREIENPTlNUUkFJTlQgbm5fcGFyZW50IG5v dCBudWxsIGEgbm90IHZhbGlkOworQ1JFQVRFIFRBQkxFIG5vdG51bGxfY2hsZCAoYSBpbnQpOwor QUxURVIgVEFCTEUgbm90bnVsbF9jaGxkIEFERCBDT05TVFJBSU5UIG5uX2NoaWxkIG5vdCBudWxs IGEgbm90IHZhbGlkOworQUxURVIgVEFCTEUgbm90bnVsbF9jaGxkIElOSEVSSVQgbm90bnVsbF90 YmwxOworLS0gVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIHZhbGlkYXRlIG5vdCBudWxsIGNvbnN0cmFp bnQgZm9yIHBhcmVudCBhcyB3ZWxsIGFzCistLSBjaGlsZC4KK0FMVEVSIFRBQkxFIG5vdG51bGxf dGJsMSBWQUxJREFURSBDT05TVFJBSU5UIG5uX3BhcmVudDsKK1NFTEVDVCBjb25uYW1lLCBjb252 YWxpZGF0ZWQgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQKK2lu ICgnbm90bnVsbF90YmwxJzo6cmVnY2xhc3MsICdub3RudWxsX2NobGQnOjpyZWdjbGFzcyk7Cisg IGNvbm5hbWUgIHwgY29udmFsaWRhdGVkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBu bl9wYXJlbnQgfCB0Cisgbm5fY2hpbGQgIHwgdAorKDIgcm93cykKKworRFJPUCBUQUJMRSBub3Ru dWxsX3RibDEgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgbm90bnVs bF9jaGxkCistLSB0ZXN0IHRvIHRocm93IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGFkZCBhbm90 aGVyIE5PVCBOVUxMCistLSBvbiB0aGUgdGFibGUgY29sdW1uIHdpdGggSU5WQUxJRCBOT1QgTlVM TCBjb25zdHJhaW50LgorQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJsMSAoYSBJTlRFR0VSKTsKK0lO U0VSVCBJTlRPIG5vdG51bGxfdGJsMSBWQUxVRVMgKCBOVUxMICk7CitBTFRFUiBUQUJMRSBub3Ru dWxsX3RibDEgQUREIENPTlNUUkFJTlQgbm4xIE5PVCBOVUxMIGEgbm90IHZhbGlkOworLS0gU2hv dWxkIHRocm93IGFuIGVycm9yCitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEgQUREIENPTlNUUkFJ TlQgbm4gTk9UIE5VTEwgYTsKK0VSUk9SOiAgSW52YWxpZCBOT1QgTlVMTCBjb25zdHJhaW50ICJu bjEiIGV4aXN0IG9uIHJlbGF0aW9uICJub3RudWxsX3RibDEiCitISU5UOiAgRG8gVkFMSURBVEUg Q09OU1RSQUlOVAorLS0gVGhpcyBzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hpbGUgdmFsaWRhdGlu ZyB0aGUgTk9UIE5VTEwKKy0tIGNvbnN0cmFpbnQuCitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEg QUxURVIgYSBTRVQgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAiYSIgb2YgcmVsYXRpb24gIm5v dG51bGxfdGJsMSIgY29udGFpbnMgbnVsbCB2YWx1ZXMKKy0tIEFmdGVyIGRlbGV0aW5nIG51bGwg dmFsdWVzLCBTRVQgTk9UIE5VTEwgc2hvdWxkIHdvcmsKK0RFTEVURSBGUk9NIG5vdG51bGxfdGJs MTsKK0FMVEVSIFRBQkxFIG5vdG51bGxfdGJsMSBBTFRFUiBhIFNFVCBOT1QgTlVMTDsKK1NFTEVD VCBjb25uYW1lLCBjb252YWxpZGF0ZWQgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgV0hF UkUgY29ucmVsaWQKK2luICgnbm90bnVsbF90YmwxJzo6cmVnY2xhc3MpOworIGNvbm5hbWUgfCBj b252YWxpZGF0ZWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBubjEgICAgIHwgdAorKDEg cm93KQorCitEUk9QIFRBQkxFIG5vdG51bGxfdGJsMTsKKy0tIFRlc3QgaW52YWxpZCBub3QgbnVs bCBvbiBpbmhlcml0YW5jZSB0YWJsZS4KK0NSRUFURSBUQUJMRSBpbmhfcGFyZW50ICgpOworQ1JF QVRFIFRBQkxFIGluaF9jaGlsZCAoaSBpbnQpIElOSEVSSVRTIChpbmhfcGFyZW50KTsKK0NSRUFU RSBUQUJMRSBpbmhfZ3JhbmRjaGlsZCAoKSBJTkhFUklUUyAoaW5oX3BhcmVudCwgaW5oX2NoaWxk KTsKK0FMVEVSIFRBQkxFIGluaF9wYXJlbnQgQUREIENPTFVNTiBpIGludDsKK05PVElDRTogIG1l cmdpbmcgZGVmaW5pdGlvbiBvZiBjb2x1bW4gImkiIGZvciBjaGlsZCAiaW5oX2NoaWxkIgorTk9U SUNFOiAgbWVyZ2luZyBkZWZpbml0aW9uIG9mIGNvbHVtbiAiaSIgZm9yIGNoaWxkICJpbmhfZ3Jh bmRjaGlsZCIKK0FMVEVSIFRBQkxFIGluaF9wYXJlbnQgQUREIENPTlNUUkFJTlQgbm4gTk9UIE5V TEwgaSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSBpbmhfcGFyZW50IEFMVEVSIGkgU0VUIE5PVCBO VUxMOworU0VMRUNUIGNvbnJlbGlkOjpyZWdjbGFzcywgY29ubmFtZSwgY29udmFsaWRhdGVkLCBj b25pbmhjb3VudCBGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZAor aW4gKCdpbmhfcGFyZW50Jzo6cmVnY2xhc3MsICdpbmhfY2hpbGQnOjpyZWdjbGFzcywgJ2luaF9n cmFuZGNoaWxkJzo6cmVnY2xhc3MpIE9SREVSIEJZIDE7CisgICAgY29ucmVsaWQgICAgfCBjb25u YW1lIHwgY29udmFsaWRhdGVkIHwgY29uaW5oY291bnQgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaW5oX3BhcmVudCAgICAgfCBubiAg ICAgIHwgdCAgICAgICAgICAgIHwgICAgICAgICAgIDAKKyBpbmhfY2hpbGQgICAgICB8IG5uICAg ICAgfCB0ICAgICAgICAgICAgfCAgICAgICAgICAgMQorIGluaF9ncmFuZGNoaWxkIHwgbm4gICAg ICB8IHQgICAgICAgICAgICB8ICAgICAgICAgICAyCisoMyByb3dzKQorCitkcm9wIHRhYmxlIGlu aF9wYXJlbnQsIGluaF9jaGlsZCwgaW5oX2dyYW5kY2hpbGQ7CistLSBDcmVhdGUgdGFibGUgd2l0 aCBOT1QgTlVMTCBJTlZBTElEIGNvbnN0cmFpbnQsIGZvciBwZ191cGdyYWRlLgorQ1JFQVRFIFRB QkxFIG5vdG51bGxfdGJsMV91cGcgKGEgSU5URUdFUiwgYiBJTlRFR0VSKTsKK0lOU0VSVCBJTlRP IG5vdG51bGxfdGJsMV91cGcgVkFMVUVTIChOVUxMLCAxKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxf dGJsMV91cGcgVkFMVUVTIChOVUxMLCAyKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMV91cGcg VkFMVUVTICgzMDAsIDMpOworQUxURVIgVEFCTEUgbm90bnVsbF90YmwxX3VwZyBBREQgQ09OU1RS QUlOVCBubiBOT1QgTlVMTCBhIE5PVCBWQUxJRDsKKy0tIFZlcmlmeSBOT1QgTlVMTCBWQUxJRC9O T1QgVkFMSUQgd2l0aCBwYXJ0aXRpb24gdGFibGUuCitDUkVBVEUgVEFCTEUgbm90bnVsbF90Ymwx IChhIElOVEVHRVIsIGIgSU5URUdFUikgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0FMVEVSIFRB QkxFIG5vdG51bGxfdGJsMSBBREQgQ09OU1RSQUlOVCBub3RudWxsX2NvbiBOT1QgTlVMTCBhIE5P VCBWQUxJRDsKK0NSRUFURSBUQUJMRSBub3RudWxsX3RibDFfMSBQQVJUSVRJT04gT0Ygbm90bnVs bF90YmwxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBub3RudWxs X3RibDFfMiBQQVJUSVRJT04gT0Ygbm90bnVsbF90YmwxIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCk7CistLSBQYXJlbnQgdGFibGUgTk9UIE5VTEwgY29uc3RyYWludHMgd2lsbCBiZSBtYXJr ZWQgYXMgdmFsaWRhdGVkIGZhbHNlLCB3aGVyZQorLS0gZm9yIGNoaWxkIHRhYmxlIGl0IHdpbGwg YmUgdHJ1ZQorU0VMRUNUIGNvbnJlbGlkOjpyZWdjbGFzcywgY29ubmFtZSwgY29udmFsaWRhdGVk IEZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IFdIRVJFCitjb25yZWxpZCBJTiAoJ25vdG51 bGxfdGJsMSc6OnJlZ2NsYXNzLCAnbm90bnVsbF90YmwxXzEnOjpyZWdjbGFzcywgJ25vdG51bGxf dGJsMV8yJzo6cmVnY2xhc3MpOworICAgIGNvbnJlbGlkICAgIHwgICBjb25uYW1lICAgfCBjb252 YWxpZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KyBub3RudWxsX3RibDEgICB8IG5vdG51bGxfY29uIHwgZgorIG5vdG51bGxfdGJsMV8xIHwgbm90 bnVsbF9jb24gfCB0Cisgbm90bnVsbF90YmwxXzIgfCBub3RudWxsX2NvbiB8IHQKKygzIHJvd3Mp CisKK0RST1AgVEFCTEUgbm90bnVsbF90YmwxLCBub3RudWxsX3RibDFfMSwgbm90bnVsbF90Ymwx XzI7CiAtLSBWZXJpZnkgdGhhdCBjb25zdHJhaW50IG5hbWVzIGFuZCBOTyBJTkhFUklUIGFyZSBw cm9wZXJseSBjb25zaWRlcmVkIHdoZW4KIC0tIG11bHRpcGxlIGNvbnN0cmFpbnQgYXJlIHNwZWNp ZmllZCwgZWl0aGVyIGV4cGxpY2l0bHkgb3IgdmlhIFNFUklBTC9QSy9ldGMsCiAtLSBhbmQgdGhh dCBjb25mbGljdGluZyBjYXNlcyBhcmUgcmVqZWN0ZWQuICBNaW5kIHRoYXQgdGFibGUgY29uc3Ry YWludHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbAppbmRleCAyMWNlNDE3N2RlNC4u N2FmZjE3ZTY3NjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRz LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKQEAgLTY0MCw2 ICs2NDAsOTEgQEAgQUxURVIgVEFCTEUgbm90bnVsbF90YmwxIEFERCBDT05TVFJBSU5UIGZvb2Jh ciBOT1QgTlVMTCBhOwogXGQrIG5vdG51bGxfdGJsMQogRFJPUCBUQUJMRSBub3RudWxsX3RibDE7 CiAKKy0tIHZlcmlmeSBOT1QgTlVMTCBWQUxJRC9OT1QgVkFMSUQKK0NSRUFURSBUQUJMRSBub3Ru dWxsX3RibDEgKGEgSU5URUdFUiwgYiBJTlRFR0VSKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJs MSBWQUxVRVMgKE5VTEwsIDEpOworSU5TRVJUIElOVE8gbm90bnVsbF90YmwxIFZBTFVFUyAoTlVM TCwgMik7CitJTlNFUlQgSU5UTyBub3RudWxsX3RibDEgVkFMVUVTICgzMDAsIDMpOworLS0gQmVs b3cgc3RhdGVtZW50IHNob3VsZCB0aHJvdyBhbiBlcnJvcgorQUxURVIgVEFCTEUgbm90bnVsbF90 YmwxIEFERCBDT05TVFJBSU5UIG5uIE5PVCBOVUxMIGE7CitBTFRFUiBUQUJMRSBub3RudWxsX3Ri bDEgQUREIENPTlNUUkFJTlQgbm4gTk9UIE5VTEwgYSBOT1QgVkFMSUQ7CitcZCsgbm90bnVsbF90 YmwxCistLSBUcnkgdG8gaW5zZXJ0IG5ldyByZWNvcmQgd2l0aCBOVUxMLCBzaG91bGQgdGhyb3cg YW4gZXJyb3IKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMSBWQUxVRVMgKE5VTEwsIDQpOworLS0g U0VMRUNUIE5VTEwgdmFsdWVzIGZvciBDT0xVTU4gYSwgc2hvdWxkIHJldHVybiAyIHJlY29yZHMu CitTRUxFQ1QgKiBGUk9NIG5vdG51bGxfdGJsMSBXSEVSRSBhIGlzIE5VTEw7CistLSBVUERBVEUg dGhlIG9uZSBvZiB0aGUgTlVMTCB2YWx1ZXMKK1VQREFURSBub3RudWxsX3RibDEgU0VUIGEgPSAx MDAgV0hFUkUgYiA9IDE7CistLSBERUxFVEUgdGhlIHJlY29yZCAoTlVMTCwgMikKK0RFTEVURSBG Uk9NIG5vdG51bGxfdGJsMSBXSEVSRSBiID0gMjsKK1NFTEVDVCAqIEZST00gbm90bnVsbF90Ymwx OworLS0gVHJ5IHRvIGFkZCBwcmltYXJ5IGtleSBvbiB0YWJsZSBjb2x1bW4gbWFya2VkIGFzIE5P VCBWQUxJRCBOT1QgTlVMTAorLS0gY29uc3RyYWludC4gVGhpcyBzaG91bGQgdGhyb3cgYW4gZXJy b3IuCitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEgYWRkIHByaW1hcnkga2V5IChhKTsKKy0tIElO SEVSSVRTIHRhYmxlIGhhdmluZyBOT1QgVkFMSUQgTk9UIE5VTEwgY29uc3RyYWludHMuCitDUkVB VEUgVEFCTEUgbm90bnVsbF90YmwxX2NoaWxkKGEgSU5URUdFUiwgYiBJTlRFR0VSKSBJTkhFUklU Uyhub3RudWxsX3RibDEpOworLS0gQ2hpbGQgdGFibGUgTk9UIE5VTEwgY29uc3RyYWludHMgc2hv dWxkIGJlIHZhbGlkLgorU0VMRUNUIGNvbm5hbWUsIGNvbnZhbGlkYXRlZCBGUk9NIHBnX2NhdGFs b2cucGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdub3RudWxsX3RibDFfY2hpbGQnOjpy ZWdjbGFzczsKK0RST1AgVEFCTEUgbm90bnVsbF90YmwxX2NoaWxkOworQUxURVIgVEFCTEUgbm90 bnVsbF90YmwxIHZhbGlkYXRlIGNvbnN0cmFpbnQgbm47CitcZCsgbm90bnVsbF90YmwxCitEUk9Q IFRBQkxFIG5vdG51bGxfdGJsMTsKKy0tIFRlc3QgdGhlIGRpZmZlcmVudCBOb3QgbnVsbCBjb25z dHJhaW50IG5hbWUgZm9yIHBhcmVudCBhbmQgY2hpbGQgdGFibGUKK0NSRUFURSBUQUJMRSBub3Ru dWxsX3RibDEgKGEgaW50KTsKK0FMVEVSIFRBQkxFIG5vdG51bGxfdGJsMSBBREQgQ09OU1RSQUlO VCBubl9wYXJlbnQgbm90IG51bGwgYSBub3QgdmFsaWQ7CitDUkVBVEUgVEFCTEUgbm90bnVsbF9j aGxkIChhIGludCk7CitBTFRFUiBUQUJMRSBub3RudWxsX2NobGQgQUREIENPTlNUUkFJTlQgbm5f Y2hpbGQgbm90IG51bGwgYSBub3QgdmFsaWQ7CitBTFRFUiBUQUJMRSBub3RudWxsX2NobGQgSU5I RVJJVCBub3RudWxsX3RibDE7CistLSBUaGlzIHN0YXRlbWVudCBzaG91bGQgdmFsaWRhdGUgbm90 IG51bGwgY29uc3RyYWludCBmb3IgcGFyZW50IGFzIHdlbGwgYXMKKy0tIGNoaWxkLgorQUxURVIg VEFCTEUgbm90bnVsbF90YmwxIFZBTElEQVRFIENPTlNUUkFJTlQgbm5fcGFyZW50OworU0VMRUNU IGNvbm5hbWUsIGNvbnZhbGlkYXRlZCBGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBXSEVS RSBjb25yZWxpZAoraW4gKCdub3RudWxsX3RibDEnOjpyZWdjbGFzcywgJ25vdG51bGxfY2hsZCc6 OnJlZ2NsYXNzKTsKK0RST1AgVEFCTEUgbm90bnVsbF90YmwxIENBU0NBREU7CistLSB0ZXN0IHRv IHRocm93IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGFkZCBhbm90aGVyIE5PVCBOVUxMCistLSBv biB0aGUgdGFibGUgY29sdW1uIHdpdGggSU5WQUxJRCBOT1QgTlVMTCBjb25zdHJhaW50LgorQ1JF QVRFIFRBQkxFIG5vdG51bGxfdGJsMSAoYSBJTlRFR0VSKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxf dGJsMSBWQUxVRVMgKCBOVUxMICk7CitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEgQUREIENPTlNU UkFJTlQgbm4xIE5PVCBOVUxMIGEgbm90IHZhbGlkOworLS0gU2hvdWxkIHRocm93IGFuIGVycm9y CitBTFRFUiBUQUJMRSBub3RudWxsX3RibDEgQUREIENPTlNUUkFJTlQgbm4gTk9UIE5VTEwgYTsK Ky0tIFRoaXMgc2hvdWxkIHRocm93IGFuIGVycm9yIHdoaWxlIHZhbGlkYXRpbmcgdGhlIE5PVCBO VUxMCistLSBjb25zdHJhaW50LgorQUxURVIgVEFCTEUgbm90bnVsbF90YmwxIEFMVEVSIGEgU0VU IE5PVCBOVUxMOworLS0gQWZ0ZXIgZGVsZXRpbmcgbnVsbCB2YWx1ZXMsIFNFVCBOT1QgTlVMTCBz aG91bGQgd29yaworREVMRVRFIEZST00gbm90bnVsbF90YmwxOworQUxURVIgVEFCTEUgbm90bnVs bF90YmwxIEFMVEVSIGEgU0VUIE5PVCBOVUxMOworU0VMRUNUIGNvbm5hbWUsIGNvbnZhbGlkYXRl ZCBGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZAoraW4gKCdub3Ru dWxsX3RibDEnOjpyZWdjbGFzcyk7CitEUk9QIFRBQkxFIG5vdG51bGxfdGJsMTsKKy0tIFRlc3Qg aW52YWxpZCBub3QgbnVsbCBvbiBpbmhlcml0YW5jZSB0YWJsZS4KK0NSRUFURSBUQUJMRSBpbmhf cGFyZW50ICgpOworQ1JFQVRFIFRBQkxFIGluaF9jaGlsZCAoaSBpbnQpIElOSEVSSVRTIChpbmhf cGFyZW50KTsKK0NSRUFURSBUQUJMRSBpbmhfZ3JhbmRjaGlsZCAoKSBJTkhFUklUUyAoaW5oX3Bh cmVudCwgaW5oX2NoaWxkKTsKK0FMVEVSIFRBQkxFIGluaF9wYXJlbnQgQUREIENPTFVNTiBpIGlu dDsKK0FMVEVSIFRBQkxFIGluaF9wYXJlbnQgQUREIENPTlNUUkFJTlQgbm4gTk9UIE5VTEwgaSBO T1QgVkFMSUQ7CitBTFRFUiBUQUJMRSBpbmhfcGFyZW50IEFMVEVSIGkgU0VUIE5PVCBOVUxMOwor U0VMRUNUIGNvbnJlbGlkOjpyZWdjbGFzcywgY29ubmFtZSwgY29udmFsaWRhdGVkLCBjb25pbmhj b3VudCBGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZAoraW4gKCdp bmhfcGFyZW50Jzo6cmVnY2xhc3MsICdpbmhfY2hpbGQnOjpyZWdjbGFzcywgJ2luaF9ncmFuZGNo aWxkJzo6cmVnY2xhc3MpIE9SREVSIEJZIDE7Citkcm9wIHRhYmxlIGluaF9wYXJlbnQsIGluaF9j aGlsZCwgaW5oX2dyYW5kY2hpbGQ7CistLSBDcmVhdGUgdGFibGUgd2l0aCBOT1QgTlVMTCBJTlZB TElEIGNvbnN0cmFpbnQsIGZvciBwZ191cGdyYWRlLgorQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJs MV91cGcgKGEgSU5URUdFUiwgYiBJTlRFR0VSKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMV91 cGcgVkFMVUVTIChOVUxMLCAxKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMV91cGcgVkFMVUVT IChOVUxMLCAyKTsKK0lOU0VSVCBJTlRPIG5vdG51bGxfdGJsMV91cGcgVkFMVUVTICgzMDAsIDMp OworQUxURVIgVEFCTEUgbm90bnVsbF90YmwxX3VwZyBBREQgQ09OU1RSQUlOVCBubiBOT1QgTlVM TCBhIE5PVCBWQUxJRDsKKworLS0gVmVyaWZ5IE5PVCBOVUxMIFZBTElEL05PVCBWQUxJRCB3aXRo IHBhcnRpdGlvbiB0YWJsZS4KK0NSRUFURSBUQUJMRSBub3RudWxsX3RibDEgKGEgSU5URUdFUiwg YiBJTlRFR0VSKSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQUxURVIgVEFCTEUgbm90bnVsbF90 YmwxIEFERCBDT05TVFJBSU5UIG5vdG51bGxfY29uIE5PVCBOVUxMIGEgTk9UIFZBTElEOworQ1JF QVRFIFRBQkxFIG5vdG51bGxfdGJsMV8xIFBBUlRJVElPTiBPRiBub3RudWxsX3RibDEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJsMV8yIFBBUlRJ VElPTiBPRiBub3RudWxsX3RibDEgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKy0tIFBh cmVudCB0YWJsZSBOT1QgTlVMTCBjb25zdHJhaW50cyB3aWxsIGJlIG1hcmtlZCBhcyB2YWxpZGF0 ZWQgZmFsc2UsIHdoZXJlCistLSBmb3IgY2hpbGQgdGFibGUgaXQgd2lsbCBiZSB0cnVlCitTRUxF Q1QgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb25uYW1lLCBjb252YWxpZGF0ZWQgRlJPTSBwZ19jYXRh bG9nLnBnX2NvbnN0cmFpbnQgV0hFUkUKK2NvbnJlbGlkIElOICgnbm90bnVsbF90YmwxJzo6cmVn Y2xhc3MsICdub3RudWxsX3RibDFfMSc6OnJlZ2NsYXNzLCAnbm90bnVsbF90YmwxXzInOjpyZWdj bGFzcyk7CitEUk9QIFRBQkxFIG5vdG51bGxfdGJsMSwgbm90bnVsbF90YmwxXzEsIG5vdG51bGxf dGJsMV8yOworCiAtLSBWZXJpZnkgdGhhdCBjb25zdHJhaW50IG5hbWVzIGFuZCBOTyBJTkhFUklU IGFyZSBwcm9wZXJseSBjb25zaWRlcmVkIHdoZW4KIC0tIG11bHRpcGxlIGNvbnN0cmFpbnQgYXJl IHNwZWNpZmllZCwgZWl0aGVyIGV4cGxpY2l0bHkgb3IgdmlhIFNFUklBTC9QSy9ldGMsCiAtLSBh bmQgdGhhdCBjb25mbGljdGluZyBjYXNlcyBhcmUgcmVqZWN0ZWQuICBNaW5kIHRoYXQgdGFibGUg Y29uc3RyYWludHMKLS0gCjIuNDMuMAoK --000000000000fe4e2306300e5f9a Content-Type: application/octet-stream; name="0001-Convert-pg_attribut.attnotnull-to-char-type.patch" Content-Disposition: attachment; filename="0001-Convert-pg_attribut.attnotnull-to-char-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m84c2klr0 RnJvbSA4ZTkwOWMwNDlkYWJlOWQ2ZWQ1NTllMTRmMDc2NzE0YWQ3YTQzZDhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSdXNoYWJoIExhdGhpYSA8cnVzaGFiaC5sYXRoaWFAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAxMCBGZWIgMjAyNSAxNTozOToxNiArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMS8zXSBDb252ZXJ0IHBnX2F0dHJpYnV0LmF0dG5vdG51bGwgdG8gY2hhciB0eXBl LgoKVGhpcyBjb21taXQgY2hhbmdlIHRoZSBwZ19hdHRyaWJ1dC5hdHRub3RudWxsIHRvIGNoYXIg dHlwZS4gTm93CmF0dG5vdG51bGwgaG9sZHMgdGhyZWUgdmFsdWVzLCB3aGVyZSBhdHRub3RudWxs IGNhbiBiZSBlaXRoZXIKVFJVRSwgRkFMU0UgYW5kIElOVkFMSUQuICBJTlZBTElEIGlzIHdoZW4g bmFtZSBub3QgbnVsbCBjb25zdHJpbnQKaXMgTk9UIFZBTElEQVRFRC4KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyAgICAgICAgfCAxMiArKysrLS0tLQogc3JjL2JhY2tl bmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jICAgICAgICAgIHwgMTMgKysrKy0tLS0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICB8IDE2ICsrKysrLS0tLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4aW5nLmMgICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAzNSArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF9kZWZvcm0uYyAgICAgIHwgMTAgKysrKy0tLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgIHwgIDUgKystLQogc3JjL2luY2x1ZGUv YWNjZXNzL3R1cGRlc2MuaCAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYXR0cmlidXRlLmggICAgICAgICB8ICA1ICsrKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDYz IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBk ZXNjLmMKaW5kZXggZWQyMTk1ZjE0YjIuLjU4Njk4ODEyYzBiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3R1cGRlc2MuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIENyZWF0ZVR1cGxlRGVzY0NvcHkoVHVw bGVEZXNjIHR1cGRlc2MpCiAJewogCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NB dHRyKGRlc2MsIGkpOwogCi0JCWF0dC0+YXR0bm90bnVsbCA9IGZhbHNlOworCQlhdHQtPmF0dG5v dG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKIAkJYXR0LT5hdHRoYXNkZWYgPSBmYWxz ZTsKIAkJYXR0LT5hdHRoYXNtaXNzaW5nID0gZmFsc2U7CiAJCWF0dC0+YXR0aWRlbnRpdHkgPSAn XDAnOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIENyZWF0ZVR1cGxlRGVzY1RydW5jYXRlZENvcHkoVHVw bGVEZXNjIHR1cGRlc2MsIGludCBuYXR0cykKIAl7CiAJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9 IFR1cGxlRGVzY0F0dHIoZGVzYywgaSk7CiAKLQkJYXR0LT5hdHRub3RudWxsID0gZmFsc2U7CisJ CWF0dC0+YXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFOwogCQlhdHQtPmF0dGhh c2RlZiA9IGZhbHNlOwogCQlhdHQtPmF0dGhhc21pc3NpbmcgPSBmYWxzZTsKIAkJYXR0LT5hdHRp ZGVudGl0eSA9ICdcMCc7CkBAIC00MTcsNyArNDE3LDcgQEAgVHVwbGVEZXNjQ29weShUdXBsZURl c2MgZHN0LCBUdXBsZURlc2Mgc3JjKQogCXsKIAkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVw bGVEZXNjQXR0cihkc3QsIGkpOwogCi0JCWF0dC0+YXR0bm90bnVsbCA9IGZhbHNlOworCQlhdHQt PmF0dG5vdG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKIAkJYXR0LT5hdHRoYXNkZWYg PSBmYWxzZTsKIAkJYXR0LT5hdHRoYXNtaXNzaW5nID0gZmFsc2U7CiAJCWF0dC0+YXR0aWRlbnRp dHkgPSAnXDAnOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIFR1cGxlRGVzY0NvcHlFbnRyeShUdXBsZURl c2MgZHN0LCBBdHRyTnVtYmVyIGRzdEF0dG5vLAogCWRzdEF0dC0+YXR0bnVtID0gZHN0QXR0bm87 CiAKIAkvKiBzaW5jZSB3ZSdyZSBub3QgY29weWluZyBjb25zdHJhaW50cyBvciBkZWZhdWx0cywg Y2xlYXIgdGhlc2UgKi8KLQlkc3RBdHQtPmF0dG5vdG51bGwgPSBmYWxzZTsKKwlkc3RBdHQtPmF0 dG5vdG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKIAlkc3RBdHQtPmF0dGhhc2RlZiA9 IGZhbHNlOwogCWRzdEF0dC0+YXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCWRzdEF0dC0+YXR0aWRl bnRpdHkgPSAnXDAnOwpAQCAtODQwLDcgKzg0MCw3IEBAIFR1cGxlRGVzY0luaXRFbnRyeShUdXBs ZURlc2MgZGVzYywKIAlhdHQtPmF0dG51bSA9IGF0dHJpYnV0ZU51bWJlcjsKIAlhdHQtPmF0dG5k aW1zID0gYXR0ZGltOwogCi0JYXR0LT5hdHRub3RudWxsID0gZmFsc2U7CisJYXR0LT5hdHRub3Ru dWxsID0gQVRUUklCVVRFX05PVE5VTExfRkFMU0U7CiAJYXR0LT5hdHRoYXNkZWYgPSBmYWxzZTsK IAlhdHQtPmF0dGhhc21pc3NpbmcgPSBmYWxzZTsKIAlhdHQtPmF0dGlkZW50aXR5ID0gJ1wwJzsK QEAgLTkwMyw3ICs5MDMsNyBAQCBUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KFR1cGxlRGVzYyBk ZXNjLAogCWF0dC0+YXR0bnVtID0gYXR0cmlidXRlTnVtYmVyOwogCWF0dC0+YXR0bmRpbXMgPSBh dHRkaW07CiAKLQlhdHQtPmF0dG5vdG51bGwgPSBmYWxzZTsKKwlhdHQtPmF0dG5vdG51bGwgPSBB VFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKIAlhdHQtPmF0dGhhc2RlZiA9IGZhbHNlOwogCWF0dC0+ YXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCWF0dC0+YXR0aWRlbnRpdHkgPSAnXDAnOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9v dHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IDZkYjg2NDg5MmQwLi4xZTk1ZGMzMmY0NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5k L2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtNTgyLDE0ICs1ODIsMTcgQEAgRGVmaW5lQXR0cihj aGFyICpuYW1lLCBjaGFyICp0eXBlLCBpbnQgYXR0bnVtLCBpbnQgbnVsbG5lc3MpCiAKIAlhdHRy dHlwZXNbYXR0bnVtXS0+YXR0dHlwbW9kID0gLTE7CiAJYXR0cnR5cGVzW2F0dG51bV0tPmF0dGlz bG9jYWwgPSB0cnVlOworCS8qIHNldCBkZWZhdWx0IHRvIGZhbHNlICovCisJYXR0cnR5cGVzW2F0 dG51bV0tPmF0dG5vdG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKKwogCiAJaWYgKG51 bGxuZXNzID09IEJPT1RDT0xfTlVMTF9GT1JDRV9OT1RfTlVMTCkKIAl7Ci0JCWF0dHJ0eXBlc1th dHRudW1dLT5hdHRub3RudWxsID0gdHJ1ZTsKKwkJYXR0cnR5cGVzW2F0dG51bV0tPmF0dG5vdG51 bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFOwogCX0KIAllbHNlIGlmIChudWxsbmVzcyA9PSBC T09UQ09MX05VTExfRk9SQ0VfTlVMTCkKIAl7Ci0JCWF0dHJ0eXBlc1thdHRudW1dLT5hdHRub3Ru dWxsID0gZmFsc2U7CisJCWF0dHJ0eXBlc1thdHRudW1dLT5hdHRub3RudWxsID0gQVRUUklCVVRF X05PVE5VTExfRkFMU0U7CiAJfQogCWVsc2UKIAl7CkBAIC02MDgsMTEgKzYxMSwxMSBAQCBEZWZp bmVBdHRyKGNoYXIgKm5hbWUsIGNoYXIgKnR5cGUsIGludCBhdHRudW0sIGludCBudWxsbmVzcykK IAkJCWZvciAoaSA9IDA7IGkgPCBhdHRudW07IGkrKykKIAkJCXsKIAkJCQlpZiAoYXR0cnR5cGVz W2ldLT5hdHRsZW4gPD0gMCB8fAotCQkJCQkhYXR0cnR5cGVzW2ldLT5hdHRub3RudWxsKQorCQkJ CQlhdHRydHlwZXNbaV0tPmF0dG5vdG51bGwgPT0gQVRUUklCVVRFX05PVE5VTExfRkFMU0UpCiAJ CQkJCWJyZWFrOwogCQkJfQogCQkJaWYgKGkgPT0gYXR0bnVtKQotCQkJCWF0dHJ0eXBlc1thdHRu dW1dLT5hdHRub3RudWxsID0gdHJ1ZTsKKwkJCQlhdHRydHlwZXNbYXR0bnVtXS0+YXR0bm90bnVs bCA9IEFUVFJJQlVURV9OT1ROVUxMX1RSVUU7CiAJCX0KIAl9CiB9CkBAIC02OTYsNyArNjk5LDcg QEAgSW5zZXJ0T25lTnVsbChpbnQgaSkKIHsKIAllbG9nKERFQlVHNCwgImluc2VydGluZyBjb2x1 bW4gJWQgTlVMTCIsIGkpOwogCUFzc2VydChpID49IDAgJiYgaSA8IE1BWEFUVFIpOwotCWlmIChU dXBsZURlc2NBdHRyKGJvb3RfcmVsZGVzYy0+cmRfYXR0LCBpKS0+YXR0bm90bnVsbCkKKwlpZiAo VHVwbGVEZXNjQXR0cihib290X3JlbGRlc2MtPnJkX2F0dCwgaSktPmF0dG5vdG51bGwgPT0gQVRU UklCVVRFX05PVE5VTExfVFJVRSkKIAkJZWxvZyhFUlJPUiwKIAkJCSAiTlVMTCB2YWx1ZSBzcGVj aWZpZWQgZm9yIG5vdC1udWxsIGNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIiwKIAkJ CSBOYW1lU3RyKFR1cGxlRGVzY0F0dHIoYm9vdF9yZWxkZXNjLT5yZF9hdHQsIGkpLT5hdHRuYW1l KSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMKaW5kZXggYmQzNTU0YzBiZmQuLjhjMmQyY2RjZGZlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hl YXAuYwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUgYTEgPSB7CiAJLmF0dGJ5dmFsID0gZmFsc2UsCiAJLmF0dGFsaWduID0gVFlQQUxJR05fU0hP UlQsCiAJLmF0dHN0b3JhZ2UgPSBUWVBTVE9SQUdFX1BMQUlOLAotCS5hdHRub3RudWxsID0gdHJ1 ZSwKKwkuYXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUsCiAJLmF0dGlzbG9jYWwg PSB0cnVlLAogfTsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBjb25zdCBGb3JtRGF0YV9w Z19hdHRyaWJ1dGUgYTIgPSB7CiAJLmF0dGJ5dmFsID0gdHJ1ZSwKIAkuYXR0YWxpZ24gPSBUWVBB TElHTl9JTlQsCiAJLmF0dHN0b3JhZ2UgPSBUWVBTVE9SQUdFX1BMQUlOLAotCS5hdHRub3RudWxs ID0gdHJ1ZSwKKwkuYXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUsCiAJLmF0dGlz bG9jYWwgPSB0cnVlLAogfTsKIApAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBjb25zdCBGb3Jt RGF0YV9wZ19hdHRyaWJ1dGUgYTMgPSB7CiAJLmF0dGJ5dmFsID0gdHJ1ZSwKIAkuYXR0YWxpZ24g PSBUWVBBTElHTl9JTlQsCiAJLmF0dHN0b3JhZ2UgPSBUWVBTVE9SQUdFX1BMQUlOLAotCS5hdHRu b3RudWxsID0gdHJ1ZSwKKwkuYXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUsCiAJ LmF0dGlzbG9jYWwgPSB0cnVlLAogfTsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBjb25z dCBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgYTQgPSB7CiAJLmF0dGJ5dmFsID0gdHJ1ZSwKIAkuYXR0 YWxpZ24gPSBUWVBBTElHTl9JTlQsCiAJLmF0dHN0b3JhZ2UgPSBUWVBTVE9SQUdFX1BMQUlOLAot CS5hdHRub3RudWxsID0gdHJ1ZSwKKwkuYXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX1RS VUUsCiAJLmF0dGlzbG9jYWwgPSB0cnVlLAogfTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHN0YXRp YyBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgYTUgPSB7CiAJLmF0dGJ5dmFsID0gdHJ1ZSwK IAkuYXR0YWxpZ24gPSBUWVBBTElHTl9JTlQsCiAJLmF0dHN0b3JhZ2UgPSBUWVBTVE9SQUdFX1BM QUlOLAotCS5hdHRub3RudWxsID0gdHJ1ZSwKKwkuYXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1RO VUxMX1RSVUUsCiAJLmF0dGlzbG9jYWwgPSB0cnVlLAogfTsKIApAQCAtMjIxLDcgKzIyMSw3IEBA IHN0YXRpYyBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgYTYgPSB7CiAJLmF0dGJ5dmFsID0g dHJ1ZSwKIAkuYXR0YWxpZ24gPSBUWVBBTElHTl9JTlQsCiAJLmF0dHN0b3JhZ2UgPSBUWVBTVE9S QUdFX1BMQUlOLAotCS5hdHRub3RudWxsID0gdHJ1ZSwKKwkuYXR0bm90bnVsbCA9IEFUVFJJQlVU RV9OT1ROVUxMX1RSVUUsCiAJLmF0dGlzbG9jYWwgPSB0cnVlLAogfTsKIApAQCAtNzUyLDcgKzc1 Miw3IEBAIEluc2VydFBnQXR0cmlidXRlVHVwbGVzKFJlbGF0aW9uIHBnX2F0dHJpYnV0ZV9yZWws CiAJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRhbGln biAtIDFdID0gQ2hhckdldERhdHVtKGF0dHJzLT5hdHRhbGlnbik7CiAJCXNsb3Rbc2xvdENvdW50 XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRzdG9yYWdlIC0gMV0gPSBDaGFyR2V0 RGF0dW0oYXR0cnMtPmF0dHN0b3JhZ2UpOwogCQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNb QW51bV9wZ19hdHRyaWJ1dGVfYXR0Y29tcHJlc3Npb24gLSAxXSA9IENoYXJHZXREYXR1bShhdHRy cy0+YXR0Y29tcHJlc3Npb24pOwotCQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51bV9w Z19hdHRyaWJ1dGVfYXR0bm90bnVsbCAtIDFdID0gQm9vbEdldERhdHVtKGF0dHJzLT5hdHRub3Ru dWxsKTsKKwkJc2xvdFtzbG90Q291bnRdLT50dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0 dG5vdG51bGwgLSAxXSA9IENoYXJHZXREYXR1bShhdHRycy0+YXR0bm90bnVsbCk7CiAJCXNsb3Rb c2xvdENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRoYXNkZWYgLSAxXSA9 IEJvb2xHZXREYXR1bShhdHRycy0+YXR0aGFzZGVmKTsKIAkJc2xvdFtzbG90Q291bnRdLT50dHNf dmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGhhc21pc3NpbmcgLSAxXSA9IEJvb2xHZXREYXR1 bShhdHRycy0+YXR0aGFzbWlzc2luZyk7CiAJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3ZhbHVlc1tB bnVtX3BnX2F0dHJpYnV0ZV9hdHRpZGVudGl0eSAtIDFdID0gQ2hhckdldERhdHVtKGF0dHJzLT5h dHRpZGVudGl0eSk7CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCBSZW1vdmVBdHRyaWJ1dGVCeUlkKE9p ZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pCiAJYXR0U3RydWN0LT5hdHR0eXBpZCA9IEludmFs aWRPaWQ7CiAKIAkvKiBSZW1vdmUgYW55IG5vdC1udWxsIGNvbnN0cmFpbnQgdGhlIGNvbHVtbiBt YXkgaGF2ZSAqLwotCWF0dFN0cnVjdC0+YXR0bm90bnVsbCA9IGZhbHNlOworCWF0dFN0cnVjdC0+ YXR0bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFOwogCiAJLyogVW5zZXQgdGhpcyBz byBubyBvbmUgdHJpZXMgdG8gbG9vayB1cCB0aGUgZ2VuZXJhdGlvbiBleHByZXNzaW9uICovCiAJ YXR0U3RydWN0LT5hdHRnZW5lcmF0ZWQgPSAnXDAnOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDczOWE5 MmJkY2MxLi42YjBjMTZiZjU5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMjYyLDcgKzI2Miw3IEBA IGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJIGF0dG51bSwg UmVsYXRpb25HZXRSZWxpZChoZWFwUmVsKSk7CiAJCWF0dGZvcm0gPSAoRm9ybV9wZ19hdHRyaWJ1 dGUpIEdFVFNUUlVDVChhdHR0dXBsZSk7CiAKLQkJaWYgKCFhdHRmb3JtLT5hdHRub3RudWxsKQor CQlpZiAoYXR0Zm9ybS0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRSkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UQUJMRV9ERUZJ TklUSU9OKSwKIAkJCQkJIGVycm1zZygicHJpbWFyeSBrZXkgY29sdW1uIFwiJXNcIiBpcyBub3Qg bWFya2VkIE5PVCBOVUxMIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhp bmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYwppbmRleCAyNWM0YjZiZGM4Ny4u YTIyMTFkNzU1NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKQEAgLTIwNyw3ICsyMDcsOCBAQCBD YXRhbG9nVHVwbGVDaGVja0NvbnN0cmFpbnRzKFJlbGF0aW9uIGhlYXBSZWwsIEhlYXBUdXBsZSB0 dXApCiAJCXsKIAkJCUZvcm1fcGdfYXR0cmlidXRlIHRoaXNhdHQgPSBUdXBsZURlc2NBdHRyKHR1 cGRlc2MsIGF0dG51bSk7CiAKLQkJCUFzc2VydCghKHRoaXNhdHQtPmF0dG5vdG51bGwgJiYgYXR0 X2lzbnVsbChhdHRudW0sIGJwKSkpOworCQkJQXNzZXJ0KCEodGhpc2F0dC0+YXR0bm90bnVsbCA9 PSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFICYmCisJCQkJCSBhdHRfaXNudWxsKGF0dG51bSwgYnAp KSk7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0 aW9uX3NjaGVtYS5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5z cWwKaW5kZXggYTdiZmZjYTkzZDEuLjRmNTliYzQ2ZTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0yOTIsNyArMjkyLDcgQEAgQ1JFQVRFIFZJRVcg YXR0cmlidXRlcyBBUwogICAgICAgICAgICBDQVNUKGEuYXR0bmFtZSBBUyBzcWxfaWRlbnRpZmll cikgQVMgYXR0cmlidXRlX25hbWUsCiAgICAgICAgICAgIENBU1QoYS5hdHRudW0gQVMgY2FyZGlu YWxfbnVtYmVyKSBBUyBvcmRpbmFsX3Bvc2l0aW9uLAogICAgICAgICAgICBDQVNUKHBnX2dldF9l eHByKGFkLmFkYmluLCBhZC5hZHJlbGlkKSBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgYXR0cmlidXRl X2RlZmF1bHQsCi0gICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0bm90bnVsbCBPUiAodC50 eXB0eXBlID0gJ2QnIEFORCB0LnR5cG5vdG51bGwpIFRIRU4gJ05PJyBFTFNFICdZRVMnIEVORAor ICAgICAgICAgICBDQVNUKENBU0UgV0hFTiBhLmF0dG5vdG51bGwgPSAndCcgT1IgKHQudHlwdHlw ZSA9ICdkJyBBTkQgdC50eXBub3RudWxsKSBUSEVOICdOTycgRUxTRSAnWUVTJyBFTkQKICAgICAg ICAgICAgICBBUyB5ZXNfb3Jfbm8pCiAgICAgICAgICAgICAgQVMgaXNfbnVsbGFibGUsIC0tIFRo aXMgY29sdW1uIHdhcyBhcHBhcmVudGx5IHJlbW92ZWQgYmV0d2VlbiBTUUw6MjAwMyBhbmQgU1FM OjIwMDguCiAKQEAgLTY3MSw3ICs2NzEsNyBAQCBDUkVBVEUgVklFVyBjb2x1bW5zIEFTCiAgICAg ICAgICAgIENBU1QoYS5hdHRuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBjb2x1bW5fbmFtZSwK ICAgICAgICAgICAgQ0FTVChhLmF0dG51bSBBUyBjYXJkaW5hbF9udW1iZXIpIEFTIG9yZGluYWxf cG9zaXRpb24sCiAgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0Z2VuZXJhdGVkID0gJycg VEhFTiBwZ19nZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZCkgRU5EIEFTIGNoYXJhY3Rlcl9k YXRhKSBBUyBjb2x1bW5fZGVmYXVsdCwKLSAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gYS5hdHRu b3RudWxsIE9SICh0LnR5cHR5cGUgPSAnZCcgQU5EIHQudHlwbm90bnVsbCkgVEhFTiAnTk8nIEVM U0UgJ1lFUycgRU5ECisgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0bm90bnVsbCA9ICd0 JyAgT1IgKHQudHlwdHlwZSA9ICdkJyBBTkQgdC50eXBub3RudWxsKSBUSEVOICdOTycgRUxTRSAn WUVTJyBFTkQKICAgICAgICAgICAgICBBUyB5ZXNfb3Jfbm8pCiAgICAgICAgICAgICAgQVMgaXNf bnVsbGFibGUsCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMThmZjg5NTY1NzcuLjNj ODFlNDhjYWMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTM5OSw3ICsxMzk5LDEw IEBAIEJ1aWxkRGVzY0ZvclJlbGF0aW9uKGNvbnN0IExpc3QgKmNvbHVtbnMpCiAJCVR1cGxlRGVz Y0luaXRFbnRyeUNvbGxhdGlvbihkZXNjLCBhdHRudW0sIGF0dGNvbGxhdGlvbik7CiAKIAkJLyog RmlsbCBpbiBhZGRpdGlvbmFsIHN0dWZmIG5vdCBoYW5kbGVkIGJ5IFR1cGxlRGVzY0luaXRFbnRy eSAqLwotCQlhdHQtPmF0dG5vdG51bGwgPSBlbnRyeS0+aXNfbm90X251bGw7CisJCWlmIChlbnRy eS0+aXNfbm90X251bGwpCisJCQlhdHQtPmF0dG5vdG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9U UlVFOworCQllbHNlCisJCQlhdHQtPmF0dG5vdG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxT RTsKIAkJYXR0LT5hdHRpc2xvY2FsID0gZW50cnktPmlzX2xvY2FsOwogCQlhdHQtPmF0dGluaGNv dW50ID0gZW50cnktPmluaGNvdW50OwogCQlhdHQtPmF0dGlkZW50aXR5ID0gZW50cnktPmlkZW50 aXR5OwpAQCAtNjE4OCw3ICs2MTkxLDggQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBPaWQgT0lETmV3SGVhcCkKIAkJewogCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9 IFR1cGxlRGVzY0F0dHIobmV3VHVwRGVzYywgaSk7CiAKLQkJCWlmIChhdHRyLT5hdHRub3RudWxs ICYmICFhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQlpZiAoYXR0ci0+YXR0bm90bnVsbCA9PSBBVFRS SUJVVEVfTk9UTlVMTF9UUlVFICYmCisJCQkJIWF0dHItPmF0dGlzZHJvcHBlZCkKIAkJCQlub3Ru dWxsX2F0dHJzID0gbGFwcGVuZF9pbnQobm90bnVsbF9hdHRycywgaSk7CiAJCX0KIAkJaWYgKG5v dG51bGxfYXR0cnMpCkBAIC03NjY5LDcgKzc2NzMsNyBAQCBBVEV4ZWNEcm9wTm90TnVsbChSZWxh dGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIGJvb2wgcmVjdXJzZSwKIAkJCQkJCVJlbGF0 aW9uR2V0UmVsaWQocmVsKSwgYXR0bnVtKTsKIAogCS8qIElmIHRoZSBjb2x1bW4gaXMgYWxyZWFk eSBudWxsYWJsZSB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCFhdHRUdXAtPmF0dG5v dG51bGwpCisJaWYgKGF0dFR1cC0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxT RSkKIAl7CiAJCXRhYmxlX2Nsb3NlKGF0dHJfcmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAkJcmV0 dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOwpAQCAtNzY5OSw3ICs3NzAzLDcgQEAgQVRFeGVjRHJv cE5vdE51bGwoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBib29sIHJlY3Vyc2Us CiAJCUF0dHJOdW1iZXIJcGFyZW50X2F0dG51bTsKIAogCQlwYXJlbnRfYXR0bnVtID0gZ2V0X2F0 dG51bShwYXJlbnRJZCwgY29sTmFtZSk7Ci0JCWlmIChUdXBsZURlc2NBdHRyKHR1cERlc2MsIHBh cmVudF9hdHRudW0gLSAxKS0+YXR0bm90bnVsbCkKKwkJaWYgKFR1cGxlRGVzY0F0dHIodHVwRGVz YywgcGFyZW50X2F0dG51bSAtIDEpLT5hdHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX1RS VUUpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEFC TEVfREVGSU5JVElPTiksCiAJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaXMgbWFya2VkIE5P VCBOVUxMIGluIHBhcmVudCB0YWJsZSIsCkBAIC03NzUzLDcgKzc3NTcsNyBAQCBzZXRfYXR0bm90 bnVsbChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAogCWlm IChhdHRyLT5hdHRpc2Ryb3BwZWQpCiAJCXJldHVybjsKIAotCWlmICghYXR0ci0+YXR0bm90bnVs bCkKKwlpZiAoYXR0ci0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRSkKIAl7 CiAJCVJlbGF0aW9uCWF0dHJfcmVsOwogCQlIZWFwVHVwbGUJdHVwbGU7CkBAIC03NzY2LDggKzc3 NzAsOCBAQCBzZXRfYXR0bm90bnVsbChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEF0dHJO dW1iZXIgYXR0bnVtLAogCQkJCSBhdHRudW0sIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CiAKIAkJ YXR0ciA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHR1cGxlKTsKLQkJQXNzZXJ0KCFh dHRyLT5hdHRub3RudWxsKTsKLQkJYXR0ci0+YXR0bm90bnVsbCA9IHRydWU7CisJCUFzc2VydChh dHRyLT5hdHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFKTsKKwkJYXR0ci0+YXR0 bm90bnVsbCA9IEFUVFJJQlVURV9OT1ROVUxMX1RSVUU7CiAJCUNhdGFsb2dUdXBsZVVwZGF0ZShh dHRyX3JlbCwgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKIAogCQkvKgpAQCAtODE3Miw3ICs4MTc2 LDcgQEAgQVRFeGVjQWRkSWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1l LAogCSAqIHRvIGFuIGV4aXN0aW5nIGNvbHVtbiB0aGF0IGlzIG5vdCBOT1QgTlVMTCB3b3VsZCBj cmVhdGUgYSBzdGF0ZSB0aGF0CiAJICogY2Fubm90IGJlIHJlcHJvZHVjZWQgd2l0aG91dCBjb250 b3J0aW9ucy4KIAkgKi8KLQlpZiAoIWF0dFR1cC0+YXR0bm90bnVsbCkKKwlpZiAoYXR0VHVwLT5h dHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAog CQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIG11c3QgYmUgZGVj bGFyZWQgTk9UIE5VTEwgYmVmb3JlIGlkZW50aXR5IGNhbiBiZSBhZGRlZCIsCkBAIC05MzczLDcg KzkzNzcsNyBAQCBBVFByZXBBZGRQcmltYXJ5S2V5KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgYXR0cmlidXRlICVzIG9mIHJlbGF0aW9uICV1IiwKIAkJCQkJCSBhdHRuYW1lLCBj aGlsZHJlbGlkKTsKIAkJCQlhdHRyRm9ybSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNU KHR1cCk7Ci0JCQkJaWYgKCFhdHRyRm9ybS0+YXR0bm90bnVsbCkKKwkJCQlpZiAoYXR0ckZvcm0t PmF0dG5vdG51bGwgPT0gQVRUUklCVVRFX05PVE5VTExfRkFMU0UpCiAJCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkJZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHRhYmxlIFwiJXNcIiBpcyBub3Qg bWFya2VkIE5PVCBOVUxMIiwKIAkJCQkJCQkJICAgYXR0bmFtZSwgZ2V0X3JlbF9uYW1lKGNoaWxk cmVsaWQpKSk7CkBAIC0xMzQ3Niw5ICsxMzQ4MCw5IEBAIGRyb3Bjb25zdHJhaW50X2ludGVybmFs KFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIGNvbnN0cmFpbnRUdXAsIERyb3BCZWhhdmlvciBiZWhh CiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CiAKIAkJLyogQWxsIGdv b2QgLS0gcmVzZXQgYXR0bm90bnVsbCBpZiBuZWVkZWQgKi8KLQkJaWYgKGF0dEZvcm0tPmF0dG5v dG51bGwpCisJCWlmIChhdHRGb3JtLT5hdHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX1RS VUUpCiAJCXsKLQkJCWF0dEZvcm0tPmF0dG5vdG51bGwgPSBmYWxzZTsKKwkJCWF0dEZvcm0tPmF0 dG5vdG51bGwgPSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRTsKIAkJCUNhdGFsb2dUdXBsZVVwZGF0 ZShhdHRyZWwsICZhdHR0dXAtPnRfc2VsZiwgYXR0dHVwKTsKIAkJfQogCkBAIC0xNjgwNSw3ICsx NjgwOSw4IEBAIE1lcmdlQXR0cmlidXRlc0ludG9FeGlzdGluZyhSZWxhdGlvbiBjaGlsZF9yZWws IFJlbGF0aW9uIHBhcmVudF9yZWwsIGJvb2wgaXNwYXJ0CiAJCQkgKgogCQkJICogT3RoZXIgY29u c3RyYWludHMgYXJlIGNoZWNrZWQgZWxzZXdoZXJlLgogCQkJICovCi0JCQlpZiAocGFyZW50X2F0 dC0+YXR0bm90bnVsbCAmJiAhY2hpbGRfYXR0LT5hdHRub3RudWxsKQorCQkJaWYgKHBhcmVudF9h dHQtPmF0dG5vdG51bGwgPT0gQVRUUklCVVRFX05PVE5VTExfVFJVRSAmJgorCQkJCWNoaWxkX2F0 dC0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9GQUxTRSkKIAkJCXsKIAkJCQlIZWFw VHVwbGUJY29udHVwOwogCkBAIC0xNzg0OCw3ICsxNzg1Myw3IEBAIEFURXhlY1JlcGxpY2FJZGVu dGl0eShSZWxhdGlvbiByZWwsIFJlcGxpY2FJZGVudGl0eVN0bXQgKnN0bXQsIExPQ0tNT0RFIGxv Y2ttb2RlCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXhSZWwpLCBhdHRubykp KTsKIAogCQlhdHRyID0gVHVwbGVEZXNjQXR0cihyZWwtPnJkX2F0dCwgYXR0bm8gLSAxKTsKLQkJ aWYgKCFhdHRyLT5hdHRub3RudWxsKQorCQlpZiAoYXR0ci0+YXR0bm90bnVsbCA9PSBBVFRSSUJV VEVfTk9UTlVMTF9GQUxTRSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCQkgZXJybXNnKCJpbmRleCBcIiVzXCIgY2Fubm90 IGJlIHVzZWQgYXMgcmVwbGljYSBpZGVudGl0eSBiZWNhdXNlIGNvbHVtbiBcIiVzXCIgaXMgbnVs bGFibGUiLApAQCAtMTkzMjYsNyArMTkzMzEsNyBAQCBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJl bENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIAkJewogCQkJRm9ybV9wZ19hdHRyaWJ1dGUg YXR0ID0gVHVwbGVEZXNjQXR0cihzY2FucmVsLT5yZF9hdHQsIGkgLSAxKTsKIAotCQkJaWYgKGF0 dC0+YXR0bm90bnVsbCAmJiAhYXR0LT5hdHRpc2Ryb3BwZWQpCisJCQlpZiAoYXR0LT5hdHRub3Ru dWxsID09IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUgJiYgIWF0dC0+YXR0aXNkcm9wcGVkKQogCQkJ ewogCQkJCU51bGxUZXN0ICAgKm50ZXN0ID0gbWFrZU5vZGUoTnVsbFRlc3QpOwogCkBAIC0yMTE1 OCw3ICsyMTE2Myw3IEBAIHZlcmlmeVBhcnRpdGlvbkluZGV4Tm90TnVsbChJbmRleEluZm8gKmlp bmZvLCBSZWxhdGlvbiBwYXJ0aXRpb24pCiAJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxl RGVzY0F0dHIoUmVsYXRpb25HZXREZXNjcihwYXJ0aXRpb24pLAogCQkJCQkJCQkJCQkgIGlpbmZv LT5paV9JbmRleEF0dHJOdW1iZXJzW2ldIC0gMSk7CiAKLQkJaWYgKCFhdHQtPmF0dG5vdG51bGwp CisJCWlmIChhdHQtPmF0dG5vdG51bGwgPT0gQVRUUklCVVRFX05PVE5VTExfRkFMU0UpCiAJCQll cmVwb3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UQUJMRV9ERUZJTklU SU9OKSwKIAkJCQkJZXJybXNnKCJpbnZhbGlkIHByaW1hcnkga2V5IGRlZmluaXRpb24iKSwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDA0OTNiN2Q1MzY1Li5kNTgyMjMxYWI2MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCkBAIC0yMDcwLDcgKzIwNzAsOCBAQCBFeGVjQ29uc3RyYWludHMo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJewogCQkJRm9ybV9wZ19hdHRyaWJ1dGUg YXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRyQ2hrIC0gMSk7CiAKLQkJCWlmIChhdHQt PmF0dG5vdG51bGwgJiYgc2xvdF9hdHRpc251bGwoc2xvdCwgYXR0ckNoaykpCisJCQlpZiAoYXR0 LT5hdHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUgJiYKKwkJCQlzbG90X2F0dGlz bnVsbChzbG90LCBhdHRyQ2hrKSkKIAkJCXsKIAkJCQljaGFyCSAgICp2YWxfZGVzYzsKIAkJCQlS ZWxhdGlvbglvcmlnX3JlbCA9IHJlbDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZt L2xsdm1qaXRfZGVmb3JtLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2RlZm9ybS5j CmluZGV4IDVkMTY5YzdhNDBiLi5lNjQ0NGJjMmM5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdF9kZWZvcm0uYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X2RlZm9ybS5jCkBAIC0xMjMsNyArMTIzLDcgQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZN Sml0Q29udGV4dCAqY29udGV4dCwgVHVwbGVEZXNjIGRlc2MsCiAJCSAqIGNvbWJpbmF0aW9uIG9m IGF0dGlzZHJvcHBlZCAmJiBhdHRub3RudWxsIGNvbWJpbmF0aW9uIHNob3VsZG4ndAogCQkgKiBl eGlzdC4KIAkJICovCi0JCWlmIChhdHQtPmF0dG5vdG51bGwgJiYKKwkJaWYgKGF0dC0+YXR0bm90 bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFICYmCiAJCQkhYXR0LT5hdHRoYXNtaXNzaW5n ICYmCiAJCQkhYXR0LT5hdHRpc2Ryb3BwZWQpCiAJCQlndWFyYW50ZWVkX2NvbHVtbl9udW1iZXIg PSBhdHRudW07CkBAIC00MzgsNyArNDM4LDcgQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZNSml0 Q29udGV4dCAqY29udGV4dCwgVHVwbGVEZXNjIGRlc2MsCiAJCSAqIGludG8gYWNjb3VudCwgYmVj YXVzZSBpZiB0aGV5J3JlIHByZXNlbnQgdGhlIGhlYXB0dXBsZSdzIG5hdHRzCiAJCSAqIHdvdWxk IGhhdmUgaW5kaWNhdGVkIHRoYXQgYSBzbG90X2dldG1pc3NpbmdhdHRycygpIGlzIG5lZWRlZC4K IAkJICovCi0JCWlmICghYXR0LT5hdHRub3RudWxsKQorCQlpZiAoYXR0LT5hdHRub3RudWxsID09 IEFUVFJJQlVURV9OT1ROVUxMX0ZBTFNFKQogCQl7CiAJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2lm bm90bnVsbDsKIAkJCUxMVk1CYXNpY0Jsb2NrUmVmIGJfaWZudWxsOwpAQCAtNjA0LDcgKzYwNCw4 IEBAIHNsb3RfY29tcGlsZV9kZWZvcm0oTExWTUppdENvbnRleHQgKmNvbnRleHQsIFR1cGxlRGVz YyBkZXNjLAogCQkJa25vd25fYWxpZ25tZW50ID0gLTE7CiAJCQlhdHRndWFyYW50ZWVkYWxpZ24g PSBmYWxzZTsKIAkJfQotCQllbHNlIGlmIChhdHQtPmF0dG5vdG51bGwgJiYgYXR0Z3VhcmFudGVl ZGFsaWduICYmIGtub3duX2FsaWdubWVudCA+PSAwKQorCQllbHNlIGlmIChhdHQtPmF0dG5vdG51 bGwgPT0gQVRUUklCVVRFX05PVE5VTExfVFJVRSAmJgorCQkJCSBhdHRndWFyYW50ZWVkYWxpZ24g JiYga25vd25fYWxpZ25tZW50ID49IDApCiAJCXsKIAkJCS8qCiAJCQkgKiBJZiB0aGUgb2Zmc2V0 IHRvIHRoZSBjb2x1bW4gd2FzIHByZXZpb3VzbHkga25vd24sIGEgTk9UIE5VTEwgJgpAQCAtNjE0 LDcgKzYxNSw4IEBAIHNsb3RfY29tcGlsZV9kZWZvcm0oTExWTUppdENvbnRleHQgKmNvbnRleHQs IFR1cGxlRGVzYyBkZXNjLAogCQkJQXNzZXJ0KGF0dC0+YXR0bGVuID4gMCk7CiAJCQlrbm93bl9h bGlnbm1lbnQgKz0gYXR0LT5hdHRsZW47CiAJCX0KLQkJZWxzZSBpZiAoYXR0LT5hdHRub3RudWxs ICYmIChhdHQtPmF0dGxlbiAlIGFsaWdudG8pID09IDApCisJCWVsc2UgaWYgKGF0dC0+YXR0bm90 bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFICYmCisJCQkJIChhdHQtPmF0dGxlbiAlIGFs aWdudG8pID09IDApCiAJCXsKIAkJCS8qCiAJCQkgKiBBZnRlciBhIE5PVCBOVUxMIGZpeGVkLXdp ZHRoIGNvbHVtbiB3aXRoIGEgbGVuZ3RoIHRoYXQgaXMgYQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cGxhbmNhdC5jCmluZGV4IDcxYWJiMDFmNjU1Li5lMzIyMDk4Y2ZiMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYW5jYXQuYwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGdldF9yZWxhdGlvbl9pbmZv KFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQs CiAJCXsKIAkJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dHIgPSBUdXBsZURlc2NDb21wYWN0QXR0cihy ZWxhdGlvbi0+cmRfYXR0LCBpKTsKIAotCQkJaWYgKGF0dHItPmF0dG5vdG51bGwpCisJCQlpZiAo YXR0ci0+YXR0bm90bnVsbCA9PSBBVFRSSUJVVEVfTk9UTlVMTF9UUlVFKQogCQkJewogCQkJCXJl bC0+bm90bnVsbGF0dG51bXMgPSBibXNfYWRkX21lbWJlcihyZWwtPm5vdG51bGxhdHRudW1zLAog CQkJCQkJCQkJCQkJCSBpICsgMSk7CkBAIC0xMzU1LDcgKzEzNTUsOCBAQCBnZXRfcmVsYXRpb25f Y29uc3RyYWludHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQl7CiAJCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihyZWxhdGlvbi0+cmRfYXR0LCBpIC0gMSk7CiAKLQkJCQlp ZiAoYXR0LT5hdHRub3RudWxsICYmICFhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCQlpZiAoYXR0LT5h dHRub3RudWxsID09IEFUVFJJQlVURV9OT1ROVUxMX1RSVUUgJiYKKwkJCQkJIWF0dC0+YXR0aXNk cm9wcGVkKQogCQkJCXsKIAkJCQkJTnVsbFRlc3QgICAqbnRlc3QgPSBtYWtlTm9kZShOdWxsVGVz dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdHVwZGVzYy5oCmluZGV4IDM5NmVlYjdhMGJiLi4xZWJhNjdjYThlOSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHVwZGVzYy5oCkBAIC03Niw3ICs3Niw3IEBAIHR5cGVkZWYgc3RydWN0IENvbXBhY3RB dHRyaWJ1dGUKIAlib29sCQlhdHRoYXNtaXNzaW5nOwkvKiBhcyBGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUuYXR0aGFzbWlzc2luZyAqLwogCWJvb2wJCWF0dGlzZHJvcHBlZDsJLyogYXMgRm9ybURhdGFf cGdfYXR0cmlidXRlLmF0dGlzZHJvcHBlZCAqLwogCWJvb2wJCWF0dGdlbmVyYXRlZDsJLyogRm9y bURhdGFfcGdfYXR0cmlidXRlLmF0dGdlbmVyYXRlZCAhPSAnXDAnICovCi0JYm9vbAkJYXR0bm90 bnVsbDsJCS8qIGFzIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZS5hdHRub3RudWxsICovCisJY2hhcgkJ YXR0bm90bnVsbDsJCS8qIGFzIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZS5hdHRub3RudWxsICovCiAJ dWludDgJCWF0dGFsaWduYnk7CQkvKiBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgaW4gYnl0ZXMgKi8K IH0gQ29tcGFjdEF0dHJpYnV0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hdHRyaWJ1dGUuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKaW5kZXgg ZGVhYTUxNWZlNTMuLmI1MWEyNjcwOTU4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2F0dHJpYnV0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgK QEAgLTExOCw3ICsxMTgsNyBAQCBDQVRBTE9HKHBnX2F0dHJpYnV0ZSwxMjQ5LEF0dHJpYnV0ZVJl bGF0aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJX1JPV1RZUEVfT0lEKDc1LAogCWNoYXIJCWF0dGNv bXByZXNzaW9uIEJLSV9ERUZBVUxUKCdcMCcpOwogCiAJLyogVGhpcyBmbGFnIHJlcHJlc2VudHMg dGhlICJOT1QgTlVMTCIgY29uc3RyYWludCAqLwotCWJvb2wJCWF0dG5vdG51bGw7CisJY2hhcgkJ YXR0bm90bnVsbDsKIAogCS8qIEhhcyBERUZBVUxUIHZhbHVlIG9yIG5vdCAqLwogCWJvb2wJCWF0 dGhhc2RlZiBCS0lfREVGQVVMVChmKTsKQEAgLTIyNyw2ICsyMjcsOSBAQCBNQUtFX1NZU0NBQ0hF KEFUVE5VTSwgcGdfYXR0cmlidXRlX3JlbGlkX2F0dG51bV9pbmRleCwgMTI4KTsKICNkZWZpbmUJ CSAgQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQJJ3MnCiAjZGVmaW5lCQkgIEFUVFJJQlVURV9H RU5FUkFURURfVklSVFVBTAkndicKIAorI2RlZmluZQkJICBBVFRSSUJVVEVfTk9UTlVMTF9UUlVF CQkndCcKKyNkZWZpbmUJCSAgQVRUUklCVVRFX05PVE5VTExfRkFMU0UJCSdmJworCiAjZW5kaWYJ CQkJCQkJLyogRVhQT1NFX1RPX0NMSUVOVF9DT0RFICovCiAKICNlbmRpZgkJCQkJCQkvKiBQR19B VFRSSUJVVEVfSCAqLwotLSAKMi40My4wCgo= --000000000000fe4e2306300e5f9a Content-Type: application/octet-stream; name="0003-Documentation-changes.patch" Content-Disposition: attachment; filename="0003-Documentation-changes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m84c2klu2 RnJvbSBiMDkzYThhMTA5ZmE3YWVjOGNhZjc5MmQ5ZTM1MjFmY2ViYWRhODZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSdXNoYWJoIExhdGhpYSA8cnVzaGFiaC5sYXRoaWFAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAyNyBGZWIgMjAyNSAxNToyMjo1NiArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMy8zXSBEb2N1bWVudGF0aW9uIGNoYW5nZXMKCi0tLQogZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwgICAgICAgIHwgNSArKystLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sIHwgNCArKy0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgfCAyICst CiAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCmluZGV4IGZiMDUwNjM1NTUxLi5kNjA2NmQ3ZGJhMSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAg LTEyNTcsMTAgKzEyNTcsMTEgQEAKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAg ICA8c3RydWN0ZmllbGQ+YXR0bm90bnVsbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+ CisgICAgICAgPHN0cnVjdGZpZWxkPmF0dG5vdG51bGw8L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFy PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhpcyBjb2x1bW4g aGFzIGEgbm90LW51bGwgY29uc3RyYWludC4KKyAgICAgICBUaGUgdmFsdWUgJ3QnIGluZGljYXRl cyB0aGF0IGEgbm90LW51bGwgY29uc3RyYWludCBleGlzdHMgZm9yIHRoZQorICAgICAgIGNvbHVt biwgJ2knIGZvciBhbiBpbnZhbGlkIGNvbnN0cmFpbnQgYW5kICdmJyBmb3Igbm9uZS4KICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21s CmluZGV4IGRjZWI3YTc1OTNjLi4yODhjZDMzMzlmOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbApAQCAtOTksNyArOTksNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogPHBocmFzZT5h bmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQoteyBOT1QgTlVMTCBb IE5PIElOSEVSSVQgXSB8Cit7IE5PVCBOVUxMIFsgTk9UIFZBTElEIF0gWyBOTyBJTkhFUklUIF0g fAogICBOVUxMIHwKICAgQ0hFQ0sgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgWyBOTyBJTkhFUklUIF0gfAogICBERUZBVUxUIDxyZXBs YWNlYWJsZT5kZWZhdWx0X2V4cHI8L3JlcGxhY2VhYmxlPiB8CkBAIC00NTgsNyArNDU4LDcgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGZvcm0gYWRk cyBhIG5ldyBjb25zdHJhaW50IHRvIGEgdGFibGUgdXNpbmcgdGhlIHNhbWUgY29uc3RyYWludAog ICAgICAgc3ludGF4IGFzIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSI+PGNvbW1hbmQ+ Q1JFQVRFIFRBQkxFPC9jb21tYW5kPjwvbGluaz4sIHBsdXMgdGhlIG9wdGlvbiA8bGl0ZXJhbD5O T1QKLSAgICAgIFZBTElEPC9saXRlcmFsPiwgd2hpY2ggaXMgY3VycmVudGx5IG9ubHkgYWxsb3dl ZCBmb3IgZm9yZWlnbiBrZXkKKyAgICAgIFZBTElEPC9saXRlcmFsPiwgd2hpY2ggaXMgY3VycmVu dGx5IG9ubHkgYWxsb3dlZCBmb3IgZm9yZWlnbiBrZXksIE5PVCBOVUxMIGNvbnN0cmFpbnRzCiAg ICAgICBhbmQgQ0hFQ0sgY29uc3RyYWludHMuCiAgICAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCmluZGV4IDg0MzJiZTY0MWFjLi4xYzMyOTVkOTQ5YSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwpAQCAtMjcyOCw3ICsyNzI4LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2Rh dGF0eXBlcyk7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCBDT05TVFJBSU5UIHl5eSAqLwogCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiLCAiQ09OU1RS QUlOVCIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiQ0hFQ0siLCAiVU5JUVVFIiwgIlBS SU1BUlkgS0VZIiwgIkVYQ0xVREUiLCAiRk9SRUlHTiBLRVkiKTsKKwkJQ09NUExFVEVfV0lUSCgi Q0hFQ0siLCAiVU5JUVVFIiwgIlBSSU1BUlkgS0VZIiwgIkVYQ0xVREUiLCAiRk9SRUlHTiBLRVki LCAiTk9UIE5VTEwiKTsKIAkvKiBBTFRFUiBUQUJMRSB4eHggQUREIFtDT05TVFJBSU5UIHl5eV0g KFBSSU1BUlkgS0VZfFVOSVFVRSkgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJM RSIsIE1hdGNoQW55LCAiQUREIiwgIlBSSU1BUlkiLCAiS0VZIikgfHwKIAkJCSBNYXRjaGVzKCJB TFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQUREIiwgIlVOSVFVRSIpIHx8Ci0tIAoyLjQzLjAK Cg== --000000000000fe4e2306300e5f9a--