From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 08F2DEB64DD for ; Wed, 5 Jul 2023 06:05:17 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 83F8D817AD; Wed, 5 Jul 2023 06:05:17 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 83F8D817AD Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=CjcAEQBX X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Fkkl7tPvVW0A; Wed, 5 Jul 2023 06:05:15 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id AC3A181755; Wed, 5 Jul 2023 06:05:14 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org AC3A181755 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 82619C0071; Wed, 5 Jul 2023 06:05:14 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 123BFC0032 for ; Wed, 5 Jul 2023 06:05:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id D3C0E60F67 for ; Wed, 5 Jul 2023 06:05:12 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org D3C0E60F67 Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=CjcAEQBX X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z4HmP4yLiIar for ; Wed, 5 Jul 2023 06:05:10 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 91F0560F01 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 91F0560F01 for ; Wed, 5 Jul 2023 06:05:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688537109; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Tustr5gPRpQBeL8WPsDWkUUEop8vUIbOaoAArG+2MxA=; b=CjcAEQBXiGLGLOMc7MwMJTDc4CFDlEIbvRugIR2u8gxf5v+jd0UY7B0Mn3Awoc8wgYo7rE vigQRytS5aGhee2+FvMktUH+SIZ6ejV9YppeHWNH4hnbL5Rj3wiidOiFmyrl9GKjEoN6H9 tN5Ht8n/Xmu4jn/4Ovm59maA1qSux/g= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-67-1CqKHaYuN-WaSirFbQHXZA-1; Wed, 05 Jul 2023 02:05:07 -0400 X-MC-Unique: 1CqKHaYuN-WaSirFbQHXZA-1 Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-4fb76659d37so5874332e87.2 for ; Tue, 04 Jul 2023 23:05:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688537106; x=1691129106; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Tustr5gPRpQBeL8WPsDWkUUEop8vUIbOaoAArG+2MxA=; b=KBVDdjlcEBxsFWh+TcIuCln6+RZkXgnI2e5w3kxr00/YmL9FBQTY3oGrIk8/70H0n2 4gSPwd281gyuJBpDdWWxF+AZP3oeuAYD8oFDafSaoZCYqwMeACGBLmqROpL445N/uTDC kArB3iaJ26d2HiB03P3IqjW6KoN6xgkmCKzaUqO4M6lwo4jZe6Fx0d7JTi1c0K3vkWUD ZFSRyUbzwyUCSxlLupGP99W+iq08im2nnQGTbass9W1OIQY4gN1cBQpcKpyXOnuDIj/q WsDM1QJTT2EjwRERWW8wB4CxysJDLAn4UMGHcS3kWd1Sxq0JW3tTD0MGXX/9kTWPEbmp Sdhw== X-Gm-Message-State: ABy/qLa9VMP2og/6y2az3UOdQcZKVmTCVo+WUuHAL+Z8MUzZKdvVPAEf OJQW7H7APgVFtFlgCqxpQzYEWEuLqWY+sug+7Bmuf8VpjD5ssDhoxCJHljkBEsfeoOg3dxdL7H+ egWAuacbfl3C0pyS4JJavJjL3Fd+Jkh+/sT/sOzp92ptAg/ObKauagkIO5A== X-Received: by 2002:a2e:9b97:0:b0:2b6:a19e:5168 with SMTP id z23-20020a2e9b97000000b002b6a19e5168mr10884916lji.39.1688537106152; Tue, 04 Jul 2023 23:05:06 -0700 (PDT) X-Google-Smtp-Source: APBJJlFnYHyxxdSqJv4AbxQqqnpccMG9QDjCDJOmRNq2VoqJvGaVBrFv6WT2PqUSYFv6GEMSm1IvtGtxYdHjOmYbnOo= X-Received: by 2002:a2e:9b97:0:b0:2b6:a19e:5168 with SMTP id z23-20020a2e9b97000000b002b6a19e5168mr10884875lji.39.1688537105355; Tue, 04 Jul 2023 23:05:05 -0700 (PDT) MIME-Version: 1.0 References: <20230526054621.18371-1-liangchen.linux@gmail.com> <20230526054621.18371-2-liangchen.linux@gmail.com> <20230528021708-mutt-send-email-mst@kernel.org> <20230529055439-mutt-send-email-mst@kernel.org> <20230607161724-mutt-send-email-mst@kernel.org> In-Reply-To: From: Jason Wang Date: Wed, 5 Jul 2023 14:04:53 +0800 Message-ID: Subject: Re: [PATCH net-next 2/5] virtio_net: Add page_pool support to improve performance To: Liang Chen X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Cc: xuanzhuo@linux.alibaba.com, "Michael S. Tsirkin" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, alexander.duyck@gmail.com, virtualization@lists.linux-foundation.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gV2VkLCBKdWwgNSwgMjAyMyBhdCAxOjQx4oCvUE0gTGlhbmcgQ2hlbiA8bGlhbmdjaGVuLmxp bnV4QGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiBPbiBGcmksIEp1biA5LCAyMDIzIGF0IDEwOjU34oCv QU0gTGlhbmcgQ2hlbiA8bGlhbmdjaGVuLmxpbnV4QGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ID4g T24gVGh1LCBKdW4gOCwgMjAyMyBhdCA4OjM44oCvQU0gSmFzb24gV2FuZyA8amFzb3dhbmdAcmVk aGF0LmNvbT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIFRodSwgSnVuIDgsIDIwMjMgYXQgNDoxN+KA r0FNIE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gPiA+Cj4g PiA+ID4gT24gV2VkLCBKdW4gMDcsIDIwMjMgYXQgMDU6MDg6NTlQTSArMDgwMCwgTGlhbmcgQ2hl biB3cm90ZToKPiA+ID4gPiA+IE9uIFR1ZSwgTWF5IDMwLCAyMDIzIGF0IDk6MTnigK9BTSBMaWFu ZyBDaGVuIDxsaWFuZ2NoZW4ubGludXhAZ21haWwuY29tPiB3cm90ZToKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gT24gTW9uLCBNYXkgMjksIDIwMjMgYXQgNTo1NeKAr1BNIE1pY2hhZWwgUy4gVHNp cmtpbiA8bXN0QHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g T24gTW9uLCBNYXkgMjksIDIwMjMgYXQgMDM6Mjc6NTZQTSArMDgwMCwgTGlhbmcgQ2hlbiB3cm90 ZToKPiA+ID4gPiA+ID4gPiA+IE9uIFN1biwgTWF5IDI4LCAyMDIzIGF0IDI6MjDigK9QTSBNaWNo YWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+ID4gT24gRnJpLCBNYXkgMjYsIDIwMjMgYXQgMDE6NDY6MThQTSArMDgw MCwgTGlhbmcgQ2hlbiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGUgaW1wbGVtZW50YXRp b24gYXQgdGhlIG1vbWVudCB1c2VzIG9uZSBwYWdlIHBlciBwYWNrZXQgaW4gYm90aCB0aGUKPiA+ ID4gPiA+ID4gPiA+ID4gPiBub3JtYWwgYW5kIFhEUCBwYXRoLiBJbiBhZGRpdGlvbiwgaW50cm9k dWNpbmcgYSBtb2R1bGUgcGFyYW1ldGVyIHRvIGVuYWJsZQo+ID4gPiA+ID4gPiA+ID4gPiA+IG9y IGRpc2FibGUgdGhlIHVzYWdlIG9mIHBhZ2UgcG9vbCAoZGlzYWJsZWQgYnkgZGVmYXVsdCkuCj4g PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBJbiBzaW5nbGUtY29yZSB2bSB0 ZXN0aW5nIGVudmlyb25tZW50cywgaXQgZ2l2ZXMgYSBtb2Rlc3QgcGVyZm9ybWFuY2UgZ2Fpbgo+ ID4gPiA+ID4gPiA+ID4gPiA+IGluIHRoZSBub3JtYWwgcGF0aC4KPiA+ID4gPiA+ID4gPiA+ID4g PiAgIFVwc3RyZWFtIGNvZGViYXNlOiA0Ny41IEdiaXRzL3NlYwo+ID4gPiA+ID4gPiA+ID4gPiA+ ICAgVXBzdHJlYW0gY29kZWJhc2UgKyBwYWdlX3Bvb2wgc3VwcG9ydDogNTAuMiBHYml0cy9zZWMK PiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEluIG11bHRpLWNvcmUgdm0g dGVzdGluZyBlbnZpcm9ubWVudHMsIFRoZSBtb3N0IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlCj4g PiA+ID4gPiA+ID4gPiA+ID4gZ2FpbiBpcyBvYnNlcnZlZCBpbiBYRFAgY3B1bWFwOgo+ID4gPiA+ ID4gPiA+ID4gPiA+ICAgVXBzdHJlYW0gY29kZWJhc2U6IDEuMzggR2JpdHMvc2VjCj4gPiA+ID4g PiA+ID4gPiA+ID4gICBVcHN0cmVhbSBjb2RlYmFzZSArIHBhZ2VfcG9vbCBzdXBwb3J0OiA5Ljc0 IEdiaXRzL3NlYwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gV2l0aCB0 aGlzIGZvdW5kYXRpb24sIHdlIGNhbiBmdXJ0aGVyIGludGVncmF0ZSBwYWdlIHBvb2wgZnJhZ21l bnRhdGlvbiBhbmQKPiA+ID4gPiA+ID4gPiA+ID4gPiBETUEgbWFwL3VubWFwIHN1cHBvcnQuCj4g PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMaWFu ZyBDaGVuIDxsaWFuZ2NoZW4ubGludXhAZ21haWwuY29tPgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gPiBXaHkgb2ZmIGJ5IGRlZmF1bHQ/Cj4gPiA+ID4gPiA+ID4gPiA+IEkgYW0g Z3Vlc3NpbmcgaXQgc29tZXRpbWVzIGhhcyBwZXJmb3JtYW5jZSBjb3N0cyB0b28/Cj4gPiA+ID4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+IFdoYXQgaGFwcGVu cyBpZiB3ZSB1c2UgcGFnZSBwb29sIGZvciBiaWcgbW9kZSB0b28/Cj4gPiA+ID4gPiA+ID4gPiA+ IFRoZSBsZXNzIG1vZGVzIHdlIGhhdmUgdGhlIGJldHRlci4uLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IFN1cmUsIG5v dyBJIGJlbGlldmUgaXQgbWFrZXMgc2Vuc2UgdG8gZW5hYmxlIGl0IGJ5IGRlZmF1bHQuIFdoZW4g dGhlCj4gPiA+ID4gPiA+ID4gPiBwYWNrZXQgc2l6ZSBpcyB2ZXJ5IHNtYWxsLCBpdCByZWR1Y2Vz IHRoZSBsaWtlbGlob29kIG9mIHNrYgo+ID4gPiA+ID4gPiA+ID4gY29hbGVzY2luZy4gQnV0IHN1 Y2ggY2FzZXMgYXJlIHJhcmUuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBzbWFsbCBwYWNr ZXRzIGFyZSByYXJlPyBUaGVzZSB3b3JrbG9hZHMgYXJlIGVhc3kgdG8gY3JlYXRlIGFjdHVhbGx5 Lgo+ID4gPiA+ID4gPiA+IFBscyB0cnkgYW5kIGluY2x1ZGUgYmVuY2htYXJrIHdpdGggc21hbGwg cGFja2V0IHNpemUuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gU3VyZSwg VGhhbmtzIQo+ID4gPiA+ID4KPiA+ID4gPiA+IEJlZm9yZSBnb2luZyBhaGVhZCBhbmQgcG9zdGlu ZyB2MiBwYXRjaCwgSSB3b3VsZCBsaWtlIHRvIGhlYXIgbW9yZQo+ID4gPiA+ID4gYWR2aWNlIGZv ciB0aGUgY2FzZXMgb2Ygc21hbGwgcGFja2V0cy4gSSBoYXZlIGRvbmUgbW9yZSBwZXJmb3JtYW5j ZQo+ID4gPiA+ID4gYmVuY2htYXJrIHdpdGggc21hbGwgcGFja2V0cyBzaW5jZSB0aGVuLiBIZXJl IGlzIGEgbGlzdCBvZiBpcGVyZgo+ID4gPiA+ID4gb3V0cHV0LAo+ID4gPiA+ID4KPiA+ID4gPiA+ IFdpdGggUFAgYW5kIFBQIGZyYWdtZW50aW5nOgo+ID4gPiA+ID4gMjU2SzogICBbICA1XSA1MDUu MDAtNTEwLjAwIHNlYyAgMS4zNCBHQnl0ZXMgIDIuMzEgR2JpdHMvc2VjICAgIDAgICAgMTQ0IEtC eXRlcwo+ID4gPiA+ID4gMUs6ICAgICAgIFsgIDVdICAzMC4wMC0zNS4wMCAgc2VjICA0LjYzIEdC eXRlcyAgNy45NSBHYml0cy9zZWMgICAgMAo+ID4gPiA+ID4gMjIzIEtCeXRlcwo+ID4gPiA+ID4g Mks6ICAgICAgIFsgIDVdICA2NS4wMC03MC4wMCAgc2VjICA4LjMzIEdCeXRlcyAgMTQuMyBHYml0 cy9zZWMgICAgMAo+ID4gPiA+ID4gMzI0IEtCeXRlcwo+ID4gPiA+ID4gNEs6ICAgICAgIFsgIDVd ICAzMC4wMC0zNS4wMCAgc2VjICAxMy4zIEdCeXRlcyAgMjIuOCBHYml0cy9zZWMgICAgMAo+ID4g PiA+ID4gMS4wOCBNQnl0ZXMKPiA+ID4gPiA+IDhLOiAgICAgICBbICA1XSAgNTAuMDAtNTUuMDAg IHNlYyAgMTguOSBHQnl0ZXMgIDMyLjQgR2JpdHMvc2VjICAgIDAKPiA+ID4gPiA+IDc0NCBLQnl0 ZXMKPiA+ID4gPiA+IDE2SzogICAgIFsgIDVdICAyNS4wMC0zMC4wMCAgc2VjICAyNC42IEdCeXRl cyAgNDIuMyBHYml0cy9zZWMgICAgMCAgICA5NjMgS0J5dGVzCj4gPiA+ID4gPiAzMks6ICAgICBb ICA1XSAgNDUuMDAtNTAuMDAgIHNlYyAgMjkuOCBHQnl0ZXMgIDUxLjIgR2JpdHMvc2VjICAgIDAg ICAxLjI1IE1CeXRlcwo+ID4gPiA+ID4gNjRLOiAgICAgWyAgNV0gIDM1LjAwLTQwLjAwICBzZWMg IDM0LjAgR0J5dGVzICA1OC40IEdiaXRzL3NlYyAgICAwICAgMS43MCBNQnl0ZXMKPiA+ID4gPiA+ IDEyOEs6ICAgWyAgNV0gIDQ1LjAwLTUwLjAwICBzZWMgIDM2LjcgR0J5dGVzICA2My4xIEdiaXRz L3NlYyAgICAwICAgNC4yNiBNQnl0ZXMKPiA+ID4gPiA+IDI1Nks6ICAgWyAgNV0gIDMwLjAwLTM1 LjAwICBzZWMgIDQwLjAgR0J5dGVzICA2OC44IEdiaXRzL3NlYyAgICAwICAgMy4yMCBNQnl0ZXMK PiA+ID4KPiA+ID4gTm90ZSB0aGF0IHZpcnRpby1uZXQgZHJpdmVyIGlzIGxhY2tpbmcgdGhpbmdz IGxpa2UgQlFMIGFuZCBvdGhlcnMsIHNvCj4gPiA+IGl0IG1pZ2h0IHN1ZmZlciBmcm9tIGJ1ZmZl ciBibG9hdCBmb3IgVENQIHBlcmZvcm1hbmNlLiBXb3VsZCB5b3UgbWluZAo+ID4gPiB0byBtZWFz dXJlIHdpdGggZS5nIHVzaW5nIHRlc3RwbWQgb24gdGhlIHZob3N0IHRvIHNlZSB0aGUgcnggUFBT Pwo+ID4gPgo+ID4KPiA+IE5vIHByb2JsZW0uIEJlZm9yZSB3ZSBwcm9jZWVkIHRvIG1lYXN1cmUg d2l0aCB0ZXN0cG1kLCBjb3VsZCB5b3UKPiA+IHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgUFBT IG1lYXN1cmVtZW50cyB3ZSBvYnRhaW5lZCBwcmV2aW91c2x5IGFuZAo+ID4gc2VlIGlmIHRoZXkg YXJlIHN1ZmZpY2llbnQ/IFRob3VnaCB3ZSB3aWxsIG9ubHkgdXRpbGl6ZSBwYWdlIHBvb2wgZm9y Cj4gPiB4ZHAgb24gdjIuCj4gPgo+ID4gbmV0cGVyZiAtSCAxOTIuMTY4LjEyNC4xOTcgLXAgNDQ0 NCAtdCBVRFBfU1RSRUFNIC1sIDAgLS0gLW0gJCgoMSkpCj4gPgo+ID4gd2l0aCBwYWdlIHBvb2w6 Cj4gPiAxLgo+ID4gQXZlcmFnZTogICAgICAgIElGQUNFICAgcnhwY2svcyAgIHR4cGNrL3MgICAg cnhrQi9zICAgIHR4a0Ivcwo+ID4gcnhjbXAvcyAgIHR4Y21wL3MgIHJ4bWNzdC9zICAgJWlmdXRp bAo+ID4gQXZlcmFnZTogICAgICAgZW5wOHMwIDY1NTA5Mi4yNyAgICAgIDAuMzUgIDI3NTA4Ljc3 ICAgICAgMC4wMwo+ID4gMC4wMCAgICAgIDAuMDAgICAgICAwLjAwICAgICAgMC4wMAo+ID4gMi4K PiA+IEF2ZXJhZ2U6ICAgICAgICBJRkFDRSAgIHJ4cGNrL3MgICB0eHBjay9zICAgIHJ4a0IvcyAg ICB0eGtCL3MKPiA+IHJ4Y21wL3MgICB0eGNtcC9zICByeG1jc3QvcyAgICVpZnV0aWwKPiA+IEF2 ZXJhZ2U6ICAgICAgIGVucDhzMCA2NTQ3NDkuODcgICAgICAwLjYzICAyNzQ5NC40MiAgICAgIDAu MDUKPiA+IDAuMDAgICAgICAwLjAwICAgICAgMC4wMCAgICAgIDAuMDAKPiA+IDMuCj4gPiBBdmVy YWdlOiAgICAgICAgSUZBQ0UgICByeHBjay9zICAgdHhwY2svcyAgICByeGtCL3MgICAgdHhrQi9z Cj4gPiByeGNtcC9zICAgdHhjbXAvcyAgcnhtY3N0L3MgICAlaWZ1dGlsCj4gPiBBdmVyYWdlOiAg ICAgICBlbnA4czAgNjU0MjMwLjQwICAgICAgMC4xMCAgMjc0NzIuNTcgICAgICAwLjAxCj4gPiAw LjAwICAgICAgMC4wMCAgICAgIDAuMDAgICAgICAwLjAwCj4gPiA0Lgo+ID4gQXZlcmFnZTogICAg ICAgIElGQUNFICAgcnhwY2svcyAgIHR4cGNrL3MgICAgcnhrQi9zICAgIHR4a0Ivcwo+ID4gcnhj bXAvcyAgIHR4Y21wL3MgIHJ4bWNzdC9zICAgJWlmdXRpbAo+ID4gQXZlcmFnZTogICAgICAgZW5w OHMwIDY1NjY2MS4zMyAgICAgIDAuMTUgIDI3NTc0LjY1ICAgICAgMC4wMQo+ID4gMC4wMCAgICAg IDAuMDAgICAgICAwLjAwICAgICAgMC4wMAo+ID4KPiA+Cj4gPiB3aXRob3V0IHBhZ2UgcG9vbDoK PiA+IDEuCj4gPiBBdmVyYWdlOiAgICAgICAgSUZBQ0UgICByeHBjay9zICAgdHhwY2svcyAgICBy eGtCL3MgICAgdHhrQi9zCj4gPiByeGNtcC9zICAgdHhjbXAvcyAgcnhtY3N0L3MgICAlaWZ1dGls Cj4gPiBBdmVyYWdlOiAgICAgICBlbnA4czAgNjQ2NTE1LjIwICAgICAgMC40NyAgMjcxNDguNjAg ICAgICAwLjA0Cj4gPiAwLjAwICAgICAgMC4wMCAgICAgIDAuMDAgICAgICAwLjAwCj4gPiAyLgo+ ID4gQXZlcmFnZTogICAgICAgIElGQUNFICAgcnhwY2svcyAgIHR4cGNrL3MgICAgcnhrQi9zICAg IHR4a0Ivcwo+ID4gcnhjbXAvcyAgIHR4Y21wL3MgIHJ4bWNzdC9zICAgJWlmdXRpbAo+ID4gQXZl cmFnZTogICAgICAgZW5wOHMwIDY1Mzg3NC4xMyAgICAgIDAuMTggIDI3NDU3LjYxICAgICAgMC4w Mgo+ID4gMC4wMCAgICAgIDAuMDAgICAgICAwLjAwICAgICAgMC4wMAo+ID4gMy4KPiA+IEF2ZXJh Z2U6ICAgICAgICBJRkFDRSAgIHJ4cGNrL3MgICB0eHBjay9zICAgIHJ4a0IvcyAgICB0eGtCL3MK PiA+IHJ4Y21wL3MgICB0eGNtcC9zICByeG1jc3QvcyAgICVpZnV0aWwKPiA+IEF2ZXJhZ2U6ICAg ICAgIGVucDhzMCA2NDcyNDYuOTMgICAgICAwLjE1ICAyNzE3OS4zMiAgICAgIDAuMDEKPiA+IDAu MDAgICAgICAwLjAwICAgICAgMC4wMCAgICAgIDAuMDAKPiA+IDQuCj4gPiBBdmVyYWdlOiAgICAg ICAgSUZBQ0UgICByeHBjay9zICAgdHhwY2svcyAgICByeGtCL3MgICAgdHhrQi9zCj4gPiByeGNt cC9zICAgdHhjbXAvcyAgcnhtY3N0L3MgICAlaWZ1dGlsCj4gPiBBdmVyYWdlOiAgICAgICBlbnA4 czAgNjUwNjI1LjA3ICAgICAgMC4yNyAgMjczMjEuMTggICAgICAwLjAyCj4gPiAwLjAwICAgICAg MC4wMCAgICAgIDAuMDAgICAgICAwLjAwCj4gPgo+ID4KPiA+ICg2NTUwOTIrNjU0NzQ5KzY1NDIz MCs2NTY2NjEpLyg2NDY1MTUrNjUzODc0KzY0NzI0Nis2NTA2MjUpID0KPiA+IDEuMDA4NjQ4ODY1 MDA5NjYwMzExMTMKPiA+IE9uIGF2ZXJhZ2UgaXQgZ2l2ZXMgYXJvdW5kIDAuOCUgaW5jcmVhc2Ug aW4gUFBTLCBhbmQgdGhpcyBmaWd1cmUgY2FuCj4gPiBiZSByZXByb2R1Y2VkIGNvbnNpc3RlbnRs eS4KPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gV2l0aG91dCBQUDoKPiA+ID4gPiA+IDI1NjogICAg IFsgIDVdIDY4MC4wMC02ODUuMDAgc2VjICAxLjU3IEdCeXRlcyAgMi42OSBHYml0cy9zZWMgICAg MCAgICAzNTkgS0J5dGVzCj4gPiA+ID4gPiAxSzogICAgICBbICA1XSAgNzUuMDAtODAuMDAgIHNl YyAgNS40NyBHQnl0ZXMgIDkuNDAgR2JpdHMvc2VjICAgIDAgICAgNzMwIEtCeXRlcwo+ID4gPiA+ ID4gMks6ICAgICAgWyAgNV0gIDY1LjAwLTcwLjAwICBzZWMgIDkuNDYgR0J5dGVzICAxNi4yIEdi aXRzL3NlYyAgICAwICAgMS45OSBNQnl0ZXMKPiA+ID4gPiA+IDRLOiAgICAgIFsgIDVdICAzMC4w MC0zNS4wMCAgc2VjICAxNC41IEdCeXRlcyAgMjUuMCBHYml0cy9zZWMgICAgMCAgIDEuMjAgTUJ5 dGVzCj4gPiA+ID4gPiA4SzogICAgICBbICA1XSAgNDUuMDAtNTAuMDAgIHNlYyAgMTkuOSBHQnl0 ZXMgIDM0LjEgR2JpdHMvc2VjICAgIDAgICAxLjcyIE1CeXRlcwo+ID4gPiA+ID4gMTZLOiAgICBb ICA1XSAgIDUuMDAtMTAuMDAgIHNlYyAgMjMuOCBHQnl0ZXMgIDQwLjkgR2JpdHMvc2VjICAgIDAg ICAyLjkwIE1CeXRlcwo+ID4gPiA+ID4gMzJLOiAgICBbICA1XSAgMTUuMDAtMjAuMDAgIHNlYyAg MjguMCBHQnl0ZXMgIDQ4LjEgR2JpdHMvc2VjICAgIDAgICAzLjAzIE1CeXRlcwo+ID4gPiA+ID4g NjRLOiAgICBbICA1XSAgNjAuMDAtNjUuMDAgIHNlYyAgMzEuOCBHQnl0ZXMgIDU0LjYgR2JpdHMv c2VjICAgIDAgICAzLjA1IE1CeXRlcwo+ID4gPiA+ID4gMTI4SzogIFsgIDVdICA0NS4wMC01MC4w MCAgc2VjICAzMy4wIEdCeXRlcyAgNTYuNiBHYml0cy9zZWMgICAgMSAgIDMuMDMgTUJ5dGVzCj4g PiA+ID4gPiAyNTZLOiAgWyAgNV0gIDI1LjAwLTMwLjAwICBzZWMgIDM0LjcgR0J5dGVzICA1OS42 IEdiaXRzL3NlYyAgICAwICAgMy4xMSBNQnl0ZXMKPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ ID4gVGhlIG1ham9yIGZhY3RvciBjb250cmlidXRpbmcgdG8gdGhlIHBlcmZvcm1hbmNlIGRyb3Ag aXMgdGhlIHJlZHVjdGlvbgo+ID4gPiA+ID4gb2Ygc2tiIGNvYWxlc2NpbmcuIEFkZGl0aW9uYWxs eSwgd2l0aG91dCB0aGUgcGFnZSBwb29sLCBzbWFsbCBwYWNrZXRzCj4gPiA+ID4gPiBjYW4gc3Rp bGwgYmVuZWZpdCBmcm9tIHRoZSBhbGxvY2F0aW9uIG9mIDggY29udGludW91cyBwYWdlcyBieQo+ ID4gPiA+ID4gYnJlYWtpbmcgdGhlbSBkb3duIGludG8gc21hbGxlciBwaWVjZXMuIFRoaXMgZWZm ZWN0aXZlbHkgcmVkdWNlcyB0aGUKPiA+ID4gPiA+IGZyZXF1ZW5jeSBvZiBwYWdlIGFsbG9jYXRp b24gZnJvbSB0aGUgYnVkZHkgc3lzdGVtLiBGb3IgaW5zdGFuY2UsIHRoZQo+ID4gPiA+ID4gYXJy aXZhbCBvZiAzMiAxSyBwYWNrZXRzIG9ubHkgdHJpZ2dlcnMgb25lIGFsbG9jX3BhZ2UgY2FsbC4g VGhlcmVmb3JlLAo+ID4gPiA+ID4gdGhlIGJlbmVmaXRzIG9mIHVzaW5nIGEgcGFnZSBwb29sIGFy ZSBsaW1pdGVkIGluIHN1Y2ggY2FzZXMuCj4gPiA+Cj4gPiA+IEkgd29uZGVyIGlmIHdlIGNhbiBp bXByb3ZlIHBhZ2UgcG9vbCBpbiB0aGlzIGNhc2UgYW55aG93Lgo+ID4gPgo+ID4KPiA+IFdlIHdv dWxkIGxpa2UgdG8gbWFrZSB0aGUgZWZmb3J0IHRvIGVuaGFuY2Ugc2tiIGNvYWxlY3NpbmcgdG8g YmUgbW9yZQo+ID4gZnJpZW5kbHkgd2l0aCBwYWdlIHBvb2wgYnVmZmVycy4gQnV0IHRoYXQgaW52 b2x2ZXMgbW9kaWZpY2F0aW9ucyB0bwo+ID4gc29tZSBjb3JlIGRhdGEgc3RydWN0dXJlIG9mIG1t Lgo+ID4KPiA+Cj4KPiBKdXN0IHRvIGdpdmUgYW4gdXBkYXRlIG9uIHRoZSBzdGF0dXMgb2YgdjIg cHJvZ3Jlc3MuIFdlIGhhdmUKPiBpZGVudGlmaWVkIHRoZSBzcGVjaWZpYyBzaXR1YXRpb24gd2hl cmUgc2tiIGNvYWxlc2NpbmcgaXMgYWZmZWN0ZWQgYnkKPiBwYWdlIHBvb2wgYW5kIHNtYWxsIHBh Y2tldHMuIEluIHN1bW1hcnksIGl0IHdhcyBiZWNhdXNlLCBpbiBvdXIKPiBlbnZpcm9ubWVudCAo RmVkb3JhIDM3IGRlZmF1bHQgbmV0d29yayBzZXR1cCksIE5ldHdvcmtNYW5hZ2VyIGNyZWF0ZXMK PiBhIFNPQ0tfREdSQU0gc29ja2V0LCB3aGljaCBldmVudHVhbGx5IHJlc3VsdHMgaW4gc2ticyBi ZWluZyBjbG9uZWQsCj4gdGh1cyBjYXVzaW5nIHRoZSBmYWlsdXJlIG9mIHNrYiBjb2FsZXNjaW5n Lgo+Cj4gV2hpbGUgaXQgYWZmZWN0cyBzbWFsbCBwYWNrZXQgcGVyZm9ybWFuY2UgaW4gb3VyIGVu dmlyb25tZW50LCBpdAo+IGRvZXNuJ3QgbmVjZXNzYXJpbHkgaGF2ZSB0aGUgc2FtZSBpbXBhY3Qg Zm9yIG90aGVyIHVzZXJzLgo+IE5ldmVydGhlbGVzcywgd2UgYXJlIHRyeWluZyB0byBtYWtlIGFu IG9wdGltaXphdGlvbiB0byBhbGxvdyBza2IKPiBjb2FsZXNjaW5nIGluIHRoYXQgc2l0dWF0aW9u LiBJdCBtYXkgdGFrZSBzb21lIHRpbWUgYXMgd2UgYXJlIGFkdmlzZWQKPiB0byB3YWl0IGZvciBz b21lIHJlbGV2YW50IHByaW9yIHBhdGNoZXMgdG8gbGFuZCBmaXJzdC4KPiAoaHR0cHM6Ly9wYXRj aHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L25ldGRldmJwZi9wYXRjaC8yMDIzMDYyODEyMTE1MC40 Nzc3OC0xLWxpYW5nY2hlbi5saW51eEBnbWFpbC5jb20vKQoKSWYgaXQncyBub3QgdG9vIGxhdGUs IEkgd291bGQgbGlrZSB0byBiZSBjb3BpZWQgaW4gdGhlIG5leHQgdmVyc2lvbiBvZgp0aGlzLiAo U2luY2UgaXQgc2VlbXMgdG8gYmUgc3VnZ2VzdGVkIGJ5IG1lKS4KCj4KPiBJbiBhZGRpdGlvbiwg aWYgc21hbGwgcGFja2V0IHBlcmZvcm1hbmNlIGlzIG5vdCBkcm9wcGluZyBhbnltb3JlLAo+IHBl cmhhcHMgd2UgY2FuIGVuYWJsZSBwYWdlIHBvb2wgZm9yIHRoZSBub3JtYWwgcGF0aCBhcyB3ZWxs LgoKSXQgd291bGQgYmUgc2ltcGxlciBpZiB3ZSBzdGFydCBmcm9tIFhEUCBhbmQgbm9ybWFsIG9u IHRvcC4gQnV0IGl0J3MKeW91ciBjYWxsIGFueXdheS4KClRoYW5rcwoKPgo+Cj4gVGhhbmtzLAo+ IExpYW5nCj4KPgo+Cj4gPiA+ID4gSW4gZmFjdCwKPiA+ID4gPiA+IHdpdGhvdXQgcGFnZSBwb29s IGZyYWdtZW50aW5nIGVuYWJsZWQsIGl0IGNhbiBldmVuIGhpbmRlciBwZXJmb3JtYW5jZQo+ID4g PiA+ID4gZnJvbSB0aGlzIHBlcnNwZWN0aXZlLgo+ID4gPiA+ID4KPiA+ID4gPiA+IFVwb24gZnVy dGhlciBjb25zaWRlcmF0aW9uLCBJIHRlbmQgdG8gYmVsaWV2ZSBtYWtpbmcgcGFnZSBwb29sIHRo ZQo+ID4gPiA+ID4gZGVmYXVsdCBvcHRpb24gbWF5IG5vdCBiZSBhcHByb3ByaWF0ZS4gQXMgeW91 IHBvaW50ZWQgb3V0LCB3ZSBjYW5ub3QKPiA+ID4gPiA+IHNpbXBseSBpZ25vcmUgdGhlIHBlcmZv cm1hbmNlIGltcGFjdCBvbiBzbWFsbCBwYWNrZXRzLiBBbnkgY29tbWVudHMgb24KPiA+ID4gPiA+ IHRoaXMgd2lsbCBiZSBtdWNoIGFwcHJlY2lhdGVkLgo+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBUaGFua3MsCj4gPiA+ID4gPiBMaWFuZwo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBTbywg bGV0J3Mgb25seSB1c2UgcGFnZSBwb29sIGZvciBYRFAgdGhlbj8KPiA+ID4KPiA+ID4gKzEKPiA+ ID4KPiA+ID4gV2UgY2FuIHN0YXJ0IGZyb20gdGhpcy4KPiA+ID4KPiA+ID4gVGhhbmtzCj4gPiA+ Cj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGUgdXNhZ2Ugb2YgcGFnZSBwb29s IGZvciBiaWcgbW9kZSBpcyBiZWluZyBldmFsdWF0ZWQgbm93LiBUaGFua3MhCj4gPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJz L25ldC92aXJ0aW9fbmV0LmMgfCAxODggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tCj4gPiA+ID4gPiA+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxNDYgaW5zZXJ0aW9u cygrKSwgNDIgZGVsZXRpb25zKC0pCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQv dmlydGlvX25ldC5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggYzVkY2EwZDkyZTY0Li45OWMw Y2EwYzE3ODEgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvdmly dGlvX25ldC5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvX25l dC5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTMxLDYgKzMxLDkgQEAgbW9kdWxlX3BhcmFtKGNz dW0sIGJvb2wsIDA0NDQpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICBtb2R1bGVfcGFyYW0oZ3NvLCBi b29sLCAwNDQ0KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgbW9kdWxlX3BhcmFtKG5hcGlfdHgsIGJv b2wsIDA2NDQpOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gK3N0YXRp YyBib29sIHBhZ2VfcG9vbF9lbmFibGVkOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICttb2R1bGVfcGFy YW0ocGFnZV9wb29sX2VuYWJsZWQsIGJvb2wsIDA0MDApOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ID4gPiAgLyogRklYTUU6IE1UVSBpbiBjb25maWcuICovCj4gPiA+ID4g PiA+ID4gPiA+ID4gICNkZWZpbmUgR09PRF9QQUNLRVRfTEVOIChFVEhfSExFTiArIFZMQU5fSExF TiArIEVUSF9EQVRBX0xFTikKPiA+ID4gPiA+ID4gPiA+ID4gPiAgI2RlZmluZSBHT09EX0NPUFlf TEVOICAgICAgICAxMjgKPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTU5LDYgKzE2Miw5IEBAIHN0 cnVjdCByZWNlaXZlX3F1ZXVlIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAvKiBDaGFpbiBw YWdlcyBieSB0aGUgcHJpdmF0ZSBwdHIuICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgc3Ry dWN0IHBhZ2UgKnBhZ2VzOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgLyogUGFnZSBwb29sICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgc3RydWN0IHBh Z2VfcG9vbCAqcGFnZV9wb29sOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICAvKiBBdmVyYWdlIHBhY2tldCBsZW5ndGggZm9yIG1lcmdlYWJsZSByZWNlaXZl IGJ1ZmZlcnMuICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgc3RydWN0IGV3bWFfcGt0X2xl biBtcmdfYXZnX3BrdF9sZW47Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4g PiBAQCAtNDU5LDYgKzQ2NSwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRuZXRfYnVp bGRfc2tiKHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IGJ1ZmxlbiwKPiA+ID4gPiA+ID4gPiA+ID4g PiAgICAgICByZXR1cm4gc2tiOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgdmlydG5ldF9wdXRfcGFnZShz dHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEsIHN0cnVjdCBwYWdlICpwYWdlKQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgaWYgKHJxLT5wYWdlX3Bvb2wpCj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBwYWdlX3Bvb2xfcHV0X2Z1bGxfcGFnZShy cS0+cGFnZV9wb29sLCBwYWdlLCB0cnVlKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICBlbHNl Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiA+ID4g PiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4g PiAgLyogQ2FsbGVkIGZyb20gYm90dG9tIGhhbGYgY29udGV4dCAqLwo+ID4gPiA+ID4gPiA+ID4g PiA+ICBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhZ2VfdG9fc2tiKHN0cnVjdCB2aXJ0bmV0X2lu Zm8gKnZpLAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwKPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtNTU1 LDcgKzU2OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGFnZV90b19za2Ioc3RydWN0IHZp cnRuZXRfaW5mbyAqdmksCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgaGRyID0gc2tiX3ZuZXRf aGRyKHNrYik7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgbWVtY3B5KGhkciwgaGRyX3AsIGhk cl9sZW4pOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGlmIChwYWdlX3RvX2ZyZWUpCj4gPiA+ ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICBwdXRfcGFnZShwYWdlX3RvX2ZyZWUpOwo+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZV90 b19mcmVlKTsKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIHJl dHVybiBza2I7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAt ODAyLDcgKzgxNiw3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF94ZHBfeG1pdChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4g PiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IC1z dGF0aWMgdm9pZCBwdXRfeGRwX2ZyYWdzKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKQo+ID4gPiA+ID4g PiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBwdXRfeGRwX2ZyYWdzKHN0cnVjdCB4ZHBfYnVmZiAqeGRw LCBzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpCj4gPiA+ID4gPiA+ID4gPiA+ID4gIHsKPiA+ID4g PiA+ID4gPiA+ID4gPiAgICAgICBzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvICpzaGluZm87Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gICAgICAgc3RydWN0IHBhZ2UgKnhkcF9wYWdlOwo+ID4gPiA+ID4gPiA+ ID4gPiA+IEBAIC04MTIsNyArODI2LDcgQEAgc3RhdGljIHZvaWQgcHV0X3hkcF9mcmFncyhzdHJ1 Y3QgeGRwX2J1ZmYgKnhkcCkKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHNoaW5m byA9IHhkcF9nZXRfc2hhcmVkX2luZm9fZnJvbV9idWZmKHhkcCk7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2hpbmZvLT5ucl9mcmFnczsgaSsrKSB7 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIHhkcF9wYWdlID0gc2ti X2ZyYWdfcGFnZSgmc2hpbmZvLT5mcmFnc1tpXSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgIHB1dF9wYWdlKHhkcF9wYWdlKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgeGRwX3BhZ2UpOwo+ID4g PiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAg IH0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC05MDMsNyAr OTE3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqeGRwX2xpbmVhcml6ZV9wYWdlKHN0cnVjdCBy ZWNlaXZlX3F1ZXVlICpycSwKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBpZiAocGFnZV9vZmYg KyAqbGVuICsgdGFpbHJvb20gPiBQQUdFX1NJWkUpCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAg ICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g PiA+IC0gICAgIHBhZ2UgPSBhbGxvY19wYWdlKEdGUF9BVE9NSUMpOwo+ID4gPiA+ID4gPiA+ID4g PiA+ICsgICAgIGlmIChycS0+cGFnZV9wb29sKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMocnEtPnBhZ2VfcG9vbCk7Cj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgZWxzZQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0FUT01JQyk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGlmICghcGFnZSkKPiA+ID4gPiA+ID4gPiA+ID4g PiAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gPiA+ID4gQEAgLTkyNiwyMSArOTQ0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqeGRw X2xpbmVhcml6ZV9wYWdlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwKPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICAgICAgICAgICAqIGlzIHNlbmRpbmcgcGFja2V0IGxhcmdlciB0aGFuIHRoZSBN VFUuCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgKi8KPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICAgICAgICAgIGlmICgocGFnZV9vZmYgKyBidWZsZW4gKyB0YWlscm9vbSkgPiBQ QUdFX1NJWkUpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgcHV0 X3BhZ2UocCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHZpcnRu ZXRfcHV0X3BhZ2UocnEsIHApOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGVycl9idWY7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICB9Cj4g PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIG1lbWNw eShwYWdlX2FkZHJlc3MocGFnZSkgKyBwYWdlX29mZiwKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICBwYWdlX2FkZHJlc3MocCkgKyBvZmYsIGJ1Zmxlbik7Cj4gPiA+ID4g PiA+ID4gPiA+ID4gICAgICAgICAgICAgICBwYWdlX29mZiArPSBidWZsZW47Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICBwdXRfcGFnZShwKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHApOwo+ID4gPiA+ID4gPiA+ID4gPiA+ ICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIC8q IEhlYWRyb29tIGRvZXMgbm90IGNvbnRyaWJ1dGUgdG8gcGFja2V0IGxlbmd0aCAqLwo+ID4gPiA+ ID4gPiA+ID4gPiA+ICAgICAgICpsZW4gPSBwYWdlX29mZiAtIFZJUlRJT19YRFBfSEVBRFJPT007 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgcmV0dXJuIHBhZ2U7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gIGVycl9idWY6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgX19mcmVlX3BhZ2VzKHBhZ2Us IDApOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgIGlmIChycS0+cGFnZV9wb29sKQo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgcGFnZV9wb29sX3B1dF9mdWxsX3BhZ2UocnEtPnBh Z2VfcG9vbCwgcGFnZSwgdHJ1ZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgZWxzZQo+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgX19mcmVlX3BhZ2VzKHBhZ2UsIDApOwo+ID4g PiA+ID4gPiA+ID4gPiA+ICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICB9 Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTE0NCw3ICsxMTY1 LDcgQEAgc3RhdGljIHZvaWQgbWVyZ2VhYmxlX2J1Zl9mcmVlKHN0cnVjdCByZWNlaXZlX3F1ZXVl ICpycSwgaW50IG51bV9idWYsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICB9Cj4g PiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBzdGF0cy0+Ynl0ZXMgKz0gbGVuOwo+ID4g PiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgcGFnZSA9IHZpcnRfdG9faGVhZF9wYWdlKGJ1 Zik7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiA+ ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHBhZ2Up Owo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTEyNjQsNyArMTI4NSw3IEBA IHN0YXRpYyBpbnQgdmlydG5ldF9idWlsZF94ZHBfYnVmZl9tcmcoc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGN1cl9mcmFnX3NpemUgPSB0 cnVlc2l6ZTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHhkcF9mcmFnc190cnVl c3ogKz0gY3VyX2ZyYWdfc2l6ZTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGlm ICh1bmxpa2VseShsZW4gPiB0cnVlc2l6ZSAtIHJvb20gfHwgY3VyX2ZyYWdfc2l6ZSA+IFBBR0Vf U0laRSkpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgcHV0X3Bh Z2UocGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHZpcnRu ZXRfcHV0X3BhZ2UocnEsIHBhZ2UpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICBwcl9kZWJ1ZygiJXM6IHJ4IGVycm9yOiBsZW4gJXUgZXhjZWVkcyB0cnVlc2l6ZSAl bHVcbiIsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRldi0+bmFtZSwgbGVuLCAodW5zaWduZWQgbG9uZykodHJ1ZXNpemUgLSByb29tKSk7Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIGRldi0+c3RhdHMucnhfbGVuZ3Ro X2Vycm9ycysrOwo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xMjgzLDcgKzEzMDQsNyBAQCBzdGF0 aWMgaW50IHZpcnRuZXRfYnVpbGRfeGRwX2J1ZmZfbXJnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+ID4gPiAgZXJyOgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgIHB1dF94 ZHBfZnJhZ3MoeGRwKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICBwdXRfeGRwX2ZyYWdzKHhk cCwgcnEpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBA QCAtMTM0NCw3ICsxMzY1LDEwIEBAIHN0YXRpYyB2b2lkICptZXJnZWFibGVfeGRwX2dldF9idWYo c3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICBpZiAoKmxlbiArIHhkcF9yb29tID4gUEFHRV9TSVpFKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgeGRwX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9B VE9NSUMpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHJxLT5wYWdlX3Bv b2wpCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHhkcF9wYWdlID0g cGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhycS0+cGFnZV9wb29sKTsKPiA+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgIGVsc2UKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgeGRwX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9BVE9NSUMpOwo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgaWYgKCF4ZHBfcGFnZSkKPiA+ID4gPiA+ID4gPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTM1NCw3ICsxMzc4LDcgQEAgc3RhdGljIHZvaWQgKm1lcmdl YWJsZV94ZHBfZ2V0X2J1ZihzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwKPiA+ID4gPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICpmcmFtZV9zeiA9IFBBR0VfU0laRTsKPiA+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgIHB1dF9wYWdlKCpwYWdl KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICB2aXJ0bmV0X3B1dF9wYWdlKHJxLCAqcGFnZSk7 Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAqcGFnZSA9IHhk cF9wYWdlOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTE0MDAs NiArMTQyNCw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFibGVfeGRw KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICBoZWFkX3NrYiA9IGJ1aWxkX3NrYl9mcm9tX3hkcF9idWZmKGRldiwgdmksICZ4ZHAsIHhkcF9m cmFnc190cnVlc3opOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgaWYgKHVubGlr ZWx5KCFoZWFkX3NrYikpCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHJxLT5wYWdlX3Bv b2wpCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNrYl9tYXJrX2Zv cl9yZWN5Y2xlKGhlYWRfc2tiKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHJl dHVybiBoZWFkX3NrYjsKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgIGNhc2UgWERQX1RYOgo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xNDEwLDEwICsxNDM2LDEw IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFibGVfeGRwKHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBicmVhazsK PiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+ID4gPiAtICAgICBwdXRfeGRwX2ZyYWdzKCZ4ZHApOwo+ID4gPiA+ID4gPiA+ID4gPiA+ ICsgICAgIHB1dF94ZHBfZnJhZ3MoJnhkcCwgcnEpOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gIGVycl94ZHA6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgcHV0X3Bh Z2UocGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgdmlydG5ldF9wdXRfcGFnZShycSwg cGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgbWVyZ2VhYmxlX2J1Zl9mcmVlKHJxLCBu dW1fYnVmLCBkZXYsIHN0YXRzKTsKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g PiA+ICAgICAgIHN0YXRzLT54ZHBfZHJvcHMrKzsKPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTQ2 Nyw2ICsxNDkzLDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpyZWNlaXZlX21lcmdlYWJsZShz dHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGhlYWRfc2ti ID0gcGFnZV90b19za2IodmksIHJxLCBwYWdlLCBvZmZzZXQsIGxlbiwgdHJ1ZXNpemUsIGhlYWRy b29tKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBjdXJyX3NrYiA9IGhlYWRfc2tiOwo+ID4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgaWYgKHJxLT5wYWdlX3Bv b2wpCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBza2JfbWFya19mb3JfcmVjeWNs ZShjdXJyX3NrYik7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgIGlmICh1bmxpa2VseSghY3Vycl9za2IpKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgZ290byBlcnJfc2tiOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIHdoaWxlICgtLW51 bV9idWYpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTUwOSw2ICsxNTM4LDggQEAgc3RhdGlj IHN0cnVjdCBza19idWZmICpyZWNlaXZlX21lcmdlYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3NrYiA9IG5z a2I7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIGhlYWRfc2tiLT50 cnVlc2l6ZSArPSBuc2tiLT50cnVlc2l6ZTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgbnVtX3NrYl9mcmFncyA9IDA7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGlmIChycS0+cGFnZV9wb29sKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKGN1cnJfc2ti KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4g PiAgICAgICAgICAgICAgIGlmIChjdXJyX3NrYiAhPSBoZWFkX3NrYikgewo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBoZWFkX3NrYi0+ZGF0YV9sZW4gKz0gbGVuOwo+ ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xNTE3LDcgKzE1NDgsNyBAQCBzdGF0aWMgc3RydWN0IHNr X2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4g PiA+ID4gPiA+ID4gICAgICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICBvZmZzZXQgPSBidWYgLSBwYWdlX2FkZHJlc3MocGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICBpZiAoc2tiX2Nhbl9jb2FsZXNjZShjdXJyX3NrYiwgbnVtX3NrYl9m cmFncywgcGFnZSwgb2Zmc2V0KSkgewo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgIHNrYl9jb2FsZXNjZV9yeF9mcmFnKGN1cnJfc2tiLCBudW1f c2tiX2ZyYWdzIC0gMSwKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGVuLCB0cnVlc2l6ZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xNTMwLDcgKzE1 NjEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgcmV0dXJuIGhlYWRfc2ti Owo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gIGVycl9za2I6Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gLSAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAg ICAgbWVyZ2VhYmxlX2J1Zl9mcmVlKHJxLCBudW1fYnVmLCBkZXYsIHN0YXRzKTsKPiA+ID4gPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICBlcnJfYnVmOgo+ID4gPiA+ID4gPiA+ID4g PiA+IEBAIC0xNzM3LDMxICsxNzY4LDQwIEBAIHN0YXRpYyBpbnQgYWRkX3JlY3ZidWZfbWVyZ2Vh YmxlKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAq IGRpc2FibGVkIEdTTyBmb3IgWERQLCBpdCB3b24ndCBiZSBhIGJpZyBpc3N1ZS4KPiA+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICAgKi8KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBsZW4gPSBnZXRf bWVyZ2VhYmxlX2J1Zl9sZW4ocnEsICZycS0+bXJnX2F2Z19wa3RfbGVuLCByb29tKTsKPiA+ID4g PiA+ID4gPiA+ID4gPiAtICAgICBpZiAodW5saWtlbHkoIXNrYl9wYWdlX2ZyYWdfcmVmaWxsKGxl biArIHJvb20sIGFsbG9jX2ZyYWcsIGdmcCkpKQo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAg ICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgaWYgKHJxLT5w YWdlX3Bvb2wpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIHN0cnVjdCBwYWdl ICpwYWdlOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgYnVm ID0gKGNoYXIgKilwYWdlX2FkZHJlc3MoYWxsb2NfZnJhZy0+cGFnZSkgKyBhbGxvY19mcmFnLT5v ZmZzZXQ7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgYnVmICs9IGhlYWRyb29tOyAvKiBhZHZh bmNlIGFkZHJlc3MgbGVhdmluZyBob2xlIGF0IGZyb250IG9mIHBrdCAqLwo+ID4gPiA+ID4gPiA+ ID4gPiA+IC0gICAgIGdldF9wYWdlKGFsbG9jX2ZyYWctPnBhZ2UpOwo+ID4gPiA+ID4gPiA+ID4g PiA+IC0gICAgIGFsbG9jX2ZyYWctPm9mZnNldCArPSBsZW4gKyByb29tOwo+ID4gPiA+ID4gPiA+ ID4gPiA+IC0gICAgIGhvbGUgPSBhbGxvY19mcmFnLT5zaXplIC0gYWxsb2NfZnJhZy0+b2Zmc2V0 Owo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgIGlmIChob2xlIDwgbGVuICsgcm9vbSkgewo+ID4g PiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgLyogVG8gYXZvaWQgaW50ZXJuYWwgZnJhZ21l bnRhdGlvbiwgaWYgdGhlcmUgaXMgdmVyeSBsaWtlbHkgbm90Cj4gPiA+ID4gPiA+ID4gPiA+ID4g LSAgICAgICAgICAgICAgKiBlbm91Z2ggc3BhY2UgZm9yIGFub3RoZXIgYnVmZmVyLCBhZGQgdGhl IHJlbWFpbmluZyBzcGFjZSB0bwo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICog dGhlIGN1cnJlbnQgYnVmZmVyLgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICog WERQIGNvcmUgYXNzdW1lcyB0aGF0IGZyYW1lX3NpemUgb2YgeGRwX2J1ZmYgYW5kIHRoZSBsZW5n dGgKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAqIG9mIHRoZSBmcmFnIGFyZSBQ QUdFX1NJWkUsIHNvIHdlIGRpc2FibGUgdGhlIGhvbGUgbWVjaGFuaXNtLgo+ID4gPiA+ID4gPiA+ ID4gPiA+IC0gICAgICAgICAgICAgICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAg ICBpZiAoIWhlYWRyb29tKQo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICBsZW4gKz0gaG9sZTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgIGFsbG9jX2Zy YWctPm9mZnNldCArPSBob2xlOwo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgIH0KPiA+ID4gPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgIHBhZ2UgPSBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2Vz KHJxLT5wYWdlX3Bvb2wpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHVu bGlrZWx5KCFwYWdlKSkKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBidWYgPSAo Y2hhciAqKXBhZ2VfYWRkcmVzcyhwYWdlKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgIGJ1ZiArPSBoZWFkcm9vbTsgLyogYWR2YW5jZSBhZGRyZXNzIGxlYXZpbmcgaG9sZSBhdCBm cm9udCBvZiBwa3QgKi8KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICB9IGVsc2Ugewo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFza2JfcGFnZV9mcmFnX3Jl ZmlsbChsZW4gKyByb29tLCBhbGxvY19mcmFnLCBnZnApKSkKPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGJ1ZiA9IChjaGFyICopcGFnZV9hZGRy ZXNzKGFsbG9jX2ZyYWctPnBhZ2UpICsgYWxsb2NfZnJhZy0+b2Zmc2V0Owo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgYnVmICs9IGhlYWRyb29tOyAvKiBhZHZhbmNlIGFkZHJlc3Mg bGVhdmluZyBob2xlIGF0IGZyb250IG9mIHBrdCAqLwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgZ2V0X3BhZ2UoYWxsb2NfZnJhZy0+cGFnZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICBhbGxvY19mcmFnLT5vZmZzZXQgKz0gbGVuICsgcm9vbTsKPiA+ID4gPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgIGhvbGUgPSBhbGxvY19mcmFnLT5zaXplIC0gYWxsb2Nf ZnJhZy0+b2Zmc2V0Owo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKGhvbGUg PCBsZW4gKyByb29tKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IC8qIFRvIGF2b2lkIGludGVybmFsIGZyYWdtZW50YXRpb24sIGlmIHRoZXJlIGlzIHZlcnkgbGlr ZWx5IG5vdAo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKiBlbm91 Z2ggc3BhY2UgZm9yIGFub3RoZXIgYnVmZmVyLCBhZGQgdGhlIHJlbWFpbmluZyBzcGFjZSB0bwo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgY3VycmVudCBi dWZmZXIuCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqIFhEUCBj b3JlIGFzc3VtZXMgdGhhdCBmcmFtZV9zaXplIG9mIHhkcF9idWZmIGFuZCB0aGUgbGVuZ3RoCj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqIG9mIHRoZSBmcmFnIGFy ZSBQQUdFX1NJWkUsIHNvIHdlIGRpc2FibGUgdGhlIGhvbGUgbWVjaGFuaXNtLgo+ID4gPiA+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKi8KPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkcm9vbSkKPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0gaG9sZTsKPiA+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgYWxsb2NfZnJhZy0+b2Zmc2V0ICs9IGhvbGU7Cj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIHNnX2luaXRfb25lKHJxLT5zZywgYnVmLCBs ZW4pOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGN0eCA9IG1lcmdlYWJsZV9sZW5fdG9fY3R4 KGxlbiArIHJvb20sIGhlYWRyb29tKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBlcnIgPSB2 aXJ0cXVldWVfYWRkX2luYnVmX2N0eChycS0+dnEsIHJxLT5zZywgMSwgYnVmLCBjdHgsIGdmcCk7 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgaWYgKGVyciA8IDApCj4gPiA+ID4gPiA+ID4gPiA+ ID4gLSAgICAgICAgICAgICBwdXRfcGFnZSh2aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsKPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHZpcnRfdG9f aGVhZF9wYWdlKGJ1ZikpOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgcmV0dXJuIGVycjsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4g PiA+IEBAIC0xOTk0LDggKzIwMzQsMTUgQEAgc3RhdGljIGludCB2aXJ0bmV0X2VuYWJsZV9xdWV1 ZV9wYWlyKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLCBpbnQgcXBfaW5kZXgpCj4gPiA+ID4gPiA+ ID4gPiA+ID4gICAgICAgaWYgKGVyciA8IDApCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4g LSAgICAgZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnZpLT5ycVtxcF9pbmRleF0u eGRwX3J4cSwKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNRU1fVFlQRV9QQUdFX1NIQVJFRCwgTlVMTCk7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgaWYgKHZpLT5ycVtxcF9pbmRleF0ucGFnZV9wb29sKQo+ID4gPiA+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnZpLT5y cVtxcF9pbmRleF0ueGRwX3J4cSwKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FTV9UWVBFX1BBR0VfUE9PTCwKPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZpLT5ycVtxcF9pbmRleF0ucGFnZV9wb29sKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAg ICBlbHNlCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBlcnIgPSB4ZHBfcnhxX2lu Zm9fcmVnX21lbV9tb2RlbCgmdmktPnJxW3FwX2luZGV4XS54ZHBfcnhxLAo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVN X1RZUEVfUEFHRV9TSEFSRUQsCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgaWYgKGVyciA8IDApCj4gPiA+ID4gPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICBnb3RvIGVycl94ZHBfcmVnX21lbV9tb2RlbDsKPiA+ID4gPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0yOTUxLDYgKzI5OTgsNyBAQCBzdGF0aWMg dm9pZCB2aXJ0bmV0X2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBzdHJp bmdzZXQsIHU4ICpkYXRhKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV0aHRvb2xfc3ByaW50ZigmcCwgInR4X3F1ZXVlXyV1XyVzIiwgaSwKPiA+ID4g PiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmlydG5ldF9zcV9zdGF0c19kZXNjW2pdLmRlc2MpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgcGFnZV9wb29s X2V0aHRvb2xfc3RhdHNfZ2V0X3N0cmluZ3MocCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAg ICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICB9Cj4gPiA+ID4gPiA+ID4g PiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMjk2MiwxMiArMzAxMCwzMCBAQCBzdGF0 aWMgaW50IHZpcnRuZXRfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50 IHNzZXQpCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgc3dpdGNoIChzc2V0KSB7Cj4gPiA+ID4g PiA+ID4gPiA+ID4gICAgICAgY2FzZSBFVEhfU1NfU1RBVFM6Cj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICByZXR1cm4gdmktPmN1cnJfcXVldWVfcGFpcnMgKiAoVklSVE5FVF9SUV9T VEFUU19MRU4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZJUlRORVRfU1FfU1RBVFNfTEVOKTsKPiA+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSVJUTkVU X1NRX1NUQVRTX0xFTiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlX3Bvb2xfZW5hYmxlZCAmJiB2aS0+bWVyZ2Vh YmxlX3J4X2J1ZnMgPwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0X2NvdW50 KCkgOiAwKSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgZGVmYXVsdDoKPiA+ID4gPiA+ID4g PiA+ID4gPiAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCB2aXJ0bmV0X2dldF9wYWdlX3Bvb2xfc3Rh dHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTY0ICpkYXRhKQo+ID4gPiA+ID4gPiA+ID4gPiA+ ICt7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTCj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZf cHJpdihkZXYpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgIHN0cnVjdCBwYWdlX3Bvb2xfc3Rh dHMgcHBfc3RhdHMgPSB7fTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICBpbnQgaTsKPiA+ID4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8 IHZpLT5jdXJyX3F1ZXVlX3BhaXJzOyBpKyspIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgIGlmICghdmktPnJxW2ldLnBhZ2VfcG9vbCkKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICBwYWdlX3Bvb2xfZ2V0X3N0YXRzKHZpLT5ycVtpXS5wYWdlX3Bvb2wsICZwcF9zdGF0cyk7 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgIHBh Z2VfcG9vbF9ldGh0b29sX3N0YXRzX2dldChkYXRhLCAmcHBfc3RhdHMpOwo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsjZW5kaWYgLyogQ09ORklHX1BBR0VfUE9PTF9TVEFUUyAqLwo+ID4gPiA+ID4gPiA+ ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICBzdGF0 aWMgdm9pZCB2aXJ0bmV0X2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLCB1NjQgKmRhdGEpCj4gPiA+ID4gPiA+ID4gPiA+ ID4gIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMzAwMyw2ICszMDY5LDggQEAgc3RhdGljIHZv aWQgdmlydG5ldF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4g PiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgfSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3Jl dHJ5KCZzcS0+c3RhdHMuc3luY3AsIHN0YXJ0KSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAg ICAgICAgICBpZHggKz0gVklSVE5FVF9TUV9TVEFUU19MRU47Cj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICB2 aXJ0bmV0X2dldF9wYWdlX3Bvb2xfc3RhdHMoZGV2LCAmZGF0YVtpZHhdKTsKPiA+ID4gPiA+ID4g PiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gIHN0YXRp YyB2b2lkIHZpcnRuZXRfZ2V0X2NoYW5uZWxzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ ID4gPiA+ID4gPiA+ID4gQEAgLTM2MjMsNiArMzY5MSw4IEBAIHN0YXRpYyB2b2lkIHZpcnRuZXRf ZnJlZV9xdWV1ZXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpCj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgZm9yIChpID0gMDsgaSA8IHZpLT5tYXhfcXVldWVfcGFpcnM7IGkrKykgewo+ID4gPiA+ ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgX19uZXRpZl9uYXBpX2RlbCgmdmktPnJxW2ldLm5h cGkpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgX19uZXRpZl9uYXBpX2RlbCgm dmktPnNxW2ldLm5hcGkpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHZp LT5ycVtpXS5wYWdlX3Bvb2wpCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHBhZ2VfcG9vbF9kZXN0cm95KHZpLT5ycVtpXS5wYWdlX3Bvb2wpOwo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgIC8qIFdlIGNhbGxlZCBfX25ldGlmX25hcGlfZGVsKCksCj4gPiA+ID4gPiA+ID4gPiA+ID4g QEAgLTM2NzksMTIgKzM3NDksMTkgQEAgc3RhdGljIHZvaWQgdmlydG5ldF9ycV9mcmVlX3VudXNl ZF9idWYoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHZvaWQgKmJ1ZikKPiA+ID4gPiA+ID4gPiA+ID4g PiAgICAgICBzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IHZxLT52ZGV2LT5wcml2Owo+ID4gPiA+ ID4gPiA+ID4gPiA+ICAgICAgIGludCBpID0gdnEycnhxKHZxKTsKPiA+ID4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgIGlmICh2aS0+bWVyZ2VhYmxlX3J4X2J1ZnMpCj4g PiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICBwdXRfcGFnZSh2aXJ0X3RvX2hlYWRfcGFn ZShidWYpKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICBlbHNlIGlmICh2aS0+YmlnX3BhY2tl dHMpCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgaWYgKHZpLT5tZXJnZWFibGVfcnhfYnVmcykg ewo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHZpLT5ycVtpXS5wYWdlX3Bv b2wpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcGFnZV9wb29s X3B1dF9mdWxsX3BhZ2UodmktPnJxW2ldLnBhZ2VfcG9vbCwKPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydF90b19oZWFk X3BhZ2UoYnVmKSwKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBw dXRfcGFnZSh2aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICB9IGVsc2UgaWYgKHZpLT5iaWdf cGFja2V0cykgewo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgZ2l2ZV9wYWdlcygm dmktPnJxW2ldLCBidWYpOwo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgIGVsc2UKPiA+ID4gPiA+ ID4gPiA+ID4gPiArICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgcHV0X3BhZ2UodmlydF90b19oZWFkX3BhZ2UoYnVmKSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiA+ID4gPiAgc3RhdGljIHZvaWQgZnJlZV91bnVzZWRfYnVmcyhzdHJ1Y3QgdmlydG5l dF9pbmZvICp2aSkKPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMzcxOCw2ICszNzk1LDI2IEBAIHN0 YXRpYyB2b2lkIHZpcnRuZXRfZGVsX3ZxcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSkKPiA+ID4g PiA+ID4gPiA+ID4gPiAgICAgICB2aXJ0bmV0X2ZyZWVfcXVldWVzKHZpKTsKPiA+ID4gPiA+ID4g PiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gK3N0YXRp YyB2b2lkIHZpcnRuZXRfYWxsb2NfcGFnZV9wb29sKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSkK PiA+ID4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgIHN0cnVjdCB2 aXJ0aW9fZGV2aWNlICp2ZGV2ID0gcnEtPnZxLT52ZGV2Owo+ID4gPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICBzdHJ1Y3QgcGFnZV9wb29sX3BhcmFtcyBwcF9wYXJh bXMgPSB7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAub3JkZXIgPSAwLAo+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgLnBvb2xfc2l6ZSA9IHJxLT52cS0+bnVtX21h eCwKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIC5uaWQgPSBkZXZfdG9fbm9kZSh2 ZGV2LT5kZXYucGFyZW50KSwKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIC5kZXYg PSB2ZGV2LT5kZXYucGFyZW50LAo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgLm9m ZnNldCA9IDAsCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgfTsKPiA+ID4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgcnEtPnBhZ2VfcG9vbCA9IHBhZ2VfcG9vbF9j cmVhdGUoJnBwX3BhcmFtcyk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgaWYgKElTX0VSUihy cS0+cGFnZV9wb29sKSkgewo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgZGV2X3dh cm4oJnZkZXYtPmRldiwgInBhZ2UgcG9vbCBjcmVhdGlvbiBmYWlsZWQ6ICVsZFxuIiwKPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIFBUUl9FUlIocnEtPnBhZ2VfcG9v bCkpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgcnEtPnBhZ2VfcG9vbCA9IE5V TEw7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICt9Cj4g PiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAvKiBIb3cgbGFyZ2Ugc2hv dWxkIGEgc2luZ2xlIGJ1ZmZlciBiZSBzbyBhIHF1ZXVlIGZ1bGwgb2YgdGhlc2UgY2FuIGZpdCBh dAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgKiBsZWFzdCBvbmUgZnVsbCBwYWNrZXQ/Cj4gPiA+ID4g PiA+ID4gPiA+ID4gICAqIExvZ2ljIGJlbG93IGFzc3VtZXMgdGhlIG1lcmdlYWJsZSBidWZmZXIg aGVhZGVyIGlzIHVzZWQuCj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTM4MDEsNiArMzg5OCwxMyBA QCBzdGF0aWMgaW50IHZpcnRuZXRfZmluZF92cXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpCj4g PiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICB2aS0+cnFbaV0udnEgPSB2cXNbcnhxMnZx KGkpXTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHZpLT5ycVtpXS5taW5fYnVm X2xlbiA9IG1lcmdlYWJsZV9taW5fYnVmX2xlbih2aSwgdmktPnJxW2ldLnZxKTsKPiA+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHZpLT5zcVtpXS52cSA9IHZxc1t0eHEydnEoaSldOwo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGlm IChwYWdlX3Bvb2xfZW5hYmxlZCAmJiB2aS0+bWVyZ2VhYmxlX3J4X2J1ZnMpCj4gPiA+ID4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHZpcnRuZXRfYWxsb2NfcGFnZV9wb29sKCZ2 aS0+cnFbaV0pOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgZWxzZQo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybigmdmktPnZkZXYtPmRl diwKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBh Z2UgcG9vbCBvbmx5IHN1cHBvcnQgbWVyZ2VhYmxlIG1vZGVcbiIpOwo+ID4gPiA+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gPiA+ID4gPiAgICAgICAvKiBydW4gaGVyZTogcmV0ID09IDAuICovCj4gPiA+ID4g PiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4gPiA+ID4gPiAyLjMxLjEKPiA+ID4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+Cj4KCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmly dHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51 eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=