From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 04/10] drm/i915: Constify power well descriptors Date: Wed, 01 Aug 2018 14:39:31 -0700 Message-ID: <1533159571.2571.11.camel@intel.com> References: <20180720141504.22832-1-imre.deak@intel.com> <20180720141504.22832-5-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 9B3676E137 for ; Wed, 1 Aug 2018 21:39:32 +0000 (UTC) In-Reply-To: <20180720141504.22832-5-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak , intel-gfx@lists.freedesktop.org Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE4LTA3LTIwIMOgcyAxNzoxNCArMDMwMCwgSW1yZSBEZWFrIGVzY3JldmV1Ogo+ IEl0IG1ha2VzIHNlbnNlIHRvIGtlZXAgdW5jaGFuZ2luZyBkYXRhIGNvbnN0LiBFeHRyYWN0IHN1 Y2ggZmllbGRzCj4gZnJvbQo+IHRoZSBpOTE1X3Bvd2VyX3dlbGwgc3RydWN0IGludG8gYSBuZXcg aTkxNV9wb3dlcl93ZWxsX2Rlc2Mgc3RydWN0Cj4gdGhhdAo+IHdlIGluaXRpYWxpemUgZHVyaW5n IGNvbXBpbGUgdGltZS4gRm9yIHRoZSByZXN0IG9mIHRoZSBkeW5hbWljCj4gZmllbGRzIGFsbG9j YXRlIGFuIGFycmF5IG9mIGk5MTVfcG93ZXJfd2VsbCBvYmplY3RzIGluIGk5MTUgZGV2X3ByaXYs Cj4gYW5kIGxpbmsgdG8gZWFjaCBvZiB0aGVzZSBvYmplY3RzIHRoZWlyIGNvcnJlc3BvbmRpbmcK PiBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBvYmplY3QuCj4gCj4gQ2M6IFZpbGxlIFN5cmphbGEgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIu emFub25pQGludGVsLmNvbT4KPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+CgpRdWl0 ZSBhIGZldyBpc3N1ZXMgcG9pbnRlZCBieSBjaGVja3BhdGNoIGZvciB0aGlzIHBhdGNoLCBwbGVh c2UgdGFrZSBhCmxvb2sgYXQgdGhlbS4KCk1vcmUgYmVsb3c6Cgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICAgICB8ICAxNCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5oICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyAg ICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMg fCAyMDQgKysrKysrKysrKysrKysrKysrKy0tLQo+IC0tLS0tLS0tLS0KPiAgNyBmaWxlcyBjaGFu Z2VkLCAxNDQgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IGIzYWVmZDYyMzU1Ny4uZWIyODRjYWM4ZmRhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjgzMywxMCArMjgzMywx MCBAQCBzdGF0aWMgaW50IGk5MTVfcG93ZXJfZG9tYWluX2luZm8oc3RydWN0Cj4gc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKPiAgCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBv d2VyX2RvbWFpbjsKPiAgCj4gIAkJcG93ZXJfd2VsbCA9ICZwb3dlcl9kb21haW5zLT5wb3dlcl93 ZWxsc1tpXTsKPiAtCQlzZXFfcHJpbnRmKG0sICIlLTI1cyAlZFxuIiwgcG93ZXJfd2VsbC0+bmFt ZSwKPiArCQlzZXFfcHJpbnRmKG0sICIlLTI1cyAlZFxuIiwgcG93ZXJfd2VsbC0+ZGVzYy0+bmFt ZSwKPiAgCQkJICAgcG93ZXJfd2VsbC0+Y291bnQpOwo+ICAKPiAtCQlmb3JfZWFjaF9wb3dlcl9k b21haW4ocG93ZXJfZG9tYWluLCBwb3dlcl93ZWxsLQo+ID5kb21haW5zKQo+ICsJCWZvcl9lYWNo X3Bvd2VyX2RvbWFpbihwb3dlcl9kb21haW4sIHBvd2VyX3dlbGwtCj4gPmRlc2MtPmRvbWFpbnMp Cj4gIAkJCXNlcV9wcmludGYobSwgIiAgJS0yM3MgJWRcbiIsCj4gIAkJCQkgaW50ZWxfZGlzcGxh eV9wb3dlcl9kb21haW5fc3RyKHBvd2UKPiByX2RvbWFpbiksCj4gIAkJCQkgcG93ZXJfZG9tYWlu cy0KPiA+ZG9tYWluX3VzZV9jb3VudFtwb3dlcl9kb21haW5dKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwo+IGluZGV4IDNjOTg0NTMwZmVmOS4uNTc0M2RiNDUwMGZiIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jCj4gQEAgLTkyMiw3ICs5MjIsOSBAQCBzdGF0aWMgaW50IGk5MTVfZHJp dmVyX2luaXRfZWFybHkoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlp bnRlbF91Y19pbml0X2Vhcmx5KGRldl9wcml2KTsKPiAgCWludGVsX3BtX3NldHVwKGRldl9wcml2 KTsKPiAgCWludGVsX2luaXRfZHBpbyhkZXZfcHJpdik7Cj4gLQlpbnRlbF9wb3dlcl9kb21haW5z X2luaXQoZGV2X3ByaXYpOwo+ICsJcmV0ID0gaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KGRldl9w cml2KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdvdG8gZXJyX3VjOwo+ICAJaW50ZWxfaXJxX2lu aXQoZGV2X3ByaXYpOwo+ICAJaW50ZWxfaGFuZ2NoZWNrX2luaXQoZGV2X3ByaXYpOwo+ICAJaW50 ZWxfaW5pdF9kaXNwbGF5X2hvb2tzKGRldl9wcml2KTsKPiBAQCAtOTM0LDYgKzkzNiw5IEBAIHN0 YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCj4gIAlyZXR1cm4gMDsKPiAgCj4gK2Vycl91YzoKPiArCWludGVsX3Vj X2NsZWFudXBfZWFybHkoZGV2X3ByaXYpOwoKUGxlYXNlIGxlYXZlIHRoZSBndWMgZml4ZXMgZm9y IGEgZGlmZmVyZW50IHBhdGNoLCByZWdhcmRsZXNzIG9mIGhvdwppbm5vY2VudCB0aGV5IGxvb2su CgpFdmVyeXRoaW5nIGVsc2UgbG9va3MgZ29vZCEKClRoYW5rcywKUGF1bG8KCj4gKwlpOTE1X2dl bV9jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKPiAgZXJyX3dvcmtxdWV1ZXM6Cj4gIAlpOTE1X3dv cmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7Cj4gIGVycl9lbmdpbmVzOgo+IEBAIC05NDgsNiAr OTUzLDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVjdAo+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9jbGVhbnVw X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2KQo+ICB7Cj4gIAlpbnRl bF9pcnFfZmluaShkZXZfcHJpdik7Cj4gKwlpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAoZGV2 X3ByaXYpOwo+ICAJaW50ZWxfdWNfY2xlYW51cF9lYXJseShkZXZfcHJpdik7Cj4gIAlpOTE1X2dl bV9jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKPiAgCWk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRl dl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDRmYjkzNzM5OTQ0MC4u M2FlMjAwYTllOGYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTg2MiwxMyAr ODYyLDkgQEAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgewo+ICB9Owo+ICAKPiAgLyogUG93 ZXIgd2VsbCBzdHJ1Y3R1cmUgZm9yIGhhc3dlbGwgKi8KPiAtc3RydWN0IGk5MTVfcG93ZXJfd2Vs bCB7Cj4gK3N0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyB7Cj4gIAljb25zdCBjaGFyICpuYW1l Owo+ICAJYm9vbCBhbHdheXNfb247Cj4gLQkvKiBwb3dlciB3ZWxsIGVuYWJsZS9kaXNhYmxlIHVz YWdlIGNvdW50ICovCj4gLQlpbnQgY291bnQ7Cj4gLQkvKiBjYWNoZWQgaHcgZW5hYmxlZCBzdGF0 ZSAqLwo+IC0JYm9vbCBod19lbmFibGVkOwo+ICAJdTY0IGRvbWFpbnM7Cj4gIAkvKiB1bmlxdWUg aWRlbnRpZmllciBmb3IgdGhpcyBwb3dlciB3ZWxsICovCj4gIAllbnVtIGk5MTVfcG93ZXJfd2Vs bF9pZCBpZDsKPiBAQCAtODkxLDYgKzg4NywxNCBAQCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsK PiAgCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzICpvcHM7Cj4gIH07Cj4gIAo+ICtz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsKPiArCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxf ZGVzYyAqZGVzYzsKPiArCS8qIHBvd2VyIHdlbGwgZW5hYmxlL2Rpc2FibGUgdXNhZ2UgY291bnQg Ki8KPiArCWludCBjb3VudDsKPiArCS8qIGNhY2hlZCBodyBlbmFibGVkIHN0YXRlICovCj4gKwli b29sIGh3X2VuYWJsZWQ7Cj4gK307Cj4gKwo+ICBzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zIHsK PiAgCS8qCj4gIAkgKiBQb3dlciB3ZWxscyBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uIGF0IGRy aXZlciBpbml0IGFuZAo+IHN1c3BlbmQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmgKPiBpbmRleCA5MjkyMDAxY2RkMTQuLmE2MjYyODJkNTkwYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmgKPiBAQCAtMzIyLDExICszMjIsMTEgQEAgc3RydWN0IGludGVs X2xpbmtfbV9uIHsKPiAgCj4gICNkZWZpbmUgZm9yX2VhY2hfcG93ZXJfZG9tYWluX3dlbGwoX19k ZXZfcHJpdiwgX19wb3dlcl93ZWxsLAo+IF9fZG9tYWluX21hc2spCVwKPiAgCWZvcl9lYWNoX3Bv d2VyX3dlbGwoX19kZXZfcHJpdiwgX19wb3dlcl93ZWxsKQkJCj4gCQlcCj4gLQkJZm9yX2VhY2hf aWYoKF9fcG93ZXJfd2VsbCktPmRvbWFpbnMgJgo+IChfX2RvbWFpbl9tYXNrKSkKPiArCQlmb3Jf ZWFjaF9pZigoX19wb3dlcl93ZWxsKS0+ZGVzYy0+ZG9tYWlucyAmCj4gKF9fZG9tYWluX21hc2sp KQo+ICAKPiAgI2RlZmluZSBmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXYoX19kZXZfcHJp diwgX19wb3dlcl93ZWxsLAo+IF9fZG9tYWluX21hc2spIFwKPiAgCWZvcl9lYWNoX3Bvd2VyX3dl bGxfcmV2KF9fZGV2X3ByaXYsIF9fcG93ZXJfd2VsbCkJCQo+ICAgICAgICAgXAo+IC0JCWZvcl9l YWNoX2lmKChfX3Bvd2VyX3dlbGwpLT5kb21haW5zICYKPiAoX19kb21haW5fbWFzaykpCj4gKwkJ Zm9yX2VhY2hfaWYoKF9fcG93ZXJfd2VsbCktPmRlc2MtPmRvbWFpbnMgJgo+IChfX2RvbWFpbl9t YXNrKSkKPiAgCj4gICNkZWZpbmUgZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKF9f c3RhdGUsIHBsYW5lLAo+IG5ld19wbGFuZV9zdGF0ZSwgX19pKSBcCj4gIAlmb3IgKChfX2kpID0g MDsgXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAzMmJlMzA1YzBlODkuLjI1 ZjliMDM1Y2ZlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE5NDMsNiAr MTk0Myw3IEBAIGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QKPiBpbnRl bF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7Cj4gIAo+ICAvKiBpbnRlbF9ydW50aW1lX3Bt LmMgKi8KPiAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqKTsKPiArdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKik7Cj4gIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBib29sIHJlc3VtZSk7Cj4gIHZvaWQgaW50 ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICopOwo+ICB2 b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+IGluZGV4IDBjYzZhODYx YmNmOC4uMjZlNDhmYzk1NTQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+IEBA IC01Nyw5ICs1Nyw5IEBAIHN0YXRpYyBib29sIGhkY3Bfa2V5X2xvYWRhYmxlKHN0cnVjdAo+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCS8qIFBHMSAocG93ZXIgd2VsbCAjMSkg bmVlZHMgdG8gYmUgZW5hYmxlZCAqLwo+ICAJZm9yX2VhY2hfcG93ZXJfd2VsbChkZXZfcHJpdiwg cG93ZXJfd2VsbCkgewo+IC0JCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBpZCkgewo+IC0JCQllbmFi bGVkID0gcG93ZXJfd2VsbC0+b3BzLQo+ID5pc19lbmFibGVkKGRldl9wcml2LAo+IC0JCQkJCQkJ ICAgICAgcG93ZXJfCj4gd2VsbCk7Cj4gKwkJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlkID09IGlk KSB7Cj4gKwkJCWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5vcHMtCj4gPmlzX2VuYWJsZWQo ZGV2X3ByaXYsCj4gKwkJCQkJCQkJICAgIAo+IHBvd2VyX3dlbGwpOwo+ICAJCQlicmVhazsKPiAg CQl9Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5k ZXggZjExOWNiZTRmNjFkLi44YjNjMjQxYmVlNTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTE1OSwxNyArMTU5LDE3IEBAIGludGVsX2Rpc3BsYXlf cG93ZXJfZG9tYWluX3N0cihlbnVtCj4gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWlu KQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCSAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4g KnBvd2VyX3dlbGwpCj4gIHsKPiAtCURSTV9ERUJVR19LTVMoImVuYWJsaW5nICVzXG4iLCBwb3dl cl93ZWxsLT5uYW1lKTsKPiAtCXBvd2VyX3dlbGwtPm9wcy0+ZW5hYmxlKGRldl9wcml2LCBwb3dl cl93ZWxsKTsKPiArCURSTV9ERUJVR19LTVMoImVuYWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5k ZXNjLT5uYW1lKTsKPiArCXBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+ZW5hYmxlKGRldl9wcml2LCBw b3dlcl93ZWxsKTsKPiAgCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPSB0cnVlOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUKPiAqZGV2X3ByaXYsCj4gIAkJCQkgICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAq cG93ZXJfd2VsbCkKPiAgewo+IC0JRFJNX0RFQlVHX0tNUygiZGlzYWJsaW5nICVzXG4iLCBwb3dl cl93ZWxsLT5uYW1lKTsKPiArCURSTV9ERUJVR19LTVMoImRpc2FibGluZyAlc1xuIiwgcG93ZXJf d2VsbC0+ZGVzYy0+bmFtZSk7Cj4gIAlwb3dlcl93ZWxsLT5od19lbmFibGVkID0gZmFsc2U7Cj4g LQlwb3dlcl93ZWxsLT5vcHMtPmRpc2FibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ICsJcG93 ZXJfd2VsbC0+ZGVzYy0+b3BzLT5kaXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfd2VsbF9nZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IEBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf cG93ZXJfd2VsbF9wdXQoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKPiAgewo+ICAJV0FSTighcG93 ZXJfd2VsbC0+Y291bnQsICJVc2UgY291bnQgb24gcG93ZXIgd2VsbCAlcyBpcwo+IGFscmVhZHkg emVybyIsCj4gLQkgICAgIHBvd2VyX3dlbGwtPm5hbWUpOwo+ICsJICAgICBwb3dlcl93ZWxsLT5k ZXNjLT5uYW1lKTsKPiAgCj4gIAlpZiAoIS0tcG93ZXJfd2VsbC0+Y291bnQpCj4gIAkJaW50ZWxf cG93ZXJfd2VsbF9kaXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiBAQCAtMjEzLDcgKzIx Myw3IEBAIGJvb2wgX19pbnRlbF9kaXNwbGF5X3Bvd2VyX2lzX2VuYWJsZWQoc3RydWN0Cj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpc19lbmFibGVkID0gdHJ1ZTsKPiAgCj4gIAlm b3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXYoZGV2X3ByaXYsIHBvd2VyX3dlbGwsCj4gQklU X1VMTChkb21haW4pKSB7Cj4gLQkJaWYgKHBvd2VyX3dlbGwtPmFsd2F5c19vbikKPiArCQlpZiAo cG93ZXJfd2VsbC0+ZGVzYy0+YWx3YXlzX29uKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYg KCFwb3dlcl93ZWxsLT5od19lbmFibGVkKSB7Cj4gQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMg dm9pZCBoc3dfcG93ZXJfd2VsbF9wcmVfZGlzYWJsZShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgc3RhdGljIHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LAo+ICAJCQkJCSAgIHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+IC0JZW51bSBpOTE1X3Bvd2VyX3dl bGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlk ID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gIAo+ICAJLyogVGltZW91dCBmb3IgUFcxOjEwIHVz LCBBVVg6bm90IHNwZWNpZmllZCwgb3RoZXIgUFdzOjIwCj4gdXMuICovCj4gIAlXQVJOX09OKGlu dGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+IEBAIC0zNTAsNyArMzUwLDcgQEAgc3Rh dGljIHUzMiBoc3dfcG93ZXJfd2VsbF9yZXF1ZXN0ZXJzKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICBzdGF0aWMgdm9pZCBoc3dfd2FpdF9mb3JfcG93ZXJfd2VsbF9kaXNh YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LAo+ICAJCQkJCSAgICBzdHJ1 Y3QgaTkxNV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dlbGwpCj4gIHsKPiAtCWVudW0gaTkxNV9wb3dl cl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7Cj4gKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9p ZCBpZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwo+ICAJYm9vbCBkaXNhYmxlZDsKPiAgCXUzMiBy ZXFzOwo+ICAKPiBAQCAtMzcwLDcgKzM3MCw3IEBAIHN0YXRpYyB2b2lkCj4gaHN3X3dhaXRfZm9y X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAkJcmV0dXJuOwo+ICAKPiAgCURSTV9ERUJVR19LTVMoIiVzIGZvcmNlZCBvbiAoYmlvczolZCBk cml2ZXI6JWQga3ZtcjolZAo+IGRlYnVnOiVkKVxuIiwKPiAtCQkgICAgICBwb3dlcl93ZWxsLT5u YW1lLAo+ICsJCSAgICAgIHBvd2VyX3dlbGwtPmRlc2MtPm5hbWUsCj4gIAkJICAgICAgISEocmVx cyAmIDEpLCAhIShyZXFzICYgMiksICEhKHJlcXMgJiA0KSwKPiAhIShyZXFzICYgOCkpOwo+ICB9 Cj4gIAo+IEBAIC0zODYsOCArMzg2LDggQEAgc3RhdGljIHZvaWQgZ2VuOV93YWl0X2Zvcl9wb3dl cl93ZWxsX2Z1c2VzKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0 aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkJICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dlbGwpCj4g IHsKPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7Cj4gLQli b29sIHdhaXRfZnVzZXMgPSBwb3dlcl93ZWxsLT5oc3cuaGFzX2Z1c2VzOwo+ICsJZW51bSBpOTE1 X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKPiArCWJvb2wgd2FpdF9m dXNlcyA9IHBvd2VyX3dlbGwtPmRlc2MtPmhzdy5oYXNfZnVzZXM7Cj4gIAllbnVtIHNrbF9wb3dl cl9nYXRlIHVuaW5pdGlhbGl6ZWRfdmFyKHBnKTsKPiAgCXUzMiB2YWw7Cj4gIAo+IEBAIC00MjEs MTcgKzQyMSwxOSBAQCBzdGF0aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0Cj4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAod2FpdF9mdXNlcykKPiAgCQlnZW45 X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZnVzZXMoZGV2X3ByaXYsIHBnKTsKPiAgCj4gLQloc3dfcG93 ZXJfd2VsbF9wb3N0X2VuYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0KPiA+aHN3LmlycV9waXBl X21hc2ssCj4gLQkJCQkgICBwb3dlcl93ZWxsLT5oc3cuaGFzX3ZnYSk7Cj4gKwloc3dfcG93ZXJf d2VsbF9wb3N0X2VuYWJsZShkZXZfcHJpdiwKPiArCQkJCSAgIHBvd2VyX3dlbGwtPmRlc2MtCj4g Pmhzdy5pcnFfcGlwZV9tYXNrLAo+ICsJCQkJICAgcG93ZXJfd2VsbC0+ZGVzYy0+aHN3Lmhhc192 Z2EpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LAo+ICAJCQkJICAgc3RydWN0IGk5MTVfcG93 ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4gLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBp ZCA9IHBvd2VyX3dlbGwtPmlkOwo+ICsJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dl cl93ZWxsLT5kZXNjLT5pZDsKPiAgCXUzMiB2YWw7Cj4gIAo+IC0JaHN3X3Bvd2VyX3dlbGxfcHJl X2Rpc2FibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtCj4gPmhzdy5pcnFfcGlwZV9tYXNrKTsKPiAr CWhzd19wb3dlcl93ZWxsX3ByZV9kaXNhYmxlKGRldl9wcml2LAo+ICsJCQkJICAgcG93ZXJfd2Vs bC0+ZGVzYy0KPiA+aHN3LmlycV9waXBlX21hc2spOwo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChI U1dfUFdSX1dFTExfQ1RMX0RSSVZFUihpZCkpOwo+ICAJSTkxNV9XUklURShIU1dfUFdSX1dFTExf Q1RMX0RSSVZFUihpZCksCj4gQEAgLTQ0NSw3ICs0NDcsNyBAQCBzdGF0aWMgdm9pZAo+ICBpY2xf Y29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ ICpkZXZfcHJpdiwKPiAgCQkJCSAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dl bGwpCj4gIHsKPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7 Cj4gKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwo+ ICAJZW51bSBwb3J0IHBvcnQgPSBJQ0xfQVVYX1BXX1RPX1BPUlQoaWQpOwo+ICAJdTMyIHZhbDsK PiAgCj4gQEAgLTQ2Miw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZAo+ICBpY2xfY29tYm9fcGh5X2F1 eF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYs Cj4gIAkJCQkgICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+ IC0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiArCWVudW0g aTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gIAllbnVtIHBv cnQgcG9ydCA9IElDTF9BVVhfUFdfVE9fUE9SVChpZCk7Cj4gIAl1MzIgdmFsOwo+ICAKPiBAQCAt NDg0LDcgKzQ4Niw3IEBAIGljbF9jb21ib19waHlfYXV4X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1 Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIGJvb2wgaHN3X3Bvd2Vy X3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJ CSAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+IC0JZW51bSBp OTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiArCWVudW0gaTkxNV9wb3dl cl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gIAl1MzIgbWFzayA9IEhTV19Q V1JfV0VMTF9DVExfUkVRKGlkKSB8Cj4gSFNXX1BXUl9XRUxMX0NUTF9TVEFURShpZCk7Cj4gIAo+ ICAJcmV0dXJuIChJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0NUTF9EUklWRVIoaWQpKSAmIG1hc2sp ID09Cj4gbWFzazsKPiBAQCAtNzIzLDcgKzcyNSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9lbmFibGVf ZGM2KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBzdGF0aWMgdm9pZCBo c3dfcG93ZXJfd2VsbF9zeW5jX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2 LAo+ICAJCQkJICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4g LQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOwo+ICsJZW51bSBp OTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKPiAgCXUzMiBtYXNr ID0gSFNXX1BXUl9XRUxMX0NUTF9SRVEoaWQpOwo+ICAJdTMyIGJpb3NfcmVxID0gSTkxNV9SRUFE KEhTV19QV1JfV0VMTF9DVExfQklPUyhpZCkpOwo+ICAKPiBAQCAtNzQwLDE5ICs3NDIsMTkgQEAg c3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxfc3luY19odyhzdHJ1Y3QKPiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIHZvaWQgYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5h YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LAo+ICAJCQkJCSAgIHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+IC0JYnh0X2RkaV9waHlfaW5p dChkZXZfcHJpdiwgcG93ZXJfd2VsbC0+Ynh0LnBoeSk7Cj4gKwlieHRfZGRpX3BoeV9pbml0KGRl dl9wcml2LCBwb3dlcl93ZWxsLT5kZXNjLT5ieHQucGh5KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dl cl93ZWxsKQo+ICB7Cj4gLQlieHRfZGRpX3BoeV91bmluaXQoZGV2X3ByaXYsIHBvd2VyX3dlbGwt PmJ4dC5waHkpOwo+ICsJYnh0X2RkaV9waHlfdW5pbml0KGRldl9wcml2LCBwb3dlcl93ZWxsLT5k ZXNjLT5ieHQucGh5KTsKPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgYnh0X2RwaW9fY21uX3Bvd2Vy X3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJ CQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4gLQlyZXR1 cm4gYnh0X2RkaV9waHlfaXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2VsbC0KPiA+Ynh0LnBo eSk7Cj4gKwlyZXR1cm4gYnh0X2RkaV9waHlfaXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2Vs bC0+ZGVzYy0KPiA+Ynh0LnBoeSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGJ4dF92ZXJpZnlf ZGRpX3BoeV9wb3dlcl93ZWxscyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdikK PiBAQCAtNzYxLDE2ICs3NjMsMTcgQEAgc3RhdGljIHZvaWQKPiBieHRfdmVyaWZ5X2RkaV9waHlf cG93ZXJfd2VsbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCXBv d2VyX3dlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJpdiwgQlhUX0RQSU9fQ01OX0EpOwo+ ICAJaWYgKHBvd2VyX3dlbGwtPmNvdW50ID4gMCkKPiAtCQlieHRfZGRpX3BoeV92ZXJpZnlfc3Rh dGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtCj4gPmJ4dC5waHkpOwo+ICsJCWJ4dF9kZGlfcGh5X3Zl cmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+Ynh0LnBoeSk7Cj4gIAo+ ICAJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2LCBCWFRfRFBJT19DTU5f QkMpOwo+ICAJaWYgKHBvd2VyX3dlbGwtPmNvdW50ID4gMCkKPiAtCQlieHRfZGRpX3BoeV92ZXJp Znlfc3RhdGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtCj4gPmJ4dC5waHkpOwo+ICsJCWJ4dF9kZGlf cGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+Ynh0LnBoeSk7 Cj4gIAo+ICAJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJcG93ZXJfd2VsbCA9 IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2LAo+IEdMS19EUElPX0NNTl9DKTsKPiAgCQlpZiAo cG93ZXJfd2VsbC0+Y291bnQgPiAwKQo+IC0JCQlieHRfZGRpX3BoeV92ZXJpZnlfc3RhdGUoZGV2 X3ByaXYsCj4gcG93ZXJfd2VsbC0+Ynh0LnBoeSk7Cj4gKwkJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9z dGF0ZShkZXZfcHJpdiwKPiArCQkJCQkJIHBvd2VyX3dlbGwtPmRlc2MtCj4gPmJ4dC5waHkpOwo+ ICAJfQo+ICB9Cj4gIAo+IEBAIC04NjksNyArODcyLDcgQEAgc3RhdGljIHZvaWQgaTgzMF9waXBl c19wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIHN0YXRpYyB2b2lkIHZsdl9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93 ZWxsLAo+IGJvb2wgZW5hYmxlKQo+ICB7Cj4gLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBwb3dl cl93ZWxsX2lkID0gcG93ZXJfd2VsbC0+aWQ7Cj4gKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBw b3dlcl93ZWxsX2lkID0gcG93ZXJfd2VsbC0+ZGVzYy0KPiA+aWQ7Cj4gIAl1MzIgbWFzazsKPiAg CXUzMiBzdGF0ZTsKPiAgCXUzMiBjdHJsOwo+IEBAIC05MTcsNyArOTIwLDcgQEAgc3RhdGljIHZv aWQgdmx2X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgc3RhdGljIGJvb2wgdmx2X3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCSAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwK PiAqcG93ZXJfd2VsbCkKPiAgewo+IC0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgcG93ZXJfd2Vs bF9pZCA9IHBvd2VyX3dlbGwtPmlkOwo+ICsJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgcG93ZXJf d2VsbF9pZCA9IHBvd2VyX3dlbGwtPmRlc2MtCj4gPmlkOwo+ICAJYm9vbCBlbmFibGVkID0gZmFs c2U7Cj4gIAl1MzIgbWFzazsKPiAgCXUzMiBzdGF0ZTsKPiBAQCAtMTEwNyw3ICsxMTEwLDcgQEAg bG9va3VwX3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4g IAkJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKPiAgCj4gIAkJcG93ZXJfd2Vs bCA9ICZwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsc1tpXTsKPiAtCQlpZiAocG93ZXJfd2VsbC0+ aWQgPT0gcG93ZXJfd2VsbF9pZCkKPiArCQlpZiAocG93ZXJfd2VsbC0+ZGVzYy0+aWQgPT0gcG93 ZXJfd2VsbF9pZCkKPiAgCQkJcmV0dXJuIHBvd2VyX3dlbGw7Cj4gIAl9Cj4gIAo+IEBAIC0xMTQ2 LDcgKzExNDksNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfY2h2X3BoeV9zdGF0dXMoc3RydWN0Cj4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCQkgICAgIFBIWV9TVEFUVVNfU1BMSU5F X0xETyhEUElPX1BIWTEKPiAsIERQSU9fQ0gwLCAwKSB8Cj4gIAkJCQkgICAgIFBIWV9TVEFUVVNf U1BMSU5FX0xETyhEUElPX1BIWTEKPiAsIERQSU9fQ0gwLCAxKSk7Cj4gIAo+IC0JaWYgKGNtbl9i Yy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7Cj4gKwlpZiAoY21uX2JjLT5k ZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKPiAgCQlwaHlfc3RhdHVz IHw9IFBIWV9QT1dFUkdPT0QoRFBJT19QSFkwKTsKPiAgCj4gIAkJLyogdGhpcyBhc3N1bWVzIG92 ZXJyaWRlIGlzIG9ubHkgdXNlZCB0byBlbmFibGUKPiBsYW5lcyAqLwo+IEBAIC0xMTg3LDcgKzEx OTAsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfY2h2X3BoeV9zdGF0dXMoc3RydWN0Cj4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCXBoeV9zdGF0dXMgfD0KPiBQSFlfU1RBVFVTX1NQ TElORV9MRE8oRFBJT19QSFkwLCBEUElPX0NIMSwgMSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGNtbl9k LT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ICsJaWYgKGNtbl9kLT5kZXNj LT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ICAJCXBoeV9zdGF0dXMgfD0g UEhZX1BPV0VSR09PRChEUElPX1BIWTEpOwo+ICAKPiAgCQkvKiB0aGlzIGFzc3VtZXMgb3ZlcnJp ZGUgaXMgb25seSB1c2VkIHRvIGVuYWJsZQo+IGxhbmVzICovCj4gQEAgLTEyMzEsMTAgKzEyMzQs MTAgQEAgc3RhdGljIHZvaWQKPiBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gIAl1aW50 MzJfdCB0bXA7Cj4gIAo+IC0JV0FSTl9PTl9PTkNFKHBvd2VyX3dlbGwtPmlkICE9IFBVTklUX1BP V0VSX1dFTExfRFBJT19DTU5fQkMKPiAmJgo+IC0JCSAgICAgcG93ZXJfd2VsbC0+aWQgIT0gUFVO SVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKPiArCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5k ZXNjLT5pZCAhPQo+IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMgJiYKPiArCQkgICAgIHBv d2VyX3dlbGwtPmRlc2MtPmlkICE9Cj4gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKPiAg Cj4gLQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykg ewo+ICsJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19D TU5fQkMpIHsKPiAgCQlwaXBlID0gUElQRV9BOwo+ICAJCXBoeSA9IERQSU9fUEhZMDsKPiAgCX0g ZWxzZSB7Cj4gQEAgLTEyNjIsNyArMTI2NSw3IEBAIHN0YXRpYyB2b2lkCj4gY2h2X2RwaW9fY21u X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CQlEUElPX1NVU19DTEtfQ09ORklHX0dBVEVfQ0xLUkVROwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2 X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcyOCwgdG1wKTsKPiAgCj4gLQlpZiAocG93ZXJfd2VsbC0+ aWQgPT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgewo+ICsJaWYgKHBvd2VyX3dlbGwt PmRlc2MtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKPiAgCQl0bXAgPSB2 bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLAo+IF9DSFZfQ01OX0RXNl9DSDEpOwo+ICAJCXRt cCB8PSBEUElPX0RZTlBXUkRPV05FTl9DSDE7Cj4gIAkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYs IHBpcGUsIF9DSFZfQ01OX0RXNl9DSDEsCj4gdG1wKTsKPiBAQCAtMTI5MywxMCArMTI5NiwxMCBA QCBzdGF0aWMgdm9pZAo+IGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICB7Cj4gIAllbnVtIGRwaW9fcGh5IHBoeTsKPiAg Cj4gLQlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+aWQgIT0gUFVOSVRfUE9XRVJfV0VMTF9EUElP X0NNTl9CQwo+ICYmCj4gLQkJICAgICBwb3dlcl93ZWxsLT5pZCAhPSBQVU5JVF9QT1dFUl9XRUxM X0RQSU9fQ01OX0QpOwo+ICsJV0FSTl9PTl9PTkNFKHBvd2VyX3dlbGwtPmRlc2MtPmlkICE9Cj4g UFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQyAmJgo+ICsJCSAgICAgcG93ZXJfd2VsbC0+ZGVz Yy0+aWQgIT0KPiBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0QpOwo+ICAKPiAtCWlmIChwb3dl cl93ZWxsLT5pZCA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7Cj4gKwlpZiAocG93 ZXJfd2VsbC0+ZGVzYy0+aWQgPT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgewo+ICAJ CXBoeSA9IERQSU9fUEhZMDsKPiAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBF X0EpOwo+ICAJCWFzc2VydF9wbGxfZGlzYWJsZWQoZGV2X3ByaXYsIFBJUEVfQik7Cj4gQEAgLTIw NTEsNyArMjA1NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcwo+ IGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX29wcyA9IHsKPiAgCS5pc19lbmFibGVkID0gdmx2X3Bv d2VyX3dlbGxfZW5hYmxlZCwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsIGk5eHhfYWx3YXlzX29uX3Bvd2VyX3dlbGxbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsW10KPiA9IHsK PiAgCXsKPiAgCQkubmFtZSA9ICJhbHdheXMtb24iLAo+ICAJCS5hbHdheXNfb24gPSAxLAo+IEBA IC0yMDY4LDcgKzIwNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9v cHMKPiBpODMwX3BpcGVzX3Bvd2VyX3dlbGxfb3BzID0gewo+ICAJLmlzX2VuYWJsZWQgPSBpODMw X3BpcGVzX3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsIGk4MzBfcG93ZXJfd2VsbHNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBpODMwX3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAl7Cj4gIAkJ Lm5hbWUgPSAiYWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlzX29uID0gMSwKPiBAQCAtMjEwNSw3ICsy MTA4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzCj4gYnh0X2Rw aW9fY21uX3Bvd2VyX3dlbGxfb3BzID0gewo+ICAJLmlzX2VuYWJsZWQgPSBieHRfZHBpb19jbW5f cG93ZXJfd2VsbF9lbmFibGVkLAo+ICB9Owo+ICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGwgaHN3X3Bvd2VyX3dlbGxzW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsX2Rlc2MgaHN3X3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAl7Cj4gIAkJLm5hbWUgPSAi YWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlzX29uID0gMSwKPiBAQCAtMjEyNCw3ICsyMTI3LDcgQEAg c3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgaHN3X3Bvd2VyX3dlbGxzW10KPiA9IHsKPiAg CX0sCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBiZHdfcG93ZXJf d2VsbHNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBi ZHdfcG93ZXJfd2VsbHNbXSA9IHsKPiAgCXsKPiAgCQkubmFtZSA9ICJhbHdheXMtb24iLAo+ICAJ CS5hbHdheXNfb24gPSAxLAo+IEBAIC0yMTY1LDcgKzIxNjgsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMKPiB2bHZfZHBpb19wb3dlcl93ZWxsX29wcyA9IHsKPiAg CS5pc19lbmFibGVkID0gdmx2X3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiAgfTsKPiAgCj4gLXN0YXRp YyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHZsdl9wb3dlcl93ZWxsc1tdID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIHZsdl9wb3dlcl93ZWxsc1tdID0gewo+ ICAJewo+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4gIAkJLmFsd2F5c19vbiA9IDEsCj4gQEAg LTIyMjMsNyArMjIyNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHZsdl9wb3dl cl93ZWxsc1tdCj4gPSB7Cj4gIAl9LAo+ICB9Owo+ICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgY2h2X3Bvd2VyX3dlbGxzW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsX2Rlc2MgY2h2X3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAl7Cj4gIAkJLm5hbWUg PSAiYWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlzX29uID0gMSwKPiBAQCAtMjI2MywxMiArMjI2Niwx MiBAQCBib29sCj4gaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsX2lzX2VuYWJsZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gIAlib29sIHJldDsKPiAgCj4gIAlwb3dlcl93 ZWxsID0gbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGxfaWQpOwo+IC0JcmV0 ID0gcG93ZXJfd2VsbC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiAr CXJldCA9IHBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwKPiBwb3dl cl93ZWxsKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5 MTVfcG93ZXJfd2VsbCBza2xfcG93ZXJfd2VsbHNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBza2xfcG93ZXJfd2VsbHNbXSA9IHsKPiAgCXsKPiAgCQku bmFtZSA9ICJhbHdheXMtb24iLAo+ICAJCS5hbHdheXNfb24gPSAxLAo+IEBAIC0yMzM2LDcgKzIz MzksNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBza2xfcG93ZXJfd2VsbHNbXQo+ ID0gewo+ICAJfSwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGJ4 dF9wb3dlcl93ZWxsc1tdID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bF9kZXNjIGJ4dF9wb3dlcl93ZWxsc1tdID0gewo+ICAJewo+ICAJCS5uYW1lID0gImFsd2F5cy1v biIsCj4gIAkJLmFsd2F5c19vbiA9IDEsCj4gQEAgLTIzOTAsNyArMjM5Myw3IEBAIHN0YXRpYyBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGJ4dF9wb3dlcl93ZWxsc1tdCj4gPSB7Cj4gIAl9LAo+ICB9 Owo+ICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgZ2xrX3Bvd2VyX3dlbGxzW10g PSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2MgZ2xrX3Bvd2Vy X3dlbGxzW10gPSB7Cj4gIAl7Cj4gIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlz X29uID0gMSwKPiBAQCAtMjQ5MCw3ICsyNDkzLDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGwgZ2xrX3Bvd2VyX3dlbGxzW10KPiA9IHsKPiAgCX0sCj4gIH07Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGk5MTVfcG93ZXJfd2VsbCBjbmxfcG93ZXJfd2VsbHNbXSA9IHsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBjbmxfcG93ZXJfd2VsbHNbXSA9IHsKPiAg CXsKPiAgCQkubmFtZSA9ICJhbHdheXMtb24iLAo+ICAJCS5hbHdheXNfb24gPSAxLAo+IEBAIC0y NTk0LDcgKzI1OTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMK PiBpY2xfY29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX29wcyA9IHsKPiAgCS5pc19lbmFibGVkID0g aHN3X3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsIGljbF9wb3dlcl93ZWxsc1tdID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfcG93ZXJfd2VsbF9kZXNjIGljbF9wb3dlcl93ZWxsc1tdID0gewo+ICAJewo+ICAJCS5uYW1l ID0gImFsd2F5cy1vbiIsCj4gIAkJLmFsd2F5c19vbiA9IDEsCj4gQEAgLTI4MTMsNyArMjgxNiw3 IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoc3RydWN0Cj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJcG93ZXJfd2VsbF9pZHMgPSAwOwo+ICAJ Zm9yIChpID0gMDsgaSA8IHBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxfY291bnQ7IGkrKykgewo+ IC0JCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfZG9tYWlucy0KPiA+cG93ZXJf d2VsbHNbaV0uaWQ7Cj4gKwkJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl9kb21h aW5zLQo+ID5wb3dlcl93ZWxsc1tpXS5kZXNjLT5pZDsKPiAgCj4gIAkJV0FSTl9PTihpZCA+PSBz aXplb2YocG93ZXJfd2VsbF9pZHMpICogOCk7Cj4gIAkJV0FSTl9PTihwb3dlcl93ZWxsX2lkcyAm IEJJVF9VTEwoaWQpKTsKPiBAQCAtMjgyMSwxMCArMjgyNCwyOCBAQCBzdGF0aWMgdm9pZAo+IGFz c2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJfQo+ICB9Cj4gIAo+IC0jZGVmaW5lIHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21h aW5zLCBfX3Bvd2VyX3dlbGxzKSAoewkJCj4gXAo+IC0JKHBvd2VyX2RvbWFpbnMpLT5wb3dlcl93 ZWxscyA9IChfX3Bvd2VyX3dlbGxzKTsJCQo+IAlcCj4gLQkocG93ZXJfZG9tYWlucyktPnBvd2Vy X3dlbGxfY291bnQgPQo+IEFSUkFZX1NJWkUoX19wb3dlcl93ZWxscyk7CVwKPiAtfSkKPiArc3Rh dGljIGludCBfX3NldF9wb3dlcl93ZWxscyhzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zCj4gKnBv d2VyX2RvbWFpbnMsCj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNj Cj4gKnBvd2VyX3dlbGxfZGVzY3MsCj4gKwkJCSAgICAgaW50IHBvd2VyX3dlbGxfY291bnQpCj4g K3sKPiArCWludCBpOwo+ICsKPiArCXBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxfY291bnQgPSBw b3dlcl93ZWxsX2NvdW50Owo+ICsJcG93ZXJfZG9tYWlucy0+cG93ZXJfd2VsbHMgPSBrY2FsbG9j KHBvd2VyX3dlbGxfY291bnQsCj4gKwkJCQkJICAgICBzaXplb2YoKnBvd2VyX2RvbWFpbnMtCj4g PnBvd2VyX3dlbGxzKSwKPiArCQkJCQkgICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwb3dlcl9k b21haW5zLT5wb3dlcl93ZWxscykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgcG93ZXJfd2VsbF9jb3VudDsgaSsrKQo+ICsJCXBvd2VyX2RvbWFpbnMtPnBvd2Vy X3dlbGxzW2ldLmRlc2MgPQo+ICZwb3dlcl93ZWxsX2Rlc2NzW2ldOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICsjZGVmaW5lIHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBfX3Bv d2VyX3dlbGxfZGVzY3MpIFwKPiArCV9fc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIF9f cG93ZXJfd2VsbF9kZXNjcywgXAo+ICsJCQkgIEFSUkFZX1NJWkUoX19wb3dlcl93ZWxsX2Rlc2Nz KSkKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQgLSBpbml0aWFsaXpl cyB0aGUgcG93ZXIgZG9tYWluCj4gc3RydWN0dXJlcwo+IEBAIC0yODM2LDYgKzI4NTcsNyBAQCBz dGF0aWMgdm9pZCBhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKHN0cnVjdAo+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGk5MTVfcG93ZXJf ZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0KPiA+cG93ZXJfZG9tYWluczsKPiAr CWludCBlcnI7Cj4gIAo+ICAJaTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsID0KPiAg CQlzYW5pdGl6ZV9kaXNhYmxlX3Bvd2VyX3dlbGxfb3B0aW9uKGRldl9wcml2LAo+IEBAIC0yODUy LDE1ICsyODc0LDE1IEBAIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoc3RydWN0Cj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiB0aGUgZGlzYWJsaW5nIG9yZGVyIGlzIHJl dmVyc2VkLgo+ICAJICovCj4gIAlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpIHsKPiAtCQlzZXRf cG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgaWNsX3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBz ZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywKPiBpY2xfcG93ZXJfd2VsbHMpOwo+ICAJfSBl bHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewo+IC0JCXNldF9wb3dlcl93ZWxscyhwb3dl cl9kb21haW5zLCBoc3dfcG93ZXJfd2VsbHMpOwo+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhw b3dlcl9kb21haW5zLAo+IGhzd19wb3dlcl93ZWxscyk7Cj4gIAl9IGVsc2UgaWYgKElTX0JST0FE V0VMTChkZXZfcHJpdikpIHsKPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgYmR3 X3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywK PiBiZHdfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkg ewo+IC0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBza2xfcG93ZXJfd2VsbHMpOwo+ ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+IHNrbF9wb3dlcl93ZWxs cyk7Cj4gIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Cj4gLQkJc2V0X3Bv d2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGNubF9wb3dlcl93ZWxscyk7Cj4gKwkJZXJyID0gc2V0 X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gY25sX3Bvd2VyX3dlbGxzKTsKPiAgCj4gIAkJ LyoKPiAgCQkgKiBEREkgYW5kIEF1eCBJTyBhcmUgZ2V0dGluZyBlbmFibGVkIGZvciBhbGwgcG9y dHMKPiBAQCAtMjg3MiwyMiArMjg5NCwzNCBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0 KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCQlwb3dlcl9kb21haW5z LT5wb3dlcl93ZWxsX2NvdW50IC09IDI7Cj4gIAo+ICAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRl dl9wcml2KSkgewo+IC0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBieHRfcG93ZXJf d2VsbHMpOwo+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+IGJ4dF9w b3dlcl93ZWxscyk7Cj4gIAl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4g LQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGdsa19wb3dlcl93ZWxscyk7Cj4gKwkJ ZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gZ2xrX3Bvd2VyX3dlbGxzKTsK PiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAtCQlzZXRfcG93ZXJf d2VsbHMocG93ZXJfZG9tYWlucywgY2h2X3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBzZXRfcG93 ZXJfd2VsbHMocG93ZXJfZG9tYWlucywKPiBjaHZfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+IC0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9k b21haW5zLCB2bHZfcG93ZXJfd2VsbHMpOwo+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dl cl9kb21haW5zLAo+IHZsdl9wb3dlcl93ZWxscyk7Cj4gIAl9IGVsc2UgaWYgKElTX0k4MzAoZGV2 X3ByaXYpKSB7Cj4gLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGk4MzBfcG93ZXJf d2VsbHMpOwo+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+IGk4MzBf cG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIHsKPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9t YWlucywKPiBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsKTsKPiArCQllcnIgPSBzZXRfcG93ZXJf d2VsbHMocG93ZXJfZG9tYWlucywKPiBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsKTsKPiAgCX0K PiAgCj4gLQlhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKGRldl9wcml2KTsKPiArCWlmICgh ZXJyKQo+ICsJCWFzc2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoZGV2X3ByaXYpOwo+ICAKPiAt CXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX3Bv d2VyX2RvbWFpbnNfY2xlYW51cCAtIGNsZWFuIHVwIHBvd2VyIGRvbWFpbnMgcmVzb3VyY2VzCj4g KyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICoKPiArICogUmVsZWFzZSBh bnkgcmVzb3VyY2VzIGFjcXVpcmVkIGJ5IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdCgpCj4gKyAq Lwo+ICt2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWtmcmVlKGRldl9wcml2LT5wb3dlcl9kb21haW5zLnBv d2VyX3dlbGxzKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19z eW5jX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2KQo+IEBAIC0yODk3LDkg KzI5MzEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N5bmNfaHcoc3RydWN0 Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJbXV0ZXhfbG9jaygmcG93ZXJf ZG9tYWlucy0+bG9jayk7Cj4gIAlmb3JfZWFjaF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93 ZWxsKSB7Cj4gLQkJcG93ZXJfd2VsbC0+b3BzLT5zeW5jX2h3KGRldl9wcml2LCBwb3dlcl93ZWxs KTsKPiAtCQlwb3dlcl93ZWxsLT5od19lbmFibGVkID0gcG93ZXJfd2VsbC0+b3BzLQo+ID5pc19l bmFibGVkKGRldl9wcml2LAo+IC0JCQkJCQkJCSAgICAKPiAgcG93ZXJfd2VsbCk7Cj4gKwkJcG93 ZXJfd2VsbC0+ZGVzYy0+b3BzLT5zeW5jX2h3KGRldl9wcml2LAo+IHBvd2VyX3dlbGwpOwo+ICsJ CXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPQo+ICsJCQlwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmlz X2VuYWJsZWQoZGV2X3ByaXYsCj4gcG93ZXJfd2VsbCk7Cj4gIAl9Cj4gIAltdXRleF91bmxvY2so JnBvd2VyX2RvbWFpbnMtPmxvY2spOwo+ICB9Cj4gQEAgLTM0MDIsNyArMzQzNiw3IEBAIHN0YXRp YyB2b2lkIGNodl9waHlfY29udHJvbF9pbml0KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJICogb3ZlcnJpZGUgYW5kIHNldCB0aGUgbGFuZSBwb3dlcmRvd24gYml0cyBh Y2NkaW5nIHRvIHRoZQo+ICAJICogY3VycmVudCBsYW5lIHN0YXR1cy4KPiAgCSAqLwo+IC0JaWYg KGNtbl9iYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7Cj4gKwlpZiAoY21u X2JjLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKPiAgCQl1aW50 MzJfdCBzdGF0dXMgPSBJOTE1X1JFQUQoRFBMTChQSVBFX0EpKTsKPiAgCQl1bnNpZ25lZCBpbnQg bWFzazsKPiAgCj4gQEAgLTM0MzMsNyArMzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIGNodl9waHlfY29u dHJvbF9pbml0KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRldl9w cml2LT5jaHZfcGh5X2Fzc2VydFtEUElPX1BIWTBdID0gdHJ1ZTsKPiAgCX0KPiAgCj4gLQlpZiAo Y21uX2QtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2QpKSB7Cj4gKwlpZiAoY21uX2Qt PmRlc2MtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2QpKSB7Cj4gIAkJdWludDMyX3Qg c3RhdHVzID0gSTkxNV9SRUFEKERQSU9fUEhZX1NUQVRVUyk7Cj4gIAkJdW5zaWduZWQgaW50IG1h c2s7Cj4gIAo+IEBAIC0zNDY5LDE1ICszNTAzLDE1IEBAIHN0YXRpYyB2b2lkIHZsdl9jbW5sYW5l X3dhKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWxvb2t1cF9wb3dl cl93ZWxsKGRldl9wcml2LAo+IFBVTklUX1BPV0VSX1dFTExfRElTUDJEKTsKPiAgCj4gIAkvKiBJ ZiB0aGUgZGlzcGxheSBtaWdodCBiZSBhbHJlYWR5IGFjdGl2ZSBza2lwIHRoaXMgKi8KPiAtCWlm IChjbW4tPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uKSAmJgo+IC0JICAgIGRpc3AyZC0+ b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBkaXNwMmQpICYmCj4gKwlpZiAoY21uLT5kZXNjLT5v cHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbikgJiYKPiArCSAgICBkaXNwMmQtPmRlc2MtPm9w cy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgZGlzcDJkKSAmJgo+ICAJICAgIEk5MTVfUkVBRChEUElP X0NUTCkgJiBEUElPX0NNTlJTVCkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygi dG9nZ2xpbmcgZGlzcGxheSBQSFkgc2lkZSByZXNldFxuIik7Cj4gIAo+ICAJLyogY21ubGFuZSBu ZWVkcyBEUExMIHJlZ2lzdGVycyAqLwo+IC0JZGlzcDJkLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwg ZGlzcDJkKTsKPiArCWRpc3AyZC0+ZGVzYy0+b3BzLT5lbmFibGUoZGV2X3ByaXYsIGRpc3AyZCk7 Cj4gIAo+ICAJLyoKPiAgCSAqIEZyb20gVkxWMkEwX0RQX2VEUF9IRE1JX0RQSU9fZHJpdmVyX3Zi aW9zX25vdGVzXzExLmRvY3g6Cj4gQEAgLTM0ODYsNyArMzUyMCw3IEBAIHN0YXRpYyB2b2lkIHZs dl9jbW5sYW5lX3dhKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICog U2ltcGx5IHVuZ2F0aW5nIGlzbid0IGVub3VnaCB0byByZXNldCB0aGUgUEhZIGVub3VnaCB0bwo+ IGdldAo+ICAJICogcG9ydHMgYW5kIGxhbmVzIHJ1bm5pbmcuCj4gIAkgKi8KPiAtCWNtbi0+b3Bz LT5kaXNhYmxlKGRldl9wcml2LCBjbW4pOwo+ICsJY21uLT5kZXNjLT5vcHMtPmRpc2FibGUoZGV2 X3ByaXYsIGNtbik7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0zNjAyLDkgKzM2MzYsOSBAQCBzdGF0 aWMgdm9pZAo+IGludGVsX3Bvd2VyX2RvbWFpbnNfZHVtcF9pbmZvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRv bWFpbjsKPiAgCj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiJS0yNXMgJWRcbiIsCj4gLQkJCQkgcG93 ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0KPiA+Y291bnQpOwo+ICsJCQkJIHBvd2VyX3dlbGwt PmRlc2MtPm5hbWUsIHBvd2VyX3dlbGwtCj4gPmNvdW50KTsKPiAgCj4gLQkJZm9yX2VhY2hfcG93 ZXJfZG9tYWluKGRvbWFpbiwgcG93ZXJfd2VsbC0+ZG9tYWlucykKPiArCQlmb3JfZWFjaF9wb3dl cl9kb21haW4oZG9tYWluLCBwb3dlcl93ZWxsLT5kZXNjLQo+ID5kb21haW5zKQo+ICAJCQlEUk1f REVCVUdfRFJJVkVSKCIgICUtMjNzICVkXG4iLAo+ICAJCQkJCSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2RvbWFpbl8KPiBzdHIoZG9tYWluKSwKPiAgCQkJCQkgcG93ZXJfZG9tYWlucy0KPiA+ZG9tYWlu X3VzZV9jb3VudFtkb21haW5dKTsKPiBAQCAtMzY0MCwyMiArMzY3NCwyNCBAQCB2b2lkIGludGVs X3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJCSAqIGFuZCBQVzEgcG93ZXIgd2VsbHMpIGFyZSB1bmRlciBGVyBjb250cm9s LCBzbwo+IGlnbm9yZSB0aGVtLAo+ICAJCSAqIHNpbmNlIHRoZWlyIHN0YXRlIGNhbiBjaGFuZ2Ug YXN5bmNocm9ub3VzbHkuCj4gIAkJICovCj4gLQkJaWYgKCFwb3dlcl93ZWxsLT5kb21haW5zKQo+ ICsJCWlmICghcG93ZXJfd2VsbC0+ZGVzYy0+ZG9tYWlucykKPiAgCQkJY29udGludWU7Cj4gIAo+ IC0JCWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsCj4gcG93 ZXJfd2VsbCk7Cj4gLQkJaWYgKChwb3dlcl93ZWxsLT5jb3VudCB8fCBwb3dlcl93ZWxsLT5hbHdh eXNfb24pICE9Cj4gZW5hYmxlZCkKPiArCQllbmFibGVkID0gcG93ZXJfd2VsbC0+ZGVzYy0+b3Bz LQo+ID5pc19lbmFibGVkKGRldl9wcml2LAo+ICsJCQkJCQkJICAgIHBvd2VyX3dlCj4gbGwpOwo+ ICsJCWlmICgocG93ZXJfd2VsbC0+Y291bnQgfHwgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+YWx3YXlz X29uKSAhPSBlbmFibGVkKQo+ICAJCQlEUk1fRVJST1IoInBvd2VyIHdlbGwgJXMgc3RhdGUgbWlz bWF0Y2gKPiAocmVmY291bnQgJWQvZW5hYmxlZCAlZCkiLAo+IC0JCQkJICBwb3dlcl93ZWxsLT5u YW1lLCBwb3dlcl93ZWxsLQo+ID5jb3VudCwgZW5hYmxlZCk7Cj4gKwkJCQkgIHBvd2VyX3dlbGwt PmRlc2MtPm5hbWUsCj4gKwkJCQkgIHBvd2VyX3dlbGwtPmNvdW50LCBlbmFibGVkKTsKPiAgCj4g IAkJZG9tYWluc19jb3VudCA9IDA7Cj4gLQkJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFpbiwg cG93ZXJfd2VsbC0+ZG9tYWlucykKPiArCQlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBw b3dlcl93ZWxsLT5kZXNjLQo+ID5kb21haW5zKQo+ICAJCQlkb21haW5zX2NvdW50ICs9IHBvd2Vy X2RvbWFpbnMtCj4gPmRvbWFpbl91c2VfY291bnRbZG9tYWluXTsKPiAgCj4gIAkJaWYgKHBvd2Vy X3dlbGwtPmNvdW50ICE9IGRvbWFpbnNfY291bnQpIHsKPiAgCQkJRFJNX0VSUk9SKCJwb3dlciB3 ZWxsICVzIHJlZmNvdW50L2RvbWFpbgo+IHJlZmNvdW50IG1pc21hdGNoICIKPiAgCQkJCSAgIihy ZWZjb3VudCAlZC9kb21haW5zIHJlZmNvdW50Cj4gJWQpXG4iLAo+IC0JCQkJICBwb3dlcl93ZWxs LT5uYW1lLCBwb3dlcl93ZWxsLQo+ID5jb3VudCwKPiArCQkJCSAgcG93ZXJfd2VsbC0+ZGVzYy0+ bmFtZSwKPiBwb3dlcl93ZWxsLT5jb3VudCwKPiAgCQkJCSAgZG9tYWluc19jb3VudCk7Cj4gIAkJ CWR1bXBfZG9tYWluX2luZm8gPSB0cnVlOwo+ICAJCX0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==