From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 1/2] drm/i915: start moving state checker to intel_verify.c Date: Wed, 15 May 2019 11:33:31 +0200 Message-ID: <20190515093331.GG17751@phenom.ffwll.local> References: <20190416103603.8266-1-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5C26889780 for ; Wed, 15 May 2019 09:33:37 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id g57so3135771edc.12 for ; Wed, 15 May 2019 02:33:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190416103603.8266-1-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBcHIgMTYsIDIwMTkgYXQgMDE6MzY6MDJQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gU2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgIHwgICAxICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNDc0ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAg MTIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZXJpZnkuYyAgfCA0NjQgKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmVyaWZ5 LmggIHwgIDIyICsrCj4gIDUgZmlsZXMgY2hhbmdlZCwgNTEwIGluc2VydGlvbnMoKyksIDQ2MyBk ZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3ZlcmlmeS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF92ZXJpZnkuaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggZmJjYjA5MDQuLmEw MDBmYWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC0xNjYsNiArMTY2LDcgQEAgaTkx NS15ICs9IGR2b19jaDcwMTcubyBcCj4gIAkgIGludGVsX3BhbmVsLm8gXAo+ICAJICBpbnRlbF9z ZHZvLm8gXAo+ICAJICBpbnRlbF90di5vIFwKPiArCSAgaW50ZWxfdmVyaWZ5Lm8gXAo+ICAJICB2 bHZfZHNpLm8gXAo+ICAJICB2bHZfZHNpX3BsbC5vIFwKPiAgCSAgaW50ZWxfdmRzYy5vCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDNiZDQwYS4uMzFhOTMxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC02OSw2ICs2OSw3IEBACj4g ICNpbmNsdWRlICJpbnRlbF9zZHZvLmgiCj4gICNpbmNsdWRlICJpbnRlbF9zcHJpdGUuaCIKPiAg I2luY2x1ZGUgImludGVsX3R2LmgiCj4gKyNpbmNsdWRlICJpbnRlbF92ZXJpZnkuaCIKPiAgCj4g IC8qIFByaW1hcnkgcGxhbmUgZm9ybWF0cyBmb3IgZ2VuIDw9IDMgKi8KPiAgc3RhdGljIGNvbnN0 IHUzMiBpOHh4X3ByaW1hcnlfZm9ybWF0c1tdID0gewo+IEBAIC0xMjQzLDcgKzEyNDQsNyBAQCB2 b2lkIGFzc2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJ cGlwZV9uYW1lKHBpcGUpLCBvbm9mZihzdGF0ZSksIG9ub2ZmKGN1cl9zdGF0ZSkpOwo+ICB9Cj4g IAo+IC1zdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwg Ym9vbCBzdGF0ZSkKPiArdm9pZCBhc3NlcnRfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwgYm9vbCBzdGF0ZSkKPiAgewo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gIAlib29sIGN1cl9zdGF0 ZTsKPiBAQCAtNjYwNyw0NSArNjYwOCw2IEBAIHZvaWQgaW50ZWxfZW5jb2Rlcl9kZXN0cm95KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCWtmcmVlKGludGVsX2VuY29kZXIpOwo+ICB9 Cj4gIAo+IC0vKiBDcm9zcyBjaGVjayB0aGUgYWN0dWFsIGh3IHN0YXRlIHdpdGggb3VyIG93biBt b2Rlc2V0IHN0YXRlIHRyYWNraW5nIChhbmQgaXQncwo+IC0gKiBpbnRlcm5hbCBjb25zaXN0ZW5j eSkuICovCj4gLXN0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3Rvcl92ZXJpZnlfc3RhdGUoc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0JCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gLQo+ IC0JRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gLQkJICAgICAgY29ubmVj dG9yLT5iYXNlLmJhc2UuaWQsCj4gLQkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5hbWUpOwo+IC0K PiAtCWlmIChjb25uZWN0b3ItPmdldF9od19zdGF0ZShjb25uZWN0b3IpKSB7Cj4gLQkJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4gLQo+IC0JCUk5 MTVfU1RBVEVfV0FSTighY3J0Y19zdGF0ZSwKPiAtCQkJICJjb25uZWN0b3IgZW5hYmxlZCB3aXRo b3V0IGF0dGFjaGVkIGNydGNcbiIpOwo+IC0KPiAtCQlpZiAoIWNydGNfc3RhdGUpCj4gLQkJCXJl dHVybjsKPiAtCj4gLQkJSTkxNV9TVEFURV9XQVJOKCFjcnRjX3N0YXRlLT5hY3RpdmUsCj4gLQkJ ICAgICAgImNvbm5lY3RvciBpcyBhY3RpdmUsIGJ1dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4iKTsK PiAtCj4gLQkJaWYgKCFlbmNvZGVyIHx8IGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQ X01TVCkKPiAtCQkJcmV0dXJuOwo+IC0KPiAtCQlJOTE1X1NUQVRFX1dBUk4oY29ubl9zdGF0ZS0+ YmVzdF9lbmNvZGVyICE9ICZlbmNvZGVyLT5iYXNlLAo+IC0JCQkiYXRvbWljIGVuY29kZXIgZG9l c24ndCBtYXRjaCBhdHRhY2hlZCBlbmNvZGVyXG4iKTsKPiAtCj4gLQkJSTkxNV9TVEFURV9XQVJO KGNvbm5fc3RhdGUtPmNydGMgIT0gZW5jb2Rlci0+YmFzZS5jcnRjLAo+IC0JCQkiYXR0YWNoZWQg ZW5jb2RlciBjcnRjIGRpZmZlcnMgZnJvbSBjb25uZWN0b3IgY3J0Y1xuIik7Cj4gLQl9IGVsc2Ug ewo+IC0JCUk5MTVfU1RBVEVfV0FSTihjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmFjdGl2ZSwK PiAtCQkJImF0dGFjaGVkIGNydGMgaXMgYWN0aXZlLCBidXQgY29ubmVjdG9yIGlzbid0XG4iKTsK PiAtCQlJOTE1X1NUQVRFX1dBUk4oIWNydGNfc3RhdGUgJiYgY29ubl9zdGF0ZS0+YmVzdF9lbmNv ZGVyLAo+IC0JCQkiYmVzdCBlbmNvZGVyIHNldCB3aXRob3V0IGNydGMhXG4iKTsKPiAtCX0KPiAt fQo+IC0KPiAgc3RhdGljIGludCBwaXBlX3JlcXVpcmVkX2ZkaV9sYW5lcyhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJaWYgKGNydGNfc3RhdGUtPmJhc2UuZW5h YmxlICYmIGNydGNfc3RhdGUtPmhhc19wY2hfZW5jb2RlcikKPiBAQCAtNjg3OSw3ICs2ODQxLDcg QEAgc3RhdGljIHUzMiBpbGtfcGlwZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKPiAgCXJldHVybiBwaXhlbF9yYXRlOwo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArdm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMt PmRldik7Cj4gIAo+IEBAIC0xMTU4NCw5ICsxMTU0Niw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpv dXRwdXRfZm9ybWF0cyhlbnVtIGludGVsX291dHB1dF9mb3JtYXQgZm9ybWF0KQo+ICAJcmV0dXJu IG91dHB1dF9mb3JtYXRfc3RyW2Zvcm1hdF07Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVs X2R1bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gLQkJCQkgICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gLQkJCQkgICBjb25zdCBjaGFyICpj b250ZXh0KQo+ICt2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gKwkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4g KwkJCSAgICBjb25zdCBjaGFyICpjb250ZXh0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gQEAgLTEyMDc2LDcgKzEyMDM4LDcgQEAgc3RhdGljIGJvb2wg ZmFzdGJvb3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAly ZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sCj4gK2Jvb2wKPiAgaW50ZWxfcGlw ZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ICAJCQkgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiBAQCAtMTIzODksOCArMTIzNTEsOCBA QCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX3BpcGVf Y29uZmlnX3Nhbml0eV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g LQkJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICt2 b2lkIGludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKQo+ICB7Cj4gIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+ ICAJCWludCBmZGlfZG90Y2xvY2sgPSBpbnRlbF9kb3RjbG9ja19jYWxjdWxhdGUoaW50ZWxfZmRp X2xpbmtfZnJlcShkZXZfcHJpdiwgcGlwZV9jb25maWcpLAo+IEBAIC0xMjQwNyw0MjAgKzEyMzY5 LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQg dmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJICAgIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gLQlzdHJ1Y3Qgc2tsX2h3X3N0YXRl IHsKPiAtCQlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBkZGJfeVtJOTE1X01BWF9QTEFORVNdOwo+IC0J CXN0cnVjdCBza2xfZGRiX2VudHJ5IGRkYl91dltJOTE1X01BWF9QTEFORVNdOwo+IC0JCXN0cnVj dCBza2xfZGRiX2FsbG9jYXRpb24gZGRiOwo+IC0JCXN0cnVjdCBza2xfcGlwZV93bSB3bTsKPiAt CX0gKmh3Owo+IC0Jc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqc3dfZGRiOwo+IC0Jc3RydWN0 IHNrbF9waXBlX3dtICpzd193bTsKPiAtCXN0cnVjdCBza2xfZGRiX2VudHJ5ICpod19kZGJfZW50 cnksICpzd19kZGJfZW50cnk7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gLQljb25zdCBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMt PnBpcGU7Cj4gLQlpbnQgcGxhbmUsIGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldl9wcml2KTsKPiAtCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19z dGF0ZS0+YWN0aXZlKQo+IC0JCXJldHVybjsKPiAtCj4gLQlodyA9IGt6YWxsb2Moc2l6ZW9mKCpo dyksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFodykKPiAtCQlyZXR1cm47Cj4gLQo+IC0Jc2tsX3Bp cGVfd21fZ2V0X2h3X3N0YXRlKGludGVsX2NydGMsICZody0+d20pOwo+IC0Jc3dfd20gPSAmdG9f aW50ZWxfY3J0Y19zdGF0ZShuZXdfc3RhdGUpLT53bS5za2wub3B0aW1hbDsKPiAtCj4gLQlza2xf cGlwZV9kZGJfZ2V0X2h3X3N0YXRlKGludGVsX2NydGMsIGh3LT5kZGJfeSwgaHctPmRkYl91dik7 Cj4gLQo+IC0Jc2tsX2RkYl9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsICZody0+ZGRiKTsKPiAtCXN3 X2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPiAtCj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMSAmJgo+IC0JICAgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMgIT0gc3dfZGRi LT5lbmFibGVkX3NsaWNlcykKPiAtCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIERCVUYgU2xpY2Vz IChleHBlY3RlZCAldSwgZ290ICV1KVxuIiwKPiAtCQkJICBzd19kZGItPmVuYWJsZWRfc2xpY2Vz LAo+IC0JCQkgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMpOwo+IC0KPiAtCS8qIHBsYW5lcyAqLwo+ IC0JZm9yX2VhY2hfdW5pdmVyc2FsX3BsYW5lKGRldl9wcml2LCBwaXBlLCBwbGFuZSkgewo+IC0J CXN0cnVjdCBza2xfcGxhbmVfd20gKmh3X3BsYW5lX3dtLCAqc3dfcGxhbmVfd207Cj4gLQo+IC0J CWh3X3BsYW5lX3dtID0gJmh3LT53bS5wbGFuZXNbcGxhbmVdOwo+IC0JCXN3X3BsYW5lX3dtID0g JnN3X3dtLT5wbGFuZXNbcGxhbmVdOwo+IC0KPiAtCQkvKiBXYXRlcm1hcmtzICovCj4gLQkJZm9y IChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCQlpZiAoc2ts X3dtX2xldmVsX2VxdWFscygmaHdfcGxhbmVfd20tPndtW2xldmVsXSwKPiAtCQkJCQkJJnN3X3Bs YW5lX3dtLT53bVtsZXZlbF0pKQo+IC0JCQkJY29udGludWU7Cj4gLQo+IC0JCQlEUk1fRVJST1Io Im1pc21hdGNoIGluIFdNIHBpcGUgJWMgcGxhbmUgJWQgbGV2ZWwgJWQgKGV4cGVjdGVkIGU9JWQg Yj0ldSBsPSV1LCBnb3QgZT0lZCBiPSV1IGw9JXUpXG4iLAo+IC0JCQkJICBwaXBlX25hbWUocGlw ZSksIHBsYW5lICsgMSwgbGV2ZWwsCj4gLQkJCQkgIHN3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxh bmVfZW4sCj4gLQkJCQkgIHN3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2IsCj4gLQkJ CQkgIHN3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2wsCj4gLQkJCQkgIGh3X3BsYW5l X3dtLT53bVtsZXZlbF0ucGxhbmVfZW4sCj4gLQkJCQkgIGh3X3BsYW5lX3dtLT53bVtsZXZlbF0u cGxhbmVfcmVzX2IsCj4gLQkJCQkgIGh3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2wp Owo+IC0JCX0KPiAtCj4gLQkJaWYgKCFza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0+ dHJhbnNfd20sCj4gLQkJCQkJICZzd19wbGFuZV93bS0+dHJhbnNfd20pKSB7Cj4gLQkJCURSTV9F UlJPUigibWlzbWF0Y2ggaW4gdHJhbnMgV00gcGlwZSAlYyBwbGFuZSAlZCAoZXhwZWN0ZWQgZT0l ZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9JXUgbD0ldSlcbiIsCj4gLQkJCQkgIHBpcGVfbmFtZShw aXBlKSwgcGxhbmUgKyAxLAo+IC0JCQkJICBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4s Cj4gLQkJCQkgIHN3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYiwKPiAtCQkJCSAgc3df cGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sLAo+IC0JCQkJICBod19wbGFuZV93bS0+dHJh bnNfd20ucGxhbmVfZW4sCj4gLQkJCQkgIGh3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNf YiwKPiAtCQkJCSAgaHdfcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sKTsKPiAtCQl9Cj4g LQo+IC0JCS8qIEREQiAqLwo+IC0JCWh3X2RkYl9lbnRyeSA9ICZody0+ZGRiX3lbcGxhbmVdOwo+ IC0JCXN3X2RkYl9lbnRyeSA9ICZ0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19zdGF0ZSktPndtLnNr bC5wbGFuZV9kZGJfeVtwbGFuZV07Cj4gLQo+IC0JCWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbCho d19kZGJfZW50cnksIHN3X2RkYl9lbnRyeSkpIHsKPiAtCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBp biBEREIgc3RhdGUgcGlwZSAlYyBwbGFuZSAlZCAoZXhwZWN0ZWQgKCV1LCV1KSwgZm91bmQgKCV1 LCV1KSlcbiIsCj4gLQkJCQkgIHBpcGVfbmFtZShwaXBlKSwgcGxhbmUgKyAxLAo+IC0JCQkJICBz d19kZGJfZW50cnktPnN0YXJ0LCBzd19kZGJfZW50cnktPmVuZCwKPiAtCQkJCSAgaHdfZGRiX2Vu dHJ5LT5zdGFydCwgaHdfZGRiX2VudHJ5LT5lbmQpOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQkvKgo+ IC0JICogY3Vyc29yCj4gLQkgKiBJZiB0aGUgY3Vyc29yIHBsYW5lIGlzbid0IGFjdGl2ZSwgd2Ug bWF5IG5vdCBoYXZlIHVwZGF0ZWQgaXQncyBkZGIKPiAtCSAqIGFsbG9jYXRpb24uIEluIHRoYXQg Y2FzZSBzaW5jZSB0aGUgZGRiIGFsbG9jYXRpb24gd2lsbCBiZSB1cGRhdGVkCj4gLQkgKiBvbmNl IHRoZSBwbGFuZSBiZWNvbWVzIHZpc2libGUsIHdlIGNhbiBza2lwIHRoaXMgY2hlY2sKPiAtCSAq Lwo+IC0JaWYgKDEpIHsKPiAtCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpod19wbGFuZV93bSwgKnN3 X3BsYW5lX3dtOwo+IC0KPiAtCQlod19wbGFuZV93bSA9ICZody0+d20ucGxhbmVzW1BMQU5FX0NV UlNPUl07Cj4gLQkJc3dfcGxhbmVfd20gPSAmc3dfd20tPnBsYW5lc1tQTEFORV9DVVJTT1JdOwo+ IC0KPiAtCQkvKiBXYXRlcm1hcmtzICovCj4gLQkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1h eF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCQlpZiAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxh bmVfd20tPndtW2xldmVsXSwKPiAtCQkJCQkJJnN3X3BsYW5lX3dtLT53bVtsZXZlbF0pKQo+IC0J CQkJY29udGludWU7Cj4gLQo+IC0JCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIFdNIHBpcGUgJWMg Y3Vyc29yIGxldmVsICVkIChleHBlY3RlZCBlPSVkIGI9JXUgbD0ldSwgZ290IGU9JWQgYj0ldSBs PSV1KVxuIiwKPiAtCQkJCSAgcGlwZV9uYW1lKHBpcGUpLCBsZXZlbCwKPiAtCQkJCSAgc3dfcGxh bmVfd20tPndtW2xldmVsXS5wbGFuZV9lbiwKPiAtCQkJCSAgc3dfcGxhbmVfd20tPndtW2xldmVs XS5wbGFuZV9yZXNfYiwKPiAtCQkJCSAgc3dfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNf bCwKPiAtCQkJCSAgaHdfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9lbiwKPiAtCQkJCSAgaHdf cGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYiwKPiAtCQkJCSAgaHdfcGxhbmVfd20tPndt W2xldmVsXS5wbGFuZV9yZXNfbCk7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoIXNrbF93bV9sZXZlbF9l cXVhbHMoJmh3X3BsYW5lX3dtLT50cmFuc193bSwKPiAtCQkJCQkgJnN3X3BsYW5lX3dtLT50cmFu c193bSkpIHsKPiAtCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiB0cmFucyBXTSBwaXBlICVjIGN1 cnNvciAoZXhwZWN0ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9JXUgbD0ldSlcbiIsCj4g LQkJCQkgIHBpcGVfbmFtZShwaXBlKSwKPiAtCQkJCSAgc3dfcGxhbmVfd20tPnRyYW5zX3dtLnBs YW5lX2VuLAo+IC0JCQkJICBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2IsCj4gLQkJ CQkgIHN3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfbCwKPiAtCQkJCSAgaHdfcGxhbmVf d20tPnRyYW5zX3dtLnBsYW5lX2VuLAo+IC0JCQkJICBod19wbGFuZV93bS0+dHJhbnNfd20ucGxh bmVfcmVzX2IsCj4gLQkJCQkgIGh3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfbCk7Cj4g LQkJfQo+IC0KPiAtCQkvKiBEREIgKi8KPiAtCQlod19kZGJfZW50cnkgPSAmaHctPmRkYl95W1BM QU5FX0NVUlNPUl07Cj4gLQkJc3dfZGRiX2VudHJ5ID0gJnRvX2ludGVsX2NydGNfc3RhdGUobmV3 X3N0YXRlKS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NVUlNPUl07Cj4gLQo+IC0JCWlmICgh c2tsX2RkYl9lbnRyeV9lcXVhbChod19kZGJfZW50cnksIHN3X2RkYl9lbnRyeSkpIHsKPiAtCQkJ RFJNX0VSUk9SKCJtaXNtYXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYyBjdXJzb3IgKGV4cGVjdGVk ICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+IC0JCQkJICBwaXBlX25hbWUocGlwZSksCj4g LQkJCQkgIHN3X2RkYl9lbnRyeS0+c3RhcnQsIHN3X2RkYl9lbnRyeS0+ZW5kLAo+IC0JCQkJICBo d19kZGJfZW50cnktPnN0YXJ0LCBod19kZGJfZW50cnktPmVuZCk7Cj4gLQkJfQo+IC0JfQo+IC0K PiAtCWtmcmVlKGh3KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtdmVyaWZ5X2Nvbm5lY3Rv cl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCSAgICAgICBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUsCj4gLQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAt ewo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKPiAtCWludCBpOwo+IC0KPiAtCWZvcl9lYWNo X25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUs IGkpIHsKPiAtCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29k ZXI7Cj4gLQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gTlVMTDsKPiAtCj4g LQkJaWYgKG5ld19jb25uX3N0YXRlLT5jcnRjICE9IGNydGMpCj4gLQkJCWNvbnRpbnVlOwo+IC0K PiAtCQlpZiAoY3J0YykKPiAtCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRj X3N0YXRlKHN0YXRlLCBuZXdfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gLQo+IC0JCWludGVsX2Nvbm5l Y3Rvcl92ZXJpZnlfc3RhdGUoY3J0Y19zdGF0ZSwgbmV3X2Nvbm5fc3RhdGUpOwo+IC0KPiAtCQlJ OTE1X1NUQVRFX1dBUk4obmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyLAo+ IC0JCSAgICAgImNvbm5lY3RvcidzIGF0b21pYyBlbmNvZGVyIGRvZXNuJ3QgbWF0Y2ggbGVnYWN5 IGVuY29kZXJcbiIpOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZAo+IC12ZXJpZnlfZW5j b2Rlcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+IC0Jc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpvbGRfY29ubl9zdGF0ZSwgKm5ld19jb25uX3N0YXRlOwo+IC0JaW50IGk7Cj4gLQo+IC0J Zm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKPiAtCQlib29sIGVuYWJsZWQg PSBmYWxzZSwgZm91bmQgPSBmYWxzZTsKPiAtCQllbnVtIHBpcGUgcGlwZTsKPiAtCj4gLQkJRFJN X0RFQlVHX0tNUygiW0VOQ09ERVI6JWQ6JXNdXG4iLAo+IC0JCQkgICAgICBlbmNvZGVyLT5iYXNl LmJhc2UuaWQsCj4gLQkJCSAgICAgIGVuY29kZXItPmJhc2UubmFtZSk7Cj4gLQo+IC0JCWZvcl9l YWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5f c3RhdGUsCj4gLQkJCQkJCSAgIG5ld19jb25uX3N0YXRlLCBpKSB7Cj4gLQkJCWlmIChvbGRfY29u bl9zdGF0ZS0+YmVzdF9lbmNvZGVyID09ICZlbmNvZGVyLT5iYXNlKQo+IC0JCQkJZm91bmQgPSB0 cnVlOwo+IC0KPiAtCQkJaWYgKG5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIgIT0gJmVuY29k ZXItPmJhc2UpCj4gLQkJCQljb250aW51ZTsKPiAtCQkJZm91bmQgPSBlbmFibGVkID0gdHJ1ZTsK PiAtCj4gLQkJCUk5MTVfU1RBVEVfV0FSTihuZXdfY29ubl9zdGF0ZS0+Y3J0YyAhPQo+IC0JCQkJ CWVuY29kZXItPmJhc2UuY3J0YywKPiAtCQkJICAgICAiY29ubmVjdG9yJ3MgY3J0YyBkb2Vzbid0 IG1hdGNoIGVuY29kZXIgY3J0Y1xuIik7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoIWZvdW5kKQo+IC0J CQljb250aW51ZTsKPiAtCj4gLQkJSTkxNV9TVEFURV9XQVJOKCEhZW5jb2Rlci0+YmFzZS5jcnRj ICE9IGVuYWJsZWQsCj4gLQkJICAgICAiZW5jb2RlcidzIGVuYWJsZWQgc3RhdGUgbWlzbWF0Y2gg Igo+IC0JCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLAo+IC0JCSAgICAgISFlbmNv ZGVyLT5iYXNlLmNydGMsIGVuYWJsZWQpOwo+IC0KPiAtCQlpZiAoIWVuY29kZXItPmJhc2UuY3J0 Yykgewo+IC0JCQlib29sIGFjdGl2ZTsKPiAtCj4gLQkJCWFjdGl2ZSA9IGVuY29kZXItPmdldF9o d19zdGF0ZShlbmNvZGVyLCAmcGlwZSk7Cj4gLQkJCUk5MTVfU1RBVEVfV0FSTihhY3RpdmUsCj4g LQkJCSAgICAgImVuY29kZXIgZGV0YWNoZWQgYnV0IHN0aWxsIGVuYWJsZWQgb24gcGlwZSAlYy5c biIsCj4gLQkJCSAgICAgcGlwZV9uYW1lKHBpcGUpKTsKPiAtCQl9Cj4gLQl9Cj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkCj4gLXZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAtCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gLQkJICBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsICpzd19jb25maWc7Cj4gLQlz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlOwo+IC0JYm9vbCBhY3RpdmU7Cj4gLQo+ IC0Jb2xkX3N0YXRlID0gb2xkX2NydGNfc3RhdGUtPnN0YXRlOwo+IC0JX19kcm1fYXRvbWljX2hl bHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUob2xkX2NydGNfc3RhdGUpOwo+IC0JcGlwZV9jb25maWcg PSB0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsKPiAtCW1lbXNldChwaXBlX2Nv bmZpZywgMCwgc2l6ZW9mKCpwaXBlX2NvbmZpZykpOwo+IC0JcGlwZV9jb25maWctPmJhc2UuY3J0 YyA9IGNydGM7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZSA9IG9sZF9zdGF0ZTsKPiAtCj4g LQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDolc11cbiIsIGNydGMtPmJhc2UuaWQsIGNydGMtPm5h bWUpOwo+IC0KPiAtCWFjdGl2ZSA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyhp bnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7Cj4gLQo+IC0JLyogd2Uga2VlcCBib3RoIHBpcGVzIGVu YWJsZWQgb24gODMwICovCj4gLQlpZiAoSVNfSTgzMChkZXZfcHJpdikpCj4gLQkJYWN0aXZlID0g bmV3X2NydGNfc3RhdGUtPmFjdGl2ZTsKPiAtCj4gLQlJOTE1X1NUQVRFX1dBUk4obmV3X2NydGNf c3RhdGUtPmFjdGl2ZSAhPSBhY3RpdmUsCj4gLQkgICAgICJjcnRjIGFjdGl2ZSBzdGF0ZSBkb2Vz bid0IG1hdGNoIHdpdGggaHcgc3RhdGUgIgo+IC0JICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAl aSlcbiIsIG5ld19jcnRjX3N0YXRlLT5hY3RpdmUsIGFjdGl2ZSk7Cj4gLQo+IC0JSTkxNV9TVEFU RV9XQVJOKGludGVsX2NydGMtPmFjdGl2ZSAhPSBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlLAo+IC0J ICAgICAidHJhbnNpdGlvbmFsIGFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBhdG9taWMgaHcg c3RhdGUgIgo+IC0JICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0 YXRlLT5hY3RpdmUsIGludGVsX2NydGMtPmFjdGl2ZSk7Cj4gLQo+IC0JZm9yX2VhY2hfZW5jb2Rl cl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgewo+IC0JCWVudW0gcGlwZSBwaXBlOwo+IC0K PiAtCQlhY3RpdmUgPSBlbmNvZGVyLT5nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpOwo+IC0J CUk5MTVfU1RBVEVfV0FSTihhY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSwKPiAtCQkJ IltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRjIGFjdGl2ZSAlaVxuIiwKPiAtCQkJZW5j b2Rlci0+YmFzZS5iYXNlLmlkLCBhY3RpdmUsIG5ld19jcnRjX3N0YXRlLT5hY3RpdmUpOwo+IC0K PiAtCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIGludGVsX2NydGMtPnBpcGUgIT0gcGlwZSwK PiAtCQkJCSJFbmNvZGVyIGNvbm5lY3RlZCB0byB3cm9uZyBwaXBlICVjXG4iLAo+IC0JCQkJcGlw ZV9uYW1lKHBpcGUpKTsKPiAtCj4gLQkJaWYgKGFjdGl2ZSkKPiAtCQkJZW5jb2Rlci0+Z2V0X2Nv bmZpZyhlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4gLQl9Cj4gLQo+IC0JaW50ZWxfY3J0Y19jb21w dXRlX3BpeGVsX3JhdGUocGlwZV9jb25maWcpOwo+IC0KPiAtCWlmICghbmV3X2NydGNfc3RhdGUt PmFjdGl2ZSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2No ZWNrKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7Cj4gLQo+IC0Jc3dfY29uZmlnID0gdG9faW50ZWxf Y3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gLQlpZiAoIWludGVsX3BpcGVfY29uZmlnX2Nv bXBhcmUoZGV2X3ByaXYsIHN3X2NvbmZpZywKPiAtCQkJCSAgICAgICBwaXBlX2NvbmZpZywgZmFs c2UpKSB7Cj4gLQkJSTkxNV9TVEFURV9XQVJOKDEsICJwaXBlIHN0YXRlIGRvZXNuJ3QgbWF0Y2gh XG4iKTsKPiAtCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGludGVsX2NydGMsIHBpcGVfY29uZmln LAo+IC0JCQkJICAgICAgICJbaHcgc3RhdGVdIik7Cj4gLQkJaW50ZWxfZHVtcF9waXBlX2NvbmZp ZyhpbnRlbF9jcnRjLCBzd19jb25maWcsCj4gLQkJCQkgICAgICAgIltzdyBzdGF0ZV0iKTsKPiAt CX0KPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtaW50ZWxfdmVyaWZ5X3BsYW5lcyhzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZTsKPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4g LQlpbnQgaTsKPiAtCj4gLQlmb3JfZWFjaF9uZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUs IHBsYW5lLAo+IC0JCQkJCSAgcGxhbmVfc3RhdGUsIGkpCj4gLQkJYXNzZXJ0X3BsYW5lKHBsYW5l LCBwbGFuZV9zdGF0ZS0+c2xhdmUgfHwKPiAtCQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtdmVyaWZ5X3NpbmdsZV9kcGxsX3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJIHN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbCAqcGxsLAo+IC0JCQkgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCQkgc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9kcGxs X2h3X3N0YXRlIGRwbGxfaHdfc3RhdGU7Cj4gLQl1bnNpZ25lZCBpbnQgY3J0Y19tYXNrOwo+IC0J Ym9vbCBhY3RpdmU7Cj4gLQo+IC0JbWVtc2V0KCZkcGxsX2h3X3N0YXRlLCAwLCBzaXplb2YoZHBs bF9od19zdGF0ZSkpOwo+IC0KPiAtCURSTV9ERUJVR19LTVMoIiVzXG4iLCBwbGwtPmluZm8tPm5h bWUpOwo+IC0KPiAtCWFjdGl2ZSA9IHBsbC0+aW5mby0+ZnVuY3MtPmdldF9od19zdGF0ZShkZXZf cHJpdiwgcGxsLCAmZHBsbF9od19zdGF0ZSk7Cj4gLQo+IC0JaWYgKCEocGxsLT5pbmZvLT5mbGFn cyAmIElOVEVMX0RQTExfQUxXQVlTX09OKSkgewo+IC0JCUk5MTVfU1RBVEVfV0FSTighcGxsLT5v biAmJiBwbGwtPmFjdGl2ZV9tYXNrLAo+IC0JCSAgICAgInBsbCBpbiBhY3RpdmUgdXNlIGJ1dCBu b3Qgb24gaW4gc3cgdHJhY2tpbmdcbiIpOwo+IC0JCUk5MTVfU1RBVEVfV0FSTihwbGwtPm9uICYm ICFwbGwtPmFjdGl2ZV9tYXNrLAo+IC0JCSAgICAgInBsbCBpcyBvbiBidXQgbm90IHVzZWQgYnkg YW55IGFjdGl2ZSBjcnRjXG4iKTsKPiAtCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAhPSBhY3Rp dmUsCj4gLQkJICAgICAicGxsIG9uIHN0YXRlIG1pc21hdGNoIChleHBlY3RlZCAlaSwgZm91bmQg JWkpXG4iLAo+IC0JCSAgICAgcGxsLT5vbiwgYWN0aXZlKTsKPiAtCX0KPiAtCj4gLQlpZiAoIWNy dGMpIHsKPiAtCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmVfbWFzayAmIH5wbGwtPnN0YXRl LmNydGNfbWFzaywKPiAtCQkJCSJtb3JlIGFjdGl2ZSBwbGwgdXNlcnMgdGhhbiByZWZlcmVuY2Vz OiAleCB2cyAleFxuIiwKPiAtCQkJCXBsbC0+YWN0aXZlX21hc2ssIHBsbC0+c3RhdGUuY3J0Y19t YXNrKTsKPiAtCj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCWNydGNfbWFzayA9IGRybV9jcnRj X21hc2soY3J0Yyk7Cj4gLQo+IC0JaWYgKG5ld19zdGF0ZS0+YWN0aXZlKQo+IC0JCUk5MTVfU1RB VEVfV0FSTighKHBsbC0+YWN0aXZlX21hc2sgJiBjcnRjX21hc2spLAo+IC0JCQkJInBsbCBhY3Rp dmUgbWlzbWF0Y2ggKGV4cGVjdGVkIHBpcGUgJWMgaW4gYWN0aXZlIG1hc2sgMHglMDJ4KVxuIiwK PiAtCQkJCXBpcGVfbmFtZShkcm1fY3J0Y19pbmRleChjcnRjKSksIHBsbC0+YWN0aXZlX21hc2sp Owo+IC0JZWxzZQo+IC0JCUk5MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19t YXNrLAo+IC0JCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2ggKGRpZG4ndCBleHBlY3QgcGlwZSAlYyBp biBhY3RpdmUgbWFzayAweCUwMngpXG4iLAo+IC0JCQkJcGlwZV9uYW1lKGRybV9jcnRjX2luZGV4 KGNydGMpKSwgcGxsLT5hY3RpdmVfbWFzayk7Cj4gLQo+IC0JSTkxNV9TVEFURV9XQVJOKCEocGxs LT5zdGF0ZS5jcnRjX21hc2sgJiBjcnRjX21hc2spLAo+IC0JCQkicGxsIGVuYWJsZWQgY3J0Y3Mg bWlzbWF0Y2ggKGV4cGVjdGVkIDB4JXggaW4gMHglMDJ4KVxuIiwKPiAtCQkJY3J0Y19tYXNrLCBw bGwtPnN0YXRlLmNydGNfbWFzayk7Cj4gLQo+IC0JSTkxNV9TVEFURV9XQVJOKHBsbC0+b24gJiYg bWVtY21wKCZwbGwtPnN0YXRlLmh3X3N0YXRlLAo+IC0JCQkJCSAgJmRwbGxfaHdfc3RhdGUsCj4g LQkJCQkJICBzaXplb2YoZHBsbF9od19zdGF0ZSkpLAo+IC0JCQkicGxsIGh3IHN0YXRlIG1pc21h dGNoXG4iKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtdmVyaWZ5X3NoYXJlZF9kcGxsX3N0 YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJ IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gLQkJCSBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqb2xkX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShu ZXdfY3J0Y19zdGF0ZSk7Cj4gLQo+IC0JaWYgKG5ld19zdGF0ZS0+c2hhcmVkX2RwbGwpCj4gLQkJ dmVyaWZ5X3NpbmdsZV9kcGxsX3N0YXRlKGRldl9wcml2LCBuZXdfc3RhdGUtPnNoYXJlZF9kcGxs LCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gLQo+IC0JaWYgKG9sZF9zdGF0ZS0+c2hhcmVkX2Rw bGwgJiYKPiAtCSAgICBvbGRfc3RhdGUtPnNoYXJlZF9kcGxsICE9IG5ld19zdGF0ZS0+c2hhcmVk X2RwbGwpIHsKPiAtCQl1bnNpZ25lZCBpbnQgY3J0Y19tYXNrID0gZHJtX2NydGNfbWFzayhjcnRj KTsKPiAtCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IG9sZF9zdGF0ZS0+c2hhcmVk X2RwbGw7Cj4gLQo+IC0JCUk5MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19t YXNrLAo+IC0JCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2ggKGRpZG4ndCBleHBlY3QgcGlwZSAlYyBp biBhY3RpdmUgbWFzaylcbiIsCj4gLQkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoY3J0Yykp KTsKPiAtCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5zdGF0ZS5jcnRjX21hc2sgJiBjcnRjX21hc2ss Cj4gLQkJCQkicGxsIGVuYWJsZWQgY3J0Y3MgbWlzbWF0Y2ggKGZvdW5kICV4IGluIGVuYWJsZWQg bWFzaylcbiIsCj4gLQkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoY3J0YykpKTsKPiAtCX0K PiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtaW50ZWxfbW9kZXNldF92ZXJpZnlfY3J0YyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAo+IC0JCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLAo+IC0JCQkgIHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKQo+IC17Cj4gLQlpZiAoIW5lZWRzX21vZGVzZXQo bmV3X3N0YXRlKSAmJgo+IC0JICAgICF0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19zdGF0ZSktPnVw ZGF0ZV9waXBlKQo+IC0JCXJldHVybjsKPiAtCj4gLQl2ZXJpZnlfd21fc3RhdGUoY3J0YywgbmV3 X3N0YXRlKTsKPiAtCXZlcmlmeV9jb25uZWN0b3Jfc3RhdGUoY3J0Yy0+ZGV2LCBzdGF0ZSwgY3J0 Yyk7Cj4gLQl2ZXJpZnlfY3J0Y19zdGF0ZShjcnRjLCBvbGRfc3RhdGUsIG5ld19zdGF0ZSk7Cj4g LQl2ZXJpZnlfc2hhcmVkX2RwbGxfc3RhdGUoY3J0Yy0+ZGV2LCBjcnRjLCBvbGRfc3RhdGUsIG5l d19zdGF0ZSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkCj4gLXZlcmlmeV9kaXNhYmxlZF9kcGxs X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCBpOwo+IC0KPiAtCWZvciAo aSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspCj4gLQkJdmVyaWZ5X3Np bmdsZV9kcGxsX3N0YXRlKGRldl9wcml2LCAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXSwgTlVM TCwgTlVMTCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkCj4gLWludGVsX21vZGVzZXRfdmVyaWZ5 X2Rpc2FibGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCSAgICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiAtewo+IC0JdmVyaWZ5X2VuY29kZXJfc3RhdGUoZGV2LCBz dGF0ZSk7Cj4gLQl2ZXJpZnlfY29ubmVjdG9yX3N0YXRlKGRldiwgc3RhdGUsIE5VTEwpOwo+IC0J dmVyaWZ5X2Rpc2FibGVkX2RwbGxfc3RhdGUoZGV2KTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQg dXBkYXRlX3NjYW5saW5lX29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gQEAgLTEzNTIxLDcgKzEzMDY5LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCQlpZiAoIWludGVsX2Nhbl9lbmFibGVfc2FndihzdGF0ZSkpCj4gIAkJCWludGVs X2Rpc2FibGVfc2FndihkZXZfcHJpdik7Cj4gIAo+IC0JCWludGVsX21vZGVzZXRfdmVyaWZ5X2Rp c2FibGVkKGRldiwgc3RhdGUpOwo+ICsJCWludGVsX3ZlcmlmeV9tb2Rlc2V0X2Rpc2FibGVkKGRl diwgc3RhdGUpOwo+ICAJfQoKSSB0aGluayB3ZSBzaG91bGQgdGFrZSB0aGlzIG9wcG9ydHVuaXR5 IHRvIHNsaWdodGx5IGNsZWFuIHVwIHRoZSBpbnRlcmZhY2UKaGVyZSwgYW5kIGFsaWduIGEgYml0 IHdpdGgKZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcy9kaXNhYmxlcyBm cm9tIGhlbHBlcnMuIFNvCnJlbmFtZSB0aGlzIGZ1bmN0aW9uIGhlcmUgdG8gCgppbnRlbF92ZXJp ZnlfbW9kZXNldF9kaXNhYmxlcyhkZXYsIHN0YXRlKQoKc28gdGhlIG5hbWluZyBpcyBhIGJpdCBj bGVhcmVyIC0gaXQgdG9vayBtZSBhIHdoaWxlIHdoYXQgZXhhY3RseSBfZGlzYWJsZWQKaGVyZSBt ZWFuczogSXMgdGhlIHZlcmlmaWVyIGRpc2FibGVkLCBvciB0aGUgbW9kZXNldCBpcyBkaXNhYmxl ZCBvciB3aGF0CmV4YWN0bHkuIEkgdGhpbmsgdGhlIGlkZWEgb2YgIm1vZGVzZXRfZGlzYWJsZXMi IGFzIGEgcGhhc2Ugb2YgYW4gYXRvbWljCmNvbW1pdCBpcyBiZXR0ZXIgZXN0YWJsaXNoZWQuCj4g IAo+ICAJLyogQ29tcGxldGUgdGhlIGV2ZW50cyBmb3IgcGlwZXMgdGhhdCBoYXZlIG5vdyBiZWVu IGRpc2FibGVkICovCj4gQEAgLTEzNTg5LDcgKzEzMTM3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf YXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQlp ZiAocHV0X2RvbWFpbnNbaV0pCj4gIAkJCW1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoZGV2X3By aXYsIHB1dF9kb21haW5zW2ldKTsKPiAgCj4gLQkJaW50ZWxfbW9kZXNldF92ZXJpZnlfY3J0Yyhj cnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKTsKPiArCQlpbnRlbF92 ZXJpZnlfbW9kZXNldF9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNf c3RhdGUpOwo+ICAJfQoKU2FtZSBoZXJlLCBjcmVhdGUgYSBuZXcKCmludGVsX3ZlcmlmeV9tb2Rl c2V0X2VuYWJsZXMoZGV2LCBzdGF0ZSkKCndoaWNoIGNvbWJpbmVzIHRoZSBjcnRjIGFuZCBwbGFu IGNoZWNrcyAodGhlIGFkZGl0aW9uYWwgbG9vcCB3b250IG1hdHRlciksCmFuZCBuZWF0bHkgYWxp Z25zIHdpdGggdGhlIGlkZWEgb2YgYSAibW9kZXNldF9lbmFibGVzIiBwaGFzZSBmcm9tIGF0b21p YwpoZWxwZXJzLgoKV2l0aCB0aGF0IEkgdGhpbmsgd2UnbGwgaGF2ZSBzb21lIHJlYWxseSB0aWR5 IGludGVyZmFjZSBpbnRvCmludGVsX3ZlcmlmeS5jLCBhbmQgeW91ciBwYXRjaCBoZXJlIGhhcyBt eSBSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCkNo ZWVycywgRGFuaWVsCgo+ICAKPiAgCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGEzOGI5Yy4uNzc3NjdjIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTY2OCw2ICsxNjY4LDE3IEBAIGludCBpbnRlbF9nZXRfcGlw ZV9mcm9tX2NydGNfaWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiAgCQkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAgZW51bSB0cmFuc2Nv ZGVyIGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJCQkJCSAgICAgZW51bSBwaXBlIHBpcGUpOwo+ICt2b2lkIGludGVsX3Bp cGVfY29uZmlnX3Nhbml0eV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKwkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsK PiArYm9vbAo+ICtpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiArCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9j b25maWcsCj4gKwkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICsJ CQkgIGJvb2wgYWRqdXN0KTsKPiArdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICsJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAo+ICsJCQkgICAgY29uc3QgY2hhciAqY29udGV4dCk7Cj4gK3ZvaWQgaW50ZWxfY3J0 Y19jb21wdXRlX3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Owo+ICBzdGF0aWMgaW5saW5lIGJvb2wKPiAgaW50ZWxfY3J0Y19oYXNfdHlwZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgZW51bSBpbnRlbF9vdXRw dXRfdHlwZSB0eXBlKQo+IEBAIC0xNzYwLDYgKzE3NzEsNyBAQCB2b2lkIGFzc2VydF9mZGlfcnhf cGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgdm9pZCBhc3NlcnRfcGlw ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLCBib29s IHN0YXRlKTsKPiAgI2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQsIHApIGFzc2VydF9waXBl KGQsIHAsIHRydWUpCj4gICNkZWZpbmUgYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZCwgcCkgYXNzZXJ0 X3BpcGUoZCwgcCwgZmFsc2UpCj4gK3ZvaWQgYXNzZXJ0X3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUsIGJvb2wgc3RhdGUpOwo+ICB2b2lkIGludGVsX3ByZXBhcmVfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBoc3dfZW5hYmxlX3Bj OChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZXJpZnkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3ZlcmlmeS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAuLjRjODk5 MAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZXJp ZnkuYwo+IEBAIC0wLDAgKzEsNDY0IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBN SVQKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICov Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmg+Cj4gKwo+ICsj aW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsjaW5jbHVk ZSAiaW50ZWxfcG0uaCIKPiArI2luY2x1ZGUgImludGVsX3ZlcmlmeS5oIgo+ICsKPiArc3RhdGlj IHZvaWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJICAgIHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gKwlzdHJ1Y3Qgc2tsX2h3 X3N0YXRlIHsKPiArCQlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBkZGJfeVtJOTE1X01BWF9QTEFORVNd Owo+ICsJCXN0cnVjdCBza2xfZGRiX2VudHJ5IGRkYl91dltJOTE1X01BWF9QTEFORVNdOwo+ICsJ CXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gZGRiOwo+ICsJCXN0cnVjdCBza2xfcGlwZV93bSB3 bTsKPiArCX0gKmh3Owo+ICsJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqc3dfZGRiOwo+ICsJ c3RydWN0IHNrbF9waXBlX3dtICpzd193bTsKPiArCXN0cnVjdCBza2xfZGRiX2VudHJ5ICpod19k ZGJfZW50cnksICpzd19kZGJfZW50cnk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwljb25zdCBlbnVtIHBpcGUgcGlwZSA9IGludGVs X2NydGMtPnBpcGU7Cj4gKwlpbnQgcGxhbmUsIGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4 X2xldmVsKGRldl9wcml2KTsKPiArCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwg IW5ld19zdGF0ZS0+YWN0aXZlKQo+ICsJCXJldHVybjsKPiArCj4gKwlodyA9IGt6YWxsb2Moc2l6 ZW9mKCpodyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFodykKPiArCQlyZXR1cm47Cj4gKwo+ICsJ c2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKGludGVsX2NydGMsICZody0+d20pOwo+ICsJc3dfd20g PSAmdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfc3RhdGUpLT53bS5za2wub3B0aW1hbDsKPiArCj4g Kwlza2xfcGlwZV9kZGJfZ2V0X2h3X3N0YXRlKGludGVsX2NydGMsIGh3LT5kZGJfeSwgaHctPmRk Yl91dik7Cj4gKwo+ICsJc2tsX2RkYl9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsICZody0+ZGRiKTsK PiArCXN3X2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPiArCj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMSAmJgo+ICsJICAgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMgIT0g c3dfZGRiLT5lbmFibGVkX3NsaWNlcykKPiArCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIERCVUYg U2xpY2VzIChleHBlY3RlZCAldSwgZ290ICV1KVxuIiwKPiArCQkJICBzd19kZGItPmVuYWJsZWRf c2xpY2VzLAo+ICsJCQkgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMpOwo+ICsKPiArCS8qIHBsYW5l cyAqLwo+ICsJZm9yX2VhY2hfdW5pdmVyc2FsX3BsYW5lKGRldl9wcml2LCBwaXBlLCBwbGFuZSkg ewo+ICsJCXN0cnVjdCBza2xfcGxhbmVfd20gKmh3X3BsYW5lX3dtLCAqc3dfcGxhbmVfd207Cj4g Kwo+ICsJCWh3X3BsYW5lX3dtID0gJmh3LT53bS5wbGFuZXNbcGxhbmVdOwo+ICsJCXN3X3BsYW5l X3dtID0gJnN3X3dtLT5wbGFuZXNbcGxhbmVdOwo+ICsKPiArCQkvKiBXYXRlcm1hcmtzICovCj4g KwkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ICsJCQlp ZiAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxhbmVfd20tPndtW2xldmVsXSwKPiArCQkJCQkJ JnN3X3BsYW5lX3dtLT53bVtsZXZlbF0pKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlEUk1f RVJST1IoIm1pc21hdGNoIGluIFdNIHBpcGUgJWMgcGxhbmUgJWQgbGV2ZWwgJWQgKGV4cGVjdGVk IGU9JWQgYj0ldSBsPSV1LCBnb3QgZT0lZCBiPSV1IGw9JXUpXG4iLAo+ICsJCQkJICBwaXBlX25h bWUocGlwZSksIHBsYW5lICsgMSwgbGV2ZWwsCj4gKwkJCQkgIHN3X3BsYW5lX3dtLT53bVtsZXZl bF0ucGxhbmVfZW4sCj4gKwkJCQkgIHN3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2Is Cj4gKwkJCQkgIHN3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2wsCj4gKwkJCQkgIGh3 X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfZW4sCj4gKwkJCQkgIGh3X3BsYW5lX3dtLT53bVts ZXZlbF0ucGxhbmVfcmVzX2IsCj4gKwkJCQkgIGh3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVf cmVzX2wpOwo+ICsJCX0KPiArCj4gKwkJaWYgKCFza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFu ZV93bS0+dHJhbnNfd20sCj4gKwkJCQkJICZzd19wbGFuZV93bS0+dHJhbnNfd20pKSB7Cj4gKwkJ CURSTV9FUlJPUigibWlzbWF0Y2ggaW4gdHJhbnMgV00gcGlwZSAlYyBwbGFuZSAlZCAoZXhwZWN0 ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9JXUgbD0ldSlcbiIsCj4gKwkJCQkgIHBpcGVf bmFtZShwaXBlKSwgcGxhbmUgKyAxLAo+ICsJCQkJICBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxh bmVfZW4sCj4gKwkJCQkgIHN3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYiwKPiArCQkJ CSAgc3dfcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sLAo+ICsJCQkJICBod19wbGFuZV93 bS0+dHJhbnNfd20ucGxhbmVfZW4sCj4gKwkJCQkgIGh3X3BsYW5lX3dtLT50cmFuc193bS5wbGFu ZV9yZXNfYiwKPiArCQkJCSAgaHdfcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sKTsKPiAr CQl9Cj4gKwo+ICsJCS8qIEREQiAqLwo+ICsJCWh3X2RkYl9lbnRyeSA9ICZody0+ZGRiX3lbcGxh bmVdOwo+ICsJCXN3X2RkYl9lbnRyeSA9ICZ0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19zdGF0ZSkt PndtLnNrbC5wbGFuZV9kZGJfeVtwbGFuZV07Cj4gKwo+ICsJCWlmICghc2tsX2RkYl9lbnRyeV9l cXVhbChod19kZGJfZW50cnksIHN3X2RkYl9lbnRyeSkpIHsKPiArCQkJRFJNX0VSUk9SKCJtaXNt YXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYyBwbGFuZSAlZCAoZXhwZWN0ZWQgKCV1LCV1KSwgZm91 bmQgKCV1LCV1KSlcbiIsCj4gKwkJCQkgIHBpcGVfbmFtZShwaXBlKSwgcGxhbmUgKyAxLAo+ICsJ CQkJICBzd19kZGJfZW50cnktPnN0YXJ0LCBzd19kZGJfZW50cnktPmVuZCwKPiArCQkJCSAgaHdf ZGRiX2VudHJ5LT5zdGFydCwgaHdfZGRiX2VudHJ5LT5lbmQpOwo+ICsJCX0KPiArCX0KPiArCj4g KwkvKgo+ICsJICogY3Vyc29yCj4gKwkgKiBJZiB0aGUgY3Vyc29yIHBsYW5lIGlzbid0IGFjdGl2 ZSwgd2UgbWF5IG5vdCBoYXZlIHVwZGF0ZWQgaXQncyBkZGIKPiArCSAqIGFsbG9jYXRpb24uIElu IHRoYXQgY2FzZSBzaW5jZSB0aGUgZGRiIGFsbG9jYXRpb24gd2lsbCBiZSB1cGRhdGVkCj4gKwkg KiBvbmNlIHRoZSBwbGFuZSBiZWNvbWVzIHZpc2libGUsIHdlIGNhbiBza2lwIHRoaXMgY2hlY2sK PiArCSAqLwo+ICsJaWYgKDEpIHsKPiArCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpod19wbGFuZV93 bSwgKnN3X3BsYW5lX3dtOwo+ICsKPiArCQlod19wbGFuZV93bSA9ICZody0+d20ucGxhbmVzW1BM QU5FX0NVUlNPUl07Cj4gKwkJc3dfcGxhbmVfd20gPSAmc3dfd20tPnBsYW5lc1tQTEFORV9DVVJT T1JdOwo+ICsKPiArCQkvKiBXYXRlcm1hcmtzICovCj4gKwkJZm9yIChsZXZlbCA9IDA7IGxldmVs IDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ICsJCQlpZiAoc2tsX3dtX2xldmVsX2VxdWFscygm aHdfcGxhbmVfd20tPndtW2xldmVsXSwKPiArCQkJCQkJJnN3X3BsYW5lX3dtLT53bVtsZXZlbF0p KQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIFdNIHBp cGUgJWMgY3Vyc29yIGxldmVsICVkIChleHBlY3RlZCBlPSVkIGI9JXUgbD0ldSwgZ290IGU9JWQg Yj0ldSBsPSV1KVxuIiwKPiArCQkJCSAgcGlwZV9uYW1lKHBpcGUpLCBsZXZlbCwKPiArCQkJCSAg c3dfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9lbiwKPiArCQkJCSAgc3dfcGxhbmVfd20tPndt W2xldmVsXS5wbGFuZV9yZXNfYiwKPiArCQkJCSAgc3dfcGxhbmVfd20tPndtW2xldmVsXS5wbGFu ZV9yZXNfbCwKPiArCQkJCSAgaHdfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9lbiwKPiArCQkJ CSAgaHdfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYiwKPiArCQkJCSAgaHdfcGxhbmVf d20tPndtW2xldmVsXS5wbGFuZV9yZXNfbCk7Cj4gKwkJfQo+ICsKPiArCQlpZiAoIXNrbF93bV9s ZXZlbF9lcXVhbHMoJmh3X3BsYW5lX3dtLT50cmFuc193bSwKPiArCQkJCQkgJnN3X3BsYW5lX3dt LT50cmFuc193bSkpIHsKPiArCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiB0cmFucyBXTSBwaXBl ICVjIGN1cnNvciAoZXhwZWN0ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9JXUgbD0ldSlc biIsCj4gKwkJCQkgIHBpcGVfbmFtZShwaXBlKSwKPiArCQkJCSAgc3dfcGxhbmVfd20tPnRyYW5z X3dtLnBsYW5lX2VuLAo+ICsJCQkJICBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2Is Cj4gKwkJCQkgIHN3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfbCwKPiArCQkJCSAgaHdf cGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX2VuLAo+ICsJCQkJICBod19wbGFuZV93bS0+dHJhbnNf d20ucGxhbmVfcmVzX2IsCj4gKwkJCQkgIGh3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNf bCk7Cj4gKwkJfQo+ICsKPiArCQkvKiBEREIgKi8KPiArCQlod19kZGJfZW50cnkgPSAmaHctPmRk Yl95W1BMQU5FX0NVUlNPUl07Cj4gKwkJc3dfZGRiX2VudHJ5ID0gJnRvX2ludGVsX2NydGNfc3Rh dGUobmV3X3N0YXRlKS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NVUlNPUl07Cj4gKwo+ICsJ CWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbChod19kZGJfZW50cnksIHN3X2RkYl9lbnRyeSkpIHsK PiArCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYyBjdXJzb3IgKGV4 cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+ICsJCQkJICBwaXBlX25hbWUocGlw ZSksCj4gKwkJCQkgIHN3X2RkYl9lbnRyeS0+c3RhcnQsIHN3X2RkYl9lbnRyeS0+ZW5kLAo+ICsJ CQkJICBod19kZGJfZW50cnktPnN0YXJ0LCBod19kZGJfZW50cnktPmVuZCk7Cj4gKwkJfQo+ICsJ fQo+ICsKPiArCWtmcmVlKGh3KTsKPiArfQo+ICsKPiArLyogQ3Jvc3MgY2hlY2sgdGhlIGFjdHVh bCBodyBzdGF0ZSB3aXRoIG91ciBvd24gbW9kZXNldCBzdGF0ZSB0cmFja2luZyAoYW5kIGl0J3MK PiArICogaW50ZXJuYWwgY29uc2lzdGVuY3kpLiAqLwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9jb25u ZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAr CQkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gK3sKPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25u X3N0YXRlLT5jb25uZWN0b3IpOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6 JXNdXG4iLAo+ICsJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+ICsJCSAgICAgIGNv bm5lY3Rvci0+YmFzZS5uYW1lKTsKPiArCj4gKwlpZiAoY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUo Y29ubmVjdG9yKSkgewo+ICsJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVj dG9yLT5lbmNvZGVyOwo+ICsKPiArCQlJOTE1X1NUQVRFX1dBUk4oIWNydGNfc3RhdGUsCj4gKwkJ CSAiY29ubmVjdG9yIGVuYWJsZWQgd2l0aG91dCBhdHRhY2hlZCBjcnRjXG4iKTsKPiArCj4gKwkJ aWYgKCFjcnRjX3N0YXRlKQo+ICsJCQlyZXR1cm47Cj4gKwo+ICsJCUk5MTVfU1RBVEVfV0FSTigh Y3J0Y19zdGF0ZS0+YWN0aXZlLAo+ICsJCSAgICAgICJjb25uZWN0b3IgaXMgYWN0aXZlLCBidXQg YXR0YWNoZWQgY3J0YyBpc24ndFxuIik7Cj4gKwo+ICsJCWlmICghZW5jb2RlciB8fCBlbmNvZGVy LT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpCj4gKwkJCXJldHVybjsKPiArCj4gKwkJSTkx NV9TVEFURV9XQVJOKGNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciAhPSAmZW5jb2Rlci0+YmFzZSwK PiArCQkJImF0b21pYyBlbmNvZGVyIGRvZXNuJ3QgbWF0Y2ggYXR0YWNoZWQgZW5jb2RlclxuIik7 Cj4gKwo+ICsJCUk5MTVfU1RBVEVfV0FSTihjb25uX3N0YXRlLT5jcnRjICE9IGVuY29kZXItPmJh c2UuY3J0YywKPiArCQkJImF0dGFjaGVkIGVuY29kZXIgY3J0YyBkaWZmZXJzIGZyb20gY29ubmVj dG9yIGNydGNcbiIpOwo+ICsJfSBlbHNlIHsKPiArCQlJOTE1X1NUQVRFX1dBUk4oY3J0Y19zdGF0 ZSAmJiBjcnRjX3N0YXRlLT5hY3RpdmUsCj4gKwkJCSJhdHRhY2hlZCBjcnRjIGlzIGFjdGl2ZSwg YnV0IGNvbm5lY3RvciBpc24ndFxuIik7Cj4gKwkJSTkxNV9TVEFURV9XQVJOKCFjcnRjX3N0YXRl ICYmIGNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciwKPiArCQkJImJlc3QgZW5jb2RlciBzZXQgd2l0 aG91dCBjcnRjIVxuIik7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3ZlcmlmeV9j b25uZWN0b3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkgICAgICAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7Cj4gKwlpbnQgaTsKPiArCj4gKwlm b3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG5ld19jb25u X3N0YXRlLCBpKSB7Cj4gKwkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9y LT5lbmNvZGVyOwo+ICsJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IE5VTEw7 Cj4gKwo+ICsJCWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ICsJCQljb250aW51 ZTsKPiArCj4gKwkJaWYgKGNydGMpCj4gKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9u ZXdfY3J0Y19zdGF0ZShzdGF0ZSwgbmV3X2Nvbm5fc3RhdGUtPmNydGMpOwo+ICsKPiArCQlpbnRl bF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKGNydGNfc3RhdGUsIG5ld19jb25uX3N0YXRlKTsKPiAr Cj4gKwkJSTkxNV9TVEFURV9XQVJOKG5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIgIT0gZW5j b2RlciwKPiArCQkgICAgICJjb25uZWN0b3IncyBhdG9taWMgZW5jb2RlciBkb2Vzbid0IG1hdGNo IGxlZ2FjeSBlbmNvZGVyXG4iKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArdmVy aWZ5X2VuY29kZXJfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsK PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUsICpuZXdfY29ubl9zdGF0ZTsKPiArCWludCBpOwo+ ICsKPiArCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBlbmNvZGVyKSB7Cj4gKwkJYm9vbCBl bmFibGVkID0gZmFsc2UsIGZvdW5kID0gZmFsc2U7Cj4gKwkJZW51bSBwaXBlIHBpcGU7Cj4gKwo+ ICsJCURSTV9ERUJVR19LTVMoIltFTkNPREVSOiVkOiVzXVxuIiwKPiArCQkJICAgICAgZW5jb2Rl ci0+YmFzZS5iYXNlLmlkLAo+ICsJCQkgICAgICBlbmNvZGVyLT5iYXNlLm5hbWUpOwo+ICsKPiAr CQlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG9s ZF9jb25uX3N0YXRlLAo+ICsJCQkJCQkgICBuZXdfY29ubl9zdGF0ZSwgaSkgewo+ICsJCQlpZiAo b2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciA9PSAmZW5jb2Rlci0+YmFzZSkKPiArCQkJCWZv dW5kID0gdHJ1ZTsKPiArCj4gKwkJCWlmIChuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9 ICZlbmNvZGVyLT5iYXNlKQo+ICsJCQkJY29udGludWU7Cj4gKwkJCWZvdW5kID0gZW5hYmxlZCA9 IHRydWU7Cj4gKwo+ICsJCQlJOTE1X1NUQVRFX1dBUk4obmV3X2Nvbm5fc3RhdGUtPmNydGMgIT0K PiArCQkJCQllbmNvZGVyLT5iYXNlLmNydGMsCj4gKwkJCSAgICAgImNvbm5lY3RvcidzIGNydGMg ZG9lc24ndCBtYXRjaCBlbmNvZGVyIGNydGNcbiIpOwo+ICsJCX0KPiArCj4gKwkJaWYgKCFmb3Vu ZCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCUk5MTVfU1RBVEVfV0FSTighIWVuY29kZXItPmJh c2UuY3J0YyAhPSBlbmFibGVkLAo+ICsJCSAgICAgImVuY29kZXIncyBlbmFibGVkIHN0YXRlIG1p c21hdGNoICIKPiArCQkgICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwKPiArCQkgICAg ICEhZW5jb2Rlci0+YmFzZS5jcnRjLCBlbmFibGVkKTsKPiArCj4gKwkJaWYgKCFlbmNvZGVyLT5i YXNlLmNydGMpIHsKPiArCQkJYm9vbCBhY3RpdmU7Cj4gKwo+ICsJCQlhY3RpdmUgPSBlbmNvZGVy LT5nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpOwo+ICsJCQlJOTE1X1NUQVRFX1dBUk4oYWN0 aXZlLAo+ICsJCQkgICAgICJlbmNvZGVyIGRldGFjaGVkIGJ1dCBzdGlsbCBlbmFibGVkIG9uIHBp cGUgJWMuXG4iLAo+ICsJCQkgICAgIHBpcGVfbmFtZShwaXBlKSk7Cj4gKwkJfQo+ICsJfQo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICt2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gKwkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICsJ CSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLCAqc3dfY29uZmln Owo+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZTsKPiArCWJvb2wgYWN0aXZl Owo+ICsKPiArCW9sZF9zdGF0ZSA9IG9sZF9jcnRjX3N0YXRlLT5zdGF0ZTsKPiArCV9fZHJtX2F0 b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsKPiArCXBpcGVf Y29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4gKwltZW1zZXQo cGlwZV9jb25maWcsIDAsIHNpemVvZigqcGlwZV9jb25maWcpKTsKPiArCXBpcGVfY29uZmlnLT5i YXNlLmNydGMgPSBjcnRjOwo+ICsJcGlwZV9jb25maWctPmJhc2Uuc3RhdGUgPSBvbGRfc3RhdGU7 Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNdXG4iLCBjcnRjLT5iYXNlLmlkLCBj cnRjLT5uYW1lKTsKPiArCj4gKwlhY3RpdmUgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9j b25maWcoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ICsKPiArCS8qIHdlIGtlZXAgYm90aCBw aXBlcyBlbmFibGVkIG9uIDgzMCAqLwo+ICsJaWYgKElTX0k4MzAoZGV2X3ByaXYpKQo+ICsJCWFj dGl2ZSA9IG5ld19jcnRjX3N0YXRlLT5hY3RpdmU7Cj4gKwo+ICsJSTkxNV9TVEFURV9XQVJOKG5l d19jcnRjX3N0YXRlLT5hY3RpdmUgIT0gYWN0aXZlLAo+ICsJICAgICAiY3J0YyBhY3RpdmUgc3Rh dGUgZG9lc24ndCBtYXRjaCB3aXRoIGh3IHN0YXRlICIKPiArCSAgICAgIihleHBlY3RlZCAlaSwg Zm91bmQgJWkpXG4iLCBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlLCBhY3RpdmUpOwo+ICsKPiArCUk5 MTVfU1RBVEVfV0FSTihpbnRlbF9jcnRjLT5hY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmFjdGl2 ZSwKPiArCSAgICAgInRyYW5zaXRpb25hbCBhY3RpdmUgc3RhdGUgZG9lcyBub3QgbWF0Y2ggYXRv bWljIGh3IHN0YXRlICIKPiArCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBuZXdf Y3J0Y19zdGF0ZS0+YWN0aXZlLCBpbnRlbF9jcnRjLT5hY3RpdmUpOwo+ICsKPiArCWZvcl9lYWNo X2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpIHsKPiArCQllbnVtIHBpcGUgcGlw ZTsKPiArCj4gKwkJYWN0aXZlID0gZW5jb2Rlci0+Z2V0X2h3X3N0YXRlKGVuY29kZXIsICZwaXBl KTsKPiArCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5hY3RpdmUs Cj4gKwkJCSJbRU5DT0RFUjolaV0gYWN0aXZlICVpIHdpdGggY3J0YyBhY3RpdmUgJWlcbiIsCj4g KwkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZlLCBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZl KTsKPiArCj4gKwkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAmJiBpbnRlbF9jcnRjLT5waXBlICE9 IHBpcGUsCj4gKwkJCQkiRW5jb2RlciBjb25uZWN0ZWQgdG8gd3JvbmcgcGlwZSAlY1xuIiwKPiAr CQkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gKwo+ICsJCWlmIChhY3RpdmUpCj4gKwkJCWVuY29kZXIt PmdldF9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICsJfQo+ICsKPiArCWludGVsX2Ny dGNfY29tcHV0ZV9waXhlbF9yYXRlKHBpcGVfY29uZmlnKTsKPiArCj4gKwlpZiAoIW5ld19jcnRj X3N0YXRlLT5hY3RpdmUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWludGVsX3BpcGVfY29uZmlnX3Nh bml0eV9jaGVjayhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwo+ICsKPiArCXN3X2NvbmZpZyA9IHRv X2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+ICsJaWYgKCFpbnRlbF9waXBlX2Nv bmZpZ19jb21wYXJlKGRldl9wcml2LCBzd19jb25maWcsCj4gKwkJCQkgICAgICAgcGlwZV9jb25m aWcsIGZhbHNlKSkgewo+ICsJCUk5MTVfU1RBVEVfV0FSTigxLCAicGlwZSBzdGF0ZSBkb2Vzbid0 IG1hdGNoIVxuIik7Cj4gKwkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhpbnRlbF9jcnRjLCBwaXBl X2NvbmZpZywKPiArCQkJCSAgICAgICAiW2h3IHN0YXRlXSIpOwo+ICsJCWludGVsX2R1bXBfcGlw ZV9jb25maWcoaW50ZWxfY3J0Yywgc3dfY29uZmlnLAo+ICsJCQkJICAgICAgICJbc3cgc3RhdGVd Iik7Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQKPiAraW50ZWxfdmVyaWZ5X3BsYW5lcyhzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZTsKPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4g KwlpbnQgaTsKPiArCj4gKwlmb3JfZWFjaF9uZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUs IHBsYW5lLAo+ICsJCQkJCSAgcGxhbmVfc3RhdGUsIGkpCj4gKwkJYXNzZXJ0X3BsYW5lKHBsYW5l LCBwbGFuZV9zdGF0ZS0+c2xhdmUgfHwKPiArCQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArdmVyaWZ5X3NpbmdsZV9kcGxsX3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJIHN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbCAqcGxsLAo+ICsJCQkgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkgc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kcGxs X2h3X3N0YXRlIGRwbGxfaHdfc3RhdGU7Cj4gKwl1bnNpZ25lZCBpbnQgY3J0Y19tYXNrOwo+ICsJ Ym9vbCBhY3RpdmU7Cj4gKwo+ICsJbWVtc2V0KCZkcGxsX2h3X3N0YXRlLCAwLCBzaXplb2YoZHBs bF9od19zdGF0ZSkpOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIiVzXG4iLCBwbGwtPmluZm8tPm5h bWUpOwo+ICsKPiArCWFjdGl2ZSA9IHBsbC0+aW5mby0+ZnVuY3MtPmdldF9od19zdGF0ZShkZXZf cHJpdiwgcGxsLCAmZHBsbF9od19zdGF0ZSk7Cj4gKwo+ICsJaWYgKCEocGxsLT5pbmZvLT5mbGFn cyAmIElOVEVMX0RQTExfQUxXQVlTX09OKSkgewo+ICsJCUk5MTVfU1RBVEVfV0FSTighcGxsLT5v biAmJiBwbGwtPmFjdGl2ZV9tYXNrLAo+ICsJCSAgICAgInBsbCBpbiBhY3RpdmUgdXNlIGJ1dCBu b3Qgb24gaW4gc3cgdHJhY2tpbmdcbiIpOwo+ICsJCUk5MTVfU1RBVEVfV0FSTihwbGwtPm9uICYm ICFwbGwtPmFjdGl2ZV9tYXNrLAo+ICsJCSAgICAgInBsbCBpcyBvbiBidXQgbm90IHVzZWQgYnkg YW55IGFjdGl2ZSBjcnRjXG4iKTsKPiArCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAhPSBhY3Rp dmUsCj4gKwkJICAgICAicGxsIG9uIHN0YXRlIG1pc21hdGNoIChleHBlY3RlZCAlaSwgZm91bmQg JWkpXG4iLAo+ICsJCSAgICAgcGxsLT5vbiwgYWN0aXZlKTsKPiArCX0KPiArCj4gKwlpZiAoIWNy dGMpIHsKPiArCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmVfbWFzayAmIH5wbGwtPnN0YXRl LmNydGNfbWFzaywKPiArCQkJCSJtb3JlIGFjdGl2ZSBwbGwgdXNlcnMgdGhhbiByZWZlcmVuY2Vz OiAleCB2cyAleFxuIiwKPiArCQkJCXBsbC0+YWN0aXZlX21hc2ssIHBsbC0+c3RhdGUuY3J0Y19t YXNrKTsKPiArCj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWNydGNfbWFzayA9IGRybV9jcnRj X21hc2soY3J0Yyk7Cj4gKwo+ICsJaWYgKG5ld19zdGF0ZS0+YWN0aXZlKQo+ICsJCUk5MTVfU1RB VEVfV0FSTighKHBsbC0+YWN0aXZlX21hc2sgJiBjcnRjX21hc2spLAo+ICsJCQkJInBsbCBhY3Rp dmUgbWlzbWF0Y2ggKGV4cGVjdGVkIHBpcGUgJWMgaW4gYWN0aXZlIG1hc2sgMHglMDJ4KVxuIiwK PiArCQkJCXBpcGVfbmFtZShkcm1fY3J0Y19pbmRleChjcnRjKSksIHBsbC0+YWN0aXZlX21hc2sp Owo+ICsJZWxzZQo+ICsJCUk5MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19t YXNrLAo+ICsJCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2ggKGRpZG4ndCBleHBlY3QgcGlwZSAlYyBp biBhY3RpdmUgbWFzayAweCUwMngpXG4iLAo+ICsJCQkJcGlwZV9uYW1lKGRybV9jcnRjX2luZGV4 KGNydGMpKSwgcGxsLT5hY3RpdmVfbWFzayk7Cj4gKwo+ICsJSTkxNV9TVEFURV9XQVJOKCEocGxs LT5zdGF0ZS5jcnRjX21hc2sgJiBjcnRjX21hc2spLAo+ICsJCQkicGxsIGVuYWJsZWQgY3J0Y3Mg bWlzbWF0Y2ggKGV4cGVjdGVkIDB4JXggaW4gMHglMDJ4KVxuIiwKPiArCQkJY3J0Y19tYXNrLCBw bGwtPnN0YXRlLmNydGNfbWFzayk7Cj4gKwo+ICsJSTkxNV9TVEFURV9XQVJOKHBsbC0+b24gJiYg bWVtY21wKCZwbGwtPnN0YXRlLmh3X3N0YXRlLAo+ICsJCQkJCSAgJmRwbGxfaHdfc3RhdGUsCj4g KwkJCQkJICBzaXplb2YoZHBsbF9od19zdGF0ZSkpLAo+ICsJCQkicGxsIGh3IHN0YXRlIG1pc21h dGNoXG4iKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArdmVyaWZ5X3NoYXJlZF9kcGxsX3N0 YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJ IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gKwkJCSBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqb2xkX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShu ZXdfY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJaWYgKG5ld19zdGF0ZS0+c2hhcmVkX2RwbGwpCj4gKwkJ dmVyaWZ5X3NpbmdsZV9kcGxsX3N0YXRlKGRldl9wcml2LCBuZXdfc3RhdGUtPnNoYXJlZF9kcGxs LCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJaWYgKG9sZF9zdGF0ZS0+c2hhcmVkX2Rw bGwgJiYKPiArCSAgICBvbGRfc3RhdGUtPnNoYXJlZF9kcGxsICE9IG5ld19zdGF0ZS0+c2hhcmVk X2RwbGwpIHsKPiArCQl1bnNpZ25lZCBpbnQgY3J0Y19tYXNrID0gZHJtX2NydGNfbWFzayhjcnRj KTsKPiArCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IG9sZF9zdGF0ZS0+c2hhcmVk X2RwbGw7Cj4gKwo+ICsJCUk5MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19t YXNrLAo+ICsJCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2ggKGRpZG4ndCBleHBlY3QgcGlwZSAlYyBp biBhY3RpdmUgbWFzaylcbiIsCj4gKwkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoY3J0Yykp KTsKPiArCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5zdGF0ZS5jcnRjX21hc2sgJiBjcnRjX21hc2ss Cj4gKwkJCQkicGxsIGVuYWJsZWQgY3J0Y3MgbWlzbWF0Y2ggKGZvdW5kICV4IGluIGVuYWJsZWQg bWFzaylcbiIsCj4gKwkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoY3J0YykpKTsKPiArCX0K PiArfQo+ICsKPiArdm9pZAo+ICtpbnRlbF92ZXJpZnlfbW9kZXNldF9jcnRjKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiArCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJ CSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUsCj4gKwkJCSAgc3RydWN0IGRybV9j cnRjX3N0YXRlICpuZXdfc3RhdGUpCj4gK3sKPiArCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRz X21vZGVzZXQobmV3X3N0YXRlKSAmJgo+ICsJICAgICF0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19z dGF0ZSktPnVwZGF0ZV9waXBlKQo+ICsJCXJldHVybjsKPiArCj4gKwl2ZXJpZnlfd21fc3RhdGUo Y3J0YywgbmV3X3N0YXRlKTsKPiArCXZlcmlmeV9jb25uZWN0b3Jfc3RhdGUoY3J0Yy0+ZGV2LCBz dGF0ZSwgY3J0Yyk7Cj4gKwl2ZXJpZnlfY3J0Y19zdGF0ZShjcnRjLCBvbGRfc3RhdGUsIG5ld19z dGF0ZSk7Cj4gKwl2ZXJpZnlfc2hhcmVkX2RwbGxfc3RhdGUoY3J0Yy0+ZGV2LCBjcnRjLCBvbGRf c3RhdGUsIG5ld19zdGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3ZlcmlmeV9kaXNh YmxlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCWludCBpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspCj4gKwkJ dmVyaWZ5X3NpbmdsZV9kcGxsX3N0YXRlKGRldl9wcml2LCAmZGV2X3ByaXYtPnNoYXJlZF9kcGxs c1tpXSwgTlVMTCwgTlVMTCk7Cj4gK30KPiArCj4gK3ZvaWQKPiAraW50ZWxfdmVyaWZ5X21vZGVz ZXRfZGlzYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJICAgICAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwl2ZXJpZnlfZW5jb2Rlcl9zdGF0ZShkZXYs IHN0YXRlKTsKPiArCXZlcmlmeV9jb25uZWN0b3Jfc3RhdGUoZGV2LCBzdGF0ZSwgTlVMTCk7Cj4g Kwl2ZXJpZnlfZGlzYWJsZWRfZHBsbF9zdGF0ZShkZXYpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdmVyaWZ5LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMC4uNGI3 NTFlYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92 ZXJpZnkuaAo+IEBAIC0wLDAgKzEsMjIgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVCAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ ICsgKi8KPiArCj4gKyNpZm5kZWYgX19JTlRFTF9WRVJJRllfSF9fCj4gKyNkZWZpbmUgX19JTlRF TF9WRVJJRllfSF9fCj4gKwo+ICtzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKPiArc3RydWN0IGRy bV9jcnRjOwo+ICtzdHJ1Y3QgZHJtX2NydGNfc3RhdGU7Cj4gK3N0cnVjdCBkcm1fZGV2aWNlOwo+ ICsKPiArdm9pZCBpbnRlbF92ZXJpZnlfbW9kZXNldF9jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiArCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJICAg ICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLAo+ICsJCQkgICAgICAgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpOwo+ICt2b2lkIGludGVsX3ZlcmlmeV9tb2Rlc2V0 X2Rpc2FibGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpOwo+ICt2b2lkIGludGVsX3ZlcmlmeV9wbGFuZXMoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICsKPiArI2VuZGlmIC8qIF9fSU5URUxfVkVSSUZZ X0hfXyAqLwo+IC0tIAo+IDIuMjAuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==