From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 12/23] drm/i915: Sanitize the TypeC connect/detect sequences Date: Sat, 8 Jun 2019 20:40:36 +0300 Message-ID: <20190608174036.GC27722@ideak-desk.fi.intel.com> References: <20190604145826.16424-1-imre.deak@intel.com> <20190604145826.16424-13-imre.deak@intel.com> <79180a7982973a7fe8f090b486bfdf351b56bfa4.camel@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A4BD89079 for ; Sat, 8 Jun 2019 17:40:42 +0000 (UTC) Content-Disposition: inline In-Reply-To: <79180a7982973a7fe8f090b486bfdf351b56bfa4.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Souza, Jose" Cc: "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCBKdW4gMDgsIDIwMTkgYXQgMDE6MTU6NDRBTSArMDMwMCwgU291emEsIEpvc2Ugd3Jv dGU6Cj4gT24gVHVlLCAyMDE5LTA2LTA0IGF0IDE3OjU4ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6 Cj4gPiBNYWtlIHRoZSBvcmRlciBkdXJpbmcgZGV0ZWN0aW9uIG1vcmUgY29uc2lzdGVudDogZmly c3QgcmVzZXQgdGhlCj4gPiBUeXBlQwo+ID4gcG9ydCBtb2RlIGlmIG5lZWRlZCAoYWRkaW5nIG5l dyBoZWxwZXJzIGZvciB0aGlzKSwgdGhlbiBkZXRlY3QgYW55Cj4gPiBjb25uZWN0ZWQgc2luay4K PiA+IAo+ID4gVG8gY2hlY2sgaWYgYSBwb3J0IG1vZGUgcmVzZXQgaXMgbmVlZGVkIGRldGVybWlu ZSBmaXJzdCB0aGUgdGFyZ2V0Cj4gPiBwb3J0Cj4gPiBtb2RlIGJhc2VkIG9uIHRoZSBsaXZlIHN0 YXR1cyBpZiBhIHNpbmsgaXMgYWxyZWFkeSBjb25uZWN0ZWQgb3IgdGhlCj4gPiBQSFkgc3RhdHVz IGNvbXBsZXRlIGZsYWcgb3RoZXJ3aXNlLgo+ID4gCj4gPiBBZGQgYSBXQVJOIGluIGxlZ2FjeSBt b2RlIGlmIHVuZXhwZWN0ZWRseSB3ZSBjYW4ndCBzZXQgdGhlIHVuc2FmZQo+ID4gbW9kZQo+ID4g b3IgaWYgdGhlIEZJQSBkb2Vzbid0IHByb3ZpZGUgdGhlIDQgbGFuZXMgcmVxdWlyZWQuCj4gPiAK PiA+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KPiA+ IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiBDYzogUGF1bG8g WmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IEltcmUg RGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3RjLmMgfCAxMDQgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gPiAt LQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkK PiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmMKPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMuYwo+ID4gaW5kZXggZDkxMzgxYzBlODdk Li45ODMyZTJkZGI5MmUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF90Yy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5jCj4gPiBAQCAt MTg4LDQzICsxODgsNDYgQEAgc3RhdGljIGJvb2wgaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKHN0 cnVjdAo+ID4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKPiA+ICAgKiB3aWxsIHJlcXVp cmUgYSBsb3Qgb2YgY29vcmRpbmF0aW9uIHdpdGggdXNlciBzcGFjZSBhbmQgdGhvcm91Z2gKPiA+ IHRlc3RpbmcgZm9yCj4gPiAgICogdGhlIGV4dHJhIHBvc3NpYmxlIGNhc2VzLgo+ID4gICAqLwo+ ID4gLXN0YXRpYyBib29sIGljbF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCkKPiA+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LQo+ID4gPmJhc2UuYmFzZS5k ZXYpOwo+ID4gIAllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3By aXYsIGRpZ19wb3J0LQo+ID4gPmJhc2UucG9ydCk7Cj4gPiAtCXUzMiBsaXZlX3N0YXR1c19tYXNr Owo+ID4gLQo+ID4gLQlpZiAoZGlnX3BvcnQtPnRjX21vZGUgIT0gVENfUE9SVF9MRUdBQ1kgJiYK PiA+IC0JICAgIGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQo+ID4gLQkJcmV0 dXJuIHRydWU7Cj4gPiAgCj4gPiAgCWlmICghaWNsX3RjX3BoeV9zdGF0dXNfY29tcGxldGUoZGln X3BvcnQpKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgbm90IHJlYWR5XG4i LAo+ID4gIAkJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCkpOwo+ID4gLQkJ V0FSTl9PTihkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpOwo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ ID4gKwkJZ290byBvdXRfc2V0X3RidF9hbHRfbW9kZTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAo IWljbF90Y19waHlfc2V0X3NhZmVfbW9kZShkaWdfcG9ydCwgZmFsc2UpKQo+ID4gLQkJcmV0dXJu IGZhbHNlOwo+ID4gKwlpZiAoIWljbF90Y19waHlfc2V0X3NhZmVfbW9kZShkaWdfcG9ydCwgZmFs c2UpICYmCj4gPiArCSAgICAhV0FSTl9PTihkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpKQo+ID4g KwkJZ290byBvdXRfc2V0X3RidF9hbHRfbW9kZTsKPiA+ICAKPiA+IC0JaWYgKGRpZ19wb3J0LT50 Y19tb2RlID09IFRDX1BPUlRfTEVHQUNZKQo+ID4gLQkJcmV0dXJuIHRydWU7Cj4gPiArCWlmIChk aWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpIHsKPiA+ICsJCVdBUk5fT04oaW50ZWxfdGNfcG9ydF9m aWFfbWF4X2xhbmVfY291bnQoZGlnX3BvcnQpICE9Cj4gPiA0KTsKPiA+ICsJCWRpZ19wb3J0LT50 Y19tb2RlID0gVENfUE9SVF9MRUdBQ1k7Cj4gPiAgCj4gPiAtCWxpdmVfc3RhdHVzX21hc2sgPSB0 Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOwo+ID4gKwkJcmV0dXJuOwo+ID4gKwl9 Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAqIE5vdyB3ZSBoYXZlIHRvIHJlLWNoZWNrIHRoZSBsaXZl IHN0YXRlLCBpbiBjYXNlIHRoZSBwb3J0Cj4gPiByZWNlbnRseQo+ID4gIAkgKiBiZWNhbWUgZGlz Y29ubmVjdGVkLiBOb3QgbmVjZXNzYXJ5IGZvciBsZWdhY3kgbW9kZS4KPiA+ICAJICovCj4gPiAt CWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiBCSVQoVENfUE9SVF9EUF9BTFQpKSkgewo+ID4gKwlp ZiAoISh0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpICYKPiA+IEJJVChUQ19QT1JU X0RQX0FMVCkpKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRp c2Nvbm5lY3RcbiIsCj4gPiAgCQkJICAgICAgdGNfcG9ydF9uYW1lKGRldl9wcml2LCB0Y19wb3J0 KSk7Cj4gPiAtCQlpY2xfdGNfcGh5X2Rpc2Nvbm5lY3QoZGlnX3BvcnQpOwo+ID4gLQkJcmV0dXJu IGZhbHNlOwo+ID4gKwkJZ290byBvdXRfc2V0X3NhZmVfbW9kZTsKPiA+ICAJfQo+ID4gIAo+ID4g LQlyZXR1cm4gdHJ1ZTsKPiA+ICsJZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX0RQX0FMVDsK PiA+ICsKPiA+ICsJcmV0dXJuOwo+ID4gKwo+ID4gK291dF9zZXRfc2FmZV9tb2RlOgo+ID4gKwlp Y2xfdGNfcGh5X3NldF9zYWZlX21vZGUoZGlnX3BvcnQsIHRydWUpOwo+ID4gK291dF9zZXRfdGJ0 X2FsdF9tb2RlOgo+ID4gKwlkaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiA+ ICB9Cj4gPiAgCj4gPiAgLyoKPiA+IEBAIC0yMzMsOSArMjM2LDYgQEAgc3RhdGljIGJvb2wgaWNs X3RjX3BoeV9jb25uZWN0KHN0cnVjdAo+ID4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkK PiA+ICAgKi8KPiA+ICB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4gPiA+YmFzZS5iYXNlLmRldik7Cj4gPiAt CWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3Bv cnQtCj4gPiA+YmFzZS5wb3J0KTsKPiA+IC0KPiA+ICAJc3dpdGNoIChkaWdfcG9ydC0+dGNfbW9k ZSkgewo+ID4gIAljYXNlIFRDX1BPUlRfTEVHQUNZOgo+ID4gIAljYXNlIFRDX1BPUlRfRFBfQUxU Ogo+ID4gQEAgLTI0OCwzMSArMjQ4LDQxIEBAIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0 cnVjdAo+ID4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICAJZGVmYXVsdDoKPiA+ ICAJCU1JU1NJTkdfQ0FTRShkaWdfcG9ydC0+dGNfbW9kZSk7Cj4gPiAgCX0KPiA+IC0KPiA+IC0J RFJNX0RFQlVHX0tNUygiUG9ydCAlczogbW9kZSAlcyBkaXNjb25uZWN0ZWRcbiIsCj4gPiAtCQkg ICAgICB0Y19wb3J0X25hbWUoZGV2X3ByaXYsIHRjX3BvcnQpLAo+ID4gLQkJICAgICAgdGNfcG9y dF9tb2RlX25hbWUoZGlnX3BvcnQtPnRjX21vZGUpKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGlj IHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ ICpkZXZfcHJpdiwKPiA+IC0JCQkJICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQKPiA+ICpp bnRlbF9kaWdfcG9ydCwKPiA+IC0JCQkJICAgIHUzMiBsaXZlX3N0YXR1c19tYXNrKQo+ID4gK3N0 YXRpYyBlbnVtIHRjX3BvcnRfbW9kZQo+ID4gK2ludGVsX3RjX3BvcnRfZ2V0X3RhcmdldF9tb2Rl KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIHsKPiA+IC0JZW51bSBw b3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gLQllbnVtIHRjX3BvcnRf bW9kZSBvbGRfbW9kZSA9IGludGVsX2RpZ19wb3J0LT50Y19tb2RlOwo+ID4gKwl1MzIgbGl2ZV9z dGF0dXNfbWFzayA9IHRjX3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhkaWdfcG9ydCk7Cj4gPiAgCj4g PiAtCWlmICghbGl2ZV9zdGF0dXNfbWFzaykKPiA+IC0JCXJldHVybjsKPiA+ICsJaWYgKGxpdmVf c3RhdHVzX21hc2spCj4gPiArCQlyZXR1cm4gZmxzKGxpdmVfc3RhdHVzX21hc2spIC0gMTsKPiA+ ICsKPiA+ICsJcmV0dXJuIGljbF90Y19waHlfc3RhdHVzX2NvbXBsZXRlKGRpZ19wb3J0KSAmJgo+ ID4gKwkgICAgICAgZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID8gVENfUE9SVF9MRUdBQ1kgOgo+ ID4gKwkJCQkJICBUQ19QT1JUX1RCVF9BTFQ7Cj4gCj4gVGhpcyB3aWxsIHJldHVybiAwIG9yIDEs IG5ldmVyIFRDX1BPUlRfTEVHQUNZKDIpIGJlY2F1c2Ugb2YgdGhlICImJiIuCgpOb3BlLCBDIG9w ZXJhdG9ycyBwcmVjZWRlbmNlIGlzIGZpcnN0ICImJiIgdGhlbiAiPzoiLiBTaG91bGQgYmUgZmlu ZS4KCj4gLVRPT01BTllSRUZBQ1RPUlMKPiBTdGFyaW5nIHRvIGxvdmUgYWdhaW4gaHVnZSBwYXRj aGVzIDpQCgpXZWxsIGFsbCB0aGUgcHJldmlvdXMgcmVmYWN0b3JpbmdzIHNob3VsZCBiZSBlYXNp ZXIgdG8gcmV2aWV3LCBzaW5jZQp0aGV5IGRvbid0IGNoYW5nZSB0aGUgZnVuY3Rpb25hbGl0eS4K ClRoZSBob3BlIHdhcyB0aGF0IHRoZSByZWZhY3RvcmluZyBwYXRjaGVzIG1ha2UgdGhlIHJldmll dyBvZiB0aGlzIG9uZQotIHdpdGggZnVuY3Rpb25hbGl0eSBjaGFuZ2VzIC0gZWFzaWVyIHRvIHJl dmlldy4KCj4gCj4gPiArfQo+ID4gIAo+ID4gLQlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IGZs cyhsaXZlX3N0YXR1c19tYXNrKSAtIDE7Cj4gPiArc3RhdGljIHZvaWQgaW50ZWxfdGNfcG9ydF9y ZXNldF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQKPiA+ICpkaWdfcG9ydCkKPiA+ICt7 Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3Bv cnQtCj4gPiA+YmFzZS5iYXNlLmRldik7Cj4gPiArCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50 ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtCj4gPiA+YmFzZS5wb3J0KTsKPiA+ICsJ ZW51bSB0Y19wb3J0X21vZGUgb2xkX3RjX21vZGUgPSBkaWdfcG9ydC0+dGNfbW9kZTsKPiA+ICAK PiA+IC0JaWYgKG9sZF9tb2RlICE9IGludGVsX2RpZ19wb3J0LT50Y19tb2RlKQo+ID4gLQkJRFJN X0RFQlVHX0tNUygiUG9ydCAlczogcG9ydCBoYXMgbW9kZSAlc1xuIiwKPiA+IC0JCQkgICAgICB0 Y19wb3J0X25hbWUoZGV2X3ByaXYsCj4gPiAtCQkJCQkgICBpbnRlbF9wb3J0X3RvX3RjKGRldl9w cml2LAo+ID4gcG9ydCkpLAo+ID4gLQkJCSAgICAgIHRjX3BvcnRfbW9kZV9uYW1lKGludGVsX2Rp Z19wb3J0LQo+ID4gPnRjX21vZGUpKTsKPiA+ICsJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19w b3J0KTsKPiA+ICsJaWNsX3RjX3BoeV9jb25uZWN0KGRpZ19wb3J0KTsKPiA+ICsKPiA+ICsJRFJN X0RFQlVHX0tNUygiUG9ydCAlczogVEMgcG9ydCBtb2RlIHJlc2V0ICglcyAtPiAlcylcbiIsCj4g PiArCQkgICAgICB0Y19wb3J0X25hbWUoZGV2X3ByaXYsIHRjX3BvcnQpLAo+ID4gKwkJICAgICAg dGNfcG9ydF9tb2RlX25hbWUob2xkX3RjX21vZGUpLAo+ID4gKwkJICAgICAgdGNfcG9ydF9tb2Rl X25hbWUoZGlnX3BvcnQtPnRjX21vZGUpKTsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIGJvb2wK PiA+ICtpbnRlbF90Y19wb3J0X25lZWRzX3Jlc2V0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0KQo+ID4gK3sKPiA+ICsJcmV0dXJuIGludGVsX3RjX3BvcnRfZ2V0X3RhcmdldF9t b2RlKGRpZ19wb3J0KSAhPSBkaWdfcG9ydC0KPiA+ID50Y19tb2RlOwo+ID4gK30KPiA+ICAKPiA+ ICAvKgo+ID4gICAqIFRoZSB0eXBlLUMgcG9ydHMgYXJlIGRpZmZlcmVudCBiZWNhdXNlIGV2ZW4g d2hlbiB0aGV5IGFyZQo+ID4gY29ubmVjdGVkLCB0aGV5IG1heQo+ID4gQEAgLTI4NiwyMyArMjk2 LDkgQEAgc3RhdGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0Cj4gPiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAgKi8KPiA+ICBib29sIGludGVsX3RjX3BvcnRf Y29ubmVjdGVkKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIHsKPiA+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0K PiA+ID5iYXNlLmJhc2UuZGV2KTsKPiA+IC0JdTMyIGxpdmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0 X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOwo+ID4gKwlpZiAoaW50ZWxfdGNfcG9ydF9uZWVk c19yZXNldChkaWdfcG9ydCkpCj4gPiArCQlpbnRlbF90Y19wb3J0X3Jlc2V0X21vZGUoZGlnX3Bv cnQpOwo+ID4gIAo+ID4gLQkvKgo+ID4gLQkgKiBUaGUgc3BlYyBzYXlzIHdlIHNob3VsZG4ndCBi ZSB1c2luZyB0aGUgSVNSIGJpdHMgZm9yCj4gPiBkZXRlY3RpbmcKPiA+IC0JICogYmV0d2VlbiBU QyBhbmQgVEJULiBXZSBzaG91bGQgdXNlIERGTEVYRFBTUC4KPiA+IC0JICovCj4gPiAtCWlmICgh bGl2ZV9zdGF0dXNfbWFzayAmJiAhZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KSB7Cj4gPiAtCQlp Y2xfdGNfcGh5X2Rpc2Nvbm5lY3QoZGlnX3BvcnQpOwo+ID4gLQo+ID4gLQkJcmV0dXJuIGZhbHNl Owo+ID4gLQl9Cj4gPiAtCj4gPiAtCWljbF91cGRhdGVfdGNfcG9ydF90eXBlKGRldl9wcml2LCBk aWdfcG9ydCwgbGl2ZV9zdGF0dXNfbWFzayk7Cj4gPiAtCWlmICghaWNsX3RjX3BoeV9jb25uZWN0 KGRpZ19wb3J0KSkKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+IC0KPiA+IC0JcmV0dXJuIHRydWU7 Cj4gPiArCXJldHVybiB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpICYgQklUKGRp Z19wb3J0LQo+ID4gPnRjX21vZGUpOwo+ID4gIH0KPiA+ICAKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4