From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: Re: [PATCH 04/13] drm/i915: Add EDID read in intel_dp_check_link_status() for Link CTS 4.2.2.1 Date: Thu, 16 Apr 2015 10:32:36 -0700 Message-ID: <552FF234.50400@gmail.com> References: <1428682372-21586-5-git-send-email-tprevite@gmail.com> <1428936789-13435-1-git-send-email-tprevite@gmail.com> <552E85A7.9070402@gmail.com> <552FD82D.9050202@gmail.com> <20150416163117.GL5082@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f43.google.com (mail-pa0-f43.google.com [209.85.220.43]) by gabe.freedesktop.org (Postfix) with ESMTP id D802D6E0E9 for ; Thu, 16 Apr 2015 10:32:20 -0700 (PDT) Received: by pabtp1 with SMTP id tp1so96644374pab.2 for ; Thu, 16 Apr 2015 10:32:20 -0700 (PDT) In-Reply-To: <20150416163117.GL5082@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzE2LzIwMTUgOTozMSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIEFw ciAxNiwgMjAxNSBhdCAwODo0MTozM0FNIC0wNzAwLCBUb2RkIFByZXZpdGUgd3JvdGU6Cj4+IE9u IDQvMTUvMjAxNSAxMDo0MiBBTSwgUGF1bG8gWmFub25pIHdyb3RlOgo+Pj4gMjAxNS0wNC0xNSAx MjozNyBHTVQtMDM6MDAgVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+Ogo+Pj4+IE9u IDQvMTQvMjAxNSA5OjUzIEFNLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4+Pj4+IDIwMTUtMDQtMTMg MTE6NTMgR01ULTAzOjAwIFRvZGQgUHJldml0ZSA8dHByZXZpdGVAZ21haWwuY29tPjoKPj4+Pj4+ IEFkZHMgaW4gYW4gRURJRCByZWFkIGFmdGVyIHRoZSBEUENEIHJlYWQgdG8gYWNjb21tb2RhdGUg dGVzdCA0LjIuMi4xIGluCj4+Pj4+PiB0aGUKPj4+Pj4+IERpc3BsYXlwb3J0IExpbmsgQ1RTIENv cmUgMS4yIHJldjEuMS4gVGhpcyB0ZXN0IHJlcXVpcmVzIGFuIEVESUQgcmVhZCBmb3IKPj4+Pj4+ IGFsbCBIUEQgcGx1ZyBldmVudHMuIFRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvZGUsIHRoaXMg RURJRCByZWFkIGlzIGFsc28KPj4+Pj4+IHVzZWQgZm9yIExpbmsgQ1RTIHRlc3RzIDQuMi4yLjMs IDQuMi4yLjQsIDQuMi4yLjUgYW5kIDQuMi4yLjYuIEFjdHVhbAo+Pj4+Pj4gc3VwcG9ydCBmb3Ig dGhlc2UgdGVzdHMgaXMgaW1wbGVtZW50ZWQgaW4gbGF0ZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmll cy4KPj4+Pj4+Cj4+Pj4+PiBWMjoKPj4+Pj4+IC0gRml4ZWQgY29tcGlsYXRpb24gZXJyb3IgaW50 cm9kdWNlZCBkdXJpbmcgcmV3b3JrCj4+Pj4+Pgo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogVG9kZCBQ cmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+Cj4+Pj4+PiAtLS0KPj4+Pj4+ICAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCAxMSArKysrKysrKysrKwo+Pj4+Pj4gICAgMSBmaWxl IGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykKPj4+Pj4+Cj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCj4+Pj4+PiBpbmRleCAyMzE4NGIwLi43NWRmM2UyIDEwMDY0NAo+Pj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4+Pj4gQEAgLTM4OTAsNiArMzg5MCw5IEBAIGlu dGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcAo+Pj4+Pj4gKmludGVsX2Rw KQo+Pj4+Pj4gICAgewo+Pj4+Pj4gICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBp bnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwo+Pj4+Pj4gICAgICAgICAgIHN0cnVjdCBpbnRlbF9l bmNvZGVyICppbnRlbF9lbmNvZGVyID0KPj4+Pj4+ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCkt PmJhc2U7Cj4+Pj4+PiArICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPQo+ Pj4+Pj4gJmludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3ItPmJhc2U7Cj4+Pj4+PiArICAgICAg IHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZpbnRlbF9kcC0+YXV4LmRkYzsKPj4+Pj4+ ICsgICAgICAgc3RydWN0IGVkaWQgKmVkaWRfcmVhZCA9IE5VTEw7Cj4+Pj4+PiAgICAgICAgICAg dTggc2lua19pcnFfdmVjdG9yOwo+Pj4+Pj4gICAgICAgICAgIHU4IGxpbmtfc3RhdHVzW0RQX0xJ TktfU1RBVFVTX1NJWkVdOwo+Pj4+Pj4KPj4+Pj4+IEBAIC0zOTA2LDYgKzM5MDksMTQgQEAgaW50 ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwCj4+Pj4+PiAqaW50ZWxfZHAp Cj4+Pj4+PiAgICAgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4+PiAgICAgICAgICAgfQo+Pj4+ Pj4KPj4+Pj4+ICsgICAgICAgLyogRGlzcGxheXBvcnQgTGluayBDVFMgQ29yZSAxLjIgcmV2MS4x IEVESUQgdGVzdGluZwo+Pj4+Pj4gKyAgICAgICAgKiA0LjIuMi4xIC0gRURJRCByZWFkIHJlcXVp cmVkIGZvciBhbGwgSFBEIGV2ZW50cwo+Pj4+Pj4gKyAgICAgICAgICovCj4+Pj4+PiArICAgICAg ICBlZGlkX3JlYWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBhZGFwdGVyKTsKPj4+Pj4+ICsg ICAgICAgIGlmICghZWRpZF9yZWFkKSB7Cj4+Pj4+PiArICAgICAgICAgICAgICAgIERSTV9ERUJV R19EUklWRVIoIkludmFsaWQgRURJRCBkZXRlY3RlZFxuIik7Cj4+Pj4+PiArICAgICAgICB9Cj4+ Pj4+PiArCj4+Pj4+IFdlIGFscmVhZHkgYnJpZWZseSBkaXNjdXNzZWQgdGhpcyBwYXRjaCBpbiBw cml2YXRlLCBzbyBJJ20gZ29pbmcgdG8KPj4+Pj4gc3VtbWFyaXplIHRoZSBkaXNjdXNzaW9uIGFu ZCBhbHNvIGFkZCBzb21lIG1vcmUgcG9pbnRzIGhlcmUuCj4+Pj4+Cj4+Pj4+IEZyaXN0LCB0aGUg YWN0dWFsIGRldGFpbGVkIHJldmlldzogdGhlIGluZGVudGF0aW9uIGhlcmUgaXMgdXNpbmcKPj4+ Pj4gc3BhY2VzIGFuZCB3ZSdyZSBsZWFraW5nIHRoZSBFRElELiBUaGlzIHdpbGwgY2F1c2UgcmVi YXNlcyB0byBhIGZldyBvZgo+Pj4+PiB0aGUgbmV4dCBwYXRjaGVzLgo+Pj4+Pgo+Pj4+PiBCYWNr IHRvIHRoZSBoaWdodCBsZXZlbCBhcmNoaXRlY3R1cmU6IHlvdXIgaW5pdGlhbCB2ZXJzaW9ucyBv ZiB0aGUKPj4+Pj4gc2VyaWVzIGNvbnRhaW5lZCBqdXN0IDEgZXh0cmEgRURJRCByZWFkLCBhbmQg aXQgd2FzIGNvbnRhaW5lZCBpbnNpZGUKPj4+Pj4gdGhlIGNvbXBsaWFuY2UgdGVzdGluZyBmdW5j dGlvbi4gVGhlbiB0aGUgdmVyc2lvbnMgc3VibWl0dGVkIGEgZmV3Cj4+Pj4+IGRheXMgYWdvIGhh ZCAyIGV4dHJhIEVESUQgcmVhZHMsIHRoZW4gYWZ0ZXIgc29tZSBkaXNjdXNzaW9uIHlvdQo+Pj4+ PiByZWR1Y2VkIHRvIDEgZXh0cmEgRURJRCByZWFkICh0aGUgb25lIG9uIHRoaXMgcGF0Y2gpLiBJ IHByZXZpb3VzbHkKPj4+Pj4gYXNrZWQgIkJ1dCB3aGF0IGFib3V0IHRoZSBhdXRvbWF0aWMgRURJ RCByZWFkIHdlIGRvIHdoZW4gd2UgZ2V0IGEKPj4+Pj4gaG90cGx1Zz8gQ2FuJ3Qgd2UganVzdCBy ZWx5IG9uIGl0PyIuIEkgZ290IHNvbWUgYW5zd2VycyB0byB0aGUKPj4+Pj4gcXVlc3Rpb24sIGJ1 dCBJIHdhcyBub3QgcmVhbGx5IGNvbnZpbmNlZC4KPj4+Pj4KPj4+Pj4gWWVzdGVyZGF5IEkgd2Fz IGFyZ3VpbmcgdGhhdCB0aGlzIGV4dHJhIEVESUQgcmVhZCBpcyBnb2luZyB0byBhZGQgYQo+Pj4+ PiBzbWFsbCBkZWxheSB0byBldmVyeSBob3RwbHVnIGV2ZW50IHdlIGdldCwgc28gbXkgaW5pdGlh bCBzdWdnZXN0aW9uCj4+Pj4+IHdhcyB0byBvcmdhbml6ZSB0aGUgY29tcGxpYW5jZSB0ZXN0aW5n IGluIGEgd2F5IHRoYXQgd291bGQgcmVxdWlyZSB0aGUKPj4+Pj4gdXNlciBzcGFjZSBwcm9ncmFt IHRvIGNhbGwgdGhlIEdldFJlc291cmNlcygpIElPQ1RMIHRvIGZvcmNlIHRoZSBFRElECj4+Pj4+ IHdoZW4gbmVlZGVkLiBZb3VyIGFyZ3VtZW50IHdhcyB0aGF0IHRoZW4gdGhlIERQIGNvbXBsaWFu Y2UgdGVzdGluZwo+Pj4+PiBwcm9jZWR1cmUgd291bGQgYmUgdGVzdGluZyBvdXIgYXBwIGZvciBj b21wbGlhbmNlLCBub3QgdGhlIEtlcm5lbC4KPj4+Pj4KPj4+Pj4gQnV0IHRvZGF5IEkgZGVjaWRl ZCB0byBmaW5hbGx5IGRvIHNvbWUgZGVidWdnaW5nIHJlZ2FyZGluZyB0aGlzLCBhbmQgSQo+Pj4+ PiB3YXMgYWJsZSB0byBjb25maXJtIHRoYXQgd2UgZG8gZm9sbG93IHRoZSBEUCByZXF1aXJlbWVu dHM6IHdlIGRvIGhhdmUKPj4+Pj4gYW4gYXV0b21hdGljIEVESUQgcmVhZCBkb25lIGJ5IHRoZSBL ZXJuZWwgd2hlbmV2ZXIgd2UgZG8gYSBob3RwbHVnOgo+Pj4+PiBpOTE1X2hvdHBsdWdfd29ya19m dW5jKCkgY2FsbHMgaW50ZWxfZHBfZGV0ZWN0KCksIHdoaWNoIGVuZHMgY2FsbGluZwo+Pj4+PiBk cm1fZ2V0X2VkaWQoKSBhdCBzb21lIHBvaW50LiBUaGlzIGZ1bmN0aW9uIGFsc28gZG9lcyBvdGhl ciBzdHVmZiB0aGF0Cj4+Pj4+IGlzIHJlcXVpcmVkIGJ5IHRoZSBjb21wbGlhbmNlIHRlc3Rpbmcs IHN1Y2ggYXMgdGhlIERQQ0QgcmVhZHMuCj4+Pj4+Cj4+Pj4+IE5vdyB0aGVyZSdzIGEgcHJvYmxl bSB3aXRoIHVzaW5nIGk5MTVfaG90cGx1Z193b3JrX2Z1bmMoKSwgd2hpY2ggY291bGQKPj4+Pj4g dGhlIHJlYXNvbiB3aHkgeW91IHJlamVjdGVkIGl0OiBpdCBvbmx5IGhhcHBlbnMgYWZ0ZXIKPj4+ Pj4gaW50ZWxfZHBfaHBkX3B1bHNlKCksIHdoaWNoIG1lYW5zIHRoYXQgd2Ugb25seSByZWFsbHkg ZG8gdGhlIEVESUQgcmVhZAo+Pj4+PiBhZnRlciBpbnRlbF9kcF9oYW5kbGVfdGVzdF9yZXF1ZXN0 KCkuCj4+Pj4+Cj4+Pj4+IEkgY29uc2lkZXIgaTkxNV9ob3RwbHVnX3dvcmtfZnVuYygpIGEgZnVu ZGFtZW50YWwgcGFydCBvZiBvdXIgRFAKPj4+Pj4gZnJhbWV3b3JrLCBhbmQgdGhlIERQIGNvbXBs aWFuY2UgdGVzdGluZyBzZWVtcyB0byBiZSBqdXN0IGlnbm9yaW5nIGl0cwo+Pj4+PiBleGlzdGVu Y2UuIFNvIG15IGlkZWEgZm9yIGEgc29sdXRpb24gaGVyZSB3b3VsZCBiZSB0byBtYWtlCj4+Pj4+ IGludGVsX2RwX2hhbmRsZV90ZXN0X3JlcXVlc3QoKSBydW4gb24gaXRzIG93biBkZWxheWVkIHdv cmsgZnVuY3Rpb24uCj4+Pj4+IEl0IHdvdWxkIHdhaXQgZm9yIGJvdGggaTkxNV9kaWdwb3J0X3dv cmtfZnVuYygpIGFuZAo+Pj4+PiBpOTE1X2hvdHBsdWdfd29ya19mdW5jKCkgdG8gZmluaXNoLCBh bmQgb25seSB0aGVuIGl0IHdvdWxkIGRvIHRoZQo+Pj4+PiBub3JtYWwgcHJvY2Vzc2luZy4gV2l0 aCB0aGlzLCB3ZSB3b3VsZCBiZSBhYmxlIHRvIGF2b2lkIHRoZSBlZGlkIHJlYWQKPj4+Pj4gb24g dGhpcyBwYXRjaCwgd2Ugd291bGQgbWF5YmUgYmUgYWJsZSB0byBhdm9pZCBhdCBsZWFzdCBwYXJ0 IG9mIHBhdGNoCj4+Pj4+IDIsIHdlIHdvdWxkIG1heWJlIGJlIGFibGUgdG8gY29tcGxldGVseSBh dm9pZCBwYXRjaCA3LCBhbmQgdGhlbiBvbgo+Pj4+PiBwYXRjaCA4IHdlIHdvdWxkIHN0YXJ0IHRv dWNoaW5nIGludGVsX2RwX2dldF9lZGlkKCkgaW5zdGVhZC4KPj4+Pj4KPj4+Pj4gSSBrbm93IHRo aXMgaXMgc29ydCBvZiBhIGZ1bmRhbWVudGFsIGNoYW5nZSB0aGF0IGlzIGJlaW5nIHJlcXVlc3Rl ZCBhCj4+Pj4+IGxpdHRsZSBsYXRlIGluIHRoZSByZXZpZXcgcHJvY2VzcywgYW5kIGl0IGNhbiBi ZSBmcnVzdHJhdGluZywgYnV0IHRoaXMKPj4+Pj4gYXNwZWN0IG9mIHRoZSBjb2RlIG9ubHkgcmVj ZW50bHkgY2hhbmdlZCAoSSB3YXMgZmluZSB3aXRoIHRoZSBFRElECj4+Pj4+IHJlYWRzIGp1c3Qg aW4gdGhlIGNvbXBsaWFuY2UgdGVzdGluZyBmdW5jdGlvbiksIGFuZCBzaW5jZSB0aGUgRFAKPj4+ Pj4gY29tcGxpYW5jZSBjb2RlIGlzIHF1aXRlIGNvbXBsZXgsIGl0IHRvb2sgbWUgYSB3aGlsZSB0 byByZWFsaXplCj4+Pj4+IGV2ZXJ5dGhpbmcgdGhhdCdzIGdvaW5nIG9uIGFuZCB3aGF0IGlzIHRo ZSBwdXJwb3NlIG9mIGVhY2ggcGllY2UuIEkKPj4+Pj4gYWxzbyB0aGluayB0aGF0LCBzaW5jZSB0 aGlzIGlkZWEgd2lsbCBhbGxvdyB0aGUgY29tcGxpYW5jZSB0ZXN0aW5nIHRvCj4+Pj4+IHRha2Ug aW50byBjb25zaWRlcmF0aW9uIHRoZSB3b3JrIGRvbmUgYnkgaTkxNV9ob3RwbHVnX3dvcmtfZnVu YygpLAo+Pj4+PiBjb21wbGlhbmNlIHRlc3Rpbmcgd2lsbCBiZXR0ZXIgcmVmbGVjdCB0aGUgYmVo YXZpb3IgdGhhdCBpcyBhY3R1YWxseQo+Pj4+PiBkb25lIGJ5IHRoZSBLZXJuZWwgd2hlbiBEUCBk ZXZpY2VzIGFyZSBwbHVnZ2VkL3VucGx1Z2dlZC4gQW5kIEkgZGlkCj4+Pj4+IGFzayBhYm91dCB0 aG9zZSBuZXcgRURJRCByZWFkcyBhcyBzb29uIGFzIEkgc3RhcnRlZCByZXZpZXdpbmcgdGhlCj4+ Pj4+IHBhdGNoIHRoYXQgaW50cm9kdWNlZCB0aGVtLgo+Pj4+Pgo+Pj4+PiBOb3csIHNpbmNlIEkg a25vdyBob3cgZnJ1c3RyYXRpbmcgaXQgaXMgdG8gaGF2ZSB0byBjaGFuZ2UgYQo+Pj4+PiBzaWdu aWZpY2FudCBwb3J0aW9uIG9mIHRoZSBjb2RlIG9uY2UgYWdhaW4sIEkgd2lsbCBsZWF2ZSB0byB0 aGUKPj4+Pj4gbWFpbnRhaW5lcnMgdGhlIGRlY2lzaW9uIG9mIHdoZXRoZXIgdGhlIGN1cnJlbnQg cHJvcG9zZWQKPj4+Pj4gaW1wbGVtZW50YXRpb24gaXMgYWNjZXB0YWJsZSBvciBpZiB3ZSB3YW50 IHRvIG1ha2UgdGhlIERQIGNvbXBsaWFuY2UKPj4+Pj4gdGVzdGluZyBjb2RlIHRha2UgaW50byBj b25zaWRlcmF0aW9uIHRoZSB3b3JrIGRvbmUgYnkKPj4+Pj4gaTkxNV9ob3RwbHVnX3dvcmtfZnVu YygpLiBJIHdvdWxkIGFsc28gbGlrZSB0byBrbm93IHlvdXIgb3BpbmlvbiBvbgo+Pj4+PiB0aGlz LiBNYXliZSBteSBpZGVhIGp1c3QgZG9lc24ndCBtYWtlIHNlbnNlIGJlY2F1c2Ugb2Ygc29tZXRo aW5nIGVsc2UKPj4+Pj4gSSBkaWRuJ3QgcmVhbGl6ZSA6KQo+Pj4+IEkgZG9uJ3QgdGhpbmsgdGhp cyBpcyBhIGdvb2QgaWRlYS4gVGhlIHdvcmsgbG9vcCBhc3BlY3Qgc2VlbXMgbGlrZSBhIHZlcnkK Pj4+PiBjb21wbGV4IHNvbHV0aW9uIHNvbHV0aW9uIHRvIGEgcHJvYmxlbSB0aGF0IGlzIHJlbGF0 aXZlbHkgc2ltcGxlLiBJbiBhCj4+Pj4gZGlzY3Vzc2lvbiB3aXRoIERhbmllbCwgaGUgaW5kaWNh dGVkIHRoYXQgYWRkaW5nIGEgd29yayBsb29wIGlzIHNvbWV0aGluZyB0bwo+Pj4+IGJlIGF2b2lk ZWQgdW5sZXNzIGl0J3MgKnJlYWxseSogbmVjZXNzYXJ5LCBhcyB0aGV5IGFyZSBwcm9uZSB0byBy YWNlCj4+Pj4gY29uZGl0aW9ucy4gSW4gdGhpcyBjYXNlLCBJIGp1c3QgZG9uJ3Qgc2VlIHRoYXQg aXQncyBuZWNlc3NhcnkuCj4+PiBUaGUgd29ya3F1ZXVlIHRoaW5nIHdhcyBqdXN0IGFuIGlkZWEg dG8gaW1wbGVtZW50IGEgc29sdXRpb24gZm9yIHRoZQo+Pj4gcmVhbCBwcm9ibGVtLiBJIHRoaW5r IHdlIHNob3VsZCBiZSBmb2N1c2luZyBhYm91dCBkaXNjdXNzaW5nIHRoZSBmYWN0Cj4+PiB0aGF0 IHdlJ3JlIG5vdCB0YWtpbmcgaTkxNV9ob3RwbHVnX3dvcmtfZnVuYygpIGludG8gY29uc2lkZXJh dGlvbiB3aGVuCj4+PiBkb2luZyB0aGUgY29tcGxpYW5jZSB0ZXN0aW5nLCBub3Qgb24gdGhlIGZh Y3QgdGhhdCBvbmUgb2YgdGhlIHBvc3NpYmxlCj4+PiBpbXBsZW1lbnRhdGlvbnMgY291bGQgdXNl IGEgd29ya3F1ZXVlLiBJJ2Qgc3RpbGwgbGlrZSB0byBoZWFyIHlvdXIKPj4+IGFyZ3VtZW50cyBv biB0aGF0Lgo+PiBGYWlyIGVub3VnaC4KPj4KPj4gU28gSSd2ZSBiZWVuIGxvb2tpbmcgaW50byB0 aGlzIGFuZCB3aHkgdGhlIGk5MTVfaG90cGx1Z193b3JrX2Z1bmMgd2Fzbid0Cj4+IHBhcnQgb2Yg dGhpcy4gSXQgaXMsIGFzIHlvdSBzYWlkLCBhIHJlbGF0aXZlbHkgZnVuZGFtZW50YWwgY29kZSBw YXRoIGZvcgo+PiBEaXNwbGF5cG9ydCB0aHJvdWdoIHRoZSBkcml2ZXIuIFdoYXQgSSBkaXNjb3Zl cmVkIHdhcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMKPj4gbmV2ZXIgY2FsbGVkIG9uIEhTVyAobXkg cHJpbWFyeSB0ZXN0IHZlaGljbGUpLCBtYWlubHkgYmVjYXVzZQo+PiBjaGVja19saW5rX3N0YXR1 cygpIHJldHVybnMgSVJRX0hBTkRMRUQgaW5zdGVhZCBvZiBJUlFfTk9ORS4gVGhlIHdvcmsKPj4g ZnVuY3Rpb24gZm9yIEhTVyBpcyBpOTE1X2RpZ3BvcnRfd29ya19mdW5jLCBzbyB3aGVuIGl0IGdl dHMgdGhlIElSUV9IQU5ETEVECj4+IHJldHVybiBjb2RlLCBpdCBkb2Vzbid0IGZhbGwgdGhyb3Vn aCB0byB0aGUgbGVnYWN5IGk5MTVfaG90cGx1Z193b3JrX2Z1bmMKPj4gaGFuZGxlci4gVGhpcyBp cyBpbXBvcnRhbnQgYmVjYXVzZSB0aGlzIGhhbmRsZXIgY2FsbHMgaW50ZWxfaHBkX2lycV9ldmVu dAo+PiB3aGljaCBpcyB3aGVyZSB0aGUgLT5kZXRlY3QgY29ubmVjdG9yIGZ1bmN0aW9uIGlzIGNh bGxlZC4gQW5kCj4+IGludGVsX2RwX2RldGVjdCgpIGlzIHdoZXJlIGFsbCB0aGUgaGFwcHkgZ29v ZG5lc3MgZm9yIERpc3BsYXlwb3J0IGJlZ2lucy4KPj4KPj4gVXAgdW50aWwgSSBkaXNjb3ZlcmVk IHRoaXMsIEkgaGFkIG1pc3Rha2VubHkgcHJvcGFnYXRlZCB0aGF0IHByb2JsZW0gZm9yd2FyZAo+ PiBpbiB0byB0aGUgU1NUIGNhc2UgaW4gaW50ZWxfZHBfaG90X3B1bHNlKCkgaW4gcGF0Y2ggNiBi eSByZXR1cm5pbmcKPj4gSVJRX0hBTkRMRUQgaW5zdGVhZCBvZiBJUlFfTk9ORSwgd2hpY2ggaXMg d2hhdCB0aGUgY29kZSB3YXMgZG9pbmcgZm9yIFNTVAo+PiBwcmlvciB0byBwYXRjaCA2LiBXaXRo IHRoaXMgcHJvYmxlbSBjb3JyZWN0ZWQgKGFzIGl0IGlzIGluIHRoZSBsYXRlc3QgdXBkYXRlCj4+ IGluIHBhdGNoIHNldCBWNikgdGhlIHdvcmsgZnVuY3Rpb25zIGFyZSBub3cgY2FsbGVkIGFzIHRo ZXkgc2hvdWxkIGJlLiBUaGUKPj4gcG9pbnQgYmVpbmcgdGhhdCB0aGlzIG9wZW5zIHVwIHRoZSBw b3NzaWJpbGl0eSBvZiB1c2luZyBlbGVtZW50cyBhbG9uZyB0aGlzCj4+IHBhdGggdG8gcGFzcyBj b21wbGlhbmNlIHRlc3RpbmcsIHRoZXJlYnkgY3JlYXRpbmcgYSBtb3JlIHZhbGlkIHRlc3QgY2Fz ZS4KPj4KPj4gV2l0aCB0aGlzIGluIG1pbmQsIEkgYW0gbm90IG9wcG9zZWQgdG8gdXNpbmcgZWxl bWVudHMgYWxvbmcgdGhhdCBwYXRoIHRvCj4+IHNhdGlzZnkgY29tcGxpYW5jZSByZXF1aXJlbWVu dHMgKHRoYXQncyB0aGUgc3Bpcml0IG9mIHRoZSB0ZXN0cywgYW55d2F5cykKPj4gYnV0IGFzIEkn dmUgaW5kaWNhdGVkLCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgd2UgbmVlZCB0byB0YWtlIHNwZWNp YWwgc3RlcHMKPj4gKGxpa2UgdGhlIGVkaWRfY29ycnVwdCBmbGFnKSBpbiBvcmRlciB0byBkbyB0 aGUgcmlnaHQgdGhpbmdzIHRvIHBhc3MgdGhlCj4+IHRlc3RzLiBJIGhhdmUgY29uY2VybnMgYWJv dXQgdHJ5aW5nIHRvIGRvIHRoYXQgYXQgdGhpcyBwb2ludCwgYXMgaXQgcmVxdWlyZXMKPj4gc3Vi c3RhbnRpYWwgcmV3b3JrIHRvIHRoYXQgY29kZSBwYXRoIHRoYXQgaGF2ZSBhIHNpZ25pZmljYW50 IGNoYW5jZSBvZgo+PiBicmVha2luZyB0aGluZ3MuIFNvIHRvIGF2b2lkIHRoYXQsICBJIHByb3Bv c2UgdGhhdCB0aGlzIHBhdGNoIGJlIG1lcmdlZCBub3cKPj4gc28gdGhhdCBhIHdvcmtpbmcgc29s dXRpb24gaXMgaW4gcGxhY2UuIFRoaXMgZGlzY3Vzc2lvbiBzaG91bGQgY29udGludWUgYW5kCj4+ IHdlIGNhbiBkZWNpZGUgd2hlcmUgdG8gcHV0IHRoaW5ncyBpbiB0aGUgaG90cGx1Z193b3JrIHBh dGggdG8gc2F0aXNmeSB0aGUKPj4gY29tcGxpYW5jZSByZXF1aXJlcyBvdmVyIHRoZSBjb3Vyc2Ug b2Ygc29tZSBmb2xsb3d1cCBwYXRjaGVzLgo+IEkndmUgbG9va2VkIGEgYml0IGF0IGFsbCB0aGlz IGFuZCBJIHRoaW5rIHRoZSBvdGhlciBpc3N1ZSBoZXJlIGlzIHRoZQo+IHBsYWNlbWVudCBvZiBp bnRlbF9kcF9oYW5kbGVfdGVzdF9yZXF1ZXN0IGluIGNoZWNrX2xpbmtfc3RhdHVzLiBUaGlzIGhh cwo+IGJlZW4gZG9uZSBhbG1vc3QgNCB5ZWFycyBhZ28gaW4KPgo+IGNvbW1pdCBhNjBmMGUzOGQ3 MmE1ZTI0MDg1ZDZlN2UyN2E0Y2FkYzIwYWUyNjhhCj4gQXV0aG9yOiBKZXNzZSBCYXJuZXMgPGpi YXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KPiBEYXRlOiAgIFRodSBPY3QgMjAgMTU6MDk6MTcgMjAx MSAtMDcwMAo+Cj4gICAgICBkcm0vaTkxNTogYWRkIERQIHRlc3QgcmVxdWVzdCBoYW5kbGluZwo+ Cj4gYnV0IG5ldmVyIGNvbnRhaW5lZCAodXAgdG8gdGhpcyBwb2ludCkgYW55IGZ1bmN0aW9uYWwg Y29kZS4gSXQgd2FzIGhvd2V2ZXIKPiBkdXRpZnVsbHkgbW92ZWQgYXJvdW5kIHRvZ2V0aGVyIHdp dGggdGhlIG90aGVyIGNvZGUuIEFuZCB3YXkgYmFjayB0aGUKPiBwbGFjZW1lbnQgZXZlbiBtYWRl IHNvbWUgc2Vuc2UgLSBjaGVja19saW5rX3N0YXR1cyB3YXMgY2FsbGVkCj4gdW5jb25kaXRpb25h bGx5IGZyb20gb3VyIGhvdF9wbHVnIGhhbmRsZXIuIEJ1dCBzaW5jZSB0aGUgTVNUIHJld29yayAo YW5kIGEKPiBmZXcgb3RoZXIgdGhpbmdzKSBoYXBwZW5lZCB0aGF0IGhhcyBiZWVuIGNoYW5nZWQg cHJldHR5IHJhZGljYWxseSBhbmQgdGhlCj4gY3VycmVudCBwbGFjZSB3aGVyZSB0aGUgdGVzdCBy ZXF1ZXN0IGhhbmRsZXIgaXMgY2FsbGVkIGp1c3QgZG9lc24ndCBzZWVtCj4gdG8gbWFrZSB0aGF0 IG11Y2ggc2Vuc2UgYW55IG1vcmUuCkkgd2lsbCBhZ3JlZSB3aXRoIHlvdSBvbiB0aGlzLiBJbiBs aWdodCBvZiBteSBlYXJsaWVyIGZpbmRpbmdzLCBJIHRoaW5rIAp0aGF0IGNoZWNrX2xpbmtfc3Rh dHVzIG1heSBoYXZlIGJlY29tZSBhIHN1cGVyZmx1b3VzIGZ1bmN0aW9uIGNhbGwsIG11Y2ggCmxp a2UgdGhlIG9sZCBpbnRlbF9kcF9ob3RfcGx1ZygpIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGVyZSBp cyBzb21lIGNvZGUgCnRoYXQgbmVlZHMgdG8gYmUgY2FycmllZCBmb3J3YXJkIGludG8gdGhlIG5v cm1hbCB3b3JrIGZ1bmMgcGF0aCB0byBtYWtlIApjb21wbGlhbmNlIHRlc3Rpbmcgd29yayBwcm9w ZXJseS4gVGhvc2UgdGhpbmdzIGFyZSBhcyBmb2xsb3dzOgogICAgIC0gQSBmcmVzaCBFRElEIHJl YWQgZWFybHkgaW4gdGhlIEhQRCBwcm9jZXNzCiAgICAgLSBEZXRlY3Rpb24gb2YgYSBjb3JydXB0 ZWQgRURJRCBhdCB0aGUgc2FtZSBwb2ludAogICAgIC0gQSBjaGVjayBvZiB0aGUgRGlzcGxheXBv cnQgSVJRX1ZFQ1RPUiByZWdpc3RlciB0byBkZXRlcm1pbmUgaWYgYSAKdGVzdCByZXF1ZXN0IGhh cyBvY2N1cnJlZAoKVGhlcmUgaXMgYWxzbyBvbmUgY2hhbmdlIHRoYXQgbXVzdCBiZSBtYWRlIHRv IGludGVsX2RwX2hwZF9wdWxzZSgpLCBhbmQgCnRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoYXQgaXQg cmV0dXJucyBJUlFfTk9ORSBmb3IgdGhlIFNTVCBjYXNlIHN1Y2ggdGhhdCAKdGhlIGhvdHBsdWdf d29ya19mdW5jIGdldHMgaW52b2tlZC4gSSBiZWxpZXZlIHRoYXQgaXMgdGhlIGtleSB0byAKcmVz dG9yaW5nIHdvcmtpbmcgc3RhdHVzIHRvIHRoaXMgY29kZSBwYXRoIGZvciB0aGUgcmVhc29ucyBJ IGRldGFpbGVkIAphYm92ZS4KCkFzIGFuIGFzaWRlLCBJIHRoaW5rIHRoZSBvYnNvbGV0ZSBmdW5j dGlvbnMgc2hvdWxkIGJlIHJlbW92ZWQgaW5zdGVhZCBvZiAKcmVtYWluaW5nIGluIHRoZSBjb2Rl IGJhc2UuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYXMgYSBzZXBhcmF0ZSBwYXRjaCBzbyAKdGhhdCBp dCdzIGNsZWFyIGFuZCBiaXNlY3RhYmxlIHNob3VsZCB0aGF0IGJlY29tZSBhbiBpc3N1ZSBpbiB0 aGUgZnV0dXJlLgoKPiBXaGlsZSBJIHN0YXJ0ZWQgcHVsbGluZyBpbiBwYXRjaGVzIEkgYWxzbyBu b3RpY2VkIG90aGVyIHBsYWNlcyB3aGVyZSB3ZQo+IGR1cGxpY2F0ZSBleGlzdGluZyBsb2dpYyAo ZS5nLiB0aGUgZHBjZCByZWFkKSwgc28gdGhpcyBpc24ndCBqdXN0IGFib3V0Cj4gdGhlIGVkaWQu ClBhdWxvIG5vdGljZWQgdGhpcyBhcyB3ZWxsIGFuZCBJIHdhcyBhZGRyZXNzaW5nIGl0IGFzIGl0 IGNhbWUgdXAgaW4gCnJldmlldy4gSW4gdGhlIHBhdGNoIGNodXJuIHNvbWUgb2YgdGhvc2UgY2hh bmdlcyBtYXkgaGF2ZSBiZWVuIGxvc3Qgb3IgCnJldmVydGVkLCBidXQgdGhpcyBpcyBzb21ldGhp bmcgSSB3aWxsIGNvbnRpbnVlIHRvIGZpeCBhcyBJIHdvcmsgb3V0IAp0aGlzIGNvZGUuCj4gVGhl IG90aGVyIGFzcGVjdCBoZXJlIGlzIHRoYXQgbm93YWRheXMgd2UgZG8gY2FjaGUgdGhlIGVkaWQg Zm9yIGRwIHBvcnRzCj4gYWdncmVzc2l2ZWx5LCB3aGljaCBtZWFucyBpZiB3ZSBkb24ndCByZWFk IHRoZSBlZGlkIHRoZSBrZXJuZWwgd2lsbCBpbmRlZWQKPiBrZWVwIG9uIHVzaW5nIGEgc3RhbGUg b25lLiBIZW5jZSB0aGVyZSdzIGEgZ29vZCByaXNrIHRoYXQgd2UgZG9uJ3QganVzdAo+IGhhdmUg YSBtaW5vciBwaWVjZSBvZiBkdWN0LXRhcGUgdG8ga2VlcCB0aGUgc29tZXdoYXQgc3RyYW5nZSBl eHBlY3RhdGlvbnMKPiBvZiBEUCBjb21wbGlhbmNlIHRlc3RlcnMgaGFwcHkgYnV0IG1pZ2h0IGJl IGhpZGluZyBhIHJlYWwgYnVnIGluIG91ciBEUAo+IGNvZGUuIEdpdmluZyBob3cgbWFueSB3ZSd2 ZSBoYWQgdGhhdCBzZWVtcyBmYWlybHkgbGlrZWx5IGFuZCBJJ20gbm90IGhhcHB5Cj4gd2l0aCBz d2VlcGluZyB0aGlzIHVuZGVyIHRoZSBydWcuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBhIHNvbGlk Cj4gYW5hbHlzaXMgYW5kIGV4cGxhbmF0aW9uIGVpdGhlciB3YXkgKGkuZS4gd2hldGhlciB0aGlz IGlzIGEgYnVnIG9yIGp1c3QgYW4KPiBvdmVybHkgc3RyaWN0IGRwIGNvbXBsaWFuY2UgdGVzdGVy IHJlcXVpcmVtZW50KS4KSSB0aGluayB0aGlzIGNhbiBiZSByZXNvbHZlZCBieSBzdGFydGluZyB0 byByZXdvcmsgdGhpcyBpbiAKaW50ZWxfZHBfZGV0ZWN0KCkuIFRoZSBEUENEIGFuZCBFRElEIHJl YWRzL3VwZGF0ZXMgaGFwcGVuIGhlcmUsIHNvIHRoaXMgCmlzIHRoZSBtb3N0IGxvZ2ljYWwgcGxh Y2UgdG8gc3RhcnQgaW50ZWdyYXRpbmcgdGhlIGNvZGUgZnJvbSAKY2hlY2tfbGlua19zdGF0dXMo KS4gIEkgYmVsaWV2ZSBpdCBjYW4gYmUgZG9uZSBzdWNoIHRoYXQgaXQgc2F0aXNmaWVzIApib3Ro IHJlYWwgd29ybGQgb3BlcmF0aW9ucyBhbmQgY29tcGxpYW5jZSB0ZXN0aW5nLCB3aXRoIGEgbWlu aW11bSBvZiAKc3BlY2lhbCBjYXNlcyB0byBhY2NvbW1vZGF0ZSB0aGUgdGVzdCBhcHBhcmF0dXMu Cgo+Cj4gRmluYWxseSB0aGVyZSdzIHRoZSBkcCBob3RwbHVnIGhhbmRsaW5nLiBFdmVyIHNpbmNl IE1TVCBzdXBwb3J0IHdhcyBtZXJnZWQKPiB0aGlzIGhhcyBhIGJlZW4gYSBsb3Qgb2YgZnVuIGFu ZCB0b29rIHVzIGEgd2hpbGUgdG8gbWFrZSBpdCB3b3JrIGNvcnJlY3RseQo+IC0gbG90cyBvZiBk ZWFkbG9ja3MgYW5kIG90aGVyIGlzc3Vlcy4gQW5kIGdpdmVuIHRoZSBhYm92ZSB3ZSBzdGlsbCBz ZWVtIHRvCj4gaGF2ZSByZWdyZXNzaW9ucyBkdWUgdG8gTVNUIHN1cHBvcnQsIG9yIGF0IGxlYXN0 IGV2aWRlbmNlIGZvciBzdWNoLiBTaW5jZQo+IHRoaXMgaXMgYSBmYWlybHkgZnJhZ2lsZSBwaWVj ZSBvZiBjb2RlLCB3aGljaCBpcyBhbHNvIG5vdCB0aGF0IHdlbGwtdGVzdGVkCj4gKHdlIGRvbid0 IGhhdmUgYW55IE1TVCBodyBpbiBvdXIgdGVzdCBtYXRyaXggeWV0KSBJIHByZWZlciB0byBrZWVw IGNoYW5nZXMKPiB0byBhIG1pbmltdW0uIE1lcmdpbmcgdGhlc2UgcGF0Y2hlcyBoZXJlIGZpcnN0 IGFuZCB0aGVuIHBvdGVudGlhbGx5Cj4gdW5kb2luZyB0aGVtIGFnYWluIGJlY2F1c2UgdGhlIGJ1 ZyBoYXMgYmVlbiB0aGUgKG1pcylwbGFjZW1lbnQgb2YgdGhlIHRlc3QKPiByZXF1ZXN0IGhhbmRs ZXIgaW4gdGhlIE1TVCBwYXRjaGVzIGZlZWxzIHRvbyByaXNreS4KSSBjYW4gdW5kZXJzdGFuZCB5 b3VyIHBvaW50IGhlcmUuIEFzIEkgaW5kaWNhdGVkIGFib3ZlLCBJIHRoaW5rIHRoZSBvbmx5IApy ZWFsIGNoYW5nZSByZXF1aXJlZCBpcyB0byBlbnN1cmUgdGhhdCBJUlFfTk9ORSBpcyByZXR1cm5l ZCBmb3IgdGhlIFNTVCAKY2FzZSBzdWNoIHRoYXQgdGhlIGNvcnJlY3Qgd29yayBmdW5jdGlvbnMg YXJlIGludm9rZWQuCj4gR2l2ZW4gYWxsIHRoYXQgSSdkIGxpa2UgdG8gaG9sZCBvZmYgbWVyZ2lu ZyB0aGVzZSBwYXRjaGVzIHRoYXQgcmV3b3JrIHRoZQo+IGNvZGUgYXJvdW5kIHRoZSBjaGVja19s aW5rX3N0YXR1cyBmdW5jdGlvbiB1bnRpbCB3ZSBoYXZlIGNsYXJpdHkgaGVyZS4KPgo+IEkndmUg cHVsbGVkIGluIHRoZSBvdGhlciBwYXRjaGVzIG1lYW53aGlsZSB3aGljaCBhcmUgcmV2aWV3ZWQg YW5kIHJlYWR5LiBJCj4gYWxzbyB0aGluayB3ZSBjYW4gcHVsbCBpbiB0aGUgZHJtX2VkaWQuYyBw YXRjaCB3aXRoIHRoZSBzdGF0aXN0aWNzIGNvZGUgd2UKPiBuZWVkIGZvciBjb21wbGlhbmNlIHRl c3RpbmcgYWhlYWQgb2YgcmVzb2x2aW5nIHRoZSBhYm92ZSBvcGVucy4gQW5kIGl0Cj4gd291bGQg YmUgZ29vZCB0byBnZXQgc29tZSBmZWVkYmFjayBmcm9tIG90aGVyIChub24taW50ZWwpIGRybSBk ZXZlbG9wZXJzCj4gYmVmb3JlaGFuZCwgdGhlIGNoYW5nZXMgYXJlIHF1aXRlIGludmFzaXZlIGlu IHNvbWUgcGFydHMuCj4KPiBJJ3ZlIGNoYXR0ZWQgYSBsb3Qgd2l0aCBUb2RkIGFuZCBQYXVsbyBh bmQgSSB0aGluayBteSBkZWNpc2lvbiBoZXJlIGFuZAo+IHRoZSByb3VnaCBwbGFuIGxhaWQgb3V0 IGlzIHRoZSBiZXN0IGNob2ljZSBJIGhhdmUgZnJvbSBhIHRlY2huaWNhbCBwb2ludAo+IG9mIHZp ZXcuCj4KPiBUaGFua3MsIERhbmllbAoKVGhhbmsgeW91IGZvciB0aGUgZmVlZGJhY2ssIERhbmll bC4gSSB0aGluayB0aGlzIGRpc2N1c3Npb24gbmVlZHMgdG8gYmUgCmNhcnJpZWQgZm9yd2FyZCBp bnRvIHRoZSBWNiBvZiB0aGUgcGF0Y2ggc2V0IHRvIGtlZXAgdGhpbmdzIGN1cnJlbnQgCnRoZXJl LiBJJ20gZ29pbmcgdG8gYmVnaW4gd29ya2luZyBvbiB0aGUgc29sdXRpb24gZm9yIHRoaXMgbm93 LgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==