From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [CI 10/12] drm/i915: Perform automated conversions for plane uapi/hw split, base -> uapi. Date: Wed, 30 Oct 2019 18:41:26 +0200 Message-ID: <20191030164126.GO1208@intel.com> References: <20191030142657.22405-1-maarten.lankhorst@linux.intel.com> <20191030142657.22405-10-maarten.lankhorst@linux.intel.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 59CA96EACB for ; Wed, 30 Oct 2019 16:41:30 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191030142657.22405-10-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMzAsIDIwMTkgYXQgMDM6MjY6NTVQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gdWFwaS4gVGhpcyBpcyBk b25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2gsCj4gcmFuIGFmdGVyIHRoZSBwcmV2aW91cyBj b21taXQgdGhhdCBzcGxpdHMgb3V0IGFueSBodyByZWZlcmVuY2VzOgo+IAo+IEBACj4gc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpUOwo+IGlkZW50aWZpZXIgeDsKPiBAQAo+IC1ULT5iYXNlLngK PiArVC0+dWFwaS54Cj4gCj4gQEAKPiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7Cj4gQEAK PiAtVC0+YmFzZQo+ICtULT51YXBpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyAgIHwgICAyICstCj4gIC4uLi9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAzMiArLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMjYyICsrKysrKysrKy0t LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jICAgICAg fCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMg IHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMg ICB8IDEzNiArKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAg ICAgICAgICAgIHwgIDU3ICsrLS0KPiAgNyBmaWxlcyBjaGFuZ2VkLCAyNTIgaW5zZXJ0aW9ucygr KSwgMjUxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdG9taWMuYwo+IGluZGV4IDBhNWVlZTRjMzUwZi4uZWEyNGE0NWRhYjg2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gQEAgLTI4Niw3 ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfc2V0dXBfc2NhbGVyKHN0cnVjdCBp bnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0YQo+ICAJaWYgKHBsYW5lX3N0YXRlICYm IHBsYW5lX3N0YXRlLT5ody5mYiAmJgo+ICAJICAgIHBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0 LT5pc195dXYgJiYKPiAgCSAgICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+bnVtX3BsYW5l cyA+IDEpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAkJaWYgKElTX0dF TihkZXZfcHJpdiwgOSkgJiYKPiAgCQkgICAgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4g IAkJCW1vZGUgPSBTS0xfUFNfU0NBTEVSX01PREVfTlYxMjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBpbmRleCA0ZTkyOGUzNjFi ZTEuLjE4MDIzNDIyYTM0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2F0b21pY19wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmVfYWxsb2Modm9pZCkKPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKPiAgCX0KPiAgCj4gLQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0KCZwbGFu ZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT5iYXNlKTsKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfcmVzZXQoJnBsYW5lLT5iYXNlLCAmcGxhbmVfc3RhdGUtPnVhcGkpOwo+ICAJcGxhbmVfc3Rh dGUtPnNjYWxlcl9pZCA9IC0xOwo+ICAKPiAgCXJldHVybiBwbGFuZTsKPiBAQCAtODgsMTIgKzg4 LDEyIEBAIGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSkKPiAgCWlmICghaW50ZWxfc3RhdGUpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IC0JX19kcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+ YmFzZSk7Cj4gKwlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFu ZSwgJmludGVsX3N0YXRlLT51YXBpKTsKPiAgCj4gIAlpbnRlbF9zdGF0ZS0+dm1hID0gTlVMTDsK PiAgCWludGVsX3N0YXRlLT5mbGFncyA9IDA7Cj4gIAo+IC0JcmV0dXJuICZpbnRlbF9zdGF0ZS0+ YmFzZTsKPiArCXJldHVybiAmaW50ZWxfc3RhdGUtPnVhcGk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBA IC0xMTEsNyArMTExLDcgQEAgaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSB0 b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7Cj4gIAlXQVJOX09OKHBsYW5lX3N0YXRlLT52bWEp Owo+ICAKPiAtCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmVf c3RhdGUtPmJhc2UpOwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaSk7Cj4gIAlrZnJlZShwbGFuZV9zdGF0ZSk7Cj4gIH0KPiAgCj4g QEAgLTEyMSw3ICsxMjEsNyBAQCB1bnNpZ25lZCBpbnQgaW50ZWxfcGxhbmVfZGF0YV9yYXRlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBp bnQgY3BwOwo+ICAKPiAtCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCWlmICgh cGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAljcHAgPSBm Yi0+Zm9ybWF0LT5jcHBbMF07Cj4gQEAgLTE0NCwxMCArMTQ0LDEwIEBAIGJvb2wgaW50ZWxfcGxh bmVfY2FsY19taW5fY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRl dik7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiAg CQlpbnRlbF9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRlLT5iYXNlLmNy dGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0 YXRlLT51YXBpLmNydGMpOwoKU3RpbGwgd3Jvbmc/CgpPdGhlcndpc2UKUmV2aWV3ZWQtYnk6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICAJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlIHx8ICFwbGFuZS0+bWluX2NkY2xrKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlIHx8ICFwbGFuZS0+bWluX2NkY2xrKQo+ICAJCXJldHVybiBmYWxzZTsKPiAg Cj4gIAljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7Cj4gQEAgLTE4MSw3ICsxODEsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJ CQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAo+ICAJ CQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShuZXdfcGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAg Cj4gQEAgLTE5MCw3ICsxOTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhf c3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJbmV3X2Ny dGNfc3RhdGUtPmM4X3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gIAluZXdfY3J0Y19zdGF0 ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwo+ICAJbmV3X2NydGNfc3RhdGUtPm1pbl9jZGNs a1twbGFuZS0+aWRdID0gMDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFs c2U7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IGZhbHNlOwo+ICAKPiAgCWlm ICghbmV3X3BsYW5lX3N0YXRlLT5ody5jcnRjICYmICFvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMp Cj4gIAkJcmV0dXJuIDA7Cj4gQEAgLTIwMCwxOCArMjAwLDE4IEBAIGludCBpbnRlbF9wbGFuZV9h dG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAkvKiBGSVhNRSBwcmUtZzR4IGRvbid0IHdv cmsgbGlrZSB0aGlzICovCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4g KwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUt PmFjdGl2ZV9wbGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+IC0JaWYgKG5ld19wbGFuZV9z dGF0ZS0+YmFzZS52aXNpYmxlICYmCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUgJiYKPiAgCSAgICBkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZvcm1h dCkpCj4gIAkJbmV3X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzIHw9IEJJVChwbGFuZS0+aWQpOwo+ ICAKPiAtCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJaWYgKG5ld19w bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkgICAgZmItPmZvcm1hdC0+Zm9ybWF0ID09 IERSTV9GT1JNQVRfQzgpCj4gIAkJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyB8PSBCSVQocGxh bmUtPmlkKTsKPiAgCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgb2xk X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBp LnZpc2libGUgfHwgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNf c3RhdGUtPnVwZGF0ZV9wbGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+ICAJbmV3X2NydGNf c3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0KPiBAQCAtMjQ2LDcgKzI0Niw3IEBAIGludCBp bnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gIAlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gIAo+IC0JbmV3X3BsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPiArCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS52 aXNpYmxlID0gZmFsc2U7Cj4gIAlpZiAoIWNydGMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBAIC0z NTUsNyArMzU1LDcgQEAgdm9pZCBza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3 X3BsYW5lX3N0YXRlID0KPiAgCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3Rh dGUsIHBsYW5lKTsKPiAgCj4gLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7 Cj4gKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7Cj4gIAkJCWludGVsX3Vw ZGF0ZV9wbGFuZShwbGFuZSwgbmV3X2NydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gIAkJ fSBlbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSkgewo+ICAJCQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKm1hc3RlciA9Cj4gQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIGk5eHhfdXBk YXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJ CSAgICAhKHVwZGF0ZV9tYXNrICYgQklUKHBsYW5lLT5pZCkpKQo+ICAJCQljb250aW51ZTsKPiAg Cj4gLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChuZXdfcGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBu ZXdfY3J0Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiAgCQllbHNlCj4gIAkJCWludGVsX2Rp c2FibGVfcGxhbmUocGxhbmUsIG5ld19jcnRjX3N0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDFjMGM1NWE3OGQwMy4uMTU4NDQy MWM3NmI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMKPiBAQCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9z dXJmX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCj4gIHN0 YXRpYyBib29sIGludGVsX3BsYW5lX3VzZXNfZmVuY2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7Cj4gIAo+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8Cj4gQEAg LTIzOTEsNyArMjM5MSw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfcGxhbmVfY29tcHV0ZV9hbGlnbmVk X29mZnNldChpbnQgKngsIGludCAqeSwKPiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnN0YXRlLAo+ICAJCQkJCSAgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19p bnRlbF9wbGFuZShzdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHN0YXRlLT5ody5yb3RhdGlvbjsKPiBAQCAtMjU3OSw3ICsyNTc5LDcgQEAg aW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwgaW50IGNvbG9yX3BsYW5lKQo+ICAKPiAgYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBpOwo+IEBAIC0yNjE5LDcg KzI2MTksNyBAQCBib29sIGludGVsX3BsYW5lX2Nhbl9yZW1hcChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGljIGJvb2wgaW50ZWxfcGxhbmVf bmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUzMiBzdHJpZGUsIG1heF9z dHJpZGU7Cj4gQEAgLTI2MjgsNyArMjYyOCw3IEBAIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25l ZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IAkgKiBObyByZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ugd2UgZG9uJ3QgaGF2 ZQo+ICAJICogYW4gYWN0dWFsIHNvdXJjZSB2aWV3cG9ydCB0byByZW1hcC4KPiAgCSAqLwo+IC0J aWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFw aS52aXNpYmxlKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAoIWludGVsX3BsYW5lX2Nh bl9yZW1hcChwbGFuZV9zdGF0ZSkpCj4gQEAgLTI4MTEsNyArMjgxMSw3IEBAIHN0YXRpYyB2b2lk Cj4gIGludGVsX3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0J CXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRl bF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiAgCXN0cnVjdCBpbnRlbF9yb3RhdGlv bl9pbmZvICppbmZvID0gJnBsYW5lX3N0YXRlLT52aWV3LnJvdGF0ZWQ7Cj4gQEAgLTI4MjYsMjAg KzI4MjYsMjAgQEAgaW50ZWxfcGxhbmVfcmVtYXBfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIAlwbGFuZV9zdGF0ZS0+dmlldy50eXBlID0gZHJtX3JvdGF0aW9u XzkwX29yXzI3MChyb3RhdGlvbikgPwo+ICAJCUk5MTVfR0dUVF9WSUVXX1JPVEFURUQgOiBJOTE1 X0dHVFRfVklFV19SRU1BUFBFRDsKPiAgCj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+ IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK PiAtCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+ICsJc3JjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7Cj4gKwlzcmNfeSA9 IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiArCXNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlzcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAlXQVJOX09OKGlzX2Nj c19tb2RpZmllcihmYi0+bW9kaWZpZXIpKTsKPiAgCj4gIAkvKiBNYWtlIHNyYyBjb29yZGluYXRl cyByZWxhdGl2ZSB0byB0aGUgdmlld3BvcnQgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMsCj4gIAkJCSAgIC0oc3JjX3ggPDwgMTYpLCAtKHNyY195IDw8IDE2KSk7Cj4gIAo+ ICAJLyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICov Cj4gIAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJtX3JlY3Rf cm90YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMsCj4gIAkJCQlzcmNfdyA8PCAxNiwgc3JjX2ggPDwgMTYsCj4gIAkJ CQlEUk1fTU9ERV9ST1RBVEVfMjcwKTsKPiAgCj4gQEAgLTI5NTksNyArMjk1OSw3IEBAIGludGVs X3BsYW5lX2NvbXB1dGVfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIAo+ICAJLyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2 aWV3ICovCj4gIAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJt X3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMsCj4gIAkJCQlmYi0+YmFzZS53aWR0aCA8PCAxNiwgZmIt PmJhc2UuaGVpZ2h0IDw8IDE2LAo+ICAJCQkJRFJNX01PREVfUk9UQVRFXzI3MCk7Cj4gIAo+IEBA IC0zMTI3LDkgKzMxMjcsOSBAQCBpbnRlbF9zZXRfcGxhbmVfdmlzaWJsZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKPiAgCQkJYm9vbCB2aXNpYmxlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lKTsKPiAgCj4gLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlzaWJsZTsK PiArCXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgPSB2aXNpYmxlOwo+ICAKPiAgCWlmICh2aXNp YmxlKQo+ICAJCWNydGNfc3RhdGUtPnVhcGkucGxhbmVfbWFzayB8PSBkcm1fcGxhbmVfbWFzaygm cGxhbmUtPmJhc2UpOwo+IEBAIC0zMjc1LDggKzMyNzUsOCBAQCBpbnRlbF9maW5kX2luaXRpYWxf cGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJcGxhbmVfc3RhdGUt PmNydGNfdyA9IGZiLT53aWR0aDsKPiAgCXBsYW5lX3N0YXRlLT5jcnRjX2ggPSBmYi0+aGVpZ2h0 Owo+ICAKPiAtCWludGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxh bmVfc3RhdGUpOwo+IC0JaW50ZWxfc3RhdGUtPmJhc2UuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rl c3QocGxhbmVfc3RhdGUpOwo+ICsJaW50ZWxfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0 YXRlX3NyYyhwbGFuZV9zdGF0ZSk7Cj4gKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxh bmVfc3RhdGVfZGVzdChwbGFuZV9zdGF0ZSk7Cj4gIAo+ICAJaWYgKHBsYW5lX2NvbmZpZy0+dGls aW5nKQo+ICAJCWRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwo+IEBAIC0z NDExLDEzICszNDExLDEzIEBAIHN0YXRpYyBib29sIHNrbF9jaGVja19tYWluX2Njc19jb29yZGlu YXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlCj4gIAo+ICBzdGF0aWMg aW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsK PiAtCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+IC0JaW50IHkgPSBw bGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7Cj4gLQlpbnQgdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JaW50IGggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwlpbnQgeCA9IHBsYW5lX3N0YXRl LT51YXBpLnNyYy54MSA+PiAxNjsKPiArCWludCB5ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkx ID4+IDE2Owo+ICsJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSA+PiAxNjsKPiArCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5z cmMpID4+IDE2Owo+ICAJaW50IG1heF93aWR0aDsKPiAgCWludCBtYXhfaGVpZ2h0Owo+ICAJdTMy IGFsaWdubWVudCwgb2Zmc2V0LCBhdXhfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzFdLm9mZnNldDsKPiBAQCAtMzUwMCw3ICszNTAwLDcgQEAgc3RhdGljIGludCBza2xfY2hlY2tf bWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAkg KiBQdXQgdGhlIGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCj4gIAkgKiBj b29yZGluYXRlIGNoZWNrcyB3aWxsIHNlZSB0aGUgcmlnaHQgdmFsdWVzLgo+ICAJICovCj4gLQlk cm1fcmVjdF90cmFuc2xhdGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKPiArCWRybV9yZWN0 X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAo+ICAJCQkgICAgICB4IDw8IDE2 LCB5IDw8IDE2KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMzUxMiwxMCArMzUxMiwxMCBAQCBz dGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+aHcucm90YXRpb247Cj4gIAlpbnQgbWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChm YiwgMSwgcm90YXRpb24pOwo+ICAJaW50IG1heF9oZWlnaHQgPSA0MDk2Owo+IC0JaW50IHggPSBw bGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7Cj4gLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5i YXNlLnNyYy55MSA+PiAxNzsKPiAtCWludCB3ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTc7Cj4gLQlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjKSA+PiAxNzsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngx ID4+IDE3Owo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTc7Cj4gKwlp bnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE3Owo+ICsJ aW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTc7Cj4g IAl1MzIgb2Zmc2V0Owo+ICAKPiAgCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVf c3RhdGUsIDEpOwo+IEBAIC0zNTM4LDggKzM1MzgsOCBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19u djEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IHN0YXRpYyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAtCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5i YXNlLnNyYy54MSA+PiAxNjsKPiAtCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55 MSA+PiAxNjsKPiArCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsK PiArCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiAgCWludCBo c3ViID0gZmItPmZvcm1hdC0+aHN1YjsKPiAgCWludCB2c3ViID0gZmItPmZvcm1hdC0+dnN1YjsK PiAgCWludCB4ID0gc3JjX3ggLyBoc3ViOwo+IEBAIC0zNTY1LDcgKzM1NjUsNyBAQCBpbnQgc2ts X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJ cmV0dXJuIDA7Cj4gIAo+ICAJLyoKPiBAQCAtMzY4OSw3ICszNjg5LDcgQEAgc3RhdGljIHUzMiBp OXh4X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFw aS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUt Pmh3LnJvdGF0aW9uOwo+ICAJdTMyIGRzcGNudHI7Cj4gQEAgLTM3NDYsNyArMzc0Niw3IEBAIHN0 YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBzcmNf eCwgc3JjX3ksIHNyY193Owo+ICAJdTMyIG9mZnNldDsKPiBAQCAtMzc1NiwxMiArMzc1NiwxMiBA QCBpbnQgaTl4eF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKCFw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNp YmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+ ICsJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsK PiArCXNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2Owo+ICsJc3JjX3kgPSBw bGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7Cj4gIAo+ICAJLyogVW5kb2N1bWVudGVkIGhh cmR3YXJlIGxpbWl0IG9uIGk5NjUvZzR4L3Zsdi9jaHYgKi8KPiAgCWlmIChIQVNfR01DSChkZXZf cHJpdikgJiYgZmItPmZvcm1hdC0+Y3BwWzBdID09IDggJiYgc3JjX3cgPiAyMDQ4KQo+IEBAIC0z Nzc5LDE0ICszNzc5LDE0IEBAIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCSAqIFB1dCB0aGUgZmluYWwgY29vcmRp bmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMKPiAgCSAqIGNvb3JkaW5hdGUgY2hlY2tzIHdpbGwg c2VlIHRoZSByaWdodCB2YWx1ZXMuCj4gIAkgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZV90bygm cGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlX3RvKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMsCj4gIAkJCSAgICAgIHNyY194IDw8IDE2LCBzcmNfeSA8PCAxNik7Cj4g IAo+ICAJLyogSFNXL0JEVyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAg CWlmICghSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpIHsK PiAgCQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4g LQkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7Cj4gLQkJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5z cmMpID4+IDE2Owo+ICsJCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMpID4+IDE2Owo+ICsJCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVf Uk9UQVRFXzE4MCkgewo+ICAJCQlzcmNfeCArPSBzcmNfdyAtIDE7Cj4gQEAgLTM4MjMsMTQgKzM4 MjMsMTQgQEAgc3RhdGljIGludAo+ICBpOXh4X3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCWludCByZXQ7 Cj4gIAo+ICAJcmV0ID0gY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKHBsYW5lX3N0YXRlKTsKPiAg CWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJ CSAgJmNydGNfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FM SU5HLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMzg0Myw3 ICszODQzLDcgQEAgaTl4eF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUp Cj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3Jk aW5hdGVzKHBsYW5lX3N0YXRlKTsKPiBAQCAtMzg2NCwxMCArMzg2NCwxMCBAQCBzdGF0aWMgdm9p ZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdTMyIGxp bmVhcl9vZmZzZXQ7Cj4gIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ ICAJaW50IHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAtCWludCBjcnRjX3gg PSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LnkxOwo+IC0JaW50IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7 Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJaW50IGNydGNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJaW50IGNydGNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXVuc2lnbmVk IGxvbmcgaXJxZmxhZ3M7Cj4gIAl1MzIgZHNwYWRkcl9vZmZzZXQ7Cj4gIAl1MzIgZHNwY250cjsK PiBAQCAtNDIyMSw3ICs0MjIxLDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4g KwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQg aW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJY29uc3Qgc3RydWN0 IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiBA QCAtNDI3Nyw5ICs0Mjc3LDkgQEAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK PiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxh bmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+ICAKPiAg CXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1NQV9ESVNBQkxFOwo+IEBA IC01NjIzLDExICs1NjIzLDExIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lID0KPiAtCQl0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7Cj4gKwkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9wbGFuZS0+YmFz ZS5kZXYpOwo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7Cj4gIAlpbnQgcmV0Owo+IC0JYm9vbCBmb3JjZV9kZXRhY2ggPSAhZmIgfHwgIXBsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGU7Cj4gKwlib29sIGZvcmNlX2RldGFjaCA9ICFmYiB8fCAhcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZTsKPiAgCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKPiAgCj4g IAkvKiBQcmUtZ2VuMTEgYW5kIFNEUiBwbGFuZXMgYWx3YXlzIG5lZWQgYSBzY2FsZXIgZm9yIHBs YW5hciBmb3JtYXRzLiAqLwo+IEBAIC01NjM4LDEwICs1NjM4LDEwIEBAIHN0YXRpYyBpbnQgc2ts X3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCBmb3JjZV9kZXRhY2gsCj4g IAkJCQlkcm1fcGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKPiAgCQkJCSZwbGFuZV9z dGF0ZS0+c2NhbGVyX2lkLAo+IC0JCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTYsCj4gLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNy YykgPj4gMTYsCj4gLQkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwK PiAtCQkJCWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiArCQkJCWRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCj4gKwkJCQlkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCksCj4gIAkJCQlmYiA/IGZiLT5mb3JtYXQgOiBOVUxMLCBuZWVk X3NjYWxlcik7Cj4gIAo+ICAJaWYgKHJldCB8fCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkIDwgMCkK PiBAQCAtNjA1Nyw3ICs2MDU3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAkJICogU28gZGlz YWJsZSB1bmRlcnJ1biByZXBvcnRpbmcgYmVmb3JlIGFsbCB0aGUgcGxhbmVzIGdldCBkaXNhYmxl ZC4KPiAgCQkgKi8KPiAgCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJpbWFyeV9z dGF0ZS0+dmlzaWJsZSAmJgo+IC0JCSAgICAobW9kZXNldCB8fCAhbmV3X3ByaW1hcnlfc3RhdGUt PmJhc2UudmlzaWJsZSkpCj4gKwkJICAgIChtb2Rlc2V0IHx8ICFuZXdfcHJpbWFyeV9zdGF0ZS0+ dWFwaS52aXNpYmxlKSkKPiAgCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ICAJfQo+ICAKPiBAQCAtNjE0NCw3ICs2 MTQ0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4gIAkJaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFu ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAKPiAtCQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gKwkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQlmYl9i aXRzIHw9IHBsYW5lLT5mcm9udGJ1ZmZlcl9iaXQ7Cj4gIAl9Cj4gIAo+IEBAIC03MTUzLDcgKzcx NTMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUgPQo+ICAJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4g IAo+IC0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGludGVs X2NydGMsIHBsYW5lKTsKPiAgCX0KPiAgCj4gQEAgLTEwNzI4LDcgKzEwNzI4LDcgQEAgc3RhdGlj IGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IHN0YXRpYyB1MzIgaW50ZWxfY3Vyc29yX2Jhc2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRv X2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWNvbnN0IHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJdTMyIGJhc2U7 Cj4gQEAgLTEwNzQzLDggKzEwNzQzLDggQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGlj IHUzMiBpbnRlbF9jdXJzb3JfcG9zaXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7 Cj4gLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiArCWludCB4ID0gcGxhbmVf c3RhdGUtPnVhcGkuZHN0LngxOwo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7 Cj4gIAl1MzIgcG9zID0gMDsKPiAgCj4gIAlpZiAoeCA8IDApIHsKPiBAQCAtMTA3NjUsOSArMTA3 NjUsOSBAQCBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jf c2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPQo+IC0JCSZwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZpZzsKPiAtCWludCB3aWR0aCA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQkmcGxhbmVfc3RhdGUtPnVh cGkucGxhbmUtPmRldi0+bW9kZV9jb25maWc7Cj4gKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiArCWludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJcmV0dXJuIHdpZHRoID4gMCAmJiB3 aWR0aCA8PSBjb25maWctPmN1cnNvcl93aWR0aCAmJgo+ICAJCWhlaWdodCA+IDAgJiYgaGVpZ2h0 IDw9IGNvbmZpZy0+Y3Vyc29yX2hlaWdodDsKPiBAQCAtMTA3NzYsNyArMTA3NzYsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICBzdGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZS0+ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYp Owo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ ICAJaW50IHNyY194LCBzcmNfeTsKPiAgCXUzMiBvZmZzZXQ7Cj4gQEAgLTEwNzg2LDExICsxMDc4 NiwxMSBAQCBzdGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7 Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXNyY194ID0gcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+IC0Jc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5z cmMueTEgPj4gMTY7Cj4gKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsK PiArCXNyY195ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ICAKPiAgCWludGVs X2FkZF9mYl9vZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gIAlvZmZz ZXQgPSBpbnRlbF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KCZzcmNfeCwgJnNyY195LAo+ IEBAIC0xMDgwNSwxNCArMTA4MDUsMTQgQEAgc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tf c3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJICogUHV0 IHRoZSBmaW5hbCBjb29yZGluYXRlcyBiYWNrIHNvIHRoYXQgdGhlIHNyYwo+ICAJICogY29vcmRp bmF0ZSBjaGVja3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KPiAgCSAqLwo+IC0JZHJtX3Jl Y3RfdHJhbnNsYXRlX3RvKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwlkcm1fcmVjdF90cmFu c2xhdGVfdG8oJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKPiAgCQkJICAgICAgc3JjX3ggPDwgMTYs IHNyY195IDw8IDE2KTsKPiAgCj4gIAkvKiBJTEsrIGRvIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBo YXJkd2FyZSAqLwo+ICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSAmJiByb3RhdGlvbiAmIERSTV9N T0RFX1JPVEFURV8xODApIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAtCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY19oID0g ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCQlv ZmZzZXQgKz0gKHNyY19oICogc3JjX3cgLSAxKSAqIGZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCX0K PiBAQCAtMTA4MzUsNyArMTA4MzUsNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgm cGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFu ZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGks Cj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCQkgIERSTV9Q TEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMTA4NDQsMTQgKzEwODQ0LDE0IEBAIHN0YXRp YyBpbnQgaW50ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJLyogVXNlIHRoZSB1bmNsaXBwZWQgc3JjL2Rz dCByZWN0YW5nbGVzLCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCj4gLQlwbGFuZV9zdGF0ZS0+ YmFzZS5zcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKCZwbGFuZV9zdGF0ZS0+YmFzZSk7Cj4gLQlw bGFuZV9zdGF0ZS0+YmFzZS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdCgmcGxhbmVfc3RhdGUt PmJhc2UpOwo+ICsJcGxhbmVfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygm cGxhbmVfc3RhdGUtPnVhcGkpOwo+ICsJcGxhbmVfc3RhdGUtPnVhcGkuZHN0ID0gZHJtX3BsYW5l X3N0YXRlX2Rlc3QoJnBsYW5lX3N0YXRlLT51YXBpKTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jdXJz b3JfY2hlY2tfc3VyZmFjZShwbGFuZV9zdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiBy ZXQ7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGludGVs X3BsYW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7Cj4gQEAgLTEwODg5LDcg KzEwODg5LDcgQEAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICBzdGF0aWMgYm9vbCBpODQ1X2N1cnNvcl9z aXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ ICsJaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4g IAo+ICAJLyoKPiAgCSAqIDg0NWcvODY1ZyBhcmUgb25seSBsaW1pdGVkIGJ5IHRoZSB3aWR0aCBv ZiB0aGVpciBjdXJzb3JzLAo+IEBAIC0xMDkxNSwxMiArMTA5MTUsMTIgQEAgc3RhdGljIGludCBp ODQ1X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CS8qIENoZWNrIGZvciB3aGljaCBjdXJzb3IgdHlwZXMgd2Ugc3VwcG9ydCAqLwo+ICAJaWYgKCFp ODQ1X2N1cnNvcl9zaXplX29rKHBsYW5lX3N0YXRlKSkgewo+ICAJCURSTV9ERUJVRygiQ3Vyc29y IGRpbWVuc2lvbiAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAo+IC0JCQkgIGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+IC0JCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPmJhc2UuZHN0KSk7Cj4gKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51 YXBpLmRzdCksCj4gKwkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3Qp KTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlXQVJOX09OKHBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUgJiYKPiArCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAm Jgo+ICAJCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5zdHJpZGUgIT0gZmItPnBpdGNoZXNb MF0pOwo+ICAKPiAgCXN3aXRjaCAoZmItPnBpdGNoZXNbMF0pIHsKPiBAQCAtMTA5NDgsOSArMTA5 NDgsOSBAQCBzdGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKPiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIHNpemUgPSAwOwo+ ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUgJiYgcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JCXVuc2lnbmVkIGludCBoZWln aHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlpZiAocGxh bmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICsJCXVuc2lnbmVkIGlu dCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJCXVu c2lnbmVkIGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRz dCk7Cj4gIAo+ICAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKPiAgCQkJaTg0NV9jdXJzb3Jf Y3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gQEAgLTExMDQ2LDEzICsxMTA0NiwxMyBAQCBzdGF0aWMg dTMyIGk5eHhfY3Vyc29yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19p OTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAl1MzIgY250bCA9IDA7Cj4gIAo+ICAJaWYgKElTX0dF TihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAgCQljbnRsIHw9IE1D VVJTT1JfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+IC0Jc3dpdGNoIChkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSkgewo+ICsJc3dpdGNoIChkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KSkgewo+ICAJY2FzZSA2NDoKPiAgCQljbnRsIHw9IE1DVVJT T1JfTU9ERV82NF9BUkdCX0FYOwo+ICAJCWJyZWFrOwo+IEBAIC0xMTA2Myw3ICsxMTA2Myw3IEBA IHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICAJCWNudGwgfD0gTUNVUlNPUl9NT0RFXzI1Nl9BUkdCX0FYOwo+ICAJ CWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UoZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLmRzdCkpOwo+ICsJCU1JU1NJTkdfQ0FTRShkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+IEBAIC0x MTA3Niw5ICsxMTA3Niw5IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBpOXh4X2N1cnNv cl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShw bGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lLT5kZXYpOwo+ICsJaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT51YXBpLmRzdCk7Cj4gKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCWlmICghaW50ZWxfY3Vyc29yX3NpemVfb2socGxhbmVf c3RhdGUpKQo+ICAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTExMTQsNyArMTExMTQsNyBAQCBzdGF0 aWMgYm9vbCBpOXh4X2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gQEAgLTExMTMx LDE5ICsxMTEzMSwxOSBAQCBzdGF0aWMgaW50IGk5eHhfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0 eXBlcyB3ZSBzdXBwb3J0ICovCj4gIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVfb2socGxhbmVfc3Rh dGUpKSB7Cj4gIAkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5vdCBzdXBwb3J0 ZWRcbiIsCj4gLQkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCj4g LQkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKPiArCQkJICBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKPiArCQkJICBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCkpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJ fQo+ICAKPiAtCVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJV0FSTl9P TihwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkJcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lWzBdLnN0cmlkZSAhPSBmYi0+cGl0Y2hlc1swXSk7Cj4gIAo+ICAJaWYgKGZiLT5waXRjaGVz WzBdICE9Cj4gLQkgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkgKiBm Yi0+Zm9ybWF0LT5jcHBbMF0pIHsKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgewo+ICAJCURSTV9ERUJVR19LTVMoIklu dmFsaWQgY3Vyc29yIHN0cmlkZSAoJXUpIChjdXJzb3Igd2lkdGggJWQpXG4iLAo+ICAJCQkgICAg ICBmYi0+cGl0Y2hlc1swXSwKPiAtCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLmRzdCkpOwo+ICsJCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVh cGkuZHN0KSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC0xMTE1OCw3ICsx MTE1OCw3IEBAIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkgKiBSZWZ1c2UgdGhlIHB1dCB0aGUgY3Vyc29yIGludG8g dGhhdCBjb21wcm9taXNlZCBwb3NpdGlvbi4KPiAgCSAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9DICYmCj4gLQkgICAgcGxhbmVfc3RhdGUtPmJhc2Uu dmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7Cj4gKwkgICAgcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDEgPCAwKSB7Cj4g IAkJRFJNX0RFQlVHX0tNUygiQ0hWIGN1cnNvciBDIG5vdCBhbGxvd2VkIHRvIHN0cmFkZGxlIHRo ZSBsZWZ0IHNjcmVlbiBlZGdlXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAt MTExNzcsOSArMTExNzcsOSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAs IGZiY19jdGwgPSAwOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxh bmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIHdp ZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQkJdW5zaWdu ZWQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJ aWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKPiArCQl1bnNp Z25lZCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJ CXVuc2lnbmVkIGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KTsKPiAgCj4gIAkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGwgfAo+ICAJCQlpOXh4X2N1cnNvcl9j dGxfY3J0YyhjcnRjX3N0YXRlKTsKPiBAQCAtMTE3MTcsNyArMTE3MTcsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1 ciwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ldykKPiAgewo+ICAJLyogVXBk YXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4gKi8KPiAtCWlmIChuZXct PmJhc2UudmlzaWJsZSAhPSBjdXItPmJhc2UudmlzaWJsZSkKPiArCWlmIChuZXctPnVhcGkudmlz aWJsZSAhPSBjdXItPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlpZiAo IWN1ci0+aHcuZmIgfHwgIW5ldy0+aHcuZmIpCj4gQEAgLTExNzI1LDEwICsxMTcyNSwxMCBAQCBz dGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmN1ciwKPiAgCj4gIAlpZiAoY3VyLT5ody5mYi0+bW9kaWZpZXIgIT0gbmV3LT5ody5m Yi0+bW9kaWZpZXIgfHwKPiAgCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRp b24gfHwKPiAtCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNyYykgIT0gZHJtX3JlY3Rf d2lkdGgoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPmJh c2Uuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJt X3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2Uu ZHN0KSB8fAo+IC0JICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT5iYXNlLmRzdCkgIT0gZHJtX3Jl Y3RfaGVpZ2h0KCZjdXItPmJhc2UuZHN0KSkKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT51 YXBpLnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+dWFwaS5zcmMpIHx8Cj4gKwkgICAgZHJt X3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFw aS5zcmMpIHx8Cj4gKwkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+dWFwaS5kc3QpICE9IGRybV9y ZWN0X3dpZHRoKCZjdXItPnVhcGkuZHN0KSB8fAo+ICsJICAgIGRybV9yZWN0X2hlaWdodCgmbmV3 LT51YXBpLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPnVhcGkuZHN0KSkKPiAgCQlyZXR1 cm4gdHJ1ZTsKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTExNzM2LDEwICsxMTczNiwxMCBA QCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKmN1ciwKPiAgCj4gIHN0YXRpYyBib29sIG5lZWRzX3NjYWxpbmcoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0JaW50IHNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgc3JjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgZHN0X3cgPSBkcm1fcmVj dF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0KTsKPiAtCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdo dCgmc3RhdGUtPmJhc2UuZHN0KTsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0 ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0 ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRl LT51YXBpLmRzdCk7Cj4gKwlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT51YXBp LmRzdCk7Cj4gIAo+ICAJcmV0dXJuIChzcmNfdyAhPSBkc3RfdyB8fCBzcmNfaCAhPSBkc3RfaCk7 Cj4gIH0KPiBAQCAtMTE3NTAsNyArMTE3NTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2Nh bGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAo+ ICAJCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOwo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWJvb2wg bW9kZV9jaGFuZ2VkID0gbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKTsKPiAgCWJvb2wgd2FzX2Ny dGNfZW5hYmxlZCA9IG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gQEAgLTExNzY0LDggKzEx NzY0LDggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0K PiAgCj4gLQl3YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOwo+IC0J dmlzaWJsZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwl3YXNfdmlzaWJsZSA9IG9s ZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwo+ICsJdmlzaWJsZSA9IHBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGU7Cj4gIAo+ICAJaWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5fT04od2Fz X3Zpc2libGUpKQo+ICAJCXdhc192aXNpYmxlID0gZmFsc2U7Cj4gQEAgLTExNzgxLDcgKzExNzgx LDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCSAqIG9ubHkgY29tYmluZSB0aGUgcmVz dWx0cyBmcm9tIGFsbCBwbGFuZXMgaW4gdGhlIGN1cnJlbnQgcGxhY2U/Cj4gIAkgKi8KPiAgCWlm ICghaXNfY3J0Y19lbmFibGVkKSB7Cj4gLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IHZp c2libGUgPSBmYWxzZTsKPiArCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZSA9 IGZhbHNlOwo+ICAJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQp Owo+ICAJCWNydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKPiAgCQljcnRjX3N0 YXRlLT5taW5fY2RjbGtbcGxhbmUtPmlkXSA9IDA7Cj4gQEAgLTExOTQxLDcgKzExOTQxLDcgQEAg c3RhdGljIGludCBpY2xfY2hlY2tfbnYxMl9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwbGFuZV9zdGF0ZS0+cGxhbmFy X2xpbmtlZF9wbGFuZSA9IE5VTEw7Cj4gLQkJaWYgKHBsYW5lX3N0YXRlLT5wbGFuYXJfc2xhdmUg JiYgIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiArCQlpZiAocGxhbmVfc3RhdGUtPnBs YW5hcl9zbGF2ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICAJCQljcnRjX3N0 YXRlLT5hY3RpdmVfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKPiAgCQkJY3J0Y19zdGF0ZS0+ dXBkYXRlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKPiAgCQl9Cj4gQEAgLTEyMzU1LDE0ICsx MjM1NSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3V0cHV0X2Zvcm1hdHMoZW51bSBpbnRlbF9v dXRwdXRfZm9ybWF0IGZvcm1hdCkKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGxhbmVf c3RhdGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBkcm1fZm9ybWF0X25h bWVfYnVmIGZvcm1hdF9uYW1lOwo+ICAKPiAgCWlmICghZmIpIHsKPiAgCQlEUk1fREVCVUdfS01T KCJbUExBTkU6JWQ6JXNdIGZiOiBbTk9GQl0sIHZpc2libGU6ICVzXG4iLAo+ICAJCQkgICAgICBw bGFuZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAo+IC0JCQkgICAgICB5ZXNubyhw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSk7Cj4gKwkJCSAgICAgIHllc25vKHBsYW5lX3N0YXRl LT51YXBpLnZpc2libGUpKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IEBAIC0xMjM3MCwxMyAr MTIzNzAsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJCSAgICAgIHBsYW5lLT5iYXNl LmJhc2UuaWQsIHBsYW5lLT5iYXNlLm5hbWUsCj4gIAkJICAgICAgZmItPmJhc2UuaWQsIGZiLT53 aWR0aCwgZmItPmhlaWdodCwKPiAgCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3Jt YXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1lKSwKPiAtCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlKSk7Cj4gKwkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZSkpOwo+ICAJRFJNX0RFQlVHX0tNUygiXHRyb3RhdGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwK PiAgCQkgICAgICBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb24sIHBsYW5lX3N0YXRlLT5zY2FsZXJf aWQpOwo+IC0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAocGxhbmVfc3Rh dGUtPnVhcGkudmlzaWJsZSkKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNyYzogIiBEUk1fUkVDVF9G UF9GTVQgIiBkc3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCj4gLQkJCSAgICAgIERSTV9SRUNUX0ZQ X0FSRygmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSwKPiAtCQkJICAgICAgRFJNX1JFQ1RfQVJHKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKPiArCQkJICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMpLAo+ICsJCQkgICAgICBEUk1fUkVDVF9BUkcoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29u ZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiBAQCAtMTM1 ODAsNyArMTM1ODAsNyBAQCBpbnRlbF92ZXJpZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRl LCBwbGFuZSwKPiAgCQkJCQkgIHBsYW5lX3N0YXRlLCBpKQo+ICAJCWFzc2VydF9wbGFuZShwbGFu ZSwgcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAo+IC0JCQkgICAgIHBsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUpOwo+ICsJCQkgICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpOwo+ICB9 Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC0xNTA0Miw3ICsxNTA0Miw3IEBAIHN0YXRpYyB2b2lk IGFkZF9ycHNfYm9vc3RfYWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4g IHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfcGluX2ZiKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp Owo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiBAQCAtMTUxMDcsNyArMTUxMDcsNyBAQCBpbnRlbF9w cmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPQo+ICAJCXRvX2ludGVsX3BsYW5lX3N0YXRl KF9uZXdfcGxhbmVfc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxf c3RhdGUgPQo+IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPmJhc2Uu c3RhdGUpOwo+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPnVhcGku c3RhdGUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw bGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0 YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9m Yl9vYmooZmIpOwo+IEBAIC0xNTE0MCw5ICsxNTE0MCw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChuZXdf cGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpIHsgLyogZXhwbGljaXQgZmVuY2luZyAqLwo+ICsJaWYg KG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBleHBsaWNpdCBmZW5jaW5nICovCj4g IAkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoJmludGVsX3N0YXRlLT5jb21t aXRfcmVhZHksCj4gLQkJCQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UsCj4gKwkJ CQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UsCj4gIAkJCQkJCSAgICBJOTE1X0ZF TkNFX1RJTUVPVVQsCj4gIAkJCQkJCSAgICBHRlBfS0VSTkVMKTsKPiAgCQlpZiAocmV0IDwgMCkK PiBAQCAtMTUxNjUsNyArMTUxNjUsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICAJZmJfb2JqX2J1bXBfcmVuZGVyX3ByaW9yaXR5KG9iaik7Cj4g IAlpbnRlbF9mcm9udGJ1ZmZlcl9mbHVzaChvYmotPmZyb250YnVmZmVyLCBPUklHSU5fRElSVFlG Qik7Cj4gIAo+IC0JaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpIHsgLyogaW1wbGlj aXQgZmVuY2luZyAqLwo+ICsJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UpIHsgLyog aW1wbGljaXQgZmVuY2luZyAqLwo+ICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ICAKPiAg CQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKCZpbnRlbF9zdGF0ZS0+Y29t bWl0X3JlYWR5LAo+IEBAIC0xNTE4Myw3ICsxNTE4Myw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAgCQlhZGRf cnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCj4gLQkJCQkJ ICAgbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlKTsKPiArCQkJCQkgICBuZXdfcGxhbmVfc3Rh dGUtPnVhcGkuZmVuY2UpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE1MjE2LDcgKzE1MjE2LDcg QEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KPiAgCQl0b19pbnRlbF9w bGFuZV9zdGF0ZShfb2xkX3BsYW5lX3N0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0 YXRlLT5iYXNlLnN0YXRlKTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0 YXRlLT51YXBpLnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmRldik7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5ycHNfaW50ZXJh Y3RpdmUpIHsKPiBAQCAtMTUzNDgsOCArMTUzNDgsOCBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkgKiB0aGUgcGxhbmUuICBUaGlzIHBy ZXZlbnRzIG91ciBhc3luYyB1cGRhdGUncyBjaGFuZ2VzIGZyb20gZ2V0dGluZwo+ICAJICogb3Zl cnJpZGRlbiBieSBhIHByZXZpb3VzIHN5bmNocm9ub3VzIHVwZGF0ZSdzIHN0YXRlLgo+ICAJICov Cj4gLQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdCAmJgo+IC0JICAgICF0cnlfd2Fp dF9mb3JfY29tcGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdC0+aHdfZG9uZSkp Cj4gKwlpZiAob2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdCAmJgo+ICsJICAgICF0cnlfd2Fp dF9mb3JfY29tcGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdC0+aHdfZG9uZSkp Cj4gIAkJZ290byBzbG93Owo+ICAKPiAgCS8qCj4gQEAgLTE3MTU1LDcgKzE3MTU1LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gIAkJCQl0 b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JCQlpZiAocGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZSAmJgo+ICAJCQkgICAgcGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQo+ICAJCQkJaW50ZWxfcGxhbmVfZGlzYWJsZV9ub2F0b21pYyhjcnRjLCBwbGFuZSk7Cj4g IAkJfQo+IEBAIC0xNzQ4NiwxNCArMTc0ODYsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNl dF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCSAqIEZJWE1F IGRvbid0IGhhdmUgdGhlIGZiIHlldCwgc28gY2FuJ3QKPiAgCQkJICogdXNlIGludGVsX3BsYW5l X2RhdGFfcmF0ZSgpIDooCj4gIAkJCSAqLwo+IC0JCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKPiArCQkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJCQljcnRjX3N0 YXRlLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9Cj4gIAkJCQkJNCAqIGNydGNfc3RhdGUtPnBpeGVs X3JhdGU7Cj4gIAkJCS8qCj4gIAkJCSAqIEZJWE1FIGRvbid0IGhhdmUgdGhlIGZiIHlldCwgc28g Y2FuJ3QKPiAgCQkJICogdXNlIHBsYW5lLT5taW5fY2RjbGsoKSA6KAo+ICAJCQkgKi8KPiAtCQkJ aWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgJiYgcGxhbmUtPm1pbl9jZGNsaykgewo+ICsJ CQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJiBwbGFuZS0+bWluX2NkY2xrKSB7Cj4g IAkJCQlpZiAoY3J0Y19zdGF0ZS0+ZG91YmxlX3dpZGUgfHwKPiAgCQkJCSAgICBJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCQkJCWNydGNf c3RhdGUtPm1pbl9jZGNsa1twbGFuZS0+aWRdID0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZmJjLmMKPiBpbmRleCAzZWE4ZDAxMGRiNmMuLjkyYzdlYjI0MzU1OSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwo+IEBAIC00MzAsNyArNDMw LDcgQEAgc3RhdGljIGJvb2wgbXVsdGlwbGVfcGlwZXNfb2soc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAlpZiAoIW5vX2ZiY19vbl9tdWx0aXBsZV9waXBlcyhkZXZfcHJpdikpCj4gIAkJcmV0 dXJuIHRydWU7Cj4gIAo+IC0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAo cGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlmYmMtPnZpc2libGVfcGlwZXNfbWFzayB8 PSAoMSA8PCBwaXBlKTsKPiAgCWVsc2UKPiAgCQlmYmMtPnZpc2libGVfcGlwZXNfbWFzayAmPSB+ KDEgPDwgcGlwZSk7Cj4gQEAgLTY3NywxMiArNjc3LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2Zi Y191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkgKiB0aGUg OTAvMjcwIGRlZ3JlZSBwbGFuZSByb3RhdGlvbiBjYXNlcyAodG8gbWF0Y2ggdGhlCj4gIAkgKiBH VFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4K PiAgCSAqLwo+IC0JY2FjaGUtPnBsYW5lLnNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQljYWNoZS0+cGxhbmUuc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQljYWNoZS0+cGxhbmUudmlz aWJsZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwljYWNoZS0+cGxhbmUuc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCWNhY2hl LT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsKPiArCWNhY2hlLT5wbGFuZS52aXNpYmxlID0gcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZTsKPiAgCWNhY2hlLT5wbGFuZS5hZGp1c3RlZF94ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzBdLng7Cj4gIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS55Owo+IC0JY2FjaGUtPnBsYW5lLnkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEg Pj4gMTY7Cj4gKwljYWNoZS0+cGxhbmUueSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAx NjsKPiAgCj4gIAljYWNoZS0+cGxhbmUucGl4ZWxfYmxlbmRfbW9kZSA9IHBsYW5lX3N0YXRlLT5o dy5waXhlbF9ibGVuZF9tb2RlOwo+ICAKPiBAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBpbnRl bF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CWlmICghcGxhbmUtPmhhc19mYmMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwkJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl KQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRf bmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfb3ZlcmxheS5jCj4gaW5kZXggNDZlM2Q2Y2Y1OTc2Li44Y2ZiNzg1ZTc2MWMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYwo+ IEBAIC02NjgsNyArNjY4LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2NvbG9ya2V5KHN0cnVjdCBp bnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAJaWYgKG92ZXJsYXktPmNvbG9yX2tleV9lbmFibGVk KQo+ICAJCWZsYWdzIHw9IERTVF9LRVlfRU5BQkxFOwo+ICAKPiAtCWlmIChzdGF0ZS0+YmFzZS52 aXNpYmxlKQo+ICsJaWYgKHN0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJZm9ybWF0ID0gc3RhdGUt Pmh3LmZiLT5mb3JtYXQtPmZvcm1hdDsKPiAgCj4gIAlzd2l0Y2ggKGZvcm1hdCkgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IGIyMTE2ZDEy MzU0OC4uZWY3NDA5ZjY5NWY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIGludGVsX3BpcGVfdXBk YXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIAo+ICBp bnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAl1 MzIgc3RyaWRlLCBtYXhfc3RyaWRlOwo+IEBAIC0yNTIsNyArMjUyLDcgQEAgaW50IGludGVsX3Bs YW5lX2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQo+ICAJICoga2ljayBpbiBkdWUgdGhlIHBsYW5lIGJlaW5nIGludmlzaWJsZS4KPiAgCSAq Lwo+ICAJaWYgKGludGVsX3BsYW5lX2Nhbl9yZW1hcChwbGFuZV9zdGF0ZSkgJiYKPiAtCSAgICAh cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCSAgICAhcGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAkvKiBGSVhNRSBvdGhlciBjb2xvciBwbGFuZXM/ ICovCj4gQEAgLTI3Myw3ICsyNzMsNyBAQCBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIGludCBpbnRlbF9w bGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Cj4gLQlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+ YmFzZS5zcmM7Cj4gKwlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+dWFwaS5z cmM7Cj4gIAl1MzIgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gsIGhzdWIsIHZzdWI7Cj4gIAli b29sIHJvdGF0ZWQgPSBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5ody5yb3Rh dGlvbik7Cj4gIAo+IEBAIC0zMjgsNyArMzI4LDcgQEAgc2tsX3BsYW5lX3JhdGlvKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gIAkJdW5zaWduZWQgaW50ICpudW0sIHVuc2ln bmVkIGludCAqZGVuKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAKPiAgCWlmIChmYi0+Zm9ybWF0LT5jcHBbMF0gPT0gOCkgewo+IEBAIC0zNDgs NyArMzQ4LDcgQEAgc2tsX3BsYW5lX3JhdGlvKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgaW50IHNrbF9wbGFuZV9taW5fY2RjbGsoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5k ZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCXVuc2lnbmVkIGludCBwaXhlbF9yYXRlID0g Y3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKPiAgCXVuc2lnbmVkIGludCBzcmNfdywgc3JjX2gsIGRz dF93LCBkc3RfaDsKPiAgCXVuc2lnbmVkIGludCBudW0sIGRlbjsKPiBAQCAtMzU5LDEwICszNTks MTAgQEAgc3RhdGljIGludCBza2xfcGxhbmVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAg fHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJZGVuICo9IDI7Cj4gIAo+IC0Jc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCXNyY19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JZHN0 X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiAtCWRzdF9oID0g ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJc3JjX3cgPSBkcm1f cmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXNyY19oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJZHN0X3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiArCWRzdF9oID0gZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCS8qIERvd25zY2FsaW5n IGxpbWl0cyB0aGUgbWF4aW11bSBwaXhlbCByYXRlICovCj4gIAlkc3RfdyA9IG1pbihzcmNfdywg ZHN0X3cpOwo+IEBAIC00MDEsMTkgKzQwMSwxOSBAQCBza2xfcHJvZ3JhbV9zY2FsZXIoc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCWludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2Nh bGVyX2lkOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3NjYWxlciAqc2NhbGVyID0KPiAgCQkmY3J0 Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcnNbc2NhbGVyX2lkXTsKPiAtCWludCBjcnRjX3gg PSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LnkxOwo+IC0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpOwo+IC0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7 Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJdTMyIGNydGNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJdTMyIGNydGNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXUxNiB5X2hw aGFzZSwgdXZfcmdiX2hwaGFzZTsKPiAgCXUxNiB5X3ZwaGFzZSwgdXZfcmdiX3ZwaGFzZTsKPiAg CWludCBoc2NhbGUsIHZzY2FsZTsKPiAgCj4gLQloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2Fs ZSgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAo+IC0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT5iYXNl LmRzdCwKPiArCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKCZwbGFuZV9zdGF0ZS0+dWFw aS5zcmMsCj4gKwkJCQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAo+ICAJCQkJICAgICAg MCwgSU5UX01BWCk7Cj4gLQl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZSgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjLAo+IC0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCwKPiArCXZz Y2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMsCj4gKwkJ CQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAo+ICAJCQkJICAgICAgMCwgSU5UX01BWCk7 Cj4gIAo+ICAJLyogVE9ETzogaGFuZGxlIHN1Yi1waXhlbCBjb29yZGluYXRlcyAqLwo+IEBAIC01 ODQsMTIgKzU4NCwxMiBAQCBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ICAJdTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9w bGFuZV0ub2Zmc2V0Owo+ICAJdTMyIHN0cmlkZSA9IHNrbF9wbGFuZV9zdHJpZGUocGxhbmVfc3Rh dGUsIGNvbG9yX3BsYW5lKTsKPiAgCXUzMiBhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShw bGFuZV9zdGF0ZSwgMSk7Cj4gLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0Lngx Owo+IC0JaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiArCWludCBjcnRj X3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3Rh dGUtPnVhcGkuZHN0LnkxOwo+ICAJdTMyIHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29s b3JfcGxhbmVdLng7Cj4gIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9w bGFuZV0ueTsKPiAtCXUzMiBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFz ZS5zcmMpID4+IDE2Owo+IC0JdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmxp bmtlZCA9IHBsYW5lX3N0YXRlLT5wbGFuYXJfbGlua2VkX3BsYW5lOwo+ICAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1OCBhbHBoYSA9 IHBsYW5lX3N0YXRlLT5ody5hbHBoYSA+PiA4Owo+IEBAIC03NjYsNyArNzY2LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9wbGFuZV9saW5lYXJfZ2FtbWEodTE2IGdhbW1hWzhdKQo+ICBzdGF0aWMgdm9p ZAo+ICBjaHZfdXBkYXRlX2NzYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAg CWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiBAQCAtODI1LDcgKzgyNSw3 IEBAIGNodl91cGRhdGVfY3NjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHN0YXRpYyB2b2lkCj4gIHZsdl91cGRhdGVfY2xyYyhjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiBA QCAtMTAxOSw3ICsxMDE5LDcgQEAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIHN0YXRpYyB2b2lkIHZsdl91 cGRhdGVfZ2FtbWEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0g cGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gQEAgLTEwNTMsMTAgKzEwNTMsMTAgQEAgdmx2X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdTMyIHNwcnN1cmZfb2Zm c2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLm9mZnNldDsKPiAgCXUzMiBsaW5lYXJf b2Zmc2V0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9 ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5k c3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+IC0JdTMy IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JdTMy IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCWlu dCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxh bmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lWzBdLng7Cj4gIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+ICAJ dW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiBAQCAtMTI0NSw4ICsxMjQ1LDggQEAgc3RhdGljIGlu dCBpdmJfc3ByaXRlX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCSAqLwo+ICAJcGl4ZWxfcmF0ZSA9IGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7 Cj4gIAo+IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+ PiAxNjsKPiAtCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7 Cj4gKwlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2 Owo+ICsJZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAg Cj4gIAlpZiAoc3JjX3cgIT0gZHN0X3cpCj4gIAkJaXZiX3BsYW5lX3JhdGlvX3NjYWxpbmcoY3J0 Y19zdGF0ZSwgcGxhbmVfc3RhdGUsICZudW0sICZkZW4pOwo+IEBAIC0xMzIwLDcgKzEzMjAsNyBA QCBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyBib29sIGl2Yl9uZWVkX3Nwcml0ZV9nYW1tYShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAKPiAgCXJldHVybiBmYi0+Zm9ybWF0LT5jcHBbMF0gPT0gOCAmJgo+IEBAIC0x MzMxLDcgKzEzMzEsNyBAQCBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK PiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25l ZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ IEBAIC0xNDIyLDcgKzE0MjIsNyBAQCBzdGF0aWMgdm9pZCBpdmJfc3ByaXRlX2xpbmVhcl9nYW1t YShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICAKPiAgc3Rh dGljIHZvaWQgaXZiX3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gIAl1MTYgZ2FtbWFbMThdOwo+ IEBAIC0xNDYxLDE0ICsxNDYxLDE0IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiAgCXUzMiBzcHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS5vZmZzZXQ7Cj4gIAl1MzIgbGluZWFyX29mZnNldDsKPiAgCWNvbnN0IHN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gLQlp bnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwo+IC0JaW50IGNydGNfeSA9IHBs YW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiAtCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiAtCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVh cGkuZHN0LngxOwo+ICsJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKPiAr CXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAr CXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4g IAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ICAJdTMyIHkgPSBwbGFu ZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAtCXUzMiBzcmNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JdTMyIHNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJdTMyIHNyY193ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX2gg PSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gIAl1MzIg c3ByY3RsLCBzcHJzY2FsZSA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAKPiBA QCAtMTU4MSw4ICsxNTgxLDggQEAgc3RhdGljIGludCBnNHhfc3ByaXRlX21pbl9jZGNsayhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXBpeGVsX3JhdGUgPSBj cnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ICAKPiAgCS8qIEhvcml6b250YWwgZG93bnNjYWxpbmcg bGltaXRzIHRoZSBtYXhpbXVtIHBpeGVsIHJhdGUgKi8KPiAtCWhzY2FsZSA9IGRybV9yZWN0X2Nh bGNfaHNjYWxlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gLQkJCQkgICAgICAmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0LAo+ICsJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0 YXRlLT51YXBpLnNyYywKPiArCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCj4gIAkJ CQkgICAgICAwLCBJTlRfTUFYKTsKPiAgCWlmIChoc2NhbGUgPCAweDEwMDAwKQo+ICAJCXJldHVy biBwaXhlbF9yYXRlOwo+IEBAIC0xNjM2LDcgKzE2MzYsNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJp dGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90 YXRpb247Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0g JnBsYW5lX3N0YXRlLT5ja2V5Owo+IEBAIC0xNjk5LDcgKzE2OTksNyBAQCBzdGF0aWMgdTMyIGc0 eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAKPiAgc3RhdGljIHZvaWQgZzR4X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiBAQCAtMTcz MSw3ICsxNzMxLDcgQEAgc3RhdGljIHZvaWQgaWxrX3Nwcml0ZV9saW5lYXJfZ2FtbWEodTE2IGdh bW1hWzE3XSkKPiAgCj4gIHN0YXRpYyB2b2lkIGlsa191cGRhdGVfZ2FtbWEoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7 Cj4gQEAgLTE3NjcsMTQgKzE3NjcsMTQgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ICAJdTMyIGR2c3N1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzBdLm9mZnNldDsKPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ICAJY29uc3Qgc3RydWN0 IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAt CWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0g cGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+IC0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ ICsJdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ ICsJdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsK PiAgCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gIAl1MzIgeSA9IHBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+IC0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQl1MzIgc3JjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCXUz MiBkdnNjbnRyLCBkdnNzY2FsZSA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAK PiBAQCAtMTg4OCw4ICsxODg4LDggQEAgZzR4X3Nwcml0ZV9jaGVja19zY2FsaW5nKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZwbGFuZV9zdGF0ZS0+YmFzZS5zcmM7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9 ICZwbGFuZV9zdGF0ZS0+YmFzZS5kc3Q7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZwbGFuZV9zdGF0ZS0+dWFwaS5zcmM7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9 ICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3Q7Cj4gIAlpbnQgc3JjX3gsIHNyY193LCBzcmNfaCwgY3J0 Y193LCBjcnRjX2g7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSA9Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gQEAgLTE5NDgsNyAr MTk0OCw3IEBAIHN0YXRpYyBpbnQKPiAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4g IAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+ICAJaW50IG1h eF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiBAQCAtMTk2NCw3ICsxOTY0 LDcgQEAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxh bmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkgICZjcnRjX3N0 YXRlLT51YXBpLAo+ICAJCQkJCQkgIG1pbl9zY2FsZSwgbWF4X3NjYWxlLAo+ICAJCQkJCQkgIHRy dWUsIHRydWUpOwo+IEBAIC0xOTc1LDcgKzE5NzUsNyBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4g cmV0Owo+ICAKPiAtCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCWlmICghcGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlyZXQgPSBpbnRl bF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVfc3RhdGUpOwo+IEBAIC0xOTk2LDcg KzE5OTYsNyBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAKPiAgaW50IGNodl9wbGFuZV9jaGVja19yb3RhdGlvbihjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0 YXRlLT5ody5yb3RhdGlvbjsKPiAgCj4gQEAgLTIwMjEsNyArMjAyMSw3IEBAIHZsdl9zcHJpdGVf Y2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxh bmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkgICZjcnRjX3N0 YXRlLT51YXBpLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiAgCQkJ CQkJICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gQEAgLTIwMzMsNyArMjAzMyw3IEBA IHZsdl9zcHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVy biAwOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFu ZV9zdGF0ZSk7Cj4gQEAgLTIwNDgsNyArMjA0OCw3IEBAIHZsdl9zcHJpdGVfY2hlY2soc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2No ZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+IEBAIC0yMTIzLDkgKzIxMjMs OSBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfcwo+ICAJCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2 KTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0 Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwkJdG9faTkx NShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9z dGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLmRzdCk7Cj4gIAlpbnQgcGlwZV9zcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVf c3JjX3c7Cj4gIAo+ICAJLyoKPiBAQCAtMjE1Myw3ICsyMTUzLDcgQEAgc3RhdGljIGludCBza2xf cGxhbmVfY2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3MKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+ aHcucm90YXRpb247Cj4gLQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCS8qIERpc3BsYXkgV0EgIzExMDYgKi8KPiAg CWlmIChkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZvcm1hdCkgJiYgc3Jj X3cgJiAzICYmCj4gQEAgLTIxODUsNyArMjE4NSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX21h eF9zY2FsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyBpbnQg c2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CQkgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IG1pbl9zY2FsZSA9IERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiBAQCAtMjIwMiw3ICsyMjAyLDcgQEAgc3RhdGlj IGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAkJbWF4X3NjYWxlID0gc2tsX3BsYW5lX21heF9zY2FsZShkZXZfcHJpdiwgZmIpOwo+ICAJ fQo+ICAKPiAtCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFu ZV9zdGF0ZS0+YmFzZSwKPiArCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0 YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKPiAgCQkJCQkJICAmY3J0Y19zdGF0ZS0+dWFwaSwKPiAg CQkJCQkJICBtaW5fc2NhbGUsIG1heF9zY2FsZSwKPiAgCQkJCQkJICB0cnVlLCB0cnVlKTsKPiBA QCAtMjIxMyw3ICsyMjEzLDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7 Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IHNrbF9wbGFu ZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwo+IEBAIC0y MjMwLDcgKzIyMzAsNyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAkvKiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4 ZWwgcHJlY2lzaW9uLCBkaXNhYmxlIHBsYW5lIGlmIGludmlzaWJsZSAqLwo+ICAJaWYgKCEocGxh bmVfc3RhdGUtPmh3LmFscGhhID4+IDgpKQo+IC0JCXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUg PSBmYWxzZTsKPiArCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7Cj4gIAo+ICAJ cGxhbmVfc3RhdGUtPmN0bCA9IHNrbF9wbGFuZV9jdGwoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUp Owo+ICAKPiBAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgc3RhdGljIGJvb2wgaGFzX2RzdF9rZXlfaW5f cHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHN0YXRp YyB2b2lkIGludGVsX3BsYW5lX3NldF9ja2V5KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsCj4gIAkJCQkgY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KnNldCkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAlz dHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5 Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCAwYTAxMDNlY2Y3YmMuLjJkMzg5 ZTQzN2U4NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC03ODYsNyArNzg2LDcg QEAgc3RhdGljIGludCBpbnRlbF93bV9udW1fbGV2ZWxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSAgIGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PnVhcGkucGxhbmUpOwo+ICAKPiAgCS8qIEZJWE1FIGNoZWNrIHRoZSAnZW5hYmxlJyBpbnN0ZWFk ICovCj4gIAlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiBAQCAtODAzLDcgKzgwMyw3IEBA IHN0YXRpYyBib29sIGludGVsX3dtX3BsYW5lX3Zpc2libGUoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikK PiAgCQlyZXR1cm4gcGxhbmVfc3RhdGUtPmh3LmZiICE9IE5VTEw7Cj4gIAllbHNlCj4gLQkJcmV0 dXJuIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwkJcmV0dXJuIHBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGU7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfY3J0YyAqc2luZ2xl X2VuYWJsZWRfY3J0YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTEw NzUsNyArMTA3NSw3IEBAIHN0YXRpYyB1MTYgZzR4X2NvbXB1dGVfd20oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJICBpbnQgbGV2ZWwpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+ICAJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9t b2RlOwo+IEBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMgdTE2IGc0eF9jb21wdXRlX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY2xvY2sgPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19o dG90YWw7Cj4gIAo+IC0Jd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KTsKPiArCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7 Cj4gIAo+ICAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpIHsKPiAgCQl3bSA9IGludGVs X3dtX21ldGhvZDIoY2xvY2ssIGh0b3RhbCwgd2lkdGgsIGNwcCwgbGF0ZW5jeSk7Cj4gQEAgLTEx NzQsNyArMTE3NCw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBnNHhfcmF3X3Bs YW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJ CQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJaW50IG51bV9sZXZlbHMgPSBpbnRl bF93bV9udW1fbGV2ZWxzKHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KSk7Cj4gIAllbnVtIHBsYW5l X2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ICAJYm9vbCBkaXJ0eSA9IGZhbHNlOwo+IEBAIC0x NTgxLDcgKzE1ODEsNyBAQCBzdGF0aWMgdTE2IHZsdl9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJCWludCBsZXZlbCkKPiAgewo+IC0J c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5i YXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVz dGVkX21vZGU7Cj4gQEAgLTE3NTEsNyArMTc1MSw3IEBAIHN0YXRpYyBib29sIHZsdl9yYXdfcGxh bmVfd21fc2V0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMg Ym9vbCB2bHZfcmF3X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJZW51bSBw bGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCWludCBudW1fbGV2ZWxzID0gaW50ZWxf d21fbnVtX2xldmVscyh0b19pOTE1KHBsYW5lLT5iYXNlLmRldikpOwo+ICAJaW50IGxldmVsOwo+ IEBAIC0yNDg0LDcgKzI0ODQsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3ByaV93bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAltZXRob2QyID0g aWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwKPiAgCQkJCSBjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAo+IC0JCQkJIGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICsJCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QpLAo+ICAJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKPiAgCj4gIAlyZXR1cm4gbWlu KG1ldGhvZDEsIG1ldGhvZDIpOwo+IEBAIC0yNTEyLDcgKzI1MTIsNyBAQCBzdGF0aWMgdTMyIGls a19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBj cHAsIG1lbV92YWx1ZSk7Cj4gIAltZXRob2QyID0gaWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+ cGl4ZWxfcmF0ZSwKPiAgCQkJCSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRv dGFsLAo+IC0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICsJ CQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAo+ICAJCQkJIGNwcCwg bWVtX3ZhbHVlKTsKPiAgCXJldHVybiBtaW4obWV0aG9kMSwgbWV0aG9kMik7Cj4gIH0KPiBAQCAt MjUzNyw3ICsyNTM3LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9jdXJfd20oY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJcmV0dXJuIGlsa193bV9t ZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gIAkJCSAgICAgIGNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gLQkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICsJCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuZHN0KSwKPiAgCQkJICAgICAgY3BwLCBtZW1fdmFsdWUpOwo+ICB9Cj4gIAo+ IEBAIC0yNTUzLDcgKzI1NTMsOCBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2ZiY193bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAljcHAgPSBwbGFu ZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAKPiAtCXJldHVybiBpbGtfd21fZmJj KHByaV92YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLCBjcHApOwo+ ICsJcmV0dXJuIGlsa193bV9mYmMocHJpX3ZhbCwgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCksCj4gKwkJCSAgY3BwKTsKPiAgfQo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGlu dAo+IEBAIC0zMDk3LDEwICszMDk4LDEwIEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93 bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIAlwaXBlX3dtLT5w aXBlX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gIAlpZiAoc3Byc3RhdGUpIHsK PiAtCQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlOwo+ IC0JCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gc3Byc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ IC0JCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rfd2lk dGgoJnNwcnN0YXRlLT5iYXNlLnNyYykgPj4gMTYgfHwKPiAtCQkJIGRybV9yZWN0X2hlaWdodCgm c3Byc3RhdGUtPmJhc2UuZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5iYXNlLnNy YykgPj4gMTYpOwo+ICsJCXBpcGVfd20tPnNwcml0ZXNfZW5hYmxlZCA9IHNwcnN0YXRlLT51YXBp LnZpc2libGU7Cj4gKwkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+dWFwaS52 aXNpYmxlICYmCj4gKwkJCShkcm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPnVhcGkuZHN0KSAhPSBk cm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPnVhcGkuc3JjKSA+PiAxNiB8fAo+ICsJCQkgZHJtX3Jl Y3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFwaS5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmc3Byc3Rh dGUtPnVhcGkuc3JjKSA+PiAxNik7Cj4gIAl9Cj4gIAo+ICAJdXNhYmxlX2xldmVsID0gbWF4X2xl dmVsOwo+IEBAIC00MDcyLDEwICs0MDczLDEwIEBAIHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50 KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJICoKPiAgCSAq IG4uYi4sIHNyYyBpcyAxNi4xNiBmaXhlZCBwb2ludCwgZHN0IGlzIHdob2xlIGludGVnZXIuCj4g IAkgKi8KPiAtCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykg Pj4gMTY7Cj4gLQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj KSA+PiAxNjsKPiAtCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRz dCk7Cj4gLQlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsK PiArCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7 Cj4gKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAx NjsKPiArCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4g Kwlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCj4g IAlmcF93X3JhdGlvID0gZGl2X2ZpeGVkMTYoc3JjX3csIGRzdF93KTsKPiAgCWZwX2hfcmF0aW8g PSBkaXZfZml4ZWQxNihzcmNfaCwgZHN0X2gpOwo+IEBAIC00MDkwLDE0ICs0MDkxLDE0IEBAIHNr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKPiAgCQkJICAgICBpbnQgY29sb3JfcGxhbmUpCj4gIHsKPiAtCXN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1MzIgZGF0YV9yYXRlOwo+ICAJdTMyIHdpZHRoID0g MCwgaGVpZ2h0ID0gMDsKPiAgCXVpbnRfZml4ZWRfMTZfMTZfdCBkb3duX3NjYWxlX2Ftb3VudDsK PiAgCXU2NCByYXRlOwo+ICAKPiAtCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiAr CWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlp ZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKPiBAQCAtNDExMiw4ICs0MTEzLDggQEAgc2ts X3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiAgCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2Vz ICh0byBtYXRjaCB0aGUKPiAgCSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2Nv dW50IGZvciByb3RhdGlvbiBoZXJlLgo+ICAJICovCj4gLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JaGVpZ2h0ID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCWhlaWdodCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAkvKiBVViBwbGFu ZSBkb2VzIDEvMiBwaXhlbCBzdWItc2FtcGxpbmcgKi8KPiAgCWlmIChjb2xvcl9wbGFuZSA9PSAx KSB7Cj4gQEAgLTQ2MjAsNyArNDYyMSw3IEBAIHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCSAqIHRoZSA5MC8y NzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKPiAgCSAqIEdUVCBt YXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJlLgo+ICAJ ICovCj4gLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+ IDE2Owo+ICsJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsKPiAgCj4gIAlyZXR1cm4gc2tsX2NvbXB1dGVfd21fcGFyYW1zKGNydGNfc3RhdGUsIHdp ZHRoLAo+ICAJCQkJICAgICBmYi0+Zm9ybWF0LCBmYi0+bW9kaWZpZXIsCj4gQEAgLTQ5MDIsNyAr NDkwMyw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2KHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAgICAgY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsK PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7 Cj4gIAlpbnQgcmV0Owo+IEBAIC00OTI4LDcgKzQ5MjksNyBAQCBzdGF0aWMgaW50IHNrbF9idWls ZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgc3RhdGlj IGludCBpY2xfYnVpbGRfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIHsKPiAtCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSktPmlkOwo+ICsJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKS0+aWQ7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAgCS8qIFdhdGVybWFya3MgY2FsY3VsYXRlZCBpbiBtYXN0ZXIgKi8KPiBAQCAtNTkyOCw3 ICs1OTI5LDcgQEAgdm9pZCBnNHhfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gIAkJ aW50IGxldmVsOwo+ICAKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCQlp ZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWZv ciAobGV2ZWwgPSAwOyBsZXZlbCA8IDM7IGxldmVsKyspIHsKPiBAQCAtNjA4Myw3ICs2MDg0LDcg QEAgdm9pZCB2bHZfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gIAkJaW50IGxldmVs Owo+ICAKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCQlpZiAocGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWZvciAobGV2ZWwg PSAwOyBsZXZlbCA8IHdtX3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7Cj4gLS0gCj4gMi4y My4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34DEBCA9EC5 for ; Wed, 30 Oct 2019 16:41:32 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 004D7208E3 for ; Wed, 30 Oct 2019 16:41:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 004D7208E3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9C80A6EACB; Wed, 30 Oct 2019 16:41:31 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 59CA96EACB for ; Wed, 30 Oct 2019 16:41:30 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Oct 2019 09:41:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,248,1569308400"; d="scan'208";a="205835280" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by FMSMGA003.fm.intel.com with SMTP; 30 Oct 2019 09:41:27 -0700 Received: by stinkbox (sSMTP sendmail emulation); Wed, 30 Oct 2019 18:41:26 +0200 Date: Wed, 30 Oct 2019 18:41:26 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Message-ID: <20191030164126.GO1208@intel.com> References: <20191030142657.22405-1-maarten.lankhorst@linux.intel.com> <20191030142657.22405-10-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191030142657.22405-10-maarten.lankhorst@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [CI 10/12] drm/i915: Perform automated conversions for plane uapi/hw split, base -> uapi. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191030164126.kNVGjRXo38534mRH77KRge_cgHhwRGRVo3lAsccKSsg@z> T24gV2VkLCBPY3QgMzAsIDIwMTkgYXQgMDM6MjY6NTVQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gdWFwaS4gVGhpcyBpcyBk b25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2gsCj4gcmFuIGFmdGVyIHRoZSBwcmV2aW91cyBj b21taXQgdGhhdCBzcGxpdHMgb3V0IGFueSBodyByZWZlcmVuY2VzOgo+IAo+IEBACj4gc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpUOwo+IGlkZW50aWZpZXIgeDsKPiBAQAo+IC1ULT5iYXNlLngK PiArVC0+dWFwaS54Cj4gCj4gQEAKPiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7Cj4gQEAK PiAtVC0+YmFzZQo+ICtULT51YXBpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyAgIHwgICAyICstCj4gIC4uLi9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAzMiArLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMjYyICsrKysrKysrKy0t LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jICAgICAg fCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMg IHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMg ICB8IDEzNiArKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAg ICAgICAgICAgIHwgIDU3ICsrLS0KPiAgNyBmaWxlcyBjaGFuZ2VkLCAyNTIgaW5zZXJ0aW9ucygr KSwgMjUxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdG9taWMuYwo+IGluZGV4IDBhNWVlZTRjMzUwZi4uZWEyNGE0NWRhYjg2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gQEAgLTI4Niw3 ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfc2V0dXBfc2NhbGVyKHN0cnVjdCBp bnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0YQo+ICAJaWYgKHBsYW5lX3N0YXRlICYm IHBsYW5lX3N0YXRlLT5ody5mYiAmJgo+ICAJICAgIHBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0 LT5pc195dXYgJiYKPiAgCSAgICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+bnVtX3BsYW5l cyA+IDEpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAkJaWYgKElTX0dF TihkZXZfcHJpdiwgOSkgJiYKPiAgCQkgICAgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4g IAkJCW1vZGUgPSBTS0xfUFNfU0NBTEVSX01PREVfTlYxMjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBpbmRleCA0ZTkyOGUzNjFi ZTEuLjE4MDIzNDIyYTM0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2F0b21pY19wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmVfYWxsb2Modm9pZCkKPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKPiAgCX0KPiAgCj4gLQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0KCZwbGFu ZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT5iYXNlKTsKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfcmVzZXQoJnBsYW5lLT5iYXNlLCAmcGxhbmVfc3RhdGUtPnVhcGkpOwo+ICAJcGxhbmVfc3Rh dGUtPnNjYWxlcl9pZCA9IC0xOwo+ICAKPiAgCXJldHVybiBwbGFuZTsKPiBAQCAtODgsMTIgKzg4 LDEyIEBAIGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSkKPiAgCWlmICghaW50ZWxfc3RhdGUpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IC0JX19kcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+ YmFzZSk7Cj4gKwlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFu ZSwgJmludGVsX3N0YXRlLT51YXBpKTsKPiAgCj4gIAlpbnRlbF9zdGF0ZS0+dm1hID0gTlVMTDsK PiAgCWludGVsX3N0YXRlLT5mbGFncyA9IDA7Cj4gIAo+IC0JcmV0dXJuICZpbnRlbF9zdGF0ZS0+ YmFzZTsKPiArCXJldHVybiAmaW50ZWxfc3RhdGUtPnVhcGk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBA IC0xMTEsNyArMTExLDcgQEAgaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSB0 b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7Cj4gIAlXQVJOX09OKHBsYW5lX3N0YXRlLT52bWEp Owo+ICAKPiAtCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmVf c3RhdGUtPmJhc2UpOwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaSk7Cj4gIAlrZnJlZShwbGFuZV9zdGF0ZSk7Cj4gIH0KPiAgCj4g QEAgLTEyMSw3ICsxMjEsNyBAQCB1bnNpZ25lZCBpbnQgaW50ZWxfcGxhbmVfZGF0YV9yYXRlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBp bnQgY3BwOwo+ICAKPiAtCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCWlmICgh cGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAljcHAgPSBm Yi0+Zm9ybWF0LT5jcHBbMF07Cj4gQEAgLTE0NCwxMCArMTQ0LDEwIEBAIGJvb2wgaW50ZWxfcGxh bmVfY2FsY19taW5fY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRl dik7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiAg CQlpbnRlbF9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRlLT5iYXNlLmNy dGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0 YXRlLT51YXBpLmNydGMpOwoKU3RpbGwgd3Jvbmc/CgpPdGhlcndpc2UKUmV2aWV3ZWQtYnk6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICAJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlIHx8ICFwbGFuZS0+bWluX2NkY2xrKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlIHx8ICFwbGFuZS0+bWluX2NkY2xrKQo+ICAJCXJldHVybiBmYWxzZTsKPiAg Cj4gIAljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7Cj4gQEAgLTE4MSw3ICsxODEsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJ CQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAo+ICAJ CQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShuZXdfcGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAg Cj4gQEAgLTE5MCw3ICsxOTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhf c3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJbmV3X2Ny dGNfc3RhdGUtPmM4X3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gIAluZXdfY3J0Y19zdGF0 ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwo+ICAJbmV3X2NydGNfc3RhdGUtPm1pbl9jZGNs a1twbGFuZS0+aWRdID0gMDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFs c2U7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IGZhbHNlOwo+ICAKPiAgCWlm ICghbmV3X3BsYW5lX3N0YXRlLT5ody5jcnRjICYmICFvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMp Cj4gIAkJcmV0dXJuIDA7Cj4gQEAgLTIwMCwxOCArMjAwLDE4IEBAIGludCBpbnRlbF9wbGFuZV9h dG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAkvKiBGSVhNRSBwcmUtZzR4IGRvbid0IHdv cmsgbGlrZSB0aGlzICovCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4g KwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUt PmFjdGl2ZV9wbGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+IC0JaWYgKG5ld19wbGFuZV9z dGF0ZS0+YmFzZS52aXNpYmxlICYmCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUgJiYKPiAgCSAgICBkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZvcm1h dCkpCj4gIAkJbmV3X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzIHw9IEJJVChwbGFuZS0+aWQpOwo+ ICAKPiAtCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJaWYgKG5ld19w bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkgICAgZmItPmZvcm1hdC0+Zm9ybWF0ID09 IERSTV9GT1JNQVRfQzgpCj4gIAkJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyB8PSBCSVQocGxh bmUtPmlkKTsKPiAgCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgb2xk X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBp LnZpc2libGUgfHwgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNf c3RhdGUtPnVwZGF0ZV9wbGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+ICAJbmV3X2NydGNf c3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0KPiBAQCAtMjQ2LDcgKzI0Niw3IEBAIGludCBp bnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gIAlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gIAo+IC0JbmV3X3BsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPiArCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS52 aXNpYmxlID0gZmFsc2U7Cj4gIAlpZiAoIWNydGMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBAIC0z NTUsNyArMzU1LDcgQEAgdm9pZCBza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3 X3BsYW5lX3N0YXRlID0KPiAgCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3Rh dGUsIHBsYW5lKTsKPiAgCj4gLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7 Cj4gKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7Cj4gIAkJCWludGVsX3Vw ZGF0ZV9wbGFuZShwbGFuZSwgbmV3X2NydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gIAkJ fSBlbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSkgewo+ICAJCQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKm1hc3RlciA9Cj4gQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIGk5eHhfdXBk YXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJ CSAgICAhKHVwZGF0ZV9tYXNrICYgQklUKHBsYW5lLT5pZCkpKQo+ICAJCQljb250aW51ZTsKPiAg Cj4gLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChuZXdfcGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBu ZXdfY3J0Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiAgCQllbHNlCj4gIAkJCWludGVsX2Rp c2FibGVfcGxhbmUocGxhbmUsIG5ld19jcnRjX3N0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDFjMGM1NWE3OGQwMy4uMTU4NDQy MWM3NmI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMKPiBAQCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9z dXJmX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCj4gIHN0 YXRpYyBib29sIGludGVsX3BsYW5lX3VzZXNfZmVuY2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7Cj4gIAo+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8Cj4gQEAg LTIzOTEsNyArMjM5MSw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfcGxhbmVfY29tcHV0ZV9hbGlnbmVk X29mZnNldChpbnQgKngsIGludCAqeSwKPiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnN0YXRlLAo+ICAJCQkJCSAgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19p bnRlbF9wbGFuZShzdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHN0YXRlLT5ody5yb3RhdGlvbjsKPiBAQCAtMjU3OSw3ICsyNTc5LDcgQEAg aW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwgaW50IGNvbG9yX3BsYW5lKQo+ICAKPiAgYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBpOwo+IEBAIC0yNjE5LDcg KzI2MTksNyBAQCBib29sIGludGVsX3BsYW5lX2Nhbl9yZW1hcChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGljIGJvb2wgaW50ZWxfcGxhbmVf bmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUzMiBzdHJpZGUsIG1heF9z dHJpZGU7Cj4gQEAgLTI2MjgsNyArMjYyOCw3IEBAIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25l ZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IAkgKiBObyByZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ugd2UgZG9uJ3QgaGF2 ZQo+ICAJICogYW4gYWN0dWFsIHNvdXJjZSB2aWV3cG9ydCB0byByZW1hcC4KPiAgCSAqLwo+IC0J aWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFw aS52aXNpYmxlKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAoIWludGVsX3BsYW5lX2Nh bl9yZW1hcChwbGFuZV9zdGF0ZSkpCj4gQEAgLTI4MTEsNyArMjgxMSw3IEBAIHN0YXRpYyB2b2lk Cj4gIGludGVsX3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0J CXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRl bF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiAgCXN0cnVjdCBpbnRlbF9yb3RhdGlv bl9pbmZvICppbmZvID0gJnBsYW5lX3N0YXRlLT52aWV3LnJvdGF0ZWQ7Cj4gQEAgLTI4MjYsMjAg KzI4MjYsMjAgQEAgaW50ZWxfcGxhbmVfcmVtYXBfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIAlwbGFuZV9zdGF0ZS0+dmlldy50eXBlID0gZHJtX3JvdGF0aW9u XzkwX29yXzI3MChyb3RhdGlvbikgPwo+ICAJCUk5MTVfR0dUVF9WSUVXX1JPVEFURUQgOiBJOTE1 X0dHVFRfVklFV19SRU1BUFBFRDsKPiAgCj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+ IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK PiAtCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+ICsJc3JjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7Cj4gKwlzcmNfeSA9 IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiArCXNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlzcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAlXQVJOX09OKGlzX2Nj c19tb2RpZmllcihmYi0+bW9kaWZpZXIpKTsKPiAgCj4gIAkvKiBNYWtlIHNyYyBjb29yZGluYXRl cyByZWxhdGl2ZSB0byB0aGUgdmlld3BvcnQgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMsCj4gIAkJCSAgIC0oc3JjX3ggPDwgMTYpLCAtKHNyY195IDw8IDE2KSk7Cj4gIAo+ ICAJLyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICov Cj4gIAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJtX3JlY3Rf cm90YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMsCj4gIAkJCQlzcmNfdyA8PCAxNiwgc3JjX2ggPDwgMTYsCj4gIAkJ CQlEUk1fTU9ERV9ST1RBVEVfMjcwKTsKPiAgCj4gQEAgLTI5NTksNyArMjk1OSw3IEBAIGludGVs X3BsYW5lX2NvbXB1dGVfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIAo+ICAJLyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2 aWV3ICovCj4gIAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJt X3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMsCj4gIAkJCQlmYi0+YmFzZS53aWR0aCA8PCAxNiwgZmIt PmJhc2UuaGVpZ2h0IDw8IDE2LAo+ICAJCQkJRFJNX01PREVfUk9UQVRFXzI3MCk7Cj4gIAo+IEBA IC0zMTI3LDkgKzMxMjcsOSBAQCBpbnRlbF9zZXRfcGxhbmVfdmlzaWJsZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKPiAgCQkJYm9vbCB2aXNpYmxlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lKTsKPiAgCj4gLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlzaWJsZTsK PiArCXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgPSB2aXNpYmxlOwo+ICAKPiAgCWlmICh2aXNp YmxlKQo+ICAJCWNydGNfc3RhdGUtPnVhcGkucGxhbmVfbWFzayB8PSBkcm1fcGxhbmVfbWFzaygm cGxhbmUtPmJhc2UpOwo+IEBAIC0zMjc1LDggKzMyNzUsOCBAQCBpbnRlbF9maW5kX2luaXRpYWxf cGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJcGxhbmVfc3RhdGUt PmNydGNfdyA9IGZiLT53aWR0aDsKPiAgCXBsYW5lX3N0YXRlLT5jcnRjX2ggPSBmYi0+aGVpZ2h0 Owo+ICAKPiAtCWludGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxh bmVfc3RhdGUpOwo+IC0JaW50ZWxfc3RhdGUtPmJhc2UuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rl c3QocGxhbmVfc3RhdGUpOwo+ICsJaW50ZWxfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0 YXRlX3NyYyhwbGFuZV9zdGF0ZSk7Cj4gKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxh bmVfc3RhdGVfZGVzdChwbGFuZV9zdGF0ZSk7Cj4gIAo+ICAJaWYgKHBsYW5lX2NvbmZpZy0+dGls aW5nKQo+ICAJCWRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwo+IEBAIC0z NDExLDEzICszNDExLDEzIEBAIHN0YXRpYyBib29sIHNrbF9jaGVja19tYWluX2Njc19jb29yZGlu YXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlCj4gIAo+ICBzdGF0aWMg aW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsK PiAtCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+IC0JaW50IHkgPSBw bGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7Cj4gLQlpbnQgdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JaW50IGggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwlpbnQgeCA9IHBsYW5lX3N0YXRl LT51YXBpLnNyYy54MSA+PiAxNjsKPiArCWludCB5ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkx ID4+IDE2Owo+ICsJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSA+PiAxNjsKPiArCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5z cmMpID4+IDE2Owo+ICAJaW50IG1heF93aWR0aDsKPiAgCWludCBtYXhfaGVpZ2h0Owo+ICAJdTMy IGFsaWdubWVudCwgb2Zmc2V0LCBhdXhfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzFdLm9mZnNldDsKPiBAQCAtMzUwMCw3ICszNTAwLDcgQEAgc3RhdGljIGludCBza2xfY2hlY2tf bWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAkg KiBQdXQgdGhlIGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCj4gIAkgKiBj b29yZGluYXRlIGNoZWNrcyB3aWxsIHNlZSB0aGUgcmlnaHQgdmFsdWVzLgo+ICAJICovCj4gLQlk cm1fcmVjdF90cmFuc2xhdGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKPiArCWRybV9yZWN0 X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAo+ICAJCQkgICAgICB4IDw8IDE2 LCB5IDw8IDE2KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMzUxMiwxMCArMzUxMiwxMCBAQCBz dGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+aHcucm90YXRpb247Cj4gIAlpbnQgbWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChm YiwgMSwgcm90YXRpb24pOwo+ICAJaW50IG1heF9oZWlnaHQgPSA0MDk2Owo+IC0JaW50IHggPSBw bGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7Cj4gLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5i YXNlLnNyYy55MSA+PiAxNzsKPiAtCWludCB3ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTc7Cj4gLQlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjKSA+PiAxNzsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngx ID4+IDE3Owo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTc7Cj4gKwlp bnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE3Owo+ICsJ aW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTc7Cj4g IAl1MzIgb2Zmc2V0Owo+ICAKPiAgCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVf c3RhdGUsIDEpOwo+IEBAIC0zNTM4LDggKzM1MzgsOCBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19u djEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IHN0YXRpYyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAtCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5i YXNlLnNyYy54MSA+PiAxNjsKPiAtCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55 MSA+PiAxNjsKPiArCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsK PiArCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiAgCWludCBo c3ViID0gZmItPmZvcm1hdC0+aHN1YjsKPiAgCWludCB2c3ViID0gZmItPmZvcm1hdC0+dnN1YjsK PiAgCWludCB4ID0gc3JjX3ggLyBoc3ViOwo+IEBAIC0zNTY1LDcgKzM1NjUsNyBAQCBpbnQgc2ts X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJ cmV0dXJuIDA7Cj4gIAo+ICAJLyoKPiBAQCAtMzY4OSw3ICszNjg5LDcgQEAgc3RhdGljIHUzMiBp OXh4X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFw aS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUt Pmh3LnJvdGF0aW9uOwo+ICAJdTMyIGRzcGNudHI7Cj4gQEAgLTM3NDYsNyArMzc0Niw3IEBAIHN0 YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBzcmNf eCwgc3JjX3ksIHNyY193Owo+ICAJdTMyIG9mZnNldDsKPiBAQCAtMzc1NiwxMiArMzc1NiwxMiBA QCBpbnQgaTl4eF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKCFw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNp YmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+ ICsJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsK PiArCXNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2Owo+ICsJc3JjX3kgPSBw bGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7Cj4gIAo+ICAJLyogVW5kb2N1bWVudGVkIGhh cmR3YXJlIGxpbWl0IG9uIGk5NjUvZzR4L3Zsdi9jaHYgKi8KPiAgCWlmIChIQVNfR01DSChkZXZf cHJpdikgJiYgZmItPmZvcm1hdC0+Y3BwWzBdID09IDggJiYgc3JjX3cgPiAyMDQ4KQo+IEBAIC0z Nzc5LDE0ICszNzc5LDE0IEBAIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCSAqIFB1dCB0aGUgZmluYWwgY29vcmRp bmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMKPiAgCSAqIGNvb3JkaW5hdGUgY2hlY2tzIHdpbGwg c2VlIHRoZSByaWdodCB2YWx1ZXMuCj4gIAkgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZV90bygm cGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlX3RvKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMsCj4gIAkJCSAgICAgIHNyY194IDw8IDE2LCBzcmNfeSA8PCAxNik7Cj4g IAo+ICAJLyogSFNXL0JEVyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAg CWlmICghSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpIHsK PiAgCQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4g LQkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7Cj4gLQkJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5z cmMpID4+IDE2Owo+ICsJCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMpID4+IDE2Owo+ICsJCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVf Uk9UQVRFXzE4MCkgewo+ICAJCQlzcmNfeCArPSBzcmNfdyAtIDE7Cj4gQEAgLTM4MjMsMTQgKzM4 MjMsMTQgQEAgc3RhdGljIGludAo+ICBpOXh4X3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCWludCByZXQ7 Cj4gIAo+ICAJcmV0ID0gY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKHBsYW5lX3N0YXRlKTsKPiAg CWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJ CSAgJmNydGNfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FM SU5HLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMzg0Myw3 ICszODQzLDcgQEAgaTl4eF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUp Cj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3Jk aW5hdGVzKHBsYW5lX3N0YXRlKTsKPiBAQCAtMzg2NCwxMCArMzg2NCwxMCBAQCBzdGF0aWMgdm9p ZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdTMyIGxp bmVhcl9vZmZzZXQ7Cj4gIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ ICAJaW50IHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAtCWludCBjcnRjX3gg PSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LnkxOwo+IC0JaW50IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7 Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJaW50IGNydGNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJaW50IGNydGNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXVuc2lnbmVk IGxvbmcgaXJxZmxhZ3M7Cj4gIAl1MzIgZHNwYWRkcl9vZmZzZXQ7Cj4gIAl1MzIgZHNwY250cjsK PiBAQCAtNDIyMSw3ICs0MjIxLDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4g KwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQg aW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJY29uc3Qgc3RydWN0 IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiBA QCAtNDI3Nyw5ICs0Mjc3LDkgQEAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK PiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxh bmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+ICAKPiAg CXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1NQV9ESVNBQkxFOwo+IEBA IC01NjIzLDExICs1NjIzLDExIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lID0KPiAtCQl0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7Cj4gKwkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9wbGFuZS0+YmFz ZS5kZXYpOwo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7Cj4gIAlpbnQgcmV0Owo+IC0JYm9vbCBmb3JjZV9kZXRhY2ggPSAhZmIgfHwgIXBsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGU7Cj4gKwlib29sIGZvcmNlX2RldGFjaCA9ICFmYiB8fCAhcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZTsKPiAgCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKPiAgCj4g IAkvKiBQcmUtZ2VuMTEgYW5kIFNEUiBwbGFuZXMgYWx3YXlzIG5lZWQgYSBzY2FsZXIgZm9yIHBs YW5hciBmb3JtYXRzLiAqLwo+IEBAIC01NjM4LDEwICs1NjM4LDEwIEBAIHN0YXRpYyBpbnQgc2ts X3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCBmb3JjZV9kZXRhY2gsCj4g IAkJCQlkcm1fcGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKPiAgCQkJCSZwbGFuZV9z dGF0ZS0+c2NhbGVyX2lkLAo+IC0JCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTYsCj4gLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNy YykgPj4gMTYsCj4gLQkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwK PiAtCQkJCWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiArCQkJCWRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCj4gKwkJCQlkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCksCj4gIAkJCQlmYiA/IGZiLT5mb3JtYXQgOiBOVUxMLCBuZWVk X3NjYWxlcik7Cj4gIAo+ICAJaWYgKHJldCB8fCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkIDwgMCkK PiBAQCAtNjA1Nyw3ICs2MDU3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAkJICogU28gZGlz YWJsZSB1bmRlcnJ1biByZXBvcnRpbmcgYmVmb3JlIGFsbCB0aGUgcGxhbmVzIGdldCBkaXNhYmxl ZC4KPiAgCQkgKi8KPiAgCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJpbWFyeV9z dGF0ZS0+dmlzaWJsZSAmJgo+IC0JCSAgICAobW9kZXNldCB8fCAhbmV3X3ByaW1hcnlfc3RhdGUt PmJhc2UudmlzaWJsZSkpCj4gKwkJICAgIChtb2Rlc2V0IHx8ICFuZXdfcHJpbWFyeV9zdGF0ZS0+ dWFwaS52aXNpYmxlKSkKPiAgCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ICAJfQo+ICAKPiBAQCAtNjE0NCw3ICs2 MTQ0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4gIAkJaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFu ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAKPiAtCQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gKwkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQlmYl9i aXRzIHw9IHBsYW5lLT5mcm9udGJ1ZmZlcl9iaXQ7Cj4gIAl9Cj4gIAo+IEBAIC03MTUzLDcgKzcx NTMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUgPQo+ICAJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4g IAo+IC0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGludGVs X2NydGMsIHBsYW5lKTsKPiAgCX0KPiAgCj4gQEAgLTEwNzI4LDcgKzEwNzI4LDcgQEAgc3RhdGlj IGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IHN0YXRpYyB1MzIgaW50ZWxfY3Vyc29yX2Jhc2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRv X2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWNvbnN0IHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJdTMyIGJhc2U7 Cj4gQEAgLTEwNzQzLDggKzEwNzQzLDggQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGlj IHUzMiBpbnRlbF9jdXJzb3JfcG9zaXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7 Cj4gLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiArCWludCB4ID0gcGxhbmVf c3RhdGUtPnVhcGkuZHN0LngxOwo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7 Cj4gIAl1MzIgcG9zID0gMDsKPiAgCj4gIAlpZiAoeCA8IDApIHsKPiBAQCAtMTA3NjUsOSArMTA3 NjUsOSBAQCBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jf c2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPQo+IC0JCSZwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZpZzsKPiAtCWludCB3aWR0aCA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQkmcGxhbmVfc3RhdGUtPnVh cGkucGxhbmUtPmRldi0+bW9kZV9jb25maWc7Cj4gKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiArCWludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJcmV0dXJuIHdpZHRoID4gMCAmJiB3 aWR0aCA8PSBjb25maWctPmN1cnNvcl93aWR0aCAmJgo+ICAJCWhlaWdodCA+IDAgJiYgaGVpZ2h0 IDw9IGNvbmZpZy0+Y3Vyc29yX2hlaWdodDsKPiBAQCAtMTA3NzYsNyArMTA3NzYsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICBzdGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZS0+ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYp Owo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ ICAJaW50IHNyY194LCBzcmNfeTsKPiAgCXUzMiBvZmZzZXQ7Cj4gQEAgLTEwNzg2LDExICsxMDc4 NiwxMSBAQCBzdGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7 Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXNyY194ID0gcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+IC0Jc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5z cmMueTEgPj4gMTY7Cj4gKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsK PiArCXNyY195ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ICAKPiAgCWludGVs X2FkZF9mYl9vZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gIAlvZmZz ZXQgPSBpbnRlbF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KCZzcmNfeCwgJnNyY195LAo+ IEBAIC0xMDgwNSwxNCArMTA4MDUsMTQgQEAgc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tf c3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJICogUHV0 IHRoZSBmaW5hbCBjb29yZGluYXRlcyBiYWNrIHNvIHRoYXQgdGhlIHNyYwo+ICAJICogY29vcmRp bmF0ZSBjaGVja3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KPiAgCSAqLwo+IC0JZHJtX3Jl Y3RfdHJhbnNsYXRlX3RvKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwlkcm1fcmVjdF90cmFu c2xhdGVfdG8oJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKPiAgCQkJICAgICAgc3JjX3ggPDwgMTYs IHNyY195IDw8IDE2KTsKPiAgCj4gIAkvKiBJTEsrIGRvIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBo YXJkd2FyZSAqLwo+ICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSAmJiByb3RhdGlvbiAmIERSTV9N T0RFX1JPVEFURV8xODApIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAtCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY19oID0g ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCQlv ZmZzZXQgKz0gKHNyY19oICogc3JjX3cgLSAxKSAqIGZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCX0K PiBAQCAtMTA4MzUsNyArMTA4MzUsNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgm cGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFu ZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGks Cj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCQkgIERSTV9Q TEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMTA4NDQsMTQgKzEwODQ0LDE0IEBAIHN0YXRp YyBpbnQgaW50ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJLyogVXNlIHRoZSB1bmNsaXBwZWQgc3JjL2Rz dCByZWN0YW5nbGVzLCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCj4gLQlwbGFuZV9zdGF0ZS0+ YmFzZS5zcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKCZwbGFuZV9zdGF0ZS0+YmFzZSk7Cj4gLQlw bGFuZV9zdGF0ZS0+YmFzZS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdCgmcGxhbmVfc3RhdGUt PmJhc2UpOwo+ICsJcGxhbmVfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygm cGxhbmVfc3RhdGUtPnVhcGkpOwo+ICsJcGxhbmVfc3RhdGUtPnVhcGkuZHN0ID0gZHJtX3BsYW5l X3N0YXRlX2Rlc3QoJnBsYW5lX3N0YXRlLT51YXBpKTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jdXJz b3JfY2hlY2tfc3VyZmFjZShwbGFuZV9zdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiBy ZXQ7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGludGVs X3BsYW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7Cj4gQEAgLTEwODg5LDcg KzEwODg5LDcgQEAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICBzdGF0aWMgYm9vbCBpODQ1X2N1cnNvcl9z aXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ ICsJaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4g IAo+ICAJLyoKPiAgCSAqIDg0NWcvODY1ZyBhcmUgb25seSBsaW1pdGVkIGJ5IHRoZSB3aWR0aCBv ZiB0aGVpciBjdXJzb3JzLAo+IEBAIC0xMDkxNSwxMiArMTA5MTUsMTIgQEAgc3RhdGljIGludCBp ODQ1X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CS8qIENoZWNrIGZvciB3aGljaCBjdXJzb3IgdHlwZXMgd2Ugc3VwcG9ydCAqLwo+ICAJaWYgKCFp ODQ1X2N1cnNvcl9zaXplX29rKHBsYW5lX3N0YXRlKSkgewo+ICAJCURSTV9ERUJVRygiQ3Vyc29y IGRpbWVuc2lvbiAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAo+IC0JCQkgIGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+IC0JCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPmJhc2UuZHN0KSk7Cj4gKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51 YXBpLmRzdCksCj4gKwkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3Qp KTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlXQVJOX09OKHBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUgJiYKPiArCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAm Jgo+ICAJCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5zdHJpZGUgIT0gZmItPnBpdGNoZXNb MF0pOwo+ICAKPiAgCXN3aXRjaCAoZmItPnBpdGNoZXNbMF0pIHsKPiBAQCAtMTA5NDgsOSArMTA5 NDgsOSBAQCBzdGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKPiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIHNpemUgPSAwOwo+ ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUgJiYgcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JCXVuc2lnbmVkIGludCBoZWln aHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlpZiAocGxh bmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICsJCXVuc2lnbmVkIGlu dCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJCXVu c2lnbmVkIGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRz dCk7Cj4gIAo+ICAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKPiAgCQkJaTg0NV9jdXJzb3Jf Y3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gQEAgLTExMDQ2LDEzICsxMTA0NiwxMyBAQCBzdGF0aWMg dTMyIGk5eHhfY3Vyc29yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19p OTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAl1MzIgY250bCA9IDA7Cj4gIAo+ICAJaWYgKElTX0dF TihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAgCQljbnRsIHw9IE1D VVJTT1JfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+IC0Jc3dpdGNoIChkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSkgewo+ICsJc3dpdGNoIChkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KSkgewo+ICAJY2FzZSA2NDoKPiAgCQljbnRsIHw9IE1DVVJT T1JfTU9ERV82NF9BUkdCX0FYOwo+ICAJCWJyZWFrOwo+IEBAIC0xMTA2Myw3ICsxMTA2Myw3IEBA IHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICAJCWNudGwgfD0gTUNVUlNPUl9NT0RFXzI1Nl9BUkdCX0FYOwo+ICAJ CWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UoZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLmRzdCkpOwo+ICsJCU1JU1NJTkdfQ0FTRShkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+IEBAIC0x MTA3Niw5ICsxMTA3Niw5IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBpOXh4X2N1cnNv cl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShw bGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lLT5kZXYpOwo+ICsJaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT51YXBpLmRzdCk7Cj4gKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCWlmICghaW50ZWxfY3Vyc29yX3NpemVfb2socGxhbmVf c3RhdGUpKQo+ICAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTExMTQsNyArMTExMTQsNyBAQCBzdGF0 aWMgYm9vbCBpOXh4X2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gQEAgLTExMTMx LDE5ICsxMTEzMSwxOSBAQCBzdGF0aWMgaW50IGk5eHhfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0 eXBlcyB3ZSBzdXBwb3J0ICovCj4gIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVfb2socGxhbmVfc3Rh dGUpKSB7Cj4gIAkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5vdCBzdXBwb3J0 ZWRcbiIsCj4gLQkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCj4g LQkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKPiArCQkJICBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKPiArCQkJICBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCkpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJ fQo+ICAKPiAtCVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJV0FSTl9P TihwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkJcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lWzBdLnN0cmlkZSAhPSBmYi0+cGl0Y2hlc1swXSk7Cj4gIAo+ICAJaWYgKGZiLT5waXRjaGVz WzBdICE9Cj4gLQkgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkgKiBm Yi0+Zm9ybWF0LT5jcHBbMF0pIHsKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgewo+ICAJCURSTV9ERUJVR19LTVMoIklu dmFsaWQgY3Vyc29yIHN0cmlkZSAoJXUpIChjdXJzb3Igd2lkdGggJWQpXG4iLAo+ICAJCQkgICAg ICBmYi0+cGl0Y2hlc1swXSwKPiAtCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLmRzdCkpOwo+ICsJCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVh cGkuZHN0KSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC0xMTE1OCw3ICsx MTE1OCw3IEBAIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkgKiBSZWZ1c2UgdGhlIHB1dCB0aGUgY3Vyc29yIGludG8g dGhhdCBjb21wcm9taXNlZCBwb3NpdGlvbi4KPiAgCSAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9DICYmCj4gLQkgICAgcGxhbmVfc3RhdGUtPmJhc2Uu dmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7Cj4gKwkgICAgcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDEgPCAwKSB7Cj4g IAkJRFJNX0RFQlVHX0tNUygiQ0hWIGN1cnNvciBDIG5vdCBhbGxvd2VkIHRvIHN0cmFkZGxlIHRo ZSBsZWZ0IHNjcmVlbiBlZGdlXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAt MTExNzcsOSArMTExNzcsOSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAs IGZiY19jdGwgPSAwOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxh bmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIHdp ZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQkJdW5zaWdu ZWQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJ aWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKPiArCQl1bnNp Z25lZCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJ CXVuc2lnbmVkIGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KTsKPiAgCj4gIAkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGwgfAo+ICAJCQlpOXh4X2N1cnNvcl9j dGxfY3J0YyhjcnRjX3N0YXRlKTsKPiBAQCAtMTE3MTcsNyArMTE3MTcsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1 ciwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ldykKPiAgewo+ICAJLyogVXBk YXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4gKi8KPiAtCWlmIChuZXct PmJhc2UudmlzaWJsZSAhPSBjdXItPmJhc2UudmlzaWJsZSkKPiArCWlmIChuZXctPnVhcGkudmlz aWJsZSAhPSBjdXItPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlpZiAo IWN1ci0+aHcuZmIgfHwgIW5ldy0+aHcuZmIpCj4gQEAgLTExNzI1LDEwICsxMTcyNSwxMCBAQCBz dGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmN1ciwKPiAgCj4gIAlpZiAoY3VyLT5ody5mYi0+bW9kaWZpZXIgIT0gbmV3LT5ody5m Yi0+bW9kaWZpZXIgfHwKPiAgCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRp b24gfHwKPiAtCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNyYykgIT0gZHJtX3JlY3Rf d2lkdGgoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPmJh c2Uuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJt X3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2Uu ZHN0KSB8fAo+IC0JICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT5iYXNlLmRzdCkgIT0gZHJtX3Jl Y3RfaGVpZ2h0KCZjdXItPmJhc2UuZHN0KSkKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT51 YXBpLnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+dWFwaS5zcmMpIHx8Cj4gKwkgICAgZHJt X3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFw aS5zcmMpIHx8Cj4gKwkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+dWFwaS5kc3QpICE9IGRybV9y ZWN0X3dpZHRoKCZjdXItPnVhcGkuZHN0KSB8fAo+ICsJICAgIGRybV9yZWN0X2hlaWdodCgmbmV3 LT51YXBpLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPnVhcGkuZHN0KSkKPiAgCQlyZXR1 cm4gdHJ1ZTsKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTExNzM2LDEwICsxMTczNiwxMCBA QCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKmN1ciwKPiAgCj4gIHN0YXRpYyBib29sIG5lZWRzX3NjYWxpbmcoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0JaW50IHNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgc3JjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgZHN0X3cgPSBkcm1fcmVj dF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0KTsKPiAtCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdo dCgmc3RhdGUtPmJhc2UuZHN0KTsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0 ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0 ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRl LT51YXBpLmRzdCk7Cj4gKwlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT51YXBp LmRzdCk7Cj4gIAo+ICAJcmV0dXJuIChzcmNfdyAhPSBkc3RfdyB8fCBzcmNfaCAhPSBkc3RfaCk7 Cj4gIH0KPiBAQCAtMTE3NTAsNyArMTE3NTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2Nh bGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAo+ ICAJCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOwo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWJvb2wg bW9kZV9jaGFuZ2VkID0gbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKTsKPiAgCWJvb2wgd2FzX2Ny dGNfZW5hYmxlZCA9IG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gQEAgLTExNzY0LDggKzEx NzY0LDggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0K PiAgCj4gLQl3YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOwo+IC0J dmlzaWJsZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwl3YXNfdmlzaWJsZSA9IG9s ZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwo+ICsJdmlzaWJsZSA9IHBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGU7Cj4gIAo+ICAJaWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5fT04od2Fz X3Zpc2libGUpKQo+ICAJCXdhc192aXNpYmxlID0gZmFsc2U7Cj4gQEAgLTExNzgxLDcgKzExNzgx LDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCSAqIG9ubHkgY29tYmluZSB0aGUgcmVz dWx0cyBmcm9tIGFsbCBwbGFuZXMgaW4gdGhlIGN1cnJlbnQgcGxhY2U/Cj4gIAkgKi8KPiAgCWlm ICghaXNfY3J0Y19lbmFibGVkKSB7Cj4gLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IHZp c2libGUgPSBmYWxzZTsKPiArCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZSA9 IGZhbHNlOwo+ICAJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQp Owo+ICAJCWNydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKPiAgCQljcnRjX3N0 YXRlLT5taW5fY2RjbGtbcGxhbmUtPmlkXSA9IDA7Cj4gQEAgLTExOTQxLDcgKzExOTQxLDcgQEAg c3RhdGljIGludCBpY2xfY2hlY2tfbnYxMl9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwbGFuZV9zdGF0ZS0+cGxhbmFy X2xpbmtlZF9wbGFuZSA9IE5VTEw7Cj4gLQkJaWYgKHBsYW5lX3N0YXRlLT5wbGFuYXJfc2xhdmUg JiYgIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiArCQlpZiAocGxhbmVfc3RhdGUtPnBs YW5hcl9zbGF2ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICAJCQljcnRjX3N0 YXRlLT5hY3RpdmVfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKPiAgCQkJY3J0Y19zdGF0ZS0+ dXBkYXRlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKPiAgCQl9Cj4gQEAgLTEyMzU1LDE0ICsx MjM1NSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3V0cHV0X2Zvcm1hdHMoZW51bSBpbnRlbF9v dXRwdXRfZm9ybWF0IGZvcm1hdCkKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGxhbmVf c3RhdGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBkcm1fZm9ybWF0X25h bWVfYnVmIGZvcm1hdF9uYW1lOwo+ICAKPiAgCWlmICghZmIpIHsKPiAgCQlEUk1fREVCVUdfS01T KCJbUExBTkU6JWQ6JXNdIGZiOiBbTk9GQl0sIHZpc2libGU6ICVzXG4iLAo+ICAJCQkgICAgICBw bGFuZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAo+IC0JCQkgICAgICB5ZXNubyhw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSk7Cj4gKwkJCSAgICAgIHllc25vKHBsYW5lX3N0YXRl LT51YXBpLnZpc2libGUpKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IEBAIC0xMjM3MCwxMyAr MTIzNzAsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJCSAgICAgIHBsYW5lLT5iYXNl LmJhc2UuaWQsIHBsYW5lLT5iYXNlLm5hbWUsCj4gIAkJICAgICAgZmItPmJhc2UuaWQsIGZiLT53 aWR0aCwgZmItPmhlaWdodCwKPiAgCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3Jt YXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1lKSwKPiAtCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlKSk7Cj4gKwkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZSkpOwo+ICAJRFJNX0RFQlVHX0tNUygiXHRyb3RhdGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwK PiAgCQkgICAgICBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb24sIHBsYW5lX3N0YXRlLT5zY2FsZXJf aWQpOwo+IC0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAocGxhbmVfc3Rh dGUtPnVhcGkudmlzaWJsZSkKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNyYzogIiBEUk1fUkVDVF9G UF9GTVQgIiBkc3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCj4gLQkJCSAgICAgIERSTV9SRUNUX0ZQ X0FSRygmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSwKPiAtCQkJICAgICAgRFJNX1JFQ1RfQVJHKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKPiArCQkJICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMpLAo+ICsJCQkgICAgICBEUk1fUkVDVF9BUkcoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29u ZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiBAQCAtMTM1 ODAsNyArMTM1ODAsNyBAQCBpbnRlbF92ZXJpZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRl LCBwbGFuZSwKPiAgCQkJCQkgIHBsYW5lX3N0YXRlLCBpKQo+ICAJCWFzc2VydF9wbGFuZShwbGFu ZSwgcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAo+IC0JCQkgICAgIHBsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUpOwo+ICsJCQkgICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpOwo+ICB9 Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC0xNTA0Miw3ICsxNTA0Miw3IEBAIHN0YXRpYyB2b2lk IGFkZF9ycHNfYm9vc3RfYWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4g IHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfcGluX2ZiKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp Owo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiBAQCAtMTUxMDcsNyArMTUxMDcsNyBAQCBpbnRlbF9w cmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPQo+ICAJCXRvX2ludGVsX3BsYW5lX3N0YXRl KF9uZXdfcGxhbmVfc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxf c3RhdGUgPQo+IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPmJhc2Uu c3RhdGUpOwo+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPnVhcGku c3RhdGUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw bGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0 YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9m Yl9vYmooZmIpOwo+IEBAIC0xNTE0MCw5ICsxNTE0MCw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChuZXdf cGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpIHsgLyogZXhwbGljaXQgZmVuY2luZyAqLwo+ICsJaWYg KG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBleHBsaWNpdCBmZW5jaW5nICovCj4g IAkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoJmludGVsX3N0YXRlLT5jb21t aXRfcmVhZHksCj4gLQkJCQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UsCj4gKwkJ CQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UsCj4gIAkJCQkJCSAgICBJOTE1X0ZF TkNFX1RJTUVPVVQsCj4gIAkJCQkJCSAgICBHRlBfS0VSTkVMKTsKPiAgCQlpZiAocmV0IDwgMCkK PiBAQCAtMTUxNjUsNyArMTUxNjUsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICAJZmJfb2JqX2J1bXBfcmVuZGVyX3ByaW9yaXR5KG9iaik7Cj4g IAlpbnRlbF9mcm9udGJ1ZmZlcl9mbHVzaChvYmotPmZyb250YnVmZmVyLCBPUklHSU5fRElSVFlG Qik7Cj4gIAo+IC0JaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpIHsgLyogaW1wbGlj aXQgZmVuY2luZyAqLwo+ICsJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UpIHsgLyog aW1wbGljaXQgZmVuY2luZyAqLwo+ICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ICAKPiAg CQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKCZpbnRlbF9zdGF0ZS0+Y29t bWl0X3JlYWR5LAo+IEBAIC0xNTE4Myw3ICsxNTE4Myw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAgCQlhZGRf cnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCj4gLQkJCQkJ ICAgbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlKTsKPiArCQkJCQkgICBuZXdfcGxhbmVfc3Rh dGUtPnVhcGkuZmVuY2UpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE1MjE2LDcgKzE1MjE2LDcg QEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KPiAgCQl0b19pbnRlbF9w bGFuZV9zdGF0ZShfb2xkX3BsYW5lX3N0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0 YXRlLT5iYXNlLnN0YXRlKTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0 YXRlLT51YXBpLnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmRldik7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5ycHNfaW50ZXJh Y3RpdmUpIHsKPiBAQCAtMTUzNDgsOCArMTUzNDgsOCBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkgKiB0aGUgcGxhbmUuICBUaGlzIHBy ZXZlbnRzIG91ciBhc3luYyB1cGRhdGUncyBjaGFuZ2VzIGZyb20gZ2V0dGluZwo+ICAJICogb3Zl cnJpZGRlbiBieSBhIHByZXZpb3VzIHN5bmNocm9ub3VzIHVwZGF0ZSdzIHN0YXRlLgo+ICAJICov Cj4gLQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdCAmJgo+IC0JICAgICF0cnlfd2Fp dF9mb3JfY29tcGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdC0+aHdfZG9uZSkp Cj4gKwlpZiAob2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdCAmJgo+ICsJICAgICF0cnlfd2Fp dF9mb3JfY29tcGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdC0+aHdfZG9uZSkp Cj4gIAkJZ290byBzbG93Owo+ICAKPiAgCS8qCj4gQEAgLTE3MTU1LDcgKzE3MTU1LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gIAkJCQl0 b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JCQlpZiAocGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZSAmJgo+ICAJCQkgICAgcGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQo+ICAJCQkJaW50ZWxfcGxhbmVfZGlzYWJsZV9ub2F0b21pYyhjcnRjLCBwbGFuZSk7Cj4g IAkJfQo+IEBAIC0xNzQ4NiwxNCArMTc0ODYsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNl dF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCSAqIEZJWE1F IGRvbid0IGhhdmUgdGhlIGZiIHlldCwgc28gY2FuJ3QKPiAgCQkJICogdXNlIGludGVsX3BsYW5l X2RhdGFfcmF0ZSgpIDooCj4gIAkJCSAqLwo+IC0JCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKPiArCQkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJCQljcnRjX3N0 YXRlLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9Cj4gIAkJCQkJNCAqIGNydGNfc3RhdGUtPnBpeGVs X3JhdGU7Cj4gIAkJCS8qCj4gIAkJCSAqIEZJWE1FIGRvbid0IGhhdmUgdGhlIGZiIHlldCwgc28g Y2FuJ3QKPiAgCQkJICogdXNlIHBsYW5lLT5taW5fY2RjbGsoKSA6KAo+ICAJCQkgKi8KPiAtCQkJ aWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgJiYgcGxhbmUtPm1pbl9jZGNsaykgewo+ICsJ CQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJiBwbGFuZS0+bWluX2NkY2xrKSB7Cj4g IAkJCQlpZiAoY3J0Y19zdGF0ZS0+ZG91YmxlX3dpZGUgfHwKPiAgCQkJCSAgICBJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCQkJCWNydGNf c3RhdGUtPm1pbl9jZGNsa1twbGFuZS0+aWRdID0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZmJjLmMKPiBpbmRleCAzZWE4ZDAxMGRiNmMuLjkyYzdlYjI0MzU1OSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwo+IEBAIC00MzAsNyArNDMw LDcgQEAgc3RhdGljIGJvb2wgbXVsdGlwbGVfcGlwZXNfb2soc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAlpZiAoIW5vX2ZiY19vbl9tdWx0aXBsZV9waXBlcyhkZXZfcHJpdikpCj4gIAkJcmV0 dXJuIHRydWU7Cj4gIAo+IC0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAo cGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlmYmMtPnZpc2libGVfcGlwZXNfbWFzayB8 PSAoMSA8PCBwaXBlKTsKPiAgCWVsc2UKPiAgCQlmYmMtPnZpc2libGVfcGlwZXNfbWFzayAmPSB+ KDEgPDwgcGlwZSk7Cj4gQEAgLTY3NywxMiArNjc3LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2Zi Y191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkgKiB0aGUg OTAvMjcwIGRlZ3JlZSBwbGFuZSByb3RhdGlvbiBjYXNlcyAodG8gbWF0Y2ggdGhlCj4gIAkgKiBH VFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4K PiAgCSAqLwo+IC0JY2FjaGUtPnBsYW5lLnNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQljYWNoZS0+cGxhbmUuc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQljYWNoZS0+cGxhbmUudmlz aWJsZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwljYWNoZS0+cGxhbmUuc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCWNhY2hl LT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsKPiArCWNhY2hlLT5wbGFuZS52aXNpYmxlID0gcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZTsKPiAgCWNhY2hlLT5wbGFuZS5hZGp1c3RlZF94ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzBdLng7Cj4gIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS55Owo+IC0JY2FjaGUtPnBsYW5lLnkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEg Pj4gMTY7Cj4gKwljYWNoZS0+cGxhbmUueSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAx NjsKPiAgCj4gIAljYWNoZS0+cGxhbmUucGl4ZWxfYmxlbmRfbW9kZSA9IHBsYW5lX3N0YXRlLT5o dy5waXhlbF9ibGVuZF9tb2RlOwo+ICAKPiBAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBpbnRl bF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CWlmICghcGxhbmUtPmhhc19mYmMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwkJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl KQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRf bmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfb3ZlcmxheS5jCj4gaW5kZXggNDZlM2Q2Y2Y1OTc2Li44Y2ZiNzg1ZTc2MWMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYwo+ IEBAIC02NjgsNyArNjY4LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2NvbG9ya2V5KHN0cnVjdCBp bnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAJaWYgKG92ZXJsYXktPmNvbG9yX2tleV9lbmFibGVk KQo+ICAJCWZsYWdzIHw9IERTVF9LRVlfRU5BQkxFOwo+ICAKPiAtCWlmIChzdGF0ZS0+YmFzZS52 aXNpYmxlKQo+ICsJaWYgKHN0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJZm9ybWF0ID0gc3RhdGUt Pmh3LmZiLT5mb3JtYXQtPmZvcm1hdDsKPiAgCj4gIAlzd2l0Y2ggKGZvcm1hdCkgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IGIyMTE2ZDEy MzU0OC4uZWY3NDA5ZjY5NWY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIGludGVsX3BpcGVfdXBk YXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIAo+ICBp bnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAl1 MzIgc3RyaWRlLCBtYXhfc3RyaWRlOwo+IEBAIC0yNTIsNyArMjUyLDcgQEAgaW50IGludGVsX3Bs YW5lX2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQo+ICAJICoga2ljayBpbiBkdWUgdGhlIHBsYW5lIGJlaW5nIGludmlzaWJsZS4KPiAgCSAq Lwo+ICAJaWYgKGludGVsX3BsYW5lX2Nhbl9yZW1hcChwbGFuZV9zdGF0ZSkgJiYKPiAtCSAgICAh cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCSAgICAhcGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAkvKiBGSVhNRSBvdGhlciBjb2xvciBwbGFuZXM/ ICovCj4gQEAgLTI3Myw3ICsyNzMsNyBAQCBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIGludCBpbnRlbF9w bGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Cj4gLQlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+ YmFzZS5zcmM7Cj4gKwlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+dWFwaS5z cmM7Cj4gIAl1MzIgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gsIGhzdWIsIHZzdWI7Cj4gIAli b29sIHJvdGF0ZWQgPSBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5ody5yb3Rh dGlvbik7Cj4gIAo+IEBAIC0zMjgsNyArMzI4LDcgQEAgc2tsX3BsYW5lX3JhdGlvKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gIAkJdW5zaWduZWQgaW50ICpudW0sIHVuc2ln bmVkIGludCAqZGVuKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAKPiAgCWlmIChmYi0+Zm9ybWF0LT5jcHBbMF0gPT0gOCkgewo+IEBAIC0zNDgs NyArMzQ4LDcgQEAgc2tsX3BsYW5lX3JhdGlvKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgaW50IHNrbF9wbGFuZV9taW5fY2RjbGsoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5k ZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCXVuc2lnbmVkIGludCBwaXhlbF9yYXRlID0g Y3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKPiAgCXVuc2lnbmVkIGludCBzcmNfdywgc3JjX2gsIGRz dF93LCBkc3RfaDsKPiAgCXVuc2lnbmVkIGludCBudW0sIGRlbjsKPiBAQCAtMzU5LDEwICszNTks MTAgQEAgc3RhdGljIGludCBza2xfcGxhbmVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAg fHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJZGVuICo9IDI7Cj4gIAo+IC0Jc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCXNyY19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JZHN0 X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiAtCWRzdF9oID0g ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJc3JjX3cgPSBkcm1f cmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXNyY19oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJZHN0X3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiArCWRzdF9oID0gZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCS8qIERvd25zY2FsaW5n IGxpbWl0cyB0aGUgbWF4aW11bSBwaXhlbCByYXRlICovCj4gIAlkc3RfdyA9IG1pbihzcmNfdywg ZHN0X3cpOwo+IEBAIC00MDEsMTkgKzQwMSwxOSBAQCBza2xfcHJvZ3JhbV9zY2FsZXIoc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCWludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2Nh bGVyX2lkOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3NjYWxlciAqc2NhbGVyID0KPiAgCQkmY3J0 Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcnNbc2NhbGVyX2lkXTsKPiAtCWludCBjcnRjX3gg PSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LnkxOwo+IC0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpOwo+IC0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7 Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJdTMyIGNydGNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJdTMyIGNydGNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXUxNiB5X2hw aGFzZSwgdXZfcmdiX2hwaGFzZTsKPiAgCXUxNiB5X3ZwaGFzZSwgdXZfcmdiX3ZwaGFzZTsKPiAg CWludCBoc2NhbGUsIHZzY2FsZTsKPiAgCj4gLQloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2Fs ZSgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAo+IC0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT5iYXNl LmRzdCwKPiArCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKCZwbGFuZV9zdGF0ZS0+dWFw aS5zcmMsCj4gKwkJCQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAo+ICAJCQkJICAgICAg MCwgSU5UX01BWCk7Cj4gLQl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZSgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjLAo+IC0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCwKPiArCXZz Y2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMsCj4gKwkJ CQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAo+ICAJCQkJICAgICAgMCwgSU5UX01BWCk7 Cj4gIAo+ICAJLyogVE9ETzogaGFuZGxlIHN1Yi1waXhlbCBjb29yZGluYXRlcyAqLwo+IEBAIC01 ODQsMTIgKzU4NCwxMiBAQCBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ICAJdTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9w bGFuZV0ub2Zmc2V0Owo+ICAJdTMyIHN0cmlkZSA9IHNrbF9wbGFuZV9zdHJpZGUocGxhbmVfc3Rh dGUsIGNvbG9yX3BsYW5lKTsKPiAgCXUzMiBhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShw bGFuZV9zdGF0ZSwgMSk7Cj4gLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0Lngx Owo+IC0JaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiArCWludCBjcnRj X3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3Rh dGUtPnVhcGkuZHN0LnkxOwo+ICAJdTMyIHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29s b3JfcGxhbmVdLng7Cj4gIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9w bGFuZV0ueTsKPiAtCXUzMiBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFz ZS5zcmMpID4+IDE2Owo+IC0JdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmxp bmtlZCA9IHBsYW5lX3N0YXRlLT5wbGFuYXJfbGlua2VkX3BsYW5lOwo+ICAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1OCBhbHBoYSA9 IHBsYW5lX3N0YXRlLT5ody5hbHBoYSA+PiA4Owo+IEBAIC03NjYsNyArNzY2LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9wbGFuZV9saW5lYXJfZ2FtbWEodTE2IGdhbW1hWzhdKQo+ICBzdGF0aWMgdm9p ZAo+ICBjaHZfdXBkYXRlX2NzYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAg CWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiBAQCAtODI1LDcgKzgyNSw3 IEBAIGNodl91cGRhdGVfY3NjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHN0YXRpYyB2b2lkCj4gIHZsdl91cGRhdGVfY2xyYyhjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiBA QCAtMTAxOSw3ICsxMDE5LDcgQEAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIHN0YXRpYyB2b2lkIHZsdl91 cGRhdGVfZ2FtbWEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0g cGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gQEAgLTEwNTMsMTAgKzEwNTMsMTAgQEAgdmx2X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdTMyIHNwcnN1cmZfb2Zm c2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLm9mZnNldDsKPiAgCXUzMiBsaW5lYXJf b2Zmc2V0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9 ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5k c3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+IC0JdTMy IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JdTMy IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCWlu dCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxh bmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lWzBdLng7Cj4gIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+ICAJ dW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiBAQCAtMTI0NSw4ICsxMjQ1LDggQEAgc3RhdGljIGlu dCBpdmJfc3ByaXRlX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCSAqLwo+ICAJcGl4ZWxfcmF0ZSA9IGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7 Cj4gIAo+IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+ PiAxNjsKPiAtCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7 Cj4gKwlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2 Owo+ICsJZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAg Cj4gIAlpZiAoc3JjX3cgIT0gZHN0X3cpCj4gIAkJaXZiX3BsYW5lX3JhdGlvX3NjYWxpbmcoY3J0 Y19zdGF0ZSwgcGxhbmVfc3RhdGUsICZudW0sICZkZW4pOwo+IEBAIC0xMzIwLDcgKzEzMjAsNyBA QCBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyBib29sIGl2Yl9uZWVkX3Nwcml0ZV9nYW1tYShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAKPiAgCXJldHVybiBmYi0+Zm9ybWF0LT5jcHBbMF0gPT0gOCAmJgo+IEBAIC0x MzMxLDcgKzEzMzEsNyBAQCBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK PiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25l ZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ IEBAIC0xNDIyLDcgKzE0MjIsNyBAQCBzdGF0aWMgdm9pZCBpdmJfc3ByaXRlX2xpbmVhcl9nYW1t YShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICAKPiAgc3Rh dGljIHZvaWQgaXZiX3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gIAl1MTYgZ2FtbWFbMThdOwo+ IEBAIC0xNDYxLDE0ICsxNDYxLDE0IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiAgCXUzMiBzcHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS5vZmZzZXQ7Cj4gIAl1MzIgbGluZWFyX29mZnNldDsKPiAgCWNvbnN0IHN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gLQlp bnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwo+IC0JaW50IGNydGNfeSA9IHBs YW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiAtCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiAtCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVh cGkuZHN0LngxOwo+ICsJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKPiAr CXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAr CXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4g IAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ICAJdTMyIHkgPSBwbGFu ZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAtCXUzMiBzcmNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JdTMyIHNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJdTMyIHNyY193ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX2gg PSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gIAl1MzIg c3ByY3RsLCBzcHJzY2FsZSA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAKPiBA QCAtMTU4MSw4ICsxNTgxLDggQEAgc3RhdGljIGludCBnNHhfc3ByaXRlX21pbl9jZGNsayhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXBpeGVsX3JhdGUgPSBj cnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ICAKPiAgCS8qIEhvcml6b250YWwgZG93bnNjYWxpbmcg bGltaXRzIHRoZSBtYXhpbXVtIHBpeGVsIHJhdGUgKi8KPiAtCWhzY2FsZSA9IGRybV9yZWN0X2Nh bGNfaHNjYWxlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gLQkJCQkgICAgICAmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0LAo+ICsJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0 YXRlLT51YXBpLnNyYywKPiArCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCj4gIAkJ CQkgICAgICAwLCBJTlRfTUFYKTsKPiAgCWlmIChoc2NhbGUgPCAweDEwMDAwKQo+ICAJCXJldHVy biBwaXhlbF9yYXRlOwo+IEBAIC0xNjM2LDcgKzE2MzYsNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJp dGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90 YXRpb247Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0g JnBsYW5lX3N0YXRlLT5ja2V5Owo+IEBAIC0xNjk5LDcgKzE2OTksNyBAQCBzdGF0aWMgdTMyIGc0 eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAKPiAgc3RhdGljIHZvaWQgZzR4X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiBAQCAtMTcz MSw3ICsxNzMxLDcgQEAgc3RhdGljIHZvaWQgaWxrX3Nwcml0ZV9saW5lYXJfZ2FtbWEodTE2IGdh bW1hWzE3XSkKPiAgCj4gIHN0YXRpYyB2b2lkIGlsa191cGRhdGVfZ2FtbWEoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7 Cj4gQEAgLTE3NjcsMTQgKzE3NjcsMTQgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ICAJdTMyIGR2c3N1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzBdLm9mZnNldDsKPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ICAJY29uc3Qgc3RydWN0 IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAt CWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0g cGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+IC0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ ICsJdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ ICsJdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsK PiAgCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gIAl1MzIgeSA9IHBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+IC0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQl1MzIgc3JjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCXUz MiBkdnNjbnRyLCBkdnNzY2FsZSA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAK PiBAQCAtMTg4OCw4ICsxODg4LDggQEAgZzR4X3Nwcml0ZV9jaGVja19zY2FsaW5nKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZwbGFuZV9zdGF0ZS0+YmFzZS5zcmM7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9 ICZwbGFuZV9zdGF0ZS0+YmFzZS5kc3Q7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZwbGFuZV9zdGF0ZS0+dWFwaS5zcmM7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9 ICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3Q7Cj4gIAlpbnQgc3JjX3gsIHNyY193LCBzcmNfaCwgY3J0 Y193LCBjcnRjX2g7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSA9Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gQEAgLTE5NDgsNyAr MTk0OCw3IEBAIHN0YXRpYyBpbnQKPiAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4g IAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+ICAJaW50IG1h eF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiBAQCAtMTk2NCw3ICsxOTY0 LDcgQEAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxh bmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkgICZjcnRjX3N0 YXRlLT51YXBpLAo+ICAJCQkJCQkgIG1pbl9zY2FsZSwgbWF4X3NjYWxlLAo+ICAJCQkJCQkgIHRy dWUsIHRydWUpOwo+IEBAIC0xOTc1LDcgKzE5NzUsNyBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4g cmV0Owo+ICAKPiAtCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCWlmICghcGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlyZXQgPSBpbnRl bF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVfc3RhdGUpOwo+IEBAIC0xOTk2LDcg KzE5OTYsNyBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAKPiAgaW50IGNodl9wbGFuZV9jaGVja19yb3RhdGlvbihjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0 YXRlLT5ody5yb3RhdGlvbjsKPiAgCj4gQEAgLTIwMjEsNyArMjAyMSw3IEBAIHZsdl9zcHJpdGVf Y2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxh bmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkgICZjcnRjX3N0 YXRlLT51YXBpLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiAgCQkJ CQkJICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gQEAgLTIwMzMsNyArMjAzMyw3IEBA IHZsdl9zcHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVy biAwOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFu ZV9zdGF0ZSk7Cj4gQEAgLTIwNDgsNyArMjA0OCw3IEBAIHZsdl9zcHJpdGVfY2hlY2soc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2No ZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+IEBAIC0yMTIzLDkgKzIxMjMs OSBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfcwo+ICAJCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2 KTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0 Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwkJdG9faTkx NShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9z dGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLmRzdCk7Cj4gIAlpbnQgcGlwZV9zcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVf c3JjX3c7Cj4gIAo+ICAJLyoKPiBAQCAtMjE1Myw3ICsyMTUzLDcgQEAgc3RhdGljIGludCBza2xf cGxhbmVfY2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3MKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+ aHcucm90YXRpb247Cj4gLQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCS8qIERpc3BsYXkgV0EgIzExMDYgKi8KPiAg CWlmIChkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZvcm1hdCkgJiYgc3Jj X3cgJiAzICYmCj4gQEAgLTIxODUsNyArMjE4NSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX21h eF9zY2FsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyBpbnQg c2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CQkgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IG1pbl9zY2FsZSA9IERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiBAQCAtMjIwMiw3ICsyMjAyLDcgQEAgc3RhdGlj IGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAkJbWF4X3NjYWxlID0gc2tsX3BsYW5lX21heF9zY2FsZShkZXZfcHJpdiwgZmIpOwo+ICAJ fQo+ICAKPiAtCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFu ZV9zdGF0ZS0+YmFzZSwKPiArCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0 YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKPiAgCQkJCQkJICAmY3J0Y19zdGF0ZS0+dWFwaSwKPiAg CQkJCQkJICBtaW5fc2NhbGUsIG1heF9zY2FsZSwKPiAgCQkJCQkJICB0cnVlLCB0cnVlKTsKPiBA QCAtMjIxMyw3ICsyMjEzLDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7 Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IHNrbF9wbGFu ZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwo+IEBAIC0y MjMwLDcgKzIyMzAsNyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAkvKiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4 ZWwgcHJlY2lzaW9uLCBkaXNhYmxlIHBsYW5lIGlmIGludmlzaWJsZSAqLwo+ICAJaWYgKCEocGxh bmVfc3RhdGUtPmh3LmFscGhhID4+IDgpKQo+IC0JCXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUg PSBmYWxzZTsKPiArCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7Cj4gIAo+ICAJ cGxhbmVfc3RhdGUtPmN0bCA9IHNrbF9wbGFuZV9jdGwoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUp Owo+ICAKPiBAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgc3RhdGljIGJvb2wgaGFzX2RzdF9rZXlfaW5f cHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHN0YXRp YyB2b2lkIGludGVsX3BsYW5lX3NldF9ja2V5KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsCj4gIAkJCQkgY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KnNldCkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAlz dHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5 Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCAwYTAxMDNlY2Y3YmMuLjJkMzg5 ZTQzN2U4NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC03ODYsNyArNzg2LDcg QEAgc3RhdGljIGludCBpbnRlbF93bV9udW1fbGV2ZWxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSAgIGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PnVhcGkucGxhbmUpOwo+ICAKPiAgCS8qIEZJWE1FIGNoZWNrIHRoZSAnZW5hYmxlJyBpbnN0ZWFk ICovCj4gIAlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiBAQCAtODAzLDcgKzgwMyw3IEBA IHN0YXRpYyBib29sIGludGVsX3dtX3BsYW5lX3Zpc2libGUoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikK PiAgCQlyZXR1cm4gcGxhbmVfc3RhdGUtPmh3LmZiICE9IE5VTEw7Cj4gIAllbHNlCj4gLQkJcmV0 dXJuIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwkJcmV0dXJuIHBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGU7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfY3J0YyAqc2luZ2xl X2VuYWJsZWRfY3J0YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTEw NzUsNyArMTA3NSw3IEBAIHN0YXRpYyB1MTYgZzR4X2NvbXB1dGVfd20oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJICBpbnQgbGV2ZWwpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+ICAJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9t b2RlOwo+IEBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMgdTE2IGc0eF9jb21wdXRlX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY2xvY2sgPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19o dG90YWw7Cj4gIAo+IC0Jd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KTsKPiArCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7 Cj4gIAo+ICAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpIHsKPiAgCQl3bSA9IGludGVs X3dtX21ldGhvZDIoY2xvY2ssIGh0b3RhbCwgd2lkdGgsIGNwcCwgbGF0ZW5jeSk7Cj4gQEAgLTEx NzQsNyArMTE3NCw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBnNHhfcmF3X3Bs YW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJ CQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJaW50IG51bV9sZXZlbHMgPSBpbnRl bF93bV9udW1fbGV2ZWxzKHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KSk7Cj4gIAllbnVtIHBsYW5l X2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ICAJYm9vbCBkaXJ0eSA9IGZhbHNlOwo+IEBAIC0x NTgxLDcgKzE1ODEsNyBAQCBzdGF0aWMgdTE2IHZsdl9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJCWludCBsZXZlbCkKPiAgewo+IC0J c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5i YXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVz dGVkX21vZGU7Cj4gQEAgLTE3NTEsNyArMTc1MSw3IEBAIHN0YXRpYyBib29sIHZsdl9yYXdfcGxh bmVfd21fc2V0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMg Ym9vbCB2bHZfcmF3X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJZW51bSBw bGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCWludCBudW1fbGV2ZWxzID0gaW50ZWxf d21fbnVtX2xldmVscyh0b19pOTE1KHBsYW5lLT5iYXNlLmRldikpOwo+ICAJaW50IGxldmVsOwo+ IEBAIC0yNDg0LDcgKzI0ODQsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3ByaV93bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAltZXRob2QyID0g aWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwKPiAgCQkJCSBjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAo+IC0JCQkJIGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICsJCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QpLAo+ICAJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKPiAgCj4gIAlyZXR1cm4gbWlu KG1ldGhvZDEsIG1ldGhvZDIpOwo+IEBAIC0yNTEyLDcgKzI1MTIsNyBAQCBzdGF0aWMgdTMyIGls a19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBj cHAsIG1lbV92YWx1ZSk7Cj4gIAltZXRob2QyID0gaWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+ cGl4ZWxfcmF0ZSwKPiAgCQkJCSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRv dGFsLAo+IC0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICsJ CQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAo+ICAJCQkJIGNwcCwg bWVtX3ZhbHVlKTsKPiAgCXJldHVybiBtaW4obWV0aG9kMSwgbWV0aG9kMik7Cj4gIH0KPiBAQCAt MjUzNyw3ICsyNTM3LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9jdXJfd20oY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJcmV0dXJuIGlsa193bV9t ZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gIAkJCSAgICAgIGNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gLQkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICsJCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuZHN0KSwKPiAgCQkJICAgICAgY3BwLCBtZW1fdmFsdWUpOwo+ICB9Cj4gIAo+ IEBAIC0yNTUzLDcgKzI1NTMsOCBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2ZiY193bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAljcHAgPSBwbGFu ZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAKPiAtCXJldHVybiBpbGtfd21fZmJj KHByaV92YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLCBjcHApOwo+ ICsJcmV0dXJuIGlsa193bV9mYmMocHJpX3ZhbCwgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCksCj4gKwkJCSAgY3BwKTsKPiAgfQo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGlu dAo+IEBAIC0zMDk3LDEwICszMDk4LDEwIEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93 bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIAlwaXBlX3dtLT5w aXBlX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gIAlpZiAoc3Byc3RhdGUpIHsK PiAtCQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlOwo+ IC0JCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gc3Byc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ IC0JCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rfd2lk dGgoJnNwcnN0YXRlLT5iYXNlLnNyYykgPj4gMTYgfHwKPiAtCQkJIGRybV9yZWN0X2hlaWdodCgm c3Byc3RhdGUtPmJhc2UuZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5iYXNlLnNy YykgPj4gMTYpOwo+ICsJCXBpcGVfd20tPnNwcml0ZXNfZW5hYmxlZCA9IHNwcnN0YXRlLT51YXBp LnZpc2libGU7Cj4gKwkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+dWFwaS52 aXNpYmxlICYmCj4gKwkJCShkcm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPnVhcGkuZHN0KSAhPSBk cm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPnVhcGkuc3JjKSA+PiAxNiB8fAo+ICsJCQkgZHJtX3Jl Y3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFwaS5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmc3Byc3Rh dGUtPnVhcGkuc3JjKSA+PiAxNik7Cj4gIAl9Cj4gIAo+ICAJdXNhYmxlX2xldmVsID0gbWF4X2xl dmVsOwo+IEBAIC00MDcyLDEwICs0MDczLDEwIEBAIHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50 KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJICoKPiAgCSAq IG4uYi4sIHNyYyBpcyAxNi4xNiBmaXhlZCBwb2ludCwgZHN0IGlzIHdob2xlIGludGVnZXIuCj4g IAkgKi8KPiAtCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykg Pj4gMTY7Cj4gLQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj KSA+PiAxNjsKPiAtCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRz dCk7Cj4gLQlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsK PiArCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7 Cj4gKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAx NjsKPiArCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4g Kwlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCj4g IAlmcF93X3JhdGlvID0gZGl2X2ZpeGVkMTYoc3JjX3csIGRzdF93KTsKPiAgCWZwX2hfcmF0aW8g PSBkaXZfZml4ZWQxNihzcmNfaCwgZHN0X2gpOwo+IEBAIC00MDkwLDE0ICs0MDkxLDE0IEBAIHNr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKPiAgCQkJICAgICBpbnQgY29sb3JfcGxhbmUpCj4gIHsKPiAtCXN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1MzIgZGF0YV9yYXRlOwo+ICAJdTMyIHdpZHRoID0g MCwgaGVpZ2h0ID0gMDsKPiAgCXVpbnRfZml4ZWRfMTZfMTZfdCBkb3duX3NjYWxlX2Ftb3VudDsK PiAgCXU2NCByYXRlOwo+ICAKPiAtCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiAr CWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlp ZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKPiBAQCAtNDExMiw4ICs0MTEzLDggQEAgc2ts X3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiAgCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2Vz ICh0byBtYXRjaCB0aGUKPiAgCSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2Nv dW50IGZvciByb3RhdGlvbiBoZXJlLgo+ICAJICovCj4gLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JaGVpZ2h0ID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCWhlaWdodCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAkvKiBVViBwbGFu ZSBkb2VzIDEvMiBwaXhlbCBzdWItc2FtcGxpbmcgKi8KPiAgCWlmIChjb2xvcl9wbGFuZSA9PSAx KSB7Cj4gQEAgLTQ2MjAsNyArNDYyMSw3IEBAIHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCSAqIHRoZSA5MC8y NzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKPiAgCSAqIEdUVCBt YXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJlLgo+ICAJ ICovCj4gLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+ IDE2Owo+ICsJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsKPiAgCj4gIAlyZXR1cm4gc2tsX2NvbXB1dGVfd21fcGFyYW1zKGNydGNfc3RhdGUsIHdp ZHRoLAo+ICAJCQkJICAgICBmYi0+Zm9ybWF0LCBmYi0+bW9kaWZpZXIsCj4gQEAgLTQ5MDIsNyAr NDkwMyw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2KHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAgICAgY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsK PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7 Cj4gIAlpbnQgcmV0Owo+IEBAIC00OTI4LDcgKzQ5MjksNyBAQCBzdGF0aWMgaW50IHNrbF9idWls ZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgc3RhdGlj IGludCBpY2xfYnVpbGRfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIHsKPiAtCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSktPmlkOwo+ICsJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKS0+aWQ7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAgCS8qIFdhdGVybWFya3MgY2FsY3VsYXRlZCBpbiBtYXN0ZXIgKi8KPiBAQCAtNTkyOCw3 ICs1OTI5LDcgQEAgdm9pZCBnNHhfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gIAkJ aW50IGxldmVsOwo+ICAKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCQlp ZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWZv ciAobGV2ZWwgPSAwOyBsZXZlbCA8IDM7IGxldmVsKyspIHsKPiBAQCAtNjA4Myw3ICs2MDg0LDcg QEAgdm9pZCB2bHZfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gIAkJaW50IGxldmVs Owo+ICAKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCQlpZiAocGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWZvciAobGV2ZWwg PSAwOyBsZXZlbCA8IHdtX3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7Cj4gLS0gCj4gMi4y My4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==