From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v7] drm/i915/dsc: Add Per connector debugfs node for DSC support/enable Date: Wed, 5 Dec 2018 15:23:16 -0800 Message-ID: <20181205232315.GA24555@intel.com> References: <20181204195537.5274-1-manasi.d.navare@intel.com> <20181205225735.24397-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 678B989364 for ; Wed, 5 Dec 2018 23:20:57 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBEZWMgMDUsIDIwMTggYXQgMDY6MDM6MDhQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBXZWQsIDIwMTgtMTItMDUgYXQgMTQ6NTcgLTA4MDAsIE1hbmFzaSBOYXZhcmUgd3Jv dGU6Cj4gPiBEU0MgY2FuIGJlIHN1cHBvcnRlZCBwZXIgRFAgY29ubmVjdG9yLiBUaGlzIHBhdGNo IGFkZHMgYSBwZXIgY29ubmVjdG9yCj4gPiBkZWJ1Z2ZzIG5vZGUgdG8gZXhwb3NlIERTQyBzdXBw b3J0IGNhcGFiaWxpdHkgYnkgdGhlIGtlcm5lbC4KPiA+IFRoZSBzYW1lIG5vZGUgY2FuIGJlIHVz ZWQgZnJvbSB1c2Vyc3BhY2UgdG8gZm9yY2UgRFNDIGVuYWJsZS4KPiA+IAo+ID4gZm9yY2VfZHNj X2VuIHdyaXR0ZW4gdGhyb3VnaCB0aGlzIGRlYnVnZnMgbm9kZSBpcyB1c2VkIHRvIGZvcmNlCj4g PiBEU0MgZXZlbiBmb3IgbG93ZXIgcmVzb2x1dGlvbnMuCj4gPiAKPiA+IENyZWRpdHMgdG8gVmls bGUgU3lyamFsYSBmb3Igc3VnZ2VzdGluZyB0aGUgcHJvcGVyIGxvY2tzIHRvIGJlIHVzZWQKPiA+ IGFuZCB0byBMeXVkZSBQYXVsIGZvciBleHBsYWluaW5nIGhvdyB0byB1c2UgdGhlbSBpbiB0aGlz IGNvbnRleHQKPiA+IAo+ID4gdjc6Cj4gPiAqIEdldCBjcnRjLCBjcnRjX3N0YXRlIGZyb20gY29u bmVjdG9yIGF0b21pYyBzdGF0ZQo+ID4gYW5kIGFkZCBwcm9wZXIgbG9ja3MgYW5kIGJhY2tvZmYg KFZpbGxlLCBDaHJpcyBXaWxzb24sIEx5dWRlKQo+ID4gKFN1Z2dlc3RlZC1ieTogVmlsbGUgU3ly amFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+KQo+ID4gKiBVc2UgJXp1IGZvciBw cmludGluZyBzaXplX3QgdmFyaWFibGUgKEx5dWRlKQo+ID4gdjY6Cj4gPiAqIFJlYWQgZmVjX2Nh cGFibGUgb25seSBmb3Igbm9uIGVkcCAoTWFuYXNpKQo+ID4gdjU6Cj4gPiAqIE5hbWUgaXQgZHNj IHNpbmsgc3VwcG9ydCBhbmQgYWxzbyBhZGQKPiA+IGZlYyBzdXBwb3J0IGluIHRoZSBzYW1lIG5v ZGUgKFZpbGxlKQo+ID4gdjQ6Cj4gPiAqIEFkZCBtaXNzZWQgY29ubmVjdG9yX3N0YXR1cyBjaGVj ayAoTWFuYXNpKQo+ID4gKiBDcmVhdGUgaTkxNV9kc2Nfc3VwcG9ydCBub2RlIG9ubHkgZm9yIEdl biA+PTEwIChtYW5hc2kpCj4gPiAqIEFjY2VzcyBpbnRlbF9kcC0+ZHNjX2RwY2Qgb25seSBpZiBp dHMgbm90IE5VTEwgKE1hbmFzaSkKPiA+IHYzOgo+ID4gKiBDb21iaW5lIEZvcmNlX2RzY19lbiB3 aXRoIHRoaXMgcGF0Y2ggKFZpbGxlKQo+ID4gdjI6Cj4gPiAqIFVzZSBrc3RydG9ib29sX2Zyb21f dXNlciB0byBhdm9pZCBleHBsaWNpdCBlcnJvciBjaGVja2luZyAoTHl1ZGUpCj4gPiAqIFJlYmFz ZSBvbiBkcm0tdGlwIChNYW5hc2kpCj4gPiAKPiA+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28u dml2aUBpbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50 ZWwuY29tPgo+ID4gQ2M6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gPiBTaWduZWQt b2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gLS0t Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAxMDcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg ICAgIHwgICAzICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAg IDMgKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBpbmRleCAx MjliOWE2ZjgzMDkuLjU4ZjY2MzZmZmZlYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+ID4gQEAgLTUwODYsNiArNTA4NiwxMDYgQEAgc3RhdGljIGludCBpOTE1X2hk Y3Bfc2lua19jYXBhYmlsaXR5X3Nob3coc3RydWN0Cj4gPiBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKPiA+ICB9Cj4gPiAgREVGSU5FX1NIT1dfQVRUUklCVVRFKGk5MTVfaGRjcF9zaW5rX2NhcGFi aWxpdHkpOwo+ID4gIAo+ID4gK3N0YXRpYyBpbnQgaTkxNV9kc2NfZmVjX3N1cHBvcnRfc2hvdyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gbS0+cHJpdmF0ZTsKPiA+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiAr CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4gPiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1 aXJlX2N0eCBjdHg7Cj4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0g TlVMTDsKPiA+ICsJaW50IHJldCA9IDA7Cj4gPiArCWJvb2wgdHJ5X2FnYWluID0gZmFsc2U7Cj4g PiArCj4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCBEUk1fTU9ERVNFVF9BQ1FV SVJFX0lOVEVSUlVQVElCTEUpOwo+ID4gKwo+ID4gKwlkbyB7Cj4gPiArCQlyZXQgPSBkcm1fbW9k ZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsCj4gPiArCQkJCSAg ICAgICAmY3R4KTsKPiA+ICsJCWlmIChyZXQpIHsKPiA+ICsJCQlyZXQgPSAtRUlOVFI7Cj4gPiAr CQkJYnJlYWs7Cj4gPiArCQl9Cj4gPiArCQljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsK PiA+ICsJCWlmIChjb25uZWN0b3ItPnN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZCB8fCAhY3J0YykKPiA+IHsKPiA+ICsJCQlyZXQgPSAtRU5PREVWOwo+ID4gKwkJCWJyZWFrOwo+ ID4gKwkJfQo+ID4gKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsICZjdHgp Owo+ID4gKwkJaWYgKHJldCA9PSAtRURFQURMSykgewo+ID4gKwkJCXJldCA9IGRybV9tb2Rlc2V0 X2JhY2tvZmYoJmN0eCk7Cj4gPiArCQkJaWYgKCFyZXQpIHsKPiA+ICsJCQkJdHJ5X2FnYWluID0g dHJ1ZTsKPiA+ICsJCQkJY29udGludWU7Cj4gPiArCQkJfQo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJ fQo+ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlicmVhazsKPiBNYXliZSBtYXliZSBtYWtlIHRoaXM6 CgpDb29sIHdpbGwgZG8gYW5kIGFkZCB5b3VyIHItYgpUaGFua3MgZm9yIHRoZSByZXZpZXdzIQoK TWFuYXNpCgo+IAo+IH0gZWxzZSBpZiAocmV0KSB7Cj4gCWJyZWFrOwo+IH0KPiAKPiBKdXN0IGZv ciBjbGFyaXR5LiBXaXRoIHRoYXQgY2hhbmdlOgo+IAo+IFJldmlld2VkLWJ5OiBMeXVkZSBQYXVs IDxseXVkZUByZWRoYXQuY29tPgo+ID4gKwo+ID4gKwkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxf ZHAoJmludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVjdG9yKS0KPiA+ID5iYXNlKTsKPiA+ICsJ CWNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ICsJCXNl cV9wcmludGYobSwgIkRTQ19FbmFibGVkOiAlc1xuIiwKPiA+ICsJCQkgICB5ZXNubyhjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSkpOwo+ID4gKwkJaWYgKGludGVsX2Rw LT5kc2NfZHBjZCkKPiA+ICsJCQlzZXFfcHJpbnRmKG0sICJEU0NfU2lua19TdXBwb3J0OiAlc1xu IiwKPiA+ICsJCQkJICAgeWVzbm8oZHJtX2RwX3Npbmtfc3VwcG9ydHNfZHNjKGludGVsX2RwLQo+ ID4gPmRzY19kcGNkKSkpOwo+ID4gKwkJaWYgKCFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQo+ ID4gKwkJCXNlcV9wcmludGYobSwgIkZFQ19TaW5rX1N1cHBvcnQ6ICVzXG4iLAo+ID4gKwkJCQkg ICB5ZXNubyhkcm1fZHBfc2lua19zdXBwb3J0c19mZWMoaW50ZWxfZHAtCj4gPiA+ZmVjX2NhcGFi bGUpKSk7Cj4gPiArCX0gd2hpbGUgKHRyeV9hZ2Fpbik7Cj4gPiArCj4gPiArCWRybV9tb2Rlc2V0 X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsK PiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHNzaXplX3Qg aTkxNV9kc2NfZmVjX3N1cHBvcnRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4gPiArCQkJCQkg IGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAo+ID4gKwkJCQkJICBzaXplX3QgbGVuLCBsb2ZmX3Qg Km9mZnApCj4gPiArewo+ID4gKwlib29sIGRzY19lbmFibGUgPSBmYWxzZTsKPiA+ICsJaW50IHJl dDsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9Cj4gPiArCQkoKHN0cnVj dCBzZXFfZmlsZSAqKWZpbGUtPnByaXZhdGVfZGF0YSktPnByaXZhdGU7Cj4gPiArCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyID0gaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3Ip Owo+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNv ZGVyLT5iYXNlKTsKPiA+ICsKPiA+ICsJaWYgKGxlbiA9PSAwKQo+ID4gKwkJcmV0dXJuIDA7Cj4g PiArCj4gPiArCURSTV9ERUJVR19EUklWRVIoIkNvcGllZCAlenUgYnl0ZXMgZnJvbSB1c2VyIHRv IGZvcmNlIERTQ1xuIiwKPiA+ICsJCQkgbGVuKTsKPiA+ICsKPiA+ICsJcmV0ID0ga3N0cnRvYm9v bF9mcm9tX3VzZXIodWJ1ZiwgbGVuLCAmZHNjX2VuYWJsZSk7Cj4gPiArCWlmIChyZXQgPCAwKQo+ ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsJRFJNX0RFQlVHX0RSSVZFUigiR290ICVzIGZv ciBEU0MgRW5hYmxlXG4iLAo+ID4gKwkJCSAoZHNjX2VuYWJsZSkgPyAidHJ1ZSIgOiAiZmFsc2Ui KTsKPiA+ICsJaW50ZWxfZHAtPmZvcmNlX2RzY19lbiA9IGRzY19lbmFibGU7Cj4gPiArCj4gPiAr CSpvZmZwICs9IGxlbjsKPiA+ICsJcmV0dXJuIGxlbjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IGludCBpOTE1X2RzY19mZWNfc3VwcG9ydF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAr CQkJCSAgICAgc3RydWN0IGZpbGUgKmZpbGUpCj4gPiArewo+ID4gKwlyZXR1cm4gc2luZ2xlX29w ZW4oZmlsZSwgaTkxNV9kc2NfZmVjX3N1cHBvcnRfc2hvdywKPiA+ICsJCQkgICBpbm9kZS0+aV9w cml2YXRlKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgaTkxNV9kc2NfZmVjX3N1cHBvcnRfZm9wcyA9IHsKPiA+ICsJLm93bmVyID0gVEhJU19N T0RVTEUsCj4gPiArCS5vcGVuID0gaTkxNV9kc2NfZmVjX3N1cHBvcnRfb3BlbiwKPiA+ICsJLnJl YWQgPSBzZXFfcmVhZCwKPiA+ICsJLmxsc2VlayA9IHNlcV9sc2VlaywKPiA+ICsJLnJlbGVhc2Ug PSBzaW5nbGVfcmVsZWFzZSwKPiA+ICsJLndyaXRlID0gaTkxNV9kc2NfZmVjX3N1cHBvcnRfd3Jp dGUKPiA+ICt9Owo+ID4gKwo+ID4gIC8qKgo+ID4gICAqIGk5MTVfZGVidWdmc19jb25uZWN0b3Jf YWRkIC0gYWRkIGk5MTUgc3BlY2lmaWMgY29ubmVjdG9yIGRlYnVnZnMgZmlsZXMKPiA+ICAgKiBA Y29ubmVjdG9yOiBwb2ludGVyIHRvIGEgcmVnaXN0ZXJlZCBkcm1fY29ubmVjdG9yCj4gPiBAQCAt NTA5OCw2ICs1MTk4LDcgQEAgREVGSU5FX1NIT1dfQVRUUklCVVRFKGk5MTVfaGRjcF9zaW5rX2Nh cGFiaWxpdHkpOwo+ID4gIGludCBpOTE1X2RlYnVnZnNfY29ubmVjdG9yX2FkZChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRlbnRyeSAqcm9vdCA9 IGNvbm5lY3Rvci0+ZGVidWdmc19lbnRyeTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmRldik7Cj4gPiAgCj4gPiAgCS8qIFRoZSBj b25uZWN0b3IgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBiZWZvcmVoYW5kcy4gKi8KPiA+ICAJ aWYgKCFyb290KQo+ID4gQEAgLTUxMjIsNSArNTIyMywxMSBAQCBpbnQgaTkxNV9kZWJ1Z2ZzX2Nv bm5lY3Rvcl9hZGQoc3RydWN0IGRybV9jb25uZWN0b3IKPiA+ICpjb25uZWN0b3IpCj4gPiAgCQkJ CSAgICBjb25uZWN0b3IsCj4gPiAmaTkxNV9oZGNwX3NpbmtfY2FwYWJpbGl0eV9mb3BzKTsKPiA+ ICAJfQo+ID4gIAo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCAmJgo+ID4gKwkg ICAgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3Bs YXlQb3J0IHx8Cj4gPiArCSAgICAgY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9E RV9DT05ORUNUT1JfZURQKSkKPiA+ICsJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImk5MTVfZHNjX2Zl Y19zdXBwb3J0IiwgU19JUlVHTywgcm9vdCwKPiA+ICsJCQkJICAgIGNvbm5lY3RvciwgJmk5MTVf ZHNjX2ZlY19zdXBwb3J0X2ZvcHMpOwo+ID4gKwo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCBhNjkwN2ExNzYxYWIuLjJlMzA5N2Nh ZTI3NyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IEBAIC0yMDUxLDcgKzIw NTEsOCBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVy Cj4gPiAqZW5jb2RlciwKPiA+ICAJCQkJCQkJJmxpbWl0cyk7Cj4gPiAgCj4gPiAgCS8qIGVuYWJs ZSBjb21wcmVzc2lvbiBpZiB0aGUgbW9kZSBkb2Vzbid0IGZpdCBhdmFpbGFibGUgQlcgKi8KPiA+ IC0JaWYgKCFyZXQpIHsKPiA+ICsJRFJNX0RFQlVHX0tNUygiRm9yY2UgRFNDIGVuID0gJWRcbiIs IGludGVsX2RwLT5mb3JjZV9kc2NfZW4pOwo+ID4gKwlpZiAoIXJldCB8fCBpbnRlbF9kcC0+Zm9y Y2VfZHNjX2VuKSB7Cj4gPiAgCQlpZiAoIWludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhpbnRl bF9kcCwgcGlwZV9jb25maWcsCj4gPiAgCQkJCQkJIGNvbm5fc3RhdGUsICZsaW1pdHMpKQo+ID4g IAkJCXJldHVybiBmYWxzZTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5k ZXggZjk0YTA0YjRhZDg3Li4wY2VkY2U0Mzg0MzMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+IEBAIC0xMjA5LDYgKzEyMDksOSBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+ID4g IAo+ID4gIAkvKiBEaXNwbGF5cG9ydCBjb21wbGlhbmNlIHRlc3RpbmcgKi8KPiA+ICAJc3RydWN0 IGludGVsX2RwX2NvbXBsaWFuY2UgY29tcGxpYW5jZTsKPiA+ICsKPiA+ICsJLyogRGlzcGxheSBz dHJlYW0gY29tcHJlc3Npb24gdGVzdGluZyAqLwo+ID4gKwlib29sIGZvcmNlX2RzY19lbjsKPiA+ ICB9Owo+ID4gIAo+ID4gIGVudW0gbHNwY29uX3ZlbmRvciB7Cj4gLS0gCj4gQ2hlZXJzLAo+IAlM eXVkZSBQYXVsCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=