From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans Verkuil Subject: Re: [PATCH v2 5/7] drm/i2c: tda9950: add CEC driver Date: Wed, 6 Dec 2017 15:11:43 +0100 Message-ID: <5d448d0b-8e03-4c3c-fddf-fea739cd88d6@xs4all.nl> References: <20171206123452.GA13127@n2100.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lb1-smtp-cloud7.xs4all.net (lb1-smtp-cloud7.xs4all.net [194.109.24.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E49D89956 for ; Wed, 6 Dec 2017 14:11:48 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King , David Airlie Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgUnVzc2VsbCwKClNvbWUgc21hbGwgY29tbWVudHMgYmVsb3c6CgpPbiAxMi8wNi8xNyAxMzoz NSwgUnVzc2VsbCBLaW5nIHdyb3RlOgo+IEFkZCBhIENFQyBkcml2ZXIgZm9yIHRoZSBUREE5OTUw LCB3aGljaCBpcyBhIHN0YW5kLWFsb25lIEkyQyBDRUMgZGV2aWNlLAo+IGJ1dCBpcyBhbHNvIGlu dGVncmF0ZWQgaW50byBIRE1JIHRyYW5zY2VpdmVycyBzdWNoIGFzIHRoZSBUREE5OTg5IGFuZAo+ IFREQTE5OTg5Lgo+IAo+IFRoZSBUREE5OTUwIGNvbnRhaW5zIGEgY29tbWFuZCBwcm9jZXNzb3Ig d2hpY2ggaGFuZGxlcyByZXRyYW5zbWlzc2lvbnMKPiBhbmQgdGhlIGxvdyBsZXZlbCBidXMgcHJv dG9jb2wuICBUaGUgZHJpdmVyIGp1c3QgaGFzIHRvIHJlYWQgYW5kIHdyaXRlCj4gdGhlIG1lc3Nh Z2VzLCBhbmQgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogUnVz c2VsbCBLaW5nIDxybWsra2VybmVsQGFybWxpbnV4Lm9yZy51az4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2kyYy9LY29uZmlnICAgICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p MmMvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTJjL3RkYTk5 NTAuYyAgICAgICAgIHwgNTA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg aW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3RkYTk5NTAuaCB8ICAxNiArKwo+ICA0IGZpbGVz IGNoYW5nZWQsIDUyOSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTJjL3RkYTk5NTAuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51 eC9wbGF0Zm9ybV9kYXRhL3RkYTk5NTAuaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTJjL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWcKPiBpbmRleCBhNmM5 MmJlYjQxMGEuLjNhMjMyZjVmZjBhMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTJj L0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWcKPiBAQCAtMjYsNCAr MjYsOSBAQCBjb25maWcgRFJNX0kyQ19OWFBfVERBOTk4WAo+ICAJaGVscAo+ICAJICBTdXBwb3J0 IGZvciBOWFAgU2VtaWNvbmR1Y3RvcnMgVERBOTk4WCBIRE1JIGVuY29kZXJzLgo+ICAKPiArY29u ZmlnIERSTV9JMkNfTlhQX1REQTk5NTAKPiArCXRyaXN0YXRlICJOWFAgU2VtaWNvbmR1Y3RvcnMg VERBOTk1MC9UREE5OThYIEhETUkgQ0VDIgo+ICsJc2VsZWN0IENFQ19OT1RJRklFUgo+ICsJc2Vs ZWN0IENFQ19DT1JFCj4gKwo+ICBlbmRtZW51Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pMmMvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL01ha2VmaWxlCj4gaW5kZXggYjIw MTAwYzE4ZmZiLi5hOTYyZjZmMDg1NjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ky Yy9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvTWFrZWZpbGUKPiBAQCAtNywz ICs3LDQgQEAgb2JqLSQoQ09ORklHX0RSTV9JMkNfU0lMMTY0KSArPSBzaWwxNjQubwo+ICAKPiAg dGRhOTk4eC15IDo9IHRkYTk5OHhfZHJ2Lm8KPiAgb2JqLSQoQ09ORklHX0RSTV9JMkNfTlhQX1RE QTk5OFgpICs9IHRkYTk5OHgubwo+ICtvYmotJChDT05GSUdfRFJNX0kyQ19OWFBfVERBOTk1MCkg Kz0gdGRhOTk1MC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk1MC5j IGIvZHJpdmVycy9ncHUvZHJtL2kyYy90ZGE5OTUwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNmY3YTM3ZGRkYTA1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk1MC5jCj4gQEAgLTAsMCArMSw1MDcgQEAKPiArLyoK PiArICogIFREQTk5NTAgQ29uc3VtZXIgRWxlY3Ryb25pY3MgQ29udHJvbCBkcml2ZXIKPiArICoK PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoZSBOWFAgVERBOTk1MCBpbXBs ZW1lbnRzIHRoZSBIRE1JIENvbnN1bWVyIEVsZWN0cm9uaWNzIENvbnRyb2wKPiArICogaW50ZXJm YWNlLiAgVGhlIGhvc3QgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gYSBtYWlsYm94OiB0aGUgZGF0 YQo+ICsgKiByZWdpc3RlcnMgc3RhcnRpbmcgYXQgUkVHX0NEUjAgYXJlIHdyaXR0ZW4gdG8gc2Vu ZCBhIGNvbW1hbmQgdG8gdGhlCj4gKyAqIGludGVybmFsIENQVSwgYW5kIHJlcGxpZXMgYXJlIHJl YWQgZnJvbSB0aGVzZSByZWdpc3RlcnMuCj4gKyAqCj4gKyAqIEFzIHRoZSBkYXRhIHJlZ2lzdGVy cyByZXByZXNlbnQgYSBtYWlsYm94LCB0aGV5IG11c3QgYmUgYWNjZXNzZWQKPiArICogYXMgYSBz aW5nbGUgSTJDIHRyYW5zYWN0aW9uLiAgU2VlIHRoZSBUREE5OTUwIGRhdGEgc2hlZXQgZm9yIGRl dGFpbHMuCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvdGRhOTk1MC5o Pgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+ Cj4gKyNpbmNsdWRlIDxtZWRpYS9jZWMuaD4KPiArI2luY2x1ZGUgPG1lZGlhL2NlYy1ub3RpZmll ci5oPgo+ICsKPiArZW51bSB7Cj4gKwlSRUdfQ1NSID0gMHgwMCwKPiArCUNTUl9CVVNZID0gQklU KDcpLAo+ICsJQ1NSX0lOVCAgPSBCSVQoNiksCj4gKwlDU1JfRVJSICA9IEJJVCg1KSwKPiArCj4g KwlSRUdfQ0VSID0gMHgwMSwKPiArCj4gKwlSRUdfQ1ZSID0gMHgwMiwKPiArCj4gKwlSRUdfQ0NS ID0gMHgwMywKPiArCUNDUl9SRVNFVCA9IEJJVCg3KSwKPiArCUNDUl9PTiAgICA9IEJJVCg2KSwK PiArCj4gKwlSRUdfQUNLSCA9IDB4MDQsCj4gKwlSRUdfQUNLTCA9IDB4MDUsCj4gKwo+ICsJUkVH X0NDT05SID0gMHgwNiwKPiArCUNDT05SX0VOQUJMRV9FUlJPUiA9IEJJVCg0KSwKPiArCUNDT05S X1JFVFJZX01BU0sgPSA3LAo+ICsKPiArCVJFR19DRFIwID0gMHgwNywKPiArCj4gKwlDRFIxX1JF USA9IDB4MDAsCj4gKwlDRFIxX0NORiA9IDB4MDEsCj4gKwlDRFIxX0lORCA9IDB4ODEsCj4gKwlD RFIxX0VSUiA9IDB4ODIsCj4gKwlDRFIxX0lFUiA9IDB4ODMsCj4gKwo+ICsJQ0RSMl9DTkZfU1VD Q0VTUyAgICA9IDB4MDAsCj4gKwlDRFIyX0NORl9PRkZfU1RBVEUgID0gMHg4MCwKPiArCUNEUjJf Q05GX0JBRF9SRVEgICAgPSAweDgxLAo+ICsJQ0RSMl9DTkZfQ0VDX0FDQ0VTUyA9IDB4ODIsCj4g KwlDRFIyX0NORl9BUkJfRVJST1IgID0gMHg4MywKPiArCUNEUjJfQ05GX0JBRF9USU1JTkcgPSAw eDg0LAo+ICsJQ0RSMl9DTkZfTkFDS19BRERSICA9IDB4ODUsCj4gKwlDRFIyX0NORl9OQUNLX0RB VEEgID0gMHg4NiwKPiArfTsKPiArCj4gK3N0cnVjdCB0ZGE5OTUwX3ByaXYgewo+ICsJc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudDsKPiArCXN0cnVjdCBkZXZpY2UgKmhkbWk7Cj4gKwlzdHJ1Y3Qg Y2VjX2FkYXB0ZXIgKmFkYXA7Cj4gKwlzdHJ1Y3QgdGRhOTk1MF9nbHVlICpnbHVlOwo+ICsJdTE2 IGFkZHJlc3NlczsKPiArCXN0cnVjdCBjZWNfbXNnIHJ4X21zZzsKPiArCXN0cnVjdCBjZWNfbm90 aWZpZXIgKm5vdGlmeTsKPiArCWJvb2wgb3BlbjsKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdGRh OTk1MF93cml0ZV9yYW5nZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBhZGRyLCB1OCAq cCwgaW50IGNudCkKPiArewo+ICsJc3RydWN0IGkyY19tc2cgbXNnOwo+ICsJdTggYnVmW2NudCAr IDFdOwo+ICsJaW50IHJldDsKPiArCj4gKwlidWZbMF0gPSBhZGRyOwo+ICsJbWVtY3B5KGJ1ZiAr IDEsIHAsIGNudCk7Cj4gKwo+ICsJbXNnLmFkZHIgPSBjbGllbnQtPmFkZHI7Cj4gKwltc2cuZmxh Z3MgPSAwOwo+ICsJbXNnLmxlbiA9IGNudCArIDE7Cj4gKwltc2cuYnVmID0gYnVmOwo+ICsKPiAr CWRldl9kYmcoJmNsaWVudC0+ZGV2LCAid3IgMHglMDJ4OiAlKnBoXG4iLCBhZGRyLCBjbnQsIHAp Owo+ICsKPiArCXJldCA9IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOwo+ ICsJaWYgKHJldCA8IDApCj4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJFcnJvciAlZCB3cml0 aW5nIHRvIGNlYzoweCV4XG4iLCByZXQsIGFkZHIpOwo+ICsJcmV0dXJuIHJldCA8IDAgPyByZXQg OiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0ZGE5OTUwX3dyaXRlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQsIHU4IGFkZHIsIHU4IHZhbCkKPiArewo+ICsJdGRhOTk1MF93cml0ZV9yYW5n ZShjbGllbnQsIGFkZHIsICZ2YWwsIDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRkYTk5NTBf cmVhZF9yYW5nZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBhZGRyLCB1OCAqcCwgaW50 IGNudCkKPiArewo+ICsJc3RydWN0IGkyY19tc2cgbXNnWzJdOwo+ICsJaW50IHJldDsKPiArCj4g Kwltc2dbMF0uYWRkciA9IGNsaWVudC0+YWRkcjsKPiArCW1zZ1swXS5mbGFncyA9IDA7Cj4gKwlt c2dbMF0ubGVuID0gMTsKPiArCW1zZ1swXS5idWYgPSAmYWRkcjsKPiArCW1zZ1sxXS5hZGRyID0g Y2xpZW50LT5hZGRyOwo+ICsJbXNnWzFdLmZsYWdzID0gSTJDX01fUkQ7Cj4gKwltc2dbMV0ubGVu ID0gY250Owo+ICsJbXNnWzFdLmJ1ZiA9IHA7Cj4gKwo+ICsJcmV0ID0gaTJjX3RyYW5zZmVyKGNs aWVudC0+YWRhcHRlciwgbXNnLCAyKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWRldl9lcnIoJmNs aWVudC0+ZGV2LCAiRXJyb3IgJWQgcmVhZGluZyBmcm9tIGNlYzoweCV4XG4iLCByZXQsIGFkZHIp Owo+ICsKPiArCWRldl9kYmcoJmNsaWVudC0+ZGV2LCAicmQgMHglMDJ4OiAlKnBoXG4iLCBhZGRy LCBjbnQsIHApOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB1OCB0ZGE5 OTUwX3JlYWQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggYWRkcikKPiArewo+ICsJaW50 IHJldDsKPiArCXU4IHZhbDsKPiArCj4gKwlyZXQgPSB0ZGE5OTUwX3JlYWRfcmFuZ2UoY2xpZW50 LCBhZGRyLCAmdmFsLCAxKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXZhbCA9IDA7Cj4gKwo+ICsJ cmV0dXJuIHZhbDsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVybl90IHRkYTk5NTBfaXJxKGlu dCBpcnEsIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCB0ZGE5OTUwX3ByaXYgKnByaXYgPSBk YXRhOwo+ICsJdW5zaWduZWQgaW50IHR4X3N0YXR1czsKPiArCXU4IGNzciwgY2NvbnIsIGJ1Zlsx OV07Cj4gKwl1OCBhcmJfbG9zdF9jbnQsIG5hY2tfY250LCBlcnJfY250Owo+ICsKPiArCWlmICgh cHJpdi0+b3BlbikKPiArCQlyZXR1cm4gSVJRX05PTkU7Cj4gKwo+ICsJY3NyID0gdGRhOTk1MF9y ZWFkKHByaXYtPmNsaWVudCwgUkVHX0NTUik7Cj4gKwlpZiAoIShjc3IgJiBDU1JfSU5UKSkKPiAr CQlyZXR1cm4gSVJRX05PTkU7Cj4gKwo+ICsJY2NvbnIgPSB0ZGE5OTUwX3JlYWQocHJpdi0+Y2xp ZW50LCBSRUdfQ0NPTlIpICYgQ0NPTlJfUkVUUllfTUFTSzsKPiArCj4gKwl0ZGE5OTUwX3JlYWRf cmFuZ2UocHJpdi0+Y2xpZW50LCBSRUdfQ0RSMCwgYnVmLCBzaXplb2YoYnVmKSk7Cj4gKwo+ICsJ LyoKPiArCSAqIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjogdGhlIGRhdGEgc2hlZXQgc2F5cyB0 aGF0IHRoZXJlIHdpbGwKPiArCSAqIGFsd2F5cyBiZSBhIHZhbGlkIG1lc3NhZ2UgaWYgdGhlIGlu dGVycnVwdCBsaW5lIGlzIGFzc2VydGVkLgo+ICsJICovCj4gKwlpZiAoYnVmWzBdID09IDApIHsK CkNoZWNraW5nIGZvciA8PSAyIGlzIHNhZmVyLiBTZWUgYWxzbyBteSBjb21tZW50IGJlbG93LgoK PiArCQlkZXZfd2FybigmcHJpdi0+Y2xpZW50LT5kZXYsICJpbnRlcnJ1cHQgcGVuZGluZywgYnV0 IG5vIG1lc3NhZ2U/XG4iKTsKPiArCQlyZXR1cm4gSVJRX05PTkU7Cj4gKwl9Cj4gKwo+ICsJc3dp dGNoIChidWZbMV0pIHsKPiArCWNhc2UgQ0RSMV9DTkY6IC8qIHRyYW5zbWl0IHJlc3VsdCAqLwo+ ICsJCWFyYl9sb3N0X2NudCA9IG5hY2tfY250ID0gZXJyX2NudCA9IDA7Cj4gKwkJc3dpdGNoIChi dWZbMl0pIHsKPiArCQljYXNlIENEUjJfQ05GX1NVQ0NFU1M6Cj4gKwkJCXR4X3N0YXR1cyA9IENF Q19UWF9TVEFUVVNfT0s7Cj4gKwkJCWJyZWFrOwo+ICsKPiArCQljYXNlIENEUjJfQ05GX0FSQl9F UlJPUjoKPiArCQkJdHhfc3RhdHVzID0gQ0VDX1RYX1NUQVRVU19BUkJfTE9TVDsKPiArCQkJYXJi X2xvc3RfY250ID0gY2NvbnI7Cj4gKwkJCWJyZWFrOwo+ICsKPiArCQljYXNlIENEUjJfQ05GX05B Q0tfQUREUjoKPiArCQkJdHhfc3RhdHVzID0gQ0VDX1RYX1NUQVRVU19OQUNLOwo+ICsJCQluYWNr X2NudCA9IGNjb25yOwo+ICsJCQlicmVhazsKPiArCj4gKwkJZGVmYXVsdDogLyogc29tZSBvdGhl ciBlcnJvciwgcmVmZXIgdG8gVERBOTk1MCBkb2NzICovCj4gKwkJCWRldl9lcnIoJnByaXYtPmNs aWVudC0+ZGV2LCAiQ05GIHJlcGx5IGVycm9yIDB4JTAyeFxuIiwKPiArCQkJCWJ1ZlsyXSk7Cj4g KwkJCXR4X3N0YXR1cyA9IENFQ19UWF9TVEFUVVNfRVJST1I7Cj4gKwkJCWVycl9jbnQgPSBjY29u cjsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCS8qIFREQTk5NTAgZXhlY3V0ZXMgYWxsIHJldHJp ZXMgZm9yIHVzICovCj4gKwkJdHhfc3RhdHVzIHw9IENFQ19UWF9TVEFUVVNfTUFYX1JFVFJJRVM7 Cj4gKwkJY2VjX3RyYW5zbWl0X2RvbmUocHJpdi0+YWRhcCwgdHhfc3RhdHVzLCBhcmJfbG9zdF9j bnQsCj4gKwkJCQkgIG5hY2tfY250LCAwLCBlcnJfY250KTsKPiArCQlicmVhazsKPiArCj4gKwlj YXNlIENEUjFfSU5EOgo+ICsJCXByaXYtPnJ4X21zZy5sZW4gPSBidWZbMF0gLSAyOwoKRG9lcyB0 aGUgZGF0YXNoZWV0IGdpdmUgYW55IGd1YXJhbnRlZXMgdGhhdCBidWZbMF0gaXMgYWx3YXlzIGJl dHdlZW4gMyBhbmQgMTg/CgpOb3RlOiBpdCBpcyBwb3NzaWJsZSBmb3IgZGV2aWNlcyB0byBzZW5k IG1vcmUgdGhhbiAxNiBieXRlcyBpbiBhIENFQyBtZXNzYWdlLgpOb3QgYWxsb3dlZCwgbWluZCB5 b3UsIGJ1dCBpdCBjYW4gYmUgZG9uZSBhbmQgSSBzdXNwZWN0IHNvbWUgZG8gaW4gY2VydGFpbgpz aXR1YXRpb25zLiBTbyBpZiB0aGUgaGFyZHdhcmUganVzdCBrZWVwcyBjb3VudGluZyB5b3UgY2Fu IGdldCBhIHJ4X21zZy5sZW4gPiAxNgphbmQgdGhlbiB0aGUgbWVtY3B5IGJlbG93IHdvdWxkIG92 ZXJ3cml0ZSBtZW1vcnkuIFlvdSB3YW50IHRvIGNsYW1wIHRoZSBsZW5ndGgKdG8gbWF4IDE2LgoK PiArCQltZW1jcHkocHJpdi0+cnhfbXNnLm1zZywgYnVmICsgMiwgcHJpdi0+cnhfbXNnLmxlbik7 Cj4gKwkJY2VjX3JlY2VpdmVkX21zZyhwcml2LT5hZGFwLCAmcHJpdi0+cnhfbXNnKTsKPiArCQli cmVhazsKPiArCj4gKwlkZWZhdWx0OiAvKiB1bmtub3duICovCj4gKwkJZGV2X2VycigmcHJpdi0+ Y2xpZW50LT5kZXYsICJ1bmtub3duIHNlcnZpY2UgaWQgMHglMDJ4XG4iLAo+ICsJCQlidWZbMV0p Owo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsK PiArc3RhdGljIGludCB0ZGE5OTUwX2NlY190cmFuc21pdChzdHJ1Y3QgY2VjX2FkYXB0ZXIgKmFk YXAsIHU4IGF0dGVtcHRzLAo+ICsJCQkJdTMyIHNpZ25hbF9mcmVlX3RpbWUsIHN0cnVjdCBjZWNf bXNnICptc2cpCj4gK3sKPiArCXN0cnVjdCB0ZGE5OTUwX3ByaXYgKnByaXYgPSBhZGFwLT5wcml2 Owo+ICsJdTggYnVmWzE2ICsgMl07CgpVc2UgQ0VDX01BWF9NU0dfU0laRSBpbnN0ZWFkIG9mIDE2 LgoKPiArCj4gKwlidWZbMF0gPSAyICsgbXNnLT5sZW47Cj4gKwlidWZbMV0gPSBDRFIxX1JFUTsK PiArCW1lbWNweShidWYgKyAyLCBtc2ctPm1zZywgbXNnLT5sZW4pOwo+ICsKPiArCWlmIChhdHRl bXB0cyA+IDUpCj4gKwkJYXR0ZW1wdHMgPSA1Owo+ICsKPiArCXRkYTk5NTBfd3JpdGUocHJpdi0+ Y2xpZW50LCBSRUdfQ0NPTlIsIGF0dGVtcHRzKTsKPiArCj4gKwlyZXR1cm4gdGRhOTk1MF93cml0 ZV9yYW5nZShwcml2LT5jbGllbnQsIFJFR19DRFIwLCBidWYsIDIgKyBtc2ctPmxlbik7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdGRhOTk1MF9jZWNfYWRhcF9sb2dfYWRkcihzdHJ1Y3QgY2VjX2Fk YXB0ZXIgKmFkYXAsIHU4IGFkZHIpCj4gK3sKPiArCXN0cnVjdCB0ZGE5OTUwX3ByaXYgKnByaXYg PSBhZGFwLT5wcml2Owo+ICsJdTE2IGFkZHJlc3NlczsKPiArCXU4IGJ1ZlsyXTsKPiArCj4gKwlp ZiAoYWRkciA9PSBDRUNfTE9HX0FERFJfSU5WQUxJRCkKPiArCQlhZGRyZXNzZXMgPSBwcml2LT5h ZGRyZXNzZXMgPSAwOwo+ICsJZWxzZQo+ICsJCWFkZHJlc3NlcyA9IHByaXYtPmFkZHJlc3NlcyB8 PSBCSVQoYWRkcik7Cj4gKwo+ICsJLyogVERBOTk1MCBkb2Vzbid0IHdhbnQgYWRkcmVzcyAxNSBz ZXQgKi8KPiArCWFkZHJlc3NlcyAmPSAweDdmZmY7Cj4gKwlidWZbMF0gPSBhZGRyZXNzZXMgPj4g ODsKPiArCWJ1ZlsxXSA9IGFkZHJlc3NlczsKPiArCj4gKwlyZXR1cm4gdGRhOTk1MF93cml0ZV9y YW5nZShwcml2LT5jbGllbnQsIFJFR19BQ0tILCBidWYsIDIpOwo+ICt9Cj4gKwo+ICsvKgo+ICsg KiBXaGVuIG9wZXJhdGluZyBhcyBwYXJ0IG9mIHRoZSBUREE5OTh4LCB3ZSBuZWVkIGFkZGl0aW9u YWwgaGFuZGxpbmcKPiArICogdG8gaW5pdGlhbGlzZSBhbmQgc2h1dCBkb3duIHRoZSBUREE5OTUw IHBhcnQgb2YgdGhlIGRldmljZS4gIFRoZXNlCj4gKyAqIHR3byBob29rcyBhcmUgcHJvdmlkZWQg dG8gYWxsb3cgdGhlIFREQTk5OHggY29kZSB0byBwZXJmb3JtIHRob3NlCj4gKyAqIGFjdGl2aXRp ZXMuCj4gKyAqLwo+ICtzdGF0aWMgaW50IHRkYTk5NTBfZ2x1ZV9vcGVuKHN0cnVjdCB0ZGE5OTUw X3ByaXYgKnByaXYpCj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWlmIChwcml2LT5nbHVl ICYmIHByaXYtPmdsdWUtPm9wZW4pCj4gKwkJcmV0ID0gcHJpdi0+Z2x1ZS0+b3Blbihwcml2LT5n bHVlLT5kYXRhKTsKPiArCj4gKwlwcml2LT5vcGVuID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0ZGE5OTUwX2dsdWVfcmVsZWFzZShzdHJ1Y3QgdGRh OTk1MF9wcml2ICpwcml2KQo+ICt7Cj4gKwlwcml2LT5vcGVuID0gZmFsc2U7Cj4gKwo+ICsJaWYg KHByaXYtPmdsdWUgJiYgcHJpdi0+Z2x1ZS0+cmVsZWFzZSkKPiArCQlwcml2LT5nbHVlLT5yZWxl YXNlKHByaXYtPmdsdWUtPmRhdGEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRkYTk5NTBfb3Bl bihzdHJ1Y3QgdGRhOTk1MF9wcml2ICpwcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50ID0gcHJpdi0+Y2xpZW50Owo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSB0ZGE5OTUw X2dsdWVfb3Blbihwcml2KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkv KiBSZXNldCB0aGUgVERBOTk1MCwgYW5kIHdhaXQgMjUwbXMgZm9yIGl0IHRvIHJlY292ZXIgKi8K PiArCXRkYTk5NTBfd3JpdGUoY2xpZW50LCBSRUdfQ0NSLCBDQ1JfUkVTRVQpOwo+ICsJbXNsZWVw KDI1MCk7Cj4gKwo+ICsJdGRhOTk1MF9jZWNfYWRhcF9sb2dfYWRkcihwcml2LT5hZGFwLCBDRUNf TE9HX0FERFJfSU5WQUxJRCk7Cj4gKwo+ICsJLyogU3RhcnQgdGhlIGNvbW1hbmQgcHJvY2Vzc29y ICovCj4gKwl0ZGE5OTUwX3dyaXRlKGNsaWVudCwgUkVHX0NDUiwgQ0NSX09OKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdGRhOTk1MF9yZWxlYXNlKHN0cnVjdCB0 ZGE5OTUwX3ByaXYgKnByaXYpCj4gK3sKPiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBw cml2LT5jbGllbnQ7Cj4gKwlpbnQgdGltZW91dCA9IDUwOwo+ICsJdTggY3NyOwo+ICsKPiArCS8q IFN0b3AgdGhlIGNvbW1hbmQgcHJvY2Vzc29yICovCj4gKwl0ZGE5OTUwX3dyaXRlKGNsaWVudCwg UkVHX0NDUiwgMCk7Cj4gKwo+ICsJLyogV2FpdCB1cCB0byAuNXMgZm9yIGl0IHRvIHNpZ25hbCBu b24tYnVzeSAqLwo+ICsJZG8gewo+ICsJCWNzciA9IHRkYTk5NTBfcmVhZChjbGllbnQsIFJFR19D U1IpOwo+ICsJCWlmICghKGNzciAmIENTUl9CVVNZKSB8fCAtLXRpbWVvdXQpCj4gKwkJCWJyZWFr Owo+ICsJCW1zbGVlcCgxMCk7Cj4gKwl9IHdoaWxlICgxKTsKPiArCj4gKwkvKiBXYXJuIHRoZSB1 c2VyIHRoYXQgdGhlaXIgSVJRIG1heSBkaWUgaWYgaXQncyBzaGFyZWQuICovCj4gKwlpZiAoY3Ny ICYgQ1NSX0JVU1kpCj4gKwkJZGV2X3dhcm4oJmNsaWVudC0+ZGV2LCAiY29tbWFuZCBwcm9jZXNz b3IgZmFpbGVkIHRvIHN0b3AsIGlycSVkIG1heSBkaWUgKGNzcj0weCUwMngpXG4iLAo+ICsJCQkg Y2xpZW50LT5pcnEsIGNzcik7Cj4gKwo+ICsJdGRhOTk1MF9nbHVlX3JlbGVhc2UocHJpdik7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgdGRhOTk1MF9jZWNfYWRhcF9lbmFibGUoc3RydWN0IGNlY19h ZGFwdGVyICphZGFwLCBib29sIGVuYWJsZSkKPiArewo+ICsJc3RydWN0IHRkYTk5NTBfcHJpdiAq cHJpdiA9IGFkYXAtPnByaXY7Cj4gKwo+ICsJaWYgKCFlbmFibGUpIHsKPiArCQl0ZGE5OTUwX3Jl bGVhc2UocHJpdik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9IGVsc2Ugewo+ICsJCXJldHVybiB0ZGE5 OTUwX29wZW4ocHJpdik7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2Vj X2FkYXBfb3BzIHRkYTk5NTBfY2VjX29wcyA9IHsKPiArCS5hZGFwX2VuYWJsZSA9IHRkYTk5NTBf Y2VjX2FkYXBfZW5hYmxlLAo+ICsJLmFkYXBfbG9nX2FkZHIgPSB0ZGE5OTUwX2NlY19hZGFwX2xv Z19hZGRyLAo+ICsJLmFkYXBfdHJhbnNtaXQgPSB0ZGE5OTUwX2NlY190cmFuc21pdCwKPiArfTsK PiArCj4gKy8qCj4gKyAqIFdoZW4gb3BlcmF0aW5nIGFzIHBhcnQgb2YgdGhlIFREQTk5OHgsIHdl IG5lZWQgdG8gY2xhaW0gYWRkaXRpb25hbAo+ICsgKiByZXNvdXJjZXMuICBUaGVzZSB0d28gaG9v a3MgcGVybWl0IHRoZSBtYW5hZ2VtZW50IG9mIHRob3NlIHJlc291cmNlcy4KPiArICovCj4gK3N0 YXRpYyB2b2lkIHRkYTk5NTBfZGV2bV9nbHVlX2V4aXQodm9pZCAqZGF0YSkKPiArewo+ICsJc3Ry dWN0IHRkYTk5NTBfZ2x1ZSAqZ2x1ZSA9IGRhdGE7Cj4gKwo+ICsJaWYgKGdsdWUgJiYgZ2x1ZS0+ ZXhpdCkKPiArCQlnbHVlLT5leGl0KGdsdWUtPmRhdGEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHRkYTk5NTBfZGV2bV9nbHVlX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdGRhOTk1 MF9nbHVlICpnbHVlKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChnbHVlICYmIGdsdWUt PmluaXQpIHsKPiArCQlyZXQgPSBnbHVlLT5pbml0KGdsdWUtPmRhdGEpOwo+ICsJCWlmIChyZXQp Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uKGRl diwgdGRhOTk1MF9kZXZtX2dsdWVfZXhpdCwgZ2x1ZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXRkYTk5 NTBfZGV2bV9nbHVlX2V4aXQoZ2x1ZSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgdGRhOTk1MF9jZWNfZGVsKHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCB0 ZGE5OTUwX3ByaXYgKnByaXYgPSBkYXRhOwo+ICsKPiArCWNlY19kZWxldGVfYWRhcHRlcihwcml2 LT5hZGFwKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZGE5OTUwX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4g K3sKPiArCXN0cnVjdCB0ZGE5OTUwX2dsdWUgKmdsdWUgPSBjbGllbnQtPmRldi5wbGF0Zm9ybV9k YXRhOwo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2Owo+ICsJc3RydWN0IHRk YTk5NTBfcHJpdiAqcHJpdjsKPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gKwlpbnQgcmV0 Owo+ICsJdTggY3ZyOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBtdXN0IGhhdmUgSTJDIGZ1bmN0aW9u YWxpdHk6IG91ciBtdWx0aS1ieXRlIGFjY2Vzc2VzCj4gKwkgKiBtdXN0IGJlIHBlcmZvcm1lZCBh cyBhIHNpbmdsZSBjb250aWd1b3VzIHRyYW5zYWN0aW9uLgo+ICsJICovCj4gKwlpZiAoIWkyY19j aGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfSTJDKSkgewo+ICsJ CWRldl9lcnIoJmNsaWVudC0+ZGV2LAo+ICsJCQkiYWRhcHRlciBkb2VzIG5vdCBzdXBwb3J0IEky QyBmdW5jdGlvbmFsaXR5XG4iKTsKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsJfQo+ICsKPiArCS8q IFdlIG11c3QgaGF2ZSBhbiBpbnRlcnJ1cHQgdG8gYmUgZnVuY3Rpb25hbC4gKi8KPiArCWlmIChj bGllbnQtPmlycSA8PSAwKSB7Cj4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJkcml2ZXIgcmVx dWlyZXMgYW4gaW50ZXJydXB0XG4iKTsKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsJfQo+ICsKPiAr CXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPiAr CWlmICghcHJpdikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlwcml2LT5jbGllbnQgPSBj bGllbnQ7Cj4gKwlwcml2LT5nbHVlID0gZ2x1ZTsKPiArCj4gKwlpMmNfc2V0X2NsaWVudGRhdGEo Y2xpZW50LCBwcml2KTsKPiArCj4gKwkvKgo+ICsJICogSWYgd2UncmUgcGFydCBvZiBhIFREQTk5 OHgsIHdlIHdhbnQgdGhlIGNsYXNzIGRldmljZXMgdG8gYmUKPiArCSAqIGFzc29jaWF0ZWQgd2l0 aCB0aGUgSERNSSBUeCBzbyB3ZSBoYXZlIGEgdGlnaHQgcmVsYXRpb25zaGlwCj4gKwkgKiBiZXR3 ZWVuIHRoZSBIRE1JIGludGVyZmFjZSBhbmQgdGhlIENFQyBpbnRlcmZhY2UuCj4gKwkgKi8KPiAr CXByaXYtPmhkbWkgPSBkZXY7Cj4gKwlpZiAoZ2x1ZSAmJiBnbHVlLT5wYXJlbnQpCj4gKwkJcHJp di0+aGRtaSA9IGdsdWUtPnBhcmVudDsKPiArCj4gKwlwcml2LT5hZGFwID0gY2VjX2FsbG9jYXRl X2FkYXB0ZXIoJnRkYTk5NTBfY2VjX29wcywgcHJpdiwgInRkYTk5NTAiLAo+ICsJCQkJCSAgQ0VD X0NBUF9MT0dfQUREUlMgfAo+ICsJCQkJCSAgQ0VDX0NBUF9UUkFOU01JVCB8IENFQ19DQVBfUkMs CgpVc2UgQ0VDX0NBUF9ERUZBVUxUUyBpbnN0ZWFkIG9mIHRoZXNlIHRocmVlIGV4cGxpY2l0IGNh cGFiaWxpdGllcy4KCj4gKwkJCQkJICBDRUNfTUFYX0xPR19BRERSUyk7Cj4gKwlpZiAoSVNfRVJS KHByaXYtPmFkYXApKQo+ICsJCXJldHVybiBQVFJfRVJSKHByaXYtPmFkYXApOwo+ICsKPiArCXJl dCA9IGRldm1fYWRkX2FjdGlvbihkZXYsIHRkYTk5NTBfY2VjX2RlbCwgcHJpdik7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJY2VjX2RlbGV0ZV9hZGFwdGVyKHByaXYtPmFkYXApOwo+ICsJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gdGRhOTk1MF9kZXZtX2dsdWVfaW5pdChkZXYsIGdsdWUp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHRkYTk5NTBfZ2x1 ZV9vcGVuKHByaXYpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWN2ciA9 IHRkYTk5NTBfcmVhZChjbGllbnQsIFJFR19DVlIpOwo+ICsKPiArCWRldl9pbmZvKCZjbGllbnQt PmRldiwKPiArCQkgIlREQTk5NTAgQ0VDIGludGVyZmFjZSwgaGFyZHdhcmUgdmVyc2lvbiAldS4l dVxuIiwKPiArCQkgY3ZyID4+IDQsIGN2ciAmIDE1KTsKPiArCj4gKwl0ZGE5OTUwX2dsdWVfcmVs ZWFzZShwcml2KTsKPiArCj4gKwlpcnFmbGFncyA9IElSUUZfVFJJR0dFUl9GQUxMSU5HOwo+ICsJ aWYgKGdsdWUpCj4gKwkJaXJxZmxhZ3MgPSBnbHVlLT5pcnFfZmxhZ3M7Cj4gKwo+ICsJcmV0ID0g ZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIGNsaWVudC0+aXJxLCBOVUxMLCB0ZGE5OTUw X2lycSwKPiArCQkJCQlpcnFmbGFncyB8IElSUUZfU0hBUkVEIHwgSVJRRl9PTkVTSE9ULAo+ICsJ CQkJCWRldl9uYW1lKCZjbGllbnQtPmRldiksIHByaXYpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJ cmV0dXJuIHJldDsKPiArCj4gKwlwcml2LT5ub3RpZnkgPSBjZWNfbm90aWZpZXJfZ2V0KHByaXYt PmhkbWkpOwo+ICsJaWYgKCFwcml2LT5ub3RpZnkpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ ICsJcmV0ID0gY2VjX3JlZ2lzdGVyX2FkYXB0ZXIocHJpdi0+YWRhcCwgcHJpdi0+aGRtaSk7Cj4g KwlpZiAocmV0IDwgMCkgewo+ICsJCWNlY19ub3RpZmllcl9wdXQocHJpdi0+bm90aWZ5KTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBDRUMgZG9jdW1lbnRhdGlvbiBz YXlzIHdlIG11c3Qgbm90IGNhbGwgY2VjX2RlbGV0ZV9hZGFwdGVyCj4gKwkgKiBhZnRlciBhIHN1 Y2Nlc3NmdWwgY2FsbCB0byBjZWNfcmVnaXN0ZXJfYWRhcHRlcigpLgo+ICsJICovCj4gKwlkZXZt X3JlbW92ZV9hY3Rpb24oZGV2LCB0ZGE5OTUwX2NlY19kZWwsIHByaXYpOwo+ICsKPiArCWNlY19y ZWdpc3Rlcl9jZWNfbm90aWZpZXIocHJpdi0+YWRhcCwgcHJpdi0+bm90aWZ5KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZGE5OTUwX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICt7Cj4gKwlzdHJ1Y3QgdGRhOTk1MF9wcml2ICpwcml2ID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gKwo+ICsJY2VjX3VucmVnaXN0ZXJfYWRhcHRlcihw cml2LT5hZGFwKTsKPiArCWNlY19ub3RpZmllcl9wdXQocHJpdi0+bm90aWZ5KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRkYTk5NTBf aWRzW10gPSB7Cj4gKwl7ICJ0ZGE5OTUwIiwgMCB9LAo+ICsJeyB9LAo+ICt9Owo+ICtNT0RVTEVf REVWSUNFX1RBQkxFKGkyYywgdGRhOTk1MF9pZHMpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBpMmNf ZHJpdmVyIHRkYTk5NTBfZHJpdmVyID0gewo+ICsJLnByb2JlID0gdGRhOTk1MF9wcm9iZSwKPiAr CS5yZW1vdmUgPSB0ZGE5OTUwX3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAi dGRhOTk1MCIsCj4gKwl9LAo+ICsJLmlkX3RhYmxlID0gdGRhOTk1MF9pZHMsCj4gK307Cj4gKwo+ ICttb2R1bGVfaTJjX2RyaXZlcih0ZGE5OTUwX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9S KCJSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPiIpOwo+ICtNT0RVTEVf REVTQ1JJUFRJT04oIlREQTk5NTAvVERBOTk4eCBDb25zdW1lciBFbGVjdHJvbmljcyBDb250cm9s IERyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS90ZGE5OTUwLmggYi9pbmNsdWRlL2xpbnV4L3BsYXRm b3JtX2RhdGEvdGRhOTk1MC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwMDAuLmM2NWVmZDQ2MTEwMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2xpbnV4 L3BsYXRmb3JtX2RhdGEvdGRhOTk1MC5oCj4gQEAgLTAsMCArMSwxNiBAQAo+ICsjaWZuZGVmIExJ TlVYX1BMQVRGT1JNX0RBVEFfVERBOTk1MF9ICj4gKyNkZWZpbmUgTElOVVhfUExBVEZPUk1fREFU QV9UREE5OTUwX0gKPiArCj4gK3N0cnVjdCBkZXZpY2U7Cj4gKwo+ICtzdHJ1Y3QgdGRhOTk1MF9n bHVlIHsKPiArCXN0cnVjdCBkZXZpY2UgKnBhcmVudDsKPiArCXVuc2lnbmVkIGxvbmcgaXJxX2Zs YWdzOwo+ICsJdm9pZCAqZGF0YTsKPiArCWludCAoKmluaXQpKHZvaWQgKik7Cj4gKwl2b2lkICgq ZXhpdCkodm9pZCAqKTsKPiArCWludCAoKm9wZW4pKHZvaWQgKik7Cj4gKwl2b2lkICgqcmVsZWFz ZSkodm9pZCAqKTsKPiArfTsKPiArCj4gKyNlbmRpZgo+IAoKQXMgbWVudGlvbmVkIGVhcmxpZXIg SSB3aWxsIHNlZSBpZiBJIGNhbiBnZXQgaXQgdXAgYW5kIHJ1bm5pbmcgb24gbXkKQmVhZ2xlQm9u ZSBCbGFjayBuZXh0IHdlZWsuCgpSZWdhcmRzLAoKCUhhbnMKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==