From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/i915: Seal busy-ioctl uABI and prevent leaking of internal ids Date: Thu, 21 Jan 2016 11:38:09 +0100 Message-ID: <20160121103809.GN19130@phenom.ffwll.local> References: <1452856013-29728-1-git-send-email-chris@chris-wilson.co.uk> <1452876706-21620-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f48.google.com (mail-wm0-f48.google.com [74.125.82.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id 607976EA73 for ; Thu, 21 Jan 2016 02:38:04 -0800 (PST) Received: by mail-wm0-f48.google.com with SMTP id r129so166257499wmr.0 for ; Thu, 21 Jan 2016 02:38:04 -0800 (PST) Content-Disposition: inline In-Reply-To: <1452876706-21620-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMTUsIDIwMTYgYXQgMDQ6NTE6NDZQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFR2cnRrbyB3YXMgbG9va2luZyB0aHJvdWdoIHRoZSBleGVjYnVmZmVyLWlvY3RsIGFu ZCBub3RpY2VkIHRoYXQgdGhlCj4gdUFCSSB3YXMgdGlnaHRseSBjb3VwbGVkIHRvIG91ciBpbnRl cm5hbCBlbmdpbmUgaWRlbnRpZmllcnMuIENsb3NlCj4gaW5zcGVjdGlvbiBhbHNvIHJldmVhbGVk IHRoYXQgd2UgbGVhayB0aG9zZSBpbnRlcm5hbCBlbmdpbmUgaWRlbnRpZmllcnMKPiB0aHJvdWdo IHRoZSBidXN5LWlvY3RsLCBhbmQgdGhvc2UgaW50ZXJuYWwgaWRlbnRpZmllcnMgYWxyZWFkeSBk byBub3QKPiBtYXRjaCB0aGUgdXNlciBpZGVudGlmaWVycy4gRm9ydHVpdGlvdXNseSwgdGhlcmUg aXMgb25seSBvbmUgdXNlciBvZiB0aGUKPiBzZXQgb2YgYnVzeSByaW5ncyBmcm9tIHRoZSBidXN5 LWlvY3RsLCBhbmQgdGhleSBvbmx5IHdpc2ggdG8gY2hvb3NlCj4gYmV0d2VlbiB0aGUgUkVOREVS IGFuZCB0aGUgQkxUIGVuZ2luZXMuCj4gCj4gTGV0J3MgZml4IHRoZSB1c2Vyc3BhY2UgQUJJIHdo aWxlIHdlIHN0aWxsIGNhbi4KPiAKPiB2MjogVXBkYXRlIHRoZSB1QVBJIGRvY3VtZW50YXRpb24g dG8gZXhwbGFpbiB0aGUgaWRlbnRpZmllcnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+Cj4gUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+CgpBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5j aD4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMTgg KysrKysrKysrKysrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAg ICAgICB8ICA1ICsrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyB8ICA1ICsrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8 ICAxICsKPiAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwgMzMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgNTQgaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBp bmRleCBiYjQ0YmFkMTU0MDMuLjg1Nzk3ODEzYTNkZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IEBAIC00MzI4LDEwICs0MzI4LDIwIEBAIGk5MTVfZ2VtX2J1c3lfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCWlmIChyZXQpCj4gIAkJZ290byB1bnJl ZjsKPiAgCj4gLQlCVUlMRF9CVUdfT04oSTkxNV9OVU1fUklOR1MgPiAxNik7Cj4gLQlhcmdzLT5i dXN5ID0gb2JqLT5hY3RpdmUgPDwgMTY7Cj4gLQlpZiAob2JqLT5sYXN0X3dyaXRlX3JlcSkKPiAt CQlhcmdzLT5idXN5IHw9IG9iai0+bGFzdF93cml0ZV9yZXEtPnJpbmctPmlkOwo+ICsJYXJncy0+ YnVzeSA9IDA7Cj4gKwlpZiAob2JqLT5hY3RpdmUpIHsKPiArCQlpbnQgaTsKPiArCj4gKwkJZm9y IChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKPiArCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gKwo+ICsJCQlyZXEgPSBvYmotPmxhc3RfcmVhZF9yZXFbaV07 Cj4gKwkJCWlmIChyZXEpCj4gKwkJCQlhcmdzLT5idXN5IHw9IDEgPDwgKDE2ICsgcmVxLT5yaW5n LT5leGVjX2lkKTsKPiArCQl9Cj4gKwkJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEpCj4gKwkJCWFy Z3MtPmJ1c3kgfD0gb2JqLT5sYXN0X3dyaXRlX3JlcS0+cmluZy0+ZXhlY19pZDsKPiArCX0KPiAg Cj4gIHVucmVmOgo+ICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBmNWQ4OWM4NDVlZGUuLjRhYTIwOTQ4MzIz NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTIwMjQsNiArMjAyNCw3IEBA IHN0YXRpYyBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAo+ICAJcmluZy0+bmFtZSA9ICJyZW5kZXIgcmluZyI7Cj4gIAlyaW5nLT5pZCA9IFJD UzsKPiArCXJpbmctPmV4ZWNfaWQgPSBJOTE1X0VYRUNfUkVOREVSOwo+ICAJcmluZy0+bW1pb19i YXNlID0gUkVOREVSX1JJTkdfQkFTRTsKPiAgCj4gIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFz KHJpbmcsIEdFTjhfUkNTX0lSUV9TSElGVCk7Cj4gQEAgLTIwNzMsNiArMjA3NCw3IEBAIHN0YXRp YyBpbnQgbG9naWNhbF9ic2RfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ ICAJcmluZy0+bmFtZSA9ICJic2QgcmluZyI7Cj4gIAlyaW5nLT5pZCA9IFZDUzsKPiArCXJpbmct PmV4ZWNfaWQgPSBJOTE1X0VYRUNfQlNEOwo+ICAJcmluZy0+bW1pb19iYXNlID0gR0VONl9CU0Rf UklOR19CQVNFOwo+ICAKPiAgCWxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMocmluZywgR0VOOF9W Q1MxX0lSUV9TSElGVCk7Cj4gQEAgLTIwODgsNiArMjA5MCw3IEBAIHN0YXRpYyBpbnQgbG9naWNh bF9ic2QyX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCXJpbmctPm5h bWUgPSAiYnNkMiByaW5nIjsKPiAgCXJpbmctPmlkID0gVkNTMjsKPiArCXJpbmctPmV4ZWNfaWQg PSBJOTE1X0VYRUNfQlNEOwo+ICAJcmluZy0+bW1pb19iYXNlID0gR0VOOF9CU0QyX1JJTkdfQkFT RTsKPiAgCj4gIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKHJpbmcsIEdFTjhfVkNTMl9JUlFf U0hJRlQpOwo+IEBAIC0yMTAzLDYgKzIxMDYsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfYmx0X3Jp bmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCXJpbmctPm5hbWUgPSAiYmxp dHRlciByaW5nIjsKPiAgCXJpbmctPmlkID0gQkNTOwo+ICsJcmluZy0+ZXhlY19pZCA9IEk5MTVf RVhFQ19CTFQ7Cj4gIAlyaW5nLT5tbWlvX2Jhc2UgPSBCTFRfUklOR19CQVNFOwo+ICAKPiAgCWxv Z2ljYWxfcmluZ19kZWZhdWx0X2lycXMocmluZywgR0VOOF9CQ1NfSVJRX1NISUZUKTsKPiBAQCAt MjExOCw2ICsyMTIyLDcgQEAgc3RhdGljIGludCBsb2dpY2FsX3ZlYm94X3JpbmdfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCXJpbmctPm5hbWUgPSAidmlkZW8gZW5oYW5jZW1l bnQgcmluZyI7Cj4gIAlyaW5nLT5pZCA9IFZFQ1M7Cj4gKwlyaW5nLT5leGVjX2lkID0gSTkxNV9F WEVDX1ZFQk9YOwo+ICAJcmluZy0+bW1pb19iYXNlID0gVkVCT1hfUklOR19CQVNFOwo+ICAKPiAg CWxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMocmluZywgR0VOOF9WRUNTX0lSUV9TSElGVCk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDhjZDhhYWJjYzNm Zi4uMzEwZDE1MWMwZGIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwo+IEBAIC0yNjgwLDYgKzI2ODAsNyBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19i dWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlyaW5nLT5uYW1lID0gInJlbmRl ciByaW5nIjsKPiAgCXJpbmctPmlkID0gUkNTOwo+ICsJcmluZy0+ZXhlY19pZCA9IEk5MTVfRVhF Q19SRU5ERVI7Cj4gIAlyaW5nLT5tbWlvX2Jhc2UgPSBSRU5ERVJfUklOR19CQVNFOwo+ICAKPiAg CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gQEAgLTI4MjgsNiArMjgyOSw3IEBA IGludCBpbnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAKPiAgCXJpbmctPm5hbWUgPSAiYnNkIHJpbmciOwo+ICAJcmluZy0+aWQgPSBWQ1M7Cj4gKwly aW5nLT5leGVjX2lkID0gSTkxNV9FWEVDX0JTRDsKPiAgCj4gIAlyaW5nLT53cml0ZV90YWlsID0g cmluZ193cml0ZV90YWlsOwo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiBA QCAtMjkwNCw2ICsyOTA2LDcgQEAgaW50IGludGVsX2luaXRfYnNkMl9yaW5nX2J1ZmZlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCXJpbmctPm5hbWUgPSAiYnNkMiByaW5nIjsKPiAg CXJpbmctPmlkID0gVkNTMjsKPiArCXJpbmctPmV4ZWNfaWQgPSBJOTE1X0VYRUNfQlNEOwo+ICAK PiAgCXJpbmctPndyaXRlX3RhaWwgPSByaW5nX3dyaXRlX3RhaWw7Cj4gIAlyaW5nLT5tbWlvX2Jh c2UgPSBHRU44X0JTRDJfUklOR19CQVNFOwo+IEBAIC0yOTM0LDYgKzI5MzcsNyBAQCBpbnQgaW50 ZWxfaW5pdF9ibHRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAly aW5nLT5uYW1lID0gImJsaXR0ZXIgcmluZyI7Cj4gIAlyaW5nLT5pZCA9IEJDUzsKPiArCXJpbmct PmV4ZWNfaWQgPSBJOTE1X0VYRUNfQkxUOwo+ICAKPiAgCXJpbmctPm1taW9fYmFzZSA9IEJMVF9S SU5HX0JBU0U7Cj4gIAlyaW5nLT53cml0ZV90YWlsID0gcmluZ193cml0ZV90YWlsOwo+IEBAIC0y OTkxLDYgKzI5OTUsNyBAQCBpbnQgaW50ZWxfaW5pdF92ZWJveF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCXJpbmctPm5hbWUgPSAidmlkZW8gZW5oYW5jZW1lbnQg cmluZyI7Cj4gIAlyaW5nLT5pZCA9IFZFQ1M7Cj4gKwlyaW5nLT5leGVjX2lkID0gSTkxNV9FWEVD X1ZFQk9YOwo+ICAKPiAgCXJpbmctPm1taW9fYmFzZSA9IFZFQk9YX1JJTkdfQkFTRTsKPiAgCXJp bmctPndyaXRlX3RhaWwgPSByaW5nX3dyaXRlX3RhaWw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDczNDlkOTI1ODE5MS4uMjA2N2Y0NzAwY2FhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xNTYsNiArMTU2 LDcgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVfY3Mgewo+ICAJfSBpZDsKPiAgI2RlZmluZSBJOTE1 X05VTV9SSU5HUyA1Cj4gICNkZWZpbmUgTEFTVF9VU0VSX1JJTkcgKFZFQ1MgKyAxKQo+ICsJdW5z aWduZWQgaW50IGV4ZWNfaWQ7Cj4gIAl1MzIJCW1taW9fYmFzZTsKPiAgCXN0cnVjdAkJZHJtX2Rl dmljZSAqZGV2Owo+ICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKmJ1ZmZlcjsKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCj4gaW5kZXggYWNmMjEwMjZjNzhhLi42YTE5MzcxMzkxZmEgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCj4gQEAgLTgxMiwxMCArODEyLDM1IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSB7 Cj4gIAkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gY2hlY2sgZm9yIGJ1c3kgKi8KPiAgCV9f dTMyIGhhbmRsZTsKPiAgCj4gLQkvKiogUmV0dXJuIGJ1c3kgc3RhdHVzICgxIGlmIGJ1c3ksIDAg aWYgaWRsZSkuCj4gLQkgKiBUaGUgaGlnaCB3b3JkIGlzIHVzZWQgdG8gaW5kaWNhdGUgb24gd2hp Y2ggcmluZ3MgdGhlIG9iamVjdAo+IC0JICogY3VycmVudGx5IHJlc2lkZXM6Cj4gLQkgKiAgMTY6 MzEgLSBidXN5IChyIG9yIHIvdykgcmluZ3MgKDE2IHJlbmRlciwgMTcgYnNkLCAxOCBibHQsIGV0 YykKPiArCS8qKiBSZXR1cm4gYnVzeSBzdGF0dXMKPiArCSAqCj4gKwkgKiBBIHJldHVybiBvZiAw IGltcGxpZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGlkbGUgKGFmdGVyCj4gKwkgKiBoYXZpbmcgZmx1 c2hlZCBhbnkgcGVuZGluZyBhY3Rpdml0eSksIGFuZCBhIG5vbi16ZXJvIHJldHVybiB0aGF0Cj4g KwkgKiB0aGUgb2JqZWN0IGlzIHN0aWxsIGluLWZsaWdodCBvbiB0aGUgR1BVLiAoVGhlIEdQVSBo YXMgbm90IHlldAo+ICsJICogc2lnbmFsZWQgY29tcGxldGlvbiBmb3IgYWxsIHBlbmRpbmcgcmVx dWVzdHMgdGhhdCByZWZlcmVuY2UgdGhlCj4gKwkgKiBvYmplY3QuKQo+ICsJICoKPiArCSAqIFRo ZSByZXR1cm5lZCBkd29yZCBpcyBzcGxpdCBpbnRvIHR3byBmaWVsZHMgdG8gaW5kaWNhdGUgYm90 aAo+ICsJICogdGhlIGVuZ2luZXMgb24gd2hpY2ggdGhlIG9iamVjdCBpcyBiZWluZyByZWFkLCBh bmQgdGhlCj4gKwkgKiBlbmdpbmUgb24gd2hpY2ggaXQgaXMgY3VycmVudGx5IGJlaW5nIHdyaXR0 ZW4gKGlmIGFueSkuCj4gKwkgKgo+ICsJICogVGhlIGxvdyB3b3JkIChiaXRzIDA6MTUpIGluZGlj YXRlIGlmIHRoZSBvYmplY3QgaXMgYmVpbmcgd3JpdHRlbgo+ICsJICogdG8gYnkgYW55IGVuZ2lu ZSAodGhlcmUgY2FuIG9ubHkgYmUgb25lLCBhcyB0aGUgR0VNIGltcGxpY2l0Cj4gKwkgKiBzeW5j aHJvbmlzYXRpb24gcnVsZXMgZm9yY2Ugd3JpdGVzIHRvIGJlIHNlcmlhbGlzZWQpLiBPbmx5IHRo ZQo+ICsJICogZW5naW5lIGZvciB0aGUgbGFzdCB3cml0ZSBpcyByZXBvcnRlZC4KPiArCSAqCj4g KwkgKiBUaGUgaGlnaCB3b3JkIChiaXRzIDE2OjMxKSBhcmUgYSBiaXRtYXNrIG9mIHdoaWNoIGVu Z2luZXMgYXJlCj4gKwkgKiBjdXJyZW50bHkgcmVhZGluZyBmcm9tIHRoZSBvYmplY3QuIE11bHRp cGxlIGVuZ2luZXMgbWF5IGJlCj4gKwkgKiByZWFkaW5nIGZyb20gdGhlIG9iamVjdCBzaW11bHRh bmVvdXNseS4KPiArCSAqCj4gKwkgKiBUaGUgdmFsdWUgb2YgZWFjaCBlbmdpbmUgaXMgdGhlIHNh bWUgYXMgc3BlY2lmaWVkIGluIHRoZQo+ICsJICogRVhFQ0JVRkZFUjIgaW9jdGwsIGkuZS4gSTkx NV9FWEVDX1JFTkRFUiwgSTkxNV9FWEVDX0JTRCBldGMuCj4gKwkgKiBOb3RlIEk5MTVfRVhFQ19E RUZBVUxUIGlzIGEgc3ltYm9saWMgdmFsdWUgYW5kIGlzIG1hcHBlZCB0bwo+ICsJICogdGhlIEk5 MTVfRVhFQ19SRU5ERVIgZW5naW5lIGZvciBleGVjdXRpb24sIGFuZCBzbyBpdCBpcyBuZXZlcgo+ ICsJICogcmVwb3J0ZWQgYXMgYWN0aXZlIGl0c2VsZi4gU29tZSBoYXJkd2FyZSBtYXkgaGF2ZSBw YXJhbGxlbAo+ICsJICogZXhlY3V0aW9uIGVuZ2luZXMsIGUuZy4gbXVsdGlwbGUgbWVkaWEgZW5n aW5lcywgd2hpY2ggYXJlCj4gKwkgKiBtYXBwZWQgdG8gdGhlIHNhbWUgaWRlbnRpZmllciBpbiB0 aGUgRVhFQ0JVRkZFUjIgaW9jdGwgYW5kCj4gKwkgKiBzbyBhcmUgbm90IHNlcGFyYXRlbHkgcmVw b3J0ZWQgZm9yIGJ1c3luZXNzLgo+ICAJICovCj4gIAlfX3UzMiBidXN5Owo+ICB9Owo+IC0tIAo+ IDIuNy4wLnJjMwo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==