From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v5] drm/i915/icl: Enhanced execution list support Date: Fri, 19 Jan 2018 15:05:00 +0200 Message-ID: <87efmmhudf.fsf@gaia.fi.intel.com> References: <20180109232835.11478-1-paulo.r.zanoni@intel.com> <1516226034-2805-1-git-send-email-daniele.ceraolospurio@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 C81216E003 for ; Fri, 19 Jan 2018 13:05:12 +0000 (UTC) In-Reply-To: <1516226034-2805-1-git-send-email-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org Cc: Thomas Daniel , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4g d3JpdGVzOgoKPiBGcm9tOiBUaG9tYXMgRGFuaWVsIDx0aG9tYXMuZGFuaWVsQGludGVsLmNvbT4K Pgo+IEVuaGFuY2VkIEV4ZWNsaXN0cyBpcyBhbiB1cGdyYWRlZCB2ZXJzaW9uIG9mIGV4ZWNsaXN0 cyB3aGljaCBzdXBwb3J0cwo+IHVwIHRvIDggcG9ydHMuIFRoZSBscmNzIHRvIGJlIHN1Ym1pdHRl ZCBhcmUgd3JpdHRlbiB0byBhIHN1Ym1pdCBxdWV1ZSwKPiB3aGljaCBpcyB0aGVuIGxvYWRlZCBv biB0aGUgSFcuIFdoZW4gd3JpdGluZyB0byB0aGUgRUxTUCByZWdpc3RlciwgdGhlCj4gbHJjcyBh cmUgd3JpdHRlbiBjeWNsaWNhbGx5IGluIHRoZSBxdWV1ZSBmcm9tIHBvc2l0aW9uIDAgdG8gcG9z aXRpb24gNy4KPiBBbHRlcm5hdGl2ZWx5LCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBkaXJlY3Rs eSBpbiB0aGUgaW5kaXZpZHVhbAo+IHBvc2l0aW9ucyBvZiB0aGUgcXVldWUgdXNpbmcgdGhlIEVM U1EgcmVnaXN0ZXJzLiBUbyBiZSBhYmxlIHRvIHJlLXVzZQo+IGFsbCB0aGUgZXhpc3RpbmcgY29k ZSB3ZSdyZSB1c2luZyB0aGUgbGF0dGVyIG1ldGhvZCBhbmQgd2UncmUgY3VycmVudGx5Cj4gbGlt aXRpbmcgb3Vyc2VsZiB0byBvbmx5IHVzaW5nIDIgZWxlbWVudHMuCj4KPiBUaGUgcHJlZW1wdGlv biBmbG93IGlzIHNsaWd0aGx5IGRpZmZlcmVudCB3aXRoIGVuaGFuY2VkIGV4ZWNsaXN0cywgc28K PiB0aGlzIHBhdGNoIHR1cm5zIHByZWVtcHRpb24gb2ZmIHRlbXBvcmFyaWx5IGZvciBHZW4xMSsg d2hpbGUgd2Ugd2FpdCBmb3IKPiB0aGUgbmV3IG1lY2hhbmlzbSB0byBsYW5kLgo+Cj4gdjI6IFJl YmFzZS4KPiB2MzogU3dpdGNoIGZyb20gIUlTX0dFTjExIHRvIEdFTiA8IDExIChEYW5pZWxlIENl cmFvbG8gU3B1cmlvKS4KPiB2NDogVXNlIHRoZSBlbHNxIHJlZ2lzdGVycyBpbnN0ZWFkIG9mIGVs c3AuIChEYW5pZWxlIENlcmFvbG8gU3B1cmlvKQo+IHY1OiBSZXdvcmQgY29tbWl0LCByZW5hbWUg cmVncyB0byBiZSBjbG9zZXIgdG8gc3BlY3MsIHR1cm4gb2ZmCj4gICAgIHByZWVtcHRpb24gKERh bmllbGUpLCByZXVzZSBlbmdpbmUtPmV4ZWNsaXN0cy5lbHNwIChDaHJpcykKPgo+IENjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2ZmLWJ5OiBUaG9t YXMgRGFuaWVsIDx0aG9tYXMuZGFuaWVsQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBSb2Ry aWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVs ZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KCldhcyBn b2luZyB0byBhZG9wdCB0aGlzIHBhdGNoIGZyb20gUm9kcmlnbyBidXQgeW91IHdlcmUgZmFzdGVy LgoKSSBjaG9vc2UgdG8gc3Rhc2ggdGhlIGVsc3EgYW5kIHVzZSBpdCBhcyBhIGdlbjExIHZzIHJl c3QgdG9nZ2xlOgoKUmVsZXZhbnQgYml0czoKCitzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVfcG9y dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHU2NCBkZXNjKQoreworICAgICAgIGlmIChleGVjbGlzdHMtPmVsc3EpCisg ICAgICAgICAgICAgICBnZW4xMV9lbHNxX3dyaXRlKGRlc2MsIG4sIGV4ZWNsaXN0cy0+ZWxzcSk7 CisgICAgICAgZWxzZQorICAgICAgICAgICAgICAgZ2VuOF9lbHNwX3dyaXRlKGRlc2MsIGV4ZWNs aXN0cy0+ZWxzcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdWJtaXRfcG9ydHMoc3RydWN0 IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpCit7CisgICAgICAgLyog Zm9yIGdlbjExKyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGxvYWQgdGhlIHN1Ym1pdCBxdWV1ZSAqLwor ICAgICAgIGlmIChleGVjbGlzdHMtPmVsc3EpIHsKKyAgICAgICAgICAgICAgIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9v ZihleGVjbGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl Y2xpc3RzKTsKKyAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGVuZ2luZS0+aTkxNTsKKworICAgICAgICAgICAgICAgSTkxNV9XUklURV9GVyhSSU5HX0VM Q1IoZW5naW5lKSwgRUxDUl9MT0FEKTsKKyAgICAgICB9Cit9CisKCi4uLgotTWlrYQoKPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDUgKysrKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgMzUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5o ICAgICAgICB8ICAzICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggfCAgNiArKysrLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA4IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYzQyMDE1Yi4uMzE2 MzU0MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yNzM4LDggKzI3MzgsMTEg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV9zZ19zZWdtZW50X3NpemUodm9pZCkK PiAgCj4gICNkZWZpbmUgSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhkZXZfcHJpdikgXAo+ICAJ CSgoZGV2X3ByaXYpLT5pbmZvLmhhc19sb2dpY2FsX3JpbmdfY29udGV4dHMpCj4gKwo+ICsvKiBY WFg6IFByZWVtcHRpb24gZGlzYWJsZWQgZm9yIEdlbjExKyB1bnRpbCBzdXBwb3J0IGZvciBuZXcg ZmxvdyBsYW5kcyAqLwo+ICAjZGVmaW5lIEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihkZXZf cHJpdikgXAo+IC0JCSgoZGV2X3ByaXYpLT5pbmZvLmhhc19sb2dpY2FsX3JpbmdfcHJlZW1wdGlv bikKPiArCQkoKGRldl9wcml2KS0+aW5mby5oYXNfbG9naWNhbF9yaW5nX3ByZWVtcHRpb24gJiYg XAo+ICsJCSBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gIAo+ICAjZGVmaW5lIEhBU19FWEVD TElTVFMoZGV2X3ByaXYpIEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2X3ByaXYpCj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZmYyNWYyMC4uNjdhZDdjOSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTQyOCwxMSArNDI4LDI0IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBlbHNwX3dyaXRlKHU2NCBkZXNjLCB1MzIgX19pb21lbSAqZWxzcCkKPiAgCXdy aXRlbChsb3dlcl8zMl9iaXRzKGRlc2MpLCBlbHNwKTsKPiAgfQo+ICAKPiArc3RhdGljIGlubGlu ZSB2b2lkIGVsc3FjX3dyaXRlKHU2NCBkZXNjLCB1MzIgX19pb21lbSAqZWxzcWMsIHUzMiBwb3J0 KQo+ICt7Cj4gKwl3cml0ZWwobG93ZXJfMzJfYml0cyhkZXNjKSwgZWxzcWMgKyBwb3J0ICogMik7 Cj4gKwl3cml0ZWwodXBwZXJfMzJfYml0cyhkZXNjKSwgZWxzcWMgKyBwb3J0ICogMiArIDEpOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3BvcnRzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBl bmdpbmUtPmV4ZWNsaXN0cy5wb3J0Owo+ICAJdW5zaWduZWQgaW50IG47Cj4gIAo+ICsJLyoKPiAr CSAqIEdlbjExKyBub3RlOiB0aGUgc3VibWl0IHF1ZXVlIGlzIG5vdCBjbGVhcmVkIGFmdGVyIGJl aW5nIHN1Ym1pdHRlZAo+ICsJICogdG8gdGhlIEhXIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdl IGFsd2F5cyBjbGVhbiBpdCB1cC4gVGhpcyBpcwo+ICsJICogY3VycmVudGx5IGVuc3VyZWQgYnkg dGhlIGZhY3QgdGhhdCB3ZSBhbHdheXMgd3JpdGUgdGhlIHNhbWUgbnVtYmVyCj4gKwkgKiBvZiBl bHNxIGVudHJpZXMsIGtlZXAgdGhpcyBpbiBtaW5kIGJlZm9yZSBjaGFuZ2luZyB0aGUgbG9vcCBi ZWxvdy4KPiArCSAqLwo+ICAJZm9yIChuID0gZXhlY2xpc3RzX251bV9wb3J0cygmZW5naW5lLT5l eGVjbGlzdHMpOyBuLS07ICkgewo+ICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7 Cj4gIAkJdW5zaWduZWQgaW50IGNvdW50Owo+IEBAIC00NTYsOCArNDY5LDE2IEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAJCQlkZXNjID0gMDsKPiAgCQl9Cj4gIAo+IC0JCWVsc3Bfd3JpdGUoZGVzYywgZW5naW5l LT5leGVjbGlzdHMuZWxzcCk7Cj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4g KwkJCWVsc3FjX3dyaXRlKGRlc2MsIGVuZ2luZS0+ZXhlY2xpc3RzLmVscywgbik7Cj4gKwkJZWxz ZQo+ICsJCQllbHNwX3dyaXRlKGRlc2MsIGVuZ2luZS0+ZXhlY2xpc3RzLmVscyk7Cj4gIAl9Cj4g Kwo+ICsJLyogZm9yIGdlbjExKyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGxvYWQgdGhlIHN1Ym1pdCBx dWV1ZSAqLwo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gKwkJSTkxNV9XUklU RV9GVyhSSU5HX0VYRUNMSVNUX0NPTlRST0woZW5naW5lKSwgRUxfQ1RSTF9MT0FEKTsKPiArCj4g IAlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKCZlbmdpbmUtPmV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FD VElWRV9IV0FDSyk7Cj4gIH0KPiAgCj4gQEAgLTUwNiw5ICs1MjcsOSBAQCBzdGF0aWMgdm9pZCBp bmplY3RfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg Cj4gIAlHRU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ICAJZm9yIChuID0gZXhlY2xp c3RzX251bV9wb3J0cygmZW5naW5lLT5leGVjbGlzdHMpOyAtLW47ICkKPiAtCQllbHNwX3dyaXRl KDAsIGVuZ2luZS0+ZXhlY2xpc3RzLmVsc3ApOwo+ICsJCWVsc3Bfd3JpdGUoMCwgZW5naW5lLT5l eGVjbGlzdHMuZWxzKTsKPiAgCj4gLQllbHNwX3dyaXRlKGNlLT5scmNfZGVzYywgZW5naW5lLT5l eGVjbGlzdHMuZWxzcCk7Cj4gKwllbHNwX3dyaXRlKGNlLT5scmNfZGVzYywgZW5naW5lLT5leGVj bGlzdHMuZWxzKTsKPiAgCWV4ZWNsaXN0c19jbGVhcl9hY3RpdmUoJmVuZ2luZS0+ZXhlY2xpc3Rz LCBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsKPiAgfQo+ICAKPiBAQCAtMjAxNiw4ICsyMDM3LDEy IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGVycm9yOwo+ICAKPiAtCWVuZ2luZS0+ZXhl Y2xpc3RzLmVsc3AgPQo+IC0JCWVuZ2luZS0+aTkxNS0+cmVncyArIGk5MTVfbW1pb19yZWdfb2Zm c2V0KFJJTkdfRUxTUChlbmdpbmUpKTsKPiArCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+ PSAxMSkKPiArCQllbmdpbmUtPmV4ZWNsaXN0cy5lbHMgPSBlbmdpbmUtPmk5MTUtPnJlZ3MgKwo+ ICsJCQlpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0VYRUNMSVNUX1NRX0NPTlRFTlRTKGVuZ2lu ZSkpOwo+ICsJZWxzZQo+ICsJCWVuZ2luZS0+ZXhlY2xpc3RzLmVscyA9IGVuZ2luZS0+aTkxNS0+ cmVncyArCj4gKwkJCWk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfRUxTUChlbmdpbmUpKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiBpbmRleCA2ZDRm OWI5Li4zYWI0MjY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiBAQCAtMzgsNiAr MzgsOSBAQAo+ICAjZGVmaW5lCSAgQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQJ KDEgPDwgMCkKPiAgI2RlZmluZSAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUgICAgICAgICAgICAg ICAgKDEgPDwgMSkKPiAgI2RlZmluZSBSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9CQVNFKGVuZ2lu ZSkJX01NSU8oKGVuZ2luZSktPm1taW9fYmFzZSArIDB4MzcwKQo+ICsjZGVmaW5lIFJJTkdfRVhF Q0xJU1RfU1FfQ09OVEVOVFMoZW5naW5lKQlfTU1JTygoZW5naW5lKS0+bW1pb19iYXNlICsgMHg1 MTApCj4gKyNkZWZpbmUgUklOR19FWEVDTElTVF9DT05UUk9MKGVuZ2luZSkJCV9NTUlPKChlbmdp bmUpLT5tbWlvX2Jhc2UgKyAweDU1MCkKPiArI2RlZmluZQkgIEVMX0NUUkxfTE9BRAkJCQkoMSA8 PCAwKQo+ICAjZGVmaW5lIFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGX0xPKGVuZ2luZSwgaSkJX01N SU8oKGVuZ2luZSktPm1taW9fYmFzZSArIDB4MzcwICsgKGkpICogOCkKPiAgI2RlZmluZSBSSU5H X0NPTlRFWFRfU1RBVFVTX0JVRl9ISShlbmdpbmUsIGkpCV9NTUlPKChlbmdpbmUpLT5tbWlvX2Jh c2UgKyAweDM3MCArIChpKSAqIDggKyA0KQo+ICAjZGVmaW5lIFJJTkdfQ09OVEVYVF9TVEFUVVNf UFRSKGVuZ2luZSkJCV9NTUlPKChlbmdpbmUpLT5tbWlvX2Jhc2UgKyAweDNhMCkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggYzVmZjIwMy4uZDM2YmI3MyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMjAwLDkg KzIwMCwxMSBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyB7Cj4gIAlib29sIG5vX3By aW9saXN0Owo+ICAKPiAgCS8qKgo+IC0JICogQGVsc3A6IHRoZSBFeGVjTGlzdCBTdWJtaXNzaW9u IFBvcnQgcmVnaXN0ZXIKPiArCSAqIEBlbHM6IGdlbi1zcGVjaWZpYyBleGVjbGlzdCBzdWJtaXNz aW9uIHJlZ2lzdGVyCj4gKwkgKiBzZXQgdG8gdGhlIEV4ZWNMaXN0IFN1Ym1pc3Npb24gUG9ydCAo ZWxzcCkgcmVnaXN0ZXIgcHJlLUdlbjExIGFuZCB0bwo+ICsJICogdGhlIEV4ZWNMaXN0IFN1Ym1p c3Npb24gUXVldWUgQ29udGVudHMgcmVnaXN0ZXIgYXJyYXkgZm9yIEdlbjExKwo+ICAJICovCj4g LQl1MzIgX19pb21lbSAqZWxzcDsKPiArCXUzMiBfX2lvbWVtICplbHM7Cj4gIAo+ICAJLyoqCj4g IAkgKiBAcG9ydDogZXhlY2xpc3QgcG9ydCBzdGF0ZXMKPiAtLSAKPiAxLjkuMQo+Cj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=