From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH] drm/i915: Introduce IS_GEN9_BC for Skylake and Kabylake. Date: Mon, 05 Dec 2016 08:45:04 +0200 Message-ID: <1480920304.4510.7.camel@gmail.com> References: <1480723237-5152-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x244.google.com (mail-pf0-x244.google.com [IPv6:2607:f8b0:400e:c00::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id E76306E030 for ; Mon, 5 Dec 2016 06:45:11 +0000 (UTC) Received: by mail-pf0-x244.google.com with SMTP id c4so16548581pfb.3 for ; Sun, 04 Dec 2016 22:45:11 -0800 (PST) In-Reply-To: <1480723237-5152-1-git-send-email-rodrigo.vivi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi , intel-gfx@lists.freedesktop.org Cc: Jani Nikula , "Lahtinen, Joonas" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE2LTEyLTAyIGF0IDE2OjAwIC0wODAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4g QWxvbmcgd2l0aCBHTEsgaXQgd2FzIGludHJvZHVjZWQgdGhlIC5pc19scCBhbmQgSVNfR0VOOV9M UC4KPiBTbywgZm9sbG93aW5nIHRoZSBzYW1lIHNpbXBsaWZpY2F0aW9uIHN0YW5kYXJkIHdlIGNh bgo+IHB1dCBTa3lsYWtlIGFuZCBLYWJ5bGFrZSB1bmRlciB0aGUgc2FtZSBidWNrZXQgZm9yIG1v c3QKPiBvZiB0aGUgdGhpbmdzLgo+IAo+IFNvIGxldCdzIGFkZCB0aGUgSVNfR0VOOV9CQyBmb3Ig IkJpZyBDb3JlIiAobm9uIEF0b20gYmFzZWQKPiBwbGF0Zm9ybXMpLgoKSSdtIG5vdCBzdXJlIGFi b3V0IHRoZSAiX0JDIiBuYW1lLCBidXQgY2FuJ3QgdGhpbmsgb2YgYW55dGhpbmcgYmV0dGVyLiBB dCBsZWFzdAppdCBhbGlnbnMgbmljZWx5IHdpdGggIl9MUCIsIGJ1dCB3b3VsZCBhbiBhY2N1cmF0 ZSBvcHBvc2l0ZSBiZSBfSFAgZm9yIGhpZ2gKcG93ZXI/CgpBbnl3YXksIGNoYW5nZXMgbG9vayBj b3JyZWN0LCBzbwoKUmV2aWV3ZWQtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8Y29u c2VsdmFuMkBnbWFpbC5jb20+CgplaXRoZXIgd2F5LgoKQW5kZXIKCj4gCj4gVGhlIGk5MTVfZHJ2 LmMgd2FzIGxldCBvdXQgb2YgdGhpcyBwYXRjaCBvbiBwdXJwb3NlCj4gYmVjYXVzZSB0aGF0IGlz IHJlYWxseSBhIGRlY2lzaW9uIHBlciBwbGF0Zm9ybSwganVzdCBsaWtlCj4gb3RoZXIgY2FzZXMg d2hlcmUgSVNfS0FCWUxBS0UgaXMgZGlmZmVyZW50IGZyb20gSVNfU0tZTEFLRS4KPiAKPiBDYzog QW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFA aW50ZWwuY29tPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiAtLS0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jwqDCoMKgwqDCoMKgfCAxNyAr KysrKysrLS0tLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDC oMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3N0b2xlbi5jwqDCoMKgfMKgwqAzICstLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uY8KgwqDCoMKgwqDCoMKgfMKgwqAyICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jb2xvci5jwqDCoMKgwqDCoMKgwqB8wqDCoDQgKystLQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmPCoMKgwqDCoMKgwqDCoMKgwqB8IDIwICsrKysrKysrKystLS0tLS0t LS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIHzCoMKgMiAr LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jwqDCoMKgwqDCoHwgMTQg KysrKysrKy0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmPCoMKgwqDC oMKgwqDCoMKgwqDCoHzCoMKgNCArKy0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cGxsX21nci5jwqDCoMKgwqB8wqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiYy5jwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAzICstLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDQgKystLQo+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jwqDCoMKgwqDCoMKgwqDCoHzCoMKgMiArLQo+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgfCAxMyArKysr KystLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmPCoMKg fCAxMCArKysrKy0tLS0tCj4gwqAxNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA1 MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4 IDFiNTlkMTIuLjQ5NDQzZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ IEBAIC0xMjA2LDIxICsxMjA2LDE4IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiDCoAo+IMKgCQltYXhfZnJlcSA9IChJ U19HRU45X0xQKGRldl9wcml2KSA/IHJwX3N0YXRlX2NhcCA+PiAwIDoKPiDCoAkJCcKgwqDCoMKg cnBfc3RhdGVfY2FwID4+IDE2KSAmIDB4ZmY7Cj4gLQkJbWF4X2ZyZXEgKj0gKElTX1NLWUxBS0Uo ZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSA/Cj4gLQkJCcKgwqDCoMKgwqBHRU45 X0ZSRVFfU0NBTEVSIDogMSk7Cj4gKwkJbWF4X2ZyZXEgKj0gKElTX0dFTjlfQkMoZGV2X3ByaXYp ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOwo+IMKgCQlzZXFfcHJpbnRmKG0sICJMb3dlc3QgKFJQ TikgZnJlcXVlbmN5OiAlZE1IelxuIiwKPiDCoAkJCcKgwqDCoGludGVsX2dwdV9mcmVxKGRldl9w cml2LCBtYXhfZnJlcSkpOwo+IMKgCj4gwqAJCW1heF9mcmVxID0gKHJwX3N0YXRlX2NhcCAmIDB4 ZmYwMCkgPj4gODsKPiAtCQltYXhfZnJlcSAqPSAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNf S0FCWUxBS0UoZGV2X3ByaXYpID8KPiAtCQkJwqDCoMKgwqDCoEdFTjlfRlJFUV9TQ0FMRVIgOiAx KTsKPiArCQltYXhfZnJlcSAqPSAoSVNfR0VOOV9CQyhkZXZfcHJpdikgPyBHRU45X0ZSRVFfU0NB TEVSIDogMSk7Cj4gwqAJCXNlcV9wcmludGYobSwgIk5vbWluYWwgKFJQMSkgZnJlcXVlbmN5OiAl ZE1IelxuIiwKPiDCoAkJCcKgwqDCoGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBtYXhfZnJlcSkp Owo+IMKgCj4gwqAJCW1heF9mcmVxID0gKElTX0dFTjlfTFAoZGV2X3ByaXYpID8gcnBfc3RhdGVf Y2FwID4+IDE2IDoKPiDCoAkJCcKgwqDCoMKgcnBfc3RhdGVfY2FwID4+IDApICYgMHhmZjsKPiAt CQltYXhfZnJlcSAqPSAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3By aXYpID8KPiAtCQkJwqDCoMKgwqDCoEdFTjlfRlJFUV9TQ0FMRVIgOiAxKTsKPiArCQltYXhfZnJl cSAqPSAoSVNfR0VOOV9CQyhkZXZfcHJpdikgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7Cj4gwqAJ CXNlcV9wcmludGYobSwgIk1heCBub24tb3ZlcmNsb2NrZWQgKFJQMCkgZnJlcXVlbmN5OiAlZE1I elxuIiwKPiDCoAkJCcKgwqDCoGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBtYXhfZnJlcSkpOwo+ IMKgCQlzZXFfcHJpbnRmKG0sICJNYXggb3ZlcmNsb2NrZWQgZnJlcXVlbmN5OiAlZE1IelxuIiwK PiBAQCAtMTc5Niw3ICsxNzkzLDcgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiDCoAlpZiAocmV0KQo+IMKgCQlnb3Rv IG91dDsKPiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRl dl9wcml2KSkgewo+ICsJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4gwqAJCS8qIENvbnZl cnQgR1QgZnJlcXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCj4gwqAJCW1pbl9ncHVfZnJlcSA9Cj4g wqAJCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCAvIEdFTjlfRlJFUV9TQ0FMRVI7 Cj4gQEAgLTE4MTYsOCArMTgxMyw4IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX2ZyZXFfdGFibGUo c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gwqAJCQkJwqDCoMKgwqDCoMKgwqAm aWFfZnJlcSk7Cj4gwqAJCXNlcV9wcmludGYobSwgIiVkXHRcdCVkXHRcdFx0XHQlZFxuIiwKPiDC oAkJCcKgwqDCoGludGVsX2dwdV9mcmVxKGRldl9wcml2LCAoZ3B1X2ZyZXEgKgo+IC0JCQkJKElT X1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSA/Cj4gLQkJCQnCoEdF TjlfRlJFUV9TQ0FMRVIgOiAxKSkpLAo+ICsJCQkJCQnCoMKgwqDCoMKgKElTX0dFTjlfQkMoZGV2 X3ByaXYpID8KPiArCQkJCQkJwqDCoMKgwqDCoMKgR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSksCj4g wqAJCQnCoMKgwqAoKGlhX2ZyZXEgPj4gMCkgJiAweGZmKSAqIDEwMCwKPiDCoAkJCcKgwqDCoCgo aWFfZnJlcSA+PiA4KSAmIDB4ZmYpICogMTAwKTsKPiDCoAl9Cj4gQEAgLTUyMDcsNyArNTIwNCw3 IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiDCoAo+IMKgCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsK PiDCoAo+IC0JCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJp dikpCj4gKwkJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+IMKgCQkJc3NldS0+c3Vic2xpY2Vf bWFzayA9Cj4gwqAJCQkJSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFzazsK PiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDAzNWFjNzUuLmVlYTk2ODUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjYxNCw2ICsyNjE0LDcgQEAgc3RhdGlj IGlubGluZSBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKl9fc2dfbmV4dChzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnKQo+IMKgI2RlZmluZSBJU19HRU45KGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5mby5n ZW5fbWFzayAmIEJJVCg4KSkpCj4gwqAKPiDCoCNkZWZpbmUgSVNfR0VOOV9MUChkZXZfcHJpdikJ KElTX0dFTjkoZGV2X3ByaXYpICYmIElOVEVMX0lORk8oZGV2X3ByaXYpLT5pc19scCkKPiArI2Rl ZmluZSBJU19HRU45X0JDKGRldl9wcml2KQkoSVNfR0VOOShkZXZfcHJpdikgJiYgIUlOVEVMX0lO Rk8oZGV2X3ByaXYpLT5pc19scCkKPiDCoAo+IMKgI2RlZmluZSBFTkdJTkVfTUFTSyhpZCkJQklU KGlkKQo+IMKgI2RlZmluZSBSRU5ERVJfUklORwlFTkdJTkVfTUFTSyhSQ1MpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBpbmRleCBiM2JhYzI1NS4uY2Q4ODBjOSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gQEAgLTQ1NCw4ICs0NTQs NyBAQCBpbnQgaTkxNV9nZW1faW5pdF9zdG9sZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+IMKgCQkJCQnCoCZyZXNlcnZlZF9zaXplKTsKPiDCoAkJYnJlYWs7Cj4gwqAJZGVm YXVsdDoKPiAtCQlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fAo+IC0JCcKgwqDCoMKgSVNf U0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19C Uk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+IMKgCQkJYmR3X2dl dF9zdG9sZW5fcmVzZXJ2ZWQoZGV2X3ByaXYsICZyZXNlcnZlZF9iYXNlLAo+IMKgCQkJCQkJJnJl c2VydmVkX3NpemUpOwo+IMKgCQllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4g aW5kZXggM2JiYzk2Yy4uMmE4Y2IwZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8u Ywo+IEBAIC03MDIsNyArNzAyLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRf Y29kZWNfd2FrZV9vdmVycmlkZShzdHJ1Y3QgZGV2aWNlICprZGV2LAo+IMKgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShrZGV2KTsKPiDCoAl1MzIgdG1w Owo+IMKgCj4gLQlpZiAoIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmICFJU19LQUJZTEFLRShkZXZf cHJpdikpCj4gKwlpZiAoIUlTX0dFTjlfQkMoZGV2X3ByaXYpKQo+IMKgCQlyZXR1cm47Cj4gwqAK PiDCoAlpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfcG93ZXIoa2Rldik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jb2xvci5jCj4gaW5kZXggZDgxMjMyYi4uMzQ5NTJkMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY29sb3IuYwo+IEBAIC01MzYsOCArNTM2LDggQEAgdm9pZCBpbnRlbF9jb2xv cl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiDCoAl9IGVsc2UgaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpKSB7Cj4gwqAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeCA9IGk5 eHhfbG9hZF9jc2NfbWF0cml4Owo+IMKgCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBo YXN3ZWxsX2xvYWRfbHV0czsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8 fCBJU19TS1lMQUtFKGRldl9wcml2KSB8fAo+IC0JCcKgwqDCoElTX0JST1hUT04oZGV2X3ByaXYp IHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwo ZGV2X3ByaXYpIHx8IElTX0dFTjlfQkMoZGV2X3ByaXYpIHx8Cj4gKwkJwqDCoMKgSVNfQlJPWFRP TihkZXZfcHJpdikpIHsKPiDCoAkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4ID0g aTl4eF9sb2FkX2NzY19tYXRyaXg7Cj4gwqAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9 IGJyb2Fkd2VsbF9sb2FkX2x1dHM7Cj4gwqAJfSBlbHNlIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYwo+IGluZGV4IGQ4MDhhMmMuLjdkODQwMDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYwo+IEBAIC00NDUsNyArNDQ1LDcgQEAgc3RhdGljIGludCBpbnRlbF9kZGlfaGRtaV9sZXZl bChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPiDCoAlp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCXJldHVybiBoZG1pX2xldmVsOwo+IMKgCj4g LQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4g KwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiDCoAkJc2tsX2dldF9idWZfdHJhbnNfaGRt aShkZXZfcHJpdiwgJm5faGRtaV9lbnRyaWVzKTsKPiDCoAkJaGRtaV9kZWZhdWx0X2VudHJ5ID0g ODsKPiDCoAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiBAQCAtNTE4LDcg KzUxOCw3IEBAIHZvaWQgaW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcikKPiDCoAkJbl9kcF9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRp X3RyYW5zbGF0aW9uc19kcCk7Cj4gwqAJfQo+IMKgCj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJp dikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJp dikpIHsKPiDCoAkJLyogSWYgd2UncmUgYm9vc3RpbmcgdGhlIGN1cnJlbnQsIHNldCBiaXQgMzEg b2YgdHJhbnMxICovCj4gwqAJCWlmIChkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0u ZHBfYm9vc3RfbGV2ZWwpCj4gwqAJCQlpYm9vc3RfYml0ID0gRERJX0JVRl9CQUxBTkNFX0xFR19F TkFCTEU7Cj4gQEAgLTU3Miw3ICs1NzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2hk bWlfZGRpX2J1ZmZlcnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gwqAKPiDCoAlo ZG1pX2xldmVsID0gaW50ZWxfZGRpX2hkbWlfbGV2ZWwoZGV2X3ByaXYsIHBvcnQpOwo+IMKgCj4g LQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4g KwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiDCoAkJZGRpX3RyYW5zbGF0aW9uc19oZG1p ID0gc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwgJm5faGRtaV9lbnRyaWVzKTsKPiDC oAo+IMKgCQkvKiBJZiB3ZSdyZSBib29zdGluZyB0aGUgY3VycmVudCwgc2V0IGJpdCAzMSBvZiB0 cmFuczEgKi8KPiBAQCAtMTA4OSw3ICsxMDg5LDcgQEAgdm9pZCBpbnRlbF9kZGlfY2xvY2tfZ2V0 KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IMKgCj4gwqAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPD0gOCkKPiDCoAkJaHN3X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25m aWcpOwo+IC0JZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2 X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gwqAJCXNrbF9kZGlf Y2xvY2tfZ2V0KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiDCoAllbHNlIGlmIChJU19HRU45X0xQ KGRldl9wcml2KSkKPiDCoAkJYnh0X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcp Owo+IEBAIC0xMTUwLDcgKzExNTAsNyBAQCBib29sIGludGVsX2RkaV9wbGxfc2VsZWN0KHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+IMKgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRl bF9lbmNvZGVyID0KPiDCoAkJaW50ZWxfZGRpX2dldF9jcnRjX25ld19lbmNvZGVyKGNydGNfc3Rh dGUpOwo+IMKgCj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2 X3ByaXYpKQo+ICsJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+IMKgCQlyZXR1cm4gc2tsX2Rk aV9wbGxfc2VsZWN0KGludGVsX2NydGMsIGNydGNfc3RhdGUsCj4gwqAJCQkJCcKgwqBpbnRlbF9l bmNvZGVyKTsKPiDCoAllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiBAQCAtMTY0MSw3 ICsxNjQxLDcgQEAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiDCoAo+IMKgCWxldmVsID0gdHJhbnNsYXRlX3NpZ25hbF9sZXZlbChzaWduYWxf bGV2ZWxzKTsKPiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtF KGRldl9wcml2KSkKPiArCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiDCoAkJc2tsX2RkaV9z ZXRfaWJvb3N0KGVuY29kZXIsIGxldmVsKTsKPiDCoAllbHNlIGlmIChJU19HRU45X0xQKGRldl9w cml2KSkKPiDCoAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2X3ByaXYsIGxldmVsLCBwb3J0 LCBlbmNvZGVyLT50eXBlKTsKPiBAQCAtMTY1OCw3ICsxNjU4LDcgQEAgdm9pZCBpbnRlbF9kZGlf Y2xrX3NlbGVjdChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiDCoAlpZiAoV0FSTl9P TighcGxsKSkKPiDCoAkJcmV0dXJuOwo+IMKgCj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikg fHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikp IHsKPiDCoAkJdWludDMyX3QgdmFsOwo+IMKgCj4gwqAJCS8qIERESSAtPiBQTEwgbWFwcGluZ8Kg wqAqLwo+IEBAIC0xNzE0LDcgKzE3MTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2Vu YWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IMKgCWludGVsX2RwX2R1 YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoaW50ZWxfaGRtaSwgdHJ1ZSk7Cj4gwqAJaW50ZWxfZGRp X2Nsa19zZWxlY3QoZW5jb2RlciwgcGxsKTsKPiDCoAlpbnRlbF9wcmVwYXJlX2hkbWlfZGRpX2J1 ZmZlcnMoZW5jb2Rlcik7Cj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxB S0UoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+IMKgCQlza2xfZGRp X3NldF9pYm9vc3QoZW5jb2RlciwgbGV2ZWwpOwo+IMKgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKQo+IMKgCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShkZXZfcHJpdiwgbGV2ZWwsIHBv cnQsCj4gQEAgLTE3ODQsNyArMTc4NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rp c2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gwqAJCWludGVsX2Vk cF9wYW5lbF9vZmYoaW50ZWxfZHApOwo+IMKgCX0KPiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2 X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19HRU45X0JDKGRldl9w cml2KSkKPiDCoAkJSTkxNV9XUklURShEUExMX0NUUkwyLCAoSTkxNV9SRUFEKERQTExfQ1RSTDIp IHwKPiDCoAkJCQkJRFBMTF9DVFJMMl9ERElfQ0xLX09GRihwb3J0KSkpOwo+IMKgCWVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQo+IEBAIC0yMTU3LDcgKzIxNTcsNyBAQCBzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGwgKgo+IMKgCQkJcGxsLT5jb25maWcgPSB0bXBfcGxsX2NvbmZpZzsK PiDCoAkJCXJldHVybiBOVUxMOwo+IMKgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2 X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU45 X0JDKGRldl9wcml2KSkgewo+IMKgCQlwbGwgPSBza2xfZmluZF9saW5rX3BsbChkZXZfcHJpdiwg Y2xvY2spOwo+IMKgCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURX RUxMKGRldl9wcml2KSkgewo+IMKgCQlwbGwgPSBoc3dfZGRpX2RwX2dldF9kcGxsKGVuY29kZXIs IGNsb2NrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNl X2luZm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiBpbmRl eCA2MDJkNzYxLi4wMzExMjZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZp Y2VfaW5mby5jCj4gQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfaW5m b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAnCoCogcGFpciBw ZXIgc3Vic2xpY2UuCj4gwqAJKi8KPiDCoAlzc2V1LT5oYXNfc2xpY2VfcGcgPQo+IC0JCShJU19T S1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpICYmCj4gKwkJKElTX0dF TjlfQkMoZGV2X3ByaXYpKSAmJgo+IMKgCQlod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKSA+IDE7 Cj4gwqAJc3NldS0+aGFzX3N1YnNsaWNlX3BnID0KPiDCoAkJSVNfQlJPWFRPTihkZXZfcHJpdikg JiYgc3NldV9zdWJzbGljZV90b3RhbChzc2V1KSA+IDE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IGluZGV4IDFmYWZjY2UuLjJlMDk2MTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTU4MjIsNyArNTgyMiw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiDCoAo+IMKgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikg fHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikp IHsKPiDCoAkJdTMyIGxpbWl0ID0gSTkxNV9SRUFEKFNLTF9ERlNNKSAmIFNLTF9ERlNNX0NEQ0xL X0xJTUlUX01BU0s7Cj4gwqAJCWludCBtYXhfY2RjbGssIHZjbzsKPiDCoAo+IEBAIC0xMDY5Nyw3 ICsxMDY5Nyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+IMKgCj4gwqAJcG9ydCA9ICh0bXAgJiBUUkFOU19ERElfUE9S VF9NQVNLKSA+PiBUUkFOU19ERElfUE9SVF9TSElGVDsKPiDCoAo+IC0JaWYgKElTX1NLWUxBS0Uo ZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19HRU45X0JDKGRl dl9wcml2KSkKPiDCoAkJc2t5bGFrZV9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9ydCwgcGlwZV9j b25maWcpOwo+IMKgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQlieHRfZ2V0 X2RkaV9wbGwoZGV2X3ByaXYsIHBvcnQsIHBpcGVfY29uZmlnKTsKPiBAQCAtMTI4NTcsNyArMTI4 NTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+IMKgCQkJwqDCoMKgwqDCoMKgcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUu cGxsOSwKPiDCoAkJCcKgwqDCoMKgwqDCoHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLnBsbDEw LAo+IMKgCQkJwqDCoMKgwqDCoMKgcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUucGNzZHcxMik7 Cj4gLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9w cml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+IMKgCQlEUk1f REVCVUdfS01TKCJkcGxsX2h3X3N0YXRlOiAiCj4gwqAJCQnCoMKgwqDCoMKgwqAiY3RybDE6IDB4 JXgsIGNmZ2NyMTogMHgleCwgY2ZnY3IyOiAweCV4XG4iLAo+IMKgCQkJwqDCoMKgwqDCoMKgcGlw ZV9jb25maWctPmRwbGxfaHdfc3RhdGUuY3RybDEsCj4gQEAgLTE1NTg0LDcgKzE1NTg0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gwqAJCcKgKi8KPiDCoAkJZm91bmQgPSBJOTE1X1JFQUQoRERJX0JVRl9DVEwo UE9SVF9BKSkgJiBERElfSU5JVF9ESVNQTEFZX0RFVEVDVEVEOwo+IMKgCQkvKiBXYUlnbm9yZURE SUFTdHJhcDogc2tsICovCj4gLQkJaWYgKGZvdW5kIHx8IElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8 IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiArCQlpZiAoZm91bmQgfHwgSVNfR0VOOV9CQyhkZXZf cHJpdikpCj4gwqAJCQlpbnRlbF9kZGlfaW5pdChkZXZfcHJpdiwgUE9SVF9BKTsKPiDCoAo+IMKg CQkvKiBEREkgQiwgQyBhbmQgRCBkZXRlY3Rpb24gaXMgaW5kaWNhdGVkIGJ5IHRoZSBTRlVTRV9T VFJBUAo+IEBAIC0xNTYwMCw3ICsxNTYwMCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291 dHB1dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCQkvKgo+IMKgCQnC oCogT24gU0tMIHdlIGRvbid0IGhhdmUgYSB3YXkgdG8gZGV0ZWN0IERESS1FIHNvIHdlIHJlbHkg b24gVkJULgo+IMKgCQnCoCovCj4gLQkJaWYgKChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19L QUJZTEFLRShkZXZfcHJpdikpICYmCj4gKwkJaWYgKChJU19HRU45X0JDKGRldl9wcml2KSkgJiYK PiDCoAkJwqDCoMKgwqAoZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW1BPUlRfRV0uc3VwcG9y dHNfZHAgfHwKPiDCoAkJwqDCoMKgwqDCoGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1tQT1JU X0VdLnN1cHBvcnRzX2R2aSB8fAo+IMKgCQnCoMKgwqDCoMKgZGV2X3ByaXYtPnZidC5kZGlfcG9y dF9pbmZvW1BPUlRfRV0uc3VwcG9ydHNfaGRtaSkpCj4gQEAgLTE2MDg3LDcgKzE2MDg3LDcgQEAg dm9pZCBpbnRlbF9pbml0X2Rpc3BsYXlfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+IMKgCX0KPiDCoAo+IMKgCS8qIFJldHVybnMgdGhlIGNvcmUgZGlzcGxheSBjbG9j ayBzcGVlZCAqLwo+IC0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRl dl9wcml2KSkKPiArCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiDCoAkJZGV2X3ByaXYtPmRp c3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQgPQo+IMKgCQkJc2t5bGFrZV9nZXRfZGlzcGxh eV9jbG9ja19zcGVlZDsKPiDCoAllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiBAQCAt MTYxNjgsNyArMTYxNjgsNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJCQlieHRfbW9kZXNldF9jb21taXRfY2Rj bGs7Cj4gwqAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4gwqAJCQli eHRfbW9kZXNldF9jYWxjX2NkY2xrOwo+IC0JfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2 KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhk ZXZfcHJpdikpIHsKPiDCoAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21taXRfY2RjbGsg PQo+IMKgCQkJc2tsX21vZGVzZXRfY29tbWl0X2NkY2xrOwo+IMKgCQlkZXZfcHJpdi0+ZGlzcGxh eS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDFm MjQyMGMuLjNhN2FmNDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMjM2LDcg KzIzNiw3IEBAIHN0YXRpYyB1OCBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+IMKgCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+IMKgCQkqc291 cmNlX3JhdGVzID0gYnh0X3JhdGVzOwo+IMKgCQlzaXplID0gQVJSQVlfU0laRShieHRfcmF0ZXMp Owo+IC0JfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZf cHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiDCoAkJKnNv dXJjZV9yYXRlcyA9IHNrbF9yYXRlczsKPiDCoAkJc2l6ZSA9IEFSUkFZX1NJWkUoc2tsX3JhdGVz KTsKPiDCoAl9IGVsc2Ugewo+IEBAIC0xNjkzLDcgKzE2OTMsNyBAQCBzdGF0aWMgaW50IGludGVs X2RwX2NvbXB1dGVfYnBwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gwqAJwqAqIGNsb2Nr IGZvciBlRFAuIFRoaXMgd2lsbCBhZmZlY3QgY2RjbGsgYXMgd2VsbC4KPiDCoAnCoCovCj4gwqAJ aWYgKGlzX2VkcChpbnRlbF9kcCkgJiYKPiAtCcKgwqDCoMKgKElTX1NLWUxBS0UoZGV2X3ByaXYp IHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkpIHsKPiArCcKgwqDCoMKgKElTX0dFTjlfQkMoZGV2 X3ByaXYpKSkgewo+IMKgCQlpbnQgdmNvOwo+IMKgCj4gwqAJCXN3aXRjaCAocGlwZV9jb25maWct PnBvcnRfY2xvY2sgLyAyKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwbGxfbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4g aW5kZXggOTdmN2NjOS4uYzkxOTMwYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcGxsX21nci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBs bF9tZ3IuYwo+IEBAIC0xODg0LDcgKzE4ODQsNyBAQCB2b2lkIGludGVsX3NoYXJlZF9kcGxsX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAljb25zdCBzdHJ1Y3QgZHBsbF9pbmZvICpk cGxsX2luZm87Cj4gwqAJaW50IGk7Cj4gwqAKPiAtCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8 fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4g wqAJCWRwbGxfbWdyID0gJnNrbF9wbGxfbWdyOwo+IMKgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKQo+IMKgCQlkcGxsX21nciA9ICZieHRfcGxsX21ncjsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwo+IGluZGV4IDYyZjIxNWIuLjhjNDc2NWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwo+IEBAIC01MzQsOCArNTM0LDcgQEAgc3RhdGljIGludCBmaW5kX2NvbXByZXNzaW9u X3RocmVzaG9sZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJwqAqIHJl c2VydmVkIHJhbmdlIHNpemUsIHNvIGl0IGFsd2F5cyBhc3N1bWVzIHRoZSBtYXhpbXVtICg4bWIp IGlzIHVzZWQuCj4gwqAJwqAqIElmIHdlIGVuYWJsZSBGQkMgdXNpbmcgYSBDRkIgb24gdGhhdCBt ZW1vcnkgcmFuZ2Ugd2UnbGwgZ2V0IEZJRk8KPiDCoAnCoCogdW5kZXJydW5zLCBldmVuIGlmIHRo YXQgcmFuZ2UgaXMgbm90IHJlc2VydmVkIGJ5IHRoZSBCSU9TLiAqLwo+IC0JaWYgKElTX0JST0FE V0VMTChkZXZfcHJpdikgfHwKPiAtCcKgwqDCoMKgSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNf S0FCWUxBS0UoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSVNf R0VOOV9CQyhkZXZfcHJpdikpCj4gwqAJCWVuZCA9IGdndHQtPnN0b2xlbl9zaXplIC0gOCAqIDEw MjQgKiAxMDI0Owo+IMKgCWVsc2UKPiDCoAkJZW5kID0gZ2d0dC0+c3RvbGVuX3VzYWJsZV9zaXpl Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gaW5kZXggMDE2NDEzMC4uN2RhMDdmZSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBnbWJ1c19waW4gKmdldF9nbWJ1c19waW4oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IMKgewo+IMKgCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJ cmV0dXJuICZnbWJ1c19waW5zX2J4dFtwaW5dOwo+IC0JZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZf cHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOOV9CQyhk ZXZfcHJpdikpCj4gwqAJCXJldHVybiAmZ21idXNfcGluc19za2xbcGluXTsKPiDCoAllbHNlIGlm IChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IMKgCQlyZXR1cm4gJmdtYnVzX3BpbnNfYmR3W3Bp bl07Cj4gQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBpbnRlbF9nbWJ1c19pc192YWxpZF9waW4oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCj4gwqAJaWYgKElTX0dFTjlfTFAo ZGV2X3ByaXYpKQo+IMKgCQlzaXplID0gQVJSQVlfU0laRShnbWJ1c19waW5zX2J4dCk7Cj4gLQll bHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4g KwllbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiDCoAkJc2l6ZSA9IEFSUkFZX1NJWkUo Z21idXNfcGluc19za2wpOwo+IMKgCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4g wqAJCXNpemUgPSBBUlJBWV9TSVpFKGdtYnVzX3BpbnNfYmR3KTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbW9jcy5jCj4gaW5kZXggYzc4N2ZjNC4uOGY5OGZjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9tb2NzLmMKPiBAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBib29sIGdldF9tb2NzX3Nl dHRpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoHsKPiDCoAlib29s IHJlc3VsdCA9IGZhbHNlOwo+IMKgCj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNf S0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiDC oAkJdGFibGUtPnNpemXCoMKgPSBBUlJBWV9TSVpFKHNreWxha2VfbW9jc190YWJsZSk7Cj4gwqAJ CXRhYmxlLT50YWJsZSA9IHNreWxha2VfbW9jc190YWJsZTsKPiDCoAkJcmVzdWx0ID0gdHJ1ZTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA1OWE4OGRlLi40ZGFmYjVjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTI4ODYsOCArMjg4Niw3IEBAIHN0YXRpYyBib29s IHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShz dGF0ZS0+YmFzZS5kZXYpOwo+IMKgCj4gLQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNf QlJPWFRPTihkZXZfcHJpdikgfHwKPiAtCcKgwqDCoMKgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+ ICsJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+IMKg CQlyZXR1cm4gdHJ1ZTsKPiDCoAo+IMKgCXJldHVybiBmYWxzZTsKPiBAQCAtNTI1OCw3ICs1MjU3 LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAKPiDCoAlkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9m cmVxID0gZGV2X3ByaXYtPnJwcy5ycDFfZnJlcTsKPiDCoAlpZiAoSVNfSEFTV0VMTChkZXZfcHJp dikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fAo+IC0JwqDCoMKgwqBJU19TS1lMQUtFKGRl dl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiArCcKgwqDCoMKgSVNfR0VOOV9C QyhkZXZfcHJpdikpIHsKPiDCoAkJdTMyIGRkY2Nfc3RhdHVzID0gMDsKPiDCoAo+IMKgCQlpZiAo c2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwKPiBAQCAtNTI3MSw3ICs1MjcwLDcgQEAg c3RhdGljIHZvaWQgZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gwqAJCQkJCWRldl9wcml2LT5ycHMubWF4X2ZyZXEpOwo+IMKgCX0K PiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2 KSkgewo+ICsJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4gwqAJCS8qIFN0b3JlIHRoZSBm cmVxdWVuY3kgdmFsdWVzIGluIDE2LjY2IE1IWiB1bml0cywgd2hpY2ggaXMKPiDCoAkJwqAqIHRo ZSBuYXR1cmFsIGhhcmR3YXJlIHVuaXQgZm9yIFNLTAo+IMKgCQnCoCovCj4gQEAgLTU2MDEsNyAr NTYwMCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfdXBkYXRlX3JpbmdfZnJlcShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJLyogY29udmVydCBERFIgZnJlcXVlbmN5IGZyb20g dW5pdHMgb2YgMjY2LjZNSHogdG8gYmFuZHdpZHRoICovCj4gwqAJbWluX3JpbmdfZnJlcSA9IG11 bHRfZnJhYyhtaW5fcmluZ19mcmVxLCA4LCAzKTsKPiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2 X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTjlfQkMoZGV2 X3ByaXYpKSB7Cj4gwqAJCS8qIENvbnZlcnQgR1QgZnJlcXVlbmN5IHRvIDUwIEhaIHVuaXRzICov Cj4gwqAJCW1pbl9ncHVfZnJlcSA9IGRldl9wcml2LT5ycHMubWluX2ZyZXEgLyBHRU45X0ZSRVFf U0NBTEVSOwo+IMKgCQltYXhfZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+cnBzLm1heF9mcmVxIC8gR0VO OV9GUkVRX1NDQUxFUjsKPiBAQCAtNTYxOSw3ICs1NjE4LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl91 cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJ aW50IGRpZmYgPSBtYXhfZ3B1X2ZyZXEgLSBncHVfZnJlcTsKPiDCoAkJdW5zaWduZWQgaW50IGlh X2ZyZXEgPSAwLCByaW5nX2ZyZXEgPSAwOwo+IMKgCj4gLQkJaWYgKElTX1NLWUxBS0UoZGV2X3By aXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgewo+ICsJCWlmIChJU19HRU45X0JDKGRldl9w cml2KSkgewo+IMKgCQkJLyoKPiDCoAkJCcKgKiByaW5nX2ZyZXEgPSAyICogR1QuIHJpbmdfZnJl cSBpcyBpbiAxMDBNSHogdW5pdHMKPiDCoAkJCcKgKiBObyBmbG9vciByZXF1aXJlZCBmb3Igcmlu ZyBmcmVxdWVuY3kgb24gU0tMLgo+IEBAIC02NzM5LDcgKzY3MzgsNyBAQCB2b2lkIGludGVsX2Vu YWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKg CX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gwqAJCWdlbjlfZW5hYmxl X3JjNihkZXZfcHJpdik7Cj4gwqAJCWdlbjlfZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4gLQkJaWYg KElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiArCQlpZiAo SVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gwqAJCQlnZW42X3VwZGF0ZV9yaW5nX2ZyZXEoZGV2X3By aXYpOwo+IMKgCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+IMKgCQlnZW44 X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMKPiBpbmRleCBmYjEwZWU2Li5iODAyYjA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYwo+IEBAIC03MzIsNyArNzMyLDcgQEAgdm9pZCBza2xfZGlzYWJs ZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCcKgKiBvdGhlciBy ZXF1ZXN0IGJpdHMgdG8gYmUgc2V0LCBzbyBXQVJOIGZvciB0aG9zZS4KPiDCoAnCoCovCj4gwqAJ aWYgKHBvd2VyX3dlbGxfaWQgPT0gU0tMX0RJU1BfUFdfMSB8fAo+IC0JwqDCoMKgwqAoKElTX1NL WUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgJiYKPiArCcKgwqDCoMKg KChJU19HRU45X0JDKGRldl9wcml2KSkgJiYKPiDCoAnCoMKgwqDCoMKgcG93ZXJfd2VsbF9pZCA9 PSBTS0xfRElTUF9QV19NSVNDX0lPKSkKPiDCoAkJRFJNX0RFQlVHX0RSSVZFUigiQ2xlYXJpbmcg YXV4aWxpYXJ5IHJlcXVlc3RzIGZvciAlcyBmb3JjZWQgb24gIgo+IMKgCQkJCcKgImJ5IERNQ1xu IiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4gQEAgLTIzMTIsNyArMjMxMiw3IEBAIHN0YXRpYyB1aW50 MzJfdCBnZXRfYWxsb3dlZF9kY19tYXNrKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiDCoAlpbnQgcmVxdWVzdGVkX2RjOwo+IMKgCWludCBtYXhfZGM7Cj4gwqAKPiAt CWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiAr CWlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+IMKgCQltYXhfZGMgPSAyOwo+IMKgCQltYXNr ID0gMDsKPiDCoAl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gQEAgLTIzODcs NyArMjM4Nyw3IEBAIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywg aHN3X3Bvd2VyX3dlbGxzKTsKPiDCoAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikp IHsKPiDCoAkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGJkd19wb3dlcl93ZWxscyk7 Cj4gLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9w cml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+IMKgCQlzZXRf cG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgc2tsX3Bvd2VyX3dlbGxzKTsKPiDCoAl9IGVsc2Ug aWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gwqAJCXNldF9wb3dlcl93ZWxscyhwb3dlcl9k b21haW5zLCBieHRfcG93ZXJfd2VsbHMpOwo+IEBAIC0yNzE5LDcgKzI3MTksNyBAQCB2b2lkIGlu dGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGJvb2wgcmVzdW1lKQo+IMKgCj4gwqAJcG93ZXJfZG9tYWlucy0+aW5pdGlhbGl6aW5nID0g dHJ1ZTsKPiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRl dl9wcml2KSkgewo+ICsJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4gwqAJCXNrbF9kaXNw bGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgcmVzdW1lKTsKPiDCoAl9IGVsc2UgaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKSB7Cj4gwqAJCWJ4dF9kaXNwbGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgcmVz dW1lKTsKPiBAQCAtMjc1OCw3ICsyNzU4LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1 c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCWlmICghaTkxNS5k aXNhYmxlX3Bvd2VyX3dlbGwpCj4gwqAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gwqAKPiAtCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8 fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4g wqAJCXNrbF9kaXNwbGF5X2NvcmVfdW5pbml0KGRldl9wcml2KTsKPiDCoAllbHNlIGlmIChJU19H RU45X0xQKGRldl9wcml2KSkKPiDCoAkJYnh0X2Rpc3BsYXlfY29yZV91bmluaXQoZGV2X3ByaXYp OwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK