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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D037DC433F5 for ; Tue, 26 Oct 2021 08:05:17 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 96A3460F22 for ; Tue, 26 Oct 2021 08:05:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 96A3460F22 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gJ9J5E7hkArKmVo0fo9G9BPtdZgkMeVXDwh9XTlCq7o=; b=H11km3SdINIKz5 +WXoG5yQ97REcpEJKzTkXIThSNpQW4jCB/VBt30hTNIOwV6lgM5MjYK2gvphVe9Cr362LGAN5Wu5r gkUMF6J2RI1DZGgAjqtB4FQTiP9d8kk5UgTN9WF6cZoE3hUdRKp1XqFsgrkEZ1/02hqpIqFVX7DwD Q84mKnP6bY5MC64k9WsOkbYwSOVcBoYuqxvb+TVy1VGtjKDFuX6WTIDRFnEmvReaayz9BcpsgLbGB 5HGhjG5k/d5Omprs0F24LOC+wGkmVlxLqVXuat1iwmZPwiCF1sk8Y1iSvOSzdj+V08NwCgQs18IaF kzTsYlFcnBXPlE3sHPug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfHQg-000zeX-ID; Tue, 26 Oct 2021 08:03:30 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfHQZ-000zds-H2; Tue, 26 Oct 2021 08:03:27 +0000 X-UUID: 1ba1d393d31944e0b936e3ed25b8d76f-20211026 X-UUID: 1ba1d393d31944e0b936e3ed25b8d76f-20211026 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1623896864; Tue, 26 Oct 2021 01:03:18 -0700 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 26 Oct 2021 00:53:15 -0700 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.3; Tue, 26 Oct 2021 15:53:14 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 26 Oct 2021 15:53:13 +0800 Message-ID: <50cb7ede37f30a2275fbd09d94f86b93574b4d4b.camel@mediatek.com> Subject: Re: [PATCH v6 14/16] drm/mediatek: add ovl_adaptor support for MT8195 From: Nancy.Lin To: Chun-Kuang Hu CC: CK Hu , Philipp Zabel , "David Airlie" , Daniel Vetter , Rob Herring , Matthias Brugger , "jason-jh . lin" , Yongqiang Niu , DRI Development , "moderated list:ARM/Mediatek SoC support" , DTML , linux-kernel , Linux ARM , , srv_heupstream Date: Tue, 26 Oct 2021 15:53:14 +0800 In-Reply-To: References: <20211004062140.29803-1-nancy.lin@mediatek.com> <20211004062140.29803-15-nancy.lin@mediatek.com> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211026_010323_603257_35ECC601 X-CRM114-Status: GOOD ( 31.94 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQ2h1bi1LdWFuZywKClRoYW5rcyBmb3IgdGhlIHJldmlldy4KCk9uIFR1ZSwgMjAyMS0xMC0y NiBhdCAwNzoxMSArMDgwMCwgQ2h1bi1LdWFuZyBIdSB3cm90ZToKPiAgIEhpLCBOYW5jeToKPiAK PiBOYW5jeS5MaW4gPG5hbmN5LmxpbkBtZWRpYXRlay5jb20+IOaWvCAyMDIx5bm0MTDmnIg05pel IOmAseS4gCDkuIvljYgyOjIx5a+r6YGT77yaCj4gPiAKPiA+IEFkZCBvdmxfYWRhcHRvciBkcml2 ZXIgZm9yIE1UODE5NS4KPiA+IE92bF9hZGFwdG9yIGlzIGFuIGVuY2Fwc3VsYXRlZCBtb2R1bGUg YW5kIGRlc2lnbmVkIGZvciBzaW1wbGlmaWVkCj4gPiBEUk0gY29udHJvbCBmbG93LiBUaGlzIG1v ZHVsZSBpcyBjb21wb3NlZCBvZiA4IFJETUFzLCA0IE1FUkdFcyBhbmQKPiA+IGFuIEVUSERSLiBU d28gUkRNQXMgbWVyZ2UgaW50byBvbmUgbGF5ZXIsIHNvIHRoaXMgbW9kdWxlIHN1cHBvcnQgNAo+ ID4gbGF5ZXJzLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBOYW5jeS5MaW4gPG5hbmN5LmxpbkBt ZWRpYXRlay5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZp bGUgICAgICAgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZGlzcF9kcnYuaCAgICAgICB8ICAxNiArCj4gPiAgLi4uL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rp c3Bfb3ZsX2FkYXB0b3IuYyAgIHwgNDk4Cj4gPiArKysrKysrKysrKysrKysrKysKPiA+ICBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgICAgICAgfCAgIDEgKwo+ID4gIDQg ZmlsZXMgY2hhbmdlZCwgNTE2IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX292bF9hZGFwdG9yLmMKPiA+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiA+IGluZGV4IGZiMTU4YTFlN2YwNi4uM2Fi ZDI3ZDdjOTFkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2Vm aWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiA+IEBAIC02 LDYgKzYsNyBAQCBtZWRpYXRlay1kcm0teSA6PSBtdGtfZGlzcF9hYWwubyBcCj4gPiAgICAgICAg ICAgICAgICAgICBtdGtfZGlzcF9nYW1tYS5vIFwKPiA+ICAgICAgICAgICAgICAgICAgIG10a19k aXNwX21lcmdlLm8gXAo+ID4gICAgICAgICAgICAgICAgICAgbXRrX2Rpc3Bfb3ZsLm8gXAo+ID4g KyAgICAgICAgICAgICAgICAgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IubyBcCj4gPiAgICAgICAgICAg ICAgICAgICBtdGtfZGlzcF9yZG1hLm8gXAo+ID4gICAgICAgICAgICAgICAgICAgbXRrX2RybV9j cnRjLm8gXAo+ID4gICAgICAgICAgICAgICAgICAgbXRrX2RybV9kZHBfY29tcC5vIFwKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmgKPiA+IGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX2Rydi5oCj4gPiBpbmRleCAyNDQ2YWQw YTQ5NzcuLjZhNGY0YzQyYWVkYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZGlzcF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kaXNwX2Rydi5oCj4gPiBAQCAtMTEzLDYgKzExMywyMiBAQCB2b2lkIG10a19yZG1hX2VuYWJs ZV92Ymxhbmsoc3RydWN0IGRldmljZQo+ID4gKmRldiwKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICp2YmxhbmtfY2JfZGF0YSk7Cj4gPiAgdm9pZCBtdGtfcmRtYV9kaXNhYmxl X3ZibGFuayhzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gCj4gPiAraW50IG10a19vdmxfYWRhcHRv cl9jbGtfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0 b3JfY2xrX2Rpc2FibGUoc3RydWN0IGRldmljZSAqZGV2KTsKPiA+ICt2b2lkIG10a19vdmxfYWRh cHRvcl9jb25maWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdywKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaCwgdW5zaWduZWQgaW50IHZyZWZy ZXNoLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBicGMsIHN0 cnVjdCBjbWRxX3BrdAo+ID4gKmNtZHFfcGt0KTsKPiA+ICt2b2lkIG10a19vdmxfYWRhcHRvcl9s YXllcl9jb25maWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQKPiA+IGlkeCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRl ICpzdGF0ZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21k cV9wa3QgKmNtZHFfcGt0KTsKPiA+ICt2b2lkIG10a19vdmxfYWRhcHRvcl9lbmFibGVfdmJsYW5r KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9pZCAoKnZibGFua19jYikodm9pZCAqKSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqdmJsYW5rX2NiX2RhdGEpOwo+ID4gK3ZvaWQgbXRrX292bF9hZGFw dG9yX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gPiArdm9pZCBtdGtfb3Zs X2FkYXB0b3Jfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2KTsKPiA+ICt2b2lkIG10a19vdmxfYWRh cHRvcl9zdG9wKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gPiArdW5zaWduZWQgaW50IG10a19vdmxf YWRhcHRvcl9sYXllcl9ucihzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gKwo+ID4gIGludCBtdGtf bWRwX3JkbWFfY2xrX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gIHZvaWQgbXRrX21k cF9yZG1hX2Nsa19kaXNhYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gPiAgdm9pZCBtdGtfbWRw X3JkbWFfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY21kcV9wa3QKPiA+ICpjbWRx X3BrdCk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNw X292bF9hZGFwdG9yLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX292 bF9hZGFwdG9yLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLmJmYjVhOWQyOWMyNgo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX292bF9hZGFwdG9yLmMKPiA+IEBAIC0wLDAgKzEsNDk4IEBA Cj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gKy8qCj4g PiArICogQ29weXJpZ2h0IChjKSAyMDIxIE1lZGlhVGVrIEluYy4KPiA+ICsgKi8KPiA+ICsKPiA+ ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9vZi5o Pgo+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvY29tcG9u ZW50Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ID4gKyNpbmNsdWRlIDxs aW51eC9vZl9hZGRyZXNzLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o Pgo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4 L3Jlc2V0Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaD4K PiA+ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1jbWRxLmg+Cj4gPiArCj4gPiAr I2luY2x1ZGUgIm10a19kcm1fZHJ2LmgiCj4gPiArI2luY2x1ZGUgIm10a19kcm1fY3J0Yy5oIgo+ ID4gKyNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCj4gPiArI2luY2x1ZGUgIm10a19kaXNw X2Rydi5oIgo+IAo+IEFscGhhYmV0aWMgb3JkZXIuCj4gCk9LLgoKPiA+ICsjaW5jbHVkZSAibXRr X2V0aGRyLmgiCj4gPiArCj4gPiArI2RlZmluZSBNVEtfT1ZMX0FEQVBUT1JfUkRNQV9NQVhfV0lE VEggMTkyMAo+ID4gKyNkZWZpbmUgTVRLX09WTF9BREFQVE9SX0xBWUVSX05VTSA0Cj4gPiArCj4g PiArZW51bSBtdGtfb3ZsX2FkYXB0b3JfY29tcF90eXBlIHsKPiA+ICsgICAgICAgT1ZMX0FEQVBU T1JfVFlQRV9SRE1BID0gMCwKPiA+ICsgICAgICAgT1ZMX0FEQVBUT1JfVFlQRV9NRVJHRSwKPiA+ ICsgICAgICAgT1ZMX0FEQVBUT1JfVFlQRV9FVEhEUiwKPiA+ICsgICAgICAgT1ZMX0FEQVBUT1Jf VFlQRV9OVU0sCj4gPiArfTsKPiA+ICsKPiA+ICtlbnVtIG10a19vdmxfYWRhcHRvcl9jb21wX2lk IHsKPiA+ICsgICAgICAgT1ZMX0FEQVBUT1JfTURQX1JETUEwLAo+ID4gKyAgICAgICBPVkxfQURB UFRPUl9NRFBfUkRNQTEsCj4gPiArICAgICAgIE9WTF9BREFQVE9SX01EUF9SRE1BMiwKPiA+ICsg ICAgICAgT1ZMX0FEQVBUT1JfTURQX1JETUEzLAo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBf UkRNQTQsCj4gPiArICAgICAgIE9WTF9BREFQVE9SX01EUF9SRE1BNSwKPiA+ICsgICAgICAgT1ZM X0FEQVBUT1JfTURQX1JETUE2LAo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBfUkRNQTcsCj4g PiArICAgICAgIE9WTF9BREFQVE9SX01FUkdFMCwKPiA+ICsgICAgICAgT1ZMX0FEQVBUT1JfTUVS R0UxLAo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRVJHRTIsCj4gPiArICAgICAgIE9WTF9BREFQ VE9SX01FUkdFMywKPiA+ICsgICAgICAgT1ZMX0FEQVBUT1JfRVRIRFIwLAo+ID4gKyAgICAgICBP VkxfQURBUFRPUl9JRF9NQVgKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBvdmxfYWRhcHRvcl9j b21wX21hdGNoIHsKPiA+ICsgICAgICAgZW51bSBtdGtfb3ZsX2FkYXB0b3JfY29tcF90eXBlIHR5 cGU7Cj4gPiArICAgICAgIGludCBhbGlhc19pZDsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBt dGtfZGlzcF9vdmxfYWRhcHRvciB7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKm92bF9hZGFw dG9yX2NvbXBbT1ZMX0FEQVBUT1JfSURfTUFYXTsKPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAq bW1zeXNfZGV2Owo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBv dmxfYWRhcHRvcl9jb21wX3N0cltdID0gewo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTURQX1JE TUEwIiwKPiA+ICsgICAgICAgIk9WTF9BREFQVE9SX01EUF9SRE1BMSIsCj4gPiArICAgICAgICJP VkxfQURBUFRPUl9NRFBfUkRNQTIiLAo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTURQX1JETUEz IiwKPiA+ICsgICAgICAgIk9WTF9BREFQVE9SX01EUF9SRE1BNCIsCj4gPiArICAgICAgICJPVkxf QURBUFRPUl9NRFBfUkRNQTUiLAo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTURQX1JETUE2IiwK PiA+ICsgICAgICAgIk9WTF9BREFQVE9SX01EUF9SRE1BNyIsCj4gPiArICAgICAgICJPVkxfQURB UFRPUl9NRVJHRTAiLAo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTUVSR0UxIiwKPiA+ICsgICAg ICAgIk9WTF9BREFQVE9SX01FUkdFMiIsCj4gPiArICAgICAgICJPVkxfQURBUFRPUl9NRVJHRTMi LAo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfRVRIRFIiLAo+ID4gKyAgICAgICAiT1ZMX0FEQVBU T1JfSURfTUFYIgo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBw cml2YXRlX2NvbXBfc3RlbVtPVkxfQURBUFRPUl9UWVBFX05VTV0KPiA+ID0gewo+ID4gKyAgICAg ICBbT1ZMX0FEQVBUT1JfVFlQRV9SRE1BXSA9ICJ2ZG8xX3JkbWEiLAo+ID4gKyAgICAgICBbT1ZM X0FEQVBUT1JfVFlQRV9NRVJHRV0gPSAibWVyZ2UiLAo+ID4gKyAgICAgICBbT1ZMX0FEQVBUT1Jf VFlQRV9FVEhEUl0gPSAiZXRoZHIiLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBvdmxfYWRhcHRvcl9jb21wX21hdGNoCj4gPiBjb21wX21hdGNoZXNbT1ZMX0FEQVBUT1Jf SURfTUFYXSA9IHsKPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1BMF0gPSAgICAgICB7 IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgMAo+ID4gfSwKPiA+ICsgICAgICAgW09WTF9BREFQVE9S X01EUF9SRE1BMV0gPSAgICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgMQo+ID4gfSwKPiA+ ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1BMl0gPSAgICAgICB7IE9WTF9BREFQVE9SX1RZ UEVfUkRNQSwgMgo+ID4gfSwKPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1BM10gPSAg ICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgMwo+ID4gfSwKPiA+ICsgICAgICAgW09WTF9B REFQVE9SX01EUF9SRE1BNF0gPSAgICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgNAo+ID4g fSwKPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1BNV0gPSAgICAgICB7IE9WTF9BREFQ VE9SX1RZUEVfUkRNQSwgNQo+ID4gfSwKPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1B Nl0gPSAgICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgNgo+ID4gfSwKPiA+ICsgICAgICAg W09WTF9BREFQVE9SX01EUF9SRE1BN10gPSAgICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwg Nwo+ID4gfSwKPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01FUkdFMF0gPSAgeyBPVkxfQURBUFRP Ul9UWVBFX01FUkdFLCAxIH0sCj4gPiArICAgICAgIFtPVkxfQURBUFRPUl9NRVJHRTFdID0gIHsg T1ZMX0FEQVBUT1JfVFlQRV9NRVJHRSwgMiB9LAo+ID4gKyAgICAgICBbT1ZMX0FEQVBUT1JfTUVS R0UyXSA9ICB7IE9WTF9BREFQVE9SX1RZUEVfTUVSR0UsIDMgfSwKPiA+ICsgICAgICAgW09WTF9B REFQVE9SX01FUkdFM10gPSAgeyBPVkxfQURBUFRPUl9UWVBFX01FUkdFLCA0IH0sCj4gPiArICAg ICAgIFtPVkxfQURBUFRPUl9FVEhEUjBdID0gIHsgT1ZMX0FEQVBUT1JfVFlQRV9FVEhEUiwgMCB9 LAo+ID4gK307Cj4gPiArCj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0b3JfbGF5ZXJfY29uZmlnKHN0 cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50Cj4gPiBpZHgsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG10a19wbGFuZV9zdGF0ZSAqc3RhdGUsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3Br dCkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBtdGtfZGlzcF9vdmxfYWRhcHRvciAqb3ZsX2Fk YXB0b3IgPQo+ID4gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPiArICAgICAgIHN0cnVjdCBtdGtf cGxhbmVfcGVuZGluZ19zdGF0ZSAqcGVuZGluZyA9ICZzdGF0ZS0+cGVuZGluZzsKPiA+ICsgICAg ICAgc3RydWN0IG10a19tZHBfcmRtYV9jZmcgcmRtYV9jb25maWcgPSB7MH07Cj4gPiArICAgICAg IHN0cnVjdCBkZXZpY2UgKnJkbWFfbDsKPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqcmRtYV9y Owo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICptZXJnZTsKPiA+ICsgICAgICAgc3RydWN0IGRl dmljZSAqZXRoZHI7Cj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZt dF9pbmZvID0KPiA+IGRybV9mb3JtYXRfaW5mbyhwZW5kaW5nLT5mb3JtYXQpOwo+ID4gKyAgICAg ICBib29sIHVzZV9kdWFsX3BpcGUgPSBmYWxzZTsKPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGxf dyA9IDA7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCByX3cgPSAwOwo+ID4gKwo+ID4gKyAgICAg ICBkZXZfZGJnKGRldiwgIiVzKyBpZHg6JWQsIGVuYWJsZTolZCwgZm10OjB4JXhcbiIsIF9fZnVu Y19fLAo+ID4gaWR4LAo+ID4gKyAgICAgICAgICAgICAgIHBlbmRpbmctPmVuYWJsZSwgcGVuZGlu Zy0+Zm9ybWF0KTsKPiA+ICsgICAgICAgZGV2X2RiZyhkZXYsICJhZGRyIDB4JWx4LCBmYiB3OiVk LCB7JWQsJWQsJWQsJWR9XG4iLAo+ID4gKyAgICAgICAgICAgICAgIHBlbmRpbmctPmFkZHIsIChw ZW5kaW5nLT5waXRjaCAvIGZtdF9pbmZvLT5jcHBbMF0pLAo+ID4gKyAgICAgICAgICAgICAgIHBl bmRpbmctPngsIHBlbmRpbmctPnksIHBlbmRpbmctPndpZHRoLCBwZW5kaW5nLQo+ID4gPmhlaWdo dCk7Cj4gPiArCj4gPiArICAgICAgIHJkbWFfbCA9IG92bF9hZGFwdG9yLQo+ID4gPm92bF9hZGFw dG9yX2NvbXBbT1ZMX0FEQVBUT1JfTURQX1JETUEwICsgMiAqIGlkeF07Cj4gPiArICAgICAgIHJk bWFfciA9IG92bF9hZGFwdG9yLQo+ID4gPm92bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1JfTURQ X1JETUEwICsgMiAqIGlkeCArIDFdOwo+ID4gKyAgICAgICBtZXJnZSA9IG92bF9hZGFwdG9yLT5v dmxfYWRhcHRvcl9jb21wW09WTF9BREFQVE9SX01FUkdFMCArCj4gPiBpZHhdOwo+ID4gKyAgICAg ICBldGhkciA9IG92bF9hZGFwdG9yLT5vdmxfYWRhcHRvcl9jb21wW09WTF9BREFQVE9SX0VUSERS MF07Cj4gPiArCj4gPiArICAgICAgIGlmICghcGVuZGluZy0+ZW5hYmxlKSB7Cj4gPiArICAgICAg ICAgICAgICAgbXRrX21lcmdlX2Rpc2FibGUobWVyZ2UsIGNtZHFfcGt0KTsKPiA+ICsgICAgICAg ICAgICAgICBtdGtfbWRwX3JkbWFfc3RvcChyZG1hX2wsIGNtZHFfcGt0KTsKPiA+ICsgICAgICAg ICAgICAgICBtdGtfbWRwX3JkbWFfc3RvcChyZG1hX3IsIGNtZHFfcGt0KTsKPiA+ICsgICAgICAg ICAgICAgICBtdGtfZXRoZHJfbGF5ZXJfY29uZmlnKGV0aGRyLCBpZHgsIHN0YXRlLAo+ID4gY21k cV9wa3QpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybjsKPiA+ICsgICAgICAgfQo+ID4gKwo+ ID4gKyAgICAgICAvKiBFVEhEUiBpcyBpbiAxVDJQIGRvbWFpbiwgd2lkdGggbmVlZHMgdG8gYmUg MiBwaXhlbHMKPiA+IGFsaWduICovCj4gPiArICAgICAgIHBlbmRpbmctPndpZHRoID0gQUxJR05f RE9XTihwZW5kaW5nLT53aWR0aCwgMik7Cj4gCj4gcGVuZGluZy0+d2lkdGggaXMgcGFzc2VkIGZy b20gY2FsbGVyIGZ1bmN0aW9uLCB0aGUgY2FsbGVyIGZ1bmN0aW9uCj4gZG9lcyBub3QgZXhwZWN0 IHRoYXQgcGVuZGluZy0+d2lkdGggaXMgbW9kaWZpZWQgYnkgY2FsbGVlIGZ1bmN0aW9uLgo+IApP SywgSSB3aWxsIGFkZCBsb2NhbCB2YXJpYWJsZSB0byBrZWVwIHRoZSAyIHBpeGVsIGFsaWduIHdp ZHRoLgo+ID4gKwo+ID4gKyAgICAgICBpZiAocGVuZGluZy0+d2lkdGggPiBNVEtfT1ZMX0FEQVBU T1JfUkRNQV9NQVhfV0lEVEgpCj4gPiArICAgICAgICAgICAgICAgdXNlX2R1YWxfcGlwZSA9IHRy dWU7Cj4gPiArCj4gPiArICAgICAgIGlmICh1c2VfZHVhbF9waXBlKSB7Cj4gPiArICAgICAgICAg ICAgICAgbF93ID0gKHBlbmRpbmctPndpZHRoIC8gMikgKyAoKHBlbmRpbmctPndpZHRoIC8gMikK PiA+ICUgMik7Cj4gPiArICAgICAgICAgICAgICAgcl93ID0gcGVuZGluZy0+d2lkdGggLSBsX3c7 Cj4gPiArICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgbF93ID0gcGVuZGluZy0+ d2lkdGg7Cj4gPiArICAgICAgIH0KPiA+ICsgICAgICAgbXRrX21lcmdlX2FkdmFuY2VfY29uZmln KG1lcmdlLCBsX3csIHJfdywgcGVuZGluZy0+aGVpZ2h0LAo+ID4gMCwgMCwgY21kcV9wa3QpOwo+ ID4gKyAgICAgICBtdGtfbW1zeXNfZGRwX2NvbmZpZyhvdmxfYWRhcHRvci0+bW1zeXNfZGV2LAo+ ID4gTU1TWVNfQ09ORklHX01FUkdFX0FTWU5DX1dJRFRILAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZHgsIHBlbmRpbmctPndpZHRoIC8gMiwgY21kcV9wa3QpOwo+IAo+IFRoaXMg aXMgbmVpdGhlciBsX3cgbm9yIHJfdywgd2h5Pwo+IEZvciBleGFtcGxlLCBpZiBwZW5kaW5nLT53 aWR0aCBpcyAxOTIyLCBsX3cgaXMgOTYyLCByX3cgaXMgOTYwLCBhbmQKPiBNTVNZU19DT05GSUdf TUVSR0VfQVNZTkNfV0lEVEggaXMgOTYxLgo+IApUaGUgYXN5bmMgd2lkdGggaXMgc2V0IHRvIHRo ZSBtZXJnZSBvdXRwdXQgd2lkdGggLyAyLCBub3QgZm9yIG1lcmdlCmlucHV0IChsX3cvcl93KS4K Cj4gPiArICAgICAgIG10a19tbXN5c19kZHBfY29uZmlnKG92bF9hZGFwdG9yLT5tbXN5c19kZXYs Cj4gPiBNTVNZU19DT05GSUdfTUVSR0VfQVNZTkNfSEVJR0hULAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZHgsIHBlbmRpbmctPmhlaWdodCwgY21kcV9wa3QpOwo+ID4gKwo+ID4g KyAgICAgICByZG1hX2NvbmZpZy53aWR0aCA9IGxfdzsKPiA+ICsgICAgICAgcmRtYV9jb25maWcu aGVpZ2h0ID0gcGVuZGluZy0+aGVpZ2h0Owo+ID4gKyAgICAgICByZG1hX2NvbmZpZy5hZGRyMCA9 IHBlbmRpbmctPmFkZHI7Cj4gPiArICAgICAgIHJkbWFfY29uZmlnLnBpdGNoID0gcGVuZGluZy0+ cGl0Y2g7Cj4gPiArICAgICAgIHJkbWFfY29uZmlnLmZtdCA9IHBlbmRpbmctPmZvcm1hdDsKPiA+ ICsgICAgICAgbXRrX21kcF9yZG1hX2NvbmZpZyhyZG1hX2wsICZyZG1hX2NvbmZpZywgY21kcV9w a3QpOwo+ID4gKwo+ID4gKyAgICAgICBpZiAodXNlX2R1YWxfcGlwZSkgewo+ID4gKyAgICAgICAg ICAgICAgIHJkbWFfY29uZmlnLnhfbGVmdCA9IGxfdzsKPiA+ICsgICAgICAgICAgICAgICByZG1h X2NvbmZpZy53aWR0aCA9IHJfdzsKPiA+ICsgICAgICAgICAgICAgICBtdGtfbWRwX3JkbWFfY29u ZmlnKHJkbWFfciwgJnJkbWFfY29uZmlnLAo+ID4gY21kcV9wa3QpOwo+ID4gKyAgICAgICB9Cj4g PiArCj4gPiArICAgICAgIG10a19tZXJnZV9lbmFibGUobWVyZ2UsIGNtZHFfcGt0KTsKPiA+ICsg ICAgICAgbXRrX21lcmdlX3VubXV0ZShtZXJnZSwgY21kcV9wa3QpOwo+ID4gKwo+ID4gKyAgICAg ICBtdGtfbWRwX3JkbWFfc3RhcnQocmRtYV9sLCBjbWRxX3BrdCk7Cj4gPiArICAgICAgIGlmICh1 c2VfZHVhbF9waXBlKQo+ID4gKyAgICAgICAgICAgICAgIG10a19tZHBfcmRtYV9zdGFydChyZG1h X3IsIGNtZHFfcGt0KTsKPiA+ICsgICAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgICAgIG10a19t ZHBfcmRtYV9zdG9wKHJkbWFfciwgY21kcV9wa3QpOwo+ID4gKwo+ID4gKyAgICAgICBtdGtfZXRo ZHJfbGF5ZXJfY29uZmlnKGV0aGRyLCBpZHgsIHN0YXRlLCBjbWRxX3BrdCk7Cj4gPiArfQo+ID4g Kwo+ID4gK3ZvaWQgbXRrX292bF9hZGFwdG9yX2NvbmZpZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVu c2lnbmVkIGludCB3LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBoLCB1bnNpZ25lZCBpbnQgdnJlZnJlc2gsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGJwYywgc3RydWN0IGNtZHFfcGt0Cj4gPiAqY21kcV9wa3QpCj4gPiAr ewo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IgKm92bF9hZGFwdG9yID0K PiA+IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4gKwo+ID4gKyAgICAgICBtdGtfZXRoZHJfY29u ZmlnKG92bF9hZGFwdG9yLQo+ID4gPm92bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1JfRVRIRFIw XSwgdywgaCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB2cmVmcmVzaCwgYnBjLCBjbWRx X3BrdCk7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgbXRrX292bF9hZGFwdG9yX3N0YXJ0KHN0cnVj dCBkZXZpY2UgKmRldikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBtdGtfZGlzcF9vdmxfYWRh cHRvciAqb3ZsX2FkYXB0b3IgPQo+ID4gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPiArCj4gPiAr ICAgICAgIG10a19ldGhkcl9zdGFydChvdmxfYWRhcHRvci0KPiA+ID5vdmxfYWRhcHRvcl9jb21w W09WTF9BREFQVE9SX0VUSERSMF0pOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIG10a19vdmxfYWRh cHRvcl9zdG9wKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBt dGtfZGlzcF9vdmxfYWRhcHRvciAqb3ZsX2FkYXB0b3IgPQo+ID4gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKnJkbWFfbDsKPiA+ICsgICAgICAgc3RydWN0 IGRldmljZSAqcmRtYV9yOwo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICptZXJnZTsKPiA+ICsg ICAgICAgdTMyIGk7Cj4gPiArCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBNVEtfT1ZMX0FE QVBUT1JfTEFZRVJfTlVNOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgICByZG1hX2wgPSBvdmxf YWRhcHRvci0KPiA+ID5vdmxfYWRhcHRvcl9jb21wW09WTF9BREFQVE9SX01EUF9SRE1BMCArIDIg KiBpXTsKPiA+ICsgICAgICAgICAgICAgICByZG1hX3IgPSBvdmxfYWRhcHRvci0KPiA+ID5vdmxf YWRhcHRvcl9jb21wW09WTF9BREFQVE9SX01EUF9SRE1BMCArIDIgKiBpICsgMV07Cj4gPiArICAg ICAgICAgICAgICAgbWVyZ2UgPSBvdmxfYWRhcHRvci0KPiA+ID5vdmxfYWRhcHRvcl9jb21wW09W TF9BREFQVE9SX01FUkdFMCArIGldOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIG10a19tZHBf cmRtYV9zdG9wKHJkbWFfbCwgTlVMTCk7Cj4gPiArICAgICAgICAgICAgICAgbXRrX21kcF9yZG1h X3N0b3AocmRtYV9yLCBOVUxMKTsKPiA+ICsgICAgICAgICAgICAgICBtdGtfbWVyZ2Vfc3RvcCht ZXJnZSk7Cj4gCj4gRG9lcyBEUk0gZnJhbWV3b3JrIG5vdCBkaXNhYmxlIGFsbCBsYXllciBiZWZv cmUgZGlzYWJsZSBjcnRjPyBUaGVzZQo+IGNvZGVzIGxvb2tzIGFzeW1ldHJpYy4KPiAKRFJNIGZy YW1ld29yayBkaXNhYmxlIGFsbCBsYXllcnMgYmVmb3JlIGRpc2FibGluZyBjcnRjLiBUaGlzIGlz IGEKcmVkdW5kYW50IGNvZGUgZnJhZ21lbnQuIEkgd2lsbCByZW1vdmUgaXQuCgo+ID4gKyAgICAg ICB9Cj4gPiArCj4gPiArICAgICAgIG10a19ldGhkcl9zdG9wKG92bF9hZGFwdG9yLQo+ID4gPm92 bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1JfRVRIRFIwXSk7Cj4gPiArfQo+ID4gKwo+ID4gK2lu dCBtdGtfb3ZsX2FkYXB0b3JfY2xrX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiArewo+ ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IgKm92bF9hZGFwdG9yID0KPiA+ IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpjb21wOwo+ ID4gKyAgICAgICBpbnQgcmV0Owo+ID4gKyAgICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgICAg Zm9yIChpID0gT1ZMX0FEQVBUT1JfTURQX1JETUEwOyBpIDwgT1ZMX0FEQVBUT1JfSURfTUFYOwo+ ID4gaSsrKSB7Cj4gCj4gSW4gY2xrX2VyciwgeW91IGNvdW50IGkgdG8gemVybywgc28KPiAKPiBm b3IgKGkgPSAwOyBpIDwgT1ZMX0FEQVBUT1JfSURfTUFYOyBpKyspIHsKPiAKT0suCj4gPiArICAg ICAgICAgICAgICAgY29tcCA9IG92bF9hZGFwdG9yLT5vdmxfYWRhcHRvcl9jb21wW2ldOwo+ID4g Kwo+ID4gKyAgICAgICAgICAgICAgIGlmIChpIDwgT1ZMX0FEQVBUT1JfTUVSR0UwKQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gbXRrX21kcF9yZG1hX2Nsa19lbmFibGUoY29tcCk7 Cj4gPiArICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA8IE9WTF9BREFQVE9SX0VUSERSMCkKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IG10a19tZXJnZV9jbGtfZW5hYmxlKGNvbXAp Owo+ID4gKyAgICAgICAgICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dCA9IG10a19ldGhkcl9jbGtfZW5hYmxlKGNvbXApOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChy ZXQpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGVuYWJsZSBjbG9jayAlZCwgZXJy ICVkLQo+ID4gJXNcbiIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIHJl dCwgb3ZsX2FkYXB0b3JfY29tcF9zdHJbaV0pOwo+IAo+IERyb3Agb3ZsX2FkYXB0b3JfY29tcF9z dHJbXSBhbmQgcHJpbnQgaSBpbnN0ZWFkIG9mCj4gb3ZsX2FkYXB0b3JfY29tcF9zdHJbaV0uIFdl IGNvdWxkIGtub3cgd2hhdCB0aGUgaSBtZWFuIGluIGRyaXZlcgo+IGNvZGUuCj4gCk9LLgo+IAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBjbGtfZXJyOwo+ID4gKyAgICAgICAgICAg ICAgIH0KPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ ID4gK2Nsa19lcnI6Cj4gPiArICAgICAgIHdoaWxlICgtLWkgPj0gMCkgewo+ID4gKyAgICAgICAg ICAgICAgIGNvbXAgPSBvdmxfYWRhcHRvci0+b3ZsX2FkYXB0b3JfY29tcFtpXTsKPiA+ICsgICAg ICAgICAgICAgICBpZiAoaSA8IE9WTF9BREFQVE9SX01FUkdFMCkKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIG10a19tZHBfcmRtYV9jbGtfZGlzYWJsZShjb21wKTsKPiA+ICsgICAgICAgICAg ICAgICBlbHNlIGlmIChpIDwgT1ZMX0FEQVBUT1JfRVRIRFIwKQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgbXRrX21lcmdlX2Nsa19kaXNhYmxlKGNvbXApOwo+ID4gKyAgICAgICAgICAgICAg IGVsc2UKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19ldGhkcl9jbGtfZGlzYWJsZShj b21wKTsKPiA+ICsgICAgICAgfQo+ID4gKyAgICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsK PiA+ICt2b2lkIG10a19vdmxfYWRhcHRvcl9jbGtfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IgKm92bF9hZGFw dG9yID0KPiA+IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNl ICpjb21wOwo+ID4gKyAgICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgICAgZm9yIChpID0gT1ZM X0FEQVBUT1JfTURQX1JETUEwOyBpIDwgT1ZMX0FEQVBUT1JfSURfTUFYOwo+ID4gaSsrKSB7Cj4g Cj4gZm9yIChpID0gMDsgaSA8IE9WTF9BREFQVE9SX0lEX01BWDsgaSsrKSB7Cj4gCk9LLgo+ID4g KyAgICAgICAgICAgICAgIGNvbXAgPSBvdmxfYWRhcHRvci0+b3ZsX2FkYXB0b3JfY29tcFtpXTsK PiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZiAoaSA8IE9WTF9BREFQVE9SX01FUkdFMCkKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19tZHBfcmRtYV9jbGtfZGlzYWJsZShjb21wKTsK PiA+ICsgICAgICAgICAgICAgICBlbHNlIGlmIChpIDwgT1ZMX0FEQVBUT1JfRVRIRFIwKQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgbXRrX21lcmdlX2Nsa19kaXNhYmxlKGNvbXApOwo+ID4g KyAgICAgICAgICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19ldGhk cl9jbGtfZGlzYWJsZShjb21wKTsKPiA+ICsgICAgICAgfQo+ID4gK30KPiA+ICsKPiA+ICt1bnNp Z25lZCBpbnQgbXRrX292bF9hZGFwdG9yX2xheWVyX25yKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ ICt7Cj4gPiArICAgICAgIHJldHVybiBNVEtfT1ZMX0FEQVBUT1JfTEFZRVJfTlVNOwo+ID4gK30K PiA+ICsKPiA+ICt2b2lkIG10a19vdmxfYWRhcHRvcl9lbmFibGVfdmJsYW5rKHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZAo+ID4gKCp2YmxhbmtfY2IpKHZvaWQgKiksCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZibGFua19jYl9kYXRhKQo+ID4gK3sKPiA+ICsg ICAgICAgc3RydWN0IG10a19kaXNwX292bF9hZGFwdG9yICpvdmxfYWRhcHRvciA9Cj4gPiBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPiA+ICsKPiA+ICsgICAgICAgbXRrX2V0aGRyX2VuYWJsZV92Ymxh bmsob3ZsX2FkYXB0b3ItCj4gPiA+b3ZsX2FkYXB0b3JfY29tcFtPVkxfQURBUFRPUl9FVEhEUjBd LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YmxhbmtfY2IsIHZibGFua19j Yl9kYXRhKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0b3JfZGlzYWJsZV92 Ymxhbmsoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IG10a19k aXNwX292bF9hZGFwdG9yICpvdmxfYWRhcHRvciA9Cj4gPiBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK PiA+ICsKPiA+ICsgICAgICAgbXRrX2V0aGRyX2Rpc2FibGVfdmJsYW5rKG92bF9hZGFwdG9yLQo+ ID4gPm92bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1JfRVRIRFIwXSk7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBpbnQgb3ZsX2FkYXB0b3JfY29tcF9nZXRfaWQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QKPiA+IGRldmljZV9ub2RlICpub2RlLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIG10a19vdmxfYWRhcHRvcl9jb21wX3R5cGUKPiA+IHR5cGUpCj4g PiArewo+ID4gKyAgICAgICBpbnQgYWxpYXNfaWQgPSBvZl9hbGlhc19nZXRfaWQobm9kZSwKPiA+ IHByaXZhdGVfY29tcF9zdGVtW3R5cGVdKTsKPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsgICAg ICAgaW50IGk7Cj4gPiArCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNv bXBfbWF0Y2hlcyk7IGkrKykKPiA+ICsgICAgICAgICAgICAgICBpZiAoY29tcF9tYXRjaGVzW2ld LnR5cGUgPT0gdHlwZSAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICBjb21wX21hdGNoZXNbaV0u YWxpYXNfaWQgPT0gYWxpYXNfaWQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g aTsKPiA+ICsKPiA+ICsgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGlkLiB0eXBl OiAlZCwgYWxpYXM6ICVkXG4iLAo+ID4gdHlwZSwgYWxpYXNfaWQpOwo+ID4gKyAgICAgICByZXR1 cm4gLUVJTlZBTDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgbXRrX292bF9hZGFwdG9yX2NvbXBfZHRfaWRzW10gPSB7Cj4gPiArICAgICAgIHsKPiA+ ICsgICAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxOTUtdmRvMS1yZG1h IiwKPiA+ICsgICAgICAgICAgICAgICAuZGF0YSA9ICh2b2lkICopT1ZMX0FEQVBUT1JfVFlQRV9S RE1BLAo+ID4gKyAgICAgICB9LCB7Cj4gPiArICAgICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQ4MTk1LWRpc3AtbWVyZ2UiLAo+ID4gKyAgICAgICAgICAgICAgIC5kYXRhID0g KHZvaWQgKilPVkxfQURBUFRPUl9UWVBFX01FUkdFLAo+ID4gKyAgICAgICB9LCB7Cj4gPiArICAg ICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTk1LWRpc3AtZXRoZHIiLAo+ ID4gKyAgICAgICAgICAgICAgIC5kYXRhID0gKHZvaWQgKilPVkxfQURBUFRPUl9UWVBFX0VUSERS LAo+ID4gKyAgICAgICB9LAo+ID4gKyAgICAgICB7fSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRp YyBpbnQgY29tcGFyZV9vZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCj4gPiArewo+ ID4gKyAgICAgICByZXR1cm4gZGV2LT5vZl9ub2RlID09IGRhdGE7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyBpbnQgb3ZsX2FkYXB0b3JfY29tcF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0Cj4gPiBjb21wb25lbnRfbWF0Y2ggKiptYXRjaCkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVj dCBtdGtfZGlzcF9vdmxfYWRhcHRvciAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4g KyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsICpwYXJlbnQ7Cj4gPiArICAgICAgIHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmNvbXBfcGRldjsKPiA+ICsgICAgICAgaW50IGksIHJldDsK PiA+ICsKPiA+ICsgICAgICAgcGFyZW50ID0gZGV2LT5wYXJlbnQtPnBhcmVudC0+b2Zfbm9kZS0+ cGFyZW50Owo+ID4gKwo+ID4gKyAgICAgICBmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKHBhcmVudCwg bm9kZSkgewo+ID4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9m X2lkOwo+ID4gKyAgICAgICAgICAgICAgIGVudW0gbXRrX292bF9hZGFwdG9yX2NvbXBfdHlwZSB0 eXBlOwo+ID4gKyAgICAgICAgICAgICAgIGludCBpZDsKPiA+ICsKPiA+ICsgICAgICAgICAgICAg ICBvZl9pZCA9IG9mX21hdGNoX25vZGUobXRrX292bF9hZGFwdG9yX2NvbXBfZHRfaWRzLAo+ID4g bm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCFvZl9pZCkKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGlmICghb2ZfZGV2 aWNlX2lzX2F2YWlsYWJsZShub2RlKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2 X2luZm8oZGV2LCAiU2tpcHBpbmcgZGlzYWJsZWQgY29tcG9uZW50Cj4gPiAlcE9GXG4iLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAg ICAgICAgICAgICAgdHlwZSA9IChlbnVtIG10a19vdmxfYWRhcHRvcl9jb21wX3R5cGUpb2ZfaWQt PmRhdGE7Cj4gPiArICAgICAgICAgICAgICAgaWQgPSBvdmxfYWRhcHRvcl9jb21wX2dldF9pZChk ZXYsIG5vZGUsIHR5cGUpOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChpZCA8IDApIHsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKGRldiwgIlNraXBwaW5nIHVua25vd24gY29t cG9uZW50Cj4gPiAlcE9GXG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsgICAgICAg ICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgY29tcF9wZGV2ID0gb2ZfZmluZF9k ZXZpY2VfYnlfbm9kZShub2RlKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoIWNvbXBfcGRldikg ewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oZGV2LCAiY2FuJ3QgZmluZCBw bGF0Zm9ybSBkZXZpY2UKPiA+IG9mIG5vZGU6JXNcbiIsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub2RlLT5uYW1lKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRU5PREVWOwo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgICBw cml2LT5vdmxfYWRhcHRvcl9jb21wW2lkXSA9ICZjb21wX3BkZXYtPmRldjsKPiA+ICsKPiA+ICsg ICAgICAgICAgICAgICBkcm1fb2ZfY29tcG9uZW50X21hdGNoX2FkZChkZXYsIG1hdGNoLCBjb21w YXJlX29mLAo+ID4gbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAiQWRk aW5nIGNvbXBvbmVudCBtYXRjaCBmb3IgJXBPRlxuIiwKPiA+IG5vZGUpOwo+ID4gKyAgICAgICB9 Cj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50 IG10a19kaXNwX292bF9hZGFwdG9yX2NvbXBfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpkYXRhKQo+ID4gK3sKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIG10a19kaXNwX292bF9hZGFwdG9yX2NvbXBfdW5iaW5k KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+IHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCj4gPiAr ewo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgbXRr X2Rpc3Bfb3ZsX2FkYXB0b3JfY29tcF9vcHMgPQo+ID4gewo+ID4gKyAgICAgICAuYmluZCAgID0g bXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfY29tcF9iaW5kLAo+ID4gKyAgICAgICAudW5iaW5kID0gbXRr X2Rpc3Bfb3ZsX2FkYXB0b3JfY29tcF91bmJpbmQsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMg aW50IG10a19kaXNwX292bF9hZGFwdG9yX21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikK PiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBtdGtfZGlzcF9vdmxfYWRhcHRvciAqcHJpdiA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4gKwo+ID4gKyAgICAgICBkZXZfaW5mbyhkZXYsICIlcy0l ZCIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Cj4gPiArCj4gPiArICAgICAgIGNvbXBvbmVudF9iaW5k X2FsbChkZXYsIHByaXYtPm1tc3lzX2Rldik7Cj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBtdGtfZGlzcF9vdmxfYWRhcHRvcl9tYXN0ZXJfdW5iaW5k KHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ICt7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgY29tcG9uZW50X21hc3Rlcl9vcHMKPiA+IG10a19kaXNwX292bF9hZGFwdG9yX21h c3Rlcl9vcHMgPSB7Cj4gPiArICAgICAgIC5iaW5kICAgICAgICAgICA9IG10a19kaXNwX292bF9h ZGFwdG9yX21hc3Rlcl9iaW5kLAo+ID4gKyAgICAgICAudW5iaW5kICAgICAgICAgPSBtdGtfZGlz cF9vdmxfYWRhcHRvcl9tYXN0ZXJfdW5iaW5kLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGlu dCBtdGtfZGlzcF9vdmxfYWRhcHRvcl9jaGVja19jb21wKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ ICt7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKPiA+ICsKPiA+ICsgICAg ICAgZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShkZXYtPnBhcmVudC0+cGFyZW50LT5vZl9ub2RlLQo+ ID4gPnBhcmVudCwgbm9kZSkgewo+ID4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgKm9mX2lkOwo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKmNvbXBfcGRldjsKPiA+ICsgICAgICAgICAgICAgICBlbnVtIG10a19vdmxfYWRhcHRvcl9j b21wX3R5cGUgdHlwZTsKPiA+ICsgICAgICAgICAgICAgICBpbnQgaWQ7Cj4gPiArCj4gPiArICAg ICAgICAgICAgICAgb2ZfaWQgPSBvZl9tYXRjaF9ub2RlKG10a19vdmxfYWRhcHRvcl9jb21wX2R0 X2lkcywKPiA+IG5vZGUpOwo+ID4gKyAgICAgICAgICAgICAgIGlmICghb2ZfaWQpCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBp ZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUobm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICB0eXBlID0gKGVudW0gbXRr X292bF9hZGFwdG9yX2NvbXBfdHlwZSlvZl9pZC0+ZGF0YTsKPiA+ICsKPiA+ICsgICAgICAgICAg ICAgICBpZCA9IG92bF9hZGFwdG9yX2NvbXBfZ2V0X2lkKGRldiwgbm9kZSwgdHlwZSk7Cj4gPiAr ICAgICAgICAgICAgICAgaWYgKGlkIDwgMCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGNvbXBfcGRldiA9IG9mX2ZpbmRfZGV2 aWNlX2J5X25vZGUobm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCFjb21wX3BkZXYpCj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgICBpZiAoIXBsYXRmb3JtX2dldF9kcnZkYXRhKGNvbXBfcGRldikpCj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiAKPiBUaGlz IGZ1bmN0aW9uIGxvb2tzIGxpa2Ugb3ZsX2FkYXB0b3JfY29tcF9pbml0KCksIEkgdGhpbmsgdGhp bmdzCj4gY291bGQKPiBiZSBkb25lIG9uY2UuCj4gCj4gUmVnYXJkcywKPiBDaHVuLUt1YW5nLgo+ IApPSy4KCj4gPiArICAgICAgIH0KPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBpbnQgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZQo+ID4gKnBkZXYpCj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3Bfb3Zs X2FkYXB0b3IgKnByaXY7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5k ZXY7Cj4gPiArICAgICAgIHN0cnVjdCBjb21wb25lbnRfbWF0Y2ggKm1hdGNoID0gTlVMTDsKPiA+ ICsgICAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgICAgZGV2X2luZm8oZGV2LCAiJXMrXG4i LCBfX2Z1bmNfXyk7Cj4gPiArCj4gPiArICAgICAgIHJldCA9IG10a19kaXNwX292bF9hZGFwdG9y X2NoZWNrX2NvbXAoZGV2KTsKPiA+ICsgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgICAgcHJpdiA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwo+ID4gKyAgICAgICBpZiAoIXByaXYpCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiArCj4gPiArICAgICAgIHByaXYt Pm1tc3lzX2RldiA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwo+ID4gKwo+ID4gKyAgICAgICBw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0g b3ZsX2FkYXB0b3JfY29tcF9pbml0KGRldiwgJm1hdGNoKTsKPiA+ICsgICAgICAgaWYgKHJldCkg ewo+ID4gKyAgICAgICAgICAgICAgIGRldl9ub3RpY2UoZGV2LCAib3ZsX2FkYXB0b3IgY29tcCBp bml0IGZhaWxcbiIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAg IH0KPiA+ICsgICAgICAgY29tcG9uZW50X21hc3Rlcl9hZGRfd2l0aF9tYXRjaChkZXYsCj4gPiAm bXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfbWFzdGVyX29wcywgbWF0Y2gpOwo+ID4gKwo+ID4gKyAgICAg ICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOwo+ID4gKwo+ID4gKyAgICAgICByZXQgPSBjb21wb25l bnRfYWRkKGRldiwgJm10a19kaXNwX292bF9hZGFwdG9yX2NvbXBfb3BzKTsKPiA+ICsgICAgICAg aWYgKHJldCAhPSAwKSB7Cj4gPiArICAgICAgICAgICAgICAgcG1fcnVudGltZV9kaXNhYmxlKGRl dik7Cj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIGNvbXBv bmVudDogJWRcbiIsIHJldCk7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgZGV2X2lu Zm8oZGV2LCAiJXMtXG4iLCBfX2Z1bmNfXyk7Cj4gPiArICAgICAgIHJldHVybiByZXQ7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UKPiA+ICpwZGV2KQo+ID4gK3sKPiA+ICsgICAgICAgY29tcG9uZW50 X2RlbCgmcGRldi0+ZGV2LCAmbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfY29tcF9vcHMpOwo+ID4gKyAg ICAgICBwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7Cj4gPiArICAgICAgIHJldHVybiAw Owo+ID4gK30KPiA+ICsKPiA+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX292bF9h ZGFwdG9yX2RyaXZlciA9IHsKPiA+ICsgICAgICAgLnByb2JlID0gbXRrX2Rpc3Bfb3ZsX2FkYXB0 b3JfcHJvYmUsCj4gPiArICAgICAgIC5yZW1vdmUgPSBtdGtfZGlzcF9vdmxfYWRhcHRvcl9yZW1v dmUsCj4gPiArICAgICAgIC5kcml2ZXIgPSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAu bmFtZSA9ICJtZWRpYXRlay1kaXNwLW92bC1hZGFwdG9yIiwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIC5vd25lciA9IFRISVNfTU9EVUxFLAo+ID4gKyAgICAgICAgICAgICAgIH0sCj4gPiAr fTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYu aAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+ID4gaW5kZXgg YTU4Y2ViZDAxZDM1Li4xYWQ5ZjdlZGZjYzcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fZHJ2LmgKPiA+IEBAIC01MSw2ICs1MSw3IEBAIGV4dGVybiBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyCj4gPiBtdGtfZGlzcF9jY29ycl9kcml2ZXI7Cj4gPiAgZXh0ZXJuIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfY29sb3JfZHJpdmVyOwo+ID4gIGV4dGVybiBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX2dhbW1hX2RyaXZlcjsKPiA+ICBleHRlcm4gc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9tZXJnZV9kcml2ZXI7Cj4gPiArZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfZHJpdmVyOwo+ID4gIGV4 dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX292bF9kcml2ZXI7Cj4gPiAgZXh0 ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfcmRtYV9kcml2ZXI7Cj4gPiAgZXh0 ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7Cj4gPiAtLQo+ID4gMi4x OC4wCj4gPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==