From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: Re: [RFC 1/3] drm/i915: Watchdog timeout: IRQ handler for gen8+ Date: Thu, 23 Feb 2017 14:12:07 -0800 Message-ID: <08636762-87da-93e1-74c8-a9257f3ab51a@intel.com> References: <20170223194421.28463-1-michel.thierry@intel.com> <20170223205754.GF19577@nuc-i3427.alporthouse.com> <20170223214944.GK19577@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 7AE6D6EAD7 for ; Thu, 23 Feb 2017 22:12:10 +0000 (UTC) In-Reply-To: <20170223214944.GK19577@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org, mika.kuoppala@linux.intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMy8wMi8xNyAxMzo0OSwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IE9uIFRodSwgRmViIDIz LCAyMDE3IGF0IDAxOjIxOjAzUE0gLTA4MDAsIE1pY2hlbCBUaGllcnJ5IHdyb3RlOgo+Pgo+Pgo+ PiBPbiAyMy8wMi8xNyAxMjo1NywgQ2hyaXMgV2lsc29uIHdyb3RlOgo+Pj4gT24gVGh1LCBGZWIg MjMsIDIwMTcgYXQgMTE6NDQ6MTdBTSAtMDgwMCwgTWljaGVsIFRoaWVycnkgd3JvdGU6Cj4+Pj4g KioqIEdlbmVyYWwgKioqCj4+Pj4KPj4+PiBXYXRjaGRvZyB0aW1lb3V0IChvciAibWVkaWEgZW5n aW5lIHJlc2V0IikgaXMgYSBmZWF0dXJlIHRoYXQgYWxsb3dzCj4+Pj4gdXNlcmxhbmQgYXBwbGlj YXRpb25zIHRvIGVuYWJsZSBoYW5nIGRldGVjdGlvbiBvbiBpbmRpdmlkdWFsIGJhdGNoIGJ1ZmZl cnMuCj4+Pj4gVGhlIGRldGVjdGlvbiBtZWNoYW5pc20gaXRzZWxmIGlzIG1vc3RseSBib3VuZCB0 byB0aGUgaGFyZHdhcmUgYW5kIHRoZSBvbmx5Cj4+Pj4gdGhpbmcgdGhhdCB0aGUgZHJpdmVyIG5l ZWRzIHRvIGRvIHRvIHN1cHBvcnQgdGhpcyBmb3JtIG9mIGhhbmcgZGV0ZWN0aW9uCj4+Pj4gaXMg dG8gaW1wbGVtZW50IHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgc3VwcG9ydCBhcyB3ZWxsIGFzIHdh dGNoZG9nIGNvbW1hbmQKPj4+PiBlbWlzc2lvbiBiZWZvcmUgYW5kIGFmdGVyIHRoZSBlbWl0dGVk IGJhdGNoIGJ1ZmZlciBzdGFydCBpbnN0cnVjdGlvbiBpbiB0aGUKPj4+PiByaW5nIGJ1ZmZlci4K Pj4+Pgo+Pj4+IFRoZSBwcmluY2lwbGUgb2YgdGhlIGhhbmcgZGV0ZWN0aW9uIG1lY2hhbmlzbSBp cyBhcyBmb2xsb3dzOgo+Pj4+Cj4+Pj4gMS4gT25jZSB0aGUgZGVjaXNpb24gaGFzIGJlZW4gbWFk ZSB0byBlbmFibGUgd2F0Y2hkb2cgdGltZW91dCBmb3IgYQo+Pj4+IHBhcnRpY3VsYXIgYmF0Y2gg YnVmZmVyIGFuZCB0aGUgZHJpdmVyIGlzIGluIHRoZSBwcm9jZXNzIG9mIGVtaXR0aW5nIHRoZQo+ Pj4+IGJhdGNoIGJ1ZmZlciBzdGFydCBpbnN0cnVjdGlvbiBpbnRvIHRoZSByaW5nIGJ1ZmZlciBp dCBhbHNvIGVtaXRzIGEKPj4+PiB3YXRjaGRvZyB0aW1lciBzdGFydCBpbnN0cnVjdGlvbiBiZWZv cmUgYW5kIGEgd2F0Y2hkb2cgdGltZXIgY2FuY2VsbGF0aW9uCj4+Pj4gaW5zdHJ1Y3Rpb24gYWZ0 ZXIgdGhlIGJhdGNoIGJ1ZmZlciBzdGFydCBpbnN0cnVjdGlvbiBpbiB0aGUgcmluZyBidWZmZXIu Cj4+Pj4KPj4+PiAyLiBPbmNlIHRoZSBHUFUgZXhlY3V0aW9uIHJlYWNoZXMgdGhlIHdhdGNoZG9n IHRpbWVyIHN0YXJ0IGluc3RydWN0aW9uCj4+Pj4gdGhlIGhhcmR3YXJlIHdhdGNoZG9nIGNvdW50 ZXIgaXMgc3RhcnRlZCBieSB0aGUgaGFyZHdhcmUuIFRoZSBjb3VudGVyCj4+Pj4ga2VlcHMgY291 bnRpbmcgdW50aWwgZWl0aGVyIHJlYWNoaW5nIGEgcHJldmlvdXNseSBjb25maWd1cmVkIHRocmVz aG9sZAo+Pj4+IHZhbHVlIG9yIHRoZSB0aW1lciBjYW5jZWxsYXRpb24gaW5zdHJ1Y3Rpb24gaXMg ZXhlY3V0ZWQuCj4+Pj4KPj4+PiAyYS4gSWYgdGhlIGNvdW50ZXIgcmVhY2hlcyB0aGUgdGhyZXNo b2xkIHZhbHVlIHRoZSBoYXJkd2FyZSBmaXJlcyBhCj4+Pj4gd2F0Y2hkb2cgaW50ZXJydXB0IHRo YXQgaXMgcGlja2VkIHVwIGJ5IHRoZSB3YXRjaGRvZyBpbnRlcnJ1cHQgaGFuZGxlci4KPj4+PiBU aGlzIG1lYW5zIHRoYXQgYSBoYW5nIGhhcyBiZWVuIGRldGVjdGVkIGFuZCB0aGUgZHJpdmVyIG5l ZWRzIHRvIGRlYWwgd2l0aAo+Pj4+IGl0IHRoZSBzYW1lIHdheSBpdCB3b3VsZCBkZWFsIHdpdGgg YSBlbmdpbmUgaGFuZyBkZXRlY3RlZCBieSB0aGUgcGVyaW9kaWMKPj4+PiBoYW5nIGNoZWNrZXIu IFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGlzIHRoYXQgd2UgYWxyZWFkeSBi bGFtZWQKPj4+PiB0aGUgYWN0aXZlIHJlcXVlc3QgKHRvIGVuc3VyZSBhbiBlbmdpbmUgcmVzZXQp Lgo+Pj4+Cj4+Pj4gMmIuIElmIHRoZSBiYXRjaCBidWZmZXIgY29tcGxldGVzIGFuZCB0aGUgZXhl Y3V0aW9uIHJlYWNoZXMgdGhlIHdhdGNoZG9nCj4+Pj4gY2FuY2VsbGF0aW9uIGluc3RydWN0aW9u IGJlZm9yZSB0aGUgd2F0Y2hkb2cgY291bnRlciByZWFjaGVzIGl0cwo+Pj4+IHRocmVzaG9sZCB2 YWx1ZSB0aGUgd2F0Y2hkb2cgaXMgY2FuY2VsbGVkIGFuZCBub3RoaW5nIG1vcmUgY29tZXMgb2Yg aXQuCj4+Pj4gTm8gaGFuZyBpcyBkZXRlY3RlZC4KPj4+Pgo+Pj4+IE5vdGUgYWJvdXQgZnV0dXJl IGludGVyYWN0aW9uIHdpdGggcHJlZW1wdGlvbjogUHJlZW1wdGlvbiBjb3VsZCBoYXBwZW4KPj4+ PiBpbiBhIGNvbW1hbmQgc2VxdWVuY2UgcHJpb3IgdG8gd2F0Y2hkb2cgY291bnRlciBnZXR0aW5n IGRpc2FibGVkLAo+Pj4+IHJlc3VsdGluZyBpbiB3YXRjaGRvZyBiZWluZyB0cmlnZ2VyZWQgZm9s bG93aW5nIHByZWVtcHRpb24uIFRoZSBkcml2ZXIgd2lsbAo+Pj4+IG5lZWQgdG8gZXhwbGljaXRs eSBkaXNhYmxlIHRoZSB3YXRjaGRvZyBjb3VudGVyIGFzIHBhcnQgb2YgdGhlCj4+Pj4gcHJlZW1w dGlvbiBzZXF1ZW5jZS4KPj4+Pgo+Pj4+ICoqKiBUaGlzIHBhdGNoIGludHJvZHVjZXM6ICoqKgo+ Pj4+Cj4+Pj4gMS4gSVJRIGhhbmRsZXIgY29kZSBmb3Igd2F0Y2hkb2cgdGltZW91dCBhbGxvd2lu ZyBkaXJlY3QgaGFuZyByZWNvdmVyeQo+Pj4+IGJhc2VkIG9uIGhhcmR3YXJlLWRyaXZlbiBoYW5n IGRldGVjdGlvbiwgd2hpY2ggdGhlbiBpbnRlZ3JhdGVzIGRpcmVjdGx5Cj4+Pj4gd2l0aCB0aGUg aGFuZyByZWNvdmVyeSBwYXRoLiBUaGlzIGlzIGluZGVwZW5kZW50IG9mIGhhdmluZyBwZXItZW5n aW5lIHJlc2V0Cj4+Pj4gb3IganVzdCBmdWxsIGdwdSByZXNldC4KPj4+Pgo+Pj4+IDIuIFdhdGNo ZG9nIHNwZWNpZmljIHJlZ2lzdGVyIGluZm9ybWF0aW9uLgo+Pj4+Cj4+Pj4gQ3VycmVudGx5IHRo ZSByZW5kZXIgZW5naW5lIGFuZCBhbGwgYXZhaWxhYmxlIG1lZGlhIGVuZ2luZXMgc3VwcG9ydAo+ Pj4+IHdhdGNoZG9nIHRpbWVvdXQgKFZFQ1MgaXMgb25seSBzdXBwb3J0ZWQgaW4gR0VOOSkuIFRo ZSBzcGVjaWZpY2F0aW9ucyBlbHVkZQo+Pj4+IHRvIHRoZSBCQ1MgZW5naW5lIGJlaW5nIHN1cHBv cnRlZCBidXQgdGhhdCBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBieQo+Pj4+IHRoaXMgY29t bWl0Lgo+Pj4+Cj4+Pj4gTm90ZSB0aGF0IHRoZSB2YWx1ZSB0byBzdG9wIHRoZSBjb3VudGVyIGlz IGRpZmZlcmVudCBiZXR3ZWVuIHJlbmRlciBhbmQKPj4+PiBub24tcmVuZGVyIGVuZ2luZXMuCj4+ Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBpbnRlbC5jb20+Cj4+ Pj4gU2lnbmVkLW9mZi1ieTogSWFuIExpc3RlciA8aWFuLmxpc3RlckBpbnRlbC5jb20+Cj4+Pj4g U2lnbmVkLW9mZi1ieTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRlbC5j b20+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGlu dGVsLmNvbT4KPj4+PiAtLS0KPj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICB8ICA0ICsrKysKPj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAg ICB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4+PiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICB8ICA2ICsrKysrKwo+Pj4+IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hhbmdjaGVjay5jIHwgMTMgKysrKysrKysrLS0tLQo+Pj4+IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwo+Pj4+ IDUgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPj4+Pgo+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+IGluZGV4IGVlZDllYWQxYjU5Mi4uMGU0ZjRj YzNjNmRlIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4gQEAgLTE1Njgs NiArMTU2OCw5IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4+Pj4gCSAqIHJlY292ZXJ5LiBB bGwgd2FpdGVycyBvbiB0aGUgcmVzZXRfcXVldWUgd2lsbCBiZSB3b2tlbiB3aGVuCj4+Pj4gCSAq IHRoYXQgaGFwcGVucy4KPj4+PiAJICoKPj4+PiArCSAqIFdoZW4gaHcgZGV0ZWN0cyBhIGhhbmcg YmVmb3JlIHVzLCB3ZSBjYW4gdXNlIEk5MTVfUkVTRVRfV0FUQ0hET0cgdG8KPj4+PiArCSAqIHJl cG9ydCB0aGUgaGFuZyBkZXRlY3Rpb24gY2F1c2UgYWNjdXJhdGVseS4KPj4+PiArCSAqCj4+Pj4g CSAqIFRoaXMgY291bnRlciBpcyB1c2VkIGJ5IHRoZSB3YWl0X3NlcW5vIGNvZGUgdG8gbm90aWNl IHRoYXQgcmVzZXQKPj4+PiAJICogZXZlbnQgaGFwcGVuZWQgYW5kIGl0IG5lZWRzIHRvIHJlc3Rh cnQgdGhlIGVudGlyZSBpb2N0bCAoc2luY2UgbW9zdAo+Pj4+IAkgKiBsaWtlbHkgdGhlIHNlcW5v IGl0IHdhaXRlZCBmb3Igd29uJ3QgZXZlciBzaWduYWwgYW55dGltZSBzb29uKS4KPj4+PiBAQCAt MTU4MCw2ICsxNTgzLDcgQEAgc3RydWN0IGk5MTVfZ3B1X2Vycm9yIHsKPj4+Pgo+Pj4+IAl1bnNp Z25lZCBsb25nIGZsYWdzOwo+Pj4+ICNkZWZpbmUgSTkxNV9SRVNFVF9JTl9QUk9HUkVTUwkwCj4+ Pj4gKyNkZWZpbmUgSTkxNV9SRVNFVF9XQVRDSERPRwkyIC8qIGxvb2tpbmcgYXQgdGhlIGZ1dHVy ZSAqLwo+Pj4+ICNkZWZpbmUgSTkxNV9XRURHRUQJCShCSVRTX1BFUl9MT05HIC0gMSkKPj4+Pgo+ Pj4+IAkvKioKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4+PiBpbmRleCBiYzcwZTJjNDUx YjIuLjRlZjczMzYzYmJlOSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+Pj4+ IEBAIC0xMzUyLDYgKzEzNTIsMjggQEAgZ2VuOF9jc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsIHUzMiBpaXIsIGludCB0ZXN0X3NoaWZ0KQo+Pj4+IAkJc2V0X2Jp dChFTkdJTkVfSVJRX0VYRUNMSVNULCAmZW5naW5lLT5pcnFfcG9zdGVkKTsKPj4+PiAJCXRhc2ts ZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+Pj4+IAl9Cj4+Pj4gKwo+Pj4+ ICsJaWYgKGlpciAmIChHVF9HRU44X1dBVENIRE9HX0lOVEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkg ewo+Pj4+ICsJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPj4+PiArCQl1MzIgd2F0Y2hkb2dfZGlzYWJsZTsKPj4+PiArCj4+Pj4gKwkJaWYgKGVuZ2lu ZS0+aWQgPT0gUkNTKQo+Pj4+ICsJCQl3YXRjaGRvZ19kaXNhYmxlID0gR0VOOF9SQ1NfV0FUQ0hE T0dfRElTQUJMRTsKPj4+PiArCQllbHNlCj4+Pj4gKwkJCXdhdGNoZG9nX2Rpc2FibGUgPSBHRU44 X1hDU19XQVRDSERPR19ESVNBQkxFOwo+Pj4+ICsKPj4+PiArCQkvKiBTdG9wIHRoZSBjb3VudGVy IHRvIHByZXZlbnQgZnVydGhlciB0aW1lb3V0IGludGVycnVwdHMgKi8KPj4+PiArCQlJOTE1X1dS SVRFX0ZXKFJJTkdfQ05UUihlbmdpbmUtPm1taW9fYmFzZSksIHdhdGNoZG9nX2Rpc2FibGUpOwo+ Pj4KPj4+IFRoZXJlJ3Mgbm8gZ3VhcnJhbnRlZSB5b3UgaG9sZCBmb3JjZXdha2UsIHlvdSBuZWVk IHRvIHVzZSBJOTE1X1dSSVRFLgo+Pj4gQmV0dGVyIHlldCB3b3VsZCBiZSB0byBhdm9pZCBoYXZp bmcgdG8gd2FpdCBmb3IgZm9yY2V3YWtlIHdpdGhpbiB0aGUKPj4+IGhhcmRpcnEgaGFuZGxlci4K Pj4+Cj4+Pj4gKwo+Pj4+ICsJCS8qIE1ha2Ugc3VyZSB0aGUgYWN0aXZlIHJlcXVlc3Qgd2lsbCBi ZSBtYXJrZWQgYXMgZ3VpbHR5ICovCj4+Pj4gKwkJZW5naW5lLT5oYW5nY2hlY2suc3RhbGxlZCA9 IHRydWU7Cj4+Pj4gKwkJZW5naW5lLT5oYW5nY2hlY2suc2Vxbm8gPSBpbnRlbF9lbmdpbmVfZ2V0 X3NlcW5vKGVuZ2luZSk7Cj4+Pgo+Pj4gSnVzdCBzZXQgYSBmbGFnIHNheWluZyB0aGUgZW5naW5l LT5oYW5nY2hlY2sud2F0Y2hkb2cgPSB0cnVlLiBEb24ndAo+Pj4gY29uZnVzZSB1cy4gZW5naW5l LT5oYW5nY2hlY2suc2Vxbm8gZG9lcyBub3QgZ2l2ZSB0aGUgZ3VpbHR5IHNlcW5vIQo+Pj4KPj4+ IEFsc28gdGhlcmUgaXMgbm8gZ3VhcnJhbnRlZSBoZXJlIHRoYXQgc2Vxbm8gaXMgdGhlIGd1aWx0 eSBwYXJ0eS4gVGhhdCdzCj4+PiBhIG5hc3R5IGJ1Zy4gU2VydmljaW5nIHRoZSBpbnRlcnJ1cHQg d2lsbCBiZSBydW5uaW5nIGluIHBhcmFsbGVsIHdpdGgKPj4+IHRoZSBHUFUgdGhhdCBtYXkgY29t cGxldGUgdGhlIHJlcXVlc3QgYmVmb3JlIHdlIHJlYWQgdGhlIEhXUy4KPj4+Cj4+PiBQbGVhc2Ug dGVsbCBtZSB3ZSBjYW4gdXNlIGEgUElEIGFsb25nIHdpdGggdGhlIHdhdGNoZG9nIHRpbWVyLi4u Cj4+Cj4+IEEgJ3dhdGNoZG9nJyBQSUQgYW5kICdydW5uaW5nJyBQSUQgaW4gdGhlIEhXU1Agd291 bGQgc291bmQgb2s/Cj4KPiBObywgQW5vdGhlciBTVE9SRV9EV09SRF9JTU0gaGFzIHRoZSBzYW1l IGFzeW5jaHJvbmljaXR5IGlzc3VlIGFzIGp1c3QKPiByZWFkaW5nIHNlcW5vLiBJIHRha2UgaXQg dGhlcmUgaXMgbm8gV0FUQ0hET0dfUElEIHRoYXQgaXMgc2V0IHdoZW4gdGhlCj4gd2F0Y2hkb2cg ZXhwaXJlcz8gT3Igd2UgY2FuJ3QgcHJvZ3JhbSB0aGUgQ1MgdG8gc3RvcCB3aGVuIHRoZSB3YXRj aGRvZwo+IGdvZXMgb2ZmPwo+CgpJZiB5b3Ugd2VyZSBhc2tpbmcgYWJvdXQgdGhlIEhXLCBubywg dGhlcmUncyBubyBzdWNoIHRoaW5nLCBqdXN0IGEgCnJlZ2lzdGVyIGZvciB0aGUgY291bnRlciBh bmQgb25lIGZvciBvbi9vZmYgY29udHJvbC4KCkl0IGlzIGFsc28gbm90IGF3YXJlIG9mIHdoYXQg ZWxzZSBpcyBoYXBwZW5pbmcuIEZvciBleGFtcGxlLCBpZiBpdCBpcyAKcHJlLWVtcHRlZCwgd2Ug bmVlZCB0byB3cml0ZSB0byB0aGUgcmVnIHRvIGRpc2FibGUgdGhlIHRpbWVyLCBvciBpdCB3aWxs IApleHBpcmUgd2hpbGUgdGhlIG5ldyBiYiBpcyBydW5uaW5nLgoKPiBUaGUgaXNzdWUgaXMgdGhh dCB3ZSBtYXkgYmxhbWUgdGhlIGZvbGxvd2luZyBjb250ZXh0IChhIGNvbXBsZXRlbHkKPiB1bnJl bGF0ZWQgcHJvY2VzcykgZm9yIHRoZSBoYW5nIC0gZG9zIGFob3kuCj4KPiBPciB3ZSBjYW4gZG8g c29tZXRoaW5nIGxpa2UgY3VycmVudCBoYW5nY2hlY2ssIHByb2dyYW0gdGhlIHdhdGNoZG9nIHRv Cj4gZmlyZSB0d2ljZSBiZWZvcmUgd2UgZGVjbGFyZSBhIGhhbmcuIEFuZCBvbmx5IHJlc2V0IGlm IHdlIHNlZSB0aGUgc2FtZQo+IHNlcW5vIG9uIGJvdGggb2NjYXNpb25zLgo+CgpJJ2xsIGNoZWNr IGhvdyBpdCB3b3JrcyB3aXRoIHRoZSBmaXJlIHR3aWNlIGJlZm9yZSBkb2luZyBzb21ldGhpbmcu Cgo+PiBUaGVyZSdzIGFsc28gdGhlIHF1ZXN0aW9uIGlmIHdlIHdhbnQgZGlmZmVyZW50IHRocmVz aG9sZHMgcGVyIGVuZ2luZS4KPgo+IEkgc3VzcGVjdCB3ZSBkby4gQnV0IHRoYXQgY2FuIGJlIGV4 dGVuZGVkIHRocm91Z2ggdGhlIHNhbWUKPiBjb250ZXh0X3NldF9wYXJhbSBqdXN0IGJ5IHBhc3Np bmcgYW4gYXJyYXkgKHNpemUgPiAwKSBpbnN0ZWFkIG9mIGEKPiBzaW5nbGUgdmFsdWUuCj4gLUNo cmlzCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==