Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1piCHy-0001BR-Fd for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Mar 2023 10:47:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1piCHw-0007qp-1s for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Mar 2023 10:47:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1piCHv-0007pd-CD for pgsql-hackers@lists.postgresql.org; Fri, 31 Mar 2023 10:47:19 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1piCHn-0003HC-Vn for pgsql-hackers@postgresql.org; Fri, 31 Mar 2023 10:47:18 +0000 Received: by mail-wr1-x42e.google.com with SMTP id e18so21930063wra.9 for ; Fri, 31 Mar 2023 03:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680259629; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=nC+PRCLC+eeeuqPy8Cvwg2jxhqmvsWdfbEwogz3Am+s=; b=EpQRsENx43MFPfvFyYVbapySEUlwsz0aS0rK13Nzy4+NPkbYl9qsQWLF5vQLNh9SU4 U9X69HFsar/RhhkVHry4qfB98/DupJH8sWDpViJTS9x2Cd7SEIP1zfAEGuH3bZ/QlMk+ HJLbfy0w0fqJjhgN3X/GpIGmn3ym4u3rCAqnQOriBZH/3YDCsLX8m0Ss/ntH7l7nmtQs l/jrQ6PYNSJVvedyIyn9+TeIe4/ZGQFJj+0o2raRFho1yuRE+mPA10xzSAHMLKuqHLxw P2UD+Ot2gRREAGTD7L4BvZA8Ht9HHOxqrNmVfJ9IVH/QChXuNN1+3r5Ye1noSuAi6tFR DxCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680259629; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nC+PRCLC+eeeuqPy8Cvwg2jxhqmvsWdfbEwogz3Am+s=; b=Q0cXDLubb0qYQ9r3iWgR8KX4A+Kj18NZ/9GoXBkO4+EGjbSl3xwcFMDhhArSd4Yxh5 Ox7Q3qJ9gEHBLiS2G8xEZwR4ywWWnjk6BL23CKAJA4aTXmMdY3FNZd0SegHsxLr6xM90 x7ebxZLb1Q/vi/myf2JkhniUA72rB4yl41wmmMm7VHophzY+yGtl8PKi7Y891LNzDaFj yXn224lXVipRa1CCUXP/uiRM2qlK9SQbrLQBpo/iPpT4eb7nWEFgrNMG/nEWJexhxmC/ O/p32WiFaUfNduCE+LF6nmGiSzWzsZ+KSR8jUEi+ZierOvcJvfRcGzwafK4HJCzTtqq6 PD0A== X-Gm-Message-State: AAQBX9f5u5H4QZiPfycH6188SskUvmHSoDZlePGXXb+KJfCmSO9inyI4 Y9i62nRnfBTsol5nL0KoniM= X-Google-Smtp-Source: AKy350aidXONwvEYxzsOl9XNCoV3wwk3mQqWASXxBX75Ovuay+hdR8/a0LGu/J0H6eG4MEug5NBM2Q== X-Received: by 2002:a5d:5681:0:b0:2d4:a843:d000 with SMTP id f1-20020a5d5681000000b002d4a843d000mr16901643wrv.56.1680259629240; Fri, 31 Mar 2023 03:47:09 -0700 (PDT) Received: from [192.168.17.43] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id b6-20020a5d5506000000b002e463bd49e3sm1848019wrv.66.2023.03.31.03.47.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 31 Mar 2023 03:47:08 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------2Y0aDGctWxn7tLmsjjJZ4lqy" Message-ID: <21b700c3-eecf-2e05-a699-f8c78dd31ec7@gmail.com> Date: Fri, 31 Mar 2023 12:45:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US To: Andres Freund , Robert Haas Cc: Jeff Davis , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers , Melanie Plageman References: <2d314c22b9e03415aa1c7d8fd1f698dae60effa7.camel@j-davis.com> <061eeb26-156e-6011-02b6-b4b1422e2aa6@gmail.com> <8a7da0c2-b7fe-1c78-4e47-a16239bf4839@gmail.com> <6ab352de1553c1e3d0c7d97c038dc470ca51e772.camel@j-davis.com> <4df984c8-3adb-3b69-0e4e-a491097862ce@gmail.com> <20230330070431.tojeodaeo4zmpofu@awork3.anarazel.de> <20230331043300.gux3s5wzrapqi4oe@awork3.anarazel.de> From: "Drouvot, Bertrand" In-Reply-To: <20230331043300.gux3s5wzrapqi4oe@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 3/31/23 6:33 AM, Andres Freund wrote: > Hi, > > On 2023-03-30 18:23:41 +0200, Drouvot, Bertrand wrote: >> On 3/30/23 9:04 AM, Andres Freund wrote: >>> I think this commit is ready to go. Unless somebody thinks differently, I >>> think I might push it tomorrow. >> >> Great! Once done, I'll submit a new patch so that GlobalVisTestFor() can make >> use of the heap relation in vacuumRedirectAndPlaceholder() (which will be possible >> once 0001 is committed). > > Unfortunately I did find an issue doing a pre-commit review of the patch. > > The patch adds VISIBILITYMAP_IS_CATALOG_REL to xl_heap_visible.flags - but it > does not remove the bit before calling visibilitymap_set(). > > This ends up corrupting the visibilitymap, because the we'll set a bit for > another page. > Oh I see, I did not think about that (not enough experience in the VM area). Nice catch and thanks for pointing out! > On a casual read, one very well might think that VISIBILITYMAP_IS_CATALOG_REL > is a valid bit that could be set in the VM. > I see what you're saying now and do agree that's confusing. > I am thinking of instead creating a separate namespace for the "xlog only" > bits: > > /* > * To detect recovery conflicts during logical decoding on a standby, we need > * to know if a table is a user catalog table. For that we add an additional > * bit into xl_heap_visible.flags, in addition to the above. > * > * NB: VISIBILITYMAP_XLOG_* may not be passed to visibilitymap_set(). > */ > #define VISIBILITYMAP_XLOG_CATALOG_REL 0x04 > #define VISIBILITYMAP_XLOG_VALID_BITS (VISIBILITYMAP_VALID_BITS | VISIBILITYMAP_XLOG_CATALOG_REL) > > > That allows heap_xlog_visible() to do: > > Assert((xlrec->flags & VISIBILITYMAP_XLOG_VALID_BITS) == xlrec->flags); > vmbits = (xlrec->flags & VISIBILITYMAP_VALID_BITS); > > and pass vmbits istead of xlrec->flags to visibilitymap_set(). > That sounds good to me. That way you'd ensure that VISIBILITYMAP_XLOG_CATALOG_REL is not passed to visibilitymap_set(). > > I'm also thinking of splitting the patch into two. One patch to pass down the > heap relation into the new places, and another for the rest. I think that makes sense. I don't know how far you've work on the split but please find attached V54 doing such a split + implementing your VISIBILITYMAP_XLOG_VALID_BITS suggestion. > > Note that gistXLogDelete() continues to register data with two different > XLogRegisterData() calls. This will append data without any padding: > > XLogRegisterData((char *) &xlrec, SizeOfGistxlogDelete); > > /* > * We need the target-offsets array whether or not we store the whole > * buffer, to allow us to find the snapshotConflictHorizon on a standby > * server. > */ > XLogRegisterData((char *) todelete, ntodelete * sizeof(OffsetNumber)); > > > But replay now uses the new offset member: > >> @@ -177,6 +177,7 @@ gistRedoDeleteRecord(XLogReaderState *record) >> gistxlogDelete *xldata = (gistxlogDelete *) XLogRecGetData(record); >> Buffer buffer; >> Page page; >> + OffsetNumber *toDelete = xldata->offsets; >> >> /* >> * If we have any conflict processing to do, it must happen before we > > > That doesn't look right. If there's any padding before offsets, we'll afaict > read completely bogus data? > > As it turns out, there is padding: > > struct gistxlogDelete { > TransactionId snapshotConflictHorizon; /* 0 4 */ > uint16 ntodelete; /* 4 2 */ > _Bool isCatalogRel; /* 6 1 */ > > /* XXX 1 byte hole, try to pack */ > > OffsetNumber offsets[]; /* 8 0 */ > > /* size: 8, cachelines: 1, members: 4 */ > /* sum members: 7, holes: 1, sum holes: 1 */ > /* last cacheline: 8 bytes */ > }; > > > I am frankly baffled how this works at all, this should just about immediately > crash? > > Oh, I see. Hm, don't we have already the same issue for spgxlogVacuumRoot / vacuumLeafRoot() / spgRedoVacuumRoot()? > > I'm not going to commit a nontrivial change to these WAL records without some > minimal tests. > That makes fully sense. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0007-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v54-0007-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4NGZhY2E3MWZhMDM2ZDFjNTQ2ZjE1NTIzYzk0MmIzM2VkNDFmNDRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDE0OjA4OjExICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTQgNy83XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjIgKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjNkYTI1NGVkMWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjggQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLiBPbmUgb3B0aW9uIHRvIHNwZWVkIGl0CisgICAgIGlzIHRvIGNhbGwgdGhlIDxmdW5j dGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvZnVuY3Rpb24+IG9uIHRoZSBwcmltYXJ5 LgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAgIFJl cGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90aGlu ZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0006-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v54-0006-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAzZmI4YTNmODM0OGZiNzIyNDEzN2FmMWU4YzAyYjYzY2I2NzhhMGE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjA0OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTQgNi83XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkluIGFkZGl0aW9uIHRvIHRoZSBuZXcgVEFQIHRlc3QsIHRoaXMgY29tbWl0IGludHJv ZHVjZXMgYSBuZXcgcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKQpmdW5jdGlvbi4KClRoZSBp ZGVhIGlzIHRvIGJlIGFibGUgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNh Y3Rpb25zIGFuZCB3cml0ZSB0aGlzCnRvIFdBTCB3aXRob3V0IHJlcXVlc3RpbmcgZm9yIGEg KGNvc3RseSkgY2hlY2twb2ludC4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyAgICAgICAgfCAgMzIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f ZnVuY3Rpb25zLnNxbCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtICAgICAgfCAgMzcgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwgICAgICAgICB8IDcxMCArKysrKysrKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgODAwIGluc2VydGlvbnMoKykKICAgMy4xJSBzcmMvYmFja2VuZC8KICAg NC4wJSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA4OS43JSBzcmMvdGVzdC9y ZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDM4ZTdmNDY3NjAuLmYxNWQ2NDdlYWMgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbApAQCAtMjY5NTQsNiArMjY5NTQsMjEgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6 OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNl dAogICAgICAgICBwcmVwYXJlZCB3aXRoIDx4cmVmIGxpbmtlbmQ9InNxbC1wcmVwYXJlLXRy YW5zYWN0aW9uIi8+LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+Cisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAg ICA8cHJpbWFyeT5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hv dDwvZnVuY3Rpb24+ICgpCisgICAgICAgIDxyZXR1cm52YWx1ZT5wZ19sc248L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGFrZSBhIHNu YXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGFuZCB3cml0ZSB0aGlzIHRvIFdBTCB3 aXRob3V0CisgICAgICAgIGhhdmluZyB0byB3YWl0IGJnd3JpdGVyIG9yIGNoZWNrcG9pbnRl ciB0byBsb2cgb25lLiBUaGlzIG9uZSBpcyB1c2VmdWwgZm9yCisgICAgICAgIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSBmb3Igd2hpY2ggbG9naWNhbCBzbG90IGNyZWF0aW9uIGlz IGhhbmdpbmcKKyAgICAgICAgdW50aWwgc3VjaCBhIHJlY29yZCBpcyByZXBsYXllZCBvbiB0 aGUgc3RhbmRieS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAg ICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYzA3ZGFhODc0Zi4uNDgxZTlhNDdkYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTM4LDYgKzM4 LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zdGFuZGJ5LmgiCiAKIC8qCiAgKiBCYWNrdXAtcmVsYXRlZCB2YXJpYWJsZXMuCkBA IC0xOTYsNiArMTk3LDM3IEBAIHBnX3N3aXRjaF93YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fTFNOKHN3aXRjaHBvaW50KTsKIH0KIAorLyoKKyAqIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90OiBjYWxsIExvZ1N0YW5kYnlTbmFwc2hvdCgpCisgKgorICogUGVybWlzc2lv biBjaGVja2luZyBmb3IgdGhpcyBmdW5jdGlvbiBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIG5v cm1hbAorICogR1JBTlQgc3lzdGVtLgorICovCitEYXR1bQorcGdfbG9nX3N0YW5kYnlfc25h cHNob3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9nUmVjUHRyCXJlY3B0cjsKKworCWlm IChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJyZWNvdmVyeSBpcyBpbiBwcm9ncmVzcyIpLAorCQkJCSBlcnJoaW50KCJwZ19sb2df c3RhbmRieV9zbmFwc2hvdCgpIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgcmVjb3Zlcnku IikpKTsKKworCWlmICghWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygid2FsX2xldmVsIGlzIG5vdCBpbiBkZXNpcmVkIHN0YXRl IiksCisJCQkJIGVycmhpbnQoIndhbF9sZXZlbCBoYXMgdG8gYmUgPj0gV0FMX0xFVkVMX1JF UExJQ0EuIikpKTsKKworCXJlY3B0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJLyoK KwkgKiBBcyBhIGNvbnZlbmllbmNlLCByZXR1cm4gdGhlIFdBTCBsb2NhdGlvbiBvZiB0aGUg bGFzdCBpbnNlcnRlZCByZWNvcmQKKwkgKi8KKwlQR19SRVRVUk5fTFNOKHJlY3B0cik7Cit9 CisKIC8qCiAgKiBwZ19jcmVhdGVfcmVzdG9yZV9wb2ludDogYSBuYW1lZCBwb2ludCBmb3Ig cmVzdG9yZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs CmluZGV4IDgzY2E4OTM0NDQuLmI3YzY1ZWEzN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNjQ0LDYgKzY0NCw4IEBAIFJFVk9LRSBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2NyZWF0ZV9yZXN0b3JlX3BvaW50KHRleHQpIEZST00gcHVi bGljOwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zd2l0Y2hfd2FsKCkgRlJP TSBwdWJsaWM7CiAKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90KCkgRlJPTSBwdWJsaWM7CisKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9O IHBnX3dhbF9yZXBsYXlfcGF1c2UoKSBGUk9NIHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfd2FsX3JlcGxheV9yZXN1bWUoKSBGUk9NIHB1YmxpYzsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGJjYmFlOTAzNmQuLjI4NDEzODcyN2UgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNjQyNiw2ICs2NDI2LDkgQEAKIHsgb2lkID0+ ICcyODQ4JywgZGVzY3IgPT4gJ3N3aXRjaCB0byBuZXcgd2FsIGZpbGUnLAogICBwcm9uYW1l ID0+ICdwZ19zd2l0Y2hfd2FsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ ICdwZ19sc24nLAogICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19zd2l0Y2hf d2FsJyB9LAoreyBvaWQgPT4gJzk2NTgnLCBkZXNjciA9PiAnbG9nIGRldGFpbHMgb2YgdGhl IGN1cnJlbnQgc25hcHNob3QgdG8gV0FMJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3N0YW5k Ynlfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3BnX2xz bicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2xvZ19zdGFuZGJ5X3Nu YXBzaG90JyB9LAogeyBvaWQgPT4gJzMwOTgnLCBkZXNjciA9PiAnY3JlYXRlIGEgbmFtZWQg cmVzdG9yZSBwb2ludCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9yZXN0b3JlX3BvaW50 JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9h cmd0eXBlcyA9PiAndGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1 c3Rlci5wbQppbmRleCBhM2FlZjhiNWU5Li42MjM3NmRlNjAyIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwNzYsNiArMzA3Niw0MyBAQCAk U0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAkbm9kZS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNsb3RfbmFt ZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVu IHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5 Cit7CisJbXkgKCRzZWxmLCAkcHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBAXzsK KwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRsZSA9 IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNvbm5z dHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFtZSwg Jy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJ IyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9va3Mg Zm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFydF9s c24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVzdGFy dF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJRlJP TSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICck c2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2ljYWwg c2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFuZ2Ug Zm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxvZ2lj YWwKKwkjIGlzIHdhaXRpbmcuCisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn U0VMRUNUIHBnX2xvZ19zdGFuZGJ5X3NuYXBzaG90KCknKTsKKworCSRoYW5kbGUtPmZpbmlz aCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICds b2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGll ICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9 YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDU5NDY1Yjk3ZjMuLmU4 MzRhZDVlMGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC00MCw2ICs0MCw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9yZXVzZS5wbCcsCiAgICAgICAn dC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCiAgICAgICAndC8wMzRfY3JlYXRlX2RhdGFi YXNlLnBsJywKKyAgICAgICd0LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAog ICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uOGM0NTE4MGMzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDcx MCBAQAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVj b2RpbmcsCisjIHJlY292ZXJ5IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0 ZXN0cyA9PiA2NzsKKworbXkgKCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwgJGNhc2NhZGlu Z19zdGRvdXQsICRjYXNjYWRpbmdfc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisK K215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3By aW1hcnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3N0YW5kYnknKTsKK215ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5ID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdjYXNjYWRpbmdfc3RhbmRieScpOworbXkgJGRl ZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0OworbXkgJHJlczsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmlt YXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNpY2FsJzsKK215ICRz dGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lID0gJ3N0YW5kYnlfcGh5c2ljYWwnOworCisjIGZp bmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFmdGVyICRvZmYtdGggYnl0ZQorc3ViIGZp bmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAkcGF0LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9 IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlteSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5n dGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJ cmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJv bSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgor IyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSBy ZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkg KCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3Rf bmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y IHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBs b2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sK KwlteSAoJG5vZGUpID0gQF87CisJJG5vZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVzbG90JywgJ3Rlc3RkYicpOworCSRub2Rl LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2 ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgRHJvcCB0aGUgbG9naWNhbCBzbG90cyBvbiBz dGFuZGJ5Lgorc3ViIGRyb3BfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPnBz cWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFj dGl2ZXNsb3QnKV0pOworCSRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxF Q1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKK30KKworIyBB Y3F1aXJlIG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdh aXRpbmcgZm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBzbG90LgorIyBJ ZiB3YWl0IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEga25vd24gZmFp bHVyZSBzY2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgKCRub2RlLCAk d2FpdCwgJHRvX3N0ZG91dCwgJHRvX3N0ZGVycikgPSBAXzsKKwlteSAkc2xvdF91c2VyX2hh bmRsZTsKKworCSRzbG90X3VzZXJfaGFuZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVj dmxvZ2ljYWwnLCAnLWQnLCAkbm9kZS0+Y29ubnN0cigndGVzdGRiJyksICctUycsICdhY3Rp dmVzbG90JywgJy1vJywgJ2luY2x1ZGUteGlkcz0wJywgJy1vJywgJ3NraXAtZW1wdHkteGFj dHM9MScsICctLW5vLWxvb3AnLCAnLS1zdGFydCcsICctZicsICctJ10sICc+JywgJHRvX3N0 ZG91dCwgJzI+JywgJHRvX3N0ZGVycik7CisKKwlpZiAoJHdhaXQpCisJeworCQkjIG1ha2Ug c3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCQkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgn dGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3Bp ZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUi OworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMgQ2hlY2sgcGdfcmVj dmxvZ2ljYWwgc3RkZXJyCitzdWIgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyCit7CisJ bXkgKCRzbG90X3VzZXJfaGFuZGxlLCAkY2hlY2tfc3RkZXJyKSA9IEBfOworCW15ICRyZXR1 cm47CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2Ug dG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJ JHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxvZ2lj YWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJy LCBxci8kY2hlY2tfc3RkZXJyLywgJ3Nsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQnKTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5k YnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0aGF0 IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2 ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJbXkgKCRz bG90X3VzZXJfaGFuZGxlKSA9IEBfOworCisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgnaW5h Y3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcnLCAnaW5hY3RpdmVzbG90IG9uIHN0YW5k YnkgZHJvcHBlZCcpOworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+ eydzbG90X3R5cGUnfSwgJycsICdhY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOwor CisJY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRzbG90X3VzZXJfaGFuZGxlLCAiY29u ZmxpY3Qgd2l0aCByZWNvdmVyeSIpOworfQorCisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMg b24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3Qn CisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBu b24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoYW5nZV9ob3Rfc3RhbmRieV9mZWVk YmFja19hbmRfd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJGhzZiwgJGludmFsaWRhdGVkKSA9 IEBfOworCisJJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics cXFbCisJaG90X3N0YW5kYnlfZmVlZGJhY2sgPSAkaHNmCisJXSk7CisKKwkkbm9kZV9zdGFu ZGJ5LT5yZWxvYWQ7CisKKwlpZiAoJGhzZiAmJiAkaW52YWxpZGF0ZWQpCisJeworCQkjIFdp dGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisJCSMg YnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUg aXMgbm8gbG9naWNhbCBzbG90LgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAk cHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9n X3htaW4gSVMgTlVMTCIpOworCX0KKwllbHNpZiAoJGhzZikKKwl7CisJCSMgV2l0aCBob3Rf c3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIHNob3VsZCBhZHZh bmNlLgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFt ZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5V TEwiKTsKKwl9CisJZWxzZQorCXsKKwkJIyBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhz X2ZlZWRiYWNrIGlzIG9mZgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJp bWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJ UyBOVUxMIik7CisKKwl9Cit9CisKKyMgQ2hlY2sgY29uZmxpY3Rpbmcgc3RhdHVzIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzLgorc3ViIGNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1 cworeworCW15ICgkY29uZmxpY3RpbmcpID0gQF87CisKKwlpZiAoJGNvbmZsaWN0aW5nKQor CXsKKwkJJHJlcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdyZXMn LCBxcSgKKwkJCQkgc2VsZWN0IGJvb2xfYW5kKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzOykpOworCisJCWlzKCRyZXMsICd0JywKKwkJCSJMb2dpY2FsIHNsb3Rz IGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyIpOworCX0KKwllbHNlCisJeworCQkkcmVz ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCQkJCSdwb3N0Z3JlcycsIHFxKAorCQkJ CXNlbGVjdCBib29sX29yKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz OykpOworCisJCWlzKCRyZXMsICdmJywKKwkJCSJMb2dpY2FsIHNsb3RzIGFyZSByZXBvcnRl ZCBhcyBub24gY29uZmxpY3RpbmciKTsKKwl9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNf YXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9z bG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVi dWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFy eS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnkt PnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsK KworIyBDaGVjayBjb25mbGljdGluZyBpcyBOVUxMIGZvciBwaHlzaWNhbCBzbG90CiskcmVz ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJIFNF TEVDVCBjb25mbGljdGluZyBpcyBudWxsIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgd2hl cmUgc2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJztdKTsKKworaXMoJHJlcywgJ3Qn LAorCSJQaHlzaWNhbCBzbG90IHJlcG9ydHMgY29uZmxpY3RpbmcgYXMgTlVMTCIpOworCitt eSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBf bmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgc3RhbmRi eSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9zdGFuZGJ5LT5pbml0 X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3Ry ZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlfc2xvdF9uYW1lID0g JyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7Ciskbm9kZV9w cmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5h bWUnKTtdKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBjYXNj YWRpbmcgc3RhbmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworJG5vZGVfc3Rh bmRieS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7Ciskbm9kZV9jYXNjYWRpbmdfc3RhbmRieS0+ aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9zdGFuZGJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9jYXNjYWRp bmdfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFy eV9zbG90X25hbWUgPSAnJHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5hbWUnXSk7Ciskbm9kZV9j YXNjYWRpbmdfc3RhbmRieS0+c3RhcnQ7Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBs YXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRpbmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdGhhdCBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMg Y29ycmVjdGx5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2Fs X3Nsb3RzKCRub2RlX3N0YW5kYnkpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rl c3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0 KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElO VE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2lj IGRlY29kaW5nIHdvcmtzCitpcyhzY2FsYXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRy ZXN1bHQpLAorCTE0LCAnRGVjb2RpbmcgcHJvZHVjZWQgMTQgcm93cyAoMiBCRUdJTi9DT01N SVQgYW5kIDEwIHJvd3MpJyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQgdmVyaWZ5IHRo YXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBwZ19yZWN2bG9naWNhbAorIyBhbmQg dGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics CisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0 IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCitteSAkZXhwZWN0ZWQgPSBx e0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJd OjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhb aW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElO U0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0YWJsZSBwdWJsaWMuZGVjb2Rpbmdf dGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1JVH07CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwor CitteSAkc3Rkb3V0X3NxbCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywK KwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2Fj dGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0 eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dv dCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAk ZW5kcG9zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1Qg bHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5V TEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorKTsKKworIyBJbnNlcnQg c29tZSByb3dzIGFmdGVyICRlbmRwb3MsIHdoaWNoIHdlIHdvbid0IHJlYWQuCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2Rpbmdf dGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNTAp IHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFu ZGJ5KTsKKworbXkgJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2lj YWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAkZGVmYXVs dF90aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAt ZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91 dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9t IHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVfc3RhbmRieS0+ cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEg RlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xv dCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBuZXZlciBiZWNh bWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2 bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsICRk ZWZhdWx0X3RpbWVvdXQsCisgICAgJ2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAn c2tpcC1lbXB0eS14YWN0cycgPT4gJzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygk c3Rkb3V0X3JlY3YsICcnLCAncGdfcmVjdmxvZ2ljYWwgYWNrbm93bGVkZ2VkIGNoYW5nZXMn KTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgREFU QUJBU0Ugb3RoZXJkYicpOworCitpcyggJG5vZGVfcHJpbWFyeS0+cHNxbCgKKyAgICAgICAg J290aGVyZGInLAorICAgICAgICAiU0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9w ZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVT QyBMSU1JVCAxOyIKKyAgICApLAorICAgIDMsCisgICAgJ3JlcGxheWluZyBsb2dpY2FsIHNs b3QgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGZhaWxzJyk7CisKKyMgZHJvcCB0aGUgbG9naWNh bCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDE6IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZiBhbmQgdmFjdXVtIEZVTEwK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9k ZV9zdGFuZGJ5KTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3Qg aXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQKKyMgbGF1bmNoIGEgdmFjdXVtIGZ1 bGwgb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9u CisjIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0 X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9z dGFuZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisjIFRoaXMgc2hvdWxkIHRyaWdn ZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFx W0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbRFJPUCBUQUJMRSBjb25mbGlj dF90ZXN0O10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVN IGZ1bGwgcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRo IHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNh dXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5w b2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZl X2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVy ZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNs b3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0 ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3Rz X2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUo JG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBXZSBhcmUgbm90 IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVk CitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZy b20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVy biBob3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVl ZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byByb3cgcmVtb3ZhbCB3aXRoIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBp biB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5 IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5jaCBh IHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBv ZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dh aXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2Rl X3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQgdHJp Z2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOwor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZs aWN0X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNV VU0gcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggdmFjdXVtIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAg ICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBi ZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2Fj dGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIHBn X2NsYXNzJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMu Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4 cGVjdCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9z cyByZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20g cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwg J3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVk IjsKKworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzCitjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDAsIFwkc3Rk b3V0LCBcJHN0ZGVycik7CisKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUg c2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxf c3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogU2FtZSBhcyBT Y2VuYXJpbyAyIGJ1dCBvbiBhIG5vbiBjYXRhbG9nIHRhYmxlCisjIFNjZW5hcmlvIDM6IE5v IGNvbmZsaWN0IGV4cGVjdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9t IGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnkt PmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Ns b3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9z bG90cygkbm9kZV9zdGFuZGJ5KTsKKworIyBwdXQgaG90IHN0YW5kYnkgZmVlZGJhY2sgdG8g b2ZmCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAs MSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwk c3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBjb25m bGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFC TEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJTlRPIGNvbmZsaWN0X3Rlc3QoeCx5 KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XSk7Cisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBjb25mbGljdF90 ZXN0IHNldCB4PTEsIHk9MTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgJ1ZBQ1VVTSBjb25mbGljdF90ZXN0OycpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKworIyBtZXNzYWdlIHNob3VsZCBu b3QgYmUgaXNzdWVkCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGlj dHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBp bnZhbGlkYXRpb24gaXMgbm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90ZXN0 Jyk7CisKK29rKCAhZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxp ZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9u IGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcpOworCisjIFZl cmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dp Y2Fsc2xvdCBoYXMgbm90IGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgc3RpbGwgZXhwZWN0IDIg Y29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9h ZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jlcycs CisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0 X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAor CSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3Qgbm90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVk IG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsK KworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIG5vbiBjb25mbGljdGluZyBpbiBw Z19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDAp OworCisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorY2hhbmdlX2hvdF9z dGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygxLCAwKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zlcnkg Y29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11 c2Ugc2xvdHMKKyMgU2NlbmFyaW8gNDogY29uZmxpY3QgZHVlIHRvIG9uLWFjY2VzcyBwcnVu aW5nLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5 IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CisKKyMg ZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgY3Jl YXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9kZV9zdGFu ZGJ5KTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8g dHJpZ2dlciBhbiBvbi1hY2Nlc3MgcHJ1bmluZworIyBvbiBhIHJlbGF0aW9uIG1hcmtlZCBh cyB1c2VyX2NhdGFsb2dfdGFibGUuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5k X3dhaXRfZm9yX3htaW5zKDAsMCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgVGhpcyBzaG91bGQg dHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbQ1JFQVRFIFRBQkxFIHBydW4oaWQgaW50ZWdlciwgcyBjaGFyKDIwMDApKSBXSVRI IChmaWxsZmFjdG9yID0gNzUsIHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUpO10pOworJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtJTlNFUlQgSU5UTyBwcnVuIFZB TFVFUyAoMSwgJ0EnKTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnQic7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0MnO10pOworJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdEJztd KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4g U0VUIHMgPSAnRSc7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggb24tYWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAg JG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJl Y2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1 bmluZycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBl Y3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3Mg cmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3Rn cmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAzKSBmcm9tIHBn X3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0 JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1l ZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7 CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19y ZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOwor CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91 dCwgXCRzdGRlcnIpOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNs b3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0 ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJh Y2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMo MSwgMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNs b3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6IGluY29ycmVjdCB3 YWxfbGV2ZWwgb24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJv bSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRu b2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMgTWFrZSBwcmltYXJ5 IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0Lgor JG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9s ZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKwor IyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2Rl X3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3Rp dmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gd2FsX2xldmVsJyk7 CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRp bmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292 ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMg bG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2Rh dGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBk YXRlZAorIyB3ZSBub3cgZXhwZWN0IDMgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3Vu dGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1 ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2lj YWxzbG90ID0gNCkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRu YW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBk YXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxz bG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMg Y29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZs aWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf c3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRv IHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwgYXQgbGVhc3Qg bG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0 ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdh bF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIp OworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1hcnktPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK10p OworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3Jl cGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2Fj dGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBhcyB0aGUg c2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVh ZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEUk9Q IERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0aXZlIHNs b3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsK KworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX3N0YW5kYnkpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFu ZGJ5LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0 YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBlZC4gVGhpcyBzbG90IHNob3VsZCBub3QK KyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ290aGVyc2xvdCcsICdwb3N0Z3JlcycpOworCisj IGRyb3BkYiBvbiB0aGUgcHJpbWFyeSB0byB2ZXJpZnkgc2xvdHMgYXJlIGRyb3BwZWQgb24g c3RhbmRieQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbRFJPUCBE QVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJG5vZGVfc3RhbmRieSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNl IFdIRVJFIGRhdG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVk IG9uIHN0YW5kYnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dp Y2FsJywKKwknb3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVh bnVwIDogbWFudWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRu b2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdvdGhlcnNsb3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFu ZCBsb2dpY2FsIGRlY29kaW5nIGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMg cHJvbW90ZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIHJlZHVjZSB3YWxfc2VuZGVyX3RpbWVvdXQgdG8gbm90IHdhaXQgdG9v IGxvbmcgYWZ0ZXIgcHJvbW90aW9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJyxxcVsKKwl3YWxfc2VuZGVyX3RpbWVvdXQgPSAxcworXSk7CisKKyRu b2RlX3N0YW5kYnktPnJlbG9hZDsKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMn LCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz IG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0b28KK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworIyBNYWtlIHNsb3RzIGFjdGl2ZXMKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0 ZGVycik7CitteSAkY2FzY2FkaW5nX2hhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf Y2FzY2FkaW5nX3N0YW5kYnksIDEsIFwkY2FzY2FkaW5nX3N0ZG91dCwgXCRjYXNjYWRpbmdf c3RkZXJyKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0aGUgcHJvbW90aW9uCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCisjIFdhaXQgZm9yIGJvdGggc3RhbmRieXMgdG8gY2F0Y2h1cAor JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7 Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRp bmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisKKyMgcHJvbW90ZQorJG5vZGVfc3RhbmRi eS0+cHJvbW90ZTsKKworIyBpbnNlcnQgc29tZSByb3dzIG9uIHByb21vdGVkIHN0YW5kYnkK KyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBk ZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNSw3KSBzO10KKyk7CisKKyMgV2FpdCBmb3IgdGhlIGNhc2NhZGluZyBzdGFuZGJ5IHRv IGNhdGNodXAKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2Rl X2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0 YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0 XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtp bnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVj b2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1 YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2Jwor dGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4 dF06JzcnCitDT01NSVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBh bmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKwor aXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBT UUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sg dGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCBy b3dzCisjIHdpdGggcGdfcmVjdmxvZ2ljYWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhl IHByb21vdGlvbgorbXkgJHB1bXBfdGltZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGls KAorICAgICAgICAkaGFuZGxlLCAkcHVtcF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJHN0ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQs CisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRl Y29kaW5nIHNlc3Npb24nKTsKKworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUg YW5kIHBvc3QgcHJvbW90aW9uIGluc2VydGVkIHJvd3Mgb24gdGhlIGNhc2NhZGluZyBzdGFu ZGJ5Ciskc3Rkb3V0X3NxbCA9ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19j aGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAn LCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRl eHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lv biBvbiBjYXNjYWRpbmcgc3RhbmRieScpOworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29k aW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworIyB3aXRoIHBnX3Jl Y3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcm9tb3Rpb24gb24gdGhl IGNhc2NhZGluZyBzdGFuZGJ5CitvayggcHVtcF91bnRpbCgKKyAgICAgICAgJGNhc2NhZGlu Z19oYW5kbGUsICRwdW1wX3RpbWVvdXQsIFwkY2FzY2FkaW5nX3N0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJGNhc2NhZGluZ19zdGRvdXQpOworaXMoJGNhc2NhZGlu Z19zdGRvdXQsICRleHBlY3RlZCwKKyAgICAnZ290IHNhbWUgZXhwZWN0ZWQgb3V0cHV0IGZy b20gcGdfcmVjdmxvZ2ljYWwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRi eScpOwotLSAKMi4zNC4xCgo= --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0005-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v54-0005-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkNzg4ZGIxNjVjODI3YWNiZWNkMzRmOTBjOTZlNmI5YjgzN2I5NTBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjAwOjI5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTQgNS83XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgfCAgMyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgg ICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKICA0My4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0Ni4xJSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy44JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS8KICAgMy43JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgIDMuMSUgc3JjL2luY2x1ZGUvCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBkYmU5 Mzk0NzYyLi44YTk1MDVhNTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtMzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dS ZWNvdmVyeUN0bERhdGEKIAlSZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRl OwogCUNvbmRpdGlvblZhcmlhYmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBs YXkgc3RhdGUgKHNlZSBjaGVja19mb3JfcmVwbGF5KCkgZm9yIG1vcmUgZXhwbGFuYXRpb24p ICovCisJQ29uZGl0aW9uVmFyaWFibGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9f bGNrOwkJLyogbG9ja3Mgc2hhcmVkIHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9n UmVjb3ZlcnlDdGxEYXRhOwogCkBAIC00NjgsNiArNDcxLDcgQEAgWExvZ1JlY292ZXJ5U2ht ZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNr KTsKIAlJbml0U2hhcmVkTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292 ZXJ5Tm90UGF1c2VkQ1YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKIH0KIAogLyoKQEAgLTE5MzUsNiArMTkzOSwxMSBAQCBBcHBs eVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJl Y29yZCwgVGltZUxpbmVJRCAqcmVwbAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVk VExJID0gKnJlcGxheVRMSTsKIAlTcGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwogCisJLyoKKwkgKiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxv Z2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYg cm1fcmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdh a2UgdXAgdGhlCiAJICogcmVjZWl2ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVk IGxhc3RSZXBsYXllZEVuZFJlY1B0ciBhbmQgc2VuZHMKQEAgLTQ5NDIsMyArNDk1MSwyMiBA QCBhc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQg KmV4dHJhKQogCWVsc2UKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5T RVQ7CiB9CisKKy8qCisgKiBSZXR1cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRp bmcgdGhhdCBhIHJlcGxheSBoYXMgYmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVk IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0i IGlzIHRoYXQKKyAqIFdhbFNuZFdhaXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkq IExTTiB0byBpbmNyZWFzZSwgYnV0IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVy IHdoZW4gbmV3IFdBTCBoYXMgYmVlbiBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGlj YWxseQorICogd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1l IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRo YXQgYnkgdGhlIHRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExv Z1JlcGxheVJlY1B0cigpIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNz IGFscmVhZHkgcmVwbGF5ZWQKKyAqIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyLgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBY TG9nUmVjb3ZlcnlDdGwtPnJlcGxheWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisg Ki8KK0NvbmRpdGlvblZhcmlhYmxlICoKK2NoZWNrX2Zvcl9yZXBsYXkodm9pZCkKK3sKKwly ZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggYTA1ZWNkZWRkZC4uMmEwZDZjNzg3ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTE1NTEsNiArMTU1MSw3IEBAIFdh bFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsK IAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNlbnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRy OworCUNvbmRpdGlvblZhcmlhYmxlICpyZXBsYXllZENWID0gY2hlY2tfZm9yX3JlcGxheSgp OwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8gYXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9j ayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3ZQpAQCAtMTU2NSwxMCArMTU2NiwxNSBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CiAJZWxz ZQorCXsKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQkvKiBQcmVwYXJlIHRoZSByZXBsYXllZENWIHRvIHNsZWVwICovCisJCUNvbmRpdGlvblZh cmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJfQogCiAJZm9yICg7OykKIAl7 CisKIAkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRp bmcgd2FrZXVwcyAqLwpAQCAtMTY1MiwyMSArMTY1OCwzMyBAQCBXYWxTbmRXYWl0Rm9yV2Fs KFhMb2dSZWNQdHIgbG9jKQogCQkvKiBTZW5kIGtlZXBhbGl2ZSBpZiB0aGUgdGltZSBoYXMg Y29tZSAqLwogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCisJCXNsZWVwdGlt ZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVzdGFtcCgpKTsKIAkJ LyoKLQkJICogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQu ICBBbHNvIHdhaXQgZm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlm IHRoZXJlJ3Mgc3RpbGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292 ZXJ5LCBzbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJ ICogQWxzbyB3YWl0IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVy ZSdzIHN0aWxsIHBlbmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0 IG9uIHNlbmRhYmxlIG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBX QUwgdG8gYmUgZ2VuZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwg d2UgZG9uJ3QKIAkJICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAq LwotCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7Ci0KLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJaWYg KCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJeworCQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tF VF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5nKCkpCi0JCQl3YWtlRXZl bnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5n KCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCVdhbFNu ZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJ VF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgYXJlIGluIHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgY2FzZS4KKwkJ CSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIHJlcGxheSB3 YWwgcmVjb3JkKHMpIHVzaW5nCisJCQkgKiBhIHRpbWVvdXQgaW4gY2FzZSB3ZSBhcmUgcmVx dWVzdGVkIHRvIHN0b3AuCisJCQkgKi8KKwkJCUNvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChyZXBsYXllZENWLCBzbGVlcHRpbWUsCisJCQkJCQkJCQkJV0FJVF9FVkVOVF9XQUxfU0VO REVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28g V2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDc5NDBkNjQ2MzkuLjI3ZmM4ZmFiNzYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2Niw2ICs0NjYs OSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRf RVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1lID0gIldhbFJl Y2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2ZXJXYWl0UmVw bGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEU6 CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li5jODg0MmQ5NGJiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRy b2wuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAK IC8qCkBAIC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJlc0lu dFBhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAogCiBl eHRlcm4gdm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpjaGVja19mb3JfcmVw bGF5KHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs dWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBk byB3aXRoIGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA1MThkM2IwYTFmLi5lMTNhYmRjMzY1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9F WElULAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERB VEUKIH0gV2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0004-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v54-0004-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAwN2QzODdkNTAxYmJhZDcxNDk2NTM1YzE0NmNmNjlmMzU3MjczMjUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU5OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTQgNC83XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgfCAxMSArKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIHwgMzcgKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICB8IDU3ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICB8IDQxICsrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygr KSwgNTggZGVsZXRpb25zKC0pCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v CiAgMzguNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1NS42JSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggNGI4NTgwNDYzMy4uZjBhZGY1MWE5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtNDQ2Niw2ICs0NDY2LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJv b2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdh bF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFs dWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBi ZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxs eSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxM ZXZlbE9uU3RhbmRieSh2b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVs OworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExP RwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRl eCA4ZmU3YmI2NWYxLi44NDU3ZWVjNGM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJ ICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2Ug WExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4 bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVm LT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMg cmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBw cmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICog RXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVu IHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90 IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZp Y2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJv bml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xl dmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgor CQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgIgorCQkJCQkJCQkidG8gYmUgYXQg bGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOworCQkJYnJlYWs7CisJ CX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhM T0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFN RVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0df RlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggYzNlYzk3YTBhNi4uNzQzZDEy YmExNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK QEAgLTEyNCwyMyArMTI0LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRz KHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCiAJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRh dGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0 byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNh bGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVl ZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGlt ZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNl IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0J ICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBz dXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFi YXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBv bmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3Vs ZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUlu UHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBj YW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBU aGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAq IFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNo YW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5k IGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWly ZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90 LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5n IHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxf TEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJ CQkidG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOwor CX0KIH0KIAogLyoKQEAgLTM0Miw2ICszNDEsMTIgQEAgQ3JlYXRlSW5pdERlY29kaW5nQ29u dGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAqIE9uIHN0YW5kYnks IHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgc2xvdC4g Q2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKi8KKwlDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hvcnRlciBsaW5lcy4u LiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCmluZGV4IDVmZjg0MzA0N2MuLmI3NTk5ODA4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTQxLDYgKzQxLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv eGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNs dWRlICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0xMTc2 LDM3ICsxMTc3LDI4IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJLyoK IAkJICogRm9yIGxvZ2ljYWwgc2xvdHMgbG9nIGEgc3RhbmRieSBzbmFwc2hvdCBhbmQgc3Rh cnQgbG9naWNhbCBkZWNvZGluZwogCQkgKiBhdCBleGFjdGx5IHRoYXQgcG9zaXRpb24uIFRo YXQgYWxsb3dzIHRoZSBzbG90IHRvIHN0YXJ0IHVwIG1vcmUKLQkJICogcXVpY2tseS4KKwkJ ICogcXVpY2tseS4gQnV0IG9uIGEgc3RhbmRieSB3ZSBjYW5ub3QgZG8gV0FMIHdyaXRlcywg c28ganVzdCB1c2UgdGhlCisJCSAqIHJlcGxheSBwb2ludGVyOyBlZmZlY3RpdmVseSwgYW4g YXR0ZW1wdCB0byBjcmVhdGUgYSBsb2dpY2FsIHNsb3Qgb24KKwkJICogc3RhbmRieSB3aWxs IGNhdXNlIGl0IHRvIHdhaXQgZm9yIGFuIHhsX3J1bm5pbmdfeGFjdCByZWNvcmQgdG8gYmUK KwkJICogbG9nZ2VkIGluZGVwZW5kZW50bHkgb24gdGhlIHByaW1hcnksIHNvIHRoYXQgYSBz bmFwc2hvdCBjYW4gYmUgYnVpbHQKKwkJICogdXNpbmcgdGhlIHJlY29yZC4KIAkJICoKLQkJ ICogVGhhdCdzIG5vdCBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwg c2xvdHMgYXMgdGhleSdsbAotCQkgKiBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2Vk IGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkIHJldHVybgotCQkgKiB0aGUgbG9jYXRpb24g b2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkgaW5jcmVhc2VzCi0J CSAqIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFz ZSBiYWNrdXAgaGFzIHRvCi0JCSAqIHN0YXJ0IHJlcGxheSBhdC4KKwkJICogTm9uZSBvZiB0 aGlzIGlzIG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBh cworCQkgKiB0aGV5J2xsIHN0YXJ0IHJlcGxheSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2tw b2ludCBhbnl3YXkuIEluc3RlYWQKKwkJICogcmV0dXJuIHRoZSBsb2NhdGlvbiBvZiB0aGUg bGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRseQorCQkgKiBpbmNyZWFzZXMgdGhl IGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1 cAorCQkgKiBoYXMgdG8gc3RhcnQgcmVwbGF5IGF0LgogCQkgKi8KLQkJaWYgKCFSZWNvdmVy eUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2FsKHNsb3QpKQotCQl7Ci0JCQlYTG9nUmVj UHRyCWZsdXNocHRyOwotCi0JCQkvKiBzdGFydCBhdCBjdXJyZW50IGluc2VydCBwb3NpdGlv biAqLworCQlpZiAoU2xvdElzUGh5c2ljYWwoc2xvdCkpCisJCQlyZXN0YXJ0X2xzbiA9IEdl dFJlZG9SZWNQdHIoKTsKKwkJZWxzZSBpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCQly ZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCWVsc2UKIAkJCXJl c3RhcnRfbHNuID0gR2V0WExvZ0luc2VydFJlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJl KCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9s c247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQotCQkJLyogbWFrZSBz dXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCi0JCQlmbHVzaHB0 ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOwogCi0JCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3Mg ZnN5bmNlZCB0byBkaXNrICovCi0JCQlYTG9nRmx1c2goZmx1c2hwdHIpOwotCQl9Ci0JCWVs c2UKLQkJewotCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7Ci0JCQlTcGluTG9j a0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSBy ZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQl9CisJ CVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOworCQlzbG90LT5kYXRhLnJlc3RhcnRf bHNuID0gcmVzdGFydF9sc247CisJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwog CiAJCS8qIHByZXZlbnQgV0FMIHJlbW92YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLwogCQlS ZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CkBAIC0xMjIyLDYgKzEyMTQs MTcgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCQlpZiAoWExvZ0dldExh c3RSZW1vdmVkU2Vnbm8oKSA8IHNlZ25vKQogCQkJYnJlYWs7CiAJfQorCisJaWYgKCFSZWNv dmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2FsKHNsb3QpKQorCXsKKwkJWExvZ1Jl Y1B0cglmbHVzaHB0cjsKKworCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3Jt YXRpb24gdG8gc3RhcnQgKi8KKwkJZmx1c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsK KworCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3MgZnN5bmNlZCB0byBkaXNrICovCisJCVhMb2dG bHVzaChmbHVzaHB0cik7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuYwppbmRleCBiNjg2NjkxY2EyLi5hMDVlY2RlZGRkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtOTA2LDIzICs5MDYsMzEgQEAgbG9naWNhbF9yZWFk X3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBh Z2VQdHIsIGludCByZXEKIAlpbnQJCQljb3VudDsKIAlXQUxSZWFkRXJyb3IgZXJyaW5mbzsK IAlYTG9nU2VnTm8Jc2Vnbm87Ci0JVGltZUxpbmVJRAljdXJyVExJID0gR2V0V0FMSW5zZXJ0 aW9uVGltZUxpbmUoKTsKKwlUaW1lTGluZUlECWN1cnJUTEk7CiAKIAkvKgotCSAqIFNpbmNl IGxvZ2ljYWwgZGVjb2RpbmcgaXMgb25seSBwZXJtaXR0ZWQgb24gYSBwcmltYXJ5IHNlcnZl ciwgd2Uga25vdwotCSAqIHRoYXQgdGhlIGN1cnJlbnQgdGltZWxpbmUgSUQgY2FuJ3QgYmUg Y2hhbmdpbmcgYW55IG1vcmUuIElmIHdlIGRpZCB0aGlzCi0JICogb24gYSBzdGFuZGJ5LCB3 ZSdkIGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIHZhbHVlcyB3ZSBjb21wdXRlIGhlcmUKLQkg KiBiZWNvbWluZyBpbnZhbGlkIGR1ZSB0byBhIHByb21vdGlvbiBvciB0aW1lbGluZSBjaGFu Z2UuCisJICogU2luY2UgbG9naWNhbCBkZWNvZGluZyBpcyBhbHNvIHBlcm1pdHRlZCBvbiBh IHN0YW5kYnkgc2VydmVyLCB3ZSBuZWVkCisJICogdG8gY2hlY2sgaWYgdGhlIHNlcnZlciBp cyBpbiByZWNvdmVyeSB0byBkZWNpZGUgaG93IHRvIGdldCB0aGUgY3VycmVudAorCSAqIHRp bWVsaW5lIElEIChzbyB0aGF0IGl0IGFsc28gY292ZXIgdGhlIHByb21vdGlvbiBvciB0aW1l bGluZSBjaGFuZ2UgY2FzZXMpLgogCSAqLworCisJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5v dWdoIFdBTCBhdmFpbGFibGUgKi8KKwlmbHVzaHB0ciA9IFdhbFNuZFdhaXRGb3JXYWwodGFy Z2V0UGFnZVB0ciArIHJlcUxlbik7CisKKwkvKiB0aGUgc3RhbmRieSBjb3VsZCBoYXZlIGJl ZW4gcHJvbW90ZWQsIHNvIGNoZWNrIGlmIHN0aWxsIGluIHJlY292ZXJ5ICovCisJYW1fY2Fz Y2FkaW5nX3dhbHNlbmRlciA9IFJlY292ZXJ5SW5Qcm9ncmVzcygpOworCisJaWYgKGFtX2Nh c2NhZGluZ193YWxzZW5kZXIpCisJCUdldFhMb2dSZXBsYXlSZWNQdHIoJmN1cnJUTEkpOwor CWVsc2UKKwkJY3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCk7CisKIAlYTG9n UmVhZERldGVybWluZVRpbWVsaW5lKHN0YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4sIGN1 cnJUTEkpOwogCXNlbmRUaW1lTGluZUlzSGlzdG9yaWMgPSAoc3RhdGUtPmN1cnJUTEkgIT0g Y3VyclRMSSk7CiAJc2VuZFRpbWVMaW5lID0gc3RhdGUtPmN1cnJUTEk7CiAJc2VuZFRpbWVM aW5lVmFsaWRVcHRvID0gc3RhdGUtPmN1cnJUTElWYWxpZFVudGlsOwogCXNlbmRUaW1lTGlu ZU5leHRUTEkgPSBzdGF0ZS0+bmV4dFRMSTsKIAotCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVu b3VnaCBXQUwgYXZhaWxhYmxlICovCi0JZmx1c2hwdHIgPSBXYWxTbmRXYWl0Rm9yV2FsKHRh cmdldFBhZ2VQdHIgKyByZXFMZW4pOwotCiAJLyogZmFpbCBpZiBub3QgKGltcGxpZXMgd2Ug YXJlIGdvaW5nIHRvIHNodXQgZG93bikgKi8KIAlpZiAoZmx1c2hwdHIgPCB0YXJnZXRQYWdl UHRyICsgcmVxTGVuKQogCQlyZXR1cm4gLTE7CkBAIC05MzcsNyArOTQ1LDcgQEAgbG9naWNh bF9yZWFkX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRh cmdldFBhZ2VQdHIsIGludCByZXEKIAkJCQkgY3VyX3BhZ2UsCiAJCQkJIHRhcmdldFBhZ2VQ dHIsCiAJCQkJIFhMT0dfQkxDS1NaLAotCQkJCSBzdGF0ZS0+c2VnLndzX3RsaSwgLyogUGFz cyB0aGUgY3VycmVudCBUTEkgYmVjYXVzZSBvbmx5CisJCQkJIGN1cnJUTEksIAkJCS8qIFBh c3MgdGhlIGN1cnJlbnQgVExJIGJlY2F1c2Ugb25seQogCQkJCQkJCQkJICogV2FsU25kU2Vn bWVudE9wZW4gY29udHJvbHMgd2hldGhlciBuZXcKIAkJCQkJCQkJCSAqIFRMSSBpcyBuZWVk ZWQuICovCiAJCQkJICZlcnJpbmZvKSkKQEAgLTMwNzMsMTAgKzMwODEsMTQgQEAgWExvZ1Nl bmRMb2dpY2FsKHZvaWQpCiAJICogSWYgZmlyc3QgdGltZSB0aHJvdWdoIGluIHRoaXMgc2Vz c2lvbiwgaW5pdGlhbGl6ZSBmbHVzaFB0ci4gIE90aGVyd2lzZSwKIAkgKiB3ZSBvbmx5IG5l ZWQgdG8gdXBkYXRlIGZsdXNoUHRyIGlmIEVuZFJlY1B0ciBpcyBwYXN0IGl0LgogCSAqLwot CWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0cikKLQkJZmx1c2hQdHIgPSBHZXRG bHVzaFJlY1B0cihOVUxMKTsKLQllbHNlIGlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVh ZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQ dHIoTlVMTCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRyIHx8CisJCWxv Z2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKKwl7 CisJCWlmIChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyKQorCQkJZmx1c2hQdHIgPSBHZXRTdGFu ZGJ5Rmx1c2hSZWNQdHIoTlVMTCk7CisJCWVsc2UKKwkJCWZsdXNoUHRyID0gR2V0Rmx1c2hS ZWNQdHIoTlVMTCk7CisJfQogCiAJLyogSWYgRW5kUmVjUHRyIGlzIHN0aWxsIHBhc3Qgb3Vy IGZsdXNoUHRyLCBpdCBtZWFucyB3ZSBjYXVnaHQgdXAuICovCiAJaWYgKGxvZ2ljYWxfZGVj b2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKQEAgLTMxNjcsNyAr MzE3OSw4IEBAIEdldFN0YW5kYnlGbHVzaFJlY1B0cihUaW1lTGluZUlEICp0bGkpCiAJcmVj ZWl2ZVB0ciA9IEdldFdhbFJjdkZsdXNoUmVjUHRyKE5VTEwsICZyZWNlaXZlVExJKTsKIAly ZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCi0JKnRsaSA9 IHJlcGxheVRMSTsKKwlpZiAodGxpKQorCQkqdGxpID0gcmVwbGF5VExJOwogCiAJcmVzdWx0 ID0gcmVwbGF5UHRyOwogCWlmIChyZWNlaXZlVExJID09IHJlcGxheVRMSSAmJiByZWNlaXZl UHRyID4gcmVwbGF5UHRyKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggY2ZlNTQwOTczOC4uNDhjYTg1 MjM4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yMzAsNiArMjMwLDcgQEAgZXh0ZXJuIHZvaWQg WExPR1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEJvb3RTdHJhcFhMT0codm9pZCk7 CiBleHRlcm4gdm9pZCBJbml0aWFsaXplV2FsQ29uc2lzdGVuY3lDaGVja2luZyh2b2lkKTsK IGV4dGVybiB2b2lkIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOworZXh0 ZXJuIFdhbExldmVsIEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpOwogZXh0ZXJu IHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blhMT0coaW50 IGNvZGUsIERhdHVtIGFyZyk7CiBleHRlcm4gdm9pZCBDcmVhdGVDaGVja1BvaW50KGludCBm bGFncyk7Ci0tIAoyLjM0LjEKCg== --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0003-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v54-0003-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA4YTFiN2VkNDU4ZDc1MGI4N2VmNDM0ODQwNzNhNjM5MTUyZmE3MTJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU3OjU2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTQgMy83XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gdGhlIHByaW1hcnkgc2VydmVyCmlzIHJlZHVjZWQgdG8gYmVs b3cgbG9naWNhbCBhbmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3Rh bmRieS4gSW50cm9kdWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QK Y29uZmxpY3QgcmVjb3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzIGZpZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBZGQgYSBuZXcg ZmllbGQgImNvbmZsaWN0aW5nIiBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cy4KCkF1dGhvcjog QW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBC ZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMg RnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8sCkJoYXJhdGgg UnVwaXJlZGR5Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDExICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAg ICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAg ICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyAgICAgICAgICAgICB8ICAyMCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsICAgICAgICAgIHwgICA2ICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsZnVuY3MuYyAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyAgICAgICAgICAgICAgICB8IDE4OSArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAxNiArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgICA3ICsKIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgMyArCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAgMTMgKy0KIHNy Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAyOCArKysK IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jICB8ICAgNCAr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgIDMg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDEx ICstCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwg IDE0ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgICAgICAgICAg IHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAg ICB8ICAgOCArLQogMjQgZmlsZXMgY2hhbmdlZCwgMzA4IGluc2VydGlvbnMoKyksIDYxIGRl bGV0aW9ucygtKQogICA1LjMlIGRvYy9zcmMvc2dtbC8KICAgNi4yJSBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS8KICAgNC42JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs LwogIDU1LjYlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA0LjQlIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjLwogICA2LjklIHNyYy9iYWNrZW5kL3Rjb3AvCiAgIDUuMyUgc3JjL2Jh Y2tlbmQvCiAgIDMuOCUgc3JjL2luY2x1ZGUvY2F0YWxvZy8KICAgNS4zJSBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5z Z21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBkNWE0NWY5OTZkLi44 N2ZkMTA0MDFkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTQ2NzQsNiArNDY3NCwxNyBA QCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0 X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgIGRlYWRsb2NrcwogICAgICAg PC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3Q8 L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgYWN0aXZlIGxvZ2ljYWwgc2xvdHMgaW4gdGhp cyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbgorICAgICAgIGludmFsaWRhdGVkIGJlY2F1c2Ug dGhleSBjb25mbGljdCB3aXRoIHJlY292ZXJ5IChub3RlIHRoYXQgaW5hY3RpdmUgb25lcwor ICAgICAgIGFyZSBhbHNvIGludmFsaWRhdGVkIGJ1dCBkbyBub3QgaW5jcmVtZW50IHRoaXMg Y291bnRlcikKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICA8L3Ri b2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK aW5kZXggYmIxYTQxODQ1MC4uNTdiMjI4MDc2ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bApAQCAtMjUxNyw2ICsyNTE3LDE2IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVG VCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgIGZhbHNlIGZvciBwaHlzaWNh bCBzbG90cy4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29uZmxpY3Rp bmc8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0aGlzIGxvZ2ljYWwgc2xvdCBjb25mbGljdGVk IHdpdGggcmVjb3ZlcnkgKGFuZCBzbyBpcyBub3cKKyAgICAgICBpbnZhbGlkYXRlZCkuIEFs d2F5cyBOVUxMIGZvciBwaHlzaWNhbCBzbG90cy4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRleCBiNzY3OGYzYzE0Li45YTg2ZmIz ZmVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAgLTE5Nyw2ICsxOTcs NyBAQCBnaXN0UmVkb0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ WExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsK IAogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApAQCAtMzkwLDYgKzM5MSw3IEBAIGdpc3RS ZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhv dFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhp ZCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwogfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCmluZGV4IDA4Y2ViOTEyODguLmI4 NTYzMDQ3NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC0xMDAz LDYgKzEwMDMsNyBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9wYWdlKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRv ciwgTlVMTCwgTlVMTCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KHhsZGF0YS0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+ aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCmluZGV4IDA4NTQ2YjM1YzcuLjNkYzYzOGE4MDEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC04NzE3LDYgKzg3MTcsNyBAQCBoZWFwX3hsb2df cHJ1bmUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRi eSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAog CQkJCQkJCQkJCQlybG9jYXRvcik7CiAKIAkvKgpAQCAtODg4OCw2ICs4ODg5LDcgQEAgaGVh cF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKElu SG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxy ZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+ZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9y KTsKIAogCS8qCkBAIC05MDA3LDYgKzkwMDksNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2Uo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29y ZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJ CQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDQxNGNhNGY2ZGUuLmM4 N2U0NmVkNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02Njks NiArNjY5LDcgQEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVM TCk7CiAKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVs LAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQCBi dHJlZV94bG9nX3JldXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAlpZiAo SW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1 bGxYaWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAg eGxyZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiMDcxYjU5Yzhh Li40NTlhYzkyOWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAt ODc5LDYgKzg3OSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwg TlVMTCwgTlVMTCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs ZGF0YS0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXND YXRhbG9nUmVsLAogCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwppbmRleCA0NjgyMWFkNjA1Li40Yjg1ODA0NjMzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02ODA2LDcgKzY4MDYsNyBAQCBDcmVhdGVDaGVj a1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1NlZyhSZWRvUmVjUHRyLCBfbG9n U2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dTZWcocmVjcHRyLCAmX2xvZ1Nl Z05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhfbG9nU2Vn Tm8pKQorCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdO bywgSW52YWxpZE9pZCwgTlVMTCkpCiAJewogCQkvKgogCQkgKiBTb21lIHNsb3RzIGhhdmUg YmVlbiBpbnZhbGlkYXRlZDsgcmVjYWxjdWxhdGUgdGhlIG9sZC1zZWdtZW50CkBAIC03MjUw LDcgKzcyNTAsNyBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCXJlcGxheVB0 ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAJZW5kcHRyID0gKHJlY2Vp dmVQdHIgPCByZXBsYXlQdHIpID8gcmVwbGF5UHRyIDogcmVjZWl2ZVB0cjsKIAlLZWVwTG9n U2VnKGVuZHB0ciwgJl9sb2dTZWdObyk7Ci0JaWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxp Y2F0aW9uU2xvdHMoX2xvZ1NlZ05vKSkKKwlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyhfbG9nU2VnTm8sIEludmFsaWRPaWQsIE5VTEwpKQogCXsKIAkJLyoKIAkJ ICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBv bGQtc2VnbWVudApAQCAtNzk2Myw2ICs3OTYzLDIyIEBAIHhsb2dfcmVkbyhYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRlIG91ciBjb3B5IG9mIHRoZSBwYXJhbWV0ZXJz IGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5KCZ4bHJlYywgWExvZ1JlY0dldERhdGEocmVj b3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9jaGFuZ2UpKTsKIAorCQkvKgorCQkgKiBJbnZh bGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2UgYXJlIGluIGhvdCBzdGFuZGJ5IGFuZCB0aGUg cHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZlIGEgV0FMIGxldmVsIHN1ZmZpY2llbnQgZm9y IGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQgdG8gc2VhcmNoCisJCSAqIGZvciBwb3RlbnRp YWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkgc2xvdHMgaWYgc3RhbmRieSBpcyBydW5uaW5n CisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2VyIHRoYW4gbG9naWNhbCwgYmVjYXVzZSBpbiB0 aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhhdmUgZWl0aGVyIGRpc2FsbG93ZWQgY3JlYXRp b24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZhbGlkYXRlZCBleGlzdGluZworCQkgKiBvbmVz LgorCQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5Ib3RTdGFuZGJ5ICYmCisJCQl4bHJl Yy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAmJgorCQkJd2FsX2xldmVsID49IFdB TF9MRVZFTF9MT0dJQ0FMKQorCQl7CisJCQlUcmFuc2FjdGlvbklkIENvbmZsaWN0SG9yaXpv biA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwgSW52YWxpZE9pZCwgJkNvbmZsaWN0SG9y aXpvbik7CisJCX0KKwogCQlMV0xvY2tBY3F1aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhD TFVTSVZFKTsKIAkJQ29udHJvbEZpbGUtPk1heENvbm5lY3Rpb25zID0geGxyZWMuTWF4Q29u bmVjdGlvbnM7CiAJCUNvbnRyb2xGaWxlLT5tYXhfd29ya2VyX3Byb2Nlc3NlcyA9IHhscmVj Lm1heF93b3JrZXJfcHJvY2Vzc2VzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCmluZGV4IDU3NGNiYzJlNDQuLjNhODA4OGFjMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwKQEAgLTk5OSw3ICs5OTksOCBAQCBDUkVBVEUgVklFVyBwZ19y ZXBsaWNhdGlvbl9zbG90cyBBUwogICAgICAgICAgICAgTC5jb25maXJtZWRfZmx1c2hfbHNu LAogICAgICAgICAgICAgTC53YWxfc3RhdHVzLAogICAgICAgICAgICAgTC5zYWZlX3dhbF9z aXplLAotICAgICAgICAgICAgTC50d29fcGhhc2UKKyAgICAgICAgICAgIEwudHdvX3BoYXNl LAorICAgICAgICAgICAgTC5jb25mbGljdGluZwogICAgIEZST00gcGdfZ2V0X3JlcGxpY2F0 aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQg T04gKEwuZGF0b2lkID0gRC5vaWQpOwogCkBAIC0xMDY3LDcgKzEwNjgsOCBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAgICAgICAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxfbG9jaywKICAgICAgICAg ICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQub2lkKSBBUyBjb25mbF9z bmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBp bihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAgICAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sK KyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2so RC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xv dAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2Vy X2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0MWEyYi4uMDcwZmQzNzhlOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0y MTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBiaW4KIAogCQkvKgogCQkg KiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBpbiBDcmVhdGVEZWNvZGluZ0NvbnRleHQsIG1h a2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9sc24gaXMgdmFsaWQuICBBdm9pZCAiY2Fubm90 IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKLQkJICogZXJybXNnIGJlY2F1c2UgdGhh dCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2VzCi0JCSAqIGJl aW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFydF9sc24gaXMgdmFsaWQgb3IgYm90aCB4bWlu IGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlkLiBBdm9pZAorCQkgKiAiY2Fubm90IGdldCBj aGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJybXNnIGJlY2F1c2UgdGhhdCdkIGJlCisJCSAq IGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2VzIGJlaW5nIGF2YWlsYWJs ZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90 LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMjcsNiArMjI3 LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJCQkJCQkJTmFtZVN0cigqbmFt ZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIG5ldmVyIHByZXZpb3VzbHkg cmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZC4iKSkpOwogCisJCWlm IChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90KSkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgcmVhZCBmcm9t IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCU5hbWVTdHIoKm5h bWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVk IGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3ZlcnkuIikpKTsKKwogCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwppbmRleCAyMjkzYzBjNmZjLi41ZmY4NDMwNDdjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCkBAIC04NTUsOCArODU1LDcgQEAgUmVwbGljYXRpb25TbG90c0NvbXB1 dGVSZXF1aXJlZFhtaW4oYm9vbCBhbHJlYWR5X2xvY2tlZCkKIAkJU3BpbkxvY2tBY3F1aXJl KCZzLT5tdXRleCk7CiAJCWVmZmVjdGl2ZV94bWluID0gcy0+ZWZmZWN0aXZlX3htaW47CiAJ CWVmZmVjdGl2ZV9jYXRhbG9nX3htaW4gPSBzLT5lZmZlY3RpdmVfY2F0YWxvZ194bWluOwot CQlpbnZhbGlkYXRlZCA9ICghWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLmludmFsaWRh dGVkX2F0KSAmJgotCQkJCQkgICBYTG9nUmVjUHRySXNJbnZhbGlkKHMtPmRhdGEucmVzdGFy dF9sc24pKTsKKwkJaW52YWxpZGF0ZWQgPSBTbG90SXNJbnZhbGlkKHMpOwogCQlTcGluTG9j a1JlbGVhc2UoJnMtPm11dGV4KTsKIAogCQkvKiBpbnZhbGlkYXRlZCBzbG90cyBuZWVkIG5v dCBhcHBseSAqLwpAQCAtMTIyNiwyMCArMTIyNSwyMSBAQCBSZXBsaWNhdGlvblNsb3RSZXNl cnZlV2FsKHZvaWQpCiB9CiAKIC8qCi0gKiBIZWxwZXIgZm9yIEludmFsaWRhdGVPYnNvbGV0 ZVJlcGxpY2F0aW9uU2xvdHMgLS0gYWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QKLSAqIGFuZCBt YXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCisgKiBIZWxwZXIg Zm9yIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMKKyAqCisgKiBBY3F1aXJl cyB0aGUgZ2l2ZW4gc2xvdCBhbmQgbWFyayBpdCBpbnZhbGlkLCBpZiBuZWNlc3NhcnkgYW5k IHBvc3NpYmxlLgogICoKICAqIFJldHVybnMgd2hldGhlciBSZXBsaWNhdGlvblNsb3RDb250 cm9sTG9jayB3YXMgcmVsZWFzZWQgaW4gdGhlIGludGVyaW0gKGFuZAogICogaW4gdGhhdCBj YXNlIHdlJ3JlIG5vdCBob2xkaW5nIHRoZSBsb2NrIGF0IHJldHVybiwgb3RoZXJ3aXNlIHdl IGFyZSkuCiAgKgotICogU2V0cyAqaW52YWxpZGF0ZWQgdHJ1ZSBpZiB0aGUgc2xvdCB3YXMg aW52YWxpZGF0ZWQuIChVbnRvdWNoZWQgb3RoZXJ3aXNlLikKKyAqIFNldHMgKmludmFsaWRh dGVkIHRydWUgaWYgYW4gb2Jzb2xldGUgc2xvdCB3YXMgaW52YWxpZGF0ZWQuIChVbnRvdWNo ZWQgb3RoZXJ3aXNlLikKICAqCiAgKiBUaGlzIGlzIGluaGVyZW50bHkgcmFjeSwgYmVjYXVz ZSB3ZSByZWxlYXNlIHRoZSBMV0xvY2sKICAqIGZvciBzeXNjYWxscywgc28gY2FsbGVyIG11 c3QgcmVzdGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KICAqLwogc3RhdGljIGJvb2wKIEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQ dHIgb2xkZXN0TFNOLAotCQkJCQkJCSAgIGJvb2wgKmludmFsaWRhdGVkKQorCQkJCQkJCSAg IGJvb2wgKmludmFsaWRhdGVkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7CiAJaW50CQkJbGFz dF9zaWduYWxlZF9waWQgPSAwOwogCWJvb2wJCXJlbGVhc2VkX2xvY2sgPSBmYWxzZTsKQEAg LTEyNDcsNiArMTI0NywxMSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVw bGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAlmb3IgKDs7KQogCXsK IAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsKKwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47 CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisJCVN0cmluZ0luZm9EYXRh IGVycl9tc2c7CisJCVN0cmluZ0luZm9EYXRhIGVycl9kZXRhaWw7CisKIAkJTmFtZURhdGEJ c2xvdG5hbWU7CiAJCWludAkJCWFjdGl2ZV9waWQgPSAwOwogCkBAIC0xMjYzLDE5ICsxMjY4 LDIzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3Qg KnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkgKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVk cyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVlZHMgdG8gYmUKIAkJICogaW52YWxpZGF0 ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVpcmVkLCBhY3F1aXJlIGl0IGFuZCBtYXJr IGl0CiAJCSAqIGFzIGhhdmluZyBiZWVuIGludmFsaWRhdGVkLiAgV2UgZG8gdGhpcyB3aXRo IHRoZSBzcGlubG9jayBoZWxkIHRvCi0JCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBm b3IgZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gY291bGQgbW92ZQotCQkgKiBmb3J3YXJkLCBv ciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgorCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlv bnMgLS0gZm9yIGV4YW1wbGUgdGhlIHJlc3RhcnRfbHNuIChvciB0aGUKKwkJICogeG1pbihz KSBjb3VsZCkgbW92ZSBmb3J3YXJkIG9yIHRoZSBzbG90IGNvdWxkIGJlIGRyb3BwZWQuCiAJ CSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAogCQlyZXN0YXJ0X2xzbiA9 IHMtPmRhdGEucmVzdGFydF9sc247Ci0KLQkJLyoKLQkJICogSWYgdGhlIHNsb3QgaXMgYWxy ZWFkeSBpbnZhbGlkIG9yIGlzIGZyZXNoIGVub3VnaCwgd2UgZG9uJ3QgbmVlZCB0bwotCQkg KiBkbyBhbnl0aGluZy4KLQkJICovCi0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3Rh cnRfbHNuKSB8fCByZXN0YXJ0X2xzbiA+PSBvbGRlc3RMU04pCisJCXNsb3RfeG1pbiA9IHMt PmRhdGEueG1pbjsKKwkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1p bjsKKworCQkvKiB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAobG9naWNhbCBkZWNv ZGluZyBjb25mbGljdCBjYXNlKSAqLworCQlpZiAoKHhpZCAmJiAoKExvZ2ljYWxSZXBsaWNh dGlvblNsb3RJc0ludmFsaWQocykpIHx8CisJCS8qIG9yIHRoZSB4aWQgaXMgdmFsaWQgYW5k IHRoaXMgaXMgYSBub24gY29uZmxpY3Rpbmcgc2xvdCAqLworCQkJCQkgKFRyYW5zYWN0aW9u SWRJc1ZhbGlkKCp4aWQpICYmICEoTG9naWNhbFJlcGxpY2F0aW9uU2xvdFhpZHNDb25mbGlj dChzbG90X3htaW4sIHNsb3RfY2F0YWxvZ194bWluLCAqeGlkKSkpKSkgfHwKKwkJLyogb3Ig dGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKG9ic29sZXRlIExTTiBjYXNlKSAqLwor CQkJKCF4aWQgJiYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8IHJlc3Rh cnRfbHNuID49IG9sZGVzdExTTikpKQogCQl7CisJCQkvKiB0aGVuLCB3ZSBhcmUgbm90IGZv cmNpbmcgZm9yIGludmFsaWRhdGlvbiAqLwogCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRl eCk7CiAJCQlpZiAocmVsZWFzZWRfbG9jaykKIAkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0 aW9uU2xvdENvbnRyb2xMb2NrKTsKQEAgLTEyOTQsOSArMTMwMywxNiBAQCBJbnZhbGlkYXRl UG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9s ZGVzdExTTiwKIAkJewogCQkJTXlSZXBsaWNhdGlvblNsb3QgPSBzOwogCQkJcy0+YWN0aXZl X3BpZCA9IE15UHJvY1BpZDsKLQkJCXMtPmRhdGEuaW52YWxpZGF0ZWRfYXQgPSByZXN0YXJ0 X2xzbjsKLQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQor CQkJaWYgKHhpZCkKKwkJCXsKKwkJCQlzLT5kYXRhLnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwkJCQlzLT5kYXRhLmNhdGFsb2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXMtPmRhdGEuaW52YWxpZGF0ZWRfYXQgPSBy ZXN0YXJ0X2xzbjsKKwkJCQlzLT5kYXRhLnJlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQ dHI7CisJCQl9CiAJCQkvKiBMZXQgY2FsbGVyIGtub3cgKi8KIAkJCSppbnZhbGlkYXRlZCA9 IHRydWU7CiAJCX0KQEAgLTEzMjksMTYgKzEzNDUsNDUgQEAgSW52YWxpZGF0ZVBvc3NpYmx5 T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04s CiAJCQkgKi8KIAkJCWlmIChsYXN0X3NpZ25hbGVkX3BpZCAhPSBhY3RpdmVfcGlkKQogCQkJ eworCQkJCWJvb2wJCXNlbmRfc2lnbmFsID0gZmFsc2U7CisKKwkJCQlpbml0U3RyaW5nSW5m bygmZXJyX21zZyk7CisJCQkJaW5pdFN0cmluZ0luZm8oJmVycl9kZXRhaWwpOworCisJCQkJ YXBwZW5kU3RyaW5nSW5mbygmZXJyX21zZywgInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgdG8g cmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJCSBhY3RpdmVfcGlk LAorCQkJCQkJCQkgTmFtZVN0cihzbG90bmFtZSkpOworCQkJCWlmICh4aWQpCisJCQkJewor CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfbXNnLCAiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiKTsKKwkJCQkJc2VuZF9zaWduYWwgPSB0cnVlOworCisJCQkJCWlm IChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm8o JmVycl9kZXRhaWwsICJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUu IiwgKnhpZCk7CisJCQkJCWVsc2UKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRh aWwsICJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRv IGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIik7CisJCQkJfQor CQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsICJU aGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUg Ynl0ZXMuIiwKKwkJCQkJCQkJCSBMU05fRk9STUFUX0FSR1MocmVzdGFydF9sc24pLAorCQkJ CQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikp OworCQkJCX0KKwogCQkJCWVyZXBvcnQoTE9HLAotCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGlu ZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAotCQkJ CQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKLQkJCQkJCWVycmRldGFp bCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAl bGx1IGJ5dGVzLiIsCi0JCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwK LQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9s c24pKSwKLQkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9z bG90X3dhbF9rZWVwX3NpemUuIikpOwotCi0JCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3BpZCwg U0lHVEVSTSk7CisJCQkJCQllcnJtc2coIiVzIiwgZXJyX21zZy5kYXRhKSwKKwkJCQkJCWVy cmRldGFpbCgiJXMiLCBlcnJfZGV0YWlsLmRhdGEpLAorCQkJCQkJc2VuZF9zaWduYWwgPyAw IDogZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tl ZXBfc2l6ZS4iKSk7CisKKwkJCQlpZiAoc2VuZF9zaWduYWwpCisJCQkJCSh2b2lkKSBTZW5k UHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lD QUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsKKwkJCQllbHNlCisJCQkJCSh2b2lkKSBraWxs KGFjdGl2ZV9waWQsIFNJR1RFUk0pOworCiAJCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3Rp dmVfcGlkOworCisJCQkJcGZyZWUoZXJyX21zZy5kYXRhKTsKKwkJCQlwZnJlZShlcnJfZGV0 YWlsLmRhdGEpOwogCQkJfQogCiAJCQkvKiBXYWl0IHVudGlsIHRoZSBzbG90IGlzIHJlbGVh c2VkLiAqLwpAQCAtMTM1NSw2ICsxNDAwLDExIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQl9 CiAJCWVsc2UKIAkJeworCQkJYm9vbAkJaGludCA9IGZhbHNlOzsKKworCQkJaW5pdFN0cmlu Z0luZm8oJmVycl9tc2cpOworCQkJaW5pdFN0cmluZ0luZm8oJmVycl9kZXRhaWwpOworCiAJ CQkvKgogCQkJICogV2UgaG9sZCB0aGUgc2xvdCBub3cgYW5kIGhhdmUgYWxyZWFkeSBpbnZh bGlkYXRlZCBpdDsgZmx1c2ggaXQKIAkJCSAqIHRvIGVuc3VyZSB0aGF0IHN0YXRlIHBlcnNp c3RzLgpAQCAtMTM3MCwxNCArMTQyMCwzNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0 ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJCVJl cGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSgpOwogCQkJUmVwbGljYXRpb25TbG90U2F2ZSgpOwog CQkJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOworCQkJcGdzdGF0X2Ryb3BfcmVwbHNsb3Qo cyk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9tc2csICJpbnZhbGlkYXRpbmciKTsK KworCQkJaWYgKHhpZCkKKwkJCXsKKwkJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoKnhp ZCkpCisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsICJUaGUgc2xvdCBjb25m bGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwgKnhpZCk7CisJCQkJZWxzZQorCQkJCQlh cHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLCAiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFu ZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBw cmltYXJ5IHNlcnZlciIpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmVycl9tc2csICIgb2Jzb2xldGUgcmVwbGljYXRpb24iKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvKCZlcnJfZGV0YWlsLCAiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBl eGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJCQkJCSBMU05fRk9STUFU X0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSk7CisJCQkJaGludCA9IHRydWU7CisJCQl9CisKKwkJ CWFwcGVuZFN0cmluZ0luZm8oJmVycl9tc2csICIgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBj b25mbGljdHMgd2l0aCByZWNvdmVyeSIsCisJCQkJCQkJIE5hbWVTdHIoc2xvdG5hbWUpKTsK KwogCiAJCQllcmVwb3J0KExPRywKLQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcgb2Jzb2xl dGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAotCQkJCQkJICAgTmFtZVN0cihzbG90bmFt ZSkpLAotCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCSAgTFNOX0ZPUk1BVF9B UkdTKHJlc3RhcnRfbHNuKSwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRl c3RMU04gLSByZXN0YXJ0X2xzbikpLAotCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0 byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCQkJZXJybXNnKCIl cyIsIGVycl9tc2cuZGF0YSksCisJCQkJCWVycmRldGFpbCgiJXMiLCBlcnJfZGV0YWlsLmRh dGEpLAorCQkJCQloaW50ID8gZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2Ug bWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSA6IDApOworCisJCQlwZnJlZShlcnJfbXNnLmRh dGEpOworCQkJcGZyZWUoZXJyX2RldGFpbC5kYXRhKTsKIAogCQkJLyogZG9uZSB3aXRoIHRo aXMgc2xvdCBmb3Igbm93ICovCiAJCQlicmVhazsKQEAgLTEzOTAsMjAgKzE0NjMsMzYgQEAg SW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExv Z1JlY1B0ciBvbGRlc3RMU04sCiB9CiAKIC8qCi0gKiBNYXJrIGFueSBzbG90IHRoYXQgcG9p bnRzIHRvIGFuIExTTiBvbGRlciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50Ci0gKiBhcyBpbnZh bGlkOyBpdCByZXF1aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKiBJ bnZhbGlkYXRlIE9ic29sZXRlIHNsb3RzIG9yIHJlc29sdmUgcmVjb3ZlcnkgY29uZmxpY3Rz IHdpdGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBPYnNvbGV0ZSBjYXNlIChha2EgeGlkIGlz IE5VTEwpOgogICoKLSAqIFJldHVybnMgdHJ1ZSB3aGVuIGFueSBzbG90IGhhdmUgZ290IGlu dmFsaWRhdGVkLgorICoJIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNOIG9s ZGVyIHRoYW4gdGhlIGdpdmVuIHNlZ21lbnQKKyAqCSBhcyBpbnZhbGlkOyBpdCByZXF1aXJl cyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKgkgaW52YWxpZGF0ZWQgaXMg c2V0IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KICAqCi0g KiBOQiAtIHRoaXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9pbnQsIHNvIGF2b2lkIHJhaXNp bmcgZXJyb3JzIGlmIHBvc3NpYmxlLgorICogIExvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBj YXNlOgorICoKKyAqCSBXaGVuIHhpZCBpcyB2YWxpZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUg YWJvdXQgdG8gcmVtb3ZlIHJvd3Mgb2xkZXIgdGhhbiB4aWQuCisgKgkgVGhlcmVmb3JlIHdl IG5lZWQgdG8gaW52YWxpZGF0ZSBzbG90cyB0aGF0IGRlcGVuZCBvbiBzZWVpbmcgdGhvc2Ug cm93cy4KKyAqCSBXaGVuIHhpZCBpcyBpbnZhbGlkLCBpbnZhbGlkYXRlIGFsbCBsb2dpY2Fs IHNsb3RzLiBUaGlzIGlzIHJlcXVpcmVkIHdoZW4gdGhlCisgKgkgbWFzdGVyIHdhbF9sZXZl bCBpcyBzZXQgYmFjayB0byByZXBsaWNhLCBzbyBleGlzdGluZyBsb2dpY2FsIHNsb3RzIG5l ZWQgdG8KKyAqCSBiZSBpbnZhbGlkYXRlZC4KICAqLwogYm9vbAotSW52YWxpZGF0ZU9ic29s ZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pCitJbnZhbGlkYXRl T2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgT2lkIGRi b2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExvZ1JlY1B0cglvbGRlc3RMU047CisK KwlYTG9nUmVjUHRyCW9sZGVzdExTTiA9IEludmFsaWRYTG9nUmVjUHRyOwogCWJvb2wJCWlu dmFsaWRhdGVkID0gZmFsc2U7CiAKLQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihvbGRlc3RT ZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsKKwlBc3NlcnQobWF4X3Jl cGxpY2F0aW9uX3Nsb3RzID49IDApOworCisJaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9 PSAwKQorCQlyZXR1cm4gaW52YWxpZGF0ZWQ7CisKKwlpZiAoIXhpZCkKKwkJWExvZ1NlZ05v T2Zmc2V0VG9SZWNQdHIob2xkZXN0U2Vnbm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIG9sZGVz dExTTik7CiAKIHJlc3RhcnQ6CiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250 cm9sTG9jaywgTFdfU0hBUkVEKTsKQEAgLTE0MTQsMjEgKzE1MDMsMzUgQEAgcmVzdGFydDoK IAkJaWYgKCFzLT5pbl91c2UpCiAJCQljb250aW51ZTsKIAotCQlpZiAoSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KHMsIG9sZGVzdExTTiwgJmludmFsaWRhdGVkKSkKKwkJaWYg KHhpZCkKIAkJewotCQkJLyogaWYgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLCBzdGFydCBmcm9t IHNjcmF0Y2ggKi8KLQkJCWdvdG8gcmVzdGFydDsKKwkJCS8qIHdlIGFyZSBvbmx5IGRlYWxp bmcgd2l0aCAqbG9naWNhbCogc2xvdCBjb25mbGljdHMgKi8KKwkJCWlmICghU2xvdElzTG9n aWNhbChzKSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIG5vdCB0aGUgZGF0YWJh c2Ugb2YgaW50ZXJlc3QgYW5kIHdlIGRvbid0IHdhbnQgYWxsIHRoZQorCQkJICogZGF0YWJh c2UsIHNraXAKKwkJCSAqLworCQkJaWYgKHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQgJiYg VHJhbnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJY29udGludWU7CiAJCX0KKworCQlp ZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHMsIG9sZGVzdExTTiwgJmludmFs aWRhdGVkLCB4aWQpKQorCQkJZ290byByZXN0YXJ0OwogCX0KKwogCUxXTG9ja1JlbGVhc2Uo UmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCiAJLyoKLQkgKiBJZiBhbnkgc2xvdHMg aGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUgcmVzb3VyY2UgbGltaXRz LgorCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRl IHRoZSByZXF1aXJlZCB4bWluIGFuZAorCSAqIHRoZSByZXF1aXJlZCBsc24gKGlmIGFwcHJv cHJpYXRlKS4KIAkgKi8KIAlpZiAoaW52YWxpZGF0ZWQpCiAJewogCQlSZXBsaWNhdGlvblNs b3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7Ci0JCVJlcGxpY2F0aW9uU2xvdHNDb21w dXRlUmVxdWlyZWRMU04oKTsKKwkJaWYgKCF4aWQpCisJCQlSZXBsaWNhdGlvblNsb3RzQ29t cHV0ZVJlcXVpcmVkTFNOKCk7CiAJfQogCiAJcmV0dXJuIGludmFsaWRhdGVkOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAyZjNjOTY0ODI0Li40MjA3ZDE0YWUw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAtMjMyLDcgKzIzMiw3 IEBAIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0K IHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmlu ZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNAorI2RlZmluZSBQR19HRVRfUkVQ TElDQVRJT05fU0xPVFNfQ09MUyAxNQogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1 cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlYTG9nUmVjUHRyCWN1cnJsc247 CiAJaW50CQkJc2xvdG5vOwpAQCAtMzE5LDggKzMxOSw3IEBAIHBnX2dldF9yZXBsaWNhdGlv bl9zbG90cyhQR19GVU5DVElPTl9BUkdTKQogCQkgKiBjZXJ0YWluIHRoYXQgdGhlIHNsb3Qg aGFzIGJlZW4gaW52YWxpZGF0ZWQuICBPdGhlcndpc2UsIHRlc3QKIAkJICogYXZhaWxhYmls aXR5IGZyb20gcmVzdGFydF9sc24uCiAJCSAqLwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZChzbG90X2NvbnRlbnRzLmRhdGEucmVzdGFydF9sc24pICYmCi0JCQkhWExvZ1JlY1B0cklz SW52YWxpZChzbG90X2NvbnRlbnRzLmRhdGEuaW52YWxpZGF0ZWRfYXQpKQorCQlpZiAoT2Jz b2xldGVTbG90SXNJbnZhbGlkKHNsb3QpKQogCQkJd2Fsc3RhdGUgPSBXQUxBVkFJTF9SRU1P VkVEOwogCQllbHNlCiAJCQl3YWxzdGF0ZSA9IEdldFdBTEF2YWlsYWJpbGl0eShzbG90X2Nv bnRlbnRzLmRhdGEucmVzdGFydF9sc24pOwpAQCAtNDA0LDYgKzQwMywxNyBAQCBwZ19nZXRf cmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykKIAogCQl2YWx1ZXNbaSsrXSA9 IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEudHdvX3BoYXNlKTsKIAorCQlpZiAo c2xvdF9jb250ZW50cy5kYXRhLmRhdGFiYXNlID09IEludmFsaWRPaWQpCisJCQludWxsc1tp KytdID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlpZiAoc2xvdF9jb250ZW50cy5kYXRhLnht aW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKKwkJCQlzbG90X2NvbnRlbnRzLmRhdGEu Y2F0YWxvZ194bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQkJCXZhbHVlc1tpKytd ID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJZWxzZQorCQkJCXZhbHVlc1tpKytdID0gQm9v bEdldERhdHVtKGZhbHNlKTsKKwkJfQorCiAJCUFzc2VydChpID09IFBHX0dFVF9SRVBMSUNB VElPTl9TTE9UU19DT0xTKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNl dFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwppbmRleCA3NWU4MzYzZTI0Li5iNjg2NjkxY2EyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYwpAQCAtMTI1Myw2ICsxMjUzLDEzIEBAIFN0YXJ0TG9naWNhbFJl cGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCVJlcGxpY2F0aW9uU2xv dEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSk7CiAKKwlpZiAoTG9naWNhbFJlcGxpY2F0 aW9uU2xvdElzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJCSBlcnJkZXRhaWwo IlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGlj dGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChN eVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMzk1YjJjZjY5 MC4uYzg1Y2I1Y2MxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpA QCAtNjczLDYgKzY3Myw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9B UkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9T TkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50 ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYg KENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVB RExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYwppbmRleCA5ZjU2YjRlOTVjLi5jNjIyNDVhZmM3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1 dGlscy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Yy5oIgpAQCAtNDY2LDYgKzQ2Nyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZp cnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKICAqLwogdm9pZAog UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9nUmVsLAogCQkJ CQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25J ZCAqYmFja2VuZHM7CkBAIC00OTEsNiArNDkzLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK IAkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJ CQkJCQkJCSAgIFdBSVRfRVZFTlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJ CQkJCQkJICAgdHJ1ZSk7CisKKwlpZiAod2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FM ICYmIGlzQ2F0YWxvZ1JlbCkKKwkJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90 cyhJbnZhbGlkWExvZ1JlY1B0ciwgbG9jYXRvci5kYk9pZCwgJnNuYXBzaG90Q29uZmxpY3RI b3Jpem9uKTsKIH0KIAogLyoKQEAgLTQ5OSw2ICs1MDQsNyBAQCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uLAogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1 bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJ CQkJCQkJICAgYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0 b3IgbG9jYXRvcikKIHsKIAkvKgpAQCAtNTE3LDcgKzUyMyw5IEBAIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yCiAJCVRyYW5zYWN0aW9uSWQgdHJ1bmNhdGVkOwogCiAJCXRydW5jYXRl ZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7 Ci0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwgbG9j YXRvcik7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRl ZCwKKwkJCQkJCQkJCQkJaXNDYXRhbG9nUmVsLAorCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9 CiB9CiAKQEAgLTE0NzgsNiArMTQ4Niw5IEBAIGdldF9yZWNvdmVyeV9jb25mbGljdF9kZXNj KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfU05BUFNIT1Q6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qg b24gc25hcHNob3QiKTsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxp Y3Qgb24gcmVwbGljYXRpb24gc2xvdCIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJcmVhc29uRGVzYyA9IF8o InJlY292ZXJ5IGNvbmZsaWN0IG9uIGJ1ZmZlciBkZWFkbG9jayIpOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKaW5kZXggY2FiNzA5YjA3Yi4uZTFjNDVlYjJhZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwpAQCAtMjQ4OCw2ICsyNDg4LDkgQEAgZXJyZGV0YWlsX3JlY292ZXJ5X2Nv bmZsaWN0KHZvaWQpCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hP VDoKIAkJCWVycmRldGFpbCgiVXNlciBxdWVyeSBtaWdodCBoYXZlIG5lZWRlZCB0byBzZWUg cm93IHZlcnNpb25zIHRoYXQgbXVzdCBiZSByZW1vdmVkLiIpOwogCQkJYnJlYWs7CisJCWNh c2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWVycmRldGFp bCgiVXNlciB3YXMgdXNpbmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0IG11c3QgYmUgZHJvcHBl ZC4iKTsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSzoKIAkJCWVycmRldGFpbCgiVXNlciB0cmFuc2FjdGlvbiBjYXVzZWQg YnVmZmVyIGRlYWRsb2NrIHdpdGggcmVjb3ZlcnkuIik7CiAJCQlicmVhazsKQEAgLTMwOTks NiArMzEwMiwzMSBAQCBSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFz b24gcmVhc29uKQogCQkJCS8qIEludGVudGlvbmFsIGZhbGwgdGhyb3VnaCB0byBzZXNzaW9u IGNhbmNlbCAqLwogCQkJCS8qIEZBTExUSFJPVUdIICovCiAKKwkJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKworCQkJCS8qCisJCQkJICogRm9yIGNv bmZsaWN0cyB0aGF0IHJlcXVpcmUgYSBsb2dpY2FsIHNsb3QgdG8gYmUKKwkJCQkgKiBpbnZh bGlkYXRlZCwgdGhlIHJlcXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2VpdmVyIHRv CisJCQkJICogcmVsZWFzZSB0aGUgc2xvdCwgc28gdGhhdCBpdCBjb3VsZCBiZSBpbnZhbGlk YXRlZCBieSB0aGUKKwkJCQkgKiBzaWduYWwgc2VuZGVyLiBTbyBmb3Igbm9ybWFsIGJhY2tl bmRzLCB0aGUgdHJhbnNhY3Rpb24KKwkJCQkgKiBzaG91bGQgYmUgYWJvcnRlZCwganVzdCBs aWtlIGZvciBvdGhlciByZWNvdmVyeSBjb25mbGljdHMuCisJCQkJICogQnV0IGlmIGl0J3Mg d2Fsc2VuZGVyIG9uIHN0YW5kYnksIHdlIGRvbid0IHdhbnQgdG8gZ28KKwkJCQkgKiB0aHJv dWdoIHRoZSBmb2xsb3dpbmcgSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpCisJ CQkJICogY2hlY2ssIHNvIGJyZWFrIGhlcmUuCisJCQkJICovCisJCQkJaWYgKGFtX2Nhc2Nh ZGluZ193YWxzZW5kZXIgJiYKKwkJCQkJcmVhc29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfTE9HSUNBTFNMT1QgJiYKKwkJCQkJTXlSZXBsaWNhdGlvblNsb3QgJiYgU2xvdElz TG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCQkJeworCQkJCQlSZWNvdmVyeUNvbmZs aWN0UGVuZGluZyA9IHRydWU7CisJCQkJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7CisJ CQkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJ CQkvKiBJbnRlbnRpb25hbCBmYWxsIHRocm91Z2ggdG8gc2Vzc2lvbiBjYW5jZWwgKi8KKwkJ CQkvKiBGQUxMVEhST1VHSCAqLworCiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfREFUQUJBU0U6CiAJCQkJUmVjb3ZlcnlDb25mbGljdFBlbmRpbmcgPSB0cnVlOwogCQkJ CVByb2NEaWVQZW5kaW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggNmU2NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAg LTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVwb3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCBy ZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJ CQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJwaW4rKzsKIAkJCWJyZWFrOworCQljYXNlIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQlkYmVudHJ5LT5jb25m bGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3Rh cnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CkBAIC0zODcsNiArMzkwLDcgQEAgcGdzdGF0 X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5v d2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF90YWJsZXNwYWNlKTsKIAlQ R1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9sb2NrKTsKIAlQR1NUQVRfQUNDVU1fREJD T1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxp Y3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZl cnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9j ayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggZWVjOWYzY2Y5 Yi4uNGRlNjBkOGFhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAg LTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRfR0VUX0RCRU5UUllfSU5UNjQoeGFjdF9jb21t aXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0X3JvbGxiYWNrICovCiBQR19TVEFUX0dFVF9E QkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2spCiAKKy8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0 X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdfc3RhdF9nZXRfZGJfc3RhdF9yZXNldF90aW1l KFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5LDYgKzExMDEsNyBAQCBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAkJcmVzdWx0ID0gKGludDY0KSAo ZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZs aWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9zbmFwc2hvdCArCisJCQkJ CQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2ljYWxzbG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+ Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1 cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGY5ZjI2NDIy MDEuLmJjYmFlOTAzNmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTYwNSw2 ICs1NjA1LDExIEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3Nu YXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHBy b3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcgfSwKK3sgb2lkID0+ICc5OTAx JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRh YmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90JywKKyAgcHJvbmFtZSA9 PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9 PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHBy b2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4gJzMwNjgnLAogICBkZXNjciA9PiAnc3Rh dGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGluIGRhdGFiYXNlIGNhdXNlZCBieSBzaGFy ZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdzJywKQEAgLTExMDcxLDkgKzExMDc2LDkg QEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzJywgcHJvcm93cyA9 PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3Zv bGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywKICAgcHJvYXJndHlwZXMg PT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJvb2ws Ym9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0ZXh0LGludDgsYm9vbH0nLAotICBw cm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9h cmduYW1lcyA9PiAne3Nsb3RfbmFtZSxwbHVnaW4sc2xvdF90eXBlLGRhdG9pZCx0ZW1wb3Jh cnksYWN0aXZlLGFjdGl2ZV9waWQseG1pbixjYXRhbG9nX3htaW4scmVzdGFydF9sc24sY29u ZmlybWVkX2ZsdXNoX2xzbix3YWxfc3RhdHVzLHNhZmVfd2FsX3NpemUsdHdvX3BoYXNlfScs CisgIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxp bnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0ZXh0LGludDgsYm9vbCxib29sfScsCisgIHBy b2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJv YXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9y YXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNv bmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxj b25mbGljdGluZ30nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycg fSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3IgPT4gJ3NldCB1cCBhIGxvZ2ljYWwgcmVwbGlj YXRpb24gc2xvdCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0 aW9uX3Nsb3QnLCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDc1ZDI1OGQ5MjEuLmZh M2QzMjZkODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCkBAIC0zMzEsNiArMzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdT dGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfdGFibGVzcGFjZTsK IAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9sb2NrOwogCVBnU3RhdF9Db3VudGVyIGNvbmZs aWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2xvZ2ljYWxzbG90Owog CVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2J1ZmZlcnBpbjsKIAlQZ1N0YXRfQ291bnRlciBj b25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwogCVBnU3RhdF9Db3VudGVyIHRlbXBfZmlsZXM7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggODg3MmM4MGNkZi4uMDEzY2QyYjRkMCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMTcsNiArMTcsMTcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5o IgogCisjZGVmaW5lIE9ic29sZXRlU2xvdElzSW52YWxpZChzKSAoIVhMb2dSZWNQdHJJc0lu dmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYgXAorCQkJCQkJCQkgIFhMb2dSZWNQ dHJJc0ludmFsaWQocy0+ZGF0YS5yZXN0YXJ0X2xzbikpCisKKyNkZWZpbmUgTG9naWNhbFJl cGxpY2F0aW9uU2xvdElzSW52YWxpZChzKSAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRh dGEueG1pbikgJiYgXAorCQkJCQkJCQkJCQkhVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0 YS5jYXRhbG9nX3htaW4pKQorCisjZGVmaW5lIFNsb3RJc0ludmFsaWQocykgKE9ic29sZXRl U2xvdElzSW52YWxpZChzKSB8fCBMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkIChz KSkKKworI2RlZmluZSBMb2dpY2FsUmVwbGljYXRpb25TbG90WGlkc0NvbmZsaWN0KHNsb3Rf eG1pbiwgY2F0YWxvZ194bWluLCB4aWQpIFwKKwkJKChUcmFuc2FjdGlvbklkSXNWYWxpZChz bG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfeG1pbiwg eGlkKSkgfHwgXAorCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3htaW4p ICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfY2F0YWxvZ194bWluLCB4 aWQpKSkKIC8qCiAgKiBCZWhhdmlvdXIgb2YgcmVwbGljYXRpb24gc2xvdHMsIHVwb24gcmVs ZWFzZSBvciBjcmFzaC4KICAqCkBAIC0yMTUsNyArMjI2LDcgQEAgZXh0ZXJuIHZvaWQgUmVw bGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTih2b2lkKTsKIGV4dGVybiBYTG9nUmVj UHRyIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlTG9naWNhbFJlc3RhcnRMU04odm9pZCk7CiBl eHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9pZCwgaW50 ICpuc2xvdHMsIGludCAqbmFjdGl2ZSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3Rz RHJvcERCU2xvdHMoT2lkIGRib2lkKTsKLWV4dGVybiBib29sIEludmFsaWRhdGVPYnNvbGV0 ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKTsKK2V4dGVybiBib29s IEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNl Z25vLCBPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgKnhpZCk7CiBleHRlcm4gUmVwbGljYXRp b25TbG90ICpTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBi b29sIG5lZWRfbG9jayk7CiBleHRlcm4gaW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJlcGxp Y2F0aW9uU2xvdCAqc2xvdCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1lKGlu dCBpbmRleCwgTmFtZSBuYW1lKTsKQEAgLTIyNyw1ICsyMzgsNiBAQCBleHRlcm4gdm9pZCBD aGVja1BvaW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tT bG90UmVxdWlyZW1lbnRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UGVybWlzc2lv bnModm9pZCk7CitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dp Y2FsU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsK IAogI2VuZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aAppbmRleCA5MDVhZjIyMzFiLi4yZjUyMTAwYjAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nz aWduYWwuaApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9M T0NLLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX0JVRkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVB RExPQ0ssCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMmVmZmRlYTEyNi4uNDFmNGRj MzcyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDggKzMwLDEwIEBAIGV4dGVy biB2b2lkIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiBleHRl cm4gdm9pZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsK IAogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCWJvb2wg aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBl eHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQo RnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJ CQkJICAgYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0 b3IgbG9jYXRvcik7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhU YWJsZXNwYWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aERhdGFiYXNlKE9pZCBkYmlkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggYWIxYWViZmRlNC4uMDZkM2YxZjVkMyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE0NzIsOCArMTQ3Miw5IEBAIHBnX3JlcGxpY2F0aW9u X3Nsb3RzfCBTRUxFQ1QgbC5zbG90X25hbWUsCiAgICAgbC5jb25maXJtZWRfZmx1c2hfbHNu LAogICAgIGwud2FsX3N0YXR1cywKICAgICBsLnNhZmVfd2FsX3NpemUsCi0gICAgbC50d29f cGhhc2UKLSAgIEZST00gKHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cygpIGwoc2xvdF9uYW1l LCBwbHVnaW4sIHNsb3RfdHlwZSwgZGF0b2lkLCB0ZW1wb3JhcnksIGFjdGl2ZSwgYWN0aXZl X3BpZCwgeG1pbiwgY2F0YWxvZ194bWluLCByZXN0YXJ0X2xzbiwgY29uZmlybWVkX2ZsdXNo X2xzbiwgd2FsX3N0YXR1cywgc2FmZV93YWxfc2l6ZSwgdHdvX3BoYXNlKQorICAgIGwudHdv X3BoYXNlLAorICAgIGwuY29uZmxpY3RpbmcKKyAgIEZST00gKHBnX2dldF9yZXBsaWNhdGlv bl9zbG90cygpIGwoc2xvdF9uYW1lLCBwbHVnaW4sIHNsb3RfdHlwZSwgZGF0b2lkLCB0ZW1w b3JhcnksIGFjdGl2ZSwgYWN0aXZlX3BpZCwgeG1pbiwgY2F0YWxvZ194bWluLCByZXN0YXJ0 X2xzbiwgY29uZmlybWVkX2ZsdXNoX2xzbiwgd2FsX3N0YXR1cywgc2FmZV93YWxfc2l6ZSwg dHdvX3BoYXNlLCBjb25mbGljdGluZykKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQg T04gKChsLmRhdG9pZCA9IGQub2lkKSkpOwogcGdfcm9sZXN8IFNFTEVDVCBwZ19hdXRoaWQu cm9sbmFtZSwKICAgICBwZ19hdXRoaWQucm9sc3VwZXIsCkBAIC0xODY5LDcgKzE4NzAsOCBA QCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0c3wgU0VMRUNUIG9pZCBBUyBkYXRpZCwKICAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2NrKG9pZCkgQVMgY29uZmxfbG9jaywKICAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChvaWQpIEFTIGNvbmZsX3NuYXBz aG90LAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihvaWQpIEFTIGNv bmZsX2J1ZmZlcnBpbiwKLSAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2Rl YWRsb2NrKG9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICBwZ19zdGF0X2dldF9kYl9jb25m bGljdF9zdGFydHVwX2RlYWRsb2NrKG9pZCkgQVMgY29uZmxfZGVhZGxvY2ssCisgICAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3Qob2lkKSBBUyBjb25mbF9hY3RpdmVf bG9naWNhbHNsb3QKICAgIEZST00gcGdfZGF0YWJhc2UgZDsKIHBnX3N0YXRfZ3NzYXBpfCBT RUxFQ1QgcGlkLAogICAgIGdzc19hdXRoIEFTIGdzc19hdXRoZW50aWNhdGVkLAotLSAKMi4z NC4xCgo= --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v54-0002-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5ODNhNjYwZjg4NDdkNWY3ZWQ2MzU5YzA3MThkNThhZTNlOWMxMjBiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA4OjIxOjE2ICswMDAw ClN1YmplY3Q6IFtQQVRDSCB2NTQgMi83XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBw cmVwYXJhdGlvbiBmb3IgbG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCk92ZXJhbGwgZGVzaWduOgoKMS4gV2Ug d2FudCB0byBlbmFibGUgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5cywgYnV0IHJlcGxh eSBvZiBXQUwKZnJvbSB0aGUgcHJpbWFyeSBtaWdodCByZW1vdmUgZGF0YSB0aGF0IGlzIG5l ZWRlZCBieSBsb2dpY2FsIGRlY29kaW5nLApjYXVzaW5nIGVycm9yKHMpIG9uIHRoZSBzdGFu ZGJ5LiBUbyBwcmV2ZW50IHRob3NlIGVycm9ycywgYSBuZXcgcmVwbGljYXRpb24KY29uZmxp Y3Qgc2NlbmFyaW8gbmVlZHMgdG8gYmUgYWRkcmVzc2VkIChhcyBtdWNoIGFzIGhvdCBzdGFu ZGJ5IGRvZXMpLgoKMi4gT3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIHRo aXMgdHlwZSBvZiByZXBsaWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNhbCBz bG90cyBmb3Igd2hpY2ggbmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRvIGRv IHRoaXMgd2UgbmVlZCB0aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2UsIGp1 c3QgYXMgd2UKZG8gZm9yIHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0IHdl IGFsc28gbmVlZCB0byBrbm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdhcyB0 byBkYXRhIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuIFRoYXQgd2F5 LCBkdXJpbmcgV0FMIHJlcGxheSwgd2Uga25vdyB3aGVuIHRoZXJlIGlzIGEgcmlzayBvZgpj b25mbGljdCBhbmQsIGlmIHNvLCBpZiB0aGVyZSBpcyBhIGNvbmZsaWN0LgoKNC4gV2UgY2Fu J3QgcmVseSBvbiB0aGUgc3RhbmRieSdzIHJlbGNhY2hlIGVudHJpZXMgZm9yIHRoaXMgcHVy cG9zZSBpbgphbnkgd2F5LCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuJ3QgYWNj ZXNzIGNhdGFsb2cgY29udGVudHMuCgo1LiBUaGVyZWZvcmUgZXZlcnkgV0FMIHJlY29yZCB0 aGF0IHBvdGVudGlhbGx5IHJlbW92ZXMgZGF0YSBmcm9tIHRoZQppbmRleCBvciBoZWFwIG11 c3QgY2FycnkgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaXQgaXMgb25lCnRo YXQgbWlnaHQgYmUgYWNjZXNzZWQgZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcuCgpXaHkgZG8g d2UgbmVlZCB0aGlzIGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnk/CgpGaXJzdCwg bGV0J3MgZm9yZ2V0IGFib3V0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBhbmQgcmVj YWxsIHRoYXQKb24gYSBwcmltYXJ5IGRhdGFiYXNlLCBhbnkgY2F0YWxvZyByb3dzIHRoYXQg bWF5IGJlIG5lZWRlZCBieSBhIGxvZ2ljYWwKZGVjb2RpbmcgcmVwbGljYXRpb24gc2xvdCBh cmUgbm90IHJlbW92ZWQuCgpUaGlzIGlzIGRvbmUgdGhhbmtzIHRvIHRoZSBjYXRhbG9nX3ht aW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBsb2dpY2FsCnJlcGxpY2F0aW9uIHNsb3QuCgpCdXQs IHdpdGggbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LCBpbiB0aGUgZm9sbG93aW5nIGNh c2VzOgoKLSBob3Rfc3RhbmRieV9mZWVkYmFjayBpcyBvZmYKLSBob3Rfc3RhbmRieV9mZWVk YmFjayBpcyBvbiBidXQgdGhlcmUgaXMgbm8gYSBwaHlzaWNhbCBzbG90IGJldHdlZW4KICB0 aGUgcHJpbWFyeSBhbmQgdGhlIHN0YW5kYnkuIFRoZW4sIGhvdF9zdGFuZGJ5X2ZlZWRiYWNr IHdpbGwgd29yaywKICBidXQgb25seSB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBhbGl2ZSAo Zm9yIGV4YW1wbGUgYSBub2RlIHJlc3RhcnQKICB3b3VsZCBicmVhayBpdCkKClRoZW4sIHRo ZSBwcmltYXJ5IG1heSBkZWxldGUgc3lzdGVtIGNhdGFsb2cgcm93cyB0aGF0IGNvdWxkIGJl IG5lZWRlZApieSB0aGUgbG9naWNhbCBkZWNvZGluZyBvbiB0aGUgc3RhbmRieSAoYXMgaXQg ZG9lcyBub3Qga25vdyBhYm91dCB0aGUKY2F0YWxvZ194bWluIG9uIHRoZSBzdGFuZGJ5KS4K ClNvLCBpdOKAmXMgbWFuZGF0b3J5IHRvIGlkZW50aWZ5IHRob3NlIHJvd3MgYW5kIGludmFs aWRhdGUgdGhlIHNsb3RzCnRoYXQgbWF5IG5lZWQgdGhlbSBpZiBhbnkuIElkZW50aWZ5aW5n IHRob3NlIHJvd3MgaXMgdGhlIHB1cnBvc2Ugb2YKdGhpcyBjb21taXQuCgpJbXBsZW1lbnRh dGlvbjoKCldoZW4gYSBXQUwgcmVwbGF5IG9uIHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBj YXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJlIGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMg Z3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQg bWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwg YW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjb25mbGljdC4gV2hpbGUgc3Vic2VxdWVudCBj b21taXRzCndpbGwgZG8gdGhlIGFjdHVhbCBjb25mbGljdCBoYW5kbGluZywgdGhpcyBjb21t aXQgYWRkcyBhIG5ldyBmaWVsZAppc0NhdGFsb2dSZWwgaW4gc3VjaCBXQUwgcmVjb3JkcyAo YW5kIGEgbmV3IGJpdCBzZXQgaW4gdGhlCnhsX2hlYXBfdmlzaWJsZSBmbGFncyBmaWVsZCks IHRoYXQgaXMgdHJ1ZSBmb3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvCmFycmFuZ2UgZm9y IGNvbmZsaWN0IGhhbmRsaW5nLgoKVGhlIGFmZmVjdGVkIFdBTCByZWNvcmRzIGFyZSB0aGUg b25lcyB0aGF0IGFscmVhZHkgY29udGFpbiB0aGUKc25hcHNob3RDb25mbGljdEhvcml6b24g ZmllbGQsIG5hbWVseToKCi0gZ2lzdHhsb2dEZWxldGUKLSBnaXN0eGxvZ1BhZ2VSZXVzZQot IHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlCi0geGxfaGVhcF9wcnVuZQotIHhsX2hlYXBfZnJl ZXplX3BhZ2UKLSB4bF9oZWFwX3Zpc2libGUKLSB4bF9idHJlZV9yZXVzZV9wYWdlCi0geGxf YnRyZWVfZGVsZXRlCi0gc3BneGxvZ1ZhY3V1bVJlZGlyZWN0CgpEdWUgdG8gdGhpcyBuZXcg ZmllbGQgYmVpbmcgYWRkZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxv Z0RlbGV0ZSBkbyBub3cgY29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEK RkxFWElCTEVfQVJSQVlfTUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVj dCBhbGlnbmVtZW50LgpJdCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hl cmUgaXNDYXRhbG9nUmVsIGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZQpSb3llcyBNZWxsbywgTWVsYW5pZSBQbGFnZW1hbgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICAgIHwgMTIgKysrKy0tLS0t LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyAgICB8IDEyICsrKy0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jICAgfCAgMSAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICB8ICA5ICsrKysrKysr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgfCAgMSArCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICB8ICAyICsrCiBzcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vz cy9naXN0eGxvZy5oICAgICAgICAgIHwgMTEgKysrKysrKystLS0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9oYXNoX3hsb2cuaCAgICAgICAgIHwgIDggKysrKystLS0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oICAgICAgIHwgIDggKysrKysrLS0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnR4bG9nLmggICAgICAgICAgIHwgIDggKysrKysrLS0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9zcGd4bG9nLmggICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy92 aXNpYmlsaXR5bWFwZGVmcy5oIHwgMTcgKysrKysrKysrKysrKy0tLS0KIDEzIGZpbGVzIGNo YW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQogIDEwLjElIHNyYy9i YWNrZW5kL2FjY2Vzcy9naXN0LwogICA4LjYlIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoLwog IDEwLjQlIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogICAzLjIlIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvCiAgNjUuOSUgc3JjL2luY2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IDRiNTI3MTk3NjUuLmI3Njc4ZjNjMTQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTc3LDYgKzE3Nyw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWdpc3R4bG9nRGVs ZXRlICp4bGRhdGEgPSAoZ2lzdHhsb2dEZWxldGUgKikgWExvZ1JlY0dldERhdGEocmVjb3Jk KTsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlQYWdlCQlwYWdlOworCU9mZnNldE51bWJlciAqdG9E ZWxldGUgPSB4bGRhdGEtPm9mZnNldHM7CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55IGNv bmZsaWN0IHByb2Nlc3NpbmcgdG8gZG8sIGl0IG11c3QgaGFwcGVuIGJlZm9yZSB3ZQpAQCAt MjAzLDE0ICsyMDQsNyBAQCBnaXN0UmVkb0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwog Ci0JCWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQpID4gU2l6ZU9mR2lzdHhsb2dEZWxl dGUpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdG9kZWxldGU7Ci0KLQkJCXRvZGVsZXRlID0g KE9mZnNldE51bWJlciAqKSAoKGNoYXIgKikgeGxkYXRhICsgU2l6ZU9mR2lzdHhsb2dEZWxl dGUpOwotCi0JCQlQYWdlSW5kZXhNdWx0aURlbGV0ZShwYWdlLCB0b2RlbGV0ZSwgeGxkYXRh LT5udG9kZWxldGUpOwotCQl9CisJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvRGVs ZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7CiAKIAkJR2lzdENsZWFyUGFnZUhhc0dhcmJhZ2Uo cGFnZSk7CiAJCUdpc3RNYXJrVHVwbGVzRGVsZXRlZChwYWdlKTsKQEAgLTYwOSw2ICs2MDMs NyBAQCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWws CiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2UuaXNDYXRhbG9nUmVs ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4 bHJlY19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwogCXhscmVjX3JldXNlLmJs b2NrID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBk ZWxldGVYaWQ7CkBAIC02NzgsNiArNjczLDcgQEAgZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1 ZmZlciwgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwKIAlnaXN0eGxv Z0RlbGV0ZSB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCXhscmVjLmlzQ2F0YWxv Z1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7 CiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbjsKIAl4bHJlYy5udG9kZWxldGUgPSBudG9kZWxldGU7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaF94bG9nLmMKaW5kZXggZjM4YjQyZWZiOS4uMDhjZWI5MTI4OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTk4MCw4ICs5ODAsMTAgQEAgaGFz aF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlQYWdl CQlwYWdlOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKIAlIYXNoUGFnZU9wYXF1ZSBwYWdl b3BhcXVlOworCU9mZnNldE51bWJlciAqdG9EZWxldGU7CiAKIAl4bGRhdGEgPSAoeGxfaGFz aF92YWN1dW1fb25lX3BhZ2UgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKKwl0b0RlbGV0 ZSA9IHhsZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxp Y3QgcHJvY2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0xMDEw LDE1ICsxMDEyLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIp OwogCi0JCWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQpID4gU2l6ZU9mSGFzaFZhY3V1 bU9uZVBhZ2UpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdW51c2VkOwotCi0JCQl1bnVzZWQg PSAoT2Zmc2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZIYXNoVmFjdXVt T25lUGFnZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHVudXNlZCwgeGxk YXRhLT5udHVwbGVzKTsKLQkJfQotCisJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRv RGVsZXRlLCB4bGRhdGEtPm50dXBsZXMpOwogCQkvKgogCQkgKiBNYXJrIHRoZSBwYWdlIGFz IG5vdCBjb250YWluaW5nIGFueSBMUF9ERUFEIGl0ZW1zLiBTZWUgY29tbWVudHMgaW4KIAkJ ICogX2hhc2hfdmFjdXVtX29uZV9wYWdlKCkgZm9yIGRldGFpbHMuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMKaW5kZXggYTYwNGUzMTg5MS4uMjI2NTZiMjRlMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpAQCAtNDMyLDYgKzQzMiw3IEBA IF9oYXNoX3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhyZWwsIEJ1 ZmZlciBtZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFzaF92YWN1dW1fb25lX3BhZ2Ug eGxyZWM7CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxyZWMuaXNDYXRhbG9nUmVs ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVsKTsKIAkJCXhs cmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247 CiAJCQl4bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCA5NjYyZTM4MjU0Li4wODU0NmIzNWM3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYwpAQCAtNjY5OCw2ICs2Njk4LDcgQEAgaGVhcF9mcmVlemVfZXhlY3V0 ZV9wcmVwYXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZmZXIsCiAJCW5wbGFucyA9IGhl YXBfbG9nX2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywgcGxhbnMsIG9mZnNldHMpOwog CiAJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhv cml6b247CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5zID0gbnBsYW5zOwogCiAJCVhM b2dCZWdpbkluc2VydCgpOwpAQCAtODI4MCw2ICs4MjgxLDggQEAgbG9nX2hlYXBfdmlzaWJs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK IAogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhv cml6b247CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOworCWlmIChSZWxhdGlvbklzQWNjZXNz aWJsZUluTG9naWNhbERlY29kaW5nKHJlbCkpCisJCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJ VFlNQVBfWExPR19DQVRBTE9HX1JFTDsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKIAlYTG9nUmVn aXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFZpc2libGUpOwogCkBAIC04 ODcwLDYgKzg4NzMsOCBAQCBoZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAlCbG9ja051bWJlciBibGtubzsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CiAK KwlBc3NlcnQoKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRT KSA9PSB4bHJlYy0+ZmxhZ3MpOworCiAJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMSwg JnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwogCiAJLyoKQEAgLTg5NTYsNiArODk2MSw3IEBA IGhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJUGFn ZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlcik7CiAJCVJlbGF0aW9uCXJlbG47 CisJCXVpbnQ4CQl2bWJpdHM7CiAKIAkJLyogaW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBpdCB3 YXMgcmVhZCBhcyB6ZXJvcyAqLwogCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCkBAIC04OTY5 LDkgKzg5NzUsMTAgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKIAkJ dmlzaWJpbGl0eW1hcF9waW4ocmVsbiwgYmxrbm8sICZ2bWJ1ZmZlcik7CisJCXZtYml0cyA9 ICh4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCiAJCXZpc2li aWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCBJbnZhbGlkQnVmZmVyLCBsc24sIHZtYnVmZmVy LAotCQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFn cyk7CisJCQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsK IAogCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKIAkJRnJlZUZha2VSZWxjYWNoZUVudHJ5 KHJlbG4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA0ZTY1Y2Jj YWRmLi4zZjAzNDIzNTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtNDE4LDYgKzQxOCw3IEBAIGhlYXBfcGFnZV9wcnVuZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJCXhsX2hlYXBfcHJ1bmUgeGxyZWM7CiAJCQlYTG9nUmVjUHRy CXJlY3B0cjsKIAorCQkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbik7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHByc3RhdGUuc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4bHJl Yy5ucmVkaXJlY3RlZCA9IHByc3RhdGUubnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9 IHByc3RhdGUubmRlYWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4 IGVlOTk2YjU2NjAuLjE1MWFkMzdhNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 cGFnZS5jCkBAIC04MzYsNiArODM2LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJICovCiAKIAkv KiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2UuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25J c0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4bHJlY19yZXVzZS5s b2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwogCXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87 CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzYWZleGlkOwpAQCAt MTM1OCw2ICsxMzU5LDcgQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4 bF9idHJlZV9kZWxldGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5pc0NhdGFs b2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwp OwogCQl4bHJlY19kZWxldGUuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbjsKIAkJeGxyZWNfZGVsZXRlLm5kZWxldGVkID0gbmRlbGV0YWJsZTsK IAkJeGxyZWNfZGVsZXRlLm51cGRhdGVkID0gbnVwZGF0YWJsZTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDNjZmY3MWU3MjAuLjJmNGE0YWFkMjQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNTAzLDYgKzUwMyw3 IEBAIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0 aW9uIGhlYXByZWwsIEJ1ZmZlciBidWZmZXIpCiAJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhs cmVjOwogCUdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0OwogCisJeGxyZWMuaXNDYXRhbG9nUmVs ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAl4 bHJlYy5uVG9QbGFjZWhvbGRlciA9IDA7CiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6 b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2dpc3R4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRl eCAyY2U5MzY2Mjc3Li45M2ZiOWQ0MzhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2lzdHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAt NTEsMTEgKzUxLDE0IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVsZXRlCiB7CiAJVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW50b2RlbGV0 ZTsJCS8qIG51bWJlciBvZiBkZWxldGVkIG9mZnNldHMgKi8KKwlib29sICAgICAgICBpc0Nh dGFsb2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNh bAorCQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKLQkvKiBUT0RFTEVURSBP RkZTRVQgTlVNQkVSIEFSUkFZIEZPTExPV1MgKi8KKwkvKiBUT0RFTEVURSBPRkZTRVQgTlVN QkVSUyAqLworCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07 CiB9IGdpc3R4bG9nRGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4bG9nRGVsZXRlCShv ZmZzZXRvZihnaXN0eGxvZ0RlbGV0ZSwgbnRvZGVsZXRlKSArIHNpemVvZih1aW50MTYpKQor I2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZQlvZmZzZXRvZihnaXN0eGxvZ0RlbGV0ZSwg b2Zmc2V0cykKIAogLyoKICAqIEJhY2t1cCBCbGsgMDogSWYgdGhpcyBvcGVyYXRpb24gY29t cGxldGVzIGEgcGFnZSBzcGxpdCwgYnkgaW5zZXJ0aW5nIGEKQEAgLTk4LDkgKzEwMSwxMSBA QCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VSZXVzZQogCVJlbEZpbGVMb2NhdG9yIGxv Y2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b247CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBo YW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVj b2Rpbmcgb24gc3RhbmRieSAqLwogfSBnaXN0eGxvZ1BhZ2VSZXVzZTsKIAotI2RlZmluZSBT aXplT2ZHaXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdlUmV1c2UsIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uKSArIHNpemVvZihGdWxsVHJhbnNhY3Rpb25JZCkpCisj ZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShvZmZzZXRvZihnaXN0eGxvZ1BhZ2VS ZXVzZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogZXh0ZXJuIHZvaWQgZ2lz dF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIGdpc3RfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hhc2hfeGxvZy5oCmluZGV4IDk4OTRhYjlhZmUuLjZjNTUzNWZlNzMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGFzaF94bG9nLmgKQEAgLTI1MiwxMiArMjUyLDE0IEBAIHR5cGVkZWYgc3RydWN0IHhs X2hhc2hfdmFjdXVtX29uZV9wYWdlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbjsKIAl1aW50MTYJCQludHVwbGVzOworCWJvb2wgICAgICAgIGlzQ2F0YWxv Z1JlbDsgICAvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwK KwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCi0JLyogVEFSR0VUIE9GRlNF VCBOVU1CRVJTIEZPTExPVyBBVCBUSEUgRU5EICovCisJLyogVEFSR0VUIE9GRlNFVCBOVU1C RVJTICovCisJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsK IH0geGxfaGFzaF92YWN1dW1fb25lX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1 bU9uZVBhZ2UgXAotCShvZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgbnR1cGxl cykgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ug b2Zmc2V0b2YoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UsIG9mZnNldHMpCiAKIGV4dGVybiB2 b2lkIGhhc2hfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBo YXNoX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggNDI2MjBiYmRjOS4uMDhkYjdlNjJkZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0NSwxMCArMjQ1LDEyIEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnJlZGlyZWN0ZWQ7CiAJdWludDE2CQluZGVhZDsK Kwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25m bGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICov CiAJLyogT0ZGU0VUIE5VTUJFUlMgYXJlIGluIHRoZSBibG9jayByZWZlcmVuY2UgMCAqLwog fSB4bF9oZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2Yo eGxfaGVhcF9wcnVuZSwgbmRlYWQpICsgc2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVP ZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgaXNDYXRhbG9nUmVsKSArIHNp emVvZihib29sKSkKIAogLyoKICAqIFRoZSB2YWN1dW0gcGFnZSByZWNvcmQgaXMgc2ltaWxh ciB0byB0aGUgcHJ1bmUgcmVjb3JkLCBidXQgY2FuIG9ubHkgbWFyawpAQCAtMzQ0LDEzICsz NDYsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogewogCVRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQlucGxhbnM7CisJ Ym9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxp Y3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwog CiAJLyoKIAkgKiBJbiBwYXlsb2FkIG9mIGJsayAwIDogRlJFRVpFIFBMQU5TIGFuZCBPRkZT RVQgTlVNQkVSIEFSUkFZCiAJICovCiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CiAKLSNkZWZp bmUgU2l6ZU9mSGVhcEZyZWV6ZVBhZ2UgKG9mZnNldG9mKHhsX2hlYXBfZnJlZXplX3BhZ2Us IG5wbGFucykgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6ZVBh Z2UJKG9mZnNldG9mKHhsX2hlYXBfZnJlZXplX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXpl b2YoYm9vbCkpCiAKIC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0 IHNldHRpbmcgYSB2aXNpYmlsaXR5IG1hcCBiaXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnR4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCmluZGV4 IDdkZDY3MjU3ZjIuLjgyM2M3MDBkZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9uYnR4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtMTg4 LDkgKzE4OCwxMSBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdlCiAJUmVs RmlsZUxvY2F0b3IgbG9jYXRvcjsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFs b2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAor CQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiB9IHhsX2J0cmVlX3JldXNlX3Bh Z2U7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVSZXVzZVBhZ2UJKHNpemVvZih4bF9idHJlZV9y ZXVzZV9wYWdlKSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVSZXVzZVBhZ2UJKG9mZnNldG9mKHhs X2J0cmVlX3JldXNlX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8q CiAgKiB4bF9idHJlZV92YWN1dW0gYW5kIHhsX2J0cmVlX2RlbGV0ZSByZWNvcmRzIGRlc2Ny aWJlIGRlbGV0aW9uIG9mIGluZGV4CkBAIC0yMzUsNiArMjM3LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgeGxfYnRyZWVfZGVsZXRlCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbjsKIAl1aW50MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVwZGF0ZWQ7CisJYm9vbCAg ICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCiAJLyot LS0tCiAJICogSW4gcGF5bG9hZCBvZiBibGsgMCA6CkBAIC0yNDUsNyArMjQ5LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiAJICovCiB9IHhsX2J0cmVlX2RlbGV0ZTsK IAotI2RlZmluZSBTaXplT2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRl LCBudXBkYXRlZCkgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxl dGUJKG9mZnNldG9mKHhsX2J0cmVlX2RlbGV0ZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihi b29sKSkKIAogLyoKICAqIFRoZSBvZmZzZXRzIHRoYXQgYXBwZWFyIGluIHhsX2J0cmVlX3Vw ZGF0ZSBtZXRhZGF0YSBhcmUgb2Zmc2V0cyBpbnRvIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgK aW5kZXggYjlkNjc1MzUzMy4uNzUyNjdhNDkxNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3NwZ3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCkBA IC0yNDAsNiArMjQwLDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0 CiAJdWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyogbnVtYmVyIG9mIHJlZGlyZWN0cyB0byBt YWtlIHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51bWJlciBmaXJzdFBsYWNlaG9sZGVyOwkv KiBmaXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byByZW1vdmUgKi8KIAlUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwkvKiBuZXdlc3QgWElEIG9mIHJlbW92ZWQgcmVk aXJlY3RzICovCisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVj b3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24g c3RhbmRieSAqLwogCiAJLyogb2Zmc2V0cyBvZiByZWRpcmVjdCB0dXBsZXMgdG8gbWFrZSBw bGFjZWhvbGRlcnMgZm9sbG93ICovCiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVf QVJSQVlfTUVNQkVSXTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgK aW5kZXggOTE2NWI5NDU2Yi4uMWZlMWZlMDkyZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zp c2liaWxpdHltYXBkZWZzLmgKQEAgLTE3LDkgKzE3LDE4IEBACiAjZGVmaW5lIEJJVFNfUEVS X0hFQVBCTE9DSyAyCiAKIC8qIEZsYWdzIGZvciBiaXQgbWFwICovCi0jZGVmaW5lIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUJMHgwMQotI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4JMHgwMgotI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJMHgwMwkvKiBP UiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAotCQkJCQkJCQkJCQkgKiBmbGFncyBiaXRz ICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUJCQkJCQkJCTB4MDEKKyNk ZWZpbmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCQkJCQkJCQkweDAyCisjZGVmaW5lIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUwkJCQkJCQkJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQg dmlzaWJpbGl0eW1hcAorCQkJCQkJCQkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLworLyoK KyAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rp bmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCisgKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1 c2VyIGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCisgKiBi aXQgaW50byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92 ZS4KKyAqCisgKiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKS4KKyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX1hM T0dfQ0FUQUxPR19SRUwJMHgwNAorI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURf QklUUwkoVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NB VEFMT0dfUkVMKQogCiAjZW5kaWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwot LSAKMi4zNC4xCgo= --------------2Y0aDGctWxn7tLmsjjJZ4lqy Content-Type: text/plain; charset=UTF-8; name="v54-0001-Pass-down-the-heap-relation-into-the-new-places.patch" Content-Disposition: attachment; filename*0="v54-0001-Pass-down-the-heap-relation-into-the-new-places.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA2NjEwZWM1OWVkNDc1MmJmMzk3MzhkZDNhZDA1NmNkMWM4MzBiYzUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU1OjE5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NTQgMS83XSBQYXNzIGRvd24gdGhlIGhlYXAgcmVsYXRpb24gaW50byB0aGUgbmV3IHBs YWNlcwoKSW4gcHJlcGFyYXRpb24gZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBh bmQgYWxzbyBiZWluZyBhYmxlIHRvIHBhc3MKdGhlIGhlYXAgcmVsYXRpb24gdG8gR2xvYmFs VmlzVGVzdEZvcigpIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoKS4KLS0tCiBjb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgfCAgMTUgKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICAgICB8ICAgMiArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgIHwgICA5ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAgICAgfCAgOTEgKysrKysrKysrLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICAgICB8IDEwOSArKysr KysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMg ICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2gu YyAgICAgIHwgIDUwICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1 dGlscy5jICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YyAgICAgIHwgICA2ICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFu dHMuYyB8ICAgNSArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICAg ICB8ICAgNyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICAg IHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg fCAgMzcgKysrKy0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAg ICB8ICAgNCArLQogMjcgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2VydGlvbnMoKyksIDE3MCBk ZWxldGlvbnMoLSkKICAgMy45JSBjb250cmliL2FtY2hlY2svCiAgIDMuNCUgc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvCiAgIDMuOCUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvCiAgNjku NyUgc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS8KICAgNC44JSBzcmMvYmFja2VuZC8KICAx My4yJSBzcmMvaW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5k ZXggMjU3Y2ZmNjcxYi4uZWIyODBkNDg5MyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j CkBAIC0xODMsNiArMTgzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGludmFyaWFudF9sX25v bnRhcmdldF9vZmZzZXQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwKIAkJCQkJCQkJCQkJCU9m ZnNldE51bWJlciB1cHBlcmJvdW5kKTsKIHN0YXRpYyBQYWdlIHBhbGxvY19idHJlZV9wYWdl KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrbnVtKTsKIHN0YXRp YyBpbmxpbmUgQlRTY2FuSW5zZXJ0IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlv biByZWwsCisJCQkJCQkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJCQlJ bmRleFR1cGxlIGl0dXApOwogc3RhdGljIEl0ZW1JZCBQYWdlR2V0SXRlbUlkQ2FyZWZ1bChC dHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9jaywKIAkJCQkJCQkJICAg UGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2Zmc2V0KTsKQEAgLTMzMSw3ICszMzIsNyBAQCBi dF9pbmRleF9jaGVja19pbnRlcm5hbChPaWQgaW5kcmVsaWQsIGJvb2wgcGFyZW50Y2hlY2ss IGJvb2wgaGVhcGFsbGluZGV4ZWQsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo aW5kcmVsKSkpKTsKIAogCQkvKiBFeHRyYWN0IG1ldGFkYXRhIGZyb20gbWV0YXBhZ2UsIGFu ZCBzYW5pdGl6ZSBpdCBpbiBwYXNzaW5nICovCi0JCV9idF9tZXRhdmVyc2lvbihpbmRyZWws ICZoZWFwa2V5c3BhY2UsICZhbGxlcXVhbGltYWdlKTsKKwkJX2J0X21ldGF2ZXJzaW9uKGlu ZHJlbCwgaGVhcHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1hZ2UpOwogCQlpZiAo YWxsZXF1YWxpbWFnZSAmJiAhaGVhcGtleXNwYWNlKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLApAQCAtMTI1OCw3ICsxMjU5 LDcgQEAgYnRfdGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKIAkJ fQogCiAJCS8qIEJ1aWxkIGluc2VydGlvbiBzY2Fua2V5IGZvciBjdXJyZW50IHBhZ2Ugb2Zm c2V0ICovCi0JCXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwg aXR1cCk7CisJCXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwg c3RhdGUtPmhlYXByZWwsIGl0dXApOwogCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0dXBsZSBz aXplIGRvZXMgbm90IGV4Y2VlZCB0aGUgcmVsZXZhbnQgQlRSRUVfVkVSU0lPTgpAQCAtMTc2 OCw3ICsxNzY5LDcgQEAgYnRfcmlnaHRfcGFnZV9jaGVja19zY2Fua2V5KEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUpCiAJICogbWVtb3J5IHJlbWFpbmluZyBhbGxvY2F0ZWQuCiAJICovCiAJ Zmlyc3RpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHJpZ2h0cGFnZSwgcmlnaHRp dGVtKTsKLQlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIGZp cnN0aXR1cCk7CisJcmV0dXJuIGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVs LCBzdGF0ZS0+aGVhcHJlbCwgZmlyc3RpdHVwKTsKIH0KIAogLyoKQEAgLTI2ODEsNyArMjY4 Miw3IEBAIGJ0X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVw bGUgaXR1cCkKIAlCdWZmZXIJCWxidWY7CiAJYm9vbAkJZXhpc3RzOwogCi0Ja2V5ID0gX2J0 X21rc2NhbmtleShzdGF0ZS0+cmVsLCBpdHVwKTsKKwlrZXkgPSBfYnRfbWtzY2Fua2V5KHN0 YXRlLT5yZWwsIHN0YXRlLT5oZWFwcmVsLCBpdHVwKTsKIAlBc3NlcnQoa2V5LT5oZWFwa2V5 c3BhY2UgJiYga2V5LT5zY2FudGlkICE9IE5VTEwpOwogCiAJLyoKQEAgLTI2OTQsNyArMjY5 NSw3IEBAIGJ0X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVw bGUgaXR1cCkKIAkgKi8KIAlBc3NlcnQoc3RhdGUtPnJlYWRvbmx5ICYmIHN0YXRlLT5yb290 ZGVzY2VuZCk7CiAJZXhpc3RzID0gZmFsc2U7Ci0Jc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRl LT5yZWwsIGtleSwgJmxidWYsIEJUX1JFQUQsIE5VTEwpOworCXN0YWNrID0gX2J0X3NlYXJj aChzdGF0ZS0+cmVsLCBzdGF0ZS0+aGVhcHJlbCwga2V5LCAmbGJ1ZiwgQlRfUkVBRCwgTlVM TCk7CiAKIAlpZiAoQnVmZmVySXNWYWxpZChsYnVmKSkKIAl7CkBAIC0zMTMzLDExICszMTM0 LDExIEBAIHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2Nr TnVtYmVyIGJsb2NrbnVtKQogICogdGhlIHNjYW5rZXkgaXMgZ3JlYXRlci4KICAqLwogc3Rh dGljIGlubGluZSBCVFNjYW5JbnNlcnQKLWJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxh dGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKK2J0X21rc2NhbmtleV9waXZvdHNlYXJjaChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCkKIHsKIAlC VFNjYW5JbnNlcnQgc2tleTsKIAotCXNrZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7 CisJc2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBoZWFwcmVsLCBpdHVwKTsKIAlza2V5LT5w aXZvdHNlYXJjaCA9IHRydWU7CiAKIAlyZXR1cm4gc2tleTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3QuYwppbmRleCBlYTcyYmNjZTFiLi5jM2EzZDQ5YmNhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdC5jCkBAIC0zNDksNyArMzQ5LDcgQEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJl bCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsgcHRy OyBwdHIgPSBwdHItPm5leHQpCiAJCXsKIAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICovCi0J CQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVyID0g Z2lzdE5ld0J1ZmZlcihyZWwsIGhlYXBSZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRyLT5i dWZmZXIsIChpc19sZWFmKSA/IEZfTEVBRiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVmZmVy R2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJCQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVyR2V0 QmxvY2tOdW1iZXIocHRyLT5idWZmZXIpOwpAQCAtMTY5NSw3ICsxNjk1LDggQEAgZ2lzdHBy dW5lcGFnZShSZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwgQnVmZmVyIGJ1ZmZlciwgUmVsYXRp b24gaGVhcFJlbCkKIAogCQkJcmVjcHRyID0gZ2lzdFhMb2dEZWxldGUoYnVmZmVyLAogCQkJ CQkJCQkJZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJCQkJCQkJc25hcHNob3RDb25mbGlj dEhvcml6b24pOworCQkJCQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJ CQloZWFwUmVsKTsKIAogCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwogCQl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IDU3ZmU1NTNhNWMuLmQyZjhkYTVi MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTgsNyArMjk4 LDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXplIHRoZSBy b290IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJCWJ1ZmZl ciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgsIGhlYXApOwogCQlBc3NlcnQoQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0gQnVmZmVy R2V0UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRl eCBiNGQ4NDNhMGZmLi5hNjA3NDY0Yjk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1 dGlsLmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5n IHRoZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVyCi1naXN0 TmV3QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIsIFJlbGF0 aW9uIGhlYXByZWwpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExvY2s7CkBA IC04NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJCSAqIHBh Z2UncyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5mb0FjdGl2 ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIs IGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RYTG9nUGFn ZVJldXNlKHIsIGhlYXByZWwsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7 CiAKIAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4 bG9nLmMKaW5kZXggZjY1ODY0MjU0YS4uNGI1MjcxOTc2NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0eGxvZy5jCkBAIC01OTcsNyArNTk3LDggQEAgZ2lzdFhMb2dBc3NpZ25MU04o dm9pZCkKICAqIFdyaXRlIFhMT0cgcmVjb3JkIGFib3V0IHJldXNlIG9mIGEgZGVsZXRlZCBw YWdlLgogICovCiB2b2lkCi1naXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpCitnaXN0WExvZ1Bh Z2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJICBCbG9ja051 bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQogewogCWdpc3R4bG9n UGFnZVJldXNlIHhscmVjX3JldXNlOwogCkBAIC02NzIsNyArNjczLDcgQEAgZ2lzdFhMb2dV cGRhdGUoQnVmZmVyIGJ1ZmZlciwKICAqLwogWExvZ1JlY1B0cgogZ2lzdFhMb2dEZWxldGUo QnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwK LQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pCisJCQkgICBU cmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCBSZWxhdGlvbiBoZWFwcmVs KQogewogCWdpc3R4bG9nRGVsZXRlIHhscmVjOwogCVhMb2dSZWNQdHIJcmVjcHRyOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA4YWJjMTAxYzhjLi45NjYyZTM4MjU0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODI2OCw3ICs4MjY4LDcgQEAgYm90 dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICog dXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFw X3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwg QnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxfaGVhcF92 aXNpYmxlIHhscmVjOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMKaW5kZXggOWU2OTAwNzRlOS4uOTdiNWRhZWU5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC04MjIsOSArODIyLDE0IEBAIGhlYXBhbV9y ZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5l d0hlYXAsCiAJCQkJCQkJCSAqbXVsdGlfY3V0b2ZmKTsKIAogCi0JLyogU2V0IHVwIHNvcnRp bmcgaWYgd2FudGVkICovCisJLyoKKwkgKiBTZXQgdXAgc29ydGluZyBpZiB3YW50ZWQuIE5l d0hlYXAgaXMgYmVpbmcgcGFzc2VkIHRvCisJICogdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIo KSwgaXQgY291bGQgaGF2ZSBiZWVuIE9sZEhlYXAgdG9vLiBJdCBkb2VzIG5vdAorCSAqIHJl YWxseSBtYXR0ZXIsIGFzIHRoZSBnb2FsIGlzIHRvIGhhdmUgYSBoZWFwIHJlbGF0aW9uIGJl aW5nIHBhc3NlZCB0bworCSAqIF9idF9sb2dfcmV1c2VfcGFnZSgpICh3aGljaCBzaG91bGQg bm90IGJlIGNhbGxlZCBmcm9tIHRoaXMgY29kZSBwYXRoKS4KKwkgKi8KIAlpZiAodXNlX3Nv cnQpCi0JCXR1cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKG9sZFR1cERlc2Ms IE9sZEluZGV4LAorCQl0dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihvbGRU dXBEZXNjLCBPbGRJbmRleCwgTmV3SGVhcCwKIAkJCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29y a19tZW0sCiAJCQkJCQkJCQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAllbHNlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOGYxNGNmODVmMy4uYWU2Mjhk NzQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjcxMCw2 ICsyNzEwLDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERF QlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5z dHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gdmFjcmVs LT5yZWw7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24u CkBAIC0yNzU5LDYgKzI3NjAsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9u IGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5i c3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKIAogCS8qCiAJICog VXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA3NGZmMDFiYjE3Li5kMWJhODU5ODUxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0yODgsOCAr Mjg4LDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBo ZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJl Y3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBs b2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbG9jYXRvciwgaGVhcEJ1Ziwgdm1CdWYsCi0JCQkJ CQkJCQkJICBjdXRvZmZfeGlkLCBmbGFncyk7CisJCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlz aWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7CiAKIAkJCQkv KgogCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hp bnRzPW9uKSwgd2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCmluZGV4 IGY0YzFhOTc0ZWYuLjhjNmU4NjdjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRpbnNlcnQuYwpAQCAtMzAsNyArMzAsOCBAQAogI2RlZmluZSBCVFJFRV9GQVNUUEFUSF9N SU5fTEVWRUwJMgogCiAKLXN0YXRpYyBCVFN0YWNrIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CitzdGF0aWMgQlRTdGFjayBf YnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJ CQkJCSBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKIHN0YXRpYyBUcmFuc2FjdGlvbklk IF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0 YXRlLAogCQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVu aXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MSw4ICs0Miw5 IEBAIHN0YXRpYyBPZmZzZXROdW1iZXIgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVs LAogCQkJCQkJCQkJICBib29sIGluZGV4VW5jaGFuZ2VkLAogCQkJCQkJCQkJICBCVFN0YWNr IHN0YWNrLAogCQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsKTsKLXN0YXRpYyB2b2lkIF9i dF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBC VFN0YWNrIHN0YWNrKTsKLXN0YXRpYyB2b2lkIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJl bCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorc3RhdGljIHZvaWQgX2J0X3N0ZXByaWdodChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkgIEJUSW5zZXJ0U3RhdGUg aW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spOworc3RhdGljIHZvaWQgX2J0X2luc2VydG9u cGcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9r ZXksCiAJCQkJCQkgICBCdWZmZXIgYnVmLAogCQkJCQkJICAgQnVmZmVyIGNidWYsCiAJCQkJ CQkgICBCVFN0YWNrIHN0YWNrLApAQCAtNTEsMTMgKzUzLDEzIEBAIHN0YXRpYyB2b2lkIF9i dF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAogCQkJ CQkJICAgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsCiAJCQkJCQkgICBpbnQgcG9zdGluZ29m ZiwKIAkJCQkJCSAgIGJvb2wgc3BsaXRfb25seV9wYWdlKTsKLXN0YXRpYyBCdWZmZXIgX2J0 X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVm LAotCQkJCQkJQnVmZmVyIGNidWYsIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5l d2l0ZW1zeiwKLQkJCQkJCUluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcmlnbmV3 aXRlbSwKK3N0YXRpYyBCdWZmZXIgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorCQkJCQkJQnVmZmVyIGJ1ZiwgQnVm ZmVyIGNidWYsIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLAorCQkJCQkJU2l6ZSBuZXdpdGVt c3osIEluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwKIAkJCQkJ CUluZGV4VHVwbGUgbnBvc3RpbmcsIHVpbnQxNiBwb3N0aW5nb2ZmKTsKLXN0YXRpYyB2b2lk IF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgQnVmZmVyIHJi dWYsCi0JCQkJCQkJICBCVFN0YWNrIHN0YWNrLCBib29sIGlzcm9vdCwgYm9vbCBpc29ubHkp Owotc3RhdGljIEJ1ZmZlciBfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVm LCBCdWZmZXIgcmJ1Zik7CitzdGF0aWMgdm9pZCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJICBCdWZmZXIg cmJ1ZiwgQlRTdGFjayBzdGFjaywgYm9vbCBpc3Jvb3QsIGJvb2wgaXNvbmx5KTsKK3N0YXRp YyBCdWZmZXIgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpOwogc3RhdGljIGlubGluZSBib29sIF9idF9wZ2Fk ZHR1cChQYWdlIHBhZ2UsIFNpemUgaXRlbXNpemUsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJ CQkJT2Zmc2V0TnVtYmVyIGl0dXBfb2ZmLCBib29sIG5ld2ZpcnN0ZGF0YWl0ZW0pOwogc3Rh dGljIHZvaWQgX2J0X2RlbGV0ZV9vcl9kZWR1cF9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXBSZWwsCkBAIC0xMDgsNyArMTEwLDcgQEAgX2J0X2RvaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLAogCWJvb2wJCWNoZWNraW5ndW5pcXVlID0gKGNo ZWNrVW5pcXVlICE9IFVOSVFVRV9DSEVDS19OTyk7CiAKIAkvKiB3ZSBuZWVkIGFuIGluc2Vy dGlvbiBzY2FuIGtleSB0byBkbyBvdXIgc2VhcmNoLCBzbyBidWlsZCBvbmUgKi8KLQlpdHVw X2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVwKTsKKwlpdHVwX2tleSA9IF9idF9ta3Nj YW5rZXkocmVsLCBoZWFwUmVsLCBpdHVwKTsKIAogCWlmIChjaGVja2luZ3VuaXF1ZSkKIAl7 CkBAIC0xNjIsNyArMTY0LDcgQEAgc2VhcmNoOgogCSAqIHNlYXJjaGluZyBmcm9tIHRoZSBy b290IHBhZ2UuICBpbnNlcnRzdGF0ZS5idWYgd2lsbCBob2xkIGEgYnVmZmVyIHRoYXQKIAkg KiBpcyBsb2NrZWQgaW4gZXhjbHVzaXZlIG1vZGUgYWZ0ZXJ3YXJkcy4KIAkgKi8KLQlzdGFj ayA9IF9idF9zZWFyY2hfaW5zZXJ0KHJlbCwgJmluc2VydHN0YXRlKTsKKwlzdGFjayA9IF9i dF9zZWFyY2hfaW5zZXJ0KHJlbCwgaGVhcFJlbCwgJmluc2VydHN0YXRlKTsKIAogCS8qCiAJ ICogY2hlY2tpbmd1bmlxdWUgaW5zZXJ0cyBhcmUgbm90IGFsbG93ZWQgdG8gZ28gYWhlYWQg d2hlbiB0d28gdHVwbGVzIHdpdGgKQEAgLTI1NSw4ICsyNTcsOCBAQCBzZWFyY2g6CiAJCSAq LwogCQluZXdpdGVtb2ZmID0gX2J0X2ZpbmRpbnNlcnRsb2MocmVsLCAmaW5zZXJ0c3RhdGUs IGNoZWNraW5ndW5pcXVlLAogCQkJCQkJCQkJICAgaW5kZXhVbmNoYW5nZWQsIHN0YWNrLCBo ZWFwUmVsKTsKLQkJX2J0X2luc2VydG9ucGcocmVsLCBpdHVwX2tleSwgaW5zZXJ0c3RhdGUu YnVmLCBJbnZhbGlkQnVmZmVyLCBzdGFjaywKLQkJCQkJICAgaXR1cCwgaW5zZXJ0c3RhdGUu aXRlbXN6LCBuZXdpdGVtb2ZmLAorCQlfYnRfaW5zZXJ0b25wZyhyZWwsIGhlYXBSZWwsIGl0 dXBfa2V5LCBpbnNlcnRzdGF0ZS5idWYsIEludmFsaWRCdWZmZXIsCisJCQkJCSAgIHN0YWNr LCBpdHVwLCBpbnNlcnRzdGF0ZS5pdGVtc3osIG5ld2l0ZW1vZmYsCiAJCQkJCSAgIGluc2Vy dHN0YXRlLnBvc3RpbmdvZmYsIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMzEyLDcgKzMxNCw3 IEBAIHNlYXJjaDoKICAqIHNpbmNlIGVhY2ggcGVyLWJhY2tlbmQgY2FjaGUgd29uJ3Qgc3Rh eSB2YWxpZCBmb3IgbG9uZy4KICAqLwogc3RhdGljIEJUU3RhY2sKLV9idF9zZWFyY2hfaW5z ZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSkKK19idF9zZWFy Y2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRJbnNlcnRTdGF0 ZSBpbnNlcnRzdGF0ZSkKIHsKIAlBc3NlcnQoaW5zZXJ0c3RhdGUtPmJ1ZiA9PSBJbnZhbGlk QnVmZmVyKTsKIAlBc3NlcnQoIWluc2VydHN0YXRlLT5ib3VuZHNfdmFsaWQpOwpAQCAtMzc1 LDggKzM3Nyw4IEBAIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRT dGF0ZSBpbnNlcnRzdGF0ZSkKIAl9CiAKIAkvKiBDYW5ub3QgdXNlIG9wdGltaXphdGlvbiAt LSBkZXNjZW5kIHRyZWUsIHJldHVybiBwcm9wZXIgZGVzY2VudCBzdGFjayAqLwotCXJldHVy biBfYnRfc2VhcmNoKHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAmaW5zZXJ0c3RhdGUt PmJ1ZiwgQlRfV1JJVEUsCi0JCQkJCSAgTlVMTCk7CisJcmV0dXJuIF9idF9zZWFyY2gocmVs LCBoZWFwcmVsLCBpbnNlcnRzdGF0ZS0+aXR1cF9rZXksICZpbnNlcnRzdGF0ZS0+YnVmLAor CQkJCQkgIEJUX1dSSVRFLCBOVUxMKTsKIH0KIAogLyoKQEAgLTg4NSw3ICs4ODcsNyBAQCBf YnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJCV9idF9jb21wYXJlKHJlbCwg aXR1cF9rZXksIHBhZ2UsIFBfSElLRVkpIDw9IDApCiAJCQkJCWJyZWFrOwogCi0JCQkJX2J0 X3N0ZXByaWdodChyZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CisJCQkJX2J0X3N0ZXByaWdo dChyZWwsIGhlYXBSZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CiAJCQkJLyogVXBkYXRlIGxv Y2FsIHN0YXRlIGFmdGVyIHN0ZXBwaW5nIHJpZ2h0ICovCiAJCQkJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoaW5zZXJ0c3RhdGUtPmJ1Zik7CiAJCQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVl KHBhZ2UpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9u IHJlbCwKIAkJCQlwZ19wcm5nX3VpbnQzMigmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpIDw9IChQ R19VSU5UMzJfTUFYIC8gMTAwKSkKIAkJCQlicmVhazsKIAotCQkJX2J0X3N0ZXByaWdodChy ZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CisJCQlfYnRfc3RlcHJpZ2h0KHJlbCwgaGVhcFJl bCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKIAkJCS8qIFVwZGF0ZSBsb2NhbCBzdGF0ZSBhZnRl ciBzdGVwcGluZyByaWdodCAqLwogCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaW5zZXJ0c3Rh dGUtPmJ1Zik7CiAJCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC0xMDIy LDcgKzEwMjQsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAgKiBpbmRl eGVzLgogICovCiBzdGF0aWMgdm9pZAotX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJU SW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCitfYnRfc3RlcHJpZ2h0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgQlRTdGFjayBzdGFjaykKIHsKIAlQYWdlCQlwYWdlOwogCUJUUGFnZU9wYXF1ZSBv cGFxdWU7CkBAIC0xMDQ4LDcgKzEwNTAsNyBAQCBfYnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJl bCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKIAkJICovCiAJ CWlmIChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKIAkJewotCQkJX2J0X2ZpbmlzaF9z cGxpdChyZWwsIHJidWYsIHN0YWNrKTsKKwkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFw cmVsLCByYnVmLCBzdGFjayk7CiAJCQlyYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAkJCWNvbnRp bnVlOwogCQl9CkBAIC0xMDk5LDYgKzExMDEsNyBAQCBfYnRfc3RlcHJpZ2h0KFJlbGF0aW9u IHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKICAqLwog c3RhdGljIHZvaWQKIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKKwkJCSAgIFJlbGF0 aW9uIGhlYXByZWwsCiAJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkgICBCdWZm ZXIgYnVmLAogCQkJICAgQnVmZmVyIGNidWYsCkBAIC0xMjA5LDggKzEyMTIsOCBAQCBfYnRf aW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCUFzc2VydCghc3BsaXRfb25seV9wYWdlKTsK IAogCQkvKiBzcGxpdCB0aGUgYnVmZmVyIGludG8gbGVmdCBhbmQgcmlnaHQgaGFsdmVzICov Ci0JCXJidWYgPSBfYnRfc3BsaXQocmVsLCBpdHVwX2tleSwgYnVmLCBjYnVmLCBuZXdpdGVt b2ZmLCBpdGVtc3osIGl0dXAsCi0JCQkJCQkgb3JpZ2l0dXAsIG5wb3N0aW5nLCBwb3N0aW5n b2ZmKTsKKwkJcmJ1ZiA9IF9idF9zcGxpdChyZWwsIGhlYXByZWwsIGl0dXBfa2V5LCBidWYs IGNidWYsIG5ld2l0ZW1vZmYsIGl0ZW1zeiwKKwkJCQkJCSBpdHVwLCBvcmlnaXR1cCwgbnBv c3RpbmcsIHBvc3RpbmdvZmYpOwogCQlQcmVkaWNhdGVMb2NrUGFnZVNwbGl0KHJlbCwKIAkJ CQkJCQkgICBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpLAogCQkJCQkJCSAgIEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHJidWYpKTsKQEAgLTEyMzMsNyArMTIzNiw3IEBAIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwKIAkJICogcGFnZS4KIAkJICotLS0tLS0tLS0tCiAJCSAqLwot CQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGJ1ZiwgcmJ1Ziwgc3RhY2ssIGlzcm9vdCwgaXNv bmx5KTsKKwkJX2J0X2luc2VydF9wYXJlbnQocmVsLCBoZWFwcmVsLCBidWYsIHJidWYsIHN0 YWNrLCBpc3Jvb3QsIGlzb25seSk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMjU0LDcgKzEyNTcs NyBAQCBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCQlBc3NlcnQoIWlzbGVhZik7 CiAJCQlBc3NlcnQoQnVmZmVySXNWYWxpZChjYnVmKSk7CiAKLQkJCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwkJCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKIAkJ CW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCQltZXRhZCA9IEJUUGFnZUdl dE1ldGEobWV0YXBnKTsKIApAQCAtMTQxOCw3ICsxNDIxLDcgQEAgX2J0X2luc2VydG9ucGco UmVsYXRpb24gcmVsLAogCQkgKiBjYWxsIF9idF9nZXRyb290aGVpZ2h0IHdoaWxlIGhvbGRp bmcgYSBidWZmZXIgbG9jay4KIAkJICovCiAJCWlmIChCbG9ja051bWJlcklzVmFsaWQoYmxv Y2tjYWNoZSkgJiYKLQkJCV9idF9nZXRyb290aGVpZ2h0KHJlbCkgPj0gQlRSRUVfRkFTVFBB VEhfTUlOX0xFVkVMKQorCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsLCBoZWFwcmVsKSA+PSBC VFJFRV9GQVNUUEFUSF9NSU5fTEVWRUwpCiAJCQlSZWxhdGlvblNldFRhcmdldEJsb2NrKHJl bCwgYmxvY2tjYWNoZSk7CiAJfQogCkBAIC0xNDU5LDggKzE0NjIsOCBAQCBfYnRfaW5zZXJ0 b25wZyhSZWxhdGlvbiByZWwsCiAgKgkJVGhlIHBpbiBhbmQgbG9jayBvbiBidWYgYXJlIG1h aW50YWluZWQuCiAgKi8KIHN0YXRpYyBCdWZmZXIKLV9idF9zcGxpdChSZWxhdGlvbiByZWws IEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCi0JCSAg T2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6LCBJbmRleFR1cGxlIG5l d2l0ZW0sCitfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNj YW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCisJCSAgQnVmZmVyIGNidWYsIE9mZnNl dE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5ld2l0ZW1zeiwgSW5kZXhUdXBsZSBuZXdpdGVt LAogCQkgIEluZGV4VHVwbGUgb3JpZ25ld2l0ZW0sIEluZGV4VHVwbGUgbnBvc3RpbmcsIHVp bnQxNiBwb3N0aW5nb2ZmKQogewogCUJ1ZmZlcgkJcmJ1ZjsKQEAgLTE3MTIsNyArMTcxNSw3 IEBAIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVm ZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCiAJICogd2F5IGJlY2F1c2UgaXQgYXZvaWRzIGFuIHVu bmVjZXNzYXJ5IFBBTklDIHdoZW4gZWl0aGVyIG9yaWdwYWdlIG9yIGl0cwogCSAqIGV4aXN0 aW5nIHNpYmxpbmcgcGFnZSBhcmUgY29ycnVwdC4KIAkgKi8KLQlyYnVmID0gX2J0X2dldGJ1 ZihyZWwsIFBfTkVXLCBCVF9XUklURSk7CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFw cmVsLCBQX05FVywgQlRfV1JJVEUpOwogCXJpZ2h0cGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1 Zik7CiAJcmlnaHRwYWdlbnVtYmVyID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1Zik7CiAJ LyogcmlnaHRwYWdlIHdhcyBpbml0aWFsaXplZCBieSBfYnRfZ2V0YnVmICovCkBAIC0xODg1 LDcgKzE4ODgsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1 cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqLwogCWlmICghaXNyaWdodG1v c3QpCiAJewotCQlzYnVmID0gX2J0X2dldGJ1ZihyZWwsIG9vcGFxdWUtPmJ0cG9fbmV4dCwg QlRfV1JJVEUpOworCQlzYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIG9vcGFxdWUt PmJ0cG9fbmV4dCwgQlRfV1JJVEUpOwogCQlzcGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc2J1Zik7 CiAJCXNvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUoc3BhZ2UpOwogCQlpZiAoc29wYXF1ZS0+ YnRwb19wcmV2ICE9IG9yaWdwYWdlbnVtYmVyKQpAQCAtMjA5Miw2ICsyMDk1LDcgQEAgX2J0 X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVm LCBCdWZmZXIgY2J1ZiwKICAqLwogc3RhdGljIHZvaWQKIF9idF9pbnNlcnRfcGFyZW50KFJl bGF0aW9uIHJlbCwKKwkJCQkgIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJICBCdWZmZXIgYnVm LAogCQkJCSAgQnVmZmVyIHJidWYsCiAJCQkJICBCVFN0YWNrIHN0YWNrLApAQCAtMjExOCw3 ICsyMTIyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQlBc3NlcnQo c3RhY2sgPT0gTlVMTCk7CiAJCUFzc2VydChpc29ubHkpOwogCQkvKiBjcmVhdGUgYSBuZXcg cm9vdCBub2RlIGFuZCB1cGRhdGUgdGhlIG1ldGFwYWdlICovCi0JCXJvb3RidWYgPSBfYnRf bmV3cm9vdChyZWwsIGJ1ZiwgcmJ1Zik7CisJCXJvb3RidWYgPSBfYnRfbmV3cm9vdChyZWws IGhlYXByZWwsIGJ1ZiwgcmJ1Zik7CiAJCS8qIHJlbGVhc2UgdGhlIHNwbGl0IGJ1ZmZlcnMg Ki8KIAkJX2J0X3JlbGJ1ZihyZWwsIHJvb3RidWYpOwogCQlfYnRfcmVsYnVmKHJlbCwgcmJ1 Zik7CkBAIC0yMTU3LDcgKzIxNjEsOCBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiBy ZWwsCiAJCQkJCSBCbG9ja051bWJlcklzVmFsaWQoUmVsYXRpb25HZXRUYXJnZXRCbG9jayhy ZWwpKSkpOwogCiAJCQkvKiBGaW5kIHRoZSBsZWZ0bW9zdCBwYWdlIGF0IHRoZSBuZXh0IGxl dmVsIHVwICovCi0JCQlwYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIG9wYXF1ZS0+YnRw b19sZXZlbCArIDEsIGZhbHNlLCBOVUxMKTsKKwkJCXBidWYgPSBfYnRfZ2V0X2VuZHBvaW50 KHJlbCwgaGVhcHJlbCwgb3BhcXVlLT5idHBvX2xldmVsICsgMSwgZmFsc2UsCisJCQkJCQkJ CQlOVUxMKTsKIAkJCS8qIFNldCB1cCBhIHBob255IHN0YWNrIGVudHJ5IHBvaW50aW5nIHRo ZXJlICovCiAJCQlzdGFjayA9ICZmYWtlc3RhY2s7CiAJCQlzdGFjay0+YnRzX2Jsa25vID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIocGJ1Zik7CkBAIC0yMTgzLDcgKzIxODgsNyBAQCBfYnRf aW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCSAqIG5ldyBkb3dubGluayB3aWxsIGJl IGluc2VydGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4gRXZlbiBidWYncwogCQkgKiBwYXJl bnQgbWF5IGhhdmUgY2hhbmdlZC4KIAkJICovCi0JCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYo cmVsLCBzdGFjaywgYmtudW0pOworCQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgaGVh cHJlbCwgc3RhY2ssIGJrbnVtKTsKIAogCQkvKgogCQkgKiBVbmxvY2sgdGhlIHJpZ2h0IGNo aWxkLiAgVGhlIGxlZnQgY2hpbGQgd2lsbCBiZSB1bmxvY2tlZCBpbgpAQCAtMjIwNyw3ICsy MjEyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGJrbnVtLCByYmtudW0pKSk7CiAKIAkJLyog UmVjdXJzaXZlbHkgaW5zZXJ0IGludG8gdGhlIHBhcmVudCAqLwotCQlfYnRfaW5zZXJ0b25w ZyhyZWwsIE5VTEwsIHBidWYsIGJ1Ziwgc3RhY2stPmJ0c19wYXJlbnQsCisJCV9idF9pbnNl cnRvbnBnKHJlbCwgaGVhcHJlbCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVu dCwKIAkJCQkJICAgbmV3X2l0ZW0sIE1BWEFMSUdOKEluZGV4VHVwbGVTaXplKG5ld19pdGVt KSksCiAJCQkJCSAgIHN0YWNrLT5idHNfb2Zmc2V0ICsgMSwgMCwgaXNvbmx5KTsKIApAQCAt MjIyNyw3ICsyMjMyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogICog YW5kIHVucGlubmVkLgogICovCiB2b2lkCi1fYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCitfYnRfZmluaXNoX3NwbGl0KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2sp CiB7CiAJUGFnZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCUJUUGFnZU9wYXF1 ZSBscGFnZW9wID0gQlRQYWdlR2V0T3BhcXVlKGxwYWdlKTsKQEAgLTIyNDAsNyArMjI0NSw3 IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFj ayBzdGFjaykKIAlBc3NlcnQoUF9JTkNPTVBMRVRFX1NQTElUKGxwYWdlb3ApKTsKIAogCS8q IExvY2sgcmlnaHQgc2libGluZywgdGhlIG9uZSBtaXNzaW5nIHRoZSBkb3dubGluayAqLwot CXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbHBhZ2VvcC0+YnRwb19uZXh0LCBCVF9XUklURSk7 CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBscGFnZW9wLT5idHBvX25leHQs IEJUX1dSSVRFKTsKIAlycGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1Zik7CiAJcnBhZ2VvcCA9 IEJUUGFnZUdldE9wYXF1ZShycGFnZSk7CiAKQEAgLTIyNTIsNyArMjI1Nyw3IEBAIF9idF9m aW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykK IAkJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCiAJCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUg bWV0YXBhZ2UgKi8KLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUpOworCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJU UkVFX01FVEFQQUdFLCBCVF9XUklURSk7CiAJCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0 YWJ1Zik7CiAJCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0yMjY5LDcg KzIyNzQsNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYs IEJUU3RhY2sgc3RhY2spCiAJZWxvZyhERUJVRzEsICJmaW5pc2hpbmcgaW5jb21wbGV0ZSBz cGxpdCBvZiAldS8ldSIsCiAJCSBCdWZmZXJHZXRCbG9ja051bWJlcihsYnVmKSwgQnVmZmVy R2V0QmxvY2tOdW1iZXIocmJ1ZikpOwogCi0JX2J0X2luc2VydF9wYXJlbnQocmVsLCBsYnVm LCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CisJX2J0X2luc2VydF9wYXJlbnQo cmVsLCBoZWFwcmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CiB9 CiAKIC8qCkBAIC0yMzA0LDcgKzIzMDksNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAgKgkJb2Zmc2V0IG51bWJlciBi dHNfb2Zmc2V0ICsgMS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24g cmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKK19idF9nZXRzdGFja2J1 ZihSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkKQogewogCUJsb2NrTnVtYmVyIGJsa25vOwogCU9mZnNldE51bWJlciBz dGFydDsKQEAgLTIzMTgsMTMgKzIzMjMsMTMgQEAgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9u IHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQpCiAJCVBhZ2UJCXBhZ2U7 CiAJCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CiAKLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJs a25vLCBCVF9XUklURSk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBibGtu bywgQlRfV1JJVEUpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKIAkJaWYgKFBfSU5DT01QTEVURV9TUExJVChv cGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgYnVmLCBzdGFjay0+YnRz X3BhcmVudCk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVhcHJlbCwgYnVmLCBzdGFj ay0+YnRzX3BhcmVudCk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0yNDI4LDcgKzI0MzMs NyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9j a051bWJlciBjaGlsZCkKICAqCQlsYnVmLCByYnVmICYgcm9vdGJ1Zi4KICAqLwogc3RhdGlj IEJ1ZmZlcgotX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQnVmZmVy IHJidWYpCitfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZikKIHsKIAlCdWZmZXIJCXJvb3RidWY7CiAJUGFnZQkJ bHBhZ2UsCkBAIC0yNDU0LDEyICsyNDU5LDEyIEBAIF9idF9uZXdyb290KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogCWxvcGFxdWUgPSBCVFBhZ2VHZXRPcGFx dWUobHBhZ2UpOwogCiAJLyogZ2V0IGEgbmV3IHJvb3QgcGFnZSAqLwotCXJvb3RidWYgPSBf YnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwlyb290YnVmID0gX2J0X2dldGJ1 ZihyZWwsIGhlYXByZWwsIFBfTkVXLCBCVF9XUklURSk7CiAJcm9vdHBhZ2UgPSBCdWZmZXJH ZXRQYWdlKHJvb3RidWYpOwogCXJvb3RibGtudW0gPSBCdWZmZXJHZXRCbG9ja051bWJlcihy b290YnVmKTsKIAogCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUgbWV0YXBhZ2UgKi8KLQltZXRh YnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJ VEUpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBh Z2VHZXRNZXRhKG1ldGFwZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMK aW5kZXggM2ZlZWUyOGQxOS4uZWU5OTZiNTY2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRwYWdlLmMKQEAgLTM4LDI1ICszOCwyNCBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBt Z3IuaCIKIAogc3RhdGljIEJUTWV0YVBhZ2VEYXRhICpfYnRfZ2V0bWV0YShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBtZXRhYnVmKTsKLXN0YXRpYyB2b2lkIF9idF9sb2dfcmV1c2VfcGFnZShS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorc3RhdGljIHZvaWQgX2J0X2xvZ19y ZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCk7Ci1zdGF0aWMg dm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKK3N0 YXRpYyB2b2lkIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5k ZWxldGFibGUsCiAJCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVw ZGF0YWJsZSk7CiBzdGF0aWMgY2hhciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBv c3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKnVwZGF0ZWRvZmZzZXRzLAogCQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1ZmxlbiwgYm9v bCBuZWVkc3dhbCk7Ci1zdGF0aWMgYm9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsCi0JCQkJCQkJCSAgIEJUU3RhY2sgc3RhY2spOwor c3RhdGljIGJvb2wgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsCisJCQkJCQkJCSAgIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNr KTsKIHN0YXRpYyBib29sIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWws IEJ1ZmZlciBsZWFmYnVmLAogCQkJCQkJCQkJIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJ CQkJCQkJCSBib29sICpyaWdodHNpYl9lbXB0eSwKIAkJCQkJCQkJCSBCVFZhY1N0YXRlICp2 c3RhdGUpOwotc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBjaGlsZCwKLQkJCQkJCQkJCUJUU3RhY2sgc3RhY2ssCi0JCQkJ CQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIgKnBv ZmZzZXQsCitzdGF0aWMgYm9vbCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkJCQlCbG9ja051bWJlciBjaGlsZCwgQlRT dGFjayBzdGFjaywKKwkJCQkJCQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwgT2Zmc2V0TnVt YmVyICpwb2Zmc2V0LAogCQkJCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwKIAkJCQkJ CQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYik7CiBzdGF0aWMgdm9pZCBfYnRf cGVuZGluZ2ZzbV9hZGQoQlRWYWNTdGF0ZSAqdnN0YXRlLCBCbG9ja051bWJlciB0YXJnZXQs CkBAIC0xNzgsNyArMTc3LDcgQEAgX2J0X2dldG1ldGEoUmVsYXRpb24gcmVsLCBCdWZmZXIg bWV0YWJ1ZikKICAqIGluZGV4IHR1cGxlcyBuZWVkZWQgdG8gYmUgZGVsZXRlZC4KICAqLwog Ym9vbAotX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKK19idF92YWN1 dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJ QnVmZmVyCQltZXRhYnVmOwogCVBhZ2UJCW1ldGFwZzsKQEAgLTE5MSw3ICsxOTAsNyBAQCBf YnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQogCSAqCiAJICogTm90ZSB0 aGF0IHdlIGRlbGliZXJhdGVseSBhdm9pZCB1c2luZyBjYWNoZWQgdmVyc2lvbiBvZiBtZXRh cGFnZSBoZXJlLgogCSAqLwotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVU QVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwg QlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0 YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAJYnRtX3ZlcnNpb24g PSBtZXRhZC0+YnRtX3ZlcnNpb247CkBAIC0yMzEsNyArMjMwLDcgQEAgX2J0X3ZhY3V1bV9u ZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKICAqIGZpbmFsaXplZC4KICAqLwogdm9pZAot X2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVs cGFnZXMpCitfYnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKIHsKIAlCdWZmZXIJCW1ldGFidWY7 CiAJUGFnZQkJbWV0YXBnOwpAQCAtMjU1LDcgKzI1NCw3IEBAIF9idF9zZXRfY2xlYW51cF9p bmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogCSAqIG5vIGxv bmdlciB1c2VkIGFzIG9mIFBvc3RncmVTUUwgMTQuICBXZSBzZXQgaXQgdG8gLTEuMCBvbiBy ZXdyaXRlLCBqdXN0CiAJICogdG8gYmUgY29uc2lzdGVudC4KIAkgKi8KLQltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAlt ZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCW1ldGFkID0gQlRQYWdlR2V0TWV0 YShtZXRhcGcpOwogCkBAIC0zNDAsNyArMzM5LDcgQEAgX2J0X3NldF9jbGVhbnVwX2luZm8o UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAgKgkJVGhlIG1ldGFk YXRhIHBhZ2UgaXMgbm90IGxvY2tlZCBvciBwaW5uZWQgb24gZXhpdC4KICAqLwogQnVmZmVy Ci1fYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCitfYnRfZ2V0cm9vdChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGludCBhY2Nlc3MpCiB7CiAJQnVmZmVy CQltZXRhYnVmOwogCUJ1ZmZlcgkJcm9vdGJ1ZjsKQEAgLTM3MCw3ICszNjksNyBAQCBfYnRf Z2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJCUFzc2VydChyb290Ymxrbm8g IT0gUF9OT05FKTsKIAkJcm9vdGxldmVsID0gbWV0YWQtPmJ0bV9mYXN0bGV2ZWw7CiAKLQkJ cm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCByb290Ymxrbm8sIEJUX1JFQUQpOworCQlyb290 YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CiAJ CXJvb3RwYWdlID0gQnVmZmVyR2V0UGFnZShyb290YnVmKTsKIAkJcm9vdG9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShyb290cGFnZSk7CiAKQEAgLTM5Niw3ICszOTUsNyBAQCBfYnRfZ2V0 cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJCXJlbC0+cmRfYW1jYWNoZSA9IE5V TEw7CiAJfQogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwg QlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9N RVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYp OwogCiAJLyogaWYgbm8gcm9vdCBwYWdlIGluaXRpYWxpemVkIHlldCwgZG8gaXQgKi8KQEAg LTQyOSw3ICs0MjgsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3Mp CiAJCQkgKiB0byBvcHRpbWl6ZSB0aGlzIGNhc2UuKQogCQkJICovCiAJCQlfYnRfcmVsYnVm KHJlbCwgbWV0YWJ1Zik7Ci0JCQlyZXR1cm4gX2J0X2dldHJvb3QocmVsLCBhY2Nlc3MpOwor CQkJcmV0dXJuIF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgYWNjZXNzKTsKIAkJfQogCiAJ CS8qCkBAIC00MzcsNyArNDM2LDcgQEAgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQg YWNjZXNzKQogCQkgKiB0aGUgbmV3IHJvb3QgcGFnZS4gIFNpbmNlIHRoaXMgaXMgdGhlIGZp cnN0IHBhZ2UgaW4gdGhlIHRyZWUsIGl0J3MKIAkJICogYSBsZWFmIGFzIHdlbGwgYXMgdGhl IHJvb3QuCiAJCSAqLwotCQlyb290YnVmID0gX2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9X UklURSk7CisJCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgUF9ORVcsIEJU X1dSSVRFKTsKIAkJcm9vdGJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocm9vdGJ1Zik7 CiAJCXJvb3RwYWdlID0gQnVmZmVyR2V0UGFnZShyb290YnVmKTsKIAkJcm9vdG9wYXF1ZSA9 IEJUUGFnZUdldE9wYXF1ZShyb290cGFnZSk7CkBAIC01NzQsNyArNTczLDcgQEAgX2J0X2dl dHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogICogbW92aW5nIHRvIHRoZSByb290 IC0tLSB0aGF0J2QgZGVhZGxvY2sgYWdhaW5zdCBhbnkgY29uY3VycmVudCByb290IHNwbGl0 LikKICAqLwogQnVmZmVyCi1fYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQorX2J0X2dl dHRydWVyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJ CW1ldGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtNTk2LDcgKzU5NSw3IEBAIF9idF9nZXR0 cnVlcm9vdChSZWxhdGlvbiByZWwpCiAJCXBmcmVlKHJlbC0+cmRfYW1jYWNoZSk7CiAJcmVs LT5yZF9hbWNhY2hlID0gTlVMTDsKIAotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRS RUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVh cHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBh Z2UobWV0YWJ1Zik7CiAJbWV0YW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShtZXRhcGcpOwog CW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwpAQCAtNjY5LDcgKzY2OCw3IEBAIF9i dF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCiAgKgkJYWJvdXQgdXBkYXRpbmcgcHJldmlv dXNseSBjYWNoZWQgZGF0YS4KICAqLwogaW50Ci1fYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlv biByZWwpCitfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCkBAIC02NzcsNyArNjc2LDcgQEAg X2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKQogCXsKIAkJQnVmZmVyCQltZXRhYnVm OwogCi0JCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JF QUQpOworCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQ QUdFLCBCVF9SRUFEKTsKIAkJbWV0YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYpOwog CiAJCS8qCkBAIC03MzMsNyArNzMyLDcgQEAgX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24g cmVsKQogICoJCXBnX3VwZ3JhZGUnZCBmcm9tIFBvc3RncmVzIDEyLgogICovCiB2b2lkCi1f YnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wg KmFsbGVxdWFsaW1hZ2UpCitfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVxdWFsaW1hZ2UpCiB7 CiAJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCkBAIC03NDEsNyArNzQwLDcgQEAgX2J0X21l dGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29sICphbGxl cXVhbGltYWdlKQogCXsKIAkJQnVmZmVyCQltZXRhYnVmOwogCi0JCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAkJbWV0 YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYpOwogCiAJCS8qCkBAIC04MjUsNyArODI0 LDggQEAgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpCiAgKiBMb2cg dGhlIHJldXNlIG9mIGEgcGFnZSBmcm9tIHRoZSBGU00uCiAgKi8KIHN0YXRpYyB2b2lkCi1f YnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVs bFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKK19idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorCQkJCSAgIEZ1bGxU cmFuc2FjdGlvbklkIHNhZmV4aWQpCiB7CiAJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19y ZXVzZTsKIApAQCAtODY4LDcgKzg2OCw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQog ICoJCWFzIF9idF9sb2NrYnVmKCkuCiAgKi8KIEJ1ZmZlcgotX2J0X2dldGJ1ZihSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKQorX2J0X2dldGJ1ZihSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNj ZXNzKQogewogCUJ1ZmZlcgkJYnVmOwogCkBAIC05NDMsNyArOTQzLDcgQEAgX2J0X2dldGJ1 ZihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKQogCQkJCQkg KiB0aGFuIHNhZmV4aWQgdmFsdWUKIAkJCQkJICovCiAJCQkJCWlmIChYTG9nU3RhbmRieUlu Zm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCQkJCQlfYnRfbG9nX3Jl dXNlX3BhZ2UocmVsLCBibGtubywKKwkJCQkJCV9idF9sb2dfcmV1c2VfcGFnZShyZWwsIGhl YXByZWwsIGJsa25vLAogCQkJCQkJCQkJCSAgIEJUUGFnZUdldERlbGV0ZVhpZChwYWdlKSk7 CiAKIAkJCQkJLyogT2theSB0byB1c2UgcGFnZS4gIFJlLWluaXRpYWxpemUgYW5kIHJldHVy biBpdC4gKi8KQEAgLTEyOTMsNyArMTI5Myw3IEBAIF9idF9kZWxpdGVtc192YWN1dW0oUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLAogICogY2xlYXIgcGFnZSdzIFZBQ1VVTSBjeWNsZSBJ RC4KICAqLwogc3RhdGljIHZvaWQKLV9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAorX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCVRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b24sCiAJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRl bGV0YWJsZSwKIAkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRh YmxlKQpAQCAtMTY4NCw4ICsxNjg0LDggQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZV9jaGVjayhS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJfQogCiAJLyog UGh5c2ljYWxseSBkZWxldGUgdHVwbGVzIChvciBUSURzKSB1c2luZyBkZWxldGFibGUgKG9y IHVwZGF0YWJsZSkgKi8KLQlfYnRfZGVsaXRlbXNfZGVsZXRlKHJlbCwgYnVmLCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCWRlbGV0YWJsZSwgbmRlbGV0YWJsZSwgdXBkYXRh YmxlLCBudXBkYXRhYmxlKTsKKwlfYnRfZGVsaXRlbXNfZGVsZXRlKHJlbCwgaGVhcFJlbCwg YnVmLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgZGVsZXRhYmxlLAorCQkJCQkJbmRlbGV0 YWJsZSwgdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsKIAogCS8qIGJlIHRpZHkgKi8KIAlmb3Ig KGludCBpID0gMDsgaSA8IG51cGRhdGFibGU7IGkrKykKQEAgLTE3MDYsNyArMTcwNiw4IEBA IF9idF9kZWxpdGVtc19kZWxldGVfY2hlY2soUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBS ZWxhdGlvbiBoZWFwUmVsLAogICogc2FtZSBsZXZlbCBtdXN0IGFsd2F5cyBiZSBsb2NrZWQg bGVmdCB0byByaWdodCB0byBhdm9pZCBkZWFkbG9ja3MuCiAgKi8KIHN0YXRpYyBib29sCi1f YnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWZ0c2li LCBCbG9ja051bWJlciB0YXJnZXQpCitfYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBsZWZ0c2liLAorCQkJCQkgIEJs b2NrTnVtYmVyIHRhcmdldCkKIHsKIAlCdWZmZXIJCWJ1ZjsKIAlQYWdlCQlwYWdlOwpAQCAt MTcxNyw3ICsxNzE4LDcgQEAgX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQogCWlmIChsZWZ0c2li ID09IFBfTk9ORSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JYnVmID0gX2J0X2dldGJ1ZihyZWws IGxlZnRzaWIsIEJUX1JFQUQpOworCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBs ZWZ0c2liLCBCVF9SRUFEKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCW9wYXF1 ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApAQCAtMTc2Myw3ICsxNzY0LDcgQEAgX2J0 X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwg QmxvY2tOdW1iZXIgdGFyZ2V0KQogICogdG8tYmUtZGVsZXRlZCBzdWJ0cmVlLikKICAqLwog c3RhdGljIGJvb2wKLV9idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBC bG9ja051bWJlciBsZWFmcmlnaHRzaWIpCitfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2li KQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBAIC0xNzcyLDcgKzE3NzMsNyBA QCBfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg bGVhZnJpZ2h0c2liKQogCiAJQXNzZXJ0KGxlYWZyaWdodHNpYiAhPSBQX05PTkUpOwogCi0J YnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlYWZyaWdodHNpYiwgQlRfUkVBRCk7CisJYnVmID0g X2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxlYWZyaWdodHNpYiwgQlRfUkVBRCk7CiAJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFn ZSk7CiAKQEAgLTE5NjEsMTcgKzE5NjIsMTggQEAgX2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0YXRlKQogCQkJCSAqIG1hcmtlZCB3 aXRoIElOQ09NUExFVEVfU1BMSVQgZmxhZyBiZWZvcmUgcHJvY2VlZGluZwogCQkJCSAqLwog CQkJCUFzc2VydChsZWFmYmxrbm8gPT0gc2NhbmJsa25vKTsKLQkJCQlpZiAoX2J0X2xlZnRz aWJfc3BsaXRmbGFnKHJlbCwgbGVmdHNpYiwgbGVhZmJsa25vKSkKKwkJCQlpZiAoX2J0X2xl ZnRzaWJfc3BsaXRmbGFnKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBs ZWFmYmxrbm8pKQogCQkJCXsKIAkJCQkJUmVsZWFzZUJ1ZmZlcihsZWFmYnVmKTsKIAkJCQkJ cmV0dXJuOwogCQkJCX0KIAogCQkJCS8qIHdlIG5lZWQgYW4gaW5zZXJ0aW9uIHNjYW4ga2V5 IGZvciB0aGUgc2VhcmNoLCBzbyBidWlsZCBvbmUgKi8KLQkJCQlpdHVwX2tleSA9IF9idF9t a3NjYW5rZXkocmVsLCB0YXJnZXRrZXkpOworCQkJCWl0dXBfa2V5ID0gX2J0X21rc2Nhbmtl eShyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgdGFyZ2V0a2V5KTsKIAkJCQkvKiBmaW5k IHRoZSBsZWZ0bW9zdCBsZWFmIHBhZ2Ugd2l0aCBtYXRjaGluZyBwaXZvdC9oaWdoIGtleSAq LwogCQkJCWl0dXBfa2V5LT5waXZvdHNlYXJjaCA9IHRydWU7Ci0JCQkJc3RhY2sgPSBfYnRf c2VhcmNoKHJlbCwgaXR1cF9rZXksICZzbGVhZmJ1ZiwgQlRfUkVBRCwgTlVMTCk7CisJCQkJ c3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBpdHVwX2tl eSwKKwkJCQkJCQkJICAgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMKTsKIAkJCQkvKiB3b24n dCBuZWVkIGEgc2Vjb25kIGxvY2sgb3IgcGluIG9uIGxlYWZidWYgKi8KIAkJCQlfYnRfcmVs YnVmKHJlbCwgc2xlYWZidWYpOwogCkBAIC0yMDAyLDcgKzIwMDQsNyBAQCBfYnRfcGFnZWRl bChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJ CQkgKiBsZWFmYnVmIHBhZ2UgaGFsZi1kZWFkLgogCQkJICovCiAJCQlBc3NlcnQoUF9JU0xF QUYob3BhcXVlKSAmJiAhUF9JR05PUkUob3BhcXVlKSk7Ci0JCQlpZiAoIV9idF9tYXJrX3Bh Z2VfaGFsZmRlYWQocmVsLCBsZWFmYnVmLCBzdGFjaykpCisJCQlpZiAoIV9idF9tYXJrX3Bh Z2VfaGFsZmRlYWQocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIGxlYWZidWYsIHN0YWNr KSkKIAkJCXsKIAkJCQlfYnRfcmVsYnVmKHJlbCwgbGVhZmJ1Zik7CiAJCQkJcmV0dXJuOwpA QCAtMjA2NSw3ICsyMDY3LDcgQEAgX2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIg bGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0YXRlKQogCQlpZiAoIXJpZ2h0c2liX2VtcHR5KQog CQkJYnJlYWs7CiAKLQkJbGVhZmJ1ZiA9IF9idF9nZXRidWYocmVsLCByaWdodHNpYiwgQlRf V1JJVEUpOworCQlsZWFmYnVmID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVh cHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKIAl9CiB9CiAKQEAgLTIwODQsNyArMjA4Niw4 IEBAIF9idF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3Rh dGUgKnZzdGF0ZSkKICAqIHN1Y2Nlc3NmdWxseS4KICAqLwogc3RhdGljIGJvb2wKLV9idF9t YXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFj ayBzdGFjaykKK19idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCdWZmZXIgbGVhZmJ1ZiwKKwkJCQkJICAgQlRTdGFjayBzdGFjaykKIHsK IAlCbG9ja051bWJlciBsZWFmYmxrbm87CiAJQmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liOwpA QCAtMjExOSw3ICsyMTIyLDcgQEAgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNrKQogCSAqIGRlbGV0ZSB0aGUgZG93 bmxpbmsuICBJdCB3b3VsZCBmYWlsIHRoZSAicmlnaHQgc2libGluZyBvZiB0YXJnZXQgcGFn ZQogCSAqIGlzIGFsc28gdGhlIG5leHQgY2hpbGQgaW4gcGFyZW50IHBhZ2UiIGNyb3NzLWNo ZWNrIGJlbG93LgogCSAqLwotCWlmIChfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKHJlbCwg bGVhZnJpZ2h0c2liKSkKKwlpZiAoX2J0X3JpZ2h0c2liX2hhbGZkZWFkZmxhZyhyZWwsIGhl YXByZWwsIGxlYWZyaWdodHNpYikpCiAJewogCQllbG9nKERFQlVHMSwgImNvdWxkIG5vdCBk ZWxldGUgcGFnZSAldSBiZWNhdXNlIGl0cyByaWdodCBzaWJsaW5nICV1IGlzIGhhbGYtZGVh ZCIsCiAJCQkgbGVhZmJsa25vLCBsZWFmcmlnaHRzaWIpOwpAQCAtMjE0Myw3ICsyMTQ2LDcg QEAgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFN0YWNrIHN0YWNrKQogCSAqLwogCXRvcHBhcmVudCA9IGxlYWZibGtubzsKIAl0b3Bw YXJlbnRyaWdodHNpYiA9IGxlYWZyaWdodHNpYjsKLQlpZiAoIV9idF9sb2NrX3N1YnRyZWVf cGFyZW50KHJlbCwgbGVhZmJsa25vLCBzdGFjaywKKwlpZiAoIV9idF9sb2NrX3N1YnRyZWVf cGFyZW50KHJlbCwgaGVhcHJlbCwgbGVhZmJsa25vLCBzdGFjaywKIAkJCQkJCQkJICZzdWJ0 cmVlcGFyZW50LCAmcG9mZnNldCwKIAkJCQkJCQkJICZ0b3BwYXJlbnQsICZ0b3BwYXJlbnRy aWdodHNpYikpCiAJCXJldHVybiBmYWxzZTsKQEAgLTIzNjMsNyArMjM2Niw3IEBAIF9idF91 bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9j a051bWJlciBzY2FuYmxrbm8sCiAJCUFzc2VydCh0YXJnZXQgIT0gbGVhZmJsa25vKTsKIAog CQkvKiBGZXRjaCB0aGUgYmxvY2sgbnVtYmVyIG9mIHRoZSB0YXJnZXQncyBsZWZ0IHNpYmxp bmcgKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIHRhcmdldCwgQlRfUkVBRCk7CisJCWJ1 ZiA9IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIHRhcmdldCwgQlRf UkVBRCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKIAkJbGVmdHNpYiA9IG9wYXF1ZS0+YnRwb19wcmV2OwpAQCAt MjM5MCw3ICsyMzkzLDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJX2J0X2xvY2ti dWYocmVsLCBsZWFmYnVmLCBCVF9XUklURSk7CiAJaWYgKGxlZnRzaWIgIT0gUF9OT05FKQog CXsKLQkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CisJCWxi dWYgPSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBC VF9XUklURSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCQlvcGFxdWUgPSBC VFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCXdoaWxlIChQX0lTREVMRVRFRChvcGFxdWUpIHx8 IG9wYXF1ZS0+YnRwb19uZXh0ICE9IHRhcmdldCkKQEAgLTI0NDAsNyArMjQ0Myw3IEBAIF9i dF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBC bG9ja051bWJlciBzY2FuYmxrbm8sCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJ CQkvKiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0JCQlsYnVmID0gX2J0X2dldGJ1ZihyZWws IGxlZnRzaWIsIEJUX1dSSVRFKTsKKwkJCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRl LT5pbmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CiAJCQlwYWdlID0gQnVmZmVy R2V0UGFnZShsYnVmKTsKIAkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJ fQpAQCAtMjUwNCw3ICsyNTA3LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkgKiBB bmQgbmV4dCB3cml0ZS1sb2NrIHRoZSAoY3VycmVudCkgcmlnaHQgc2libGluZy4KIAkgKi8K IAlyaWdodHNpYiA9IG9wYXF1ZS0+YnRwb19uZXh0OwotCXJidWYgPSBfYnRfZ2V0YnVmKHJl bCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0 ZS0+aW5mby0+aGVhcHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKIAlwYWdlID0gQnVmZmVy R2V0UGFnZShyYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJaWYg KG9wYXF1ZS0+YnRwb19wcmV2ICE9IHRhcmdldCkKQEAgLTI1MzMsNyArMjUzNiw4IEBAIF9i dF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBC bG9ja051bWJlciBzY2FuYmxrbm8sCiAJCWlmIChQX1JJR0hUTU9TVChvcGFxdWUpKQogCQl7 CiAJCQkvKiByaWdodHNpYiB3aWxsIGJlIHRoZSBvbmx5IG9uZSBsZWZ0IG9uIHRoZSBsZXZl bCAqLwotCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf V1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmluZm8tPmhl YXByZWwsIEJUUkVFX01FVEFQQUdFLAorCQkJCQkJCQkgQlRfV1JJVEUpOwogCQkJbWV0YXBn ID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFkID0gQlRQYWdlR2V0TWV0YSht ZXRhcGcpOwogCkBAIC0yNzczLDkgKzI3NzcsMTAgQEAgX2J0X3VubGlua19oYWxmZGVhZF9w YWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtu bywKICAqIHBhcmVudCBibG9jayBpbiB0aGUgbGVhZmJ1ZiBwYWdlIHVzaW5nIEJUcmVlVHVw bGVTZXRUb3BQYXJlbnQoKSkuCiAgKi8KIHN0YXRpYyBib29sCi1fYnRfbG9ja19zdWJ0cmVl X3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNr LAotCQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50LCBPZmZzZXROdW1iZXIgKnBvZmZzZXQs Ci0JCQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50LCBCbG9ja051bWJlciAqdG9wcGFyZW50 cmlnaHRzaWIpCitfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLAorCQkJCQkJQlRTdGFjayBzdGFjaywg QnVmZmVyICpzdWJ0cmVlcGFyZW50LAorCQkJCQkJT2Zmc2V0TnVtYmVyICpwb2Zmc2V0LCBC bG9ja051bWJlciAqdG9wcGFyZW50LAorCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudHJp Z2h0c2liKQogewogCUJsb2NrTnVtYmVyIHBhcmVudCwKIAkJCQlsZWZ0c2licGFyZW50OwpA QCAtMjc4OSw3ICsyNzk0LDcgQEAgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBjaGlsZCwgQlRTdGFjayBzdGFjaywKIAkgKiBMb2NhdGUgdGhl IHBpdm90IHR1cGxlIHdob3NlIGRvd25saW5rIHBvaW50cyB0byAiY2hpbGQiLiAgV3JpdGUg bG9jawogCSAqIHRoZSBwYXJlbnQgcGFnZSBpdHNlbGYuCiAJICovCi0JcGJ1ZiA9IF9idF9n ZXRzdGFja2J1ZihyZWwsIHN0YWNrLCBjaGlsZCk7CisJcGJ1ZiA9IF9idF9nZXRzdGFja2J1 ZihyZWwsIGhlYXByZWwsIHN0YWNrLCBjaGlsZCk7CiAJaWYgKHBidWYgPT0gSW52YWxpZEJ1 ZmZlcikKIAl7CiAJCS8qCkBAIC0yODg5LDExICsyODk0LDExIEBAIF9idF9sb2NrX3N1YnRy ZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQsIEJUU3RhY2sgc3Rh Y2ssCiAJICoKIAkgKiBOb3RlOiBXZSBkZWxpYmVyYXRlbHkgYXZvaWQgY29tcGxldGluZyBp bmNvbXBsZXRlIHNwbGl0cyBoZXJlLgogCSAqLwotCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZs YWcocmVsLCBsZWZ0c2licGFyZW50LCBwYXJlbnQpKQorCWlmIChfYnRfbGVmdHNpYl9zcGxp dGZsYWcocmVsLCBoZWFwcmVsLCBsZWZ0c2licGFyZW50LCBwYXJlbnQpKQogCQlyZXR1cm4g ZmFsc2U7CiAKIAkvKiBSZWN1cnNlIHRvIGV4YW1pbmUgY2hpbGQgcGFnZSdzIGdyYW5kcGFy ZW50IHBhZ2UgKi8KLQlyZXR1cm4gX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBwYXJl bnQsIHN0YWNrLT5idHNfcGFyZW50LAorCXJldHVybiBfYnRfbG9ja19zdWJ0cmVlX3BhcmVu dChyZWwsIGhlYXByZWwsIHBhcmVudCwgc3RhY2stPmJ0c19wYXJlbnQsCiAJCQkJCQkJCSAg IHN1YnRyZWVwYXJlbnQsIHBvZmZzZXQsCiAJCQkJCQkJCSAgIHRvcHBhcmVudCwgdG9wcGFy ZW50cmlnaHRzaWIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKaW5kZXgg YTY4ZGQwNzUzNC4uOTdhMzliMGY2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJl ZS5jCkBAIC04MzUsNyArODM1LDcgQEAgYnR2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5m byAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAlpZiAoc3RhdHMgPT0g TlVMTCkKIAl7CiAJCS8qIENoZWNrIGlmIFZBQ1VVTSBvcGVyYXRpb24gY2FuIGVudGlyZWx5 IGF2b2lkIGJ0dmFjdXVtc2NhbigpIGNhbGwgKi8KLQkJaWYgKCFfYnRfdmFjdXVtX25lZWRz X2NsZWFudXAoaW5mby0+aW5kZXgpKQorCQlpZiAoIV9idF92YWN1dW1fbmVlZHNfY2xlYW51 cChpbmZvLT5pbmRleCwgaW5mby0+aGVhcHJlbCkpCiAJCQlyZXR1cm4gTlVMTDsKIAogCQkv KgpAQCAtODcxLDcgKzg3MSw3IEBAIGJ0dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8g KmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJICovCiAJQXNzZXJ0KHN0 YXRzLT5wYWdlc19kZWxldGVkID49IHN0YXRzLT5wYWdlc19mcmVlKTsKIAludW1fZGVscGFn ZXMgPSBzdGF0cy0+cGFnZXNfZGVsZXRlZCAtIHN0YXRzLT5wYWdlc19mcmVlOwotCV9idF9z ZXRfY2xlYW51cF9pbmZvKGluZm8tPmluZGV4LCBudW1fZGVscGFnZXMpOworCV9idF9zZXRf Y2xlYW51cF9pbmZvKGluZm8tPmluZGV4LCBpbmZvLT5oZWFwcmVsLCBudW1fZGVscGFnZXMp OwogCiAJLyoKIAkgKiBJdCdzIHF1aXRlIHBvc3NpYmxlIGZvciB1cyB0byBiZSBmb29sZWQg YnkgY29uY3VycmVudCBwYWdlIHNwbGl0cyBpbnRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzZWFyY2guYwppbmRleCBjNDNjMWEyODMwLi41YzcyOGUzNTNkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKQEAgLTQyLDcgKzQyLDggQEAgc3RhdGlj IGJvb2wgX2J0X3N0ZXBwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBk aXIpOwogc3RhdGljIGJvb2wgX2J0X3JlYWRuZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4s IEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcik7CiBzdGF0aWMgYm9vbCBf YnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBi bGtubywKIAkJCQkJCQkJICBTY2FuRGlyZWN0aW9uIGRpcik7Ci1zdGF0aWMgQnVmZmVyIF9i dF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hv dCk7CitzdGF0aWMgQnVmZmVyIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90KTsKIHN0 YXRpYyBib29sIF9idF9lbmRwb2ludChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rp b24gZGlyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBfYnRfaW5pdGlhbGl6ZV9tb3JlX2RhdGEo QlRTY2FuT3BhcXVlIHNvLCBTY2FuRGlyZWN0aW9uIGRpcik7CiAKQEAgLTkzLDE0ICs5NCwx NCBAQCBfYnRfZHJvcF9sb2NrX2FuZF9tYXliZV9waW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBC VFNjYW5Qb3Mgc3ApCiAgKiBkdXJpbmcgdGhlIHNlYXJjaCB3aWxsIGJlIGZpbmlzaGVkLgog ICovCiBCVFN0YWNrCi1fYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtl eSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAotCQkgICBTbmFwc2hvdCBzbmFwc2hvdCkK K19idF9zZWFyY2goUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNl cnQga2V5LCBCdWZmZXIgKmJ1ZlAsCisJCSAgIGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBz aG90KQogewogCUJUU3RhY2sJCXN0YWNrX2luID0gTlVMTDsKIAlpbnQJCQlwYWdlX2FjY2Vz cyA9IEJUX1JFQUQ7CiAKIAkvKiBHZXQgdGhlIHJvb3QgcGFnZSB0byBzdGFydCB3aXRoICov Ci0JKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJKmJ1ZlAgPSBfYnRfZ2V0 cm9vdChyZWwsIGhlYXByZWwsIGFjY2Vzcyk7CiAKIAkvKiBJZiBpbmRleCBpcyBlbXB0eSBh bmQgYWNjZXNzID0gQlRfUkVBRCwgbm8gcm9vdCBwYWdlIGlzIGNyZWF0ZWQuICovCiAJaWYg KCFCdWZmZXJJc1ZhbGlkKCpidWZQKSkKQEAgLTEyOSw4ICsxMzAsOCBAQCBfYnRfc2VhcmNo KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBpbnQgYWNj ZXNzLAogCQkgKiBhbHNvIHRha2VuIGNhcmUgb2YgaW4gX2J0X2dldHN0YWNrYnVmKS4gIEJ1 dCB0aGlzIGlzIGEgZ29vZAogCQkgKiBvcHBvcnR1bml0eSB0byBmaW5pc2ggc3BsaXRzIG9m IGludGVybmFsIHBhZ2VzIHRvby4KIAkJICovCi0JCSpidWZQID0gX2J0X21vdmVyaWdodChy ZWwsIGtleSwgKmJ1ZlAsIChhY2Nlc3MgPT0gQlRfV1JJVEUpLCBzdGFja19pbiwKLQkJCQkJ CQkgIHBhZ2VfYWNjZXNzLCBzbmFwc2hvdCk7CisJCSpidWZQID0gX2J0X21vdmVyaWdodChy ZWwsIGhlYXByZWwsIGtleSwgKmJ1ZlAsIChhY2Nlc3MgPT0gQlRfV1JJVEUpLAorCQkJCQkJ CSAgc3RhY2tfaW4sIHBhZ2VfYWNjZXNzLCBzbmFwc2hvdCk7CiAKIAkJLyogaWYgdGhpcyBp cyBhIGxlYWYgcGFnZSwgd2UncmUgZG9uZSAqLwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZSgq YnVmUCk7CkBAIC0xOTAsNyArMTkxLDcgQEAgX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJU U2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKIAkJICogYnV0IGJl Zm9yZSB3ZSBhY3F1aXJlZCBhIHdyaXRlIGxvY2suICBJZiBpdCBoYXMsIHdlIG1heSBuZWVk IHRvCiAJCSAqIG1vdmUgcmlnaHQgdG8gaXRzIG5ldyBzaWJsaW5nLiAgRG8gdGhhdC4KIAkJ ICovCi0JCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0 YWNrX2luLCBCVF9XUklURSwKKwkJKmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJlbCwgaGVhcHJl bCwga2V5LCAqYnVmUCwgdHJ1ZSwgc3RhY2tfaW4sIEJUX1dSSVRFLAogCQkJCQkJCSAgc25h cHNob3QpOwogCX0KIApAQCAtMjM0LDYgKzIzNSw3IEBAIF9idF9zZWFyY2goUmVsYXRpb24g cmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3MsCiAgKi8K IEJ1ZmZlcgogX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCisJCQkgIFJlbGF0aW9uIGhl YXByZWwsCiAJCQkgIEJUU2Nhbkluc2VydCBrZXksCiAJCQkgIEJ1ZmZlciBidWYsCiAJCQkg IGJvb2wgZm9ydXBkYXRlLApAQCAtMjg4LDEyICsyOTAsMTIgQEAgX2J0X21vdmVyaWdodChS ZWxhdGlvbiByZWwsCiAJCQl9CiAKIAkJCWlmIChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVl KSkKLQkJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgYnVmLCBzdGFjayk7CisJCQkJX2J0X2Zp bmlzaF9zcGxpdChyZWwsIGhlYXByZWwsIGJ1Ziwgc3RhY2spOwogCQkJZWxzZQogCQkJCV9i dF9yZWxidWYocmVsLCBidWYpOwogCiAJCQkvKiByZS1hY3F1aXJlIHRoZSBsb2NrIGluIHRo ZSByaWdodCBtb2RlLCBhbmQgcmUtY2hlY2sgKi8KLQkJCWJ1ZiA9IF9idF9nZXRidWYocmVs LCBibGtubywgYWNjZXNzKTsKKwkJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBi bGtubywgYWNjZXNzKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTg2MCw2ICs4NjIsNyBA QCBib29sCiBfYnRfZmlyc3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRp cikKIHsKIAlSZWxhdGlvbglyZWwgPSBzY2FuLT5pbmRleFJlbGF0aW9uOworCVJlbGF0aW9u IAloZWFwcmVsID0gc2Nhbi0+aGVhcFJlbGF0aW9uOwogCUJUU2Nhbk9wYXF1ZSBzbyA9IChC VFNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsKIAlCdWZmZXIJCWJ1ZjsKIAlCVFN0YWNrCQlz dGFjazsKQEAgLTEzNTIsNyArMTM1NSw3IEBAIF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNj YW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCX0KIAogCS8qIEluaXRpYWxpemUgcmVtYWluaW5n IGluc2VydGlvbiBzY2FuIGtleSBmaWVsZHMgKi8KLQlfYnRfbWV0YXZlcnNpb24ocmVsLCAm aW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tleS5hbGxlcXVhbGltYWdlKTsKKwlfYnRfbWV0 YXZlcnNpb24ocmVsLCBoZWFwcmVsLCAmaW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tleS5h bGxlcXVhbGltYWdlKTsKIAlpbnNrZXkuYW55bnVsbGtleXMgPSBmYWxzZTsgLyogdW51c2Vk ICovCiAJaW5za2V5Lm5leHRrZXkgPSBuZXh0a2V5OwogCWluc2tleS5waXZvdHNlYXJjaCA9 IGZhbHNlOwpAQCAtMTM2Myw3ICsxMzY2LDcgQEAgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJICogVXNlIHRoZSBtYW51ZmFjdHVyZWQgaW5z ZXJ0aW9uIHNjYW4ga2V5IHRvIGRlc2NlbmQgdGhlIHRyZWUgYW5kCiAJICogcG9zaXRpb24g b3Vyc2VsdmVzIG9uIHRoZSB0YXJnZXQgbGVhZiBwYWdlLgogCSAqLwotCXN0YWNrID0gX2J0 X3NlYXJjaChyZWwsICZpbnNrZXksICZidWYsIEJUX1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90 KTsKKwlzdGFjayA9IF9idF9zZWFyY2gocmVsLCBoZWFwcmVsLCAmaW5za2V5LCAmYnVmLCBC VF9SRUFELCBzY2FuLT54c19zbmFwc2hvdCk7CiAKIAkvKiBkb24ndCBuZWVkIHRvIGtlZXAg dGhlIHN0YWNrIGFyb3VuZC4uLiAqLwogCV9idF9mcmVlc3RhY2soc3RhY2spOwpAQCAtMjAw NCw3ICsyMDA3LDcgQEAgX2J0X3JlYWRuZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJs b2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkJCS8qIGNoZWNrIGZvciBp bnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwog CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2Ug Ki8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgQlRfUkVB RCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc2Nhbi0+aGVhcFJl bGF0aW9uLCBibGtubywgQlRfUkVBRCk7CiAJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShzby0+ Y3VyclBvcy5idWYpOwogCQkJVGVzdEZvck9sZFNuYXBzaG90KHNjYW4tPnhzX3NuYXBzaG90 LCByZWwsIHBhZ2UpOwogCQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAt MjA3OCw3ICsyMDgxLDggQEAgX2J0X3JlYWRuZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4s IEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkJaWYgKEJUU2NhblBv c0lzUGlubmVkKHNvLT5jdXJyUG9zKSkKIAkJCV9idF9sb2NrYnVmKHJlbCwgc28tPmN1cnJQ b3MuYnVmLCBCVF9SRUFEKTsKIAkJZWxzZQotCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dl dGJ1ZihyZWwsIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJy UG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sCisJCQkJCQkJ CQkJIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9SRUFEKTsKIAogCQlmb3IgKDs7KQogCQl7 CkBAIC0yMDkyLDggKzIwOTYsOCBAQCBfYnRfcmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mg c2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogCQkJfQogCiAJ CQkvKiBTdGVwIHRvIG5leHQgcGh5c2ljYWwgcGFnZSAqLwotCQkJc28tPmN1cnJQb3MuYnVm ID0gX2J0X3dhbGtfbGVmdChyZWwsIHNvLT5jdXJyUG9zLmJ1ZiwKLQkJCQkJCQkJCQkJc2Nh bi0+eHNfc25hcHNob3QpOworCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X3dhbGtfbGVmdChy ZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkJc28tPmN1cnJQb3MuYnVmLCBz Y2FuLT54c19zbmFwc2hvdCk7CiAKIAkJCS8qIGlmIHdlJ3JlIHBoeXNpY2FsbHkgYXQgZW5k IG9mIGluZGV4LCByZXR1cm4gZmFpbHVyZSAqLwogCQkJaWYgKHNvLT5jdXJyUG9zLmJ1ZiA9 PSBJbnZhbGlkQnVmZmVyKQpAQCAtMjE0MCw3ICsyMTQ0LDggQEAgX2J0X3JlYWRuZXh0cGFn ZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9u IGRpcikKIAkJCQkJQlRTY2FuUG9zSW52YWxpZGF0ZShzby0+Y3VyclBvcyk7CiAJCQkJCXJl dHVybiBmYWxzZTsKIAkJCQl9Ci0JCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1Zihy ZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVm KHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCBibGtubywKKwkJCQkJCQkJCQkJIEJUX1JFQUQp OwogCQkJfQogCQl9CiAJfQpAQCAtMjE4NSw3ICsyMTkwLDcgQEAgX2J0X3BhcmFsbGVsX3Jl YWRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJl Y3Rpb24gZGlyKQogICogYWdhaW4gaWYgaXQncyBpbXBvcnRhbnQuCiAgKi8KIHN0YXRpYyBC dWZmZXIKLV9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hv dCBzbmFwc2hvdCkKK19idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFw cmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlQYWdlCQlwYWdlOwog CUJUUGFnZU9wYXF1ZSBvcGFxdWU7CkBAIC0yMjEzLDcgKzIyMTgsNyBAQCBfYnRfd2Fsa19s ZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpCiAJCV9i dF9yZWxidWYocmVsLCBidWYpOwogCQkvKiBjaGVjayBmb3IgaW50ZXJydXB0cyB3aGlsZSB3 ZSdyZSBub3QgaG9sZGluZyBhbnkgYnVmZmVyIGxvY2sgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJ YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGJsa25vLCBCVF9SRUFEKTsKIAkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJVGVzdEZvck9sZFNuYXBzaG90KHNuYXBzaG90 LCByZWwsIHBhZ2UpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC0y MzA0LDcgKzIzMDksNyBAQCBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwgU25hcHNob3Qgc25hcHNob3QpCiAgKiBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIHBpbm5l ZCBhbmQgcmVhZC1sb2NrZWQuCiAgKi8KIEJ1ZmZlcgotX2J0X2dldF9lbmRwb2ludChSZWxh dGlvbiByZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCByaWdodG1vc3QsCitfYnRfZ2V0X2VuZHBv aW50KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgdWludDMyIGxldmVsLCBib29s IHJpZ2h0bW9zdCwKIAkJCQkgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJQnVmZmVyCQlidWY7 CkBAIC0yMzIwLDkgKzIzMjUsOSBAQCBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwg dWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKIAkgKiBzbWFydGVyIGFib3V0IGludGVy bWVkaWF0ZSBsZXZlbHMuKQogCSAqLwogCWlmIChsZXZlbCA9PSAwKQotCQlidWYgPSBfYnRf Z2V0cm9vdChyZWwsIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0cm9vdChyZWwsIGhlYXBy ZWwsIEJUX1JFQUQpOwogCWVsc2UKLQkJYnVmID0gX2J0X2dldHRydWVyb290KHJlbCk7CisJ CWJ1ZiA9IF9idF9nZXR0cnVlcm9vdChyZWwsIGhlYXByZWwpOwogCiAJaWYgKCFCdWZmZXJJ c1ZhbGlkKGJ1ZikpCiAJCXJldHVybiBJbnZhbGlkQnVmZmVyOwpAQCAtMjQwMyw3ICsyNDA4 LDggQEAgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBk aXIpCiAJICogdmVyc2lvbiBvZiBfYnRfc2VhcmNoKCkuICBXZSBkb24ndCBtYWludGFpbiBh IHN0YWNrIHNpbmNlIHdlIGtub3cgd2UKIAkgKiB3b24ndCBuZWVkIGl0LgogCSAqLwotCWJ1 ZiA9IF9idF9nZXRfZW5kcG9pbnQocmVsLCAwLCBTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZChk aXIpLCBzY2FuLT54c19zbmFwc2hvdCk7CisJYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWws IHNjYW4tPmhlYXBSZWxhdGlvbiwgMCwKKwkJCQkJCSAgIFNjYW5EaXJlY3Rpb25Jc0JhY2t3 YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90KTsKIAogCWlmICghQnVmZmVySXNWYWxpZChi dWYpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggMDJiOTYw MWJlYy4uMTIwN2E0OTY4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK QEAgLTU2Niw3ICs1NjYsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyKQogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdz dGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwotCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtz Y2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CisJd3N0YXRlLmluc2tleSA9IF9idF9ta3Nj YW5rZXkod3N0YXRlLmluZGV4LCBidHNwb29sLT5oZWFwLCBOVUxMKTsKIAkvKiBfYnRfbWtz Y2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwog CXdzdGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3Rh dGUuaW5kZXgsIHRydWUpOwogCXdzdGF0ZS5idHdzX3VzZV93YWwgPSBSZWxhdGlvbk5lZWRz V0FMKHdzdGF0ZS5pbmRleCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMK aW5kZXggN2RhNDk5YzRkZC4uMDVhYmYzNjAzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0dXRpbHMuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW50CV9idF9rZWVwX25h dHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKICAqCQlmaWVsZCB0aGVt c2VsdmVzLgogICovCiBCVFNjYW5JbnNlcnQKLV9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGl0dXApCitfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogewogCUJUU2Nhbkluc2VydCBrZXk7CiAJ U2NhbktleQkJc2tleTsKQEAgLTExMiw3ICsxMTIsNyBAQCBfYnRfbWtzY2Fua2V5KFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogCWtleSA9IHBhbGxvYyhvZmZzZXRvZihCVFNj YW5JbnNlcnREYXRhLCBzY2Fua2V5cykgKwogCQkJCSBzaXplb2YoU2NhbktleURhdGEpICog aW5kbmtleWF0dHMpOwogCWlmIChpdHVwKQotCQlfYnRfbWV0YXZlcnNpb24ocmVsLCAma2V5 LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UpOworCQlfYnRfbWV0YXZlcnNp b24ocmVsLCBoZWFwcmVsLCAma2V5LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1h Z2UpOwogCWVsc2UKIAl7CiAJCS8qIFV0aWxpdHkgc3RhdGVtZW50IGNhbGxlcnMgY2FuIHNl dCB0aGVzZSBmaWVsZHMgdGhlbXNlbHZlcyAqLwpAQCAtMTc2MSw3ICsxNzYxLDggQEAgX2J0 X2tpbGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4pCiAKIAkJZHJvcHBlZHBpbiA9IHRydWU7 CiAJCS8qIEF0dGVtcHQgdG8gcmUtcmVhZCB0aGUgYnVmZmVyLCBnZXR0aW5nIHBpbiBhbmQg bG9jay4gKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+ Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYoc2Nhbi0+ aW5kZXhSZWxhdGlvbiwgc2Nhbi0+aGVhcFJlbGF0aW9uLAorCQkJCQkJIHNvLT5jdXJyUG9z LmN1cnJQYWdlLCBCVF9SRUFEKTsKIAogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwog CQlpZiAoQnVmZmVyR2V0TFNOQXRvbWljKGJ1ZikgPT0gc28tPmN1cnJQb3MubHNuKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggM2FkYjE4ZjJkOC4uM2Nm ZjcxZTcyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1 dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC00 ODksNyArNDg5LDcgQEAgdmFjdXVtTGVhZlJvb3Qoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMs IFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogICogVW5saWtlIHRoZSByb3V0aW5l cyBhYm92ZSwgdGhpcyB3b3JrcyBvbiBib3RoIGxlYWYgYW5kIGlubmVyIHBhZ2VzLgogICov CiBzdGF0aWMgdm9pZAotdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBp bmRleCwgQnVmZmVyIGJ1ZmZlcikKK3ZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVs YXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWZmZXIpCiB7CiAJUGFn ZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlTcEdpc3RQYWdlT3BhcXVlIG9w YXF1ZSA9IFNwR2lzdFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC02NDMsMTMgKzY0MywxMyBA QCBzcGd2YWN1dW1wYWdlKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRzLCBCbG9ja051bWJlciBi bGtubykKIAkJZWxzZQogCQl7CiAJCQl2YWN1dW1MZWFmUGFnZShiZHMsIGluZGV4LCBidWZm ZXIsIGZhbHNlKTsKLQkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1 ZmZlcik7CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmlu Zm8tPmhlYXByZWwsIGJ1ZmZlcik7CiAJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyogaW5uZXIg cGFnZSAqLwotCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIp OworCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8tPmhl YXByZWwsIGJ1ZmZlcik7CiAJfQogCiAJLyoKQEAgLTcxOSw3ICs3MTksNyBAQCBzcGdwcm9j ZXNzcGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcykKIAkJCS8qIGRlYWwgd2l0aCBh bnkgZGVsZXRhYmxlIHR1cGxlcyAqLwogCQkJdmFjdXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwg YnVmZmVyLCB0cnVlKTsKIAkJCS8qIG1pZ2h0IGFzIHdlbGwgZG8gdGhpcyB3aGlsZSB3ZSBh cmUgaGVyZSAqLwotCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVm ZmVyKTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5m by0+aGVhcHJlbCwgYnVmZmVyKTsKIAogCQkJU3BHaXN0U2V0TGFzdFVzZWRQYWdlKGluZGV4 LCBidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNmFlYzFiMWJjYS4uY2UwYWNm NTg5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzM2NCw2ICszMzY0LDcgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQog CWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVn eSA9IE5VTEw7CisJaXZpbmZvLmhlYXByZWwgPSBoZWFwUmVsYXRpb247CiAKIAkvKgogCSAq IEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4g ZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IDY1NzUwOTU4 YmIuLjAxNzgxODZkMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5 emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTcxMiw2ICs3 MTIsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAq cGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8u bnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5m by5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby5oZWFwcmVsID0gb25lcmVs OwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCBiY2Q0MGM4MGEx Li4yY2RiZDE4MmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1w YXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMK QEAgLTE0OCw2ICsxNDgsOSBAQCBzdHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIE5V TEwgZm9yIHdvcmtlciBwcm9jZXNzZXMgKi8KIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAK KwkvKiBQYXJlbnQgSGVhcCBSZWxhdGlvbiAqLworCVJlbGF0aW9uCWhlYXByZWw7CisKIAkv KiBUYXJnZXQgaW5kZXhlcyAqLwogCVJlbGF0aW9uICAgKmluZHJlbHM7CiAJaW50CQkJbmlu ZGV4ZXM7CkBAIC0yNjYsNiArMjY5LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXB2cy0+bmluZGV4 ZXMgPSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFyYWxsZWxfdmFjdXVtID0gd2lsbF9wYXJh bGxlbF92YWN1dW07CiAJcHZzLT5ic3RyYXRlZ3kgPSBic3RyYXRlZ3k7CisJcHZzLT5oZWFw cmVsID0gcmVsOwogCiAJRW50ZXJQYXJhbGxlbE1vZGUoKTsKIAlwY3h0ID0gQ3JlYXRlUGFy YWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJwYXJhbGxlbF92YWN1dW1fbWFpbiIsCkBAIC04 MzgsNiArODQyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFs bGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWl2aW5mby5lc3RpbWF0 ZWRfY291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50OwogCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVn eSA9IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gcHZzLT5oZWFwcmVsOwog CiAJLyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2cy0+aW5k bmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CkBAIC0x MDA3LDYgKzEwMTIsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAJcHZzLmRlYWRfaXRlbXMgPSBkZWFkX2l0ZW1zOwogCXB2cy5y ZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uo cmVsKSk7CiAJcHZzLnJlbG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHJlbCkpOworCXB2cy5oZWFwcmVsID0gcmVsOwogCiAJLyogVGhlc2UgZmllbGRzIHdpbGwg YmUgZmlsbGVkIGR1cmluZyBpbmRleCB2YWN1dW0gb3IgY2xlYW51cCAqLwogCXB2cy5pbmRu YW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBk NThjNGExMDc4Li5lMzgyNGVmZTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxh bmNhdC5jCkBAIC00NjIsNyArNDYyLDcgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lcklu Zm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCQkJ ICogRm9yIGJ0cmVlcywgZ2V0IHRyZWUgaGVpZ2h0IHdoaWxlIHdlIGhhdmUgdGhlIGluZGV4 CiAJCQkJCSAqIG9wZW4KIAkJCQkJICovCi0JCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0 X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbik7CisJCQkJCWluZm8tPnRyZWVfaGVpZ2h0 ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbiwgcmVsYXRpb24pOwogCQkJCX0K IAkJCQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90 dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2 YXJpYW50cy5jCmluZGV4IGViNmNmY2ZkMDAuLjAxODgxMDY5MjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTIwNyw2ICsyMDcsNyBA QCB0dXBsZXNvcnRfYmVnaW5faGVhcChUdXBsZURlc2MgdHVwRGVzYywKIFR1cGxlc29ydHN0 YXRlICoKIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAogCQkJ CQkJUmVsYXRpb24gaW5kZXhSZWwsCisJCQkJCQlSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJ aW50IHdvcmtNZW0sCiAJCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLCBpbnQgc29y dG9wdCkKIHsKQEAgLTI2MCw3ICsyNjEsNyBAQCB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihU dXBsZURlc2MgdHVwRGVzYywKIAogCWFyZy0+dHVwRGVzYyA9IHR1cERlc2M7CQkvKiBhc3N1 bWUgd2UgbmVlZCBub3QgY29weSB0dXBEZXNjICovCiAKLQlpbmRleFNjYW5LZXkgPSBfYnRf bWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fu a2V5KGluZGV4UmVsLCBoZWFwcmVsLCBOVUxMKTsKIAogCWlmIChhcmctPmluZGV4SW5mby0+ aWlfRXhwcmVzc2lvbnMgIT0gTlVMTCkKIAl7CkBAIC0zNjEsNyArMzYyLDcgQEAgdHVwbGVz b3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5lbmZvcmNl VW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3Qg PSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OwogCi0JaW5kZXhTY2FuS2V5ID0gX2J0X21rc2Nh bmtleShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShp bmRleFJlbCwgaGVhcFJlbCwgTlVMTCk7CiAKIAkvKiBQcmVwYXJlIFNvcnRTdXBwb3J0IGRh dGEgZm9yIGVhY2ggY29sdW1uICovCiAJYmFzZS0+c29ydEtleXMgPSAoU29ydFN1cHBvcnQp IHBhbGxvYzAoYmFzZS0+bktleXMgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA4M2RiZWUwZmU2 Li43NzA4YjgyZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtNTAsNiArNTAsNyBAQCB0eXBl ZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBl cmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hl YXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KIAlCdWZmZXJBY2Nl c3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLwor CVJlbGF0aW9uIAloZWFwcmVsOwkJLyogdGhlIGhlYXAgcmVsYXRpb24gdGhlIGluZGV4IGJl bG9uZ3MgdG8gKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3RfcHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLmVlMjc1NjUwYmQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAsNyBAQCBleHRlcm4gWExvZ1Jl Y1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxs VHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zm c2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdl UmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKK2V4dGVybiB2b2lkIGdp c3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpOwog CiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLApAQCAt NDQ5LDcgKzQ0OSw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nVXBkYXRlKEJ1ZmZl ciBidWZmZXIsCiAJCQkJCQkJCSBCdWZmZXIgbGVmdGNoaWxkYnVmKTsKIAogZXh0ZXJuIFhM b2dSZWNQdHIgZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyICp0 b2RlbGV0ZSwKLQkJCQkJCQkJIGludCBudG9kZWxldGUsIFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkgaW50IG50b2RlbGV0ZSwgVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJIFJlbGF0aW9uIGhlYXBy ZWwpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1NwbGl0KGJvb2wgcGFnZV9pc19s ZWFmLAogCQkJCQkJCQlTcGxpdGVkUGFnZUxheW91dCAqZGlzdCwKQEAgLTQ4NSw3ICs0ODYs NyBAQCBleHRlcm4gYm9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5v LAogZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4p OwogZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZl YywgaW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBl eHRlcm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1l eHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVy IGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4g Ym9vbCBnaXN0UGFnZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3Rm aWxsYnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJ CSAgIE9mZnNldE51bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRl eCBhMmM2N2QxY2QzLi40MjYyMGJiZGM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aApAQCAtNDA5LDcgKzQwOSw3IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2MoU3RyaW5nSW5m byBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBjaGFyICpo ZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19sb2dp Y2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIg bG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBf YnVmZmVyLAorZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKIAkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwK IAkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJ CQkJCQkJICAgdWludDggdm1mbGFncyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggOGY0ODk2 MGY5ZC4uNmRlZTMwNzA0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJl ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApAQCAtMTE4Miw4ICsxMTgy LDEwIEBAIGV4dGVybiBJbmRleFR1cGxlIF9idF9zd2FwX3Bvc3RpbmcoSW5kZXhUdXBsZSBu ZXdpdGVtLCBJbmRleFR1cGxlIG9wb3N0aW5nLAogZXh0ZXJuIGJvb2wgX2J0X2RvaW5zZXJ0 KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLAogCQkJCQkJIEluZGV4VW5pcXVlQ2hl Y2sgY2hlY2tVbmlxdWUsIGJvb2wgaW5kZXhVbmNoYW5nZWQsCiAJCQkJCQkgUmVsYXRpb24g aGVhcFJlbCk7Ci1leHRlcm4gdm9pZCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0c3Rh Y2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCk7 CitleHRlcm4gdm9pZCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgQnVmZmVyIGxidWYsCisJCQkJCQkJIEJUU3RhY2sgc3RhY2spOworZXh0ZXJu IEJ1ZmZlciBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVs LCBCVFN0YWNrIHN0YWNrLAorCQkJCQkJCSAgQmxvY2tOdW1iZXIgY2hpbGQpOwogCiAvKgog ICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHNwbGl0bG9jLmMKQEAgLTExOTcs MTYgKzExOTksMTggQEAgZXh0ZXJuIE9mZnNldE51bWJlciBfYnRfZmluZHNwbGl0bG9jKFJl bGF0aW9uIHJlbCwgUGFnZSBvcmlncGFnZSwKICAqLwogZXh0ZXJuIHZvaWQgX2J0X2luaXRt ZXRhcGFnZShQYWdlIHBhZ2UsIEJsb2NrTnVtYmVyIHJvb3Ria251bSwgdWludDMyIGxldmVs LAogCQkJCQkJCSBib29sIGFsbGVxdWFsaW1hZ2UpOwotZXh0ZXJuIGJvb2wgX2J0X3ZhY3V1 bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCk7Ci1leHRlcm4gdm9pZCBfYnRfc2V0X2Ns ZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcyk7Citl eHRlcm4gYm9vbCBfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsKTsKK2V4dGVybiB2b2lkIF9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKKwkJCQkJCQkJIEJsb2NrTnVtYmVyIG51bV9k ZWxwYWdlcyk7CiBleHRlcm4gdm9pZCBfYnRfdXBncmFkZW1ldGFwYWdlKFBhZ2UgcGFnZSk7 Ci1leHRlcm4gQnVmZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2Vzcyk7 Ci1leHRlcm4gQnVmZmVyIF9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpOwotZXh0ZXJu IGludAlfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwpOwotZXh0ZXJuIHZvaWQgX2J0 X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLAorZXh0ZXJu IEJ1ZmZlciBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGlu dCBhY2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsKTsKK2V4dGVybiBpbnQJX2J0X2dldHJvb3RoZWlnaHQoUmVs YXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKTsKK2V4dGVybiB2b2lkIF9idF9tZXRhdmVy c2lvbihSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgKmhlYXBrZXlzcGFj ZSwKIAkJCQkJCQlib29sICphbGxlcXVhbGltYWdlKTsKIGV4dGVybiB2b2lkIF9idF9jaGVj a3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dl dGJ1ZihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKTsKK2V4 dGVybiBCdWZmZXIgX2J0X2dldGJ1ZihSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWws IEJsb2NrTnVtYmVyIGJsa25vLAorCQkJCQkJIGludCBhY2Nlc3MpOwogZXh0ZXJuIEJ1ZmZl ciBfYnRfcmVsYW5kZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIG9idWYsCiAJCQkJCQkJ ICAgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MpOwogZXh0ZXJuIHZvaWQgX2J0X3Jl bGJ1ZihSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwpAQCAtMTIyOSwyMSArMTIzMywyMiBA QCBleHRlcm4gdm9pZCBfYnRfcGVuZGluZ2ZzbV9maW5hbGl6ZShSZWxhdGlvbiByZWwsIEJU VmFjU3RhdGUgKnZzdGF0ZSk7CiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGlu IG5idHNlYXJjaC5jCiAgKi8KLWV4dGVybiBCVFN0YWNrIF9idF9zZWFyY2goUmVsYXRpb24g cmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsCi0JCQkJCQkgIGludCBhY2Nl c3MsIFNuYXBzaG90IHNuYXBzaG90KTsKLWV4dGVybiBCdWZmZXIgX2J0X21vdmVyaWdodChS ZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciBidWYsCi0JCQkJCQkJYm9v bCBmb3J1cGRhdGUsIEJUU3RhY2sgc3RhY2ssIGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBz aG90KTsKK2V4dGVybiBCVFN0YWNrIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCVFNjYW5JbnNlcnQga2V5LAorCQkJCQkJICBCdWZmZXIgKmJ1ZlAsIGlu dCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBCdWZmZXIgX2J0X21vdmVy aWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXks CisJCQkJCQkJQnVmZmVyIGJ1ZiwgYm9vbCBmb3J1cGRhdGUsIEJUU3RhY2sgc3RhY2ssCisJ CQkJCQkJaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOwogZXh0ZXJuIE9mZnNldE51 bWJlciBfYnRfYmluc3JjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGlu c2VydHN0YXRlKTsKIGV4dGVybiBpbnQzMiBfYnRfY29tcGFyZShSZWxhdGlvbiByZWwsIEJU U2Nhbkluc2VydCBrZXksIFBhZ2UgcGFnZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSk7CiBleHRl cm4gYm9vbCBfYnRfZmlyc3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRp cik7CiBleHRlcm4gYm9vbCBfYnRfbmV4dChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJl Y3Rpb24gZGlyKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldF9lbmRwb2ludChSZWxhdGlvbiBy ZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCByaWdodG1vc3QsCi0JCQkJCQkJICAgU25hcHNob3Qg c25hcHNob3QpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgdWludDMyIGxldmVsLAorCQkJCQkJCSAgIGJvb2wgcmln aHRtb3N0LCBTbmFwc2hvdCBzbmFwc2hvdCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBm dW5jdGlvbnMgaW4gbmJ0dXRpbHMuYwogICovCi1leHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9t a3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXApOworZXh0ZXJuIEJUU2Nh bkluc2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg SW5kZXhUdXBsZSBpdHVwKTsKIGV4dGVybiB2b2lkIF9idF9mcmVlc3RhY2soQlRTdGFjayBz dGFjayk7CiBleHRlcm4gdm9pZCBfYnRfcHJlcHJvY2Vzc19hcnJheV9rZXlzKEluZGV4U2Nh bkRlc2Mgc2Nhbik7CiBleHRlcm4gdm9pZCBfYnRfc3RhcnRfYXJyYXlfa2V5cyhJbmRleFNj YW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggYzBkZGRk YjJmMC4uMzFmODRlOTBlYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2lu Y2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNp bmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNz LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfcHVibGljYXRpb24uaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxl c29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggMTI1NzhlNDJi Yy4uMzk1YWJmZTU5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0 LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTM5OSw3ICszOTks OSBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxl RGVzYyB0dXBEZXNjLAogCQkJCQkJCQkJCQlpbnQgd29ya01lbSwgU29ydENvb3JkaW5hdGUg Y29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJaW50IHNvcnRvcHQpOwogZXh0ZXJuIFR1cGxlc29y dHN0YXRlICp0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKLQkJ CQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsIGludCB3b3JrTWVtLAorCQkJCQkJCQkJ CQkgICBSZWxhdGlvbiBpbmRleFJlbCwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb24gaGVhcHJl bCwKKwkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sCiAJCQkJCQkJCQkJCSAgIFNvcnRDb29y ZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVy biBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9u IGhlYXBSZWwsCi0tIAoyLjM0LjEKCg== --------------2Y0aDGctWxn7tLmsjjJZ4lqy--