From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/i915: Move user fault tracking to a separate list Date: Thu, 13 Oct 2016 16:40:40 +0200 Message-ID: <20161013144040.GB20761@phenom.ffwll.local> References: <20161011132524.GC20761@phenom.ffwll.local> <20161011143759.28052-1-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-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A3FB6EAB6 for ; Thu, 13 Oct 2016 14:40:46 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id x23so7291296lfi.1 for ; Thu, 13 Oct 2016 07:40:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20161011143759.28052-1-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgMDM6Mzc6NTdQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdlIHdhbnQgdG8gZGVjb3VwbGUgUlBNIGFuZCBzdHJ1Y3RfbXV0ZXgsIGJ1dCBjdXJy ZW50bHkgUlBNIGhhcyB0byB3YWxrCj4gdGhlIGxpc3Qgb2YgYm91bmQgb2JqZWN0cyBhbmQgcmVt b3ZlIHVzZXJzcGFjZSBtbWFwcGluZyBiZWZvcmUgd2UKPiBzdXNwZW5kIChvdGhlcndpc2UgdXNl cnNwYWNlIG1heSBjb250aW51ZSB0byBhY2Nlc3MgdGhlIEdUVCB3aGlsc3QgaXQgaXMKPiBwb3dl cmVkIGRvd24pLiBUaGlzIGN1cnJlbnRseSByZXF1aXJlcyB0aGUgc3RydWN0X211dGV4IHRvIHdh bGsgdGhlCj4gYm91bmRfbGlzdCwgYnV0IGlmIHdlIG1vdmUgdGhhdCB0byBhIHNlcGFyYXRlIGxp c3QgYW5kIGxvY2sgd2UgY2FuIHRha2UKPiB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHJlbW92aW5n IHRoZSBzdHJ1Y3RfbXV0ZXguCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgfCAgNCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgfCAyMCArKysrKysrKysrKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgfCAgMiArLQo+ICA0IGZpbGVz IGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMzU4NjYzZTgzM2Q2Li5kNGVjYzUyODNjMmEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xODYsMTEgKzE4Niwx MSBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICAJfQo+ICAJaWYgKG9iai0+c3RvbGVuKQo+ICAJCXNlcV9wcmludGYo bSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0KTsKPiAtCWlmIChvYmot PnBpbl9kaXNwbGF5IHx8IG9iai0+ZmF1bHRfbWFwcGFibGUpIHsKPiArCWlmIChvYmotPnBpbl9k aXNwbGF5IHx8ICFsaXN0X2VtcHR5KCZvYmotPnVzZXJmYXVsdF9saW5rKSkgewo+ICAJCWNoYXIg c1szXSwgKnQgPSBzOwo+ICAJCWlmIChvYmotPnBpbl9kaXNwbGF5KQo+ICAJCQkqdCsrID0gJ3An Owo+IC0JCWlmIChvYmotPmZhdWx0X21hcHBhYmxlKQo+ICsJCWlmICghbGlzdF9lbXB0eSgmb2Jq LT51c2VyZmF1bHRfbGluaykpCj4gIAkJCSp0KysgPSAnZic7Cj4gIAkJKnQgPSAnXDAnOwo+ICAJ CXNlcV9wcmludGYobSwgIiAoJXMgbWFwcGFibGUpIiwgcyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gaW5kZXggYmYzOTdiNjQzY2MwLi43MmIzMTI2YzZjNzQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBAQCAtMTM1OSw2ICsxMzU5LDE0IEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7 Cj4gIAkgKi8KPiAgCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0Owo+ICAKPiArCS8qKiBQ cm90ZWN0cyBhY2Nlc3MgdG8gdGhlIHVzZXJmYXVsdF9saXN0ICovCj4gKwlzcGlubG9ja190IHVz ZXJmYXVsdF9sb2NrOwo+ICsKPiArCS8qKiBMaXN0IG9mIGFsbCBvYmplY3RzIGluIGd0dF9zcGFj ZSwgY3VycmVudGx5IG1tYXBlZCBieSB1c2Vyc3BhY2UuCj4gKwkgKiBBbGwgb2JqZWN0cyB3aXRo aW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBvbiBib3VuZF9saXN0Lgo+ICsJICovCj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIHVzZXJmYXVsdF9saXN0Owo+ICsKPiAgCS8qKiBVc2FibGUgcG9ydGlvbiBv ZiB0aGUgR1RUIGZvciBHRU0gKi8KPiAgCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7IC8qIGxp bWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwo+ICAKPiBAQCAtMjIxNSw2ICsyMjIzLDEx IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPiAgCXN0cnVjdCBkcm1fbW1fbm9kZSAq c3RvbGVuOwo+ICAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlzdDsKPiAgCj4gKwkvKioKPiAr CSAqIFdoZXRoZXIgdGhlIG9iamVjdCBpcyBjdXJyZW50bHkgaW4gdGhlIEdHVFQgbW1hcC4KPiAr CSAqLwo+ICsJc3RydWN0IGxpc3RfaGVhZCB1c2VyZmF1bHRfbGluazsKPiArCj4gIAkvKiogVXNl ZCBpbiBleGVjYnVmIHRvIHRlbXBvcmFyaWx5IGhvbGQgYSByZWYgKi8KPiAgCXN0cnVjdCBsaXN0 X2hlYWQgb2JqX2V4ZWNfbGluazsKPiAgCj4gQEAgLTIyNDIsMTMgKzIyNTUsNiBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gIAkgKi8KPiAgCXVuc2lnbmVkIGludCBtYWR2OjI7Cj4g IAo+IC0JLyoqCj4gLQkgKiBXaGV0aGVyIHRoZSBjdXJyZW50IGd0dCBtYXBwaW5nIG5lZWRzIHRv IGJlIG1hcHBhYmxlIChhbmQgaXNuJ3QganVzdAo+IC0JICogbWFwcGFibGUgYnkgYWNjaWRlbnQp LiBUcmFjayBwaW4gYW5kIGZhdWx0IHNlcGFyYXRlIGZvciBhIG1vcmUKPiAtCSAqIGFjY3VyYXRl IG1hcHBhYmxlIHdvcmtpbmcgc2V0Lgo+IC0JICovCj4gLQl1bnNpZ25lZCBpbnQgZmF1bHRfbWFw cGFibGU6MTsKPiAtCj4gIAkvKgo+ICAJICogSXMgdGhlIG9iamVjdCB0byBiZSBtYXBwZWQgYXMg cmVhZC1vbmx5IHRvIHRoZSBHUFUKPiAgCSAqIE9ubHkgaG9ub3VyZWQgaWYgaGFyZHdhcmUgaGFz IHJlbGV2YW50IHB0ZSBiaXQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBmZGQ0OTZl NmMwODEuLjkxOTEwZmZlMDk2NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0x ODUwLDcgKzE4NTAsMTAgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqYXJlYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJy X3VucGluOwo+ICAKPiAtCW9iai0+ZmF1bHRfbWFwcGFibGUgPSB0cnVlOwo+ICsJc3Bpbl9sb2Nr KCZkZXZfcHJpdi0+bW0udXNlcmZhdWx0X2xvY2spOwo+ICsJbGlzdF9hZGQoJm9iai0+dXNlcmZh dWx0X2xpbmssICZkZXZfcHJpdi0+bW0udXNlcmZhdWx0X2xpc3QpOwo+ICsJc3Bpbl91bmxvY2so JmRldl9wcml2LT5tbS51c2VyZmF1bHRfbG9jayk7CgpJIHRoaW5rIHdlIG5lZWQgdG8gYWRkIGl0 IHRvIHRoZSBsaXN0IF9iZWZvcmVfIHdlIHN0YXJ0IHB1bmNoaW5nIGluIG5ldwpwdGVzLiBBdCBs ZWFzdCBpZiB3ZSB3YW50IHRvIGRlY291cGxlIHRoZSBsb2NraW5nIGFuZCBycG0gcmVmY291bnRp bmcgYQpsb3QgbW9yZSAod2hpY2ggSSB0aGluayB3ZSBzaG91bGQsIEkgaGFkIG1hZ2ljIGxvY2tz IHRoYXQgZW5zdXJlIG9yZGVyaW5nCm9uIHRoZWlyIG93biBzaW1wbHkgYnkgYmVpbmcgYSBCS0wp LiBCdXQgcmlnaHQgbm93IGl0J3Mgb2ssIHNvIGp1c3QgYQpiaWtlc2hlZC4KCj4gKwo+ICBlcnJf dW5waW46Cj4gIAlfX2k5MTVfdm1hX3VucGluKHZtYSk7Cj4gIGVycl91bmxvY2s6Cj4gQEAgLTE5 MTgsMzYgKzE5MjEsNTIgQEAgZXJyOgo+ICB2b2lkCj4gIGk5MTVfZ2VtX3JlbGVhc2VfbW1hcChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Cj4gKwlib29sIHphcCA9IGZh bHNlOwo+ICsKPiAgCS8qIFNlcmlhbGlzYXRpb24gYmV0d2VlbiB1c2VyIEdUVCBhY2Nlc3MgYW5k IG91ciBjb2RlIGRlcGVuZHMgdXBvbgo+ICAJICogcmV2b2tpbmcgdGhlIENQVSdzIFBURSB3aGls c3QgdGhlIG11dGV4IGlzIGhlbGQuIFRoZSBuZXh0IHVzZXIKPiAgCSAqIHBhZ2VmYXVsdCB0aGVu IGhhcyB0byB3YWl0IHVudGlsIHdlIHJlbGVhc2UgdGhlIG11dGV4Lgo+ICsJICoKPiArCSAqIE5v dGUgdGhhdCBSUE0gY29tcGxpY2F0ZXMgc29tZXdoYXQgYnkgYWRkaW5nIGFuIGFkZGl0aW9uYWwK PiArCSAqIHJlcXVpcmVtZW50IHRoYXQgb3BlcmF0aW9ucyB0byB0aGUgR0dUVCBiZSBtYWRlIGhv bGRpbmcgdGhlIFJQTQo+ICsJICogd2FrZXJlZi4KPiAgCSAqLwo+ICAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gLQlpZiAoIW9iai0+ZmF1 bHRfbWFwcGFibGUpCj4gKwlzcGluX2xvY2soJmk5MTUtPm1tLnVzZXJmYXVsdF9sb2NrKTsKPiAr CWlmICghbGlzdF9lbXB0eSgmb2JqLT51c2VyZmF1bHRfbGluaykpIHsKPiArCQlsaXN0X2RlbF9p bml0KCZvYmotPnVzZXJmYXVsdF9saW5rKTsKPiArCQl6YXAgPSB0cnVlOwo+ICsJfQo+ICsJc3Bp bl91bmxvY2soJmk5MTUtPm1tLnVzZXJmYXVsdF9sb2NrKTsKPiArCWlmICghemFwKQo+ICAJCXJl dHVybjsKPiAgCj4gIAlkcm1fdm1hX25vZGVfdW5tYXAoJm9iai0+YmFzZS52bWFfbm9kZSwKPiAg CQkJICAgb2JqLT5iYXNlLmRldi0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nKTsKPiAgCj4gIAkvKiBF bnN1cmUgdGhhdCB0aGUgQ1BVJ3MgUFRFIGFyZSByZXZva2VkIGFuZCB0aGVyZSBhcmUgbm90IG91 dHN0YW5kaW5nCj4gLQkgKiBtZW1vcnkgdHJhbnNhY3Rpb25zIGZyb20gdXNlcnNwYWNlIGJlZm9y ZSB3ZSByZXR1cm4uIFRoZSBUTEIKPiAtCSAqIGZsdXNoaW5nIGltcGxpZWQgYWJvdmUgYnkgY2hh bmdpbmcgdGhlIFBURSBhYm92ZSAqc2hvdWxkKiBiZQo+ICsJICogbWVtb3J5IHRyYW5zYWN0aW9u cyBmcm9tIHVzZXJzcGFjZSBiZWZvcmUgd2UgcmV0dXJuLiBUaGUgVExCIAo+ICsJICogZmx1c2hp bmcgaW1wbGllZCBhYm92ZSBieSBjaGFuZ2luZyB0aGUgUFRFIGFib3ZlICpzaG91bGQqIGJlIAo+ ICAJICogc3VmZmljaWVudCwgYW4gZXh0cmEgYmFycmllciBoZXJlIGp1c3QgcHJvdmlkZXMgdXMg d2l0aCBhIGJpdAo+ICAJICogb2YgcGFyYW5vaWQgZG9jdW1lbnRhdGlvbiBhYm91dCBvdXIgcmVx dWlyZW1lbnQgdG8gc2VyaWFsaXNlCj4gLQkgKiBtZW1vcnkgd3JpdGVzIGJlZm9yZSB0b3VjaGlu ZyByZWdpc3RlcnMgLyBHU00uCj4gKwkgKiBtZW1vcnkgd3JpdGVzIGJlZm9yZSB0b3VjaGluZyBy ZWdpc3RlcnMgLyBHU00uIAo+ICAJICovCj4gIAl3bWIoKTsKPiAtCj4gLQlvYmotPmZhdWx0X21h cHBhYmxlID0gZmFsc2U7Cj4gIH0KPiAgCj4gIHZvaWQKPiAgaTkxNV9nZW1fcmVsZWFzZV9hbGxf bW1hcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwgKm9uOwoJLyogcHJvdGVjdGVkIGJ5IGRldl9wcml2LT5tbS51c2VyZmF1bHRfbG9jayAq LwoKU2luY2UgSSBoYWQgdG8gdGhpbmsgYWJvdXQgaXQgZm9yIGEgd2hpbGUgOy0pCgo+ICsJc3Ry dWN0IGxpc3RfaGVhZCB1c2VyZmF1bHRfbGlzdDsKPiArCj4gKwlzcGluX2xvY2soJmRldl9wcml2 LT5tbS51c2VyZmF1bHRfbG9jayk7Cj4gKwlsaXN0X3JlcGxhY2VfaW5pdCgmZGV2X3ByaXYtPm1t LnVzZXJmYXVsdF9saXN0LCAmdXNlcmZhdWx0X2xpc3QpOwo+ICsJc3Bpbl91bmxvY2soJmRldl9w cml2LT5tbS51c2VyZmF1bHRfbG9jayk7Cj4gIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShvYmos ICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCwgZ2xvYmFsX2xpc3QpCj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUob2JqLCBvbiwgJnVzZXJmYXVsdF9saXN0LCB1c2VyZmF1bHRfbGluaykKPiAg CQlpOTE1X2dlbV9yZWxlYXNlX21tYXAob2JqKTsKPiAgfQo+ICAKPiBAQCAtNDA2Niw2ICs0MDg1 LDcgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAJaW50IGk7Cj4gIAo+ICAJSU5JVF9MSVNUX0hFQUQoJm9iai0+Z2xvYmFsX2xp c3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJm9iai0+dXNlcmZhdWx0X2xpbmspOwo+ICAJZm9yIChp ID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykKPiAgCQlpbml0X3JlcXVlc3RfYWN0aXZl KCZvYmotPmxhc3RfcmVhZFtpXSwKPiAgCQkJCSAgICBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19y ZWFkKTsKPiBAQCAtNDQ0MSw2ICs0NDYxLDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCWludCByZXQ7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+ICsJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5tbS51c2VyZmF1bHRfbG9j ayk7Cj4gIAo+ICAJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgCQlkZXZfcHJpdi0+ Z3QucmVzdW1lID0gaW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVzdW1lOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+IGluZGV4IDViNmY4MWMxZGJjYS4uY2ExNzVjMzA2M2Vk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4gQEAgLTU1LDcgKzU1 LDcgQEAgbWFya19mcmVlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBpbnQgZmxhZ3Ms IHN0cnVjdCBsaXN0X2hlYWQgKnVud2luZCkKPiAgCWlmIChXQVJOX09OKCFsaXN0X2VtcHR5KCZ2 bWEtPmV4ZWNfbGlzdCkpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoZmxhZ3MgJiBQ SU5fTk9ORkFVTFQgJiYgdm1hLT5vYmotPmZhdWx0X21hcHBhYmxlKQo+ICsJaWYgKGZsYWdzICYg UElOX05PTkZBVUxUICYmICFsaXN0X2VtcHR5KCZ2bWEtPm9iai0+dXNlcmZhdWx0X2xpbmspKQoK UmFjeSBhY2Nlc3Mgb2YgbGlzdF9lbXB0eS4gV2hlcmUncyBvdXIgZnJpZW5kIENPTVBVVEVfT05D RSBhZ2Fpbj8gU2luY2UKdGhlcmUgaXQncyBqdXN0IGFuIG9wdGltaXphdGlvbiB0aGVyZSdzIG5v IGlzc3VlIHdpdGggcmFjaW5nLCBleGNlcHQgZm9yCmRpdmVyZ2luZyBjb250cm9sIGZsb3cgaW4g Y2FzZSBnY2MgZGVjaWRlcyB0byByZWNvbXB1dGUgdGhpcy4KCkkgdGhpbmsgdGhhdCdzIHRoZSBv bmx5IG9uZSBJIHNwb3R0ZWQsIHdpdGggdGhhdCBhZGRyZXNzZWQ6CgpSZXZpZXdlZC1ieTogRGFu aWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCj4gIAkJcmV0dXJuIGZhbHNlOwo+ ICAKPiAgCWxpc3RfYWRkKCZ2bWEtPmV4ZWNfbGlzdCwgdW53aW5kKTsKClJldmlld2VkLWJ5OiBE YW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IC0tIAo+IDIuOS4zCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK RGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==