From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC v2 3/4] drm/panel: Add new panel driver based on crystal cove pmic Date: Fri, 09 Jan 2015 15:08:47 +0200 Message-ID: <877fwwyucg.fsf@intel.com> References: <1420206085-2913-1-git-send-email-shobhit.kumar@intel.com> <1420206085-2913-4-git-send-email-shobhit.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id C2E576E8E2 for ; Fri, 9 Jan 2015 05:09:08 -0800 (PST) In-Reply-To: <1420206085-2913-4-git-send-email-shobhit.kumar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx Cc: Daniel Vetter , jacob.jun.pan@intel.com, Shobhit Kumar List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAwMiBKYW4gMjAxNSwgU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5j b20+IHdyb3RlOgo+IFRoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSAiY3J5c3Rh bF9jb3ZlX3BhbmVsIiBjZWxsIGRldmljZS4KPiBPbiBCWVQtVCBwbWljIGhhcyB0byBiZSB1c2Vk IHRvIGVuYWJsZS9kaXNhYmxlIHBhbmVsLgoKVGhpcyBuZWVkcyB0byBiZSBzZW50IHRvIGRyaS1k ZXZlbC4KCldpdGggdGhlIGNvbW1lbnRzIGJlbG93IGFkZHJlc3NlZCwgYW5kIHdpdGggdGhlIGRp c2NsYWltZXIgdGhhdCBJIGhhdmUKbm8gaWRlYSBhYm91dCB0aGUgcG1pYyByZWdpc3RlcnMgb3Ig cmVxdWlyZWQgc2xlZXBzLCB0aGlzIGlzCgpSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGphbmku bmlrdWxhQGludGVsLmNvbT4KCj4KPiBTaWduZWQtb2ZmLWJ5OiBTaG9iaGl0IEt1bWFyIDxzaG9i aGl0Lmt1bWFyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcgICAgICAgICAgICAgfCAgIDcgKysKPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxl ICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtY3J5c3Rh bGNvdmUuYyB8IDE5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBj aGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLWNyeXN0YWxjb3ZlLmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4g aW5kZXggMDI0ZTk4ZS4uZDgxM2JkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gQEAgLTQw LDQgKzQwLDExIEBAIGNvbmZpZyBEUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEKPiAgCSAgVG8g Y29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVs ZQo+ICAJICB3aWxsIGJlIGNhbGxlZCBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS4KPiAgCj4gK2Nv bmZpZyBEUk1fUEFORUxfQ1JZU1RBTENPVkUKPiArCXRyaXN0YXRlICJDcnlzdGFsY292ZSBQTUlD IGNvbnRyb2xsZWQgcGFuZWwiCj4gKwlkZXBlbmRzIG9uIElOVEVMX1NPQ19QTUlDCgpJTlRFTF9T T0NfUE1JQyBpcyBzdGlsbCBhIGJvb2wgKGFuZCByZXF1aXJlcyBJMkM9eSksIGFuZCBJTU8gc2hv dWxkIGJlCmZpeGVkIHRvIHN1cHBvcnQgdHJpc3RhdGUuIE9yIGFyZSB0aGVyZSBmdW5kYW1lbnRh bCByZWFzb25zIHRoaXMgY2FuJ3QKYmUgZG9uZT8KCj4gKwloZWxwCj4gKwkgIFNheSBZIGhlcmUg aWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIERTSSBwYW5lbCBhbmQgYmFja2xpZ2h0 Cj4gKwkgIGNvbnRyb2wgdXNpbmcgY3J5c3RhbGNvdmUgcG1pYy4gVGhpcyBpcyB1c2VkIGZvciBC WVQgQ1IgY29uZmlndXJhdGlvbnMKPiArCj4gIGVuZG1lbnUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxl Cj4gaW5kZXggNGIyYTA0My4uYzA1ODI0ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBA QCAtMiwzICsyLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSU1QTEUpICs9IHBhbmVsLXNp bXBsZS5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfTEQ5MDQwKSArPSBwYW5lbC1sZDkwNDAu bwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1M2RThBQTApICs9IHBhbmVsLXM2ZThhYTAubwo+ ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxKSArPSBwYW5lbC1zaGFy cC1scTEwMXIxc3gwMS5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfQ1JZU1RBTENPVkUpICs9 IHBhbmVsLWNyeXN0YWxjb3ZlLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVs L3BhbmVsLWNyeXN0YWxjb3ZlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtY3J5c3Rh bGNvdmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjJmN2ZmNQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtY3J5c3Rh bGNvdmUuYwo+IEBAIC0wLDAgKzEsMTkxIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDA2 LTIwMTQgSW50ZWwgQ29ycG9yYXRpb24KCjIwMDY/IQoKPiArICoKPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAq Cj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0 d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks Cj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KPiArICoKPiArICogQXV0aG9yczoKPiArICoJU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1h ckBpbnRlbC5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L21mZC9pbnRlbF9zb2NfcG1pYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxh dGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArCj4gKyNkZWZp bmUgUE1JQ19QQU5FTF9FTgkJMHg1Mgo+ICsjZGVmaW5lIFBNSUNfUFdNX0VOCQkweDUxCj4gKyNk ZWZpbmUgUE1JQ19CS0xfRU4JCTB4NEIKPiArI2RlZmluZSBQTUlDX1BXTV9MRVZFTAkJMHg0RQo+ ICsKPiArc3RydWN0IGNyeXN0YWxjb3ZlX3BhbmVsIHsKPiArCXN0cnVjdCBkcm1fcGFuZWwgYmFz ZTsKPiArCWNoYXIgbmFtZVtOQU1FX01BWF07CgpVbnVzZWQuCgo+ICsJYm9vbCBwcmVwYXJlZDsK PiArCWJvb2wgZW5hYmxlZDsKPiArCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKClVudXNlZC4KCj4g Kwo+ICsJLyogY3J5c3RhbCBjb3ZlIHBtaWMgcmVnbWFwICovCj4gKwlzdHJ1Y3QgcmVnbWFwICpy ZWdtYXA7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBjcnlzdGFsY292ZV9wYW5l bCAqdG9fY3J5c3RhbGNvdmVfcGFuZWwoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiAr CXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBjcnlzdGFsY292ZV9wYW5lbCwgYmFz ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY3J5c3RhbGNvdmVfcGFuZWxfZGlzYWJsZShzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGNyeXN0YWxjb3ZlX3BhbmVsICpw ID0gdG9fY3J5c3RhbGNvdmVfcGFuZWwocGFuZWwpOwo+ICsKPiArCWlmICghcC0+ZW5hYmxlZCkK PiArCQlyZXR1cm4gMDsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJcbiIpOwo+ICsKPiArCS8qIGlu dm9rZSB0aGUgcG1pYyBkcml2ZXIgKi8KPiArCXJlZ21hcF93cml0ZShwLT5yZWdtYXAsIFBNSUNf UEFORUxfRU4sIDB4MDApOwo+ICsKPiArCS8qIERpc2FibGUgYmFja2xpZ2h0IGFzIHdlbGwgKi8K PiArCXJlZ21hcF93cml0ZShwLT5yZWdtYXAsIFBNSUNfUFdNX0xFVkVMLCAwKTsKPiArCW1zbGVl cCgyMCk7CgpTZWVtcyBsaWtlIGEgbG9uZyBkZWxheS4KCj4gKwlyZWdtYXBfd3JpdGUocC0+cmVn bWFwLCBQTUlDX1BXTV9FTiwgMHgwMCk7Cj4gKwlyZWdtYXBfd3JpdGUocC0+cmVnbWFwLCBQTUlD X0JLTF9FTiwgMHg3Rik7Cj4gKwo+ICsJcC0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNyeXN0YWxjb3ZlX3BhbmVsX3VucHJlcGFyZShz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGNyeXN0YWxjb3ZlX3BhbmVs ICpwID0gdG9fY3J5c3RhbGNvdmVfcGFuZWwocGFuZWwpOwo+ICsKPiArCWlmICghcC0+cHJlcGFy ZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJLyogTm90aGluZyBuZWVkZWQgKi8KPiArCXAtPnBy ZXBhcmVkID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg Y3J5c3RhbGNvdmVfcGFuZWxfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ ICsJc3RydWN0IGNyeXN0YWxjb3ZlX3BhbmVsICpwID0gdG9fY3J5c3RhbGNvdmVfcGFuZWwocGFu ZWwpOwo+ICsKPiArCWlmIChwLT5wcmVwYXJlZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwkvKiBO b3RoaW5nIG5lZWRlZCAqLwo+ICsJcC0+cHJlcGFyZWQgPSB0cnVlOwo+ICsKPiArCXJldHVybiAw Owo+ICt9CgpJZiB5b3UgZG9uJ3QgbmVlZCBwcmVwYXJlL3VucHJlcGFyZSwgeW91IGNhbiBqdXN0 IGxlYXZlIHRoZW0gb3V0CmFsdG9nZXRoZXIuIEl0J3MgZWFzeSB0byBhZGQgdGhlbSBpZiB5b3Ug bmVlZCB0aGVtIGxhdGVyLgoKPiArCj4gK3N0YXRpYyBpbnQgY3J5c3RhbGNvdmVfcGFuZWxfZW5h YmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgY3J5c3RhbGNvdmVf cGFuZWwgKnAgPSB0b19jcnlzdGFsY292ZV9wYW5lbChwYW5lbCk7Cj4gKwo+ICsJaWYgKHAtPmVu YWJsZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiArCj4g KwkvKiBpbnZva2UgdGhlIHBtaWMgZHJpdmVyICovCj4gKwlyZWdtYXBfd3JpdGUocC0+cmVnbWFw LCBQTUlDX1BBTkVMX0VOLCAweDAxKTsKPiArCj4gKwkvKiBFbmFibGUgQktMIGFzIHdlbGwgKi8K PiArCXJlZ21hcF93cml0ZShwLT5yZWdtYXAsIFBNSUNfQktMX0VOLCAweEZGKTsKPiArCXJlZ21h cF93cml0ZShwLT5yZWdtYXAsIFBNSUNfUFdNX0VOLCAweDAxKTsKPiArCW1zbGVlcCgyMCk7Cj4g KwlyZWdtYXBfd3JpdGUocC0+cmVnbWFwLCBQTUlDX1BXTV9MRVZFTCwgMjU1KTsKPiArCj4gKwlw LT5lbmFibGVkID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgY3J5c3RhbGNvdmVfcGFuZWxfZnVuY3MgPSB7Cj4g KwkuZGlzYWJsZSA9IGNyeXN0YWxjb3ZlX3BhbmVsX2Rpc2FibGUsCj4gKwkudW5wcmVwYXJlID0g Y3J5c3RhbGNvdmVfcGFuZWxfdW5wcmVwYXJlLAo+ICsJLnByZXBhcmUgPSBjcnlzdGFsY292ZV9w YW5lbF9wcmVwYXJlLAo+ICsJLmVuYWJsZSA9IGNyeXN0YWxjb3ZlX3BhbmVsX2VuYWJsZSwKPiAr fTsKPiArCj4gK3N0YXRpYyBpbnQgY3J5c3RhbGNvdmVfcGFuZWxfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGNyeXN0YWxjb3ZlX3BhbmVsICpwYW5l bDsKPiArCWludCByZXR2YWw7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwZGV2LT5kZXYucGFy ZW50Owo+ICsJc3RydWN0IGludGVsX3NvY19wbWljICpwbWljID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gKwo+ICsJcGFuZWwgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpwYW5l bCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwYW5lbCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwlEUk1fREVCVUdfS01TKCJcbiIpOwo+ICsKPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBk ZXYsIHBhbmVsKTsKPiArCj4gKwlzdHJjcHkocGFuZWwtPmJhc2UubmFtZSwgImNyeXN0YWxfY292 ZV9wYW5lbCIpOwo+ICsJcGFuZWwtPnJlZ21hcCA9IHBtaWMtPnJlZ21hcDsKPiArCj4gKwlyZWdt YXBfcmVhZChwYW5lbC0+cmVnbWFwLCBQTUlDX1BBTkVMX0VOLCAmcmV0dmFsKTsKPiArCXBhbmVs LT5lbmFibGVkID0gcGFuZWwtPnByZXBhcmVkID0gcmV0dmFsID8gdHJ1ZSA6IGZhbHNlOwoKRm9y IGJvb2xzIHlvdSBjYW4ganVzdCBhc3NpZ24gcmV0dmFsLCBvciBpZiB5b3Ugd2FudCB0byBlbXBo YXNpcyBpdCdzIGEKYm9vbCB5b3UgY2FuIHVzZSAhIXJldHZhbC4KCj4gKwo+ICsJZHJtX3BhbmVs X2luaXQoJnBhbmVsLT5iYXNlKTsKPiArCXBhbmVsLT5iYXNlLmRldiA9IGRldjsKPiArCXBhbmVs LT5iYXNlLmZ1bmNzID0gJmNyeXN0YWxjb3ZlX3BhbmVsX2Z1bmNzOwo+ICsKPiArCWRybV9wYW5l bF9hZGQoJnBhbmVsLT5iYXNlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBjcnlzdGFsY292ZV9wYW5lbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiArewo+ICsJc3RydWN0IGNyeXN0YWxjb3ZlX3BhbmVsICpwYW5lbCA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKHBkZXYpOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gKwo+ICsJZHJt X3BhbmVsX2RldGFjaCgmcGFuZWwtPmJhc2UpOwo+ICsJZHJtX3BhbmVsX3JlbW92ZSgmcGFuZWwt PmJhc2UpOwo+ICsKPiArCWNyeXN0YWxjb3ZlX3BhbmVsX2Rpc2FibGUoJnBhbmVsLT5iYXNlKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgY3J5c3RhbGNvdmVfcGFuZWxfZHJpdmVyID0gewo+ICsJLnByb2JlID0gY3J5c3RhbGNvdmVf cGFuZWxfcHJvYmUsCj4gKwkucmVtb3ZlID0gY3J5c3RhbGNvdmVfcGFuZWxfcmVtb3ZlLAo+ICsJ LmRyaXZlciA9IHsKPiArCQkubmFtZSA9ICJjcnlzdGFsX2NvdmVfcGFuZWwiLAo+ICsJfSwKPiAr fTsKPiArCj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoY3J5c3RhbGNvdmVfcGFuZWxfZHJpdmVy KTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIlNob2JoaXQgS3VtYXIgPHNob2JoaXQua3VtYXJAbGlu dXguaW50ZWwuY29tIik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiSW50ZWwgQ3J5c3RhbCBDb3Zl IFBhbmVsIERyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CgpUaGlzIGNvbmZs aWN0cyB3aXRoIHRoZSBjb3B5cmlnaHQgaGVhZGVyIG9mIHRoZSBmaWxlLgoKCj4gLS0gCj4gMS45 LjEKPgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=