From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH v3 9/9] drm/panel: Add driver for the Toppoly TD043MTEA1 panel Date: Tue, 13 Aug 2019 19:21:20 +0200 Message-ID: <20190813172120.GE30320@ravnborg.org> References: <20190813133311.26441-1-laurent.pinchart@ideasonboard.com> <20190813133311.26441-10-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asavdk3.altibox.net (asavdk3.altibox.net [109.247.116.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB1336E03D for ; Tue, 13 Aug 2019 17:21:23 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190813133311.26441-10-laurent.pinchart@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Thierry Reding , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMTMsIDIwMTkgYXQgMDQ6MzM6MTFQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBUaGlzIHBhbmVsIGlzIHVzZWQgb24gdGhlIE9NQVAzIFBhbmRvcmEuCj4gCj4g VGhlIGNvZGUgaXMgYmFzZWQgb24gdGhlIG9tYXBkcm0tc3BlY2lmaWMgcGFuZWwtdHBvLXRkMDQz bXRlYTEgZHJpdmVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJl bnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KUmV2aWV3ZWQtYnk6IFNhbSBSYXZuYm9yZyA8 c2FtQHJhdm5ib3JnLm9yZz4KCj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiAKPiAtIENhbGwg ZHJtX3BhbmVsX2Rpc2FibGUoKSBpbiAucmVtb3ZlKCkgaGFuZGxlcgo+IAo+IENoYW5nZXMgc2lu Y2UgdjE6Cj4gCj4gLSBNZW50aW9uIGJvYXJkcyB1c2luZyB0aGUgcGFuZWwgaW4gS2NvbmZpZwo+ IC0gUmVuYW1lZCB0ZDA0M210ZWExX2RldmljZSB0byB0ZDA0M210ZWExX3BhbmVsCj4gLSBGaXhl ZCB0eXBvIGluIFRvcHBvbHkgbmFtZQo+IC0gQ29tbWVudHMgdXBkYXRlcwo+IC0gU3RvcmUgd2lk dGhfbW0gYW5kIGhlaWdodF9tbSBpbiBkcm1fZGlzcGxheV9tb2RlCj4gLSBVc2UgZHJtX3BhbmVs X3VucHJlcGFyZSgpIGluIC5yZW1vdmUoKSBoYW5kbGVyCj4gLSBSZXBsYWNlIGVuYWJsZS9kaXNh YmxlIHdpdGggcHJlcGFyZS91bnByZXBhcmUKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVs L0tjb25maWcgICAgICAgICAgICAgICAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv TWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9w YW5lbC10cG8tdGQwNDNtdGVhMS5jIHwgNTA5ICsrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxl cyBjaGFuZ2VkLCA1MTcgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDA0M210ZWExLmMKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2Nv bmZpZwo+IGluZGV4IGMyNjg5NDIwZDJkZC4uZjE1MmJjNGVlYjUzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVs L0tjb25maWcKPiBAQCAtMzMyLDYgKzMzMiwxMyBAQCBjb25maWcgRFJNX1BBTkVMX1RQT19URDAy OFRURUMxCj4gIAkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9y IFRQTyBURDAyOFRURUMxIDQ4MHg2NDAKPiAgCSAgMi44IiBwYW5lbCAoZm91bmQgb24gdGhlIE9w ZW5Nb2tvIE5lbyBGcmVlUnVubmVyIGFuZCBOZW8gMTk3MykuCj4gIAo+ICtjb25maWcgRFJNX1BB TkVMX1RQT19URDA0M01URUExCj4gKwl0cmlzdGF0ZSAiVG9wcG9seSAoVFBPKSBURDA0M01URUEx IHBhbmVsIGRyaXZlciIKPiArCWRlcGVuZHMgb24gR1BJT0xJQiAmJiBPRiAmJiBSRUdVTEFUT1Ig JiYgU1BJCj4gKwloZWxwCj4gKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1 cHBvcnQgZm9yIFRQTyBURDA0M01URUExIDgwMHg0ODAKPiArCSAgNC4zIiBwYW5lbCAoZm91bmQg b24gdGhlIE9NQVAzIFBhbmRvcmEgYm9hcmQpLgo+ICsKPiAgY29uZmlnIERSTV9QQU5FTF9UUE9f VFBHMTEwCj4gIAl0cmlzdGF0ZSAiVFBPIFRQRyA4MDB4NDAwIHBhbmVsIgo+ICAJZGVwZW5kcyBv biBPRiAmJiBTUEkgJiYgR1BJT0xJQgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBpbmRleCAyN2I3 NzY3MzdhZDMuLmI2Y2QzOWZlMGYyMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBAQCAt MzUsNSArMzUsNiBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJVFJPTklYX1NUNzcwMSkgKz0g cGFuZWwtc2l0cm9uaXgtc3Q3NzAxLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSVRST05J WF9TVDc3ODlWKSArPSBwYW5lbC1zaXRyb25peC1zdDc3ODl2Lm8KPiAgb2JqLSQoQ09ORklHX0RS TV9QQU5FTF9TT05ZX0FDWDU2NUFLTSkgKz0gcGFuZWwtc29ueS1hY3g1NjVha20ubwo+ICBvYmot JChDT05GSUdfRFJNX1BBTkVMX1RQT19URDAyOFRURUMxKSArPSBwYW5lbC10cG8tdGQwMjh0dGVj MS5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfVFBPX1REMDQzTVRFQTEpICs9IHBhbmVsLXRw by10ZDA0M210ZWExLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9UUE9fVFBHMTEwKSArPSBw YW5lbC10cG8tdHBnMTEwLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9UUlVMWV9OVDM1NTk3 X1dRWEdBKSArPSBwYW5lbC10cnVseS1udDM1NTk3Lm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDA0M210ZWExLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtdHBvLXRkMDQzbXRlYTEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi43MTgyNGEzMzRhZjcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDA0M210ZWExLmMKPiBAQCAtMCwwICsxLDUwOSBA QAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKPiArLyoKPiArICogVG9w cG9seSBURDA0M01URUExIFBhbmVsIERyaXZlcgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTkgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkCj4gKyAqCj4gKyAqIEJhc2VkIG9uIHRo ZSBvbWFwZHJtLXNwZWNpZmljIHBhbmVsLXRwby10ZDA0M210ZWExIGRyaXZlcgo+ICsgKgo+ICsg KiBBdXRob3I6IEdyYcW+dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Cj4gKyAqLwo+ ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsjaW5jbHVkZSA8 bGludXgvc3BpL3NwaS5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+Cj4g KyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+ Cj4gKwo+ICsjZGVmaW5lIFRQT19SMDJfTU9ERSh4KQkJCSgoeCkgJiA3KQo+ICsjZGVmaW5lIFRQ T19SMDJfTU9ERV84MDB4NDgwCQk3Cj4gKyNkZWZpbmUgVFBPX1IwMl9OQ0xLX1JJU0lORwkJQklU KDMpCj4gKyNkZWZpbmUgVFBPX1IwMl9IU1lOQ19ISUdICQlCSVQoNCkKPiArI2RlZmluZSBUUE9f UjAyX1ZTWU5DX0hJR0gJCUJJVCg1KQo+ICsKPiArI2RlZmluZSBUUE9fUjAzX05TVEFOREJZCQlC SVQoMCkKPiArI2RlZmluZSBUUE9fUjAzX0VOX0NQX0NMSwkJQklUKDEpCj4gKyNkZWZpbmUgVFBP X1IwM19FTl9WR0xfUFVNUAkJQklUKDIpCj4gKyNkZWZpbmUgVFBPX1IwM19FTl9QV00JCQlCSVQo MykKPiArI2RlZmluZSBUUE9fUjAzX0RSSVZJTkdfQ0FQXzEwMAkJQklUKDQpCj4gKyNkZWZpbmUg VFBPX1IwM19FTl9QUkVfQ0hBUkdFCQlCSVQoNikKPiArI2RlZmluZSBUUE9fUjAzX1NPRlRXQVJF X0NUTAkJQklUKDcpCj4gKwo+ICsjZGVmaW5lIFRQT19SMDRfTkZMSVBfSAkJCUJJVCgwKQo+ICsj ZGVmaW5lIFRQT19SMDRfTkZMSVBfVgkJCUJJVCgxKQo+ICsjZGVmaW5lIFRQT19SMDRfQ1BfQ0xL X0ZSRVFfMUgJCUJJVCgyKQo+ICsjZGVmaW5lIFRQT19SMDRfVkdMX0ZSRVFfMUgJCUJJVCg0KQo+ ICsKPiArI2RlZmluZSBUUE9fUjAzX1ZBTF9OT1JNQUwgXAo+ICsJKFRQT19SMDNfTlNUQU5EQlkg fCBUUE9fUjAzX0VOX0NQX0NMSyB8IFRQT19SMDNfRU5fVkdMX1BVTVAgfCBcCj4gKwkgVFBPX1Iw M19FTl9QV00gfCBUUE9fUjAzX0RSSVZJTkdfQ0FQXzEwMCB8IFRQT19SMDNfRU5fUFJFX0NIQVJH RSB8IFwKPiArCSBUUE9fUjAzX1NPRlRXQVJFX0NUTCkKPiArCj4gKyNkZWZpbmUgVFBPX1IwM19W QUxfU1RBTkRCWSBcCj4gKwkoVFBPX1IwM19EUklWSU5HX0NBUF8xMDAgfCBUUE9fUjAzX0VOX1BS RV9DSEFSR0UgfCBcCj4gKwkgVFBPX1IwM19TT0ZUV0FSRV9DVEwpCj4gKwo+ICtzdGF0aWMgY29u c3QgdTE2IHRkMDQzbXRlYTFfZGVmX2dhbW1hWzEyXSA9IHsKPiArCTEwNSwgMzE1LCAzODEsIDQz MSwgNDkwLCA1MzcsIDU3OSwgNjg2LCA3ODAsIDgzNywgODgwLCAxMDIzCj4gK307Cj4gKwo+ICtz dHJ1Y3QgdGQwNDNtdGVhMV9wYW5lbCB7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsIHBhbmVsOwo+ICsK PiArCXN0cnVjdCBzcGlfZGV2aWNlICpzcGk7Cj4gKwlzdHJ1Y3QgcmVndWxhdG9yICp2Y2NfcmVn Owo+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKPiArCj4gKwl1bnNpZ25lZCBpbnQg bW9kZTsKPiArCXUxNiBnYW1tYVsxMl07Cj4gKwlib29sIHZtaXJyb3I7Cj4gKwlib29sIHBvd2Vy ZWRfb247Cj4gKwlib29sIHNwaV9zdXNwZW5kZWQ7Cj4gKwlib29sIHBvd2VyX29uX3Jlc3VtZTsK PiArfTsKPiArCj4gKyNkZWZpbmUgdG9fdGQwNDNtdGVhMV9kZXZpY2UocCkgY29udGFpbmVyX29m KHAsIHN0cnVjdCB0ZDA0M210ZWExX3BhbmVsLCBwYW5lbCkKPiArCj4gKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gKyAqIEhhcmR3YXJlIEFjY2Vzcwo+ICsgKi8KPiArCj4gK3N0YXRpYyBpbnQg dGQwNDNtdGVhMV93cml0ZShzdHJ1Y3QgdGQwNDNtdGVhMV9wYW5lbCAqbGNkLCB1OCBhZGRyLCB1 OCB2YWx1ZSkKPiArewo+ICsJc3RydWN0IHNwaV9tZXNzYWdlIG1zZzsKPiArCXN0cnVjdCBzcGlf dHJhbnNmZXIgeGZlcjsKPiArCXUxNiBkYXRhOwo+ICsJaW50IHJldDsKPiArCj4gKwlzcGlfbWVz c2FnZV9pbml0KCZtc2cpOwo+ICsKPiArCW1lbXNldCgmeGZlciwgMCwgc2l6ZW9mKHhmZXIpKTsK PiArCj4gKwlkYXRhID0gKCh1MTYpYWRkciA8PCAxMCkgfCAoMSA8PCA4KSB8IHZhbHVlOwo+ICsJ eGZlci50eF9idWYgPSAmZGF0YTsKPiArCXhmZXIuYml0c19wZXJfd29yZCA9IDE2Owo+ICsJeGZl ci5sZW4gPSAyOwo+ICsJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJnhmZXIsICZtc2cpOwo+ICsKPiAr CXJldCA9IHNwaV9zeW5jKGxjZC0+c3BpLCAmbXNnKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWRl dl93YXJuKCZsY2QtPnNwaS0+ZGV2LCAiZmFpbGVkIHRvIHdyaXRlIHRvIExDRCByZWcgKCVkKVxu IiwKPiArCQkJIHJldCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgdGQwNDNtdGVhMV93cml0ZV9nYW1tYShzdHJ1Y3QgdGQwNDNtdGVhMV9wYW5lbCAqbGNkKQo+ ICt7Cj4gKwljb25zdCB1MTYgKmdhbW1hID0gbGNkLT5nYW1tYTsKPiArCXVuc2lnbmVkIGludCBp Owo+ICsJdTggdmFsOwo+ICsKPiArCS8qIGdhbW1hIGJpdHMgWzk6OF0gKi8KPiArCWZvciAodmFs ID0gaSA9IDA7IGkgPCA0OyBpKyspCj4gKwkJdmFsIHw9IChnYW1tYVtpXSAmIDB4MzAwKSA+PiAo KGkgKyAxKSAqIDIpOwo+ICsJdGQwNDNtdGVhMV93cml0ZShsY2QsIDB4MTEsIHZhbCk7Cj4gKwo+ ICsJZm9yICh2YWwgPSBpID0gMDsgaSA8IDQ7IGkrKykKPiArCQl2YWwgfD0gKGdhbW1hW2kgKyA0 XSAmIDB4MzAwKSA+PiAoKGkgKyAxKSAqIDIpOwo+ICsJdGQwNDNtdGVhMV93cml0ZShsY2QsIDB4 MTIsIHZhbCk7Cj4gKwo+ICsJZm9yICh2YWwgPSBpID0gMDsgaSA8IDQ7IGkrKykKPiArCQl2YWwg fD0gKGdhbW1hW2kgKyA4XSAmIDB4MzAwKSA+PiAoKGkgKyAxKSAqIDIpOwo+ICsJdGQwNDNtdGVh MV93cml0ZShsY2QsIDB4MTMsIHZhbCk7Cj4gKwo+ICsJLyogZ2FtbWEgYml0cyBbNzowXSAqLwo+ ICsJZm9yICh2YWwgPSBpID0gMDsgaSA8IDEyOyBpKyspCj4gKwkJdGQwNDNtdGVhMV93cml0ZShs Y2QsIDB4MTQgKyBpLCBnYW1tYVtpXSAmIDB4ZmYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRk MDQzbXRlYTFfd3JpdGVfbWlycm9yKHN0cnVjdCB0ZDA0M210ZWExX3BhbmVsICpsY2QpCj4gK3sK PiArCXU4IHJlZzQgPSBUUE9fUjA0X05GTElQX0ggfCBUUE9fUjA0X05GTElQX1YgfAo+ICsJCVRQ T19SMDRfQ1BfQ0xLX0ZSRVFfMUggfCBUUE9fUjA0X1ZHTF9GUkVRXzFIOwo+ICsJaWYgKGxjZC0+ dm1pcnJvcikKPiArCQlyZWc0ICY9IH5UUE9fUjA0X05GTElQX1Y7Cj4gKwo+ICsJcmV0dXJuIHRk MDQzbXRlYTFfd3JpdGUobGNkLCA0LCByZWc0KTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZDA0 M210ZWExX3Bvd2VyX29uKHN0cnVjdCB0ZDA0M210ZWExX3BhbmVsICpsY2QpCj4gK3sKPiArCWlu dCByZXQ7Cj4gKwo+ICsJaWYgKGxjZC0+cG93ZXJlZF9vbikKPiArCQlyZXR1cm4gMDsKPiArCj4g KwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGxjZC0+dmNjX3JlZyk7Cj4gKwlpZiAocmV0IDwgMCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCS8qIFdhaXQgZm9yIHRoZSBwYW5lbCB0byBzdGFiaWxp emUuICovCj4gKwltc2xlZXAoMTYwKTsKPiArCj4gKwlncGlvZF9zZXRfdmFsdWUobGNkLT5yZXNl dF9ncGlvLCAwKTsKPiArCj4gKwl0ZDA0M210ZWExX3dyaXRlKGxjZCwgMiwgVFBPX1IwMl9NT0RF KGxjZC0+bW9kZSkgfCBUUE9fUjAyX05DTEtfUklTSU5HKTsKPiArCXRkMDQzbXRlYTFfd3JpdGUo bGNkLCAzLCBUUE9fUjAzX1ZBTF9OT1JNQUwpOwo+ICsJdGQwNDNtdGVhMV93cml0ZShsY2QsIDB4 MjAsIDB4ZjApOwo+ICsJdGQwNDNtdGVhMV93cml0ZShsY2QsIDB4MjEsIDB4ZjApOwo+ICsJdGQw NDNtdGVhMV93cml0ZV9taXJyb3IobGNkKTsKPiArCXRkMDQzbXRlYTFfd3JpdGVfZ2FtbWEobGNk KTsKPiArCj4gKwlsY2QtPnBvd2VyZWRfb24gPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCB0ZDA0M210ZWExX3Bvd2VyX29mZihzdHJ1Y3QgdGQwNDNtdGVh MV9wYW5lbCAqbGNkKQo+ICt7Cj4gKwlpZiAoIWxjZC0+cG93ZXJlZF9vbikKPiArCQlyZXR1cm47 Cj4gKwo+ICsJdGQwNDNtdGVhMV93cml0ZShsY2QsIDMsIFRQT19SMDNfVkFMX1NUQU5EQlkgfCBU UE9fUjAzX0VOX1BXTSk7Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGxjZC0+cmVzZXRfZ3Bpbywg MSk7Cj4gKwo+ICsJLyogd2FpdCBmb3IgYXQgbGVhc3QgMiB2c3luY3MgYmVmb3JlIGN1dHRpbmcg b2ZmIHBvd2VyICovCj4gKwltc2xlZXAoNTApOwo+ICsKPiArCXRkMDQzbXRlYTFfd3JpdGUobGNk LCAzLCBUUE9fUjAzX1ZBTF9TVEFOREJZKTsKPiArCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShsY2Qt PnZjY19yZWcpOwo+ICsKPiArCWxjZC0+cG93ZXJlZF9vbiA9IGZhbHNlOwo+ICt9Cj4gKwo+ICsv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKiBzeXNmcwo+ICsgKi8KPiArCj4gK3N0YXRpYyBz c2l6ZV90IHZtaXJyb3Jfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAo+ICsJCQkgICAgY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgdGQwNDNt dGVhMV9wYW5lbCAqbGNkID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJcmV0dXJuIHNu cHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsIGxjZC0+dm1pcnJvcik7Cj4gK30KPiArCj4g K3N0YXRpYyBzc2l6ZV90IHZtaXJyb3Jfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVf dCBjb3VudCkKPiArewo+ICsJc3RydWN0IHRkMDQzbXRlYTFfcGFuZWwgKmxjZCA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOwo+ICsJaW50IHZhbDsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0ga3N0 cnRvaW50KGJ1ZiwgMCwgJnZhbCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ ICsKPiArCWxjZC0+dm1pcnJvciA9ICEhdmFsOwo+ICsKPiArCXJldCA9IHRkMDQzbXRlYTFfd3Jp dGVfbWlycm9yKGxjZCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAr CXJldHVybiBjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgbW9kZV9zaG93KHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCSBjaGFy ICpidWYpCj4gK3sKPiArCXN0cnVjdCB0ZDA0M210ZWExX3BhbmVsICpsY2QgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxu IiwgbGNkLT5tb2RlKTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgbW9kZV9zdG9yZShzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgIGNv bnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgdGQwNDNtdGVhMV9w YW5lbCAqbGNkID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlsb25nIHZhbDsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJcmV0ID0ga3N0cnRvbChidWYsIDAsICZ2YWwpOwo+ICsJaWYgKHJldCAhPSAw IHx8IHZhbCAmIH43KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWxjZC0+bW9kZSA9IHZh bDsKPiArCj4gKwl2YWwgfD0gVFBPX1IwMl9OQ0xLX1JJU0lORzsKPiArCXRkMDQzbXRlYTFfd3Jp dGUobGNkLCAyLCB2YWwpOwo+ICsKPiArCXJldHVybiBjb3VudDsKPiArfQo+ICsKPiArc3RhdGlj IHNzaXplX3QgZ2FtbWFfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAo+ICsJCQkgIGNoYXIgKmJ1ZikKPiArewo+ICsJc3RydWN0IHRkMDQzbXRl YTFfcGFuZWwgKmxjZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3NpemVfdCBsZW4gPSAw Owo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGxjZC0+Z2FtbWEpOyBpKyspIHsKPiArCQlyZXQgPSBzbnByaW50ZihidWYg KyBsZW4sIFBBR0VfU0laRSAtIGxlbiwgIiV1ICIsCj4gKwkJCQlsY2QtPmdhbW1hW2ldKTsKPiAr CQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCQlsZW4gKz0gcmV0Owo+ICsJfQo+ ICsJYnVmW2xlbiAtIDFdID0gJ1xuJzsKPiArCj4gKwlyZXR1cm4gbGVuOwo+ICt9Cj4gKwo+ICtz dGF0aWMgc3NpemVfdCBnYW1tYV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3Vu dCkKPiArewo+ICsJc3RydWN0IHRkMDQzbXRlYTFfcGFuZWwgKmxjZCA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwo+ICsJdW5zaWduZWQgaW50IGdbMTJdOwo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCXJldCA9IHNzY2FuZihidWYsICIldSAldSAldSAldSAldSAldSAldSAl dSAldSAldSAldSAldSIsCj4gKwkJCSZnWzBdLCAmZ1sxXSwgJmdbMl0sICZnWzNdLCAmZ1s0XSwg JmdbNV0sCj4gKwkJCSZnWzZdLCAmZ1s3XSwgJmdbOF0sICZnWzldLCAmZ1sxMF0sICZnWzExXSk7 Cj4gKwlpZiAocmV0ICE9IDEyKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCAxMjsgaSsrKQo+ICsJCWxjZC0+Z2FtbWFbaV0gPSBnW2ldOwo+ICsKPiArCXRkMDQz bXRlYTFfd3JpdGVfZ2FtbWEobGNkKTsKPiArCj4gKwlyZXR1cm4gY291bnQ7Cj4gK30KPiArCj4g K3N0YXRpYyBERVZJQ0VfQVRUUl9SVyh2bWlycm9yKTsKPiArc3RhdGljIERFVklDRV9BVFRSX1JX KG1vZGUpOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUlcoZ2FtbWEpOwo+ICsKPiArc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGUgKnRkMDQzbXRlYTFfYXR0cnNbXSA9IHsKPiArCSZkZXZfYXR0cl92bWly cm9yLmF0dHIsCj4gKwkmZGV2X2F0dHJfbW9kZS5hdHRyLAo+ICsJJmRldl9hdHRyX2dhbW1hLmF0 dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgdGQwNDNtdGVhMV9hdHRyX2dyb3VwID0gewo+ICsJLmF0dHJzID0gdGQwNDNtdGVhMV9h dHRycywKPiArfTsKPiArCj4gKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqIFBhbmVsIE9w ZXJhdGlvbnMKPiArICovCj4gKwo+ICtzdGF0aWMgaW50IHRkMDQzbXRlYTFfdW5wcmVwYXJlKHN0 cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgdGQwNDNtdGVhMV9wYW5lbCAq bGNkID0gdG9fdGQwNDNtdGVhMV9kZXZpY2UocGFuZWwpOwo+ICsKPiArCWlmICghbGNkLT5zcGlf c3VzcGVuZGVkKQo+ICsJCXRkMDQzbXRlYTFfcG93ZXJfb2ZmKGxjZCk7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdGQwNDNtdGVhMV9wcmVwYXJlKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgdGQwNDNtdGVhMV9wYW5lbCAqbGNkID0gdG9f dGQwNDNtdGVhMV9kZXZpY2UocGFuZWwpOwo+ICsJaW50IHJldDsKPiArCj4gKwkvKgo+ICsJICog SWYgd2UgYXJlIHJlc3VtaW5nIGZyb20gc3lzdGVtIHN1c3BlbmQsIFNQSSBtaWdodCBub3QgYmUg ZW5hYmxlZAo+ICsJICogeWV0LCBzbyB3ZSdsbCBwcm9ncmFtIHRoZSBMQ0QgZnJvbSBTUEkgUE0g cmVzdW1lIGNhbGxiYWNrLgo+ICsJICovCj4gKwlpZiAobGNkLT5zcGlfc3VzcGVuZGVkKQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCXJldCA9IHRkMDQzbXRlYTFfcG93ZXJfb24obGNkKTsKPiArCWlm IChyZXQpIHsKPiArCQlkZXZfZXJyKCZsY2QtPnNwaS0+ZGV2LCAiJXM6IHBvd2VyIG9uIGZhaWxl ZCAoJWQpXG4iLAo+ICsJCQlfX2Z1bmNfXywgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgdGQwNDNtdGVhMV9tb2RlID0gewo+ICsJLmNsb2NrID0gMzYwMDAsCj4gKwkuaGRp c3BsYXkgPSA4MDAsCj4gKwkuaHN5bmNfc3RhcnQgPSA4MDAgKyA2OCwKPiArCS5oc3luY19lbmQg PSA4MDAgKyA2OCArIDEsCj4gKwkuaHRvdGFsID0gODAwICsgNjggKyAxICsgMjE0LAo+ICsJLnZk aXNwbGF5ID0gNDgwLAo+ICsJLnZzeW5jX3N0YXJ0ID0gNDgwICsgMzksCj4gKwkudnN5bmNfZW5k ID0gNDgwICsgMzkgKyAxLAo+ICsJLnZ0b3RhbCA9IDQ4MCArIDM5ICsgMSArIDM0LAo+ICsJLnZy ZWZyZXNoID0gNjAsCj4gKwkudHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVf VFlQRV9QUkVGRVJSRUQsCj4gKwkuZmxhZ3MgPSBEUk1fTU9ERV9GTEFHX05IU1lOQyB8IERSTV9N T0RFX0ZMQUdfTlZTWU5DLAo+ICsJLndpZHRoX21tID0gOTQsCj4gKwkuaGVpZ2h0X21tID0gNTYs Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHRkMDQzbXRlYTFfZ2V0X21vZGVzKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g cGFuZWwtPmNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ICsK PiArCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFuZWwtPmRybSwgJnRkMDQzbXRlYTFfbW9k ZSk7Cj4gKwlpZiAoIW1vZGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZHJtX21vZGVf c2V0X25hbWUobW9kZSk7Cj4gKwlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7 Cj4gKwo+ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSB0ZDA0M210ZWExX21v ZGUud2lkdGhfbW07Cj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSB0ZDA0 M210ZWExX21vZGUuaGVpZ2h0X21tOwo+ICsJLyoKPiArCSAqIEZJWE1FOiBBY2NvcmRpbmcgdG8g dGhlIGRhdGFzaGVldCBzeW5jIHNpZ25hbHMgYXJlIHNhbXBsZWQgb24gdGhlCj4gKwkgKiByaXNp bmcgZWRnZSBvZiB0aGUgY2xvY2ssIGJ1dCB0aGUgY29kZSBydW5uaW5nIG9uIHRoZSBPTUFQMyBQ YW5kb3JhCj4gKwkgKiBpbmRpY2F0ZXMgc2FtcGxpbmcgb24gdGhlIGZhbGxpbmcgZWRnZS4gVGhp cyBzaG91bGQgYmUgdGVzdGVkIG9uIGEKPiArCSAqIHJlYWwgZGV2aWNlLgo+ICsJICovCj4gKwlj b25uZWN0b3ItPmRpc3BsYXlfaW5mby5idXNfZmxhZ3MgPSBEUk1fQlVTX0ZMQUdfREVfSElHSAo+ ICsJCQkJCSAgfCBEUk1fQlVTX0ZMQUdfU1lOQ19TQU1QTEVfTkVHRURHRQo+ICsJCQkJCSAgfCBE Uk1fQlVTX0ZMQUdfUElYREFUQV9TQU1QTEVfUE9TRURHRTsKPiArCj4gKwlyZXR1cm4gMTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgdGQwNDNtdGVhMV9m dW5jcyA9IHsKPiArCS51bnByZXBhcmUgPSB0ZDA0M210ZWExX3VucHJlcGFyZSwKPiArCS5wcmVw YXJlID0gdGQwNDNtdGVhMV9wcmVwYXJlLAo+ICsJLmdldF9tb2RlcyA9IHRkMDQzbXRlYTFfZ2V0 X21vZGVzLAo+ICt9Owo+ICsKPiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICogUG93ZXIg TWFuYWdlbWVudCwgUHJvYmUgYW5kIFJlbW92ZQo+ICsgKi8KPiArCj4gK3N0YXRpYyBpbnQgX19t YXliZV91bnVzZWQgdGQwNDNtdGVhMV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ ICsJc3RydWN0IHRkMDQzbXRlYTFfcGFuZWwgKmxjZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ ICsKPiArCWlmIChsY2QtPnBvd2VyZWRfb24pIHsKPiArCQl0ZDA0M210ZWExX3Bvd2VyX29mZihs Y2QpOwo+ICsJCWxjZC0+cG93ZXJlZF9vbiA9IHRydWU7Cj4gKwl9Cj4gKwo+ICsJbGNkLT5zcGlf c3VzcGVuZGVkID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBfX21heWJlX3VudXNlZCB0ZDA0M210ZWExX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g K3sKPiArCXN0cnVjdCB0ZDA0M210ZWExX3BhbmVsICpsY2QgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiArCWludCByZXQ7Cj4gKwo+ICsJbGNkLT5zcGlfc3VzcGVuZGVkID0gZmFsc2U7Cj4gKwo+ ICsJaWYgKGxjZC0+cG93ZXJlZF9vbikgewo+ICsJCWxjZC0+cG93ZXJlZF9vbiA9IGZhbHNlOwo+ ICsJCXJldCA9IHRkMDQzbXRlYTFfcG93ZXJfb24obGNkKTsKPiArCQlpZiAocmV0KQo+ICsJCQly ZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgU0lN UExFX0RFVl9QTV9PUFModGQwNDNtdGVhMV9wbV9vcHMsIHRkMDQzbXRlYTFfc3VzcGVuZCwKPiAr CQkJIHRkMDQzbXRlYTFfcmVzdW1lKTsKPiArCj4gK3N0YXRpYyBpbnQgdGQwNDNtdGVhMV9wcm9i ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ICt7Cj4gKwlzdHJ1Y3QgdGQwNDNtdGVhMV9wYW5l bCAqbGNkOwo+ICsJaW50IHJldDsKPiArCj4gKwlsY2QgPSBkZXZtX2t6YWxsb2MoJnNwaS0+ZGV2 LCBzaXplb2YoKmxjZCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKGxjZCA9PSBOVUxMKQo+ICsJCXJl dHVybiAtRU5PTUVNOwo+ICsKPiArCXNwaV9zZXRfZHJ2ZGF0YShzcGksIGxjZCk7Cj4gKwlsY2Qt PnNwaSA9IHNwaTsKPiArCWxjZC0+bW9kZSA9IFRQT19SMDJfTU9ERV84MDB4NDgwOwo+ICsJbWVt Y3B5KGxjZC0+Z2FtbWEsIHRkMDQzbXRlYTFfZGVmX2dhbW1hLCBzaXplb2YobGNkLT5nYW1tYSkp Owo+ICsKPiArCWxjZC0+dmNjX3JlZyA9IGRldm1fcmVndWxhdG9yX2dldCgmc3BpLT5kZXYsICJ2 Y2MiKTsKPiArCWlmIChJU19FUlIobGNkLT52Y2NfcmVnKSkgewo+ICsJCWRldl9lcnIoJnNwaS0+ ZGV2LCAiZmFpbGVkIHRvIGdldCBWQ0MgcmVndWxhdG9yXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VS UihsY2QtPnZjY19yZWcpOwo+ICsJfQo+ICsKPiArCWxjZC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bp b2RfZ2V0KCZzcGktPmRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOwo+ICsJaWYgKElTX0VS UihsY2QtPnJlc2V0X2dwaW8pKSB7Cj4gKwkJZGV2X2Vycigmc3BpLT5kZXYsICJmYWlsZWQgdG8g Z2V0IHJlc2V0IEdQSU9cbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGxjZC0+cmVzZXRfZ3Bpbyk7 Cj4gKwl9Cj4gKwo+ICsJc3BpLT5iaXRzX3Blcl93b3JkID0gMTY7Cj4gKwlzcGktPm1vZGUgPSBT UElfTU9ERV8wOwo+ICsKPiArCXJldCA9IHNwaV9zZXR1cChzcGkpOwo+ICsJaWYgKHJldCA8IDAp IHsKPiArCQlkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0byBzZXR1cCBTUEk6ICVkXG4iLCBy ZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gc3lzZnNfY3JlYXRlX2dy b3VwKCZzcGktPmRldi5rb2JqLCAmdGQwNDNtdGVhMV9hdHRyX2dyb3VwKTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJZGV2X2Vycigmc3BpLT5kZXYsICJmYWlsZWQgdG8gY3JlYXRlIHN5c2ZzIGZp bGVzXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZs Y2QtPnBhbmVsKTsKPiArCWxjZC0+cGFuZWwuZGV2ID0gJmxjZC0+c3BpLT5kZXY7Cj4gKwlsY2Qt PnBhbmVsLmZ1bmNzID0gJnRkMDQzbXRlYTFfZnVuY3M7Cj4gKwo+ICsJcmV0ID0gZHJtX3BhbmVs X2FkZCgmbGNkLT5wYW5lbCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCXN5c2ZzX3JlbW92ZV9n cm91cCgmc3BpLT5kZXYua29iaiwgJnRkMDQzbXRlYTFfYXR0cl9ncm91cCk7Cj4gKwkJcmV0dXJu IHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZDA0 M210ZWExX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ICt7Cj4gKwlzdHJ1Y3QgdGQw NDNtdGVhMV9wYW5lbCAqbGNkID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7Cj4gKwo+ICsJZHJtX3Bh bmVsX3JlbW92ZSgmbGNkLT5wYW5lbCk7Cj4gKwlkcm1fcGFuZWxfZGlzYWJsZSgmbGNkLT5wYW5l bCk7Cj4gKwlkcm1fcGFuZWxfdW5wcmVwYXJlKCZsY2QtPnBhbmVsKTsKPiArCj4gKwlzeXNmc19y ZW1vdmVfZ3JvdXAoJnNwaS0+ZGV2LmtvYmosICZ0ZDA0M210ZWExX2F0dHJfZ3JvdXApOwo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCB0ZDA0M210ZWExX29mX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInRwbyx0ZDA0 M210ZWExIiwgfSwKPiArCXsgLyogc2VudGluZWwgKi8gfSwKPiArfTsKPiArCj4gK01PRFVMRV9E RVZJQ0VfVEFCTEUob2YsIHRkMDQzbXRlYTFfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGljIHN0cnVj dCBzcGlfZHJpdmVyIHRkMDQzbXRlYTFfZHJpdmVyID0gewo+ICsJLnByb2JlCQk9IHRkMDQzbXRl YTFfcHJvYmUsCj4gKwkucmVtb3ZlCQk9IHRkMDQzbXRlYTFfcmVtb3ZlLAo+ICsJLmRyaXZlcgkJ PSB7Cj4gKwkJLm5hbWUJPSAicGFuZWwtdHBvLXRkMDQzbXRlYTEiLAo+ICsJCS5wbQk9ICZ0ZDA0 M210ZWExX3BtX29wcywKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSB0ZDA0M210ZWExX29mX21hdGNo LAo+ICsJfSwKPiArfTsKPiArCj4gK21vZHVsZV9zcGlfZHJpdmVyKHRkMDQzbXRlYTFfZHJpdmVy KTsKPiArCj4gK01PRFVMRV9BTElBUygic3BpOnRwbyx0ZDA0M210ZWExIik7Cj4gK01PRFVMRV9B VVRIT1IoIkdyYcW+dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Iik7Cj4gK01PRFVM RV9ERVNDUklQVElPTigiVFBPIFREMDQzTVRFQTEgUGFuZWwgRHJpdmVyIik7Cj4gK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsKPiAtLSAKPiBSZWdhcmRzLAo+IAo+IExhdXJlbnQgUGluY2hhcnQKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs