From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9E56DA2EEB for ; Tue, 10 Sep 2019 12:32:17 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 848D71BEFA; Tue, 10 Sep 2019 12:32:16 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id EE5771BED1 for ; Tue, 10 Sep 2019 12:32:13 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x8AATo1b000558; Tue, 10 Sep 2019 03:32:03 -0700 Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-0016f401.pphosted.com with ESMTP id 2uv9wpv34k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Sep 2019 03:32:03 -0700 Received: from m0045849.ppops.net (m0045849.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.36/8.16.0.36) with SMTP id x8AAUjFo007203; Tue, 10 Sep 2019 03:32:02 -0700 Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2uv9wpv34g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 10 Sep 2019 03:32:02 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 10 Sep 2019 03:32:01 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.56) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Tue, 10 Sep 2019 03:32:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d/nEFscPUf/MMndHAk/EJt7nafl7VHCgS2f1YWTv+KwZwzFwdwtBpZXXPgGKN6BVjAEqqQOMInau51ee/rr3ch9tOIBI8aMjycmXtdWA1YTCpHsMr1BlUKXtm7vUw0zeAb9BM+TTBDNAbm9ok9yzMAJWPuR/u3XMd4a2r+s5Xqq4szU0nSbDGYtrJUv/NPPRMe9XOU4ZW8C36T7ehuFH+T+mHWPlSJNcBxw1JwQ4+GZxr87EZQK+SmYYCXc4au+3w2tFJYd+KSZs3tSf599Mn7WXI45KnZDj5GFd4c98z5as7aWBij1HkJjyuiruFPzV4KH4uT2H2PfUPn97HdfOlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f4M9djFQ0GwXELhKad1RRZ4okg6dUi4xYWmsOHNb9CU=; b=LonbDGqmTB9pz+YKVyzivaBUTppuVD2L5IYJp5/AHyp+3oFPHj9xj4gi2tLf19yXKJp7jtBKvE26Rb255vbhsnVrqyglGh6PNC3Q/JFHaAtjRf7T1bDAHytcEPMgbYi8hRGujv0+QFM7gwTwIrFQntlmBywXKb6GPleQalBWQE9AAidF4Q4KUEz/epi3loUINqrhK4P8sSDx2cGg8UjOnHOS3zYclyALezLKxnr+boE3/Flf9MYD+zi8R/w6PZLgTzm64e4ByVC+dKaSn1SgTJ7ePPSwvXcHj3SsekYqu+j8Ymvc5nO2heqMzUvhQLR42SNp7iAfZYH9L/1InZQ01g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f4M9djFQ0GwXELhKad1RRZ4okg6dUi4xYWmsOHNb9CU=; b=qmFJmz2V/2hzEO0fQ0J2UdUfl19XE4KHgC/kEPVXr+vOoXlOcr08bbgjjqFgblC5jGhjJkDCsN9kVRrdsIDb+lp6bok516nXLsmICUBHj/gny4o78YcoErmolIM1Xot6JFEK5ShAVkcDxgSroSItcfD9AHe3MzKFuJuaRHeE0gM= Received: from BYAPR18MB2424.namprd18.prod.outlook.com (20.179.91.149) by BYAPR18MB3030.namprd18.prod.outlook.com (20.179.94.208) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.15; Tue, 10 Sep 2019 10:31:58 +0000 Received: from BYAPR18MB2424.namprd18.prod.outlook.com ([fe80::1d8b:430f:c74a:33]) by BYAPR18MB2424.namprd18.prod.outlook.com ([fe80::1d8b:430f:c74a:33%6]) with mapi id 15.20.2241.018; Tue, 10 Sep 2019 10:31:58 +0000 From: Jerin Jacob Kollanukkaran To: Shahaf Shuler , Thomas Monjalon , "dev@dpdk.org" CC: Pavan Nikhilesh Bhagavatula , Hemant Agrawal , Opher Reviv , Alex Rosenbaum , Dovrat Zifroni , Prasun Kapoor , Nipun Gupta , "Wang, Xiang W" , "Richardson, Bruce" , "yang.a.hong@intel.com" , "harry.chang@intel.com" , "gu.jian1@zte.com.cn" , "shanjiangh@chinatelecom.cn" , "zhangy.yun@chinatelecom.cn" , "lixingfu@huachentel.com" , "wushuai@inspur.com" , "yuyingxia@yxlink.com" , "fanchenggang@sunyainfo.com" , "davidfgao@tencent.com" , "liuzhong1@chinaunicom.cn" , "zhaoyong11@huawei.com" , "oc@yunify.com" , "jim@netgate.com" , "hongjun.ni@intel.com" , "j.bromhead@titan-ic.com" , "deri@ntop.org" , "fc@napatech.com" , "arthur.su@lionic.com" Thread-Topic: [dpdk-dev] [RFC PATCH v1] regexdev: introduce regexdev subsystem Thread-Index: AQHVU11rzFGXGDb9TEWOWcBbu1ajBKcFHPIAgB/Bp0A= Date: Tue, 10 Sep 2019 10:31:57 +0000 Message-ID: References: <20190627155036.56940-1-jerinj@marvell.com> <8285913.8xKIzI91KM@xps> <1922242.dABWq9CbNQ@xps> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.140.231.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d8dfd0ab-c18a-4b0c-508e-08d735da1bc7 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:BYAPR18MB3030; x-ms-traffictypediagnostic: BYAPR18MB3030: x-ms-exchange-purlcount: 2 x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:962; x-forefront-prvs: 01565FED4C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39850400004)(396003)(346002)(376002)(366004)(136003)(189003)(199004)(81156014)(52536014)(76116006)(110136005)(2501003)(54906003)(7696005)(3846002)(99286004)(6116002)(66446008)(64756008)(14454004)(66556008)(66476007)(33656002)(7736002)(8676002)(305945005)(478600001)(74316002)(7416002)(966005)(66946007)(2906002)(45080400002)(14444005)(86362001)(71200400001)(71190400001)(256004)(81166006)(66066001)(6436002)(26005)(4326008)(102836004)(186003)(6306002)(476003)(11346002)(55236004)(229853002)(316002)(6506007)(55016002)(9686003)(30864003)(8936002)(53936002)(5660300002)(446003)(486006)(53946003)(25786009)(6246003)(76176011)(91820200001)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR18MB3030; H:BYAPR18MB2424.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: g/ivTEGaptETXUa77ltQatRaJg5U1HPFrJcQVF5QdErP4CdYrpvJEPpfWP7M4Buvh/sxCGnEY23I+bENERGHM7fM9LOzClF+ZDmh41AImQKhURzVtdE66P3b4rZWIR/XvP/UikmqaBtUmTXbofVBvipe6Lq7soTa7ctE/k60ESGBQ6E3v7mPXTtyFSLSMXV4XU9qOUxNt2Q2Wx9gPsX+j+WrPoQxhuqQfwxSb9D/iUbFkRzCrl6cF168/+wY7XTaDs4QEqlf2jWYfl+0wsxAT1YU8ZZB3iilG612SP6+L7vM13ZlfX0FFzGclz8Qc/wphCqeNwN41G3mcOjCdQRm6d2/MONO2++6q7iSl34L7Q4OVFn8lbOOyGfcnGtY44WsFDEardGTt5u8eK1huEnYo4vexCIWKAYzXBVCflUKGyo= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: d8dfd0ab-c18a-4b0c-508e-08d735da1bc7 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Sep 2019 10:31:57.7906 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mHbMd/dH33B17YcaBe8xB0C+yjkUTlKMrgCHVUsxV7MARJZXUTKqQtL9JwfHxysFa3wjECX6pIPqN8mDDDmAQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB3030 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.70,1.0.8 definitions=2019-09-10_07:2019-09-10,2019-09-10 signatures=0 Subject: Re: [dpdk-dev] [RFC PATCH v1] regexdev: introduce regexdev subsystem X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiBIaSBKZXJpbiwNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPiANCj4gVGh1cnNkYXksIEF1Z3VzdCAx NSwgMjAxOSAyOjM0IFBNLCBUaG9tYXMgTW9uamFsb246DQo+ID4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1JGQyBQQVRDSCB2MV0gcmVnZXhkZXY6IGludHJvZHVjZSByZWdleGRldg0KPiA+IHN1 YnN5c3RlbQ0KPiA+DQo+ID4gK0NjIG1vcmUNCj4gPg0KPiA+IC0tLS0tLS0tLS0tLQ0KPiA+DQo+ ID4gRnJvbTogSmVyaW4gSmFjb2IgPGplcmluakBtYXJ2ZWxsLmNvbT4NCj4gPg0KPiA+IEV2ZW4g dGhvdWdoIHRoZXJlIGFyZSBzb21lIHZlbmRvcnMgd2hpY2ggb2ZmZXIgUmVnZXggSFcgb2ZmbG9h ZCwgZHVlIHRvDQo+ID4gbGFjayBvZiBzdGFuZGFyZCBBUEksIEl0IGlzIGRpZmZjdWx0IGZvciBE UERLIGNvbnN1bWVyIHRvIHVzZSB0aGVtDQo+ID4gaW4gYSBwb3J0YWJsZSB3YXkuDQo+ID4NCj4g PiBUaGlzIF9SRkNfIGF0dGVtcHRzIHRvIHN0YW5kYXJkaXplIHRoZSBSZWdFeC9EUEkgb2ZmbG9h ZCBBUElzIGZvciBEUERLLg0KPiA+DQo+ID4gVGhlIERveHlnZW4gZ2VuZXJhdGVkIFJGQyBBUEkg ZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUgaGVyZToNCj4gPiBodHRwczovL2V1cjAzLnNhZmVsaW5r cy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZkcmVhDQo+ID4gbXkt bm9ldGhlci0NCj4gPiAyMjc3N2UubmV0bGlmeS5jb20lMkZydGVfX3JlZ2V4ZGV2XzhoLmh0bWwm YW1wO2RhdGE9MDIlN0MwMSU3Q3NoYQ0KPiA+DQo+IGhhZnMlNDBtZWxsYW5veC5jb20lN0NkZjkz NDE2Y2Y0ZTg0OThhOTgyYzA4ZDcyMTc0ODkzNyU3Q2E2NTI5NzFjDQo+ID4NCj4gN2QyZTRkOWJh NmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2MzcwMTQ2NTY3Mzk5OTMxMzEmYW1wO3NkYXRhDQo+ ID4gPTZaQU9yTG1qM3NmN0xyUFJsekU3SXlxa0s4YjRjdkZJUXFLNnpTd0Y0YXclM0QmYW1wO3Jl c2VydmVkPTANCj4gPg0KPiA+IFRoaXMgUkZDIGNyYWZ0ZWQgYmFzZWQgb24gU1cgUmVnZXggQVBJ IGZyYW1ld29ya3Mgc3VjaCBhcyBsaWJwY3JlIGFuZA0KPiA+IGh5cGVyc2NhbiBhbmQgYSBmZXcg b2YgdGhlIFJlZ0V4IEhXIElQcyB3aGljaCBJIGFtIGF3YXJlIG9mLg0KPiA+DQo+ID4gUmVnRXgg cGF0dGVybiBtYXRjaGluZyBhcHBsaWNhdGlvbnM6DQo+ID4g4oCiIE5leHQgR2VuZXJhdGlvbiBG aXJld2FsbHMgKE5HRlcpDQo+ID4g4oCiIERlZXAgUGFja2V0IGFuZCBGbG93IEluc3BlY3Rpb24g KERQSSkNCj4gPiDigKIgSW50cnVzaW9uIFByZXZlbnRpb24gU3lzdGVtcyAoSVBTKQ0KPiA+IOKA oiBERG9TIE1pdGlnYXRpb24NCj4gPiDigKIgTmV0d29yayBNb25pdG9yaW5nDQo+ID4g4oCiIERh dGEgTG9zcyBQcmV2ZW50aW9uIChETFApDQo+ID4g4oCiIFNtYXJ0IE5JQ3MNCj4gPiDigKIgR3Jh bW1hciBiYXNlZCBjb250ZW50IHByb2Nlc3NpbmcNCj4gPiDigKIgVVJMLCBzcGFtIGFuZCBhZHdh cmUgZmlsdGVyaW5nDQo+ID4g4oCiIEFkdmFuY2VkIGF1ZGl0aW5nIGFuZCBwb2xpY2luZyBvZiB1 c2VyL2FwcGxpY2F0aW9uIHNlY3VyaXR5IHBvbGljaWVzDQo+ID4g4oCiIEZpbmFuY2lhbCBkYXRh IG1pbmluZyAtIHBhcnNpbmcgb2Ygc3RyZWFtZWQgZmluYW5jaWFsIGZlZWRzDQo+IA0KPiBJIHRo aW5rIHR3byBtb3JlIGltcG9ydGFudCB1c2UgY2FzZSB0byBhZGQgKGF0IGxlYXN0IG9uIHRoZSBk b2Mgb2YgdGhpcw0KPiBzdWJzeXN0ZW0pIGFyZToNCj4gKiBhcHBsaWNhdGlvbiByZWNvZ25pdGlv bg0KPiAqIG1lbW9yeSBpbnRyb3NwZWN0aW9uDQo+IA0KPiANCj4gPg0KPiA+IFJlcXVlc3QgdG8g cmV2aWV3IGZyb20gSFcgYW5kIFNXIFJlZ0V4IHZlbmRvcnMgYW5kIFJlZ0V4IGFwcGxpY2F0aW9u DQo+ID4gdXNlcnMNCj4gPiB0byBoYXZlIHBvcnRhYmxlIERQREsgQVBJIGZvciBSZWdFeC4NCj4g Pg0KPiA+IFRoZSBBUEkgc2NoZW1hdGljcyBhcmUgYmFzZWQgY3J5cHRvZGV2LCBldmVudGRldiBh bmQgZXRoZGV2IGV4aXN0aW5nDQo+ID4gZGV2aWNlIEFQSS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IEplcmluIEphY29iIDxqZXJpbmpAbWFydmVsbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTog UGF2YW4gTmlraGlsZXNoIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+ID4gLS0tDQo+ID4N Cj4gPiBSVEUgUmVnRXggRGV2aWNlIEFQSQ0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4N Cj4gPiBEZWZpbmVzIFJURSBSZWdFeCBEZXZpY2UgQVBJcyBmb3IgUmVnRXggb3BlcmF0aW9ucyBh bmQgaXRzIHByb3Zpc2lvbmluZy4NCj4gPg0KPiA+IFRoZSBSZWdFeCBEZXZpY2UgQVBJIGlzIGNv bXBvc2VkIG9mIHR3byBwYXJ0czoNCj4gPg0KPiA+IC0gVGhlIGFwcGxpY2F0aW9uLW9yaWVudGVk IFJlZ0V4IEFQSSB0aGF0IGluY2x1ZGVzIGZ1bmN0aW9ucyB0byBzZXR1cA0KPiA+IGEgUmVnRXgg ZGV2aWNlIChjb25maWd1cmUgaXQsIHNldHVwIGl0cyBxdWV1ZSBwYWlycyBhbmQgc3RhcnQgaXQp LA0KPiA+IHVwZGF0ZSB0aGUgcnVsZSBkYXRhYmFzZSBhbmQgc28gb24uDQo+ID4NCj4gPiAtIFRo ZSBkcml2ZXItb3JpZW50ZWQgUmVnRXggQVBJIHRoYXQgZXhwb3J0cyBhIGZ1bmN0aW9uIGFsbG93 aW5nDQo+ID4gYSBSZWdFeCBwb2xsIE1vZGUgRHJpdmVyIChQTUQpIHRvIHNpbXVsdGFuZW91c2x5 IHJlZ2lzdGVyIGl0c2VsZiBhcw0KPiA+IGEgUmVnRXggZGV2aWNlIGRyaXZlci4NCj4gPg0KPiA+ IFJlZ0V4IGRldmljZSBjb21wb25lbnRzIGFuZCBkZWZpbml0aW9uczoNCj4gPg0KPiA+ICAgICAr LS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4gICAgIHwgICAgICAgICAgICAgICAgIHwNCj4gPiAgICAg fCAgICAgICAgICAgICAgICAgby0tLS0tLS0tLSsgICAgcnRlX3JlZ2V4X1tlbnxkZV1xdWV1ZV9i dXJzdCgpDQo+ID4gICAgIHwgICBQQ1JFIGJhc2VkICAgIG8tLS0tLS0rICB8ICAgICAgICAgICAg ICAgfA0KPiA+ICAgICB8ICBSZWdFeCBwYXR0ZXJuICB8ICAgICAgfCAgfCAgKy0tLS0tLS0tKyAg IHwNCj4gPiAgICAgfCBtYXRjaGluZyBlbmdpbmUgby0tLS0tLSstLSstLW8gICAgICAgIHwgICB8 ICAgICstLS0tLS0rDQo+ID4gICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICB8ICB8ICB8IHF1 ZXVlICB8PD09bz09PT58Q29yZSAwfA0KPiA+ICAgICB8ICAgICAgICAgICAgICAgICBvLS0tLSsg fCAgfCAgfCBwYWlyIDAgfCAgICAgICAgfCAgICAgIHwNCj4gPiAgICAgfCAgICAgICAgICAgICAg ICAgfCAgICB8IHwgIHwgICstLS0tLS0tLSsgICAgICAgICstLS0tLS0rDQo+ID4gICAgICstLS0t LS0tLS0tLS0tLS0tLSsgICAgfCB8ICB8DQo+ID4gICAgICAgICAgICBeICAgICAgICAgICAgICAg fCB8ICB8ICArLS0tLS0tLS0rDQo+ID4gICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8ICB8 ICB8ICAgICAgICB8ICAgICAgICArLS0tLS0tKw0KPiA+ICAgICAgICAgICAgfCAgICAgICAgICAg ICAgIHwgKy0tKy0tbyBxdWV1ZSAgfDw9PT09PT0+fENvcmUgMXwNCj4gPiAgICAgICAgUnVsZXxE YXRhYmFzZSAgICAgICB8ICAgIHwgIHwgcGFpciAxIHwgICAgICAgIHwgICAgICB8DQo+ID4gICAg ICstLS0tLS0rLS0tLS0tLS0tLSsgICAgfCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0t Kw0KPiA+ICAgICB8ICAgICBHcm91cCAwICAgICB8ICAgIHwgICAgfA0KPiA+ICAgICB8ICstLS0t LS0tLS0tLS0tKyB8ICAgIHwgICAgfCAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gPiAg ICAgfCB8IFJ1bGVzIDAuLm4gIHwgfCAgICB8ICAgIHwgIHwgICAgICAgIHwgICAgICAgIHxDb3Jl IDJ8DQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICArLS1vIHF1ZXVlICB8PD09 PT09PT58ICAgICAgfA0KPiA+ICAgICB8ICAgICBHcm91cCAxICAgICB8ICAgIHwgICAgICAgfCBw YWlyIDIgfCAgICAgICAgKy0tLS0tLSsNCj4gPiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8 ICAgICAgICstLS0tLS0tLSsNCj4gPiAgICAgfCB8IFJ1bGVzIDAuLm4gIHwgfCAgICB8DQo+ID4g ICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICAgICArLS0tLS0tLS0rDQo+ID4gICAgIHwg ICAgIEdyb3VwIDIgICAgIHwgICAgfCAgICAgICB8ICAgICAgICB8ICAgICAgICArLS0tLS0tKw0K PiA+ICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgICAgfCBxdWV1ZSAgfDw9PT09PT0+ fENvcmUgbnwNCj4gPiAgICAgfCB8IFJ1bGVzIDAuLm4gIHwgfCAgICArLS0tLS0tLW8gcGFpciBu IHwgICAgICAgIHwgICAgICB8DQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAg ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiA+ICAgICB8ICAgICBHcm91cCBuICAgICB8 DQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHw8LS0tLS0tLXJ0ZV9yZWdleF9ydWxlX2RiX3Vw ZGF0ZSgpDQo+ID4gICAgIHwgfCBSdWxlcyAwLi5uICB8IHw8LS0tLS0tLXJ0ZV9yZWdleF9ydWxl X2RiX2ltcG9ydCgpDQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwtLS0tLS0tPnJ0ZV9yZWdl eF9ydWxlX2RiX2V4cG9ydCgpDQo+ID4gICAgICstLS0tLS0tLS0tLS0tLS0tLSsNCj4gPg0KPiA+ IFJlZ0V4OiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBhIGNvbmNpc2UgYW5kIGZsZXhpYmxlIG1l YW5zIGZvciBtYXRjaGluZw0KPiA+IHN0cmluZ3Mgb2YgdGV4dCwgc3VjaCBhcyBwYXJ0aWN1bGFy IGNoYXJhY3RlcnMsIHdvcmRzLCBvciBwYXR0ZXJucyBvZg0KPiA+IGNoYXJhY3RlcnMuIEEgY29t bW9uIGFiYnJldmlhdGlvbiBmb3IgdGhpcyBpcyDigJxSZWdFeOKAnS4NCj4gPg0KPiA+IFJlZ0V4 IGRldmljZTogQSBoYXJkd2FyZSBvciBzb2Z0d2FyZS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBS ZWdFeA0KPiA+IGRldmljZSBBUEkgZm9yIFBDUkUgYmFzZWQgcGF0dGVybiBtYXRjaGluZyBzeW50 YXggYW5kIHNlbWFudGljcy4NCj4gPg0KPiA+IFBDUkUgUmVnRXggc3ludGF4IGFuZCBzZW1hbnRp Y3Mgc3BlY2lmaWNhdGlvbjoNCj4gPiBodHRwczovL2V1cjAzLnNhZmVsaW5rcy5wcm90ZWN0aW9u Lm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRnJlZ2V4DQo+ID4ga2l0LnNvdXJjZWZvcmdl Lm5ldCUyRkRvY3VtZW50YXRpb24lMkZwY3JlJTJGcGNyZXBhdHRlcm4uaHRtbCZhbXA7ZA0KPiA+ DQo+IGF0YT0wMiU3QzAxJTdDc2hhaGFmcyU0MG1lbGxhbm94LmNvbSU3Q2RmOTM0MTZjZjRlODQ5 OGE5ODJjMDhkNzIxDQo+ID4NCj4gNzQ4OTM3JTdDYTY1Mjk3MWM3ZDJlNGQ5YmE2YTRkMTQ5MjU2 ZjQ2MWIlN0MwJTdDMCU3QzYzNzAxNDY1NjczDQo+ID4gOTk5MzEzMSZhbXA7c2RhdGE9QjBMU011 YmxkRHkzVWxGNTVaM3doaE5pUnE2ZXAxcHhCOFJydDVESXRmdyUzDQo+ID4gRCZhbXA7cmVzZXJ2 ZWQ9MA0KPiA+DQo+ID4gUmVnRXggcXVldWUgcGFpcjogRWFjaCBSZWdFeCBkZXZpY2Ugc2hvdWxk IGhhdmUgb25lIG9yIG1vcmUgcXVldWUgcGFpciB0bw0KPiA+IHRyYW5zbWl0IGEgYnVyc3Qgb2Yg cGF0dGVybiBtYXRjaGluZyByZXF1ZXN0IGFuZCByZWNlaXZlIGEgYnVyc3Qgb2YNCj4gPiByZWNl aXZlIHRoZSBwYXR0ZXJuIG1hdGNoaW5nIHJlc3BvbnNlLiBUaGUgcGF0dGVybiBtYXRjaGluZw0K PiA+IHJlcXVlc3QvcmVzcG9uc2UNCj4gPiBlbWJlZGRlZCBpbiAqcnRlX3JlZ2V4X29wcyogc3Ry dWN0dXJlLg0KPiA+DQo+ID4gUnVsZTogQSBwYXR0ZXJuIG1hdGNoaW5nIHJ1bGUgZXhwcmVzc2Vk IGluIFBDUkUgUmVnRXggc3ludGF4IGFsb25nIHdpdGgNCj4gPiBNYXRjaCBJRCBhbmQgR3JvdXAg SUQgdG8gaWRlbnRpZnkgdGhlIHJ1bGUgdXBvbiB0aGUgbWF0Y2guDQo+ID4NCj4gPiBSdWxlIGRh dGFiYXNlOiBUaGUgUmVnRXggZGV2aWNlIGFjY2VwdHMgcmVndWxhciBleHByZXNzaW9ucyBhbmQg Y29udmVydHMNCj4gPiB0aGVtDQo+ID4gaW50byBhIGNvbXBpbGVkIHJ1bGUgZGF0YWJhc2UgdGhh dCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNjYW4gZGF0YS4NCj4gPiBDb21waWxhdGlvbiBhbGxvd3Mg dGhlIGRldmljZSB0byBhbmFseXplIHRoZSBnaXZlbiBwYXR0ZXJuKHMpIGFuZA0KPiA+IHByZS1k ZXRlcm1pbmUgaG93IHRvIHNjYW4gZm9yIHRoZXNlIHBhdHRlcm5zIGluIGFuIG9wdGltaXplZCBm YXNoaW9uIHRoYXQNCj4gPiB3b3VsZCBiZSBmYXIgdG9vIGV4cGVuc2l2ZSB0byBjb21wdXRlIGF0 IHJ1bi10aW1lLiBBIHJ1bGUgZGF0YWJhc2UgY29udGFpbnMNCj4gPiBhIHNldCBvZiBydWxlcyB0 aGF0IGNvbXBpbGVkIGluIGRldmljZSBzcGVjaWZpYyBiaW5hcnkgZm9ybS4NCj4gPg0KPiA+IE1h dGNoIElEIG9yIFJ1bGUgSUQ6IEEgdW5pcXVlIGlkZW50aWZpZXIgcHJvdmlkZWQgYXQgdGhlIHRp bWUgb2YgcnVsZQ0KPiA+IGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRlbnRpZnkg dGhlIHJ1bGUgdXBvbiBtYXRjaC4NCj4gPg0KPiA+IEdyb3VwIElEOiBHcm91cCBvZiBydWxlcyBj YW4gYmUgZ3JvdXBlZCB1bmRlciBvbmUgZ3JvdXAgSUQgdG8gZW5hYmxlDQo+ID4gcnVsZSBpc29s YXRpb24gYW5kIGVmZmVjdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBBIHVuaXF1ZSBncm91cCBpZGVu dGlmaWVyDQo+ID4gcHJvdmlkZWQgYXQgdGhlIHRpbWUgb2YgcnVsZSBjcmVhdGlvbiBmb3IgdGhl IGFwcGxpY2F0aW9uIHRvIGlkZW50aWZ5IHRoZQ0KPiA+IHJ1bGUgdXBvbiBtYXRjaC4NCj4gPg0K PiA+IFNjYW46IEEgcGF0dGVybiBtYXRjaGluZyByZXF1ZXN0IHRocm91Z2ggKmVucXVldWUqIEFQ SS4NCj4gPg0KPiA+IEl0IG1heSBwb3NzaWJsZSB0aGF0IGEgZ2l2ZW4gUmVnRXggZGV2aWNlIG1h eSBub3Qgc3VwcG9ydCBhbGwgdGhlIGZlYXR1cmVzDQo+ID4gb2YgUENSRS4gVGhlIGFwcGxpY2F0 aW9uIG1heSBwcm9iZSB1bnN1cHBvcnRlZCBmZWF0dXJlcyB0aHJvdWdoDQo+ID4gc3RydWN0IHJ0 ZV9yZWdleF9kZXZfaW5mbzo6cGNyZV91bnN1cF9mbGFncw0KPiA+DQo+ID4gQnkgZGVmYXVsdCwg YWxsIHRoZSBmdW5jdGlvbnMgb2YgdGhlIFJlZ0V4IERldmljZSBBUEkgZXhwb3J0ZWQgYnkgYSBQ TUQNCj4gPiBhcmUgbG9jay1mcmVlIGZ1bmN0aW9ucyB3aGljaCBhc3N1bWUgdG8gbm90IGJlIGlu dm9rZWQgaW4gcGFyYWxsZWwgb24NCj4gPiBkaWZmZXJlbnQgbG9naWNhbCBjb3JlcyB0byB3b3Jr IG9uIHRoZSBzYW1lIHRhcmdldCBvYmplY3QuIEZvciBpbnN0YW5jZSwNCj4gPiB0aGUgZGVxdWV1 ZSBmdW5jdGlvbiBvZiBhIFBNRCBjYW5ub3QgYmUgaW52b2tlZCBpbiBwYXJhbGxlbCBvbiB0d28g bG9naWNhbA0KPiA+IGNvcmVzIHRvIG9wZXJhdGVzIG9uIHNhbWUgUmVnRXggcXVldWUgcGFpci4g T2YgY291cnNlLCB0aGlzIGZ1bmN0aW9uDQo+ID4gY2FuIGJlIGludm9rZWQgaW4gcGFyYWxsZWwg YnkgZGlmZmVyZW50IGxvZ2ljYWwgY29yZSBvbiBkaWZmZXJlbnQgcXVldWUgcGFpci4NCj4gPiBJ dCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHVwcGVyIGxldmVsIGFwcGxpY2F0aW9uIHRv IGVuZm9yY2UgdGhpcyBydWxlLg0KPiA+DQo+ID4gSW4gYWxsIGZ1bmN0aW9ucyBvZiB0aGUgUmVn RXggQVBJLCB0aGUgUmVnRXggZGV2aWNlIGlzDQo+ID4gZGVzaWduYXRlZCBieSBhbiBpbnRlZ2Vy ID49IDAgbmFtZWQgdGhlIGRldmljZSBpZGVudGlmaWVyICpkZXZfaWQqDQo+ID4NCj4gPiBBdCB0 aGUgUmVnRXggZHJpdmVyIGxldmVsLCBSZWdFeCBkZXZpY2VzIGFyZSByZXByZXNlbnRlZCBieSBh IGdlbmVyaWMNCj4gPiBkYXRhIHN0cnVjdHVyZSBvZiB0eXBlICpydGVfcmVnZXhfZGV2Ki4NCj4g Pg0KPiA+IFJlZ0V4IGRldmljZXMgYXJlIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQgZHVyaW5nIHRo ZSBQQ0kvU29DIGRldmljZSBwcm9iaW5nDQo+ID4gcGhhc2UgcGVyZm9ybWVkIGF0IEVBTCBpbml0 aWFsaXphdGlvbiB0aW1lLg0KPiA+IFdoZW4gYSBSZWdFeCBkZXZpY2UgaXMgYmVpbmcgcHJvYmVk LCBhICpydGVfcmVnZXhfZGV2KiBzdHJ1Y3R1cmUgYW5kDQo+ID4gYSBuZXcgZGV2aWNlIGlkZW50 aWZpZXIgYXJlIGFsbG9jYXRlZCBmb3IgdGhhdCBkZXZpY2UuIFRoZW4sIHRoZQ0KPiA+IHJlZ2V4 X2Rldl9pbml0KCkgZnVuY3Rpb24gc3VwcGxpZWQgYnkgdGhlIFJlZ0V4IGRyaXZlciBtYXRjaGlu ZyB0aGUgcHJvYmVkDQo+ID4gZGV2aWNlIGlzIGludm9rZWQgdG8gcHJvcGVybHkgaW5pdGlhbGl6 ZSB0aGUgZGV2aWNlLg0KPiA+DQo+ID4gVGhlIHJvbGUgb2YgdGhlIGRldmljZSBpbml0IGZ1bmN0 aW9uIGNvbnNpc3RzIG9mIHJlc2V0dGluZyB0aGUgaGFyZHdhcmUgb3INCj4gPiBzb2Z0d2FyZSBS ZWdFeCBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0KPiA+DQo+ID4gSWYgdGhlIGRldmljZSBpbml0 IG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLCB0aGUgY29ycmVzcG9uZGVuY2UgYmV0d2Vlbg0KPiA+ IHRoZSBkZXZpY2UgaWRlbnRpZmllciBhc3NpZ25lZCB0byB0aGUgbmV3IGRldmljZSBhbmQgaXRz IGFzc29jaWF0ZWQNCj4gPiAqcnRlX3JlZ2V4X2Rldiogc3RydWN0dXJlIGlzIGVmZmVjdGl2ZWx5 IHJlZ2lzdGVyZWQuDQo+ID4gT3RoZXJ3aXNlLCBib3RoIHRoZSAqcnRlX3JlZ2V4X2Rldiogc3Ry dWN0dXJlIGFuZCB0aGUgZGV2aWNlIGlkZW50aWZpZXIgYXJlDQo+ID4gZnJlZWQuDQo+ID4NCj4g PiBUaGUgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBSZWdFeCBBUEkgdG8g c2V0dXAgYSBkZXZpY2UNCj4gPiBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UgaWRlbnRpZmllciBt dXN0IGJlIGludm9rZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoNCj4gPiAtIHJ0ZV9yZWdleF9k ZXZfY29uZmlndXJlKCkNCj4gPiAtIHJ0ZV9yZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gPiAt IHJ0ZV9yZWdleF9kZXZfc3RhcnQoKQ0KPiA+DQo+ID4gVGhlbiwgdGhlIGFwcGxpY2F0aW9uIGNh biBpbnZva2UsIGluIGFueSBvcmRlciwgdGhlIGZ1bmN0aW9ucw0KPiA+IGV4cG9ydGVkIGJ5IHRo ZSBSZWdFeCBBUEkgdG8gZW5xdWV1ZSBwYXR0ZXJuIG1hdGNoaW5nIGpvYiwgZGVxdWV1ZQ0KPiA+ IHBhdHRlcm4NCj4gPiBtYXRjaGluZyByZXNwb25zZSwgZ2V0IHRoZSBzdGF0cywgdXBkYXRlIHRo ZSBydWxlIGRhdGFiYXNlLA0KPiA+IGdldC9zZXQgZGV2aWNlIGF0dHJpYnV0ZXMgYW5kIHNvIG9u DQo+ID4NCj4gPiBJZiB0aGUgYXBwbGljYXRpb24gd2FudHMgdG8gY2hhbmdlIHRoZSBjb25maWd1 cmF0aW9uIChpLmUuIGNhbGwNCj4gPiBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpIG9yIHJ0ZV9y ZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkpLCBpdCBtdXN0IGNhbGwNCj4gPiBydGVfcmVnZXhfZGV2 X3N0b3AoKSBmaXJzdCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIHRoZW4gZG8gdGhlDQo+ID4gcmVj b25maWd1cmF0aW9uDQo+ID4gYmVmb3JlIGNhbGxpbmcgcnRlX3JlZ2V4X2Rldl9zdGFydCgpIGFn YWluLiBUaGUgZW5xdWV1ZSBhbmQgZGVxdWV1ZQ0KPiA+IGZ1bmN0aW9ucyBzaG91bGQgbm90IGJl IGludm9rZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQuDQo+ID4NCj4gPiBGaW5hbGx5LCBh biBhcHBsaWNhdGlvbiBjYW4gY2xvc2UgYSBSZWdFeCBkZXZpY2UgYnkgaW52b2tpbmcgdGhlDQo+ ID4gcnRlX3JlZ2V4X2Rldl9jbG9zZSgpIGZ1bmN0aW9uLg0KPiA+DQo+ID4gRWFjaCBmdW5jdGlv biBvZiB0aGUgYXBwbGljYXRpb24gUmVnRXggQVBJIGludm9rZXMgYSBzcGVjaWZpYyBmdW5jdGlv bg0KPiA+IG9mIHRoZSBQTUQgdGhhdCBjb250cm9scyB0aGUgdGFyZ2V0IGRldmljZSBkZXNpZ25h dGVkIGJ5IGl0cyBkZXZpY2UNCj4gPiBpZGVudGlmaWVyLg0KPiA+DQo+ID4gRm9yIHRoaXMgcHVy cG9zZSwgYWxsIGRldmljZS1zcGVjaWZpYyBmdW5jdGlvbnMgb2YgYSBSZWdFeCBkcml2ZXIgYXJl DQo+ID4gc3VwcGxpZWQgdGhyb3VnaCBhIHNldCBvZiBwb2ludGVycyBjb250YWluZWQgaW4gYSBn ZW5lcmljIHN0cnVjdHVyZSBvZiB0eXBlDQo+ID4gKnJlZ2V4X2Rldl9vcHMqLg0KPiA+IFRoZSBh ZGRyZXNzIG9mIHRoZSAqcmVnZXhfZGV2X29wcyogc3RydWN0dXJlIGlzIHN0b3JlZCBpbiB0aGUN Cj4gPiAqcnRlX3JlZ2V4X2RldioNCj4gPiBzdHJ1Y3R1cmUgYnkgdGhlIGRldmljZSBpbml0IGZ1 bmN0aW9uIG9mIHRoZSBSZWdFeCBkcml2ZXIsIHdoaWNoIGlzDQo+ID4gaW52b2tlZCBkdXJpbmcg dGhlIFBDSS9Tb0MgZGV2aWNlIHByb2JpbmcgcGhhc2UsIGFzIGV4cGxhaW5lZCBlYXJsaWVyLg0K PiA+DQo+ID4gSW4gb3RoZXIgd29yZHMsIGVhY2ggZnVuY3Rpb24gb2YgdGhlIFJlZ0V4IEFQSSBz aW1wbHkgcmV0cmlldmVzIHRoZQ0KPiA+ICpydGVfcmVnZXhfZGV2KiBzdHJ1Y3R1cmUgYXNzb2Np YXRlZCB3aXRoIHRoZSBkZXZpY2UgaWRlbnRpZmllciBhbmQNCj4gPiBwZXJmb3JtcyBhbiBpbmRp cmVjdCBpbnZvY2F0aW9uIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBmdW5jdGlvbg0KPiA+ IHN1cHBsaWVkIGluIHRoZSAqcmVnZXhfZGV2X29wcyogc3RydWN0dXJlIG9mIHRoZSAqcnRlX3Jl Z2V4X2RldioNCj4gPiBzdHJ1Y3R1cmUuDQo+ID4NCj4gPiBGb3IgcGVyZm9ybWFuY2UgcmVhc29u cywgdGhlIGFkZHJlc3Mgb2YgdGhlIGZhc3QtcGF0aCBmdW5jdGlvbnMgb2YgdGhlDQo+ID4gUmVn RXggZHJpdmVyIGlzIG5vdCBjb250YWluZWQgaW4gdGhlICpyZWdleF9kZXZfb3BzKiBzdHJ1Y3R1 cmUuDQo+ID4gSW5zdGVhZCwgdGhleSBhcmUgZGlyZWN0bHkgc3RvcmVkIGF0IHRoZSBiZWdpbm5p bmcgb2YgdGhlICpydGVfcmVnZXhfZGV2Kg0KPiA+IHN0cnVjdHVyZSB0byBhdm9pZCBhbiBleHRy YSBpbmRpcmVjdCBtZW1vcnkgYWNjZXNzIGR1cmluZyB0aGVpciBpbnZvY2F0aW9uLg0KPiA+DQo+ ID4gUlRFIFJlZ0V4IGRldmljZSBkcml2ZXJzIGRvIG5vdCB1c2UgaW50ZXJydXB0cyBmb3IgZW5x dWV1ZSBvciBkZXF1ZXVlDQo+ID4gb3BlcmF0aW9uLiBJbnN0ZWFkLCBSZWdFeCBkcml2ZXJzIGV4 cG9ydCBQb2xsLU1vZGUgZW5xdWV1ZSBhbmQgZGVxdWV1ZQ0KPiA+IGZ1bmN0aW9ucyB0byBhcHBs aWNhdGlvbnMuDQo+ID4NCj4gPiBUaGUgKmVucXVldWUqIG9wZXJhdGlvbiBzdWJtaXRzIGEgYnVy c3Qgb2YgUmVnRXggcGF0dGVybiBtYXRjaGluZw0KPiA+IHJlcXVlc3QNCj4gPiB0byB0aGUgUmVn RXggZGV2aWNlIGFuZCB0aGUgKmRlcXVldWUqIG9wZXJhdGlvbiBnZXRzIGEgYnVyc3Qgb2YgcGF0 dGVybg0KPiA+IG1hdGNoaW5nIHJlc3BvbnNlIGZvciB0aGUgb25lcyBzdWJtaXR0ZWQgdGhyb3Vn aCAqZW5xdWV1ZSogb3BlcmF0aW9uLg0KPiA+DQo+ID4gVHlwaWNhbCBhcHBsaWNhdGlvbiB1dGls aXNhdGlvbiBvZiB0aGUgUmVnRXggZGV2aWNlIEFQSSB3aWxsIGZvbGxvdyB0aGUNCj4gPiBmb2xs b3dpbmcgcHJvZ3JhbW1pbmcgZmxvdy4NCj4gPg0KPiA+IC0gcnRlX3JlZ2V4X2Rldl9jb25maWd1 cmUoKQ0KPiA+IC0gcnRlX3JlZ2V4X3F1ZXVlX3BhaXJfc2V0dXAoKQ0KPiA+IC0gcnRlX3JlZ2V4 X3J1bGVfZGJfdXBkYXRlKCkgTmVlZHMgdG8gaW52b2tlIGlmIHByZWNvbXBpbGVkIHJ1bGUgZGF0 YWJhc2UNCj4gPiBub3QNCj4gPiBwcm92aWRlZCBpbiBydGVfcmVnZXhfZGV2X2NvbmZpZzo6cnVs ZV9kYiBmb3IgcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUoKQ0KPiA+IGFuZC9vciBhcHBsaWNhdGlv biBuZWVkcyB0byB1cGRhdGUgcnVsZSBkYXRhYmFzZS4NCj4gPiAtIENyZWF0ZSBvciByZXVzZSBl eGl0aW5nIG1lbXBvb2wgZm9yICpydGVfcmVnZXhfb3BzKiBvYmplY3RzLg0KPiA+IC0gcnRlX3Jl Z2V4X2Rldl9zdGFydCgpDQo+ID4gLSBydGVfcmVnZXhfZW5xdWV1ZV9idXJzdCgpDQo+ID4gLSBy dGVfcmVnZXhfZGVxdWV1ZV9idXJzdCgpDQo+ID4NCj4gPiAtLS0NCj4gPg0KPiA+IGNvbmZpZy9j b21tb25fYmFzZSAgICAgICAgICAgICAgICAgfCAgICA1ICsNCj4gPiBkb2MvYXBpL2RveHktYXBp LWluZGV4Lm1kICAgICAgICAgIHwgICAgMSArDQo+ID4gZG9jL2FwaS9kb3h5LWFwaS5jb25mLmlu ICAgICAgICAgICB8ICAgIDEgKw0KPiA+IGxpYi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICsNCj4gPiBsaWIvbGlicnRlX3JlZ2V4ZGV2L01ha2VmaWxlICAgICAgIHwgICAy MyArDQo+ID4gbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYuYyB8ICAgIDUgKw0KPiA+ IGxpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2LmggfCAxMjQ3DQo+ID4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KPiA+IDcgZmlsZXMgY2hhbmdlZCwgMTI4NCBpbnNlcnRpb25z KCspDQo+ID4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfcmVnZXhkZXYvTWFrZWZpbGUN Cj4gPiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYu Yw0KPiA+IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRl di5oDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvY29uZmlnL2NvbW1vbl9iYXNlIGIvY29uZmlnL2Nv bW1vbl9iYXNlDQo+ID4gaW5kZXggZTQwNmU3ODM2Li45ODYwOTNkNmUgMTAwNjQ0DQo+ID4gLS0t IGEvY29uZmlnL2NvbW1vbl9iYXNlDQo+ID4gKysrIGIvY29uZmlnL2NvbW1vbl9iYXNlDQo+ID4g QEAgLTc0Niw2ICs3NDYsMTEgQEANCj4gPiBDT05GSUdfUlRFX0xJQlJURV9QTURfRFBBQTJfUURN QV9SQVdERVY9bg0KPiA+ICMNCj4gPiBDT05GSUdfUlRFX0xJQlJURV9QTURfSUZQR0FfUkFXREVW PXkNCj4gPg0KPiA+ICsjDQo+ID4gKyMgQ29tcGlsZSByZWdleCBkZXZpY2Ugc3VwcG9ydA0KPiA+ ICsjDQo+ID4gK0NPTkZJR19SVEVfTElCUlRFX1JFR0VYREVWPXkNCj4gPiArDQo+ID4gIw0KPiA+ ICMgQ29tcGlsZSBsaWJydGVfcmluZw0KPiA+ICMNCj4gPiBkaWZmIC0tZ2l0IGEvZG9jL2FwaS9k b3h5LWFwaS1pbmRleC5tZCBiL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4gPiBpbmRleCA3 MTUyNDhkZDEuLmEwYmMyN2FlNCAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvYXBpL2RveHktYXBpLWlu ZGV4Lm1kDQo+ID4gKysrIGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiA+IEBAIC0yNiw2 ICsyNiw3IEBAIFRoZSBwdWJsaWMgQVBJIGhlYWRlcnMgYXJlIGdyb3VwZWQgYnkgdG9waWNzOg0K PiA+IFtldmVudF90aW1lcl9hZGFwdGVyXSAgICAoQHJlZiBydGVfZXZlbnRfdGltZXJfYWRhcHRl ci5oKSwNCj4gPiBbZXZlbnRfY3J5cHRvX2FkYXB0ZXJdICAgKEByZWYgcnRlX2V2ZW50X2NyeXB0 b19hZGFwdGVyLmgpLA0KPiA+IFtyYXdkZXZdICAgICAgICAgICAgIChAcmVmIHJ0ZV9yYXdkZXYu aCksDQo+ID4gKyAgW3JlZ2V4ZGV2XSAgICAgICAgICAgKEByZWYgcnRlX3JlZ2V4ZGV2LmgpLA0K PiA+IFttZXRyaWNzXSAgICAgICAgICAgIChAcmVmIHJ0ZV9tZXRyaWNzLmgpLA0KPiA+IFtiaXRy YXRlXSAgICAgICAgICAgIChAcmVmIHJ0ZV9iaXRyYXRlLmgpLA0KPiA+IFtsYXRlbmN5XSAgICAg ICAgICAgIChAcmVmIHJ0ZV9sYXRlbmN5c3RhdHMuaCksDQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9h cGkvZG94eS1hcGkuY29uZi5pbiBiL2RvYy9hcGkvZG94eS1hcGkuY29uZi5pbg0KPiA+IGluZGV4 IGI5ODk2Y2I2My4uN2FkYjgyMWJiIDEwMDY0NA0KPiA+IC0tLSBhL2RvYy9hcGkvZG94eS1hcGku Y29uZi5pbg0KPiA+ICsrKyBiL2RvYy9hcGkvZG94eS1hcGkuY29uZi5pbg0KPiA+IEBAIC01Myw2 ICs1Myw3IEBAIElOUFVUICAgICAgICAgICAgICAgICAgID0gQFRPUERJUkAvZG9jL2FwaS9kb3h5 LWFwaS0NCj4gPiBpbmRleC5tZCBcDQo+ID4gQFRPUERJUkAvbGliL2xpYnJ0ZV9yYXdkZXYgXA0K PiA+IEBUT1BESVJAL2xpYi9saWJydGVfcmN1IFwNCj4gPiBAVE9QRElSQC9saWIvbGlicnRlX3Jl b3JkZXIgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJy dGVfcmVnZXhkZXYgXA0KPiA+IEBUT1BESVJAL2xpYi9saWJydGVfcmluZyBcDQo+ID4gQFRPUERJ UkAvbGliL2xpYnJ0ZV9zY2hlZCBcDQo+ID4gQFRPUERJUkAvbGliL2xpYnJ0ZV9zZWN1cml0eSBc DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZQ0KPiA+IGluZGV4 IDc5MWUwZDk5MS4uNTdkZTk2OTFhIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9NYWtlZmlsZQ0KPiA+ ICsrKyBiL2xpYi9NYWtlZmlsZQ0KPiA+IEBAIC00NCw2ICs0NCw4IEBAIERFUERJUlMtbGlicnRl X2V2ZW50ZGV2IDo9IGxpYnJ0ZV9lYWwgbGlicnRlX3JpbmcNCj4gPiBsaWJydGVfZXRoZGV2IGxp YnJ0ZV9oYXNoIFwNCj4gPiBsaWJydGVfbWVtcG9vbCBsaWJydGVfdGltZXIgbGlicnRlX2NyeXB0 b2Rldg0KPiA+IERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9SQVdERVYpICs9IGxpYnJ0ZV9yYXdk ZXYNCj4gPiBERVBESVJTLWxpYnJ0ZV9yYXdkZXYgOj0gbGlicnRlX2VhbCBsaWJydGVfZXRoZGV2 DQo+ID4gK0RJUlMtJChDT05GSUdfUlRFX0xJQlJURV9SRUdFWERFVikgKz0gbGlicnRlX3JlZ2V4 ZGV2DQo+ID4gK0RFUERJUlMtbGlicnRlX3JlZ2V4ZGV2IDo9IGxpYnJ0ZV9lYWwNCj4gPiBESVJT LSQoQ09ORklHX1JURV9MSUJSVEVfVkhPU1QpICs9IGxpYnJ0ZV92aG9zdA0KPiA+IERFUERJUlMt bGlicnRlX3Zob3N0IDo9IGxpYnJ0ZV9lYWwgbGlicnRlX21lbXBvb2wgbGlicnRlX21idWYNCj4g PiBsaWJydGVfZXRoZGV2IFwNCj4gPiAJCQlsaWJydGVfbmV0DQo+ID4gZGlmZiAtLWdpdCBhL2xp Yi9saWJydGVfcmVnZXhkZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L01ha2VmaWxl DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAuLjcyM2I0YjI4 Yw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L01ha2Vm aWxlDQo+ID4gQEAgLTAsMCArMSwyMyBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMy1DbGF1c2UNCj4gPiArIyBDb3B5cmlnaHQoQykgMjAxOSBNYXJ2ZWxsIEludGVybmF0 aW9uYWwgTHRkLg0KPiA+ICsjDQo+ID4gKw0KPiA+ICtpbmNsdWRlICQoUlRFX1NESykvbWsvcnRl LnZhcnMubWsNCj4gPiArDQo+ID4gKyMgbGlicmFyeSBuYW1lDQo+ID4gK0xJQiA9IGxpYnJ0ZV9y ZWdleGRldi5hDQo+ID4gKw0KPiA+ICsjIGxpYnJhcnkgdmVyc2lvbg0KPiA+ICtMSUJBQklWRVIg Oj0gMQ0KPiA+ICsNCj4gPiArIyBidWlsZCBmbGFncw0KPiA+ICtDRkxBR1MgKz0gLU8zDQo+ID4g K0NGTEFHUyArPSAkKFdFUlJPUl9GTEFHUykNCj4gPiArDQo+ID4gKyMgbGlicmFyeSBzb3VyY2Ug ZmlsZXMNCj4gPiArU1JDUy15ICs9IHJ0ZV9yZWdleGRldi5jDQo+ID4gKw0KPiA+ICsjIGV4cG9y dCBpbmNsdWRlIGZpbGVzDQo+ID4gK1NZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9yZWdleGRldi5o DQo+ID4gKw0KPiA+ICtpbmNsdWRlICQoUlRFX1NESykvbWsvcnRlLmxpYi5taw0KPiA+IGRpZmYg LS1naXQgYS9saWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5jDQo+ID4gYi9saWIvbGli cnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwMDAuLmU1YmUwZjI5Yw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9saWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5jDQo+ID4gQEAgLTAsMCArMSw1IEBA DQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICog Q29weXJpZ2h0KEMpIDIwMTkgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4gPiArICovDQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8cnRlX3JlZ2V4ZGV2Lmg+DQo+ID4gZGlmZiAtLWdpdCBhL2xp Yi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2LmgNCj4gPiBiL2xpYi9saWJydGVfcmVnZXhk ZXYvcnRlX3JlZ2V4ZGV2LmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw MDAwMDAwMC4uNzY1ZGE0YWFhDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2xpYi9saWJy dGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2LmgNCj4gPiBAQCAtMCwwICsxLDEyNDcgQEANCj4gPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5cmln aHQoQykgMjAxOSBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX1JURV9SRUdFWERFVl9IXw0KPiA+ICsjZGVmaW5lIF9SVEVfUkVHRVhERVZf SF8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAZmlsZQ0KPiA+ICsgKg0KPiA+ICsgKiBSVEUg UmVnRXggRGV2aWNlIEFQSQ0KPiA+ICsgKg0KPiA+ICsgKiBEZWZpbmVzIFJURSBSZWdFeCBEZXZp Y2UgQVBJcyBmb3IgUmVnRXggb3BlcmF0aW9ucyBhbmQgaXRzIHByb3Zpc2lvbmluZy4NCj4gPiAr ICoNCj4gPiArICogVGhlIFJlZ0V4IERldmljZSBBUEkgaXMgY29tcG9zZWQgb2YgdHdvIHBhcnRz Og0KPiA+ICsgKg0KPiA+ICsgKiAtIFRoZSBhcHBsaWNhdGlvbi1vcmllbnRlZCBSZWdFeCBBUEkg dGhhdCBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gc2V0dXANCj4gPiArICogICBhIFJlZ0V4IGRldmlj ZSAoY29uZmlndXJlIGl0LCBzZXR1cCBpdHMgcXVldWUgcGFpcnMgYW5kIHN0YXJ0IGl0KSwNCj4g PiArICogICB1cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2UgYW5kIHNvIG9uLg0KPiA+ICsgKg0KPiA+ ICsgKiAtIFRoZSBkcml2ZXItb3JpZW50ZWQgUmVnRXggQVBJIHRoYXQgZXhwb3J0cyBhIGZ1bmN0 aW9uIGFsbG93aW5nDQo+ID4gKyAqICAgYSBSZWdFeCBwb2xsIE1vZGUgRHJpdmVyIChQTUQpIHRv IHNpbXVsdGFuZW91c2x5IHJlZ2lzdGVyIGl0c2VsZiBhcw0KPiA+ICsgKiAgIGEgUmVnRXggZGV2 aWNlIGRyaXZlci4NCj4gPiArICoNCj4gPiArICogUmVnRXggZGV2aWNlIGNvbXBvbmVudHMgYW5k IGRlZmluaXRpb25zOg0KPiA+ICsgKg0KPiA+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKw0K PiA+ICsgKiAgICAgfCAgICAgICAgICAgICAgICAgfA0KPiA+ICsgKiAgICAgfCAgICAgICAgICAg ICAgICAgby0tLS0tLS0tLSsgICAgcnRlX3JlZ2V4X1tlbnxkZV1xdWV1ZV9idXJzdCgpDQo+ID4g KyAqICAgICB8ICAgUENSRSBiYXNlZCAgICBvLS0tLS0tKyAgfCAgICAgICAgICAgICAgIHwNCj4g PiArICogICAgIHwgIFJlZ0V4IHBhdHRlcm4gIHwgICAgICB8ICB8ICArLS0tLS0tLS0rICAgfA0K PiA+ICsgKiAgICAgfCBtYXRjaGluZyBlbmdpbmUgby0tLS0tLSstLSstLW8gICAgICAgIHwgICB8 ICAgICstLS0tLS0rDQo+ID4gKyAqICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgfCAgfCAg fCBxdWV1ZSAgfDw9PW89PT0+fENvcmUgMHwNCj4gPiArICogICAgIHwgICAgICAgICAgICAgICAg IG8tLS0tKyB8ICB8ICB8IHBhaXIgMCB8ICAgICAgICB8ICAgICAgfA0KPiA+ICsgKiAgICAgfCAg ICAgICAgICAgICAgICAgfCAgICB8IHwgIHwgICstLS0tLS0tLSsgICAgICAgICstLS0tLS0rDQo+ ID4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAgIHwgfCAgfA0KPiA+ICsgKiAgICAgICAg ICAgIF4gICAgICAgICAgICAgICB8IHwgIHwgICstLS0tLS0tLSsNCj4gPiArICogICAgICAgICAg ICB8ICAgICAgICAgICAgICAgfCB8ICB8ICB8ICAgICAgICB8ICAgICAgICArLS0tLS0tKw0KPiA+ ICsgKiAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICstLSstLW8gcXVldWUgIHw8PT09PT09 PnxDb3JlIDF8DQo+ID4gKyAqICAgICAgICBSdWxlfERhdGFiYXNlICAgICAgIHwgICAgfCAgfCBw YWlyIDEgfCAgICAgICAgfCAgICAgIHwNCj4gPiArICogICAgICstLS0tLS0rLS0tLS0tLS0tLSsg ICAgfCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCAgICAg R3JvdXAgMCAgICAgfCAgICB8ICAgIHwNCj4gPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwg ICAgfCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCB8IFJ1 bGVzIDAuLm4gIHwgfCAgICB8ICAgIHwgIHwgICAgICAgIHwgICAgICAgIHxDb3JlIDJ8DQo+ID4g KyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgKy0tbyBxdWV1ZSAgfDw9PT09PT0+ fCAgICAgIHwNCj4gPiArICogICAgIHwgICAgIEdyb3VwIDEgICAgIHwgICAgfCAgICAgICB8IHBh aXIgMiB8ICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAg ICB8ICAgICAgICstLS0tLS0tLSsNCj4gPiArICogICAgIHwgfCBSdWxlcyAwLi5uICB8IHwgICAg fA0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAgICAgICstLS0tLS0tLSsN Cj4gPiArICogICAgIHwgICAgIEdyb3VwIDIgICAgIHwgICAgfCAgICAgICB8ICAgICAgICB8ICAg ICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAgICAg IHwgcXVldWUgIHw8PT09PT09PnxDb3JlIG58DQo+ID4gKyAqICAgICB8IHwgUnVsZXMgMC4ubiAg fCB8ICAgICstLS0tLS0tbyBwYWlyIG4gfCAgICAgICAgfCAgICAgIHwNCj4gPiArICogICAgIHwg Ky0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0K PiA+ICsgKiAgICAgfCAgICAgR3JvdXAgbiAgICAgfA0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0t LS0tLSsgfDwtLS0tLS0tcnRlX3JlZ2V4X3J1bGVfZGJfdXBkYXRlKCkNCj4gPiArICogICAgIHwg fCBSdWxlcyAwLi5uICB8IHw8LS0tLS0tLXJ0ZV9yZWdleF9ydWxlX2RiX2ltcG9ydCgpDQo+ID4g KyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8LS0tLS0tLT5ydGVfcmVnZXhfcnVsZV9kYl9leHBv cnQoKQ0KPiA+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKg0KPiA+ICsgKiBS ZWdFeDogQSByZWd1bGFyIGV4cHJlc3Npb24gaXMgYSBjb25jaXNlIGFuZCBmbGV4aWJsZSBtZWFu cyBmb3IgbWF0Y2hpbmcNCj4gPiArICogc3RyaW5ncyBvZiB0ZXh0LCBzdWNoIGFzIHBhcnRpY3Vs YXIgY2hhcmFjdGVycywgd29yZHMsIG9yIHBhdHRlcm5zIG9mDQo+ID4gKyAqIGNoYXJhY3RlcnMu IEEgY29tbW9uIGFiYnJldmlhdGlvbiBmb3IgdGhpcyBpcyDigJxSZWdFeOKAnS4NCj4gPiArICoN Cj4gPiArICogUmVnRXggZGV2aWNlOiBBIGhhcmR3YXJlIG9yIHNvZnR3YXJlLWJhc2VkIGltcGxl bWVudGF0aW9uIG9mIFJlZ0V4DQo+ID4gKyAqIGRldmljZSBBUEkgZm9yIFBDUkUgYmFzZWQgcGF0 dGVybiBtYXRjaGluZyBzeW50YXggYW5kIHNlbWFudGljcy4NCj4gPiArICoNCj4gPiArICogUENS RSBSZWdFeCBzeW50YXggYW5kIHNlbWFudGljcyBzcGVjaWZpY2F0aW9uOg0KPiA+ICsgKg0KPiA+ IGh0dHBzOi8vZXVyMDMuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRw JTNBJTJGJTJGcmVnZXgNCj4gPiBraXQuc291cmNlZm9yZ2UubmV0JTJGRG9jdW1lbnRhdGlvbiUy RnBjcmUlMkZwY3JlcGF0dGVybi5odG1sJmFtcDtkDQo+ID4NCj4gYXRhPTAyJTdDMDElN0NzaGFo YWZzJTQwbWVsbGFub3guY29tJTdDZGY5MzQxNmNmNGU4NDk4YTk4MmMwOGQ3MjENCj4gPg0KPiA3 NDg5MzclN0NhNjUyOTcxYzdkMmU0ZDliYTZhNGQxNDkyNTZmNDYxYiU3QzAlN0MwJTdDNjM3MDE0 NjU2NzMNCj4gPiA5OTkzMTMxJmFtcDtzZGF0YT1CMExTTXVibGREeTNVbEY1NVozd2hoTmlScTZl cDFweEI4UnJ0NURJdGZ3JTMNCj4gPiBEJmFtcDtyZXNlcnZlZD0wDQo+ID4gKyAqDQo+ID4gKyAq IFJlZ0V4IHF1ZXVlIHBhaXI6IEVhY2ggUmVnRXggZGV2aWNlIHNob3VsZCBoYXZlIG9uZSBvciBt b3JlIHF1ZXVlDQo+ID4gcGFpciB0bw0KPiA+ICsgKiB0cmFuc21pdCBhIGJ1cnN0IG9mIHBhdHRl cm4gbWF0Y2hpbmcgcmVxdWVzdCBhbmQgcmVjZWl2ZSBhIGJ1cnN0IG9mDQo+ID4gKyAqIHJlY2Vp dmUgdGhlIHBhdHRlcm4gbWF0Y2hpbmcgcmVzcG9uc2UuIFRoZSBwYXR0ZXJuIG1hdGNoaW5nDQo+ ID4gcmVxdWVzdC9yZXNwb25zZQ0KPiA+ICsgKiBlbWJlZGRlZCBpbiAqcnRlX3JlZ2V4X29wcyog c3RydWN0dXJlLg0KPiA+ICsgKg0KPiA+ICsgKiBSdWxlOiBBIHBhdHRlcm4gbWF0Y2hpbmcgcnVs ZSBleHByZXNzZWQgaW4gUENSRSBSZWdFeCBzeW50YXggYWxvbmcgd2l0aA0KPiA+ICsgKiBNYXRj aCBJRCBhbmQgR3JvdXAgSUQgdG8gaWRlbnRpZnkgdGhlIHJ1bGUgdXBvbiB0aGUgbWF0Y2guDQo+ ID4gKyAqDQo+ID4gKyAqIFJ1bGUgZGF0YWJhc2U6IFRoZSBSZWdFeCBkZXZpY2UgYWNjZXB0cyBy ZWd1bGFyIGV4cHJlc3Npb25zIGFuZA0KPiA+IGNvbnZlcnRzIHRoZW0NCj4gPiArICogaW50byBh IGNvbXBpbGVkIHJ1bGUgZGF0YWJhc2UgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNjYW4gZGF0 YS4NCj4gPiArICogQ29tcGlsYXRpb24gYWxsb3dzIHRoZSBkZXZpY2UgdG8gYW5hbHl6ZSB0aGUg Z2l2ZW4gcGF0dGVybihzKSBhbmQNCj4gPiArICogcHJlLWRldGVybWluZSBob3cgdG8gc2NhbiBm b3IgdGhlc2UgcGF0dGVybnMgaW4gYW4gb3B0aW1pemVkIGZhc2hpb24NCj4gPiB0aGF0DQo+ID4g KyAqIHdvdWxkIGJlIGZhciB0b28gZXhwZW5zaXZlIHRvIGNvbXB1dGUgYXQgcnVuLXRpbWUuIEEg cnVsZSBkYXRhYmFzZQ0KPiA+IGNvbnRhaW5zDQo+ID4gKyAqIGEgc2V0IG9mIHJ1bGVzIHRoYXQg Y29tcGlsZWQgaW4gZGV2aWNlIHNwZWNpZmljIGJpbmFyeSBmb3JtLg0KPiA+ICsgKg0KPiA+ICsg KiBNYXRjaCBJRCBvciBSdWxlIElEOiBBIHVuaXF1ZSBpZGVudGlmaWVyIHByb3ZpZGVkIGF0IHRo ZSB0aW1lIG9mIHJ1bGUNCj4gPiArICogY3JlYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBp ZGVudGlmeSB0aGUgcnVsZSB1cG9uIG1hdGNoLg0KPiA+ICsgKg0KPiA+ICsgKiBHcm91cCBJRDog R3JvdXAgb2YgcnVsZXMgY2FuIGJlIGdyb3VwZWQgdW5kZXIgb25lIGdyb3VwIElEIHRvIGVuYWJs ZQ0KPiA+ICsgKiBydWxlIGlzb2xhdGlvbiBhbmQgZWZmZWN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcu IEEgdW5pcXVlIGdyb3VwIGlkZW50aWZpZXINCj4gPiArICogcHJvdmlkZWQgYXQgdGhlIHRpbWUg b2YgcnVsZSBjcmVhdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGlkZW50aWZ5IHRoZQ0KPiA+ ICsgKiBydWxlIHVwb24gbWF0Y2guDQo+ID4gKyAqDQo+ID4gKyAqIFNjYW46IEEgcGF0dGVybiBt YXRjaGluZyByZXF1ZXN0IHRocm91Z2ggKmVucXVldWUqIEFQSS4NCj4gPiArICoNCj4gPiArICog SXQgbWF5IHBvc3NpYmxlIHRoYXQgYSBnaXZlbiBSZWdFeCBkZXZpY2UgbWF5IG5vdCBzdXBwb3J0 IGFsbCB0aGUgZmVhdHVyZXMNCj4gPiArICogb2YgUENSRS4gVGhlIGFwcGxpY2F0aW9uIG1heSBw cm9iZSB1bnN1cHBvcnRlZCBmZWF0dXJlcyB0aHJvdWdoDQo+ID4gKyAqIHN0cnVjdCBydGVfcmVn ZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gPiArICoNCj4gPiArICogQnkgZGVmYXVs dCwgYWxsIHRoZSBmdW5jdGlvbnMgb2YgdGhlIFJlZ0V4IERldmljZSBBUEkgZXhwb3J0ZWQgYnkg YSBQTUQNCj4gPiArICogYXJlIGxvY2stZnJlZSBmdW5jdGlvbnMgd2hpY2ggYXNzdW1lIHRvIG5v dCBiZSBpbnZva2VkIGluIHBhcmFsbGVsIG9uDQo+ID4gKyAqIGRpZmZlcmVudCBsb2dpY2FsIGNv cmVzIHRvIHdvcmsgb24gdGhlIHNhbWUgdGFyZ2V0IG9iamVjdC4gRm9yIGluc3RhbmNlLA0KPiA+ ICsgKiB0aGUgZGVxdWV1ZSBmdW5jdGlvbiBvZiBhIFBNRCBjYW5ub3QgYmUgaW52b2tlZCBpbiBw YXJhbGxlbCBvbiB0d28NCj4gPiBsb2dpY2FsDQo+ID4gKyAqIGNvcmVzIHRvIG9wZXJhdGVzIG9u IHNhbWUgUmVnRXggcXVldWUgcGFpci4gT2YgY291cnNlLCB0aGlzIGZ1bmN0aW9uDQo+ID4gKyAq IGNhbiBiZSBpbnZva2VkIGluIHBhcmFsbGVsIGJ5IGRpZmZlcmVudCBsb2dpY2FsIGNvcmUgb24g ZGlmZmVyZW50IHF1ZXVlDQo+ID4gcGFpci4NCj4gPiArICogSXQgaXMgdGhlIHJlc3BvbnNpYmls aXR5IG9mIHRoZSB1cHBlciBsZXZlbCBhcHBsaWNhdGlvbiB0byBlbmZvcmNlIHRoaXMgcnVsZS4N Cj4gPiArICoNCj4gPiArICogSW4gYWxsIGZ1bmN0aW9ucyBvZiB0aGUgUmVnRXggQVBJLCB0aGUg UmVnRXggZGV2aWNlIGlzDQo+ID4gKyAqIGRlc2lnbmF0ZWQgYnkgYW4gaW50ZWdlciA+PSAwIG5h bWVkIHRoZSBkZXZpY2UgaWRlbnRpZmllciAqZGV2X2lkKg0KPiA+ICsgKg0KPiA+ICsgKiBBdCB0 aGUgUmVnRXggZHJpdmVyIGxldmVsLCBSZWdFeCBkZXZpY2VzIGFyZSByZXByZXNlbnRlZCBieSBh IGdlbmVyaWMNCj4gPiArICogZGF0YSBzdHJ1Y3R1cmUgb2YgdHlwZSAqcnRlX3JlZ2V4X2Rldiou DQo+ID4gKyAqDQo+ID4gKyAqIFJlZ0V4IGRldmljZXMgYXJlIGR5bmFtaWNhbGx5IHJlZ2lzdGVy ZWQgZHVyaW5nIHRoZSBQQ0kvU29DIGRldmljZQ0KPiA+IHByb2JpbmcNCj4gPiArICogcGhhc2Ug cGVyZm9ybWVkIGF0IEVBTCBpbml0aWFsaXphdGlvbiB0aW1lLg0KPiA+ICsgKiBXaGVuIGEgUmVn RXggZGV2aWNlIGlzIGJlaW5nIHByb2JlZCwgYSAqcnRlX3JlZ2V4X2Rldiogc3RydWN0dXJlIGFu ZA0KPiA+ICsgKiBhIG5ldyBkZXZpY2UgaWRlbnRpZmllciBhcmUgYWxsb2NhdGVkIGZvciB0aGF0 IGRldmljZS4gVGhlbiwgdGhlDQo+ID4gKyAqIHJlZ2V4X2Rldl9pbml0KCkgZnVuY3Rpb24gc3Vw cGxpZWQgYnkgdGhlIFJlZ0V4IGRyaXZlciBtYXRjaGluZyB0aGUNCj4gPiBwcm9iZWQNCj4gPiAr ICogZGV2aWNlIGlzIGludm9rZWQgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgZGV2aWNlLg0K PiA+ICsgKg0KPiA+ICsgKiBUaGUgcm9sZSBvZiB0aGUgZGV2aWNlIGluaXQgZnVuY3Rpb24gY29u c2lzdHMgb2YgcmVzZXR0aW5nIHRoZSBoYXJkd2FyZSBvcg0KPiA+ICsgKiBzb2Z0d2FyZSBSZWdF eCBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0KPiA+ICsgKg0KPiA+ICsgKiBJZiB0aGUgZGV2aWNl IGluaXQgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVu DQo+ID4gKyAqIHRoZSBkZXZpY2UgaWRlbnRpZmllciBhc3NpZ25lZCB0byB0aGUgbmV3IGRldmlj ZSBhbmQgaXRzIGFzc29jaWF0ZWQNCj4gPiArICogKnJ0ZV9yZWdleF9kZXYqIHN0cnVjdHVyZSBp cyBlZmZlY3RpdmVseSByZWdpc3RlcmVkLg0KPiA+ICsgKiBPdGhlcndpc2UsIGJvdGggdGhlICpy dGVfcmVnZXhfZGV2KiBzdHJ1Y3R1cmUgYW5kIHRoZSBkZXZpY2UgaWRlbnRpZmllcg0KPiA+IGFy ZQ0KPiA+ICsgKiBmcmVlZC4NCj4gPiArICoNCj4gPiArICogVGhlIGZ1bmN0aW9ucyBleHBvcnRl ZCBieSB0aGUgYXBwbGljYXRpb24gUmVnRXggQVBJIHRvIHNldHVwIGEgZGV2aWNlDQo+ID4gKyAq IGRlc2lnbmF0ZWQgYnkgaXRzIGRldmljZSBpZGVudGlmaWVyIG11c3QgYmUgaW52b2tlZCBpbiB0 aGUgZm9sbG93aW5nIG9yZGVyOg0KPiA+ICsgKiAgICAgLSBydGVfcmVnZXhfZGV2X2NvbmZpZ3Vy ZSgpDQo+ID4gKyAqICAgICAtIHJ0ZV9yZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gPiArICog ICAgIC0gcnRlX3JlZ2V4X2Rldl9zdGFydCgpDQo+ID4gKyAqDQo+ID4gKyAqIFRoZW4sIHRoZSBh cHBsaWNhdGlvbiBjYW4gaW52b2tlLCBpbiBhbnkgb3JkZXIsIHRoZSBmdW5jdGlvbnMNCj4gPiAr ICogZXhwb3J0ZWQgYnkgdGhlIFJlZ0V4IEFQSSB0byBlbnF1ZXVlIHBhdHRlcm4gbWF0Y2hpbmcg am9iLCBkZXF1ZXVlDQo+ID4gcGF0dGVybg0KPiA+ICsgKiBtYXRjaGluZyByZXNwb25zZSwgZ2V0 IHRoZSBzdGF0cywgdXBkYXRlIHRoZSBydWxlIGRhdGFiYXNlLA0KPiA+ICsgKiBnZXQvc2V0IGRl dmljZSBhdHRyaWJ1dGVzIGFuZCBzbyBvbg0KPiA+ICsgKg0KPiA+ICsgKiBJZiB0aGUgYXBwbGlj YXRpb24gd2FudHMgdG8gY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIChpLmUuIGNhbGwNCj4gPiAr ICogcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUoKSBvciBydGVfcmVnZXhfcXVldWVfcGFpcl9zZXR1 cCgpKSwgaXQgbXVzdA0KPiA+IGNhbGwNCj4gPiArICogcnRlX3JlZ2V4X2Rldl9zdG9wKCkgZmly c3QgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCB0aGVuIGRvIHRoZQ0KPiA+IHJlY29uZmlndXJhdGlv bg0KPiA+ICsgKiBiZWZvcmUgY2FsbGluZyBydGVfcmVnZXhfZGV2X3N0YXJ0KCkgYWdhaW4uIFRo ZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+ID4gKyAqIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIGlu dm9rZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQuDQo+ID4gKyAqDQo+ID4gKyAqIEZpbmFs bHksIGFuIGFwcGxpY2F0aW9uIGNhbiBjbG9zZSBhIFJlZ0V4IGRldmljZSBieSBpbnZva2luZyB0 aGUNCj4gPiArICogcnRlX3JlZ2V4X2Rldl9jbG9zZSgpIGZ1bmN0aW9uLg0KPiA+ICsgKg0KPiA+ ICsgKiBFYWNoIGZ1bmN0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiBSZWdFeCBBUEkgaW52b2tlcyBh IHNwZWNpZmljIGZ1bmN0aW9uDQo+ID4gKyAqIG9mIHRoZSBQTUQgdGhhdCBjb250cm9scyB0aGUg dGFyZ2V0IGRldmljZSBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UNCj4gPiArICogaWRlbnRpZmll ci4NCj4gPiArICoNCj4gPiArICogRm9yIHRoaXMgcHVycG9zZSwgYWxsIGRldmljZS1zcGVjaWZp YyBmdW5jdGlvbnMgb2YgYSBSZWdFeCBkcml2ZXIgYXJlDQo+ID4gKyAqIHN1cHBsaWVkIHRocm91 Z2ggYSBzZXQgb2YgcG9pbnRlcnMgY29udGFpbmVkIGluIGEgZ2VuZXJpYyBzdHJ1Y3R1cmUgb2Yg dHlwZQ0KPiA+ICsgKiAqcmVnZXhfZGV2X29wcyouDQo+ID4gKyAqIFRoZSBhZGRyZXNzIG9mIHRo ZSAqcmVnZXhfZGV2X29wcyogc3RydWN0dXJlIGlzIHN0b3JlZCBpbiB0aGUNCj4gPiAqcnRlX3Jl Z2V4X2RldioNCj4gPiArICogc3RydWN0dXJlIGJ5IHRoZSBkZXZpY2UgaW5pdCBmdW5jdGlvbiBv ZiB0aGUgUmVnRXggZHJpdmVyLCB3aGljaCBpcw0KPiA+ICsgKiBpbnZva2VkIGR1cmluZyB0aGUg UENJL1NvQyBkZXZpY2UgcHJvYmluZyBwaGFzZSwgYXMgZXhwbGFpbmVkIGVhcmxpZXIuDQo+ID4g KyAqDQo+ID4gKyAqIEluIG90aGVyIHdvcmRzLCBlYWNoIGZ1bmN0aW9uIG9mIHRoZSBSZWdFeCBB UEkgc2ltcGx5IHJldHJpZXZlcyB0aGUNCj4gPiArICogKnJ0ZV9yZWdleF9kZXYqIHN0cnVjdHVy ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBpZGVudGlmaWVyIGFuZA0KPiA+ICsgKiBwZXJm b3JtcyBhbiBpbmRpcmVjdCBpbnZvY2F0aW9uIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBm dW5jdGlvbg0KPiA+ICsgKiBzdXBwbGllZCBpbiB0aGUgKnJlZ2V4X2Rldl9vcHMqIHN0cnVjdHVy ZSBvZiB0aGUgKnJ0ZV9yZWdleF9kZXYqDQo+ID4gc3RydWN0dXJlLg0KPiA+ICsgKg0KPiA+ICsg KiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhlIGFkZHJlc3Mgb2YgdGhlIGZhc3QtcGF0aCBm dW5jdGlvbnMgb2YgdGhlDQo+ID4gKyAqIFJlZ0V4IGRyaXZlciBpcyBub3QgY29udGFpbmVkIGlu IHRoZSAqcmVnZXhfZGV2X29wcyogc3RydWN0dXJlLg0KPiA+ICsgKiBJbnN0ZWFkLCB0aGV5IGFy ZSBkaXJlY3RseSBzdG9yZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgKnJ0ZV9yZWdleF9kZXYq DQo+ID4gKyAqIHN0cnVjdHVyZSB0byBhdm9pZCBhbiBleHRyYSBpbmRpcmVjdCBtZW1vcnkgYWNj ZXNzIGR1cmluZyB0aGVpcg0KPiA+IGludm9jYXRpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFJURSBS ZWdFeCBkZXZpY2UgZHJpdmVycyBkbyBub3QgdXNlIGludGVycnVwdHMgZm9yIGVucXVldWUgb3Ig ZGVxdWV1ZQ0KPiA+ICsgKiBvcGVyYXRpb24uIEluc3RlYWQsIFJlZ0V4IGRyaXZlcnMgZXhwb3J0 IFBvbGwtTW9kZSBlbnF1ZXVlIGFuZA0KPiA+IGRlcXVldWUNCj4gPiArICogZnVuY3Rpb25zIHRv IGFwcGxpY2F0aW9ucy4NCj4gPiArICoNCj4gPiArICogVGhlICplbnF1ZXVlKiBvcGVyYXRpb24g c3VibWl0cyBhIGJ1cnN0IG9mIFJlZ0V4IHBhdHRlcm4gbWF0Y2hpbmcNCj4gPiByZXF1ZXN0DQo+ ID4gKyAqIHRvIHRoZSBSZWdFeCBkZXZpY2UgYW5kIHRoZSAqZGVxdWV1ZSogb3BlcmF0aW9uIGdl dHMgYSBidXJzdCBvZiBwYXR0ZXJuDQo+ID4gKyAqIG1hdGNoaW5nIHJlc3BvbnNlIGZvciB0aGUg b25lcyBzdWJtaXR0ZWQgdGhyb3VnaCAqZW5xdWV1ZSoNCj4gPiBvcGVyYXRpb24uDQo+ID4gKyAq DQo+ID4gKyAqIFR5cGljYWwgYXBwbGljYXRpb24gdXRpbGlzYXRpb24gb2YgdGhlIFJlZ0V4IGRl dmljZSBBUEkgd2lsbCBmb2xsb3cgdGhlDQo+ID4gKyAqIGZvbGxvd2luZyBwcm9ncmFtbWluZyBm bG93Lg0KPiA+ICsgKg0KPiA+ICsgKiAtIHJ0ZV9yZWdleF9kZXZfY29uZmlndXJlKCkNCj4gPiAr ICogLSBydGVfcmVnZXhfcXVldWVfcGFpcl9zZXR1cCgpDQo+ID4gKyAqIC0gcnRlX3JlZ2V4X3J1 bGVfZGJfdXBkYXRlKCkgTmVlZHMgdG8gaW52b2tlIGlmIHByZWNvbXBpbGVkIHJ1bGUNCj4gPiBk YXRhYmFzZSBub3QNCj4gPiArICogICBwcm92aWRlZCBpbiBydGVfcmVnZXhfZGV2X2NvbmZpZzo6 cnVsZV9kYiBmb3INCj4gPiBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpDQo+ID4gKyAqICAgYW5k L29yIGFwcGxpY2F0aW9uIG5lZWRzIHRvIHVwZGF0ZSBydWxlIGRhdGFiYXNlLg0KPiA+ICsgKiAt IENyZWF0ZSBvciByZXVzZSBleGl0aW5nIG1lbXBvb2wgZm9yICpydGVfcmVnZXhfb3BzKiBvYmpl Y3RzLg0KPiA+ICsgKiAtIHJ0ZV9yZWdleF9kZXZfc3RhcnQoKQ0KPiA+ICsgKiAtIHJ0ZV9yZWdl eF9lbnF1ZXVlX2J1cnN0KCkNCj4gPiArICogLSBydGVfcmVnZXhfZGVxdWV1ZV9idXJzdCgpDQo+ ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gK2V4 dGVybiAiQyIgew0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxydGVfY29tbW9u Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfY29uZmlnLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZGV2 Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZXJybm8uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9tZW1v cnkuaD4NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBHZXQgdGhlIHRvdGFsIG51bWJlciBvZiBS ZWdFeCBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseQ0KPiA+ICsgKiBpbml0aWFs aXNlZC4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIFRoZSB0b3RhbCBudW1i ZXIgb2YgdXNhYmxlIFJlZ0V4IGRldmljZXMuDQo+ID4gKyAqLw0KPiA+ICt1aW50OF90DQo+ID4g K3J0ZV9yZWdleF9kZXZfY291bnQodm9pZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogR2V0 IHRoZSBkZXZpY2UgaWRlbnRpZmllciBmb3IgdGhlIG5hbWVkIFJlZ0V4IGRldmljZS4NCj4gPiAr ICoNCj4gPiArICogQHBhcmFtIG5hbWUNCj4gPiArICogICBSZWdFeCBkZXZpY2UgbmFtZSB0byBz ZWxlY3QgdGhlIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0 dXJuDQo+ID4gKyAqICAgUmV0dXJucyBSZWdFeCBkZXZpY2UgaWRlbnRpZmllciBvbiBzdWNjZXNz Lg0KPiA+ICsgKiAgIC0gPDA6IEZhaWx1cmUgdG8gZmluZCBuYW1lZCBSZWdFeCBkZXZpY2UuDQo+ ID4gKyAqLw0KPiA+ICtpbnQNCj4gPiArcnRlX3JlZ2V4X2Rldl9nZXRfZGV2X2lkKGNvbnN0IGNo YXIgKm5hbWUpOw0KPiA+ICsNCj4gPiArLyogRW51bWVyYXRlcyBSZWdFeCBkZXZpY2UgY2FwYWJp bGl0aWVzICovDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX0RFVl9DQVBBX1JVTlRJTUVfQ09NUElM QVRJT05fRiAoMVVMTCA8PCAwKQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBkb2VzIHN1cHBvcnQg Y29tcGlsaW5nIHRoZSBydWxlcyBhdCBydW50aW1lIHVubGlrZQ0KPiA+ICsgKiBsb2FkaW5nIG9u bHkgdGhlIHByZS1idWlsdCBydWxlIGRhdGFiYXNlIHVzaW5nDQo+ID4gKyAqIHN0cnVjdCBydGVf cmVnZXhfZGV2X2NvbmZpZzo6cnVsZV9kYiBpbiBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpDQo+ ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfY29uZmlnOjpydWxlX2RiLCBydGVfcmVn ZXhfZGV2X2NvbmZpZ3VyZSgpDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5m bzo6cmVnZXhfZGV2X2NhcGENCj4gPiArICovDQo+ID4gKw0KPiA+ICsNCj4gPiArLyogRW51bWVy YXRlcyB1bnN1cHBvcnRlZCBQQ1JFIGZlYXR1cmVzIGZvciB0aGUgUmVnRXggZGV2aWNlICovDQo+ ID4gKyNkZWZpbmUgUlRFX1JFR0VYX0RFVl9QQ1JFX1VOU1VQX1NUQVJUX0FOQ0hPUl9GICgxVUxM IDw8IDApDQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIEFuY2hv ciB0byBzdGFydCBvZiBtYXRjaCBmbGFnLg0KPiA+ICsgKiBFeGFtcGxlIFJlZ0V4IGlzICcvXEdm b29cZC8nLiBIZXJlICdcRycgYXNzZXJ0cyBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZQ0KPiA+ ICsgKiBwcmV2aW91cyBtYXRjaCBvciB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyBmb3IgdGhlIGZp cnN0IG1hdGNoLg0KPiA+ICsgKiBUaGlzIHBvc2l0aW9uIHdpbGwgY2hhbmdlIGVhY2ggdGltZSB0 aGUgUmVnRXggaXMgYXBwbGllZCB0byB0aGUgc3ViamVjdA0KPiA+ICsgKiBzdHJpbmcuIElmIHRo ZSBSZWdFeCBpcyBhcHBsaWVkIHRvICdmb28xZm9vMlpmb28zJyB0aGUgZmlyc3QgdHdvIG1hdGNo ZXMgd2lsbA0KPiA+ICsgKiBiZSBzdWNjZXNzZnVsIGZvciAnZm9vMWZvbzInIGFuZCBmYWlsIGZv ciAnWmZvbzMnLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVf dW5zdXBfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZf UENSRV9VTlNVUF9BVE9NSUNfR1JPVVBJTkdfRiAoMVVMTCA8PA0KPiA+IDEpDQo+ID4gKy8qKjwg UmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIEF0b21pYyBncm91cGluZy4NCj4gPiAr ICogQXRvbWljIGdyb3VwcyBhcmUgcmVwcmVzZW50ZWQgYnkgJyg/PiknLiBBbiBhdG9taWMgZ3Jv dXAgaXMgYSBncm91cCB0aGF0LA0KPiA+ICsgKiB3aGVuIHRoZSBSZWdFeCBlbmdpbmUgZXhpdHMg ZnJvbSBpdCwgYXV0b21hdGljYWxseSB0aHJvd3MgYXdheSBhbGwNCj4gPiArICogYmFja3RyYWNr aW5nIHBvc2l0aW9ucyByZW1lbWJlcmVkIGJ5IGFueSB0b2tlbnMgaW5zaWRlIHRoZSBncm91cC4N Cj4gPiArICogRXhhbXBsZSBSZWdFeCBpcyAnYSg/PmJjfGIpYycgaWYgdGhlIGdpdmVuIHBhdHRl cm5zIGFyZSAnYWJjJyBhbmQgJ2FiY2MnDQo+ID4gdGhlbg0KPiA+ICsgKiAnYShiY3xiKWMnIG1h dGNoZXMgYm90aCB3aGVyZSBhcyAnYSg/PmJjfGIpYycgbWF0Y2hlcyBvbmx5IGFiY2MgYmVjYXVz ZQ0KPiA+ICsgKiBhdG9taWMgZ3JvdXBzIGRvbid0IGFsbG93IGJhY2t0cmFjaW5nIGJhY2sgdG8g J2InLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBf ZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9V TlNVUF9CQUNLVFJBQ0tJTkdfQ1RSTF9GICgxVUxMIDw8DQo+ID4gMikNCj4gPiArLyoqPCBSZWdF eCBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBDUkUgYmFja3RyYWNraW5nIGNvbnRyb2wgdmVyYnMu DQo+ID4gKyAqIFNvbWUgZXhhbXBsZXMgb2YgYmFja3RyYWNpbmcgdmVyYnMgYXJlICgqQ09NTUlU KSwgKCpBQ0NFUFQpLCAoKkZBSUwpLA0KPiA+ICsgKiAoKlNLSVApLCAoKlBSVU5FKS4NCj4gPiAr ICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ID4g KyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfQ0FMTE9V VFNfRiAoMVVMTCA8PCAzKQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vzbid0IHN1cHBvcnQg UENSRSBjYWxsb3V0cy4NCj4gPiArICogUENSRSBzdXBwb3J0cyBjYWxsaW5nIGV4dGVybmFsIGZ1 bmN0aW9uIGluIGJldHdlZW4gbWF0Y2hlcyBieSB1c2luZw0KPiA+ICcoP0MpJy4NCj4gPiArICog RXhhbXBsZSBSZWdFeCAnQUJDKD9DKUQnIGlmIGEgZ2l2ZW4gcGF0dGVyIGlzICdBQkNEJyB0aGVu IHRoZSBSZWdFeA0KPiA+IGVuZ2luZQ0KPiA+ICsgKiB3aWxsIHBhcnNlIEFCQyBwZXJmb3JtIGEg dXNlcmRlZmluZWQgY2FsbG91dCBhbmQgcmV0dXJuIGEgc3VjY2Vzc2Z1bA0KPiA+IG1hdGNoIGF0 DQo+ID4gKyAqIEQuDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cGNy ZV91bnN1cF9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX0RF Vl9QQ1JFX1VOU1VQX0JBQ0tSRUZFUkVOQ0VfRiAoMVVMTCA8PCA0KQ0KPiA+ICsvKio8IFJlZ0V4 IGRldmljZSBkb2Vzbid0IHN1cHBvcnQgUENSRSBiYWNrcmVmZXJlbmNlLg0KPiA+ICsgKiBFeGFt cGxlIFJlZ0V4IGlzICcoXDJBQkN8KEdISSkpKycgXDIgbWF0Y2hlcyB0aGUgc2FtZSB0ZXh0IGFz IG1vc3QNCj4gPiByZWNlbnRseQ0KPiA+ICsgKiBtYXRjaGVkIGJ5IHRoZSAybmQgY2FwdHVyaW5n IGdyb3VwIGkuZS4gJ0dISScuDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5m bzo6cGNyZV91bnN1cF9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JF R0VYX0RFVl9QQ1JFX1VOU1VQX0dSRUVEWV9GICgxVUxMIDw8IDUpDQo+ID4gKy8qKjwgUmVnRXgg ZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIEdyZWVkeSBtb2RlLg0KPiA+ICsgKiBGb3IgZXhh bXBsZSBpZiB0aGUgUmVnRXggaXMgJ0FCXGQqPycgdGhlbiAnKj8nIHJlcHJlc2VudHMgemVybyBv cg0KPiA+IHVubGltaXRlZA0KPiA+ICsgKiBtYXRjaGVzLiBJbiBncmVlZHkgbW9kZSB0aGUgcGF0 dGVybiAnQUIxMjM0NScgd2lsbCBiZSBtYXRjaGVkDQo+ID4gY29tcGxldGVseQ0KPiA+ICsgKiB3 aGVyZSBhcyB0aGUgdW5ncmVlZHkgbW9kZSAnQUInIHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIG1h dGNoLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBf ZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9V TlNVUF9MT09LQVJPVU5EX0FTUlRfRiAoMVVMTCA8PA0KPiA+IDYpDQo+ID4gKy8qKjwgUmVnRXgg ZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIExvb2thcm91bmQgYXNzZXJ0aW9ucw0KPiA+ICsg KiAoWmVyby13aWR0aCBhc3NlcnRpb25zKS4gRXhhbXBsZSBSZWdFeCBpcyAnW2Etel0rXGQrKD89 IXszLH0pJyBpZg0KPiA+ICsgKiB0aGUgZ2l2ZW4gcGF0dGVybiBpcyAnZHdhZDEyMzQhJyB0aGUg UmVnRXggZW5naW5lIGRvZXNuJ3QgcmVwb3J0IGFueQ0KPiA+IG1hdGNoZXMNCj4gPiArICogYmVj YXVzZSB0aGUgYXNzZXJ0ICcoPz0hezMsfSknIGZhaWxzLiBUaGUgcGF0dGVybiAnZHdhZDEyMyEh IScgd291bGQgcmV0dXJuDQo+ID4gYQ0KPiA+ICsgKiBzdWNjZXNzZnVsIG1hdGNoLg0KPiA+ICsg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gPiAr ICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF9NQVRDSF9Q T0lOVF9SU1RfRiAoMVVMTCA8PA0KPiA+IDcpDQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNu J3Qgc3VwcG9ydCBQQ1JFIG1hdGNoIHBvaW50IHJlc2V0IGRpcmVjdGl2ZS4NCj4gPiArICogRXhh bXBsZSBSZWdFeCBpcyAnW2Etel0rXEtcZCsnIGlmIHRoZSBwYXR0ZXJuIGlzICdkd2FkMTIzJw0K PiA+ICsgKiB0aGVuIGV2ZW4gdGhvdWdoIHRoZSBlbnRpcmUgcGF0dGVybiBtYXRjaGVzIG9ubHkg JzEyMycNCj4gPiArICogaXMgcmVwb3J0ZWQgYXMgYSBtYXRjaC4NCj4gPiArICogQHNlZSBzdHJ1 Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsN Cj4gPiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfTkVXTElORV9DT05WRU5USU9O U19GDQo+ID4gKDFVTEwgPDwgOCkNCj4gPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lc24ndCBzdXBw b3J0IFBDUkUgbmV3bGluZSBjb252ZW50aW9uLg0KPiA+ICsgKiBOZXdsaW5lIGNvbnZlbnRpb25z IGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOg0KPiA+ICsgKiAoKkNSKSAgICAgICAgY2Fycmlh Z2UgcmV0dXJuDQo+ID4gKyAqICgqTEYpICAgICAgICBsaW5lZmVlZA0KPiA+ICsgKiAoKkNSTEYp ICAgICAgY2FycmlhZ2UgcmV0dXJuLCBmb2xsb3dlZCBieSBsaW5lZmVlZA0KPiA+ICsgKiAoKkFO WUNSTEYpICAgYW55IG9mIHRoZSB0aHJlZSBhYm92ZQ0KPiA+ICsgKiAoKkFOWSkgICAgICAgYWxs IFVuaWNvZGUgbmV3bGluZSBzZXF1ZW5jZXMNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4 X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmlu ZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfTkVXTElORV9TRVFfRiAoMVVMTCA8PCA5KQ0KPiA+ ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vzbid0IHN1cHBvcnQgUENSRSBuZXdsaW5lIHNlcXVlbmNl Lg0KPiA+ICsgKiBUaGUgZXNjYXBlIHNlcXVlbmNlICdcUicgd2lsbCBtYXRjaCBhbnkgbmV3bGlu ZSBzZXF1ZW5jZS4NCj4gPiArICogSXQgaXMgZXF1aXZhbGVudCB0bzogJyg/PlxyXG58XG58XHgw YnxcZnxccnxceDg1KScuDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6 cGNyZV91bnN1cF9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VY X0RFVl9QQ1JFX1VOU1VQX1BPU1NFU1NJVkVfUVVBTElGSUVSU19GICgxVUxMDQo+ID4gPDwgMTAp DQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIHBvc3Nlc3NpdmUg cXVhbGlmaWVycy4NCj4gPiArICogRXhhbXBsZSBSZWdFeCBwb3NzZXNzaXZlIHF1YWxpZmllcnMg JyorJywgJysrJywgJz8rJywgJ3ttLG59KycuDQo+ID4gKyAqIFBvc3Nlc3NpdmUgcXVhbnRpZmll ciByZXBlYXRzIHRoZSB0b2tlbiBhcyBtYW55IHRpbWVzIGFzIHBvc3NpYmxlIGFuZCBpdA0KPiA+ IGRvZXMNCj4gPiArICogbm90IGdpdmUgdXAgbWF0Y2hlcyBhcyB0aGUgZW5naW5lIGJhY2t0cmFj a3MuIFdpdGggYSBwb3NzZXNzaXZlDQo+ID4gcXVhbnRpZmllciwNCj4gPiArICogdGhlIGRlYWwg aXMgYWxsIG9yIG5vdGhpbmcuDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5m bzo6cGNyZV91bnN1cF9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JF R0VYX0RFVl9QQ1JFX1VOU1VQX1NVQlJPVVRJTkVfUkVGRVJFTkNFU19GDQo+ID4gKDFVTEwgPDwg MTEpDQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIFN1YnJvdXRp bmUgcmVmZXJlbmNlcy4NCj4gPiArICogUENSRSBTdWJyb3V0aW5lIHJlZmVyZW5jZXMgYWxsb3cg Zm9yIHN1YiBwYXR0ZXJucyB0byBiZSBhc3Nlc3NlZA0KPiA+ICsgKiBhcyBwYXJ0IG9mIHRoZSBS ZWdFeC4gRXhhbXBsZSBSZWdFeCBpcyAnKGZvb3xmdXp6KVxnPDE+K2JhcicgbWF0Y2hlcyB0aGUN Cj4gPiArICogcGF0dGVybiAnZm9vZm9vZnV6emZvb2Z1enpiYXInLg0KPiA+ICsgKiBAc2VlIHN0 cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gPiArICovDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF9VVEZfOF9GICgxVUxMIDw8 IDEyKQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vzbid0IHN1cHBvcnQgVVRGLTggY2hhcmFj dGVyIGVuY29kaW5nLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBj cmVfdW5zdXBfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9E RVZfUENSRV9VTlNVUF9VVEZfMTZfRiAoMVVMTCA8PCAxMykNCj4gPiArLyoqPCBSZWdFeCBkZXZp Y2UgZG9lc24ndCBzdXBwb3J0IFVURi0xNiBjaGFyYWN0ZXIgZW5jb2RpbmcuDQo+ID4gKyAqIEBz ZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cGNyZV91bnN1cF9mbGFncw0KPiA+ICsgKi8N Cj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX0RFVl9QQ1JFX1VOU1VQX1VURl8zMl9GICgx VUxMIDw8IDE0KQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vzbid0IHN1cHBvcnQgVVRGLTMy IGNoYXJhY3RlciBlbmNvZGluZy4NCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9p bmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVf UkVHRVhfREVWX1BDUkVfVU5TVVBfV09SRF9CT1VOREFSWV9GICgxVUxMIDw8DQo+ID4gMTUpDQo+ ID4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB3b3JkIGJvdW5kYXJpZXMuDQo+ ID4gKyAqIFRoZSBtZXRhIGNoYXJhY3RlciAnXGInIHJlcHJlc2VudHMgd29yZCBib3VuZGFyeSBh bmNob3IuDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cGNyZV91bnN1 cF9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX0RFVl9QQ1JF X1VOU1VQX0ZPUldBUkRfUkVGRVJFTkNFU19GICgxVUxMDQo+ID4gPDwgMTYpDQo+ID4gKy8qKjwg UmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBGb3J3YXJkIHJlZmVyZW5jZXMuDQo+ID4gKyAq IEZvcndhcmQgcmVmZXJlbmNlcyBhbGxvdyB5b3UgdG8gdXNlIGEgYmFjayByZWZlcmVuY2UgdG8g YSBncm91cCB0aGF0DQo+ID4gYXBwZWFycw0KPiA+ICsgKiBsYXRlciBpbiB0aGUgUmVnRXguIEV4 YW1wbGUgUmVnRXggaXMgJyhcM0FCQ3woREVGfChHSEkpKSkrJyBtYXRjaGVzIHRoZQ0KPiA+ICsg KiBmb2xsb3dpbmcgc3RyaW5nICdHSElHSElBQkNERUYnLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ ICsvKiBFbnVtZXJhdGVzIFBDUkUgcnVsZSBmbGFncyAqLw0KPiA+ICsjZGVmaW5lIFJURV9SRUdF WF9QQ1JFX1JVTEVfQUxMT1dfRU1QVFlfRiAoMVVMTCA8PCAwKQ0KPiA+ICsvKio8IFdoZW4gdGhp cyBmbGFnIGlzIHNldCwgdGhlIHBhdHRlcm4gdGhhdCBjYW4gbWF0Y2ggYWdhaW5zdCBhbiBlbXB0 eQ0KPiA+IHN0cmluZywNCj4gPiArICogc3VjaCBhcyAnLionIGFyZSBhbGxvd2VkLg0KPiA+ICsg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiA+ IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmlu ZSBSVEVfUkVHRVhfUENSRV9SVUxFX0FOQ0hPUkVEX0YgKDFVTEwgPDwgMSkNCj4gPiArLyoqPCBX aGVuIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSBwYXR0ZXJuIGlzIGZvcmNlZCB0byBiZSAiYW5jaG9y ZWQiLCB0aGF0IGlzLCBpdA0KPiA+ICsgKiBpcyBjb25zdHJhaW5lZCB0byBtYXRjaCBvbmx5IGF0 IHRoZSBmaXJzdCBtYXRjaGluZyBwb2ludCBpbiB0aGUgc3RyaW5nIHRoYXQNCj4gPiArICogaXMg YmVpbmcgc2VhcmNoZWQuIFNpbWlsYXIgdG8gJ14nIGFuZCByZXByZXNlbnRlZCBieSBcQS4NCj4g PiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpydWxlX2ZsYWdzLCBzdHJ1Y3QN Cj4gPiBydGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNk ZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9DQVNFTEVTU19GICgxVUxMIDw8IDIpDQo+ID4gKy8q KjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBsZXR0ZXJzIGluIHRoZSBwYXR0ZXJuIG1hdGNoIGJv dGggdXBwZXIgYW5kDQo+ID4gbG93ZXINCj4gPiArICogY2FzZSBsZXR0ZXJzIGluIHRoZSBzdWJq ZWN0Lg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3Ms IHN0cnVjdA0KPiA+IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsN Cj4gPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX0RPVEFMTF9GICgxVUxMIDw8IDMpDQo+ ID4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBhIGRvdCBtZXRhY2hhcmFjdGVyIGluIHRo ZSBwYXR0ZXJuIG1hdGNoZXMgYW55DQo+ID4gKyAqIGNoYXJhY3RlciwgaW5jbHVkaW5nIG9uZSB0 aGF0IGluZGljYXRlcyBhIG5ld2xpbmUuDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9k ZXZfaW5mbzo6cnVsZV9mbGFncywgc3RydWN0DQo+ID4gcnRlX3JlZ2V4X3J1bGU6OnJ1bGVfZmxh Z3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfRFVQ TkFNRVNfRiAoMVVMTCA8PCA0KQ0KPiA+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgbmFt ZXMgdXNlZCB0byBpZGVudGlmeSBjYXB0dXJlIGdyb3VwcyBuZWVkIG5vdA0KPiA+IGJlDQo+ID4g KyAqIHVuaXF1ZS4NCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpydWxl X2ZsYWdzLCBzdHJ1Y3QNCj4gPiBydGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8N Cj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9FWFRFTkRFRF9GICgxVUxM IDw8IDUpDQo+ID4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBtb3N0IHdoaXRlIHNwYWNl IGNoYXJhY3RlcnMgaW4gdGhlIHBhdHRlcm4gYXJlDQo+ID4gKyAqIHRvdGFsbHkgaWdub3JlZCBl eGNlcHQgd2hlbiBlc2NhcGVkIG9yIGluc2lkZSBhIGNoYXJhY3RlciBjbGFzcy4NCj4gPiArICog QHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpydWxlX2ZsYWdzLCBzdHJ1Y3QNCj4gPiBy dGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUg UlRFX1JFR0VYX1BDUkVfUlVMRV9NQVRDSF9VTlNFVF9CQUNLUkVGX0YgKDFVTEwgPDwgNikNCj4g PiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGEgYmFja3JlZmVyZW5jZSB0byBhbiB1bnNl dCBjYXB0dXJlIGdyb3VwDQo+ID4gbWF0Y2hlcyBhbg0KPiA+ICsgKiBlbXB0eSBzdHJpbmcuDQo+ ID4gKyAqIEBzZWUgUlRFX1JFR0VYX0RFVl9QQ1JFX1VOU1VQX0ZPUldBUkRfUkVGRVJFTkNFU19G DQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncywgc3Ry dWN0DQo+ID4gcnRlX3JlZ2V4X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfTVVMVElMSU5FX0YgKDFVTEwgPDwgNykNCj4g PiArLyoqPCBXaGVuIHRoaXMgZmxhZyAgaXMgc2V0LCB0aGUgJ14nIGFuZCAnJCcgY29uc3RydWN0 cyBtYXRjaCBpbW1lZGlhdGVseQ0KPiA+ICsgKiBmb2xsb3dpbmcgb3IgaW1tZWRpYXRlbHkgYmVm b3JlIGludGVybmFsIG5ld2xpbmVzIGluIHRoZSBzdWJqZWN0IHN0cmluZywNCj4gPiArICogcmVz cGVjdGl2ZWx5LCBhcyB3ZWxsIGFzIGF0IHRoZSB2ZXJ5IHN0YXJ0IGFuZCBlbmQuDQo+ID4gKyAq IEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncywgc3RydWN0DQo+ID4g cnRlX3JlZ2V4X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5l IFJURV9SRUdFWF9QQ1JFX1JVTEVfTk9fQVVUT19DQVBUVVJFX0YgKDFVTEwgPDwgOCkNCj4gPiAr LyoqPCBXaGVuIHRoaXMgRmxhZyBpcyBzZXQsIGl0IGRpc2FibGVzIHRoZSB1c2Ugb2YgbnVtYmVy ZWQgY2FwdHVyaW5nDQo+ID4gKyAqIHBhcmVudGhlc2VzIGluIHRoZSBwYXR0ZXJuLiBSZWZlcmVu Y2VzIHRvIGNhcHR1cmUgZ3JvdXBzDQo+ID4gKGJhY2tyZWZlcmVuY2VzIG9yDQo+ID4gKyAqIHJl Y3Vyc2lvbi9zdWJyb3V0aW5lIGNhbGxzKSBtYXkgb25seSByZWZlciB0byBuYW1lZCBncm91cHMs IHRob3VnaCB0aGUNCj4gPiArICogcmVmZXJlbmNlIGNhbiBiZSBieSBuYW1lIG9yIGJ5IG51bWJl ci4NCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpydWxlX2ZsYWdzLCBz dHJ1Y3QNCj4gPiBydGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9VQ1BfRiAoMVVMTCA8PCA5KQ0KPiA+ICsv Kio8IEJ5IGRlZmF1bHQsIG9ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcmVjb2duaXplZCwgV2hl biB0aGlzIGZsYWcgaXMgc2V0LA0KPiA+ICsgKiBVbmljb2RlIHByb3BlcnRpZXMgYXJlIHVzZWQg aW5zdGVhZCB0byBjbGFzc2lmeSBjaGFyYWN0ZXJzLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVf cmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiA+IHJ0ZV9yZWdleF9ydWxlOjpy dWxlX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9S VUxFX1VOR1JFRURZX0YgKDFVTEwgPDwgMTApDQo+ID4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMg c2V0LCB0aGUgImdyZWVkaW5lc3MiIG9mIHRoZSBxdWFudGlmaWVycyBpcyBpbnZlcnRlZA0KPiA+ ICsgKiBzbyB0aGF0IHRoZXkgYXJlIG5vdCBncmVlZHkgYnkgZGVmYXVsdCwgYnV0IGJlY29tZSBn cmVlZHkgaWYgZm9sbG93ZWQgYnkNCj4gPiArICogJz8nLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiA+IHJ0ZV9yZWdleF9ydWxl OjpydWxlX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfUENS RV9SVUxFX1VURl9GICgxVUxMIDw8IDExKQ0KPiA+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNl dCwgUmVnRXggZW5naW5lIGhhcyB0byByZWdhcmQgYm90aCB0aGUgcGF0dGVybiBhbmQNCj4gPiB0 aGUNCj4gPiArICogc3ViamVjdCBzdHJpbmdzIHRoYXQgYXJlIHN1YnNlcXVlbnRseSBwcm9jZXNz ZWQgYXMgc3RyaW5ncyBvZiBVVEYNCj4gPiBjaGFyYWN0ZXJzDQo+ID4gKyAqIGluc3RlYWQgb2Yg c2luZ2xlLWNvZGUtdW5pdCBzdHJpbmdzLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhf ZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiA+IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2Zs YWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX05F VkVSX0JBQ0tTTEFTSF9DX0YgKDFVTEwgPDwgMTIpDQo+ID4gKy8qKjwgVGhpcyBGbGFnIGxvY2tz IG91dCB0aGUgdXNlIG9mICdcQycgaW4gdGhlIHBhdHRlcm4gdGhhdCBpcyBiZWluZyBjb21waWxl ZC4NCj4gPiArICogVGhpcyBlc2NhcGUgbWF0Y2hlcyBvbmUgZGF0YSB1bml0LCBldmVuIGluIFVU RiBtb2RlIHdoaWNoIGNhbiBjYXVzZQ0KPiA+ICsgKiB1bnByZWRpY3RhYmxlIGJlaGF2aW9yIGlu IFVURi04IG9yIFVURi0xNiBtb2RlcywgYmVjYXVzZSBpdCBtYXkgbGVhdmUNCj4gPiB0aGUNCj4g PiArICogY3VycmVudCBtYXRjaGluZyBwb2ludCBpbiB0aGUgbWlkZGxlIG9mIGEgbXVsdGktY29k ZS11bml0IGNoYXJhY3Rlci4NCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZv OjpydWxlX2ZsYWdzLCBzdHJ1Y3QNCj4gPiBydGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiA+ ICsgKi8NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogUmVnRXggZGV2aWNlIGluZm9y bWF0aW9uDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvIHsNCj4gPiAr CWNvbnN0IGNoYXIgKmRyaXZlcl9uYW1lOyAvKio8IFJlZ0V4IGRyaXZlciBuYW1lICovDQo+ID4g KwlzdHJ1Y3QgcnRlX2RldmljZSAqZGV2OwkvKio8IERldmljZSBpbmZvcm1hdGlvbiAqLw0KPiA+ ICsJdWludDhfdCBtYXhfbWF0Y2hlczsNCj4gPiArCS8qKjwgTWF4aW11bSBtYXRjaGVzIHBlciBz Y2FuIHN1cHBvcnRlZCBieSB0aGlzIGRldmljZSAqLw0KPiA+ICsJdWludDE2X3QgbWF4X3F1ZXVl X3BhaXJzOw0KPiA+ICsJLyoqPCBNYXhpbXVtIHF1ZXVlIHBhaXJzIHN1cHBvcnRlZCBieSB0aGlz IGRldmljZSAqLw0KPiA+ICsJdWludDE2X3QgbWF4X3BheWxvYWRfc2l6ZTsNCj4gPiArCS8qKjwg TWF4aW11bSBwYXlsb2FkIHNpemUgZm9yIGEgcGF0dGVybiBtYXRjaCByZXF1ZXN0IG9yIHNjYW4u DQo+ID4gKwkgKiBAc2VlIFJURV9SRUdFWF9ERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YNCj4g PiArCSAqLw0KPiA+ICsJdWludDE2X3QgbWF4X3J1bGVzX3Blcl9ncm91cDsNCj4gPiArCS8qKjwg TWF4aW11bSBydWxlcyBzdXBwb3J0ZWQgcGVyIGdyb3VwIGJ5IHRoaXMgZGV2aWNlICovDQo+ID4g Kwl1aW50MTZfdCBtYXhfZ3JvdXBzOw0KPiA+ICsJLyoqPCBNYXhpbXVtIGdyb3VwIHN1cHBvcnRl ZCBieSB0aGlzIGRldmljZSAqLw0KPiA+ICsJdWludDMyX3QgcmVnZXhfZGV2X2NhcGE7DQo+ID4g KwkvKio8IFJlZ0V4IGRldmljZSBjYXBhYmlsaXRpZXMuIEBzZWUgUlRFX1JFR0VYX0RFVl9DQVBB XyogKi8NCj4gPiArCXVpbnQ2NF90IHJ1bGVfZmxhZ3M7DQo+ID4gKwkvKio8IFN1cHBvcnRlZCBj b21waWxlciBydWxlIGZsYWdzLg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfUENSRV9SVUxFXyos IHN0cnVjdCBydGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsJICovDQo+ID4gKwl1aW50 NjRfdCBwY3JlX3Vuc3VwX2ZsYWdzOw0KPiA+ICsJLyoqPCBVbnN1cHBvcnRlZCBQQ1JFIGZlYXR1 cmVzIGZvciB0aGlzIFJlZ0V4IGRldmljZS4NCj4gPiArCSAqIEBzZWUgUlRFX1JFR0VYX0RFVl9Q Q1JFX1VOU1VQXyoNCj4gPiArCSAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IFJldHJpZXZlIHRoZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIG9mIGEgUmVnRXggZGV2aWNlLg0K PiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAgVGhlIGlkZW50aWZpZXIg b2YgdGhlIGRldmljZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtW291dF0gZGV2X2luZm8NCj4g PiArICogICBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdHlwZSAqcnRlX3JlZ2V4X2Rldl9p bmZvKiB0byBiZSBmaWxsZWQgd2l0aA0KPiA+IHRoZQ0KPiA+ICsgKiAgIGNvbnRleHR1YWwgaW5m b3JtYXRpb24gb2YgdGhlIGRldmljZS4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsg KiAgIC0gMDogU3VjY2VzcywgZHJpdmVyIHVwZGF0ZXMgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRp b24gb2YgdGhlIFJlZ0V4DQo+ID4gZGV2aWNlDQo+ID4gKyAqICAgLSA8MDogRXJyb3IgY29kZSBy ZXR1cm5lZCBieSB0aGUgZHJpdmVyIGluZm8gZ2V0IGZ1bmN0aW9uLg0KPiA+ICsgKg0KPiA+ICsg Ki8NCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleF9kZXZfaW5mb19nZXQodWludDhfdCBkZXZfaWQs IHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm8NCj4gPiAqZGV2X2luZm8pOw0KPiA+ICsNCj4gPiAr LyogRW51bWVyYXRlcyBSZWdFeCBkZXZpY2UgY29uZmlndXJhdGlvbiBmbGFncyAqLw0KPiA+ICsj ZGVmaW5lIFJURV9SRUdFWF9ERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YgKDFVTEwgPDwgMCkN Cj4gPiArLyoqPCBDcm9zcyBidWZmZXIgc2NhbiByZWZlcnMgdG8gdGhlIGFiaWxpdHkgdG8gYmUg YWJsZSB0byBkZXRlY3QNCj4gPiArICogbWF0Y2hlcyB0aGF0IG9jY3VyIGFjcm9zcyBidWZmZXIg Ym91bmRhcmllcywgd2hlcmUgdGhlIGJ1ZmZlcnMgYXJlDQo+ID4gcmVsYXRlZA0KPiA+ICsgKiB0 byBlYWNoIG90aGVyIGluIHNvbWUgd2F5LiBFbmFibGUgdGhpcyBmbGFnIHdoZW4gdG8gc2NhbiBw YXlsb2FkIHNpemUNCj4gPiArICogZ3JlYXRlciBzdHJ1Y3Qgc3RydWN0IHJ0ZV9yZWdleF9kZXZf aW5mbzo6bWF4X3BheWxvYWRfc2l6ZSBhbmQvb3INCj4gPiArICogbWF0Y2hlcyBjYW4gcHJlc2Vu dCBhY3Jvc3Mgc2NhbiBidWZmZXIgYm91bmRhcmllcy4NCj4gPiArICoNCj4gPiArICogQHNlZSBz dHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjptYXhfcGF5bG9hZF9zaXplDQo+ID4gKyAqIEBzZWUg c3RydWN0IHJ0ZV9yZWdleF9kZXZfY29uZmlnOjpkZXZfY2ZnX2ZsYWdzLA0KPiA+IHJ0ZV9yZWdl eF9kZXZfY29uZmlndXJlKCkNCj4gPiArICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfU09K X0YNCj4gPiArICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfRU9KX0YNCj4gPiArICovDQo+ ID4gKw0KPiA+ICsvKiogUmVnRXggZGV2aWNlIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlICovDQo+ ID4gK3N0cnVjdCBydGVfcmVnZXhfZGV2X2NvbmZpZyB7DQo+ID4gKwl1aW50OF90IG5iX21heF9t YXRjaGVzOw0KPiA+ICsJLyoqPCBNYXhpbXVtIG1hdGNoZXMgcGVyIHNjYW4gY29uZmlndXJlZCBv biB0aGlzIGRldmljZS4NCj4gPiArCSAqIFRoaXMgdmFsdWUgY2Fubm90IGV4Y2VlZCB0aGUgKm1h eF9tYXRjaGVzKg0KPiA+ICsJICogd2hpY2ggcHJldmlvdXNseSBwcm92aWRlZCBpbiBydGVfcmVn ZXhfZGV2X2luZm9fZ2V0KCkuDQo+ID4gKwkgKiBUaGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3 aGljaCBjYXNlLCB2YWx1ZSAxIHVzZWQuDQo+ID4gKwkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhf ZGV2X2luZm86Om1heF9tYXRjaGVzDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQxNl90IG5iX3F1ZXVl X3BhaXJzOw0KPiA+ICsJLyoqPCBOdW1iZXIgb2YgUmVnRXggcXVldWUgcGFpcnMgdG8gY29uZmln dXJlIG9uIHRoaXMgZGV2aWNlLg0KPiA+ICsJICogVGhpcyB2YWx1ZSBjYW5ub3QgZXhjZWVkIHRo ZSAqbWF4X3F1ZXVlX3BhaXJzKiB3aGljaA0KPiA+IHByZXZpb3VzbHkNCj4gPiArCSAqIHByb3Zp ZGVkIGluIHJ0ZV9yZWdleF9kZXZfaW5mb19nZXQoKS4NCj4gPiArCSAqIEBzZWUgc3RydWN0IHJ0 ZV9yZWdleF9kZXZfaW5mbzo6bWF4X3F1ZXVlX3BhaXJzDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQx Nl90IG5iX3J1bGVzX3Blcl9ncm91cDsNCj4gPiArCS8qKjwgTnVtYmVyIG9mIHJ1bGVzIHBlciBn cm91cCB0byBjb25maWd1cmUgb24gdGhpcyBkZXZpY2UuDQo+ID4gKwkgKiBUaGlzIHZhbHVlIGNh bm5vdCBleGNlZWQgdGhlICptYXhfcnVsZXNfcGVyX2dyb3VwKg0KPiA+ICsJICogd2hpY2ggcHJl dmlvdXNseSBwcm92aWRlZCBpbiBydGVfcmVnZXhfZGV2X2luZm9fZ2V0KCkuDQo+ID4gKwkgKiBU aGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlLA0KPiA+ICsJICogc3RydWN0IHJ0 ZV9yZWdleF9kZXZfaW5mbzo6bWF4X3J1bGVzX3Blcl9ncm91cCB1c2VkLg0KPiA+ICsJICogQHNl ZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjptYXhfcnVsZXNfcGVyX2dyb3VwDQo+ID4gKwkg Ki8NCj4gPiArCXVpbnQxNl90IG5iX2dyb3VwczsNCj4gPiArCS8qKjwgTnVtYmVyIG9mIGdyb3Vw cyB0byBjb25maWd1cmUgb24gdGhpcyBkZXZpY2UuDQo+ID4gKwkgKiBUaGlzIHZhbHVlIGNhbm5v dCBleGNlZWQgdGhlICptYXhfZ3JvdXBzKg0KPiA+ICsJICogd2hpY2ggcHJldmlvdXNseSBwcm92 aWRlZCBpbiBydGVfcmVnZXhfZGV2X2luZm9fZ2V0KCkuDQo+ID4gKwkgKiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhfZGV2X2luZm86Om1heF9ncm91cHMNCj4gPiArCSAqLw0KPiA+ICsJY29uc3QgY2hh ciAqcnVsZV9kYjsNCj4gPiArCS8qKjwgSW1wb3J0IGluaXRpYWwgc2V0IG9mIHByZWJ1aWx0IHJ1 bGUgZGF0YWJhc2Ugb24gdGhpcyBkZXZpY2UuDQo+ID4gKwkgKiBUaGUgdmFsdWUgTlVMTCBpcyBh bGxvd2VkLCBpbiB3aGljaCBjYXNlLCB0aGUgZGV2aWNlIHdpbGwgbm90DQo+ID4gKwkgKiBiZSBj b25maWd1cmVkIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UuIEFwcGxpY2F0aW9uIG1heSB1c2UNCj4g PiArCSAqIHJ0ZV9yZWdleF9ydWxlX2RiX3VwZGF0ZSgpIG9yIHJ0ZV9yZWdleF9ydWxlX2RiX2lt cG9ydCgpIEFQSQ0KPiA+ICsJICogdG8gdXBkYXRlIG9yIGltcG9ydCBydWxlIGRhdGFiYXNlIGFm dGVyIHRoZQ0KPiA+ICsJICogcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUoKS4NCj4gPiArCSAqIEBz ZWUgcnRlX3JlZ2V4X3J1bGVfZGJfdXBkYXRlKCksIHJ0ZV9yZWdleF9ydWxlX2RiX2ltcG9ydCgp DQo+ID4gKwkgKi8NCj4gPiArCXVpbnQzMl90IHJ1bGVfZGJfbGVuOw0KPiA+ICsJLyoqPCBMZW5n dGggb2YgKnJ1bGVfZGIqIGJ1ZmZlci4gKi8NCj4gPiArCXVpbnQzMl90IGRldl9jZmdfZmxhZ3M7 DQo+ID4gKwkvKio8IFJlZ0V4IGRldmljZSBjb25maWd1cmF0aW9uIGZsYWdzLCBTZWUgUlRFX1JF R0VYX0RFVl9DRkdfKg0KPiA+ICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog Q29uZmlndXJlIGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IG11c3QgYmUgaW52b2tlZCBmaXJzdCBiZWZvcmUgYW55IG90aGVyIGZ1bmN0aW9uIGluIHRoZQ0K PiA+ICsgKiBBUEkuIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gYmUgcmUtaW52b2tlZCB3aGVuIGEg ZGV2aWNlIGlzIGluIHRoZQ0KPiA+ICsgKiBzdG9wcGVkIHN0YXRlLg0KPiA+ICsgKg0KPiA+ICsg KiBUaGUgY2FsbGVyIG1heSB1c2UgcnRlX3JlZ2V4X2Rldl9pbmZvX2dldCgpIHRvIGdldCB0aGUg Y2FwYWJpbGl0eSBvZiBlYWNoDQo+ID4gKyAqIHJlc291cmNlcyBhdmFpbGFibGUgZm9yIHRoaXMg cmVnZXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAg VGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZSB0byBjb25maWd1cmUuDQo+ID4gKyAqIEBwYXJh bSBjZmcNCj4gPiArICogICBUaGUgUmVnRXggZGV2aWNlIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJl Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzLCBkZXZp Y2UgY29uZmlndXJlZC4NCj4gPiArICogICAtIDwwOiBFcnJvciBjb2RlIHJldHVybmVkIGJ5IHRo ZSBkcml2ZXIgY29uZmlndXJhdGlvbiBmdW5jdGlvbi4NCj4gPiArICovDQo+ID4gK2ludA0KPiA+ ICtydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSh1aW50OF90IGRldl9pZCwgY29uc3Qgc3RydWN0DQo+ ID4gcnRlX3JlZ2V4X2Rldl9jb25maWcgKmNmZyk7DQo+ID4gKw0KPiA+ICsvKiBFbnVtZXJhdGVz IFJlZ0V4IHF1ZXVlIHBhaXIgY29uZmlndXJhdGlvbiBmbGFncyAqLw0KPiA+ICsjZGVmaW5lIFJU RV9SRUdFWF9RVUVVRV9QQUlSX0NGR19PT1NfRiAoMVVMTCA8PCAwKQ0KPiA+ICsvKio8IE91dCBv ZiBvcmRlciBzY2FuLCBJZiBub3Qgc2V0LCBhIHNjYW4gbXVzdCByZXRpcmUgYWZ0ZXIgcHJldmlv dXNseSBpc3N1ZWQNCj4gPiArICogaW4tb3JkZXIgc2NhbnMgdG8gdGhpcyBxdWV1ZSBwYWlyLiBJ ZiBzZXQsIHRoaXMgc2NhbiBjYW4gYmUgcmV0aXJlZCBhcyBzb29uDQo+ID4gKyAqIGFzIGRldmlj ZSByZXR1cm5zIGNvbXBsZXRpb24uIEFwcGxpY2F0aW9uIHNob3VsZCBub3Qgc2V0IG91dCBvZiBv cmRlciBzY2FuDQo+ID4gKyAqIGZsYWcgaWYgaXQgbmVlZHMgdG8gbWFpbnRhaW4gdGhlIGluZ3Jl c3Mgb3JkZXIgb2Ygc2NhbiByZXF1ZXN0Lg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhfcXBfY29uZjo6cXBfY29uZl9mbGFncywNCj4gPiBydGVfcmVnZXhfcXVldWVfcGFp cl9zZXR1cCgpDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArc3RydWN0IHJ0ZV9yZWdleF9vcHM7DQo+ ID4gK3R5cGVkZWYgdm9pZCAoKnJlZ2V4ZGV2X3N0b3BfZmx1c2hfdCkodWludDhfdCBkZXZfaWQs IHVpbnQxNl90IHFwX2lkLA0KPiA+ICsJCQkJICAgICAgc3RydWN0IHJ0ZV9yZWdleF9vcHMgKm9w KTsNCj4gPiArLyoqPCBDYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIHJ0ZV9yZWdleF9k ZXZfc3RvcCgpLCBpbnZva2VkIG9uY2UNCj4gPiBwZXINCj4gPiArICogZmx1c2hlZCBSZWdFeCBv cC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsvKiogUmVnRXggcXVldWUgcGFpciBjb25maWd1cmF0 aW9uIHN0cnVjdHVyZSAqLw0KPiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4X3FwX2NvbmYgew0KPiA+ICsJ dWludDMyX3QgcXBfY29uZl9mbGFnczsNCj4gPiArCS8qKjwgUXVldWUgcGFpciBjb25maWcgZmxh Z3MsIFNlZSBSVEVfUkVHRVhfUVVFVUVfUEFJUl9DRkdfKg0KPiA+ICovDQo+ID4gKwl1aW50MTZf dCBuYl9kZXNjOw0KPiA+ICsJLyoqPCBUaGUgbnVtYmVyIG9mIGRlc2NyaXB0b3JzIHRvIGFsbG9j YXRlIGZvciB0aGlzIHF1ZXVlIHBhaXIuICovDQo+ID4gKwlyZWdleGRldl9zdG9wX2ZsdXNoX3Qg Y2I7DQo+ID4gKwkvKio8IENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgcnRlX3JlZ2V4 X2Rldl9zdG9wKCksIGludm9rZWQNCj4gPiArCSAqIG9uY2UgcGVyIGZsdXNoZWQgcmVnZXggb3Au IFZhbHVlIE5VTEwgaXMgYWxsb3dlZCwgaW4gd2hpY2ggY2FzZQ0KPiA+ICsJICogY2FsbGJhY2sg d2lsbCBub3QgYmUgaW52b2tlZC4gVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBwcm9wZXJs eQ0KPiA+ICsJICogZGlzcG9zZSBvZiBvdXRzdGFuZGluZyByZWdleCBvcHMgZnJvbSByZXNwb25z ZSBxdWV1ZSwNCj4gPiArCSAqIGZvciBleGFtcGxlIG9wcyBjb250YWluaW5nIG1lbW9yeSBwb2lu dGVycy4NCj4gPiArCSAqIEBzZWUgcnRlX3JlZ2V4X2Rldl9zdG9wKCkNCj4gPiArCSAqLw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEFsbG9jYXRlIGFuZCBzZXQgdXAgYSBSZWdF eCBxdWV1ZSBwYWlyIGZvciBhIFJlZ0V4IGRldmljZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ID4gKyAq IEBwYXJhbSBxdWV1ZV9wYWlyX2lkDQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBSZWdFeCBx dWV1ZSBwYWlyIHRvIHNldHVwLiBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUNCj4gPiByYW5nZQ0K PiA+ICsgKiAgIFswLCBuYl9xdWV1ZV9wYWlycyAtIDFdIHByZXZpb3VzbHkgc3VwcGxpZWQgdG8N Cj4gPiBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpLg0KPiA+ICsgKiBAcGFyYW0gcXBfY29uZg0K PiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgdG8gYmUgdXNl ZCBmb3IgdGhlIFJlZ0V4IHF1ZXVlDQo+ID4gcGFpci4NCj4gPiArICogICBOVUxMIHZhbHVlIGlz IGFsbG93ZWQsIGluIHdoaWNoIGNhc2UgZGVmYXVsdCBjb25maWd1cmF0aW9uCXVzZWQuDQo+ID4g KyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDA6IFN1Y2Nlc3MsIFJlZ0V4IHF1ZXVl IHBhaXIgY29ycmVjdGx5IHNldCB1cC4NCj4gPiArICogICAtIDwwOiBSZWdFeCBxdWV1ZSBjb25m aWd1cmF0aW9uIGZhaWxlZA0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleF9xdWV1 ZV9wYWlyX3NldHVwKHVpbnQ4X3QgZGV2X2lkLCB1aW50OF90IHF1ZXVlX3BhaXJfaWQsDQo+ID4g KwkJCSAgIGNvbnN0IHN0cnVjdCBydGVfcmVnZXhfcXBfY29uZiAqcXBfY29uZik7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogU3RhcnQgYSBSZWdFeCBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAq IFRoZSBkZXZpY2Ugc3RhcnQgc3RlcCBpcyB0aGUgbGFzdCBvbmUgYW5kIGNvbnNpc3RzIG9mIHNl dHRpbmcgdGhlIFJlZ0V4DQo+ID4gKyAqIHF1ZXVlcyB0byBzdGFydCBhY2NlcHRpbmcgdGhlIHBh dHRlcm4gbWF0Y2hpbmcgc2NhbiByZXF1ZXN0cy4NCj4gPiArICoNCj4gPiArICogT24gc3VjY2Vz cywgYWxsIGJhc2ljIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGUgQVBJIChSZWdFeCBlbnF1ZXVl LA0KPiA+ICsgKiBSZWdFeCBkZXF1ZXVlIGFuZCBzbyBvbikgY2FuIGJlIGludm9rZWQuDQo+ID4g KyAqDQo+ID4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPiArICogICBSZWdFeCBkZXZpY2UgaWRlbnRp Zmllcg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzLCBkZXZpY2Ugc3Rh cnRlZC4NCj4gPiArICogICAtIDwwOiBEZXZpY2Ugc3RhcnQgZmFpbGVkLg0KPiA+ICsgKi8NCj4g PiAraW50DQo+ID4gK3J0ZV9yZWdleF9kZXZfc3RhcnQodWludDhfdCBkZXZfaWQpOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIFN0b3AgYSBSZWdFeCBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAq IFN0b3AgYSBSZWdFeCBkZXZpY2UuIFRoZSBkZXZpY2UgY2FuIGJlIHJlc3RhcnRlZCB3aXRoIGEg Y2FsbCB0bw0KPiA+ICsgKiBydGVfcmVnZXhfZGV2X3N0YXJ0KCkuDQo+ID4gKyAqDQo+ID4gKyAq IFRoaXMgZnVuY3Rpb24gY2F1c2VzIGFsbCBxdWV1ZWQgcmVzcG9uc2UgcmVnZXggb3BzIHRvIGJl IGRyYWluZWQgaW4gdGhlDQo+ID4gKyAqIHJlc3BvbnNlIHF1ZXVlLiBXaGlsZSBkcmFpbmluZyBv cHMgb3V0IG9mIHRoZSBkZXZpY2UsDQo+ID4gKyAqIHN0cnVjdCBydGVfcmVnZXhfcXBfY29uZjo6 Y2Igd2lsbCBiZSBpbnZva2VkIGZvciBlYWNoIG9wcy4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGRldl9pZA0KPiA+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiA+ICsgKg0KPiA+ ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfcXBfY29uZjo6Y2IsIHJ0ZV9yZWdleF9xdWV1ZV9w YWlyX3NldHVwKCkNCj4gPiArICovDQo+ID4gK3ZvaWQNCj4gPiArcnRlX3JlZ2V4X2Rldl9zdG9w KHVpbnQ4X3QgZGV2X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBDbG9zZSBhIFJlZ0V4 IGRldmljZS4gVGhlIGRldmljZSBjYW5ub3QgYmUgcmVzdGFydGVkIQ0KPiA+ICsgKg0KPiA+ICsg KiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAgUmVnRXggZGV2aWNlIGlkZW50aWZpZXINCj4gPiAr ICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgLSAwIG9uIHN1Y2Nlc3NmdWxseSBjbG9zZWQg dGhlIGRldmljZS4NCj4gPiArICogIC0gPDAgb24gZmFpbHVyZSB0byBjbG9zZSB0aGUgZGV2aWNl Lg0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleF9kZXZfY2xvc2UodWludDhfdCBk ZXZfaWQpOw0KPiA+ICsNCj4gPiArLyogRGV2aWNlIGdldC9zZXQgYXR0cmlidXRlcyAqLw0KPiA+ ICsNCj4gPiArLyoqIEVudW1lcmF0ZXMgUmVnRXggZGV2aWNlIGF0dHJpYnV0ZSBpZGVudGlmaWVy ICovDQo+ID4gK2VudW0gcnRlX3JlZ2V4X2Rldl9hdHRyX2lkIHsNCj4gPiArCVJURV9SRUdFWF9E RVZfQVRUUl9TT0NLRVRfSUQsDQo+ID4gKwkvKio8IFRoZSBOVU1BIHNvY2tldCBpZCB0byB3aGlj aCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCBvcg0KPiA+ICsJICogYSBkZWZhdWx0IG9mIHplcm8g aWYgdGhlIHNvY2tldCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4NCj4gPiArCSAqIGRhdGF0eXBl OiAqaW50Kg0KPiA+ICsJICogb3BlcmF0aW9uOiAqZ2V0Kg0KPiA+ICsJICovDQo+ID4gKwlSVEVf UkVHRVhfREVWX0FUVFJfTUFYX01BVENIRVMsDQo+ID4gKwkvKio8IE1heGltdW0gbnVtYmVyIG9m IG1hdGNoZXMgcGVyIHNjYW4uDQo+ID4gKwkgKiBkYXRhdHlwZTogKnVpbnQ4X3QqDQo+ID4gKwkg KiBvcGVyYXRpb246ICpnZXQqIGFuZCAqc2V0Kg0KPiA+ICsJICoNCj4gPiArCSAqIEBzZWUgUlRF X1JFR0VYX09QU19SU1BfTUFYX01BVENIX0YNCj4gPiArCSAqLw0KPiA+ICsJUlRFX1JFR0VYX0RF Vl9BVFRSX01BWF9TQ0FOX1RJTUVPVVQsDQo+ID4gKwkvKio8IFVwcGVyIGJvdW5kIHNjYW4gdGlt ZSBpbiBucy4NCj4gPiArCSAqIGRhdGF0eXBlOiAqdWludDE2X3QqDQo+ID4gKwkgKiBvcGVyYXRp b246ICpnZXQqIGFuZCAqc2V0Kg0KPiA+ICsJICoNCj4gPiArCSAqIEBzZWUgUlRFX1JFR0VYX09Q U19SU1BfTUFYX1NDQU5fVElNRU9VVF9GDQo+ID4gKwkgKi8NCj4gPiArCVJURV9SRUdFWF9ERVZf QVRUUl9NQVhfUFJFRklYLA0KPiA+ICsJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBwcmVmaXggZGV0 ZWN0ZWQgcGVyIHNjYW4uDQo+ID4gKwkgKiBUaGlzIHdvdWxkIGJlIHVzZWZ1bCBmb3IgZGVuaWFs IG9mIHNlcnZpY2UgZGV0ZWN0aW9uLg0KPiA+ICsJICogZGF0YXR5cGU6ICp1aW50MTZfdCoNCj4g PiArCSAqIG9wZXJhdGlvbjogKmdldCogYW5kICpzZXQqDQo+ID4gKwkgKg0KPiA+ICsJICogQHNl ZSBSVEVfUkVHRVhfT1BTX1JTUF9NQVhfUFJFRklYX0YNCj4gPiArCSAqLw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIEdldCBhbiBhdHRyaWJ1dGUgZnJvbSBhIFJlZ0V4IGRldmlj ZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldl9pZCBSZWdFeCBkZXZpY2UgaWRlbnRpZmll cg0KPiA+ICsgKiBAcGFyYW0gYXR0cl9pZCBUaGUgYXR0cmlidXRlIElEIHRvIHJldHJpZXZlDQo+ ID4gKyAqIEBwYXJhbVtvdXRdIGF0dHJfdmFsdWUgQSBwb2ludGVyIHRoYXQgd2lsbCBiZSBmaWxs ZWQgaW4gd2l0aCB0aGUgYXR0cmlidXRlDQo+ID4gKyAqICAgICAgICAgICAgIHZhbHVlIGlmIHN1 Y2Nlc3NmdWwuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDA6IFN1Y2Nl c3NmdWxseSByZXRyaWV2ZWQgYXR0cmlidXRlIHZhbHVlLg0KPiA+ICsgKiAgIC0gLUVJTlZBTDog SW52YWxpZCBkZXZpY2Ugb3IgICphdHRyX2lkKiBwcm92aWRlZCwgb3IgKmF0dHJfdmFsdWUqIGlz IE5VTEwuDQo+ID4gKyAqICAgLSAtRU5PVFNVUDogaWYgdGhlIGRldmljZSBkb2Vzbid0IHN1cHBv cnQgc3BlY2lmaWMgKmF0dHJfaWQqLg0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdl eF9kZXZfYXR0cl9nZXQodWludDhfdCBkZXZfaWQsIGVudW0gcnRlX3JlZ2V4X2Rldl9hdHRyX2lk DQo+ID4gYXR0cl9pZCwNCj4gPiArCQkgICAgICAgdm9pZCAqYXR0cl92YWx1ZSk7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogU2V0IGFuIGF0dHJpYnV0ZSB0byBhIFJlZ0V4IGRldmljZS4NCj4g PiArICoNCj4gPiArICogQHBhcmFtIGRldl9pZCBSZWdFeCBkZXZpY2UgaWRlbnRpZmllcg0KPiA+ ICsgKiBAcGFyYW0gYXR0cl9pZCBUaGUgYXR0cmlidXRlIElEIHRvIHJldHJpZXZlDQo+ID4gKyAq IEBwYXJhbSBhdHRyX3ZhbHVlIEEgcG9pbnRlciB0aGF0IHdpbGwgYmUgZmlsbGVkIGluIHdpdGgg dGhlIGF0dHJpYnV0ZSB2YWx1ZQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICBieSB0aGUgYXBw bGljYXRpb24NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0gMDogU3VjY2Vz c2Z1bGx5IGFwcGxpZWQgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4NCj4gPiArICogICAtIC1FSU5WQUw6 IEludmFsaWQgZGV2aWNlIG9yICAqYXR0cl9pZCogcHJvdmlkZWQsIG9yICphdHRyX3ZhbHVlKiBp cyBOVUxMLg0KPiA+ICsgKiAgIC0gLUVOT1RTVVA6IGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBw b3J0IHNwZWNpZmljICphdHRyX2lkKi4NCj4gPiArICovDQo+ID4gK2ludA0KPiA+ICtydGVfcmVn ZXhfZGV2X2F0dHJfc2V0KHVpbnQ4X3QgZGV2X2lkLCBlbnVtIHJ0ZV9yZWdleF9kZXZfYXR0cl9p ZA0KPiA+IGF0dHJfaWQsDQo+ID4gKwkJICAgICAgIGNvbnN0IHZvaWQgKmF0dHJfdmFsdWUpOw0K PiA+ICsNCj4gPiArLyogUnVsZSByZWxhdGVkIEFQSXMgKi8NCj4gPiArLyoqIEVudW1lcmF0ZXMg UmVnRXggcnVsZSBvcGVyYXRpb24gKi8NCj4gPiArZW51bSBydGVfcmVnZXhfcnVsZV9vcCB7DQo+ ID4gKwlSVEVfUkVHRVhfUlVMRV9PUF9BREQsDQo+ID4gKwkvKio8IEFkZCBSZWdFeCBydWxlIHRv IHJ1bGUgZGF0YWJhc2UgKi8NCj4gPiArCVJURV9SRUdFWF9SVUxFX09QX1JFTU9WRQ0KPiA+ICsJ LyoqPCBSZW1vdmUgUmVnRXggcnVsZSBmcm9tIHJ1bGUgZGF0YWJhc2UgKi8NCj4gPiArfTsNCj4g PiArDQo+ID4gKy8qKiBTdHJ1Y3R1cmUgdG8gaG9sZCBhIFJlZ0V4IHJ1bGUgYXR0cmlidXRlcyAq Lw0KPiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4X3J1bGUgew0KPiA+ICsJZW51bSBydGVfcmVnZXhfcnVs ZV9vcCBvcDsNCj4gPiArCS8qKjwgT1AgdHlwZSBvZiB0aGUgcnVsZSBlaXRoZXIgYSBPUF9BREQg b3IgT1BfREVMRVRFICovDQo+ID4gKwl1aW50MTZfdCBncm91cF9pZDsNCj4gPiArCS8qKjwgR3Jv dXAgaWRlbnRpZmllciB0byB3aGljaCB0aGUgcnVsZSBiZWxvbmdzIHRvLiAqLw0KPiA+ICsJdWlu dDMyX3QgcnVsZV9pZDsNCj4gPiArCS8qKjwgUnVsZSBpZGVudGlmaWVyIHdoaWNoIGlzIHJldHVy bmVkIG9uIHN1Y2Nlc3NmdWwgbWF0Y2guICovDQo+ID4gKwljb25zdCBjaGFyICpwY3JlX3J1bGU7 DQo+ID4gKwkvKio8IEJ1ZmZlciB0byBob2xkIHRoZSBQQ1JFIHJ1bGUuICovDQo+ID4gKwl1aW50 MTZfdCBwY3JlX3J1bGVfbGVuOw0KPiA+ICsJLyoqPCBMZW5ndGggb2YgdGhlIFBDUkUgcnVsZSov DQo+ID4gKwl1aW50NjRfdCBydWxlX2ZsYWdzOw0KPiA+ICsJLyogUENSRSBydWxlIGZsYWdzLiBT dXBwb3J0ZWQgZGV2aWNlIHNwZWNpZmljIFBDUkUgcnVsZXMgZW51bWVyYXRlZA0KPiA+ICsJICog aW4gc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncy4gRm9yIHN1Y2Nlc3NmdWwg cnVsZQ0KPiA+ICsJICogZGF0YWJhc2UgdXBkYXRlLCBhcHBsaWNhdGlvbiBuZWVkcyB0byBwcm92 aWRlIG9ubHkgc3VwcG9ydGVkDQo+ID4gKwkgKiBydWxlIGZsYWdzLg0KPiA+ICsJICogQFNlZSBS VEVfUkVHRVhfUENSRV9SVUxFXyosIHN0cnVjdA0KPiA+IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVs ZV9mbGFncw0KPiA+ICsJICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogVXBk YXRlIHRoZSBydWxlIGRhdGFiYXNlIG9mIGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsg KiBAcGFyYW0gZGV2X2lkIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyDQo+ID4gKyAqIEBwYXJhbSBy dWxlcw0KPiA+ICsgKiAgIFBvaW50cyB0byBhbiBhcnJheSBvZiAqbmJfcnVsZXMqIG9iamVjdHMg b2YgdHlwZSAqcnRlX3JlZ2V4X3J1bGUqDQo+ID4gc3RydWN0dXJlDQo+ID4gKyAqICAgd2hpY2gg Y29udGFpbiB0aGUgcmVnZXggcnVsZXMgYXR0cmlidXRlcyB0byBiZSB1cGRhdGVkIGluIHJ1bGUg ZGF0YWJhc2UuDQo+ID4gKyAqIEBwYXJhbSBuYl9ydWxlcw0KPiA+ICsgKiAgIFRoZSBudW1iZXIg b2YgUENSRSBydWxlcyB0byB1cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2UuDQo+ID4gKyAqDQo+ID4g KyAqIEByZXR1cm4NCj4gPiArICogICBUaGUgbnVtYmVyIG9mIHJlZ2V4IHJ1bGVzIGFjdHVhbGx5 IHVwZGF0ZWQgb24gdGhlIHJlZ2V4IGRldmljZSdzIHJ1bGUNCj4gPiArICogICBkYXRhYmFzZS4g VGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiB0aGUgKm5iX3J1 bGVzKg0KPiA+ICsgKiAgIHBhcmFtZXRlciB3aGVuIHRoZSByZWdleCBkZXZpY2VzIGZhaWxzIHRv IHVwZGF0ZSB0aGUgcnVsZSBkYXRhYmFzZSBvcg0KPiA+ICsgKiAgIGlmIGludmFsaWQgcGFyYW1l dGVycyBhcmUgc3BlY2lmaWVkIGluIGEgKnJ0ZV9yZWdleF9ydWxlKi4NCj4gPiArICogICBJZiB0 aGUgcmV0dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiAqbmJfcnVsZXMqLCB0aGUgcmVtYWluaW5nIFBD UkUgcnVsZXMNCj4gPiArICogICBhdCB0aGUgZW5kIG9mICpydWxlcyogYXJlIG5vdCBjb25zdW1l ZCBhbmQgdGhlIGNhbGxlciBoYXMgdG8gdGFrZQ0KPiA+ICsgKiAgIGNhcmUgb2YgdGhlbSBhbmQg cnRlX2Vycm5vIGlzIHNldCBhY2NvcmRpbmdseS4NCj4gPiArICogICBQb3NzaWJsZSBlcnJubyB2 YWx1ZXMgaW5jbHVkZToNCj4gPiArICogICAtIC1FSU5WQUw6ICBJbnZhbGlkIGRldmljZSBJRCBv ciBydWxlcyBpcyBOVUxMDQo+ID4gKyAqICAgLSAtRU5PVFNVUDogVGhlIGxhc3QgcHJvY2Vzc2Vk IHJ1bGUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGRldmljZS4NCj4gPiArICogICAtIC1FTk9T UEM6IE5vIHNwYWNlIGF2YWlsYWJsZSBpbiBydWxlIGRhdGFiYXNlLg0KPiA+ICsgKg0KPiA+ICsg KiBAc2VlIHJ0ZV9yZWdleF9ydWxlX2RiX2ltcG9ydCgpLCBydGVfcmVnZXhfcnVsZV9kYl9leHBv cnQoKQ0KPiA+ICsgKi8NCj4gPiArdWludDE2X3QNCj4gPiArcnRlX3JlZ2V4X3J1bGVfZGJfdXBk YXRlKHVpbnQ4X3QgZGV2X2lkLCBjb25zdCBzdHJ1Y3QgcnRlX3JlZ2V4X3J1bGUNCj4gPiAqcnVs ZXMsDQo+ID4gKwkJCSB1aW50MTZfdCBuYl9ydWxlcyk7DQo+IA0KPiBJIHRoaW5rIHRoZSBmdW5j dGlvbiBuYW1lIGlzIG5vdCB0b28gaW5mb3JtYXRpdmUuIElmIHRoaXMgZnVuY3Rpb24gbWVhbnQg dG8NCj4gY29tcGlsZSB0aGUgcnVsZSB0aGVuIGl0IHNob3VsZCBiZSBleHBsaWNpdCBvbiB0aGUg ZnVuY3Rpb24gbmFtZS4NCj4gDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogSW1wb3J0IGEgcHJl YnVpbHQgcnVsZSBkYXRhYmFzZSBmcm9tIGEgYnVmZmVyIHRvIGEgUmVnRXggZGV2aWNlLg0KPiA+ ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyDQo+ID4g KyAqIEBwYXJhbSBydWxlX2RiDQo+ID4gKyAqICAgUG9pbnRzIHRvIHByZWJ1aWx0IHJ1bGUgZGF0 YWJhc2UuDQo+ID4gKyAqIEBwYXJhbSBydWxlX2RiX2xlbg0KPiA+ICsgKiAgIExlbmd0aCBvZiB0 aGUgcnVsZSBkYXRhYmFzZS4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0g MDogU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgdGhlIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UuDQo+ID4g KyAqICAgLSAtRUlOVkFMOiAgSW52YWxpZCBkZXZpY2UgSUQgb3IgcnVsZV9kYiBpcyBOVUxMDQo+ ID4gKyAqICAgLSAtRU5PVFNVUDogUnVsZSBkYXRhYmFzZSBpbXBvcnQgaXMgbm90IHN1cHBvcnRl ZCBvbiB0aGlzIGRldmljZS4NCj4gPiArICogICAtIC1FTk9TUEM6IE5vIHNwYWNlIGF2YWlsYWJs ZSBpbiBydWxlIGRhdGFiYXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHJ0ZV9yZWdleF9ydWxl X2RiX3VwZGF0ZSgpLCBydGVfcmVnZXhfcnVsZV9kYl9leHBvcnQoKQ0KPiA+ICsgKi8NCj4gPiAr aW50DQo+ID4gK3J0ZV9yZWdleF9ydWxlX2RiX2ltcG9ydCh1aW50OF90IGRldl9pZCwgY29uc3Qg Y2hhciAqcnVsZV9kYiwNCj4gPiArCQkJIHVpbnQzMl90IHJ1bGVfZGJfbGVuKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBFeHBvcnQgdGhlIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UgZnJvbSBh IFJlZ0V4IGRldmljZSB0byB0aGUgYnVmZmVyLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2 X2lkIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyDQo+ID4gKyAqIEBwYXJhbVtvdXRdIHJ1bGVfZGIN Cj4gPiArICogICBCbG9jayBvZiBtZW1vcnkgdG8gaW5zZXJ0IHRoZSBydWxlIGRhdGFiYXNlLiBN dXN0IGJlIGF0IGxlYXN0IHNpemUgaW4NCj4gPiArICogICBjYXBhY2l0eS4gSWYgc2V0IHRvIE5V TEwsIGZ1bmN0aW9uIHJldHVybnMgcmVxdWlyZWQgY2FwYWNpdHkuDQo+ID4gKyAqDQo+ID4gKyAq IEByZXR1cm4NCj4gPiArICogICAtIDA6IFN1Y2Nlc3NmdWxseSBleHBvcnRlZCB0aGUgcHJlYnVp bHQgcnVsZSBkYXRhYmFzZS4NCj4gPiArICogICAtIHNpemU6IElmIHJ1bGVfZGIgc2V0IHRvIE5V TEwgdGhlbiByZXF1aXJlZCBjYXBhY2l0eSBmb3IgKnJ1bGVfZGIqDQo+ID4gKyAqICAgLSAtRUlO VkFMOiAgSW52YWxpZCBkZXZpY2UgSUQNCj4gPiArICogICAtIC1FTk9UU1VQOiBSdWxlIGRhdGFi YXNlIGV4cG9ydCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgZGV2aWNlLg0KPiA+ICsgKg0KPiA+ ICsgKiBAc2VlIHJ0ZV9yZWdleF9ydWxlX2RiX3VwZGF0ZSgpLCBydGVfcmVnZXhfcnVsZV9kYl9p bXBvcnQoKQ0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleF9ydWxlX2RiX2V4cG9y dCh1aW50OF90IGRldl9pZCwgY2hhciAqcnVsZV9kYik7DQo+ID4gKw0KPiA+ICsvKiBFeHRlbmRl ZCBzdGF0aXN0aWNzICovDQo+ID4gKy8qKiBNYXhpbXVtIG5hbWUgbGVuZ3RoIGZvciBleHRlbmRl ZCBzdGF0aXN0aWNzIGNvdW50ZXJzICovDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX0RFVl9YU1RB VFNfTkFNRV9TSVpFIDY0DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQSBuYW1lLWtleSBsb29r dXAgZWxlbWVudCBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcy4NCj4gPiArICoNCj4gPiArICogVGhp cyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBtYXAgYmV0d2VlbiBuYW1lcyBhbmQgSUQgbnVtYmVycw0K PiA+ICsgKiBmb3IgZXh0ZW5kZWQgUmVnRXggZGV2aWNlIHN0YXRpc3RpY3MuDQo+ID4gKyAqLw0K PiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl94c3RhdHNfbWFwIHsNCj4gPiArCXVpbnQxNl90IGlk Ow0KPiA+ICsJLyoqPCB4c3RhdCBpZGVudGlmaWVyICovDQo+ID4gKwljaGFyIG5hbWVbUlRFX1JF R0VYX0RFVl9YU1RBVFNfTkFNRV9TSVpFXTsNCj4gPiArCS8qKjwgeHN0YXQgbmFtZSAqLw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFJldHJpZXZlIG5hbWVzIG9mIGV4dGVuZGVk IHN0YXRpc3RpY3Mgb2YgYSByZWdleCBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBk ZXZfaWQNCj4gPiArICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcmVnZXggZGV2aWNlLg0KPiA+ ICsgKiBAcGFyYW1bb3V0XSB4c3RhdHNfbWFwDQo+ID4gKyAqICAgQmxvY2sgb2YgbWVtb3J5IHRv IGluc2VydCBpZCBhbmQgbmFtZXMgaW50by4gTXVzdCBiZSBhdCBsZWFzdCBzaXplIGluDQo+ID4g KyAqICAgY2FwYWNpdHkuIElmIHNldCB0byBOVUxMLCBmdW5jdGlvbiByZXR1cm5zIHJlcXVpcmVk IGNhcGFjaXR5Lg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSBwb3NpdGl2ZSB2YWx1ZSBv biBzdWNjZXNzOg0KPiA+ICsgKiAgICAgICAgLVRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJl ciBvZiBlbnRyaWVzIGZpbGxlZCBpbiB0aGUgc3RhdHMgbWFwLg0KPiA+ICsgKiAgICAgICAgLUlm IHhzdGF0c19tYXAgc2V0IHRvIE5VTEwgdGhlbiByZXF1aXJlZCBjYXBhY2l0eSBmb3IgeHN0YXRz X21hcC4NCj4gPiArICogICAtIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yOg0KPiA+ICsgKiAgICAg IC1FTk9ERVYgZm9yIGludmFsaWQgKmRldl9pZCoNCj4gPiArICogICAgICAtRU5PVFNVUCBpZiB0 aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uLg0KPiA+ICsgKi8NCj4gPiAr aW50DQo+ID4gK3J0ZV9yZWdleF9kZXZfeHN0YXRzX25hbWVzX2dldCh1aW50OF90IGRldl9pZCwN Cj4gPiArCQkJICAgICAgIHN0cnVjdCBydGVfcmVnZXhfZGV2X3hzdGF0c19tYXAgKnhzdGF0c19t YXApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFJldHJpZXZlIGV4dGVuZGVkIHN0YXRpc3Rp Y3Mgb2YgYW4gcmVnZXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ ID4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gPiArICogQHBhcmFtIGlk cw0KPiA+ICsgKiAgIFRoZSBpZCBudW1iZXJzIG9mIHRoZSBzdGF0cyB0byBnZXQuIFRoZSBpZHMg Y2FuIGJlIGdvdCBmcm9tIHRoZSBzdGF0DQo+ID4gKyAqICAgcG9zaXRpb24gaW4gdGhlIHN0YXQg bGlzdCBmcm9tIHJ0ZV9yZWdleF9kZXZfeHN0YXRzX25hbWVzX2dldCgpLCBvcg0KPiA+ICsgKiAg IGJ5IHVzaW5nIHJ0ZV9yZWdleF9kZXZfeHN0YXRzX2J5X25hbWVfZ2V0KCkuDQo+ID4gKyAqIEBw YXJhbVtvdXRdIHZhbHVlcw0KPiA+ICsgKiAgIFRoZSB2YWx1ZXMgZm9yIGVhY2ggc3RhdHMgcmVx dWVzdCBieSBJRC4NCj4gPiArICogQHBhcmFtIG4NCj4gPiArICogICBUaGUgbnVtYmVyIG9mIHN0 YXRzIHJlcXVlc3RlZA0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSBwb3NpdGl2ZSB2YWx1 ZTogbnVtYmVyIG9mIHN0YXQgZW50cmllcyBmaWxsZWQgaW50byB0aGUgdmFsdWVzIGFycmF5DQo+ ID4gKyAqICAgLSBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvcjoNCj4gPiArICogICAgICAtRU5PREVW IGZvciBpbnZhbGlkICpkZXZfaWQqDQo+ID4gKyAqICAgICAgLUVOT1RTVVAgaWYgdGhlIGRldmlj ZSBkb2Vzbid0IHN1cHBvcnQgdGhpcyBmdW5jdGlvbi4NCj4gPiArICovDQo+ID4gK2ludA0KPiA+ ICtydGVfcmVnZXhfZGV2X3hzdGF0c19nZXQodWludDhfdCBkZXZfaWQsIGNvbnN0IHVpbnQxNl90 IGlkc1tdLA0KPiA+ICsJCQkgdWludDY0X3QgdmFsdWVzW10sIHVpbnQxNl90IG4pOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHNpbmdsZSBzdGF0IGJ5 IHJlcXVlc3RpbmcgaXQgYnkgbmFtZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldl9pZA0K PiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UNCj4gPiArICogQHBhcmFtIG5h bWUNCj4gPiArICogICBUaGUgc3RhdCBuYW1lIHRvIHJldHJpZXZlDQo+ID4gKyAqIEBwYXJhbVtv dXRdIGlkDQo+ID4gKyAqICAgSWYgbm9uLU5VTEwsIHRoZSBudW1lcmljYWwgaWQgb2YgdGhlIHN0 YXQgd2lsbCBiZSByZXR1cm5lZCwgc28gdGhhdCBmdXJ0aGVyDQo+ID4gKyAqICAgcmVxdWVzdHMg Zm9yIHRoZSBzdGF0IGNhbiBiZSBnb3QgdXNpbmcgcnRlX3JlZ2V4X2Rldl94c3RhdHNfZ2V0LCB3 aGljaA0KPiA+IHdpbGwNCj4gPiArICogICBiZSBmYXN0ZXIgYXMgaXQgZG9lc24ndCBuZWVkIHRv IHNjYW4gYSBsaXN0IG9mIG5hbWVzIGZvciB0aGUgc3RhdC4NCj4gPiArICogQHBhcmFtW291dF0g dmFsdWUNCj4gPiArICogICBNdXN0IGJlIG5vbi1OVUxMLCByZXRyaWV2ZWQgeHN0YXQgdmFsdWUg d2lsbCBiZSBzdG9yZWQgaW4gdGhpcyBhZGRyZXNzLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJu DQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHhzdGF0IHZhbHVlLg0KPiA+ ICsgKiAgIC0gLUVJTlZBTDogaW52YWxpZCBwYXJhbWV0ZXJzDQo+ID4gKyAqICAgLSAtRU5PVFNV UDogaWYgbm90IHN1cHBvcnRlZC4NCj4gPiArICovDQo+ID4gK2ludA0KPiA+ICtydGVfcmVnZXhf ZGV2X3hzdGF0c19ieV9uYW1lX2dldCh1aW50OF90IGRldl9pZCwgY29uc3QgY2hhciAqbmFtZSwN Cj4gPiArCQkJCSB1aW50MTZfdCAqaWQsIHVpbnQ2NF90ICp2YWx1ZSk7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogUmVzZXQgdGhlIHZhbHVlcyBvZiB0aGUgeHN0YXRzIG9mIHRoZSBzZWxlY3Rl ZCBjb21wb25lbnQgaW4gdGhlIGRldmljZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldl9p ZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UNCj4gPiArICogQHBhcmFt IGlkcw0KPiA+ICsgKiAgIFNlbGVjdHMgc3BlY2lmaWMgc3RhdGlzdGljcyB0byBiZSByZXNldC4g V2hlbiBOVUxMLCBhbGwgc3RhdGlzdGljcyB3aWxsIGJlDQo+ID4gKyAqICAgcmVzZXQuIElmIG5v bi1OVUxMLCBtdXN0IHBvaW50IHRvIGFycmF5IG9mIGF0IGxlYXN0ICpuYl9pZHMqIHNpemUuDQo+ ID4gKyAqIEBwYXJhbSBuYl9pZHMNCj4gPiArICogICBUaGUgbnVtYmVyIG9mIGlkcyBhdmFpbGFi bGUgZnJvbSB0aGUgKmlkcyogYXJyYXkuIElnbm9yZWQgd2hlbiBpZHMgaXMNCj4gPiBOVUxMLg0K PiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkgcmVzZXQgdGhlIHN0 YXRpc3RpY3MgdG8gemVyby4NCj4gPiArICogICAtIC1FSU5WQUw6IGludmFsaWQgcGFyYW1ldGVy cw0KPiA+ICsgKiAgIC0gLUVOT1RTVVA6IGlmIG5vdCBzdXBwb3J0ZWQuDQo+ID4gKyAqLw0KPiA+ ICtpbnQNCj4gPiArcnRlX3JlZ2V4X2Rldl94c3RhdHNfcmVzZXQodWludDhfdCBkZXZfaWQsIGNv bnN0IHVpbnQxNl90IGlkc1tdLA0KPiA+ICsJCQkgICB1aW50MTZfdCBuYl9pZHMpOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIFRyaWdnZXIgdGhlIFJlZ0V4IGRldmljZSBzZWxmIHRlc3QuDQo+ ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPiArICogICBUaGUgaWRlbnRpZmllciBv ZiB0aGUgZGV2aWNlDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDA6IFNlbGZ0ZXN0IHN1 Y2Nlc3NmdWwNCj4gPiArICogICAtIC1FTk9UU1VQIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBw b3J0IHNlbGZ0ZXN0DQo+ID4gKyAqICAgLSBvdGhlciB2YWx1ZXMgPCAwIG9uIGZhaWx1cmUuDQo+ ID4gKyAqLw0KPiA+ICtpbnQgcnRlX3JlZ2V4X2Rldl9zZWxmdGVzdCh1aW50OF90IGRldl9pZCk7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogRHVtcCBpbnRlcm5hbCBpbmZvcm1hdGlvbiBhYm91 dCAqZGV2X2lkKiB0byB0aGUgRklMRSogcHJvdmlkZWQgaW4gKmYqLg0KPiA+ICsgKg0KPiA+ICsg KiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4N Cj4gPiArICoNCj4gPiArICogQHBhcmFtIGYNCj4gPiArICogICBBIHBvaW50ZXIgdG8gYSBmaWxl IGZvciBvdXRwdXQNCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0gMDogb24g c3VjY2Vzcw0KPiA+ICsgKiAgIC0gPDA6IG9uIGZhaWx1cmUuDQo+ID4gKyAqLw0KPiA+ICtpbnQN Cj4gPiArcnRlX3JlZ2V4X2Rldl9kdW1wKHVpbnQ4X3QgZGV2X2lkLCBGSUxFICpmKTsNCj4gPiAr DQo+ID4gKy8qIEZhc3QgcGF0aCBBUElzICovDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogVGhl IGdlbmVyaWMgKnJ0ZV9yZWdleF9tYXRjaCogc3RydWN0dXJlIHRvIGhvbGQgdGhlIFJlZ0V4IG1h dGNoDQo+ID4gYXR0cmlidXRlcy4NCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6 bWF0Y2hlcw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9yZWdleF9tYXRjaCB7DQo+ID4gKwlS VEVfU1REX0MxMQ0KPiA+ICsJdW5pb24gew0KPiA+ICsJCXVpbnQ2NF90IHU2NDsNCj4gPiArCQlz dHJ1Y3Qgew0KPiA+ICsJCQl1aW50MzJfdCBydWxlX2lkOjIwOw0KPiA+ICsJCQkvKio8IFJ1bGUg aWRlbnRpZmllciB0byB3aGljaCB0aGUgcGF0dGVybiBtYXRjaGVkLg0KPiA+ICsJCQkgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhfcnVsZTo6cnVsZV9pZA0KPiA+ICsJCQkgKi8NCj4gPiArCQkJdWlu dDMyX3QgZ3JvdXBfaWQ6MTI7DQo+ID4gKwkJCS8qKjwgR3JvdXAgaWRlbnRpZmllciBvZiB0aGUg cnVsZSB3aGljaCB0aGUgcGF0dGVybg0KPiA+ICsJCQkgKiBtYXRjaGVkLiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhfcnVsZTo6Z3JvdXBfaWQNCj4gPiArCQkJICovDQo+ID4gKwkJCXVpbnQxNl90IG9m ZnNldDsNCj4gPiArCQkJLyoqPCBTdGFydGluZyBCeXRlIFBvc2l0aW9uIGZvciBtYXRjaGVkIHJ1 bGUuICovDQo+ID4gKwkJCXVpbnQxNl90IGxlbjsNCj4gPiArCQkJLyoqPCBMZW5ndGggb2YgbWF0 Y2ggaW4gYnl0ZXMgKi8NCj4gPiArCQl9Ow0KPiA+ICsJfTsNCj4gPiArfTsNCj4gPiArDQo+ID4g Ky8qIEVudW1lcmF0ZXMgUmVnRXggcmVxdWVzdCBmbGFncy4gKi8NCj4gPiArI2RlZmluZSBSVEVf UkVHRVhfT1BTX1JFUV9HUk9VUF9JRDFfVkFMSURfRiAoMSA8PCAwKQ0KPiA+ICsvKio8IFNldCB3 aGVuIHN0cnVjdCBydGVfcmVnZXhfcnVsZTo6Z3JvdXBfaWQxIHZhbGlkICovDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEMl9WQUxJRF9GICgxIDw8IDEpDQo+ ID4gKy8qKjwgU2V0IHdoZW4gc3RydWN0IHJ0ZV9yZWdleF9ydWxlOjpncm91cF9pZDIgdmFsaWQg Ki8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SRVFfR1JPVVBfSUQzX1ZBTElE X0YgKDEgPDwgMikNCj4gPiArLyoqPCBTZXQgd2hlbiBzdHJ1Y3QgcnRlX3JlZ2V4X3J1bGU6Omdy b3VwX2lkMyB2YWxpZCAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JFUV9T VE9QX09OX01BVENIX0YgKDEgPDwgNCkNCj4gPiArLyoqPCBUaGUgUmVnRXggZW5naW5lIHdpbGwg c3RvcCBzY2FubmluZyBhbmQgcmV0dXJuIHRoZSBmaXJzdCBtYXRjaC4gKi8NCj4gPiArDQo+ID4g KyNkZWZpbmUgUlRFX1JFR0VYX09QU19SRVFfTUFUQ0hfSElHSF9QUklPUklUWV9GICgxIDw8IDUp DQo+ID4gKy8qKjwgSW4gSGlnaCBQcmlvcml0eSBtb2RlIGEgbWF4aW11bSBvZiBvbmUgbWF0Y2gg d2lsbCBiZSByZXR1cm5lZCBwZXINCj4gPiBzY2FuIHRvDQo+ID4gKyAqIHJlZHVjZSB0aGUgcG9z dC1wcm9jZXNzaW5nIHJlcXVpcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gVGhlIG1hdGNoIHdpdGgN Cj4gPiB0aGUNCj4gPiArICogbG93ZXN0IFJ1bGUgaWQsIGxvd2VzdCBzdGFydCBwb2ludGVyIGFu ZCBsb3dlc3QgbWF0Y2ggbGVuZ3RoIHdpbGwgYmUNCj4gPiArICogcmV0dXJuZWQuDQo+ID4gKyAq DQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX2FjdHVhbF9tYXRjaGVzDQo+ ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMNCj4gPiArICovDQo+ ID4gKw0KPiA+ICsNCj4gPiArLyogRW51bWVyYXRlcyBSZWdFeCByZXNwb25zZSBmbGFncy4gKi8N Cj4gPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfU09KX0YgKDEgPDwgMCkNCj4gPiAr LyoqPCBJbmRpY2F0ZXMgdGhhdCB0aGUgUmVnRXggZGV2aWNlIGhhcyBlbmNvdW50ZXJlZCBhIHBh cnRpYWwgbWF0Y2ggYXQgdGhlDQo+ID4gKyAqIHN0YXJ0IG9mIHNjYW4gaW4gdGhlIGdpdmVuIGJ1 ZmZlci4NCj4gPiArICoNCj4gPiArICogQHNlZSBSVEVfUkVHRVhfREVWX0NGR19DUk9TU19CVUZG RVJfU0NBTl9GDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JT UF9QTUlfRU9KX0YgKDEgPDwgMSkNCj4gPiArLyoqPCBJbmRpY2F0ZXMgdGhhdCB0aGUgUmVnRXgg ZGV2aWNlIGhhcyBlbmNvdW50ZXJlZCBhIHBhcnRpYWwgbWF0Y2ggYXQgdGhlDQo+ID4gKyAqIGVu ZCBvZiBzY2FuIGluIHRoZSBnaXZlbiBidWZmZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgUlRF X1JFR0VYX0RFVl9DRkdfQ1JPU1NfQlVGRkVSX1NDQU5fRg0KPiA+ICsgKi8NCj4gPiArDQo+ID4g KyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfTUFYX1NDQU5fVElNRU9VVF9GICgxIDw8IDIpDQo+ ID4gKy8qKjwgSW5kaWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBoYXMgZXhjZWVkZWQgdGhl IG1heCB0aW1lb3V0IHdoaWxlDQo+ID4gKyAqIHNjYW5uaW5nIHRoZSBnaXZlbiBidWZmZXIuDQo+ ID4gKyAqDQo+ID4gKyAqIEBzZWUgUlRFX1JFR0VYX0RFVl9BVFRSX01BWF9TQ0FOX1RJTUVPVVQN Cj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUlNQX01BWF9NQVRD SF9GICgxIDw8IDMpDQo+ID4gKy8qKjwgSW5kaWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBo YXMgZXhjZWVkZWQgdGhlIG1heCBtYXRjaGVzIHdoaWxlDQo+ID4gKyAqIHNjYW5uaW5nIHRoZSBn aXZlbiBidWZmZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgUlRFX1JFR0VYX0RFVl9BVFRSX01B WF9NQVRDSEVTDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JT UF9NQVhfUFJFRklYX0YgKDEgPDwgNCkNCj4gPiArLyoqPCBJbmRpY2F0ZXMgdGhhdCB0aGUgUmVn RXggZGV2aWNlIGhhcyByZWFjaGVkIHRoZSBtYXggYWxsb3dlZCBwcmVmaXgNCj4gPiBsZW5ndGgN Cj4gPiArICogd2hpbGUgc2Nhbm5pbmcgdGhlIGdpdmVuIGJ1ZmZlci4NCj4gPiArICoNCj4gPiAr ICogQHNlZSBSVEVfUkVHRVhfREVWX0FUVFJfTUFYX1BSRUZJWA0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBUaGUgZ2VuZXJpYyAqcnRlX3JlZ2V4X29wcyogc3RydWN0dXJlIHRv IGhvbGQgdGhlIFJlZ0V4IGF0dHJpYnV0ZXMNCj4gPiArICogZm9yIGVucXVldWUgYW5kIGRlcXVl dWUgb3BlcmF0aW9uLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9yZWdleF9vcHMgew0KPiA+ ICsJLyogVzAgKi8NCj4gPiArCXVpbnQxNl90IHJlcV9mbGFnczsNCj4gPiArCS8qKjwgUmVxdWVz dCBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4NCj4gPiArCSAqIEBzZWUgUlRFX1JFR0VYX09QU19S RVFfKg0KPiA+ICsJICovDQo+ID4gKwl1aW50MTZfdCBzY2FuX3NpemU7DQo+ID4gKwkvKio8IFNj YW4gc2l6ZSBvZiB0aGUgYnVmZmVyIHRvIGJlIHNjYW5uZWQgaW4gYnl0ZXMuICovDQo+ID4gKwl1 aW50MTZfdCByc3BfZmxhZ3M7DQo+ID4gKwkvKio8IFJlc3BvbnNlIGZsYWdzIGZvciB0aGUgUmVn RXggb3BzLg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF8qDQo+ID4gKwkgKi8NCj4g PiArCXVpbnQ4X3QgbmJfYWN0dWFsX21hdGNoZXM7DQo+ID4gKwkvKio8IFRoZSB0b3RhbCBudW1i ZXIgb2YgYWN0dWFsIG1hdGNoZXMgZGV0ZWN0ZWQgYnkgdGhlIFJlZ2V4DQo+ID4gZGV2aWNlLiov DQo+ID4gKwl1aW50OF90IG5iX21hdGNoZXM7DQo+ID4gKwkvKio8IFRoZSB0b3RhbCBudW1iZXIg b2YgbWF0Y2hlcyByZXR1cm5lZCBieSB0aGUgUmVnRXggZGV2aWNlIGZvcg0KPiA+IHRoaXMNCj4g PiArCSAqIHNjYW4uIFRoZSBzaXplIG9mICpydGVfcmVnZXhfb3BzOjptYXRjaGVzKiB6ZXJvIGxl bmd0aCBhcnJheSB3aWxsDQo+ID4gYmUNCj4gPiArCSAqIHRoaXMgdmFsdWUuDQo+ID4gKwkgKg0K PiA+ICsJICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bWF0Y2hlcywgc3RydWN0IHJ0ZV9y ZWdleF9tYXRjaA0KPiA+ICsJICovDQo+ID4gKw0KPiA+ICsJLyogVzEgKi8NCj4gPiArCVJURV9T VERfQzExDQo+ID4gKwl1bmlvbiB7DQo+ID4gKwkJdWludDY0X3QgdTY0Ow0KPiA+ICsJCS8qKjwg IEFsbG93IDgtYnl0ZSByZXNlcnZlZCBvbiAzMi1iaXQgc3lzdGVtICovDQo+ID4gKwkJdm9pZCAq YnVmX2FkZHI7DQo+ID4gKwkJLyoqPCBWaXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIHBhdHRlcm4gdG8g YmUgbWF0Y2hlZC4gKi8NCj4gPiArCX07DQo+ID4gKw0KPiA+ICsJLyogVzIgKi8NCj4gPiArCXJ0 ZV9pb3ZhX3QgYnVmX2lvdmE7DQo+ID4gKwkvKio8IElPVkEgYWRkcmVzcyBvZiB0aGUgcGF0dGVy biB0byBiZSBtYXRjaGVkLiAqLw0KPiA+ICsNCj4gPiArCS8qIFczICovDQo+ID4gKwl1aW50MTZf dCBncm91cF9pZDA7DQo+ID4gKwkvKio8IEZpcnN0IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxl IGFnYWluc3QuIE1pbmltdW0gb25lIGdyb3VwIGlkDQo+ID4gKwkgKiBtdXN0IGJlIHByb3ZpZGVk IGJ5IGFwcGxpY2F0aW9uLg0KPiA+ICsJICogV2hlbiBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9J RDFfVkFMSURfRiBzZXQgdGhlbg0KPiA+IGdyb3VwX2lkMQ0KPiA+ICsJICogaXMgdmFsaWQsIHJl c3BlY3RpdmVseSBzaW1pbGFyIGZsYWdzIGZvciBncm91cF9pZDIgYW5kIGdyb3VwX2lkMy4NCj4g PiArCSAqIFVwb24gdGhlIG1hdGNoLCBzdHJ1Y3QgcnRlX3JlZ2V4X21hdGNoOjpncm91cF9pZCBz aGFsbCBiZQ0KPiA+IHVwZGF0ZWQNCj4gPiArCSAqIHdpdGggbWF0Y2hpbmcgZ3JvdXAgSUQgYnkg dGhlIGRldmljZS4gR3JvdXAgSUQgc2NoZW1lIHByb3ZpZGVzDQo+ID4gKwkgKiBydWxlIGlzb2xh dGlvbiBhbmQgZWZmZWN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuDQo+ID4gKwkgKi8NCj4gPiArCXVp bnQxNl90IGdyb3VwX2lkMTsNCj4gPiArCS8qKjwgU2Vjb25kIGdyb3VwX2lkIHRvIG1hdGNoIHRo ZSBydWxlIGFnYWluc3QuDQo+ID4gKwkgKg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JF UV9HUk9VUF9JRDFfVkFMSURfRg0KPiA+ICsJICovDQo+ID4gKwl1aW50MTZfdCBncm91cF9pZDI7 DQo+ID4gKwkvKio8IFRoaXJkIGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuDQo+ ID4gKwkgKg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDJfVkFMSURf Rg0KPiA+ICsJICovDQo+ID4gKwl1aW50MTZfdCBncm91cF9pZDM7DQo+ID4gKwkvKio8IEZvcnRo IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuDQo+ID4gKwkgKg0KPiA+ICsJICog QHNlZSBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDNfVkFMSURfRg0KPiA+ICsJICovDQo+ID4g Kw0KPiA+ICsJLyogVzQgKi8NCj4gPiArCVJURV9TVERfQzExDQo+ID4gKwl1bmlvbiB7DQo+ID4g KwkJdWludDY0X3QgdXNlcl9pZDsNCj4gPiArCQkvKio8IEFwcGxpY2F0aW9uIHNwZWNpZmljIG9w YXF1ZSB2YWx1ZS4gQW4gYXBwbGljYXRpb24gbWF5DQo+ID4gdXNlDQo+ID4gKwkJICogdGhpcyBm aWVsZCB0byBob2xkIGFwcGxpY2F0aW9uIHNwZWNpZmljIHZhbHVlIHRvIHNoYXJlDQo+ID4gKwkJ ICogYmV0d2VlbiBkZXF1ZXVlIGFuZCBlbnF1ZXVlIG9wZXJhdGlvbi4NCj4gPiArCQkgKiBJbXBs ZW1lbnRhdGlvbiBzaG91bGQgbm90IG1vZGlmeSB0aGlzIGZpZWxkLg0KPiA+ICsJCSAqLw0KPiA+ ICsJCXZvaWQgKnVzZXJfcHRyOw0KPiA+ICsJCS8qKjwgUG9pbnRlciByZXByZXNlbnRhdGlvbiBv ZiAqdXNlcl9pZCogKi8NCj4gPiArCX07DQo+IA0KPiBTaW5jZSB3ZSB0YXJnZXQgdGhlIHJlZ2V4 IHN1YnN5c3RlbSBmb3IgYm90aCByZWdleCBhbmQgRFBJIEkgdGhpbmsgaXQgd2lsbCBiZQ0KPiBn b29kIHRvIGFkZCBhbm90aGVyIHVpbnQ2NF90IGZpZWxkIGNhbGxlZCBjb25uZWN0aW9uX2lkLg0K PiBEZXZpY2UgdGhhdCBzdXBwb3J0IERQSSBjYW4gcmVmZXIgdG8gaXQgYXMgYW5vdGhlciBtYXRj aCBhYmxlIGZpZWxkIHdoZW4gbG9va2luZw0KPiB1cCBmb3IgbWF0Y2hlcyBvbiB0aGUgZ2l2ZW4g YnVmZmVyLg0KPiANCj4gVGhpcyBmaWVsZCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgdXNlcl9pZCwg YXMgaXQgaXMgbm90IG9wYXF1ZSBmb3IgdGhlIGRldmljZS4NCj4gDQo+ID4gKw0KPiA+ICsJLyog VzUgKi8NCj4gPiArCXN0cnVjdCBydGVfcmVnZXhfbWF0Y2ggbWF0Y2hlc1tdOw0KPiA+ICsJLyoq PCBaZXJvIGxlbmd0aCBhcnJheSB0byBob2xkIHRoZSBtYXRjaCB0dXBsZXMuDQo+ID4gKwkgKiBU aGUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMgdmFsdWUgaG9sZHMgdGhlIG51bWJl ciBvZg0KPiA+ICsJICogZWxlbWVudHMgaW4gdGhpcyBhcnJheS4NCj4gPiArCSAqDQo+ID4gKwkg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfb3BzOjpuYl9tYXRjaGVzDQo+ID4gKwkgKi8NCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBFbnF1ZXVlIGEgYnVyc3Qgb2Ygc2NhbiByZXF1 ZXN0IG9uIGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgcnRlX3JlZ2V4X2Vu cXVldWVfYnVyc3QoKSBmdW5jdGlvbiBpcyBpbnZva2VkIHRvIHBsYWNlDQo+ID4gKyAqIHJlZ2V4 IG9wZXJhdGlvbnMgb24gdGhlIHF1ZXVlICpxcF9pZCogb2YgdGhlIGRldmljZSBkZXNpZ25hdGVk IGJ5DQo+ID4gKyAqIGl0cyAqZGV2X2lkKi4NCj4gPiArICoNCj4gPiArICogVGhlICpuYl9vcHMq IHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgdG8gcHJvY2VzcyB3aGljaA0K PiA+IGFyZQ0KPiA+ICsgKiBzdXBwbGllZCBpbiB0aGUgKm9wcyogYXJyYXkgb2YgKnJ0ZV9yZWdl eF9vcCogc3RydWN0dXJlcy4NCj4gPiArICoNCj4gPiArICogVGhlIHJ0ZV9yZWdleF9lbnF1ZXVl X2J1cnN0KCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mDQo+ID4gKyAqIG9wZXJhdGlv bnMgaXQgYWN0dWFsbHkgZW5xdWV1ZWQgZm9yIHByb2Nlc3NpbmcuIEEgcmV0dXJuIHZhbHVlIGVx dWFsIHRvDQo+ID4gKyAqICpuYl9vcHMqIG1lYW5zIHRoYXQgYWxsIHBhY2tldHMgaGF2ZSBiZWVu IGVucXVldWVkLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAgVGhl IGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gPiArICogQHBhcmFtIHFwX2lkDQo+ID4gKyAq ICAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSBwYWlyIHdoaWNoIHBhY2tldHMgYXJlIHRvIGJlIGVu cXVldWVkIGZvcg0KPiA+ICsgKiAgIHByb2Nlc3NpbmcuIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRo ZSByYW5nZSBbMCwgbmJfcXVldWVfcGFpcnMgLSAxXQ0KPiA+ICsgKiAgIHByZXZpb3VzbHkgc3Vw cGxpZWQgdG8gcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUoKS4NCj4gPiArICogQHBhcmFtIG9wcw0K PiA+ICsgKiAgIFRoZSBhZGRyZXNzIG9mIGFuIGFycmF5IG9mICpuYl9vcHMqIHBvaW50ZXJzIHRv ICpydGVfcmVnZXhfb3AqDQo+ID4gc3RydWN0dXJlcw0KPiA+ICsgKiAgIHdoaWNoIGNvbnRhaW4g dGhlIHJlZ2V4IG9wZXJhdGlvbnMgdG8gYmUgcHJvY2Vzc2VkLg0KPiA+ICsgKiBAcGFyYW0gbmJf b3BzDQo+ID4gKyAqICAgVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIHRvIHByb2Nlc3MuDQo+ID4g KyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMg YWN0dWFsbHkgZW5xdWV1ZWQgb24gdGhlIHJlZ2V4IGRldmljZS4gVGhlDQo+ID4gcmV0dXJuDQo+ ID4gKyAqICAgdmFsdWUgY2FuIGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgdGhlICpuYl9vcHMq IHBhcmFtZXRlciB3aGVuIHRoZQ0KPiA+ICsgKiAgIHJlZ2V4IGRldmljZXMgcXVldWUgaXMgZnVs bCBvciBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBpbg0KPiA+ICsgKiAgIGEg KnJ0ZV9yZWdleF9vcCouIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuICpuYl9vcHMq LCB0aGUNCj4gPiByZW1haW5pbmcNCj4gPiArICogICBvcHMgYXQgdGhlIGVuZCBvZiAqb3BzKiBh cmUgbm90IGNvbnN1bWVkIGFuZCB0aGUgY2FsbGVyIGhhcyB0byB0YWtlDQo+ID4gY2FyZQ0KPiA+ ICsgKiAgIG9mIHRoZW0uDQo+ID4gKyAqLw0KPiA+ICt1aW50MTZfdA0KPiA+ICtydGVfcmVnZXhf ZW5xdWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ID4gKwkJCXN0 cnVjdCBydGVfcmVnZXhfb3BzICoqb3BzLCB1aW50MTZfdCBuYl9vcHMpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqDQo+ID4gKyAqIERlcXVldWUgYSBidXJzdCBvZiBzY2FuIHJlc3BvbnNlIGZy b20gYSBxdWV1ZSBvbiB0aGUgUmVnRXggZGV2aWNlLg0KPiA+ICsgKiBUaGUgZGVxdWV1ZWQgb3Bl cmF0aW9uIGFyZSBzdG9yZWQgaW4gKnJ0ZV9yZWdleF9vcCogc3RydWN0dXJlcw0KPiA+ICsgKiB3 aG9zZSBwb2ludGVycyBhcmUgc3VwcGxpZWQgaW4gdGhlICpvcHMqIGFycmF5Lg0KPiA+ICsgKg0K PiA+ICsgKiBUaGUgcnRlX3JlZ2V4X2RlcXVldWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRo ZSBudW1iZXIgb2Ygb3BzDQo+ID4gKyAqIGFjdHVhbGx5IGRlcXVldWVkLCB3aGljaCBpcyB0aGUg bnVtYmVyIG9mICpydGVfcmVnZXhfb3AqIGRhdGENCj4gPiBzdHJ1Y3R1cmVzDQo+ID4gKyAqIGVm ZmVjdGl2ZWx5IHN1cHBsaWVkIGludG8gdGhlICpvcHMqIGFycmF5Lg0KPiA+ICsgKg0KPiA+ICsg KiBBIHJldHVybiB2YWx1ZSBlcXVhbCB0byAqbmJfb3BzKiBpbmRpY2F0ZXMgdGhhdCB0aGUgcXVl dWUgY29udGFpbmVkDQo+ID4gKyAqIGF0IGxlYXN0ICpuYl9vcHMqIG9wZXJhdGlvbnMsIGFuZCB0 aGlzIGlzIGxpa2VseSB0byBzaWduaWZ5IHRoYXQgb3RoZXINCj4gPiArICogcHJvY2Vzc2VkIG9w ZXJhdGlvbnMgcmVtYWluIGluIHRoZSBkZXZpY2VzIG91dHB1dCBxdWV1ZS4gQXBwbGljYXRpb25z DQo+ID4gKyAqIGltcGxlbWVudGluZyBhICJyZXRyaWV2ZSBhcyBtYW55IHByb2Nlc3NlZCBvcGVy YXRpb25zIGFzIHBvc3NpYmxlIg0KPiA+IHBvbGljeQ0KPiA+ICsgKiBjYW4gY2hlY2sgdGhpcyBz cGVjaWZpYyBjYXNlIGFuZCBrZWVwIGludm9raW5nIHRoZQ0KPiA+ICsgKiBydGVfcmVnZXhfZGVx dWV1ZV9idXJzdCgpIGZ1bmN0aW9uIHVudGlsIGEgdmFsdWUgbGVzcyB0aGFuDQo+ID4gKyAqICpu Yl9vcHMqIGlzIHJldHVybmVkLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgcnRlX3JlZ2V4X2RlcXVl dWVfYnVyc3QoKSBmdW5jdGlvbiBkb2VzIG5vdCBwcm92aWRlIGFueSBlcnJvcg0KPiA+ICsgKiBu b3RpZmljYXRpb24gdG8gYXZvaWQgdGhlIGNvcnJlc3BvbmRpbmcgb3ZlcmhlYWQuDQo+ID4gKyAq DQo+ID4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPiArICogICBUaGUgUmVnRXggZGV2aWNlIGlkZW50 aWZpZXINCj4gPiArICogQHBhcmFtIHFwX2lkDQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBx dWV1ZSBwYWlyIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgcHJvY2Vzc2VkIHBhY2tldHMuDQo+ID4g KyAqICAgVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBuYl9xdWV1ZV9wYWlycyAt IDFdIHByZXZpb3VzbHkNCj4gPiArICogICBzdXBwbGllZCB0byBydGVfcmVnZXhfZGV2X2NvbmZp Z3VyZSgpLg0KPiA+ICsgKiBAcGFyYW0gb3BzDQo+ID4gKyAqICAgVGhlIGFkZHJlc3Mgb2YgYW4g YXJyYXkgb2YgcG9pbnRlcnMgdG8gKnJ0ZV9yZWdleF9vcCogc3RydWN0dXJlcyB0aGF0DQo+ID4g bXVzdA0KPiA+ICsgKiAgIGJlIGxhcmdlIGVub3VnaCB0byBzdG9yZSAqbmJfb3BzKiBwb2ludGVy cyBpbiBpdC4NCj4gPiArICogQHBhcmFtIG5iX29wcw0KPiA+ICsgKiAgIFRoZSBtYXhpbXVtIG51 bWJlciBvZiBvcGVyYXRpb25zIHRvIGRlcXVldWUuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4N Cj4gPiArICogICBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgYWN0dWFsbHkgZGVxdWV1ZWQsIHdo aWNoIGlzIHRoZSBudW1iZXINCj4gPiArICogICBvZiBwb2ludGVycyB0byAqcnRlX3JlZ2V4X29w KiBzdHJ1Y3R1cmVzIGVmZmVjdGl2ZWx5IHN1cHBsaWVkIHRvIHRoZQ0KPiA+ICsgKiAgICpvcHMq IGFycmF5LiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiAqbmJfb3BzKiwgdGhlIHJl bWFpbmluZw0KPiA+ICsgKiAgIG9wcyBhdCB0aGUgZW5kIG9mICpvcHMqIGFyZSBub3QgY29uc3Vt ZWQgYW5kIHRoZSBjYWxsZXIgaGFzIHRvIHRha2UNCj4gPiBjYXJlDQo+ID4gKyAqICAgb2YgdGhl bS4NCj4gPiArICovDQo+ID4gK3VpbnQxNl90DQo+ID4gK3J0ZV9yZWdleF9kZXF1ZXVlX2J1cnN0 KHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxcF9pZCwNCj4gPiArCQkJc3RydWN0IHJ0ZV9yZWdl eF9vcHMgKipvcHMsIHVpbnQxNl90IG5iX29wcyk7DQo+ID4gKw0KPiA+ICsjaWZkZWYgX19jcGx1 c3BsdXMNCj4gPiArfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBfUlRFX1JF R0VYREVWX0hfICovDQo+ID4NCg0K