From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2281C2D0E5 for ; Thu, 26 Mar 2020 14:51:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7DFDF20848 for ; Thu, 26 Mar 2020 14:51:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="RsZin8+G" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728100AbgCZOvf (ORCPT ); Thu, 26 Mar 2020 10:51:35 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:37187 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727612AbgCZOvf (ORCPT ); Thu, 26 Mar 2020 10:51:35 -0400 X-UUID: b12bedc3c89941b095ed7d83690c209a-20200326 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=FIellL6PCHRipyqR04VazAI65bQngInlMl4x1+YtWms=; b=RsZin8+GbtA+z0+L9syPZkfwr02K2Gicgh08MryKKA6DbdzK9ga2tfKpXXcXS2Ft9TgZetbbqkBwBRTkSm4r6qbTKLKil5ExLyBOYxwIJE86CED13P2OM6HwvaTyIH0aLzpyL6l9WmYR4ESY9psAbjZn7yahWgjTwuAObvq0u48=; X-UUID: b12bedc3c89941b095ed7d83690c209a-20200326 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 2099540198; Thu, 26 Mar 2020 22:51:19 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 26 Mar 2020 22:51:16 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 26 Mar 2020 22:51:16 +0800 Message-ID: <1585234277.12089.3.camel@mtksdaap41> Subject: Re: [PATCH v12 4/5] soc / drm: mediatek: Move routing control to mmsys device From: CK Hu To: Matthias Brugger CC: , Kate Stewart , Minghsiu Tsai , Andrew-CT Chen , , , , Richard Fontana , , , Collabora Kernel ML , , Weiyi Lu , , , mtk01761 , , , Daniel Vetter , , Seiya Wang , , Houlong Wei , , , , Matthias Brugger , Thomas Gleixner , "Mauro Carvalho Chehab" , Allison Randal , , Greg Kroah-Hartman , , , , , Enric Balletbo i Serra Date: Thu, 26 Mar 2020 22:51:17 +0800 In-Reply-To: References: <20200311165322.1594233-1-enric.balletbo@collabora.com> <20200311165322.1594233-5-enric.balletbo@collabora.com> <02290a21-7392-a2cf-576c-215091ec05e8@suse.com> <1585177534.26117.4.camel@mtksdaap41> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIE1hdHRoaWFzOg0KDQpPbiBUaHUsIDIwMjAtMDMtMjYgYXQgMTI6NTQgKzAxMDAsIE1hdHRo aWFzIEJydWdnZXIgd3JvdGU6DQo+IEhpIENLLA0KPiANCj4gT24gMjYvMDMvMjAyMCAwMDowNSwg Q0sgSHUgd3JvdGU6DQo+ID4gSGksIE1hdHRoaWFzOg0KPiA+IA0KPiA+IE9uIFdlZCwgMjAyMC0w My0yNSBhdCAxNzoxNiArMDEwMCwgTWF0dGhpYXMgQnJ1Z2dlciB3cm90ZToNCj4gPj4NCj4gPj4g T24gMTEvMDMvMjAyMCAxNzo1MywgRW5yaWMgQmFsbGV0Ym8gaSBTZXJyYSB3cm90ZToNCj4gPj4+ IFByb3ZpZGUgYSBtdGtfbW1zeXNfZGRwX2Nvbm5lY3QoKSBhbmQgbXRrX21tc3lzX2Rpc2Nvbm5l Y3QoKSBmdW5jdGlvbnMgdG8NCj4gPj4+IHJlcGxhY2UgbXRrX2RkcF9hZGRfY29tcF90b19wYXRo KCkgYW5kIG10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKCkuDQo+ID4+PiBUaG9zZSBmdW5j dGlvbnMgd2lsbCBhbGxvdyBEUk0gZHJpdmVyIGFuZCBvdGhlcnMgdG8gY29udHJvbCB0aGUgZGF0 YQ0KPiA+Pj4gcGF0aCByb3V0aW5nLg0KPiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IEVucmlj IEJhbGxldGJvIGkgU2VycmEgPGVucmljLmJhbGxldGJvQGNvbGxhYm9yYS5jb20+DQo+ID4+PiBS ZXZpZXdlZC1ieTogTWF0dGhpYXMgQnJ1Z2dlciA8bWF0dGhpYXMuYmdnQGdtYWlsLmNvbT4NCj4g Pj4+IFJldmlld2VkLWJ5OiBDSyBIdSA8Y2suaHVAbWVkaWF0ZWsuY29tPg0KPiA+Pj4gQWNrZWQt Ynk6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+DQo+ID4+DQo+ID4+IFRoaXMgcGF0Y2ggZG9l cyBub3QgYXBwbHkgYWdhaW5zdCB2NS42LXJjMS4NCj4gPj4gUGxlYXNlIHJlYmFzZSBhcyB0aGlz IGlzIGEgcXVpdGUgYmlnIHBhdGNoIGFuZCBpdCB3b24ndCBiZSBlYXN5IHRvIGRvIHRoYXQgYnkg aGFuZC4NCj4gPiANCj4gPiBJIHRoaW5rIHRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBbMV0gd2hpY2gg aGFzIGJlZW4gYWNrZWQgYnkgbWUgYW5kIEkgaGF2ZQ0KPiA+IG5vdCBwaWNrZWQgaXQuIFRoZSBz aW1wbGUgd2F5IGlzIHRoYXQgeW91IHBpY2sgWzFdIGZpcnN0IGFuZCB0aGVuIHBpY2sNCj4gPiB0 aGlzIHNlcmllcy4NCj4gPiANCj4gPiBbMV0gDQo+ID4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVs Lm9yZy9wYXRjaC8xMTQwNjIyNy8NCj4gPiANCj4gDQo+IFlvdSB3b3VsZCBuZWVkIHRvIHByb3Zp ZGUgYSBzdGFibGUgdGFnIGZvciBtZSB0aGF0IEkgY2FuIG1lcmdlIGludG8gbXkgdHJlZS4gWW91 DQo+IGNhbiBhbHNvIHRyeSB0byBtZXJnZSBteSBmb3ItbmV4dCBbMV0gd2hpY2ggaGFzIHRoZSBu ZXdlc3QgdmVyc2lvbiBmcm9tIEVucmljLg0KPiBJZiB5b3Ugc2VlIGFueSBtZXJnZSBjb25mbGlj dCwgdGhlbiB3ZSBoYXZlIHRvIGRvIHNvbWV0aGluZyBhYm91dCBpdCA6KQ0KPiANCj4gUmVnYXJk cywNCj4gTWF0dGhpYXMNCj4gDQo+IFsxXQ0KPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9z Y20vbGludXgva2VybmVsL2dpdC9tYXR0aGlhcy5iZ2cvbGludXguZ2l0L2xvZy8/aD1mb3ItbmV4 dA0KPiANCg0KWW91IGhhdmUgYXBwbGllZCB0aGlzIHNlcmllcywgc28gSSB3b3VsZCBub3QgYXBw bHkgb3RoZXIgcGF0Y2hlcyB3aGljaA0Kd291bGQgY29uZmxpY3Qgd2l0aCB0aGlzIHNlcmllcy4g QWZ0ZXIgdGhpcyBzZXJpZXMgbGFuZCBvbiBtYWluIHN0cmVhbQ0KKHdpc2ggaXQgaGFwcGVuIGlu IHRoaXMgbWVyZ2Ugd2luZG93KSwgSSB3b3VsZCByZWJhc2Ugb3RoZXIgcGF0Y2ggb24NCm1haW4g c3RyZWFtLg0KDQpSZWdhcmRzLA0KQ0sNCg0KPiA+IFJlZ2FyZHMsDQo+ID4gQ0sNCj4gPiANCj4g Pj4NCj4gPj4gUmVnYXJkcywNCj4gPj4gTWF0dGhpYXMNCj4gPj4NCj4gPj4+IC0tLQ0KPiA+Pj4N Cj4gPj4+IENoYW5nZXMgaW4gdjEyOiBOb25lDQo+ID4+PiBDaGFuZ2VzIGluIHYxMDoNCj4gPj4+ IC0gU2VsZWN0IENPTkZJR19NVEtfTU1TWVMgKENLKQ0KPiA+Pj4gLSBQYXNzIGRldmljZSBwb2lu dGVyIG9mIG1tc3lzIGRldmljZSBpbnN0ZWFkIG9mIGNvbmZpZyByZWdzIChDSykNCj4gPj4+DQo+ ID4+PiBDaGFuZ2VzIGluIHY5Og0KPiA+Pj4gLSBJbnRyb2R1Y2VkIGEgbmV3IHBhdGNoIHRvIG1v dmUgcm91dGluZyBjb250cm9sIGludG8gbW1zeXMgZHJpdmVyLg0KPiA+Pj4gLSBSZW1vdmVkIHRo ZSBwYXRjaCB0byB1c2UgcmVnbWFwIGFzIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4NCj4gPj4+DQo+ ID4+PiBDaGFuZ2VzIGluIHY4OiBOb25lDQo+ID4+PiBDaGFuZ2VzIGluIHY3OiBOb25lDQo+ID4+ Pg0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9LY29uZmlnICAgICAgICB8ICAgMSAr DQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jIHwgIDE5ICst DQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMgIHwgMjU2IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9kZHAuaCAgfCAgIDcgLQ0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5jICB8ICAxNCArLQ0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5oICB8ICAgMiArLQ0KPiA+Pj4gIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5 cy5jICAgICAgICB8IDI3OSArKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+ICBpbmNsdWRl L2xpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaCAgfCAgMjAgKysNCj4gPj4+ICA4IGZpbGVz IGNoYW5nZWQsIDMxNiBpbnNlcnRpb25zKCspLCAyODIgZGVsZXRpb25zKC0pDQo+ID4+PiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210ay1tbXN5cy5oDQo+ ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9LY29uZmln IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL0tjb25maWcNCj4gPj4+IGluZGV4IGZhNWZmYzRm ZTgyMy4uYzQyMGY1YTNkMzNiIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL0tjb25maWcNCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9LY29u ZmlnDQo+ID4+PiBAQCAtMTEsNiArMTEsNyBAQCBjb25maWcgRFJNX01FRElBVEVLDQo+ID4+PiAg CXNlbGVjdCBEUk1fTUlQSV9EU0kNCj4gPj4+ICAJc2VsZWN0IERSTV9QQU5FTA0KPiA+Pj4gIAlz ZWxlY3QgTUVNT1JZDQo+ID4+PiArCXNlbGVjdCBNVEtfTU1TWVMNCj4gPj4+ICAJc2VsZWN0IE1U S19TTUkNCj4gPj4+ICAJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTDQo+ID4+PiAgCWhlbHANCj4g Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMNCj4gPj4+IGluZGV4IDBl MDU2ODNkN2I1My4uNTc5YTVhNWQ0NDcyIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jDQo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMNCj4gPj4+IEBAIC02LDYgKzYsNyBAQA0KPiA+Pj4gICNp bmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPj4+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o Pg0KPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9zb2MvbWVkaWF0ZWsvbXRrLWNtZHEuaD4NCj4gPj4+ ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1tbXN5cy5oPg0KPiA+Pj4gIA0KPiA+ Pj4gICNpbmNsdWRlIDxhc20vYmFycmllci5oPg0KPiA+Pj4gICNpbmNsdWRlIDxzb2MvbWVkaWF0 ZWsvc21pLmg+DQo+ID4+PiBAQCAtMjgsNyArMjksNyBAQA0KPiA+Pj4gICAqIEBlbmFibGVkOiBy ZWNvcmRzIHdoZXRoZXIgY3J0Y19lbmFibGUgc3VjY2VlZGVkDQo+ID4+PiAgICogQHBsYW5lczog YXJyYXkgb2YgNCBkcm1fcGxhbmUgc3RydWN0dXJlcywgb25lIGZvciBlYWNoIG92ZXJsYXkgcGxh bmUNCj4gPj4+ICAgKiBAcGVuZGluZ19wbGFuZXM6IHdoZXRoZXIgYW55IHBsYW5lIGhhcyBwZW5k aW5nIGNoYW5nZXMgdG8gYmUgYXBwbGllZA0KPiA+Pj4gLSAqIEBjb25maWdfcmVnczogbWVtb3J5 IG1hcHBlZCBtbXN5cyBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIHNwYWNlDQo+ID4+PiArICogQG1t c3lzX2RldjogcG9pbnRlciB0byB0aGUgbW1zeXMgZGV2aWNlIGZvciBjb25maWd1cmF0aW9uIHJl Z2lzdGVycw0KPiA+Pj4gICAqIEBtdXRleDogaGFuZGxlIHRvIG9uZSBvZiB0aGUgdGVuIGRpc3Bf bXV0ZXggc3RyZWFtcw0KPiA+Pj4gICAqIEBkZHBfY29tcF9ucjogbnVtYmVyIG9mIGNvbXBvbmVu dHMgaW4gZGRwX2NvbXANCj4gPj4+ICAgKiBAZGRwX2NvbXA6IGFycmF5IG9mIHBvaW50ZXJzIHRo ZSBtdGtfZGRwX2NvbXAgc3RydWN0dXJlcyB1c2VkIGJ5IHRoaXMgY3J0Yw0KPiA+Pj4gQEAgLTUw LDcgKzUxLDcgQEAgc3RydWN0IG10a19kcm1fY3J0YyB7DQo+ID4+PiAgCXUzMgkJCQljbWRxX2V2 ZW50Ow0KPiA+Pj4gICNlbmRpZg0KPiA+Pj4gIA0KPiA+Pj4gLQl2b2lkIF9faW9tZW0JCQkqY29u ZmlnX3JlZ3M7DQo+ID4+PiArCXN0cnVjdCBkZXZpY2UJCQkqbW1zeXNfZGV2Ow0KPiA+Pj4gIAlz dHJ1Y3QgbXRrX2Rpc3BfbXV0ZXgJCSptdXRleDsNCj4gPj4+ICAJdW5zaWduZWQgaW50CQkJZGRw X2NvbXBfbnI7DQo+ID4+PiAgCXN0cnVjdCBtdGtfZGRwX2NvbXAJCSoqZGRwX2NvbXA7DQo+ID4+ PiBAQCAtMjk2LDkgKzI5Nyw5IEBAIHN0YXRpYyBpbnQgbXRrX2NydGNfZGRwX2h3X2luaXQoc3Ry dWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMpDQo+ID4+PiAgCX0NCj4gPj4+ICANCj4gPj4+ICAJ Zm9yIChpID0gMDsgaSA8IG10a19jcnRjLT5kZHBfY29tcF9uciAtIDE7IGkrKykgew0KPiA+Pj4g LQkJbXRrX2RkcF9hZGRfY29tcF90b19wYXRoKG10a19jcnRjLT5jb25maWdfcmVncywNCj4gPj4+ IC0JCQkJCSBtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0tPmlkLA0KPiA+Pj4gLQkJCQkJIG10a19jcnRj LT5kZHBfY29tcFtpICsgMV0tPmlkKTsNCj4gPj4+ICsJCW10a19tbXN5c19kZHBfY29ubmVjdCht dGtfY3J0Yy0+bW1zeXNfZGV2LA0KPiA+Pj4gKwkJCQkgICAgICBtdGtfY3J0Yy0+ZGRwX2NvbXBb aV0tPmlkLA0KPiA+Pj4gKwkJCQkgICAgICBtdGtfY3J0Yy0+ZGRwX2NvbXBbaSArIDFdLT5pZCk7 DQo+ID4+PiAgCQltdGtfZGlzcF9tdXRleF9hZGRfY29tcChtdGtfY3J0Yy0+bXV0ZXgsDQo+ID4+ PiAgCQkJCQltdGtfY3J0Yy0+ZGRwX2NvbXBbaV0tPmlkKTsNCj4gPj4+ICAJfQ0KPiA+Pj4gQEAg LTM1NSw5ICszNTYsOSBAQCBzdGF0aWMgdm9pZCBtdGtfY3J0Y19kZHBfaHdfZmluaShzdHJ1Y3Qg bXRrX2RybV9jcnRjICptdGtfY3J0YykNCj4gPj4+ICAJCQkJCSAgIG10a19jcnRjLT5kZHBfY29t cFtpXS0+aWQpOw0KPiA+Pj4gIAltdGtfZGlzcF9tdXRleF9kaXNhYmxlKG10a19jcnRjLT5tdXRl eCk7DQo+ID4+PiAgCWZvciAoaSA9IDA7IGkgPCBtdGtfY3J0Yy0+ZGRwX2NvbXBfbnIgLSAxOyBp KyspIHsNCj4gPj4+IC0JCW10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKG10a19jcnRjLT5j b25maWdfcmVncywNCj4gPj4+IC0JCQkJCSAgICAgIG10a19jcnRjLT5kZHBfY29tcFtpXS0+aWQs DQo+ID4+PiAtCQkJCQkgICAgICBtdGtfY3J0Yy0+ZGRwX2NvbXBbaSArIDFdLT5pZCk7DQo+ID4+ PiArCQltdGtfbW1zeXNfZGRwX2Rpc2Nvbm5lY3QobXRrX2NydGMtPm1tc3lzX2RldiwNCj4gPj4+ ICsJCQkJCSBtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0tPmlkLA0KPiA+Pj4gKwkJCQkJIG10a19jcnRj LT5kZHBfY29tcFtpICsgMV0tPmlkKTsNCj4gPj4+ICAJCW10a19kaXNwX211dGV4X3JlbW92ZV9j b21wKG10a19jcnRjLT5tdXRleCwNCj4gPj4+ICAJCQkJCSAgIG10a19jcnRjLT5kZHBfY29tcFtp XS0+aWQpOw0KPiA+Pj4gIAl9DQo+ID4+PiBAQCAtNzYxLDcgKzc2Miw3IEBAIGludCBtdGtfZHJt X2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LA0KPiA+Pj4gIAlpZiAoIW10 a19jcnRjKQ0KPiA+Pj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+ID4+PiAgDQo+ID4+PiAtCW10a19j cnRjLT5jb25maWdfcmVncyA9IHByaXYtPmNvbmZpZ19yZWdzOw0KPiA+Pj4gKwltdGtfY3J0Yy0+ bW1zeXNfZGV2ID0gcHJpdi0+bW1zeXNfZGV2Ow0KPiA+Pj4gIAltdGtfY3J0Yy0+ZGRwX2NvbXBf bnIgPSBwYXRoX2xlbjsNCj4gPj4+ICAJbXRrX2NydGMtPmRkcF9jb21wID0gZGV2bV9rbWFsbG9j X2FycmF5KGRldiwgbXRrX2NydGMtPmRkcF9jb21wX25yLA0KPiA+Pj4gIAkJCQkJCXNpemVvZigq bXRrX2NydGMtPmRkcF9jb21wKSwNCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2RkcC5jDQo+ID4+PiBpbmRleCBiODg1ZjYwZjQ3NGMuLjAxNGMxYmJlMWRmMiAxMDA2NDQNCj4g Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5jDQo+ID4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuYw0KPiA+Pj4gQEAgLTEz LDI2ICsxMyw2IEBADQo+ID4+PiAgI2luY2x1ZGUgIm10a19kcm1fZGRwLmgiDQo+ID4+PiAgI2lu Y2x1ZGUgIm10a19kcm1fZGRwX2NvbXAuaCINCj4gPj4+ICANCj4gPj4+IC0jZGVmaW5lIERJU1Bf UkVHX0NPTkZJR19ESVNQX09WTDBfTU9VVF9FTgkweDA0MA0KPiA+Pj4gLSNkZWZpbmUgRElTUF9S RUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOCTB4MDQ0DQo+ID4+PiAtI2RlZmluZSBESVNQX1JF R19DT05GSUdfRElTUF9PRF9NT1VUX0VOCQkweDA0OA0KPiA+Pj4gLSNkZWZpbmUgRElTUF9SRUdf Q09ORklHX0RJU1BfR0FNTUFfTU9VVF9FTgkweDA0Yw0KPiA+Pj4gLSNkZWZpbmUgRElTUF9SRUdf Q09ORklHX0RJU1BfVUZPRV9NT1VUX0VOCTB4MDUwDQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19D T05GSUdfRElTUF9DT0xPUjBfU0VMX0lOCTB4MDg0DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19D T05GSUdfRElTUF9DT0xPUjFfU0VMX0lOCTB4MDg4DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19D T05GSUdfRFNJRV9TRUxfSU4JCTB4MGE0DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdf RFNJT19TRUxfSU4JCTB4MGE4DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFBJX1NF TF9JTgkJMHgwYWMNCj4gPj4+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NP VVQJCTB4MGI4DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VU X0VOCTB4MGM0DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VU X0VOCTB4MGM4DQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfTU1TWVNfQ0dfQ09OMAkJ MHgxMDANCj4gPj4+IC0NCj4gPj4+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX09WTF9N T1VUX0VOCTB4MDMwDQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfT1VUX1NFTAkJCTB4 MDRjDQo+ID4+PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFNJX1NFTAkJCTB4MDUwDQo+ID4+ PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFBJX1NFTAkJCTB4MDY0DQo+ID4+PiAtDQo+ID4+ PiAgI2RlZmluZSBNVDI3MDFfRElTUF9NVVRFWDBfTU9EMAkJCTB4MmMNCj4gPj4+ICAjZGVmaW5l IE1UMjcwMV9ESVNQX01VVEVYMF9TT0YwCQkJMHgzMA0KPiA+Pj4gIA0KPiA+Pj4gQEAgLTk0LDQ4 ICs3NCw2IEBADQo+ID4+PiAgI2RlZmluZSBNVVRFWF9TT0ZfRFNJMgkJCTUNCj4gPj4+ICAjZGVm aW5lIE1VVEVYX1NPRl9EU0kzCQkJNg0KPiA+Pj4gIA0KPiA+Pj4gLSNkZWZpbmUgT1ZMMF9NT1VU X0VOX0NPTE9SMAkJMHgxDQo+ID4+PiAtI2RlZmluZSBPRF9NT1VUX0VOX1JETUEwCQkweDENCj4g Pj4+IC0jZGVmaW5lIE9EMV9NT1VUX0VOX1JETUExCQlCSVQoMTYpDQo+ID4+PiAtI2RlZmluZSBV Rk9FX01PVVRfRU5fRFNJMAkJMHgxDQo+ID4+PiAtI2RlZmluZSBDT0xPUjBfU0VMX0lOX09WTDAJ CTB4MQ0KPiA+Pj4gLSNkZWZpbmUgT1ZMMV9NT1VUX0VOX0NPTE9SMQkJMHgxDQo+ID4+PiAtI2Rl ZmluZSBHQU1NQV9NT1VUX0VOX1JETUExCQkweDENCj4gPj4+IC0jZGVmaW5lIFJETUEwX1NPVVRf RFBJMAkJCTB4Mg0KPiA+Pj4gLSNkZWZpbmUgUkRNQTBfU09VVF9EUEkxCQkJMHgzDQo+ID4+PiAt I2RlZmluZSBSRE1BMF9TT1VUX0RTSTEJCQkweDENCj4gPj4+IC0jZGVmaW5lIFJETUEwX1NPVVRf RFNJMgkJCTB4NA0KPiA+Pj4gLSNkZWZpbmUgUkRNQTBfU09VVF9EU0kzCQkJMHg1DQo+ID4+PiAt I2RlZmluZSBSRE1BMV9TT1VUX0RQSTAJCQkweDINCj4gPj4+IC0jZGVmaW5lIFJETUExX1NPVVRf RFBJMQkJCTB4Mw0KPiA+Pj4gLSNkZWZpbmUgUkRNQTFfU09VVF9EU0kxCQkJMHgxDQo+ID4+PiAt I2RlZmluZSBSRE1BMV9TT1VUX0RTSTIJCQkweDQNCj4gPj4+IC0jZGVmaW5lIFJETUExX1NPVVRf RFNJMwkJCTB4NQ0KPiA+Pj4gLSNkZWZpbmUgUkRNQTJfU09VVF9EUEkwCQkJMHgyDQo+ID4+PiAt I2RlZmluZSBSRE1BMl9TT1VUX0RQSTEJCQkweDMNCj4gPj4+IC0jZGVmaW5lIFJETUEyX1NPVVRf RFNJMQkJCTB4MQ0KPiA+Pj4gLSNkZWZpbmUgUkRNQTJfU09VVF9EU0kyCQkJMHg0DQo+ID4+PiAt I2RlZmluZSBSRE1BMl9TT1VUX0RTSTMJCQkweDUNCj4gPj4+IC0jZGVmaW5lIERQSTBfU0VMX0lO X1JETUExCQkweDENCj4gPj4+IC0jZGVmaW5lIERQSTBfU0VMX0lOX1JETUEyCQkweDMNCj4gPj4+ IC0jZGVmaW5lIERQSTFfU0VMX0lOX1JETUExCQkoMHgxIDw8IDgpDQo+ID4+PiAtI2RlZmluZSBE UEkxX1NFTF9JTl9SRE1BMgkJKDB4MyA8PCA4KQ0KPiA+Pj4gLSNkZWZpbmUgRFNJMF9TRUxfSU5f UkRNQTEJCTB4MQ0KPiA+Pj4gLSNkZWZpbmUgRFNJMF9TRUxfSU5fUkRNQTIJCTB4NA0KPiA+Pj4g LSNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTEJCTB4MQ0KPiA+Pj4gLSNkZWZpbmUgRFNJMV9TRUxf SU5fUkRNQTIJCTB4NA0KPiA+Pj4gLSNkZWZpbmUgRFNJMl9TRUxfSU5fUkRNQTEJCSgweDEgPDwg MTYpDQo+ID4+PiAtI2RlZmluZSBEU0kyX1NFTF9JTl9SRE1BMgkJKDB4NCA8PCAxNikNCj4gPj4+ IC0jZGVmaW5lIERTSTNfU0VMX0lOX1JETUExCQkoMHgxIDw8IDE2KQ0KPiA+Pj4gLSNkZWZpbmUg RFNJM19TRUxfSU5fUkRNQTIJCSgweDQgPDwgMTYpDQo+ID4+PiAtI2RlZmluZSBDT0xPUjFfU0VM X0lOX09WTDEJCTB4MQ0KPiA+Pj4gLQ0KPiA+Pj4gLSNkZWZpbmUgT1ZMX01PVVRfRU5fUkRNQQkJ MHgxDQo+ID4+PiAtI2RlZmluZSBCTFNfVE9fRFNJX1JETUExX1RPX0RQSTEJMHg4DQo+ID4+PiAt I2RlZmluZSBCTFNfVE9fRFBJX1JETUExX1RPX0RTSQkJMHgyDQo+ID4+PiAtI2RlZmluZSBEU0lf U0VMX0lOX0JMUwkJCTB4MA0KPiA+Pj4gLSNkZWZpbmUgRFBJX1NFTF9JTl9CTFMJCQkweDANCj4g Pj4+IC0jZGVmaW5lIERTSV9TRUxfSU5fUkRNQQkJCTB4MQ0KPiA+Pj4gIA0KPiA+Pj4gIHN0cnVj dCBtdGtfZGlzcF9tdXRleCB7DQo+ID4+PiAgCWludCBpZDsNCj4gPj4+IEBAIC0yNDYsMjAwICsx ODQsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfZGF0YSBtdDgxNzNfZGRwX2RyaXZl cl9kYXRhID0gew0KPiA+Pj4gIAkubXV0ZXhfc29mX3JlZyA9IE1UMjcwMV9ESVNQX01VVEVYMF9T T0YwLA0KPiA+Pj4gIH07DQo+ID4+PiAgDQo+ID4+PiAtc3RhdGljIHVuc2lnbmVkIGludCBtdGtf ZGRwX21vdXRfZW4oZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+Pj4gLQkJCQkgICAgZW51 bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCwNCj4gPj4+IC0JCQkJICAgIHVuc2lnbmVkIGludCAqYWRk cikNCj4gPj4+IC17DQo+ID4+PiAtCXVuc2lnbmVkIGludCB2YWx1ZTsNCj4gPj4+IC0NCj4gPj4+ IC0JaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX09WTDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5U X0NPTE9SMCkgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PVkwwX01P VVRfRU47DQo+ID4+PiAtCQl2YWx1ZSA9IE9WTDBfTU9VVF9FTl9DT0xPUjA7DQo+ID4+PiAtCX0g ZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfUkRNQTApIHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMX01P VVRfRU47DQo+ID4+PiAtCQl2YWx1ZSA9IE9WTF9NT1VUX0VOX1JETUE7DQo+ID4+PiAtCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT0QwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9S RE1BMCkgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PRF9NT1VUX0VO Ow0KPiA+Pj4gLQkJdmFsdWUgPSBPRF9NT1VUX0VOX1JETUEwOw0KPiA+Pj4gLQl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX1VGT0UgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTAp IHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfVUZPRV9NT1VUX0VOOw0K PiA+Pj4gLQkJdmFsdWUgPSBVRk9FX01PVVRfRU5fRFNJMDsNCj4gPj4+IC0JfSBlbHNlIGlmIChj dXIgPT0gRERQX0NPTVBPTkVOVF9PVkwxICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9DT0xPUjEp IHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOOw0K PiA+Pj4gLQkJdmFsdWUgPSBPVkwxX01PVVRfRU5fQ09MT1IxOw0KPiA+Pj4gLQl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX0dBTU1BICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1B MSkgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VO Ow0KPiA+Pj4gLQkJdmFsdWUgPSBHQU1NQV9NT1VUX0VOX1JETUExOw0KPiA+Pj4gLQl9IGVsc2Ug aWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX09EMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfUkRN QTEpIHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT0RfTU9VVF9FTjsN Cj4gPj4+IC0JCXZhbHVlID0gT0QxX01PVVRfRU5fUkRNQTE7DQo+ID4+PiAtCX0gZWxzZSBpZiAo Y3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTAp IHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsN Cj4gPj4+IC0JCXZhbHVlID0gUkRNQTBfU09VVF9EUEkwOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7 DQo+ID4+PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQo+ ID4+PiAtCQl2YWx1ZSA9IFJETUEwX1NPVVRfRFBJMTsNCj4gPj4+IC0JfSBlbHNlIGlmIChjdXIg PT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0K PiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VUX0VOOw0KPiA+ Pj4gLQkJdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTE7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09 IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4g Pj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPj4+ IC0JCXZhbHVlID0gUkRNQTBfU09VVF9EU0kyOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBE RFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4+ PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQo+ID4+PiAt CQl2YWx1ZSA9IFJETUEwX1NPVVRfRFNJMzsNCj4gPj4+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQ X0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KPiA+Pj4g LQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+Pj4gLQkJ dmFsdWUgPSBSRE1BMV9TT1VUX0RTSTE7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPj4+IC0J CSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPj4+IC0JCXZh bHVlID0gUkRNQTFfU09VVF9EU0kyOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09N UE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4+PiAtCQkq YWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQo+ID4+PiAtCQl2YWx1 ZSA9IFJETUExX1NPVVRfRFNJMzsNCj4gPj4+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBP TkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KPiA+Pj4gLQkJKmFk ZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+Pj4gLQkJdmFsdWUg PSBSRE1BMV9TT1VUX0RQSTA7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTEpIHsNCj4gPj4+IC0JCSphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPj4+IC0JCXZhbHVlID0g UkRNQTFfU09VVF9EUEkxOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4+PiAtCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQ7DQo+ID4+PiAtCQl2YWx1ZSA9IFJETUEy X1NPVVRfRFBJMDsNCj4gPj4+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1B MiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQ X1JFR19DT05GSUdfRElTUF9SRE1BMl9TT1VUOw0KPiA+Pj4gLQkJdmFsdWUgPSBSRE1BMl9TT1VU X0RQSTE7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYg bmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTEpIHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdf Q09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPj4+IC0JCXZhbHVlID0gUkRNQTJfU09VVF9EU0kx Ow0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4+PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19ESVNQX1JETUEyX1NPVVQ7DQo+ID4+PiAtCQl2YWx1ZSA9IFJETUEyX1NPVVRfRFNJMjsNCj4g Pj4+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IERE UF9DT01QT05FTlRfRFNJMykgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElT UF9SRE1BMl9TT1VUOw0KPiA+Pj4gLQkJdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTM7DQo+ID4+PiAt CX0gZWxzZSB7DQo+ID4+PiAtCQl2YWx1ZSA9IDA7DQo+ID4+PiAtCX0NCj4gPj4+IC0NCj4gPj4+ IC0JcmV0dXJuIHZhbHVlOw0KPiA+Pj4gLX0NCj4gPj4+IC0NCj4gPj4+IC1zdGF0aWMgdW5zaWdu ZWQgaW50IG10a19kZHBfc2VsX2luKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPj4+IC0J CQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCwNCj4gPj4+IC0JCQkJICAgdW5zaWduZWQg aW50ICphZGRyKQ0KPiA+Pj4gLXsNCj4gPj4+IC0JdW5zaWduZWQgaW50IHZhbHVlOw0KPiA+Pj4g LQ0KPiA+Pj4gLQlpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfQ09MT1IwKSB7DQo+ID4+PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQ X0NPTE9SMF9TRUxfSU47DQo+ID4+PiAtCQl2YWx1ZSA9IENPTE9SMF9TRUxfSU5fT1ZMMDsNCj4g Pj4+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IERE UF9DT01QT05FTlRfRFBJMCkgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJ X1NFTF9JTjsNCj4gPj4+IC0JCXZhbHVlID0gRFBJMF9TRUxfSU5fUkRNQTE7DQo+ID4+PiAtCX0g ZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9O RU5UX0RQSTEpIHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47 DQo+ID4+PiAtCQl2YWx1ZSA9IERQSTFfU0VMX0lOX1JETUExOw0KPiA+Pj4gLQl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kw KSB7DQo+ID4+PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPj4+ IC0JCXZhbHVlID0gRFNJMF9TRUxfSU5fUkRNQTE7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09 IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTEpIHsNCj4g Pj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSU9fU0VMX0lOOw0KPiA+Pj4gLQkJdmFs dWUgPSBEU0kxX1NFTF9JTl9SRE1BMTsNCj4gPj4+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NP TVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0KPiA+Pj4gLQkJ KmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU47DQo+ID4+PiAtCQl2YWx1ZSA9IERT STJfU0VMX0lOX1JETUExOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4+PiAtCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTjsNCj4gPj4+IC0JCXZhbHVlID0gRFNJM19TRUxf SU5fUkRNQTE7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIg JiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9S RUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4+PiAtCQl2YWx1ZSA9IERQSTBfU0VMX0lOX1JETUEy Ow0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4+PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19EUElfU0VMX0lOOw0KPiA+Pj4gLQkJdmFsdWUgPSBEUEkxX1NFTF9JTl9SRE1BMjsNCj4gPj4+ IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfRFNJMCkgew0KPiA+Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9T RUxfSU47DQo+ID4+PiAtCQl2YWx1ZSA9IERTSTBfU0VMX0lOX1JETUEyOw0KPiA+Pj4gLQl9IGVs c2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVO VF9EU0kxKSB7DQo+ID4+PiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTjsN Cj4gPj4+IC0JCXZhbHVlID0gRFNJMV9TRUxfSU5fUkRNQTI7DQo+ID4+PiAtCX0gZWxzZSBpZiAo Y3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIp IHsNCj4gPj4+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KPiA+Pj4g LQkJdmFsdWUgPSBEU0kyX1NFTF9JTl9SRE1BMjsNCj4gPj4+IC0JfSBlbHNlIGlmIChjdXIgPT0g RERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMykgew0KPiA+ Pj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU47DQo+ID4+PiAtCQl2YWx1 ZSA9IERTSTNfU0VMX0lOX1JETUEyOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09N UE9ORU5UX09WTDEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMSkgew0KPiA+Pj4gLQkJ KmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xPUjFfU0VMX0lOOw0KPiA+Pj4gLQkJdmFs dWUgPSBDT0xPUjFfU0VMX0lOX09WTDE7DQo+ID4+PiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ID4+PiAtCQkq YWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lfU0VMOw0KPiA+Pj4gLQkJdmFsdWUgPSBEU0lfU0VM X0lOX0JMUzsNCj4gPj4+IC0JfSBlbHNlIHsNCj4gPj4+IC0JCXZhbHVlID0gMDsNCj4gPj4+IC0J fQ0KPiA+Pj4gLQ0KPiA+Pj4gLQlyZXR1cm4gdmFsdWU7DQo+ID4+PiAtfQ0KPiA+Pj4gLQ0KPiA+ Pj4gLXN0YXRpYyB2b2lkIG10a19kZHBfc291dF9zZWwodm9pZCBfX2lvbWVtICpjb25maWdfcmVn cywNCj4gPj4+IC0JCQkgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPj4+IC0JCQkg ICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpDQo+ID4+PiAtew0KPiA+Pj4gLQlpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ ID4+PiAtCQl3cml0ZWxfcmVsYXhlZChCTFNfVE9fRFNJX1JETUExX1RPX0RQSTEsDQo+ID4+PiAt CQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX09VVF9TRUwpOw0KPiA+Pj4g LQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0JMUyAmJiBuZXh0ID09IEREUF9DT01Q T05FTlRfRFBJMCkgew0KPiA+Pj4gLQkJd3JpdGVsX3JlbGF4ZWQoQkxTX1RPX0RQSV9SRE1BMV9U T19EU0ksDQo+ID4+PiAtCQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX09V VF9TRUwpOw0KPiA+Pj4gLQkJd3JpdGVsX3JlbGF4ZWQoRFNJX1NFTF9JTl9SRE1BLA0KPiA+Pj4g LQkJCSAgICAgICBjb25maWdfcmVncyArIERJU1BfUkVHX0NPTkZJR19EU0lfU0VMKTsNCj4gPj4+ IC0JCXdyaXRlbF9yZWxheGVkKERQSV9TRUxfSU5fQkxTLA0KPiA+Pj4gLQkJCSAgICAgICBjb25m aWdfcmVncyArIERJU1BfUkVHX0NPTkZJR19EUElfU0VMKTsNCj4gPj4+IC0JfQ0KPiA+Pj4gLX0N Cj4gPj4+IC0NCj4gPj4+IC12b2lkIG10a19kZHBfYWRkX2NvbXBfdG9fcGF0aCh2b2lkIF9faW9t ZW0gKmNvbmZpZ19yZWdzLA0KPiA+Pj4gLQkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1 ciwNCj4gPj4+IC0JCQkgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KQ0KPiA+Pj4gLXsN Cj4gPj4+IC0JdW5zaWduZWQgaW50IGFkZHIsIHZhbHVlLCByZWc7DQo+ID4+PiAtDQo+ID4+PiAt CXZhbHVlID0gbXRrX2RkcF9tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOw0KPiA+Pj4gLQlpZiAo dmFsdWUpIHsNCj4gPj4+IC0JCXJlZyA9IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3MgKyBhZGRy KSB8IHZhbHVlOw0KPiA+Pj4gLQkJd3JpdGVsX3JlbGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFk ZHIpOw0KPiA+Pj4gLQl9DQo+ID4+PiAtDQo+ID4+PiAtCW10a19kZHBfc291dF9zZWwoY29uZmln X3JlZ3MsIGN1ciwgbmV4dCk7DQo+ID4+PiAtDQo+ID4+PiAtCXZhbHVlID0gbXRrX2RkcF9zZWxf aW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+ID4+PiAtCWlmICh2YWx1ZSkgew0KPiA+Pj4gLQkJcmVn ID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpIHwgdmFsdWU7DQo+ID4+PiAtCQl3 cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdzICsgYWRkcik7DQo+ID4+PiAtCX0NCj4gPj4+ IC19DQo+ID4+PiAtDQo+ID4+PiAtdm9pZCBtdGtfZGRwX3JlbW92ZV9jb21wX2Zyb21fcGF0aCh2 b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiA+Pj4gLQkJCQkgICBlbnVtIG10a19kZHBfY29t cF9pZCBjdXIsDQo+ID4+PiAtCQkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpDQo+ID4+ PiAtew0KPiA+Pj4gLQl1bnNpZ25lZCBpbnQgYWRkciwgdmFsdWUsIHJlZzsNCj4gPj4+IC0NCj4g Pj4+IC0JdmFsdWUgPSBtdGtfZGRwX21vdXRfZW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+ID4+PiAt CWlmICh2YWx1ZSkgew0KPiA+Pj4gLQkJcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyAr IGFkZHIpICYgfnZhbHVlOw0KPiA+Pj4gLQkJd3JpdGVsX3JlbGF4ZWQocmVnLCBjb25maWdfcmVn cyArIGFkZHIpOw0KPiA+Pj4gLQl9DQo+ID4+PiAtDQo+ID4+PiAtCXZhbHVlID0gbXRrX2RkcF9z ZWxfaW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+ID4+PiAtCWlmICh2YWx1ZSkgew0KPiA+Pj4gLQkJ cmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpICYgfnZhbHVlOw0KPiA+Pj4g LQkJd3JpdGVsX3JlbGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFkZHIpOw0KPiA+Pj4gLQl9DQo+ ID4+PiAtfQ0KPiA+Pj4gLQ0KPiA+Pj4gIHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXRrX2Rpc3Bf bXV0ZXhfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKQ0KPiA+Pj4gIHsN Cj4gPj4+ICAJc3RydWN0IG10a19kZHAgKmRkcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgNCj4gPj4+IGluZGV4IDgyN2Jl NDI0YTE0OC4uNmI2OTFhNTdiZTRhIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZGRwLmgNCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2RkcC5oDQo+ID4+PiBAQCAtMTIsMTMgKzEyLDYgQEAgc3RydWN0IHJlZ21h cDsNCj4gPj4+ICBzdHJ1Y3QgZGV2aWNlOw0KPiA+Pj4gIHN0cnVjdCBtdGtfZGlzcF9tdXRleDsN Cj4gPj4+ICANCj4gPj4+IC12b2lkIG10a19kZHBfYWRkX2NvbXBfdG9fcGF0aCh2b2lkIF9faW9t ZW0gKmNvbmZpZ19yZWdzLA0KPiA+Pj4gLQkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1 ciwNCj4gPj4+IC0JCQkgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KTsNCj4gPj4+IC12 b2lkIG10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKHZvaWQgX19pb21lbSAqY29uZmlnX3Jl Z3MsDQo+ID4+PiAtCQkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPj4+IC0JCQkJ ICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCk7DQo+ID4+PiAtDQo+ID4+PiAgc3RydWN0IG10 a19kaXNwX211dGV4ICptdGtfZGlzcF9tdXRleF9nZXQoc3RydWN0IGRldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgaWQpOw0KPiA+Pj4gIGludCBtdGtfZGlzcF9tdXRleF9wcmVwYXJlKHN0cnVjdCBt dGtfZGlzcF9tdXRleCAqbXV0ZXgpOw0KPiA+Pj4gIHZvaWQgbXRrX2Rpc3BfbXV0ZXhfYWRkX2Nv bXAoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCwNCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5jDQo+ID4+PiBpbmRleCA4ZTJkM2NiNjJhZDUuLjIwOGY5YzUyNTZl ZiAxMDA2NDQNCj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5jDQo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYw0K PiA+Pj4gQEAgLTEwLDYgKzEwLDcgQEANCj4gPj4+ICAjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVz cy5oPg0KPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0KPiA+Pj4gICNpbmNs dWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+ID4+PiArI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRp YXRlay9tdGstbW1zeXMuaD4NCj4gPj4+ICAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4N Cj4gPj4+ICANCj4gPj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4gPj4+IEBAIC00 MjUsNyArNDI2LDYgQEAgc3RhdGljIGludCBtdGtfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ID4+PiAgew0KPiA+Pj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRl di0+ZGV2Ow0KPiA+Pj4gIAlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2YXRlOw0KPiA+Pj4g LQlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsNCj4gPj4+ICAJc3RydWN0IGRldmljZV9ub2RlICpub2Rl Ow0KPiA+Pj4gIAlzdHJ1Y3QgY29tcG9uZW50X21hdGNoICptYXRjaCA9IE5VTEw7DQo+ID4+PiAg CWludCByZXQ7DQo+ID4+PiBAQCAtNDM2LDE0ICs0MzYsMTAgQEAgc3RhdGljIGludCBtdGtfZHJt X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4+PiAgCQlyZXR1cm4gLUVO T01FTTsNCj4gPj4+ICANCj4gPj4+ICAJcHJpdmF0ZS0+ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0 Y2hfZGF0YShkZXYpOw0KPiA+Pj4gLQ0KPiA+Pj4gLQltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3Vy Y2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KPiA+Pj4gLQlwcml2YXRlLT5jb25maWdfcmVn cyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7DQo+ID4+PiAtCWlmIChJU19FUlIo cHJpdmF0ZS0+Y29uZmlnX3JlZ3MpKSB7DQo+ID4+PiAtCQlyZXQgPSBQVFJfRVJSKHByaXZhdGUt PmNvbmZpZ19yZWdzKTsNCj4gPj4+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGlvcmVtYXAg bW1zeXMtY29uZmlnIHJlc291cmNlOiAlZFxuIiwNCj4gPj4+IC0JCQlyZXQpOw0KPiA+Pj4gLQkJ cmV0dXJuIHJldDsNCj4gPj4+ICsJcHJpdmF0ZS0+bW1zeXNfZGV2ID0gZGV2LT5wYXJlbnQ7DQo+ ID4+PiArCWlmICghcHJpdmF0ZS0+bW1zeXNfZGV2KSB7DQo+ID4+PiArCQlkZXZfZXJyKGRldiwg IkZhaWxlZCB0byBnZXQgTU1TWVMgZGV2aWNlXG4iKTsNCj4gPj4+ICsJCXJldHVybiAtRU5PREVW Ow0KPiA+Pj4gIAl9DQo+ID4+PiAgDQo+ID4+PiAgCS8qIEl0ZXJhdGUgb3ZlciBzaWJsaW5nIERJ U1AgZnVuY3Rpb24gYmxvY2tzICovDQo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuaA0KPiA+Pj4gaW5kZXggMTdiYzk5YjlmNWQ0Li5iNWJlNjNlNTMxNzYgMTAwNjQ0DQo+ ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaA0KPiA+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgNCj4gPj4+IEBAIC0z OSw3ICszOSw3IEBAIHN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgew0KPiA+Pj4gIA0KPiA+Pj4gIAlz dHJ1Y3QgZGV2aWNlX25vZGUgKm11dGV4X25vZGU7DQo+ID4+PiAgCXN0cnVjdCBkZXZpY2UgKm11 dGV4X2RldjsNCj4gPj4+IC0Jdm9pZCBfX2lvbWVtICpjb25maWdfcmVnczsNCj4gPj4+ICsJc3Ry dWN0IGRldmljZSAqbW1zeXNfZGV2Ow0KPiA+Pj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNvbXBf bm9kZVtERFBfQ09NUE9ORU5UX0lEX01BWF07DQo+ID4+PiAgCXN0cnVjdCBtdGtfZGRwX2NvbXAg KmRkcF9jb21wW0REUF9DT01QT05FTlRfSURfTUFYXTsNCj4gPj4+ICAJY29uc3Qgc3RydWN0IG10 a19tbXN5c19kcml2ZXJfZGF0YSAqZGF0YTsNCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Nv Yy9tZWRpYXRlay9tdGstbW1zeXMuYyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5j DQo+ID4+PiBpbmRleCBkYmRmZWRkMzAyZmEuLjRiMjg2YjUyNWNkMyAxMDA2NDQNCj4gPj4+IC0t LSBhL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jDQo+ID4+PiArKysgYi9kcml2ZXJz L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYw0KPiA+Pj4gQEAgLTUsOCArNSw3NiBAQA0KPiA+Pj4g ICAqLw0KPiA+Pj4gIA0KPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4NCj4g Pj4+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4+PiAgI2luY2x1ZGUgPGxpbnV4L29m X2RldmljZS5oPg0KPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4g Pj4+ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1tbXN5cy5oPg0KPiA+Pj4gKw0K PiA+Pj4gKyNpbmNsdWRlICIuLi8uLi9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgiDQo+ ID4+PiArI2luY2x1ZGUgIi4uLy4uL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5o Ig0KPiA+Pj4gKw0KPiA+Pj4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMF9NT1VU X0VOCTB4MDQwDQo+ID4+PiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9PVkwxX01PVVRf RU4JMHgwNDQNCj4gPj4+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX09EX01PVVRfRU4J CTB4MDQ4DQo+ID4+PiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VO CTB4MDRjDQo+ID4+PiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9VRk9FX01PVVRfRU4J MHgwNTANCj4gPj4+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX0NPTE9SMF9TRUxfSU4J MHgwODQNCj4gPj4+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX0NPTE9SMV9TRUxfSU4J MHgwODgNCj4gPj4+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTgkJMHgwYTQN Cj4gPj4+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTgkJMHgwYTgNCj4gPj4+ ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lOCQkweDBhYw0KPiA+Pj4gKyNkZWZp bmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVAkJMHgwYjgNCj4gPj4+ICsjZGVmaW5l IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU4JMHgwYzQNCj4gPj4+ICsjZGVmaW5l IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU4JMHgwYzgNCj4gPj4+ICsjZGVmaW5l IERJU1BfUkVHX0NPTkZJR19NTVNZU19DR19DT04wCQkweDEwMA0KPiA+Pj4gKw0KPiA+Pj4gKyNk ZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMX01PVVRfRU4JMHgwMzANCj4gPj4+ICsjZGVm aW5lIERJU1BfUkVHX0NPTkZJR19PVVRfU0VMCQkJMHgwNGMNCj4gPj4+ICsjZGVmaW5lIERJU1Bf UkVHX0NPTkZJR19EU0lfU0VMCQkJMHgwNTANCj4gPj4+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJ R19EUElfU0VMCQkJMHgwNjQNCj4gPj4+ICsNCj4gPj4+ICsjZGVmaW5lIE9WTDBfTU9VVF9FTl9D T0xPUjAJCQkweDENCj4gPj4+ICsjZGVmaW5lIE9EX01PVVRfRU5fUkRNQTAJCQkweDENCj4gPj4+ ICsjZGVmaW5lIE9EMV9NT1VUX0VOX1JETUExCQkJQklUKDE2KQ0KPiA+Pj4gKyNkZWZpbmUgVUZP RV9NT1VUX0VOX0RTSTAJCQkweDENCj4gPj4+ICsjZGVmaW5lIENPTE9SMF9TRUxfSU5fT1ZMMAkJ CTB4MQ0KPiA+Pj4gKyNkZWZpbmUgT1ZMMV9NT1VUX0VOX0NPTE9SMQkJCTB4MQ0KPiA+Pj4gKyNk ZWZpbmUgR0FNTUFfTU9VVF9FTl9SRE1BMQkJCTB4MQ0KPiA+Pj4gKyNkZWZpbmUgUkRNQTBfU09V VF9EUEkwCQkJCTB4Mg0KPiA+Pj4gKyNkZWZpbmUgUkRNQTBfU09VVF9EUEkxCQkJCTB4Mw0KPiA+ Pj4gKyNkZWZpbmUgUkRNQTBfU09VVF9EU0kxCQkJCTB4MQ0KPiA+Pj4gKyNkZWZpbmUgUkRNQTBf U09VVF9EU0kyCQkJCTB4NA0KPiA+Pj4gKyNkZWZpbmUgUkRNQTBfU09VVF9EU0kzCQkJCTB4NQ0K PiA+Pj4gKyNkZWZpbmUgUkRNQTFfU09VVF9EUEkwCQkJCTB4Mg0KPiA+Pj4gKyNkZWZpbmUgUkRN QTFfU09VVF9EUEkxCQkJCTB4Mw0KPiA+Pj4gKyNkZWZpbmUgUkRNQTFfU09VVF9EU0kxCQkJCTB4 MQ0KPiA+Pj4gKyNkZWZpbmUgUkRNQTFfU09VVF9EU0kyCQkJCTB4NA0KPiA+Pj4gKyNkZWZpbmUg UkRNQTFfU09VVF9EU0kzCQkJCTB4NQ0KPiA+Pj4gKyNkZWZpbmUgUkRNQTJfU09VVF9EUEkwCQkJ CTB4Mg0KPiA+Pj4gKyNkZWZpbmUgUkRNQTJfU09VVF9EUEkxCQkJCTB4Mw0KPiA+Pj4gKyNkZWZp bmUgUkRNQTJfU09VVF9EU0kxCQkJCTB4MQ0KPiA+Pj4gKyNkZWZpbmUgUkRNQTJfU09VVF9EU0ky CQkJCTB4NA0KPiA+Pj4gKyNkZWZpbmUgUkRNQTJfU09VVF9EU0kzCQkJCTB4NQ0KPiA+Pj4gKyNk ZWZpbmUgRFBJMF9TRUxfSU5fUkRNQTEJCQkweDENCj4gPj4+ICsjZGVmaW5lIERQSTBfU0VMX0lO X1JETUEyCQkJMHgzDQo+ID4+PiArI2RlZmluZSBEUEkxX1NFTF9JTl9SRE1BMQkJCSgweDEgPDwg OCkNCj4gPj4+ICsjZGVmaW5lIERQSTFfU0VMX0lOX1JETUEyCQkJKDB4MyA8PCA4KQ0KPiA+Pj4g KyNkZWZpbmUgRFNJMF9TRUxfSU5fUkRNQTEJCQkweDENCj4gPj4+ICsjZGVmaW5lIERTSTBfU0VM X0lOX1JETUEyCQkJMHg0DQo+ID4+PiArI2RlZmluZSBEU0kxX1NFTF9JTl9SRE1BMQkJCTB4MQ0K PiA+Pj4gKyNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTIJCQkweDQNCj4gPj4+ICsjZGVmaW5lIERT STJfU0VMX0lOX1JETUExCQkJKDB4MSA8PCAxNikNCj4gPj4+ICsjZGVmaW5lIERTSTJfU0VMX0lO X1JETUEyCQkJKDB4NCA8PCAxNikNCj4gPj4+ICsjZGVmaW5lIERTSTNfU0VMX0lOX1JETUExCQkJ KDB4MSA8PCAxNikNCj4gPj4+ICsjZGVmaW5lIERTSTNfU0VMX0lOX1JETUEyCQkJKDB4NCA8PCAx NikNCj4gPj4+ICsjZGVmaW5lIENPTE9SMV9TRUxfSU5fT1ZMMQkJCTB4MQ0KPiA+Pj4gKw0KPiA+ Pj4gKyNkZWZpbmUgT1ZMX01PVVRfRU5fUkRNQQkJCTB4MQ0KPiA+Pj4gKyNkZWZpbmUgQkxTX1RP X0RTSV9SRE1BMV9UT19EUEkxCQkweDgNCj4gPj4+ICsjZGVmaW5lIEJMU19UT19EUElfUkRNQTFf VE9fRFNJCQkJMHgyDQo+ID4+PiArI2RlZmluZSBEU0lfU0VMX0lOX0JMUwkJCQkweDANCj4gPj4+ ICsjZGVmaW5lIERQSV9TRUxfSU5fQkxTCQkJCTB4MA0KPiA+Pj4gKyNkZWZpbmUgRFNJX1NFTF9J Tl9SRE1BCQkJCTB4MQ0KPiA+Pj4gIA0KPiA+Pj4gIHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2Rh dGEgew0KPiA+Pj4gIAljb25zdCBjaGFyICpjbGtfZHJpdmVyOw0KPiA+Pj4gQEAgLTE2LDEwICs4 NCwyMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgbXQ4MTcz X21tc3lzX2RyaXZlcl9kYXRhID0gew0KPiA+Pj4gIAkuY2xrX2RyaXZlciA9ICJjbGstbXQ4MTcz LW1tIiwNCj4gPj4+ICB9Ow0KPiA+Pj4gIA0KPiA+Pj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbXRr X21tc3lzX2RkcF9tb3V0X2VuKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPj4+ICsJCQkJ CSAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCwNCj4gPj4+ICsJCQkJCSAgdW5zaWduZWQgaW50 ICphZGRyKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJdW5zaWduZWQgaW50IHZhbHVlOw0KPiA+Pj4gKw0K PiA+Pj4gKwlpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0ID09IEREUF9DT01Q T05FTlRfQ09MT1IwKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09W TDBfTU9VVF9FTjsNCj4gPj4+ICsJCXZhbHVlID0gT1ZMMF9NT1VUX0VOX0NPTE9SMDsNCj4gPj4+ ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYmIG5leHQgPT0gRERQX0NP TVBPTkVOVF9SRE1BMCkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9P VkxfTU9VVF9FTjsNCj4gPj4+ICsJCXZhbHVlID0gT1ZMX01PVVRfRU5fUkRNQTsNCj4gPj4+ICsJ fSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PRDAgJiYgbmV4dCA9PSBERFBfQ09NUE9O RU5UX1JETUEwKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09EX01P VVRfRU47DQo+ID4+PiArCQl2YWx1ZSA9IE9EX01PVVRfRU5fUkRNQTA7DQo+ID4+PiArCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfVUZPRSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRf RFNJMCkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9VRk9FX01PVVRf RU47DQo+ID4+PiArCQl2YWx1ZSA9IFVGT0VfTU9VVF9FTl9EU0kwOw0KPiA+Pj4gKwl9IGVsc2Ug aWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX09WTDEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NP TE9SMSkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PVkwxX01PVVRf RU47DQo+ID4+PiArCQl2YWx1ZSA9IE9WTDFfTU9VVF9FTl9DT0xPUjE7DQo+ID4+PiArCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfR0FNTUEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5U X1JETUExKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX0dBTU1BX01P VVRfRU47DQo+ID4+PiArCQl2YWx1ZSA9IEdBTU1BX01PVVRfRU5fUkRNQTE7DQo+ID4+PiArCX0g ZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT0QxICYmIG5leHQgPT0gRERQX0NPTVBPTkVO VF9SRE1BMSkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PRF9NT1VU X0VOOw0KPiA+Pj4gKwkJdmFsdWUgPSBPRDFfTU9VVF9FTl9SRE1BMTsNCj4gPj4+ICsJfSBlbHNl IGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRf RFBJMCkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VU X0VOOw0KPiA+Pj4gKwkJdmFsdWUgPSBSRE1BMF9TT1VUX0RQSTA7DQo+ID4+PiArCX0gZWxzZSBp ZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQ STEpIHsNCj4gPj4+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9F TjsNCj4gPj4+ICsJCXZhbHVlID0gUkRNQTBfU09VVF9EUEkxOw0KPiA+Pj4gKwl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kx KSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47 DQo+ID4+PiArCQl2YWx1ZSA9IFJETUEwX1NPVVRfRFNJMTsNCj4gPj4+ICsJfSBlbHNlIGlmIChj dXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikg ew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VUX0VOOw0K PiA+Pj4gKwkJdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTI7DQo+ID4+PiArCX0gZWxzZSBpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsN Cj4gPj4+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4g Pj4+ICsJCXZhbHVlID0gUkRNQTBfU09VVF9EU0kzOw0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQo+ID4+ PiArCQl2YWx1ZSA9IFJETUExX1NPVVRfRFNJMTsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIgPT0g RERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0KPiA+ Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+Pj4g KwkJdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTI7DQo+ID4+PiArCX0gZWxzZSBpZiAoY3VyID09IERE UF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCj4gPj4+ ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPj4+ICsJ CXZhbHVlID0gUkRNQTFfU09VVF9EU0kzOw0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4+PiAr CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQo+ID4+PiArCQl2 YWx1ZSA9IFJETUExX1NPVVRfRFBJMDsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NP TVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkgew0KPiA+Pj4gKwkJ KmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+Pj4gKwkJdmFs dWUgPSBSRE1BMV9TT1VUX0RQSTE7DQo+ID4+PiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01Q T05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPj4+ICsJCSph ZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPj4+ICsJCXZhbHVlID0g UkRNQTJfU09VVF9EUEkwOw0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4+PiArCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQ7DQo+ID4+PiArCQl2YWx1ZSA9IFJETUEy X1NPVVRfRFBJMTsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1B MiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQ X1JFR19DT05GSUdfRElTUF9SRE1BMl9TT1VUOw0KPiA+Pj4gKwkJdmFsdWUgPSBSRE1BMl9TT1VU X0RTSTE7DQo+ID4+PiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYg bmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPj4+ICsJCSphZGRyID0gRElTUF9SRUdf Q09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPj4+ICsJCXZhbHVlID0gUkRNQTJfU09VVF9EU0ky Ow0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19ESVNQX1JETUEyX1NPVVQ7DQo+ID4+PiArCQl2YWx1ZSA9IFJETUEyX1NPVVRfRFNJMzsNCj4g Pj4+ICsJfSBlbHNlIHsNCj4gPj4+ICsJCXZhbHVlID0gMDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0K PiA+Pj4gKwlyZXR1cm4gdmFsdWU7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgbXRrX21tc3lzX2RkcF9zZWxfaW4oZW51bSBtdGtfZGRwX2NvbXBfaWQgY3Vy LA0KPiA+Pj4gKwkJCQkJIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQsDQo+ID4+PiArCQkJCQkg dW5zaWduZWQgaW50ICphZGRyKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJdW5zaWduZWQgaW50IHZhbHVl Ow0KPiA+Pj4gKw0KPiA+Pj4gKwlpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfQ09MT1IwKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NP TkZJR19ESVNQX0NPTE9SMF9TRUxfSU47DQo+ID4+PiArCQl2YWx1ZSA9IENPTE9SMF9TRUxfSU5f T1ZMMDsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19D T05GSUdfRFBJX1NFTF9JTjsNCj4gPj4+ICsJCXZhbHVlID0gRFBJMF9TRUxfSU5fUkRNQTE7DQo+ ID4+PiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBE RFBfQ09NUE9ORU5UX0RQSTEpIHsNCj4gPj4+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQ SV9TRUxfSU47DQo+ID4+PiArCQl2YWx1ZSA9IERQSTFfU0VMX0lOX1JETUExOw0KPiA+Pj4gKwl9 IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9EU0kwKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9J TjsNCj4gPj4+ICsJCXZhbHVlID0gRFNJMF9TRUxfSU5fUkRNQTE7DQo+ID4+PiArCX0gZWxzZSBp ZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RT STEpIHsNCj4gPj4+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSU9fU0VMX0lOOw0KPiA+ Pj4gKwkJdmFsdWUgPSBEU0kxX1NFTF9JTl9SRE1BMTsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIg PT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0K PiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU47DQo+ID4+PiArCQl2 YWx1ZSA9IERTSTJfU0VMX0lOX1JETUExOw0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4+PiAr CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTjsNCj4gPj4+ICsJCXZhbHVlID0g RFNJM19TRUxfSU5fUkRNQTE7DQo+ID4+PiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPj4+ICsJCSphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4+PiArCQl2YWx1ZSA9IERQSTBfU0VM X0lOX1JETUEyOw0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEy ICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1Bf UkVHX0NPTkZJR19EUElfU0VMX0lOOw0KPiA+Pj4gKwkJdmFsdWUgPSBEUEkxX1NFTF9JTl9SRE1B MjsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05G SUdfRFNJRV9TRUxfSU47DQo+ID4+PiArCQl2YWx1ZSA9IERTSTBfU0VMX0lOX1JETUEyOw0KPiA+ Pj4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lP X1NFTF9JTjsNCj4gPj4+ICsJCXZhbHVlID0gRFNJMV9TRUxfSU5fUkRNQTI7DQo+ID4+PiArCX0g ZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9O RU5UX0RTSTIpIHsNCj4gPj4+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lO Ow0KPiA+Pj4gKwkJdmFsdWUgPSBEU0kyX1NFTF9JTl9SRE1BMjsNCj4gPj4+ICsJfSBlbHNlIGlm IChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJ Mykgew0KPiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU47DQo+ID4+ PiArCQl2YWx1ZSA9IERTSTNfU0VMX0lOX1JETUEyOw0KPiA+Pj4gKwl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX09WTDEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMSkgew0K PiA+Pj4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xPUjFfU0VMX0lOOw0KPiA+ Pj4gKwkJdmFsdWUgPSBDT0xPUjFfU0VMX0lOX09WTDE7DQo+ID4+PiArCX0gZWxzZSBpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ ID4+PiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lfU0VMOw0KPiA+Pj4gKwkJdmFsdWUg PSBEU0lfU0VMX0lOX0JMUzsNCj4gPj4+ICsJfSBlbHNlIHsNCj4gPj4+ICsJCXZhbHVlID0gMDsN Cj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gKwlyZXR1cm4gdmFsdWU7DQo+ID4+PiArfQ0KPiA+ Pj4gKw0KPiA+Pj4gK3N0YXRpYyB2b2lkIG10a19tbXN5c19kZHBfc291dF9zZWwodm9pZCBfX2lv bWVtICpjb25maWdfcmVncywNCj4gPj4+ICsJCQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3Vy LA0KPiA+Pj4gKwkJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KQ0KPiA+Pj4gK3sNCj4g Pj4+ICsJaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0JMUyAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFNJMCkgew0KPiA+Pj4gKwkJd3JpdGVsX3JlbGF4ZWQoQkxTX1RPX0RTSV9SRE1BMV9UT19E UEkxLA0KPiA+Pj4gKwkJCSAgICAgICBjb25maWdfcmVncyArIERJU1BfUkVHX0NPTkZJR19PVVRf U0VMKTsNCj4gPj4+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9CTFMgJiYgbmV4 dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPj4+ICsJCXdyaXRlbF9yZWxheGVkKEJMU19U T19EUElfUkRNQTFfVE9fRFNJLA0KPiA+Pj4gKwkJCSAgICAgICBjb25maWdfcmVncyArIERJU1Bf UkVHX0NPTkZJR19PVVRfU0VMKTsNCj4gPj4+ICsJCXdyaXRlbF9yZWxheGVkKERTSV9TRUxfSU5f UkRNQSwNCj4gPj4+ICsJCQkgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfRFNJ X1NFTCk7DQo+ID4+PiArCQl3cml0ZWxfcmVsYXhlZChEUElfU0VMX0lOX0JMUywNCj4gPj4+ICsJ CQkgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfRFBJX1NFTCk7DQo+ID4+PiAr CX0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArdm9pZCBtdGtfbW1zeXNfZGRwX2Nvbm5lY3Qo c3RydWN0IGRldmljZSAqZGV2LA0KPiA+Pj4gKwkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1 ciwNCj4gPj4+ICsJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KQ0KPiA+Pj4gK3sNCj4g Pj4+ICsJdm9pZCBfX2lvbWVtICpjb25maWdfcmVncyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0K PiA+Pj4gKwl1bnNpZ25lZCBpbnQgYWRkciwgdmFsdWUsIHJlZzsNCj4gPj4+ICsNCj4gPj4+ICsJ dmFsdWUgPSBtdGtfbW1zeXNfZGRwX21vdXRfZW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+ID4+PiAr CWlmICh2YWx1ZSkgew0KPiA+Pj4gKwkJcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyAr IGFkZHIpIHwgdmFsdWU7DQo+ID4+PiArCQl3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdz ICsgYWRkcik7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJbXRrX21tc3lzX2RkcF9zb3V0 X3NlbChjb25maWdfcmVncywgY3VyLCBuZXh0KTsNCj4gPj4+ICsNCj4gPj4+ICsJdmFsdWUgPSBt dGtfbW1zeXNfZGRwX3NlbF9pbihjdXIsIG5leHQsICZhZGRyKTsNCj4gPj4+ICsJaWYgKHZhbHVl KSB7DQo+ID4+PiArCQlyZWcgPSByZWFkbF9yZWxheGVkKGNvbmZpZ19yZWdzICsgYWRkcikgfCB2 YWx1ZTsNCj4gPj4+ICsJCXdyaXRlbF9yZWxheGVkKHJlZywgY29uZmlnX3JlZ3MgKyBhZGRyKTsN Cj4gPj4+ICsJfQ0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICt2b2lkIG10a19tbXN5c19kZHBf ZGlzY29ubmVjdChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4+PiArCQkJICAgICAgZW51bSBtdGtf ZGRwX2NvbXBfaWQgY3VyLA0KPiA+Pj4gKwkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5l eHQpDQo+ID4+PiArew0KPiA+Pj4gKwl2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ID4+PiArCXVuc2lnbmVkIGludCBhZGRyLCB2YWx1ZSwgcmVnOw0K PiA+Pj4gKw0KPiA+Pj4gKwl2YWx1ZSA9IG10a19tbXN5c19kZHBfbW91dF9lbihjdXIsIG5leHQs ICZhZGRyKTsNCj4gPj4+ICsJaWYgKHZhbHVlKSB7DQo+ID4+PiArCQlyZWcgPSByZWFkbF9yZWxh eGVkKGNvbmZpZ19yZWdzICsgYWRkcikgJiB+dmFsdWU7DQo+ID4+PiArCQl3cml0ZWxfcmVsYXhl ZChyZWcsIGNvbmZpZ19yZWdzICsgYWRkcik7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJ dmFsdWUgPSBtdGtfbW1zeXNfZGRwX3NlbF9pbihjdXIsIG5leHQsICZhZGRyKTsNCj4gPj4+ICsJ aWYgKHZhbHVlKSB7DQo+ID4+PiArCQlyZWcgPSByZWFkbF9yZWxheGVkKGNvbmZpZ19yZWdzICsg YWRkcikgJiB+dmFsdWU7DQo+ID4+PiArCQl3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdz ICsgYWRkcik7DQo+ID4+PiArCX0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAgc3RhdGljIGlu dCBtdGtfbW1zeXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPj4+ICB7 DQo+ID4+PiAgCWNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgKmRhdGE7DQo+ID4+ PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ID4+PiAgCXN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKmNsa3M7DQo+ID4+PiArCXZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3M7DQo+ ID4+PiArCXN0cnVjdCByZXNvdXJjZSAqbWVtOw0KPiA+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4gKw0K PiA+Pj4gKwltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOw0KPiA+Pj4gKwljb25maWdfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1l bSk7DQo+ID4+PiArCWlmIChJU19FUlIoY29uZmlnX3JlZ3MpKSB7DQo+ID4+PiArCQlyZXQgPSBQ VFJfRVJSKGNvbmZpZ19yZWdzKTsNCj4gPj4+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGlv cmVtYXAgbW1zeXMtY29uZmlnIHJlc291cmNlOiAlZFxuIiwNCj4gPj4+ICsJCQlyZXQpOw0KPiA+ Pj4gKwkJcmV0dXJuIHJldDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gKwlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBjb25maWdfcmVncyk7DQo+ID4+PiAgDQo+ID4+PiAgCWRhdGEgPSBv Zl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBkZXYtPmRldik7DQo+ID4+PiAgDQo+ID4+PiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmggYi9pbmNsdWRl L2xpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaA0KPiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2JhYjVkOWEzZDMxDQo+ID4+PiAtLS0gL2Rl di9udWxsDQo+ID4+PiArKysgYi9pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMu aA0KPiA+Pj4gQEAgLTAsMCArMSwyMCBAQA0KPiA+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4gPj4+ICsvKg0KPiA+Pj4gKyAqIENvcHlyaWdodCAoYykg MjAxNSBNZWRpYVRlayBJbmMuDQo+ID4+PiArICovDQo+ID4+PiArDQo+ID4+PiArI2lmbmRlZiBf X01US19NTVNZU19IDQo+ID4+PiArI2RlZmluZSBfX01US19NTVNZU19IDQo+ID4+PiArDQo+ID4+ PiArZW51bSBtdGtfZGRwX2NvbXBfaWQ7DQo+ID4+PiArc3RydWN0IGRldmljZTsNCj4gPj4+ICsN Cj4gPj4+ICt2b2lkIG10a19tbXN5c19kZHBfY29ubmVjdChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ ID4+PiArCQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+Pj4gKwkJCSAgIGVudW0g bXRrX2RkcF9jb21wX2lkIG5leHQpOw0KPiA+Pj4gKw0KPiA+Pj4gK3ZvaWQgbXRrX21tc3lzX2Rk cF9kaXNjb25uZWN0KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPj4+ICsJCQkgICAgICBlbnVtIG10 a19kZHBfY29tcF9pZCBjdXIsDQo+ID4+PiArCQkJICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQg bmV4dCk7DQo+ID4+PiArDQo+ID4+PiArI2VuZGlmIC8qIF9fTVRLX01NU1lTX0ggKi8NCj4gPj4+ DQo+ID4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KPiBMaW51eC1tZWRpYXRlayBtYWlsaW5nIGxpc3QNCj4gTGludXgtbWVkaWF0ZWtAbGlz dHMuaW5mcmFkZWFkLm9yZw0KPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LW1lZGlhdGVrDQoNCg==