From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: emacs-26 9e59de9: Use GCALIGNED properly for GCC Date: Fri, 10 Nov 2017 23:08:44 -0800 Organization: UCLA Computer Science Department Message-ID: <899d6f0d-78d2-a954-1c97-c0088cdd6337@cs.ucla.edu> References: <20171109031206.7056.28312@vcs0.savannah.gnu.org> <20171109031208.D2CAF2033E@vcs0.savannah.gnu.org> <5A0550FE.2030703@gmx.at> <83zi7upnfo.fsf@gnu.org> <4ee60712-789e-f160-52a9-4e24a9733a11@cs.ucla.edu> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------584A9426F4356F81A19E89C9" X-Trace: blaine.gmane.org 1510384211 20483 195.159.176.226 (11 Nov 2017 07:10:11 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 11 Nov 2017 07:10:11 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 Cc: rgm@gnu.org, emacs-devel@gnu.org To: Eli Zaretskii , martin rudalics Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Nov 11 08:10:03 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eDPvW-0004uR-6e for ged-emacs-devel@m.gmane.org; Sat, 11 Nov 2017 08:10:02 +0100 Original-Received: from localhost ([::1]:44658 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDPvd-0004pE-Ik for ged-emacs-devel@m.gmane.org; Sat, 11 Nov 2017 02:10:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35010) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDPuh-0004ob-96 for emacs-devel@gnu.org; Sat, 11 Nov 2017 02:09:19 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eDPuY-00006Y-E2 for emacs-devel@gnu.org; Sat, 11 Nov 2017 02:09:11 -0500 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:47688) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eDPuO-0008RW-6p; Sat, 11 Nov 2017 02:08:53 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E75CD1610EE; Fri, 10 Nov 2017 23:08:50 -0800 (PST) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id czslX89X9myd; Fri, 10 Nov 2017 23:08:44 -0800 (PST) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id D0A761610EA; Fri, 10 Nov 2017 23:08:44 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id pXfV3xqOm6tJ; Fri, 10 Nov 2017 23:08:44 -0800 (PST) Original-Received: from [192.168.1.9] (unknown [47.154.30.119]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8214C1610E7; Fri, 10 Nov 2017 23:08:44 -0800 (PST) In-Reply-To: <4ee60712-789e-f160-52a9-4e24a9733a11@cs.ucla.edu> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:220047 Archived-At: This is a multi-part message in MIME format. --------------584A9426F4356F81A19E89C9 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Paul Eggert wrote: > I have thought of a solution that fixes the problem by dropping use of = GCALIGNED=20 > and instead using classic C unions along with 'char alignas (8)'. Patches attached. They work for me on various platforms including gcc -m3= 2 on=20 Fedora 26 x86-64 (which is close to the platform Glenn mentioned). The 2n= d patch=20 does the real work: most of it consists of changing private accessors to = account=20 for the newly-introduced unions. It shrinks the source code a bit, which = is a=20 good sign. I plan to test a bit more before installing; comments welcome. --------------584A9426F4356F81A19E89C9 Content-Type: text/plain; charset=UTF-8; name="0001-Change-vectorlike-from-struct-to-union.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Change-vectorlike-from-struct-to-union.txt" RnJvbSBjOTI0NjJlNTI0MzNjNDIyZDQxYzVlNWFhMTc3Zjk1MTNlYjUxN2UzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDEwIE5vdiAyMDE3IDE3OjM3OjUwIC0wODAwClN1YmplY3Q6IFtQQVRD SCAxLzJdIENoYW5nZSB2ZWN0b3JsaWtlIGZyb20gc3RydWN0IHRvIHVuaW9uCgoqIHNyYy9s aXNwLmggKHZlY3Rvcmxpa2VfaGVhZGVkKTogQ2hhbmdlIGZyb20gc3RydWN0IHRvIHVuaW9u LgpBbGwgdXNlcyBjaGFuZ2VkLiAgU2luY2UgaXQgaGFzIG9ubHkgb25lIG1lbWJlciwgdGhp cyBkb2VzIG5vdApjaGFuZ2Ugc2VtYW50aWNzLiAgVGhpcyBpcyBkZXNpZ25lZCB0byBzaW1w bGlmeSBmdXR1cmUgY2hhbmdlcwpuZWVkZWQgdG8gZml4IGJ1Z3MgbGlrZSBCdWcjMjkwNDAu ICBBbGwgdXNlcyBjaGFuZ2VkLgotLS0KIGRvYy9saXNwcmVmL2ludGVybmFscy50ZXhpIHwg IDQgKystLQogc3JjL2J1ZmZlci5oICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2ZvbnQu aCAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy9mcmFtZS5oICAgICAgICAgICAg ICAgIHwgIDIgKy0KIHNyYy9saXNwLmggICAgICAgICAgICAgICAgIHwgMjggKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogc3JjL3Byb2Nlc3MuaCAgICAgICAgICAgICAgfCAgMiAr LQogc3JjL3Rlcm1ob29rcy5oICAgICAgICAgICAgfCAgMiArLQogc3JjL3RocmVhZC5oICAg ICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy93MzJ0ZXJtLmggICAgICAgICAgICAgIHwg IDIgKy0KIHNyYy93aW5kb3cuYyAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIHNyYy93 aW5kb3cuaCAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy94dGVybS5oICAgICAgICAgICAg ICAgIHwgIDIgKy0KIHNyYy94d2lkZ2V0LmggICAgICAgICAgICAgIHwgIDQgKystLQogMTMg ZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL2xpc3ByZWYvaW50ZXJuYWxzLnRleGkgYi9kb2MvbGlzcHJlZi9pbnRl cm5hbHMudGV4aQppbmRleCA2NjNkMGZkOTJiLi5iMDM0OGU3NGQ0IDEwMDY0NAotLS0gYS9k b2MvbGlzcHJlZi9pbnRlcm5hbHMudGV4aQorKysgYi9kb2MvbGlzcHJlZi9pbnRlcm5hbHMu dGV4aQpAQCAtMjQ4LDcgKzI0OCw3IEBAIEdhcmJhZ2UgQ29sbGVjdGlvbgogQGNpbmRleCBz dG9yYWdlIG9mIHZlY3Rvci1saWtlIExpc3Agb2JqZWN0cwogICBCZXlvbmQgdGhlIGJhc2lj IHZlY3RvciwgYSBsb3Qgb2Ygb2JqZWN0cyBsaWtlIHdpbmRvdywgYnVmZmVyLCBhbmQKIGZy YW1lIGFyZSBtYW5hZ2VkIGFzIGlmIHRoZXkgd2VyZSB2ZWN0b3JzLiAgVGhlIGNvcnJlc3Bv bmRpbmcgQyBkYXRhCi1zdHJ1Y3R1cmVzIGluY2x1ZGUgdGhlIEBjb2Rle3N0cnVjdCB2ZWN0 b3JsaWtlX2hlYWRlcn0gZmllbGQgd2hvc2UKK3N0cnVjdHVyZXMgaW5jbHVkZSB0aGUgQGNv ZGV7dW5pb24gdmVjdG9ybGlrZV9oZWFkZXJ9IGZpZWxkIHdob3NlCiBAY29kZXtzaXplfSBt ZW1iZXIgY29udGFpbnMgdGhlIHN1YnR5cGUgZW51bWVyYXRlZCBieSBAY29kZXtlbnVtIHB2 ZWNfdHlwZX0KIGFuZCBhbiBpbmZvcm1hdGlvbiBhYm91dCBob3cgbWFueSBAY29kZXtMaXNw X09iamVjdH0gZmllbGRzIHRoaXMgc3RydWN0dXJlCiBjb250YWlucyBhbmQgd2hhdCB0aGUg c2l6ZSBvZiB0aGUgcmVzdCBkYXRhIGlzLiAgVGhpcyBpbmZvcm1hdGlvbiBpcwpAQCAtMTA4 NSw3ICsxMDg1LDcgQEAgQnVmZmVyIEludGVybmFscwogCiBAdGFibGUgQGNvZGUKIEBpdGVt IGhlYWRlcgotQSBoZWFkZXIgb2YgdHlwZSBAY29kZXtzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFk ZXJ9IGlzIGNvbW1vbiB0byBhbGwKK0EgaGVhZGVyIG9mIHR5cGUgQGNvZGV7dW5pb24gdmVj dG9ybGlrZV9oZWFkZXJ9IGlzIGNvbW1vbiB0byBhbGwKIHZlY3Rvcmxpa2Ugb2JqZWN0cy4K IAogQGl0ZW0gb3duX3RleHQKZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuaCBiL3NyYy9idWZm ZXIuaAppbmRleCBhYzdjNWE1NDY3Li40NmM3YzZlNWFkIDEwMDY0NAotLS0gYS9zcmMvYnVm ZmVyLmgKKysrIGIvc3JjL2J1ZmZlci5oCkBAIC01MDQsNyArNTA0LDcgQEAgc3RydWN0IGJ1 ZmZlcl90ZXh0CiAKIHN0cnVjdCBidWZmZXIKIHsKLSAgc3RydWN0IHZlY3Rvcmxpa2VfaGVh ZGVyIGhlYWRlcjsKKyAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogCiAgIC8q IFRoZSBuYW1lIG9mIHRoaXMgYnVmZmVyLiAgKi8KICAgTGlzcF9PYmplY3QgbmFtZV87CmRp ZmYgLS1naXQgYS9zcmMvZm9udC5oIGIvc3JjL2ZvbnQuaAppbmRleCA4ZjJlMjdmMGVkLi40 M2Q2ZjY3ZTNlIDEwMDY0NAotLS0gYS9zcmMvZm9udC5oCisrKyBiL3NyYy9mb250LmgKQEAg LTI0NCw3ICsyNDQsNyBAQCBlbnVtIGZvbnRfcHJvcGVydHlfaW5kZXgKIAogc3RydWN0IGZv bnRfc3BlYwogewotICBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOworICB1bmlv biB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAgIExpc3BfT2JqZWN0IHByb3BzW0ZPTlRf U1BFQ19NQVhdOwogfTsKIApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0cnVjdCBmb250X3NwZWMK IAogc3RydWN0IGZvbnRfZW50aXR5CiB7Ci0gIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciBo ZWFkZXI7CisgIHVuaW9uIHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKICAgTGlzcF9PYmpl Y3QgcHJvcHNbRk9OVF9FTlRJVFlfTUFYXTsKIH07CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBz dHJ1Y3QgZm9udF9lbnRpdHkKIAogc3RydWN0IGZvbnQKIHsKLSAgc3RydWN0IHZlY3Rvcmxp a2VfaGVhZGVyIGhlYWRlcjsKKyAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwog CiAgIC8qIEFsbCBMaXNwX09iamVjdCBjb21wb25lbnRzIG11c3QgY29tZSBmaXJzdC4KICAg ICAgVGhhdCBlbnN1cmVzIHRoZXkgYXJlIGFsbCBhbGlnbmVkIG5vcm1hbGx5LiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9mcmFtZS5oIGIvc3JjL2ZyYW1lLmgKaW5kZXggZTYxMGZjNzY4ZC4u YTNiNzc2MzY0MyAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3JjL2ZyYW1lLmgK QEAgLTc5LDcgKzc5LDcgQEAgZW51bSBuc19hcHBlYXJhbmNlX3R5cGUKIAogc3RydWN0IGZy YW1lCiB7Ci0gIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CisgIHVuaW9uIHZl Y3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKIAogICAvKiBBbGwgTGlzcF9PYmplY3QgY29tcG9u ZW50cyBtdXN0IGNvbWUgZmlyc3QuCiAgICAgIFRoYXQgZW5zdXJlcyB0aGV5IGFyZSBhbGwg YWxpZ25lZCBub3JtYWxseS4gICovCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xp c3AuaAppbmRleCAwMTUzNDY4NThiLi4xZDZmZDVhNGZlIDEwMDY0NAotLS0gYS9zcmMvbGlz cC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTc5NiwxMSArNzk2LDExIEBAIHN0cnVjdCBMaXNw X1N5bWJvbAogLyogSGVhZGVyIG9mIHZlY3Rvci1saWtlIG9iamVjdHMuICBUaGlzIGRvY3Vt ZW50cyB0aGUgbGF5b3V0IGNvbnN0cmFpbnRzIG9uCiAgICB2ZWN0b3JzIGFuZCBwc2V1ZG92 ZWN0b3JzIChvYmplY3RzIG9mIFBWRUNfeHh4IHN1YnR5cGUpLiAgSXQgYWxzbyBwcmV2ZW50 cwogICAgY29tcGlsZXJzIGZyb20gYmVpbmcgZm9vbGVkIGJ5IEVtYWNzJ3MgdHlwZSBwdW5u aW5nOiBYU0VUUFNFVURPVkVDVE9SCi0gICBhbmQgUFNFVURPVkVDVE9SUCBjYXN0IHRoZWly IHBvaW50ZXJzIHRvIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciAqLAorICAgYW5kIFBTRVVE T1ZFQ1RPUlAgY2FzdCB0aGVpciBwb2ludGVycyB0byB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRl ciAqLAogICAgYmVjYXVzZSB3aGVuIHR3byBzdWNoIHBvaW50ZXJzIHBvdGVudGlhbGx5IGFs aWFzLCBhIGNvbXBpbGVyIHdvbid0CiAgICBpbmNvcnJlY3RseSByZW9yZGVyIGxvYWRzIGFu ZCBzdG9yZXMgdG8gdGhlaXIgc2l6ZSBmaWVsZHMuICBTZWUKICAgIEJ1ZyM4NTQ2LiAgKi8K LXN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlcgordW5pb24gdmVjdG9ybGlrZV9oZWFkZXIKICAg ewogICAgIC8qIFRoZSBvbmx5IGZpZWxkIGNvbnRhaW5zIHZhcmlvdXMgcGllY2VzIG9mIGlu Zm9ybWF0aW9uOgogICAgICAgIC0gVGhlIE1TQiAoQVJSQVlfTUFSS19GTEFHKSBob2xkcyB0 aGUgZ2NtYXJrYml0LgpAQCAtMTA5NCwxMCArMTA5NCwxMCBAQCBJTkxJTkUgYm9vbAogCQkg ICAgICAgfCAoKHJlc3RzaXplKSA8PCBQU0VVRE9WRUNUT1JfU0laRV9CSVRTKSBcCiAJCSAg ICAgICB8IChsaXNwc2l6ZSkpKQogCi0vKiBUaGUgY2FzdCB0byBzdHJ1Y3QgdmVjdG9ybGlr ZV9oZWFkZXIgKiBhdm9pZHMgYWxpYXNpbmcgaXNzdWVzLiAgKi8KKy8qIFRoZSBjYXN0IHRv IHVuaW9uIHZlY3Rvcmxpa2VfaGVhZGVyICogYXZvaWRzIGFsaWFzaW5nIGlzc3Vlcy4gICov CiAjZGVmaW5lIFhTRVRQU0VVRE9WRUNUT1IoYSwgYiwgY29kZSkgXAogICBYU0VUVFlQRURf UFNFVURPVkVDVE9SIChhLCBiLAkJCQkJXAotCQkJICAoKChzdHJ1Y3QgdmVjdG9ybGlrZV9o ZWFkZXIgKikJXAorCQkJICAoKCh1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciAqKQlcCiAJCQkg ICAgWFVOVEFHIChhLCBMaXNwX1ZlY3Rvcmxpa2UpKQlcCiAJCQkgICAtPnNpemUpLAkJCQlc CiAJCQkgIGNvZGUpCkBAIC0xMzk5LDcgKzEzOTksNyBAQCBTVFJJTkdfU0VUX0NIQVJTIChM aXNwX09iamVjdCBzdHJpbmcsIHB0cmRpZmZfdCBuZXdzaXplKQogCiBzdHJ1Y3QgTGlzcF9W ZWN0b3IKICAgewotICAgIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CisgICAg dW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogICAgIExpc3BfT2JqZWN0IGNvbnRl bnRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiAgIH07CiAKQEAgLTE0NTYsNyArMTQ1Niw3 IEBAIFBTRVVET1ZFQ1RPUl9UWVBFIChzdHJ1Y3QgTGlzcF9WZWN0b3IgKnYpCiAKIC8qIENh bid0IGJlIHVzZWQgd2l0aCBQVkVDX05PUk1BTF9WRUNUT1IuICAqLwogSU5MSU5FIGJvb2wK LVBTRVVET1ZFQ1RPUl9UWVBFUCAoc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyICphLCBlbnVt IHB2ZWNfdHlwZSBjb2RlKQorUFNFVURPVkVDVE9SX1RZUEVQICh1bmlvbiB2ZWN0b3JsaWtl X2hlYWRlciAqYSwgZW51bSBwdmVjX3R5cGUgY29kZSkKIHsKICAgLyogV2UgZG9uJ3QgdXNl IFBTRVVET1ZFQ1RPUl9UWVBFIGhlcmUgc28gYXMgdG8gYXZvaWQgYSBzaGlmdAogICAgKiBv cGVyYXRpb24gd2hlbiBgY29kZScgaXMga25vd24uICAqLwpAQCAtMTQ3Miw4ICsxNDcyLDgg QEAgUFNFVURPVkVDVE9SUCAoTGlzcF9PYmplY3QgYSwgaW50IGNvZGUpCiAgICAgcmV0dXJu IGZhbHNlOwogICBlbHNlCiAgICAgewotICAgICAgLyogQ29udmVydGluZyB0byBzdHJ1Y3Qg dmVjdG9ybGlrZV9oZWFkZXIgKiBhdm9pZHMgYWxpYXNpbmcgaXNzdWVzLiAgKi8KLSAgICAg IHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciAqaCA9IFhVTlRBRyAoYSwgTGlzcF9WZWN0b3Js aWtlKTsKKyAgICAgIC8qIENvbnZlcnRpbmcgdG8gdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIg KiBhdm9pZHMgYWxpYXNpbmcgaXNzdWVzLiAgKi8KKyAgICAgIHVuaW9uIHZlY3Rvcmxpa2Vf aGVhZGVyICpoID0gWFVOVEFHIChhLCBMaXNwX1ZlY3Rvcmxpa2UpOwogICAgICAgcmV0dXJu IFBTRVVET1ZFQ1RPUl9UWVBFUCAoaCwgY29kZSk7CiAgICAgfQogfQpAQCAtMTQ4NCw3ICsx NDg0LDcgQEAgc3RydWN0IExpc3BfQm9vbF9WZWN0b3IKICAgewogICAgIC8qIEhFQURFUi5T SVpFIGlzIHRoZSB2ZWN0b3IncyBzaXplIGZpZWxkLiAgSXQgZG9lc24ndCBoYXZlIHRoZSBy ZWFsIHNpemUsCiAgICAgICAganVzdCB0aGUgc3VidHlwZSBpbmZvcm1hdGlvbi4gICovCi0g ICAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKKyAgICB1bmlvbiB2ZWN0b3Js aWtlX2hlYWRlciBoZWFkZXI7CiAgICAgLyogVGhpcyBpcyB0aGUgc2l6ZSBpbiBiaXRzLiAg Ki8KICAgICBFTUFDU19JTlQgc2l6ZTsKICAgICAvKiBUaGUgYWN0dWFsIGJpdHMsIHBhY2tl ZCBpbnRvIGJ5dGVzLgpAQCAtMTY5Nyw3ICsxNjk3LDcgQEAgc3RydWN0IExpc3BfQ2hhcl9U YWJsZQogICAgICAgIHBzZXVkb3ZlY3RvciB0eXBlIGluZm9ybWF0aW9uLiAgSXQgaG9sZHMg dGhlIHNpemUsIHRvby4KICAgICAgICBUaGUgc2l6ZSBjb3VudHMgdGhlIGRlZmFsdCwgcGFy ZW50LCBwdXJwb3NlLCBhc2NpaSwKICAgICAgICBjb250ZW50cywgYW5kIGV4dHJhcyBzbG90 cy4gICovCi0gICAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKKyAgICB1bmlv biB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAKICAgICAvKiBUaGlzIGhvbGRzIGEgZGVm YXVsdCB2YWx1ZSwKICAgICAgICB3aGljaCBpcyB1c2VkIHdoZW5ldmVyIHRoZSB2YWx1ZSBm b3IgYSBzcGVjaWZpYyBjaGFyYWN0ZXIgaXMgbmlsLiAgKi8KQEAgLTE3MzksNyArMTczOSw3 IEBAIHN0cnVjdCBMaXNwX1N1Yl9DaGFyX1RhYmxlCiAgIHsKICAgICAvKiBIRUFERVIuU0la RSBpcyB0aGUgdmVjdG9yJ3Mgc2l6ZSBmaWVsZCwgd2hpY2ggYWxzbyBob2xkcyB0aGUKICAg ICAgICBwc2V1ZG92ZWN0b3IgdHlwZSBpbmZvcm1hdGlvbi4gIEl0IGhvbGRzIHRoZSBzaXpl LCB0b28uICAqLwotICAgIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CisgICAg dW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogCiAgICAgLyogRGVwdGggb2YgdGhp cyBzdWIgY2hhci10YWJsZS4gIEl0IHNob3VsZCBiZSAxLCAyLCBvciAzLiAgQSBzdWIKICAg ICAgICBjaGFyLXRhYmxlIG9mIGRlcHRoIDEgY29udGFpbnMgMTYgZWxlbWVudHMsIGFuZCBl YWNoIGVsZW1lbnQKQEAgLTE4MTQsNyArMTgxNCw3IEBAIENIQVJfVEFCTEVfU0VUIChMaXNw X09iamVjdCBjdCwgaW50IGlkeCwgTGlzcF9PYmplY3QgdmFsKQogCiBzdHJ1Y3QgTGlzcF9T dWJyCiAgIHsKLSAgICBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOworICAgIHVu aW9uIHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKICAgICB1bmlvbiB7CiAgICAgICBMaXNw X09iamVjdCAoKmEwKSAodm9pZCk7CiAgICAgICBMaXNwX09iamVjdCAoKmExKSAoTGlzcF9P YmplY3QpOwpAQCAtMjAyNiw3ICsyMDI2LDcgQEAgc3RydWN0IGhhc2hfdGFibGVfdGVzdAog c3RydWN0IExpc3BfSGFzaF9UYWJsZQogewogICAvKiBUaGlzIGlzIGZvciBMaXNwOyB0aGUg aGFzaCB0YWJsZSBjb2RlIGRvZXMgbm90IHJlZmVyIHRvIGl0LiAgKi8KLSAgc3RydWN0IHZl Y3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKKyAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVh ZGVyOwogCiAgIC8qIE5pbCBpZiB0YWJsZSBpcyBub24td2Vhay4gIE90aGVyd2lzZSBhIHN5 bWJvbCBkZXNjcmliaW5nIHRoZQogICAgICB3ZWFrbmVzcyBvZiB0aGUgdGFibGUuICAqLwpA QCAtMzkyOSw3ICszOTI5LDcgQEAgdHlwZWRlZiBlbWFjc192YWx1ZSAoKmVtYWNzX3N1YnIp IChlbWFjc19lbnYgKiwgcHRyZGlmZl90LAogCiBzdHJ1Y3QgTGlzcF9Nb2R1bGVfRnVuY3Rp b24KIHsKLSAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKKyAgdW5pb24gdmVj dG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogCiAgIC8qIEZpZWxkcyB0cmFjZWQgYnkgR0M7IHRo ZXNlIG11c3QgY29tZSBmaXJzdC4gICovCiAgIExpc3BfT2JqZWN0IGRvY3VtZW50YXRpb247 CmRpZmYgLS1naXQgYS9zcmMvcHJvY2Vzcy5oIGIvc3JjL3Byb2Nlc3MuaAppbmRleCA1YTA0 NGY2NjlmLi41NjcwZjQ0NzM2IDEwMDY0NAotLS0gYS9zcmMvcHJvY2Vzcy5oCisrKyBiL3Ny Yy9wcm9jZXNzLmgKQEAgLTQxLDcgKzQxLDcgQEAgZW51bSB7IFBST0NFU1NfT1BFTl9GRFMg PSA2IH07CiAKIHN0cnVjdCBMaXNwX1Byb2Nlc3MKICAgewotICAgIHN0cnVjdCB2ZWN0b3Js aWtlX2hlYWRlciBoZWFkZXI7CisgICAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVy OwogCiAgICAgLyogTmFtZSBvZiBzdWJwcm9jZXNzIHRlcm1pbmFsLiAgKi8KICAgICBMaXNw X09iamVjdCB0dHlfbmFtZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXJtaG9va3MuaCBiL3NyYy90 ZXJtaG9va3MuaAppbmRleCBkZDYwNDRhYWJkLi5mZTRlOTkzYzk2IDEwMDY0NAotLS0gYS9z cmMvdGVybWhvb2tzLmgKKysrIGIvc3JjL3Rlcm1ob29rcy5oCkBAIC0zNzMsNyArMzczLDcg QEAgZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpncG1fdHR5Owogc3RydWN0IHRl cm1pbmFsCiB7CiAgIC8qIFRoaXMgaXMgZm9yIExpc3A7IHRoZSB0ZXJtaW5hbCBjb2RlIGRv ZXMgbm90IHJlZmVyIHRvIGl0LiAgKi8KLSAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhl YWRlcjsKKyAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogCiAgIC8qIFBhcmFt ZXRlciBhbGlzdCBvZiB0aGlzIHRlcm1pbmFsLiAgKi8KICAgTGlzcF9PYmplY3QgcGFyYW1f YWxpc3Q7CmRpZmYgLS1naXQgYS9zcmMvdGhyZWFkLmggYi9zcmMvdGhyZWFkLmgKaW5kZXgg MTliYWFmYmY4YS4uMTg0NTk3NGJjMiAxMDA2NDQKLS0tIGEvc3JjL3RocmVhZC5oCisrKyBi L3NyYy90aHJlYWQuaApAQCAtMzUsNyArMzUsNyBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4g IElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiBz dHJ1Y3QgdGhyZWFkX3N0YXRlCiB7Ci0gIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciBoZWFk ZXI7CisgIHVuaW9uIHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKIAogICAvKiBUaGUgYnVm ZmVyIGluIHdoaWNoIHRoZSBsYXN0IHNlYXJjaCB3YXMgcGVyZm9ybWVkLCBvcgogICAgICBR dCBpZiB0aGUgbGFzdCBzZWFyY2ggd2FzIGRvbmUgaW4gYSBzdHJpbmc7CkBAIC0yMzAsNyAr MjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIC8qIEEgbXV0ZXggYXMgYSBsaXNwIG9iamVjdC4g ICovCiBzdHJ1Y3QgTGlzcF9NdXRleAogewotICBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIg aGVhZGVyOworICB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAKICAgLyogVGhl IG5hbWUgb2YgdGhlIG11dGV4LCBvciBuaWwuICAqLwogICBMaXNwX09iamVjdCBuYW1lOwpA QCAtMjYxLDcgKzI2MSw3IEBAIFhNVVRFWCAoTGlzcF9PYmplY3QgYSkKIC8qIEEgY29uZGl0 aW9uIHZhcmlhYmxlIGFzIGEgbGlzcCBvYmplY3QuICAqLwogc3RydWN0IExpc3BfQ29uZFZh cgogewotICBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOworICB1bmlvbiB2ZWN0 b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAKICAgLyogVGhlIGFzc29jaWF0ZWQgbXV0ZXguICAq LwogICBMaXNwX09iamVjdCBtdXRleDsKZGlmZiAtLWdpdCBhL3NyYy93MzJ0ZXJtLmggYi9z cmMvdzMydGVybS5oCmluZGV4IDhkMDhjYTBhMmIuLmRlMjM0Y2I1N2QgMTAwNjQ0Ci0tLSBh L3NyYy93MzJ0ZXJtLmgKKysrIGIvc3JjL3czMnRlcm0uaApAQCAtNDMxLDcgKzQzMSw3IEBA IGV4dGVybiBzdHJ1Y3QgdzMyX291dHB1dCB3MzJ0ZXJtX2Rpc3BsYXk7CiBzdHJ1Y3Qgc2Ny b2xsX2JhciB7CiAKICAgLyogVGhpcyBmaWVsZCBpcyBzaGFyZWQgYnkgYWxsIHZlY3RvcnMu ICAqLwotICBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOworICB1bmlvbiB2ZWN0 b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAKICAgLyogVGhlIHdpbmRvdyB3ZSdyZSBhIHNjcm9s bCBiYXIgZm9yLiAgKi8KICAgTGlzcF9PYmplY3Qgd2luZG93OwpkaWZmIC0tZ2l0IGEvc3Jj L3dpbmRvdy5jIGIvc3JjL3dpbmRvdy5jCmluZGV4IGNjMWQyYTdiMzYuLjdmNDcyNTIzYjQg MTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuYworKysgYi9zcmMvd2luZG93LmMKQEAgLTM3MzMs OCArMzczMyw4IEBAIG1ha2VfcGFyZW50X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBi b29sIGhvcmZsYWcpCiAKICAgbyA9IFhXSU5ET1cgKHdpbmRvdyk7CiAgIHAgPSBhbGxvY2F0 ZV93aW5kb3cgKCk7Ci0gIG1lbWNweSAoKGNoYXIgKikgcCArIHNpemVvZiAoc3RydWN0IHZl Y3Rvcmxpa2VfaGVhZGVyKSwKLQkgIChjaGFyICopIG8gKyBzaXplb2YgKHN0cnVjdCB2ZWN0 b3JsaWtlX2hlYWRlciksCisgIG1lbWNweSAoKGNoYXIgKikgcCArIHNpemVvZiAodW5pb24g dmVjdG9ybGlrZV9oZWFkZXIpLAorCSAgKGNoYXIgKikgbyArIHNpemVvZiAodW5pb24gdmVj dG9ybGlrZV9oZWFkZXIpLAogCSAgd29yZF9zaXplICogVkVDU0laRSAoc3RydWN0IHdpbmRv dykpOwogICAvKiBQJ3MgYnVmZmVyIHNsb3QgbWF5IGNoYW5nZSBmcm9tIG5pbCB0byBhIGJ1 ZmZlci4uLiAgKi8KICAgYWRqdXN0X3dpbmRvd19jb3VudCAocCwgMSk7CkBAIC02MjMyLDcg KzYyMzIsNyBAQCBmcm9tIHRoZSB0b3Agb2YgdGhlIHdpbmRvdy4gICovKQogCiBzdHJ1Y3Qg c2F2ZV93aW5kb3dfZGF0YQogICB7Ci0gICAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhl YWRlcjsKKyAgICB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAgICAgTGlzcF9P YmplY3Qgc2VsZWN0ZWRfZnJhbWU7CiAgICAgTGlzcF9PYmplY3QgY3VycmVudF93aW5kb3c7 CiAgICAgTGlzcF9PYmplY3QgZl9jdXJyZW50X2J1ZmZlcjsKQEAgLTYyNjAsNyArNjI2MCw3 IEBAIHN0cnVjdCBzYXZlX3dpbmRvd19kYXRhCiAvKiBUaGlzIGlzIHNhdmVkIGFzIGEgTGlz cF9WZWN0b3IuICAqLwogc3RydWN0IHNhdmVkX3dpbmRvdwogewotICBzdHJ1Y3QgdmVjdG9y bGlrZV9oZWFkZXIgaGVhZGVyOworICB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7 CiAKICAgTGlzcF9PYmplY3Qgd2luZG93LCBidWZmZXIsIHN0YXJ0LCBwb2ludG0sIG9sZF9w b2ludG07CiAgIExpc3BfT2JqZWN0IHBpeGVsX2xlZnQsIHBpeGVsX3RvcCwgcGl4ZWxfaGVp Z2h0LCBwaXhlbF93aWR0aDsKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuaCBiL3NyYy93aW5k b3cuaAppbmRleCBkZjdjMjNmODI0Li4yNWM5Njg2YTlmIDEwMDY0NAotLS0gYS9zcmMvd2lu ZG93LmgKKysrIGIvc3JjL3dpbmRvdy5oCkBAIC04OCw3ICs4OCw3IEBAIHN0cnVjdCBjdXJz b3JfcG9zCiBzdHJ1Y3Qgd2luZG93CiAgIHsKICAgICAvKiBUaGlzIGlzIGZvciBMaXNwOyB0 aGUgdGVybWluYWwgY29kZSBkb2VzIG5vdCByZWZlciB0byBpdC4gICovCi0gICAgc3RydWN0 IHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKKyAgICB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRl ciBoZWFkZXI7CiAKICAgICAvKiBUaGUgZnJhbWUgdGhpcyB3aW5kb3cgaXMgb24uICAqLwog ICAgIExpc3BfT2JqZWN0IGZyYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmggYi9zcmMv eHRlcm0uaAppbmRleCA2Mjc0NjMwNzA2Li43YWIyMGJhMDZjIDEwMDY0NAotLS0gYS9zcmMv eHRlcm0uaAorKysgYi9zcmMveHRlcm0uaApAQCAtODg3LDcgKzg4Nyw3IEBAIGV4dGVybiB2 b2lkIHhfbWFya19mcmFtZV9kaXJ0eSAoc3RydWN0IGZyYW1lICpmKTsKIHN0cnVjdCBzY3Jv bGxfYmFyCiB7CiAgIC8qIFRoZXNlIGZpZWxkcyBhcmUgc2hhcmVkIGJ5IGFsbCB2ZWN0b3Jz LiAgKi8KLSAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsKKyAgdW5pb24gdmVj dG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogCiAgIC8qIFRoZSB3aW5kb3cgd2UncmUgYSBzY3Jv bGwgYmFyIGZvci4gICovCiAgIExpc3BfT2JqZWN0IHdpbmRvdzsKZGlmZiAtLWdpdCBhL3Ny Yy94d2lkZ2V0LmggYi9zcmMveHdpZGdldC5oCmluZGV4IDIyYThlYjNhNTUuLjAyYTA0NTNk YWIgMTAwNjQ0Ci0tLSBhL3NyYy94d2lkZ2V0LmgKKysrIGIvc3JjL3h3aWRnZXQuaApAQCAt MzMsNyArMzMsNyBAQCBzdHJ1Y3Qgd2luZG93OwogCiBzdHJ1Y3QgeHdpZGdldAogewotICBz dHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOworICB1bmlvbiB2ZWN0b3JsaWtlX2hl YWRlciBoZWFkZXI7CiAKICAgLyogQXV4aWxpYXJ5IGRhdGEuICAqLwogICBMaXNwX09iamVj dCBwbGlzdDsKQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IHh3aWRnZXQKIAogc3RydWN0IHh3 aWRnZXRfdmlldwogewotICBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOworICB1 bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAgIExpc3BfT2JqZWN0IG1vZGVsOwog ICBMaXNwX09iamVjdCB3OwogCi0tIAoyLjEzLjYKCg== --------------584A9426F4356F81A19E89C9 Content-Type: text/plain; charset=UTF-8; name="0002-Use-alignas-to-fix-GCALIGN-related-bugs.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Use-alignas-to-fix-GCALIGN-related-bugs.txt" RnJvbSAxOTYzNGJlZjZhMTYxYTUxM2FjZTk2NjkzNDFlZmFjOGU3ODJiNzMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDEwIE5vdiAyMDE3IDE5OjEwOjQ0IC0wODAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIFVzZSBhbGlnbmFzIHRvIGZpeCBHQ0FMSUdOLXJlbGF0ZWQgYnVncwpNSU1FLVZl cnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVXNlIGFsaWduYXMgYW5kIHVuaW9ucyB0 byBzcGVjaWZ5IGFsaWdubWVudHMgb2Ygb2JqZWN0cyBuZWVkaW5nCmFkZHJlc3NlcyB0aGF0 IGFyZSBhdCBsZWFzdCBhIG11bHRpcGxlIG9mIEdDQUxJR05NRU5ULiAgVXNpbmcKdGhlc2Ug c3RhbmRhcmQgQyBmYWNpbGl0aWVzIHNob3VsZCBiZSBzYWZlciB0aGFuIHJlbHlpbmcgb24g YWQgaG9jCmFuZCBwb29ybHktdW5kZXJzdG9vZCBmZWF0dXJlcyBsaWtlIEdDQ+KAmXMgX19h dHRyaWJ1dGVfXwooKGFsaWduZWQgKE4pKSksIHRoZSByb290IGNhdXNlIGZvciByZWNlbnQg cG9ydGluZyBidWdzIGxpa2UKQnVnIzI5MDQwLiAgVGhlIGFsaWduYXMgbWFjcm8gd2FzIHN0 YW5kYXJkaXplZCBieSBDMTEgYW5kIEdudWxpYgpzdXBwb3J0cyBhbGlnbmFzIGZvciBwcmUt QzExIHBsYXRmb3Jtcy4gIEkgaGF2ZSB0ZXN0ZWQgdGhpcyBvbiBTdW4KU3R1ZGlvIDEyIHNw YXJjICgyMDA3KSBhbmQgR0NDIDQuNC43IHg4Ni02NCAoMjAxMikgYXMgd2VsbCBhcyBvbgpt b3JlIHJlY2VudCBwbGF0Zm9ybXMgbGlrZSBHQ0MgNy4yLjEgKDIwMTcpIG9uIEZlZG9yYSAy NiAoYm90aAp4ODYtNjQgYW5kIHg4NikuCiogbGliLXNyYy9tYWtlLWRvY2ZpbGUuYyAoY2xv c2VfZW1hY3NfZ2xvYmFscyk6IGxpc3BzeW0gaXMgbm93Cmp1c3QgYW4gYXJyYXkgb2Ygc3Ry dWN0IExpc3BfU3ltYm9sLCBzaW5jZSBzdHJ1Y3QgTGlzcF9TeW1ib2wgaXMKbm93IHByb3Bl cmx5IGFsaWduZWQuICBBbGwgdXNlcyBjaGFuZ2VkLgoqIHNyYy9hbGxvYy5jIChORVhUX0ZS RUVfTElTUF9TVFJJTkcpOiBKdXN0IHVzZSB0aGUgbmV3IHUubmV4dAptZW1iZXI7IHRoaXMg aXMgc2ltcGxlciBhbmQgc2FmZXIgdGhhbiBjYXN0aW5nIGEgcG9pbnRlciB0aGF0Cm1pZ2h0 IG5vdCBiZSBhbGlnbmVkIHByb3Blcmx5LgooYWxpZ25lZF9MaXNwX1N5bWJvbCk6IFJlbW92 ZS4gIE5vIGxvbmdlciBuZWVkZWQsIG5vdyB0aGF0IHN0cnVjdApMaXNwX1N5bWJvbCBpcyBh bGlnbmVkIHByb3Blcmx5LiAgQWxsIHVzZXMgcmVwbGFjZWQgd2l0aCBzdHJ1Y3QKTGlzcF9T eW1ib2wuCiogc3JjL2xpc3AuaCAoR0NBTElHTkVEKTogUmVtb3ZlLCBhcyBpdCBkb2VzIG5v dCB3b3JrIGFzIGV4cGVjdGVkOgppdCBjYW4gY2F1c2UgdGhlIG5hdHVyYWwgYWxpZ25tZW50 IHRvIGJlIGlnbm9yZWQuICBBbGwgdXNlcwpyZXBsYWNlZCBieSB1bmlvbnMgd2l0aCBhIOKA mGNoYXIgYWxpZ25hcyAoR0NBTElHTk1FTlQp4oCZIG1lbWJlciBhcwpkZXNjcmliZWQgYmVs b3cuCihzdHJ1Y3QgTGlzcF9TeW1ib2wsIHN0cnVjdCBMaXNwX0NvbnMsIHN0cnVjdCBMaXNw X1N0cmluZyk6CkNoYW5nZSBkZWZpbml0aW9uIGZyb20g4oCYc3RydWN0IFRBRyB7IE1FTUJF UlMgfTvigJkgdG8K4oCYc3RydWN0IFRBRyB7IHVuaW9uIHsgc3RydWN0IHsgTUVNQkVSUyB9 IHM7IGNoYXIgYWxpZ25hcwooR0NBTElHTk1FTlQpIGdjYWxpZ25lZDsgfSB1OyB9O+KAmS4g IFRoaXMgZ3VhcmFudGVlcyDigJhzdHJ1Y3QgVEFH4oCZCnRvIGhhdmUgYW4gYWxpZ25tZW50 IHRoYXQgYXQgbGVhc3QgbWF4IChHQ0FMSUdOTUVOVCwgTikgd2hlcmUgTiBpcwppdHMgb2xk IGFsaWdubWVudC4gIEFsbCB1c2VzIGxpa2Ug4oCYUFRSLT5NRU1CRVLigJkgY2hhbmdlZCB0 bwrigJhQVFItPnUucy5NRU1CRVLigJk7IHRoZXNlIHVzZXMgd2VyZSBzdXBwb3NlZCB0byBi ZSBtb3N0bHkgcHJpdmF0ZQphbnl3YXkuICBWZXJpZnkgdGhhdCB0aGUgcmVzdWx0aW5nIOKA mHN0cnVjdCBUQUfigJkgaXMgcHJvcGVybHkKYWxpZ25lZCBmb3IgRW1hY3MuCih1bmlvbiB2 ZWN0b3JsaWtlX2hlYWRlcik6IE5ldyBtZW1iZXIg4oCYZ2NhbGlnbmVk4oCZIHRvIGd1YXJh bnRlZQp0aGF0IHRoaXMgdHlwZSwgYW5kIGl0cyBjb250YWluaW5nIHR5cGVzIGxpa2Ug4oCY c3RydWN0IExpc3BfU3VicuKAmSwK4oCYc3RydWN0IGJ1ZmZlcuKAmSBhbmQg4oCYc3RydWN0 IHRocmVhZF9zdGF0ZeKAmSwgYXJlIGFsbCBwcm9wZXJseQphbGlnbmVkIGZvciBFbWFjcy4K KHN0cnVjdCBMaXNwX1N0cmluZyk6IE5ldyB1bmlvbiBtZW1iZXIg4oCYbmV4dOKAmSwgZm9y IHRoZSBiZW5lZml0Cm9mIE5FWFRfRlJFRV9MSVNQX1NUUklORy4KKHVuaW9uIEFsaWduZWRf Q29ucywgdW5pb24gQWxpZ25lZF9TdHJpbmcpOiBSZW1vdmUuICBBbGwgdXNlcwpyZXBsYWNl ZCBieSBzdHJ1Y3QgTGlzcF9Db25zIGFuZCBzdHJ1Y3QgTGlzcF9TdHJpbmcsIHNpbmNlIHRo ZXkKYXJlIG5vdyBwcm9wZXJseSBhbGlnbmVkLgooVVNFX1NUQUNLX0NPTlMsIFVTRV9TVEFD S19TVFJJTkcpOiBTaW1wbGlmeSBub3cgdGhhdCB3ZSBjYW4KYXNzdW1lIHN0cnVjdCBMaXNw X0NvbnMgYW5kIHN0cnVjdCBMaXNwX1N0cmluZyBhcmUgcHJvcGVybHkKYWxpZ25lZC4KLS0t CiBsaWItc3JjL21ha2UtZG9jZmlsZS5jIHwgICA0ICstCiBzcmMvYWxsb2MuYyAgICAgICAg ICAgIHwgMjExICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9i dWZmZXIuYyAgICAgICAgICAgfCAgMTkgKystLQogc3JjL2J5dGVjb2RlLmMgICAgICAgICB8 ICAgNCArLQogc3JjL2Nhc2VmaWRkbGUuYyAgICAgICB8ICAgNCArLQogc3JjL2NtZHMuYyAg ICAgICAgICAgICB8ICAgNiArLQogc3JjL2RhdGEuYyAgICAgICAgICAgICB8ICA3NiArKysr KysrLS0tLS0tLQogc3JjL2RvYy5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2V2YWwu YyAgICAgICAgICAgICB8ICA1OSArKysrKy0tLS0tLQogc3JjL2Zucy5jICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2tleWJvYXJkLmMgICAgICAgICB8ICAxMCArLQogc3JjL2xpc3Au aCAgICAgICAgICAgICB8IDI3NyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBzcmMvbHJlYWQuYyAgICAgICAgICAgIHwgIDUyICsrKysrLS0t LS0KIHNyYy9taW5pYnVmLmMgICAgICAgICAgfCAgMTIgKy0tCiBzcmMvdGhyZWFkLmMgICAg ICAgICAgIHwgICAyICstCiBzcmMveHRlcm0uYyAgICAgICAgICAgIHwgICAyICstCiAxNiBm aWxlcyBjaGFuZ2VkLCAzNjcgaW5zZXJ0aW9ucygrKSwgMzc3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2xpYi1zcmMvbWFrZS1kb2NmaWxlLmMgYi9saWItc3JjL21ha2UtZG9jZmls ZS5jCmluZGV4IGZmODRkZjk0YTYuLjllNDc1NWI2M2EgMTAwNjQ0Ci0tLSBhL2xpYi1zcmMv bWFrZS1kb2NmaWxlLmMKKysrIGIvbGliLXNyYy9tYWtlLWRvY2ZpbGUuYwpAQCAtNjY3LDkg KzY2Nyw3IEBAIGNsb3NlX2VtYWNzX2dsb2JhbHMgKHB0cmRpZmZfdCBudW1fc3ltYm9scykK IAkgICAiI2lmbmRlZiBERUZJTkVfU1lNQk9MU1xuIgogCSAgICJleHRlcm5cbiIKIAkgICAi I2VuZGlmXG4iCi0JICAgInN0cnVjdCB7XG4iCi0JICAgIiAgc3RydWN0IEdDQUxJR05FRCBM aXNwX1N5bWJvbCBzO1xuIgotCSAgICJ9IGxpc3BzeW1bJXRkXTtcbiIpLAorCSAgICJzdHJ1 Y3QgTGlzcF9TeW1ib2wgbGlzcHN5bVsldGRdO1xuIiksCiAJICBudW1fc3ltYm9scyk7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9hbGxvYy5jIGIvc3JjL2FsbG9jLmMKaW5kZXggNWE0NGQ3 YTlmYy4uM2I4NzE5NWI3MCAxMDA2NDQKLS0tIGEvc3JjL2FsbG9jLmMKKysrIGIvc3JjL2Fs bG9jLmMKQEAgLTIxMSw5ICsyMTEsOSBAQCBhbGxvY191bmV4ZWNfcG9zdCAodm9pZCkKIC8q IE1hcmssIHVubWFyaywgcXVlcnkgbWFyayBiaXQgb2YgYSBMaXNwIHN0cmluZy4gIFMgbXVz dCBiZSBhIHBvaW50ZXIKICAgIHRvIGEgc3RydWN0IExpc3BfU3RyaW5nLiAgKi8KIAotI2Rl ZmluZSBNQVJLX1NUUklORyhTKQkJKChTKS0+c2l6ZSB8PSBBUlJBWV9NQVJLX0ZMQUcpCi0j ZGVmaW5lIFVOTUFSS19TVFJJTkcoUykJKChTKS0+c2l6ZSAmPSB+QVJSQVlfTUFSS19GTEFH KQotI2RlZmluZSBTVFJJTkdfTUFSS0VEX1AoUykJKCgoUyktPnNpemUgJiBBUlJBWV9NQVJL X0ZMQUcpICE9IDApCisjZGVmaW5lIE1BUktfU1RSSU5HKFMpCQkoKFMpLT51LnMuc2l6ZSB8 PSBBUlJBWV9NQVJLX0ZMQUcpCisjZGVmaW5lIFVOTUFSS19TVFJJTkcoUykJKChTKS0+dS5z LnNpemUgJj0gfkFSUkFZX01BUktfRkxBRykKKyNkZWZpbmUgU1RSSU5HX01BUktFRF9QKFMp CSgoKFMpLT51LnMuc2l6ZSAmIEFSUkFZX01BUktfRkxBRykgIT0gMCkKIAogI2RlZmluZSBW RUNUT1JfTUFSSyhWKQkJKChWKS0+aGVhZGVyLnNpemUgfD0gQVJSQVlfTUFSS19GTEFHKQog I2RlZmluZSBWRUNUT1JfVU5NQVJLKFYpCSgoViktPmhlYWRlci5zaXplICY9IH5BUlJBWV9N QVJLX0ZMQUcpCkBAIC0xNzMwLDE0ICsxNzMwLDE0IEBAIHN0YXRpYyBFTUFDU19JTlQgdG90 YWxfc3RyaW5nX2J5dGVzOwogICAgc3RyaW5nX2ZyZWVfbGlzdCwgcmV0dXJuIGEgcG9pbnRl ciB0byBpdHMgc3VjY2Vzc29yIGluIHRoZQogICAgZnJlZS1saXN0LiAgKi8KIAotI2RlZmlu ZSBORVhUX0ZSRUVfTElTUF9TVFJJTkcoUykgKCooc3RydWN0IExpc3BfU3RyaW5nICoqKSAo UykpCisjZGVmaW5lIE5FWFRfRlJFRV9MSVNQX1NUUklORyhTKSAoKFMpLT51Lm5leHQpCiAK IC8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHNkYXRhIHN0cnVjdHVyZSBiZWxvbmdpbmcg dG8gTGlzcCBzdHJpbmcgUy4KICAgIFMgbXVzdCBiZSBsaXZlLCBpLmUuIFMtPmRhdGEgbXVz dCBub3QgYmUgbnVsbC4gIFMtPmRhdGEgaXMgYWN0dWFsbHkKICAgIGEgcG9pbnRlciB0byB0 aGUgYHUuZGF0YScgbWVtYmVyIG9mIGl0cyBzZGF0YSBzdHJ1Y3R1cmU7IHRoZQogICAgc3Ry dWN0dXJlIHN0YXJ0cyBhdCBhIGNvbnN0YW50IG9mZnNldCBpbiBmcm9udCBvZiB0aGF0LiAg Ki8KIAotI2RlZmluZSBTREFUQV9PRl9TVFJJTkcoUykgKChzZGF0YSAqKSAoKFMpLT5kYXRh IC0gU0RBVEFfREFUQV9PRkZTRVQpKQorI2RlZmluZSBTREFUQV9PRl9TVFJJTkcoUykgKChz ZGF0YSAqKSAoKFMpLT51LnMuZGF0YSAtIFNEQVRBX0RBVEFfT0ZGU0VUKSkKIAogCiAjaWZk ZWYgR0NfQ0hFQ0tfU1RSSU5HX09WRVJSVU4KQEAgLTE4MTgsOSArMTgxOCwxMCBAQCBwdHJk aWZmX3QKIHN0cmluZ19ieXRlcyAoc3RydWN0IExpc3BfU3RyaW5nICpzKQogewogICBwdHJk aWZmX3QgbmJ5dGVzID0KLSAgICAocy0+c2l6ZV9ieXRlIDwgMCA/IHMtPnNpemUgJiB+QVJS QVlfTUFSS19GTEFHIDogcy0+c2l6ZV9ieXRlKTsKKyAgICAocy0+dS5zLnNpemVfYnl0ZSA8 IDAgPyBzLT51LnMuc2l6ZSAmIH5BUlJBWV9NQVJLX0ZMQUcgOiBzLT51LnMuc2l6ZV9ieXRl KTsKIAotICBpZiAoIVBVUkVfUCAocykgJiYgcy0+ZGF0YSAmJiBuYnl0ZXMgIT0gU0RBVEFf TkJZVEVTIChTREFUQV9PRl9TVFJJTkcgKHMpKSkKKyAgaWYgKCFQVVJFX1AgKHMpICYmIHMt PnUucy5kYXRhCisgICAgICAmJiBuYnl0ZXMgIT0gU0RBVEFfTkJZVEVTIChTREFUQV9PRl9T VFJJTkcgKHMpKSkKICAgICBlbWFjc19hYm9ydCAoKTsKICAgcmV0dXJuIG5ieXRlczsKIH0K QEAgLTE5MjYsNyArMTkyNyw3IEBAIGFsbG9jYXRlX3N0cmluZyAodm9pZCkKIAl7CiAJICBz ID0gYi0+c3RyaW5ncyArIGk7CiAJICAvKiBFdmVyeSBzdHJpbmcgb24gYSBmcmVlIGxpc3Qg c2hvdWxkIGhhdmUgTlVMTCBkYXRhIHBvaW50ZXIuICAqLwotCSAgcy0+ZGF0YSA9IE5VTEw7 CisJICBzLT51LnMuZGF0YSA9IE5VTEw7CiAJICBORVhUX0ZSRUVfTElTUF9TVFJJTkcgKHMp ID0gc3RyaW5nX2ZyZWVfbGlzdDsKIAkgIHN0cmluZ19mcmVlX2xpc3QgPSBzOwogCX0KQEAg LTE5NjUsMTAgKzE5NjYsMTAgQEAgYWxsb2NhdGVfc3RyaW5nICh2b2lkKQogCiAKIC8qIFNl dCB1cCBMaXNwX1N0cmluZyBTIGZvciBob2xkaW5nIE5DSEFSUyBjaGFyYWN0ZXJzLCBOQllU RVMgYnl0ZXMsCi0gICBwbHVzIGEgTlVMIGJ5dGUgYXQgdGhlIGVuZC4gIEFsbG9jYXRlIGFu IHNkYXRhIHN0cnVjdHVyZSBmb3IgUywgYW5kCi0gICBzZXQgUy0+ZGF0YSB0byBpdHMgYHUu ZGF0YScgbWVtYmVyLiAgU3RvcmUgYSBOVUwgYnl0ZSBhdCB0aGUgZW5kIG9mCi0gICBTLT5k YXRhLiAgU2V0IFMtPnNpemUgdG8gTkNIQVJTIGFuZCBTLT5zaXplX2J5dGUgdG8gTkJZVEVT LiAgRnJlZQotICAgUy0+ZGF0YSBpZiBpdCB3YXMgaW5pdGlhbGx5IG5vbi1udWxsLiAgKi8K KyAgIHBsdXMgYSBOVUwgYnl0ZSBhdCB0aGUgZW5kLiAgQWxsb2NhdGUgYW4gc2RhdGEgc3Ry dWN0dXJlIERBVEEgZm9yCisgICBTLCBhbmQgc2V0IFMtPnUucy5kYXRhIHRvIFNEQVRBLT51 LmRhdGEuICBTdG9yZSBhIE5VTCBieXRlIGF0IHRoZQorICAgZW5kIG9mIFMtPnUucy5kYXRh LiAgU2V0IFMtPnUucy5zaXplIHRvIE5DSEFSUyBhbmQgUy0+dS5zLnNpemVfYnl0ZQorICAg dG8gTkJZVEVTLiAgRnJlZSBTLT51LnMuZGF0YSBpZiBpdCB3YXMgaW5pdGlhbGx5IG5vbi1u dWxsLiAgKi8KIAogdm9pZAogYWxsb2NhdGVfc3RyaW5nX2RhdGEgKHN0cnVjdCBMaXNwX1N0 cmluZyAqcywKQEAgLTE5ODQsNyArMTk4NSw3IEBAIGFsbG9jYXRlX3N0cmluZ19kYXRhIChz dHJ1Y3QgTGlzcF9TdHJpbmcgKnMsCiAgIC8qIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGJ5 dGVzIG5lZWRlZCB0byBzdG9yZSBOQllURVMgYnl0ZXMKICAgICAgb2Ygc3RyaW5nIGRhdGEu ICAqLwogICBuZWVkZWQgPSBTREFUQV9TSVpFIChuYnl0ZXMpOwotICBpZiAocy0+ZGF0YSkK KyAgaWYgKHMtPnUucy5kYXRhKQogICAgIHsKICAgICAgIG9sZF9kYXRhID0gU0RBVEFfT0Zf U1RSSU5HIChzKTsKICAgICAgIG9sZF9uYnl0ZXMgPSBTVFJJTkdfQllURVMgKHMpOwpAQCAt MjA0MywxMyArMjA0NCwxMyBAQCBhbGxvY2F0ZV9zdHJpbmdfZGF0YSAoc3RydWN0IExpc3Bf U3RyaW5nICpzLAogCiAgIE1BTExPQ19VTkJMT0NLX0lOUFVUOwogCi0gIHMtPmRhdGEgPSBT REFUQV9EQVRBIChkYXRhKTsKKyAgcy0+dS5zLmRhdGEgPSBTREFUQV9EQVRBIChkYXRhKTsK ICNpZmRlZiBHQ19DSEVDS19TVFJJTkdfQllURVMKICAgU0RBVEFfTkJZVEVTIChkYXRhKSA9 IG5ieXRlczsKICNlbmRpZgotICBzLT5zaXplID0gbmNoYXJzOwotICBzLT5zaXplX2J5dGUg PSBuYnl0ZXM7Ci0gIHMtPmRhdGFbbmJ5dGVzXSA9ICdcMCc7CisgIHMtPnUucy5zaXplID0g bmNoYXJzOworICBzLT51LnMuc2l6ZV9ieXRlID0gbmJ5dGVzOworICBzLT51LnMuZGF0YVtu Ynl0ZXNdID0gJ1wwJzsKICNpZmRlZiBHQ19DSEVDS19TVFJJTkdfT1ZFUlJVTgogICBtZW1j cHkgKChjaGFyICopIGRhdGEgKyBuZWVkZWQsIHN0cmluZ19vdmVycnVuX2Nvb2tpZSwKIAkg IEdDX1NUUklOR19PVkVSUlVOX0NPT0tJRV9TSVpFKTsKQEAgLTIwOTMsNyArMjA5NCw3IEBA IHN3ZWVwX3N0cmluZ3MgKHZvaWQpCiAJewogCSAgc3RydWN0IExpc3BfU3RyaW5nICpzID0g Yi0+c3RyaW5ncyArIGk7CiAKLQkgIGlmIChzLT5kYXRhKQorCSAgaWYgKHMtPnUucy5kYXRh KQogCSAgICB7CiAJICAgICAgLyogU3RyaW5nIHdhcyBub3Qgb24gZnJlZS1saXN0IGJlZm9y ZS4gICovCiAJICAgICAgaWYgKFNUUklOR19NQVJLRURfUCAocykpCkBAIC0yMTAyLDcgKzIx MDMsNyBAQCBzd2VlcF9zdHJpbmdzICh2b2lkKQogCQkgIFVOTUFSS19TVFJJTkcgKHMpOwog CiAJCSAgLyogRG8gbm90IHVzZSBzdHJpbmdfKHNldHxnZXQpX2ludGVydmFscyBoZXJlLiAg Ki8KLQkJICBzLT5pbnRlcnZhbHMgPSBiYWxhbmNlX2ludGVydmFscyAocy0+aW50ZXJ2YWxz KTsKKwkJICBzLT51LnMuaW50ZXJ2YWxzID0gYmFsYW5jZV9pbnRlcnZhbHMgKHMtPnUucy5p bnRlcnZhbHMpOwogCiAJCSAgKyt0b3RhbF9zdHJpbmdzOwogCQkgIHRvdGFsX3N0cmluZ19i eXRlcyArPSBTVFJJTkdfQllURVMgKHMpOwpAQCAtMjEyNSw3ICsyMTI2LDcgQEAgc3dlZXBf c3RyaW5ncyAodm9pZCkKIAogCQkgIC8qIFJlc2V0IHRoZSBzdHJpbmdzJ3MgYGRhdGEnIG1l bWJlciBzbyB0aGF0IHdlCiAJCSAgICAga25vdyBpdCdzIGZyZWUuICAqLwotCQkgIHMtPmRh dGEgPSBOVUxMOworCQkgIHMtPnUucy5kYXRhID0gTlVMTDsKIAogCQkgIC8qIFB1dCB0aGUg c3RyaW5nIG9uIHRoZSBmcmVlLWxpc3QuICAqLwogCQkgIE5FWFRfRlJFRV9MSVNQX1NUUklO RyAocykgPSBzdHJpbmdfZnJlZV9saXN0OwpAQCAtMjI2NCw3ICsyMjY1LDcgQEAgY29tcGFj dF9zbWFsbF9zdHJpbmdzICh2b2lkKQogCQkgICAgewogCQkgICAgICBlYXNzZXJ0ICh0YiAh PSBiIHx8IHRvIDwgZnJvbSk7CiAJCSAgICAgIG1lbW1vdmUgKHRvLCBmcm9tLCBuYnl0ZXMg KyBHQ19TVFJJTkdfRVhUUkEpOwotCQkgICAgICB0by0+c3RyaW5nLT5kYXRhID0gU0RBVEFf REFUQSAodG8pOworCQkgICAgICB0by0+c3RyaW5nLT51LnMuZGF0YSA9IFNEQVRBX0RBVEEg KHRvKTsKIAkJICAgIH0KIAogCQkgIC8qIEFkdmFuY2UgcGFzdCB0aGUgc2RhdGEgd2UgY29w aWVkIHRvLiAgKi8KQEAgLTI1NDQsNyArMjU0NSw3IEBAIG1ha2VfdW5pbml0X211bHRpYnl0 ZV9zdHJpbmcgKEVNQUNTX0lOVCBuY2hhcnMsIEVNQUNTX0lOVCBuYnl0ZXMpCiAgICAgcmV0 dXJuIGVtcHR5X211bHRpYnl0ZV9zdHJpbmc7CiAKICAgcyA9IGFsbG9jYXRlX3N0cmluZyAo KTsKLSAgcy0+aW50ZXJ2YWxzID0gTlVMTDsKKyAgcy0+dS5zLmludGVydmFscyA9IE5VTEw7 CiAgIGFsbG9jYXRlX3N0cmluZ19kYXRhIChzLCBuY2hhcnMsIG5ieXRlcyk7CiAgIFhTRVRT VFJJTkcgKHN0cmluZywgcyk7CiAgIHN0cmluZ19jaGFyc19jb25zZWQgKz0gbmJ5dGVzOwpA QCAtMjcyOSw4ICsyNzMwLDggQEAgc3RhdGljIHN0cnVjdCBMaXNwX0NvbnMgKmNvbnNfZnJl ZV9saXN0Owogdm9pZAogZnJlZV9jb25zIChzdHJ1Y3QgTGlzcF9Db25zICpwdHIpCiB7Ci0g IHB0ci0+dS5jaGFpbiA9IGNvbnNfZnJlZV9saXN0OwotICBwdHItPmNhciA9IFZkZWFkOwor ICBwdHItPnUucy51LmNoYWluID0gY29uc19mcmVlX2xpc3Q7CisgIHB0ci0+dS5zLmNhciA9 IFZkZWFkOwogICBjb25zX2ZyZWVfbGlzdCA9IHB0cjsKICAgY29uc2luZ19zaW5jZV9nYyAt PSBzaXplb2YgKnB0cjsKICAgdG90YWxfZnJlZV9jb25zZXMrKzsKQEAgLTI3NDksNyArMjc1 MCw3IEBAIERFRlVOICgiY29ucyIsIEZjb25zLCBTY29ucywgMiwgMiwgMCwKICAgICAgIC8q IFdlIHVzZSB0aGUgY2RyIGZvciBjaGFpbmluZyB0aGUgZnJlZSBsaXN0CiAJIHNvIHRoYXQg d2Ugd29uJ3QgdXNlIHRoZSBzYW1lIGZpZWxkIHRoYXQgaGFzIHRoZSBtYXJrIGJpdC4gICov CiAgICAgICBYU0VUQ09OUyAodmFsLCBjb25zX2ZyZWVfbGlzdCk7Ci0gICAgICBjb25zX2Zy ZWVfbGlzdCA9IGNvbnNfZnJlZV9saXN0LT51LmNoYWluOworICAgICAgY29uc19mcmVlX2xp c3QgPSBjb25zX2ZyZWVfbGlzdC0+dS5zLnUuY2hhaW47CiAgICAgfQogICBlbHNlCiAgICAg ewpAQCAtMjc4Niw3ICsyNzg3LDcgQEAgY2hlY2tfY29uc19saXN0ICh2b2lkKQogICBzdHJ1 Y3QgTGlzcF9Db25zICp0YWlsID0gY29uc19mcmVlX2xpc3Q7CiAKICAgd2hpbGUgKHRhaWwp Ci0gICAgdGFpbCA9IHRhaWwtPnUuY2hhaW47CisgICAgdGFpbCA9IHRhaWwtPnUucy51LmNo YWluOwogfQogI2VuZGlmCiAKQEAgLTM1NDMsMjcgKzM1NDQsMTcgQEAgdXNhZ2U6IChtYWtl LWJ5dGUtY29kZSBBUkdMSVNUIEJZVEUtQ09ERSBDT05TVEFOVFMgREVQVEggJm9wdGlvbmFs IERPQ1NUUklORyBJTlQKIAkJCSAgIFN5bWJvbCBBbGxvY2F0aW9uCiAgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCiAKLS8qIExpa2Ugc3RydWN0IExpc3BfU3ltYm9sLCBidXQgcGFkZGVkIHNvIHRo YXQgdGhlIHNpemUgaXMgYSBtdWx0aXBsZQotICAgb2YgdGhlIHJlcXVpcmVkIGFsaWdubWVu dC4gICovCi0KLXVuaW9uIGFsaWduZWRfTGlzcF9TeW1ib2wKLXsKLSAgc3RydWN0IExpc3Bf U3ltYm9sIHM7Ci0gIHVuc2lnbmVkIGNoYXIgY1soc2l6ZW9mIChzdHJ1Y3QgTGlzcF9TeW1i b2wpICsgR0NBTElHTk1FTlQgLSAxKQotCQkgICYgLUdDQUxJR05NRU5UXTsKLX07Ci0KIC8q IEVhY2ggc3ltYm9sX2Jsb2NrIGlzIGp1c3QgdW5kZXIgMTAyMCBieXRlcyBsb25nLCBzaW5j ZSBtYWxsb2MKICAgIHJlYWxseSBhbGxvY2F0ZXMgaW4gdW5pdHMgb2YgcG93ZXJzIG9mIHR3 byBhbmQgdXNlcyA0IGJ5dGVzIGZvciBpdHMKICAgIG93biBvdmVyaGVhZC4gICovCiAKICNk ZWZpbmUgU1lNQk9MX0JMT0NLX1NJWkUgXAotICAoKDEwMjAgLSBzaXplb2YgKHN0cnVjdCBz eW1ib2xfYmxvY2sgKikpIC8gc2l6ZW9mICh1bmlvbiBhbGlnbmVkX0xpc3BfU3ltYm9sKSkK KyAgKCgxMDIwIC0gc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sX2Jsb2NrICopKSAvIHNpemVvZiAo c3RydWN0IExpc3BfU3ltYm9sKSkKIAogc3RydWN0IHN5bWJvbF9ibG9jawogewogICAvKiBQ bGFjZSBgc3ltYm9scycgZmlyc3QsIHRvIHByZXNlcnZlIGFsaWdubWVudC4gICovCi0gIHVu aW9uIGFsaWduZWRfTGlzcF9TeW1ib2wgc3ltYm9sc1tTWU1CT0xfQkxPQ0tfU0laRV07Cisg IHN0cnVjdCBMaXNwX1N5bWJvbCBzeW1ib2xzW1NZTUJPTF9CTE9DS19TSVpFXTsKICAgc3Ry dWN0IHN5bWJvbF9ibG9jayAqbmV4dDsKIH07CiAKQEAgLTM1ODcsNyArMzU3OCw3IEBAIHN0 YXRpYyBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bWJvbF9mcmVlX2xpc3Q7CiBzdGF0aWMgdm9p ZAogc2V0X3N5bWJvbF9uYW1lIChMaXNwX09iamVjdCBzeW0sIExpc3BfT2JqZWN0IG5hbWUp CiB7Ci0gIFhTWU1CT0wgKHN5bSktPm5hbWUgPSBuYW1lOworICBYU1lNQk9MIChzeW0pLT51 LnMubmFtZSA9IG5hbWU7CiB9CiAKIHZvaWQKQEAgLTM1OTYsMTUgKzM1ODcsMTUgQEAgaW5p dF9zeW1ib2wgKExpc3BfT2JqZWN0IHZhbCwgTGlzcF9PYmplY3QgbmFtZSkKICAgc3RydWN0 IExpc3BfU3ltYm9sICpwID0gWFNZTUJPTCAodmFsKTsKICAgc2V0X3N5bWJvbF9uYW1lICh2 YWwsIG5hbWUpOwogICBzZXRfc3ltYm9sX3BsaXN0ICh2YWwsIFFuaWwpOwotICBwLT5yZWRp cmVjdCA9IFNZTUJPTF9QTEFJTlZBTDsKKyAgcC0+dS5zLnJlZGlyZWN0ID0gU1lNQk9MX1BM QUlOVkFMOwogICBTRVRfU1lNQk9MX1ZBTCAocCwgUXVuYm91bmQpOwogICBzZXRfc3ltYm9s X2Z1bmN0aW9uICh2YWwsIFFuaWwpOwogICBzZXRfc3ltYm9sX25leHQgKHZhbCwgTlVMTCk7 Ci0gIHAtPmdjbWFya2JpdCA9IGZhbHNlOwotICBwLT5pbnRlcm5lZCA9IFNZTUJPTF9VTklO VEVSTkVEOwotICBwLT50cmFwcGVkX3dyaXRlID0gU1lNQk9MX1VOVFJBUFBFRF9XUklURTsK LSAgcC0+ZGVjbGFyZWRfc3BlY2lhbCA9IGZhbHNlOwotICBwLT5waW5uZWQgPSBmYWxzZTsK KyAgcC0+dS5zLmdjbWFya2JpdCA9IGZhbHNlOworICBwLT51LnMuaW50ZXJuZWQgPSBTWU1C T0xfVU5JTlRFUk5FRDsKKyAgcC0+dS5zLnRyYXBwZWRfd3JpdGUgPSBTWU1CT0xfVU5UUkFQ UEVEX1dSSVRFOworICBwLT51LnMuZGVjbGFyZWRfc3BlY2lhbCA9IGZhbHNlOworICBwLT51 LnMucGlubmVkID0gZmFsc2U7CiB9CiAKIERFRlVOICgibWFrZS1zeW1ib2wiLCBGbWFrZV9z eW1ib2wsIFNtYWtlX3N5bWJvbCwgMSwgMSwgMCwKQEAgLTM2MjEsNyArMzYxMiw3IEBAIEl0 cyB2YWx1ZSBpcyB2b2lkLCBhbmQgaXRzIGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIHByb3Bl cnR5IGxpc3QgYXJlIG5pbC4gICovKQogICBpZiAoc3ltYm9sX2ZyZWVfbGlzdCkKICAgICB7 CiAgICAgICBYU0VUU1lNQk9MICh2YWwsIHN5bWJvbF9mcmVlX2xpc3QpOwotICAgICAgc3lt Ym9sX2ZyZWVfbGlzdCA9IHN5bWJvbF9mcmVlX2xpc3QtPm5leHQ7CisgICAgICBzeW1ib2xf ZnJlZV9saXN0ID0gc3ltYm9sX2ZyZWVfbGlzdC0+dS5zLm5leHQ7CiAgICAgfQogICBlbHNl CiAgICAgewpAQCAtMzYzNCw3ICszNjI1LDcgQEAgSXRzIHZhbHVlIGlzIHZvaWQsIGFuZCBp dHMgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgcHJvcGVydHkgbGlzdCBhcmUgbmlsLiAgKi8p CiAJICBzeW1ib2xfYmxvY2tfaW5kZXggPSAwOwogCSAgdG90YWxfZnJlZV9zeW1ib2xzICs9 IFNZTUJPTF9CTE9DS19TSVpFOwogCX0KLSAgICAgIFhTRVRTWU1CT0wgKHZhbCwgJnN5bWJv bF9ibG9jay0+c3ltYm9sc1tzeW1ib2xfYmxvY2tfaW5kZXhdLnMpOworICAgICAgWFNFVFNZ TUJPTCAodmFsLCAmc3ltYm9sX2Jsb2NrLT5zeW1ib2xzW3N5bWJvbF9ibG9ja19pbmRleF0p OwogICAgICAgc3ltYm9sX2Jsb2NrX2luZGV4Kys7CiAgICAgfQogCkBAIC00NTg3LDcgKzQ1 NzgsNyBAQCBsaXZlX3N0cmluZ19ob2xkaW5nIChzdHJ1Y3QgbWVtX25vZGUgKm0sIHZvaWQg KnApCiAgICAgICBpZiAoMCA8PSBvZmZzZXQgJiYgb2Zmc2V0IDwgU1RSSU5HX0JMT0NLX1NJ WkUgKiBzaXplb2YgYi0+c3RyaW5nc1swXSkKIAl7CiAJICBzdHJ1Y3QgTGlzcF9TdHJpbmcg KnMgPSBwID0gY3AgLT0gb2Zmc2V0ICUgc2l6ZW9mIGItPnN0cmluZ3NbMF07Ci0JICBpZiAo cy0+ZGF0YSkKKwkgIGlmIChzLT51LnMuZGF0YSkKIAkgICAgcmV0dXJuIG1ha2VfbGlzcF9w dHIgKHMsIExpc3BfU3RyaW5nKTsKIAl9CiAgICAgfQpAQCAtNDYyMSw3ICs0NjEyLDcgQEAg bGl2ZV9jb25zX2hvbGRpbmcgKHN0cnVjdCBtZW1fbm9kZSAqbSwgdm9pZCAqcCkKIAkgICAg ICB8fCBvZmZzZXQgLyBzaXplb2YgYi0+Y29uc2VzWzBdIDwgY29uc19ibG9ja19pbmRleCkp CiAJewogCSAgc3RydWN0IExpc3BfQ29ucyAqcyA9IHAgPSBjcCAtPSBvZmZzZXQgJSBzaXpl b2YgYi0+Y29uc2VzWzBdOwotCSAgaWYgKCFFUSAocy0+Y2FyLCBWZGVhZCkpCisJICBpZiAo IUVRIChzLT51LnMuY2FyLCBWZGVhZCkpCiAJICAgIHJldHVybiBtYWtlX2xpc3BfcHRyIChz LCBMaXNwX0NvbnMpOwogCX0KICAgICB9CkBAIC00NjU2LDcgKzQ2NDcsNyBAQCBsaXZlX3N5 bWJvbF9ob2xkaW5nIChzdHJ1Y3QgbWVtX25vZGUgKm0sIHZvaWQgKnApCiAJICAgICAgfHwg b2Zmc2V0IC8gc2l6ZW9mIGItPnN5bWJvbHNbMF0gPCBzeW1ib2xfYmxvY2tfaW5kZXgpKQog CXsKIAkgIHN0cnVjdCBMaXNwX1N5bWJvbCAqcyA9IHAgPSBjcCAtPSBvZmZzZXQgJSBzaXpl b2YgYi0+c3ltYm9sc1swXTsKLQkgIGlmICghRVEgKHMtPmZ1bmN0aW9uLCBWZGVhZCkpCisJ ICBpZiAoIUVRIChzLT51LnMuZnVuY3Rpb24sIFZkZWFkKSkKIAkgICAgcmV0dXJuIG1ha2Vf bGlzcF9zeW1ib2wgKHMpOwogCX0KICAgICB9CkBAIC00OTg0LDcgKzQ5NzUsNyBAQCBtYXJr X21lbW9yeSAodm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKICAgICAgICBMaXNwX09iamVjdCBv YmogPSBidWlsZF9zdHJpbmcgKCJ0ZXN0Iik7CiAgICAgICAgc3RydWN0IExpc3BfU3RyaW5n ICpzID0gWFNUUklORyAob2JqKTsKICAgICAgICBGZ2FyYmFnZV9jb2xsZWN0ICgpOwotICAg ICAgIGZwcmludGYgKHN0ZGVyciwgInRlc3QgJyVzJ1xuIiwgcy0+ZGF0YSk7CisgICAgICAg ZnByaW50ZiAoc3RkZXJyLCAidGVzdCAnJXMnXG4iLCBzLT51LnMuZGF0YSk7CiAgICAgICAg cmV0dXJuIFFuaWw7CiAgICAgIH0KIApAQCAtNTQ4NCwxNiArNTQ3NSwxNiBAQCBtYWtlX3B1 cmVfc3RyaW5nIChjb25zdCBjaGFyICpkYXRhLAogewogICBMaXNwX09iamVjdCBzdHJpbmc7 CiAgIHN0cnVjdCBMaXNwX1N0cmluZyAqcyA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcywgTGlz cF9TdHJpbmcpOwotICBzLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZmluZF9zdHJpbmdf ZGF0YV9pbl9wdXJlIChkYXRhLCBuYnl0ZXMpOwotICBpZiAocy0+ZGF0YSA9PSBOVUxMKQor ICBzLT51LnMuZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGZpbmRfc3RyaW5nX2RhdGFfaW5f cHVyZSAoZGF0YSwgbmJ5dGVzKTsKKyAgaWYgKHMtPnUucy5kYXRhID09IE5VTEwpCiAgICAg ewotICAgICAgcy0+ZGF0YSA9IHB1cmVfYWxsb2MgKG5ieXRlcyArIDEsIC0xKTsKLSAgICAg IG1lbWNweSAocy0+ZGF0YSwgZGF0YSwgbmJ5dGVzKTsKLSAgICAgIHMtPmRhdGFbbmJ5dGVz XSA9ICdcMCc7CisgICAgICBzLT51LnMuZGF0YSA9IHB1cmVfYWxsb2MgKG5ieXRlcyArIDEs IC0xKTsKKyAgICAgIG1lbWNweSAocy0+dS5zLmRhdGEsIGRhdGEsIG5ieXRlcyk7CisgICAg ICBzLT51LnMuZGF0YVtuYnl0ZXNdID0gJ1wwJzsKICAgICB9Ci0gIHMtPnNpemUgPSBuY2hh cnM7Ci0gIHMtPnNpemVfYnl0ZSA9IG11bHRpYnl0ZSA/IG5ieXRlcyA6IC0xOwotICBzLT5p bnRlcnZhbHMgPSBOVUxMOworICBzLT51LnMuc2l6ZSA9IG5jaGFyczsKKyAgcy0+dS5zLnNp emVfYnl0ZSA9IG11bHRpYnl0ZSA/IG5ieXRlcyA6IC0xOworICBzLT51LnMuaW50ZXJ2YWxz ID0gTlVMTDsKICAgWFNFVFNUUklORyAoc3RyaW5nLCBzKTsKICAgcmV0dXJuIHN0cmluZzsK IH0KQEAgLTU1MDYsMTAgKzU0OTcsMTAgQEAgbWFrZV9wdXJlX2Nfc3RyaW5nIChjb25zdCBj aGFyICpkYXRhLCBwdHJkaWZmX3QgbmNoYXJzKQogewogICBMaXNwX09iamVjdCBzdHJpbmc7 CiAgIHN0cnVjdCBMaXNwX1N0cmluZyAqcyA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcywgTGlz cF9TdHJpbmcpOwotICBzLT5zaXplID0gbmNoYXJzOwotICBzLT5zaXplX2J5dGUgPSAtMTsK LSAgcy0+ZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7Ci0gIHMtPmludGVydmFscyA9 IE5VTEw7CisgIHMtPnUucy5zaXplID0gbmNoYXJzOworICBzLT51LnMuc2l6ZV9ieXRlID0g LTE7CisgIHMtPnUucy5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKKyAgcy0+dS5z LmludGVydmFscyA9IE5VTEw7CiAgIFhTRVRTVFJJTkcgKHN0cmluZywgcyk7CiAgIHJldHVy biBzdHJpbmc7CiB9CkBAIC01NjIwLDcgKzU2MTEsNyBAQCBwdXJlY29weSAoTGlzcF9PYmpl Y3Qgb2JqKQogICAgICAgfHwgU1VCUlAgKG9iaikpCiAgICAgcmV0dXJuIG9iajsgICAgLyog QWxyZWFkeSBwdXJlLiAgKi8KIAotICBpZiAoU1RSSU5HUCAob2JqKSAmJiBYU1RSSU5HIChv YmopLT5pbnRlcnZhbHMpCisgIGlmIChTVFJJTkdQIChvYmopICYmIFhTVFJJTkcgKG9iaikt PnUucy5pbnRlcnZhbHMpCiAgICAgbWVzc2FnZV93aXRoX3N0cmluZyAoIkRyb3BwaW5nIHRl eHQtcHJvcGVydGllcyB3aGlsZSBtYWtpbmcgc3RyaW5nIGAlcycgcHVyZSIsCiAJCQkgb2Jq LCB0cnVlKTsKIApAQCAtNTY3NSwxMCArNTY2NiwxMCBAQCBwdXJlY29weSAoTGlzcF9PYmpl Y3Qgb2JqKQogICAgIH0KICAgZWxzZSBpZiAoU1lNQk9MUCAob2JqKSkKICAgICB7Ci0gICAg ICBpZiAoIVhTWU1CT0wgKG9iaiktPnBpbm5lZCAmJiAhY19zeW1ib2xfcCAoWFNZTUJPTCAo b2JqKSkpCisgICAgICBpZiAoIVhTWU1CT0wgKG9iaiktPnUucy5waW5uZWQgJiYgIWNfc3lt Ym9sX3AgKFhTWU1CT0wgKG9iaikpKQogCXsgLyogV2UgY2FuJ3QgcHVyaWZ5IHRoZW0sIGJ1 dCB0aGV5IGFwcGVhciBpbiBtYW55IHB1cmUgb2JqZWN0cy4KIAkgICAgIE1hcmsgdGhlbSBh cyBgcGlubmVkJyBzbyB3ZSBrbm93IHRvIG1hcmsgdGhlbSBhdCBldmVyeSBHQyBjeWNsZS4g ICovCi0JICBYU1lNQk9MIChvYmopLT5waW5uZWQgPSB0cnVlOworCSAgWFNZTUJPTCAob2Jq KS0+dS5zLnBpbm5lZCA9IHRydWU7CiAJICBzeW1ib2xfYmxvY2tfcGlubmVkID0gc3ltYm9s X2Jsb2NrOwogCX0KICAgICAgIC8qIERvbid0IGhhc2gtY29ucyBpdC4gICovCkBAIC01ODkx LDEwICs1ODgyLDEwIEBAIG1hcmtfcGlubmVkX3N5bWJvbHMgKHZvaWQpCiAKICAgZm9yIChz YmxrID0gc3ltYm9sX2Jsb2NrX3Bpbm5lZDsgc2Jsazsgc2JsayA9IHNibGstPm5leHQpCiAg ICAgewotICAgICAgdW5pb24gYWxpZ25lZF9MaXNwX1N5bWJvbCAqc3ltID0gc2Jsay0+c3lt Ym9scywgKmVuZCA9IHN5bSArIGxpbTsKKyAgICAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3lt ID0gc2Jsay0+c3ltYm9scywgKmVuZCA9IHN5bSArIGxpbTsKICAgICAgIGZvciAoOyBzeW0g PCBlbmQ7ICsrc3ltKQotCWlmIChzeW0tPnMucGlubmVkKQotCSAgbWFya19vYmplY3QgKG1h a2VfbGlzcF9zeW1ib2wgKCZzeW0tPnMpKTsKKwlpZiAoc3ltLT51LnMucGlubmVkKQorCSAg bWFya19vYmplY3QgKG1ha2VfbGlzcF9zeW1ib2wgKHN5bSkpOwogCiAgICAgICBsaW0gPSBT WU1CT0xfQkxPQ0tfU0laRTsKICAgICB9CkBAIC02MjU2LDcgKzYyNDcsNyBAQCBtYXJrX2No YXJfdGFibGUgKHN0cnVjdCBMaXNwX1ZlY3RvciAqcHRyLCBlbnVtIHB2ZWNfdHlwZSBwdmVj dHlwZSkKICAgICB7CiAgICAgICBMaXNwX09iamVjdCB2YWwgPSBwdHItPmNvbnRlbnRzW2ld OwogCi0gICAgICBpZiAoSU5URUdFUlAgKHZhbCkgfHwgKFNZTUJPTFAgKHZhbCkgJiYgWFNZ TUJPTCAodmFsKS0+Z2NtYXJrYml0KSkKKyAgICAgIGlmIChJTlRFR0VSUCAodmFsKSB8fCAo U1lNQk9MUCAodmFsKSAmJiBYU1lNQk9MICh2YWwpLT51LnMuZ2NtYXJrYml0KSkKIAljb250 aW51ZTsKICAgICAgIGlmIChTVUJfQ0hBUl9UQUJMRV9QICh2YWwpKQogCXsKQEAgLTY0OTks NyArNjQ5MCw3IEBAIG1hcmtfb2JqZWN0IChMaXNwX09iamVjdCBhcmcpCiAJICBicmVhazsK IAlDSEVDS19BTExPQ0FURURfQU5EX0xJVkUgKGxpdmVfc3RyaW5nX3ApOwogCU1BUktfU1RS SU5HIChwdHIpOwotCU1BUktfSU5URVJWQUxfVFJFRSAocHRyLT5pbnRlcnZhbHMpOworCU1B UktfSU5URVJWQUxfVFJFRSAocHRyLT51LnMuaW50ZXJ2YWxzKTsKICNpZmRlZiBHQ19DSEVD S19TVFJJTkdfQllURVMKIAkvKiBDaGVjayB0aGF0IHRoZSBzdHJpbmcgc2l6ZSByZWNvcmRl ZCBpbiB0aGUgc3RyaW5nIGlzIHRoZQogCSAgIHNhbWUgYXMgdGhlIG9uZSByZWNvcmRlZCBp biB0aGUgc2RhdGEgc3RydWN0dXJlLiAgKi8KQEAgLTY2NDAsMTcgKzY2MzEsMTcgQEAgbWFy a19vYmplY3QgKExpc3BfT2JqZWN0IGFyZykKIAogICAgIGNhc2UgTGlzcF9TeW1ib2w6CiAg ICAgICB7Ci0JcmVnaXN0ZXIgc3RydWN0IExpc3BfU3ltYm9sICpwdHIgPSBYU1lNQk9MIChv YmopOworCXN0cnVjdCBMaXNwX1N5bWJvbCAqcHRyID0gWFNZTUJPTCAob2JqKTsKICAgICAg IG5leHRzeW06Ci0JaWYgKHB0ci0+Z2NtYXJrYml0KQorCWlmIChwdHItPnUucy5nY21hcmti aXQpCiAJICBicmVhazsKIAlDSEVDS19BTExPQ0FURURfQU5EX0xJVkVfU1lNQk9MICgpOwot CXB0ci0+Z2NtYXJrYml0ID0gMTsKKwlwdHItPnUucy5nY21hcmtiaXQgPSAxOwogCS8qIEF0 dGVtcHQgdG8gY2F0Y2ggYm9ndXMgb2JqZWN0cy4gICovCi0gICAgICAgIGVhc3NlcnQgKHZh bGlkX2xpc3Bfb2JqZWN0X3AgKHB0ci0+ZnVuY3Rpb24pKTsKLQltYXJrX29iamVjdCAocHRy LT5mdW5jdGlvbik7Ci0JbWFya19vYmplY3QgKHB0ci0+cGxpc3QpOwotCXN3aXRjaCAocHRy LT5yZWRpcmVjdCkKKwllYXNzZXJ0ICh2YWxpZF9saXNwX29iamVjdF9wIChwdHItPnUucy5m dW5jdGlvbikpOworCW1hcmtfb2JqZWN0IChwdHItPnUucy5mdW5jdGlvbik7CisJbWFya19v YmplY3QgKHB0ci0+dS5zLnBsaXN0KTsKKwlzd2l0Y2ggKHB0ci0+dS5zLnJlZGlyZWN0KQog CSAgewogCSAgY2FzZSBTWU1CT0xfUExBSU5WQUw6IG1hcmtfb2JqZWN0IChTWU1CT0xfVkFM IChwdHIpKTsgYnJlYWs7CiAJICBjYXNlIFNZTUJPTF9WQVJBTElBUzoKQEAgLTY2NzEsMTEg KzY2NjIsMTEgQEAgbWFya19vYmplY3QgKExpc3BfT2JqZWN0IGFyZykKIAkgICAgYnJlYWs7 CiAJICBkZWZhdWx0OiBlbWFjc19hYm9ydCAoKTsKIAkgIH0KLQlpZiAoIVBVUkVfUCAoWFNU UklORyAocHRyLT5uYW1lKSkpCi0JICBNQVJLX1NUUklORyAoWFNUUklORyAocHRyLT5uYW1l KSk7Ci0JTUFSS19JTlRFUlZBTF9UUkVFIChzdHJpbmdfaW50ZXJ2YWxzIChwdHItPm5hbWUp KTsKKwlpZiAoIVBVUkVfUCAoWFNUUklORyAocHRyLT51LnMubmFtZSkpKQorCSAgTUFSS19T VFJJTkcgKFhTVFJJTkcgKHB0ci0+dS5zLm5hbWUpKTsKKwlNQVJLX0lOVEVSVkFMX1RSRUUg KHN0cmluZ19pbnRlcnZhbHMgKHB0ci0+dS5zLm5hbWUpKTsKIAkvKiBJbm5lciBsb29wIHRv IG1hcmsgbmV4dCBzeW1ib2wgaW4gdGhpcyBidWNrZXQsIGlmIGFueS4gICovCi0JcG8gPSBw dHIgPSBwdHItPm5leHQ7CisJcG8gPSBwdHIgPSBwdHItPnUucy5uZXh0OwogCWlmIChwdHIp CiAJICBnb3RvIG5leHRzeW07CiAgICAgICB9CkBAIC02NzI5LDE0ICs2NzIwLDE0IEBAIG1h cmtfb2JqZWN0IChMaXNwX09iamVjdCBhcmcpCiAJQ0hFQ0tfQUxMT0NBVEVEX0FORF9MSVZF IChsaXZlX2NvbnNfcCk7CiAJQ09OU19NQVJLIChwdHIpOwogCS8qIElmIHRoZSBjZHIgaXMg bmlsLCBhdm9pZCByZWN1cnNpb24gZm9yIHRoZSBjYXIuICAqLwotCWlmIChFUSAocHRyLT51 LmNkciwgUW5pbCkpCisJaWYgKEVRIChwdHItPnUucy51LmNkciwgUW5pbCkpCiAJICB7Ci0J ICAgIG9iaiA9IHB0ci0+Y2FyOworCSAgICBvYmogPSBwdHItPnUucy5jYXI7CiAJICAgIGNk cl9jb3VudCA9IDA7CiAJICAgIGdvdG8gbG9vcDsKIAkgIH0KLQltYXJrX29iamVjdCAocHRy LT5jYXIpOwotCW9iaiA9IHB0ci0+dS5jZHI7CisJbWFya19vYmplY3QgKHB0ci0+dS5zLmNh cik7CisJb2JqID0gcHRyLT51LnMudS5jZHI7CiAJY2RyX2NvdW50Kys7CiAJaWYgKGNkcl9j b3VudCA9PSBtYXJrX29iamVjdF9sb29wX2hhbHQpCiAJICBlbWFjc19hYm9ydCAoKTsKQEAg LTY3OTcsNyArNjc4OCw3IEBAIHN1cnZpdmVzX2djX3AgKExpc3BfT2JqZWN0IG9iaikKICAg ICAgIGJyZWFrOwogCiAgICAgY2FzZSBMaXNwX1N5bWJvbDoKLSAgICAgIHN1cnZpdmVzX3Ag PSBYU1lNQk9MIChvYmopLT5nY21hcmtiaXQ7CisgICAgICBzdXJ2aXZlc19wID0gWFNZTUJP TCAob2JqKS0+dS5zLmdjbWFya2JpdDsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBMaXNw X01pc2M6CkBAIC02ODczLDkgKzY4NjQsOSBAQCBzd2VlcF9jb25zZXMgKHZvaWQpCiAgICAg ICAgICAgICAgICAgICBpZiAoIUNPTlNfTUFSS0VEX1AgKCZjYmxrLT5jb25zZXNbcG9zXSkp CiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICB0aGlzX2Zy ZWUrKzsKLSAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb25zZXNbcG9zXS51LmNoYWlu ID0gY29uc19mcmVlX2xpc3Q7CisgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+Y29uc2Vz W3Bvc10udS5zLnUuY2hhaW4gPSBjb25zX2ZyZWVfbGlzdDsKICAgICAgICAgICAgICAgICAg ICAgICBjb25zX2ZyZWVfbGlzdCA9ICZjYmxrLT5jb25zZXNbcG9zXTsKLSAgICAgICAgICAg ICAgICAgICAgICBjb25zX2ZyZWVfbGlzdC0+Y2FyID0gVmRlYWQ7CisgICAgICAgICAgICAg ICAgICAgICAgY29uc19mcmVlX2xpc3QtPnUucy5jYXIgPSBWZGVhZDsKICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg ICB7CkBAIC02ODk0LDcgKzY4ODUsNyBAQCBzd2VlcF9jb25zZXMgKHZvaWQpCiAgICAgICAg IHsKICAgICAgICAgICAqY3ByZXYgPSBjYmxrLT5uZXh0OwogICAgICAgICAgIC8qIFVuaG9v ayBmcm9tIHRoZSBmcmVlIGxpc3QuICAqLwotICAgICAgICAgIGNvbnNfZnJlZV9saXN0ID0g Y2Jsay0+Y29uc2VzWzBdLnUuY2hhaW47CisgICAgICAgICAgY29uc19mcmVlX2xpc3QgPSBj YmxrLT5jb25zZXNbMF0udS5zLnUuY2hhaW47CiAgICAgICAgICAgbGlzcF9hbGlnbl9mcmVl IChjYmxrKTsKICAgICAgICAgfQogICAgICAgZWxzZQpAQCAtNzAxOCwzOSArNzAwOSwzOSBA QCBzd2VlcF9zeW1ib2xzICh2b2lkKQogICBzeW1ib2xfZnJlZV9saXN0ID0gTlVMTDsKIAog ICBmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZRUxUUyAobGlzcHN5bSk7IGkrKykKLSAgICBs aXNwc3ltW2ldLnMuZ2NtYXJrYml0ID0gMDsKKyAgICBsaXNwc3ltW2ldLnUucy5nY21hcmti aXQgPSAwOwogCiAgIGZvciAoc2JsayA9IHN5bWJvbF9ibG9jazsgc2Jsazsgc2JsayA9ICpz cHJldikKICAgICB7CiAgICAgICBpbnQgdGhpc19mcmVlID0gMDsKLSAgICAgIHVuaW9uIGFs aWduZWRfTGlzcF9TeW1ib2wgKnN5bSA9IHNibGstPnN5bWJvbHM7Ci0gICAgICB1bmlvbiBh bGlnbmVkX0xpc3BfU3ltYm9sICplbmQgPSBzeW0gKyBsaW07CisgICAgICBzdHJ1Y3QgTGlz cF9TeW1ib2wgKnN5bSA9IHNibGstPnN5bWJvbHM7CisgICAgICBzdHJ1Y3QgTGlzcF9TeW1i b2wgKmVuZCA9IHN5bSArIGxpbTsKIAogICAgICAgZm9yICg7IHN5bSA8IGVuZDsgKytzeW0p CiAgICAgICAgIHsKLSAgICAgICAgICBpZiAoIXN5bS0+cy5nY21hcmtiaXQpCisgICAgICAg ICAgaWYgKCFzeW0tPnUucy5nY21hcmtiaXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgIGlmIChzeW0tPnMucmVkaXJlY3QgPT0gU1lNQk9MX0xPQ0FMSVpFRCkKKyAgICAgICAg ICAgICAgaWYgKHN5bS0+dS5zLnJlZGlyZWN0ID09IFNZTUJPTF9MT0NBTElaRUQpCiAJCXsK LSAgICAgICAgICAgICAgICAgIHhmcmVlIChTWU1CT0xfQkxWICgmc3ltLT5zKSk7CisgICAg ICAgICAgICAgICAgICB4ZnJlZSAoU1lNQk9MX0JMViAoc3ltKSk7CiAgICAgICAgICAgICAg ICAgICAvKiBBdCBldmVyeSBHQyB3ZSBzd2VlcCBhbGwgc3ltYm9sX2Jsb2NrcyBhbmQgcmVi dWlsZCB0aGUKICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbF9mcmVlX2xpc3QsIHNvIHRo b3NlIHN5bWJvbHMgd2hpY2ggc3RheWVkIHVudXNlZAogICAgICAgICAgICAgICAgICAgICAg YmV0d2VlbiB0aGUgdHdvIHdpbGwgYmUgcmUtc3dlcHQuCiAgICAgICAgICAgICAgICAgICAg ICBTbyB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCByZS1mcmVlIHRoaXMgYmx2IG5l eHQKICAgICAgICAgICAgICAgICAgICAgIHRpbWUgd2Ugc3dlZXAgdGhpcyBzeW1ib2xfYmxv Y2sgKGJ1ZyMyOTA2NikuICAqLwotICAgICAgICAgICAgICAgICAgc3ltLT5zLnJlZGlyZWN0 ID0gU1lNQk9MX1BMQUlOVkFMOworICAgICAgICAgICAgICAgICAgc3ltLT51LnMucmVkaXJl Y3QgPSBTWU1CT0xfUExBSU5WQUw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICBzeW0tPnMubmV4dCA9IHN5bWJvbF9mcmVlX2xpc3Q7Ci0gICAgICAgICAgICAgIHN5bWJv bF9mcmVlX2xpc3QgPSAmc3ltLT5zOwotICAgICAgICAgICAgICBzeW1ib2xfZnJlZV9saXN0 LT5mdW5jdGlvbiA9IFZkZWFkOworICAgICAgICAgICAgICBzeW0tPnUucy5uZXh0ID0gc3lt Ym9sX2ZyZWVfbGlzdDsKKyAgICAgICAgICAgICAgc3ltYm9sX2ZyZWVfbGlzdCA9IHN5bTsK KyAgICAgICAgICAgICAgc3ltYm9sX2ZyZWVfbGlzdC0+dS5zLmZ1bmN0aW9uID0gVmRlYWQ7 CiAgICAgICAgICAgICAgICsrdGhpc19mcmVlOwogICAgICAgICAgICAgfQogICAgICAgICAg IGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgKytudW1fdXNlZDsKLSAgICAg ICAgICAgICAgc3ltLT5zLmdjbWFya2JpdCA9IDA7CisgICAgICAgICAgICAgIHN5bS0+dS5z LmdjbWFya2JpdCA9IDA7CiAgICAgICAgICAgICAgIC8qIEF0dGVtcHQgdG8gY2F0Y2ggYm9n dXMgb2JqZWN0cy4gICovCi0gICAgICAgICAgICAgIGVhc3NlcnQgKHZhbGlkX2xpc3Bfb2Jq ZWN0X3AgKHN5bS0+cy5mdW5jdGlvbikpOworICAgICAgICAgICAgICBlYXNzZXJ0ICh2YWxp ZF9saXNwX29iamVjdF9wIChzeW0tPnUucy5mdW5jdGlvbikpOwogICAgICAgICAgICAgfQog ICAgICAgICB9CiAKQEAgLTcwNjIsNyArNzA1Myw3IEBAIHN3ZWVwX3N5bWJvbHMgKHZvaWQp CiAgICAgICAgIHsKICAgICAgICAgICAqc3ByZXYgPSBzYmxrLT5uZXh0OwogICAgICAgICAg IC8qIFVuaG9vayBmcm9tIHRoZSBmcmVlIGxpc3QuICAqLwotICAgICAgICAgIHN5bWJvbF9m cmVlX2xpc3QgPSBzYmxrLT5zeW1ib2xzWzBdLnMubmV4dDsKKyAgICAgICAgICBzeW1ib2xf ZnJlZV9saXN0ID0gc2Jsay0+c3ltYm9sc1swXS51LnMubmV4dDsKICAgICAgICAgICBsaXNw X2ZyZWUgKHNibGspOwogICAgICAgICB9CiAgICAgICBlbHNlCkBAIC03Mjg5LDEwICs3Mjgw LDEwIEBAIHN5bWJvbF91c2VzX29iaiAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVj dCBvYmopCiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltID0gWFNZTUJPTCAoc3ltYm9sKTsK ICAgTGlzcF9PYmplY3QgdmFsID0gZmluZF9zeW1ib2xfdmFsdWUgKHN5bWJvbCk7CiAgIHJl dHVybiAoRVEgKHZhbCwgb2JqKQotCSAgfHwgRVEgKHN5bS0+ZnVuY3Rpb24sIG9iaikKLQkg IHx8ICghTklMUCAoc3ltLT5mdW5jdGlvbikKLQkgICAgICAmJiBDT01QSUxFRFAgKHN5bS0+ ZnVuY3Rpb24pCi0JICAgICAgJiYgRVEgKEFSRUYgKHN5bS0+ZnVuY3Rpb24sIENPTVBJTEVE X0JZVEVDT0RFKSwgb2JqKSkKKwkgIHx8IEVRIChzeW0tPnUucy5mdW5jdGlvbiwgb2JqKQor CSAgfHwgKCFOSUxQIChzeW0tPnUucy5mdW5jdGlvbikKKwkgICAgICAmJiBDT01QSUxFRFAg KHN5bS0+dS5zLmZ1bmN0aW9uKQorCSAgICAgICYmIEVRIChBUkVGIChzeW0tPnUucy5mdW5j dGlvbiwgQ09NUElMRURfQllURUNPREUpLCBvYmopKQogCSAgfHwgKCFOSUxQICh2YWwpCiAJ ICAgICAgJiYgQ09NUElMRURQICh2YWwpCiAJICAgICAgJiYgRVEgKEFSRUYgKHZhbCwgQ09N UElMRURfQllURUNPREUpLCBvYmopKSk7CkBAIC03MzIzLDE1ICs3MzE0LDE1IEBAIHdoaWNo X3N5bWJvbHMgKExpc3BfT2JqZWN0IG9iaiwgRU1BQ1NfSU5UIGZpbmRfbWF4KQogCiAgICAg ICAgZm9yIChzYmxrID0gc3ltYm9sX2Jsb2NrOyBzYmxrOyBzYmxrID0gc2Jsay0+bmV4dCkK IAkgewotCSAgIHVuaW9uIGFsaWduZWRfTGlzcF9TeW1ib2wgKmFsaWduZWRfc3ltID0gc2Js ay0+c3ltYm9sczsKKwkgICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKmFzeW0gPSBzYmxrLT5zeW1i b2xzOwogCSAgIGludCBibjsKIAotCSAgIGZvciAoYm4gPSAwOyBibiA8IFNZTUJPTF9CTE9D S19TSVpFOyBibisrLCBhbGlnbmVkX3N5bSsrKQorCSAgIGZvciAoYm4gPSAwOyBibiA8IFNZ TUJPTF9CTE9DS19TSVpFOyBibisrLCBhc3ltKyspCiAJICAgICB7CiAJICAgICAgIGlmIChz YmxrID09IHN5bWJvbF9ibG9jayAmJiBibiA+PSBzeW1ib2xfYmxvY2tfaW5kZXgpCiAJCSBi cmVhazsKIAotCSAgICAgICBMaXNwX09iamVjdCBzeW0gPSBtYWtlX2xpc3Bfc3ltYm9sICgm YWxpZ25lZF9zeW0tPnMpOworCSAgICAgICBMaXNwX09iamVjdCBzeW0gPSBtYWtlX2xpc3Bf c3ltYm9sIChhc3ltKTsKIAkgICAgICAgaWYgKHN5bWJvbF91c2VzX29iaiAoc3ltLCBvYmop KQogCQkgewogCQkgICBmb3VuZCA9IEZjb25zIChzeW0sIGZvdW5kKTsKZGlmZiAtLWdpdCBh L3NyYy9idWZmZXIuYyBiL3NyYy9idWZmZXIuYwppbmRleCBlZGVlZDU1ZThiLi40YWU1ZTgx MWIwIDEwMDY0NAotLS0gYS9zcmMvYnVmZmVyLmMKKysrIGIvc3JjL2J1ZmZlci5jCkBAIC02 MSw3ICs2MSw3IEBAIHN0cnVjdCBidWZmZXIgKmFsbF9idWZmZXJzOwogICAgU2V0dGluZyB0 aGUgZGVmYXVsdCB2YWx1ZSBhbHNvIGdvZXMgdGhyb3VnaCB0aGUgYWxpc3Qgb2YgYnVmZmVy cwogICAgYW5kIHN0b3JlcyBpbnRvIGVhY2ggYnVmZmVyIHRoYXQgZG9lcyBub3Qgc2F5IGl0 IGhhcyBhIGxvY2FsIHZhbHVlLiAgKi8KIAotc3RydWN0IEdDQUxJR05FRCBidWZmZXIgYnVm ZmVyX2RlZmF1bHRzOworc3RydWN0IGJ1ZmZlciBidWZmZXJfZGVmYXVsdHM7CiAKIC8qIFRo aXMgc3RydWN0dXJlIG1hcmtzIHdoaWNoIHNsb3RzIGluIGEgYnVmZmVyIGhhdmUgY29ycmVz cG9uZGluZwogICAgZGVmYXVsdCB2YWx1ZXMgaW4gYnVmZmVyX2RlZmF1bHRzLgpAQCAtODQs NyArODQsNyBAQCBzdHJ1Y3QgYnVmZmVyIGJ1ZmZlcl9sb2NhbF9mbGFnczsKIC8qIFRoaXMg c3RydWN0dXJlIGhvbGRzIHRoZSBuYW1lcyBvZiBzeW1ib2xzIHdob3NlIHZhbHVlcyBtYXkg YmUKICAgIGJ1ZmZlci1sb2NhbC4gIEl0IGlzIGluZGV4ZWQgYW5kIGFjY2Vzc2VkIGluIHRo ZSBzYW1lIHdheSBhcyB0aGUgYWJvdmUuICAqLwogCi1zdHJ1Y3QgR0NBTElHTkVEIGJ1ZmZl ciBidWZmZXJfbG9jYWxfc3ltYm9sczsKK3N0cnVjdCBidWZmZXIgYnVmZmVyX2xvY2FsX3N5 bWJvbHM7CiAKIC8qIFJldHVybiB0aGUgc3ltYm9sIG9mIHRoZSBwZXItYnVmZmVyIHZhcmlh YmxlIGF0IG9mZnNldCBPRkZTRVQgaW4KICAgIHRoZSBidWZmZXIgc3RydWN0dXJlLiAgKi8K QEAgLTEwMjEsNyArMTAyMSw4IEBAIHJlc2V0X2J1ZmZlcl9sb2NhbF92YXJpYWJsZXMgKHN0 cnVjdCBidWZmZXIgKmIsIGJvb2wgcGVybWFuZW50X3RvbykKICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmV3bGlzdCA9IEZjb25zIChlbHQsIG5ld2xpc3QpOwogICAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIG5ld2xpc3QgPSBGbnJldmVyc2UgKG5l d2xpc3QpOwotICAgICAgICAgICAgICAgICAgaWYgKFhTWU1CT0wgKGxvY2FsX3ZhciktPnRy YXBwZWRfd3JpdGUgPT0gU1lNQk9MX1RSQVBQRURfV1JJVEUpCisgICAgICAgICAgICAgICAg ICBpZiAoWFNZTUJPTCAobG9jYWxfdmFyKS0+dS5zLnRyYXBwZWRfd3JpdGUKKwkJICAgICAg PT0gU1lNQk9MX1RSQVBQRURfV1JJVEUpCiAgICAgICAgICAgICAgICAgICAgIG5vdGlmeV92 YXJpYWJsZV93YXRjaGVycyAobG9jYWxfdmFyLCBuZXdsaXN0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFtYWt1bmJvdW5kLCBGY3VycmVudF9i dWZmZXIgKCkpOwogICAgICAgICAgICAgICAgICAgWFNFVENEUiAoWENBUiAodG1wKSwgbmV3 bGlzdCk7CkBAIC0xMDM0LDcgKzEwMzUsNyBAQCByZXNldF9idWZmZXJfbG9jYWxfdmFyaWFi bGVzIChzdHJ1Y3QgYnVmZmVyICpiLCBib29sIHBlcm1hbmVudF90b28pCiAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgWFNFVENEUiAobGFzdCwgWENEUiAodG1wKSk7CiAKLSAgICAg ICAgICBpZiAoWFNZTUJPTCAobG9jYWxfdmFyKS0+dHJhcHBlZF93cml0ZSA9PSBTWU1CT0xf VFJBUFBFRF9XUklURSkKKyAgICAgICAgICBpZiAoWFNZTUJPTCAobG9jYWxfdmFyKS0+dS5z LnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9MX1RSQVBQRURfV1JJVEUpCiAgICAgICAgICAgICBu b3RpZnlfdmFyaWFibGVfd2F0Y2hlcnMgKGxvY2FsX3ZhciwgUW5pbCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUW1ha3VuYm91bmQsIEZjdXJyZW50X2J1ZmZl ciAoKSk7CiAgICAgICAgIH0KQEAgLTExNjYsNyArMTE2Nyw3IEBAIGJ1ZmZlcl9sb2NhbF92 YWx1ZSAoTGlzcF9PYmplY3QgdmFyaWFibGUsIExpc3BfT2JqZWN0IGJ1ZmZlcikKICAgc3lt ID0gWFNZTUJPTCAodmFyaWFibGUpOwogCiAgc3RhcnQ6Ci0gIHN3aXRjaCAoc3ltLT5yZWRp cmVjdCkKKyAgc3dpdGNoIChzeW0tPnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBT WU1CT0xfVkFSQUxJQVM6IHN5bSA9IGluZGlyZWN0X3ZhcmlhYmxlIChzeW0pOyBnb3RvIHN0 YXJ0OwogICAgIGNhc2UgU1lNQk9MX1BMQUlOVkFMOiByZXN1bHQgPSBTWU1CT0xfVkFMIChz eW0pOyBicmVhazsKQEAgLTIwOTYsNyArMjA5Nyw3IEBAIHZvaWQgc2V0X2J1ZmZlcl9pbnRl cm5hbF8yIChyZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiKQogCXsKIAkgIExpc3BfT2JqZWN0 IHZhciA9IFhDQVIgKFhDQVIgKHRhaWwpKTsKIAkgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3lt ID0gWFNZTUJPTCAodmFyKTsKLQkgIGlmIChzeW0tPnJlZGlyZWN0ID09IFNZTUJPTF9MT0NB TElaRUQgLyogSnVzdCB0byBiZSBzdXJlLiAgKi8KKwkgIGlmIChzeW0tPnUucy5yZWRpcmVj dCA9PSBTWU1CT0xfTE9DQUxJWkVEIC8qIEp1c3QgdG8gYmUgc3VyZS4gICovCiAJICAgICAg JiYgU1lNQk9MX0JMViAoc3ltKS0+ZndkKQogCSAgICAvKiBKdXN0IHJlZmVyZW5jZSB0aGUg dmFyaWFibGUKIAkgICAgICAgdG8gY2F1c2UgaXQgdG8gYmVjb21lIHNldCBmb3IgdGhpcyBi dWZmZXIuICAqLwpAQCAtMjc1Miw3ICsyNzUzLDcgQEAgc3dhcF9vdXRfYnVmZmVyX2xvY2Fs X3ZhcmlhYmxlcyAoc3RydWN0IGJ1ZmZlciAqYikKICAgZm9yIChhbGlzdCA9IG9hbGlzdDsg Q09OU1AgKGFsaXN0KTsgYWxpc3QgPSBYQ0RSIChhbGlzdCkpCiAgICAgewogICAgICAgTGlz cF9PYmplY3Qgc3ltID0gWENBUiAoWENBUiAoYWxpc3QpKTsKLSAgICAgIGVhc3NlcnQgKFhT WU1CT0wgKHN5bSktPnJlZGlyZWN0ID09IFNZTUJPTF9MT0NBTElaRUQpOworICAgICAgZWFz c2VydCAoWFNZTUJPTCAoc3ltKS0+dS5zLnJlZGlyZWN0ID09IFNZTUJPTF9MT0NBTElaRUQp OwogICAgICAgLyogTmVlZCBub3QgZG8gYW55dGhpbmcgaWYgc29tZSBvdGhlciBidWZmZXIn cyBiaW5kaW5nIGlzCiAJIG5vdyBjYWNoZWQuICAqLwogICAgICAgaWYgKEVRIChTWU1CT0xf QkxWIChYU1lNQk9MIChzeW0pKS0+d2hlcmUsIGJ1ZmZlcikpCkBAIC01NDIzLDggKzU0MjQs OCBAQCBkZWZ2YXJfcGVyX2J1ZmZlciAoc3RydWN0IExpc3BfQnVmZmVyX09iamZ3ZCAqYm9f ZndkLCBjb25zdCBjaGFyICpuYW1lc3RyaW5nLAogICBib19md2QtPnR5cGUgPSBMaXNwX0Z3 ZF9CdWZmZXJfT2JqOwogICBib19md2QtPm9mZnNldCA9IG9mZnNldDsKICAgYm9fZndkLT5w cmVkaWNhdGUgPSBwcmVkaWNhdGU7Ci0gIHN5bS0+ZGVjbGFyZWRfc3BlY2lhbCA9IDE7Ci0g IHN5bS0+cmVkaXJlY3QgPSBTWU1CT0xfRk9SV0FSREVEOworICBzeW0tPnUucy5kZWNsYXJl ZF9zcGVjaWFsID0gdHJ1ZTsKKyAgc3ltLT51LnMucmVkaXJlY3QgPSBTWU1CT0xfRk9SV0FS REVEOwogICBTRVRfU1lNQk9MX0ZXRCAoc3ltLCAodW5pb24gTGlzcF9Gd2QgKikgYm9fZndk KTsKICAgWFNFVFNZTUJPTCAoUEVSX0JVRkZFUl9TWU1CT0wgKG9mZnNldCksIHN5bSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9ieXRlY29kZS5jIGIvc3JjL2J5dGVjb2RlLmMKaW5kZXggNTBj N2FiZTI4OS4uZWJhZjNjM2E3ZiAxMDA2NDQKLS0tIGEvc3JjL2J5dGVjb2RlLmMKKysrIGIv c3JjL2J5dGVjb2RlLmMKQEAgLTQ4OSw3ICs0ODksNyBAQCBleGVjX2J5dGVfY29kZSAoTGlz cF9PYmplY3QgYnl0ZXN0ciwgTGlzcF9PYmplY3QgdmVjdG9yLCBMaXNwX09iamVjdCBtYXhk ZXB0aCwKIAkgIHsKIAkgICAgTGlzcF9PYmplY3QgdjEgPSB2ZWN0b3JwW29wXSwgdjI7CiAJ ICAgIGlmICghU1lNQk9MUCAodjEpCi0JCXx8IFhTWU1CT0wgKHYxKS0+cmVkaXJlY3QgIT0g U1lNQk9MX1BMQUlOVkFMCisJCXx8IFhTWU1CT0wgKHYxKS0+dS5zLnJlZGlyZWN0ICE9IFNZ TUJPTF9QTEFJTlZBTAogCQl8fCAodjIgPSBTWU1CT0xfVkFMIChYU1lNQk9MICh2MSkpLCBF USAodjIsIFF1bmJvdW5kKSkpCiAJICAgICAgdjIgPSBGc3ltYm9sX3ZhbHVlICh2MSk7CiAJ ICAgIFBVU0ggKHYyKTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBleGVjX2J5dGVfY29kZSAoTGlz cF9PYmplY3QgYnl0ZXN0ciwgTGlzcF9PYmplY3QgdmVjdG9yLCBMaXNwX09iamVjdCBtYXhk ZXB0aCwKIAkgICAgLyogSW5saW5lIHRoZSBtb3N0IGNvbW1vbiBjYXNlLiAgKi8KIAkgICAg aWYgKFNZTUJPTFAgKHN5bSkKIAkJJiYgIUVRICh2YWwsIFF1bmJvdW5kKQotCQkmJiAhWFNZ TUJPTCAoc3ltKS0+cmVkaXJlY3QKKwkJJiYgIVhTWU1CT0wgKHN5bSktPnUucy5yZWRpcmVj dAogCQkmJiAhU1lNQk9MX1RSQVBQRURfV1JJVEVfUCAoc3ltKSkKIAkgICAgICBTRVRfU1lN Qk9MX1ZBTCAoWFNZTUJPTCAoc3ltKSwgdmFsKTsKIAkgICAgZWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2Nhc2VmaWRkbGUuYyBiL3NyYy9jYXNlZmlkZGxlLmMKaW5kZXggOGY1NjRlZGViOS4u N2IzNGY3OGE1YyAxMDA2NDQKLS0tIGEvc3JjL2Nhc2VmaWRkbGUuYworKysgYi9zcmMvY2Fz ZWZpZGRsZS5jCkBAIC0xMzMsOSArMTMzLDkgQEAgY2FzZV9jaGFyYWN0ZXJfaW1wbCAoc3Ry dWN0IGNhc2luZ19zdHJfYnVmICpidWYsCiAgICAgICAgICAgc3RydWN0IExpc3BfU3RyaW5n ICpzdHIgPSBYU1RSSU5HIChwcm9wKTsKICAgICAgICAgICBpZiAoU1RSSU5HX0JZVEVTIChz dHIpIDw9IHNpemVvZiBidWYtPmRhdGEpCiAJICAgIHsKLQkgICAgICBidWYtPmxlbl9jaGFy cyA9IHN0ci0+c2l6ZTsKKwkgICAgICBidWYtPmxlbl9jaGFycyA9IHN0ci0+dS5zLnNpemU7 CiAJICAgICAgYnVmLT5sZW5fYnl0ZXMgPSBTVFJJTkdfQllURVMgKHN0cik7Ci0JICAgICAg bWVtY3B5IChidWYtPmRhdGEsIHN0ci0+ZGF0YSwgYnVmLT5sZW5fYnl0ZXMpOworCSAgICAg IG1lbWNweSAoYnVmLT5kYXRhLCBzdHItPnUucy5kYXRhLCBidWYtPmxlbl9ieXRlcyk7CiAJ ICAgICAgcmV0dXJuIDE7CiAJICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2Nt ZHMuYyBiL3NyYy9jbWRzLmMKaW5kZXggZTRjMGM4NjY5MS4uMTc4OGYyMmZlNSAxMDA2NDQK LS0tIGEvc3JjL2NtZHMuYworKysgYi9zcmMvY21kcy5jCkBAIC00MjEsMTEgKzQyMSwxMSBA QCBpbnRlcm5hbF9zZWxmX2luc2VydCAoaW50IGMsIEVNQUNTX0lOVCBuKQogCSBhbmQgdGhl IGhvb2sgaGFzIGEgbm9uLW5pbCBgbm8tc2VsZi1pbnNlcnQnIHByb3BlcnR5LAogCSByZXR1 cm4gcmlnaHQgYXdheS0tZG9uJ3QgcmVhbGx5IHNlbGYtaW5zZXJ0LiAgKi8KICAgICAgIGlm IChTWU1CT0xQIChzeW0pICYmICEgTklMUCAoc3ltKQotCSAgJiYgISBOSUxQIChYU1lNQk9M IChzeW0pLT5mdW5jdGlvbikKLQkgICYmIFNZTUJPTFAgKFhTWU1CT0wgKHN5bSktPmZ1bmN0 aW9uKSkKKwkgICYmICEgTklMUCAoWFNZTUJPTCAoc3ltKS0+dS5zLmZ1bmN0aW9uKQorCSAg JiYgU1lNQk9MUCAoWFNZTUJPTCAoc3ltKS0+dS5zLmZ1bmN0aW9uKSkKIAl7CiAJICBMaXNw X09iamVjdCBwcm9wOwotCSAgcHJvcCA9IEZnZXQgKFhTWU1CT0wgKHN5bSktPmZ1bmN0aW9u LCBpbnRlcm4gKCJuby1zZWxmLWluc2VydCIpKTsKKwkgIHByb3AgPSBGZ2V0IChYU1lNQk9M IChzeW0pLT51LnMuZnVuY3Rpb24sIGludGVybiAoIm5vLXNlbGYtaW5zZXJ0IikpOwogCSAg aWYgKCEgTklMUCAocHJvcCkpCiAJICAgIHJldHVybiAxOwogCX0KZGlmZiAtLWdpdCBhL3Ny Yy9kYXRhLmMgYi9zcmMvZGF0YS5jCmluZGV4IGVmNzIxMGZiZmEuLmI0ZjZmZDVjNjUgMTAw NjQ0Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIvc3JjL2RhdGEuYwpAQCAtNjcwLDcgKzY3MCw3 IEBAIGdsb2JhbCB2YWx1ZSBvdXRzaWRlIG9mIGFueSBsZXhpY2FsIHNjb3BlLiAgKi8pCiAg IHN5bSA9IFhTWU1CT0wgKHN5bWJvbCk7CiAKICBzdGFydDoKLSAgc3dpdGNoIChzeW0tPnJl ZGlyZWN0KQorICBzd2l0Y2ggKHN5bS0+dS5zLnJlZGlyZWN0KQogICAgIHsKICAgICBjYXNl IFNZTUJPTF9QTEFJTlZBTDogdmFsY29udGVudHMgPSBTWU1CT0xfVkFMIChzeW0pOyBicmVh azsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3ltID0gaW5kaXJlY3RfdmFyaWFibGUg KHN5bSk7IGdvdG8gc3RhcnQ7CkBAIC03MDQsMTAgKzcwNCwxMCBAQCBnbG9iYWwgdmFsdWUg b3V0c2lkZSBvZiBhbnkgbGV4aWNhbCBzY29wZS4gICovKQogICAgZXhwZWN0IGB0JyBpbiBw YXJ0aWN1bGFyLCByYXRoZXIgdGhhbiBhbnkgdHJ1ZSB2YWx1ZS4gICovCiBERUZVTiAoImZi b3VuZHAiLCBGZmJvdW5kcCwgU2Zib3VuZHAsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBS ZXR1cm4gdCBpZiBTWU1CT0wncyBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIG5vdCB2b2lkLiAg Ki8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09iamVjdCBz eW1ib2wpCiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKLSAgcmV0dXJuIE5JTFAgKFhT WU1CT0wgKHN5bWJvbCktPmZ1bmN0aW9uKSA/IFFuaWwgOiBRdDsKKyAgcmV0dXJuIE5JTFAg KFhTWU1CT0wgKHN5bWJvbCktPnUucy5mdW5jdGlvbikgPyBRbmlsIDogUXQ7CiB9CiAKIERF RlVOICgibWFrdW5ib3VuZCIsIEZtYWt1bmJvdW5kLCBTbWFrdW5ib3VuZCwgMSwgMSwgMCwK QEAgLTczNiwxOCArNzM2LDE4IEBAIFJldHVybiBTWU1CT0wuICAqLykKIAogREVGVU4gKCJz eW1ib2wtZnVuY3Rpb24iLCBGc3ltYm9sX2Z1bmN0aW9uLCBTc3ltYm9sX2Z1bmN0aW9uLCAx LCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIFNZTUJPTCdzIGZ1bmN0aW9uIGRlZmlu aXRpb24sIG9yIG5pbCBpZiB0aGF0IGlzIHZvaWQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHN5bWJvbCkKKyAgKExpc3BfT2JqZWN0IHN5bWJvbCkKIHsKICAgQ0hFQ0tfU1lN Qk9MIChzeW1ib2wpOwotICByZXR1cm4gWFNZTUJPTCAoc3ltYm9sKS0+ZnVuY3Rpb247Cisg IHJldHVybiBYU1lNQk9MIChzeW1ib2wpLT51LnMuZnVuY3Rpb247CiB9CiAKIERFRlVOICgi c3ltYm9sLXBsaXN0IiwgRnN5bWJvbF9wbGlzdCwgU3N5bWJvbF9wbGlzdCwgMSwgMSwgMCwK ICAgICAgICBkb2M6IC8qIFJldHVybiBTWU1CT0wncyBwcm9wZXJ0eSBsaXN0LiAgKi8pCi0g IChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09iamVjdCBzeW1ib2wp CiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKLSAgcmV0dXJuIFhTWU1CT0wgKHN5bWJv bCktPnBsaXN0OworICByZXR1cm4gWFNZTUJPTCAoc3ltYm9sKS0+dS5zLnBsaXN0OwogfQog CiBERUZVTiAoInN5bWJvbC1uYW1lIiwgRnN5bWJvbF9uYW1lLCBTc3ltYm9sX25hbWUsIDEs IDEsIDAsCkBAIC03NzEsNyArNzcxLDcgQEAgREVGVU4gKCJmc2V0IiwgRmZzZXQsIFNmc2V0 LCAyLCAyLCAwLAogICBpZiAoTklMUCAoc3ltYm9sKSkKICAgICB4c2lnbmFsMSAoUXNldHRp bmdfY29uc3RhbnQsIHN5bWJvbCk7CiAKLSAgZnVuY3Rpb24gPSBYU1lNQk9MIChzeW1ib2wp LT5mdW5jdGlvbjsKKyAgZnVuY3Rpb24gPSBYU1lNQk9MIChzeW1ib2wpLT51LnMuZnVuY3Rp b247CiAKICAgaWYgKCFOSUxQIChWYXV0b2xvYWRfcXVldWUpICYmICFOSUxQIChmdW5jdGlv bikpCiAgICAgVmF1dG9sb2FkX3F1ZXVlID0gRmNvbnMgKEZjb25zIChzeW1ib2wsIGZ1bmN0 aW9uKSwgVmF1dG9sb2FkX3F1ZXVlKTsKQEAgLTgxNCw3ICs4MTQsNyBAQCBUaGUgcmV0dXJu IHZhbHVlIGlzIHVuZGVmaW5lZC4gICovKQogICAgICAgeyAvKiBPbmx5IGFkZCBhdXRvbG9h ZCBlbnRyaWVzIGFmdGVyIGR1bXBpbmcsIGJlY2F1c2UgdGhlIG9uZXMgYmVmb3JlIGFyZQog CSAgIG5vdCB1c2VmdWwgYW5kIGVsc2Ugd2UgZ2V0IGxvYWRzIG9mIHRoZW0gZnJvbSB0aGUg bG9hZGRlZnMuZWwuICAqLwogCi0JaWYgKEFVVE9MT0FEUCAoWFNZTUJPTCAoc3ltYm9sKS0+ ZnVuY3Rpb24pKQorCWlmIChBVVRPTE9BRFAgKFhTWU1CT0wgKHN5bWJvbCktPnUucy5mdW5j dGlvbikpCiAJICAvKiBSZW1lbWJlciB0aGF0IHRoZSBmdW5jdGlvbiB3YXMgYWxyZWFkeSBh biBhdXRvbG9hZC4gICovCiAJICBMT0FESElTVF9BVFRBQ0ggKEZjb25zIChRdCwgc3ltYm9s KSk7CiAJTE9BREhJU1RfQVRUQUNIIChGY29ucyAoYXV0b2xvYWQgPyBRYXV0b2xvYWQgOiBR ZGVmdW4sIHN5bWJvbCkpOwpAQCAtOTQwLDEwICs5NDAsMTAgQEAgaW5kaXJlY3RfdmFyaWFi bGUgKHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltYm9sKQogCiAgIGhhcmUgPSB0b3J0b2lzZSA9 IHN5bWJvbDsKIAotICB3aGlsZSAoaGFyZS0+cmVkaXJlY3QgPT0gU1lNQk9MX1ZBUkFMSUFT KQorICB3aGlsZSAoaGFyZS0+dS5zLnJlZGlyZWN0ID09IFNZTUJPTF9WQVJBTElBUykKICAg ICB7CiAgICAgICBoYXJlID0gU1lNQk9MX0FMSUFTIChoYXJlKTsKLSAgICAgIGlmIChoYXJl LT5yZWRpcmVjdCAhPSBTWU1CT0xfVkFSQUxJQVMpCisgICAgICBpZiAoaGFyZS0+dS5zLnJl ZGlyZWN0ICE9IFNZTUJPTF9WQVJBTElBUykKIAlicmVhazsKIAogICAgICAgaGFyZSA9IFNZ TUJPTF9BTElBUyAoaGFyZSk7CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCBmaW5kX3N5bWJvbF92 YWx1ZSAoTGlzcF9PYmplY3Qgc3ltYm9sKQogICBzeW0gPSBYU1lNQk9MIChzeW1ib2wpOwog CiAgc3RhcnQ6Ci0gIHN3aXRjaCAoc3ltLT5yZWRpcmVjdCkKKyAgc3dpdGNoIChzeW0tPnUu cy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBTWU1CT0xfVkFSQUxJQVM6IHN5bSA9IGlu ZGlyZWN0X3ZhcmlhYmxlIChzeW0pOyBnb3RvIHN0YXJ0OwogICAgIGNhc2UgU1lNQk9MX1BM QUlOVkFMOiByZXR1cm4gU1lNQk9MX1ZBTCAoc3ltKTsKQEAgLTEzMTAsNyArMTMxMCw3IEBA IHNldF9pbnRlcm5hbCAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBuZXd2YWws IExpc3BfT2JqZWN0IHdoZXJlLAogCiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgc3lt ID0gWFNZTUJPTCAoc3ltYm9sKTsKLSAgc3dpdGNoIChzeW0tPnRyYXBwZWRfd3JpdGUpCisg IHN3aXRjaCAoc3ltLT51LnMudHJhcHBlZF93cml0ZSkKICAgICB7CiAgICAgY2FzZSBTWU1C T0xfTk9XUklURToKICAgICAgIGlmIChOSUxQIChGa2V5d29yZHAgKHN5bWJvbCkpCkBAIC0x MzM2LDcgKzEzMzYsNyBAQCBzZXRfaW50ZXJuYWwgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlz cF9PYmplY3QgbmV3dmFsLCBMaXNwX09iamVjdCB3aGVyZSwKICAgICB9CiAKICBzdGFydDoK LSAgc3dpdGNoIChzeW0tPnJlZGlyZWN0KQorICBzd2l0Y2ggKHN5bS0+dS5zLnJlZGlyZWN0 KQogICAgIHsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3ltID0gaW5kaXJlY3RfdmFy aWFibGUgKHN5bSk7IGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBTWU1CT0xfUExBSU5WQUw6IFNF VF9TWU1CT0xfVkFMIChzeW0gLCBuZXd2YWwpOyByZXR1cm47CkBAIC0xNDM2LDcgKzE0MzYs NyBAQCBzZXRfaW50ZXJuYWwgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgbmV3 dmFsLCBMaXNwX09iamVjdCB3aGVyZSwKIAlpZiAodm9pZGUpCiAJICB7IC8qIElmIHN0b3Jp bmcgdm9pZCAobWFraW5nIHRoZSBzeW1ib2wgdm9pZCksIGZvcndhcmQgb25seSB0aHJvdWdo CiAJICAgICAgIGJ1ZmZlci1sb2NhbCBpbmRpY2F0b3IsIG5vdCB0aHJvdWdoIExpc3BfT2Jq ZndkLCBldGMuICAqLwotCSAgICBzeW0tPnJlZGlyZWN0ID0gU1lNQk9MX1BMQUlOVkFMOwor CSAgICBzeW0tPnUucy5yZWRpcmVjdCA9IFNZTUJPTF9QTEFJTlZBTDsKIAkgICAgU0VUX1NZ TUJPTF9WQUwgKHN5bSwgbmV3dmFsKTsKIAkgIH0KIAllbHNlCkBAIC0xNDUyLDkgKzE0NTIs OSBAQCBzdGF0aWMgdm9pZAogc2V0X3N5bWJvbF90cmFwcGVkX3dyaXRlIChMaXNwX09iamVj dCBzeW1ib2wsIGVudW0gc3ltYm9sX3RyYXBwZWRfd3JpdGUgdHJhcCkKIHsKICAgc3RydWN0 IExpc3BfU3ltYm9sICpzeW0gPSBYU1lNQk9MIChzeW1ib2wpOwotICBpZiAoc3ltLT50cmFw cGVkX3dyaXRlID09IFNZTUJPTF9OT1dSSVRFKQorICBpZiAoc3ltLT51LnMudHJhcHBlZF93 cml0ZSA9PSBTWU1CT0xfTk9XUklURSkKICAgICB4c2lnbmFsMSAoUXRyYXBwaW5nX2NvbnN0 YW50LCBzeW1ib2wpOwotICBzeW0tPnRyYXBwZWRfd3JpdGUgPSB0cmFwOworICBzeW0tPnUu cy50cmFwcGVkX3dyaXRlID0gdHJhcDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0NjksNyAr MTQ2OSw3IEBAIGhhcm1vbml6ZV92YXJpYWJsZV93YXRjaGVycyAoTGlzcF9PYmplY3QgYWxp YXMsIExpc3BfT2JqZWN0IGJhc2VfdmFyaWFibGUpCiAgIGlmICghRVEgKGJhc2VfdmFyaWFi bGUsIGFsaWFzKQogICAgICAgJiYgRVEgKGJhc2VfdmFyaWFibGUsIEZpbmRpcmVjdF92YXJp YWJsZSAoYWxpYXMpKSkKICAgICBzZXRfc3ltYm9sX3RyYXBwZWRfd3JpdGUKLSAgICAgIChh bGlhcywgWFNZTUJPTCAoYmFzZV92YXJpYWJsZSktPnRyYXBwZWRfd3JpdGUpOworICAgICAg KGFsaWFzLCBYU1lNQk9MIChiYXNlX3ZhcmlhYmxlKS0+dS5zLnRyYXBwZWRfd3JpdGUpOwog fQogCiBERUZVTiAoImFkZC12YXJpYWJsZS13YXRjaGVyIiwgRmFkZF92YXJpYWJsZV93YXRj aGVyLCBTYWRkX3ZhcmlhYmxlX3dhdGNoZXIsCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBkZWZh dWx0X3ZhbHVlIChMaXNwX09iamVjdCBzeW1ib2wpCiAgIHN5bSA9IFhTWU1CT0wgKHN5bWJv bCk7CiAKICBzdGFydDoKLSAgc3dpdGNoIChzeW0tPnJlZGlyZWN0KQorICBzd2l0Y2ggKHN5 bS0+dS5zLnJlZGlyZWN0KQogICAgIHsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3lt ID0gaW5kaXJlY3RfdmFyaWFibGUgKHN5bSk7IGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBTWU1C T0xfUExBSU5WQUw6IHJldHVybiBTWU1CT0xfVkFMIChzeW0pOwpAQCAtMTY1Myw3ICsxNjUz LDcgQEAgc2V0X2RlZmF1bHRfaW50ZXJuYWwgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9P YmplY3QgdmFsdWUsCiAKICAgQ0hFQ0tfU1lNQk9MIChzeW1ib2wpOwogICBzeW0gPSBYU1lN Qk9MIChzeW1ib2wpOwotICBzd2l0Y2ggKHN5bS0+dHJhcHBlZF93cml0ZSkKKyAgc3dpdGNo IChzeW0tPnUucy50cmFwcGVkX3dyaXRlKQogICAgIHsKICAgICBjYXNlIFNZTUJPTF9OT1dS SVRFOgogICAgICAgaWYgKE5JTFAgKEZrZXl3b3JkcCAoc3ltYm9sKSkKQEAgLTE2NjUsNyAr MTY2NSw3IEBAIHNldF9kZWZhdWx0X2ludGVybmFsIChMaXNwX09iamVjdCBzeW1ib2wsIExp c3BfT2JqZWN0IHZhbHVlLAogCiAgICAgY2FzZSBTWU1CT0xfVFJBUFBFRF9XUklURToKICAg ICAgIC8qIERvbid0IG5vdGlmeSBoZXJlIGlmIHdlJ3JlIGdvaW5nIHRvIGNhbGwgRnNldCBh bnl3YXkuICAqLwotICAgICAgaWYgKHN5bS0+cmVkaXJlY3QgIT0gU1lNQk9MX1BMQUlOVkFM CisgICAgICBpZiAoc3ltLT51LnMucmVkaXJlY3QgIT0gU1lNQk9MX1BMQUlOVkFMCiAgICAg ICAgICAgLyogU2V0dGluZyBkdWUgdG8gdGhyZWFkIHN3aXRjaGluZyBkb2Vzbid0IGNvdW50 LiAgKi8KICAgICAgICAgICAmJiBiaW5kZmxhZyAhPSBTRVRfSU5URVJOQUxfVEhSRUFEX1NX SVRDSCkKICAgICAgICAgbm90aWZ5X3ZhcmlhYmxlX3dhdGNoZXJzIChzeW1ib2wsIHZhbHVl LCBRc2V0X2RlZmF1bHQsIFFuaWwpOwpAQCAtMTY3Nyw3ICsxNjc3LDcgQEAgc2V0X2RlZmF1 bHRfaW50ZXJuYWwgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgdmFsdWUsCiAg ICAgfQogCiAgc3RhcnQ6Ci0gIHN3aXRjaCAoc3ltLT5yZWRpcmVjdCkKKyAgc3dpdGNoIChz eW0tPnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBTWU1CT0xfVkFSQUxJQVM6IHN5 bSA9IGluZGlyZWN0X3ZhcmlhYmxlIChzeW0pOyBnb3RvIHN0YXJ0OwogICAgIGNhc2UgU1lN Qk9MX1BMQUlOVkFMOiBzZXRfaW50ZXJuYWwgKHN5bWJvbCwgdmFsdWUsIFFuaWwsIGJpbmRm bGFnKTsgcmV0dXJuOwpAQCAtMTgyOSw3ICsxODI5LDcgQEAgVGhlIGZ1bmN0aW9uIGBkZWZh dWx0LXZhbHVlJyBnZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCBgc2V0LWRlZmF1bHQnIHNl dHMgaXQuCiAgIHN5bSA9IFhTWU1CT0wgKHZhcmlhYmxlKTsKIAogIHN0YXJ0OgotICBzd2l0 Y2ggKHN5bS0+cmVkaXJlY3QpCisgIHN3aXRjaCAoc3ltLT51LnMucmVkaXJlY3QpCiAgICAg ewogICAgIGNhc2UgU1lNQk9MX1ZBUkFMSUFTOiBzeW0gPSBpbmRpcmVjdF92YXJpYWJsZSAo c3ltKTsgZ290byBzdGFydDsKICAgICBjYXNlIFNZTUJPTF9QTEFJTlZBTDoKQEAgLTE4NTcs NyArMTg1Nyw3IEBAIFRoZSBmdW5jdGlvbiBgZGVmYXVsdC12YWx1ZScgZ2V0cyB0aGUgZGVm YXVsdCB2YWx1ZSBhbmQgYHNldC1kZWZhdWx0JyBzZXRzIGl0LgogICBpZiAoIWJsdikKICAg ICB7CiAgICAgICBibHYgPSBtYWtlX2JsdiAoc3ltLCBmb3J3YXJkZWQsIHZhbGNvbnRlbnRz KTsKLSAgICAgIHN5bS0+cmVkaXJlY3QgPSBTWU1CT0xfTE9DQUxJWkVEOworICAgICAgc3lt LT51LnMucmVkaXJlY3QgPSBTWU1CT0xfTE9DQUxJWkVEOwogICAgICAgU0VUX1NZTUJPTF9C TFYgKHN5bSwgYmx2KTsKICAgICB9CiAKQEAgLTE4OTcsNyArMTg5Nyw3IEBAIEluc3RlYWQs IHVzZSBgYWRkLWhvb2snIGFuZCBzcGVjaWZ5IHQgZm9yIHRoZSBMT0NBTCBhcmd1bWVudC4g ICovKQogICBzeW0gPSBYU1lNQk9MICh2YXJpYWJsZSk7CiAKICBzdGFydDoKLSAgc3dpdGNo IChzeW0tPnJlZGlyZWN0KQorICBzd2l0Y2ggKHN5bS0+dS5zLnJlZGlyZWN0KQogICAgIHsK ICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3ltID0gaW5kaXJlY3RfdmFyaWFibGUgKHN5 bSk7IGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBTWU1CT0xfUExBSU5WQUw6CkBAIC0xOTE0LDcg KzE5MTQsNyBAQCBJbnN0ZWFkLCB1c2UgYGFkZC1ob29rJyBhbmQgc3BlY2lmeSB0IGZvciB0 aGUgTE9DQUwgYXJndW1lbnQuICAqLykKICAgICBkZWZhdWx0OiBlbWFjc19hYm9ydCAoKTsK ICAgICB9CiAKLSAgaWYgKHN5bS0+dHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfTk9XUklURSkK KyAgaWYgKHN5bS0+dS5zLnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9MX05PV1JJVEUpCiAgICAg ZXJyb3IgKCJTeW1ib2wgJXMgbWF5IG5vdCBiZSBidWZmZXItbG9jYWwiLAogCSAgIFNEQVRB IChTWU1CT0xfTkFNRSAodmFyaWFibGUpKSk7CiAKQEAgLTE5MzAsNyArMTkzMCw3IEBAIElu c3RlYWQsIHVzZSBgYWRkLWhvb2snIGFuZCBzcGVjaWZ5IHQgZm9yIHRoZSBMT0NBTCBhcmd1 bWVudC4gICovKQogICBpZiAoIWJsdikKICAgICB7CiAgICAgICBibHYgPSBtYWtlX2JsdiAo c3ltLCBmb3J3YXJkZWQsIHZhbGNvbnRlbnRzKTsKLSAgICAgIHN5bS0+cmVkaXJlY3QgPSBT WU1CT0xfTE9DQUxJWkVEOworICAgICAgc3ltLT51LnMucmVkaXJlY3QgPSBTWU1CT0xfTE9D QUxJWkVEOwogICAgICAgU0VUX1NZTUJPTF9CTFYgKHN5bSwgYmx2KTsKICAgICB9CiAKQEAg LTE5ODcsNyArMTk4Nyw3IEBAIEZyb20gbm93IG9uIHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwg YXBwbHkgaW4gdGhpcyBidWZmZXIuICBSZXR1cm4gVkFSSUFCTEUuICAqLykKICAgc3ltID0g WFNZTUJPTCAodmFyaWFibGUpOwogCiAgc3RhcnQ6Ci0gIHN3aXRjaCAoc3ltLT5yZWRpcmVj dCkKKyAgc3dpdGNoIChzeW0tPnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBTWU1C T0xfVkFSQUxJQVM6IHN5bSA9IGluZGlyZWN0X3ZhcmlhYmxlIChzeW0pOyBnb3RvIHN0YXJ0 OwogICAgIGNhc2UgU1lNQk9MX1BMQUlOVkFMOiByZXR1cm4gdmFyaWFibGU7CkBAIC0yMDE0 LDcgKzIwMTQsNyBAQCBGcm9tIG5vdyBvbiB0aGUgZGVmYXVsdCB2YWx1ZSB3aWxsIGFwcGx5 IGluIHRoaXMgYnVmZmVyLiAgUmV0dXJuIFZBUklBQkxFLiAgKi8pCiAgICAgZGVmYXVsdDog ZW1hY3NfYWJvcnQgKCk7CiAgICAgfQogCi0gIGlmIChzeW0tPnRyYXBwZWRfd3JpdGUgPT0g U1lNQk9MX1RSQVBQRURfV1JJVEUpCisgIGlmIChzeW0tPnUucy50cmFwcGVkX3dyaXRlID09 IFNZTUJPTF9UUkFQUEVEX1dSSVRFKQogICAgIG5vdGlmeV92YXJpYWJsZV93YXRjaGVycyAo dmFyaWFibGUsIFFuaWwsIFFtYWt1bmJvdW5kLCBGY3VycmVudF9idWZmZXIgKCkpOwogCiAg IC8qIEdldCByaWQgb2YgdGhpcyBidWZmZXIncyBhbGlzdCBlbGVtZW50LCBpZiBhbnkuICAq LwpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgQlVGRkVSIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50 IGJ1ZmZlci4gICovKQogICBzeW0gPSBYU1lNQk9MICh2YXJpYWJsZSk7CiAKICBzdGFydDoK LSAgc3dpdGNoIChzeW0tPnJlZGlyZWN0KQorICBzd2l0Y2ggKHN5bS0+dS5zLnJlZGlyZWN0 KQogICAgIHsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3ltID0gaW5kaXJlY3RfdmFy aWFibGUgKHN5bSk7IGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBTWU1CT0xfUExBSU5WQUw6IHJl dHVybiBRbmlsOwpAQCAtMjExMCw3ICsyMTEwLDcgQEAgdmFsdWUgaW4gQlVGRkVSLCBvciBp ZiBWQVJJQUJMRSBpcyBhdXRvbWF0aWNhbGx5IGJ1ZmZlci1sb2NhbCAoc2VlCiAgIHN5bSA9 IFhTWU1CT0wgKHZhcmlhYmxlKTsKIAogIHN0YXJ0OgotICBzd2l0Y2ggKHN5bS0+cmVkaXJl Y3QpCisgIHN3aXRjaCAoc3ltLT51LnMucmVkaXJlY3QpCiAgICAgewogICAgIGNhc2UgU1lN Qk9MX1ZBUkFMSUFTOiBzeW0gPSBpbmRpcmVjdF92YXJpYWJsZSAoc3ltKTsgZ290byBzdGFy dDsKICAgICBjYXNlIFNZTUJPTF9QTEFJTlZBTDogcmV0dXJuIFFuaWw7CkBAIC0yMTQ1LDcg KzIxNDUsNyBAQCBJZiB0aGUgY3VycmVudCBiaW5kaW5nIGlzIGdsb2JhbCAodGhlIGRlZmF1 bHQpLCB0aGUgdmFsdWUgaXMgbmlsLiAgKi8pCiAgIGZpbmRfc3ltYm9sX3ZhbHVlICh2YXJp YWJsZSk7CiAKICBzdGFydDoKLSAgc3dpdGNoIChzeW0tPnJlZGlyZWN0KQorICBzd2l0Y2gg KHN5bS0+dS5zLnJlZGlyZWN0KQogICAgIHsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzog c3ltID0gaW5kaXJlY3RfdmFyaWFibGUgKHN5bSk7IGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBT WU1CT0xfUExBSU5WQUw6IHJldHVybiBRbmlsOwpAQCAtMjE2Myw3ICsyMTYzLDcgQEAgSWYg dGhlIGN1cnJlbnQgYmluZGluZyBpcyBnbG9iYWwgKHRoZSBkZWZhdWx0KSwgdGhlIHZhbHVl IGlzIG5pbC4gICovKQogCSBidWZmZXIncyBvciBmcmFtZSdzIHZhbHVlIHdlIGFyZSBzYXZp bmcuICAqLwogICAgICAgaWYgKCFOSUxQIChGbG9jYWxfdmFyaWFibGVfcCAodmFyaWFibGUs IFFuaWwpKSkKIAlyZXR1cm4gRmN1cnJlbnRfYnVmZmVyICgpOwotICAgICAgZWxzZSBpZiAo c3ltLT5yZWRpcmVjdCA9PSBTWU1CT0xfTE9DQUxJWkVECisgICAgICBlbHNlIGlmIChzeW0t PnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfTE9DQUxJWkVECiAJICAgICAgICYmIGJsdl9mb3Vu ZCAoU1lNQk9MX0JMViAoc3ltKSkpCiAJcmV0dXJuIFNZTUJPTF9CTFYgKHN5bSktPndoZXJl OwogICAgICAgZWxzZQpAQCAtMjIzNCwxMiArMjIzNCwxMiBAQCBpbmRpcmVjdF9mdW5jdGlv biAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgb2JqZWN0KQogICAgIHsKICAgICAgIGlmICghU1lN Qk9MUCAoaGFyZSkgfHwgTklMUCAoaGFyZSkpCiAJYnJlYWs7Ci0gICAgICBoYXJlID0gWFNZ TUJPTCAoaGFyZSktPmZ1bmN0aW9uOworICAgICAgaGFyZSA9IFhTWU1CT0wgKGhhcmUpLT51 LnMuZnVuY3Rpb247CiAgICAgICBpZiAoIVNZTUJPTFAgKGhhcmUpIHx8IE5JTFAgKGhhcmUp KQogCWJyZWFrOwotICAgICAgaGFyZSA9IFhTWU1CT0wgKGhhcmUpLT5mdW5jdGlvbjsKKyAg ICAgIGhhcmUgPSBYU1lNQk9MIChoYXJlKS0+dS5zLmZ1bmN0aW9uOwogCi0gICAgICB0b3J0 b2lzZSA9IFhTWU1CT0wgKHRvcnRvaXNlKS0+ZnVuY3Rpb247CisgICAgICB0b3J0b2lzZSA9 IFhTWU1CT0wgKHRvcnRvaXNlKS0+dS5zLmZ1bmN0aW9uOwogCiAgICAgICBpZiAoRVEgKGhh cmUsIHRvcnRvaXNlKSkKIAl4c2lnbmFsMSAoUWN5Y2xpY19mdW5jdGlvbl9pbmRpcmVjdGlv biwgb2JqZWN0KTsKQEAgLTIyNjEsNyArMjI2MSw3IEBAIGZ1bmN0aW9uIGNoYWluIG9mIHN5 bWJvbHMuICAqLykKICAgLyogT3B0aW1pemUgZm9yIG5vIGluZGlyZWN0aW9uLiAgKi8KICAg cmVzdWx0ID0gb2JqZWN0OwogICBpZiAoU1lNQk9MUCAocmVzdWx0KSAmJiAhTklMUCAocmVz dWx0KQotICAgICAgJiYgKHJlc3VsdCA9IFhTWU1CT0wgKHJlc3VsdCktPmZ1bmN0aW9uLCBT WU1CT0xQIChyZXN1bHQpKSkKKyAgICAgICYmIChyZXN1bHQgPSBYU1lNQk9MIChyZXN1bHQp LT51LnMuZnVuY3Rpb24sIFNZTUJPTFAgKHJlc3VsdCkpKQogICAgIHJlc3VsdCA9IGluZGly ZWN0X2Z1bmN0aW9uIChyZXN1bHQpOwogICBpZiAoIU5JTFAgKHJlc3VsdCkpCiAgICAgcmV0 dXJuIHJlc3VsdDsKQEAgLTM4NzcsNyArMzg3Nyw3IEBAIHN5bXNfb2ZfZGF0YSAodm9pZCkK ICAgZGVmc3ViciAoJlNib29sX3ZlY3Rvcl9jb3VudF9jb25zZWN1dGl2ZSk7CiAgIGRlZnN1 YnIgKCZTYm9vbF92ZWN0b3JfY291bnRfcG9wdWxhdGlvbik7CiAKLSAgc2V0X3N5bWJvbF9m dW5jdGlvbiAoUXdob2xlbnVtcCwgWFNZTUJPTCAoUW5hdG51bXApLT5mdW5jdGlvbik7Cisg IHNldF9zeW1ib2xfZnVuY3Rpb24gKFF3aG9sZW51bXAsIFhTWU1CT0wgKFFuYXRudW1wKS0+ dS5zLmZ1bmN0aW9uKTsKIAogICBERUZWQVJfTElTUCAoIm1vc3QtcG9zaXRpdmUtZml4bnVt IiwgVm1vc3RfcG9zaXRpdmVfZml4bnVtLAogCSAgICAgICBkb2M6IC8qIFRoZSBsYXJnZXN0 IHZhbHVlIHRoYXQgaXMgcmVwcmVzZW50YWJsZSBpbiBhIExpc3AgaW50ZWdlci4gICovKTsK ZGlmZiAtLWdpdCBhL3NyYy9kb2MuYyBiL3NyYy9kb2MuYwppbmRleCBlODE3NDBiZmMxLi4w Y2Q2MjE3MmMzIDEwMDY0NAotLS0gYS9zcmMvZG9jLmMKKysrIGIvc3JjL2RvYy5jCkBAIC00 NzIsNyArNDcyLDcgQEAgc3RvcmVfZnVuY3Rpb25fZG9jc3RyaW5nIChMaXNwX09iamVjdCBv YmosIEVNQUNTX0lOVCBvZmZzZXQpCiB7CiAgIC8qIERvbid0IHVzZSBpbmRpcmVjdF9mdW5j dGlvbiBoZXJlLCBvciBkZWZhbGlhc2VzIHdpbGwgYXBwbHkgdGhlaXIKICAgICAgZG9jc3Ry aW5ncyB0byB0aGUgYmFzZSBmdW5jdGlvbnMgKEJ1ZyMyNjAzKS4gICovCi0gIExpc3BfT2Jq ZWN0IGZ1biA9IFNZTUJPTFAgKG9iaikgPyBYU1lNQk9MIChvYmopLT5mdW5jdGlvbiA6IG9i ajsKKyAgTGlzcF9PYmplY3QgZnVuID0gU1lNQk9MUCAob2JqKSA/IFhTWU1CT0wgKG9iaikt PnUucy5mdW5jdGlvbiA6IG9iajsKIAogICAvKiBUaGUgdHlwZSBkZXRlcm1pbmVzIHdoZXJl IHRoZSBkb2NzdHJpbmcgaXMgc3RvcmVkLiAgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2V2YWwu YyBiL3NyYy9ldmFsLmMKaW5kZXggNTJlNGM5NmQ0Yi4uNDBiNDc5NjhiZSAxMDA2NDQKLS0t IGEvc3JjL2V2YWwuYworKysgYi9zcmMvZXZhbC5jCkBAIC02MDMsNyArNjAzLDcgQEAgVGhl IHJldHVybiB2YWx1ZSBpcyBCQVNFLVZBUklBQkxFLiAgKi8pCiAKICAgc3ltID0gWFNZTUJP TCAobmV3X2FsaWFzKTsKIAotICBzd2l0Y2ggKHN5bS0+cmVkaXJlY3QpCisgIHN3aXRjaCAo c3ltLT51LnMucmVkaXJlY3QpCiAgICAgewogICAgIGNhc2UgU1lNQk9MX0ZPUldBUkRFRDoK ICAgICAgIGVycm9yICgiQ2Fubm90IG1ha2UgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW4gYWxp YXMiKTsKQEAgLTYzMiwxNCArNjMyLDE0IEBAIFRoZSByZXR1cm4gdmFsdWUgaXMgQkFTRS1W QVJJQUJMRS4gICovKQogCWVycm9yICgiRG9uJ3Qga25vdyBob3cgdG8gbWFrZSBhIGxldC1i b3VuZCB2YXJpYWJsZSBhbiBhbGlhcyIpOwogICB9CiAKLSAgaWYgKHN5bS0+dHJhcHBlZF93 cml0ZSA9PSBTWU1CT0xfVFJBUFBFRF9XUklURSkKKyAgaWYgKHN5bS0+dS5zLnRyYXBwZWRf d3JpdGUgPT0gU1lNQk9MX1RSQVBQRURfV1JJVEUpCiAgICAgbm90aWZ5X3ZhcmlhYmxlX3dh dGNoZXJzIChuZXdfYWxpYXMsIGJhc2VfdmFyaWFibGUsIFFkZWZ2YXJhbGlhcywgUW5pbCk7 CiAKLSAgc3ltLT5kZWNsYXJlZF9zcGVjaWFsID0gMTsKLSAgWFNZTUJPTCAoYmFzZV92YXJp YWJsZSktPmRlY2xhcmVkX3NwZWNpYWwgPSAxOwotICBzeW0tPnJlZGlyZWN0ID0gU1lNQk9M X1ZBUkFMSUFTOworICBzeW0tPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gdHJ1ZTsKKyAgWFNZ TUJPTCAoYmFzZV92YXJpYWJsZSktPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gdHJ1ZTsKKyAg c3ltLT51LnMucmVkaXJlY3QgPSBTWU1CT0xfVkFSQUxJQVM7CiAgIFNFVF9TWU1CT0xfQUxJ QVMgKHN5bSwgWFNZTUJPTCAoYmFzZV92YXJpYWJsZSkpOwotICBzeW0tPnRyYXBwZWRfd3Jp dGUgPSBYU1lNQk9MIChiYXNlX3ZhcmlhYmxlKS0+dHJhcHBlZF93cml0ZTsKKyAgc3ltLT51 LnMudHJhcHBlZF93cml0ZSA9IFhTWU1CT0wgKGJhc2VfdmFyaWFibGUpLT51LnMudHJhcHBl ZF93cml0ZTsKICAgTE9BREhJU1RfQVRUQUNIIChuZXdfYWxpYXMpOwogICAvKiBFdmVuIGlm IGRvY3N0cmluZyBpcyBuaWw6IHJlbW92ZSBvbGQgZG9jc3RyaW5nLiAgKi8KICAgRnB1dCAo bmV3X2FsaWFzLCBRdmFyaWFibGVfZG9jdW1lbnRhdGlvbiwgZG9jc3RyaW5nKTsKQEAgLTc0 NSw3ICs3NDUsNyBAQCB1c2FnZTogKGRlZnZhciBTWU1CT0wgJm9wdGlvbmFsIElOSVRWQUxV RSBET0NTVFJJTkcpICAqLykKICAgICAgIHRlbSA9IEZkZWZhdWx0X2JvdW5kcCAoc3ltKTsK IAogICAgICAgLyogRG8gaXQgYmVmb3JlIGV2YWx1YXRpbmcgdGhlIGluaXRpYWwgdmFsdWUs IGZvciBzZWxmLXJlZmVyZW5jZXMuICAqLwotICAgICAgWFNZTUJPTCAoc3ltKS0+ZGVjbGFy ZWRfc3BlY2lhbCA9IDE7CisgICAgICBYU1lNQk9MIChzeW0pLT51LnMuZGVjbGFyZWRfc3Bl Y2lhbCA9IHRydWU7CiAKICAgICAgIGlmIChOSUxQICh0ZW0pKQogCUZzZXRfZGVmYXVsdCAo c3ltLCBldmFsX3N1YiAoWENBUiAodGFpbCkpKTsKQEAgLTc2OSw3ICs3NjksNyBAQCB1c2Fn ZTogKGRlZnZhciBTWU1CT0wgJm9wdGlvbmFsIElOSVRWQUxVRSBET0NTVFJJTkcpICAqLykK ICAgICAgIExPQURISVNUX0FUVEFDSCAoc3ltKTsKICAgICB9CiAgIGVsc2UgaWYgKCFOSUxQ IChWaW50ZXJuYWxfaW50ZXJwcmV0ZXJfZW52aXJvbm1lbnQpCi0JICAgJiYgIVhTWU1CT0wg KHN5bSktPmRlY2xhcmVkX3NwZWNpYWwpCisJICAgJiYgIVhTWU1CT0wgKHN5bSktPnUucy5k ZWNsYXJlZF9zcGVjaWFsKQogICAgIC8qIEEgc2ltcGxlIChkZWZ2YXIgZm9vKSB3aXRoIGxl eGljYWwgc2NvcGluZyBkb2VzICJub3RoaW5nIiBleGNlcHQKICAgICAgICBkZWNsYXJlIHRo YXQgdmFyIHRvIGJlIGR5bmFtaWNhbGx5IHNjb3BlZCAqbG9jYWxseSogKGkuZS4gd2l0aGlu CiAgICAgICAgdGhlIGN1cnJlbnQgZmlsZSBvciBsZXQtYmxvY2spLiAgKi8KQEAgLTgxOCw3 ICs4MTgsNyBAQCB1c2FnZTogKGRlZmNvbnN0IFNZTUJPTCBJTklUVkFMVUUgW0RPQ1NUUklO R10pICAqLykKICAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpKQogICAgIHRlbSA9IEZwdXJl Y29weSAodGVtKTsKICAgRnNldF9kZWZhdWx0IChzeW0sIHRlbSk7Ci0gIFhTWU1CT0wgKHN5 bSktPmRlY2xhcmVkX3NwZWNpYWwgPSAxOworICBYU1lNQk9MIChzeW0pLT51LnMuZGVjbGFy ZWRfc3BlY2lhbCA9IHRydWU7CiAgIGlmICghTklMUCAoZG9jc3RyaW5nKSkKICAgICB7CiAg ICAgICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykpCkBAIC04MzcsNyArODM3LDcgQEAgREVG VU4gKCJpbnRlcm5hbC1tYWtlLXZhci1ub24tc3BlY2lhbCIsIEZtYWtlX3Zhcl9ub25fc3Bl Y2lhbCwKICAgICAgKExpc3BfT2JqZWN0IHN5bWJvbCkKIHsKICAgQ0hFQ0tfU1lNQk9MIChz eW1ib2wpOwotICBYU1lNQk9MIChzeW1ib2wpLT5kZWNsYXJlZF9zcGVjaWFsID0gMDsKKyAg WFNZTUJPTCAoc3ltYm9sKS0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSBmYWxzZTsKICAgcmV0 dXJuIFFuaWw7CiB9CiAKQEAgLTg3Nyw3ICs4NzcsNyBAQCB1c2FnZTogKGxldCogVkFSTElT VCBCT0RZLi4uKSAgKi8pCiAJfQogCiAgICAgICBpZiAoIU5JTFAgKGxleGVudikgJiYgU1lN Qk9MUCAodmFyKQotCSAgJiYgIVhTWU1CT0wgKHZhciktPmRlY2xhcmVkX3NwZWNpYWwKKwkg ICYmICFYU1lNQk9MICh2YXIpLT51LnMuZGVjbGFyZWRfc3BlY2lhbAogCSAgJiYgTklMUCAo Rm1lbXEgKHZhciwgVmludGVybmFsX2ludGVycHJldGVyX2Vudmlyb25tZW50KSkpCiAJLyog TGV4aWNhbGx5IGJpbmQgVkFSIGJ5IGFkZGluZyBpdCB0byB0aGUgaW50ZXJwcmV0ZXIncyBi aW5kaW5nCiAJICAgYWxpc3QuICAqLwpAQCAtOTUzLDcgKzk1Myw3IEBAIHVzYWdlOiAobGV0 IFZBUkxJU1QgQk9EWS4uLikgICovKQogICAgICAgdGVtID0gdGVtcHNbYXJnbnVtXTsKIAog ICAgICAgaWYgKCFOSUxQIChsZXhlbnYpICYmIFNZTUJPTFAgKHZhcikKLQkgICYmICFYU1lN Qk9MICh2YXIpLT5kZWNsYXJlZF9zcGVjaWFsCisJICAmJiAhWFNZTUJPTCAodmFyKS0+dS5z LmRlY2xhcmVkX3NwZWNpYWwKIAkgICYmIE5JTFAgKEZtZW1xICh2YXIsIFZpbnRlcm5hbF9p bnRlcnByZXRlcl9lbnZpcm9ubWVudCkpKQogCS8qIExleGljYWxseSBiaW5kIFZBUiBieSBh ZGRpbmcgaXQgdG8gdGhlIGxleGVudiBhbGlzdC4gICovCiAJbGV4ZW52ID0gRmNvbnMgKEZj b25zICh2YXIsIHRlbSksIGxleGVudik7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCBkZWZpbml0 aW9ucyB0byBzaGFkb3cgdGhlIGxvYWRlZCBvbmVzIGZvciB1c2UgaW4gZmlsZSBieXRlLWNv bXBpbGF0aW9uLiAgKi8pCiAJICB0ZW0gPSBGYXNzcSAoc3ltLCBlbnZpcm9ubWVudCk7CiAJ ICBpZiAoTklMUCAodGVtKSkKIAkgICAgewotCSAgICAgIGRlZiA9IFhTWU1CT0wgKHN5bSkt PmZ1bmN0aW9uOworCSAgICAgIGRlZiA9IFhTWU1CT0wgKHN5bSktPnUucy5mdW5jdGlvbjsK IAkgICAgICBpZiAoIU5JTFAgKGRlZikpCiAJCWNvbnRpbnVlOwogCSAgICB9CkBAIC0xOTMy LDggKzE5MzIsOCBAQCB0aGlzIGRvZXMgbm90aGluZyBhbmQgcmV0dXJucyBuaWwuICAqLykK ICAgQ0hFQ0tfU1RSSU5HIChmaWxlKTsKIAogICAvKiBJZiBmdW5jdGlvbiBpcyBkZWZpbmVk IGFuZCBub3QgYXMgYW4gYXV0b2xvYWQsIGRvbid0IG92ZXJyaWRlLiAgKi8KLSAgaWYgKCFO SUxQIChYU1lNQk9MIChmdW5jdGlvbiktPmZ1bmN0aW9uKQotICAgICAgJiYgIUFVVE9MT0FE UCAoWFNZTUJPTCAoZnVuY3Rpb24pLT5mdW5jdGlvbikpCisgIGlmICghTklMUCAoWFNZTUJP TCAoZnVuY3Rpb24pLT51LnMuZnVuY3Rpb24pCisgICAgICAmJiAhQVVUT0xPQURQIChYU1lN Qk9MIChmdW5jdGlvbiktPnUucy5mdW5jdGlvbikpCiAgICAgcmV0dXJuIFFuaWw7CiAKICAg aWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpICYmIEVRIChkb2NzdHJpbmcsIG1ha2VfbnVtYmVy ICgwKSkpCkBAIC0yMTY0LDcgKzIxNjQsNyBAQCBldmFsX3N1YiAoTGlzcF9PYmplY3QgZm9y bSkKICAgZnVuID0gb3JpZ2luYWxfZnVuOwogICBpZiAoIVNZTUJPTFAgKGZ1bikpCiAgICAg ZnVuID0gRmZ1bmN0aW9uIChGY29ucyAoZnVuLCBRbmlsKSk7Ci0gIGVsc2UgaWYgKCFOSUxQ IChmdW4pICYmIChmdW4gPSBYU1lNQk9MIChmdW4pLT5mdW5jdGlvbiwgU1lNQk9MUCAoZnVu KSkpCisgIGVsc2UgaWYgKCFOSUxQIChmdW4pICYmIChmdW4gPSBYU1lNQk9MIChmdW4pLT51 LnMuZnVuY3Rpb24sIFNZTUJPTFAgKGZ1bikpKQogICAgIGZ1biA9IGluZGlyZWN0X2Z1bmN0 aW9uIChmdW4pOwogCiAgIGlmIChTVUJSUCAoZnVuKSkKQEAgLTIzNDcsNyArMjM0Nyw3IEBA IHVzYWdlOiAoYXBwbHkgRlVOQ1RJT04gJnJlc3QgQVJHVU1FTlRTKSAgKi8pCiAKICAgLyog T3B0aW1pemUgZm9yIG5vIGluZGlyZWN0aW9uLiAgKi8KICAgaWYgKFNZTUJPTFAgKGZ1bikg JiYgIU5JTFAgKGZ1bikKLSAgICAgICYmIChmdW4gPSBYU1lNQk9MIChmdW4pLT5mdW5jdGlv biwgU1lNQk9MUCAoZnVuKSkpCisgICAgICAmJiAoZnVuID0gWFNZTUJPTCAoZnVuKS0+dS5z LmZ1bmN0aW9uLCBTWU1CT0xQIChmdW4pKSkKICAgICB7CiAgICAgICBmdW4gPSBpbmRpcmVj dF9mdW5jdGlvbiAoZnVuKTsKICAgICAgIGlmIChOSUxQIChmdW4pKQpAQCAtMjc1OSw3ICsy NzU5LDcgQEAgdXNhZ2U6IChmdW5jYWxsIEZVTkNUSU9OICZyZXN0IEFSR1VNRU5UUykgICov KQogICAvKiBPcHRpbWl6ZSBmb3Igbm8gaW5kaXJlY3Rpb24uICAqLwogICBmdW4gPSBvcmln aW5hbF9mdW47CiAgIGlmIChTWU1CT0xQIChmdW4pICYmICFOSUxQIChmdW4pCi0gICAgICAm JiAoZnVuID0gWFNZTUJPTCAoZnVuKS0+ZnVuY3Rpb24sIFNZTUJPTFAgKGZ1bikpKQorICAg ICAgJiYgKGZ1biA9IFhTWU1CT0wgKGZ1biktPnUucy5mdW5jdGlvbiwgU1lNQk9MUCAoZnVu KSkpCiAgICAgZnVuID0gaW5kaXJlY3RfZnVuY3Rpb24gKGZ1bik7CiAKICAgaWYgKFNVQlJQ IChmdW4pKQpAQCAtMzA3NSw3ICszMDc1LDcgQEAgZnVuY3Rpb24gd2l0aCBgJnJlc3QnIGFy Z3MsIG9yIGB1bmV2YWxsZWQnIGZvciBhIHNwZWNpYWwgZm9ybS4gICovKQogICBmdW5jdGlv biA9IG9yaWdpbmFsOwogICBpZiAoU1lNQk9MUCAoZnVuY3Rpb24pICYmICFOSUxQIChmdW5j dGlvbikpCiAgICAgewotICAgICAgZnVuY3Rpb24gPSBYU1lNQk9MIChmdW5jdGlvbiktPmZ1 bmN0aW9uOworICAgICAgZnVuY3Rpb24gPSBYU1lNQk9MIChmdW5jdGlvbiktPnUucy5mdW5j dGlvbjsKICAgICAgIGlmIChTWU1CT0xQIChmdW5jdGlvbikpCiAJZnVuY3Rpb24gPSBpbmRp cmVjdF9mdW5jdGlvbiAoZnVuY3Rpb24pOwogICAgIH0KQEAgLTMyMTQsNyArMzIxNCw3IEBA IGxldF9zaGFkb3dzX2J1ZmZlcl9iaW5kaW5nX3AgKHN0cnVjdCBMaXNwX1N5bWJvbCAqc3lt Ym9sKQogICAgIGlmICgoLS1wKS0+a2luZCA+IFNQRUNQRExfTEVUKQogICAgICAgewogCXN0 cnVjdCBMaXNwX1N5bWJvbCAqbGV0X2JvdW5kX3N5bWJvbCA9IFhTWU1CT0wgKHNwZWNwZGxf c3ltYm9sIChwKSk7Ci0JZWFzc2VydCAobGV0X2JvdW5kX3N5bWJvbC0+cmVkaXJlY3QgIT0g U1lNQk9MX1ZBUkFMSUFTKTsKKwllYXNzZXJ0IChsZXRfYm91bmRfc3ltYm9sLT51LnMucmVk aXJlY3QgIT0gU1lNQk9MX1ZBUkFMSUFTKTsKIAlpZiAoc3ltYm9sID09IGxldF9ib3VuZF9z eW1ib2wKIAkgICAgJiYgRVEgKHNwZWNwZGxfd2hlcmUgKHApLCBidWYpKQogCSAgcmV0dXJu IDE7CkBAIC0zMjI3LDEwICszMjI3LDEwIEBAIHN0YXRpYyB2b2lkCiBkb19zcGVjYmluZCAo c3RydWN0IExpc3BfU3ltYm9sICpzeW0sIHVuaW9uIHNwZWNiaW5kaW5nICpiaW5kLAogICAg ICAgICAgICAgIExpc3BfT2JqZWN0IHZhbHVlLCBlbnVtIFNldF9JbnRlcm5hbF9CaW5kIGJp bmRmbGFnKQogewotICBzd2l0Y2ggKHN5bS0+cmVkaXJlY3QpCisgIHN3aXRjaCAoc3ltLT51 LnMucmVkaXJlY3QpCiAgICAgewogICAgIGNhc2UgU1lNQk9MX1BMQUlOVkFMOgotICAgICAg aWYgKCFzeW0tPnRyYXBwZWRfd3JpdGUpCisgICAgICBpZiAoIXN5bS0+dS5zLnRyYXBwZWRf d3JpdGUpCiAJU0VUX1NZTUJPTF9WQUwgKHN5bSwgdmFsdWUpOwogICAgICAgZWxzZQogICAg ICAgICBzZXRfaW50ZXJuYWwgKHNwZWNwZGxfc3ltYm9sIChiaW5kKSwgdmFsdWUsIFFuaWws IGJpbmRmbGFnKTsKQEAgLTMyNzQsNyArMzI3NCw3IEBAIHNwZWNiaW5kIChMaXNwX09iamVj dCBzeW1ib2wsIExpc3BfT2JqZWN0IHZhbHVlKQogICBzeW0gPSBYU1lNQk9MIChzeW1ib2wp OwogCiAgc3RhcnQ6Ci0gIHN3aXRjaCAoc3ltLT5yZWRpcmVjdCkKKyAgc3dpdGNoIChzeW0t PnUucy5yZWRpcmVjdCkKICAgICB7CiAgICAgY2FzZSBTWU1CT0xfVkFSQUxJQVM6CiAgICAg ICBzeW0gPSBpbmRpcmVjdF92YXJpYWJsZSAoc3ltKTsgWFNFVFNZTUJPTCAoc3ltYm9sLCBz eW0pOyBnb3RvIHN0YXJ0OwpAQCAtMzI5OCwxMCArMzI5OCwxMCBAQCBzcGVjYmluZCAoTGlz cF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCB2YWx1ZSkKIAlzcGVjcGRsX3B0ci0+bGV0 LndoZXJlID0gRmN1cnJlbnRfYnVmZmVyICgpOwogCXNwZWNwZGxfcHRyLT5sZXQuc2F2ZWRf dmFsdWUgPSBRbmlsOwogCi0JZWFzc2VydCAoc3ltLT5yZWRpcmVjdCAhPSBTWU1CT0xfTE9D QUxJWkVECisJZWFzc2VydCAoc3ltLT51LnMucmVkaXJlY3QgIT0gU1lNQk9MX0xPQ0FMSVpF RAogCQkgfHwgKEVRIChTWU1CT0xfQkxWIChzeW0pLT53aGVyZSwgRmN1cnJlbnRfYnVmZmVy ICgpKSkpOwogCi0JaWYgKHN5bS0+cmVkaXJlY3QgPT0gU1lNQk9MX0xPQ0FMSVpFRCkKKwlp ZiAoc3ltLT51LnMucmVkaXJlY3QgPT0gU1lNQk9MX0xPQ0FMSVpFRCkKIAkgIHsKIAkgICAg aWYgKCFibHZfZm91bmQgKFNZTUJPTF9CTFYgKHN5bSkpKQogCSAgICAgIHNwZWNwZGxfcHRy LT5sZXQua2luZCA9IFNQRUNQRExfTEVUX0RFRkFVTFQ7CkBAIC0zNDEyLDkgKzM0MTIsOSBA QCBkb19vbmVfdW5iaW5kICh1bmlvbiBzcGVjYmluZGluZyAqdGhpc19iaW5kaW5nLCBib29s IHVud2luZGluZywKICAgICAgIHsgLyogSWYgdmFyaWFibGUgaGFzIGEgdHJpdmlhbCB2YWx1 ZSAobm8gZm9yd2FyZGluZyksIGFuZCBpc24ndAogCSAgIHRyYXBwZWQsIHdlIGNhbiBqdXN0 IHNldCBpdC4gICovCiAJTGlzcF9PYmplY3Qgc3ltID0gc3BlY3BkbF9zeW1ib2wgKHRoaXNf YmluZGluZyk7Ci0JaWYgKFNZTUJPTFAgKHN5bSkgJiYgWFNZTUJPTCAoc3ltKS0+cmVkaXJl Y3QgPT0gU1lNQk9MX1BMQUlOVkFMKQorCWlmIChTWU1CT0xQIChzeW0pICYmIFhTWU1CT0wg KHN5bSktPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfUExBSU5WQUwpCiAJICB7Ci0JICAgIGlm IChYU1lNQk9MIChzeW0pLT50cmFwcGVkX3dyaXRlID09IFNZTUJPTF9VTlRSQVBQRURfV1JJ VEUpCisJICAgIGlmIChYU1lNQk9MIChzeW0pLT51LnMudHJhcHBlZF93cml0ZSA9PSBTWU1C T0xfVU5UUkFQUEVEX1dSSVRFKQogCSAgICAgIFNFVF9TWU1CT0xfVkFMIChYU1lNQk9MIChz eW0pLCBzcGVjcGRsX29sZF92YWx1ZSAodGhpc19iaW5kaW5nKSk7CiAJICAgIGVsc2UKIAkg ICAgICBzZXRfaW50ZXJuYWwgKHN5bSwgc3BlY3BkbF9vbGRfdmFsdWUgKHRoaXNfYmluZGlu ZyksCkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCBjb250ZXh0IHdoZXJlIGJpbmRpbmcgaXMgbGV4 aWNhbCBieSBkZWZhdWx0LiAgKi8pCiAgIChMaXNwX09iamVjdCBzeW1ib2wpCiB7CiAgICBD SEVDS19TWU1CT0wgKHN5bWJvbCk7Ci0gICByZXR1cm4gWFNZTUJPTCAoc3ltYm9sKS0+ZGVj bGFyZWRfc3BlY2lhbCA/IFF0IDogUW5pbDsKKyAgIHJldHVybiBYU1lNQk9MIChzeW1ib2wp LT51LnMuZGVjbGFyZWRfc3BlY2lhbCA/IFF0IDogUW5pbDsKIH0KIAogDApAQCAtMzcwMiw3 ICszNzAyLDggQEAgYmFja3RyYWNlX2V2YWxfdW5yZXdpbmQgKGludCBkaXN0YW5jZSkKIAkg ICAgICAganVzdCBzZXQgaXQuICBObyBuZWVkIHRvIGNoZWNrIGZvciBjb25zdGFudCBzeW1i b2xzIGhlcmUsCiAJICAgICAgIHNpbmNlIHRoYXQgd2FzIGFscmVhZHkgZG9uZSBieSBzcGVj YmluZC4gICovCiAJICAgIExpc3BfT2JqZWN0IHN5bSA9IHNwZWNwZGxfc3ltYm9sICh0bXAp OwotCSAgICBpZiAoU1lNQk9MUCAoc3ltKSAmJiBYU1lNQk9MIChzeW0pLT5yZWRpcmVjdCA9 PSBTWU1CT0xfUExBSU5WQUwpCisJICAgIGlmIChTWU1CT0xQIChzeW0pCisJCSYmIFhTWU1C T0wgKHN5bSktPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfUExBSU5WQUwpCiAJICAgICAgewog CQlMaXNwX09iamVjdCBvbGRfdmFsdWUgPSBzcGVjcGRsX29sZF92YWx1ZSAodG1wKTsKIAkJ c2V0X3NwZWNwZGxfb2xkX3ZhbHVlICh0bXAsIFNZTUJPTF9WQUwgKFhTWU1CT0wgKHN5bSkp KTsKZGlmZiAtLWdpdCBhL3NyYy9mbnMuYyBiL3NyYy9mbnMuYwppbmRleCAyMzExYTZlMDQx Li40Mjg1OTM0NGJkIDEwMDY0NAotLS0gYS9zcmMvZm5zLmMKKysrIGIvc3JjL2Zucy5jCkBA IC0xOTkzLDcgKzE5OTMsNyBAQCBUaGlzIGlzIHRoZSBsYXN0IHZhbHVlIHN0b3JlZCB3aXRo IGAocHV0IFNZTUJPTCBQUk9QTkFNRSBWQUxVRSknLiAgKi8pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcm9wbmFtZSk7CiAgIGlmICghTklMUCAocHJvcHZhbCkp CiAgICAgcmV0dXJuIHByb3B2YWw7Ci0gIHJldHVybiBGcGxpc3RfZ2V0IChYU1lNQk9MIChz eW1ib2wpLT5wbGlzdCwgcHJvcG5hbWUpOworICByZXR1cm4gRnBsaXN0X2dldCAoWFNZTUJP TCAoc3ltYm9sKS0+dS5zLnBsaXN0LCBwcm9wbmFtZSk7CiB9CiAKIERFRlVOICgicGxpc3Qt cHV0IiwgRnBsaXN0X3B1dCwgU3BsaXN0X3B1dCwgMywgMywgMCwKQEAgLTIwMzksNyArMjAz OSw3IEBAIEl0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBgKGdldCBTWU1CT0wgUFJPUE5BTUUp Jy4gICovKQogewogICBDSEVDS19TWU1CT0wgKHN5bWJvbCk7CiAgIHNldF9zeW1ib2xfcGxp c3QKLSAgICAoc3ltYm9sLCBGcGxpc3RfcHV0IChYU1lNQk9MIChzeW1ib2wpLT5wbGlzdCwg cHJvcG5hbWUsIHZhbHVlKSk7CisgICAgKHN5bWJvbCwgRnBsaXN0X3B1dCAoWFNZTUJPTCAo c3ltYm9sKS0+dS5zLnBsaXN0LCBwcm9wbmFtZSwgdmFsdWUpKTsKICAgcmV0dXJuIHZhbHVl OwogfQogDApkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQuYwpp bmRleCA3ZGRkNmI5Njc0Li41Nzc1N2NmMjExIDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQu YworKysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtNzkwMSw3ICs3OTAxLDcgQEAgcGFyc2VfbWVu dV9pdGVtIChMaXNwX09iamVjdCBpdGVtLCBpbnQgaW5tZW51YmFyKQogCQkgICAgICAgKHN1 Y2ggYXMgbG1lbnUuZWwgc2V0IGl0IHVwKSwgY2hlY2sgaWYgdGhlCiAJCSAgICAgICBvcmln aW5hbCBjb21tYW5kIG1hdGNoZXMgdGhlIGNhY2hlZCBjb21tYW5kLiAgKi8KIAkJICAgICYm ICEoU1lNQk9MUCAoZGVmKQotCQkJICYmIEVRICh0ZW0sIFhTWU1CT0wgKGRlZiktPmZ1bmN0 aW9uKSkpKQorCQkJICYmIEVRICh0ZW0sIFhTWU1CT0wgKGRlZiktPnUucy5mdW5jdGlvbikp KSkKIAkgICAgICBrZXlzID0gUW5pbDsKIAkgIH0KIApAQCAtODc2MSw5ICs4NzYxLDkgQEAg YWNjZXNzX2tleW1hcF9rZXlyZW1hcCAoTGlzcF9PYmplY3QgbWFwLCBMaXNwX09iamVjdCBr ZXksIExpc3BfT2JqZWN0IHByb21wdCwKICAgLyogSGFuZGxlIGEgc3ltYm9sIHdob3NlIGZ1 bmN0aW9uIGRlZmluaXRpb24gaXMgYSBrZXltYXAKICAgICAgb3IgYW4gYXJyYXkuICAqLwog ICBpZiAoU1lNQk9MUCAobmV4dCkgJiYgIU5JTFAgKEZmYm91bmRwIChuZXh0KSkKLSAgICAg ICYmIChBUlJBWVAgKFhTWU1CT0wgKG5leHQpLT5mdW5jdGlvbikKLQkgIHx8IEtFWU1BUFAg KFhTWU1CT0wgKG5leHQpLT5mdW5jdGlvbikpKQotICAgIG5leHQgPSBGYXV0b2xvYWRfZG9f bG9hZCAoWFNZTUJPTCAobmV4dCktPmZ1bmN0aW9uLCBuZXh0LCBRbmlsKTsKKyAgICAgICYm IChBUlJBWVAgKFhTWU1CT0wgKG5leHQpLT51LnMuZnVuY3Rpb24pCisJICB8fCBLRVlNQVBQ IChYU1lNQk9MIChuZXh0KS0+dS5zLmZ1bmN0aW9uKSkpCisgICAgbmV4dCA9IEZhdXRvbG9h ZF9kb19sb2FkIChYU1lNQk9MIChuZXh0KS0+dS5zLmZ1bmN0aW9uLCBuZXh0LCBRbmlsKTsK IAogICAvKiBJZiB0aGUga2V5bWFwIGdpdmVzIGEgZnVuY3Rpb24sIG5vdCBhbgogICAgICBh cnJheSwgdGhlbiBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIG9uZSBhcmcgYW5kIHVzZQpAQCAt MTE1MTAsNyArMTE1MTAsNyBAQCBmb3IgdGhhdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhhdCBwcmVm aXgga2V5LiAgKi8pOwogCSAgICAgICBkb2M6IC8qIEZvcm0gdG8gZXZhbHVhdGUgd2hlbiBF bWFjcyBzdGFydHMgdXAuCiBVc2VmdWwgdG8gc2V0IGJlZm9yZSB5b3UgZHVtcCBhIG1vZGlm aWVkIEVtYWNzLiAgKi8pOwogICBWdG9wX2xldmVsID0gUW5pbDsKLSAgWFNZTUJPTCAoUXRv cF9sZXZlbCktPmRlY2xhcmVkX3NwZWNpYWwgPSBmYWxzZTsKKyAgWFNZTUJPTCAoUXRvcF9s ZXZlbCktPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gZmFsc2U7CiAKICAgREVGVkFSX0tCT0FS RCAoImtleWJvYXJkLXRyYW5zbGF0ZS10YWJsZSIsIFZrZXlib2FyZF90cmFuc2xhdGVfdGFi bGUsCiAgICAgICAgICAgICAgICAgIGRvYzogLyogVHJhbnNsYXRlIHRhYmxlIGZvciBsb2Nh bCBrZXlib2FyZCBpbnB1dCwgb3IgbmlsLgpkaWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3Ny Yy9saXNwLmgKaW5kZXggMWQ2ZmQ1YTRmZS4uZTlhZWM0YzU5NyAxMDA2NDQKLS0tIGEvc3Jj L2xpc3AuaAorKysgYi9zcmMvbGlzcC5oCkBAIC0yMjksNyArMjI5LDcgQEAgZXh0ZXJuIGJv b2wgc3VwcHJlc3NfY2hlY2tpbmcgRVhURVJOQUxMWV9WSVNJQkxFOwogICAgVVNFX0xTQl9U QUcgbm90IG9ubHkgcmVxdWlyZXMgdGhlIGxlYXN0IDMgYml0cyBvZiBwb2ludGVycyByZXR1 cm5lZCBieQogICAgbWFsbG9jIHRvIGJlIDAgYnV0IGFsc28gbmVlZHMgdG8gYmUgYWJsZSB0 byBpbXBvc2UgYSBtdWx0LW9mLTggYWxpZ25tZW50CiAgICBvbiB0aGUgZmV3IHN0YXRpYyBM aXNwX09iamVjdHMgdXNlZCwgYWxsIG9mIHdoaWNoIGFyZSBhbGlnbmVkIHZpYQotICAgdGhl IEdDQUxJR04gbWFjcm8gZGVmaW5lZCBiZWxvdy4gICovCisgICAnY2hhciBhbGlnbmFzIChH Q0FMSUdOTUVOVCkgZ2NhbGlnbmVkOycgaW5zaWRlIGEgdW5pb24uICAqLwogCiBlbnVtIExp c3BfQml0cwogICB7CkBAIC0yNzcsMjAgKzI3Nyw2IEBAIERFRklORV9HREJfU1lNQk9MX0VO RCAoVkFMTUFTSykKIGVycm9yICE7CiAjZW5kaWYKIAotLyogVXNlIEdDQUxJR05FRCBpbW1l ZGlhdGVseSBhZnRlciB0aGUgJ3N0cnVjdCcga2V5d29yZCB0byByZXF1aXJlIHRoZQotICAg c3RydWN0IHRvIGhhdmUgYW4gYWRkcmVzcyB0aGF0IGlzIGEgbXVsdGlwbGUgb2YgR0NBTElH Tk1FTlQuICBUaGlzCi0gICBpcyBhIG5vLW9wIGlmIHRoZSBzdHJ1Y3QncyBuYXR1cmFsIGFs aWdubWVudCBpcyBhbHJlYWR5IGEgbXVsdGlwbGUKLSAgIG9mIEdDQUxJR05NRU5ULiAgR0NB TElHTkVEJ3MgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgJ2FsaWduZWQnCi0gICBhdHRyaWJ1 dGUgaW5zdGVhZCBvZiAnYWxpZ25hcyAoR0NBTElHTk1FTlQpJywgYXMgdGhlIGxhdHRlciB3 b3VsZAotICAgZmFpbCBpZiBhbiBvYmplY3QncyBuYXR1cmFsIGFsaWdubWVudCBleGNlZWRz IEdDQUxJR05NRU5ULiAgVGhlCi0gICBpbXBsZW1lbnRhdGlvbiBob3BlcyB0aGF0IG5hdHVy YWwgYWxpZ25tZW50IHN1ZmZpY2VzIG9uIHBsYXRmb3JtcwotICAgbGFja2luZyAnYWxpZ25l ZCcuICAqLwotI2lmZGVmIEhBVkVfU1RSVUNUX0FUVFJJQlVURV9BTElHTkVECi0jIGRlZmlu ZSBHQ0FMSUdORUQgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKEdDQUxJR05NRU5UKSkpCi0j ZWxzZQotIyBkZWZpbmUgR0NBTElHTkVEIC8qIGVtcHR5ICovCi0jZW5kaWYKLQogLyogU29t ZSBvcGVyYXRpb25zIGFyZSBzbyBjb21tb25seSBleGVjdXRlZCB0aGF0IHRoZXkgYXJlIGlt cGxlbWVudGVkCiAgICBhcyBtYWNyb3MsIG5vdCBmdW5jdGlvbnMsIGJlY2F1c2Ugb3RoZXJ3 aXNlIHJ1bnRpbWUgcGVyZm9ybWFuY2Ugd291bGQKICAgIHN1ZmZlciB0b28gbXVjaCB3aGVu IGNvbXBpbGluZyB3aXRoIEdDQyB3aXRob3V0IG9wdGltaXphdGlvbi4KQEAgLTMzOCwxNSAr MzI0LDE3IEBAIGVycm9yICE7CiAjZGVmaW5lIGxpc3BfaF9NSVNDUCh4KSAoWFRZUEUgKHgp ID09IExpc3BfTWlzYykKICNkZWZpbmUgbGlzcF9oX05JTFAoeCkgRVEgKHgsIFFuaWwpCiAj ZGVmaW5lIGxpc3BfaF9TRVRfU1lNQk9MX1ZBTChzeW0sIHYpIFwKLSAgIChlYXNzZXJ0ICgo c3ltKS0+cmVkaXJlY3QgPT0gU1lNQk9MX1BMQUlOVkFMKSwgKHN5bSktPnZhbC52YWx1ZSA9 ICh2KSkKLSNkZWZpbmUgbGlzcF9oX1NZTUJPTF9DT05TVEFOVF9QKHN5bSkgKFhTWU1CT0wg KHN5bSktPnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9MX05PV1JJVEUpCi0jZGVmaW5lIGxpc3Bf aF9TWU1CT0xfVFJBUFBFRF9XUklURV9QKHN5bSkgKFhTWU1CT0wgKHN5bSktPnRyYXBwZWRf d3JpdGUpCisgICAoZWFzc2VydCAoKHN5bSktPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfUExB SU5WQUwpLCBcCisgICAgKHN5bSktPnUucy52YWwudmFsdWUgPSAodikpCisjZGVmaW5lIGxp c3BfaF9TWU1CT0xfQ09OU1RBTlRfUChzeW0pIFwKKyAgIChYU1lNQk9MIChzeW0pLT51LnMu dHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfTk9XUklURSkKKyNkZWZpbmUgbGlzcF9oX1NZTUJP TF9UUkFQUEVEX1dSSVRFX1Aoc3ltKSAoWFNZTUJPTCAoc3ltKS0+dS5zLnRyYXBwZWRfd3Jp dGUpCiAjZGVmaW5lIGxpc3BfaF9TWU1CT0xfVkFMKHN5bSkgXAotICAgKGVhc3NlcnQgKChz eW0pLT5yZWRpcmVjdCA9PSBTWU1CT0xfUExBSU5WQUwpLCAoc3ltKS0+dmFsLnZhbHVlKQor ICAgKGVhc3NlcnQgKChzeW0pLT51LnMucmVkaXJlY3QgPT0gU1lNQk9MX1BMQUlOVkFMKSwg KHN5bSktPnUucy52YWwudmFsdWUpCiAjZGVmaW5lIGxpc3BfaF9TWU1CT0xQKHgpIChYVFlQ RSAoeCkgPT0gTGlzcF9TeW1ib2wpCiAjZGVmaW5lIGxpc3BfaF9WRUNUT1JMSUtFUCh4KSAo WFRZUEUgKHgpID09IExpc3BfVmVjdG9ybGlrZSkKLSNkZWZpbmUgbGlzcF9oX1hDQVIoYykg WENPTlMgKGMpLT5jYXIKLSNkZWZpbmUgbGlzcF9oX1hDRFIoYykgWENPTlMgKGMpLT51LmNk cgorI2RlZmluZSBsaXNwX2hfWENBUihjKSBYQ09OUyAoYyktPnUucy5jYXIKKyNkZWZpbmUg bGlzcF9oX1hDRFIoYykgWENPTlMgKGMpLT51LnMudS5jZHIKICNkZWZpbmUgbGlzcF9oX1hD T05TKGEpIFwKICAgIChlYXNzZXJ0IChDT05TUCAoYSkpLCAoc3RydWN0IExpc3BfQ29ucyAq KSBYVU5UQUcgKGEsIExpc3BfQ29ucykpCiAjZGVmaW5lIGxpc3BfaF9YSEFTSChhKSBYVUlO VCAoYSkKQEAgLTY3Nyw1MiArNjY1LDYwIEBAIGVudW0gc3ltYm9sX3RyYXBwZWRfd3JpdGUK IAogc3RydWN0IExpc3BfU3ltYm9sCiB7Ci0gIGJvb2xfYmYgZ2NtYXJrYml0IDogMTsKLQot ICAvKiBJbmRpY2F0ZXMgd2hlcmUgdGhlIHZhbHVlIGNhbiBiZSBmb3VuZDoKLSAgICAgMCA6 IGl0J3MgYSBwbGFpbiB2YXIsIHRoZSB2YWx1ZSBpcyBpbiB0aGUgYHZhbHVlJyBmaWVsZC4K LSAgICAgMSA6IGl0J3MgYSB2YXJhbGlhcywgdGhlIHZhbHVlIGlzIHJlYWxseSBpbiB0aGUg YGFsaWFzJyBzeW1ib2wuCi0gICAgIDIgOiBpdCdzIGEgbG9jYWxpemVkIHZhciwgdGhlIHZh bHVlIGlzIGluIHRoZSBgYmx2JyBvYmplY3QuCi0gICAgIDMgOiBpdCdzIGEgZm9yd2FyZGlu ZyB2YXJpYWJsZSwgdGhlIHZhbHVlIGlzIGluIGBmb3J3YXJkJy4gICovCi0gIEVOVU1fQkYg KHN5bWJvbF9yZWRpcmVjdCkgcmVkaXJlY3QgOiAzOwotCi0gIC8qIDAgOiBub3JtYWwgY2Fz ZSwganVzdCBzZXQgdGhlIHZhbHVlCi0gICAgIDEgOiBjb25zdGFudCwgY2Fubm90IHNldCwg ZS5nLiBuaWwsIHQsIDprZXl3b3Jkcy4KLSAgICAgMiA6IHRyYXAgdGhlIHdyaXRlLCBjYWxs IHdhdGNoZXIgZnVuY3Rpb25zLiAgKi8KLSAgRU5VTV9CRiAoc3ltYm9sX3RyYXBwZWRfd3Jp dGUpIHRyYXBwZWRfd3JpdGUgOiAyOwotCi0gIC8qIEludGVybmVkIHN0YXRlIG9mIHRoZSBz eW1ib2wuICBUaGlzIGlzIGFuIGVudW1lcmF0b3IgZnJvbQotICAgICBlbnVtIHN5bWJvbF9p bnRlcm5lZC4gICovCi0gIHVuc2lnbmVkIGludGVybmVkIDogMjsKLQotICAvKiBUcnVlIG1l YW5zIHRoYXQgdGhpcyB2YXJpYWJsZSBoYXMgYmVlbiBleHBsaWNpdGx5IGRlY2xhcmVkCi0g ICAgIHNwZWNpYWwgKHdpdGggYGRlZnZhcicgZXRjKSwgYW5kIHNob3VsZG4ndCBiZSBsZXhp Y2FsbHkgYm91bmQuICAqLwotICBib29sX2JmIGRlY2xhcmVkX3NwZWNpYWwgOiAxOwotCi0g IC8qIFRydWUgaWYgcG9pbnRlZCB0byBmcm9tIHB1cmVzcGFjZSBhbmQgaGVuY2UgY2FuJ3Qg YmUgR0MnZC4gICovCi0gIGJvb2xfYmYgcGlubmVkIDogMTsKLQotICAvKiBUaGUgc3ltYm9s J3MgbmFtZSwgYXMgYSBMaXNwIHN0cmluZy4gICovCi0gIExpc3BfT2JqZWN0IG5hbWU7Ci0K LSAgLyogVmFsdWUgb2YgdGhlIHN5bWJvbCBvciBRdW5ib3VuZCBpZiB1bmJvdW5kLiAgV2hp Y2ggYWx0ZXJuYXRpdmUgb2YgdGhlCi0gICAgIHVuaW9uIGlzIHVzZWQgZGVwZW5kcyBvbiB0 aGUgYHJlZGlyZWN0JyBmaWVsZCBhYm92ZS4gICovCi0gIHVuaW9uIHsKLSAgICBMaXNwX09i amVjdCB2YWx1ZTsKLSAgICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKmFsaWFzOwotICAgIHN0cnVj dCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2OwotICAgIHVuaW9uIExpc3BfRndkICpm d2Q7Ci0gIH0gdmFsOwotCi0gIC8qIEZ1bmN0aW9uIHZhbHVlIG9mIHRoZSBzeW1ib2wgb3Ig UW5pbCBpZiBub3QgZmJvdW5kcC4gICovCi0gIExpc3BfT2JqZWN0IGZ1bmN0aW9uOworICB1 bmlvbgorICB7CisgICAgc3RydWN0CisgICAgeworICAgICAgYm9vbF9iZiBnY21hcmtiaXQg OiAxOworCisgICAgICAvKiBJbmRpY2F0ZXMgd2hlcmUgdGhlIHZhbHVlIGNhbiBiZSBmb3Vu ZDoKKwkgMCA6IGl0J3MgYSBwbGFpbiB2YXIsIHRoZSB2YWx1ZSBpcyBpbiB0aGUgYHZhbHVl JyBmaWVsZC4KKwkgMSA6IGl0J3MgYSB2YXJhbGlhcywgdGhlIHZhbHVlIGlzIHJlYWxseSBp biB0aGUgYGFsaWFzJyBzeW1ib2wuCisJIDIgOiBpdCdzIGEgbG9jYWxpemVkIHZhciwgdGhl IHZhbHVlIGlzIGluIHRoZSBgYmx2JyBvYmplY3QuCisJIDMgOiBpdCdzIGEgZm9yd2FyZGlu ZyB2YXJpYWJsZSwgdGhlIHZhbHVlIGlzIGluIGBmb3J3YXJkJy4gICovCisgICAgICBFTlVN X0JGIChzeW1ib2xfcmVkaXJlY3QpIHJlZGlyZWN0IDogMzsKKworICAgICAgLyogMCA6IG5v cm1hbCBjYXNlLCBqdXN0IHNldCB0aGUgdmFsdWUKKwkgMSA6IGNvbnN0YW50LCBjYW5ub3Qg c2V0LCBlLmcuIG5pbCwgdCwgOmtleXdvcmRzLgorCSAyIDogdHJhcCB0aGUgd3JpdGUsIGNh bGwgd2F0Y2hlciBmdW5jdGlvbnMuICAqLworICAgICAgRU5VTV9CRiAoc3ltYm9sX3RyYXBw ZWRfd3JpdGUpIHRyYXBwZWRfd3JpdGUgOiAyOworCisgICAgICAvKiBJbnRlcm5lZCBzdGF0 ZSBvZiB0aGUgc3ltYm9sLiAgVGhpcyBpcyBhbiBlbnVtZXJhdG9yIGZyb20KKwkgZW51bSBz eW1ib2xfaW50ZXJuZWQuICAqLworICAgICAgdW5zaWduZWQgaW50ZXJuZWQgOiAyOworCisg ICAgICAvKiBUcnVlIG1lYW5zIHRoYXQgdGhpcyB2YXJpYWJsZSBoYXMgYmVlbiBleHBsaWNp dGx5IGRlY2xhcmVkCisJIHNwZWNpYWwgKHdpdGggYGRlZnZhcicgZXRjKSwgYW5kIHNob3Vs ZG4ndCBiZSBsZXhpY2FsbHkgYm91bmQuICAqLworICAgICAgYm9vbF9iZiBkZWNsYXJlZF9z cGVjaWFsIDogMTsKKworICAgICAgLyogVHJ1ZSBpZiBwb2ludGVkIHRvIGZyb20gcHVyZXNw YWNlIGFuZCBoZW5jZSBjYW4ndCBiZSBHQydkLiAgKi8KKyAgICAgIGJvb2xfYmYgcGlubmVk IDogMTsKKworICAgICAgLyogVGhlIHN5bWJvbCdzIG5hbWUsIGFzIGEgTGlzcCBzdHJpbmcu ICAqLworICAgICAgTGlzcF9PYmplY3QgbmFtZTsKKworICAgICAgLyogVmFsdWUgb2YgdGhl IHN5bWJvbCBvciBRdW5ib3VuZCBpZiB1bmJvdW5kLiAgV2hpY2ggYWx0ZXJuYXRpdmUgb2Yg dGhlCisJIHVuaW9uIGlzIHVzZWQgZGVwZW5kcyBvbiB0aGUgYHJlZGlyZWN0JyBmaWVsZCBh Ym92ZS4gICovCisgICAgICB1bmlvbiB7CisJTGlzcF9PYmplY3QgdmFsdWU7CisJc3RydWN0 IExpc3BfU3ltYm9sICphbGlhczsKKwlzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUg KmJsdjsKKwl1bmlvbiBMaXNwX0Z3ZCAqZndkOworICAgICAgfSB2YWw7CisKKyAgICAgIC8q IEZ1bmN0aW9uIHZhbHVlIG9mIHRoZSBzeW1ib2wgb3IgUW5pbCBpZiBub3QgZmJvdW5kcC4g ICovCisgICAgICBMaXNwX09iamVjdCBmdW5jdGlvbjsKIAotICAvKiBUaGUgc3ltYm9sJ3Mg cHJvcGVydHkgbGlzdC4gICovCi0gIExpc3BfT2JqZWN0IHBsaXN0OworICAgICAgLyogVGhl IHN5bWJvbCdzIHByb3BlcnR5IGxpc3QuICAqLworICAgICAgTGlzcF9PYmplY3QgcGxpc3Q7 CiAKLSAgLyogTmV4dCBzeW1ib2wgaW4gb2JhcnJheSBidWNrZXQsIGlmIHRoZSBzeW1ib2wg aXMgaW50ZXJuZWQuICAqLwotICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKm5leHQ7CisgICAgICAv KiBOZXh0IHN5bWJvbCBpbiBvYmFycmF5IGJ1Y2tldCwgaWYgdGhlIHN5bWJvbCBpcyBpbnRl cm5lZC4gICovCisgICAgICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKm5leHQ7CisgICAgfSBzOwor ICAgIGNoYXIgYWxpZ25hcyAoR0NBTElHTk1FTlQpIGdjYWxpZ25lZDsKKyAgfSB1OwogfTsK K3ZlcmlmeSAoYWxpZ25vZiAoc3RydWN0IExpc3BfU3ltYm9sKSAlIEdDQUxJR05NRU5UID09 IDApOwogCiAvKiBEZWNsYXJlIGEgTGlzcC1jYWxsYWJsZSBmdW5jdGlvbi4gIFRoZSBNQVhB UkdTIHBhcmFtZXRlciBoYXMgdGhlIHNhbWUKICAgIG1lYW5pbmcgYXMgaW4gdGhlIERFRlVO IG1hY3JvLCBhbmQgaXMgdXNlZCB0byBjb25zdHJ1Y3QgYSBwcm90b3R5cGUuICAqLwpAQCAt ODAyLDcgKzc5OCw3IEBAIHN0cnVjdCBMaXNwX1N5bWJvbAogICAgQnVnIzg1NDYuICAqLwog dW5pb24gdmVjdG9ybGlrZV9oZWFkZXIKICAgewotICAgIC8qIFRoZSBvbmx5IGZpZWxkIGNv bnRhaW5zIHZhcmlvdXMgcGllY2VzIG9mIGluZm9ybWF0aW9uOgorICAgIC8qIFRoZSBtYWlu IG1lbWJlciBjb250YWlucyB2YXJpb3VzIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjoKICAgICAg ICAtIFRoZSBNU0IgKEFSUkFZX01BUktfRkxBRykgaG9sZHMgdGhlIGdjbWFya2JpdC4KICAg ICAgICAtIFRoZSBuZXh0IGJpdCAoUFNFVURPVkVDVE9SX0ZMQUcpIGluZGljYXRlcyB3aGV0 aGVyIHRoaXMgaXMgYSBwbGFpbgogICAgICAgICAgdmVjdG9yICgwKSBvciBhIHBzZXVkb3Zl Y3RvciAoMSkuCkBAIC04MjIsNyArODE4LDkgQEAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIK IAkgQ3VycmVudCBsYXlvdXQgbGltaXRzIHRoZSBwc2V1ZG92ZWN0b3JzIHRvIDYzIFBWRUNf eHh4IHN1YnR5cGVzLAogCSA0MDk1IExpc3BfT2JqZWN0cyBpbiBHQy1lZCBhcmVhIGFuZCA0 MDk1IHdvcmQtc2l6ZWQgb3RoZXIgc2xvdHMuICAqLwogICAgIHB0cmRpZmZfdCBzaXplOwor ICAgIGNoYXIgYWxpZ25hcyAoR0NBTElHTk1FTlQpIGdjYWxpZ25lZDsKICAgfTsKK3Zlcmlm eSAoYWxpZ25vZiAodW5pb24gdmVjdG9ybGlrZV9oZWFkZXIpICUgR0NBTElHTk1FTlQgPT0g MCk7CiAKIElOTElORSBib29sCiAoU1lNQk9MUCkgKExpc3BfT2JqZWN0IHgpCkBAIC04NTQs NyArODUyLDcgQEAgbWFrZV9saXNwX3N5bWJvbCAoc3RydWN0IExpc3BfU3ltYm9sICpzeW0p CiBJTkxJTkUgTGlzcF9PYmplY3QKIGJ1aWx0aW5fbGlzcF9zeW1ib2wgKGludCBpbmRleCkK IHsKLSAgcmV0dXJuIG1ha2VfbGlzcF9zeW1ib2wgKCZsaXNwc3ltW2luZGV4XS5zKTsKKyAg cmV0dXJuIG1ha2VfbGlzcF9zeW1ib2wgKCZsaXNwc3ltW2luZGV4XSk7CiB9CiAKIElOTElO RSB2b2lkCkBAIC0xMTQ0LDIwICsxMTQyLDI4IEBAIG1ha2VfcG9pbnRlcl9pbnRlZ2VyICh2 b2lkICpwKQogCiB0eXBlZGVmIHN0cnVjdCBpbnRlcnZhbCAqSU5URVJWQUw7CiAKLXN0cnVj dCBHQ0FMSUdORUQgTGlzcF9Db25zCitzdHJ1Y3QgTGlzcF9Db25zCit7CisgIHVuaW9uCiAg IHsKLSAgICAvKiBDYXIgb2YgdGhpcyBjb25zIGNlbGwuICAqLwotICAgIExpc3BfT2JqZWN0 IGNhcjsKLQotICAgIHVuaW9uCisgICAgc3RydWN0CiAgICAgewotICAgICAgLyogQ2RyIG9m IHRoaXMgY29ucyBjZWxsLiAgKi8KLSAgICAgIExpc3BfT2JqZWN0IGNkcjsKLQotICAgICAg LyogVXNlZCB0byBjaGFpbiBjb25zZXMgb24gYSBmcmVlIGxpc3QuICAqLwotICAgICAgc3Ry dWN0IExpc3BfQ29ucyAqY2hhaW47Ci0gICAgfSB1OwotICB9OworICAgICAgLyogQ2FyIG9m IHRoaXMgY29ucyBjZWxsLiAgKi8KKyAgICAgIExpc3BfT2JqZWN0IGNhcjsKKworICAgICAg dW5pb24KKyAgICAgIHsKKwkvKiBDZHIgb2YgdGhpcyBjb25zIGNlbGwuICAqLworCUxpc3Bf T2JqZWN0IGNkcjsKKworCS8qIFVzZWQgdG8gY2hhaW4gY29uc2VzIG9uIGEgZnJlZSBsaXN0 LiAgKi8KKwlzdHJ1Y3QgTGlzcF9Db25zICpjaGFpbjsKKyAgICAgIH0gdTsKKyAgICB9IHM7 CisgICAgY2hhciBhbGlnbmFzIChHQ0FMSUdOTUVOVCkgZ2NhbGlnbmVkOworICB9IHU7Cit9 OwordmVyaWZ5IChhbGlnbm9mIChzdHJ1Y3QgTGlzcF9Db25zKSAlIEdDQUxJR05NRU5UID09 IDApOwogCiBJTkxJTkUgYm9vbAogKE5JTFApIChMaXNwX09iamVjdCB4KQpAQCAtMTE5Mywx MiArMTE5OSwxMiBAQCBJTkxJTkUgc3RydWN0IExpc3BfQ29ucyAqCiBJTkxJTkUgTGlzcF9P YmplY3QgKgogeGNhcl9hZGRyIChMaXNwX09iamVjdCBjKQogewotICByZXR1cm4gJlhDT05T IChjKS0+Y2FyOworICByZXR1cm4gJlhDT05TIChjKS0+dS5zLmNhcjsKIH0KIElOTElORSBM aXNwX09iamVjdCAqCiB4Y2RyX2FkZHIgKExpc3BfT2JqZWN0IGMpCiB7Ci0gIHJldHVybiAm WENPTlMgKGMpLT51LmNkcjsKKyAgcmV0dXJuICZYQ09OUyAoYyktPnUucy51LmNkcjsKIH0K IAogLyogVXNlIHRoZXNlIGZyb20gbm9ybWFsIGNvZGUuICAqLwpAQCAtMTI2MiwxNSArMTI2 OCwyNCBAQCBDRFJfU0FGRSAoTGlzcF9PYmplY3QgYykKICAgcmV0dXJuIENPTlNQIChjKSA/ IFhDRFIgKGMpIDogUW5pbDsKIH0KIAotLyogSW4gYSBzdHJpbmcgb3IgdmVjdG9yLCB0aGUg c2lnbiBiaXQgb2YgdGhlIGBzaXplJyBpcyB0aGUgZ2MgbWFyayBiaXQuICAqLworLyogSW4g YSBzdHJpbmcgb3IgdmVjdG9yLCB0aGUgc2lnbiBiaXQgb2YgdS5zLnNpemUgaXMgdGhlIGdj IG1hcmsgYml0LiAgKi8KIAotc3RydWN0IEdDQUxJR05FRCBMaXNwX1N0cmluZworc3RydWN0 IExpc3BfU3RyaW5nCit7CisgIHVuaW9uCiAgIHsKLSAgICBwdHJkaWZmX3Qgc2l6ZTsKLSAg ICBwdHJkaWZmX3Qgc2l6ZV9ieXRlOwotICAgIElOVEVSVkFMIGludGVydmFsczsJCS8qIFRl eHQgcHJvcGVydGllcyBpbiB0aGlzIHN0cmluZy4gICovCi0gICAgdW5zaWduZWQgY2hhciAq ZGF0YTsKLSAgfTsKKyAgICBzdHJ1Y3QKKyAgICB7CisgICAgICBwdHJkaWZmX3Qgc2l6ZTsK KyAgICAgIHB0cmRpZmZfdCBzaXplX2J5dGU7CisgICAgICBJTlRFUlZBTCBpbnRlcnZhbHM7 CS8qIFRleHQgcHJvcGVydGllcyBpbiB0aGlzIHN0cmluZy4gICovCisgICAgICB1bnNpZ25l ZCBjaGFyICpkYXRhOworICAgIH0gczsKKyAgICBzdHJ1Y3QgTGlzcF9TdHJpbmcgKm5leHQ7 CisgICAgY2hhciBhbGlnbmFzIChHQ0FMSUdOTUVOVCkgZ2NhbGlnbmVkOworICB9IHU7Cit9 OwordmVyaWZ5IChhbGlnbm9mIChzdHJ1Y3QgTGlzcF9TdHJpbmcpICUgR0NBTElHTk1FTlQg PT0gMCk7CiAKIElOTElORSBib29sCiBTVFJJTkdQIChMaXNwX09iamVjdCB4KQpAQCAtMTI5 NSw3ICsxMzEwLDcgQEAgWFNUUklORyAoTGlzcF9PYmplY3QgYSkKIElOTElORSBib29sCiBT VFJJTkdfTVVMVElCWVRFIChMaXNwX09iamVjdCBzdHIpCiB7Ci0gIHJldHVybiAwIDw9IFhT VFJJTkcgKHN0ciktPnNpemVfYnl0ZTsKKyAgcmV0dXJuIDAgPD0gWFNUUklORyAoc3RyKS0+ dS5zLnNpemVfYnl0ZTsKIH0KIAogLyogQW4gdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBv ZiBieXRlcyBpbiBhIExpc3Agc3RyaW5nLCBub3QKQEAgLTEzMTcsMjAgKzEzMzIsMjAgQEAg U1RSSU5HX01VTFRJQllURSAoTGlzcF9PYmplY3Qgc3RyKQogLyogTWFyayBTVFIgYXMgYSB1 bmlieXRlIHN0cmluZy4gICovCiAjZGVmaW5lIFNUUklOR19TRVRfVU5JQllURShTVFIpCQkJ CVwKICAgZG8gewkJCQkJCQlcCi0gICAgaWYgKFhTVFJJTkcgKFNUUiktPnNpemUgPT0gMCkJ CQlcCisgICAgaWYgKFhTVFJJTkcgKFNUUiktPnUucy5zaXplID09IDApCQkJXAogICAgICAg KFNUUikgPSBlbXB0eV91bmlieXRlX3N0cmluZzsJCQlcCiAgICAgZWxzZQkJCQkJCVwKLSAg ICAgIFhTVFJJTkcgKFNUUiktPnNpemVfYnl0ZSA9IC0xOwkJCVwKKyAgICAgIFhTVFJJTkcg KFNUUiktPnUucy5zaXplX2J5dGUgPSAtMTsJCVwKICAgfSB3aGlsZSAoZmFsc2UpCiAKIC8q IE1hcmsgU1RSIGFzIGEgbXVsdGlieXRlIHN0cmluZy4gIEFzc3VyZSB0aGF0IFNUUiBjb250 YWlucyBvbmx5CiAgICBBU0NJSSBjaGFyYWN0ZXJzIGluIGFkdmFuY2UuICAqLwogI2RlZmlu ZSBTVFJJTkdfU0VUX01VTFRJQllURShTVFIpCQkJXAogICBkbyB7CQkJCQkJCVwKLSAgICBp ZiAoWFNUUklORyAoU1RSKS0+c2l6ZSA9PSAwKQkJCVwKKyAgICBpZiAoWFNUUklORyAoU1RS KS0+dS5zLnNpemUgPT0gMCkJCQlcCiAgICAgICAoU1RSKSA9IGVtcHR5X211bHRpYnl0ZV9z dHJpbmc7CQkJXAogICAgIGVsc2UJCQkJCQlcCi0gICAgICBYU1RSSU5HIChTVFIpLT5zaXpl X2J5dGUgPSBYU1RSSU5HIChTVFIpLT5zaXplOwlcCisgICAgICBYU1RSSU5HIChTVFIpLT51 LnMuc2l6ZV9ieXRlID0gWFNUUklORyAoU1RSKS0+dS5zLnNpemU7IFwKICAgfSB3aGlsZSAo ZmFsc2UpCiAKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgZGVhbGluZyB3aXRoIExp c3Agc3RyaW5ncy4gICovCkBAIC0xMzM4LDcgKzEzNTMsNyBAQCBTVFJJTkdfTVVMVElCWVRF IChMaXNwX09iamVjdCBzdHIpCiBJTkxJTkUgdW5zaWduZWQgY2hhciAqCiBTREFUQSAoTGlz cF9PYmplY3Qgc3RyaW5nKQogewotICByZXR1cm4gWFNUUklORyAoc3RyaW5nKS0+ZGF0YTsK KyAgcmV0dXJuIFhTVFJJTkcgKHN0cmluZyktPnUucy5kYXRhOwogfQogSU5MSU5FIGNoYXIg KgogU1NEQVRBIChMaXNwX09iamVjdCBzdHJpbmcpCkBAIC0xMzU5LDcgKzEzNzQsNyBAQCBT U0VUIChMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRpZmZfdCBpbmRleCwgdW5zaWduZWQgY2hh ciBuZXcpCiBJTkxJTkUgcHRyZGlmZl90CiBTQ0hBUlMgKExpc3BfT2JqZWN0IHN0cmluZykK IHsKLSAgcHRyZGlmZl90IG5jaGFycyA9IFhTVFJJTkcgKHN0cmluZyktPnNpemU7CisgIHB0 cmRpZmZfdCBuY2hhcnMgPSBYU1RSSU5HIChzdHJpbmcpLT51LnMuc2l6ZTsKICAgZWFzc3Vt ZSAoMCA8PSBuY2hhcnMpOwogICByZXR1cm4gbmNoYXJzOwogfQpAQCAtMTM3Myw3ICsxMzg4 LDcgQEAgU1RSSU5HX0JZVEVTIChzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMpCiAjaWZkZWYgR0Nf Q0hFQ0tfU1RSSU5HX0JZVEVTCiAgIHB0cmRpZmZfdCBuYnl0ZXMgPSBzdHJpbmdfYnl0ZXMg KHMpOwogI2Vsc2UKLSAgcHRyZGlmZl90IG5ieXRlcyA9IHMtPnNpemVfYnl0ZSA8IDAgPyBz LT5zaXplIDogcy0+c2l6ZV9ieXRlOworICBwdHJkaWZmX3QgbmJ5dGVzID0gcy0+dS5zLnNp emVfYnl0ZSA8IDAgPyBzLT51LnMuc2l6ZSA6IHMtPnUucy5zaXplX2J5dGU7CiAjZW5kaWYK ICAgZWFzc3VtZSAoMCA8PSBuYnl0ZXMpOwogICByZXR1cm4gbmJ5dGVzOwpAQCAtMTM5Miw3 ICsxNDA3LDcgQEAgU1RSSU5HX1NFVF9DSEFSUyAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJk aWZmX3QgbmV3c2l6ZSkKICAgZWFzc2VydCAoU1RSSU5HX01VTFRJQllURSAoc3RyaW5nKQog CSAgID8gMCA8PSBuZXdzaXplICYmIG5ld3NpemUgPD0gU0JZVEVTIChzdHJpbmcpCiAJICAg OiBuZXdzaXplID09IFNDSEFSUyAoc3RyaW5nKSk7Ci0gIFhTVFJJTkcgKHN0cmluZyktPnNp emUgPSBuZXdzaXplOworICBYU1RSSU5HIChzdHJpbmcpLT51LnMuc2l6ZSA9IG5ld3NpemU7 CiB9CiAKIC8qIEEgcmVndWxhciB2ZWN0b3IgaXMganVzdCBhIGhlYWRlciBwbHVzIGFuIGFy cmF5IG9mIExpc3BfT2JqZWN0cy4gICovCkBAIC0xOTEwLDIwICsxOTI1LDIwIEBAIElOTElO RSBMaXNwX09iamVjdAogSU5MSU5FIHN0cnVjdCBMaXNwX1N5bWJvbCAqCiBTWU1CT0xfQUxJ QVMgKHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltKQogewotICBlYXNzdW1lIChzeW0tPnJlZGly ZWN0ID09IFNZTUJPTF9WQVJBTElBUyAmJiBzeW0tPnZhbC5hbGlhcyk7Ci0gIHJldHVybiBz eW0tPnZhbC5hbGlhczsKKyAgZWFzc3VtZSAoc3ltLT51LnMucmVkaXJlY3QgPT0gU1lNQk9M X1ZBUkFMSUFTICYmIHN5bS0+dS5zLnZhbC5hbGlhcyk7CisgIHJldHVybiBzeW0tPnUucy52 YWwuYWxpYXM7CiB9CiBJTkxJTkUgc3RydWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVlICoK IFNZTUJPTF9CTFYgKHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltKQogewotICBlYXNzdW1lIChz eW0tPnJlZGlyZWN0ID09IFNZTUJPTF9MT0NBTElaRUQgJiYgc3ltLT52YWwuYmx2KTsKLSAg cmV0dXJuIHN5bS0+dmFsLmJsdjsKKyAgZWFzc3VtZSAoc3ltLT51LnMucmVkaXJlY3QgPT0g U1lNQk9MX0xPQ0FMSVpFRCAmJiBzeW0tPnUucy52YWwuYmx2KTsKKyAgcmV0dXJuIHN5bS0+ dS5zLnZhbC5ibHY7CiB9CiBJTkxJTkUgdW5pb24gTGlzcF9Gd2QgKgogU1lNQk9MX0ZXRCAo c3RydWN0IExpc3BfU3ltYm9sICpzeW0pCiB7Ci0gIGVhc3N1bWUgKHN5bS0+cmVkaXJlY3Qg PT0gU1lNQk9MX0ZPUldBUkRFRCAmJiBzeW0tPnZhbC5md2QpOwotICByZXR1cm4gc3ltLT52 YWwuZndkOworICBlYXNzdW1lIChzeW0tPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfRk9SV0FS REVEICYmIHN5bS0+dS5zLnZhbC5md2QpOworICByZXR1cm4gc3ltLT51LnMudmFsLmZ3ZDsK IH0KIAogSU5MSU5FIHZvaWQKQEAgLTE5MzUsMjYgKzE5NTAsMjYgQEAgSU5MSU5FIHZvaWQK IElOTElORSB2b2lkCiBTRVRfU1lNQk9MX0FMSUFTIChzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5 bSwgc3RydWN0IExpc3BfU3ltYm9sICp2KQogewotICBlYXNzdW1lIChzeW0tPnJlZGlyZWN0 ID09IFNZTUJPTF9WQVJBTElBUyAmJiB2KTsKLSAgc3ltLT52YWwuYWxpYXMgPSB2OworICBl YXNzdW1lIChzeW0tPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfVkFSQUxJQVMgJiYgdik7Cisg IHN5bS0+dS5zLnZhbC5hbGlhcyA9IHY7CiB9CiBJTkxJTkUgdm9pZAogU0VUX1NZTUJPTF9C TFYgKHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltLCBzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxf VmFsdWUgKnYpCiB7Ci0gIGVhc3N1bWUgKHN5bS0+cmVkaXJlY3QgPT0gU1lNQk9MX0xPQ0FM SVpFRCAmJiB2KTsKLSAgc3ltLT52YWwuYmx2ID0gdjsKKyAgZWFzc3VtZSAoc3ltLT51LnMu cmVkaXJlY3QgPT0gU1lNQk9MX0xPQ0FMSVpFRCAmJiB2KTsKKyAgc3ltLT51LnMudmFsLmJs diA9IHY7CiB9CiBJTkxJTkUgdm9pZAogU0VUX1NZTUJPTF9GV0QgKHN0cnVjdCBMaXNwX1N5 bWJvbCAqc3ltLCB1bmlvbiBMaXNwX0Z3ZCAqdikKIHsKLSAgZWFzc3VtZSAoc3ltLT5yZWRp cmVjdCA9PSBTWU1CT0xfRk9SV0FSREVEICYmIHYpOwotICBzeW0tPnZhbC5md2QgPSB2Owor ICBlYXNzdW1lIChzeW0tPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfRk9SV0FSREVEICYmIHYp OworICBzeW0tPnUucy52YWwuZndkID0gdjsKIH0KIAogSU5MSU5FIExpc3BfT2JqZWN0CiBT WU1CT0xfTkFNRSAoTGlzcF9PYmplY3Qgc3ltKQogewotICByZXR1cm4gWFNZTUJPTCAoc3lt KS0+bmFtZTsKKyAgcmV0dXJuIFhTWU1CT0wgKHN5bSktPnUucy5uYW1lOwogfQogCiAvKiBW YWx1ZSBpcyB0cnVlIGlmIFNZTSBpcyBhbiBpbnRlcm5lZCBzeW1ib2wuICAqLwpAQCAtMTk2 Miw3ICsxOTc3LDcgQEAgU1lNQk9MX05BTUUgKExpc3BfT2JqZWN0IHN5bSkKIElOTElORSBi b29sCiBTWU1CT0xfSU5URVJORURfUCAoTGlzcF9PYmplY3Qgc3ltKQogewotICByZXR1cm4g WFNZTUJPTCAoc3ltKS0+aW50ZXJuZWQgIT0gU1lNQk9MX1VOSU5URVJORUQ7CisgIHJldHVy biBYU1lNQk9MIChzeW0pLT51LnMuaW50ZXJuZWQgIT0gU1lNQk9MX1VOSU5URVJORUQ7CiB9 CiAKIC8qIFZhbHVlIGlzIHRydWUgaWYgU1lNIGlzIGludGVybmVkIGluIGluaXRpYWxfb2Jh cnJheS4gICovCkBAIC0xOTcwLDcgKzE5ODUsNyBAQCBTWU1CT0xfSU5URVJORURfUCAoTGlz cF9PYmplY3Qgc3ltKQogSU5MSU5FIGJvb2wKIFNZTUJPTF9JTlRFUk5FRF9JTl9JTklUSUFM X09CQVJSQVlfUCAoTGlzcF9PYmplY3Qgc3ltKQogewotICByZXR1cm4gWFNZTUJPTCAoc3lt KS0+aW50ZXJuZWQgPT0gU1lNQk9MX0lOVEVSTkVEX0lOX0lOSVRJQUxfT0JBUlJBWTsKKyAg cmV0dXJuIFhTWU1CT0wgKHN5bSktPnUucy5pbnRlcm5lZCA9PSBTWU1CT0xfSU5URVJORURf SU5fSU5JVElBTF9PQkFSUkFZOwogfQogCiAvKiBWYWx1ZSBpcyBub24temVybyBpZiBzeW1i b2wgY2Fubm90IGJlIGNoYW5nZWQgdGhyb3VnaCBhIHNpbXBsZSBzZXQsCkBAIC0yOTQ4LDcg KzI5NjMsNyBAQCBDSEVDS19OVU1CRVJfQ0RSIChMaXNwX09iamVjdCB4KQogI2lmZGVmIF9N U0NfVkVSCiAjZGVmaW5lIERFRlVOKGxuYW1lLCBmbm5hbWUsIHNuYW1lLCBtaW5hcmdzLCBt YXhhcmdzLCBpbnRzcGVjLCBkb2MpCVwKICAgIExpc3BfT2JqZWN0IGZubmFtZSBERUZVTl9B UkdTXyAjIyBtYXhhcmdzIDsJCQkJXAotICAgc3RhdGljIHN0cnVjdCBHQ0FMSUdORUQgTGlz cF9TdWJyIHNuYW1lID0JCQkJXAorICAgc3RhdGljIHN0cnVjdCBMaXNwX1N1YnIgc25hbWUg PQkJCQlcCiAgICB7IHsgKFBWRUNfU1VCUiA8PCBQU0VVRE9WRUNUT1JfQVJFQV9CSVRTKQkJ CQlcCiAgICAgICAgfCAoc2l6ZW9mIChzdHJ1Y3QgTGlzcF9TdWJyKSAvIHNpemVvZiAoRU1B Q1NfSU5UKSkgfSwJCVwKICAgICAgIHsgKExpc3BfT2JqZWN0IChfX2NkZWNsICopKHZvaWQp KWZubmFtZSB9LCAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI5NTYsNyArMjk3MSw3 IEBAIENIRUNLX05VTUJFUl9DRFIgKExpc3BfT2JqZWN0IHgpCiAgICBMaXNwX09iamVjdCBm bm5hbWUKICNlbHNlICAvKiBub3QgX01TQ19WRVIgKi8KICNkZWZpbmUgREVGVU4obG5hbWUs IGZubmFtZSwgc25hbWUsIG1pbmFyZ3MsIG1heGFyZ3MsIGludHNwZWMsIGRvYykJXAotICAg c3RhdGljIHN0cnVjdCBHQ0FMSUdORUQgTGlzcF9TdWJyIHNuYW1lID0JCQkJXAorICAgc3Rh dGljIHN0cnVjdCBMaXNwX1N1YnIgc25hbWUgPQkJCQlcCiAgICAgIHsgeyBQVkVDX1NVQlIg PDwgUFNFVURPVkVDVE9SX0FSRUFfQklUUyB9LAkJCQlcCiAgICAgICAgeyAuYSAjIyBtYXhh cmdzID0gZm5uYW1lIH0sCQkJCQlcCiAgICAgICAgbWluYXJncywgbWF4YXJncywgbG5hbWUs IGludHNwZWMsIDB9OwkJCQlcCkBAIC0zMjI0LDI1ICszMjM5LDI1IEBAIHNldF9oYXNoX3Zh bHVlX3Nsb3QgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsIHB0cmRpZmZfdCBpZHgsIExp c3BfT2JqZWN0IHZhbCkKIElOTElORSB2b2lkCiBzZXRfc3ltYm9sX2Z1bmN0aW9uIChMaXNw X09iamVjdCBzeW0sIExpc3BfT2JqZWN0IGZ1bmN0aW9uKQogewotICBYU1lNQk9MIChzeW0p LT5mdW5jdGlvbiA9IGZ1bmN0aW9uOworICBYU1lNQk9MIChzeW0pLT51LnMuZnVuY3Rpb24g PSBmdW5jdGlvbjsKIH0KIAogSU5MSU5FIHZvaWQKIHNldF9zeW1ib2xfcGxpc3QgKExpc3Bf T2JqZWN0IHN5bSwgTGlzcF9PYmplY3QgcGxpc3QpCiB7Ci0gIFhTWU1CT0wgKHN5bSktPnBs aXN0ID0gcGxpc3Q7CisgIFhTWU1CT0wgKHN5bSktPnUucy5wbGlzdCA9IHBsaXN0OwogfQog CiBJTkxJTkUgdm9pZAogc2V0X3N5bWJvbF9uZXh0IChMaXNwX09iamVjdCBzeW0sIHN0cnVj dCBMaXNwX1N5bWJvbCAqbmV4dCkKIHsKLSAgWFNZTUJPTCAoc3ltKS0+bmV4dCA9IG5leHQ7 CisgIFhTWU1CT0wgKHN5bSktPnUucy5uZXh0ID0gbmV4dDsKIH0KIAogSU5MSU5FIHZvaWQK IG1ha2Vfc3ltYm9sX2NvbnN0YW50IChMaXNwX09iamVjdCBzeW0pCiB7Ci0gIFhTWU1CT0wg KHN5bSktPnRyYXBwZWRfd3JpdGUgPSBTWU1CT0xfTk9XUklURTsKKyAgWFNZTUJPTCAoc3lt KS0+dS5zLnRyYXBwZWRfd3JpdGUgPSBTWU1CT0xfTk9XUklURTsKIH0KIAogLyogQnVmZmVy LWxvY2FsIHZhcmlhYmxlIGFjY2VzcyBmdW5jdGlvbnMuICAqLwpAQCAtMzI2Nyw3ICszMjgy LDcgQEAgc2V0X292ZXJsYXlfcGxpc3QgKExpc3BfT2JqZWN0IG92ZXJsYXksIExpc3BfT2Jq ZWN0IHBsaXN0KQogSU5MSU5FIElOVEVSVkFMCiBzdHJpbmdfaW50ZXJ2YWxzIChMaXNwX09i amVjdCBzKQogewotICByZXR1cm4gWFNUUklORyAocyktPmludGVydmFsczsKKyAgcmV0dXJu IFhTVFJJTkcgKHMpLT51LnMuaW50ZXJ2YWxzOwogfQogCiAvKiBTZXQgdGV4dCBwcm9wZXJ0 aWVzIG9mIFMgdG8gSS4gICovCkBAIC0zMjc1LDcgKzMyOTAsNyBAQCBzdHJpbmdfaW50ZXJ2 YWxzIChMaXNwX09iamVjdCBzKQogSU5MSU5FIHZvaWQKIHNldF9zdHJpbmdfaW50ZXJ2YWxz IChMaXNwX09iamVjdCBzLCBJTlRFUlZBTCBpKQogewotICBYU1RSSU5HIChzKS0+aW50ZXJ2 YWxzID0gaTsKKyAgWFNUUklORyAocyktPnUucy5pbnRlcnZhbHMgPSBpOwogfQogCiAvKiBT ZXQgYSBMaXNwIHNsb3QgaW4gVEFCTEUgdG8gVkFMLiAgTW9zdCBjb2RlIHNob3VsZCB1c2Ug dGhpcyBpbnN0ZWFkCkBAIC00NjAwLDIwICs0NjE1LDYgQEAgZW51bSB7IGRlZmluZWRfR0Nf Q0hFQ0tfU1RSSU5HX0JZVEVTID0gdHJ1ZSB9OwogZW51bSB7IGRlZmluZWRfR0NfQ0hFQ0tf U1RSSU5HX0JZVEVTID0gZmFsc2UgfTsKICNlbmRpZgogCi0vKiBTdHJ1Y3QgaW5zaWRlIHVu aW9ucyB0aGF0IGFyZSB0eXBpY2FsbHkgbm8gbGFyZ2VyIGFuZCBhbGlnbmVkIGVub3VnaC4g ICovCi0KLXVuaW9uIEFsaWduZWRfQ29ucwotewotICBzdHJ1Y3QgTGlzcF9Db25zIHM7Ci0g IGRvdWJsZSBkOyBpbnRtYXhfdCBpOyB2b2lkICpwOwotfTsKLQotdW5pb24gQWxpZ25lZF9T dHJpbmcKLXsKLSAgc3RydWN0IExpc3BfU3RyaW5nIHM7Ci0gIGRvdWJsZSBkOyBpbnRtYXhf dCBpOyB2b2lkICpwOwotfTsKLQogLyogVHJ1ZSBmb3Igc3RhY2stYmFzZWQgY29ucyBhbmQg c3RyaW5nIGltcGxlbWVudGF0aW9ucywgcmVzcGVjdGl2ZWx5LgogICAgVXNlIHN0YWNrLWJh c2VkIHN0cmluZ3Mgb25seSBpZiBzdGFjay1iYXNlZCBjb25zIGFsc28gd29ya3MuCiAgICBP dGhlcndpc2UsIFNUQUNLX0NPTlMgd291bGQgY3JlYXRlIGhlYXAtYmFzZWQgY29ucyBjZWxs cyB0aGF0CkBAIC00NjIxLDE4ICs0NjIyLDE2IEBAIHVuaW9uIEFsaWduZWRfU3RyaW5nCiAK IGVudW0KICAgewotICAgIFVTRV9TVEFDS19DT05TID0gKFVTRV9TVEFDS19MSVNQX09CSkVD VFMKLQkJICAgICAgJiYgYWxpZ25vZiAodW5pb24gQWxpZ25lZF9Db25zKSAlIEdDQUxJR05N RU5UID09IDApLAorICAgIFVTRV9TVEFDS19DT05TID0gVVNFX1NUQUNLX0xJU1BfT0JKRUNU UywKICAgICBVU0VfU1RBQ0tfU1RSSU5HID0gKFVTRV9TVEFDS19DT05TCi0JCQkmJiAhZGVm aW5lZF9HQ19DSEVDS19TVFJJTkdfQllURVMKLQkJCSYmIGFsaWdub2YgKHVuaW9uIEFsaWdu ZWRfU3RyaW5nKSAlIEdDQUxJR05NRU5UID09IDApCisJCQkmJiAhZGVmaW5lZF9HQ19DSEVD S19TVFJJTkdfQllURVMpCiAgIH07CiAKIC8qIEF1eGlsaWFyeSBtYWNyb3MgdXNlZCBmb3Ig YXV0byBhbGxvY2F0aW9uIG9mIExpc3Agb2JqZWN0cy4gIFBsZWFzZQogICAgdXNlIHRoZXNl IG9ubHkgaW4gbWFjcm9zIGxpa2UgQVVUT19DT05TIHRoYXQgZGVjbGFyZSBhIGxvY2FsCiAg ICB2YXJpYWJsZSB3aG9zZSBsaWZldGltZSB3aWxsIGJlIGNsZWFyIHRvIHRoZSBwcm9ncmFt bWVyLiAgKi8KICNkZWZpbmUgU1RBQ0tfQ09OUyhhLCBiKSBcCi0gIG1ha2VfbGlzcF9wdHIg KCYoKHVuaW9uIEFsaWduZWRfQ29ucykgeyB7IGEsIHsgYiB9IH0gfSkucywgTGlzcF9Db25z KQorICBtYWtlX2xpc3BfcHRyICgmKChzdHJ1Y3QgTGlzcF9Db25zKSB7e3thLCB7Yn19fX0p LCBMaXNwX0NvbnMpCiAjZGVmaW5lIEFVVE9fQ09OU19FWFBSKGEsIGIpIFwKICAgKFVTRV9T VEFDS19DT05TID8gU1RBQ0tfQ09OUyAoYSwgYikgOiBGY29ucyAoYSwgYikpCiAKQEAgLTQ2 NzgsNyArNDY3Nyw3IEBAIGVudW0KICAgTGlzcF9PYmplY3QgbmFtZSA9CQkJCQkJCVwKICAg ICAoVVNFX1NUQUNLX1NUUklORwkJCQkJCQlcCiAgICAgID8gKG1ha2VfbGlzcF9wdHIJCQkJ CQkJXAotCSgoJigodW5pb24gQWxpZ25lZF9TdHJpbmcpIHt7bGVuLCAtMSwgMCwgKHVuc2ln bmVkIGNoYXIgKikgKHN0cil9fSkucyksIFwKKwkoKCYoc3RydWN0IExpc3BfU3RyaW5nKSB7 e3tsZW4sIC0xLCAwLCAodW5zaWduZWQgY2hhciAqKSAoc3RyKX19fSksIFwKIAkgTGlzcF9T dHJpbmcpKQkJCQkJCQlcCiAgICAgIDogbWFrZV91bmlieXRlX3N0cmluZyAoc3RyLCBsZW4p KQogCmRpZmYgLS1naXQgYS9zcmMvbHJlYWQuYyBiL3NyYy9scmVhZC5jCmluZGV4IDMzZGE4 NjY3MjIuLmIwNTZmNGFhZjMgMTAwNjQ0Ci0tLSBhL3NyYy9scmVhZC5jCisrKyBiL3NyYy9s cmVhZC5jCkBAIC00MDQzLDE0ICs0MDQzLDE0IEBAIGludGVybl9zeW0gKExpc3BfT2JqZWN0 IHN5bSwgTGlzcF9PYmplY3Qgb2JhcnJheSwgTGlzcF9PYmplY3QgaW5kZXgpCiB7CiAgIExp c3BfT2JqZWN0ICpwdHI7CiAKLSAgWFNZTUJPTCAoc3ltKS0+aW50ZXJuZWQgPSAoRVEgKG9i YXJyYXksIGluaXRpYWxfb2JhcnJheSkKLQkJCSAgICAgPyBTWU1CT0xfSU5URVJORURfSU5f SU5JVElBTF9PQkFSUkFZCi0JCQkgICAgIDogU1lNQk9MX0lOVEVSTkVEKTsKKyAgWFNZTUJP TCAoc3ltKS0+dS5zLmludGVybmVkID0gKEVRIChvYmFycmF5LCBpbml0aWFsX29iYXJyYXkp CisJCQkJID8gU1lNQk9MX0lOVEVSTkVEX0lOX0lOSVRJQUxfT0JBUlJBWQorCQkJCSA6IFNZ TUJPTF9JTlRFUk5FRCk7CiAKICAgaWYgKFNSRUYgKFNZTUJPTF9OQU1FIChzeW0pLCAwKSA9 PSAnOicgJiYgRVEgKG9iYXJyYXksIGluaXRpYWxfb2JhcnJheSkpCiAgICAgewogICAgICAg bWFrZV9zeW1ib2xfY29uc3RhbnQgKHN5bSk7Ci0gICAgICBYU1lNQk9MIChzeW0pLT5yZWRp cmVjdCA9IFNZTUJPTF9QTEFJTlZBTDsKKyAgICAgIFhTWU1CT0wgKHN5bSktPnUucy5yZWRp cmVjdCA9IFNZTUJPTF9QTEFJTlZBTDsKICAgICAgIFNFVF9TWU1CT0xfVkFMIChYU1lNQk9M IChzeW0pLCBzeW0pOwogICAgIH0KIApAQCAtNDIwMywxNiArNDIwMywxNiBAQCB1c2FnZTog KHVuaW50ZXJuIE5BTUUgT0JBUlJBWSkgICovKQogICAvKiBpZiAoRVEgKHRlbSwgUW5pbCkg fHwgRVEgKHRlbSwgUXQpKQogICAgICAgIGVycm9yICgiQXR0ZW1wdCB0byB1bmludGVybiB0 IG9yIG5pbCIpOyAqLwogCi0gIFhTWU1CT0wgKHRlbSktPmludGVybmVkID0gU1lNQk9MX1VO SU5URVJORUQ7CisgIFhTWU1CT0wgKHRlbSktPnUucy5pbnRlcm5lZCA9IFNZTUJPTF9VTklO VEVSTkVEOwogCiAgIGhhc2ggPSBvYmxvb2t1cF9sYXN0X2J1Y2tldF9udW1iZXI7CiAKICAg aWYgKEVRIChBUkVGIChvYmFycmF5LCBoYXNoKSwgdGVtKSkKICAgICB7Ci0gICAgICBpZiAo WFNZTUJPTCAodGVtKS0+bmV4dCkKKyAgICAgIGlmIChYU1lNQk9MICh0ZW0pLT51LnMubmV4 dCkKIAl7CiAJICBMaXNwX09iamVjdCBzeW07Ci0JICBYU0VUU1lNQk9MIChzeW0sIFhTWU1C T0wgKHRlbSktPm5leHQpOworCSAgWFNFVFNZTUJPTCAoc3ltLCBYU1lNQk9MICh0ZW0pLT51 LnMubmV4dCk7CiAJICBBU0VUIChvYmFycmF5LCBoYXNoLCBzeW0pOwogCX0KICAgICAgIGVs c2UKQEAgLTQyMjMsMTMgKzQyMjMsMTMgQEAgdXNhZ2U6ICh1bmludGVybiBOQU1FIE9CQVJS QVkpICAqLykKICAgICAgIExpc3BfT2JqZWN0IHRhaWwsIGZvbGxvd2luZzsKIAogICAgICAg Zm9yICh0YWlsID0gQVJFRiAob2JhcnJheSwgaGFzaCk7Ci0JICAgWFNZTUJPTCAodGFpbCkt Pm5leHQ7CisJICAgWFNZTUJPTCAodGFpbCktPnUucy5uZXh0OwogCSAgIHRhaWwgPSBmb2xs b3dpbmcpCiAJewotCSAgWFNFVFNZTUJPTCAoZm9sbG93aW5nLCBYU1lNQk9MICh0YWlsKS0+ bmV4dCk7CisJICBYU0VUU1lNQk9MIChmb2xsb3dpbmcsIFhTWU1CT0wgKHRhaWwpLT51LnMu bmV4dCk7CiAJICBpZiAoRVEgKGZvbGxvd2luZywgdGVtKSkKIAkgICAgewotCSAgICAgIHNl dF9zeW1ib2xfbmV4dCAodGFpbCwgWFNZTUJPTCAoZm9sbG93aW5nKS0+bmV4dCk7CisJICAg ICAgc2V0X3N5bWJvbF9uZXh0ICh0YWlsLCBYU1lNQk9MIChmb2xsb3dpbmcpLT51LnMubmV4 dCk7CiAJICAgICAgYnJlYWs7CiAJICAgIH0KIAl9CkBAIC00MjY0LDEzICs0MjY0LDEzIEBA IG9ibG9va3VwIChMaXNwX09iamVjdCBvYmFycmF5LCByZWdpc3RlciBjb25zdCBjaGFyICpw dHIsIHB0cmRpZmZfdCBzaXplLCBwdHJkaWZmCiAgIGVsc2UgaWYgKCFTWU1CT0xQIChidWNr ZXQpKQogICAgIGVycm9yICgiQmFkIGRhdGEgaW4gZ3V0cyBvZiBvYmFycmF5Iik7IC8qIExp a2UgQ0FEUiBlcnJvciBtZXNzYWdlLiAgKi8KICAgZWxzZQotICAgIGZvciAodGFpbCA9IGJ1 Y2tldDsgOyBYU0VUU1lNQk9MICh0YWlsLCBYU1lNQk9MICh0YWlsKS0+bmV4dCkpCisgICAg Zm9yICh0YWlsID0gYnVja2V0OyA7IFhTRVRTWU1CT0wgKHRhaWwsIFhTWU1CT0wgKHRhaWwp LT51LnMubmV4dCkpCiAgICAgICB7CiAJaWYgKFNCWVRFUyAoU1lNQk9MX05BTUUgKHRhaWwp KSA9PSBzaXplX2J5dGUKIAkgICAgJiYgU0NIQVJTIChTWU1CT0xfTkFNRSAodGFpbCkpID09 IHNpemUKIAkgICAgJiYgIW1lbWNtcCAoU0RBVEEgKFNZTUJPTF9OQU1FICh0YWlsKSksIHB0 ciwgc2l6ZV9ieXRlKSkKIAkgIHJldHVybiB0YWlsOwotCWVsc2UgaWYgKFhTWU1CT0wgKHRh aWwpLT5uZXh0ID09IDApCisJZWxzZSBpZiAoWFNZTUJPTCAodGFpbCktPnUucy5uZXh0ID09 IDApCiAJICBicmVhazsKICAgICAgIH0KICAgWFNFVElOVCAodGVtLCBoYXNoKTsKQEAgLTQy OTAsOSArNDI5MCw5IEBAIG1hcF9vYmFycmF5IChMaXNwX09iamVjdCBvYmFycmF5LCB2b2lk ICgqZm4pIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpLCBMaXNwX09iCiAJd2hpbGUgKDEp CiAJICB7CiAJICAgICgqZm4pICh0YWlsLCBhcmcpOwotCSAgICBpZiAoWFNZTUJPTCAodGFp bCktPm5leHQgPT0gMCkKKwkgICAgaWYgKFhTWU1CT0wgKHRhaWwpLT51LnMubmV4dCA9PSAw KQogCSAgICAgIGJyZWFrOwotCSAgICBYU0VUU1lNQk9MICh0YWlsLCBYU1lNQk9MICh0YWls KS0+bmV4dCk7CisJICAgIFhTRVRTWU1CT0wgKHRhaWwsIFhTWU1CT0wgKHRhaWwpLT51LnMu bmV4dCk7CiAJICB9CiAgICAgfQogfQpAQCAtNDMzMiwxMiArNDMzMiwxMiBAQCBpbml0X29i YXJyYXkgKHZvaWQpCiAgIERFRlNZTSAoUW5pbCwgIm5pbCIpOwogICBTRVRfU1lNQk9MX1ZB TCAoWFNZTUJPTCAoUW5pbCksIFFuaWwpOwogICBtYWtlX3N5bWJvbF9jb25zdGFudCAoUW5p bCk7Ci0gIFhTWU1CT0wgKFFuaWwpLT5kZWNsYXJlZF9zcGVjaWFsID0gdHJ1ZTsKKyAgWFNZ TUJPTCAoUW5pbCktPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gdHJ1ZTsKIAogICBERUZTWU0g KFF0LCAidCIpOwogICBTRVRfU1lNQk9MX1ZBTCAoWFNZTUJPTCAoUXQpLCBRdCk7CiAgIG1h a2Vfc3ltYm9sX2NvbnN0YW50IChRdCk7Ci0gIFhTWU1CT0wgKFF0KS0+ZGVjbGFyZWRfc3Bl Y2lhbCA9IHRydWU7CisgIFhTWU1CT0wgKFF0KS0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSB0 cnVlOwogCiAgIC8qIFF0IGlzIGNvcnJlY3QgZXZlbiBpZiBDQU5OT1RfRFVNUC4gIGxvYWR1 cC5lbCB3aWxsIHNldCB0byBuaWwgYXQgZW5kLiAgKi8KICAgVnB1cmlmeV9mbGFnID0gUXQ7 CkBAIC00MzYxLDcgKzQzNjEsNyBAQCBkZWZhbGlhcyAoc3RydWN0IExpc3BfU3ViciAqc25h bWUsIGNoYXIgKnN0cmluZykKIHsKICAgTGlzcF9PYmplY3Qgc3ltOwogICBzeW0gPSBpbnRl cm4gKHN0cmluZyk7Ci0gIFhTRVRTVUJSIChYU1lNQk9MIChzeW0pLT5mdW5jdGlvbiwgc25h bWUpOworICBYU0VUU1VCUiAoWFNZTUJPTCAoc3ltKS0+dS5zLmZ1bmN0aW9uLCBzbmFtZSk7 CiB9CiAjZW5kaWYgLyogTk9UREVGICovCiAKQEAgLTQzNzYsOCArNDM3Niw4IEBAIGRlZnZh cl9pbnQgKHN0cnVjdCBMaXNwX0ludGZ3ZCAqaV9md2QsCiAgIHN5bSA9IGludGVybl9jX3N0 cmluZyAobmFtZXN0cmluZyk7CiAgIGlfZndkLT50eXBlID0gTGlzcF9Gd2RfSW50OwogICBp X2Z3ZC0+aW50dmFyID0gYWRkcmVzczsKLSAgWFNZTUJPTCAoc3ltKS0+ZGVjbGFyZWRfc3Bl Y2lhbCA9IDE7Ci0gIFhTWU1CT0wgKHN5bSktPnJlZGlyZWN0ID0gU1lNQk9MX0ZPUldBUkRF RDsKKyAgWFNZTUJPTCAoc3ltKS0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSB0cnVlOworICBY U1lNQk9MIChzeW0pLT51LnMucmVkaXJlY3QgPSBTWU1CT0xfRk9SV0FSREVEOwogICBTRVRf U1lNQk9MX0ZXRCAoWFNZTUJPTCAoc3ltKSwgKHVuaW9uIExpc3BfRndkICopaV9md2QpOwog fQogCkBAIC00MzkxLDggKzQzOTEsOCBAQCBkZWZ2YXJfYm9vbCAoc3RydWN0IExpc3BfQm9v bGZ3ZCAqYl9md2QsCiAgIHN5bSA9IGludGVybl9jX3N0cmluZyAobmFtZXN0cmluZyk7CiAg IGJfZndkLT50eXBlID0gTGlzcF9Gd2RfQm9vbDsKICAgYl9md2QtPmJvb2x2YXIgPSBhZGRy ZXNzOwotICBYU1lNQk9MIChzeW0pLT5kZWNsYXJlZF9zcGVjaWFsID0gMTsKLSAgWFNZTUJP TCAoc3ltKS0+cmVkaXJlY3QgPSBTWU1CT0xfRk9SV0FSREVEOworICBYU1lNQk9MIChzeW0p LT51LnMuZGVjbGFyZWRfc3BlY2lhbCA9IHRydWU7CisgIFhTWU1CT0wgKHN5bSktPnUucy5y ZWRpcmVjdCA9IFNZTUJPTF9GT1JXQVJERUQ7CiAgIFNFVF9TWU1CT0xfRldEIChYU1lNQk9M IChzeW0pLCAodW5pb24gTGlzcF9Gd2QgKiliX2Z3ZCk7CiAgIFZieXRlX2Jvb2xlYW5fdmFy cyA9IEZjb25zIChzeW0sIFZieXRlX2Jvb2xlYW5fdmFycyk7CiB9CkBAIC00NDEwLDggKzQ0 MTAsOCBAQCBkZWZ2YXJfbGlzcF9ub3BybyAoc3RydWN0IExpc3BfT2JqZndkICpvX2Z3ZCwK ICAgc3ltID0gaW50ZXJuX2Nfc3RyaW5nIChuYW1lc3RyaW5nKTsKICAgb19md2QtPnR5cGUg PSBMaXNwX0Z3ZF9PYmo7CiAgIG9fZndkLT5vYmp2YXIgPSBhZGRyZXNzOwotICBYU1lNQk9M IChzeW0pLT5kZWNsYXJlZF9zcGVjaWFsID0gMTsKLSAgWFNZTUJPTCAoc3ltKS0+cmVkaXJl Y3QgPSBTWU1CT0xfRk9SV0FSREVEOworICBYU1lNQk9MIChzeW0pLT51LnMuZGVjbGFyZWRf c3BlY2lhbCA9IHRydWU7CisgIFhTWU1CT0wgKHN5bSktPnUucy5yZWRpcmVjdCA9IFNZTUJP TF9GT1JXQVJERUQ7CiAgIFNFVF9TWU1CT0xfRldEIChYU1lNQk9MIChzeW0pLCAodW5pb24g TGlzcF9Gd2QgKilvX2Z3ZCk7CiB9CiAKQEAgLTQ0MzQsOCArNDQzNCw4IEBAIGRlZnZhcl9r Ym9hcmQgKHN0cnVjdCBMaXNwX0tib2FyZF9PYmpmd2QgKmtvX2Z3ZCwKICAgc3ltID0gaW50 ZXJuX2Nfc3RyaW5nIChuYW1lc3RyaW5nKTsKICAga29fZndkLT50eXBlID0gTGlzcF9Gd2Rf S2JvYXJkX09iajsKICAga29fZndkLT5vZmZzZXQgPSBvZmZzZXQ7Ci0gIFhTWU1CT0wgKHN5 bSktPmRlY2xhcmVkX3NwZWNpYWwgPSAxOwotICBYU1lNQk9MIChzeW0pLT5yZWRpcmVjdCA9 IFNZTUJPTF9GT1JXQVJERUQ7CisgIFhTWU1CT0wgKHN5bSktPnUucy5kZWNsYXJlZF9zcGVj aWFsID0gdHJ1ZTsKKyAgWFNZTUJPTCAoc3ltKS0+dS5zLnJlZGlyZWN0ID0gU1lNQk9MX0ZP UldBUkRFRDsKICAgU0VUX1NZTUJPTF9GV0QgKFhTWU1CT0wgKHN5bSksICh1bmlvbiBMaXNw X0Z3ZCAqKWtvX2Z3ZCk7CiB9CiAMCkBAIC00NzY5LDcgKzQ3NjksNyBAQCB0byBmaW5kIGFs bCB0aGUgc3ltYm9scyBpbiBhbiBvYmFycmF5LCB1c2UgYG1hcGF0b21zJy4gICovKTsKICAg REVGVkFSX0xJU1AgKCJ2YWx1ZXMiLCBWdmFsdWVzLAogCSAgICAgICBkb2M6IC8qIExpc3Qg b2YgdmFsdWVzIG9mIGFsbCBleHByZXNzaW9ucyB3aGljaCB3ZXJlIHJlYWQsIGV2YWx1YXRl ZCBhbmQgcHJpbnRlZC4KIE9yZGVyIGlzIHJldmVyc2UgY2hyb25vbG9naWNhbC4gICovKTsK LSAgWFNZTUJPTCAoaW50ZXJuICgidmFsdWVzIikpLT5kZWNsYXJlZF9zcGVjaWFsID0gMDsK KyAgWFNZTUJPTCAoaW50ZXJuICgidmFsdWVzIikpLT51LnMuZGVjbGFyZWRfc3BlY2lhbCA9 IHRydWU7CiAKICAgREVGVkFSX0xJU1AgKCJzdGFuZGFyZC1pbnB1dCIsIFZzdGFuZGFyZF9p bnB1dCwKIAkgICAgICAgZG9jOiAvKiBTdHJlYW0gZm9yIHJlYWQgdG8gZ2V0IGlucHV0IGZy b20uCmRpZmYgLS1naXQgYS9zcmMvbWluaWJ1Zi5jIGIvc3JjL21pbmlidWYuYwppbmRleCBh MmYzMzI0Zjk5Li45MTNjOTMwMDFlIDEwMDY0NAotLS0gYS9zcmMvbWluaWJ1Zi5jCisrKyBi L3NyYy9taW5pYnVmLmMKQEAgLTEyODAsOCArMTI4MCw4IEBAIGlzIHVzZWQgdG8gZnVydGhl ciBjb25zdHJhaW4gdGhlIHNldCBvZiBjYW5kaWRhdGVzLiAgKi8pCiAJCWVycm9yICgiQmFk IGRhdGEgaW4gZ3V0cyBvZiBvYmFycmF5Iik7CiAJICAgICAgZWx0ID0gYnVja2V0OwogCSAg ICAgIGVsdHN0cmluZyA9IGVsdDsKLQkgICAgICBpZiAoWFNZTUJPTCAoYnVja2V0KS0+bmV4 dCkKLQkJWFNFVFNZTUJPTCAoYnVja2V0LCBYU1lNQk9MIChidWNrZXQpLT5uZXh0KTsKKwkg ICAgICBpZiAoWFNZTUJPTCAoYnVja2V0KS0+dS5zLm5leHQpCisJCVhTRVRTWU1CT0wgKGJ1 Y2tldCwgWFNZTUJPTCAoYnVja2V0KS0+dS5zLm5leHQpOwogCSAgICAgIGVsc2UKIAkJWFNF VEZBU1RJTlQgKGJ1Y2tldCwgMCk7CiAJICAgIH0KQEAgLTE1MzMsOCArMTUzMyw4IEBAIHdp dGggYSBzcGFjZSBhcmUgaWdub3JlZCB1bmxlc3MgU1RSSU5HIGl0c2VsZiBzdGFydHMgd2l0 aCBhIHNwYWNlLiAgKi8pCiAJCWVycm9yICgiQmFkIGRhdGEgaW4gZ3V0cyBvZiBvYmFycmF5 Iik7CiAJICAgICAgZWx0ID0gYnVja2V0OwogCSAgICAgIGVsdHN0cmluZyA9IGVsdDsKLQkg ICAgICBpZiAoWFNZTUJPTCAoYnVja2V0KS0+bmV4dCkKLQkJWFNFVFNZTUJPTCAoYnVja2V0 LCBYU1lNQk9MIChidWNrZXQpLT5uZXh0KTsKKwkgICAgICBpZiAoWFNZTUJPTCAoYnVja2V0 KS0+dS5zLm5leHQpCisJCVhTRVRTWU1CT0wgKGJ1Y2tldCwgWFNZTUJPTCAoYnVja2V0KS0+ dS5zLm5leHQpOwogCSAgICAgIGVsc2UKIAkJWFNFVEZBU1RJTlQgKGJ1Y2tldCwgMCk7CiAJ ICAgIH0KQEAgLTE3NTQsOSArMTc1NCw5IEBAIHRoZSB2YWx1ZXMgU1RSSU5HLCBQUkVESUNB VEUgYW5kIGBsYW1iZGEnLiAgKi8pCiAJCQl0ZW0gPSB0YWlsOwogCQkJYnJlYWs7CiAJCSAg ICAgIH0KLQkJICAgIGlmIChYU1lNQk9MICh0YWlsKS0+bmV4dCA9PSAwKQorCQkgICAgaWYg KFhTWU1CT0wgKHRhaWwpLT51LnMubmV4dCA9PSAwKQogCQkgICAgICBicmVhazsKLQkJICAg IFhTRVRTWU1CT0wgKHRhaWwsIFhTWU1CT0wgKHRhaWwpLT5uZXh0KTsKKwkJICAgIFhTRVRT WU1CT0wgKHRhaWwsIFhTWU1CT0wgKHRhaWwpLT51LnMubmV4dCk7CiAJCSAgfQogCSAgICB9 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC5jIGIvc3JjL3RocmVhZC5jCmluZGV4IDcz MzU4MzNjZjkuLmMwM2NkZGEwZmEgMTAwNjQ0Ci0tLSBhL3NyYy90aHJlYWQuYworKysgYi9z cmMvdGhyZWFkLmMKQEAgLTI2LDcgKzI2LDcgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNs dWRlICJjb2RpbmcuaCIKICNpbmNsdWRlICJzeXNzaWduYWwuaCIKIAotc3RhdGljIHN0cnVj dCBHQ0FMSUdORUQgdGhyZWFkX3N0YXRlIG1haW5fdGhyZWFkOworc3RhdGljIHN0cnVjdCB0 aHJlYWRfc3RhdGUgbWFpbl90aHJlYWQ7CiAKIHN0cnVjdCB0aHJlYWRfc3RhdGUgKmN1cnJl bnRfdGhyZWFkID0gJm1haW5fdGhyZWFkOwogCmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBi L3NyYy94dGVybS5jCmluZGV4IGRiYjgzNDk0NTIuLmRkMTg0ZWVkZmMgMTAwNjQ0Ci0tLSBh L3NyYy94dGVybS5jCisrKyBiL3NyYy94dGVybS5jCkBAIC0xMjUwNCw3ICsxMjUwNCw3IEBA IHhfdGVybV9pbml0IChMaXNwX09iamVjdCBkaXNwbGF5X25hbWUsIGNoYXIgKnhybV9vcHRp b24sIGNoYXIgKnJlc291cmNlX25hbWUpCiAgICAgICB7CiAJdGVybWluYWwtPmtib2FyZCA9 IGFsbG9jYXRlX2tib2FyZCAoUXgpOwogCi0JaWYgKCFFUSAoWFNZTUJPTCAoUXZlbmRvcl9z cGVjaWZpY19rZXlzeW1zKS0+ZnVuY3Rpb24sIFF1bmJvdW5kKSkKKwlpZiAoIUVRIChYU1lN Qk9MIChRdmVuZG9yX3NwZWNpZmljX2tleXN5bXMpLT51LnMuZnVuY3Rpb24sIFF1bmJvdW5k KSkKIAkgIHsKIAkgICAgY2hhciAqdmVuZG9yID0gU2VydmVyVmVuZG9yIChkcHkpOwogCi0t IAoyLjEzLjYKCg== --------------584A9426F4356F81A19E89C9--