From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v4 2/9] drm/i915: Add plumbing for digital connector state, v2. Date: Thu, 20 Apr 2017 08:11:53 +0200 Message-ID: References: <1491994207-25965-1-git-send-email-maarten.lankhorst@linux.intel.com> <1491994207-25965-3-git-send-email-maarten.lankhorst@linux.intel.com> <20170419154826.5sdqxi5mqwxeepef@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F5F26E00E for ; Thu, 20 Apr 2017 06:11:56 +0000 (UTC) In-Reply-To: <20170419154826.5sdqxi5mqwxeepef@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-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTktMDQtMTcgMTc6NDgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gV2VkLCBBcHIgMTIs IDIwMTcgYXQgMTI6NTA6MDBQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+IFNv bWUgYXRvbWljIHByb3BlcnRpZXMgYXJlIGNvbW1vbiBiZXR3ZWVuIHRoZSB2YXJpb3VzIGtpbmRz IG9mCj4+IGNvbm5lY3RvcnMsIGZvciBleGFtcGxlIGEgbG90IG9mIHRoZW0gdXNlIHBhbmVsIGZp dHRpbmcgbW9kZS4KPj4gSXQgbWFrZXMgc2Vuc2UgdG8gcHV0IGEgbG90IG9mIGl0IGluIGEgY29t bW9uIHBsYWNlLCBzbyBlYWNoCj4+IGNvbm5lY3RvciBjYW4gdXNlIGl0IHdoaWxlIHRoZXkncmUg YmVpbmcgY29udmVydGVkLgo+Pgo+PiBJbXBsZW1lbnQgdGhlIHByb3BlcnRpZXMgcmVxdWlyZWQg Zm9yIHRoZSBjb25uZWN0b3JzOgo+PiAtIHNjYWxpbmcgbW9kZSBwcm9wZXJ0eQo+PiAtIGZvcmNl IGF1ZGlvIHByb3BlcnR5Cj4+IC0gYnJvYWRjYXN0IHJnYgo+PiAtIGFzcGVjdCByYXRpbwo+Pgo+ PiBXaGlsZSBhdCBpdCwgbWFrZSBjbGVhciB0aGF0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0 b21pY19nZXRfcHJvcGVydHkKPj4gaXMgYSBoYWNrIHRoYXQgaGFzIHRvIGJlIHJlbW92ZWQgd2hl biBhbGwgY29ubmVjdG9yIHByb3BlcnRpZXMKPj4gYXJlIGNvbnZlcnRlZCB0byBhdG9taWMuCj4+ Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+IC0gU2NhbGluZyBtb2RlIGFuZCBhc3BlY3QgcmF0aW8g YXJlIHBhcnRseSBoYW5kbGVkIGluIGNvcmUgbm93Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBNYWFy dGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiAtLS0K Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8IDE0MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIHwgIDE0ICsrKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg ICAgICB8ICAgMiArLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwg IDI3ICsrKysrKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICB8ICAg MiArLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMgICAgIHwgICAyICstCj4+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAgIDIgKy0KPj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICB8ICAgNCArLQo+PiAgOCBmaWxlcyBjaGFu Z2VkLCAxODAgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pYy5jCj4+IGluZGV4IDUwZmIxZjc2Y2M1Zi4uZWI3MjE2NjY3NWYwIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+IFJlZmFjdG9yaW5nIGlkZWEg Zm9yIHRoZSBmdXR1cmU6IGludGVsX2F0b21pYy5jIG1ha2VzIDAgc2Vuc2UsIGp1c3QgbWFrZXMK PiBzdXJlIHdlIGhhdmUgbG90cyBvZiBmdW5jdGlvbmFsaXR5IHNwcmVhZCBhbGwgb3ZlciBpbW8u IEkgdGhpbmsgZm9sbG93aW5nCj4gdGhlIHNwbGl0LXVwIG1vZGVsIEkndmUgZG9uZSBpbiB0aGUg ZHJtIGNvcmUgd291bGQgYmUgYSBsb3QgYmV0dGVyLCB3aXRoCj4gaW50ZWxfY29ubmVjdG9yL2Vu Y29kZXIvY3J0Yy9wbGFuZS5jIGZvciB0aGUgc2hhcmVkIGhlbHBlciBmdW5jdGlvbnMuIEFuZAo+ IHRoZW4gbWF5YmUgc2VwYXJhdGUgZmlsZXMgZm9yIHRoZSBwZXItcGxhdGZvcm0gc3R1ZmYsIGUu Zy4gaTl4eF9jcnRjLmMsCj4gcGNoX2NydGMuYyBhbmQgc28gb24uCj4KPj4gQEAgLTM2LDcgKzM2 LDcgQEAKPj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPj4gIAo+PiAgLyoqCj4+IC0gKiBpbnRl bF9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eSAtIGZldGNoIGNvbm5lY3RvciBwcm9wZXJ0 eSB2YWx1ZQo+PiArICogaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkgLSBmZXRj aCBsZWdhY3kgY29ubmVjdG9yIHByb3BlcnR5IHZhbHVlCj4+ICAgKiBAY29ubmVjdG9yOiBjb25u ZWN0b3IgdG8gZmV0Y2ggcHJvcGVydHkgZm9yCj4+ICAgKiBAc3RhdGU6IHN0YXRlIGNvbnRhaW5p bmcgdGhlIHByb3BlcnR5IHZhbHVlCj4+ICAgKiBAcHJvcGVydHk6IHByb3BlcnR5IHRvIGxvb2sg dXAKPj4gQEAgLTQ1LDEyICs0NSwxNCBAQAo+PiAgICogVGhlIERSTSBjb3JlIGRvZXMgbm90IHN0 b3JlIHNoYWRvdyBjb3BpZXMgb2YgcHJvcGVydGllcyBmb3IKPj4gICAqIGF0b21pYy1jYXBhYmxl IGRyaXZlcnMuICBUaGlzIGVudHJ5cG9pbnQgaXMgdXNlZCB0byBmZXRjaAo+PiAgICogdGhlIGN1 cnJlbnQgdmFsdWUgb2YgYSBkcml2ZXItc3BlY2lmaWMgY29ubmVjdG9yIHByb3BlcnR5Lgo+PiAr ICoKPj4gKyAqIFRoaXMgaXMgYSBpbnRlcm1lZGlhcnkgc29sdXRpb24gdW50aWwgYWxsIGNvbm5l Y3RvcnMgYXJlCj4+ICsgKiBjb252ZXJ0ZWQgdG8gc3VwcG9ydCBmdWxsIGF0b21pYyBwcm9wZXJ0 aWVzLgo+PiAgICovCj4+IC1pbnQKPj4gLWludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3Bl cnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+IC0JCQkJICAgIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwKPj4gLQkJCQkgICAgc3RydWN0IGRybV9w cm9wZXJ0eSAqcHJvcGVydHksCj4+IC0JCQkJICAgIHVpbnQ2NF90ICp2YWwpCj4+ICtpbnQgaW50 ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKPj4gKwkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRl LAo+PiArCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPj4gKwkJCQkJdWludDY0 X3QgKnZhbCkKPj4gIHsKPj4gIAlpbnQgaTsKPj4gIAo+PiBAQCAtNzMsNyArNzUsMTMzIEBAIGlu dGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4+ICAJcmV0dXJuIC1FSU5WQUw7Cj4+ICB9Cj4+ICAKPj4gLS8qCj4+ICsvKioK Pj4gKyAqIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkgLSBob29r IGZvciBjb25uZWN0b3ItPmF0b21pY19nZXRfcHJvcGVydHkuCj4+ICsgKiBAY29ubmVjdG9yOiBD b25uZWN0b3IgdG8gZ2V0IHRoZSBwcm9wZXJ0eSBmb3IuCj4+ICsgKiBAc3RhdGU6IENvbm5lY3Rv ciBzdGF0ZSB0byByZXRyaWV2ZSB0aGUgcHJvcGVydHkgZnJvbS4KPj4gKyAqIEBwcm9wZXJ0eTog UHJvcGVydHkgdG8gcmV0cmlldmUuCj4+ICsgKiBAdmFsOiBSZXR1cm4gdmFsdWUgZm9yIHRoZSBw cm9wZXJ0eS4KPj4gKyAqCj4+ICsgKiBSZXR1cm5zIHRoZSBhdG9taWMgcHJvcGVydHkgdmFsdWUg Zm9yIGEgZGlnaXRhbCBjb25uZWN0b3IuCj4+ICsgKi8KPj4gK2ludCBpbnRlbF9kaWdpdGFsX2Nv bm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCj4+ICsJCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCj4+ ICsJCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPj4gKwkJCQkJCXVpbnQ2NF90 ICp2YWwpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2 Owo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK Pj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3Rh dGUgPQo+PiArCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSk7Cj4+ICsK Pj4gKwlpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYtPmZvcmNlX2F1ZGlvX3Byb3BlcnR5KQo+PiAr CQkqdmFsID0gaW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2VfYXVkaW87Cj4+ICsJZWxzZSBpZiAocHJv cGVydHkgPT0gZGV2X3ByaXYtPmJyb2FkY2FzdF9yZ2JfcHJvcGVydHkpCj4+ICsJCSp2YWwgPSBp bnRlbF9jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiOwo+PiArCWVsc2Ugewo+PiArCQlEUk1fREVC VUdfQVRPTUlDKCJVbmtub3duIHByb3BlcnR5ICVzXG4iLCBwcm9wZXJ0eS0+bmFtZSk7Cj4+ICsJ CXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ ICsvKioKPj4gKyAqIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19zZXRfcHJvcGVydHkg LSBob29rIGZvciBjb25uZWN0b3ItPmF0b21pY19zZXRfcHJvcGVydHkuCj4+ICsgKiBAY29ubmVj dG9yOiBDb25uZWN0b3IgdG8gc2V0IHRoZSBwcm9wZXJ0eSBmb3IuCj4+ICsgKiBAc3RhdGU6IENv bm5lY3RvciBzdGF0ZSB0byBzZXQgdGhlIHByb3BlcnR5IG9uLgo+PiArICogQHByb3BlcnR5OiBQ cm9wZXJ0eSB0byBzZXQuCj4+ICsgKiBAdmFsOiBOZXcgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eS4K Pj4gKyAqCj4+ICsgKiBTZXRzIHRoZSBhdG9taWMgcHJvcGVydHkgdmFsdWUgZm9yIGEgZGlnaXRh bCBjb25uZWN0b3IuCj4+ICsgKi8KPj4gK2ludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9t aWNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICsJCQkJ CQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCj4+ICsJCQkJCQlzdHJ1Y3QgZHJt X3Byb3BlcnR5ICpwcm9wZXJ0eSwKPj4gKwkJCQkJCXVpbnQ2NF90IHZhbCkKPj4gK3sKPj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiArCXN0cnVjdCBpbnRlbF9k aWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0ZSA9Cj4+ICsJCXRvX2ludGVs X2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlKHN0YXRlKTsKPj4gKwo+PiArCWlmIChwcm9wZXJ0eSA9 PSBkZXZfcHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpIHsKPj4gKwkJaW50ZWxfY29ubl9zdGF0 ZS0+Zm9yY2VfYXVkaW8gPSB2YWw7Cj4+ICsJCXJldHVybiAwOwo+PiArCX0KPj4gKwo+PiArCWlm IChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+YnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSkgewo+PiArCQlp bnRlbF9jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiID0gdmFsOwo+PiArCQlyZXR1cm4gMDsKPj4g Kwl9Cj4+ICsKPj4gKwlEUk1fREVCVUdfQVRPTUlDKCJVbmtub3duIHByb3BlcnR5ICVzXG4iLCBw cm9wZXJ0eS0+bmFtZSk7Cj4+ICsJcmV0dXJuIC1FSU5WQUw7Cj4+ICt9Cj4+ICsKPj4gK2ludCBp bnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm4sCj4+ICsJCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X3N0YXRlKQo+ PiArewo+PiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5f c3RhdGUgPQo+PiArCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShuZXdfc3RhdGUp Owo+PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfc3RhdGUgPQo+PiArCQlkcm1f YXRvbWljX2dldF9vbGRfY29ubmVjdG9yX3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUsIGNvbm4pOwo+ PiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUg PQo+PiArCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShvbGRfc3RhdGUpOwo+PiAr CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5l Y3Rvcihjb25uKTsKPj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ICsK Pj4gKwlpZiAoaW50ZWxfY29ubmVjdG9yLT5wYW5lbC5hbGxvd2VkX2ZpdHRpbmdfbW9kZV9tYXNr ICYmCj4+ICsJICAgIChCSVQobmV3X3N0YXRlLT5zY2FsaW5nX21vZGUpICYgfmludGVsX2Nvbm5l Y3Rvci0+cGFuZWwuYWxsb3dlZF9maXR0aW5nX21vZGVfbWFzaykpIHsKPj4gKwkJRFJNX0RFQlVH X0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10gUGFuZWwgZml0dGluZyBtb2RlICV1IG5vdCBhbGxv d2VkLlxuIiwKPj4gKwkJCQkgY29ubi0+YmFzZS5pZCwgY29ubi0+bmFtZSwgbmV3X3N0YXRlLT5z Y2FsaW5nX21vZGUpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4gUmFuZ2UtY2hlY2tp bmcgbGlrZSB0aGlzIHNob3VsZCBiZSBkb25lIGJ5IGNvcnJlY3RsaW5nIHJlZ2lzdGVyaW5nIHRo ZQo+IHByb2VwcnR5IC4uLiBTZXBhcmF0ZSBwYXRjaCB0byBmaXggdGhhdCAoaWYgaXQncyBpbmRl ZWQgYnJva2VuKT8KTm90IGlmIHRoZXJlJ3MgaHcgd2l0aCBhIGNvbWJpbmF0aW9uIG9mIGVEUCwg RFNJIG9yIExWRFMuIEV2ZW4gaWYgaXQnIHMganVzdCBwcmVyZWxlYXNlIHRlc3RpbmcgaHcuCgpU aGlzIGlzIG1hdGNoaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yIGZvciBzZXRwcm9wLCBzbyBub3Qg bXVjaCBkaWZmZXJlbmNlIGhlcmUuIDopCj4+ICsKPj4gKwlpZiAoIW5ld19zdGF0ZS0+Y3J0YykK Pj4gKwkJcmV0dXJuIDA7Cj4+ICsKPj4gKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3 X2NydGNfc3RhdGUobmV3X3N0YXRlLT5zdGF0ZSwgbmV3X3N0YXRlLT5jcnRjKTsKPj4gKwo+PiAr CS8qIEludmlzaWJsZSB0byBmYXN0c2V0IHNpbmNlIGl0J3MgYSBwdXJlIGNvbm5lY3RvciBwcm9w ZXJ0eSAqLwo+PiArCWlmIChuZXdfY29ubl9zdGF0ZS0+YmFzZS5zY2FsaW5nX21vZGUgIT0gb2xk X2Nvbm5fc3RhdGUtPmJhc2Uuc2NhbGluZ19tb2RlKQo+PiArCQljcnRjX3N0YXRlLT5jb25uZWN0 b3JzX2NoYW5nZWQgPSB0cnVlOwo+IEhtLCBJIHRob3VnaHQgd2UgcHV0IGFsbCB0aGUgcGZpdCBy ZWdpc3RlciBzZXR0aW5ncyBpbnRvIHRoZSBjcnRjIHN0YXRlLAo+IHNvIHNjYWxpbmdfbW9kZSBj aGFuZ2VzIHNob3VsZCBhbHNvIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBieSBmYXN0c2V0PwpRdWl0 ZSBwb3NzaWJsZSwgSSBkaWRuJ3QgY2hlY2sgaWYgaXQgd2FzIHRoZSBjYXNlIHRob3VnaCwgc28g SSBlcnJlZCBvbiB0aGUgc2lkZSBvZiBjYXV0aW9uLgo+IExvb2tzIGFsbCByZWFzb25hYmxlIG90 aGVyd2lzZS4KPiAtRGFuaWVsCj4KPj4gKwo+PiArCS8qCj4+ICsJICogVGhlc2UgcHJvcGVydGll cyBhcmUgaGFuZGxlZCBieSBmYXN0c2V0LCBhbmQgbWlnaHQgbm90IGVuZAo+PiArCSAqIHVwIGlu IGEgbW9kZXNldC4KPj4gKwkgKi8KPj4gKwlpZiAobmV3X2Nvbm5fc3RhdGUtPmZvcmNlX2F1ZGlv ICE9IG9sZF9jb25uX3N0YXRlLT5mb3JjZV9hdWRpbyB8fAo+PiArCSAgICBuZXdfY29ubl9zdGF0 ZS0+YnJvYWRjYXN0X3JnYiAhPSBvbGRfY29ubl9zdGF0ZS0+YnJvYWRjYXN0X3JnYiB8fAo+PiAr CSAgICBuZXdfY29ubl9zdGF0ZS0+YmFzZS5waWN0dXJlX2FzcGVjdF9yYXRpbyAhPSBvbGRfY29u bl9zdGF0ZS0+YmFzZS5waWN0dXJlX2FzcGVjdF9yYXRpbykKPj4gKwkJY3J0Y19zdGF0ZS0+bW9k ZV9jaGFuZ2VkID0gdHJ1ZTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICsvKioK Pj4gKyAqIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSAtIGR1cGxpY2F0 ZSBjb25uZWN0b3Igc3RhdGUKPj4gKyAqIEBjb25uZWN0b3I6IGRpZ2l0YWwgY29ubmVjdG9yCj4+ ICsgKgo+PiArICogQWxsb2NhdGVzIGFuZCByZXR1cm5zIGEgY29weSBvZiB0aGUgY29ubmVjdG9y IHN0YXRlIChib3RoIGNvbW1vbiBhbmQKPj4gKyAqIGRpZ2l0YWwgY29ubmVjdG9yIHNwZWNpZmlj KSBmb3IgdGhlIHNwZWNpZmllZCBjb25uZWN0b3IuCj4+ICsgKgo+PiArICogUmV0dXJuczogVGhl IG5ld2x5IGFsbG9jYXRlZCBjb25uZWN0b3Igc3RhdGUsIG9yIE5VTEwgb24gZmFpbHVyZS4KPj4g KyAqLwo+PiArc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKgo+PiAraW50ZWxfZGlnaXRhbF9j b25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cj4+ICt7Cj4+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICpzdGF0ZTsK Pj4gKwo+PiArCXN0YXRlID0ga21lbWR1cChjb25uZWN0b3ItPnN0YXRlLCBzaXplb2YoKnN0YXRl KSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFzdGF0ZSkKPj4gKwkJcmV0dXJuIE5VTEw7Cj4+ICsK Pj4gKwlfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoY29ubmVj dG9yLCAmc3RhdGUtPmJhc2UpOwo+PiArCXJldHVybiAmc3RhdGUtPmJhc2U7Cj4+ICt9Cj4+ICsK Pj4gKy8qKgo+PiAgICogaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUgLSBkdXBsaWNhdGUgY3J0 YyBzdGF0ZQo+PiAgICogQGNydGM6IGRybSBjcnRjCj4+ICAgKgo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IDQ4YTU0NjIxMGQ4Yi4uNWViNGRkYjA0Nzk3IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC01OTU2LDExICs1OTU2 LDIxIEBAIHN0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3Rvcl92ZXJpZnlfc3RhdGUoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgCj4+ICBpbnQgaW50ZWxfY29ubmVjdG9yX2lu aXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgewo+PiAtCWRybV9hdG9t aWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCgmY29ubmVjdG9yLT5iYXNlKTsKPj4gKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4+ICAKPj4gLQlpZiAo IWNvbm5lY3Rvci0+YmFzZS5zdGF0ZSkKPj4gKwkvKgo+PiArCSAqIEFsbG9jYXRlIGVub3VnaCBt ZW1vcnkgdG8gaG9sZCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSwKPj4gKwkgKiBUaGlz IG1pZ2h0IGJlIGEgZmV3IGJ5dGVzIHRvbyBtYW55LCBidXQgZm9yIGNvbm5lY3RvcnMgdGhhdCBk b24ndAo+PiArCSAqIG5lZWQgaXQgd2UnbGwgZnJlZSB0aGUgc3RhdGUgYW5kIGFsbG9jYXRlIGEg c21hbGxlciBvbmUgb24gdGhlIGZpcnN0Cj4+ICsJICogc3VjY2VzZnVsIGNvbW1pdCBhbnl3YXku Cj4+ICsJICovCj4+ICsJY29ubl9zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpjb25uX3N0YXRlKSwg R0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFjb25uX3N0YXRlKQo+PiAgCQlyZXR1cm4gLUVOT01FTTsK Pj4gIAo+PiArCV9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0KCZjb25uZWN0b3It PmJhc2UsCj4+ICsJCQkJCSAgICAmY29ubl9zdGF0ZS0+YmFzZSk7Cj4+ICsKPj4gIAlyZXR1cm4g MDsKPj4gIH0KPj4gIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gaW5kZXggOTQ0YjE0NDli N2Y5Li4wYWZkOGYzMDM3ZjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBAQCAt NTg5Niw3ICs1ODk2LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ICAJCQkgICAgICBwaXBlX25hbWUocGlwZSkpOwo+ PiAgCX0KPj4gIAo+PiAtCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWws IGZpeGVkX21vZGUsIGRvd25jbG9ja19tb2RlKTsKPj4gKwlpbnRlbF9wYW5lbF9pbml0KCZpbnRl bF9jb25uZWN0b3ItPnBhbmVsLCBmaXhlZF9tb2RlLCBkb3duY2xvY2tfbW9kZSwgMCk7Cj4+ICAJ aW50ZWxfY29ubmVjdG9yLT5wYW5lbC5iYWNrbGlnaHQucG93ZXIgPSBpbnRlbF9lZHBfYmFja2xp Z2h0X3Bvd2VyOwo+PiAgCWludGVsX3BhbmVsX3NldHVwX2JhY2tsaWdodChjb25uZWN0b3IsIHBp cGUpOwo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGluZGV4IGY3OGQ3YzVmMzgw NS4uNGRmOWU0NTMxZWRjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAt MjYyLDYgKzI2Miw3IEBAIHN0cnVjdCBpbnRlbF9wYW5lbCB7Cj4+ICAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmZpeGVkX21vZGU7Cj4+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRvd25j bG9ja19tb2RlOwo+PiAgCWludCBmaXR0aW5nX21vZGU7Cj4+ICsJdW5zaWduZWQgYWxsb3dlZF9m aXR0aW5nX21vZGVfbWFzazsKPj4gIAo+PiAgCS8qIGJhY2tsaWdodCAqLwo+PiAgCXN0cnVjdCB7 Cj4+IEBAIC0zMjMsNiArMzI0LDE1IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3Igewo+PiAgCXN0 cnVjdCBpbnRlbF9kcCAqbXN0X3BvcnQ7Cj4+ICB9Owo+PiAgCj4+ICtzdHJ1Y3QgaW50ZWxfZGln aXRhbF9jb25uZWN0b3Jfc3RhdGUgewo+PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIGJh c2U7Cj4+ICsKPj4gKwllbnVtIGhkbWlfZm9yY2VfYXVkaW8gZm9yY2VfYXVkaW87Cj4+ICsJaW50 IGJyb2FkY2FzdF9yZ2I7Cj4+ICt9Owo+PiArCj4+ICsjZGVmaW5lIHRvX2ludGVsX2RpZ2l0YWxf Y29ubmVjdG9yX3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9j b25uZWN0b3Jfc3RhdGUsIGJhc2UpCj4+ICsKPj4gIHN0cnVjdCBkcGxsIHsKPj4gIAkvKiBnaXZl biB2YWx1ZXMgKi8KPj4gIAlpbnQgbjsKPj4gQEAgLTE2NjgsNyArMTY3OCw4IEBAIHZvaWQgaW50 ZWxfb3ZlcmxheV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAg LyogaW50ZWxfcGFuZWwuYyAqLwo+PiAgaW50IGludGVsX3BhbmVsX2luaXQoc3RydWN0IGludGVs X3BhbmVsICpwYW5lbCwKPj4gIAkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4ZWRf bW9kZSwKPj4gLQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZG93bmNsb2NrX21vZGUp Owo+PiArCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkb3duY2xvY2tfbW9kZSwKPj4g KwkJICAgICB1bnNpZ25lZCBhbGxvd2VkX2ZpdHRpbmdfbW9kZV9tYXNrKTsKPj4gIHZvaWQgaW50 ZWxfcGFuZWxfZmluaShzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsKTsKPj4gIHZvaWQgaW50ZWxf Zml4ZWRfcGFuZWxfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4ZWRfbW9k ZSwKPj4gIAkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSk7Cj4+ IEBAIC0xODc5LDYgKzE4OTAsMjAgQEAgaW50IGludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3By b3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAJCQkJCWNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwKPj4gIAkJCQkJc3RydWN0IGRybV9wcm9w ZXJ0eSAqcHJvcGVydHksCj4+ICAJCQkJCXVpbnQ2NF90ICp2YWwpOwo+PiArCj4+ICtpbnQgaW50 ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAo+PiArCQkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKnN0YXRlLAo+PiArCQkJCQkJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4+ICsJ CQkJCQl1aW50NjRfdCAqdmFsKTsKPj4gK2ludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9t aWNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICsJCQkJ CQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCj4+ICsJCQkJCQlzdHJ1Y3QgZHJt X3Byb3BlcnR5ICpwcm9wZXJ0eSwKPj4gKwkJCQkJCXVpbnQ2NF90IHZhbCk7Cj4+ICtpbnQgaW50 ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uLAo+PiArCQkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19zdGF0ZSk7Cj4+ ICtzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqCj4+ICtpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rv cl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+ICsK Pj4gIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKTsKPj4gIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KnN0YXRlKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPj4gaW5kZXggM2ZmZThiMWYxZDQ4 Li5lNzg3MTQyMDI1YWMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4+IEBAIC0x ODUzLDcgKzE4NTMsNyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPj4gIAljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IGZp eGVkX21vZGUtPndpZHRoX21tOwo+PiAgCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9t bSA9IGZpeGVkX21vZGUtPmhlaWdodF9tbTsKPj4gIAo+PiAtCWludGVsX3BhbmVsX2luaXQoJmlu dGVsX2Nvbm5lY3Rvci0+cGFuZWwsIGZpeGVkX21vZGUsIE5VTEwpOwo+PiArCWludGVsX3BhbmVs X2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWwsIGZpeGVkX21vZGUsIE5VTEwsIDApOwo+PiAg CWludGVsX3BhbmVsX3NldHVwX2JhY2tsaWdodChjb25uZWN0b3IsIElOVkFMSURfUElQRSk7Cj4+ ICAKPj4gIAlpbnRlbF9kc2lfYWRkX3Byb3BlcnRpZXMoaW50ZWxfY29ubmVjdG9yKTsKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHZvLmMKPj4gaW5kZXggYzE1NDRhNTMwOTVkLi4wYjcyMzE1N2MzOGIg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCj4+IEBAIC01NTQsNyArNTU0LDcgQEAg dm9pZCBpbnRlbF9kdm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ ICAJCQkgKi8KPj4gIAkJCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWws Cj4+ICAJCQkJCSBpbnRlbF9kdm9fZ2V0X2N1cnJlbnRfbW9kZShjb25uZWN0b3IpLAo+PiAtCQkJ CQkgTlVMTCk7Cj4+ICsJCQkJCSBOVUxMLCAwKTsKPj4gIAkJCWludGVsX2R2by0+cGFuZWxfd2Fu dHNfZGl0aGVyID0gdHJ1ZTsKPj4gIAkJfQo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRz LmMKPj4gaW5kZXggOGI5NDJlZjJiM2VjLi45MTlkODQyOTA3NzQgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9sdmRzLmMKPj4gQEAgLTExODEsNyArMTE4MSw3IEBAIHZvaWQgaW50ZWxfbHZk c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIG91dDoKPj4gIAlt dXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+PiAgCj4+IC0JaW50ZWxfcGFu ZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwgZG93bmNsb2NrX21v ZGUpOwo+PiArCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWwsIGZpeGVk X21vZGUsIGRvd25jbG9ja19tb2RlLCAwKTsKPj4gIAlpbnRlbF9wYW5lbF9zZXR1cF9iYWNrbGln aHQoY29ubmVjdG9yLCBJTlZBTElEX1BJUEUpOwo+PiAgCj4+ICAJbHZkc19lbmNvZGVyLT5pc19k dWFsX2xpbmsgPSBjb21wdXRlX2lzX2R1YWxfbGlua19sdmRzKGx2ZHNfZW5jb2Rlcik7Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+PiBpbmRleCBjYjUwYzUyNzQwMWYuLmM2Y2UxNTU1 MGU1ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4+IEBAIC0xODAxLDEy ICsxODAxLDE0IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRl bF9wYW5lbCAqcGFuZWwpCj4+ICAKPj4gIGludCBpbnRlbF9wYW5lbF9pbml0KHN0cnVjdCBpbnRl bF9wYW5lbCAqcGFuZWwsCj4+ICAJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVk X21vZGUsCj4+IC0JCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRvd25jbG9ja19tb2Rl KQo+PiArCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkb3duY2xvY2tfbW9kZSwKPj4g KwkJICAgICB1bnNpZ25lZCBhbGxvd2VkX2ZpdHRpbmdfbW9kZV9tYXNrKQo+PiAgewo+PiAgCWlu dGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHBhbmVsKTsKPj4gIAo+PiAgCXBhbmVsLT5m aXhlZF9tb2RlID0gZml4ZWRfbW9kZTsKPj4gIAlwYW5lbC0+ZG93bmNsb2NrX21vZGUgPSBkb3du Y2xvY2tfbW9kZTsKPj4gKwlwYW5lbC0+YWxsb3dlZF9maXR0aW5nX21vZGVfbWFzayA9IGFsbG93 ZWRfZml0dGluZ19tb2RlX21hc2s7Cj4+ICAKPj4gIAlyZXR1cm4gMDsKPj4gIH0KPj4gLS0gCj4+ IDIuNy40Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=