From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B54F4C352A4 for ; Mon, 10 Feb 2020 06:43:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 49F16214DB for ; Mon, 10 Feb 2020 06:43:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="9YUd2pb/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726376AbgBJGnb (ORCPT ); Mon, 10 Feb 2020 01:43:31 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:22262 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726231AbgBJGnb (ORCPT ); Mon, 10 Feb 2020 01:43:31 -0500 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 01A6fvaa015027; Mon, 10 Feb 2020 01:43:19 -0500 Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2041.outbound.protection.outlook.com [104.47.66.41]) by mx0a-00128a01.pphosted.com with ESMTP id 2y1udmq2n9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 10 Feb 2020 01:43:19 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bhdNZWRoIXL3iTOA+GZJMFYDdGwUL7Xb1jNKHGJFH+T2WfL/3rpqaZQdKvdsZZRaD+L+11TqhR0LIZKuEfkV81V2z8FZZIofyIAXCt6F6lvLb0uXPUVTeEbMvN/FBHJMNncmaWEFG612lLmYT4flIaEI4MGKecHfxvuckFioo4ttPJnUikVcfE2cuWtKOK16cYE7sUCZgp9ZhICtlBJs5qLKEVkIH5MmIqrqcR142O7TdfPYcTP0xvDaFnOXdowuctAQQoK/WdR6BnuXBWjA5z/xmCPNKMEdFubSnxn8JRfy9AzoWQfYMgmg23UMJZJKXS1qEkBtUKW64bHEAHcImA== 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=hua08maU9AbPmk2HmLQWkCR9ecCdZLPi+UdAhPp3lDU=; b=B6vqRGULxmpInAvVfmc6BGC/U5PnPmlNwjlFu/HiNpGhCHvfn6+U5F19tkHEonhcc3mtuwmtwtPZFD8HUrj12PLYDrhNyZrGnT6oiJ5ND5LPLQuRHupaVS+U9qGhrWUvYbBr0GsR/YbT0Dh5opBLKwMvY8bzc35C1JhlMtcVrcFE63UGy91xUzASzUiKN0SY79T97PWQOg+1q9ACiCTEAg2dtixs+AXlhIL8PWUmIgOR+JLaExwRS6L5tpJTSWuvNriwHmQuEi6BtfL6ydOo1mqS6gBOmgZHjN5aEANHeY4DT//wyF1phvcyN0ZyezZipbIBNudwDvQVEo7638rmhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analog.com; dmarc=pass action=none header.from=analog.com; dkim=pass header.d=analog.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hua08maU9AbPmk2HmLQWkCR9ecCdZLPi+UdAhPp3lDU=; b=9YUd2pb/mUHYSoaeLNjq4mmzSnr6G5yksdGX8MedCaFoKg+cOsZs9N+Z4rSJeWD826ZB/vgu7qGTme8vK6jqf8d7Rnltp0pSOMVBlcMxgYm+fQXSN3oYDHjwVH0n1BxprWlxhzK3AOBZwZkHm+lx6eqSBArUqjcvFtAF1ckr3wA= Received: from CH2PR03MB5192.namprd03.prod.outlook.com (20.180.12.152) by CH2PR03MB5208.namprd03.prod.outlook.com (20.180.4.78) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.24; Mon, 10 Feb 2020 06:43:16 +0000 Received: from CH2PR03MB5192.namprd03.prod.outlook.com ([fe80::dce7:7fec:f33f:ad39]) by CH2PR03MB5192.namprd03.prod.outlook.com ([fe80::dce7:7fec:f33f:ad39%7]) with mapi id 15.20.2707.028; Mon, 10 Feb 2020 06:43:16 +0000 From: "Ardelean, Alexandru" To: "Tachici, Alexandru" , "jic23@jic23.retrosnub.co.uk" CC: "linux-kernel@vger.kernel.org" , "linux-iio@vger.kernel.org" Subject: Re: [PATCH 5/5 V2] staging: iio: adc: ad7192: move out of staging Thread-Topic: [PATCH 5/5 V2] staging: iio: adc: ad7192: move out of staging Thread-Index: AQHV3Efq9XwiyQ47Mk+gFM4U+i7spqgN8tcAgAACwgCABgyUgA== Date: Mon, 10 Feb 2020 06:43:16 +0000 Message-ID: References: <20200202162215.50915c83@archlinux> <20200205171511.25912-1-alexandru.tachici@analog.com> <20200205171511.25912-6-alexandru.tachici@analog.com> <20200206101048.6ff9bf19@archlinux> <20200206102040.008cc0eb@archlinux> In-Reply-To: <20200206102040.008cc0eb@archlinux> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [137.71.226.54] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: ab406d6e-1a08-4aa5-4785-08d7adf4827f x-ms-traffictypediagnostic: CH2PR03MB5208: x-ld-processed: eaa689b4-8f87-40e0-9c6f-7228de4d754a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 03094A4065 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(346002)(136003)(376002)(396003)(366004)(199004)(189003)(8676002)(36756003)(478600001)(6506007)(8936002)(110136005)(2616005)(26005)(316002)(54906003)(76116006)(64756008)(66556008)(66446008)(66476007)(186003)(66946007)(81156014)(81166006)(86362001)(2906002)(6512007)(5660300002)(71200400001)(30864003)(6486002)(4326008)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:CH2PR03MB5208;H:CH2PR03MB5192.namprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: analog.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: NsNr8K9A8RifZFpCarLD+1MvRzISldaGqcIItW7TrH9V09qkjmkyganKuS817zp5NtUvJVDke5yTlnAqjk1ROQfJs9bhSDbHXIvaepxnbOOM0VjXHj9TSUbR4/tFwIHmNnl+e6YNZnJOdsoFMdhP5SP2NFeE89sFFeFQAz04jHx1wBieZLPFh92eQgmf7IHl9ut5vYexCE4wYnEEtGjEL17MHP6vSqeQR0bsUQ2pInHMzXAGiY4f3cRdl7+39QEdnVs73Wi26l5wd2/IIH3gqkrixxnosiIY/WirQVE5cyfK/1FtAl9Y9mnhunzzp8+gtQwQdYRVPhSgGYlkxXzNZdc9+ShRwEayRugy635rFxEzBDA8yKyo5bB7QucnkI3M2JS6ZpS0SfkGMOeuH8BEKM2CnfncApt8G70jxCPtsMmWlcEcwAR0pScTo4KnXQhkVD1W5hwGvpXFjtb6JmJ4KHiASn0R+G6vM20QKpEqT7yWaReNZRylFZP3BDRYSYPbjyTxdSsYO2rHYOfziFy10A== x-ms-exchange-antispam-messagedata: w0lldkt7HZLXFnVNs2/nyFeuz3qlSHtwJ9Ts4btWGZXQveE53xU4zVDwT+zsOSdmsQyHxf+X1wFAgs+BclcWaWSvX9HWjKFB/LcpWq6/db8uE6K/EH5YzrT0FEDUwe00g7qcCofOxSER4sX74t4r5w== Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab406d6e-1a08-4aa5-4785-08d7adf4827f X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2020 06:43:16.6899 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KHIqh3FV5FBSMG90WnOrvt/3NxVhLOx/H5INry9LIWMRB9efx1HSnPV/dxVdmG67TE1XylWZG+k8ZRe0/KEtxdScms/dEF8hyGtBEMxsjMM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5208 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-02-10_01:2020-02-07,2020-02-10 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 mlxlogscore=999 lowpriorityscore=0 clxscore=1011 mlxscore=0 impostorscore=0 spamscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002100056 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org T24gVGh1LCAyMDIwLTAyLTA2IGF0IDEwOjIwICswMDAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl Og0KPiBbRXh0ZXJuYWxdDQo+IA0KPiBPbiBUaHUsIDYgRmViIDIwMjAgMTA6MTA6NDggKzAwMDAN Cj4gSm9uYXRoYW4gQ2FtZXJvbiA8amljMjNAa2VybmVsLm9yZz4gd3JvdGU6DQo+IA0KPiA+IE9u IFdlZCwgNSBGZWIgMjAyMCAxOToxNToxMSArMDIwMA0KPiA+IEFsZXhhbmRydSBUYWNoaWNpIDxh bGV4YW5kcnUudGFjaGljaUBhbmFsb2cuY29tPiB3cm90ZToNCj4gPiANCj4gPiA+IE1vdmUgYWQ3 MTkyIEFEQyBkcml2ZXIgb3V0IG9mIHN0YWdpbmcgaW50byBtYWlubGluZS4NCj4gPiA+IA0KPiA+ ID4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IFRhY2hpY2kgPGFsZXhhbmRydS50YWNoaWNpQGFu YWxvZy5jb20+ICANCj4gPiANCj4gPiBOaWNlLiAgVG8gbXkgZXllcyBvbmx5IHJlbWFpbmluZyBi aXRzIGFyZSB0aGUgbWlub3IgdHdlYWtzIGluIGVhcmxpZXINCj4gPiBwYXRjaGVzIGluIHRoaXMg c2VyaWVzLg0KPiA+IA0KPiA+IElmIGFueW9uZSBlbHNlIGhhcyB0aW1lIHRvIGxvb2sgYXQgdGhp cyBvbmUgdGhhdCB3b3VsZCBiZSBncmVhdCBvZg0KPiA+IGNvdXJzZSENCj4gPiANCj4gPiBPbmx5 IDIgbW9yZSBBREMgZHJpdmVycyB0byBnbyBpbiBzdGFnaW5nIGFmdGVyIHRoaXMgb25lIDopDQo+ IFNwZWFraW5nIG9mIHdoaWNoOg0KPiANCj4gYWQ3ODE2IGlzIG9ic29sZXRlIHNvIHVwIHRvIEFu YWxvZyB0byBkZWNpZGUgaWYgeW91IHdhbnQgdG8gZGVhbCB3aXRoIGl0DQo+IG9yIGp1c3QgZHJv cCB0aGUgZHJpdmVyLiAgRG9lc24ndCBsb29rIGxpa2UgaXQgd291bGQgdGFrZSBhICdsb3QnDQo+ IHRvIGRyYWcgdGhhdCBvbmUgaW50byB0aGUgbW9kZXJuIGFnZSwgYnV0IGlmIG5vIG9uZSBoYXMg aGFyZHdhcmUgdG8NCj4gdGVzdC4uLg0KDQphZDc4MTYgaXMgb2Jzb2xldGU7DQpidXQgdGhlIGRy aXZlciBzdXBwb3J0cyBhZDc4MTcgJiBhZDg3MTgsIHdoaWNoIGFyZSBzdGlsbCBpbiBwcm9kdWN0 aW9uOw0KDQo+IA0KPiBhZDcyODBhIG5lZWRzIGV2ZW50cyBpbnRlcmZhY2UgYnJpbmdpbmcgdXAg dG8gZGF0ZSBhbmQgdGhlcmUgYXJlIGEgZmV3DQo+IGJpdHMgb2YgY3VzdG9tIEFCSSB0aGF0IG5l ZWQgZG9jdW1lbnRpbmcgYW5kIG1pZ2h0IG5lZWQgc2xpZ2h0eSB0d2Vha2luZy4NCj4gTG9va3Mg ZWFzeSBlbm91Z2ggc28gSSdsbCBjcm9zcyBteSBmaW5nZXJzIHlvdSBvciBvbmUgb2YgdGhlIEFu YWxvZyB0ZWFtDQo+IGNhbiBnZXQgdGhhdCBvbmUgc29ydGVkIGluIG5lYXIgZnV0dXJlIDspDQoN CltubyBwcm9taXNlcyBhYm91dCBkYXRlc10NCndvdWxkIGFkNzI4MGEgYmUgYmV0dGVyIHN1aXRl ZCBmb3IgaHdtb24vcG1idXM/DQp0aGUgZGF0YXNoZWV0IG1lbnRpb25zIGl0IGFzIGEgTGl0aGl1 bSBJb24gQmF0dGVyeSBNb25pdG9yaW5nIFN5c3RlbQ0KDQoNCmknbSBhc2tpbmcgbm93LCBhcyB0 aGlzIG1heSBiZSBhIHF1ZXN0aW9uIHRoYXQgY291bGQgcG9wLXVwIGxhdGVyOw0KDQo+IA0KPiBU aGFua3MsDQo+IA0KPiBKb25hdGhhbg0KPiANCj4gPiBUaGFua3MsDQo+ID4gDQo+ID4gSm9uYXRo YW4NCj4gPiANCj4gPiA+IC0tLQ0KPiA+ID4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAg ICAgIHwgICAgOCArDQo+ID4gPiAgZHJpdmVycy9paW8vYWRjL0tjb25maWcgICAgICAgICAgfCAg IDEyICsNCj4gPiA+ICBkcml2ZXJzL2lpby9hZGMvTWFrZWZpbGUgICAgICAgICB8ICAgIDEgKw0K PiA+ID4gIGRyaXZlcnMvaWlvL2FkYy9hZDcxOTIuYyAgICAgICAgIHwgMTA0MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4gPiA+ICBkcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9LY29u ZmlnICB8ICAgMTIgLQ0KPiA+ID4gIGRyaXZlcnMvc3RhZ2luZy9paW8vYWRjL01ha2VmaWxlIHwg ICAgMSAtDQo+ID4gPiAgZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3MTkyLmMgfCAxMDQzIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gIDcgZmlsZXMgY2hhbmdlZCwgMTA2 NCBpbnNlcnRpb25zKCspLCAxMDU2IGRlbGV0aW9ucygtKQ0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2lpby9hZGMvYWQ3MTkyLmMNCj4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3MTkyLmMNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdp dCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4gPiA+IGluZGV4IGU2OTlmZTM3OGU3MS4u YzgyYmRiMzFlMmZiIDEwMDY0NA0KPiA+ID4gLS0tIGEvTUFJTlRBSU5FUlMNCj4gPiA+ICsrKyBi L01BSU5UQUlORVJTDQo+ID4gPiBAQCAtOTIyLDYgKzkyMiwxNCBAQCBTOglTdXBwb3J0ZWQNCj4g PiA+ICBGOglkcml2ZXJzL2lpby9hZGMvYWQ3MTI0LmMNCj4gPiA+ICBGOglEb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9hZGksYWQ3MTI0LnlhbWwNCj4gPiA+ICANCj4g PiA+ICtBTkFMT0cgREVWSUNFUyBJTkMgQUQ3MTkyIERSSVZFUg0KPiA+ID4gK006CUFsZXhhbmRy dSBUYWNoaWNpIDxhbGV4YW5kcnUudGFjaGljaUBhbmFsb2cuY29tPg0KPiA+ID4gK0w6CWxpbnV4 LWlpb0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+ICtXOglodHRwOi8vZXouYW5hbG9nLmNvbS9jb21t dW5pdHkvbGludXgtZGV2aWNlLWRyaXZlcnMNCj4gPiA+ICtTOglTdXBwb3J0ZWQNCj4gPiA+ICtG Oglkcml2ZXJzL2lpby9hZGMvYWQ3MTkyLmMNCj4gPiA+ICtGOglEb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9hZGksYWQ3MTkyLnlhbWwNCj4gPiA+ICsNCj4gPiA+ICBB TkFMT0cgREVWSUNFUyBJTkMgQUQ3MjkyIERSSVZFUg0KPiA+ID4gIE06CU1hcmNlbG8gU2NobWl0 dCA8bWFyY2Vsby5zY2htaXR0MUBnbWFpbC5jb20+DQo+ID4gPiAgTDoJbGludXgtaWlvQHZnZXIu a2VybmVsLm9yZw0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnIGIv ZHJpdmVycy9paW8vYWRjL0tjb25maWcNCj4gPiA+IGluZGV4IDgyZTMzMDgyOTU4Yy4uZjRkYTgy MWM0MDIyIDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9paW8vYWRjL0tjb25maWcNCj4gPiA+ ICsrKyBiL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnDQo+ID4gPiBAQCAtMzksNiArMzksMTggQEAg Y29uZmlnIEFENzEyNA0KPiA+ID4gIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1 bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZQ0KPiA+ID4gIAkgIGNhbGxlZCBh ZDcxMjQuDQo+ID4gPiAgDQo+ID4gPiArY29uZmlnIEFENzE5Mg0KPiA+ID4gKwl0cmlzdGF0ZSAi QW5hbG9nIERldmljZXMgQUQ3MTkwIEFENzE5MiBBRDcxOTMgQUQ3MTk1IEFEQyBkcml2ZXIiDQo+ ID4gPiArCWRlcGVuZHMgb24gU1BJDQo+ID4gPiArCXNlbGVjdCBBRF9TSUdNQV9ERUxUQQ0KPiA+ ID4gKwloZWxwDQo+ID4gPiArCSAgU2F5IHllcyBoZXJlIHRvIGJ1aWxkIHN1cHBvcnQgZm9yIEFu YWxvZyBEZXZpY2VzIEFENzE5MCwNCj4gPiA+ICsJICBBRDcxOTIsIEFENzE5MyBvciBBRDcxOTUg U1BJIGFuYWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcnMgKEFEQykuDQo+ID4gPiArCSAgSWYgdW5z dXJlLCBzYXkgTiAoYnV0IGl0J3Mgc2FmZSB0byBzYXkgIlkiKS4NCj4gPiA+ICsNCj4gPiA+ICsJ ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUN Cj4gPiA+ICsJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWQ3MTkyLg0KPiA+ID4gKw0KPiA+ID4g IGNvbmZpZyBBRDcyNjYNCj4gPiA+ICAJdHJpc3RhdGUgIkFuYWxvZyBEZXZpY2VzIEFENzI2NS9B RDcyNjYgQURDIGRyaXZlciINCj4gPiA+ICAJZGVwZW5kcyBvbiBTUElfTUFTVEVSDQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlIGIvZHJpdmVycy9paW8vYWRjL01h a2VmaWxlDQo+ID4gPiBpbmRleCA5MTkyMjg5MDBkZjkuLjg0NjI0NTViNDIyOCAxMDA2NDQNCj4g PiA+IC0tLSBhL2RyaXZlcnMvaWlvL2FkYy9NYWtlZmlsZQ0KPiA+ID4gKysrIGIvZHJpdmVycy9p aW8vYWRjL01ha2VmaWxlDQo+ID4gPiBAQCAtOCw2ICs4LDcgQEAgb2JqLSQoQ09ORklHX0FCODUw MF9HUEFEQykgKz0gYWI4NTAwLWdwYWRjLm8NCj4gPiA+ICBvYmotJChDT05GSUdfQURfU0lHTUFf REVMVEEpICs9IGFkX3NpZ21hX2RlbHRhLm8NCj4gPiA+ICBvYmotJChDT05GSUdfQUQ3MDkxUjUp ICs9IGFkNzA5MXI1Lm8gYWQ3MDkxci1iYXNlLm8NCj4gPiA+ICBvYmotJChDT05GSUdfQUQ3MTI0 KSArPSBhZDcxMjQubw0KPiA+ID4gK29iai0kKENPTkZJR19BRDcxOTIpICs9IGFkNzE5Mi5vDQo+ ID4gPiAgb2JqLSQoQ09ORklHX0FENzI2NikgKz0gYWQ3MjY2Lm8NCj4gPiA+ICBvYmotJChDT05G SUdfQUQ3MjkxKSArPSBhZDcyOTEubw0KPiA+ID4gIG9iai0kKENPTkZJR19BRDcyOTIpICs9IGFk NzI5Mi5vDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL2FkNzE5Mi5jIGIvZHJp dmVycy9paW8vYWRjL2FkNzE5Mi5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g aW5kZXggMDAwMDAwMDAwMDAwLi5lNzVkODA4YTJmNDENCj4gPiA+IC0tLSAvZGV2L251bGwNCj4g PiA+ICsrKyBiL2RyaXZlcnMvaWlvL2FkYy9hZDcxOTIuYw0KPiA+ID4gQEAgLTAsMCArMSwxMDQz IEBADQo+ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiA+ICsv Kg0KPiA+ID4gKyAqIEFENzE5MCBBRDcxOTIgQUQ3MTkzIEFENzE5NSBTUEkgQURDIGRyaXZlcg0K PiA+ID4gKyAqDQo+ID4gPiArICogQ29weXJpZ2h0IDIwMTEtMjAxNSBBbmFsb2cgRGV2aWNlcyBJ bmMuDQo+ID4gPiArICovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVw dC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvZGV2aWNlLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ID4gKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+DQo+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgv cmVndWxhdG9yL2NvbnN1bWVyLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiA+ ID4gKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxh eS5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCj4gPiA+ICsNCj4gPiA+ ICsjaW5jbHVkZSA8bGludXgvaWlvL2lpby5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8v c3lzZnMuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvaWlvL2J1ZmZlci5oPg0KPiA+ID4gKyNp bmNsdWRlIDxsaW51eC9paW8vdHJpZ2dlci5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8v dHJpZ2dlcl9jb25zdW1lci5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vdHJpZ2dlcmVk X2J1ZmZlci5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vYWRjL2FkX3NpZ21hX2RlbHRh Lmg+DQo+ID4gPiArDQo+ID4gPiArLyogUmVnaXN0ZXJzICovDQo+ID4gPiArI2RlZmluZSBBRDcx OTJfUkVHX0NPTU0JCTAgLyogQ29tbXVuaWNhdGlvbnMgUmVnaXN0ZXIgKFdPLCA4LWJpdCkgDQo+ ID4gPiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX1JFR19TVEFUCQkwIC8qIFN0YXR1cyBSZWdp c3RlcgkgICAgIChSTywgOC1iaXQpDQo+ID4gPiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX1JF R19NT0RFCQkxIC8qIE1vZGUgUmVnaXN0ZXIJICAgICAoUlcsIDI0LWJpdA0KPiA+ID4gKi8NCj4g PiA+ICsjZGVmaW5lIEFENzE5Ml9SRUdfQ09ORgkJMiAvKiBDb25maWd1cmF0aW9uIFJlZ2lzdGVy ICAoUlcsIDI0LQ0KPiA+ID4gYml0KSAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX1JFR19EQVRB CQkzIC8qIERhdGEgUmVnaXN0ZXIJICAgICAoUk8sIDI0LzMyLQ0KPiA+ID4gYml0KSAqLw0KPiA+ ID4gKyNkZWZpbmUgQUQ3MTkyX1JFR19JRAkJNCAvKiBJRCBSZWdpc3RlcgkgICAgIChSTywgOC1i aXQpDQo+ID4gPiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX1JFR19HUE9DT04JNSAvKiBHUE9D T04gUmVnaXN0ZXIJICAgICAoUk8sIDgtYml0KQ0KPiA+ID4gKi8NCj4gPiA+ICsjZGVmaW5lIEFE NzE5Ml9SRUdfT0ZGU0VUCTYgLyogT2Zmc2V0IFJlZ2lzdGVyCSAgICAgKFJXLCAxNi1iaXQNCj4g PiA+ICovDQo+ID4gPiArCQkJCSAgLyogKEFENzc5MikvMjQtYml0IChBRDcxOTIpKSAqLw0KPiA+ ID4gKyNkZWZpbmUgQUQ3MTkyX1JFR19GVUxMU0FMRQk3IC8qIEZ1bGwtU2NhbGUgUmVnaXN0ZXIg Ki8NCj4gPiA+ICsJCQkJICAvKiAoUlcsIDE2LWJpdCAoQUQ3NzkyKS8yNC1iaXQgKEFENzE5Mikp ICovDQo+ID4gPiArDQo+ID4gPiArLyogQ29tbXVuaWNhdGlvbnMgUmVnaXN0ZXIgQml0IERlc2ln bmF0aW9ucyAoQUQ3MTkyX1JFR19DT01NKSAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0NPTU1f V0VOCQlCSVQoNykgLyogV3JpdGUgRW5hYmxlICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ09N TV9XUklURQkwIC8qIFdyaXRlIE9wZXJhdGlvbiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0NP TU1fUkVBRAlCSVQoNikgLyogUmVhZCBPcGVyYXRpb24gKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5 Ml9DT01NX0FERFIoeCkJKCgoeCkgJiAweDcpIDw8IDMpIC8qIFJlZ2lzdGVyIEFkZHJlc3MNCj4g PiA+ICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ09NTV9DUkVBRAlCSVQoMikgLyogQ29udGlu dW91cyBSZWFkIG9mIERhdGENCj4gPiA+IFJlZ2lzdGVyICovDQo+ID4gPiArDQo+ID4gPiArLyog U3RhdHVzIFJlZ2lzdGVyIEJpdCBEZXNpZ25hdGlvbnMgKEFENzE5Ml9SRUdfU1RBVCkgKi8NCj4g PiA+ICsjZGVmaW5lIEFENzE5Ml9TVEFUX1JEWQkJQklUKDcpIC8qIFJlYWR5ICovDQo+ID4gPiAr I2RlZmluZSBBRDcxOTJfU1RBVF9FUlIJCUJJVCg2KSAvKiBFcnJvciAoT3ZlcnJhbmdlLCBVbmRl cnJhbmdlKQ0KPiA+ID4gKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9TVEFUX05PUkVGCUJJVCg1 KSAvKiBFcnJvciBubyBleHRlcm5hbCByZWZlcmVuY2UgKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5 Ml9TVEFUX1BBUklUWQlCSVQoNCkgLyogUGFyaXR5ICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJf U1RBVF9DSDMJCUJJVCgyKSAvKiBDaGFubmVsIDMgKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9T VEFUX0NIMgkJQklUKDEpIC8qIENoYW5uZWwgMiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX1NU QVRfQ0gxCQlCSVQoMCkgLyogQ2hhbm5lbCAxICovDQo+ID4gPiArDQo+ID4gPiArLyogTW9kZSBS ZWdpc3RlciBCaXQgRGVzaWduYXRpb25zIChBRDcxOTJfUkVHX01PREUpICovDQo+ID4gPiArI2Rl ZmluZSBBRDcxOTJfTU9ERV9TRUwoeCkJKCgoeCkgJiAweDcpIDw8IDIxKSAvKiBPcGVyYXRpb24g TW9kZQ0KPiA+ID4gU2VsZWN0ICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfTU9ERV9TRUxfTUFT SwkoMHg3IDw8IDIxKSAvKiBPcGVyYXRpb24gTW9kZSBTZWxlY3QNCj4gPiA+IE1hc2sgKi8NCj4g PiA+ICsjZGVmaW5lIEFENzE5Ml9NT0RFX0RBVF9TVEEJQklUKDIwKSAvKiBTdGF0dXMgUmVnaXN0 ZXIgdHJhbnNtaXNzaW9uDQo+ID4gPiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX01PREVfQ0xL U1JDKHgpCSgoKHgpICYgMHgzKSA8PCAxOCkgLyogQ2xvY2sgU291cmNlDQo+ID4gPiBTZWxlY3Qg Ki8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9NT0RFX1NJTkMzCUJJVCgxNSkgLyogU0lOQzMgRmls dGVyIFNlbGVjdCAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX01PREVfQUNYCQlCSVQoMTQpIC8q IEFDIGV4Y2l0YXRpb24gZW5hYmxlKEFENzE5NQ0KPiA+ID4gb25seSkqLw0KPiA+ID4gKyNkZWZp bmUgQUQ3MTkyX01PREVfRU5QQVIJQklUKDEzKSAvKiBQYXJpdHkgRW5hYmxlICovDQo+ID4gPiAr I2RlZmluZSBBRDcxOTJfTU9ERV9DTEtESVYJQklUKDEyKSAvKiBDbG9jayBkaXZpZGUgYnkgMiAo QUQ3MTkwLzINCj4gPiA+IG9ubHkpKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9NT0RFX1NDWUNM RQlCSVQoMTEpIC8qIFNpbmdsZSBjeWNsZSBjb252ZXJzaW9uICovDQo+ID4gPiArI2RlZmluZSBB RDcxOTJfTU9ERV9SRUo2MAlCSVQoMTApIC8qIDUwLzYwSHogbm90Y2ggZmlsdGVyICovDQo+ID4g PiArI2RlZmluZSBBRDcxOTJfTU9ERV9SQVRFKHgpCSgoeCkgJiAweDNGRikgLyogRmlsdGVyIFVw ZGF0ZSBSYXRlDQo+ID4gPiBTZWxlY3QgKi8NCj4gPiA+ICsNCj4gPiA+ICsvKiBNb2RlIFJlZ2lz dGVyOiBBRDcxOTJfTU9ERV9TRUwgb3B0aW9ucyAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX01P REVfQ09OVAkJMCAvKiBDb250aW51b3VzIENvbnZlcnNpb24gTW9kZSAqLw0KPiA+ID4gKyNkZWZp bmUgQUQ3MTkyX01PREVfU0lOR0xFCQkxIC8qIFNpbmdsZSBDb252ZXJzaW9uIE1vZGUgKi8NCj4g PiA+ICsjZGVmaW5lIEFENzE5Ml9NT0RFX0lETEUJCTIgLyogSWRsZSBNb2RlICovDQo+ID4gPiAr I2RlZmluZSBBRDcxOTJfTU9ERV9QV1JETgkJMyAvKiBQb3dlci1Eb3duIE1vZGUgKi8NCj4gPiA+ ICsjZGVmaW5lIEFENzE5Ml9NT0RFX0NBTF9JTlRfWkVSTwk0IC8qIEludGVybmFsIFplcm8tU2Nh bGUgQ2FsaWJyYXRpb24gKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9NT0RFX0NBTF9JTlRfRlVM TAk1IC8qIEludGVybmFsIEZ1bGwtU2NhbGUgQ2FsaWJyYXRpb24gKi8NCj4gPiA+ICsjZGVmaW5l IEFENzE5Ml9NT0RFX0NBTF9TWVNfWkVSTwk2IC8qIFN5c3RlbSBaZXJvLVNjYWxlIENhbGlicmF0 aW9uICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfTU9ERV9DQUxfU1lTX0ZVTEwJNyAvKiBTeXN0 ZW0gRnVsbC1TY2FsZSBDYWxpYnJhdGlvbiAqLw0KPiA+ID4gKw0KPiA+ID4gKy8qIE1vZGUgUmVn aXN0ZXI6IEFENzE5Ml9NT0RFX0NMS1NSQyBvcHRpb25zICovDQo+ID4gPiArI2RlZmluZSBBRDcx OTJfQ0xLX0VYVF9NQ0xLMV8yCQkwIC8qIEV4dGVybmFsIDQuOTIgTUh6IENsb2NrDQo+ID4gPiBj b25uZWN0ZWQqLw0KPiA+ID4gKwkJCQkJICAvKiBmcm9tIE1DTEsxIHRvIE1DTEsyICovDQo+ID4g PiArI2RlZmluZSBBRDcxOTJfQ0xLX0VYVF9NQ0xLMgkJMSAvKiBFeHRlcm5hbCBDbG9jayBhcHBs aWVkIHRvDQo+ID4gPiBNQ0xLMiAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0NMS19JTlQJCQky IC8qIEludGVybmFsIDQuOTIgTUh6IENsb2NrIG5vdA0KPiA+ID4gKi8NCj4gPiA+ICsJCQkJCSAg LyogYXZhaWxhYmxlIGF0IHRoZSBNQ0xLMiBwaW4gKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9D TEtfSU5UX0NPCQkzIC8qIEludGVybmFsIDQuOTIgTUh6IENsb2NrDQo+ID4gPiBhdmFpbGFibGUq Lw0KPiA+ID4gKwkJCQkJICAvKiBhdCB0aGUgTUNMSzIgcGluICovDQo+ID4gPiArDQo+ID4gPiAr LyogQ29uZmlndXJhdGlvbiBSZWdpc3RlciBCaXQgRGVzaWduYXRpb25zIChBRDcxOTJfUkVHX0NP TkYpICovDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ09ORl9DSE9QCUJJVCgyMykg LyogQ0hPUCBlbmFibGUgKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9DT05GX1JFRlNFTAlCSVQo MjApIC8qIFJFRklOMS9SRUZJTjIgUmVmZXJlbmNlDQo+ID4gPiBTZWxlY3QgKi8NCj4gPiA+ICsj ZGVmaW5lIEFENzE5Ml9DT05GX0NIQU4oeCkJKCh4KSA8PCA4KSAvKiBDaGFubmVsIHNlbGVjdCAq Lw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0NPTkZfQ0hBTl9NQVNLCSgweDdGRiA8PCA4KSAvKiBD aGFubmVsIHNlbGVjdCBtYXNrICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ09ORl9CVVJOCUJJ VCg3KSAvKiBCdXJub3V0IGN1cnJlbnQgZW5hYmxlICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJf Q09ORl9SRUZERVQJQklUKDYpIC8qIFJlZmVyZW5jZSBkZXRlY3QgZW5hYmxlICovDQo+ID4gPiAr I2RlZmluZSBBRDcxOTJfQ09ORl9CVUYJCUJJVCg0KSAvKiBCdWZmZXJlZCBNb2RlIEVuYWJsZSAq Lw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0NPTkZfVU5JUE9MQVIJQklUKDMpIC8qIFVuaXBvbGFy L0JpcG9sYXIgRW5hYmxlICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ09ORl9HQUlOKHgpCSgo eCkgJiAweDcpIC8qIEdhaW4gU2VsZWN0ICovDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBBRDcx OTJfQ0hfQUlOMVBfQUlOMk0JQklUKDApIC8qIEFJTjEoKykgLSBBSU4yKC0pICovDQo+ID4gPiAr I2RlZmluZSBBRDcxOTJfQ0hfQUlOM1BfQUlONE0JQklUKDEpIC8qIEFJTjMoKykgLSBBSU40KC0p ICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ0hfVEVNUAkJQklUKDIpIC8qIFRlbXAgU2Vuc29y ICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ0hfQUlOMlBfQUlOMk0JQklUKDMpIC8qIEFJTjIo KykgLSBBSU4yKC0pICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ0hfQUlOMQkJQklUKDQpIC8q IEFJTjEgLSBBSU5DT00gKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9DSF9BSU4yCQlCSVQoNSkg LyogQUlOMiAtIEFJTkNPTSAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0NIX0FJTjMJCUJJVCg2 KSAvKiBBSU4zIC0gQUlOQ09NICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfQ0hfQUlONAkJQklU KDcpIC8qIEFJTjQgLSBBSU5DT00gKi8NCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIEFENzE5M19D SF9BSU4xUF9BSU4yTQkweDAwMSAgLyogQUlOMSgrKSAtIEFJTjIoLSkgKi8NCj4gPiA+ICsjZGVm aW5lIEFENzE5M19DSF9BSU4zUF9BSU40TQkweDAwMiAgLyogQUlOMygrKSAtIEFJTjQoLSkgKi8N Cj4gPiA+ICsjZGVmaW5lIEFENzE5M19DSF9BSU41UF9BSU42TQkweDAwNCAgLyogQUlONSgrKSAt IEFJTjYoLSkgKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5M19DSF9BSU43UF9BSU44TQkweDAwOCAg LyogQUlONygrKSAtIEFJTjgoLSkgKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5M19DSF9URU1QCQkw eDEwMCAvKiBUZW1wIHNlbnNlb3IgKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5M19DSF9BSU4yUF9B SU4yTQkweDIwMCAvKiBBSU4yKCspIC0gQUlOMigtKSAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkz X0NIX0FJTjEJCTB4NDAxIC8qIEFJTjEgLSBBSU5DT00gKi8NCj4gPiA+ICsjZGVmaW5lIEFENzE5 M19DSF9BSU4yCQkweDQwMiAvKiBBSU4yIC0gQUlOQ09NICovDQo+ID4gPiArI2RlZmluZSBBRDcx OTNfQ0hfQUlOMwkJMHg0MDQgLyogQUlOMyAtIEFJTkNPTSAqLw0KPiA+ID4gKyNkZWZpbmUgQUQ3 MTkzX0NIX0FJTjQJCTB4NDA4IC8qIEFJTjQgLSBBSU5DT00gKi8NCj4gPiA+ICsjZGVmaW5lIEFE NzE5M19DSF9BSU41CQkweDQxMCAvKiBBSU41IC0gQUlOQ09NICovDQo+ID4gPiArI2RlZmluZSBB RDcxOTNfQ0hfQUlONgkJMHg0MjAgLyogQUlONiAtIEFJTkNPTSAqLw0KPiA+ID4gKyNkZWZpbmUg QUQ3MTkzX0NIX0FJTjcJCTB4NDQwIC8qIEFJTjcgLSBBSU5DT00gKi8NCj4gPiA+ICsjZGVmaW5l IEFENzE5M19DSF9BSU44CQkweDQ4MCAvKiBBSU43IC0gQUlOQ09NICovDQo+ID4gPiArI2RlZmlu ZSBBRDcxOTNfQ0hfQUlOQ09NCTB4NjAwIC8qIEFJTkNPTSAtIEFJTkNPTSAqLw0KPiA+ID4gKw0K PiA+ID4gKy8qIElEIFJlZ2lzdGVyIEJpdCBEZXNpZ25hdGlvbnMgKEFENzE5Ml9SRUdfSUQpICov DQo+ID4gPiArI2RlZmluZSBJRF9BRDcxOTAJCTB4NA0KPiA+ID4gKyNkZWZpbmUgSURfQUQ3MTky CQkweDANCj4gPiA+ICsjZGVmaW5lIElEX0FENzE5MwkJMHgyDQo+ID4gPiArI2RlZmluZSBJRF9B RDcxOTUJCTB4Ng0KPiA+ID4gKyNkZWZpbmUgQUQ3MTkyX0lEX01BU0sJCTB4MEYNCj4gPiA+ICsN Cj4gPiA+ICsvKiBHUE9DT04gUmVnaXN0ZXIgQml0IERlc2lnbmF0aW9ucyAoQUQ3MTkyX1JFR19H UE9DT04pICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfR1BPQ09OX0JQRFNXCUJJVCg2KSAvKiBC cmlkZ2UgcG93ZXItZG93biBzd2l0Y2gNCj4gPiA+IGVuYWJsZSAqLw0KPiA+ID4gKyNkZWZpbmUg QUQ3MTkyX0dQT0NPTl9HUDMyRU4JQklUKDUpIC8qIERpZ2l0YWwgT3V0cHV0IFAzIGFuZCBQMg0K PiA+ID4gZW5hYmxlICovDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfR1BPQ09OX0dQMTBFTglCSVQo NCkgLyogRGlnaXRhbCBPdXRwdXQgUDEgYW5kIFAwDQo+ID4gPiBlbmFibGUgKi8NCj4gPiA+ICsj ZGVmaW5lIEFENzE5Ml9HUE9DT05fUDNEQVQJQklUKDMpIC8qIFAzIHN0YXRlICovDQo+ID4gPiAr I2RlZmluZSBBRDcxOTJfR1BPQ09OX1AyREFUCUJJVCgyKSAvKiBQMiBzdGF0ZSAqLw0KPiA+ID4g KyNkZWZpbmUgQUQ3MTkyX0dQT0NPTl9QMURBVAlCSVQoMSkgLyogUDEgc3RhdGUgKi8NCj4gPiA+ ICsjZGVmaW5lIEFENzE5Ml9HUE9DT05fUDBEQVQJQklUKDApIC8qIFAwIHN0YXRlICovDQo+ID4g PiArDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfRVhUX0ZSRVFfTUhaX01JTgkyNDU3NjAwDQo+ID4g PiArI2RlZmluZSBBRDcxOTJfRVhUX0ZSRVFfTUhaX01BWAk1MTIwMDAwDQo+ID4gPiArI2RlZmlu ZSBBRDcxOTJfSU5UX0ZSRVFfTUhaCTQ5MTUyMDANCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIEFE NzE5Ml9OT19TWU5DX0ZJTFRFUgkxDQo+ID4gPiArI2RlZmluZSBBRDcxOTJfU1lOQzNfRklMVEVS CTMNCj4gPiA+ICsjZGVmaW5lIEFENzE5Ml9TWU5DNF9GSUxURVIJNA0KPiA+ID4gKw0KPiA+ID4g Ky8qIE5PVEU6DQo+ID4gPiArICogVGhlIEFENzE5MC8yLzUgZmVhdHVyZXMgYSBkdWFsIHVzZSBk YXRhIG91dCByZWFkeSBET1VUL1JEWSBvdXRwdXQuDQo+ID4gPiArICogSW4gb3JkZXIgdG8gYXZv aWQgY29udGVudGlvbnMgb24gdGhlIFNQSSBidXMsIGl0J3MgdGhlcmVmb3JlIG5lY2Vzc2FyeQ0K PiA+ID4gKyAqIHRvIHVzZSBzcGkgYnVzIGxvY2tpbmcuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBU aGUgRE9VVC9SRFkgb3V0cHV0IG11c3QgYWxzbyBiZSB3aXJlZCB0byBhbiBpbnRlcnJ1cHQgY2Fw YWJsZSBHUElPLg0KPiA+ID4gKyAqLw0KPiA+ID4gKw0KPiA+ID4gK2VudW0gew0KPiA+ID4gKyAg IEFENzE5Ml9TWVNDQUxJQl9aRVJPX1NDQUxFLA0KPiA+ID4gKyAgIEFENzE5Ml9TWVNDQUxJQl9G VUxMX1NDQUxFLA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RydWN0IGFkNzE5Ml9zdGF0 ZSB7DQo+ID4gPiArCXN0cnVjdCByZWd1bGF0b3IJCSphdmRkOw0KPiA+ID4gKwlzdHJ1Y3QgcmVn dWxhdG9yCQkqZHZkZDsNCj4gPiA+ICsJc3RydWN0IGNsawkJCSptY2xrOw0KPiA+ID4gKwl1MTYJ CQkJaW50X3ZyZWZfbXY7DQo+ID4gPiArCXUzMgkJCQlmY2xrOw0KPiA+ID4gKwl1MzIJCQkJZl9v cmRlcjsNCj4gPiA+ICsJdTMyCQkJCW1vZGU7DQo+ID4gPiArCXUzMgkJCQljb25mOw0KPiA+ID4g Kwl1MzIJCQkJc2NhbGVfYXZhaWxbOF1bMl07DQo+ID4gPiArCXU4CQkJCWdwb2NvbjsNCj4gPiA+ ICsJdTgJCQkJZGV2aWQ7DQo+ID4gPiArCXU4CQkJCWNsb2NrX3NlbDsNCj4gPiA+ICsJc3RydWN0 IG11dGV4CQkJbG9jazsJLyogcHJvdGVjdCBzZW5zb3Igc3RhdGUgKi8NCj4gPiA+ICsJdTgJCQkJ c3lzY2FsaWJfbW9kZVs4XTsNCj4gPiA+ICsNCj4gPiA+ICsJc3RydWN0IGFkX3NpZ21hX2RlbHRh CQlzZDsNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBjaGFyICogY29u c3QgYWQ3MTkyX3N5c2NhbGliX21vZGVzW10gPSB7DQo+ID4gPiArCVtBRDcxOTJfU1lTQ0FMSUJf WkVST19TQ0FMRV0gPSAiemVyb19zY2FsZSIsDQo+ID4gPiArCVtBRDcxOTJfU1lTQ0FMSUJfRlVM TF9TQ0FMRV0gPSAiZnVsbF9zY2FsZSIsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0 aWMgaW50IGFkNzE5Ml9zZXRfc3lzY2FsaWJfbW9kZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 LA0KPiA+ID4gKwkJCQkgICAgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgKmNoYW4sDQo+ID4g PiArCQkJCSAgICB1bnNpZ25lZCBpbnQgbW9kZSkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBh ZDcxOTJfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiA+ICsNCj4gPiA+ICsJ c3QtPnN5c2NhbGliX21vZGVbY2hhbi0+Y2hhbm5lbF0gPSBtb2RlOw0KPiA+ID4gKw0KPiA+ID4g KwlyZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGludCBhZDcxOTJf Z2V0X3N5c2NhbGliX21vZGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gPiA+ICsJCQkJ ICAgIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjICpjaGFuKQ0KPiA+ID4gK3sNCj4gPiA+ICsJ c3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiA+ID4gKw0K PiA+ID4gKwlyZXR1cm4gc3QtPnN5c2NhbGliX21vZGVbY2hhbi0+Y2hhbm5lbF07DQo+ID4gPiAr fQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBzc2l6ZV90IGFkNzE5Ml93cml0ZV9zeXNjYWxpYihz dHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+ID4gKwkJCQkgICAgIHVpbnRwdHJfdCBwcml2 YXRlLA0KPiA+ID4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjICpjaGFuLA0K PiA+ID4gKwkJCQkgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikNCj4gPiA+ICt7DQo+ ID4gPiArCXN0cnVjdCBhZDcxOTJfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4g PiA+ICsJYm9vbCBzeXNfY2FsaWI7DQo+ID4gPiArCWludCByZXQsIHRlbXA7DQo+ID4gPiArDQo+ ID4gPiArCXJldCA9IHN0cnRvYm9vbChidWYsICZzeXNfY2FsaWIpOw0KPiA+ID4gKwlpZiAocmV0 KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJdGVtcCA9IHN0LT5zeXNj YWxpYl9tb2RlW2NoYW4tPmNoYW5uZWxdOw0KPiA+ID4gKwlpZiAoc3lzX2NhbGliKSB7DQo+ID4g PiArCQlpZiAodGVtcCA9PSBBRDcxOTJfU1lTQ0FMSUJfWkVST19TQ0FMRSkNCj4gPiA+ICsJCQly ZXQgPSBhZF9zZF9jYWxpYnJhdGUoJnN0LT5zZCwgQUQ3MTkyX01PREVfQ0FMX1NZU19aRVJPLA0K PiA+ID4gKwkJCQkJICAgICAgY2hhbi0+YWRkcmVzcyk7DQo+ID4gPiArCQllbHNlDQo+ID4gPiAr CQkJcmV0ID0gYWRfc2RfY2FsaWJyYXRlKCZzdC0+c2QsIEFENzE5Ml9NT0RFX0NBTF9TWVNfRlVM TCwNCj4gPiA+ICsJCQkJCSAgICAgIGNoYW4tPmFkZHJlc3MpOw0KPiA+ID4gKwl9DQo+ID4gPiAr DQo+ID4gPiArCXJldHVybiByZXQgPyByZXQgOiBsZW47DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2VudW0gYWQ3MTkyX3N5c2NhbGliX21vZGVfZW51 bSA9IHsNCj4gPiA+ICsJLml0ZW1zID0gYWQ3MTkyX3N5c2NhbGliX21vZGVzLA0KPiA+ID4gKwku bnVtX2l0ZW1zID0gQVJSQVlfU0laRShhZDcxOTJfc3lzY2FsaWJfbW9kZXMpLA0KPiA+ID4gKwku c2V0ID0gYWQ3MTkyX3NldF9zeXNjYWxpYl9tb2RlLA0KPiA+ID4gKwkuZ2V0ID0gYWQ3MTkyX2dl dF9zeXNjYWxpYl9tb2RlDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGlpb19jaGFuX3NwZWNfZXh0X2luZm8gYWQ3MTkyX2NhbGlic3lzX2V4dF9pbmZvW10g PSB7DQo+ID4gPiArCXsNCj4gPiA+ICsJCS5uYW1lID0gInN5c19jYWxpYnJhdGlvbiIsDQo+ID4g PiArCQkud3JpdGUgPSBhZDcxOTJfd3JpdGVfc3lzY2FsaWIsDQo+ID4gPiArCQkuc2hhcmVkID0g SUlPX1NFUEFSQVRFLA0KPiA+ID4gKwl9LA0KPiA+ID4gKwlJSU9fRU5VTSgic3lzX2NhbGlicmF0 aW9uX21vZGUiLCBJSU9fU0VQQVJBVEUsDQo+ID4gPiArCQkgJmFkNzE5Ml9zeXNjYWxpYl9tb2Rl X2VudW0pLA0KPiA+ID4gKwlJSU9fRU5VTV9BVkFJTEFCTEUoInN5c19jYWxpYnJhdGlvbl9tb2Rl IiwgJmFkNzE5Ml9zeXNjYWxpYl9tb2RlX2VudW0pLA0KPiA+ID4gKwl7fQ0KPiA+ID4gK307DQo+ ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBhZDcxOTJfc3RhdGUgKmFkX3NpZ21hX2RlbHRh X3RvX2FkNzE5MihzdHJ1Y3QNCj4gPiA+IGFkX3NpZ21hX2RlbHRhICpzZCkNCj4gPiA+ICt7DQo+ ID4gPiArCXJldHVybiBjb250YWluZXJfb2Yoc2QsIHN0cnVjdCBhZDcxOTJfc3RhdGUsIHNkKTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGludCBhZDcxOTJfc2V0X2NoYW5uZWwo c3RydWN0IGFkX3NpZ21hX2RlbHRhICpzZCwgdW5zaWduZWQgaW50DQo+ID4gPiBjaGFubmVsKQ0K PiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QgPSBhZF9zaWdtYV9kZWx0 YV90b19hZDcxOTIoc2QpOw0KPiA+ID4gKw0KPiA+ID4gKwlzdC0+Y29uZiAmPSB+QUQ3MTkyX0NP TkZfQ0hBTl9NQVNLOw0KPiA+ID4gKwlzdC0+Y29uZiB8PSBBRDcxOTJfQ09ORl9DSEFOKGNoYW5u ZWwpOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gYWRfc2Rfd3JpdGVfcmVnKCZzdC0+c2QsIEFE NzE5Ml9SRUdfQ09ORiwgMywgc3QtPmNvbmYpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtz dGF0aWMgaW50IGFkNzE5Ml9zZXRfbW9kZShzdHJ1Y3QgYWRfc2lnbWFfZGVsdGEgKnNkLA0KPiA+ ID4gKwkJCSAgIGVudW0gYWRfc2lnbWFfZGVsdGFfbW9kZSBtb2RlKQ0KPiA+ID4gK3sNCj4gPiA+ ICsJc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QgPSBhZF9zaWdtYV9kZWx0YV90b19hZDcxOTIoc2Qp Ow0KPiA+ID4gKw0KPiA+ID4gKwlzdC0+bW9kZSAmPSB+QUQ3MTkyX01PREVfU0VMX01BU0s7DQo+ ID4gPiArCXN0LT5tb2RlIHw9IEFENzE5Ml9NT0RFX1NFTChtb2RlKTsNCj4gPiA+ICsNCj4gPiA+ ICsJcmV0dXJuIGFkX3NkX3dyaXRlX3JlZygmc3QtPnNkLCBBRDcxOTJfUkVHX01PREUsIDMsIHN0 LT5tb2RlKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBh ZF9zaWdtYV9kZWx0YV9pbmZvIGFkNzE5Ml9zaWdtYV9kZWx0YV9pbmZvID0gew0KPiA+ID4gKwku c2V0X2NoYW5uZWwgPSBhZDcxOTJfc2V0X2NoYW5uZWwsDQo+ID4gPiArCS5zZXRfbW9kZSA9IGFk NzE5Ml9zZXRfbW9kZSwNCj4gPiA+ICsJLmhhc19yZWdpc3RlcnMgPSB0cnVlLA0KPiA+ID4gKwku YWRkcl9zaGlmdCA9IDMsDQo+ID4gPiArCS5yZWFkX21hc2sgPSBCSVQoNiksDQo+ID4gPiArfTsN Cj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFkX3NkX2NhbGliX2RhdGEgYWQ3 MTkyX2NhbGliX2Fycls4XSA9IHsNCj4gPiA+ICsJe0FENzE5Ml9NT0RFX0NBTF9JTlRfWkVSTywg QUQ3MTkyX0NIX0FJTjF9LA0KPiA+ID4gKwl7QUQ3MTkyX01PREVfQ0FMX0lOVF9GVUxMLCBBRDcx OTJfQ0hfQUlOMX0sDQo+ID4gPiArCXtBRDcxOTJfTU9ERV9DQUxfSU5UX1pFUk8sIEFENzE5Ml9D SF9BSU4yfSwNCj4gPiA+ICsJe0FENzE5Ml9NT0RFX0NBTF9JTlRfRlVMTCwgQUQ3MTkyX0NIX0FJ TjJ9LA0KPiA+ID4gKwl7QUQ3MTkyX01PREVfQ0FMX0lOVF9aRVJPLCBBRDcxOTJfQ0hfQUlOM30s DQo+ID4gPiArCXtBRDcxOTJfTU9ERV9DQUxfSU5UX0ZVTEwsIEFENzE5Ml9DSF9BSU4zfSwNCj4g PiA+ICsJe0FENzE5Ml9NT0RFX0NBTF9JTlRfWkVSTywgQUQ3MTkyX0NIX0FJTjR9LA0KPiA+ID4g Kwl7QUQ3MTkyX01PREVfQ0FMX0lOVF9GVUxMLCBBRDcxOTJfQ0hfQUlONH0NCj4gPiA+ICt9Ow0K PiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3MTkyX2NhbGlicmF0ZV9hbGwoc3RydWN0IGFk NzE5Ml9zdGF0ZSAqc3QpDQo+ID4gPiArew0KPiA+ID4gKwlyZXR1cm4gYWRfc2RfY2FsaWJyYXRl X2FsbCgmc3QtPnNkLCBhZDcxOTJfY2FsaWJfYXJyLA0KPiA+ID4gKwkJCQkgICBBUlJBWV9TSVpF KGFkNzE5Ml9jYWxpYl9hcnIpKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGlu bGluZSBib29sIGFkNzE5Ml92YWxpZF9leHRlcm5hbF9mcmVxdWVuY3kodTMyIGZyZXEpDQo+ID4g PiArew0KPiA+ID4gKwlyZXR1cm4gKGZyZXEgPj0gQUQ3MTkyX0VYVF9GUkVRX01IWl9NSU4gJiYN Cj4gPiA+ICsJCWZyZXEgPD0gQUQ3MTkyX0VYVF9GUkVRX01IWl9NQVgpOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50IGFkNzE5Ml9vZl9jbG9ja19zZWxlY3Qoc3RydWN0IGFk NzE5Ml9zdGF0ZSAqc3QpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5w ID0gc3QtPnNkLnNwaS0+ZGV2Lm9mX25vZGU7DQo+ID4gPiArCXVuc2lnbmVkIGludCBjbG9ja19z ZWw7DQo+ID4gPiArDQo+ID4gPiArCWNsb2NrX3NlbCA9IEFENzE5Ml9DTEtfSU5UOw0KPiA+ID4g Kw0KPiA+ID4gKwkvKiB1c2UgaW50ZXJuYWwgY2xvY2sgKi8NCj4gPiA+ICsJaWYgKFBUUl9FUlIo c3QtPm1jbGspID09IC1FTk9FTlQpIHsNCj4gPiA+ICsJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jv b2wobnAsICJhZGksaW50LWNsb2NrLW91dHB1dC1lbmFibGUiKSkNCj4gPiA+ICsJCQljbG9ja19z ZWwgPSBBRDcxOTJfQ0xLX0lOVF9DTzsNCj4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ICsJCWlmIChv Zl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICJhZGksY2xvY2steHRhbCIpKQ0KPiA+ID4gKwkJCWNs b2NrX3NlbCA9IEFENzE5Ml9DTEtfRVhUX01DTEsxXzI7DQo+ID4gPiArCQllbHNlDQo+ID4gPiAr CQkJY2xvY2tfc2VsID0gQUQ3MTkyX0NMS19FWFRfTUNMSzI7DQo+ID4gPiArCX0NCj4gPiA+ICsN Cj4gPiA+ICsJcmV0dXJuIGNsb2NrX3NlbDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3Rh dGljIGludCBhZDcxOTJfc2V0dXAoc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QsIHN0cnVjdCBkZXZp Y2Vfbm9kZSAqbnApDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 ID0gc3BpX2dldF9kcnZkYXRhKHN0LT5zZC5zcGkpOw0KPiA+ID4gKwlib29sIHJlajYwX2VuLCBy ZWZpbjJfZW47DQo+ID4gPiArCWJvb2wgYnVmX2VuLCBiaXBvbGFyLCBidXJub3V0X2N1cnJfZW47 DQo+ID4gPiArCXVuc2lnbmVkIGxvbmcgbG9uZyBzY2FsZV91djsNCj4gPiA+ICsJaW50IGksIHJl dCwgaWQ7DQo+ID4gPiArDQo+ID4gPiArCS8qIHJlc2V0IHRoZSBzZXJpYWwgaW50ZXJmYWNlICov DQo+ID4gPiArCXJldCA9IGFkX3NkX3Jlc2V0KCZzdC0+c2QsIDQ4KTsNCj4gPiA+ICsJaWYgKHJl dCA8IDApDQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gKwl1c2xlZXBfcmFuZ2UoNTAwLCAx MDAwKTsgLyogV2FpdCBmb3IgYXQgbGVhc3QgNTAwdXMgKi8NCj4gPiA+ICsNCj4gPiA+ICsJLyog d3JpdGUvcmVhZCB0ZXN0IGZvciBkZXZpY2UgcHJlc2VuY2UgKi8NCj4gPiA+ICsJcmV0ID0gYWRf c2RfcmVhZF9yZWcoJnN0LT5zZCwgQUQ3MTkyX1JFR19JRCwgMSwgJmlkKTsNCj4gPiA+ICsJaWYg KHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCWlkICY9IEFENzE5 Ml9JRF9NQVNLOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoaWQgIT0gc3QtPmRldmlkKQ0KPiA+ID4g KwkJZGV2X3dhcm4oJnN0LT5zZC5zcGktPmRldiwgImRldmljZSBJRCBxdWVyeSBmYWlsZWQgKDB4 JVgpXG4iLA0KPiA+ID4gKwkJCSBpZCk7DQo+ID4gPiArDQo+ID4gPiArCXN0LT5tb2RlID0gQUQ3 MTkyX01PREVfU0VMKEFENzE5Ml9NT0RFX0lETEUpIHwNCj4gPiA+ICsJCUFENzE5Ml9NT0RFX0NM S1NSQyhzdC0+Y2xvY2tfc2VsKSB8DQo+ID4gPiArCQlBRDcxOTJfTU9ERV9SQVRFKDQ4MCk7DQo+ ID4gPiArDQo+ID4gPiArCXN0LT5jb25mID0gQUQ3MTkyX0NPTkZfR0FJTigwKTsNCj4gPiA+ICsN Cj4gPiA+ICsJcmVqNjBfZW4gPSBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICJhZGkscmVqZWN0 aW9uLTYwLUh6LWVuYWJsZSIpOw0KPiA+ID4gKwlpZiAocmVqNjBfZW4pDQo+ID4gPiArCQlzdC0+ bW9kZSB8PSBBRDcxOTJfTU9ERV9SRUo2MDsNCj4gPiA+ICsNCj4gPiA+ICsJcmVmaW4yX2VuID0g b2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCAiYWRpLHJlZmluMi1waW5zLWVuYWJsZSIpOw0KPiA+ ID4gKwlpZiAocmVmaW4yX2VuICYmIHN0LT5kZXZpZCAhPSBJRF9BRDcxOTUpDQo+ID4gPiArCQlz dC0+Y29uZiB8PSBBRDcxOTJfQ09ORl9SRUZTRUw7DQo+ID4gPiArDQo+ID4gPiArCXN0LT5jb25m ICY9IH5BRDcxOTJfQ09ORl9DSE9QOw0KPiA+ID4gKwlzdC0+Zl9vcmRlciA9IEFENzE5Ml9OT19T WU5DX0ZJTFRFUjsNCj4gPiA+ICsNCj4gPiA+ICsJYnVmX2VuID0gb2ZfcHJvcGVydHlfcmVhZF9i b29sKG5wLCAiYWRpLGJ1ZmZlci1lbmFibGUiKTsNCj4gPiA+ICsJaWYgKGJ1Zl9lbikNCj4gPiA+ ICsJCXN0LT5jb25mIHw9IEFENzE5Ml9DT05GX0JVRjsNCj4gPiA+ICsNCj4gPiA+ICsJYmlwb2xh ciA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgImJpcG9sYXIiKTsNCj4gPiA+ICsJaWYgKCFi aXBvbGFyKQ0KPiA+ID4gKwkJc3QtPmNvbmYgfD0gQUQ3MTkyX0NPTkZfVU5JUE9MQVI7DQo+ID4g PiArDQo+ID4gPiArCWJ1cm5vdXRfY3Vycl9lbiA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwN Cj4gPiA+ICsJCQkJCQkiYWRpLGJ1cm5vdXQtY3VycmVudHMtZW5hYmxlIik7DQo+ID4gPiArCWlm IChidXJub3V0X2N1cnJfZW4gJiYgYnVmX2VuKSB7DQo+ID4gPiArCQlzdC0+Y29uZiB8PSBBRDcx OTJfQ09ORl9CVVJOOw0KPiA+ID4gKwl9IGVsc2UgaWYgKGJ1cm5vdXRfY3Vycl9lbikgew0KPiA+ ID4gKwkJZGV2X3dhcm4oJnN0LT5zZC5zcGktPmRldiwNCj4gPiA+ICsJCQkgIkNhbid0IGVuYWJs ZSBidXJub3V0IGN1cnJlbnRzOiBzZWUgQ0hPUCBvciBidWZmZXJcbiIpOw0KPiA+ID4gKwl9DQo+ ID4gPiArDQo+ID4gPiArCXJldCA9IGFkX3NkX3dyaXRlX3JlZygmc3QtPnNkLCBBRDcxOTJfUkVH X01PREUsIDMsIHN0LT5tb2RlKTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiBy ZXQ7DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IGFkX3NkX3dyaXRlX3JlZygmc3QtPnNkLCBBRDcx OTJfUkVHX0NPTkYsIDMsIHN0LT5jb25mKTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJl dHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IGFkNzE5Ml9jYWxpYnJhdGVfYWxsKHN0 KTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4g PiArCS8qIFBvcHVsYXRlIGF2YWlsYWJsZSBBREMgaW5wdXQgcmFuZ2VzICovDQo+ID4gPiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0LT5zY2FsZV9hdmFpbCk7IGkrKykgew0KPiA+ID4g KwkJc2NhbGVfdXYgPSAoKHU2NClzdC0+aW50X3ZyZWZfbXYgKiAxMDAwMDAwMDApDQo+ID4gPiAr CQkJPj4gKGluZGlvX2Rldi0+Y2hhbm5lbHNbMF0uc2Nhbl90eXBlLnJlYWxiaXRzIC0NCj4gPiA+ ICsJCQkoKHN0LT5jb25mICYgQUQ3MTkyX0NPTkZfVU5JUE9MQVIpID8gMCA6IDEpKTsNCj4gPiA+ ICsJCXNjYWxlX3V2ID4+PSBpOw0KPiA+ID4gKw0KPiA+ID4gKwkJc3QtPnNjYWxlX2F2YWlsW2ld WzFdID0gZG9fZGl2KHNjYWxlX3V2LCAxMDAwMDAwMDApICogMTA7DQo+ID4gPiArCQlzdC0+c2Nh bGVfYXZhaWxbaV1bMF0gPSBzY2FsZV91djsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwly ZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHNzaXplX3QgYWQ3MTky X3Nob3dfYWNfZXhjaXRhdGlvbihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gPiArCQkJCQkgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gPiArCQkJCQkgY2hhciAqYnVmKQ0KPiA+ ID4gK3sNCj4gPiA+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGRldl90b19paW9fZGV2 KGRldik7DQo+ID4gPiArCXN0cnVjdCBhZDcxOTJfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9f ZGV2KTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsICEhKHN0 LT5tb2RlICYgQUQ3MTkyX01PREVfQUNYKSk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0 YXRpYyBzc2l6ZV90IGFkNzE5Ml9zaG93X2JyaWRnZV9zd2l0Y2goc3RydWN0IGRldmljZSAqZGV2 LA0KPiA+ID4gKwkJCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiA+ID4gKwkJ CQkJIGNoYXIgKmJ1ZikNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBpaW9fZGV2ICppbmRpb19k ZXYgPSBkZXZfdG9faWlvX2RldihkZXYpOw0KPiA+ID4gKwlzdHJ1Y3QgYWQ3MTkyX3N0YXRlICpz dCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCAhIShzdC0+Z3BvY29uICYgQUQ3MTkyX0dQT0NPTl9CUERTVykpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgc3NpemVfdCBhZDcxOTJfc2V0KHN0cnVjdCBk ZXZpY2UgKmRldiwNCj4gPiA+ICsJCQkgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0K PiA+ID4gKwkJCSAgY29uc3QgY2hhciAqYnVmLA0KPiA+ID4gKwkJCSAgc2l6ZV90IGxlbikNCj4g PiA+ICt7DQo+ID4gPiArCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBkZXZfdG9faWlvX2Rl dihkZXYpOw0KPiA+ID4gKwlzdHJ1Y3QgYWQ3MTkyX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlv X2Rldik7DQo+ID4gPiArCXN0cnVjdCBpaW9fZGV2X2F0dHIgKnRoaXNfYXR0ciA9IHRvX2lpb19k ZXZfYXR0cihhdHRyKTsNCj4gPiA+ICsJaW50IHJldDsNCj4gPiA+ICsJYm9vbCB2YWw7DQo+ID4g PiArDQo+ID4gPiArCXJldCA9IHN0cnRvYm9vbChidWYsICZ2YWwpOw0KPiA+ID4gKwlpZiAocmV0 IDwgMCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IGlpb19k ZXZpY2VfY2xhaW1fZGlyZWN0X21vZGUoaW5kaW9fZGV2KTsNCj4gPiA+ICsJaWYgKHJldCkNCj4g PiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXN3aXRjaCAoKHUzMil0aGlzX2F0 dHItPmFkZHJlc3MpIHsNCj4gPiA+ICsJY2FzZSBBRDcxOTJfUkVHX0dQT0NPTjoNCj4gPiA+ICsJ CWlmICh2YWwpDQo+ID4gPiArCQkJc3QtPmdwb2NvbiB8PSBBRDcxOTJfR1BPQ09OX0JQRFNXOw0K PiA+ID4gKwkJZWxzZQ0KPiA+ID4gKwkJCXN0LT5ncG9jb24gJj0gfkFENzE5Ml9HUE9DT05fQlBE U1c7DQo+ID4gPiArDQo+ID4gPiArCQlhZF9zZF93cml0ZV9yZWcoJnN0LT5zZCwgQUQ3MTkyX1JF R19HUE9DT04sIDEsIHN0LT5ncG9jb24pOw0KPiA+ID4gKwkJYnJlYWs7DQo+ID4gPiArCWNhc2Ug QUQ3MTkyX1JFR19NT0RFOg0KPiA+ID4gKwkJaWYgKHZhbCkNCj4gPiA+ICsJCQlzdC0+bW9kZSB8 PSBBRDcxOTJfTU9ERV9BQ1g7DQo+ID4gPiArCQllbHNlDQo+ID4gPiArCQkJc3QtPm1vZGUgJj0g fkFENzE5Ml9NT0RFX0FDWDsNCj4gPiA+ICsNCj4gPiA+ICsJCWFkX3NkX3dyaXRlX3JlZygmc3Qt PnNkLCBBRDcxOTJfUkVHX01PREUsIDMsIHN0LT5tb2RlKTsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ ID4gKwlkZWZhdWx0Og0KPiA+ID4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gPiA+ICsJfQ0KPiA+ID4g Kw0KPiA+ID4gKwlpaW9fZGV2aWNlX3JlbGVhc2VfZGlyZWN0X21vZGUoaW5kaW9fZGV2KTsNCj4g PiA+ICsNCj4gPiA+ICsJcmV0dXJuIHJldCA/IHJldCA6IGxlbjsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArc3RhdGljIHZvaWQgYWQ3MTkyX2dldF9hdmFpbGFibGVfZmlsdGVyX2ZyZXEoc3Ry dWN0IGFkNzE5Ml9zdGF0ZSAqc3QsDQo+ID4gPiArCQkJCQkJICAgIGludCAqZnJlcSkNCj4gPiA+ ICt7DQo+ID4gPiArCXVuc2lnbmVkIGludCBmYWRjOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBGb3Jt dWxhcyBmb3IgZmlsdGVyIGF0IHBhZ2UgMjUgb2YgdGhlIGRhdGFzaGVldCAqLw0KPiA+ID4gKwlm YWRjID0gRElWX1JPVU5EX0NMT1NFU1Qoc3QtPmZjbGssDQo+ID4gPiArCQkJCSBBRDcxOTJfU1lO QzRfRklMVEVSICogQUQ3MTkyX01PREVfUkFURShzdC0NCj4gPiA+ID5tb2RlKSk7DQo+ID4gPiAr CWZyZXFbMF0gPSBESVZfUk9VTkRfQ0xPU0VTVChmYWRjICogMjQwLCAxMDI0KTsNCj4gPiA+ICsN Cj4gPiA+ICsJZmFkYyA9IERJVl9ST1VORF9DTE9TRVNUKHN0LT5mY2xrLA0KPiA+ID4gKwkJCQkg QUQ3MTkyX1NZTkMzX0ZJTFRFUiAqIEFENzE5Ml9NT0RFX1JBVEUoc3QtDQo+ID4gPiA+bW9kZSkp Ow0KPiA+ID4gKwlmcmVxWzFdID0gRElWX1JPVU5EX0NMT1NFU1QoZmFkYyAqIDI0MCwgMTAyNCk7 DQo+ID4gPiArDQo+ID4gPiArCWZhZGMgPSBESVZfUk9VTkRfQ0xPU0VTVChzdC0+ZmNsaywgQUQ3 MTkyX01PREVfUkFURShzdC0+bW9kZSkpOw0KPiA+ID4gKwlmcmVxWzJdID0gRElWX1JPVU5EX0NM T1NFU1QoZmFkYyAqIDIzMCwgMTAyNCk7DQo+ID4gPiArCWZyZXFbM10gPSBESVZfUk9VTkRfQ0xP U0VTVChmYWRjICogMjcyLCAxMDI0KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGlj IHNzaXplX3QgYWQ3MTkyX3Nob3dfZmlsdGVyX2F2YWlsKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4g PiA+ICsJCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiA+ID4gKwkJCQkJY2hh ciAqYnVmKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGRl dl90b19paW9fZGV2KGRldik7DQo+ID4gPiArCXN0cnVjdCBhZDcxOTJfc3RhdGUgKnN0ID0gaWlv X3ByaXYoaW5kaW9fZGV2KTsNCj4gPiA+ICsJdW5zaWduZWQgaW50IGZyZXFfYXZhaWxbNF0sIGk7 DQo+ID4gPiArCXNpemVfdCBsZW4gPSAwOw0KPiA+ID4gKw0KPiA+ID4gKwlhZDcxOTJfZ2V0X2F2 YWlsYWJsZV9maWx0ZXJfZnJlcShzdCwgZnJlcV9hdmFpbCk7DQo+ID4gPiArDQo+ID4gPiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZyZXFfYXZhaWwpOyBpKyspDQo+ID4gPiArCQlsZW4g Kz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFIC0gbGVuLA0KPiA+ID4gKwkJCQkgIiVk LiVkICIsIGZyZXFfYXZhaWxbaV0gLyAxMDAwLA0KPiA+ID4gKwkJCQkgZnJlcV9hdmFpbFtpXSAl IDEwMDApOw0KPiA+ID4gKw0KPiA+ID4gKwlidWZbbGVuIC0gMV0gPSAnXG4nOw0KPiA+ID4gKw0K PiA+ID4gKwlyZXR1cm4gbGVuOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgSUlP X0RFVklDRV9BVFRSKGZpbHRlcl9sb3dfcGFzc18zZGJfZnJlcXVlbmN5X2F2YWlsYWJsZSwNCj4g PiA+ICsJCSAgICAgICAwNDQ0LCBhZDcxOTJfc2hvd19maWx0ZXJfYXZhaWwsIE5VTEwsIDApOw0K PiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBJSU9fREVWSUNFX0FUVFIoYnJpZGdlX3N3aXRjaF9lbiwg MDY0NCwNCj4gPiA+ICsJCSAgICAgICBhZDcxOTJfc2hvd19icmlkZ2Vfc3dpdGNoLCBhZDcxOTJf c2V0LA0KPiA+ID4gKwkJICAgICAgIEFENzE5Ml9SRUdfR1BPQ09OKTsNCj4gPiA+ICsNCj4gPiA+ ICtzdGF0aWMgSUlPX0RFVklDRV9BVFRSKGFjX2V4Y2l0YXRpb25fZW4sIDA2NDQsDQo+ID4gPiAr CQkgICAgICAgYWQ3MTkyX3Nob3dfYWNfZXhjaXRhdGlvbiwgYWQ3MTkyX3NldCwNCj4gPiA+ICsJ CSAgICAgICBBRDcxOTJfUkVHX01PREUpOw0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICphZDcxOTJfYXR0cmlidXRlc1tdID0gew0KPiA+ID4gKwkmaWlvX2Rldl9hdHRy X2ZpbHRlcl9sb3dfcGFzc18zZGJfZnJlcXVlbmN5X2F2YWlsYWJsZS5kZXZfYXR0ci5hdHRyLA0K PiA+ID4gKwkmaWlvX2Rldl9hdHRyX2JyaWRnZV9zd2l0Y2hfZW4uZGV2X2F0dHIuYXR0ciwNCj4g PiA+ICsJJmlpb19kZXZfYXR0cl9hY19leGNpdGF0aW9uX2VuLmRldl9hdHRyLmF0dHIsDQo+ID4g PiArCU5VTEwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGFkNzE5Ml9hdHRyaWJ1dGVfZ3JvdXAgPSB7DQo+ID4gPiArCS5hdHRy cyA9IGFkNzE5Ml9hdHRyaWJ1dGVzLA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGUgKmFkNzE5NV9hdHRyaWJ1dGVzW10gPSB7DQo+ID4gPiArCSZpaW9f ZGV2X2F0dHJfZmlsdGVyX2xvd19wYXNzXzNkYl9mcmVxdWVuY3lfYXZhaWxhYmxlLmRldl9hdHRy LmF0dHIsDQo+ID4gPiArCSZpaW9fZGV2X2F0dHJfYnJpZGdlX3N3aXRjaF9lbi5kZXZfYXR0ci5h dHRyLA0KPiA+ID4gKwlOVUxMDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBhZDcxOTVfYXR0cmlidXRlX2dyb3VwID0gew0KPiA+ ID4gKwkuYXR0cnMgPSBhZDcxOTVfYXR0cmlidXRlcywNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgYWQ3MTkyX2dldF90ZW1wX3NjYWxlKGJvb2wgdW5pcG9s YXIpDQo+ID4gPiArew0KPiA+ID4gKwlyZXR1cm4gdW5pcG9sYXIgPyAyODE1ICogMiA6IDI4MTU7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3MTkyX3NldF8zZGJfZmls dGVyX2ZyZXEoc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QsDQo+ID4gPiArCQkJCSAgICAgIGludCB2 YWwsIGludCB2YWwyKQ0KPiA+ID4gK3sNCj4gPiA+ICsJaW50IGZyZXFfYXZhaWxbNF0sIGksIHJl dCwgZnJlcTsNCj4gPiA+ICsJdW5zaWduZWQgaW50IGRpZmZfbmV3LCBkaWZmX29sZDsNCj4gPiA+ ICsJaW50IGlkeCA9IDA7DQo+ID4gPiArDQo+ID4gPiArCWRpZmZfb2xkID0gVTMyX01BWDsNCj4g PiA+ICsJZnJlcSA9IHZhbCAqIDEwMDAgKyB2YWwyOw0KPiA+ID4gKw0KPiA+ID4gKwlhZDcxOTJf Z2V0X2F2YWlsYWJsZV9maWx0ZXJfZnJlcShzdCwgZnJlcV9hdmFpbCk7DQo+ID4gPiArDQo+ID4g PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZyZXFfYXZhaWwpOyBpKyspIHsNCj4gPiA+ ICsJCWRpZmZfbmV3ID0gYWJzKGZyZXEgLSBmcmVxX2F2YWlsW2ldKTsNCj4gPiA+ICsJCWlmIChk aWZmX25ldyA8IGRpZmZfb2xkKSB7DQo+ID4gPiArCQkJZGlmZl9vbGQgPSBkaWZmX25ldzsNCj4g PiA+ICsJCQlpZHggPSBpOw0KPiA+ID4gKwkJfQ0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiAr CXN3aXRjaCAoaWR4KSB7DQo+ID4gPiArCWNhc2UgMDoNCj4gPiA+ICsJCXN0LT5mX29yZGVyID0g QUQ3MTkyX1NZTkM0X0ZJTFRFUjsNCj4gPiA+ICsJCXN0LT5tb2RlICY9IH5BRDcxOTJfTU9ERV9T SU5DMzsNCj4gPiA+ICsNCj4gPiA+ICsJCXN0LT5jb25mIHw9IEFENzE5Ml9DT05GX0NIT1A7DQo+ ID4gPiArCQlicmVhazsNCj4gPiA+ICsJY2FzZSAxOg0KPiA+ID4gKwkJc3QtPmZfb3JkZXIgPSBB RDcxOTJfU1lOQzNfRklMVEVSOw0KPiA+ID4gKwkJc3QtPm1vZGUgfD0gQUQ3MTkyX01PREVfU0lO QzM7DQo+ID4gPiArDQo+ID4gPiArCQlzdC0+Y29uZiB8PSBBRDcxOTJfQ09ORl9DSE9QOw0KPiA+ ID4gKwkJYnJlYWs7DQo+ID4gPiArCWNhc2UgMjoNCj4gPiA+ICsJCXN0LT5mX29yZGVyID0gQUQ3 MTkyX05PX1NZTkNfRklMVEVSOw0KPiA+ID4gKwkJc3QtPm1vZGUgJj0gfkFENzE5Ml9NT0RFX1NJ TkMzOw0KPiA+ID4gKw0KPiA+ID4gKwkJc3QtPmNvbmYgJj0gfkFENzE5Ml9DT05GX0NIT1A7DQo+ ID4gPiArCQlicmVhazsNCj4gPiA+ICsJY2FzZSAzOg0KPiA+ID4gKwkJc3QtPmZfb3JkZXIgPSBB RDcxOTJfTk9fU1lOQ19GSUxURVI7DQo+ID4gPiArCQlzdC0+bW9kZSB8PSBBRDcxOTJfTU9ERV9T SU5DMzsNCj4gPiA+ICsNCj4gPiA+ICsJCXN0LT5jb25mICY9IH5BRDcxOTJfQ09ORl9DSE9QOw0K PiA+ID4gKwkJYnJlYWs7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gYWRfc2Rf d3JpdGVfcmVnKCZzdC0+c2QsIEFENzE5Ml9SRUdfTU9ERSwgMywgc3QtPm1vZGUpOw0KPiA+ID4g KwlpZiAocmV0IDwgMCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXJl dHVybiBhZF9zZF93cml0ZV9yZWcoJnN0LT5zZCwgQUQ3MTkyX1JFR19DT05GLCAzLCBzdC0+Y29u Zik7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3MTkyX2dldF8zZGJf ZmlsdGVyX2ZyZXEoc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QpDQo+ID4gPiArew0KPiA+ID4gKwl1 bnNpZ25lZCBpbnQgZmFkYzsNCj4gPiA+ICsNCj4gPiA+ICsJZmFkYyA9IERJVl9ST1VORF9DTE9T RVNUKHN0LT5mY2xrLA0KPiA+ID4gKwkJCQkgc3QtPmZfb3JkZXIgKiBBRDcxOTJfTU9ERV9SQVRF KHN0LT5tb2RlKSk7DQo+ID4gPiArDQo+ID4gPiArCWlmIChzdC0+Y29uZiAmIEFENzE5Ml9DT05G X0NIT1ApDQo+ID4gPiArCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZmFkYyAqIDI0MCwgMTAy NCk7DQo+ID4gPiArCWlmIChzdC0+bW9kZSAmIEFENzE5Ml9NT0RFX1NJTkMzKQ0KPiA+ID4gKwkJ cmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGZhZGMgKiAyNzIsIDEwMjQpOw0KPiA+ID4gKwllbHNl DQo+ID4gPiArCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZmFkYyAqIDIzMCwgMTAyNCk7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3MTkyX3JlYWRfcmF3KHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYsDQo+ID4gPiArCQkJICAgc3RydWN0IGlpb19jaGFuX3NwZWMg Y29uc3QgKmNoYW4sDQo+ID4gPiArCQkJICAgaW50ICp2YWwsDQo+ID4gPiArCQkJICAgaW50ICp2 YWwyLA0KPiA+ID4gKwkJCSAgIGxvbmcgbSkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBhZDcx OTJfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiA+ICsJYm9vbCB1bmlwb2xh ciA9ICEhKHN0LT5jb25mICYgQUQ3MTkyX0NPTkZfVU5JUE9MQVIpOw0KPiA+ID4gKw0KPiA+ID4g Kwlzd2l0Y2ggKG0pIHsNCj4gPiA+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX1JBVzoNCj4gPiA+ICsJ CXJldHVybiBhZF9zaWdtYV9kZWx0YV9zaW5nbGVfY29udmVyc2lvbihpbmRpb19kZXYsIGNoYW4s IHZhbCk7DQo+ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQ0FMRToNCj4gPiA+ICsJCXN3aXRj aCAoY2hhbi0+dHlwZSkgew0KPiA+ID4gKwkJY2FzZSBJSU9fVk9MVEFHRToNCj4gPiA+ICsJCQlt dXRleF9sb2NrKCZzdC0+bG9jayk7DQo+ID4gPiArCQkJKnZhbCA9IHN0LT5zY2FsZV9hdmFpbFtB RDcxOTJfQ09ORl9HQUlOKHN0LT5jb25mKV1bMF07DQo+ID4gPiArCQkJKnZhbDIgPSBzdC0+c2Nh bGVfYXZhaWxbQUQ3MTkyX0NPTkZfR0FJTihzdC0+Y29uZildWzFdOw0KPiA+ID4gKwkJCW11dGV4 X3VubG9jaygmc3QtPmxvY2spOw0KPiA+ID4gKwkJCXJldHVybiBJSU9fVkFMX0lOVF9QTFVTX05B Tk87DQo+ID4gPiArCQljYXNlIElJT19URU1QOg0KPiA+ID4gKwkJCSp2YWwgPSAwOw0KPiA+ID4g KwkJCSp2YWwyID0gMTAwMDAwMDAwMCAvIGFkNzE5Ml9nZXRfdGVtcF9zY2FsZSh1bmlwb2xhcik7 DQo+ID4gPiArCQkJcmV0dXJuIElJT19WQUxfSU5UX1BMVVNfTkFOTzsNCj4gPiA+ICsJCWRlZmF1 bHQ6DQo+ID4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiArCQl9DQo+ID4gPiArCWNhc2Ug SUlPX0NIQU5fSU5GT19PRkZTRVQ6DQo+ID4gPiArCQlpZiAoIXVuaXBvbGFyKQ0KPiA+ID4gKwkJ CSp2YWwgPSAtKDEgPDwgKGNoYW4tPnNjYW5fdHlwZS5yZWFsYml0cyAtIDEpKTsNCj4gPiA+ICsJ CWVsc2UNCj4gPiA+ICsJCQkqdmFsID0gMDsNCj4gPiA+ICsJCS8qIEtlbHZpbiB0byBDZWxzaXVz ICovDQo+ID4gPiArCQlpZiAoY2hhbi0+dHlwZSA9PSBJSU9fVEVNUCkNCj4gPiA+ICsJCQkqdmFs IC09IDI3MyAqIGFkNzE5Ml9nZXRfdGVtcF9zY2FsZSh1bmlwb2xhcik7DQo+ID4gPiArCQlyZXR1 cm4gSUlPX1ZBTF9JTlQ7DQo+ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVE6DQo+ ID4gPiArCQkqdmFsID0gc3QtPmZjbGsgLw0KPiA+ID4gKwkJCShzdC0+Zl9vcmRlciAqIDEwMjQg KiBBRDcxOTJfTU9ERV9SQVRFKHN0LT5tb2RlKSk7DQo+ID4gPiArCQlyZXR1cm4gSUlPX1ZBTF9J TlQ7DQo+ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19MT1dfUEFTU19GSUxURVJfM0RCX0ZSRVFV RU5DWToNCj4gPiA+ICsJCSp2YWwgPSBhZDcxOTJfZ2V0XzNkYl9maWx0ZXJfZnJlcShzdCk7DQo+ ID4gPiArCQkqdmFsMiA9IDEwMDA7DQo+ID4gPiArCQlyZXR1cm4gSUlPX1ZBTF9GUkFDVElPTkFM Ow0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gK30N Cj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50IGFkNzE5Ml93cml0ZV9yYXcoc3RydWN0IGlpb19k ZXYgKmluZGlvX2RldiwNCj4gPiA+ICsJCQkgICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3Qg KmNoYW4sDQo+ID4gPiArCQkJICAgIGludCB2YWwsDQo+ID4gPiArCQkJICAgIGludCB2YWwyLA0K PiA+ID4gKwkJCSAgICBsb25nIG1hc2spDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgYWQ3MTky X3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArCWludCByZXQsIGksIGRp djsNCj4gPiA+ICsJdW5zaWduZWQgaW50IHRtcDsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gaWlv X2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZShpbmRpb19kZXYpOw0KPiA+ID4gKwlpZiAocmV0KQ0K PiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJc3dpdGNoIChtYXNrKSB7DQo+ ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQ0FMRToNCj4gPiA+ICsJCXJldCA9IC1FSU5WQUw7 DQo+ID4gPiArCQltdXRleF9sb2NrKCZzdC0+bG9jayk7DQo+ID4gPiArCQlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShzdC0+c2NhbGVfYXZhaWwpOyBpKyspDQo+ID4gPiArCQkJaWYgKHZhbDIg PT0gc3QtPnNjYWxlX2F2YWlsW2ldWzFdKSB7DQo+ID4gPiArCQkJCXJldCA9IDA7DQo+ID4gPiAr CQkJCXRtcCA9IHN0LT5jb25mOw0KPiA+ID4gKwkJCQlzdC0+Y29uZiAmPSB+QUQ3MTkyX0NPTkZf R0FJTigtMSk7DQo+ID4gPiArCQkJCXN0LT5jb25mIHw9IEFENzE5Ml9DT05GX0dBSU4oaSk7DQo+ ID4gPiArCQkJCWlmICh0bXAgPT0gc3QtPmNvbmYpDQo+ID4gPiArCQkJCQlicmVhazsNCj4gPiA+ ICsJCQkJYWRfc2Rfd3JpdGVfcmVnKCZzdC0+c2QsIEFENzE5Ml9SRUdfQ09ORiwNCj4gPiA+ICsJ CQkJCQkzLCBzdC0+Y29uZik7DQo+ID4gPiArCQkJCWFkNzE5Ml9jYWxpYnJhdGVfYWxsKHN0KTsN Cj4gPiA+ICsJCQkJYnJlYWs7DQo+ID4gPiArCQkJfQ0KPiA+ID4gKwkJbXV0ZXhfdW5sb2NrKCZz dC0+bG9jayk7DQo+ID4gPiArCQlicmVhazsNCj4gPiA+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX1NB TVBfRlJFUToNCj4gPiA+ICsJCWlmICghdmFsKSB7DQo+ID4gPiArCQkJcmV0ID0gLUVJTlZBTDsN Cj4gPiA+ICsJCQlicmVhazsNCj4gPiA+ICsJCX0NCj4gPiA+ICsNCj4gPiA+ICsJCWRpdiA9IHN0 LT5mY2xrIC8gKHZhbCAqIHN0LT5mX29yZGVyICogMTAyNCk7DQo+ID4gPiArCQlpZiAoZGl2IDwg MSB8fCBkaXYgPiAxMDIzKSB7DQo+ID4gPiArCQkJcmV0ID0gLUVJTlZBTDsNCj4gPiA+ICsJCQli cmVhazsNCj4gPiA+ICsJCX0NCj4gPiA+ICsNCj4gPiA+ICsJCXN0LT5tb2RlICY9IH5BRDcxOTJf TU9ERV9SQVRFKC0xKTsNCj4gPiA+ICsJCXN0LT5tb2RlIHw9IEFENzE5Ml9NT0RFX1JBVEUoZGl2 KTsNCj4gPiA+ICsJCWFkX3NkX3dyaXRlX3JlZygmc3QtPnNkLCBBRDcxOTJfUkVHX01PREUsIDMs IHN0LT5tb2RlKTsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKwljYXNlIElJT19DSEFOX0lORk9f TE9XX1BBU1NfRklMVEVSXzNEQl9GUkVRVUVOQ1k6DQo+ID4gPiArCQlyZXQgPSBhZDcxOTJfc2V0 XzNkYl9maWx0ZXJfZnJlcShzdCwgdmFsLCB2YWwyIC8gMTAwMCk7DQo+ID4gPiArCQlicmVhazsN Cj4gPiA+ICsJZGVmYXVsdDoNCj4gPiA+ICsJCXJldCA9IC1FSU5WQUw7DQo+ID4gPiArCX0NCj4g PiA+ICsNCj4gPiA+ICsJaWlvX2RldmljZV9yZWxlYXNlX2RpcmVjdF9tb2RlKGluZGlvX2Rldik7 DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiByZXQ7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g K3N0YXRpYyBpbnQgYWQ3MTkyX3dyaXRlX3Jhd19nZXRfZm10KHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYsDQo+ID4gPiArCQkJCSAgICBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBjb25zdCAqY2hhbiwN Cj4gPiA+ICsJCQkJICAgIGxvbmcgbWFzaykNCj4gPiA+ICt7DQo+ID4gPiArCXN3aXRjaCAobWFz aykgew0KPiA+ID4gKwljYXNlIElJT19DSEFOX0lORk9fU0NBTEU6DQo+ID4gPiArCQlyZXR1cm4g SUlPX1ZBTF9JTlRfUExVU19OQU5POw0KPiA+ID4gKwljYXNlIElJT19DSEFOX0lORk9fU0FNUF9G UkVROg0KPiA+ID4gKwkJcmV0dXJuIElJT19WQUxfSU5UOw0KPiA+ID4gKwljYXNlIElJT19DSEFO X0lORk9fTE9XX1BBU1NfRklMVEVSXzNEQl9GUkVRVUVOQ1k6DQo+ID4gPiArCQlyZXR1cm4gSUlP X1ZBTF9JTlRfUExVU19NSUNSTzsNCj4gPiA+ICsJZGVmYXVsdDoNCj4gPiA+ICsJCXJldHVybiAt RUlOVkFMOw0KPiA+ID4gKwl9DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQg YWQ3MTkyX3JlYWRfYXZhaWwoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gPiA+ICsJCQkg ICAgIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLA0KPiA+ID4gKwkJCSAgICAgY29u c3QgaW50ICoqdmFscywgaW50ICp0eXBlLCBpbnQgKmxlbmd0aCwNCj4gPiA+ICsJCQkgICAgIGxv bmcgbWFzaykNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBhZDcxOTJfc3RhdGUgKnN0ID0gaWlv X3ByaXYoaW5kaW9fZGV2KTsNCj4gPiA+ICsNCj4gPiA+ICsJc3dpdGNoIChtYXNrKSB7DQo+ID4g PiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQ0FMRToNCj4gPiA+ICsJCSp2YWxzID0gKGludCAqKXN0 LT5zY2FsZV9hdmFpbDsNCj4gPiA+ICsJCSp0eXBlID0gSUlPX1ZBTF9JTlRfUExVU19OQU5POw0K PiA+ID4gKwkJLyogVmFsdWVzIGFyZSBzdG9yZWQgaW4gYSAyRCBtYXRyaXggICovDQo+ID4gPiAr CQkqbGVuZ3RoID0gQVJSQVlfU0laRShzdC0+c2NhbGVfYXZhaWwpICogMjsNCj4gPiA+ICsNCj4g PiA+ICsJCXJldHVybiBJSU9fQVZBSUxfTElTVDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4g KwlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBpaW9faW5mbyBhZDcxOTJfaW5mbyA9IHsNCj4gPiA+ICsJLnJlYWRfcmF3ID0gYWQ3 MTkyX3JlYWRfcmF3LA0KPiA+ID4gKwkud3JpdGVfcmF3ID0gYWQ3MTkyX3dyaXRlX3JhdywNCj4g PiA+ICsJLndyaXRlX3Jhd19nZXRfZm10ID0gYWQ3MTkyX3dyaXRlX3Jhd19nZXRfZm10LA0KPiA+ ID4gKwkucmVhZF9hdmFpbCA9IGFkNzE5Ml9yZWFkX2F2YWlsLA0KPiA+ID4gKwkuYXR0cnMgPSAm YWQ3MTkyX2F0dHJpYnV0ZV9ncm91cCwNCj4gPiA+ICsJLnZhbGlkYXRlX3RyaWdnZXIgPSBhZF9z ZF92YWxpZGF0ZV90cmlnZ2VyLA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpaW9faW5mbyBhZDcxOTVfaW5mbyA9IHsNCj4gPiA+ICsJLnJlYWRfcmF3ID0g YWQ3MTkyX3JlYWRfcmF3LA0KPiA+ID4gKwkud3JpdGVfcmF3ID0gYWQ3MTkyX3dyaXRlX3JhdywN Cj4gPiA+ICsJLndyaXRlX3Jhd19nZXRfZm10ID0gYWQ3MTkyX3dyaXRlX3Jhd19nZXRfZm10LA0K PiA+ID4gKwkucmVhZF9hdmFpbCA9IGFkNzE5Ml9yZWFkX2F2YWlsLA0KPiA+ID4gKwkuYXR0cnMg PSAmYWQ3MTk1X2F0dHJpYnV0ZV9ncm91cCwNCj4gPiA+ICsJLnZhbGlkYXRlX3RyaWdnZXIgPSBh ZF9zZF92YWxpZGF0ZV90cmlnZ2VyLA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArI2RlZmlu ZSBfX0FENzE5eF9DSEFOTkVMKF9zaSwgX2NoYW5uZWwxLCBfY2hhbm5lbDIsIF9hZGRyZXNzLA0K PiA+ID4gX2V4dGVuZF9uYW1lLCBcDQo+ID4gPiArCV90eXBlLCBfbWFza190eXBlX2F2LCBfZXh0 X2luZm8pIFwNCj4gPiA+ICsJeyBcDQo+ID4gPiArCQkudHlwZSA9IChfdHlwZSksIFwNCj4gPiA+ ICsJCS5kaWZmZXJlbnRpYWwgPSAoKF9jaGFubmVsMikgPT0gLTEgPyAwIDogMSksIFwNCj4gPiA+ ICsJCS5pbmRleGVkID0gMSwgXA0KPiA+ID4gKwkJLmNoYW5uZWwgPSAoX2NoYW5uZWwxKSwgXA0K PiA+ID4gKwkJLmNoYW5uZWwyID0gKF9jaGFubmVsMiksIFwNCj4gPiA+ICsJCS5hZGRyZXNzID0g KF9hZGRyZXNzKSwgXA0KPiA+ID4gKwkJLmV4dGVuZF9uYW1lID0gKF9leHRlbmRfbmFtZSksIFwN Cj4gPiA+ICsJCS5pbmZvX21hc2tfc2VwYXJhdGUgPSBCSVQoSUlPX0NIQU5fSU5GT19SQVcpIHwg XA0KPiA+ID4gKwkJCUJJVChJSU9fQ0hBTl9JTkZPX09GRlNFVCksIFwNCj4gPiA+ICsJCS5pbmZv X21hc2tfc2hhcmVkX2J5X3R5cGUgPSBCSVQoSUlPX0NIQU5fSU5GT19TQ0FMRSksIFwNCj4gPiA+ ICsJCS5pbmZvX21hc2tfc2hhcmVkX2J5X2FsbCA9IEJJVChJSU9fQ0hBTl9JTkZPX1NBTVBfRlJF USkgfCBcDQo+ID4gPiArCQkJQklUKElJT19DSEFOX0lORk9fTE9XX1BBU1NfRklMVEVSXzNEQl9G UkVRVUVOQ1kpLCBcDQo+ID4gPiArCQkuaW5mb19tYXNrX3NoYXJlZF9ieV90eXBlX2F2YWlsYWJs ZSA9IChfbWFza190eXBlX2F2KSwgXA0KPiA+ID4gKwkJLmV4dF9pbmZvID0gKF9leHRfaW5mbyks IFwNCj4gPiA+ICsJCS5zY2FuX2luZGV4ID0gKF9zaSksIFwNCj4gPiA+ICsJCS5zY2FuX3R5cGUg PSB7IFwNCj4gPiA+ICsJCQkuc2lnbiA9ICd1JywgXA0KPiA+ID4gKwkJCS5yZWFsYml0cyA9IDI0 LCBcDQo+ID4gPiArCQkJLnN0b3JhZ2ViaXRzID0gMzIsIFwNCj4gPiA+ICsJCQkuZW5kaWFubmVz cyA9IElJT19CRSwgXA0KPiA+ID4gKwkJfSwgXA0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiAr I2RlZmluZSBBRDcxOXhfRElGRl9DSEFOTkVMKF9zaSwgX2NoYW5uZWwxLCBfY2hhbm5lbDIsIF9h ZGRyZXNzKSBcDQo+ID4gPiArCV9fQUQ3MTl4X0NIQU5ORUwoX3NpLCBfY2hhbm5lbDEsIF9jaGFu bmVsMiwgX2FkZHJlc3MsIE5VTEwsIFwNCj4gPiA+ICsJCUlJT19WT0xUQUdFLCBCSVQoSUlPX0NI QU5fSU5GT19TQ0FMRSksIFwNCj4gPiA+ICsJCWFkNzE5Ml9jYWxpYnN5c19leHRfaW5mbykNCj4g PiA+ICsNCj4gPiA+ICsjZGVmaW5lIEFENzE5eF9DSEFOTkVMKF9zaSwgX2NoYW5uZWwxLCBfYWRk cmVzcykgXA0KPiA+ID4gKwlfX0FENzE5eF9DSEFOTkVMKF9zaSwgX2NoYW5uZWwxLCAtMSwgX2Fk ZHJlc3MsIE5VTEwsIElJT19WT0xUQUdFLCBcDQo+ID4gPiArCQlCSVQoSUlPX0NIQU5fSU5GT19T Q0FMRSksIGFkNzE5Ml9jYWxpYnN5c19leHRfaW5mbykNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5l IEFENzE5eF9TSE9SVEVEX0NIQU5ORUwoX3NpLCBfY2hhbm5lbDEsIF9hZGRyZXNzKSBcDQo+ID4g PiArCV9fQUQ3MTl4X0NIQU5ORUwoX3NpLCBfY2hhbm5lbDEsIC0xLCBfYWRkcmVzcywgInNob3J0 ZWQiLCBJSU9fVk9MVEFHRSwgXA0KPiA+ID4gKwkJQklUKElJT19DSEFOX0lORk9fU0NBTEUpLCBh ZDcxOTJfY2FsaWJzeXNfZXh0X2luZm8pDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBBRDcxOXhf VEVNUF9DSEFOTkVMKF9zaSwgX2FkZHJlc3MpIFwNCj4gPiA+ICsJX19BRDcxOXhfQ0hBTk5FTChf c2ksIDAsIC0xLCBfYWRkcmVzcywgTlVMTCwgSUlPX1RFTVAsIDAsIE5VTEwpDQo+ID4gPiArDQo+ ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGFkNzE5Ml9jaGFubmVsc1td ID0gew0KPiA+ID4gKwlBRDcxOXhfRElGRl9DSEFOTkVMKDAsIDEsIDIsIEFENzE5Ml9DSF9BSU4x UF9BSU4yTSksDQo+ID4gPiArCUFENzE5eF9ESUZGX0NIQU5ORUwoMSwgMywgNCwgQUQ3MTkyX0NI X0FJTjNQX0FJTjRNKSwNCj4gPiA+ICsJQUQ3MTl4X1RFTVBfQ0hBTk5FTCgyLCBBRDcxOTJfQ0hf VEVNUCksDQo+ID4gPiArCUFENzE5eF9TSE9SVEVEX0NIQU5ORUwoMywgMiwgQUQ3MTkyX0NIX0FJ TjJQX0FJTjJNKSwNCj4gPiA+ICsJQUQ3MTl4X0NIQU5ORUwoNCwgMSwgQUQ3MTkyX0NIX0FJTjEp LA0KPiA+ID4gKwlBRDcxOXhfQ0hBTk5FTCg1LCAyLCBBRDcxOTJfQ0hfQUlOMiksDQo+ID4gPiAr CUFENzE5eF9DSEFOTkVMKDYsIDMsIEFENzE5Ml9DSF9BSU4zKSwNCj4gPiA+ICsJQUQ3MTl4X0NI QU5ORUwoNywgNCwgQUQ3MTkyX0NIX0FJTjQpLA0KPiA+ID4gKwlJSU9fQ0hBTl9TT0ZUX1RJTUVT VEFNUCg4KSwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aWlvX2NoYW5fc3BlYyBhZDcxOTNfY2hhbm5lbHNbXSA9IHsNCj4gPiA+ICsJQUQ3MTl4X0RJRkZf Q0hBTk5FTCgwLCAxLCAyLCBBRDcxOTNfQ0hfQUlOMVBfQUlOMk0pLA0KPiA+ID4gKwlBRDcxOXhf RElGRl9DSEFOTkVMKDEsIDMsIDQsIEFENzE5M19DSF9BSU4zUF9BSU40TSksDQo+ID4gPiArCUFE NzE5eF9ESUZGX0NIQU5ORUwoMiwgNSwgNiwgQUQ3MTkzX0NIX0FJTjVQX0FJTjZNKSwNCj4gPiA+ ICsJQUQ3MTl4X0RJRkZfQ0hBTk5FTCgzLCA3LCA4LCBBRDcxOTNfQ0hfQUlON1BfQUlOOE0pLA0K PiA+ID4gKwlBRDcxOXhfVEVNUF9DSEFOTkVMKDQsIEFENzE5M19DSF9URU1QKSwNCj4gPiA+ICsJ QUQ3MTl4X1NIT1JURURfQ0hBTk5FTCg1LCAyLCBBRDcxOTNfQ0hfQUlOMlBfQUlOMk0pLA0KPiA+ ID4gKwlBRDcxOXhfQ0hBTk5FTCg2LCAxLCBBRDcxOTNfQ0hfQUlOMSksDQo+ID4gPiArCUFENzE5 eF9DSEFOTkVMKDcsIDIsIEFENzE5M19DSF9BSU4yKSwNCj4gPiA+ICsJQUQ3MTl4X0NIQU5ORUwo OCwgMywgQUQ3MTkzX0NIX0FJTjMpLA0KPiA+ID4gKwlBRDcxOXhfQ0hBTk5FTCg5LCA0LCBBRDcx OTNfQ0hfQUlONCksDQo+ID4gPiArCUFENzE5eF9DSEFOTkVMKDEwLCA1LCBBRDcxOTNfQ0hfQUlO NSksDQo+ID4gPiArCUFENzE5eF9DSEFOTkVMKDExLCA2LCBBRDcxOTNfQ0hfQUlONiksDQo+ID4g PiArCUFENzE5eF9DSEFOTkVMKDEyLCA3LCBBRDcxOTNfQ0hfQUlONyksDQo+ID4gPiArCUFENzE5 eF9DSEFOTkVMKDEzLCA4LCBBRDcxOTNfQ0hfQUlOOCksDQo+ID4gPiArCUlJT19DSEFOX1NPRlRf VElNRVNUQU1QKDE0KSwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3 MTkyX2NoYW5uZWxzX2NvbmZpZyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiA+ID4gK3sN Cj4gPiA+ICsJc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0K PiA+ID4gKw0KPiA+ID4gKwlzd2l0Y2ggKHN0LT5kZXZpZCkgew0KPiA+ID4gKwljYXNlIElEX0FE NzE5MzoNCj4gPiA+ICsJCWluZGlvX2Rldi0+Y2hhbm5lbHMgPSBhZDcxOTNfY2hhbm5lbHM7DQo+ ID4gPiArCQlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYWQ3MTkzX2NoYW5u ZWxzKTsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKwlkZWZhdWx0Og0KPiA+ID4gKwkJaW5kaW9f ZGV2LT5jaGFubmVscyA9IGFkNzE5Ml9jaGFubmVsczsNCj4gPiA+ICsJCWluZGlvX2Rldi0+bnVt X2NoYW5uZWxzID0gQVJSQVlfU0laRShhZDcxOTJfY2hhbm5lbHMpOw0KPiA+ID4gKwkJYnJlYWs7 DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFkNzE5Ml9vZl9tYXRj aFtdOw0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3MTkyX3Byb2JlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpDQo+ID4gPiArew0KPiA+ID4gKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk ICptYXRjaDsNCj4gPiA+ICsJc3RydWN0IGFkNzE5Ml9zdGF0ZSAqc3Q7DQo+ID4gPiArCXN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXY7DQo+ID4gPiArCWludCByZXQsIHZvbHRhZ2VfdXYgPSAwOw0K PiA+ID4gKw0KPiA+ID4gKwlpZiAoIXNwaS0+aXJxKSB7DQo+ID4gPiArCQlkZXZfZXJyKCZzcGkt PmRldiwgIm5vIElSUT9cbiIpOw0KPiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gPiArCX0N Cj4gPiA+ICsNCj4gPiA+ICsJaW5kaW9fZGV2ID0gZGV2bV9paW9fZGV2aWNlX2FsbG9jKCZzcGkt PmRldiwgc2l6ZW9mKCpzdCkpOw0KPiA+ID4gKwlpZiAoIWluZGlvX2RldikNCj4gPiA+ICsJCXJl dHVybiAtRU5PTUVNOw0KPiA+ID4gKw0KPiA+ID4gKwlzdCA9IGlpb19wcml2KGluZGlvX2Rldik7 DQo+ID4gPiArDQo+ID4gPiArCW11dGV4X2luaXQoJnN0LT5sb2NrKTsNCj4gPiA+ICsNCj4gPiA+ ICsJc3QtPmF2ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoJnNwaS0+ZGV2LCAiYXZkZCIpOw0KPiA+ ID4gKwlpZiAoSVNfRVJSKHN0LT5hdmRkKSkNCj4gPiA+ICsJCXJldHVybiBQVFJfRVJSKHN0LT5h dmRkKTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShzdC0+YXZkZCk7 DQo+ID4gPiArCWlmIChyZXQpIHsNCj4gPiA+ICsJCWRldl9lcnIoJnNwaS0+ZGV2LCAiRmFpbGVk IHRvIGVuYWJsZSBzcGVjaWZpZWQgQVZkZCBzdXBwbHlcbiIpOw0KPiA+ID4gKwkJcmV0dXJuIHJl dDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlzdC0+ZHZkZCA9IGRldm1fcmVndWxhdG9y X2dldCgmc3BpLT5kZXYsICJkdmRkIik7DQo+ID4gPiArCWlmIChJU19FUlIoc3QtPmR2ZGQpKSB7 DQo+ID4gPiArCQlyZXQgPSBQVFJfRVJSKHN0LT5kdmRkKTsNCj4gPiA+ICsJCWdvdG8gZXJyb3Jf ZGlzYWJsZV9hdmRkOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IHJlZ3VsYXRv cl9lbmFibGUoc3QtPmR2ZGQpOw0KPiA+ID4gKwlpZiAocmV0KSB7DQo+ID4gPiArCQlkZXZfZXJy KCZzcGktPmRldiwgIkZhaWxlZCB0byBlbmFibGUgc3BlY2lmaWVkIERWZGQgc3VwcGx5XG4iKTsN Cj4gPiA+ICsJCWdvdG8gZXJyb3JfZGlzYWJsZV9hdmRkOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ ID4gPiArCXZvbHRhZ2VfdXYgPSByZWd1bGF0b3JfZ2V0X3ZvbHRhZ2Uoc3QtPmF2ZGQpOw0KPiA+ ID4gKw0KPiA+ID4gKwlpZiAodm9sdGFnZV91dikgew0KPiA+ID4gKwkJc3QtPmludF92cmVmX212 ID0gdm9sdGFnZV91diAvIDEwMDA7DQo+ID4gPiArCX0gZWxzZSB7DQo+ID4gPiArCQlyZXQgPSB2 b2x0YWdlX3V2Ow0KPiA+ID4gKwkJZGV2X2Vycigmc3BpLT5kZXYsICJEZXZpY2UgdHJlZSBlcnJv ciwgcmVmZXJlbmNlIHZvbHRhZ2UNCj4gPiA+IHVuZGVmaW5lZFxuIik7DQo+ID4gPiArCQlnb3Rv IGVycm9yX2Rpc2FibGVfYXZkZDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwltYXRjaCA9 IG9mX21hdGNoX2RldmljZShhZDcxOTJfb2ZfbWF0Y2gsICZzcGktPmRldik7DQo+ID4gPiArCWlm ICghbWF0Y2gpDQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ICsNCj4gPiA+ICsJc3Bp X3NldF9kcnZkYXRhKHNwaSwgaW5kaW9fZGV2KTsNCj4gPiA+ICsJc3QtPmRldmlkID0gKHVuc2ln bmVkIGxvbmcpbWF0Y2gtPmRhdGE7DQo+ID4gPiArCWluZGlvX2Rldi0+ZGV2LnBhcmVudCA9ICZz cGktPmRldjsNCj4gPiA+ICsJaW5kaW9fZGV2LT5uYW1lID0gc3BpX2dldF9kZXZpY2VfaWQoc3Bp KS0+bmFtZTsNCj4gPiA+ICsJaW5kaW9fZGV2LT5tb2RlcyA9IElORElPX0RJUkVDVF9NT0RFOw0K PiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBhZDcxOTJfY2hhbm5lbHNfY29uZmlnKGluZGlvX2Rldik7 DQo+ID4gPiArCWlmIChyZXQgPCAwKQ0KPiA+ID4gKwkJZ290byBlcnJvcl9kaXNhYmxlX2R2ZGQ7 DQo+ID4gPiArDQo+ID4gPiArCWlmIChzdC0+ZGV2aWQgPT0gSURfQUQ3MTk1KQ0KPiA+ID4gKwkJ aW5kaW9fZGV2LT5pbmZvID0gJmFkNzE5NV9pbmZvOw0KPiA+ID4gKwllbHNlDQo+ID4gPiArCQlp bmRpb19kZXYtPmluZm8gPSAmYWQ3MTkyX2luZm87DQo+ID4gPiArDQo+ID4gPiArCWFkX3NkX2lu aXQoJnN0LT5zZCwgaW5kaW9fZGV2LCBzcGksICZhZDcxOTJfc2lnbWFfZGVsdGFfaW5mbyk7DQo+ ID4gPiArDQo+ID4gPiArCXJldCA9IGFkX3NkX3NldHVwX2J1ZmZlcl9hbmRfdHJpZ2dlcihpbmRp b19kZXYpOw0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJZ290byBlcnJvcl9kaXNhYmxlX2R2 ZGQ7DQo+ID4gPiArDQo+ID4gPiArCXN0LT5mY2xrID0gQUQ3MTkyX0lOVF9GUkVRX01IWjsNCj4g PiA+ICsNCj4gPiA+ICsJc3QtPm1jbGsgPSBkZXZtX2Nsa19nZXQoJnN0LT5zZC5zcGktPmRldiwg Im1jbGsiKTsNCj4gPiA+ICsJaWYgKElTX0VSUihzdC0+bWNsaykgJiYgUFRSX0VSUihzdC0+bWNs aykgIT0gLUVOT0VOVCkgew0KPiA+ID4gKwkJcmV0ID0gUFRSX0VSUihzdC0+bWNsayk7DQo+ID4g PiArCQlnb3RvIGVycm9yX3JlbW92ZV90cmlnZ2VyOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4g PiArCXN0LT5jbG9ja19zZWwgPSBhZDcxOTJfb2ZfY2xvY2tfc2VsZWN0KHN0KTsNCj4gPiA+ICsN Cj4gPiA+ICsJaWYgKHN0LT5jbG9ja19zZWwgPT0gQUQ3MTkyX0NMS19FWFRfTUNMSzFfMiB8fA0K PiA+ID4gKwkgICAgc3QtPmNsb2NrX3NlbCA9PSBBRDcxOTJfQ0xLX0VYVF9NQ0xLMikgew0KPiA+ ID4gKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHN0LT5tY2xrKTsNCj4gPiA+ICsJCWlmIChy ZXQgPCAwKQ0KPiA+ID4gKwkJCWdvdG8gZXJyb3JfcmVtb3ZlX3RyaWdnZXI7DQo+ID4gPiArDQo+ ID4gPiArCQlzdC0+ZmNsayA9IGNsa19nZXRfcmF0ZShzdC0+bWNsayk7DQo+ID4gPiArCQlpZiAo IWFkNzE5Ml92YWxpZF9leHRlcm5hbF9mcmVxdWVuY3koc3QtPmZjbGspKSB7DQo+ID4gPiArCQkJ cmV0ID0gLUVJTlZBTDsNCj4gPiA+ICsJCQlkZXZfZXJyKCZzcGktPmRldiwNCj4gPiA+ICsJCQkJ IkV4dGVybmFsIGNsb2NrIGZyZXF1ZW5jeSBvdXQgb2YgYm91bmRzXG4iKTsNCj4gPiA+ICsJCQln b3RvIGVycm9yX2Rpc2FibGVfY2xrOw0KPiA+ID4gKwkJfQ0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ ID4gPiArCXJldCA9IGFkNzE5Ml9zZXR1cChzdCwgc3BpLT5kZXYub2Zfbm9kZSk7DQo+ID4gPiAr CWlmIChyZXQpDQo+ID4gPiArCQlnb3RvIGVycm9yX2Rpc2FibGVfY2xrOw0KPiA+ID4gKw0KPiA+ ID4gKwlyZXQgPSBpaW9fZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7DQo+ID4gPiArCWlmIChy ZXQgPCAwKQ0KPiA+ID4gKwkJZ290byBlcnJvcl9kaXNhYmxlX2NsazsNCj4gPiA+ICsNCj4gPiA+ ICsJcmV0dXJuIDA7DQo+ID4gPiArDQo+ID4gPiArZXJyb3JfZGlzYWJsZV9jbGs6DQo+ID4gPiAr CWNsa19kaXNhYmxlX3VucHJlcGFyZShzdC0+bWNsayk7DQo+ID4gPiArZXJyb3JfcmVtb3ZlX3Ry aWdnZXI6DQo+ID4gPiArCWFkX3NkX2NsZWFudXBfYnVmZmVyX2FuZF90cmlnZ2VyKGluZGlvX2Rl dik7DQo+ID4gPiArZXJyb3JfZGlzYWJsZV9kdmRkOg0KPiA+ID4gKwlyZWd1bGF0b3JfZGlzYWJs ZShzdC0+ZHZkZCk7DQo+ID4gPiArZXJyb3JfZGlzYWJsZV9hdmRkOg0KPiA+ID4gKwlyZWd1bGF0 b3JfZGlzYWJsZShzdC0+YXZkZCk7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiByZXQ7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWQ3MTkyX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2Rl diA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOw0KPiA+ID4gKwlzdHJ1Y3QgYWQ3MTkyX3N0YXRlICpz dCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArDQo+ID4gPiArCWlpb19kZXZpY2VfdW5y ZWdpc3RlcihpbmRpb19kZXYpOw0KPiA+ID4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoc3QtPm1j bGspOw0KPiA+ID4gKwlhZF9zZF9jbGVhbnVwX2J1ZmZlcl9hbmRfdHJpZ2dlcihpbmRpb19kZXYp Ow0KPiA+ID4gKw0KPiA+ID4gKwlyZWd1bGF0b3JfZGlzYWJsZShzdC0+ZHZkZCk7DQo+ID4gPiAr CXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT5hdmRkKTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIDA7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIGFkNzE5Ml9vZl9tYXRjaFtdID0gew0KPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxh ZDcxOTAiLCAuZGF0YSA9ICh2b2lkICopSURfQUQ3MTkwfSwNCj4gPiA+ICsJeyAuY29tcGF0aWJs ZSA9ICJhZGksYWQ3MTkyIiwgLmRhdGEgPSAodm9pZCAqKUlEX0FENzE5MiB9LA0KPiA+ID4gKwl7 IC5jb21wYXRpYmxlID0gImFkaSxhZDcxOTMiLCAuZGF0YSA9ICh2b2lkICopSURfQUQ3MTkzIH0s DQo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkNzE5NSIsIC5kYXRhID0gKHZvaWQgKilJ RF9BRDcxOTUgfSwNCj4gPiA+ICsJe30NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK01PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIGFkNzE5Ml9vZl9tYXRjaCk7DQo+ID4gPiArDQo+ID4gPiArc3Rh dGljIHN0cnVjdCBzcGlfZHJpdmVyIGFkNzE5Ml9kcml2ZXIgPSB7DQo+ID4gPiArCS5kcml2ZXIg PSB7DQo+ID4gPiArCQkubmFtZQk9ICJhZDcxOTIiLA0KPiA+ID4gKwkJLm9mX21hdGNoX3RhYmxl ID0gYWQ3MTkyX29mX21hdGNoLA0KPiA+ID4gKwl9LA0KPiA+ID4gKwkucHJvYmUJCT0gYWQ3MTky X3Byb2JlLA0KPiA+ID4gKwkucmVtb3ZlCQk9IGFkNzE5Ml9yZW1vdmUsDQo+ID4gPiArfTsNCj4g PiA+ICttb2R1bGVfc3BpX2RyaXZlcihhZDcxOTJfZHJpdmVyKTsNCj4gPiA+ICsNCj4gPiA+ICtN T0RVTEVfQVVUSE9SKCJNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9n LmNvbT4iKTsNCj4gPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFuYWxvZyBEZXZpY2VzIEFENzE5 MCwgQUQ3MTkyLCBBRDcxOTMsIEFENzE5NSBBREMiKTsNCj4gPiA+ICtNT0RVTEVfTElDRU5TRSgi R1BMIHYyIik7ICANCg==