From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v4 1/2] drm/i915/dp: Enable DP audio stall fix for gen9 platforms Date: Wed, 04 Jan 2017 11:34:53 +0200 Message-ID: <87r34jgoci.fsf@intel.com> References: <1477442271.19344.41.camel@dk-H97M-D3H> <1477449456-22146-1-git-send-email-dhinakaran.pandiyan@intel.com> <87vaw3gsav.fsf@intel.com> <1478285685.16546.4.camel@dk-H97M-D3H> <87wpghiul4.fsf@intel.com> <1478392821.16546.28.camel@dk-H97M-D3H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C9C26E6CA for ; Wed, 4 Jan 2017 09:34:56 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Peter =?utf-8?Q?Fr=C3=BChberger?= , "Pandiyan, Dhinakaran" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwNCBKYW4gMjAxNywgUGV0ZXIgRnLDvGhiZXJnZXIgPGZyaXRzY2hAa29kaS50dj4g d3JvdGU6Cj4gSGkKPgo+IE9uIFN1biwgTm92IDYsIDIwMTYgYXQgMToyMyBBTSwgUGFuZGl5YW4s IERoaW5ha2FyYW4gPAo+IGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPiB3cm90ZToKPgo+ PiBPbiBTYXQsIDIwMTYtMTEtMDUgYXQgMjE6NDAgKzAyMDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+ PiA+IE9uIEZyaSwgMDQgTm92IDIwMTYsICJQYW5kaXlhbiwgRGhpbmFrYXJhbiIgPAo+PiBkaGlu YWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4gd3JvdGU6Cj4+ID4gPiBPbiBGcmksIDIwMTYtMTEt MDQgYXQgMTc6NDggKzAyMDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+PiA+ID4+IE9uIFdlZCwgMjYg T2N0IDIwMTYsIERoaW5ha2FyYW4gUGFuZGl5YW4gPAo+PiBkaGluYWthcmFuLnBhbmRpeWFuQGlu dGVsLmNvbT4gd3JvdGU6Cj4+ID4gPj4gPiBFbmFibGluZyBEUCBhdWRpbyBzdGFsbCBmaXggaXMg bmVjZXNzYXJ5IHRvIHBsYXkgYXVkaW8gb3ZlciBEUAo+PiBIQlIyLiBTbywKPj4gPiA+PiA+IGxl dCdzIHNldCB0aGlzIGJpdCByaWdodCBiZWZvcmUgZW5hYmxpbmcgdGhlIGF1ZGlvIGNvZGVjLiBQ bGF5aW5nCj4+IGF1ZGlvCj4+ID4gPj4gPiB3aXRob3V0IHNldHRpbmcgdGhpcyBiaXQgcmVzdWx0 cyBpbiBwaXBlIEZJRk8gdW5kZXJydW5zLgo+PiA+ID4+ID4KPj4gPiA+PiA+IFRoaXMgd29ya2Fy b3VuZCBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIGF1ZGlvIHNhbXBsZSByYXRlcyB1cCB0bwo+PiA5 NmtIei4gRm9yCj4+ID4gPj4gPiBmcmVxdWVuY2llcyBhYm92ZSA5NmtIeiwgdGhpcyBpcyBpbnN1 ZmZpY2llbnQgYW5kIGNkY2xrIHNob3VsZCBiZQo+PiBpbmNyZWFzZWQKPj4gPiA+PiA+IHRvIGF0 IGxlYXN0IDQzMiBNSHosIGp1c3QgbGlrZSBCRFcuIFNpbmNlLCB0aGUgYXVkaW8gZHJpdmVyIGRv ZXMgbm90Cj4+ID4gPj4gPiBzdXBwb3J0IHNhbXBsZSByYXRlcyA+IDQ4IGtIeiwgd2UgYXJlIHNh ZmUgd2l0aCB0aGlzIGZpeCBmb3Igbm93Lgo+PiA+ID4+Cj4+ID4gPj4gRG8gd2Ugc3RpbGwgbmVl ZCB0aGlzIHBhdGNoIG5vdyB0aGF0IHRoZXNlIHR3byBoYXZlIGJlZW4gcHVzaGVkPwo+PiA+ID4+ Cj4+ID4gPj4gYjMwY2U5ZTA1NTJhIGRybS9pOTE1L2RwOiBCRFcgY2RjbGsgZml4IGZvciBEUCBh dWRpbwo+PiA+ID4+IDljNzU0MDI0MTg4NSBkcm0vaTkxNS9kcDogRXh0ZW5kIEJEVyBEUCBhdWRp byB3b3JrYXJvdW5kIHRvIEdFTjkKPj4gcGxhdGZvcm1zCj4+ID4gPj4KPj4gPiA+PiBCUiwKPj4g PiA+PiBKYW5pLgo+PiA+ID4+Cj4+ID4gPj4KPj4gPiA+Pgo+PiA+ID4KPj4gPiA+IE5vLCB3ZSBh cmUgZ29vZCBhZmFpay4gVGhpcyBwYXRjaCB3b3VsZCBoYXZlIGhlbHBlZCB1cyB0byBtYWtlIHVz ZSBvZiBhCj4+ID4gPiBsb3dlciBjZGNsayAoMzM3LjUgTUh6KSwgd2l0aCBjb25zdHJhaW50cyBv biBhdWRpbyBiaXQgcmF0ZS4gT3BlcmF0aW5nCj4+ID4gPiBhdCA0MzIgTUh6LCBsaWtlIHdlIGRv IG5vdywgcnVsZXMgb3V0IHRoZSBuZWVkIGZvciB0aGlzIHBhdGNoLgo+PiA+Cj4+ID4gSG1tLCB3 aGF0IGFib3V0IDUuNCBHYnBzIGxpbmsgd2l0aCAxIG9yIDIgbGFuZXM/Cj4+ID4KPj4gPiBCUiwK Pj4gPiBKYW5pLgo+PiA+Cj4+Cj4+IEdvb2QgcG9pbnQsIEkgdGhpbmsgaXQgd2lsbCBkZXBlbmQg b24gdGhlIGF1ZGlvIHNhbXBsaW5nIHJhdGUuIEJ1dCwgSQo+PiBoYXZlIHRvIGZpZ3VyZSBvdXQg YSB3YXkgdG8gcGxheSBoaWdoIHNhbXBsaW5nIHJhdGUgYXVkaW8gKD4gOTYgS0h6KSBhbmQKPj4g dGVzdCA1LjQgR2JwcyB3aXRoIDEgb3IgMiBsYW5lcy4KPj4KPj4gVGhlIG90aGVyIG9wdGlvbiBp cyB0byBwbGF5IHNhZmUgYW5kIGFwcGx5IHRoaXMgcGF0Y2ggd2l0aCBldmVuIGxlc3Nlcgo+PiBy ZXN0cmljdGlvbnMsIHNheSBsaW5rIHJhdGUgPj0gMi43IEdicHMuCj4+Cj4+Cj4+IC1ESwo+Pgo+ Cj4gYXMgd2UgYXJlIGN1cnJlbnRseSB0YWxraW5nIGFib3V0IGhpZ2ggc2FtcGxlcmF0ZXMgaW4g dGhpcyBjb250ZXh0LiBJCj4gd2FudGVkIHRvIHBvc3QgYSBwZXJoYXBzIHJlbGF0ZWQgaXNzdWUu IE9uIG15IEFwb2xsbyBMYWtlIChKNDIwNSkgSSBoYXZlCj4gdHdvIG91dHB1dHMuIE9uZSBEVkkg YW5kIG9uZSBIRE1JIDIuMCB2aWEgaW50ZXJuYWwgRFAuIFZpYSBEVkkgdGhlCj4gZm9sbG93aW5n IHdvcmtzIHdpdGhvdXQgaXNzdWVzLCB2aWEgRFAgaXQgZmFpbHMuIEFzIHRoZSBvcmlnaW5hbCBj b21taXQKPiBtZW50aW9ucyBIQlIsIEkgdGhpbmsgdGhlcmUgaXMgc3RpbGwgc29tZXRoaW5nIG1p c3NpbmcuIFdlIHN1Ym1pdCBUcnVlSEQsCj4gRFRTLUhEIHZpYSAxOTIga2h6IGFuZCAxNiBiaXQg Zm9ybWF0IHdoaWxlIHNldHRpbmcgQUVTMD0yCj4KPiBZb3UgY2FuIGVhc2lseSByZXByb2R1Y2Ug d2l0aCAoeW91IG9idmlvdXNseSBuZWVkIGEgRFRTLUhELCBUcnVlSEQgY2FwYWJsZQo+IEFWUiBh dHRhY2hlZCB0byB5b3VyIEhETUkgMi4wIChEUCkgb3V0KToKCkp1c3QgdG8gY2xhcmlmeSwgaXMg dGhlIERQIC0+IEhETUkyLjAgY29udmVydGVyIGludGVybmFsIHRvIHRoZSBtYWNoaW5lPwpMU1BD T04gcmVsYXRlZCBtZXNzYWdlcyBpbiB0aGUgZG1lc2cgd2l0aCBkcm0uZGVidWc9MTQ/IERvIHlv dSBoYXZlIGEgRFAKb3IgYW4gSERNSSBwaHlzaWNhbCBjb25uZWN0b3IgaW4gdGhlIGNoYXNzaXM/ CgoKQlIsCkphbmkuCgo+Cj4gI1RydWVIRAo+IGFwbGF5IC1EICdoZG1pOkNBUkQ9UENILERFVj0w LEFFUzA9MicgLWM4IC1mczE2X2xlIC1yMTkyMDAwCj4gdGVzdGkudHJ1ZWhkLmFuc3NpMS5mZi42 MHMuc3BkaWYKPiAjRFRTLUhECj4gYXBsYXkgLUQgJ2hkbWk6Q0FSRD1QQ0gsREVWPTAsQUVTMD0y JyAtYzggLWZzMTZfbGUgLXIxOTIwMDAKPiB0ZXN0aS5kdHNoZC5hbnNzaTEubWEtNzEtMjQuc3Bk aWYKPiBTYW1wbGVzOgo+IGh0dHA6Ly93d3cuYXZlbmFyZC5vcmcvZmlsZXMvbWVkaWEvbWVkaWF0 ZXN0L2F1ZGlvdGVzdC9IREFVRElPL1Bhc3N0aHJvdWdoLwo+Cj4gRm9yIHRoZSBvbGQgSERNSSAx LnggY2hpcHMgaXQgd2FzIGZpeGVkIHZpYToKPiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3Jn L3Nob3dfYnVnLmNnaT9pZD00OTA1NQo+Cj4gSXMgdGhpcyBhbHNvIHBsYW5uZWQgZm9yIERQIHdp dGhpbiB0aGF0IHBhdGNoIHNlcmllcz8KPgo+IEJlc3QgcmVnYXJkcwo+IFBldGVyCj4KPj4KPj4g PiA+Cj4+ID4gPiAtREsKPj4gPiA+Cj4+ID4gPj4gPgo+PiA+ID4+ID4gdjI6IElubGluZWQgdGhl IGNvZGUgY2hhbmdlIHdpdGhpbiBoc3dfYXVkaW9fY29kZWNfZW5hYmxlKCkgKEphbmkpCj4+ID4g Pj4gPiAgICAgRml4ZWQgdGhlIHBvcnQgY2xvY2sgdHlwbwo+PiA+ID4+ID4gICAgIEFkZGVkIFRP RE8gY29tbWVudAo+PiA+ID4+ID4gU2lnbmVkLW9mZi1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8 ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4+ID4gPj4gPiAtLS0KPj4gPiA+PiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgIHwgIDUgKysrKysKPj4gPiA+PiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgMzAKPj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCj4+ID4gPj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCj4+ID4gPj4gPgo+PiA+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4+ID4gPj4gPiBpbmRleCAwMGVmYWExLi43NmRhYzQ4IDEwMDY0NAo+PiA+ID4+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiA+ID4+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiA+ID4+ID4gQEAgLTYyMzYsNiArNjIzNiwx MSBAQCBlbnVtIHsKPj4gPiA+PiA+ICAjZGVmaW5lIFNMSUNFX0VDT19DSElDS0VOMCAgICAgICAg ICAgICAgICAgICAgICBfTU1JTygweDczMDgpCj4+ID4gPj4gPiAgI2RlZmluZSAgIFBJWEVMX01B U0tfQ0FNTUlOR19ESVNBQkxFICAgICAgICAgICAgKDEgPDwgMTQpCj4+ID4gPj4gPgo+PiA+ID4+ ID4gKyNkZWZpbmUgX0NISUNLRU5fVFJBTlNfQSAgICAgICAgMHg0MjBDMAo+PiA+ID4+ID4gKyNk ZWZpbmUgX0NISUNLRU5fVFJBTlNfQiAgICAgICAgMHg0MjBDNAo+PiA+ID4+ID4gKyNkZWZpbmUg Q0hJQ0tFTl9UUkFOUyh0cmFuKSBfTU1JT19UUkFOUyh0cmFuLCBfQ0hJQ0tFTl9UUkFOU19BLAo+ PiBfQ0hJQ0tFTl9UUkFOU19CKQo+PiA+ID4+ID4gKyNkZWZpbmUgU1BBUkVfMTMgICAgICAgICgx PDwxMykKPj4gPiA+PiA+ICsKPj4gPiA+PiA+ICAvKiBXYUNhdEVycm9yUmVqZWN0aW9uSXNzdWUg Ki8KPj4gPiA+PiA+ICAjZGVmaW5lIEdFTjdfU1FfQ0hJQ0tFTl9NQkNVTklUX0NPTkZJRyAgICAg ICAgICBfTU1JTygweDkwMzApCj4+ID4gPj4gPiAgI2RlZmluZSAgR0VON19TUV9DSElDS0VOX01C Q1VOSVRfU1FJTlRNT0IgICAgICAgKDE8PDExKQo+PiA+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jCj4+ID4gPj4gPiBpbmRleCA3MDkzY2ZiLi44OTRmMTFlIDEwMDY0NAo+PiA+ ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiA+ID4+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiA+ID4+ID4gQEAgLTI4 Myw2ICsyODMsOCBAQCBzdGF0aWMgdm9pZCBoc3dfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QK Pj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4gPiA+PiA+ICB7Cj4+ID4gPj4gPiAgICAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+PiB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKPj4gPiA+PiA+ICAgICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0KPj4gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+PiA+ID4+ID4gKyAg ICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfY29uZmlnID0gIGludGVsX2NydGMt PmNvbmZpZzsKPj4gPiA+PiA+ICsgICAgICAgIGVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2Rl ciA9Cj4+IGNydGNfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPj4gPiA+PiA+ICAgICAgICAgIGVu dW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gPiA+PiA+ICAgICAgICAgIHVpbnQz Ml90IHRtcDsKPj4gPiA+PiA+Cj4+ID4gPj4gPiBAQCAtMjkwLDEzICsyOTIsMjEgQEAgc3RhdGlj IHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2Rpc2FibGUoc3RydWN0Cj4+IGludGVsX2VuY29kZXIgKmVu Y29kZXIpCj4+ID4gPj4gPgo+PiA+ID4+ID4gICAgICAgICAgbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmF2X211dGV4KTsKPj4gPiA+PiA+Cj4+ID4gPj4gPiArICAgICAgICAvKkRpc2FibGUgRFAgYXVk aW8gc3RhbGwgZml4IGZvciBIQlIyKi8KPj4gPiA+PiA+ICsgICAgICAgIGlmIChJU19HRU45KGRl dl9wcml2KSAmJiBpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfY29uZmlnKQo+PiAmJgo+ PiA+ID4+ID4gKyAgICAgICAgICAgIGNydGNfY29uZmlnLT5wb3J0X2Nsb2NrID49IDU0MDAwMCkg ewo+PiA+ID4+ID4gKyAgICAgICAgICAgICAgICB0bXAgPSBJOTE1X1JFQUQoQ0hJQ0tFTl9UUkFO UyhjcHVfdHJhbnNjb2RlcikpOwo+PiA+ID4+ID4gKyAgICAgICAgICAgICAgICB0bXAgJj0gflNQ QVJFXzEzOwo+PiA+ID4+ID4gKyAgICAgICAgICAgICAgICBJOTE1X1dSSVRFKENISUNLRU5fVFJB TlMoY3B1X3RyYW5zY29kZXIpLCB0bXApOwo+PiA+ID4+ID4gKyAgICAgICAgfQo+PiA+ID4+ID4g Kwo+PiA+ID4+ID4gICAgICAgICAgLyogRGlzYWJsZSB0aW1lc3RhbXBzICovCj4+ID4gPj4gPiAg ICAgICAgICB0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9DRkcocGlwZSkpOwo+PiA+ID4+ID4gICAg ICAgICAgdG1wICY9IH5BVURfQ09ORklHX05fVkFMVUVfSU5ERVg7Cj4+ID4gPj4gPiAgICAgICAg ICB0bXAgfD0gQVVEX0NPTkZJR19OX1BST0dfRU5BQkxFOwo+PiA+ID4+ID4gICAgICAgICAgdG1w ICY9IH5BVURfQ09ORklHX1VQUEVSX05fTUFTSzsKPj4gPiA+PiA+ICAgICAgICAgIHRtcCAmPSB+ QVVEX0NPTkZJR19MT1dFUl9OX01BU0s7Cj4+ID4gPj4gPiAtICAgICAgICBpZiAoaW50ZWxfY3J0 Y19oYXNfZHBfZW5jb2RlcihpbnRlbF9jcnRjLT5jb25maWcpKQo+PiA+ID4+ID4gKyAgICAgICAg aWYgKGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19jb25maWcpKQo+PiA+ID4+ID4gICAg ICAgICAgICAgICAgICB0bXAgfD0gQVVEX0NPTkZJR19OX1ZBTFVFX0lOREVYOwo+PiA+ID4+ID4g ICAgICAgICAgSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPj4gPiA+PiA+Cj4+ ID4gPj4gPiBAQCAtMzE1LDYgKzMyNSw4IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRpb19jb2RlY19l bmFibGUoc3RydWN0Cj4+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gPiA+PiA+ICB7Cj4+ ID4gPj4gPiAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+PiB0 b19pOTE1KGNvbm5lY3Rvci0+ZGV2KTsKPj4gPiA+PiA+ICAgICAgICAgIHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0KPj4gdG9faW50ZWxfY3J0YyhpbnRlbF9lbmNvZGVyLT5iYXNlLmNy dGMpOwo+PiA+ID4+ID4gKyAgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfY29u ZmlnID0gIGludGVsX2NydGMtPmNvbmZpZzsKPj4gPiA+PiA+ICsgICAgICAgIGVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9Cj4+IGNydGNfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPj4g PiA+PiA+ICAgICAgICAgIGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gPiA+ PiA+ICAgICAgICAgIGVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZW5jb2Rlci0+cG9ydDsKPj4gPiA+ PiA+ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVsZCA9IGNvbm5lY3Rvci0+ZWxkOwo+PiA+ID4+ ID4gQEAgLTMyNiw2ICszMzgsMjIgQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QKPj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiA+ID4+ID4KPj4gPiA+PiA+ ICAgICAgICAgIG11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4+ID4gPj4gPgo+PiA+ ID4+ID4gKyAgICAgICAgLyogRW5hYmxlIERQIGF1ZGlvIHN0YWxsIGZpeCBmb3IgSEJSMgo+PiA+ ID4+ID4gKyAgICAgICAgICoKPj4gPiA+PiA+ICsgICAgICAgICAqIFRPRE86IFRoaXMgd29ya2Fy b3VuZCBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIGF1ZGlvCj4+IHNhbXBsZSByYXRlcyB1cAo+PiA+ ID4+ID4gKyAgICAgICAgICogdG8gOTZrSHouIEZvciBmcmVxdWVuY2llcyBhYm92ZSA5NmtIeiwg dGhpcyBpcwo+PiBpbnN1ZmZpY2llbnQgYW5kCj4+ID4gPj4gPiArICAgICAgICAgKiBjZGNsayBz aG91bGQgYmUgaW5jcmVhc2VkIHRvIGF0IGxlYXN0IDQzMiBNSHosIGp1c3QKPj4gbGlrZSBCRFcu IFNpbmNlLAo+PiA+ID4+ID4gKyAgICAgICAgICogdGhlIGF1ZGlvIGRyaXZlciBkb2VzIG5vdCBz dXBwb3J0IHNhbXBsZSByYXRlcyA+IDQ4Cj4+IGtIeiwgd2UgYXJlIHNhZmUKPj4gPiA+PiA+ICsg ICAgICAgICAqIHdpdGggdGhpcyBmaXggZm9yIG5vdy4KPj4gPiA+PiA+ICsgICAgICAgICAqLwo+ PiA+ID4+ID4gKwo+PiA+ID4+ID4gKyAgICAgICAgaWYgKElTX0dFTjkoZGV2X3ByaXYpICYmIGlu dGVsX2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19jb25maWcpCj4+ICYmCj4+ID4gPj4gPiArICAg ICAgICAgICAgY3J0Y19jb25maWctPnBvcnRfY2xvY2sgPj0gNTQwMDAwKSB7Cj4+ID4gPj4gPiAr ICAgICAgICAgICAgICAgIHRtcCA9IEk5MTVfUkVBRChDSElDS0VOX1RSQU5TKGNwdV90cmFuc2Nv ZGVyKSk7Cj4+ID4gPj4gPiArICAgICAgICAgICAgICAgIHRtcCB8PSBTUEFSRV8xMzsKPj4gPiA+ PiA+ICsgICAgICAgICAgICAgICAgSTkxNV9XUklURShDSElDS0VOX1RSQU5TKGNwdV90cmFuc2Nv ZGVyKSwgdG1wKTsKPj4gPiA+PiA+ICsgICAgICAgIH0KPj4gPiA+PiA+ICsKPj4gPiA+PiA+ICAg ICAgICAgIC8qIEVuYWJsZSBhdWRpbyBwcmVzZW5jZSBkZXRlY3QsIGludmFsaWRhdGUgRUxEICov Cj4+ID4gPj4gPiAgICAgICAgICB0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9QSU5fRUxEX0NQX1ZM RCk7Cj4+ID4gPj4gPiAgICAgICAgICB0bXAgfD0gQVVESU9fT1VUUFVUX0VOQUJMRShwaXBlKTsK Pj4gPiA+Pgo+PiA+ID4KPj4gPgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4KCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBT b3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==