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 smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 BB38AEB64DA for ; Tue, 11 Jul 2023 02:59:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 35F3360FA1; Tue, 11 Jul 2023 02:59:13 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 35F3360FA1 Authentication-Results: smtp3.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=a1EHBFnz 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 hbLxil8thaSF; Tue, 11 Jul 2023 02:59:11 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id EC04D60D8E; Tue, 11 Jul 2023 02:59:10 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org EC04D60D8E Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BCFAAC0072; Tue, 11 Jul 2023 02:59:10 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5A9FFC0032 for ; Tue, 11 Jul 2023 02:59:09 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 217B44029B for ; Tue, 11 Jul 2023 02:59:09 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 217B44029B Authentication-Results: smtp2.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=a1EHBFnz X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 62vwAmBczMjd for ; Tue, 11 Jul 2023 02:59:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 8290D4018B Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id 8290D4018B for ; Tue, 11 Jul 2023 02:59:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1689044346; 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=PxfqrcaRfexPxhBCaGYWEZozEs8ut+Sm+p/oBwmLaAU=; b=a1EHBFnzjVT3NAN9v7pMrL8wADSLquNK0LfvRn/C77d8zZCXd9jpEd7apOo7p2xhXSeazE 364Lry6PvkIpdLPoA4osBijtdfuVWaISMzmD1sfK3ZnLZ4bwD2q4crHwpmckKN3BBPBfVN cJ+fHBJR7P7V5fdOdYI/7FqoMLjCfuI= Received: from mail-lj1-f198.google.com (mail-lj1-f198.google.com [209.85.208.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-537-4wTf_cPXMOm6TtbuqnVmdA-1; Mon, 10 Jul 2023 22:59:04 -0400 X-MC-Unique: 4wTf_cPXMOm6TtbuqnVmdA-1 Received: by mail-lj1-f198.google.com with SMTP id 38308e7fff4ca-2b70bfcd15aso36699161fa.0 for ; Mon, 10 Jul 2023 19:59:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689044343; x=1691636343; 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=PxfqrcaRfexPxhBCaGYWEZozEs8ut+Sm+p/oBwmLaAU=; b=NhoN8wnErzZdtLzPcn655o8/a6Lfh8KUmUSYRg83lOVDuvJVZhZ/QFHp6CpFc6FvwF YGEK9GD95OR5iRmOPNnS4gr/PJe6d4qU0XQdhd+9gjWgPzpYGX5aepyglyHucdkzvfvD QFQ8+JSiRa89AL3FHH6J9KvXaPCXMUpP5PVTt/WGSK2CIywlEFNw3ldFz3SBmOthfhCS bmTTKBycp94rJc6bqul604gAj0GoSpl7M4AZ0+KTCWb5gDqBMVD42871T99MSbFJYixX bR2SKQNRFENBimztPvQi52Ca9JIcusiMrYVWtVtF4P56DTWIh9AVwy9aL+xq3ALQe8LQ ZLbw== X-Gm-Message-State: ABy/qLbhrx1IC1ILpDIpWtsCWuw0u5k1kxVP83MNtYHNE6uqwoRyzZEU rSr8HG8GyqtJpDCSiSZR6BfbuDUJD+LZxr2urpf2HMKE1wNhdtWUu5RiqSo7duurDWkFYWYY08T aepJY3k1vgGj25qEQ726Bs2QNNybVj/D+KU2F94+fR5B8mprODqdzC65DEg== X-Received: by 2002:a05:651c:1045:b0:2b6:d13a:8e34 with SMTP id x5-20020a05651c104500b002b6d13a8e34mr12465486ljm.46.1689044343318; Mon, 10 Jul 2023 19:59:03 -0700 (PDT) X-Google-Smtp-Source: APBJJlHQZMl+Tq9BuH64H6HlJtXAKQm/zvA47Cs6Hq9Q+ZhPYfKIRBC3Ud8J68QqpxMZJqXVE86GvsV/DD/t2oV60U0= X-Received: by 2002:a05:651c:1045:b0:2b6:d13a:8e34 with SMTP id x5-20020a05651c104500b002b6d13a8e34mr12465476ljm.46.1689044342947; Mon, 10 Jul 2023 19:59:02 -0700 (PDT) MIME-Version: 1.0 References: <20230710034237.12391-1-xuanzhuo@linux.alibaba.com> <20230710034237.12391-11-xuanzhuo@linux.alibaba.com> <20230710051818-mutt-send-email-mst@kernel.org> <1688984310.480753-2-xuanzhuo@linux.alibaba.com> <20230710075534-mutt-send-email-mst@kernel.org> <1688992712.1534917-3-xuanzhuo@linux.alibaba.com> <1689043238.4362252-1-xuanzhuo@linux.alibaba.com> In-Reply-To: <1689043238.4362252-1-xuanzhuo@linux.alibaba.com> From: Jason Wang Date: Tue, 11 Jul 2023 10:58:51 +0800 Message-ID: Subject: Re: [PATCH vhost v11 10/10] virtio_net: merge dma operation for one page To: Xuan Zhuo X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Cc: Jesper Dangaard Brouer , Daniel Borkmann , "Michael S. Tsirkin" , netdev@vger.kernel.org, John Fastabend , Alexei Starovoitov , virtualization@lists.linux-foundation.org, Christoph Hellwig , Eric Dumazet , Jakub Kicinski , bpf@vger.kernel.org, Paolo Abeni , "David S. Miller" 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" T24gVHVlLCBKdWwgMTEsIDIwMjMgYXQgMTA6NDLigK9BTSBYdWFuIFpodW8gPHh1YW56aHVvQGxp bnV4LmFsaWJhYmEuY29tPiB3cm90ZToKPgo+IE9uIFR1ZSwgMTEgSnVsIDIwMjMgMTA6MzY6MTcg KzA4MDAsIEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gT24gTW9u LCBKdWwgMTAsIDIwMjMgYXQgODo0MeKAr1BNIFh1YW4gWmh1byA8eHVhbnpodW9AbGludXguYWxp YmFiYS5jb20+IHdyb3RlOgo+ID4gPgo+ID4gPiBPbiBNb24sIDEwIEp1bCAyMDIzIDA3OjU5OjAz IC0wNDAwLCAiTWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+IHdyb3RlOgo+ID4g PiA+IE9uIE1vbiwgSnVsIDEwLCAyMDIzIGF0IDA2OjE4OjMwUE0gKzA4MDAsIFh1YW4gWmh1byB3 cm90ZToKPiA+ID4gPiA+IE9uIE1vbiwgMTAgSnVsIDIwMjMgMDU6NDA6MjEgLTA0MDAsICJNaWNo YWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIE1v biwgSnVsIDEwLCAyMDIzIGF0IDExOjQyOjM3QU0gKzA4MDAsIFh1YW4gWmh1byB3cm90ZToKPiA+ ID4gPiA+ID4gPiBDdXJyZW50bHksIHRoZSB2aXJ0aW8gY29yZSB3aWxsIHBlcmZvcm0gYSBkbWEg b3BlcmF0aW9uIGZvciBlYWNoCj4gPiA+ID4gPiA+ID4gb3BlcmF0aW9uLiBBbHRob3VnaCwgdGhl IHNhbWUgcGFnZSBtYXkgYmUgb3BlcmF0ZWQgbXVsdGlwbGUgdGltZXMuCj4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiBUaGUgZHJpdmVyIGRvZXMgdGhlIGRtYSBvcGVyYXRpb24gYW5kIG1hbmFn ZXMgdGhlIGRtYSBhZGRyZXNzIGJhc2VkIHRoZQo+ID4gPiA+ID4gPiA+IGZlYXR1cmUgcHJlbWFw cGVkIG9mIHZpcnRpbyBjb3JlLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gVGhpcyB3YXks IHdlIGNhbiBwZXJmb3JtIG9ubHkgb25lIGRtYSBvcGVyYXRpb24gZm9yIHRoZSBzYW1lIHBhZ2Uu IEluCj4gPiA+ID4gPiA+ID4gdGhlIGNhc2Ugb2YgbXR1IDE1MDAsIHRoaXMgY2FuIHJlZHVjZSBh IGxvdCBvZiBkbWEgb3BlcmF0aW9ucy4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRlc3Rl ZCBvbiBBbGl5dW4gZzcuNGxhcmdlIG1hY2hpbmUsIGluIHRoZSBjYXNlIG9mIGEgY3B1IDEwMCUs IHBwcwo+ID4gPiA+ID4gPiA+IGluY3JlYXNlZCBmcm9tIDE4OTM3NjYgdG8gMTkwMTEwNS4gQW4g aW5jcmVhc2Ugb2YgMC40JS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gd2hhdCBraW5kIG9mIGRt YSB3YXMgdGhlcmU/IGFuIElPTU1VPyB3aGljaCB2ZW5kb3JzPyBpbiB3aGljaCBtb2RlCj4gPiA+ ID4gPiA+IG9mIG9wZXJhdGlvbj8KPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gRG8geW91 IG1lYW4gdGhpczoKPiA+ID4gPiA+Cj4gPiA+ID4gPiBbICAgIDAuNDcwODE2XSBpb21tdTogRGVm YXVsdCBkb21haW4gdHlwZTogUGFzc3Rocm91Z2gKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBX aXRoIHBhc3N0aHJvdWdoLCBkbWEgQVBJIGlzIGp1c3Qgc29tZSBpbmRpcmVjdCBmdW5jdGlvbiBj YWxscywgdGhleSBkbwo+ID4gPiA+IG5vdCBhZmZlY3QgdGhlIHBlcmZvcm1hbmNlIGEgbG90Lgo+ ID4gPgo+ID4gPgo+ID4gPiBZZXMsIHRoaXMgYmVuZWZpdCBpcyB3b3J0aGxlc3MuIEkgc2VlbSB0 byBoYXZlIGRvbmUgYSBtZWFuaW5nbGVzcyB0aGluZy4gVGhlCj4gPiA+IG92ZXJoZWFkIG9mIERN QSBJIG9ic2VydmVkIGlzIGluZGVlZCBub3QgdG9vIGhpZ2guCj4gPgo+ID4gSGF2ZSB5b3UgbWVh c3VyZWQgd2l0aCBpb21tdT1zdHJpY3Q/Cj4KPiBJIGhhdmUgbm90IHRlc3RlZCB0aGlzIHdheSwg b3VyIGVudmlyb25tZW50IGlzIHB0LCBJIHdvbmRlciBpZiBzdHJpY3QgaXMgYQo+IGNvbW1vbiBz Y2VuYXJpby4gSSBjYW4gdGVzdCBpdC4KCkl0J3Mgbm90IGEgY29tbW9uIHNldHVwLCBidXQgaXQn cyBhIHdheSB0byBzdHJlc3MgRE1BIGxheWVyIHRvIHNlZSB0aGUgb3ZlcmhlYWQuCgpUaGFua3MK Cj4KPiBUaGFua3MuCj4KPgo+ID4KPiA+IFRoYW5rcwo+ID4KPiA+ID4KPiA+ID4gVGhhbmtzLgo+ ID4gPgo+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gVHJ5IGUuZy4gYm91bmNlIGJ1ZmZlci4gV2hpY2gg aXMgd2hlcmUgeW91IHdpbGwgc2VlIGEgcHJvYmxlbTogeW91cgo+ID4gPiA+IHBhdGNoZXMgd29u J3Qgd29yay4KPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gU2lnbmVk LW9mZi1ieTogWHVhbiBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gVGhpcyBraW5kIG9mIGRpZmZlcmVuY2UgaXMgbGlrZWx5IGluIHRoZSBu b2lzZS4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJdCdzIHJlYWxseSBub3QgaGlnaCwgYnV0IHRoaXMg aXMgYmVjYXVzZSB0aGUgcHJvcG9ydGlvbiBvZiBETUEgdW5kZXIgcGVyZiB0b3AKPiA+ID4gPiA+ IGlzIG5vdCBoaWdoLiBQcm9iYWJseSB0aGF0IG11Y2guCj4gPiA+ID4KPiA+ID4gPiBTbyBtYXli ZSBub3Qgd29ydGggdGhlIGNvbXBsZXhpdHkuCj4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9uZXQvdmlydGlvX25l dC5jIHwgMjgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4gPiA+ ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjY3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt KQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Zp cnRpb19uZXQuYyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+ID4gPiA+ID4gPiA+IGluZGV4 IDQ4NmI1ODQ5MDMzZC4uNGRlODQ1ZDM1YmVkIDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3Zp cnRpb19uZXQuYwo+ID4gPiA+ID4gPiA+IEBAIC0xMjYsNiArMTI2LDI3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgdmlydG5ldF9zdGF0X2Rlc2MgdmlydG5ldF9ycV9zdGF0c19kZXNjW10gPSB7Cj4g PiA+ID4gPiA+ID4gICNkZWZpbmUgVklSVE5FVF9TUV9TVEFUU19MRU4gICBBUlJBWV9TSVpFKHZp cnRuZXRfc3Ffc3RhdHNfZGVzYykKPiA+ID4gPiA+ID4gPiAgI2RlZmluZSBWSVJUTkVUX1JRX1NU QVRTX0xFTiAgIEFSUkFZX1NJWkUodmlydG5ldF9ycV9zdGF0c19kZXNjKQo+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gKy8qIFRoZSBidWZzIG9uIHRoZSBzYW1lIHBhZ2UgbWF5IHNoYXJlIHRo aXMgc3RydWN0LiAqLwo+ID4gPiA+ID4gPiA+ICtzdHJ1Y3QgdmlydG5ldF9ycV9kbWEgewo+ID4g PiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHZpcnRuZXRfcnFfZG1hICpuZXh0Owo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGRtYV9hZGRyX3QgYWRkcjsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICB2b2lkICpidWY7Cj4gPiA+ID4gPiA+ID4gKyAgICAg ICB1MzIgbGVuOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIHUzMiByZWY7 Cj4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsvKiBSZWNv cmQgdGhlIGRtYSBhbmQgYnVmLiAqLwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBJIGd1ZXNzIEkg c2VlIHRoYXQuIEJ1dCB3aHk/Cj4gPiA+ID4gPiA+IEFuZCB0aGVzZSB0d28gY29tbWVudHMgYXJl IHRoZSBleHRlbnQgb2YgdGhlIGF2YWlsYWJsZQo+ID4gPiA+ID4gPiBkb2N1bWVudGF0aW9uLCB0 aGF0J3Mgbm90IGVub3VnaCBJIGZlZWwuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gK3N0cnVjdCB2aXJ0bmV0X3JxX2RhdGEgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3Ry dWN0IHZpcnRuZXRfcnFfZGF0YSAqbmV4dDsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSXMgbWFu dWFsbHkgcmVpbXBsZW1lbnRpbmcgYSBsaW5rZWQgbGlzdCB0aGUgYmVzdAo+ID4gPiA+ID4gPiB3 ZSBjYW4gZG8/Cj4gPiA+ID4gPgo+ID4gPiA+ID4gWWVzLCB3ZSBjYW4gdXNlIGxsaXN0Lgo+ID4g PiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICB2 b2lkICpidWY7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHZp cnRuZXRfcnFfZG1hICpkbWE7Cj4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ICAvKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhIHNlbmQgdmlydHF1ZXVl ICovCj4gPiA+ID4gPiA+ID4gIHN0cnVjdCBzZW5kX3F1ZXVlIHsKPiA+ID4gPiA+ID4gPiAgICAg ICAgIC8qIFZpcnRxdWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZW5kIF9xdWV1ZSAqLwo+ID4g PiA+ID4gPiA+IEBAIC0xNzUsNiArMTk2LDEzIEBAIHN0cnVjdCByZWNlaXZlX3F1ZXVlIHsKPiA+ ID4gPiA+ID4gPiAgICAgICAgIGNoYXIgbmFtZVsxNl07Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiAgICAgICAgIHN0cnVjdCB4ZHBfcnhxX2luZm8geGRwX3J4cTsKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgdmlydG5ldF9ycV9kYXRhICpkYXRhX2FycmF5 Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHZpcnRuZXRfcnFfZGF0YSAqZGF0YV9mcmVl Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCB2aXJ0bmV0X3Jx X2RtYSAqZG1hX2FycmF5Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHZpcnRuZXRfcnFf ZG1hICpkbWFfZnJlZTsKPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCB2aXJ0bmV0X3JxX2Rt YSAqbGFzdF9kbWE7Cj4gPiA+ID4gPiA+ID4gIH07Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiAgLyogVGhpcyBzdHJ1Y3R1cmUgY2FuIGNvbnRhaW4gcnNzIG1lc3NhZ2Ugd2l0aCBtYXhpbXVt IHNldHRpbmdzIGZvciBpbmRpcmVjdGlvbiB0YWJsZSBhbmQga2V5c2l6ZQo+ID4gPiA+ID4gPiA+ IEBAIC01NDksNiArNTc3LDE3NiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhZ2VfdG9fc2ti KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLAo+ID4gPiA+ID4gPiA+ICAgICAgICAgcmV0dXJuIHNr YjsKPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2 b2lkIHZpcnRuZXRfcnFfdW5tYXAoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLCBzdHJ1Y3Qgdmly dG5ldF9ycV9kbWEgKmRtYSkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICAgICAg c3RydWN0IGRldmljZSAqZGV2Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAg IC0tZG1hLT5yZWY7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgaWYgKGRt YS0+cmVmKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBJZiB5b3UgZG9uJ3QgdW5tYXAgdGhlcmUgaXMg bm8gZ3VhcmFudGVlIHZhbGlkIGRhdGEgd2lsbCBiZQo+ID4gPiA+ID4gPiB0aGVyZSBpbiB0aGUg YnVmZmVyLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ICsgICAgICAgZGV2ID0gdmlydHF1ZXVl X2RtYV9kZXYocnEtPnZxKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICBk bWFfdW5tYXBfcGFnZShkZXYsIGRtYS0+YWRkciwgZG1hLT5sZW4sIERNQV9GUk9NX0RFVklDRSk7 Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgZG1hLT5uZXh0ID0gcnEt PmRtYV9mcmVlOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgcnEtPmRtYV9mcmVlID0gZG1hOwo+ID4g PiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCAq dmlydG5ldF9ycV9yZWN5Y2xlX2RhdGEoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLAo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmlydG5l dF9ycV9kYXRhICpkYXRhKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICB2 b2lkICpidWY7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgYnVmID0gZGF0 YS0+YnVmOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGRhdGEtPm5leHQg PSBycS0+ZGF0YV9mcmVlOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgcnEtPmRhdGFfZnJlZSA9IGRh dGE7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgcmV0dXJuIGJ1ZjsKPiA+ ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIHN0cnVj dCB2aXJ0bmV0X3JxX2RhdGEgKnZpcnRuZXRfcnFfZ2V0X2RhdGEoc3RydWN0IHJlY2VpdmVfcXVl dWUgKnJxLAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKmJ1ZiwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmlydG5ldF9ycV9kbWEg KmRtYSkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHZpcnRu ZXRfcnFfZGF0YSAqZGF0YTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICBk YXRhID0gcnEtPmRhdGFfZnJlZTsKPiA+ID4gPiA+ID4gPiArICAgICAgIHJxLT5kYXRhX2ZyZWUg PSBkYXRhLT5uZXh0Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGRhdGEt PmJ1ZiA9IGJ1ZjsKPiA+ID4gPiA+ID4gPiArICAgICAgIGRhdGEtPmRtYSA9IGRtYTsKPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICByZXR1cm4gZGF0YTsKPiA+ID4gPiA+ID4g PiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgKnZpcnRuZXRf cnFfZ2V0X2J1ZihzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEsIHUzMiAqbGVuLCB2b2lkICoqY3R4 KQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgdmlydG5ldF9y cV9kYXRhICpkYXRhOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgdm9pZCAqYnVmOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGJ1ZiA9IHZpcnRxdWV1ZV9nZXRfYnVmX2N0eChy cS0+dnEsIGxlbiwgY3R4KTsKPiA+ID4gPiA+ID4gPiArICAgICAgIGlmICghYnVmIHx8ICFycS0+ ZGF0YV9hcnJheSkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZjsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICBkYXRhID0gYnVmOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIHZpcnRuZXRfcnFfdW5tYXAocnEsIGRhdGEtPmRt YSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgcmV0dXJuIHZpcnRuZXRf cnFfcmVjeWNsZV9kYXRhKHJxLCBkYXRhKTsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgKnZpcnRuZXRfcnFfZGV0YWNoX3VudXNlZF9i dWYoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QgdmlydG5ldF9ycV9kYXRhICpkYXRhOwo+ID4gPiA+ID4gPiA+ICsg ICAgICAgdm9pZCAqYnVmOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGJ1 ZiA9IHZpcnRxdWV1ZV9kZXRhY2hfdW51c2VkX2J1ZihycS0+dnEpOwo+ID4gPiA+ID4gPiA+ICsg ICAgICAgaWYgKCFidWYgfHwgIXJxLT5kYXRhX2FycmF5KQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gYnVmOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAg IGRhdGEgPSBidWY7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgdmlydG5l dF9ycV91bm1hcChycSwgZGF0YS0+ZG1hKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g KyAgICAgICByZXR1cm4gdmlydG5ldF9ycV9yZWN5Y2xlX2RhdGEocnEsIGRhdGEpOwo+ID4gPiA+ ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHZpcnRu ZXRfcnFfbWFwX3NnKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwgdm9pZCAqYnVmLCB1MzIgbGVu KQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgdmlydG5ldF9y cV9kbWEgKmRtYSA9IHJxLT5sYXN0X2RtYTsKPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldjsKPiA+ID4gPiA+ID4gPiArICAgICAgIHUzMiBvZmYsIG1hcF9sZW47Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICBkbWFfYWRkcl90IGFkZHI7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICB2 b2lkICplbmQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgaWYgKGxpa2Vs eShkbWEpICYmIGJ1ZiA+PSBkbWEtPmJ1ZiAmJiAoYnVmICsgbGVuIDw9IGRtYS0+YnVmICsgZG1h LT5sZW4pKSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICsrZG1hLT5yZWY7Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGFkZHIgPSBkbWEtPmFkZHIgKyAoYnVmIC0gZG1hLT5i dWYpOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBnb3RvIG9rOwo+ID4gPiA+ID4gPiA+ ICsgICAgICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBTbyB0aGlzIGlzIHRoZSBtZWF0IG9m IHRoZSBwcm9wb3NlZCBvcHRpbWl6YXRpb24uIEkgZ3Vlc3MgdGhhdAo+ID4gPiA+ID4gPiBpZiB0 aGUgbGFzdCBidWZmZXIgd2UgYWxsb2NhdGVkIGhhcHBlbnMgdG8gYmUgaW4gdGhlIHNhbWUgcGFn ZQo+ID4gPiA+ID4gPiBhcyB0aGlzIG9uZSB0aGVuIHRoZXkgY2FuIGJvdGggYmUgbWFwcGVkIGZv ciBETUEgdG9nZXRoZXIuCj4gPiA+ID4gPgo+ID4gPiA+ID4gU2luY2Ugd2UgdXNlIHBhZ2VfZnJh ZywgdGhlIGJ1ZmZlcnMgd2UgYWxsb2NhdGVkIGFyZSBhbGwgY29udGludW91cy4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+IFdoeSBsYXN0IG9uZSBzcGVjaWZpY2FsbHk/IFdoZXRoZXIgbmV4dCBvbmUg aGFwcGVucyB0bwo+ID4gPiA+ID4gPiBiZSBjbG9zZSBkZXBlbmRzIG9uIGx1Y2suIElmIHlvdSB3 YW50IHRvIHRyeSBvcHRpbWl6aW5nIHRoaXMKPiA+ID4gPiA+ID4gdGhlIHJpZ2h0IHRoaW5nIHRv IGRvIGlzIGxpa2VseSBieSB1c2luZyBhIHBhZ2UgcG9vbC4KPiA+ID4gPiA+ID4gVGhlcmUncyBh Y3R1YWxseSB3b3JrIHVwc3RyZWFtIG9uIHBhZ2UgcG9vbCwgbG9vayBpdCB1cC4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiBBcyB3ZSBkaXNjdXNzZWQgaW4gYW5vdGhlciB0aHJlYWQsIHRoZSBwYWdlIHBv b2wgaXMgZmlyc3QgdXNlZCBmb3IgeGRwLiBMZXQncwo+ID4gPiA+ID4gdHJhbnNmb3JtIGl0IHN0 ZXAgYnkgc3RlcC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBUaGFua3MuCj4gPiA+ID4KPiA+ID4gPiBv ayBzbyB0aGlzIHNob3VsZCB3YWl0IHRoZW4/Cj4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICBlbmQgPSBidWYgKyBsZW4gLSAxOwo+ID4gPiA+ ID4gPiA+ICsgICAgICAgb2ZmID0gb2Zmc2V0X2luX3BhZ2UoZW5kKTsKPiA+ID4gPiA+ID4gPiAr ICAgICAgIG1hcF9sZW4gPSBsZW4gKyBQQUdFX1NJWkUgLSBvZmY7Cj4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ICsgICAgICAgZGV2ID0gdmlydHF1ZXVlX2RtYV9kZXYocnEtPnZxKTsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICBhZGRyID0gZG1hX21hcF9wYWdlX2F0 dHJzKGRldiwgdmlydF90b19wYWdlKGJ1ZiksIG9mZnNldF9pbl9wYWdlKGJ1ZiksCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9sZW4sIERNQV9GUk9N X0RFVklDRSwgMCk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBpZiAoYWRkciA9PSBETUFfTUFQUElO R19FUlJPUikKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgZG1hID0gcnEtPmRtYV9mcmVlOwo+ ID4gPiA+ID4gPiA+ICsgICAgICAgcnEtPmRtYV9mcmVlID0gZG1hLT5uZXh0Owo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGRtYS0+cmVmID0gMTsKPiA+ID4gPiA+ID4gPiAr ICAgICAgIGRtYS0+YnVmID0gYnVmOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgZG1hLT5hZGRyID0g YWRkcjsKPiA+ID4gPiA+ID4gPiArICAgICAgIGRtYS0+bGVuID0gbWFwX2xlbjsKPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICBycS0+bGFzdF9kbWEgPSBkbWE7Cj4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtvazoKPiA+ID4gPiA+ID4gPiArICAgICAgIHNnX2luaXRf dGFibGUocnEtPnNnLCAxKTsKPiA+ID4gPiA+ID4gPiArICAgICAgIHJxLT5zZ1swXS5kbWFfYWRk cmVzcyA9IGFkZHI7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBycS0+c2dbMF0ubGVuZ3RoID0gbGVu Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIHJldHVybiAwOwo+ID4gPiA+ ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHZpcnRu ZXRfcnFfbWVyZ2VfbWFwX2luaXQoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpCj4gPiA+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycTsKPiA+ ID4gPiA+ID4gPiArICAgICAgIGludCBpLCBlcnIsIGosIG51bTsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgICAgICAvKiBkaXNhYmxlIGZvciBiaWcgbW9kZSAqLwo+ID4gPiA+ID4g PiA+ICsgICAgICAgaWYgKCF2aS0+bWVyZ2VhYmxlX3J4X2J1ZnMgJiYgdmktPmJpZ19wYWNrZXRz KQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgdmktPm1heF9xdWV1ZV9wYWly czsgaSsrKSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGVyciA9IHZpcnRxdWV1ZV9z ZXRfcHJlbWFwcGVkKHZpLT5ycVtpXS52cSk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IGlmIChlcnIpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBycSA9ICZ2aS0+ cnFbaV07Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBudW0g PSB2aXJ0cXVldWVfZ2V0X3ZyaW5nX3NpemUocnEtPnZxKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHJxLT5kYXRhX2FycmF5ID0ga21hbGxvY19hcnJheShu dW0sIHNpemVvZigqcnEtPmRhdGFfYXJyYXkpLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgaWYgKCFycS0+ZGF0YV9hcnJheSkKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIGVycjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgIHJxLT5kbWFfYXJyYXkgPSBrbWFsbG9jX2FycmF5KG51bSwgc2l6ZW9m KCpycS0+ZG1hX2FycmF5KSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIGlmICghcnEtPmRtYV9hcnJheSkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGVycjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIGZvciAoaiA9IDA7IGogPCBudW07ICsraikgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJxLT5kYXRhX2FycmF5W2pdLm5leHQgPSBycS0+ZGF0YV9mcmVlOwo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJxLT5kYXRhX2ZyZWUgPSAmcnEtPmRh dGFfYXJyYXlbal07Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJxLT5kbWFfYXJyYXlbal0ubmV4dCA9IHJxLT5kbWFfZnJlZTsKPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBycS0+ZG1hX2ZyZWUgPSAmcnEtPmRtYV9hcnJh eVtqXTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIHJldHVybiAwOwo+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArZXJyOgo+ID4gPiA+ID4gPiA+ICsgICAgICAgZm9y IChpID0gMDsgaSA8IHZpLT5tYXhfcXVldWVfcGFpcnM7IGkrKykgewo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnE7Cj4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBycSA9ICZ2aS0+cnFbaV07Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBrZnJlZShycS0+ZG1hX2FycmF5KTsK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAga2ZyZWUocnEtPmRhdGFfYXJyYXkpOwo+ID4g PiA+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAg IHJldHVybiAtRU5PTUVNOwo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ICBzdGF0aWMgdm9pZCBmcmVlX29sZF94bWl0X3NrYnMoc3RydWN0IHNlbmRfcXVldWUg KnNxLCBib29sIGluX25hcGkpCj4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiAgICAgICAg IHVuc2lnbmVkIGludCBsZW47Cj4gPiA+ID4gPiA+ID4gQEAgLTgzNSw3ICsxMDMzLDcgQEAgc3Rh dGljIHN0cnVjdCBwYWdlICp4ZHBfbGluZWFyaXplX3BhZ2Uoc3RydWN0IHJlY2VpdmVfcXVldWUg KnJxLAo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB2b2lkICpidWY7Cj4gPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgIGludCBvZmY7Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAt ICAgICAgICAgICAgICAgYnVmID0gdmlydHF1ZXVlX2dldF9idWYocnEtPnZxLCAmYnVmbGVuKTsK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgYnVmID0gdmlydG5ldF9ycV9nZXRfYnVmKHJx LCAmYnVmbGVuLCBOVUxMKTsKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgaWYgKHVubGlr ZWx5KCFidWYpKQo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJy X2J1ZjsKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IEBAIC0xMTI2LDcgKzEzMjQsNyBAQCBz dGF0aWMgaW50IHZpcnRuZXRfYnVpbGRfeGRwX2J1ZmZfbXJnKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gICAgICAgICB3aGlsZSAoLS0qbnVtX2J1ZiA+IDApIHsKPiA+ ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgYnVmID0gdmlydHF1ZXVlX2dldF9idWZfY3R4KHJx LT52cSwgJmxlbiwgJmN0eCk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGJ1ZiA9IHZp cnRuZXRfcnFfZ2V0X2J1ZihycSwgJmxlbiwgJmN0eCk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICAgIGlmICh1bmxpa2VseSghYnVmKSkgewo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIHByX2RlYnVnKCIlczogcnggZXJyb3I6ICVkIGJ1ZmZlcnMgb3V0IG9mICVkIG1p c3NpbmdcbiIsCj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGV2LT5uYW1lLCAqbnVtX2J1ZiwKPiA+ID4gPiA+ID4gPiBAQCAtMTM1MSw3ICsxNTQ5LDcgQEAg c3RhdGljIHN0cnVjdCBza19idWZmICpyZWNlaXZlX21lcmdlYWJsZShzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LAo+ID4gPiA+ID4gPiA+ICAgICAgICAgd2hpbGUgKC0tbnVtX2J1Zikgewo+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICBpbnQgbnVtX3NrYl9mcmFnczsKPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBidWYgPSB2aXJ0cXVldWVfZ2V0X2J1Zl9jdHgo cnEtPnZxLCAmbGVuLCAmY3R4KTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgYnVmID0g dmlydG5ldF9ycV9nZXRfYnVmKHJxLCAmbGVuLCAmY3R4KTsKPiA+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgaWYgKHVubGlrZWx5KCFidWYpKSB7Cj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgcHJfZGVidWcoIiVzOiByeCBlcnJvcjogJWQgYnVmZmVycyBvdXQgb2YgJWQg bWlzc2luZ1xuIiwKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXYtPm5hbWUsIG51bV9idWYsCj4gPiA+ID4gPiA+ID4gQEAgLTE0MTQsNyArMTYxMiw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFibGUoc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwKPiA+ID4gPiA+ID4gPiAgZXJyX3NrYjoKPiA+ID4gPiA+ID4gPiAgICAgICAgIHB1 dF9wYWdlKHBhZ2UpOwo+ID4gPiA+ID4gPiA+ICAgICAgICAgd2hpbGUgKG51bV9idWYtLSA+IDEp IHsKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgYnVmID0gdmlydHF1ZXVlX2dldF9idWYo cnEtPnZxLCAmbGVuKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgYnVmID0gdmlydG5l dF9ycV9nZXRfYnVmKHJxLCAmbGVuLCBOVUxMKTsKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAg ICAgaWYgKHVubGlrZWx5KCFidWYpKSB7Cj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgcHJfZGVidWcoIiVzOiByeCBlcnJvcjogJWQgYnVmZmVycyBtaXNzaW5nXG4iLAo+ID4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSwgbnVt X2J1Zik7Cj4gPiA+ID4gPiA+ID4gQEAgLTE1MjksNiArMTcyNyw3IEBAIHN0YXRpYyBpbnQgYWRk X3JlY3ZidWZfc21hbGwoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksIHN0cnVjdCByZWNlaXZlX3F1 ZXVlICpycSwKPiA+ID4gPiA+ID4gPiAgICAgICAgIHVuc2lnbmVkIGludCB4ZHBfaGVhZHJvb20g PSB2aXJ0bmV0X2dldF9oZWFkcm9vbSh2aSk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICB2b2lkICpj dHggPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKXhkcF9oZWFkcm9vbTsKPiA+ID4gPiA+ID4gPiAg ICAgICAgIGludCBsZW4gPSB2aS0+aGRyX2xlbiArIFZJUlRORVRfUlhfUEFEICsgR09PRF9QQUNL RVRfTEVOICsgeGRwX2hlYWRyb29tOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHZpcnRu ZXRfcnFfZGF0YSAqZGF0YTsKPiA+ID4gPiA+ID4gPiAgICAgICAgIGludCBlcnI7Cj4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiAgICAgICAgIGxlbiA9IFNLQl9EQVRBX0FMSUdOKGxlbikgKwo+ ID4gPiA+ID4gPiA+IEBAIC0xNTM5LDExICsxNzM4LDM0IEBAIHN0YXRpYyBpbnQgYWRkX3JlY3Zi dWZfc21hbGwoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksIHN0cnVjdCByZWNlaXZlX3F1ZXVlICpy cSwKPiA+ID4gPiA+ID4gPiAgICAgICAgIGJ1ZiA9IChjaGFyICopcGFnZV9hZGRyZXNzKGFsbG9j X2ZyYWctPnBhZ2UpICsgYWxsb2NfZnJhZy0+b2Zmc2V0Owo+ID4gPiA+ID4gPiA+ICAgICAgICAg Z2V0X3BhZ2UoYWxsb2NfZnJhZy0+cGFnZSk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICBhbGxvY19m cmFnLT5vZmZzZXQgKz0gbGVuOwo+ID4gPiA+ID4gPiA+IC0gICAgICAgc2dfaW5pdF9vbmUocnEt PnNnLCBidWYgKyBWSVJUTkVUX1JYX1BBRCArIHhkcF9oZWFkcm9vbSwKPiA+ID4gPiA+ID4gPiAt ICAgICAgICAgICAgICAgICAgIHZpLT5oZHJfbGVuICsgR09PRF9QQUNLRVRfTEVOKTsKPiA+ID4g PiA+ID4gPiAtICAgICAgIGVyciA9IHZpcnRxdWV1ZV9hZGRfaW5idWZfY3R4KHJxLT52cSwgcnEt PnNnLCAxLCBidWYsIGN0eCwgZ2ZwKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAg ICAgICBpZiAocnEtPmRhdGFfYXJyYXkpIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ZXJyID0gdmlydG5ldF9ycV9tYXBfc2cocnEsIGJ1ZiArIFZJUlRORVRfUlhfUEFEICsgeGRwX2hl YWRyb29tLAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2aS0+aGRyX2xlbiArIEdPT0RfUEFDS0VUX0xFTik7Cj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgIGlmIChlcnIpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg Z290byBtYXBfZXJyOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgZGF0YSA9IHZpcnRuZXRfcnFfZ2V0X2RhdGEocnEsIGJ1ZiwgcnEtPmxhc3RfZG1hKTsKPiA+ ID4gPiA+ID4gPiArICAgICAgIH0gZWxzZSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IHNnX2luaXRfb25lKHJxLT5zZywgYnVmICsgVklSVE5FVF9SWF9QQUQgKyB4ZHBfaGVhZHJvb20s Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpLT5oZHJfbGVuICsg R09PRF9QQUNLRVRfTEVOKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgZGF0YSA9ICh2 b2lkICopYnVmOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArICAgICAgIGVyciA9IHZpcnRxdWV1ZV9hZGRfaW5idWZfY3R4KHJxLT52cSwgcnEt PnNnLCAxLCBkYXRhLCBjdHgsIGdmcCk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICBpZiAoZXJyIDwg MCkKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgcHV0X3BhZ2UodmlydF90b19oZWFkX3Bh Z2UoYnVmKSk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGdvdG8gYWRkX2VycjsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArYWRkX2VycjoKPiA+ID4gPiA+ID4gPiArICAgICAgIGlmIChy cS0+ZGF0YV9hcnJheSkgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB2aXJ0bmV0X3Jx X3VubWFwKHJxLCBkYXRhLT5kbWEpOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB2aXJ0 bmV0X3JxX3JlY3ljbGVfZGF0YShycSwgZGF0YSk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICB9Cj4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICttYXBfZXJyOgo+ID4gPiA+ID4gPiA+ICsgICAg ICAgcHV0X3BhZ2UodmlydF90b19oZWFkX3BhZ2UoYnVmKSk7Cj4gPiA+ID4gPiA+ID4gICAgICAg ICByZXR1cm4gZXJyOwo+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiBAQCAtMTYyMCw2ICsxODQyLDcgQEAgc3RhdGljIGludCBhZGRfcmVjdmJ1Zl9tZXJnZWFibGUo c3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ID4gPiA+ID4gICAgICAgICB1bnNpZ25lZCBp bnQgaGVhZHJvb20gPSB2aXJ0bmV0X2dldF9oZWFkcm9vbSh2aSk7Cj4gPiA+ID4gPiA+ID4gICAg ICAgICB1bnNpZ25lZCBpbnQgdGFpbHJvb20gPSBoZWFkcm9vbSA/IHNpemVvZihzdHJ1Y3Qgc2ti X3NoYXJlZF9pbmZvKSA6IDA7Cj4gPiA+ID4gPiA+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgcm9v bSA9IFNLQl9EQVRBX0FMSUdOKGhlYWRyb29tICsgdGFpbHJvb20pOwo+ID4gPiA+ID4gPiA+ICsg ICAgICAgc3RydWN0IHZpcnRuZXRfcnFfZGF0YSAqZGF0YTsKPiA+ID4gPiA+ID4gPiAgICAgICAg IGNoYXIgKmJ1ZjsKPiA+ID4gPiA+ID4gPiAgICAgICAgIHZvaWQgKmN0eDsKPiA+ID4gPiA+ID4g PiAgICAgICAgIGludCBlcnI7Cj4gPiA+ID4gPiA+ID4gQEAgLTE2NTAsMTIgKzE4NzMsMzIgQEAg c3RhdGljIGludCBhZGRfcmVjdmJ1Zl9tZXJnZWFibGUoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmks Cj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIGFsbG9jX2ZyYWctPm9mZnNldCArPSBob2xl Owo+ID4gPiA+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gLSAg ICAgICBzZ19pbml0X29uZShycS0+c2csIGJ1ZiwgbGVuKTsKPiA+ID4gPiA+ID4gPiArICAgICAg IGlmIChycS0+ZGF0YV9hcnJheSkgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBlcnIg PSB2aXJ0bmV0X3JxX21hcF9zZyhycSwgYnVmLCBsZW4pOwo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICBpZiAoZXJyKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gbWFwX2VycjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IGRhdGEgPSB2aXJ0bmV0X3JxX2dldF9kYXRhKHJxLCBidWYsIHJxLT5sYXN0X2RtYSk7Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBz Z19pbml0X29uZShycS0+c2csIGJ1ZiwgbGVuKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgZGF0YSA9ICh2b2lkICopYnVmOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiAgICAgICAgIGN0eCA9IG1lcmdlYWJsZV9sZW5fdG9fY3R4KGxl biArIHJvb20sIGhlYWRyb29tKTsKPiA+ID4gPiA+ID4gPiAtICAgICAgIGVyciA9IHZpcnRxdWV1 ZV9hZGRfaW5idWZfY3R4KHJxLT52cSwgcnEtPnNnLCAxLCBidWYsIGN0eCwgZ2ZwKTsKPiA+ID4g PiA+ID4gPiArICAgICAgIGVyciA9IHZpcnRxdWV1ZV9hZGRfaW5idWZfY3R4KHJxLT52cSwgcnEt PnNnLCAxLCBkYXRhLCBjdHgsIGdmcCk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICBpZiAoZXJyIDwg MCkKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgcHV0X3BhZ2UodmlydF90b19oZWFkX3Bh Z2UoYnVmKSk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGdvdG8gYWRkX2VycjsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gK2FkZF9lcnI6Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBpZiAocnEt PmRhdGFfYXJyYXkpIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgdmlydG5ldF9ycV91 bm1hcChycSwgZGF0YS0+ZG1hKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgdmlydG5l dF9ycV9yZWN5Y2xlX2RhdGEocnEsIGRhdGEpOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgfQo+ID4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gK21hcF9lcnI6Cj4gPiA+ID4gPiA+ID4gKyAgICAgICBw dXRfcGFnZSh2aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsKPiA+ID4gPiA+ID4gPiAgICAgICAgIHJl dHVybiBlcnI7Cj4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IEBA IC0xNzc1LDEzICsyMDE4LDEzIEBAIHN0YXRpYyBpbnQgdmlydG5ldF9yZWNlaXZlKHN0cnVjdCBy ZWNlaXZlX3F1ZXVlICpycSwgaW50IGJ1ZGdldCwKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAg ICAgdm9pZCAqY3R4Owo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg IHdoaWxlIChzdGF0cy5wYWNrZXRzIDwgYnVkZ2V0ICYmCj4gPiA+ID4gPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAoYnVmID0gdmlydHF1ZXVlX2dldF9idWZfY3R4KHJxLT52cSwgJmxlbiwg JmN0eCkpKSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAoYnVmID0gdmly dG5ldF9ycV9nZXRfYnVmKHJxLCAmbGVuLCAmY3R4KSkpIHsKPiA+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICByZWNlaXZlX2J1Zih2aSwgcnEsIGJ1ZiwgbGVuLCBjdHgsIHhkcF94 bWl0LCAmc3RhdHMpOwo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRz LnBhY2tldHMrKzsKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ ICAgICAgICAgfSBlbHNlIHsKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgd2hpbGUgKHN0 YXRzLnBhY2tldHMgPCBidWRnZXQgJiYKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgIChidWYgPSB2aXJ0cXVldWVfZ2V0X2J1ZihycS0+dnEsICZsZW4pKSAhPSBOVUxMKSB7Cj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAoYnVmID0gdmlydG5ldF9ycV9nZXRf YnVmKHJxLCAmbGVuLCBOVUxMKSkgIT0gTlVMTCkgewo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgIHJlY2VpdmVfYnVmKHZpLCBycSwgYnVmLCBsZW4sIE5VTEwsIHhkcF94bWl0 LCAmc3RhdHMpOwo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLnBh Y2tldHMrKzsKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+IEBA IC0zNTE0LDYgKzM3NTcsOSBAQCBzdGF0aWMgdm9pZCB2aXJ0bmV0X2ZyZWVfcXVldWVzKHN0cnVj dCB2aXJ0bmV0X2luZm8gKnZpKQo+ID4gPiA+ID4gPiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8 IHZpLT5tYXhfcXVldWVfcGFpcnM7IGkrKykgewo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICBfX25ldGlmX25hcGlfZGVsKCZ2aS0+cnFbaV0ubmFwaSk7Cj4gPiA+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIF9fbmV0aWZfbmFwaV9kZWwoJnZpLT5zcVtpXS5uYXBpKTsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGtmcmVlKHZpLT5ycVtpXS5kYXRhX2Fy cmF5KTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAga2ZyZWUodmktPnJxW2ldLmRtYV9h cnJheSk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICB9Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiAgICAgICAgIC8qIFdlIGNhbGxlZCBfX25ldGlmX25hcGlfZGVsKCksCj4gPiA+ID4gPiA+ID4g QEAgLTM1OTEsOSArMzgzNywxMCBAQCBzdGF0aWMgdm9pZCBmcmVlX3VudXNlZF9idWZzKHN0cnVj dCB2aXJ0bmV0X2luZm8gKnZpKQo+ID4gPiA+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdmktPm1heF9xdWV1ZV9wYWly czsgaSsrKSB7Cj4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCB2aXJ0cXVldWUg KnZxID0gdmktPnJxW2ldLnZxOwo+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICB3aGlsZSAo KGJ1ZiA9IHZpcnRxdWV1ZV9kZXRhY2hfdW51c2VkX2J1Zih2cSkpICE9IE5VTEwpCj4gPiA+ID4g PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgdmlydG5ldF9ycV9mcmVlX3VudXNlZF9idWYo dnEsIGJ1Zik7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCByZWNlaXZlX3F1 ZXVlICpycSA9ICZ2aS0+cnFbaV07Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICB3aGlsZSAoKGJ1ZiA9IHZpcnRuZXRfcnFfZGV0YWNoX3VudXNlZF9idWYocnEp KSAhPSBOVUxMKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHZpcnRuZXRf cnFfZnJlZV91bnVzZWRfYnVmKHJxLT52cSwgYnVmKTsKPiA+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgY29uZF9yZXNjaGVkKCk7Cj4gPiA+ID4gPiA+ID4gICAgICAgICB9Cj4gPiA+ID4gPiA+ ID4gIH0KPiA+ID4gPiA+ID4gPiBAQCAtMzc2Nyw2ICs0MDE0LDEwIEBAIHN0YXRpYyBpbnQgaW5p dF92cXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpCj4gPiA+ID4gPiA+ID4gICAgICAgICBpZiAo cmV0KQo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlOwo+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gKyAgICAgICByZXQgPSB2aXJ0bmV0X3JxX21lcmdlX21hcF9p bml0KHZpKTsKPiA+ID4gPiA+ID4gPiArICAgICAgIGlmIChyZXQpCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICAgICAgICAgY3B1c19yZWFkX2xvY2soKTsKPiA+ID4gPiA+ID4gPiAgICAgICAgIHZpcnRuZXRf c2V0X2FmZmluaXR5KHZpKTsKPiA+ID4gPiA+ID4gPiAgICAgICAgIGNwdXNfcmVhZF91bmxvY2so KTsKPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+IDIuMzIuMC4zLmcwMTE5NWNmOWYKPiA+ ID4gPiA+ID4KPiA+ID4gPgo+ID4gPgo+ID4KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxp emF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3Vu ZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u