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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 AB184C77B73 for ; Tue, 6 Jun 2023 07:11:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=KYTCE79Q9CaE/gff6+FQXsyTut6Sy48cybyBJm1h8gc=; b=UqHPurU6vpjtGI aerJdpgcevhakWjghI3BGISHFR87ZTk9ijXS86D7HXScUViV9ka93l/cR7XB+QEl475K6DCVgCdif pX9xEio8j42B+GsrIUk8L1VuU6fkFpeF+LEa1cX+ZPLKj6TD+Nvmg/oPw6Aoo+ClXC3/CFYOdAkau ORBs5WLZDu8CkO5CvOgwOi36oPu3KjqtKqQvn8TvecMpFy6DBnyn0/XpQVwY69oaM2AJRwFhUoTNW /xpAnLKBdWUnBYJ3gDcN8KK8XObQmKq53C+U/yHL4NjJdy4PukNm2p0fG4rd0jOTk5DG4GNCcCBV4 m66DEs50FQqhXcAu0vCQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q6Qqg-000UCZ-0w; Tue, 06 Jun 2023 07:11:22 +0000 Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q6Qqb-000UAA-2Y; Tue, 06 Jun 2023 07:11:20 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1686035471; 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=rFJmCcMrQ4DjHJjPGf914EBlWwvSR6LF8KLemTrPksU=; b=naaUZgc6f6dgY5UzpsA9KAQODJUQtw2fskLovj217gC8HaaeSwzxtIe+/DXyDkUgNxDSmM rAQ2xwRU3vmdnqnaZGX1chK7I/3lD2c2laZ/3azlYOSEWKczGLvi9RN1mbOcIm4qZxBklN yOYGe4H6a5XgSj/2mzgcQ+dvpcJpEMRtVEisRQjbowY/DDuZfWYkieuMmjOayZkv1ESuuZ Hk42JbB5OqWoRlFaAmCl+pcQIkRru/HCi8fufkllxjsbtV/5YMZLxQt7loMIMeFYocG1iC /RkRk7MVgVEkZUZv3zQdiwdl8jh4ebm8wdrcuRjTMcoJAz5ltiVIYSXJ6mLA8Q== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 755CF240004; Tue, 6 Jun 2023 07:11:09 +0000 (UTC) Date: Tue, 6 Jun 2023 09:11:07 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Message-ID: <20230606091107.78c792ff@xps-13> In-Reply-To: <53f31185-70d9-7264-a99a-cf71f8fc52eb@sberdevices.ru> References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> <20230601103111.6840acc0@xps-13> <8242530c-7b6b-29ce-581b-c5644a965b60@sberdevices.ru> <20230605114850.77cf9197@xps-13> <53f31185-70d9-7264-a99a-cf71f8fc52eb@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230606_001118_157735_C3CDB89E X-CRM114-Status: GOOD ( 61.94 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCmF2a3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUdWUsIDYgSnVu IDIwMjMgMDc6NDI6NTggKzAzMDA6Cgo+IE9uIDA1LjA2LjIwMjMgMTI6NDgsIE1pcXVlbCBSYXlu YWwgd3JvdGU6Cj4gPiBIaSBBcnNlbml5LAo+ID4gCj4gPiBhdmtyYXNub3ZAc2JlcmRldmljZXMu cnUgd3JvdGUgb24gRnJpLCAyIEp1biAyMDIzIDExOjUzOjQ3ICswMzAwOgo+ID4gICAKPiA+PiBI ZWxsbyBNaXF1ZWwsIHRoYW5rcyBmb3IgcmV2aWV3IQo+ID4+Cj4gPj4gT24gMDEuMDYuMjAyMyAx MTozMSwgTWlxdWVsIFJheW5hbCB3cm90ZTogIAo+ID4+PiBIaSBBcnNlbml5LAo+ID4+Pgo+ID4+ PiBBVktyYXNub3ZAc2JlcmRldmljZXMucnUgd3JvdGUgb24gVGh1LCAxIEp1biAyMDIzIDA5OjE4 OjQ2ICswMzAwOgo+ID4+PiAgICAgCj4gPj4+PiBUaGlzIG1vdmVzIGZyZWUgYnl0ZXMgb2YgT09C IHRvIG5vbi1wcm90ZWN0ZWQgRUNDIGFyZWEuIEl0IGlzIG5lZWRlZCB0byAgICAKPiA+Pj4KPiA+ Pj4gQXMgd2UgZGlzY3Vzc2VkLCBJIGV4cGVjdCB0aGlzIGNvbW1pdCB0byBqdXN0IGNoYW5nZSB0 aGUgT09CIGxheW91dCB0bwo+ID4+PiBleHBvc2UgdW5wcm90ZWN0ZWQgT09CIGJ5dGVzIHRvIHRo ZSB1c2VyLCB0aGF0IGlzIHRoZSBvbmx5IGNoYW5nZSB0aGlzCj4gPj4+IGNvbW1pdCBzaG91bGQg Y2FycnkuIElmIHRoYXQgZG9lcyBub3Qgd29yaywgeW91IHNob3VsZCBhZGQgYQo+ID4+PiBwcmVw YXJhdGlvbiBwYXRjaC4gICAgCj4gPj4KPiA+PiBPaywgYnV0IEkgdGhvdWdodCwgaWYgaSBjaGFu Z2Ugb25seSBPT0IgbGF5b3V0LCBlLmcuIHVwZGF0ZSAnZnJlZScgY2FsbGJhY2sgb2YKPiA+PiBt dGRfb29ibGF5b3V0X29wcywgSSBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IGNvZGUgd2hpY2ggcGVy Zm9ybXMgcmVhZC93cml0ZQo+ID4+IGFjY29yZGluZyBuZXcgbGF5b3V0IChpdCBtdXN0IGJlIGRv bmUgaW4gYSBzaW5nbGUgcGF0Y2gpPyAgCj4gPiAKPiA+IE5vLCB0aGlzIGlzIG9ydGhvZ29uYWwu Cj4gPiAKPiA+IFRoZSBkcml2ZXIgbXVzdCByZWFkIHRoZSB0aGUgd2hvbGUgT09CIGFyZWEgKGFu ZCBwZXJoYXBzIHJlb3JkZXIgdGhlCj4gPiBkYXRhKSwgYnV0IHlvdSBzaG91bGQgbm90IG1ha2Ug YW55IGRlY2lzaW9uIHJlZ2FyZGluZyB3aGF0IGJ5dGVzIHlvdQo+ID4gd2FudCBvciBub3Qgd2Fu dCB0byBleHBvc2UuCj4gPiAKPiA+IFRoZW4sIHRoZSB1c2VyIChubyBtYXR0ZXIgd2hhdCAidXNl ciIgaXMgaGVyZSkgd2lsbCBkZWNpZGUgaG93IHRvIGRlYWwKPiA+IHdpdGggdGhlIGRhdGEuICAK PiAKPiBIZWxsbyBNaXF1ZWwhCj4gCj4gT2ssIHNvIGluIGNhc2Ugb2Y6Cj4gMSkgcmVhZCBJIGp1 c3QgbmVlZCB0byByZWFkIE9PQiBkYXRhIHVzaW5nICduYW5kX2NoYW5nZV9yZWFkX2NvbHVtbl9v cCgpJyBhbmQgcGxhY2UgaXQgdG8gJ29vYl9idWYnLgo+IDIpIHdyaXRlIEkgbmVlZCB0byB3cml0 ZSBPT0IgZGF0YSB1c2luZyAnbmFuZF9jaGFuZ2Vfd3JpdGVfY29sdW1uX29wKCknIHRvIGNvbnRy b2xsZXIgaW50ZXJuYWwgUkFNIGFuZCB0aGVuIGNhbGwgUEFHRV9QUk9HLgo+ICAgIEV2ZW4gaW4g RUNDIG1vZGUsIGRhdGEgd2hpY2ggb2NjdXBpZXMgcGxhY2VzIG9mIEVDQyBjb2RlcyB3aWxsIGJl IHJlbW92ZWQgYnkgaHcgKCBhcyBZb3UgbWVudGlub2VkIGJlbG93KS4KPiAKPiBUaGF0J3MgYWxs PzopCgpTb3VuZHMgcmlnaHQgOikKCklmIHlvdSBmaW5kIHRvbyBjb3N0bHkgdG8gbWFrZSBtYW55 IG5hbmRfY2hhbmdlX3JlYWRfY29sdW1uX29wKCkgYW5kCndhbnQgdG8gbGV2ZXJhZ2UgRE1BIGlu c3RlYWQsIHlvdSBjYW4gYXMgd2VsbCByZWFkIGV2ZXJ5dGhpbmcKKGRhdGErb29iKSBpbiBvbmUg Z28gaW4gYSBib3VuY2UgYnVmZmVyIGFuZCB0aGVuIHBlcmZvcm0gbWVtY3B5J3MgaW50bwp5b3Vy IGZpbmFsIGJ1ZmZlciBpbiBvcmRlciB0byByZW9yZ2FuaXplIHRoZSBkYXRhLiBUaGF0J3MgZW50 aXJlbHkgdXAgdG8KeW91IChhbmQgc2FtZSBvZiBjb3Vyc2UgaW4gdGhlIHdyaXRlIHBhdGgsIHlv dSBjb3VsZCBmaXJzdAptZW1jcHkvcmVvcmRlciB0aGUgZGF0YSBpbnRvIGEgRE1BIGJvdW5jZSBi dWZmZXIgbG9jYWxseSwgYW5kIHRoZW4gc2VuZAphbGwgdGhlIGRhdGEgaW4gYSBzaW5nbGUgRE1B IHRyYW5zZmVyIGFuZCBjYWxsIFBBR0VfUFJPRykuCgo+IAo+ID4gICAKPiA+PiBNYWluIHRoaW5n IGlzOgo+ID4+Cj4gPj4gSSBndWVzcyB0aGF0IGdlbmVyYWwgY29uZnVzZSB3aXRoIHRoaXMgcGF0 Y2ggaXMgdGhhdCBZb3UgY29uc2lkZXIKPiA+PiB0aGF0IHdlIGNoYW5nZSBvbmx5IE9PQiBsYXlv dXQgYnkgbW92aW5nIHVzZXIgYnl0ZXMgb3V0IG9mIEVDQyBhcmVhLCBidXQgYXQgdGhlIHNhbWUK PiA+PiB0aW1lIEkgYWxzbyBpbmNyZWFzZWQgc2l6ZSBvZiBPT0IgZnJvbSA0IGJ5dGVzIChlLmcu IDIgeCAyIGJ5dGVzIGNsZWFuIG1hcmtlcnMpCj4gPj4gdG8gMzIgYnl0ZXMgKGUuZy4gdGFpbCBv ZiBwYWdlIGFmdGVyIGRhdGEgYW5kIEVDQyBjb2RlcyksIHNvIGlmIHRoaXMKPiA+PiBhc3N1bXB0 aW9uIGlzIGNvcnJlY3QsIGluIHRoZSBuZXh0IHZlcnNpb24gSSB3b24ndCBjaGFuZ2Ugc2l6ZSBv ZiB1c2VyIGFyZWEgaW4KPiA+PiBPT0IsIHRodXMgdGhpcyBwYXRjaCB3aWxsIGJlIHJlZHVjZWQg YXMgc29tZSBjb21tZW50cyBmcm9tIHRoaXMgcmV2aWV3LiAgCj4gPiAKPiA+IEV4cG9zaW5nIG9u bHkgNCBieXRlcyB3YXMgYSBtaXN0YWtlIGluIHRoZSBmaXJzdCBwbGFjZSwgcGxlYXNlIGZpeCB0 aGlzCj4gPiBpbiBhIGRlZGljYXRlZCBwYXRjaC4gIAo+IAo+IFNvIGN1cnJlbnQgKG5vdCBtZXJn ZWQpIHZlcnNpb24gZXhwb3NlcyBieXRlcyAwLDEsMTYsMTcgb2YgT09CLCBZb3UgbWVhbiB0aGlz IGlzIHdyb25nPwo+IENvcnJlY3Qgd2F5IGlzIHRvIGV4cG9zZSAzMiwzMyw0OCw0OSAoZS5nLiBz aGlmdGVkIGJ5IDMyKT8KPiAKPiBUaGFua3MsIEFyc2VuaXkKPiAKPiA+ICAgCj4gPj4+PiBtYWtl IEpGRlMyIHdvcmtzIGNvcnJlY3RseSB3aXRoIHRoaXMgTkFORCBjb250cm9sbGVyLiBQcm9ibGVt IGZpcmVzIHdoZW4KPiA+Pj4+IEpGRlMyIGRyaXZlciB3cml0ZXMgY2xlYW5tYXJrZXIgdG8gc29t ZSBwYWdlIGFuZCBsYXRlciBpdCB0cmllcyB0byB3cml0ZQo+ID4+Pj4gdG8gdGhpcyBwYWdlIC0g d3JpdGUgd2lsbCBiZSBkb25lIHN1Y2Nlc3NmdWxseSwgYnV0IGFmdGVyIHRoYXQgc3VjaCBwYWdl Cj4gPj4+PiBiZWNvbWVzIHVucmVhZGFibGUgZHVlIHRvIGludmFsaWQgRUNDIGNvZGVzLiBUaGlz IGhhcHBlbnMgYmVjYXVzZSBzZWNvbmQKPiA+Pj4+IHdyaXRlIG5lZWRzIHRvIHVwZGF0ZSBFQ0Mg Y29kZXMsIGJ1dCBpdCBpcyBpbXBvc3NpYmxlIHRvIGRvIGl0IGNvcnJlY3RseQo+ID4+Pj4gd2l0 aG91dCBibG9jayBlcmFzZS4gU28gaWRlYSBvZiB0aGlzIHBhdGNoIGlzIHRvIHVzZSB0aGUgdW5w cm90ZWN0ZWQgT09CCj4gPj4+PiBhcmVhIHRvIHN0b3JlIHRoZSBjbGVhbm1hcmtlcnMsIHNvIHRo YXQgdGhleSBjYW4gYmUgd3JpdHRlbiBieSB0aGUKPiA+Pj4+IGZpbGVzeXN0ZW0gd2l0aG91dCBj YXJpbmcgbXVjaCBhYm91dCB0aGUgcGFnZSBiZWluZyBlbXB0eSBvciBub3Q6IHRoZQo+ID4+Pj4g RUNDIGNvZGVzIHdpbGwgbm90IGJlIHdyaXR0ZW4gYW55d2F5Lgo+ID4+Pj4KPiA+Pj4+IEpGRlMy IGlzIG9ubHkgdXNlZnVsIG9uIHRpbnkgTkFORCBkZXZpY2VzLCB3aGVyZSBVQkkgZG9lcyBub3Qg Zml0LCB3aGljaAo+ID4+Pj4gYXJlIHVzdWFsbHkgdHJ1ZSBTTEMgZmxhc2hlcywgd2l0aCB0aGUg Y2FwYWJpbGl0eSBvZiB3cml0aW5nIGEgcGFnZSB3aXRoCj4gPj4+PiBlbXB0eSAoMHhGRikgZGF0 YSwgYW5kIHN0aWxsIGJlIGFibGUgdG8gd3JpdGUgYWN0dWFsIGRhdGEgdG8gaXQgbGF0ZXIgaW4K PiA+Pj4+IGEgc2Vjb25kIHdyaXRlLgo+ID4+Pj4KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IEFyc2Vu aXkgS3Jhc25vdiA8QVZLcmFzbm92QHNiZXJkZXZpY2VzLnJ1Pgo+ID4+Pj4gLS0tCj4gPj4+PiAg Q2hhbmdlbG9nIHY0LT52NToKPiA+Pj4+ICAqIERyb3AgY29zbWV0aWMgY2hhbmdlcyBmcm9tIHRo aXMgcGF0Y2guCj4gPj4+PiAgKiBEbyBub3QgaWdub3JlIEVDQyBwcm90ZWN0ZWQgdXNlciBieXRl cyBwcm92aWRlZCBieSBody4gRXZlbiB0aGVzZQo+ID4+Pj4gICAgYnl0ZXMgYXJlIG91dCBvZiB1 c2VyIGFyZWEgb2YgT09CLCBpdHMgdmFsdWVzIGFyZSBzdGlsbCByZWFkIGZyb20KPiA+Pj4+ICAg IHRoZSBwcm92aWRlZCBPT0IgYnVmZmVyIGFuZCB3cml0dGVuIGJ5IGhhcmR3YXJlLiBTYW1lIGJl aGF2aW91ciBpcwo+ID4+Pj4gICAgcHJlc2VydmVkIGZvciByZWFkIGFjY2VzcyAtIHN1Y2ggYnl0 ZXMgYXJlIHJlYWQgZnJvbSBETUEgYnVmZmVyIGFuZAo+ID4+Pj4gICAgcGxhY2VkIHRvIE9PQiBi dWZmZXIuCj4gPj4+PiAgKiBPT0IgcmVhZCBhbmQgd3JpdGUgYmVjb21lIG1vcmUgbGlnaHR3ZWln aHQgYmVjYXVzZSBJIHJlbW92ZWQgaGVhdnkKPiA+Pj4+ICAgIFJFQUQwIGFuZCBQQUdFUFJPRyBj b21tYW5kIGZyb20gaXQgKGJvdGggY29tbWFuZHMgYXJlIHN0aWxsIHNlbnQKPiA+Pj4+ICAgIHdo ZW4gT09CIGFjY2VzcyBpcyBwZXJmb3JtZWQgdXNpbmcgT09CIGNhbGxiYWNrcykuIEluIGNhc2Ug b2YgcGFnZQo+ID4+Pj4gICAgcmVhZC93cml0ZSBPT0IgZGF0YSBpcyBoYW5kbGVkIGluIHRoZSBp bnRlcm5hbCBTUkFNIG9mIHRoZSBjb250cm9sbGVyLgo+ID4+Pj4gICogQ29tbWl0IG1lc3NhZ2Ug dXBkYXRlZC4KPiA+Pj4+ICAqIFRlbXBvcmFyeSBidWZmZXIgZm9yIE9PQiByZWFkL3dyaXRlIGlz IHJlbW92ZWQuIFNlZW1zIGV2ZXJ5dGhpbmcKPiA+Pj4+ICAgIHdvcmtzIGNvcnJlY3RseSB3aXRo b3V0IGl0Lgo+ID4+Pj4KPiA+Pj4+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9tZXNvbl9uYW5kLmMg fCAxMzQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gPj4+PiAgMSBmaWxlIGNoYW5n ZWQsIDExNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiA+Pj4+Cj4gPj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jIGIvZHJpdmVycy9tdGQv bmFuZC9yYXcvbWVzb25fbmFuZC5jCj4gPj4+PiBpbmRleCA4MmE2MjkwMjVhZGMuLmU0MmMyOGJl MDJmMyAxMDA2NDQKPiA+Pj4+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQu Ywo+ID4+Pj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jCj4gPj4+PiBA QCAtMzU4LDggKzM1OCwxMSBAQCBzdGF0aWMgdTggKm1lc29uX25mY19kYXRhX3B0cihzdHJ1Y3Qg bmFuZF9jaGlwICpuYW5kLCBpbnQgaSkKPiA+Pj4+ICBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfZ2V0 X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gPj4+PiAgCQkJCSAgIHU4ICpidWYs IHU4ICpvb2JidWYpCj4gPj4+PiAgewo+ID4+Pj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hp cCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gPj4+PiArCXN0cnVjdCBtdGRf aW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gPj4+PiAgCWludCBpLCBvb2JfbGVuID0g MDsKPiA+Pj4+ICAJdTggKmRzcmMsICpvc3JjOwo+ID4+Pj4gKwl1OCAqb29idGFpbDsKPiA+Pj4+ ICAKPiA+Pj4+ICAJb29iX2xlbiA9IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gPj4+PiAgCWZvciAo aSA9IDA7IGkgPCBuYW5kLT5lY2Muc3RlcHM7IGkrKykgewo+ID4+Pj4gQEAgLTM2OCwxNyArMzcx LDI3IEBAIHN0YXRpYyB2b2lkIG1lc29uX25mY19nZXRfZGF0YV9vb2Ioc3RydWN0IG5hbmRfY2hp cCAqbmFuZCwKPiA+Pj4+ICAJCQltZW1jcHkoYnVmLCBkc3JjLCBuYW5kLT5lY2Muc2l6ZSk7Cj4g Pj4+PiAgCQkJYnVmICs9IG5hbmQtPmVjYy5zaXplOwo+ID4+Pj4gIAkJfQo+ID4+Pj4gKwo+ID4+ Pj4gIAkJb3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+ID4+Pj4gIAkJbWVtY3B5 KG9vYmJ1Ziwgb3NyYywgb29iX2xlbik7Cj4gPj4+PiAgCQlvb2JidWYgKz0gb29iX2xlbjsKPiA+ Pj4+ICAJfQo+ID4+Pj4gKwo+ID4+Pj4gKwlvb2J0YWlsID0gbWVzb25fY2hpcC0+ZGF0YV9idWYg KyBuYW5kLT5lY2Muc3RlcHMgKgo+ID4+Pj4gKwkJICAobmFuZC0+ZWNjLnNpemUgKyBvb2JfbGVu KTsKPiA+Pj4+ICsKPiA+Pj4+ICsJLyogJ29vYmJ1ZicgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB1 c2VyIGFyZWEuICovCj4gPj4+PiArCW1lbWNweShvb2JidWYsIG9vYnRhaWwsIG10ZC0+b29ic2l6 ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOwo+ID4+Pj4gIH0KPiA+Pj4+ICAKPiA+Pj4+ ICBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5h bmQsCj4gPj4+PiAgCQkJCSAgIGNvbnN0IHU4ICpidWYsIHU4ICpvb2JidWYpCj4gPj4+PiAgewo+ ID4+Pj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29u X25hbmQobmFuZCk7Cj4gPj4+PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQo bmFuZCk7Cj4gPj4+PiAgCWludCBpLCBvb2JfbGVuID0gMDsKPiA+Pj4+ICAJdTggKmRzcmMsICpv c3JjOwo+ID4+Pj4gKwl1OCAqb29idGFpbDsKPiA+Pj4+ICAKPiA+Pj4+ICAJb29iX2xlbiA9IG5h bmQtPmVjYy5ieXRlcyArIDI7Cj4gPj4+PiAgCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5lY2Muc3Rl cHM7IGkrKykgewo+ID4+Pj4gQEAgLTM5MSw2ICs0MDQsMTIgQEAgc3RhdGljIHZvaWQgbWVzb25f bmZjX3NldF9kYXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ID4+Pj4gIAkJbWVtY3B5 KG9zcmMsIG9vYmJ1Ziwgb29iX2xlbik7Cj4gPj4+PiAgCQlvb2JidWYgKz0gb29iX2xlbjsKPiA+ Pj4+ICAJfQo+ID4+Pj4gKwo+ID4+Pj4gKwlvb2J0YWlsID0gbWVzb25fY2hpcC0+ZGF0YV9idWYg KyBuYW5kLT5lY2Muc3RlcHMgKgo+ID4+Pj4gKwkJICAobmFuZC0+ZWNjLnNpemUgKyBvb2JfbGVu KTsgICAgCj4gPj4+Cj4gPj4+IFRoaXMgaXMgYWx3YXlzIHRhcmdldGluZyB0aGUgc2FtZSBhcmVh LCBzbyBpdCBsb29rcyBzdHJhbmdlIHRvIG1lLgo+ID4+PiAgICAgCj4gPj4+PiArCj4gPj4+PiAr CS8qICdvb2JidWYnIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdXNlciBhcmVhLiAqLwo+ID4+Pj4g KwltZW1jcHkob29idGFpbCwgb29iYnVmLCBtdGQtPm9vYnNpemUgLSBuYW5kLT5lY2Muc3RlcHMg KiBvb2JfbGVuKTsgICAgCj4gPj4+Cj4gPj4+IFRCSCBJIGRvbid0IGdldCB3aGF0IHlvdSBkbyBo ZXJlLiAgICAKPiA+Pgo+ID4+IFRoaXMgY29kZSB3b3JrcyBpbiByYXcgbW9kZSBhbmQgcGxhY2Vz IE9PQiBkYXRhIGZyb20gcHJvdmlkZWQgT09CIGJ1ZmZlciB0byBETUEgYnVmZmVyLgo+ID4+IFRo aXMgaXMgYmVjYXVzZSBudW1iZXIgb2YgdXNlciBieXRlcyBpcyBpbmNyZWFzZWQgaW4gdGhpcyBw YXRjaC4KPiA+PiAgCj4gPj4+ICAgICAKPiA+Pj4+ICB9Cj4gPj4+PiAgCj4gPj4+PiAgc3RhdGlj IGludCBtZXNvbl9uZmNfcXVldWVfcmIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHRpbWVv dXRfbXMpCj4gPj4+PiBAQCAtNDMzLDcgKzQ1Miw3IEBAIHN0YXRpYyB2b2lkIG1lc29uX25mY19z ZXRfdXNlcl9ieXRlKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHU4ICpvb2JfYnVmKQo+ID4+Pj4g IAlfX2xlNjQgKmluZm87Cj4gPj4+PiAgCWludCBpLCBjb3VudDsKPiA+Pj4+ICAKPiA+Pj4+IC0J Zm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9 IDIpIHsKPiA+Pj4+ICsJZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBz OyBpKyssIGNvdW50ICs9IChuYW5kLT5lY2MuYnl0ZXMgKyAyKSkgewo+ID4+Pj4gIAkJaW5mbyA9 ICZtZXNvbl9jaGlwLT5pbmZvX2J1ZltpXTsKPiA+Pj4+ICAJCSppbmZvIHw9IG9vYl9idWZbY291 bnRdOwo+ID4+Pj4gIAkJKmluZm8gfD0gb29iX2J1Zltjb3VudCArIDFdIDw8IDg7Cj4gPj4+PiBA QCAtNDQ2LDcgKzQ2NSw3IEBAIHN0YXRpYyB2b2lkIG1lc29uX25mY19nZXRfdXNlcl9ieXRlKHN0 cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHU4ICpvb2JfYnVmKQo+ID4+Pj4gIAlfX2xlNjQgKmluZm87 Cj4gPj4+PiAgCWludCBpLCBjb3VudDsKPiA+Pj4+ICAKPiA+Pj4+IC0JZm9yIChpID0gMCwgY291 bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiA+Pj4+ICsJ Zm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9 IChuYW5kLT5lY2MuYnl0ZXMgKyAyKSkgewo+ID4+Pj4gIAkJaW5mbyA9ICZtZXNvbl9jaGlwLT5p bmZvX2J1ZltpXTsKPiA+Pj4+ICAJCW9vYl9idWZbY291bnRdID0gKmluZm87Cj4gPj4+PiAgCQlv b2JfYnVmW2NvdW50ICsgMV0gPSAqaW5mbyA+PiA4Owo+ID4+Pj4gQEAgLTYzOCw2ICs2NTcsODQg QEAgc3RhdGljIGludCBtZXNvbl9uZmNfcndfY21kX3ByZXBhcmVfYW5kX2V4ZWN1dGUoc3RydWN0 IG5hbmRfY2hpcCAqbmFuZCwKPiA+Pj4+ICAJcmV0dXJuIDA7Cj4gPj4+PiAgfQo+ID4+Pj4gIAo+ ID4+Pj4gK3N0YXRpYyB1MzIgbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKHN0cnVjdCBuYW5kX2No aXAgKm5hbmQpCj4gPj4+PiArewo+ID4+Pj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRf dG9fbXRkKG5hbmQpOwo+ID4+Pj4gKwo+ID4+Pj4gKwlyZXR1cm4gbXRkLT5vb2JzaXplIC0gbmFu ZC0+ZWNjLnN0ZXBzICogKG5hbmQtPmVjYy5ieXRlcyArIDIpOyAgICAKPiA+Pj4KPiA+Pj4gVGhp cyBsb29rcyBsaWtlIGEgc3RhdGljIHZhbHVlLCBqdXN0IHNhdmUgaXQgc29tZXdoZXJlIGluc3Rl YWQgb2YKPiA+Pj4gcmVjb21wdXRpbmcgaXQ/ICAgIAo+ID4+Cj4gPj4gQWNrCj4gPj4gIAo+ID4+ PiAgICAgCj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4gK3N0YXRpYyBpbnQgbWVzb25fbmZjX3dy aXRlX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPiA+Pj4+ICt7Cj4gPj4+ PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gPj4+PiArCXUz MiBwYWdlX3NpemUgPSBtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZTsKPiA+Pj4+ICsJdTMy IG9vYl9ieXRlcyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhuYW5kKTsKPiA+Pj4+ICsJdTgg Km9vYl9idWY7Cj4gPj4+PiArCWludCByZXQ7Cj4gPj4+PiArCj4gPj4+PiArCWlmICghb29iX2J5 dGVzKQo+ID4+Pj4gKwkJcmV0dXJuIDA7ICAgIAo+ID4+Pgo+ID4+PiBDYW4gdGhpcyBoYXBwZW4/ ICAgIAo+ID4+Cj4gPj4gQWNrLCBzZWVtcyBmb3JnZXQgdG8gcmVtb3ZlIGl0Cj4gPj4gIAo+ID4+ PiAgICAgCj4gPj4+PiArCj4gPj4+PiArCS8qIENhbGxlZCBhcyBPT0Igd3JpdGUgaGVscGVyLCB3 aWxsIHNlbmQgTkFORF9DTURfUEFHRVBST0cuICovCj4gPj4+PiArCWlmIChwYWdlICE9IC0xKSB7 Cj4gPj4+PiArCQlyZXQgPSBuYW5kX3Byb2dfcGFnZV9iZWdpbl9vcChuYW5kLCBwYWdlLCAwLCBO VUxMLCAwKTsKPiA+Pj4+ICsJCWlmIChyZXQpCj4gPj4+PiArCQkJcmV0dXJuIHJldDsKPiA+Pj4+ ICsJfQo+ID4+Pj4gKwo+ID4+Pj4gKwlvb2JfYnVmID0gbmFuZC0+b29iX3BvaTsKPiA+Pj4+ICsK PiA+Pj4+ICsJcmV0ID0gbmFuZF9jaGFuZ2Vfd3JpdGVfY29sdW1uX29wKG5hbmQsIHBhZ2Vfc2l6 ZSAtIG9vYl9ieXRlcywKPiA+Pj4+ICsJCQkJCSAgb29iX2J1ZiArIChtdGQtPm9vYnNpemUgLSBv b2JfYnl0ZXMpLAo+ID4+Pj4gKwkJCQkJICBvb2JfYnl0ZXMsIGZhbHNlKTsKPiA+Pj4+ICsJaWYg KHJldCkKPiA+Pj4+ICsJCXJldHVybiByZXQ7Cj4gPj4+PiArCj4gPj4+PiArCXJldHVybiAocGFn ZSAhPSAtMSkgPyBuYW5kX3Byb2dfcGFnZV9lbmRfb3AobmFuZCkgOiAwOwo+ID4+Pj4gK30KPiA+ Pj4+ICsKPiA+Pj4+ICtzdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYihzdHJ1Y3QgbmFuZF9j aGlwICpuYW5kLCBpbnQgcGFnZSkKPiA+Pj4+ICt7Cj4gPj4+PiArCXN0cnVjdCBtdGRfaW5mbyAq bXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gPj4+PiArCXU4ICpvb2JfYnVmID0gbmFuZC0+b29i X3BvaTsKPiA+Pj4+ICsJdTMyIG9vYl9ieXRlczsKPiA+Pj4+ICsJdTMyIHBhZ2Vfc2l6ZTsKPiA+ Pj4+ICsJaW50IHJldDsKPiA+Pj4+ICsJaW50IGk7Cj4gPj4+PiArCj4gPj4+PiArCS8qIENhbGxl ZCBhcyBPT0IgcmVhZCBoZWxwZXIsIHNlbmQgTkFORF9DTURfUkVBRDAuICovCj4gPj4+PiArCWlm IChwYWdlICE9IC0xKSB7ICAgIAo+ID4+Pgo+ID4+PiBJIGRvbid0IGxpa2UgdGhpcyBsb2dpYyB3 aXRoIHRoZSAiLTEiLCBpdCByZWFsbHkgaGlkZXMgd2hhdCB0aGUKPiA+Pj4gY29udHJvbGxlciBu ZWVkcyB0byBkbywgaWYgeW91IG5lZWQgYSBoZWxwZXIgdG8gc2VuZCBhIGNvbW1hbmQsIHRoZW4K PiA+Pj4gY3JlYXRlIHRoYXQgaGVscGVyIGFuZCBnaXZlIGl0IGEgZGVjZW50IG5hbWUuICAgIAo+ ID4+Cj4gPj4gSSBzZWUsIHNvIEkgdGhpbmsgSSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGluIHRo ZSBmb2xsb3dpbmcgd2F5Ogo+ID4+IDEpIEZvciBPT0IgY2FsbGJhY2sgaXQgYWx3YXlzIHNlbmRz IE5BTkRfQ01EX1JFQUQwIChlLmcuIHdpdGhvdXQgYW55ICdpZicpCj4gPj4gMikgRm9yIHJlYWQg T09CIHdpdGggZGF0YSBwYWdlIHdlIGRvbid0IG5lZWQgdG8gc2VuZCBOQU5EX0NNRF9SRUFEMC4g KGFsc28gd2l0aG91dCBhbnkgJ2lmJykKPiA+PiAgCj4gPj4+ICAgICAKPiA+Pj4+ICsJCXJldCA9 IG5hbmRfcmVhZF9wYWdlX29wKG5hbmQsIHBhZ2UsIDAsIE5VTEwsIDApOwo+ID4+Pj4gKwkJaWYg KHJldCkKPiA+Pj4+ICsJCQlyZXR1cm4gcmV0Owo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+PiAr CS8qIFJlYWQgRUNDIGNvZGVzIGFuZCB1c2VyIGJ5dGVzLiAqLwo+ID4+Pj4gKwlmb3IgKGkgPSAw OyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyspIHsKPiA+Pj4+ICsJCXUzMiBlY2Nfb2ZmcyA9IG5h bmQtPmVjYy5zaXplICogKGkgKyAxKSArCj4gPj4+PiArCQkJICAgICAgIChuYW5kLT5lY2MuYnl0 ZXMgKyAyKSAqIGk7Cj4gPj4+PiArCj4gPj4+PiArCQlyZXQgPSBuYW5kX2NoYW5nZV9yZWFkX2Nv bHVtbl9vcChuYW5kLCBlY2Nfb2ZmcywKPiA+Pj4+ICsJCQkJCQkgb29iX2J1ZiArIGkgKiAobmFu ZC0+ZWNjLmJ5dGVzICsgMiksCj4gPj4+PiArCQkJCQkJIChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwg ZmFsc2UpOwo+ID4+Pj4gKwkJaWYgKHJldCkKPiA+Pj4+ICsJCQlyZXR1cm4gcmV0Owo+ID4+Pj4g Kwl9Cj4gPj4+PiArCj4gPj4+PiArCW9vYl9ieXRlcyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRl cyhuYW5kKTsKPiA+Pj4+ICsKPiA+Pj4+ICsJaWYgKCFvb2JfYnl0ZXMpCj4gPj4+PiArCQlyZXR1 cm4gMDsKPiA+Pj4+ICsKPiA+Pj4+ICsJcGFnZV9zaXplID0gbXRkLT53cml0ZXNpemUgKyBtdGQt Pm9vYnNpemU7Cj4gPj4+PiArCj4gPj4+PiArCXJldCA9IG5hbmRfY2hhbmdlX3JlYWRfY29sdW1u X29wKG5hbmQsIHBhZ2Vfc2l6ZSAtIG9vYl9ieXRlcywKPiA+Pj4+ICsJCQkJCSBvb2JfYnVmICsg KG10ZC0+b29ic2l6ZSAtIG9vYl9ieXRlcyksCj4gPj4+PiArCQkJCQkgb29iX2J5dGVzLCBmYWxz ZSk7Cj4gPj4+PiArCj4gPj4+PiArCXJldHVybiByZXQ7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+ Pj4gIHN0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vfc3ViKHN0cnVjdCBuYW5kX2NoaXAg Km5hbmQsCj4gPj4+PiAgCQkJCSAgICBpbnQgcGFnZSwgaW50IHJhdykKPiA+Pj4+ICB7Cj4gPj4+ PiBAQCAtNjc0LDYgKzc3MSwxMiBAQCBzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1 YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ID4+Pj4gIAkJCQkgICAgIE5GQ19DTURfU0NSQU1C TEVSX0RJU0FCTEUpOwo+ID4+Pj4gIAl9Cj4gPj4+PiAgCj4gPj4+PiArCWlmICghcmF3KSB7ICAg IAo+ID4+Pgo+ID4+PiBXaHkgdGhpcyBjaGVjaz8KPiA+Pj4KPiA+Pj4gWW91IHNob3VsZCBpbnN0 ZWFkIHByb3BhZ2F0ZSB0aGUgb29iX3JlcXVpcmVkIGZpZWxkIGFuZCBjaGVjayB0aGF0Cj4gPj4+ IHZhbHVlIEkgYmVsaWV2ZS4gICAgCj4gPj4KPiA+Pgo+ID4+IFRoaXMgY2hlY2sgaXMgZm9yIEVD QyBtb2RlLCBiZWNhdXNlIGluIHRoaXMgbW9kZSB3ZSB3cml0ZSB1c2VyIGJ5dGVzIG9mIE9PQi4K PiA+PiBFQ0MgYnl0ZXMgb2YgT09CIGFyZSB3cml0dGVuIGJ5IGhhcmR3YXJlLiAgCj4gPiAKPiA+ IEp1c3QgcHJvdmlkZSB0aGUgYnVmZmVyLiBUaGUgRUNDIGVuZ2luZSB3aWxsIHNtYXNoIGRhdGEg aWYgdGhlcmUgd2FzCj4gPiBhbnkgdGhlcmUuIE90aGVyd2lzZSBpdCB3aWxsIGZpbGwgdGhlIGhv bGVzLiBJdCdzIGV4cGVjdGVkLiBEb24ndCB0cnkKPiA+IHRvIGJlIHNtYXJ0ZXIgdGhhbiB5b3Ug c2hvdWxkIDopCj4gPiAgIAo+ID4+IEkgdGhpbmsgSSBtYWRlIGEgbWlzdGFrZSwgYmVjYXVzZQo+ ID4+IEkgbmVlZCBuZXcgY2FsbGJhY2sgdG8gd3JpdGUgT09CIGluIHJhdyBtb2RlIC0gaXQgd2ls bCB3cml0ZSBib3RoIEVDQyBhbmQgdXNlcgo+ID4+IHBhcnRzLCAgCj4gPiAKPiA+IFRoZXJlIGlz IG5vIHN1Y2ggdGhpbmcgYXMgdXNlciBhbmQgRUNDIHBhcnQgYXQgdGhlIGRyaXZlciBsZXZlbC4g WW91Cj4gPiBnZXQgYSBidWZmZXIsIHlvdSBuZWVkIHRvIHdyaXRlIGl0IHRvIHRoZSBmbGFzaC4K PiA+IAo+ID4gVGhlIHVzZXIgZXhwZWN0czoKPiA+IAo+ID4gfCBkYXRhIHwgT09CIHwKPiA+IAo+ ID4gVGhlIGNvbnRyb2xsZXIgZXhwZWN0cyBzb21ldGhpbmcgbGlrZToKPiA+IAo+ID4gfCBkYXRh MSB8IE9PQjEgfCBkYXRhMiB8IE9PQjIgfAo+ID4gCj4gPiBTbyBqdXN0IHBlcmZvcm0gdGhlIHJl b3JkZXJpbmcgYmV0d2VlbiBkYXRhIGFuZCBPT0IgaW4gdGhlIERNQSBidWZmZXIsCj4gPiB0aGF0 IGlzIF9hbGxfLgo+ID4gICAKPiA+PiBpbiBjdXJyZW50IHZlcnNpb24gSSB3cml0ZSBvbmx5IHVz ZXIgcGFydCBpbiByYXcgbW9kZS4KPiA+PiAgCj4gPj4+ICAgICAKPiA+Pj4+ICsJCXJldCA9IG1l c29uX25mY193cml0ZV9vb2IobmFuZCwgLTEpOwo+ID4+Pj4gKwkJaWYgKHJldCkKPiA+Pj4+ICsJ CQlyZXR1cm4gcmV0Owo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+PiAgCWNtZCA9IG5mYy0+cGFy YW0uY2hpcF9zZWxlY3QgfCBORkNfQ01EX0NMRSB8IE5BTkRfQ01EX1BBR0VQUk9HOwo+ID4+Pj4g IAl3cml0ZWwoY21kLCBuZmMtPnJlZ19iYXNlICsgTkZDX1JFR19DTUQpOwo+ID4+Pj4gIAltZXNv bl9uZmNfcXVldWVfcmIobmFuZCwgUFNFQ19UT19NU0VDKHNkci0+dFBST0dfbWF4KSk7Cj4gPj4+ PiBAQCAtODM0LDE3ICs5MzcsMTAgQEAgc3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9wYWdlX2h3 ZWNjKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHU4ICpidWYsCj4gPj4+PiAgCQltZW1jcHkoYnVm LCBtZXNvbl9jaGlwLT5kYXRhX2J1ZiwgbXRkLT53cml0ZXNpemUpOwo+ID4+Pj4gIAl9Cj4gPj4+ PiAgCj4gPj4+PiAtCXJldHVybiBiaXRmbGlwczsKPiA+Pj4+IC19Cj4gPj4+PiAtCj4gPj4+PiAt c3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9vb2JfcmF3KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQs IGludCBwYWdlKQo+ID4+Pj4gLXsKPiA+Pj4+IC0JcmV0dXJuIG1lc29uX25mY19yZWFkX3BhZ2Vf cmF3KG5hbmQsIE5VTEwsIDEsIHBhZ2UpOwo+ID4+Pj4gLX0KPiA+Pj4+ICsJaWYgKG9vYl9yZXF1 aXJlZCAmJiByZXQpICAgIAo+ID4+Pgo+ID4+PiBVbmNsZWFyIHdoeSB5b3UgY2hlY2sgcmV0IGhl cmU/ICAKPiA+IAo+ID4gSW4gZ2VuZXJhbCwgaWYgKHJldCkgbWVhbnMgdGhlcmUgaXMgYW4gZXJy b3IuCj4gPiAKPiA+IFBsZWFzZSBjb25zaWRlciB1c2luZzoKPiA+IAo+ID4gaWYgKHJldCkKPiA+ IAlnb3RvIGVycm9yIHBhdGg7Cj4gPiAKPiA+IGRvIHNvbWV0aGluZyBlbHNlOwo+ID4gICAKPiA+ Pj4gICAgIAo+ID4+Cj4gPj4gSWYgcmVhZCB3YXMgc3VjY2Vzc2Z1bCwgd2UgcmVhZCBPT0IuIElm IG5vdCAtIHRoZXJlIGlzIG5vIHNlbnNlIGluIGl0Lgo+ID4+ICAKPiA+Pj4+ICsJCW1lc29uX25m Y19yZWFkX29vYihuYW5kLCAtMSk7Cj4gPj4+PiAgCj4gPj4+PiAtc3RhdGljIGludCBtZXNvbl9u ZmNfcmVhZF9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4gPj4+PiAtewo+ ID4+Pj4gLQlyZXR1cm4gbWVzb25fbmZjX3JlYWRfcGFnZV9od2VjYyhuYW5kLCBOVUxMLCAxLCBw YWdlKTsKPiA+Pj4+ICsJcmV0dXJuIGJpdGZsaXBzOwo+ID4+Pj4gIH0KPiA+Pj4+ICAKPiA+Pj4+ ICBzdGF0aWMgYm9vbCBtZXNvbl9uZmNfaXNfYnVmZmVyX2RtYV9zYWZlKGNvbnN0IHZvaWQgKmJ1 ZmZlcikKPiA+Pj4+IEBAIC05ODcsMTIgKzEwODMsMTYgQEAgc3RhdGljIGludCBtZXNvbl9vb2Js YXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rpb24sCj4gPj4+PiAgCQkJ CXN0cnVjdCBtdGRfb29iX3JlZ2lvbiAqb29icmVnaW9uKQo+ID4+Pj4gIHsKPiA+Pj4+ICAJc3Ry dWN0IG5hbmRfY2hpcCAqbmFuZCA9IG10ZF90b19uYW5kKG10ZCk7Cj4gPj4+PiArCXUzMiBvb2Jf Ynl0ZXMgPSBtZXNvbl9uZmNfb29iX2ZyZWVfYnl0ZXMobmFuZCk7Cj4gPj4+PiAgCj4gPj4+PiAg CWlmIChzZWN0aW9uID49IG5hbmQtPmVjYy5zdGVwcykKPiA+Pj4+ICAJCXJldHVybiAtRVJBTkdF Owo+ID4+Pj4gIAo+ID4+Pj4gLQlvb2JyZWdpb24tPm9mZnNldCA9IHNlY3Rpb24gKiAoMiArIG5h bmQtPmVjYy5ieXRlcyk7ICAgIAo+ID4+Pgo+ID4+PiBUaGUgZmlyc3QgdHdvIGJ5dGVzIG9mIE9P QiBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBiYWQgYmxvY2sgbWFya2Vycy4gVGhpcwo+ID4+PiBpcyBu b3QgcmVsYXRlZCB0byB5b3VyIGNvbnRyb2xsZXIuICAgIAo+ID4+Cj4gPj4gSSB0aGluayBmaXJz dCB0d28gYnl0ZXMgKGluIGZhY3QgdGhlcmUgYXJlIDQgYnl0ZXMgYXQgcG9zaXRpb25zIDAsIDEs IDE2IGFuZCAxNykKPiA+PiBpcyBjb25zaWRlcmVkIGJ5IGhhcmR3YXJlIGFzIHVzZXIgYnl0ZXMg Y292ZXJlZCBieSBFQ0MuICAKPiA+IAo+ID4gVGhlIHR3byBmaXJzdCBieXRlcyBzaG91bGQgbm90 IGJlIGF2YWlsYWJsZS4gVGhleSBhcmUgbm90ICJFQ0MiIGJ5dGVzLAo+ID4gdGhleSBhcmUgbm90 ICJmcmVlIiBieXRlcy4gTm9uZSBvZiB0aGVzZSB0d28gY2FsbGJhY2tzIHNob3VsZCBnaXZlCj4g PiBhY2Nlc3MgdG8gdGhlc2UgdHdvIGJ5dGVzIHJlc2VydmVkIGZvciBiYWQgYmxvY2sgbWFya2Vy cy4KPiA+IAo+ID4gSnVzdCB0byBiZSBjbGVhcjogIkVDQyBieXRlcyIgYXMgaW4gIm1lc29uX29v YmxheW91dF9lY2MiIGRvICpub3QqIG1lYW4KPiA+ICJ0aGVzZSBhcmUgdGhlIHByb3RlY3RlZCBi eXRlcyIuIFRoZXkgbWVhbiAidGhlc2UgYXJlIHRoZSBieXRlcyBpbiBPT0IKPiA+IHRoZSBoYXJk d2FyZSBFQ0MgZW5naW5lIHdpbGwgdXNlIHRvIHBsYWNlIGl0cyBvd24gZGF0YSB0byBtYWtlIHRo ZQo+ID4gcmVjb3ZlcnkgcHJvY2VzcyB3b3JrIi4KPiA+IAo+ID4gVGhhbmtzLAo+ID4gTWlxdcOo bCAgCgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hbWxvZ2ljCg==