From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Wed, 28 Feb 2018 11:57:57 -0800 Message-ID: <20180228195756.GB11481@intel.com> References: <20180117192149.17760-1-ville.syrjala@linux.intel.com> <20180117192149.17760-3-ville.syrjala@linux.intel.com> <1517354219.4938.24.camel@redhat.com> <20180131132710.GK5453@intel.com> <20180228071731.GB2386@intel.com> <1519844854.26611.4.camel@redhat.com> <20180228192730.GA11481@intel.com> <1519846866.26611.8.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id CDCED6EB43 for ; Wed, 28 Feb 2018 19:55:00 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1519846866.26611.8.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjgsIDIwMTggYXQgMDI6NDE6MDZQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBXZWQsIDIwMTgtMDItMjggYXQgMTE6MjcgLTA4MDAsIE1hbmFzaSBOYXZhcmUgd3Jv dGU6Cj4gPiBPbiBXZWQsIEZlYiAyOCwgMjAxOCBhdCAwMjowNzozNFBNIC0wNTAwLCBMeXVkZSBQ YXVsIHdyb3RlOgo+ID4gPiAKPiA+ID4gT24gVHVlLCAyMDE4LTAyLTI3IGF0IDIzOjE3IC0wODAw LCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiA+IFZpbGxlLCAgdGhhbmtzIGZvciB0aGUgcGF0 Y2ggYW5kCj4gPiA+ID4gU29ycnkgZm9yIG5vdCBiZWluZyBhYmxlIHRvIHJldmlldyB0aGlzIGVh cmxpZXIuCj4gPiA+ID4gUGxlYXNlIGZpbmQgc29tZSBjb21tZW50cyBiZWxvdzoKPiA+ID4gPiAK PiA+ID4gPiBPbiBXZWQsIEphbiAzMSwgMjAxOCBhdCAwMzoyNzoxMFBNICswMjAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+ID4gPiBPbiBUdWUsIEphbiAzMCwgMjAxOCBhdCAwNjoxNjo1 OVBNIC0wNTAwLCBMeXVkZSBQYXVsIHdyb3RlOgo+ID4gPiA+ID4gPiBPbiBXZWQsIDIwMTgtMDEt MTcgYXQgMjE6MjEgKzAyMDAsIFZpbGxlIFN5cmphbGEgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gRnJv bTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBEb2luZyBsaW5rIHJldHJhaW5pbmcgZnJvbSB0aGUgc2hv cnQgcHVsc2UgaGFuZGxlciBpcyBwcm9ibGVtYXRpYwo+ID4gPiA+ID4gPiA+IHNpbmNlCj4gPiA+ ID4gPiA+ID4gdGhhdCBtaWdodCBpbnRyb2R1Y2UgZGVhZGxvY2tzIHdpdGggTVNUIHNpZGViYW5k IHByb2Nlc3NpbmcuCj4gPiA+ID4gPiA+ID4gQ3VycmVudGx5Cj4gPiA+ID4gPiA+ID4gd2UgZG9u J3QgcmV0cmFpbiBNU1QgbGlua3MgZnJvbSB0aGlzIGNvZGUsIGJ1dCB3ZSB3YW50IHRvIGNoYW5n ZQo+ID4gPiA+ID4gPiA+IHRoYXQuCj4gPiA+ID4gPiA+ID4gU28gYmV0dGVyIHRvIG1vdmUgdGhl IGVudGlyZSB0aGluZyB0byB0aGUgaG90cGx1ZyB3b3JrLiBXZSBjYW4KPiA+ID4gPiA+ID4gPiB1 dGlsaXplCj4gPiA+ID4gPiA+ID4gdGhlIG5ldyBlbmNvZGVyLT5ob3RwbHVnKCkgaG9vayBmb3Ig dGhpcy4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBUaGUgb25seSB0aGluZyB3ZSBsZWF2 ZSBpbiB0aGUgc2hvcnQgcHVsc2UgaGFuZGxlciBpcyB0aGUgbGluawo+ID4gPiA+ID4gPiA+IHN0 YXR1cwo+ID4gPiA+ID4gPiA+IGNoZWNrLiBUaGF0IG9uZSBzdGlsbCBkZXBlbmRzIG9uIHRoZSBs aW5rIHBhcmFtZXRlcnMgc3RvcmVkIHVuZGVyCj4gPiA+ID4gPiA+ID4gaW50ZWxfZHAsIHNvIG5v IGxvY2tpbmcgYXJvdW5kIHRoYXQgYnV0IHJhY2VzIHNob3VsZCBiZSBtb3N0bHkKPiA+ID4gPiA+ ID4gPiBoYXJtbGVzcwo+ID4gPiA+ID4gPiA+IGFzIHRoZSBhY3R1YWwgcmV0cmFpbmluZyBjb2Rl IHdpbGwgcmVjaGVjayB0aGUgbGluayBzdGF0ZSBpZiB3ZQo+ID4gPiA+ID4gPiA+IGVuZCB1cCB0 aGVyZSBieSBtaXN0YWtlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IHYyOiBSZWJhc2Ug ZHVlIHRvIC0+cG9zdF9ob3RwbHVnKCkgbm93IGJlaW5nIGp1c3QgLT5ob3RwbHVnKCkKPiA+ID4g PiA+ID4gPiAgICAgQ2hlY2sgdGhlIGNvbm5lY3RvciB0eXBlIHRvIGZpZ3VyZSBvdXQgaWYgd2Ug c2hvdWxkIGRvCj4gPiA+ID4gPiA+ID4gICAgIHRoZSBIRE1JIHRoaW5nIG9yIHRoZSBEUCB0aGlu ayBmb3IgRERJCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gQ2M6IE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4gQ2M6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4g U2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KPiA+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMgfCAgMTAgKy0KPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyAgfCAxOTYgKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiA+ID4gPiA+ ID4gLS0tLQo+ID4gPiA+ID4gPiA+IC0tLS0tLS0tCj4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4g PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwgICAyICsKPiA+ID4gPiA+ ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0p Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+ID4gPiA+ID4gPiA+IGluZGV4IDI1NzkzYmRjNjkyZi4uNWYzZDU4ZjFhZTZl IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiA+ID4gPiA+ID4gPiBAQCAtMjg4MCw3ICsyODgwLDEwIEBAIHN0YXRpYyBib29sIGludGVsX2Rk aV9ob3RwbHVnKHN0cnVjdAo+ID4gPiA+ID4gPiA+IGludGVsX2VuY29kZXIKPiA+ID4gPiA+ID4g PiAqZW5jb2RlciwKPiA+ID4gPiA+ID4gPiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4 LCAwKTsKPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gIAlmb3IgKDs7KSB7Cj4gPiA+ID4g PiA+ID4gLQkJcmV0ID0gaW50ZWxfaGRtaV9yZXNldF9saW5rKGVuY29kZXIsICZjdHgpOwo+ID4g PiA+ID4gPiA+ICsJCWlmIChjb25uZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5cGUgPT0KPiA+ID4g PiA+ID4gPiBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUEpCj4gPiA+ID4gPiA+ID4gKwkJCXJldCA9 IGludGVsX2hkbWlfcmVzZXRfbGluayhlbmNvZGVyLAo+ID4gPiA+ID4gPiA+ICZjdHgpOwo+ID4g PiA+ID4gPiA+ICsJCWVsc2UKPiA+ID4gPiA+ID4gPiArCQkJcmV0ID0gaW50ZWxfZHBfcmV0cmFp bl9saW5rKGVuY29kZXIsCj4gPiA+ID4gPiA+ID4gJmN0eCk7Cj4gPiA+ID4gPiA+ID4gIAo+ID4g PiA+ID4gPiA+ICAJCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+ID4gPiA+ID4gPiAgCQkJZHJt X21vZGVzZXRfYmFja29mZigmY3R4KTsKPiA+ID4gPiA+ID4gPiBAQCAtMzAwNywxMCArMzAxMCw3 IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gPiA+ ID4gPiAqZGV2X3ByaXYsCj4gPiA+ID4gPiA+ID4gZW51bSBwb3J0IHBvcnQpCj4gPiA+ID4gPiA+ ID4gIAlkcm1fZW5jb2Rlcl9pbml0KCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyLAo+ID4gPiA+ID4g PiA+ICZpbnRlbF9kZGlfZnVuY3MsCj4gPiA+ID4gPiA+ID4gIAkJCSBEUk1fTU9ERV9FTkNPREVS X1RNRFMsICJEREkgJWMiLAo+ID4gPiA+ID4gPiA+IHBvcnRfbmFtZShwb3J0KSk7Cj4gPiA+ID4g PiA+ID4gIAo+ID4gPiA+ID4gPiA+IC0JaWYgKGluaXRfaGRtaSkKPiA+ID4gPiA+ID4gPiAtCQlp bnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxfZGRpX2hvdHBsdWc7Cj4gPiA+ID4gPiA+ID4g LQllbHNlCj4gPiA+ID4gPiA+ID4gLQkJaW50ZWxfZW5jb2Rlci0+aG90cGx1ZyA9IGludGVsX2Vu Y29kZXJfaG90cGx1ZzsKPiA+ID4gPiA+ID4gPiArCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBp bnRlbF9kZGlfaG90cGx1ZzsKPiA+ID4gPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVf b3V0cHV0X3R5cGUgPQo+ID4gPiA+ID4gPiA+IGludGVsX2RkaV9jb21wdXRlX291dHB1dF90eXBl Owo+ID4gPiA+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+Y29tcHV0ZV9jb25maWcgPSBpbnRlbF9k ZGlfY29tcHV0ZV9jb25maWc7Cj4gPiA+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5lbmFibGUg PSBpbnRlbF9lbmFibGVfZGRpOwo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCj4gPiA+ID4gPiA+ID4gaW5kZXggNmJiZjE0NDEwYzJhLi4xNTIwMTZlMDlh MTEgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiA+ID4gPiA+ID4gPiBAQCAtNDI3NSwxMiArNDI3NSw4MyBAQCBpbnRlbF9kcF9jaGVja19tc3Rf c3RhdHVzKHN0cnVjdCBpbnRlbF9kcAo+ID4gPiA+ID4gPiA+ICppbnRlbF9kcCkKPiA+ID4gPiA+ ID4gPiAgCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gIAo+ ID4gPiA+ID4gPiA+IC1zdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+IC1pbnRlbF9kcF9yZXRyYWlu X2xpbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gPiA+ID4gPiArc3RhdGljIGJv b2wKPiA+ID4gPiA+ID4gPiAraW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiArCXU4IGxpbmtf c3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiArCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKGludGVsX2RwLCBsaW5rX3N0YXR1cykp IHsKPiA+ID4gPiA+ID4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgbGluayBzdGF0dXNc biIpOwo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gPiA+ID4gPiArCX0KPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkvKgo+ID4gPiA+ID4gPiA+ICsJICogVmFsaWRh dGUgdGhlIGNhY2hlZCB2YWx1ZXMgb2YgaW50ZWxfZHAtPmxpbmtfcmF0ZSBhbmQKPiA+ID4gPiA+ ID4gPiArCSAqIGludGVsX2RwLT5sYW5lX2NvdW50IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJldHJh aW4uCj4gPiA+ID4gPiA+ID4gKwkgKi8KPiA+ID4gPiA+ID4gPiArCWlmICghaW50ZWxfZHBfbGlu a19wYXJhbXNfdmFsaWQoaW50ZWxfZHAsIGludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID4gbGlua19y YXRlLAo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ICsJCQkJCWludGVsX2RwLT5sYW5lX2Nv dW50KSkKPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ICsJLyogUmV0cmFpbiBpZiBDaGFubmVsIEVRIG9yIENSIG5vdCBvayAqLwo+ID4g PiA+ID4gPiA+ICsJcmV0dXJuICFkcm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50 ZWxfZHAtCj4gPiA+ID4gPiA+ID4gPiBsYW5lX2NvdW50KTsKPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArLyoKPiA+ID4gPiA+ID4g PiArICogSWYgZGlzcGxheSBpcyBub3cgY29ubmVjdGVkIGNoZWNrIGxpbmtzIHN0YXR1cywKPiA+ ID4gPiA+ID4gPiArICogdGhlcmUgaGFzIGJlZW4ga25vd24gaXNzdWVzIG9mIGxpbmsgbG9zcyB0 cmlnZ2VyaW5nCj4gPiA+ID4gPiA+ID4gKyAqIGxvbmcgcHVsc2UuCj4gPiA+ID4gPiA+ID4gKyAq Cj4gPiA+ID4gPiA+ID4gKyAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBw ZXJmb3JtIHNvbWUKPiA+ID4gPiA+ID4gPiArICogd2VpcmQgSFBEIHBpbmcgcG9uZyBkdXJpbmcg bW9kZXNldHMuIFNvIHdlIGNhbiBhcHBhcmVudGx5Cj4gPiA+ID4gPiA+ID4gKyAqIGVuZCB1cCB3 aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5nIGEgbW9kZXNldCwgYW5kIHRoZW4KPiA+ID4gPiA+ID4g PiArICogZ29pbmcgYmFjayB1cCBzb29uIGFmdGVyLiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2Ug bXVzdAo+ID4gPiA+ID4gPiA+ICsgKiByZXRyYWluIHRoZSBsaW5rIHRvIGdldCBhIHBpY3R1cmUu IFRoYXQncyBpbiBjYXNlIG5vCj4gPiA+ID4gPiA+ID4gKyAqIHVzZXJzcGFjZSBjb21wb25lbnQg cmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiA+ID4gPiA+ID4gPiArICovCj4gPiA+ ID4gPiA+ID4gK2ludCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gPiA+ID4gPiA+ID4gKwkJCSAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4ICpjdHgpCj4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0KPiA+ID4gPiA+ID4gPiAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHAp LQo+ID4gPiA+ID4gPiA+ID4gYmFzZTsKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0KPiA+ID4g PiA+ID4gPiA+IGJhc2UuZGV2KTsKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLQo+ID4gPiA+ID4gPiA+ ID5iYXNlLmNydGMpOwo+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0KPiA+ID4gPiA+ID4gPiA+YmFzZSk7Cj4gPiA+ID4g PiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0KPiA+ ID4gPiA+ID4gPiA+IGF0dGFjaGVkX2Nvbm5lY3RvcjsKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ID4gPiA+ID4g PiA+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiA+ID4gPiA+ID4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiA+ID4gPiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJLyogRklYTUUgaGFuZGxlIHRoZSBNU1QgY29ubmVj dG9ycyBhcyB3ZWxsICovCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJaWYgKCFjb25u ZWN0b3IgfHwgY29ubmVjdG9yLT5iYXNlLnN0YXR1cyAhPQo+ID4gPiA+ID4gPiA+IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldl9wcml2LQo+ ID4gPiA+ID4gPiA+ID4gZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsCj4gPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gY3R4KTsKPiA+ID4gPiA+ID4gPiArCWlmIChyZXQpCj4gPiA+ ID4gPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwlj b25uX3N0YXRlID0gY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArCWNydGMgPSB0b19pbnRlbF9jcnRjKGNvbm5fc3RhdGUtPmNydGMpOwo+ID4gPiA+ ID4gPiA+ICsJaWYgKCFjcnRjKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPmJhc2Uu bXV0ZXgsIGN0eCk7Cj4gPiA+ID4gPiA+ID4gKwlpZiAocmV0KQo+ID4gPiA+ID4gPiA+ICsJCXJl dHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJY3J0Y19zdGF0ZSA9IHRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ICsJV0FSTl9PTighaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRl KSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJaWYgKCFjcnRjX3N0YXRlLT5iYXNl LmFjdGl2ZSkKPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gKwlpZiAoY29ubl9zdGF0ZS0+Y29tbWl0ICYmCj4gPiA+ID4gPiA+ID4gKwkgICAg IXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZjb25uX3N0YXRlLT5jb21taXQtCj4gPiA+ID4gPiA+ ID4gPmh3X2RvbmUpKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArCWlmICghaW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKGludGVsX2Rw KSkKPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IE5B SywgdGhpcyBkZWZpbml0ZWx5IHdvbid0IHdvcmsgZm9yIGltcGxlbWVudGluZyBNU1QgcmV0cmFp bmluZy4KPiA+ID4gPiA+ID4gVGhlcmUncwo+ID4gPiA+ID4gPiBzb21lCj4gPiA+ID4gPiA+IHBy ZXR0eSBodWdlIGRpZmZlcmVuY2VzIHdpdGggaG93IHJldHJhaW5pbmcgbmVlZHMgdG8gYmUgaGFu ZGxlZCBvbgo+ID4gPiA+ID4gPiBTU1QKPiA+ID4gPiA+ID4gdnMuIE1TVC4KPiA+ID4gPiA+ID4g QW4gZXhhbXBsZSB3aXRoIHNvbWUgbm9ybWFsIFNTVCBzaW5rIHZzLiB3aGF0IGhhcHBlbnMgb24g bXkgY2FsZGlnaXQKPiA+ID4gPiA+ID4gVFMzCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBTU1Q6 Cj4gPiA+ID4gPiA+ICAgICAxLiBjb21taXQgbW9kZXNldCwgZXZlcnl0aGluZyBpcyBPSwo+ID4g PiA+ID4gPiAgICAgMi4gc29tZXRoaW5nIGhhcHBlbnMsIHNpbmsgc2VuZHMgc2hvcnRwdWxzZSBh bmQgY2hhbmdlcyBsaW5rCj4gPiA+ID4gPiA+IHN0YXR1cwo+ID4gPiA+ID4gPiByZWdpc3RlcnMK PiA+ID4gPiA+ID4gICAgIGluIGRwY2QKPiA+ID4gPiA+ID4gICAgIDMuIFNvdXJjZSByZWNlaXZl cyBzaG9ydCBwdWxzZSwgdHJpZXMgcmV0cmFpbmluZyBmaXZlIHRpbWVzCj4gPiA+ID4gPiA+ICAg ICA0LiBpZiB0aGlzIHN1Y2NlZWRzOgo+ID4gPiA+ID4gPiAgICAgICAgIDUuIHdlJ3JlIGRvbmUg aGVyZQo+ID4gPiA+ID4gPiAgICAgNi4gaWYgdGhpcyBmYWlsczoKPiA+ID4gPiA+ID4gICAgICAg ICA3LiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJhZAo+ID4gPiA+ID4gPiAgICAgICAgIDguIGdldCBm YWxsYmFjayBwYXJhbWV0ZXJzCj4gPiA+ID4gPiA+ICAgICAgICAgOS4gaG90cGx1ZyBldmVudAo+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gTVNUIChpOTE1IGRvZXNuJ3QgZG8gdGhpcyB5ZXQsIGJ1 dCB0aGlzIGlzIGdlbmVyYWxseSBob3cgaXQgbmVlZHMgdG8KPiA+ID4gPiA+ID4gYmUKPiA+ID4g PiA+ID4gaGFuZGxlZCk6Cj4gPiA+ID4gPiA+ICAgICAxLiBjb21taXQgbW9kZXNldCwgZXZlcnl0 aGluZyBpcyBPSwo+ID4gPiA+ID4gPiAgICAgMi4gc29tZXRoaW5nIGhhcHBlbnMgKGluIG15IGNh c2UsIHRoZSBNU1QgaHViIGRpc2NvdmVycyBpdCBoYWQKPiA+ID4gPiA+ID4gdGhlCj4gPiA+ID4g PiA+IHdyb25nIG1heAo+ID4gPiA+ID4gPiAgICAgbGluayByYXRlL2xhbmUgY291bnQpLCBzaW5r IHNlbmRzIEVTSSBpbmRpY2F0aW5nIGNoYW5uZWwgRVEgaGFzCj4gPiA+ID4gPiA+IGZhaWxlZAo+ ID4gPiA+ID4gPiAgICAgMy4gcmV0cmFpbmluZyBjb21tZW5jZXMgd2l0aCBmaXZlIHJldHJpZXMu Cj4gPiA+ID4gPiA+ICAgICA0LiBpZiB0aGlzIHN1Y2NlZWRzOgo+ID4gPiA+ID4gPiAgICAgICAg NS4gY29udGludWUKPiA+ID4gPiA+ID4gICAgIDYuIGlmIHRoaXMgZmFpbHMgKEkgYWN0dWFsbHkg aGF2ZW4ndCBzZWVuIHRoaXMgb25jZSB5ZXQpCj4gPiA+ID4gPiA+ICAgICAgICAgNy4gbWFyayBs aW5rIHN0YXR1cyBhcyBiYWQgb24gYWxsIGRvd25zdHJlYW0gY29ubmVjdG9ycwo+ID4gPiA+ID4g PiAgICAgICAgIDguIGdldCBmYWxsYmFjayBwYXJhbWV0ZXJzCj4gPiA+ID4gPiA+ICAgICAgICAg OS4gaG90cGx1ZyBldmVudAo+ID4gPiA+ID4gPiAgICAgMTAuIHRoZSByZXRyYWluIGRpZG4ndCBh Y3R1YWxseSB3b3JrIChkZXNwaXRlIHdoYXQgdGhlIFNTVCBsaW5rCj4gPiA+ID4gPiA+IHN0YXR1 cwo+ID4gPiA+ID4gPiAgICAgcmVnaXN0ZXJzIHRvbGQgdXMpLiBnbyBiYWNrIHRvIHN0ZXAgMyBm aXZlIG1vcmUgdGltZXMKPiA+ID4gPiA+ID4gICAgIDExLiBpZiB0aGlzIGZhaWxzOgo+ID4gPiA+ ID4gPiAgICAgICAgIDEyLiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJhZCBvbiBhbGwgZG93bnN0cmVh bSBjb25uZWN0b3JzCj4gPiA+ID4gPiA+ICAgICAgICAgMTMuIGdldCBmYWxsYmFjayBwYXJhbWV0 ZXJzCj4gPiA+ID4gPiA+ICAgICAgICAgMTQuIGhvdHBsdWcgZXZlbnQKPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+IHNpbXBseSBwdXQ6IHdlIHJlYWxseSBzaG91bGQga2VlcCB0aGUgImRvIHdlIG5l ZWQgdG8gcmV0cmFpbj8iIGxvZ2ljCj4gPiA+ID4gPiA+IG91dAo+ID4gPiA+ID4gPiBvZiB0aGUK PiA+ID4gPiA+ID4gYWN0dWFsIHJldHJhaW5pbmcgaGVscGVycyBzbyB0aGF0IFNTVC9NU1QgY29k ZXBhdGhzIGNhbiBkbyB0aGVpciBvd24KPiA+ID4gPiA+ID4gY2hlY2tzIHRvCj4gPiA+ID4gPiA+ IGZpZ3VyZSB0aGlzIG91dC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gTm8sIHdlIG5lZWQgaXQgc2lu Y2Ugd2Ugd2FudCB0byBjaGVjayBpdCAqYWZ0ZXIqIGFueSBtb2Rlc2V0IGhhcwo+ID4gPiA+ID4g ZmluaXNoZWQuIFdpdGggTVNUIEkgdGhpbmsgd2hhdCB3ZSdsbCB3YW50IHRvIGRvIGlzIGZpbmQg YWxsIHRoZSBwaXBlcwo+ID4gPiA+ID4gYWZmZWN0ZWQgYnkgdGhlIGxpbmsgZmFpbHVyZSwgbG9j ayB0aGVtLCBhbmQgd2FpdCB1bnRpbCB0aGV5J3JlIGRvbmUKPiA+ID4gPiA+IHdpdGggdGhlaXIg bW9kZXNldHMsIHRoZW4gd2UgY2hlY2sgdGhlIGxpbmsgc3RhdGUuIElmIGl0J3MgYmFkIHdlCj4g PiA+ID4gPiBwcm9jZWVkIHRvIHJldHJhaW4gdGhlIGxpbmsuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IFNvIGJhc2ljYWxseSBqdXN0IHdhbGtpbmcgb3ZlciB0aGUgTVNUIGVuY29kZXJzIGluIGFkZGl0 aW9uIHRvIHRoZQo+ID4gPiA+ID4gU1NUIGVuY29kZXIsIGFuZCByZXBlYXRpbmcgbW9zdCBvZiB0 aGUgc3RlcHMgaW4gdGhpcyBjb2RlIGZvciBlYWNoLgo+ID4gPiA+ID4gSGVuY2UgdGhlIHRoZSBN U1QgRklYTUUgSSBsZWZ0IGluIHRoZXJlIDspCj4gPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiBM eXVkZSwKPiA+ID4gPiAKPiA+ID4gPiBJIGFncmVlIHdpdGggVmlsbGUgaGVyZSwgY2FuIHdlIGFk ZCB0aGUgTVNUIHJldHJhaW4gcmVxdWlyZWQgY2hlY2sgZnJvbQo+ID4gPiA+IHdpdGhpbiB0aGUg aW50ZWxfZHBfcmV0cmFpbl9saW5rKCk/IFNvIGZvciBub3cgdGhlIEZJWE1FIHNob3VsZCBiZSBs ZWZ0Cj4gPiA+ID4gdGhlcmUKPiA+ID4gPiBhbmQgTVNUIHJldHJhaW5pbmcgY2hlY2sgY2FuIGJl IGFkZGVkIGZyb20geW91ciBwYXRjaGVzLgo+ID4gPiA+IAo+ID4gPiA+IE1hbmFzaQo+ID4gPiAK PiA+ID4gWWVwISBTb3JyeSBJIHByb2JhYmx5IHNob3VsZCBoYXZlIHJlaXRlcmF0ZWQgdGhpcyBw YXJ0IG92ZXIgZW1haWwgc2luY2UgSQo+ID4gPiBvbmx5Cj4gPiA+IG1lbnRpb25lZCBpdCB0byB2 aWxsZSBkaXJlY3RseTogdGhpcyBwYXJ0IHNob3VsZCBkZWZpbml0ZWx5IHdvcmsgZmluZSwgYW5k Cj4gPiA+IGludGVsX2RwX3JldHJhaW5fbGluaygpIGlzIGFjdHVhbGx5IHdoZXJlIHdlIGhhbmRs ZSBNU1QgcmV0cmFpbmluZyBpbiB0aGUKPiA+ID4gbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHJldHJh aW5pbmcgc2VyaWVzOgo+ID4gPiAKPiA+ID4gamZ5aSwgeW91IGNhbiBmaW5kIHRoYXQgaGVyZToK PiA+ID4gaHR0cHM6Ly9naXRodWIuY29tL0x5dWRlL2xpbnV4L3RyZWUvd2lwL2k5MTUtbXN0LWZh bGxiYWNrLWE0Cj4gPiA+IEl0J3MgYWxtb3N0IHJlYWR5IGZvciB0aGUgTUwsIGp1c3Qgd2FudCB0 byBnZXQgdGhlIG90aGVyIHBhdGNoZXMgdGhpcyBpcwo+ID4gPiBnb2luZwo+ID4gPiB0byByZWx5 IG9uIGluIGZpcnN0IGFuZCBmaXggc29tZSBzbWFsbCBjb25jZXJucyBJJ3ZlIGdvdCBhYm91dCB0 aGF0Cj4gPiA+IHNlcmllcycKPiA+ID4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBoYW5kbGlu ZyBtb2Rlc2V0cyBhZnRlciBhIGZhaWxlZCByZXRyYWluCj4gPiA+IHNlcXVlbmNlCj4gPiA+ID4g Cj4gPiAKPiA+IEdyZWF0IQo+ID4gQWZ0ZXIgdGhlIGZhaWxlZCByZXRyYWluIHNlcXVlbmNlLCBp dCB3aWxsIGtlZXAgb24gcmV0cnlpbmcgdW50aWwgaGFzIHRyaWVkCj4gPiBhbGwKPiA+IHRoZSBs aW5rIHJhdGUvbGFuZSBjb3VudCBjb21iaW5hdGlvbnMgdW50aWwgUkJSIDEgbGFuZSBhbmQgdGhl biBmYWlsIHdpdGggYQo+ID4gRVJST1IgbWVzc2FnZS4KPiA+IFdoYXQgd2FzIHRoZSBjb25jZXJu IG9uIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIG1vZGVzdGUgYWZ0ZXIgZmFpbGVkCj4g PiByZXRyYWluPwo+IEkgYWN0dWFsbHkgdGFrZSB0aGF0IGJhY2suIFdhcyB3b3JyaWVkIHRoYXQg bm90IGZyZWVpbmcgZXhpc3RpbmcgVkNQSQo+IGFsbG9jYXRpb25zIGR1cmluZyB0aGUgZmlyc3Qg YXRvbWljIGNoZWNrIHBoYXNlIGZvciB0aGUgZmlyc3QgbW9kZXNldCBhZnRlciBhCj4gcmV0cmFp biBmYWlsdXJlIG1pZ2h0IGNhdXNlIGF0b21pYyBjaGVja3MgdG8gZmFpbCBmcm9tIG5vdCBoYXZp bmcgZW5vdWdoIFZDUEkgCj4gc3BhY2UsIGJ1dCB0aGVuIEkgcmVhbGl6ZWQgdGhhdCB3b3VsZG4n dCBtYXR0ZXIgc2luY2UgaWYgd2UncmUgbm90IGFibGUgdG8gZml0Cj4gb25lIGRpc3BsYXkgaW50 byB0aGUgVkNQSSB3aXRoIGEgcmVkdWNlZCBwYm5fZGl2LCB0aGF0IGp1c3QgbWVhbnMgZml0dGlu ZyBib3RoCj4gZGlzcGxheXMgd2l0aCBhIHJlZHVjZWQgcGJuX2RpdiB3b3VsZCBhbHNvIGJlIGlt cG9zc2libGUgOlAuCj4KCkJ1dCB0aGVuIGluIHRoYXQgY2FzZSwgaW4gb3JlZHIgdG8gcmV0cnkg YXQgbG93ZXIgbGluayByYXRlcywgYm90aCB0aGVzZSBtb25pdG9ycyB3aWxsCmhhdmUgdG8gZHJv cCB0byB0aGUgbmV4dCBsb3dlciByZXNvbHV0aW9ucyB0byBmaXQgdGhlIHJlZHVjZWQgcGJuX2Rp di4KCk1hbmFzaQogCj4gPiAKPiA+IE1hbmFzaQo+ID4gIAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiAgCj4gPiA+ID4gPiA+ID4gIAkvKiBTdXBwcmVzcyB1bmRlcnJ1bnMgY2F1c2VkIGJ5IHJl LXRyYWluaW5nICovCj4gPiA+ID4gPiA+ID4gIAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5f cmVwb3J0aW5nKGRldl9wcml2LCBjcnRjLQo+ID4gPiA+ID4gPiA+ID5waXBlLAo+ID4gPiA+ID4g PiA+IGZhbHNlKTsKPiA+ID4gPiA+ID4gPiBAQCAtNDI5OCw1MSArNDM2OSw0OSBAQCBpbnRlbF9k cF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2RwCj4gPiA+ID4gPiA+ID4gKmludGVsX2RwKQo+ ID4gPiA+ID4gPiA+ICAJaWYgKGNydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ID4gPiA+ ID4gPiA+ICAJCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYs Cj4gPiA+ID4gPiA+ID4gIAkJCQkJCSAgICAgIGludGVsX2NydGNfCj4gPiA+ID4gPiA+ID4gcGNo Xwo+ID4gPiA+ID4gPiA+IHRyYW5zY29kCj4gPiA+ID4gPiA+ID4gZXIoY3J0YyksIHRydWUpOwo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ICB9 Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+IC1zdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+ IC1pbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ID4gPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gPiA+ICsgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25u ZWN0ZWQgY2hlY2sgbGlua3Mgc3RhdHVzLAo+ID4gPiA+ID4gPiA+ICsgKiB0aGVyZSBoYXMgYmVl biBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRyaWdnZXJpbmcKPiA+ID4gPiA+ID4gPiArICog bG9uZyBwdWxzZS4KPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiArICogU29tZSBzaW5r cyAoZWcuIEFTVVMgUEIyODdRKSBzZWVtIHRvIHBlcmZvcm0gc29tZQo+ID4gPiA+ID4gPiA+ICsg KiB3ZWlyZCBIUEQgcGluZyBwb25nIGR1cmluZyBtb2Rlc2V0cy4gU28gd2UgY2FuIGFwcGFyZW50 bHkKPiA+ID4gPiA+ID4gPiArICogZW5kIHVwIHdpdGggSFBEIGdvaW5nIGxvdyBkdXJpbmcgYSBt b2Rlc2V0LCBhbmQgdGhlbgo+ID4gPiA+ID4gPiA+ICsgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0 ZXIuIEFuZCBvbmNlIHRoYXQgaGFwcGVucyB3ZSBtdXN0Cj4gPiA+ID4gPiA+ID4gKyAqIHJldHJh aW4gdGhlIGxpbmsgdG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2Ugbm8KPiA+ID4gPiA+ ID4gPiArICogdXNlcnNwYWNlIGNvbXBvbmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQg ZGlwLgo+ID4gPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ID4gPiArc3RhdGljIGJvb2wgaW50ZWxf ZHBfaG90cGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiA+ID4gPiAr CQkJICAgICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ID4gPiA+ID4g IHsKPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4g PiA+ID4gPiA+ID4gdG9faTkxNShpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApKTsKPiA+ID4gPiA+ ID4gPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0KPiA+ID4gPiA+ID4g PiAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLQo+ID4gPiA+ID4gPiA+ID4gYmFzZTsKPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlID0KPiA+ID4gPiA+ID4gPiAtCQlpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5i YXNlLnN0YXRlOwo+ID4gPiA+ID4gPiA+IC0JdTggbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNf U0laRV07Cj4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiA+IC0JV0FSTl9PTighZHJtX21vZGVz ZXRfaXNfbG9ja2VkKCZkZXZfcHJpdi0KPiA+ID4gPiA+ID4gPiA+IGRybS5tb2RlX2NvbmZpZy5j b25uZWN0aW9uX211dGV4KSk7Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ ID4gPiA+IC0JaWYgKCFpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3Rh dHVzKSkgewo+ID4gPiA+ID4gPiA+IC0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGdldCBsaW5rIHN0 YXR1c1xuIik7Cj4gPiA+ID4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+IC0JfQo+ID4g PiA+ID4gPiA+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiA+ID4gPiA+ ID4gPiArCWJvb2wgY2hhbmdlZDsKPiA+ID4gPiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gPiA+ ID4gIAo+ID4gPiA+ID4gPiA+IC0JaWYgKCFjb25uX3N0YXRlLT5jcnRjKQo+ID4gPiA+ID4gPiA+ IC0JCXJldHVybjsKPiA+ID4gPiA+ID4gPiArCWNoYW5nZWQgPSBpbnRlbF9lbmNvZGVyX2hvdHBs dWcoZW5jb2RlciwgY29ubmVjdG9yKTsKPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gLQlX QVJOX09OKCFkcm1fbW9kZXNldF9pc19sb2NrZWQoJmNvbm5fc3RhdGUtPmNydGMtCj4gPiA+ID4g PiA+ID4gPm11dGV4KSk7Cj4gPiA+ID4gPiA+ID4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQo JmN0eCwgMCk7Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+IC0JaWYgKCFjb25uX3N0YXRl LT5jcnRjLT5zdGF0ZS0+YWN0aXZlKQo+ID4gPiA+ID4gPiA+IC0JCXJldHVybjsKPiA+ID4gPiA+ ID4gPiArCWZvciAoOzspIHsKPiA+ID4gPiAKPiA+ID4gPiBIZXJlIGlmIHRoaXMgaXMgZ2V0dGlu ZyBleGVjdXRlZCBkdWUgdG8gaHBkIHBpbmcgcG9uZyBkdXJpbmcgdGhlIG1vZGVzZXQKPiA+ID4g PiBhbmQgdGhhdCBtb2Rlc2V0IGlzIGFscmVhZHkgaGFwcGVuaW5nIGF0IGEgbGluayBmYWxsYmFj ayBwYXJhbWV0ZXIgdGhlbgo+ID4gPiA+IHdoaWxlIHdlIGNhbGwgcmV0cmFpbiBsaW5rLCB3ZSBz aG91bGQgYWxzbyB2YWxpZGF0ZSB0aGUgbGluayBwYXJhbWV0ZXJzCj4gPiA+ID4gc28gdGhhdCBp dCBkb2VzbnQgdHJ5IHRvIHJldHJhaW4gd2l0aCBzdGFsZSB2YWx1ZXMuCj4gPiA+ID4gCj4gPiA+ ID4gSSB0aGluayB3ZSBuZWVkIHRvIGNhbGwgaW50ZWxfZHBfbGlua19wYXJhbXNfdmFsaWQoKSBi ZWZvcmUgcmV0cmFpbi4KPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiArCQlyZXQgPSBpbnRlbF9kcF9y ZXRyYWluX2xpbmsoZW5jb2RlciwgJmN0eCk7Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ IC0JaWYgKGNvbm5fc3RhdGUtPmNvbW1pdCAmJgo+ID4gPiA+ID4gPiA+IC0JICAgICF0cnlfd2Fp dF9mb3JfY29tcGxldGlvbigmY29ubl9zdGF0ZS0+Y29tbWl0LQo+ID4gPiA+ID4gPiA+ID5od19k b25lKSkKPiA+ID4gPiA+ID4gPiAtCQlyZXR1cm47Cj4gPiA+ID4gPiA+ID4gKwkJaWYgKHJldCA9 PSAtRURFQURMSykgewo+ID4gPiA+ID4gPiA+ICsJCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgp Owo+ID4gPiA+ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4g PiA+ID4gIAo+ID4gPiA+ID4gPiA+IC0JLyoKPiA+ID4gPiA+ID4gPiAtCSAqIFZhbGlkYXRlIHRo ZSBjYWNoZWQgdmFsdWVzIG9mIGludGVsX2RwLT5saW5rX3JhdGUgYW5kCj4gPiA+ID4gPiA+ID4g LQkgKiBpbnRlbF9kcC0+bGFuZV9jb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRyYWluLgo+ ID4gPiA+ID4gPiA+IC0JICovCj4gPiA+ID4gPiA+ID4gLQlpZiAoIWludGVsX2RwX2xpbmtfcGFy YW1zX3ZhbGlkKGludGVsX2RwLCBpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+IGxpbmtfcmF0ZSwK PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAtCQkJCQlpbnRlbF9kcC0+bGFuZV9jb3VudCkp Cj4gPiA+ID4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+ICsJCWJyZWFrOwo+ID4gPiA+ ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiAtCS8qIFJldHJhaW4gaWYg Q2hhbm5lbCBFUSBvciBDUiBub3Qgb2sgKi8KPiA+ID4gPiA+ID4gPiAtCWlmICghZHJtX2RwX2No YW5uZWxfZXFfb2sobGlua19zdGF0dXMsIGludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID5sYW5lX2Nv dW50KSkgCj4gPiA+ID4gPiA+ID4gewo+ID4gPiA+ID4gPiA+IC0JCURSTV9ERUJVR19LTVMoIiVz OiBjaGFubmVsIEVRIG5vdCBvaywKPiA+ID4gPiA+ID4gPiByZXRyYWluaW5nXG4iLAo+ID4gPiA+ ID4gPiA+IC0JCQkgICAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUpOwo+ID4gPiA+ID4gPiA+ ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ID4gPiA+ID4gPiArCWRybV9tb2Rl c2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiA+ID4gPiA+ID4gPiArCVdBUk4ocmV0LCAiQWNxdWly aW5nIG1vZGVzZXQgbG9ja3MgZmFpbGVkIHdpdGggJWlcbiIsCj4gPiA+ID4gPiA+ID4gcmV0KTsK PiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gLQkJaW50ZWxfZHBfcmV0cmFpbl9saW5rKGlu dGVsX2RwKTsKPiA+ID4gPiA+ID4gPiAtCX0KPiA+ID4gPiA+ID4gPiArCXJldHVybiBjaGFuZ2Vk Owo+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ICAvKgo+ID4g PiA+ID4gPiA+IEBAIC00NDAwLDcgKzQ0NjksOSBAQCBpbnRlbF9kcF9zaG9ydF9wdWxzZShzdHJ1 Y3QgaW50ZWxfZHAKPiA+ID4gPiA+ID4gPiAqaW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gIAkJCURS TV9ERUJVR19EUklWRVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxCj4gPiA+ID4gPiA+ID4gdW5o YW5kbGVkXG4iKTsKPiA+ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ ID4gLQlpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Cj4gPiA+ID4gPiA+ID4g KwkvKiBkZWZlciB0byB0aGUgaG90cGx1ZyB3b3JrIGZvciBsaW5rIHJldHJhaW5pbmcgaWYKPiA+ ID4gPiA+ID4gPiBuZWVkZWQgKi8KPiA+ID4gPiA+ID4gPiArCWlmIChpbnRlbF9kcF9uZWVkc19s aW5rX3JldHJhaW4oaW50ZWxfZHApKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gIAlpZiAoaW50ZWxfZHAtPmNvbXBsaWFuY2UudGVz dF90eXBlID09Cj4gPiA+ID4gPiA+ID4gRFBfVEVTVF9MSU5LX1RSQUlOSU5HKQo+ID4gPiA+ID4g PiA+IHsKPiA+ID4gPiA+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIENvbXBs aWFuY2UgVGVzdAo+ID4gPiA+ID4gPiA+IHJlcXVlc3RlZFxuIik7Cj4gPiA+ID4gPiA+ID4gQEAg LTQ3ODUsMjAgKzQ4NTYsNiBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IKPiA+ID4gPiA+ID4gPiAqY29ubmVjdG9yKQo+ID4gPiA+ID4gPiA+ICAJCSAqLwo+ID4g PiA+ID4gPiA+ICAJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4g PiA+ID4gPiA+ICAJCWdvdG8gb3V0Owo+ID4gPiA+ID4gPiA+IC0JfSBlbHNlIHsKPiA+ID4gPiA+ ID4gPiAtCQkvKgo+ID4gPiA+ID4gPiA+IC0JCSAqIElmIGRpc3BsYXkgaXMgbm93IGNvbm5lY3Rl ZCBjaGVjayBsaW5rcwo+ID4gPiA+ID4gPiA+IHN0YXR1cywKPiA+ID4gPiA+ID4gPiAtCQkgKiB0 aGVyZSBoYXMgYmVlbiBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzCj4gPiA+ID4gPiA+ID4gdHJp Z2dlcnJpbmcKPiA+ID4gPiA+ID4gPiAtCQkgKiBsb25nIHB1bHNlLgo+ID4gPiA+ID4gPiA+IC0J CSAqCj4gPiA+ID4gPiA+ID4gLQkJICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIyODdRKSBzZWVt IHRvIHBlcmZvcm0KPiA+ID4gPiA+ID4gPiBzb21lCj4gPiA+ID4gPiA+ID4gLQkJICogd2VpcmQg SFBEIHBpbmcgcG9uZyBkdXJpbmcgbW9kZXNldHMuIFNvIHdlIGNhbgo+ID4gPiA+ID4gPiA+IGFw cGFyZW50bHkKPiA+ID4gPiA+ID4gPiAtCQkgKiBlbmQgdXAgd2l0aCBIUEQgZ29pbmcgbG93IGR1 cmluZyBhIG1vZGVzZXQsCj4gPiA+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiA+ID4gdGhlbgo+ID4g PiA+ID4gPiA+IC0JCSAqIGdvaW5nIGJhY2sgdXAgc29vbiBhZnRlci4gQW5kIG9uY2UgdGhhdAo+ ID4gPiA+ID4gPiA+IGhhcHBlbnMgd2UKPiA+ID4gPiA+ID4gPiBtdXN0Cj4gPiA+ID4gPiA+ID4g LQkJICogcmV0cmFpbiB0aGUgbGluayB0byBnZXQgYSBwaWN0dXJlLiBUaGF0J3MgaW4KPiA+ID4g PiA+ID4gPiBjYXNlCj4gPiA+ID4gPiA+ID4gbm8KPiA+ID4gPiA+ID4gPiAtCQkgKiB1c2Vyc3Bh Y2UgY29tcG9uZW50IHJlYWN0ZWQgdG8gaW50ZXJtaXR0ZW50Cj4gPiA+ID4gPiA+ID4gSFBECj4g PiA+ID4gPiA+ID4gZGlwLgo+ID4gPiA+ID4gPiA+IC0JCSAqLwo+ID4gPiA+ID4gPiA+IC0JCWlu dGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGludGVsX2RwKTsKPiA+ID4gPiA+ID4gPiAgCX0KPiA+ ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gIAkvKgo+ID4gPiA+ID4gPiA+IEBAIC01MzQwLDM3 ICs1Mzk3LDEwIEBAIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QKPiA+ID4gPiA+ID4gPiBpbnRl bF9kaWdpdGFsX3BvcnQKPiA+ID4gPiA+ID4gPiAqaW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9uZ19o cGQpCj4gPiA+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ICAJaWYg KCFpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gPiA+ID4gPiA+ID4gLQkJc3RydWN0IGRybV9tb2Rlc2V0 X2FjcXVpcmVfY3R4IGN0eDsKPiA+ID4gPiA+ID4gPiAtCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yID0gJmludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID4gYXR0YWNoZWRfY29ubmVjdG9y LT5iYXNlOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IC0JCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKPiA+ID4gPiA+ID4gPiAtCQlpbnQgaXJldDsKPiA+ID4gPiA+ID4gPiAtCQlib29sIGhh bmRsZWQgPSBmYWxzZTsKPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gLQkJZHJtX21vZGVz ZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ID4gPiA+ID4gPiA+IC1yZXRyeToKPiA+ID4gPiA+ ID4gPiAtCQlpcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmZGV2X3ByaXYtCj4gPiA+ID4gPiA+ID4g PiBkcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgJmN0eCk7Cj4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gLQkJaWYgKGlyZXQpCj4gPiA+ID4gPiA+ID4gLQkJCWdvdG8gZXJyOwo+ ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gPiAtCQljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+ Y3J0YzsKPiA+ID4gPiA+ID4gPiAtCQlpZiAoY3J0Yykgewo+ID4gPiA+ID4gPiA+IC0JCQlpcmV0 ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsCj4gPiA+ID4gPiA+ID4gJmN0eCk7Cj4g PiA+ID4gPiA+ID4gLQkJCWlmIChpcmV0KQo+ID4gPiA+ID4gPiA+IC0JCQkJZ290byBlcnI7Cj4g PiA+ID4gPiA+ID4gLQkJfQo+ID4gPiA+ID4gPiA+ICsJCWJvb2wgaGFuZGxlZDsKPiA+ID4gPiA+ ID4gPiAgCj4gPiA+ID4gPiA+ID4gIAkJaGFuZGxlZCA9IGludGVsX2RwX3Nob3J0X3B1bHNlKGlu dGVsX2RwKTsKPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gLWVycjoKPiA+ID4gPiA+ID4g PiAtCQlpZiAoaXJldCA9PSAtRURFQURMSykgewo+ID4gPiA+ID4gPiA+IC0JCQlkcm1fbW9kZXNl dF9iYWNrb2ZmKCZjdHgpOwo+ID4gPiA+ID4gPiA+IC0JCQlnb3RvIHJldHJ5Owo+ID4gPiA+ID4g PiA+IC0JCX0KPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gLQkJZHJtX21vZGVzZXRfZHJv cF9sb2NrcygmY3R4KTsKPiA+ID4gPiA+ID4gPiAtCQlkcm1fbW9kZXNldF9hY3F1aXJlX2Zpbmko JmN0eCk7Cj4gPiA+ID4gPiA+ID4gLQkJV0FSTihpcmV0LCAiQWNxdWlyaW5nIG1vZGVzZXQgbG9j a3MgZmFpbGVkIHdpdGgKPiA+ID4gPiA+ID4gPiAlaVxuIiwgaXJldCk7Cj4gPiA+ID4gPiA+ID4g LQo+ID4gPiA+ID4gPiA+ICAJCS8qIFNob3J0IHB1bHNlIGNhbiBzaWduaWZ5IGxvc3Mgb2YgaGRj cAo+ID4gPiA+ID4gPiA+IGF1dGhlbnRpY2F0aW9uICovCj4gPiA+ID4gPiA+ID4gIAkJaW50ZWxf aGRjcF9jaGVja19saW5rKGludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID5hdHRhY2hlZF9jb25uZWN0 b3IpOwo+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiBAQCAtNjQwMCw3ICs2NDMwLDcgQEAg Ym9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gPiA+ID4g KmRldl9wcml2LAo+ID4gPiA+ID4gPiA+ICAJCQkgICAgICJEUCAlYyIsIHBvcnRfbmFtZShwb3J0 KSkpCj4gPiA+ID4gPiA+ID4gIAkJZ290byBlcnJfZW5jb2Rlcl9pbml0Owo+ID4gPiA+ID4gPiA+ ICAKPiA+ID4gPiA+ID4gPiAtCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRlbF9lbmNvZGVy X2hvdHBsdWc7Cj4gPiA+ID4gPiA+ID4gKwlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxf ZHBfaG90cGx1ZzsKPiA+ID4gPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmln ID0gaW50ZWxfZHBfY29tcHV0ZV9jb25maWc7Cj4gPiA+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVy LT5nZXRfaHdfc3RhdGUgPSBpbnRlbF9kcF9nZXRfaHdfc3RhdGU7Cj4gPiA+ID4gPiA+ID4gIAlp bnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZHBfZ2V0X2NvbmZpZzsKPiA+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g PiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ID4gPiA+ID4g aW5kZXggNWVhMWRjM2Y2M2JmLi5kZGYyOGE0NDJjZDcgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiA+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiA+ID4gPiA+IEBAIC0xNjExLDYg KzE2MTEsOCBAQCBpbnQKPiA+ID4gPiA+ID4gPiBpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxs YmFja192YWx1ZXMoc3RydWN0Cj4gPiA+ID4gPiA+ID4gaW50ZWxfZHAgKmludGVsX2RwLAo+ID4g PiA+ID4gPiA+ICAJCQkJCSAgICBpbnQgbGlua19yYXRlLAo+ID4gPiA+ID4gPiA+IHVpbnQ4X3QK PiA+ID4gPiA+ID4gPiBsYW5lX2NvdW50KTsKPiA+ID4gPiA+ID4gPiAgdm9pZCBpbnRlbF9kcF9z dGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiA+ID4gPiA+ ICB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKPiA+ID4gPiA+ID4gPiAraW50IGludGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiA+ID4gPiArCQkJICBzdHJ1Y3QgZHJtX21vZGVzZXRf YWNxdWlyZV9jdHggKmN0eCk7Cj4gPiA+ID4gPiA+ID4gIHZvaWQgaW50ZWxfZHBfc2lua19kcG1z KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+ID4gPiA+ID4gPiAgdm9p ZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4g PiA+ID4gPiA+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9l bmNvZGVyCj4gPiA+ID4gPiA+ID4gKmludGVsX2VuY29kZXIpOwo+ID4gPiA+ID4gCj4gPiA+ID4g PiAtLSAKPiA+ID4gPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gPiA+ID4gSW50ZWwgT1RDCj4gPiA+ ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4g PiA+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+ID4gPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+ID4gCj4gPiA+IC0tIAo+ID4gPiBDaGVlcnMsCj4g PiA+IAlMeXVkZSBQYXVsCj4gLS0gCj4gQ2hlZXJzLAo+IAlMeXVkZSBQYXVsCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=