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 E1DD2A0471 for ; Mon, 15 Jul 2019 06:26:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 623083423; Mon, 15 Jul 2019 06:26:54 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 2B546325F; Mon, 15 Jul 2019 06:26:52 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x6F4P7tw012226; Sun, 14 Jul 2019 21:26:51 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=Ek0yyxPiTROKW0ZTMID2By3ySWXt/Oii6XAuEK3MuNg=; b=MnVe1reH4Mw+yVgYV4ZHfwHOD9yRCcHpAvS8JawrS9xqWLUk8hyCZv9qr59tZJLpEfti Wtbq79BNA1yAV0UmoQh/rnouvUFTJWc1SVfmwq8FB9HV5o3Z3v/xAZEaHWFrjVP2J6Qi KA6ze4wArU+OqlzSa41kpPzIEl9yFvcX9NSCRvLcFzjx1D5EfhVWXGrPNjRj54VzL54x 3d32cGaoc1w0dCAmH1KouUqtEdVNftnqeAOIHwm1KOtKKeMxNhT6l96QLT0BfpMUFenV tfvWkSs373+CRMwduHg2Hk48PuLNNH6XaQAT4jXGiSJ5qRRs59a9be684mFnx0PAD/+w 8g== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0b-0016f401.pphosted.com with ESMTP id 2tqetmn5a8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sun, 14 Jul 2019 21:26:50 -0700 Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Sun, 14 Jul 2019 21:26:48 -0700 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (104.47.45.56) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Sun, 14 Jul 2019 21:26:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EYVGjslDA1Ywjg7UeupQdGoscOQCb2EgXV0eg3AVpx1AsRAwoMlnWPR+OL4ZczJ9adcWtmHNBYCCQdQkIPHJ03YenZvKlzh3Wd8fcGDPXmky/SVX2/jiAKtNhnUitPordrSNzU9CsUL1HKSA/A1komO+GEnf0/g0c84nLrMHCBRPMljGU2Z/ZInlpxC0IQVpjnWgWWtqfkhL5Ezn9NOiN1IJOtOnUhoQMqr76VylwjLCrHLDbv0I2uwtjb0LIZ2euHx4DNjcPyHH72DWuIjd4ryQtZuaxGB4E/MzjXjkMy8duQR51KGczoImDDR4ZD9p/7KSw96WIejWJdU0mj67Ag== 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=Ek0yyxPiTROKW0ZTMID2By3ySWXt/Oii6XAuEK3MuNg=; b=iTv/4sfEocfyupxrq490hAm2+qakRo5TGlFxlK6NffOSH/jOtN2CSJMbgjg0eUzoK4t/MmSDwKHA05kZ3OB1ZEBJ9wjX4xtIInOcWg6MIm0EbJDvQ1/0NKOZ9DgT2sEBNpuh91YKePRuPTsJ90Dicc0zvvmGnqCAmW3d4+Egf0oOOjrxtNbBUPWicpbYQtpBBOi8hDEP9yxMhFRO0YZL0g2IKLht/+tGChiMQd+nl8CC/Dg0cJ4GVWngZV0LhYC/h+SLyXSRJIupHU2SVFczCwFcm95T7j/eXw2ERHpID1KE151Qphijz8ii0CPAg7uCUKAvIUzQ3uRxAvdMQD97iw== 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=Ek0yyxPiTROKW0ZTMID2By3ySWXt/Oii6XAuEK3MuNg=; b=njQcMuYHehEgtZtC/ew/0iQb0noGk+jyXr6Ffz8QrOESzp6ZCtm0Bk4vjyYT4HMDd8quoUQ0GFQT9MHbSurGtzcy5ygtyb0rTunOd4GTqaGOUu1iN7ws+viu1IA9huTmN1Snzinq1FC9h83siSnIV726fP5NgvizHPcH9cAD4jg= Received: from BYAPR18MB2424.namprd18.prod.outlook.com (20.179.91.149) by BYAPR18MB2630.namprd18.prod.outlook.com (20.179.94.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2073.14; Mon, 15 Jul 2019 04:26:43 +0000 Received: from BYAPR18MB2424.namprd18.prod.outlook.com ([fe80::2d42:12b6:aa2e:2862]) by BYAPR18MB2424.namprd18.prod.outlook.com ([fe80::2d42:12b6:aa2e:2862%4]) with mapi id 15.20.2073.012; Mon, 15 Jul 2019 04:26:43 +0000 From: Jerin Jacob Kollanukkaran To: Jerin Jacob Kollanukkaran , "dev@dpdk.org" CC: "techboard@dpdk.org" , Pavan Nikhilesh Bhagavatula , Shahaf Shuler , "Hemant Agrawal" , "j.bromhead@titan-ic.com" , "contact@qosmos.com" , "Bruce Richardson" , Dovrat Zifroni Thread-Topic: [dpdk-dev] [RFC PATCH v1] regexdev: introduce regexdev subsystem Thread-Index: AQHVLQAi2rjOOBgmkkyAXamhbVFWAKbLLFbQ Date: Mon, 15 Jul 2019 04:26:42 +0000 Message-ID: References: <20190627155036.56940-1-jerinj@marvell.com> In-Reply-To: <20190627155036.56940-1-jerinj@marvell.com> 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: 146c34ac-8584-44a4-b72e-08d708dca3e6 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:BYAPR18MB2630; x-ms-traffictypediagnostic: BYAPR18MB2630: x-ms-exchange-purlcount: 4 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:962; x-forefront-prvs: 00997889E7 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(396003)(39850400004)(136003)(376002)(346002)(13464003)(52254002)(189003)(199004)(2501003)(110136005)(476003)(55016002)(6306002)(25786009)(9686003)(54906003)(11346002)(53946003)(26005)(6116002)(3846002)(14454004)(102836004)(55236004)(99286004)(186003)(76176011)(7696005)(446003)(6436002)(316002)(6506007)(53546011)(5660300002)(486006)(81166006)(81156014)(8936002)(66446008)(66946007)(66476007)(66556008)(64756008)(30864003)(107886003)(6246003)(53936002)(68736007)(478600001)(4326008)(966005)(33656002)(71200400001)(71190400001)(66066001)(86362001)(2906002)(305945005)(7736002)(74316002)(229853002)(8676002)(256004)(14444005)(52536014)(76116006)(91820200001)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR18MB2630; 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: +XUgLKTpNbjkQ29MjIpSHCkIsYAnH6+y0yMm54eqOz4itoOv4puKMliEA2P6FYR28MzdvBJPsagAKjFamSz8SSNCb9YP+JcHbGfVq83GFFOW8b4eMlGKpA/sUXsUKbAE/xpfJELsZJzaa+EDTythrkDMCcImvjvPC0I7fLZYrKlwkGA/MtQHDnKRj7P5uOrtiv0bvn2+ilxpUbCYmgGIreML3uIpBdp2pmqy0WsvGEFacj+h0TJkXPzL3Z66229xrHYkirVvkkmxuMlDbuTUvyAlPibodEf7hF9GhOLssQbxhZeyKIdzGaeVgpPw20I6IEAMeFT+/JU+VDgIzfnLM3isq7lTg4HRD6RTbEyI9Z9cw8rsWPWYUtd0SMRTHKeHAmEoRwCfgwQxwF6YfO5KDqnZqnrF7QQ3njVPAlBCgrQ= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 146c34ac-8584-44a4-b72e-08d708dca3e6 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jul 2019 04:26:42.8350 (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: jerinj@marvell.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2630 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:5.22.84,1.0.8 definitions=2019-07-15_01:2019-07-12,2019-07-15 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" UGluZy4NCg0KSXMgYW55b25lIGludGVyZXN0ZWQgdG8gY29sbGFib3JhdGUgb24gdGhpcyBSRkNb Ml0/DQpNYXJ2ZWxsIHdvdWxkIGxpa2UgdG8gY29udHJpYnV0ZSBvbiBvbmUgU1coUENSRSBiYXNl ZCkgUE1EIGFuZCBIVyBQTUQgZm9yIHRoaXMgQVBJLg0KDQpTaGFoYWYgZnJvbSBNZWxsYW5veCBw cm9wb3NlZCBhIHByZXNlbnRhdGlvbiBvbiBEUERLIFJlZ2V4IGRldmljZSBmb3IgdXBjb21pbmcg dXNlciBzcGFjZSBzdW1taXRbMV0gc28NCkl0IHdvdWxkIGJlIGdvb2QgdG8gaXJvbiBvdXQgdGhl IGRpZmZlcmVuY2VzIGluIHZhcmlvdXMgSFcgYmFzZWQgcmVnZXggZW5naW5lcyBhbmQgdW5kZXJz dGFuZCB0aGUgcmVxdWlyZW1lbnRzDQpmcm9tIGFwcGxpY2F0aW9uIHBlcnNwZWN0aXZlIGFuZCBm aW5hbGl6ZSAgdGhlIHNwZWNpZmljYXRpb24gYmVmb3JlIHRoZSBzdW1taXQuDQoNCkxldCB1cyBr bm93LCBpZiBhbnlvbmUgaW50ZXJlc3RlZCB0byBjb2xsYWJvcmF0ZSBvbiBSZWdFeCBkZXZpY2Ug QVBJIGZvciBEUERLPw0KDQpbMV0NCmh0dHBzOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcv ZXZlbnRzL2RwZGstdXNlcnNwYWNlLTIwMTktYm9yZGVhdXgvcHJvZ3JhbS9zY2hlZHVsZS8NCg0K WzJdDQpodHRwOi8vcGF0Y2hlcy5kcGRrLm9yZy9wYXRjaC81NTUwNS8NCg0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGplcmluakBtYXJ2ZWxsLmNvbSA8amVyaW5qQG1h cnZlbGwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVuZSAyNywgMjAxOSA5OjIxIFBNDQo+IFRv OiBkZXZAZHBkay5vcmcNCj4gQ2M6IHRlY2hib2FyZEBkcGRrLm9yZzsgSmVyaW4gSmFjb2IgS29s bGFudWtrYXJhbiA8amVyaW5qQG1hcnZlbGwuY29tPjsNCj4gUGF2YW4gTmlraGlsZXNoIEJoYWdh dmF0dWxhIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+IFN1YmplY3Q6IFtkcGRrLWRldl0g W1JGQyBQQVRDSCB2MV0gcmVnZXhkZXY6IGludHJvZHVjZSByZWdleGRldg0KPiBzdWJzeXN0ZW0N Cj4gDQo+IEZyb206IEplcmluIEphY29iIDxqZXJpbmpAbWFydmVsbC5jb20+DQo+IA0KPiBFdmVu IHRob3VnaCB0aGVyZSBhcmUgc29tZSB2ZW5kb3JzIHdoaWNoIG9mZmVyIFJlZ2V4IEhXIG9mZmxv YWQsIGR1ZSB0bw0KPiBsYWNrIG9mIHN0YW5kYXJkIEFQSSwgSXQgaXMgZGlmZmN1bHQgZm9yIERQ REsgY29uc3VtZXIgdG8gdXNlIHRoZW0NCj4gaW4gYSBwb3J0YWJsZSB3YXkuDQo+IA0KPiBUaGlz IF9SRkNfIGF0dGVtcHRzIHRvIHN0YW5kYXJkaXplIHRoZSBSZWdFeC9EUEkgb2ZmbG9hZCBBUElz IGZvciBEUERLLg0KPiANCj4gVGhlIERveHlnZW4gZ2VuZXJhdGVkIFJGQyBBUEkgZG9jdW1lbnRh dGlvbiBhdmFpbGFibGUgaGVyZToNCj4gaHR0cHM6Ly9kcmVhbXktbm9ldGhlci0yMjc3N2UubmV0 bGlmeS5jb20vcnRlX19yZWdleGRldl84aC5odG1sDQo+IA0KPiBUaGlzIFJGQyBjcmFmdGVkIGJh c2VkIG9uIFNXIFJlZ2V4IEFQSSBmcmFtZXdvcmtzIHN1Y2ggYXMgbGlicGNyZSBhbmQNCj4gaHlw ZXJzY2FuIGFuZCBhIGZldyBvZiB0aGUgUmVnRXggSFcgSVBzIHdoaWNoIEkgYW0gYXdhcmUgb2Yu DQo+IA0KPiBSZWdFeCBwYXR0ZXJuIG1hdGNoaW5nIGFwcGxpY2F0aW9uczoNCj4g4oCiIE5leHQg R2VuZXJhdGlvbiBGaXJld2FsbHMgKE5HRlcpDQo+IOKAoiBEZWVwIFBhY2tldCBhbmQgRmxvdyBJ bnNwZWN0aW9uIChEUEkpDQo+IOKAoiBJbnRydXNpb24gUHJldmVudGlvbiBTeXN0ZW1zIChJUFMp DQo+IOKAoiBERG9TIE1pdGlnYXRpb24NCj4g4oCiIE5ldHdvcmsgTW9uaXRvcmluZw0KPiDigKIg RGF0YSBMb3NzIFByZXZlbnRpb24gKERMUCkNCj4g4oCiIFNtYXJ0IE5JQ3MNCj4g4oCiIEdyYW1t YXIgYmFzZWQgY29udGVudCBwcm9jZXNzaW5nDQo+IOKAoiBVUkwsIHNwYW0gYW5kIGFkd2FyZSBm aWx0ZXJpbmcNCj4g4oCiIEFkdmFuY2VkIGF1ZGl0aW5nIGFuZCBwb2xpY2luZyBvZiB1c2VyL2Fw cGxpY2F0aW9uIHNlY3VyaXR5IHBvbGljaWVzDQo+IOKAoiBGaW5hbmNpYWwgZGF0YSBtaW5pbmcg LSBwYXJzaW5nIG9mIHN0cmVhbWVkIGZpbmFuY2lhbCBmZWVkcw0KPiANCj4gUmVxdWVzdCB0byBy ZXZpZXcgZnJvbSBIVyBhbmQgU1cgUmVnRXggdmVuZG9ycyBhbmQgUmVnRXggYXBwbGljYXRpb24N Cj4gdXNlcnMNCj4gdG8gaGF2ZSBwb3J0YWJsZSBEUERLIEFQSSBmb3IgUmVnRXguDQo+IA0KPiBU aGUgQVBJIHNjaGVtYXRpY3MgYXJlIGJhc2VkIGNyeXB0b2RldiwgZXZlbnRkZXYgYW5kIGV0aGRl diBleGlzdGluZw0KPiBkZXZpY2UgQVBJLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSmVyaW4gSmFj b2IgPGplcmluakBtYXJ2ZWxsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogUGF2YW4gTmlraGlsZXNo IDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+IC0tLQ0KPiANCj4gUlRFIFJlZ0V4IERldmlj ZSBBUEkNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IERlZmluZXMgUlRFIFJlZ0V4IERl dmljZSBBUElzIGZvciBSZWdFeCBvcGVyYXRpb25zIGFuZCBpdHMgcHJvdmlzaW9uaW5nLg0KPiAN Cj4gVGhlIFJlZ0V4IERldmljZSBBUEkgaXMgY29tcG9zZWQgb2YgdHdvIHBhcnRzOg0KPiANCj4g LSBUaGUgYXBwbGljYXRpb24tb3JpZW50ZWQgUmVnRXggQVBJIHRoYXQgaW5jbHVkZXMgZnVuY3Rp b25zIHRvIHNldHVwDQo+ICAgYSBSZWdFeCBkZXZpY2UgKGNvbmZpZ3VyZSBpdCwgc2V0dXAgaXRz IHF1ZXVlIHBhaXJzIGFuZCBzdGFydCBpdCksDQo+ICAgdXBkYXRlIHRoZSBydWxlIGRhdGFiYXNl IGFuZCBzbyBvbi4NCj4gDQo+IC0gVGhlIGRyaXZlci1vcmllbnRlZCBSZWdFeCBBUEkgdGhhdCBl eHBvcnRzIGEgZnVuY3Rpb24gYWxsb3dpbmcNCj4gICBhIFJlZ0V4IHBvbGwgTW9kZSBEcml2ZXIg KFBNRCkgdG8gc2ltdWx0YW5lb3VzbHkgcmVnaXN0ZXIgaXRzZWxmIGFzDQo+ICAgYSBSZWdFeCBk ZXZpY2UgZHJpdmVyLg0KPiANCj4gUmVnRXggZGV2aWNlIGNvbXBvbmVudHMgYW5kIGRlZmluaXRp b25zOg0KPiANCj4gICAgICstLS0tLS0tLS0tLS0tLS0tLSsNCj4gICAgIHwgICAgICAgICAgICAg ICAgIHwNCj4gICAgIHwgICAgICAgICAgICAgICAgIG8tLS0tLS0tLS0rICAgIHJ0ZV9yZWdleF9b ZW58ZGVdcXVldWVfYnVyc3QoKQ0KPiAgICAgfCAgIFBDUkUgYmFzZWQgICAgby0tLS0tLSsgIHwg ICAgICAgICAgICAgICB8DQo+ICAgICB8ICBSZWdFeCBwYXR0ZXJuICB8ICAgICAgfCAgfCAgKy0t LS0tLS0tKyAgIHwNCj4gICAgIHwgbWF0Y2hpbmcgZW5naW5lIG8tLS0tLS0rLS0rLS1vICAgICAg ICB8ICAgfCAgICArLS0tLS0tKw0KPiAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgIHwgIHwg IHwgcXVldWUgIHw8PT1vPT09PnxDb3JlIDB8DQo+ICAgICB8ICAgICAgICAgICAgICAgICBvLS0t LSsgfCAgfCAgfCBwYWlyIDAgfCAgICAgICAgfCAgICAgIHwNCj4gICAgIHwgICAgICAgICAgICAg ICAgIHwgICAgfCB8ICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiAgICAgKy0tLS0t LS0tLS0tLS0tLS0tKyAgICB8IHwgIHwNCj4gICAgICAgICAgICBeICAgICAgICAgICAgICAgfCB8 ICB8ICArLS0tLS0tLS0rDQo+ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfCAgfCAgfCAg ICAgICAgfCAgICAgICAgKy0tLS0tLSsNCj4gICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAr LS0rLS1vIHF1ZXVlICB8PD09PT09PT58Q29yZSAxfA0KPiAgICAgICAgUnVsZXxEYXRhYmFzZSAg ICAgICB8ICAgIHwgIHwgcGFpciAxIHwgICAgICAgIHwgICAgICB8DQo+ICAgICArLS0tLS0tKy0t LS0tLS0tLS0rICAgIHwgICAgfCAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gICAgIHwg ICAgIEdyb3VwIDAgICAgIHwgICAgfCAgICB8DQo+ICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAg IHwgICAgfCAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gICAgIHwgfCBSdWxlcyAwLi5u ICB8IHwgICAgfCAgICB8ICB8ICAgICAgICB8ICAgICAgICB8Q29yZSAyfA0KPiAgICAgfCArLS0t LS0tLS0tLS0tLSsgfCAgICB8ICAgICstLW8gcXVldWUgIHw8PT09PT09PnwgICAgICB8DQo+ICAg ICB8ICAgICBHcm91cCAxICAgICB8ICAgIHwgICAgICAgfCBwYWlyIDIgfCAgICAgICAgKy0tLS0t LSsNCj4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICAgICArLS0tLS0tLS0rDQo+ICAg ICB8IHwgUnVsZXMgMC4ubiAgfCB8ICAgIHwNCj4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAg fCAgICAgICArLS0tLS0tLS0rDQo+ICAgICB8ICAgICBHcm91cCAyICAgICB8ICAgIHwgICAgICAg fCAgICAgICAgfCAgICAgICAgKy0tLS0tLSsNCj4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAg fCAgICAgICB8IHF1ZXVlICB8PD09PT09PT58Q29yZSBufA0KPiAgICAgfCB8IFJ1bGVzIDAuLm4g IHwgfCAgICArLS0tLS0tLW8gcGFpciBuIHwgICAgICAgIHwgICAgICB8DQo+ICAgICB8ICstLS0t LS0tLS0tLS0tKyB8ICAgICAgICAgICAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gICAg IHwgICAgIEdyb3VwIG4gICAgIHwNCj4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHw8LS0tLS0tLXJ0 ZV9yZWdleF9ydWxlX2RiX3VwZGF0ZSgpDQo+ICAgICB8IHwgUnVsZXMgMC4ubiAgfCB8PC0tLS0t LS1ydGVfcmVnZXhfcnVsZV9kYl9pbXBvcnQoKQ0KPiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfC0t LS0tLS0+cnRlX3JlZ2V4X3J1bGVfZGJfZXhwb3J0KCkNCj4gICAgICstLS0tLS0tLS0tLS0tLS0t LSsNCj4gDQo+IFJlZ0V4OiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBhIGNvbmNpc2UgYW5kIGZs ZXhpYmxlIG1lYW5zIGZvciBtYXRjaGluZw0KPiBzdHJpbmdzIG9mIHRleHQsIHN1Y2ggYXMgcGFy dGljdWxhciBjaGFyYWN0ZXJzLCB3b3Jkcywgb3IgcGF0dGVybnMgb2YNCj4gY2hhcmFjdGVycy4g QSBjb21tb24gYWJicmV2aWF0aW9uIGZvciB0aGlzIGlzIOKAnFJlZ0V44oCdLg0KPiANCj4gUmVn RXggZGV2aWNlOiBBIGhhcmR3YXJlIG9yIHNvZnR3YXJlLWJhc2VkIGltcGxlbWVudGF0aW9uIG9m IFJlZ0V4DQo+IGRldmljZSBBUEkgZm9yIFBDUkUgYmFzZWQgcGF0dGVybiBtYXRjaGluZyBzeW50 YXggYW5kIHNlbWFudGljcy4NCj4gDQo+IFBDUkUgUmVnRXggc3ludGF4IGFuZCBzZW1hbnRpY3Mg c3BlY2lmaWNhdGlvbjoNCj4gaHR0cDovL3JlZ2V4a2l0LnNvdXJjZWZvcmdlLm5ldC9Eb2N1bWVu dGF0aW9uL3BjcmUvcGNyZXBhdHRlcm4uaHRtbA0KPiANCj4gUmVnRXggcXVldWUgcGFpcjogRWFj aCBSZWdFeCBkZXZpY2Ugc2hvdWxkIGhhdmUgb25lIG9yIG1vcmUgcXVldWUgcGFpciB0bw0KPiB0 cmFuc21pdCBhIGJ1cnN0IG9mIHBhdHRlcm4gbWF0Y2hpbmcgcmVxdWVzdCBhbmQgcmVjZWl2ZSBh IGJ1cnN0IG9mDQo+IHJlY2VpdmUgdGhlIHBhdHRlcm4gbWF0Y2hpbmcgcmVzcG9uc2UuIFRoZSBw YXR0ZXJuIG1hdGNoaW5nDQo+IHJlcXVlc3QvcmVzcG9uc2UNCj4gZW1iZWRkZWQgaW4gKnJ0ZV9y ZWdleF9vcHMqIHN0cnVjdHVyZS4NCj4gDQo+IFJ1bGU6IEEgcGF0dGVybiBtYXRjaGluZyBydWxl IGV4cHJlc3NlZCBpbiBQQ1JFIFJlZ0V4IHN5bnRheCBhbG9uZyB3aXRoDQo+IE1hdGNoIElEIGFu ZCBHcm91cCBJRCB0byBpZGVudGlmeSB0aGUgcnVsZSB1cG9uIHRoZSBtYXRjaC4NCj4gDQo+IFJ1 bGUgZGF0YWJhc2U6IFRoZSBSZWdFeCBkZXZpY2UgYWNjZXB0cyByZWd1bGFyIGV4cHJlc3Npb25z IGFuZCBjb252ZXJ0cw0KPiB0aGVtDQo+IGludG8gYSBjb21waWxlZCBydWxlIGRhdGFiYXNlIHRo YXQgY2FuIHRoZW4gYmUgdXNlZCB0byBzY2FuIGRhdGEuDQo+IENvbXBpbGF0aW9uIGFsbG93cyB0 aGUgZGV2aWNlIHRvIGFuYWx5emUgdGhlIGdpdmVuIHBhdHRlcm4ocykgYW5kDQo+IHByZS1kZXRl cm1pbmUgaG93IHRvIHNjYW4gZm9yIHRoZXNlIHBhdHRlcm5zIGluIGFuIG9wdGltaXplZCBmYXNo aW9uIHRoYXQNCj4gd291bGQgYmUgZmFyIHRvbyBleHBlbnNpdmUgdG8gY29tcHV0ZSBhdCBydW4t dGltZS4gQSBydWxlIGRhdGFiYXNlIGNvbnRhaW5zDQo+IGEgc2V0IG9mIHJ1bGVzIHRoYXQgY29t cGlsZWQgaW4gZGV2aWNlIHNwZWNpZmljIGJpbmFyeSBmb3JtLg0KPiANCj4gTWF0Y2ggSUQgb3Ig UnVsZSBJRDogQSB1bmlxdWUgaWRlbnRpZmllciBwcm92aWRlZCBhdCB0aGUgdGltZSBvZiBydWxl DQo+IGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRlbnRpZnkgdGhlIHJ1bGUgdXBv biBtYXRjaC4NCj4gDQo+IEdyb3VwIElEOiBHcm91cCBvZiBydWxlcyBjYW4gYmUgZ3JvdXBlZCB1 bmRlciBvbmUgZ3JvdXAgSUQgdG8gZW5hYmxlDQo+IHJ1bGUgaXNvbGF0aW9uIGFuZCBlZmZlY3Rp dmUgcGF0dGVybiBtYXRjaGluZy4gQSB1bmlxdWUgZ3JvdXAgaWRlbnRpZmllcg0KPiBwcm92aWRl ZCBhdCB0aGUgdGltZSBvZiBydWxlIGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRl bnRpZnkgdGhlDQo+IHJ1bGUgdXBvbiBtYXRjaC4NCj4gDQo+IFNjYW46IEEgcGF0dGVybiBtYXRj aGluZyByZXF1ZXN0IHRocm91Z2ggKmVucXVldWUqIEFQSS4NCj4gDQo+IEl0IG1heSBwb3NzaWJs ZSB0aGF0IGEgZ2l2ZW4gUmVnRXggZGV2aWNlIG1heSBub3Qgc3VwcG9ydCBhbGwgdGhlIGZlYXR1 cmVzDQo+IG9mIFBDUkUuIFRoZSBhcHBsaWNhdGlvbiBtYXkgcHJvYmUgdW5zdXBwb3J0ZWQgZmVh dHVyZXMgdGhyb3VnaA0KPiBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2Zs YWdzDQo+IA0KPiBCeSBkZWZhdWx0LCBhbGwgdGhlIGZ1bmN0aW9ucyBvZiB0aGUgUmVnRXggRGV2 aWNlIEFQSSBleHBvcnRlZCBieSBhIFBNRA0KPiBhcmUgbG9jay1mcmVlIGZ1bmN0aW9ucyB3aGlj aCBhc3N1bWUgdG8gbm90IGJlIGludm9rZWQgaW4gcGFyYWxsZWwgb24NCj4gZGlmZmVyZW50IGxv Z2ljYWwgY29yZXMgdG8gd29yayBvbiB0aGUgc2FtZSB0YXJnZXQgb2JqZWN0LiBGb3IgaW5zdGFu Y2UsDQo+IHRoZSBkZXF1ZXVlIGZ1bmN0aW9uIG9mIGEgUE1EIGNhbm5vdCBiZSBpbnZva2VkIGlu IHBhcmFsbGVsIG9uIHR3byBsb2dpY2FsDQo+IGNvcmVzIHRvIG9wZXJhdGVzIG9uIHNhbWUgUmVn RXggcXVldWUgcGFpci4gT2YgY291cnNlLCB0aGlzIGZ1bmN0aW9uDQo+IGNhbiBiZSBpbnZva2Vk IGluIHBhcmFsbGVsIGJ5IGRpZmZlcmVudCBsb2dpY2FsIGNvcmUgb24gZGlmZmVyZW50IHF1ZXVl IHBhaXIuDQo+IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgdXBwZXIgbGV2ZWwgYXBw bGljYXRpb24gdG8gZW5mb3JjZSB0aGlzIHJ1bGUuDQo+IA0KPiBJbiBhbGwgZnVuY3Rpb25zIG9m IHRoZSBSZWdFeCBBUEksIHRoZSBSZWdFeCBkZXZpY2UgaXMNCj4gZGVzaWduYXRlZCBieSBhbiBp bnRlZ2VyID49IDAgbmFtZWQgdGhlIGRldmljZSBpZGVudGlmaWVyICpkZXZfaWQqDQo+IA0KPiBB dCB0aGUgUmVnRXggZHJpdmVyIGxldmVsLCBSZWdFeCBkZXZpY2VzIGFyZSByZXByZXNlbnRlZCBi eSBhIGdlbmVyaWMNCj4gZGF0YSBzdHJ1Y3R1cmUgb2YgdHlwZSAqcnRlX3JlZ2V4X2RldiouDQo+ IA0KPiBSZWdFeCBkZXZpY2VzIGFyZSBkeW5hbWljYWxseSByZWdpc3RlcmVkIGR1cmluZyB0aGUg UENJL1NvQyBkZXZpY2UgcHJvYmluZw0KPiBwaGFzZSBwZXJmb3JtZWQgYXQgRUFMIGluaXRpYWxp emF0aW9uIHRpbWUuDQo+IFdoZW4gYSBSZWdFeCBkZXZpY2UgaXMgYmVpbmcgcHJvYmVkLCBhICpy dGVfcmVnZXhfZGV2KiBzdHJ1Y3R1cmUgYW5kDQo+IGEgbmV3IGRldmljZSBpZGVudGlmaWVyIGFy ZSBhbGxvY2F0ZWQgZm9yIHRoYXQgZGV2aWNlLiBUaGVuLCB0aGUNCj4gcmVnZXhfZGV2X2luaXQo KSBmdW5jdGlvbiBzdXBwbGllZCBieSB0aGUgUmVnRXggZHJpdmVyIG1hdGNoaW5nIHRoZSBwcm9i ZWQNCj4gZGV2aWNlIGlzIGludm9rZWQgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgZGV2aWNl Lg0KPiANCj4gVGhlIHJvbGUgb2YgdGhlIGRldmljZSBpbml0IGZ1bmN0aW9uIGNvbnNpc3RzIG9m IHJlc2V0dGluZyB0aGUgaGFyZHdhcmUgb3INCj4gc29mdHdhcmUgUmVnRXggZHJpdmVyIGltcGxl bWVudGF0aW9ucy4NCj4gDQo+IElmIHRoZSBkZXZpY2UgaW5pdCBvcGVyYXRpb24gaXMgc3VjY2Vz c2Z1bCwgdGhlIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4NCj4gdGhlIGRldmljZSBpZGVudGlmaWVy IGFzc2lnbmVkIHRvIHRoZSBuZXcgZGV2aWNlIGFuZCBpdHMgYXNzb2NpYXRlZA0KPiAqcnRlX3Jl Z2V4X2Rldiogc3RydWN0dXJlIGlzIGVmZmVjdGl2ZWx5IHJlZ2lzdGVyZWQuDQo+IE90aGVyd2lz ZSwgYm90aCB0aGUgKnJ0ZV9yZWdleF9kZXYqIHN0cnVjdHVyZSBhbmQgdGhlIGRldmljZSBpZGVu dGlmaWVyIGFyZQ0KPiBmcmVlZC4NCj4gDQo+IFRoZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhl IGFwcGxpY2F0aW9uIFJlZ0V4IEFQSSB0byBzZXR1cCBhIGRldmljZQ0KPiBkZXNpZ25hdGVkIGJ5 IGl0cyBkZXZpY2UgaWRlbnRpZmllciBtdXN0IGJlIGludm9rZWQgaW4gdGhlIGZvbGxvd2luZyBv cmRlcjoNCj4gICAgIC0gcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUoKQ0KPiAgICAgLSBydGVfcmVn ZXhfcXVldWVfcGFpcl9zZXR1cCgpDQo+ICAgICAtIHJ0ZV9yZWdleF9kZXZfc3RhcnQoKQ0KPiAN Cj4gVGhlbiwgdGhlIGFwcGxpY2F0aW9uIGNhbiBpbnZva2UsIGluIGFueSBvcmRlciwgdGhlIGZ1 bmN0aW9ucw0KPiBleHBvcnRlZCBieSB0aGUgUmVnRXggQVBJIHRvIGVucXVldWUgcGF0dGVybiBt YXRjaGluZyBqb2IsIGRlcXVldWUNCj4gcGF0dGVybg0KPiBtYXRjaGluZyByZXNwb25zZSwgZ2V0 IHRoZSBzdGF0cywgdXBkYXRlIHRoZSBydWxlIGRhdGFiYXNlLA0KPiBnZXQvc2V0IGRldmljZSBh dHRyaWJ1dGVzIGFuZCBzbyBvbg0KPiANCj4gSWYgdGhlIGFwcGxpY2F0aW9uIHdhbnRzIHRvIGNo YW5nZSB0aGUgY29uZmlndXJhdGlvbiAoaS5lLiBjYWxsDQo+IHJ0ZV9yZWdleF9kZXZfY29uZmln dXJlKCkgb3IgcnRlX3JlZ2V4X3F1ZXVlX3BhaXJfc2V0dXAoKSksIGl0IG11c3QgY2FsbA0KPiBy dGVfcmVnZXhfZGV2X3N0b3AoKSBmaXJzdCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIHRoZW4gZG8g dGhlDQo+IHJlY29uZmlndXJhdGlvbg0KPiBiZWZvcmUgY2FsbGluZyBydGVfcmVnZXhfZGV2X3N0 YXJ0KCkgYWdhaW4uIFRoZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+IGZ1bmN0aW9ucyBzaG91bGQg bm90IGJlIGludm9rZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQuDQo+IA0KPiBGaW5hbGx5 LCBhbiBhcHBsaWNhdGlvbiBjYW4gY2xvc2UgYSBSZWdFeCBkZXZpY2UgYnkgaW52b2tpbmcgdGhl DQo+IHJ0ZV9yZWdleF9kZXZfY2xvc2UoKSBmdW5jdGlvbi4NCj4gDQo+IEVhY2ggZnVuY3Rpb24g b2YgdGhlIGFwcGxpY2F0aW9uIFJlZ0V4IEFQSSBpbnZva2VzIGEgc3BlY2lmaWMgZnVuY3Rpb24N Cj4gb2YgdGhlIFBNRCB0aGF0IGNvbnRyb2xzIHRoZSB0YXJnZXQgZGV2aWNlIGRlc2lnbmF0ZWQg YnkgaXRzIGRldmljZQ0KPiBpZGVudGlmaWVyLg0KPiANCj4gRm9yIHRoaXMgcHVycG9zZSwgYWxs IGRldmljZS1zcGVjaWZpYyBmdW5jdGlvbnMgb2YgYSBSZWdFeCBkcml2ZXIgYXJlDQo+IHN1cHBs aWVkIHRocm91Z2ggYSBzZXQgb2YgcG9pbnRlcnMgY29udGFpbmVkIGluIGEgZ2VuZXJpYyBzdHJ1 Y3R1cmUgb2YgdHlwZQ0KPiAqcmVnZXhfZGV2X29wcyouDQo+IFRoZSBhZGRyZXNzIG9mIHRoZSAq cmVnZXhfZGV2X29wcyogc3RydWN0dXJlIGlzIHN0b3JlZCBpbiB0aGUNCj4gKnJ0ZV9yZWdleF9k ZXYqDQo+IHN0cnVjdHVyZSBieSB0aGUgZGV2aWNlIGluaXQgZnVuY3Rpb24gb2YgdGhlIFJlZ0V4 IGRyaXZlciwgd2hpY2ggaXMNCj4gaW52b2tlZCBkdXJpbmcgdGhlIFBDSS9Tb0MgZGV2aWNlIHBy b2JpbmcgcGhhc2UsIGFzIGV4cGxhaW5lZCBlYXJsaWVyLg0KPiANCj4gSW4gb3RoZXIgd29yZHMs IGVhY2ggZnVuY3Rpb24gb2YgdGhlIFJlZ0V4IEFQSSBzaW1wbHkgcmV0cmlldmVzIHRoZQ0KPiAq cnRlX3JlZ2V4X2Rldiogc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIGlkZW50 aWZpZXIgYW5kDQo+IHBlcmZvcm1zIGFuIGluZGlyZWN0IGludm9jYXRpb24gb2YgdGhlIGNvcnJl c3BvbmRpbmcgZHJpdmVyIGZ1bmN0aW9uDQo+IHN1cHBsaWVkIGluIHRoZSAqcmVnZXhfZGV2X29w cyogc3RydWN0dXJlIG9mIHRoZSAqcnRlX3JlZ2V4X2RldioNCj4gc3RydWN0dXJlLg0KPiANCj4g Rm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoZSBhZGRyZXNzIG9mIHRoZSBmYXN0LXBhdGggZnVu Y3Rpb25zIG9mIHRoZQ0KPiBSZWdFeCBkcml2ZXIgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGUgKnJl Z2V4X2Rldl9vcHMqIHN0cnVjdHVyZS4NCj4gSW5zdGVhZCwgdGhleSBhcmUgZGlyZWN0bHkgc3Rv cmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlICpydGVfcmVnZXhfZGV2Kg0KPiBzdHJ1Y3R1cmUg dG8gYXZvaWQgYW4gZXh0cmEgaW5kaXJlY3QgbWVtb3J5IGFjY2VzcyBkdXJpbmcgdGhlaXIgaW52 b2NhdGlvbi4NCj4gDQo+IFJURSBSZWdFeCBkZXZpY2UgZHJpdmVycyBkbyBub3QgdXNlIGludGVy cnVwdHMgZm9yIGVucXVldWUgb3IgZGVxdWV1ZQ0KPiBvcGVyYXRpb24uIEluc3RlYWQsIFJlZ0V4 IGRyaXZlcnMgZXhwb3J0IFBvbGwtTW9kZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+IGZ1bmN0aW9u cyB0byBhcHBsaWNhdGlvbnMuDQo+IA0KPiBUaGUgKmVucXVldWUqIG9wZXJhdGlvbiBzdWJtaXRz IGEgYnVyc3Qgb2YgUmVnRXggcGF0dGVybiBtYXRjaGluZw0KPiByZXF1ZXN0DQo+IHRvIHRoZSBS ZWdFeCBkZXZpY2UgYW5kIHRoZSAqZGVxdWV1ZSogb3BlcmF0aW9uIGdldHMgYSBidXJzdCBvZiBw YXR0ZXJuDQo+IG1hdGNoaW5nIHJlc3BvbnNlIGZvciB0aGUgb25lcyBzdWJtaXR0ZWQgdGhyb3Vn aCAqZW5xdWV1ZSogb3BlcmF0aW9uLg0KPiANCj4gVHlwaWNhbCBhcHBsaWNhdGlvbiB1dGlsaXNh dGlvbiBvZiB0aGUgUmVnRXggZGV2aWNlIEFQSSB3aWxsIGZvbGxvdyB0aGUNCj4gZm9sbG93aW5n IHByb2dyYW1taW5nIGZsb3cuDQo+IA0KPiAtIHJ0ZV9yZWdleF9kZXZfY29uZmlndXJlKCkNCj4g LSBydGVfcmVnZXhfcXVldWVfcGFpcl9zZXR1cCgpDQo+IC0gcnRlX3JlZ2V4X3J1bGVfZGJfdXBk YXRlKCkgTmVlZHMgdG8gaW52b2tlIGlmIHByZWNvbXBpbGVkIHJ1bGUgZGF0YWJhc2UNCj4gbm90 DQo+ICAgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4X2Rldl9jb25maWc6OnJ1bGVfZGIgZm9yIHJ0ZV9y ZWdleF9kZXZfY29uZmlndXJlKCkNCj4gICBhbmQvb3IgYXBwbGljYXRpb24gbmVlZHMgdG8gdXBk YXRlIHJ1bGUgZGF0YWJhc2UuDQo+IC0gQ3JlYXRlIG9yIHJldXNlIGV4aXRpbmcgbWVtcG9vbCBm b3IgKnJ0ZV9yZWdleF9vcHMqIG9iamVjdHMuDQo+IC0gcnRlX3JlZ2V4X2Rldl9zdGFydCgpDQo+ IC0gcnRlX3JlZ2V4X2VucXVldWVfYnVyc3QoKQ0KPiAtIHJ0ZV9yZWdleF9kZXF1ZXVlX2J1cnN0 KCkNCj4gDQo+IC0tLQ0KPiANCj4gIGNvbmZpZy9jb21tb25fYmFzZSAgICAgICAgICAgICAgICAg fCAgICA1ICsNCj4gIGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgICAgICAgICAgfCAgICAxICsN Cj4gIGRvYy9hcGkvZG94eS1hcGkuY29uZi5pbiAgICAgICAgICAgfCAgICAxICsNCj4gIGxpYi9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gIGxpYi9saWJydGVfcmVn ZXhkZXYvTWFrZWZpbGUgICAgICAgfCAgIDIzICsNCj4gIGxpYi9saWJydGVfcmVnZXhkZXYvcnRl X3JlZ2V4ZGV2LmMgfCAgICA1ICsNCj4gIGxpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2 LmggfCAxMjQ3DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIDcgZmlsZXMgY2hh bmdlZCwgMTI4NCBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0 ZV9yZWdleGRldi9NYWtlZmlsZQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfcmVn ZXhkZXYvcnRlX3JlZ2V4ZGV2LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3Jl Z2V4ZGV2L3J0ZV9yZWdleGRldi5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvY29uZmlnL2NvbW1vbl9i YXNlIGIvY29uZmlnL2NvbW1vbl9iYXNlDQo+IGluZGV4IGU0MDZlNzgzNi4uOTg2MDkzZDZlIDEw MDY0NA0KPiAtLS0gYS9jb25maWcvY29tbW9uX2Jhc2UNCj4gKysrIGIvY29uZmlnL2NvbW1vbl9i YXNlDQo+IEBAIC03NDYsNiArNzQ2LDExIEBADQo+IENPTkZJR19SVEVfTElCUlRFX1BNRF9EUEFB Ml9RRE1BX1JBV0RFVj1uDQo+ICAjDQo+ICBDT05GSUdfUlRFX0xJQlJURV9QTURfSUZQR0FfUkFX REVWPXkNCj4gDQo+ICsjDQo+ICsjIENvbXBpbGUgcmVnZXggZGV2aWNlIHN1cHBvcnQNCj4gKyMN Cj4gK0NPTkZJR19SVEVfTElCUlRFX1JFR0VYREVWPXkNCj4gKw0KPiAgIw0KPiAgIyBDb21waWxl IGxpYnJ0ZV9yaW5nDQo+ICAjDQo+IGRpZmYgLS1naXQgYS9kb2MvYXBpL2RveHktYXBpLWluZGV4 Lm1kIGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiBpbmRleCA3MTUyNDhkZDEuLmEwYmMy N2FlNCAxMDA2NDQNCj4gLS0tIGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiArKysgYi9k b2MvYXBpL2RveHktYXBpLWluZGV4Lm1kDQo+IEBAIC0yNiw2ICsyNiw3IEBAIFRoZSBwdWJsaWMg QVBJIGhlYWRlcnMgYXJlIGdyb3VwZWQgYnkgdG9waWNzOg0KPiAgICBbZXZlbnRfdGltZXJfYWRh cHRlcl0gICAgKEByZWYgcnRlX2V2ZW50X3RpbWVyX2FkYXB0ZXIuaCksDQo+ICAgIFtldmVudF9j cnlwdG9fYWRhcHRlcl0gICAoQHJlZiBydGVfZXZlbnRfY3J5cHRvX2FkYXB0ZXIuaCksDQo+ICAg IFtyYXdkZXZdICAgICAgICAgICAgIChAcmVmIHJ0ZV9yYXdkZXYuaCksDQo+ICsgIFtyZWdleGRl dl0gICAgICAgICAgIChAcmVmIHJ0ZV9yZWdleGRldi5oKSwNCj4gICAgW21ldHJpY3NdICAgICAg ICAgICAgKEByZWYgcnRlX21ldHJpY3MuaCksDQo+ICAgIFtiaXRyYXRlXSAgICAgICAgICAgIChA cmVmIHJ0ZV9iaXRyYXRlLmgpLA0KPiAgICBbbGF0ZW5jeV0gICAgICAgICAgICAoQHJlZiBydGVf bGF0ZW5jeXN0YXRzLmgpLA0KPiBkaWZmIC0tZ2l0IGEvZG9jL2FwaS9kb3h5LWFwaS5jb25mLmlu IGIvZG9jL2FwaS9kb3h5LWFwaS5jb25mLmluDQo+IGluZGV4IGI5ODk2Y2I2My4uN2FkYjgyMWJi IDEwMDY0NA0KPiAtLS0gYS9kb2MvYXBpL2RveHktYXBpLmNvbmYuaW4NCj4gKysrIGIvZG9jL2Fw aS9kb3h5LWFwaS5jb25mLmluDQo+IEBAIC01Myw2ICs1Myw3IEBAIElOUFVUICAgICAgICAgICAg ICAgICAgID0gQFRPUERJUkAvZG9jL2FwaS9kb3h5LWFwaS0NCj4gaW5kZXgubWQgXA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBAVE9QRElSQC9saWIvbGlicnRlX3Jhd2RldiBcDQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJydGVfcmN1IFwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL2xpYnJ0ZV9yZW9yZGVyIFwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL2xpYnJ0ZV9yZWdleGRldiBc DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJydGVfcmluZyBc DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJydGVfc2NoZWQg XA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAVE9QRElSQC9saWIvbGlicnRlX3NlY3Vy aXR5IFwNCj4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZQ0KPiBpbmRl eCA3OTFlMGQ5OTEuLjU3ZGU5NjkxYSAxMDA2NDQNCj4gLS0tIGEvbGliL01ha2VmaWxlDQo+ICsr KyBiL2xpYi9NYWtlZmlsZQ0KPiBAQCAtNDQsNiArNDQsOCBAQCBERVBESVJTLWxpYnJ0ZV9ldmVu dGRldiA6PSBsaWJydGVfZWFsIGxpYnJ0ZV9yaW5nDQo+IGxpYnJ0ZV9ldGhkZXYgbGlicnRlX2hh c2ggXA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicnRlX21lbXBvb2wgbGlicnRl X3RpbWVyIGxpYnJ0ZV9jcnlwdG9kZXYNCj4gIERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9SQVdE RVYpICs9IGxpYnJ0ZV9yYXdkZXYNCj4gIERFUERJUlMtbGlicnRlX3Jhd2RldiA6PSBsaWJydGVf ZWFsIGxpYnJ0ZV9ldGhkZXYNCj4gK0RJUlMtJChDT05GSUdfUlRFX0xJQlJURV9SRUdFWERFVikg Kz0gbGlicnRlX3JlZ2V4ZGV2DQo+ICtERVBESVJTLWxpYnJ0ZV9yZWdleGRldiA6PSBsaWJydGVf ZWFsDQo+ICBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfVkhPU1QpICs9IGxpYnJ0ZV92aG9zdA0K PiAgREVQRElSUy1saWJydGVfdmhvc3QgOj0gbGlicnRlX2VhbCBsaWJydGVfbWVtcG9vbCBsaWJy dGVfbWJ1Zg0KPiBsaWJydGVfZXRoZGV2IFwNCj4gIAkJCWxpYnJ0ZV9uZXQNCj4gZGlmZiAtLWdp dCBhL2xpYi9saWJydGVfcmVnZXhkZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L01h a2VmaWxlDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uNzIzYjRi MjhjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xpYnJ0ZV9yZWdleGRldi9NYWtlZmls ZQ0KPiBAQCAtMCwwICsxLDIzIEBADQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4gKyMgQ29weXJpZ2h0KEMpIDIwMTkgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0 ZC4NCj4gKyMNCj4gKw0KPiAraW5jbHVkZSAkKFJURV9TREspL21rL3J0ZS52YXJzLm1rDQo+ICsN Cj4gKyMgbGlicmFyeSBuYW1lDQo+ICtMSUIgPSBsaWJydGVfcmVnZXhkZXYuYQ0KPiArDQo+ICsj IGxpYnJhcnkgdmVyc2lvbg0KPiArTElCQUJJVkVSIDo9IDENCj4gKw0KPiArIyBidWlsZCBmbGFn cw0KPiArQ0ZMQUdTICs9IC1PMw0KPiArQ0ZMQUdTICs9ICQoV0VSUk9SX0ZMQUdTKQ0KPiArDQo+ ICsjIGxpYnJhcnkgc291cmNlIGZpbGVzDQo+ICtTUkNTLXkgKz0gcnRlX3JlZ2V4ZGV2LmMNCj4g Kw0KPiArIyBleHBvcnQgaW5jbHVkZSBmaWxlcw0KPiArU1lNTElOSy15LWluY2x1ZGUgKz0gcnRl X3JlZ2V4ZGV2LmgNCj4gKw0KPiAraW5jbHVkZSAkKFJURV9TREspL21rL3J0ZS5saWIubWsNCj4g ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2LmMNCj4gYi9saWIv bGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMC4uZTViZTBmMjljDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGli L2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYuYw0KPiBAQCAtMCwwICsxLDUgQEANCj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChD KSAyMDE5IE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1 ZGUgPHJ0ZV9yZWdleGRldi5oPg0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9yZWdleGRldi9y dGVfcmVnZXhkZXYuaA0KPiBiL2xpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2LmgNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwLi43NjVkYTRhYWENCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5oDQo+ IEBAIC0wLDAgKzEsMTI0NyBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KEMpIDIwMTkgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0 ZC4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9SVEVfUkVHRVhERVZfSF8NCj4gKyNkZWZpbmUg X1JURV9SRUdFWERFVl9IXw0KPiArDQo+ICsvKioNCj4gKyAqIEBmaWxlDQo+ICsgKg0KPiArICog UlRFIFJlZ0V4IERldmljZSBBUEkNCj4gKyAqDQo+ICsgKiBEZWZpbmVzIFJURSBSZWdFeCBEZXZp Y2UgQVBJcyBmb3IgUmVnRXggb3BlcmF0aW9ucyBhbmQgaXRzIHByb3Zpc2lvbmluZy4NCj4gKyAq DQo+ICsgKiBUaGUgUmVnRXggRGV2aWNlIEFQSSBpcyBjb21wb3NlZCBvZiB0d28gcGFydHM6DQo+ ICsgKg0KPiArICogLSBUaGUgYXBwbGljYXRpb24tb3JpZW50ZWQgUmVnRXggQVBJIHRoYXQgaW5j bHVkZXMgZnVuY3Rpb25zIHRvIHNldHVwDQo+ICsgKiAgIGEgUmVnRXggZGV2aWNlIChjb25maWd1 cmUgaXQsIHNldHVwIGl0cyBxdWV1ZSBwYWlycyBhbmQgc3RhcnQgaXQpLA0KPiArICogICB1cGRh dGUgdGhlIHJ1bGUgZGF0YWJhc2UgYW5kIHNvIG9uLg0KPiArICoNCj4gKyAqIC0gVGhlIGRyaXZl ci1vcmllbnRlZCBSZWdFeCBBUEkgdGhhdCBleHBvcnRzIGEgZnVuY3Rpb24gYWxsb3dpbmcNCj4g KyAqICAgYSBSZWdFeCBwb2xsIE1vZGUgRHJpdmVyIChQTUQpIHRvIHNpbXVsdGFuZW91c2x5IHJl Z2lzdGVyIGl0c2VsZiBhcw0KPiArICogICBhIFJlZ0V4IGRldmljZSBkcml2ZXIuDQo+ICsgKg0K PiArICogUmVnRXggZGV2aWNlIGNvbXBvbmVudHMgYW5kIGRlZmluaXRpb25zOg0KPiArICoNCj4g KyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgKiAgICAgfCAgICAgICAgICAgICAgICAg fA0KPiArICogICAgIHwgICAgICAgICAgICAgICAgIG8tLS0tLS0tLS0rICAgIHJ0ZV9yZWdleF9b ZW58ZGVdcXVldWVfYnVyc3QoKQ0KPiArICogICAgIHwgICBQQ1JFIGJhc2VkICAgIG8tLS0tLS0r ICB8ICAgICAgICAgICAgICAgfA0KPiArICogICAgIHwgIFJlZ0V4IHBhdHRlcm4gIHwgICAgICB8 ICB8ICArLS0tLS0tLS0rICAgfA0KPiArICogICAgIHwgbWF0Y2hpbmcgZW5naW5lIG8tLS0tLS0r LS0rLS1vICAgICAgICB8ICAgfCAgICArLS0tLS0tKw0KPiArICogICAgIHwgICAgICAgICAgICAg ICAgIHwgICAgICB8ICB8ICB8IHF1ZXVlICB8PD09bz09PT58Q29yZSAwfA0KPiArICogICAgIHwg ICAgICAgICAgICAgICAgIG8tLS0tKyB8ICB8ICB8IHBhaXIgMCB8ICAgICAgICB8ICAgICAgfA0K PiArICogICAgIHwgICAgICAgICAgICAgICAgIHwgICAgfCB8ICB8ICArLS0tLS0tLS0rICAgICAg ICArLS0tLS0tKw0KPiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLSsgICAgfCB8ICB8DQo+ICsg KiAgICAgICAgICAgIF4gICAgICAgICAgICAgICB8IHwgIHwgICstLS0tLS0tLSsNCj4gKyAqICAg ICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfCAgfCAgfCAgICAgICAgfCAgICAgICAgKy0tLS0t LSsNCj4gKyAqICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgKy0tKy0tbyBxdWV1ZSAgfDw9 PT09PT0+fENvcmUgMXwNCj4gKyAqICAgICAgICBSdWxlfERhdGFiYXNlICAgICAgIHwgICAgfCAg fCBwYWlyIDEgfCAgICAgICAgfCAgICAgIHwNCj4gKyAqICAgICArLS0tLS0tKy0tLS0tLS0tLS0r ICAgIHwgICAgfCAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gKyAqICAgICB8ICAgICBH cm91cCAwICAgICB8ICAgIHwgICAgfA0KPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAg fCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiArICogICAgIHwgfCBSdWxlcyAw Li5uICB8IHwgICAgfCAgICB8ICB8ICAgICAgICB8ICAgICAgICB8Q29yZSAyfA0KPiArICogICAg IHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICArLS1vIHF1ZXVlICB8PD09PT09PT58ICAgICAg fA0KPiArICogICAgIHwgICAgIEdyb3VwIDEgICAgIHwgICAgfCAgICAgICB8IHBhaXIgMiB8ICAg ICAgICArLS0tLS0tKw0KPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICAgICAr LS0tLS0tLS0rDQo+ICsgKiAgICAgfCB8IFJ1bGVzIDAuLm4gIHwgfCAgICB8DQo+ICsgKiAgICAg fCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAgICAgICstLS0tLS0tLSsNCj4gKyAqICAgICB8ICAg ICBHcm91cCAyICAgICB8ICAgIHwgICAgICAgfCAgICAgICAgfCAgICAgICAgKy0tLS0tLSsNCj4g KyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgICAgfCBxdWV1ZSAgfDw9PT09PT0+ fENvcmUgbnwNCj4gKyAqICAgICB8IHwgUnVsZXMgMC4ubiAgfCB8ICAgICstLS0tLS0tbyBwYWly IG4gfCAgICAgICAgfCAgICAgIHwNCj4gKyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgICAg ICAgICAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gKyAqICAgICB8ICAgICBHcm91cCBu ICAgICB8DQo+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfDwtLS0tLS0tcnRlX3JlZ2V4X3J1 bGVfZGJfdXBkYXRlKCkNCj4gKyAqICAgICB8IHwgUnVsZXMgMC4ubiAgfCB8PC0tLS0tLS1ydGVf cmVnZXhfcnVsZV9kYl9pbXBvcnQoKQ0KPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwtLS0t LS0tPnJ0ZV9yZWdleF9ydWxlX2RiX2V4cG9ydCgpDQo+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0t LS0tKw0KPiArICoNCj4gKyAqIFJlZ0V4OiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBhIGNvbmNp c2UgYW5kIGZsZXhpYmxlIG1lYW5zIGZvciBtYXRjaGluZw0KPiArICogc3RyaW5ncyBvZiB0ZXh0 LCBzdWNoIGFzIHBhcnRpY3VsYXIgY2hhcmFjdGVycywgd29yZHMsIG9yIHBhdHRlcm5zIG9mDQo+ ICsgKiBjaGFyYWN0ZXJzLiBBIGNvbW1vbiBhYmJyZXZpYXRpb24gZm9yIHRoaXMgaXMg4oCcUmVn RXjigJ0uDQo+ICsgKg0KPiArICogUmVnRXggZGV2aWNlOiBBIGhhcmR3YXJlIG9yIHNvZnR3YXJl LWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIFJlZ0V4DQo+ICsgKiBkZXZpY2UgQVBJIGZvciBQQ1JF IGJhc2VkIHBhdHRlcm4gbWF0Y2hpbmcgc3ludGF4IGFuZCBzZW1hbnRpY3MuDQo+ICsgKg0KPiAr ICogUENSRSBSZWdFeCBzeW50YXggYW5kIHNlbWFudGljcyBzcGVjaWZpY2F0aW9uOg0KPiArICog aHR0cDovL3JlZ2V4a2l0LnNvdXJjZWZvcmdlLm5ldC9Eb2N1bWVudGF0aW9uL3BjcmUvcGNyZXBh dHRlcm4uaHRtbA0KPiArICoNCj4gKyAqIFJlZ0V4IHF1ZXVlIHBhaXI6IEVhY2ggUmVnRXggZGV2 aWNlIHNob3VsZCBoYXZlIG9uZSBvciBtb3JlIHF1ZXVlDQo+IHBhaXIgdG8NCj4gKyAqIHRyYW5z bWl0IGEgYnVyc3Qgb2YgcGF0dGVybiBtYXRjaGluZyByZXF1ZXN0IGFuZCByZWNlaXZlIGEgYnVy c3Qgb2YNCj4gKyAqIHJlY2VpdmUgdGhlIHBhdHRlcm4gbWF0Y2hpbmcgcmVzcG9uc2UuIFRoZSBw YXR0ZXJuIG1hdGNoaW5nDQo+IHJlcXVlc3QvcmVzcG9uc2UNCj4gKyAqIGVtYmVkZGVkIGluICpy dGVfcmVnZXhfb3BzKiBzdHJ1Y3R1cmUuDQo+ICsgKg0KPiArICogUnVsZTogQSBwYXR0ZXJuIG1h dGNoaW5nIHJ1bGUgZXhwcmVzc2VkIGluIFBDUkUgUmVnRXggc3ludGF4IGFsb25nIHdpdGgNCj4g KyAqIE1hdGNoIElEIGFuZCBHcm91cCBJRCB0byBpZGVudGlmeSB0aGUgcnVsZSB1cG9uIHRoZSBt YXRjaC4NCj4gKyAqDQo+ICsgKiBSdWxlIGRhdGFiYXNlOiBUaGUgUmVnRXggZGV2aWNlIGFjY2Vw dHMgcmVndWxhciBleHByZXNzaW9ucyBhbmQNCj4gY29udmVydHMgdGhlbQ0KPiArICogaW50byBh IGNvbXBpbGVkIHJ1bGUgZGF0YWJhc2UgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNjYW4gZGF0 YS4NCj4gKyAqIENvbXBpbGF0aW9uIGFsbG93cyB0aGUgZGV2aWNlIHRvIGFuYWx5emUgdGhlIGdp dmVuIHBhdHRlcm4ocykgYW5kDQo+ICsgKiBwcmUtZGV0ZXJtaW5lIGhvdyB0byBzY2FuIGZvciB0 aGVzZSBwYXR0ZXJucyBpbiBhbiBvcHRpbWl6ZWQgZmFzaGlvbg0KPiB0aGF0DQo+ICsgKiB3b3Vs ZCBiZSBmYXIgdG9vIGV4cGVuc2l2ZSB0byBjb21wdXRlIGF0IHJ1bi10aW1lLiBBIHJ1bGUgZGF0 YWJhc2UNCj4gY29udGFpbnMNCj4gKyAqIGEgc2V0IG9mIHJ1bGVzIHRoYXQgY29tcGlsZWQgaW4g ZGV2aWNlIHNwZWNpZmljIGJpbmFyeSBmb3JtLg0KPiArICoNCj4gKyAqIE1hdGNoIElEIG9yIFJ1 bGUgSUQ6IEEgdW5pcXVlIGlkZW50aWZpZXIgcHJvdmlkZWQgYXQgdGhlIHRpbWUgb2YgcnVsZQ0K PiArICogY3JlYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBpZGVudGlmeSB0aGUgcnVsZSB1 cG9uIG1hdGNoLg0KPiArICoNCj4gKyAqIEdyb3VwIElEOiBHcm91cCBvZiBydWxlcyBjYW4gYmUg Z3JvdXBlZCB1bmRlciBvbmUgZ3JvdXAgSUQgdG8gZW5hYmxlDQo+ICsgKiBydWxlIGlzb2xhdGlv biBhbmQgZWZmZWN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEEgdW5pcXVlIGdyb3VwIGlkZW50aWZp ZXINCj4gKyAqIHByb3ZpZGVkIGF0IHRoZSB0aW1lIG9mIHJ1bGUgY3JlYXRpb24gZm9yIHRoZSBh cHBsaWNhdGlvbiB0byBpZGVudGlmeSB0aGUNCj4gKyAqIHJ1bGUgdXBvbiBtYXRjaC4NCj4gKyAq DQo+ICsgKiBTY2FuOiBBIHBhdHRlcm4gbWF0Y2hpbmcgcmVxdWVzdCB0aHJvdWdoICplbnF1ZXVl KiBBUEkuDQo+ICsgKg0KPiArICogSXQgbWF5IHBvc3NpYmxlIHRoYXQgYSBnaXZlbiBSZWdFeCBk ZXZpY2UgbWF5IG5vdCBzdXBwb3J0IGFsbCB0aGUgZmVhdHVyZXMNCj4gKyAqIG9mIFBDUkUuIFRo ZSBhcHBsaWNhdGlvbiBtYXkgcHJvYmUgdW5zdXBwb3J0ZWQgZmVhdHVyZXMgdGhyb3VnaA0KPiAr ICogc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cGNyZV91bnN1cF9mbGFncw0KPiArICoNCj4g KyAqIEJ5IGRlZmF1bHQsIGFsbCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBSZWdFeCBEZXZpY2UgQVBJ IGV4cG9ydGVkIGJ5IGEgUE1EDQo+ICsgKiBhcmUgbG9jay1mcmVlIGZ1bmN0aW9ucyB3aGljaCBh c3N1bWUgdG8gbm90IGJlIGludm9rZWQgaW4gcGFyYWxsZWwgb24NCj4gKyAqIGRpZmZlcmVudCBs b2dpY2FsIGNvcmVzIHRvIHdvcmsgb24gdGhlIHNhbWUgdGFyZ2V0IG9iamVjdC4gRm9yIGluc3Rh bmNlLA0KPiArICogdGhlIGRlcXVldWUgZnVuY3Rpb24gb2YgYSBQTUQgY2Fubm90IGJlIGludm9r ZWQgaW4gcGFyYWxsZWwgb24gdHdvDQo+IGxvZ2ljYWwNCj4gKyAqIGNvcmVzIHRvIG9wZXJhdGVz IG9uIHNhbWUgUmVnRXggcXVldWUgcGFpci4gT2YgY291cnNlLCB0aGlzIGZ1bmN0aW9uDQo+ICsg KiBjYW4gYmUgaW52b2tlZCBpbiBwYXJhbGxlbCBieSBkaWZmZXJlbnQgbG9naWNhbCBjb3JlIG9u IGRpZmZlcmVudCBxdWV1ZQ0KPiBwYWlyLg0KPiArICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5 IG9mIHRoZSB1cHBlciBsZXZlbCBhcHBsaWNhdGlvbiB0byBlbmZvcmNlIHRoaXMgcnVsZS4NCj4g KyAqDQo+ICsgKiBJbiBhbGwgZnVuY3Rpb25zIG9mIHRoZSBSZWdFeCBBUEksIHRoZSBSZWdFeCBk ZXZpY2UgaXMNCj4gKyAqIGRlc2lnbmF0ZWQgYnkgYW4gaW50ZWdlciA+PSAwIG5hbWVkIHRoZSBk ZXZpY2UgaWRlbnRpZmllciAqZGV2X2lkKg0KPiArICoNCj4gKyAqIEF0IHRoZSBSZWdFeCBkcml2 ZXIgbGV2ZWwsIFJlZ0V4IGRldmljZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGEgZ2VuZXJpYw0KPiAr ICogZGF0YSBzdHJ1Y3R1cmUgb2YgdHlwZSAqcnRlX3JlZ2V4X2RldiouDQo+ICsgKg0KPiArICog UmVnRXggZGV2aWNlcyBhcmUgZHluYW1pY2FsbHkgcmVnaXN0ZXJlZCBkdXJpbmcgdGhlIFBDSS9T b0MgZGV2aWNlDQo+IHByb2JpbmcNCj4gKyAqIHBoYXNlIHBlcmZvcm1lZCBhdCBFQUwgaW5pdGlh bGl6YXRpb24gdGltZS4NCj4gKyAqIFdoZW4gYSBSZWdFeCBkZXZpY2UgaXMgYmVpbmcgcHJvYmVk LCBhICpydGVfcmVnZXhfZGV2KiBzdHJ1Y3R1cmUgYW5kDQo+ICsgKiBhIG5ldyBkZXZpY2UgaWRl bnRpZmllciBhcmUgYWxsb2NhdGVkIGZvciB0aGF0IGRldmljZS4gVGhlbiwgdGhlDQo+ICsgKiBy ZWdleF9kZXZfaW5pdCgpIGZ1bmN0aW9uIHN1cHBsaWVkIGJ5IHRoZSBSZWdFeCBkcml2ZXIgbWF0 Y2hpbmcgdGhlDQo+IHByb2JlZA0KPiArICogZGV2aWNlIGlzIGludm9rZWQgdG8gcHJvcGVybHkg aW5pdGlhbGl6ZSB0aGUgZGV2aWNlLg0KPiArICoNCj4gKyAqIFRoZSByb2xlIG9mIHRoZSBkZXZp Y2UgaW5pdCBmdW5jdGlvbiBjb25zaXN0cyBvZiByZXNldHRpbmcgdGhlIGhhcmR3YXJlIG9yDQo+ ICsgKiBzb2Z0d2FyZSBSZWdFeCBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0KPiArICoNCj4gKyAq IElmIHRoZSBkZXZpY2UgaW5pdCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlIGNvcnJlc3Bv bmRlbmNlIGJldHdlZW4NCj4gKyAqIHRoZSBkZXZpY2UgaWRlbnRpZmllciBhc3NpZ25lZCB0byB0 aGUgbmV3IGRldmljZSBhbmQgaXRzIGFzc29jaWF0ZWQNCj4gKyAqICpydGVfcmVnZXhfZGV2KiBz dHJ1Y3R1cmUgaXMgZWZmZWN0aXZlbHkgcmVnaXN0ZXJlZC4NCj4gKyAqIE90aGVyd2lzZSwgYm90 aCB0aGUgKnJ0ZV9yZWdleF9kZXYqIHN0cnVjdHVyZSBhbmQgdGhlIGRldmljZSBpZGVudGlmaWVy DQo+IGFyZQ0KPiArICogZnJlZWQuDQo+ICsgKg0KPiArICogVGhlIGZ1bmN0aW9ucyBleHBvcnRl ZCBieSB0aGUgYXBwbGljYXRpb24gUmVnRXggQVBJIHRvIHNldHVwIGEgZGV2aWNlDQo+ICsgKiBk ZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UgaWRlbnRpZmllciBtdXN0IGJlIGludm9rZWQgaW4gdGhl IGZvbGxvd2luZyBvcmRlcjoNCj4gKyAqICAgICAtIHJ0ZV9yZWdleF9kZXZfY29uZmlndXJlKCkN Cj4gKyAqICAgICAtIHJ0ZV9yZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gKyAqICAgICAtIHJ0 ZV9yZWdleF9kZXZfc3RhcnQoKQ0KPiArICoNCj4gKyAqIFRoZW4sIHRoZSBhcHBsaWNhdGlvbiBj YW4gaW52b2tlLCBpbiBhbnkgb3JkZXIsIHRoZSBmdW5jdGlvbnMNCj4gKyAqIGV4cG9ydGVkIGJ5 IHRoZSBSZWdFeCBBUEkgdG8gZW5xdWV1ZSBwYXR0ZXJuIG1hdGNoaW5nIGpvYiwgZGVxdWV1ZQ0K PiBwYXR0ZXJuDQo+ICsgKiBtYXRjaGluZyByZXNwb25zZSwgZ2V0IHRoZSBzdGF0cywgdXBkYXRl IHRoZSBydWxlIGRhdGFiYXNlLA0KPiArICogZ2V0L3NldCBkZXZpY2UgYXR0cmlidXRlcyBhbmQg c28gb24NCj4gKyAqDQo+ICsgKiBJZiB0aGUgYXBwbGljYXRpb24gd2FudHMgdG8gY2hhbmdlIHRo ZSBjb25maWd1cmF0aW9uIChpLmUuIGNhbGwNCj4gKyAqIHJ0ZV9yZWdleF9kZXZfY29uZmlndXJl KCkgb3IgcnRlX3JlZ2V4X3F1ZXVlX3BhaXJfc2V0dXAoKSksIGl0IG11c3QNCj4gY2FsbA0KPiAr ICogcnRlX3JlZ2V4X2Rldl9zdG9wKCkgZmlyc3QgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCB0aGVu IGRvIHRoZQ0KPiByZWNvbmZpZ3VyYXRpb24NCj4gKyAqIGJlZm9yZSBjYWxsaW5nIHJ0ZV9yZWdl eF9kZXZfc3RhcnQoKSBhZ2Fpbi4gVGhlIGVucXVldWUgYW5kIGRlcXVldWUNCj4gKyAqIGZ1bmN0 aW9ucyBzaG91bGQgbm90IGJlIGludm9rZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQuDQo+ ICsgKg0KPiArICogRmluYWxseSwgYW4gYXBwbGljYXRpb24gY2FuIGNsb3NlIGEgUmVnRXggZGV2 aWNlIGJ5IGludm9raW5nIHRoZQ0KPiArICogcnRlX3JlZ2V4X2Rldl9jbG9zZSgpIGZ1bmN0aW9u Lg0KPiArICoNCj4gKyAqIEVhY2ggZnVuY3Rpb24gb2YgdGhlIGFwcGxpY2F0aW9uIFJlZ0V4IEFQ SSBpbnZva2VzIGEgc3BlY2lmaWMgZnVuY3Rpb24NCj4gKyAqIG9mIHRoZSBQTUQgdGhhdCBjb250 cm9scyB0aGUgdGFyZ2V0IGRldmljZSBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UNCj4gKyAqIGlk ZW50aWZpZXIuDQo+ICsgKg0KPiArICogRm9yIHRoaXMgcHVycG9zZSwgYWxsIGRldmljZS1zcGVj aWZpYyBmdW5jdGlvbnMgb2YgYSBSZWdFeCBkcml2ZXIgYXJlDQo+ICsgKiBzdXBwbGllZCB0aHJv dWdoIGEgc2V0IG9mIHBvaW50ZXJzIGNvbnRhaW5lZCBpbiBhIGdlbmVyaWMgc3RydWN0dXJlIG9m IHR5cGUNCj4gKyAqICpyZWdleF9kZXZfb3BzKi4NCj4gKyAqIFRoZSBhZGRyZXNzIG9mIHRoZSAq cmVnZXhfZGV2X29wcyogc3RydWN0dXJlIGlzIHN0b3JlZCBpbiB0aGUNCj4gKnJ0ZV9yZWdleF9k ZXYqDQo+ICsgKiBzdHJ1Y3R1cmUgYnkgdGhlIGRldmljZSBpbml0IGZ1bmN0aW9uIG9mIHRoZSBS ZWdFeCBkcml2ZXIsIHdoaWNoIGlzDQo+ICsgKiBpbnZva2VkIGR1cmluZyB0aGUgUENJL1NvQyBk ZXZpY2UgcHJvYmluZyBwaGFzZSwgYXMgZXhwbGFpbmVkIGVhcmxpZXIuDQo+ICsgKg0KPiArICog SW4gb3RoZXIgd29yZHMsIGVhY2ggZnVuY3Rpb24gb2YgdGhlIFJlZ0V4IEFQSSBzaW1wbHkgcmV0 cmlldmVzIHRoZQ0KPiArICogKnJ0ZV9yZWdleF9kZXYqIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdp dGggdGhlIGRldmljZSBpZGVudGlmaWVyIGFuZA0KPiArICogcGVyZm9ybXMgYW4gaW5kaXJlY3Qg aW52b2NhdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXIgZnVuY3Rpb24NCj4gKyAqIHN1 cHBsaWVkIGluIHRoZSAqcmVnZXhfZGV2X29wcyogc3RydWN0dXJlIG9mIHRoZSAqcnRlX3JlZ2V4 X2RldioNCj4gc3RydWN0dXJlLg0KPiArICoNCj4gKyAqIEZvciBwZXJmb3JtYW5jZSByZWFzb25z LCB0aGUgYWRkcmVzcyBvZiB0aGUgZmFzdC1wYXRoIGZ1bmN0aW9ucyBvZiB0aGUNCj4gKyAqIFJl Z0V4IGRyaXZlciBpcyBub3QgY29udGFpbmVkIGluIHRoZSAqcmVnZXhfZGV2X29wcyogc3RydWN0 dXJlLg0KPiArICogSW5zdGVhZCwgdGhleSBhcmUgZGlyZWN0bHkgc3RvcmVkIGF0IHRoZSBiZWdp bm5pbmcgb2YgdGhlICpydGVfcmVnZXhfZGV2Kg0KPiArICogc3RydWN0dXJlIHRvIGF2b2lkIGFu IGV4dHJhIGluZGlyZWN0IG1lbW9yeSBhY2Nlc3MgZHVyaW5nIHRoZWlyDQo+IGludm9jYXRpb24u DQo+ICsgKg0KPiArICogUlRFIFJlZ0V4IGRldmljZSBkcml2ZXJzIGRvIG5vdCB1c2UgaW50ZXJy dXB0cyBmb3IgZW5xdWV1ZSBvciBkZXF1ZXVlDQo+ICsgKiBvcGVyYXRpb24uIEluc3RlYWQsIFJl Z0V4IGRyaXZlcnMgZXhwb3J0IFBvbGwtTW9kZSBlbnF1ZXVlIGFuZA0KPiBkZXF1ZXVlDQo+ICsg KiBmdW5jdGlvbnMgdG8gYXBwbGljYXRpb25zLg0KPiArICoNCj4gKyAqIFRoZSAqZW5xdWV1ZSog b3BlcmF0aW9uIHN1Ym1pdHMgYSBidXJzdCBvZiBSZWdFeCBwYXR0ZXJuIG1hdGNoaW5nDQo+IHJl cXVlc3QNCj4gKyAqIHRvIHRoZSBSZWdFeCBkZXZpY2UgYW5kIHRoZSAqZGVxdWV1ZSogb3BlcmF0 aW9uIGdldHMgYSBidXJzdCBvZiBwYXR0ZXJuDQo+ICsgKiBtYXRjaGluZyByZXNwb25zZSBmb3Ig dGhlIG9uZXMgc3VibWl0dGVkIHRocm91Z2ggKmVucXVldWUqDQo+IG9wZXJhdGlvbi4NCj4gKyAq DQo+ICsgKiBUeXBpY2FsIGFwcGxpY2F0aW9uIHV0aWxpc2F0aW9uIG9mIHRoZSBSZWdFeCBkZXZp Y2UgQVBJIHdpbGwgZm9sbG93IHRoZQ0KPiArICogZm9sbG93aW5nIHByb2dyYW1taW5nIGZsb3cu DQo+ICsgKg0KPiArICogLSBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpDQo+ICsgKiAtIHJ0ZV9y ZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gKyAqIC0gcnRlX3JlZ2V4X3J1bGVfZGJfdXBkYXRl KCkgTmVlZHMgdG8gaW52b2tlIGlmIHByZWNvbXBpbGVkIHJ1bGUNCj4gZGF0YWJhc2Ugbm90DQo+ ICsgKiAgIHByb3ZpZGVkIGluIHJ0ZV9yZWdleF9kZXZfY29uZmlnOjpydWxlX2RiIGZvcg0KPiBy dGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpDQo+ICsgKiAgIGFuZC9vciBhcHBsaWNhdGlvbiBuZWVk cyB0byB1cGRhdGUgcnVsZSBkYXRhYmFzZS4NCj4gKyAqIC0gQ3JlYXRlIG9yIHJldXNlIGV4aXRp bmcgbWVtcG9vbCBmb3IgKnJ0ZV9yZWdleF9vcHMqIG9iamVjdHMuDQo+ICsgKiAtIHJ0ZV9yZWdl eF9kZXZfc3RhcnQoKQ0KPiArICogLSBydGVfcmVnZXhfZW5xdWV1ZV9idXJzdCgpDQo+ICsgKiAt IHJ0ZV9yZWdleF9kZXF1ZXVlX2J1cnN0KCkNCj4gKyAqDQo+ICsgKi8NCj4gKw0KPiArI2lmZGVm IF9fY3BsdXNwbHVzDQo+ICtleHRlcm4gIkMiIHsNCj4gKyNlbmRpZg0KPiArDQo+ICsjaW5jbHVk ZSA8cnRlX2NvbW1vbi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9jb25maWcuaD4NCj4gKyNpbmNsdWRl IDxydGVfZGV2Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX2Vycm5vLmg+DQo+ICsjaW5jbHVkZSA8cnRl X21lbW9yeS5oPg0KPiArDQo+ICsvKioNCj4gKyAqIEdldCB0aGUgdG90YWwgbnVtYmVyIG9mIFJl Z0V4IGRldmljZXMgdGhhdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5DQo+ICsgKiBpbml0aWFsaXNl ZC4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSB0b3RhbCBudW1iZXIgb2YgdXNh YmxlIFJlZ0V4IGRldmljZXMuDQo+ICsgKi8NCj4gK3VpbnQ4X3QNCj4gK3J0ZV9yZWdleF9kZXZf Y291bnQodm9pZCk7DQo+ICsNCj4gKy8qKg0KPiArICogR2V0IHRoZSBkZXZpY2UgaWRlbnRpZmll ciBmb3IgdGhlIG5hbWVkIFJlZ0V4IGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbmFtZQ0K PiArICogICBSZWdFeCBkZXZpY2UgbmFtZSB0byBzZWxlY3QgdGhlIFJlZ0V4IGRldmljZSBpZGVu dGlmaWVyLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgUmV0dXJucyBSZWdFeCBkZXZp Y2UgaWRlbnRpZmllciBvbiBzdWNjZXNzLg0KPiArICogICAtIDwwOiBGYWlsdXJlIHRvIGZpbmQg bmFtZWQgUmVnRXggZGV2aWNlLg0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9yZWdleF9kZXZfZ2V0 X2Rldl9pZChjb25zdCBjaGFyICpuYW1lKTsNCj4gKw0KPiArLyogRW51bWVyYXRlcyBSZWdFeCBk ZXZpY2UgY2FwYWJpbGl0aWVzICovDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfQ0FQQV9SVU5U SU1FX0NPTVBJTEFUSU9OX0YgKDFVTEwgPDwgMCkNCj4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXMg c3VwcG9ydCBjb21waWxpbmcgdGhlIHJ1bGVzIGF0IHJ1bnRpbWUgdW5saWtlDQo+ICsgKiBsb2Fk aW5nIG9ubHkgdGhlIHByZS1idWlsdCBydWxlIGRhdGFiYXNlIHVzaW5nDQo+ICsgKiBzdHJ1Y3Qg cnRlX3JlZ2V4X2Rldl9jb25maWc6OnJ1bGVfZGIgaW4gcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUo KQ0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9jb25maWc6OnJ1bGVfZGIsIHJ0ZV9y ZWdleF9kZXZfY29uZmlndXJlKCkNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5m bzo6cmVnZXhfZGV2X2NhcGENCj4gKyAqLw0KPiArDQo+ICsNCj4gKy8qIEVudW1lcmF0ZXMgdW5z dXBwb3J0ZWQgUENSRSBmZWF0dXJlcyBmb3IgdGhlIFJlZ0V4IGRldmljZSAqLw0KPiArI2RlZmlu ZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfU1RBUlRfQU5DSE9SX0YgKDFVTEwgPDwgMCkNCj4g Ky8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIEFuY2hvciB0byBzdGFydCBv ZiBtYXRjaCBmbGFnLg0KPiArICogRXhhbXBsZSBSZWdFeCBpcyAnL1xHZm9vXGQvJy4gSGVyZSAn XEcnIGFzc2VydHMgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiB0aGUNCj4gKyAqIHByZXZpb3VzIG1h dGNoIG9yIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nIGZvciB0aGUgZmlyc3QgbWF0Y2guDQo+ICsg KiBUaGlzIHBvc2l0aW9uIHdpbGwgY2hhbmdlIGVhY2ggdGltZSB0aGUgUmVnRXggaXMgYXBwbGll ZCB0byB0aGUgc3ViamVjdA0KPiArICogc3RyaW5nLiBJZiB0aGUgUmVnRXggaXMgYXBwbGllZCB0 byAnZm9vMWZvbzJaZm9vMycgdGhlIGZpcnN0IHR3byBtYXRjaGVzIHdpbGwNCj4gKyAqIGJlIHN1 Y2Nlc3NmdWwgZm9yICdmb28xZm9vMicgYW5kIGZhaWwgZm9yICdaZm9vMycuDQo+ICsgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gKyAqLw0KPiAr DQo+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF9BVE9NSUNfR1JPVVBJTkdfRiAo MVVMTCA8PA0KPiAxKQ0KPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBDUkUg QXRvbWljIGdyb3VwaW5nLg0KPiArICogQXRvbWljIGdyb3VwcyBhcmUgcmVwcmVzZW50ZWQgYnkg Jyg/PiknLiBBbiBhdG9taWMgZ3JvdXAgaXMgYSBncm91cCB0aGF0LA0KPiArICogd2hlbiB0aGUg UmVnRXggZW5naW5lIGV4aXRzIGZyb20gaXQsIGF1dG9tYXRpY2FsbHkgdGhyb3dzIGF3YXkgYWxs DQo+ICsgKiBiYWNrdHJhY2tpbmcgcG9zaXRpb25zIHJlbWVtYmVyZWQgYnkgYW55IHRva2VucyBp bnNpZGUgdGhlIGdyb3VwLg0KPiArICogRXhhbXBsZSBSZWdFeCBpcyAnYSg/PmJjfGIpYycgaWYg dGhlIGdpdmVuIHBhdHRlcm5zIGFyZSAnYWJjJyBhbmQgJ2FiY2MnDQo+IHRoZW4NCj4gKyAqICdh KGJjfGIpYycgbWF0Y2hlcyBib3RoIHdoZXJlIGFzICdhKD8+YmN8YiljJyBtYXRjaGVzIG9ubHkg YWJjYyBiZWNhdXNlDQo+ICsgKiBhdG9taWMgZ3JvdXBzIGRvbid0IGFsbG93IGJhY2t0cmFjaW5n IGJhY2sgdG8gJ2InLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3Jl X3Vuc3VwX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVf VU5TVVBfQkFDS1RSQUNLSU5HX0NUUkxfRiAoMVVMTCA8PA0KPiAyKQ0KPiArLyoqPCBSZWdFeCBk ZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBDUkUgYmFja3RyYWNraW5nIGNvbnRyb2wgdmVyYnMuDQo+ ICsgKiBTb21lIGV4YW1wbGVzIG9mIGJhY2t0cmFjaW5nIHZlcmJzIGFyZSAoKkNPTU1JVCksICgq QUNDRVBUKSwgKCpGQUlMKSwNCj4gKyAqICgqU0tJUCksICgqUFJVTkUpLg0KPiArICogQHNlZSBz dHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ICsgKi8NCj4gKw0K PiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfQ0FMTE9VVFNfRiAoMVVMTCA8PCAz KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBDUkUgY2FsbG91dHMuDQo+ ICsgKiBQQ1JFIHN1cHBvcnRzIGNhbGxpbmcgZXh0ZXJuYWwgZnVuY3Rpb24gaW4gYmV0d2VlbiBt YXRjaGVzIGJ5IHVzaW5nDQo+ICcoP0MpJy4NCj4gKyAqIEV4YW1wbGUgUmVnRXggJ0FCQyg/QylE JyBpZiBhIGdpdmVuIHBhdHRlciBpcyAnQUJDRCcgdGhlbiB0aGUgUmVnRXgNCj4gZW5naW5lDQo+ ICsgKiB3aWxsIHBhcnNlIEFCQyBwZXJmb3JtIGEgdXNlcmRlZmluZWQgY2FsbG91dCBhbmQgcmV0 dXJuIGEgc3VjY2Vzc2Z1bA0KPiBtYXRjaCBhdA0KPiArICogRC4NCj4gKyAqIEBzZWUgc3RydWN0 IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cGNyZV91bnN1cF9mbGFncw0KPiArICovDQo+ICsNCj4gKyNk ZWZpbmUgUlRFX1JFR0VYX0RFVl9QQ1JFX1VOU1VQX0JBQ0tSRUZFUkVOQ0VfRiAoMVVMTCA8PCA0 KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBDUkUgYmFja3JlZmVyZW5j ZS4NCj4gKyAqIEV4YW1wbGUgUmVnRXggaXMgJyhcMkFCQ3woR0hJKSkrJyBcMiBtYXRjaGVzIHRo ZSBzYW1lIHRleHQgYXMgbW9zdA0KPiByZWNlbnRseQ0KPiArICogbWF0Y2hlZCBieSB0aGUgMm5k IGNhcHR1cmluZyBncm91cCBpLmUuICdHSEknLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4 X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVf UkVHRVhfREVWX1BDUkVfVU5TVVBfR1JFRURZX0YgKDFVTEwgPDwgNSkNCj4gKy8qKjwgUmVnRXgg ZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIEdyZWVkeSBtb2RlLg0KPiArICogRm9yIGV4YW1w bGUgaWYgdGhlIFJlZ0V4IGlzICdBQlxkKj8nIHRoZW4gJyo/JyByZXByZXNlbnRzIHplcm8gb3IN Cj4gdW5saW1pdGVkDQo+ICsgKiBtYXRjaGVzLiBJbiBncmVlZHkgbW9kZSB0aGUgcGF0dGVybiAn QUIxMjM0NScgd2lsbCBiZSBtYXRjaGVkDQo+IGNvbXBsZXRlbHkNCj4gKyAqIHdoZXJlIGFzIHRo ZSB1bmdyZWVkeSBtb2RlICdBQicgd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgbWF0Y2guDQo+ICsg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gKyAq Lw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF9MT09LQVJPVU5EX0FT UlRfRiAoMVVMTCA8PA0KPiA2KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lc24ndCBzdXBwb3J0 IFBDUkUgTG9va2Fyb3VuZCBhc3NlcnRpb25zDQo+ICsgKiAoWmVyby13aWR0aCBhc3NlcnRpb25z KS4gRXhhbXBsZSBSZWdFeCBpcyAnW2Etel0rXGQrKD89IXszLH0pJyBpZg0KPiArICogdGhlIGdp dmVuIHBhdHRlcm4gaXMgJ2R3YWQxMjM0IScgdGhlIFJlZ0V4IGVuZ2luZSBkb2Vzbid0IHJlcG9y dCBhbnkNCj4gbWF0Y2hlcw0KPiArICogYmVjYXVzZSB0aGUgYXNzZXJ0ICcoPz0hezMsfSknIGZh aWxzLiBUaGUgcGF0dGVybiAnZHdhZDEyMyEhIScgd291bGQgcmV0dXJuDQo+IGENCj4gKyAqIHN1 Y2Nlc3NmdWwgbWF0Y2guDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBj cmVfdW5zdXBfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENS RV9VTlNVUF9NQVRDSF9QT0lOVF9SU1RfRiAoMVVMTCA8PA0KPiA3KQ0KPiArLyoqPCBSZWdFeCBk ZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBDUkUgbWF0Y2ggcG9pbnQgcmVzZXQgZGlyZWN0aXZlLg0K PiArICogRXhhbXBsZSBSZWdFeCBpcyAnW2Etel0rXEtcZCsnIGlmIHRoZSBwYXR0ZXJuIGlzICdk d2FkMTIzJw0KPiArICogdGhlbiBldmVuIHRob3VnaCB0aGUgZW50aXJlIHBhdHRlcm4gbWF0Y2hl cyBvbmx5ICcxMjMnDQo+ICsgKiBpcyByZXBvcnRlZCBhcyBhIG1hdGNoLg0KPiArICogQHNlZSBz dHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ICsgKi8NCj4gKw0K PiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfTkVXTElORV9DT05WRU5USU9OU19G DQo+ICgxVUxMIDw8IDgpDQo+ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vzbid0IHN1cHBvcnQgUENS RSBuZXdsaW5lIGNvbnZlbnRpb24uDQo+ICsgKiBOZXdsaW5lIGNvbnZlbnRpb25zIGFyZSByZXBy ZXNlbnRlZCBhcyBmb2xsb3dzOg0KPiArICogKCpDUikgICAgICAgIGNhcnJpYWdlIHJldHVybg0K PiArICogKCpMRikgICAgICAgIGxpbmVmZWVkDQo+ICsgKiAoKkNSTEYpICAgICAgY2FycmlhZ2Ug cmV0dXJuLCBmb2xsb3dlZCBieSBsaW5lZmVlZA0KPiArICogKCpBTllDUkxGKSAgIGFueSBvZiB0 aGUgdGhyZWUgYWJvdmUNCj4gKyAqICgqQU5ZKSAgICAgICBhbGwgVW5pY29kZSBuZXdsaW5lIHNl cXVlbmNlcw0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3Vw X2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBf TkVXTElORV9TRVFfRiAoMVVMTCA8PCA5KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lc24ndCBz dXBwb3J0IFBDUkUgbmV3bGluZSBzZXF1ZW5jZS4NCj4gKyAqIFRoZSBlc2NhcGUgc2VxdWVuY2Ug J1xSJyB3aWxsIG1hdGNoIGFueSBuZXdsaW5lIHNlcXVlbmNlLg0KPiArICogSXQgaXMgZXF1aXZh bGVudCB0bzogJyg/PlxyXG58XG58XHgwYnxcZnxccnxceDg1KScuDQo+ICsgKiBAc2VlIHN0cnVj dCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsj ZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF9QT1NTRVNTSVZFX1FVQUxJRklFUlNfRiAo MVVMTA0KPiA8PCAxMCkNCj4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JF IHBvc3Nlc3NpdmUgcXVhbGlmaWVycy4NCj4gKyAqIEV4YW1wbGUgUmVnRXggcG9zc2Vzc2l2ZSBx dWFsaWZpZXJzICcqKycsICcrKycsICc/KycsICd7bSxufSsnLg0KPiArICogUG9zc2Vzc2l2ZSBx dWFudGlmaWVyIHJlcGVhdHMgdGhlIHRva2VuIGFzIG1hbnkgdGltZXMgYXMgcG9zc2libGUgYW5k IGl0DQo+IGRvZXMNCj4gKyAqIG5vdCBnaXZlIHVwIG1hdGNoZXMgYXMgdGhlIGVuZ2luZSBiYWNr dHJhY2tzLiBXaXRoIGEgcG9zc2Vzc2l2ZQ0KPiBxdWFudGlmaWVyLA0KPiArICogdGhlIGRlYWwg aXMgYWxsIG9yIG5vdGhpbmcuDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86 OnBjcmVfdW5zdXBfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZf UENSRV9VTlNVUF9TVUJST1VUSU5FX1JFRkVSRU5DRVNfRg0KPiAoMVVMTCA8PCAxMSkNCj4gKy8q KjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIFN1YnJvdXRpbmUgcmVmZXJlbmNl cy4NCj4gKyAqIFBDUkUgU3Vicm91dGluZSByZWZlcmVuY2VzIGFsbG93IGZvciBzdWIgcGF0dGVy bnMgdG8gYmUgYXNzZXNzZWQNCj4gKyAqIGFzIHBhcnQgb2YgdGhlIFJlZ0V4LiBFeGFtcGxlIFJl Z0V4IGlzICcoZm9vfGZ1enopXGc8MT4rYmFyJyBtYXRjaGVzIHRoZQ0KPiArICogcGF0dGVybiAn Zm9vZm9vZnV6emZvb2Z1enpiYXInLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9p bmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhf REVWX1BDUkVfVU5TVVBfVVRGXzhfRiAoMVVMTCA8PCAxMikNCj4gKy8qKjwgUmVnRXggZGV2aWNl IGRvZXNuJ3Qgc3VwcG9ydCBVVEYtOCBjaGFyYWN0ZXIgZW5jb2RpbmcuDQo+ICsgKiBAc2VlIHN0 cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ ICsjZGVmaW5lIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF9VVEZfMTZfRiAoMVVMTCA8PCAxMykN Cj4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBVVEYtMTYgY2hhcmFjdGVyIGVu Y29kaW5nLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3Vw X2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBf VVRGXzMyX0YgKDFVTEwgPDwgMTQpDQo+ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vzbid0IHN1cHBv cnQgVVRGLTMyIGNoYXJhY3RlciBlbmNvZGluZy4NCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdl eF9kZXZfaW5mbzo6cGNyZV91bnN1cF9mbGFncw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRF X1JFR0VYX0RFVl9QQ1JFX1VOU1VQX1dPUkRfQk9VTkRBUllfRiAoMVVMTCA8PA0KPiAxNSkNCj4g Ky8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB3b3JkIGJvdW5kYXJpZXMuDQo+ICsg KiBUaGUgbWV0YSBjaGFyYWN0ZXIgJ1xiJyByZXByZXNlbnRzIHdvcmQgYm91bmRhcnkgYW5jaG9y Lg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdz DQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfREVWX1BDUkVfVU5TVVBfRk9SV0FS RF9SRUZFUkVOQ0VTX0YgKDFVTEwNCj4gPDwgMTYpDQo+ICsvKio8IFJlZ0V4IGRldmljZSBkb2Vz bid0IHN1cHBvcnQgRm9yd2FyZCByZWZlcmVuY2VzLg0KPiArICogRm9yd2FyZCByZWZlcmVuY2Vz IGFsbG93IHlvdSB0byB1c2UgYSBiYWNrIHJlZmVyZW5jZSB0byBhIGdyb3VwIHRoYXQNCj4gYXBw ZWFycw0KPiArICogbGF0ZXIgaW4gdGhlIFJlZ0V4LiBFeGFtcGxlIFJlZ0V4IGlzICcoXDNBQkN8 KERFRnwoR0hJKSkpKycgbWF0Y2hlcyB0aGUNCj4gKyAqIGZvbGxvd2luZyBzdHJpbmcgJ0dISUdI SUFCQ0RFRicuDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnBjcmVfdW5z dXBfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsvKiBFbnVtZXJhdGVzIFBDUkUgcnVsZSBmbGFncyAq Lw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX0FMTE9XX0VNUFRZX0YgKDFVTEwgPDwg MCkNCj4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgcGF0dGVybiB0aGF0IGNhbiBt YXRjaCBhZ2FpbnN0IGFuIGVtcHR5DQo+IHN0cmluZywNCj4gKyAqIHN1Y2ggYXMgJy4qJyBhcmUg YWxsb3dlZC4NCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFn cywgc3RydWN0DQo+IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiAr I2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX0FOQ0hPUkVEX0YgKDFVTEwgPDwgMSkNCj4gKy8q KjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgcGF0dGVybiBpcyBmb3JjZWQgdG8gYmUgImFu Y2hvcmVkIiwgdGhhdCBpcywgaXQNCj4gKyAqIGlzIGNvbnN0cmFpbmVkIHRvIG1hdGNoIG9ubHkg YXQgdGhlIGZpcnN0IG1hdGNoaW5nIHBvaW50IGluIHRoZSBzdHJpbmcgdGhhdA0KPiArICogaXMg YmVpbmcgc2VhcmNoZWQuIFNpbWlsYXIgdG8gJ14nIGFuZCByZXByZXNlbnRlZCBieSBcQS4NCj4g KyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncywgc3RydWN0DQo+ IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVf UkVHRVhfUENSRV9SVUxFX0NBU0VMRVNTX0YgKDFVTEwgPDwgMikNCj4gKy8qKjwgV2hlbiB0aGlz IGZsYWcgaXMgc2V0LCBsZXR0ZXJzIGluIHRoZSBwYXR0ZXJuIG1hdGNoIGJvdGggdXBwZXIgYW5k DQo+IGxvd2VyDQo+ICsgKiBjYXNlIGxldHRlcnMgaW4gdGhlIHN1YmplY3QuDQo+ICsgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiBydGVfcmVn ZXhfcnVsZTo6cnVsZV9mbGFncw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX1BD UkVfUlVMRV9ET1RBTExfRiAoMVVMTCA8PCAzKQ0KPiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBz ZXQsIGEgZG90IG1ldGFjaGFyYWN0ZXIgaW4gdGhlIHBhdHRlcm4gbWF0Y2hlcyBhbnkNCj4gKyAq IGNoYXJhY3RlciwgaW5jbHVkaW5nIG9uZSB0aGF0IGluZGljYXRlcyBhIG5ld2xpbmUuDQo+ICsg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiBy dGVfcmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JF R0VYX1BDUkVfUlVMRV9EVVBOQU1FU19GICgxVUxMIDw8IDQpDQo+ICsvKio8IFdoZW4gdGhpcyBm bGFnIGlzIHNldCwgbmFtZXMgdXNlZCB0byBpZGVudGlmeSBjYXB0dXJlIGdyb3VwcyBuZWVkIG5v dA0KPiBiZQ0KPiArICogdW5pcXVlLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9p bmZvOjpydWxlX2ZsYWdzLCBzdHJ1Y3QNCj4gcnRlX3JlZ2V4X3J1bGU6OnJ1bGVfZmxhZ3MNCj4g KyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfRVhURU5ERURfRiAoMVVM TCA8PCA1KQ0KPiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIG1vc3Qgd2hpdGUgc3BhY2Ug Y2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybiBhcmUNCj4gKyAqIHRvdGFsbHkgaWdub3JlZCBleGNl cHQgd2hlbiBlc2NhcGVkIG9yIGluc2lkZSBhIGNoYXJhY3RlciBjbGFzcy4NCj4gKyAqIEBzZWUg c3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncywgc3RydWN0DQo+IHJ0ZV9yZWdl eF9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENS RV9SVUxFX01BVENIX1VOU0VUX0JBQ0tSRUZfRiAoMVVMTCA8PCA2KQ0KPiArLyoqPCBXaGVuIHRo aXMgZmxhZyBpcyBzZXQsIGEgYmFja3JlZmVyZW5jZSB0byBhbiB1bnNldCBjYXB0dXJlIGdyb3Vw DQo+IG1hdGNoZXMgYW4NCj4gKyAqIGVtcHR5IHN0cmluZy4NCj4gKyAqIEBzZWUgUlRFX1JFR0VY X0RFVl9QQ1JFX1VOU1VQX0ZPUldBUkRfUkVGRVJFTkNFU19GDQo+ICsgKiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MsIHN0cnVjdA0KPiBydGVfcmVnZXhfcnVsZTo6 cnVsZV9mbGFncw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9N VUxUSUxJTkVfRiAoMVVMTCA8PCA3KQ0KPiArLyoqPCBXaGVuIHRoaXMgZmxhZyAgaXMgc2V0LCB0 aGUgJ14nIGFuZCAnJCcgY29uc3RydWN0cyBtYXRjaCBpbW1lZGlhdGVseQ0KPiArICogZm9sbG93 aW5nIG9yIGltbWVkaWF0ZWx5IGJlZm9yZSBpbnRlcm5hbCBuZXdsaW5lcyBpbiB0aGUgc3ViamVj dCBzdHJpbmcsDQo+ICsgKiByZXNwZWN0aXZlbHksIGFzIHdlbGwgYXMgYXQgdGhlIHZlcnkgc3Rh cnQgYW5kIGVuZC4NCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9m bGFncywgc3RydWN0DQo+IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0K PiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX05PX0FVVE9fQ0FQVFVSRV9GICgxVUxMIDw8 IDgpDQo+ICsvKio8IFdoZW4gdGhpcyBGbGFnIGlzIHNldCwgaXQgZGlzYWJsZXMgdGhlIHVzZSBv ZiBudW1iZXJlZCBjYXB0dXJpbmcNCj4gKyAqIHBhcmVudGhlc2VzIGluIHRoZSBwYXR0ZXJuLiBS ZWZlcmVuY2VzIHRvIGNhcHR1cmUgZ3JvdXBzDQo+IChiYWNrcmVmZXJlbmNlcyBvcg0KPiArICog cmVjdXJzaW9uL3N1YnJvdXRpbmUgY2FsbHMpIG1heSBvbmx5IHJlZmVyIHRvIG5hbWVkIGdyb3Vw cywgdGhvdWdoIHRoZQ0KPiArICogcmVmZXJlbmNlIGNhbiBiZSBieSBuYW1lIG9yIGJ5IG51bWJl ci4NCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncywgc3Ry dWN0DQo+IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmlu ZSBSVEVfUkVHRVhfUENSRV9SVUxFX1VDUF9GICgxVUxMIDw8IDkpDQo+ICsvKio8IEJ5IGRlZmF1 bHQsIG9ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcmVjb2duaXplZCwgV2hlbiB0aGlzIGZsYWcg aXMgc2V0LA0KPiArICogVW5pY29kZSBwcm9wZXJ0aWVzIGFyZSB1c2VkIGluc3RlYWQgdG8gY2xh c3NpZnkgY2hhcmFjdGVycy4NCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6 cnVsZV9mbGFncywgc3RydWN0DQo+IHJ0ZV9yZWdleF9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8N Cj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX1VOR1JFRURZX0YgKDFVTEwgPDwg MTApDQo+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgdGhlICJncmVlZGluZXNzIiBvZiB0 aGUgcXVhbnRpZmllcnMgaXMgaW52ZXJ0ZWQNCj4gKyAqIHNvIHRoYXQgdGhleSBhcmUgbm90IGdy ZWVkeSBieSBkZWZhdWx0LCBidXQgYmVjb21lIGdyZWVkeSBpZiBmb2xsb3dlZCBieQ0KPiArICog Jz8nLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpydWxlX2ZsYWdzLCBz dHJ1Y3QNCj4gcnRlX3JlZ2V4X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsjZGVm aW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfVVRGX0YgKDFVTEwgPDwgMTEpDQo+ICsvKio8IFdoZW4g dGhpcyBmbGFnIGlzIHNldCwgUmVnRXggZW5naW5lIGhhcyB0byByZWdhcmQgYm90aCB0aGUgcGF0 dGVybiBhbmQNCj4gdGhlDQo+ICsgKiBzdWJqZWN0IHN0cmluZ3MgdGhhdCBhcmUgc3Vic2VxdWVu dGx5IHByb2Nlc3NlZCBhcyBzdHJpbmdzIG9mIFVURg0KPiBjaGFyYWN0ZXJzDQo+ICsgKiBpbnN0 ZWFkIG9mIHNpbmdsZS1jb2RlLXVuaXQgc3RyaW5ncy4NCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9y ZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncywgc3RydWN0DQo+IHJ0ZV9yZWdleF9ydWxlOjpydWxl X2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX05FVkVS X0JBQ0tTTEFTSF9DX0YgKDFVTEwgPDwgMTIpDQo+ICsvKio8IFRoaXMgRmxhZyBsb2NrcyBvdXQg dGhlIHVzZSBvZiAnXEMnIGluIHRoZSBwYXR0ZXJuIHRoYXQgaXMgYmVpbmcgY29tcGlsZWQuDQo+ ICsgKiBUaGlzIGVzY2FwZSBtYXRjaGVzIG9uZSBkYXRhIHVuaXQsIGV2ZW4gaW4gVVRGIG1vZGUg d2hpY2ggY2FuIGNhdXNlDQo+ICsgKiB1bnByZWRpY3RhYmxlIGJlaGF2aW9yIGluIFVURi04IG9y IFVURi0xNiBtb2RlcywgYmVjYXVzZSBpdCBtYXkgbGVhdmUNCj4gdGhlDQo+ICsgKiBjdXJyZW50 IG1hdGNoaW5nIHBvaW50IGluIHRoZSBtaWRkbGUgb2YgYSBtdWx0aS1jb2RlLXVuaXQgY2hhcmFj dGVyLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjpydWxlX2ZsYWdzLCBz dHJ1Y3QNCj4gcnRlX3JlZ2V4X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsNCj4g Ky8qKg0KPiArICogUmVnRXggZGV2aWNlIGluZm9ybWF0aW9uDQo+ICsgKi8NCj4gK3N0cnVjdCBy dGVfcmVnZXhfZGV2X2luZm8gew0KPiArCWNvbnN0IGNoYXIgKmRyaXZlcl9uYW1lOyAvKio8IFJl Z0V4IGRyaXZlciBuYW1lICovDQo+ICsJc3RydWN0IHJ0ZV9kZXZpY2UgKmRldjsJLyoqPCBEZXZp Y2UgaW5mb3JtYXRpb24gKi8NCj4gKwl1aW50OF90IG1heF9tYXRjaGVzOw0KPiArCS8qKjwgTWF4 aW11bSBtYXRjaGVzIHBlciBzY2FuIHN1cHBvcnRlZCBieSB0aGlzIGRldmljZSAqLw0KPiArCXVp bnQxNl90IG1heF9xdWV1ZV9wYWlyczsNCj4gKwkvKio8IE1heGltdW0gcXVldWUgcGFpcnMgc3Vw cG9ydGVkIGJ5IHRoaXMgZGV2aWNlICovDQo+ICsJdWludDE2X3QgbWF4X3BheWxvYWRfc2l6ZTsN Cj4gKwkvKio8IE1heGltdW0gcGF5bG9hZCBzaXplIGZvciBhIHBhdHRlcm4gbWF0Y2ggcmVxdWVz dCBvciBzY2FuLg0KPiArCSAqIEBzZWUgUlRFX1JFR0VYX0RFVl9DRkdfQ1JPU1NfQlVGRkVSX1ND QU5fRg0KPiArCSAqLw0KPiArCXVpbnQxNl90IG1heF9ydWxlc19wZXJfZ3JvdXA7DQo+ICsJLyoq PCBNYXhpbXVtIHJ1bGVzIHN1cHBvcnRlZCBwZXIgZ3JvdXAgYnkgdGhpcyBkZXZpY2UgKi8NCj4g Kwl1aW50MTZfdCBtYXhfZ3JvdXBzOw0KPiArCS8qKjwgTWF4aW11bSBncm91cCBzdXBwb3J0ZWQg YnkgdGhpcyBkZXZpY2UgKi8NCj4gKwl1aW50MzJfdCByZWdleF9kZXZfY2FwYTsNCj4gKwkvKio8 IFJlZ0V4IGRldmljZSBjYXBhYmlsaXRpZXMuIEBzZWUgUlRFX1JFR0VYX0RFVl9DQVBBXyogKi8N Cj4gKwl1aW50NjRfdCBydWxlX2ZsYWdzOw0KPiArCS8qKjwgU3VwcG9ydGVkIGNvbXBpbGVyIHJ1 bGUgZmxhZ3MuDQo+ICsJICogQHNlZSBSVEVfUkVHRVhfUENSRV9SVUxFXyosIHN0cnVjdCBydGVf cmVnZXhfcnVsZTo6cnVsZV9mbGFncw0KPiArCSAqLw0KPiArCXVpbnQ2NF90IHBjcmVfdW5zdXBf ZmxhZ3M7DQo+ICsJLyoqPCBVbnN1cHBvcnRlZCBQQ1JFIGZlYXR1cmVzIGZvciB0aGlzIFJlZ0V4 IGRldmljZS4NCj4gKwkgKiBAc2VlIFJURV9SRUdFWF9ERVZfUENSRV9VTlNVUF8qDQo+ICsJICov DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIFJldHJpZXZlIHRoZSBjb250ZXh0dWFsIGluZm9y bWF0aW9uIG9mIGEgUmVnRXggZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4g KyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW1b b3V0XSBkZXZfaW5mbw0KPiArICogICBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdHlwZSAq cnRlX3JlZ2V4X2Rldl9pbmZvKiB0byBiZSBmaWxsZWQgd2l0aA0KPiB0aGUNCj4gKyAqICAgY29u dGV4dHVhbCBpbmZvcm1hdGlvbiBvZiB0aGUgZGV2aWNlLg0KPiArICoNCj4gKyAqIEByZXR1cm4N Cj4gKyAqICAgLSAwOiBTdWNjZXNzLCBkcml2ZXIgdXBkYXRlcyB0aGUgY29udGV4dHVhbCBpbmZv cm1hdGlvbiBvZiB0aGUgUmVnRXgNCj4gZGV2aWNlDQo+ICsgKiAgIC0gPDA6IEVycm9yIGNvZGUg cmV0dXJuZWQgYnkgdGhlIGRyaXZlciBpbmZvIGdldCBmdW5jdGlvbi4NCj4gKyAqDQo+ICsgKi8N Cj4gK2ludA0KPiArcnRlX3JlZ2V4X2Rldl9pbmZvX2dldCh1aW50OF90IGRldl9pZCwgc3RydWN0 IHJ0ZV9yZWdleF9kZXZfaW5mbw0KPiAqZGV2X2luZm8pOw0KPiArDQo+ICsvKiBFbnVtZXJhdGVz IFJlZ0V4IGRldmljZSBjb25maWd1cmF0aW9uIGZsYWdzICovDQo+ICsjZGVmaW5lIFJURV9SRUdF WF9ERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YgKDFVTEwgPDwgMCkNCj4gKy8qKjwgQ3Jvc3Mg YnVmZmVyIHNjYW4gcmVmZXJzIHRvIHRoZSBhYmlsaXR5IHRvIGJlIGFibGUgdG8gZGV0ZWN0DQo+ ICsgKiBtYXRjaGVzIHRoYXQgb2NjdXIgYWNyb3NzIGJ1ZmZlciBib3VuZGFyaWVzLCB3aGVyZSB0 aGUgYnVmZmVycyBhcmUNCj4gcmVsYXRlZA0KPiArICogdG8gZWFjaCBvdGhlciBpbiBzb21lIHdh eS4gRW5hYmxlIHRoaXMgZmxhZyB3aGVuIHRvIHNjYW4gcGF5bG9hZCBzaXplDQo+ICsgKiBncmVh dGVyIHN0cnVjdCBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjptYXhfcGF5bG9hZF9zaXplIGFu ZC9vcg0KPiArICogbWF0Y2hlcyBjYW4gcHJlc2VudCBhY3Jvc3Mgc2NhbiBidWZmZXIgYm91bmRh cmllcy4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfZGV2X2luZm86Om1heF9w YXlsb2FkX3NpemUNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfY29uZmlnOjpkZXZf Y2ZnX2ZsYWdzLA0KPiBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpDQo+ICsgKiBAc2VlIFJURV9S RUdFWF9PUFNfUlNQX1BNSV9TT0pfRg0KPiArICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlf RU9KX0YNCj4gKyAqLw0KPiArDQo+ICsvKiogUmVnRXggZGV2aWNlIGNvbmZpZ3VyYXRpb24gc3Ry dWN0dXJlICovDQo+ICtzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9jb25maWcgew0KPiArCXVpbnQ4X3Qg bmJfbWF4X21hdGNoZXM7DQo+ICsJLyoqPCBNYXhpbXVtIG1hdGNoZXMgcGVyIHNjYW4gY29uZmln dXJlZCBvbiB0aGlzIGRldmljZS4NCj4gKwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhl ICptYXhfbWF0Y2hlcyoNCj4gKwkgKiB3aGljaCBwcmV2aW91c2x5IHByb3ZpZGVkIGluIHJ0ZV9y ZWdleF9kZXZfaW5mb19nZXQoKS4NCj4gKwkgKiBUaGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3 aGljaCBjYXNlLCB2YWx1ZSAxIHVzZWQuDQo+ICsJICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rl dl9pbmZvOjptYXhfbWF0Y2hlcw0KPiArCSAqLw0KPiArCXVpbnQxNl90IG5iX3F1ZXVlX3BhaXJz Ow0KPiArCS8qKjwgTnVtYmVyIG9mIFJlZ0V4IHF1ZXVlIHBhaXJzIHRvIGNvbmZpZ3VyZSBvbiB0 aGlzIGRldmljZS4NCj4gKwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICptYXhfcXVl dWVfcGFpcnMqIHdoaWNoDQo+IHByZXZpb3VzbHkNCj4gKwkgKiBwcm92aWRlZCBpbiBydGVfcmVn ZXhfZGV2X2luZm9fZ2V0KCkuDQo+ICsJICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZv OjptYXhfcXVldWVfcGFpcnMNCj4gKwkgKi8NCj4gKwl1aW50MTZfdCBuYl9ydWxlc19wZXJfZ3Jv dXA7DQo+ICsJLyoqPCBOdW1iZXIgb2YgcnVsZXMgcGVyIGdyb3VwIHRvIGNvbmZpZ3VyZSBvbiB0 aGlzIGRldmljZS4NCj4gKwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICptYXhfcnVs ZXNfcGVyX2dyb3VwKg0KPiArCSAqIHdoaWNoIHByZXZpb3VzbHkgcHJvdmlkZWQgaW4gcnRlX3Jl Z2V4X2Rldl9pbmZvX2dldCgpLg0KPiArCSAqIFRoZSB2YWx1ZSAwIGlzIGFsbG93ZWQsIGluIHdo aWNoIGNhc2UsDQo+ICsJICogc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6bWF4X3J1bGVzX3Bl cl9ncm91cCB1c2VkLg0KPiArCSAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9kZXZfaW5mbzo6bWF4 X3J1bGVzX3Blcl9ncm91cA0KPiArCSAqLw0KPiArCXVpbnQxNl90IG5iX2dyb3VwczsNCj4gKwkv Kio8IE51bWJlciBvZiBncm91cHMgdG8gY29uZmlndXJlIG9uIHRoaXMgZGV2aWNlLg0KPiArCSAq IFRoaXMgdmFsdWUgY2Fubm90IGV4Y2VlZCB0aGUgKm1heF9ncm91cHMqDQo+ICsJICogd2hpY2gg cHJldmlvdXNseSBwcm92aWRlZCBpbiBydGVfcmVnZXhfZGV2X2luZm9fZ2V0KCkuDQo+ICsJICog QHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X2Rldl9pbmZvOjptYXhfZ3JvdXBzDQo+ICsJICovDQo+ICsJ Y29uc3QgY2hhciAqcnVsZV9kYjsNCj4gKwkvKio8IEltcG9ydCBpbml0aWFsIHNldCBvZiBwcmVi dWlsdCBydWxlIGRhdGFiYXNlIG9uIHRoaXMgZGV2aWNlLg0KPiArCSAqIFRoZSB2YWx1ZSBOVUxM IGlzIGFsbG93ZWQsIGluIHdoaWNoIGNhc2UsIHRoZSBkZXZpY2Ugd2lsbCBub3QNCj4gKwkgKiBi ZSBjb25maWd1cmVkIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UuIEFwcGxpY2F0aW9uIG1heSB1c2UN Cj4gKwkgKiBydGVfcmVnZXhfcnVsZV9kYl91cGRhdGUoKSBvciBydGVfcmVnZXhfcnVsZV9kYl9p bXBvcnQoKSBBUEkNCj4gKwkgKiB0byB1cGRhdGUgb3IgaW1wb3J0IHJ1bGUgZGF0YWJhc2UgYWZ0 ZXIgdGhlDQo+ICsJICogcnRlX3JlZ2V4X2Rldl9jb25maWd1cmUoKS4NCj4gKwkgKiBAc2VlIHJ0 ZV9yZWdleF9ydWxlX2RiX3VwZGF0ZSgpLCBydGVfcmVnZXhfcnVsZV9kYl9pbXBvcnQoKQ0KPiAr CSAqLw0KPiArCXVpbnQzMl90IHJ1bGVfZGJfbGVuOw0KPiArCS8qKjwgTGVuZ3RoIG9mICpydWxl X2RiKiBidWZmZXIuICovDQo+ICsJdWludDMyX3QgZGV2X2NmZ19mbGFnczsNCj4gKwkvKio8IFJl Z0V4IGRldmljZSBjb25maWd1cmF0aW9uIGZsYWdzLCBTZWUgUlRFX1JFR0VYX0RFVl9DRkdfKg0K PiAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBDb25maWd1cmUgYSBSZWdFeCBkZXZpY2Uu DQo+ICsgKg0KPiArICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGludm9rZWQgZmlyc3QgYmVmb3Jl IGFueSBvdGhlciBmdW5jdGlvbiBpbiB0aGUNCj4gKyAqIEFQSS4gVGhpcyBmdW5jdGlvbiBjYW4g YWxzbyBiZSByZS1pbnZva2VkIHdoZW4gYSBkZXZpY2UgaXMgaW4gdGhlDQo+ICsgKiBzdG9wcGVk IHN0YXRlLg0KPiArICoNCj4gKyAqIFRoZSBjYWxsZXIgbWF5IHVzZSBydGVfcmVnZXhfZGV2X2lu Zm9fZ2V0KCkgdG8gZ2V0IHRoZSBjYXBhYmlsaXR5IG9mIGVhY2gNCj4gKyAqIHJlc291cmNlcyBh dmFpbGFibGUgZm9yIHRoaXMgcmVnZXggZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZf aWQNCj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZSB0byBjb25maWd1cmUuDQo+ ICsgKiBAcGFyYW0gY2ZnDQo+ICsgKiAgIFRoZSBSZWdFeCBkZXZpY2UgY29uZmlndXJhdGlvbiBz dHJ1Y3R1cmUuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6IFN1Y2Nlc3MsIGRl dmljZSBjb25maWd1cmVkLg0KPiArICogICAtIDwwOiBFcnJvciBjb2RlIHJldHVybmVkIGJ5IHRo ZSBkcml2ZXIgY29uZmlndXJhdGlvbiBmdW5jdGlvbi4NCj4gKyAqLw0KPiAraW50DQo+ICtydGVf cmVnZXhfZGV2X2NvbmZpZ3VyZSh1aW50OF90IGRldl9pZCwgY29uc3Qgc3RydWN0DQo+IHJ0ZV9y ZWdleF9kZXZfY29uZmlnICpjZmcpOw0KPiArDQo+ICsvKiBFbnVtZXJhdGVzIFJlZ0V4IHF1ZXVl IHBhaXIgY29uZmlndXJhdGlvbiBmbGFncyAqLw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUVVFVUVf UEFJUl9DRkdfT09TX0YgKDFVTEwgPDwgMCkNCj4gKy8qKjwgT3V0IG9mIG9yZGVyIHNjYW4sIElm IG5vdCBzZXQsIGEgc2NhbiBtdXN0IHJldGlyZSBhZnRlciBwcmV2aW91c2x5IGlzc3VlZA0KPiAr ICogaW4tb3JkZXIgc2NhbnMgdG8gdGhpcyBxdWV1ZSBwYWlyLiBJZiBzZXQsIHRoaXMgc2NhbiBj YW4gYmUgcmV0aXJlZCBhcyBzb29uDQo+ICsgKiBhcyBkZXZpY2UgcmV0dXJucyBjb21wbGV0aW9u LiBBcHBsaWNhdGlvbiBzaG91bGQgbm90IHNldCBvdXQgb2Ygb3JkZXIgc2Nhbg0KPiArICogZmxh ZyBpZiBpdCBuZWVkcyB0byBtYWludGFpbiB0aGUgaW5ncmVzcyBvcmRlciBvZiBzY2FuIHJlcXVl c3QuDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X3FwX2NvbmY6OnFwX2NvbmZf ZmxhZ3MsDQo+IHJ0ZV9yZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gKyAqLw0KPiArDQo+ICtz dHJ1Y3QgcnRlX3JlZ2V4X29wczsNCj4gK3R5cGVkZWYgdm9pZCAoKnJlZ2V4ZGV2X3N0b3BfZmx1 c2hfdCkodWludDhfdCBkZXZfaWQsIHVpbnQxNl90IHFwX2lkLA0KPiArCQkJCSAgICAgIHN0cnVj dCBydGVfcmVnZXhfb3BzICpvcCk7DQo+ICsvKio8IENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBk dXJpbmcgcnRlX3JlZ2V4X2Rldl9zdG9wKCksIGludm9rZWQgb25jZQ0KPiBwZXINCj4gKyAqIGZs dXNoZWQgUmVnRXggb3AuDQo+ICsgKi8NCj4gKw0KPiArLyoqIFJlZ0V4IHF1ZXVlIHBhaXIgY29u ZmlndXJhdGlvbiBzdHJ1Y3R1cmUgKi8NCj4gK3N0cnVjdCBydGVfcmVnZXhfcXBfY29uZiB7DQo+ ICsJdWludDMyX3QgcXBfY29uZl9mbGFnczsNCj4gKwkvKio8IFF1ZXVlIHBhaXIgY29uZmlnIGZs YWdzLCBTZWUgUlRFX1JFR0VYX1FVRVVFX1BBSVJfQ0ZHXyoNCj4gKi8NCj4gKwl1aW50MTZfdCBu Yl9kZXNjOw0KPiArCS8qKjwgVGhlIG51bWJlciBvZiBkZXNjcmlwdG9ycyB0byBhbGxvY2F0ZSBm b3IgdGhpcyBxdWV1ZSBwYWlyLiAqLw0KPiArCXJlZ2V4ZGV2X3N0b3BfZmx1c2hfdCBjYjsNCj4g KwkvKio8IENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgcnRlX3JlZ2V4X2Rldl9zdG9w KCksIGludm9rZWQNCj4gKwkgKiBvbmNlIHBlciBmbHVzaGVkIHJlZ2V4IG9wLiBWYWx1ZSBOVUxM IGlzIGFsbG93ZWQsIGluIHdoaWNoIGNhc2UNCj4gKwkgKiBjYWxsYmFjayB3aWxsIG5vdCBiZSBp bnZva2VkLiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHByb3Blcmx5DQo+ICsJICogZGlz cG9zZSBvZiBvdXRzdGFuZGluZyByZWdleCBvcHMgZnJvbSByZXNwb25zZSBxdWV1ZSwNCj4gKwkg KiBmb3IgZXhhbXBsZSBvcHMgY29udGFpbmluZyBtZW1vcnkgcG9pbnRlcnMuDQo+ICsJICogQHNl ZSBydGVfcmVnZXhfZGV2X3N0b3AoKQ0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsg KiBBbGxvY2F0ZSBhbmQgc2V0IHVwIGEgUmVnRXggcXVldWUgcGFpciBmb3IgYSBSZWdFeCBkZXZp Y2UuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiArICogICBUaGUgaWRlbnRpZmllciBv ZiB0aGUgZGV2aWNlLg0KPiArICogQHBhcmFtIHF1ZXVlX3BhaXJfaWQNCj4gKyAqICAgVGhlIGlu ZGV4IG9mIHRoZSBSZWdFeCBxdWV1ZSBwYWlyIHRvIHNldHVwLiBUaGUgdmFsdWUgbXVzdCBiZSBp biB0aGUNCj4gcmFuZ2UNCj4gKyAqICAgWzAsIG5iX3F1ZXVlX3BhaXJzIC0gMV0gcHJldmlvdXNs eSBzdXBwbGllZCB0bw0KPiBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpLg0KPiArICogQHBhcmFt IHFwX2NvbmYNCj4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSB0 byBiZSB1c2VkIGZvciB0aGUgUmVnRXggcXVldWUNCj4gcGFpci4NCj4gKyAqICAgTlVMTCB2YWx1 ZSBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbgl1c2VkLg0K PiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNjZXNzLCBSZWdFeCBxdWV1ZSBw YWlyIGNvcnJlY3RseSBzZXQgdXAuDQo+ICsgKiAgIC0gPDA6IFJlZ0V4IHF1ZXVlIGNvbmZpZ3Vy YXRpb24gZmFpbGVkDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX3JlZ2V4X3F1ZXVlX3BhaXJfc2V0 dXAodWludDhfdCBkZXZfaWQsIHVpbnQ4X3QgcXVldWVfcGFpcl9pZCwNCj4gKwkJCSAgIGNvbnN0 IHN0cnVjdCBydGVfcmVnZXhfcXBfY29uZiAqcXBfY29uZik7DQo+ICsNCj4gKy8qKg0KPiArICog U3RhcnQgYSBSZWdFeCBkZXZpY2UuDQo+ICsgKg0KPiArICogVGhlIGRldmljZSBzdGFydCBzdGVw IGlzIHRoZSBsYXN0IG9uZSBhbmQgY29uc2lzdHMgb2Ygc2V0dGluZyB0aGUgUmVnRXgNCj4gKyAq IHF1ZXVlcyB0byBzdGFydCBhY2NlcHRpbmcgdGhlIHBhdHRlcm4gbWF0Y2hpbmcgc2NhbiByZXF1 ZXN0cy4NCj4gKyAqDQo+ICsgKiBPbiBzdWNjZXNzLCBhbGwgYmFzaWMgZnVuY3Rpb25zIGV4cG9y dGVkIGJ5IHRoZSBBUEkgKFJlZ0V4IGVucXVldWUsDQo+ICsgKiBSZWdFeCBkZXF1ZXVlIGFuZCBz byBvbikgY2FuIGJlIGludm9rZWQuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiArICog ICBSZWdFeCBkZXZpY2UgaWRlbnRpZmllcg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6IFN1 Y2Nlc3MsIGRldmljZSBzdGFydGVkLg0KPiArICogICAtIDwwOiBEZXZpY2Ugc3RhcnQgZmFpbGVk Lg0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9yZWdleF9kZXZfc3RhcnQodWludDhfdCBkZXZfaWQp Ow0KPiArDQo+ICsvKioNCj4gKyAqIFN0b3AgYSBSZWdFeCBkZXZpY2UuDQo+ICsgKg0KPiArICog U3RvcCBhIFJlZ0V4IGRldmljZS4gVGhlIGRldmljZSBjYW4gYmUgcmVzdGFydGVkIHdpdGggYSBj YWxsIHRvDQo+ICsgKiBydGVfcmVnZXhfZGV2X3N0YXJ0KCkuDQo+ICsgKg0KPiArICogVGhpcyBm dW5jdGlvbiBjYXVzZXMgYWxsIHF1ZXVlZCByZXNwb25zZSByZWdleCBvcHMgdG8gYmUgZHJhaW5l ZCBpbiB0aGUNCj4gKyAqIHJlc3BvbnNlIHF1ZXVlLiBXaGlsZSBkcmFpbmluZyBvcHMgb3V0IG9m IHRoZSBkZXZpY2UsDQo+ICsgKiBzdHJ1Y3QgcnRlX3JlZ2V4X3FwX2NvbmY6OmNiIHdpbGwgYmUg aW52b2tlZCBmb3IgZWFjaCBvcHMuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiArICog ICBSZWdFeCBkZXZpY2UgaWRlbnRpZmllci4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVf cmVnZXhfcXBfY29uZjo6Y2IsIHJ0ZV9yZWdleF9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gKyAqLw0K PiArdm9pZA0KPiArcnRlX3JlZ2V4X2Rldl9zdG9wKHVpbnQ4X3QgZGV2X2lkKTsNCj4gKw0KPiAr LyoqDQo+ICsgKiBDbG9zZSBhIFJlZ0V4IGRldmljZS4gVGhlIGRldmljZSBjYW5ub3QgYmUgcmVz dGFydGVkIQ0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gKyAqICAgUmVnRXggZGV2aWNl IGlkZW50aWZpZXINCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSAwIG9uIHN1Y2Nlc3Nm dWxseSBjbG9zZWQgdGhlIGRldmljZS4NCj4gKyAqICAtIDwwIG9uIGZhaWx1cmUgdG8gY2xvc2Ug dGhlIGRldmljZS4NCj4gKyAqLw0KPiAraW50DQo+ICtydGVfcmVnZXhfZGV2X2Nsb3NlKHVpbnQ4 X3QgZGV2X2lkKTsNCj4gKw0KPiArLyogRGV2aWNlIGdldC9zZXQgYXR0cmlidXRlcyAqLw0KPiAr DQo+ICsvKiogRW51bWVyYXRlcyBSZWdFeCBkZXZpY2UgYXR0cmlidXRlIGlkZW50aWZpZXIgKi8N Cj4gK2VudW0gcnRlX3JlZ2V4X2Rldl9hdHRyX2lkIHsNCj4gKwlSVEVfUkVHRVhfREVWX0FUVFJf U09DS0VUX0lELA0KPiArCS8qKjwgVGhlIE5VTUEgc29ja2V0IGlkIHRvIHdoaWNoIHRoZSBkZXZp Y2UgaXMgY29ubmVjdGVkIG9yDQo+ICsJICogYSBkZWZhdWx0IG9mIHplcm8gaWYgdGhlIHNvY2tl dCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4NCj4gKwkgKiBkYXRhdHlwZTogKmludCoNCj4gKwkg KiBvcGVyYXRpb246ICpnZXQqDQo+ICsJICovDQo+ICsJUlRFX1JFR0VYX0RFVl9BVFRSX01BWF9N QVRDSEVTLA0KPiArCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgbWF0Y2hlcyBwZXIgc2Nhbi4NCj4g KwkgKiBkYXRhdHlwZTogKnVpbnQ4X3QqDQo+ICsJICogb3BlcmF0aW9uOiAqZ2V0KiBhbmQgKnNl dCoNCj4gKwkgKg0KPiArCSAqIEBzZWUgUlRFX1JFR0VYX09QU19SU1BfTUFYX01BVENIX0YNCj4g KwkgKi8NCj4gKwlSVEVfUkVHRVhfREVWX0FUVFJfTUFYX1NDQU5fVElNRU9VVCwNCj4gKwkvKio8 IFVwcGVyIGJvdW5kIHNjYW4gdGltZSBpbiBucy4NCj4gKwkgKiBkYXRhdHlwZTogKnVpbnQxNl90 Kg0KPiArCSAqIG9wZXJhdGlvbjogKmdldCogYW5kICpzZXQqDQo+ICsJICoNCj4gKwkgKiBAc2Vl IFJURV9SRUdFWF9PUFNfUlNQX01BWF9TQ0FOX1RJTUVPVVRfRg0KPiArCSAqLw0KPiArCVJURV9S RUdFWF9ERVZfQVRUUl9NQVhfUFJFRklYLA0KPiArCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgcHJl Zml4IGRldGVjdGVkIHBlciBzY2FuLg0KPiArCSAqIFRoaXMgd291bGQgYmUgdXNlZnVsIGZvciBk ZW5pYWwgb2Ygc2VydmljZSBkZXRlY3Rpb24uDQo+ICsJICogZGF0YXR5cGU6ICp1aW50MTZfdCoN Cj4gKwkgKiBvcGVyYXRpb246ICpnZXQqIGFuZCAqc2V0Kg0KPiArCSAqDQo+ICsJICogQHNlZSBS VEVfUkVHRVhfT1BTX1JTUF9NQVhfUFJFRklYX0YNCj4gKwkgKi8NCj4gK307DQo+ICsNCj4gKy8q Kg0KPiArICogR2V0IGFuIGF0dHJpYnV0ZSBmcm9tIGEgUmVnRXggZGV2aWNlLg0KPiArICoNCj4g KyAqIEBwYXJhbSBkZXZfaWQgUmVnRXggZGV2aWNlIGlkZW50aWZpZXINCj4gKyAqIEBwYXJhbSBh dHRyX2lkIFRoZSBhdHRyaWJ1dGUgSUQgdG8gcmV0cmlldmUNCj4gKyAqIEBwYXJhbVtvdXRdIGF0 dHJfdmFsdWUgQSBwb2ludGVyIHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgYXR0cmli dXRlDQo+ICsgKiAgICAgICAgICAgICB2YWx1ZSBpZiBzdWNjZXNzZnVsLg0KPiArICoNCj4gKyAq IEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIGF0dHJpYnV0ZSB2 YWx1ZS4NCj4gKyAqICAgLSAtRUlOVkFMOiBJbnZhbGlkIGRldmljZSBvciAgKmF0dHJfaWQqIHBy b3ZpZGVkLCBvciAqYXR0cl92YWx1ZSogaXMgTlVMTC4NCj4gKyAqICAgLSAtRU5PVFNVUDogaWYg dGhlIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgc3BlY2lmaWMgKmF0dHJfaWQqLg0KPiArICovDQo+ ICtpbnQNCj4gK3J0ZV9yZWdleF9kZXZfYXR0cl9nZXQodWludDhfdCBkZXZfaWQsIGVudW0gcnRl X3JlZ2V4X2Rldl9hdHRyX2lkDQo+IGF0dHJfaWQsDQo+ICsJCSAgICAgICB2b2lkICphdHRyX3Zh bHVlKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBTZXQgYW4gYXR0cmlidXRlIHRvIGEgUmVnRXggZGV2 aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIN Cj4gKyAqIEBwYXJhbSBhdHRyX2lkIFRoZSBhdHRyaWJ1dGUgSUQgdG8gcmV0cmlldmUNCj4gKyAq IEBwYXJhbSBhdHRyX3ZhbHVlIEEgcG9pbnRlciB0aGF0IHdpbGwgYmUgZmlsbGVkIGluIHdpdGgg dGhlIGF0dHJpYnV0ZSB2YWx1ZQ0KPiArICogICAgICAgICAgICAgICAgICAgYnkgdGhlIGFwcGxp Y2F0aW9uDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6IFN1Y2Nlc3NmdWxseSBh cHBsaWVkIHRoZSBhdHRyaWJ1dGUgdmFsdWUuDQo+ICsgKiAgIC0gLUVJTlZBTDogSW52YWxpZCBk ZXZpY2Ugb3IgICphdHRyX2lkKiBwcm92aWRlZCwgb3IgKmF0dHJfdmFsdWUqIGlzIE5VTEwuDQo+ ICsgKiAgIC0gLUVOT1RTVVA6IGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHNwZWNpZmlj ICphdHRyX2lkKi4NCj4gKyAqLw0KPiAraW50DQo+ICtydGVfcmVnZXhfZGV2X2F0dHJfc2V0KHVp bnQ4X3QgZGV2X2lkLCBlbnVtIHJ0ZV9yZWdleF9kZXZfYXR0cl9pZA0KPiBhdHRyX2lkLA0KPiAr CQkgICAgICAgY29uc3Qgdm9pZCAqYXR0cl92YWx1ZSk7DQo+ICsNCj4gKy8qIFJ1bGUgcmVsYXRl ZCBBUElzICovDQo+ICsvKiogRW51bWVyYXRlcyBSZWdFeCBydWxlIG9wZXJhdGlvbiAqLw0KPiAr ZW51bSBydGVfcmVnZXhfcnVsZV9vcCB7DQo+ICsJUlRFX1JFR0VYX1JVTEVfT1BfQURELA0KPiAr CS8qKjwgQWRkIFJlZ0V4IHJ1bGUgdG8gcnVsZSBkYXRhYmFzZSAqLw0KPiArCVJURV9SRUdFWF9S VUxFX09QX1JFTU9WRQ0KPiArCS8qKjwgUmVtb3ZlIFJlZ0V4IHJ1bGUgZnJvbSBydWxlIGRhdGFi YXNlICovDQo+ICt9Ow0KPiArDQo+ICsvKiogU3RydWN0dXJlIHRvIGhvbGQgYSBSZWdFeCBydWxl IGF0dHJpYnV0ZXMgKi8NCj4gK3N0cnVjdCBydGVfcmVnZXhfcnVsZSB7DQo+ICsJZW51bSBydGVf cmVnZXhfcnVsZV9vcCBvcDsNCj4gKwkvKio8IE9QIHR5cGUgb2YgdGhlIHJ1bGUgZWl0aGVyIGEg T1BfQUREIG9yIE9QX0RFTEVURSAqLw0KPiArCXVpbnQxNl90IGdyb3VwX2lkOw0KPiArCS8qKjwg R3JvdXAgaWRlbnRpZmllciB0byB3aGljaCB0aGUgcnVsZSBiZWxvbmdzIHRvLiAqLw0KPiArCXVp bnQzMl90IHJ1bGVfaWQ7DQo+ICsJLyoqPCBSdWxlIGlkZW50aWZpZXIgd2hpY2ggaXMgcmV0dXJu ZWQgb24gc3VjY2Vzc2Z1bCBtYXRjaC4gKi8NCj4gKwljb25zdCBjaGFyICpwY3JlX3J1bGU7DQo+ ICsJLyoqPCBCdWZmZXIgdG8gaG9sZCB0aGUgUENSRSBydWxlLiAqLw0KPiArCXVpbnQxNl90IHBj cmVfcnVsZV9sZW47DQo+ICsJLyoqPCBMZW5ndGggb2YgdGhlIFBDUkUgcnVsZSovDQo+ICsJdWlu dDY0X3QgcnVsZV9mbGFnczsNCj4gKwkvKiBQQ1JFIHJ1bGUgZmxhZ3MuIFN1cHBvcnRlZCBkZXZp Y2Ugc3BlY2lmaWMgUENSRSBydWxlcyBlbnVtZXJhdGVkDQo+ICsJICogaW4gc3RydWN0IHJ0ZV9y ZWdleF9kZXZfaW5mbzo6cnVsZV9mbGFncy4gRm9yIHN1Y2Nlc3NmdWwgcnVsZQ0KPiArCSAqIGRh dGFiYXNlIHVwZGF0ZSwgYXBwbGljYXRpb24gbmVlZHMgdG8gcHJvdmlkZSBvbmx5IHN1cHBvcnRl ZA0KPiArCSAqIHJ1bGUgZmxhZ3MuDQo+ICsJICogQFNlZSBSVEVfUkVHRVhfUENSRV9SVUxFXyos IHN0cnVjdA0KPiBydGVfcmVnZXhfZGV2X2luZm86OnJ1bGVfZmxhZ3MNCj4gKwkgKi8NCj4gK307 DQo+ICsNCj4gKy8qKg0KPiArICogVXBkYXRlIHRoZSBydWxlIGRhdGFiYXNlIG9mIGEgUmVnRXgg ZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQgUmVnRXggZGV2aWNlIGlkZW50aWZp ZXINCj4gKyAqIEBwYXJhbSBydWxlcw0KPiArICogICBQb2ludHMgdG8gYW4gYXJyYXkgb2YgKm5i X3J1bGVzKiBvYmplY3RzIG9mIHR5cGUgKnJ0ZV9yZWdleF9ydWxlKg0KPiBzdHJ1Y3R1cmUNCj4g KyAqICAgd2hpY2ggY29udGFpbiB0aGUgcmVnZXggcnVsZXMgYXR0cmlidXRlcyB0byBiZSB1cGRh dGVkIGluIHJ1bGUgZGF0YWJhc2UuDQo+ICsgKiBAcGFyYW0gbmJfcnVsZXMNCj4gKyAqICAgVGhl IG51bWJlciBvZiBQQ1JFIHJ1bGVzIHRvIHVwZGF0ZSB0aGUgcnVsZSBkYXRhYmFzZS4NCj4gKyAq DQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBudW1iZXIgb2YgcmVnZXggcnVsZXMgYWN0dWFs bHkgdXBkYXRlZCBvbiB0aGUgcmVnZXggZGV2aWNlJ3MgcnVsZQ0KPiArICogICBkYXRhYmFzZS4g VGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiB0aGUgKm5iX3J1 bGVzKg0KPiArICogICBwYXJhbWV0ZXIgd2hlbiB0aGUgcmVnZXggZGV2aWNlcyBmYWlscyB0byB1 cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2Ugb3INCj4gKyAqICAgaWYgaW52YWxpZCBwYXJhbWV0ZXJz IGFyZSBzcGVjaWZpZWQgaW4gYSAqcnRlX3JlZ2V4X3J1bGUqLg0KPiArICogICBJZiB0aGUgcmV0 dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiAqbmJfcnVsZXMqLCB0aGUgcmVtYWluaW5nIFBDUkUgcnVs ZXMNCj4gKyAqICAgYXQgdGhlIGVuZCBvZiAqcnVsZXMqIGFyZSBub3QgY29uc3VtZWQgYW5kIHRo ZSBjYWxsZXIgaGFzIHRvIHRha2UNCj4gKyAqICAgY2FyZSBvZiB0aGVtIGFuZCBydGVfZXJybm8g aXMgc2V0IGFjY29yZGluZ2x5Lg0KPiArICogICBQb3NzaWJsZSBlcnJubyB2YWx1ZXMgaW5jbHVk ZToNCj4gKyAqICAgLSAtRUlOVkFMOiAgSW52YWxpZCBkZXZpY2UgSUQgb3IgcnVsZXMgaXMgTlVM TA0KPiArICogICAtIC1FTk9UU1VQOiBUaGUgbGFzdCBwcm9jZXNzZWQgcnVsZSBpcyBub3Qgc3Vw cG9ydGVkIG9uIHRoaXMgZGV2aWNlLg0KPiArICogICAtIC1FTk9TUEM6IE5vIHNwYWNlIGF2YWls YWJsZSBpbiBydWxlIGRhdGFiYXNlLg0KPiArICoNCj4gKyAqIEBzZWUgcnRlX3JlZ2V4X3J1bGVf ZGJfaW1wb3J0KCksIHJ0ZV9yZWdleF9ydWxlX2RiX2V4cG9ydCgpDQo+ICsgKi8NCj4gK3VpbnQx Nl90DQo+ICtydGVfcmVnZXhfcnVsZV9kYl91cGRhdGUodWludDhfdCBkZXZfaWQsIGNvbnN0IHN0 cnVjdCBydGVfcmVnZXhfcnVsZQ0KPiAqcnVsZXMsDQo+ICsJCQkgdWludDE2X3QgbmJfcnVsZXMp Ow0KPiArDQo+ICsvKioNCj4gKyAqIEltcG9ydCBhIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UgZnJv bSBhIGJ1ZmZlciB0byBhIFJlZ0V4IGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lk IFJlZ0V4IGRldmljZSBpZGVudGlmaWVyDQo+ICsgKiBAcGFyYW0gcnVsZV9kYg0KPiArICogICBQ b2ludHMgdG8gcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4NCj4gKyAqIEBwYXJhbSBydWxlX2RiX2xl bg0KPiArICogICBMZW5ndGggb2YgdGhlIHJ1bGUgZGF0YWJhc2UuDQo+ICsgKg0KPiArICogQHJl dHVybg0KPiArICogICAtIDA6IFN1Y2Nlc3NmdWxseSB1cGRhdGVkIHRoZSBwcmVidWlsdCBydWxl IGRhdGFiYXNlLg0KPiArICogICAtIC1FSU5WQUw6ICBJbnZhbGlkIGRldmljZSBJRCBvciBydWxl X2RiIGlzIE5VTEwNCj4gKyAqICAgLSAtRU5PVFNVUDogUnVsZSBkYXRhYmFzZSBpbXBvcnQgaXMg bm90IHN1cHBvcnRlZCBvbiB0aGlzIGRldmljZS4NCj4gKyAqICAgLSAtRU5PU1BDOiBObyBzcGFj ZSBhdmFpbGFibGUgaW4gcnVsZSBkYXRhYmFzZS4NCj4gKyAqDQo+ICsgKiBAc2VlIHJ0ZV9yZWdl eF9ydWxlX2RiX3VwZGF0ZSgpLCBydGVfcmVnZXhfcnVsZV9kYl9leHBvcnQoKQ0KPiArICovDQo+ ICtpbnQNCj4gK3J0ZV9yZWdleF9ydWxlX2RiX2ltcG9ydCh1aW50OF90IGRldl9pZCwgY29uc3Qg Y2hhciAqcnVsZV9kYiwNCj4gKwkJCSB1aW50MzJfdCBydWxlX2RiX2xlbik7DQo+ICsNCj4gKy8q Kg0KPiArICogRXhwb3J0IHRoZSBwcmVidWlsdCBydWxlIGRhdGFiYXNlIGZyb20gYSBSZWdFeCBk ZXZpY2UgdG8gdGhlIGJ1ZmZlci4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkIFJlZ0V4IGRl dmljZSBpZGVudGlmaWVyDQo+ICsgKiBAcGFyYW1bb3V0XSBydWxlX2RiDQo+ICsgKiAgIEJsb2Nr IG9mIG1lbW9yeSB0byBpbnNlcnQgdGhlIHJ1bGUgZGF0YWJhc2UuIE11c3QgYmUgYXQgbGVhc3Qg c2l6ZSBpbg0KPiArICogICBjYXBhY2l0eS4gSWYgc2V0IHRvIE5VTEwsIGZ1bmN0aW9uIHJldHVy bnMgcmVxdWlyZWQgY2FwYWNpdHkuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6 IFN1Y2Nlc3NmdWxseSBleHBvcnRlZCB0aGUgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4NCj4gKyAq ICAgLSBzaXplOiBJZiBydWxlX2RiIHNldCB0byBOVUxMIHRoZW4gcmVxdWlyZWQgY2FwYWNpdHkg Zm9yICpydWxlX2RiKg0KPiArICogICAtIC1FSU5WQUw6ICBJbnZhbGlkIGRldmljZSBJRA0KPiAr ICogICAtIC1FTk9UU1VQOiBSdWxlIGRhdGFiYXNlIGV4cG9ydCBpcyBub3Qgc3VwcG9ydGVkIG9u IHRoaXMgZGV2aWNlLg0KPiArICoNCj4gKyAqIEBzZWUgcnRlX3JlZ2V4X3J1bGVfZGJfdXBkYXRl KCksIHJ0ZV9yZWdleF9ydWxlX2RiX2ltcG9ydCgpDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX3Jl Z2V4X3J1bGVfZGJfZXhwb3J0KHVpbnQ4X3QgZGV2X2lkLCBjaGFyICpydWxlX2RiKTsNCj4gKw0K PiArLyogRXh0ZW5kZWQgc3RhdGlzdGljcyAqLw0KPiArLyoqIE1heGltdW0gbmFtZSBsZW5ndGgg Zm9yIGV4dGVuZGVkIHN0YXRpc3RpY3MgY291bnRlcnMgKi8NCj4gKyNkZWZpbmUgUlRFX1JFR0VY X0RFVl9YU1RBVFNfTkFNRV9TSVpFIDY0DQo+ICsNCj4gKy8qKg0KPiArICogQSBuYW1lLWtleSBs b29rdXAgZWxlbWVudCBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcy4NCj4gKyAqDQo+ICsgKiBUaGlz IHN0cnVjdHVyZSBpcyB1c2VkIHRvIG1hcCBiZXR3ZWVuIG5hbWVzIGFuZCBJRCBudW1iZXJzDQo+ ICsgKiBmb3IgZXh0ZW5kZWQgUmVnRXggZGV2aWNlIHN0YXRpc3RpY3MuDQo+ICsgKi8NCj4gK3N0 cnVjdCBydGVfcmVnZXhfZGV2X3hzdGF0c19tYXAgew0KPiArCXVpbnQxNl90IGlkOw0KPiArCS8q KjwgeHN0YXQgaWRlbnRpZmllciAqLw0KPiArCWNoYXIgbmFtZVtSVEVfUkVHRVhfREVWX1hTVEFU U19OQU1FX1NJWkVdOw0KPiArCS8qKjwgeHN0YXQgbmFtZSAqLw0KPiArfTsNCj4gKw0KPiArLyoq DQo+ICsgKiBSZXRyaWV2ZSBuYW1lcyBvZiBleHRlbmRlZCBzdGF0aXN0aWNzIG9mIGEgcmVnZXgg ZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gKyAqICAgVGhlIGlkZW50aWZp ZXIgb2YgdGhlIHJlZ2V4IGRldmljZS4NCj4gKyAqIEBwYXJhbVtvdXRdIHhzdGF0c19tYXANCj4g KyAqICAgQmxvY2sgb2YgbWVtb3J5IHRvIGluc2VydCBpZCBhbmQgbmFtZXMgaW50by4gTXVzdCBi ZSBhdCBsZWFzdCBzaXplIGluDQo+ICsgKiAgIGNhcGFjaXR5LiBJZiBzZXQgdG8gTlVMTCwgZnVu Y3Rpb24gcmV0dXJucyByZXF1aXJlZCBjYXBhY2l0eS4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAg LSBwb3NpdGl2ZSB2YWx1ZSBvbiBzdWNjZXNzOg0KPiArICogICAgICAgIC1UaGUgcmV0dXJuIHZh bHVlIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBmaWxsZWQgaW4gdGhlIHN0YXRzIG1hcC4NCj4g KyAqICAgICAgICAtSWYgeHN0YXRzX21hcCBzZXQgdG8gTlVMTCB0aGVuIHJlcXVpcmVkIGNhcGFj aXR5IGZvciB4c3RhdHNfbWFwLg0KPiArICogICAtIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yOg0K PiArICogICAgICAtRU5PREVWIGZvciBpbnZhbGlkICpkZXZfaWQqDQo+ICsgKiAgICAgIC1FTk9U U1VQIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24uDQo+ICsgKi8N Cj4gK2ludA0KPiArcnRlX3JlZ2V4X2Rldl94c3RhdHNfbmFtZXNfZ2V0KHVpbnQ4X3QgZGV2X2lk LA0KPiArCQkJICAgICAgIHN0cnVjdCBydGVfcmVnZXhfZGV2X3hzdGF0c19tYXAgKnhzdGF0c19t YXApOw0KPiArDQo+ICsvKioNCj4gKyAqIFJldHJpZXZlIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2Yg YW4gcmVnZXggZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gKyAqICAgVGhl IGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gKyAqIEBwYXJhbSBpZHMNCj4gKyAqICAgVGhl IGlkIG51bWJlcnMgb2YgdGhlIHN0YXRzIHRvIGdldC4gVGhlIGlkcyBjYW4gYmUgZ290IGZyb20g dGhlIHN0YXQNCj4gKyAqICAgcG9zaXRpb24gaW4gdGhlIHN0YXQgbGlzdCBmcm9tIHJ0ZV9yZWdl eF9kZXZfeHN0YXRzX25hbWVzX2dldCgpLCBvcg0KPiArICogICBieSB1c2luZyBydGVfcmVnZXhf ZGV2X3hzdGF0c19ieV9uYW1lX2dldCgpLg0KPiArICogQHBhcmFtW291dF0gdmFsdWVzDQo+ICsg KiAgIFRoZSB2YWx1ZXMgZm9yIGVhY2ggc3RhdHMgcmVxdWVzdCBieSBJRC4NCj4gKyAqIEBwYXJh bSBuDQo+ICsgKiAgIFRoZSBudW1iZXIgb2Ygc3RhdHMgcmVxdWVzdGVkDQo+ICsgKiBAcmV0dXJu DQo+ICsgKiAgIC0gcG9zaXRpdmUgdmFsdWU6IG51bWJlciBvZiBzdGF0IGVudHJpZXMgZmlsbGVk IGludG8gdGhlIHZhbHVlcyBhcnJheQ0KPiArICogICAtIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9y Og0KPiArICogICAgICAtRU5PREVWIGZvciBpbnZhbGlkICpkZXZfaWQqDQo+ICsgKiAgICAgIC1F Tk9UU1VQIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24uDQo+ICsg Ki8NCj4gK2ludA0KPiArcnRlX3JlZ2V4X2Rldl94c3RhdHNfZ2V0KHVpbnQ4X3QgZGV2X2lkLCBj b25zdCB1aW50MTZfdCBpZHNbXSwNCj4gKwkJCSB1aW50NjRfdCB2YWx1ZXNbXSwgdWludDE2X3Qg bik7DQo+ICsNCj4gKy8qKg0KPiArICogUmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHN0 YXQgYnkgcmVxdWVzdGluZyBpdCBieSBuYW1lLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQN Cj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZQ0KPiArICogQHBhcmFtIG5hbWUN Cj4gKyAqICAgVGhlIHN0YXQgbmFtZSB0byByZXRyaWV2ZQ0KPiArICogQHBhcmFtW291dF0gaWQN Cj4gKyAqICAgSWYgbm9uLU5VTEwsIHRoZSBudW1lcmljYWwgaWQgb2YgdGhlIHN0YXQgd2lsbCBi ZSByZXR1cm5lZCwgc28gdGhhdCBmdXJ0aGVyDQo+ICsgKiAgIHJlcXVlc3RzIGZvciB0aGUgc3Rh dCBjYW4gYmUgZ290IHVzaW5nIHJ0ZV9yZWdleF9kZXZfeHN0YXRzX2dldCwgd2hpY2gNCj4gd2ls bA0KPiArICogICBiZSBmYXN0ZXIgYXMgaXQgZG9lc24ndCBuZWVkIHRvIHNjYW4gYSBsaXN0IG9m IG5hbWVzIGZvciB0aGUgc3RhdC4NCj4gKyAqIEBwYXJhbVtvdXRdIHZhbHVlDQo+ICsgKiAgIE11 c3QgYmUgbm9uLU5VTEwsIHJldHJpZXZlZCB4c3RhdCB2YWx1ZSB3aWxsIGJlIHN0b3JlZCBpbiB0 aGlzIGFkZHJlc3MuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6IFN1Y2Nlc3Nm dWxseSByZXRyaWV2ZWQgeHN0YXQgdmFsdWUuDQo+ICsgKiAgIC0gLUVJTlZBTDogaW52YWxpZCBw YXJhbWV0ZXJzDQo+ICsgKiAgIC0gLUVOT1RTVVA6IGlmIG5vdCBzdXBwb3J0ZWQuDQo+ICsgKi8N Cj4gK2ludA0KPiArcnRlX3JlZ2V4X2Rldl94c3RhdHNfYnlfbmFtZV9nZXQodWludDhfdCBkZXZf aWQsIGNvbnN0IGNoYXIgKm5hbWUsDQo+ICsJCQkJIHVpbnQxNl90ICppZCwgdWludDY0X3QgKnZh bHVlKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBSZXNldCB0aGUgdmFsdWVzIG9mIHRoZSB4c3RhdHMg b2YgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBpbiB0aGUgZGV2aWNlLg0KPiArICoNCj4gKyAqIEBw YXJhbSBkZXZfaWQNCj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZQ0KPiArICog QHBhcmFtIGlkcw0KPiArICogICBTZWxlY3RzIHNwZWNpZmljIHN0YXRpc3RpY3MgdG8gYmUgcmVz ZXQuIFdoZW4gTlVMTCwgYWxsIHN0YXRpc3RpY3Mgd2lsbCBiZQ0KPiArICogICByZXNldC4gSWYg bm9uLU5VTEwsIG11c3QgcG9pbnQgdG8gYXJyYXkgb2YgYXQgbGVhc3QgKm5iX2lkcyogc2l6ZS4N Cj4gKyAqIEBwYXJhbSBuYl9pZHMNCj4gKyAqICAgVGhlIG51bWJlciBvZiBpZHMgYXZhaWxhYmxl IGZyb20gdGhlICppZHMqIGFycmF5LiBJZ25vcmVkIHdoZW4gaWRzIGlzDQo+IE5VTEwuDQo+ICsg KiBAcmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzc2Z1bGx5IHJlc2V0IHRoZSBzdGF0aXN0aWNz IHRvIHplcm8uDQo+ICsgKiAgIC0gLUVJTlZBTDogaW52YWxpZCBwYXJhbWV0ZXJzDQo+ICsgKiAg IC0gLUVOT1RTVVA6IGlmIG5vdCBzdXBwb3J0ZWQuDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX3Jl Z2V4X2Rldl94c3RhdHNfcmVzZXQodWludDhfdCBkZXZfaWQsIGNvbnN0IHVpbnQxNl90IGlkc1td LA0KPiArCQkJICAgdWludDE2X3QgbmJfaWRzKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBUcmlnZ2Vy IHRoZSBSZWdFeCBkZXZpY2Ugc2VsZiB0ZXN0Lg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQN Cj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZQ0KPiArICogQHJldHVybg0KPiAr ICogICAtIDA6IFNlbGZ0ZXN0IHN1Y2Nlc3NmdWwNCj4gKyAqICAgLSAtRU5PVFNVUCBpZiB0aGUg ZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBzZWxmdGVzdA0KPiArICogICAtIG90aGVyIHZhbHVlcyA8 IDAgb24gZmFpbHVyZS4NCj4gKyAqLw0KPiAraW50IHJ0ZV9yZWdleF9kZXZfc2VsZnRlc3QodWlu dDhfdCBkZXZfaWQpOw0KPiArDQo+ICsvKioNCj4gKyAqIER1bXAgaW50ZXJuYWwgaW5mb3JtYXRp b24gYWJvdXQgKmRldl9pZCogdG8gdGhlIEZJTEUqIHByb3ZpZGVkIGluICpmKi4NCj4gKyAqDQo+ ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2Uu DQo+ICsgKg0KPiArICogQHBhcmFtIGYNCj4gKyAqICAgQSBwb2ludGVyIHRvIGEgZmlsZSBmb3Ig b3V0cHV0DQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6IG9uIHN1Y2Nlc3MNCj4g KyAqICAgLSA8MDogb24gZmFpbHVyZS4NCj4gKyAqLw0KPiAraW50DQo+ICtydGVfcmVnZXhfZGV2 X2R1bXAodWludDhfdCBkZXZfaWQsIEZJTEUgKmYpOw0KPiArDQo+ICsvKiBGYXN0IHBhdGggQVBJ cyAqLw0KPiArDQo+ICsvKioNCj4gKyAqIFRoZSBnZW5lcmljICpydGVfcmVnZXhfbWF0Y2gqIHN0 cnVjdHVyZSB0byBob2xkIHRoZSBSZWdFeCBtYXRjaA0KPiBhdHRyaWJ1dGVzLg0KPiArICogQHNl ZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bWF0Y2hlcw0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX3Jl Z2V4X21hdGNoIHsNCj4gKwlSVEVfU1REX0MxMQ0KPiArCXVuaW9uIHsNCj4gKwkJdWludDY0X3Qg dTY0Ow0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMyX3QgcnVsZV9pZDoyMDsNCj4gKwkJCS8q KjwgUnVsZSBpZGVudGlmaWVyIHRvIHdoaWNoIHRoZSBwYXR0ZXJuIG1hdGNoZWQuDQo+ICsJCQkg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfcnVsZTo6cnVsZV9pZA0KPiArCQkJICovDQo+ICsJCQl1 aW50MzJfdCBncm91cF9pZDoxMjsNCj4gKwkJCS8qKjwgR3JvdXAgaWRlbnRpZmllciBvZiB0aGUg cnVsZSB3aGljaCB0aGUgcGF0dGVybg0KPiArCQkJICogbWF0Y2hlZC4gQHNlZSBzdHJ1Y3QgcnRl X3JlZ2V4X3J1bGU6Omdyb3VwX2lkDQo+ICsJCQkgKi8NCj4gKwkJCXVpbnQxNl90IG9mZnNldDsN Cj4gKwkJCS8qKjwgU3RhcnRpbmcgQnl0ZSBQb3NpdGlvbiBmb3IgbWF0Y2hlZCBydWxlLiAqLw0K PiArCQkJdWludDE2X3QgbGVuOw0KPiArCQkJLyoqPCBMZW5ndGggb2YgbWF0Y2ggaW4gYnl0ZXMg Ki8NCj4gKwkJfTsNCj4gKwl9Ow0KPiArfTsNCj4gKw0KPiArLyogRW51bWVyYXRlcyBSZWdFeCBy ZXF1ZXN0IGZsYWdzLiAqLw0KPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDFf VkFMSURfRiAoMSA8PCAwKQ0KPiArLyoqPCBTZXQgd2hlbiBzdHJ1Y3QgcnRlX3JlZ2V4X3J1bGU6 Omdyb3VwX2lkMSB2YWxpZCAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUkVRX0dS T1VQX0lEMl9WQUxJRF9GICgxIDw8IDEpDQo+ICsvKio8IFNldCB3aGVuIHN0cnVjdCBydGVfcmVn ZXhfcnVsZTo6Z3JvdXBfaWQyIHZhbGlkICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX09Q U19SRVFfR1JPVVBfSUQzX1ZBTElEX0YgKDEgPDwgMikNCj4gKy8qKjwgU2V0IHdoZW4gc3RydWN0 IHJ0ZV9yZWdleF9ydWxlOjpncm91cF9pZDMgdmFsaWQgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVf UkVHRVhfT1BTX1JFUV9TVE9QX09OX01BVENIX0YgKDEgPDwgNCkNCj4gKy8qKjwgVGhlIFJlZ0V4 IGVuZ2luZSB3aWxsIHN0b3Agc2Nhbm5pbmcgYW5kIHJldHVybiB0aGUgZmlyc3QgbWF0Y2guICov DQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SRVFfTUFUQ0hfSElHSF9QUklPUklUWV9G ICgxIDw8IDUpDQo+ICsvKio8IEluIEhpZ2ggUHJpb3JpdHkgbW9kZSBhIG1heGltdW0gb2Ygb25l IG1hdGNoIHdpbGwgYmUgcmV0dXJuZWQgcGVyDQo+IHNjYW4gdG8NCj4gKyAqIHJlZHVjZSB0aGUg cG9zdC1wcm9jZXNzaW5nIHJlcXVpcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gVGhlIG1hdGNoIHdp dGgNCj4gdGhlDQo+ICsgKiBsb3dlc3QgUnVsZSBpZCwgbG93ZXN0IHN0YXJ0IHBvaW50ZXIgYW5k IGxvd2VzdCBtYXRjaCBsZW5ndGggd2lsbCBiZQ0KPiArICogcmV0dXJuZWQuDQo+ICsgKg0KPiAr ICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bmJfYWN0dWFsX21hdGNoZXMNCj4gKyAqIEBz ZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMNCj4gKyAqLw0KPiArDQo+ICsNCj4g Ky8qIEVudW1lcmF0ZXMgUmVnRXggcmVzcG9uc2UgZmxhZ3MuICovDQo+ICsjZGVmaW5lIFJURV9S RUdFWF9PUFNfUlNQX1BNSV9TT0pfRiAoMSA8PCAwKQ0KPiArLyoqPCBJbmRpY2F0ZXMgdGhhdCB0 aGUgUmVnRXggZGV2aWNlIGhhcyBlbmNvdW50ZXJlZCBhIHBhcnRpYWwgbWF0Y2ggYXQgdGhlDQo+ ICsgKiBzdGFydCBvZiBzY2FuIGluIHRoZSBnaXZlbiBidWZmZXIuDQo+ICsgKg0KPiArICogQHNl ZSBSVEVfUkVHRVhfREVWX0NGR19DUk9TU19CVUZGRVJfU0NBTl9GDQo+ICsgKi8NCj4gKw0KPiAr I2RlZmluZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfRU9KX0YgKDEgPDwgMSkNCj4gKy8qKjwgSW5k aWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBoYXMgZW5jb3VudGVyZWQgYSBwYXJ0aWFsIG1h dGNoIGF0IHRoZQ0KPiArICogZW5kIG9mIHNjYW4gaW4gdGhlIGdpdmVuIGJ1ZmZlci4NCj4gKyAq DQo+ICsgKiBAc2VlIFJURV9SRUdFWF9ERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YNCj4gKyAq Lw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUlNQX01BWF9TQ0FOX1RJTUVPVVRfRiAo MSA8PCAyKQ0KPiArLyoqPCBJbmRpY2F0ZXMgdGhhdCB0aGUgUmVnRXggZGV2aWNlIGhhcyBleGNl ZWRlZCB0aGUgbWF4IHRpbWVvdXQgd2hpbGUNCj4gKyAqIHNjYW5uaW5nIHRoZSBnaXZlbiBidWZm ZXIuDQo+ICsgKg0KPiArICogQHNlZSBSVEVfUkVHRVhfREVWX0FUVFJfTUFYX1NDQU5fVElNRU9V VA0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfTUFYX01BVENIX0Yg KDEgPDwgMykNCj4gKy8qKjwgSW5kaWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBoYXMgZXhj ZWVkZWQgdGhlIG1heCBtYXRjaGVzIHdoaWxlDQo+ICsgKiBzY2FubmluZyB0aGUgZ2l2ZW4gYnVm ZmVyLg0KPiArICoNCj4gKyAqIEBzZWUgUlRFX1JFR0VYX0RFVl9BVFRSX01BWF9NQVRDSEVTDQo+ ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JTUF9NQVhfUFJFRklYX0YgKDEg PDwgNCkNCj4gKy8qKjwgSW5kaWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBoYXMgcmVhY2hl ZCB0aGUgbWF4IGFsbG93ZWQgcHJlZml4DQo+IGxlbmd0aA0KPiArICogd2hpbGUgc2Nhbm5pbmcg dGhlIGdpdmVuIGJ1ZmZlci4NCj4gKyAqDQo+ICsgKiBAc2VlIFJURV9SRUdFWF9ERVZfQVRUUl9N QVhfUFJFRklYDQo+ICsgKi8NCj4gKw0KPiArLyoqDQo+ICsgKiBUaGUgZ2VuZXJpYyAqcnRlX3Jl Z2V4X29wcyogc3RydWN0dXJlIHRvIGhvbGQgdGhlIFJlZ0V4IGF0dHJpYnV0ZXMNCj4gKyAqIGZv ciBlbnF1ZXVlIGFuZCBkZXF1ZXVlIG9wZXJhdGlvbi4NCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9y ZWdleF9vcHMgew0KPiArCS8qIFcwICovDQo+ICsJdWludDE2X3QgcmVxX2ZsYWdzOw0KPiArCS8q KjwgUmVxdWVzdCBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4NCj4gKwkgKiBAc2VlIFJURV9SRUdF WF9PUFNfUkVRXyoNCj4gKwkgKi8NCj4gKwl1aW50MTZfdCBzY2FuX3NpemU7DQo+ICsJLyoqPCBT Y2FuIHNpemUgb2YgdGhlIGJ1ZmZlciB0byBiZSBzY2FubmVkIGluIGJ5dGVzLiAqLw0KPiArCXVp bnQxNl90IHJzcF9mbGFnczsNCj4gKwkvKio8IFJlc3BvbnNlIGZsYWdzIGZvciB0aGUgUmVnRXgg b3BzLg0KPiArCSAqIEBzZWUgUlRFX1JFR0VYX09QU19SU1BfKg0KPiArCSAqLw0KPiArCXVpbnQ4 X3QgbmJfYWN0dWFsX21hdGNoZXM7DQo+ICsJLyoqPCBUaGUgdG90YWwgbnVtYmVyIG9mIGFjdHVh bCBtYXRjaGVzIGRldGVjdGVkIGJ5IHRoZSBSZWdleA0KPiBkZXZpY2UuKi8NCj4gKwl1aW50OF90 IG5iX21hdGNoZXM7DQo+ICsJLyoqPCBUaGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoZXMgcmV0dXJu ZWQgYnkgdGhlIFJlZ0V4IGRldmljZSBmb3INCj4gdGhpcw0KPiArCSAqIHNjYW4uIFRoZSBzaXpl IG9mICpydGVfcmVnZXhfb3BzOjptYXRjaGVzKiB6ZXJvIGxlbmd0aCBhcnJheSB3aWxsDQo+IGJl DQo+ICsJICogdGhpcyB2YWx1ZS4NCj4gKwkgKg0KPiArCSAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdl eF9vcHM6Om1hdGNoZXMsIHN0cnVjdCBydGVfcmVnZXhfbWF0Y2gNCj4gKwkgKi8NCj4gKw0KPiAr CS8qIFcxICovDQo+ICsJUlRFX1NURF9DMTENCj4gKwl1bmlvbiB7DQo+ICsJCXVpbnQ2NF90IHU2 NDsNCj4gKwkJLyoqPCAgQWxsb3cgOC1ieXRlIHJlc2VydmVkIG9uIDMyLWJpdCBzeXN0ZW0gKi8N Cj4gKwkJdm9pZCAqYnVmX2FkZHI7DQo+ICsJCS8qKjwgVmlydHVhbCBhZGRyZXNzIG9mIHRoZSBw YXR0ZXJuIHRvIGJlIG1hdGNoZWQuICovDQo+ICsJfTsNCj4gKw0KPiArCS8qIFcyICovDQo+ICsJ cnRlX2lvdmFfdCBidWZfaW92YTsNCj4gKwkvKio8IElPVkEgYWRkcmVzcyBvZiB0aGUgcGF0dGVy biB0byBiZSBtYXRjaGVkLiAqLw0KPiArDQo+ICsJLyogVzMgKi8NCj4gKwl1aW50MTZfdCBncm91 cF9pZDA7DQo+ICsJLyoqPCBGaXJzdCBncm91cF9pZCB0byBtYXRjaCB0aGUgcnVsZSBhZ2FpbnN0 LiBNaW5pbXVtIG9uZSBncm91cCBpZA0KPiArCSAqIG11c3QgYmUgcHJvdmlkZWQgYnkgYXBwbGlj YXRpb24uDQo+ICsJICogV2hlbiBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDFfVkFMSURfRiBz ZXQgdGhlbg0KPiBncm91cF9pZDENCj4gKwkgKiBpcyB2YWxpZCwgcmVzcGVjdGl2ZWx5IHNpbWls YXIgZmxhZ3MgZm9yIGdyb3VwX2lkMiBhbmQgZ3JvdXBfaWQzLg0KPiArCSAqIFVwb24gdGhlIG1h dGNoLCBzdHJ1Y3QgcnRlX3JlZ2V4X21hdGNoOjpncm91cF9pZCBzaGFsbCBiZQ0KPiB1cGRhdGVk DQo+ICsJICogd2l0aCBtYXRjaGluZyBncm91cCBJRCBieSB0aGUgZGV2aWNlLiBHcm91cCBJRCBz Y2hlbWUgcHJvdmlkZXMNCj4gKwkgKiBydWxlIGlzb2xhdGlvbiBhbmQgZWZmZWN0aXZlIHBhdHRl cm4gbWF0Y2hpbmcuDQo+ICsJICovDQo+ICsJdWludDE2X3QgZ3JvdXBfaWQxOw0KPiArCS8qKjwg U2Vjb25kIGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuDQo+ICsJICoNCj4gKwkg KiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEMV9WQUxJRF9GDQo+ICsJICovDQo+ICsJ dWludDE2X3QgZ3JvdXBfaWQyOw0KPiArCS8qKjwgVGhpcmQgZ3JvdXBfaWQgdG8gbWF0Y2ggdGhl IHJ1bGUgYWdhaW5zdC4NCj4gKwkgKg0KPiArCSAqIEBzZWUgUlRFX1JFR0VYX09QU19SRVFfR1JP VVBfSUQyX1ZBTElEX0YNCj4gKwkgKi8NCj4gKwl1aW50MTZfdCBncm91cF9pZDM7DQo+ICsJLyoq PCBGb3J0aCBncm91cF9pZCB0byBtYXRjaCB0aGUgcnVsZSBhZ2FpbnN0Lg0KPiArCSAqDQo+ICsJ ICogQHNlZSBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDNfVkFMSURfRg0KPiArCSAqLw0KPiAr DQo+ICsJLyogVzQgKi8NCj4gKwlSVEVfU1REX0MxMQ0KPiArCXVuaW9uIHsNCj4gKwkJdWludDY0 X3QgdXNlcl9pZDsNCj4gKwkJLyoqPCBBcHBsaWNhdGlvbiBzcGVjaWZpYyBvcGFxdWUgdmFsdWUu IEFuIGFwcGxpY2F0aW9uIG1heQ0KPiB1c2UNCj4gKwkJICogdGhpcyBmaWVsZCB0byBob2xkIGFw cGxpY2F0aW9uIHNwZWNpZmljIHZhbHVlIHRvIHNoYXJlDQo+ICsJCSAqIGJldHdlZW4gZGVxdWV1 ZSBhbmQgZW5xdWV1ZSBvcGVyYXRpb24uDQo+ICsJCSAqIEltcGxlbWVudGF0aW9uIHNob3VsZCBu b3QgbW9kaWZ5IHRoaXMgZmllbGQuDQo+ICsJCSAqLw0KPiArCQl2b2lkICp1c2VyX3B0cjsNCj4g KwkJLyoqPCBQb2ludGVyIHJlcHJlc2VudGF0aW9uIG9mICp1c2VyX2lkKiAqLw0KPiArCX07DQo+ ICsNCj4gKwkvKiBXNSAqLw0KPiArCXN0cnVjdCBydGVfcmVnZXhfbWF0Y2ggbWF0Y2hlc1tdOw0K PiArCS8qKjwgWmVybyBsZW5ndGggYXJyYXkgdG8gaG9sZCB0aGUgbWF0Y2ggdHVwbGVzLg0KPiAr CSAqIFRoZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bmJfbWF0Y2hlcyB2YWx1ZSBob2xkcyB0aGUg bnVtYmVyIG9mDQo+ICsJICogZWxlbWVudHMgaW4gdGhpcyBhcnJheS4NCj4gKwkgKg0KPiArCSAq IEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMNCj4gKwkgKi8NCj4gK307DQo+ ICsNCj4gKy8qKg0KPiArICogRW5xdWV1ZSBhIGJ1cnN0IG9mIHNjYW4gcmVxdWVzdCBvbiBhIFJl Z0V4IGRldmljZS4NCj4gKyAqDQo+ICsgKiBUaGUgcnRlX3JlZ2V4X2VucXVldWVfYnVyc3QoKSBm dW5jdGlvbiBpcyBpbnZva2VkIHRvIHBsYWNlDQo+ICsgKiByZWdleCBvcGVyYXRpb25zIG9uIHRo ZSBxdWV1ZSAqcXBfaWQqIG9mIHRoZSBkZXZpY2UgZGVzaWduYXRlZCBieQ0KPiArICogaXRzICpk ZXZfaWQqLg0KPiArICoNCj4gKyAqIFRoZSAqbmJfb3BzKiBwYXJhbWV0ZXIgaXMgdGhlIG51bWJl ciBvZiBvcGVyYXRpb25zIHRvIHByb2Nlc3Mgd2hpY2gNCj4gYXJlDQo+ICsgKiBzdXBwbGllZCBp biB0aGUgKm9wcyogYXJyYXkgb2YgKnJ0ZV9yZWdleF9vcCogc3RydWN0dXJlcy4NCj4gKyAqDQo+ ICsgKiBUaGUgcnRlX3JlZ2V4X2VucXVldWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBu dW1iZXIgb2YNCj4gKyAqIG9wZXJhdGlvbnMgaXQgYWN0dWFsbHkgZW5xdWV1ZWQgZm9yIHByb2Nl c3NpbmcuIEEgcmV0dXJuIHZhbHVlIGVxdWFsIHRvDQo+ICsgKiAqbmJfb3BzKiBtZWFucyB0aGF0 IGFsbCBwYWNrZXRzIGhhdmUgYmVlbiBlbnF1ZXVlZC4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2 X2lkDQo+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ICsgKiBAcGFyYW0g cXBfaWQNCj4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSBwYWlyIHdoaWNoIHBhY2tldHMg YXJlIHRvIGJlIGVucXVldWVkIGZvcg0KPiArICogICBwcm9jZXNzaW5nLiBUaGUgdmFsdWUgbXVz dCBiZSBpbiB0aGUgcmFuZ2UgWzAsIG5iX3F1ZXVlX3BhaXJzIC0gMV0NCj4gKyAqICAgcHJldmlv dXNseSBzdXBwbGllZCB0byBydGVfcmVnZXhfZGV2X2NvbmZpZ3VyZSgpLg0KPiArICogQHBhcmFt IG9wcw0KPiArICogICBUaGUgYWRkcmVzcyBvZiBhbiBhcnJheSBvZiAqbmJfb3BzKiBwb2ludGVy cyB0byAqcnRlX3JlZ2V4X29wKg0KPiBzdHJ1Y3R1cmVzDQo+ICsgKiAgIHdoaWNoIGNvbnRhaW4g dGhlIHJlZ2V4IG9wZXJhdGlvbnMgdG8gYmUgcHJvY2Vzc2VkLg0KPiArICogQHBhcmFtIG5iX29w cw0KPiArICogICBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgdG8gcHJvY2Vzcy4NCj4gKyAqDQo+ ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBhY3R1YWxseSBl bnF1ZXVlZCBvbiB0aGUgcmVnZXggZGV2aWNlLiBUaGUNCj4gcmV0dXJuDQo+ICsgKiAgIHZhbHVl IGNhbiBiZSBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mIHRoZSAqbmJfb3BzKiBwYXJhbWV0ZXIgd2hl biB0aGUNCj4gKyAqICAgcmVnZXggZGV2aWNlcyBxdWV1ZSBpcyBmdWxsIG9yIGlmIGludmFsaWQg cGFyYW1ldGVycyBhcmUgc3BlY2lmaWVkIGluDQo+ICsgKiAgIGEgKnJ0ZV9yZWdleF9vcCouIElm IHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuICpuYl9vcHMqLCB0aGUNCj4gcmVtYWluaW5n DQo+ICsgKiAgIG9wcyBhdCB0aGUgZW5kIG9mICpvcHMqIGFyZSBub3QgY29uc3VtZWQgYW5kIHRo ZSBjYWxsZXIgaGFzIHRvIHRha2UNCj4gY2FyZQ0KPiArICogICBvZiB0aGVtLg0KPiArICovDQo+ ICt1aW50MTZfdA0KPiArcnRlX3JlZ2V4X2VucXVldWVfYnVyc3QodWludDhfdCBkZXZfaWQsIHVp bnQxNl90IHFwX2lkLA0KPiArCQkJc3RydWN0IHJ0ZV9yZWdleF9vcHMgKipvcHMsIHVpbnQxNl90 IG5iX29wcyk7DQo+ICsNCj4gKy8qKg0KPiArICoNCj4gKyAqIERlcXVldWUgYSBidXJzdCBvZiBz Y2FuIHJlc3BvbnNlIGZyb20gYSBxdWV1ZSBvbiB0aGUgUmVnRXggZGV2aWNlLg0KPiArICogVGhl IGRlcXVldWVkIG9wZXJhdGlvbiBhcmUgc3RvcmVkIGluICpydGVfcmVnZXhfb3AqIHN0cnVjdHVy ZXMNCj4gKyAqIHdob3NlIHBvaW50ZXJzIGFyZSBzdXBwbGllZCBpbiB0aGUgKm9wcyogYXJyYXku DQo+ICsgKg0KPiArICogVGhlIHJ0ZV9yZWdleF9kZXF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24gcmV0 dXJucyB0aGUgbnVtYmVyIG9mIG9wcw0KPiArICogYWN0dWFsbHkgZGVxdWV1ZWQsIHdoaWNoIGlz IHRoZSBudW1iZXIgb2YgKnJ0ZV9yZWdleF9vcCogZGF0YQ0KPiBzdHJ1Y3R1cmVzDQo+ICsgKiBl ZmZlY3RpdmVseSBzdXBwbGllZCBpbnRvIHRoZSAqb3BzKiBhcnJheS4NCj4gKyAqDQo+ICsgKiBB IHJldHVybiB2YWx1ZSBlcXVhbCB0byAqbmJfb3BzKiBpbmRpY2F0ZXMgdGhhdCB0aGUgcXVldWUg Y29udGFpbmVkDQo+ICsgKiBhdCBsZWFzdCAqbmJfb3BzKiBvcGVyYXRpb25zLCBhbmQgdGhpcyBp cyBsaWtlbHkgdG8gc2lnbmlmeSB0aGF0IG90aGVyDQo+ICsgKiBwcm9jZXNzZWQgb3BlcmF0aW9u cyByZW1haW4gaW4gdGhlIGRldmljZXMgb3V0cHV0IHF1ZXVlLiBBcHBsaWNhdGlvbnMNCj4gKyAq IGltcGxlbWVudGluZyBhICJyZXRyaWV2ZSBhcyBtYW55IHByb2Nlc3NlZCBvcGVyYXRpb25zIGFz IHBvc3NpYmxlIg0KPiBwb2xpY3kNCj4gKyAqIGNhbiBjaGVjayB0aGlzIHNwZWNpZmljIGNhc2Ug YW5kIGtlZXAgaW52b2tpbmcgdGhlDQo+ICsgKiBydGVfcmVnZXhfZGVxdWV1ZV9idXJzdCgpIGZ1 bmN0aW9uIHVudGlsIGEgdmFsdWUgbGVzcyB0aGFuDQo+ICsgKiAqbmJfb3BzKiBpcyByZXR1cm5l ZC4NCj4gKyAqDQo+ICsgKiBUaGUgcnRlX3JlZ2V4X2RlcXVldWVfYnVyc3QoKSBmdW5jdGlvbiBk b2VzIG5vdCBwcm92aWRlIGFueSBlcnJvcg0KPiArICogbm90aWZpY2F0aW9uIHRvIGF2b2lkIHRo ZSBjb3JyZXNwb25kaW5nIG92ZXJoZWFkLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4g KyAqICAgVGhlIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyDQo+ICsgKiBAcGFyYW0gcXBfaWQNCj4g KyAqICAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSBwYWlyIGZyb20gd2hpY2ggdG8gcmV0cmlldmUg cHJvY2Vzc2VkIHBhY2tldHMuDQo+ICsgKiAgIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5n ZSBbMCwgbmJfcXVldWVfcGFpcnMgLSAxXSBwcmV2aW91c2x5DQo+ICsgKiAgIHN1cHBsaWVkIHRv IHJ0ZV9yZWdleF9kZXZfY29uZmlndXJlKCkuDQo+ICsgKiBAcGFyYW0gb3BzDQo+ICsgKiAgIFRo ZSBhZGRyZXNzIG9mIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvICpydGVfcmVnZXhfb3AqIHN0cnVj dHVyZXMgdGhhdA0KPiBtdXN0DQo+ICsgKiAgIGJlIGxhcmdlIGVub3VnaCB0byBzdG9yZSAqbmJf b3BzKiBwb2ludGVycyBpbiBpdC4NCj4gKyAqIEBwYXJhbSBuYl9vcHMNCj4gKyAqICAgVGhlIG1h eGltdW0gbnVtYmVyIG9mIG9wZXJhdGlvbnMgdG8gZGVxdWV1ZS4NCj4gKyAqDQo+ICsgKiBAcmV0 dXJuDQo+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBhY3R1YWxseSBkZXF1ZXVlZCwg d2hpY2ggaXMgdGhlIG51bWJlcg0KPiArICogICBvZiBwb2ludGVycyB0byAqcnRlX3JlZ2V4X29w KiBzdHJ1Y3R1cmVzIGVmZmVjdGl2ZWx5IHN1cHBsaWVkIHRvIHRoZQ0KPiArICogICAqb3BzKiBh cnJheS4gSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNzIHRoYW4gKm5iX29wcyosIHRoZSByZW1h aW5pbmcNCj4gKyAqICAgb3BzIGF0IHRoZSBlbmQgb2YgKm9wcyogYXJlIG5vdCBjb25zdW1lZCBh bmQgdGhlIGNhbGxlciBoYXMgdG8gdGFrZQ0KPiBjYXJlDQo+ICsgKiAgIG9mIHRoZW0uDQo+ICsg Ki8NCj4gK3VpbnQxNl90DQo+ICtydGVfcmVnZXhfZGVxdWV1ZV9idXJzdCh1aW50OF90IGRldl9p ZCwgdWludDE2X3QgcXBfaWQsDQo+ICsJCQlzdHJ1Y3QgcnRlX3JlZ2V4X29wcyAqKm9wcywgdWlu dDE2X3QgbmJfb3BzKTsNCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICt9DQo+ICsjZW5k aWYNCj4gKw0KPiArI2VuZGlmIC8qIF9SVEVfUkVHRVhERVZfSF8gKi8NCj4gLS0NCj4gMi4yMS4w DQoNCg==