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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EC46C11F64 for ; Thu, 1 Jul 2021 14:48:26 +0000 (UTC) Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E12A66140C; Thu, 1 Jul 2021 14:48:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E12A66140C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linux-f2fs-devel-bounces@lists.sourceforge.net Received: from [127.0.0.1] (helo=sfs-ml-1.v29.lw.sourceforge.com) by sfs-ml-1.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from ) id 1lyxzN-0006Yd-Ho; Thu, 01 Jul 2021 14:48:25 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyxzM-0006YS-KA for linux-f2fs-devel@lists.sourceforge.net; Thu, 01 Jul 2021 14:48:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: MIME-Version:Date:Message-ID:From:References:To:Subject:Sender:Reply-To:Cc: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=safC79i+IFZ1ll4aNiONtC0oKXsHQF4wDULmLIyZ4Tk=; b=lFGa/jpt3lVCuaEsBKabMw3zmu T6gZV9mQMHmWHMIQA66OQsX3zlPpd6cXGPTn/P0H+uLVbK0oqwB+vkH8YzisROrlSpBaQSaDgGfU6 aMxi0D62fs6S/gPn5N7g21NhwTkxHQskeW4FUQZfRf97NqGPhodPYU68VUNG+QQaWoJo=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=safC79i+IFZ1ll4aNiONtC0oKXsHQF4wDULmLIyZ4Tk=; b=L8MjsJz0QWsdT01COSgZRn015q sPMpN8BwBbgPC7v7kT2zB10BiWpmRo1mv1DQxbgDIxax8f4Dvqf1MyWrqdvhOrIsz9t+IvoIcY/um U6ItaBVmH9yGBrV5JEdSOqd0/Wg+D4/bqP2+p4EhvGHhif/RAIjKCCvzVsruZx4c7SBU=; Received: from mail.kernel.org ([198.145.29.99]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.3) id 1lyxzK-0006Pf-Ch for linux-f2fs-devel@lists.sourceforge.net; Thu, 01 Jul 2021 14:48:24 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1C4F261403; Thu, 1 Jul 2021 14:48:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1625150896; bh=38812wwYyzjuuzOBt66J1WxqMriYnEVhTk9/uyqIGrU=; h=Subject:To:References:From:Date:In-Reply-To:From; b=LDWCXjoPnsM4aT+lb+1KTc6u3DvRMdfbbgHwsXh1joyHnTiX/AUIiBFruNQ6AFvS1 BmX9rRbu+8XdwJzP1MTcuKqkEc0qgDAI56EsTugiHTAhuW7JhMBFF29ZV4jul9cbOx SCq8MCTIjBzlzXJiM9P3PnzeI4MIPY7Ww8oergbSB16HfnXv5+/E74R98zPdPRiGf5 tl3TTwMTk4giwdzW+ZEcS1hLJV3LshuyH9/9ET5y5hULqmDArl7QQNegQ2D21ba1Qx WdSqyb1u6cmIoDViabcMV/usLoZyYm4o9T/7ddgt2WPI1yx1pvuSi5JqNJ2x2KFxfh h0ABEMfP956QQ== To: Fengnan Chang , jaegeuk@kernel.org, linux-f2fs-devel@lists.sourceforge.net References: <20210608111508.162249-1-changfengnan@vivo.com> <8ba2f75b-c6fc-3f28-93c6-15dc71966c11@vivo.com> From: Chao Yu Message-ID: <8600732e-fd00-0c75-e3c4-697223bf65d2@kernel.org> Date: Thu, 1 Jul 2021 22:48:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Headers-End: 1lyxzK-0006Pf-Ch Subject: Re: [f2fs-dev] [PATCH v6] f2fs: compress: add nocompress extensions support X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net SGkgYWxsLAoKSSB0aGluayBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgY2xlYXIsIG5vdCBzdXJlIGFi b3V0IHRoZSBjb21tZW50cywKSmFlZ2V1aywgYW55IGNvbW1lbnRzIG9uIHRoaXMgcGF0Y2gsIEZl bmduYW4gaGFzIHBpbmdlZCBtYW55IHRpbWVzLi4uLgoKTGV0IG1lIGtub3csIGlmIHlvdSBhcmUg dG9vIGJ1c3kgdG8gcmV2aWV3IHRoaXMgcGF0Y2ggdGhlc2UgZGF5cy4KClRoYW5rcwoKT24gMjAy MS83LzEgMTE6MzAsIEZlbmduYW4gQ2hhbmcgd3JvdGU6Cj4gSGkgY2hhbyAmIGphZWdldWs6Cj4g ICAgICBBbnkgY29tbWVudHMgYWJvdXQgdGhpcyB2ZXJzaW9uPyBJdCdzIGhhdmUgYmVlbiBhIHdo aWxl77yMYXJlIHlvdSBub3QKPiBhZ3JlZSB3aXRoIHRoaXMgcGF0Y2g/ICBQZWxhc2UgZ2l2ZSBt ZSBzb21lIGZlZWRiYWNrLgo+IAo+IFRoYW5rcwo+IAo+IE9uIDIwMjEvNi8yMSAxMTozNywgRmVu Z25hbiBDaGFuZyB3cm90ZToKPj4gSGkgY2hhbyAmIGphZWdldWs6Cj4+ICAgwqAgQW55IGNvbW1l bnRzIGFib3V0IHRoaXMgdmVyc2lvbj8KPj4KPj4gVGhhbmtzLgo+Pgo+PiBPbiAyMDIxLzYvOCAx OToxNSwgRmVuZ25hbiBDaGFuZyB3cm90ZToKPj4+IFdoZW4gd2UgY3JlYXRlIGEgZGlyZWN0b3J5 IHdpdGggZW5hYmxlIGNvbXByZXNzaW9uLCBhbGwgZmlsZSB3cml0ZSBpbnRvCj4+PiBkaXJlY3Rv cnkgd2lsbCB0cnkgdG8gY29tcHJlc3MuQnV0IHNvbWV0aW1lcyB3ZSBtYXkga25vdywgbmV3IGZp bGUKPj4+IGNhbm5vdCBtZWV0IGNvbXByZXNzaW9uIHJhdGlvIHJlcXVpcmVtZW50cy4KPj4+IFdl IG5lZWQgYSBub2NvbXByZXNzIGV4dGVuc2lvbiB0byBza2lwIHRob3NlIGZpbGVzIHRvIGF2b2lk IHVubmVjZXNzYXJ5Cj4+PiBjb21wcmVzcyBwYWdlIHRlc3QuCj4+Pgo+Pj4gQWZ0ZXIgYWRkIG5v Y29tcHJlc3NfZXh0ZW5zaW9uLCB0aGUgcHJpb3JpdHkgc2hvdWxkIGJlOgo+Pj4gZGlyX2ZsYWcg PCBjb21wX2V4dGVudGlvbixub2NvbXByZXNzX2V4dGVuc2lvbiA8IGNvbXBfZmlsZV9mbGFnLAo+ Pj4gbm9fY29tcF9maWxlX2ZsYWcuCj4+Pgo+Pj4gUHJpb3JpdHkgaW4gYmV0d2VlbiBGU19DT01Q Ul9GTCwgRlNfTk9DT01QX0ZTLCBleHRlbnNpb25zOgo+Pj4gIMKgwqDCoCAqIGNvbXByZXNzX2V4 dGVuc2lvbj1zbzsgbm9jb21wcmVzc19leHRlbnNpb249emlwOyBjaGF0dHIgK2MgZGlyOwo+Pj4g IMKgwqDCoMKgwqAgdG91Y2ggZGlyL2Zvby5zbzsgdG91Y2ggZGlyL2Jhci56aXA7IHRvdWNoIGRp ci9iYXoudHh0OyB0aGVuIGZvby5zbwo+Pj4gIMKgwqDCoMKgwqAgYW5kIGJhei50eHQgc2hvdWxk IGJlIGNvbXByZXNzZSwgYmFyLnppcCBzaG91bGQgYmUgbm9uLWNvbXByZXNzZWQuCj4+PiAgwqDC oMKgwqDCoCBjaGF0dHIgK2MgZGlyL2Jhci56aXAgY2FuIGVuYWJsZSBjb21wcmVzcyBvbiBiYXIu emlwLgo+Pj4gIMKgwqDCoCAqIGNvbXByZXNzX2V4dGVuc2lvbj1zbzsgbm9jb21wcmVzc19leHRl bnNpb249emlwOyBjaGF0dHIgLWMgZGlyOwo+Pj4gIMKgwqDCoMKgwqAgdG91Y2ggZGlyL2Zvby5z bzsgdG91Y2ggZGlyL2Jhci56aXA7IHRvdWNoIGRpci9iYXoudHh0OyB0aGVuIGZvby5zbwo+Pj4g IMKgwqDCoMKgwqAgc2hvdWxkIGJlIGNvbXByZXNzZSwgYmFyLnppcCBhbmQgYmF6LnR4dCBzaG91 bGQgYmUgbm9uLWNvbXByZXNzZWQuCj4+PiAgwqDCoMKgwqDCoCBjaGF0dHIrYyBkaXIvYmFyLnpp cDsgY2hhdHRyK2MgZGlyL2Jhei50eHQ7IGNhbiBlbmFibGUgY29tcHJlc3Mgb24KPj4+ICDCoMKg wqDCoMKgIGJhci56aXAgYW5kIGJhei50eHQuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogRmVuZ25h biBDaGFuZyA8Y2hhbmdmZW5nbmFuQHZpdm8uY29tPgo+Pj4gLS0tCj4+PiAgwqAgRG9jdW1lbnRh dGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdCB8IDMxICsrKysrKysrKysrLQo+Pj4gIMKgIGZzL2Yy ZnMvZjJmcy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMiAr Cj4+PiAgwqAgZnMvZjJmcy9uYW1laS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAxOCArKysrKy0tCj4+PiAgwqAgZnMvZjJmcy9zdXBlci5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPj4+ICDCoCA0IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMu cnN0Cj4+PiBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QKPj4+IGluZGV4IDk5 MmJmOTFlZWVjOC4uYzY4ZjFjODIyNjY1IDEwMDY0NAo+Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9m aWxlc3lzdGVtcy9mMmZzLnJzdAo+Pj4gKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9m MmZzLnJzdAo+Pj4gQEAgLTI4MSw2ICsyODEsMTggQEAgY29tcHJlc3NfZXh0ZW5zaW9uPSVzwqDC oMKgwqAgU3VwcG9ydCBhZGRpbmcKPj4+IHNwZWNpZmllZCBleHRlbnNpb24sIHNvIHRoYXQgZjJm cyBjYW4gZW5hYgo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRm9yIG90aGVyIGZp bGVzLCB3ZSBjYW4gc3RpbGwgZW5hYmxlIGNvbXByZXNzaW9uIHZpYQo+Pj4gaW9jdGwuCj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOb3RlIHRoYXQsIHRoZXJlIGlzIG9uZSByZXNl cnZlZCBzcGVjaWFsIGV4dGVuc2lvbiAnKicsIGl0Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjYW4gYmUgc2V0IHRvIGVuYWJsZSBjb21wcmVzc2lvbiBmb3IgYWxsIGZpbGVzLgo+ Pj4gK25vY29tcHJlc3NfZXh0ZW5zaW9uPSVzwqDCoMKgwqDCoMKgIFN1cHBvcnQgYWRkaW5nIHNw ZWNpZmllZCBleHRlbnNpb24sIHNvCj4+PiB0aGF0IGYyZnMgY2FuIGRpc2FibGUKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29tcHJlc3Npb24gb24gdGhvc2UgY29ycmVzcG9uZGluZyBm aWxlcywganVzdCBjb250cmFyeQo+Pj4gdG8gY29tcHJlc3Npb24gZXh0ZW5zaW9uLgo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJZiB5b3Uga25vdyBleGFjdGx5IHdoaWNoIGZpbGVzIGNh bm5vdCBiZSBjb21wcmVzc2VkLAo+Pj4geW91IGNhbiB1c2UgdGhpcy4KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgVGhlIHNhbWUgZXh0ZW5zaW9uIG5hbWUgY2FuJ3QgYXBwZWFyIGluIGJv dGggY29tcHJlc3MKPj4+IGFuZCBub2NvbXByZXNzCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGV4dGVuc2lvbiBhdCB0aGUgc2FtZSB0aW1lLgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBJZiB0aGUgY29tcHJlc3MgZXh0ZW5zaW9uIHNwZWNpZmllcyBhbGwgZmlsZXMsIHRoZSB0 eXBlcwo+Pj4gc3BlY2lmaWVkIGJ5IHRoZQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBu b2NvbXByZXNzIGV4dGVuc2lvbiB3aWxsIGJlIHRyZWF0ZWQgYXMgc3BlY2lhbCBjYXNlcwo+Pj4g YW5kIHdpbGwgbm90IGJlIGNvbXByZXNzZWQuCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IERvbid0IGFsbG93IHVzZSAnKicgdG8gc3BlY2lmaWUgYWxsIGZpbGUgaW4gbm9jb21wcmVzcwo+ Pj4gZXh0ZW5zaW9uLgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBZnRlciBhZGQgbm9j b21wcmVzc19leHRlbnNpb24sIHRoZSBwcmlvcml0eSBzaG91bGQgYmU6Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRpcl9mbGFnIDwgY29tcF9leHRlbnRpb24sbm9jb21wcmVzc19leHRl bnNpb24gPAo+Pj4gY29tcF9maWxlX2ZsYWcsbm9fY29tcF9maWxlX2ZsYWcuCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFNlZSBtb3JlIGluIGNvbXByZXNzaW9uIHNlY3Rpb25zLgo+Pj4g Kwo+Pj4gIMKgIGNvbXByZXNzX2Noa3N1bcKgwqDCoMKgwqDCoMKgwqAgU3VwcG9ydCB2ZXJpZnlp bmcgY2hrc3VtIG9mIHJhdyBkYXRhIGluCj4+PiBjb21wcmVzc2VkIGNsdXN0ZXIuCj4+PiAgwqAg Y29tcHJlc3NfbW9kZT0lc8KgwqDCoMKgIENvbnRyb2wgZmlsZSBjb21wcmVzc2lvbiBtb2RlLiBU aGlzIHN1cHBvcnRzCj4+PiAiZnMiIGFuZCAidXNlciIKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG1vZGVzLiBJbiAiZnMiIG1vZGUgKGRlZmF1bHQpLCBmMmZzIGRvZXMgYXV0b21h dGljCj4+PiBjb21wcmVzc2lvbgo+Pj4gQEAgLTgxNCwxMyArODI2LDMwIEBAIENvbXByZXNzaW9u IGltcGxlbWVudGF0aW9uCj4+PiAgwqDCoMKgIGFsbCBsb2dpY2FsIGJsb2NrcyBpbiBjbHVzdGVy IGNvbnRhaW4gdmFsaWQgZGF0YSBhbmQgY29tcHJlc3MKPj4+IHJhdGlvIG9mCj4+PiAgwqDCoMKg IGNsdXN0ZXIgZGF0YSBpcyBsb3dlciB0aGFuIHNwZWNpZmllZCB0aHJlc2hvbGQuCj4+PiAtLSBU byBlbmFibGUgY29tcHJlc3Npb24gb24gcmVndWxhciBpbm9kZSwgdGhlcmUgYXJlIHRocmVlIHdh eXM6Cj4+PiArLSBUbyBlbmFibGUgY29tcHJlc3Npb24gb24gcmVndWxhciBpbm9kZSwgdGhlcmUg YXJlIGZvdXIgd2F5czoKPj4+ICDCoMKgwqAgKiBjaGF0dHIgK2MgZmlsZQo+Pj4gIMKgwqDCoCAq IGNoYXR0ciArYyBkaXI7IHRvdWNoIGRpci9maWxlCj4+PiAgwqDCoMKgICogbW91bnQgdy8gLW8g Y29tcHJlc3NfZXh0ZW5zaW9uPWV4dDsgdG91Y2ggZmlsZS5leHQKPj4+ICDCoMKgwqAgKiBtb3Vu dCB3LyAtbyBjb21wcmVzc19leHRlbnNpb249KjsgdG91Y2ggYW55X2ZpbGUKPj4+ICstIFRvIGRp c2FibGUgY29tcHJlc3Npb24gb24gcmVndWxhciBpbm9kZSwgdGhlcmUgYXJlIHR3byB3YXlzOgo+ Pj4gKwo+Pj4gK8KgICogY2hhdHRyIC1jIGZpbGUKPj4+ICvCoCAqIG1vdW50IHcvIC1vIG5vY29t cHJlc3NfZXh0ZW5zaW9uPWV4dDsgdG91Y2ggZmlsZS5leHQKPj4+ICsKPj4+ICstIFByaW9yaXR5 IGluIGJldHdlZW4gRlNfQ09NUFJfRkwsIEZTX05PQ09NUF9GUywgZXh0ZW5zaW9uczoKPj4+ICsK Pj4+ICvCoCAqIGNvbXByZXNzX2V4dGVuc2lvbj1zbzsgbm9jb21wcmVzc19leHRlbnNpb249emlw OyBjaGF0dHIgK2MgZGlyOwo+Pj4gdG91Y2gKPj4+ICvCoMKgwqAgZGlyL2Zvby5zbzsgdG91Y2gg ZGlyL2Jhci56aXA7IHRvdWNoIGRpci9iYXoudHh0OyB0aGVuIGZvby5zbyBhbmQKPj4+IGJhei50 eHQKPj4+ICvCoMKgwqAgc2hvdWxkIGJlIGNvbXByZXNzZSwgYmFyLnppcCBzaG91bGQgYmUgbm9u LWNvbXByZXNzZWQuIGNoYXR0ciArYwo+Pj4gZGlyL2Jhci56aXAKPj4+ICvCoMKgwqAgY2FuIGVu YWJsZSBjb21wcmVzcyBvbiBiYXIuemlwLgo+Pj4gK8KgICogY29tcHJlc3NfZXh0ZW5zaW9uPXNv OyBub2NvbXByZXNzX2V4dGVuc2lvbj16aXA7IGNoYXR0ciAtYyBkaXI7Cj4+PiB0b3VjaAo+Pj4g K8KgwqDCoCBkaXIvZm9vLnNvOyB0b3VjaCBkaXIvYmFyLnppcDsgdG91Y2ggZGlyL2Jhei50eHQ7 IHRoZW4gZm9vLnNvCj4+PiBzaG91bGQgYmUKPj4+ICvCoMKgwqAgY29tcHJlc3NlLCBiYXIuemlw IGFuZCBiYXoudHh0IHNob3VsZCBiZSBub24tY29tcHJlc3NlZC4KPj4+ICvCoMKgwqAgY2hhdHRy K2MgZGlyL2Jhci56aXA7IGNoYXR0citjIGRpci9iYXoudHh0OyBjYW4gZW5hYmxlIGNvbXByZXNz Cj4+PiBvbiBiYXIuemlwCj4+PiArwqDCoMKgIGFuZCBiYXoudHh0Lgo+Pj4gKwo+Pj4gIMKgIC0g QXQgdGhpcyBwb2ludCwgY29tcHJlc3Npb24gZmVhdHVyZSBkb2Vzbid0IGV4cG9zZSBjb21wcmVz c2VkIHNwYWNlCj4+PiB0byB1c2VyCj4+PiAgwqDCoMKgIGRpcmVjdGx5IGluIG9yZGVyIHRvIGd1 YXJhbnRlZSBwb3RlbnRpYWwgZGF0YSB1cGRhdGVzIGxhdGVyIHRvIHRoZQo+Pj4gc3BhY2UuCj4+ PiAgwqDCoMKgIEluc3RlYWQsIHRoZSBtYWluIGdvYWwgaXMgdG8gcmVkdWNlIGRhdGEgd3JpdGVz IHRvIGZsYXNoIGRpc2sgYXMKPj4+IG11Y2ggYXMKPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2Yy ZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4+PiBpbmRleCA5YWQ1MDJmOTI1MjkuLjdkMTNkNGQ2NGQ1 OSAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4+PiArKysgYi9mcy9mMmZzL2YyZnMu aAo+Pj4gQEAgLTE1MCw4ICsxNTAsMTAgQEAgc3RydWN0IGYyZnNfbW91bnRfaW5mbyB7Cj4+PiAg wqDCoMKgwqDCoCB1bnNpZ25lZCBjaGFyIGNvbXByZXNzX2xldmVsO8KgwqDCoMKgwqDCoMKgIC8q IGNvbXByZXNzIGxldmVsICovCj4+PiAgwqDCoMKgwqDCoCBib29sIGNvbXByZXNzX2Noa3N1bTvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGNvbXByZXNzZWQgZGF0YSBjaGtzdW0gKi8KPj4+ICDC oMKgwqDCoMKgIHVuc2lnbmVkIGNoYXIgY29tcHJlc3NfZXh0X2NudDvCoMKgwqDCoMKgwqDCoCAv KiBleHRlbnNpb24gY291bnQgKi8KPj4+ICvCoMKgwqAgdW5zaWduZWQgY2hhciBub2NvbXByZXNz X2V4dF9jbnQ7wqDCoMKgwqDCoMKgwqAgLyogbm9jb21wcmVzcyBleHRlbnNpb24KPj4+IGNvdW50 ICovCj4+PiAgwqDCoMKgwqDCoCBpbnQgY29tcHJlc3NfbW9kZTvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC8qIGNvbXByZXNzaW9uIG1vZGUgKi8KPj4+ICDCoMKgwqDCoMKgIHVuc2lnbmVkIGNoYXIK Pj4+IGV4dGVuc2lvbnNbQ09NUFJFU1NfRVhUX05VTV1bRjJGU19FWFRFTlNJT05fTEVOXTvCoMKg wqAgLyogZXh0ZW5zaW9ucyAqLwo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBjaGFyIG5vZXh0ZW5zaW9u c1tDT01QUkVTU19FWFRfTlVNXVtGMkZTX0VYVEVOU0lPTl9MRU5dOwo+Pj4gLyogZXh0ZW5zaW9u cyAqLwo+Pj4gIMKgIH07Cj4+PiAgwqAgI2RlZmluZSBGMkZTX0ZFQVRVUkVfRU5DUllQVMKgwqDC oMKgwqDCoMKgIDB4MDAwMQo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvbmFtZWkuYyBiL2ZzL2Yy ZnMvbmFtZWkuYwo+Pj4gaW5kZXggZDQxMzllMTY2Yjk1Li5mMzQzODQyZGE0ZjMgMTAwNjQ0Cj4+ PiAtLS0gYS9mcy9mMmZzL25hbWVpLmMKPj4+ICsrKyBiL2ZzL2YyZnMvbmFtZWkuYwo+Pj4gQEAg LTI4NywxNCArMjg3LDE2IEBAIHN0YXRpYyB2b2lkIHNldF9jb21wcmVzc19pbm9kZShzdHJ1Y3QK Pj4+IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKm5hbWUpCj4+PiAgwqAgewo+Pj4gIMKgwqDCoMKgwqAgX191OCAoKmV4dGxpc3QpW0Yy RlNfRVhURU5TSU9OX0xFTl0gPQo+Pj4gc2JpLT5yYXdfc3VwZXItPmV4dGVuc2lvbl9saXN0Owo+ Pj4gK8KgwqDCoCB1bnNpZ25lZCBjaGFyICgqbm9leHQpW0YyRlNfRVhURU5TSU9OX0xFTl0gPQo+ Pj4gRjJGU19PUFRJT04oc2JpKS5ub2V4dGVuc2lvbnM7Cj4+PiAgwqDCoMKgwqDCoCB1bnNpZ25l ZCBjaGFyICgqZXh0KVtGMkZTX0VYVEVOU0lPTl9MRU5dOwo+Pj4gLcKgwqDCoCB1bnNpZ25lZCBp bnQgZXh0X2NudCA9IEYyRlNfT1BUSU9OKHNiaSkuY29tcHJlc3NfZXh0X2NudDsKPj4+ICvCoMKg wqAgdW5zaWduZWQgY2hhciBleHRfY250ID0gRjJGU19PUFRJT04oc2JpKS5jb21wcmVzc19leHRf Y250Owo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBjaGFyIG5vZXh0X2NudCA9IEYyRlNfT1BUSU9OKHNi aSkubm9jb21wcmVzc19leHRfY250Owo+Pj4gIMKgwqDCoMKgwqAgaW50IGksIGNvbGRfY291bnQs IGhvdF9jb3VudDsKPj4+ICDCoMKgwqDCoMKgIGlmICghZjJmc19zYl9oYXNfY29tcHJlc3Npb24o c2JpKSB8fAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXNfaW5vZGVfZmxhZ19zZXQoaW5v ZGUsIEZJX0NPTVBSRVNTRURfRklMRSkgfHwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBGMkZTX0koaW5vZGUpLT5pX2ZsYWdzICYgRjJGU19OT0NPTVBfRkwgfHwKPj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgICFmMmZzX21heV9jb21wcmVzcyhpbm9kZSkpCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAhZjJmc19tYXlfY29tcHJlc3MoaW5vZGUpIHx8Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoIWV4dF9jbnQgJiYgIW5vZXh0X2NudCkpCj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybjsKPj4+ICDCoMKgwqDCoMKgIGRvd25fcmVhZCgmc2JpLT5zYl9sb2NrKTsK Pj4+IEBAIC0zMTEsNiArMzEzLDE2IEBAIHN0YXRpYyB2b2lkIHNldF9jb21wcmVzc19pbm9kZShz dHJ1Y3QKPj4+IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+Pj4gIMKg wqDCoMKgwqAgdXBfcmVhZCgmc2JpLT5zYl9sb2NrKTsKPj4+ICvCoMKgwqAgZm9yIChpID0gMDsg aSA8IG5vZXh0X2NudDsgaSsrKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlzX2V4dGVuc2lv bl9leGlzdChuYW1lLCBub2V4dFtpXSkpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYy ZnNfZGlzYWJsZV9jb21wcmVzc2VkX2ZpbGUoaW5vZGUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+ICvCoMKgwqAgfQo+Pj4gKwo+ Pj4gK8KgwqDCoCBpZiAoaXNfaW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJX0NPTVBSRVNTRURfRklM RSkpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4gKwo+Pj4gIMKgwqDCoMKgwqAgZXh0 ID0gRjJGU19PUFRJT04oc2JpKS5leHRlbnNpb25zOwo+Pj4gIMKgwqDCoMKgwqAgZm9yIChpID0g MDsgaSA8IGV4dF9jbnQ7IGkrKykgewo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc3VwZXIuYyBi L2ZzL2YyZnMvc3VwZXIuYwo+Pj4gaW5kZXggNjc4OGU3YjcxZTI3Li5lNzIwMzIzYjkwMGMgMTAw NjQ0Cj4+PiAtLS0gYS9mcy9mMmZzL3N1cGVyLmMKPj4+ICsrKyBiL2ZzL2YyZnMvc3VwZXIuYwo+ Pj4gQEAgLTE0OCw2ICsxNDgsNyBAQCBlbnVtIHsKPj4+ICDCoMKgwqDCoMKgIE9wdF9jb21wcmVz c19hbGdvcml0aG0sCj4+PiAgwqDCoMKgwqDCoCBPcHRfY29tcHJlc3NfbG9nX3NpemUsCj4+PiAg wqDCoMKgwqDCoCBPcHRfY29tcHJlc3NfZXh0ZW5zaW9uLAo+Pj4gK8KgwqDCoCBPcHRfbm9jb21w cmVzc19leHRlbnNpb24sCj4+PiAgwqDCoMKgwqDCoCBPcHRfY29tcHJlc3NfY2hrc3VtLAo+Pj4g IMKgwqDCoMKgwqAgT3B0X2NvbXByZXNzX21vZGUsCj4+PiAgwqDCoMKgwqDCoCBPcHRfYXRnYywK Pj4+IEBAIC0yMjIsNiArMjIzLDcgQEAgc3RhdGljIG1hdGNoX3RhYmxlX3QgZjJmc190b2tlbnMg PSB7Cj4+PiAgwqDCoMKgwqDCoCB7T3B0X2NvbXByZXNzX2FsZ29yaXRobSwgImNvbXByZXNzX2Fs Z29yaXRobT0lcyJ9LAo+Pj4gIMKgwqDCoMKgwqAge09wdF9jb21wcmVzc19sb2dfc2l6ZSwgImNv bXByZXNzX2xvZ19zaXplPSV1In0sCj4+PiAgwqDCoMKgwqDCoCB7T3B0X2NvbXByZXNzX2V4dGVu c2lvbiwgImNvbXByZXNzX2V4dGVuc2lvbj0lcyJ9LAo+Pj4gK8KgwqDCoCB7T3B0X25vY29tcHJl c3NfZXh0ZW5zaW9uLCAibm9jb21wcmVzc19leHRlbnNpb249JXMifSwKPj4+ICDCoMKgwqDCoMKg IHtPcHRfY29tcHJlc3NfY2hrc3VtLCAiY29tcHJlc3NfY2hrc3VtIn0sCj4+PiAgwqDCoMKgwqDC oCB7T3B0X2NvbXByZXNzX21vZGUsICJjb21wcmVzc19tb2RlPSVzIn0sCj4+PiAgwqDCoMKgwqDC oCB7T3B0X2F0Z2MsICJhdGdjIn0sCj4+PiBAQCAtNDczLDYgKzQ3NSw0MyBAQCBzdGF0aWMgaW50 IGYyZnNfc2V0X3Rlc3RfZHVtbXlfZW5jcnlwdGlvbihzdHJ1Y3QKPj4+IHN1cGVyX2Jsb2NrICpz YiwKPj4+ICDCoCB9Cj4+PiAgwqAgI2lmZGVmIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OCj4+ PiArLyoKPj4+ICsgKiAxLiBUaGUgc2FtZSBleHRlbnNpb24gbmFtZSBjYW5ub3Qgbm90IGFwcGVh ciBpbiBib3RoIGNvbXByZXNzIGFuZAo+Pj4gbm9uLWNvbXByZXNzIGV4dGVuc2lvbgo+Pj4gKyAq IGF0IHRoZSBzYW1lIHRpbWUuCj4+PiArICogMi4gSWYgdGhlIGNvbXByZXNzIGV4dGVuc2lvbiBz cGVjaWZpZXMgYWxsIGZpbGVzLCB0aGUgdHlwZXMKPj4+IHNwZWNpZmllZCBieSB0aGUgbm9uLWNv bXByZXNzCj4+PiArICogZXh0ZW5zaW9uIHdpbGwgYmUgdHJlYXRlZCBhcyBzcGVjaWFsIGNhc2Vz IGFuZCB3aWxsIG5vdCBiZQo+Pj4gY29tcHJlc3NlZC4KPj4+ICsgKiAzLiBEb24ndCBhbGxvdyB0 aGUgbm9uLWNvbXByZXNzIGV4dGVuc2lvbiBzcGVjaWZpZXMgYWxsIGZpbGVzLgo+Pj4gKyAqLwo+ Pj4gK3N0YXRpYyBpbnQgZjJmc190ZXN0X2NvbXByZXNzX2V4dGVuc2lvbihzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmkpCj4+PiArewo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBjaGFyICgqZXh0KVtGMkZT X0VYVEVOU0lPTl9MRU5dOwo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBjaGFyICgqbm9leHQpW0YyRlNf RVhURU5TSU9OX0xFTl07Cj4+PiArwqDCoMKgIGludCBleHRfY250LCBub2V4dF9jbnQsIGluZGV4 ID0gMCwgbm9faW5kZXggPSAwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBleHQgPSBGMkZTX09QVElPTihz YmkpLmV4dGVuc2lvbnM7Cj4+PiArwqDCoMKgIGV4dF9jbnQgPSBGMkZTX09QVElPTihzYmkpLmNv bXByZXNzX2V4dF9jbnQ7Cj4+PiArwqDCoMKgIG5vZXh0ID0gRjJGU19PUFRJT04oc2JpKS5ub2V4 dGVuc2lvbnM7Cj4+PiArwqDCoMKgIG5vZXh0X2NudCA9IEYyRlNfT1BUSU9OKHNiaSkubm9jb21w cmVzc19leHRfY250Owo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoIW5vZXh0X2NudCkKPj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+ICsKPj4+ICvCoMKgwqAgZm9yIChub19pbmRleCA9IDA7 IG5vX2luZGV4IDwgbm9leHRfY250OyBub19pbmRleCsrKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAg aWYgKCFzdHJjYXNlY21wKCIqIiwgbm9leHRbbm9faW5kZXhdKSkgewo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZjJmc19pbmZvKHNiaSwgIkRvbid0IGFsbG93IHRoZSBub2NvbXByZXNzIGV4 dGVuc2lvbgo+Pj4gc3BlY2lmaWVzIGFsbCBmaWxlcyIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArwqDCoMKgwqDCoMKgwqAgfQo+Pj4gK8KgwqDCoMKg wqDCoMKgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGV4dF9jbnQ7IGluZGV4KyspIHsKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghc3RyY2FzZWNtcChleHRbaW5kZXhdLCBub2V4dFtu b19pbmRleF0pKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYyZnNfaW5m byhzYmksICJEb24ndCBhbGxvdyB0aGUgc2FtZSBleHRlbnNpb24gJXMKPj4+IGFwcGVhciBpbiBi b3RoIGNvbXByZXNzIGFuZCBub2NvbXByZXNzIGV4dGVuc2lvbiIsCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHRbaW5kZXhdKTsKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB9Cj4+PiArwqDCoMKgwqDCoMKgwqAgfQo+Pj4gK8KgwqDCoCB9Cj4+PiAr wqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICDCoCAjaWZkZWYgQ09ORklHX0YyRlNf RlNfTFo0Cj4+PiAgwqAgc3RhdGljIGludCBmMmZzX3NldF9sejRoY19sZXZlbChzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIGNvbnN0IGNoYXIKPj4+ICpzdHIpCj4+PiAgwqAgewo+Pj4gQEAgLTU0 Niw3ICs1ODUsOCBAQCBzdGF0aWMgaW50IHBhcnNlX29wdGlvbnMoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzYiwKPj4+IGNoYXIgKm9wdGlvbnMsIGJvb2wgaXNfcmVtb3VudCkKPj4+ICDCoMKgwqDCoMKg IHN1YnN0cmluZ190IGFyZ3NbTUFYX09QVF9BUkdTXTsKPj4+ICDCoCAjaWZkZWYgQ09ORklHX0Yy RlNfRlNfQ09NUFJFU1NJT04KPj4+ICDCoMKgwqDCoMKgIHVuc2lnbmVkIGNoYXIgKCpleHQpW0Yy RlNfRVhURU5TSU9OX0xFTl07Cj4+PiAtwqDCoMKgIGludCBleHRfY250Owo+Pj4gK8KgwqDCoCB1 bnNpZ25lZCBjaGFyICgqbm9leHQpW0YyRlNfRVhURU5TSU9OX0xFTl07Cj4+PiArwqDCoMKgIGlu dCBleHRfY250LCBub2V4dF9jbnQ7Cj4+PiAgwqAgI2VuZGlmCj4+PiAgwqDCoMKgwqDCoCBjaGFy ICpwLCAqbmFtZTsKPj4+ICDCoMKgwqDCoMKgIGludCBhcmcgPSAwOwo+Pj4gQEAgLTEwNDksNiAr MTA4OSwzMCBAQCBzdGF0aWMgaW50IHBhcnNlX29wdGlvbnMoc3RydWN0IHN1cGVyX2Jsb2NrCj4+ PiAqc2IsIGNoYXIgKm9wdGlvbnMsIGJvb2wgaXNfcmVtb3VudCkKPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBGMkZTX09QVElPTihzYmkpLmNvbXByZXNzX2V4dF9jbnQrKzsKPj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShuYW1lKTsKPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIE9wdF9ub2NvbXBy ZXNzX2V4dGVuc2lvbjoKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghZjJmc19zYl9o YXNfY29tcHJlc3Npb24oc2JpKSkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmMmZzX2luZm8oc2JpLCAiSW1hZ2UgZG9lc24ndCBzdXBwb3J0IGNvbXByZXNzaW9uIik7Cj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmFtZSA9IG1hdGNoX3N0 cmR1cCgmYXJnc1swXSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIW5hbWUpCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+Pj4gKwo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbm9leHQgPSBGMkZTX09QVElPTihzYmkpLm5vZXh0 ZW5zaW9uczsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5vZXh0X2NudCA9IEYyRlNfT1BU SU9OKHNiaSkubm9jb21wcmVzc19leHRfY250Owo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKHN0cmxlbihuYW1lKSA+PSBGMkZTX0VYVEVOU0lPTl9MRU4gfHwKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbm9leHRfY250ID49IENPTVBSRVNTX0VYVF9OVU0p IHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZjJmc19lcnIoc2JpLAo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJpbnZhbGlkIGV4dGVuc2lv biBsZW5ndGgvbnVtYmVyIik7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtm cmVlKG5hbWUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJ TlZBTDsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cmNweShub2V4dFtub2V4dF9jbnRdLCBuYW1lKTsKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEYyRlNfT1BUSU9OKHNiaSkubm9jb21wcmVzc19leHRfY250Kys7Cj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShuYW1lKTsKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIE9wdF9jb21wcmVz c19jaGtzdW06Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRjJGU19PUFRJT04oc2Jp KS5jb21wcmVzc19jaGtzdW0gPSB0cnVlOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJyZWFrOwo+Pj4gQEAgLTEwNzAsNiArMTEzNCw3IEBAIHN0YXRpYyBpbnQgcGFyc2Vfb3B0aW9u cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAo+Pj4gY2hhciAqb3B0aW9ucywgYm9vbCBpc19yZW1v dW50KQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIE9wdF9jb21wcmVzc19hbGdvcml0aG06 Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgT3B0X2NvbXByZXNzX2xvZ19zaXplOgo+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIE9wdF9jb21wcmVzc19leHRlbnNpb246Cj4+PiArwqDC oMKgwqDCoMKgwqAgY2FzZSBPcHRfbm9jb21wcmVzc19leHRlbnNpb246Cj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgIGNhc2UgT3B0X2NvbXByZXNzX2Noa3N1bToKPj4+ICDCoMKgwqDCoMKgwqDCoMKg wqAgY2FzZSBPcHRfY29tcHJlc3NfbW9kZToKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmMmZzX2luZm8oc2JpLCAiY29tcHJlc3Npb24gb3B0aW9ucyBub3Qgc3VwcG9ydGVkIik7Cj4+ PiBAQCAtMTEyMyw2ICsxMTg4LDEzIEBAIHN0YXRpYyBpbnQgcGFyc2Vfb3B0aW9ucyhzdHJ1Y3Qg c3VwZXJfYmxvY2sKPj4+ICpzYiwgY2hhciAqb3B0aW9ucywgYm9vbCBpc19yZW1vdW50KQo+Pj4g IMKgwqDCoMKgwqAgfQo+Pj4gIMKgICNlbmRpZgo+Pj4gKyNpZmRlZiBDT05GSUdfRjJGU19GU19D T01QUkVTU0lPTgo+Pj4gK8KgwqDCoCBpZiAoZjJmc190ZXN0X2NvbXByZXNzX2V4dGVuc2lvbihz YmkpKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgZjJmc19lcnIoc2JpLCAiaW52YWxpZCBjb21wcmVz cyBvciBub2NvbXByZXNzIGV4dGVuc2lvbiIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAt RUlOVkFMOwo+Pj4gK8KgwqDCoCB9Cj4+PiArI2VuZGlmCj4+PiArCj4+PiAgwqDCoMKgwqDCoCBp ZiAoRjJGU19JT19TSVpFX0JJVFMoc2JpKSAmJiAhZjJmc19sZnNfbW9kZShzYmkpKSB7Cj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgIGYyZnNfZXJyKHNiaSwgIlNob3VsZCBzZXQgbW9kZT1sZnMgd2l0 aCAldUtCLXNpemVkIElPIiwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEYyRlNf SU9fU0laRV9LQihzYmkpKTsKPj4+IEBAIC0xNjcxLDYgKzE3NDMsMTEgQEAgc3RhdGljIGlubGlu ZSB2b2lkCj4+PiBmMmZzX3Nob3dfY29tcHJlc3Nfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNl cSwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGMkZTX09QVElPTihzYmkpLmV4dGVu c2lvbnNbaV0pOwo+Pj4gIMKgwqDCoMKgwqAgfQo+Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwg RjJGU19PUFRJT04oc2JpKS5ub2NvbXByZXNzX2V4dF9jbnQ7IGkrKykgewo+Pj4gK8KgwqDCoMKg wqDCoMKgIHNlcV9wcmludGYoc2VxLCAiLG5vY29tcHJlc3NfZXh0ZW5zaW9uPSVzIiwKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEYyRlNfT1BUSU9OKHNiaSkubm9leHRlbnNpb25zW2ldKTsK Pj4+ICvCoMKgwqAgfQo+Pj4gKwo+Pj4gIMKgwqDCoMKgwqAgaWYgKEYyRlNfT1BUSU9OKHNiaSku Y29tcHJlc3NfY2hrc3VtKQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBzZXFfcHV0cyhzZXEsICIs Y29tcHJlc3NfY2hrc3VtIik7Cj4+PgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMt ZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0 L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK