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 31D41A0522; Tue, 30 Jun 2020 21:57:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 835101BED9; Tue, 30 Jun 2020 21:57:27 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30050.outbound.protection.outlook.com [40.107.3.50]) by dpdk.org (Postfix) with ESMTP id C35431BED7 for ; Tue, 30 Jun 2020 21:57:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bllnPDw5h4s4FgrT7Rgk3sNcrG1xeK4kf3YSxmkiZHNGFNQ36O42faoXw44GJCTqObTNTCjSRTOqItvDtzExHywfnAmAPcdB8BRmfCtvyBMzMXOwuXcCdvfS7j2vkfki3EUntmdzOkWJfpMrQtipKiQ9TSsekBHRkHibfrYtanMgcGui54fEQe1m5KDWtQKOW3MsQbW05fdNYQbNKF+tyrRW6qwv4QQS79sS+LoJA0ueYLpH7FYcwaCS+rjnVAqNqL+hMwFFCnqA5EJ9uzWAFuhLnF7G0demRVxMunCbWuLYkZY1o+madaep/9u6Uo1BlC/WvfIREfVcHetlf2T5QQ== 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=xpbrRwo7Hs3y6//6tLDvrQdDgVwWbtJwiOgRqI35bJI=; b=hhUPGH9Z2dIE8crdXIzteUSg8gjwVjPa7cTwAUjz4kNxTK1w42MyVlMNYhFPvHMG+zS+ZuSB2bRm2+eMHZtFe1C3UG4ahqR0C4cNSIiv926lCH0hvfCNTexfjlOkwAEArb+lSafXfP6jxS4b9TC53Cvcap6Z6Txcd0DbctGxV4FAAr0g03RQrkaPSLPdsLXLr7r8S28SyO2+I2hxPP+ddHya7LZoHn4g/glmTo5xJixPAC66sWLtkw5HtqkH4pkfjh/tl2/WaqQpVt1SJez5mal+nUAO9Gjp7q1lhbF9R8oHQz9rQwpKnld7yFjMd1RmnqKNx7XfQ0jFTpmj25g0oA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xpbrRwo7Hs3y6//6tLDvrQdDgVwWbtJwiOgRqI35bJI=; b=pVjfHqTB7AQTNlZkVX+xxppP+vwofakeUHFE1CV8+65h+TN5/rSJB0UlFRMuHi9PsnxWbiYrMGS+QyWOtqGV0d/1wa6L4W/XlkIQzgr4rvGFKLPYuEDmJvN0qOzVOBl1z16N8XUPalDYqz7GgqNHhNYXXCtBNGKnnXd2K35d364= Received: from AM6PR05MB5176.eurprd05.prod.outlook.com (2603:10a6:20b:63::30) by AM6PR05MB5539.eurprd05.prod.outlook.com (2603:10a6:20b:5b::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.23; Tue, 30 Jun 2020 19:57:19 +0000 Received: from AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::9024:accb:4d6b:805f]) by AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::9024:accb:4d6b:805f%3]) with mapi id 15.20.3131.027; Tue, 30 Jun 2020 19:57:19 +0000 From: Ori Kam To: "jerinj@marvell.com" , "xiang.w.wang@intel.com" CC: "guyk@marvell.com" , "dev@dpdk.org" , "pbhagavatula@marvell.com" , Shahaf Shuler , "hemant.agrawal@nxp.com" , Opher Reviv , Alex Rosenbaum , "dovrat@marvell.com" , "pkapoor@marvell.com" , "nipun.gupta@nxp.com" , "bruce.richardson@intel.com" , "yang.a.hong@intel.com" , "harry.chang@intel.com" , "gu.jian1@zte.com.cn" , "shanjiangh@chinatelecom.cn" , "zhangy.yun@chinatelecom.cn" , "lixingfu@huachentel.com" , "wushuai@inspur.com" , "yuyingxia@yxlink.com" , "fanchenggang@sunyainfo.com" , "davidfgao@tencent.com" , "liuzhong1@chinaunicom.cn" , "zhaoyong11@huawei.com" , "oc@yunify.com" , "jim@netgate.com" , "hongjun.ni@intel.com" , "j.bromhead@titan-ic.com" , "deri@ntop.org" , "fc@napatech.com" , "arthur.su@lionic.com" , Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH v3 1/4] regexdev: introduce regexdev subsystem Thread-Index: AQHWJFRmhC67jP00s0eAXmO6TTWIyqjjMmaQgA62A3A= Date: Tue, 30 Jun 2020 19:57:18 +0000 Message-ID: References: <1585464438-111285-1-git-send-email-orika@mellanox.com> <1588844756-10086-1-git-send-email-orika@mellanox.com> <1588844756-10086-2-git-send-email-orika@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: marvell.com; dkim=none (message not signed) header.d=none;marvell.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [147.236.152.129] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 1003d5b0-8c3b-41dc-67e8-08d81d2fcbc4 x-ms-traffictypediagnostic: AM6PR05MB5539: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-forefront-prvs: 0450A714CB x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1TVrE9n5mftr50WTp0Km4H30VxnXCFmXvZ9CLIFFBSmV2Ry280k3cWH2gMsV17aWjAF7LTFk7BwiweKWSGuOHddYqxXrDte/hVD/FmI6ygsoiziC0Up3UXa8bPxX97fnldweFliSOTg/hmbhGTKr6TxvWM/4iaaL52QvP7jYURGhZMzktCqB9wzOYhN6ejgbTpeT40Pd7sMioHXBAFZMQ4v/0Lb3Rp2VqEY0u5zgrBwlkBg6VvhBhJ2V5b8rtZpO/2ndCuhgBHOjTx7va5R8ni/5dVb16QGqFZgGvC5lXxcIIWBhO7+2krCwWYaRBFm6tFAIy3dUhRc+8vQFZHd9PSpK7mGpg8M87fN6B7v5VC+83X+1IigqUg+HSKAXeGhP7Btk4tJvMuJBfvmBdmjsPg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR05MB5176.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(71200400001)(66556008)(76116006)(66476007)(186003)(55016002)(83380400001)(33656002)(66946007)(54906003)(110136005)(26005)(66446008)(64756008)(2906002)(83080400001)(9686003)(7416002)(316002)(86362001)(7696005)(478600001)(30864003)(45080400002)(4326008)(8676002)(53546011)(6506007)(966005)(52536014)(8936002)(5660300002)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 5q5gIgOoGllk5uZlBT4XgpxhPyZs4f75Qnj75WXVErF1ZRkeVmvk9ZX818mXtnHO1HIb5FLPf3L3yv37IhjMyDTGEYv0kU2vKx54Bu0MUKFRuRoOcW3e6Bba9BoCyxXUt4sbkzALS5kbYG5VKkNo3vyFM/XFZNmmuloVrKuPaMGJVCCqso4NB6IifpjeTmX51Oce7LV9vbYa4rsVMiZ/r8T0so5yRbitdhKsGcXG19vSJy69IHJCi8H5Y+nu4BrrAwGVQUFurYbNeVCTP9+CthEKqvi/z9f4sHwKl6D1o2JLIboW7XUxrxOKQycTkqWEMgRFYD1fvxNGXlAbZPP8z4RfvQRQ6c1z63n+YtAZnUC9GLn5FS3P/0TM5w8dlaGyJJkuFFgz6S2c9B4+yw4RgZNQgGGmK61bRHDv1xdqUmwm0Z0P5Zn3s3bT1Y7bRSmUVLLHs9UnUuXwsUs+oe5//poof2Os3g4jFT+JwczUvZjYn717y7t5wbryUgE89OUc Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR05MB5176.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1003d5b0-8c3b-41dc-67e8-08d81d2fcbc4 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jun 2020 19:57:18.9451 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RtU+mkb3NtfC83GVcFNS8lRXzXs3Aiw3U/uPwZi7iYSHglkbrVoBBhODrxEHDpF+Zj965AN8tDHZnSm7hPUjgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB5539 Subject: Re: [dpdk-dev] [PATCH v3 1/4] 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" SGkgYWxsLA0KDQpKdXN0IGEgcmVtaW5kZXIgZm9yIGFjaywNCg0KVGhhbmtzLA0KT3JpDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT3JpIEthbSA8b3Jpa2FAbWVsbGFu b3guY29tPg0KPiBTZW50OiBTdW5kYXksIEp1bmUgMjEsIDIwMjAgMjoxOSBQTQ0KPiBUbzogT3Jp IEthbSA8b3Jpa2FAbWVsbGFub3guY29tPjsgamVyaW5qQG1hcnZlbGwuY29tOw0KPiB4aWFuZy53 LndhbmdAaW50ZWwuY29tDQo+IENjOiBndXlrQG1hcnZlbGwuY29tOyBkZXZAZHBkay5vcmc7IHBi aGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbTsgU2hhaGFmDQo+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5v eC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOyBPcGhlciBSZXZpdg0KPiA8b3BoZXJAbWVs bGFub3guY29tPjsgQWxleCBSb3NlbmJhdW0gPGFsZXhyQG1lbGxhbm94LmNvbT47DQo+IGRvdnJh dEBtYXJ2ZWxsLmNvbTsgcGthcG9vckBtYXJ2ZWxsLmNvbTsgbmlwdW4uZ3VwdGFAbnhwLmNvbTsN Cj4gYnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb207IHlhbmcuYS5ob25nQGludGVsLmNvbTsgaGFy cnkuY2hhbmdAaW50ZWwuY29tOw0KPiBndS5qaWFuMUB6dGUuY29tLmNuOyBzaGFuamlhbmdoQGNo aW5hdGVsZWNvbS5jbjsNCj4gemhhbmd5Lnl1bkBjaGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1 YWNoZW50ZWwuY29tOyB3dXNodWFpQGluc3B1ci5jb207DQo+IHl1eWluZ3hpYUB5eGxpbmsuY29t OyBmYW5jaGVuZ2dhbmdAc3VueWFpbmZvLmNvbTsNCj4gZGF2aWRmZ2FvQHRlbmNlbnQuY29tOyBs aXV6aG9uZzFAY2hpbmF1bmljb20uY247DQo+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsgb2NAeXVu aWZ5LmNvbTsgamltQG5ldGdhdGUuY29tOw0KPiBob25nanVuLm5pQGludGVsLmNvbTsgai5icm9t aGVhZEB0aXRhbi1pYy5jb207IGRlcmlAbnRvcC5vcmc7DQo+IGZjQG5hcGF0ZWNoLmNvbTsgYXJ0 aHVyLnN1QGxpb25pYy5jb207IFRob21hcyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmphbG9uLm5l dD4NCj4gU3ViamVjdDogUkU6IFtkcGRrLWRldl0gW1BBVENIIHYzIDEvNF0gcmVnZXhkZXY6IGlu dHJvZHVjZSByZWdleGRldg0KPiBzdWJzeXN0ZW0NCj4gDQo+IEhpIEFsbCwNCj4gDQo+IFRoaXMg aXMgdGhlIG9ubHkgcGF0Y2ggdGhhdCBpcyBtaXNzaW5nIGFuIGFjaywNCj4gDQo+IEkgcGxhbiB0 byBzdWJtaXQgdGhlIFBNRCBjb2RlIG5leHQgd2Vlaywgc28gcGxlYXNlIHJldmlldyBhbmQgYWNr IHRoaXMgcGF0Y2guDQo+IA0KPiBUaGFua3MsDQo+IE9yaQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJl aGFsZiBPZiBPcmkgS2FtDQo+ID4gU2VudDogVGh1cnNkYXksIE1heSA3LCAyMDIwIDEyOjQ2IFBN DQo+ID4gVG86IGplcmluakBtYXJ2ZWxsLmNvbTsgeGlhbmcudy53YW5nQGludGVsLmNvbQ0KPiA+ IENjOiBndXlrQG1hcnZlbGwuY29tOyBkZXZAZHBkay5vcmc7IHBiaGFnYXZhdHVsYUBtYXJ2ZWxs LmNvbTsgU2hhaGFmDQo+ID4gU2h1bGVyIDxzaGFoYWZzQG1lbGxhbm94LmNvbT47IGhlbWFudC5h Z3Jhd2FsQG54cC5jb207IE9waGVyIFJldml2DQo+ID4gPG9waGVyQG1lbGxhbm94LmNvbT47IEFs ZXggUm9zZW5iYXVtIDxhbGV4ckBtZWxsYW5veC5jb20+Ow0KPiA+IGRvdnJhdEBtYXJ2ZWxsLmNv bTsgcGthcG9vckBtYXJ2ZWxsLmNvbTsgbmlwdW4uZ3VwdGFAbnhwLmNvbTsNCj4gPiBicnVjZS5y aWNoYXJkc29uQGludGVsLmNvbTsgeWFuZy5hLmhvbmdAaW50ZWwuY29tOw0KPiBoYXJyeS5jaGFu Z0BpbnRlbC5jb207DQo+ID4gZ3UuamlhbjFAenRlLmNvbS5jbjsgc2hhbmppYW5naEBjaGluYXRl bGVjb20uY247DQo+ID4gemhhbmd5Lnl1bkBjaGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNo ZW50ZWwuY29tOw0KPiB3dXNodWFpQGluc3B1ci5jb207DQo+ID4geXV5aW5neGlhQHl4bGluay5j b207IGZhbmNoZW5nZ2FuZ0BzdW55YWluZm8uY29tOw0KPiA+IGRhdmlkZmdhb0B0ZW5jZW50LmNv bTsgbGl1emhvbmcxQGNoaW5hdW5pY29tLmNuOw0KPiA+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsg b2NAeXVuaWZ5LmNvbTsgamltQG5ldGdhdGUuY29tOw0KPiA+IGhvbmdqdW4ubmlAaW50ZWwuY29t OyBqLmJyb21oZWFkQHRpdGFuLWljLmNvbTsgZGVyaUBudG9wLm9yZzsNCj4gPiBmY0BuYXBhdGVj aC5jb207IGFydGh1ci5zdUBsaW9uaWMuY29tOyBUaG9tYXMgTW9uamFsb24NCj4gPiA8dGhvbWFz QG1vbmphbG9uLm5ldD47IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT4NCj4gPiBTdWJqZWN0 OiBbZHBkay1kZXZdIFtQQVRDSCB2MyAxLzRdIHJlZ2V4ZGV2OiBpbnRyb2R1Y2UgcmVnZXhkZXYg c3Vic3lzdGVtDQo+ID4NCj4gPiBGcm9tOiBKZXJpbiBKYWNvYiA8amVyaW5qQG1hcnZlbGwuY29t Pg0KPiA+DQo+ID4gQXMgUmVnRXggdXNhZ2UgYmVjb21lIG1vcmUgdXNlZCBieSBEUERLIGFwcGxp Y2F0aW9ucywgZm9yIGV4YW1wbGU6DQo+ID4gKiBOZXh0IEdlbmVyYXRpb24gRmlyZXdhbGxzIChO R0ZXKQ0KPiA+ICogRGVlcCBQYWNrZXQgYW5kIEZsb3cgSW5zcGVjdGlvbiAoRFBJKQ0KPiA+ICog SW50cnVzaW9uIFByZXZlbnRpb24gU3lzdGVtcyAoSVBTKQ0KPiA+ICogRERvUyBNaXRpZ2F0aW9u DQo+ID4gKiBOZXR3b3JrIE1vbml0b3JpbmcNCj4gPiAqIERhdGEgTG9zcyBQcmV2ZW50aW9uIChE TFApDQo+ID4gKiBTbWFydCBOSUNzDQo+ID4gKiBHcmFtbWFyIGJhc2VkIGNvbnRlbnQgcHJvY2Vz c2luZw0KPiA+ICogVVJMLCBzcGFtIGFuZCBhZHdhcmUgZmlsdGVyaW5nDQo+ID4gKiBBZHZhbmNl ZCBhdWRpdGluZyBhbmQgcG9saWNpbmcgb2YgdXNlci9hcHBsaWNhdGlvbiBzZWN1cml0eSBwb2xp Y2llcw0KPiA+ICogRmluYW5jaWFsIGRhdGEgbWluaW5nIC0gcGFyc2luZyBvZiBzdHJlYW1lZCBm aW5hbmNpYWwgZmVlZHMNCj4gPiAqIEFwcGxpY2F0aW9uIHJlY29nbml0aW9uLg0KPiA+ICogRG1l bW9yeSBpbnRyb3NwZWN0aW9uLg0KPiA+ICogTmF0dXJhbCBMYW5ndWFnZSBQcm9jZXNzaW5nIChO TFApDQo+ID4gKiBTZW50aW1lbnQgQW5hbHlzaXMuDQo+ID4gKiBCaWcgZGF0YSBkYXRhYnNlIGFj Y2VsZXJhdGlvbi4NCj4gPiAqIENvbXB1dGF0aW9uYWwgc3RvcmFnZS4NCj4gPg0KPiA+IE51bWJl ciBvZiBQTUQgcHJvdmlkZXJzIHN0YXJ0ZWQgdG8gd29yayBvbiBIVyBpbXBsZW1lbnRhdGlvbiwN Cj4gPiBhbG9uZyBzaWRlIHdpdGggU1cgaW1wbGVtZW50YXRpb25zLg0KPiA+DQo+ID4gVGhpcyBs aWIgYWRkcyB0aGUgc3VwcG9ydCBmb3IgdGhvc2Uga2luZCBvZiBkZXZpY2VzLg0KPiA+DQo+ID4g VGhlIFJlZ0V4IERldmljZSBBUEkgaXMgY29tcG9zZWQgb2YgdHdvIHBhcnRzOg0KPiA+IC0gVGhl IGFwcGxpY2F0aW9uLW9yaWVudGVkIFJlZ0V4IEFQSSB0aGF0IGluY2x1ZGVzIGZ1bmN0aW9ucyB0 byBzZXR1cA0KPiA+ICAgYSBSZWdFeCBkZXZpY2UgKGNvbmZpZ3VyZSBpdCwgc2V0dXAgaXRzIHF1 ZXVlIHBhaXJzIGFuZCBzdGFydCBpdCksDQo+ID4gICB1cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2Ug YW5kIHNvIG9uLg0KPiA+DQo+ID4gLSBUaGUgZHJpdmVyLW9yaWVudGVkIFJlZ0V4IEFQSSB0aGF0 IGV4cG9ydHMgYSBmdW5jdGlvbiBhbGxvd2luZw0KPiA+ICAgYSBSZWdFeCBwb2xsIE1vZGUgRHJp dmVyIChQTUQpIHRvIHNpbXVsdGFuZW91c2x5IHJlZ2lzdGVyIGl0c2VsZiBhcw0KPiA+ICAgYSBS ZWdFeCBkZXZpY2UgZHJpdmVyLg0KPiA+DQo+ID4gUmVnRXggZGV2aWNlIGNvbXBvbmVudHMgYW5k IGRlZmluaXRpb25zOg0KPiA+DQo+ID4gICAgICstLS0tLS0tLS0tLS0tLS0tLSsNCj4gPiAgICAg fCAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICB8ICAgICAgICAgICAgICAgICBvLS0tLS0tLS0t KyAgICBydGVfcmVnZXhkZXZfW2VufGRlXXF1ZXVlX2J1cnN0KCkNCj4gPiAgICAgfCAgIFBDUkUg YmFzZWQgICAgby0tLS0tLSsgIHwgICAgICAgICAgICAgICB8DQo+ID4gICAgIHwgIFJlZ0V4IHBh dHRlcm4gIHwgICAgICB8ICB8ICArLS0tLS0tLS0rICAgfA0KPiA+ICAgICB8IG1hdGNoaW5nIGVu Z2luZSBvLS0tLS0tKy0tKy0tbyAgICAgICAgfCAgIHwgICAgKy0tLS0tLSsNCj4gPiAgICAgfCAg ICAgICAgICAgICAgICAgfCAgICAgIHwgIHwgIHwgcXVldWUgIHw8PT1vPT09PnxDb3JlIDB8DQo+ ID4gICAgIHwgICAgICAgICAgICAgICAgIG8tLS0tKyB8ICB8ICB8IHBhaXIgMCB8ICAgICAgICB8 ICAgICAgfA0KPiA+ICAgICB8ICAgICAgICAgICAgICAgICB8ICAgIHwgfCAgfCAgKy0tLS0tLS0t KyAgICAgICAgKy0tLS0tLSsNCj4gPiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKyAgICB8IHwgIHwN Cj4gPiAgICAgICAgICAgIF4gICAgICAgICAgICAgICB8IHwgIHwgICstLS0tLS0tLSsNCj4gPiAg ICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwgIHwgIHwgICAgICAgIHwgICAgICAgICstLS0t LS0rDQo+ID4gICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCArLS0rLS1vIHF1ZXVlICB8PD09 PT09PT58Q29yZSAxfA0KPiA+ICAgICAgICBSdWxlfERhdGFiYXNlICAgICAgIHwgICAgfCAgfCBw YWlyIDEgfCAgICAgICAgfCAgICAgIHwNCj4gPiAgICAgKy0tLS0tLSstLS0tLS0tLS0tKyAgICB8 ICAgIHwgICstLS0tLS0tLSsgICAgICAgICstLS0tLS0rDQo+ID4gICAgIHwgICAgIEdyb3VwIDAg ICAgIHwgICAgfCAgICB8DQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICB8ICAr LS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiA+ICAgICB8IHwgUnVsZXMgMC4ubiAgfCB8ICAg IHwgICAgfCAgfCAgICAgICAgfCAgICAgICAgfENvcmUgMnwNCj4gPiAgICAgfCArLS0tLS0tLS0t LS0tLSsgfCAgICB8ICAgICstLW8gcXVldWUgIHw8PT09PT09PnwgICAgICB8DQo+ID4gICAgIHwg ICAgIEdyb3VwIDEgICAgIHwgICAgfCAgICAgICB8IHBhaXIgMiB8ICAgICAgICArLS0tLS0tKw0K PiA+ICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgICAgKy0tLS0tLS0tKw0KPiA+ICAg ICB8IHwgUnVsZXMgMC4ubiAgfCB8ICAgIHwNCj4gPiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAg ICB8ICAgICAgICstLS0tLS0tLSsNCj4gPiAgICAgfCAgICAgR3JvdXAgMiAgICAgfCAgICB8ICAg ICAgIHwgICAgICAgIHwgICAgICAgICstLS0tLS0rDQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0r IHwgICAgfCAgICAgICB8IHF1ZXVlICB8PD09PT09PT58Q29yZSBufA0KPiA+ICAgICB8IHwgUnVs ZXMgMC4ubiAgfCB8ICAgICstLS0tLS0tbyBwYWlyIG4gfCAgICAgICAgfCAgICAgIHwNCj4gPiAg ICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICstLS0tLS0tLSsgICAgICAgICstLS0t LS0rDQo+ID4gICAgIHwgICAgIEdyb3VwIG4gICAgIHwNCj4gPiAgICAgfCArLS0tLS0tLS0tLS0t LSsgfDwtLS0tLS0tcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlKCkNCj4gPiAgICAgfCB8ICAg ICAgICAgICAgIHwgfDwtLS0tLS0tcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0 ZSgpDQo+ID4gICAgIHwgfCBSdWxlcyAwLi5uICB8IHw8LS0tLS0tLXJ0ZV9yZWdleGRldl9ydWxl X2RiX2ltcG9ydCgpDQo+ID4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwtLS0tLS0tPnJ0ZV9yZWdl eGRldl9ydWxlX2RiX2V4cG9ydCgpDQo+ID4gICAgICstLS0tLS0tLS0tLS0tLS0tLSsNCj4gPg0K PiA+IFJlZ0V4OiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBhIGNvbmNpc2UgYW5kIGZsZXhpYmxl IG1lYW5zIGZvciBtYXRjaGluZw0KPiA+IHN0cmluZ3Mgb2YgdGV4dCwgc3VjaCBhcyBwYXJ0aWN1 bGFyIGNoYXJhY3RlcnMsIHdvcmRzLCBvciBwYXR0ZXJucyBvZg0KPiA+IGNoYXJhY3RlcnMuIEEg Y29tbW9uIGFiYnJldmlhdGlvbiBmb3IgdGhpcyBpcyDDon5AflxSZWdFeMOifkB+XS4NCj4gPg0K PiA+IFJlZ0V4IGRldmljZTogQSBoYXJkd2FyZSBvciBzb2Z0d2FyZS1iYXNlZCBpbXBsZW1lbnRh dGlvbiBvZiBSZWdFeA0KPiA+IGRldmljZSBBUEkgZm9yIFBDUkUgYmFzZWQgcGF0dGVybiBtYXRj aGluZyBzeW50YXggYW5kIHNlbWFudGljcy4NCj4gPg0KPiA+IFBDUkUgUmVnRXggc3ludGF4IGFu ZCBzZW1hbnRpY3Mgc3BlY2lmaWNhdGlvbjoNCj4gPg0KPiBodHRwczovL2V1cjAzLnNhZmVsaW5r cy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRnJlZ2V4a2l0LnNvDQo+ ID4NCj4gdXJjZWZvcmdlLm5ldCUyRkRvY3VtZW50YXRpb24lMkZwY3JlJTJGcGNyZXBhdHRlcm4u aHRtbCZhbXA7ZGF0YT0wMiUNCj4gPg0KPiA3QzAxJTdDb3Jpa2ElNDBtZWxsYW5veC5jb20lN0Mz OWY1NzY1ZTQwNWM0NmIxOGJhMzA4ZDdmMjZiODQ4MCU3Qw0KPiA+DQo+IGE2NTI5NzFjN2QyZTRk OWJhNmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2MzcyNDQ0MTU5NjExNDQ5NjgmYQ0KPiA+DQo+ IG1wO3NkYXRhPU5XWWphM2c1blRlclNlOHZJRlNIcFRlSzhpcEtPaE1uWG1tTkJ1SnRXcVklM0Qm YW1wO3Jlcw0KPiA+IGVydmVkPTANCj4gPg0KPiA+IFJlZ0V4IHF1ZXVlIHBhaXI6IEVhY2ggUmVn RXggZGV2aWNlIHNob3VsZCBoYXZlIG9uZSBvciBtb3JlIHF1ZXVlIHBhaXIgdG8NCj4gPiB0cmFu c21pdCBhIGJ1cnN0IG9mIHBhdHRlcm4gbWF0Y2hpbmcgcmVxdWVzdCBhbmQgcmVjZWl2ZSBhIGJ1 cnN0IG9mDQo+ID4gcmVjZWl2ZSB0aGUgcGF0dGVybiBtYXRjaGluZyByZXNwb25zZS4gVGhlIHBh dHRlcm4gbWF0Y2hpbmcNCj4gPiByZXF1ZXN0L3Jlc3BvbnNlIGVtYmVkZGVkIGluICpydGVfcmVn ZXhfb3BzKiBzdHJ1Y3R1cmUuDQo+ID4NCj4gPiBSdWxlOiBBIHBhdHRlcm4gbWF0Y2hpbmcgcnVs ZSBleHByZXNzZWQgaW4gUENSRSBSZWdFeCBzeW50YXggYWxvbmcgd2l0aA0KPiA+IE1hdGNoIElE IGFuZCBHcm91cCBJRCB0byBpZGVudGlmeSB0aGUgcnVsZSB1cG9uIHRoZSBtYXRjaC4NCj4gPg0K PiA+IFJ1bGUgZGF0YWJhc2U6IFRoZSBSZWdFeCBkZXZpY2UgYWNjZXB0cyByZWd1bGFyIGV4cHJl c3Npb25zIGFuZCBjb252ZXJ0cw0KPiA+IHRoZW0gaW50byBhIGNvbXBpbGVkIHJ1bGUgZGF0YWJh c2UgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNjYW4gZGF0YS4NCj4gPiBDb21waWxhdGlvbiBh bGxvd3MgdGhlIGRldmljZSB0byBhbmFseXplIHRoZSBnaXZlbiBwYXR0ZXJuKHMpIGFuZA0KPiA+ IHByZS1kZXRlcm1pbmUgaG93IHRvIHNjYW4gZm9yIHRoZXNlIHBhdHRlcm5zIGluIGFuIG9wdGlt aXplZCBmYXNoaW9uIHRoYXQNCj4gPiB3b3VsZCBiZSBmYXIgdG9vIGV4cGVuc2l2ZSB0byBjb21w dXRlIGF0IHJ1bi10aW1lLiBBIHJ1bGUgZGF0YWJhc2UNCj4gPiBjb250YWlucyBhIHNldCBvZiBy dWxlcyB0aGF0IGNvbXBpbGVkIGluIGRldmljZSBzcGVjaWZpYyBiaW5hcnkgZm9ybS4NCj4gPg0K PiA+IE1hdGNoIElEIG9yIFJ1bGUgSUQ6IEEgdW5pcXVlIGlkZW50aWZpZXIgcHJvdmlkZWQgYXQg dGhlIHRpbWUgb2YgcnVsZQ0KPiA+IGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRl bnRpZnkgdGhlIHJ1bGUgdXBvbiBtYXRjaC4NCj4gPg0KPiA+IEdyb3VwIElEOiBHcm91cCBvZiBy dWxlcyBjYW4gYmUgZ3JvdXBlZCB1bmRlciBvbmUgZ3JvdXAgSUQgdG8gZW5hYmxlDQo+ID4gcnVs ZSBpc29sYXRpb24gYW5kIGVmZmVjdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBBIHVuaXF1ZSBncm91 cCBpZGVudGlmaWVyDQo+ID4gcHJvdmlkZWQgYXQgdGhlIHRpbWUgb2YgcnVsZSBjcmVhdGlvbiBm b3IgdGhlIGFwcGxpY2F0aW9uIHRvIGlkZW50aWZ5DQo+ID4gdGhlIHJ1bGUgdXBvbiBtYXRjaC4N Cj4gPg0KPiA+IFNjYW46IEEgcGF0dGVybiBtYXRjaGluZyByZXF1ZXN0IHRocm91Z2ggKmVucXVl dWUqIEFQSS4NCj4gPg0KPiA+IEl0IG1heSBwb3NzaWJsZSB0aGF0IGEgZ2l2ZW4gUmVnRXggZGV2 aWNlIG1heSBub3Qgc3VwcG9ydCBhbGwgdGhlDQo+ID4gZmVhdHVyZXMNCj4gPiBvZiBQQ1JFLiBU aGUgYXBwbGljYXRpb24gbWF5IHByb2JlIHVuc3VwcG9ydGVkIGZlYXR1cmVzIHRocm91Z2gNCj4g PiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnBjcmVfdW5zdXBfZmxhZ3MNCj4gPg0KPiA+IEJ5 IGRlZmF1bHQsIGFsbCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBSZWdFeCBEZXZpY2UgQVBJIGV4cG9y dGVkIGJ5IGEgUE1EDQo+ID4gYXJlIGxvY2stZnJlZSBmdW5jdGlvbnMgd2hpY2ggYXNzdW1lIHRv IG5vdCBiZSBpbnZva2VkIGluIHBhcmFsbGVsIG9uDQo+ID4gZGlmZmVyZW50IGxvZ2ljYWwgY29y ZXMgdG8gd29yayBvbiB0aGUgc2FtZSB0YXJnZXQgb2JqZWN0LiBGb3IgaW5zdGFuY2UsDQo+ID4g dGhlIGRlcXVldWUgZnVuY3Rpb24gb2YgYSBQTUQgY2Fubm90IGJlIGludm9rZWQgaW4gcGFyYWxs ZWwgb24gdHdvIGxvZ2ljYWwNCj4gPiBjb3JlcyB0byBvcGVyYXRlcyBvbiBzYW1lIFJlZ0V4IHF1 ZXVlIHBhaXIuIE9mIGNvdXJzZSwgdGhpcyBmdW5jdGlvbg0KPiA+IGNhbiBiZSBpbnZva2VkIGlu IHBhcmFsbGVsIGJ5IGRpZmZlcmVudCBsb2dpY2FsIGNvcmUgb24gZGlmZmVyZW50IHF1ZXVlDQo+ ID4gcGFpci4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1cHBlciBsZXZlbCBhcHBs aWNhdGlvbiB0bw0KPiA+IGVuZm9yY2UgdGhpcyBydWxlLg0KPiA+DQo+ID4gSW4gYWxsIGZ1bmN0 aW9ucyBvZiB0aGUgUmVnRXggQVBJLCB0aGUgUmVnRXggZGV2aWNlIGlzDQo+ID4gZGVzaWduYXRl ZCBieSBhbiBpbnRlZ2VyID49IDAgbmFtZWQgdGhlIGRldmljZSBpZGVudGlmaWVyICpkZXZfaWQq DQo+ID4NCj4gPiBBdCB0aGUgUmVnRXggZHJpdmVyIGxldmVsLCBSZWdFeCBkZXZpY2VzIGFyZSBy ZXByZXNlbnRlZCBieSBhIGdlbmVyaWMNCj4gPiBkYXRhIHN0cnVjdHVyZSBvZiB0eXBlICpydGVf cmVnZXhkZXYqLg0KPiA+IFJlZ0V4IGRldmljZXMgYXJlIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQg ZHVyaW5nIHRoZSBQQ0kvU29DIGRldmljZQ0KPiA+IHByb2JpbmcgcGhhc2UgcGVyZm9ybWVkIGF0 IEVBTCBpbml0aWFsaXphdGlvbiB0aW1lLg0KPiA+IFdoZW4gYSBSZWdFeCBkZXZpY2UgaXMgYmVp bmcgcHJvYmVkLCBhICpydGVfcmVnZXhkZXYqIHN0cnVjdHVyZSBhbmQNCj4gPiBhIG5ldyBkZXZp Y2UgaWRlbnRpZmllciBhcmUgYWxsb2NhdGVkIGZvciB0aGF0IGRldmljZS4gVGhlbiwgdGhlDQo+ ID4gcmVnZXhkZXZfaW5pdCgpIGZ1bmN0aW9uIHN1cHBsaWVkIGJ5IHRoZSBSZWdFeCBkcml2ZXIg bWF0Y2hpbmcgdGhlDQo+ID4gcHJvYmVkIGRldmljZSBpcyBpbnZva2VkIHRvIHByb3Blcmx5IGlu aXRpYWxpemUgdGhlIGRldmljZS4NCj4gPg0KPiA+IFRoZSByb2xlIG9mIHRoZSBkZXZpY2UgaW5p dCBmdW5jdGlvbiBjb25zaXN0cyBvZiByZXNldHRpbmcgdGhlIGhhcmR3YXJlDQo+ID4gb3Igc29m dHdhcmUgUmVnRXggZHJpdmVyIGltcGxlbWVudGF0aW9ucy4NCj4gPg0KPiA+IElmIHRoZSBkZXZp Y2UgaW5pdCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlIGNvcnJlc3BvbmRlbmNlIGJldHdl ZW4NCj4gPiB0aGUgZGV2aWNlIGlkZW50aWZpZXIgYXNzaWduZWQgdG8gdGhlIG5ldyBkZXZpY2Ug YW5kIGl0cyBhc3NvY2lhdGVkDQo+ID4gKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGlzIGVmZmVj dGl2ZWx5IHJlZ2lzdGVyZWQuDQo+ID4gT3RoZXJ3aXNlLCBib3RoIHRoZSAqcnRlX3JlZ2V4ZGV2 KiBzdHJ1Y3R1cmUgYW5kIHRoZSBkZXZpY2UgaWRlbnRpZmllcg0KPiA+IGFyZSBmcmVlZC4NCj4g Pg0KPiA+IFRoZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIFJlZ0V4IEFQ SSB0byBzZXR1cCBhIGRldmljZQ0KPiA+IGRlc2lnbmF0ZWQgYnkgaXRzIGRldmljZSBpZGVudGlm aWVyIG11c3QgYmUgaW52b2tlZCBpbiB0aGUgZm9sbG93aW5nDQo+ID4gb3JkZXI6DQo+ID4gICAg IC0gcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpDQo+ID4gICAgIC0gcnRlX3JlZ2V4ZGV2X3F1ZXVl X3BhaXJfc2V0dXAoKQ0KPiA+ICAgICAtIHJ0ZV9yZWdleGRldl9zdGFydCgpDQo+ID4NCj4gPiBU aGVuLCB0aGUgYXBwbGljYXRpb24gY2FuIGludm9rZSwgaW4gYW55IG9yZGVyLCB0aGUgZnVuY3Rp b25zDQo+ID4gZXhwb3J0ZWQgYnkgdGhlIFJlZ0V4IEFQSSB0byBlbnF1ZXVlIHBhdHRlcm4gbWF0 Y2hpbmcgam9iLCBkZXF1ZXVlDQo+ID4gcGF0dGVybiBtYXRjaGluZyByZXNwb25zZSwgZ2V0IHRo ZSBzdGF0cywgdXBkYXRlIHRoZSBydWxlIGRhdGFiYXNlLA0KPiA+IGdldC9zZXQgZGV2aWNlIGF0 dHJpYnV0ZXMgYW5kIHNvIG9uDQo+ID4NCj4gPiBJZiB0aGUgYXBwbGljYXRpb24gd2FudHMgdG8g Y2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIChpLmUuIGNhbGwNCj4gPiBydGVfcmVnZXhkZXZfY29u ZmlndXJlKCkgb3IgcnRlX3JlZ2V4ZGV2X3F1ZXVlX3BhaXJfc2V0dXAoKSksIGl0IG11c3QNCj4g PiBjYWxsIHJ0ZV9yZWdleGRldl9zdG9wKCkgZmlyc3QgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCB0 aGVuIGRvIHRoZQ0KPiA+IHJlY29uZmlndXJhdGlvbiBiZWZvcmUgY2FsbGluZyBydGVfcmVnZXhk ZXZfc3RhcnQoKSBhZ2Fpbi4gVGhlIGVucXVldWUgYW5kDQo+ID4gZGVxdWV1ZSBmdW5jdGlvbnMg c2hvdWxkIG5vdCBiZSBpbnZva2VkIHdoZW4gdGhlIGRldmljZSBpcyBzdG9wcGVkLg0KPiA+DQo+ ID4gRmluYWxseSwgYW4gYXBwbGljYXRpb24gY2FuIGNsb3NlIGEgUmVnRXggZGV2aWNlIGJ5IGlu dm9raW5nIHRoZQ0KPiA+IHJ0ZV9yZWdleGRldl9jbG9zZSgpIGZ1bmN0aW9uLg0KPiA+DQo+ID4g RWFjaCBmdW5jdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gUmVnRXggQVBJIGludm9rZXMgYSBzcGVj aWZpYyBmdW5jdGlvbg0KPiA+IG9mIHRoZSBQTUQgdGhhdCBjb250cm9scyB0aGUgdGFyZ2V0IGRl dmljZSBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UNCj4gPiBpZGVudGlmaWVyLg0KPiA+DQo+ID4g Rm9yIHRoaXMgcHVycG9zZSwgYWxsIGRldmljZS1zcGVjaWZpYyBmdW5jdGlvbnMgb2YgYSBSZWdF eCBkcml2ZXIgYXJlDQo+ID4gc3VwcGxpZWQgdGhyb3VnaCBhIHNldCBvZiBwb2ludGVycyBjb250 YWluZWQgaW4gYSBnZW5lcmljIHN0cnVjdHVyZSBvZg0KPiA+IHR5cGUgKnJlZ2V4ZGV2X29wcyou DQo+ID4gVGhlIGFkZHJlc3Mgb2YgdGhlICpyZWdleGRldl9vcHMqIHN0cnVjdHVyZSBpcyBzdG9y ZWQgaW4gdGhlDQo+ID4gKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGJ5IHRoZSBkZXZpY2UgaW5p dCBmdW5jdGlvbiBvZiB0aGUgUmVnRXggZHJpdmVyLA0KPiA+IHdoaWNoIGlzIGludm9rZWQgZHVy aW5nIHRoZSBQQ0kvU29DIGRldmljZSBwcm9iaW5nIHBoYXNlLCBhcyBleHBsYWluZWQNCj4gPiBl YXJsaWVyLg0KPiA+DQo+ID4gSW4gb3RoZXIgd29yZHMsIGVhY2ggZnVuY3Rpb24gb2YgdGhlIFJl Z0V4IEFQSSBzaW1wbHkgcmV0cmlldmVzIHRoZQ0KPiA+ICpydGVfcmVnZXhkZXYqIHN0cnVjdHVy ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBpZGVudGlmaWVyIGFuZA0KPiA+IHBlcmZvcm1z IGFuIGluZGlyZWN0IGludm9jYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgZHJpdmVyIGZ1bmN0 aW9uDQo+ID4gc3VwcGxpZWQgaW4gdGhlICpyZWdleGRldl9vcHMqIHN0cnVjdHVyZSBvZiB0aGUg KnJ0ZV9yZWdleGRldioNCj4gPiBzdHJ1Y3R1cmUuDQo+ID4NCj4gPiBGb3IgcGVyZm9ybWFuY2Ug cmVhc29ucywgdGhlIGFkZHJlc3Mgb2YgdGhlIGZhc3QtcGF0aCBmdW5jdGlvbnMgb2YgdGhlDQo+ ID4gUmVnRXggZHJpdmVyIGlzIG5vdCBjb250YWluZWQgaW4gdGhlICpyZWdleGRldl9vcHMqIHN0 cnVjdHVyZS4NCj4gPiBJbnN0ZWFkLCB0aGV5IGFyZSBkaXJlY3RseSBzdG9yZWQgYXQgdGhlIGJl Z2lubmluZyBvZiB0aGUgKnJ0ZV9yZWdleGRldioNCj4gPiBzdHJ1Y3R1cmUgdG8gYXZvaWQgYW4g ZXh0cmEgaW5kaXJlY3QgbWVtb3J5IGFjY2VzcyBkdXJpbmcgdGhlaXINCj4gPiBpbnZvY2F0aW9u Lg0KPiA+DQo+ID4gUlRFIFJlZ0V4IGRldmljZSBkcml2ZXJzIGRvIG5vdCB1c2UgaW50ZXJydXB0 cyBmb3IgZW5xdWV1ZSBvciBkZXF1ZXVlDQo+ID4gb3BlcmF0aW9uLiBJbnN0ZWFkLCBSZWdFeCBk cml2ZXJzIGV4cG9ydCBQb2xsLU1vZGUgZW5xdWV1ZSBhbmQgZGVxdWV1ZQ0KPiA+IGZ1bmN0aW9u cyB0byBhcHBsaWNhdGlvbnMuDQo+ID4NCj4gPiBUaGUgKmVucXVldWUqIG9wZXJhdGlvbiBzdWJt aXRzIGEgYnVyc3Qgb2YgUmVnRXggcGF0dGVybiBtYXRjaGluZw0KPiA+IHJlcXVlc3QgdG8gdGhl IFJlZ0V4IGRldmljZSBhbmQgdGhlICpkZXF1ZXVlKiBvcGVyYXRpb24gZ2V0cyBhIGJ1cnN0IG9m DQo+ID4gcGF0dGVybiBtYXRjaGluZyByZXNwb25zZSBmb3IgdGhlIG9uZXMgc3VibWl0dGVkIHRo cm91Z2ggKmVucXVldWUqDQo+ID4gb3BlcmF0aW9uLg0KPiA+DQo+ID4gVHlwaWNhbCBhcHBsaWNh dGlvbiB1dGlsaXNhdGlvbiBvZiB0aGUgUmVnRXggZGV2aWNlIEFQSSB3aWxsIGZvbGxvdyB0aGUN Cj4gPiBmb2xsb3dpbmcgcHJvZ3JhbW1pbmcgZmxvdy4NCj4gPg0KPiA+IC0gcnRlX3JlZ2V4ZGV2 X2NvbmZpZ3VyZSgpDQo+ID4gLSBydGVfcmVnZXhkZXZfcXVldWVfcGFpcl9zZXR1cCgpDQo+ID4g LSBydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUoKSBOZWVkcyB0byBpbnZva2UgaWYgcHJlY29t cGlsZWQgcnVsZQ0KPiA+ICAgZGF0YWJhc2Ugbm90DQo+ID4gICBwcm92aWRlZCBpbiBydGVfcmVn ZXhkZXZfY29uZmlnOjpydWxlX2RiIGZvciBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkNCj4gPiAg IGFuZC9vciBhcHBsaWNhdGlvbiBuZWVkcyB0byB1cGRhdGUgcnVsZSBkYXRhYmFzZS4NCj4gPiAt IHJ0ZV9yZWdleGRldl9ydWxlX2RiX2NvbXBpbGVfYWN0aXZhdGUoKSBOZWVkcyB0byBpbnZva2Ug aWYNCj4gPiAgIHJ0ZV9yZWdleGRldl9ydWxlX2RiX3VwZGF0ZSBmdW5jdGlvbiB3YXMgdXNlZC4N Cj4gPiAtIENyZWF0ZSBvciByZXVzZSBleGl0aW5nIG1lbXBvb2wgZm9yICpydGVfcmVnZXhfb3Bz KiBvYmplY3RzLg0KPiA+IC0gcnRlX3JlZ2V4ZGV2X3N0YXJ0KCkNCj4gPiAtIHJ0ZV9yZWdleGRl dl9lbnF1ZXVlX2J1cnN0KCkNCj4gPiAtIHJ0ZV9yZWdleGRldl9kZXF1ZXVlX2J1cnN0KCkNCj4g Pg0KPiA+IFNpZ25lZC1vZmYtYnk6IEplcmluIEphY29iIDxqZXJpbmpAbWFydmVsbC5jb20+DQo+ ID4gU2lnbmVkLW9mZi1ieTogUGF2YW4gTmlraGlsZXNoIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5j b20+DQo+ID4gU2lnbmVkLW9mZi1ieTogT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29tPg0KPiA+ IC0tLQ0KPiA+IHYzOg0KPiA+ICogTm8gY2hhbmdlcy4NCj4gPg0KPiA+IHYyOg0KPiA+ICogTW92 ZSB1bnVzZWQgZGVmaW5lIHRvIG90aGVyIHBhdGNoLg0KPiA+IC0tLQ0KPiA+ICBjb25maWcvY29t bW9uX2Jhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKw0KPiA+ICBkb2MvYXBp L2RveHktYXBpLWluZGV4Lm1kICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiA+ICBkb2Mv YXBpL2RveHktYXBpLmNvbmYuaW4gICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiA+ICBk b2MvZ3VpZGVzL3Byb2dfZ3VpZGUvaW5kZXgucnN0ICAgICAgICAgICAgICB8ICAgIDEgKw0KPiA+ ICBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcmVnZXhkZXZfbGliLnJzdCAgICAgICB8ICAxNzcgKysr Kw0KPiA+ICBsaWIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDIgKw0KPiA+ICBsaWIvbGlicnRlX3JlZ2V4ZGV2L01ha2VmaWxlICAgICAgICAgICAgICAgICB8 ICAgMzEgKw0KPiA+ICBsaWIvbGlicnRlX3JlZ2V4ZGV2L21lc29uLmJ1aWxkICAgICAgICAgICAg ICB8ICAgIDcgKw0KPiA+ICBsaWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5jICAgICAg ICAgICB8ICAgIDYgKw0KPiA+ICBsaWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5oICAg ICAgICAgICB8IDE0NzMNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBsaWIv bGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldl92ZXJzaW9uLm1hcCB8ICAgMjYgKw0KPiA+ICBs aWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0NCj4g PiAgMTIgZmlsZXMgY2hhbmdlZCwgMTczMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcmVnZXhkZXZfbGli LnJzdA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9NYWtlZmls ZQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9tZXNvbi5idWls ZA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhk ZXYuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVn ZXhkZXYuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVf cmVnZXhkZXZfdmVyc2lvbi5tYXANCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9jb25maWcvY29tbW9u X2Jhc2UgYi9jb25maWcvY29tbW9uX2Jhc2UNCj4gPiBpbmRleCAxNDAwMGJhLi4yN2ZjYWIxIDEw MDY0NA0KPiA+IC0tLSBhL2NvbmZpZy9jb21tb25fYmFzZQ0KPiA+ICsrKyBiL2NvbmZpZy9jb21t b25fYmFzZQ0KPiA+IEBAIC04MzIsNiArODMyLDExIEBADQo+ID4gQ09ORklHX1JURV9MSUJSVEVf UE1EX09DVEVPTlRYMl9FUF9SQVdERVY9eQ0KPiA+ICBDT05GSUdfUlRFX0xJQlJURV9QTURfTlRC X1JBV0RFVj15DQo+ID4NCj4gPiAgIw0KPiA+ICsjIENvbXBpbGUgcmVnZXggZGV2aWNlIHN1cHBv cnQNCj4gPiArIw0KPiA+ICtDT05GSUdfUlRFX0xJQlJURV9SRUdFWERFVj15DQo+ID4gKw0KPiA+ ICsjDQo+ID4gICMgQ29tcGlsZSBsaWJydGVfcmluZw0KPiA+ICAjDQo+ID4gIENPTkZJR19SVEVf TElCUlRFX1JJTkc9eQ0KPiA+IEBAIC0xMTI0LDMgKzExMjksNCBAQCBDT05GSUdfUlRFX0FQUF9D UllQVE9fUEVSRj15DQo+ID4gICMgQ29tcGlsZSB0aGUgZXZlbnRkZXYgYXBwbGljYXRpb24NCj4g PiAgIw0KPiA+ICBDT05GSUdfUlRFX0FQUF9FVkVOVERFVj15DQo+ID4gKw0KPiA+IGRpZmYgLS1n aXQgYS9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kIGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5t ZA0KPiA+IGluZGV4IDg0NWE1MzQuLjcwMjU5MWIgMTAwNjQ0DQo+ID4gLS0tIGEvZG9jL2FwaS9k b3h5LWFwaS1pbmRleC5tZA0KPiA+ICsrKyBiL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4g PiBAQCAtMjYsNiArMjYsNyBAQCBUaGUgcHVibGljIEFQSSBoZWFkZXJzIGFyZSBncm91cGVkIGJ5 IHRvcGljczoNCj4gPiAgICBbZXZlbnRfdGltZXJfYWRhcHRlcl0gICAgKEByZWYgcnRlX2V2ZW50 X3RpbWVyX2FkYXB0ZXIuaCksDQo+ID4gICAgW2V2ZW50X2NyeXB0b19hZGFwdGVyXSAgIChAcmVm IHJ0ZV9ldmVudF9jcnlwdG9fYWRhcHRlci5oKSwNCj4gPiAgICBbcmF3ZGV2XSAgICAgICAgICAg ICAoQHJlZiBydGVfcmF3ZGV2LmgpLA0KPiA+ICsgIFtyZWdleGRldl0gICAgICAgICAgIChAcmVm IHJ0ZV9yZWdleGRldi5oKSwNCj4gPiAgICBbbWV0cmljc10gICAgICAgICAgICAoQHJlZiBydGVf bWV0cmljcy5oKSwNCj4gPiAgICBbYml0cmF0ZV0gICAgICAgICAgICAoQHJlZiBydGVfYml0cmF0 ZS5oKSwNCj4gPiAgICBbbGF0ZW5jeV0gICAgICAgICAgICAoQHJlZiBydGVfbGF0ZW5jeXN0YXRz LmgpLA0KPiA+IGRpZmYgLS1naXQgYS9kb2MvYXBpL2RveHktYXBpLmNvbmYuaW4gYi9kb2MvYXBp L2RveHktYXBpLmNvbmYuaW4NCj4gPiBpbmRleCA2NWU4MTQ2Li44NDYyMWJhIDEwMDY0NA0KPiA+ IC0tLSBhL2RvYy9hcGkvZG94eS1hcGkuY29uZi5pbg0KPiA+ICsrKyBiL2RvYy9hcGkvZG94eS1h cGkuY29uZi5pbg0KPiA+IEBAIC01OCw2ICs1OCw3IEBAIElOUFVUICAgICAgICAgICAgICAgICAg ID0gQFRPUERJUkAvZG9jL2FwaS9kb3h5LWFwaS0NCj4gPiBpbmRleC5tZCBcDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL2xpYnJ0ZV9yY3UgXA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJydGVfcmVvcmRlciBcDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL2xpYnJ0ZV9yaWIgXA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJydGVfcmVnZXhkZXYg XA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9saWJydGVfcmlu ZyBcDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL2xpYnJ0ZV9z Y2hlZCBcDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL2xpYnJ0 ZV9zZWN1cml0eSBcDQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9pbmRl eC5yc3QNCj4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvaW5kZXgucnN0DQo+ID4gaW5kZXggMWQw Y2Q0OS4uZmE4NTM2YyAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvaW5k ZXgucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2luZGV4LnJzdA0KPiA+IEBA IC03MSwzICs3MSw0IEBAIFByb2dyYW1tZXIncyBHdWlkZQ0KPiA+ICAgICAgbHRvDQo+ID4gICAg ICBwcm9maWxlX2FwcA0KPiA+ICAgICAgZ2xvc3NhcnkNCj4gPiArICAgIHJlZ2V4ZGV2X2xpYg0K PiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcmVnZXhkZXZfbGliLnJzdA0K PiA+IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3JlZ2V4ZGV2X2xpYi5yc3QNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjFlY2JmMWMNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3JlZ2V4ZGV2X2xpYi5yc3QNCj4g PiBAQCAtMCwwICsxLDE3NyBAQA0KPiA+ICsuLiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0zLUNsYXVzZQ0KPiA+ICsgICAgQ29weXJpZ2h0KGMpIDIwMjAgTWVsbGFub3ggQ29ycG9yYXRp b24uDQo+ID4gKw0KPiA+ICtSZWdFeCBEZXZpY2UgTGlicmFyeQ0KPiA+ICs9PT09PT09PT09PT09 PT09PT09PT0NCj4gPiArDQo+ID4gK1RoZSBSZWdFeCBsaWJyYXJ5IHByb3ZpZGVzIGEgUmVnRXgg ZGV2aWNlIGZyYW1ld29yayBmb3IgbWFuYWdlbWVudCBhbmQNCj4gPiArcHJvdmlzaW9uaW5nIG9m IGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBSZWdFeCBwb2xsIG1vZGUgZHJpdmVycywgZGVmaW5pbmcN Cj4gPiBnZW5lcmljDQo+ID4gK0FQSXMgd2hpY2ggc3VwcG9ydCBhIG51bWJlciBvZiBkaWZmZXJl bnQgUmVnRXggb3BlcmF0aW9ucy4NCj4gPiArDQo+ID4gKw0KPiA+ICtEZXNpZ24gUHJpbmNpcGxl cw0KPiA+ICstLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICsNCj4gPiArVGhlIFJlZ0V4IGxpYnJhcnkg Zm9sbG93cyB0aGUgc2FtZSBiYXNpYyBwcmluY2lwbGVzIGFzIHRob3NlIHVzZWQgaW4gRFBESydz DQo+ID4gK0V0aGVybmV0IERldmljZSBmcmFtZXdvcmsgYW5kIHRoZSBDcnlwdG8gZnJhbWV3b3Jr LiBUaGUgUmVnRXgNCj4gZnJhbWV3b3JrDQo+ID4gcHJvdmlkZXMNCj4gPiArYSBnZW5lcmljIENy eXB0byBkZXZpY2UgZnJhbWV3b3JrIHdoaWNoIHN1cHBvcnRzIGJvdGggcGh5c2ljYWwgKGhhcmR3 YXJlKQ0KPiA+ICthbmQgdmlydHVhbCAoc29mdHdhcmUpIFJlZ0V4IGRldmljZXMgYXMgd2VsbCBh cyBhIGdlbmVyaWMgUmVnRXggQVBJIHdoaWNoDQo+ID4gYWxsb3dzDQo+ID4gK1JlZ0V4IGRldmlj ZXMgdG8gYmUgbWFuYWdlZCBhbmQgY29uZmlndXJlZCBhbmQgc3VwcG9ydHMgUmVnRXgNCj4gb3Bl cmF0aW9ucw0KPiA+IHRvIGJlDQo+ID4gK3Byb3Zpc2lvbmVkIG9uIFJlZ0V4IHBvbGwgbW9kZSBk cml2ZXIuDQo+ID4gKw0KPiA+ICsNCj4gPiArRGV2aWNlIE1hbmFnZW1lbnQNCj4gPiArLS0tLS0t LS0tLS0tLS0tLS0NCj4gPiArDQo+ID4gK0RldmljZSBDcmVhdGlvbg0KPiA+ICt+fn5+fn5+fn5+ fn5+fn4NCj4gPiArDQo+ID4gK1BoeXNpY2FsIFJlZ0V4IGRldmljZXMgYXJlIGRpc2NvdmVyZWQg ZHVyaW5nIHRoZSBQQ0kgcHJvYmUvZW51bWVyYXRpb24gb2YNCj4gPiB0aGUNCj4gPiArRUFMIGZ1 bmN0aW9uIHdoaWNoIGlzIGV4ZWN1dGVkIGF0IERQREsgaW5pdGlhbGl6YXRpb24sIGJhc2VkIG9u DQo+ID4gK3RoZWlyIFBDSSBkZXZpY2UgaWRlbnRpZmllciwgZWFjaCB1bmlxdWUgUENJIEJERiAo YnVzL2JyaWRnZSwgZGV2aWNlLA0KPiA+ICtmdW5jdGlvbikuIFNwZWNpZmljIHBoeXNpY2FsIFJl RXggZGV2aWNlcywgbGlrZSBvdGhlciBwaHlzaWNhbCBkZXZpY2VzIGluIERQREsNCj4gPiArY2Fu IGJlIHdoaXRlLWxpc3RlZCBvciBibGFjay1saXN0ZWQgdXNpbmcgdGhlIEVBTCBjb21tYW5kIGxp bmUgb3B0aW9ucy4NCj4gPiArDQo+ID4gKw0KPiA+ICtEZXZpY2UgSWRlbnRpZmljYXRpb24NCj4g PiArfn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4gKw0KPiA+ICtFYWNoIGRldmljZSwgd2hldGhl ciB2aXJ0dWFsIG9yIHBoeXNpY2FsIGlzIHVuaXF1ZWx5IGRlc2lnbmF0ZWQgYnkgdHdvDQo+ID4g K2lkZW50aWZpZXJzOg0KPiA+ICsNCj4gPiArLSBBIHVuaXF1ZSBkZXZpY2UgaW5kZXggdXNlZCB0 byBkZXNpZ25hdGUgdGhlIFJlZ0V4IGRldmljZSBpbiBhbGwgZnVuY3Rpb25zDQo+ID4gKyAgZXhw b3J0ZWQgYnkgdGhlIHJlZ2V4ZGV2IEFQSS4NCj4gPiArDQo+ID4gKy0gQSBkZXZpY2UgbmFtZSB1 c2VkIHRvIGRlc2lnbmF0ZSB0aGUgUmVnRXggZGV2aWNlIGluIGNvbnNvbGUgbWVzc2FnZXMsDQo+ IGZvcg0KPiA+ICsgIGFkbWluaXN0cmF0aW9uIG9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4NCj4gPiAr DQo+ID4gKw0KPiA+ICtEZXZpY2UgQ29uZmlndXJhdGlvbg0KPiA+ICt+fn5+fn5+fn5+fn5+fn5+ fn5+fg0KPiA+ICsNCj4gPiArVGhlIGNvbmZpZ3VyYXRpb24gb2YgZWFjaCBSZWdFeCBkZXZpY2Ug aW5jbHVkZXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zOg0KPiA+ICsNCj4gPiArLSBBbGxvY2F0 aW9uIG9mIHJlc291cmNlcywgaW5jbHVkaW5nIGhhcmR3YXJlIHJlc291cmNlcyBpZiBhIHBoeXNp Y2FsIGRldmljZS4NCj4gPiArLSBSZXNldHRpbmcgdGhlIGRldmljZSBpbnRvIGEgd2VsbC1rbm93 biBkZWZhdWx0IHN0YXRlLg0KPiA+ICstIEluaXRpYWxpemF0aW9uIG9mIHN0YXRpc3RpY3MgY291 bnRlcnMuDQo+ID4gKw0KPiA+ICtUaGUgcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSBBUEkgaXMgdXNl ZCB0byBjb25maWd1cmUgYSBSZWdFeCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsuLiBjb2RlLWJsb2Nr OjogYw0KPiA+ICsNCj4gPiArICAgaW50IHJ0ZV9yZWdleGRldl9jb25maWd1cmUodWludDhfdCBk ZXZfaWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBy dGVfcmVnZXhkZXZfY29uZmlnICpjZmcpOw0KPiA+ICsNCj4gPiArVGhlIGBgcnRlX3JlZ2V4ZGV2 X2NvbmZpZ2BgIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHBhc3MgdGhlIGNvbmZpZ3VyYXRpb24NCj4g PiArcGFyYW1ldGVycyBmb3IgdGhlIFJlZ0V4IGRldmljZSBmb3IgZXhhbXBsZSAgbnVtYmVyIG9m IHF1ZXVlIHBhaXJzLA0KPiA+IG51bWJlciBvZg0KPiA+ICtncm91cHMsIG1heCBudW1iZXIgb2Yg bWF0Y2hlcyBhbmQgc28gb24uDQo+ID4gKw0KPiA+ICsuLiBjb2RlLWJsb2NrOjogYw0KPiA+ICsN Cj4gPiArICAgc3RydWN0IHJ0ZV9yZWdleGRldl9jb25maWcgew0KPiA+ICsgICAgICAgIHVpbnQx Nl90IG5iX21heF9tYXRjaGVzOw0KPiA+ICsgICAgICAgIC8qKjwgTWF4aW11bSBtYXRjaGVzIHBl ciBzY2FuIGNvbmZpZ3VyZWQgb24gdGhpcyBkZXZpY2UuDQo+ID4gKyAgICAgICAgICogVGhpcyB2 YWx1ZSBjYW5ub3QgZXhjZWVkIHRoZSAqbWF4X21hdGNoZXMqDQo+ID4gKyAgICAgICAgICogd2hp Y2ggcHJldmlvdXNseSBwcm92aWRlZCBpbiBydGVfcmVnZXhkZXZfaW5mb19nZXQoKS4NCj4gPiAr ICAgICAgICAgKiBUaGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlLCB2YWx1ZSAx IHVzZWQuDQo+ID4gKyAgICAgICAgICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1h eF9tYXRjaGVzDQo+ID4gKyAgICAgICAgICovDQo+ID4gKyAgICAgICAgdWludDE2X3QgbmJfcXVl dWVfcGFpcnM7DQo+ID4gKyAgICAgICAgLyoqPCBOdW1iZXIgb2YgUmVnRXggcXVldWUgcGFpcnMg dG8gY29uZmlndXJlIG9uIHRoaXMgZGV2aWNlLg0KPiA+ICsgICAgICAgICAqIFRoaXMgdmFsdWUg Y2Fubm90IGV4Y2VlZCB0aGUgKm1heF9xdWV1ZV9wYWlycyogd2hpY2ggcHJldmlvdXNseQ0KPiA+ ICsgICAgICAgICAqIHByb3ZpZGVkIGluIHJ0ZV9yZWdleGRldl9pbmZvX2dldCgpLg0KPiA+ICsg ICAgICAgICAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjptYXhfcXVldWVfcGFpcnMN Cj4gPiArICAgICAgICAgKi8NCj4gPiArICAgICAgICB1aW50MzJfdCBuYl9ydWxlc19wZXJfZ3Jv dXA7DQo+ID4gKyAgICAgICAgLyoqPCBOdW1iZXIgb2YgcnVsZXMgcGVyIGdyb3VwIHRvIGNvbmZp Z3VyZSBvbiB0aGlzIGRldmljZS4NCj4gPiArICAgICAgICAgKiBUaGlzIHZhbHVlIGNhbm5vdCBl eGNlZWQgdGhlICptYXhfcnVsZXNfcGVyX2dyb3VwKg0KPiA+ICsgICAgICAgICAqIHdoaWNoIHBy ZXZpb3VzbHkgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0KCkuDQo+ID4gKyAgICAg ICAgICogVGhlIHZhbHVlIDAgaXMgYWxsb3dlZCwgaW4gd2hpY2ggY2FzZSwNCj4gPiArICAgICAg ICAgKiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1heF9ydWxlc19wZXJfZ3JvdXAgdXNlZC4N Cj4gPiArICAgICAgICAgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X3J1bGVz X3Blcl9ncm91cA0KPiA+ICsgICAgICAgICAqLw0KPiA+ICsgICAgICAgIHVpbnQxNl90IG5iX2dy b3VwczsNCj4gPiArICAgICAgICAvKio8IE51bWJlciBvZiBncm91cHMgdG8gY29uZmlndXJlIG9u IHRoaXMgZGV2aWNlLg0KPiA+ICsgICAgICAgICAqIFRoaXMgdmFsdWUgY2Fubm90IGV4Y2VlZCB0 aGUgKm1heF9ncm91cHMqDQo+ID4gKyAgICAgICAgICogd2hpY2ggcHJldmlvdXNseSBwcm92aWRl ZCBpbiBydGVfcmVnZXhkZXZfaW5mb19nZXQoKS4NCj4gPiArICAgICAgICAgKiBAc2VlIHN0cnVj dCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X2dyb3Vwcw0KPiA+ICsgICAgICAgICAqLw0KPiA+ICsg ICAgICAgIGNvbnN0IGNoYXIgKnJ1bGVfZGI7DQo+ID4gKyAgICAgICAgLyoqPCBJbXBvcnQgaW5p dGlhbCBzZXQgb2YgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZSBvbiB0aGlzIGRldmljZS4NCj4gPiAr ICAgICAgICAgKiBUaGUgdmFsdWUgTlVMTCBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlLCB0aGUg ZGV2aWNlIHdpbGwgbm90DQo+ID4gKyAgICAgICAgICogYmUgY29uZmlndXJlZCBwcmVidWlsdCBy dWxlIGRhdGFiYXNlLiBBcHBsaWNhdGlvbiBtYXkgdXNlDQo+ID4gKyAgICAgICAgICogcnRlX3Jl Z2V4ZGV2X3J1bGVfZGJfdXBkYXRlKCkgb3IgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfaW1wb3J0KCkN Cj4gQVBJDQo+ID4gKyAgICAgICAgICogdG8gdXBkYXRlIG9yIGltcG9ydCBydWxlIGRhdGFiYXNl IGFmdGVyIHRoZQ0KPiA+ICsgICAgICAgICAqIHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKS4NCj4g PiArICAgICAgICAgKiBAc2VlIHJ0ZV9yZWdleGRldl9ydWxlX2RiX3VwZGF0ZSgpLA0KPiBydGVf cmVnZXhkZXZfcnVsZV9kYl9pbXBvcnQoKQ0KPiA+ICsgICAgICAgICAqLw0KPiA+ICsgICAgICAg IHVpbnQzMl90IHJ1bGVfZGJfbGVuOw0KPiA+ICsgICAgICAgIC8qKjwgTGVuZ3RoIG9mICpydWxl X2RiKiBidWZmZXIuICovDQo+ID4gKyAgICAgICAgdWludDMyX3QgZGV2X2NmZ19mbGFnczsNCj4g PiArICAgICAgICAvKio8IFJlZ0V4IGRldmljZSBjb25maWd1cmF0aW9uIGZsYWdzLCBTZWUgUlRF X1JFR0VYREVWX0NGR18qICAqLw0KPiA+ICsgICAgfTsNCj4gPiArDQo+ID4gKw0KPiA+ICtDb25m aWd1cmF0aW9uIG9mIFJ1bGVzIERhdGFiYXNlDQo+ID4gK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4NCj4gPiArDQo+ID4gK0VhY2ggUmVnZXggZGV2aWNlIHNob3VsZCBiZSBjb25maWd1 cmVkIHdpdGggdGhlIHJ1bGUgZGF0YWJhc2UuDQo+ID4gK1RoZXJlIGFyZSB0d28gbW9kZXMgb2Yg c2V0dGluZyB0aGUgcnVsZSBkYXRhYmFzZSwgb25saW5lIG9yIG9mZmxpbmUuDQo+ID4gK1RoZSBv bmxpbmUgbW9kZSBtZWFucywgdGhhdCB0aGUgcnVsZSBkYXRhYmFzZSBpbiBiZWluZyBjb21waWxl ZCBieSB0aGUNCj4gPiArUmVnRXggUE1EIHdoaWxlIGluIHRoZSBvZmZsaW5lIG1vZGUgdGhlIHJ1 bGUgZGF0YWJhc2UgaXMgY29tcGlsZWQgYnkNCj4gPiBleHRlcm5hbA0KPiA+ICtjb21waWxlciwg YW5kIGlzIGJlaW5nIGxvYWRlZCB0byB0aGUgUE1EIGFzIGEgYnVmZmVyLg0KPiA+ICtUaGUgY29u ZmlndXJhdGlvbiBtb2RlIGlzIGRlcGVuZGVkIG9uIHRoZSBQTUQgY2FwYWJpbGl0aWVzLg0KPiA+ ICsNCj4gPiArT25saW5lIHJ1bGUgY29uZmlndXJhdGlvbiBpcyBkb25lIHVzaW5nIHRoZSBmb2xs b3dpbmcgQVBJIGZ1bmN0aW9uczoNCj4gPiArYGBydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGVg YCB3aGljaCBhZGQgLyByZW1vdmUgcnVsZXMgZnJvbSB0aGUgcnVsZXMNCj4gPiArcHJlY29tcGxp ZWQgbGlzdCwgYW5kIGBgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0ZWBgDQo+ ID4gK3doaWNoIGNvbXBpbGUgdGhlIHJ1bGVzIGFuZCBsb2FkcyB0aGVtIHRvIHRoZSBSZWdFeCBI Vy4NCj4gPiArDQo+ID4gK09mZmxpbmUgcnVsZSBjb25maWd1cmF0aW9uIGNhbiBiZSBkb25lIGJ5 IGFkZGluZyBhIHBvaW50ZXIgdG8gdGhlIGNvbXBpbGVkDQo+ID4gK3J1bGUgZGF0YWJhc2UgaW4g dGhlIGNvbmZpZ3VyYXRpb24gc3RlcCwgb3IgYnkgdXNpbmcNCj4gPiArYGBydGVfcmVnZXhkZXZf cnVsZV9kYl9pbXBvcnRgYCBBUEkuDQo+ID4gKw0KPiA+ICsNCj4gPiArQ29uZmlndXJhdGlvbiBv ZiBRdWV1ZSBQYWlycw0KPiA+ICt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4gKw0K PiA+ICtFYWNoIFJlZ0V4IGRldmljZSBjYW4gYmUgY29uZmlndXJlZCB3aXRoIG51bWJlciBvZiBx dWV1ZSBwYWlycy4NCj4gPiArRWFjaCBxdWV1ZSBwYWlyIGlzIGNvbmZpZ3VyZWQgdXNpbmcgYGBy dGVfcmVnZXhkZXZfcXVldWVfcGFpcl9zZXR1cGBgDQo+ID4gKw0KPiA+ICsNCj4gPiArTG9naWNh bCBDb3JlcywgTWVtb3J5IGFuZCBRdWV1ZXMgUGFpciBSZWxhdGlvbnNoaXBzDQo+ID4gK35+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiA+ICsNCj4g PiArTXVsdGlwbGUgbG9naWNhbCBjb3JlcyBzaG91bGQgbmV2ZXIgc2hhcmUgdGhlIHNhbWUgcXVl dWUgcGFpciBmb3INCj4gZW5xdWV1aW5nDQo+ID4gK29wZXJhdGlvbnMgb3IgZGVxdWV1aW5nIG9w ZXJhdGlvbnMgb24gdGhlIHNhbWUgUmVnRXggZGV2aWNlIHNpbmNlIHRoaXMNCj4gPiB3b3VsZA0K PiA+ICtyZXF1aXJlIGdsb2JhbCBsb2NrcyBhbmQgaGluZGVyIHBlcmZvcm1hbmNlLg0KPiA+ICsN Cj4gPiArDQo+ID4gK0RldmljZSBGZWF0dXJlcyBhbmQgQ2FwYWJpbGl0aWVzDQo+ID4gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICsNCj4gPiArUmVnRXggZGV2aWNlcyBt YXkgc3VwcG9ydCBkaWZmZXJlbnQgZmVhdHVyZSBzZXQuDQo+ID4gK0luIG9yZGVyIHRvIGdldCB0 aGUgc3VwcG9ydGVkIFBNRCBmZWF0dXJlIGBgcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0YGANCj4gPiAr QVBJIHdoaWNoIHJldHVybiB0aGUgaW5mbyBvZiB0aGUgZGV2aWNlIGFuZCBpdCdzIHN1cHBvcnRl ZCBmZWF0dXJlcy4NCj4gPiArDQo+ID4gKw0KPiA+ICtFbnF1ZXVlIC8gRGVxdWV1ZSBCdXJzdCBB UElzDQo+ID4gK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiArDQo+ID4gK1RoZSBi dXJzdCBlbnF1ZXVlIEFQSSB1c2VzIGEgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIgYW5kIGEgcXVl dWUgcGFpcg0KPiA+ICtpZGVudGlmaWVyIHRvIHNwZWNpZnkgdGhlIGRldmljZSBxdWV1ZSBwYWly IHRvIHNjaGVkdWxlIHRoZSBwcm9jZXNzaW5nIG9uLg0KPiA+ICtUaGUgYGBuYl9vcHNgYCBwYXJh bWV0ZXIgaXMgdGhlIG51bWJlciBvZiBvcGVyYXRpb25zIHRvIHByb2Nlc3Mgd2hpY2ggYXJlDQo+ ID4gK3N1cHBsaWVkIGluIHRoZSBgYG9wc2BgIGFycmF5IG9mIGBgcnRlX3JlZ2V4X29wc2BgIHN0 cnVjdHVyZXMuDQo+ID4gK1RoZSBlbnF1ZXVlIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBv ZiBvcGVyYXRpb25zIGl0IGFjdHVhbGx5IGVucXVldWVkDQo+ID4gZm9yDQo+ID4gK3Byb2Nlc3Np bmcsIGEgcmV0dXJuIHZhbHVlIGVxdWFsIHRvIGBgbmJfb3BzYGAgbWVhbnMgdGhhdCBhbGwgcGFj a2V0cyBoYXZlDQo+ID4gYmVlbg0KPiA+ICtlbnF1ZXVlZC4NCj4gPiArDQo+ID4gK0RhdGEgcG9p bnRlZCBpbiBlYWNoIG9wLCBzaG91bGQgbm90IGJlIHJlbGVhc2VkIHVudGlsIHRoZSBkZXF1ZXVl IG9mIGZvciB0aGF0DQo+ID4gK29wLg0KPiA+ICsNCj4gPiArVGhlIGRlcXVldWUgQVBJIHVzZXMg dGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBlbnF1ZXVlIEFQSSBvZiBwcm9jZXNzZWQgYnV0DQo+ID4g K3RoZSBgYG5iX29wc2BgIGFuZCBgYG9wc2BgIHBhcmFtZXRlcnMgYXJlIG5vdyB1c2VkIHRvIHNw ZWNpZnkgdGhlIG1heA0KPiA+IHByb2Nlc3NlZA0KPiA+ICtvcGVyYXRpb25zIHRoZSB1c2VyIHdp c2hlcyB0byByZXRyaWV2ZSBhbmQgdGhlIGxvY2F0aW9uIGluIHdoaWNoIHRvIHN0b3JlDQo+IHRo ZW0uDQo+ID4gK1RoZSBBUEkgY2FsbCByZXR1cm5zIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHByb2Nl c3NlZCBvcGVyYXRpb25zIHJldHVybmVkLA0KPiB0aGlzDQo+ID4gK2NhbiBuZXZlciBiZSBsYXJn ZXIgdGhhbiBgYG5iX29wc2BgLg0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxl IGIvbGliL01ha2VmaWxlDQo+ID4gaW5kZXggZDBlYzM5MS4uNmEzZDRlMyAxMDA2NDQNCj4gPiAt LS0gYS9saWIvTWFrZWZpbGUNCj4gPiArKysgYi9saWIvTWFrZWZpbGUNCj4gPiBAQCAtNDQsNiAr NDQsOCBAQCBERVBESVJTLWxpYnJ0ZV9ldmVudGRldiA6PSBsaWJydGVfZWFsIGxpYnJ0ZV9yaW5n DQo+ID4gbGlicnRlX2V0aGRldiBsaWJydGVfaGFzaCBcDQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnJ0ZV9tZW1wb29sIGxpYnJ0ZV90aW1lciBsaWJydGVfY3J5cHRvZGV2DQo+ ID4gIERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9SQVdERVYpICs9IGxpYnJ0ZV9yYXdkZXYNCj4g PiAgREVQRElSUy1saWJydGVfcmF3ZGV2IDo9IGxpYnJ0ZV9lYWwgbGlicnRlX2V0aGRldg0KPiA+ ICtESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfUkVHRVhERVYpICs9IGxpYnJ0ZV9yZWdleGRldg0K PiA+ICtERVBESVJTLWxpYnJ0ZV9yZWdleGRldiA6PSBsaWJydGVfZWFsIGxpYnJ0ZV9tYnVmDQo+ ID4gIERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9WSE9TVCkgKz0gbGlicnRlX3Zob3N0DQo+ID4g IERFUERJUlMtbGlicnRlX3Zob3N0IDo9IGxpYnJ0ZV9lYWwgbGlicnRlX21lbXBvb2wgbGlicnRl X21idWYgbGlicnRlX2V0aGRldg0KPiBcDQo+ID4gIAkJCWxpYnJ0ZV9uZXQgbGlicnRlX2hhc2gg bGlicnRlX2NyeXB0b2Rldg0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3JlZ2V4ZGV2L01h a2VmaWxlIGIvbGliL2xpYnJ0ZV9yZWdleGRldi9NYWtlZmlsZQ0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uNmY0Y2M2Mw0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L01ha2VmaWxlDQo+ID4gQEAgLTAsMCArMSwzMSBA QA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArIyBD b3B5cmlnaHQoQykgMjAxOSBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLg0KPiA+ICsjIENvcHly aWdodChDKSAyMDIwIE1lbGxhbm94IEludGVybmF0aW9uYWwgTHRkLg0KPiA+ICsjDQo+ID4gKw0K PiA+ICtpbmNsdWRlICQoUlRFX1NESykvbWsvcnRlLnZhcnMubWsNCj4gPiArDQo+ID4gKyMgbGli cmFyeSBuYW1lDQo+ID4gK0xJQiA9IGxpYnJ0ZV9yZWdleGRldi5hDQo+ID4gKw0KPiA+ICtFWFBP UlRfTUFQIDo9IHJ0ZV9yZWdleF92ZXJzaW9uLm1hcA0KPiA+ICsNCj4gPiArIyBsaWJyYXJ5IHZl cnNpb24NCj4gPiArTElCQUJJVkVSIDo9IDENCj4gPiArDQo+ID4gKyMgYnVpbGQgZmxhZ3MNCj4g PiArQ0ZMQUdTICs9IC1PMw0KPiA+ICtDRkxBR1MgKz0gJChXRVJST1JfRkxBR1MpDQo+ID4gK0xE TElCUyArPSAtbHJ0ZV9lYWwgLWxydGVfbWJ1Zg0KPiA+ICsNCj4gPiArIyBsaWJyYXJ5IHNvdXJj ZSBmaWxlcw0KPiA+ICsjIGFsbCBzb3VyY2UgYXJlIHN0b3JlZCBpbiBTUkNTLXkNCj4gPiArU1JD Uy0kKENPTkZJR19SVEVfTElCUlRFX1JFR0VYREVWKSA6PSBydGVfcmVnZXhkZXYuYw0KPiA+ICsN Cj4gPiArIyBleHBvcnQgaW5jbHVkZSBmaWxlcw0KPiA+ICtTWU1MSU5LLSQoQ09ORklHX1JURV9M SUJSVEVfUkVHRVhERVYpLWluY2x1ZGUgKz0gcnRlX3JlZ2V4ZGV2LmgNCj4gPiArDQo+ID4gKyMg dmVyc2lvbmluZyBleHBvcnQgbWFwDQo+ID4gK0VYUE9SVF9NQVAgOj0gcnRlX3JlZ2V4ZGV2X3Zl cnNpb24ubWFwDQo+ID4gKw0KPiA+ICtpbmNsdWRlICQoUlRFX1NESykvbWsvcnRlLmxpYi5taw0K PiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3JlZ2V4ZGV2L21lc29uLmJ1aWxkDQo+IGIvbGli L2xpYnJ0ZV9yZWdleGRldi9tZXNvbi5idWlsZA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMC4uZjRkYjc0OA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9s aWIvbGlicnRlX3JlZ2V4ZGV2L21lc29uLmJ1aWxkDQo+ID4gQEAgLTAsMCArMSw3IEBADQo+ID4g KyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsjIENvcHlyaWdo dChjKSAyMDIwIE1lbGxhbm94IENvcnBvcmF0aW9uDQo+ID4gKw0KPiA+ICthbGxvd19leHBlcmlt ZW50YWxfYXBpcyA9IHRydWUNCj4gPiArc291cmNlcyA9IGZpbGVzKCdydGVfcmVnZXhkZXYuYycp DQo+ID4gK2hlYWRlcnMgPSBmaWxlcygncnRlX3JlZ2V4ZGV2LmgnKQ0KPiA+ICtkZXBzICs9IFsn bWJ1ZiddDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2 LmMNCj4gPiBiL2xpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2LmMNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmI5MDE4NzcNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYuYw0KPiA+IEBA IC0wLDAgKzEsNiBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh dXNlDQo+ID4gKyAqIENvcHlyaWdodChDKSAyMDE5IE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQu DQo+ID4gKyAqIENvcHlyaWdodChDKSAyMDIwIE1lbGxhbm94IEludGVybmF0aW9uYWwgTHRkLg0K PiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxydGVfcmVnZXhkZXYuaD4NCj4gPiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYuaA0KPiA+IGIvbGliL2xp YnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXYuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMC4uN2U2ODhkOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9s aWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5oDQo+ID4gQEAgLTAsMCArMSwxNDczIEBA DQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICog Q29weXJpZ2h0KEMpIDIwMTkgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4gPiArICogQ29w eXJpZ2h0KEMpIDIwMjAgTWVsbGFub3ggSW50ZXJuYXRpb25hbCBMdGQuDQo+ID4gKyAqIENvcHly aWdodChDKSAyMDIwIEludGVsIEludGVybmF0aW9uYWwgTHRkLg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX1JURV9SRUdFWERFVl9IXw0KPiA+ICsjZGVmaW5lIF9SVEVfUkVHRVhERVZf SF8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAZmlsZQ0KPiA+ICsgKg0KPiA+ICsgKiBSVEUg UmVnRXggRGV2aWNlIEFQSQ0KPiA+ICsgKg0KPiA+ICsgKiBEZWZpbmVzIFJURSBSZWdFeCBEZXZp Y2UgQVBJcyBmb3IgUmVnRXggb3BlcmF0aW9ucyBhbmQgaXRzIHByb3Zpc2lvbmluZy4NCj4gPiAr ICoNCj4gPiArICogVGhlIFJlZ0V4IERldmljZSBBUEkgaXMgY29tcG9zZWQgb2YgdHdvIHBhcnRz Og0KPiA+ICsgKg0KPiA+ICsgKiAtIFRoZSBhcHBsaWNhdGlvbi1vcmllbnRlZCBSZWdFeCBBUEkg dGhhdCBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gc2V0dXANCj4gPiArICogICBhIFJlZ0V4IGRldmlj ZSAoY29uZmlndXJlIGl0LCBzZXR1cCBpdHMgcXVldWUgcGFpcnMgYW5kIHN0YXJ0IGl0KSwNCj4g PiArICogICB1cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2UgYW5kIHNvIG9uLg0KPiA+ICsgKg0KPiA+ ICsgKiAtIFRoZSBkcml2ZXItb3JpZW50ZWQgUmVnRXggQVBJIHRoYXQgZXhwb3J0cyBhIGZ1bmN0 aW9uIGFsbG93aW5nDQo+ID4gKyAqICAgYSBSZWdFeCBwb2xsIE1vZGUgRHJpdmVyIChQTUQpIHRv IHNpbXVsdGFuZW91c2x5IHJlZ2lzdGVyIGl0c2VsZiBhcw0KPiA+ICsgKiAgIGEgUmVnRXggZGV2 aWNlIGRyaXZlci4NCj4gPiArICoNCj4gPiArICogUmVnRXggZGV2aWNlIGNvbXBvbmVudHMgYW5k IGRlZmluaXRpb25zOg0KPiA+ICsgKg0KPiA+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKw0K PiA+ICsgKiAgICAgfCAgICAgICAgICAgICAgICAgfA0KPiA+ICsgKiAgICAgfCAgICAgICAgICAg ICAgICAgby0tLS0tLS0tLSsgICAgcnRlX3JlZ2V4ZGV2X1tlbnxkZV1xdWV1ZV9idXJzdCgpDQo+ ID4gKyAqICAgICB8ICAgUENSRSBiYXNlZCAgICBvLS0tLS0tKyAgfCAgICAgICAgICAgICAgIHwN Cj4gPiArICogICAgIHwgIFJlZ0V4IHBhdHRlcm4gIHwgICAgICB8ICB8ICArLS0tLS0tLS0rICAg fA0KPiA+ICsgKiAgICAgfCBtYXRjaGluZyBlbmdpbmUgby0tLS0tLSstLSstLW8gICAgICAgIHwg ICB8ICAgICstLS0tLS0rDQo+ID4gKyAqICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgfCAg fCAgfCBxdWV1ZSAgfDw9PW89PT0+fENvcmUgMHwNCj4gPiArICogICAgIHwgICAgICAgICAgICAg ICAgIG8tLS0tKyB8ICB8ICB8IHBhaXIgMCB8ICAgICAgICB8ICAgICAgfA0KPiA+ICsgKiAgICAg fCAgICAgICAgICAgICAgICAgfCAgICB8IHwgIHwgICstLS0tLS0tLSsgICAgICAgICstLS0tLS0r DQo+ID4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAgIHwgfCAgfA0KPiA+ICsgKiAgICAg ICAgICAgIF4gICAgICAgICAgICAgICB8IHwgIHwgICstLS0tLS0tLSsNCj4gPiArICogICAgICAg ICAgICB8ICAgICAgICAgICAgICAgfCB8ICB8ICB8ICAgICAgICB8ICAgICAgICArLS0tLS0tKw0K PiA+ICsgKiAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICstLSstLW8gcXVldWUgIHw8PT09 PT09PnxDb3JlIDF8DQo+ID4gKyAqICAgICAgICBSdWxlfERhdGFiYXNlICAgICAgIHwgICAgfCAg fCBwYWlyIDEgfCAgICAgICAgfCAgICAgIHwNCj4gPiArICogICAgICstLS0tLS0rLS0tLS0tLS0t LSsgICAgfCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCAg ICAgR3JvdXAgMCAgICAgfCAgICB8ICAgIHwNCj4gPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0r IHwgICAgfCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCB8 IFJ1bGVzIDAuLm4gIHwgfCAgICB8ICAgIHwgIHwgICAgICAgIHwgICAgICAgIHxDb3JlIDJ8DQo+ ID4gKyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgKy0tbyBxdWV1ZSAgfDw9PT09 PT0+fCAgICAgIHwNCj4gPiArICogICAgIHwgICAgIEdyb3VwIDEgICAgIHwgICAgfCAgICAgICB8 IHBhaXIgMiB8ICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsg fCAgICB8ICAgICAgICstLS0tLS0tLSsNCj4gPiArICogICAgIHwgfCBSdWxlcyAwLi5uICB8IHwg ICAgfA0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAgICAgICstLS0tLS0t LSsNCj4gPiArICogICAgIHwgICAgIEdyb3VwIDIgICAgIHwgICAgfCAgICAgICB8ICAgICAgICB8 ICAgICAgICArLS0tLS0tKw0KPiA+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAg ICAgIHwgcXVldWUgIHw8PT09PT09PnxDb3JlIG58DQo+ID4gKyAqICAgICB8IHwgUnVsZXMgMC4u biAgfCB8ICAgICstLS0tLS0tbyBwYWlyIG4gfCAgICAgICAgfCAgICAgIHwNCj4gPiArICogICAg IHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgICArLS0tLS0tLS0rICAgICAgICArLS0tLS0t Kw0KPiA+ICsgKiAgICAgfCAgICAgR3JvdXAgbiAgICAgfA0KPiA+ICsgKiAgICAgfCArLS0tLS0t LS0tLS0tLSsgfDwtLS0tLS0tcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlKCkNCj4gPiArICog ICAgIHwgfCAgICAgICAgICAgICB8IHw8LS0tLS0tLXJ0ZV9yZWdleGRldl9ydWxlX2RiX2NvbXBp bGVfYWN0aXZhdGUoKQ0KPiA+ICsgKiAgICAgfCB8IFJ1bGVzIDAuLm4gIHwgfDwtLS0tLS0tcnRl X3JlZ2V4ZGV2X3J1bGVfZGJfaW1wb3J0KCkNCj4gPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0r IHwtLS0tLS0tPnJ0ZV9yZWdleGRldl9ydWxlX2RiX2V4cG9ydCgpDQo+ID4gKyAqICAgICArLS0t LS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAqDQo+ID4gKyAqIFJlZ0V4OiBBIHJlZ3VsYXIgZXhwcmVz c2lvbiBpcyBhIGNvbmNpc2UgYW5kIGZsZXhpYmxlIG1lYW5zIGZvciBtYXRjaGluZw0KPiA+ICsg KiBzdHJpbmdzIG9mIHRleHQsIHN1Y2ggYXMgcGFydGljdWxhciBjaGFyYWN0ZXJzLCB3b3Jkcywg b3IgcGF0dGVybnMgb2YNCj4gPiArICogY2hhcmFjdGVycy4gQSBjb21tb24gYWJicmV2aWF0aW9u IGZvciB0aGlzIGlzIOKAnFJlZ0V44oCdLg0KPiA+ICsgKg0KPiA+ICsgKiBSZWdFeCBkZXZpY2U6 IEEgaGFyZHdhcmUgb3Igc29mdHdhcmUtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgUmVnRXgNCj4g PiArICogZGV2aWNlIEFQSSBmb3IgUENSRSBiYXNlZCBwYXR0ZXJuIG1hdGNoaW5nIHN5bnRheCBh bmQgc2VtYW50aWNzLg0KPiA+ICsgKg0KPiA+ICsgKiBQQ1JFIFJlZ0V4IHN5bnRheCBhbmQgc2Vt YW50aWNzIHNwZWNpZmljYXRpb246DQo+ID4gKyAqDQo+ID4NCj4gaHR0cHM6Ly9ldXIwMy5zYWZl bGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZyZWdleGtpdC5z bw0KPiA+DQo+IHVyY2Vmb3JnZS5uZXQlMkZEb2N1bWVudGF0aW9uJTJGcGNyZSUyRnBjcmVwYXR0 ZXJuLmh0bWwmYW1wO2RhdGE9MDIlDQo+ID4NCj4gN0MwMSU3Q29yaWthJTQwbWVsbGFub3guY29t JTdDMzlmNTc2NWU0MDVjNDZiMThiYTMwOGQ3ZjI2Yjg0ODAlN0MNCj4gPg0KPiBhNjUyOTcxYzdk MmU0ZDliYTZhNGQxNDkyNTZmNDYxYiU3QzAlN0MwJTdDNjM3MjQ0NDE1OTYxMTQ0OTY4JmENCj4g Pg0KPiBtcDtzZGF0YT1OV1lqYTNnNW5UZXJTZTh2SUZTSHBUZUs4aXBLT2hNblhtbU5CdUp0V3FZ JTNEJmFtcDtyZXMNCj4gPiBlcnZlZD0wDQo+ID4gKyAqDQo+ID4gKyAqIFJlZ0V4IHF1ZXVlIHBh aXI6IEVhY2ggUmVnRXggZGV2aWNlIHNob3VsZCBoYXZlIG9uZSBvciBtb3JlIHF1ZXVlIHBhaXIN Cj4gPiB0bw0KPiA+ICsgKiB0cmFuc21pdCBhIGJ1cnN0IG9mIHBhdHRlcm4gbWF0Y2hpbmcgcmVx dWVzdCBhbmQgcmVjZWl2ZSBhIGJ1cnN0IG9mDQo+ID4gKyAqIHJlY2VpdmUgdGhlIHBhdHRlcm4g bWF0Y2hpbmcgcmVzcG9uc2UuIFRoZSBwYXR0ZXJuIG1hdGNoaW5nDQo+ID4gcmVxdWVzdC9yZXNw b25zZQ0KPiA+ICsgKiBlbWJlZGRlZCBpbiAqcnRlX3JlZ2V4X29wcyogc3RydWN0dXJlLg0KPiA+ ICsgKg0KPiA+ICsgKiBSdWxlOiBBIHBhdHRlcm4gbWF0Y2hpbmcgcnVsZSBleHByZXNzZWQgaW4g UENSRSBSZWdFeCBzeW50YXggYWxvbmcgd2l0aA0KPiA+ICsgKiBNYXRjaCBJRCBhbmQgR3JvdXAg SUQgdG8gaWRlbnRpZnkgdGhlIHJ1bGUgdXBvbiB0aGUgbWF0Y2guDQo+ID4gKyAqDQo+ID4gKyAq IFJ1bGUgZGF0YWJhc2U6IFRoZSBSZWdFeCBkZXZpY2UgYWNjZXB0cyByZWd1bGFyIGV4cHJlc3Np b25zIGFuZA0KPiBjb252ZXJ0cw0KPiA+IHRoZW0NCj4gPiArICogaW50byBhIGNvbXBpbGVkIHJ1 bGUgZGF0YWJhc2UgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNjYW4gZGF0YS4NCj4gPiArICog Q29tcGlsYXRpb24gYWxsb3dzIHRoZSBkZXZpY2UgdG8gYW5hbHl6ZSB0aGUgZ2l2ZW4gcGF0dGVy bihzKSBhbmQNCj4gPiArICogcHJlLWRldGVybWluZSBob3cgdG8gc2NhbiBmb3IgdGhlc2UgcGF0 dGVybnMgaW4gYW4gb3B0aW1pemVkIGZhc2hpb24gdGhhdA0KPiA+ICsgKiB3b3VsZCBiZSBmYXIg dG9vIGV4cGVuc2l2ZSB0byBjb21wdXRlIGF0IHJ1bi10aW1lLiBBIHJ1bGUgZGF0YWJhc2UNCj4g PiBjb250YWlucw0KPiA+ICsgKiBhIHNldCBvZiBydWxlcyB0aGF0IGNvbXBpbGVkIGluIGRldmlj ZSBzcGVjaWZpYyBiaW5hcnkgZm9ybS4NCj4gPiArICoNCj4gPiArICogTWF0Y2ggSUQgb3IgUnVs ZSBJRDogQSB1bmlxdWUgaWRlbnRpZmllciBwcm92aWRlZCBhdCB0aGUgdGltZSBvZiBydWxlDQo+ ID4gKyAqIGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRlbnRpZnkgdGhlIHJ1bGUg dXBvbiBtYXRjaC4NCj4gPiArICoNCj4gPiArICogR3JvdXAgSUQ6IEdyb3VwIG9mIHJ1bGVzIGNh biBiZSBncm91cGVkIHVuZGVyIG9uZSBncm91cCBJRCB0byBlbmFibGUNCj4gPiArICogcnVsZSBp c29sYXRpb24gYW5kIGVmZmVjdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBBIHVuaXF1ZSBncm91cCBp ZGVudGlmaWVyDQo+ID4gKyAqIHByb3ZpZGVkIGF0IHRoZSB0aW1lIG9mIHJ1bGUgY3JlYXRpb24g Zm9yIHRoZSBhcHBsaWNhdGlvbiB0byBpZGVudGlmeSB0aGUNCj4gPiArICogcnVsZSB1cG9uIG1h dGNoLg0KPiA+ICsgKg0KPiA+ICsgKiBTY2FuOiBBIHBhdHRlcm4gbWF0Y2hpbmcgcmVxdWVzdCB0 aHJvdWdoICplbnF1ZXVlKiBBUEkuDQo+ID4gKyAqDQo+ID4gKyAqIEl0IG1heSBwb3NzaWJsZSB0 aGF0IGEgZ2l2ZW4gUmVnRXggZGV2aWNlIG1heSBub3Qgc3VwcG9ydCBhbGwgdGhlIGZlYXR1cmVz DQo+ID4gKyAqIG9mIFBDUkUuIFRoZSBhcHBsaWNhdGlvbiBtYXkgcHJvYmUgdW5zdXBwb3J0ZWQg ZmVhdHVyZXMgdGhyb3VnaA0KPiA+ICsgKiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnBjcmVf dW5zdXBfZmxhZ3MNCj4gPiArICoNCj4gPiArICogQnkgZGVmYXVsdCwgYWxsIHRoZSBmdW5jdGlv bnMgb2YgdGhlIFJlZ0V4IERldmljZSBBUEkgZXhwb3J0ZWQgYnkgYSBQTUQNCj4gPiArICogYXJl IGxvY2stZnJlZSBmdW5jdGlvbnMgd2hpY2ggYXNzdW1lIHRvIG5vdCBiZSBpbnZva2VkIGluIHBh cmFsbGVsIG9uDQo+ID4gKyAqIGRpZmZlcmVudCBsb2dpY2FsIGNvcmVzIHRvIHdvcmsgb24gdGhl IHNhbWUgdGFyZ2V0IG9iamVjdC4gRm9yIGluc3RhbmNlLA0KPiA+ICsgKiB0aGUgZGVxdWV1ZSBm dW5jdGlvbiBvZiBhIFBNRCBjYW5ub3QgYmUgaW52b2tlZCBpbiBwYXJhbGxlbCBvbiB0d28NCj4g bG9naWNhbA0KPiA+ICsgKiBjb3JlcyB0byBvcGVyYXRlcyBvbiBzYW1lIFJlZ0V4IHF1ZXVlIHBh aXIuIE9mIGNvdXJzZSwgdGhpcyBmdW5jdGlvbg0KPiA+ICsgKiBjYW4gYmUgaW52b2tlZCBpbiBw YXJhbGxlbCBieSBkaWZmZXJlbnQgbG9naWNhbCBjb3JlIG9uIGRpZmZlcmVudCBxdWV1ZQ0KPiBw YWlyLg0KPiA+ICsgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHVwcGVyIGxldmVs IGFwcGxpY2F0aW9uIHRvIGVuZm9yY2UgdGhpcyBydWxlLg0KPiA+ICsgKg0KPiA+ICsgKiBJbiBh bGwgZnVuY3Rpb25zIG9mIHRoZSBSZWdFeCBBUEksIHRoZSBSZWdFeCBkZXZpY2UgaXMNCj4gPiAr ICogZGVzaWduYXRlZCBieSBhbiBpbnRlZ2VyID49IDAgbmFtZWQgdGhlIGRldmljZSBpZGVudGlm aWVyICpkZXZfaWQqDQo+ID4gKyAqDQo+ID4gKyAqIEF0IHRoZSBSZWdFeCBkcml2ZXIgbGV2ZWws IFJlZ0V4IGRldmljZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGEgZ2VuZXJpYw0KPiA+ICsgKiBkYXRh IHN0cnVjdHVyZSBvZiB0eXBlICpydGVfcmVnZXhkZXYqLg0KPiA+ICsgKg0KPiA+ICsgKiBSZWdF eCBkZXZpY2VzIGFyZSBkeW5hbWljYWxseSByZWdpc3RlcmVkIGR1cmluZyB0aGUgUENJL1NvQyBk ZXZpY2UNCj4gPiBwcm9iaW5nDQo+ID4gKyAqIHBoYXNlIHBlcmZvcm1lZCBhdCBFQUwgaW5pdGlh bGl6YXRpb24gdGltZS4NCj4gPiArICogV2hlbiBhIFJlZ0V4IGRldmljZSBpcyBiZWluZyBwcm9i ZWQsIGEgKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGFuZA0KPiA+ICsgKiBhIG5ldyBkZXZpY2Ug aWRlbnRpZmllciBhcmUgYWxsb2NhdGVkIGZvciB0aGF0IGRldmljZS4gVGhlbiwgdGhlDQo+ID4g KyAqIHJlZ2V4ZGV2X2luaXQoKSBmdW5jdGlvbiBzdXBwbGllZCBieSB0aGUgUmVnRXggZHJpdmVy IG1hdGNoaW5nIHRoZQ0KPiBwcm9iZWQNCj4gPiArICogZGV2aWNlIGlzIGludm9rZWQgdG8gcHJv cGVybHkgaW5pdGlhbGl6ZSB0aGUgZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgcm9sZSBv ZiB0aGUgZGV2aWNlIGluaXQgZnVuY3Rpb24gY29uc2lzdHMgb2YgcmVzZXR0aW5nIHRoZSBoYXJk d2FyZSBvcg0KPiA+ICsgKiBzb2Z0d2FyZSBSZWdFeCBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0K PiA+ICsgKg0KPiA+ICsgKiBJZiB0aGUgZGV2aWNlIGluaXQgb3BlcmF0aW9uIGlzIHN1Y2Nlc3Nm dWwsIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuDQo+ID4gKyAqIHRoZSBkZXZpY2UgaWRlbnRp ZmllciBhc3NpZ25lZCB0byB0aGUgbmV3IGRldmljZSBhbmQgaXRzIGFzc29jaWF0ZWQNCj4gPiAr ICogKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGlzIGVmZmVjdGl2ZWx5IHJlZ2lzdGVyZWQuDQo+ ID4gKyAqIE90aGVyd2lzZSwgYm90aCB0aGUgKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGFuZCB0 aGUgZGV2aWNlIGlkZW50aWZpZXINCj4gYXJlDQo+ID4gKyAqIGZyZWVkLg0KPiA+ICsgKg0KPiA+ ICsgKiBUaGUgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBSZWdFeCBBUEkg dG8gc2V0dXAgYSBkZXZpY2UNCj4gPiArICogZGVzaWduYXRlZCBieSBpdHMgZGV2aWNlIGlkZW50 aWZpZXIgbXVzdCBiZSBpbnZva2VkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6DQo+ID4gKyAqICAg ICAtIHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKQ0KPiA+ICsgKiAgICAgLSBydGVfcmVnZXhkZXZf cXVldWVfcGFpcl9zZXR1cCgpDQo+ID4gKyAqICAgICAtIHJ0ZV9yZWdleGRldl9zdGFydCgpDQo+ ID4gKyAqDQo+ID4gKyAqIFRoZW4sIHRoZSBhcHBsaWNhdGlvbiBjYW4gaW52b2tlLCBpbiBhbnkg b3JkZXIsIHRoZSBmdW5jdGlvbnMNCj4gPiArICogZXhwb3J0ZWQgYnkgdGhlIFJlZ0V4IEFQSSB0 byBlbnF1ZXVlIHBhdHRlcm4gbWF0Y2hpbmcgam9iLCBkZXF1ZXVlDQo+ID4gcGF0dGVybg0KPiA+ ICsgKiBtYXRjaGluZyByZXNwb25zZSwgZ2V0IHRoZSBzdGF0cywgdXBkYXRlIHRoZSBydWxlIGRh dGFiYXNlLA0KPiA+ICsgKiBnZXQvc2V0IGRldmljZSBhdHRyaWJ1dGVzIGFuZCBzbyBvbg0KPiA+ ICsgKg0KPiA+ICsgKiBJZiB0aGUgYXBwbGljYXRpb24gd2FudHMgdG8gY2hhbmdlIHRoZSBjb25m aWd1cmF0aW9uIChpLmUuIGNhbGwNCj4gPiArICogcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpIG9y IHJ0ZV9yZWdleGRldl9xdWV1ZV9wYWlyX3NldHVwKCkpLCBpdCBtdXN0DQo+ID4gY2FsbA0KPiA+ ICsgKiBydGVfcmVnZXhkZXZfc3RvcCgpIGZpcnN0IHRvIHN0b3AgdGhlIGRldmljZSBhbmQgdGhl biBkbyB0aGUNCj4gcmVjb25maWd1cmF0aW9uDQo+ID4gKyAqIGJlZm9yZSBjYWxsaW5nIHJ0ZV9y ZWdleGRldl9zdGFydCgpIGFnYWluLiBUaGUgZW5xdWV1ZSBhbmQgZGVxdWV1ZQ0KPiA+ICsgKiBm dW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBpbnZva2VkIHdoZW4gdGhlIGRldmljZSBpcyBzdG9wcGVk Lg0KPiA+ICsgKg0KPiA+ICsgKiBGaW5hbGx5LCBhbiBhcHBsaWNhdGlvbiBjYW4gY2xvc2UgYSBS ZWdFeCBkZXZpY2UgYnkgaW52b2tpbmcgdGhlDQo+ID4gKyAqIHJ0ZV9yZWdleGRldl9jbG9zZSgp IGZ1bmN0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBFYWNoIGZ1bmN0aW9uIG9mIHRoZSBhcHBsaWNh dGlvbiBSZWdFeCBBUEkgaW52b2tlcyBhIHNwZWNpZmljIGZ1bmN0aW9uDQo+ID4gKyAqIG9mIHRo ZSBQTUQgdGhhdCBjb250cm9scyB0aGUgdGFyZ2V0IGRldmljZSBkZXNpZ25hdGVkIGJ5IGl0cyBk ZXZpY2UNCj4gPiArICogaWRlbnRpZmllci4NCj4gPiArICoNCj4gPiArICogRm9yIHRoaXMgcHVy cG9zZSwgYWxsIGRldmljZS1zcGVjaWZpYyBmdW5jdGlvbnMgb2YgYSBSZWdFeCBkcml2ZXIgYXJl DQo+ID4gKyAqIHN1cHBsaWVkIHRocm91Z2ggYSBzZXQgb2YgcG9pbnRlcnMgY29udGFpbmVkIGlu IGEgZ2VuZXJpYyBzdHJ1Y3R1cmUgb2YgdHlwZQ0KPiA+ICsgKiAqcmVnZXhkZXZfb3BzKi4NCj4g PiArICogVGhlIGFkZHJlc3Mgb2YgdGhlICpyZWdleGRldl9vcHMqIHN0cnVjdHVyZSBpcyBzdG9y ZWQgaW4gdGhlDQo+ID4gKnJ0ZV9yZWdleGRldioNCj4gPiArICogc3RydWN0dXJlIGJ5IHRoZSBk ZXZpY2UgaW5pdCBmdW5jdGlvbiBvZiB0aGUgUmVnRXggZHJpdmVyLCB3aGljaCBpcw0KPiA+ICsg KiBpbnZva2VkIGR1cmluZyB0aGUgUENJL1NvQyBkZXZpY2UgcHJvYmluZyBwaGFzZSwgYXMgZXhw bGFpbmVkIGVhcmxpZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEluIG90aGVyIHdvcmRzLCBlYWNoIGZ1 bmN0aW9uIG9mIHRoZSBSZWdFeCBBUEkgc2ltcGx5IHJldHJpZXZlcyB0aGUNCj4gPiArICogKnJ0 ZV9yZWdleGRldiogc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIGlkZW50aWZp ZXIgYW5kDQo+ID4gKyAqIHBlcmZvcm1zIGFuIGluZGlyZWN0IGludm9jYXRpb24gb2YgdGhlIGNv cnJlc3BvbmRpbmcgZHJpdmVyIGZ1bmN0aW9uDQo+ID4gKyAqIHN1cHBsaWVkIGluIHRoZSAqcmVn ZXhkZXZfb3BzKiBzdHJ1Y3R1cmUgb2YgdGhlICpydGVfcmVnZXhkZXYqDQo+IHN0cnVjdHVyZS4N Cj4gPiArICoNCj4gPiArICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoZSBhZGRyZXNzIG9m IHRoZSBmYXN0LXBhdGggZnVuY3Rpb25zIG9mIHRoZQ0KPiA+ICsgKiBSZWdFeCBkcml2ZXIgaXMg bm90IGNvbnRhaW5lZCBpbiB0aGUgKnJlZ2V4ZGV2X29wcyogc3RydWN0dXJlLg0KPiA+ICsgKiBJ bnN0ZWFkLCB0aGV5IGFyZSBkaXJlY3RseSBzdG9yZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUg KnJ0ZV9yZWdleGRldioNCj4gPiArICogc3RydWN0dXJlIHRvIGF2b2lkIGFuIGV4dHJhIGluZGly ZWN0IG1lbW9yeSBhY2Nlc3MgZHVyaW5nIHRoZWlyDQo+IGludm9jYXRpb24uDQo+ID4gKyAqDQo+ ID4gKyAqIFJURSBSZWdFeCBkZXZpY2UgZHJpdmVycyBkbyBub3QgdXNlIGludGVycnVwdHMgZm9y IGVucXVldWUgb3IgZGVxdWV1ZQ0KPiA+ICsgKiBvcGVyYXRpb24uIEluc3RlYWQsIFJlZ0V4IGRy aXZlcnMgZXhwb3J0IFBvbGwtTW9kZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+ID4gKyAqIGZ1bmN0 aW9ucyB0byBhcHBsaWNhdGlvbnMuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSAqZW5xdWV1ZSogb3Bl cmF0aW9uIHN1Ym1pdHMgYSBidXJzdCBvZiBSZWdFeCBwYXR0ZXJuIG1hdGNoaW5nDQo+ID4gcmVx dWVzdA0KPiA+ICsgKiB0byB0aGUgUmVnRXggZGV2aWNlIGFuZCB0aGUgKmRlcXVldWUqIG9wZXJh dGlvbiBnZXRzIGEgYnVyc3Qgb2YgcGF0dGVybg0KPiA+ICsgKiBtYXRjaGluZyByZXNwb25zZSBm b3IgdGhlIG9uZXMgc3VibWl0dGVkIHRocm91Z2ggKmVucXVldWUqIG9wZXJhdGlvbi4NCj4gPiAr ICoNCj4gPiArICogVHlwaWNhbCBhcHBsaWNhdGlvbiB1dGlsaXNhdGlvbiBvZiB0aGUgUmVnRXgg ZGV2aWNlIEFQSSB3aWxsIGZvbGxvdyB0aGUNCj4gPiArICogZm9sbG93aW5nIHByb2dyYW1taW5n IGZsb3cuDQo+ID4gKyAqDQo+ID4gKyAqIC0gcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpDQo+ID4g KyAqIC0gcnRlX3JlZ2V4ZGV2X3F1ZXVlX3BhaXJfc2V0dXAoKQ0KPiA+ICsgKiAtIHJ0ZV9yZWdl eGRldl9ydWxlX2RiX3VwZGF0ZSgpIE5lZWRzIHRvIGludm9rZSBpZiBwcmVjb21waWxlZCBydWxl DQo+ID4gZGF0YWJhc2UNCj4gPiArICogICBub3QgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4ZGV2X2Nv bmZpZzo6cnVsZV9kYiBmb3INCj4gPiBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkNCj4gPiArICog ICBhbmQvb3IgYXBwbGljYXRpb24gbmVlZHMgdG8gdXBkYXRlIHJ1bGUgZGF0YWJhc2UuDQo+ID4g KyAqIC0gcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0ZSgpIE5lZWRzIHRvIGlu dm9rZSBpZg0KPiA+ICsgKiAgIHJ0ZV9yZWdleGRldl9ydWxlX2RiX3VwZGF0ZSBmdW5jdGlvbiB3 YXMgdXNlZC4NCj4gPiArICogLSBDcmVhdGUgb3IgcmV1c2UgZXhpdGluZyBtZW1wb29sIGZvciAq cnRlX3JlZ2V4X29wcyogb2JqZWN0cy4NCj4gPiArICogLSBydGVfcmVnZXhkZXZfc3RhcnQoKQ0K PiA+ICsgKiAtIHJ0ZV9yZWdleGRldl9lbnF1ZXVlX2J1cnN0KCkNCj4gPiArICogLSBydGVfcmVn ZXhkZXZfZGVxdWV1ZV9idXJzdCgpDQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2lm ZGVmIF9fY3BsdXNwbHVzDQo+ID4gK2V4dGVybiAiQyIgew0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ ID4gKyNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfY29uZmlnLmg+ DQo+ID4gKyNpbmNsdWRlIDxydGVfZGV2Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZXJybm8uaD4N Cj4gPiArI2luY2x1ZGUgPHJ0ZV9tYnVmLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+ DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVO VEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0K PiA+ICsgKiBHZXQgdGhlIHRvdGFsIG51bWJlciBvZiBSZWdFeCBkZXZpY2VzIHRoYXQgaGF2ZSBi ZWVuIHN1Y2Nlc3NmdWxseQ0KPiA+ICsgKiBpbml0aWFsaXNlZC4NCj4gPiArICoNCj4gPiArICog QHJldHVybg0KPiA+ICsgKiAgIFRoZSB0b3RhbCBudW1iZXIgb2YgdXNhYmxlIFJlZ0V4IGRldmlj ZXMuDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiArdWludDhfdA0KPiA+ ICtydGVfcmVnZXhkZXZfY291bnQodm9pZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdh cm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhv dXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBHZXQgdGhlIGRldmljZSBpZGVudGlm aWVyIGZvciB0aGUgbmFtZWQgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0g bmFtZQ0KPiA+ICsgKiAgIFJlZ0V4IGRldmljZSBuYW1lIHRvIHNlbGVjdCB0aGUgUmVnRXggZGV2 aWNlIGlkZW50aWZpZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBSZXR1 cm5zIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyIG9uIHN1Y2Nlc3MuDQo+ID4gKyAqICAgLSA8MDog RmFpbHVyZSB0byBmaW5kIG5hbWVkIFJlZ0V4IGRldmljZS4NCj4gPiArICovDQo+ID4gK19fcnRl X2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX3JlZ2V4ZGV2X2dldF9kZXZfaWQoY29u c3QgY2hhciAqbmFtZSk7DQo+ID4gKw0KPiA+ICsvKiBFbnVtZXJhdGVzIFJlZ0V4IGRldmljZSBj YXBhYmlsaXRpZXMgKi8NCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfQ0FQQV9SVU5USU1FX0NP TVBJTEFUSU9OX0YgKDFVTEwgPDwgMCkNCj4gPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lcyBzdXBw b3J0IGNvbXBpbGluZyB0aGUgcnVsZXMgYXQgcnVudGltZSB1bmxpa2UNCj4gPiArICogbG9hZGlu ZyBvbmx5IHRoZSBwcmUtYnVpbHQgcnVsZSBkYXRhYmFzZSB1c2luZw0KPiA+ICsgKiBzdHJ1Y3Qg cnRlX3JlZ2V4ZGV2X2NvbmZpZzo6cnVsZV9kYiBpbiBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkN Cj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2NvbmZpZzo6cnVsZV9k YiwgcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdl eGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBS VEVfUkVHRVhERVZfQ0FQQV9TVVBQX1BDUkVfU1RBUlRfQU5DSE9SX0YgKDFVTEwgPDwgMSkNCj4g PiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBQQ1JFIEFuY2hvciB0byBzdGFydCBvZiBtYXRj aCBmbGFnLg0KPiA+ICsgKiBFeGFtcGxlIFJlZ0V4IGlzICcvXEdmb29cZC8nLiBIZXJlICdcRycg YXNzZXJ0cyBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZQ0KPiA+ICsgKiBwcmV2aW91cyBtYXRj aCBvciB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyBmb3IgdGhlIGZpcnN0IG1hdGNoLg0KPiA+ICsg KiBUaGlzIHBvc2l0aW9uIHdpbGwgY2hhbmdlIGVhY2ggdGltZSB0aGUgUmVnRXggaXMgYXBwbGll ZCB0byB0aGUgc3ViamVjdA0KPiA+ICsgKiBzdHJpbmcuIElmIHRoZSBSZWdFeCBpcyBhcHBsaWVk IHRvICdmb28xZm9vMlpmb28zJyB0aGUgZmlyc3QgdHdvIG1hdGNoZXMgd2lsbA0KPiA+ICsgKiBi ZSBzdWNjZXNzZnVsIGZvciAnZm9vMWZvbzInIGFuZCBmYWlsIGZvciAnWmZvbzMnLg0KPiA+ICsg Kg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2FwYQ0K PiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX0NBUEFfU1VQUF9QQ1JF X0FUT01JQ19HUk9VUElOR19GICgxVUxMDQo+IDw8DQo+ID4gMikNCj4gPiArLyoqPCBSZWdFeCBk ZXZpY2Ugc3VwcG9ydCBQQ1JFIEF0b21pYyBncm91cGluZy4NCj4gPiArICogQXRvbWljIGdyb3Vw cyBhcmUgcmVwcmVzZW50ZWQgYnkgJyg/PiknLiBBbiBhdG9taWMgZ3JvdXAgaXMgYSBncm91cCB0 aGF0LA0KPiA+ICsgKiB3aGVuIHRoZSBSZWdFeCBlbmdpbmUgZXhpdHMgZnJvbSBpdCwgYXV0b21h dGljYWxseSB0aHJvd3MgYXdheSBhbGwNCj4gPiArICogYmFja3RyYWNraW5nIHBvc2l0aW9ucyBy ZW1lbWJlcmVkIGJ5IGFueSB0b2tlbnMgaW5zaWRlIHRoZSBncm91cC4NCj4gPiArICogRXhhbXBs ZSBSZWdFeCBpcyAnYSg/PmJjfGIpYycgaWYgdGhlIGdpdmVuIHBhdHRlcm5zIGFyZSAnYWJjJyBh bmQgJ2FiY2MnDQo+IHRoZW4NCj4gPiArICogJ2EoYmN8YiljJyBtYXRjaGVzIGJvdGggd2hlcmUg YXMgJ2EoPz5iY3xiKWMnIG1hdGNoZXMgb25seSBhYmNjIGJlY2F1c2UNCj4gPiArICogYXRvbWlj IGdyb3VwcyBkb24ndCBhbGxvdyBiYWNrdHJhY2luZyBiYWNrIHRvICdiJy4NCj4gPiArICoNCj4g PiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gPiAr ICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfQkFDS1RSQUNL SU5HX0NUUkxfRiAoMVVMTCA8PCAzKQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IFBD UkUgYmFja3RyYWNraW5nIGNvbnRyb2wgdmVyYnMuDQo+ID4gKyAqIFNvbWUgZXhhbXBsZXMgb2Yg YmFja3RyYWNpbmcgdmVyYnMgYXJlICgqQ09NTUlUKSwgKCpBQ0NFUFQpLCAoKkZBSUwpLA0KPiA+ ICsgKiAoKlNLSVApLCAoKlBSVU5FKS4NCj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRl X3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVm aW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfQ0FMTE9VVFNfRiAoMVVMTCA8PCA0KQ0KPiA+ICsv Kio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IFBDUkUgY2FsbG91dHMuDQo+ID4gKyAqIFBDUkUgc3Vw cG9ydHMgY2FsbGluZyBleHRlcm5hbCBmdW5jdGlvbiBpbiBiZXR3ZWVuIG1hdGNoZXMgYnkgdXNp bmcNCj4gJyg/QyknLg0KPiA+ICsgKiBFeGFtcGxlIFJlZ0V4ICdBQkMoP0MpRCcgaWYgYSBnaXZl biBwYXR0ZXIgaXMgJ0FCQ0QnIHRoZW4gdGhlIFJlZ0V4DQo+ID4gZW5naW5lDQo+ID4gKyAqIHdp bGwgcGFyc2UgQUJDIHBlcmZvcm0gYSB1c2VyZGVmaW5lZCBjYWxsb3V0IGFuZCByZXR1cm4gYSBz dWNjZXNzZnVsDQo+IG1hdGNoDQo+ID4gYXQNCj4gPiArICogRC4NCj4gPiArICoNCj4gPiArICog QHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gPiArICovDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfQkFDS1JFRkVSRU5DRV9G ICgxVUxMIDw8IDUpDQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgUENSRSBiYWNrcmVm ZXJlbmNlLg0KPiA+ICsgKiBFeGFtcGxlIFJlZ0V4IGlzICcoXDJBQkN8KEdISSkpKycgXDIgbWF0 Y2hlcyB0aGUgc2FtZSB0ZXh0IGFzIG1vc3QNCj4gPiByZWNlbnRseQ0KPiA+ICsgKiBtYXRjaGVk IGJ5IHRoZSAybmQgY2FwdHVyaW5nIGdyb3VwIGkuZS4gJ0dISScuDQo+ID4gKyAqDQo+ID4gKyAq IEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0K PiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX0dSRUVEWV9GICgxVUxM IDw8IDYpDQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgUENSRSBHcmVlZHkgbW9kZS4N Cj4gPiArICogRm9yIGV4YW1wbGUgaWYgdGhlIFJlZ0V4IGlzICdBQlxkKj8nIHRoZW4gJyo/JyBy ZXByZXNlbnRzIHplcm8gb3INCj4gdW5saW1pdGVkDQo+ID4gKyAqIG1hdGNoZXMuIEluIGdyZWVk eSBtb2RlIHRoZSBwYXR0ZXJuICdBQjEyMzQ1JyB3aWxsIGJlIG1hdGNoZWQNCj4gPiBjb21wbGV0 ZWx5DQo+ID4gKyAqIHdoZXJlIGFzIHRoZSB1bmdyZWVkeSBtb2RlICdBQicgd2lsbCBiZSByZXR1 cm5lZCBhcyB0aGUgbWF0Y2guDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdl eGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBS VEVfUkVHRVhERVZfU1VQUF9QQ1JFX01BVENIX0FMTF9GICgxVUxMIDw8IDcpDQo+ID4gKy8qKjwg UmVnRXggZGV2aWNlIHN1cHBvcnQgbWF0Y2ggYWxsIG1vZGUuDQo+ID4gKyAqIEZvciBleGFtcGxl IGlmIHRoZSBSZWdFeCBpcyAnQUJcZCo/JyB0aGVuICcqPycgcmVwcmVzZW50cyB6ZXJvIG9yDQo+ IHVubGltaXRlZA0KPiA+ICsgKiBtYXRjaGVzLiBJbiBtYXRjaCBhbGwgbW9kZSB0aGUgcGF0dGVy biAnQUIxMjM0NScgd2lsbCByZXR1cm4gNiBtYXRjaGVzLg0KPiA+ICsgKiBBQiwgQUIxLCBBQjEy LCBBQjEyMywgQUIxMjM0LCBBQjEyMzQ1Lg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBy dGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2FwYQ0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNk ZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfUENSRV9MT09LQVJPVU5EX0FTUlRfRiAoMVVMTCA8PCA4 KQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IFBDUkUgTG9va2Fyb3VuZCBhc3NlcnRp b25zDQo+ID4gKyAqIChaZXJvLXdpZHRoIGFzc2VydGlvbnMpLiBFeGFtcGxlIFJlZ0V4IGlzICdb YS16XStcZCsoPz0hezMsfSknIGlmDQo+ID4gKyAqIHRoZSBnaXZlbiBwYXR0ZXJuIGlzICdkd2Fk MTIzNCEnIHRoZSBSZWdFeCBlbmdpbmUgZG9lc24ndCByZXBvcnQgYW55DQo+ID4gbWF0Y2hlcw0K PiA+ICsgKiBiZWNhdXNlIHRoZSBhc3NlcnQgJyg/PSF7Myx9KScgZmFpbHMuIFRoZSBwYXR0ZXJu ICdkd2FkMTIzISEhJyB3b3VsZCByZXR1cm4NCj4gYQ0KPiA+ICsgKiBzdWNjZXNzZnVsIG1hdGNo Lg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhk ZXZfY2FwYQ0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBf UENSRV9NQVRDSF9QT0lOVF9SU1RfRiAoMVVMTCA8PCA5KQ0KPiA+ICsvKio8IFJlZ0V4IGRldmlj ZSBkb2Vzbid0IHN1cHBvcnQgUENSRSBtYXRjaCBwb2ludCByZXNldCBkaXJlY3RpdmUuDQo+ID4g KyAqIEV4YW1wbGUgUmVnRXggaXMgJ1thLXpdK1xLXGQrJyBpZiB0aGUgcGF0dGVybiBpcyAnZHdh ZDEyMycNCj4gPiArICogdGhlbiBldmVuIHRob3VnaCB0aGUgZW50aXJlIHBhdHRlcm4gbWF0Y2hl cyBvbmx5ICcxMjMnDQo+ID4gKyAqIGlzIHJlcG9ydGVkIGFzIGEgbWF0Y2guDQo+ID4gKyAqDQo+ ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ID4g KyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9ORVdMSU5FX0NPTlZF TlRJT05TX0YgKDFVTEwgPDwgMTApDQo+ID4gKy8qKjwgUmVnRXggc3VwcG9ydCBQQ1JFIG5ld2xp bmUgY29udmVudGlvbi4NCj4gPiArICogTmV3bGluZSBjb252ZW50aW9ucyBhcmUgcmVwcmVzZW50 ZWQgYXMgZm9sbG93czoNCj4gPiArICogKCpDUikgICAgICAgIGNhcnJpYWdlIHJldHVybg0KPiA+ ICsgKiAoKkxGKSAgICAgICAgbGluZWZlZWQNCj4gPiArICogKCpDUkxGKSAgICAgIGNhcnJpYWdl IHJldHVybiwgZm9sbG93ZWQgYnkgbGluZWZlZWQNCj4gPiArICogKCpBTllDUkxGKSAgIGFueSBv ZiB0aGUgdGhyZWUgYWJvdmUNCj4gPiArICogKCpBTlkpICAgICAgIGFsbCBVbmljb2RlIG5ld2xp bmUgc2VxdWVuY2VzDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9p bmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVH RVhERVZfU1VQUF9QQ1JFX05FV0xJTkVfU0VRX0YgKDFVTEwgPDwgMTEpDQo+ID4gKy8qKjwgUmVn RXggZGV2aWNlIHN1cHBvcnQgUENSRSBuZXdsaW5lIHNlcXVlbmNlLg0KPiA+ICsgKiBUaGUgZXNj YXBlIHNlcXVlbmNlICdcUicgd2lsbCBtYXRjaCBhbnkgbmV3bGluZSBzZXF1ZW5jZS4NCj4gPiAr ICogSXQgaXMgZXF1aXZhbGVudCB0bzogJyg/PlxyXG58XG58XHgwYnxcZnxccnxceDg1KScuDQo+ ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9j YXBhDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JF X1BPU1NFU1NJVkVfUVVBTElGSUVSU19GICgxVUxMIDw8DQo+IDEyKQ0KPiA+ICsvKio8IFJlZ0V4 IGRldmljZSBzdXBwb3J0IFBDUkUgcG9zc2Vzc2l2ZSBxdWFsaWZpZXJzLg0KPiA+ICsgKiBFeGFt cGxlIFJlZ0V4IHBvc3Nlc3NpdmUgcXVhbGlmaWVycyAnKisnLCAnKysnLCAnPysnLCAne20sbn0r Jy4NCj4gPiArICogUG9zc2Vzc2l2ZSBxdWFudGlmaWVyIHJlcGVhdHMgdGhlIHRva2VuIGFzIG1h bnkgdGltZXMgYXMgcG9zc2libGUgYW5kIGl0DQo+ID4gZG9lcw0KPiA+ICsgKiBub3QgZ2l2ZSB1 cCBtYXRjaGVzIGFzIHRoZSBlbmdpbmUgYmFja3RyYWNrcy4gV2l0aCBhIHBvc3Nlc3NpdmUNCj4g cXVhbnRpZmllciwNCj4gPiArICogdGhlIGRlYWwgaXMgYWxsIG9yIG5vdGhpbmcuDQo+ID4gKyAq DQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX1NVQlJP VVRJTkVfUkVGRVJFTkNFU19GICgxVUxMDQo+IDw8DQo+ID4gMTMpDQo+ID4gKy8qKjwgUmVnRXgg ZGV2aWNlIHN1cHBvcnQgUENSRSBTdWJyb3V0aW5lIHJlZmVyZW5jZXMuDQo+ID4gKyAqIFBDUkUg U3Vicm91dGluZSByZWZlcmVuY2VzIGFsbG93IGZvciBzdWIgcGF0dGVybnMgdG8gYmUgYXNzZXNz ZWQNCj4gPiArICogYXMgcGFydCBvZiB0aGUgUmVnRXguIEV4YW1wbGUgUmVnRXggaXMgJyhmb298 ZnV6eilcZzwxPitiYXInIG1hdGNoZXMgdGhlDQo+ID4gKyAqIHBhdHRlcm4gJ2Zvb2Zvb2Z1enpm b29mdXp6YmFyJy4NCj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2lu Zm86OnJlZ2V4ZGV2X2NhcGENCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdF WERFVl9TVVBQX1BDUkVfVVRGXzhfRiAoMVVMTCA8PCAxNCkNCj4gPiArLyoqPCBSZWdFeCBkZXZp Y2Ugc3VwcG9ydCBVVEYtOCBjaGFyYWN0ZXIgZW5jb2RpbmcuDQo+ID4gKyAqDQo+ID4gKyAqIEBz ZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ID4gKyAqLw0K PiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX1VURl8xNl9GICgxVUxM IDw8IDE1KQ0KPiA+ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IFVURi0xNiBjaGFyYWN0ZXIg ZW5jb2RpbmcuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZv OjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhE RVZfU1VQUF9QQ1JFX1VURl8zMl9GICgxVUxMIDw8IDE2KQ0KPiA+ICsvKio8IFJlZ0V4IGRldmlj ZSBzdXBwb3J0IFVURi0zMiBjaGFyYWN0ZXIgZW5jb2RpbmcuDQo+ID4gKyAqDQo+ID4gKyAqIEBz ZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX1dPUkRfQk9VTkRBUllfRiAo MVVMTCA8PCAxNykNCj4gPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCB3b3JkIGJvdW5kYXJp ZXMuDQo+ID4gKyAqIFRoZSBtZXRhIGNoYXJhY3RlciAnXGInIHJlcHJlc2VudHMgd29yZCBib3Vu ZGFyeSBhbmNob3IuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9p bmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVH RVhERVZfU1VQUF9QQ1JFX0ZPUldBUkRfUkVGRVJFTkNFU19GICgxVUxMIDw8DQo+IDE4KQ0KPiA+ ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IEZvcndhcmQgcmVmZXJlbmNlcy4NCj4gPiArICog Rm9yd2FyZCByZWZlcmVuY2VzIGFsbG93IHlvdSB0byB1c2UgYSBiYWNrIHJlZmVyZW5jZSB0byBh IGdyb3VwIHRoYXQNCj4gPiBhcHBlYXJzDQo+ID4gKyAqIGxhdGVyIGluIHRoZSBSZWdFeC4gRXhh bXBsZSBSZWdFeCBpcyAnKFwzQUJDfChERUZ8KEdISSkpKSsnIG1hdGNoZXMgdGhlDQo+ID4gKyAq IGZvbGxvd2luZyBzdHJpbmcgJ0dISUdISUFCQ0RFRicuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUg c3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ID4gKyAqLw0KPiA+ICsN Cj4gPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9NQVRDSF9BU19FTkRfRiAoMVVMTCA8PCAx OSkNCj4gPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBtYXRjaCBhcyBlbmQuDQo+ID4gKyAq IE1hdGNoIGFzIGVuZCBtZWFucyB0aGF0IHRoZSBtYXRjaCByZXN1bHQgaG9sZHMgdGhlIGVuZCBv ZmZzZXQgb2YgdGhlDQo+ID4gKyAqIGRldGVjdGVkIG1hdGNoLiBObyBsZW4gdmFsdWUgaXMgc2V0 Lg0KPiA+ICsgKiBJZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUgaXQg bWVhbnMgdGhlIG1hdGNoDQo+ID4gKyAqIHJlc3VsdCBob2xkcyB0aGUgc3RhcnRpbmcgcG9zaXRp b24gb2YgbWF0Y2ggYW5kIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoLg0KPiA+ICsgKg0KPiA+ICsg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2FwYQ0KPiA+ICsgKi8N Cj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfQ1JPU1NfQlVGRkVSX0YgKDFV TEwgPDwgMjApDQo+ID4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgY3Jvc3MgYnVmZmVyIG1h dGNoLg0KPiA+ICsgKiBDcm9zcyBidWZmZXIgbWF0Y2hpbmcgbWVhbnMgdGhhdCB0aGUgbWF0Y2gg Y2FuIGJlIGRldGVjdGVkIGV2ZW4gaWYgdGhlDQo+ID4gKyAqIHN0cmluZyB3YXMgc3RhcnRlZCBp biBwcmV2aW91cyBidWZmZXIuDQo+ID4gKyAqIEluIGNhc2UgdGhlIGRldmljZSBpcyBjb25maWd1 cmVkIGFzIFJURV9SRUdFWERFVl9DRkdfTUFUQ0hfQVNfRU5EDQo+ID4gKyAqIHRoZSBlbmQgb2Zm c2V0IHdpbGwgYmUgcmVsYXRpdmUgZm9yIHRoZSBmaXJzdCBwYWNrZXQuDQo+ID4gKyAqIEZvciBl eGFtcGxlIFJlZ0V4IGlzIEFCQyB0aGUgZmlyc3QgYnVmZmVyIGlzIHh4eHggc2Vjb25kIGJ1ZmZl ciB5eXlBIGFuZA0KPiA+ICsgKiB0aGUgbGFzdCBidWZmZXIgQkN6ei4NCj4gPiArICogSW4gY2Fz ZSB0aGUgbWF0Y2ggYXMgZW5kIGlzIGNvbmZpZ3VyZWQgdGhlIGVuZCBvZmZzZXQgd2lsbCBiZSAx MC4NCj4gPiArICoNCj4gPiArICogQHNlZSBSVEVfUkVHRVhERVZfQ0ZHX01BVENIX0FTX0VORF9G DQo+ID4gKyAqIEBzZWUgUlRFX1JFR0VYREVWX0NGR19DUk9TU19CVUZGRVJfU0NBTl9GDQo+ID4g KyAqIEBzZWUgUlRFX1JFR0VYX09QU19SU1BfUE1JX1NPSl9GDQo+ID4gKyAqIEBzZWUgUlRFX1JF R0VYX09QU19SU1BfUE1JX0VPSl9GDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVf UkVHRVhERVZfU1VQUF9NQVRDSF9BTExfRiAoMVVMTCA8PCAyMSkNCj4gPiArLyoqPCBSZWdFeCBk ZXZpY2Ugc3VwcG9ydCBtYXRjaCBhbGwuDQo+ID4gKyAqIE1hdGNoIGFsbCBtZWFucyB0aGF0IHRo ZSBSZWdFeCBlbmdpbmUgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIG1hdGNoZXMuDQo+ID4gKyAq IEZvciBleGFtcGxlLCBhc3N1bWUgdGhlIFJlZ0V4IGlzICdBK2InLCBnaXZlbiB0aGUgaW5wdXQg QUFBYiB0aGUNCj4gPiArICogcmV0dXJuZWQgbWF0Y2hlcyB3aWxsIGJlOiBBYiwgQUFiIGFuZCBB QUFiLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIFJURV9SRUdFWERFVl9DRkdfTUFUQ0hfQUxMX0YN Cj4gPiArICovDQo+ID4gKw0KPiA+ICsvKiBFbnVtZXJhdGVzIFBDUkUgcnVsZSBmbGFncyAqLw0K PiA+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfQUxMT1dfRU1QVFlfRiAoMVVMTCA8PCAw KQ0KPiA+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgdGhlIHBhdHRlcm4gdGhhdCBjYW4g bWF0Y2ggYWdhaW5zdCBhbiBlbXB0eQ0KPiBzdHJpbmcsDQo+ID4gKyAqIHN1Y2ggYXMgJy4qJyBh cmUgYWxsb3dlZC4NCj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2lu Zm86OnJ1bGVfZmxhZ3MNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1 bGVfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JV TEVfQU5DSE9SRURfRiAoMVVMTCA8PCAxKQ0KPiA+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNl dCwgdGhlIHBhdHRlcm4gaXMgZm9yY2VkIHRvIGJlICJhbmNob3JlZCIsIHRoYXQgaXMsIGl0DQo+ ID4gKyAqIGlzIGNvbnN0cmFpbmVkIHRvIG1hdGNoIG9ubHkgYXQgdGhlIGZpcnN0IG1hdGNoaW5n IHBvaW50IGluIHRoZSBzdHJpbmcgdGhhdA0KPiA+ICsgKiBpcyBiZWluZyBzZWFyY2hlZC4gU2lt aWxhciB0byAnXicgYW5kIHJlcHJlc2VudGVkIGJ5IFxBLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiA+ICsgKiBAc2VlIHN0cnVj dCBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNk ZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9DQVNFTEVTU19GICgxVUxMIDw8IDIpDQo+ID4gKy8q KjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBsZXR0ZXJzIGluIHRoZSBwYXR0ZXJuIG1hdGNoIGJv dGggdXBwZXIgYW5kIGxvd2VyDQo+ID4gKyAqIGNhc2UgbGV0dGVycyBpbiB0aGUgc3ViamVjdC4N Cj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxh Z3MNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVfZmxhZ3MNCj4g PiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfRE9UQUxMX0Yg KDFVTEwgPDwgMykNCj4gPiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGEgZG90IG1ldGFj aGFyYWN0ZXIgaW4gdGhlIHBhdHRlcm4gbWF0Y2hlcyBhbnkNCj4gPiArICogY2hhcmFjdGVyLCBp bmNsdWRpbmcgb25lIHRoYXQgaW5kaWNhdGVzIGEgbmV3bGluZS4NCj4gPiArICoNCj4gPiArICog QHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxhZ3MNCj4gPiArICogQHNlZSBz dHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfRFVQTkFNRVNfRiAoMVVMTCA8PCA0KQ0KPiA+ ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgbmFtZXMgdXNlZCB0byBpZGVudGlmeSBjYXB0 dXJlIGdyb3VwcyBuZWVkIG5vdA0KPiBiZQ0KPiA+ICsgKiB1bmlxdWUuDQo+ID4gKyAqDQo+ID4g KyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpydWxlX2ZsYWdzDQo+ID4gKyAqIEBz ZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpydWxlX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsN Cj4gPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX0VYVEVOREVEX0YgKDFVTEwgPDwgNSkN Cj4gPiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIG1vc3Qgd2hpdGUgc3BhY2UgY2hhcmFj dGVycyBpbiB0aGUgcGF0dGVybiBhcmUNCj4gPiArICogdG90YWxseSBpZ25vcmVkIGV4Y2VwdCB3 aGVuIGVzY2FwZWQgb3IgaW5zaWRlIGEgY2hhcmFjdGVyIGNsYXNzLg0KPiA+ICsgKg0KPiA+ICsg KiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiA+ICsgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9NQVRDSF9VTlNFVF9CQUNLUkVGX0YgKDFV TEwgPDwgNikNCj4gPiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGEgYmFja3JlZmVyZW5j ZSB0byBhbiB1bnNldCBjYXB0dXJlIGdyb3VwDQo+IG1hdGNoZXMNCj4gPiBhbg0KPiA+ICsgKiBl bXB0eSBzdHJpbmcuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9p bmZvOjpydWxlX2ZsYWdzDQo+ID4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpy dWxlX2ZsYWdzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9S VUxFX01VTFRJTElORV9GICgxVUxMIDw8IDcpDQo+ID4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgIGlz IHNldCwgdGhlICdeJyBhbmQgJyQnIGNvbnN0cnVjdHMgbWF0Y2ggaW1tZWRpYXRlbHkNCj4gPiAr ICogZm9sbG93aW5nIG9yIGltbWVkaWF0ZWx5IGJlZm9yZSBpbnRlcm5hbCBuZXdsaW5lcyBpbiB0 aGUgc3ViamVjdCBzdHJpbmcsDQo+ID4gKyAqIHJlc3BlY3RpdmVseSwgYXMgd2VsbCBhcyBhdCB0 aGUgdmVyeSBzdGFydCBhbmQgZW5kLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVf cmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhk ZXZfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JF R0VYX1BDUkVfUlVMRV9OT19BVVRPX0NBUFRVUkVfRiAoMVVMTCA8PCA4KQ0KPiA+ICsvKio8IFdo ZW4gdGhpcyBGbGFnIGlzIHNldCwgaXQgZGlzYWJsZXMgdGhlIHVzZSBvZiBudW1iZXJlZCBjYXB0 dXJpbmcNCj4gPiArICogcGFyZW50aGVzZXMgaW4gdGhlIHBhdHRlcm4uIFJlZmVyZW5jZXMgdG8g Y2FwdHVyZSBncm91cHMgKGJhY2tyZWZlcmVuY2VzDQo+ID4gb3INCj4gPiArICogcmVjdXJzaW9u L3N1YnJvdXRpbmUgY2FsbHMpIG1heSBvbmx5IHJlZmVyIHRvIG5hbWVkIGdyb3VwcywgdGhvdWdo IHRoZQ0KPiA+ICsgKiByZWZlcmVuY2UgY2FuIGJlIGJ5IG5hbWUgb3IgYnkgbnVtYmVyLg0KPiA+ ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0K PiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsg Ki8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9VQ1BfRiAoMVVMTCA8 PCA5KQ0KPiA+ICsvKio8IEJ5IGRlZmF1bHQsIG9ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcmVj b2duaXplZCwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LA0KPiA+ICsgKiBVbmljb2RlIHByb3BlcnRp ZXMgYXJlIHVzZWQgaW5zdGVhZCB0byBjbGFzc2lmeSBjaGFyYWN0ZXJzLg0KPiA+ICsgKg0KPiA+ ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiA+ICsgKiBA c2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiAr DQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9VTkdSRUVEWV9GICgxVUxMIDw8IDEw KQ0KPiA+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgdGhlICJncmVlZGluZXNzIiBvZiB0 aGUgcXVhbnRpZmllcnMgaXMgaW52ZXJ0ZWQNCj4gPiArICogc28gdGhhdCB0aGV5IGFyZSBub3Qg Z3JlZWR5IGJ5IGRlZmF1bHQsIGJ1dCBiZWNvbWUgZ3JlZWR5IGlmIGZvbGxvd2VkIGJ5DQo+ID4g KyAqICc/Jy4NCj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86 OnJ1bGVfZmxhZ3MNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVf ZmxhZ3MNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVf VVRGX0YgKDFVTEwgPDwgMTEpDQo+ID4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBSZWdF eCBlbmdpbmUgaGFzIHRvIHJlZ2FyZCBib3RoIHRoZSBwYXR0ZXJuIGFuZA0KPiA+IHRoZQ0KPiA+ ICsgKiBzdWJqZWN0IHN0cmluZ3MgdGhhdCBhcmUgc3Vic2VxdWVudGx5IHByb2Nlc3NlZCBhcyBz dHJpbmdzIG9mIFVURg0KPiBjaGFyYWN0ZXJzDQo+ID4gKyAqIGluc3RlYWQgb2Ygc2luZ2xlLWNv ZGUtdW5pdCBzdHJpbmdzLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhk ZXZfaW5mbzo6cnVsZV9mbGFncw0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVs ZTo6cnVsZV9mbGFncw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX1BD UkVfUlVMRV9ORVZFUl9CQUNLU0xBU0hfQ19GICgxVUxMIDw8IDEyKQ0KPiA+ICsvKio8IFRoaXMg ZmxhZyBsb2NrcyBvdXQgdGhlIHVzZSBvZiAnXEMnIGluIHRoZSBwYXR0ZXJuIHRoYXQgaXMgYmVp bmcgY29tcGlsZWQuDQo+ID4gKyAqIFRoaXMgZXNjYXBlIG1hdGNoZXMgb25lIGRhdGEgdW5pdCwg ZXZlbiBpbiBVVEYgbW9kZSB3aGljaCBjYW4gY2F1c2UNCj4gPiArICogdW5wcmVkaWN0YWJsZSBi ZWhhdmlvciBpbiBVVEYtOCBvciBVVEYtMTYgbW9kZXMsIGJlY2F1c2UgaXQgbWF5IGxlYXZlDQo+ IHRoZQ0KPiA+ICsgKiBjdXJyZW50IG1hdGNoaW5nIHBvaW50IGluIHRoZSBtaTpzZXQgaGxzZWFy Y2hkZGxlIG9mIGEgbXVsdGktY29kZS11bml0DQo+ID4gKyAqIGNoYXJhY3Rlci4NCj4gPiArICoN Cj4gPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxhZ3MNCj4gPiAr ICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gPiArICovDQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogUmVnRXggZGV2aWNlIGluZm9ybWF0aW9uDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm8gew0KPiA+ICsJY29uc3QgY2hhciAqZHJp dmVyX25hbWU7IC8qKjwgUmVnRXggZHJpdmVyIG5hbWUuICovDQo+ID4gKwlzdHJ1Y3QgcnRlX2Rl dmljZSAqZGV2OwkvKio8IERldmljZSBpbmZvcm1hdGlvbi4gKi8NCj4gPiArCXVpbnQxNl90IG1h eF9tYXRjaGVzOw0KPiA+ICsJLyoqPCBNYXhpbXVtIG1hdGNoZXMgcGVyIHNjYW4gc3VwcG9ydGVk IGJ5IHRoaXMgZGV2aWNlLiAqLw0KPiA+ICsJdWludDE2X3QgbWF4X3F1ZXVlX3BhaXJzOw0KPiA+ ICsJLyoqPCBNYXhpbXVtIHF1ZXVlIHBhaXJzIHN1cHBvcnRlZCBieSB0aGlzIGRldmljZS4gKi8N Cj4gPiArCXVpbnQxNl90IG1heF9wYXlsb2FkX3NpemU7DQo+ID4gKwkvKio8IE1heGltdW0gcGF5 bG9hZCBzaXplIGZvciBhIHBhdHRlcm4gbWF0Y2ggcmVxdWVzdCBvciBzY2FuLg0KPiA+ICsJICog QHNlZSBSVEVfUkVHRVhERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YNCj4gPiArCSAqLw0KPiA+ ICsJdWludDMyX3QgbWF4X3J1bGVzX3Blcl9ncm91cDsNCj4gPiArCS8qKjwgTWF4aW11bSBydWxl cyBzdXBwb3J0ZWQgcGVyIGdyb3VwIGJ5IHRoaXMgZGV2aWNlLiAqLw0KPiA+ICsJdWludDE2X3Qg bWF4X2dyb3VwczsNCj4gPiArCS8qKjwgTWF4aW11bSBncm91cHMgc3VwcG9ydGVkIGJ5IHRoaXMg ZGV2aWNlLiAqLw0KPiA+ICsJdWludDMyX3QgcmVnZXhkZXZfY2FwYTsNCj4gPiArCS8qKjwgUmVn RXggZGV2aWNlIGNhcGFiaWxpdGllcy4gQHNlZSBSVEVfUkVHRVhERVZfQ0FQQV8qICovDQo+ID4g Kwl1aW50NjRfdCBydWxlX2ZsYWdzOw0KPiA+ICsJLyoqPCBTdXBwb3J0ZWQgY29tcGlsZXIgcnVs ZSBmbGFncy4NCj4gPiArCSAqIEBzZWUgUlRFX1JFR0VYX1BDUkVfUlVMRV8qLCBzdHJ1Y3QNCj4g PiBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiA+ICsJICovDQo+ID4gK307DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0 aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsg KiBSZXRyaWV2ZSB0aGUgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBvZiBhIFJlZ0V4IGRldmljZS4N Cj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVy IG9mIHRoZSBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGRldl9pbmZvDQo+ ID4gKyAqICAgQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9yZWdleGRldl9p bmZvKiB0byBiZSBmaWxsZWQgd2l0aCB0aGUNCj4gPiArICogICBjb250ZXh0dWFsIGluZm9ybWF0 aW9uIG9mIHRoZSBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAt IDA6IFN1Y2Nlc3MsIGRyaXZlciB1cGRhdGVzIHRoZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIG9m IHRoZSBSZWdFeA0KPiBkZXZpY2UNCj4gPiArICogICAtIDwwOiBFcnJvciBjb2RlIHJldHVybmVk IGJ5IHRoZSBkcml2ZXIgaW5mbyBnZXQgZnVuY3Rpb24uDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9l eHBlcmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleGRldl9pbmZvX2dldCh1aW50OF90 IGRldl9pZCwgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvICpkZXZfaW5mbyk7DQo+ID4gKw0KPiA+ ICsvKiBFbnVtZXJhdGVzIFJlZ0V4IGRldmljZSBjb25maWd1cmF0aW9uIGZsYWdzICovDQo+ID4g KyNkZWZpbmUgUlRFX1JFR0VYREVWX0NGR19DUk9TU19CVUZGRVJfU0NBTl9GICgxVUxMIDw8IDAp DQo+ID4gKy8qKjwgQ3Jvc3MgYnVmZmVyIHNjYW4gcmVmZXJzIHRvIHRoZSBhYmlsaXR5IHRvIGJl IGFibGUgdG8gZGV0ZWN0DQo+ID4gKyAqIG1hdGNoZXMgdGhhdCBvY2N1ciBhY3Jvc3MgYnVmZmVy IGJvdW5kYXJpZXMsIHdoZXJlIHRoZSBidWZmZXJzIGFyZQ0KPiByZWxhdGVkDQo+ID4gKyAqIHRv IGVhY2ggb3RoZXIgaW4gc29tZSB3YXkuIEVuYWJsZSB0aGlzIGZsYWcgd2hlbiB0byBzY2FuIHBh eWxvYWQgc2l6ZQ0KPiA+ICsgKiBncmVhdGVyIHRoYW4gc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZv OjptYXhfcGF5bG9hZF9zaXplIGFuZC9vcg0KPiA+ICsgKiBtYXRjaGVzIGNhbiBwcmVzZW50IGFj cm9zcyBzY2FuIGJ1ZmZlciBib3VuZGFyaWVzLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVj dCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X3BheWxvYWRfc2l6ZQ0KPiA+ICsgKiBAc2VlIHN0cnVj dCBydGVfcmVnZXhkZXZfY29uZmlnOjpkZXZfY2ZnX2ZsYWdzLA0KPiBydGVfcmVnZXhkZXZfY29u ZmlndXJlKCkNCj4gPiArICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfU09KX0YNCj4gPiAr ICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfRU9KX0YNCj4gPiArICovDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFJURV9SRUdFWERFVl9DRkdfTUFUQ0hfQVNfRU5EX0YgKDFVTEwgPDwgMSkNCj4g PiArLyoqPCBNYXRjaCBhcyBlbmQgaXMgdGhlIGFiaWxpdHkgdG8gcmV0dXJuIHRoZSByZXN1bHQg YXMgZW5kaW5nIG9mZnNldC4NCj4gPiArICogV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgcmVz dWx0IGZvciBlYWNoIG1hdGNoIHdpbGwgaG9sZCB0aGUgZW5kaW5nDQo+ID4gKyAqIG9mZnNldCBv ZiB0aGUgbWF0Y2ggaW4gZW5kX29mZnNldC4NCj4gPiArICogSWYgdGhpcyBmbGFnIGlzIG5vdCBz ZXQsIHRoZW4gdGhlIG1hdGNoIHJlc3VsdCB3aWxsIGhvbGQgdGhlIHN0YXJ0aW5nIG9mZnNldA0K PiA+ICsgKiBpbiBzdGFydF9vZmZzZXQsIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaCBpbiBs ZW4uDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgUlRFX1JFR0VYREVWX1NVUFBfTUFUQ0hfQVNfRU5E X0YNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9DRkdfTUFUQ0hf QUxMX0YgKDFVTEwgPDwgMikNCj4gPiArLyoqPCBNYXRjaCBhbGwgaXMgdGhlIGFiaWxpdHkgdG8g cmV0dXJuIGFsbCBwb3NzaWJsZSByZXN1bHRzLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIFJURV9S RUdFWERFVl9TVVBQX01BVENIX0FMTF9GDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArLyoqIFJlZ0V4 IGRldmljZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSAqLw0KPiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4 ZGV2X2NvbmZpZyB7DQo+ID4gKwl1aW50MTZfdCBuYl9tYXhfbWF0Y2hlczsNCj4gPiArCS8qKjwg TWF4aW11bSBtYXRjaGVzIHBlciBzY2FuIGNvbmZpZ3VyZWQgb24gdGhpcyBkZXZpY2UuDQo+ID4g KwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICptYXhfbWF0Y2hlcyoNCj4gPiArCSAq IHdoaWNoIHByZXZpb3VzbHkgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0KCkuDQo+ ID4gKwkgKiBUaGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlLCB2YWx1ZSAxIHVz ZWQuDQo+ID4gKwkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X21hdGNoZXMN Cj4gPiArCSAqLw0KPiA+ICsJdWludDE2X3QgbmJfcXVldWVfcGFpcnM7DQo+ID4gKwkvKio8IE51 bWJlciBvZiBSZWdFeCBxdWV1ZSBwYWlycyB0byBjb25maWd1cmUgb24gdGhpcyBkZXZpY2UuDQo+ ID4gKwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICptYXhfcXVldWVfcGFpcnMqIHdo aWNoIHByZXZpb3VzbHkNCj4gPiArCSAqIHByb3ZpZGVkIGluIHJ0ZV9yZWdleGRldl9pbmZvX2dl dCgpLg0KPiA+ICsJICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1heF9xdWV1ZV9w YWlycw0KPiA+ICsJICovDQo+ID4gKwl1aW50MzJfdCBuYl9ydWxlc19wZXJfZ3JvdXA7DQo+ID4g KwkvKio8IE51bWJlciBvZiBydWxlcyBwZXIgZ3JvdXAgdG8gY29uZmlndXJlIG9uIHRoaXMgZGV2 aWNlLg0KPiA+ICsJICogVGhpcyB2YWx1ZSBjYW5ub3QgZXhjZWVkIHRoZSAqbWF4X3J1bGVzX3Bl cl9ncm91cCoNCj4gPiArCSAqIHdoaWNoIHByZXZpb3VzbHkgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4 ZGV2X2luZm9fZ2V0KCkuDQo+ID4gKwkgKiBUaGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3aGlj aCBjYXNlLA0KPiA+ICsJICogc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjptYXhfcnVsZXNfcGVy X2dyb3VwIHVzZWQuDQo+ID4gKwkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4 X3J1bGVzX3Blcl9ncm91cA0KPiA+ICsJICovDQo+ID4gKwl1aW50MTZfdCBuYl9ncm91cHM7DQo+ ID4gKwkvKio8IE51bWJlciBvZiBncm91cHMgdG8gY29uZmlndXJlIG9uIHRoaXMgZGV2aWNlLg0K PiA+ICsJICogVGhpcyB2YWx1ZSBjYW5ub3QgZXhjZWVkIHRoZSAqbWF4X2dyb3VwcyoNCj4gPiAr CSAqIHdoaWNoIHByZXZpb3VzbHkgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0KCku DQo+ID4gKwkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X2dyb3Vwcw0KPiA+ ICsJICovDQo+ID4gKwljb25zdCBjaGFyICpydWxlX2RiOw0KPiA+ICsJLyoqPCBJbXBvcnQgaW5p dGlhbCBzZXQgb2YgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZSBvbiB0aGlzIGRldmljZS4NCj4gPiAr CSAqIFRoZSB2YWx1ZSBOVUxMIGlzIGFsbG93ZWQsIGluIHdoaWNoIGNhc2UsIHRoZSBkZXZpY2Ug d2lsbCBub3QNCj4gPiArCSAqIGJlIGNvbmZpZ3VyZWQgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4g QXBwbGljYXRpb24gbWF5IHVzZQ0KPiA+ICsJICogcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRl KCkgb3IgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfaW1wb3J0KCkNCj4gPiBBUEkNCj4gPiArCSAqIHRv IHVwZGF0ZSBvciBpbXBvcnQgcnVsZSBkYXRhYmFzZSBhZnRlciB0aGUNCj4gPiArCSAqIHJ0ZV9y ZWdleGRldl9jb25maWd1cmUoKS4NCj4gPiArCSAqIEBzZWUgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJf dXBkYXRlKCksDQo+ID4gcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfaW1wb3J0KCkNCj4gPiArCSAqLw0K PiA+ICsJdWludDMyX3QgcnVsZV9kYl9sZW47DQo+ID4gKwkvKio8IExlbmd0aCBvZiAqcnVsZV9k YiogYnVmZmVyLiAqLw0KPiA+ICsJdWludDMyX3QgZGV2X2NmZ19mbGFnczsNCj4gPiArCS8qKjwg UmVnRXggZGV2aWNlIGNvbmZpZ3VyYXRpb24gZmxhZ3MsIFNlZSBSVEVfUkVHRVhERVZfQ0ZHXyog ICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICog QGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNl Lg0KPiA+ICsgKg0KPiA+ICsgKiBDb25maWd1cmUgYSBSZWdFeCBkZXZpY2UuDQo+ID4gKyAqDQo+ ID4gKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBpbnZva2VkIGZpcnN0IGJlZm9yZSBhbnkgb3Ro ZXIgZnVuY3Rpb24gaW4gdGhlDQo+ID4gKyAqIEFQSS4gVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBi ZSByZS1pbnZva2VkIHdoZW4gYSBkZXZpY2UgaXMgaW4gdGhlDQo+ID4gKyAqIHN0b3BwZWQgc3Rh dGUuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBjYWxsZXIgbWF5IHVzZSBydGVfcmVnZXhkZXZfaW5m b19nZXQoKSB0byBnZXQgdGhlIGNhcGFiaWxpdHkgb2YgZWFjaA0KPiA+ICsgKiByZXNvdXJjZXMg YXZhaWxhYmxlIGZvciB0aGlzIHJlZ2V4IGRldmljZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UgdG8gY29uZmln dXJlLg0KPiA+ICsgKiBAcGFyYW0gY2ZnDQo+ID4gKyAqICAgVGhlIFJlZ0V4IGRldmljZSBjb25m aWd1cmF0aW9uIHN0cnVjdHVyZS4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAg IC0gMDogU3VjY2VzcywgZGV2aWNlIGNvbmZpZ3VyZWQuIE90aGVyd2lzZSBuZWdhdGl2ZSBlcnJu byBpcyByZXR1cm5lZC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtp bnQNCj4gPiArcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSh1aW50OF90IGRldl9pZCwgY29uc3Qgc3Ry dWN0IHJ0ZV9yZWdleGRldl9jb25maWcNCj4gPiAqY2ZnKTsNCj4gPiArDQo+ID4gKy8qIEVudW1l cmF0ZXMgUmVnRXggcXVldWUgcGFpciBjb25maWd1cmF0aW9uIGZsYWdzICovDQo+ID4gKyNkZWZp bmUgUlRFX1JFR0VYX1FVRVVFX1BBSVJfQ0ZHX09PU19GICgxVUxMIDw8IDApDQo+ID4gKy8qKjwg T3V0IG9mIG9yZGVyIHNjYW4sIElmIG5vdCBzZXQsIGEgc2NhbiBtdXN0IHJldGlyZSBhZnRlciBw cmV2aW91c2x5IGlzc3VlZA0KPiA+ICsgKiBpbi1vcmRlciBzY2FucyB0byB0aGlzIHF1ZXVlIHBh aXIuIElmIHNldCwgdGhpcyBzY2FuIGNhbiBiZSByZXRpcmVkIGFzIHNvb24NCj4gPiArICogYXMg ZGV2aWNlIHJldHVybnMgY29tcGxldGlvbi4gQXBwbGljYXRpb24gc2hvdWxkIG5vdCBzZXQgb3V0 IG9mIG9yZGVyIHNjYW4NCj4gPiArICogZmxhZyBpZiBpdCBuZWVkcyB0byBtYWludGFpbiB0aGUg aW5ncmVzcyBvcmRlciBvZiBzY2FuIHJlcXVlc3QuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgc3Ry dWN0IHJ0ZV9yZWdleGRldl9xcF9jb25mOjpxcF9jb25mX2ZsYWdzDQo+ID4gKyAqIEBzZWUgcnRl X3JlZ2V4ZGV2X3F1ZXVlX3BhaXJfc2V0dXAoKQ0KPiA+ICsgKi8NCj4gPiArDQo+ID4gK3N0cnVj dCBydGVfcmVnZXhfb3BzOw0KPiA+ICt0eXBlZGVmIHZvaWQgKCpyZWdleGRldl9zdG9wX2ZsdXNo X3QpKHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxcF9pZCwNCj4gPiArCQkJCSAgICAgIHN0cnVj dCBydGVfcmVnZXhfb3BzICpvcCk7DQo+ID4gKy8qKjwgQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVk IGR1cmluZyBydGVfcmVnZXhkZXZfc3RvcCgpLCBpbnZva2VkIG9uY2UgcGVyDQo+ID4gKyAqIGZs dXNoZWQgUmVnRXggb3AuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArLyoqIFJlZ0V4IHF1ZXVlIHBh aXIgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgKi8NCj4gPiArc3RydWN0IHJ0ZV9yZWdleGRldl9x cF9jb25mIHsNCj4gPiArCXVpbnQzMl90IHFwX2NvbmZfZmxhZ3M7DQo+ID4gKwkvKio8IFF1ZXVl IHBhaXIgY29uZmlnIGZsYWdzLCBTZWUgUlRFX1JFR0VYX1FVRVVFX1BBSVJfQ0ZHXyogKi8NCj4g PiArCXVpbnQxNl90IG5iX2Rlc2M7DQo+ID4gKwkvKio8IFRoZSBudW1iZXIgb2YgZGVzY3JpcHRv cnMgdG8gYWxsb2NhdGUgZm9yIHRoaXMgcXVldWUgcGFpci4gKi8NCj4gPiArCXJlZ2V4ZGV2X3N0 b3BfZmx1c2hfdCBjYjsNCj4gPiArCS8qKjwgQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIGR1cmlu ZyBydGVfcmVnZXhkZXZfc3RvcCgpLCBpbnZva2VkDQo+ID4gKwkgKiBvbmNlIHBlciBmbHVzaGVk IHJlZ2V4IG9wLiBWYWx1ZSBOVUxMIGlzIGFsbG93ZWQsIGluIHdoaWNoIGNhc2UNCj4gPiArCSAq IGNhbGxiYWNrIHdpbGwgbm90IGJlIGludm9rZWQuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQg dG8gcHJvcGVybHkNCj4gPiArCSAqIGRpc3Bvc2Ugb2Ygb3V0c3RhbmRpbmcgcmVnZXggb3BzIGZy b20gcmVzcG9uc2UgcXVldWUsDQo+ID4gKwkgKiBmb3IgZXhhbXBsZSBvcHMgY29udGFpbmluZyBt ZW1vcnkgcG9pbnRlcnMuDQo+ID4gKwkgKiBAc2VlIHJ0ZV9yZWdleGRldl9zdG9wKCkNCj4gPiAr CSAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAq IEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGlj ZS4NCj4gPiArICoNCj4gPiArICogQWxsb2NhdGUgYW5kIHNldCB1cCBhIFJlZ0V4IHF1ZXVlIHBh aXIgZm9yIGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ ID4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gPiArICogQHBhcmFtIHF1 ZXVlX3BhaXJfaWQNCj4gPiArICogICBUaGUgaW5kZXggb2YgdGhlIFJlZ0V4IHF1ZXVlIHBhaXIg dG8gc2V0dXAuIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZQ0KPiA+IHJhbmdlDQo+ID4gKyAqICAg WzAsIG5iX3F1ZXVlX3BhaXJzIC0gMV0gcHJldmlvdXNseSBzdXBwbGllZCB0byBydGVfcmVnZXhk ZXZfY29uZmlndXJlKCkuDQo+ID4gKyAqIEBwYXJhbSBxcF9jb25mDQo+ID4gKyAqICAgVGhlIHBv aW50ZXIgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBiZSB1c2VkIGZvciB0aGUgUmVnRXgg cXVldWUNCj4gcGFpci4NCj4gPiArICogICBOVUxMIHZhbHVlIGlzIGFsbG93ZWQsIGluIHdoaWNo IGNhc2UgZGVmYXVsdCBjb25maWd1cmF0aW9uCXVzZWQuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1 cm4NCj4gPiArICogICAwIG9uIHN1Y2Nlc3MuIE90aGVyd2lzZSBuZWdhdGl2ZSBlcnJubyBpcyBy ZXR1cm5lZC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4g PiArcnRlX3JlZ2V4ZGV2X3F1ZXVlX3BhaXJfc2V0dXAodWludDhfdCBkZXZfaWQsIHVpbnQxNl90 IHF1ZXVlX3BhaXJfaWQsDQo+ID4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBydGVfcmVnZXhkZXZf cXBfY29uZiAqcXBfY29uZik7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4g PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBTdGFydCBhIFJlZ0V4IGRldmljZS4NCj4gPiArICoN Cj4gPiArICogVGhlIGRldmljZSBzdGFydCBzdGVwIGlzIHRoZSBsYXN0IG9uZSBhbmQgY29uc2lz dHMgb2Ygc2V0dGluZyB0aGUgUmVnRXgNCj4gPiArICogcXVldWVzIHRvIHN0YXJ0IGFjY2VwdGlu ZyB0aGUgcGF0dGVybiBtYXRjaGluZyBzY2FuIHJlcXVlc3RzLg0KPiA+ICsgKg0KPiA+ICsgKiBP biBzdWNjZXNzLCBhbGwgYmFzaWMgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZSBBUEkgKFJlZ0V4 IGVucXVldWUsDQo+ID4gKyAqIFJlZ0V4IGRlcXVldWUgYW5kIHNvIG9uKSBjYW4gYmUgaW52b2tl ZC4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldl9pZA0KPiA+ICsgKiAgIFJlZ0V4IGRldmlj ZSBpZGVudGlmaWVyLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgMCBvbiBz dWNjZXNzLiBPdGhlcndpc2UgbmVnYXRpdmUgZXJybm8gaXMgcmV0dXJuZWQuDQo+ID4gKyAqLw0K PiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleGRldl9zdGFy dCh1aW50OF90IGRldl9pZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4g PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBTdG9wIGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0K PiA+ICsgKiBTdG9wIGEgUmVnRXggZGV2aWNlLiBUaGUgZGV2aWNlIGNhbiBiZSByZXN0YXJ0ZWQg d2l0aCBhIGNhbGwgdG8NCj4gPiArICogcnRlX3JlZ2V4ZGV2X3N0YXJ0KCkuDQo+ID4gKyAqDQo+ ID4gKyAqIFRoaXMgZnVuY3Rpb24gY2F1c2VzIGFsbCBxdWV1ZWQgcmVzcG9uc2UgcmVnZXggb3Bz IHRvIGJlIGRyYWluZWQgaW4gdGhlDQo+ID4gKyAqIHJlc3BvbnNlIHF1ZXVlLiBXaGlsZSBkcmFp bmluZyBvcHMgb3V0IG9mIHRoZSBkZXZpY2UsDQo+ID4gKyAqIHN0cnVjdCBydGVfcmVnZXhkZXZf cXBfY29uZjo6Y2Igd2lsbCBiZSBpbnZva2VkIGZvciBlYWNoIG9wcy4NCj4gPiArICoNCj4gPiAr ICogQHBhcmFtIGRldl9pZA0KPiA+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiA+ ICsgKg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcXBfY29uZjo6Y2IsIHJ0ZV9y ZWdleGRldl9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1l bnRhbA0KPiA+ICt2b2lkDQo+ID4gK3J0ZV9yZWdleGRldl9zdG9wKHVpbnQ4X3QgZGV2X2lkKTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5U QUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ ID4gKyAqIENsb3NlIGEgUmVnRXggZGV2aWNlLiBUaGUgZGV2aWNlIGNhbm5vdCBiZSByZXN0YXJ0 ZWQhDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPiArICogICBSZWdFeCBkZXZp Y2UgaWRlbnRpZmllcg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgMCBvbiBz dWNjZXNzLiBPdGhlcndpc2UgbmVnYXRpdmUgZXJybm8gaXMgcmV0dXJuZWQuDQo+ID4gKyAqLw0K PiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleGRldl9jbG9z ZSh1aW50OF90IGRldl9pZCk7DQo+ID4gKw0KPiA+ICsvKiBEZXZpY2UgZ2V0L3NldCBhdHRyaWJ1 dGVzICovDQo+ID4gKw0KPiA+ICsvKiogRW51bWVyYXRlcyBSZWdFeCBkZXZpY2UgYXR0cmlidXRl IGlkZW50aWZpZXIgKi8NCj4gPiArZW51bSBydGVfcmVnZXhkZXZfYXR0cl9pZCB7DQo+ID4gKwlS VEVfUkVHRVhERVZfQVRUUl9TT0NLRVRfSUQsDQo+ID4gKwkvKio8IFRoZSBOVU1BIHNvY2tldCBp ZCB0byB3aGljaCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCBvcg0KPiA+ICsJICogYSBkZWZhdWx0 IG9mIHplcm8gaWYgdGhlIHNvY2tldCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4NCj4gPiArCSAq IGRhdGF0eXBlOiAqaW50Kg0KPiA+ICsJICogb3BlcmF0aW9uOiAqZ2V0Kg0KPiA+ICsJICovDQo+ ID4gKwlSVEVfUkVHRVhERVZfQVRUUl9NQVhfTUFUQ0hFUywNCj4gPiArCS8qKjwgTWF4aW11bSBu dW1iZXIgb2YgbWF0Y2hlcyBwZXIgc2Nhbi4NCj4gPiArCSAqIGRhdGF0eXBlOiAqdWludDhfdCoN Cj4gPiArCSAqIG9wZXJhdGlvbjogKmdldCogYW5kICpzZXQqDQo+ID4gKwkgKiBAc2VlIFJURV9S RUdFWF9PUFNfUlNQX01BWF9NQVRDSF9GDQo+ID4gKwkgKi8NCj4gPiArCVJURV9SRUdFWERFVl9B VFRSX01BWF9TQ0FOX1RJTUVPVVQsDQo+ID4gKwkvKio8IFVwcGVyIGJvdW5kIHNjYW4gdGltZSBp biBucy4NCj4gPiArCSAqIGRhdGF0eXBlOiAqdWludDE2X3QqDQo+ID4gKwkgKiBvcGVyYXRpb246 ICpnZXQqIGFuZCAqc2V0Kg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9NQVhfU0NB Tl9USU1FT1VUX0YNCj4gPiArCSAqLw0KPiA+ICsJUlRFX1JFR0VYREVWX0FUVFJfTUFYX1BSRUZJ WCwNCj4gPiArCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgcHJlZml4IGRldGVjdGVkIHBlciBzY2Fu Lg0KPiA+ICsJICogVGhpcyB3b3VsZCBiZSB1c2VmdWwgZm9yIGRlbmlhbCBvZiBzZXJ2aWNlIGRl dGVjdGlvbi4NCj4gPiArCSAqIGRhdGF0eXBlOiAqdWludDE2X3QqDQo+ID4gKwkgKiBvcGVyYXRp b246ICpnZXQqIGFuZCAqc2V0Kg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9NQVhf UFJFRklYX0YNCj4gPiArCSAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3 YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRo b3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogR2V0IGFuIGF0dHJpYnV0ZSBmcm9t IGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAq ICAgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIuDQo+ID4gKyAqIEBwYXJhbSBhdHRyX2lkDQo+ID4g KyAqICAgVGhlIGF0dHJpYnV0ZSBJRCB0byByZXRyaWV2ZS4NCj4gPiArICogQHBhcmFtIGF0dHJf dmFsdWUNCj4gPiArICogICBBIHBvaW50ZXIgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRo ZSBhdHRyaWJ1dGUNCj4gPiArICogICB2YWx1ZSBpZiBzdWNjZXNzZnVsLg0KPiA+ICsgKg0KPiA+ ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIGF0dHJp YnV0ZSB2YWx1ZS4NCj4gPiArICogICAtIC1FSU5WQUw6IEludmFsaWQgZGV2aWNlIG9yICAqYXR0 cl9pZCogcHJvdmlkZWQsIG9yICphdHRyX3ZhbHVlKiBpcyBOVUxMLg0KPiA+ICsgKiAgIC0gLUVO T1RTVVA6IGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHNwZWNpZmljICphdHRyX2lkKi4N Cj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX3Jl Z2V4ZGV2X2F0dHJfZ2V0KHVpbnQ4X3QgZGV2X2lkLCBlbnVtIHJ0ZV9yZWdleGRldl9hdHRyX2lk IGF0dHJfaWQsDQo+ID4gKwkJICAgICAgdm9pZCAqYXR0cl92YWx1ZSk7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBt YXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBTZXQgYW4g YXR0cmlidXRlIHRvIGEgUmVnRXggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2 X2lkDQo+ID4gKyAqICAgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIuDQo+ID4gKyAqIEBwYXJhbSBh dHRyX2lkDQo+ID4gKyAqICAgVGhlIGF0dHJpYnV0ZSBJRCB0byByZXRyaWV2ZS4NCj4gPiArICog QHBhcmFtIGF0dHJfdmFsdWUNCj4gPiArICogICBQb2ludGVyIHRoYXQgd2lsbCBiZSBmaWxsZWQg aW4gd2l0aCB0aGUgYXR0cmlidXRlIHZhbHVlDQo+ID4gKyAqICAgYnkgdGhlIGFwcGxpY2F0aW9u Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkg YXBwbGllZCB0aGUgYXR0cmlidXRlIHZhbHVlLg0KPiA+ICsgKiAgIC0gLUVJTlZBTDogSW52YWxp ZCBkZXZpY2Ugb3IgICphdHRyX2lkKiBwcm92aWRlZCwgb3IgKmF0dHJfdmFsdWUqIGlzIE5VTEwu DQo+ID4gKyAqICAgLSAtRU5PVFNVUDogaWYgdGhlIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgc3Bl Y2lmaWMgKmF0dHJfaWQqLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4g K2ludA0KPiA+ICtydGVfcmVnZXhkZXZfYXR0cl9zZXQodWludDhfdCBkZXZfaWQsIGVudW0gcnRl X3JlZ2V4ZGV2X2F0dHJfaWQgYXR0cl9pZCwNCj4gPiArCQkgICAgICBjb25zdCB2b2lkICphdHRy X3ZhbHVlKTsNCj4gPiArDQo+ID4gKy8qIFJ1bGUgcmVsYXRlZCBBUElzICovDQo+ID4gKy8qKiBF bnVtZXJhdGVzIFJlZ0V4IHJ1bGUgb3BlcmF0aW9uLiAqLw0KPiA+ICtlbnVtIHJ0ZV9yZWdleGRl dl9ydWxlX29wIHsNCj4gPiArCVJURV9SRUdFWF9SVUxFX09QX0FERCwNCj4gPiArCS8qKjwgQWRk IFJlZ0V4IHJ1bGUgdG8gcnVsZSBkYXRhYmFzZS4gKi8NCj4gPiArCVJURV9SRUdFWF9SVUxFX09Q X1JFTU9WRQ0KPiA+ICsJLyoqPCBSZW1vdmUgUmVnRXggcnVsZSBmcm9tIHJ1bGUgZGF0YWJhc2Uu ICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiogU3RydWN0dXJlIHRvIGhvbGQgYSBSZWdFeCBy dWxlIGF0dHJpYnV0ZXMuICovDQo+ID4gK3N0cnVjdCBydGVfcmVnZXhkZXZfcnVsZSB7DQo+ID4g KwllbnVtIHJ0ZV9yZWdleGRldl9ydWxlX29wIG9wOw0KPiA+ICsJLyoqPCBPUCB0eXBlIG9mIHRo ZSBydWxlIGVpdGhlciBhIE9QX0FERCBvciBPUF9ERUxFVEUuICovDQo+ID4gKwl1aW50MTZfdCBn cm91cF9pZDsNCj4gPiArCS8qKjwgR3JvdXAgaWRlbnRpZmllciB0byB3aGljaCB0aGUgcnVsZSBi ZWxvbmdzIHRvLiAqLw0KPiA+ICsJdWludDMyX3QgcnVsZV9pZDsNCj4gPiArCS8qKjwgUnVsZSBp ZGVudGlmaWVyIHdoaWNoIGlzIHJldHVybmVkIG9uIHN1Y2Nlc3NmdWwgbWF0Y2guICovDQo+ID4g Kwljb25zdCBjaGFyICpwY3JlX3J1bGU7DQo+ID4gKwkvKio8IEJ1ZmZlciB0byBob2xkIHRoZSBQ Q1JFIHJ1bGUuICovDQo+ID4gKwl1aW50MTZfdCBwY3JlX3J1bGVfbGVuOw0KPiA+ICsJLyoqPCBM ZW5ndGggb2YgdGhlIFBDUkUgcnVsZS4gKi8NCj4gPiArCXVpbnQ2NF90IHJ1bGVfZmxhZ3M7DQo+ ID4gKwkvKiBQQ1JFIHJ1bGUgZmxhZ3MuIFN1cHBvcnRlZCBkZXZpY2Ugc3BlY2lmaWMgUENSRSBy dWxlcyBlbnVtZXJhdGVkDQo+ID4gKwkgKiBpbiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1 bGVfZmxhZ3MuIEZvciBzdWNjZXNzZnVsIHJ1bGUNCj4gPiArCSAqIGRhdGFiYXNlIHVwZGF0ZSwg YXBwbGljYXRpb24gbmVlZHMgdG8gcHJvdmlkZSBvbmx5IHN1cHBvcnRlZA0KPiA+ICsJICogcnVs ZSBmbGFncy4NCj4gPiArCSAqIEBTZWUgUlRFX1JFR0VYX1BDUkVfUlVMRV8qLCBzdHJ1Y3QNCj4g PiBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiA+ICsJICovDQo+ID4gK307DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0 aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsg KiBVcGRhdGUgdGhlIGxvY2FsIHJ1bGUgc2V0Lg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9ucyBvbmx5 IG1vZGlmeSB0aGUgcnVsZSBzZXQgaW4gbWVtb3J5Lg0KPiA+ICsgKiBJbiBvcmRlciBmb3IgdGhl IGNoYW5nZXMgdG8gdGFrZSBlZmZlY3QsIHRoZSBmdW5jdGlvbg0KPiA+ICsgKiBydGVfcmVnZXhk ZXZfcnVsZV9kYl9jb21waWxlX2FjdGl2ZSBtdXN0IGJlIGNhbGxlZC4NCj4gPiArICoNCj4gPiAr ICogQHBhcmFtIGRldl9pZA0KPiA+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiA+ ICsgKiBAcGFyYW0gcnVsZXMNCj4gPiArICogICBQb2ludHMgdG8gYW4gYXJyYXkgb2YgKm5iX3J1 bGVzKiBvYmplY3RzIG9mIHR5cGUgKnJ0ZV9yZWdleGRldl9ydWxlKg0KPiA+ICsgKiAgIHN0cnVj dHVyZSB3aGljaCBjb250YWluIHRoZSByZWdleCBydWxlcyBhdHRyaWJ1dGVzIHRvIGJlIHVwZGF0 ZWQNCj4gPiArICogICBpbiBydWxlIGRhdGFiYXNlLg0KPiA+ICsgKiBAcGFyYW0gbmJfcnVsZXMN Cj4gPiArICogICBUaGUgbnVtYmVyIG9mIFBDUkUgcnVsZXMgdG8gdXBkYXRlIHRoZSBydWxlIGRh dGFiYXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgVGhlIG51bWJlciBv ZiByZWdleCBydWxlcyBhY3R1YWxseSB1cGRhdGVkIG9uIHRoZSByZWdleCBkZXZpY2UncyBydWxl DQo+ID4gKyAqICAgZGF0YWJhc2UuIFRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIGxlc3MgdGhhbiB0 aGUgdmFsdWUgb2YgdGhlICpuYl9ydWxlcyoNCj4gPiArICogICBwYXJhbWV0ZXIgd2hlbiB0aGUg cmVnZXggZGV2aWNlcyBmYWlscyB0byB1cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2Ugb3INCj4gPiAr ICogICBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBpbiBhICpydGVfcmVnZXhk ZXZfcnVsZSouDQo+ID4gKyAqICAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNzIHRoYW4gKm5i X3J1bGVzKiwgdGhlIHJlbWFpbmluZyBQQ1JFIHJ1bGVzDQo+ID4gKyAqICAgYXQgdGhlIGVuZCBv ZiAqcnVsZXMqIGFyZSBub3QgY29uc3VtZWQgYW5kIHRoZSBjYWxsZXIgaGFzIHRvIHRha2UNCj4g PiArICogICBjYXJlIG9mIHRoZW0gYW5kIHJ0ZV9lcnJubyBpcyBzZXQgYWNjb3JkaW5nbHkuDQo+ ID4gKyAqICAgUG9zc2libGUgZXJybm8gdmFsdWVzIGluY2x1ZGU6DQo+ID4gKyAqICAgLSAtRUlO VkFMOiAgSW52YWxpZCBkZXZpY2UgSUQgb3IgcnVsZXMgaXMgTlVMTA0KPiA+ICsgKiAgIC0gLUVO T1RTVVA6IFRoZSBsYXN0IHByb2Nlc3NlZCBydWxlIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBk ZXZpY2UuDQo+ID4gKyAqICAgLSAtRU5PU1BDOiBObyBzcGFjZSBhdmFpbGFibGUgaW4gcnVsZSBk YXRhYmFzZS4NCj4gPiArICoNCj4gPiArICogQHNlZSBydGVfcmVnZXhkZXZfcnVsZV9kYl9pbXBv cnQoKSwgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfZXhwb3J0KCksDQo+ID4gKyAqICAgcnRlX3JlZ2V4 ZGV2X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0ZSgpDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBl cmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleGRldl9ydWxlX2RiX3VwZGF0ZSh1aW50 OF90IGRldl9pZCwNCj4gPiArCQkJICAgIGNvbnN0IHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZSAq cnVsZXMsDQo+ID4gKwkJCSAgICB1aW50MzJfdCBuYl9ydWxlcyk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkg Y2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBDb21waWxlIGxv Y2FsIHJ1bGUgc2V0IGFuZCBidXJuIHRoZSBjb21wbGllZCByZXN1bHQgdG8gdGhlDQo+ID4gKyAq IFJlZ0V4IGRlaXZlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAg UmVnRXggZGV2aWNlIGlkZW50aWZpZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiAr ICogICAwIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBuZWdhdGl2ZSBlcnJuby4NCj4gPiArICoNCj4g PiArICogQHNlZSBydGVfcmVnZXhkZXZfcnVsZV9kYl9pbXBvcnQoKSwgcnRlX3JlZ2V4ZGV2X3J1 bGVfZGJfZXhwb3J0KCksDQo+ID4gKyAqICAgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlKCkN Cj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX3Jl Z2V4ZGV2X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0ZSh1aW50OF90IGRldl9pZCk7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlz IEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBJ bXBvcnQgYSBwcmVidWlsdCBydWxlIGRhdGFiYXNlIGZyb20gYSBidWZmZXIgdG8gYSBSZWdFeCBk ZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPiArICogICBSZWdFeCBk ZXZpY2UgaWRlbnRpZmllci4NCj4gPiArICogQHBhcmFtIHJ1bGVfZGINCj4gPiArICogICBQb2lu dHMgdG8gcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4NCj4gPiArICogQHBhcmFtIHJ1bGVfZGJfbGVu DQo+ID4gKyAqICAgTGVuZ3RoIG9mIHRoZSBydWxlIGRhdGFiYXNlLg0KPiA+ICsgKg0KPiA+ICsg KiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkgdXBkYXRlZCB0aGUgcHJlYnVp bHQgcnVsZSBkYXRhYmFzZS4NCj4gPiArICogICAtIC1FSU5WQUw6ICBJbnZhbGlkIGRldmljZSBJ RCBvciBydWxlX2RiIGlzIE5VTEwNCj4gPiArICogICAtIC1FTk9UU1VQOiBSdWxlIGRhdGFiYXNl IGltcG9ydCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgZGV2aWNlLg0KPiA+ICsgKiAgIC0gLUVO T1NQQzogTm8gc3BhY2UgYXZhaWxhYmxlIGluIHJ1bGUgZGF0YWJhc2UuDQo+ID4gKyAqDQo+ID4g KyAqIEBzZWUgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlKCksIHJ0ZV9yZWdleGRldl9ydWxl X2RiX2V4cG9ydCgpDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50 DQo+ID4gK3J0ZV9yZWdleGRldl9ydWxlX2RiX2ltcG9ydCh1aW50OF90IGRldl9pZCwgY29uc3Qg Y2hhciAqcnVsZV9kYiwNCj4gPiArCQkJICAgIHVpbnQzMl90IHJ1bGVfZGJfbGVuKTsNCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRo aXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4gKyAq IEV4cG9ydCB0aGUgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZSBmcm9tIGEgUmVnRXggZGV2aWNlIHRv IHRoZSBidWZmZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPiArICogICBS ZWdFeCBkZXZpY2UgaWRlbnRpZmllci4NCj4gPiArICogQHBhcmFtW291dF0gcnVsZV9kYg0KPiA+ ICsgKiAgIEJsb2NrIG9mIG1lbW9yeSB0byBpbnNlcnQgdGhlIHJ1bGUgZGF0YWJhc2UuIE11c3Qg YmUgYXQgbGVhc3Qgc2l6ZSBpbg0KPiA+ICsgKiAgIGNhcGFjaXR5LiBJZiBzZXQgdG8gTlVMTCwg ZnVuY3Rpb24gcmV0dXJucyByZXF1aXJlZCBjYXBhY2l0eS4NCj4gPiArICoNCj4gPiArICogQHJl dHVybg0KPiA+ICsgKiAgIC0gMDogU3VjY2Vzc2Z1bGx5IGV4cG9ydGVkIHRoZSBwcmVidWlsdCBy dWxlIGRhdGFiYXNlLg0KPiA+ICsgKiAgIC0gc2l6ZTogSWYgcnVsZV9kYiBzZXQgdG8gTlVMTCB0 aGVuIHJlcXVpcmVkIGNhcGFjaXR5IGZvciAqcnVsZV9kYioNCj4gPiArICogICAtIC1FSU5WQUw6 ICBJbnZhbGlkIGRldmljZSBJRA0KPiA+ICsgKiAgIC0gLUVOT1RTVVA6IFJ1bGUgZGF0YWJhc2Ug ZXhwb3J0IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAq IEBzZWUgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlKCksIHJ0ZV9yZWdleGRldl9ydWxlX2Ri X2ltcG9ydCgpDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50DQo+ ID4gK3J0ZV9yZWdleGRldl9ydWxlX2RiX2V4cG9ydCh1aW50OF90IGRldl9pZCwgY2hhciAqcnVs ZV9kYik7DQo+ID4gKw0KPiA+ICsvKiBFeHRlbmRlZCBzdGF0aXN0aWNzICovDQo+ID4gKy8qKiBN YXhpbXVtIG5hbWUgbGVuZ3RoIGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIGNvdW50ZXJzICovDQo+ ID4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1hTVEFUU19OQU1FX1NJWkUgNjQNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBBIG5hbWUta2V5IGxvb2t1cCBlbGVtZW50IGZvciBleHRlbmRlZCBzdGF0 aXN0aWNzLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIG1hcCBi ZXR3ZWVuIG5hbWVzIGFuZCBJRCBudW1iZXJzDQo+ID4gKyAqIGZvciBleHRlbmRlZCBSZWdFeCBk ZXZpY2Ugc3RhdGlzdGljcy4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfcmVnZXhkZXZfeHN0 YXRzX21hcCB7DQo+ID4gKwl1aW50MTZfdCBpZDsNCj4gPiArCS8qKjwgeHN0YXQgaWRlbnRpZmll ciAqLw0KPiA+ICsJY2hhciBuYW1lW1JURV9SRUdFWERFVl9YU1RBVFNfTkFNRV9TSVpFXTsNCj4g PiArCS8qKjwgeHN0YXQgbmFtZSAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3 aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogUmV0cmlldmUgbmFtZXMgb2Yg ZXh0ZW5kZWQgc3RhdGlzdGljcyBvZiBhIHJlZ2V4IGRldmljZS4NCj4gPiArICoNCj4gPiArICog QHBhcmFtIGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSByZWdleCBkZXZp Y2UuDQo+ID4gKyAqIEBwYXJhbVtvdXRdIHhzdGF0c19tYXANCj4gPiArICogICBCbG9jayBvZiBt ZW1vcnkgdG8gaW5zZXJ0IGlkIGFuZCBuYW1lcyBpbnRvLiBNdXN0IGJlIGF0IGxlYXN0IHNpemUg aW4NCj4gPiArICogICBjYXBhY2l0eS4gSWYgc2V0IHRvIE5VTEwsIGZ1bmN0aW9uIHJldHVybnMg cmVxdWlyZWQgY2FwYWNpdHkuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIFBvc2l0aXZl IHZhbHVlIG9uIHN1Y2Nlc3M6DQo+ID4gKyAqICAgICAgICAtVGhlIHJldHVybiB2YWx1ZSBpcyB0 aGUgbnVtYmVyIG9mIGVudHJpZXMgZmlsbGVkIGluIHRoZSBzdGF0cyBtYXAuDQo+ID4gKyAqICAg ICAgICAtSWYgeHN0YXRzX21hcCBzZXQgdG8gTlVMTCB0aGVuIHJlcXVpcmVkIGNhcGFjaXR5IGZv ciB4c3RhdHNfbWFwLg0KPiA+ICsgKiAgIC0gTmVnYXRpdmUgdmFsdWUgb24gZXJyb3I6DQo+ID4g KyAqICAgICAgLUVOT0RFViBmb3IgaW52YWxpZCAqZGV2X2lkKg0KPiA+ICsgKiAgICAgIC1FTk9U U1VQIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24uDQo+ID4gKyAq Lw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleGRldl94 c3RhdHNfbmFtZXNfZ2V0KHVpbnQ4X3QgZGV2X2lkLA0KPiA+ICsJCQkgICAgICBzdHJ1Y3QgcnRl X3JlZ2V4ZGV2X3hzdGF0c19tYXAgKnhzdGF0c19tYXApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5n ZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogUmV0cmlldmUgZXh0ZW5k ZWQgc3RhdGlzdGljcyBvZiBhbiByZWdleCBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJh bSBkZXZfaWQNCj4gPiArICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiA+ICsg KiBAcGFyYW0gaWRzDQo+ID4gKyAqICAgVGhlIGlkIG51bWJlcnMgb2YgdGhlIHN0YXRzIHRvIGdl dC4gVGhlIGlkcyBjYW4gYmUgZ290IGZyb20gdGhlIHN0YXQNCj4gPiArICogICBwb3NpdGlvbiBp biB0aGUgc3RhdCBsaXN0IGZyb20gcnRlX3JlZ2V4ZGV2X3hzdGF0c19uYW1lc19nZXQoKSwgb3IN Cj4gPiArICogICBieSB1c2luZyBydGVfcmVnZXhkZXZfeHN0YXRzX2J5X25hbWVfZ2V0KCkuDQo+ ID4gKyAqIEBwYXJhbSB2YWx1ZXMNCj4gPiArICogICBUaGUgdmFsdWVzIGZvciBlYWNoIHN0YXRz IHJlcXVlc3QgYnkgSUQuDQo+ID4gKyAqIEBwYXJhbSBuYl92YWx1ZXMNCj4gPiArICogICBUaGUg bnVtYmVyIG9mIHN0YXRzIHJlcXVlc3RlZC4NCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0g UG9zaXRpdmUgdmFsdWU6IG51bWJlciBvZiBzdGF0IGVudHJpZXMgZmlsbGVkIGludG8gdGhlIHZh bHVlcyBhcnJheQ0KPiA+ICsgKiAgIC0gTmVnYXRpdmUgdmFsdWUgb24gZXJyb3I6DQo+ID4gKyAq ICAgICAgLUVOT0RFViBmb3IgaW52YWxpZCAqZGV2X2lkKg0KPiA+ICsgKiAgICAgIC1FTk9UU1VQ IGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24uDQo+ID4gKyAqLw0K PiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV9yZWdleGRldl94c3Rh dHNfZ2V0KHVpbnQ4X3QgZGV2X2lkLCBjb25zdCB1aW50MTZfdCAqaWRzLA0KPiA+ICsJCQl1aW50 NjRfdCAqdmFsdWVzLCB1aW50MTZfdCBuYl92YWx1ZXMpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5n ZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogUmV0cmlldmUgdGhlIHZh bHVlIG9mIGEgc2luZ2xlIHN0YXQgYnkgcmVxdWVzdGluZyBpdCBieSBuYW1lLg0KPiA+ICsgKg0K PiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRl dmljZS4NCj4gPiArICogQHBhcmFtIG5hbWUNCj4gPiArICogICBUaGUgc3RhdCBuYW1lIHRvIHJl dHJpZXZlLg0KPiA+ICsgKiBAcGFyYW0gaWQNCj4gPiArICogICBJZiBub24tTlVMTCwgdGhlIG51 bWVyaWNhbCBpZCBvZiB0aGUgc3RhdCB3aWxsIGJlIHJldHVybmVkLCBzbyB0aGF0IGZ1cnRoZXIN Cj4gPiArICogICByZXF1ZXN0cyBmb3IgdGhlIHN0YXQgY2FuIGJlIGdvdCB1c2luZyBydGVfcmVn ZXhkZXZfeHN0YXRzX2dldCwgd2hpY2gNCj4gd2lsbA0KPiA+ICsgKiAgIGJlIGZhc3RlciBhcyBp dCBkb2Vzbid0IG5lZWQgdG8gc2NhbiBhIGxpc3Qgb2YgbmFtZXMgZm9yIHRoZSBzdGF0Lg0KPiA+ ICsgKiBAcGFyYW1bb3V0XSB2YWx1ZQ0KPiA+ICsgKiAgIE11c3QgYmUgbm9uLU5VTEwsIHJldHJp ZXZlZCB4c3RhdCB2YWx1ZSB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzIGFkZHJlc3MuDQo+ID4gKyAq DQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDA6IFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQg eHN0YXQgdmFsdWUuDQo+ID4gKyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHBhcmFtZXRlcnMNCj4g PiArICogICAtIC1FTk9UU1VQOiBpZiBub3Qgc3VwcG9ydGVkLg0KPiA+ICsgKi8NCj4gPiArX19y dGVfZXhwZXJpbWVudGFsDQo+ID4gK2ludA0KPiA+ICtydGVfcmVnZXhkZXZfeHN0YXRzX2J5X25h bWVfZ2V0KHVpbnQ4X3QgZGV2X2lkLCBjb25zdCBjaGFyICpuYW1lLA0KPiA+ICsJCQkJdWludDE2 X3QgKmlkLCB1aW50NjRfdCAqdmFsdWUpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJu aW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0 IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogUmVzZXQgdGhlIHZhbHVlcyBvZiB0aGUg eHN0YXRzIG9mIHRoZSBzZWxlY3RlZCBjb21wb25lbnQgaW4gdGhlIGRldmljZS4NCj4gPiArICoN Cj4gPiArICogQHBhcmFtIGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBk ZXZpY2UuDQo+ID4gKyAqIEBwYXJhbSBpZHMNCj4gPiArICogICBTZWxlY3RzIHNwZWNpZmljIHN0 YXRpc3RpY3MgdG8gYmUgcmVzZXQuIFdoZW4gTlVMTCwgYWxsIHN0YXRpc3RpY3Mgd2lsbCBiZQ0K PiA+ICsgKiAgIHJlc2V0LiBJZiBub24tTlVMTCwgbXVzdCBwb2ludCB0byBhcnJheSBvZiBhdCBs ZWFzdCAqbmJfaWRzKiBzaXplLg0KPiA+ICsgKiBAcGFyYW0gbmJfaWRzDQo+ID4gKyAqICAgVGhl IG51bWJlciBvZiBpZHMgYXZhaWxhYmxlIGZyb20gdGhlICppZHMqIGFycmF5LiBJZ25vcmVkIHdo ZW4gaWRzIGlzDQo+ID4gTlVMTC4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAg IC0gMDogU3VjY2Vzc2Z1bGx5IHJlc2V0IHRoZSBzdGF0aXN0aWNzIHRvIHplcm8uDQo+ID4gKyAq ICAgLSAtRUlOVkFMOiBpbnZhbGlkIHBhcmFtZXRlcnMuDQo+ID4gKyAqICAgLSAtRU5PVFNVUDog aWYgbm90IHN1cHBvcnRlZC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ ICtpbnQNCj4gPiArcnRlX3JlZ2V4ZGV2X3hzdGF0c19yZXNldCh1aW50OF90IGRldl9pZCwgY29u c3QgdWludDE2X3QgKmlkcywNCj4gPiArCQkJICB1aW50MTZfdCBuYl9pZHMpOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBB UEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogVHJp Z2dlciB0aGUgUmVnRXggZGV2aWNlIHNlbGYgdGVzdC4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ID4gKyAq IEByZXR1cm4NCj4gPiArICogICAtIDA6IFNlbGZ0ZXN0IHN1Y2Nlc3NmdWwuDQo+ID4gKyAqICAg LSAtRU5PVFNVUCBpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBzZWxmdGVzdC4NCj4gPiAr ICogICAtIG90aGVyIHZhbHVlcyA8IDAgb24gZmFpbHVyZS4NCj4gPiArICovDQo+ID4gK19fcnRl X2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX3JlZ2V4ZGV2X3NlbGZ0ZXN0KHVpbnQ4 X3QgZGV2X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBA YiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2Uu DQo+ID4gKyAqDQo+ID4gKyAqIER1bXAgaW50ZXJuYWwgaW5mb3JtYXRpb24gYWJvdXQgKmRldl9p ZCogdG8gdGhlIEZJTEUqIHByb3ZpZGVkIGluICpmKi4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGRldl9pZA0KPiA+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ID4gKyAq IEBwYXJhbSBmDQo+ID4gKyAqICAgQSBwb2ludGVyIHRvIGEgZmlsZSBmb3Igb3V0cHV0Lg0KPiA+ ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBl cnJubyBvbiBmYWlsdXJlLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4g K2ludA0KPiA+ICtydGVfcmVnZXhkZXZfZHVtcCh1aW50OF90IGRldl9pZCwgRklMRSAqZik7DQo+ ID4gKw0KPiA+ICsvKiBGYXN0IHBhdGggQVBJcyAqLw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IFRoZSBnZW5lcmljICpydGVfcmVnZXhkZXZfbWF0Y2gqIHN0cnVjdHVyZSB0byBob2xkIHRoZSBS ZWdFeCBtYXRjaA0KPiA+ICsgKiBhdHRyaWJ1dGVzLg0KPiA+ICsgKiBAc2VlIHN0cnVjdCBydGVf cmVnZXhfb3BzOjptYXRjaGVzDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X21h dGNoIHsNCj4gPiArCVJURV9TVERfQzExDQo+ID4gKwl1bmlvbiB7DQo+ID4gKwkJdWludDY0X3Qg dTY0Ow0KPiA+ICsJCXN0cnVjdCB7DQo+ID4gKwkJCXVpbnQzMl90IHJ1bGVfaWQ6MjA7DQo+ID4g KwkJCS8qKjwgUnVsZSBpZGVudGlmaWVyIHRvIHdoaWNoIHRoZSBwYXR0ZXJuIG1hdGNoZWQuDQo+ ID4gKwkJCSAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpydWxlX2lkDQo+ID4gKwkJ CSAqLw0KPiA+ICsJCQl1aW50MzJfdCBncm91cF9pZDoxMjsNCj4gPiArCQkJLyoqPCBHcm91cCBp ZGVudGlmaWVyIG9mIHRoZSBydWxlIHdoaWNoIHRoZSBwYXR0ZXJuDQo+ID4gKwkJCSAqIG1hdGNo ZWQuIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpncm91cF9pZA0KPiA+ICsJCQkgKi8N Cj4gPiArCQkJdWludDE2X3Qgc3RhcnRfb2Zmc2V0Ow0KPiA+ICsJCQkvKio8IFN0YXJ0aW5nIEJ5 dGUgUG9zaXRpb24gZm9yIG1hdGNoZWQgcnVsZS4gKi8NCj4gPiArCQkJUlRFX1NURF9DMTENCj4g PiArCQkJdW5pb24gew0KPiA+ICsJCQkJdWludDE2X3QgbGVuOw0KPiA+ICsJCQkJLyoqPCBMZW5n dGggb2YgbWF0Y2ggaW4gYnl0ZXMgKi8NCj4gPiArCQkJCXVpbnQxNl90IGVuZF9vZmZzZXQ7DQo+ ID4gKwkJCQkvKio8IFRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBtYXRjaC4gSW4gY2FzZQ0KPiA+ICsJ CQkJICogTUFUQ0hfQVNfRU5EIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZC4NCj4gPiArCQkJCSAq IEBzZWUNCj4gPiBSVEVfUkVHRVhERVZfQ0ZHX01BVENIX0FTX0VORA0KPiA+ICsJCQkJICovDQo+ ID4gKwkJCX07DQo+ID4gKwkJfTsNCj4gPiArCX07DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBF bnVtZXJhdGVzIFJlZ0V4IHJlcXVlc3QgZmxhZ3MuICovDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VY X09QU19SRVFfR1JPVVBfSUQwX1ZBTElEX0YgKDEgPDwgMCkNCj4gPiArLyoqPCBTZXQgd2hlbiBz dHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6Omdyb3VwX2lkMCBpcyB2YWxpZC4gKi8NCj4gPiArDQo+ ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SRVFfR1JPVVBfSUQxX1ZBTElEX0YgKDEgPDwgMSkN Cj4gPiArLyoqPCBTZXQgd2hlbiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6Omdyb3VwX2lkMSBp cyB2YWxpZC4gKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SRVFfR1JPVVBf SUQyX1ZBTElEX0YgKDEgPDwgMikNCj4gPiArLyoqPCBTZXQgd2hlbiBzdHJ1Y3QgcnRlX3JlZ2V4 ZGV2X3J1bGU6Omdyb3VwX2lkMiBpcyB2YWxpZC4gKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRF X1JFR0VYX09QU19SRVFfR1JPVVBfSUQzX1ZBTElEX0YgKDEgPDwgMykNCj4gPiArLyoqPCBTZXQg d2hlbiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6Omdyb3VwX2lkMyBpcyB2YWxpZC4gKi8NCj4g PiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SRVFfU1RPUF9PTl9NQVRDSF9GICgxIDw8 IDQpDQo+ID4gKy8qKjwgVGhlIFJlZ0V4IGVuZ2luZSB3aWxsIHN0b3Agc2Nhbm5pbmcgYW5kIHJl dHVybiB0aGUgZmlyc3QgbWF0Y2guICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9SRUdFWF9P UFNfUkVRX01BVENIX0hJR0hfUFJJT1JJVFlfRiAoMSA8PCA1KQ0KPiA+ICsvKio8IEluIEhpZ2gg UHJpb3JpdHkgbW9kZSBhIG1heGltdW0gb2Ygb25lIG1hdGNoIHdpbGwgYmUgcmV0dXJuZWQgcGVy DQo+ID4gc2NhbiB0bw0KPiA+ICsgKiByZWR1Y2UgdGhlIHBvc3QtcHJvY2Vzc2luZyByZXF1aXJl ZCBieSB0aGUgYXBwbGljYXRpb24uIFRoZSBtYXRjaCB3aXRoDQo+IHRoZQ0KPiA+ICsgKiBsb3dl c3QgUnVsZSBpZCwgbG93ZXN0IHN0YXJ0IHBvaW50ZXIgYW5kIGxvd2VzdCBtYXRjaCBsZW5ndGgg d2lsbCBiZQ0KPiA+ICsgKiByZXR1cm5lZC4NCj4gPiArICoNCj4gPiArICogQHNlZSBzdHJ1Y3Qg cnRlX3JlZ2V4X29wczo6bmJfYWN0dWFsX21hdGNoZXMNCj4gPiArICogQHNlZSBzdHJ1Y3QgcnRl X3JlZ2V4X29wczo6bmJfbWF0Y2hlcw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKw0KPiA+ICsvKiBF bnVtZXJhdGVzIFJlZ0V4IHJlc3BvbnNlIGZsYWdzLiAqLw0KPiA+ICsjZGVmaW5lIFJURV9SRUdF WF9PUFNfUlNQX1BNSV9TT0pfRiAoMSA8PCAwKQ0KPiA+ICsvKio8IEluZGljYXRlcyB0aGF0IHRo ZSBSZWdFeCBkZXZpY2UgaGFzIGVuY291bnRlcmVkIGEgcGFydGlhbCBtYXRjaCBhdCB0aGUNCj4g PiArICogc3RhcnQgb2Ygc2NhbiBpbiB0aGUgZ2l2ZW4gYnVmZmVyLg0KPiA+ICsgKg0KPiA+ICsg KiBAc2VlIFJURV9SRUdFWERFVl9DRkdfQ1JPU1NfQlVGRkVSX1NDQU5fRg0KPiA+ICsgKi8NCj4g PiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfUE1JX0VPSl9GICgxIDw8IDEpDQo+ ID4gKy8qKjwgSW5kaWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBoYXMgZW5jb3VudGVyZWQg YSBwYXJ0aWFsIG1hdGNoIGF0IHRoZQ0KPiA+ICsgKiBlbmQgb2Ygc2NhbiBpbiB0aGUgZ2l2ZW4g YnVmZmVyLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIFJURV9SRUdFWERFVl9DRkdfQ1JPU1NfQlVG RkVSX1NDQU5fRg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19S U1BfTUFYX1NDQU5fVElNRU9VVF9GICgxIDw8IDIpDQo+ID4gKy8qKjwgSW5kaWNhdGVzIHRoYXQg dGhlIFJlZ0V4IGRldmljZSBoYXMgZXhjZWVkZWQgdGhlIG1heCB0aW1lb3V0IHdoaWxlDQo+ID4g KyAqIHNjYW5uaW5nIHRoZSBnaXZlbiBidWZmZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgUlRF X1JFR0VYREVWX0FUVFJfTUFYX1NDQU5fVElNRU9VVA0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNk ZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfTUFYX01BVENIX0YgKDEgPDwgMykNCj4gPiArLyoqPCBJ bmRpY2F0ZXMgdGhhdCB0aGUgUmVnRXggZGV2aWNlIGhhcyBleGNlZWRlZCB0aGUgbWF4IG1hdGNo ZXMgd2hpbGUNCj4gPiArICogc2Nhbm5pbmcgdGhlIGdpdmVuIGJ1ZmZlci4NCj4gPiArICoNCj4g PiArICogQHNlZSBSVEVfUkVHRVhERVZfQVRUUl9NQVhfTUFUQ0hFUw0KPiA+ICsgKi8NCj4gPiAr DQo+ID4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfTUFYX1BSRUZJWF9GICgxIDw8IDQpDQo+ ID4gKy8qKjwgSW5kaWNhdGVzIHRoYXQgdGhlIFJlZ0V4IGRldmljZSBoYXMgcmVhY2hlZCB0aGUg bWF4IGFsbG93ZWQgcHJlZml4DQo+ID4gbGVuZ3RoDQo+ID4gKyAqIHdoaWxlIHNjYW5uaW5nIHRo ZSBnaXZlbiBidWZmZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBzZWUgUlRFX1JFR0VYREVWX0FUVFJf TUFYX1BSRUZJWA0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBUaGUgZ2VuZXJp YyAqcnRlX3JlZ2V4X29wcyogc3RydWN0dXJlIHRvIGhvbGQgdGhlIFJlZ0V4IGF0dHJpYnV0ZXMN Cj4gPiArICogZm9yIGVucXVldWUgYW5kIGRlcXVldWUgb3BlcmF0aW9uLg0KPiA+ICsgKi8NCj4g PiArc3RydWN0IHJ0ZV9yZWdleF9vcHMgew0KPiA+ICsJLyogVzAgKi8NCj4gPiArCXVpbnQxNl90 IHJlcV9mbGFnczsNCj4gPiArCS8qKjwgUmVxdWVzdCBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4N Cj4gPiArCSAqIEBzZWUgUlRFX1JFR0VYX09QU19SRVFfKg0KPiA+ICsJICovDQo+ID4gKwl1aW50 MTZfdCByc3BfZmxhZ3M7DQo+ID4gKwkvKio8IFJlc3BvbnNlIGZsYWdzIGZvciB0aGUgUmVnRXgg b3BzLg0KPiA+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF8qDQo+ID4gKwkgKi8NCj4gPiAr CXVpbnQxNl90IG5iX2FjdHVhbF9tYXRjaGVzOw0KPiA+ICsJLyoqPCBUaGUgdG90YWwgbnVtYmVy IG9mIGFjdHVhbCBtYXRjaGVzIGRldGVjdGVkIGJ5IHRoZSBSZWdleA0KPiA+IGRldmljZS4qLw0K PiA+ICsJdWludDE2X3QgbmJfbWF0Y2hlczsNCj4gPiArCS8qKjwgVGhlIHRvdGFsIG51bWJlciBv ZiBtYXRjaGVzIHJldHVybmVkIGJ5IHRoZSBSZWdFeCBkZXZpY2UgZm9yDQo+ID4gdGhpcw0KPiA+ ICsJICogc2Nhbi4gVGhlIHNpemUgb2YgKnJ0ZV9yZWdleF9vcHM6Om1hdGNoZXMqIHplcm8gbGVu Z3RoIGFycmF5IHdpbGwgYmUNCj4gPiArCSAqIHRoaXMgdmFsdWUuDQo+ID4gKwkgKg0KPiA+ICsJ ICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bWF0Y2hlcywgc3RydWN0IHJ0ZV9yZWdleGRl dl9tYXRjaA0KPiA+ICsJICovDQo+ID4gKw0KPiA+ICsJLyogVzEgKi8NCj4gPiArCXN0cnVjdCBy dGVfbWJ1ZiAqbWJ1ZjsgLyoqPCBzb3VyY2UgbWJ1ZiwgdG8gc2VhcmNoIGluLiAqLw0KPiA+ICsN Cj4gPiArCS8qIFcyICovDQo+ID4gKwl1aW50MTZfdCBncm91cF9pZDA7DQo+ID4gKwkvKio8IEZp cnN0IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuIEF0IG1pbmltdW0gb25lIGdy b3VwDQo+ID4gKwkgKiBzaG91bGQgYmUgdmFsaWQuIEJlaGF2aW91ciBpcyB1bmRlZmluZWQgbm9u IG9mIHRoZSBncm91cHMgYXJlIHZhbGlkLg0KPiA+ICsJICoNCj4gPiArCSAqIEBzZWUgUlRFX1JF R0VYX09QU19SRVFfR1JPVVBfSUQwX1ZBTElEX0YNCj4gPiArCSAqLw0KPiA+ICsJdWludDE2X3Qg Z3JvdXBfaWQxOw0KPiA+ICsJLyoqPCBTZWNvbmQgZ3JvdXBfaWQgdG8gbWF0Y2ggdGhlIHJ1bGUg YWdhaW5zdC4NCj4gPiArCSAqDQo+ID4gKwkgKiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQ X0lEMV9WQUxJRF9GDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQxNl90IGdyb3VwX2lkMjsNCj4gPiAr CS8qKjwgVGhpcmQgZ3JvdXBfaWQgdG8gbWF0Y2ggdGhlIHJ1bGUgYWdhaW5zdC4NCj4gPiArCSAq DQo+ID4gKwkgKiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEMl9WQUxJRF9GDQo+ID4g KwkgKi8NCj4gPiArCXVpbnQxNl90IGdyb3VwX2lkMzsNCj4gPiArCS8qKjwgRm9ydGggZ3JvdXBf aWQgdG8gbWF0Y2ggdGhlIHJ1bGUgYWdhaW5zdC4NCj4gPiArCSAqDQo+ID4gKwkgKiBAc2VlIFJU RV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEM19WQUxJRF9GDQo+ID4gKwkgKi8NCj4gPiArDQo+ID4g KwkvKiBXMyAqLw0KPiA+ICsJUlRFX1NURF9DMTENCj4gPiArCXVuaW9uIHsNCj4gPiArCQl1aW50 NjRfdCB1c2VyX2lkOw0KPiA+ICsJCS8qKjwgQXBwbGljYXRpb24gc3BlY2lmaWMgb3BhcXVlIHZh bHVlLiBBbiBhcHBsaWNhdGlvbiBtYXkgdXNlDQo+ID4gKwkJICogdGhpcyBmaWVsZCB0byBob2xk IGFwcGxpY2F0aW9uIHNwZWNpZmljIHZhbHVlIHRvIHNoYXJlDQo+ID4gKwkJICogYmV0d2VlbiBk ZXF1ZXVlIGFuZCBlbnF1ZXVlIG9wZXJhdGlvbi4NCj4gPiArCQkgKiBJbXBsZW1lbnRhdGlvbiBz aG91bGQgbm90IG1vZGlmeSB0aGlzIGZpZWxkLg0KPiA+ICsJCSAqLw0KPiA+ICsJCXZvaWQgKnVz ZXJfcHRyOw0KPiA+ICsJCS8qKjwgUG9pbnRlciByZXByZXNlbnRhdGlvbiBvZiAqdXNlcl9pZCog Ki8NCj4gPiArCX07DQo+ID4gKw0KPiA+ICsJLyogVzQgKi8NCj4gPiArCVJURV9TVERfQzExDQo+ ID4gKwl1bmlvbiB7DQo+ID4gKwkJdWludDY0X3QgY3Jvc3NfYnVmX2lkOw0KPiA+ICsJCS8qKjwg SUQgdXNlZCBieSB0aGUgUmVnRXggZGV2aWNlIGluIG9yZGVyIHRvIHN1cHBvcnQgY3Jvc3MNCj4g PiArCQkgKiBwYWNrZXQgZGV0ZWN0aW9uLg0KPiA+ICsJCSAqIFRoaXMgSUQgaXMgcmV0dXJuZWQg ZnJvbSB0aGUgUmVnRXggZGV2aWNlIG9uIHRoZSBkZXF1ZXVlDQo+ID4gKwkJICogZnVuY3Rpb24u IFRoZSBhcHBsaWNhdGlvbiBtdXN0IHNlbmQgaXQgYmFjayB3aGVuIGNhbGxpbmcNCj4gPiArCQkg KiBlbnF1ZXVlIHdpdGggdGhlIGZvbGxvd2luZyBwYWNrZXQuDQo+ID4gKwkJICovDQo+ID4gKwkJ dm9pZCAqY3Jvc3NfYnVmX3B0cjsNCj4gPiArCQkvKio8IFBvaW50ZXIgcmVwcmVzZW50YXRpb24g b2YgKmNvcnNzX2J1Zl9pZCogKi8NCj4gPiArCX07DQo+ID4gKw0KPiA+ICsJLyogVzUgKi8NCj4g PiArCXN0cnVjdCBydGVfcmVnZXhkZXZfbWF0Y2ggbWF0Y2hlc1tdOw0KPiA+ICsJLyoqPCBaZXJv IGxlbmd0aCBhcnJheSB0byBob2xkIHRoZSBtYXRjaCB0dXBsZXMuDQo+ID4gKwkgKiBUaGUgc3Ry dWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMgdmFsdWUgaG9sZHMgdGhlIG51bWJlciBvZg0K PiA+ICsJICogZWxlbWVudHMgaW4gdGhpcyBhcnJheS4NCj4gPiArCSAqDQo+ID4gKwkgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhfb3BzOjpuYl9tYXRjaGVzDQo+ID4gKwkgKi8NCj4gPiArfTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6 IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4g KyAqIEVucXVldWUgYSBidXJzdCBvZiBzY2FuIHJlcXVlc3Qgb24gYSBSZWdFeCBkZXZpY2UuDQo+ ID4gKyAqDQo+ID4gKyAqIFRoZSBydGVfcmVnZXhkZXZfZW5xdWV1ZV9idXJzdCgpIGZ1bmN0aW9u IGlzIGludm9rZWQgdG8gcGxhY2UNCj4gPiArICogcmVnZXggb3BlcmF0aW9ucyBvbiB0aGUgcXVl dWUgKnFwX2lkKiBvZiB0aGUgZGV2aWNlIGRlc2lnbmF0ZWQgYnkNCj4gPiArICogaXRzICpkZXZf aWQqLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgKm5iX29wcyogcGFyYW1ldGVyIGlzIHRoZSBudW1i ZXIgb2Ygb3BlcmF0aW9ucyB0byBwcm9jZXNzIHdoaWNoDQo+IGFyZQ0KPiA+ICsgKiBzdXBwbGll ZCBpbiB0aGUgKm9wcyogYXJyYXkgb2YgKnJ0ZV9yZWdleGRldl9vcCogc3RydWN0dXJlcy4NCj4g PiArICoNCj4gPiArICogVGhlIHJ0ZV9yZWdleGRldl9lbnF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24g cmV0dXJucyB0aGUgbnVtYmVyIG9mDQo+ID4gKyAqIG9wZXJhdGlvbnMgaXQgYWN0dWFsbHkgZW5x dWV1ZWQgZm9yIHByb2Nlc3NpbmcuIEEgcmV0dXJuIHZhbHVlIGVxdWFsIHRvDQo+ID4gKyAqICpu Yl9vcHMqIG1lYW5zIHRoYXQgYWxsIHBhY2tldHMgaGF2ZSBiZWVuIGVucXVldWVkLg0KPiA+ICsg Kg0KPiA+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ID4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhl IGRldmljZS4NCj4gPiArICogQHBhcmFtIHFwX2lkDQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRo ZSBxdWV1ZSBwYWlyIHdoaWNoIHBhY2tldHMgYXJlIHRvIGJlIGVucXVldWVkIGZvcg0KPiA+ICsg KiAgIHByb2Nlc3NpbmcuIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMCwgbmJfcXVl dWVfcGFpcnMgLSAxXQ0KPiA+ICsgKiAgIHByZXZpb3VzbHkgc3VwcGxpZWQgdG8gcnRlX3JlZ2V4 ZGV2X2NvbmZpZ3VyZSgpLg0KPiA+ICsgKiBAcGFyYW0gb3BzDQo+ID4gKyAqICAgVGhlIGFkZHJl c3Mgb2YgYW4gYXJyYXkgb2YgKm5iX29wcyogcG9pbnRlcnMgdG8gKnJ0ZV9yZWdleGRldl9vcCoN Cj4gPiArICogICBzdHJ1Y3R1cmVzIHdoaWNoIGNvbnRhaW4gdGhlIHJlZ2V4IG9wZXJhdGlvbnMg dG8gYmUgcHJvY2Vzc2VkLg0KPiA+ICsgKiBAcGFyYW0gbmJfb3BzDQo+ID4gKyAqICAgVGhlIG51 bWJlciBvZiBvcGVyYXRpb25zIHRvIHByb2Nlc3MuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4N Cj4gPiArICogICBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgYWN0dWFsbHkgZW5xdWV1ZWQgb24g dGhlIHJlZ2V4IGRldmljZS4gVGhlDQo+ID4gcmV0dXJuDQo+ID4gKyAqICAgdmFsdWUgY2FuIGJl IGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgdGhlICpuYl9vcHMqIHBhcmFtZXRlciB3aGVuIHRoZQ0K PiA+ICsgKiAgIHJlZ2V4IGRldmljZXMgcXVldWUgaXMgZnVsbCBvciBpZiBpbnZhbGlkIHBhcmFt ZXRlcnMgYXJlIHNwZWNpZmllZCBpbg0KPiA+ICsgKiAgIGEgKnJ0ZV9yZWdleGRldl9vcCouIElm IHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuICpuYl9vcHMqLCB0aGUNCj4gPiArICogICBy ZW1haW5pbmcgb3BzIGF0IHRoZSBlbmQgb2YgKm9wcyogYXJlIG5vdCBjb25zdW1lZCBhbmQgdGhl IGNhbGxlciBoYXMNCj4gPiArICogICB0byB0YWtlIGNhcmUgb2YgdGhlbS4NCj4gPiArICovDQo+ ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICt1aW50MTZfdA0KPiA+ICtydGVfcmVnZXhkZXZf ZW5xdWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ID4gKwkJCSAg IHN0cnVjdCBydGVfcmVnZXhfb3BzICoqb3BzLCB1aW50MTZfdCBuYl9vcHMpOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBB UEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogRGVx dWV1ZSBhIGJ1cnN0IG9mIHNjYW4gcmVzcG9uc2UgZnJvbSBhIHF1ZXVlIG9uIHRoZSBSZWdFeCBk ZXZpY2UuDQo+ID4gKyAqIFRoZSBkZXF1ZXVlZCBvcGVyYXRpb24gYXJlIHN0b3JlZCBpbiAqcnRl X3JlZ2V4ZGV2X29wKiBzdHJ1Y3R1cmVzDQo+ID4gKyAqIHdob3NlIHBvaW50ZXJzIGFyZSBzdXBw bGllZCBpbiB0aGUgKm9wcyogYXJyYXkuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBydGVfcmVnZXhk ZXZfZGVxdWV1ZV9idXJzdCgpIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBvcHMNCj4g PiArICogYWN0dWFsbHkgZGVxdWV1ZWQsIHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgKnJ0ZV9yZWdl eGRldl9vcCogZGF0YQ0KPiA+IHN0cnVjdHVyZXMNCj4gPiArICogZWZmZWN0aXZlbHkgc3VwcGxp ZWQgaW50byB0aGUgKm9wcyogYXJyYXkuDQo+ID4gKyAqDQo+ID4gKyAqIEEgcmV0dXJuIHZhbHVl IGVxdWFsIHRvICpuYl9vcHMqIGluZGljYXRlcyB0aGF0IHRoZSBxdWV1ZSBjb250YWluZWQNCj4g PiArICogYXQgbGVhc3QgKm5iX29wcyogb3BlcmF0aW9ucywgYW5kIHRoaXMgaXMgbGlrZWx5IHRv IHNpZ25pZnkgdGhhdCBvdGhlcg0KPiA+ICsgKiBwcm9jZXNzZWQgb3BlcmF0aW9ucyByZW1haW4g aW4gdGhlIGRldmljZXMgb3V0cHV0IHF1ZXVlLiBBcHBsaWNhdGlvbnMNCj4gPiArICogaW1wbGVt ZW50aW5nIGEgInJldHJpZXZlIGFzIG1hbnkgcHJvY2Vzc2VkIG9wZXJhdGlvbnMgYXMgcG9zc2li bGUiDQo+IHBvbGljeQ0KPiA+ICsgKiBjYW4gY2hlY2sgdGhpcyBzcGVjaWZpYyBjYXNlIGFuZCBr ZWVwIGludm9raW5nIHRoZQ0KPiA+ICsgKiBydGVfcmVnZXhkZXZfZGVxdWV1ZV9idXJzdCgpIGZ1 bmN0aW9uIHVudGlsIGEgdmFsdWUgbGVzcyB0aGFuDQo+ID4gKyAqICpuYl9vcHMqIGlzIHJldHVy bmVkLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgcnRlX3JlZ2V4ZGV2X2RlcXVldWVfYnVyc3QoKSBm dW5jdGlvbiBkb2VzIG5vdCBwcm92aWRlIGFueSBlcnJvcg0KPiA+ICsgKiBub3RpZmljYXRpb24g dG8gYXZvaWQgdGhlIGNvcnJlc3BvbmRpbmcgb3ZlcmhlYWQuDQo+ID4gKyAqDQo+ID4gKyAqIEBw YXJhbSBkZXZfaWQNCj4gPiArICogICBUaGUgUmVnRXggZGV2aWNlIGlkZW50aWZpZXINCj4gPiAr ICogQHBhcmFtIHFwX2lkDQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSBwYWlyIGZy b20gd2hpY2ggdG8gcmV0cmlldmUgcHJvY2Vzc2VkIHBhY2tldHMuDQo+ID4gKyAqICAgVGhlIHZh bHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBuYl9xdWV1ZV9wYWlycyAtIDFdIHByZXZpb3Vz bHkNCj4gPiArICogICBzdXBwbGllZCB0byBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkuDQo+ID4g KyAqIEBwYXJhbSBvcHMNCj4gPiArICogICBUaGUgYWRkcmVzcyBvZiBhbiBhcnJheSBvZiBwb2lu dGVycyB0byAqcnRlX3JlZ2V4ZGV2X29wKiBzdHJ1Y3R1cmVzDQo+ID4gKyAqICAgdGhhdCBtdXN0 IGJlIGxhcmdlIGVub3VnaCB0byBzdG9yZSAqbmJfb3BzKiBwb2ludGVycyBpbiBpdC4NCj4gPiAr ICogQHBhcmFtIG5iX29wcw0KPiA+ICsgKiAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVyYXRp b25zIHRvIGRlcXVldWUuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBUaGUg bnVtYmVyIG9mIG9wZXJhdGlvbnMgYWN0dWFsbHkgZGVxdWV1ZWQsIHdoaWNoIGlzIHRoZSBudW1i ZXINCj4gPiArICogICBvZiBwb2ludGVycyB0byAqcnRlX3JlZ2V4ZGV2X29wKiBzdHJ1Y3R1cmVz IGVmZmVjdGl2ZWx5IHN1cHBsaWVkIHRvIHRoZQ0KPiA+ICsgKiAgICpvcHMqIGFycmF5LiBJZiB0 aGUgcmV0dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiAqbmJfb3BzKiwgdGhlIHJlbWFpbmluZw0KPiA+ ICsgKiAgIG9wcyBhdCB0aGUgZW5kIG9mICpvcHMqIGFyZSBub3QgY29uc3VtZWQgYW5kIHRoZSBj YWxsZXIgaGFzIHRvIHRha2UgY2FyZQ0KPiA+ICsgKiAgIG9mIHRoZW0uDQo+ID4gKyAqLw0KPiA+ ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiArdWludDE2X3QNCj4gPiArcnRlX3JlZ2V4ZGV2X2Rl cXVldWVfYnVyc3QodWludDhfdCBkZXZfaWQsIHVpbnQxNl90IHFwX2lkLA0KPiA+ICsJCQkgICBz dHJ1Y3QgcnRlX3JlZ2V4X29wcyAqKm9wcywgdWludDE2X3QgbmJfb3BzKTsNCj4gPiArDQo+ID4g KyNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+ICt9DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2Vu ZGlmIC8qIF9SVEVfUkVHRVhERVZfSF8gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9y ZWdleGRldi9ydGVfcmVnZXhkZXZfdmVyc2lvbi5tYXANCj4gPiBiL2xpYi9saWJydGVfcmVnZXhk ZXYvcnRlX3JlZ2V4ZGV2X3ZlcnNpb24ubWFwDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwLi5kNDAwNjI0DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2xp Yi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2X3ZlcnNpb24ubWFwDQo+ID4gQEAgLTAsMCAr MSwyNiBAQA0KPiA+ICtFWFBFUklNRU5UQUwgew0KPiA+ICsJZ2xvYmFsOg0KPiA+ICsNCj4gPiAr CXJ0ZV9yZWdleGRldl9jb3VudDsNCj4gPiArCXJ0ZV9yZWdleGRldl9nZXRfZGV2X2lkOw0KPiA+ ICsJcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0Ow0KPiA+ICsJcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZTsN Cj4gPiArCXJ0ZV9yZWdleGRldl9xdWV1ZV9wYWlyX3NldHVwOw0KPiA+ICsJcnRlX3JlZ2V4ZGV2 X3N0YXJ0Ow0KPiA+ICsJcnRlX3JlZ2V4ZGV2X3N0b3A7DQo+ID4gKwlydGVfcmVnZXhkZXZfY2xv c2U7DQo+ID4gKwlydGVfcmVnZXhkZXZfYXR0cl9nZXQ7DQo+ID4gKwlydGVfcmVnZXhkZXZfYXR0 cl9zZXQ7DQo+ID4gKwlydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGU7DQo+ID4gKwlydGVfcmVn ZXhkZXZfcnVsZV9kYl9jb21waWxlX2FjdGl2YXRlOw0KPiA+ICsJcnRlX3JlZ2V4ZGV2X3J1bGVf ZGJfaW1wb3J0Ow0KPiA+ICsJcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfZXhwb3J0Ow0KPiA+ICsJcnRl X3JlZ2V4ZGV2X3hzdGF0c19uYW1lc19nZXQ7DQo+ID4gKwlydGVfcmVnZXhkZXZfeHN0YXRzX2dl dDsNCj4gPiArCXJ0ZV9yZWdleGRldl94c3RhdHNfYnlfbmFtZV9nZXQ7DQo+ID4gKwlydGVfcmVn ZXhkZXZfeHN0YXRzX3Jlc2V0Ow0KPiA+ICsJcnRlX3JlZ2V4ZGV2X3NlbGZ0ZXN0Ow0KPiA+ICsJ cnRlX3JlZ2V4ZGV2X2R1bXA7DQo+ID4gKwlydGVfcmVnZXhkZXZfZW5xdWV1ZV9idXJzdDsNCj4g PiArCXJ0ZV9yZWdleGRldl9kZXF1ZXVlX2J1cnN0Ow0KPiA+ICt9Ow0KPiA+IGRpZmYgLS1naXQg YS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQNCj4gPiBpbmRleCAwN2E2NWE2Li43 OWFlNWNiIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9tZXNvbi5idWlsZA0KPiA+ICsrKyBiL2xpYi9t ZXNvbi5idWlsZA0KPiA+IEBAIC0yNCw3ICsyNCw3IEBAIGxpYnJhcmllcyA9IFsNCj4gPiAgCSdn cm8nLCAnZ3NvJywgJ2lwX2ZyYWcnLCAnam9ic3RhdHMnLA0KPiA+ICAJJ2tuaScsICdsYXRlbmN5 c3RhdHMnLCAnbHBtJywgJ21lbWJlcicsDQo+ID4gIAkncG93ZXInLCAncGR1bXAnLCAncmF3ZGV2 JywNCj4gPiAtCSdyaWInLCAncmVvcmRlcicsICdzY2hlZCcsICdzZWN1cml0eScsICdzdGFjaycs ICd2aG9zdCcsDQo+ID4gKwkncmVnZXhkZXYnLCAncmliJywgJ3Jlb3JkZXInLCAnc2NoZWQnLCAn c2VjdXJpdHknLCAnc3RhY2snLCAndmhvc3QnLA0KPiA+ICAJIyBpcHNlYyBsaWIgZGVwZW5kcyBv biBuZXQsIGNyeXB0byBhbmQgc2VjdXJpdHkNCj4gPiAgCSdpcHNlYycsDQo+ID4gIAkjZmliIGxp YiBkZXBlbmRzIG9uIHJpYg0KPiA+IC0tDQo+ID4gMS44LjMuMQ0KDQo=