From: Daniel Vetter Subject: Re: [RFC] drm/i915: tame the chattermouth Date: Fri, 12 Dec 2014 08:17:23 +0100 Message-ID: <20141212071723.GJ27182@phenom.ffwll.local> References: <1418339892-24053-1-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTP id 0A6E66E345 for ; Thu, 11 Dec 2014 23:16:51 -0800 (PST) Received: by mail-wg0-f53.google.com with SMTP id l18so8370643wgh.12 for ; Thu, 11 Dec 2014 23:16:50 -0800 (PST) Content-Disposition: inline In-Reply-To: <1418339892-24053-1-git-send-email-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Clark Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBEZWMgMTEsIDIwMTQgYXQgMDY6MTg6MTJQTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IE1hbnkgZGlzdHJvJ3MgaGF2ZSBtZWNoYW5pc20gaW4gcGxhY2UgdG8gY29sbGVjdCBhbmQg YXV0b21hdGljYWxseSBmaWxlCj4gYnVncyBmb3IgZmFpbGVkIFdBUk4oKXMuICBBbmQgc2luY2Ug ZXZlcnkgdGhpcmQgbGluZSBpbiBpOTE1IGlzIGEgV0FSTigpCj4gaXQgZ2VuZXJhdGVzIHF1aXRl IGEgbG90IG9mIG5vaXNlIHdoaWNoIGlzIHNvbWV3aGF0IGRpc2NvbmNlcnRpbmcgdG8gdGhlCj4g ZW5kIHVzZXIuCj4gCj4gU2VwYXJhdGUgb3V0IHRoZSBpbnRlcm5hbCBody1pcy1pbi10aGUtc3Rh dGUtSS1leHBlY3RlZCBjaGVja3MgaW50bwo+IEk5MTVfV0FSTigpcyBhbmQgYWxsb3cgY29uZmln dXJhdGlvbiB2aWEgaTkxNS52ZXJib3NlX2NoZWNrcyBtb2R1bGUKPiBwYXJhbSBhYm91dCB3aGV0 aGVyIHRoaXMgd2lsbCBnZW5lcmF0ZSBhIGZ1bGwgYmxvd24gc3RhY2t0cmFjZSBvciBqdXN0Cj4g RFJNX0VSUk9SKCkuCj4gCj4gU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21h aWwuY29tPgoKWWVhaCBJIGd1ZXNzIG1ha2VzIHNlbnNlLCBhbHRob3VnaCBJIHN0aWxsIGNsYWlt IHRoYXQgdGhlc2UgYXJlIGFzIG11Y2gKIndlJ3ZlIGxvc3QgdHJhY2sgb2Ygc2hpdCIgYnVncyBh cyB3aGVuIGEgcmVmY291bnQgdW5kZXJmbG93cyBvciBhIHBvaW50ZXIKaXMgTlVMTCB3aGVuIGl0 IHNob3VsZG4ndC4gQnV0IEkgYWxzbyBhZ3JlZSB0aGF0IHdlJ3ZlIGRvbmUgYSBzdGVsbGFyIGpv Ygp0aGlzIHllYXIgYXQgbm90IGxvY2tpbmcgYXQgdGhlc2UgYnVncywgc28gbWVoLgoKU2luY2Ug dGhpcyBpcyBhbGwgYWJvdXQgaHcgY3Jvc3MgY2hlY2tpbmcsIGFjayBpZiBJIGRvIGFuCnMvSTkx NV9XQVJOL0k5MTVfSFdfV0FSTi8gb24gdG9wPwotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMjkgKysrKysrKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jICAgICAgfCAgIDUgKysKPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgMTM0ICsrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICB8ICAgNCAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAgIDIgKy0KPiAg NSBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYmIxODkyZC4uOWZhYmFmZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02MCw2ICs2MCwzNCBAQAo+ICAjdW5kZWYgV0FSTl9P Tgo+ICAjZGVmaW5lIFdBUk5fT04oeCkJCVdBUk4oeCwgIldBUk5fT04oIiAjeCAiKSIpCj4gIAo+ ICsvKiBVc2UgSTkxNV9XQVJOKHgpIGFuZCBJOTE1X1dBUk5fT04oKSAocmF0aGVyIHRoYW4gV0FS TigpIGFuZCBXQVJOX09OKCkpCj4gKyAqIHRvIGNoZWNrIGZvciB1bmV4cGVjdGVkIGNvbmRpdGlv bnMgd2hpY2ggbWF5IG5vdCBuZWNlc3NhcmlseSBiZSBhIHVzZXIKPiArICogdmlzaWJsZSBwcm9i bGVtLiAgVGhpcyB3aWxsIGVpdGhlciBXQVJOKCkgb3IgRFJNX0VSUk9SKCkgZGVwZW5kaW5nIG9u Cj4gKyAqIHRoZSB2ZXJib3NlX2NoZWNrcyBtb2R1bGVwYXJhbSwgZW5hYmxpbmcgZGlzdHJvcyBh bmQgdXNlcnMgdG8gdGFpbG9yCj4gKyAqIHRoZWlyIHByZWZlcnJlZCBhbW91bnQgb2YgaTkxNSBh YnJ0IHNwYW0uCj4gKyAqLwo+ICsjZGVmaW5lIEk5MTVfV0FSTihjb25kaXRpb24sIGZvcm1hdC4u LikgKHsJCQkJXAo+ICsJaW50IF9fcmV0X3dhcm5fb24gPSAhIShjb25kaXRpb24pOwkJCQlcCj4g KwlpZiAodW5saWtlbHkoX19yZXRfd2Fybl9vbikpIHsJCQkJCVwKPiArCQlpZiAoaTkxNS52ZXJi b3NlX2NoZWNrcykJCQkJXAo+ICsJCQlfX1dBUk5fcHJpbnRmKGZvcm1hdCk7CQkJCVwKPiArCQll bHNlIAkJCQkJCQlcCj4gKwkJCURSTV9FUlJPUihmb3JtYXQpOwkJCQlcCj4gKwl9CQkJCQkJCQlc Cj4gKwl1bmxpa2VseShfX3JldF93YXJuX29uKTsJCQkJCVwKPiArfSkKPiArCj4gKyNkZWZpbmUg STkxNV9XQVJOX09OKGNvbmRpdGlvbikgKHsJCQkJCVwKPiArCWludCBfX3JldF93YXJuX29uID0g ISEoY29uZGl0aW9uKTsJCQkJXAo+ICsJaWYgKHVubGlrZWx5KF9fcmV0X3dhcm5fb24pKSB7CQkJ CQlcCj4gKwkJaWYgKGk5MTUudmVyYm9zZV9jaGVja3MpCQkJCVwKPiArCQkJX19XQVJOX3ByaW50 ZigiV0FSTl9PTigiICNjb25kaXRpb24gIilcbiIpOwlcCj4gKwkJZWxzZSAJCQkJCQkJXAo+ICsJ CQlEUk1fRVJST1IoIldBUk5fT04oIiAjY29uZGl0aW9uICIpXG4iKTsJCVwKPiArCX0JCQkJCQkJ CVwKPiArCXVubGlrZWx5KF9fcmV0X3dhcm5fb24pOwkJCQkJXAo+ICt9KQo+ICsKPiAgZW51bSBw aXBlIHsKPiAgCUlOVkFMSURfUElQRSA9IC0xLAo+ICAJUElQRV9BID0gMCwKPiBAQCAtMjMxMSw2 ICsyMzM5LDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIHsKPiAgCWJvb2wgZGlzYWJsZV92dGRfd2E7 Cj4gIAlpbnQgdXNlX21taW9fZmxpcDsKPiAgCWJvb2wgbW1pb19kZWJ1ZzsKPiArCWJvb2wgdmVy Ym9zZV9jaGVja3M7Cj4gIH07Cj4gIGV4dGVybiBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3Jl YWRfbW9zdGx5Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w YXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBpbmRleCBjOTFj YjIwLi43Mjc3N2RhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFy YW1zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4gQEAgLTUx LDYgKzUxLDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIGk5MTUgX19yZWFkX21vc3RseSA9IHsKPiAg CS5kaXNhYmxlX3Z0ZF93YSA9IDAsCj4gIAkudXNlX21taW9fZmxpcCA9IDAsCj4gIAkubW1pb19k ZWJ1ZyA9IDAsCj4gKwkudmVyYm9zZV9jaGVja3MgPSAxLAo+ICB9Owo+ICAKPiAgbW9kdWxlX3Bh cmFtX25hbWVkKG1vZGVzZXQsIGk5MTUubW9kZXNldCwgaW50LCAwNDAwKTsKPiBAQCAtMTczLDMg KzE3NCw3IEBAIG1vZHVsZV9wYXJhbV9uYW1lZChtbWlvX2RlYnVnLCBpOTE1Lm1taW9fZGVidWcs IGJvb2wsIDA2MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKG1taW9fZGVidWcsCj4gIAkiRW5hYmxl IHRoZSBNTUlPIGRlYnVnIGNvZGUgKGRlZmF1bHQ6IGZhbHNlKS4gVGhpcyBtYXkgbmVnYXRpdmVs eSAiCj4gIAkiYWZmZWN0IHBlcmZvcm1hbmNlLiIpOwo+ICsKPiArbW9kdWxlX3BhcmFtX25hbWVk KHZlcmJvc2VfY2hlY2tzLCBpOTE1LnZlcmJvc2VfY2hlY2tzLCBib29sLCAwNjAwKTsKPiArTU9E VUxFX1BBUk1fREVTQyh2ZXJib3NlX2NoZWNrcywKPiArCSJFbmFibGUgdmVyYm9zZSBsb2dzIChp ZS4gV0FSTl9PTigpKSBpbiBjYXNlIG9mIHVuZXhwZWN0ZWQgY29uZGl0aW9ucy4iKTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNjMyNDdjNi4uN2I0ZWQxOCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTAyNCw3ICsxMDI0LDcg QEAgdm9pZCBhc3NlcnRfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CXJlZyA9IERQTEwocGlwZSk7Cj4gIAl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAgCWN1cl9zdGF0 ZSA9ICEhKHZhbCAmIERQTExfVkNPX0VOQUJMRSk7Cj4gLQlXQVJOKGN1cl9zdGF0ZSAhPSBzdGF0 ZSwKPiArCUk5MTVfV0FSTihjdXJfc3RhdGUgIT0gc3RhdGUsCj4gIAkgICAgICJQTEwgc3RhdGUg YXNzZXJ0aW9uIGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKPiAgCSAgICAg c3RhdGVfc3RyaW5nKHN0YXRlKSwgc3RhdGVfc3RyaW5nKGN1cl9zdGF0ZSkpOwo+ICB9Cj4gQEAg LTEwNDAsNyArMTA0MCw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9kc2lfcGxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0ZSkKPiAgCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmRwaW9fbG9jayk7Cj4gIAo+ICAJY3VyX3N0YXRlID0gdmFsICYgRFNJX1BMTF9WQ09f RU47Cj4gLQlXQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiArCUk5MTVfV0FSTihjdXJfc3RhdGUg IT0gc3RhdGUsCj4gIAkgICAgICJEU0kgUExMIHN0YXRlIGFzc2VydGlvbiBmYWlsdXJlIChleHBl Y3RlZCAlcywgY3VycmVudCAlcylcbiIsCj4gIAkgICAgIHN0YXRlX3N0cmluZyhzdGF0ZSksIHN0 YXRlX3N0cmluZyhjdXJfc3RhdGUpKTsKPiAgfQo+IEBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lk IGFzc2VydF9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAkJcmV0dXJuOwo+ICAKPiAgCWN1cl9zdGF0ZSA9IHBsbC0+Z2V0X2h3X3N0YXRlKGRldl9wcml2 LCBwbGwsICZod19zdGF0ZSk7Cj4gLQlXQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiArCUk5MTVf V0FSTihjdXJfc3RhdGUgIT0gc3RhdGUsCj4gIAkgICAgICIlcyBhc3NlcnRpb24gZmFpbHVyZSAo ZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAo+ICAJICAgICBwbGwtPm5hbWUsIHN0YXRlX3N0 cmluZyhzdGF0ZSksIHN0YXRlX3N0cmluZyhjdXJfc3RhdGUpKTsKPiAgfQo+IEBAIC0xMDk1LDcg KzEwOTUsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZmRpX3R4KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAgCQljdXJfc3RhdGUg PSAhISh2YWwgJiBGRElfVFhfRU5BQkxFKTsKPiAgCX0KPiAtCVdBUk4oY3VyX3N0YXRlICE9IHN0 YXRlLAo+ICsJSTkxNV9XQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiAgCSAgICAgIkZESSBUWCBz dGF0ZSBhc3NlcnRpb24gZmFpbHVyZSAoZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAo+ICAJ ICAgICBzdGF0ZV9zdHJpbmcoc3RhdGUpLCBzdGF0ZV9zdHJpbmcoY3VyX3N0YXRlKSk7Cj4gIH0K PiBAQCAtMTExMiw3ICsxMTEyLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2ZkaV9yeChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlyZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+ ICAJdmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4gIAljdXJfc3RhdGUgPSAhISh2YWwgJiBGRElfUlhf RU5BQkxFKTsKPiAtCVdBUk4oY3VyX3N0YXRlICE9IHN0YXRlLAo+ICsJSTkxNV9XQVJOKGN1cl9z dGF0ZSAhPSBzdGF0ZSwKPiAgCSAgICAgIkZESSBSWCBzdGF0ZSBhc3NlcnRpb24gZmFpbHVyZSAo ZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAo+ICAJICAgICBzdGF0ZV9zdHJpbmcoc3RhdGUp LCBzdGF0ZV9zdHJpbmcoY3VyX3N0YXRlKSk7Cj4gIH0KPiBAQCAtMTEzNSw3ICsxMTM1LDcgQEAg c3RhdGljIHZvaWQgYXNzZXJ0X2ZkaV90eF9wbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiAgCXZhbCA9 IEk5MTVfUkVBRChyZWcpOwo+IC0JV0FSTighKHZhbCAmIEZESV9UWF9QTExfRU5BQkxFKSwgIkZE SSBUWCBQTEwgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBhY3RpdmUgYnV0IGlzIGRpc2Fi bGVkXG4iKTsKPiArCUk5MTVfV0FSTighKHZhbCAmIEZESV9UWF9QTExfRU5BQkxFKSwgIkZESSBU WCBQTEwgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBhY3RpdmUgYnV0IGlzIGRpc2FibGVk XG4iKTsKPiAgfQo+ICAKPiAgdm9pZCBhc3NlcnRfZmRpX3J4X3BsbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTExNDgsNyArMTE0OCw3IEBAIHZvaWQgYXNzZXJ0X2Zk aV9yeF9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJcmVnID0gRkRJ X1JYX0NUTChwaXBlKTsKPiAgCXZhbCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJY3VyX3N0YXRlID0g ISEodmFsICYgRkRJX1JYX1BMTF9FTkFCTEUpOwo+IC0JV0FSTihjdXJfc3RhdGUgIT0gc3RhdGUs Cj4gKwlJOTE1X1dBUk4oY3VyX3N0YXRlICE9IHN0YXRlLAo+ICAJICAgICAiRkRJIFJYIFBMTCBh c3NlcnRpb24gZmFpbHVyZSAoZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAo+ICAJICAgICBz dGF0ZV9zdHJpbmcoc3RhdGUpLCBzdGF0ZV9zdHJpbmcoY3VyX3N0YXRlKSk7Cj4gIH0KPiBAQCAt MTE5MCw3ICsxMTkwLDcgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICAgICgodmFsICYgUEFORUxfVU5MT0NLX01BU0sp ID09IFBBTkVMX1VOTE9DS19SRUdTKSkKPiAgCQlsb2NrZWQgPSBmYWxzZTsKPiAgCj4gLQlXQVJO KHBhbmVsX3BpcGUgPT0gcGlwZSAmJiBsb2NrZWQsCj4gKwlJOTE1X1dBUk4ocGFuZWxfcGlwZSA9 PSBwaXBlICYmIGxvY2tlZCwKPiAgCSAgICAgInBhbmVsIGFzc2VydGlvbiBmYWlsdXJlLCBwaXBl ICVjIHJlZ3MgbG9ja2VkXG4iLAo+ICAJICAgICBwaXBlX25hbWUocGlwZSkpOwo+ICB9Cj4gQEAg LTEyMDYsNyArMTIwNiw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9jdXJzb3Ioc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJZWxzZQo+ICAJCWN1cl9zdGF0ZSA9IEk5MTVfUkVB RChDVVJDTlRSKHBpcGUpKSAmIENVUlNPUl9NT0RFOwo+ICAKPiAtCVdBUk4oY3VyX3N0YXRlICE9 IHN0YXRlLAo+ICsJSTkxNV9XQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiAgCSAgICAgImN1cnNv ciBvbiBwaXBlICVjIGFzc2VydGlvbiBmYWlsdXJlIChleHBlY3RlZCAlcywgY3VycmVudCAlcylc biIsCj4gIAkgICAgIHBpcGVfbmFtZShwaXBlKSwgc3RhdGVfc3RyaW5nKHN0YXRlKSwgc3RhdGVf c3RyaW5nKGN1cl9zdGF0ZSkpOwo+ICB9Cj4gQEAgLTEyMzYsNyArMTIzNiw3IEBAIHZvaWQgYXNz ZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWN1cl9zdGF0 ZSA9ICEhKHZhbCAmIFBJUEVDT05GX0VOQUJMRSk7Cj4gIAl9Cj4gIAo+IC0JV0FSTihjdXJfc3Rh dGUgIT0gc3RhdGUsCj4gKwlJOTE1X1dBUk4oY3VyX3N0YXRlICE9IHN0YXRlLAo+ICAJICAgICAi cGlwZSAlYyBhc3NlcnRpb24gZmFpbHVyZSAoZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAo+ ICAJICAgICBwaXBlX25hbWUocGlwZSksIHN0YXRlX3N0cmluZyhzdGF0ZSksIHN0YXRlX3N0cmlu ZyhjdXJfc3RhdGUpKTsKPiAgfQo+IEBAIC0xMjUxLDcgKzEyNTEsNyBAQCBzdGF0aWMgdm9pZCBh c3NlcnRfcGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJcmVnID0g RFNQQ05UUihwbGFuZSk7Cj4gIAl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAgCWN1cl9zdGF0ZSA9 ICEhKHZhbCAmIERJU1BMQVlfUExBTkVfRU5BQkxFKTsKPiAtCVdBUk4oY3VyX3N0YXRlICE9IHN0 YXRlLAo+ICsJSTkxNV9XQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiAgCSAgICAgInBsYW5lICVj IGFzc2VydGlvbiBmYWlsdXJlIChleHBlY3RlZCAlcywgY3VycmVudCAlcylcbiIsCj4gIAkgICAg IHBsYW5lX25hbWUocGxhbmUpLCBzdGF0ZV9zdHJpbmcoc3RhdGUpLCBzdGF0ZV9zdHJpbmcoY3Vy X3N0YXRlKSk7Cj4gIH0KPiBAQCAtMTI3MSw3ICsxMjcxLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0 X3BsYW5lc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICAJCXJlZyA9IERTUENOVFIocGlwZSk7 Cj4gIAkJdmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4gLQkJV0FSTih2YWwgJiBESVNQTEFZX1BMQU5F X0VOQUJMRSwKPiArCQlJOTE1X1dBUk4odmFsICYgRElTUExBWV9QTEFORV9FTkFCTEUsCj4gIAkJ ICAgICAicGxhbmUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBkaXNhYmxlZCBidXQg bm90XG4iLAo+ICAJCSAgICAgcGxhbmVfbmFtZShwaXBlKSk7Cj4gIAkJcmV0dXJuOwo+IEBAIC0x MjgzLDcgKzEyODMsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmVzX2Rpc2FibGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsK PiAgCQljdXJfcGlwZSA9ICh2YWwgJiBESVNQUExBTkVfU0VMX1BJUEVfTUFTSykgPj4KPiAgCQkJ RElTUFBMQU5FX1NFTF9QSVBFX1NISUZUOwo+IC0JCVdBUk4oKHZhbCAmIERJU1BMQVlfUExBTkVf RU5BQkxFKSAmJiBwaXBlID09IGN1cl9waXBlLAo+ICsJCUk5MTVfV0FSTigodmFsICYgRElTUExB WV9QTEFORV9FTkFCTEUpICYmIHBpcGUgPT0gY3VyX3BpcGUsCj4gIAkJICAgICAicGxhbmUgJWMg YXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwg YWN0aXZlXG4iLAo+ICAJCSAgICAgcGxhbmVfbmFtZShpKSwgcGlwZV9uYW1lKHBpcGUpKTsKPiAg CX0KPiBAQCAtMTI5OSw3ICsxMjk5LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlz YWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDkpIHsKPiAgCQlmb3JfZWFjaF9zcHJpdGUocGlwZSwgc3ByaXRlKSB7 Cj4gIAkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9DVEwocGlwZSwgc3ByaXRlKSk7Cj4gLQkJCVdB Uk4odmFsICYgUExBTkVfQ1RMX0VOQUJMRSwKPiArCQkJSTkxNV9XQVJOKHZhbCAmIFBMQU5FX0NU TF9FTkFCTEUsCj4gIAkJCSAgICAgInBsYW5lICVkIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQg YmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwKPiAgCQkJICAgICBzcHJp dGUsIHBpcGVfbmFtZShwaXBlKSk7Cj4gIAkJfQo+IEBAIC0xMzA3LDIwICsxMzA3LDIwIEBAIHN0 YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQlmb3JfZWFjaF9zcHJpdGUocGlwZSwgc3ByaXRlKSB7Cj4gIAkJCXJl ZyA9IFNQQ05UUihwaXBlLCBzcHJpdGUpOwo+ICAJCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAt CQkJV0FSTih2YWwgJiBTUF9FTkFCTEUsCj4gKwkJCUk5MTVfV0FSTih2YWwgJiBTUF9FTkFCTEUs Cj4gIAkJCSAgICAgInNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBv biBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCj4gIAkJCSAgICAgc3ByaXRlX25hbWUo cGlwZSwgc3ByaXRlKSwgcGlwZV9uYW1lKHBpcGUpKTsKPiAgCQl9Cj4gIAl9IGVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKPiAgCQlyZWcgPSBTUFJDVEwocGlwZSk7Cj4gIAkJ dmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4gLQkJV0FSTih2YWwgJiBTUFJJVEVfRU5BQkxFLAo+ICsJ CUk5MTVfV0FSTih2YWwgJiBTUFJJVEVfRU5BQkxFLAo+ICAJCSAgICAgInNwcml0ZSAlYyBhc3Nl cnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3Rp dmVcbiIsCj4gIAkJICAgICBwbGFuZV9uYW1lKHBpcGUpLCBwaXBlX25hbWUocGlwZSkpOwo+ICAJ fSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7Cj4gIAkJcmVnID0gRFZTQ05U UihwaXBlKTsKPiAgCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAtCQlXQVJOKHZhbCAmIERWU19F TkFCTEUsCj4gKwkJSTkxNV9XQVJOKHZhbCAmIERWU19FTkFCTEUsCj4gIAkJICAgICAic3ByaXRl ICVjIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0 aWxsIGFjdGl2ZVxuIiwKPiAgCQkgICAgIHBsYW5lX25hbWUocGlwZSksIHBpcGVfbmFtZShwaXBl KSk7Cj4gIAl9Cj4gQEAgLTEzMjgsNyArMTMyOCw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9zcHJp dGVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0 YXRpYyB2b2lkIGFzc2VydF92YmxhbmtfZGlzYWJsZWQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICB7Cj4gLQlpZiAoV0FSTl9PTihkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpID09IDApKQo+ICsJ aWYgKEk5MTVfV0FSTl9PTihkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpID09IDApKQo+ICAJCWRy bV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7Cj4gIH0KPiAgCj4gQEAgLTEzMzcsMTIgKzEzMzcsMTIg QEAgc3RhdGljIHZvaWQgaWJ4X2Fzc2VydF9wY2hfcmVmY2xrX2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJdTMyIHZhbDsKPiAgCWJvb2wgZW5hYmxlZDsKPiAg Cj4gLQlXQVJOX09OKCEoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikgfHwgSEFTX1BDSF9DUFQo ZGV2X3ByaXYtPmRldikpKTsKPiArCUk5MTVfV0FSTl9PTighKEhBU19QQ0hfSUJYKGRldl9wcml2 LT5kZXYpIHx8IEhBU19QQ0hfQ1BUKGRldl9wcml2LT5kZXYpKSk7Cj4gIAo+ICAJdmFsID0gSTkx NV9SRUFEKFBDSF9EUkVGX0NPTlRST0wpOwo+ICAJZW5hYmxlZCA9ICEhKHZhbCAmIChEUkVGX1NT Q19TT1VSQ0VfTUFTSyB8IERSRUZfTk9OU1BSRUFEX1NPVVJDRV9NQVNLIHwKPiAgCQkJICAgIERS RUZfU1VQRVJTUFJFQURfU09VUkNFX01BU0spKTsKPiAtCVdBUk4oIWVuYWJsZWQsICJQQ0ggcmVm Y2xrIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUgYWN0aXZlIGJ1dCBpcyBkaXNhYmxlZFxu Iik7Cj4gKwlJOTE1X1dBUk4oIWVuYWJsZWQsICJQQ0ggcmVmY2xrIGFzc2VydGlvbiBmYWlsdXJl LCBzaG91bGQgYmUgYWN0aXZlIGJ1dCBpcyBkaXNhYmxlZFxuIik7Cj4gIH0KPiAgCj4gIHN0YXRp YyB2b2lkIGFzc2VydF9wY2hfdHJhbnNjb2Rlcl9kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTEzNTUsNyArMTM1NSw3IEBAIHN0YXRpYyB2b2lkIGFzc2Vy dF9wY2hfdHJhbnNjb2Rlcl9kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAlyZWcgPSBQQ0hfVFJBTlNDT05GKHBpcGUpOwo+ICAJdmFsID0gSTkxNV9SRUFEKHJl Zyk7Cj4gIAllbmFibGVkID0gISEodmFsICYgVFJBTlNfRU5BQkxFKTsKPiAtCVdBUk4oZW5hYmxl ZCwKPiArCUk5MTVfV0FSTihlbmFibGVkLAo+ICAJICAgICAidHJhbnNjb2RlciBhc3NlcnRpb24g ZmFpbGVkLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwK PiAgCSAgICAgcGlwZV9uYW1lKHBpcGUpKTsKPiAgfQo+IEBAIC0xNDM1LDExICsxNDM1LDExIEBA IHN0YXRpYyB2b2lkIGFzc2VydF9wY2hfZHBfZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCQkJICAgZW51bSBwaXBlIHBpcGUsIGludCByZWcsIHUzMiBwb3J0 X3NlbCkKPiAgewo+ICAJdTMyIHZhbCA9IEk5MTVfUkVBRChyZWcpOwo+IC0JV0FSTihkcF9waXBl X2VuYWJsZWQoZGV2X3ByaXYsIHBpcGUsIHBvcnRfc2VsLCB2YWwpLAo+ICsJSTkxNV9XQVJOKGRw X3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSwgcG9ydF9zZWwsIHZhbCksCj4gIAkgICAgICJQ Q0ggRFAgKDB4JTA4eCkgZW5hYmxlZCBvbiB0cmFuc2NvZGVyICVjLCBzaG91bGQgYmUgZGlzYWJs ZWRcbiIsCj4gIAkgICAgIHJlZywgcGlwZV9uYW1lKHBpcGUpKTsKPiAgCj4gLQlXQVJOKEhBU19Q Q0hfSUJYKGRldl9wcml2LT5kZXYpICYmICh2YWwgJiBEUF9QT1JUX0VOKSA9PSAwCj4gKwlJOTE1 X1dBUk4oSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikgJiYgKHZhbCAmIERQX1BPUlRfRU4pID09 IDAKPiAgCSAgICAgJiYgKHZhbCAmIERQX1BJUEVCX1NFTEVDVCksCj4gIAkgICAgICJJQlggUENI IGRwIHBvcnQgc3RpbGwgdXNpbmcgdHJhbnNjb2RlciBCXG4iKTsKPiAgfQo+IEBAIC0xNDQ4LDEx ICsxNDQ4LDExIEBAIHN0YXRpYyB2b2lkIGFzc2VydF9wY2hfaGRtaV9kaXNhYmxlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgIGVudW0gcGlwZSBwaXBlLCBp bnQgcmVnKQo+ICB7Cj4gIAl1MzIgdmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4gLQlXQVJOKGhkbWlf cGlwZV9lbmFibGVkKGRldl9wcml2LCBwaXBlLCB2YWwpLAo+ICsJSTkxNV9XQVJOKGhkbWlfcGlw ZV9lbmFibGVkKGRldl9wcml2LCBwaXBlLCB2YWwpLAo+ICAJICAgICAiUENIIEhETUkgKDB4JTA4 eCkgZW5hYmxlZCBvbiB0cmFuc2NvZGVyICVjLCBzaG91bGQgYmUgZGlzYWJsZWRcbiIsCj4gIAkg ICAgIHJlZywgcGlwZV9uYW1lKHBpcGUpKTsKPiAgCj4gLQlXQVJOKEhBU19QQ0hfSUJYKGRldl9w cml2LT5kZXYpICYmICh2YWwgJiBTRFZPX0VOQUJMRSkgPT0gMAo+ICsJSTkxNV9XQVJOKEhBU19Q Q0hfSUJYKGRldl9wcml2LT5kZXYpICYmICh2YWwgJiBTRFZPX0VOQUJMRSkgPT0gMAo+ICAJICAg ICAmJiAodmFsICYgU0RWT19QSVBFX0JfU0VMRUNUKSwKPiAgCSAgICAgIklCWCBQQ0ggaGRtaSBw b3J0IHN0aWxsIHVzaW5nIHRyYW5zY29kZXIgQlxuIik7Cj4gIH0KPiBAQCAtMTQ2OSwxMyArMTQ2 OSwxMyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcGNoX3BvcnRzX2Rpc2FibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlyZWcgPSBQQ0hfQURQQTsKPiAgCXZhbCA9 IEk5MTVfUkVBRChyZWcpOwo+IC0JV0FSTihhZHBhX3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgcGlw ZSwgdmFsKSwKPiArCUk5MTVfV0FSTihhZHBhX3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSwg dmFsKSwKPiAgCSAgICAgIlBDSCBWR0EgZW5hYmxlZCBvbiB0cmFuc2NvZGVyICVjLCBzaG91bGQg YmUgZGlzYWJsZWRcbiIsCj4gIAkgICAgIHBpcGVfbmFtZShwaXBlKSk7Cj4gIAo+ICAJcmVnID0g UENIX0xWRFM7Cj4gIAl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAtCVdBUk4obHZkc19waXBlX2Vu YWJsZWQoZGV2X3ByaXYsIHBpcGUsIHZhbCksCj4gKwlJOTE1X1dBUk4obHZkc19waXBlX2VuYWJs ZWQoZGV2X3ByaXYsIHBpcGUsIHZhbCksCj4gIAkgICAgICJQQ0ggTFZEUyBlbmFibGVkIG9uIHRy YW5zY29kZXIgJWMsIHNob3VsZCBiZSBkaXNhYmxlZFxuIiwKPiAgCSAgICAgcGlwZV9uYW1lKHBp cGUpKTsKPiAgCj4gQEAgLTUzODIsMjUgKzUzODIsMjUgQEAgc3RhdGljIHZvaWQgaW50ZWxfY29u bmVjdG9yX2NoZWNrX3N0YXRlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAg CQlpZiAoY29ubmVjdG9yLT5tc3RfcG9ydCkKPiAgCQkJcmV0dXJuOwo+ICAKPiAtCQlXQVJOKGNv bm5lY3Rvci0+YmFzZS5kcG1zID09IERSTV9NT0RFX0RQTVNfT0ZGLAo+ICsJCUk5MTVfV0FSTihj b25uZWN0b3ItPmJhc2UuZHBtcyA9PSBEUk1fTU9ERV9EUE1TX09GRiwKPiAgCQkgICAgICJ3cm9u ZyBjb25uZWN0b3IgZHBtcyBzdGF0ZVxuIik7Cj4gLQkJV0FSTihjb25uZWN0b3ItPmJhc2UuZW5j b2RlciAhPSAmZW5jb2Rlci0+YmFzZSwKPiArCQlJOTE1X1dBUk4oY29ubmVjdG9yLT5iYXNlLmVu Y29kZXIgIT0gJmVuY29kZXItPmJhc2UsCj4gIAkJICAgICAiYWN0aXZlIGNvbm5lY3RvciBub3Qg bGlua2VkIHRvIGVuY29kZXJcbiIpOwo+ICAKPiAgCQlpZiAoZW5jb2Rlcikgewo+IC0JCQlXQVJO KCFlbmNvZGVyLT5jb25uZWN0b3JzX2FjdGl2ZSwKPiArCQkJSTkxNV9XQVJOKCFlbmNvZGVyLT5j b25uZWN0b3JzX2FjdGl2ZSwKPiAgCQkJICAgICAiZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUg bm90IHNldFxuIik7Cj4gIAo+ICAJCQllbmNvZGVyX2VuYWJsZWQgPSBlbmNvZGVyLT5nZXRfaHdf c3RhdGUoZW5jb2RlciwgJnBpcGUpOwo+IC0JCQlXQVJOKCFlbmNvZGVyX2VuYWJsZWQsICJlbmNv ZGVyIG5vdCBlbmFibGVkXG4iKTsKPiAtCQkJaWYgKFdBUk5fT04oIWVuY29kZXItPmJhc2UuY3J0 YykpCj4gKwkJCUk5MTVfV0FSTighZW5jb2Rlcl9lbmFibGVkLCAiZW5jb2RlciBub3QgZW5hYmxl ZFxuIik7Cj4gKwkJCWlmIChJOTE1X1dBUk5fT04oIWVuY29kZXItPmJhc2UuY3J0YykpCj4gIAkJ CQlyZXR1cm47Cj4gIAo+ICAJCQljcnRjID0gZW5jb2Rlci0+YmFzZS5jcnRjOwo+ICAKPiAtCQkJ V0FSTighY3J0Yy0+ZW5hYmxlZCwgImNydGMgbm90IGVuYWJsZWRcbiIpOwo+IC0JCQlXQVJOKCF0 b19pbnRlbF9jcnRjKGNydGMpLT5hY3RpdmUsICJjcnRjIG5vdCBhY3RpdmVcbiIpOwo+IC0JCQlX QVJOKHBpcGUgIT0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSwKPiArCQkJSTkxNV9XQVJOKCFj cnRjLT5lbmFibGVkLCAiY3J0YyBub3QgZW5hYmxlZFxuIik7Cj4gKwkJCUk5MTVfV0FSTighdG9f aW50ZWxfY3J0YyhjcnRjKS0+YWN0aXZlLCAiY3J0YyBub3QgYWN0aXZlXG4iKTsKPiArCQkJSTkx NV9XQVJOKHBpcGUgIT0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSwKPiAgCQkJICAgICAiZW5j b2RlciBhY3RpdmUgb24gdGhlIHdyb25nIHBpcGVcbiIpOwo+ICAJCX0KPiAgCX0KPiBAQCAtNzgx MCwyNCArNzgxMCwyNCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfY2FuX2Rpc2FibGVfbGNwbGwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJc3RydWN0IGludGVsX2NydGMgKmNy dGM7Cj4gIAo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpCj4gLQkJV0FSTihjcnRj LT5hY3RpdmUsICJDUlRDIGZvciBwaXBlICVjIGVuYWJsZWRcbiIsCj4gKwkJSTkxNV9XQVJOKGNy dGMtPmFjdGl2ZSwgIkNSVEMgZm9yIHBpcGUgJWMgZW5hYmxlZFxuIiwKPiAgCQkgICAgIHBpcGVf bmFtZShjcnRjLT5waXBlKSk7Cj4gIAo+IC0JV0FSTihJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0RS SVZFUiksICJQb3dlciB3ZWxsIG9uXG4iKTsKPiAtCVdBUk4oSTkxNV9SRUFEKFNQTExfQ1RMKSAm IFNQTExfUExMX0VOQUJMRSwgIlNQTEwgZW5hYmxlZFxuIik7Cj4gLQlXQVJOKEk5MTVfUkVBRChX UlBMTF9DVEwxKSAmIFdSUExMX1BMTF9FTkFCTEUsICJXUlBMTDEgZW5hYmxlZFxuIik7Cj4gLQlX QVJOKEk5MTVfUkVBRChXUlBMTF9DVEwyKSAmIFdSUExMX1BMTF9FTkFCTEUsICJXUlBMTDIgZW5h YmxlZFxuIik7Cj4gLQlXQVJOKEk5MTVfUkVBRChQQ0hfUFBfU1RBVFVTKSAmIFBQX09OLCAiUGFu ZWwgcG93ZXIgb25cbiIpOwo+IC0JV0FSTihJOTE1X1JFQUQoQkxDX1BXTV9DUFVfQ1RMMikgJiBC TE1fUFdNX0VOQUJMRSwKPiArCUk5MTVfV0FSTihJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0RSSVZF UiksICJQb3dlciB3ZWxsIG9uXG4iKTsKPiArCUk5MTVfV0FSTihJOTE1X1JFQUQoU1BMTF9DVEwp ICYgU1BMTF9QTExfRU5BQkxFLCAiU1BMTCBlbmFibGVkXG4iKTsKPiArCUk5MTVfV0FSTihJOTE1 X1JFQUQoV1JQTExfQ1RMMSkgJiBXUlBMTF9QTExfRU5BQkxFLCAiV1JQTEwxIGVuYWJsZWRcbiIp Owo+ICsJSTkxNV9XQVJOKEk5MTVfUkVBRChXUlBMTF9DVEwyKSAmIFdSUExMX1BMTF9FTkFCTEUs ICJXUlBMTDIgZW5hYmxlZFxuIik7Cj4gKwlJOTE1X1dBUk4oSTkxNV9SRUFEKFBDSF9QUF9TVEFU VVMpICYgUFBfT04sICJQYW5lbCBwb3dlciBvblxuIik7Cj4gKwlJOTE1X1dBUk4oSTkxNV9SRUFE KEJMQ19QV01fQ1BVX0NUTDIpICYgQkxNX1BXTV9FTkFCTEUsCj4gIAkgICAgICJDUFUgUFdNMSBl bmFibGVkXG4iKTsKPiAgCWlmIChJU19IQVNXRUxMKGRldikpCj4gLQkJV0FSTihJOTE1X1JFQUQo SFNXX0JMQ19QV00yX0NUTCkgJiBCTE1fUFdNX0VOQUJMRSwKPiArCQlJOTE1X1dBUk4oSTkxNV9S RUFEKEhTV19CTENfUFdNMl9DVEwpICYgQkxNX1BXTV9FTkFCTEUsCj4gIAkJICAgICAiQ1BVIFBX TTIgZW5hYmxlZFxuIik7Cj4gLQlXQVJOKEk5MTVfUkVBRChCTENfUFdNX1BDSF9DVEwxKSAmIEJM TV9QQ0hfUFdNX0VOQUJMRSwKPiArCUk5MTVfV0FSTihJOTE1X1JFQUQoQkxDX1BXTV9QQ0hfQ1RM MSkgJiBCTE1fUENIX1BXTV9FTkFCTEUsCj4gIAkgICAgICJQQ0ggUFdNMSBlbmFibGVkXG4iKTsK PiAtCVdBUk4oSTkxNV9SRUFEKFVUSUxfUElOX0NUTCkgJiBVVElMX1BJTl9FTkFCTEUsCj4gKwlJ OTE1X1dBUk4oSTkxNV9SRUFEKFVUSUxfUElOX0NUTCkgJiBVVElMX1BJTl9FTkFCTEUsCj4gIAkg ICAgICJVdGlsaXR5IHBpbiBlbmFibGVkXG4iKTsKPiAtCVdBUk4oSTkxNV9SRUFEKFBDSF9HVENf Q1RMKSAmIFBDSF9HVENfRU5BQkxFLCAiUENIIEdUQyBlbmFibGVkXG4iKTsKPiArCUk5MTVfV0FS TihJOTE1X1JFQUQoUENIX0dUQ19DVEwpICYgUENIX0dUQ19FTkFCTEUsICJQQ0ggR1RDIGVuYWJs ZWRcbiIpOwo+ICAKPiAgCS8qCj4gIAkgKiBJbiB0aGVvcnkgd2UgY2FuIHN0aWxsIGxlYXZlIElS UXMgZW5hYmxlZCwgYXMgbG9uZyBhcyBvbmx5IHRoZSBIUEQKPiBAQCAtNzgzNSw3ICs3ODM1LDcg QEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nhbl9kaXNhYmxlX2xjcGxsKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCSAqIGdlbi1zcGVjaWZpYyBhbmQgc2luY2Ugd2Ugb25seSBk aXNhYmxlIExDUExMIGFmdGVyIHdlIGZ1bGx5IGRpc2FibGUKPiAgCSAqIHRoZSBpbnRlcnJ1cHRz LCB0aGUgY2hlY2sgYmVsb3cgc2hvdWxkIGJlIGVub3VnaC4KPiAgCSAqLwo+IC0JV0FSTihpbnRl bF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpLCAiSVJRcyBlbmFibGVkXG4iKTsKPiArCUk5MTVfV0FS TihpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpLCAiSVJRcyBlbmFibGVkXG4iKTsKPiAgfQo+ ICAKPiAgc3RhdGljIHVpbnQzMl90IGhzd19yZWFkX2Rjb21wKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiBAQCAtMTA3NDIsNyArMTA3NDIsNyBAQCBjaGVja19jb25uZWN0b3Jf c3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkgKiAtPmdldF9od19zdGF0ZSBjYWxs YmFja3MuICovCj4gIAkJaW50ZWxfY29ubmVjdG9yX2NoZWNrX3N0YXRlKGNvbm5lY3Rvcik7Cj4g IAo+IC0JCVdBUk4oJmNvbm5lY3Rvci0+bmV3X2VuY29kZXItPmJhc2UgIT0gY29ubmVjdG9yLT5i YXNlLmVuY29kZXIsCj4gKwkJSTkxNV9XQVJOKCZjb25uZWN0b3ItPm5ld19lbmNvZGVyLT5iYXNl ICE9IGNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyLAo+ICAJCSAgICAgImNvbm5lY3RvcidzIHN0YWdl ZCBlbmNvZGVyIGRvZXNuJ3QgbWF0Y2ggY3VycmVudCBlbmNvZGVyXG4iKTsKPiAgCX0KPiAgfQo+ IEBAIC0xMDc2Miw5ICsxMDc2Miw5IEBAIGNoZWNrX2VuY29kZXJfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgCQkJICAgICAgZW5jb2Rlci0+YmFzZS5iYXNlLmlkLAo+ICAJCQkgICAg ICBlbmNvZGVyLT5iYXNlLm5hbWUpOwo+ICAKPiAtCQlXQVJOKCZlbmNvZGVyLT5uZXdfY3J0Yy0+ YmFzZSAhPSBlbmNvZGVyLT5iYXNlLmNydGMsCj4gKwkJSTkxNV9XQVJOKCZlbmNvZGVyLT5uZXdf Y3J0Yy0+YmFzZSAhPSBlbmNvZGVyLT5iYXNlLmNydGMsCj4gIAkJICAgICAiZW5jb2RlcidzIHN0 YWdlIGNydGMgZG9lc24ndCBtYXRjaCBjdXJyZW50IGNydGNcbiIpOwo+IC0JCVdBUk4oZW5jb2Rl ci0+Y29ubmVjdG9yc19hY3RpdmUgJiYgIWVuY29kZXItPmJhc2UuY3J0YywKPiArCQlJOTE1X1dB Uk4oZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUgJiYgIWVuY29kZXItPmJhc2UuY3J0YywKPiAg CQkgICAgICJlbmNvZGVyJ3MgYWN0aXZlX2Nvbm5lY3RvcnMgc2V0LCBidXQgbm8gY3J0Y1xuIik7 Cj4gIAo+ICAJCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZp Zy5jb25uZWN0b3JfbGlzdCwKPiBAQCAtMTA3ODMsMTkgKzEwNzgzLDE5IEBAIGNoZWNrX2VuY29k ZXJfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlpZiAoIWVuYWJsZWQgJiYgZW5j b2Rlci0+YmFzZS5lbmNvZGVyX3R5cGUgPT0gRFJNX01PREVfRU5DT0RFUl9EUE1TVCkKPiAgCQkJ Y29udGludWU7Cj4gIAo+IC0JCVdBUk4oISFlbmNvZGVyLT5iYXNlLmNydGMgIT0gZW5hYmxlZCwK PiArCQlJOTE1X1dBUk4oISFlbmNvZGVyLT5iYXNlLmNydGMgIT0gZW5hYmxlZCwKPiAgCQkgICAg ICJlbmNvZGVyJ3MgZW5hYmxlZCBzdGF0ZSBtaXNtYXRjaCAiCj4gIAkJICAgICAiKGV4cGVjdGVk ICVpLCBmb3VuZCAlaSlcbiIsCj4gIAkJICAgICAhIWVuY29kZXItPmJhc2UuY3J0YywgZW5hYmxl ZCk7Cj4gLQkJV0FSTihhY3RpdmUgJiYgIWVuY29kZXItPmJhc2UuY3J0YywKPiArCQlJOTE1X1dB Uk4oYWN0aXZlICYmICFlbmNvZGVyLT5iYXNlLmNydGMsCj4gIAkJICAgICAiYWN0aXZlIGVuY29k ZXIgd2l0aCBubyBjcnRjXG4iKTsKPiAgCj4gLQkJV0FSTihlbmNvZGVyLT5jb25uZWN0b3JzX2Fj dGl2ZSAhPSBhY3RpdmUsCj4gKwkJSTkxNV9XQVJOKGVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZl ICE9IGFjdGl2ZSwKPiAgCQkgICAgICJlbmNvZGVyJ3MgY29tcHV0ZWQgYWN0aXZlIHN0YXRlIGRv ZXNuJ3QgbWF0Y2ggdHJhY2tlZCBhY3RpdmUgc3RhdGUgIgo+ICAJCSAgICAgIihleHBlY3RlZCAl aSwgZm91bmQgJWkpXG4iLCBhY3RpdmUsIGVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlKTsKPiAg Cj4gIAkJYWN0aXZlID0gZW5jb2Rlci0+Z2V0X2h3X3N0YXRlKGVuY29kZXIsICZwaXBlKTsKPiAt CQlXQVJOKGFjdGl2ZSAhPSBlbmNvZGVyLT5jb25uZWN0b3JzX2FjdGl2ZSwKPiArCQlJOTE1X1dB Uk4oYWN0aXZlICE9IGVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlLAo+ICAJCSAgICAgImVuY29k ZXIncyBodyBzdGF0ZSBkb2Vzbid0IG1hdGNoIHN3IHRyYWNraW5nICIKPiAgCQkgICAgICIoZXhw ZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwKPiAgCQkgICAgIGVuY29kZXItPmNvbm5lY3RvcnNfYWN0 aXZlLCBhY3RpdmUpOwo+IEBAIC0xMDgwNCw3ICsxMDgwNCw3IEBAIGNoZWNrX2VuY29kZXJfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCXRyYWNr ZWRfcGlwZSA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKS0+cGlwZTsKPiAtCQlX QVJOKGFjdGl2ZSAmJiBwaXBlICE9IHRyYWNrZWRfcGlwZSwKPiArCQlJOTE1X1dBUk4oYWN0aXZl ICYmIHBpcGUgIT0gdHJhY2tlZF9waXBlLAo+ICAJCSAgICAgImFjdGl2ZSBlbmNvZGVyJ3MgcGlw ZSBkb2Vzbid0IG1hdGNoIgo+ICAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLAo+ ICAJCSAgICAgdHJhY2tlZF9waXBlLCBwaXBlKTsKPiBAQCAtMTA4MjksNyArMTA4MjksNyBAQCBj aGVja19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJRFJNX0RFQlVHX0tN UygiW0NSVEM6JWRdXG4iLAo+ICAJCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQpOwo+ICAKPiAt CQlXQVJOKGNydGMtPmFjdGl2ZSAmJiAhY3J0Yy0+YmFzZS5lbmFibGVkLAo+ICsJCUk5MTVfV0FS TihjcnRjLT5hY3RpdmUgJiYgIWNydGMtPmJhc2UuZW5hYmxlZCwKPiAgCQkgICAgICJhY3RpdmUg Y3J0YywgYnV0IG5vdCBlbmFibGVkIGluIHN3IHRyYWNraW5nXG4iKTsKPiAgCj4gIAkJZm9yX2Vh Y2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKPiBAQCAtMTA4NDAsMTAgKzEwODQwLDEw IEBAIGNoZWNrX2NydGNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJCWFjdGl2 ZSA9IHRydWU7Cj4gIAkJfQo+ICAKPiAtCQlXQVJOKGFjdGl2ZSAhPSBjcnRjLT5hY3RpdmUsCj4g KwkJSTkxNV9XQVJOKGFjdGl2ZSAhPSBjcnRjLT5hY3RpdmUsCj4gIAkJICAgICAiY3J0YydzIGNv bXB1dGVkIGFjdGl2ZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIHRyYWNrZWQgYWN0aXZlIHN0YXRlICIK PiAgCQkgICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgYWN0aXZlLCBjcnRjLT5hY3Rp dmUpOwo+IC0JCVdBUk4oZW5hYmxlZCAhPSBjcnRjLT5iYXNlLmVuYWJsZWQsCj4gKwkJSTkxNV9X QVJOKGVuYWJsZWQgIT0gY3J0Yy0+YmFzZS5lbmFibGVkLAo+ICAJCSAgICAgImNydGMncyBjb21w dXRlZCBlbmFibGVkIHN0YXRlIGRvZXNuJ3QgbWF0Y2ggdHJhY2tlZCBlbmFibGVkIHN0YXRlICIK PiAgCQkgICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgZW5hYmxlZCwgY3J0Yy0+YmFz ZS5lbmFibGVkKTsKPiAgCj4gQEAgLTEwODYzLDEzICsxMDg2MywxMyBAQCBjaGVja19jcnRjX3N0 YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCQllbmNvZGVyLT5nZXRfY29uZmlnKGVu Y29kZXIsICZwaXBlX2NvbmZpZyk7Cj4gIAkJfQo+ICAKPiAtCQlXQVJOKGNydGMtPmFjdGl2ZSAh PSBhY3RpdmUsCj4gKwkJSTkxNV9XQVJOKGNydGMtPmFjdGl2ZSAhPSBhY3RpdmUsCj4gIAkJICAg ICAiY3J0YyBhY3RpdmUgc3RhdGUgZG9lc24ndCBtYXRjaCB3aXRoIGh3IHN0YXRlICIKPiAgCQkg ICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgY3J0Yy0+YWN0aXZlLCBhY3RpdmUpOwo+ ICAKPiAgCQlpZiAoYWN0aXZlICYmCj4gIAkJICAgICFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJl KGRldiwgJmNydGMtPmNvbmZpZywgJnBpcGVfY29uZmlnKSkgewo+IC0JCQlXQVJOKDEsICJwaXBl IHN0YXRlIGRvZXNuJ3QgbWF0Y2ghXG4iKTsKPiArCQkJSTkxNV9XQVJOKDEsICJwaXBlIHN0YXRl IGRvZXNuJ3QgbWF0Y2ghXG4iKTsKPiAgCQkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjcnRjLCAm cGlwZV9jb25maWcsCj4gIAkJCQkJICAgICAgICJbaHcgc3RhdGVdIik7Cj4gIAkJCWludGVsX2R1 bXBfcGlwZV9jb25maWcoY3J0YywgJmNydGMtPmNvbmZpZywKPiBAQCAtMTA4OTcsMTQgKzEwODk3 LDE0IEBAIGNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAo+ICAJCWFjdGl2ZSA9IHBsbC0+Z2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsICZkcGxsX2h3 X3N0YXRlKTsKPiAgCj4gLQkJV0FSTihwbGwtPmFjdGl2ZSA+IGh3ZWlnaHQzMihwbGwtPmNvbmZp Zy5jcnRjX21hc2spLAo+ICsJCUk5MTVfV0FSTihwbGwtPmFjdGl2ZSA+IGh3ZWlnaHQzMihwbGwt PmNvbmZpZy5jcnRjX21hc2spLAo+ICAJCSAgICAgIm1vcmUgYWN0aXZlIHBsbCB1c2VycyB0aGFu IHJlZmVyZW5jZXM6ICVpIHZzICVpXG4iLAo+ICAJCSAgICAgcGxsLT5hY3RpdmUsIGh3ZWlnaHQz MihwbGwtPmNvbmZpZy5jcnRjX21hc2spKTsKPiAtCQlXQVJOKHBsbC0+YWN0aXZlICYmICFwbGwt Pm9uLAo+ICsJCUk5MTVfV0FSTihwbGwtPmFjdGl2ZSAmJiAhcGxsLT5vbiwKPiAgCQkgICAgICJw bGwgaW4gYWN0aXZlIHVzZSBidXQgbm90IG9uIGluIHN3IHRyYWNraW5nXG4iKTsKPiAtCQlXQVJO KHBsbC0+b24gJiYgIXBsbC0+YWN0aXZlLAo+ICsJCUk5MTVfV0FSTihwbGwtPm9uICYmICFwbGwt PmFjdGl2ZSwKPiAgCQkgICAgICJwbGwgaW4gb24gYnV0IG5vdCBvbiBpbiB1c2UgaW4gc3cgdHJh Y2tpbmdcbiIpOwo+IC0JCVdBUk4ocGxsLT5vbiAhPSBhY3RpdmUsCj4gKwkJSTkxNV9XQVJOKHBs bC0+b24gIT0gYWN0aXZlLAo+ICAJCSAgICAgInBsbCBvbiBzdGF0ZSBtaXNtYXRjaCAoZXhwZWN0 ZWQgJWksIGZvdW5kICVpKVxuIiwKPiAgCQkgICAgIHBsbC0+b24sIGFjdGl2ZSk7Cj4gIAo+IEBA IC0xMDkxNCwxNCArMTA5MTQsMTQgQEAgY2hlY2tfc2hhcmVkX2RwbGxfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCQkJaWYgKGNydGMtPmFjdGl2ZSAmJiBpbnRlbF9jcnRjX3RvX3No YXJlZF9kcGxsKGNydGMpID09IHBsbCkKPiAgCQkJCWFjdGl2ZV9jcnRjcysrOwo+ICAJCX0KPiAt CQlXQVJOKHBsbC0+YWN0aXZlICE9IGFjdGl2ZV9jcnRjcywKPiArCQlJOTE1X1dBUk4ocGxsLT5h Y3RpdmUgIT0gYWN0aXZlX2NydGNzLAo+ICAJCSAgICAgInBsbCBhY3RpdmUgY3J0Y3MgbWlzbWF0 Y2ggKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4gIAkJICAgICBwbGwtPmFjdGl2ZSwgYWN0 aXZlX2NydGNzKTsKPiAtCQlXQVJOKGh3ZWlnaHQzMihwbGwtPmNvbmZpZy5jcnRjX21hc2spICE9 IGVuYWJsZWRfY3J0Y3MsCj4gKwkJSTkxNV9XQVJOKGh3ZWlnaHQzMihwbGwtPmNvbmZpZy5jcnRj X21hc2spICE9IGVuYWJsZWRfY3J0Y3MsCj4gIAkJICAgICAicGxsIGVuYWJsZWQgY3J0Y3MgbWlz bWF0Y2ggKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4gIAkJICAgICBod2VpZ2h0MzIocGxs LT5jb25maWcuY3J0Y19tYXNrKSwgZW5hYmxlZF9jcnRjcyk7Cj4gIAo+IC0JCVdBUk4ocGxsLT5v biAmJiBtZW1jbXAoJnBsbC0+Y29uZmlnLmh3X3N0YXRlLCAmZHBsbF9od19zdGF0ZSwKPiArCQlJ OTE1X1dBUk4ocGxsLT5vbiAmJiBtZW1jbXAoJnBsbC0+Y29uZmlnLmh3X3N0YXRlLCAmZHBsbF9o d19zdGF0ZSwKPiAgCQkJCSAgICAgICBzaXplb2YoZHBsbF9od19zdGF0ZSkpLAo+ICAJCSAgICAg InBsbCBodyBzdGF0ZSBtaXNtYXRjaFxuIik7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gaW5kZXggNWNlY2MyMC4uNmQ1YmY2ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ IEBAIC0xNTU4LDcgKzE1NTgsNyBAQCB2b2lkIGludGVsX2VkcF9wYW5lbF92ZGRfb24oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiAgCXZkZCA9IGVkcF9wYW5lbF92ZGRfb24oaW50ZWxfZHAp Owo+ICAJcHBzX3VubG9jayhpbnRlbF9kcCk7Cj4gIAo+IC0JV0FSTighdmRkLCAiZURQIHBvcnQg JWMgVkREIGFscmVhZHkgcmVxdWVzdGVkIG9uXG4iLAo+ICsJSTkxNV9XQVJOKCF2ZGQsICJlRFAg cG9ydCAlYyBWREQgYWxyZWFkeSByZXF1ZXN0ZWQgb25cbiIsCj4gIAkgICAgIHBvcnRfbmFtZShk cF90b19kaWdfcG9ydChpbnRlbF9kcCktPnBvcnQpKTsKPiAgfQo+ICAKPiBAQCAtMTY0Miw3ICsx NjQyLDcgQEAgc3RhdGljIHZvaWQgZWRwX3BhbmVsX3ZkZF9vZmYoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgYm9vbCBzeW5jKQo+ICAJaWYgKCFpc19lZHAoaW50ZWxfZHApKQo+ICAJCXJldHVy bjsKPiAgCj4gLQlXQVJOKCFpbnRlbF9kcC0+d2FudF9wYW5lbF92ZGQsICJlRFAgcG9ydCAlYyBW REQgbm90IGZvcmNlZCBvbiIsCj4gKwlJOTE1X1dBUk4oIWludGVsX2RwLT53YW50X3BhbmVsX3Zk ZCwgImVEUCBwb3J0ICVjIFZERCBub3QgZm9yY2VkIG9uIiwKPiAgCSAgICAgcG9ydF9uYW1lKGRw X3RvX2RpZ19wb3J0KGludGVsX2RwKS0+cG9ydCkpOwo+ICAKPiAgCWludGVsX2RwLT53YW50X3Bh bmVsX3ZkZCA9IGZhbHNlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMK PiBpbmRleCBmNWE3OGQ1Li43NzBjNWY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYwo+IEBAIC02MzMsNyArNjMzLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfcG93 ZXJfd2VsbF9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlyZXR1 cm47Cj4gIAo+ICBtaXNtYXRjaDoKPiAtCVdBUk4oMSwgInN0YXRlIG1pc21hdGNoIGZvciAnJXMn IChhbHdheXNfb24gJWQgaHcgc3RhdGUgJWQgdXNlLWNvdW50ICVkIGRpc2FibGVfcG93ZXJfd2Vs bCAlZFxuIiwKPiArCUk5MTVfV0FSTigxLCAic3RhdGUgbWlzbWF0Y2ggZm9yICclcycgKGFsd2F5 c19vbiAlZCBodyBzdGF0ZSAlZCB1c2UtY291bnQgJWQgZGlzYWJsZV9wb3dlcl93ZWxsICVkXG4i LAo+ICAJCSAgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0+YWx3YXlzX29uLCBlbmFibGVk LAo+ICAJCSAgcG93ZXJfd2VsbC0+Y291bnQsIGk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsKTsKPiAg fQo+IC0tIAo+IDIuMS4wCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KKzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZnds bC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=