From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 12/23] drm/i915: Enable big joiner support in enable and disable sequences. Date: Fri, 27 Sep 2019 10:25:28 +0200 Message-ID: References: <20190920114235.22411-1-maarten.lankhorst@linux.intel.com> <20190920114235.22411-12-maarten.lankhorst@linux.intel.com> <20190926051819.GW1869@mdroper-desk1.amr.corp.intel.com> <20190926235435.GZ1869@mdroper-desk1.amr.corp.intel.com> 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 727FB6EEB3 for ; Fri, 27 Sep 2019 08:25:31 +0000 (UTC) In-Reply-To: <20190926235435.GZ1869@mdroper-desk1.amr.corp.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjctMDktMjAxOSBvbSAwMTo1NCBzY2hyZWVmIE1hdHQgUm9wZXI6Cj4gT24gV2VkLCBTZXAg MjUsIDIwMTkgYXQgMTA6MTg6MTlQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90ZToKPj4gT24gRnJp LCBTZXAgMjAsIDIwMTkgYXQgMDE6NDI6MjRQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3Jv dGU6Cj4+PiBNYWtlIHZkc2Mgd29yayB3aGVuIG5vIG91dHB1dCBpcyBlbmFibGVkLiBUaGUgYmln IGpvaW5lciBuZWVkcyBWRFNDCj4+PiBvbiB0aGUgc2xhdmUsIHNvIGVuYWJsZSBpdCBhbmQgc2V0 IHRoZSBhcHByb3ByaWF0ZSBiaXRzLgo+Pj4gQWxzbyB1cGRhdGUgdGltZXN0YW1waW5nIGNvbnN0 YW50cywgYmVjYXVzZSBzbGF2ZSBjcnRjJ3MgYXJlIG5vdAo+Pj4gdXBkYXRlZCBpbiBkcm1fYXRv bWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoKS4KPj4+Cj4+PiBUaGlzIHNo b3VsZCBiZSBlbm91Z2ggdG8gYnJpbmcgdXAgQ1JUQydzIGluIGEgYmlnIGpvaW5lciBjb25maWd1 cmF0aW9uLAo+Pj4gd2l0aG91dCBhbnkgcGxhbmUgY29uZmlndXJhdGlvbiBvbiB0aGUgc2Vjb25k IHBpcGUgeWV0Lgo+Pj4KPj4+IEhPV0VWRVIsIHdlIGJyaW5nIHVwIHRoZSBjcnRjJ3MgaW4gdGhl IHdyb25nIG9yZGVyLiBXZSBuZWVkIHRvIG1ha2UKPj4+IHN1cmUgdGhhdCB0aGUgbWFzdGVyIGNy dGMgaXMgYnJvdWdodCB1cCBhZnRlciB0aGUgc2xhdmUgY3J0Yywgd2UKPj4+IGRvbid0IGRvIHRo YXQgeWV0LiBUaGlzIGlzIGRvbmUgY29ycmVjdGx5IGxhdGVyIGluIHRoaXMgc2VyaWVzLgo+Pj4K Pj4+IFRoZSBuZXh0IHN0ZXBzIGFyZSB0byBhZGQgYXRvbWljIGNvbW1pdCwgYW5kIG1ha2Ugc3Vy ZSB3ZSBlbmFibGUgYW5kCj4+PiB1cGRhdGUgYm90aCBtYXN0ZXIgYW5kIHNsYXZlIGluIHRoZSBj b3JyZWN0IG9yZGVyLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IEEgY291cGxlIG1pbm9yIGNvbW1l bnRzIGlubGluZSBiZWxvdywgYnV0IEkgZGlkbid0IHNlZSBhbnkgY2xlYXIKPj4gcHJvYmxlbXMg d2l0aCB0aGlzIHBhdGNoIHNvCj4+Cj4+IEFja2VkLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQu cm9wZXJAaW50ZWwuY29tPgo+Pgo+PiBIb3dldmVyIHRoZXJlJ3MgYSBsb3Qgb2YgcHJldHR5IGNv bXBsaWNhdGVkIGNoYW5nZXMgaGVyZSBpbiBhcmVhcyB0aGF0Cj4+IEknbSBvbmx5IHZhZ3VlbHkg ZmFtaWxpYXIgd2l0aCwgc28gSSB0aGluayBpdCB3b3VsZCBiZSBnb29kIGlmIHNvbWVvbmUKPj4g bGlrZSBNYW5hc2kgd2hvJ3MgbW9yZSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYSBvZiB0aGUgY29k ZSBjb3VsZCBsb29rIGl0Cj4+IG92ZXIuCj4+Cj4+Cj4+IE1hdHQKPj4KPj4KPj4+IC0tLQo+Pj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8ICA1NSArKy0K Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCA0MDIg KysrKysrKysrKysrLS0tLS0tCj4+PiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV90eXBlcy5oICAgIHwgIDE3ICsKPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RwLmMgICAgICAgfCAgMTggKy0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Zkc2MuYyAgICAgfCAxMjIgKysrKy0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF92ZHNjLmggICAgIHwgICAyICsKPj4+ICA2IGZpbGVzIGNoYW5nZWQsIDQx OCBpbnNlcnRpb25zKCspLCAxOTggZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4+PiBpbmRleCBjNzc1ZmQyMDU5MTUuLmEyNjE1NWY5 MDI2MSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGRpLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMK Pj4+IEBAIC0xNjk0LDYgKzE2OTQsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dl dChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+ICAJCXNrbF9kZGlfY2xvY2tfZ2V0 KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPj4+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8PSA4KQo+Pj4gIAkJaHN3X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ Pj4gKwo+Pj4gKwlpZiAocGlwZV9jb25maWctPmJpZ2pvaW5lcikgewo+Pj4gKwkJcGlwZV9jb25m aWctPmh3LnRyYW5zY29kZXJfbW9kZS5jcnRjX2Nsb2NrID0KPj4+ICsJCQlwaXBlX2NvbmZpZy0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+Pj4gKwo+Pj4gKwkJcGlwZV9jb25maWctPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayAvPSAyOwo+Pj4gKwl9Cj4+PiAgfQo+Pj4gIAo+Pj4g IHZvaWQgaW50ZWxfZGRpX3NldF9waXBlX3NldHRpbmdzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4gQEAgLTIxNzYsMTMgKzIxODMsNiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kZGlfZ2V0X3Bvd2VyX2RvbWFpbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4+PiAgCSAgICBpbnRlbF9waHlfaXNfdGMoZGV2X3ByaXYsIHBoeSkpCj4+PiAgCQlpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwKPj4+ICAJCQkJCWludGVsX2RkaV9tYWluX2xp bmtfYXV4X2RvbWFpbihkaWdfcG9ydCkpOwo+Pj4gLQo+Pj4gLQkvKgo+Pj4gLQkgKiBWRFNDIHBv d2VyIGlzIG5lZWRlZCB3aGVuIERTQyBpcyBlbmFibGVkCj4+PiAtCSAqLwo+Pj4gLQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCj4+PiAtCQlpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldChkZXZfcHJpdiwKPj4+IC0JCQkJCWludGVsX2RzY19wb3dlcl9kb21haW4o Y3J0Y19zdGF0ZSkpOwo+Pj4gIH0KPj4+ICAKPj4+ICB2b2lkIGludGVsX2RkaV9lbmFibGVfcGlw ZV9jbG9jayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+IEBA IC0zMjkwLDcgKzMyOTAsOCBAQCBzdGF0aWMgdm9pZCB0Z2xfZGRpX3ByZV9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+PiAgCj4+PiAgCS8qIDcubCAqLwo+Pj4gIAlp bnRlbF9kZGlfZW5hYmxlX2ZlYyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPj4+IC0JaW50ZWxfZHNj X2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPj4+ICsJaWYgKCFjcnRjX3N0YXRlLT5iaWdq b2luZXIpCj4+PiArCQlpbnRlbF9kc2NfZW5hYmxlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+Pj4g IH0KPj4+ICAKPj4+ICBzdGF0aWMgdm9pZCBoc3dfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4+PiBAQCAtMzM2MSw3ICszMzYyLDggQEAgc3RhdGljIHZv aWQgaHN3X2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ Pj4gIAlpZiAoIWlzX21zdCkKPj4+ICAJCWludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhjcnRj X3N0YXRlKTsKPj4+ICAKPj4+IC0JaW50ZWxfZHNjX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRl KTsKPj4+ICsJaWYgKCFjcnRjX3N0YXRlLT5iaWdqb2luZXIpCj4+PiArCQlpbnRlbF9kc2NfZW5h YmxlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0aWMgdm9pZCBp bnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+ IEBAIC0zOTcyLDE5ICszOTc0LDE4IEBAIHZvaWQgaW50ZWxfZGRpX2NvbXB1dGVfbWluX3ZvbHRh Z2VfbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gIAkJY3J0Y19z dGF0ZS0+bWluX3ZvbHRhZ2VfbGV2ZWwgPSAyOwo+Pj4gIH0KPj4+ICAKPj4+IC12b2lkIGludGVs X2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+Pj4gLQkJCSAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+Pj4gK3N0YXRpYyB2b2lkIGlu dGVsX2RkaV9yZWFkX2Z1bmNfY3RsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+Pj4g KwkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+Pj4gIHsKPj4+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPj4+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90 cmFuc2NvZGVyID0gcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOwo+Pj4gIAl1MzIgdGVtcCwg ZmxhZ3MgPSAwOwo+Pj4gIAo+Pj4gLQkvKiBYWFg6IERTSSB0cmFuc2NvZGVyIHBhcmFub2lhICov Cj4+PiAtCWlmIChXQVJOX09OKHRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkpCj4+ PiArCXRlbXAgPSBJOTE1X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7 Cj4+PiArCWlmICghKHRlbXAgJiBUUkFOU19ERElfRlVOQ19FTkFCTEUpKQo+Pj4gIAkJcmV0dXJu Owo+Pj4gIAo+Pj4gLQl0ZW1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9GVU5DX0NUTChjcHVfdHJh bnNjb2RlcikpOwo+Pj4gIAlpZiAodGVtcCAmIFRSQU5TX0RESV9QSFNZTkMpCj4+PiAgCQlmbGFn cyB8PSBEUk1fTU9ERV9GTEFHX1BIU1lOQzsKPj4+ICAJZWxzZQo+Pj4gQEAgLTQwNjYsNiArNDA2 NywyOSBAQCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+Pj4gIAlkZWZhdWx0Ogo+Pj4gIAkJYnJlYWs7Cj4+PiAgCX0KPj4+ICt9Cj4+PiAr Cj4+PiArdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPj4+ICsJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPj4+ ICt7Cj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwo+Pj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBw aXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4+PiArCj4+PiArCS8qIFhYWDogRFNJIHRyYW5z Y29kZXIgcGFyYW5vaWEgKi8KPj4+ICsJaWYgKFdBUk5fT04odHJhbnNjb2Rlcl9pc19kc2koY3B1 X3RyYW5zY29kZXIpKSkKPj4+ICsJCXJldHVybjsKPj4+ICsKPj4+ICsJaW50ZWxfZGRpX3JlYWRf ZnVuY19jdGwoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+Pj4gKwlpZiAocGlwZV9jb25maWctPmJp Z2pvaW5lcl9zbGF2ZSkgewo+Pj4gKwkJLyogcmVhZCBvdXQgcGlwZSBzZXR0aW5ncyBmcm9tIG1h c3RlciAqLwo+Pj4gKwkJZW51bSB0cmFuc2NvZGVyIHNhdmUgPSBwaXBlX2NvbmZpZy0+Y3B1X3Ry YW5zY29kZXI7Cj4+PiArCj4+PiArCQkgLyogT3VyIG93biB0cmFuc2NvZGVyIG5lZWRzIHRvIGJl IGRpc2FibGVkIHdoZW4gcmVhZGluZyBpdCBpbiBpbnRlbF9kZGlfcmVhZF9mdW5jX2N0bCgpICov Cj4+PiArCQlXQVJOX09OKHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMpOwo+Pj4gKwkJcGlwZV9j b25maWctPmNwdV90cmFuc2NvZGVyID0gKGVudW0gdHJhbnNjb2RlcilwaXBlX2NvbmZpZy0+Ymln am9pbmVyX2xpbmtlZF9jcnRjLT5waXBlOwo+Pj4gKwkJaW50ZWxfZGRpX3JlYWRfZnVuY19jdGwo ZW5jb2RlciwgcGlwZV9jb25maWcpOwo+Pj4gKwkJcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVy ID0gc2F2ZTsKPj4+ICsJfQo+Pj4gIAo+Pj4gIAlwaXBlX2NvbmZpZy0+aGFzX2F1ZGlvID0KPj4+ ICAJCWludGVsX2RkaV9pc19hdWRpb19lbmFibGVkKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7 Cj4+PiBAQCAtNDA5MCw3ICs0MTE0LDggQEAgdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+ICAJCWRldl9wcml2LT52YnQuZWRwLmJwcCA9 IHBpcGVfY29uZmlnLT5waXBlX2JwcDsKPj4+ICAJfQo+Pj4gIAo+Pj4gLQlpbnRlbF9kZGlfY2xv Y2tfZ2V0KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPj4+ICsJaWYgKCFwaXBlX2NvbmZpZy0+Ymln am9pbmVyX3NsYXZlKQo+Pj4gKwkJaW50ZWxfZGRpX2Nsb2NrX2dldChlbmNvZGVyLCBwaXBlX2Nv bmZpZyk7Cj4+PiAgCj4+PiAgCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPj4+ICAJCXBpcGVf Y29uZmlnLT5sYW5lX2xhdF9vcHRpbV9tYXNrID0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4+PiBpbmRleCAxNDNkNTMxYzRjODEuLjhjMDhjNDkx NGM5YiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYwo+Pj4gQEAgLTY0NDksNiArNjQ0OSw0NSBAQCBzdGF0aWMgdm9pZCBpY2xfcGlwZV9t YnVzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4+ICAJSTkxNV9XUklURShQSVBF X01CVVNfREJPWF9DVEwocGlwZSksIHZhbCk7Cj4+PiAgfQo+Pj4gIAo+Pj4gK3N0YXRpYyB2b2lk IGljbF9kZGlfYmlnam9pbmVyX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCj4+PiArCQkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+ PiArewo+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqbWFzdGVyID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVy X2NydGNfc3RhdGU7Cj4+PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRl Owo+Pj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPj4+ICsJc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIgPSBOVUxMOwo+Pj4gKwlpbnQgaTsKPj4+ICsKPj4+ICsJaWYgKGNydGNf c3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkKPj4+ICsJCW1hc3RlciA9IGNydGNfc3RhdGUtPmJpZ2pv aW5lcl9saW5rZWRfY3J0YzsKPj4+ICsKPj4+ICsJbWFzdGVyX2NydGNfc3RhdGUgPSBpbnRlbF9h dG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBtYXN0ZXIpOwo+Pj4gKwo+Pj4gKwlmb3Jf ZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29ubiwgY29ubl9zdGF0 ZSwgaSkgewo+Pj4gKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJm1hc3Rlci0+YmFzZSkKPj4+ ICsJCQljb250aW51ZTsKPj4+ICsKPj4+ICsJCWVuY29kZXIgPSB0b19pbnRlbF9lbmNvZGVyKGNv bm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4+PiArCQlicmVhazsKPj4+ICsJfQo+Pj4gKwo+Pj4g KwlpZiAoIWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkgewo+Pj4gKwkJLyogbmVlZCB0byBl bmFibGUgVkRTQywgd2hpY2ggd2Ugc2tpcHBlZCBpbiBwcmUtZW5hYmxlICovCj4+PiArCQlpbnRl bF9kc2NfZW5hYmxlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+Pj4gKwl9IGVsc2Ugewo+Pj4gKwkJ LyoKPj4+ICsJCSAqIEVuYWJsZSBzZXF1ZW5jZSBzdGVwcyAxLTcgb24gYmlnam9pbmVyIG1hc3Rl cgo+Pj4gKwkJICovCj4+IEknZCBleHRlbmQgdGhpcyBjb21tZW50IHRvIGluZGljYXRlIHRoYXQg d2UgZG8gdGhpcyBvbiB0aGUgc2xhdmUgKHVzaW5nCj4+IHRoZSBtYXN0ZXIncyBzdGF0ZSwgdHJh bnNjb2RlciwgYW5kIERESSkgYmVjYXVzZSB0aGUgW3dpbGxdIHByb2dyYW0gdGhlCj4+IHNsYXZl IENSVEMgYmVmb3JlIHRoZSBtYXN0ZXIuCj4+Cj4+PiArCQlpbnRlbF9lbmNvZGVyc19wcmVfcGxs X2VuYWJsZShtYXN0ZXIsIG1hc3Rlcl9jcnRjX3N0YXRlLCBzdGF0ZSk7Cj4+PiArCQlpbnRlbF9l bmFibGVfc2hhcmVkX2RwbGwobWFzdGVyX2NydGNfc3RhdGUpOwo+Pj4gKwkJaW50ZWxfZW5jb2Rl cnNfcHJlX2VuYWJsZShtYXN0ZXIsIG1hc3Rlcl9jcnRjX3N0YXRlLCBzdGF0ZSk7Cj4+PiArCj4+ PiArCQkvKiBhbmQgRFNDIG9uIHNsYXZlICovCj4+PiArCQlpbnRlbF9kc2NfZW5hYmxlKE5VTEws IGNydGNfc3RhdGUpOwo+Pj4gKwl9Cj4+PiArfQo+Pj4gKwo+Pj4gIHN0YXRpYyB2b2lkIGhhc3dl bGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+Pj4g IAkJCQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+ICB7Cj4+PiBAQCAtNjQ2 MiwzNyArNjUwMSwzOCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPj4+ICAJaWYgKFdBUk5fT04oaW50ZWxfY3J0 Yy0+YWN0aXZlKSkKPj4+ICAJCXJldHVybjsKPj4+ICAKPj4+IC0JaW50ZWxfZW5jb2RlcnNfcHJl X3BsbF9lbmFibGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKPj4+ICsJaWYgKCFw aXBlX2NvbmZpZy0+Ymlnam9pbmVyKSB7Cj4+PiArCQlpbnRlbF9lbmNvZGVyc19wcmVfcGxsX2Vu YWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgc3RhdGUpOwo+Pj4gIAo+Pj4gLQlpZiAocGlw ZV9jb25maWctPnNoYXJlZF9kcGxsKQo+Pj4gLQkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHBp cGVfY29uZmlnKTsKPj4+ICsJCWlmIChwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpCj4+PiArCQkJ aW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHBpcGVfY29uZmlnKTsKPj4+ICAKPj4+IC0JaW50ZWxf ZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgc3RhdGUpOwo+Pj4g KwkJaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgc3Rh dGUpOwo+Pj4gKwl9IGVsc2Ugewo+Pj4gKwkJaWNsX2RkaV9iaWdqb2luZXJfcHJlX2VuYWJsZShz dGF0ZSwgcGlwZV9jb25maWcpOwo+Pj4gKwl9Cj4+PiAgCj4+PiAtCWlmIChpbnRlbF9jcnRjX2hh c19kcF9lbmNvZGVyKHBpcGVfY29uZmlnKSkKPj4+IC0JCWludGVsX2RwX3NldF9tX24ocGlwZV9j b25maWcsIE0xX04xKTsKPj4+ICsJaW50ZWxfc2V0X3BpcGVfc3JjX3NpemUocGlwZV9jb25maWcp Owo+Pj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VMTChkZXZf cHJpdikpCj4+PiArCQliZHdfc2V0X3BpcGVtaXNjKHBpcGVfY29uZmlnKTsKPj4+ICAKPj4+IC0J aWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4+PiAtCQlpbnRlbF9zZXRf cGlwZV90aW1pbmdzKHBpcGVfY29uZmlnKTsKPj4+ICsJaWYgKCFwaXBlX2NvbmZpZy0+Ymlnam9p bmVyX3NsYXZlICYmICF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpIHsKPj4+ICsJ CWlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKHBpcGVfY29uZmlnKSkKPj4+ICsJCQlpbnRl bF9kcF9zZXRfbV9uKHBpcGVfY29uZmlnLCBNMV9OMSk7Cj4+PiAgCj4+PiAtCWludGVsX3NldF9w aXBlX3NyY19zaXplKHBpcGVfY29uZmlnKTsKPj4+ICsJCWludGVsX3NldF9waXBlX3RpbWluZ3Mo cGlwZV9jb25maWcpOwo+Pj4gIAo+Pj4gLQlpZiAoY3B1X3RyYW5zY29kZXIgIT0gVFJBTlNDT0RF Ul9FRFAgJiYKPj4+IC0JICAgICF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpIHsK Pj4+IC0JCUk5MTVfV1JJVEUoUElQRV9NVUxUKGNwdV90cmFuc2NvZGVyKSwKPj4+IC0JCQkgICBw aXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciAtIDEpOwo+Pj4gLQl9Cj4+PiArCQlpZiAoY3B1 X3RyYW5zY29kZXIgIT0gVFJBTlNDT0RFUl9FRFApCj4+PiArCQkJSTkxNV9XUklURShQSVBFX01V TFQoY3B1X3RyYW5zY29kZXIpLAo+Pj4gKwkJCQkgIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBs aWVyIC0gMSk7Cj4+PiAgCj4+PiAtCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7 Cj4+PiAtCQlpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKHBpcGVfY29uZmlnLAo+Pj4gLQkJ CQkJICAgICAmcGlwZV9jb25maWctPmZkaV9tX24sIE5VTEwpOwo+Pj4gLQl9Cj4+PiArCQlpZiAo cGlwZV9jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+Pj4gKwkJCWludGVsX2NwdV90cmFuc2Nv ZGVyX3NldF9tX24ocGlwZV9jb25maWcsCj4+PiArCQkJCQkJICAgICZwaXBlX2NvbmZpZy0+ZmRp X21fbiwgTlVMTCk7Cj4+PiArCQl9Cj4+PiAgCj4+PiAtCWlmICghdHJhbnNjb2Rlcl9pc19kc2ko Y3B1X3RyYW5zY29kZXIpKQo+Pj4gIAkJaGFzd2VsbF9zZXRfcGlwZWNvbmYocGlwZV9jb25maWcp Owo+Pj4gLQo+Pj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VM TChkZXZfcHJpdikpCj4+PiAtCQliZHdfc2V0X3BpcGVtaXNjKHBpcGVfY29uZmlnKTsKPj4+ICsJ fQo+Pj4gIAo+Pj4gIAlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+Pj4gIAo+Pj4gQEAgLTY1 MjAsOSArNjU2MCwxMSBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPj4+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTEpCj4+PiAgCQlpY2xfc2V0X3BpcGVfY2hpY2tlbihpbnRlbF9jcnRjKTsKPj4+ICAK Pj4+IC0JaW50ZWxfZGRpX3NldF9waXBlX3NldHRpbmdzKHBpcGVfY29uZmlnKTsKPj4+IC0JaWYg KCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4+PiArCWlmICghcGlwZV9jb25m aWctPmJpZ2pvaW5lcl9zbGF2ZSAmJiAhdHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIp KSB7Cj4+PiArCQlpbnRlbF9kZGlfc2V0X3BpcGVfc2V0dGluZ3MocGlwZV9jb25maWcpOwo+Pj4g Kwo+Pj4gIAkJaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMocGlwZV9jb25maWcpOwo+ Pj4gKwl9Cj4+PiAgCj4+PiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFy a3MgIT0gTlVMTCkKPj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhz dGF0ZSwgcGlwZV9jb25maWcpOwo+Pj4gQEAgLTY1MzEsOCArNjU3MywxMCBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZywKPj4+ICAJCWljbF9waXBlX21idXNfZW5hYmxlKGludGVsX2NydGMpOwo+Pj4gIAo+Pj4gIAkv KiBYWFg6IERvIHRoZSBwaXBlIGFzc2VydGlvbnMgYXQgdGhlIHJpZ2h0IHBsYWNlIGZvciBCWFQg RFNJLiAqLwo+Pj4gLQlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkKPj4+ ICsJaWYgKCFwaXBlX2NvbmZpZy0+Ymlnam9pbmVyX3NsYXZlICYmICF0cmFuc2NvZGVyX2lzX2Rz aShjcHVfdHJhbnNjb2RlcikpCj4+PiAgCQlpbnRlbF9lbmFibGVfcGlwZShwaXBlX2NvbmZpZyk7 Cj4+PiArCWVsc2UKPj4+ICsJCXRyYWNlX2ludGVsX3BpcGVfZW5hYmxlKGludGVsX2NydGMpOwo+ Pj4gIAo+Pj4gIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlcikKPj4+ICAJCWxwdF9w Y2hfZW5hYmxlKHN0YXRlLCBwaXBlX2NvbmZpZyk7Cj4+PiBAQCAtNjY2Myw5ICs2NzA3LDI3IEBA IHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSwKPj4+ICAJZWxzZQo+Pj4gIAkJaXJvbmxha2VfcGZpdF9kaXNhYmxl KG9sZF9jcnRjX3N0YXRlKTsKPj4+ICAKPj4+IC0JaW50ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxl KGludGVsX2NydGMsIG9sZF9jcnRjX3N0YXRlLCBzdGF0ZSk7Cj4+PiArCWlmIChvbGRfY3J0Y19z dGF0ZS0+Ymlnam9pbmVyKSB7Cj4+PiArCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqbWFzdGVyOwo+Pj4g KwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm1hc3Rlcl9jcnRjX3N0YXRlOwo+Pj4gIAo+Pj4g LQlpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKGludGVsX2NydGMsIG9sZF9jcnRjX3N0 YXRlLCBzdGF0ZSk7Cj4+PiArCQkvKiBwb3J0cyBhcmUgZGlzYWJsZWQgZnJvbSB0aGUgc2xhdmUs IGFmdGVyIGl0IGRlY29uZmlndXJlcyAqLwo+Pj4gKwkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymln am9pbmVyX3NsYXZlKQo+Pj4gKwkJCXJldHVybjsKPj4+ICsKPj4+ICsJCW1hc3RlciA9IG9sZF9j cnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGM7Cj4+PiArCQltYXN0ZXJfY3J0Y19zdGF0 ZSA9IGludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIG1hc3Rlcik7Cj4+PiAr Cj4+PiArCQlpbnRlbF9kZGlfZGlzYWJsZV9waXBlX2Nsb2NrKG9sZF9jcnRjX3N0YXRlKTsKPj4+ ICsKPj4+ICsJCS8qIGRpc2FibGUgcG9ydHMgb24gdGhlIG1hc3RlciBjcnRjICovCj4+PiArCQlp bnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUobWFzdGVyLCBtYXN0ZXJfY3J0Y19zdGF0ZSwgc3Rh dGUpOwo+Pj4gKwkJaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlzYWJsZShtYXN0ZXIsIG1hc3Rl cl9jcnRjX3N0YXRlLCBzdGF0ZSk7Cj4+PiArCX0gZWxzZSB7Cj4+PiArCQlpbnRlbF9lbmNvZGVy c19wb3N0X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKPj4+ICsK Pj4+ICsJCWludGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2Ny dGNfc3RhdGUsIHN0YXRlKTsKPj4+ICsJfQo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0aWMgdm9pZCBp OXh4X3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+Pj4gQEAgLTY4MjksNiArNjg5MSw5IEBAIHN0YXRpYyB1NjQgZ2V0X2NydGNfcG93ZXJfZG9t YWlucyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+ICAJaWYgKGNydGNf c3RhdGUtPnNoYXJlZF9kcGxsKQo+Pj4gIAkJbWFzayB8PSBCSVRfVUxMKFBPV0VSX0RPTUFJTl9E SVNQTEFZX0NPUkUpOwo+Pj4gIAo+Pj4gKwlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21w cmVzc2lvbl9lbmFibGUpCj4+PiArCQltYXNrIHw9IEJJVF9VTEwoaW50ZWxfZHNjX3Bvd2VyX2Rv bWFpbihjcnRjX3N0YXRlKSk7Cj4+PiArCj4+PiAgCXJldHVybiBtYXNrOwo+Pj4gIH0KPj4+ICAK Pj4+IEBAIC03NDE3LDYgKzc0ODIsMTkgQEAgc3RhdGljIHUzMiBpbGtfcGlwZV9waXhlbF9yYXRl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPj4+ICAJcmV0dXJu IHBpeGVsX3JhdGU7Cj4+PiAgfQo+Pj4gIAo+Pj4gK3N0YXRpYyB2b2lkIGludGVsX2VuY29kZXJf Z2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+ICsJCQkJICAgICBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+ICt7Cj4+PiArCWVuY29kZXIt PmdldF9jb25maWcoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4+PiArCj4+PiArCWNydGNfc3RhdGUt Pmh3LnRyYW5zY29kZXJfbW9kZS5mbGFncyA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUu ZmxhZ3M7Cj4+PiArCj4+PiArCS8qIGlmIHRyYW5zY29kZXIgY2xvY2sgaXMgbm90IHNldCwgYXNz dW1lIHNhbWUgYXMgYWRqdXN0ZWRfbW9kZSBjbG9jayAqLwo+Pj4gKwlpZiAoIWNydGNfc3RhdGUt Pmh3LnRyYW5zY29kZXJfbW9kZS5jcnRjX2Nsb2NrKQo+Pj4gKwkJY3J0Y19zdGF0ZS0+aHcudHJh bnNjb2Rlcl9tb2RlLmNydGNfY2xvY2sgPQo+Pj4gKwkJCWNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUuY3J0Y19jbG9jazsKPj4+ICt9Cj4+PiArCj4+PiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0 Y19jb21wdXRlX3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4+PiAgewo+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPj4+IEBAIC04MjY1LDYgKzgzNDMsMjQgQEAg c3RhdGljIHZvaWQgaW50ZWxfZ2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPj4+ICAJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsICs9IDE7 Cj4+PiAgCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQgKz0g MTsKPj4+ICAJfQo+Pj4gKwo+Pj4gKwlwaXBlX2NvbmZpZy0+aHcudHJhbnNjb2Rlcl9tb2RlID0g cGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4+PiArCWlmIChwaXBlX2NvbmZpZy0+Ymln am9pbmVyKSB7Cj4+PiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Cj4+PiArCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+Pj4gKwo+Pj4gKwkJLyoK Pj4+ICsJCSAgKiB0cmFuc2NvZGVyIGlzIHByb2dyYW1tZWQgdG8gdGhlIGZ1bGwgbW9kZSwKPj4+ ICsJCSAgKiBidXQgcGlwamUgdGltaW5ncyBhcmUgaGFsZiBvZiB0aGUgdHJhbnNjb2RlciBtb2Rl Cj4+PiArCQkgICovCj4+PiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5IC89IDI7Cj4+ PiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hibGFua19zdGFydCAvPSAyOwo+Pj4gKwkJYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19oYmxhbmtfZW5kIC89IDI7Cj4+PiArCQlhZGp1c3RlZF9tb2RlLT5jcnRj X2hzeW5jX3N0YXJ0IC89IDI7Cj4+PiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX2VuZCAv PSAyOwo+Pj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWwgLz0gMjsKPj4+ICsJCWFkanVz dGVkX21vZGUtPmNydGNfaHNrZXcgLz0gMjsKPj4+ICsJfQo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0 aWMgdm9pZCBpbnRlbF9nZXRfcGlwZV9zcmNfc2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK Pj4+IEBAIC04Mjg1LDIwICs4MzgxLDIyIEBAIHN0YXRpYyB2b2lkIGludGVsX2dldF9waXBlX3Ny Y19zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+Pj4gIHZvaWQgaW50ZWxfbW9kZV9mcm9t X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+Pj4gIAkJCQkgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+Pj4gIHsKPj4+IC0JbW9kZS0+aGRp c3BsYXkgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Owo+Pj4g LQltb2RlLT5odG90YWwgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3Rh bDsKPj4+IC0JbW9kZS0+aHN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9k ZS5jcnRjX2hzeW5jX3N0YXJ0Owo+Pj4gLQltb2RlLT5oc3luY19lbmQgPSBwaXBlX2NvbmZpZy0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX2VuZDsKPj4+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmh3X21vZGUgPSAmcGlwZV9jb25maWctPmh3LnRyYW5zY29kZXJfbW9kZTsKPj4+ICAK Pj4+IC0JbW9kZS0+dmRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5Owo+Pj4gLQltb2RlLT52dG90YWwgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZS5jcnRjX3Z0b3RhbDsKPj4+IC0JbW9kZS0+dnN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0Owo+Pj4gLQltb2RlLT52c3luY19lbmQg PSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKPj4+ICsJbW9k ZS0+aGRpc3BsYXkgPSBod19tb2RlLT5jcnRjX2hkaXNwbGF5Owo+Pj4gKwltb2RlLT5odG90YWwg PSBod19tb2RlLT5jcnRjX2h0b3RhbDsKPj4+ICsJbW9kZS0+aHN5bmNfc3RhcnQgPSBod19tb2Rl LT5jcnRjX2hzeW5jX3N0YXJ0Owo+Pj4gKwltb2RlLT5oc3luY19lbmQgPSBod19tb2RlLT5jcnRj X2hzeW5jX2VuZDsKPj4+ICAKPj4+IC0JbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5mbGFnczsKPj4+ICsJbW9kZS0+dmRpc3BsYXkgPSBod19tb2RlLT5jcnRjX3Zk aXNwbGF5Owo+Pj4gKwltb2RlLT52dG90YWwgPSBod19tb2RlLT5jcnRjX3Z0b3RhbDsKPj4+ICsJ bW9kZS0+dnN5bmNfc3RhcnQgPSBod19tb2RlLT5jcnRjX3ZzeW5jX3N0YXJ0Owo+Pj4gKwltb2Rl LT52c3luY19lbmQgPSBod19tb2RlLT5jcnRjX3ZzeW5jX2VuZDsKPj4+ICsKPj4+ICsJbW9kZS0+ ZmxhZ3MgPSBod19tb2RlLT5mbGFnczsKPj4+ICAJbW9kZS0+dHlwZSA9IERSTV9NT0RFX1RZUEVf RFJJVkVSOwo+Pj4gIAo+Pj4gLQltb2RlLT5jbG9jayA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3Rl ZF9tb2RlLmNydGNfY2xvY2s7Cj4+PiArCW1vZGUtPmNsb2NrID0gaHdfbW9kZS0+Y3J0Y19jbG9j azsKPj4+ICAKPj4+ICAJbW9kZS0+aHN5bmMgPSBkcm1fbW9kZV9oc3luYyhtb2RlKTsKPj4+ICAJ bW9kZS0+dnJlZnJlc2ggPSBkcm1fbW9kZV92cmVmcmVzaChtb2RlKTsKPj4+IEBAIC0xMDM4NSw2 ICsxMDQ4Myw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+Pj4gIAl1MzIgdG1wOwo+Pj4gIAo+Pj4gIAl0bXAgPSBJOTE1 X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcikpOwo+ Pj4gKwlpZiAoISh0bXAgJiBUUkFOU19ERElfRlVOQ19FTkFCTEUpKQo+Pj4gKwkJcmV0dXJuOwo+ Pj4gIAo+Pj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPj4+ICAJCXBvcnQgPSBU R0xfVFJBTlNfRERJX0ZVTkNfQ1RMX1ZBTF9UT19QT1JUKHRtcCk7Cj4+PiBAQCAtMTA0NTUsMTEg KzEwNTU1LDE5IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+Pj4gIAkJV0FSTl9PTihhY3RpdmUpOwo+Pj4gIAkJYWN0aXZlID0g dHJ1ZTsKPj4+ICAJfQo+Pj4gKwlpbnRlbF9kc2NfZ2V0X2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4+ PiAgCj4+PiAtCWlmICghYWN0aXZlKQo+Pj4gLQkJZ290byBvdXQ7Cj4+PiArCWlmICghYWN0aXZl KSB7Cj4+PiArCQkvKiBiaWdqb2luZXIgc2xhdmUgZG9lc24ndCBlbmFibGUgdHJhbnNjb2RlciAq Lwo+Pj4gKwkJaWYgKCFwaXBlX2NvbmZpZy0+Ymlnam9pbmVyX3NsYXZlKQo+Pj4gKwkJCWdvdG8g b3V0Owo+Pj4gKwo+Pj4gKwkJYWN0aXZlID0gdHJ1ZTsKPj4+ICsJCXBpcGVfY29uZmlnLT5waXhl bF9tdWx0aXBsaWVyID0gMTsKPj4+ICAKPj4+IC0JaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShwaXBl X2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIpIHx8Cj4+PiArCQkvKiB3ZSBjYW5ub3QgcmVhZCBvdXQg bW9zdCBzdGF0ZSwgc28gZG9uJ3QgYm90aGVyLi4gKi8KPj4+ICsJCXBpcGVfY29uZmlnLT5xdWly a3MgfD0gUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFOwo+Pj4gKwl9IGVsc2UgaWYg KCF0cmFuc2NvZGVyX2lzX2RzaShwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIpIHx8Cj4+PiAg CSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4+PiAgCQloYXN3ZWxsX2dldF9kZGlf cG9ydF9zdGF0ZShjcnRjLCBwaXBlX2NvbmZpZyk7Cj4+PiAgCQlpbnRlbF9nZXRfcGlwZV90aW1p bmdzKGNydGMsIHBpcGVfY29uZmlnKTsKPj4+IEBAIC0xMDUxMyw3ICsxMDYyMSwxMCBAQCBzdGF0 aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK Pj4+ICAJCX0KPj4+ICAJfQo+Pj4gIAo+Pj4gLQlpZiAocGlwZV9jb25maWctPmNwdV90cmFuc2Nv ZGVyICE9IFRSQU5TQ09ERVJfRURQICYmCj4+PiArCWlmIChwaXBlX2NvbmZpZy0+Ymlnam9pbmVy X3NsYXZlKSB7Cj4+PiArCQkvKiBDYW5ub3QgYmUgcmVhZCBvdXQgYXMgYSBzbGF2ZSwgc2V0IHRv IDAuICovCj4+PiArCQlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9IDA7Cj4+PiArCX0g ZWxzZSBpZiAocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfRURQICYm Cj4+PiAgCSAgICAhdHJhbnNjb2Rlcl9pc19kc2kocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVy KSkgewo+Pj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPQo+Pj4gIAkJCUk5MTVf UkVBRChQSVBFX01VTFQocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyKSkgKyAxOwo+Pj4gQEAg LTExNDY4LDcgKzExNTc5LDcgQEAgaW50ZWxfZW5jb2Rlcl9jdXJyZW50X21vZGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCj4+PiAgCQlyZXR1cm4gTlVMTDsKPj4+ICAJfQo+Pj4gIAo+ Pj4gLQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+Pj4gKwlpbnRl bF9lbmNvZGVyX2dldF9jb25maWcoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4+PiAgCj4+PiAgCWlu dGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhtb2RlLCBjcnRjX3N0YXRlKTsKPj4+ICAKPj4+IEBA IC0xMjI4NSw5ICsxMjM5NiwxMSBAQCBzdGF0aWMgdm9pZCBjb3B5X3VhcGlfdG9faHdfc3RhdGUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+PiAgCj4+PiAgc3RhdGljIHZv aWQgY29weV9od190b191YXBpX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+Pj4gIHsKPj4+IC0JY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUgPSBjcnRjX3N0YXRlLT5o dy5lbmFibGU7Cj4+PiAtCWNydGNfc3RhdGUtPnVhcGkuYWN0aXZlID0gY3J0Y19zdGF0ZS0+aHcu YWN0aXZlOwo+Pj4gLQljcnRjX3N0YXRlLT51YXBpLm1vZGUgPSBjcnRjX3N0YXRlLT5ody5tb2Rl Owo+Pj4gKwlpZiAoIWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkgewo+Pj4gKwkJY3J0Y19z dGF0ZS0+dWFwaS5lbmFibGUgPSBjcnRjX3N0YXRlLT5ody5lbmFibGU7Cj4+PiArCQljcnRjX3N0 YXRlLT51YXBpLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPj4+ICsJCWNydGNfc3Rh dGUtPnVhcGkubW9kZSA9IGNydGNfc3RhdGUtPmh3Lm1vZGU7Cj4+PiArCX0KPj4+ICAJY3J0Y19z dGF0ZS0+dWFwaS5hZGp1c3RlZF9tb2RlID0gY3J0Y19zdGF0ZS0+aHcudHJhbnNjb2Rlcl9tb2Rl Owo+Pj4gIH0KPj4+ICAKPj4+IEBAIC0xMjMxOCw2ICsxMjQzMSw3IEBAIGNvcHlfYmlnam9pbmVy X2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+PiAgCWNy dGNfc3RhdGUtPmh3LmFjdGl2ZSA9IGZyb21fY3J0Y19zdGF0ZS0+aHcuYWN0aXZlOwo+Pj4gIAlj cnRjX3N0YXRlLT5ody5tb2RlID0gZnJvbV9jcnRjX3N0YXRlLT5ody5tb2RlOwo+Pj4gIAljcnRj X3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlID0gZnJvbV9jcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9t b2RlOwo+Pj4gKwljcnRjX3N0YXRlLT5ody50cmFuc2NvZGVyX21vZGUgPSBmcm9tX2NydGNfc3Rh dGUtPmh3LnRyYW5zY29kZXJfbW9kZTsKPj4+ICAKPj4+ICAJLyogU29tZSBmaXh1cHMgKi8KPj4+ ICAJY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2NoYW5nZWQgPSBmcm9tX2NydGNfc3RhdGUtPnVhcGku bW9kZV9jaGFuZ2VkOwo+Pj4gQEAgLTEyODMzLDE5ICsxMjk0Nyw0MSBAQCBpbnRlbF9waXBlX2Nv bmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZp ZywKPj4+ICAKPj4+ICAJUElQRV9DT05GX0NIRUNLX1gob3V0cHV0X3R5cGVzKTsKPj4+ICAKPj4+ IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5KTsKPj4+ IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCk7Cj4+PiAt CVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQpOwo+ Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX2VuZCk7 Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFy dCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19l bmQpOwo+Pj4gLQo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNf dmRpc3BsYXkpOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNf dnRvdGFsKTsKPj4+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Zi bGFua19zdGFydCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0 Y192YmxhbmtfZW5kKTsKPj4+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZzeW5jX3N0YXJ0KTsKPj4+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9k ZS5jcnRjX3ZzeW5jX2VuZCk7Cj4+PiArCWlmICghUElQRV9DT05GX1FVSVJLKFBJUEVfQ09ORklH X1FVSVJLX0JJR0pPSU5FUl9TTEFWRSkpIHsKPj4+ICsJCS8qIGJpZ2pvaW5lciBtb2RlID0gdHJh bnNjb2RlciBtb2RlIC8gMiwgZm9yIGNhbGN1bGF0aW9ucyAqLwo+Pj4gKwkJUElQRV9DT05GX0NI RUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5KTsKPj4+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwpOwo+Pj4gKwkJUElQRV9DT05GX0NI RUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5KTsKPj4+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwpOwo+Pj4gKwo+Pj4gKwkJUElQRV9D T05GX0NIRUNLX0koaHcudHJhbnNjb2Rlcl9tb2RlLmNydGNfaGRpc3BsYXkpOwo+Pj4gKwkJUElQ RV9DT05GX0NIRUNLX0koaHcudHJhbnNjb2Rlcl9tb2RlLmNydGNfaHRvdGFsKTsKPj4+ICsJCVBJ UEVfQ09ORl9DSEVDS19JKGh3LnRyYW5zY29kZXJfbW9kZS5jcnRjX2hibGFua19zdGFydCk7Cj4+ PiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody50cmFuc2NvZGVyX21vZGUuY3J0Y19oYmxhbmtfZW5k KTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LnRyYW5zY29kZXJfbW9kZS5jcnRjX2hzeW5j X3N0YXJ0KTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LnRyYW5zY29kZXJfbW9kZS5jcnRj X2hzeW5jX2VuZCk7Cj4+PiArCj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody50cmFuc2NvZGVy X21vZGUuY3J0Y192ZGlzcGxheSk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody50cmFuc2Nv ZGVyX21vZGUuY3J0Y192dG90YWwpOwo+Pj4gKwkJUElQRV9DT05GX0NIRUNLX0koaHcudHJhbnNj b2Rlcl9tb2RlLmNydGNfdmJsYW5rX3N0YXJ0KTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3 LnRyYW5zY29kZXJfbW9kZS5jcnRjX3ZibGFua19lbmQpOwo+Pj4gKwkJUElQRV9DT05GX0NIRUNL X0koaHcudHJhbnNjb2Rlcl9tb2RlLmNydGNfdnN5bmNfc3RhcnQpOwo+Pj4gKwkJUElQRV9DT05G X0NIRUNLX0koaHcudHJhbnNjb2Rlcl9tb2RlLmNydGNfdnN5bmNfZW5kKTsKPj4+ICsKPj4+ICsJ CVBJUEVfQ09ORl9DSEVDS19GTEFHUyhody50cmFuc2NvZGVyX21vZGUuZmxhZ3MsCj4+PiArCQkJ CSAgICAgIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKTsKPj4+ICsKPj4+ICsJCWlmICghUElQRV9D T05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX01PREVfU1lOQ19GTEFHUykpIHsKPj4+ICsJCQlQ SVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcudHJhbnNjb2Rlcl9tb2RlLmZsYWdzLAo+Pj4gKwkJCQkJ ICAgICAgRFJNX01PREVfRkxBR19QSFNZTkMpOwo+Pj4gKwkJCVBJUEVfQ09ORl9DSEVDS19GTEFH Uyhody50cmFuc2NvZGVyX21vZGUuZmxhZ3MsCj4+PiArCQkJCQkgICAgICBEUk1fTU9ERV9GTEFH X05IU1lOQyk7Cj4+PiArCQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LnRyYW5zY29kZXJfbW9k ZS5mbGFncywKPj4+ICsJCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfUFZTWU5DKTsKPj4+ICsJCQlQ SVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcudHJhbnNjb2Rlcl9tb2RlLmZsYWdzLAo+Pj4gKwkJCQkJ ICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOwo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiAgCj4+PiAg CVBJUEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+Pj4gIAlQSVBFX0NPTkZfQ0hF Q0tfSShvdXRwdXRfZm9ybWF0KTsKPj4+IEBAIC0xMjg1NywyNCArMTI5OTMsMTEgQEAgaW50ZWxf cGlwZV9jb25maWdfY29tcGFyZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVu dF9jb25maWcsCj4+PiAgCVBJUEVfQ09ORl9DSEVDS19CT09MKGhkbWlfc2NyYW1ibGluZyk7Cj4+ PiAgCVBJUEVfQ09ORl9DSEVDS19CT09MKGhkbWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKTsKPj4+ ICAJUElQRV9DT05GX0NIRUNLX0JPT0woaGFzX2luZm9mcmFtZSk7Cj4+PiAtCVBJUEVfQ09ORl9D SEVDS19CT09MKGZlY19lbmFibGUpOwo+Pj4gKwlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NP TkZJR19RVUlSS19CSUdKT0lORVJfU0xBVkUpKQo+Pj4gKwkJUElQRV9DT05GX0NIRUNLX0JPT0wo ZmVjX2VuYWJsZSk7Cj4+PiAgCj4+PiAgCVBJUEVfQ09ORl9DSEVDS19CT09MX0lOQ09NUExFVEUo aGFzX2F1ZGlvKTsKPj4+ICAKPj4+IC0JUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVk X21vZGUuZmxhZ3MsCj4+PiAtCQkJICAgICAgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpOwo+Pj4g LQo+Pj4gLQlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZTkNf RkxBR1MpKSB7Cj4+PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5m bGFncywKPj4+IC0JCQkJICAgICAgRFJNX01PREVfRkxBR19QSFNZTkMpOwo+Pj4gLQkJUElQRV9D T05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4+PiAtCQkJCSAgICAgIERS TV9NT0RFX0ZMQUdfTkhTWU5DKTsKPj4+IC0JCVBJUEVfQ09ORl9DSEVDS19GTEFHUyhody5hZGp1 c3RlZF9tb2RlLmZsYWdzLAo+Pj4gLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BWU1lOQyk7Cj4+ PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywKPj4+IC0J CQkJICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOwo+Pj4gLQl9Cj4+PiAtCj4+PiAgCVBJUEVf Q09ORl9DSEVDS19YKGdtY2hfcGZpdC5jb250cm9sKTsKPj4+ICAJLyogcGZpdCByYXRpb3MgYXJl IGF1dG9jb21wdXRlZCBieSB0aGUgaHcgb24gZ2VuNCsgKi8KPj4+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA0KQo+Pj4gQEAgLTEyODk4LDcgKzEzMDIxLDggQEAgaW50ZWxfcGlwZV9jb25m aWdfY29tcGFyZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcs Cj4+PiAgCQl9Cj4+PiAgCj4+PiAgCQlQSVBFX0NPTkZfQ0hFQ0tfSShzY2FsZXJfc3RhdGUuc2Nh bGVyX2lkKTsKPj4+IC0JCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShwaXhlbF9yYXRlKTsK Pj4+ICsJCWlmICghUElQRV9DT05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9T TEFWRSkpCj4+PiArCQkJUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZKHBpeGVsX3JhdGUpOwo+ Pj4gIAo+Pj4gIAkJUElQRV9DT05GX0NIRUNLX1goZ2FtbWFfbW9kZSk7Cj4+PiAgCQlpZiAoSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpCj4+PiBAQCAtMTI5MTcsNDggKzEzMDQxLDUwIEBAIGludGVs X3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJl bnRfY29uZmlnLAo+Pj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChkb3VibGVfd2lkZSk7Cj4+PiAg Cj4+PiAgCVBJUEVfQ09ORl9DSEVDS19QKHNoYXJlZF9kcGxsKTsKPj4+ICsJaWYgKCFQSVBFX0NP TkZfUVVJUksoUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFKSkgewo+Pj4gIAlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmRwbGwpOwo+PiBNaXNzaW5nIGluZGVudCBvbiB0 aGlzIGxpbmU/Cj4+Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbF9t ZCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZnAwKTsKPj4+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDEpOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLndycGxsKTsKPj4+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5zcGxsKTsKPj4+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5jdHJsMSk7 Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IxKTsKPj4+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5jZmdjcjIpOwo+Pj4gLQlQSVBFX0NPTkZfQ0hF Q0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUuZWJiMCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZWJi NCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMCk7Cj4+PiAtCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMSk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVD S19YKGRwbGxfaHdfc3RhdGUucGxsMik7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdf c3RhdGUucGxsMyk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsNik7 Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsOCk7Cj4+PiAtCVBJUEVf Q09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsOSk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19Y KGRwbGxfaHdfc3RhdGUucGxsMTApOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0 YXRlLnBjc2R3MTIpOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3Jl ZmNsa2luX2N0bCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfY2xr dG9wMl9jb3JlY2xrY3RsMSk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu bWdfY2xrdG9wMl9oc2Nsa2N0bCk7Cj4+PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUubWdfcGxsX2RpdjApOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1n X3BsbF9kaXYxKTsKPj4+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxf bGYpOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9mcmFjX2xv Y2spOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9zc2MpOwo+ Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9iaWFzKTsKPj4+IC0J UElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfdGRjX2NvbGRzdF9iaWFzKTsK Pj4+IC0KPj4+IC0JUElQRV9DT05GX0NIRUNLX1goZHNpX3BsbC5jdHJsKTsKPj4+IC0JUElQRV9D T05GX0NIRUNLX1goZHNpX3BsbC5kaXYpOwo+Pj4gLQo+Pj4gLQlpZiAoSVNfRzRYKGRldl9wcml2 KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4+PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfSShw aXBlX2JwcCk7Cj4+PiAtCj4+PiAtCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShody5hZGp1 c3RlZF9tb2RlLmNydGNfY2xvY2spOwo+Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlko cG9ydF9jbG9jayk7Cj4+PiAtCj4+PiAtCVBJUEVfQ09ORl9DSEVDS19JKG1pbl92b2x0YWdlX2xl dmVsKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Cj4+ PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmZwMCk7Cj4+PiArCQlQSVBFX0NP TkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmZwMSk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLndycGxsKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUuc3BsbCk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmN0cmwxKTsK Pj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IxKTsKPj4+ICsJCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IyKTsKPj4+ICsJCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IwKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRw bGxfaHdfc3RhdGUuZWJiMCk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LmViYjQpOwo+Pj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGwwKTsKPj4+ ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMSk7Cj4+PiArCQlQSVBFX0NP TkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDIpOwo+Pj4gKwkJUElQRV9DT05GX0NIRUNLX1go ZHBsbF9od19zdGF0ZS5wbGwzKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUucGxsNik7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDgpOwo+ Pj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGw5KTsKPj4+ICsJCVBJUEVf Q09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMTApOwo+Pj4gKwkJUElQRV9DT05GX0NIRUNL X1goZHBsbF9od19zdGF0ZS5wY3NkdzEyKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUubWdfcmVmY2xraW5fY3RsKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUubWdfY2xrdG9wMl9jb3JlY2xrY3RsMSk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLm1nX2Nsa3RvcDJfaHNjbGtjdGwpOwo+Pj4gKwkJUElQRV9DT05GX0NI RUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfZGl2MCk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLm1nX3BsbF9kaXYxKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRw bGxfaHdfc3RhdGUubWdfcGxsX2xmKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdf c3RhdGUubWdfcGxsX2ZyYWNfbG9jayk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3 X3N0YXRlLm1nX3BsbF9zc2MpOwo+Pj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0 ZS5tZ19wbGxfYmlhcyk7Cj4+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1n X3BsbF90ZGNfY29sZHN0X2JpYXMpOwo+Pj4gKwo+Pj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHNp X3BsbC5jdHJsKTsKPj4+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuZGl2KTsKPj4+ICsK Pj4+ICsJCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkK Pj4+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX2JwcCk7Cj4+PiArCj4+PiArCQlQSVBFX0NP TkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkoaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrKTsKPj4+ICsJ CVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShwb3J0X2Nsb2NrKTsKPj4+ICsKPj4+ICsJCVBJ UEVfQ09ORl9DSEVDS19JKG1pbl92b2x0YWdlX2xldmVsKTsKPj4+ICsJfQo+Pj4gIAo+Pj4gIAlQ SVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmVuYWJsZSk7Cj4+PiAgCVBJUEVfQ09ORl9DSEVD S19YKGluZm9mcmFtZXMuZ2NwKTsKPj4+IEBAIC0xMjk2Nyw2ICsxMzA5MywxMiBAQCBpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50 X2NvbmZpZywKPj4+ICAJUElQRV9DT05GX0NIRUNLX0lORk9GUkFNRShoZG1pKTsKPj4+ICAJUElQ RV9DT05GX0NIRUNLX0lORk9GUkFNRShkcm0pOwo+Pj4gIAo+Pj4gKwlQSVBFX0NPTkZfQ0hFQ0tf Qk9PTChiaWdqb2luZXIpOwo+Pj4gKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChiaWdqb2luZXJfc2xh dmUpOwo+Pj4gKwlQSVBFX0NPTkZfQ0hFQ0tfUChiaWdqb2luZXJfbGlua2VkX2NydGMpOwo+Pj4g KwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChkc2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSk7Cj4+ PiArCVBJUEVfQ09ORl9DSEVDS19CT09MKGRzY19wYXJhbXMuZHNjX3NwbGl0KTsKPj4+ICsKPj4+ ICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX1gKPj4+ICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0kK Pj4+ICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0JPT0wKPj4+IEBAIC0xMzIyMSw2ICsxMzM1Myw3 IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+Pj4gIAlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPj4+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnOwo+Pj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+PiAr CXN0cnVjdCBpbnRlbF9jcnRjICptYXN0ZXIgPSBjcnRjOwo+Pj4gIAlib29sIGFjdGl2ZTsKPj4+ ICAKPj4+ICAJc3RhdGUgPSBvbGRfY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZTsKPj4+IEBAIC0xMzI1 MCw3ICsxMzM4MywxMCBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPj4+ICAJCQkiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4+PiAgCQkJbmV3X2NydGNf c3RhdGUtPmh3LmFjdGl2ZSwgY3J0Yy0+YWN0aXZlKTsKPj4+ICAKPj4+IC0JZm9yX2VhY2hfZW5j b2Rlcl9vbl9jcnRjKGRldiwgJmNydGMtPmJhc2UsIGVuY29kZXIpIHsKPj4+ICsJaWYgKG5ld19j cnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4+PiArCQltYXN0ZXIgPSBuZXdfY3J0Y19zdGF0 ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjOwo+Pj4gKwo+Pj4gKwlmb3JfZWFjaF9lbmNvZGVyX29u X2NydGMoZGV2LCAmbWFzdGVyLT5iYXNlLCBlbmNvZGVyKSB7Cj4+PiAgCQllbnVtIHBpcGUgcGlw ZTsKPj4+ICAKPj4+ICAJCWFjdGl2ZSA9IGVuY29kZXItPmdldF9od19zdGF0ZShlbmNvZGVyLCAm cGlwZSk7Cj4+PiBAQCAtMTMyNTksMTIgKzEzMzk1LDEyIEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+Pj4gIAkJCQllbmNvZGVyLT5iYXNlLmJhc2UuaWQsIGFj dGl2ZSwKPj4+ICAJCQkJbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSk7Cj4+PiAgCj4+PiAtCQlJ OTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIGNydGMtPnBpcGUgIT0gcGlwZSwKPj4+ICsJCUk5MTVf U1RBVEVfV0FSTihhY3RpdmUgJiYgbWFzdGVyLT5waXBlICE9IHBpcGUsCj4+PiAgCQkJCSJFbmNv ZGVyIGNvbm5lY3RlZCB0byB3cm9uZyBwaXBlICVjXG4iLAo+Pj4gIAkJCQlwaXBlX25hbWUocGlw ZSkpOwo+Pj4gIAo+Pj4gIAkJaWYgKGFjdGl2ZSkKPj4+IC0JCQllbmNvZGVyLT5nZXRfY29uZmln KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPj4+ICsJCQlpbnRlbF9lbmNvZGVyX2dldF9jb25maWco ZW5jb2RlciwgcGlwZV9jb25maWcpOwo+Pj4gIAl9Cj4+PiAgCj4+PiAgCWludGVsX2NydGNfY29t cHV0ZV9waXhlbF9yYXRlKHBpcGVfY29uZmlnKTsKPj4+IEBAIC0xMzkwNiw2ICsxNDA0Miw3IEBA IHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ Pj4gIAo+Pj4gIAlpZiAobW9kZXNldCkgewo+Pj4gIAkJdXBkYXRlX3NjYW5saW5lX29mZnNldChu ZXdfY3J0Y19zdGF0ZSk7Cj4+PiArCQlkcm1fY2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRzKCZj cnRjLT5iYXNlLCAmbmV3X2NydGNfc3RhdGUtPmh3LnRyYW5zY29kZXJfbW9kZSk7Cj4+PiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZShuZXdfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+Pj4g IAo+Pj4gIAkJLyogdmJsYW5rcyB3b3JrIGFnYWluLCByZS1lbmFibGUgcGlwZSBDUkMuICovCj4+ PiBAQCAtMTM5OTAsNyArMTQxMjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jb21taXRfbW9kZXNl dF9kaXNhYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+ICAJICovCj4+ PiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlX3JldmVyc2Uoc3RhdGUsIGNy dGMsIG9sZF9jcnRjX3N0YXRlLAo+Pj4gIAkJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ Pj4gLQkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKPj4+ICsJCWlmICghbmVl ZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkgfHwgb2xkX2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9z bGF2ZSkKPj4+ICAJCQljb250aW51ZTsKPj4+ICAKPj4+ICAJCWludGVsX3ByZV9wbGFuZV91cGRh dGUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKTsKPj4+IEBAIC0xNDAwMCw2ICsxNDEz NywxOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+ICAJCQkJCQkgICAgICBvbGRfY3J0Y19zdGF0 ZSwKPj4+ICAJCQkJCQkgICAgICBuZXdfY3J0Y19zdGF0ZSwKPj4+ICAJCQkJCQkgICAgICBjcnRj KTsKPj4+ICsKPj4+ICsJCWlmIChvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKSB7Cj4+PiArCQkJ c3RydWN0IGludGVsX2NydGMgKnNsYXZlID0gb2xkX2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5r ZWRfY3J0YzsKPj4+ICsJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3NsYXZlX2NydGNf c3RhdGUgPQo+Pj4gKwkJCQlpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNl LCBzbGF2ZSk7Cj4+PiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19zbGF2ZV9jcnRj X3N0YXRlID0KPj4+ICsJCQkJaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFz ZSwgc2xhdmUpOwo+Pj4gKwo+Pj4gKwkJCWludGVsX29sZF9jcnRjX3N0YXRlX2Rpc2FibGVzKHN0 YXRlLAo+Pj4gKwkJCQkJCSAgICAgIG9sZF9zbGF2ZV9jcnRjX3N0YXRlLAo+Pj4gKwkJCQkJCSAg ICAgIG5ld19zbGF2ZV9jcnRjX3N0YXRlLAo+Pj4gKwkJCQkJCSAgICAgIHNsYXZlKTsKPj4+ICsJ CX0KPj4+ICAJfQo+Pj4gIH0KPj4+ICAKPj4+IEBAIC0xNjQzMyw3ICsxNjU4Myw3IEBAIGludCBp bnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+ICAJZm9yX2VhY2hf aW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPj4+ICAJCXN0cnVjdCBpbnRlbF9pbml0aWFsX3BsYW5l X2NvbmZpZyBwbGFuZV9jb25maWcgPSB7fTsKPj4+ICAKPj4+IC0JCWlmICghY3J0Yy0+YWN0aXZl KQo+Pj4gKwkJaWYgKCF0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpLT51YXBp LmFjdGl2ZSkKPj4+ICAJCQljb250aW51ZTsKPj4+ICAKPj4+ICAJCS8qCj4+PiBAQCAtMTY5MjMs NyArMTcwNzMsMTcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+PiAgCQkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4+PiAgCj4+PiAgCQkJZW5jb2Rlci0+YmFzZS5j cnRjID0gJmNydGMtPmJhc2U7Cj4+PiAtCQkJZW5jb2Rlci0+Z2V0X2NvbmZpZyhlbmNvZGVyLCBj cnRjX3N0YXRlKTsKPj4+ICsJCQlpbnRlbF9lbmNvZGVyX2dldF9jb25maWcoZW5jb2RlciwgY3J0 Y19zdGF0ZSk7Cj4+PiArCj4+PiArCQkJLyogcmVhZCBvdXQgdG8gc2xhdmUgY3J0YyBhcyB3ZWxs IGZvciBiaWdqb2luZXIgKi8KPj4+ICsJCQlpZiAoY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKSB7Cj4+ PiArCQkJCS8qIGVuY29kZXIgc2hvdWxkIHJlYWQgYmUgbGlua2VkIHRvIGJpZ2pvaW5lciBtYXN0 ZXIgKi8KPj4+ICsJCQkJV0FSTl9PTihjcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpOwo+Pj4g Kwo+Pj4gKwkJCQljcnRjID0gY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjOwo+Pj4g KwkJCQljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsK Pj4+ICsJCQkJaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ Pj4gKwkJCX0KPj4+ICAJCX0gZWxzZSB7Cj4+PiAgCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gTlVM TDsKPj4+ICAJCX0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oCj4+PiBpbmRleCBkZDAzMjlhNGI5ZmYuLjdlMDZjNjE0NDdlNiAx MDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV90eXBlcy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaAo+Pj4gQEAgLTc4Niw2ICs3ODYsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSB7Cj4+PiAgCSAqIGFjY29yZGluZ2x5Lgo+Pj4gIAkgKi8KPj4+ICAjZGVmaW5lIFBJUEVf Q09ORklHX1FVSVJLX01PREVfU1lOQ19GTEFHUwkoMTw8MCkgLyogdW5yZWxpYWJsZSBzeW5jIG1v ZGUuZmxhZ3MgKi8KPj4+ICsjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9TTEFW RQkoMTw8MSkgLyogYmlnam9pbmVyIHNsYXZlLCBwYXJ0aWFsIHJlYWRvdXQgKi8KPj4+ICAJdW5z aWduZWQgbG9uZyBxdWlya3M7Cj4+PiAgCj4+PiAgCXVuc2lnbmVkIGZiX2JpdHM7IC8qIGZyYW1l YnVmZmVycyB0byBmbGlwICovCj4+PiBAQCAtMTU3Miw0ICsxNTczLDIwIEBAIHN0YXRpYyBpbmxp bmUgdTMyIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqc3RhdGUpCj4+PiAgCXJldHVybiBpOTE1X2dndHRfb2Zmc2V0KHN0YXRlLT52bWEpOwo+ Pj4gIH0KPj4+ICAKPj4+ICtzdGF0aWMgaW5saW5lIGJvb2wKPj4+ICtpbnRlbF9jcnRjX3N1cHBv cnRzX2RzYyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4+PiAr ewo+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBpcGVf Y29uZmlnLT51YXBpLmNydGMtPmRldik7Cj4+PiArCj4+PiArCS8qIE9uIFRHTCwgRFNDIGlzIHN1 cHBvcnRlZCBvbiBhbGwgUGlwZXMgKi8KPj4+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTIpCj4+PiArCQlyZXR1cm4gdHJ1ZTsKPj4+ICsKPj4+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTAgJiYKPj4+ICsJICAgIHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciAhPSBUUkFO U0NPREVSX0EpCj4+PiArCQlyZXR1cm4gdHJ1ZTsKPj4+ICsKPj4+ICsJcmV0dXJuIGZhbHNlOwo+ Pj4gK30KPj4+ICsKPj4+ICAjZW5kaWYgLyogIF9fSU5URUxfRElTUExBWV9UWVBFU19IX18gKi8K Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPj4+IGluZGV4IDNkNDg3 Y2UxNjE1MS4uMjM0YmUxYzMxOTU4IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMKPj4+IEBAIC0xOTA3LDIyICsxOTA3LDYgQEAgc3RhdGljIGJvb2wgaW50 ZWxfZHBfc3VwcG9ydHNfZmVjKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+PiAgCQlkcm1f ZHBfc2lua19zdXBwb3J0c19mZWMoaW50ZWxfZHAtPmZlY19jYXBhYmxlKTsKPj4+ICB9Cj4+PiAg Cj4+PiAtc3RhdGljIGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2RzYyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+Pj4gLQkJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZykKPj4+IC17Cj4+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+Pj4gLQo+Pj4gLQkvKiBPbiBUR0wsIERTQyBp cyBzdXBwb3J0ZWQgb24gYWxsIFBpcGVzICovCj4+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDEyKQo+Pj4gLQkJcmV0dXJuIHRydWU7Cj4+PiAtCj4+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDEwICYmCj4+PiAtCSAgICBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgIT0g VFJBTlNDT0RFUl9BKQo+Pj4gLQkJcmV0dXJuIHRydWU7Cj4+PiAtCj4+PiAtCXJldHVybiBmYWxz ZTsKPj4+IC19Cj4+PiAtCj4+PiAgc3RhdGljIGJvb2wgaW50ZWxfZHBfc3VwcG9ydHNfZHNjKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+PiAgCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+Pj4gIHsKPj4+IEBAIC0xOTMwLDcgKzE5MTQsNyBAQCBz dGF0aWMgYm9vbCBpbnRlbF9kcF9zdXBwb3J0c19kc2Moc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPj4+ICAJaWYgKCFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApICYmICFwaXBlX2NvbmZpZy0+ ZmVjX2VuYWJsZSAmJiAwKQo+Pj4gIAkJcmV0dXJuIGZhbHNlOwo+Pj4gIAo+Pj4gLQlyZXR1cm4g aW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2RzYyhpbnRlbF9kcCwgcGlwZV9jb25maWcpICYmCj4+ PiArCXJldHVybiBpbnRlbF9jcnRjX3N1cHBvcnRzX2RzYyhwaXBlX2NvbmZpZykgJiYKPj4+ICAJ CWRybV9kcF9zaW5rX3N1cHBvcnRzX2RzYyhpbnRlbF9kcC0+ZHNjX2RwY2QpOwo+Pj4gIH0KPj4+ ICAKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zk c2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jCj4+PiBpbmRl eCAzOGMxODE0OTk1MDUuLjExZDRkYTk3MzRhMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYwo+Pj4gQEAgLTQ4MCwxMSArNDgwLDEwIEBAIGludGVs X2RzY19wb3dlcl9kb21haW4oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4+PiAgCQlyZXR1cm4gUE9XRVJfRE9NQUlOX1RSQU5TQ09ERVIoY3B1X3RyYW5zY29kZXIp Owo+Pj4gIH0KPj4+ICAKPj4+IC1zdGF0aWMgdm9pZCBpbnRlbF9jb25maWd1cmVfcHBzX2Zvcl9k c2NfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+IC0JCQkJCQljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+ICtzdGF0aWMgdm9pZCBp bnRlbF9jb25maWd1cmVfcHBzX2Zvcl9kc2NfZW5jb2Rlcihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+ICB7Cj4+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+Pj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPj4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNl LmRldik7Cj4+PiAgCWNvbnN0IHN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmY3J0 Y19zdGF0ZS0+ZHBfZHNjX2NmZzsKPj4+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ Pj4gIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJh bnNjb2RlcjsKPj4+IEBAIC00OTQsNiArNDkzLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfY29uZmln dXJlX3Bwc19mb3JfZHNjX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ PiAgCXU4IG51bV92ZHNjX2luc3RhbmNlcyA9IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkgPyAyIDogMTsKPj4+ICAJaW50IGkgPSAwOwo+Pj4gIAo+Pj4gKwlpZiAoY3J0Y19zdGF0 ZS0+Ymlnam9pbmVyKQo+Pj4gKwkJbnVtX3Zkc2NfaW5zdGFuY2VzICo9IDI7Cj4+PiArCj4+PiAg CS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wIHJlZ2lzdGVycyAqLwo+Pj4gIAlw cHNfdmFsID0gRFNDX1ZFUl9NQUogfCB2ZHNjX2NmZy0+ZHNjX3ZlcnNpb25fbWlub3IgPDwKPj4+ ICAJCURTQ19WRVJfTUlOX1NISUZUIHwKPj4+IEBAIC04OTksNzQgKzkwMSwxMDQgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZHBfd3JpdGVfZHNjX3Bwc19zZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4+PiAgCQkJCQlzaXplb2YoZHBfZHNjX3Bwc19zZHApKTsKPj4+ICB9Cj4+PiAgCj4+ PiArc3RhdGljIGk5MTVfcmVnX3QgZHNzX2N0bDFfcmVnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4gK3sKPj4+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4+PiArCj4+PiArCWlmIChjcnRj X3N0YXRlLT5jcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkKPj4+ICsJCXJldHVybiBE U1NfQ1RMMTsKPj4+ICsKPj4+ICsJcmV0dXJuIElDTF9QSVBFX0RTU19DVEwxKHBpcGUpOwo+Pj4g K30KPj4+ICsKPj4+ICtzdGF0aWMgaTkxNV9yZWdfdCBkc3NfY3RsMl9yZWcoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+PiArewo+Pj4gKwllbnVtIHBpcGUgcGlw ZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKS0+cGlwZTsKPj4+ICsKPj4+ ICsJaWYgKGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKQo+Pj4g KwkJcmV0dXJuIERTU19DVEwyOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gSUNMX1BJUEVfRFNTX0NUTDIo cGlwZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gIHZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+ICAJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4gIHsKPj4+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4+PiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+Pj4g LQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+PiAtCWk5MTVfcmVnX3QgZHNzX2N0bDFf cmVnLCBkc3NfY3RsMl9yZWc7Cj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+Pj4gIAl1MzIgZHNzX2N0bDFfdmFsID0gMDsK Pj4+ICAJdTMyIGRzc19jdGwyX3ZhbCA9IDA7Cj4+PiAgCj4+PiAgCWlmICghY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCj4+PiAgCQlyZXR1cm47Cj4+PiAgCj4+PiAt CS8qIEVuYWJsZSBQb3dlciB3ZWxscyBmb3IgVkRTQy9qb2luaW5nICovCj4+PiAtCWludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+Pj4gLQkJCQlpbnRlbF9kc2NfcG93ZXJfZG9tYWlu KGNydGNfc3RhdGUpKTsKPj4+ICsJaW50ZWxfY29uZmlndXJlX3Bwc19mb3JfZHNjX2VuY29kZXIo Y3J0Y19zdGF0ZSk7Cj4+PiAgCj4+PiAtCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNv ZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+Pj4gKwlpZiAoIWNydGNfc3RhdGUtPmJpZ2pvaW5l cl9zbGF2ZSkKPj4+ICsJCWludGVsX2RwX3dyaXRlX2RzY19wcHNfc2RwKGVuY29kZXIsIGNydGNf c3RhdGUpOwo+Pj4gIAo+Pj4gLQlpbnRlbF9kcF93cml0ZV9kc2NfcHBzX3NkcChlbmNvZGVyLCBj cnRjX3N0YXRlKTsKPj4+IC0KPj4+IC0JaWYgKGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyID09 IFRSQU5TQ09ERVJfRURQKSB7Cj4+PiAtCQlkc3NfY3RsMV9yZWcgPSBEU1NfQ1RMMTsKPj4+IC0J CWRzc19jdGwyX3JlZyA9IERTU19DVEwyOwo+Pj4gLQl9IGVsc2Ugewo+Pj4gLQkJZHNzX2N0bDFf cmVnID0gSUNMX1BJUEVfRFNTX0NUTDEocGlwZSk7Cj4+PiAtCQlkc3NfY3RsMl9yZWcgPSBJQ0xf UElQRV9EU1NfQ1RMMihwaXBlKTsKPj4+IC0JfQo+Pj4gIAlkc3NfY3RsMl92YWwgfD0gTEVGVF9C UkFOQ0hfVkRTQ19FTkFCTEU7Cj4+PiAgCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkgewo+Pj4gIAkJZHNzX2N0bDJfdmFsIHw9IFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRTsK Pj4+ICAJCWRzc19jdGwxX3ZhbCB8PSBKT0lORVJfRU5BQkxFOwo+Pj4gIAl9Cj4+PiAtCUk5MTVf V1JJVEUoZHNzX2N0bDFfcmVnLCBkc3NfY3RsMV92YWwpOwo+Pj4gLQlJOTE1X1dSSVRFKGRzc19j dGwyX3JlZywgZHNzX2N0bDJfdmFsKTsKPj4+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcikg ewo+Pj4gKwkJZHNzX2N0bDFfdmFsIHw9IEJJR19KT0lORVJfRU5BQkxFOwo+Pj4gKwkJaWYgKCFj cnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4+PiArCQkJZHNzX2N0bDFfdmFsIHw9IE1BU1RF Ul9CSUdfSk9JTkVSX0VOQUJMRTsKPj4+ICsJfQo+Pj4gKwlJOTE1X1dSSVRFKGRzc19jdGwxX3Jl ZyhjcnRjX3N0YXRlKSwgZHNzX2N0bDFfdmFsKTsKPj4+ICsJSTkxNV9XUklURShkc3NfY3RsMl9y ZWcoY3J0Y19zdGF0ZSksIGRzc19jdGwyX3ZhbCk7Cj4+PiAgfQo+Pj4gIAo+Pj4gIHZvaWQgaW50 ZWxfZHNjX2Rpc2FibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlKQo+Pj4gIHsKPj4+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KG9sZF9jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+IC0JZW51bSBwaXBlIHBp cGUgPSBjcnRjLT5waXBlOwo+Pj4gLQlpOTE1X3JlZ190IGRzc19jdGwxX3JlZywgZHNzX2N0bDJf cmVnOwo+Pj4gLQl1MzIgZHNzX2N0bDFfdmFsID0gMCwgZHNzX2N0bDJfdmFsID0gMDsKPj4+ICAK Pj4+ICAJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUp Cj4+PiAgCQlyZXR1cm47Cj4+PiAgCj4+PiAtCWlmIChvbGRfY3J0Y19zdGF0ZS0+Y3B1X3RyYW5z Y29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPj4+IC0JCWRzc19jdGwxX3JlZyA9IERTU19DVEwx Owo+Pj4gLQkJZHNzX2N0bDJfcmVnID0gRFNTX0NUTDI7Cj4+PiAtCX0gZWxzZSB7Cj4+PiAtCQlk c3NfY3RsMV9yZWcgPSBJQ0xfUElQRV9EU1NfQ1RMMShwaXBlKTsKPj4+IC0JCWRzc19jdGwyX3Jl ZyA9IElDTF9QSVBFX0RTU19DVEwyKHBpcGUpOwo+Pj4gKwlJOTE1X1dSSVRFKGRzc19jdGwxX3Jl ZyhvbGRfY3J0Y19zdGF0ZSksIDApOwo+Pj4gKwlJOTE1X1dSSVRFKGRzc19jdGwyX3JlZyhvbGRf Y3J0Y19zdGF0ZSksIDApOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGludGVsX2RzY19nZXRfY29u ZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4gK3sKPj4+ICsJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Yy0+YmFzZS5kZXYpOwo+Pj4gKwl1MzIgZHNzX2N0bDFfdmFsLCBkc3NfY3RsMl92YWw7Cj4+PiAr CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+Pj4gKwo+Pj4gKwlpZiAoIWludGVsX2NydGNfc3Vw cG9ydHNfZHNjKGNydGNfc3RhdGUpKQo+Pj4gKwkJcmV0dXJuOwo+Pj4gKwo+Pj4gKwl3YWtlcmVm ID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgaW50ZWxfZHNj X3Bvd2VyX2RvbWFpbihjcnRjX3N0YXRlKSk7Cj4+PiArCWlmICghd2FrZXJlZikKPj4+ICsJCXJl dHVybjsKPj4+ICsKPj4+ICsJZHNzX2N0bDFfdmFsID0gSTkxNV9SRUFEKGRzc19jdGwxX3JlZyhj cnRjX3N0YXRlKSk7Cj4+PiArCWRzc19jdGwyX3ZhbCA9IEk5MTVfUkVBRChkc3NfY3RsMl9yZWco Y3J0Y19zdGF0ZSkpOwo+Pj4gKwlpZiAoZHNzX2N0bDJfdmFsICYgTEVGVF9CUkFOQ0hfVkRTQ19F TkFCTEUpCj4+PiArCQljcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSA9 IHRydWU7Cj4+PiArCj4+PiArCWlmICgoZHNzX2N0bDFfdmFsICYgSk9JTkVSX0VOQUJMRSkgJiYg KGRzc19jdGwyX3ZhbCAmIFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRSkpCj4+PiArCQljcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCA9IHRydWU7Cj4+PiArCj4+PiArCWlmIChkc3NfY3Rs MV92YWwgJiBCSUdfSk9JTkVSX0VOQUJMRSkgewo+Pj4gKwkJY3J0Y19zdGF0ZS0+Ymlnam9pbmVy ID0gdHJ1ZTsKPiBJcyBjcnRjX3N0YXRlLT5iaWdqb2luZXIgc3VwcG9zZWQgdG8gYmUgc2V0IG9u IGJvdGggbWFzdGVyIGFuZCBzbGF2ZSBvcgo+IGp1c3Qgb24gdGhlIG1hc3Rlcj8gIEkgdGhvdWdo dCB3ZSBvbmx5IHNldCBpdCBmb3IgdGhlIG1hc3RlciBiYXNlZCBvbgo+IHdoYXQgSSBzZWUgaW4g aW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnLCBidXQgdGhpcyBhcHBlYXJzIHRvIHNldCBpbiBv bgo+IGJvdGggZHVyaW5nIHJlYWRvdXQgKG15IGludGVycHJldGF0aW9uIG9mIGJzcGVjICM1MDE3 NCBpcyB0aGF0IGJpdCAyOSBpcwo+IHNldCBvbiBib3RoIG1hc3RlciBhbmQgc2xhdmUsIHdoZXJl YXMgYml0IDI4IGlzIG9ubHkgc2V0IG9uIHRoZSBtYXN0ZXIpLgo+IFNob3VsZCB0aGlzIGJlIHRl c3RpbmcgYWdhaW5zdCBNQVNURVJfQklHX0pPSU5FUl9FTkFCTEUgaW5zdGVhZD8KVGhpcyBpcyBj b3JyZWN0LCB3ZSBjb3B5IHRoZSBlbnRpcmUgY3J0Y19zdGF0ZSB0byB0aGUgc2xhdmUsIGluY2x1 ZGluZyB0aGUgYmlnam9pbmVyIGZsYWcuCj4KPiBNYXR0Cj4KPj4+ICsKPj4+ICsJCWlmICghKGRz c19jdGwxX3ZhbCAmIE1BU1RFUl9CSUdfSk9JTkVSX0VOQUJMRSkpIHsKPj4+ICsJCQljcnRjX3N0 YXRlLT5iaWdqb2luZXJfc2xhdmUgPSB0cnVlOwo+Pj4gKwkJCWlmICghV0FSTl9PTihjcnRjLT5w aXBlID09IFBJUEVfQSkpCj4+PiArCQkJCWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0 YyA9Cj4+PiArCQkJCQlpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgY3J0Yy0+cGlw ZSAtIDEpOwo+Pj4gKwkJfSBlbHNlIHsKPj4+ICsJCQlpZiAoIVdBUk5fT04oSU5URUxfTlVNX1BJ UEVTKGRldl9wcml2KSA9PSBjcnRjLT5waXBlICsgMSkpCj4+PiArCQkJCWNydGNfc3RhdGUtPmJp Z2pvaW5lcl9saW5rZWRfY3J0YyA9Cj4+PiArCQkJCQlpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShk ZXZfcHJpdiwgY3J0Yy0+cGlwZSArIDEpOwo+Pj4gKwkJfQo+Pj4gIAl9Cj4+PiAtCWRzc19jdGwx X3ZhbCA9IEk5MTVfUkVBRChkc3NfY3RsMV9yZWcpOwo+Pj4gLQlpZiAoZHNzX2N0bDFfdmFsICYg Sk9JTkVSX0VOQUJMRSkKPj4+IC0JCWRzc19jdGwxX3ZhbCAmPSB+Sk9JTkVSX0VOQUJMRTsKPj4+ IC0JSTkxNV9XUklURShkc3NfY3RsMV9yZWcsIGRzc19jdGwxX3ZhbCk7Cj4+PiAtCj4+PiAtCWRz c19jdGwyX3ZhbCA9IEk5MTVfUkVBRChkc3NfY3RsMl9yZWcpOwo+Pj4gLQlpZiAoZHNzX2N0bDJf dmFsICYgTEVGVF9CUkFOQ0hfVkRTQ19FTkFCTEUgfHwKPj4+IC0JICAgIGRzc19jdGwyX3ZhbCAm IFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRSkKPj4+IC0JCWRzc19jdGwyX3ZhbCAmPSB+KExFRlRf QlJBTkNIX1ZEU0NfRU5BQkxFIHwKPj4+IC0JCQkJICBSSUdIVF9CUkFOQ0hfVkRTQ19FTkFCTEUp Owo+Pj4gLQlJOTE1X1dSSVRFKGRzc19jdGwyX3JlZywgZHNzX2N0bDJfdmFsKTsKPj4+IC0KPj4+ IC0JLyogRGlzYWJsZSBQb3dlciB3ZWxscyBmb3IgVkRTQy9qb2luaW5nICovCj4+PiAtCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChkZXZfcHJpdiwKPj4+IC0JCQkJCSAgaW50ZWxf ZHNjX3Bvd2VyX2RvbWFpbihvbGRfY3J0Y19zdGF0ZSkpOwo+Pj4gKwo+Pj4gKwlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgaW50ZWxfZHNjX3Bvd2VyX2RvbWFpbihjcnRjX3N0YXRl KSwgd2FrZXJlZik7Cj4+PiAgfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfdmRzYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF92ZHNjLmgKPj4+IGluZGV4IDkwZDNmNjAxN2ZjYi4uNTY5Y2YxNzQwMmJhIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmgKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5oCj4+PiBAQCAtMTUsNiAr MTUsOCBAQCB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4+PiAgdm9pZCBpbnRlbF9kc2NfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+PiAgaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+Pj4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcpOwo+Pj4gK3ZvaWQgaW50ZWxfZHNjX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4gKwo+Pj4gIGVudW0gaW50ZWxfZGlzcGxh eV9wb3dlcl9kb21haW4KPj4+ICBpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPj4+ICAKPj4+IC0tIAo+Pj4gMi4yMC4xCj4+ Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cj4+IC0tIAo+PiBNYXR0IFJvcGVyCj4+IEdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVy Cj4+IFZUVC1PU0dDIFBsYXRmb3JtIEVuYWJsZW1lbnQKPj4gSW50ZWwgQ29ycG9yYXRpb24KPj4g KDkxNikgMzU2LTI3OTUKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4