From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 2/3] drm/i915: replace IS_GEN with IS_GEN(..., N) Date: Thu, 6 Dec 2018 12:37:44 +0000 Message-ID: References: <20181206061144.16235-1-lucas.demarchi@intel.com> <20181206061144.16235-3-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8854C6E1B2 for ; Thu, 6 Dec 2018 12:37:49 +0000 (UTC) In-Reply-To: <20181206061144.16235-3-lucas.demarchi@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lucas De Marchi , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA2LzEyLzIwMTggMDY6MTEsIEx1Y2FzIERlIE1hcmNoaSB3cm90ZToKPiBEZWZpbmUgSVNf R0VOKCkgc2ltaWxhcmx5IHRvIG91ciBJU19HRU5fUkFOR0UoKS4gYnV0IHVzZSBnZW4gaW5zdGVh ZCBvZgo+IGdlbl9tYXNrIHRvIGRvIHRoZSBjb21wYXJpc29uLiBOb3cgY2FsbGVycyBjYW4gcGFz cyB0aGVuIGdlbiBhcyBhIHBhcmFtZXRlciwKClNpbmNlIHlvdSBhcmUgY2FsbGluZyBpdCBvdXQg aGVyZSwgSSBhc3N1bWUgdGhlcmUgaXMgc29tZSBnb29kIHJlYXNvbiB0byAKcmVwbGFjZSBnZW5f bWFzayB3aXRoIGdlbj8KClJlZ2FyZHMsCgpUdnJ0a28KCj4gc28gd2UgZG9uJ3QgcmVxdWlyZSBv bmUgbWFjcm8gZm9yIGVhY2ggZ2VuLgo+IAo+IFRoZSBmb2xsb3dpbmcgc3BhdGNoIHdhcyB1c2Vk IHRvIGNvbnZlcnQgdGhlIHVzZXJzIG9mIHRoZXNlIG1hY3JvczoKPiAKPiBAQAo+IGV4cHJlc3Np b24gZTsKPiBAQAo+ICgKPiAtIElTX0dFTjIoZSkKPiArIElTX0dFTihlLCAyKQo+IHwKPiAtIElT X0dFTjMoZSkKPiArIElTX0dFTihlLCAzKQo+IHwKPiAtIElTX0dFTjQoZSkKPiArIElTX0dFTihl LCA0KQo+IHwKPiAtIElTX0dFTjUoZSkKPiArIElTX0dFTihlLCA1KQo+IHwKPiAtIElTX0dFTjYo ZSkKPiArIElTX0dFTihlLCA2KQo+IHwKPiAtIElTX0dFTjcoZSkKPiArIElTX0dFTihlLCA3KQo+ IHwKPiAtIElTX0dFTjgoZSkKPiArIElTX0dFTihlLCA4KQo+IHwKPiAtIElTX0dFTjkoZSkKPiAr IElTX0dFTihlLCA5KQo+IHwKPiAtIElTX0dFTjEwKGUpCj4gKyBJU19HRU4oZSwgMTApCj4gfAo+ IC0gSVNfR0VOMTEoZSkKPiArIElTX0dFTihlLCAxMSkKPiApCj4gCj4gdjI6IHVzZSBJU19HRU4g cmF0aGVyIHRoYW4gR1RfR0VOIGFuZCBjb21wYXJlIHRvIGluZm8uZ2VuIHJhdGhlciB0aGFuCj4g ICAgICB1c2luZyB0aGUgYml0bWFzawo+IAo+IFNpZ25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNo aSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L3ZncHUuYyAgICAgICAgICAgIHwgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfY21kX3BhcnNlci5jICAgICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICAgICAgfCAxNiArKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyAgICAgICAgICAgIHwgMTggKysrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAyOSArKystLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDE0ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMgIHwgMTAgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMgICAgIHwgIDcgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3RpbGluZy5jICAgICB8ICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jICAgICAgfCAxOCArKystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgICAgICAgICAgICB8IDI0ICsrKy0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGVyZi5jICAgICAgICAgICB8ICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N1c3BlbmQuYyAgICAgICAgfCAxMiArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYyAgICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXVkaW8uYyAgICAgICAgIHwgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NkY2xrLmMgICAgICAgICB8IDEwICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y3J0LmMgICAgICAgICAgIHwgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmMgICB8IDE2ICsrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgICAgICAgfCA3NCArKysrKysrKysrKy0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgfCAyNCArKystLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgNCArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICAgIHwgMjIgKysrLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jIHwgIDYgKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jICAgICAgICB8ICAyICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2x2ZHMuYyAgICAgICAgICB8ICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ZlcmxheS5jICAgICAgIHwgMTAgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wYW5lbC5jICAgICAgICAgfCAgOCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BpcGVfY3JjLmMgICAgICB8ICA4ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAgICAgICAgICAgIHwgNjAgKysrKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICAgICAgICAgfCAgNCArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgMjggKysrKy0tLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICA0ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgICAgfCAgNCArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgIHwgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmMgICAgICAgICAgICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuYyAgICAgICAgfCAxOCArKystLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3dvcGNtLmMgICAgICAgICB8ICA0ICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jICAgfCAgNCArLQo+ICAgNDQgZmlsZXMgY2hhbmdl ZCwgMjUxIGluc2VydGlvbnMoKyksIDI2MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC92Z3B1LmMKPiBpbmRleCBjNjI4YmUwNWZiZmUuLmUxYzg2MGY4MGViMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L3ZncHUuYwo+IEBAIC0xNDgsMTAgKzE0OCwxMCBAQCBpbnQgaW50ZWxfZ3Z0X2lu aXRfdmdwdV90eXBlcyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gICAJCWd2dC0+dHlwZXNbaV0u YXZhaWxfaW5zdGFuY2UgPSBtaW4obG93X2F2YWlsIC8gdmdwdV90eXBlc1tpXS5sb3dfbW0sCj4g ICAJCQkJCQkgICBoaWdoX2F2YWlsIC8gdmdwdV90eXBlc1tpXS5oaWdoX21tKTsKPiAgIAo+IC0J CWlmIChJU19HRU44KGd2dC0+ZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZ3Z0LT5kZXZfcHJp diwgOCkpCj4gICAJCQlzcHJpbnRmKGd2dC0+dHlwZXNbaV0ubmFtZSwgIkdWVGdfVjRfJXMiLAo+ ICAgCQkJCQkJdmdwdV90eXBlc1tpXS5uYW1lKTsKPiAtCQllbHNlIGlmIChJU19HRU45KGd2dC0+ ZGV2X3ByaXYpKQo+ICsJCWVsc2UgaWYgKElTX0dFTihndnQtPmRldl9wcml2LCA5KSkKPiAgIAkJ CXNwcmludGYoZ3Z0LT50eXBlc1tpXS5uYW1lLCAiR1ZUZ19WNV8lcyIsCj4gICAJCQkJCQl2Z3B1 X3R5cGVzW2ldLm5hbWUpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfY21kX3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2Vy LmMKPiBpbmRleCA5NTQ3OGRiOTk5OGIuLjMzZThlZWQ2NDQyMyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCj4gQEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lkIGludGVs X2VuZ2luZV9pbml0X2NtZF9wYXJzZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCWludCBjbWRfdGFibGVfY291bnQ7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKCFJU19H RU43KGVuZ2luZS0+aTkxNSkpCj4gKwlpZiAoIUlTX0dFTihlbmdpbmUtPmk5MTUsIDcpKQo+ICAg CQlyZXR1cm47Cj4gICAKPiAgIAlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDM4ZGNlZTFjYTA2Mi4uNTNlM2Y1N2ExM2YzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTA2NCw3ICsxMDY0LDcgQEAg c3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQo+ICAgCj4gICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAgCj4g LQlpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKSB7 Cj4gICAJCXUxNiByZ3Zzd2N0bCA9IEk5MTVfUkVBRDE2KE1FTVNXQ1RMKTsKPiAgIAkJdTE2IHJn dnN0YXQgPSBJOTE1X1JFQUQxNihNRU1TVEFUX0lMSyk7Cj4gICAKPiBAQCAtMTc4NSw3ICsxNzg1 LDcgQEAgc3RhdGljIGludCBpOTE1X2Vtb25fc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqdW51c2VkKQo+ICAgCXVuc2lnbmVkIGxvbmcgdGVtcCwgY2hpcHNldCwgZ2Z4Owo+ICAgCWlu dCByZXQ7Cj4gICAKPiAtCWlmICghSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoIUlTX0dFTihk ZXZfcHJpdiwgNSkpCj4gICAJCXJldHVybiAtRU5PREVWOwo+ICAgCj4gICAJaW50ZWxfcnVudGlt ZV9wbV9nZXQoZGV2X3ByaXYpOwo+IEBAIC0yMDM0LDcgKzIwMzQsNyBAQCBzdGF0aWMgaW50IGk5 MTVfc3dpenpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgIAlzZXFf cHJpbnRmKG0sICJiaXQ2IHN3aXp6bGUgZm9yIFktdGlsaW5nID0gJXNcbiIsCj4gICAJCSAgIHN3 aXp6bGVfc3RyaW5nKGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3kpKTsKPiAgIAo+IC0JaWYg KElTX0dFTjMoZGV2X3ByaXYpIHx8IElTX0dFTjQoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VO KGRldl9wcml2LCAzKSB8fCBJU19HRU4oZGV2X3ByaXYsIDQpKSB7Cj4gICAJCXNlcV9wcmludGYo bSwgIkREQyA9IDB4JTA4eFxuIiwKPiAgIAkJCSAgIEk5MTVfUkVBRChEQ0MpKTsKPiAgIAkJc2Vx X3ByaW50ZihtLCAiRERDMiA9IDB4JTA4eFxuIiwKPiBAQCAtMjExOSwxMiArMjExOSwxMiBAQCBz dGF0aWMgdm9pZCBnZW42X3BwZ3R0X2luZm8oc3RydWN0IHNlcV9maWxlICptLAo+ICAgCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK PiAgIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwg NikpCj4gICAJCXNlcV9wcmludGYobSwgIkdGWF9NT0RFOiAweCUwOHhcbiIsIEk5MTVfUkVBRChH RlhfTU9ERSkpOwo+ICAgCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlk KSB7Cj4gICAJCXNlcV9wcmludGYobSwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+IC0JCWlmIChJ U19HRU43KGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkKPiAgIAkJCXNl cV9wcmludGYobSwgIkdGWF9NT0RFOiAweCUwOHhcbiIsCj4gICAJCQkJICAgSTkxNV9SRUFEKFJJ TkdfTU9ERV9HRU43KGVuZ2luZSkpKTsKPiAgIAkJc2VxX3ByaW50ZihtLCAiUFBfRElSX0JBU0U6 IDB4JTA4eFxuIiwKPiBAQCAtNDI2OCw3ICs0MjY4LDcgQEAgaTkxNV9jYWNoZV9zaGFyaW5nX2dl dCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkYXRhOwo+ICAgCXUzMiBzbnBjcjsKPiAgIAo+IC0JaWYgKCEoSVNfR0VONihkZXZf cHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpKQo+ICsJaWYgKCEoSVNfR0VOKGRldl9wcml2LCA2 KSB8fCBJU19HRU4oZGV2X3ByaXYsIDcpKSkKPiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4gICAKPiAg IAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gQEAgLTQyODgsNyArNDI4OCw3IEBA IGk5MTVfY2FjaGVfc2hhcmluZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwo+ICAgCXUzMiBzbnBjcjsKPiAgIAo+ IC0JaWYgKCEoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpKQo+ICsJaWYg KCEoSVNfR0VOKGRldl9wcml2LCA2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDcpKSkKPiAgIAkJcmV0 dXJuIC1FTk9ERVY7Cj4gICAKPiAgIAlpZiAodmFsID4gMykKPiBAQCAtNDU0NSw3ICs0NTQ1LDcg QEAgc3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQo+ICAgCQljaGVycnl2aWV3X3NzZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNz ZXUpOwo+ICAgCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ICAgCQlicm9h ZHdlbGxfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7Cj4gLQl9IGVsc2UgaWYg KElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOSkp IHsKPiAgIAkJZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYsICZzc2V1KTsKPiAgIAl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKPiAgIAkJZ2VuMTBfc3NldV9k ZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggYjMxMGE4OTdhNGFkLi43N2MwZjk3ZmU3N2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBAQCAtMTMyLDE1ICsxMzIsMTUgQEAgaW50ZWxfcGNoX3R5cGUoY29uc3Qgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCBzaG9ydCBpZCkKPiAgIAlzd2l0 Y2ggKGlkKSB7Cj4gICAJY2FzZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFOgo+ICAgCQlE Uk1fREVCVUdfS01TKCJGb3VuZCBJYmV4IFBlYWsgUENIXG4iKTsKPiAtCQlXQVJOX09OKCFJU19H RU41KGRldl9wcml2KSk7Cj4gKwkJV0FSTl9PTighSVNfR0VOKGRldl9wcml2LCA1KSk7Cj4gICAJ CXJldHVybiBQQ0hfSUJYOwo+ICAgCWNhc2UgSU5URUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQRToK PiAgIAkJRFJNX0RFQlVHX0tNUygiRm91bmQgQ291Z2FyUG9pbnQgUENIXG4iKTsKPiAtCQlXQVJO X09OKCFJU19HRU42KGRldl9wcml2KSAmJiAhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7Cj4gKwkJ V0FSTl9PTighSVNfR0VOKGRldl9wcml2LCA2KSAmJiAhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7 Cj4gICAJCXJldHVybiBQQ0hfQ1BUOwo+ICAgCWNhc2UgSU5URUxfUENIX1BQVF9ERVZJQ0VfSURf VFlQRToKPiAgIAkJRFJNX0RFQlVHX0tNUygiRm91bmQgUGFudGhlclBvaW50IFBDSFxuIik7Cj4g LQkJV0FSTl9PTighSVNfR0VONihkZXZfcHJpdikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikp Owo+ICsJCVdBUk5fT04oIUlTX0dFTihkZXZfcHJpdiwgNikgJiYgIUlTX0lWWUJSSURHRShkZXZf cHJpdikpOwo+ICAgCQkvKiBQYW50aGVyUG9pbnQgaXMgQ1BUIGNvbXBhdGlibGUgKi8KPiAgIAkJ cmV0dXJuIFBDSF9DUFQ7Cj4gICAJY2FzZSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFOgo+ IEBAIC0yMTcsOSArMjE3LDkgQEAgaW50ZWxfdmlydF9kZXRlY3RfcGNoKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiBtYWtlIGFuIGVkdWNhdGVkIGd1ZXNz IGFzIHRvIHdoaWNoIFBDSCBpcyByZWFsbHkgdGhlcmUuCj4gICAJICovCj4gICAKPiAtCWlmIChJ U19HRU41KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQlpZCA9 IElOVEVMX1BDSF9JQlhfREVWSUNFX0lEX1RZUEU7Cj4gLQllbHNlIGlmIChJU19HRU42KGRldl9w cml2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9w cml2LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAgCQlpZCA9IElOVEVMX1BDSF9D UFRfREVWSUNFX0lEX1RZUEU7Cj4gICAJZWxzZSBpZiAoSVNfSFNXX1VMVChkZXZfcHJpdikgfHwg SVNfQkRXX1VMVChkZXZfcHJpdikpCj4gICAJCWlkID0gSU5URUxfUENIX0xQVF9MUF9ERVZJQ0Vf SURfVFlQRTsKPiBAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9tbWlvX3NldHVw KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlpbnQgbW1pb19iYXI7Cj4g ICAJaW50IG1taW9fc2l6ZTsKPiAgIAo+IC0JbW1pb19iYXIgPSBJU19HRU4yKGRldl9wcml2KSA/ IDEgOiAwOwo+ICsJbW1pb19iYXIgPSBJU19HRU4oZGV2X3ByaXYsIDIpID8gMSA6IDA7Cj4gICAJ LyoKPiAgIAkgKiBCZWZvcmUgZ2VuNCwgdGhlIHJlZ2lzdGVycyBhbmQgdGhlIEdUVCBhcmUgYmVo aW5kIGRpZmZlcmVudCBCQVJzLgo+ICAgCSAqIEhvd2V2ZXIsIGZyb20gZ2VuNCBvbndhcmRzLCB0 aGUgcmVnaXN0ZXJzIGFuZCB0aGUgR1RUIGFyZSBzaGFyZWQKPiBAQCAtMTM0MSw3ICsxMzQxLDcg QEAgaW50ZWxfZ2V0X2RyYW1faW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gICAJLyogTmVlZCB0byBjYWxjdWxhdGUgYmFuZHdpZHRoIG9ubHkgZm9yIEdlbjkgKi8KPiAg IAlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gICAJCXJldCA9IGJ4dF9nZXRfZHJhbV9pbmZv KGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAo SVNfR0VOKGRldl9wcml2LCA5KSkKPiAgIAkJcmV0ID0gc2tsX2dldF9kcmFtX2luZm8oZGV2X3By aXYpOwo+ICAgCWVsc2UKPiAgIAkJcmV0ID0gc2tsX2RyYW1fZ2V0X2NoYW5uZWxzX2luZm8oZGV2 X3ByaXYpOwo+IEBAIC0xNDM2LDcgKzE0MzYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2lu aXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCXBjaV9zZXRfbWFz dGVyKHBkZXYpOwo+ICAgCj4gICAJLyogb3ZlcmxheSBvbiBnZW4yIGlzIGJyb2tlbiBhbmQgY2Fu J3QgYWRkcmVzcyBhYm92ZSAxRyAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwlp ZiAoSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAgCQlyZXQgPSBkbWFfc2V0X2NvaGVyZW50X21h c2soJnBkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMwKSk7Cj4gICAJCWlmIChyZXQpIHsKPiAgIAkJ CURSTV9FUlJPUigiZmFpbGVkIHRvIHNldCBETUEgbWFza1xuIik7Cj4gQEAgLTE1NzQsNyArMTU3 NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgIAkJYWNwaV92aWRlb19yZWdpc3RlcigpOwo+ICAgCX0KPiAg IAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkp Cj4gICAJCWludGVsX2dwdV9pcHNfaW5pdChkZXZfcHJpdik7Cj4gICAKPiAgIAlpbnRlbF9hdWRp b19pbml0KGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBhZmZjYjAy OGZmOGQuLjY2MGQzNWFlZDIwZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0y MjE2LDYgKzIyMTYsMTAgQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAjZGVmaW5lIElTX0dFTl9SQU5HRShkZXZfcHJpdiwgcywgZSkgXAo+ ICAgCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgSU5URUxfR0VOX01BU0soKHMpLCAo ZSkpKSkKPiAgIAo+ICsjZGVmaW5lIElTX0dFTihkZXZfcHJpdiwgbikgXAo+ICsJKEJVSUxEX0JV R19PTl9aRVJPKCFfX2J1aWx0aW5fY29uc3RhbnRfcChuKSkgKyBcCj4gKwkgKGRldl9wcml2KS0+ aW5mby5nZW4gPT0gKG4pKQo+ICsKPiAgIC8qCj4gICAgKiBSZXR1cm4gdHJ1ZSBpZiByZXZpc2lv biBpcyBpbiByYW5nZSBbc2luY2UsdW50aWxdIGluY2x1c2l2ZS4KPiAgICAqCj4gQEAgLTIzNjcs MjYgKzIzNzEsOSBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgICNkZWZpbmUgSVNfSUNMX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkgXAo+ICAg CShJU19JQ0VMQUtFKHApICYmIElTX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkpCj4gICAKPiAtLyoK PiAtICogVGhlIGdlblggZGVzaWduYXRpb24gdHlwaWNhbGx5IHJlZmVycyB0byB0aGUgcmVuZGVy IGVuZ2luZSwgc28gcmVuZGVyCj4gLSAqIGNhcGFiaWxpdHkgcmVsYXRlZCBjaGVja3Mgc2hvdWxk IHVzZSBJU19HRU4sIHdoaWxlIGRpc3BsYXkgYW5kIG90aGVyIGNoZWNrcwo+IC0gKiBoYXZlIHRo ZWlyIG93biAoZS5nLiBIQVNfUENIX1NQTElUIGZvciBJTEsrIGRpc3BsYXksIElTX2ZvbyBmb3Ig cGFydGljdWxhcgo+IC0gKiBjaGlwcywgZXRjLikuCj4gLSAqLwo+IC0jZGVmaW5lIElTX0dFTjIo ZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDEpKSkKPiAtI2Rl ZmluZSBJU19HRU4zKGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJ VCgyKSkpCj4gLSNkZWZpbmUgSVNfR0VONChkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8u Z2VuX21hc2sgJiBCSVQoMykpKQo+IC0jZGVmaW5lIElTX0dFTjUoZGV2X3ByaXYpCSghISgoZGV2 X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDQpKSkKPiAtI2RlZmluZSBJU19HRU42KGRldl9w cml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJVCg1KSkpCj4gLSNkZWZpbmUg SVNfR0VONyhkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoNikp KQo+IC0jZGVmaW5lIElTX0dFTjgoZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9t YXNrICYgQklUKDcpKSkKPiAtI2RlZmluZSBJU19HRU45KGRldl9wcml2KQkoISEoKGRldl9wcml2 KS0+aW5mby5nZW5fbWFzayAmIEJJVCg4KSkpCj4gLSNkZWZpbmUgSVNfR0VOMTAoZGV2X3ByaXYp CSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDkpKSkKPiAtI2RlZmluZSBJU19H RU4xMShkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoMTApKSkK PiAtCj4gICAjZGVmaW5lIElTX0xQKGRldl9wcml2KQkoSU5URUxfSU5GTyhkZXZfcHJpdiktPmlz X2xwKQo+IC0jZGVmaW5lIElTX0dFTjlfTFAoZGV2X3ByaXYpCShJU19HRU45KGRldl9wcml2KSAm JiBJU19MUChkZXZfcHJpdikpCj4gLSNkZWZpbmUgSVNfR0VOOV9CQyhkZXZfcHJpdikJKElTX0dF TjkoZGV2X3ByaXYpICYmICFJU19MUChkZXZfcHJpdikpCj4gKyNkZWZpbmUgSVNfR0VOOV9MUChk ZXZfcHJpdikJKElTX0dFTihkZXZfcHJpdiwgOSkgJiYgSVNfTFAoZGV2X3ByaXYpKQo+ICsjZGVm aW5lIElTX0dFTjlfQkMoZGV2X3ByaXYpCShJU19HRU4oZGV2X3ByaXYsIDkpICYmICFJU19MUChk ZXZfcHJpdikpCj4gICAKPiAgICNkZWZpbmUgRU5HSU5FX01BU0soaWQpCUJJVChpZCkKPiAgICNk ZWZpbmUgUkVOREVSX1JJTkcJRU5HSU5FX01BU0soUkNTKQo+IEBAIC0yNDA3LDcgKzIzOTQsNyBA QCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg ICNkZWZpbmUgSEFTX0JMVChkZXZfcHJpdikJSEFTX0VOR0lORShkZXZfcHJpdiwgQkNTKQo+ICAg I2RlZmluZSBIQVNfVkVCT1goZGV2X3ByaXYpCUhBU19FTkdJTkUoZGV2X3ByaXYsIFZFQ1MpCj4g ICAKPiAtI2RlZmluZSBIQVNfTEVHQUNZX1NFTUFQSE9SRVMoZGV2X3ByaXYpIElTX0dFTjcoZGV2 X3ByaXYpCj4gKyNkZWZpbmUgSEFTX0xFR0FDWV9TRU1BUEhPUkVTKGRldl9wcml2KSBJU19HRU4o ZGV2X3ByaXYsIDcpCj4gICAKPiAgICNkZWZpbmUgSEFTX0xMQyhkZXZfcHJpdikJKChkZXZfcHJp diktPmluZm8uaGFzX2xsYykKPiAgICNkZWZpbmUgSEFTX1NOT09QKGRldl9wcml2KQkoKGRldl9w cml2KS0+aW5mby5oYXNfc25vb3ApCj4gQEAgLTI0NTksNyArMjQ0Niw3IEBAIGludGVsX2luZm8o Y29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgLyogV2l0aCB0aGUg OTQ1IGFuZCBsYXRlciwgWSB0aWxpbmcgZ290IGFkanVzdGVkIHNvIHRoYXQgaXQgd2FzIDMyIDEy OC1ieXRlCj4gICAgKiByb3dzLCB3aGljaCBjaGFuZ2VkIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1l bnRzIGFuZCBmZW5jZSBwcm9ncmFtbWluZy4KPiAgICAqLwo+IC0jZGVmaW5lIEhBU18xMjhfQllU RV9ZX1RJTElORyhkZXZfcHJpdikgKCFJU19HRU4yKGRldl9wcml2KSAmJiBcCj4gKyNkZWZpbmUg SEFTXzEyOF9CWVRFX1lfVElMSU5HKGRldl9wcml2KSAoIUlTX0dFTihkZXZfcHJpdiwgMikgJiYg XAo+ICAgCQkJCQkgIShJU19JOTE1RyhkZXZfcHJpdikgfHwgXAo+ICAgCQkJCQkgSVNfSTkxNUdN KGRldl9wcml2KSkpCj4gICAjZGVmaW5lIFNVUFBPUlRTX1RWKGRldl9wcml2KQkJKChkZXZfcHJp diktPmluZm8uZGlzcGxheS5zdXBwb3J0c190dikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBp bmRleCBkMzZhOTc1NWFkOTEuLjM5ZWU2N2UwMWJiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IEBAIC01MjI2LDE1ICs1MjI2LDE1IEBAIHZvaWQgaTkxNV9nZW1faW5pdF9zd2l6emxp bmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCUk5MTVfV1JJVEUoRElT UF9BUkJfQ1RMLCBJOTE1X1JFQUQoRElTUF9BUkJfQ1RMKSB8Cj4gICAJCQkJIERJU1BfVElMRV9T VVJGQUNFX1NXSVpaTElORyk7Cj4gICAKPiAtCWlmIChJU19HRU41KGRldl9wcml2KSkKPiArCWlm IChJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlJOTE1X1dSSVRF KFRJTEVDVEwsIEk5MTVfUkVBRChUSUxFQ1RMKSB8IFRJTEVDVExfU1daQ1RMKTsKPiAtCWlmIChJ U19HRU42KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQo+ICAgCQlJOTE1 X1dSSVRFKEFSQl9NT0RFLCBfTUFTS0VEX0JJVF9FTkFCTEUoQVJCX01PREVfU1dJWlpMRV9TTkIp KTsKPiAtCWVsc2UgaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCA3KSkKPiAgIAkJSTkxNV9XUklURShBUkJfTU9ERSwgX01BU0tFRF9CSVRfRU5BQkxF KEFSQl9NT0RFX1NXSVpaTEVfSVZCKSk7Cj4gLQllbHNlIGlmIChJU19HRU44KGRldl9wcml2KSkK PiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOCkpCj4gICAJCUk5MTVfV1JJVEUoR0FNVEFS Qk1PREUsIF9NQVNLRURfQklUX0VOQUJMRShBUkJfTU9ERV9TV0laWkxFX0JEVykpOwo+ICAgCWVs c2UKPiAgIAkJQlVHKCk7Cj4gQEAgLTUyNTYsMTAgKzUyNTYsMTAgQEAgc3RhdGljIHZvaWQgaW5p dF91bnVzZWRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlp bml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBTUkIxX0JBU0UpOwo+ICAgCQlpbml0X3VudXNlZF9y aW5nKGRldl9wcml2LCBTUkIyX0JBU0UpOwo+ICAgCQlpbml0X3VudXNlZF9yaW5nKGRldl9wcml2 LCBTUkIzX0JBU0UpOwo+IC0JfSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBl bHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gICAJCWluaXRfdW51c2VkX3JpbmcoZGV2 X3ByaXYsIFNSQjBfQkFTRSk7Cj4gICAJCWluaXRfdW51c2VkX3JpbmcoZGV2X3ByaXYsIFNSQjFf QkFTRSk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjMoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYg KElTX0dFTihkZXZfcHJpdiwgMykpIHsKPiAgIAkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwg UFJCMV9CQVNFKTsKPiAgIAkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgUFJCMl9CQVNFKTsK PiAgIAl9Cj4gQEAgLTU1ODMsNyArNTU4Myw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAl9Cj4gICAKPiAgIAlyZXQgPSBpOTE1X2dl bV9pbml0X3NjcmF0Y2goZGV2X3ByaXYsCj4gLQkJCQkgICAgSVNfR0VOMihkZXZfcHJpdikgPyBT Wl8yNTZLIDogUEFHRV9TSVpFKTsKPiArCQkJCSAgICBJU19HRU4oZGV2X3ByaXYsIDIpID8gU1pf MjU2SyA6IFBBR0VfU0laRSk7Cj4gICAJaWYgKHJldCkgewo+ICAgCQlHRU1fQlVHX09OKHJldCA9 PSAtRUlPKTsKPiAgIAkJZ290byBlcnJfZ2d0dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jCj4gaW5kZXggMzcxYzA3MDg3MDk1Li4wMTQxNTJlMmJjNjggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTMxMSw3ICszMTEsNyBA QCBzdGF0aWMgdTMyIGRlZmF1bHRfZGVzY190ZW1wbGF0ZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKPiAgIAkJYWRkcmVzc19tb2RlID0gSU5URUxfTEVHQUNZXzY0Ql9DT05U RVhUOwo+ICAgCWRlc2MgfD0gYWRkcmVzc19tb2RlIDw8IEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9E RV9TSElGVDsKPiAgIAo+IC0JaWYgKElTX0dFTjgoaTkxNSkpCj4gKwlpZiAoSVNfR0VOKGk5MTUs IDgpKQo+ICAgCQlkZXNjIHw9IEdFTjhfQ1RYX0wzTExDX0NPSEVSRU5UOwo+ICAgCj4gICAJLyog VE9ETzogV2FEaXNhYmxlTGl0ZVJlc3RvcmUgd2hlbiB3ZSBzdGFydCB1c2luZyBzZW1hcGhvcmUK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggMTBh NGFmYjRmMjM1Li5lYjI2ZjQ4MTdmY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTEzODUsNyArMTM4NSw3IEBAIGViX3JlbG9jYXRlX2Vu dHJ5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+ICAgCQkgKiBiYXRjaGJ1ZmZlcnMuCj4g ICAJCSAqLwo+ICAgCQlpZiAocmVsb2MtPndyaXRlX2RvbWFpbiA9PSBJOTE1X0dFTV9ET01BSU5f SU5TVFJVQ1RJT04gJiYKPiAtCQkgICAgSVNfR0VONihlYi0+aTkxNSkpIHsKPiArCQkgICAgSVNf R0VOKGViLT5pOTE1LCA2KSkgewo+ICAgCQkJZXJyID0gaTkxNV92bWFfYmluZCh0YXJnZXQsIHRh cmdldC0+b2JqLT5jYWNoZV9sZXZlbCwKPiAgIAkJCQkJICAgIFBJTl9HTE9CQUwpOwo+ICAgCQkJ aWYgKFdBUk5fT05DRShlcnIsCj4gQEAgLTE4OTgsNyArMTg5OCw3IEBAIHN0YXRpYyBpbnQgaTkx NV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCXUz MiAqY3M7Cj4gICAJaW50IGk7Cj4gICAKPiAtCWlmICghSVNfR0VONyhycS0+aTkxNSkgfHwgcnEt PmVuZ2luZS0+aWQgIT0gUkNTKSB7Cj4gKwlpZiAoIUlTX0dFTihycS0+aTkxNSwgNykgfHwgcnEt PmVuZ2luZS0+aWQgIT0gUkNTKSB7Cj4gICAJCURSTV9ERUJVRygic29sIHJlc2V0IGlzIGdlbjcv cmNzIG9ubHlcbiIpOwo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBpbmRleCBkNTQ4YWMwNWNjZDcuLjI0ZGYy ZTJhOGZjMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5j ZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5j Cj4gQEAgLTE5Myw5ICsxOTMsOSBAQCBzdGF0aWMgdm9pZCBmZW5jZV93cml0ZShzdHJ1Y3QgZHJt X2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgIAkgKiBhbmQgZXhwbGljaXRseSBtYW5hZ2VkIGZv ciBpbnRlcm5hbCB1c2Vycy4KPiAgIAkgKi8KPiAgIAo+IC0JaWYgKElTX0dFTjIoZmVuY2UtPmk5 MTUpKQo+ICsJaWYgKElTX0dFTihmZW5jZS0+aTkxNSwgMikpCj4gICAJCWk4MzBfd3JpdGVfZmVu Y2VfcmVnKGZlbmNlLCB2bWEpOwo+IC0JZWxzZSBpZiAoSVNfR0VOMyhmZW5jZS0+aTkxNSkpCj4g KwllbHNlIGlmIChJU19HRU4oZmVuY2UtPmk5MTUsIDMpKQo+ICAgCQlpOTE1X3dyaXRlX2ZlbmNl X3JlZyhmZW5jZSwgdm1hKTsKPiAgIAllbHNlCj4gICAJCWk5NjVfd3JpdGVfZmVuY2VfcmVnKGZl bmNlLCB2bWEpOwo+IEBAIC01OTYsMTMgKzU5NiwxMyBAQCBpOTE1X2dlbV9kZXRlY3RfYml0XzZf c3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCQkJc3dpenps ZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7Cj4gICAJCQl9Cj4gICAJCX0KPiAtCX0gZWxz ZSBpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA1KSkgewo+ICAgCQkvKiBPbiBJcm9ubGFrZSB3aGF0ZXZlciBEUkFNIGNvbmZpZywgR1BVIGFs d2F5cyBkbwo+ICAgCQkgKiBzYW1lIHN3aXp6bGluZyBzZXR1cC4KPiAgIAkJICovCj4gICAJCXN3 aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwOwo+ICAgCQlzd2l6emxlX3kgPSBJOTE1 X0JJVF82X1NXSVpaTEVfOTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiAr CX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAgCQkvKiBBcyBmYXIgYXMgd2Ug a25vdywgdGhlIDg2NSBkb2Vzbid0IGhhdmUgdGhlc2UgYml0IDYKPiAgIAkJICogc3dpenpsaW5n IGlzc3Vlcy4KPiAgIAkJICovCj4gQEAgLTY0Nyw3ICs2NDcsNyBAQCBpOTE1X2dlbV9kZXRlY3Rf Yml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCX0K PiAgIAo+ICAgCQkvKiBjaGVjayBmb3IgTC1zaGFwZWQgbWVtb3J5IGFrYSBtb2RpZmllZCBlbmhh bmNlZCBhZGRyZXNzaW5nICovCj4gLQkJaWYgKElTX0dFTjQoZGV2X3ByaXYpICYmCj4gKwkJaWYg KElTX0dFTihkZXZfcHJpdiwgNCkgJiYKPiAgIAkJICAgICEoSTkxNV9SRUFEKERDQzIpICYgREND Ml9NT0RJRklFRF9FTkhBTkNFRF9ESVNBQkxFKSkgewo+ICAgCQkJc3dpenpsZV94ID0gSTkxNV9C SVRfNl9TV0laWkxFX1VOS05PV047Cj4gICAJCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpa TEVfVU5LTk9XTjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IGFkZDFm ZTdhZWI5My4uNjA5YzJmZDFlYTM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiBAQCAtMjE5NSw5ICsyMTk1LDkgQEAgaW50IGk5MTVfcHBndHRfaW5pdF9odyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJZ3R0X3dyaXRlX3dvcmthcm91 bmRzKGRldl9wcml2KTsKPiAgIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJaWYgKElT X0dFTihkZXZfcHJpdiwgNikpCj4gICAJCWdlbjZfcHBndHRfZW5hYmxlKGRldl9wcml2KTsKPiAt CWVsc2UgaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA3KSkKPiAgIAkJZ2VuN19wcGd0dF9lbmFibGUoZGV2X3ByaXYpOwo+ICAgCj4gICAJcmV0dXJu IDA7Cj4gQEAgLTIyNzksNyArMjI3OSw3IEBAIHN0YXRpYyBib29sIG5lZWRzX2lkbGVfbWFwcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJLyogUXVlcnkgaW50ZWxfaW9t bXUgdG8gc2VlIGlmIHdlIG5lZWQgdGhlIHdvcmthcm91bmQuIFByZXN1bWFibHkgdGhhdAo+ICAg CSAqIHdhcyBsb2FkZWQgZmlyc3QuCj4gICAJICovCj4gLQlyZXR1cm4gSVNfR0VONShkZXZfcHJp dikgJiYgSVNfTU9CSUxFKGRldl9wcml2KSAmJiBpbnRlbF92dGRfYWN0aXZlKCk7Cj4gKwlyZXR1 cm4gSVNfR0VOKGRldl9wcml2LCA1KSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpICYmIGludGVsX3Z0 ZF9hY3RpdmUoKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgZ2VuNl9jaGVja19mYXVsdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggZjI5YTdmZjdjMzYyLi4yZjc1NmE5NzY4OWEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+IEBAIC0xMDIsNyArMTAyLDcg QEAgc3RhdGljIGludCBpOTE1X2FkanVzdF9zdG9sZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAgCQlyZXNvdXJjZV9zaXplX3QgZ2d0dF9zdGFydDsKPiAgIAo+ICAgCQln Z3R0X3N0YXJ0ID0gSTkxNV9SRUFEKFBHVEJMX0NUTCk7Cj4gLQkJaWYgKElTX0dFTjQoZGV2X3By aXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDQpKQo+ICAgCQkJZ2d0dF9zdGFydCA9IChn Z3R0X3N0YXJ0ICYgUEdUQkxfQUREUkVTU19MT19NQVNLKSB8Cj4gICAJCQkJICAgICAoZ2d0dF9z dGFydCAmIFBHVEJMX0FERFJFU1NfSElfTUFTSykgPDwgMjg7Cj4gICAJCWVsc2UKPiBAQCAtMTU2 LDcgKzE1Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9hZGp1c3Rfc3RvbGVuKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJICogR0VOMyBmaXJtd2FyZSBsaWtlcyB0byBzbWFz aCBwY2kgYnJpZGdlcyBpbnRvIHRoZSBzdG9sZW4KPiAgIAkJICogcmFuZ2UuIEFwcGFyZW50bHkg dGhpcyB3b3Jrcy4KPiAgIAkJICovCj4gLQkJaWYgKHIgPT0gTlVMTCAmJiAhSVNfR0VOMyhkZXZf cHJpdikpIHsKPiArCQlpZiAociA9PSBOVUxMICYmICFJU19HRU4oZGV2X3ByaXYsIDMpKSB7Cj4g ICAJCQlEUk1fRVJST1IoImNvbmZsaWN0IGRldGVjdGVkIHdpdGggc3RvbGVuIHJlZ2lvbjogJXBS XG4iLAo+ICAgCQkJCSAgZHNtKTsKPiAgIAo+IEBAIC0xOTQsNyArMTk0LDggQEAgc3RhdGljIHZv aWQgZzR4X2dldF9zdG9sZW5fcmVzZXJ2ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAgCSAqIFdoZXRoZXIgSUxLIHJlYWxseSByZXVzZXMgdGhlIEVMSyByZWdpc3RlciBm b3IgdGhpcyBpcyB1bmNsZWFyLgo+ICAgCSAqIExldCdzIHNlZSBpZiB3ZSBjYXRjaCBhbnlvbmUg d2l0aCB0aGlzIHN1cHBvc2VkbHkgZW5hYmxlZCBvbiBJTEsuCj4gICAJICovCj4gLQlXQVJOKElT X0dFTjUoZGV2X3ByaXYpLCAiSUxLIHN0b2xlbiByZXNlcnZlZCBmb3VuZD8gMHglMDh4XG4iLCBy ZWdfdmFsKTsKPiArCVdBUk4oSVNfR0VOKGRldl9wcml2LCA1KSwgIklMSyBzdG9sZW4gcmVzZXJ2 ZWQgZm91bmQ/IDB4JTA4eFxuIiwKPiArCSAgICAgcmVnX3ZhbCk7Cj4gICAKPiAgIAlpZiAoIShy ZWdfdmFsICYgRzRYX1NUT0xFTl9SRVNFUlZFRF9BRERSMl9NQVNLKSkKPiAgIAkJcmV0dXJuOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gaW5kZXggZDlkYzlkZjUyM2I1 Li4zOTMxOWZmMTY3OWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fdGlsaW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcu Ywo+IEBAIC04Nyw3ICs4Nyw3IEBAIHUzMiBpOTE1X2dlbV9mZW5jZV9zaXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICAgCX0KPiAgIAo+ICAgCS8qIFByZXZpb3VzIGNoaXBzIG5l ZWQgYSBwb3dlci1vZi10d28gZmVuY2UgcmVnaW9uIHdoZW4gdGlsaW5nICovCj4gLQlpZiAoSVNf R0VOMyhpOTE1KSkKPiArCWlmIChJU19HRU4oaTkxNSwgMykpCj4gICAJCWdndHRfc2l6ZSA9IDEw MjQqMTAyNDsKPiAgIAllbHNlCj4gICAJCWdndHRfc2l6ZSA9IDUxMioxMDI0Owo+IEBAIC0xNjIs NyArMTYyLDcgQEAgaTkxNV90aWxpbmdfb2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgIAkJCXJldHVybiBmYWxzZTsKPiAgIAl9Cj4gICAKPiAtCWlmIChJU19HRU4yKGk5MTUp IHx8Cj4gKwlpZiAoSVNfR0VOKGk5MTUsIDIpIHx8Cj4gICAJICAgICh0aWxpbmcgPT0gSTkxNV9U SUxJTkdfWSAmJiBIQVNfMTI4X0JZVEVfWV9USUxJTkcoaTkxNSkpKQo+ICAgCQl0aWxlX3dpZHRo ID0gMTI4Owo+ICAgCWVsc2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBp bmRleCAwNzQ2NTEyM2MxNjYuLmNjZmQ5MWM3MjQ3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwo+IEBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgX19lcnJf cHJpbnRfdG9fc2dsKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gICAJCWVy cl9wcmludGYobSwgIkRPTkVfUkVHOiAweCUwOHhcbiIsIGVycm9yLT5kb25lX3JlZyk7Cj4gICAJ fQo+ICAgCj4gLQlpZiAoSVNfR0VONyhtLT5pOTE1KSkKPiArCWlmIChJU19HRU4obS0+aTkxNSwg NykpCj4gICAJCWVycl9wcmludGYobSwgIkVSUl9JTlQ6IDB4JTA4eFxuIiwgZXJyb3ItPmVycl9p bnQpOwo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3ItPmVuZ2luZSk7 IGkrKykgewo+IEBAIC0xMzE0LDcgKzEzMTQsNyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRf ZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ICAgCWlmICgh SFdTX05FRURTX1BIWVNJQ0FMKGRldl9wcml2KSkgewo+ICAgCQlpOTE1X3JlZ190IG1taW87Cj4g ICAKPiAtCQlpZiAoSVNfR0VONyhkZXZfcHJpdikpIHsKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2 LCA3KSkgewo+ICAgCQkJc3dpdGNoIChlbmdpbmUtPmlkKSB7Cj4gICAJCQlkZWZhdWx0Ogo+ICAg CQkJY2FzZSBSQ1M6Cj4gQEAgLTEzMzAsNyArMTMzMCw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3Jl Y29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsCj4gICAJ CQkJbW1pbyA9IFZFQk9YX0hXU19QR0FfR0VONzsKPiAgIAkJCQlicmVhazsKPiAgIAkJCX0KPiAt CQl9IGVsc2UgaWYgKElTX0dFTjYoZW5naW5lLT5pOTE1KSkgewo+ICsJCX0gZWxzZSBpZiAoSVNf R0VOKGVuZ2luZS0+aTkxNSwgNikpIHsKPiAgIAkJCW1taW8gPSBSSU5HX0hXU19QR0FfR0VONihl bmdpbmUtPm1taW9fYmFzZSk7Cj4gICAJCX0gZWxzZSB7Cj4gICAJCQkvKiBYWFg6IGdlbjggcmV0 dXJucyB0byBzYW5pdHkgKi8KPiBAQCAtMTM1MiwxMCArMTM1MiwxMCBAQCBzdGF0aWMgdm9pZCBl cnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9y LAo+ICAgCj4gICAJCWVlLT52bV9pbmZvLmdmeF9tb2RlID0gSTkxNV9SRUFEKFJJTkdfTU9ERV9H RU43KGVuZ2luZSkpOwo+ICAgCj4gLQkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJCWlmIChJ U19HRU4oZGV2X3ByaXYsIDYpKQo+ICAgCQkJZWUtPnZtX2luZm8ucHBfZGlyX2Jhc2UgPQo+ICAg CQkJCUk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFX1JFQUQoZW5naW5lKSk7Cj4gLQkJZWxzZSBp ZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gKwkJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkK PiAgIAkJCWVlLT52bV9pbmZvLnBwX2Rpcl9iYXNlID0KPiAgIAkJCQlJOTE1X1JFQUQoUklOR19Q UF9ESVJfQkFTRShlbmdpbmUpKTsKPiAgIAkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA4KQo+IEBAIC0xNzI1LDcgKzE3MjUsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3JlZ19zdGF0 ZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAgCQllcnJvci0+Zm9yY2V3YWtlID0g STkxNV9SRUFEX0ZXKEZPUkNFV0FLRV9WTFYpOwo+ICAgCX0KPiAgIAo+IC0JaWYgKElTX0dFTjco ZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gICAJCWVycm9yLT5lcnJf aW50ID0gSTkxNV9SRUFEKEdFTjdfRVJSX0lOVCk7Cj4gICAKPiAgIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA4KSB7Cj4gQEAgLTE3MzMsNyArMTczMyw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1 cmVfcmVnX3N0YXRlKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4gICAJCWVycm9yLT5m YXVsdF9kYXRhMSA9IEk5MTVfUkVBRChHRU44X0ZBVUxUX1RMQl9EQVRBMSk7Cj4gICAJfQo+ICAg Cj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDYp KSB7Cj4gICAJCWVycm9yLT5mb3JjZXdha2UgPSBJOTE1X1JFQURfRlcoRk9SQ0VXQUtFKTsKPiAg IAkJZXJyb3ItPmdhYl9jdGwgPSBJOTE1X1JFQUQoR0FCX0NUTCk7Cj4gICAJCWVycm9yLT5nZnhf bW9kZSA9IEk5MTVfUkVBRChHRlhfTU9ERSk7Cj4gQEAgLTE3NTMsNyArMTc1Myw3IEBAIHN0YXRp YyB2b2lkIGNhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4g ICAJCWVycm9yLT5jY2lkID0gSTkxNV9SRUFEKENDSUQpOwo+ICAgCj4gICAJLyogMzogRmVhdHVy ZSBzcGVjaWZpYyByZWdpc3RlcnMgKi8KPiAtCWlmIChJU19HRU42KGRldl9wcml2KSB8fCBJU19H RU43KGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfR0VOKGRl dl9wcml2LCA3KSkgewo+ICAgCQllcnJvci0+Z2FtX2Vjb2NoayA9IEk5MTVfUkVBRChHQU1fRUNP Q0hLKTsKPiAgIAkJZXJyb3ItPmdhY19lY28gPSBJOTE1X1JFQUQoR0FDX0VDT19CSVRTKTsKPiAg IAl9Cj4gQEAgLTE3NzcsNyArMTc3Nyw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfcmVnX3N0YXRl KHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4gICAJCWVycm9yLT5pZXIgPSBJOTE1X1JF QUQoREVJRVIpOwo+ICAgCQllcnJvci0+Z3RpZXJbMF0gPSBJOTE1X1JFQUQoR1RJRVIpOwo+ICAg CQllcnJvci0+bmd0aWVyID0gMTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsK PiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAgCQllcnJvci0+aWVyID0g STkxNV9SRUFEMTYoSUVSKTsKPiAgIAl9IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2 KSkgewo+ICAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKElFUik7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4gaW5kZXggZDQ0N2Q3ZDUwOGY0Li5lMmRhYzliNWY0Y2UgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMKPiBAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9n ZXRfY3J0Y19zY2FubGluZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgIAlpZiAobW9kZS0+ ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiAgIAkJdnRvdGFsIC89IDI7Cj4gICAK PiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ ICAgCQlwb3NpdGlvbiA9IEk5MTVfUkVBRF9GVyhQSVBFRFNMKHBpcGUpKSAmIERTTF9MSU5FTUFT S19HRU4yOwo+ICAgCWVsc2UKPiAgIAkJcG9zaXRpb24gPSBJOTE1X1JFQURfRlcoUElQRURTTChw aXBlKSkgJiBEU0xfTElORU1BU0tfR0VOMzsKPiBAQCAtMTAzMCw3ICsxMDMwLDcgQEAgc3RhdGlj IGJvb2wgaTkxNV9nZXRfY3J0Y19zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGludCBwaXBlLAo+ICAgCWlmIChzdGltZSkKPiAgIAkJKnN0aW1lID0ga3RpbWVfZ2V0 KCk7Cj4gICAKPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8 IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikg fHwgSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiAgIAkJ LyogTm8gb2J2aW91cyBwaXhlbGNvdW50IHJlZ2lzdGVyLiBPbmx5IHF1ZXJ5IHZlcnRpY2FsCj4g ICAJCSAqIHNjYW5vdXQgcG9zaXRpb24gZnJvbSBEaXNwbGF5IHNjYW4gbGluZSByZWdpc3Rlci4K PiAgIAkJICovCj4gQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0YXRpYyBib29sIGk5MTVfZ2V0X2Ny dGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwK PiAgIAllbHNlCj4gICAJCXBvc2l0aW9uICs9IHZ0b3RhbCAtIHZibF9lbmQ7Cj4gICAKPiAtCWlm IChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZf cHJpdikgPj0gNSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikgfHwgSVNfRzRYKGRldl9w cml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiAgIAkJKnZwb3MgPSBwb3NpdGlv bjsKPiAgIAkJKmhwb3MgPSAwOwo+ICAgCX0gZWxzZSB7Cj4gQEAgLTI1NDcsNyArMjU0Nyw3IEBA IHN0YXRpYyB2b2lkIGlsa19kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgIAkJSTkxNV9XUklURShTREVJSVIsIHBjaF9paXIpOwo+ICAgCX0K PiAgIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpICYmIGRlX2lpciAmIERFX1BDVV9FVkVOVCkK PiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpICYmIGRlX2lpciAmIERFX1BDVV9FVkVOVCkKPiAg IAkJaXJvbmxha2VfcnBzX2NoYW5nZV9pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gICB9Cj4gICAK PiBAQCAtMzI0Myw3ICszMjQzLDcgQEAgdm9pZCBpOTE1X2NsZWFyX2Vycm9yX3JlZ2lzdGVycyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJdTMyIGVpcjsKPiAg IAo+IC0JaWYgKCFJU19HRU4yKGRldl9wcml2KSkKPiArCWlmICghSVNfR0VOKGRldl9wcml2LCAy KSkKPiAgIAkJSTkxNV9XUklURShQR1RCTF9FUiwgSTkxNV9SRUFEKFBHVEJMX0VSKSk7Cj4gICAK PiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4gQEAgLTM1ODYsMTEgKzM1ODYsMTEg QEAgc3RhdGljIHZvaWQgaXJvbmxha2VfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+ICAgCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9w cml2LCA1KSkKPiAgIAkJSTkxNV9XUklURShIV1NUQU0sIDB4ZmZmZmZmZmYpOwo+ICAgCj4gICAJ R0VOM19JUlFfUkVTRVQoREUpOwo+IC0JaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJaWYgKElT X0dFTihkZXZfcHJpdiwgNykpCj4gICAJCUk5MTVfV1JJVEUoR0VON19FUlJfSU5ULCAweGZmZmZm ZmZmKTsKPiAgIAo+ICAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewo+IEBAIC00MDQ1LDcg KzQwNDUsNyBAQCBzdGF0aWMgdm9pZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAgCX0KPiAgIAo+ICAgCWd0X2lycXMgfD0gR1RfUkVOREVSX1VTRVJf SU5URVJSVVBUOwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRl dl9wcml2LCA1KSkgewo+ICAgCQlndF9pcnFzIHw9IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4g ICAJfSBlbHNlIHsKPiAgIAkJZ3RfaXJxcyB8PSBHVF9CTFRfVVNFUl9JTlRFUlJVUFQgfCBHVF9C U0RfVVNFUl9JTlRFUlJVUFQ7Cj4gQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHZvaWQgaW50ZWxfaXJx X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDgpCj4gICAJCXJwcy0+cG1faW50cm1za19tYnogfD0gR0VOOF9QTUlO VFJfRElTQUJMRV9SRURJUkVDVF9UT19HVUM7Cj4gICAKPiAtCWlmIChJU19HRU4yKGRldl9wcml2 KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgIAkJLyogR2VuMiBkb2Vzbid0 IGhhdmUgYSBoYXJkd2FyZSBmcmFtZSBjb3VudGVyICovCj4gICAJCWRldi0+bWF4X3ZibGFua19j b3VudCA9IDA7Cj4gICAJfSBlbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNSkgewo+IEBAIC00ODUyLDcgKzQ4NTIsNyBAQCB2b2lkIGludGVsX2lycV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiBHZW4yIGRvZXNu J3QgaGF2ZSBhIGhhcmR3YXJlIGZyYW1lIGNvdW50ZXIgYW5kIHNvIGRlcGVuZHMgb24KPiAgIAkg KiB2YmxhbmsgaW50ZXJydXB0cyB0byBwcm9kdWNlIHNhbmUgdmJsYW5rIHNldXF1ZW5jZSBudW1i ZXJzLgo+ICAgCSAqLwo+IC0JaWYgKCFJU19HRU4yKGRldl9wcml2KSkKPiArCWlmICghSVNfR0VO KGRldl9wcml2LCAyKSkKPiAgIAkJZGV2LT52YmxhbmtfZGlzYWJsZV9pbW1lZGlhdGUgPSB0cnVl Owo+ICAgCj4gICAJLyogTW9zdCBwbGF0Zm9ybXMgdHJlYXQgdGhlIGRpc3BsYXkgaXJxIGJsb2Nr IGFzIGFuIGFsd2F5cy1vbgo+IEBAIC00OTI0LDE0ICs0OTI0LDE0IEBAIHZvaWQgaW50ZWxfaXJx X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlkZXYtPmRyaXZl ci0+ZGlzYWJsZV92YmxhbmsgPSBpcm9ubGFrZV9kaXNhYmxlX3ZibGFuazsKPiAgIAkJZGV2X3By aXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9IGlsa19ocGRfaXJxX3NldHVwOwo+ICAgCX0gZWxz ZSB7Cj4gLQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwkJaWYgKElTX0dFTihkZXZfcHJp diwgMikpIHsKPiAgIAkJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGk4eHhfaXJxX3Jl c2V0Owo+ICAgCQkJZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9IGk4eHhfaXJxX3Bvc3Rp bnN0YWxsOwo+ICAgCQkJZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gaTh4eF9pcnFfaGFuZGxl cjsKPiAgIAkJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gaTh4eF9pcnFfcmVzZXQ7Cj4g ICAJCQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk4eHhfZW5hYmxlX3ZibGFuazsKPiAg IAkJCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayA9IGk4eHhfZGlzYWJsZV92Ymxhbms7Cj4g LQkJfSBlbHNlIGlmIChJU19HRU4zKGRldl9wcml2KSkgewo+ICsJCX0gZWxzZSBpZiAoSVNfR0VO KGRldl9wcml2LCAzKSkgewo+ICAgCQkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gaTkx NV9pcnFfcmVzZXQ7Cj4gICAJCQlkZXYtPmRyaXZlci0+aXJxX3Bvc3RpbnN0YWxsID0gaTkxNV9p cnFfcG9zdGluc3RhbGw7Cj4gICAJCQlkZXYtPmRyaXZlci0+aXJxX3VuaW5zdGFsbCA9IGk5MTVf aXJxX3Jlc2V0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggYWQwMDk1YmU0MzVk Li42Yzc5OTIzMjA0NDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0zNDE1 LDcgKzM0MTUsNyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQgPSBnZW44X29hX3Jl YWQ7Cj4gICAJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9od190YWlsX3JlYWQgPSBnZW44X29h X2h3X3RhaWxfcmVhZDsKPiAgIAo+IC0JCWlmIChJU19HRU44KGRldl9wcml2KSB8fCBJU19HRU45 KGRldl9wcml2KSkgewo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDgpIHx8IElTX0dFTihkZXZf cHJpdiwgOSkpIHsKPiAgIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9iX2NvdW50 ZXJfcmVnID0KPiAgIAkJCQlnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOwo+ICAgCQkJZGV2 X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX211eF9yZWcgPQo+IEBAIC0zNDMxLDcgKzM0MzEs NyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhf ZW5hYmxlX21ldHJpY19zZXQ7Cj4gICAJCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZGlzYWJsZV9t ZXRyaWNfc2V0ID0gZ2VuOF9kaXNhYmxlX21ldHJpY19zZXQ7Cj4gICAKPiAtCQkJaWYgKElTX0dF TjgoZGV2X3ByaXYpKSB7Cj4gKwkJCWlmIChJU19HRU4oZGV2X3ByaXYsIDgpKSB7Cj4gICAJCQkJ ZGV2X3ByaXYtPnBlcmYub2EuY3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyMDsKPiAgIAkJCQlk ZXZfcHJpdi0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmZzZXQgPSAweDJjZTsKPiAgIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gaW5kZXggOGYzYWE0ZGMwYzk4Li5mNDBiYTVlNDI5 ZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+IEBAIC02NSw3ICs2NSw3 IEBAIGludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCj4gICAJaTkxNV9zYXZlX2Rpc3BsYXkoZGV2X3ByaXYpOwo+ICAgCj4gLQlpZiAoSVNf R0VONChkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkKPiAgIAkJcGNpX3Jl YWRfY29uZmlnX3dvcmQocGRldiwgR0NER01CVVMsCj4gICAJCQkJICAgICAmZGV2X3ByaXYtPnJl Z2ZpbGUuc2F2ZUdDREdNQlVTKTsKPiAgIAo+IEBAIC03NywxNCArNzcsMTQgQEAgaW50IGk5MTVf c2F2ZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZU1JX0FSQl9TVEFURSA9IEk5MTVfUkVBRChNSV9BUkJfU1RBVEUpOwo+ ICAgCj4gICAJLyogU2NyYXRjaCBzcGFjZSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpICYm IElTX01PQklMRShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpICYmIElT X01PQklMRShkZXZfcHJpdikpIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewo+ICAg CQkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjBbaV0gPSBJOTE1X1JFQUQoU1dGMChpKSk7Cj4g ICAJCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dGMVtpXSA9IEk5MTVfUkVBRChTV0YxKGkpKTsK PiAgIAkJfQo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQo+ICAgCQkJZGV2X3ByaXYtPnJl Z2ZpbGUuc2F2ZVNXRjNbaV0gPSBJOTE1X1JFQUQoU1dGMyhpKSk7Cj4gLQl9IGVsc2UgaWYgKElT X0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMikpIHsK PiAgIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykKPiAgIAkJCWRldl9wcml2LT5yZWdmaWxlLnNh dmVTV0YxW2ldID0gSTkxNV9SRUFEKFNXRjEoaSkpOwo+ICAgCX0gZWxzZSBpZiAoSEFTX0dNQ0hf RElTUExBWShkZXZfcHJpdikpIHsKPiBAQCAtMTA4LDcgKzEwOCw3IEBAIGludCBpOTE1X3Jlc3Rv cmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQlpZiAoSVNfR0VO NChkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkKPiAgIAkJcGNpX3dyaXRl X2NvbmZpZ193b3JkKHBkZXYsIEdDREdNQlVTLAo+ICAgCQkJCSAgICAgIGRldl9wcml2LT5yZWdm aWxlLnNhdmVHQ0RHTUJVUyk7Cj4gICAJaTkxNV9yZXN0b3JlX2Rpc3BsYXkoZGV2X3ByaXYpOwo+ IEBAIC0xMjIsMTQgKzEyMiwxNCBAQCBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlJOTE1X1dSSVRFKE1JX0FSQl9TVEFURSwgZGV2 X3ByaXYtPnJlZ2ZpbGUuc2F2ZU1JX0FSQl9TVEFURSB8IDB4ZmZmZjAwMDApOwo+ICAgCj4gICAJ LyogU2NyYXRjaCBzcGFjZSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpICYmIElTX01PQklM RShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpICYmIElTX01PQklMRShk ZXZfcHJpdikpIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewo+ICAgCQkJSTkxNV9X UklURShTV0YwKGkpLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dGMFtpXSk7Cj4gICAJCQlJOTE1 X1dSSVRFKFNXRjEoaSksIGRldl9wcml2LT5yZWdmaWxlLnNhdmVTV0YxW2ldKTsKPiAgIAkJfQo+ ICAgCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQo+ICAgCQkJSTkxNV9XUklURShTV0YzKGkpLCBk ZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dGM1tpXSk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2 X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgIAkJZm9y IChpID0gMDsgaSA8IDc7IGkrKykKPiAgIAkJCUk5MTVfV1JJVEUoU1dGMShpKSwgZGV2X3ByaXYt PnJlZ2ZpbGUuc2F2ZVNXRjFbaV0pOwo+ICAgCX0gZWxzZSBpZiAoSEFTX0dNQ0hfRElTUExBWShk ZXZfcHJpdikpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+IGluZGV4IDhjYjAy ZjI4ZDMwYy4uZmRmYzc0MjVlNjQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj LmMKPiBAQCAtMjMzLDcgKzIzMyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19zZXR1cF9z Y2FsZXIoc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2FsZXJfc3RhCj4gICAJaWYg KHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLmZiICYmCj4gICAJICAgIHBsYW5lX3N0 YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmlzX3l1diAmJgo+ICAgCSAgICBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5udW1fcGxhbmVzID4gMSkgewo+IC0JCWlmIChJU19HRU45KGRldl9wcml2 KSAmJgo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCj4gICAJCSAgICAhSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpIHsKPiAgIAkJCW1vZGUgPSBTS0xfUFNfU0NBTEVSX01PREVfTlYxMjsK PiAgIAkJfSBlbHNlIGlmIChpY2xfaXNfaGRyX3BsYW5lKHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lKSkpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiBpbmRl eCBhZTU1YTY4NjVkNWMuLjA1NzFhYTI4NDZhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYwo+IEBAIC03NTgsNyArNzU4LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9hdWRpb19jb21w b25lbnRfY29kZWNfd2FrZV9vdmVycmlkZShzdHJ1Y3QgZGV2aWNlICprZGV2LAo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShrZGV2KTsKPiAgIAl1 MzIgdG1wOwo+ICAgCj4gLQlpZiAoIUlTX0dFTjkoZGV2X3ByaXYpKQo+ICsJaWYgKCFJU19HRU4o ZGV2X3ByaXYsIDkpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlpOTE1X2F1ZGlvX2NvbXBvbmVu dF9nZXRfcG93ZXIoa2Rldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NkY2xrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gaW5kZXgg MjVlM2FiYTljZGVkLi4yMDIxZTQ4NGEyODcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY2RjbGsuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMKPiBAQCAtMjE0MCw3ICsyMTQwLDcgQEAgc3RhdGljIGludCBpbnRlbF9waXhlbF9yYXRl X3RvX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIHsKPiAgIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkK PiAgIAkJcmV0dXJuIERJVl9ST1VORF9VUChwaXhlbF9yYXRlLCAyKTsKPiAtCWVsc2UgaWYgKElT X0dFTjkoZGV2X3ByaXYpIHx8Cj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDkpIHx8Cj4g ICAJCSBJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAg CQlyZXR1cm4gcGl4ZWxfcmF0ZTsKPiAgIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiBAQCAtMjE3Niw3ICsyMTc2LDcgQEAgaW50IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2Rj bGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gICAJCWlmIChJ U19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ICAg CQkJLyogRGlzcGxheSBXQSAjMTE0NTogZ2xrLGNubCAqLwo+ICAgCQkJbWluX2NkY2xrID0gbWF4 KDMxNjgwMCwgbWluX2NkY2xrKTsKPiAtCQl9IGVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpIHx8 IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiArCQl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJp diwgOSkgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ICAgCQkJLyogRGlzcGxheSBXQSAj MTE0NDogc2tsLGJ4dCAqLwo+ICAgCQkJbWluX2NkY2xrID0gbWF4KDQzMjAwMCwgbWluX2NkY2xr KTsKPiAgIAkJfQo+IEBAIC0yNTM3LDcgKzI1MzcsNyBAQCBzdGF0aWMgaW50IGludGVsX2NvbXB1 dGVfbWF4X2RvdGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAg IAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2 KSkKPiAgIAkJcmV0dXJuIDIgKiBtYXhfY2RjbGtfZnJlcTsKPiAtCWVsc2UgaWYgKElTX0dFTjko ZGV2X3ByaXYpIHx8Cj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDkpIHx8Cj4gICAJCSBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAgCQlyZXR1 cm4gbWF4X2NkY2xrX2ZyZXE7Cj4gICAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4gQEAgLTI3ODUsOSArMjc4NSw5IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWRldl9wcml2LT5kaXNwbGF5Lmdl dF9jZGNsayA9IGhzd19nZXRfY2RjbGs7Cj4gICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gICAJCWRldl9wcml2LT5kaXNwbGF5 LmdldF9jZGNsayA9IHZsdl9nZXRfY2RjbGs7Cj4gLQllbHNlIGlmIChJU19HRU42KGRldl9wcml2 KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5n ZXRfY2RjbGsgPSBmaXhlZF80MDBtaHpfZ2V0X2NkY2xrOwo+IC0JZWxzZSBpZiAoSVNfR0VONShk ZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQlkZXZfcHJp di0+ZGlzcGxheS5nZXRfY2RjbGsgPSBmaXhlZF80NTBtaHpfZ2V0X2NkY2xrOwo+ICAgCWVsc2Ug aWYgKElTX0dNNDUoZGV2X3ByaXYpKQo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsg PSBnbTQ1X2dldF9jZGNsazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4IDY4ZjJm Yjg5ZWNlMy4uYmY0ZmQ3MzliNjhjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBA QCAtMzIyLDcgKzMyMiw3IEBAIGludGVsX2NydF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gICAJCSAqIERBQyBsaW1pdCBzdXBwb3NlZGx5IDM1NSBNSHouCj4g ICAJCSAqLwo+ICAgCQltYXhfY2xvY2sgPSAyNzAwMDA7Cj4gLQllbHNlIGlmIChJU19HRU4zKGRl dl9wcml2KSB8fCBJU19HRU40KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJp diwgMykgfHwgSVNfR0VOKGRldl9wcml2LCA0KSkKPiAgIAkJbWF4X2Nsb2NrID0gNDAwMDAwOwo+ ICAgCWVsc2UKPiAgIAkJbWF4X2Nsb2NrID0gMzUwMDAwOwo+IEBAIC02NjYsNyArNjY2LDcgQEAg aW50ZWxfY3J0X2xvYWRfZGV0ZWN0KHN0cnVjdCBpbnRlbF9jcnQgKmNydCwgdWludDMyX3QgcGlw ZSkKPiAgIAkvKiBTZXQgdGhlIGJvcmRlciBjb2xvciB0byBwdXJwbGUuICovCj4gICAJSTkxNV9X UklURShiY2xycGF0X3JlZywgMHg1MDAwNTApOwo+ICAgCj4gLQlpZiAoIUlTX0dFTjIoZGV2X3By aXYpKSB7Cj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgIAkJdWludDMyX3QgcGlw ZWNvbmYgPSBJOTE1X1JFQUQocGlwZWNvbmZfcmVnKTsKPiAgIAkJSTkxNV9XUklURShwaXBlY29u Zl9yZWcsIHBpcGVjb25mIHwgUElQRUNPTkZfRk9SQ0VfQk9SREVSKTsKPiAgIAkJUE9TVElOR19S RUFEKHBpcGVjb25mX3JlZyk7Cj4gQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIGludGVsX2NydF9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAllbHNlCj4gICAJCWNy dC0+YmFzZS5jcnRjX21hc2sgPSAoMSA8PCAwKSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7Cj4gICAK PiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ ICAgCQljb25uZWN0b3ItPmludGVybGFjZV9hbGxvd2VkID0gMDsKPiAgIAllbHNlCj4gICAJCWNv bm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAxOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IDFlNTYzMTkzMzRmMy4uMzMyNzkwMjc5ZTFkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gQEAgLTc0OCw3ICs3 NDgsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxf ZGV2aWNlX2luZm8gKmluZm8pCj4gICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsK PiAgIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiAgIAkJCWluZm8tPm51bV9zY2Fs ZXJzW3BpcGVdID0gMjsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5KSkgewo+ICAgCQlpbmZvLT5udW1fc2NhbGVyc1tQ SVBFX0FdID0gMjsKPiAgIAkJaW5mby0+bnVtX3NjYWxlcnNbUElQRV9CXSA9IDI7Cj4gICAJCWlu Zm8tPm51bV9zY2FsZXJzW1BJUEVfQ10gPSAxOwo+IEBAIC03NTYsMTAgKzc1NiwxMCBAQCB2b2lk IGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g KmluZm8pCj4gICAKPiAgIAlCVUlMRF9CVUdfT04oSTkxNV9OVU1fRU5HSU5FUyA+IEJJVFNfUEVS X1RZUEUoaW50ZWxfcmluZ19tYXNrX3QpKTsKPiAgIAo+IC0JaWYgKElTX0dFTjExKGRldl9wcml2 KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDExKSkKPiAgIAkJZm9yX2VhY2hfcGlwZShkZXZf cHJpdiwgcGlwZSkKPiAgIAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gNjsKPiAtCWVsc2Ug aWYgKElTX0dFTjEwKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCWVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTApIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ ICAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ICAgCQkJaW5mby0+bnVtX3Nwcml0 ZXNbcGlwZV0gPSAzOwo+ICAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gQEAg LTc4Nyw3ICs3ODcsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1 Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4gICAJCURSTV9JTkZPKCJEaXNwbGF5IGRpc2Fi bGVkIChtb2R1bGUgcGFyYW1ldGVyKVxuIik7Cj4gICAJCWluZm8tPm51bV9waXBlcyA9IDA7Cj4g ICAJfSBlbHNlIGlmIChIQVNfRElTUExBWShkZXZfcHJpdikgJiYKPiAtCQkgICAoSVNfR0VONyhk ZXZfcHJpdikgfHwgSVNfR0VOOChkZXZfcHJpdikpICYmCj4gKwkJICAgKElTX0dFTihkZXZfcHJp diwgNykgfHwgSVNfR0VOKGRldl9wcml2LCA4KSkgJiYKPiAgIAkJICAgSEFTX1BDSF9TUExJVChk ZXZfcHJpdikpIHsKPiAgIAkJdTMyIGZ1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoRlVTRV9TVFJBUCk7 Cj4gICAJCXUzMiBzZnVzZV9zdHJhcCA9IEk5MTVfUkVBRChTRlVTRV9TVFJBUCk7Cj4gQEAgLTgx MSw3ICs4MTEsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3Qg aW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4gICAJCQlEUk1fSU5GTygiUGlwZUMgZnVzZWQgb2Zm XG4iKTsKPiAgIAkJCWluZm8tPm51bV9waXBlcyAtPSAxOwo+ICAgCQl9Cj4gLQl9IGVsc2UgaWYg KEhBU19ESVNQTEFZKGRldl9wcml2KSAmJiBJU19HRU45KGRldl9wcml2KSkgewo+ICsJfSBlbHNl IGlmIChIQVNfRElTUExBWShkZXZfcHJpdikgJiYgSVNfR0VOKGRldl9wcml2LCA5KSkgewo+ICAg CQl1MzIgZGZzbSA9IEk5MTVfUkVBRChTS0xfREZTTSk7Cj4gICAJCXU4IGRpc2FibGVkX21hc2sg PSAwOwo+ICAgCQlib29sIGludmFsaWQ7Cj4gQEAgLTg1MSwxNCArODUxLDE0IEBAIHZvaWQgaW50 ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5m bykKPiAgIAkJY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gICAJZWxzZSBp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAgIAkJYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0 KGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAo SVNfR0VOKGRldl9wcml2LCA5KSkKPiAgIAkJZ2VuOV9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7 Cj4gLQllbHNlIGlmIChJU19HRU4xMChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2 X3ByaXYsIDEwKSkKPiAgIAkJZ2VuMTBfc3NldV9pbmZvX2luaXQoZGV2X3ByaXYpOwo+ICAgCWVs c2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gICAJCWdlbjExX3NzZXVfaW5mb19p bml0KGRldl9wcml2KTsKPiAgIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpICYmIGludGVsX3Z0 ZF9hY3RpdmUoKSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikgJiYgaW50ZWxfdnRkX2Fj dGl2ZSgpKSB7Cj4gICAJCURSTV9JTkZPKCJEaXNhYmxpbmcgcHBHVFQgZm9yIFZULWQgc3VwcG9y dFxuIik7Cj4gICAJCWluZm8tPnBwZ3R0ID0gSU5URUxfUFBHVFRfTk9ORTsKPiAgIAl9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDA3Yzg2MTg4NGM3MC4uMDdkZGIw NmZlYzY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC05ODQs NyArOTg0LDcgQEAgc3RhdGljIGJvb2wgcGlwZV9zY2FubGluZV9pc19tb3Zpbmcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXUzMiBsaW5lMSwgbGluZTI7Cj4gICAJdTMy IGxpbmVfbWFzazsKPiAgIAo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dF TihkZXZfcHJpdiwgMikpCj4gICAJCWxpbmVfbWFzayA9IERTTF9MSU5FTUFTS19HRU4yOwo+ICAg CWVsc2UKPiAgIAkJbGluZV9tYXNrID0gRFNMX0xJTkVNQVNLX0dFTjM7Cj4gQEAgLTExMTAsNyAr MTExMCw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9mZGlfdHhfcGxsX2VuYWJsZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXUzMiB2YWw7Cj4gICAKPiAgIAkvKiBJTEsg RkRJIFBMTCBpcyBhbHdheXMgZW5hYmxlZCAqLwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gICAJCXJldHVybjsKPiAgIAo+ICAgCS8qIE9u IEhhc3dlbGwsIERESSBwb3J0cyBhcmUgcmVzcG9uc2libGUgZm9yIHRoZSBGREkgUExMIHNldHVw ICovCj4gQEAgLTE4NTAsNyArMTg1MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcGlw ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gICAKPiAg IHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfdGlsZV9zaXplKGNvbnN0IHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXJldHVybiBJU19HRU4yKGRldl9wcml2KSA/ IDIwNDggOiA0MDk2Owo+ICsJcmV0dXJuIElTX0dFTihkZXZfcHJpdiwgMikgPyAyMDQ4IDogNDA5 NjsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHVuc2lnbmVkIGludAo+IEBAIC0xODYzLDcgKzE4NjMs NyBAQCBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLCBpbnQgY29sb3JfcGxhbmUpCj4gICAJY2FzZSBEUk1fRk9STUFUX01PRF9MSU5FQVI6Cj4g ICAJCXJldHVybiBjcHA7Cj4gICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiAtCQlp ZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gICAJ CQlyZXR1cm4gMTI4Owo+ICAgCQllbHNlCj4gICAJCQlyZXR1cm4gNTEyOwo+IEBAIC0xODcyLDcg KzE4NzIsNyBAQCBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCj4gICAJCQlyZXR1cm4gMTI4Owo+ICAgCQkvKiBm YWxsIHRocm91Z2ggKi8KPiAgIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+IC0JCWlm IChJU19HRU4yKGRldl9wcml2KSB8fCBIQVNfMTI4X0JZVEVfWV9USUxJTkcoZGV2X3ByaXYpKQo+ ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpIHx8IEhBU18xMjhfQllURV9ZX1RJTElORyhkZXZf cHJpdikpCj4gICAJCQlyZXR1cm4gMTI4Owo+ICAgCQllbHNlCj4gICAJCQlyZXR1cm4gNTEyOwo+ IEBAIC0zMTkzLDggKzMxOTMsOCBAQCBzdGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAgCj4gICAJZHNwY250ciA9IERJ U1BMQVlfUExBTkVfRU5BQkxFIHwgRElTUFBMQU5FX0dBTU1BX0VOQUJMRTsKPiAgIAo+IC0JaWYg KElTX0c0WChkZXZfcHJpdikgfHwgSVNfR0VONShkZXZfcHJpdikgfHwKPiAtCSAgICBJU19HRU42 KGRldl9wcml2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0c0WChkZXZf cHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCA1KSB8fAo+ICsJICAgIElTX0dFTihkZXZfcHJpdiwg NikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAgIAkJZHNwY250ciB8PSBESVNQUExBTkVf VFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gICAKPiAgIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikg fHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiBAQCAtNDEyMCw3ICs0MTIwLDcgQEAgc3RhdGlj IHZvaWQgZ2VuNl9mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgIAl0 ZW1wID0gSTkxNV9SRUFEKHJlZyk7Cj4gICAJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsK PiAgIAl0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMjsKPiAtCWlmIChJU19HRU42KGRl dl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpIHsKPiAgIAkJdGVtcCAmPSB+ RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLOwo+ICAgCQkvKiBTTkItQiAqLwo+ICAgCQl0ZW1w IHw9IEZESV9MSU5LX1RSQUlOXzQwME1WXzBEQl9TTkJfQjsKPiBAQCAtNDkxOSwxMCArNDkxOSwx MCBAQCBza2xfdXBkYXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwgYm9vbCBmb3JjZV9kZXRhY2gsCj4gICAJLyogcmFuZ2UgY2hlY2tzICovCj4gICAJaWYgKHNy Y193IDwgU0tMX01JTl9TUkNfVyB8fCBzcmNfaCA8IFNLTF9NSU5fU1JDX0ggfHwKPiAgIAkgICAg ZHN0X3cgPCBTS0xfTUlOX0RTVF9XIHx8IGRzdF9oIDwgU0tMX01JTl9EU1RfSCB8fAo+IC0JICAg IChJU19HRU4xMShkZXZfcHJpdikgJiYKPiArCSAgICAoSVNfR0VOKGRldl9wcml2LCAxMSkgJiYK PiAgIAkgICAgIChzcmNfdyA+IElDTF9NQVhfU1JDX1cgfHwgc3JjX2ggPiBJQ0xfTUFYX1NSQ19I IHx8Cj4gICAJICAgICAgZHN0X3cgPiBJQ0xfTUFYX0RTVF9XIHx8IGRzdF9oID4gSUNMX01BWF9E U1RfSCkpIHx8Cj4gLQkgICAgKCFJU19HRU4xMShkZXZfcHJpdikgJiYKPiArCSAgICAoIUlTX0dF TihkZXZfcHJpdiwgMTEpICYmCj4gICAJICAgICAoc3JjX3cgPiBTS0xfTUFYX1NSQ19XIHx8IHNy Y19oID4gU0tMX01BWF9TUkNfSCB8fAo+ICAgCSAgICAgIGRzdF93ID4gU0tMX01BWF9EU1RfVyB8 fCBkc3RfaCA+IFNLTF9NQVhfRFNUX0gpKSkJewo+ICAgCQlEUk1fREVCVUdfS01TKCJzY2FsZXJf dXNlciBpbmRleCAldS4ldTogc3JjICV1eCV1IGRzdCAldXgldSAiCj4gQEAgLTUyMTMsNyArNTIx Myw3IEBAIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAgCSAqIEZJWE1FOiBOZWVkIHRvIGZpeCB0aGUgbG9naWMgdG8gd29yayB3aGVuIHdlIHR1cm4g b2ZmIGFsbCBwbGFuZXMKPiAgIAkgKiBidXQgbGVhdmUgdGhlIHBpcGUgcnVubmluZy4KPiAgIAkg Ki8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIp KQo+ICAgCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBw aXBlLCB0cnVlKTsKPiAgIAo+ICAgCS8qIFVuZGVycnVucyBkb24ndCBhbHdheXMgcmFpc2UgaW50 ZXJydXB0cywgc28gY2hlY2sgbWFudWFsbHkuICovCj4gQEAgLTUyMzQsNyArNTIzNCw3IEBAIGlu dGVsX3ByZV9kaXNhYmxlX3ByaW1hcnlfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICAgCSAqIEdlbjIgcmVwb3J0cyBwaXBlIHVuZGVycnVucyB3aGVuZXZlciBhbGwgcGxhbmVzIGFy ZSBkaXNhYmxlZC4KPiAgIAkgKiBTbyBkaXNhYmxlIHVuZGVycnVuIHJlcG9ydGluZyBiZWZvcmUg YWxsIHRoZSBwbGFuZXMgZ2V0IGRpc2FibGVkLgo+ICAgCSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2 X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gICAJCWludGVsX3NldF9jcHVf Zmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIGZhbHNlKTsKPiAgIAo+ICAg CWhzd19kaXNhYmxlX2lwcyh0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7Cj4gQEAg LTUyOTIsNyArNTI5Miw3IEBAIHN0YXRpYyBib29sIG5lZWRzX252MTJfd2Eoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAgIAkvKiBX QSBEaXNwbGF5ICMwODI3OiBHZW45OmFsbCAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYpICYm ICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYm ICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAgIAkJcmV0dXJuIHRydWU7Cj4gICAKPiAgIAly ZXR1cm4gZmFsc2U7Cj4gQEAgLTUzNjUsNyArNTM2NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3By ZV9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ ICAgCQkgKiBHZW4yIHJlcG9ydHMgcGlwZSB1bmRlcnJ1bnMgd2hlbmV2ZXIgYWxsIHBsYW5lcyBh cmUgZGlzYWJsZWQuCj4gICAJCSAqIFNvIGRpc2FibGUgdW5kZXJydW4gcmVwb3J0aW5nIGJlZm9y ZSBhbGwgdGhlIHBsYW5lcyBnZXQgZGlzYWJsZWQuCj4gICAJCSAqLwo+IC0JCWlmIChJU19HRU4y KGRldl9wcml2KSAmJiBvbGRfcHJpbWFyeV9zdGF0ZS0+dmlzaWJsZSAmJgo+ICsJCWlmIChJU19H RU4oZGV2X3ByaXYsIDIpICYmIG9sZF9wcmltYXJ5X3N0YXRlLT52aXNpYmxlICYmCj4gICAJCSAg ICAobW9kZXNldCB8fCAhbmV3X3ByaW1hcnlfc3RhdGUtPmJhc2UudmlzaWJsZSkpCj4gICAJCQlp bnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBjcnRjLT5waXBl LCBmYWxzZSk7Cj4gICAJfQo+IEBAIC02MTg0LDcgKzYxODQsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgIAo+ ICAgCWludGVsX2NydGMtPmFjdGl2ZSA9IHRydWU7Cj4gICAKPiAtCWlmICghSVNfR0VOMihkZXZf cHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikpCj4gICAJCWludGVsX3NldF9jcHVf Zmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwo+ICAgCj4gICAJ aW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRlKTsK PiBAQCAtNjIzNiw3ICs2MjM2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAgCSAqIE9uIGdlbjIgcGxh bmVzIGFyZSBkb3VibGUgYnVmZmVyZWQgYnV0IHRoZSBwaXBlIGlzbid0LCBzbyB3ZSBtdXN0Cj4g ICAJICogd2FpdCBmb3IgcGxhbmVzIHRvIGZ1bGx5IHR1cm4gb2ZmIGJlZm9yZSBkaXNhYmxpbmcg dGhlIHBpcGUuCj4gICAJICovCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoSVNf R0VOKGRldl9wcml2LCAyKSkKPiAgIAkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBw aXBlKTsKPiAgIAo+ICAgCWludGVsX2VuY29kZXJzX2Rpc2FibGUoY3J0Yywgb2xkX2NydGNfc3Rh dGUsIG9sZF9zdGF0ZSk7Cj4gQEAgLTYyNjEsNyArNjI2MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhf Y3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAg IAo+ICAgCWludGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rpc2FibGUoY3J0Yywgb2xkX2NydGNfc3Rh dGUsIG9sZF9zdGF0ZSk7Cj4gICAKPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAo IUlTX0dFTihkZXZfcHJpdiwgMikpCj4gICAJCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9y ZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIGZhbHNlKTsKPiAgIAo+ICAgCWlmICghZGV2X3ByaXYt PmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKQo+IEBAIC02ODY4LDcgKzY4NjgsNyBAQCBzdGF0 aWMgYm9vbCB0cmFuc2NvZGVyX2hhc19tMl9uMihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gICAJICogU3RyaWN0bHkgc3BlYWtpbmcgc29tZSByZWdpc3RlcnMgYXJlIGF2YWls YWJsZSBiZWZvcmUKPiAgIAkgKiBnZW43LCBidXQgd2Ugb25seSBzdXBwb3J0IERSUlMgb24gZ2Vu NysKPiAgIAkgKi8KPiAtCXJldHVybiBJU19HRU43KGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KTsKPiArCXJldHVybiBJU19HRU4oZGV2X3ByaXYsIDcpIHx8IElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNj b2Rlcl9zZXRfbV9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ IEBAIC05MDA1LDcgKzkwMDUsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9nZXRfcGZpdF9jb25m aWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJCS8qIFdlIGN1cnJlbnRseSBkbyBub3Qg ZnJlZSBhc3NpZ25lbWVudHMgb2YgcGFuZWwgZml0dGVycyBvbgo+ICAgCQkgKiBpdmIvaHN3IChz aW5jZSB3ZSBkb24ndCB1c2UgdGhlIGhpZ2hlciB1cHNjYWxpbmcgbW9kZXMgd2hpY2gKPiAgIAkJ ICogZGlmZmVyZW50aWF0ZXMgdGhlbSkgc28ganVzdCBXQVJOIGFib3V0IHRoaXMgY2FzZSBmb3Ig bm93LiAqLwo+IC0JCWlmIChJU19HRU43KGRldl9wcml2KSkgewo+ICsJCWlmIChJU19HRU4oZGV2 X3ByaXYsIDcpKSB7Cj4gICAJCQlXQVJOX09OKCh0bXAgJiBQRl9QSVBFX1NFTF9NQVNLX0lWQikg IT0KPiAgIAkJCQlQRl9QSVBFX1NFTF9JVkIoY3J0Yy0+cGlwZSkpOwo+ICAgCQl9Cj4gQEAgLTk5 OTUsNyArOTk5NSw3IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICAgCXUzMiBjbnRsID0g MDsKPiAgIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJp dikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYp KQo+ICAgCQljbnRsIHw9IE1DVVJTT1JfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gICAKPiAgIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAxMCkgewo+IEBAIC0xMDQ2OCw3ICsxMDQ2OCw3IEBA IHN0YXRpYyBpbnQgaTl4eF9wbGxfcmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJ CXJldHVybiBkZXZfcHJpdi0+dmJ0Lmx2ZHNfc3NjX2ZyZXE7Cj4gICAJZWxzZSBpZiAoSEFTX1BD SF9TUExJVChkZXZfcHJpdikpCj4gICAJCXJldHVybiAxMjAwMDA7Cj4gLQllbHNlIGlmICghSVNf R0VOMihkZXZfcHJpdikpCj4gKwllbHNlIGlmICghSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgIAkJ cmV0dXJuIDk2MDAwOwo+ICAgCWVsc2UKPiAgIAkJcmV0dXJuIDQ4MDAwOwo+IEBAIC0xMDUwMSw3 ICsxMDUwMSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gICAJCWNsb2NrLm0yID0gKGZwICYgRlBfTTJfRElWX01BU0spID4+IEZQ X00yX0RJVl9TSElGVDsKPiAgIAl9Cj4gICAKPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikpIHsK PiArCWlmICghSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAgCQlpZiAoSVNfUElORVZJRVcoZGV2 X3ByaXYpKQo+ICAgCQkJY2xvY2sucDEgPSBmZnMoKGRwbGwgJiBEUExMX0ZQQTAxX1AxX1BPU1Rf RElWX01BU0tfUElORVZJRVcpID4+Cj4gICAJCQkJRFBMTF9GUEEwMV9QMV9QT1NUX0RJVl9TSElG VF9QSU5FVklFVyk7Cj4gQEAgLTEwODE3LDcgKzEwODE3LDcgQEAgaW50IGludGVsX3BsYW5lX2F0 b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXQKPiAgIAkgKiB0aGUgdy9hIG9uIGFsbCB0aHJlZSBwbGF0Zm9ybXMuCj4gICAJICovCj4g ICAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9TUFJJVEUwICYmCj4gLQkgICAgKElTX0dFTjUoZGV2 X3ByaXYpIHx8IElTX0dFTjYoZGV2X3ByaXYpIHx8Cj4gKwkgICAgKElTX0dFTihkZXZfcHJpdiwg NSkgfHwgSVNfR0VOKGRldl9wcml2LCA2KSB8fAo+ICAgCSAgICAgSVNfSVZZQlJJREdFKGRldl9w cml2KSkgJiYKPiAgIAkgICAgKHR1cm5fb24gfHwgKCFuZWVkc19zY2FsaW5nKG9sZF9wbGFuZV9z dGF0ZSkgJiYKPiAgIAkJCSBuZWVkc19zY2FsaW5nKHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5l X3N0YXRlKSkpKSkKPiBAQCAtMTIzNzgsNyArMTIzNzgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVf c2NhbmxpbmVfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICAgCSAqIEhvd2V2ZXIgaWYgcXVlcmllZCBqdXN0IGJlZm9yZSB0aGUgc3RhcnQgb2YgdmJs YW5rIHdlJ2xsIGdldCBhbgo+ICAgCSAqIGFuc3dlciB0aGF0J3Mgc2xpZ2h0bHkgaW4gdGhlIGZ1 dHVyZS4KPiAgIAkgKi8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dF TihkZXZfcHJpdiwgMikpIHsKPiAgIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICAgCQlpbnQg dnRvdGFsOwo+ICAgCj4gQEAgLTEzNTc4LDcgKzEzNTc4LDcgQEAgdm9pZCBpbnRlbF9jcnRjX2Fy bV9maWZvX3VuZGVycnVuKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAgewo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ ICAgCj4gLQlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKCFJU19HRU4oZGV2X3ByaXYs IDIpKQo+ICAgCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2 LCBjcnRjLT5waXBlLCB0cnVlKTsKPiAgIAo+ICAgCWlmIChjcnRjX3N0YXRlLT5oYXNfcGNoX2Vu Y29kZXIpIHsKPiBAQCAtMTQxODUsNyArMTQxODUsNyBAQCBzdGF0aWMgYm9vbCBoYXNfZWRwX2Eo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlmICgoSTkxNV9SRUFEKERQ X0EpICYgRFBfREVURUNURUQpID09IDApCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+IC0JaWYg KElTX0dFTjUoZGV2X3ByaXYpICYmIChJOTE1X1JFQUQoRlVTRV9TVFJBUCkgJiBJTEtfZURQX0Ff RElTQUJMRSkpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA1KSAmJiAoSTkxNV9SRUFEKEZVU0Vf U1RSQVApICYgSUxLX2VEUF9BX0RJU0FCTEUpKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAg IAlyZXR1cm4gdHJ1ZTsKPiBAQCAtMTQzOTcsNyArMTQzOTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJ fQo+ICAgCj4gICAJCXZsdl9kc2lfaW5pdChkZXZfcHJpdik7Cj4gLQl9IGVsc2UgaWYgKCFJU19H RU4yKGRldl9wcml2KSAmJiAhSVNfUElORVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYg KCFJU19HRU4oZGV2X3ByaXYsIDIpICYmICFJU19QSU5FVklFVyhkZXZfcHJpdikpIHsKPiAgIAkJ Ym9vbCBmb3VuZCA9IGZhbHNlOwo+ICAgCj4gICAJCWlmIChJOTE1X1JFQUQoR0VOM19TRFZPQikg JiBTRFZPX0RFVEVDVEVEKSB7Cj4gQEAgLTE0NDMxLDcgKzE0NDMxLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICAKPiAgIAkJaWYgKElTX0c0WChkZXZfcHJpdikgJiYgKEk5MTVfUkVBRChEUF9EKSAmIERQX0RF VEVDVEVEKSkKPiAgIAkJCWludGVsX2RwX2luaXQoZGV2X3ByaXYsIERQX0QsIFBPUlRfRCk7Cj4g LQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2 X3ByaXYsIDIpKQo+ICAgCQlpbnRlbF9kdm9faW5pdChkZXZfcHJpdik7Cj4gICAKPiAgIAlpZiAo U1VQUE9SVFNfVFYoZGV2X3ByaXYpKQo+IEBAIC0xNDYyOSw3ICsxNDYyOSw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVs X2ZiLAo+ICAgCQkgKiByZXF1aXJlIHRoZSBlbnRpcmUgZmIgdG8gYWNjb21tb2RhdGUgdGhhdCB0 byBhdm9pZAo+ICAgCQkgKiBwb3RlbnRpYWwgcnVudGltZSBlcnJvcnMgYXQgcGxhbmUgY29uZmln dXJhdGlvbiB0aW1lLgo+ICAgCQkgKi8KPiAtCQlpZiAoSVNfR0VOOShkZXZfcHJpdikgJiYgaSA9 PSAwICYmIGZiLT53aWR0aCA+IDM4NDAgJiYKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5KSAm JiBpID09IDAgJiYgZmItPndpZHRoID4gMzg0MCAmJgo+ICAgCQkgICAgaXNfY2NzX21vZGlmaWVy KGZiLT5tb2RpZmllcikpCj4gICAJCQlzdHJpZGVfYWxpZ25tZW50ICo9IDQ7Cj4gICAKPiBAQCAt MTQ4MzQsNyArMTQ4MzQsNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNf Y29tcHV0ZV9jbG9jayA9IHBudl9jcnRjX2NvbXB1dGVfY2xvY2s7Cj4gICAJCWRldl9wcml2LT5k aXNwbGF5LmNydGNfZW5hYmxlID0gaTl4eF9jcnRjX2VuYWJsZTsKPiAgIAkJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19kaXNhYmxlID0gaTl4eF9jcnRjX2Rpc2FibGU7Cj4gLQl9IGVsc2UgaWYgKCFJ U19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmICghSVNfR0VOKGRldl9wcml2LCAyKSkg ewo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcgPSBpOXh4X2dldF9waXBl X2NvbmZpZzsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmln ID0KPiAgIAkJCWk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnOwo+IEBAIC0xNDg1MCw5ICsx NDg1MCw5IEBAIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0g aTl4eF9jcnRjX2Rpc2FibGU7Cj4gICAJfQo+ICAgCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikp IHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKSB7Cj4gICAJCWRldl9wcml2LT5kaXNwbGF5 LmZkaV9saW5rX3RyYWluID0gaXJvbmxha2VfZmRpX2xpbmtfdHJhaW47Cj4gLQl9IGVsc2UgaWYg KElTX0dFTjYoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikp IHsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBnZW42X2ZkaV9saW5r X3RyYWluOwo+ICAgCX0gZWxzZSBpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkgewo+ICAgCQkv KiBGSVhNRTogZGV0ZWN0IEIwKyBzdGVwcGluZyBhbmQgdXNlIGF1dG8gdHJhaW5pbmcgKi8KPiBA QCAtMTQ5ODQsMTIgKzE0OTg0LDEyIEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX3dhdGVybWFya3Mo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAo+ICAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRl X2ZkaV9wbGxfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4g LQlpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKSB7 Cj4gICAJCXUzMiBmZGlfcGxsX2NsayA9Cj4gICAJCQlJOTE1X1JFQUQoRkRJX1BMTF9CSU9TXzAp ICYgRkRJX1BMTF9GQl9DTE9DS19NQVNLOwo+ICAgCj4gICAJCWRldl9wcml2LT5mZGlfcGxsX2Zy ZXEgPSAoZmRpX3BsbF9jbGsgKyAyKSAqIDEwMDAwOwo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRl dl9wcml2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dF TihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkgewo+ICAgCQlkZXZfcHJp di0+ZmRpX3BsbF9mcmVxID0gMjcwMDAwOwo+ICAgCX0gZWxzZSB7Cj4gICAJCXJldHVybjsKPiBA QCAtMTUxMDUsMTAgKzE1MTA1LDEwIEBAIGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAl9Cj4gICAKPiAgIAkvKiBtYXhpbXVtIGZyYW1lYnVmZmVyIGRp bWVuc2lvbnMgKi8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihk ZXZfcHJpdiwgMikpIHsKPiAgIAkJZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSAyMDQ4Owo+ ICAgCQlkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSAyMDQ4Owo+IC0JfSBlbHNlIGlmIChJ U19HRU4zKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDMpKSB7 Cj4gICAJCWRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gNDA5NjsKPiAgIAkJZGV2LT5tb2Rl X2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5NjsKPiAgIAl9IGVsc2Ugewo+IEBAIC0xNTExOSw3ICsx NTExOSw3IEBAIGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgIAlpZiAoSVNfSTg0NUcoZGV2X3ByaXYpIHx8IElTX0k4NjVHKGRldl9wcml2KSkgewo+ICAg CQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93aWR0aCA9IElTX0k4NDVHKGRldl9wcml2KSA/IDY0 IDogNTEyOwo+ICAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl9oZWlnaHQgPSAxMDIzOwo+IC0J fSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2 X3ByaXYsIDIpKSB7Cj4gICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX3dpZHRoID0gNjQ7Cj4g ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hlaWdodCA9IDY0Owo+ICAgCX0gZWxzZSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggZGU0MjE5NzIxY2JjLi4yZTBjY2JmYjVjMmUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIGludGVs X2RwX3NldF9zb3VyY2VfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+ICAgCQlzb3VyY2VfcmF0ZXMgPSBjbmxfcmF0 ZXM7Cj4gICAJCXNpemUgPSBBUlJBWV9TSVpFKGNubF9yYXRlcyk7Cj4gLQkJaWYgKElTX0dFTjEw KGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCkpCj4gICAJCQltYXhfcmF0 ZSA9IGNubF9tYXhfc291cmNlX3JhdGUoaW50ZWxfZHApOwo+ICAgCQllbHNlCj4gICAJCQltYXhf cmF0ZSA9IGljbF9tYXhfc291cmNlX3JhdGUoaW50ZWxfZHApOwo+IEBAIC0xMTI4LDcgKzExMjgs NyBAQCBzdGF0aWMgdWludDMyX3QgZzR4X2dldF9hdXhfc2VuZF9jdGwoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiAgIAkJCXRvX2k5MTUoaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYp Owo+ICAgCXVpbnQzMl90IHByZWNoYXJnZSwgdGltZW91dDsKPiAgIAo+IC0JaWYgKElTX0dFTjYo ZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gICAJCXByZWNoYXJnZSA9 IDM7Cj4gICAJZWxzZQo+ICAgCQlwcmVjaGFyZ2UgPSA1Owo+IEBAIC0yNTg1LDcgKzI1ODUsNyBA QCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxfb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAg IAo+ICAgCXBwX2N0cmxfcmVnID0gX3BwX2N0cmxfcmVnKGludGVsX2RwKTsKPiAgIAlwcCA9IGly b25sYWtlX2dldF9wcF9jb250cm9sKGludGVsX2RwKTsKPiAtCWlmIChJU19HRU41KGRldl9wcml2 KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgIAkJLyogSUxLIHdvcmthcm91 bmQ6IGRpc2FibGUgcmVzZXQgYXJvdW5kIHBvd2VyIHNlcXVlbmNlICovCj4gICAJCXBwICY9IH5Q QU5FTF9QT1dFUl9SRVNFVDsKPiAgIAkJSTkxNV9XUklURShwcF9jdHJsX3JlZywgcHApOwo+IEBA IC0yNTkzLDcgKzI1OTMsNyBAQCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxfb24oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiAgIAl9Cj4gICAKPiAgIAlwcCB8PSBQQU5FTF9QT1dFUl9PTjsKPiAt CWlmICghSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgNSkpCj4g ICAJCXBwIHw9IFBBTkVMX1BPV0VSX1JFU0VUOwo+ICAgCj4gICAJSTkxNV9XUklURShwcF9jdHJs X3JlZywgcHApOwo+IEBAIC0yNjAyLDcgKzI2MDIsNyBAQCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxf b24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgIAl3YWl0X3BhbmVsX29uKGludGVsX2Rw KTsKPiAgIAlpbnRlbF9kcC0+bGFzdF9wb3dlcl9vbiA9IGppZmZpZXM7Cj4gICAKPiAtCWlmIChJ U19HRU41KGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgIAkJ cHAgfD0gUEFORUxfUE9XRVJfUkVTRVQ7IC8qIHJlc3RvcmUgcGFuZWwgcmVzZXQgYml0ICovCj4g ICAJCUk5MTVfV1JJVEUocHBfY3RybF9yZWcsIHBwKTsKPiAgIAkJUE9TVElOR19SRUFEKHBwX2N0 cmxfcmVnKTsKPiBAQCAtMjgzMSw3ICsyODMxLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZWRw X3BsbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAgCSAqIDEuIFdhaXQgZm9yIHRo ZSBzdGFydCBvZiB2ZXJ0aWNhbCBibGFuayBvbiB0aGUgZW5hYmxlZCBwaXBlIGdvaW5nIHRvIEZE SQo+ICAgCSAqIDIuIFByb2dyYW0gRFAgUExMIGVuYWJsZQo+ICAgCSAqLwo+IC0JaWYgKElTX0dF TjUoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gICAJCWludGVsX3dh aXRfZm9yX3ZibGFua19pZl9hY3RpdmUoZGV2X3ByaXYsICFjcnRjLT5waXBlKTsKPiAgIAo+ICAg CWludGVsX2RwLT5EUCB8PSBEUF9QTExfRU5BQkxFOwo+IEBAIC0zODQ5LDcgKzM4NDksNyBAQCBp bnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAg CX0gZWxzZSBpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+ ICAgCQlzaWduYWxfbGV2ZWxzID0gaXZiX2NwdV9lZHBfc2lnbmFsX2xldmVscyh0cmFpbl9zZXQp Owo+ICAgCQltYXNrID0gRURQX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLX0lWQjsKPiAtCX0gZWxz ZSBpZiAoSVNfR0VONihkZXZfcHJpdikgJiYgcG9ydCA9PSBQT1JUX0EpIHsKPiArCX0gZWxzZSBp ZiAoSVNfR0VOKGRldl9wcml2LCA2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+ICAgCQlzaWduYWxf bGV2ZWxzID0gc25iX2NwdV9lZHBfc2lnbmFsX2xldmVscyh0cmFpbl9zZXQpOwo+ICAgCQltYXNr ID0gRURQX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLX1NOQjsKPiAgIAl9IGVsc2Ugewo+IEBAIC01 MjcxLDE3ICs1MjcxLDE3IEBAIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDExKQo+ICAgCQlyZXR1cm4gaWNsX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rl cik7Cj4gLQllbHNlIGlmIChJU19HRU4xMChkZXZfcHJpdikgfHwgSVNfR0VOOV9CQyhkZXZfcHJp dikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDEwKSB8fCBJU19HRU45X0JDKGRldl9w cml2KSkKPiAgIAkJcmV0dXJuIHNwdF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGVuY29kZXIpOwo+ ICAgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gYnh0X2RpZ2l0 YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChJU19HRU44KGRldl9wcml2 KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOCkpCj4gICAJCXJldHVybiBiZHdfZGln aXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElTX0dFTjcoZGV2X3By aXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkKPiAgIAkJcmV0dXJuIGl2Yl9k aWdpdGFsX3BvcnRfY29ubmVjdGVkKGVuY29kZXIpOwo+IC0JZWxzZSBpZiAoSVNfR0VONihkZXZf cHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQo+ICAgCQlyZXR1cm4gc25i X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChJU19HRU41KGRl dl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gICAJCXJldHVybiBp bGtfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAgIAo+ICAgCU1JU1NJTkdfQ0FT RShJTlRFTF9HRU4oZGV2X3ByaXYpKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYwo+IGluZGV4IGZlNWU4N2I2ZTFhZi4uOGZmNzk0ZGI3ODgxIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgaW50 ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgdTMyIHNlcW5vKQo+ICAgCSAqIHRoZSBzZW1hcGhvcmUgdmFsdWUsIHRoZW4gd2hlbiB0aGUg c2Vxbm8gbW92ZXMgYmFja3dhcmRzIGFsbAo+ICAgCSAqIGZ1dHVyZSB3YWl0cyB3aWxsIGNvbXBs ZXRlIGluc3RhbnRseSAoY2F1c2luZyByZW5kZXJpbmcgY29ycnVwdGlvbikuCj4gICAJICovCj4g LQlpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpIHsKPiArCWlmIChJ U19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0dFTihkZXZfcHJpdiwgNykpIHsKPiAgIAkJSTkxNV9X UklURShSSU5HX1NZTkNfMChlbmdpbmUtPm1taW9fYmFzZSksIDApOwo+ICAgCQlJOTE1X1dSSVRF KFJJTkdfU1lOQ18xKGVuZ2luZS0+bW1pb19iYXNlKSwgMCk7Cj4gICAJCWlmIChIQVNfVkVCT1go ZGV2X3ByaXYpKQo+IEBAIC03NzQsNyArNzc0LDcgQEAgdTMyIGludGVsX2NhbGN1bGF0ZV9tY3Jf c19zc19zZWxlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCXUzMiBz bGljZSA9IGZscyhzc2V1LT5zbGljZV9tYXNrKTsKPiAgIAl1MzIgc3Vic2xpY2UgPSBmbHMoc3Nl dS0+c3Vic2xpY2VfbWFza1tzbGljZV0pOwo+ICAgCj4gLQlpZiAoSVNfR0VOMTAoZGV2X3ByaXYp KQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMTApKQo+ICAgCQltY3Jfc19zc19zZWxlY3QgPSBH RU44X01DUl9TTElDRShzbGljZSkgfAo+ICAgCQkJCSAgR0VOOF9NQ1JfU1VCU0xJQ0Uoc3Vic2xp Y2UpOwo+ICAgCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJjLmMKPiBpbmRleCBiNTdlMzFmYzBmMWUuLjFkM2ZmMDI2ZDFiYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGludCBp bnRlbF9mYmNfY2FsY3VsYXRlX2NmYl9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAlpbnQgbGluZXM7Cj4gICAKPiAgIAlpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJj ZV9zaXplKGNhY2hlLCBOVUxMLCAmbGluZXMpOwo+IC0JaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gICAJCWxpbmVzID0gbWluKGxpbmVzLCAyMDQ4 KTsKPiAgIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gICAJCWxpbmVzID0g bWluKGxpbmVzLCAyNTYwKTsKPiBAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGk4eHhf ZmJjX2FjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJY2Zi X3BpdGNoID0gcGFyYW1zLT5mYi5zdHJpZGU7Cj4gICAKPiAgIAkvKiBGQkNfQ1RMIHdhbnRzIDMy QiBvciA2NEIgdW5pdHMgKi8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChJU19H RU4oZGV2X3ByaXYsIDIpKQo+ICAgCQljZmJfcGl0Y2ggPSAoY2ZiX3BpdGNoIC8gMzIpIC0gMTsK PiAgIAllbHNlCj4gICAJCWNmYl9waXRjaCA9IChjZmJfcGl0Y2ggLyA2NCkgLSAxOwo+IEBAIC0x MzYsNyArMTM2LDcgQEAgc3RhdGljIHZvaWQgaTh4eF9mYmNfYWN0aXZhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWZvciAoaSA9IDA7IGkgPCAoRkJDX0xMX1NJWkUg LyAzMikgKyAxOyBpKyspCj4gICAJCUk5MTVfV1JJVEUoRkJDX1RBRyhpKSwgMCk7Cj4gICAKPiAt CWlmIChJU19HRU40KGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNCkpIHsK PiAgIAkJdTMyIGZiY19jdGwyOwo+ICAgCj4gICAJCS8qIFNldCBpdCB1cC4uLiAqLwo+IEBAIC0y MzMsOSArMjMzLDkgQEAgc3RhdGljIHZvaWQgaWxrX2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAlpZiAocGFyYW1zLT5mbGFncyAmIFBMQU5F X0hBU19GRU5DRSkgewo+ICAgCQlkcGZjX2N0bCB8PSBEUEZDX0NUTF9GRU5DRV9FTjsKPiAtCQlp ZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gICAJ CQlkcGZjX2N0bCB8PSBwYXJhbXMtPnZtYS0+ZmVuY2UtPmlkOwo+IC0JCWlmIChJU19HRU42KGRl dl9wcml2KSkgewo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gICAJCQlJOTE1X1dS SVRFKFNOQl9EUEZDX0NUTF9TQSwKPiAgIAkJCQkgICBTTkJfQ1BVX0ZFTkNFX0VOQUJMRSB8Cj4g ICAJCQkJICAgcGFyYW1zLT52bWEtPmZlbmNlLT5pZCk7Cj4gQEAgLTI0Myw3ICsyNDMsNyBAQCBz dGF0aWMgdm9pZCBpbGtfZmJjX2FjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAkJCQkgICBwYXJhbXMtPmNydGMuZmVuY2VfeV9vZmZzZXQpOwo+ICAgCQl9Cj4g ICAJfSBlbHNlIHsKPiAtCQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCQlpZiAoSVNfR0VO KGRldl9wcml2LCA2KSkgewo+ICAgCQkJSTkxNV9XUklURShTTkJfRFBGQ19DVExfU0EsIDApOwo+ ICAgCQkJSTkxNV9XUklURShEUEZDX0NQVV9GRU5DRV9PRkZTRVQsIDApOwo+ICAgCQl9Cj4gQEAg LTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBnZW43X2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJaW50IHRocmVzaG9sZCA9IGRldl9wcml2LT5m YmMudGhyZXNob2xkOwo+ICAgCj4gICAJLyogRGlzcGxheSBXQSAjMDUyOTogc2tsLCBrYmwsIGJ4 dC4gKi8KPiAtCWlmIChJU19HRU45KGRldl9wcml2KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJp dikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmICFJU19HRU1JTklMQUtFKGRldl9w cml2KSkgewo+ICAgCQl1MzIgdmFsID0gSTkxNV9SRUFEKENISUNLRU5fTUlTQ180KTsKPiAgIAo+ ICAgCQl2YWwgJj0gfihGQkNfU1RSSURFX09WRVJSSURFIHwgRkJDX1NUUklERV9NQVNLKTsKPiBA QCAtNTgxLDEwICs1ODEsMTAgQEAgc3RhdGljIGJvb2wgc3RyaWRlX2lzX3ZhbGlkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlpZiAoc3RyaWRlIDwgNTEyKQo+ICAgCQly ZXR1cm4gZmFsc2U7Cj4gICAKPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HRU4zKGRl dl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpIHx8IElTX0dFTihkZXZfcHJpdiwg MykpCj4gICAJCXJldHVybiBzdHJpZGUgPT0gNDA5NiB8fCBzdHJpZGUgPT0gODE5MjsKPiAgIAo+ IC0JaWYgKElTX0dFTjQoZGV2X3ByaXYpICYmICFJU19HNFgoZGV2X3ByaXYpICYmIHN0cmlkZSA8 IDIwNDgpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSAmJiAhSVNfRzRYKGRldl9wcml2KSAm JiBzdHJpZGUgPCAyMDQ4KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAgIAlpZiAoc3RyaWRl ID4gMTYzODQpCj4gQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBwaXhlbF9mb3JtYXRf aXNfdmFsaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCWNhc2UgRFJN X0ZPUk1BVF9YUkdCMTU1NToKPiAgIAljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ICAgCQkvKiAx NmJwcCBub3Qgc3VwcG9ydGVkIG9uIGdlbjIgKi8KPiAtCQlpZiAoSVNfR0VOMihkZXZfcHJpdikp Cj4gKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gICAJCQlyZXR1cm4gZmFsc2U7Cj4gICAJ CS8qIFdhRmJjT25seTF0bzFSYXRpbzpjdGcgKi8KPiAgIAkJaWYgKElTX0c0WChkZXZfcHJpdikp Cj4gQEAgLTg0Miw3ICs4NDIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3JlZ19wYXJh bXMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAKPiAgIAlwYXJhbXMtPmNmYl9zaXplID0g aW50ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShkZXZfcHJpdiwgY2FjaGUpOwo+ICAgCj4gLQlp ZiAoSVNfR0VOOShkZXZfcHJpdikgJiYgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICsJaWYg KElTX0dFTihkZXZfcHJpdiwgOSkgJiYgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAgCQlw YXJhbXMtPmdlbjlfd2FfY2ZiX3N0cmlkZSA9IERJVl9ST1VORF9VUChjYWNoZS0+cGxhbmUuc3Jj X3csCj4gICAJCQkJCQkzMiAqIGZiYy0+dGhyZXNob2xkKSAqIDg7Cj4gICB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYwo+IGluZGV4IDc3YzEyM2NjODgxNy4u ZmYyNzQzY2NiZWNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zp Zm9fdW5kZXJydW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5k ZXJydW4uYwo+IEBAIC0yNjAsOSArMjYwLDkgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9zZXRfY3B1 X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAKPiAg IAlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikpCj4gICAJCWk5eHhfc2V0X2ZpZm9fdW5k ZXJydW5fcmVwb3J0aW5nKGRldiwgcGlwZSwgZW5hYmxlLCBvbGQpOwo+IC0JZWxzZSBpZiAoSVNf R0VONShkZXZfcHJpdikgfHwgSVNfR0VONihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4o ZGV2X3ByaXYsIDUpIHx8IElTX0dFTihkZXZfcHJpdiwgNikpCj4gICAJCWlyb25sYWtlX3NldF9m aWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSk7Cj4gLQllbHNlIGlmIChJ U19HRU43KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gICAJ CWl2eWJyaWRnZV9zZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUs IG9sZCk7Cj4gICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICAgCQlicm9h ZHdlbGxfc2V0X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldiwgcGlwZSwgZW5hYmxlKTsKPiBA QCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgaW50ZWxfY2hlY2tfY3B1X2ZpZm9fdW5kZXJydW5zKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCQlpZiAoSEFTX0dNQ0hf RElTUExBWShkZXZfcHJpdikpCj4gICAJCQlpOXh4X2NoZWNrX2ZpZm9fdW5kZXJydW5zKGNydGMp Owo+IC0JCWVsc2UgaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJCWVsc2UgaWYgKElTX0dFTihk ZXZfcHJpdiwgNykpCj4gICAJCQlpdnlicmlkZ2VfY2hlY2tfZmlmb191bmRlcnJ1bnMoY3J0Yyk7 Cj4gICAJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3LmMKPiBpbmRleCBhNjcx NDRlZTVjZWIuLjRiNDM3ZTA1ZTJjZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfZncuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19m dy5jCj4gQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBndWNfcHJlcGFyZV94ZmVyKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAllbHNlCj4gICAJCUk5MTVfV1JJVEUoR0VOOV9HVF9Q TV9DT05GSUcsIEdUX0RPT1JCRUxMX0VOQUJMRSk7Cj4gICAKPiAtCWlmIChJU19HRU45KGRldl9w cml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgIAkJLyogRE9QIENsb2Nr IEdhdGluZyBFbmFibGUgZm9yIEd1QyBjbG9ja3MgKi8KPiAgIAkJSTkxNV9XUklURShHRU43X01J U0NDUENUTCwgKEdFTjhfRE9QX0NMT0NLX0dBVEVfR1VDX0VOQUJMRSB8Cj4gICAJCQkJCSAgICBJ OTE1X1JFQUQoR0VON19NSVNDQ1BDVEwpKSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFu Z2NoZWNrLmMKPiBpbmRleCA0MTkyMWE4NDNkNDIuLjQ5NWZhMTQ1ZjM3ZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jCj4gQEAgLTIzNiw3ICsyMzYsNyBAQCBlbmdp bmVfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQpCj4gICAJ aWYgKGhhICE9IEVOR0lORV9ERUFEKQo+ICAgCQlyZXR1cm4gaGE7Cj4gICAKPiAtCWlmIChJU19H RU4yKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ICAgCQlyZXR1cm4g RU5HSU5FX0RFQUQ7Cj4gICAKPiAgIAkvKiBJcyB0aGUgY2hpcCBoYW5naW5nIG9uIGEgV0FJVF9G T1JfRVZFTlQ/Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBkN2ZhMzAxYjVlYzcu LjljYjhmYjhmMTk4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTIwMDIs NyArMjAwMiw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoX3JlbmRlcihzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCQkgKiBPbiBHRU45OiBiZWZvcmUgVkZfQ0FDSEVfSU5W QUxJREFURSB3ZSBuZWVkIHRvIGVtaXQgYSBOVUxMCj4gICAJCSAqIHBpcGUgY29udHJvbC4KPiAg IAkJICovCj4gLQkJaWYgKElTX0dFTjkocmVxdWVzdC0+aTkxNSkpCj4gKwkJaWYgKElTX0dFTihy ZXF1ZXN0LT5pOTE1LCA5KSkKPiAgIAkJCXZmX2ZsdXNoX3dhID0gdHJ1ZTsKPiAgIAo+ICAgCQkv KiBXYUZvckdBTUhhbmc6a2JsICovCj4gQEAgLTIzNTcsNyArMjM1Nyw3IEBAIG1ha2VfcnBjcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJICogc3Vic2xpY2VzIGFyZSBl bmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3VyIG9uIHRoZSBmaXJzdAo+ICAg CSAqIHNsaWNlLgo+ICAgCSAqLwo+IC0JaWYgKElTX0dFTjExKGRldl9wcml2KSAmJiBzbGljZXMg PT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMTEpICYm IHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7Cj4gICAJCUdFTV9CVUdfT04oc3Vic2xp Y2VzICYgMSk7Cj4gICAKPiAgIAkJc3Vic2xpY2VfcGcgPSBmYWxzZTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHZkcy5jCj4gaW5kZXggZTZjNWQ5ODVlYTBhLi5iODVlMTk1ZjdjOGEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wcmVfZW5hYmxlX2x2ZHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g ICAJICogc3BlY2lhbCBsdmRzIGRpdGhlciBjb250cm9sIGJpdCBvbiBwY2gtc3BsaXQgcGxhdGZv cm1zLCBkaXRoZXJpbmcgaXMKPiAgIAkgKiBvbmx5IGNvbnRyb2xsZWQgdGhyb3VnaCB0aGUgUElQ RUNPTkYgcmVnLgo+ICAgCSAqLwo+IC0JaWYgKElTX0dFTjQoZGV2X3ByaXYpKSB7Cj4gKwlpZiAo SVNfR0VOKGRldl9wcml2LCA0KSkgewo+ICAgCQkvKgo+ICAgCQkgKiBCc3BlYyB3b3JkaW5nIHN1 Z2dlc3RzIHRoYXQgTFZEUyBwb3J0IGRpdGhlcmluZyBvbmx5IGV4aXN0cwo+ICAgCQkgKiBmb3Ig MThicHAgcGFuZWxzLgo+IEBAIC05MTksNyArOTE5LDcgQEAgdm9pZCBpbnRlbF9sdmRzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWludGVsX2VuY29kZXItPmNs b25lYWJsZSA9IDA7Cj4gICAJaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKQo+ICAgCQlpbnRl bF9lbmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAwKSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7Cj4g LQllbHNlIGlmIChJU19HRU40KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJp diwgNCkpCj4gICAJCWludGVsX2VuY29kZXItPmNydGNfbWFzayA9ICgxIDw8IDApIHwgKDEgPDwg MSk7Cj4gICAJZWxzZQo+ICAgCQlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAxKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gaW5kZXggNzdlOTg3MWE4YzlhLi5lOTc2YzVj ZTU0NzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gQEAgLTE5Myw3ICsxOTMs NyBAQCBzdGF0aWMgYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gICAJfQo+ICAgCj4gICAJLyogV2FEaXNhYmxlU2tpcENhY2hpbmc6c2ts LGJ4dCxrYmwsZ2xrICovCj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCWlmIChJU19H RU4oZGV2X3ByaXYsIDkpKSB7Cj4gICAJCWludCBpOwo+ICAgCj4gICAJCWZvciAoaSA9IDA7IGkg PCB0YWJsZS0+c2l6ZTsgaSsrKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBp bmRleCAyMGVhN2M5OWQxM2EuLmMxNTNiZTA0MzA3OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMKPiBAQCAtNTQxLDcgKzU0MSw3IEBAIHN0YXRpYyB1MzIgY2FsY19zd2lk dGhzdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBvZmZzZXQsIHUzMiB3 aWR0Cj4gICB7Cj4gICAJdTMyIHN3Owo+ICAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4g KwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgIAkJc3cgPSBBTElHTigob2Zmc2V0ICYgMzEp ICsgd2lkdGgsIDMyKTsKPiAgIAllbHNlCj4gICAJCXN3ID0gQUxJR04oKG9mZnNldCAmIDYzKSAr IHdpZHRoLCA2NCk7Cj4gQEAgLTc3OCw3ICs3NzgsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJs YXlfZG9fcHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAgCQl1MzIg b2NvbmZpZzsKPiAgIAo+ICAgCQlvY29uZmlnID0gT0NPTkZfQ0NfT1VUXzhCSVQ7Cj4gLQkJaWYg KElTX0dFTjQoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDQpKQo+ICAgCQkJ b2NvbmZpZyB8PSBPQ09ORl9DU0NfTU9ERV9CVDcwOTsKPiAgIAkJb2NvbmZpZyB8PSBwaXBlID09 IDAgPwo+ICAgCQkJT0NPTkZfUElQRV9BIDogT0NPTkZfUElQRV9COwo+IEBAIC0xMDEyLDcgKzEw MTIsNyBAQCBzdGF0aWMgaW50IGNoZWNrX292ZXJsYXlfc3JjKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgIAo+ICAgCWlmIChyZWMtPnN0cmlkZV9ZICYgc3RyaWRlX21hc2sg fHwgcmVjLT5zdHJpZGVfVVYgJiBzdHJpZGVfbWFzaykKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4g LQlpZiAoSVNfR0VONChkZXZfcHJpdikgJiYgcmVjLT5zdHJpZGVfWSA8IDUxMikKPiArCWlmIChJ U19HRU4oZGV2X3ByaXYsIDQpICYmIHJlYy0+c3RyaWRlX1kgPCA1MTIpCj4gICAJCXJldHVybiAt RUlOVkFMOwo+ICAgCj4gICAJdG1wID0gKHJlYy0+ZmxhZ3MgJiBJOTE1X09WRVJMQVlfVFlQRV9N QVNLKSA9PSBJOTE1X09WRVJMQVlfWVVWX1BMQU5BUiA/Cj4gQEAgLTEyNDYsNyArMTI0Niw3IEBA IGludCBpbnRlbF9vdmVybGF5X2F0dHJzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCj4gICAJCWF0dHJzLT5jb250cmFzdCAgID0gb3ZlcmxheS0+Y29udHJhc3Q7Cj4g ICAJCWF0dHJzLT5zYXR1cmF0aW9uID0gb3ZlcmxheS0+c2F0dXJhdGlvbjsKPiAgIAo+IC0JCWlm ICghSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCQlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikpIHsK PiAgIAkJCWF0dHJzLT5nYW1tYTAgPSBJOTE1X1JFQUQoT0dBTUMwKTsKPiAgIAkJCWF0dHJzLT5n YW1tYTEgPSBJOTE1X1JFQUQoT0dBTUMxKTsKPiAgIAkJCWF0dHJzLT5nYW1tYTIgPSBJOTE1X1JF QUQoT0dBTUMyKTsKPiBAQCAtMTI3MCw3ICsxMjcwLDcgQEAgaW50IGludGVsX292ZXJsYXlfYXR0 cnNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJdXBkYXRl X3JlZ19hdHRycyhvdmVybGF5LCBvdmVybGF5LT5yZWdzKTsKPiAgIAo+ICAgCQlpZiAoYXR0cnMt PmZsYWdzICYgSTkxNV9PVkVSTEFZX1VQREFURV9HQU1NQSkgewo+IC0JCQlpZiAoSVNfR0VOMihk ZXZfcHJpdikpCj4gKwkJCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ICAgCQkJCWdvdG8gb3V0 X3VubG9jazsKPiAgIAo+ICAgCQkJaWYgKG92ZXJsYXktPmFjdGl2ZSkgewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IGU2Y2Q3YjU1YzAxOC4uZWUzZTA4NDJkNTQyIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gQEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0 aWMgdm9pZCBpOXh4X3NldF9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGUsIHUzMgo+ICAgCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2X3ByaXYt PmRybS5wZGV2LCBMQlBDLCBsYnBjKTsKPiAgIAl9Cj4gICAKPiAtCWlmIChJU19HRU40KGRldl9w cml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNCkpIHsKPiAgIAkJbWFzayA9IEJBQ0tM SUdIVF9EVVRZX0NZQ0xFX01BU0s7Cj4gICAJfSBlbHNlIHsKPiAgIAkJbGV2ZWwgPDw9IDE7Cj4g QEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9iYWNrbGlnaHQoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gICAJICogODU1Z20gb25s eSwgYnV0IGNoZWNraW5nIGZvciBnZW4yIGlzIHNhZmUsIGFzIDg1NWdtIGlzIHRoZSBvbmx5IGdl bjIKPiAgIAkgKiB0aGF0IGhhcyBiYWNrbGlnaHQuCj4gICAJICovCj4gLQlpZiAoSVNfR0VOMihk ZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgIAkJSTkxNV9XUklURShC TENfSElTVF9DVEwsIEJMTV9ISVNUT0dSQU1fRU5BQkxFKTsKPiAgIH0KPiAgIAo+IEBAIC0xNTU3 LDcgKzE1NTcsNyBAQCBzdGF0aWMgaW50IGk5eHhfc2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVudQo+ICAgCj4gICAJY3RsID0gSTkx NV9SRUFEKEJMQ19QV01fQ1RMKTsKPiAgIAo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IElT X0k5MTVHTShkZXZfcHJpdikgfHwgSVNfSTk0NUdNKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4o ZGV2X3ByaXYsIDIpIHx8IElTX0k5MTVHTShkZXZfcHJpdikgfHwgSVNfSTk0NUdNKGRldl9wcml2 KSkKPiAgIAkJcGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2RlID0gY3RsICYgQkxNX0xF R0FDWV9NT0RFOwo+ICAgCj4gICAJaWYgKElTX1BJTkVWSUVXKGRldl9wcml2KSkKPiBAQCAtMTg4 Niw3ICsxODg2LDcgQEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGlu dGVsX3BhbmVsICpwYW5lbCkKPiAgIAkJCXBhbmVsLT5iYWNrbGlnaHQuZ2V0ID0gdmx2X2dldF9i YWNrbGlnaHQ7Cj4gICAJCQlwYW5lbC0+YmFja2xpZ2h0Lmh6X3RvX3B3bSA9IHZsdl9oel90b19w d207Cj4gICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikpIHsKPiArCX0gZWxz ZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkgewo+ICAgCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVw ID0gaTk2NV9zZXR1cF9iYWNrbGlnaHQ7Cj4gICAJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0g aTk2NV9lbmFibGVfYmFja2xpZ2h0Owo+ICAgCQlwYW5lbC0+YmFja2xpZ2h0LmRpc2FibGUgPSBp OTY1X2Rpc2FibGVfYmFja2xpZ2h0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9waXBlX2NyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMu Ywo+IGluZGV4IGYzYzkwMTBlMzMyYS4uOWU4NzBjYWY4MTA0IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9waXBlX2NyYy5jCj4gQEAgLTQyNywxMyArNDI3LDEzIEBAIHN0YXRpYyBpbnQg Z2V0X25ld19jcmNfY3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g ICAJCQkgICAgICAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2UgKnNvdXJjZSwgdTMyICp2YWws Cj4gICAJCQkgICAgICAgYm9vbCBzZXRfd2EpCj4gICB7Cj4gLQlpZiAoSVNfR0VOMihkZXZfcHJp dikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgIAkJcmV0dXJuIGk4eHhfcGlwZV9j cmNfY3RsX3JlZyhzb3VyY2UsIHZhbCk7Cj4gICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDUpCj4gICAJCXJldHVybiBpOXh4X3BpcGVfY3JjX2N0bF9yZWcoZGV2X3ByaXYsIHBpcGUs IHNvdXJjZSwgdmFsKTsKPiAgIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgIAkJcmV0dXJuIHZsdl9waXBlX2NyY19jdGxfcmVn KGRldl9wcml2LCBwaXBlLCBzb3VyY2UsIHZhbCk7Cj4gLQllbHNlIGlmIChJU19HRU41KGRldl9w cml2KSB8fCBJU19HRU42KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwg NSkgfHwgSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgIAkJcmV0dXJuIGlsa19waXBlX2NyY19jdGxf cmVnKHNvdXJjZSwgdmFsKTsKPiAgIAllbHNlCj4gICAJCXJldHVybiBpdmJfcGlwZV9jcmNfY3Rs X3JlZyhkZXZfcHJpdiwgcGlwZSwgc291cmNlLCB2YWwsIHNldF93YSk7Cj4gQEAgLTU0NCwxMyAr NTQ0LDEzIEBAIHN0YXRpYyBpbnQKPiAgIGludGVsX2lzX3ZhbGlkX2NyY19zb3VyY2Uoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJICBjb25zdCBlbnVtIGludGVsX3Bp cGVfY3JjX3NvdXJjZSBzb3VyY2UpCj4gICB7Cj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4g KwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgIAkJcmV0dXJuIGk4eHhfY3JjX3NvdXJjZV92 YWxpZChkZXZfcHJpdiwgc291cmNlKTsKPiAgIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNSkKPiAgIAkJcmV0dXJuIGk5eHhfY3JjX3NvdXJjZV92YWxpZChkZXZfcHJpdiwgc291cmNl KTsKPiAgIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPiAgIAkJcmV0dXJuIHZsdl9jcmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBz b3VyY2UpOwo+IC0JZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikgfHwgSVNfR0VONihkZXZfcHJp dikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUpIHx8IElTX0dFTihkZXZfcHJpdiwg NikpCj4gICAJCXJldHVybiBpbGtfY3JjX3NvdXJjZV92YWxpZChkZXZfcHJpdiwgc291cmNlKTsK PiAgIAllbHNlCj4gICAJCXJldHVybiBpdmJfY3JjX3NvdXJjZV92YWxpZChkZXZfcHJpdiwgc291 cmNlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCBhMjZiNGVkZGRhMjUuLjlkNmJl Y2VjNDIwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yMjczLDcgKzIyNzMs NyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2Vk X2NydGMpCj4gICAKPiAgIAlpZiAoSVNfSTk0NUdNKGRldl9wcml2KSkKPiAgIAkJd21faW5mbyA9 ICZpOTQ1X3dtX2luZm87Cj4gLQllbHNlIGlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwllbHNl IGlmICghSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgIAkJd21faW5mbyA9ICZpOTE1X3dtX2luZm87 Cj4gICAJZWxzZQo+ICAgCQl3bV9pbmZvID0gJmk4MzBfYV93bV9pbmZvOwo+IEBAIC0yMjg3LDcg KzIyODcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAq dW51c2VkX2NydGMpCj4gICAJCQljcnRjLT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKPiAgIAkJ aW50IGNwcDsKPiAgIAo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VO KGRldl9wcml2LCAyKSkKPiAgIAkJCWNwcCA9IDQ7Cj4gICAJCWVsc2UKPiAgIAkJCWNwcCA9IGZi LT5mb3JtYXQtPmNwcFswXTsKPiBAQCAtMjMwMiw3ICsyMzAyLDcgQEAgc3RhdGljIHZvaWQgaTl4 eF91cGRhdGVfd20oc3RydWN0IGludGVsX2NydGMgKnVudXNlZF9jcnRjKQo+ICAgCQkJcGxhbmVh X3dtID0gd21faW5mby0+bWF4X3dtOwo+ICAgCX0KPiAgIAo+IC0JaWYgKElTX0dFTjIoZGV2X3By aXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gICAJCXdtX2luZm8gPSAmaTgzMF9i Y193bV9pbmZvOwo+ICAgCj4gICAJZmlmb19zaXplID0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Zp Zm9fc2l6ZShkZXZfcHJpdiwgUExBTkVfQik7Cj4gQEAgLTIzMTQsNyArMjMxNCw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVzZWRfY3J0YykKPiAg IAkJCWNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZiOwo+ICAgCQlpbnQgY3BwOwo+ICAgCj4g LQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ ICAgCQkJY3BwID0gNDsKPiAgIAkJZWxzZQo+ICAgCQkJY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBd Owo+IEBAIC0yOTI2LDcgKzI5MjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9maXh1cF9zcHJfd21f bGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJICAgICAg IHVpbnQxNl90IHdtWzVdKQo+ICAgewo+ICAgCS8qIElMSyBzcHJpdGUgTFAwIGxhdGVuY3kgaXMg MTMwMCBucyAqLwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZf cHJpdiwgNSkpCj4gICAJCXdtWzBdID0gMTM7Cj4gICB9Cj4gICAKPiBAQCAtMjkzNCw3ICsyOTM0 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZml4dXBfY3VyX3dtX2xhdGVuY3koc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCSAgICAgICB1aW50MTZfdCB3bVs1XSkKPiAg IHsKPiAgIAkvKiBJTEsgY3Vyc29yIExQMCBsYXRlbmN5IGlzIDEzMDAgbnMgKi8KPiAtCWlmIChJ U19HRU41KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQl3bVsw XSA9IDEzOwo+ICAgfQo+ICAgCj4gQEAgLTMwNjEsNyArMzA2MSw3IEBAIHN0YXRpYyB2b2lkIGls a19zZXR1cF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IAlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRldl9wcml2LCAiU3ByaXRlIiwgZGV2X3ByaXYtPndt LnNwcl9sYXRlbmN5KTsKPiAgIAlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRldl9wcml2LCAiQ3Vy c29yIiwgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5KTsKPiAgIAo+IC0JaWYgKElTX0dFTjYoZGV2 X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ICAgCQlzbmJfd21fbGF0 ZW5jeV9xdWlyayhkZXZfcHJpdik7Cj4gICAJCXNuYl93bV9scDNfaXJxX3F1aXJrKGRldl9wcml2 KTsKPiAgIAl9Cj4gQEAgLTMzMTgsNyArMzMxOCw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9tZXJn ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCSAqIFdoYXQgd2Ugc2hvdWxkIGNoZWNrIGhl cmUgaXMgd2hldGhlciBGQkMgY2FuIGJlCj4gICAJICogZW5hYmxlZCBzb21ldGltZSBsYXRlci4K PiAgIAkgKi8KPiAtCWlmIChJU19HRU41KGRldl9wcml2KSAmJiAhbWVyZ2VkLT5mYmNfd21fZW5h YmxlZCAmJgo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkgJiYgIW1lcmdlZC0+ZmJjX3dtX2Vu YWJsZWQgJiYKPiAgIAkgICAgaW50ZWxfZmJjX2lzX2FjdGl2ZShkZXZfcHJpdikpIHsKPiAgIAkJ Zm9yIChsZXZlbCA9IDI7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ICAgCQkJc3Ry dWN0IGludGVsX3dtX2xldmVsICp3bSA9ICZtZXJnZWQtPndtW2xldmVsXTsKPiBAQCAtMzc1Niw5 ICszNzU2LDkgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICAgCWlmICghaW50ZWxfaGFzX3NhZ3YoZGV2X3ByaXYpKQo+ICAgCQly ZXR1cm4gZmFsc2U7Cj4gICAKPiAtCWlmIChJU19HRU45KGRldl9wcml2KSkKPiArCWlmIChJU19H RU4oZGV2X3ByaXYsIDkpKQo+ICAgCQlzYWd2X2Jsb2NrX3RpbWVfdXMgPSAzMDsKPiAtCWVsc2Ug aWYgKElTX0dFTjEwKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTAp KQo+ICAgCQlzYWd2X2Jsb2NrX3RpbWVfdXMgPSAyMDsKPiAgIAllbHNlCj4gICAJCXNhZ3ZfYmxv Y2tfdGltZV91cyA9IDEwOwo+IEBAIC00NzAyLDcgKzQ3MDIsNyBAQCBza2xfY29tcHV0ZV9wbGFu ZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgIAo+ ICAgCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lID0gZGl2X2ZpeGVkMTYoaW50ZXJtX3BicGws Cj4gICAJCQkJCQkJd3AtPnlfbWluX3NjYW5saW5lcyk7Cj4gLQl9IGVsc2UgaWYgKHdwLT54X3Rp bGVkICYmIElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKHdwLT54X3RpbGVkICYm IElTX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgIAkJaW50ZXJtX3BicGwgPSBESVZfUk9VTkRfVVAo d3AtPnBsYW5lX2J5dGVzX3Blcl9saW5lLAo+ICAgCQkJCQkgICB3cC0+ZGJ1Zl9ibG9ja19zaXpl KTsKPiAgIAkJd3AtPnBsYW5lX2Jsb2Nrc19wZXJfbGluZSA9IHUzMl90b19maXhlZDE2KGludGVy bV9wYnBsKTsKPiBAQCAtNDc2OCwxMyArNDc2OCwxMyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRl X3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gICAJCQlz ZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwo+ICAgCQl9IGVsc2UgaWYgKGRkYl9hbGxvY2F0aW9u ID49Cj4gICAJCQkgZml4ZWQxNl90b191MzJfcm91bmRfdXAod3AtPnBsYW5lX2Jsb2Nrc19wZXJf bGluZSkpIHsKPiAtCQkJaWYgKElTX0dFTjkoZGV2X3ByaXYpICYmCj4gKwkJCWlmIChJU19HRU4o ZGV2X3ByaXYsIDkpICYmCj4gICAJCQkgICAgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAg CQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZDE2KG1ldGhvZDEsIG1ldGhvZDIpOwo+ICAg CQkJZWxzZQo+ICAgCQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1ldGhvZDI7Cj4gICAJCX0gZWxzZSBp ZiAobGF0ZW5jeSA+PSB3cC0+bGluZXRpbWVfdXMpIHsKPiAtCQkJaWYgKElTX0dFTjkoZGV2X3By aXYpICYmCj4gKwkJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCj4gICAJCQkgICAgIUlTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAgCQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZDE2 KG1ldGhvZDEsIG1ldGhvZDIpOwo+ICAgCQkJZWxzZQo+IEBAIC03MDQ5LDcgKzcwNDksNyBAQCBz dGF0aWMgdm9pZCBnZW45X2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0Vf QUxMKTsKPiAgIAo+ICAgCS8qIFByb2dyYW0gZGVmYXVsdHMgYW5kIHRocmVzaG9sZHMgZm9yIFJQ UyAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwg OSkpCj4gICAJCUk5MTVfV1JJVEUoR0VONl9SQ19WSURFT19GUkVRLAo+ICAgCQkJR0VOOV9GUkVR VUVOQ1koZGV2X3ByaXYtPmd0X3BtLnJwcy5ycDFfZnJlcSkpOwo+ICAgCj4gQEAgLTcyODUsOSAr NzI4NSw5IEBAIHN0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAlyYzZ2aWRzID0gMDsKPiAgIAlyZXQgPSBzYW5keWJy aWRnZV9wY29kZV9yZWFkKGRldl9wcml2LCBHRU42X1BDT0RFX1JFQURfUkM2VklEUywgJnJjNnZp ZHMpOwo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpICYmIHJldCkgewo+ICsJaWYgKElTX0dFTihk ZXZfcHJpdiwgNikgJiYgcmV0KSB7Cj4gICAJCURSTV9ERUJVR19EUklWRVIoIkNvdWxkbid0IGNo ZWNrIGZvciBCSU9TIHdvcmthcm91bmRcbiIpOwo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRldl9w cml2KSAmJiAoR0VONl9ERUNPREVfUkM2X1ZJRChyYzZ2aWRzICYgMHhmZikgPCA0NTApKSB7Cj4g Kwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikgJiYgKEdFTjZfREVDT0RFX1JDNl9WSUQo cmM2dmlkcyAmIDB4ZmYpIDwgNDUwKSkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJZb3Ugc2hv dWxkIHVwZGF0ZSB5b3VyIEJJT1MuIENvcnJlY3RpbmcgbWluaW11bSByYzYgdm9sdGFnZSAoJWRt Vi0+JWRtVilcbiIsCj4gICAJCQkgIEdFTjZfREVDT0RFX1JDNl9WSUQocmM2dmlkcyAmIDB4ZmYp LCA0NTApOwo+ICAgCQlyYzZ2aWRzICY9IDB4ZmZmZjAwOwo+IEBAIC03OTg3LDcgKzc5ODcsNyBA QCB1bnNpZ25lZCBsb25nIGk5MTVfY2hpcHNldF92YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgewo+ICAgCXVuc2lnbmVkIGxvbmcgdmFsOwo+ICAgCj4gLQlpZiAoIUlT X0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKCFJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQlyZXR1 cm4gMDsKPiAgIAo+ICAgCXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKPiBAQCAtODA3MSw3 ICs4MDcxLDcgQEAgc3RhdGljIHZvaWQgX19pOTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgdm9pZCBpOTE1X3VwZGF0ZV9nZnhfdmFs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCWlmICghSVNfR0VO NShkZXZfcHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgNSkpCj4gICAJCXJldHVybjsK PiAgIAo+ICAgCXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKPiBAQCAtODEyMiw3ICs4MTIy LDcgQEAgdW5zaWduZWQgbG9uZyBpOTE1X2dmeF92YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgewo+ICAgCXVuc2lnbmVkIGxvbmcgdmFsOwo+ICAgCj4gLQlpZiAoIUlT X0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKCFJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQlyZXR1 cm4gMDsKPiAgIAo+ICAgCXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKPiBAQCAtODQxMCw3 ICs4NDEwLDcgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCQkgICAgICBpbnRlbF9mcmVxX29wY29kZShkZXZfcHJp diwgNDUwKSk7Cj4gICAKPiAgIAkvKiBBZnRlciBzZXR0aW5nIG1heC1zb2Z0bGltaXQsIGZpbmQg dGhlIG92ZXJjbG9jayBtYXggZnJlcSAqLwo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8Cj4g KwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSB8fAo+ICAgCSAgICBJU19JVllCUklER0UoZGV2X3By aXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gICAJCXUzMiBwYXJhbXMgPSAwOwo+ICAg Cj4gQEAgLTk0ODAsOSArOTQ4MCw5IEBAIHZvaWQgaW50ZWxfaW5pdF9jbG9ja19nYXRpbmdfaG9v a3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlkZXZfcHJpdi0+ZGlz cGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGl2Yl9pbml0X2Nsb2NrX2dhdGluZzsKPiAgIAllbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5p dF9jbG9ja19nYXRpbmcgPSB2bHZfaW5pdF9jbG9ja19nYXRpbmc7Cj4gLQllbHNlIGlmIChJU19H RU42KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gICAJCWRl dl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gZ2VuNl9pbml0X2Nsb2NrX2dhdGlu ZzsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCA1KSkKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBp bGtfaW5pdF9jbG9ja19nYXRpbmc7Cj4gICAJZWxzZSBpZiAoSVNfRzRYKGRldl9wcml2KSkKPiAg IAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBnNHhfaW5pdF9jbG9ja19n YXRpbmc7Cj4gQEAgLTk0OTAsMTEgKzk0OTAsMTEgQEAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dh dGluZ19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWRldl9w cml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gaTk2NWdtX2luaXRfY2xvY2tfZ2F0aW5n Owo+ICAgCWVsc2UgaWYgKElTX0k5NjVHKGRldl9wcml2KSkKPiAgIAkJZGV2X3ByaXYtPmRpc3Bs YXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpOTY1Z19pbml0X2Nsb2NrX2dhdGluZzsKPiAtCWVsc2Ug aWYgKElTX0dFTjMoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAzKSkK PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBnZW4zX2luaXRfY2xv Y2tfZ2F0aW5nOwo+ICAgCWVsc2UgaWYgKElTX0k4NVgoZGV2X3ByaXYpIHx8IElTX0k4NjVHKGRl dl9wcml2KSkKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpODV4 X2luaXRfY2xvY2tfZ2F0aW5nOwo+IC0JZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwll bHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0 X2Nsb2NrX2dhdGluZyA9IGk4MzBfaW5pdF9jbG9ja19nYXRpbmc7Cj4gICAJZWxzZSB7Cj4gICAJ CU1JU1NJTkdfQ0FTRShJTlRFTF9ERVZJRChkZXZfcHJpdikpOwo+IEBAIC05NTA4LDcgKzk1MDgs NyBAQCB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCS8qIEZvciBjeHNyICovCj4gICAJaWYgKElTX1BJTkVWSUVXKGRldl9wcml2KSkKPiAg IAkJaTkxNV9waW5ldmlld19nZXRfbWVtX2ZyZXEoZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSVNf R0VONShkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAgCQlp OTE1X2lyb25sYWtlX2dldF9tZW1fZnJlcShkZXZfcHJpdik7Cj4gICAKPiAgIAkvKiBGb3IgRklG TyB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+IEBAIC05NTIwLDkgKzk1MjAsOSBAQCB2b2lkIGludGVs X2luaXRfcG0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCX0gZWxzZSBp ZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpIHsKPiAgIAkJaWxrX3NldHVwX3dtX2xhdGVuY3ko ZGV2X3ByaXYpOwo+ICAgCj4gLQkJaWYgKChJU19HRU41KGRldl9wcml2KSAmJiBkZXZfcHJpdi0+ d20ucHJpX2xhdGVuY3lbMV0gJiYKPiArCQlpZiAoKElTX0dFTihkZXZfcHJpdiwgNSkgJiYgZGV2 X3ByaXYtPndtLnByaV9sYXRlbmN5WzFdICYmCj4gICAJCSAgICAgZGV2X3ByaXYtPndtLnNwcl9s YXRlbmN5WzFdICYmIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeVsxXSkgfHwKPiAtCQkgICAgKCFJ U19HRU41KGRldl9wcml2KSAmJiBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbMF0gJiYKPiArCQkg ICAgKCFJU19HRU4oZGV2X3ByaXYsIDUpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAm Jgo+ICAgCQkgICAgIGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeVswXSAmJiBkZXZfcHJpdi0+d20u Y3VyX2xhdGVuY3lbMF0pKSB7Cj4gICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVf d20gPSBpbGtfY29tcHV0ZV9waXBlX3dtOwo+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0 ZV9pbnRlcm1lZGlhdGVfd20gPQo+IEBAIC05NTYzLDEyICs5NTYzLDEyIEBAIHZvaWQgaW50ZWxf aW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCQlkZXZfcHJp di0+ZGlzcGxheS51cGRhdGVfd20gPSBOVUxMOwo+ICAgCQl9IGVsc2UKPiAgIAkJCWRldl9wcml2 LT5kaXNwbGF5LnVwZGF0ZV93bSA9IHBpbmV2aWV3X3VwZGF0ZV93bTsKPiAtCX0gZWxzZSBpZiAo SVNfR0VONChkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkg ewo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpOTY1X3VwZGF0ZV93bTsKPiAt CX0gZWxzZSBpZiAoSVNfR0VOMyhkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCAzKSkgewo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpOXh4X3Vw ZGF0ZV93bTsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZSA9IGk5eHhfZ2V0 X2ZpZm9fc2l6ZTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCX0gZWxz ZSBpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAgCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPm51bV9waXBlcyA9PSAxKSB7Cj4gICAJCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20g PSBpODQ1X3VwZGF0ZV93bTsKPiAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9maWZvX3NpemUg PSBpODQ1X2dldF9maWZvX3NpemU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBpbmRleCA0 YzRkZDFjMzEwY2UuLmRjZTM5ZjA2YjY4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wc3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j Cj4gQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxp ZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gICAJCXBzcl9tYXhfaCA9IDQw OTY7Cj4gICAJCXBzcl9tYXhfdiA9IDIzMDQ7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjkoZGV2X3By aXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgIAkJcHNyX21h eF9oID0gMzY0MDsKPiAgIAkJcHNyX21heF92ID0gMjMwNDsKPiAgIAl9Cj4gQEAgLTY4Niw3ICs2 ODYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAo+ICAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKQo+ICAgCQloc3dfcHNyX3NldHVwX2F1eChpbnRlbF9kcCk7Cj4gICAKPiAt CWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VOOShkZXZfcHJpdikgJiYK PiArCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VOKGRldl9wcml2LCA5 KSAmJgo+ICAgCQkJCQkgICAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpKSB7Cj4gICAJCWk5MTVf cmVnX3QgcmVnID0gZ2VuOV9jaGlja2VuX3RyYW5zX3JlZyhkZXZfcHJpdiwKPiAgIAkJCQkJCQlj cHVfdHJhbnNjb2Rlcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ IGluZGV4IGEyMDVjYzllNjBjYy4uYmI4YzkwMjg0Mzg1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xMjQsNyArMTI0LDcgQEAgZ2VuNF9yZW5kZXJf cmluZ19mbHVzaChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIG1vZGUpCj4gICAJY21kID0g TUlfRkxVU0g7Cj4gICAJaWYgKG1vZGUgJiBFTUlUX0lOVkFMSURBVEUpIHsKPiAgIAkJY21kIHw9 IE1JX0VYRV9GTFVTSDsKPiAtCQlpZiAoSVNfRzRYKHJxLT5pOTE1KSB8fCBJU19HRU41KHJxLT5p OTE1KSkKPiArCQlpZiAoSVNfRzRYKHJxLT5pOTE1KSB8fCBJU19HRU4ocnEtPmk5MTUsIDUpKQo+ ICAgCQkJY21kIHw9IE1JX0lOVkFMSURBVEVfSVNQOwo+ICAgCX0KPiAgIAo+IEBAIC0zOTIsNyAr MzkyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJLyogVGhlIHJpbmcgc3RhdHVzIHBhZ2UgYWRk cmVzc2VzIGFyZSBubyBsb25nZXIgbmV4dCB0byB0aGUgcmVzdCBvZgo+ICAgCSAqIHRoZSByaW5n IHJlZ2lzdGVycyBhcyBvZiBnZW43Lgo+ICAgCSAqLwo+IC0JaWYgKElTX0dFTjcoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkgewo+ICAgCQlzd2l0Y2ggKGVuZ2luZS0+ aWQpIHsKPiAgIAkJLyoKPiAgIAkJICogTm8gbW9yZSByaW5ncyBleGlzdCBvbiBHZW43LiBEZWZh dWx0IGNhc2UgaXMgb25seSB0byBzaHV0IHVwCj4gQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAkJCW1taW8gPSBWRUJPWF9IV1NfUEdBX0dFTjc7Cj4gICAJCQlicmVhazsK PiAgIAkJfQo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlm IChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gICAJCW1taW8gPSBSSU5HX0hXU19QR0FfR0VONihl bmdpbmUtPm1taW9fYmFzZSk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJbW1pbyA9IFJJTkdfSFdTX1BH QShlbmdpbmUtPm1taW9fYmFzZSk7Cj4gQEAgLTY4NCwxNyArNjg0LDE3IEBAIHN0YXRpYyBpbnQg aW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAKPiAg IAkvKiBSZXF1aXJlZCBmb3IgdGhlIGhhcmR3YXJlIHRvIHByb2dyYW0gc2NhbmxpbmUgdmFsdWVz IGZvciB3YWl0aW5nICovCj4gICAJLyogV2FFbmFibGVGbHVzaFRsYkludmFsaWRhdGlvbk1vZGU6 c25iICovCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2 LCA2KSkKPiAgIAkJSTkxNV9XUklURShHRlhfTU9ERSwKPiAgIAkJCSAgIF9NQVNLRURfQklUX0VO QUJMRShHRlhfVExCX0lOVkFMSURBVEVfRVhQTElDSVQpKTsKPiAgIAo+ICAgCS8qIFdhQkNTVkNT VGxiSW52YWxpZGF0aW9uTW9kZTppdmIsdmx2LGhzdyAqLwo+IC0JaWYgKElTX0dFTjcoZGV2X3By aXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gICAJCUk5MTVfV1JJVEUoR0ZYX01P REVfR0VONywKPiAgIAkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfVExCX0lOVkFMSURBVEVf RVhQTElDSVQpIHwKPiAgIAkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfUkVQTEFZX01PREUp KTsKPiAgIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9w cml2LCA2KSkgewo+ICAgCQkvKiBGcm9tIHRoZSBTYW5keWJyaWRnZSBQUk0sIHZvbHVtZSAxIHBh cnQgMywgcGFnZSAyNDoKPiAgIAkJICogIklmIHRoaXMgYml0IGlzIHNldCwgU1RDdW5pdCB3aWxs IGhhdmUgTFJBIGFzIHJlcGxhY2VtZW50Cj4gICAJCSAqICBwb2xpY3kuIFsuLi5dIFRoaXMgYml0 IG11c3QgYmUgcmVzZXQuICBMUkEgcmVwbGFjZW1lbnQKPiBAQCAtMTU3Myw3ICsxNTczLDcgQEAg c3RhdGljIGlubGluZSBpbnQgbWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs IHUzMiBmbGFncykKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAljb25zdCBpbnQg bnVtX3JpbmdzID0KPiAgIAkJLyogVXNlIGFuIGV4dGVuZGVkIHcvYSBvbiBnZW43IGlmIHNpZ25h bGxpbmcgZnJvbSBvdGhlciByaW5ncyAqLwo+IC0JCShIQVNfTEVHQUNZX1NFTUFQSE9SRVMoaTkx NSkgJiYgSVNfR0VONyhpOTE1KSkgPwo+ICsJCShIQVNfTEVHQUNZX1NFTUFQSE9SRVMoaTkxNSkg JiYgSVNfR0VOKGk5MTUsIDcpKSA/Cj4gICAJCUlOVEVMX0lORk8oaTkxNSktPm51bV9yaW5ncyAt IDEgOgo+ICAgCQkwOwo+ICAgCWJvb2wgZm9yY2VfcmVzdG9yZSA9IGZhbHNlOwo+IEBAIC0xNTg4 LDcgKzE1ODgsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQo+ICAgCQlmbGFncyB8PSBNSV9TQVZFX0VYVF9TVEFU RV9FTiB8IE1JX1JFU1RPUkVfRVhUX1NUQVRFX0VOOwo+ICAgCj4gICAJbGVuID0gNDsKPiAtCWlm IChJU19HRU43KGk5MTUpKQo+ICsJaWYgKElTX0dFTihpOTE1LCA3KSkKPiAgIAkJbGVuICs9IDIg KyAobnVtX3JpbmdzID8gNCpudW1fcmluZ3MgKyA2IDogMCk7Cj4gICAJaWYgKGZsYWdzICYgTUlf Rk9SQ0VfUkVTVE9SRSkgewo+ICAgCQlHRU1fQlVHX09OKGZsYWdzICYgTUlfUkVTVE9SRV9JTkhJ QklUKTsKPiBAQCAtMTYwMiw3ICsxNjAyLDcgQEAgc3RhdGljIGlubGluZSBpbnQgbWlfc2V0X2Nv bnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBmbGFncykKPiAgIAkJcmV0dXJuIFBU Ul9FUlIoY3MpOwo+ICAgCj4gICAJLyogV2FQcm9ncmFtTWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29u dGV4dDppdmIsdmx2LGhzdyxiZHcsY2h2ICovCj4gLQlpZiAoSVNfR0VONyhpOTE1KSkgewo+ICsJ aWYgKElTX0dFTihpOTE1LCA3KSkgewo+ICAgCQkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9B UkJfRElTQUJMRTsKPiAgIAkJaWYgKG51bV9yaW5ncykgewo+ICAgCQkJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqc2lnbmFsbGVyOwo+IEBAIC0xNjQ5LDcgKzE2NDksNyBAQCBzdGF0aWMgaW5saW5l IGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQo+ ICAgCSAqLwo+ICAgCSpjcysrID0gTUlfTk9PUDsKPiAgIAo+IC0JaWYgKElTX0dFTjcoaTkxNSkp IHsKPiArCWlmIChJU19HRU4oaTkxNSwgNykpIHsKPiAgIAkJaWYgKG51bV9yaW5ncykgewo+ICAg CQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwo+ICAgCQkJaTkxNV9yZWdfdCBs YXN0X3JlZyA9IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwo+IEBAIC0yMjcyLDkgKzIyNzIsOSBA QCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgIAkJZW5n aW5lLT5pbml0X2NvbnRleHQgPSBpbnRlbF9yY3NfY3R4X2luaXQ7Cj4gICAJCWVuZ2luZS0+ZW1p dF9mbHVzaCA9IGdlbjdfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gLQkJaWYgKElTX0dFTjYoZGV2X3By aXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQo+ICAgCQkJZW5naW5lLT5lbWl0X2Zs dXNoID0gZ2VuNl9yZW5kZXJfcmluZ19mbHVzaDsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONShkZXZf cHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkgewo+ICAgCQllbmdp bmUtPmVtaXRfZmx1c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAgCX0gZWxzZSB7Cj4g ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiBAQCAtMjMwNCwxMyArMjMwNCwxMyBA QCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgCj4gICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+ICAgCQkv KiBnZW42IGJzZCBuZWVkcyBhIHNwZWNpYWwgd2EgZm9yIHRhaWwgdXBkYXRlcyAqLwo+IC0JCWlm IChJU19HRU42KGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgIAkJ CWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbiA9IGdlbjZfYnNkX3NldF9kZWZhdWx0X3N1 Ym1pc3Npb247Cj4gICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfYnNkX3JpbmdfZmx1c2g7 Cj4gICAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfQlNEX1VTRVJfSU5URVJSVVBUOwo+ ICAgCX0gZWxzZSB7Cj4gICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGJzZF9yaW5nX2ZsdXNoOwo+ IC0JCWlmIChJU19HRU41KGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkK PiAgIAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gSUxLX0JTRF9VU0VSX0lOVEVSUlVQVDsK PiAgIAkJZWxzZQo+ICAgCQkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBJOTE1X0JTRF9VU0VS X0lOVEVSUlVQVDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5k ZXggNzJlZGFhN2ZmNDExLi4xYWU3NGU1NzkzODYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTk0LDExICs5NCwxMSBAQCBoYW5nY2hlY2tfYWN0aW9u X3RvX3N0cihjb25zdCBlbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIGEpCj4gICAj ZGVmaW5lIEk5MTVfTUFYX1NVQlNMSUNFUyA4Cj4gICAKPiAgICNkZWZpbmUgaW5zdGRvbmVfc2xp Y2VfbWFzayhkZXZfcHJpdl9fKSBcCj4gLQkoSVNfR0VONyhkZXZfcHJpdl9fKSA/IFwKPiArCShJ U19HRU4oZGV2X3ByaXZfXywgNykgPyBcCj4gICAJIDEgOiBJTlRFTF9JTkZPKGRldl9wcml2X18p LT5zc2V1LnNsaWNlX21hc2spCj4gICAKPiAgICNkZWZpbmUgaW5zdGRvbmVfc3Vic2xpY2VfbWFz ayhkZXZfcHJpdl9fKSBcCj4gLQkoSVNfR0VONyhkZXZfcHJpdl9fKSA/IFwKPiArCShJU19HRU4o ZGV2X3ByaXZfXywgNykgPyBcCj4gICAJIDEgOiBJTlRFTF9JTkZPKGRldl9wcml2X18pLT5zc2V1 LnN1YnNsaWNlX21hc2tbMF0pCj4gICAKPiAgICNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xp Y2Vfc3Vic2xpY2UoZGV2X3ByaXZfXywgc2xpY2VfXywgc3Vic2xpY2VfXykgXAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBpbmRleCA0MzUwYTUyNzA0MjMuLjllOTUw MWY4MmYwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBA QCAtNTA5LDcgKzUwOSw3IEBAIHN0YXRpYyBib29sIGhzd19wb3dlcl93ZWxsX2VuYWJsZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCSAqIEJJT1MncyBvd24gcmVxdWVz dCBiaXRzLCB3aGljaCBhcmUgZm9yY2VkLW9uIGZvciB0aGVzZSBwb3dlciB3ZWxscwo+ICAgCSAq IHdoZW4gZXhpdGluZyBEQzUvNi4KPiAgIAkgKi8KPiAtCWlmIChJU19HRU45KGRldl9wcml2KSAm JiAhSVNfR0VOOV9MUChkZXZfcHJpdikgJiYKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYm ICFJU19HRU45X0xQKGRldl9wcml2KSAmJgo+ICAgCSAgICAoaWQgPT0gU0tMX0RJU1BfUFdfMSB8 fCBpZCA9PSBTS0xfRElTUF9QV19NSVNDX0lPKSkKPiAgIAkJdmFsIHw9IEk5MTVfUkVBRChyZWdz LT5iaW9zKTsKPiAgIAo+IEBAIC0zMDU4LDcgKzMwNTgsNyBAQCBzdGF0aWMgdWludDMyX3QgZ2V0 X2FsbG93ZWRfZGNfbWFzayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gICAJCSAqIHN1c3BlbmQvcmVzdW1lLCBzbyBhbGxvdyBpdCB1bmNvbmRpdGlvbmFsbHkuCj4g ICAJCSAqLwo+ICAgCQltYXNrID0gRENfU1RBVEVfRU5fREM5Owo+IC0JfSBlbHNlIGlmIChJU19H RU4xMChkZXZfcHJpdikgfHwgSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAo SVNfR0VOKGRldl9wcml2LCAxMCkgfHwgSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiAgIAkJbWF4 X2RjID0gMjsKPiAgIAkJbWFzayA9IDA7Cj4gICAJfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9w cml2KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggZDJlMDAzZDhm M2RiLi5mNzBkMmM2MDc5MDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ IEBAIC0xMDg3LDcgKzEwODcsNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAgCj4gICAJZHZzY250ciA9IERW U19FTkFCTEUgfCBEVlNfR0FNTUFfRU5BQkxFOwo+ICAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJp dikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgIAkJZHZzY250ciB8PSBEVlNfVFJJ Q0tMRV9GRUVEX0RJU0FCTEU7Cj4gICAKPiAgIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkg ewo+IEBAIC0xOTgzLDcgKzE5ODMsNyBAQCBzdGF0aWMgYm9vbCBza2xfcGxhbmVfaGFzX3BsYW5h cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJaWYgKElTX1NLWUxBS0Uo ZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4g ICAKPiAtCWlmIChJU19HRU45KGRldl9wcml2KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikg JiYgcGlwZSA9PSBQSVBFX0MpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJiAhSVNfR0VN SU5JTEFLRShkZXZfcHJpdikgJiYgcGlwZSA9PSBQSVBFX0MpCj4gICAJCXJldHVybiBmYWxzZTsK PiAgIAo+ICAgCWlmIChwbGFuZV9pZCAhPSBQTEFORV9QUklNQVJZICYmIHBsYW5lX2lkICE9IFBM QU5FX1NQUklURTApCj4gQEAgLTIxNjMsNyArMjE2Myw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlwbGFuZS0+Y2hl Y2tfcGxhbmUgPSBnNHhfc3ByaXRlX2NoZWNrOwo+ICAgCj4gICAJCW1vZGlmaWVycyA9IGk5eHhf cGxhbmVfZm9ybWF0X21vZGlmaWVyczsKPiAtCQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiAr CQlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ICAgCQkJZm9ybWF0cyA9IHNuYl9wbGFuZV9m b3JtYXRzOwo+ICAgCQkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNuYl9wbGFuZV9mb3JtYXRz KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+IGluZGV4IGIzNGMzMThiMjM4ZC4uNDQ3 YjFkZTc3Y2M3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gQEAgLTM1NCw3ICszNTQs NyBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgIAo+ICAgCS8qIFdhRW5hYmxldUtlcm5lbEhlYWRlclZhbGlkRml4OnNrbCAqLwo+ICAgCS8q IFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0LGtibCAqLwo+IC0JaWYgKElT X0dFTjkoaTkxNSkpCj4gKwlpZiAoSVNfR0VOKGk5MTUsIDkpKQo+ICAgCQlhdHRlbXB0cyA9IDM7 Cj4gICAJZWxzZQo+ICAgCQlhdHRlbXB0cyA9IDE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5j b3JlLmMKPiBpbmRleCA2MzFiNDE2NWZlMDAuLmM2ZWIwNTNhOGZhZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTUyOCw3ICs1MjgsNyBAQCBjaGVja19mb3JfdW5j bGFpbWVkX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgIAkJ cmV0IHw9IHZsdl9jaGVja19mb3JfdW5jbGFpbWVkX21taW8oZGV2X3ByaXYpOwo+ICAgCj4gLQlp ZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VO KGRldl9wcml2LCA2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDcpKQo+ICAgCQlyZXQgfD0gZ2VuNl9j aGVja19mb3JfZmlmb19kZWJ1ZyhkZXZfcHJpdik7Cj4gICAKPiAgIAlyZXR1cm4gcmV0Owo+IEBA IC01NTYsNyArNTU2LDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRp emUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlkZXZfcHJpdi0+dW5j b3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KGRldl9wcml2LAo+ICAgCQkJCQkJICAgICAgcmVzdG9y ZV9mb3JjZXdha2UpOwo+ICAgCj4gLQkJaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0dFTjco ZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0dFTihkZXZfcHJp diwgNykpCj4gICAJCQlkZXZfcHJpdi0+dW5jb3JlLmZpZm9fY291bnQgPQo+ICAgCQkJCWZpZm9f ZnJlZV9lbnRyaWVzKGRldl9wcml2KTsKPiAgIAkJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2spOwo+IEBAIC0xMzk4LDcgKzEzOTgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91 bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA1IHx8IGludGVsX3ZncHVfYWN0aXZlKGRl dl9wcml2KSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsK PiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gICAJCWRldl9wcml2LT51bmNvcmUuZndf cmVzZXQgPSAwOwo+ICAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ3X3NldCA9IEZPUkNFV0FLRV9LRVJO RUw7Cj4gICAJCWRldl9wcml2LT51bmNvcmUuZndfY2xlYXIgPSAwOwo+IEBAIC0xNDM3LDcgKzE0 MzcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJCQkgICAgICAgRk9SQ0VXQUtFX01FRElB X1ZFQk9YX0dFTjExKGkpLAo+ICAgCQkJCSAgICAgICBGT1JDRVdBS0VfQUNLX01FRElBX1ZFQk9Y X0dFTjExKGkpKTsKPiAgIAkJfQo+IC0JfSBlbHNlIGlmIChJU19HRU4xMChkZXZfcHJpdikgfHwg SVNfR0VOOShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAxMCkg fHwgSVNfR0VOKGRldl9wcml2LCA5KSkgewo+ICAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZv cmNlX3dha2VfZ2V0ID0KPiAgIAkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFsbGJhY2s7Cj4gICAJ CWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBmd19kb21haW5zX3B1dDsK PiBAQCAtMTUwMyw3ICsxNTAzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFp bnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCQlmd19kb21h aW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX1JFTkRFUiwKPiAgIAkJCQkgICAgICAgRk9S Q0VXQUtFLCBGT1JDRVdBS0VfQUNLKTsKPiAgIAkJfQo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRl dl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gICAJCWRl dl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICAgCQkJZndfZG9tYWluc19n ZXRfd2l0aF90aHJlYWRfc3RhdHVzOwo+ICAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNl X3dha2VfcHV0ID0gZndfZG9tYWluc19wdXQ7Cj4gQEAgLTE1NzAsNyArMTU3MCw3IEBAIHZvaWQg aW50ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg CWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDIsIDQpIHx8IGludGVsX3ZncHVfYWN0aXZlKGRl dl9wcml2KSkgewo+ICAgCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1MoZGV2X3ByaXYsIGdlbjIp Owo+ICAgCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyhkZXZfcHJpdiwgZ2VuMik7Cj4gLQl9IGVs c2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJp diwgNSkpIHsKPiAgIAkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGRldl9wcml2LCBnZW41KTsK PiAgIAkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1MoZGV2X3ByaXYsIGdlbjUpOwo+ICAgCX0gZWxz ZSBpZiAoSVNfR0VOX1JBTkdFKGRldl9wcml2LCA2LCA3KSkgewo+IEBAIC0xNTgyLDcgKzE1ODIs NyBAQCB2b2lkIGludGVsX3VuY29yZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKGRldl9w cml2LCBnZW42KTsKPiAgIAkJfQo+IC0JfSBlbHNlIGlmIChJU19HRU44KGRldl9wcml2KSkgewo+ ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDgpKSB7Cj4gICAJCWlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewo+ICAgCQkJQVNTSUdOX0ZXX0RPTUFJTlNfVEFCTEUoX19jaHZfZndf cmFuZ2VzKTsKPiAgIAkJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyhkZXZfcHJpdiwgZnd0YWJs ZSk7Cj4gQEAgLTIxNzMsNyArMjE3Myw3IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVsX2dldF9n cHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlyZXR1cm4g Z2VuOF9yZXNldF9lbmdpbmVzOwo+ICAgCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NikKPiAgIAkJcmV0dXJuIGdlbjZfcmVzZXRfZW5naW5lczsKPiAtCWVsc2UgaWYgKElTX0dFTjUo ZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgIAkJcmV0dXJu IGlyb25sYWtlX2RvX3Jlc2V0Owo+ICAgCWVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikpCj4gICAJ CXJldHVybiBnNHhfZG9fcmVzZXQ7Cj4gQEAgLTIzNDEsNyArMjM0MSw3IEBAIGludGVsX3VuY29y ZV9mb3JjZXdha2VfZm9yX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgIAkJZndfZG9tYWlucyA9IF9fZ2VuMTFfZnd0YWJsZV9yZWdfd3JpdGVfZndfZG9tYWlucyhv ZmZzZXQpOwo+ICAgCX0gZWxzZSBpZiAoSEFTX0ZXVEFCTEUoZGV2X3ByaXYpICYmICFJU19WQUxM RVlWSUVXKGRldl9wcml2KSkgewo+ICAgCQlmd19kb21haW5zID0gX19md3RhYmxlX3JlZ193cml0 ZV9md19kb21haW5zKG9mZnNldCk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjgoZGV2X3ByaXYpKSB7 Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOCkpIHsKPiAgIAkJZndfZG9tYWlucyA9 IF9fZ2VuOF9yZWdfd3JpdGVfZndfZG9tYWlucyhvZmZzZXQpOwo+ICAgCX0gZWxzZSBpZiAoSVNf R0VOX1JBTkdFKGRldl9wcml2LCA2LCA3KSkgewo+ICAgCQlmd19kb21haW5zID0gRk9SQ0VXQUtF X1JFTkRFUjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMKPiBpbmRleCA5MmNiODJkZDBj MDcuLjYzMGM4ODc2ODJlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF93b3BjbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYwo+IEBA IC0xMzAsMTEgKzEzMCwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBjaGVja19od19yZXN0cmljdGlv bihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIHsKPiAgIAlpbnQgZXJyID0gMDsK PiAgIAo+IC0JaWYgKElTX0dFTjkoaTkxNSkpCj4gKwlpZiAoSVNfR0VOKGk5MTUsIDkpKQo+ICAg CQllcnIgPSBnZW45X2NoZWNrX2R3b3JkX2dhcChndWNfd29wY21fYmFzZSwgZ3VjX3dvcGNtX3Np emUpOwo+ICAgCj4gICAJaWYgKCFlcnIgJiYKPiAtCSAgICAoSVNfR0VOOShpOTE1KSB8fCBJU19D TkxfUkVWSUQoaTkxNSwgQ05MX1JFVklEX0EwLCBDTkxfUkVWSURfQTApKSkKPiArCSAgICAoSVNf R0VOKGk5MTUsIDkpIHx8IElTX0NOTF9SRVZJRChpOTE1LCBDTkxfUkVWSURfQTAsIENOTF9SRVZJ RF9BMCkpKQo+ICAgCQllcnIgPSBnZW45X2NoZWNrX2h1Y19md19maXRzKGd1Y193b3BjbV9zaXpl LCBodWNfZndfc2l6ZSk7Cj4gICAKPiAgIAlyZXR1cm4gZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IGluZGV4IGE0YWI3OGJkY2JiZi4uNzFkMTcyNTBmMWZm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCj4gQEAgLTEx ODQsNyArMTE4NCw3IEBAIHN0YXRpYyB2b2lkIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkgICAgUE1GTFVTSERPTkVfTE5FQkxLKTsKPiAg IAl9Cj4gICAKPiAtCWlmIChJU19HRU45KGk5MTUpIHx8IElTX0NBTk5PTkxBS0UoaTkxNSkpIHsK PiArCWlmIChJU19HRU4oaTkxNSwgOSkgfHwgSVNfQ0FOTk9OTEFLRShpOTE1KSkgewo+ICAgCQkv KiBXYUVuYWJsZVByZWVtcHRpb25HcmFudWxhcml0eUNvbnRyb2xCeVVNRDpza2wsYnh0LGtibCxj ZmwsY25sICovCj4gICAJCXdhX21hc2tlZF9lbih3YWwsCj4gICAJCQkgICAgIEdFTjdfRkZfU0xJ Q0VfQ1NfQ0hJQ0tFTjEsCj4gQEAgLTEyMDUsNyArMTIwNSw3IEBAIHN0YXRpYyB2b2lkIHJjc19l bmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkgICAg IEdFTjlfUE9PTEVEX0VVX0xPQURfQkFMQU5DSU5HX0ZJWF9ESVNBQkxFKTsKPiAgIAl9Cj4gICAK PiAtCWlmIChJU19HRU45KGk5MTUpKSB7Cj4gKwlpZiAoSVNfR0VOKGk5MTUsIDkpKSB7Cj4gICAJ CS8qIFdhQ29udGV4dFN3aXRjaFdpdGhDb25jdXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGti bCxnbGssY2ZsICovCj4gICAJCXdhX21hc2tlZF9lbih3YWwsCj4gICAJCQkgICAgIEdFTjlfQ1NG RV9DSElDS0VOMV9SQ1MsCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=