Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp478359pxa; Wed, 19 Aug 2020 06:50:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzM4T6poP7Lg3wTNk23+0zcYlZkKvW20wfmRaxWYlDyWKkgFUt/piqUPU3h13GU5Z/ecngK X-Received: by 2002:a05:6402:2042:: with SMTP id bc2mr24923692edb.109.1597845046023; Wed, 19 Aug 2020 06:50:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1597845046; cv=pass; d=google.com; s=arc-20160816; b=p/l9v3ajgs66KyBp3BjsKZx1jqt6jC2O+Rzy3/xgHPqTencaBQ8IE/Mv3n1oDIf6CR xmFffcr3An8CmnqOuxzMcgGIMtFk6s5DgPaUcslGa9sTRJ9JjOa0bQYpWOAVQUmeUiWz 8gDl/nRBXI8GPam46vLib0xdyQG4V6eKIDKIZNnmFraisVtdOqLhYWAmoUF3ZTsmkFsa O4rpfCFm++u6VkfNHMDF3NGoQeR6U6tWI+EWYhV8LSkmTJDbSOCKFUyaTMkE3Nr9ma7a KXPUoihcjS+z4jhv1UGrZLL97cAhi3lnEV3gRC0sUHL0CcK88lMCcmh71ttCVnlejizv DvRQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=EpTCfrQ+BFDu2JvFfWAevmThRrP4O8HV9V47W08EkOk=; b=UPkR8OofX5CpJcvX6JwEZGtswz62MKCidgQ+2N5AjHuH1esQIG/iH4WE2t5Jb59ROu JFZgWpsYTlxN5iLw0Uqv6sDbn8EMPb1JFPhC9gToHwnTb2mEPWIOogLmj1meEqYsW2iv OQJdm6w+H2w4Gni4hxAHHMkfUvWMpT+4f4mT/N3hlLAMBUugFolCMu8CqsRVtQ8M9atF ekHRX5eCyPwIo6HXBK8GXB1uEILY8yB+MaomMBbiydCibznfeYAYU+MVPhMD4MEi+5CG FpGMyaA7VDykd6wmeTe1pBxcWYO6+wAUTqOlhHueOm94+7GOne/kD6cHxub1jgpmrwKA HlSQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector2-xilinx-onmicrosoft-com header.b=lCVfyQ5C; arc=pass (i=1 spf=pass spfdomain=xilinx.com dkim=pass dkdomain=xilinx.com dmarc=pass fromdomain=xilinx.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w12si837641ejy.64.2020.08.19.06.50.20; Wed, 19 Aug 2020 06:50:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector2-xilinx-onmicrosoft-com header.b=lCVfyQ5C; arc=pass (i=1 spf=pass spfdomain=xilinx.com dkim=pass dkdomain=xilinx.com dmarc=pass fromdomain=xilinx.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728480AbgHSNtm (ORCPT + 99 others); Wed, 19 Aug 2020 09:49:42 -0400 Received: from mail-eopbgr750050.outbound.protection.outlook.com ([40.107.75.50]:19009 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728504AbgHSNtJ (ORCPT ); Wed, 19 Aug 2020 09:49:09 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bRUV7Xtc6+QDjyLnVXL2PbRJsFKkHj14z3I3rF8aIxOmQcEsT3QjeEgW+XT/uSIELmeq3Nf7gNHrEoHmgfknKKE7yc6j+lXrlV9PzMUdMan3zXcvwr30WnxxzipXezcr9e+zjTVHon+G3UCsI2J3wS7O/IXlqXnqvV43v5VEuzqer9WCkxZFW5QBWfqknOFqwAMMT2xXsdvpHKMHvzUyqje1mP0VbDSqwTiC7wthvoZjRuFhhCsPAdX3wTVLiP769CCZPtlW8FCsfFsqRbFn+iYDyjH0+76f+Gl0qIjSn/JoayUoNzTV+m0tuF04vclxrGaNwPbKpjJh/R05CvseAQ== 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=EpTCfrQ+BFDu2JvFfWAevmThRrP4O8HV9V47W08EkOk=; b=lWlCfluMsvDR6kfYANKS8nYkVl12p0tPoAqbNg27HLYGPPwDXdonsuoHdd5ZpqUlOJeVQcXVOfuIojRYuRmCxvb8if7rwpbsMFwSmcY99PSYlKHT7UdsN+u+D4fMroBM3I0HiY5LEOLOjp1zyr9DbNg+Lrgls9k+fmvvtICImxwskYcqfy8mXpuHyubyaR5HNpBeOd6OzSj0gT55Rxxv3Dm5D0hPyFBO0n35Ti60/ioOq9n89vwJcoNxWZ+/MWS4+cBCH1BYj87UN3+EhKWQjEfZCtKx7WkQv7sJceBxpIE9dtt4NWtPTseS16P00Dp/GcaHebD55bFE56di4MWWUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=xilinx.com; dmarc=pass action=none header.from=xilinx.com; dkim=pass header.d=xilinx.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EpTCfrQ+BFDu2JvFfWAevmThRrP4O8HV9V47W08EkOk=; b=lCVfyQ5CR3P08fzrkOJ4NVvy4prTYvAG5D0Ja6AnEjNidq4Up/E/8qVgMyD8q8f/yrAfUWgUI/SW5JRg0FlgYTwCIaWa4YttPpd5NVDXnvST/95o/4gnUtEAMbmOLeR5/E47/T85PaeTZDaDzubrTJIoa1fANY7g7+EM3UNOlxs= Received: from BY5PR02MB6867.namprd02.prod.outlook.com (2603:10b6:a03:21c::9) by BY5PR02MB6132.namprd02.prod.outlook.com (2603:10b6:a03:1fc::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3283.16; Wed, 19 Aug 2020 13:48:24 +0000 Received: from BY5PR02MB6867.namprd02.prod.outlook.com ([fe80::4d8f:74f9:c5e:af5a]) by BY5PR02MB6867.namprd02.prod.outlook.com ([fe80::4d8f:74f9:c5e:af5a%4]) with mapi id 15.20.3305.024; Wed, 19 Aug 2020 13:48:23 +0000 From: Vishal Sagar To: Hyun Kwon CC: "laurent.pinchart@ideasonboard.com" , "hverkuil@xs4all.nl" , "mchehab@kernel.org" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , Michal Simek , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "joe@perches.com" , Sandip Kothari , Dinesh Kumar Subject: RE: [PATCH v3 3/3] media: v4l: xilinx: Add Xilinx UHD-SDI Rx Subsystem driver Thread-Topic: [PATCH v3 3/3] media: v4l: xilinx: Add Xilinx UHD-SDI Rx Subsystem driver Thread-Index: AQHWRTIONtInjOSCdEu7G+eaSf+1LKkJaCSAgDZsIYA= Date: Wed, 19 Aug 2020 13:48:23 +0000 Message-ID: References: <20200618053304.14551-1-vishal.sagar@xilinx.com> <20200618053304.14551-4-vishal.sagar@xilinx.com> <20200715224248.GA3490@xilinx.com> In-Reply-To: <20200715224248.GA3490@xilinx.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: xilinx.com; dkim=none (message not signed) header.d=none;xilinx.com; dmarc=none action=none header.from=xilinx.com; x-originating-ip: [149.199.50.129] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6a0a416a-ff92-4345-6344-08d844468ac9 x-ms-traffictypediagnostic: BY5PR02MB6132: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:376; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2R2XZ/uyJWEp0RGSsSLGgSnqqLnkSNT87bM8wXH8DaDho6J3E4JDiFasFjX/+wIzxaWWhQbnczqRQ56QaSUKSUD0rqwGKWK/w9z8Eju/Enxl/1++0bDbnuIqqWdzTyjWKoT4EQFWCecWhTOT/5WJhQwRGlsBNwkioH8gKp3DkVcfoaTNU8GxxFc8ggcZiwmRd5sRKlN/2XKm7oqvbcFaTwvqOVAnVrSXZ8UTQ/Gfba54o8KQCEiw9MDjRy3vsYQokGDm42ajf+cIRrhBeu2Ubte9ayPRRVp8YXROTT3EDub0IwBg3TWWmA1Vz5CoMR2i8xPznB0tnZMiFa7QSHDnhkrJ/o9U+ok4a2jbwLKqgqp6qUGfYMjs0Id9x8JJVORn x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR02MB6867.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(39860400002)(366004)(136003)(396003)(346002)(376002)(66446008)(86362001)(83380400001)(66556008)(8936002)(5660300002)(64756008)(66946007)(66476007)(2906002)(8676002)(7416002)(33656002)(76116006)(6636002)(71200400001)(6506007)(4326008)(30864003)(26005)(316002)(7696005)(107886003)(6862004)(54906003)(53546011)(478600001)(9686003)(55016002)(52536014)(186003)(579004)(559001)(309714004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: x9aPnBNMDeTdpB8y6rCHCuKQCooN9SwT1eGh1ojKQic6yMl2A+D84Q8O2qbtfaI8RAbrdn+DkK0s9AvTaqYxV4A/6pq+nsUbH/nfY4c3EdfDi7KfH3flShI4ocsbWRVYBwvp5IknnxuVWB5RxHOkvpccyN9mOI3XNLwFuHPKWMi/sX16giOhIYfqN1yp05wRD1KyWX3YloD+xbKf85YRRTUw60tietoi2QYxWotzQV7JdVZSvojubbQcf4PR9adhdDaXUMlr+A8xls9tQH7YKUFH8mEkVkPBPYUWPD7DzaOWpwRroq7bHlM1JH37YcJ8pSSqQuWIoUKhtXN8KH/a15nzA4qsCHAbs9GDtjLssLcW6HPWtqwclPKDTFl3JuI9sK5R8YP/PpRaGcDNChFjdWAsps5PAQyBEl/NeKIDbLapUxB5uipV/k66hyrVyukuiZXw8gcF5arigWTKl+UUqiklt+ydQsb/7FNkAJicQPM+RebG0+Q+vJVcS0gIhgjMmv9sSkhyQRGWtuAX/rNMef3JbaY+1WiNfwqXH0cKHGj58gE2ME/FLXeu4sZjNeiz1O6qC/d3fbalxeLAFEJsE1Ns+JgfWPCw1c9CHX7goCuGSUDTIPG80wY2tCHbyMZSRRBBYTpbeHtSiLzINUQifw== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR02MB6867.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a0a416a-ff92-4345-6344-08d844468ac9 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Aug 2020 13:48:23.7239 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eo/i6k+DYObyb8VDoH0O1nqrWg8t7/S2TfGgRQwSCTTwJX0Jbl7DtvP7Pn5yzNtr0i3aWlLsFXY6TtCce7niNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR02MB6132 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgSHl1biwNCg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3Lg0KUGxlYXNlIHNlZSBteSBjb21tZW50 cy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIeXVuIEt3b24gPGh5 dW4ua3dvbkB4aWxpbnguY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVseSAxNiwgMjAyMCA0OjEz IEFNDQo+IFRvOiBWaXNoYWwgU2FnYXIgPHZzYWdhckB4aWxpbnguY29tPg0KPiBDYzogbGF1cmVu dC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tOyBodmVya3VpbEB4czRhbGwubmw7DQo+IG1jaGVo YWJAa2VybmVsLm9yZzsgcm9iaCtkdEBrZXJuZWwub3JnOyBtYXJrLnJ1dGxhbmRAYXJtLmNvbTsg TWljaGFsDQo+IFNpbWVrIDxtaWNoYWxzQHhpbGlueC5jb20+OyBsaW51eC1tZWRpYUB2Z2VyLmtl cm5lbC5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LQ0KPiBrZXJuZWxAdmdlci5rZXJuZWwub3JnOyBq b2VAcGVyY2hlcy5jb207IFNhbmRpcCBLb3RoYXJpDQo+IDxzYW5kaXBrQHhpbGlueC5jb20+OyBE aW5lc2ggS3VtYXIgPGRpbmVzaGtAeGlsaW54LmNvbT47IFZpc2hhbCBTYWdhcg0KPiA8dnNhZ2Fy QHhpbGlueC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMy8zXSBtZWRpYTogdjRsOiB4 aWxpbng6IEFkZCBYaWxpbnggVUhELVNESSBSeCBTdWJzeXN0ZW0NCj4gZHJpdmVyDQo+IA0KPiBI aSBWaXNoYWwsDQo+IA0KPiBUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4gU29ycnkgZm9yIGxhdGUg cmVzcG9uc2UuDQo+IA0KPiBPbiBXZWQsIEp1biAxNywgMjAyMCBhdCAxMDozMzowNFBNIC0wNzAw LCBWaXNoYWwgU2FnYXIgd3JvdGU6DQo+ID4gVGhlIFhpbGlueCBVSEQtU0RJIFJ4IHN1YnN5c3Rl bSBzb2Z0IElQIGlzIHVzZWQgdG8gY2FwdHVyZSBuYXRpdmUgU0RJDQo+ID4gc3RyZWFtcyBmcm9t IFNESSBzb3VyY2VzIGxpa2UgU0RJIGJyb2FkY2FzdCBlcXVpcG1lbnQgbGlrZSBjYW1lcmFzIGFu ZA0KPiA+IG1peGVycy4gVGhpcyBibG9jayBvdXRwdXRzIGVpdGhlciBuYXRpdmUgU0RJLCBuYXRp dmUgdmlkZW8gb3INCj4gPiBBWEk0LVN0cmVhbSBjb21wbGlhbnQgZGF0YSBzdHJlYW0gZm9yIGZ1 cnRoZXIgcHJvY2Vzc2luZy4gUGxlYXNlIHJlZmVyDQo+ID4gdG8gUEcyOTAgZm9yIGRldGFpbHMu DQo+ID4NCj4gPiBUaGUgZHJpdmVyIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBJUCB0byBhZGQg ZnJhbWVyLCBzZWFyY2ggZm9yDQo+ID4gc3BlY2lmaWMgbW9kZXMsIGdldCB0aGUgZGV0ZWN0ZWQg bW9kZSwgc3RyZWFtIHBhcmFtZXRlcnMsIGVycm9ycywgZXRjLg0KPiA+IEl0IGFsc28gZ2VuZXJh dGVzIGV2ZW50cyBmb3IgdmlkZW8gbG9jay91bmxvY2ssIGJyaWRnZSBvdmVyL3VuZGVyIGZsb3cu DQo+ID4NCj4gPiBUaGUgZHJpdmVyIHN1cHBvcnRzIDEwLzEyIGJwYyBZVVYgNDIyIG1lZGlhIGJ1 cyBmb3JtYXQgY3VycmVudGx5LiBJdA0KPiA+IGFsc28gZGVjb2RlcyB0aGUgc3RyZWFtIHBhcmFt ZXRlcnMgYmFzZWQgb24gdGhlIFNUMzUyIHBhY2tldCBlbWJlZGRlZCBpbg0KPiB0aGUNCj4gPiBz dHJlYW0uIEluIGNhc2UgdGhlIFNUMzUyIHBhY2tldCBpc24ndCBwcmVzZW50IGluIHRoZSBzdHJl YW0sIHRoZSBjb3JlJ3MNCj4gPiBkZXRlY3RlZCBwcm9wZXJ0aWVzIGFyZSB1c2VkIHRvIHNldCBz dHJlYW0gcHJvcGVydGllcy4NCj4gPg0KPiA+IFRoZSBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRz IG9ubHkgdGhlIEFYSTQtU3RyZWFtIElQIGNvbmZpZ3VyYXRpb24uDQo+ID4NCj4gPiBTaWduZWQt b2ZmLWJ5OiBWaXNoYWwgU2FnYXIgPHZpc2hhbC5zYWdhckB4aWxpbnguY29tPg0KPiA+IC0tLQ0K PiA+IHYzDQo+ID4gLSBmaXhlZCBLQ29uZmlnIHdpdGggYmV0dGVyIGRlc2NyaXB0aW9uDQo+ID4g LSByZW1vdmVkIHVubmVjZXNzYXJ5IGhlYWRlciBmaWxlcw0KPiA+IC0gY29udmVydGVkIHVwcGVy Y2FzZSB0byBsb3dlcmNhc2UgZm9yIGFsbCBoZXggdmFsdWVzDQo+ID4gLSBtZXJnZWQgY29yZSBz dHJ1Y3QgdG8gc3RhdGUgc3RydWN0DQo+ID4gLSByZW1vdmVkIG1vc3Qgb25lIGxpbmUgZnVuY3Rp b25zIGFuZCByZXBsYWNlZCB3aXRoIGRpcmVjdCByZWcNCj4gPiAgIHJlYWQvd3JpdGUgb3IgbWFj cm9zDQo+ID4gLSBkdCBwcm9wZXJ0eSBicHAgdG8gYnBjLiBkZWZhdWx0IDEwLiBub3QgbWFuZGF0 b3J5Lg0KPiA+IC0gZml4ZWQgc3Vic2NyaWJlIGV2ZW50cywgbG9nX3N0YXR1cywgc19zdHJlYW0N Cj4gPiAtIG1lcmdlZCBvdmVyZmxvdy91bmRlcmZsb3cgdG8gb25lIGV2ZW50DQo+ID4gLSBtb3Zl ZCBhbGwgY29udHJvbHMgdG8geGlsaW54LXNkaXJ4c3MuaA0KPiA+IC0gbWF4IGV2ZW50cyBmcm9t IDEyOCB0byA4DQo+ID4gLSB1c2VkIEZJRUxEX0dFVCgpIGluc3RlYWQgb2YgY3VzdG9tIG1hY3Jv DQo+ID4gLSB1cGRhdGVkIHRoZSBjb250cm9scyBkb2N1bWVudGF0aW9uDQo+ID4gLSBhZGRlZCBz cGlubG9jaw0KPiA+IC0gcmVtb3ZlZCAzR0IgY29udHJvbCBhbmQgYWRkZWQgbW9kZSB0byBkZXRl Y3QgYml0bWFzaw0KPiA+IC0gZml4ZWQgZm9ybWF0IGZvciAod2lkdGgsIGhlaWdodCwgY29sb3Jz cGFjZSwgeGZlciBmdW5jLCBldGMpDQo+ID4gLSBhZGRlZCBkdl90aW1pbmdzX2NhcCwgcy9nX2R2 X3RpbWluZ3MNCj4gPiAtIGZpeGVkIHNldC9nZXRfZm9ybWF0DQo+ID4gLSBmaXggdjRsIGNvbnRy b2wgcmVnaXN0cmF0aW9ucw0KPiA+IC0gZml4IG9yZGVyIG9mIHJlZ2lzdHJhdGlvbiAvIGRlcmVn aXN0cmF0aW9uIGluIHByb2JlKCkgcmVtb3ZlKCkNCj4gPiAtIGZpeGVkIG90aGVyIGNvbW1lbnRz IGZyb20gSHl1biwgTGF1cmVudCBhbmQgSGFucw0KPiA+IC0gdGhpbmdzIHlldCB0byBjbG9zZQ0K PiA+ICAgLSBhZGRpbmcgc291cmNlIHBvcnQgZm9yIGNvbm5lY3RvciAoTGF1cmVudCdzIHN1Z2dl c3Rpb24pDQo+ID4gICAtIGFkZGluZyBuZXcgRklFTEQgdHlwZSBmb3IgVHJhbnNwb3J0IFN0cmVh bQ0KPiBWNEwyX0ZJRUxEX0FMVEVSTkFURV9QUk9HIChIYW4ncyBzdWdnZXN0aW9uKQ0KPiA+ICAg LSBVcGRhdGUgLyByZW1vdmUgRURIIG9yIENSQyByZWxhdGVkIGNvbnRyb2xzDQo+ID4NCj4gPiB2 Mg0KPiA+IC0gQWRkZWQgRFYgdGltaW5nIHN1cHBvcnQgYmFzZWQgb24gSGFucyBWZXJrdWlsxZsg ZmVlZGJhY2sNCj4gPiAtIE1vcmUgZG9jdW1lbnRhdGlvbiB0byBjdXN0b20gdjRsIGNvbnRyb2xz IGFuZCBldmVudHMNCj4gPiAtIEZpeGVkIEh5dW7FmyBjb21tZW50cw0KPiA+IC0gQWRkZWQgbWFj cm8gZm9yIG1hc2tpbmcgYW5kIHNoaWZ0aW5nIGFzIHBlciBKb2UgUGVyY2hlcyBjb21tZW50cw0K PiA+IC0gVXBkYXRlZCB0byBsYXRlc3QgYXMgcGVyIFhpbGlueCBnaXRodWIgcmVwbyBkcml2ZXIg bGlrZQ0KPiA+ICAgYWRkaW5nIG5ldyBEViB0aW1pbmdzIG5vdCBpbiBtYWlubGluZSB5ZXQgdXB0 aWxsIDAzLzIxLzIwDQo+ID4NCj4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngvS2Nv bmZpZyAgICAgICAgIHwgICAxMSArDQo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGlsaW54 L01ha2VmaWxlICAgICAgICB8ICAgIDEgKw0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0veGlsaW54 L3hpbGlueC1zZGlyeHNzLmMgICAgfCAyMTIxICsrKysrKysrKysrKysrKysrDQo+ID4gIGluY2x1 ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xzLmggICAgICAgICAgICB8ICAgIDYgKw0KPiA+ICBp bmNsdWRlL3VhcGkvbGludXgveGlsaW54LXNkaXJ4c3MuaCAgICAgICAgICAgfCAgMjgzICsrKw0K PiA+ICA1IGZpbGVzIGNoYW5nZWQsIDI0MjIgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngveGlsaW54LXNkaXJ4c3MuYw0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L3hpbGlueC1zZGlyeHNz LmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3hpbGlueC9L Y29uZmlnDQo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngvS2NvbmZpZw0KPiA+IGlu ZGV4IDAxYzk2ZmI2NjQxNC4uNTc4Y2RjYzEwMzZlIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0veGlsaW54L0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3hpbGlueC9LY29uZmlnDQo+ID4gQEAgLTEyLDYgKzEyLDE3IEBAIGNvbmZpZyBWSURF T19YSUxJTlgNCj4gPg0KPiA+ICBpZiBWSURFT19YSUxJTlgNCj4gPg0KPiA+ICtjb25maWcgVklE RU9fWElMSU5YX1NESVJYU1MNCj4gPiArCXRyaXN0YXRlICJYaWxpbnggVUhEIFNESSBSeCBTdWJz eXN0ZW0iDQo+ID4gKwloZWxwDQo+ID4gKwkgIERyaXZlciBmb3IgWGlsaW54IFVIRC1TREkgUngg U3Vic3lzdGVtLiBUaGlzIGlzIGEgVjRMIHN1Yi1kZXZpY2UNCj4gPiArCSAgYmFzZWQgZHJpdmVy IHRoYXQgdGFrZXMgaW5wdXQgZnJvbSBhIFNESSBzb3VyY2UgbGlrZSBTREkgY2FtZXJhIGFuZA0K PiA+ICsJICBjb252ZXJ0cyBpdCBpbnRvIGFuIEFYSTQtU3RyZWFtLiBUaGUgc3Vic3lzdGVtIGNv bXByaXNlcyBhIFNNUFRFDQo+ID4gKwkgIFVIRC1TREkgUnggY29yZSwgYSBTREkgUnggdG8gTmF0 aXZlIFZpZGVvIGJyaWRnZSBhbmQgYSBWaWRlbyBJbiB0bw0KPiA+ICsJICBBWEk0LVN0cmVhbSBi cmlkZ2UuIFRoZSBkcml2ZXIgaXMgdXNlZCB0byBzZXQgZGlmZmVyZW50IHN0cmVhbQ0KPiA+ICsJ ICBkZXRlY3Rpb24gbW9kZXMgYW5kIGlkZW50aWZ5IHN0cmVhbSBwcm9wZXJ0aWVzIHRvIHByb3Bl cmx5IGNvbmZpZ3VyZQ0KPiA+ICsJICBkb3duc3RyZWFtLg0KPiA+ICsNCj4gPiAgY29uZmlnIFZJ REVPX1hJTElOWF9UUEcNCj4gPiAgCXRyaXN0YXRlICJYaWxpbnggVmlkZW8gVGVzdCBQYXR0ZXJu IEdlbmVyYXRvciINCj4gPiAgCWRlcGVuZHMgb24gVklERU9fWElMSU5YDQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGlsaW54L01ha2VmaWxlDQo+IGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS94aWxpbngvTWFrZWZpbGUNCj4gPiBpbmRleCA0Y2RjMGIxZWM3YTUuLjNi ZWFmMjRkODMyYyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3hpbGlu eC9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGlsaW54L01ha2Vm aWxlDQo+ID4gQEAgLTMsNSArMyw2IEBADQo+ID4gIHhpbGlueC12aWRlby1vYmpzICs9IHhpbGlu eC1kbWEubyB4aWxpbngtdmlwLm8geGlsaW54LXZpcHAubw0KPiA+DQo+ID4gIG9iai0kKENPTkZJ R19WSURFT19YSUxJTlgpICs9IHhpbGlueC12aWRlby5vDQo+ID4gK29iai0kKENPTkZJR19WSURF T19YSUxJTlhfU0RJUlhTUykgKz0geGlsaW54LXNkaXJ4c3Mubw0KPiA+ICBvYmotJChDT05GSUdf VklERU9fWElMSU5YX1RQRykgKz0geGlsaW54LXRwZy5vDQo+ID4gIG9iai0kKENPTkZJR19WSURF T19YSUxJTlhfVlRDKSArPSB4aWxpbngtdnRjLm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS94aWxpbngveGlsaW54LXNkaXJ4c3MuYw0KPiBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0veGlsaW54L3hpbGlueC1zZGlyeHNzLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTM5YWFiN2M2NTZhDQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGlsaW54L3hpbGlueC1zZGlyeHNz LmMNCj4gPiBAQCAtMCwwICsxLDIxMjEgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogRHJpdmVyIGZvciBYaWxpbnggU0RJIFJ4IFN1 YnN5c3RlbQ0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgLSAyMDIwIFhpbGlu eCwgSW5jLg0KPiA+ICsgKg0KPiA+ICsgKiBDb250YWN0czogVmlzaGFsIFNhZ2FyIDx2aXNoYWwu c2FnYXJAeGlsaW54LmNvbT4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8ZHQtYmlu ZGluZ3MvbWVkaWEveGlsaW54LXNkaS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvYml0cy5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3hpbGlueC1zZGlyeHNz Lmg+DQo+ID4gKyNpbmNsdWRlIDxtZWRpYS9tZWRpYS1lbnRpdHkuaD4NCj4gPiArI2luY2x1ZGUg PG1lZGlhL3Y0bDItY3RybHMuaD4NCj4gPiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItZHYtdGltaW5n cy5oPg0KPiA+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1ldmVudC5oPg0KPiA+ICsjaW5jbHVkZSA8 bWVkaWEvdjRsMi1zdWJkZXYuaD4NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFNESSBSeCByZWdp c3RlciBtYXAsIGJpdG1hc2sgYW5kIG9mZnNldHMNCj4gPiArICovDQo+ID4gKyNkZWZpbmUgWFNE SVJYX1JTVF9DVFJMX1JFRwkJMHgwMA0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9SRUcJ CTB4MDQNCj4gPiArI2RlZmluZSBYU0RJUlhfR0xCTF9JRVJfUkVHCQkweDBjDQo+ID4gKyNkZWZp bmUgWFNESVJYX0lTUl9SRUcJCQkweDEwDQo+ID4gKyNkZWZpbmUgWFNESVJYX0lFUl9SRUcJCQkw eDE0DQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX1ZBTElEX1JFRwkJMHgxOA0KPiA+ICsjZGVm aW5lIFhTRElSWF9TVDM1Ml9EUzFfUkVHCQkweDFjDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUy X0RTM19SRUcJCTB4MjANCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfRFM1X1JFRwkJMHgyNA0K PiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9EUzdfUkVHCQkweDI4DQo+ID4gKyNkZWZpbmUgWFNE SVJYX1NUMzUyX0RTOV9SRUcJCTB4MmMNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfRFMxMV9S RUcJCTB4MzANCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfRFMxM19SRUcJCTB4MzQNCj4gPiAr I2RlZmluZSBYU0RJUlhfU1QzNTJfRFMxNV9SRUcJCTB4MzgNCj4gPiArI2RlZmluZSBYU0RJUlhf VkVSU0lPTl9SRUcJCTB4M2MNCj4gPiArI2RlZmluZSBYU0RJUlhfU1NfQ09ORklHX1JFRwkJMHg0 MA0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFX0RFVF9TVEFUX1JFRwkweDQ0DQo+ID4gKyNkZWZp bmUgWFNESVJYX1RTX0RFVF9TVEFUX1JFRwkJMHg0OA0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhf U1RBVF9SRUcJCTB4NGMNCj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0VSUkNOVF9FTl9SRUcJMHg1 MA0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfRVJSQ05UX1JFRwkJMHg1NA0KPiA+ICsjZGVmaW5l IFhTRElSWF9DUkNfRVJSQ05UX1JFRwkJMHg1OA0KPiA+ICsjZGVmaW5lIFhTRElSWF9WSURfTE9D S19XSU5ET1dfUkVHCTB4NWMNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfRFMyX1JFRwkJMHg3 MA0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9EUzRfUkVHCQkweDc0DQo+ID4gKyNkZWZpbmUg WFNESVJYX1NUMzUyX0RTNl9SRUcJCTB4NzgNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfRFM4 X1JFRwkJMHg3Yw0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9EUzEwX1JFRwkJMHg4MA0KPiA+ ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9EUzEyX1JFRwkJMHg4NA0KPiA+ICsjZGVmaW5lIFhTRElS WF9TVDM1Ml9EUzE0X1JFRwkJMHg4OA0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9EUzE2X1JF RwkJMHg4Yw0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfUlNUX0NUUkxfU1NfRU5fTUFTSwkJ CUJJVCgwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9TUlNUX01BU0sJCQlCSVQoMSkN Cj4gPiArI2RlZmluZSBYU0RJUlhfUlNUX0NUUkxfUlNUX0NSQ19FUlJDTlRfTUFTSwkJQklUKDIp DQo+ID4gKyNkZWZpbmUgWFNESVJYX1JTVF9DVFJMX1JTVF9FREhfRVJSQ05UX01BU0sJCUJJVCgz KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9TRElSWF9CUklER0VfRU5CX01BU0sJCUJJ VCg4KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9WSURJTl9BWEk0U19NT0RfRU5CX01B U0sJQklUKDkpDQo+ID4gKyNkZWZpbmUgWFNESVJYX1JTVF9DVFJMX0JSSURHRV9DSF9GTVRfT0ZG U0VUCQkxMA0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9CUklER0VfQ0hfRk1UX01BU0sJ CUdFTk1BU0soMTIsDQo+IDEwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9CUklER0Vf Q0hfRk1UX1lVVjQ0NAkJMQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfTURMX0NUUkxfRlJN X0VOX01BU0sJCUJJVCg0KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9NT0RFX0RFVF9F Tl9NQVNLCUJJVCg1KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9NT0RFX0hEX0VOX01B U0sJCUJJVCg4KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9NT0RFX1NEX0VOX01BU0sJ CUJJVCg5KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9NT0RFXzNHX0VOX01BU0sJCUJJ VCgxMCkNCj4gPiArI2RlZmluZSBYU0RJUlhfTURMX0NUUkxfTU9ERV82R19FTl9NQVNLCQlCSVQo MTEpDQo+ID4gKyNkZWZpbmUgWFNESVJYX01ETF9DVFJMX01PREVfMTJHSV9FTl9NQVNLCUJJVCgx MikNCj4gPiArI2RlZmluZSBYU0RJUlhfTURMX0NUUkxfTU9ERV8xMkdGX0VOX01BU0sJQklUKDEz KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9NT0RFX0FVVE9fREVUX01BU0sJR0VOTUFT SygxMywNCj4gOCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX01ETF9DVFJMX0ZPUkNFRF9N T0RFX09GRlNFVAkxNg0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9GT1JDRURfTU9ERV9N QVNLCUdFTk1BU0soMTgsIDE2KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfR0xCTF9JTlRS X0VOX01BU0sJQklUKDApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWF9JTlRSX1ZJRExPQ0tf TUFTSwlCSVQoMCkNCj4gPiArI2RlZmluZSBYU0RJUlhfSU5UUl9WSURVTkxPQ0tfTUFTSwlCSVQo MSkNCj4gPiArI2RlZmluZSBYU0RJUlhfSU5UUl9PVkVSRkxPV19NQVNLCUJJVCg5KQ0KPiA+ICsj ZGVmaW5lIFhTRElSWF9JTlRSX1VOREVSRkxPV19NQVNLCUJJVCgxMCkNCj4gPiArDQo+ID4gKyNk ZWZpbmUgWFNESVJYX0lOVFJfQUxMX01BU0sJKFhTRElSWF9JTlRSX1ZJRExPQ0tfTUFTSyB8XA0K PiA+ICsJCQkJWFNESVJYX0lOVFJfVklEVU5MT0NLX01BU0sgfFwNCj4gPiArCQkJCVhTRElSWF9J TlRSX09WRVJGTE9XX01BU0sgfFwNCj4gPiArCQkJCVhTRElSWF9JTlRSX1VOREVSRkxPV19NQVNL KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfVkFMSURfRFMxX01BU0sJQklUKDAp DQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX1ZBTElEX0RTM19NQVNLCUJJVCgxKQ0KPiA+ICsj ZGVmaW5lIFhTRElSWF9TVDM1Ml9WQUxJRF9EUzVfTUFTSwlCSVQoMikNCj4gPiArI2RlZmluZSBY U0RJUlhfU1QzNTJfVkFMSURfRFM3X01BU0sJQklUKDMpDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NU MzUyX1ZBTElEX0RTOV9NQVNLCUJJVCg0KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9WQUxJ RF9EUzExX01BU0sJQklUKDUpDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX1ZBTElEX0RTMTNf TUFTSwlCSVQoNikNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfVkFMSURfRFMxNV9NQVNLCUJJ VCg3KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfTU9ERV9ERVRfU1RBVF9SWF9NT0RFX01B U0sJR0VOTUFTSygyLCAwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFX0RFVF9TVEFUX01PREVf TE9DS19NQVNLCUJJVCgzKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFX0RFVF9TVEFUX0FDVF9T VFJFQU1fTUFTSwlHRU5NQVNLKDYsDQo+IDQpDQo+ID4gKyNkZWZpbmUgWFNESVJYX01PREVfREVU X1NUQVRfQUNUX1NUUkVBTV9PRkZTRVQJNA0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFX0RFVF9T VEFUX0xWTEJfM0dfTUFTSwlCSVQoNykNCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX1RTX0RF VF9TVEFUX0xPQ0tFRF9NQVNLCQlCSVQoMCkNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NU QVRfU0NBTl9NQVNLCQlCSVQoMSkNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfRkFN SUxZX01BU0sJCUdFTk1BU0soNywNCj4gNCkNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NU QVRfUkFURV9NQVNLCQlHRU5NQVNLKDExLCA4KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhf VFNfREVUX1NUQVRfUkFURV9OT05FCQkweDANCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NU QVRfUkFURV8yM185OEhaCQkweDINCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFU RV8yNEhaCQkweDMNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV80N185NUha CQkweDQNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8yNUhaCQkweDUNCj4g PiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8yOV85N0haCQkweDYNCj4gPiArI2Rl ZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8zMEhaCQkweDcNCj4gPiArI2RlZmluZSBYU0RJ UlhfVFNfREVUX1NUQVRfUkFURV80OEhaCQkweDgNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVU X1NUQVRfUkFURV81MEhaCQkweDkNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFU RV81OV85NEhaCQkweGENCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV82MEha CQkweGINCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9TVEFUX0VESF9BUF9NQVNLCUJJ VCgwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfU1RBVF9FREhfRkZfTUFTSwlCSVQoMSkNCj4g PiArI2RlZmluZSBYU0RJUlhfRURIX1NUQVRfRURIX0FOQ19NQVNLCUJJVCgyKQ0KPiA+ICsjZGVm aW5lIFhTRElSWF9FREhfU1RBVF9BUF9GTEFHX01BU0sJR0VOTUFTSyg4LCA0KQ0KPiA+ICsjZGVm aW5lIFhTRElSWF9FREhfU1RBVF9GRl9GTEFHX01BU0sJR0VOTUFTSygxMywgOSkNCj4gPiArI2Rl ZmluZSBYU0RJUlhfRURIX1NUQVRfQU5DX0ZMQUdfTUFTSwlHRU5NQVNLKDE4LCAxNCkNCj4gPiAr I2RlZmluZSBYU0RJUlhfRURIX1NUQVRfUEtUX0ZMQUdfTUFTSwlHRU5NQVNLKDIyLCAxOSkNCj4g PiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQ09VTlRfTUFTSwlHRU5NQVNLKDE1 LCAwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfQ1JDX0VSUkNOVF9DT1VOVF9NQVNLCUdF Tk1BU0soMzEsIDE2KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9DUkNfRVJSQ05UX0RTX0NSQ19NQVNL CUdFTk1BU0soMTUsIDApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWF9WRVJTSU9OX1JFVl9N QVNLCQlHRU5NQVNLKDcsIDApDQo+ID4gKyNkZWZpbmUgWFNESVJYX1ZFUlNJT05fUEFUQ0hJRF9N QVNLCUdFTk1BU0soMTEsIDgpDQo+ID4gKyNkZWZpbmUgWFNESVJYX1ZFUlNJT05fVkVSX1JFVl9N QVNLCUdFTk1BU0soMTUsIDEyKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9WRVJTSU9OX1ZFUl9NSU5f TUFTSwlHRU5NQVNLKDIzLCAxNikNCj4gPiArI2RlZmluZSBYU0RJUlhfVkVSU0lPTl9WRVJfTUFK X01BU0sJR0VOTUFTSygzMSwgMjQpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWF9TU19DT05G SUdfRURIX0lOQ0xVREVEX01BU0sJCUJJVCgxKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhf U1RBVF9TQl9SWF9UREFUQV9DSEFOR0VfRE9ORV9NQVNLCUJJVCgwKQ0KPiA+ICsjZGVmaW5lIFhT RElSWF9TVEFUX1NCX1JYX1REQVRBX0NIQU5HRV9GQUlMX01BU0sJQklUKDEpDQo+ID4gKyNkZWZp bmUgWFNESVJYX1NUQVRfU0JfUlhfVERBVEFfR1RfUkVTRVRET05FX01BU0sJQklUKDIpDQo+ID4g KyNkZWZpbmUgWFNESVJYX1NUQVRfU0JfUlhfVERBVEFfR1RfQklUUkFURV9NQVNLCQlCSVQoMykN Cj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX0RFRkFVTFRfV0lEVEgJMTkyMA0KPiA+ICsjZGVm aW5lIFhTRElSWF9ERUZBVUxUX0hFSUdIVAkxMDgwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElS WF9NQVhfU1RSX0xFTkdUSAkxNg0KPiANCj4gVGhpcyBpcyBub3QgdXNlZC4gUGxlYXNlIHJlbW92 ZS4NCg0KT2sgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgdmVyc2lvbi4NCg0KPiANCj4gPiArDQo+ ID4gKyNkZWZpbmUgWFNESVJYX0RFRkFVTFRfVklERU9fTE9DS19XSU5ET1cJMHgzMDAwDQo+IA0K PiBOb3Qgc3VyZSBpZiB0aGlzIG1hY3JvIGlzIG5lZWRlZC4gVGhlIHZhbHVlIGNhbiBiZSB1c2Vk IGRpcmVjdGx5LiBTaW5nbGUNCj4gdXNlciBtYWNybyB3aXRob3V0IGFkZGl0aW9uYWwgZGVzY3Jp cHRpb24gbWF5IGJlIHJlbW92ZWQuIFBsZWFzZSBjaGVjay4NCj4gDQoNCk9rIEkgd2lsbCByZW1v dmUgdGhpcyBtYWNybyBhbmQgcmVwbGFjZSBpdCB3aXRoIDB4MzAwMCBpbiB0aGUgY29udHJvbC4N Cg0KDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFX0hEX01BU0sJMHgwDQo+ID4gKyNk ZWZpbmUgWFNESVJYX01PREVfU0RfTUFTSwkweDENCj4gPiArI2RlZmluZSBYU0RJUlhfTU9ERV8z R19NQVNLCTB4Mg0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFXzZHX01BU0sJMHg0DQo+ID4gKyNk ZWZpbmUgWFNESVJYX01PREVfMTJHSV9NQVNLCTB4NQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RF XzEyR0ZfTUFTSwkweDYNCj4gDQo+IFRoZXNlIGFyZSBub3QgbWFza3MsIHNvIF9NQVNLIGJldHRl ciBiZSByZW1vdmVkIGZyb20gbmFtZXMuDQo+IA0KDQpPayBJIHdpbGwgcmVtb3ZlIHRoZSBzdWZm aXggX01BU0sgaW4gbmV4dCB2ZXJzaW9uLg0KDQoNCj4gPiArDQo+ID4gKy8qIE1heGltdW0gbnVt YmVyIG9mIGV2ZW50cyBwZXIgZmlsZSBoYW5kbGUuICovDQo+ID4gKyNkZWZpbmUgWFNESVJYX01B WF9FVkVOVFMJOA0KPiA+ICsNCj4gPiArLyogU1QzNTIgcmVsYXRlZCBtYWNyb3MgKi8NCj4gPiAr I2RlZmluZSBYU1QzNTJfUEFZTE9BRF9CWVRFMV9NQVNLCUdFTk1BU0soNywgMCkNCj4gPiArI2Rl ZmluZSBYU1QzNTJfUEFZTE9BRF9CWVRFMl9PRkZTRVQJOA0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9Q QVlMT0FEX0JZVEUzX09GRlNFVAkxNg0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9QQVlMT0FEX0JZVEU0 X09GRlNFVAkyNA0KPiANCj4gTGFzdCAzIGFyZSBub3QgdXNlZC4gVGhvc2UgbWF5IGhhdmUgYmVj b21lIHVudXNlZCBmcm9tIHVzaW5nIEZJRUxEX0dFVCgpLg0KPiBQbGVhc2UgcmVtb3ZlLg0KPiAN Cg0KT2sgSSB3aWxsIHJlbW92ZSB0aGVzZSB1bnVzZWQgbWFjcm8uDQoNCg0KPiA+ICsNCj4gPiAr I2RlZmluZSBYU1QzNTJfQllURTFfU1QyOTJfMXg3MjBMXzFfNUcJCTB4ODQNCj4gPiArI2RlZmlu ZSBYU1QzNTJfQllURTFfU1QyOTJfMXgxMDgwTF8xXzVHCQkweDg1DQo+ID4gKyNkZWZpbmUgWFNU MzUyX0JZVEUxX1NUNDI1XzIwMDhfNzUwTF8zR0IJMHg4OA0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9C WVRFMV9TVDQyNV8yMDA4XzExMjVMXzNHQQkweDg5DQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUx X1NUMzcyX0RMXzNHQgkJMHg4YQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMV9TVDM3Ml8yeDcy MExfM0dCCQkweDhiDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUxX1NUMzcyXzJ4MTA4MExfM0dC CQkweDhjDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUxX1NUMjA4MV8xMF8yMTYwTF82RwkJMHhj MA0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMV9TVDIwODFfMTBfMl8xMDgwTF82RwkweGMxDQo+ ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUxX1NUMjA4MV8xMF9ETF8yMTYwTF82RwkweGMyDQo+ID4g KyNkZWZpbmUgWFNUMzUyX0JZVEUxX1NUMjA4Ml8xMF8yMTYwTF8xMkcJMHhjZQ0KPiA+ICsNCj4g PiArI2RlZmluZSBYU1QzNTJfQllURTJfVFNfVFlQRV9NQVNLCQlCSVQoMTUpDQo+ID4gKyNkZWZp bmUgWFNUMzUyX0JZVEUyX1BJQ19UWVBFX01BU0sJCUJJVCgxNCkNCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTJfVFNfUElDX1RZUEVfSU5URVJMQUNFRAkwDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZ VEUyX1RTX1BJQ19UWVBFX1BST0dSRVNTSVZFCTENCj4gDQo+IE5vdCB1c2VkLiA6KSBQbGVhc2Ug Y2hlY2sgYW5kIHJlbW92ZSB1bm5lZWRlZCBkZWZpbml0aW9ucy4NCj4gDQoNCg0KT2sgSSB3aWxs IHJlbW92ZSBidXQga2VlcCB0aGlzIGFzIGNvbW1lbnRzIGFzIHJlZmVyZW5jZS4NCg0KDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMl9GUFNfTUFTSwkJCUdFTk1BU0soMTEsIDgpDQo+ ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUyX0ZQU18yNEYJCQkweDINCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTJfRlBTXzI0CQkJMHgzDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUyX0ZQU180OEYJ CQkweDQNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTJfRlBTXzI1CQkJMHg1DQo+ID4gKyNkZWZp bmUgWFNUMzUyX0JZVEUyX0ZQU18zMEYJCQkweDYNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTJf RlBTXzMwCQkJMHg3DQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUyX0ZQU180OAkJCTB4OA0KPiA+ ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMl9GUFNfNTAJCQkweDkNCj4gPiArI2RlZmluZSBYU1QzNTJf QllURTJfRlBTXzYwRgkJCTB4YQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMl9GUFNfNjAJCQkw eGINCj4gPiArLyogVGFibGUgNCBTVCAyMDgxLTEwOjIwMTUgKi8NCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTJfRlBTXzk2CQkJMHhjDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUyX0ZQU18xMDAJ CQkweGQNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTJfRlBTXzEyMAkJCTB4ZQ0KPiA+ICsjZGVm aW5lIFhTVDM1Ml9CWVRFMl9GUFNfMTIwRgkJCTB4Zg0KPiA+ICsNCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTNfQUNUX0xVTUFfQ09VTlRfTUFTSwlCSVQoMjIpDQo+ID4gKw0KPiA+ICsjZGVmaW5l IFhTVDM1Ml9CWVRFM19DT0xPUl9GT1JNQVRfTUFTSwkJR0VOTUFTSygxOSwNCj4gMTYpDQo+ID4g KyNkZWZpbmUgWFNUMzUyX0JZVEUzX0NPTE9SX0ZPUk1BVF80MjIJCTB4MA0KPiA+ICsjZGVmaW5l IFhTVDM1Ml9CWVRFM19DT0xPUl9GT1JNQVRfWVVWNDQ0CTB4MQ0KPiA+ICsjZGVmaW5lIFhTVDM1 Ml9CWVRFM19DT0xPUl9GT1JNQVRfNDIwCQkweDMNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTNf Q09MT1JfRk9STUFUX0dCUgkJMHgyDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFM19D T0xPUklNRVRSWV9NQVNLCQlHRU5NQVNLKDIxLA0KPiAyMCkNCj4gPiArI2RlZmluZSBYU1QzNTJf QllURTNfQ09MT1JJTUVUUllfQlQ3MDkJCTANCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTNfQ09M T1JJTUVUUllfQ09MT1JfVkFOQwkxDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUzX0NPTE9SSU1F VFJZX1VIRFRWCQkyDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUzX0NPTE9SSU1FVFJZX1VOS05P V04JMw0KPiA+ICsNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTRfQklUX0RFUFRIX01BU0sJCUdF Tk1BU0soMjUsIDI0KQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFNF9CSVRfREVQVEhfMTAJCTB4 MQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFNF9CSVRfREVQVEhfMTIJCTB4Mg0KPiA+ICsNCj4g PiArLyogR1QgaW5wdXQgY2xvY2sgZm9yIHNkaV9yeF9jbGsgKi8NCj4gPiArI2RlZmluZSBDTEtf SU5UCQkxNDg1MDAwMDBVTA0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhTU19XSURUSF9NSU4g ICAgICAgICAgICAgICAgICAgIDcyMA0KPiA+ICsjZGVmaW5lIFhTRElSWFNTX1dJRFRIX01BWCAg ICAgICAgICAgICAgICAgICAgNDA5Ng0KPiA+ICsjZGVmaW5lIFhTRElSWFNTX0hFSUdIVF9NSU4g ICAgICAgICAgICAgICAgICAgMjQzDQo+ID4gKyNkZWZpbmUgWFNESVJYU1NfSEVJR0hUX01BWCAg ICAgICAgICAgICAgICAgICAyMTYwDQo+ID4gKyNkZWZpbmUgWFNESVJYU1NfUElYRUxDTE9DS19N SU4gICAgICAgICAgICAgICAxMzUwMDAwMA0KPiA+ICsjZGVmaW5lIFhTRElSWFNTX1BJWEVMQ0xP Q0tfTUFYICAgICAgICAgICAgICAgNTk0MDAwMDAwDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog ZW51bSBzZGlfZmFtaWx5X2VuYyAtIFNESSBUcmFuc3BvcnQgVmlkZW8gRm9ybWF0IERldGVjdGVk IHdpdGggQWN0aXZlDQo+IFBpeGVscw0KPiA+ICsgKiBAWFNESVJYX1NNUFRFX1NUXzI3NDogU01Q VEUgU1QgMjc0IGRldGVjdGVkIHdpdGggQVAgMTkyMHgxMDgwDQo+ID4gKyAqIEBYU0RJUlhfU01Q VEVfU1RfMjk2OiBTTVBURSBTVCAyOTYgZGV0ZWN0ZWQgd2l0aCBBUCAxMjgweDcyMA0KPiA+ICsg KiBAWFNESVJYX1NNUFRFX1NUXzIwNDhfMjogU01QVEUgU1QgMjA0OC0yIGRldGVjdGVkIHdpdGgg QVANCj4gMjA0OHgxMDgwDQo+ID4gKyAqIEBYU0RJUlhfU01QVEVfU1RfMjk1OiBTTVBURSBTVCAy OTUgZGV0ZWN0ZWQgd2l0aCBBUCAxOTIweDEwODANCj4gPiArICogQFhTRElSWF9OVFNDOiBOVFND IGVuY29kaW5nIGRldGVjdGVkIHdpdGggQVAgNzIweDQ4Ng0KPiA+ICsgKiBAWFNESVJYX1BBTDog UEFMIGVuY29kaW5nIGRldGVjdGVkIHdpdGggQVAgNzIweDU3Ng0KPiA+ICsgKiBAWFNESVJYX1RT X1VOS05PV046IFVua25vd24gU01QVEUgVHJhbnNwb3J0IGZhbWlseSB0eXBlDQo+ID4gKyAqLw0K PiA+ICtlbnVtIHNkaV9mYW1pbHlfZW5jIHsNCj4gPiArCVhTRElSWF9TTVBURV9TVF8yNzQJPSAw LA0KPiA+ICsJWFNESVJYX1NNUFRFX1NUXzI5Ngk9IDEsDQo+ID4gKwlYU0RJUlhfU01QVEVfU1Rf MjA0OF8yCT0gMiwNCj4gPiArCVhTRElSWF9TTVBURV9TVF8yOTUJPSAzLA0KPiA+ICsJWFNESVJY X05UU0MJCT0gOCwNCj4gPiArCVhTRElSWF9QQUwJCT0gOSwNCj4gPiArCVhTRElSWF9UU19VTktO T1dOCT0gMTUNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgeHNkaXJ4 c3Nfc3RhdGUgLSBTREkgUnggU3Vic3lzdGVtIGRldmljZSBzdHJ1Y3R1cmUNCj4gPiArICogQHN1 YmRldjogVGhlIHY0bDIgc3ViZGV2IHN0cnVjdHVyZQ0KPiA+ICsgKiBAY3RybF9oYW5kbGVyOiBj b250cm9sIGhhbmRsZXINCj4gPiArICogQGRlZmF1bHRfZm9ybWF0OiBkZWZhdWx0IFY0TDIgbWVk aWEgYnVzIGZvcm1hdA0KPiA+ICsgKiBAcGFkOiBzb3VyY2UgbWVkaWEgcGFkDQo+ID4gKyAqIEBk ZXY6IFBsYXRmb3JtIHN0cnVjdHVyZQ0KPiA+ICsgKiBAaW9tZW06IEJhc2UgYWRkcmVzcyBvZiBz dWJzeXN0ZW0NCj4gPiArICogQGNsa3M6IGFycmF5IG9mIGNsb2Nrcw0KPiA+ICsgKiBAcHJldl9p c19mcmFjOiBQcmV2aW91cyBjbG9jayBpcyBmcmFjdGlvbmFsIG9yIG5vdCBmbGFnDQo+ID4gKyAq IEBicGM6IEJpdHMgcGVyIGNvbXBvbmVudCwgY2FuIGJlIDEwIG9yIDEyDQo+ID4gKyAqIEBtb2Rl OiAzRy82Ry8xMkcgbW9kZQ0KPiA+ICsgKiBAbnVtX2Nsa3M6IG51bWJlciBvZiBjbG9ja3MNCj4g PiArICogQGluY2x1ZGVfZWRoOiBFREggcHJvY2Vzc29yIHByZXNlbmNlDQo+ID4gKyAqIEBzbG9j azogc3BpbmxvY2sgdG8gcHJvdGVjdCBiZWxvdyBtZW1iZXJzDQo+ID4gKyAqIEBmb3JtYXQ6IEFj dGl2ZSBWNEwyIGZvcm1hdCBkZXRlY3RlZA0KPiA+ICsgKiBAc3JjX2Zvcm1hdDogQWN0aXZlIFY0 TDIgZm9ybWF0IG9uIHNvdXJjZSBwYWQNCj4gPiArICogQGZyYW1lX2ludGVydmFsOiBDYXB0dXJl cyB0aGUgZnJhbWUgcmF0ZQ0KPiA+ICsgKiBAY3VycmVudF90aW1pbmdzOiBEViB0aW1pbmdzIGZy b20gYXBwbGljYXRpb24NCj4gPiArICogQGRldGVjdGVkX3RpbWluZ3NfaW5kZXg6IGluZGV4IG9m IERWIHRpbWluZ3MgZGV0ZWN0ZWQgb24gaW5jb21pbmcNCj4gc3RyZWFtDQo+ID4gKyAqIEB2aWRs b2Nrd2luOiBWaWRlbyBsb2NrIHdpbmRvdyB2YWx1ZSBzZXQgYnkgY29udHJvbA0KPiA+ICsgKiBA ZWRobWFzazogRURIIG1hc2sgc2V0IGJ5IGNvbnRyb2wNCj4gPiArICogQHNlYXJjaG1hc2s6IFNl YXJjaCBtYXNrIHNldCBieSBjb250cm9sDQo+ID4gKyAqIEBzdHJlYW1pbmc6IEZsYWcgZm9yIHN0 b3Jpbmcgc3RyZWFtaW5nIHN0YXRlDQo+ID4gKyAqIEB2aWRsb2NrZWQ6IEZsYWcgaW5kaWNhdGlu ZyBTREkgUnggaGFzIGxvY2tlZCBvbnRvIHZpZGVvIHN0cmVhbQ0KPiA+ICsgKiBAdHNfaXNfaW50 ZXJsYWNlZDogRmxhZyBpbmRpY2F0aW5nIFRyYW5zcG9ydCBTdHJlYW0gaXMgaW50ZXJsYWNlZC4N Cj4gPiArICogQGZyYW1lcl9lbmFibGU6IEZsYWcgZm9yIGZyYW1lciBlbmFibGVkIG9yIG5vdCBz ZXQgYnkgY29udHJvbA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0 aGUgZGV2aWNlIGRyaXZlciByZWxhdGVkIHBhcmFtZXRlcnMNCj4gPiArICovDQo+ID4gK3N0cnVj dCB4c2Rpcnhzc19zdGF0ZSB7DQo+ID4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgc3ViZGV2Ow0KPiA+ ICsJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGFuZGxlcjsNCj4gPiArCXN0cnVjdCB2 NGwyX21idXNfZnJhbWVmbXQgZGVmYXVsdF9mb3JtYXQ7DQo+ID4gKwlzdHJ1Y3QgbWVkaWFfcGFk IHBhZDsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gPiArCXZvaWQgX19pb21lbSAqaW9t ZW07DQo+ID4gKwlzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrczsNCj4gPiArCWludCBwcmV2X2lz X2ZyYWM7DQo+ID4gKwl1MzIgYnBjOw0KPiA+ICsJdTMyIG1vZGU7DQo+ID4gKwl1bnNpZ25lZCBp bnQgbnVtX2Nsa3M7DQo+ID4gKwlib29sIGluY2x1ZGVfZWRoOw0KPiA+ICsNCj4gPiArCS8qDQo+ ID4gKwkgKiBUaGlzIHNwaW5sb2NrIGlzIHVzZWQgdG8gcHJvdGVjdCB0aGUgYmVsb3cgbWVtYmVy cw0KPiA+ICsJICogZm9ybWF0LCBzcmNfZm9ybWF0LCBmcmFtZV9pbnRlcnZhbCwgY3VycmVudF90 aW1pbmdzLA0KPiA+ICsJICogZGV0ZWN0ZWRfdGltaW5nc19pbmRleCwgdmlkbG9ja3dpbiwgZWRo bWFzaywgc2VhcmNobWFzaywNCj4gPiArCSAqIHN0cmVhbWluZywgdmlkbG9ja2VkLCB0c19pc19p bnRlcmxhY2VkLCBmcmFtZXJfZW5hYmxlDQo+ID4gKwkgKi8NCj4gPiArCXNwaW5sb2NrX3Qgc2xv Y2s7DQo+ID4gKwlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10IGZvcm1hdDsNCj4gPiArCXN0cnVj dCB2NGwyX21idXNfZnJhbWVmbXQgc3JjX2Zvcm1hdDsNCj4gPiArCXN0cnVjdCB2NGwyX2ZyYWN0 IGZyYW1lX2ludGVydmFsOw0KPiA+ICsJc3RydWN0IHY0bDJfZHZfdGltaW5ncyBjdXJyZW50X3Rp bWluZ3M7DQo+ID4gKwl1MzIgZGV0ZWN0ZWRfdGltaW5nc19pbmRleDsNCj4gPiArCXUzMiB2aWRs b2Nrd2luOw0KPiA+ICsJdTMyIGVkaG1hc2s7DQo+ID4gKwl1MTYgc2VhcmNobWFzazsNCj4gPiAr CWJvb2wgc3RyZWFtaW5nOw0KPiA+ICsJYm9vbCB2aWRsb2NrZWQ7DQo+ID4gKwlib29sIHRzX2lz X2ludGVybGFjZWQ7DQo+IA0KPiBVc2Ugb2YgYm9vbCBpbiBzdHJ1Y3QgaXMgbm90IHJlY29tbWVu ZGVkLiBOb3Qgc3VyZSBpZiBpdCdzIGRvYWJsZSB3aXRoIG9uZXMNCj4gZ2V0dGluZyB2YWx1ZXMg ZnJvbSBvdGhlciBmdW5jdGlvbnMsIGJ1dCBJIGJlbGVpdmUgYWJvdmUgMyBjYW4gY2hhbmdlIHVz aW5nDQo+IGJpdCBmaWVsZCBvciBub3JtYWwgaW50ZWdlciB0eXBlLg0KPiANCg0KT2sgSSB3aWxs IGNoYW5nZSB0aGVzZSB0bw0KdTMyIGZsYWc6MTsNCg0KDQo+ID4gKwlib29sIGZyYW1lcl9lbmFi bGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBMaXN0IG9mIGNsb2NrcyByZXF1aXJlZCBieSBV SEQtU0RJIFJ4IHN1YnN5c3RlbSAqLw0KPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHhz ZGlyeHNzX2Nsa3NbXSA9IHsNCj4gPiArCSJzX2F4aV9hY2xrIiwgInNkaV9yeF9jbGsiLCAidmlk ZW9fb3V0X2NsayIsDQo+ID4gK307DQo+IA0KPiBUaGlzIGNhbiBtb3ZlIGludG8gcHJvYmUoKSB0 byByZWR1Y2UgdGhlIHNjb3BlLg0KPiANCg0KT2sgSSB3aWxsIG1vdmUgdGhpcyB0byBwcm9iZSgp DQoNCg0KPiA+ICsNCj4gPiArLyogVE9ETyAtIEFkZCBZVVYgNDQ0LzQyMCBhbmQgUkJHIDEwLzEy IGJwYyBtYnVzIGZvcm1hdHMgaGVyZSAqLw0KPiA+ICtzdGF0aWMgY29uc3QgdTMyIHhzZGlyeHNz XzEwYnBjX21idXNfZm10c1tdID0gew0KPiA+ICsJTUVESUFfQlVTX0ZNVF9VWVZZMTBfMVgyMCwN Cj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCB1MzIgeHNkaXJ4c3NfMTJicGNfbWJ1 c19mbXRzW10gPSB7DQo+ID4gKwlNRURJQV9CVVNfRk1UX1VZVlkxMl8xWDI0LA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgZm10X2NhcFtd ID0gew0KPiA+ICsJVjRMMl9EVl9CVF9TRElfNzIwWDQ4N0k2MCwNCj4gPiArCVY0TDJfRFZfQlRf Q0VBXzcyMFg1NzZJNTAsDQo+ID4gKwlWNEwyX0RWX0JUX0NFQV8xMjgwWDcyMFAyNCwNCj4gPiAr CVY0TDJfRFZfQlRfQ0VBXzEyODBYNzIwUDI1LA0KDQo8c25pcD4NCg0KDQo+ID4gKw0KPiA+ICtz dGF0aWMgaW5saW5lIHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAqDQo+ID4gK3RvX3hzZGlyeHNzc3Rh dGUoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYpDQo+ID4gK3sNCj4gPiArCXJldHVybiBjb250 YWluZXJfb2Yoc3ViZGV2LCBzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUsIHN1YmRldik7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFJlZ2lzdGVyIHJlbGF0ZWQgb3BlcmF0aW9ucw0KPiA+ ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSB1MzIgeHNkaXJ4c3NfcmVhZChzdHJ1Y3QgeHNkaXJ4 c3Nfc3RhdGUgKnhzZGlyeHNzLCB1MzIgYWRkcikNCj4gPiArew0KPiA+ICsJcmV0dXJuIGlvcmVh ZDMyKHhzZGlyeHNzLT5pb21lbSArIGFkZHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg aW5saW5lIHZvaWQgeHNkaXJ4c3Nfd3JpdGUoc3RydWN0IHhzZGlyeHNzX3N0YXRlICp4c2Rpcnhz cywgdTMyIGFkZHIsDQo+ID4gKwkJCQkgIHUzMiB2YWx1ZSkNCj4gPiArew0KPiA+ICsJaW93cml0 ZTMyKHZhbHVlLCB4c2Rpcnhzcy0+aW9tZW0gKyBhZGRyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGlubGluZSB2b2lkIHhzZGlyeHNzX2NscihzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnhz ZGlyeHNzLCB1MzIgYWRkciwNCj4gPiArCQkJCXUzMiBjbHIpDQo+ID4gK3sNCj4gPiArCXhzZGly eHNzX3dyaXRlKHhzZGlyeHNzLCBhZGRyLCB4c2Rpcnhzc19yZWFkKHhzZGlyeHNzLCBhZGRyKSAm IH5jbHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgeHNkaXJ4c3Nf c2V0KHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAqeHNkaXJ4c3MsIHUzMiBhZGRyLA0KPiA+ICsJCQkJ dTMyIHNldCkNCj4gPiArew0KPiA+ICsJeHNkaXJ4c3Nfd3JpdGUoeHNkaXJ4c3MsIGFkZHIsIHhz ZGlyeHNzX3JlYWQoeHNkaXJ4c3MsIGFkZHIpIHwgc2V0KTsNCj4gPiArfQ0KPiA+ICsNCj4gDQo+ IEluIG15IG9waW5pb24sIGZyb20gaGVyZSB0bw0KPiANCj4gPiArI2RlZmluZSBYU0RJUlhfQ09S RV9ESVNBQkxFKHN0YXRlKSAgeHNkaXJ4c3NfY2xyKChzdGF0ZSksDQo+IFhTRElSWF9SU1RfQ1RS TF9SRUcsXA0KPiA+ICsNCj4gWFNESVJYX1JTVF9DVFJMX1NTX0VOX01BU0spDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFhTRElSWF9DT1JFX0VOQUJMRShzdGF0ZSkgIHhzZGlyeHNzX3NldCgoc3RhdGUp LA0KPiBYU0RJUlhfUlNUX0NUUkxfUkVHLFwNCj4gPiArDQo+IAlYU0RJUlhfUlNUX0NUUkxfU1Nf RU5fTUFTSykNCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX0dMT0JBTF9JTlRSX0VOQUJMRShz dGF0ZSkJXA0KPiA+ICsJeHNkaXJ4c3Nfc2V0KChzdGF0ZSksIFhTRElSWF9HTEJMX0lFUl9SRUcs DQo+IFhTRElSWF9HTEJMX0lOVFJfRU5fTUFTSykNCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJY X0dMT0JBTF9JTlRSX0RJU0FCTEUoc3RhdGUpCVwNCj4gPiArCXhzZGlyeHNzX2Nscigoc3RhdGUp LCBYU0RJUlhfR0xCTF9JRVJfUkVHLA0KPiBYU0RJUlhfR0xCTF9JTlRSX0VOX01BU0spDQo+IA0K PiBoZXJlLCBpbmxpbmluZyBzaW5nbGUgbGluZXJzIG9yIHN0YXRpYyBpbmxpbmUgd291bGQgYmUg YmV0dGVyIHRoYW4gYWJvdmUgbWFjcm9zLg0KPiANCg0KT2sgSSB3aWxsIG1vdmUgdG8gaW5saW5p bmcuDQoNCg0KPiA+ICsNCj4gPiArc3RhdGljIGludCB4c2Rpcnhfc2V0X21vZGVkZXRlY3Qoc3Ry dWN0IHhzZGlyeHNzX3N0YXRlICpzdGF0ZSwgdTE2IG1hc2spDQo+ID4gK3sNCj4gPiArCXUzMiB2 YWw7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Ow0KPiA+ICsNCj4gPiAr CW1hc2sgJj0gWFNESVJYX0RFVEVDVF9BTExfTU9ERVM7DQo+ID4gKwlpZiAoIW1hc2spIHsNCj4g PiArCQlkZXZfZXJyKGRldiwgIkludmFsaWQgYml0IG1hc2sgPSAweCUwOHhcbiIsIG1hc2spOw0K PiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCg0KPHNuaXA+DQoNCg0KPiA+ ICsJY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV81MEhaOg0KPiA+ICsJCWZyYW1lX2ludGVy dmFsLT5udW1lcmF0b3IgPSAxMDAwOw0KPiA+ICsJCWZyYW1lX2ludGVydmFsLT5kZW5vbWluYXRv ciA9IDUwMDAwOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRf UkFURV81OV85NEhaOg0KPiA+ICsJCWZyYW1lX2ludGVydmFsLT5udW1lcmF0b3IgPSAxMDAxOw0K PiA+ICsJCWZyYW1lX2ludGVydmFsLT5kZW5vbWluYXRvciA9IDYwMDAwOw0KPiA+ICsJCWJyZWFr Ow0KPiA+ICsJY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV82MEhaOg0KPiA+ICsJCWZyYW1l X2ludGVydmFsLT5udW1lcmF0b3IgPSAxMDAwOw0KPiA+ICsJCWZyYW1lX2ludGVydmFsLT5kZW5v bWluYXRvciA9IDYwMDAwOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlm cmFtZV9pbnRlcnZhbC0+bnVtZXJhdG9yID0gMTsNCj4gPiArCQlmcmFtZV9pbnRlcnZhbC0+ZGVu b21pbmF0b3IgPSAxOw0KPiANCj4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzbyB3b3VsZCBpdCBt YWtlIHNlbnNlIHRvIGhhdmUgYW4gZXJyb3IgaGVyZT8NCj4gDQoNClRoYXQncyByaWdodC4gVGhp cyB3aWxsIG5vdCBoYXBwZW4uIEkgd2lsbCByZW1vdmUgdGhlIGRlZmF1bHQgY2FzZS4NCg0KDQo+ ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHhzZGlyeHNzX3NldF9ndGNs ayhzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnN0YXRlKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY2xr ICpndGNsazsNCj4gDQo+IFRoaXMgdmFyaWFibGUgaXMgbm90IG5lZWRlZC4gVXAgdG8geW91Lg0K PiANCg0KUmlnaHQgbm90IG5lZWRlZC4gV2lsbCByZW1vdmUgaW4gbmV4dCB2ZXJzaW9uLg0KDQoN Cj4gPiArCXVuc2lnbmVkIGxvbmcgY2xrcmF0ZTsNCj4gPiArCWludCByZXQsIGlzX2ZyYWM7DQo+ ID4gKwl1MzIgbW9kZTsNCj4gPiArDQo+ID4gKwltb2RlID0geHNkaXJ4c3NfcmVhZChzdGF0ZSwg WFNESVJYX01PREVfREVUX1NUQVRfUkVHKTsNCj4gPiArCW1vZGUgJj0gWFNESVJYX01PREVfREVU X1NUQVRfUlhfTU9ERV9NQVNLOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBUT0RPOiBGb3Ig bm93LCBkb24ndCBjaGFuZ2UgdGhlIGNsb2NrIHJhdGUgZm9yIGFueSBtb2RlIGV4Y2VwdA0KPiAx MkcuDQo+ID4gKwkgKiBJbiBmdXR1cmUsIGNvbmZpZ3VyZSBndCBjbG9jayBmb3IgYWxsIG1vZGVz IGFuZCBlbmFibGUgY2xvY2sgb25seQ0KPiA+ICsJICogd2hlbiBuZWVkZWQgKHN0cmVhbSBvbi9v ZmYpLg0KPiA+ICsJICovDQo+ID4gKwlpZiAobW9kZSAhPSBYU0RJUlhfTU9ERV8xMkdJX01BU0sg JiYgbW9kZSAhPQ0KPiBYU0RJUlhfTU9ERV8xMkdGX01BU0spDQo+ID4gKwkJcmV0dXJuOw0KPiA+ ICsNCj4gPiArCS8qIFdoZW4gbnVtZXJhdG9yIGlzIDEwMDEgdGhlbiBmcmFtZSByYXRlIGlzIGZy YWN0aW9uYWwgZWxzZSBpbnRlZ2VyDQo+ICovDQo+ID4gKwlpc19mcmFjID0gc3RhdGUtPmZyYW1l X2ludGVydmFsLm51bWVyYXRvciA9PSAxMDAxID8gMSA6IDA7DQo+ID4gKw0KPiA+ICsJaWYgKHN0 YXRlLT5wcmV2X2lzX2ZyYWMgPT0gaXNfZnJhYykNCj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ ICsJWFNESVJYX0dMT0JBTF9JTlRSX0RJU0FCTEUoc3RhdGUpOw0KPiA+ICsJeHNkaXJ4c3NfY2xy KHN0YXRlLCBYU0RJUlhfSUVSX1JFRywgWFNESVJYX0lOVFJfQUxMX01BU0spOw0KPiA+ICsJWFNE SVJYX0NPUkVfRElTQUJMRShzdGF0ZSk7DQo+ID4gKw0KPiA+ICsJLyogZ2V0IHNkaV9yeF9jbGsg Ki8NCj4gDQo+IEknZCByZW1vdmUgdGhpcyBjb21tZW50LA0KPiANCj4gPiArCWd0Y2xrID0gc3Rh dGUtPmNsa3NbMV0uY2xrOw0KPiA+ICsNCj4gPiArCS8qIGNhbGN1bGF0ZSBjbGtyYXRlICovDQo+ IA0KPiBhbmQgdGhpcy4gVXAgdG8geW91Lg0KPiANCg0KT2sgSSB3aWxsIHJlbW92ZSB0aGVzZSBj b21tZW50cyBpbiBuZXh0IHZlcnNpb24uDQoNCg0KPiA+ICsJaWYgKCFpc19mcmFjKQ0KPiA+ICsJ CWNsa3JhdGUgPSBDTEtfSU5UOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCWNsa3JhdGUgPSAoQ0xLX0lO VCAqIDEwMDApIC8gMTAwMTsNCj4gPiArDQo+ID4gKwlyZXQgPSBjbGtfc2V0X3JhdGUoZ3RjbGss IGNsa3JhdGUpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlkZXZfZXJyKHN0YXRlLT5kZXYsICJm YWlsZWQgdG8gc2V0IGNsayByYXRlID0gJWRcbiIsIHJldCk7DQo+ID4gKw0KPiA+ICsJc3RhdGUt PnByZXZfaXNfZnJhYyA9IGlzX2ZyYWM7DQo+ID4gKwljbGtyYXRlID0gY2xrX2dldF9yYXRlKGd0 Y2xrKTsNCj4gDQo+IFNob3VsZG4ndCB0aGUgcmV0dXJuZWQgcmF0ZSBiZSBjaGVja2VkIGFuZCB3 YXJuIGlmIGRpZmYgaXMgdG9vIG11Y2g/IEFib3ZlDQo+IGNoYW5nZXMgdGhlIHJhdGUgYnkgMC4x JSB3aGljaCBtZWFucyB0aGUgcmF0ZSBzaG91bGQgYmUgcXVpdGUgcHJlY2lzZS4gU28gaXQNCj4g YmV0dGVyIGJlIGNoZWNrZWQuDQo+IA0KDQpJIHdpbGwgY2hlY2sgYW5kIHJldmVydCBmb3IgdGhp cyBpbiBuZXh0IHZlcnNpb24uDQoNCg0KPiA+ICsNCj4gPiArCWRldl9kYmcoc3RhdGUtPmRldiwg ImNsa3JhdGUgPSAlbHUgaXNfZnJhYyA9ICVkXG4iLA0KPiA+ICsJCWNsa3JhdGUsIGlzX2ZyYWMp Ow0KPiA+ICsNCj4gPiArCWlmIChzdGF0ZS0+ZnJhbWVyX2VuYWJsZSkgew0KPiA+ICsJCXhzZGly eHNzX3NldChzdGF0ZSwgWFNESVJYX01ETF9DVFJMX1JFRywNCj4gPiArCQkJICAgICBYU0RJUlhf TURMX0NUUkxfRlJNX0VOX01BU0spOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQl4c2Rpcnhzc19j bHIoc3RhdGUsIFhTRElSWF9NRExfQ1RSTF9SRUcsDQo+ID4gKwkJCSAgICAgWFNESVJYX01ETF9D VFJMX0ZSTV9FTl9NQVNLKTsNCj4gPiArCX0NCg0KPHNuaXA+DQoNCg0KPiA+ICsvKioNCj4gPiAr ICogeHNkaXJ4c3NfaXJxX2hhbmRsZXIgLSBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgU0RJIFJ4DQo+ ID4gKyAqIEBpcnE6IElSUSBudW1iZXINCj4gPiArICogQGRldl9pZDogUG9pbnRlciB0byBkZXZp Y2Ugc3RhdGUNCj4gPiArICoNCj4gPiArICogVGhlIFNESSBSeCBpbnRlcnJ1cHRzIGFyZSBjbGVh cmVkIGJ5IHdyaXRpbmcgMSB0byBjb3JyZXNwb25kaW5nIGJpdC4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOiBJUlFfSEFORExFRCBhZnRlciBoYW5kbGluZyBpbnRlcnJ1cHRzDQo+ID4gKyAqLw0K PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgeHNkaXJ4c3NfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqZGV2X2lkKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnN0YXRlID0g KHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAqKWRldl9pZDsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRl diA9IHN0YXRlLT5kZXY7DQo+ID4gKwl1MzIgc3RhdHVzOw0KPiA+ICsNCj4gPiArCXN0YXR1cyA9 IHhzZGlyeHNzX3JlYWQoc3RhdGUsIFhTRElSWF9JU1JfUkVHKTsNCj4gPiArCXhzZGlyeHNzX3dy aXRlKHN0YXRlLCBYU0RJUlhfSVNSX1JFRywgc3RhdHVzKTsNCj4gDQo+IFRoaXMgY2FuIGJlIGRv bmUgYWZ0ZXIgY2hlY2sgYmVsb3csIHNvIElPIGlzIHNraXBwZWQgd2hlbiBub3QgbmVlZGVkLg0K PiANCg0KQWdyZWVkLiBJIHdpbGwgbW92ZSBpdCBhZnRlciByZXR1cm4gSVJRX05PTkUgaW4gbmV4 dCB2ZXJzaW9uLiANCg0KDQo+ID4gKwlkZXZfZGJnKGRldiwgImludGVycnVwdCBzdGF0dXMgPSAw eCUwOHhcbiIsIHN0YXR1cyk7DQo+ID4gKw0KPiA+ICsJaWYgKCFzdGF0dXMpDQo+ID4gKwkJcmV0 dXJuIElSUV9OT05FOw0KPiA+ICsNCj4gPiArCWlmIChzdGF0dXMgJiBYU0RJUlhfSU5UUl9WSURM T0NLX01BU0sgfHwNCj4gPiArCSAgICBzdGF0dXMgJiBYU0RJUlhfSU5UUl9WSURVTkxPQ0tfTUFT Sykgew0KPiA+ICsJCXUzMiB2YWwxLCB2YWwyOw0KPiA+ICsJCXN0cnVjdCB2NGwyX2V2ZW50IGV2 ZW50ID0geyAwIH07DQo+ID4gKwkJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArDQo+ID4gKwkJ ZGV2X2RiZyhkZXYsICJ2aWRlbyBsb2NrL3VubG9jayBpbnRlcnJ1cHRcbiIpOw0KPiA+ICsNCj4g PiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3RhdGUtPnNsb2NrLCBmbGFncyk7DQo+ID4gKwkJeHNk aXJ4X3N0cmVhbWZsb3dfY29udHJvbChzdGF0ZSwgZmFsc2UpOw0KPiA+ICsNCj4gPiArCQl2YWwx ID0geHNkaXJ4c3NfcmVhZChzdGF0ZSwgWFNESVJYX01PREVfREVUX1NUQVRfUkVHKTsNCj4gPiAr CQl2YWwyID0geHNkaXJ4c3NfcmVhZChzdGF0ZSwgWFNESVJYX1RTX0RFVF9TVEFUX1JFRyk7DQo+ ID4gKw0KPiA+ICsJCWlmICgodmFsMSAmIFhTRElSWF9NT0RFX0RFVF9TVEFUX01PREVfTE9DS19N QVNLKSAmJg0KPiA+ICsJCSAgICAodmFsMiAmIFhTRElSWF9UU19ERVRfU1RBVF9MT0NLRURfTUFT SykpIHsNCj4gPiArCQkJdTMyIG1hc2sgPQ0KPiBYU0RJUlhfUlNUX0NUUkxfUlNUX0NSQ19FUlJD TlRfTUFTSyB8DQo+ID4gKw0KPiBYU0RJUlhfUlNUX0NUUkxfUlNUX0VESF9FUlJDTlRfTUFTSzsN Cj4gPiArDQo+ID4gKwkJCWRldl9kYmcoZGV2LCAidmlkZW8gbG9jayBpbnRlcnJ1cHRcbiIpOw0K PiA+ICsNCj4gPiArCQkJeHNkaXJ4c3Nfc2V0KHN0YXRlLCBYU0RJUlhfUlNUX0NUUkxfUkVHLCBt YXNrKTsNCj4gPiArCQkJeHNkaXJ4c3NfY2xyKHN0YXRlLCBYU0RJUlhfUlNUX0NUUkxfUkVHLCBt YXNrKTsNCj4gPiArDQo+ID4gKwkJCXZhbDEgPSB4c2Rpcnhzc19yZWFkKHN0YXRlLCBYU0RJUlhf U1QzNTJfVkFMSURfUkVHKTsNCj4gPiArCQkJdmFsMiA9IHhzZGlyeHNzX3JlYWQoc3RhdGUsIFhT RElSWF9TVDM1Ml9EUzFfUkVHKTsNCj4gPiArDQo+ID4gKwkJCWRldl9kYmcoZGV2LCAidmFsaWQg c3QzNTIgbWFzayA9IDB4JTA4eFxuIiwgdmFsMSk7DQo+ID4gKwkJCWRldl9kYmcoZGV2LCAic3Qz NTIgcGF5bG9hZCA9IDB4JTA4eFxuIiwgdmFsMik7DQo+ID4gKw0KPiA+ICsJCQlpZiAoIXhzZGly eF9nZXRfc3RyZWFtX3Byb3BlcnRpZXMoc3RhdGUpKSB7DQo+ID4gKwkJCQlzdGF0ZS0+dmlkbG9j a2VkID0gdHJ1ZTsNCj4gPiArCQkJCXhzZGlyeHNzX3NldF9ndGNsayhzdGF0ZSk7DQo+ID4gKwkJ CX0gZWxzZSB7DQo+ID4gKwkJCQlkZXZfZXJyKGRldiwgIlVuYWJsZSB0byBnZXQgc3RyZWFtDQo+ IHByb3BlcnRpZXMhXG4iKTsNCj4gPiArCQkJCXN0YXRlLT52aWRsb2NrZWQgPSBmYWxzZTsNCj4g PiArCQkJfQ0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gKwkJCWRldl9kYmcoZGV2LCAidmlkZW8gdW5s b2NrIGludGVycnVwdFxuIik7DQo+ID4gKwkJCXN0YXRlLT52aWRsb2NrZWQgPSBmYWxzZTsNCj4g PiArCQl9DQo+ID4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3RhdGUtPnNsb2NrLCBmbGFn cyk7DQo+ID4gKw0KPiA+ICsJCWV2ZW50LnR5cGUgPSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0U7 DQo+ID4gKwkJZXZlbnQudS5zcmNfY2hhbmdlLmNoYW5nZXMgPQ0KPiBWNEwyX0VWRU5UX1NSQ19D SF9SRVNPTFVUSU9OOw0KPiA+ICsJCXY0bDJfc3ViZGV2X25vdGlmeV9ldmVudCgmc3RhdGUtPnN1 YmRldiwgJmV2ZW50KTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoc3RhdHVzICYgKFhTRElS WF9JTlRSX1VOREVSRkxPV19NQVNLIHwNCj4gWFNESVJYX0lOVFJfT1ZFUkZMT1dfTUFTSykpIHsN Cj4gPiArCQlzdHJ1Y3QgdjRsMl9ldmVudCBldmVudCA9IHsgMCB9Ow0KPiA+ICsNCj4gPiArCQlk ZXZfZGJnKGRldiwgIlZpZGVvIGluIHRvIEFYSTQgU3RyZWFtIGNvcmUgdW5kZXIvb3ZlcmZsb3cN Cj4gaW50ZXJydXB0XG4iKTsNCj4gPiArDQo+ID4gKwkJZXZlbnQudHlwZSA9IFY0TDJfRVZFTlRf WElMSU5YX1NESVJYX1VORF9PVlJfRkxPVzsNCj4gPiArCQlpZiAoc3RhdHVzICYgWFNESVJYX0lO VFJfVU5ERVJGTE9XX01BU0spDQo+ID4gKwkJCWV2ZW50LnUuZGF0YVswXSA9IFhJTElOWF9TRElS WF9VTkRFUkZMT1dfRVZFTlQ7DQo+ID4gKwkJaWYgKHN0YXR1cyAmIFhTRElSWF9JTlRSX09WRVJG TE9XX01BU0spDQo+ID4gKwkJCWV2ZW50LnUuZGF0YVswXSA9IFhJTElOWF9TRElSWF9PVkVSRkxP V19FVkVOVDsNCj4gDQo+IFNob3VsZCBiZSBPUmVkPw0KPiANCg0KSSB3aWxsIGZpeCB0aGlzIGlu IG5leHQgdmVyc2lvbi4NCg0KDQo+ID4gKw0KPiA+ICsJCXY0bDJfc3ViZGV2X25vdGlmeV9ldmVu dCgmc3RhdGUtPnN1YmRldiwgJmV2ZW50KTsNCj4gPiArCX0NCj4gPiArCXJldHVybiBJUlFfSEFO RExFRDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX3N1YnNjcmli ZV9ldmVudCAtIFN1YnNjcmliZSB0byB2aWRlbyBsb2NrIGFuZCB1bmxvY2sgZXZlbnQNCj4gPiAr ICogQHNkOiBWNEwyIFN1YiBkZXZpY2UNCj4gPiArICogQGZoOiBWNEwyIEZpbGUgSGFuZGxlDQo+ ID4gKyAqIEBzdWI6IFN1YmNyaWJlIGV2ZW50IHN0cnVjdHVyZQ0KPiA+ICsgKg0KPiA+ICsgKiBS ZXR1cm46IDAgb24gc3VjY2VzcywgZXJyb3JzIG90aGVyd2lzZQ0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIGludCB4c2Rpcnhzc19zdWJzY3JpYmVfZXZlbnQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwN Cj4gPiArCQkJCSAgICBzdHJ1Y3QgdjRsMl9maCAqZmgsDQo+ID4gKwkJCQkgICAgc3RydWN0IHY0 bDJfZXZlbnRfc3Vic2NyaXB0aW9uICpzdWIpDQo+ID4gK3sNCj4gPiArCWludCByZXQ7DQo+ID4g KwlzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnhzZGlyeHNzID0gdG9feHNkaXJ4c3NzdGF0ZShzZCk7 DQo+ID4gKw0KPiA+ICsJZGV2X2RiZyh4c2Rpcnhzcy0+ZGV2LCAiRXZlbnQgc3Vic2NyaWJlZCA6 IDB4JTA4eFxuIiwgc3ViLT50eXBlKTsNCj4gPiArCXN3aXRjaCAoc3ViLT50eXBlKSB7DQo+ID4g KwljYXNlIFY0TDJfRVZFTlRfWElMSU5YX1NESVJYX1VORF9PVlJfRkxPVzoNCj4gPiArCQlyZXQg PSB2NGwyX2V2ZW50X3N1YnNjcmliZShmaCwgc3ViLCBYU0RJUlhfTUFYX0VWRU5UUywNCj4gTlVM TCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIFY0TDJfRVZFTlRfU09VUkNFX0NIQU5HRToN Cj4gPiArCQlyZXQgPSB2NGwyX3NyY19jaGFuZ2VfZXZlbnRfc3Vic2NyaWJlKGZoLCBzdWIpOw0K PiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXQgPSB2NGwyX2N0cmxfc3Vi c2NyaWJlX2V2ZW50KGZoLCBzdWIpOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX3NfY3RybCAtIFRoaXMgaXMgdXNl ZCB0byBzZXQgdGhlIFhpbGlueCBTREkgUnggVjRMMiBjb250cm9scw0KPiA+ICsgKiBAY3RybDog VjRMMiBjb250cm9sIHRvIGJlIHNldA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlz IHVzZWQgdG8gc2V0IHRoZSBWNEwyIGNvbnRyb2xzIGZvciB0aGUgWGlsaW54IFNESSBSeA0KPiA+ ICsgKiBTdWJzeXN0ZW0uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBl cnJvcnMgb3RoZXJ3aXNlDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHhzZGlyeHNzX3NfY3Ry bChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4g DQo+IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGlzLg0KPiANCg0KQWdyZWVkLiBJIHdpbGwgY2hh bmdlIHRoaXMgaW4gbmV4dCB2ZXJzaW9uLg0KDQoNCj4gPiArCXN0cnVjdCB4c2Rpcnhzc19zdGF0 ZSAqeHNkaXJ4c3MgPQ0KPiA+ICsJCWNvbnRhaW5lcl9vZihjdHJsLT5oYW5kbGVyLCBzdHJ1Y3Qg eHNkaXJ4c3Nfc3RhdGUsDQo+ID4gKwkJCSAgICAgY3RybF9oYW5kbGVyKTsNCj4gPiArCXN0cnVj dCBkZXZpY2UgKmRldiA9IHhzZGlyeHNzLT5kZXY7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGZsYWdz Ow0KPiA+ICsNCj4gPiArCWRldl9kYmcoZGV2LCAic2V0IGN0cmwgaWQgPSAweCUwOHggdmFsID0g MHglMDh4XG4iLA0KPiA+ICsJCWN0cmwtPmlkLCBjdHJsLT52YWwpOw0KPiA+ICsNCj4gPiArCXNw aW5fbG9ja19pcnFzYXZlKCZ4c2Rpcnhzcy0+c2xvY2ssIGZsYWdzKTsNCj4gPiArDQoNCjxzbmlw Pg0KDQoNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX2dfZnJhbWVfaW50ZXJ2YWwgLSBHZXQg dGhlIGZyYW1lIGludGVydmFsDQo+ID4gKyAqIEBzZDogVjRMMiBTdWIgZGV2aWNlDQo+ID4gKyAq IEBmaTogUG9pbnRlciB0byBWNGwyIFN1YiBkZXZpY2UgZnJhbWUgaW50ZXJ2YWwgc3RydWN0dXJl DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIGZyYW1l IGludGVydmFsLg0KPiA+ICsgKiBUaGUgZnJhbWUgcmF0ZSBjYW4gYmUgaW50ZWdyYWwgb3IgZnJh Y3Rpb25hbC4NCj4gPiArICogSW50ZWdyYWwgZnJhbWUgcmF0ZSBlLmcuIG51bWVyYXRvciA9IDEw MDAsIGRlbm9taW5hdG9yID0gMjQwMDAgPT4gMjQNCj4gZnBzDQo+ID4gKyAqIEZyYWN0aW9uYWwg ZnJhbWUgcmF0ZSBlLmcuIG51bWVyYXRvciA9IDEwMDEsIGRlbm9taW5hdG9yID0gMjQwMDAgPT4N Cj4gMjMuOTcgZnBzDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzDQo+ID4g KyAqLw0KPiA+ICtzdGF0aWMgaW50IHhzZGlyeHNzX2dfZnJhbWVfaW50ZXJ2YWwoc3RydWN0IHY0 bDJfc3ViZGV2ICpzZCwNCj4gPiArCQkJCSAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2ZyYW1lX2lu dGVydmFsICpmaSkNCj4gPiArew0KPiA+ICsJc3RydWN0IHhzZGlyeHNzX3N0YXRlICp4c2Rpcnhz cyA9IHRvX3hzZGlyeHNzc3RhdGUoc2QpOw0KPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4g PiArDQo+ID4gKwlpZiAoIXhzZGlyeHNzLT52aWRsb2NrZWQpIHsNCj4gDQo+IFNob3VsZG4ndCB0 aGlzIGJlIGFjY2Vzc2VkIHVuZGVyIHNwaW5sb2NrPw0KPiANCg0KVGhhbmtzIGZvciBjYXRjaGlu ZyB0aGlzLiBJIHdpbGwgdXBkYXRlIGluIG5leHQgdmVyc2lvbi4NCg0KDQo+ID4gKwkJZGV2X2Vy cih4c2Rpcnhzcy0+ZGV2LCAiVmlkZW8gbm90IGxvY2tlZCFcbiIpOw0KPiA+ICsJCXJldHVybiAt RUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ4c2Rpcnhz cy0+c2xvY2ssIGZsYWdzKTsNCj4gPiArCWZpLT5pbnRlcnZhbCA9IHhzZGlyeHNzLT5mcmFtZV9p bnRlcnZhbDsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnhzZGlyeHNzLT5zbG9jaywg ZmxhZ3MpOw0KPiA+ICsNCj4gPiArCWRldl9kYmcoeHNkaXJ4c3MtPmRldiwgImZyYW1lIHJhdGUg bnVtZXJhdG9yID0gJWQgZGVub21pbmF0b3IgPQ0KPiAlZFxuIiwNCj4gPiArCQl4c2Rpcnhzcy0+ ZnJhbWVfaW50ZXJ2YWwubnVtZXJhdG9yLA0KPiA+ICsJCXhzZGlyeHNzLT5mcmFtZV9pbnRlcnZh bC5kZW5vbWluYXRvcik7DQo+IA0KPiBUaGlzIHRvby4NCj4gDQoNCk5vdGVkIGZvciB1cGRhdGUg aW4gbmV4dCB2ZXJzaW9uLg0KDQoNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogeHNkaXJ4c3Nfc19zdHJlYW0gLSBJdCBpcyB1c2VkIHRvIHN0YXJ0L3N0 b3AgdGhlIHN0cmVhbWluZy4NCj4gPiArICogQHNkOiBWNEwyIFN1YiBkZXZpY2UNCj4gPiArICog QGVuYWJsZTogRmxhZyAoVHJ1ZSAvIEZhbHNlKQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0 aW9uIGNvbnRyb2xzIHRoZSBzdGFydCBvciBzdG9wIG9mIHN0cmVhbWluZyBmb3IgdGhlDQo+ID4g KyAqIFhpbGlueCBTREkgUnggU3Vic3lzdGVtLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IDAg b24gc3VjY2VzcywgZXJyb3JzIG90aGVyd2lzZQ0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB4 c2Rpcnhzc19zX3N0cmVhbShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCBpbnQgZW5hYmxlKQ0KPiA+ ICt7DQo+ID4gKwlzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnhzZGlyeHNzID0gdG9feHNkaXJ4c3Nz dGF0ZShzZCk7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB4c2Rpcnhzcy0+ZGV2Ow0KPiA+ ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgm eHNkaXJ4c3MtPnNsb2NrLCBmbGFncyk7DQo+ID4gKwlpZiAoZW5hYmxlID09IHhzZGlyeHNzLT5z dHJlYW1pbmcpIHsNCj4gPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4c2Rpcnhzcy0+c2xv Y2ssIGZsYWdzKTsNCj4gPiArCQlkZXZfZGJnKGRldiwgImFscmVhZHkgaW4gc2FtZSBzdHJlYW1p bmcgc3RhdGUgYXMNCj4gcmVxdWVzdGVkXG4iKTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlpZiAoZW5hYmxlKSB7DQo+ID4gKwkJaWYgKCF4c2Rpcnhzcy0+dmlkbG9j a2VkKSB7DQo+ID4gKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnhzZGlyeHNzLT5zbG9jaywg ZmxhZ3MpOw0KPiA+ICsJCQlkZXZfZXJyKGRldiwgIlZpZGVvIGlzIG5vdCBsb2NrZWRcbiIpOw0K PiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKwkJeHNkaXJ4X3N0cmVhbWZs b3dfY29udHJvbCh4c2RpcnhzcywgdHJ1ZSk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXhzZGly eF9zdHJlYW1mbG93X2NvbnRyb2woeHNkaXJ4c3MsIGZhbHNlKTsNCj4gDQo+IFRoaXMgY2FuIG1v dmUgb3V0IG9mIHRoaXMgaWYgc3RhdGVtZW50LCBwYXNzaW5nIGVuYWJsZSBvciAhIWVuYWJsZSBk aXJlY3RseS4NCj4gVXAgdG8geW91Lg0KPiANCg0KTm90ZWQuIEkgd2lsbCB1cGRhdGUgdGhpcyBp biB0aGUgbmV4dCB2ZXJzaW9uLg0KDQoNCj4gPiArCX0NCj4gPiArCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnhzZGlyeHNzLT5zbG9jaywgZmxhZ3MpOw0KPiA+ICsJZGV2X2RiZyhkZXYsICJTdHJl YW1pbmcgJXNcbiIsIGVuYWJsZSA/ICJzdGFydGVkIiA6ICJzdG9wcGVkIik7DQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX2dfaW5wdXRf c3RhdHVzIC0gSXQgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHZpZGVvIHNpZ25hbA0KPiA+ ICsgKiBpcyBwcmVzZW50IC8gbG9ja2VkIG9udG8gb3Igbm90Lg0KPiA+ICsgKg0KDQo8c25pcD4N Cg0KDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHhzZGlyeHNzX3NfZHZfdGltaW5ncyhzdHJ1Y3Qg djRsMl9zdWJkZXYgKnNkLA0KPiA+ICsJCQkJIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWlu Z3MpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAqc3RhdGUgPSB0b194c2Rp cnhzc3N0YXRlKHNkKTsNCj4gPiArCXUzMiBpID0gc3RhdGUtPmRldGVjdGVkX3RpbWluZ3NfaW5k ZXg7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19p cnFzYXZlKCZzdGF0ZS0+c2xvY2ssIGZsYWdzKTsNCj4gPiArCWlmICghc3RhdGUtPnZpZGxvY2tl ZCkgew0KPiA+ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0YXRlLT5zbG9jaywgZmxhZ3Mp Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gDQo+IElzIHRoZSBz cGlubG9jayBuZWVkZWQgdG8gYmUgaGVsZCBmb3IgYmVsb3c/DQo+IA0KDQpZZXMuIFRoZSBzdGF0 ZS0+Zm9ybWF0IGlzIHVwZGF0ZWQgaW4gdGhlIGlycSBoYW5kbGVyLg0KDQoNCj4gPiArCS8qIGlu cHV0IHRpbWluZyBzaG91bGQgbWF0Y2ggcXVlcnkgZHZfdGltaW5nICovDQo+ID4gKwlpZiAoIXY0 bDJfbWF0Y2hfZHZfdGltaW5ncyh0aW1pbmdzLA0KPiA+ICsJCQkJICAgJnhzZGlyeHNzX2R2X3Rp bWluZ3NbaV0udGltaW5nLA0KPiA+ICsJCQkJICAgMCwgZmFsc2UpKSB7DQo+ID4gKwkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmc3RhdGUtPnNsb2NrLCBmbGFncyk7DQo+ID4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJc3RhdGUtPmN1cnJlbnRfdGltaW5ncyA9ICp0 aW1pbmdzOw0KPiA+ICsNCj4gPiArCS8qIFVwZGF0ZSB0aGUgbWVkaWEgYnVzIGZvcm1hdCAqLw0K PiA+ICsJc3RhdGUtPnNyY19mb3JtYXQgPSBzdGF0ZS0+Zm9ybWF0Ow0KPiA+ICsJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmc3RhdGUtPnNsb2NrLCBmbGFncyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4c3NfZ19kdl90aW1pbmdz KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+ID4gKwkJCQkgc3RydWN0IHY0bDJfZHZfdGltaW5n cyAqdGltaW5ncykNCj4gPiArew0KPiA+ICsJc3RydWN0IHhzZGlyeHNzX3N0YXRlICpzdGF0ZSA9 IHRvX3hzZGlyeHNzc3RhdGUoc2QpOw0KPiA+ICsNCj4gPiArCSp0aW1pbmdzID0gc3RhdGUtPmN1 cnJlbnRfdGltaW5nczsNCj4gDQo+IFRoaXMgbmVlZHMgdGhlIGxvY2sgaWYgYWJvdmUgZG9lc24n dCBjaGFuZ2UsIGF0IGxlYXN0IHBlciBsb2NrIGRlc2NyaXB0aW9uLg0KPiANCg0KQ29ycmVjdC4g SSB3aWxsIGZpeCB0aGlzIGluIHRoZSBuZXh0IHZlcnNpb24uDQoNCg0KPiA+ICsJcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4c3NfZHZfdGltaW5nc19jYXAo c3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4gPiArCQkJCSAgIHN0cnVjdCB2NGwyX2R2X3RpbWlu Z3NfY2FwICpjYXApDQo+ID4gK3sNCj4gPiArCWlmIChjYXAtPnBhZCAhPSAwKQ0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCSpjYXAgPSB4c2Rpcnhzc190aW1pbmdzX2NhcDsN Cj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KDQo8c25pcD4NCg0KDQo+ID4gKwkJcmV0 dXJuIHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSBjbGtfYnVsa19wcmVwYXJlX2VuYWJsZSh4c2Rp cnhzcy0+bnVtX2Nsa3MsIHhzZGlyeHNzLT5jbGtzKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJ cmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwkvKiBSZXNldCB0aGUgY29yZSAqLw0KPiA+ICsJeHNk aXJ4X3N0cmVhbWZsb3dfY29udHJvbCh4c2RpcnhzcywgZmFsc2UpOw0KPiA+ICsJWFNESVJYX0NP UkVfRElTQUJMRSh4c2Rpcnhzcyk7DQo+ID4gKwkvKiBDbGVhciBhbGwgaW50ZXJydXB0cyAqLw0K PiA+ICsJeHNkaXJ4c3Nfc2V0KHhzZGlyeHNzLCBYU0RJUlhfSVNSX1JFRywgWFNESVJYX0lOVFJf QUxMX01BU0spOw0KPiA+ICsJeHNkaXJ4c3NfY2xyKHhzZGlyeHNzLCBYU0RJUlhfSUVSX1JFRywg WFNESVJYX0lOVFJfQUxMX01BU0spOw0KPiA+ICsJeHNkaXJ4c3Nfc2V0KHhzZGlyeHNzLCBYU0RJ UlhfSUVSX1JFRywgWFNESVJYX0lOVFJfQUxMX01BU0spOw0KPiA+ICsJWFNESVJYX0dMT0JBTF9J TlRSX0VOQUJMRSh4c2Rpcnhzcyk7DQo+IA0KPiBMb29raW5nIGhlcmUsIGlubGluaW5nIHRoZSBt YWNybyB3aWxsIGJlIGJldHRlci4NCj4gDQo+IAl4c2Rpcnhzc19zZXQoeHNkaXJ4c3MsIFhTRElS WF9HTEJMX0lFUl9SRUcsDQo+IFhTRElSWF9HTEJMX0lOVFJfRU5fTUFTSykNCj4gDQoNCk9rIEkg d2lsbCBtYWtlIGl0IGlubGluZSBmdW5jdGlvbiBhcyBzdWdnZXN0ZWQgaW4gbmV4dCB2ZXJzaW9u Lg0KDQoNCj4gPiArCXhzZGlyeHNzX3dyaXRlKHhzZGlyeHNzLCBYU0RJUlhfQ1JDX0VSUkNOVF9S RUcsIDB4ZmZmZik7DQo+ID4gKw0KPiA+ICsJLyogUmVnaXN0ZXIgaW50ZXJydXB0IGhhbmRsZXIg Ki8NCj4gPiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQo+ID4gKwlyZXQgPSBk ZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgaXJxLCBOVUxMLCB4c2Rpcnhzc19pcnFfaGFu ZGxlciwNCj4gPiArCQkJCQlJUlFGX09ORVNIT1QsIGRldl9uYW1lKGRldiksDQo+IHhzZGlyeHNz KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgIkVyciA9ICVkIEludGVy cnVwdCBoYW5kbGVyIHJlZyBmYWlsZWQhXG4iLA0KPiA+ICsJCQlyZXQpOw0KPiA+ICsJCWdvdG8g Y2xrX2VycjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBJbml0aWFsaXplIFY0TDIgc3ViZGV2 aWNlIGFuZCBtZWRpYSBlbnRpdHkgKi8NCj4gPiArCXhzZGlyeHNzLT5wYWQuZmxhZ3MgPSBNRURJ QV9QQURfRkxfU09VUkNFOw0KPiA+ICsNCj4gPiArCS8qIEluaXRpYWxpemUgdGhlIGRlZmF1bHQg Zm9ybWF0ICovDQo+ID4gKwlpZiAoeHNkaXJ4c3MtPmJwYyA9PSAxMCkNCj4gPiArCQl4c2Rpcnhz cy0+ZGVmYXVsdF9mb3JtYXQuY29kZSA9DQo+IE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA7DQo+ ID4gKwllbHNlDQo+ID4gKwkJeHNkaXJ4c3MtPmRlZmF1bHRfZm9ybWF0LmNvZGUgPQ0KPiBNRURJ QV9CVVNfRk1UX1VZVlkxMl8xWDI0Ow0KPiA+ICsJeHNkaXJ4c3MtPmRlZmF1bHRfZm9ybWF0LmZp ZWxkID0gVjRMMl9GSUVMRF9OT05FOw0KPiA+ICsJeHNkaXJ4c3MtPmRlZmF1bHRfZm9ybWF0LmNv bG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfUkVDNzA5Ow0KPiA+ICsJeHNkaXJ4c3MtPmRlZmF1 bHRfZm9ybWF0LndpZHRoID0gWFNESVJYX0RFRkFVTFRfV0lEVEg7DQo+ID4gKwl4c2Rpcnhzcy0+ ZGVmYXVsdF9mb3JtYXQuaGVpZ2h0ID0gWFNESVJYX0RFRkFVTFRfSEVJR0hUOw0KPiA+ICsJeHNk aXJ4c3MtPmRlZmF1bHRfZm9ybWF0LnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5DXzcwOTsNCj4g PiArCXhzZGlyeHNzLT5kZWZhdWx0X2Zvcm1hdC5xdWFudGl6YXRpb24gPQ0KPiBWNEwyX1FVQU5U SVpBVElPTl9MSU1fUkFOR0U7DQo+ID4gKw0KPiA+ICsJeHNkaXJ4c3MtPmZvcm1hdCA9IHhzZGly eHNzLT5kZWZhdWx0X2Zvcm1hdDsNCj4gPiArDQo+ID4gKwkvKiBJbml0aWFsaXplIFY0TDIgc3Vi ZGV2aWNlIGFuZCBtZWRpYSBlbnRpdHkgKi8NCj4gPiArCXN1YmRldiA9ICZ4c2Rpcnhzcy0+c3Vi ZGV2Ow0KPiA+ICsJdjRsMl9zdWJkZXZfaW5pdChzdWJkZXYsICZ4c2Rpcnhzc19vcHMpOw0KPiA+ ICsNCj4gPiArCXN1YmRldi0+ZGV2ID0gJnBkZXYtPmRldjsNCj4gPiArCXN0cnNjcHkoc3ViZGV2 LT5uYW1lLCBkZXZfbmFtZShkZXYpLCBzaXplb2Yoc3ViZGV2LT5uYW1lKSk7DQo+ID4gKw0KPiA+ ICsJc3ViZGV2LT5mbGFncyA9IFY0TDJfU1VCREVWX0ZMX0hBU19FVkVOVFMgfA0KPiBWNEwyX1NV QkRFVl9GTF9IQVNfREVWTk9ERTsNCj4gPiArDQo+ID4gKwlzdWJkZXYtPmVudGl0eS5vcHMgPSAm eHNkaXJ4c3NfbWVkaWFfb3BzOw0KPiA+ICsNCj4gPiArCXY0bDJfc2V0X3N1YmRldmRhdGEoc3Vi ZGV2LCB4c2Rpcnhzcyk7DQo+ID4gKw0KPiA+ICsJcmV0ID0gbWVkaWFfZW50aXR5X3BhZHNfaW5p dCgmc3ViZGV2LT5lbnRpdHksIDEsICZ4c2Rpcnhzcy0+cGFkKTsNCj4gPiArCWlmIChyZXQgPCAw KQ0KPiA+ICsJCWdvdG8gZXJyb3I7DQo+ID4gKw0KPiA+ICsJLyogSW5pdGlhbGlzZSBhbmQgcmVn aXN0ZXIgdGhlIGNvbnRyb2xzICovDQo+ID4gKwludW1fY3RybHMgPSBBUlJBWV9TSVpFKHhzZGly eHNzX2N0cmxzKTsNCj4gPiArDQo+ID4gKwlpZiAoeHNkaXJ4c3MtPmluY2x1ZGVfZWRoKQ0KPiA+ ICsJCW51bV9jdHJscyArPSBBUlJBWV9TSVpFKHhzZGlyeHNzX2VkaF9jdHJscyk7DQo+ID4gKw0K PiA+ICsJdjRsMl9jdHJsX2hhbmRsZXJfaW5pdCgmeHNkaXJ4c3MtPmN0cmxfaGFuZGxlciwgbnVt X2N0cmxzKTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4c2Rpcnhz c19jdHJscyk7IGkrKykgew0KPiA+ICsJCXN0cnVjdCB2NGwyX2N0cmwgKmN0cmw7DQo+ID4gKw0K PiA+ICsJCWRldl9kYmcoZGV2LCAiJWQgJXMgY3RybCA9IDB4JXhcbiIsIGksIHhzZGlyeHNzX2N0 cmxzW2ldLm5hbWUsDQo+ID4gKwkJCXhzZGlyeHNzX2N0cmxzW2ldLmlkKTsNCj4gPiArDQo+ID4g KwkJY3RybCA9IHY0bDJfY3RybF9uZXdfY3VzdG9tKCZ4c2Rpcnhzcy0+Y3RybF9oYW5kbGVyLA0K PiA+ICsJCQkJCSAgICAmeHNkaXJ4c3NfY3RybHNbaV0sIE5VTEwpOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCWlmICh4c2Rpcnhzcy0+aW5jbHVkZV9lZGgpIHsNCj4gPiArCQlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRSh4c2Rpcnhzc19lZGhfY3RybHMpOyBpKyspIHsNCj4gPiArCQkJc3RydWN0 IHY0bDJfY3RybCAqY3RybDsNCj4gPiArDQo+ID4gKwkJCWRldl9kYmcoZGV2LCAiJWQgJXMgY3Ry bCA9IDB4JXhcbiIsIGksDQo+ID4gKwkJCQl4c2Rpcnhzc19lZGhfY3RybHNbaV0ubmFtZSwNCj4g PiArCQkJCXhzZGlyeHNzX2VkaF9jdHJsc1tpXS5pZCk7DQo+ID4gKw0KPiA+ICsJCQljdHJsID0g djRsMl9jdHJsX25ld19jdXN0b20oJnhzZGlyeHNzLT5jdHJsX2hhbmRsZXIsDQo+ID4gKwkJCQkJ CSAgICAmeHNkaXJ4c3NfZWRoX2N0cmxzW2ldLA0KPiA+ICsJCQkJCQkgICAgTlVMTCk7DQo+ID4g KwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmICh4c2Rpcnhzcy0+Y3RybF9oYW5kbGVyLmVy cm9yKSB7DQo+ID4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWRkIGNvbnRyb2xzXG4iKTsN Cj4gPiArCQlyZXQgPSB4c2Rpcnhzcy0+Y3RybF9oYW5kbGVyLmVycm9yOw0KPiA+ICsJCWdvdG8g ZXJyb3I7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJc3ViZGV2LT5jdHJsX2hhbmRsZXIgPSAmeHNk aXJ4c3MtPmN0cmxfaGFuZGxlcjsNCj4gPiArDQo+ID4gKwlyZXQgPSB2NGwyX2N0cmxfaGFuZGxl cl9zZXR1cCgmeHNkaXJ4c3MtPmN0cmxfaGFuZGxlcik7DQo+ID4gKwlpZiAocmV0IDwgMCkgew0K PiA+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHNldCBjb250cm9sc1xuIik7DQo+ID4gKwkJ Z290byBlcnJvcjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCB4c2Rpcnhzcyk7DQo+ID4gKw0KPiA+ICsJcmV0ID0gdjRsMl9hc3luY19yZWdpc3Rlcl9z dWJkZXYoc3ViZGV2KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJZGV2X2VycihkZXYs ICJmYWlsZWQgdG8gcmVnaXN0ZXIgc3ViZGV2XG4iKTsNCj4gPiArCQlnb3RvIGVycm9yOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCXhzZGlyeHNzLT5wcmV2X2lzX2ZyYWMgPSAtMTsNCj4gPiArDQo+ ID4gKwlYU0RJUlhfQ09SRV9FTkFCTEUoeHNkaXJ4c3MpOw0KPiA+ICsNCj4gPiArCXJldHVybiAw Ow0KPiANCj4gTml0LiBBbmUgZW1wdHkgbGluZS4NCj4gDQoNCk5vdGVkLiBJIHdpbGwgcmVtb3Zl IGluIG5leHQgdmVyc2lvbi4NCg0KDQo+ID4gK2Vycm9yOg0KPiA+ICsJdjRsMl9jdHJsX2hhbmRs ZXJfZnJlZSgmeHNkaXJ4c3MtPmN0cmxfaGFuZGxlcik7DQo+ID4gKwltZWRpYV9lbnRpdHlfY2xl YW51cCgmc3ViZGV2LT5lbnRpdHkpOw0KPiA+ICsJWFNESVJYX0dMT0JBTF9JTlRSX0RJU0FCTEUo eHNkaXJ4c3MpOw0KPiA+ICsJeHNkaXJ4c3NfY2xyKHhzZGlyeHNzLCBYU0RJUlhfSUVSX1JFRywg WFNESVJYX0lOVFJfQUxMX01BU0spOw0KPiA+ICtjbGtfZXJyOg0KPiA+ICsJY2xrX2J1bGtfZGlz YWJsZV91bnByZXBhcmUoeHNkaXJ4c3MtPm51bV9jbGtzLCB4c2Rpcnhzcy0+Y2xrcyk7DQo+ID4g KwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHhzZGlyeHNzX3Jl bW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qg eHNkaXJ4c3Nfc3RhdGUgKnhzZGlyeHNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ ID4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiA9ICZ4c2Rpcnhzcy0+c3ViZGV2Ow0KPiA+ ICsNCj4gPiArCVhTRElSWF9DT1JFX0RJU0FCTEUoeHNkaXJ4c3MpOw0KPiA+ICsJWFNESVJYX0dM T0JBTF9JTlRSX0RJU0FCTEUoeHNkaXJ4c3MpOw0KPiA+ICsJeHNkaXJ4c3NfY2xyKHhzZGlyeHNz LCBYU0RJUlhfSUVSX1JFRywgWFNESVJYX0lOVFJfQUxMX01BU0spOw0KPiA+ICsJeHNkaXJ4X3N0 cmVhbWZsb3dfY29udHJvbCh4c2RpcnhzcywgZmFsc2UpOw0KPiA+ICsNCj4gPiArCXY0bDJfYXN5 bmNfdW5yZWdpc3Rlcl9zdWJkZXYoc3ViZGV2KTsNCj4gPiArCXY0bDJfY3RybF9oYW5kbGVyX2Zy ZWUoJnhzZGlyeHNzLT5jdHJsX2hhbmRsZXIpOw0KPiA+ICsJbWVkaWFfZW50aXR5X2NsZWFudXAo JnN1YmRldi0+ZW50aXR5KTsNCj4gPiArDQo+ID4gKwljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFy ZSh4c2Rpcnhzcy0+bnVtX2Nsa3MsIHhzZGlyeHNzLT5jbGtzKTsNCj4gPiArDQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgeHNkaXJ4c3Nfb2ZfaWRfdGFibGVbXSA9IHsNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAieGxu eCx2LXNtcHRlLXVoZHNkaS1yeC1zcy0yLjAiIH0sDQo+ID4gKwl7IH0NCj4gPiArfTsNCj4gPiAr TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgeHNkaXJ4c3Nfb2ZfaWRfdGFibGUpOw0KPiA+ICsNCj4g PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgeHNkaXJ4c3NfZHJpdmVyID0gew0KPiA+ ICsJLmRyaXZlciA9IHsNCj4gPiArCQkubmFtZQkJPSAieGlsaW54LXNkaXJ4c3MiLA0KPiA+ICsJ CS5vZl9tYXRjaF90YWJsZQk9IHhzZGlyeHNzX29mX2lkX3RhYmxlLA0KPiA+ICsJfSwNCj4gPiAr CS5wcm9iZQkJCT0geHNkaXJ4c3NfcHJvYmUsDQo+ID4gKwkucmVtb3ZlCQkJPSB4c2Rpcnhzc19y ZW1vdmUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHhzZGly eHNzX2RyaXZlcik7DQo+ID4gKw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJWaXNoYWwgU2FnYXIgPHZz YWdhckB4aWxpbnguY29tPiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlhpbGlueCBTREkg UnggU3Vic3lzdGVtIERyaXZlciIpOw0KPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xzLmggYi9pbmNs dWRlL3VhcGkvbGludXgvdjRsMi0NCj4gY29udHJvbHMuaA0KPiA+IGluZGV4IDYyMjcxNDE4YzFi ZS4uOTUyNmE2YWNjNmY0IDEwMDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC92NGwy LWNvbnRyb2xzLmgNCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5o DQo+ID4gQEAgLTE5OCw2ICsxOTgsMTIgQEAgZW51bSB2NGwyX2NvbG9yZnggew0KPiA+ICAgKi8N Cj4gPiAgI2RlZmluZSBWNEwyX0NJRF9VU0VSX0FUTUVMX0lTQ19CQVNFDQo+IAkoVjRMMl9DSURf VVNFUl9CQVNFICsgMHgxMGMwKQ0KPiA+DQo+ID4gKy8qDQo+ID4gKyAqIFRoZSBiYXNlIGZvciB0 aGUgWGlsaW54IFNESSBSeCBkcml2ZXIgY29udHJvbHMuDQo+ID4gKyAqIFdlIHJlc2VydmUgMTYg Y29udHJvbHMgZm9yIHRoaXMgZHJpdmVyLg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJ RF9VU0VSX1hJTElOWF9TRElSWF9CQVNFDQo+IAkoVjRMMl9DSURfVVNFUl9CQVNFICsgMHgxMGUw KQ0KPiA+ICsNCj4gPiAgLyogTVBFRy1jbGFzcyBjb250cm9sIElEcyAqLw0KPiA+ICAvKiBUaGUg TVBFRyBjb250cm9scyBhcmUgYXBwbGljYWJsZSB0byBhbGwgY29kZWMgY29udHJvbHMNCj4gPiAg ICogYW5kIHRoZSAnTVBFRycgcGFydCBvZiB0aGUgZGVmaW5lIGlzIGhpc3RvcmljYWwgKi8NCj4g PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3hpbGlueC1zZGlyeHNzLmggYi9pbmNs dWRlL3VhcGkvbGludXgveGlsaW54LQ0KPiBzZGlyeHNzLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWJjYmY1ODUyYjIyDQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC94aWxpbngtc2Rpcnhzcy5oDQo+ID4g QEAgLTAsMCArMSwyODMgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8NCj4gPiArLyoNCj4gPiArICogWGlsaW54IFNE SSBSeCBTdWJzeXN0ZW0gbW9kZSwgZXZlbnQsIGN1c3RvbSB0aW1pbmdzIGFuZA0KPiA+ICsgKiBm bGFnIGRlZmluaXRpb25zLg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSAy MDIwIFhpbGlueCwgSW5jLg0KPiA+ICsgKg0KPiA+ICsgKiBDb250YWN0czogVmlzaGFsIFNhZ2Fy IDx2aXNoYWwuc2FnYXJAeGlsaW54LmNvbT4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVm IF9fVUFQSV9YSUxJTlhfU0RJUlhTU19IX18NCj4gPiArI2RlZmluZSBfX1VBUElfWElMSU5YX1NE SVJYU1NfSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L3Y0bDItY29udHJvbHMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Y0bDIt ZHYtdGltaW5ncy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+DQo+ID4gKw0K PiA+ICsvKg0KPiA+ICsgKiBFdmVudHMNCj4gPiArICoNCj4gPiArICogVjRMMl9FVkVOVF9YSUxJ TlhfU0RJUlhfVU5EX09WUl9GTE9XOiBWaWRlbyBpbiB0byBBWEk0IFN0cmVhbQ0KPiBjb3JlDQo+ ID4gKyAqIHVuZGVyL292ZXJmbG93ZWQgZHVyaW5nIGEgcmVzb2x1dGlvbiBvciBmcmFtZSByYXRl IGNoYW5nZS4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgVjRMMl9FVkVOVF9YSUxJTlhfU0RJUlhf Q0xBU1MNCj4gKFY0TDJfRVZFTlRfUFJJVkFURV9TVEFSVCB8IDB4MjAwKQ0KPiA+ICsjZGVmaW5l IFY0TDJfRVZFTlRfWElMSU5YX1NESVJYX1VORF9PVlJfRkxPVwlcDQo+ID4gKwkJCQkJKFY0TDJf RVZFTlRfWElMSU5YX1NESVJYX0NMQVNTIHwNCj4gMHgxKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBY SUxJTlhfU0RJUlhfVU5ERVJGTE9XX0VWRU5UCUJJVCgxKQ0KPiA+ICsjZGVmaW5lIFhJTElOWF9T RElSWF9PVkVSRkxPV19FVkVOVAlCSVQoMikNCj4gPiArLyoNCj4gPiArICogVGhpcyBlbnVtIGlz IHVzZWQgdG8gcHJlcGFyZSB0aGUgYml0bWFzayBvZiBtb2RlcyB0byBiZSBkZXRlY3RlZA0KPiA+ ICsgKi8NCj4gPiArZW51bSB7DQo+ID4gKwlYU0RJUlhfTU9ERV9TRF9PRkZTRVQgPSAwLA0KPiA+ ICsJWFNESVJYX01PREVfSERfT0ZGU0VULA0KPiA+ICsJWFNESVJYX01PREVfM0dBX09GRlNFVCwN Cj4gPiArCVhTRElSWF9NT0RFXzNHQl9PRkZTRVQsDQo+ID4gKwlYU0RJUlhfTU9ERV82R19PRkZT RVQsDQo+ID4gKwlYU0RJUlhfTU9ERV8xMkdJX09GRlNFVCwNCj4gPiArCVhTRElSWF9NT0RFXzEy R0ZfT0ZGU0VULA0KPiA+ICsJWFNESVJYX01PREVfTlVNX1NVUFBPUlRFRCwNCj4gPiArfTsNCj4g PiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX0RFVEVDVF9BTExfTU9ERVMNCj4gCShCSVQoWFNESVJY X01PREVfU0RfT0ZGU0VUKSB8IFwNCj4gPiArCQkJCQlCSVQoWFNESVJYX01PREVfSERfT0ZGU0VU KSB8IFwNCj4gPiArCQkJCQlCSVQoWFNESVJYX01PREVfM0dBX09GRlNFVCkgfCBcDQo+ID4gKwkJ CQkJQklUKFhTRElSWF9NT0RFXzNHQl9PRkZTRVQpIHwgXA0KPiA+ICsJCQkJCUJJVChYU0RJUlhf TU9ERV82R19PRkZTRVQpIHwgXA0KPiA+ICsJCQkJCUJJVChYU0RJUlhfTU9ERV8xMkdJX09GRlNF VCkgfCBcDQo+ID4gKwkJCQkJQklUKFhTRElSWF9NT0RFXzEyR0ZfT0ZGU0VUKSkNCj4gPiArDQo+ ID4gKy8qDQo+ID4gKyAqIEVESCAtIEVycm9yIERldGVjdGlvbiBhbmQgSGFuZGxpbmcuDQo+ID4g KyAqIEluIHRoZSBTRC1TREkgbW9kZSwgdGhlIFVIRC1TREkgY29yZSBmdWxseSBzdXBwb3J0cyBS UCAxNjUuDQo+ID4gKyAqIFRoZSBiaXRtYXNrIGlzIG5hbWVkIGFzIFhTRElSWF9FREhfRVJSQ05U X1hYX1lZX0VSUiBleGNlcHQNCj4gPiArICogZm9yIHBhY2tldCBjaGVja3N1bSBlcnJvci4NCj4g PiArICoNCj4gPiArICogWFggLSBFREggRXJyb3IgVHlwZXMNCj4gPiArICogQU5DIC0gQW5jaWxs YXJ5IERhdGEgUGFja2V0IEVycm9ycw0KPiA+ICsgKiBGRiAtIEZ1bGwgRmllbGQgRXJyb3JzDQo+ ID4gKyAqIEFQIC0gQWN0aXZlIFBvcnRpb24gRXJyb3JzDQo+ID4gKyAqDQo+ID4gKyAqIFlZIC0g RXJyb3IgRmxhZ3MNCj4gPiArICogRURIIC0gZXJyb3IgZGV0ZWN0ZWQgaGVyZQ0KPiA+ICsgKiBF REEgLSBlcnJvciBEZXRlY3RlZCBhbHJlYWR5DQo+ID4gKyAqIElESCAtIGludGVybmFsIGVycm9y IGRldGVjdGVkIGhlcmUNCj4gPiArICogSURBIC0gaW50ZXJuYWwgZXJyb3IgZGV0ZWN0ZWQgYWxy ZWFkeQ0KPiA+ICsgKiBVRVMgLSB1bmtub3duIGVycm9yIHN0YXR1cw0KPiA+ICsgKg0KPiA+ICsg KiBSZWZlciB0byBTZWMgNC4zIEVycm9yIEZsYWdzIGluIFJQIDE2NS0xOTk0IGZvciBkZXRhaWxz DQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0VSUkNOVF9BTkNfRURI X0VSUgkJQklUKDApDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQU5DX0VEQV9FUlIJ CUJJVCgxKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfRVJSQ05UX0FOQ19JREhfRVJSCQlCSVQo MikNCj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0VSUkNOVF9BTkNfSURBX0VSUgkJQklUKDMpDQo+ ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQU5DX1VFU19FUlIJCUJJVCg0KQ0KPiA+ICsj ZGVmaW5lIFhTRElSWF9FREhfRVJSQ05UX0ZGX0VESF9FUlIJCUJJVCg1KQ0KPiA+ICsjZGVmaW5l IFhTRElSWF9FREhfRVJSQ05UX0ZGX0VEQV9FUlIJCUJJVCg2KQ0KPiA+ICsjZGVmaW5lIFhTRElS WF9FREhfRVJSQ05UX0ZGX0lESF9FUlIJCUJJVCg3KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhf RVJSQ05UX0ZGX0lEQV9FUlIJCUJJVCg4KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfRVJSQ05U X0ZGX1VFU19FUlIJCUJJVCg5KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfRVJSQ05UX0FQX0VE SF9FUlIJCUJJVCgxMCkNCj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0VSUkNOVF9BUF9FREFfRVJS CQlCSVQoMTEpDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQVBfSURIX0VSUgkJQklU KDEyKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfRVJSQ05UX0FQX0lEQV9FUlIJCUJJVCgxMykN Cj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0VSUkNOVF9BUF9VRVNfRVJSCQlCSVQoMTQpDQo+ID4g KyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfUEtUX0NIS1NVTV9FUlIJQklUKDE1KQ0KPiA+ICsN Cj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0FMTEVSUl9NQVNLCQkweEZGRkYNCj4gDQo+IE5pdCwg bG93ZXJjYXNlIGZvciBoZXggdmFsdWVzLg0KPiANCg0KVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4g bmV4dCB2ZXJzaW9uIGFzIEkgcGxhbiB0byByZW1vdmUgRURIIHJlbGF0ZWQgY29udHJvbHMuDQoN Cg0KPiBUaGFua3MhDQo+IC1oeXVuDQo+IA0KDQpSZWdhcmRzDQpWaXNoYWwgU2FnYXINCg0KDQo+ ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBWNEwyIENvbnRyb2xzIC0gV2UgcmVzZXJ2ZWQgMTYgY29u dHJvbHMgZm9yIHRoaXMgZHJpdmVyLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgVjRMMl9DSURfWElM SU5YX1NESVJYX0VESF8qIGNvbnRyb2xzIGFyZSBwcmVzZW50IG9ubHkgaWYNCj4gPiArICogRURI IGlzIGVuYWJsZWQuDQo+ID4gKyAqIFRoZSBjb250cm9scyB3aGljaCBjYW4gYmUgc2V0IHNob3Vs ZCBvbmx5IGJlIHNldCBiZWZvcmUgZW5hYmxpbmcNCj4gPiArICogc3RyZWFtaW5nLiBUaGUgY29u dHJvbHMgd2hpY2ggY2FuIGJlIGdvdCBzaG91bGQgYmUgY2FsbGVkIHdoaWxlDQo+ID4gKyAqIHN0 cmVhbWluZyB0byBnZXQgY29ycmVjdCB2YWx1ZXMuDQo+ID4gKyAqIFRoZSBWNEwyX0NJRF9YSUxJ TlhfU0RJUlhfTU9ERV9ERVRFQ1QgY2FuIGJlIGNhbGxlZCB3aGVuIHF1ZXJ5DQo+IGR2IHRpbWlu Zw0KPiA+ICsgKiByZXR1cm5zIGEgdmFsaWQgdGltaW5nLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4g Ky8qDQo+ID4gKyAqIEZyYW1lciBDb250cm9sIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBmcmFt ZXIuIFdoZW4gdGhpcyBpcyBzZXQsIHRoZQ0KPiBmcmFtZXINCj4gPiArICogYXV0b21hdGljYWxs eSByZWFkanVzdHMgdGhlIG91dHB1dCB3b3JkIGFsaWdubWVudCB0byBtYXRjaCB0aGUNCj4gYWxp Z25tZW50IG9mDQo+ID4gKyAqIGVhY2ggdGltaW5nIHJlZmVyZW5jZSBzaWduYWwoVFJTKS4gTm9y bWFsbHkgdGhpcyBzaG91bGQgYmUgc2V0LiBCdXQgdXNlcg0KPiBtYXkNCj4gPiArICogY29udHJv bCB0aGlzIGlucHV0IHRvIGltcGxlbWVudCBUUlMgZmlsdGVyaW5nIHRvIHByZXZlbnQgYSBzaWdu YWwNCj4gbWlzYWxpZ25lZA0KPiA+ICsgKiBUUlMgZnJvbSBjYXVzaW5nIGVycm9uZW91cyBhbGln bm1lbnQgY2hhbmdlcy4NCj4gPiArICogUmVmZXIgdG8gUEcyMDUgcnhfZnJhbWVfZW4gZm9yIG1v cmUgZGV0YWlscy4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJY X0ZSQU1FUg0KPiAJKFY0TDJfQ0lEX1VTRVJfWElMSU5YX1NESVJYX0JBU0UgKyAxKQ0KPiA+ICsN Cj4gPiArLyoNCj4gPiArICogVmlkZW8gTG9jayBXaW5kb3cgQ29udHJvbCB0byBzZXQgdGhlIHZp ZGVvIGxvY2sgd2luZG93IHZhbHVlDQo+ID4gKyAqIFRoaXMgaXMgdGhlIGFtb3VudCBvZiB0aW1l IHRoZSBtb2RlIGFuZCB0cmFuc3BvcnQgc3RyZWFtIG5lZWQNCj4gPiArICogdG8gYmUgbG9ja2Vk IGJlZm9yZSBhIHZpZGVvIGxvY2sgaW50ZXJydXB0IG9jY3Vycy4NCj4gPiArICovDQo+ID4gKyNk ZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX1ZJRExPQ0tfV0lORE9XDQo+IAkoVjRMMl9DSURf VVNFUl9YSUxJTlhfU0RJUlhfQkFTRSArIDIpDQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBFREgg RXJyb3IgTWFzayBDb250cm9sIHRvIGVuYWJsZSBFREggZXJyb3IgY291bnQNCj4gPiArICogVGhp cyBjb250cm9sIHRha2VzIGluIHRoZSBiaXRtYXNrIG9mIFhTRElSWF9FREhfRVJSQ05UXypfRVJS IHRvDQo+IGVuYWJsZSBjb3VudGluZw0KPiA+ICsgKiBzdWNoIGVycm9ycy4NCj4gPiArICovDQo+ ID4gKyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX0VESF9FUlJPUl9TT1VSQ0VTDQo+IAko VjRMMl9DSURfVVNFUl9YSUxJTlhfU0RJUlhfQkFTRSArIDMpDQo+ID4gKw0KPiA+ICsvKg0KPiA+ ICsgKiBNb2RlIHNlYXJjaCBDb250cm9sIHRvIHBhc3MgdGhlIGJpdCBtYXNrIG9mIG1vZGVzIHRv IGRldGVjdC4NCj4gPiArICogSWYgb25seSAxIGJpdCBpcyBzZXQsIHRoZSBkcml2ZXIgcHJvZ3Jh bXMgSVAgdG8gYmUgaW4gZml4ZWQgbW9kZSBlbHNlDQo+ID4gKyAqIGluIG11bHRpIGRldGVjdGlv biBtb2RlLg0KPiA+ICsgKg0KPiA+ICsgKiBTZXQgdGhpcyB3aGVuIG5vdCBzdHJlYW1pbmcuDQo+ ID4gKyAqDQo+ID4gKyAqIGJpdCAwIHNldCB0byBkZXRlY3QgU0QgIG1vZGUsDQo+ID4gKyAqIGJp dCAxIHNldCB0byBkZXRlY3QgSEQgIG1vZGUsDQo+ID4gKyAqIGJpdCAyIHNldCB0byBkZXRlY3Qg M0dBIG1vZGUsDQo+ID4gKyAqIGJpdCAzIHNldCB0byBkZXRlY3QgM0dCIG1vZGUsDQo+ID4gKyAq IGJpdCA0IHNldCB0byBkZXRlY3QgNkcgIG1vZGUsDQo+ID4gKyAqIGJpdCA1IHNldCB0byBkZXRl Y3QgMTJHIGludGVnZXIgZnJhbWUgcmF0ZSBtb2RlLA0KPiA+ICsgKiBiaXQgNiBzZXQgdG8gZGV0 ZWN0IDEyRyBmcmFjdGlvbmFsIGZyYW1lIHJhdGUgbW9kZSwNCj4gPiArICovDQo+ID4gKyNkZWZp bmUgVjRMMl9DSURfWElMSU5YX1NESVJYX1NFQVJDSF9NT0RFUw0KPiAJKFY0TDJfQ0lEX1VTRVJf WElMSU5YX1NESVJYX0JBU0UgKyA0KQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogR2V0IERldGVj dGVkIFNESSBNb2RlIGNvbnRyb2wgKHJlYWQgb25seSkNCj4gPiArICoNCj4gPiArICogQ29udHJv bCBWYWx1ZSAtIE1vZGUgZGV0ZWN0ZWQNCj4gPiArICogICAgICAgIDAgICAgICAtICAgICBTRA0K PiA+ICsgKiAgICAgICAgMSAgICAgIC0gICAgIEhEDQo+ID4gKyAqICAgICAgICAyICAgICAgLSAg ICAgM0dBDQo+ID4gKyAqICAgICAgICAzICAgICAgLSAgICAgM0dCDQo+ID4gKyAqICAgICAgICA0 ICAgICAgLSAgICAgNkcNCj4gPiArICogICAgICAgIDUgICAgICAtICAgICAxMkcgaW50ZWdlciBm cmFtZSByYXRlDQo+ID4gKyAqICAgICAgICA2ICAgICAgLSAgICAgMTJHIGZyYWN0aW9uYWwgZnJh bWUgcmF0ZQ0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfTU9E RV9ERVRFQ1QNCj4gCShWNEwyX0NJRF9VU0VSX1hJTElOWF9TRElSWF9CQVNFICsgNSkNCj4gPiAr DQo+ID4gKy8qIEdldCBudW1iZXIgb2YgQ1JDIGVycm9ycyBzdGF0dXMgY29udHJvbA0KPiA+ICsg Kg0KPiA+ICsgKiBXaGVuIGEgQ1JDIGlzIGRldGVjdGVkIG9uIGEgbGluZSwgdGhlIENSQyBlcnJv ciBzaWduYWwgb2YgdGhhdCBkYXRhDQo+IHN0cmVhbQ0KPiA+ICsgKiBiZWNvbWVzIGFzc2VydGVk IHN0YXJ0aW5nIGEgZmV3IGNsb2NrIGN5Y2xlcyBhZnRlciB0aGUgbGFzdCBDUkMgd29yZCBpcw0K PiA+ICsgKiBvdXRwdXQgb24gdGhlIGRhdGEgc3RyZWFtIHBvcnRzIGZvbGxvd2luZyB0aGUgRUFW IHRoYXQgZW5kcyB0aGUgbGluZQ0KPiA+ICsgKiBjb250YWluaW5nIHRoZSBlcnJvci4gVGhlIENS QyBzaWduYWwgcmVtYWlucyBhc3NlcnRlZCBmb3Igb25lIGxpbmUgdGltZS4NCj4gPiArICoNCj4g PiArICogVGhlIExTQiAxNiBiaXRzIG9mIHZhbHVlIHJldHVybmVkIGJ5IHRoc2kgY29udHJvbCBy ZXByZXNlbnQgdGhlIGVycm9yDQo+ID4gKyAqIHNpZ25hbCBvbiBlYWNoIG9mIDE2IGRhdGEgc3Ry ZWFtcy4gVGhlIE1TQiAxNiBiaXRzIGNvbnRhaW5zIHRoZQ0KPiBhY2N1bXVsYXRlZA0KPiA+ICsg KiBlcnJvciBjb3VudC4NCj4gPiArICoNCj4gPiArICogUmVmZXIgdG8gUEcyMDUgcnhfY3JjX2Vy cl9kc1ggKFggPSAxIHRvIDE2KSBkZXNjcmlwdGlvbiBmb3IgZGV0YWlscy4NCj4gPiArICovDQo+ ID4gKyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX0NSQw0KPiAJKFY0TDJfQ0lEX1VTRVJf WElMSU5YX1NESVJYX0JBU0UgKyA2KQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogR2V0IEVESCBl cnJvciBjb3VudCBjb250cm9sDQo+ID4gKyAqDQo+ID4gKyAqIFJlYWRpbmcgdGhpcyBjb250cm9s IHdpbGwgZ2l2ZSB0aGUgbnVtYmVyIG9mIEVESCBlcnJvcnMgb2NjdXJyZWQgYmFzZWQNCj4gPiAr ICogb24gdGhlIGJpdG1hc2sgcGFzc2VkIGluDQo+IFY0TDJfQ0lEX1hJTElOWF9TRElSWF9FREhf RVJST1JfU09VUkNFUy4NCj4gPiArICoNCj4gPiArICogSXQgaW5jcmVtZW50cyBvbmNlIHBlciBm aWVsZCB3aGVuIGFueSBvZiB0aGUgZXJyb3IgY29uZGl0aW9ucyBlbmFibGVkIGJ5DQo+ID4gKyAq IHRoZSBSWF9FREhfRVJSQ05UX0VOIHJlZ2lzdGVyIGJpdChzKSBvY2N1ciBkdXJpbmcgdGhhdCBm aWVsZC4NCj4gPiArICoNCj4gPiArICogUmVmZXIgdG8gUEcyMDUgcnhfZWRoX2VycmNudA0KPiA+ ICsgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfRURIX0VSUkNOVA0KPiAJ KFY0TDJfQ0lEX1VTRVJfWElMSU5YX1NESVJYX0JBU0UgKyA3KQ0KPiA+ICsNCj4gPiArLyoNCj4g PiArICogR2V0IEVESCBzdGF0dXMgY29udHJvbA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGNvbnRy b2wgcmV0dXJucyB0aGUgUlhfRURIX1NUUyByZWdpc3RlciBjb250ZW50cy4NCj4gPiArICogUmVm ZXIgdG8gUEcyOTAgcmVnaXN0ZXIgc3BhY2Ugc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLg0KPiA+ ICsgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfRURIX1NUQVRVUw0KPiAJ KFY0TDJfQ0lEX1VTRVJfWElMSU5YX1NESVJYX0JBU0UgKyA4KQ0KPiA+ICsNCj4gPiArLyogR2V0 IFRyYW5zcG9ydCBJbnRlcmxhY2VkIHN0YXR1cyB3aGV0aGVyIGl0IGlzIGludGVybGFjZWQgb3Ig bm90ICovDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX1RTX0lTX0lOVEVSTEFD RUQNCj4gCShWNEwyX0NJRF9VU0VSX1hJTElOWF9TRElSWF9CQVNFICsgOSkNCj4gPiArDQo+ID4g Ky8qDQo+ID4gKyAqIFhpbGlueCBEViB0aW1pbmdzDQo+ID4gKyAqIFRPRE8gLSBSZW1vdmUgdGhl c2Ugb25jZSB0aGV5IGFyZSBpbiB2NGwyLWR2LXRpbWluZ3MuaA0KPiA+ICsgKi8NCj4gPiArI2Rl ZmluZSBYTE5YX1Y0TDJfRFZfQlRfMjA0OFgxMDgwUDI0IHsgXA0KPiA+ICsJLnR5cGUgPSBWNEwy X0RWX0JUXzY1Nl8xMTIwLCBcDQo+ID4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUygyMDQ4LCAxMDgw LCAwLCBcDQo+ID4gKwkJVjRMMl9EVl9IU1lOQ19QT1NfUE9MIHwgVjRMMl9EVl9WU1lOQ19QT1Nf UE9MLCBcDQo+ID4gKwkJNzQyNTAwMDAsIDUxMCwgNDQsIDE0OCwgNCwgNSwgMzYsIDAsIDAsIDAs IFwNCj4gPiArCQlWNEwyX0RWX0JUX1NURF9TREkpIFwNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBYTE5YX1Y0TDJfRFZfQlRfMjA0OFgxMDgwUDI1IHsgXA0KPiA+ICsJLnR5cGUgPSBWNEwy X0RWX0JUXzY1Nl8xMTIwLCBcDQo+ID4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUygyMDQ4LCAxMDgw LCAwLCBcDQo+ID4gKwkJVjRMMl9EVl9IU1lOQ19QT1NfUE9MIHwgVjRMMl9EVl9WU1lOQ19QT1Nf UE9MLCBcDQo+ID4gKwkJNzQyNTAwMDAsIDQwMCwgNDQsIDE0OCwgNCwgNSwgMzYsIDAsIDAsIDAs IFwNCj4gPiArCQlWNEwyX0RWX0JUX1NURF9TREkpIFwNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBYTE5YX1Y0TDJfRFZfQlRfMjA0OFgxMDgwUDMwIHsgXA0KPiA+ICsJLnR5cGUgPSBWNEwy X0RWX0JUXzY1Nl8xMTIwLCBcDQo+ID4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUygyMDQ4LCAxMDgw LCAwLCBcDQo+ID4gKwkJVjRMMl9EVl9IU1lOQ19QT1NfUE9MIHwgVjRMMl9EVl9WU1lOQ19QT1Nf UE9MLCBcDQo+ID4gKwkJNzQyNTAwMDAsIDY2LCAyMCwgNjYsIDQsIDUsIDM2LCAwLCAwLCAwLCBc DQo+ID4gKwkJVjRMMl9EVl9CVF9TVERfU0RJKSBcDQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZp bmUgWExOWF9WNEwyX0RWX0JUXzIwNDhYMTA4MEk0OCB7IFwNCj4gPiArCS50eXBlID0gVjRMMl9E Vl9CVF82NTZfMTEyMCwgXA0KPiA+ICsJVjRMMl9JTklUX0JUX1RJTUlOR1MoMjA0OCwgMTA4MCwg MSwgXA0KPiA+ICsJCVY0TDJfRFZfSFNZTkNfUE9TX1BPTCB8IFY0TDJfRFZfVlNZTkNfUE9TX1BP TCwgXA0KPiA+ICsJCTc0MjUwMDAwLCAzMjksIDQ0LCAzMjksIDIsIDUsIDE1LCAzLCA1LCAxNSwg XA0KPiA+ICsJCVY0TDJfRFZfQlRfU1REX1NESSkgXA0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjZGVm aW5lIFhMTlhfVjRMMl9EVl9CVF8yMDQ4WDEwODBJNTAgeyBcDQo+ID4gKwkudHlwZSA9IFY0TDJf RFZfQlRfNjU2XzExMjAsIFwNCj4gPiArCVY0TDJfSU5JVF9CVF9USU1JTkdTKDIwNDgsIDEwODAs IDEsIFwNCj4gPiArCQlWNEwyX0RWX0hTWU5DX1BPU19QT0wgfCBWNEwyX0RWX1ZTWU5DX1BPU19Q T0wsIFwNCj4gPiArCQk3NDI1MDAwMCwgMjc0LCA0NCwgMjc0LCAyLCA1LCAxNSwgMywgNSwgMTUs IFwNCj4gPiArCQlWNEwyX0RWX0JUX1NURF9TREkpIFwNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBYTE5YX1Y0TDJfRFZfQlRfMjA0OFgxMDgwSTYwIHsgXA0KPiA+ICsJLnR5cGUgPSBWNEwy X0RWX0JUXzY1Nl8xMTIwLCBcDQo+ID4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUygyMDQ4LCAxMDgw LCAxLCBcDQo+ID4gKwkJVjRMMl9EVl9IU1lOQ19QT1NfUE9MIHwgVjRMMl9EVl9WU1lOQ19QT1Nf UE9MLCBcDQo+ID4gKwkJNzQyNTAwMDAsIDY2LCAyMCwgNjYsIDIsIDUsIDE1LCAzLCA1LCAxNSwg XA0KPiA+ICsJCVY0TDJfRFZfQlRfU1REX1NESSkgXA0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjZGVm aW5lIFhMTlhfVjRMMl9EVl9CVF8yMDQ4WDEwODBQNDggeyBcDQo+ID4gKwkudHlwZSA9IFY0TDJf RFZfQlRfNjU2XzExMjAsIFwNCj4gPiArCVY0TDJfSU5JVF9CVF9USU1JTkdTKDIwNDgsIDEwODAs IDAsIFwNCj4gPiArCQlWNEwyX0RWX0hTWU5DX1BPU19QT0wgfCBWNEwyX0RWX1ZTWU5DX1BPU19Q T0wsIFwNCj4gPiArCQkxNDg1MDAwMDAsIDUxMCwgNDQsIDE0OCwgNCwgNSwgMzYsIDAsIDAsIDAs IFwNCj4gPiArCQlWNEwyX0RWX0JUX1NURF9TREkpIFwNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBYTE5YX1Y0TDJfRFZfQlRfMjA0OFgxMDgwUDUwIHsgXA0KPiA+ICsJLnR5cGUgPSBWNEwy X0RWX0JUXzY1Nl8xMTIwLCBcDQo+ID4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUygyMDQ4LCAxMDgw LCAwLCBcDQo+ID4gKwkJVjRMMl9EVl9IU1lOQ19QT1NfUE9MIHwgVjRMMl9EVl9WU1lOQ19QT1Nf UE9MLCBcDQo+ID4gKwkJMTQ4NTAwMDAwLCA0MDAsIDQ0LCAxNDgsIDQsIDUsIDM2LCAwLCAwLCAw LCBcDQo+ID4gKwkJVjRMMl9EVl9CVF9TVERfU0RJKSBcDQo+ID4gK30NCj4gPiArDQo+ID4gKyNk ZWZpbmUgWExOWF9WNEwyX0RWX0JUXzIwNDhYMTA4MFA2MCB7IFwNCj4gPiArCS50eXBlID0gVjRM Ml9EVl9CVF82NTZfMTEyMCwgXA0KPiA+ICsJVjRMMl9JTklUX0JUX1RJTUlOR1MoMjA0OCwgMTA4 MCwgMCwgXA0KPiA+ICsJCVY0TDJfRFZfSFNZTkNfUE9TX1BPTCB8IFY0TDJfRFZfVlNZTkNfUE9T X1BPTCwgXA0KPiA+ICsJCTE0ODUwMDAwMCwgODgsIDQ0LCAyMCwgNCwgNSwgMzYsIDAsIDAsIDAs IFwNCj4gPiArCQlWNEwyX0RWX0JUX1NURF9TREkpIFwNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBYTE5YX1Y0TDJfRFZfQlRfMTkyMFgxMDgwSTQ4IHsgXA0KPiA+ICsJLnR5cGUgPSBWNEwy X0RWX0JUXzY1Nl8xMTIwLCBcDQo+ID4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUygxOTIwLCAxMDgw LCAxLCBcDQo+ID4gKwkJVjRMMl9EVl9IU1lOQ19QT1NfUE9MIHwgVjRMMl9EVl9WU1lOQ19QT1Nf UE9MLCBcDQo+ID4gKwkJMTQ4NTAwMDAwLCAzNzEsIDg4LCAzNzEsIDIsIDUsIDE1LCAzLCA1LCAx NSwgXA0KPiA+ICsJCVY0TDJfRFZfQlRfU1REX1NESSkgXA0KPiA+ICt9DQo+ID4gKw0KPiA+ICsj ZW5kaWYgLyogX19VQVBJX1hJTElOWF9TRElSWFNTX0hfXyAqLw0KPiA+IC0tDQo+ID4gMi4yMS4w DQo+ID4NCj4gPg0K