From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Thu, 03 Feb 2022 17:39:21 +0100 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1nFf8j-004oHD-J9 for lore@lore.pengutronix.de; Thu, 03 Feb 2022 17:39:21 +0100 Received: from bombadil.infradead.org ([198.137.202.133]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nFf8h-00059M-56 for lore@pengutronix.de; Thu, 03 Feb 2022 17:39:20 +0100 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:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=RplxbNqo9EUTLFLK6RoIhRK4P40VyYWKS+qVGdGXqqY=; b=YgeeEMuI+XGtuV ZthT7pgsgMBqLYNfs3oEgc0kZDoUVN7NoQGnwMiFaR6dp2BexGq3NZRgWN4eTQSBtlJUDZV3w/cmC QDWOSM+hdOrwDb9JVCSnddahu7nNBVvCEheA9/2o3yFYBK7ohqljboZD44NTC34Qel61cHlTsErbV Y4MMstuWYjqOkqBhAPLdU78WNDTxdxPWjimWOcKpe8v0bi4Eu6eSymr+HR4hC/+WKJQC000b+00qf Ys7jiyEO0s6R9psyzDhUcziuV0q3wzenrSGJAtx3Dv2yhLuZVIAP01YH/xHOhu5Dh9Z/DDgBPy33L Dk9KB68d94xtDoLXpllw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nFf76-0020m4-6S; Thu, 03 Feb 2022 16:37:40 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nFf6z-0020kt-MO for barebox@lists.infradead.org; Thu, 03 Feb 2022 16:37:36 +0000 Received: from gallifrey.ext.pengutronix.de ([2001:67c:670:201:5054:ff:fe8d:eefb] helo=[127.0.0.1]) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1nFf6x-0004w0-F1; Thu, 03 Feb 2022 17:37:31 +0100 Message-ID: <4551ed38-4902-e57e-fa3c-6e9728de1e30@pengutronix.de> Date: Thu, 3 Feb 2022 17:37:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: Thorsten Scherer Cc: barebox@lists.infradead.org References: <20220202095554.1103016-1-a.fatoum@pengutronix.de> <20220202095554.1103016-4-a.fatoum@pengutronix.de> <20220203143446.eewzqwy6jym7trqd@NB142.eckelmann.group> From: Ahmad Fatoum In-Reply-To: <20220203143446.eewzqwy6jym7trqd@NB142.eckelmann.group> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220203_083734_104181_F849F6C5 X-CRM114-Status: GOOD ( 35.84 ) X-BeenThere: barebox@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: "barebox" X-SA-Exim-Connect-IP: 198.137.202.133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-4.7 required=4.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: Re: [PATCH 3/4] video: add MIPI DBI Type C Option 3 support X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.ext.pengutronix.de) T24gMDMuMDIuMjIgMTU6MzQsIFRob3JzdGVuIFNjaGVyZXIgd3JvdGU6Cj4gSGkgQWhtYWQsCj4g Cj4gdXVwcy4gIEkgZGlkIG5vdCBzZWUgdjMgb2YgdGhpcyBwYXRjaC4gU29ycnkgZm9yIHRoZSBu b2lzZS4KCkFsbCBnb29kLiBUaGFua3MgZm9yIGxvb2tpbmcgb3V0IDopCgo+IAo+IE9uIFdlZCwg RmViIDAyLCAyMDIyIGF0IDEwOjU1OjUzQU0gKzAxMDAsIEFobWFkIEZhdG91bSB3cm90ZToKPj4g SW1wb3J0IHRoZSBMaW51eCB2NS4xNSBzdGF0ZSBvZiB0aGUgZHJpdmVyIHRvIGFsbG93IGVhc3kg cG9ydGluZyBvZgo+PiBNSVBJLURCSSBkaXNwbGF5cyBsaWtlIHRoZSBJbGl0ZWsgOTQzMSBhZGRl ZCBpbiBhIGZvbGxvdy11cCBjb21taXQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFobWFkIEZhdG91 bSA8YS5mYXRvdW1AcGVuZ3V0cm9uaXguZGU+Cj4+IC0tLQo+PiAgY29tbWFuZHMvS2NvbmZpZyAg ICAgICAgIHwgIDIzICsrCj4+ICBjb21tYW5kcy9NYWtlZmlsZSAgICAgICAgfCAgIDEgKwo+PiAg ZHJpdmVycy92aWRlby9LY29uZmlnICAgIHwgICAzICsKPj4gIGRyaXZlcnMvdmlkZW8vTWFrZWZp bGUgICB8ICAgMSArCj4+ICBkcml2ZXJzL3ZpZGVvL21pcGlfZGJpLmMgfCA0NjcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICBpbmNsdWRlL3NwaS9zcGkuaCAgICAg ICAgfCAgMjAgKysKPj4gIDYgZmlsZXMgY2hhbmdlZCwgNTE1IGluc2VydGlvbnMoKykKPj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL21pcGlfZGJpLmMKPj4KPj4gZGlmZiAtLWdp dCBhL2NvbW1hbmRzL0tjb25maWcgYi9jb21tYW5kcy9LY29uZmlnCj4+IGluZGV4IGJhOGNhNWNk ZWJjZS4uYWY2MGY3YmUxNTg3IDEwMDY0NAo+PiAtLS0gYS9jb21tYW5kcy9LY29uZmlnCj4+ICsr KyBiL2NvbW1hbmRzL0tjb25maWcKPj4gQEAgLTE5NjksNiArMTk2OSwyOSBAQCBjb25maWcgQ01E X1NQSQo+PiAgCQkgIC13IEJJVAliaXRzIHBlciB3b3JkIChkZWZhdWx0IDgpCj4+ICAJCSAgLXYJ CXZlcmJvc2UKPj4gIAo+PiArY29uZmlnIENNRF9NSVBJX0RCSQo+PiArCWJvb2wKPj4gKwlkZXBl bmRzIG9uIERSSVZFUl9WSURFT19NSVBJX0RCSSAmJiBTUEkKPj4gKwlzZWxlY3QgUFJJTlRGX0hF WFNUUgo+PiArCXByb21wdCAibWlwaV9kYmkgY29tbWFuZCIKPj4gKwloZWxwCj4+ICsJICB3cml0 ZS9yZWFkIGZyb20gTUlQSSBEQkkgU1BJIGRldmljZQo+PiArCj4+ICsJICBVc2FnZTogbWlwaV9k YmkgWy13bGRdIFtSRUddIFtEQVRBLi4uXQo+PiArCj4+ICsJICBPcHRpb25zOgo+PiArCQkgIC1s CQlsaXN0IGFsbCBNSVBJIERCSSBkZXZpY2VzCj4+ICsJCSAgLWQgREVWSUNFCXNlbGVjdCBzcGVj aWZpYyBkZXZpY2UgKGRlZmF1bHQgaXMgZmlyc3QgcmVnaXN0ZXJlZCkKPj4gKwkJICAtdwkJaXNz dWUgd3JpdGUgY29tbWFuZAo+PiArCj4+ICtCQVJFQk9YX0NNRF9TVEFSVChtaXBpX2RiaSkKPj4g KwkuY21kCQk9IGRvX21pcGlfZGJpLAo+PiArCUJBUkVCT1hfQ01EX0RFU0MoIndyaXRlL3JlYWQg ZnJvbSBNSVBJIERCSSBTUEkgZGV2aWNlIikKPj4gKwlCQVJFQk9YX0NNRF9PUFRTKCJbLXdsZF0g W1JFR10gW0RBVEEuLi5dIikKPj4gKwlCQVJFQk9YX0NNRF9HUk9VUChDTURfR1JQX0hXTUFOSVAp Cj4+ICsJQkFSRUJPWF9DTURfSEVMUChjbWRfbWlwaV9kYmlfaGVscCkKPj4gK0JBUkVCT1hfQ01E X0VORAo+PiArCj4+ICBjb25maWcgQ01EX0xFRF9UUklHR0VSCj4+ICAJYm9vbAo+PiAgCWRlcGVu ZHMgb24gTEVEX1RSSUdHRVJTCj4+IGRpZmYgLS1naXQgYS9jb21tYW5kcy9NYWtlZmlsZSBiL2Nv bW1hbmRzL01ha2VmaWxlCj4+IGluZGV4IGRiNzhkMGI4NzdmNi4uZmZmYjZkOTc5ZTgyIDEwMDY0 NAo+PiAtLS0gYS9jb21tYW5kcy9NYWtlZmlsZQo+PiArKysgYi9jb21tYW5kcy9NYWtlZmlsZQo+ PiBAQCAtNjcsNiArNjcsNyBAQCBvYmotJChDT05GSUdfQ01EX0dQSU8pCQkrPSBncGlvLm8KPj4g IG9iai0kKENPTkZJR19DTURfVU5DT01QUkVTUykJKz0gdW5jb21wcmVzcy5vCj4+ICBvYmotJChD T05GSUdfQ01EX0kyQykJCSs9IGkyYy5vCj4+ICBvYmotJChDT05GSUdfQ01EX1NQSSkJCSs9IHNw aS5vCj4+ICtvYmotJChDT05GSUdfQ01EX01JUElfREJJKQkrPSBtaXBpX2RiaS5vCj4+ICBvYmot JChDT05GSUdfQ01EX1VCSSkJCSs9IHViaS5vCj4+ICBvYmotJChDT05GSUdfQ01EX1VCSUZPUk1B VCkJKz0gdWJpZm9ybWF0Lm8KPj4gIG9iai0kKENPTkZJR19DTURfTUVOVSkJCSs9IG1lbnUubwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9LY29uZmlnIGIvZHJpdmVycy92aWRlby9LY29u ZmlnCj4+IGluZGV4IDFiODY3MmZkZWE4Mi4uNzBkMWQ4MDk1MzZiIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL3ZpZGVvL0tjb25maWcKPj4gKysrIGIvZHJpdmVycy92aWRlby9LY29uZmlnCj4+IEBA IC0xMjksNiArMTI5LDkgQEAgY29uZmlnIERSSVZFUl9WSURFT19FRElECj4+ICAJICBUaGlzIGVu YWJsZWQgc3VwcG9ydCBmb3IgcmVhZGluZyBhbmQgcGFyc2luZyBFRElEIGRhdGEgZnJvbSBhbiBh dHRhY2hlZAo+PiAgCSAgbW9uaXRvci4KPj4gIAo+PiArY29uZmlnIERSSVZFUl9WSURFT19NSVBJ X0RCSQo+PiArCWJvb2wKPj4gKwo+PiAgY29uZmlnIERSSVZFUl9WSURFT19CQUNLTElHSFQKPj4g IAlib29sICJBZGQgYmFja2xpZ2h0IHN1cHBvcnQiCj4+ICAJaGVscAo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy92aWRlby9NYWtlZmlsZSBiL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUKPj4gaW5kZXgg N2Y0NDI5Mjc4OTg3Li5hN2I3MGQ4MjA3MmEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdmlkZW8v TWFrZWZpbGUKPj4gKysrIGIvZHJpdmVycy92aWRlby9NYWtlZmlsZQo+PiBAQCAtOSw2ICs5LDcg QEAgb2JqLSQoQ09ORklHX1ZJREVPX1ZQTCkgKz0gdnBsLm8KPj4gIG9iai0kKENPTkZJR19EUklW RVJfVklERU9fTVRMMDE3KSArPSBtdGwwMTcubwo+PiAgb2JqLSQoQ09ORklHX0RSSVZFUl9WSURF T19UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+PiAgb2JqLSQoQ09ORklHX0RSSVZFUl9WSURFT19T SU1QTEVfUEFORUwpICs9IHNpbXBsZS1wYW5lbC5vCj4+ICtvYmotJChDT05GSUdfRFJJVkVSX1ZJ REVPX01JUElfREJJKSArPSBtaXBpX2RiaS5vCj4+ICAKPj4gIG9iai0kKENPTkZJR19EUklWRVJf VklERU9fQVRNRUwpICs9IGF0bWVsX2xjZGZiLm8gYXRtZWxfbGNkZmJfY29yZS5vCj4+ICBvYmot JChDT05GSUdfRFJJVkVSX1ZJREVPX0FUTUVMX0hMQ0QpICs9IGF0bWVsX2hsY2RmYi5vIGF0bWVs X2xjZGZiX2NvcmUubwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9taXBpX2RiaS5jIGIv ZHJpdmVycy92aWRlby9taXBpX2RiaS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNDhiMTExMGY3MmFiCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJp dmVycy92aWRlby9taXBpX2RiaS5jCj4+IEBAIC0wLDAgKzEsNDY3IEBACj4+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgo+PiArLyoKPj4gKyAqIE1JUEkgRGlz cGxheSBCdXMgSW50ZXJmYWNlIChEQkkpIExDRCBjb250cm9sbGVyIHN1cHBvcnQKPj4gKyAqCj4+ ICsgKiBDb3B5cmlnaHQgMjAxNiBOb3JhbGYgVHLDuG5uZXMKPj4gKyAqLwo+PiArCj4+ICsjZGVm aW5lIHByX2ZtdChmbXQpICJtaXBpLWRiaTogIiBmbXQKPj4gKwo+PiArI2luY2x1ZGUgPGNvbW1v bi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3Np emVzLmg+Cj4+ICsjaW5jbHVkZSA8Z3Bpb2QuaD4KPj4gKyNpbmNsdWRlIDxyZWd1bGF0b3IuaD4K Pj4gKyNpbmNsdWRlIDxzcGkvc3BpLmg+Cj4+ICsjaW5jbHVkZSA8dmlkZW8vbWlwaV9kYmkuaD4K Pj4gKwo+PiArI2luY2x1ZGUgPHZpZGVvL3ZwbC5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL21pcGlf ZGlzcGxheS5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL2ZvdXJjYy5oPgo+PiArCj4+ICsjZGVmaW5l IE1JUElfREJJX01BWF9TUElfUkVBRF9TUEVFRCAyMDAwMDAwIC8qIDJNSHogKi8KPj4gKwo+PiAr I2RlZmluZSBEQ1NfUE9XRVJfTU9ERV9ESVNQTEFZCQkJQklUKDIpCj4+ICsjZGVmaW5lIERDU19Q T1dFUl9NT0RFX0RJU1BMQVlfTk9STUFMX01PREUJQklUKDMpCj4+ICsjZGVmaW5lIERDU19QT1dF Ul9NT0RFX1NMRUVQX01PREUJCUJJVCg0KQo+PiArI2RlZmluZSBEQ1NfUE9XRVJfTU9ERV9QQVJU SUFMX01PREUJCUJJVCg1KQo+PiArI2RlZmluZSBEQ1NfUE9XRVJfTU9ERV9JRExFX01PREUJCUJJ VCg2KQo+PiArI2RlZmluZSBEQ1NfUE9XRVJfTU9ERV9SRVNFUlZFRF9NQVNLCQkoQklUKDApIHwg QklUKDEpIHwgQklUKDcpKQo+PiArCj4+ICtMSVNUX0hFQUQobWlwaV9kYmlfbGlzdCk7Cj4+ICtF WFBPUlRfU1lNQk9MKG1pcGlfZGJpX2xpc3QpOwo+PiArCj4+ICsvKioKPj4gKyAqIERPQzogb3Zl cnZpZXcKPj4gKyAqCj4+ICsgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgaGVscGVycyBmb3IgTUlQ SSBEaXNwbGF5IEJ1cyBJbnRlcmZhY2UgKERCSSkKPj4gKyAqIGNvbXBhdGlibGUgZGlzcGxheSBj b250cm9sbGVycy4KPj4gKyAqCj4+ICsgKiBNYW55IGNvbnRyb2xsZXJzIGZvciB0aW55IGxjZCBk aXNwbGF5cyBhcmUgTUlQSSBjb21wbGlhbnQgYW5kIGNhbiB1c2UgdGhpcwo+PiArICogbGlicmFy eS4gSWYgYSBjb250cm9sbGVyIHVzZXMgcmVnaXN0ZXJzIDB4MkEgYW5kIDB4MkIgdG8gc2V0IHRo ZSBhcmVhIHRvCj4+ICsgKiB1cGRhdGUgYW5kIHVzZXMgcmVnaXN0ZXIgMHgyQyB0byB3cml0ZSB0 byBmcmFtZSBtZW1vcnksIGl0IGlzIG1vc3QgbGlrZWx5Cj4+ICsgKiBNSVBJIGNvbXBsaWFudC4K Pj4gKyAqCj4+ICsgKiBPbmx5IE1JUEkgVHlwZSAxIGRpc3BsYXlzIGFyZSBzdXBwb3J0ZWQgc2lu Y2UgYSBmdWxsIGZyYW1lIG1lbW9yeSBpcyBuZWVkZWQuCj4+ICsgKgo+PiArICogVGhlcmUgYXJl IDMgTUlQSSBEQkkgaW1wbGVtZW50YXRpb24gdHlwZXM6Cj4+ICsgKgo+PiArICogQS4gTW90b3Jv bGEgNjgwMCB0eXBlIHBhcmFsbGVsIGJ1cwo+PiArICoKPj4gKyAqIEIuIEludGVsIDgwODAgdHlw ZSBwYXJhbGxlbCBidXMKPj4gKyAqCj4+ICsgKiBDLiBTUEkgdHlwZSB3aXRoIDMgb3B0aW9uczoK Pj4gKyAqCj4+ICsgKiAgICAxLiA5LWJpdCB3aXRoIHRoZSBEYXRhL0NvbW1hbmQgc2lnbmFsIGFz IHRoZSBuaW50aCBiaXQKPj4gKyAqICAgIDIuIFNhbWUgYXMgYWJvdmUgZXhjZXB0IGl0J3Mgc2Vu dCBhcyAxNiBiaXRzCj4+ICsgKiAgICAzLiA4LWJpdCB3aXRoIHRoZSBEYXRhL0NvbW1hbmQgc2ln bmFsIGFzIGEgc2VwYXJhdGUgRC9DWCBwaW4KPj4gKyAqCj4+ICsgKiBDdXJyZW50bHkgYmFyZWJv eCBtaXBpX2RiaSBvbmx5IHN1cHBvcnRzIFR5cGUgQyBvcHRpb24gMyB3aXRoCj4+ICsgKiBtaXBp X2RiaV9zcGlfaW5pdCgpLgo+PiArICovCj4+ICsKPj4gKyNkZWZpbmUgTUlQSV9EQklfREVCVUdf Q09NTUFORChjbWQsIGRhdGEsIGxlbikgXAo+PiArKHsgXAo+PiArCWlmICghbGVuKSBcCj4+ICsJ CXByX2RlYnVnKCJjbWQ9JTAyeFxuIiwgY21kKTsgXAo+PiArCWVsc2UgaWYgKGxlbiA8PSAzMikg XAo+PiArCQlwcl9kZWJ1ZygiY21kPSUwMngsIHBhcj0lKnBoXG4iLCBjbWQsIChpbnQpbGVuLCBk YXRhKTtcCj4+ICsJZWxzZSBcCj4+ICsJCXByX2RlYnVnKCJjbWQ9JTAyeCwgbGVuPSV6dVxuIiwg Y21kLCBsZW4pOyBcCj4+ICt9KQo+PiArCj4+ICtzdGF0aWMgY29uc3QgdTggbWlwaV9kYmlfZGNz X3JlYWRfY29tbWFuZHNbXSA9IHsKPj4gKwlNSVBJX0RDU19HRVRfRElTUExBWV9JRCwKPj4gKwlN SVBJX0RDU19HRVRfUkVEX0NIQU5ORUwsCj4+ICsJTUlQSV9EQ1NfR0VUX0dSRUVOX0NIQU5ORUws Cj4+ICsJTUlQSV9EQ1NfR0VUX0JMVUVfQ0hBTk5FTCwKPj4gKwlNSVBJX0RDU19HRVRfRElTUExB WV9TVEFUVVMsCj4+ICsJTUlQSV9EQ1NfR0VUX1BPV0VSX01PREUsCj4+ICsJTUlQSV9EQ1NfR0VU X0FERFJFU1NfTU9ERSwKPj4gKwlNSVBJX0RDU19HRVRfUElYRUxfRk9STUFULAo+PiArCU1JUElf RENTX0dFVF9ESVNQTEFZX01PREUsCj4+ICsJTUlQSV9EQ1NfR0VUX1NJR05BTF9NT0RFLAo+PiAr CU1JUElfRENTX0dFVF9ESUFHTk9TVElDX1JFU1VMVCwKPj4gKwlNSVBJX0RDU19SRUFEX01FTU9S WV9TVEFSVCwKPj4gKwlNSVBJX0RDU19SRUFEX01FTU9SWV9DT05USU5VRSwKPj4gKwlNSVBJX0RD U19HRVRfU0NBTkxJTkUsCj4+ICsJTUlQSV9EQ1NfR0VUX0RJU1BMQVlfQlJJR0hUTkVTUywKPj4g KwlNSVBJX0RDU19HRVRfQ09OVFJPTF9ESVNQTEFZLAo+PiArCU1JUElfRENTX0dFVF9QT1dFUl9T QVZFLAo+PiArCU1JUElfRENTX0dFVF9DQUJDX01JTl9CUklHSFRORVNTLAo+PiArCU1JUElfRENT X1JFQURfRERCX1NUQVJULAo+PiArCU1JUElfRENTX1JFQURfRERCX0NPTlRJTlVFLAo+PiArCTAs IC8qIHNlbnRpbmVsICovCj4+ICt9Owo+PiArCj4+ICtib29sIG1pcGlfZGJpX2NvbW1hbmRfaXNf cmVhZChzdHJ1Y3QgbWlwaV9kYmkgKmRiaSwgdTggY21kKQo+PiArewo+PiArCXVuc2lnbmVkIGlu dCBpOwo+PiArCj4+ICsJaWYgKCFkYmktPnJlYWRfY29tbWFuZHMpCj4+ICsJCXJldHVybiBmYWxz ZTsKPj4gKwo+PiArCWZvciAoaSA9IDA7IGkgPCAweGZmOyBpKyspIHsKPj4gKwkJaWYgKCFkYmkt PnJlYWRfY29tbWFuZHNbaV0pCj4+ICsJCQlyZXR1cm4gZmFsc2U7Cj4+ICsJCWlmIChjbWQgPT0g ZGJpLT5yZWFkX2NvbW1hbmRzW2ldKQo+PiArCQkJcmV0dXJuIHRydWU7Cj4+ICsJfQo+PiArCj4+ ICsJcmV0dXJuIGZhbHNlOwo+PiArfQo+PiArCj4+ICtpbnQgbWlwaV9kYmlfY29tbWFuZF9yZWFk X2xlbihpbnQgY21kKQo+PiArewo+PiArCXN3aXRjaCAoY21kKSB7Cj4+ICsJY2FzZSBNSVBJX0RD U19SRUFEX01FTU9SWV9TVEFSVDoKPj4gKwljYXNlIE1JUElfRENTX1JFQURfTUVNT1JZX0NPTlRJ TlVFOgo+PiArCQlyZXR1cm4gMjsKPj4gKwljYXNlIE1JUElfRENTX0dFVF9ESVNQTEFZX0lEOgo+ PiArCQlyZXR1cm4gMzsKPj4gKwljYXNlIE1JUElfRENTX0dFVF9ESVNQTEFZX1NUQVRVUzoKPj4g KwkJcmV0dXJuIDQ7Cj4+ICsJZGVmYXVsdDoKPj4gKwkJcmV0dXJuIDE7Cj4+ICsJfQo+PiArfQo+ PiArCj4+ICsvKioKPj4gKyAqIG1pcGlfZGJpX2NvbW1hbmRfcmVhZCAtIE1JUEkgRENTIHJlYWQg Y29tbWFuZAo+PiArICogQGRiaTogTUlQSSBEQkkgc3RydWN0dXJlCj4+ICsgKiBAY21kOiBDb21t YW5kCj4+ICsgKiBAdmFsOiBWYWx1ZSByZWFkCj4+ICsgKgo+PiArICogU2VuZCBNSVBJIERDUyBy ZWFkIGNvbW1hbmQgdG8gdGhlIGNvbnRyb2xsZXIuCj4+ICsgKgo+PiArICogUmV0dXJuczoKPj4g KyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+PiAr ICovCj4+ICtpbnQgbWlwaV9kYmlfY29tbWFuZF9yZWFkKHN0cnVjdCBtaXBpX2RiaSAqZGJpLCB1 OCBjbWQsIHU4ICp2YWwpCj4+ICt7Cj4+ICsJaWYgKCFkYmktPnJlYWRfY29tbWFuZHMpCj4+ICsJ CXJldHVybiAtRUFDQ0VTOwo+PiArCj4+ICsJaWYgKCFtaXBpX2RiaV9jb21tYW5kX2lzX3JlYWQo ZGJpLCBjbWQpKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCXJldHVybiBtaXBpX2Ri aV9jb21tYW5kX2J1ZihkYmksIGNtZCwgdmFsLCAxKTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0wo bWlwaV9kYmlfY29tbWFuZF9yZWFkKTsKPj4gKwo+PiArLyoqCj4+ICsgKiBtaXBpX2RiaV9jb21t YW5kX2J1ZiAtIE1JUEkgRENTIGNvbW1hbmQgd2l0aCBwYXJhbWV0ZXIocykgaW4gYW4gYXJyYXkK Pj4gKyAqIEBkYmk6IE1JUEkgREJJIHN0cnVjdHVyZQo+PiArICogQGNtZDogQ29tbWFuZAo+PiAr ICogQGRhdGE6IFBhcmFtZXRlciBidWZmZXIKPj4gKyAqIEBsZW46IEJ1ZmZlciBsZW5ndGgKPj4g KyAqCj4+ICsgKiBSZXR1cm5zOgo+PiArICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJv ciBjb2RlIG9uIGZhaWx1cmUuCj4+ICsgKi8KPj4gK2ludCBtaXBpX2RiaV9jb21tYW5kX2J1Zihz dHJ1Y3QgbWlwaV9kYmkgKmRiaSwgdTggY21kLCB1OCAqZGF0YSwgc2l6ZV90IGxlbikKPj4gK3sK Pj4gKwl1OCAqY21kYnVmOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwkvKiBTUEkgcmVxdWlyZXMg ZG1hLXNhZmUgYnVmZmVycyAqLwo+PiArCWNtZGJ1ZiA9IGttZW1kdXAoJmNtZCwgMSwgR0ZQX0tF Uk5FTCk7Cj4+ICsJaWYgKCFjbWRidWYpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJ cmV0ID0gZGJpLT5jb21tYW5kKGRiaSwgY21kYnVmLCBkYXRhLCBsZW4pOwo+PiArCj4+ICsJa2Zy ZWUoY21kYnVmKTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9M KG1pcGlfZGJpX2NvbW1hbmRfYnVmKTsKPj4gKwo+PiArLyogVGhpcyBzaG91bGQgb25seSBiZSB1 c2VkIGJ5IG1pcGlfZGJpX2NvbW1hbmQoKSAqLwo+PiAraW50IG1pcGlfZGJpX2NvbW1hbmRfc3Rh Y2tidWYoc3RydWN0IG1pcGlfZGJpICpkYmksIHU4IGNtZCwgY29uc3QgdTggKmRhdGEsCj4+ICsJ CQkgICAgICBzaXplX3QgbGVuKQo+PiArewo+PiArCXU4ICpidWY7Cj4+ICsJaW50IHJldDsKPj4g Kwo+PiArCWJ1ZiA9IGttZW1kdXAoZGF0YSwgbGVuLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIWJ1 ZikKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlyZXQgPSBtaXBpX2RiaV9jb21tYW5k X2J1ZihkYmksIGNtZCwgYnVmLCBsZW4pOwo+PiArCj4+ICsJa2ZyZWUoYnVmKTsKPj4gKwo+PiAr CXJldHVybiByZXQ7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKG1pcGlfZGJpX2NvbW1hbmRfc3Rh Y2tidWYpOwo+PiArCj4+ICsvKioKPj4gKyAqIG1pcGlfZGJpX2h3X3Jlc2V0IC0gSGFyZHdhcmUg cmVzZXQgb2YgY29udHJvbGxlcgo+PiArICogQGRiaTogTUlQSSBEQkkgc3RydWN0dXJlCj4+ICsg Kgo+PiArICogUmVzZXQgY29udHJvbGxlciBpZiB0aGUgJm1pcGlfZGJpLT5yZXNldCBncGlvIGlz IHNldC4KPj4gKyAqLwo+PiArdm9pZCBtaXBpX2RiaV9od19yZXNldChzdHJ1Y3QgbWlwaV9kYmkg KmRiaSkKPj4gK3sKPj4gKwlpZiAoIWdwaW9faXNfdmFsaWQoZGJpLT5yZXNldCkpCj4+ICsJCXJl dHVybjsKPj4gKwo+PiArCWdwaW9kX3NldF92YWx1ZShkYmktPnJlc2V0LCAwKTsKPj4gKwl1ZGVs YXkoMjApOwo+PiArCWdwaW9kX3NldF92YWx1ZShkYmktPnJlc2V0LCAxKTsKPj4gKwltZGVsYXko MTIwKTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0wobWlwaV9kYmlfaHdfcmVzZXQpOwo+PiArCj4+ ICsvKioKPj4gKyAqIG1pcGlfZGJpX2Rpc3BsYXlfaXNfb24gLSBDaGVjayBpZiBkaXNwbGF5IGlz IG9uCj4+ICsgKiBAZGJpOiBNSVBJIERCSSBzdHJ1Y3R1cmUKPj4gKyAqCj4+ICsgKiBUaGlzIGZ1 bmN0aW9uIGNoZWNrcyB0aGUgUG93ZXIgTW9kZSByZWdpc3RlciAoaWYgcmVhZGFibGUpIHRvIHNl ZSBpZgo+PiArICogZGlzcGxheSBvdXRwdXQgaXMgdHVybmVkIG9uLiBUaGlzIGNhbiBiZSB1c2Vk IHRvIHNlZSBpZiB0aGUgYm9vdGxvYWRlcgo+PiArICogaGFzIGFscmVhZHkgdHVybmVkIG9uIHRo ZSBkaXNwbGF5IGF2b2lkaW5nIGZsaWNrZXIgd2hlbiB0aGUgcGlwZWxpbmUgaXMKPj4gKyAqIGVu YWJsZWQuCj4+ICsgKgo+PiArICogUmV0dXJuczoKPj4gKyAqIHRydWUgaWYgdGhlIGRpc3BsYXkg Y2FuIGJlIHZlcmlmaWVkIHRvIGJlIG9uLCBmYWxzZSBvdGhlcndpc2UuCj4+ICsgKi8KPj4gK2Jv b2wgbWlwaV9kYmlfZGlzcGxheV9pc19vbihzdHJ1Y3QgbWlwaV9kYmkgKmRiaSkKPj4gK3sKPj4g Kwl1OCB2YWw7Cj4+ICsKPj4gKwlpZiAobWlwaV9kYmlfY29tbWFuZF9yZWFkKGRiaSwgTUlQSV9E Q1NfR0VUX1BPV0VSX01PREUsICZ2YWwpKQo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKwl2 YWwgJj0gfkRDU19QT1dFUl9NT0RFX1JFU0VSVkVEX01BU0s7Cj4+ICsKPj4gKwkvKiBUaGUgcG93 ZXJvbi9yZXNldCB2YWx1ZSBpcyAwOGggRENTX1BPV0VSX01PREVfRElTUExBWV9OT1JNQUxfTU9E RSAqLwo+PiArCWlmICh2YWwgIT0gKERDU19QT1dFUl9NT0RFX0RJU1BMQVkgfAo+PiArCSAgICBE Q1NfUE9XRVJfTU9ERV9ESVNQTEFZX05PUk1BTF9NT0RFIHwgRENTX1BPV0VSX01PREVfU0xFRVBf TU9ERSkpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwo+PiArCXByX2RlYnVnKCJEaXNwbGF5IGlz IE9OXG4iKTsKPj4gKwo+PiArCXJldHVybiB0cnVlOwo+PiArfQo+PiArRVhQT1JUX1NZTUJPTCht aXBpX2RiaV9kaXNwbGF5X2lzX29uKTsKPj4gKwo+PiArI2lmIElTX0VOQUJMRUQoQ09ORklHX1NQ SSkKPj4gKwo+PiArLyoqCj4+ICsgKiBtaXBpX2RiaV9zcGlfY21kX21heF9zcGVlZCAtIGdldCB0 aGUgbWF4aW11bSBTUEkgYnVzIHNwZWVkCj4+ICsgKiBAc3BpOiBTUEkgZGV2aWNlCj4+ICsgKiBA bGVuOiBUaGUgdHJhbnNmZXIgYnVmZmVyIGxlbmd0aC4KPj4gKyAqCj4+ICsgKiBNYW55IGNvbnRy b2xsZXJzIGhhdmUgYSBtYXggc3BlZWQgb2YgMTBNSHosIGJ1dCBjYW4gYmUgcHVzaGVkIHdheSBi ZXlvbmQKPj4gKyAqIHRoYXQuIEluY3JlYXNlIHJlbGlhYmlsaXR5IGJ5IHJ1bm5pbmcgcGl4ZWwg ZGF0YSBhdCBtYXggc3BlZWQgYW5kIHRoZSByZXN0Cj4+ICsgKiBhdCAxME1IeiwgcHJldmVudGlu ZyB0cmFuc2ZlciBnbGl0Y2hlcyBmcm9tIG1lc3NpbmcgdXAgdGhlIGluaXQgc2V0dGluZ3MuCj4+ ICsgKi8KPj4gK3UzMiBtaXBpX2RiaV9zcGlfY21kX21heF9zcGVlZChzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpLCBzaXplX3QgbGVuKQo+PiArewo+PiArCWlmIChsZW4gPiA2NCkKPj4gKwkJcmV0dXJu IDA7IC8qIHVzZSBkZWZhdWx0ICovCj4+ICsKPj4gKwlyZXR1cm4gbWluX3QodTMyLCAxMDAwMDAw MCwgc3BpLT5tYXhfc3BlZWRfaHopOwo+PiArfQo+PiArRVhQT1JUX1NZTUJPTChtaXBpX2RiaV9z cGlfY21kX21heF9zcGVlZCk7Cj4+ICsKPj4gK3N0YXRpYyBib29sIG1pcGlfZGJpX21hY2hpbmVf bGl0dGxlX2VuZGlhbih2b2lkKQo+PiArewo+PiArI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFO KQo+PiArCXJldHVybiB0cnVlOwo+PiArI2Vsc2UKPj4gKwlyZXR1cm4gZmFsc2U7Cj4+ICsjZW5k aWYKPj4gK30KPj4gKwo+PiArLyogTUlQSSBEQkkgVHlwZSBDIE9wdGlvbiAzICovCj4+ICsKPj4g K3N0YXRpYyBpbnQgbWlwaV9kYmlfdHlwZWMzX2NvbW1hbmRfcmVhZChzdHJ1Y3QgbWlwaV9kYmkg KmRiaSwgdTggKmNtZCwKPj4gKwkJCQkJdTggKmRhdGEsIHNpemVfdCBsZW4pCj4+ICt7Cj4+ICsJ c3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9IGRiaS0+c3BpOwo+PiArCXUzMiBzcGVlZF9oeiA9IG1p bl90KHUzMiwgTUlQSV9EQklfTUFYX1NQSV9SRUFEX1NQRUVELAo+PiArCQkJICAgICBzcGktPm1h eF9zcGVlZF9oeiAvIDIpOwo+PiArCXN0cnVjdCBzcGlfdHJhbnNmZXIgdHJbMl0gPSB7Cj4+ICsJ CXsKPj4gKwkJCS5zcGVlZF9oeiA9IHNwZWVkX2h6LAo+PiArCQkJLnR4X2J1ZiA9IGNtZCwKPj4g KwkJCS5sZW4gPSAxLAo+PiArCQl9LCB7Cj4+ICsJCQkuc3BlZWRfaHogPSBzcGVlZF9oeiwKPj4g KwkJCS5sZW4gPSBsZW4sCj4+ICsJCX0sCj4+ICsJfTsKPj4gKwlzdHJ1Y3Qgc3BpX21lc3NhZ2Ug bTsKPj4gKwl1OCAqYnVmOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAoIWxlbikKPj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFN1cHBvcnQgbm9uLXN0YW5kYXJk IDI0LWJpdCBhbmQgMzItYml0IE5va2lhIHJlYWQgY29tbWFuZHMgd2hpY2gKPj4gKwkgKiBzdGFy dCB3aXRoIGEgZHVtbXkgY2xvY2ssIHNvIHdlIG5lZWQgdG8gcmVhZCBhbiBleHRyYSBieXRlLgo+ PiArCSAqLwo+PiArCWlmICgqY21kID09IE1JUElfRENTX0dFVF9ESVNQTEFZX0lEIHx8Cj4+ICsJ ICAgICpjbWQgPT0gTUlQSV9EQ1NfR0VUX0RJU1BMQVlfU1RBVFVTKSB7Cj4+ICsJCWlmICghKGxl biA9PSAzIHx8IGxlbiA9PSA0KSkKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsJCXRy WzFdLmxlbiA9IGxlbiArIDE7Cj4+ICsJfQo+PiArCj4+ICsJYnVmID0ga21hbGxvYyh0clsxXS5s ZW4sIEdGUF9LRVJORUwpOwo+PiArCWlmICghYnVmKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4g Kwo+PiArCXRyWzFdLnJ4X2J1ZiA9IGJ1ZjsKPj4gKwlncGlvZF9zZXRfdmFsdWUoZGJpLT5kYywg MCk7Cj4+ICsKPj4gKwlzcGlfbWVzc2FnZV9pbml0X3dpdGhfdHJhbnNmZXJzKCZtLCB0ciwgQVJS QVlfU0laRSh0cikpOwo+PiArCXJldCA9IHNwaV9zeW5jKHNwaSwgJm0pOwo+PiArCWlmIChyZXQp Cj4+ICsJCWdvdG8gZXJyX2ZyZWU7Cj4+ICsKPj4gKwlpZiAodHJbMV0ubGVuID09IGxlbikgewo+ PiArCQltZW1jcHkoZGF0YSwgYnVmLCBsZW4pOwo+PiArCX0gZWxzZSB7Cj4+ICsJCXVuc2lnbmVk IGludCBpOwo+PiArCj4+ICsJCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKPj4gKwkJCWRhdGFb aV0gPSAoYnVmW2ldIDw8IDEpIHwgKGJ1ZltpICsgMV0gPj4gNyk7Cj4+ICsJfQo+PiArCj4+ICsJ TUlQSV9EQklfREVCVUdfQ09NTUFORCgqY21kLCBkYXRhLCBsZW4pOwo+PiArCj4+ICtlcnJfZnJl ZToKPj4gKwlrZnJlZShidWYpOwo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBtaXBpX2RiaV90eXBlYzNfY29tbWFuZChzdHJ1Y3QgbWlwaV9kYmkgKmRiaSwg dTggKmNtZCwKPj4gKwkJCQkgICB1OCAqcGFyLCBzaXplX3QgbnVtKQo+PiArewo+PiArCXN0cnVj dCBzcGlfZGV2aWNlICpzcGkgPSBkYmktPnNwaTsKPj4gKwl1bnNpZ25lZCBpbnQgYnB3ID0gODsK Pj4gKwl1MzIgc3BlZWRfaHo7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmIChtaXBpX2RiaV9j b21tYW5kX2lzX3JlYWQoZGJpLCAqY21kKSkKPj4gKwkJcmV0dXJuIG1pcGlfZGJpX3R5cGVjM19j b21tYW5kX3JlYWQoZGJpLCBjbWQsIHBhciwgbnVtKTsKPj4gKwo+PiArCU1JUElfREJJX0RFQlVH X0NPTU1BTkQoKmNtZCwgcGFyLCBudW0pOwo+PiArCj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGRiaS0+ ZGMsIDApOwo+PiArCXNwZWVkX2h6ID0gbWlwaV9kYmlfc3BpX2NtZF9tYXhfc3BlZWQoc3BpLCAx KTsKPj4gKwlyZXQgPSBtaXBpX2RiaV9zcGlfdHJhbnNmZXIoc3BpLCBzcGVlZF9oeiwgOCwgY21k LCAxKTsKPj4gKwlpZiAocmV0IHx8ICFudW0pCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlp ZiAoKmNtZCA9PSBNSVBJX0RDU19XUklURV9NRU1PUllfU1RBUlQgJiYgIWRiaS0+c3dhcF9ieXRl cykKPj4gKwkJYnB3ID0gMTY7Cj4+ICsKPj4gKwlncGlvZF9zZXRfdmFsdWUoZGJpLT5kYywgMSk7 Cj4+ICsJc3BlZWRfaHogPSBtaXBpX2RiaV9zcGlfY21kX21heF9zcGVlZChzcGksIG51bSk7Cj4+ ICsKPj4gKwlyZXR1cm4gbWlwaV9kYmlfc3BpX3RyYW5zZmVyKHNwaSwgc3BlZWRfaHosIGJwdywg cGFyLCBudW0pOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIG1pcGlfZGJpX3NwaV9pbml0IC0g SW5pdGlhbGl6ZSBNSVBJIERCSSBTUEkgaW50ZXJmYWNlCj4+ICsgKiBAc3BpOiBTUEkgZGV2aWNl Cj4+ICsgKiBAZGJpOiBNSVBJIERCSSBzdHJ1Y3R1cmUgdG8gaW5pdGlhbGl6ZQo+PiArICogQGRj OiBEL0MgZ3Bpbwo+PiArICoKPj4gKyAqIFRoaXMgZnVuY3Rpb24gc2V0cyAmbWlwaV9kYmktPmNv bW1hbmQsIGVuYWJsZXMgJm1pcGlfZGJpLT5yZWFkX2NvbW1hbmRzIGZvciB0aGUKPj4gKyAqIHVz dWFsIHJlYWQgY29tbWFuZHMuIEl0IHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIGNhbGwgdG8gbWlw aV9kYmlfZGV2X2luaXQoKSBvcgo+PiArICogYSBkcml2ZXItc3BlY2lmaWMgaW5pdC4KPj4gKyAq Cj4+ICsgKiBUeXBlIEMgT3B0aW9uIDMgaW50ZXJmYWNlIGlzIGFzc3VtZWQsIFR5cGUgQyBPcHRp b24gMSBpcyBub3QgeWV0IHN1cHBvcnRlZCwKPj4gKyAqIGJlY2F1c2UgYmFyZWJveCBoYXMgbm8g Z2VuZXJpYyB3YXkgeWV0IHRvIHJlcXVpcmUgYSA5LWJpdCBTUEkgdHJhbnNmZXIKPj4gKyAqCj4+ ICsgKiBJZiB0aGUgU1BJIG1hc3RlciBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHRoZSBuZWNlc3Nh cnkgYml0cyBwZXIgd29yZCwKPj4gKyAqIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb24gaXMg dXNlZDoKPj4gKyAqCj4+ICsgKiAtIDktYml0OiByZW9yZGVyIGJ1ZmZlciBhcyA5eCA4LWJpdCB3 b3JkcywgcGFkZGVkIHdpdGggbm8tb3AgY29tbWFuZC4KPj4gKyAqIC0gMTYtYml0OiBpZiBiaWcg ZW5kaWFuIHNlbmQgYXMgOC1iaXQsIGlmIGxpdHRsZSBlbmRpYW4gc3dhcCBieXRlcwo+PiArICoK Pj4gKyAqIFJldHVybnM6Cj4+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KPj4gKyAqLwo+PiAraW50IG1pcGlfZGJpX3NwaV9pbml0KHN0cnVjdCBz cGlfZGV2aWNlICpzcGksIHN0cnVjdCBtaXBpX2RiaSAqZGJpLAo+PiArCQkgICAgICBpbnQgZGMp Cj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZV9kICpkZXYgPSAmc3BpLT5kZXY7Cj4+ICsKPj4gKwlk YmktPnNwaSA9IHNwaTsKPj4gKwlkYmktPnJlYWRfY29tbWFuZHMgPSBtaXBpX2RiaV9kY3NfcmVh ZF9jb21tYW5kczsKPj4gKwo+PiArCWlmICghZ3Bpb19pc192YWxpZChkYykpIHsKPj4gKwkJZGV2 X2RiZyhkZXYsICJNSVBJIERCSSBUeXBlLUMgMSB1bnN1cHBvcnRlZFxuIik7Cj4+ICsJCXJldHVy biAtRU5PU1lTOwo+PiArCX0KPj4gKwo+PiArCWRiaS0+Y29tbWFuZCA9IG1pcGlfZGJpX3R5cGVj M19jb21tYW5kOwo+PiArCWRiaS0+ZGMgPSBkYzsKPj4gKwkvLyBUT0RPOiBjYW4gd2UganVzdCBm b3JjZSAxNiBiaXQ/Cj4+ICsJaWYgKG1pcGlfZGJpX21hY2hpbmVfbGl0dGxlX2VuZGlhbigpICYm IHNwaS0+Yml0c19wZXJfd29yZCAhPSAxNikKPj4gKwkJZGJpLT5zd2FwX2J5dGVzID0gdHJ1ZTsK Pj4gKwo+PiArCWRldl9kYmcoZGV2LCAiU1BJIHNwZWVkOiAldU1IelxuIiwgc3BpLT5tYXhfc3Bl ZWRfaHogLyAxMDAwMDAwKTsKPj4gKwo+PiArCWxpc3RfYWRkKCZkYmktPmxpc3QsICZtaXBpX2Ri aV9saXN0KTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0wobWlwaV9kYmlf c3BpX2luaXQpOwo+PiArCj4+ICsvKioKPj4gKyAqIG1pcGlfZGJpX3NwaV90cmFuc2ZlciAtIFNQ SSB0cmFuc2ZlciBoZWxwZXIKPj4gKyAqIEBzcGk6IFNQSSBkZXZpY2UKPj4gKyAqIEBzcGVlZF9o ejogT3ZlcnJpZGUgc3BlZWQgKG9wdGlvbmFsKQo+PiArICogQGJwdzogQml0cyBwZXIgd29yZAo+ PiArICogQGJ1ZjogQnVmZmVyIHRvIHRyYW5zZmVyCj4+ICsgKiBAbGVuOiBCdWZmZXIgbGVuZ3Ro Cj4+ICsgKgo+PiArICogVGhpcyBTUEkgdHJhbnNmZXIgaGVscGVyIGJyZWFrcyB1cCB0aGUgdHJh bnNmZXIgb2YgQGJ1ZiBpbnRvIGNodW5rcyB3aGljaAo+PiArICogdGhlIFNQSSBjb250cm9sbGVy IGRyaXZlciBjYW4gaGFuZGxlLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKiBaZXJvIG9u IHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPj4gKyAqLwo+PiAraW50 IG1pcGlfZGJpX3NwaV90cmFuc2ZlcihzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCB1MzIgc3BlZWRf aHosCj4+ICsJCQkgIHU4IGJwdywgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQo+PiArewo+ PiArCXNpemVfdCBtYXhfY2h1bmsgPSBzcGlfbWF4X3RyYW5zZmVyX3NpemUoc3BpKTsKPj4gKwlz dHJ1Y3Qgc3BpX3RyYW5zZmVyIHRyID0gewo+PiArCQkuYml0c19wZXJfd29yZCA9IGJwdywKPj4g KwkJLnNwZWVkX2h6ID0gc3BlZWRfaHosCj4+ICsJfTsKPj4gKwlzdHJ1Y3Qgc3BpX21lc3NhZ2Ug bTsKPj4gKwlzaXplX3QgY2h1bms7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXNwaV9tZXNzYWdl X2luaXRfd2l0aF90cmFuc2ZlcnMoJm0sICZ0ciwgMSk7Cj4+ICsKPj4gKwl3aGlsZSAobGVuKSB7 Cj4+ICsJCWNodW5rID0gbWluKGxlbiwgbWF4X2NodW5rKTsKPj4gKwo+PiArCQl0ci50eF9idWYg PSBidWY7Cj4+ICsJCXRyLmxlbiA9IGNodW5rOwo+PiArCQlidWYgKz0gY2h1bms7Cj4+ICsJCWxl biAtPSBjaHVuazsKPj4gKwo+PiArCQlyZXQgPSBzcGlfc3luYyhzcGksICZtKTsKPj4gKwkJaWYg KHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9 Cj4+ICtFWFBPUlRfU1lNQk9MKG1pcGlfZGJpX3NwaV90cmFuc2Zlcik7Cj4+ICsKPj4gKyNlbmRp ZiAvKiBDT05GSUdfU1BJICovCj4+ICsKPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvc3BpL3NwaS5oIGIvaW5jbHVkZS9zcGkvc3BpLmgKPj4gaW5kZXgg YzVhZDZiZDM5ZmY5Li5kMTMzZTBlMjEyNjUgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvc3BpL3Nw aS5oCj4+ICsrKyBiL2luY2x1ZGUvc3BpL3NwaS5oCj4+IEBAIC00MDksNiArNDA5LDI2IEBAIHNw aV9tZXNzYWdlX2FkZF90YWlsKHN0cnVjdCBzcGlfdHJhbnNmZXIgKnQsIHN0cnVjdCBzcGlfbWVz c2FnZSAqbSkKPj4gIAlsaXN0X2FkZF90YWlsKCZ0LT50cmFuc2Zlcl9saXN0LCAmbS0+dHJhbnNm ZXJzKTsKPj4gIH0KPj4gIAo+PiArLyoqCj4+ICsgKiBzcGlfbWVzc2FnZV9pbml0X3dpdGhfdHJh bnNmZXJzIC0gSW5pdGlhbGl6ZSBzcGlfbWVzc2FnZSBhbmQgYXBwZW5kIHRyYW5zZmVycwo+PiAr ICogQG06IHNwaV9tZXNzYWdlIHRvIGJlIGluaXRpYWxpemVkCj4+ICsgKiBAeGZlcnM6IEFuIGFy cmF5IG9mIHNwaSB0cmFuc2ZlcnMKPj4gKyAqIEBudW1feGZlcnM6IE51bWJlciBvZiBpdGVtcyBp biB0aGUgeGZlciBhcnJheQo+PiArICoKPj4gKyAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMg dGhlIGdpdmVuIHNwaV9tZXNzYWdlIGFuZCBhZGRzIGVhY2ggc3BpX3RyYW5zZmVyIGluCj4+ICsg KiB0aGUgZ2l2ZW4gYXJyYXkgdG8gdGhlIG1lc3NhZ2UuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxp bmUgdm9pZAo+PiArc3BpX21lc3NhZ2VfaW5pdF93aXRoX3RyYW5zZmVycyhzdHJ1Y3Qgc3BpX21l c3NhZ2UgKm0sCj4+ICtzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp4ZmVycywgdW5zaWduZWQgaW50IG51 bV94ZmVycykKPj4gK3sKPj4gKwl1bnNpZ25lZCBpbnQgaTsKPj4gKwo+PiArCXNwaV9tZXNzYWdl X2luaXQobSk7Cj4+ICsJZm9yIChpID0gMDsgaSA8IG51bV94ZmVyczsgKytpKQo+PiArCQlzcGlf bWVzc2FnZV9hZGRfdGFpbCgmeGZlcnNbaV0sIG0pOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgaW5s aW5lIHZvaWQKPj4gIHNwaV90cmFuc2Zlcl9kZWwoc3RydWN0IHNwaV90cmFuc2ZlciAqdCkKPj4g IHsKPj4gLS0gCj4+IDIuMzAuMgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+PiBiYXJlYm94IG1haWxpbmcgbGlzdAo+PiBiYXJlYm94QGxp c3RzLmluZnJhZGVhZC5vcmcKPj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9iYXJlYm94Cj4gCj4gQmVzdCByZWdhcmRzCj4gVGhvcnN0ZW4KPiAKPiAtLQo+IFRo b3JzdGVuIFNjaGVyZXIgfCBFY2tlbG1hbm4gQUcgfCB3d3cuZWNrZWxtYW5uLmRlIHwKPiAKCgot LSAKUGVuZ3V0cm9uaXggZS5LLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKU3RldWVyd2FsZGVyIFN0ci4gMjEgICAgICAgICAgICAgICAg ICAgICAgIHwgaHR0cDovL3d3dy5wZW5ndXRyb25peC5kZS8gIHwKMzExMzcgSGlsZGVzaGVpbSwg R2VybWFueSAgICAgICAgICAgICAgICAgIHwgUGhvbmU6ICs0OS01MTIxLTIwNjkxNy0wICAgIHwK QW10c2dlcmljaHQgSGlsZGVzaGVpbSwgSFJBIDI2ODYgICAgICAgICAgIHwgRmF4OiAgICs0OS01 MTIxLTIwNjkxNy01NTU1IHwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK