From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 441E0A04DC; Tue, 20 Oct 2020 16:06:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E1888BE11; Tue, 20 Oct 2020 16:04:34 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 49176BE11 for ; Tue, 20 Oct 2020 16:04:32 +0200 (CEST) IronPort-SDR: 6L3CwpRYgYfDD1WCkWKJdxCIbZ0QjCP99UHEMi55yMIxkHWzy5h/Car3IZkU8P+x13DWktxmmM szXWEYVnGFtQ== X-IronPort-AV: E=McAfee;i="6000,8403,9779"; a="167330356" X-IronPort-AV: E=Sophos;i="5.77,397,1596524400"; d="scan'208";a="167330356" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Oct 2020 07:04:30 -0700 IronPort-SDR: tp+DWuuDwdB145XLLZelVNK09gbvfThFVG6OJpGx7c+8iBgmwl3m0CPUJghyO9hVZ9LW2kcsPM 8XJgmQOq+vbQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,397,1596524400"; d="scan'208";a="533071876" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga005.jf.intel.com with ESMTP; 20 Oct 2020 07:04:29 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 20 Oct 2020 07:04:28 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 20 Oct 2020 07:04:28 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.104) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 20 Oct 2020 07:04:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DLWRY7axbckfZxImccQ1ZLt/yDHBi/PWaY+UaA5JmYMvr0reGmF4QgF3ra+FALu+JA3EsuTMstr3I/eOY6YooMY/XBa8j3S6X61Cc/e+PsWYjXl2i2u8SUYs8J5NJmekd98geMPaRb3MAuaFaVBECmdYgGJ0Yj4ubaDbi+e2dVdbdm/CIRBSrtQcsRgRSz+717KUrbnKGZ/tWyZoFW9ZOCp6eO4AofMplpfYuialaBB0LE5wyFFk0Nt8TCqz8ktfVI+oGlqCei9aq586Kv9BGxZ02rNYes0sNKMds/Mjp8xYp5idkQFoP3tgnHx+73uUu7lSR/9JsXAAy+EugjqJmQ== 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=qoIcLELIPF9/aE2pHSq+t+EjZqInQ/BujyCNgkfzysc=; b=izbh3Plh47jAX+tJvTRUfawJX6gjrRigizRe/w0sIU1y1ScI7+xxS+m44SIRwW7BpaoDpslh0ZZhFziMpyR5Uz6c+J94K6GWDOpfPntNpiLsxZjhOzPKgtaPsWfkKcEUkqYSDPrNBE6mBujqsr88ZSFHF/pxSiYXqPbcVt1c9izbLan0/e5icUvAG+04/gPu4p8zIJbZmGeaCfKF6l4rD69kGwzTwPbJNqNRglb45yhw82nleaptaGknz/gC72vHmhnViv1d5+q95AlHfy8uTltOP9QA0S0nHk1VapeUF5vjzKH4w7VIN8ORh3o+S51sARe5ifmH25Sly6YMprxc7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qoIcLELIPF9/aE2pHSq+t+EjZqInQ/BujyCNgkfzysc=; b=hEtHMUMP1ZI57DWnSQByVZtLyopK4hNwt+YHZYu5MCGV7Semy9XpQQsEby4QGxc8XhQbBPa/PT5NqbG64onYx88RgYVM4iPR7Ia1+I+4jndV6ndedEdXp9Gs9/2iUB5MzI8LOuGareWfjT4Ar8px+KxudySyx/eakWZ3i07WRlM= Received: from SN6PR11MB3103.namprd11.prod.outlook.com (2603:10b6:805:d7::13) by SN6PR11MB3423.namprd11.prod.outlook.com (2603:10b6:805:db::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21; Tue, 20 Oct 2020 14:04:23 +0000 Received: from SN6PR11MB3103.namprd11.prod.outlook.com ([fe80::41fb:70e6:6102:a616]) by SN6PR11MB3103.namprd11.prod.outlook.com ([fe80::41fb:70e6:6102:a616%7]) with mapi id 15.20.3477.028; Tue, 20 Oct 2020 14:04:23 +0000 From: "McDaniel, Timothy" To: Jerin Jacob CC: "Burakov, Anatoly" , dpdk-dev , "Carrillo, Erik G" , "Eads, Gage" , "Van Haaren, Harry" , Jerin Jacob Thread-Topic: [dpdk-dev] [PATCH v2 06/22] event/dlb2: add probe Thread-Index: AQHWpSpfLLlXv1T/b0iLSkpl8uaLUKmgiVbQ Date: Tue, 20 Oct 2020 14:04:23 +0000 Message-ID: References: <1599855987-25976-2-git-send-email-timothy.mcdaniel@intel.com> <1602958879-8558-1-git-send-email-timothy.mcdaniel@intel.com> <1602958879-8558-7-git-send-email-timothy.mcdaniel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [162.251.9.49] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6d93e9fd-4d3f-4f88-35ef-08d875010c35 x-ms-traffictypediagnostic: SN6PR11MB3423: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:287; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: D08rpS4Z34pCs4SwMKvw9gLM9ZOL3MUWbmrvB3WyEfsawuczH+namcv4f+mxgRr77ahIbogoIvypcvK71yifBN2e987ceeK81QwZqhPg1b+C/oDsN5FZn+SgKS1beNn4THBxauoKWlL538wwBor5TansIAJAdxKgmZIBlBgEBwzFDqRxjXkXgt5WNamfcMlU9funKK7H5jZviLqNC0Ez0p6aFmWZOj2FFyiOhSVIYxzWrHQEzTC61WA4i2Dby6qw318isVDizlmBVC6Ius+wsqWL9e75jmQJo47fUS21kKZNivBjU0AauB8vBXTMAk5oG6SSLZ02niZWNRDCjoigX8EFKxCEnqhRMNvmmtSn5HR9Ige4NKFNWHCYJBwsvCzj x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3103.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(396003)(366004)(346002)(376002)(136003)(83380400001)(8676002)(54906003)(5660300002)(55016002)(6506007)(66476007)(66556008)(64756008)(186003)(4326008)(53546011)(76116006)(66946007)(52536014)(316002)(7696005)(478600001)(9686003)(66446008)(6916009)(33656002)(8936002)(71200400001)(86362001)(30864003)(2906002)(26005)(579004)(569008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: p2UyxfFYWGNUZ66tZgo8PFu+SzijM5BtMm+xN/3Q/XPjxtBP2EnitsZsm9X4e/y/CWtYdB+W7oPdwoGa1/9p9p/NtZrjS3lKxr62zAiRhCJejfH+4dyjWXJLYJGiQhVoysqhsVxadys8q3naAMaX9umEWXukEy9GIJ9FwQ9W7lA3BW4RlWj+fCYwKoLIRCRi/Idgb3hhYN+95MQ69zapbmfqWLzqcbSVd1HMdUv7TuweBNYC6BxwDnO6z7ojowVHkUJmFgmlzm79MqWqvPnUvKqr0GwCgt0rVZC94yBalmyMz1Xt0En3fQ32B//g55M4zSpvQuXsvste44d2LiXv/6ZIo1XJUsqwBf5qfiqMGU5t9keiNuR12Af469UEgXw6UWneqIuiZs56LJXO/VEZul2Bmn4Dbg37tVeMZCn0vfr6aGEwmS+QhCair1fB6xjHVaR5EN5ztrTeL5UeSZURZ6gkpKPCkdN1H4B9Pqgvt8f0BdYR1QMip3M5D+kG7ZEmrThcBaiKJI4racBw0YTwepKUCOB4dQrkFjDdS9j96WhupBEG4wJt+oakG0RDzxfEyads8yjHTtORgofpGycYqhuv2CPSSekq9i2F22kgcR2JzL7xkYlhZJVazyoG7gPWSNqVsW3KgqtZqxBz04pQ2g== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3103.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d93e9fd-4d3f-4f88-35ef-08d875010c35 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2020 14:04:23.0627 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NWsCoEOBvNDWZYOa6/l3sYNSVC6qGVPKfwVwAJJG4UVSWWosAyQHeQvruIs1p1+EY69uOqkSprN4/wD41g9nZEEzB7BXeAesqTydN+ID7CA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3423 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v2 06/22] event/dlb2: add probe X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmVyaW4gSmFjb2IgPGpl cmluamFjb2JrQGdtYWlsLmNvbT4NCj4gU2VudDogU3VuZGF5LCBPY3RvYmVyIDE4LCAyMDIwIDM6 NDAgQU0NCj4gVG86IE1jRGFuaWVsLCBUaW1vdGh5IDx0aW1vdGh5Lm1jZGFuaWVsQGludGVsLmNv bT4NCj4gQ2M6IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+OyBk cGRrLWRldiA8ZGV2QGRwZGsub3JnPjsNCj4gQ2FycmlsbG8sIEVyaWsgRyA8RXJpay5HLkNhcnJp bGxvQGludGVsLmNvbT47IEVhZHMsIEdhZ2UNCj4gPGdhZ2UuZWFkc0BpbnRlbC5jb20+OyBWYW4g SGFhcmVuLCBIYXJyeSA8aGFycnkudmFuLmhhYXJlbkBpbnRlbC5jb20+Ow0KPiBKZXJpbiBKYWNv YiA8amVyaW5qQG1hcnZlbGwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0gg djIgMDYvMjJdIGV2ZW50L2RsYjI6IGFkZCBwcm9iZQ0KPiANCj4gT24gU2F0LCBPY3QgMTcsIDIw MjAgYXQgMTE6NTIgUE0gVGltb3RoeSBNY0RhbmllbA0KPiA8dGltb3RoeS5tY2RhbmllbEBpbnRl bC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gVGhlIERMQjIgaGFyZHdhcmUgaXMgYSBQQ0kgZGV2aWNl LiBUaGlzIGNvbW1pdCBhZGRzDQo+ID4gc3VwcG9ydCBmb3IgcHJvYmUgYW5kIG90aGVyIGluaXRp YWxpemF0aW9uLiBUaGUNCj4gPiBkbGIyX2lmYWNlLltjaF0gZmlsZXMgaW1wbGVtZW50IGEgZmxl eGlibGUgaW50ZXJmYWNlDQo+ID4gdGhhdCBzdXBwb3J0cyBib3RoIHRoZSBQRiBQTUQgYW5kIHRo ZSBiaWZ1cmNhdGVkIFBNRC4NCj4gPiBUaGUgYmlmdXJjYXRlZCBQTUQgd2lsbCBiZSByZWxlYXNl ZCBpbiBhIGZ1dHVyZQ0KPiA+IHBhdGNoIHNldC4gTm90ZSB0aGF0IHRoZSBmbGV4aWJsZSBpbnRl cmZhY2UgaXMgb25seQ0KPiA+IHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24sIGFuZCBpcyBub3QgdXNl ZCBpbiB0aGUgZGF0YQ0KPiA+IHBhdGguIFRoZSBzaGFyZWQgY29kZSBpcyBhZGRlZCBpbiBwZi9i YXNlLg0KPiA+IFRoaXMgUE1EIHN1cHBvcnRzIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLCBhbmQg dGhvc2UNCj4gPiBhcmUgcGFyc2VkIGF0IHByb2JlLXRpbWUuDQo+ID4NCj4gPiBTaWduZWQtb2Zm LWJ5OiBUaW1vdGh5IE1jRGFuaWVsIDx0aW1vdGh5Lm1jZGFuaWVsQGludGVsLmNvbT4NCj4gDQo+ IA0KPiANCj4gVGhlcmUgaXMgYSBidWlsZCBpc3N1ZSBjbGFuZzEwLg0KPiANCj4gW2Zvci1tYWlu XWRlbGxbZHBkay1uZXh0LWV2ZW50ZGV2XSAkIGNsYW5nIC12DQo+IGNsYW5nIHZlcnNpb24gMTAu MC4xDQo+IFRhcmdldDogeDg2XzY0LXBjLWxpbnV4LWdudQ0KPiBUaHJlYWQgbW9kZWw6IHBvc2l4 DQo+IEluc3RhbGxlZERpcjogL3Vzci9iaW4NCj4gRm91bmQgY2FuZGlkYXRlIEdDQyBpbnN0YWxs YXRpb246IC91c3IvYmluLy4uL2xpYi9nY2MveDg2XzY0LXBjLWxpbnV4LQ0KPiBnbnUvMTAuMi4w DQo+IEZvdW5kIGNhbmRpZGF0ZSBHQ0MgaW5zdGFsbGF0aW9uOiAvdXNyL2Jpbi8uLi9saWIvZ2Nj L3g4Nl82NC1wYy1saW51eC1nbnUvOC40LjANCj4gRm91bmQgY2FuZGlkYXRlIEdDQyBpbnN0YWxs YXRpb246DQo+IC91c3IvYmluLy4uL2xpYjY0L2djYy94ODZfNjQtcGMtbGludXgtZ251LzEwLjIu MA0KPiBGb3VuZCBjYW5kaWRhdGUgR0NDIGluc3RhbGxhdGlvbjoNCj4gL3Vzci9iaW4vLi4vbGli NjQvZ2NjL3g4Nl82NC1wYy1saW51eC1nbnUvOC40LjANCj4gRm91bmQgY2FuZGlkYXRlIEdDQyBp bnN0YWxsYXRpb246IC91c3IvbGliL2djYy94ODZfNjQtcGMtbGludXgtZ251LzEwLjIuMA0KPiBG b3VuZCBjYW5kaWRhdGUgR0NDIGluc3RhbGxhdGlvbjogL3Vzci9saWIvZ2NjL3g4Nl82NC1wYy1s aW51eC1nbnUvOC40LjANCj4gRm91bmQgY2FuZGlkYXRlIEdDQyBpbnN0YWxsYXRpb246IC91c3Iv bGliNjQvZ2NjL3g4Nl82NC1wYy1saW51eC1nbnUvMTAuMi4wDQo+IEZvdW5kIGNhbmRpZGF0ZSBH Q0MgaW5zdGFsbGF0aW9uOiAvdXNyL2xpYjY0L2djYy94ODZfNjQtcGMtbGludXgtZ251LzguNC4w DQo+IFNlbGVjdGVkIEdDQyBpbnN0YWxsYXRpb246IC91c3IvYmluLy4uL2xpYjY0L2djYy94ODZf NjQtcGMtbGludXgtZ251LzEwLjIuMA0KPiBDYW5kaWRhdGUgbXVsdGlsaWI6IC47QG02NA0KPiBD YW5kaWRhdGUgbXVsdGlsaWI6IDMyO0BtMzINCj4gU2VsZWN0ZWQgbXVsdGlsaWI6IC47QG02NA0K PiANCj4gbWVzb24gIC1EZXhhbXBsZXM9bDNmd2QgLS1idWlsZHR5cGU9ZGVidWdvcHRpbWl6ZWQg LS13ZXJyb3INCj4gLS1kZWZhdWx0LWxpYnJhcnk9c3RhdGljIC9leHBvcnQvZHBkay1uZXh0LWV2 ZW50ZGV2L2RldnRvb2xzLy4uDQo+IC4vYnVpbGQtY2xhbmctc3RhdGljDQo+IA0KPiANCj4gDQo+ IGNjYWNoZSBjbGFuZyAtSWRyaXZlcnMvbGlidG1wX3J0ZV9wbWRfZGxiMl9ldmVudC5hLnAgLUlk cml2ZXJzDQo+IC1JLi4vZHJpdmVycyAtSWRyaXZlcnMvZXZlbnQvZGxiMiAtSS4uL2RyaXZlcnMv ZXZlbnQvZGxiMg0KPiAtSWxpYi9saWJydGVfZXZlbnRkZXYgLUkuLi9saWIvbGlicnRlX2V2ZW50 ZGV2IC1JLiAtSS4uIC1JY29uZmlnDQo+IC1JLi4vY29uZmlnIC1JbGliL2xpYnJ0ZV9lYWwvaW5j bHVkZSAtSS4uL2xpYi9saWJydGVfZQ0KPiBhbC9pbmNsdWRlIC1JbGliL2xpYnJ0ZV9lYWwvbGlu dXgvaW5jbHVkZQ0KPiAtSS4uL2xpYi9saWJydGVfZWFsL2xpbnV4L2luY2x1ZGUgLUlsaWIvbGli cnRlX2VhbC94ODYvaW5jbHVkZQ0KPiAtSS4uL2xpYi9saWJydGVfZWFsL3g4Ni9pbmNsdWRlIC1J bGliL2xpYnJ0ZV9lYWwvY29tbW9uDQo+IC1JLi4vbGliL2xpYnJ0ZV9lYWwvY29tbW9uIC1JbGli L2xpYnJ0ZV9lYWwgLUkuLi9saWIvbGlicnRlX2VhbA0KPiAtSWxpYi9saWJydGVfa3YNCj4gYXJn cyAtSS4uL2xpYi9saWJydGVfa3ZhcmdzIC1JbGliL2xpYnJ0ZV9tZXRyaWNzDQo+IC1JLi4vbGli L2xpYnJ0ZV9tZXRyaWNzIC1JbGliL2xpYnJ0ZV90ZWxlbWV0cnkNCj4gLUkuLi9saWIvbGlicnRl X3RlbGVtZXRyeSAtSWxpYi9saWJydGVfcmluZyAtSS4uL2xpYi9saWJydGVfcmluZw0KPiAtSWxp Yi9saWJydGVfZXRoZGV2IC1JLi4vbGliL2xpYnJ0ZV9ldGhkZXYgLUlsaWIvbGlicnRlX25ldA0K PiAtSS4uL2xpYi9saWJydGVfbmV0DQo+ICAtSWxpYi9saWJydGVfbWJ1ZiAtSS4uL2xpYi9saWJy dGVfbWJ1ZiAtSWxpYi9saWJydGVfbWVtcG9vbA0KPiAtSS4uL2xpYi9saWJydGVfbWVtcG9vbCAt SWxpYi9saWJydGVfbWV0ZXIgLUkuLi9saWIvbGlicnRlX21ldGVyDQo+IC1JbGliL2xpYnJ0ZV9o YXNoIC1JLi4vbGliL2xpYnJ0ZV9oYXNoIC1JbGliL2xpYnJ0ZV90aW1lcg0KPiAtSS4uL2xpYi9s aWJydGVfdGltZXIgLUlsaWIvbGlicnRlX2NyeXB0b2RldiAtSS4uL2xpYi9saQ0KPiBicnRlX2Ny eXB0b2RldiAtSWxpYi9saWJydGVfcGNpIC1JLi4vbGliL2xpYnJ0ZV9wY2kgLUlkcml2ZXJzL2J1 cy9wY2kNCj4gLUkuLi9kcml2ZXJzL2J1cy9wY2kgLUkuLi9kcml2ZXJzL2J1cy9wY2kvbGludXgg LVhjbGFuZw0KPiAtZmNvbG9yLWRpYWdub3N0aWNzIC1waXBlIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9 NjQgLVdhbGwgLVdpbnZhbGlkLXBjaA0KPiAtV2Vycm9yIC1PMiAtZyAtaW5jbHVkZSBydGVfY29u ZmlnLmggLVdleHRyYQ0KPiAtV2Nhc3QtcXVhbCAtV2RlcHJlY2F0ZWQgLVdmb3JtYXQtbm9ubGl0 ZXJhbCAtV2Zvcm1hdC1zZWN1cml0eQ0KPiAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XbWlzc2lu Zy1wcm90b3R5cGVzIC1XbmVzdGVkLWV4dGVybnMNCj4gLVdvbGQtc3R5bGUtZGVmaW5pdGlvbiAt V3BvaW50ZXItYXJpdGggLVdzaWduLWNvbXBhcmUNCj4gLVdzdHJpY3QtcHJvdG90eXBlcyAtV3Vu ZGVmIC1Xd3JpdGUtc3RyaW5ncyAtV25vLWFkZHJlc3Mtb2YtcGENCj4gY2tlZC1tZW1iZXIgLVdu by1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtRF9HTlVfU09VUkNFIC1mUElDDQo+IC1tYXJj aD1uYXRpdmUgLURBTExPV19FWFBFUklNRU5UQUxfQVBJIC1EQUxMT1dfSU5URVJOQUxfQVBJIC1N RCAtDQo+IE1RDQo+IGRyaXZlcnMvbGlidG1wX3J0ZV9wbWRfZGxiMl9ldmVudC5hLnAvZXZlbnRf ZGxiMl9wZl9kbGIyX3BmLmMubyAtTUYNCj4gZHJpdmVycy9saWJ0bXBfcnRlX3BtZF9kbGIyX2V2 ZW50LmEucC9ldg0KPiBlbnRfZGxiMl9wZl9kbGIyX3BmLmMuby5kIC1vDQo+IGRyaXZlcnMvbGli dG1wX3J0ZV9wbWRfZGxiMl9ldmVudC5hLnAvZXZlbnRfZGxiMl9wZl9kbGIyX3BmLmMubyAtYw0K PiAuLi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvZGxiMl9wZi5jDQo+IEluIGZpbGUgaW5jbHVkZWQg ZnJvbSAuLi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvZGxiMl9wZi5jOjM2Og0KPiAuLi9kcml2ZXJz L2V2ZW50L2RsYjIvcGYvLi4vZGxiMl9pbmxpbmVfZm5zLmg6NDU6MjogZXJyb3I6IHVzZSBvZg0K PiB1bmtub3duIGJ1aWx0aW4gJ19fYnVpbHRpbl9pYTMyX21vdm50ZHEnDQo+IFstV2ltcGxpY2l0 LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQ0KPiAgICAgICAgIF9fYnVpbHRpbl9pYTMyX21vdm50ZHEo KF9fdjJkaSAqKXBwX2FkZHIgKyAwLCAoX192MmRpKXNyY19kYXRhMCk7DQo+ICAgICAgICAgXg0K PiAuLi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvLi4vZGxiMl9pbmxpbmVfZm5zLmg6NDU6Mjogbm90 ZTogZGlkIHlvdSBtZWFuDQo+ICdfX2J1aWx0aW5faWEzMl9tb3ZudHEnPw0KPiAvdXNyL2xpYi9j bGFuZy8xMC4wLjEvaW5jbHVkZS94bW1pbnRyaW4uaDoyMTIyOjM6IG5vdGU6DQo+ICdfX2J1aWx0 aW5faWEzMl9tb3ZudHEnIGRlY2xhcmVkIGhlcmUNCj4gICBfX2J1aWx0aW5faWEzMl9tb3ZudHEo X19wLCBfX2EpOw0KPiAgIF4NCj4gSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL2RyaXZlcnMvZXZl bnQvZGxiMi9wZi9kbGIyX3BmLmM6MzY6DQo+IC4uL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi8uLi9k bGIyX2lubGluZV9mbnMuaDo2MToyOiBlcnJvcjogdXNlIG9mDQo+IHVua25vd24gYnVpbHRpbiAn X19idWlsdGluX2lhMzJfbW92bnRkcScNCj4gWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRp b25dDQo+ICAgICAgICAgX19idWlsdGluX2lhMzJfbW92bnRkcSgoX192MmRpICopcHBfYWRkciwg KF9fdjJkaSlzcmNfZGF0YTApOw0KPiAgICAgICAgIF4NCj4gMiBlcnJvcnMgZ2VuZXJhdGVkLg0K PiBbMjEyNC8yNDc5XSBDb21waWxpbmcgQyBvYmplY3QNCj4gZHJpdmVycy9saWJ0bXBfcnRlX3Bt ZF9kbGIyX2V2ZW50LmEucC9ldmVudF9kbGIyX2RsYjIuYy5vDQo+IEZBSUxFRDogZHJpdmVycy9s aWJ0bXBfcnRlX3BtZF9kbGIyX2V2ZW50LmEucC9ldmVudF9kbGIyX2RsYjIuYy5vDQo+IGNjYWNo ZSBjbGFuZyAtSWRyaXZlcnMvbGlidG1wX3J0ZV9wbWRfZGxiMl9ldmVudC5hLnAgLUlkcml2ZXJz DQo+IC1JLi4vZHJpdmVycyAtSWRyaXZlcnMvZXZlbnQvZGxiMiAtSS4uL2RyaXZlcnMvZXZlbnQv ZGxiMg0KPiAtSWxpYi9saWJydGVfZXZlbnRkZXYgLUkuLi9saWIvbGlicnRlX2V2ZW50ZGV2IC1J LiAtSS4uIC1JY29uZmlnDQo+IC1JLi4vY29uZmlnIC1JbGliL2xpYnJ0ZV9lYWwvaW5jbHVkZSAt SS4uL2xpYi9saWJydGVfZQ0KPiBhbC9pbmNsdWRlIC1JbGliL2xpYnJ0ZV9lYWwvbGludXgvaW5j bHVkZQ0KPiAtSS4uL2xpYi9saWJydGVfZWFsL2xpbnV4L2luY2x1ZGUgLUlsaWIvbGlicnRlX2Vh bC94ODYvaW5jbHVkZQ0KPiAtSS4uL2xpYi9saWJydGVfZWFsL3g4Ni9pbmNsdWRlIC1JbGliL2xp YnJ0ZV9lYWwvY29tbW9uDQo+IC1JLi4vbGliL2xpYnJ0ZV9lYWwvY29tbW9uIC1JbGliL2xpYnJ0 ZV9lYWwgLUkuLi9saWIvbGlicnRlX2VhbA0KPiAtSWxpYi9saWJydGVfa3YNCj4gYXJncyAtSS4u L2xpYi9saWJydGVfa3ZhcmdzIC1JbGliL2xpYnJ0ZV9tZXRyaWNzDQo+IC1JLi4vbGliL2xpYnJ0 ZV9tZXRyaWNzIC1JbGliL2xpYnJ0ZV90ZWxlbWV0cnkNCj4gLUkuLi9saWIvbGlicnRlX3RlbGVt ZXRyeSAtSWxpYi9saWJydGVfcmluZyAtSS4uL2xpYi9saWJydGVfcmluZw0KPiAtSWxpYi9saWJy dGVfZXRoZGV2IC1JLi4vbGliL2xpYnJ0ZV9ldGhkZXYgLUlsaWIvbGlicnRlX25ldA0KPiAtSS4u L2xpYi9saWJydGVfbmV0DQo+ICAtSWxpYi9saWJydGVfbWJ1ZiAtSS4uL2xpYi9saWJydGVfbWJ1 ZiAtSWxpYi9saWJydGVfbWVtcG9vbA0KPiAtSS4uL2xpYi9saWJydGVfbWVtcG9vbCAtSWxpYi9s aWJydGVfbWV0ZXIgLUkuLi9saWIvbGlicnRlX21ldGVyDQo+IC1JbGliL2xpYnJ0ZV9oYXNoIC1J Li4vbGliL2xpYnJ0ZV9oYXNoIC1JbGliL2xpYnJ0ZV90aW1lcg0KPiAtSS4uL2xpYi9saWJydGVf dGltZXIgLUlsaWIvbGlicnRlX2NyeXB0b2RldiAtSS4uL2xpYi9saQ0KPiBicnRlX2NyeXB0b2Rl diAtSWxpYi9saWJydGVfcGNpIC1JLi4vbGliL2xpYnJ0ZV9wY2kgLUlkcml2ZXJzL2J1cy9wY2kN Cj4gLUkuLi9kcml2ZXJzL2J1cy9wY2kgLUkuLi9kcml2ZXJzL2J1cy9wY2kvbGludXggLVhjbGFu Zw0KPiAtZmNvbG9yLWRpYWdub3N0aWNzIC1waXBlIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLVdh bGwgLVdpbnZhbGlkLXBjaA0KPiAtV2Vycm9yIC1PMiAtZyAtaW5jbHVkZSBydGVfY29uZmlnLmgg LVdleHRyYQ0KPiAtV2Nhc3QtcXVhbCAtV2RlcHJlY2F0ZWQgLVdmb3JtYXQtbm9ubGl0ZXJhbCAt V2Zvcm1hdC1zZWN1cml0eQ0KPiAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XbWlzc2luZy1wcm90 b3R5cGVzIC1XbmVzdGVkLWV4dGVybnMNCj4gLVdvbGQtc3R5bGUtZGVmaW5pdGlvbiAtV3BvaW50 ZXItYXJpdGggLVdzaWduLWNvbXBhcmUNCj4gLVdzdHJpY3QtcHJvdG90eXBlcyAtV3VuZGVmIC1X d3JpdGUtc3RyaW5ncyAtV25vLWFkZHJlc3Mtb2YtcGENCj4gY2tlZC1tZW1iZXIgLVduby1taXNz aW5nLWZpZWxkLWluaXRpYWxpemVycyAtRF9HTlVfU09VUkNFIC1mUElDDQo+IC1tYXJjaD1uYXRp dmUgLURBTExPV19FWFBFUklNRU5UQUxfQVBJIC1EQUxMT1dfSU5URVJOQUxfQVBJIC1NRCAtDQo+ IE1RDQo+IGRyaXZlcnMvbGlidG1wX3J0ZV9wbWRfZGxiMl9ldmVudC5hLnAvZXZlbnRfZGxiMl9k bGIyLmMubyAtTUYNCj4gZHJpdmVycy9saWJ0bXBfcnRlX3BtZF9kbGIyX2V2ZW50LmEucC9ldmVu dF9kbA0KPiBiMl9kbGIyLmMuby5kIC1vDQo+IGRyaXZlcnMvbGlidG1wX3J0ZV9wbWRfZGxiMl9l dmVudC5hLnAvZXZlbnRfZGxiMl9kbGIyLmMubyAtYw0KPiAuLi9kcml2ZXJzL2V2ZW50L2RsYjIv ZGxiMi5jDQo+IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9kcml2ZXJzL2V2ZW50L2RsYjIvZGxi Mi5jOjM1Og0KPiAuLi9kcml2ZXJzL2V2ZW50L2RsYjIvZGxiMl9pbmxpbmVfZm5zLmg6NDU6Mjog ZXJyb3I6IHVzZSBvZiB1bmtub3duDQo+IGJ1aWx0aW4gJ19fYnVpbHRpbl9pYTMyX21vdm50ZHEn IFstV2ltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQ0KPiAgICAgICAgIF9fYnVpbHRpbl9p YTMyX21vdm50ZHEoKF9fdjJkaSAqKXBwX2FkZHIgKyAwLCAoX192MmRpKXNyY19kYXRhMCk7DQo+ ICAgICAgICAgXg0KPiAuLi9kcml2ZXJzL2V2ZW50L2RsYjIvZGxiMl9pbmxpbmVfZm5zLmg6NDU6 Mjogbm90ZTogZGlkIHlvdSBtZWFuDQo+ICdfX2J1aWx0aW5faWEzMl9tb3ZudHEnPw0KPiAvdXNy L2xpYi9jbGFuZy8xMC4wLjEvaW5jbHVkZS94bW1pbnRyaW4uaDoyMTIyOjM6IG5vdGU6DQo+ICdf X2J1aWx0aW5faWEzMl9tb3ZudHEnIGRlY2xhcmVkIGhlcmUNCj4gICBfX2J1aWx0aW5faWEzMl9t b3ZudHEoX19wLCBfX2EpOw0KPiAgIF4NCj4gSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL2RyaXZl cnMvZXZlbnQvZGxiMi9kbGIyLmM6MzU6DQo+IC4uL2RyaXZlcnMvZXZlbnQvZGxiMi9kbGIyX2lu bGluZV9mbnMuaDo2MToyOiBlcnJvcjogdXNlIG9mIHVua25vd24NCj4gYnVpbHRpbiAnX19idWls dGluX2lhMzJfbW92bnRkcScgWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dDQo+ICAg ICAgICAgX19idWlsdGluX2lhMzJfbW92bnRkcSgoX192MmRpICopcHBfYWRkciwgKF9fdjJkaSlz cmNfZGF0YTApOw0KPiAgICAgICAgIF4NCj4gMiBlcnJvcnMgZ2VuZXJhdGVkLg0KPiBbMjEyNS8y NDc5XSBHZW5lcmF0aW5nIHJ0ZV9jb21tb25fc2ZjX2VmeC5zeW1fY2hrIHdpdGggYSBtZXNvbl9l eGUucHkNCj4gY3VzdG9tIGNvbW1hbmQNCj4gbmluamE6IGJ1aWxkIHN0b3BwZWQ6IHN1YmNvbW1h bmQgZmFpbGVkLg0KPiANCj4gDQo+IA0KPiANCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ldmVudC9k bGIyL2RsYjIuYyAgICAgICAgICAgICAgICAgICAgICB8ICA1MzIgKysrKysNCj4gPiAgZHJpdmVy cy9ldmVudC9kbGIyL2RsYjJfaWZhY2UuYyAgICAgICAgICAgICAgICB8ICAgMjggKw0KPiA+ICBk cml2ZXJzL2V2ZW50L2RsYjIvZGxiMl9pZmFjZS5oICAgICAgICAgICAgICAgIHwgICAyOSArDQo+ ID4gIGRyaXZlcnMvZXZlbnQvZGxiMi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAgICA2 ICstDQo+ID4gIGRyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfaHdfdHlwZXMuaCAgICAg fCAgMzY3ICsrKysNCj4gPiAgZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9tYm94Lmgg ICAgICAgICB8ICA1OTYgKysrKysrDQo+ID4gIGRyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2Rs YjJfb3NkZXAuaCAgICAgICAgfCAgMjQ3ICsrKw0KPiA+ICBkcml2ZXJzL2V2ZW50L2RsYjIvcGYv YmFzZS9kbGIyX29zZGVwX2JpdG1hcC5oIHwgIDQ0MCArKysrKw0KPiA+ICBkcml2ZXJzL2V2ZW50 L2RsYjIvcGYvYmFzZS9kbGIyX29zZGVwX2xpc3QuaCAgIHwgIDEzMSArKw0KPiA+ICBkcml2ZXJz L2V2ZW50L2RsYjIvcGYvYmFzZS9kbGIyX29zZGVwX3R5cGVzLmggIHwgICAzMSArDQo+ID4gIGRy aXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfcmVncy5oICAgICAgICAgfCAyNTI3DQo+ICsr KysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFzZS9k bGIyX3Jlc291cmNlLmMgICAgIHwgIDI3NCArKysNCj4gPiAgZHJpdmVycy9ldmVudC9kbGIyL3Bm L2Jhc2UvZGxiMl9yZXNvdXJjZS5oICAgICB8IDE5MTMgKysrKysrKysrKysrKysrKysrDQo+ID4g IGRyaXZlcnMvZXZlbnQvZGxiMi9wZi9kbGIyX21haW4uYyAgICAgICAgICAgICAgfCAgNjE1ICsr KysrKw0KPiA+ICBkcml2ZXJzL2V2ZW50L2RsYjIvcGYvZGxiMl9tYWluLmggICAgICAgICAgICAg IHwgIDEwNiArDQo+ID4gIGRyaXZlcnMvZXZlbnQvZGxiMi9wZi9kbGIyX3BmLmMgICAgICAgICAg ICAgICAgfCAgMjQ0ICsrKw0KPiA+ICAxNiBmaWxlcyBjaGFuZ2VkLCA4MDg1IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXZlbnQv ZGxiMi9kbGIyLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXZlbnQvZGxiMi9k bGIyX2lmYWNlLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXZlbnQvZGxiMi9k bGIyX2lmYWNlLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXZlbnQvZGxiMi9w Zi9iYXNlL2RsYjJfaHdfdHlwZXMuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9l dmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9tYm94LmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfb3NkZXAuaA0KPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9vc2RlcF9iaXRtYXAuaA0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9vc2Rl cF9saXN0LmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXZlbnQvZGxiMi9wZi9i YXNlL2RsYjJfb3NkZXBfdHlwZXMuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9l dmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9yZWdzLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfcmVzb3VyY2UuYw0KPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9yZXNvdXJjZS5oDQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2V2ZW50L2RsYjIvcGYvZGxiMl9tYWluLmMNCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXZlbnQvZGxiMi9wZi9kbGIyX21haW4uaA0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ldmVudC9kbGIyL3BmL2RsYjJfcGYuYw0K PiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXZlbnQvZGxiMi9kbGIyLmMgYi9kcml2ZXJz L2V2ZW50L2RsYjIvZGxiMi5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw MDAwMDAwLi4yNjk4NWI5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZXZl bnQvZGxiMi9kbGIyLmMNCj4gPiBAQCAtMCwwICsxLDUzMiBAQA0KPiA+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIw MjAgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8YXNz ZXJ0Lmg+DQo+ID4gKyNpbmNsdWRlIDxlcnJuby5oPg0KPiA+ICsjaW5jbHVkZSA8bm1taW50cmlu Lmg+DQo+ID4gKyNpbmNsdWRlIDxwdGhyZWFkLmg+DQo+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4N Cj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4g KyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gPiArI2luY2x1ZGUgPHN5cy9tbWFuLmg+DQo+ID4gKyNp bmNsdWRlIDxzeXMvZmNudGwuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxydGVfY29tbW9uLmg+ DQo+ID4gKyNpbmNsdWRlIDxydGVfY29uZmlnLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfY3ljbGVz Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9kZXYu aD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2V2ZW50 ZGV2Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZXZlbnRkZXZfcG1kLmg+DQo+ID4gKyNpbmNsdWRl IDxydGVfaW8uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9rdmFyZ3MuaD4NCj4gPiArI2luY2x1ZGUg PHJ0ZV9sb2cuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4gPiArI2luY2x1ZGUg PHJ0ZV9tYnVmLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfcHJlZmV0Y2guaD4NCj4gPiArI2luY2x1 ZGUgPHJ0ZV9yaW5nLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfc3RyaW5nX2Zucy5oPg0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgImRsYjJfcHJpdi5oIg0KPiA+ICsjaW5jbHVkZSAiZGxiMl9pZmFjZS5o Ig0KPiA+ICsjaW5jbHVkZSAiZGxiMl9pbmxpbmVfZm5zLmgiDQo+ID4gKw0KPiA+ICsjaWYgIWRl ZmluZWQgUlRFX0FSQ0hfWDg2XzY0DQo+ID4gKyNlcnJvciAiVGhpcyBpbXBsZW1lbnRhdGlvbiBv bmx5IHN1cHBvcnRzIFJURV9BUkNIX1g4Nl82NCBhcmNoaXRlY3R1cmUuIg0KPiA+ICsjZW5kaWYN Cj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFJlc291cmNlcyBleHBvc2VkIHRvIGV2ZW50ZGV2LiBT b21lIHZhbHVlcyBvdmVycmlkZGVuIGF0IHJ1bnRpbWUgdXNpbmcNCj4gPiArICogdmFsdWVzIHJl dHVybmVkIGJ5IHRoZSBETEIga2VybmVsIGRyaXZlci4NCj4gPiArICovDQo+ID4gKyNpZiAoUlRF X0VWRU5UX01BWF9RVUVVRVNfUEVSX0RFViA+IFVJTlQ4X01BWCkNCj4gPiArI2Vycm9yICJSVEVf RVZFTlRfTUFYX1FVRVVFU19QRVJfREVWIGNhbm5vdCBmaXQgaW4gbWVtYmVyDQo+IG1heF9ldmVu dF9xdWV1ZXMiDQo+ID4gKyNlbmRpZg0KPiA+ICtzdGF0aWMgc3RydWN0IHJ0ZV9ldmVudF9kZXZf aW5mbyBldmRldl9kbGIyX2RlZmF1bHRfaW5mbyA9IHsNCj4gPiArICAgICAgIC5kcml2ZXJfbmFt ZSA9ICIiLCAvKiBwcm9iZSB3aWxsIHNldCAqLw0KPiA+ICsgICAgICAgLm1pbl9kZXF1ZXVlX3Rp bWVvdXRfbnMgPSBETEIyX01JTl9ERVFVRVVFX1RJTUVPVVRfTlMsDQo+ID4gKyAgICAgICAubWF4 X2RlcXVldWVfdGltZW91dF9ucyA9IERMQjJfTUFYX0RFUVVFVUVfVElNRU9VVF9OUywNCj4gPiAr I2lmIChSVEVfRVZFTlRfTUFYX1FVRVVFU19QRVJfREVWIDwgRExCMl9NQVhfTlVNX0xEQl9RVUVV RVMpDQo+ID4gKyAgICAgICAubWF4X2V2ZW50X3F1ZXVlcyA9IFJURV9FVkVOVF9NQVhfUVVFVUVT X1BFUl9ERVYsDQo+ID4gKyNlbHNlDQo+ID4gKyAgICAgICAubWF4X2V2ZW50X3F1ZXVlcyA9IERM QjJfTUFYX05VTV9MREJfUVVFVUVTLA0KPiA+ICsjZW5kaWYNCj4gPiArICAgICAgIC5tYXhfZXZl bnRfcXVldWVfZmxvd3MgPSBETEIyX01BWF9OVU1fRkxPV1MsDQo+ID4gKyAgICAgICAubWF4X2V2 ZW50X3F1ZXVlX3ByaW9yaXR5X2xldmVscyA9IERMQjJfUUlEX1BSSU9SSVRJRVMsDQo+ID4gKyAg ICAgICAubWF4X2V2ZW50X3ByaW9yaXR5X2xldmVscyA9IERMQjJfUUlEX1BSSU9SSVRJRVMsDQo+ ID4gKyAgICAgICAubWF4X2V2ZW50X3BvcnRzID0gRExCMl9NQVhfTlVNX0xEQl9QT1JUUywNCj4g PiArICAgICAgIC5tYXhfZXZlbnRfcG9ydF9kZXF1ZXVlX2RlcHRoID0gRExCMl9NQVhfQ1FfREVQ VEgsDQo+ID4gKyAgICAgICAubWF4X2V2ZW50X3BvcnRfZW5xdWV1ZV9kZXB0aCA9IERMQjJfTUFY X0VOUVVFVUVfREVQVEgsDQo+ID4gKyAgICAgICAubWF4X2V2ZW50X3BvcnRfbGlua3MgPSBETEIy X01BWF9OVU1fUUlEU19QRVJfTERCX0NRLA0KPiA+ICsgICAgICAgLm1heF9udW1fZXZlbnRzID0g RExCMl9NQVhfTlVNX0xEQl9DUkVESVRTLA0KPiA+ICsgICAgICAgLm1heF9zaW5nbGVfbGlua19l dmVudF9wb3J0X3F1ZXVlX3BhaXJzID0NCj4gRExCMl9NQVhfTlVNX0RJUl9QT1JUUywNCj4gPiAr ICAgICAgIC5ldmVudF9kZXZfY2FwID0gKFJURV9FVkVOVF9ERVZfQ0FQX1FVRVVFX1FPUyB8DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfRVZFTlRfREVWX0NBUF9FVkVOVF9RT1Mg fA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0VWRU5UX0RFVl9DQVBfQlVSU1Rf TU9ERSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfRVZFTlRfREVWX0NBUF9E SVNUUklCVVRFRF9TQ0hFRCB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfRVZF TlRfREVWX0NBUF9JTVBMSUNJVF9SRUxFQVNFX0RJU0FCTEUgfA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgUlRFX0VWRU5UX0RFVl9DQVBfUVVFVUVfQUxMX1RZUEVTKSwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0cnVjdCBwcm9jZXNzX2xvY2FsX3BvcnRfZGF0YQ0KPiA+ICtkbGIyX3Bv cnRbRExCMl9NQVhfTlVNX1BPUlRTXVtETEIyX05VTV9QT1JUX1RZUEVTXTsNCj4gPiArDQo+ID4g Ky8qIG92ZXJyaWRlIGRlZmF1bHRzIHdpdGggdmFsdWUocykgcHJvdmlkZWQgb24gY29tbWFuZCBs aW5lICovDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK2RsYjJfaW5pdF9xdWV1ZV9kZXB0aF90aHJl c2hvbGRzKHN0cnVjdCBkbGIyX2V2ZW50ZGV2ICpkbGIyLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqcWlkX2RlcHRoX3RocmVzaG9sZHMpDQo+ID4gK3sNCj4gPiAr ICAgICAgIGludCBxOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAocSA9IDA7IHEgPCBETEIyX01B WF9OVU1fUVVFVUVTOyBxKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHFpZF9kZXB0aF90 aHJlc2hvbGRzW3FdICE9IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGxiMi0+ZXZf cXVldWVzW3FdLmRlcHRoX3RocmVzaG9sZCA9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBxaWRfZGVwdGhfdGhyZXNob2xkc1txXTsNCj4gPiArICAgICAgIH0NCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtkbGIyX2h3X3F1ZXJ5X3Jlc291cmNlcyhzdHJ1 Y3QgZGxiMl9ldmVudGRldiAqZGxiMikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJf aHdfZGV2ICpoYW5kbGUgPSAmZGxiMi0+cW1faW5zdGFuY2U7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ZGxiMl9od19yZXNvdXJjZV9pbmZvICpkbGIyX2luZm8gPSAmaGFuZGxlLT5pbmZvOw0KPiA+ICsg ICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBRdWVyeSBkcml2ZXIgcmVzb3Vy Y2VzIHByb3Zpc2lvbmVkIGZvciB0aGlzIGRldmljZSAqLw0KPiA+ICsNCj4gPiArICAgICAgIHJl dCA9IGRsYjJfaWZhY2VfZ2V0X251bV9yZXNvdXJjZXMoaGFuZGxlLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGxiMi0+aHdfcnNyY19xdWVyeV9yZXN1 bHRzKTsNCj4gPiArICAgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgICAgRExCMl9M T0dfRVJSKCJpb2N0bCBnZXQgZGxiMiBudW0gcmVzb3VyY2VzLCBlcnI9JWRcbiIsIHJldCk7DQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgLyogQ29tcGxldGUgZmlsbGluZyBpbiBkZXZpY2UgcmVzb3VyY2UgaW5mbyByZXR1 cm5lZCB0byBldmRldiBhcHAsDQo+ID4gKyAgICAgICAgKiBvdmVycmlkaW5nIGFueSBkZWZhdWx0 IHZhbHVlcy4NCj4gPiArICAgICAgICAqIFRoZSBjYXBhYmlsaXRpZXMgKENBUHMpIHdlcmUgc2V0 IGF0IGNvbXBpbGUgdGltZS4NCj4gPiArICAgICAgICAqLw0KPiA+ICsNCj4gPiArICAgICAgIGV2 ZGV2X2RsYjJfZGVmYXVsdF9pbmZvLm1heF9ldmVudF9xdWV1ZXMgPQ0KPiA+ICsgICAgICAgICAg ICAgICBkbGIyLT5od19yc3JjX3F1ZXJ5X3Jlc3VsdHMubnVtX2xkYl9xdWV1ZXM7DQo+ID4gKw0K PiA+ICsgICAgICAgZXZkZXZfZGxiMl9kZWZhdWx0X2luZm8ubWF4X2V2ZW50X3BvcnRzID0NCj4g PiArICAgICAgICAgICAgICAgZGxiMi0+aHdfcnNyY19xdWVyeV9yZXN1bHRzLm51bV9sZGJfcG9y dHM7DQo+ID4gKw0KPiA+ICsgICAgICAgZXZkZXZfZGxiMl9kZWZhdWx0X2luZm8ubWF4X251bV9l dmVudHMgPQ0KPiA+ICsgICAgICAgICAgICAgICBkbGIyLT5od19yc3JjX3F1ZXJ5X3Jlc3VsdHMu bnVtX2xkYl9jcmVkaXRzOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIFNhdmUgb2ZmIHZhbHVlcyB1 c2VkIHdoZW4gY3JlYXRpbmcgdGhlIHNjaGVkdWxpbmcgZG9tYWluLiAqLw0KPiA+ICsNCj4gPiAr ICAgICAgIGhhbmRsZS0+aW5mby5udW1fc2NoZWRfZG9tYWlucyA9DQo+ID4gKyAgICAgICAgICAg ICAgIGRsYjItPmh3X3JzcmNfcXVlcnlfcmVzdWx0cy5udW1fc2NoZWRfZG9tYWluczsNCj4gPiAr DQo+ID4gKyAgICAgICBoYW5kbGUtPmluZm8uaHdfcnNyY19tYXgubmJfZXZlbnRzX2xpbWl0ID0N Cj4gPiArICAgICAgICAgICAgICAgZGxiMi0+aHdfcnNyY19xdWVyeV9yZXN1bHRzLm51bV9sZGJf Y3JlZGl0czsNCj4gPiArDQo+ID4gKyAgICAgICBoYW5kbGUtPmluZm8uaHdfcnNyY19tYXgubnVt X3F1ZXVlcyA9DQo+ID4gKyAgICAgICAgICAgICAgIGRsYjItPmh3X3JzcmNfcXVlcnlfcmVzdWx0 cy5udW1fbGRiX3F1ZXVlcyArDQo+ID4gKyAgICAgICAgICAgICAgIGRsYjItPmh3X3JzcmNfcXVl cnlfcmVzdWx0cy5udW1fZGlyX3BvcnRzOw0KPiA+ICsNCj4gPiArICAgICAgIGhhbmRsZS0+aW5m by5od19yc3JjX21heC5udW1fbGRiX3F1ZXVlcyA9DQo+ID4gKyAgICAgICAgICAgICAgIGRsYjIt Pmh3X3JzcmNfcXVlcnlfcmVzdWx0cy5udW1fbGRiX3F1ZXVlczsNCj4gPiArDQo+ID4gKyAgICAg ICBoYW5kbGUtPmluZm8uaHdfcnNyY19tYXgubnVtX2xkYl9wb3J0cyA9DQo+ID4gKyAgICAgICAg ICAgICAgIGRsYjItPmh3X3JzcmNfcXVlcnlfcmVzdWx0cy5udW1fbGRiX3BvcnRzOw0KPiA+ICsN Cj4gPiArICAgICAgIGhhbmRsZS0+aW5mby5od19yc3JjX21heC5udW1fZGlyX3BvcnRzID0NCj4g PiArICAgICAgICAgICAgICAgZGxiMi0+aHdfcnNyY19xdWVyeV9yZXN1bHRzLm51bV9kaXJfcG9y dHM7DQo+ID4gKw0KPiA+ICsgICAgICAgaGFuZGxlLT5pbmZvLmh3X3JzcmNfbWF4LnJlb3JkZXJf d2luZG93X3NpemUgPQ0KPiA+ICsgICAgICAgICAgICAgICBkbGIyLT5od19yc3JjX3F1ZXJ5X3Jl c3VsdHMubnVtX2hpc3RfbGlzdF9lbnRyaWVzOw0KPiA+ICsNCj4gPiArICAgICAgIHJ0ZV9tZW1j cHkoZGxiMl9pbmZvLCAmaGFuZGxlLT5pbmZvLmh3X3JzcmNfbWF4LCBzaXplb2YoKmRsYjJfaW5m bykpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIFJURV9CQVNFXzEwIDEwDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2RsYjJf c3RyaW5nX3RvX2ludChpbnQgKnJlc3VsdCwgY29uc3QgY2hhciAqc3RyKQ0KPiA+ICt7DQo+ID4g KyAgICAgICBsb25nIHJldDsNCj4gPiArICAgICAgIGNoYXIgKmVuZHB0cjsNCj4gPiArDQo+ID4g KyAgICAgICBpZiAoc3RyID09IE5VTEwgfHwgcmVzdWx0ID09IE5VTEwpDQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAgIGVycm5vID0gMDsNCj4g PiArICAgICAgIHJldCA9IHN0cnRvbChzdHIsICZlbmRwdHIsIFJURV9CQVNFXzEwKTsNCj4gPiAr ICAgICAgIGlmIChlcnJubykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsNCj4g PiArDQo+ID4gKyAgICAgICAvKiBsb25nIGludCBhbmQgaW50IG1heSBiZSBkaWZmZXJlbnQgd2lk dGggZm9yIHNvbWUgYXJjaGl0ZWN0dXJlcyAqLw0KPiA+ICsgICAgICAgaWYgKHJldCA8IElOVF9N SU4gfHwgcmV0ID4gSU5UX01BWCB8fCBlbmRwdHIgPT0gc3RyKQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICAqcmVzdWx0ID0gcmV0Ow0KPiA+ ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiAr c2V0X251bWFfbm9kZShjb25zdCBjaGFyICprZXkgX19ydGVfdW51c2VkLCBjb25zdCBjaGFyICp2 YWx1ZSwgdm9pZA0KPiAqb3BhcXVlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgKnNvY2tldF9p ZCA9IG9wYXF1ZTsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0 ID0gZGxiMl9zdHJpbmdfdG9faW50KHNvY2tldF9pZCwgdmFsdWUpOw0KPiA+ICsgICAgICAgaWYg KHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKCpzb2NrZXRfaWQgPiBSVEVfTUFYX05VTUFfTk9ERVMpDQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArc2V0X21heF9udW1fZXZlbnRzKGNvbnN0IGNoYXIg KmtleSBfX3J0ZV91bnVzZWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZh bHVlLA0KPiA+ICsgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpDQo+ID4gK3sNCj4gPiAr ICAgICAgIGludCAqbWF4X251bV9ldmVudHMgPSBvcGFxdWU7DQo+ID4gKyAgICAgICBpbnQgcmV0 Ow0KPiA+ICsNCj4gPiArICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IG9wYXF1ZSA9PSBOVUxM KSB7DQo+ID4gKyAgICAgICAgICAgICAgIERMQjJfTE9HX0VSUigiTlVMTCBwb2ludGVyXG4iKTsN Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgICB9DQo+ID4g Kw0KPiA+ICsgICAgICAgcmV0ID0gZGxiMl9zdHJpbmdfdG9faW50KG1heF9udW1fZXZlbnRzLCB2 YWx1ZSk7DQo+ID4gKyAgICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoKm1heF9udW1fZXZlbnRzIDwgMCB8fCAq bWF4X251bV9ldmVudHMgPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIERMQjJfTUFYX05V TV9MREJfQ1JFRElUUykgew0KPiA+ICsgICAgICAgICAgICAgICBETEIyX0xPR19FUlIoImRsYjI6 IG1heF9udW1fZXZlbnRzIG11c3QgYmUgYmV0d2VlbiAwIGFuZA0KPiAlZFxuIiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERMQjJfTUFYX05VTV9MREJfQ1JFRElUUyk7DQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4g K3NldF9udW1fZGlyX2NyZWRpdHMoY29uc3QgY2hhciAqa2V5IF9fcnRlX3VudXNlZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgdm9pZCAqb3BhcXVlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgKm51bV9kaXJfY3Jl ZGl0cyA9IG9wYXF1ZTsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAg aWYgKHZhbHVlID09IE5VTEwgfHwgb3BhcXVlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAg ICAgRExCMl9MT0dfRVJSKCJOVUxMIHBvaW50ZXJcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBk bGIyX3N0cmluZ190b19pbnQobnVtX2Rpcl9jcmVkaXRzLCB2YWx1ZSk7DQo+ID4gKyAgICAgICBp ZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4g KyAgICAgICBpZiAoKm51bV9kaXJfY3JlZGl0cyA8IDAgfHwNCj4gPiArICAgICAgICAgICAqbnVt X2Rpcl9jcmVkaXRzID4gRExCMl9NQVhfTlVNX0RJUl9DUkVESVRTKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIERMQjJfTE9HX0VSUigiZGxiMjogbnVtX2Rpcl9jcmVkaXRzIG11c3QgYmUgYmV0d2Vl biAwIGFuZA0KPiAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMQjJf TUFYX05VTV9ESVJfQ1JFRElUUyk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3NldF9kZXZfaWQoY29uc3QgY2hhciAqa2V5IF9f cnRlX3VudXNlZCwNCj4gPiArICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlLA0KPiA+ICsgICAg ICAgICAgdm9pZCAqb3BhcXVlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgKmRldl9pZCA9IG9w YXF1ZTsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHZhbHVl ID09IE5VTEwgfHwgb3BhcXVlID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgRExCMl9M T0dfRVJSKCJOVUxMIHBvaW50ZXJcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBkbGIyX3N0cmlu Z190b19pbnQoZGV2X2lkLCB2YWx1ZSk7DQo+ID4gKyAgICAgICBpZiAocmV0IDwgMCkNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtzZXRfY29zKGNvbnN0IGNoYXIg KmtleSBfX3J0ZV91bnVzZWQsDQo+ID4gKyAgICAgICBjb25zdCBjaGFyICp2YWx1ZSwNCj4gPiAr ICAgICAgIHZvaWQgKm9wYXF1ZSkNCj4gPiArew0KPiA+ICsgICAgICAgZW51bSBkbGIyX2NvcyAq Y29zX2lkID0gb3BhcXVlOw0KPiA+ICsgICAgICAgaW50IHggPSAwOw0KPiA+ICsgICAgICAgaW50 IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCBvcGFxdWUgPT0g TlVMTCkgew0KPiA+ICsgICAgICAgICAgICAgICBETEIyX0xPR19FUlIoIk5VTEwgcG9pbnRlclxu Iik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0K PiA+ICsNCj4gPiArICAgICAgIHJldCA9IGRsYjJfc3RyaW5nX3RvX2ludCgmeCwgdmFsdWUpOw0K PiA+ICsgICAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHggIT0gRExCMl9DT1NfREVGQVVMVCAmJiAoeCA8IERM QjJfQ09TXzAgfHwgeCA+IERMQjJfQ09TXzMpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIERMQjJf TE9HX0VSUigNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAiQ09TICVkIG91dCBvZiByYW5n ZSwgbXVzdCBiZSBETEIyX0NPU19ERUZBVUxUIG9yIDAtM1xuIiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICB4KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgKmNvc19pZCA9IHg7DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ ID4gK3NldF9xaWRfZGVwdGhfdGhyZXNoKGNvbnN0IGNoYXIgKmtleSBfX3J0ZV91bnVzZWQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsdWUsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxi Ml9xaWRfZGVwdGhfdGhyZXNob2xkcyAqcWlkX3RocmVzaCA9IG9wYXF1ZTsNCj4gPiArICAgICAg IGludCBmaXJzdCwgbGFzdCwgdGhyZXNoLCBpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICh2YWx1 ZSA9PSBOVUxMIHx8IG9wYXF1ZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIERMQjJf TE9HX0VSUigiTlVMTCBwb2ludGVyXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgLyogY29tbWFuZCBsaW5l IG92ZXJyaWRlIG1heSB0YWtlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDMgZm9ybXM6DQo+ID4gKyAg ICAgICAgKiBxaWRfZGVwdGhfdGhyZXNoPWFsbDo8dGhyZXNob2xkX3ZhbHVlPiAuLi4gYWxsIHF1 ZXVlcw0KPiA+ICsgICAgICAgICogcWlkX2RlcHRoX3RocmVzaD1xaWRBLXFpZEI6PHRocmVzaG9s ZF92YWx1ZT4gLi4uIGEgcmFuZ2Ugb2YgcXVldWVzDQo+ID4gKyAgICAgICAgKiBxaWRfZGVwdGhf dGhyZXNoPXFpZDo8dGhyZXNob2xkX3ZhbHVlPiAuLi4ganVzdCBvbmUgcXVldWUNCj4gPiArICAg ICAgICAqLw0KPiA+ICsgICAgICAgaWYgKHNzY2FuZih2YWx1ZSwgImFsbDolZCIsICZ0aHJlc2gp ID09IDEpIHsNCj4gPiArICAgICAgICAgICAgICAgZmlyc3QgPSAwOw0KPiA+ICsgICAgICAgICAg ICAgICBsYXN0ID0gRExCMl9NQVhfTlVNX1FVRVVFUyAtIDE7DQo+ID4gKyAgICAgICB9IGVsc2Ug aWYgKHNzY2FuZih2YWx1ZSwgIiVkLSVkOiVkIiwgJmZpcnN0LCAmbGFzdCwgJnRocmVzaCkgPT0g Mykgew0KPiA+ICsgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCAq Lw0KPiA+ICsgICAgICAgfSBlbHNlIGlmIChzc2NhbmYodmFsdWUsICIlZDolZCIsICZmaXJzdCwg JnRocmVzaCkgPT0gMikgew0KPiA+ICsgICAgICAgICAgICAgICBsYXN0ID0gZmlyc3Q7DQo+ID4g KyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICBETEIyX0xPR19FUlIoIkVycm9y IHBhcnNpbmcgcWlkIGRlcHRoIGRldmFyZy4gU2hvdWxkIGJlIGFsbDp2YWwsDQo+IHFpZC1xaWQ6 dmFsLCBvciBxaWQ6dmFsXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGZpcnN0ID4gbGFzdCB8fCBm aXJzdCA8IDAgfHwgbGFzdCA+PSBETEIyX01BWF9OVU1fUVVFVUVTKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIERMQjJfTE9HX0VSUigiRXJyb3IgcGFyc2luZyBxaWQgZGVwdGggZGV2YXJnLCBpbnZh bGlkIHFpZCB2YWx1ZVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmICh0aHJlc2ggPCAwIHx8IHRocmVz aCA+IERMQjJfTUFYX1FVRVVFX0RFUFRIX1RIUkVTSE9MRCkgew0KPiA+ICsgICAgICAgICAgICAg ICBETEIyX0xPR19FUlIoIkVycm9yIHBhcnNpbmcgcWlkIGRlcHRoIGRldmFyZywgdGhyZXNob2xk ID4gJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBETEIyX01BWF9RVUVV RV9ERVBUSF9USFJFU0hPTEQpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsN Cj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSBmaXJzdDsgaSA8PSBs YXN0OyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIHFpZF90aHJlc2gtPnZhbFtpXSA9IHRocmVz aDsgLyogaW5kZXhlZCBieSBxaWQgKi8NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiArZGxiMl9lbnRyeV9wb2ludHNfaW5p dChzdHJ1Y3QgcnRlX2V2ZW50ZGV2ICpkZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIFJURV9TRVRf VVNFRChkZXYpOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIEV2ZW50ZGV2IFBNRCBlbnRyeSBwb2lu dHMgKi8NCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK2RsYjJfcHJpbWFyeV9ldmVudGRl dl9wcm9iZShzdHJ1Y3QgcnRlX2V2ZW50ZGV2ICpkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkbGIyX2RldmFyZ3MgKmRsYjJfYXJncykNCj4gPiArew0KPiA+ICsgICAgICAg c3RydWN0IGRsYjJfZXZlbnRkZXYgKmRsYjI7DQo+ID4gKyAgICAgICBpbnQgZXJyOw0KPiA+ICsN Cj4gPiArICAgICAgIGRsYjIgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsNCj4gPiAr ICAgICAgIGRsYjItPmV2ZW50X2RldiA9IGRldjsgLyogYmFja2xpbmsgKi8NCj4gPiArDQo+ID4g KyAgICAgICBldmRldl9kbGIyX2RlZmF1bHRfaW5mby5kcml2ZXJfbmFtZSA9IG5hbWU7DQo+ID4g Kw0KPiA+ICsgICAgICAgZGxiMi0+bWF4X251bV9ldmVudHNfb3ZlcnJpZGUgPSBkbGIyX2FyZ3Mt Pm1heF9udW1fZXZlbnRzOw0KPiA+ICsgICAgICAgZGxiMi0+bnVtX2Rpcl9jcmVkaXRzX292ZXJy aWRlID0gZGxiMl9hcmdzLT5udW1fZGlyX2NyZWRpdHNfb3ZlcnJpZGU7DQo+ID4gKyAgICAgICBk bGIyLT5xbV9pbnN0YW5jZS5jb3NfaWQgPSBkbGIyX2FyZ3MtPmNvc19pZDsNCj4gPiArDQo+ID4g KyAgICAgICBlcnIgPSBkbGIyX2lmYWNlX29wZW4oJmRsYjItPnFtX2luc3RhbmNlLCBuYW1lKTsN Cj4gPiArICAgICAgIGlmIChlcnIgPCAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIERMQjJfTE9H X0VSUigiY291bGQgbm90IG9wZW4gZXZlbnQgaGFyZHdhcmUgZGV2aWNlLCBlcnI9JWRcbiIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIpOw0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gZXJyOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGVyciA9IGRs YjJfaWZhY2VfZ2V0X2RldmljZV92ZXJzaW9uKCZkbGIyLT5xbV9pbnN0YW5jZSwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbGIyLT5yZXZpc2lvbik7 DQo+ID4gKyAgICAgICBpZiAoZXJyIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICBETEIyX0xP R19FUlIoImRsYjI6IGZhaWxlZCB0byBnZXQgdGhlIGRldmljZSB2ZXJzaW9uLCBlcnI9JWRcbiIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIpOw0KPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gZXJyOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGVyciA9 IGRsYjJfaHdfcXVlcnlfcmVzb3VyY2VzKGRsYjIpOw0KPiA+ICsgICAgICAgaWYgKGVycikgew0K PiA+ICsgICAgICAgICAgICAgICBETEIyX0xPR19FUlIoImdldCByZXNvdXJjZXMgZXJyPSVkIGZv ciAlc1xuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciwgbmFtZSk7DQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgZGxiMl9pZmFjZV9oYXJkd2FyZV9pbml0KCZkbGIyLT5xbV9pbnN0YW5jZSk7DQo+ ID4gKw0KPiA+ICsgICAgICAgZXJyID0gZGxiMl9pZmFjZV9nZXRfY3FfcG9sbF9tb2RlKCZkbGIy LT5xbV9pbnN0YW5jZSwgJmRsYjItDQo+ID5wb2xsX21vZGUpOw0KPiA+ICsgICAgICAgaWYgKGVy ciA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgRExCMl9MT0dfRVJSKCJkbGIyOiBmYWlsZWQg dG8gZ2V0IHRoZSBwb2xsIG1vZGUsIGVycj0lZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAg ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcnRlX3NwaW5sb2NrX2luaXQoJmRsYjItPnFtX2lu c3RhbmNlLnJlc291cmNlX2xvY2spOw0KPiA+ICsNCj4gPiArICAgICAgIGRsYjJfaWZhY2VfbG93 X2xldmVsX2lvX2luaXQoKTsNCj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2VudHJ5X3BvaW50c19p bml0KGRldik7DQo+ID4gKw0KPiA+ICsgICAgICAgZGxiMl9pbml0X3F1ZXVlX2RlcHRoX3RocmVz aG9sZHMoZGxiMiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRsYjJfYXJncy0+cWlkX2RlcHRoX3RocmVzaG9sZHMudmFsKTsNCj4gPiArDQo+ID4gKyAgICAg ICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK2RsYjJfc2Vjb25kYXJ5 X2V2ZW50ZGV2X3Byb2JlKHN0cnVjdCBydGVfZXZlbnRkZXYgKmRldiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgZGxiMl9ldmVudGRldiAqZGxiMjsNCj4gPiArICAgICAgIGludCBlcnI7DQo+ID4g Kw0KPiA+ICsgICAgICAgZGxiMiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ ICsgICAgICAgZXZkZXZfZGxiMl9kZWZhdWx0X2luZm8uZHJpdmVyX25hbWUgPSBuYW1lOw0KPiA+ ICsNCj4gPiArICAgICAgIGVyciA9IGRsYjJfaWZhY2Vfb3BlbigmZGxiMi0+cW1faW5zdGFuY2Us IG5hbWUpOw0KPiA+ICsgICAgICAgaWYgKGVyciA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAg RExCMl9MT0dfRVJSKCJjb3VsZCBub3Qgb3BlbiBldmVudCBoYXJkd2FyZSBkZXZpY2UsIGVycj0l ZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycik7DQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAg ZXJyID0gZGxiMl9od19xdWVyeV9yZXNvdXJjZXMoZGxiMik7DQo+ID4gKyAgICAgICBpZiAoZXJy KSB7DQo+ID4gKyAgICAgICAgICAgICAgIERMQjJfTE9HX0VSUigiZ2V0IHJlc291cmNlcyBlcnI9 JWQgZm9yICVzXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLCBuYW1l KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgICBkbGIyX2lmYWNlX2xvd19sZXZlbF9pb19pbml0KCk7DQo+ID4gKw0KPiA+ ICsgICAgICAgZGxiMl9lbnRyeV9wb2ludHNfaW5pdChkZXYpOw0KPiA+ICsNCj4gPiArICAgICAg IHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQNCj4gPiArZGxiMl9wYXJzZV9wYXJh bXMoY29uc3QgY2hhciAqcGFyYW1zLA0KPiA+ICsgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg Km5hbWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfZGV2YXJncyAqZGxiMl9h cmdzKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4gPiArICAgICAgIHN0YXRp YyBjb25zdCBjaGFyICogY29uc3QgYXJnc1tdID0geyBOVU1BX05PREVfQVJHLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMQjJfTUFYX05VTV9FVkVO VFMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRExC Ml9OVU1fRElSX0NSRURJVFMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgREVWX0lEX0FSRywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBETEIyX1FJRF9ERVBUSF9USFJFU0hfQVJHLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMQjJfQ09TX0FSRywNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIH07DQo+ID4g Kw0KPiA+ICsgICAgICAgaWYgKHBhcmFtcyAhPSBOVUxMICYmIHBhcmFtc1swXSAhPSAnXDAnKSB7 DQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfa3ZhcmdzICprdmxpc3QgPSBydGVfa3Zh cmdzX3BhcnNlKHBhcmFtcywgYXJncyk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAo a3ZsaXN0ID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBSVEVfTE9HKElO Rk8sIFBNRCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyB1 bnN1cHBvcnRlZCBwYXJhbWV0ZXJzIHdoZW4gY3JlYXRpbmcgZGV2aWNlDQo+ICclcydcbiIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsNCj4gPiArICAgICAgICAg ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gcnRl X2t2YXJnc19wcm9jZXNzKGt2bGlzdCwgTlVNQV9OT0RFX0FSRywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9udW1hX25vZGUsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm ZGxiMl9hcmdzLT5zb2NrZXRfaWQpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChy ZXQgIT0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRExCMl9MT0df RVJSKCIlczogRXJyb3IgcGFyc2luZyBudW1hIG5vZGUgcGFyYW1ldGVyIiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9rdmFyZ3NfZnJlZShrdmxpc3QpOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9 IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsIERMQjJfTUFYX05VTV9FVkVOVFMsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9tYXhfbnVt X2V2ZW50cywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmRsYjJfYXJncy0+bWF4X251bV9ldmVudHMpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGlmIChyZXQgIT0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRExCMl9MT0dfRVJSKCIlczogRXJyb3IgcGFyc2luZyBtYXhfbnVtX2V2ZW50cw0KPiBwYXJh bWV0ZXIiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5hbWUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX2t2YXJnc19m cmVlKGt2bGlzdCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRExCMl9OVU1fRElSX0NSRURJVFMs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9udW1fZGly X2NyZWRpdHMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZk bGIyX2FyZ3MtPm51bV9kaXJfY3JlZGl0c19vdmVycmlkZSk7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHJldCAhPSAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBETEIyX0xPR19FUlIoIiVzOiBFcnJvciBwYXJzaW5nIG51bV9kaXJfY3JlZGl0cw0KPiBw YXJhbWV0ZXIiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX2t2YXJn c19mcmVlKGt2bGlzdCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwgREVWX0lE X0FSRywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2V0X2Rldl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmRsYjJfYXJncy0+ZGV2X2lkKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmV0ICE9IDApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERMQjJfTE9HX0VSUigiJXM6IEVycm9yIHBhcnNpbmcgZGV2X2lkIHBhcmFtZXRlciIsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGVfa3ZhcmdzX2ZyZWUoa3ZsaXN0KTsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZXQgPSBydGVfa3ZhcmdzX3Byb2Nlc3MoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGt2bGlzdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRExCMl9RSURfREVQVEhfVEhSRVNIX0FSRywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3FpZF9kZXB0aF90aHJlc2gsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbGIyX2FyZ3MtPnFpZF9kZXB0 aF90aHJlc2hvbGRzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ICE9IDAp IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMQjJfTE9HX0VSUigiJXM6 IEVycm9yIHBhcnNpbmcgcWlkX2RlcHRoX3RocmVzaA0KPiBwYXJhbWV0ZXIiLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX2t2YXJnc19mcmVlKGt2bGlzdCk7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwgRExCMl9DT1NfQVJHLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY29zLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGxiMl9hcmdz LT5jb3NfaWQpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgew0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRExCMl9MT0dfRVJSKCIlczogRXJy b3IgcGFyc2luZyBjb3MgcGFyYW1ldGVyIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJ0ZV9rdmFyZ3NfZnJlZShrdmxpc3QpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9rdmFyZ3NfZnJlZShrdmxpc3Qp Ow0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICt9DQo+ID4gK1JURV9MT0dfUkVHSVNURVIoZXZlbnRkZXZfZGxiMl9sb2df bGV2ZWwsIHBtZC5ldmVudC5kbGIyLCBOT1RJQ0UpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2V2ZW50L2RsYjIvZGxiMl9pZmFjZS5jIGIvZHJpdmVycy9ldmVudC9kbGIyL2RsYjJfaWZhY2Uu Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMGQ5M2ZhZg0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2V2ZW50L2RsYjIvZGxiMl9pZmFj ZS5jDQo+ID4gQEAgLTAsMCArMSwyOCBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIwMjAgSW50ZWwgQ29y cG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSAiZGxiMl9wcml2LmgiDQo+ID4gKw0KPiA+ICsvKiBETEIyIFBNRCBJ bnRlcm5hbCBpbnRlcmZhY2UgZnVuY3Rpb24gcG9pbnRlcnMuDQo+ID4gKyAqIElmIFZERVYgKGJp ZnVyY2F0ZWQgUE1EKSwgIHRoZXNlIHdpbGwgcmVzb2x2ZSB0byBmdW5jdGlvbnMgdGhhdCBpc3N1 ZSBpb2N0bHMNCj4gPiArICogc2VydmljZWQgYnkgRExCIGtlcm5lbCBtb2R1bGUuDQo+ID4gKyAq IElmIFBDSSAoUEYgUE1EKSwgIHRoZXNlIHdpbGwgYmUgaW1wbGVtZW50ZWQgbG9jYWxseSBpbiB1 c2VyIG1vZGUuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArdm9pZCAoKmRsYjJfaWZhY2VfbG93X2xl dmVsX2lvX2luaXQpKHZvaWQpOw0KPiA+ICsNCj4gPiAraW50ICgqZGxiMl9pZmFjZV9vcGVuKShz dHJ1Y3QgZGxiMl9od19kZXYgKmhhbmRsZSwgY29uc3QgY2hhciAqbmFtZSk7DQo+ID4gKw0KPiA+ ICtpbnQgKCpkbGIyX2lmYWNlX2dldF9kZXZpY2VfdmVyc2lvbikoc3RydWN0IGRsYjJfaHdfZGV2 ICpoYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4 X3QgKnJldmlzaW9uKTsNCj4gPiArDQo+ID4gK3ZvaWQgKCpkbGIyX2lmYWNlX2hhcmR3YXJlX2lu aXQpKHN0cnVjdCBkbGIyX2h3X2RldiAqaGFuZGxlKTsNCj4gPiArDQo+ID4gK2ludCAoKmRsYjJf aWZhY2VfZ2V0X2NxX3BvbGxfbW9kZSkoc3RydWN0IGRsYjJfaHdfZGV2ICpoYW5kbGUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRsYjJfY3FfcG9sbF9tb2Rl cyAqbW9kZSk7DQo+ID4gKw0KPiA+ICtpbnQgKCpkbGIyX2lmYWNlX2dldF9udW1fcmVzb3VyY2Vz KShzdHJ1Y3QgZGxiMl9od19kZXYgKmhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9nZXRfbnVtX3Jlc291cmNlc19hcmdzICpyc3Jjcyk7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXZlbnQvZGxiMi9kbGIyX2lmYWNlLmggYi9kcml2 ZXJzL2V2ZW50L2RsYjIvZGxiMl9pZmFjZS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwLi40ZmI0MTZlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2Ry aXZlcnMvZXZlbnQvZGxiMi9kbGIyX2lmYWNlLmgNCj4gPiBAQCAtMCwwICsxLDI5IEBADQo+ID4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJp Z2h0KGMpIDIwMTYtMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ID4g KyNpZm5kZWYgX0RMQjJfSUZBQ0VfSF8NCj4gPiArI2RlZmluZSBfRExCMl9JRkFDRV9IXw0KPiA+ ICsNCj4gPiArLyogRExCMiBQTUQgSW50ZXJuYWwgaW50ZXJmYWNlIGZ1bmN0aW9uIHBvaW50ZXJz Lg0KPiA+ICsgKiBJZiBWREVWIChiaWZ1cmNhdGVkIFBNRCksICB0aGVzZSB3aWxsIHJlc29sdmUg dG8gZnVuY3Rpb25zIHRoYXQgaXNzdWUgaW9jdGxzDQo+ID4gKyAqIHNlcnZpY2VkIGJ5IERMQiBr ZXJuZWwgbW9kdWxlLg0KPiA+ICsgKiBJZiBQQ0kgKFBGIFBNRCksICB0aGVzZSB3aWxsIGJlIGlt cGxlbWVudGVkIGxvY2FsbHkgaW4gdXNlciBtb2RlLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gK2V4 dGVybiB2b2lkICgqZGxiMl9pZmFjZV9sb3dfbGV2ZWxfaW9faW5pdCkodm9pZCk7DQo+ID4gKw0K PiA+ICtleHRlcm4gaW50ICgqZGxiMl9pZmFjZV9vcGVuKShzdHJ1Y3QgZGxiMl9od19kZXYgKmhh bmRsZSwgY29uc3QgY2hhcg0KPiAqbmFtZSk7DQo+ID4gKw0KPiA+ICtleHRlcm4gaW50ICgqZGxi Ml9pZmFjZV9nZXRfZGV2aWNlX3ZlcnNpb24pKHN0cnVjdCBkbGIyX2h3X2RldiAqaGFuZGxlLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq cmV2aXNpb24pOw0KPiA+ICsNCj4gPiArZXh0ZXJuIHZvaWQgKCpkbGIyX2lmYWNlX2hhcmR3YXJl X2luaXQpKHN0cnVjdCBkbGIyX2h3X2RldiAqaGFuZGxlKTsNCj4gPiArDQo+ID4gK2V4dGVybiBp bnQgKCpkbGIyX2lmYWNlX2dldF9jcV9wb2xsX21vZGUpKHN0cnVjdCBkbGIyX2h3X2RldiAqaGFu ZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g ZGxiMl9jcV9wb2xsX21vZGVzICptb2RlKTsNCj4gPiArDQo+ID4gK2V4dGVybiBpbnQgKCpkbGIy X2lmYWNlX2dldF9udW1fcmVzb3VyY2VzKShzdHJ1Y3QgZGxiMl9od19kZXYgKmhhbmRsZSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2dldF9udW1fcmVz b3VyY2VzX2FyZ3MgKnJzcmNzKTsNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBfRExCMl9JRkFDRV9I XyAqLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2V2ZW50L2RsYjIvbWVzb24uYnVpbGQgYi9k cml2ZXJzL2V2ZW50L2RsYjIvbWVzb24uYnVpbGQNCj4gPiBpbmRleCA1NGJhMmM4Li45OWI3MWY5 IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZXZlbnQvZGxiMi9tZXNvbi5idWlsZA0KPiA+ICsr KyBiL2RyaXZlcnMvZXZlbnQvZGxiMi9tZXNvbi5idWlsZA0KPiA+IEBAIC0xLDcgKzEsMTEgQEAN Cj4gPiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gICMgQ29w eXJpZ2h0KGMpIDIwMTktMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+DQo+ID4gLXNvdXJjZXMg PSBmaWxlcygNCj4gPiArc291cmNlcyA9IGZpbGVzKCdkbGIyLmMnLA0KPiA+ICsgICAgICAgICAg ICAgICAnZGxiMl9pZmFjZS5jJywNCj4gPiArICAgICAgICAgICAgICAgJ3BmL2RsYjJfbWFpbi5j JywNCj4gPiArICAgICAgICAgICAgICAgJ3BmL2RsYjJfcGYuYycsDQo+ID4gKyAgICAgICAgICAg ICAgICdwZi9iYXNlL2RsYjJfcmVzb3VyY2UuYycNCj4gPiAgKQ0KPiA+DQo+ID4gIGRlcHMgKz0g WydtYnVmJywgJ21lbXBvb2wnLCAncmluZycsICdwY2knLCAnYnVzX3BjaSddDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfaHdfdHlwZXMuaA0KPiBiL2Ry aXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfaHdfdHlwZXMuaA0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uNDI4YTVlOA0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFzZS9kbGIyX2h3X3R5cGVzLmgNCj4g PiBAQCAtMCwwICsxLDM2NyBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIwMjAgSW50ZWwgQ29ycG9yYXRp b24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fRExCMl9IV19UWVBFU19IDQo+ID4g KyNkZWZpbmUgX19ETEIyX0hXX1RZUEVTX0gNCj4gPiArDQo+ID4gKyNpbmNsdWRlICJkbGIyX3Vz ZXIuaCINCj4gPiArDQo+ID4gKyNpbmNsdWRlICJkbGIyX29zZGVwX2xpc3QuaCINCj4gPiArI2lu Y2x1ZGUgImRsYjJfb3NkZXBfdHlwZXMuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9NQVhf TlVNX1ZERVZTICAgICAgICAgICAgICAgICAgICAgMTYNCj4gPiArI2RlZmluZSBETEIyX01BWF9O VU1fRE9NQUlOUyAgICAgICAgICAgICAgICAgICAzMg0KPiA+ICsjZGVmaW5lIERMQjJfTUFYX05V TV9MREJfUVVFVUVTICAgICAgICAgICAgICAgICAgICAgICAgMzIgLyogTERCID09IGxvYWQtDQo+ IGJhbGFuY2VkICovDQo+ID4gKyNkZWZpbmUgRExCMl9NQVhfTlVNX0RJUl9RVUVVRVMgICAgICAg ICAgICAgICAgICAgICAgICA2NCAvKiBESVIgPT0gZGlyZWN0ZWQgKi8NCj4gPiArI2RlZmluZSBE TEIyX01BWF9OVU1fTERCX1BPUlRTICAgICAgICAgICAgICAgICA2NA0KPiA+ICsjZGVmaW5lIERM QjJfTUFYX05VTV9ESVJfUE9SVFMgICAgICAgICAgICAgICAgIDY0DQo+ID4gKyNkZWZpbmUgRExC Ml9NQVhfTlVNX0xEQl9DUkVESVRTICAgICAgICAgICAgICAgKDggKiAxMDI0KQ0KPiA+ICsjZGVm aW5lIERMQjJfTUFYX05VTV9ESVJfQ1JFRElUUyAgICAgICAgICAgICAgICgyICogMTAyNCkNCj4g PiArI2RlZmluZSBETEIyX01BWF9OVU1fSElTVF9MSVNUX0VOVFJJRVMgICAgICAgICAyMDQ4DQo+ ID4gKyNkZWZpbmUgRExCMl9NQVhfTlVNX0FRRURfRU5UUklFUyAgICAgICAgICAgICAgMjA0OA0K PiA+ICsjZGVmaW5lIERMQjJfTUFYX05VTV9RSURTX1BFUl9MREJfQ1EgICAgICAgICAgIDgNCj4g PiArI2RlZmluZSBETEIyX01BWF9OVU1fU0VRVUVOQ0VfTlVNQkVSX0dST1VQUyAgICAyDQo+ID4g KyNkZWZpbmUgRExCMl9NQVhfTlVNX1NFUVVFTkNFX05VTUJFUl9NT0RFUyAgICAgNQ0KPiA+ICsj ZGVmaW5lIERMQjJfUUlEX1BSSU9SSVRJRVMgICAgICAgICAgICAgICAgICAgIDgNCj4gPiArI2Rl ZmluZSBETEIyX05VTV9BUkJfV0VJR0hUUyAgICAgICAgICAgICAgICAgICA4DQo+ID4gKyNkZWZp bmUgRExCMl9NQVhfV0VJR0hUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUNCj4g PiArI2RlZmluZSBETEIyX05VTV9DT1NfRE9NQUlOUyAgICAgICAgICAgICAgICAgICA0DQo+ID4g KyNkZWZpbmUgRExCMl9NQVhfQ1FfQ09NUF9DSEVDS19MT09QUyAgICAgICAgICAgNDA5NjAwDQo+ ID4gKyNkZWZpbmUgRExCMl9NQVhfUUlEX0VNUFRZX0NIRUNLX0xPT1BTICAgICAgICAgKDMyICog NjQgKiAxMDI0ICogKDgwMCAvDQo+IDMwKSkNCj4gPiArI2lmZGVmIEZQR0ENCj4gPiArI2RlZmlu ZSBETEIyX0haICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAwMDAN Cj4gPiArI2Vsc2UNCj4gPiArI2RlZmluZSBETEIyX0haICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDgwMDAwMDAwMA0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNkZWZp bmUgUENJX0RFVklDRV9JRF9JTlRFTF9ETEIyX1BGIDB4MjcxMA0KPiA+ICsjZGVmaW5lIFBDSV9E RVZJQ0VfSURfSU5URUxfRExCMl9WRiAweDI3MTENCj4gPiArDQo+ID4gKy8qIEludGVycnVwdCBy ZWxhdGVkIG1hY3JvcyAqLw0KPiA+ICsjZGVmaW5lIERMQjJfUEZfTlVNX05PTl9DUV9JTlRFUlJV UFRfVkVDVE9SUyAxDQo+ID4gKyNkZWZpbmUgRExCMl9QRl9OVU1fQ1FfSU5URVJSVVBUX1ZFQ1RP UlMgICAgIDY0DQo+ID4gKyNkZWZpbmUgRExCMl9QRl9UT1RBTF9OVU1fSU5URVJSVVBUX1ZFQ1RP UlMgXA0KPiA+ICsgICAgICAgKERMQjJfUEZfTlVNX05PTl9DUV9JTlRFUlJVUFRfVkVDVE9SUyAr IFwNCj4gPiArICAgICAgICBETEIyX1BGX05VTV9DUV9JTlRFUlJVUFRfVkVDVE9SUykNCj4gPiAr I2RlZmluZSBETEIyX1BGX05VTV9DT01QUkVTU0VEX01PREVfVkVDVE9SUyBcDQo+ID4gKyAgICAg ICAoRExCMl9QRl9OVU1fTk9OX0NRX0lOVEVSUlVQVF9WRUNUT1JTICsgMSkNCj4gPiArI2RlZmlu ZSBETEIyX1BGX05VTV9QQUNLRURfTU9ERV9WRUNUT1JTIFwNCj4gPiArICAgICAgIERMQjJfUEZf VE9UQUxfTlVNX0lOVEVSUlVQVF9WRUNUT1JTDQo+ID4gKyNkZWZpbmUgRExCMl9QRl9DT01QUkVT U0VEX01PREVfQ1FfVkVDVE9SX0lEIFwNCj4gPiArICAgICAgIERMQjJfUEZfTlVNX05PTl9DUV9J TlRFUlJVUFRfVkVDVE9SUw0KPiA+ICsNCj4gPiArLyogRExCIG5vbi1DUSBpbnRlcnJ1cHRzIChh bGFybSwgbWFpbGJveCwgV0RUKSAqLw0KPiA+ICsjZGVmaW5lIERMQjJfSU5UX05PTl9DUSAwDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQUxBUk1fSFdfU09VUkNFX1NZUyAwDQo+ID4gKyNkZWZp bmUgRExCMl9BTEFSTV9IV19TT1VSQ0VfRExCIDENCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9B TEFSTV9IV19VTklUX0NIUCA0DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQUxBUk1fU1lTX0FJ RF9JTExFR0FMX1FJRCAgICAgICAgIDMNCj4gPiArI2RlZmluZSBETEIyX0FMQVJNX1NZU19BSURf RElTQUJMRURfUUlEICAgICAgICAgICAgICAgIDQNCj4gPiArI2RlZmluZSBETEIyX0FMQVJNX1NZ U19BSURfSUxMRUdBTF9IQ1cgICAgICAgICA1DQo+ID4gKyNkZWZpbmUgRExCMl9BTEFSTV9IV19D SFBfQUlEX0lMTEVHQUxfRU5RICAgICAgMQ0KPiA+ICsjZGVmaW5lIERMQjJfQUxBUk1fSFdfQ0hQ X0FJRF9FWENFU1NfVE9LRU5fUE9QUyAyDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfVkZfTlVN X05PTl9DUV9JTlRFUlJVUFRfVkVDVE9SUyAxDQo+ID4gKyNkZWZpbmUgRExCMl9WRl9OVU1fQ1Ff SU5URVJSVVBUX1ZFQ1RPUlMgICAgIDMxDQo+ID4gKyNkZWZpbmUgRExCMl9WRl9CQVNFX0NRX1ZF Q1RPUl9JRCAgICAgICAgICAgMA0KPiA+ICsjZGVmaW5lIERMQjJfVkZfTEFTVF9DUV9WRUNUT1Jf SUQgICAgICAgICAgIDMwDQo+ID4gKyNkZWZpbmUgRExCMl9WRl9NQk9YX1ZFQ1RPUl9JRCAgICAg ICAgICAgICAgMzENCj4gPiArI2RlZmluZSBETEIyX1ZGX1RPVEFMX05VTV9JTlRFUlJVUFRfVkVD VE9SUyBcDQo+ID4gKyAgICAgICAoRExCMl9WRl9OVU1fTk9OX0NRX0lOVEVSUlVQVF9WRUNUT1JT ICsgXA0KPiA+ICsgICAgICAgIERMQjJfVkZfTlVNX0NRX0lOVEVSUlVQVF9WRUNUT1JTKQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX1ZERVZfTUFYX05VTV9JTlRFUlJVUFRfVkVDVE9SUw0KPiAo RExCMl9NQVhfTlVNX0xEQl9QT1JUUyArIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBETEIyX01BWF9OVU1fRElSX1BPUlRTICsgMSkNCj4gPiArDQo+ ID4gKy8qDQo+ID4gKyAqIEhhcmR3YXJlLWRlZmluZWQgYmFzZSBhZGRyZXNzZXMuIFRob3NlIHBy ZWZpeGVkICdETEIyX0RSVicgYXJlIG9ubHkNCj4gdXNlZCBieQ0KPiA+ICsgKiB0aGUgUEYgZHJp dmVyLg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBETEIyX0RSVl9MREJfUFBfQkFTRSAgIDB4MjMw MDAwMA0KPiA+ICsjZGVmaW5lIERMQjJfRFJWX0xEQl9QUF9TVFJJREUgMHgxMDAwDQo+ID4gKyNk ZWZpbmUgRExCMl9EUlZfTERCX1BQX0JPVU5EICAoRExCMl9EUlZfTERCX1BQX0JBU0UgKyBcDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETEIyX0RSVl9MREJfUFBfU1RSSURF ICoNCj4gRExCMl9NQVhfTlVNX0xEQl9QT1JUUykNCj4gPiArI2RlZmluZSBETEIyX0RSVl9ESVJf UFBfQkFTRSAgIDB4MjIwMDAwMA0KPiA+ICsjZGVmaW5lIERMQjJfRFJWX0RJUl9QUF9TVFJJREUg MHgxMDAwDQo+ID4gKyNkZWZpbmUgRExCMl9EUlZfRElSX1BQX0JPVU5EICAoRExCMl9EUlZfRElS X1BQX0JBU0UgKyBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETEIyX0RS Vl9ESVJfUFBfU1RSSURFICoNCj4gRExCMl9NQVhfTlVNX0RJUl9QT1JUUykNCj4gPiArI2RlZmlu ZSBETEIyX0xEQl9QUF9CQVNFICAgICAgIDB4MjEwMDAwMA0KPiA+ICsjZGVmaW5lIERMQjJfTERC X1BQX1NUUklERSAgICAgMHgxMDAwDQo+ID4gKyNkZWZpbmUgRExCMl9MREJfUFBfQk9VTkQgICAg ICAoRExCMl9MREJfUFBfQkFTRSArIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERMQjJfTERCX1BQX1NUUklERSAqIERMQjJfTUFYX05VTV9MREJfUE9SVFMpDQo+ID4gKyNk ZWZpbmUgRExCMl9MREJfUFBfT0ZGUyhpZCkgICAoRExCMl9MREJfUFBfQkFTRSArIChpZCkgKiBE TEIyX1BQX1NJWkUpDQo+ID4gKyNkZWZpbmUgRExCMl9ESVJfUFBfQkFTRSAgICAgICAweDIwMDAw MDANCj4gPiArI2RlZmluZSBETEIyX0RJUl9QUF9TVFJJREUgICAgIDB4MTAwMA0KPiA+ICsjZGVm aW5lIERMQjJfRElSX1BQX0JPVU5EICAgICAgKERMQjJfRElSX1BQX0JBU0UgKyBcDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETEIyX0RJUl9QUF9TVFJJREUgKiBETEIyX01B WF9OVU1fRElSX1BPUlRTKQ0KPiA+ICsjZGVmaW5lIERMQjJfRElSX1BQX09GRlMoaWQpICAgKERM QjJfRElSX1BQX0JBU0UgKyAoaWQpICogRExCMl9QUF9TSVpFKQ0KPiA+ICsNCj4gPiArc3RydWN0 IGRsYjJfcmVzb3VyY2VfaWQgew0KPiA+ICsgICAgICAgdTMyIHBoeXNfaWQ7DQo+ID4gKyAgICAg ICB1MzIgdmlydF9pZDsNCj4gPiArICAgICAgIHU4IHZkZXZfb3duZWQ7DQo+ID4gKyAgICAgICB1 OCB2ZGV2X2lkOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfZnJlZWxpc3Qgew0K PiA+ICsgICAgICAgdTMyIGJhc2U7DQo+ID4gKyAgICAgICB1MzIgYm91bmQ7DQo+ID4gKyAgICAg ICB1MzIgb2Zmc2V0Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB1MzIgZGxi Ml9mcmVlbGlzdF9jb3VudChzdHJ1Y3QgZGxiMl9mcmVlbGlzdCAqbGlzdCkNCj4gPiArew0KPiA+ ICsgICAgICAgcmV0dXJuIGxpc3QtPmJvdW5kIC0gbGlzdC0+YmFzZSAtIGxpc3QtPm9mZnNldDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfaGN3IHsNCj4gPiArICAgICAgIHU2NCBk YXRhOw0KPiA+ICsgICAgICAgLyogV29yZCAzICovDQo+ID4gKyAgICAgICB1MTYgb3BhcXVlOw0K PiA+ICsgICAgICAgdTggcWlkOw0KPiA+ICsgICAgICAgdTggc2NoZWRfdHlwZToyOw0KPiA+ICsg ICAgICAgdTggcHJpb3JpdHk6MzsNCj4gPiArICAgICAgIHU4IG1zZ190eXBlOjM7DQo+ID4gKyAg ICAgICAvKiBXb3JkIDQgKi8NCj4gPiArICAgICAgIHUxNiBsb2NrX2lkOw0KPiA+ICsgICAgICAg dTggdHNfZmxhZzoxOw0KPiA+ICsgICAgICAgdTggcnN2ZDE6MjsNCj4gPiArICAgICAgIHU4IG5v X2RlYzoxOw0KPiA+ICsgICAgICAgdTggY21wX2lkOjQ7DQo+ID4gKyAgICAgICB1OCBjcV90b2tl bjoxOw0KPiA+ICsgICAgICAgdTggcWVfY29tcDoxOw0KPiA+ICsgICAgICAgdTggcWVfZnJhZzox Ow0KPiA+ICsgICAgICAgdTggcWVfdmFsaWQ6MTsNCj4gPiArICAgICAgIHU4IGludF9hcm06MTsN Cj4gPiArICAgICAgIHU4IGVycm9yOjE7DQo+ID4gKyAgICAgICB1OCByc3ZkOjI7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9sZGJfcXVldWUgew0KPiA+ICsgICAgICAgc3RydWN0 IGRsYjJfbGlzdF9lbnRyeSBkb21haW5fbGlzdDsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2xp c3RfZW50cnkgZnVuY19saXN0Ow0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfcmVzb3VyY2VfaWQg aWQ7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9yZXNvdXJjZV9pZCBkb21haW5faWQ7DQo+ID4g KyAgICAgICB1MzIgbnVtX3FpZF9pbmZsaWdodHM7DQo+ID4gKyAgICAgICB1MzIgYXFlZF9saW1p dDsNCj4gPiArICAgICAgIHUzMiBzbl9ncm91cDsgLyogc24gPT0gc2VxdWVuY2UgbnVtYmVyICov DQo+ID4gKyAgICAgICB1MzIgc25fc2xvdDsNCj4gPiArICAgICAgIHUzMiBudW1fbWFwcGluZ3M7 DQo+ID4gKyAgICAgICB1OCBzbl9jZmdfdmFsaWQ7DQo+ID4gKyAgICAgICB1OCBudW1fcGVuZGlu Z19hZGRpdGlvbnM7DQo+ID4gKyAgICAgICB1OCBvd25lZDsNCj4gPiArICAgICAgIHU4IGNvbmZp Z3VyZWQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBEaXJlY3RlZCBwb3J0cyBh bmQgcXVldWVzIGFyZSBwYWlyZWQgYnkgbmF0dXJlLCBzbyB0aGUgZHJpdmVyIHRyYWNrcyB0aGVt DQo+ID4gKyAqIHdpdGggYSBzaW5nbGUgZGF0YSBzdHJ1Y3R1cmUuDQo+ID4gKyAqLw0KPiA+ICtz dHJ1Y3QgZGxiMl9kaXJfcHFfcGFpciB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9saXN0X2Vu dHJ5IGRvbWFpbl9saXN0Ow0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGlzdF9lbnRyeSBmdW5j X2xpc3Q7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9yZXNvdXJjZV9pZCBpZDsNCj4gPiArICAg ICAgIHN0cnVjdCBkbGIyX3Jlc291cmNlX2lkIGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBy ZWZfY250Ow0KPiA+ICsgICAgICAgdTggaW5pdF90a25fY250Ow0KPiA+ICsgICAgICAgdTggcXVl dWVfY29uZmlndXJlZDsNCj4gPiArICAgICAgIHU4IHBvcnRfY29uZmlndXJlZDsNCj4gPiArICAg ICAgIHU4IG93bmVkOw0KPiA+ICsgICAgICAgdTggZW5hYmxlZDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gK2VudW0gZGxiMl9xaWRfbWFwX3N0YXRlIHsNCj4gPiArICAgICAgIC8qIFRoZSBzbG90IGRv ZXNuJ3QgY29udGFpbiBhIHZhbGlkIHF1ZXVlIG1hcHBpbmcgKi8NCj4gPiArICAgICAgIERMQjJf UVVFVUVfVU5NQVBQRUQsDQo+ID4gKyAgICAgICAvKiBUaGUgc2xvdCBjb250YWlucyBhIHZhbGlk IHF1ZXVlIG1hcHBpbmcgKi8NCj4gPiArICAgICAgIERMQjJfUVVFVUVfTUFQUEVELA0KPiA+ICsg ICAgICAgLyogVGhlIGRyaXZlciBpcyBtYXBwaW5nIGEgcXVldWUgaW50byB0aGlzIHNsb3QgKi8N Cj4gPiArICAgICAgIERMQjJfUVVFVUVfTUFQX0lOX1BST0csDQo+ID4gKyAgICAgICAvKiBUaGUg ZHJpdmVyIGlzIHVubWFwcGluZyBhIHF1ZXVlIGZyb20gdGhpcyBzbG90ICovDQo+ID4gKyAgICAg ICBETEIyX1FVRVVFX1VOTUFQX0lOX1BST0csDQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAg ICogVGhlIGRyaXZlciBpcyB1bm1hcHBpbmcgYSBxdWV1ZSBmcm9tIHRoaXMgc2xvdCwgYW5kIG9u Y2UgY29tcGxldGUNCj4gPiArICAgICAgICAqIHdpbGwgcmVwbGFjZSBpdCB3aXRoIGFub3RoZXIg bWFwcGluZy4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgRExCMl9RVUVVRV9VTk1BUF9J Tl9QUk9HX1BFTkRJTkdfTUFQLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbGRi X3BvcnRfcWlkX21hcCB7DQo+ID4gKyAgICAgICBlbnVtIGRsYjJfcWlkX21hcF9zdGF0ZSBzdGF0 ZTsNCj4gPiArICAgICAgIHUxNiBxaWQ7DQo+ID4gKyAgICAgICB1MTYgcGVuZGluZ19xaWQ7DQo+ ID4gKyAgICAgICB1OCBwcmlvcml0eTsNCj4gPiArICAgICAgIHU4IHBlbmRpbmdfcHJpb3JpdHk7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9sZGJfcG9ydCB7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgZGxiMl9saXN0X2VudHJ5IGRvbWFpbl9saXN0Ow0KPiA+ICsgICAgICAgc3RydWN0 IGRsYjJfbGlzdF9lbnRyeSBmdW5jX2xpc3Q7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9yZXNv dXJjZV9pZCBpZDsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX3Jlc291cmNlX2lkIGRvbWFpbl9p ZDsNCj4gPiArICAgICAgIC8qIFRoZSBxaWRfbWFwIHJlcHJlc2VudHMgdGhlIGhhcmR3YXJlIFFJ RCBtYXBwaW5nIHN0YXRlLiAqLw0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGRiX3BvcnRfcWlk X21hcA0KPiBxaWRfbWFwW0RMQjJfTUFYX05VTV9RSURTX1BFUl9MREJfQ1FdOw0KPiA+ICsgICAg ICAgdTMyIGhpc3RfbGlzdF9lbnRyeV9iYXNlOw0KPiA+ICsgICAgICAgdTMyIGhpc3RfbGlzdF9l bnRyeV9saW1pdDsNCj4gPiArICAgICAgIHUzMiByZWZfY250Ow0KPiA+ICsgICAgICAgdTggaW5p dF90a25fY250Ow0KPiA+ICsgICAgICAgdTggbnVtX3BlbmRpbmdfcmVtb3ZhbHM7DQo+ID4gKyAg ICAgICB1OCBudW1fbWFwcGluZ3M7DQo+ID4gKyAgICAgICB1OCBvd25lZDsNCj4gPiArICAgICAg IHU4IGVuYWJsZWQ7DQo+ID4gKyAgICAgICB1OCBjb25maWd1cmVkOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArc3RydWN0IGRsYjJfc25fZ3JvdXAgew0KPiA+ICsgICAgICAgdTMyIG1vZGU7DQo+ID4g KyAgICAgICB1MzIgc2VxdWVuY2VfbnVtYmVyc19wZXJfcXVldWU7DQo+ID4gKyAgICAgICB1MzIg c2xvdF91c2VfYml0bWFwOw0KPiA+ICsgICAgICAgdTMyIGlkOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RhdGljIGlubGluZSBib29sIGRsYjJfc25fZ3JvdXBfZnVsbChzdHJ1Y3QgZGxiMl9zbl9n cm91cCAqZ3JvdXApDQo+ID4gK3sNCj4gPiArICAgICAgIHUzMiBtYXNrW10gPSB7DQo+ID4gKyAg ICAgICAgICAgICAgIDB4MDAwMGZmZmYsICAvKiA2NCBTTnMgcGVyIHF1ZXVlICovDQo+ID4gKyAg ICAgICAgICAgICAgIDB4MDAwMDAwZmYsICAvKiAxMjggU05zIHBlciBxdWV1ZSAqLw0KPiA+ICsg ICAgICAgICAgICAgICAweDAwMDAwMDBmLCAgLyogMjU2IFNOcyBwZXIgcXVldWUgKi8NCj4gPiAr ICAgICAgICAgICAgICAgMHgwMDAwMDAwMywgIC8qIDUxMiBTTnMgcGVyIHF1ZXVlICovDQo+ID4g KyAgICAgICAgICAgICAgIDB4MDAwMDAwMDF9OyAvKiAxMDI0IFNOcyBwZXIgcXVldWUgKi8NCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gZ3JvdXAtPnNsb3RfdXNlX2JpdG1hcCA9PSBtYXNrW2dy b3VwLT5tb2RlXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBpbnQgZGxiMl9z bl9ncm91cF9hbGxvY19zbG90KHN0cnVjdCBkbGIyX3NuX2dyb3VwICpncm91cCkNCj4gPiArew0K PiA+ICsgICAgICAgdTMyIGJvdW5kWzZdID0gezE2LCA4LCA0LCAyLCAxfTsNCj4gPiArICAgICAg IHUzMiBpOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBib3VuZFtncm91cC0+ bW9kZV07IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoIShncm91cC0+c2xvdF91c2Vf Yml0bWFwICYgKDEgPDwgaSkpKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAt PnNsb3RfdXNlX2JpdG1hcCB8PSAxIDw8IGk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgICByZXR1cm4gLTE7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUg dm9pZA0KPiA+ICtkbGIyX3NuX2dyb3VwX2ZyZWVfc2xvdChzdHJ1Y3QgZGxiMl9zbl9ncm91cCAq Z3JvdXAsIGludCBzbG90KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBncm91cC0+c2xvdF91c2VfYml0 bWFwICY9IH4oMSA8PCBzbG90KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBp bnQgZGxiMl9zbl9ncm91cF91c2VkX3Nsb3RzKHN0cnVjdCBkbGIyX3NuX2dyb3VwICpncm91cCkN Cj4gPiArew0KPiA+ICsgICAgICAgaW50IGksIGNudCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAg Zm9yIChpID0gMDsgaSA8IDMyOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIGNudCArPSAhIShn cm91cC0+c2xvdF91c2VfYml0bWFwICYgKDEgPDwgaSkpOw0KPiA+ICsNCj4gPiArICAgICAgIHJl dHVybiBjbnQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX2h3X2RvbWFpbiB7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9mdW5jdGlvbl9yZXNvdXJjZXMgKnBhcmVudF9mdW5jOw0K PiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGlzdF9lbnRyeSBmdW5jX2xpc3Q7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgZGxiMl9saXN0X2hlYWQgdXNlZF9sZGJfcXVldWVzOw0KPiA+ICsgICAgICAgc3Ry dWN0IGRsYjJfbGlzdF9oZWFkIHVzZWRfbGRiX3BvcnRzW0RMQjJfTlVNX0NPU19ET01BSU5TXTsN Cj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2xpc3RfaGVhZCB1c2VkX2Rpcl9wcV9wYWlyczsNCj4g PiArICAgICAgIHN0cnVjdCBkbGIyX2xpc3RfaGVhZCBhdmFpbF9sZGJfcXVldWVzOw0KPiA+ICsg ICAgICAgc3RydWN0IGRsYjJfbGlzdF9oZWFkIGF2YWlsX2xkYl9wb3J0c1tETEIyX05VTV9DT1Nf RE9NQUlOU107DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9saXN0X2hlYWQgYXZhaWxfZGlyX3Bx X3BhaXJzOw0KPiA+ICsgICAgICAgdTMyIHRvdGFsX2hpc3RfbGlzdF9lbnRyaWVzOw0KPiA+ICsg ICAgICAgdTMyIGF2YWlsX2hpc3RfbGlzdF9lbnRyaWVzOw0KPiA+ICsgICAgICAgdTMyIGhpc3Rf bGlzdF9lbnRyeV9iYXNlOw0KPiA+ICsgICAgICAgdTMyIGhpc3RfbGlzdF9lbnRyeV9vZmZzZXQ7 DQo+ID4gKyAgICAgICB1MzIgbnVtX2xkYl9jcmVkaXRzOw0KPiA+ICsgICAgICAgdTMyIG51bV9k aXJfY3JlZGl0czsNCj4gPiArICAgICAgIHUzMiBudW1fYXZhaWxfYXFlZF9lbnRyaWVzOw0KPiA+ ICsgICAgICAgdTMyIG51bV91c2VkX2FxZWRfZW50cmllczsNCj4gPiArICAgICAgIHN0cnVjdCBk bGIyX3Jlc291cmNlX2lkIGlkOw0KPiA+ICsgICAgICAgaW50IG51bV9wZW5kaW5nX3JlbW92YWxz Ow0KPiA+ICsgICAgICAgaW50IG51bV9wZW5kaW5nX2FkZGl0aW9uczsNCj4gPiArICAgICAgIHU4 IGNvbmZpZ3VyZWQ7DQo+ID4gKyAgICAgICB1OCBzdGFydGVkOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RydWN0IGRsYjJfYml0bWFwOw0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfZnVuY3Rpb25f cmVzb3VyY2VzIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2xpc3RfaGVhZCBhdmFpbF9kb21h aW5zOw0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGlzdF9oZWFkIHVzZWRfZG9tYWluczsNCj4g PiArICAgICAgIHN0cnVjdCBkbGIyX2xpc3RfaGVhZCBhdmFpbF9sZGJfcXVldWVzOw0KPiA+ICsg ICAgICAgc3RydWN0IGRsYjJfbGlzdF9oZWFkIGF2YWlsX2xkYl9wb3J0c1tETEIyX05VTV9DT1Nf RE9NQUlOU107DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9saXN0X2hlYWQgYXZhaWxfZGlyX3Bx X3BhaXJzOw0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfYml0bWFwICphdmFpbF9oaXN0X2xpc3Rf ZW50cmllczsNCj4gPiArICAgICAgIHUzMiBudW1fYXZhaWxfZG9tYWluczsNCj4gPiArICAgICAg IHUzMiBudW1fYXZhaWxfbGRiX3F1ZXVlczsNCj4gPiArICAgICAgIHUzMiBudW1fYXZhaWxfbGRi X3BvcnRzW0RMQjJfTlVNX0NPU19ET01BSU5TXTsNCj4gPiArICAgICAgIHUzMiBudW1fYXZhaWxf ZGlyX3BxX3BhaXJzOw0KPiA+ICsgICAgICAgdTMyIG51bV9hdmFpbF9xZWRfZW50cmllczsNCj4g PiArICAgICAgIHUzMiBudW1fYXZhaWxfZHFlZF9lbnRyaWVzOw0KPiA+ICsgICAgICAgdTMyIG51 bV9hdmFpbF9hcWVkX2VudHJpZXM7DQo+ID4gKyAgICAgICB1OCBsb2NrZWQ7IC8qIChWREVWIG9u bHkpICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBBZnRlciBpbml0aWFsaXph dGlvbiwgZWFjaCByZXNvdXJjZSBpbiBkbGIyX2h3X3Jlc291cmNlcyBpcyBsb2NhdGVkIGluIG9u ZQ0KPiA+ICsgKiBvZiB0aGUgZm9sbG93aW5nIGxpc3RzOg0KPiA+ICsgKiAtLSBUaGUgUEYncyBh dmFpbGFibGUgcmVzb3VyY2VzIGxpc3QuIFRoZXNlIGFyZSB1bmNvbmZpZ3VyZWQgcmVzb3VyY2Vz DQo+IG93bmVkDQo+ID4gKyAqICAgICBieSB0aGUgUEYgYW5kIG5vdCBhbGxvY2F0ZWQgdG8gYSBk bGIyIHNjaGVkdWxpbmcgZG9tYWluLg0KPiA+ICsgKiAtLSBBIFZERVYncyBhdmFpbGFibGUgcmVz b3VyY2VzIGxpc3QuIFRoZXNlIGFyZSBWREVWLW93bmVkIHVuY29uZmlndXJlZA0KPiA+ICsgKiAg ICAgcmVzb3VyY2VzIG5vdCBhbGxvY2F0ZWQgdG8gYSBkbGIyIHNjaGVkdWxpbmcgZG9tYWluLg0K PiA+ICsgKiAtLSBBIGRvbWFpbidzIGF2YWlsYWJsZSByZXNvdXJjZXMgbGlzdC4gVGhlc2UgYXJl IGRvbWFpbi1vd25lZA0KPiB1bmNvbmZpZ3VyZWQNCj4gPiArICogICAgIHJlc291cmNlcy4NCj4g PiArICogLS0gQSBkb21haW4ncyB1c2VkIHJlc291cmNlcyBsaXN0LiBUaGVzZSBhcmUgYXJlIGRv bWFpbi1vd25lZCBjb25maWd1cmVkDQo+ID4gKyAqICAgICByZXNvdXJjZXMuDQo+ID4gKyAqDQo+ ID4gKyAqIEEgcmVzb3VyY2UgbW92ZXMgdG8gYSBuZXcgbGlzdCB3aGVuIGEgVkRFViBvciBkb21h aW4gaXMgY3JlYXRlZCBvcg0KPiBkZXN0cm95ZWQsDQo+ID4gKyAqIG9yIHdoZW4gdGhlIHJlc291 cmNlIGlzIGNvbmZpZ3VyZWQuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgZGxiMl9od19yZXNvdXJj ZXMgew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGRiX3F1ZXVlIGxkYl9xdWV1ZXNbRExCMl9N QVhfTlVNX0xEQl9RVUVVRVNdOw0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGRiX3BvcnQgbGRi X3BvcnRzW0RMQjJfTUFYX05VTV9MREJfUE9SVFNdOw0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJf ZGlyX3BxX3BhaXIgZGlyX3BxX3BhaXJzW0RMQjJfTUFYX05VTV9ESVJfUE9SVFNdOw0KPiA+ICsg ICAgICAgc3RydWN0IGRsYjJfc25fZ3JvdXANCj4gc25fZ3JvdXBzW0RMQjJfTUFYX05VTV9TRVFV RU5DRV9OVU1CRVJfR1JPVVBTXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21i b3ggew0KPiA+ICsgICAgICAgdTMyICptYm94Ow0KPiA+ICsgICAgICAgdTMyICppc3JfaW5fcHJv Z3Jlc3M7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9zd19tYm94IHsNCj4gPiAr ICAgICAgIHN0cnVjdCBkbGIyX21ib3ggdmRldl90b19wZjsNCj4gPiArICAgICAgIHN0cnVjdCBk bGIyX21ib3ggcGZfdG9fdmRldjsNCj4gPiArICAgICAgIHZvaWQgKCpwZl90b192ZGV2X2luamVj dCkodm9pZCAqYXJnKTsNCj4gPiArICAgICAgIHZvaWQgKnBmX3RvX3ZkZXZfaW5qZWN0X2FyZzsN Cj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX2h3IHsNCj4gPiArICAgICAgIC8qIEJB UiAwIGFkZHJlc3MgKi8NCj4gPiArICAgICAgIHZvaWQgICpjc3Jfa3ZhOw0KPiA+ICsgICAgICAg dW5zaWduZWQgbG9uZyBjc3JfcGh5c19hZGRyOw0KPiA+ICsgICAgICAgLyogQkFSIDIgYWRkcmVz cyAqLw0KPiA+ICsgICAgICAgdm9pZCAgKmZ1bmNfa3ZhOw0KPiA+ICsgICAgICAgdW5zaWduZWQg bG9uZyBmdW5jX3BoeXNfYWRkcjsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBSZXNvdXJjZSB0cmFj a2luZyAqLw0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfaHdfcmVzb3VyY2VzIHJzcmNzOw0KPiA+ ICsgICAgICAgc3RydWN0IGRsYjJfZnVuY3Rpb25fcmVzb3VyY2VzIHBmOw0KPiA+ICsgICAgICAg c3RydWN0IGRsYjJfZnVuY3Rpb25fcmVzb3VyY2VzIHZkZXZbRExCMl9NQVhfTlVNX1ZERVZTXTsN Cj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2h3X2RvbWFpbiBkb21haW5zW0RMQjJfTUFYX05VTV9E T01BSU5TXTsNCj4gPiArICAgICAgIHU4IGNvc19yZXNlcnZhdGlvbltETEIyX05VTV9DT1NfRE9N QUlOU107DQo+ID4gKw0KPiA+ICsgICAgICAgLyogVmlydHVhbGl6YXRpb24gKi8NCj4gPiArICAg ICAgIGludCB2aXJ0X21vZGU7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9zd19tYm94IG1ib3hb RExCMl9NQVhfTlVNX1ZERVZTXTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBwYXNpZFtETEIy X01BWF9OVU1fVkRFVlNdOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9fRExCMl9I V19UWVBFU19IICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNl L2RsYjJfbWJveC5oDQo+IGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9tYm94LmgN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmNlNDYyYzANCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxi Ml9tYm94LmgNCj4gPiBAQCAtMCwwICsxLDU5NiBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIwMjAgSW50 ZWwgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fRExCMl9CQVNF X0RMQjJfTUJPWF9IDQo+ID4gKyNkZWZpbmUgX19ETEIyX0JBU0VfRExCMl9NQk9YX0gNCj4gPiAr DQo+ID4gKyNpbmNsdWRlICJkbGIyX29zZGVwX3R5cGVzLmgiDQo+ID4gKyNpbmNsdWRlICJkbGIy X3JlZ3MuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9NQk9YX0lOVEVSRkFDRV9WRVJTSU9O IDENCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFRoZSBQRiB1c2VzIGl0cyBQRi0+VkYgbWFpbGJv eCB0byBzZW5kIHJlc3BvbnNlcyB0byBWRiByZXF1ZXN0cywgYXMgd2VsbCBhcw0KPiA+ICsgKiB0 byBzZW5kIHJlcXVlc3RzIG9mIGl0cyBvd24gKGUuZy4gbm90aWZ5aW5nIGEgVkYgb2YgYW4gaW1w ZW5kaW5nIEZMUikuDQo+ID4gKyAqIFRvIGF2b2lkIGNvbW11bmljYXRpb24gcmFjZSBjb25kaXRp b25zLCBlLmcuIHRoZSBQRiBzZW5kcyBhIHJlc3BvbnNlIGFuZA0KPiB0aGVuDQo+ID4gKyAqIHNl bmRzIGEgcmVxdWVzdCBiZWZvcmUgdGhlIFZGIHJlYWRzIHRoZSByZXNwb25zZSwgdGhlIFBGLT5W RiBtYWlsYm94IGlzDQo+ID4gKyAqIGRpdmlkZWQgaW50byB0d28gc2VjdGlvbnM6DQo+ID4gKyAq IC0gQnl0ZXMgMC00NzogUEYgcmVzcG9uc2VzDQo+ID4gKyAqIC0gQnl0ZXMgNDgtNjM6IFBGIHJl cXVlc3RzDQo+ID4gKyAqDQo+ID4gKyAqIFBhcnRpdGlvbmluZyB0aGUgUEYtPlZGIG1haWxib3gg YWxsb3dzIHJlc3BvbnNlcyBhbmQgcmVxdWVzdHMgdG8gb2NjdXB5DQo+IHRoZQ0KPiA+ICsgKiBt YWlsYm94IHNpbXVsdGFuZW91c2x5Lg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBETEIyX1BGMlZG X1JFU1BfQllURVMgICAgNDgNCj4gPiArI2RlZmluZSBETEIyX1BGMlZGX1JFU1BfQkFTRSAgICAg MA0KPiA+ICsjZGVmaW5lIERMQjJfUEYyVkZfUkVTUF9CQVNFX1dPUkQgKERMQjJfUEYyVkZfUkVT UF9CQVNFIC8gNCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9QRjJWRl9SRVFfQllURVMgICAg IDE2DQo+ID4gKyNkZWZpbmUgRExCMl9QRjJWRl9SRVFfQkFTRSAgICAgIChETEIyX1BGMlZGX1JF U1BfQkFTRSArDQo+IERMQjJfUEYyVkZfUkVTUF9CWVRFUykNCj4gPiArI2RlZmluZSBETEIyX1BG MlZGX1JFUV9CQVNFX1dPUkQgIChETEIyX1BGMlZGX1JFUV9CQVNFIC8gNCkNCj4gPiArDQo+ID4g Ky8qDQo+ID4gKyAqIFNpbWlsYXJseSwgdGhlIFZGLT5QRiBtYWlsYm94IGlzIGRpdmlkZWQgaW50 byB0d28gc2VjdGlvbnM6DQo+ID4gKyAqIC0gQnl0ZXMgMC0yMzk6IFZGIHJlcXVlc3RzDQo+ID4g KyAqIC0tIChCeXRlcyAwLTMgYXJlIHVudXNlZCBkdWUgdG8gYSBoYXJkd2FyZSBlcnJhdGEpDQo+ ID4gKyAqIC0gQnl0ZXMgMjQwLTI1NTogVkYgcmVzcG9uc2VzDQo+ID4gKyAqLw0KPiA+ICsjZGVm aW5lIERMQjJfVkYyUEZfUkVRX0JZVEVTICAgIDIzNg0KPiA+ICsjZGVmaW5lIERMQjJfVkYyUEZf UkVRX0JBU0UgICAgIDQNCj4gPiArI2RlZmluZSBETEIyX1ZGMlBGX1JFUV9CQVNFX1dPUkQgKERM QjJfVkYyUEZfUkVRX0JBU0UgLyA0KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1ZGMlBGX1JF U1BfQllURVMgICAgMTYNCj4gPiArI2RlZmluZSBETEIyX1ZGMlBGX1JFU1BfQkFTRSAgICAgKERM QjJfVkYyUEZfUkVRX0JBU0UgKw0KPiBETEIyX1ZGMlBGX1JFUV9CWVRFUykNCj4gPiArI2RlZmlu ZSBETEIyX1ZGMlBGX1JFU1BfQkFTRV9XT1JEIChETEIyX1ZGMlBGX1JFU1BfQkFTRSAvIDQpDQo+ ID4gKw0KPiA+ICsvKiBWRi1pbml0aWF0ZWQgY29tbWFuZHMgKi8NCj4gPiArZW51bSBkbGIyX21i b3hfY21kX3R5cGUgew0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9SRUdJU1RFUiwNCj4gPiAr ICAgICAgIERMQjJfTUJPWF9DTURfVU5SRUdJU1RFUiwNCj4gPiArICAgICAgIERMQjJfTUJPWF9D TURfR0VUX05VTV9SRVNPVVJDRVMsDQo+ID4gKyAgICAgICBETEIyX01CT1hfQ01EX0NSRUFURV9T Q0hFRF9ET01BSU4sDQo+ID4gKyAgICAgICBETEIyX01CT1hfQ01EX1JFU0VUX1NDSEVEX0RPTUFJ TiwNCj4gPiArICAgICAgIERMQjJfTUJPWF9DTURfQ1JFQVRFX0xEQl9RVUVVRSwNCj4gPiArICAg ICAgIERMQjJfTUJPWF9DTURfQ1JFQVRFX0RJUl9RVUVVRSwNCj4gPiArICAgICAgIERMQjJfTUJP WF9DTURfQ1JFQVRFX0xEQl9QT1JULA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9DUkVBVEVf RElSX1BPUlQsDQo+ID4gKyAgICAgICBETEIyX01CT1hfQ01EX0VOQUJMRV9MREJfUE9SVCwNCj4g PiArICAgICAgIERMQjJfTUJPWF9DTURfRElTQUJMRV9MREJfUE9SVCwNCj4gPiArICAgICAgIERM QjJfTUJPWF9DTURfRU5BQkxFX0RJUl9QT1JULA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9E SVNBQkxFX0RJUl9QT1JULA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9MREJfUE9SVF9PV05F RF9CWV9ET01BSU4sDQo+ID4gKyAgICAgICBETEIyX01CT1hfQ01EX0RJUl9QT1JUX09XTkVEX0JZ X0RPTUFJTiwNCj4gPiArICAgICAgIERMQjJfTUJPWF9DTURfTUFQX1FJRCwNCj4gPiArICAgICAg IERMQjJfTUJPWF9DTURfVU5NQVBfUUlELA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9TVEFS VF9ET01BSU4sDQo+ID4gKyAgICAgICBETEIyX01CT1hfQ01EX0VOQUJMRV9MREJfUE9SVF9JTlRS LA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9FTkFCTEVfRElSX1BPUlRfSU5UUiwNCj4gPiAr ICAgICAgIERMQjJfTUJPWF9DTURfQVJNX0NRX0lOVFIsDQo+ID4gKyAgICAgICBETEIyX01CT1hf Q01EX0dFVF9OVU1fVVNFRF9SRVNPVVJDRVMsDQo+ID4gKyAgICAgICBETEIyX01CT1hfQ01EX0dF VF9TTl9BTExPQ0FUSU9OLA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9HRVRfTERCX1FVRVVF X0RFUFRILA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9HRVRfRElSX1FVRVVFX0RFUFRILA0K PiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9QRU5ESU5HX1BPUlRfVU5NQVBTLA0KPiA+ICsgICAg ICAgRExCMl9NQk9YX0NNRF9HRVRfQ09TX0JXLA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9H RVRfU05fT0NDVVBBTkNZLA0KPiA+ICsgICAgICAgRExCMl9NQk9YX0NNRF9RVUVSWV9DUV9QT0xM X01PREUsDQo+ID4gKw0KPiA+ICsgICAgICAgLyogTlVNX1FFX0NNRF9UWVBFUyBtdXN0IGJlIGxh c3QgKi8NCj4gPiArICAgICAgIE5VTV9ETEIyX01CT1hfQ01EX1RZUEVTLA0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgZGxiMl9tYm94X2NtZF90eXBlX3N0cmluZ3NbXVsx MjhdID0gew0KPiA+ICsgICAgICAgIkRMQjJfTUJPWF9DTURfUkVHSVNURVIiLA0KPiA+ICsgICAg ICAgIkRMQjJfTUJPWF9DTURfVU5SRUdJU1RFUiIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NN RF9HRVRfTlVNX1JFU09VUkNFUyIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9DUkVBVEVf U0NIRURfRE9NQUlOIiwNCj4gPiArICAgICAgICJETEIyX01CT1hfQ01EX1JFU0VUX1NDSEVEX0RP TUFJTiIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9DUkVBVEVfTERCX1FVRVVFIiwNCj4g PiArICAgICAgICJETEIyX01CT1hfQ01EX0NSRUFURV9ESVJfUVVFVUUiLA0KPiA+ICsgICAgICAg IkRMQjJfTUJPWF9DTURfQ1JFQVRFX0xEQl9QT1JUIiwNCj4gPiArICAgICAgICJETEIyX01CT1hf Q01EX0NSRUFURV9ESVJfUE9SVCIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9FTkFCTEVf TERCX1BPUlQiLA0KPiA+ICsgICAgICAgIkRMQjJfTUJPWF9DTURfRElTQUJMRV9MREJfUE9SVCIs DQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9FTkFCTEVfRElSX1BPUlQiLA0KPiA+ICsgICAg ICAgIkRMQjJfTUJPWF9DTURfRElTQUJMRV9ESVJfUE9SVCIsDQo+ID4gKyAgICAgICAiRExCMl9N Qk9YX0NNRF9MREJfUE9SVF9PV05FRF9CWV9ET01BSU4iLA0KPiA+ICsgICAgICAgIkRMQjJfTUJP WF9DTURfRElSX1BPUlRfT1dORURfQllfRE9NQUlOIiwNCj4gPiArICAgICAgICJETEIyX01CT1hf Q01EX01BUF9RSUQiLA0KPiA+ICsgICAgICAgIkRMQjJfTUJPWF9DTURfVU5NQVBfUUlEIiwNCj4g PiArICAgICAgICJETEIyX01CT1hfQ01EX1NUQVJUX0RPTUFJTiIsDQo+ID4gKyAgICAgICAiRExC Ml9NQk9YX0NNRF9FTkFCTEVfTERCX1BPUlRfSU5UUiIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9Y X0NNRF9FTkFCTEVfRElSX1BPUlRfSU5UUiIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9B Uk1fQ1FfSU5UUiIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9HRVRfTlVNX1VTRURfUkVT T1VSQ0VTIiwNCj4gPiArICAgICAgICJETEIyX01CT1hfQ01EX0dFVF9TTl9BTExPQ0FUSU9OIiwN Cj4gPiArICAgICAgICJETEIyX01CT1hfQ01EX0dFVF9MREJfUVVFVUVfREVQVEgiLA0KPiA+ICsg ICAgICAgIkRMQjJfTUJPWF9DTURfR0VUX0RJUl9RVUVVRV9ERVBUSCIsDQo+ID4gKyAgICAgICAi RExCMl9NQk9YX0NNRF9QRU5ESU5HX1BPUlRfVU5NQVBTIiwNCj4gPiArICAgICAgICJETEIyX01C T1hfQ01EX0dFVF9DT1NfQlciLA0KPiA+ICsgICAgICAgIkRMQjJfTUJPWF9DTURfR0VUX1NOX09D Q1VQQU5DWSIsDQo+ID4gKyAgICAgICAiRExCMl9NQk9YX0NNRF9RVUVSWV9DUV9QT0xMX01PREUi LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogUEYtaW5pdGlhdGVkIGNvbW1hbmRzICovDQo+ID4g K2VudW0gZGxiMl9tYm94X3ZmX2NtZF90eXBlIHsNCj4gPiArICAgICAgIERMQjJfTUJPWF9WRl9D TURfRE9NQUlOX0FMRVJULA0KPiA+ICsgICAgICAgRExCMl9NQk9YX1ZGX0NNRF9OT1RJRklDQVRJ T04sDQo+ID4gKyAgICAgICBETEIyX01CT1hfVkZfQ01EX0lOX1VTRSwNCj4gPiArDQo+ID4gKyAg ICAgICAvKiBOVU1fRExCMl9NQk9YX1ZGX0NNRF9UWVBFUyBtdXN0IGJlIGxhc3QgKi8NCj4gPiAr ICAgICAgIE5VTV9ETEIyX01CT1hfVkZfQ01EX1RZUEVTLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RhdGljIGNvbnN0IGNoYXIgZGxiMl9tYm94X3ZmX2NtZF90eXBlX3N0cmluZ3NbXVsxMjhdID0g ew0KPiA+ICsgICAgICAgIkRMQjJfTUJPWF9WRl9DTURfRE9NQUlOX0FMRVJUIiwNCj4gPiArICAg ICAgICJETEIyX01CT1hfVkZfQ01EX05PVElGSUNBVElPTiIsDQo+ID4gKyAgICAgICAiRExCMl9N Qk9YX1ZGX0NNRF9JTl9VU0UiLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX01C T1hfQ01EX1RZUEUoaGRyKSBcDQo+ID4gKyAgICAgICAoKChzdHJ1Y3QgZGxiMl9tYm94X3JlcV9o ZHIgKiloZHIpLT50eXBlKQ0KPiA+ICsjZGVmaW5lIERMQjJfTUJPWF9DTURfU1RSSU5HKGhkcikg XA0KPiA+ICsgICAgICAgZGxiMl9tYm94X2NtZF90eXBlX3N0cmluZ3NbRExCMl9NQk9YX0NNRF9U WVBFKGhkcildDQo+ID4gKw0KPiA+ICtlbnVtIGRsYjJfbWJveF9zdGF0dXNfdHlwZSB7DQo+ID4g KyAgICAgICBETEIyX01CT1hfU1RfU1VDQ0VTUywNCj4gPiArICAgICAgIERMQjJfTUJPWF9TVF9J TlZBTElEX0NNRF9UWVBFLA0KPiA+ICsgICAgICAgRExCMl9NQk9YX1NUX1ZFUlNJT05fTUlTTUFU Q0gsDQo+ID4gKyAgICAgICBETEIyX01CT1hfU1RfSU5WQUxJRF9PV05FUl9WRiwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBjaGFyIGRsYjJfbWJveF9zdGF0dXNfdHlwZV9zdHJp bmdzW11bMTI4XSA9IHsNCj4gPiArICAgICAgICJETEIyX01CT1hfU1RfU1VDQ0VTUyIsDQo+ID4g KyAgICAgICAiRExCMl9NQk9YX1NUX0lOVkFMSURfQ01EX1RZUEUiLA0KPiA+ICsgICAgICAgIkRM QjJfTUJPWF9TVF9WRVJTSU9OX01JU01BVENIIiwNCj4gPiArICAgICAgICJETEIyX01CT1hfU1Rf SU5WQUxJRF9PV05FUl9WRiIsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTUJP WF9TVF9UWVBFKGhkcikgXA0KPiA+ICsgICAgICAgKCgoc3RydWN0IGRsYjJfbWJveF9yZXNwX2hk ciAqKWhkciktPnN0YXR1cykNCj4gPiArI2RlZmluZSBETEIyX01CT1hfU1RfU1RSSU5HKGhkcikg XA0KPiA+ICsgICAgICAgZGxiMl9tYm94X3N0YXR1c190eXBlX3N0cmluZ3NbRExCMl9NQk9YX1NU X1RZUEUoaGRyKV0NCj4gPiArDQo+ID4gKy8qIFRoaXMgc3RydWN0dXJlIGlzIGFsd2F5cyB0aGUg Zmlyc3QgZmllbGQgaW4gYSByZXF1ZXN0IHN0cnVjdHVyZSAqLw0KPiA+ICtzdHJ1Y3QgZGxiMl9t Ym94X3JlcV9oZHIgew0KPiA+ICsgICAgICAgdTMyIHR5cGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ ICsvKiBUaGlzIHN0cnVjdHVyZSBpcyBhbHdheXMgdGhlIGZpcnN0IGZpZWxkIGluIGEgcmVzcG9u c2Ugc3RydWN0dXJlICovDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfcmVzcF9oZHIgew0KPiA+ICsg ICAgICAgdTMyIHN0YXR1czsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hf cmVnaXN0ZXJfY21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIg aGRyOw0KPiA+ICsgICAgICAgdTE2IG1pbl9pbnRlcmZhY2VfdmVyc2lvbjsNCj4gPiArICAgICAg IHUxNiBtYXhfaW50ZXJmYWNlX3ZlcnNpb247DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qg ZGxiMl9tYm94X3JlZ2lzdGVyX2NtZF9yZXNwIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21i b3hfcmVzcF9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGludGVyZmFjZV92ZXJzaW9uOw0KPiA+ ICsgICAgICAgdTggcGZfaWQ7DQo+ID4gKyAgICAgICB1OCB2Zl9pZDsNCj4gPiArICAgICAgIHU4 IGlzX2F1eGlsaWFyeV92ZjsNCj4gPiArICAgICAgIHU4IHByaW1hcnlfdmZfaWQ7DQo+ID4gKyAg ICAgICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hf dW5yZWdpc3Rlcl9jbWRfcmVxIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hk ciBoZHI7DQo+ID4gKyAgICAgICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0 cnVjdCBkbGIyX21ib3hfdW5yZWdpc3Rlcl9jbWRfcmVzcCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBwYWRkaW5nOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF9nZXRfbnVtX3Jlc291cmNlc19jbWRfcmVx IHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hkciBoZHI7DQo+ID4gKyAgICAg ICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZ2V0 X251bV9yZXNvdXJjZXNfY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9y ZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsNCj4gPiArICAgICAgIHUx NiBudW1fc2NoZWRfZG9tYWluczsNCj4gPiArICAgICAgIHUxNiBudW1fbGRiX3F1ZXVlczsNCj4g PiArICAgICAgIHUxNiBudW1fbGRiX3BvcnRzOw0KPiA+ICsgICAgICAgdTE2IG51bV9jb3NfbGRi X3BvcnRzWzRdOw0KPiA+ICsgICAgICAgdTE2IG51bV9kaXJfcG9ydHM7DQo+ID4gKyAgICAgICB1 MzIgbnVtX2F0b21pY19pbmZsaWdodHM7DQo+ID4gKyAgICAgICB1MzIgbnVtX2hpc3RfbGlzdF9l bnRyaWVzOw0KPiA+ICsgICAgICAgdTMyIG1heF9jb250aWd1b3VzX2hpc3RfbGlzdF9lbnRyaWVz Ow0KPiA+ICsgICAgICAgdTE2IG51bV9sZGJfY3JlZGl0czsNCj4gPiArICAgICAgIHUxNiBudW1f ZGlyX2NyZWRpdHM7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2NyZWF0 ZV9zY2hlZF9kb21haW5fY21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jl cV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIG51bV9sZGJfcXVldWVzOw0KPiA+ICsgICAgICAg dTMyIG51bV9sZGJfcG9ydHM7DQo+ID4gKyAgICAgICB1MzIgbnVtX2Nvc19sZGJfcG9ydHNbNF07 DQo+ID4gKyAgICAgICB1MzIgbnVtX2Rpcl9wb3J0czsNCj4gPiArICAgICAgIHUzMiBudW1fYXRv bWljX2luZmxpZ2h0czsNCj4gPiArICAgICAgIHUzMiBudW1faGlzdF9saXN0X2VudHJpZXM7DQo+ ID4gKyAgICAgICB1MzIgbnVtX2xkYl9jcmVkaXRzOw0KPiA+ICsgICAgICAgdTMyIG51bV9kaXJf Y3JlZGl0czsNCj4gPiArICAgICAgIHU4IGNvc19zdHJpY3Q7DQo+ID4gKyAgICAgICB1OCBwYWRk aW5nMFszXTsNCj4gPiArICAgICAgIHUzMiBwYWRkaW5nMTsNCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0cnVjdCBkbGIyX21ib3hfY3JlYXRlX3NjaGVkX2RvbWFpbl9jbWRfcmVzcCB7DQo+ID4gKyAg ICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBlcnJv cl9jb2RlOw0KPiA+ICsgICAgICAgdTMyIHN0YXR1czsNCj4gPiArICAgICAgIHUzMiBpZDsNCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfcmVzZXRfc2NoZWRfZG9tYWluX2Nt ZF9yZXEgew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXFfaGRyIGhkcjsNCj4gPiAr ICAgICAgIHUzMiBpZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfcmVz ZXRfc2NoZWRfZG9tYWluX2NtZF9yZXNwIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hf cmVzcF9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGVycm9yX2NvZGU7DQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2NyZWF0ZV9sZGJfcXVldWVfY21kX3JlcSB7DQo+ID4g KyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGRv bWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBudW1fc2VxdWVuY2VfbnVtYmVyczsNCj4gPiArICAg ICAgIHUzMiBudW1fcWlkX2luZmxpZ2h0czsNCj4gPiArICAgICAgIHUzMiBudW1fYXRvbWljX2lu ZmxpZ2h0czsNCj4gPiArICAgICAgIHUzMiBsb2NrX2lkX2NvbXBfbGV2ZWw7DQo+ID4gKyAgICAg ICB1MzIgZGVwdGhfdGhyZXNob2xkOw0KPiA+ICsgICAgICAgdTMyIHBhZGRpbmc7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2NyZWF0ZV9sZGJfcXVldWVfY21kX3Jlc3Ag ew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAg ICB1MzIgZXJyb3JfY29kZTsNCj4gPiArICAgICAgIHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1 MzIgaWQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2NyZWF0ZV9kaXJf cXVldWVfY21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRy Ow0KPiA+ICsgICAgICAgdTMyIGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBwb3J0X2lkOw0K PiA+ICsgICAgICAgdTMyIGRlcHRoX3RocmVzaG9sZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0 cnVjdCBkbGIyX21ib3hfY3JlYXRlX2Rpcl9xdWV1ZV9jbWRfcmVzcCB7DQo+ID4gKyAgICAgICBz dHJ1Y3QgZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBlcnJvcl9jb2Rl Ow0KPiA+ICsgICAgICAgdTMyIHN0YXR1czsNCj4gPiArICAgICAgIHUzMiBpZDsNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfY3JlYXRlX2xkYl9wb3J0X2NtZF9yZXEgew0K PiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXFfaGRyIGhkcjsNCj4gPiArICAgICAgIHUz MiBkb21haW5faWQ7DQo+ID4gKyAgICAgICB1MTYgY3FfZGVwdGg7DQo+ID4gKyAgICAgICB1MTYg Y3FfaGlzdG9yeV9saXN0X3NpemU7DQo+ID4gKyAgICAgICB1OCBjb3NfaWQ7DQo+ID4gKyAgICAg ICB1OCBjb3Nfc3RyaWN0Ow0KPiA+ICsgICAgICAgdTE2IHBhZGRpbmcxOw0KPiA+ICsgICAgICAg dTY0IGNxX2Jhc2VfYWRkcmVzczsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21i b3hfY3JlYXRlX2xkYl9wb3J0X2NtZF9yZXNwIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21i b3hfcmVzcF9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGVycm9yX2NvZGU7DQo+ID4gKyAgICAg ICB1MzIgc3RhdHVzOw0KPiA+ICsgICAgICAgdTMyIGlkOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RydWN0IGRsYjJfbWJveF9jcmVhdGVfZGlyX3BvcnRfY21kX3JlcSB7DQo+ID4gKyAgICAgICBz dHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGRvbWFpbl9pZDsN Cj4gPiArICAgICAgIHU2NCBjcV9iYXNlX2FkZHJlc3M7DQo+ID4gKyAgICAgICB1MTYgY3FfZGVw dGg7DQo+ID4gKyAgICAgICB1MTYgcGFkZGluZzA7DQo+ID4gKyAgICAgICBzMzIgcXVldWVfaWQ7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2NyZWF0ZV9kaXJfcG9ydF9j bWRfcmVzcCB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4g PiArICAgICAgIHUzMiBlcnJvcl9jb2RlOw0KPiA+ICsgICAgICAgdTMyIHN0YXR1czsNCj4gPiAr ICAgICAgIHUzMiBpZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZW5h YmxlX2xkYl9wb3J0X2NtZF9yZXEgew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXFf aGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBkb21haW5faWQ7DQo+ID4gKyAgICAgICB1MzIgcG9y dF9pZDsNCj4gPiArICAgICAgIHUzMiBwYWRkaW5nOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3Ry dWN0IGRsYjJfbWJveF9lbmFibGVfbGRiX3BvcnRfY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3Ry dWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsN Cj4gPiArICAgICAgIHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgcGFkZGluZzsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZGlzYWJsZV9sZGJfcG9ydF9jbWRfcmVx IHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hkciBoZHI7DQo+ID4gKyAgICAg ICB1MzIgZG9tYWluX2lkOw0KPiA+ICsgICAgICAgdTMyIHBvcnRfaWQ7DQo+ID4gKyAgICAgICB1 MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZGlzYWJs ZV9sZGJfcG9ydF9jbWRfcmVzcCB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jlc3Bf aGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBlcnJvcl9jb2RlOw0KPiA+ICsgICAgICAgdTMyIHN0 YXR1czsNCj4gPiArICAgICAgIHUzMiBwYWRkaW5nOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3Ry dWN0IGRsYjJfbWJveF9lbmFibGVfZGlyX3BvcnRfY21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGRvbWFpbl9pZDsNCj4g PiArICAgICAgIHUzMiBwb3J0X2lkOw0KPiA+ICsgICAgICAgdTMyIHBhZGRpbmc7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2VuYWJsZV9kaXJfcG9ydF9jbWRfcmVzcCB7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAg IHUzMiBlcnJvcl9jb2RlOw0KPiA+ICsgICAgICAgdTMyIHN0YXR1czsNCj4gPiArICAgICAgIHUz MiBwYWRkaW5nOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF9kaXNhYmxl X2Rpcl9wb3J0X2NtZF9yZXEgew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXFfaGRy IGhkcjsNCj4gPiArICAgICAgIHUzMiBkb21haW5faWQ7DQo+ID4gKyAgICAgICB1MzIgcG9ydF9p ZDsNCj4gPiArICAgICAgIHUzMiBwYWRkaW5nOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0 IGRsYjJfbWJveF9kaXNhYmxlX2Rpcl9wb3J0X2NtZF9yZXNwIHsNCj4gPiArICAgICAgIHN0cnVj dCBkbGIyX21ib3hfcmVzcF9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGVycm9yX2NvZGU7DQo+ ID4gKyAgICAgICB1MzIgc3RhdHVzOw0KPiA+ICsgICAgICAgdTMyIHBhZGRpbmc7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2xkYl9wb3J0X293bmVkX2J5X2RvbWFpbl9j bWRfcmVxIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hkciBoZHI7DQo+ID4g KyAgICAgICB1MzIgZG9tYWluX2lkOw0KPiA+ICsgICAgICAgdTMyIHBvcnRfaWQ7DQo+ID4gKyAg ICAgICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hf bGRiX3BvcnRfb3duZWRfYnlfZG9tYWluX2NtZF9yZXNwIHsNCj4gPiArICAgICAgIHN0cnVjdCBk bGIyX21ib3hfcmVzcF9oZHIgaGRyOw0KPiA+ICsgICAgICAgczMyIG93bmVkOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF9kaXJfcG9ydF9vd25lZF9ieV9kb21haW5fY21k X3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsg ICAgICAgdTMyIGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBwb3J0X2lkOw0KPiA+ICsgICAg ICAgdTMyIHBhZGRpbmc7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2Rp cl9wb3J0X293bmVkX2J5X2RvbWFpbl9jbWRfcmVzcCB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxi Ml9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAgIHMzMiBvd25lZDsNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfbWFwX3FpZF9jbWRfcmVxIHsNCj4gPiArICAgICAg IHN0cnVjdCBkbGIyX21ib3hfcmVxX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZG9tYWluX2lk Ow0KPiA+ICsgICAgICAgdTMyIHBvcnRfaWQ7DQo+ID4gKyAgICAgICB1MzIgcWlkOw0KPiA+ICsg ICAgICAgdTMyIHByaW9yaXR5Ow0KPiA+ICsgICAgICAgdTMyIHBhZGRpbmcwOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF9tYXBfcWlkX2NtZF9yZXNwIHsNCj4gPiArICAg ICAgIHN0cnVjdCBkbGIyX21ib3hfcmVzcF9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGVycm9y X2NvZGU7DQo+ID4gKyAgICAgICB1MzIgc3RhdHVzOw0KPiA+ICsgICAgICAgdTMyIGlkOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF91bm1hcF9xaWRfY21kX3JlcSB7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMy IGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBwb3J0X2lkOw0KPiA+ICsgICAgICAgdTMyIHFp ZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfdW5tYXBfcWlkX2NtZF9y ZXNwIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVzcF9oZHIgaGRyOw0KPiA+ICsg ICAgICAgdTMyIGVycm9yX2NvZGU7DQo+ID4gKyAgICAgICB1MzIgc3RhdHVzOw0KPiA+ICsgICAg ICAgdTMyIHBhZGRpbmc7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X3N0 YXJ0X2RvbWFpbl9jbWRfcmVxIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hk ciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZG9tYWluX2lkOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RydWN0IGRsYjJfbWJveF9zdGFydF9kb21haW5fY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3Ry dWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsN Cj4gPiArICAgICAgIHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgcGFkZGluZzsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZW5hYmxlX2xkYl9wb3J0X2ludHJfY21k X3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsg ICAgICAgdTE2IHBvcnRfaWQ7DQo+ID4gKyAgICAgICB1MTYgdGhyZXNoOw0KPiA+ICsgICAgICAg dTE2IHZlY3RvcjsNCj4gPiArICAgICAgIHUxNiBvd25lcl92ZjsNCj4gPiArICAgICAgIHUxNiBy ZXNlcnZlZFsyXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZW5hYmxl X2xkYl9wb3J0X2ludHJfY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9y ZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsNCj4gPiArICAgICAgIHUz MiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0cnVjdCBkbGIyX21ib3hfZW5hYmxlX2Rpcl9wb3J0X2ludHJfY21kX3JlcSB7DQo+ID4gKyAg ICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTE2IHBvcnRf aWQ7DQo+ID4gKyAgICAgICB1MTYgdGhyZXNoOw0KPiA+ICsgICAgICAgdTE2IHZlY3RvcjsNCj4g PiArICAgICAgIHUxNiBvd25lcl92ZjsNCj4gPiArICAgICAgIHUxNiByZXNlcnZlZFsyXTsNCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZW5hYmxlX2Rpcl9wb3J0X2ludHJf Y21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsNCj4gPiArICAgICAgIHUzMiBzdGF0dXM7DQo+ID4g KyAgICAgICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21i b3hfYXJtX2NxX2ludHJfY21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jl cV9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBw b3J0X2lkOw0KPiA+ICsgICAgICAgdTMyIGlzX2xkYjsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0 cnVjdCBkbGIyX21ib3hfYXJtX2NxX2ludHJfY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3RydWN0 IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsNCj4g PiArICAgICAgIHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgcGFkZGluZzA7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBUaGUgYWxlcnRfaWQgYW5kIGF1eF9hbGVydF9kYXRh IGZvbGxvd3MgdGhlIGZvcm1hdCBvZiB0aGUgYWxlcnRzIGRlZmluZWQgaW4NCj4gPiArICogZGxi Ml90eXBlcy5oLiBUaGUgYWxlcnQgaWQgY29udGFpbnMgYW4gZW51bSBkbGIyX2RvbWFpbl9hbGVy dF9pZCB2YWx1ZSwNCj4gYW5kDQo+ID4gKyAqIHRoZSBhdXhfYWxlcnRfZGF0YSB2YWx1ZSB2YXJp ZXMgZGVwZW5kaW5nIG9uIHRoZSBhbGVydC4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBkbGIyX21i b3hfdmZfYWxlcnRfY21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9o ZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBhbGVy dF9pZDsNCj4gPiArICAgICAgIHUzMiBhdXhfYWxlcnRfZGF0YTsNCj4gPiArfTsNCj4gPiArDQo+ ID4gK2VudW0gZGxiMl9tYm94X3ZmX25vdGlmaWNhdGlvbl90eXBlIHsNCj4gPiArICAgICAgIERM QjJfTUJPWF9WRl9OT1RJRklDQVRJT05fUFJFX1JFU0VULA0KPiA+ICsgICAgICAgRExCMl9NQk9Y X1ZGX05PVElGSUNBVElPTl9QT1NUX1JFU0VULA0KPiA+ICsNCj4gPiArICAgICAgIC8qIE5VTV9E TEIyX01CT1hfVkZfTk9USUZJQ0FUSU9OX1RZUEVTIG11c3QgYmUgbGFzdCAqLw0KPiA+ICsgICAg ICAgTlVNX0RMQjJfTUJPWF9WRl9OT1RJRklDQVRJT05fVFlQRVMsDQo+ID4gK307DQo+ID4gKw0K PiA+ICtzdHJ1Y3QgZGxiMl9tYm94X3ZmX25vdGlmaWNhdGlvbl9jbWRfcmVxIHsNCj4gPiArICAg ICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgbm90aWZp Y2F0aW9uOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF92Zl9pbl91c2Vf Y21kX3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ ICsgICAgICAgdTMyIHBhZGRpbmc7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9t Ym94X3ZmX2luX3VzZV9jbWRfcmVzcCB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jl c3BfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBpbl91c2U7DQo+ID4gK307DQo+ID4gKw0KPiA+ ICtzdHJ1Y3QgZGxiMl9tYm94X2dldF9zbl9hbGxvY2F0aW9uX2NtZF9yZXEgew0KPiA+ICsgICAg ICAgc3RydWN0IGRsYjJfbWJveF9yZXFfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBncm91cF9p ZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZ2V0X3NuX2FsbG9jYXRp b25fY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7 DQo+ID4gKyAgICAgICB1MzIgbnVtOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJf bWJveF9nZXRfbGRiX3F1ZXVlX2RlcHRoX2NtZF9yZXEgew0KPiA+ICsgICAgICAgc3RydWN0IGRs YjJfbWJveF9yZXFfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBkb21haW5faWQ7DQo+ID4gKyAg ICAgICB1MzIgcXVldWVfaWQ7DQo+ID4gKyAgICAgICB1MzIgcGFkZGluZzsNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZ2V0X2xkYl9xdWV1ZV9kZXB0aF9jbWRfcmVzcCB7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAg IHUzMiBlcnJvcl9jb2RlOw0KPiA+ICsgICAgICAgdTMyIHN0YXR1czsNCj4gPiArICAgICAgIHUz MiBkZXB0aDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfZ2V0X2Rpcl9x dWV1ZV9kZXB0aF9jbWRfcmVxIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hk ciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZG9tYWluX2lkOw0KPiA+ICsgICAgICAgdTMyIHF1ZXVl X2lkOw0KPiA+ICsgICAgICAgdTMyIHBhZGRpbmc7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgZGxiMl9tYm94X2dldF9kaXJfcXVldWVfZGVwdGhfY21kX3Jlc3Agew0KPiA+ICsgICAgICAg c3RydWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29k ZTsNCj4gPiArICAgICAgIHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgZGVwdGg7DQo+ID4g K307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X3BlbmRpbmdfcG9ydF91bm1hcHNfY21k X3JlcSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9tYm94X3JlcV9oZHIgaGRyOw0KPiA+ICsg ICAgICAgdTMyIGRvbWFpbl9pZDsNCj4gPiArICAgICAgIHUzMiBwb3J0X2lkOw0KPiA+ICsgICAg ICAgdTMyIHBhZGRpbmc7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X3Bl bmRpbmdfcG9ydF91bm1hcHNfY21kX3Jlc3Agew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJv eF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIgZXJyb3JfY29kZTsNCj4gPiArICAgICAg IHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgbnVtOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RydWN0IGRsYjJfbWJveF9nZXRfY29zX2J3X2NtZF9yZXEgew0KPiA+ICsgICAgICAgc3RydWN0 IGRsYjJfbWJveF9yZXFfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBjb3NfaWQ7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X2dldF9jb3NfYndfY21kX3Jlc3Agew0KPiA+ ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXNwX2hkciBoZHI7DQo+ID4gKyAgICAgICB1MzIg bnVtOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRsYjJfbWJveF9nZXRfc25fb2NjdXBh bmN5X2NtZF9yZXEgew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbWJveF9yZXFfaGRyIGhkcjsN Cj4gPiArICAgICAgIHUzMiBncm91cF9pZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBk bGIyX21ib3hfZ2V0X3NuX29jY3VwYW5jeV9jbWRfcmVzcCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ZGxiMl9tYm94X3Jlc3BfaGRyIGhkcjsNCj4gPiArICAgICAgIHUzMiBudW07DQo+ID4gK307DQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9tYm94X3F1ZXJ5X2NxX3BvbGxfbW9kZV9jbWRfcmVxIHsN Cj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVxX2hkciBoZHI7DQo+ID4gKyAgICAgICB1 MzIgcGFkZGluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX21ib3hfcXVlcnlf Y3FfcG9sbF9tb2RlX2NtZF9yZXNwIHsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX21ib3hfcmVz cF9oZHIgaGRyOw0KPiA+ICsgICAgICAgdTMyIGVycm9yX2NvZGU7DQo+ID4gKyAgICAgICB1MzIg c3RhdHVzOw0KPiA+ICsgICAgICAgdTMyIG1vZGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZW5k aWYgLyogX19ETEIyX0JBU0VfRExCMl9NQk9YX0ggKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9vc2RlcC5oDQo+IGIvZHJpdmVycy9ldmVudC9kbGIy L3BmL2Jhc2UvZGxiMl9vc2RlcC5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwLi40M2YyMTI1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMv ZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfb3NkZXAuaA0KPiA+IEBAIC0wLDAgKzEsMjQ3IEBADQo+ ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29w eXJpZ2h0KGMpIDIwMTYtMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX19ETEIyX09TREVQX0gNCj4gPiArI2RlZmluZSBfX0RMQjJfT1NERVBfSA0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+ICsjaW5jbHVkZSA8dGltZS5oPg0K PiA+ICsjaW5jbHVkZSA8dW5pc3RkLmg+DQo+ID4gKyNpbmNsdWRlIDxwdGhyZWFkLmg+DQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSA8cnRlX3N0cmluZ19mbnMuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9j eWNsZXMuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9pby5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2xv Zy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX3NwaW5sb2NrLmg+DQo+ID4gKyNpbmNsdWRlICIuLi9k bGIyX21haW4uaCINCj4gPiArI2luY2x1ZGUgImRsYjJfcmVzb3VyY2UuaCINCj4gPiArI2luY2x1 ZGUgIi4uLy4uL2RsYjJfbG9nLmgiDQo+ID4gKyNpbmNsdWRlICIuLi8uLi9kbGIyX3VzZXIuaCIN Cj4gPiArDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfUENJX1JFR19SRUFEKGFkZHIpICAgICAg ICBydGVfcmVhZDMyKCh2b2lkICopYWRkcikNCj4gPiArI2RlZmluZSBETEIyX1BDSV9SRUdfV1JJ VEUocmVnLCB2YWx1ZSkgcnRlX3dyaXRlMzIodmFsdWUsICh2b2lkICopcmVnKQ0KPiA+ICsNCj4g PiArLyogUmVhZC93cml0ZSByZWdpc3RlciAncmVnJyBpbiB0aGUgQ1NSIEJBUiBzcGFjZSAqLw0K PiA+ICsjZGVmaW5lIERMQjJfQ1NSX1JFR19BRERSKGEsIHJlZykgKCh2b2lkICopKCh1aW50cHRy X3QpKGEpLT5jc3Jfa3ZhICsNCj4gKHJlZykpKQ0KPiA+ICsjZGVmaW5lIERMQjJfQ1NSX1JEKGh3 LCByZWcpIFwNCj4gPiArICAgICAgIERMQjJfUENJX1JFR19SRUFEKERMQjJfQ1NSX1JFR19BRERS KChodyksIChyZWcpKSkNCj4gPiArI2RlZmluZSBETEIyX0NTUl9XUihodywgcmVnLCB2YWx1ZSkg XA0KPiA+ICsgICAgICAgRExCMl9QQ0lfUkVHX1dSSVRFKERMQjJfQ1NSX1JFR19BRERSKChodyks IChyZWcpKSwgKHZhbHVlKSkNCj4gPiArDQo+ID4gKy8qIFJlYWQvd3JpdGUgcmVnaXN0ZXIgJ3Jl ZycgaW4gdGhlIGZ1bmMgQkFSIHNwYWNlICovDQo+ID4gKyNkZWZpbmUgRExCMl9GVU5DX1JFR19B RERSKGEsIHJlZykgKCh2b2lkICopKCh1aW50cHRyX3QpKGEpLT5mdW5jX2t2YSArDQo+IChyZWcp KSkNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUkQoaHcsIHJlZykgXA0KPiA+ICsgICAgICAgRExC Ml9QQ0lfUkVHX1JFQUQoRExCMl9GVU5DX1JFR19BRERSKChodyksIChyZWcpKSkNCj4gPiArI2Rl ZmluZSBETEIyX0ZVTkNfV1IoaHcsIHJlZywgdmFsdWUpIFwNCj4gPiArICAgICAgIERMQjJfUENJ X1JFR19XUklURShETEIyX0ZVTkNfUkVHX0FERFIoKGh3KSwgKHJlZykpLCAodmFsdWUpKQ0KPiA+ ICsNCj4gPiArLyogTWFwIHRvIFBNRHMgbG9nZ2luZyBpbnRlcmZhY2UgKi8NCj4gPiArI2RlZmlu ZSBETEIyX0VSUihkZXYsIGZtdCwgYXJncy4uLikgXA0KPiA+ICsgICAgICAgRExCMl9MT0dfRVJS KGZtdCwgIyMgYXJncykNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9JTkZPKGRldiwgZm10LCBh cmdzLi4uKSBcDQo+ID4gKyAgICAgICBETEIyX0xPR19JTkZPKGZtdCwgIyMgYXJncykNCj4gPiAr DQo+ID4gKyNkZWZpbmUgRExCMl9ERUJVRyhkZXYsIGZtdCwgYXJncy4uLikgXA0KPiA+ICsgICAg ICAgRExCMl9MT0dfREJHKGZtdCwgIyMgYXJncykNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBv c191ZGVsYXkoKSAtIGJ1c3ktd2FpdCBmb3IgYSBudW1iZXIgb2YgbWljcm9zZWNvbmRzDQo+ID4g KyAqIEB1c2VjczogZGVsYXkgZHVyYXRpb24uDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5l IHZvaWQgb3NfdWRlbGF5KGludCB1c2VjcykNCj4gPiArew0KPiA+ICsgICAgICAgcnRlX2RlbGF5 X3VzKHVzZWNzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIG9zX21zbGVlcCgp IC0gc2xlZXAgZm9yIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcw0KPiA+ICsgKiBAdXNlY3M6IGRl bGF5IGR1cmF0aW9uLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSB2b2lkIG9zX21zbGVl cChpbnQgbXNlY3MpDQo+ID4gK3sNCj4gPiArICAgICAgIHJ0ZV9kZWxheV9tcyhtc2Vjcyk7DQo+ ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9QUF9CQVNFKF9faXNfbGRiKSBcDQo+ID4g KyAgICAgICAoKF9faXNfbGRiKSA/IERMQjJfTERCX1BQX0JBU0UgOiBETEIyX0RJUl9QUF9CQVNF KQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIG9zX21hcF9wcm9kdWNlcl9wb3J0KCkgLSBtYXAg YSBwcm9kdWNlciBwb3J0IGludG8gdGhlIGNhbGxlcidzIGFkZHJlc3MNCj4gc3BhY2UNCj4gPiAr ICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICog QHBvcnRfaWQ6IHBvcnQgSUQNCj4gPiArICogQGlzX2xkYjogdHJ1ZSBmb3IgbG9hZC1iYWxhbmNl ZCBwb3J0LCBmYWxzZSBmb3IgYSBkaXJlY3RlZCBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMg ZnVuY3Rpb24gbWFwcyB0aGUgcmVxdWVzdGVkIHByb2R1Y2VyIHBvcnQgbWVtb3J5IGludG8gdGhl IGNhbGxlcidzDQo+ID4gKyAqIGFkZHJlc3Mgc3BhY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVy bjoNCj4gPiArICogUmV0dXJucyB0aGUgYmFzZSBhZGRyZXNzIGF0IHdoaWNoIHRoZSBQUCBtZW1v cnkgd2FzIG1hcHBlZCwgZWxzZSBOVUxMLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSB2 b2lkICpvc19tYXBfcHJvZHVjZXJfcG9ydChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBwb3J0X2lkLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19sZGIpDQo+ID4gK3sN Cj4gPiArICAgICAgIHVpbnQ2NF90IGFkZHI7DQo+ID4gKyAgICAgICB1aW50NjRfdCBwcF9kbWFf YmFzZTsNCj4gPiArDQo+ID4gKyAgICAgICBwcF9kbWFfYmFzZSA9ICh1aW50cHRyX3QpaHctPmZ1 bmNfa3ZhICsgRExCMl9QUF9CQVNFKGlzX2xkYik7DQo+ID4gKyAgICAgICBhZGRyID0gKHBwX2Rt YV9iYXNlICsgKFBBR0VfU0laRSAqIHBvcnRfaWQpKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gKHZvaWQgKikodWludHB0cl90KWFkZHI7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBvc191bm1hcF9wcm9kdWNlcl9wb3J0KCkgLSB1bm1hcCBhIHByb2R1Y2VyIHBvcnQNCj4g PiArICogQGFkZHI6IG1hcHBlZCBwcm9kdWNlciBwb3J0IGFkZHJlc3MNCj4gPiArICoNCj4gPiAr ICogVGhpcyBmdW5jdGlvbiB1bmRvZXMgb3NfbWFwX3Byb2R1Y2VyX3BvcnQoKSBieSB1bm1hcHBp bmcgdGhlIHByb2R1Y2VyDQo+IHBvcnQNCj4gPiArICogbWVtb3J5IGZyb20gdGhlIGNhbGxlcidz IGFkZHJlc3Mgc3BhY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJu cyB0aGUgYmFzZSBhZGRyZXNzIGF0IHdoaWNoIHRoZSBQUCBtZW1vcnkgd2FzIG1hcHBlZCwgZWxz ZSBOVUxMLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSB2b2lkIG9zX3VubWFwX3Byb2R1 Y2VyX3BvcnQoc3RydWN0IGRsYjJfaHcgKmh3LCB2b2lkICphZGRyKQ0KPiA+ICt7DQo+ID4gKyAg ICAgICBSVEVfU0VUX1VTRUQoaHcpOw0KPiA+ICsgICAgICAgUlRFX1NFVF9VU0VEKGFkZHIpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogb3NfZmVuY2VfaGN3KCkgLSBmZW5jZSBh biBIQ1cgdG8gZW5zdXJlIGl0IGFycml2ZXMgYXQgdGhlIGRldmljZQ0KPiA+ICsgKiBAaHc6IGRs YjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAcHBfYWRkcjog cHJvZHVjZXIgcG9ydCBhZGRyZXNzDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQg b3NfZmVuY2VfaGN3KHN0cnVjdCBkbGIyX2h3ICpodywgdTY0ICpwcF9hZGRyKQ0KPiA+ICt7DQo+ ID4gKyAgICAgICBSVEVfU0VUX1VTRUQoaHcpOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIFRvIGVu c3VyZSBvdXRzdGFuZGluZyBIQ1dzIHJlYWNoIHRoZSBkZXZpY2UsIHJlYWQgdGhlIFBQIGFkZHJl c3MuIElBDQo+ID4gKyAgICAgICAgKiBtZW1vcnkgb3JkZXJpbmcgcHJldmVudHMgcmVhZHMgZnJv bSBwYXNzaW5nIG9sZGVyIHdyaXRlcywgYW5kIHRoZQ0KPiA+ICsgICAgICAgICogbWZlbmNlIGFs c28gZW5zdXJlcyB0aGlzLg0KPiA+ICsgICAgICAgICovDQo+ID4gKyAgICAgICBydGVfbWIoKTsN Cj4gPiArDQo+ID4gKyAgICAgICAqKHZvbGF0aWxlIHU2NCAqKXBwX2FkZHI7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBvc19lbnF1ZXVlX2ZvdXJfaGN3cygpIC0gZW5xdWV1ZSBm b3VyIEhDV3MgdG8gRExCDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGlj dWxhciBkZXZpY2UuDQo+ID4gKyAqIEBoY3c6IHBvaW50ZXIgdG8gdGhlIDY0Qi1hbGlnbmVkIGNv bnRpZ3VvdXMgSENXIG1lbW9yeQ0KPiA+ICsgKiBAYWRkcjogcHJvZHVjZXIgcG9ydCBhZGRyZXNz DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgb3NfZW5xdWV1ZV9mb3VyX2hjd3Mo c3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZGxiMl9oY3cgKmhjdywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm9pZCAqYWRkcikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0 IGRsYjJfZGV2ICpkbGIyX2RldjsNCj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2RldiA9IGNvbnRh aW5lcl9vZihodywgc3RydWN0IGRsYjJfZGV2LCBodyk7DQo+ID4gKw0KPiA+ICsgICAgICAgZGxi Ml9kZXYtPmVucXVldWVfZm91cihoY3csIGFkZHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogRExCMl9IV19FUlIoKSAtIGxvZyBhbiBlcnJvciBtZXNzYWdlDQo+ID4gKyAqIEBk bGIyOiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQC4u LjogdmFyaWFibGUgc3RyaW5nIGFyZ3MuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIERMQjJfSFdf RVJSKGRsYjIsIC4uLikgZG8geyAgICBcDQo+ID4gKyAgICAgICBSVEVfU0VUX1VTRUQoZGxiMik7 ICAgICAgICAgICAgIFwNCj4gPiArICAgICAgIERMQjJfRVJSKGRsYjIsIF9fVkFfQVJHU19fKTsg ICAgXA0KPiA+ICt9IHdoaWxlICgwKQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIERMQjJfSFdf REJHKCkgLSBsb2cgYW4gaW5mbyBtZXNzYWdlDQo+ID4gKyAqIEBkbGIyOiBkbGIyX2h3IGhhbmRs ZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQC4uLjogdmFyaWFibGUgc3RyaW5n IGFyZ3MuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIERMQjJfSFdfREJHKGRsYjIsIC4uLikgZG8g eyAgICBcDQo+ID4gKyAgICAgICBSVEVfU0VUX1VTRUQoZGxiMik7ICAgICAgICAgICAgIFwNCj4g PiArICAgICAgIERMQjJfREVCVUcoZGxiMiwgX19WQV9BUkdTX18pOyAgXA0KPiA+ICt9IHdoaWxl ICgwKQ0KPiA+ICsNCj4gPiArLyogVGhlIGNhbGxiYWNrIHJ1bnMgdW50aWwgaXQgY29tcGxldGVz IGFsbCBvdXRzdGFuZGluZyBRSUQtPkNRDQo+ID4gKyAqIG1hcCBhbmQgdW5tYXAgcmVxdWVzdHMu IFRvIHByZXZlbnQgZGVhZGxvY2ssIHRoaXMgZnVuY3Rpb24gZ2l2ZXMgb3RoZXINCj4gPiArICog dGhyZWFkcyBhIGNoYW5jZSB0byBncmFiIHRoZSByZXNvdXJjZSBtdXRleCBhbmQgY29uZmlndXJl IGhhcmR3YXJlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIHZvaWQgKmRsYjJfY29tcGxldGVfcXVl dWVfbWFwX3VubWFwKHZvaWQgKl9fYXJncykNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRs YjJfZGV2ICpkbGIyX2RldiA9IChzdHJ1Y3QgZGxiMl9kZXYgKilfX2FyZ3M7DQo+ID4gKyAgICAg ICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIHdoaWxlICgxKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIHJ0ZV9zcGlubG9ja19sb2NrKCZkbGIyX2Rldi0+cmVzb3VyY2VfbXV0ZXgpOw0KPiA+ ICsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0gZGxiMl9maW5pc2hfdW5tYXBfcWlkX3Byb2Nl ZHVyZXMoJmRsYjJfZGV2LT5odyk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCArPSBkbGIyX2Zp bmlzaF9tYXBfcWlkX3Byb2NlZHVyZXMoJmRsYjJfZGV2LT5odyk7DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICBpZiAocmV0ICE9IDApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBy dGVfc3BpbmxvY2tfdW5sb2NrKCZkbGIyX2Rldi0+cmVzb3VyY2VfbXV0ZXgpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIC8qIFJlbGlucXVpc2ggdGhlIENQVSBzbyB0aGUgYXBwbGljYXRp b24gY2FuIHByb2Nlc3MNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBpdHMgQ1FzLCBz byB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZGVhZGxvY2suDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgc2NoZWRfeWllbGQoKTsNCj4g PiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICAgIGRsYjJfZGV2LT53b3JrZXJfbGF1bmNoZWQgPSBmYWxzZTsNCj4gPiArDQo+ID4gKyAg ICAgICBydGVfc3BpbmxvY2tfdW5sb2NrKCZkbGIyX2Rldi0+cmVzb3VyY2VfbXV0ZXgpOw0KPiA+ ICsNCj4gPiArICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIG9zX3NjaGVkdWxlX3dvcmsoKSAtIGxhdW5jaCBhIHRocmVhZCB0byBwcm9j ZXNzIHBlbmRpbmcgbWFwIGFuZCB1bm1hcA0KPiB3b3JrDQo+ID4gKyAqIEBodzogZGxiMl9odyBo YW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVu Y3Rpb24gbGF1bmNoZXMgYSBrZXJuZWwgdGhyZWFkIHRoYXQgd2lsbCBydW4gdW50aWwgYWxsIHBl bmRpbmcNCj4gPiArICogbWFwIGFuZCB1bm1hcCBwcm9jZWR1cmVzIGFyZSBjb21wbGV0ZS4NCj4g PiArICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBvc19zY2hlZHVsZV93b3JrKHN0cnVjdCBk bGIyX2h3ICpodykNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfZGV2ICpkbGIyX2Rl djsNCj4gPiArICAgICAgIHB0aHJlYWRfdCBjb21wbGV0ZV9xdWV1ZV9tYXBfdW5tYXBfdGhyZWFk Ow0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2RldiA9IGNv bnRhaW5lcl9vZihodywgc3RydWN0IGRsYjJfZGV2LCBodyk7DQo+ID4gKw0KPiA+ICsgICAgICAg cmV0ID0gcnRlX2N0cmxfdGhyZWFkX2NyZWF0ZSgmY29tcGxldGVfcXVldWVfbWFwX3VubWFwX3Ro cmVhZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRsYl9xdWV1 ZV91bm1hcF93YWl0ZXIiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbGIyX2Nv bXBsZXRlX3F1ZXVlX21hcF91bm1hcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGxiMl9kZXYpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAg ICAgICAgRExCMl9FUlIoZGxiMl9kZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICJD b3VsZCBub3QgY3JlYXRlIHF1ZXVlIGNvbXBsZXRlIG1hcC91bm1hcCB0aHJlYWQsDQo+IGVycj0l ZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsNCj4gPiArICAgICAgIGVs c2UNCj4gPiArICAgICAgICAgICAgICAgZGxiMl9kZXYtPndvcmtlcl9sYXVuY2hlZCA9IHRydWU7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBvc193b3JrZXJfYWN0aXZlKCkgLSBx dWVyeSB3aGV0aGVyIHRoZSBtYXAvdW5tYXAgd29ya2VyIHRocmVhZCBpcw0KPiBhY3RpdmUNCj4g PiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiAr ICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdo ZXRoZXIgYSB0aHJlYWQgKGxhdW5jaGVkIGJ5DQo+ID4gKyAqIG9zX3NjaGVkdWxlX3dvcmsoKSkg aXMgYWN0aXZlLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lDQo+ID4gKyAqIHdo ZXRoZXIgb3Igbm90IHRvIGxhdW5jaCBhIHdvcmtlciB0aHJlYWQuDQo+ID4gKyAqLw0KPiA+ICtz dGF0aWMgaW5saW5lIGJvb2wgb3Nfd29ya2VyX2FjdGl2ZShzdHJ1Y3QgZGxiMl9odyAqaHcpDQo+ ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2RldiAqZGxiMl9kZXY7DQo+ID4gKw0KPiA+ ICsgICAgICAgZGxiMl9kZXYgPSBjb250YWluZXJfb2YoaHcsIHN0cnVjdCBkbGIyX2RldiwgaHcp Ow0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiBkbGIyX2Rldi0+d29ya2VyX2xhdW5jaGVkOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogIF9fRExCMl9PU0RFUF9IICovDQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfb3NkZXBfYml0bWFwLmgN Cj4gYi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFzZS9kbGIyX29zZGVwX2JpdG1hcC5oDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi40MjMyMzNiDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfb3Nk ZXBfYml0bWFwLmgNCj4gPiBAQCAtMCwwICsxLDQ0MCBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIwMjAg SW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fRExCMl9P U0RFUF9CSVRNQVBfSA0KPiA+ICsjZGVmaW5lIF9fRExCMl9PU0RFUF9CSVRNQVBfSA0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiA+ ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPg0KPiA+ICsjaW5j bHVkZSA8cnRlX2JpdG1hcC5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX3N0cmluZ19mbnMuaD4NCj4g PiArI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0K PiA+ICsjaW5jbHVkZSAiLi4vZGxiMl9tYWluLmgiDQo+ID4gKw0KPiA+ICsvKioqKioqKioqKioq KioqKioqKioqKioqKi8NCj4gPiArLyoqKiBCaXRtYXAgb3BlcmF0aW9ucyAqKiovDQo+ID4gKy8q KioqKioqKioqKioqKioqKioqKioqKioqLw0KPiA+ICtzdHJ1Y3QgZGxiMl9iaXRtYXAgew0KPiA+ ICsgICAgICAgc3RydWN0IHJ0ZV9iaXRtYXAgKm1hcDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGlu dCBsZW47DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9iaXRtYXBfYWxs b2MoKSAtIGFsbG9jIGEgYml0bWFwIGRhdGEgc3RydWN0dXJlDQo+ID4gKyAqIEBiaXRtYXA6IHBv aW50ZXIgdG8gZGxiMl9iaXRtYXAgc3RydWN0dXJlIHBvaW50ZXIuDQo+ID4gKyAqIEBsZW46IG51 bWJlciBvZiBlbnRyaWVzIGluIHRoZSBiaXRtYXAuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVu Y3Rpb24gYWxsb2NhdGVzIGEgYml0bWFwIGFuZCBpbml0aWFsaXplcyBpdCB3aXRoIGxlbmd0aCBA bGVuLiBBbGwNCj4gPiArICogZW50cmllcyBhcmUgaW5pdGlhbGx5IHplcm8uDQo+ID4gKyAqDQo+ ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPCAwIG90aGVy d2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBiaXRtYXAg aXMgTlVMTCBvciBsZW4gaXMgMC4NCj4gPiArICogRU5PTUVNIC0gY291bGQgbm90IGFsbG9jYXRl IG1lbW9yeSBmb3IgdGhlIGJpdG1hcCBkYXRhIHN0cnVjdHVyZS4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBpbmxpbmUgaW50IGRsYjJfYml0bWFwX2FsbG9jKHN0cnVjdCBkbGIyX2JpdG1hcCAqKmJp dG1hcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbGVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9iaXRtYXAgKmJtOw0KPiA+ ICsgICAgICAgdm9pZCAqbWVtOw0KPiA+ICsgICAgICAgdWludDMyX3QgYWxsb2Nfc2l6ZTsNCj4g PiArICAgICAgIHVpbnQzMl90IG5iaXRzID0gKHVpbnQzMl90KWxlbjsNCj4gPiArDQo+ID4gKyAg ICAgICBpZiAoYml0bWFwID09IE5VTEwgfHwgbmJpdHMgPT0gMCkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogQWxsb2NhdGUgRExCMiBi aXRtYXAgY29udHJvbCBzdHJ1Y3QgKi8NCj4gPiArICAgICAgIGJtID0gcnRlX21hbGxvYygiRExC Ml9QRiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBkbGIyX2Jp dG1hcCksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSk7 DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGJtID09IE5VTEwpDQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIEFsbG9jYXRlIGJpdG1hcCBt ZW1vcnkgKi8NCj4gPiArICAgICAgIGFsbG9jX3NpemUgPSBydGVfYml0bWFwX2dldF9tZW1vcnlf Zm9vdHByaW50KG5iaXRzKTsNCj4gPiArICAgICAgIG1lbSA9IHJ0ZV9tYWxsb2MoIkRMQjJfUEZf QklUTUFQIiwgYWxsb2Nfc2l6ZSwNCj4gUlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ID4gKyAgICAg ICBpZiAobWVtID09IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2ZyZWUoYm0pOw0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgICBibS0+bWFwID0gcnRlX2JpdG1hcF9pbml0KGxlbiwgbWVtLCBhbGxvY19z aXplKTsNCj4gPiArICAgICAgIGlmIChibS0+bWFwID09IE5VTEwpIHsNCj4gPiArICAgICAgICAg ICAgICAgcnRlX2ZyZWUobWVtKTsNCj4gPiArICAgICAgICAgICAgICAgcnRlX2ZyZWUoYm0pOw0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgICBibS0+bGVuID0gbGVuOw0KPiA+ICsNCj4gPiArICAgICAgICpiaXRtYXAg PSBibTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGRsYjJfYml0bWFwX2ZyZWUoKSAtIGZyZWUgYSBwcmV2aW91c2x5IGFsbG9j YXRlZCBiaXRtYXAgZGF0YSBzdHJ1Y3R1cmUNCj4gPiArICogQGJpdG1hcDogcG9pbnRlciB0byBk bGIyX2JpdG1hcCBzdHJ1Y3R1cmUuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gZnJl ZXMgYSBiaXRtYXAgdGhhdCB3YXMgYWxsb2NhdGVkIHdpdGggZGxiMl9iaXRtYXBfYWxsb2MoKS4N Cj4gPiArICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkbGIyX2JpdG1hcF9mcmVlKHN0cnVj dCBkbGIyX2JpdG1hcCAqYml0bWFwKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpZiAoYml0bWFwID09 IE5VTEwpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiArDQo+ID4gKyAgICAgICBy dGVfZnJlZShiaXRtYXAtPm1hcCk7DQo+ID4gKyAgICAgICBydGVfZnJlZShiaXRtYXApOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9iaXRtYXBfZmlsbCgpIC0gZmlsbCBh IGJpdG1hcCB3aXRoIGFsbCAxcw0KPiA+ICsgKiBAYml0bWFwOiBwb2ludGVyIHRvIGRsYjJfYml0 bWFwIHN0cnVjdHVyZS4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBzZXRzIGFsbCBi aXRtYXAgdmFsdWVzIHRvIDEuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0 dXJucyAwIHVwb24gc3VjY2VzcywgPCAwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJy b3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBiaXRtYXAgaXMgTlVMTCBvciBpcyB1bmluaXRpYWxpemVk Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSBpbnQgZGxiMl9iaXRtYXBfZmlsbChzdHJ1 Y3QgZGxiMl9iaXRtYXAgKmJpdG1hcCkNCj4gPiArew0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50 IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGJpdG1hcCAgPT0gTlVMTCB8fCBiaXRtYXAtPm1h cCA9PSBOVUxMKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpICE9IGJpdG1hcC0+bGVuOyBpKyspDQo+ID4gKyAgICAg ICAgICAgICAgIHJ0ZV9iaXRtYXBfc2V0KGJpdG1hcC0+bWFwLCBpKTsNCj4gPiArDQo+ID4gKyAg ICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfYml0 bWFwX2ZpbGwoKSAtIGZpbGwgYSBiaXRtYXAgd2l0aCBhbGwgMHMNCj4gPiArICogQGJpdG1hcDog cG9pbnRlciB0byBkbGIyX2JpdG1hcCBzdHJ1Y3R1cmUuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMg ZnVuY3Rpb24gc2V0cyBhbGwgYml0bWFwIHZhbHVlcyB0byAwLg0KPiA+ICsgKg0KPiA+ICsgKiBS ZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuDQo+ ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gYml0bWFwIGlzIE5VTEwg b3IgaXMgdW5pbml0aWFsaXplZC4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGRs YjJfYml0bWFwX3plcm8oc3RydWN0IGRsYjJfYml0bWFwICpiaXRtYXApDQo+ID4gK3sNCj4gPiAr ICAgICAgIGlmIChiaXRtYXAgID09IE5VTEwgfHwgYml0bWFwLT5tYXAgPT0gTlVMTCkNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgcnRlX2Jp dG1hcF9yZXNldChiaXRtYXAtPm1hcCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2JpdG1hcF9zZXQoKSAtIHNldCBh IGJpdG1hcCBlbnRyeQ0KPiA+ICsgKiBAYml0bWFwOiBwb2ludGVyIHRvIGRsYjJfYml0bWFwIHN0 cnVjdHVyZS4NCj4gPiArICogQGJpdDogYml0IGluZGV4Lg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1 cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuDQo+ID4g KyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gYml0bWFwIGlzIE5VTEwgb3Ig aXMgdW5pbml0aWFsaXplZCwgb3IgYml0IGlzIGxhcmdlciB0aGFuIHRoZQ0KPiA+ICsgKiAgICAg ICAgIGJpdG1hcCBsZW5ndGguDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIGludCBkbGIy X2JpdG1hcF9zZXQoc3RydWN0IGRsYjJfYml0bWFwICpiaXRtYXAsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXQpDQo+ID4gK3sNCj4gPiArICAg ICAgIGlmIChiaXRtYXAgID09IE5VTEwgfHwgYml0bWFwLT5tYXAgPT0gTlVMTCkNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGJpdG1h cC0+bGVuIDw9IGJpdCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g Kw0KPiA+ICsgICAgICAgcnRlX2JpdG1hcF9zZXQoYml0bWFwLT5tYXAsIGJpdCk7DQo+ID4gKw0K PiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBk bGIyX2JpdG1hcF9zZXRfcmFuZ2UoKSAtIHNldCBhIHJhbmdlIG9mIGJpdG1hcCBlbnRyaWVzDQo+ ID4gKyAqIEBiaXRtYXA6IHBvaW50ZXIgdG8gZGxiMl9iaXRtYXAgc3RydWN0dXJlLg0KPiA+ICsg KiBAYml0OiBzdGFydGluZyBiaXQgaW5kZXguDQo+ID4gKyAqIEBsZW46IGxlbmd0aCBvZiB0aGUg cmFuZ2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24g c3VjY2VzcywgPCAwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsg KiBFSU5WQUwgLSBiaXRtYXAgaXMgTlVMTCBvciBpcyB1bmluaXRpYWxpemVkLCBvciB0aGUgcmFu Z2UgZXhjZWVkcyB0aGUgYml0bWFwDQo+ID4gKyAqICAgICAgICAgbGVuZ3RoLg0KPiA+ICsgKi8N Cj4gPiArc3RhdGljIGlubGluZSBpbnQgZGxiMl9iaXRtYXBfc2V0X3JhbmdlKHN0cnVjdCBkbGIy X2JpdG1hcCAqYml0bWFwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgYml0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1bnNpZ25l ZCBpbnQgaTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoYml0bWFwICA9PSBOVUxMIHx8IGJpdG1h cC0+bWFwID09IE5VTEwpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ ICsNCj4gPiArICAgICAgIGlmIChiaXRtYXAtPmxlbiA8PSBiaXQpDQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgIT0g bGVuOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9iaXRtYXBfc2V0KGJpdG1hcC0+bWFw LCBiaXQgKyBpKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfYml0bWFwX2NsZWFyKCkgLSBjbGVhciBhIGJpdG1hcCBl bnRyeQ0KPiA+ICsgKiBAYml0bWFwOiBwb2ludGVyIHRvIGRsYjJfYml0bWFwIHN0cnVjdHVyZS4N Cj4gPiArICogQGJpdDogYml0IGluZGV4Lg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4g KyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuDQo+ID4gKyAqDQo+ID4g KyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gYml0bWFwIGlzIE5VTEwgb3IgaXMgdW5pbml0 aWFsaXplZCwgb3IgYml0IGlzIGxhcmdlciB0aGFuIHRoZQ0KPiA+ICsgKiAgICAgICAgIGJpdG1h cCBsZW5ndGguDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIGludCBkbGIyX2JpdG1hcF9j bGVhcihzdHJ1Y3QgZGxiMl9iaXRtYXAgKmJpdG1hcCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBp ZiAoYml0bWFwICA9PSBOVUxMIHx8IGJpdG1hcC0+bWFwID09IE5VTEwpDQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChiaXRtYXAtPmxl biA8PSBiaXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4g PiArICAgICAgIHJ0ZV9iaXRtYXBfY2xlYXIoYml0bWFwLT5tYXAsIGJpdCk7DQo+ID4gKw0KPiA+ ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIy X2JpdG1hcF9jbGVhcl9yYW5nZSgpIC0gY2xlYXIgYSByYW5nZSBvZiBiaXRtYXAgZW50cmllcw0K PiA+ICsgKiBAYml0bWFwOiBwb2ludGVyIHRvIGRsYjJfYml0bWFwIHN0cnVjdHVyZS4NCj4gPiAr ICogQGJpdDogc3RhcnRpbmcgYml0IGluZGV4Lg0KPiA+ICsgKiBAbGVuOiBsZW5ndGggb2YgdGhl IHJhbmdlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9u IHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiAr ICogRUlOVkFMIC0gYml0bWFwIGlzIE5VTEwgb3IgaXMgdW5pbml0aWFsaXplZCwgb3IgdGhlIHJh bmdlIGV4Y2VlZHMgdGhlIGJpdG1hcA0KPiA+ICsgKiAgICAgICAgIGxlbmd0aC4NCj4gPiArICov DQo+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGRsYjJfYml0bWFwX2NsZWFyX3JhbmdlKHN0cnVjdCBk bGIyX2JpdG1hcCAqYml0bWFwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBiaXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbikNCj4gPiArew0KPiA+ICsgICAgICAg dW5zaWduZWQgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGJpdG1hcCAgPT0gTlVMTCB8 fCBiaXRtYXAtPm1hcCA9PSBOVUxMKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoYml0bWFwLT5sZW4gPD0gYml0KQ0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAw OyBpICE9IGxlbjsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgICBydGVfYml0bWFwX2NsZWFyKGJp dG1hcC0+bWFwLCBiaXQgKyBpKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfYml0bWFwX2ZpbmRfc2V0X2JpdF9yYW5n ZSgpIC0gZmluZCBhbiByYW5nZSBvZiBzZXQgYml0cw0KPiA+ICsgKiBAYml0bWFwOiBwb2ludGVy IHRvIGRsYjJfYml0bWFwIHN0cnVjdHVyZS4NCj4gPiArICogQGxlbjogbGVuZ3RoIG9mIHRoZSBy YW5nZS4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBsb29rcyBmb3IgYSByYW5nZSBv ZiBzZXQgYml0cyBvZiBsZW5ndGggQGxlbi4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ ICsgKiBSZXR1cm5zIHRoZSBiYXNlIGJpdCBpbmRleCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndp c2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRU5PRU5UIC0gdW5hYmxlIHRv IGZpbmQgYSBsZW5ndGggKmxlbiogcmFuZ2Ugb2Ygc2V0IGJpdHMuDQo+ID4gKyAqIEVJTlZBTCAt IGJpdG1hcCBpcyBOVUxMIG9yIGlzIHVuaW5pdGlhbGl6ZWQsIG9yIGxlbiBpcyBpbnZhbGlkLg0K PiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSBpbnQgZGxiMl9iaXRtYXBfZmluZF9zZXRfYml0 X3JhbmdlKHN0cnVjdCBkbGIyX2JpdG1hcCAqYml0bWFwLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKQ0KPiA+ICt7 DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaSwgaiA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAg aWYgKGJpdG1hcCAgPT0gTlVMTCB8fCBiaXRtYXAtPm1hcCA9PSBOVUxMIHx8IGxlbiA9PSAwKQ0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBp ZiAoYml0bWFwLT5sZW4gPCBsZW4pDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5U Ow0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgIT0gYml0bWFwLT5sZW47IGkrKykg ew0KPiA+ICsgICAgICAgICAgICAgICBpZiAgKHJ0ZV9iaXRtYXBfZ2V0KGJpdG1hcC0+bWFwLCBp KSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2ogPT0gbGVuKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgLSBqICsgMTsNCj4gPiArICAg ICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBqID0gMDsN Cj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAg IC8qIE5vIHNldCBiaXQgcmFuZ2Ugb2YgbGVuZ3RoIGxlbj8gKi8NCj4gPiArICAgICAgIHJldHVy biAtRU5PRU5UOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9iaXRtYXBf ZmluZF9zZXRfYml0KCkgLSBmaW5kIGFuIHJhbmdlIG9mIHNldCBiaXRzDQo+ID4gKyAqIEBiaXRt YXA6IHBvaW50ZXIgdG8gZGxiMl9iaXRtYXAgc3RydWN0dXJlLg0KPiA+ICsgKg0KPiA+ICsgKiBU aGlzIGZ1bmN0aW9uIGxvb2tzIGZvciBhIHNpbmdsZSBzZXQgYml0Lg0KPiA+ICsgKg0KPiA+ICsg KiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgdGhlIGJhc2UgYml0IGluZGV4IHVwb24gc3VjY2Vz cywgLTEgaWYgbm90IGZvdW5kLCA8LTEgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFcnJv cnM6DQo+ID4gKyAqIEVJTlZBTCAtIGJpdG1hcCBpcyBOVUxMIG9yIGlzIHVuaW5pdGlhbGl6ZWQs IG9yIGxlbiBpcyBpbnZhbGlkLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSBpbnQgZGxi Ml9iaXRtYXBfZmluZF9zZXRfYml0KHN0cnVjdCBkbGIyX2JpdG1hcCAqYml0bWFwKQ0KPiA+ICt7 DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoYml0 bWFwID09IE5VTEwpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsN Cj4gPiArICAgICAgIGlmIChiaXRtYXAtPm1hcCA9PSBOVUxMKQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpICE9IGJp dG1hcC0+bGVuOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgIChydGVfYml0bWFwX2dl dChiaXRtYXAtPm1hcCwgaSkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIC1FTk9FTlQ7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2JpdG1hcF9jb3VudCgpIC0gcmV0dXJu cyB0aGUgbnVtYmVyIG9mIHNldCBiaXRzDQo+ID4gKyAqIEBiaXRtYXA6IHBvaW50ZXIgdG8gZGxi Ml9iaXRtYXAgc3RydWN0dXJlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGxvb2tz IGZvciBhIHNpbmdsZSBzZXQgYml0Lg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAq IFJldHVybnMgdGhlIG51bWJlciBvZiBzZXQgYml0cyB1cG9uIHN1Y2Nlc3MsIDwwIG90aGVyd2lz ZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBiaXRtYXAgaXMg TlVMTCBvciBpcyB1bmluaXRpYWxpemVkLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSBp bnQgZGxiMl9iaXRtYXBfY291bnQoc3RydWN0IGRsYjJfYml0bWFwICpiaXRtYXApDQo+ID4gK3sN Cj4gPiArICAgICAgIGludCB3ZWlnaHQgPSAwOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGk7 DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGJpdG1hcCA9PSBOVUxMKQ0KPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoYml0bWFwLT5tYXAg PT0gTlVMTCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ ICsgICAgICAgZm9yIChpID0gMDsgaSAhPSBiaXRtYXAtPmxlbjsgaSsrKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIGlmICAocnRlX2JpdG1hcF9nZXQoYml0bWFwLT5tYXAsIGkpKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHdlaWdodCsrOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAg cmV0dXJuIHdlaWdodDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfYml0 bWFwX2xvbmdlc3Rfc2V0X3JhbmdlKCkgLSByZXR1cm5zIGxvbmdlc3QgY29udGlndW91cyByYW5n ZSBvZiBzZXQNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMN Cj4gPiArICogQGJpdG1hcDogcG9pbnRlciB0byBkbGIyX2JpdG1hcCBzdHJ1Y3R1cmUuDQo+ID4g KyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyB0aGUgYml0bWFwJ3MgbG9uZ2Vz dCBjb250aWd1b3VzIHJhbmdlIG9mIG9mIHNldCBiaXRzIHVwb24gc3VjY2VzcywNCj4gPiArICog PDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAt IGJpdG1hcCBpcyBOVUxMIG9yIGlzIHVuaW5pdGlhbGl6ZWQuDQo+ID4gKyAqLw0KPiA+ICtzdGF0 aWMgaW5saW5lIGludCBkbGIyX2JpdG1hcF9sb25nZXN0X3NldF9yYW5nZShzdHJ1Y3QgZGxiMl9i aXRtYXAgKmJpdG1hcCkNCj4gPiArew0KPiA+ICsgICAgICAgaW50IG1heF9sZW4gPSAwLCBsZW4g PSAwOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYg KGJpdG1hcCA9PSBOVUxMKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g PiArDQo+ID4gKyAgICAgICBpZiAoYml0bWFwLT5tYXAgPT0gTlVMTCkNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSAh PSBiaXRtYXAtPmxlbjsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICAocnRlX2JpdG1h cF9nZXQoYml0bWFwLT5tYXAsIGkpKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbGVu Kys7DQo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGxlbiA+IG1heF9sZW4pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXhfbGVuID0gbGVuOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDA7 DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICBpZiAobGVuID4gbWF4X2xlbikNCj4gPiArICAgICAgICAgICAgICAgbWF4X2xlbiA9IGxlbjsN Cj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gbWF4X2xlbjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGRsYjJfYml0bWFwX29yKCkgLSBzdG9yZSB0aGUgbG9naWNhbCAnb3InIG9m IHR3byBiaXRtYXBzIGludG8gYSB0aGlyZA0KPiA+ICsgKiBAZGVzdDogcG9pbnRlciB0byBkbGIy X2JpdG1hcCBzdHJ1Y3R1cmUsIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgcmVzdWx0cyBvZg0KPiA+ ICsgKiAgICAgICB0aGUgJ29yJyBvZiBzcmMxIGFuZCBzcmMyLg0KPiA+ICsgKiBAc3JjMTogcG9p bnRlciB0byBkbGIyX2JpdG1hcCBzdHJ1Y3R1cmUsIHdpbGwgYmUgJ29yJ2VkIHdpdGggc3JjMi4N Cj4gPiArICogQHNyYzI6IHBvaW50ZXIgdG8gZGxiMl9iaXRtYXAgc3RydWN0dXJlLCB3aWxsIGJl ICdvcidlZCB3aXRoIHNyYzEuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gJ29yJ3Mg dHdvIGJpdG1hcHMgdG9nZXRoZXIgYW5kIHN0b3JlcyB0aGUgcmVzdWx0IGluIGEgdGhpcmQNCj4g PiArICogYml0bWFwLiBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBiaXRtYXBzIGNhbiBiZSB0 aGUgc2FtZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIHRoZSBu dW1iZXIgb2Ygc2V0IGJpdHMgdXBvbiBzdWNjZXNzLCA8MCBvdGhlcndpc2UuDQo+ID4gKyAqDQo+ ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gT25lIG9mIHRoZSBiaXRtYXBzIGlzIE5V TEwgb3IgaXMgdW5pbml0aWFsaXplZC4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgaW50 IGRsYjJfYml0bWFwX29yKHN0cnVjdCBkbGIyX2JpdG1hcCAqZGVzdCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9iaXRtYXAgKnNyYzEsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfYml0bWFwICpzcmMyKQ0K PiA+ICt7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgaSwgbWluOw0KPiA+ICsgICAgICAgaW50 IG51bXNldCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGRlc3QgID09IE5VTEwgfHwgZGVz dC0+bWFwID09IE5VTEwgfHwNCj4gPiArICAgICAgICAgICBzcmMxICA9PSBOVUxMIHx8IHNyYzEt Pm1hcCA9PSBOVUxMIHx8DQo+ID4gKyAgICAgICAgICAgc3JjMiAgPT0gTlVMTCB8fCBzcmMyLT5t YXAgPT0gTlVMTCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0K PiA+ICsgICAgICAgbWluID0gZGVzdC0+bGVuOw0KPiA+ICsgICAgICAgbWluID0gKG1pbiA+IHNy YzEtPmxlbikgPyBzcmMxLT5sZW4gOiBtaW47DQo+ID4gKyAgICAgICBtaW4gPSAobWluID4gc3Jj Mi0+bGVuKSA/IHNyYzItPmxlbiA6IG1pbjsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAw OyBpICE9IG1pbjsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICAocnRlX2JpdG1hcF9n ZXQoc3JjMS0+bWFwLCBpKSB8fA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHJ0ZV9iaXRtYXBf Z2V0KHNyYzItPm1hcCwgaSkpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBydGVfYml0 bWFwX3NldChkZXN0LT5tYXAsIGkpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG51bXNl dCsrOw0KPiA+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJ0ZV9iaXRtYXBfY2xlYXIoZGVzdC0+bWFwLCBpKTsNCj4gPiArICAgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiBudW1zZXQ7DQo+ ID4gK30NCj4gPiArDQo+ID4gKyNlbmRpZiAvKiAgX19ETEIyX09TREVQX0JJVE1BUF9IICovDQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfb3NkZXBfbGlz dC5oDQo+IGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9vc2RlcF9saXN0LmgNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjU1MzE3MzkNCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9v c2RlcF9saXN0LmgNCj4gPiBAQCAtMCwwICsxLDEzMSBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIwMjAg SW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fRExCMl9P U0RFUF9MSVNUX0gNCj4gPiArI2RlZmluZSBfX0RMQjJfT1NERVBfTElTVF9IDQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8cnRlX3RhaWxxLmg+DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9saXN0X2Vu dHJ5IHsNCj4gPiArICAgICAgIFRBSUxRX0VOVFJZKGRsYjJfbGlzdF9lbnRyeSkgbm9kZTsNCj4g PiArfTsNCj4gPiArDQo+ID4gKy8qIER1bW15IC0ganVzdCBhIHN0cnVjdCBkZWZpbml0aW9uICov DQo+ID4gK1RBSUxRX0hFQUQoZGxiMl9saXN0X2hlYWQsIGRsYjJfbGlzdF9lbnRyeSk7DQo+ID4g Kw0KPiA+ICsvKiA9PT09PT09PT09PT09PT09PQ0KPiA+ICsgKiBUQUlMUSBTdXBwbGVtZW50cw0K PiA+ICsgKiA9PT09PT09PT09PT09PT09PQ0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYg VEFJTFFfRk9SRUFDSF9FTlRSWQ0KPiA+ICsjZGVmaW5lIFRBSUxRX0ZPUkVBQ0hfRU5UUlkocHRy LCBoZWFkLCBuYW1lLCBpdGVyKSAgICAgICAgICAgICBcDQo+ID4gKyAgICAgICBmb3IgKChpdGVy KSA9IFRBSUxRX0ZJUlNUKCZoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiArICAg ICAgICAgICAoaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiA+ICsgICAgICAgICAgICAgICAmJiAocHRyID0gY29udGFpbmVyX29mKGl0ZXIsIHR5 cGVvZigqKHB0cikpLCBuYW1lKSk7IFwNCj4gPiArICAgICAgICAgICAoaXRlcikgPSBUQUlMUV9O RVhUKChpdGVyKSwgbm9kZSkpDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmbmRlZiBUQUlM UV9GT1JFQUNIX0VOVFJZX1NBRkUNCj4gPiArI2RlZmluZSBUQUlMUV9GT1JFQUNIX0VOVFJZX1NB RkUocHRyLCBoZWFkLCBuYW1lLCBpdGVyLCB0dmFyKSAgXA0KPiA+ICsgICAgICAgZm9yICgoaXRl cikgPSBUQUlMUV9GSVJTVCgmaGVhZCk7ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4gKyAg ICAgICAgICAgKGl0ZXIpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gPiArICAgICAgICAgICAgICAgKHB0ciA9IGNvbnRhaW5lcl9vZihpdGVyLCB0eXBl b2YoKihwdHIpKSwgbmFtZSkpICYmXA0KPiA+ICsgICAgICAgICAgICAgICAoKHR2YXIpID0gVEFJ TFFfTkVYVCgoaXRlciksIG5vZGUpLCAxKTsgXA0KPiA+ICsgICAgICAgICAgIChpdGVyKSA9ICh0 dmFyKSkNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsvKioqKioqKioqKioqKioqKioqKioqKiov DQo+ID4gKy8qKiogTGlzdCBvcGVyYXRpb25zICoqKi8NCj4gPiArLyoqKioqKioqKioqKioqKioq KioqKioqLw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfbGlzdF9pbml0X2hlYWQoKSAt IGluaXRpYWxpemUgdGhlIGhlYWQgb2YgYSBsaXN0DQo+ID4gKyAqIEBoZWFkOiBsaXN0IGhlYWQN Cj4gPiArICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkbGIyX2xpc3RfaW5pdF9oZWFkKHN0 cnVjdCBkbGIyX2xpc3RfaGVhZCAqaGVhZCkNCj4gPiArew0KPiA+ICsgICAgICAgVEFJTFFfSU5J VChoZWFkKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfbGlzdF9hZGQo KSAtIGFkZCBhbiBlbnRyeSB0byBhIGxpc3QNCj4gPiArICogQGhlYWQ6IGxpc3QgaGVhZA0KPiA+ ICsgKiBAZW50cnk6IG5ldyBsaXN0IGVudHJ5DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5l IHZvaWQNCj4gPiArZGxiMl9saXN0X2FkZChzdHJ1Y3QgZGxiMl9saXN0X2hlYWQgKmhlYWQsIHN0 cnVjdCBkbGIyX2xpc3RfZW50cnkgKmVudHJ5KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBUQUlMUV9J TlNFUlRfVEFJTChoZWFkLCBlbnRyeSwgbm9kZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgKiBkbGIyX2xpc3RfZGVsKCkgLSBkZWxldGUgYW4gZW50cnkgZnJvbSBhIGxpc3QNCj4g PiArICogQGVudHJ5OiBsaXN0IGVudHJ5DQo+ID4gKyAqIEBoZWFkOiBsaXN0IGhlYWQNCj4gPiAr ICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkbGIyX2xpc3RfZGVsKHN0cnVjdCBkbGIyX2xp c3RfaGVhZCAqaGVhZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZGxiMl9saXN0X2VudHJ5ICplbnRyeSkNCj4gPiArew0KPiA+ICsgICAgICAgVEFJTFFfUkVN T1ZFKGhlYWQsIGVudHJ5LCBub2RlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IGRsYjJfbGlzdF9lbXB0eSgpIC0gY2hlY2sgaWYgYSBsaXN0IGlzIGVtcHR5DQo+ID4gKyAqIEBo ZWFkOiBsaXN0IGhlYWQNCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5z IDEgaWYgZW1wdHksIDAgaWYgbm90Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSBpbnQg ZGxiMl9saXN0X2VtcHR5KHN0cnVjdCBkbGIyX2xpc3RfaGVhZCAqaGVhZCkNCj4gPiArew0KPiA+ ICsgICAgICAgcmV0dXJuIFRBSUxRX0VNUFRZKGhlYWQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogZGxiMl9saXN0X3NwbGljZSgpIC0gc3BsaWNlIGEgbGlzdA0KPiA+ICsgKiBA c3JjX2hlYWQ6IGxpc3QgdG8gYmUgYWRkZWQNCj4gPiArICogQCBoZWFkOiB3aGVyZSBzcmNfaGVh ZCB3aWxsIGJlIGluc2VydGVkDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGxi Ml9saXN0X3NwbGljZShzdHJ1Y3QgZGxiMl9saXN0X2hlYWQgKnNyY19oZWFkLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2xpc3RfaGVhZCAqaGVh ZCkNCj4gPiArew0KPiA+ICsgICAgICAgVEFJTFFfQ09OQ0FUKGhlYWQsIHNyY19oZWFkLCBub2Rl KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIERMQjJfTElTVF9IRUFEKCkgLSBy ZXRyaWV2ZSB0aGUgaGVhZCBvZiB0aGUgbGlzdA0KPiA+ICsgKiBAaGVhZDogbGlzdCBoZWFkDQo+ ID4gKyAqIEB0eXBlOiB0eXBlIG9mIHRoZSBsaXN0IHZhcmlhYmxlDQo+ID4gKyAqIEBuYW1lOiBu YW1lIG9mIHRoZSBsaXN0IGZpZWxkIHdpdGhpbiB0aGUgY29udGFpbmluZyBzdHJ1Y3QNCj4gPiAr ICovDQo+ID4gKyNkZWZpbmUgRExCMl9MSVNUX0hFQUQoaGVhZCwgdHlwZSwgbmFtZSkgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gPiArICAgICAgIChUQUlMUV9GSVJTVCgmaGVhZCkgPyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICAgICAgICAgICBjb250 YWluZXJfb2YoVEFJTFFfRklSU1QoJmhlYWQpLCB0eXBlLCBuYW1lKSA6ICBcDQo+ID4gKyAgICAg ICAgICAgICAgIE5VTEwpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogRExCMl9MSVNUX0ZPUl9F QUNIKCkgLSBpdGVyYXRlIG92ZXIgYSBsaXN0DQo+ID4gKyAqIEBoZWFkOiBsaXN0IGhlYWQNCj4g PiArICogQHB0cjogcG9pbnRlciB0byBzdHJ1Y3QgY29udGFpbmluZyBhIHN0cnVjdCBsaXN0DQo+ ID4gKyAqIEBuYW1lOiBuYW1lIG9mIHRoZSBsaXN0IGZpZWxkIHdpdGhpbiB0aGUgY29udGFpbmlu ZyBzdHJ1Y3QNCj4gPiArICogQGl0ZXI6IGl0ZXJhdG9yIHZhcmlhYmxlDQo+ID4gKyAqLw0KPiA+ ICsjZGVmaW5lIERMQjJfTElTVF9GT1JfRUFDSChoZWFkLCBwdHIsIG5hbWUsIHRtcF9pdGVyKSBc DQo+ID4gKyAgICAgICBUQUlMUV9GT1JFQUNIX0VOVFJZKHB0ciwgaGVhZCwgbmFtZSwgdG1wX2l0 ZXIpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogRExCMl9MSVNUX0ZPUl9FQUNIX1NBRkUoKSAt IGl0ZXJhdGUgb3ZlciBhIGxpc3QuIFRoaXMgbG9vcCB3b3JrcyBldmVuIGlmDQo+ID4gKyAqIGFu IGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0IHdoaWxlIHByb2Nlc3NpbmcgaXQuDQo+ ID4gKyAqIEBwdHI6IHBvaW50ZXIgdG8gc3RydWN0IGNvbnRhaW5pbmcgYSBzdHJ1Y3QgbGlzdA0K PiA+ICsgKiBAcHRyX3RtcDogcG9pbnRlciB0byBzdHJ1Y3QgY29udGFpbmluZyBhIHN0cnVjdCBs aXN0ICh0ZW1wb3JhcnkpDQo+ID4gKyAqIEBoZWFkOiBsaXN0IGhlYWQNCj4gPiArICogQG5hbWU6 IG5hbWUgb2YgdGhlIGxpc3QgZmllbGQgd2l0aGluIHRoZSBjb250YWluaW5nIHN0cnVjdA0KPiA+ ICsgKiBAaXRlcjogaXRlcmF0b3IgdmFyaWFibGUNCj4gPiArICogQGl0ZXJfdG1wOiBpdGVyYXRv ciB2YXJpYWJsZSAodGVtcG9yYXJ5KQ0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBETEIyX0xJU1Rf Rk9SX0VBQ0hfU0FGRShoZWFkLCBwdHIsIHB0cl90bXAsIG5hbWUsIHRtcF9pdGVyLA0KPiBzYWZf aXRyKSBcDQo+ID4gKyAgICAgICBUQUlMUV9GT1JFQUNIX0VOVFJZX1NBRkUocHRyLCBoZWFkLCBu YW1lLCB0bXBfaXRlciwgc2FmX2l0cikNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiAgX19ETEIyX09T REVQX0xJU1RfSCAqLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFz ZS9kbGIyX29zZGVwX3R5cGVzLmgNCj4gYi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFzZS9kbGIy X29zZGVwX3R5cGVzLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAuLjBhNDhmN2UNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ldmVudC9k bGIyL3BmL2Jhc2UvZGxiMl9vc2RlcF90eXBlcy5oDQo+ID4gQEAgLTAsMCArMSwzMSBAQA0KPiA+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHly aWdodChjKSAyMDE2LTIwMjAgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ ICsjaWZuZGVmIF9fRExCMl9PU0RFUF9UWVBFU19IDQo+ID4gKyNkZWZpbmUgX19ETEIyX09TREVQ X1RZUEVTX0gNCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPGludHR5cGVzLmg+DQo+ID4gKyNpbmNsdWRlIDxjdHlwZS5oPg0KPiA+ICsj aW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gKyNpbmNsdWRlIDxzdGRib29sLmg+DQo+ID4gKyNpbmNs dWRlIDxzdHJpbmcuaD4NCj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPg0KPiA+ICsjaW5jbHVkZSA8 ZXJybm8uaD4NCj4gPiArDQo+ID4gKy8qIFR5cGVzIGZvciB1c2VyIG1vZGUgUEYgUE1EICovDQo+ ID4gK3R5cGVkZWYgdWludDhfdCAgICAgICAgIHU4Ow0KPiA+ICt0eXBlZGVmIGludDhfdCAgICAg ICAgICBzODsNCj4gPiArdHlwZWRlZiB1aW50MTZfdCAgICAgICAgdTE2Ow0KPiA+ICt0eXBlZGVm IGludDE2X3QgICAgICAgICBzMTY7DQo+ID4gK3R5cGVkZWYgdWludDMyX3QgICAgICAgIHUzMjsN Cj4gPiArdHlwZWRlZiBpbnQzMl90ICAgICAgICAgczMyOw0KPiA+ICt0eXBlZGVmIHVpbnQ2NF90 ICAgICAgICB1NjQ7DQo+ID4gKw0KPiA+ICsjZGVmaW5lIF9faW9tZW0NCj4gPiArDQo+ID4gKy8q IEVORCB0eXBlcyBmb3IgdXNlciBtb2RlIFBGIFBNRCAqLw0KPiA+ICsNCj4gPiArI2VuZGlmIC8q IF9fRExCMl9PU0RFUF9UWVBFU19IICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXZlbnQv ZGxiMi9wZi9iYXNlL2RsYjJfcmVncy5oDQo+IGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2Uv ZGxiMl9yZWdzLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAu LjQzZWNhZDQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ldmVudC9kbGIy L3BmL2Jhc2UvZGxiMl9yZWdzLmgNCj4gPiBAQCAtMCwwICsxLDI1MjcgQEANCj4gPiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5cmlnaHQoYykg MjAxNi0yMDIwIEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2lmbmRl ZiBfX0RMQjJfUkVHU19IDQo+ID4gKyNkZWZpbmUgX19ETEIyX1JFR1NfSA0KPiA+ICsNCj4gPiAr I2luY2x1ZGUgImRsYjJfb3NkZXBfdHlwZXMuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9G VU5DX1BGX1ZGMlBGX01BSUxCT1hfQllURVMgMjU2DQo+ID4gKyNkZWZpbmUgRExCMl9GVU5DX1BG X1ZGMlBGX01BSUxCT1godmZfaWQsIHgpIFwNCj4gPiArICAgICAgICgweDEwMDAgKyAweDQgKiAo eCkgKyAodmZfaWQpICogMHgxMDAwMCkNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUEZfVkYyUEZf TUFJTEJPWF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfZnVuY19wZl92ZjJwZl9tYWlsYm94IHsN Cj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtc2cgOiAzMjsN Cj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUEZfVkYyUEZfTUFJTEJPWF9JU1IodmZfaWQpIFwN Cj4gPiArICAgICAgICgweDFmMDAgKyAodmZfaWQpICogMHgxMDAwMCkNCj4gPiArI2RlZmluZSBE TEIyX0ZVTkNfUEZfVkYyUEZfTUFJTEJPWF9JU1JfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2Z1 bmNfcGZfdmYycGZfbWFpbGJveF9pc3Igew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHZmMF9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYx X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjJfaXNyIDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHZmM19pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmY0 X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjVfaXNyIDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHZmNl9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmY3 X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjhfaXNyIDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHZmOV9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYx MF9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYxMV9pc3IgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgdmYxMl9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmYxM19pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYxNF9pc3IgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgdmYxNV9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgcnN2ZDAgOiAxNjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFs Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUEZfVkYyUEZfRkxSX0lT Uih2Zl9pZCkgXA0KPiA+ICsgICAgICAgKDB4MWYwNCArICh2Zl9pZCkgKiAweDEwMDAwKQ0KPiA+ ICsjZGVmaW5lIERMQjJfRlVOQ19QRl9WRjJQRl9GTFJfSVNSX1JTVCAweDANCj4gPiArdW5pb24g ZGxiMl9mdW5jX3BmX3ZmMnBmX2Zscl9pc3Igew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmMF9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmYxX2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjJfaXNyIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmM19pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmY0X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjVfaXNyIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmNl9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmY3X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjhfaXNyIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmOV9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmYxMF9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYxMV9pc3IgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgdmYxMl9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgdmYxM19pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYxNF9pc3IgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgdmYxNV9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgcnN2ZDAgOiAxNjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIg dmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUEZfVkYyUEZfSVNS X1BFTkQodmZfaWQpIFwNCj4gPiArICAgICAgICgweDFmMTAgKyAodmZfaWQpICogMHgxMDAwMCkN Cj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUEZfVkYyUEZfSVNSX1BFTkRfUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2Z1bmNfcGZfdmYycGZfaXNyX3BlbmQgew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIGlzcl9wZW5kIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHJzdmQwIDogMzE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMy IHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9GVU5DX1BGX1BGMlZGX01B SUxCT1hfQllURVMgNjQNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfUEZfUEYyVkZfTUFJTEJPWCh2 Zl9pZCwgeCkgXA0KPiA+ICsgICAgICAgKDB4MjAwMCArIDB4NCAqICh4KSArICh2Zl9pZCkgKiAw eDEwMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfRlVOQ19QRl9QRjJWRl9NQUlMQk9YX1JTVCAweDAN Cj4gPiArdW5pb24gZGxiMl9mdW5jX3BmX3BmMnZmX21haWxib3ggew0KPiA+ICsgICAgICAgc3Ry dWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIG1zZyA6IDMyOw0KPiA+ICsgICAgICAgfSBm aWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5l IERMQjJfRlVOQ19QRl9QRjJWRl9NQUlMQk9YX0lTUih2Zl9pZCkgXA0KPiA+ICsgICAgICAgKDB4 MmYwMCArICh2Zl9pZCkgKiAweDEwMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfRlVOQ19QRl9QRjJW Rl9NQUlMQk9YX0lTUl9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfZnVuY19wZl9wZjJ2Zl9tYWls Ym94X2lzciB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmYwX2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjFfaXNyIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmMl9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmYzX2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjRfaXNyIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmNV9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmY2X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjdfaXNyIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHZmOF9pc3IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dmY5X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjEwX2lzciA6IDE7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiB2ZjExX2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiB2ZjEyX2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjEzX2lzciA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjE0X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiB2ZjE1X2lzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDE2Ow0K PiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIERMQjJfRlVOQ19QRl9WRl9SRVNFVF9JTl9QUk9HUkVTUyh2Zl9pZCkg XA0KPiA+ICsgICAgICAgKDB4MzAwMCArICh2Zl9pZCkgKiAweDEwMDAwKQ0KPiA+ICsjZGVmaW5l IERMQjJfRlVOQ19QRl9WRl9SRVNFVF9JTl9QUk9HUkVTU19SU1QgMHhmZmZmDQo+ID4gK3VuaW9u IGRsYjJfZnVuY19wZl92Zl9yZXNldF9pbl9wcm9ncmVzcyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYwX3Jlc2V0X2luX3Byb2dyZXNzIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIHZmMV9yZXNldF9pbl9wcm9ncmVzcyA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiB2ZjJfcmVzZXRfaW5fcHJvZ3Jlc3MgOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgdmYzX3Jlc2V0X2luX3Byb2dyZXNzIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHZmNF9yZXNldF9pbl9wcm9ncmVzcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiB2ZjVfcmVzZXRfaW5fcHJvZ3Jlc3MgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmY2 X3Jlc2V0X2luX3Byb2dyZXNzIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZmN19yZXNl dF9pbl9wcm9ncmVzcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjhfcmVzZXRfaW5f cHJvZ3Jlc3MgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmY5X3Jlc2V0X2luX3Byb2dy ZXNzIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZmMTBfcmVzZXRfaW5fcHJvZ3Jlc3Mg OiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYxMV9yZXNldF9pbl9wcm9ncmVzcyA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZjEyX3Jlc2V0X2luX3Byb2dyZXNzIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIHZmMTNfcmVzZXRfaW5fcHJvZ3Jlc3MgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgdmYxNF9yZXNldF9pbl9wcm9ncmVzcyA6IDE7DQo+ID4gKyAgICAg ICAgICAgICAgIHUzMiB2ZjE1X3Jlc2V0X2luX3Byb2dyZXNzIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHJzdmQwIDogMTY7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAg dTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9NU0lYX01FTV9WRUNU T1JfQ1RSTCh4KSBcDQo+ID4gKyAgICAgICAoMHgxMDAwMDBjICsgKHgpICogMHgxMCkNCj4gPiAr I2RlZmluZSBETEIyX01TSVhfTUVNX1ZFQ1RPUl9DVFJMX1JTVCAweDENCj4gPiArdW5pb24gZGxi Ml9tc2l4X21lbV92ZWN0b3JfY3RybCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgdmVjX21hc2sgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2 ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0lPU0ZfRlVOQ19WRl9CQVJfRFNCTCh4KSBc DQo+ID4gKyAgICAgICAoMHgyMCArICh4KSAqIDB4NCkNCj4gPiArI2RlZmluZSBETEIyX0lPU0Zf RlVOQ19WRl9CQVJfRFNCTF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfaW9zZl9mdW5jX3ZmX2Jh cl9kc2JsIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBm dW5jX3ZmX2Jhcl9kaXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAzMTsN Cj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19UT1RBTF9WQVMgMHgxMDAwMDExYw0KPiA+ICsjZGVm aW5lIERMQjJfU1lTX1RPVEFMX1ZBU19SU1QgMHgyMA0KPiA+ICt1bmlvbiBkbGIyX3N5c190b3Rh bF92YXMgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHRv dGFsX3ZhcyA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX1RPVEFMX0RJUl9QT1JUUyAw eDEwMDAwMTE4DQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfVE9UQUxfRElSX1BPUlRTX1JTVCAweDQw DQo+ID4gK3VuaW9uIGRsYjJfc3lzX3RvdGFsX2Rpcl9wb3J0cyB7DQo+ID4gKyAgICAgICBzdHJ1 Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdG90YWxfZGlyX3BvcnRzIDogMzI7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9TWVNfVE9UQUxfTERCX1BPUlRTIDB4MTAwMDAxMTQNCj4gPiArI2Rl ZmluZSBETEIyX1NZU19UT1RBTF9MREJfUE9SVFNfUlNUIDB4NDANCj4gPiArdW5pb24gZGxiMl9z eXNfdG90YWxfbGRiX3BvcnRzIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiB0b3RhbF9sZGJfcG9ydHMgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZ U19UT1RBTF9ESVJfUUlEIDB4MTAwMDAxMTANCj4gPiArI2RlZmluZSBETEIyX1NZU19UT1RBTF9E SVJfUUlEX1JTVCAweDQwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX3RvdGFsX2Rpcl9xaWQgew0KPiA+ ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHRvdGFsX2Rpcl9xaWQg OiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19UT1RBTF9MREJfUUlEIDB4MTAwMDAxMGMN Cj4gPiArI2RlZmluZSBETEIyX1NZU19UT1RBTF9MREJfUUlEX1JTVCAweDIwDQo+ID4gK3VuaW9u IGRsYjJfc3lzX3RvdGFsX2xkYl9xaWQgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHRvdGFsX2xkYl9xaWQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7 DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIy X1NZU19UT1RBTF9ESVJfQ1JEUyAweDEwMDAwMTA4DQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfVE9U QUxfRElSX0NSRFNfUlNUIDB4MTAwMA0KPiA+ICt1bmlvbiBkbGIyX3N5c190b3RhbF9kaXJfY3Jk cyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdG90YWxf ZGlyX2NyZWRpdHMgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIg dmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19UT1RBTF9MREJfQ1JE UyAweDEwMDAwMTA0DQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfVE9UQUxfTERCX0NSRFNfUlNUIDB4 MjAwMA0KPiA+ICt1bmlvbiBkbGIyX3N5c190b3RhbF9sZGJfY3JkcyB7DQo+ID4gKyAgICAgICBz dHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdG90YWxfbGRiX2NyZWRpdHMgOiAzMjsN Cj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19BTEFSTV9QRl9TWU5EMiAweDEwMDAwNTA4DQo+ID4g KyNkZWZpbmUgRExCMl9TWVNfQUxBUk1fUEZfU1lORDJfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIy X3N5c19hbGFybV9wZl9zeW5kMiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgbG9ja19pZCA6IDE2Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbWVhcyA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkZWJ1ZyA6IDc7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBjcV9wb3AgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcWVfdWhsIDogMTsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHFlX29yc3AgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgcWVfdmFsaWQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfaW50X3JlYXJt IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGRzaV9lcnJvciA6IDE7DQo+ID4gKyAgICAg ICAgICAgICAgIHUzMiByc3ZkMCA6IDI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAg ICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfQUxBUk1f UEZfU1lORDEgMHgxMDAwMDUwNA0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0FMQVJNX1BGX1NZTkQx X1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfYWxhcm1fcGZfc3luZDEgew0KPiA+ICsgICAg ICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGRzaSA6IDE2Ow0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgcWlkIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHF0eXBlIDog MjsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHFwcmkgOiAzOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgbXNnX3R5cGUgOiAzOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUz MiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0FMQVJNX1BGX1NZ TkQwIDB4MTAwMDA1MDANCj4gPiArI2RlZmluZSBETEIyX1NZU19BTEFSTV9QRl9TWU5EMF9SU1Qg MHgwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX2FsYXJtX3BmX3N5bmQwIHsNCj4gPiArICAgICAgIHN0 cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBzeW5kcm9tZSA6IDg7DQo+ID4gKyAgICAg ICAgICAgICAgIHUzMiBydHlwZSA6IDI7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6 IDM7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpc19sZGIgOiAxOw0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgY2xzIDogMjsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGFpZCA6IDY7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiB1bml0IDogNDsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHNv dXJjZSA6IDQ7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtb3JlIDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIHZhbGlkIDogMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19WRl9MREJf VlBQX1YoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmMDAgKyAoeCkgKiAweDEwMDApDQo+ID4g KyNkZWZpbmUgRExCMl9TWVNfVkZfTERCX1ZQUF9WX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9z eXNfdmZfbGRiX3ZwcF92IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiB2cHBfdiA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDMxOw0K PiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX1ZGX0xEQl9WUFAyUFAoeCkgXA0KPiA+ICsgICAgICAg KDB4MTAwMDBmMDQgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfVkZfTERC X1ZQUDJQUF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX3ZmX2xkYl92cHAycHAgew0KPiA+ ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBwIDogNjsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjY7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNf VkZfRElSX1ZQUF9WKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZjA4ICsgKHgpICogMHgxMDAw KQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX1ZGX0RJUl9WUFBfVl9SU1QgMHgwDQo+ID4gK3VuaW9u IGRsYjJfc3lzX3ZmX2Rpcl92cHBfdiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgdnBwX3YgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAg OiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19WRl9ESVJfVlBQMlBQKHgpIFwNCj4gPiAr ICAgICAgICgweDEwMDAwZjBjICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lT X1ZGX0RJUl9WUFAyUFBfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c192Zl9kaXJfdnBwMnBw IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcCA6IDY7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDI2Ow0KPiA+ICsgICAgICAgfSBmaWVs ZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERM QjJfU1lTX1ZGX0xEQl9WUUlEX1YoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmMTAgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfVkZfTERCX1ZRSURfVl9SU1QgMHgwDQo+ ID4gK3VuaW9uIGRsYjJfc3lzX3ZmX2xkYl92cWlkX3Ygew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHZxaWRfdiA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX1ZGX0xEQl9WUUlEMlFJ RCh4KSBcDQo+ID4gKyAgICAgICAoMHgxMDAwMGYxNCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2Rl ZmluZSBETEIyX1NZU19WRl9MREJfVlFJRDJRSURfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5 c192Zl9sZGJfdnFpZDJxaWQgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHFpZCA6IDU7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDI3Ow0K PiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9RSUQyVlFJRCh4KSBcDQo+ID4gKyAgICAgICAo MHgxMDAwMGYxOCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX1NZU19MREJfUUlE MlZRSURfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfcWlkMnZxaWQgew0KPiA+ICsg ICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZxaWQgOiA1Ow0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyNzsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4g KyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19W Rl9ESVJfVlFJRF9WKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZjFjICsgKHgpICogMHgxMDAw KQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX1ZGX0RJUl9WUUlEX1ZfUlNUIDB4MA0KPiA+ICt1bmlv biBkbGIyX3N5c192Zl9kaXJfdnFpZF92IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiB2cWlkX3YgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2 ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19WRl9ESVJfVlFJRDJRSUQoeCkgXA0K PiA+ICsgICAgICAgKDB4MTAwMDBmMjAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExC Ml9TWVNfVkZfRElSX1ZRSUQyUUlEX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfdmZfZGly X3ZxaWQycWlkIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBxaWQgOiA2Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyNjsNCj4gPiArICAg ICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr I2RlZmluZSBETEIyX1NZU19MREJfVkFTUUlEX1YoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBm MjQgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX1ZBU1FJRF9WX1JT VCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfbGRiX3Zhc3FpZF92IHsNCj4gPiArICAgICAgIHN0 cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2YXNxaWRfdiA6IDE7DQo+ID4gKyAgICAg ICAgICAgICAgIHUzMiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAg ICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0RJUl9W QVNRSURfVih4KSBcDQo+ID4gKyAgICAgICAoMHgxMDAwMGYyOCArICh4KSAqIDB4MTAwMCkNCj4g PiArI2RlZmluZSBETEIyX1NZU19ESVJfVkFTUUlEX1ZfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIy X3N5c19kaXJfdmFzcWlkX3Ygew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHZhc3FpZF92IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDog MzE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsN Cj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfQUxBUk1fVkZfU1lORDIoeCkgXA0KPiA+ICsg ICAgICAgKDB4MTAwMDBmNDggKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNf QUxBUk1fVkZfU1lORDJfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19hbGFybV92Zl9zeW5k MiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbG9ja19p ZCA6IDE2Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZGVidWcgOiA4Ow0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgY3FfcG9wIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHFlX3VobCA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBxZV9vcnNwIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHFlX3ZhbGlkIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGlzeiA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkc2lfZXJyb3IgOiAxOw0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgZGxicnN2ZCA6IDI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAg dTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfQUxBUk1fVkZf U1lORDEoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmNDQgKyAoeCkgKiAweDEwMDApDQo+ID4g KyNkZWZpbmUgRExCMl9TWVNfQUxBUk1fVkZfU1lORDFfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIy X3N5c19hbGFybV92Zl9zeW5kMSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgZHNpIDogMTY7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBxaWQgOiA4Ow0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcXR5cGUgOiAyOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgcXByaSA6IDM7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtc2dfdHlwZSA6IDM7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9TWVNfQUxBUk1fVkZfU1lORDAoeCkgXA0KPiA+ICsgICAgICAgKDB4 MTAwMDBmNDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfQUxBUk1fVkZf U1lORDBfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19hbGFybV92Zl9zeW5kMCB7DQo+ID4g KyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc3luZHJvbWUgOiA4Ow0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcnR5cGUgOiAyOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgdmZfc3luZDBfcGFyaXR5IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZmX3N5bmQx X3Bhcml0eSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2Zl9zeW5kMl9wYXJpdHkgOiAx Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaXNfbGRiIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIGNscyA6IDI7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBhaWQgOiA2Ow0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgdW5pdCA6IDQ7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBzb3Vy Y2UgOiA0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbW9yZSA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiB2YWxpZCA6IDE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAg dTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX1FJRF9D RkdfVih4KSBcDQo+ID4gKyAgICAgICAoMHgxMDAwMGY1OCArICh4KSAqIDB4MTAwMCkNCj4gPiAr I2RlZmluZSBETEIyX1NZU19MREJfUUlEX0NGR19WX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9z eXNfbGRiX3FpZF9jZmdfdiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgc25fY2ZnX3YgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZmlkX2NmZ192 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMzA7DQo+ID4gKyAgICAgICB9 IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZp bmUgRExCMl9TWVNfTERCX1FJRF9JVFMoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmNTQgKyAo eCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX1FJRF9JVFNfUlNUIDB4MA0K PiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfcWlkX2l0cyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcWlkX2l0cyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9RSURfVih4KSBc DQo+ID4gKyAgICAgICAoMHgxMDAwMGY1MCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBE TEIyX1NZU19MREJfUUlEX1ZfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfcWlkX3Yg ew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHFpZF92IDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMzE7DQo+ID4gKyAgICAgICB9IGZp ZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUg RExCMl9TWVNfRElSX1FJRF9JVFMoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmNjQgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX1FJRF9JVFNfUlNUIDB4MA0KPiA+ ICt1bmlvbiBkbGIyX3N5c19kaXJfcWlkX2l0cyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgcWlkX2l0cyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0RJUl9RSURfVih4KSBcDQo+ ID4gKyAgICAgICAoMHgxMDAwMGY2MCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIy X1NZU19ESVJfUUlEX1ZfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19kaXJfcWlkX3Ygew0K PiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHFpZF92IDogMTsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMzE7DQo+ID4gKyAgICAgICB9IGZpZWxk Ow0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExC Ml9TWVNfTERCX0NRX0FJX0RBVEEoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmYTggKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX0NRX0FJX0RBVEFfUlNUIDB4MA0K PiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfY3FfYWlfZGF0YSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfYWlfZGF0YSA6IDMyOw0KPiA+ICsgICAgICAg fSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVm aW5lIERMQjJfU1lTX0xEQl9DUV9BSV9BRERSKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZmE0 ICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9DUV9BSV9BRERSX1JT VCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfbGRiX2NxX2FpX2FkZHIgew0KPiA+ICsgICAgICAg c3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQxIDogMjsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGNxX2FpX2FkZHIgOiAxODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJz dmQwIDogMTI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4g PiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX0NRX1BBU0lEKHgpIFwNCj4g PiArICAgICAgICgweDEwMDAwZmEwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJf U1lTX0xEQl9DUV9QQVNJRF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX2xkYl9jcV9wYXNp ZCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcGFzaWQg OiAyMDsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGV4ZV9yZXEgOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgcHJpdl9yZXEgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZm10MiA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDk7DQo+ID4gKyAgICAgICB9IGZp ZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUg RExCMl9TWVNfTERCX0NRX0FUKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZjljICsgKHgpICog MHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9DUV9BVF9SU1QgMHgwDQo+ID4gK3Vu aW9uIGRsYjJfc3lzX2xkYl9jcV9hdCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfYXQgOiAyOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAg OiAzMDsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19MREJfQ1FfSVNSKHgpIFwNCj4gPiArICAg ICAgICgweDEwMDAwZjk4ICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xE Ql9DUV9JU1JfUlNUIDB4MA0KPiA+ICsvKiBDUSBJbnRlcnJ1cHQgTW9kZXMgKi8NCj4gPiArI2Rl ZmluZSBETEIyX0NRX0lTUl9NT0RFX0RJUyAgMA0KPiA+ICsjZGVmaW5lIERMQjJfQ1FfSVNSX01P REVfTVNJICAxDQo+ID4gKyNkZWZpbmUgRExCMl9DUV9JU1JfTU9ERV9NU0lYIDINCj4gPiArI2Rl ZmluZSBETEIyX0NRX0lTUl9NT0RFX0FESSAgMw0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfY3Ff aXNyIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2ZWN0 b3IgOiA2Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmYgOiA0Ow0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgZW5fY29kZSA6IDI7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDIw Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9DUTJWRl9QRl9STyh4KSBcDQo+ID4gKyAg ICAgICAoMHgxMDAwMGY5NCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX1NZU19M REJfQ1EyVkZfUEZfUk9fUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfY3EydmZfcGZf cm8gew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZmIDog NDsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGlzX3BmIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHJvIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjY7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX1BQX1YoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBm OTAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTERCX1BQX1ZfUlNUIDB4 MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfcHBfdiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcHBfdiA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9QUDJWREVWKHgpIFwN Cj4gPiArICAgICAgICgweDEwMDAwZjhjICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERM QjJfU1lTX0xEQl9QUDJWREVWX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfbGRiX3BwMnZk ZXYgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZkZXYg OiA0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyODsNCj4gPiArICAgICAgIH0g ZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmlu ZSBETEIyX1NZU19MREJfUFAyVkFTKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZjg4ICsgKHgp ICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9QUDJWQVNfUlNUIDB4MA0KPiA+ ICt1bmlvbiBkbGIyX3N5c19sZGJfcHAydmFzIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiB2YXMgOiA1Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2 ZDAgOiAyNzsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19MREJfQ1FfQUREUl9VKHgpIFwNCj4g PiArICAgICAgICgweDEwMDAwZjg0ICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJf U1lTX0xEQl9DUV9BRERSX1VfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfY3FfYWRk cl91IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBhZGRy X3UgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19MREJfQ1FfQUREUl9MKHgpIFwNCj4g PiArICAgICAgICgweDEwMDAwZjgwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJf U1lTX0xEQl9DUV9BRERSX0xfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19sZGJfY3FfYWRk cl9sIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3Zk MCA6IDY7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBhZGRyX2wgOiAyNjsNCj4gPiArICAgICAg IH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2Rl ZmluZSBETEIyX1NZU19ESVJfQ1FfRk1UKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZmVjICsg KHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0RJUl9DUV9GTVRfUlNUIDB4MA0K PiA+ICt1bmlvbiBkbGIyX3N5c19kaXJfY3FfZm10IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiBrZWVwX3BmX3BwaWQgOiAxOw0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcnN2ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1 MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19ESVJfQ1FfQUlf REFUQSh4KSBcDQo+ID4gKyAgICAgICAoMHgxMDAwMGZlOCArICh4KSAqIDB4MTAwMCkNCj4gPiAr I2RlZmluZSBETEIyX1NZU19ESVJfQ1FfQUlfREFUQV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJf c3lzX2Rpcl9jcV9haV9kYXRhIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBjcV9haV9kYXRhIDogMzI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsg ICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElS X0NRX0FJX0FERFIoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmZTQgKyAoeCkgKiAweDEwMDAp DQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX0NRX0FJX0FERFJfUlNUIDB4MA0KPiA+ICt1bmlv biBkbGIyX3N5c19kaXJfY3FfYWlfYWRkciB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgcnN2ZDEgOiAyOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3Ff YWlfYWRkciA6IDE4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxMjsNCj4gPiAr ICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArI2RlZmluZSBETEIyX1NZU19ESVJfQ1FfUEFTSUQoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAw MDBmZTAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX0NRX1BBU0lE X1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfZGlyX2NxX3Bhc2lkIHsNCj4gPiArICAgICAg IHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwYXNpZCA6IDIwOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgZXhlX3JlcSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcml2 X3JlcSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBmbXQyIDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIHJzdmQwIDogOTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19ESVJfQ1Ff QVQoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmZGMgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNk ZWZpbmUgRExCMl9TWVNfRElSX0NRX0FUX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfZGly X2NxX2F0IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBj cV9hdCA6IDI7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDMwOw0KPiA+ICsgICAg ICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIERMQjJfU1lTX0RJUl9DUV9JU1IoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmZDgg KyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX0NRX0lTUl9SU1QgMHgw DQo+ID4gK3VuaW9uIGRsYjJfc3lzX2Rpcl9jcV9pc3Igew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHZlY3RvciA6IDY7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiB2ZiA6IDQ7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBlbl9jb2RlIDogMjsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjA7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNf RElSX0NRMlZGX1BGX1JPKHgpIFwNCj4gPiArICAgICAgICgweDEwMDAwZmQ0ICsgKHgpICogMHgx MDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0RJUl9DUTJWRl9QRl9ST19SU1QgMHgwDQo+ID4g K3VuaW9uIGRsYjJfc3lzX2Rpcl9jcTJ2Zl9wZl9ybyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgdmYgOiA0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIg aXNfcGYgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcm8gOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgcnN2ZDAgOiAyNjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19ESVJfUFBf Vih4KSBcDQo+ID4gKyAgICAgICAoMHgxMDAwMGZkMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2Rl ZmluZSBETEIyX1NZU19ESVJfUFBfVl9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX2Rpcl9w cF92IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcF92 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMzE7DQo+ID4gKyAgICAgICB9 IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZp bmUgRExCMl9TWVNfRElSX1BQMlZERVYoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmY2MgKyAo eCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX1BQMlZERVZfUlNUIDB4MA0K PiA+ICt1bmlvbiBkbGIyX3N5c19kaXJfcHAydmRldiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgdmRldiA6IDQ7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiByc3ZkMCA6IDI4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0RJUl9QUDJWQVMoeCkgXA0K PiA+ICsgICAgICAgKDB4MTAwMDBmYzggKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExC Ml9TWVNfRElSX1BQMlZBU19SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX2Rpcl9wcDJ2YXMg ew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZhcyA6IDU7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDI3Ow0KPiA+ICsgICAgICAgfSBmaWVs ZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERM QjJfU1lTX0RJUl9DUV9BRERSX1UoeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmYzQgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX0NRX0FERFJfVV9SU1QgMHgwDQo+ ID4gK3VuaW9uIGRsYjJfc3lzX2Rpcl9jcV9hZGRyX3Ugew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIGFkZHJfdSA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVs ZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERM QjJfU1lTX0RJUl9DUV9BRERSX0woeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMDBmYzAgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX0NRX0FERFJfTF9SU1QgMHgwDQo+ ID4gK3VuaW9uIGRsYjJfc3lzX2Rpcl9jcV9hZGRyX2wgew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogNjsNCj4gPiArICAgICAgICAgICAgICAg dTMyIGFkZHJfbCA6IDI2Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0lOR1JFU1NfQUxBUk1f RU5CTCAweDEwMDAwMzAwDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfSU5HUkVTU19BTEFSTV9FTkJM X1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNfaW5ncmVzc19hbGFybV9lbmJsIHsNCj4gPiAr ICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbGxlZ2FsX2hjdyA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbGxlZ2FsX3BwIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGlsbGVnYWxfcGFzaWQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaWxs ZWdhbF9xaWQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZGlzYWJsZWRfcWlkIDogMTsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIGlsbGVnYWxfbGRiX3FpZF9jZmcgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyNjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4g KyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19N U0lYX0FDSyAweDEwMDAwNDAwDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTVNJWF9BQ0tfUlNUIDB4 MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19tc2l4X2FjayB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgbXNpeF8wX2FjayA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBtc2l4XzFfYWNrIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDog MzA7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsN Cj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfTVNJWF9QQVNTVEhSVSAweDEwMDAwNDA0DQo+ ID4gKyNkZWZpbmUgRExCMl9TWVNfTVNJWF9QQVNTVEhSVV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRs YjJfc3lzX21zaXhfcGFzc3RocnUgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIG1zaXhfMF9wYXNzdGhydSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBtc2l4XzFfcGFzc3RocnUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAz MDsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19NU0lYX01PREUgMHgxMDAwMDQwOA0KPiA+ICsj ZGVmaW5lIERMQjJfU1lTX01TSVhfTU9ERV9SU1QgMHgwDQo+ID4gKy8qIE1TSS1YIE1vZGVzICov DQo+ID4gKyNkZWZpbmUgRExCMl9NU0lYX01PREVfUEFDS0VEICAgICAwDQo+ID4gKyNkZWZpbmUg RExCMl9NU0lYX01PREVfQ09NUFJFU1NFRCAxDQo+ID4gK3VuaW9uIGRsYjJfc3lzX21zaXhfbW9k ZSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbW9kZSA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwb2xsX21vZGUgOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgcG9sbF9tYXNrIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBvbGxf bG9jayA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDI4Ow0KPiA+ICsgICAg ICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIERMQjJfU1lTX0RJUl9DUV8zMV8wX09DQ19JTlRfU1RTIDB4MTAwMDA0NDANCj4gPiAr I2RlZmluZSBETEIyX1NZU19ESVJfQ1FfMzFfMF9PQ0NfSU5UX1NUU19SU1QgMHgwDQo+ID4gK3Vu aW9uIGRsYjJfc3lzX2Rpcl9jcV8zMV8wX29jY19pbnRfc3RzIHsNCj4gPiArICAgICAgIHN0cnVj dCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8wX29jY19pbnQgOiAxOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfMV9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IGNxXzJfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8zX29jY19pbnQg OiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfNF9vY2NfaW50IDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGNxXzVfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBjcV82X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfN19vY2NfaW50 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzhfb2NjX2ludCA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBjcV85X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgY3FfMTBfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8xMV9vY2Nf aW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzEyX29jY19pbnQgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgY3FfMTNfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBjcV8xNF9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzE1 X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMTZfb2NjX2ludCA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8xN19vY2NfaW50IDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGNxXzE4X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y3FfMTlfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8yMF9vY2NfaW50 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzIxX29jY19pbnQgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgY3FfMjJfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBjcV8yM19vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzI0X29j Y19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMjVfb2NjX2ludCA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8yNl9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGNxXzI3X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3Ff Mjhfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8yOV9vY2NfaW50IDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzMwX29jY19pbnQgOiAxOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfMzFfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0K PiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9T WVNfRElSX0NRXzYzXzMyX09DQ19JTlRfU1RTIDB4MTAwMDA0NDQNCj4gPiArI2RlZmluZSBETEIy X1NZU19ESVJfQ1FfNjNfMzJfT0NDX0lOVF9TVFNfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5 c19kaXJfY3FfNjNfMzJfb2NjX2ludF9zdHMgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIGNxXzMyX29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgY3FfMzNfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8zNF9v Y2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzM1X29jY19pbnQgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMzZfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBjcV8zN19vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNx XzM4X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMzlfb2NjX2ludCA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV80MF9vY2NfaW50IDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGNxXzQxX29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgY3FfNDJfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV80M19vY2Nf aW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzQ0X29jY19pbnQgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgY3FfNDVfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBjcV80Nl9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzQ3 X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfNDhfb2NjX2ludCA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV80OV9vY2NfaW50IDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGNxXzUwX29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y3FfNTFfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV81Ml9vY2NfaW50 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzUzX29jY19pbnQgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgY3FfNTRfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBjcV81NV9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzU2X29j Y19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfNTdfb2NjX2ludCA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV81OF9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGNxXzU5X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3Ff NjBfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV82MV9vY2NfaW50IDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzYyX29jY19pbnQgOiAxOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfNjNfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0K PiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9T WVNfTERCX0NRXzMxXzBfT0NDX0lOVF9TVFMgMHgxMDAwMDQ2MA0KPiA+ICsjZGVmaW5lIERMQjJf U1lTX0xEQl9DUV8zMV8wX09DQ19JTlRfU1RTX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9zeXNf bGRiX2NxXzMxXzBfb2NjX2ludF9zdHMgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGNxXzBfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBjcV8xX29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMl9vY2NfaW50 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzNfb2NjX2ludCA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBjcV80X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgY3FfNV9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzZfb2NjX2lu dCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV83X29jY19pbnQgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgY3FfOF9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAg dTMyIGNxXzlfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8xMF9vY2Nf aW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzExX29jY19pbnQgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgY3FfMTJfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBjcV8xM19vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzE0 X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMTVfb2NjX2ludCA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8xNl9vY2NfaW50IDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGNxXzE3X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y3FfMThfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8xOV9vY2NfaW50 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzIwX29jY19pbnQgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgY3FfMjFfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBjcV8yMl9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzIzX29j Y19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMjRfb2NjX2ludCA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8yNV9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGNxXzI2X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3Ff Mjdfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8yOF9vY2NfaW50IDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzI5X29jY19pbnQgOiAxOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfMzBfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBjcV8zMV9vY2NfaW50IDogMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1 MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19MREJfQ1FfNjNf MzJfT0NDX0lOVF9TVFMgMHgxMDAwMDQ2NA0KPiA+ICsjZGVmaW5lIERMQjJfU1lTX0xEQl9DUV82 M18zMl9PQ0NfSU5UX1NUU19SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfc3lzX2xkYl9jcV82M18z Ml9vY2NfaW50X3N0cyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgY3FfMzJfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8zM19v Y2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzM0X29jY19pbnQgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMzVfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBjcV8zNl9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNx XzM3X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfMzhfb2NjX2ludCA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV8zOV9vY2NfaW50IDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGNxXzQwX29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgY3FfNDFfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV80Ml9vY2Nf aW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzQzX29jY19pbnQgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgY3FfNDRfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBjcV80NV9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzQ2 X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfNDdfb2NjX2ludCA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV80OF9vY2NfaW50IDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGNxXzQ5X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y3FfNTBfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV81MV9vY2NfaW50 IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzUyX29jY19pbnQgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgY3FfNTNfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBjcV81NF9vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzU1X29j Y19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfNTZfb2NjX2ludCA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV81N19vY2NfaW50IDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGNxXzU4X29jY19pbnQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3Ff NTlfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjcV82MF9vY2NfaW50IDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxXzYxX29jY19pbnQgOiAxOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfNjJfb2NjX2ludCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBjcV82M19vY2NfaW50IDogMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1 MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19ESVJfQ1FfT1BU X0NMUiAweDEwMDAwNGMwDQo+ID4gKyNkZWZpbmUgRExCMl9TWVNfRElSX0NRX09QVF9DTFJfUlNU IDB4MA0KPiA+ICt1bmlvbiBkbGIyX3N5c19kaXJfY3Ffb3B0X2NsciB7DQo+ID4gKyAgICAgICBz dHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3EgOiA2Ow0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcnN2ZDAgOiAyNjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1 MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1NZU19BTEFSTV9IV19T WU5EIDB4MTAwMDA1MGMNCj4gPiArI2RlZmluZSBETEIyX1NZU19BTEFSTV9IV19TWU5EX1JTVCAw eDANCj4gPiArdW5pb24gZGxiMl9zeXNfYWxhcm1faHdfc3luZCB7DQo+ID4gKyAgICAgICBzdHJ1 Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc3luZHJvbWUgOiA4Ow0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgcnR5cGUgOiAyOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYWxhcm0gOiAx Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3dkIDogMTsNCj4gPiArICAgICAgICAgICAgICAg dTMyIHZmX3BmX21iIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGNscyA6IDI7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBh aWQgOiA2Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdW5pdCA6IDQ7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBzb3VyY2UgOiA0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbW9yZSA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB2YWxpZCA6IDE7DQo+ID4gKyAgICAgICB9IGZpZWxk Ow0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExC Ml9BUUVEX1BJUEVfUUlEX0ZJRF9MSU0oeCkgXA0KPiA+ICsgICAgICAgKDB4MjAwMDAwMDAgKyAo eCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9BUUVEX1BJUEVfUUlEX0ZJRF9MSU1fUlNU IDB4N2ZmDQo+ID4gK3VuaW9uIGRsYjJfYXFlZF9waXBlX3FpZF9maWRfbGltIHsNCj4gPiArICAg ICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBxaWRfZmlkX2xpbWl0IDogMTM7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDE5Ow0KPiA+ICsgICAgICAgfSBmaWVs ZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERM QjJfQVFFRF9QSVBFX1FJRF9ISURfV0lEVEgoeCkgXA0KPiA+ICsgICAgICAgKDB4MjAwODAwMDAg KyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9BUUVEX1BJUEVfUUlEX0hJRF9XSURU SF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfYXFlZF9waXBlX3FpZF9oaWRfd2lkdGggew0KPiA+ ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNvbXByZXNzX2NvZGUg OiAzOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyOTsNCj4gPiArICAgICAgIH0g ZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmlu ZSBETEIyX0FRRURfUElQRV9DRkdfQVJCX1dFSUdIVFNfVFFQUklfQVRNXzAgMHgyNDAwMDAwNA0K PiA+ICsjZGVmaW5lIERMQjJfQVFFRF9QSVBFX0NGR19BUkJfV0VJR0hUU19UUVBSSV9BVE1fMF9S U1QNCj4gMHhmZWZjZmFmOA0KPiA+ICt1bmlvbiBkbGIyX2FxZWRfcGlwZV9jZmdfYXJiX3dlaWdo dHNfdHFwcmlfYXRtXzAgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHByaTAgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpMSA6IDg7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiBwcmkyIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBy aTMgOiA4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4g K307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQVRNX1FJRDJDUUlESVhfMDAoeCkgXA0KPiA+ ICsgICAgICAgKDB4MzAwODAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9B VE1fUUlEMkNRSURJWF8wMF9SU1QgMHgwDQo+ID4gKyNkZWZpbmUgRExCMl9BVE1fUUlEMkNRSURJ WCh4LCB5KSBcDQo+ID4gKyAgICAgICAoRExCMl9BVE1fUUlEMkNRSURJWF8wMCh4KSArIDB4ODAw MDAgKiAoeSkpDQo+ID4gKyNkZWZpbmUgRExCMl9BVE1fUUlEMkNRSURJWF9OVU0gMTYNCj4gPiAr dW5pb24gZGxiMl9hdG1fcWlkMmNxaWRpeF8wMCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgY3FfcDAgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y3FfcDEgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3FfcDIgOiA4Ow0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY3FfcDMgOiA4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAg ICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQVRNX0NGR19B UkJfV0VJR0hUU19SRFlfQklOIDB4MzQwMDAwMDQNCj4gPiArI2RlZmluZSBETEIyX0FUTV9DRkdf QVJCX1dFSUdIVFNfUkRZX0JJTl9SU1QgMHhmZmZlZmRmYw0KPiA+ICt1bmlvbiBkbGIyX2F0bV9j ZmdfYXJiX3dlaWdodHNfcmR5X2JpbiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgYmluMCA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBiaW4xIDog ODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGJpbjIgOiA4Ow0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgYmluMyA6IDg7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZh bDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9BVE1fQ0ZHX0FSQl9XRUlHSFRT X1NDSEVEX0JJTiAweDM0MDAwMDA4DQo+ID4gKyNkZWZpbmUgRExCMl9BVE1fQ0ZHX0FSQl9XRUlH SFRTX1NDSEVEX0JJTl9SU1QgMHhmZmZlZmRmYw0KPiA+ICt1bmlvbiBkbGIyX2F0bV9jZmdfYXJi X3dlaWdodHNfc2NoZWRfYmluIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBiaW4wIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGJpbjEgOiA4Ow0K PiA+ICsgICAgICAgICAgICAgICB1MzIgYmluMiA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBiaW4zIDogODsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfRElSX1ZBU19DUkQoeCkg XA0KPiA+ICsgICAgICAgKDB4NDAwMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUg RExCMl9DSFBfQ0ZHX0RJUl9WQVNfQ1JEX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfY2Zn X2Rpcl92YXNfY3JkIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBjb3VudCA6IDE0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxODsNCj4g PiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1ZBU19DUkQoeCkgXA0KPiA+ICsgICAgICAg KDB4NDAwODAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0xE Ql9WQVNfQ1JEX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfY2ZnX2xkYl92YXNfY3JkIHsN Cj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjb3VudCA6IDE1 Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxNzsNCj4gPiArICAgICAgIH0gZmll bGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBE TEIyX0NIUF9PUkRfUUlEX1NOKHgpIFwNCj4gPiArICAgICAgICgweDQwMTAwMDAwICsgKHgpICog MHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX09SRF9RSURfU05fUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2NocF9vcmRfcWlkX3NuIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBzbiA6IDEwOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAg OiAyMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9PUkRfUUlEX1NOX01BUCh4KSBcDQo+ID4g KyAgICAgICAoMHg0MDE4MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0NI UF9PUkRfUUlEX1NOX01BUF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX29yZF9xaWRfc25f bWFwIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtb2Rl IDogMzsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHNsb3QgOiA0Ow0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcnN2ejAgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZ3JwIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIHJzdnoxIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHJzdmQwIDogMjI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsN Cj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfU05fQ0hLX0VOQkwoeCkgXA0K PiA+ICsgICAgICAgKDB4NDAyMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExC Ml9DSFBfU05fQ0hLX0VOQkxfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9zbl9jaGtfZW5i bCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZW4gOiAx Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmll bGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBE TEIyX0NIUF9ESVJfQ1FfREVQVEgoeCkgXA0KPiA+ICsgICAgICAgKDB4NDAyODAwMDAgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfRElSX0NRX0RFUFRIX1JTVCAweDANCj4g PiArdW5pb24gZGxiMl9jaHBfZGlyX2NxX2RlcHRoIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiBkZXB0aCA6IDEzOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgcnN2ZDAgOiAxOTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFs Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9ESVJfQ1FfSU5UX0RFUFRI X1RIUlNIKHgpIFwNCj4gPiArICAgICAgICgweDQwMzAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ ICsjZGVmaW5lIERMQjJfQ0hQX0RJUl9DUV9JTlRfREVQVEhfVEhSU0hfUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2NocF9kaXJfY3FfaW50X2RlcHRoX3RocnNoIHsNCj4gPiArICAgICAgIHN0cnVj dCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkZXB0aF90aHJlc2hvbGQgOiAxMzsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMTk7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBf RElSX0NRX0lOVF9FTkIoeCkgXA0KPiA+ICsgICAgICAgKDB4NDAzODAwMDAgKyAoeCkgKiAweDEw MDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfRElSX0NRX0lOVF9FTkJfUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2NocF9kaXJfY3FfaW50X2VuYiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgZW5fdGltIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IGVuX2RlcHRoIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMzA7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9DSFBfRElSX0NRX1RNUl9USFJTSCh4KSBcDQo+ID4gKyAgICAgICAo MHg0MDQ4MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0NIUF9ESVJfQ1Ff VE1SX1RIUlNIX1JTVCAweDENCj4gPiArdW5pb24gZGxiMl9jaHBfZGlyX2NxX3Rtcl90aHJzaCB7 DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdGhyc2hfMCA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB0aHJzaF8xM18xIDogMTM7DQo+ID4gKyAgICAg ICAgICAgICAgIHUzMiByc3ZkMCA6IDE4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAg ICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0RJUl9D UV9US05fREVQVEhfU0VMKHgpIFwNCj4gPiArICAgICAgICgweDQwNTAwMDAwICsgKHgpICogMHgx MDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0RJUl9DUV9US05fREVQVEhfU0VMX1JTVCAweDAN Cj4gPiArdW5pb24gZGxiMl9jaHBfZGlyX2NxX3Rrbl9kZXB0aF9zZWwgew0KPiA+ICsgICAgICAg c3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHRva2VuX2RlcHRoX3NlbGVjdCA6IDQ7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDI4Ow0KPiA+ICsgICAgICAgfSBmaWVs ZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERM QjJfQ0hQX0RJUl9DUV9XRF9FTkIoeCkgXA0KPiA+ICsgICAgICAgKDB4NDA1ODAwMDAgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfRElSX0NRX1dEX0VOQl9SU1QgMHgwDQo+ ID4gK3VuaW9uIGRsYjJfY2hwX2Rpcl9jcV93ZF9lbmIgew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHdkX2VuYWJsZSA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUz MiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0RJUl9DUV9XUFRS KHgpIFwNCj4gPiArICAgICAgICgweDQwNjAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVm aW5lIERMQjJfQ0hQX0RJUl9DUV9XUFRSX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfZGly X2NxX3dwdHIgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHdyaXRlX3BvaW50ZXIgOiAxMzsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMTk7 DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4g PiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfRElSX0NRMlZBUyh4KSBcDQo+ID4gKyAgICAgICAo MHg0MDY4MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0NIUF9ESVJfQ1Ey VkFTX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfZGlyX2NxMnZhcyB7DQo+ID4gKyAgICAg ICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY3EydmFzIDogNTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHJzdmQwIDogMjc7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsg ICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfSElT VF9MSVNUX0JBU0UoeCkgXA0KPiA+ICsgICAgICAgKDB4NDA3MDAwMDAgKyAoeCkgKiAweDEwMDAp DQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfSElTVF9MSVNUX0JBU0VfUlNUIDB4MA0KPiA+ICt1bmlv biBkbGIyX2NocF9oaXN0X2xpc3RfYmFzZSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgYmFzZSA6IDEzOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2 ZDAgOiAxOTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9ISVNUX0xJU1RfTElNKHgpIFwNCj4g PiArICAgICAgICgweDQwNzgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJf Q0hQX0hJU1RfTElTVF9MSU1fUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9oaXN0X2xpc3Rf bGltIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBsaW1p dCA6IDEzOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxOTsNCj4gPiArICAgICAg IH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2Rl ZmluZSBETEIyX0NIUF9ISVNUX0xJU1RfUE9QX1BUUih4KSBcDQo+ID4gKyAgICAgICAoMHg0MDgw MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0NIUF9ISVNUX0xJU1RfUE9Q X1BUUl9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2hpc3RfbGlzdF9wb3BfcHRyIHsNCj4g PiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwb3BfcHRyIDogMTM7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBnZW5lcmF0aW9uIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHJzdmQwIDogMTg7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAg dTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfSElTVF9MSVNU X1BVU0hfUFRSKHgpIFwNCj4gPiArICAgICAgICgweDQwODgwMDAwICsgKHgpICogMHgxMDAwKQ0K PiA+ICsjZGVmaW5lIERMQjJfQ0hQX0hJU1RfTElTVF9QVVNIX1BUUl9SU1QgMHgwDQo+ID4gK3Vu aW9uIGRsYjJfY2hwX2hpc3RfbGlzdF9wdXNoX3B0ciB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcHVzaF9wdHIgOiAxMzsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIGdlbmVyYXRpb24gOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAx ODsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9MREJfQ1FfREVQVEgoeCkgXA0KPiA+ICsgICAg ICAgKDB4NDA5MDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfTERC X0NRX0RFUFRIX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfbGRiX2NxX2RlcHRoIHsNCj4g PiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkZXB0aCA6IDExOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyMTsNCj4gPiArICAgICAgIH0gZmllbGQ7 DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIy X0NIUF9MREJfQ1FfSU5UX0RFUFRIX1RIUlNIKHgpIFwNCj4gPiArICAgICAgICgweDQwOTgwMDAw ICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0xEQl9DUV9JTlRfREVQVEhf VEhSU0hfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9sZGJfY3FfaW50X2RlcHRoX3RocnNo IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkZXB0aF90 aHJlc2hvbGQgOiAxMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjE7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9DSFBfTERCX0NRX0lOVF9FTkIoeCkgXA0KPiA+ICsgICAgICAgKDB4 NDBhMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfTERCX0NRX0lO VF9FTkJfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9sZGJfY3FfaW50X2VuYiB7DQo+ID4g KyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZW5fdGltIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGVuX2RlcHRoIDogMTsNCj4gPiArICAgICAgICAgICAgICAg dTMyIHJzdmQwIDogMzA7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZh bDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfTERCX0NRX1RNUl9USFJT SCh4KSBcDQo+ID4gKyAgICAgICAoMHg0MGIwMDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2Rl ZmluZSBETEIyX0NIUF9MREJfQ1FfVE1SX1RIUlNIX1JTVCAweDENCj4gPiArdW5pb24gZGxiMl9j aHBfbGRiX2NxX3Rtcl90aHJzaCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgdGhyc2hfMCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB0aHJzaF8x M18xIDogMTM7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDE4Ow0KPiA+ICsgICAg ICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIERMQjJfQ0hQX0xEQl9DUV9US05fREVQVEhfU0VMKHgpIFwNCj4gPiArICAgICAgICgw eDQwYjgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0xEQl9DUV9U S05fREVQVEhfU0VMX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfbGRiX2NxX3Rrbl9kZXB0 aF9zZWwgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHRv a2VuX2RlcHRoX3NlbGVjdCA6IDQ7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDI4 Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0xEQl9DUV9XRF9FTkIoeCkgXA0KPiA+ICsgICAg ICAgKDB4NDBjMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfTERC X0NRX1dEX0VOQl9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2xkYl9jcV93ZF9lbmIgew0K PiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHdkX2VuYWJsZSA6 IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDMxOw0KPiA+ICsgICAgICAgfSBm aWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5l IERMQjJfQ0hQX0xEQl9DUV9XUFRSKHgpIFwNCj4gPiArICAgICAgICgweDQwYzgwMDAwICsgKHgp ICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0xEQl9DUV9XUFRSX1JTVCAweDANCj4g PiArdW5pb24gZGxiMl9jaHBfbGRiX2NxX3dwdHIgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4g PiArICAgICAgICAgICAgICAgdTMyIHdyaXRlX3BvaW50ZXIgOiAxMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHJzdmQwIDogMjE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAg dTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfTERCX0NRMlZB Uyh4KSBcDQo+ID4gKyAgICAgICAoMHg0MGQwMDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2Rl ZmluZSBETEIyX0NIUF9MREJfQ1EyVkFTX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfbGRi X2NxMnZhcyB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y3EydmFzIDogNTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjc7DQo+ID4gKyAg ICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4g KyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0NIUF9DU1JfQ1RSTCAweDQ0MDAwMDA4DQo+ID4gKyNkZWZp bmUgRExCMl9DSFBfQ0ZHX0NIUF9DU1JfQ1RSTF9SU1QgMHgxODAwMDINCj4gPiArdW5pb24gZGxi Ml9jaHBfY2ZnX2NocF9jc3JfY3RybCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgaW50X2Nvcl9hbGFybV9kaXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgaW50X2Nvcl9zeW5kX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRf dW5jcl9hbGFybV9kaXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X3VuY19zeW5k X2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRfaW5mMF9hbGFybV9kaXMgOiAx Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjBfc3luZF9kaXMgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgaW50X2luZjFfYWxhcm1fZGlzIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGludF9pbmYxX3N5bmRfZGlzIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IGludF9pbmYyX2FsYXJtX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRfaW5m Ml9zeW5kX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRfaW5mM19hbGFybV9k aXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjNfc3luZF9kaXMgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjRfYWxhcm1fZGlzIDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGludF9pbmY0X3N5bmRfZGlzIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIGludF9pbmY1X2FsYXJtX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBp bnRfaW5mNV9zeW5kX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkbGJfY29yX2Fs YXJtX2VuYWJsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjZmdfNjRieXRlc19xZV9s ZGJfY3FfbW9kZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjZmdfNjRieXRlc19xZV9k aXJfY3FfbW9kZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwYWRfd3JpdGVfbGRiIDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBhZF93cml0ZV9kaXIgOiAxOw0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgcGFkX2ZpcnN0X3dyaXRlX2xkYiA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBwYWRfZmlyc3Rfd3JpdGVfZGlyIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHJzdnowIDogOTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9ESVJfQ1FfSU5UUl9BUk1FRDAg MHg0NDAwMDA1Yw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0RJUl9DUV9JTlRSX0FSTUVEMF9SU1Qg MHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2Rpcl9jcV9pbnRyX2FybWVkMCB7DQo+ID4gKyAgICAg ICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYXJtZWQgOiAzMjsNCj4gPiArICAg ICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr I2RlZmluZSBETEIyX0NIUF9ESVJfQ1FfSU5UUl9BUk1FRDEgMHg0NDAwMDA2MA0KPiA+ICsjZGVm aW5lIERMQjJfQ0hQX0RJUl9DUV9JTlRSX0FSTUVEMV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJf Y2hwX2Rpcl9jcV9pbnRyX2FybWVkMSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgYXJtZWQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAg ICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdf RElSX0NRX1RJTUVSX0NUTCAweDQ0MDAwMDg0DQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0RJ Ul9DUV9USU1FUl9DVExfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9jZmdfZGlyX2NxX3Rp bWVyX2N0bCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIg c2FtcGxlX2ludGVydmFsIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGVuYiA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiByc3Z6MCA6IDIzOw0KPiA+ICsgICAgICAgfSBmaWVsZDsN Cj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJf Q0hQX0NGR19ESVJfV0RUT18wIDB4NDQwMDAwODgNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdf RElSX1dEVE9fMF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19kaXJfd2R0b18wIHsN Cj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB3ZHRvIDogMzI7 DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4g PiArDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0RJUl9XRFRPXzEgMHg0NDAwMDA4Yw0KPiA+ ICsjZGVmaW5lIERMQjJfQ0hQX0NGR19ESVJfV0RUT18xX1JTVCAweDANCj4gPiArdW5pb24gZGxi Ml9jaHBfY2ZnX2Rpcl93ZHRvXzEgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIHdkdG8gOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfRElS X1dEX0RJU0FCTEUwIDB4NDQwMDAwOTgNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfRElSX1dE X0RJU0FCTEUwX1JTVCAweGZmZmZmZmZmDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19kaXJfd2Rf ZGlzYWJsZTAgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHdkX2Rpc2FibGUgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIg dmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfRElSX1dEX0RJ U0FCTEUxIDB4NDQwMDAwOWMNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfRElSX1dEX0RJU0FC TEUxX1JTVCAweGZmZmZmZmZmDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19kaXJfd2RfZGlzYWJs ZTEgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHdkX2Rp c2FibGUgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfRElSX1dEX0VOQl9JTlRF UlZBTCAweDQ0MDAwMGEwDQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0RJUl9XRF9FTkJfSU5U RVJWQUxfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9jZmdfZGlyX3dkX2VuYl9pbnRlcnZh bCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc2FtcGxl X2ludGVydmFsIDogMjg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBlbmIgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgcnN2ejAgOiAzOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiAr ICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0NG R19ESVJfV0RfVEhSRVNIT0xEIDB4NDQwMDAwYWMNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdf RElSX1dEX1RIUkVTSE9MRF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19kaXJfd2Rf dGhyZXNob2xkIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiB3ZF90aHJlc2hvbGQgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ejAgOiAyNDsN Cj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9MREJfQ1FfSU5UUl9BUk1FRDAgMHg0NDAwMDBiMA0K PiA+ICsjZGVmaW5lIERMQjJfQ0hQX0xEQl9DUV9JTlRSX0FSTUVEMF9SU1QgMHgwDQo+ID4gK3Vu aW9uIGRsYjJfY2hwX2xkYl9jcV9pbnRyX2FybWVkMCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0K PiA+ICsgICAgICAgICAgICAgICB1MzIgYXJtZWQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7 DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIy X0NIUF9MREJfQ1FfSU5UUl9BUk1FRDEgMHg0NDAwMDBiNA0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQ X0xEQl9DUV9JTlRSX0FSTUVEMV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2xkYl9jcV9p bnRyX2FybWVkMSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgYXJtZWQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFs Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX0NRX1RJTUVS X0NUTCAweDQ0MDAwMGQ4DQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0xEQl9DUV9USU1FUl9D VExfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9jZmdfbGRiX2NxX3RpbWVyX2N0bCB7DQo+ ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc2FtcGxlX2ludGVy dmFsIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGVuYiA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiByc3Z6MCA6IDIzOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAg IHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0NGR19MREJf V0RUT18wIDB4NDQwMDAwZGMNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEVE9fMF9S U1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19sZGJfd2R0b18wIHsNCj4gPiArICAgICAg IHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB3ZHRvIDogMzI7DQo+ID4gKyAgICAg ICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgRExCMl9DSFBfQ0ZHX0xEQl9XRFRPXzEgMHg0NDAwMDBlMA0KPiA+ICsjZGVmaW5lIERM QjJfQ0hQX0NGR19MREJfV0RUT18xX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9jaHBfY2ZnX2xk Yl93ZHRvXzEgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHdkdG8gOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEX0RJU0FCTEUw IDB4NDQwMDAwZWMNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEX0RJU0FCTEUwX1JT VCAweGZmZmZmZmZmDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19sZGJfd2RfZGlzYWJsZTAgew0K PiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHdkX2Rpc2FibGUg OiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEX0RJU0FCTEUxIDB4NDQw MDAwZjANCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEX0RJU0FCTEUxX1JTVCAweGZm ZmZmZmZmDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19sZGJfd2RfZGlzYWJsZTEgew0KPiA+ICsg ICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHdkX2Rpc2FibGUgOiAzMjsN Cj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEX0VOQl9JTlRFUlZBTCAweDQ0MDAw MGY0DQo+ID4gKyNkZWZpbmUgRExCMl9DSFBfQ0ZHX0xEQl9XRF9FTkJfSU5URVJWQUxfUlNUIDB4 MA0KPiA+ICt1bmlvbiBkbGIyX2NocF9jZmdfbGRiX3dkX2VuYl9pbnRlcnZhbCB7DQo+ID4gKyAg ICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc2FtcGxlX2ludGVydmFsIDog Mjg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBlbmIgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgcnN2ejAgOiAzOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0hQX0NGR19MREJfV0RfVEhS RVNIT0xEIDB4NDQwMDAxMDANCj4gPiArI2RlZmluZSBETEIyX0NIUF9DRkdfTERCX1dEX1RIUkVT SE9MRF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfY2hwX2NmZ19sZGJfd2RfdGhyZXNob2xkIHsN Cj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiB3ZF90aHJlc2hv bGQgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ejAgOiAyNDsNCj4gPiArICAgICAg IH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2Rl ZmluZSBETEIyX0NIUF9DVFJMX0RJQUdfMDIgMHg0YzAwMDAyOA0KPiA+ICsjZGVmaW5lIERMQjJf Q0hQX0NUUkxfRElBR18wMl9SU1QgMHgxNTU1DQo+ID4gK3VuaW9uIGRsYjJfY2hwX2N0cmxfZGlh Z18wMiB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZWdy ZXNzX2NyZWRpdF9zdGF0dXNfZW1wdHkgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZWdy ZXNzX2NyZWRpdF9zdGF0dXNfYWZ1bGwgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY2hw X291dGJvdW5kX2hjd19waXBlX2NyZWRpdF9zdGF0dXNfZW1wdHkgOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgY2hwX291dGJvdW5kX2hjd19waXBlX2NyZWRpdF9zdGF0dXNfYWZ1bGwgOiAx Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY2hwX2xzcF9hcF9jbXBfcGlwZV9jcmVkaXRfc3Rh dHVzX2VtcHR5IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNocF9sc3BfYXBfY21wX3Bp cGVfY3JlZGl0X3N0YXR1c19hZnVsbCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjaHBf bHNwX3Rva19waXBlX2NyZWRpdF9zdGF0dXNfZW1wdHkgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgY2hwX2xzcF90b2tfcGlwZV9jcmVkaXRfc3RhdHVzX2FmdWxsIDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGNocF9yb3BfcGlwZV9jcmVkaXRfc3RhdHVzX2VtcHR5IDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGNocF9yb3BfcGlwZV9jcmVkaXRfc3RhdHVzX2FmdWxsIDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHFlZF90b19jcV9waXBlX2NyZWRpdF9zdGF0dXNf ZW1wdHkgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcWVkX3RvX2NxX3BpcGVfY3JlZGl0 X3N0YXR1c19hZnVsbCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBlZ3Jlc3NfbHNwX3Rv a2VuX2NyZWRpdF9zdGF0dXNfZW1wdHkgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZWdy ZXNzX2xzcF90b2tlbl9jcmVkaXRfc3RhdHVzX2FmdWxsIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHJzdmQwIDogMTg7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMy IHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9EUF9DRkdfQVJCX1dFSUdI VFNfVFFQUklfRElSXzAgMHg1NDAwMDAwMA0KPiA+ICsjZGVmaW5lIERMQjJfRFBfQ0ZHX0FSQl9X RUlHSFRTX1RRUFJJX0RJUl8wX1JTVCAweGZlZmNmYWY4DQo+ID4gK3VuaW9uIGRsYjJfZHBfY2Zn X2FyYl93ZWlnaHRzX3RxcHJpX2Rpcl8wIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBwcmkwIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHByaTEg OiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpMiA6IDg7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBwcmkzIDogODsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIg dmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0RQX0NGR19BUkJfV0VJR0hU U19UUVBSSV9ESVJfMSAweDU0MDAwMDA0DQo+ID4gKyNkZWZpbmUgRExCMl9EUF9DRkdfQVJCX1dF SUdIVFNfVFFQUklfRElSXzFfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2RwX2NmZ19hcmJfd2Vp Z2h0c190cXByaV9kaXJfMSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcnN2ejAgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1 MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0RQX0NGR19BUkJfV0VJ R0hUU19UUVBSSV9SRVBMQVlfMCAweDU0MDAwMDA4DQo+ID4gKyNkZWZpbmUgRExCMl9EUF9DRkdf QVJCX1dFSUdIVFNfVFFQUklfUkVQTEFZXzBfUlNUIDB4ZmVmY2ZhZjgNCj4gPiArdW5pb24gZGxi Ml9kcF9jZmdfYXJiX3dlaWdodHNfdHFwcmlfcmVwbGF5XzAgew0KPiA+ICsgICAgICAgc3RydWN0 IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHByaTAgOiA4Ow0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgcHJpMSA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmkyIDogODsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHByaTMgOiA4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiAr ICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfRFBfQ0ZH X0FSQl9XRUlHSFRTX1RRUFJJX1JFUExBWV8xIDB4NTQwMDAwMGMNCj4gPiArI2RlZmluZSBETEIy X0RQX0NGR19BUkJfV0VJR0hUU19UUVBSSV9SRVBMQVlfMV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRs YjJfZHBfY2ZnX2FyYl93ZWlnaHRzX3RxcHJpX3JlcGxheV8xIHsNCj4gPiArICAgICAgIHN0cnVj dCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3Z6MCA6IDMyOw0KPiA+ICsgICAgICAgfSBm aWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5l IERMQjJfRFBfRElSX0NTUl9DVFJMIDB4NTQwMDAwMTANCj4gPiArI2RlZmluZSBETEIyX0RQX0RJ Ul9DU1JfQ1RSTF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfZHBfZGlyX2Nzcl9jdHJsIHsNCj4g PiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRfY29yX2FsYXJt X2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRfY29yX3N5bmRfZGlzIDogMTsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIGludF91bmNyX2FsYXJtX2RpcyA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBpbnRfdW5jX3N5bmRfZGlzIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIGludF9pbmYwX2FsYXJtX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBp bnRfaW5mMF9zeW5kX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRfaW5mMV9h bGFybV9kaXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjFfc3luZF9kaXMg OiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjJfYWxhcm1fZGlzIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGludF9pbmYyX3N5bmRfZGlzIDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGludF9pbmYzX2FsYXJtX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBpbnRfaW5mM19zeW5kX2RpcyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbnRf aW5mNF9hbGFybV9kaXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjRfc3lu ZF9kaXMgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaW50X2luZjVfYWxhcm1fZGlzIDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGludF9pbmY1X3N5bmRfZGlzIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdnowIDogMTY7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9OQUxC X1BJUEVfQ0ZHX0FSQl9XRUlHSFRTX1RRUFJJX0FUUV8wIDB4ODQwMDAwMDANCj4gPiArI2RlZmlu ZSBETEIyX05BTEJfUElQRV9DRkdfQVJCX1dFSUdIVFNfVFFQUklfQVRRXzBfUlNUDQo+IDB4ZmVm Y2ZhZjgNCj4gPiArdW5pb24gZGxiMl9uYWxiX3BpcGVfY2ZnX2FyYl93ZWlnaHRzX3RxcHJpX2F0 cV8wIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmkw IDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHByaTEgOiA4Ow0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcHJpMiA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmkzIDogODsNCj4g PiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArI2RlZmluZSBETEIyX05BTEJfUElQRV9DRkdfQVJCX1dFSUdIVFNfVFFQUklfQVRRXzEg MHg4NDAwMDAwNA0KPiA+ICsjZGVmaW5lIERMQjJfTkFMQl9QSVBFX0NGR19BUkJfV0VJR0hUU19U UVBSSV9BVFFfMV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbmFsYl9waXBlX2NmZ19hcmJfd2Vp Z2h0c190cXByaV9hdHFfMSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcnN2ejAgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1 MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX05BTEJfUElQRV9DRkdf QVJCX1dFSUdIVFNfVFFQUklfTkFMQl8wIDB4ODQwMDAwMDgNCj4gPiArI2RlZmluZSBETEIyX05B TEJfUElQRV9DRkdfQVJCX1dFSUdIVFNfVFFQUklfTkFMQl8wX1JTVA0KPiAweGZlZmNmYWY4DQo+ ID4gK3VuaW9uIGRsYjJfbmFsYl9waXBlX2NmZ19hcmJfd2VpZ2h0c190cXByaV9uYWxiXzAgew0K PiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHByaTAgOiA4Ow0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpMSA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBwcmkyIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHByaTMgOiA4Ow0KPiA+ICsgICAg ICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIERMQjJfTkFMQl9QSVBFX0NGR19BUkJfV0VJR0hUU19UUVBSSV9OQUxCXzEgMHg4NDAw MDAwYw0KPiA+ICsjZGVmaW5lIERMQjJfTkFMQl9QSVBFX0NGR19BUkJfV0VJR0hUU19UUVBSSV9O QUxCXzFfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX25hbGJfcGlwZV9jZmdfYXJiX3dlaWdodHNf dHFwcmlfbmFsYl8xIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiByc3Z6MCA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTkFMQl9QSVBFX0NGR19BUkJf V0VJR0hUU19UUVBSSV9SRVBMQVlfMA0KPiAweDg0MDAwMDEwDQo+ID4gKyNkZWZpbmUgRExCMl9O QUxCX1BJUEVfQ0ZHX0FSQl9XRUlHSFRTX1RRUFJJX1JFUExBWV8wX1JTVA0KPiAweGZlZmNmYWY4 DQo+ID4gK3VuaW9uIGRsYjJfbmFsYl9waXBlX2NmZ19hcmJfd2VpZ2h0c190cXByaV9yZXBsYXlf MCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpMCA6 IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmkxIDogODsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHByaTIgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpMyA6IDg7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9OQUxCX1BJUEVfQ0ZHX0FSQl9XRUlHSFRTX1RRUFJJX1JFUExBWV8x DQo+IDB4ODQwMDAwMTQNCj4gPiArI2RlZmluZSBETEIyX05BTEJfUElQRV9DRkdfQVJCX1dFSUdI VFNfVFFQUklfUkVQTEFZXzFfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX25hbGJfcGlwZV9jZmdf YXJiX3dlaWdodHNfdHFwcmlfcmVwbGF5XzEgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdnowIDogMzI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9ST19Q SVBFX0dSUF8wX1NMVF9TSEZUKHgpIFwNCj4gPiArICAgICAgICgweDk2MDAwMDAwICsgKHgpICog MHg0KQ0KPiA+ICsjZGVmaW5lIERMQjJfUk9fUElQRV9HUlBfMF9TTFRfU0hGVF9SU1QgMHgwDQo+ ID4gK3VuaW9uIGRsYjJfcm9fcGlwZV9ncnBfMF9zbHRfc2hmdCB7DQo+ID4gKyAgICAgICBzdHJ1 Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY2hhbmdlIDogMTA7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiByc3ZkMCA6IDIyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAg IHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfUk9fUElQRV9HUlBf MV9TTFRfU0hGVCh4KSBcDQo+ID4gKyAgICAgICAoMHg5NjAxMDAwMCArICh4KSAqIDB4NCkNCj4g PiArI2RlZmluZSBETEIyX1JPX1BJUEVfR1JQXzFfU0xUX1NIRlRfUlNUIDB4MA0KPiA+ICt1bmlv biBkbGIyX3JvX3BpcGVfZ3JwXzFfc2x0X3NoZnQgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGNoYW5nZSA6IDEwOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgcnN2ZDAgOiAyMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFs Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1JPX1BJUEVfR1JQX1NOX01PREUg MHg5NDAwMDAwMA0KPiA+ICsjZGVmaW5lIERMQjJfUk9fUElQRV9HUlBfU05fTU9ERV9SU1QgMHgw DQo+ID4gK3VuaW9uIGRsYjJfcm9fcGlwZV9ncnBfc25fbW9kZSB7DQo+ID4gKyAgICAgICBzdHJ1 Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc25fbW9kZV8wIDogMzsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIHJzenYwIDogNTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHNuX21vZGVf MSA6IDM7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3p2MSA6IDIxOw0KPiA+ICsgICAgICAg fSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVm aW5lIERMQjJfUk9fUElQRV9DRkdfQ1RSTF9HRU5FUkFMXzAgMHg5YzAwMDAwMA0KPiA+ICsjZGVm aW5lIERMQjJfUk9fUElQRV9DRkdfQ1RSTF9HRU5FUkFMXzBfUlNUIDB4MA0KPiA+ICt1bmlvbiBk bGIyX3JvX3BpcGVfY2ZnX2N0cmxfZ2VuZXJhbF8wIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiB1bml0X3NpbmdsZV9zdGVwX21vZGUgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgcnJfZW4gOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN6 djAgOiAzMDsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DUTJQUklPVih4KSBcDQo+ID4gKyAg ICAgICAoMHhhMDAwMDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9D UTJQUklPVl9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX2NxMnByaW92IHsNCj4gPiArICAg ICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmlvIDogMjQ7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiB2IDogODsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DUTJRSUQw KHgpIFwNCj4gPiArICAgICAgICgweGEwMDgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVm aW5lIERMQjJfTFNQX0NRMlFJRDBfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9jcTJxaWQw IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBxaWRfcDAg OiA3Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDMgOiAxOw0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcWlkX3AxIDogNzsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQyIDogMTsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIHFpZF9wMiA6IDc7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiByc3ZkMSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBxaWRfcDMgOiA3Ow0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4g PiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQ X0NRMlFJRDEoeCkgXA0KPiA+ICsgICAgICAgKDB4YTAxMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1EyUUlEMV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNw X2NxMnFpZDEgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHFpZF9wNCA6IDc7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMyA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBxaWRfcDUgOiA3Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2 ZDIgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcWlkX3A2IDogNzsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIHJzdmQxIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHFpZF9wNyA6 IDc7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDE7DQo+ID4gKyAgICAgICB9IGZp ZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUg RExCMl9MU1BfQ1FfRElSX0RTQkwoeCkgXA0KPiA+ICsgICAgICAgKDB4YTAxODAwMDAgKyAoeCkg KiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1FfRElSX0RTQkxfUlNUIDB4MQ0KPiA+ ICt1bmlvbiBkbGIyX2xzcF9jcV9kaXJfZHNibCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgZGlzYWJsZWQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgcnN2ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFs Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DUV9ESVJfVEtOX0NOVCh4 KSBcDQo+ID4gKyAgICAgICAoMHhhMDIwMDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmlu ZSBETEIyX0xTUF9DUV9ESVJfVEtOX0NOVF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX2Nx X2Rpcl90a25fY250IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBjb3VudCA6IDEzOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxOTsNCj4g PiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArI2RlZmluZSBETEIyX0xTUF9DUV9ESVJfVEtOX0RFUFRIX1NFTF9EU0koeCkgXA0KPiA+ ICsgICAgICAgKDB4YTAyODAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9M U1BfQ1FfRElSX1RLTl9ERVBUSF9TRUxfRFNJX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3Bf Y3FfZGlyX3Rrbl9kZXB0aF9zZWxfZHNpIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiB0b2tlbl9kZXB0aF9zZWxlY3QgOiA0Ow0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgZGlzYWJsZV93Yl9vcHQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgaWdu b3JlX2RlcHRoIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjY7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1FfRElSX1RPVF9TQ0hfQ05UTCh4KSBcDQo+ID4gKyAgICAg ICAoMHhhMDMwMDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DUV9E SVJfVE9UX1NDSF9DTlRMX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfY3FfZGlyX3RvdF9z Y2hfY250bCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y291bnQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DUV9ESVJfVE9UX1NDSF9DTlRI KHgpIFwNCj4gPiArICAgICAgICgweGEwMzgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVm aW5lIERMQjJfTFNQX0NRX0RJUl9UT1RfU0NIX0NOVEhfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIy X2xzcF9jcV9kaXJfdG90X3NjaF9jbnRoIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBjb3VudCA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiAr ICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX0NR X0xEQl9EU0JMKHgpIFwNCj4gPiArICAgICAgICgweGEwNDAwMDAwICsgKHgpICogMHgxMDAwKQ0K PiA+ICsjZGVmaW5lIERMQjJfTFNQX0NRX0xEQl9EU0JMX1JTVCAweDENCj4gPiArdW5pb24gZGxi Ml9sc3BfY3FfbGRiX2RzYmwgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGRpc2FibGVkIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDog MzE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsN Cj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1FfTERCX0lORkxfQ05UKHgpIFwNCj4gPiAr ICAgICAgICgweGEwNDgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQ X0NRX0xEQl9JTkZMX0NOVF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX2NxX2xkYl9pbmZs X2NudCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY291 bnQgOiAxMjsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjA7DQo+ID4gKyAgICAg ICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgRExCMl9MU1BfQ1FfTERCX0lORkxfTElNKHgpIFwNCj4gPiArICAgICAgICgweGEwNTAw MDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX0NRX0xEQl9JTkZMX0xJ TV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX2NxX2xkYl9pbmZsX2xpbSB7DQo+ID4gKyAg ICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbGltaXQgOiAxMjsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMjA7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9MU1Bf Q1FfTERCX1RLTl9DTlQoeCkgXA0KPiA+ICsgICAgICAgKDB4YTA1ODAwMDAgKyAoeCkgKiAweDEw MDApDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1FfTERCX1RLTl9DTlRfUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2xzcF9jcV9sZGJfdGtuX2NudCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgdG9rZW5fY291bnQgOiAxMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIHJzdmQwIDogMjE7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMy IHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1FfTERCX1RLTl9E RVBUSF9TRUwoeCkgXA0KPiA+ICsgICAgICAgKDB4YTA2MDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ ID4gKyNkZWZpbmUgRExCMl9MU1BfQ1FfTERCX1RLTl9ERVBUSF9TRUxfUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2xzcF9jcV9sZGJfdGtuX2RlcHRoX3NlbCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdG9rZW5fZGVwdGhfc2VsZWN0IDogNDsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIGlnbm9yZV9kZXB0aCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiByc3ZkMCA6IDI3Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX0NRX0xEQl9UT1RfU0NI X0NOVEwoeCkgXA0KPiA+ICsgICAgICAgKDB4YTA2ODAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4g KyNkZWZpbmUgRExCMl9MU1BfQ1FfTERCX1RPVF9TQ0hfQ05UTF9SU1QgMHgwDQo+ID4gK3VuaW9u IGRsYjJfbHNwX2NxX2xkYl90b3Rfc2NoX2NudGwgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGNvdW50IDogMzI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0K PiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9M U1BfQ1FfTERCX1RPVF9TQ0hfQ05USCh4KSBcDQo+ID4gKyAgICAgICAoMHhhMDcwMDAwMCArICh4 KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DUV9MREJfVE9UX1NDSF9DTlRIX1JT VCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfY3FfbGRiX3RvdF9zY2hfY250aCB7DQo+ID4gKyAg ICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY291bnQgOiAzMjsNCj4gPiAr ICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArI2RlZmluZSBETEIyX0xTUF9RSURfRElSX01BWF9ERVBUSCh4KSBcDQo+ID4gKyAgICAgICAo MHhhMDc4MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfRElS X01BWF9ERVBUSF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX3FpZF9kaXJfbWF4X2RlcHRo IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkZXB0aCA6 IDEzOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxOTsNCj4gPiArICAgICAgIH0g ZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmlu ZSBETEIyX0xTUF9RSURfRElSX1RPVF9FTlFfQ05UTCh4KSBcDQo+ID4gKyAgICAgICAoMHhhMDgw MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfRElSX1RPVF9F TlFfQ05UTF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX3FpZF9kaXJfdG90X2VucV9jbnRs IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjb3VudCA6 IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9ESVJfVE9UX0VOUV9DTlRIKHgpIFwN Cj4gPiArICAgICAgICgweGEwODgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERM QjJfTFNQX1FJRF9ESVJfVE9UX0VOUV9DTlRIX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3Bf cWlkX2Rpcl90b3RfZW5xX2NudGggew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGNvdW50IDogMzI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAg ICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEX0RJ Ul9FTlFVRVVFX0NOVCh4KSBcDQo+ID4gKyAgICAgICAoMHhhMDkwMDAwMCArICh4KSAqIDB4MTAw MCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfRElSX0VOUVVFVUVfQ05UX1JTVCAweDANCj4g PiArdW5pb24gZGxiMl9sc3BfcWlkX2Rpcl9lbnF1ZXVlX2NudCB7DQo+ID4gKyAgICAgICBzdHJ1 Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY291bnQgOiAxMzsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHJzdmQwIDogMTk7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAg dTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEX0RJUl9E RVBUSF9USFJTSCh4KSBcDQo+ID4gKyAgICAgICAoMHhhMDk4MDAwMCArICh4KSAqIDB4MTAwMCkN Cj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfRElSX0RFUFRIX1RIUlNIX1JTVCAweDANCj4gPiAr dW5pb24gZGxiMl9sc3BfcWlkX2Rpcl9kZXB0aF90aHJzaCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdGhyZXNoIDogMTM7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiByc3ZkMCA6IDE5Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUz MiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9BUUVEX0FD VElWRV9DTlQoeCkgXA0KPiA+ICsgICAgICAgKDB4YTBhMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEX0FRRURfQUNUSVZFX0NOVF9SU1QgMHgwDQo+ID4gK3Vu aW9uIGRsYjJfbHNwX3FpZF9hcWVkX2FjdGl2ZV9jbnQgew0KPiA+ICsgICAgICAgc3RydWN0IHsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIGNvdW50IDogMTI7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiByc3ZkMCA6IDIwOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2 YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9BUUVEX0FDVElW RV9MSU0oeCkgXA0KPiA+ICsgICAgICAgKDB4YTBhODAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4g KyNkZWZpbmUgRExCMl9MU1BfUUlEX0FRRURfQUNUSVZFX0xJTV9SU1QgMHgwDQo+ID4gK3VuaW9u IGRsYjJfbHNwX3FpZF9hcWVkX2FjdGl2ZV9saW0gew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGxpbWl0IDogMTI7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiByc3ZkMCA6IDIwOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9BVE1fVE9UX0VOUV9D TlRMKHgpIFwNCj4gPiArICAgICAgICgweGEwYjAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsj ZGVmaW5lIERMQjJfTFNQX1FJRF9BVE1fVE9UX0VOUV9DTlRMX1JTVCAweDANCj4gPiArdW5pb24g ZGxiMl9sc3BfcWlkX2F0bV90b3RfZW5xX2NudGwgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGNvdW50IDogMzI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0K PiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9M U1BfUUlEX0FUTV9UT1RfRU5RX0NOVEgoeCkgXA0KPiA+ICsgICAgICAgKDB4YTBiODAwMDAgKyAo eCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEX0FUTV9UT1RfRU5RX0NOVEhf UlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRfYXRtX3RvdF9lbnFfY250aCB7DQo+ID4g KyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY291bnQgOiAzMjsNCj4g PiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfQVRRX0VOUVVFVUVfQ05UKHgpIFwNCj4gPiArICAg ICAgICgweGEwYzAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJ RF9BVFFfRU5RVUVVRV9DTlRfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRfYXRxX2Vu cXVldWVfY250IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBjb3VudCA6IDE0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxODsNCj4gPiAr ICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArI2RlZmluZSBETEIyX0xTUF9RSURfTERCX0VOUVVFVUVfQ05UKHgpIFwNCj4gPiArICAgICAg ICgweGEwYzgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9M REJfRU5RVUVVRV9DTlRfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRfbGRiX2VucXVl dWVfY250IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBj b3VudCA6IDE0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxODsNCj4gPiArICAg ICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr I2RlZmluZSBETEIyX0xTUF9RSURfTERCX0lORkxfQ05UKHgpIFwNCj4gPiArICAgICAgICgweGEw ZDAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9MREJfSU5G TF9DTlRfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRfbGRiX2luZmxfY250IHsNCj4g PiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjb3VudCA6IDEyOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAyMDsNCj4gPiArICAgICAgIH0gZmllbGQ7 DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIy X0xTUF9RSURfTERCX0lORkxfTElNKHgpIFwNCj4gPiArICAgICAgICgweGEwZDgwMDAwICsgKHgp ICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9MREJfSU5GTF9MSU1fUlNUIDB4 MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRfbGRiX2luZmxfbGltIHsNCj4gPiArICAgICAgIHN0 cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBsaW1pdCA6IDEyOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgcnN2ZDAgOiAyMDsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSUQyQ1FJ RElYXzAwKHgpIFwNCj4gPiArICAgICAgICgweGEwZTAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ ICsjZGVmaW5lIERMQjJfTFNQX1FJRDJDUUlESVhfMDBfUlNUIDB4MA0KPiA+ICsjZGVmaW5lIERM QjJfTFNQX1FJRDJDUUlESVgoeCwgeSkgXA0KPiA+ICsgICAgICAgKERMQjJfTFNQX1FJRDJDUUlE SVhfMDAoeCkgKyAweDgwMDAwICogKHkpKQ0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRDJDUUlE SVhfTlVNIDE2DQo+ID4gK3VuaW9uIGRsYjJfbHNwX3FpZDJjcWlkaXhfMDAgew0KPiA+ICsgICAg ICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxX3AwIDogODsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIGNxX3AxIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxX3Ay IDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxX3AzIDogODsNCj4gPiArICAgICAgIH0g ZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmlu ZSBETEIyX0xTUF9RSUQyQ1FJRElYMl8wMCh4KSBcDQo+ID4gKyAgICAgICAoMHhhMTYwMDAwMCAr ICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSUQyQ1FJRElYMl8wMF9SU1Qg MHgwDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEMkNRSURJWDIoeCwgeSkgXA0KPiA+ICsgICAg ICAgKERMQjJfTFNQX1FJRDJDUUlESVgyXzAwKHgpICsgMHg4MDAwMCAqICh5KSkNCj4gPiArI2Rl ZmluZSBETEIyX0xTUF9RSUQyQ1FJRElYMl9OVU0gMTYNCj4gPiArdW5pb24gZGxiMl9sc3BfcWlk MmNxaWRpeDJfMDAgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAg dTMyIGNxX3AwIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxX3AxIDogODsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIGNxX3AyIDogODsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNx X3AzIDogODsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfTERCX1JFUExBWV9DTlQoeCkg XA0KPiA+ICsgICAgICAgKDB4YTFlMDAwMDAgKyAoeCkgKiAweDEwMDApDQo+ID4gKyNkZWZpbmUg RExCMl9MU1BfUUlEX0xEQl9SRVBMQVlfQ05UX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3Bf cWlkX2xkYl9yZXBsYXlfY250IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBjb3VudCA6IDE0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAx ODsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfTkFMREJfTUFYX0RFUFRIKHgpIFwNCj4g PiArICAgICAgICgweGExZjAwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJf TFNQX1FJRF9OQUxEQl9NQVhfREVQVEhfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRf bmFsZGJfbWF4X2RlcHRoIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBkZXB0aCA6IDE0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxODsN Cj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfTkFMREJfVE9UX0VOUV9DTlRMKHgpIFwNCj4g PiArICAgICAgICgweGExZjgwMDAwICsgKHgpICogMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIERMQjJf TFNQX1FJRF9OQUxEQl9UT1RfRU5RX0NOVExfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9x aWRfbmFsZGJfdG90X2VucV9jbnRsIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAg ICAgICAgICAgIHUzMiBjb3VudCA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAg ICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9O QUxEQl9UT1RfRU5RX0NOVEgoeCkgXA0KPiA+ICsgICAgICAgKDB4YTIwMDAwMDAgKyAoeCkgKiAw eDEwMDApDQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEX05BTERCX1RPVF9FTlFfQ05USF9SU1Qg MHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX3FpZF9uYWxkYl90b3RfZW5xX2NudGggew0KPiA+ICsg ICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNvdW50IDogMzI7DQo+ID4g KyAgICAgICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgRExCMl9MU1BfUUlEX0FUTV9ERVBUSF9USFJTSCh4KSBcDQo+ID4gKyAgICAg ICAoMHhhMjA4MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURf QVRNX0RFUFRIX1RIUlNIX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfcWlkX2F0bV9kZXB0 aF90aHJzaCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIg dGhyZXNoIDogMTQ7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3ZkMCA6IDE4Ow0KPiA+ICsg ICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ ICsjZGVmaW5lIERMQjJfTFNQX1FJRF9OQUxEQl9ERVBUSF9USFJTSCh4KSBcDQo+ID4gKyAgICAg ICAoMHhhMjEwMDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURf TkFMREJfREVQVEhfVEhSU0hfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xzcF9xaWRfbmFsZGJf ZGVwdGhfdGhyc2ggew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAg dTMyIHRocmVzaCA6IDE0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxODsNCj4g PiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfQVRNX0FDVElWRSh4KSBcDQo+ID4gKyAgICAgICAo MHhhMjE4MDAwMCArICh4KSAqIDB4MTAwMCkNCj4gPiArI2RlZmluZSBETEIyX0xTUF9RSURfQVRN X0FDVElWRV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX3FpZF9hdG1fYWN0aXZlIHsNCj4g PiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBjb3VudCA6IDE0Ow0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAxODsNCj4gPiArICAgICAgIH0gZmllbGQ7 DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIy X0xTUF9DRkdfQVJCX1dFSUdIVF9BVE1fTkFMQl9RSURfMCAweGE0MDAwMDA4DQo+ID4gKyNkZWZp bmUgRExCMl9MU1BfQ0ZHX0FSQl9XRUlHSFRfQVRNX05BTEJfUUlEXzBfUlNUIDB4MA0KPiA+ICt1 bmlvbiBkbGIyX2xzcF9jZmdfYXJiX3dlaWdodF9hdG1fbmFsYl9xaWRfMCB7DQo+ID4gKyAgICAg ICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpMF93ZWlnaHQgOiA4Ow0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgcHJpMV93ZWlnaHQgOiA4Ow0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgcHJpMl93ZWlnaHQgOiA4Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcHJpM193ZWln aHQgOiA4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4g K307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX0NGR19BUkJfV0VJR0hUX0FUTV9OQUxC X1FJRF8xIDB4YTQwMDAwMGMNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DRkdfQVJCX1dFSUdIVF9B VE1fTkFMQl9RSURfMV9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfbHNwX2NmZ19hcmJfd2VpZ2h0 X2F0bV9uYWxiX3FpZF8xIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiByc3Z6MCA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUz MiB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX0NGR19BUkJfV0VJ R0hUX0xEQl9RSURfMCAweGE0MDAwMDE0DQo+ID4gKyNkZWZpbmUgRExCMl9MU1BfQ0ZHX0FSQl9X RUlHSFRfTERCX1FJRF8wX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfY2ZnX2FyYl93ZWln aHRfbGRiX3FpZF8wIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBwcmkwX3dlaWdodCA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmkxX3dlaWdo dCA6IDg7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwcmkyX3dlaWdodCA6IDg7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBwcmkzX3dlaWdodCA6IDg7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0K PiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9M U1BfQ0ZHX0FSQl9XRUlHSFRfTERCX1FJRF8xIDB4YTQwMDAwMTgNCj4gPiArI2RlZmluZSBETEIy X0xTUF9DRkdfQVJCX1dFSUdIVF9MREJfUUlEXzFfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2xz cF9jZmdfYXJiX3dlaWdodF9sZGJfcWlkXzEgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdnowIDogMzI7DQo+ID4gKyAgICAgICB9IGZpZWxkOw0KPiA+ ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgRExCMl9MU1Bf TERCX1NDSEVEX0NUUkwgMHhhNDAwMDAyYw0KPiA+ICsjZGVmaW5lIERMQjJfTFNQX0xEQl9TQ0hF RF9DVFJMX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfbGRiX3NjaGVkX2N0cmwgew0KPiA+ ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNxIDogODsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHFpZGl4IDogMzsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHZh bHVlIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIG5hbGJfaGFzd29ya192IDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIHJsaXN0X2hhc3dvcmtfdiA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBzbGlzdF9oYXN3b3JrX3YgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg aW5mbGlnaHRfb2tfdiA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBhcWVkX25mdWxsX3Yg OiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ejAgOiAxNTsNCj4gPiArICAgICAgIH0g ZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmlu ZSBETEIyX0xTUF9ESVJfU0NIX0NOVF9MIDB4YTQwMDAwMzQNCj4gPiArI2RlZmluZSBETEIyX0xT UF9ESVJfU0NIX0NOVF9MX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfZGlyX3NjaF9jbnRf bCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY291bnQg OiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9ESVJfU0NIX0NOVF9IIDB4YTQwMDAwMzgN Cj4gPiArI2RlZmluZSBETEIyX0xTUF9ESVJfU0NIX0NOVF9IX1JTVCAweDANCj4gPiArdW5pb24g ZGxiMl9sc3BfZGlyX3NjaF9jbnRfaCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAg ICAgICAgICAgICB1MzIgY291bnQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAg ICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9MREJf U0NIX0NOVF9MIDB4YTQwMDAwM2MNCj4gPiArI2RlZmluZSBETEIyX0xTUF9MREJfU0NIX0NOVF9M X1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfbGRiX3NjaF9jbnRfbCB7DQo+ID4gKyAgICAg ICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgY291bnQgOiAzMjsNCj4gPiArICAg ICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr I2RlZmluZSBETEIyX0xTUF9MREJfU0NIX0NOVF9IIDB4YTQwMDAwNDANCj4gPiArI2RlZmluZSBE TEIyX0xTUF9MREJfU0NIX0NOVF9IX1JTVCAweDANCj4gPiArdW5pb24gZGxiMl9sc3BfbGRiX3Nj aF9jbnRfaCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIg Y291bnQgOiAzMjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DRkdfU0hEV19DVFJMIDB4YTQw MDAwNzANCj4gPiArI2RlZmluZSBETEIyX0xTUF9DRkdfU0hEV19DVFJMX1JTVCAweDANCj4gPiAr dW5pb24gZGxiMl9sc3BfY2ZnX3NoZHdfY3RybCB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ ICsgICAgICAgICAgICAgICB1MzIgdHJhbnNmZXIgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgcnN2ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFs Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0xTUF9DRkdfU0hEV19SQU5HRV9D T1MoeCkgXA0KPiA+ICsgICAgICAgKDB4YTQwMDAwNzQgKyAoeCkgKiA0KQ0KPiA+ICsjZGVmaW5l IERMQjJfTFNQX0NGR19TSERXX1JBTkdFX0NPU19SU1QgMHg0MA0KPiA+ICt1bmlvbiBkbGIyX2xz cF9jZmdfc2hkd19yYW5nZV9jb3Mgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGJ3X3JhbmdlIDogOTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdnow IDogMjI7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBub19leHRyYV9jcmVkaXQgOiAxOw0KPiA+ ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307DQo+ID4gKw0K PiA+ICsjZGVmaW5lIERMQjJfTFNQX0NGR19DVFJMX0dFTkVSQUxfMCAweGFjMDAwMDAwDQo+ID4g KyNkZWZpbmUgRExCMl9MU1BfQ0ZHX0NUUkxfR0VORVJBTF8wX1JTVCAweDANCj4gPiArdW5pb24g ZGxiMl9sc3BfY2ZnX2N0cmxfZ2VuZXJhbF8wIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiBkaXNhYl9hdHFfZW1wdHlfYXJiIDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGluY190b2tfdW5pdF9pZGxlIDogMTsNCj4gPiArICAgICAgICAgICAgICAg dTMyIGRpc2FiX3JsaXN0X3ByaSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpbmNfY21w X3VuaXRfaWRsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3Z6MCA6IDI7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiBkaXJfc2luZ2xlX29wIDogMTsNCj4gPiArICAgICAgICAgICAg ICAgdTMyIGRpcl9oYWxmX2J3IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGRpcl9zaW5n bGVfb3V0IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGRpcl9kaXNhYl9tdWx0aSA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBhdHFfc2luZ2xlX29wIDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGF0cV9oYWxmX2J3IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGF0 cV9zaW5nbGVfb3V0IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGF0cV9kaXNhYl9tdWx0 aSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkaXJycGxfc2luZ2xlX29wIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGRpcnJwbF9oYWxmX2J3IDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIGRpcnJwbF9zaW5nbGVfb3V0IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IGxicnBsX3NpbmdsZV9vcCA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBsYnJwbF9oYWxm X2J3IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGxicnBsX3NpbmdsZV9vdXQgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgbGRiX3NpbmdsZV9vcCA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBsZGJfaGFsZl9idyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBsZGJf ZGlzYWJfbXVsdGkgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYXRtX3NpbmdsZV9zY2gg OiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYXRtX3NpbmdsZV9jbXAgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgbGRiX2NlX3RvZ19hcmIgOiAxOw0KPiA+ICsgICAgICAgICAgICAg ICB1MzIgcnN2ejEgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc21vbjBfdmFsaWRfc2Vs IDogMjsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHNtb24wX3ZhbHVlX3NlbCA6IDE7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiBzbW9uMF9jb21wYXJlX3NlbCA6IDI7DQo+ID4gKyAgICAgICB9 IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZp bmUgRExCMl9DRkdfTVNUUl9ESUFHX1JFU0VUX1NUUyAweGI0MDAwMDAwDQo+ID4gKyNkZWZpbmUg RExCMl9DRkdfTVNUUl9ESUFHX1JFU0VUX1NUU19SU1QgMHg4MDAwMGJmZg0KPiA+ICt1bmlvbiBk bGIyX2NmZ19tc3RyX2RpYWdfcmVzZXRfc3RzIHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4g KyAgICAgICAgICAgICAgIHUzMiBjaHBfcGZfcmVzZXRfZG9uZSA6IDE7DQo+ID4gKyAgICAgICAg ICAgICAgIHUzMiByb3BfcGZfcmVzZXRfZG9uZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUz MiBsc3BfcGZfcmVzZXRfZG9uZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBuYWxiX3Bm X3Jlc2V0X2RvbmUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYXBfcGZfcmVzZXRfZG9u ZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkcF9wZl9yZXNldF9kb25lIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIHFlZF9wZl9yZXNldF9kb25lIDogMTsNCj4gPiArICAgICAg ICAgICAgICAgdTMyIGRxZWRfcGZfcmVzZXRfZG9uZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAg IHUzMiBhcWVkX3BmX3Jlc2V0X2RvbmUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgc3lz X3BmX3Jlc2V0X2RvbmUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcGZfcmVzZXRfYWN0 aXZlIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGZscnNtX3N0YXRlIDogNzsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMTM7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBk bGJfcHJvY19yZXNldF9kb25lIDogMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0NGR19NU1RSX0NG R19ESUFHTk9TVElDX0lETEVfU1RBVFVTIDB4YjQwMDAwMDQNCj4gPiArI2RlZmluZSBETEIyX0NG R19NU1RSX0NGR19ESUFHTk9TVElDX0lETEVfU1RBVFVTX1JTVCAweDlkMGZmZmZmDQo+ID4gK3Vu aW9uIGRsYjJfY2ZnX21zdHJfY2ZnX2RpYWdub3N0aWNfaWRsZV9zdGF0dXMgew0KPiA+ICsgICAg ICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGNocF9waXBlaWRsZSA6IDE7DQo+ ID4gKyAgICAgICAgICAgICAgIHUzMiByb3BfcGlwZWlkbGUgOiAxOw0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgbHNwX3BpcGVpZGxlIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIG5hbGJf cGlwZWlkbGUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYXBfcGlwZWlkbGUgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgZHBfcGlwZWlkbGUgOiAxOw0KPiA+ICsgICAgICAgICAg ICAgICB1MzIgcWVkX3BpcGVpZGxlIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGRxZWRf cGlwZWlkbGUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgYXFlZF9waXBlaWRsZSA6IDE7 DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBzeXNfcGlwZWlkbGUgOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgY2hwX3VuaXRfaWRsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBy b3BfdW5pdF9pZGxlIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGxzcF91bml0X2lkbGUg OiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbmFsYl91bml0X2lkbGUgOiAxOw0KPiA+ICsg ICAgICAgICAgICAgICB1MzIgYXBfdW5pdF9pZGxlIDogMTsNCj4gPiArICAgICAgICAgICAgICAg dTMyIGRwX3VuaXRfaWRsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBxZWRfdW5pdF9p ZGxlIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIGRxZWRfdW5pdF9pZGxlIDogMTsNCj4g PiArICAgICAgICAgICAgICAgdTMyIGFxZWRfdW5pdF9pZGxlIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHN5c191bml0X2lkbGUgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2 ZDEgOiA0Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgbXN0cl9jZmdfcmluZ19pZGxlIDogMTsN Cj4gPiArICAgICAgICAgICAgICAgdTMyIG1zdHJfY2ZnX21zdHJfaWRsZSA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiBtc3RyX2Zscl9jbGtyZXFfYiA6IDE7DQo+ID4gKyAgICAgICAgICAg ICAgIHUzMiBtc3RyX3Byb2NfaWRsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtc3Ry X3Byb2NfaWRsZV9tYXNrZWQgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ZDAgOiAy Ow0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZGxiX2Z1bmNfaWRsZSA6IDE7DQo+ID4gKyAgICAg ICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgRExCMl9DRkdfTVNUUl9DRkdfUE1fU1RBVFVTIDB4YjQwMDAwMTQNCj4gPiArI2RlZmlu ZSBETEIyX0NGR19NU1RSX0NGR19QTV9TVEFUVVNfUlNUIDB4MTAwNDAzZQ0KPiA+ICt1bmlvbiBk bGIyX2NmZ19tc3RyX2NmZ19wbV9zdGF0dXMgew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHByb2Nob3QgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIg cGdjYl9kbGJfaWRsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwZ2NiX2RsYl9wZ19y ZHlfYWNrX2IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcG1zbV9wZ2NiX3JlcV9iIDog MTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBnYmNfcG1jX3BnX3JlcV9iIDogMTsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIHBtY19wZ2NiX3BnX2Fja19iIDogMTsNCj4gPiArICAgICAgICAg ICAgICAgdTMyIHBtY19wZ2NiX2ZldF9lbl9iIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMy IHBnY2JfZmV0X2VuX2IgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ejAgOiAxOw0K PiA+ICsgICAgICAgICAgICAgICB1MzIgcnN2ejEgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgZnVzZV9mb3JjZV9vbiA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBmdXNlX3Byb2Nf ZGlzYWJsZSA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3Z6MiA6IDE7DQo+ID4gKyAg ICAgICAgICAgICAgIHUzMiByc3Z6MyA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwbV9m c21fZDB0b2QzX29rIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBtX2ZzbV9kM3RvZDBf b2sgOiAxOw0KPiA+ICsgICAgICAgICAgICAgICB1MzIgZGxiX2luX2QzIDogMTsNCj4gPiArICAg ICAgICAgICAgICAgdTMyIHJzdno0IDogNzsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHBtc20g OiA4Ow0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfQ0ZHX01TVFJfQ0ZHX1BNX1BNQ1NSX0RJU0FCTEUg MHhiNDAwMDAxOA0KPiA+ICsjZGVmaW5lIERMQjJfQ0ZHX01TVFJfQ0ZHX1BNX1BNQ1NSX0RJU0FC TEVfUlNUIDB4MQ0KPiA+ICt1bmlvbiBkbGIyX2NmZ19tc3RyX2NmZ19wbV9wbWNzcl9kaXNhYmxl IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBkaXNhYmxl IDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdnowIDogMzE7DQo+ID4gKyAgICAgICB9 IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZp bmUgRExCMl9GVU5DX1ZGX1ZGMlBGX01BSUxCT1hfQllURVMgMjU2DQo+ID4gKyNkZWZpbmUgRExC Ml9GVU5DX1ZGX1ZGMlBGX01BSUxCT1goeCkgXA0KPiA+ICsgICAgICAgKDB4MTAwMCArICh4KSAq IDB4NCkNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfVkZfVkYyUEZfTUFJTEJPWF9SU1QgMHgwDQo+ ID4gK3VuaW9uIGRsYjJfZnVuY192Zl92ZjJwZl9tYWlsYm94IHsNCj4gPiArICAgICAgIHN0cnVj dCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtc2cgOiAzMjsNCj4gPiArICAgICAgIH0gZmll bGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBE TEIyX0ZVTkNfVkZfVkYyUEZfTUFJTEJPWF9JU1IgMHgxZjAwDQo+ID4gKyNkZWZpbmUgRExCMl9G VU5DX1ZGX1ZGMlBGX01BSUxCT1hfSVNSX1JTVCAweDANCj4gPiArI2RlZmluZSBETEIyX0ZVTkNf VkZfU0lPVl9WRjJQRl9NQUlMQk9YX0lTUl9UUklHR0VSIDB4ODAwMA0KPiA+ICt1bmlvbiBkbGIy X2Z1bmNfdmZfdmYycGZfbWFpbGJveF9pc3Igew0KPiA+ICsgICAgICAgc3RydWN0IHsNCj4gPiAr ICAgICAgICAgICAgICAgdTMyIGlzciA6IDE7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiByc3Zk MCA6IDMxOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4g K307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfRlVOQ19WRl9QRjJWRl9NQUlMQk9YX0JZVEVT IDY0DQo+ID4gKyNkZWZpbmUgRExCMl9GVU5DX1ZGX1BGMlZGX01BSUxCT1goeCkgXA0KPiA+ICsg ICAgICAgKDB4MjAwMCArICh4KSAqIDB4NCkNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfVkZfUEYy VkZfTUFJTEJPWF9SU1QgMHgwDQo+ID4gK3VuaW9uIGRsYjJfZnVuY192Zl9wZjJ2Zl9tYWlsYm94 IHsNCj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBtc2cgOiAz MjsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfVkZfUEYyVkZfTUFJTEJPWF9JU1IgMHgyZjAw DQo+ID4gKyNkZWZpbmUgRExCMl9GVU5DX1ZGX1BGMlZGX01BSUxCT1hfSVNSX1JTVCAweDANCj4g PiArdW5pb24gZGxiMl9mdW5jX3ZmX3BmMnZmX21haWxib3hfaXNyIHsNCj4gPiArICAgICAgIHN0 cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBwZl9pc3IgOiAxOw0KPiA+ICsgICAgICAg ICAgICAgICB1MzIgcnN2ZDAgOiAzMTsNCj4gPiArICAgICAgIH0gZmllbGQ7DQo+ID4gKyAgICAg ICB1MzIgdmFsOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfVkZfVkZf TVNJX0lTUl9QRU5EIDB4MmYxMA0KPiA+ICsjZGVmaW5lIERMQjJfRlVOQ19WRl9WRl9NU0lfSVNS X1BFTkRfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2Z1bmNfdmZfdmZfbXNpX2lzcl9wZW5kIHsN Cj4gPiArICAgICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgIHUzMiBpc3JfcGVuZCA6 IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfRlVOQ19WRl9WRl9SRVNFVF9JTl9QUk9HUkVTUyAw eDMwMDANCj4gPiArI2RlZmluZSBETEIyX0ZVTkNfVkZfVkZfUkVTRVRfSU5fUFJPR1JFU1NfUlNU IDB4MQ0KPiA+ICt1bmlvbiBkbGIyX2Z1bmNfdmZfdmZfcmVzZXRfaW5fcHJvZ3Jlc3Mgew0KPiA+ ICsgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJlc2V0X2luX3Byb2dy ZXNzIDogMTsNCj4gPiArICAgICAgICAgICAgICAgdTMyIHJzdmQwIDogMzE7DQo+ID4gKyAgICAg ICB9IGZpZWxkOw0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgRExCMl9GVU5DX1ZGX1ZGX01TSV9JU1IgMHg0MDAwDQo+ID4gKyNkZWZpbmUgRExCMl9G VU5DX1ZGX1ZGX01TSV9JU1JfUlNUIDB4MA0KPiA+ICt1bmlvbiBkbGIyX2Z1bmNfdmZfdmZfbXNp X2lzciB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgew0KPiA+ICsgICAgICAgICAgICAgICB1MzIgdmZf bXNpX2lzciA6IDMyOw0KPiA+ICsgICAgICAgfSBmaWVsZDsNCj4gPiArICAgICAgIHUzMiB2YWw7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX19ETEIyX1JFR1NfSCAqLw0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFzZS9kbGIyX3Jlc291cmNlLmMNCj4g Yi9kcml2ZXJzL2V2ZW50L2RsYjIvcGYvYmFzZS9kbGIyX3Jlc291cmNlLmMNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjZkZThiOTUNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9yZXNvdXJjZS5j DQo+ID4gQEAgLTAsMCArMSwyNzQgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAxNi0yMDIwIEludGVsIENvcnBv cmF0aW9uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImRsYjJfdXNlci5oIg0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgImRsYjJfaHdfdHlwZXMuaCINCj4gPiArI2luY2x1ZGUgImRsYjJf bWJveC5oIg0KPiA+ICsjaW5jbHVkZSAiZGxiMl9vc2RlcC5oIg0KPiA+ICsjaW5jbHVkZSAiZGxi Ml9vc2RlcF9iaXRtYXAuaCINCj4gPiArI2luY2x1ZGUgImRsYjJfb3NkZXBfdHlwZXMuaCINCj4g PiArI2luY2x1ZGUgImRsYjJfcmVncy5oIg0KPiA+ICsjaW5jbHVkZSAiZGxiMl9yZXNvdXJjZS5o Ig0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZGxiMl9pbml0X2RvbWFpbl9yc3JjX2xpc3RzKHN0 cnVjdCBkbGIyX2h3X2RvbWFpbiAqZG9tYWluKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgaTsN Cj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2xpc3RfaW5pdF9oZWFkKCZkb21haW4tPnVzZWRfbGRi X3F1ZXVlcyk7DQo+ID4gKyAgICAgICBkbGIyX2xpc3RfaW5pdF9oZWFkKCZkb21haW4tPnVzZWRf ZGlyX3BxX3BhaXJzKTsNCj4gPiArICAgICAgIGRsYjJfbGlzdF9pbml0X2hlYWQoJmRvbWFpbi0+ YXZhaWxfbGRiX3F1ZXVlcyk7DQo+ID4gKyAgICAgICBkbGIyX2xpc3RfaW5pdF9oZWFkKCZkb21h aW4tPmF2YWlsX2Rpcl9wcV9wYWlycyk7DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsg aSA8IERMQjJfTlVNX0NPU19ET01BSU5TOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJf bGlzdF9pbml0X2hlYWQoJmRvbWFpbi0+dXNlZF9sZGJfcG9ydHNbaV0pOw0KPiA+ICsgICAgICAg Zm9yIChpID0gMDsgaSA8IERMQjJfTlVNX0NPU19ET01BSU5TOyBpKyspDQo+ID4gKyAgICAgICAg ICAgICAgIGRsYjJfbGlzdF9pbml0X2hlYWQoJmRvbWFpbi0+YXZhaWxfbGRiX3BvcnRzW2ldKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZGxiMl9pbml0X2ZuX3JzcmNfbGlzdHMo c3RydWN0IGRsYjJfZnVuY3Rpb25fcmVzb3VyY2VzICpyc3JjKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBpbnQgaTsNCj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2xpc3RfaW5pdF9oZWFkKCZyc3JjLT5h dmFpbF9kb21haW5zKTsNCj4gPiArICAgICAgIGRsYjJfbGlzdF9pbml0X2hlYWQoJnJzcmMtPnVz ZWRfZG9tYWlucyk7DQo+ID4gKyAgICAgICBkbGIyX2xpc3RfaW5pdF9oZWFkKCZyc3JjLT5hdmFp bF9sZGJfcXVldWVzKTsNCj4gPiArICAgICAgIGRsYjJfbGlzdF9pbml0X2hlYWQoJnJzcmMtPmF2 YWlsX2Rpcl9wcV9wYWlycyk7DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IERM QjJfTlVNX0NPU19ET01BSU5TOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJfbGlzdF9p bml0X2hlYWQoJnJzcmMtPmF2YWlsX2xkYl9wb3J0c1tpXSk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3ZvaWQgZGxiMl9od19lbmFibGVfc3BhcnNlX2Rpcl9jcV9tb2RlKHN0cnVjdCBkbGIyX2h3ICpo dykNCj4gPiArew0KPiA+ICsgICAgICAgdW5pb24gZGxiMl9jaHBfY2ZnX2NocF9jc3JfY3RybCBy MDsNCj4gPiArDQo+ID4gKyAgICAgICByMC52YWwgPSBETEIyX0NTUl9SRChodywgRExCMl9DSFBf Q0ZHX0NIUF9DU1JfQ1RSTCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcjAuZmllbGQuY2ZnXzY0Ynl0 ZXNfcWVfZGlyX2NxX21vZGUgPSAxOw0KPiA+ICsNCj4gPiArICAgICAgIERMQjJfQ1NSX1dSKGh3 LCBETEIyX0NIUF9DRkdfQ0hQX0NTUl9DVFJMLCByMC52YWwpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtpbnQgZGxiMl9od19nZXRfbnVtX3Jlc291cmNlcyhzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfZ2V0X251bV9yZXNvdXJj ZXNfYXJncyAqYXJnLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmRl dl9yZXEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZk ZXZfaWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2Z1bmN0aW9uX3Jlc291cmNl cyAqcnNyY3M7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9iaXRtYXAgKm1hcDsNCj4gPiArICAg ICAgIGludCBpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICh2ZGV2X3JlcSAmJiB2ZGV2X2lkID49 IERMQjJfTUFYX05VTV9WREVWUykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHZkZXZfcmVxKQ0KPiA+ICsgICAgICAgICAgICAgICBy c3JjcyA9ICZody0+dmRldlt2ZGV2X2lkXTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAg ICAgICAgICAgcnNyY3MgPSAmaHctPnBmOw0KPiA+ICsNCj4gPiArICAgICAgIGFyZy0+bnVtX3Nj aGVkX2RvbWFpbnMgPSByc3Jjcy0+bnVtX2F2YWlsX2RvbWFpbnM7DQo+ID4gKw0KPiA+ICsgICAg ICAgYXJnLT5udW1fbGRiX3F1ZXVlcyA9IHJzcmNzLT5udW1fYXZhaWxfbGRiX3F1ZXVlczsNCj4g PiArDQo+ID4gKyAgICAgICBhcmctPm51bV9sZGJfcG9ydHMgPSAwOw0KPiA+ICsgICAgICAgZm9y IChpID0gMDsgaSA8IERMQjJfTlVNX0NPU19ET01BSU5TOyBpKyspDQo+ID4gKyAgICAgICAgICAg ICAgIGFyZy0+bnVtX2xkYl9wb3J0cyArPSByc3Jjcy0+bnVtX2F2YWlsX2xkYl9wb3J0c1tpXTsN Cj4gPiArDQo+ID4gKyAgICAgICBhcmctPm51bV9jb3NfbGRiX3BvcnRzWzBdID0gcnNyY3MtPm51 bV9hdmFpbF9sZGJfcG9ydHNbMF07DQo+ID4gKyAgICAgICBhcmctPm51bV9jb3NfbGRiX3BvcnRz WzFdID0gcnNyY3MtPm51bV9hdmFpbF9sZGJfcG9ydHNbMV07DQo+ID4gKyAgICAgICBhcmctPm51 bV9jb3NfbGRiX3BvcnRzWzJdID0gcnNyY3MtPm51bV9hdmFpbF9sZGJfcG9ydHNbMl07DQo+ID4g KyAgICAgICBhcmctPm51bV9jb3NfbGRiX3BvcnRzWzNdID0gcnNyY3MtPm51bV9hdmFpbF9sZGJf cG9ydHNbM107DQo+ID4gKw0KPiA+ICsgICAgICAgYXJnLT5udW1fZGlyX3BvcnRzID0gcnNyY3Mt Pm51bV9hdmFpbF9kaXJfcHFfcGFpcnM7DQo+ID4gKw0KPiA+ICsgICAgICAgYXJnLT5udW1fYXRv bWljX2luZmxpZ2h0cyA9IHJzcmNzLT5udW1fYXZhaWxfYXFlZF9lbnRyaWVzOw0KPiA+ICsNCj4g PiArICAgICAgIG1hcCA9IHJzcmNzLT5hdmFpbF9oaXN0X2xpc3RfZW50cmllczsNCj4gPiArDQo+ ID4gKyAgICAgICBhcmctPm51bV9oaXN0X2xpc3RfZW50cmllcyA9IGRsYjJfYml0bWFwX2NvdW50 KG1hcCk7DQo+ID4gKw0KPiA+ICsgICAgICAgYXJnLT5tYXhfY29udGlndW91c19oaXN0X2xpc3Rf ZW50cmllcyA9DQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJfYml0bWFwX2xvbmdlc3Rfc2V0X3Jh bmdlKG1hcCk7DQo+ID4gKw0KPiA+ICsgICAgICAgYXJnLT5udW1fbGRiX2NyZWRpdHMgPSByc3Jj cy0+bnVtX2F2YWlsX3FlZF9lbnRyaWVzOw0KPiA+ICsNCj4gPiArICAgICAgIGFyZy0+bnVtX2Rp cl9jcmVkaXRzID0gcnNyY3MtPm51bV9hdmFpbF9kcWVkX2VudHJpZXM7DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgZGxiMl9od19lbmFibGVf c3BhcnNlX2xkYl9jcV9tb2RlKHN0cnVjdCBkbGIyX2h3ICpodykNCj4gPiArew0KPiA+ICsgICAg ICAgdW5pb24gZGxiMl9jaHBfY2ZnX2NocF9jc3JfY3RybCByMDsNCj4gPiArDQo+ID4gKyAgICAg ICByMC52YWwgPSBETEIyX0NTUl9SRChodywgRExCMl9DSFBfQ0ZHX0NIUF9DU1JfQ1RSTCk7DQo+ ID4gKw0KPiA+ICsgICAgICAgcjAuZmllbGQuY2ZnXzY0Ynl0ZXNfcWVfbGRiX2NxX21vZGUgPSAx Ow0KPiA+ICsNCj4gPiArICAgICAgIERMQjJfQ1NSX1dSKGh3LCBETEIyX0NIUF9DRkdfQ0hQX0NT Ul9DVFJMLCByMC52YWwpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGRsYjJfcmVzb3VyY2Vf ZnJlZShzdHJ1Y3QgZGxiMl9odyAqaHcpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCBpOw0KPiA+ ICsNCj4gPiArICAgICAgIGlmIChody0+cGYuYXZhaWxfaGlzdF9saXN0X2VudHJpZXMpDQo+ID4g KyAgICAgICAgICAgICAgIGRsYjJfYml0bWFwX2ZyZWUoaHctPnBmLmF2YWlsX2hpc3RfbGlzdF9l bnRyaWVzKTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgRExCMl9NQVhfTlVN X1ZERVZTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGh3LT52ZGV2W2ldLmF2YWls X2hpc3RfbGlzdF9lbnRyaWVzKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRsYjJfYml0 bWFwX2ZyZWUoaHctPnZkZXZbaV0uYXZhaWxfaGlzdF9saXN0X2VudHJpZXMpOw0KPiA+ICsgICAg ICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgZGxiMl9yZXNvdXJjZV9pbml0KHN0cnVjdCBk bGIyX2h3ICpodykNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfbGlzdF9lbnRyeSAq bGlzdDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBpOw0KPiA+ICsgICAgICAgaW50IHJldDsN Cj4gPiArDQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAgICogRm9yIG9wdGltYWwgbG9hZC1i YWxhbmNpbmcsIHBvcnRzIHRoYXQgbWFwIHRvIG9uZSBvciBtb3JlIFFJRHMgaW4NCj4gPiArICAg ICAgICAqIGNvbW1vbiBzaG91bGQgbm90IGJlIGluIG51bWVyaWNhbCBzZXF1ZW5jZS4gVGhpcyBp cyBhcHBsaWNhdGlvbg0KPiA+ICsgICAgICAgICogZGVwZW5kZW50LCBidXQgdGhlIGRyaXZlciBp bnRlcmxlYXZlcyBwb3J0IElEcyBhcyBtdWNoIGFzIHBvc3NpYmxlDQo+ID4gKyAgICAgICAgKiB0 byByZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2YgdGhpcy4gVGhpcyBpbml0aWFsIGFsbG9jYXRpb24g bWF4aW1pemVzDQo+ID4gKyAgICAgICAgKiB0aGUgYXZlcmFnZSBkaXN0YW5jZSBiZXR3ZWVuIGFu IElEIGFuZCBpdHMgaW1tZWRpYXRlIG5laWdoYm9ycyAoaS5lLg0KPiA+ICsgICAgICAgICogdGhl IGRpc3RhbmNlIGZyb20gMSB0byAwIGFuZCB0byAyLCB0aGUgZGlzdGFuY2UgZnJvbSAyIHRvIDEg YW5kIHRvDQo+ID4gKyAgICAgICAgKiAzLCBldGMuKS4NCj4gPiArICAgICAgICAqLw0KPiA+ICsg ICAgICAgdTggaW5pdF9sZGJfcG9ydF9hbGxvY2F0aW9uW0RMQjJfTUFYX05VTV9MREJfUE9SVFNd ID0gew0KPiA+ICsgICAgICAgICAgICAgICAwLCAgNywgIDE0LCAgNSwgMTIsICAzLCAxMCwgIDEs ICA4LCAxNSwgIDYsIDEzLCAgNCwgMTEsICAyLCAgOSwNCj4gPiArICAgICAgICAgICAgICAgMTYs IDIzLCAzMCwgMjEsIDI4LCAxOSwgMjYsIDE3LCAyNCwgMzEsIDIyLCAyOSwgMjAsIDI3LCAxOCwg MjUsDQo+ID4gKyAgICAgICAgICAgICAgIDMyLCAzOSwgNDYsIDM3LCA0NCwgMzUsIDQyLCAzMywg NDAsIDQ3LCAzOCwgNDUsIDM2LCA0MywgMzQsIDQxLA0KPiA+ICsgICAgICAgICAgICAgICA0OCwg NTUsIDYyLCA1MywgNjAsIDUxLCA1OCwgNDksIDU2LCA2MywgNTQsIDYxLCA1MiwgNTksIDUwLCA1 NywNCj4gPiArICAgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgICAgLyogWmVyby1vdXQgcmVzb3Vy Y2UgdHJhY2tpbmcgZGF0YSBzdHJ1Y3R1cmVzICovDQo+ID4gKyAgICAgICBtZW1zZXQoJmh3LT5y c3JjcywgMCwgc2l6ZW9mKGh3LT5yc3JjcykpOw0KPiA+ICsgICAgICAgbWVtc2V0KCZody0+cGYs IDAsIHNpemVvZihody0+cGYpKTsNCj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2luaXRfZm5fcnNy Y19saXN0cygmaHctPnBmKTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgRExC Ml9NQVhfTlVNX1ZERVZTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgbWVtc2V0KCZody0+ dmRldltpXSwgMCwgc2l6ZW9mKGh3LT52ZGV2W2ldKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGRs YjJfaW5pdF9mbl9yc3JjX2xpc3RzKCZody0+dmRldltpXSk7DQo+ID4gKyAgICAgICB9DQo+ID4g Kw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IERMQjJfTUFYX05VTV9ET01BSU5TOyBpKysp IHsNCj4gPiArICAgICAgICAgICAgICAgbWVtc2V0KCZody0+ZG9tYWluc1tpXSwgMCwgc2l6ZW9m KGh3LT5kb21haW5zW2ldKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJfaW5pdF9kb21haW5f cnNyY19saXN0cygmaHctPmRvbWFpbnNbaV0pOw0KPiA+ICsgICAgICAgICAgICAgICBody0+ZG9t YWluc1tpXS5wYXJlbnRfZnVuYyA9ICZody0+cGY7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgLyogR2l2ZSBhbGwgcmVzb3VyY2VzIHRvIHRoZSBQRiBkcml2ZXIgKi8NCj4gPiAr ICAgICAgIGh3LT5wZi5udW1fYXZhaWxfZG9tYWlucyA9IERMQjJfTUFYX05VTV9ET01BSU5TOw0K PiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGh3LT5wZi5udW1fYXZhaWxfZG9tYWluczsgaSsr KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGxpc3QgPSAmaHctPmRvbWFpbnNbaV0uZnVuY19saXN0 Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgZGxiMl9saXN0X2FkZCgmaHctPnBmLmF2YWls X2RvbWFpbnMsIGxpc3QpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGh3LT5w Zi5udW1fYXZhaWxfbGRiX3F1ZXVlcyA9IERMQjJfTUFYX05VTV9MREJfUVVFVUVTOw0KPiA+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IGh3LT5wZi5udW1fYXZhaWxfbGRiX3F1ZXVlczsgaSsrKSB7 DQo+ID4gKyAgICAgICAgICAgICAgIGxpc3QgPSAmaHctPnJzcmNzLmxkYl9xdWV1ZXNbaV0uZnVu Y19saXN0Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgZGxiMl9saXN0X2FkZCgmaHctPnBm LmF2YWlsX2xkYl9xdWV1ZXMsIGxpc3QpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgIGZvciAoaSA9IDA7IGkgPCBETEIyX05VTV9DT1NfRE9NQUlOUzsgaSsrKQ0KPiA+ICsgICAg ICAgICAgICAgICBody0+cGYubnVtX2F2YWlsX2xkYl9wb3J0c1tpXSA9DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgRExCMl9NQVhfTlVNX0xEQl9QT1JUUyAvIERMQjJfTlVNX0NPU19ET01B SU5TOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBETEIyX01BWF9OVU1fTERC X1BPUlRTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaW50IGNvc19pZCA9IGkgPj4gRExC Ml9OVU1fQ09TX0RPTUFJTlM7DQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2xkYl9w b3J0ICpwb3J0Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcG9ydCA9ICZody0+cnNyY3Mu bGRiX3BvcnRzW2luaXRfbGRiX3BvcnRfYWxsb2NhdGlvbltpXV07DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICBkbGIyX2xpc3RfYWRkKCZody0+cGYuYXZhaWxfbGRiX3BvcnRzW2Nvc19pZF0s DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvcnQtPmZ1bmNfbGlzdCk7DQo+ ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaHctPnBmLm51bV9hdmFpbF9kaXJfcHFf cGFpcnMgPSBETEIyX01BWF9OVU1fRElSX1BPUlRTOw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsg aSA8IGh3LT5wZi5udW1fYXZhaWxfZGlyX3BxX3BhaXJzOyBpKyspIHsNCj4gPiArICAgICAgICAg ICAgICAgbGlzdCA9ICZody0+cnNyY3MuZGlyX3BxX3BhaXJzW2ldLmZ1bmNfbGlzdDsNCj4gPiAr DQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJfbGlzdF9hZGQoJmh3LT5wZi5hdmFpbF9kaXJfcHFf cGFpcnMsIGxpc3QpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGh3LT5wZi5u dW1fYXZhaWxfcWVkX2VudHJpZXMgPSBETEIyX01BWF9OVU1fTERCX0NSRURJVFM7DQo+ID4gKyAg ICAgICBody0+cGYubnVtX2F2YWlsX2RxZWRfZW50cmllcyA9IERMQjJfTUFYX05VTV9ESVJfQ1JF RElUUzsNCj4gPiArICAgICAgIGh3LT5wZi5udW1fYXZhaWxfYXFlZF9lbnRyaWVzID0gRExCMl9N QVhfTlVNX0FRRURfRU5UUklFUzsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBkbGIyX2JpdG1h cF9hbGxvYygmaHctPnBmLmF2YWlsX2hpc3RfbGlzdF9lbnRyaWVzLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRExCMl9NQVhfTlVNX0hJU1RfTElTVF9FTlRSSUVTKTsNCj4g PiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gdW53aW5kOw0KPiA+ ICsNCj4gPiArICAgICAgIHJldCA9IGRsYjJfYml0bWFwX2ZpbGwoaHctPnBmLmF2YWlsX2hpc3Rf bGlzdF9lbnRyaWVzKTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAg IGdvdG8gdW53aW5kOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBETEIyX01B WF9OVU1fVkRFVlM7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBkbGIyX2JpdG1h cF9hbGxvYygmaHctPnZkZXZbaV0uYXZhaWxfaGlzdF9saXN0X2VudHJpZXMsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMQjJfTUFYX05VTV9ISVNUX0xJU1Rf RU5UUklFUyk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZ290byB1bndpbmQ7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICByZXQg PSBkbGIyX2JpdG1hcF96ZXJvKGh3LT52ZGV2W2ldLmF2YWlsX2hpc3RfbGlzdF9lbnRyaWVzKTsN Cj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIHVud2luZDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAvKiBJbml0 aWFsaXplIHRoZSBoYXJkd2FyZSByZXNvdXJjZSBJRHMgKi8NCj4gPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCBETEIyX01BWF9OVU1fRE9NQUlOUzsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAg IGh3LT5kb21haW5zW2ldLmlkLnBoeXNfaWQgPSBpOw0KPiA+ICsgICAgICAgICAgICAgICBody0+ ZG9tYWluc1tpXS5pZC52ZGV2X293bmVkID0gZmFsc2U7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IERMQjJfTUFYX05VTV9MREJfUVVFVUVTOyBpKysp IHsNCj4gPiArICAgICAgICAgICAgICAgaHctPnJzcmNzLmxkYl9xdWV1ZXNbaV0uaWQucGh5c19p ZCA9IGk7DQo+ID4gKyAgICAgICAgICAgICAgIGh3LT5yc3Jjcy5sZGJfcXVldWVzW2ldLmlkLnZk ZXZfb3duZWQgPSBmYWxzZTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBmb3Ig KGkgPSAwOyBpIDwgRExCMl9NQVhfTlVNX0xEQl9QT1JUUzsgaSsrKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIGh3LT5yc3Jjcy5sZGJfcG9ydHNbaV0uaWQucGh5c19pZCA9IGk7DQo+ID4gKyAgICAg ICAgICAgICAgIGh3LT5yc3Jjcy5sZGJfcG9ydHNbaV0uaWQudmRldl9vd25lZCA9IGZhbHNlOw0K PiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBETEIyX01B WF9OVU1fRElSX1BPUlRTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaHctPnJzcmNzLmRp cl9wcV9wYWlyc1tpXS5pZC5waHlzX2lkID0gaTsNCj4gPiArICAgICAgICAgICAgICAgaHctPnJz cmNzLmRpcl9wcV9wYWlyc1tpXS5pZC52ZGV2X293bmVkID0gZmFsc2U7DQo+ID4gKyAgICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IERMQjJfTUFYX05VTV9TRVFVRU5D RV9OVU1CRVJfR1JPVVBTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgaHctPnJzcmNzLnNu X2dyb3Vwc1tpXS5pZCA9IGk7DQo+ID4gKyAgICAgICAgICAgICAgIC8qIERlZmF1bHQgbW9kZSAo MCkgaXMgNjQgc2VxdWVuY2UgbnVtYmVycyBwZXIgcXVldWUgKi8NCj4gPiArICAgICAgICAgICAg ICAgaHctPnJzcmNzLnNuX2dyb3Vwc1tpXS5tb2RlID0gMDsNCj4gPiArICAgICAgICAgICAgICAg aHctPnJzcmNzLnNuX2dyb3Vwc1tpXS5zZXF1ZW5jZV9udW1iZXJzX3Blcl9xdWV1ZSA9IDY0Ow0K PiA+ICsgICAgICAgICAgICAgICBody0+cnNyY3Muc25fZ3JvdXBzW2ldLnNsb3RfdXNlX2JpdG1h cCA9IDA7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8 IERMQjJfTlVNX0NPU19ET01BSU5TOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIGh3LT5jb3Nf cmVzZXJ2YXRpb25baV0gPSAxMDAgLyBETEIyX05VTV9DT1NfRE9NQUlOUzsNCj4gPiArDQo+ID4g KyAgICAgICByZXR1cm4gMDsNCj4gPiArDQo+ID4gK3Vud2luZDoNCj4gPiArICAgICAgIGRsYjJf cmVzb3VyY2VfZnJlZShodyk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArdm9pZCBkbGIyX2Nscl9wbWNzcl9kaXNhYmxlKHN0cnVjdCBkbGIyX2h3 ICpodykNCj4gPiArew0KPiA+ICsgICAgICAgdW5pb24gZGxiMl9jZmdfbXN0cl9jZmdfcG1fcG1j c3JfZGlzYWJsZSByMDsNCj4gPiArDQo+ID4gKyAgICAgICByMC52YWwgPSBETEIyX0NTUl9SRCho dywgRExCMl9DRkdfTVNUUl9DRkdfUE1fUE1DU1JfRElTQUJMRSk7DQo+ID4gKw0KPiA+ICsgICAg ICAgcjAuZmllbGQuZGlzYWJsZSA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgRExCMl9DU1JfV1Io aHcsIERMQjJfQ0ZHX01TVFJfQ0ZHX1BNX1BNQ1NSX0RJU0FCTEUsIHIwLnZhbCk7DQo+ID4gK30N Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9yZXNvdXJj ZS5oDQo+IGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Jhc2UvZGxiMl9yZXNvdXJjZS5oDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi41MDNmZGYzDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZXZlbnQvZGxiMi9wZi9iYXNlL2RsYjJfcmVz b3VyY2UuaA0KPiA+IEBAIC0wLDAgKzEsMTkxMyBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDE2LTIwMjAgSW50 ZWwgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fRExCMl9SRVNP VVJDRV9IDQo+ID4gKyNkZWZpbmUgX19ETEIyX1JFU09VUkNFX0gNCj4gPiArDQo+ID4gKyNpbmNs dWRlICJkbGIyX3VzZXIuaCINCj4gPiArDQo+ID4gKyNpbmNsdWRlICJkbGIyX2h3X3R5cGVzLmgi DQo+ID4gKyNpbmNsdWRlICJkbGIyX29zZGVwX3R5cGVzLmgiDQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogZGxiMl9yZXNvdXJjZV9pbml0KCkgLSBpbml0aWFsaXplIHRoZSBkZXZpY2UNCj4gPiAr ICogQGh3OiBwb2ludGVyIHRvIHN0cnVjdCBkbGIyX2h3Lg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlz IGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBkZXZpY2UncyBzb2Z0d2FyZSBzdGF0ZSAocG9pbnRl ZCB0byBieSB0aGUgaHcNCj4gPiArICogYXJndW1lbnQpIGFuZCBwcm9ncmFtcyBnbG9iYWwgc2No ZWR1bGluZyBRb1MgcmVnaXN0ZXJzLiBUaGlzIGZ1bmN0aW9uDQo+IHNob3VsZA0KPiA+ICsgKiBi ZSBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbi4NCj4gPiArICoNCj4gPiArICog VGhlIGRsYjJfaHcgc3RydWN0IG11c3QgYmUgdW5pcXVlIHBlciBETEIgMi4wIGRldmljZSBhbmQg cGVyc2lzdCB1bnRpbCB0aGUNCj4gPiArICogZGV2aWNlIGlzIHJlc2V0Lg0KPiA+ICsgKg0KPiA+ ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwwIG90aGVyd2lz ZS4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX3Jlc291cmNlX2luaXQoc3RydWN0IGRsYjJfaHcg Kmh3KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3Jlc291cmNlX2ZyZWUoKSAtIGZy ZWUgZGV2aWNlIHN0YXRlIG1lbW9yeQ0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBh IHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGZyZWVz IHNvZnR3YXJlIHN0YXRlIHBvaW50ZWQgdG8gYnkgZGxiMl9ody4gVGhpcyBmdW5jdGlvbg0KPiA+ ICsgKiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gcmVzZXR0aW5nIHRoZSBkZXZpY2Ugb3IgdW5sb2Fk aW5nIHRoZSBkcml2ZXIuDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfcmVzb3VyY2VfZnJlZShz dHJ1Y3QgZGxiMl9odyAqaHcpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfcmVzb3Vy Y2VfcmVzZXQoKSAtIHJlc2V0IGluLXVzZSByZXNvdXJjZXMgdG8gdGhlaXIgaW5pdGlhbCBzdGF0 ZQ0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0K PiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyBpbi11c2UgcmVzb3VyY2VzLCBh bmQgbWFrZXMgdGhlbSBhdmFpbGFibGUgZm9yIHVzZS4NCj4gPiArICogQWxsIHJlc291cmNlcyBn byBiYWNrIHRvIHRoZWlyIG93bmluZyBmdW5jdGlvbiwgd2hldGhlciBhIFBGIG9yIGEgVkYuDQo+ ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfcmVzb3VyY2VfcmVzZXQoc3RydWN0IGRsYjJfaHcgKmh3 KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3X2NyZWF0ZV9zY2hlZF9kb21haW4o KSAtIGNyZWF0ZSBhIHNjaGVkdWxpbmcgZG9tYWluDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5k bGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBhcmdzOiBzY2hlZHVsaW5nIGRv bWFpbiBjcmVhdGlvbiBhcmd1bWVudHMuDQo+ID4gKyAqIEByZXNwOiByZXNwb25zZSBzdHJ1Y3R1 cmUuDQo+ID4gKyAqIEB2ZGV2X3JlcXVlc3Q6IGluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmVxdWVz dCBjYW1lIGZyb20gYSB2ZGV2Lg0KPiA+ICsgKiBAdmRldl9pZDogSWYgdmRldl9yZXF1ZXN0IGlz IHRydWUsIHRoaXMgY29udGFpbnMgdGhlIHZkZXYncyBJRC4NCj4gPiArICoNCj4gPiArICogVGhp cyBmdW5jdGlvbiBjcmVhdGVzIGEgc2NoZWR1bGluZyBkb21haW4gY29udGFpbmluZyB0aGUgcmVz b3VyY2VzDQo+IHNwZWNpZmllZA0KPiA+ICsgKiBpbiBhcmdzLiBUaGUgaW5kaXZpZHVhbCByZXNv dXJjZXMgKHF1ZXVlcywgcG9ydHMsIGNyZWRpdHMpIGNhbiBiZSBjb25maWd1cmVkDQo+ID4gKyAq IGFmdGVyIGNyZWF0aW5nIGEgc2NoZWR1bGluZyBkb21haW4uDQo+ID4gKyAqDQo+ID4gKyAqIEEg dmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFi bGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46 DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuIElmIGFuIGVy cm9yIG9jY3VycywgcmVzcC0+c3RhdHVzIGlzDQo+ID4gKyAqIGFzc2lnbmVkIGEgZGV0YWlsZWQg ZXJyb3IgY29kZSBmcm9tIGVudW0gZGxiMl9lcnJvci4gSWYgc3VjY2Vzc2Z1bCwgcmVzcC0NCj4g PmlkDQo+ID4gKyAqIGNvbnRhaW5zIHRoZSBkb21haW4gSUQuDQo+ID4gKyAqDQo+ID4gKyAqIHJl c3AtPmlkIGNvbnRhaW5zIGEgdmlydHVhbCBJRCBpZiB2ZGV2X3JlcXVlc3QgaXMgdHJ1ZS4NCj4g PiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBBIHJlcXVlc3RlZCByZXNv dXJjZSBpcyB1bmF2YWlsYWJsZSwgb3IgdGhlIHJlcXVlc3RlZCBkb21haW4NCj4gbmFtZQ0KPiA+ ICsgKiAgICAgICAgIGlzIGFscmVhZHkgaW4gdXNlLg0KPiA+ICsgKiBFRkFVTFQgLSBJbnRlcm5h bCBlcnJvciAocmVzcC0+c3RhdHVzIG5vdCBzZXQpLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJf aHdfY3JlYXRlX3NjaGVkX2RvbWFpbihzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9jcmVhdGVfc2NoZWRfZG9tYWluX2Fy Z3MgKmFyZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxi Ml9jbWRfcmVzcG9uc2UgKnJlc3AsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIHZkZXZfcmVxdWVzdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCB2ZGV2X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3 X2NyZWF0ZV9sZGJfcXVldWUoKSAtIGNyZWF0ZSBhIGxvYWQtYmFsYW5jZWQgcXVldWUNCj4gPiAr ICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICog QGRvbWFpbl9pZDogZG9tYWluIElELg0KPiA+ICsgKiBAYXJnczogcXVldWUgY3JlYXRpb24gYXJn dW1lbnRzLg0KPiA+ICsgKiBAcmVzcDogcmVzcG9uc2Ugc3RydWN0dXJlLg0KPiA+ICsgKiBAdmRl dl9yZXF1ZXN0OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRl di4NCj4gPiArICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRh aW5zIHRoZSB2ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRl cyBhIGxvYWQtYmFsYW5jZWQgcXVldWUuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUg ZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1 YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJl dHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuIElmIGFuIGVycm9yIG9jY3Vycywg cmVzcC0+c3RhdHVzIGlzDQo+ID4gKyAqIGFzc2lnbmVkIGEgZGV0YWlsZWQgZXJyb3IgY29kZSBm cm9tIGVudW0gZGxiMl9lcnJvci4gSWYgc3VjY2Vzc2Z1bCwgcmVzcC0NCj4gPmlkDQo+ID4gKyAq IGNvbnRhaW5zIHRoZSBxdWV1ZSBJRC4NCj4gPiArICoNCj4gPiArICogcmVzcC0+aWQgY29udGFp bnMgYSB2aXJ0dWFsIElEIGlmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLg0KPiA+ICsgKg0KPiA+ICsg KiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIEEgcmVxdWVzdGVkIHJlc291cmNlIGlzIHVuYXZh aWxhYmxlLCB0aGUgZG9tYWluIGlzIG5vdCBjb25maWd1cmVkLA0KPiA+ICsgKiAgICAgICAgIHRo ZSBkb21haW4gaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkLCBvciB0aGUgcmVxdWVzdGVkIHF1ZXVl IG5hbWUgaXMNCj4gPiArICogICAgICAgICBhbHJlYWR5IGluIHVzZS4NCj4gPiArICogRUZBVUxU IC0gSW50ZXJuYWwgZXJyb3IgKHJlc3AtPnN0YXR1cyBub3Qgc2V0KS4NCj4gPiArICovDQo+ID4g K2ludCBkbGIyX2h3X2NyZWF0ZV9sZGJfcXVldWUoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NyZWF0ZV9sZGJfcXVldWVfYXJncyAqYXJn cywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNw b25zZSAqcmVzcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmRldl9y ZXF1ZXN0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZk ZXZfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfY3JlYXRlX2Rpcl9xdWV1 ZSgpIC0gY3JlYXRlIGEgZGlyZWN0ZWQgcXVldWUNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRs ZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGRvbWFpbl9pZDogZG9tYWluIElE Lg0KPiA+ICsgKiBAYXJnczogcXVldWUgY3JlYXRpb24gYXJndW1lbnRzLg0KPiA+ICsgKiBAcmVz cDogcmVzcG9uc2Ugc3RydWN0dXJlLg0KPiA+ICsgKiBAdmRldl9yZXF1ZXN0OiBpbmRpY2F0ZXMg d2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiArICogQHZkZXZfaWQ6 IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2ZGV2J3MgSUQuDQo+ ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGRpcmVjdGVkIHF1ZXVlLg0K PiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2FuIGJlIGVpdGhlciBhbiBTUi1JT1YgdmlydHVhbCBm dW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4NCj4gPiAr ICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8IDAg b3RoZXJ3aXNlLiBJZiBhbiBlcnJvciBvY2N1cnMsIHJlc3AtPnN0YXR1cyBpcw0KPiA+ICsgKiBh c3NpZ25lZCBhIGRldGFpbGVkIGVycm9yIGNvZGUgZnJvbSBlbnVtIGRsYjJfZXJyb3IuIElmIHN1 Y2Nlc3NmdWwsIHJlc3AtDQo+ID5pZA0KPiA+ICsgKiBjb250YWlucyB0aGUgcXVldWUgSUQuDQo+ ID4gKyAqDQo+ID4gKyAqIHJlc3AtPmlkIGNvbnRhaW5zIGEgdmlydHVhbCBJRCBpZiB2ZGV2X3Jl cXVlc3QgaXMgdHJ1ZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwg LSBBIHJlcXVlc3RlZCByZXNvdXJjZSBpcyB1bmF2YWlsYWJsZSwgdGhlIGRvbWFpbiBpcyBub3Qg Y29uZmlndXJlZCwNCj4gPiArICogICAgICAgICBvciB0aGUgZG9tYWluIGhhcyBhbHJlYWR5IGJl ZW4gc3RhcnRlZC4NCj4gPiArICogRUZBVUxUIC0gSW50ZXJuYWwgZXJyb3IgKHJlc3AtPnN0YXR1 cyBub3Qgc2V0KS4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2NyZWF0ZV9kaXJfcXVldWUo c3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMy IGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIy X2NyZWF0ZV9kaXJfcXVldWVfYXJncyAqYXJncywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2wgdmRldl9yZXF1ZXN0LA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIGRsYjJfaHdfY3JlYXRlX2Rpcl9wb3J0KCkgLSBjcmVhdGUgYSBkaXJlY3RlZCBwb3J0DQo+ ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4g KyAqIEBkb21haW5faWQ6IGRvbWFpbiBJRC4NCj4gPiArICogQGFyZ3M6IHBvcnQgY3JlYXRpb24g YXJndW1lbnRzLg0KPiA+ICsgKiBAY3FfZG1hX2Jhc2U6IGJhc2UgYWRkcmVzcyBvZiB0aGUgQ1Eg bWVtb3J5LiBUaGlzIGNhbiBiZSBhIFBBIG9yIGFuDQo+IElPVkEuDQo+ID4gKyAqIEByZXNwOiBy ZXNwb25zZSBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEB2ZGV2X3JlcXVlc3Q6IGluZGljYXRlcyB3aGV0 aGVyIHRoaXMgcmVxdWVzdCBjYW1lIGZyb20gYSB2ZGV2Lg0KPiA+ICsgKiBAdmRldl9pZDogSWYg dmRldl9yZXF1ZXN0IGlzIHRydWUsIHRoaXMgY29udGFpbnMgdGhlIHZkZXYncyBJRC4NCj4gPiAr ICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgZGlyZWN0ZWQgcG9ydC4NCj4gPiAr ICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rp b24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqDQo+ ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPCAwIG90aGVy d2lzZS4gSWYgYW4gZXJyb3Igb2NjdXJzLCByZXNwLT5zdGF0dXMgaXMNCj4gPiArICogYXNzaWdu ZWQgYSBkZXRhaWxlZCBlcnJvciBjb2RlIGZyb20gZW51bSBkbGIyX2Vycm9yLiBJZiBzdWNjZXNz ZnVsLCByZXNwLQ0KPiA+aWQNCj4gPiArICogY29udGFpbnMgdGhlIHBvcnQgSUQuDQo+ID4gKyAq DQo+ID4gKyAqIHJlc3AtPmlkIGNvbnRhaW5zIGEgdmlydHVhbCBJRCBpZiB2ZGV2X3JlcXVlc3Qg aXMgdHJ1ZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBBIHJl cXVlc3RlZCByZXNvdXJjZSBpcyB1bmF2YWlsYWJsZSwgYSBjcmVkaXQgc2V0dGluZyBpcyBpbnZh bGlkLCBhDQo+ID4gKyAqICAgICAgICAgcG9pbnRlciBhZGRyZXNzIGlzIG5vdCBwcm9wZXJseSBh bGlnbmVkLCB0aGUgZG9tYWluIGlzIG5vdA0KPiA+ICsgKiAgICAgICAgIGNvbmZpZ3VyZWQsIG9y IHRoZSBkb21haW4gaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkLg0KPiA+ICsgKiBFRkFVTFQgLSBJ bnRlcm5hbCBlcnJvciAocmVzcC0+c3RhdHVzIG5vdCBzZXQpLg0KPiA+ICsgKi8NCj4gPiAraW50 IGRsYjJfaHdfY3JlYXRlX2Rpcl9wb3J0KHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRsYjJfY3JlYXRlX2Rpcl9wb3J0X2FyZ3MgKmFyZ3MsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBjcV9kbWFfYmFzZSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNw LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZkZXZfcmVxdWVzdCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfY3JlYXRlX2xkYl9wb3J0KCkgLSBjcmVhdGUg YSBsb2FkLWJhbGFuY2VkIHBvcnQNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBw YXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGRvbWFpbl9pZDogZG9tYWluIElELg0KPiA+ICsg KiBAYXJnczogcG9ydCBjcmVhdGlvbiBhcmd1bWVudHMuDQo+ID4gKyAqIEBjcV9kbWFfYmFzZTog YmFzZSBhZGRyZXNzIG9mIHRoZSBDUSBtZW1vcnkuIFRoaXMgY2FuIGJlIGEgUEEgb3IgYW4NCj4g SU9WQS4NCj4gPiArICogQHJlc3A6IHJlc3BvbnNlIHN0cnVjdHVyZS4NCj4gPiArICogQHZkZXZf cmVxdWVzdDogaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBhIHZkZXYu DQo+ID4gKyAqIEB2ZGV2X2lkOiBJZiB2ZGV2X3JlcXVlc3QgaXMgdHJ1ZSwgdGhpcyBjb250YWlu cyB0aGUgdmRldidzIElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMg YSBsb2FkLWJhbGFuY2VkIHBvcnQuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0 aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwN Cj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVy bnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuIElmIGFuIGVycm9yIG9jY3VycywgcmVz cC0+c3RhdHVzIGlzDQo+ID4gKyAqIGFzc2lnbmVkIGEgZGV0YWlsZWQgZXJyb3IgY29kZSBmcm9t IGVudW0gZGxiMl9lcnJvci4gSWYgc3VjY2Vzc2Z1bCwgcmVzcC0NCj4gPmlkDQo+ID4gKyAqIGNv bnRhaW5zIHRoZSBwb3J0IElELg0KPiA+ICsgKg0KPiA+ICsgKiByZXNwLT5pZCBjb250YWlucyBh IHZpcnR1YWwgSUQgaWYgdmRldl9yZXF1ZXN0IGlzIHRydWUuDQo+ID4gKyAqDQo+ID4gKyAqIEVy cm9yczoNCj4gPiArICogRUlOVkFMIC0gQSByZXF1ZXN0ZWQgcmVzb3VyY2UgaXMgdW5hdmFpbGFi bGUsIGEgY3JlZGl0IHNldHRpbmcgaXMgaW52YWxpZCwgYQ0KPiA+ICsgKiAgICAgICAgIHBvaW50 ZXIgYWRkcmVzcyBpcyBub3QgcHJvcGVybHkgYWxpZ25lZCwgdGhlIGRvbWFpbiBpcyBub3QNCj4g PiArICogICAgICAgICBjb25maWd1cmVkLCBvciB0aGUgZG9tYWluIGhhcyBhbHJlYWR5IGJlZW4g c3RhcnRlZC4NCj4gPiArICogRUZBVUxUIC0gSW50ZXJuYWwgZXJyb3IgKHJlc3AtPnN0YXR1cyBu b3Qgc2V0KS4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2NyZWF0ZV9sZGJfcG9ydChzdHJ1 Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBkb21h aW5faWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NyZWF0 ZV9sZGJfcG9ydF9hcmdzICphcmdzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50cHRyX3QgY3FfZG1hX2Jhc2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCB2ZGV2X3JlcXVlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCB2ZGV2X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3 X3N0YXJ0X2RvbWFpbigpIC0gc3RhcnQgYSBzY2hlZHVsaW5nIGRvbWFpbg0KPiA+ICsgKiBAaHc6 IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAZG9tYWlu X2lkOiBkb21haW4gSUQuDQo+ID4gKyAqIEBhcmdzOiBzdGFydCBkb21haW4gYXJndW1lbnRzLg0K PiA+ICsgKiBAcmVzcDogcmVzcG9uc2Ugc3RydWN0dXJlLg0KPiA+ICsgKiBAdmRldl9yZXF1ZXN0 OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiAr ICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2 ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gc3RhcnRzIGEgc2NoZWR1 bGluZyBkb21haW4sIHdoaWNoIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gc2VuZA0KPiA+ICsgKiB0 cmFmZmljIHRocm91Z2ggaXQuIE9uY2UgYSBkb21haW4gaXMgc3RhcnRlZCwgaXRzIHJlc291cmNl cyBjYW4gbm8gbG9uZ2VyIGJlDQo+ID4gKyAqIGNvbmZpZ3VyZWQgKGJlc2lkZXMgUUlEIHJlbWFw cGluZyBhbmQgcG9ydCBlbmFibGUvZGlzYWJsZSkuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBj YW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9W IHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4g KyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuIElmIGFuIGVycm9yIG9j Y3VycywgcmVzcC0+c3RhdHVzIGlzDQo+ID4gKyAqIGFzc2lnbmVkIGEgZGV0YWlsZWQgZXJyb3Ig Y29kZSBmcm9tIGVudW0gZGxiMl9lcnJvci4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ ICsgKiBFSU5WQUwgLSB0aGUgZG9tYWluIGlzIG5vdCBjb25maWd1cmVkLCBvciB0aGUgZG9tYWlu IGlzIGFscmVhZHkgc3RhcnRlZC4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X3N0YXJ0X2Rv bWFpbihzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHUz MiBkb21haW5faWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX3N0 YXJ0X2RvbWFpbl9hcmdzICphcmdzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZGxiMl9jbWRfcmVzcG9uc2UgKnJlc3AsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgdmRldl9yZXF1ZXN0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgdmRldl9pZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19tYXBfcWlk KCkgLSBtYXAgYSBsb2FkLWJhbGFuY2VkIHF1ZXVlIHRvIGEgbG9hZC1iYWxhbmNlZCBwb3J0DQo+ ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4g KyAqIEBkb21haW5faWQ6IGRvbWFpbiBJRC4NCj4gPiArICogQGFyZ3M6IG1hcCBRSUQgYXJndW1l bnRzLg0KPiA+ICsgKiBAcmVzcDogcmVzcG9uc2Ugc3RydWN0dXJlLg0KPiA+ICsgKiBAdmRldl9y ZXF1ZXN0OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4N Cj4gPiArICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5z IHRoZSB2ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY29uZmlndXJl cyB0aGUgRExCIHRvIHNjaGVkdWxlIFFFcyBmcm9tIHRoZSBzcGVjaWZpZWQgcXVldWUNCj4gPiAr ICogdG8gdGhlIHNwZWNpZmllZCBwb3J0LiBFYWNoIGxvYWQtYmFsYW5jZWQgcG9ydCBjYW4gYmUg bWFwcGVkIHRvIHVwIHRvIDgNCj4gPiArICogcXVldWVzOyBlYWNoIGxvYWQtYmFsYW5jZWQgcXVl dWUgY2FuIHBvdGVudGlhbGx5IG1hcCB0byBhbGwgdGhlDQo+ID4gKyAqIGxvYWQtYmFsYW5jZWQg cG9ydHMuDQo+ID4gKyAqDQo+ID4gKyAqIEEgc3VjY2Vzc2Z1bCByZXR1cm4gZG9lcyBub3QgbmVj ZXNzYXJpbHkgbWVhbiB0aGUgbWFwcGluZyB3YXMNCj4gY29uZmlndXJlZC4gSWYNCj4gPiArICog dGhpcyBmdW5jdGlvbiBpcyB1bmFibGUgdG8gaW1tZWRpYXRlbHkgbWFwIHRoZSBxdWV1ZSB0byB0 aGUgcG9ydCwgaXQgd2lsbA0KPiA+ICsgKiBhZGQgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gdG8g YSBwZXItcG9ydCBsaXN0IG9mIHBlbmRpbmcgbWFwL3VubWFwDQo+ID4gKyAqIG9wZXJhdGlvbnMs IGFuZCAoaWYgaXQncyBub3QgYWxyZWFkeSBydW5uaW5nKSBsYXVuY2ggYSBrZXJuZWwgdGhyZWFk IHRoYXQNCj4gPiArICogcGVyaW9kaWNhbGx5IGF0dGVtcHRzIHRvIHByb2Nlc3MgYWxsIHBlbmRp bmcgb3BlcmF0aW9ucy4gSW4gYSBzZW5zZSwgdGhpcyBpcw0KPiA+ICsgKiBhbiBhc3luY2hyb25v dXMgZnVuY3Rpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgYXN5bmNocm9uaWNpdHkgY3JlYXRl cyB0d28gdmlld3Mgb2YgdGhlIHN0YXRlIG9mIGhhcmR3YXJlOiB0aGUgYWN0dWFsDQo+ID4gKyAq IGhhcmR3YXJlIHN0YXRlIGFuZCB0aGUgcmVxdWVzdGVkIHN0YXRlIChhcyBpZiBldmVyeSByZXF1 ZXN0IGNvbXBsZXRlZA0KPiA+ICsgKiBpbW1lZGlhdGVseSkuIElmIHRoZXJlIGFyZSBhbnkgcGVu ZGluZyBtYXAvdW5tYXAgb3BlcmF0aW9ucywgdGhlDQo+IHJlcXVlc3RlZA0KPiA+ICsgKiBzdGF0 ZSB3aWxsIGRpZmZlciBmcm9tIHRoZSBhY3R1YWwgc3RhdGUuIEFsbCB2YWxpZGF0aW9uIGlzIHBl cmZvcm1lZCB3aXRoDQo+ID4gKyAqIHJlc3BlY3QgdG8gdGhlIHBlbmRpbmcgc3RhdGU7IGZvciBp bnN0YW5jZSwgaWYgdGhlcmUgYXJlIDggcGVuZGluZyBtYXANCj4gPiArICogb3BlcmF0aW9ucyBm b3IgcG9ydCBYLCBhIHJlcXVlc3QgZm9yIGEgOXRoIHdpbGwgZmFpbCBiZWNhdXNlIGEgbG9hZC1i YWxhbmNlZA0KPiA+ICsgKiBwb3J0IGNhbiBvbmx5IG1hcCB1cCB0byA4IHF1ZXVlcy4NCj4gPiAr ICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rp b24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqDQo+ ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPCAwIG90aGVy d2lzZS4gSWYgYW4gZXJyb3Igb2NjdXJzLCByZXNwLT5zdGF0dXMgaXMNCj4gPiArICogYXNzaWdu ZWQgYSBkZXRhaWxlZCBlcnJvciBjb2RlIGZyb20gZW51bSBkbGIyX2Vycm9yLg0KPiA+ICsgKg0K PiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIEEgcmVxdWVzdGVkIHJlc291cmNlIGlz IHVuYXZhaWxhYmxlLCBpbnZhbGlkIHBvcnQgb3IgcXVldWUgSUQsIG9yDQo+ID4gKyAqICAgICAg ICAgdGhlIGRvbWFpbiBpcyBub3QgY29uZmlndXJlZC4NCj4gPiArICogRUZBVUxUIC0gSW50ZXJu YWwgZXJyb3IgKHJlc3AtPnN0YXR1cyBub3Qgc2V0KS4NCj4gPiArICovDQo+ID4gK2ludCBkbGIy X2h3X21hcF9xaWQoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg dTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX21hcF9x aWRfYXJncyAqYXJncywNCj4gPiArICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NtZF9y ZXNwb25zZSAqcmVzcCwNCj4gPiArICAgICAgICAgICAgICAgICAgIGJvb2wgdmRldl9yZXF1ZXN0 LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfdW5tYXBfcWlkKCkgLSBVbm1hcCBhIGxvYWQtYmFs YW5jZWQgcXVldWUgZnJvbSBhIGxvYWQtDQo+IGJhbGFuY2VkIHBvcnQNCj4gPiArICogQGh3OiBk bGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGRvbWFpbl9p ZDogZG9tYWluIElELg0KPiA+ICsgKiBAYXJnczogdW5tYXAgUUlEIGFyZ3VtZW50cy4NCj4gPiAr ICogQHJlc3A6IHJlc3BvbnNlIHN0cnVjdHVyZS4NCj4gPiArICogQHZkZXZfcmVxdWVzdDogaW5k aWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBhIHZkZXYuDQo+ID4gKyAqIEB2 ZGV2X2lkOiBJZiB2ZGV2X3JlcXVlc3QgaXMgdHJ1ZSwgdGhpcyBjb250YWlucyB0aGUgdmRldidz IElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIERMQiB0 byBzdG9wIHNjaGVkdWxpbmcgUUVzIGZyb20gdGhlIHNwZWNpZmllZA0KPiA+ICsgKiBxdWV1ZSB0 byB0aGUgc3BlY2lmaWVkIHBvcnQuDQo+ID4gKyAqDQo+ID4gKyAqIEEgc3VjY2Vzc2Z1bCByZXR1 cm4gZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGUgbWFwcGluZyB3YXMgcmVtb3ZlZC4NCj4g SWYNCj4gPiArICogdGhpcyBmdW5jdGlvbiBpcyB1bmFibGUgdG8gaW1tZWRpYXRlbHkgdW5tYXAg dGhlIHF1ZXVlIGZyb20gdGhlIHBvcnQsIGl0DQo+ID4gKyAqIHdpbGwgYWRkIHRoZSByZXF1ZXN0 ZWQgb3BlcmF0aW9uIHRvIGEgcGVyLXBvcnQgbGlzdCBvZiBwZW5kaW5nIG1hcC91bm1hcA0KPiA+ ICsgKiBvcGVyYXRpb25zLCBhbmQgKGlmIGl0J3Mgbm90IGFscmVhZHkgcnVubmluZykgbGF1bmNo IGEga2VybmVsIHRocmVhZCB0aGF0DQo+ID4gKyAqIHBlcmlvZGljYWxseSBhdHRlbXB0cyB0byBw cm9jZXNzIGFsbCBwZW5kaW5nIG9wZXJhdGlvbnMuIFNlZQ0KPiA+ICsgKiBkbGIyX2h3X21hcF9x aWQoKSBmb3IgbW9yZSBkZXRhaWxzLg0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2FuIGJlIGVp dGhlciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2aXJ0dWFs DQo+ID4gKyAqIGRldmljZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1 cm5zIDAgdXBvbiBzdWNjZXNzLCA8IDAgb3RoZXJ3aXNlLiBJZiBhbiBlcnJvciBvY2N1cnMsIHJl c3AtPnN0YXR1cyBpcw0KPiA+ICsgKiBhc3NpZ25lZCBhIGRldGFpbGVkIGVycm9yIGNvZGUgZnJv bSBlbnVtIGRsYjJfZXJyb3IuDQo+ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlO VkFMIC0gQSByZXF1ZXN0ZWQgcmVzb3VyY2UgaXMgdW5hdmFpbGFibGUsIGludmFsaWQgcG9ydCBv ciBxdWV1ZSBJRCwgb3INCj4gPiArICogICAgICAgICB0aGUgZG9tYWluIGlzIG5vdCBjb25maWd1 cmVkLg0KPiA+ICsgKiBFRkFVTFQgLSBJbnRlcm5hbCBlcnJvciAocmVzcC0+c3RhdHVzIG5vdCBz ZXQpLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfaHdfdW5tYXBfcWlkKHN0cnVjdCBkbGIyX2h3 ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfdW5tYXBfcWlkX2FyZ3MgKmFyZ3MsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcXVlc3QsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZGV2X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBkbGIyX2ZpbmlzaF91bm1hcF9xaWRfcHJvY2VkdXJlcygpIC0gZmluaXNoIGFueSBwZW5k aW5nIHVubWFwDQo+IHByb2NlZHVyZXMNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3Ig YSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBhdHRl bXB0cyB0byBmaW5pc2ggYW55IG91dHN0YW5kaW5nIHVubWFwIHByb2NlZHVyZXMuDQo+ID4gKyAq IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUga2VybmVsIHRocmVhZCByZXNw b25zaWJsZSBmb3INCj4gPiArICogZmluaXNoaW5nIG1hcC91bm1hcCBwcm9jZWR1cmVzLg0KPiA+ ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwcm9j ZWR1cmVzIHRoYXQgd2VyZW4ndCBjb21wbGV0ZWQuDQo+ID4gKyAqLw0KPiA+ICt1bnNpZ25lZCBp bnQgZGxiMl9maW5pc2hfdW5tYXBfcWlkX3Byb2NlZHVyZXMoc3RydWN0IGRsYjJfaHcgKmh3KTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2ZpbmlzaF9tYXBfcWlkX3Byb2NlZHVyZXMo KSAtIGZpbmlzaCBhbnkgcGVuZGluZyBtYXAgcHJvY2VkdXJlcw0KPiA+ICsgKiBAaHc6IGRsYjJf aHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlz IGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGZpbmlzaCBhbnkgb3V0c3RhbmRpbmcgbWFwIHByb2NlZHVy ZXMuDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUga2VybmVs IHRocmVhZCByZXNwb25zaWJsZSBmb3INCj4gPiArICogZmluaXNoaW5nIG1hcC91bm1hcCBwcm9j ZWR1cmVzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgdGhlIG51 bWJlciBvZiBwcm9jZWR1cmVzIHRoYXQgd2VyZW4ndCBjb21wbGV0ZWQuDQo+ID4gKyAqLw0KPiA+ ICt1bnNpZ25lZCBpbnQgZGxiMl9maW5pc2hfbWFwX3FpZF9wcm9jZWR1cmVzKHN0cnVjdCBkbGIy X2h3ICpodyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19lbmFibGVfbGRiX3Bv cnQoKSAtIGVuYWJsZSBhIGxvYWQtYmFsYW5jZWQgcG9ydCBmb3Igc2NoZWR1bGluZw0KPiA+ICsg KiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBA ZG9tYWluX2lkOiBkb21haW4gSUQuDQo+ID4gKyAqIEBhcmdzOiBwb3J0IGVuYWJsZSBhcmd1bWVu dHMuDQo+ID4gKyAqIEByZXNwOiByZXNwb25zZSBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEB2ZGV2X3Jl cXVlc3Q6IGluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmVxdWVzdCBjYW1lIGZyb20gYSB2ZGV2Lg0K PiA+ICsgKiBAdmRldl9pZDogSWYgdmRldl9yZXF1ZXN0IGlzIHRydWUsIHRoaXMgY29udGFpbnMg dGhlIHZkZXYncyBJRC4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjb25maWd1cmVz IHRoZSBETEIgdG8gc2NoZWR1bGUgUUVzIHRvIGEgbG9hZC1iYWxhbmNlZCBwb3J0Lg0KPiA+ICsg KiBQb3J0cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0Lg0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYg Y2FuIGJlIGVpdGhlciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElP ViB2aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8IDAgb3RoZXJ3aXNlLiBJZiBhbiBlcnJvciBv Y2N1cnMsIHJlc3AtPnN0YXR1cyBpcw0KPiA+ICsgKiBhc3NpZ25lZCBhIGRldGFpbGVkIGVycm9y IGNvZGUgZnJvbSBlbnVtIGRsYjJfZXJyb3IuDQo+ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4g PiArICogRUlOVkFMIC0gVGhlIHBvcnQgSUQgaXMgaW52YWxpZCBvciB0aGUgZG9tYWluIGlzIG5v dCBjb25maWd1cmVkLg0KPiA+ICsgKiBFRkFVTFQgLSBJbnRlcm5hbCBlcnJvciAocmVzcC0+c3Rh dHVzIG5vdCBzZXQpLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfaHdfZW5hYmxlX2xkYl9wb3J0 KHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMy IGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJf ZW5hYmxlX2xkYl9wb3J0X2FyZ3MgKmFyZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcXVlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCB2ZGV2X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBk bGIyX2h3X2Rpc2FibGVfbGRiX3BvcnQoKSAtIGRpc2FibGUgYSBsb2FkLWJhbGFuY2VkIHBvcnQg Zm9yIHNjaGVkdWxpbmcNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1 bGFyIGRldmljZS4NCj4gPiArICogQGRvbWFpbl9pZDogZG9tYWluIElELg0KPiA+ICsgKiBAYXJn czogcG9ydCBkaXNhYmxlIGFyZ3VtZW50cy4NCj4gPiArICogQHJlc3A6IHJlc3BvbnNlIHN0cnVj dHVyZS4NCj4gPiArICogQHZkZXZfcmVxdWVzdDogaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1 ZXN0IGNhbWUgZnJvbSBhIHZkZXYuDQo+ID4gKyAqIEB2ZGV2X2lkOiBJZiB2ZGV2X3JlcXVlc3Qg aXMgdHJ1ZSwgdGhpcyBjb250YWlucyB0aGUgdmRldidzIElELg0KPiA+ICsgKg0KPiA+ICsgKiBU aGlzIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIERMQiB0byBzdG9wIHNjaGVkdWxpbmcgUUVzIHRv IGEgbG9hZC1iYWxhbmNlZA0KPiA+ICsgKiBwb3J0LiBQb3J0cyBhcmUgZW5hYmxlZCBieSBkZWZh dWx0Lg0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2FuIGJlIGVpdGhlciBhbiBTUi1JT1Ygdmly dHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4N Cj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNz LCA8IDAgb3RoZXJ3aXNlLiBJZiBhbiBlcnJvciBvY2N1cnMsIHJlc3AtPnN0YXR1cyBpcw0KPiA+ ICsgKiBhc3NpZ25lZCBhIGRldGFpbGVkIGVycm9yIGNvZGUgZnJvbSBlbnVtIGRsYjJfZXJyb3Iu DQo+ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gVGhlIHBvcnQgSUQg aXMgaW52YWxpZCBvciB0aGUgZG9tYWluIGlzIG5vdCBjb25maWd1cmVkLg0KPiA+ICsgKiBFRkFV TFQgLSBJbnRlcm5hbCBlcnJvciAocmVzcC0+c3RhdHVzIG5vdCBzZXQpLg0KPiA+ICsgKi8NCj4g PiAraW50IGRsYjJfaHdfZGlzYWJsZV9sZGJfcG9ydChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZG9tYWluX2lkLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfZGlzYWJsZV9sZGJfcG9ydF9hcmdzICph cmdzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jl c3BvbnNlICpyZXNwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2 X3JlcXVlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg dmRldl9pZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19lbmFibGVfZGlyX3Bv cnQoKSAtIGVuYWJsZSBhIGRpcmVjdGVkIHBvcnQgZm9yIHNjaGVkdWxpbmcNCj4gPiArICogQGh3 OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGRvbWFp bl9pZDogZG9tYWluIElELg0KPiA+ICsgKiBAYXJnczogcG9ydCBlbmFibGUgYXJndW1lbnRzLg0K PiA+ICsgKiBAcmVzcDogcmVzcG9uc2Ugc3RydWN0dXJlLg0KPiA+ICsgKiBAdmRldl9yZXF1ZXN0 OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiAr ICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2 ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUg RExCIHRvIHNjaGVkdWxlIFFFcyB0byBhIGRpcmVjdGVkIHBvcnQuDQo+ID4gKyAqIFBvcnRzIGFy ZSBlbmFibGVkIGJ5IGRlZmF1bHQuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0 aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwN Cj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVy bnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuIElmIGFuIGVycm9yIG9jY3VycywgcmVz cC0+c3RhdHVzIGlzDQo+ID4gKyAqIGFzc2lnbmVkIGEgZGV0YWlsZWQgZXJyb3IgY29kZSBmcm9t IGVudW0gZGxiMl9lcnJvci4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5W QUwgLSBUaGUgcG9ydCBJRCBpcyBpbnZhbGlkIG9yIHRoZSBkb21haW4gaXMgbm90IGNvbmZpZ3Vy ZWQuDQo+ID4gKyAqIEVGQVVMVCAtIEludGVybmFsIGVycm9yIChyZXNwLT5zdGF0dXMgbm90IHNl dCkuDQo+ID4gKyAqLw0KPiA+ICtpbnQgZGxiMl9od19lbmFibGVfZGlyX3BvcnQoc3RydWN0IGRs YjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZG9tYWluX2lk LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9lbmFibGVfZGly X3BvcnRfYXJncyAqYXJncywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIHZkZXZfcmVxdWVzdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfZGlz YWJsZV9kaXJfcG9ydCgpIC0gZGlzYWJsZSBhIGRpcmVjdGVkIHBvcnQgZm9yIHNjaGVkdWxpbmcN Cj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4g PiArICogQGRvbWFpbl9pZDogZG9tYWluIElELg0KPiA+ICsgKiBAYXJnczogcG9ydCBkaXNhYmxl IGFyZ3VtZW50cy4NCj4gPiArICogQHJlc3A6IHJlc3BvbnNlIHN0cnVjdHVyZS4NCj4gPiArICog QHZkZXZfcmVxdWVzdDogaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBh IHZkZXYuDQo+ID4gKyAqIEB2ZGV2X2lkOiBJZiB2ZGV2X3JlcXVlc3QgaXMgdHJ1ZSwgdGhpcyBj b250YWlucyB0aGUgdmRldidzIElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNv bmZpZ3VyZXMgdGhlIERMQiB0byBzdG9wIHNjaGVkdWxpbmcgUUVzIHRvIGEgZGlyZWN0ZWQgcG9y dC4NCj4gPiArICogUG9ydHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4NCj4gPiArICoNCj4gPiAr ICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rpb24gb3IgYSBT Y2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJl dHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPCAwIG90aGVyd2lzZS4gSWYg YW4gZXJyb3Igb2NjdXJzLCByZXNwLT5zdGF0dXMgaXMNCj4gPiArICogYXNzaWduZWQgYSBkZXRh aWxlZCBlcnJvciBjb2RlIGZyb20gZW51bSBkbGIyX2Vycm9yLg0KPiA+ICsgKg0KPiA+ICsgKiBF cnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIFRoZSBwb3J0IElEIGlzIGludmFsaWQgb3IgdGhlIGRv bWFpbiBpcyBub3QgY29uZmlndXJlZC4NCj4gPiArICogRUZBVUxUIC0gSW50ZXJuYWwgZXJyb3Ig KHJlc3AtPnN0YXR1cyBub3Qgc2V0KS4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2Rpc2Fi bGVfZGlyX3BvcnQoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkbGIyX2Rpc2FibGVfZGlyX3BvcnRfYXJncyAqYXJncywNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmRldl9yZXF1ZXN0LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIGRsYjJfY29uZmlndXJlX2xkYl9jcV9pbnRlcnJ1cHQoKSAtIGNvbmZp Z3VyZSBsb2FkLWJhbGFuY2VkIENRIGZvcg0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnRlcnJ1cHRzDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9y IGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBwb3J0X2lkOiBsb2FkLWJhbGFuY2VkIHBv cnQgSUQuDQo+ID4gKyAqIEB2ZWN0b3I6IGludGVycnVwdCB2ZWN0b3IgSUQuIFNob3VsZCBiZSAw IGZvciBNU0kgb3IgY29tcHJlc3NlZCBNU0ktWA0KPiBtb2RlLA0KPiA+ICsgKiAgICAgICAgIGVs c2UgYSB2YWx1ZSB1cCB0byA2NC4NCj4gPiArICogQG1vZGU6IGludGVycnVwdCB0eXBlIChETEIy X0NRX0lTUl9NT0RFX01TSSBvcg0KPiBETEIyX0NRX0lTUl9NT0RFX01TSVgpDQo+ID4gKyAqIEB2 ZjogSWYgdGhlIHBvcnQgaXMgVkYtb3duZWQsIHRoZSBWRidzIElELiBUaGlzIGlzIHVzZWQgZm9y IHRyYW5zbGF0aW5nIHRoZQ0KPiA+ICsgKiAgICAgdmlydHVhbCBwb3J0IElEIHRvIGEgcGh5c2lj YWwgcG9ydCBJRC4gSWdub3JlZCBpZiBtb2RlIGlzIG5vdCBNU0kuDQo+ID4gKyAqIEBvd25lcl92 ZjogdGhlIFZGIHRvIHJvdXRlIHRoZSBpbnRlcnJ1cHQgdG8uIElnbm9yZSBpZiBtb2RlIGlzIG5v dCBNU0kuDQo+ID4gKyAqIEB0aHJlc2hvbGQ6IHRoZSBtaW5pbXVtIENRIGRlcHRoIGF0IHdoaWNo IHRoZSBpbnRlcnJ1cHQgY2FuIGZpcmUuIE11c3QNCj4gYmUNCj4gPiArICogICAgIGdyZWF0ZXIg dGhhbiAwLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIERM QiByZWdpc3RlcnMgZm9yIGxvYWQtYmFsYW5jZWQgQ1Encw0KPiA+ICsgKiBpbnRlcnJ1cHRzLiBU aGlzIGRvZXNuJ3QgZW5hYmxlIHRoZSBDUSdzIGludGVycnVwdDsgdGhhdCBjYW4gYmUgZG9uZSB3 aXRoDQo+ID4gKyAqIGRsYjJfYXJtX2NxX2ludGVycnVwdCgpIG9yIHRocm91Z2ggYW4gaW50ZXJy dXB0IGFybSBRRS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAg dXBvbiBzdWNjZXNzLCA8IDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFcnJvcnM6DQo+ ID4gKyAqIEVJTlZBTCAtIFRoZSBwb3J0IElEIGlzIGludmFsaWQuDQo+ID4gKyAqLw0KPiA+ICtp bnQgZGxiMl9jb25maWd1cmVfbGRiX2NxX2ludGVycnVwdChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnRfaWQsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlY3RvciwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmYsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG93bmVyX3ZmLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiB0aHJlc2hvbGQpOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfY29uZmlndXJlX2Rpcl9jcV9pbnRlcnJ1cHQoKSAtIGNv bmZpZ3VyZSBkaXJlY3RlZCBDUSBmb3IgaW50ZXJydXB0cw0KPiA+ICsgKiBAaHc6IGRsYjJfaHcg aGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAcG9ydF9pZDogbG9hZC1i YWxhbmNlZCBwb3J0IElELg0KPiA+ICsgKiBAdmVjdG9yOiBpbnRlcnJ1cHQgdmVjdG9yIElELiBT aG91bGQgYmUgMCBmb3IgTVNJIG9yIGNvbXByZXNzZWQgTVNJLVgNCj4gbW9kZSwNCj4gPiArICog ICAgICAgICBlbHNlIGEgdmFsdWUgdXAgdG8gNjQuDQo+ID4gKyAqIEBtb2RlOiBpbnRlcnJ1cHQg dHlwZSAoRExCMl9DUV9JU1JfTU9ERV9NU0kgb3INCj4gRExCMl9DUV9JU1JfTU9ERV9NU0lYKQ0K PiA+ICsgKiBAdmY6IElmIHRoZSBwb3J0IGlzIFZGLW93bmVkLCB0aGUgVkYncyBJRC4gVGhpcyBp cyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUNCj4gPiArICogICAgIHZpcnR1YWwgcG9ydCBJRCB0 byBhIHBoeXNpY2FsIHBvcnQgSUQuIElnbm9yZWQgaWYgbW9kZSBpcyBub3QgTVNJLg0KPiA+ICsg KiBAb3duZXJfdmY6IHRoZSBWRiB0byByb3V0ZSB0aGUgaW50ZXJydXB0IHRvLiBJZ25vcmUgaWYg bW9kZSBpcyBub3QgTVNJLg0KPiA+ICsgKiBAdGhyZXNob2xkOiB0aGUgbWluaW11bSBDUSBkZXB0 aCBhdCB3aGljaCB0aGUgaW50ZXJydXB0IGNhbiBmaXJlLiBNdXN0DQo+IGJlDQo+ID4gKyAqICAg ICBncmVhdGVyIHRoYW4gMC4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjb25maWd1 cmVzIHRoZSBETEIgcmVnaXN0ZXJzIGZvciBkaXJlY3RlZCBDUSdzIGludGVycnVwdHMuDQo+ID4g KyAqIFRoaXMgZG9lc24ndCBlbmFibGUgdGhlIENRJ3MgaW50ZXJydXB0OyB0aGF0IGNhbiBiZSBk b25lIHdpdGgNCj4gPiArICogZGxiMl9hcm1fY3FfaW50ZXJydXB0KCkgb3IgdGhyb3VnaCBhbiBp bnRlcnJ1cHQgYXJtIFFFLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVy bnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndpc2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVycm9y czoNCj4gPiArICogRUlOVkFMIC0gVGhlIHBvcnQgSUQgaXMgaW52YWxpZC4NCj4gPiArICovDQo+ ID4gK2ludCBkbGIyX2NvbmZpZ3VyZV9kaXJfY3FfaW50ZXJydXB0KHN0cnVjdCBkbGIyX2h3ICpo dywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydF9pZCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVjdG9yLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3duZXJfdmYsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTE2IHRocmVzaG9sZCk7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9lbmFibGVfaW5ncmVzc19lcnJvcl9hbGFybXMo KSAtIGVuYWJsZSBpbmdyZXNzIGVycm9yIGFsYXJtIGludGVycnVwdHMNCj4gPiArICogQGh3OiBk bGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICovDQo+ID4gK3Zv aWQgZGxiMl9lbmFibGVfaW5ncmVzc19lcnJvcl9hbGFybXMoc3RydWN0IGRsYjJfaHcgKmh3KTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2Rpc2FibGVfaW5ncmVzc19lcnJvcl9hbGFy bXMoKSAtIGRpc2FibGUgaW5ncmVzcyBlcnJvciBhbGFybSBpbnRlcnJ1cHRzDQo+ID4gKyAqIEBo dzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqLw0KPiA+ ICt2b2lkIGRsYjJfZGlzYWJsZV9pbmdyZXNzX2Vycm9yX2FsYXJtcyhzdHJ1Y3QgZGxiMl9odyAq aHcpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfc2V0X21zaXhfbW9kZSgpIC0gZW5h YmxlIGNlcnRhaW4gaGFyZHdhcmUgYWxhcm0gaW50ZXJydXB0cw0KPiA+ICsgKiBAaHc6IGRsYjJf aHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAbW9kZTogTVNJLVgg bW9kZSAoRExCMl9NU0lYX01PREVfUEFDS0VEIG9yDQo+IERMQjJfTVNJWF9NT0RFX0NPTVBSRVNT RUQpDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgaGFyZHdh cmUgdG8gdXNlIGVpdGhlciBwYWNrZWQgb3IgY29tcHJlc3NlZA0KPiA+ICsgKiBtb2RlLiBUaGlz IGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHVzaW5nIE1TSSBpbnRlcnJ1cHRzLg0K PiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX3NldF9tc2l4X21vZGUoc3RydWN0IGRsYjJfaHcgKmh3 LCBpbnQgbW9kZSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9hY2tfbXNpeF9pbnRl cnJ1cHQoKSAtIEFjayBhbiBNU0ktWCBpbnRlcnJ1cHQNCj4gPiArICogQGh3OiBkbGIyX2h3IGhh bmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQHZlY3RvcjogaW50ZXJydXB0 IHZlY3Rvci4NCj4gPiArICoNCj4gPiArICogTm90ZTogT25seSBuZWVkZWQgZm9yIFBGIHNlcnZp Y2UgaW50ZXJydXB0cyAodmVjdG9yIDApLiBDUSBpbnRlcnJ1cHRzIGFyZQ0KPiA+ICsgKiBhY2tl ZCBpbiBkbGIyX2Fja19jb21wcmVzc2VkX2NxX2ludHIoKS4NCj4gPiArICovDQo+ID4gK3ZvaWQg ZGxiMl9hY2tfbXNpeF9pbnRlcnJ1cHQoc3RydWN0IGRsYjJfaHcgKmh3LCBpbnQgdmVjdG9yKTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2FybV9jcV9pbnRlcnJ1cHQoKSAtIGFybSBh IENRJ3MgaW50ZXJydXB0DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGlj dWxhciBkZXZpY2UuDQo+ID4gKyAqIEBwb3J0X2lkOiBwb3J0IElEDQo+ID4gKyAqIEBpc19sZGI6 IHRydWUgZm9yIGxvYWQtYmFsYW5jZWQgcG9ydCwgZmFsc2UgZm9yIGEgZGlyZWN0ZWQgcG9ydA0K PiA+ICsgKiBAdmRldl9yZXF1ZXN0OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2Ft ZSBmcm9tIGEgdmRldi4NCj4gPiArICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVl LCB0aGlzIGNvbnRhaW5zIHRoZSB2ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVu Y3Rpb24gYXJtcyB0aGUgQ1EncyBpbnRlcnJ1cHQuIFRoZSBDUSBtdXN0IGJlIGNvbmZpZ3VyZWQg cHJpb3IgdG8NCj4gPiArICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uLg0KPiA+ICsgKg0KPiA+ICsg KiBUaGUgZnVuY3Rpb24gZG9lcyBubyBwYXJhbWV0ZXIgdmFsaWRhdGlvbjsgdGhhdCBpcyB0aGUg Y2FsbGVyJ3MNCj4gPiArICogcmVzcG9uc2liaWxpdHkuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRl diBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUg SU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IHJl dHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRUlO VkFMIC0gSW52YWxpZCBwb3J0IElELg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfYXJtX2NxX2lu dGVycnVwdChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgcG9ydF9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfbGRi LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcXVlc3QsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmRldl9pZCk7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogZGxiMl9yZWFkX2NvbXByZXNzZWRfY3FfaW50cl9zdGF0dXMoKSAt IHJlYWQgY29tcHJlc3NlZCBDUSBpbnRlcnJ1cHQNCj4gc3RhdHVzDQo+ID4gKyAqIEBodzogZGxi Ml9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBsZGJfaW50ZXJy dXB0czogMi1lbnRyeSBhcnJheSBvZiB1MzIgYml0bWFwcw0KPiA+ICsgKiBAZGlyX2ludGVycnVw dHM6IDQtZW50cnkgYXJyYXkgb2YgdTMyIGJpdG1hcHMNCj4gPiArICoNCj4gPiArICogVGhpcyBm dW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYSBjb21wcmVzc2VkIENRIGludGVycnVwdCBoYW5k bGVyIHRvDQo+ID4gKyAqIGRldGVybWluZSB3aGljaCBDUSBpbnRlcnJ1cHRzIGhhdmUgZmlyZWQu IFRoZSBjYWxsZXIgc2hvdWxkIHRha2UNCj4gYXBwcm9wcmlhdGUNCj4gPiArICogKHN1Y2ggYXMg d2FraW5nIHRocmVhZHMgYmxvY2tlZCBvbiBhIENRJ3MgaW50ZXJydXB0KSB0aGVuIGFjayB0aGUg aW50ZXJydXB0cw0KPiA+ICsgKiB3aXRoIGRsYjJfYWNrX2NvbXByZXNzZWRfY3FfaW50cigpLg0K PiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX3JlYWRfY29tcHJlc3NlZF9jcV9pbnRyX3N0YXR1cyhz dHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1MzIgKmxkYl9pbnRlcnJ1cHRzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdTMyICpkaXJfaW50ZXJydXB0cyk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogZGxiMl9hY2tfY29tcHJlc3NlZF9jcV9pbnRyX3N0YXR1cygpIC0gYWNrIGNvbXBy ZXNzZWQgQ1EgaW50ZXJydXB0cw0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBh cnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAbGRiX2ludGVycnVwdHM6IDItZW50cnkgYXJyYXkg b2YgdTMyIGJpdG1hcHMNCj4gPiArICogQGRpcl9pbnRlcnJ1cHRzOiA0LWVudHJ5IGFycmF5IG9m IHUzMiBiaXRtYXBzDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gQUNLcyBjb21wcmVz c2VkIENRIGludGVycnVwdHMuIEl0cyBhcmd1bWVudHMgc2hvdWxkIGJlIHRoZQ0KPiA+ICsgKiBz YW1lIG9uZXMgcGFzc2VkIHRvIGRsYjJfcmVhZF9jb21wcmVzc2VkX2NxX2ludHJfc3RhdHVzKCku DQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfYWNrX2NvbXByZXNzZWRfY3FfaW50cihzdHJ1Y3Qg ZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyICps ZGJfaW50ZXJydXB0cywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIg KmRpcl9pbnRlcnJ1cHRzKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3JlYWRfdmZf aW50cl9zdGF0dXMoKSAtIHJlYWQgdGhlIFZGIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXINCj4g PiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiAr ICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYSBWRidzIGludGVy cnVwdCBoYW5kbGVyIHRvIGRldGVybWluZQ0KPiA+ICsgKiB3aGljaCBpbnRlcnJ1cHRzIGhhdmUg ZmlyZWQuIFRoZSBmaXJzdCAzMSBiaXRzIGNvcnJlc3BvbmQgdG8gQ1EgaW50ZXJydXB0DQo+ID4g KyAqIHZlY3RvcnMsIGFuZCB0aGUgZmluYWwgYml0IGlzIGZvciB0aGUgUEYtPlZGIG1haWxib3gg aW50ZXJydXB0IHZlY3Rvci4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1 cm5zIGEgYml0IHZlY3RvciBpbmRpY2F0aW5nIHdoaWNoIGludGVycnVwdCB2ZWN0b3JzIGFyZSBh Y3RpdmUuDQo+ID4gKyAqLw0KPiA+ICt1MzIgZGxiMl9yZWFkX3ZmX2ludHJfc3RhdHVzKHN0cnVj dCBkbGIyX2h3ICpodyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9hY2tfdmZfaW50 cl9zdGF0dXMoKSAtIGFjayBWRiBpbnRlcnJ1cHRzDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5k bGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBpbnRlcnJ1cHRzOiAzMi1iaXQg Yml0bWFwDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gQUNLcyBhIFZGJ3MgaW50ZXJy dXB0cy4gSXRzIGludGVycnVwdHMgYXJndW1lbnQgc2hvdWxkIGJlIHRoZQ0KPiA+ICsgKiB2YWx1 ZSByZXR1cm5lZCBieSBkbGIyX3JlYWRfdmZfaW50cl9zdGF0dXMoKS4NCj4gPiArICovDQo+ID4g K3ZvaWQgZGxiMl9hY2tfdmZfaW50cl9zdGF0dXMoc3RydWN0IGRsYjJfaHcgKmh3LCB1MzIgaW50 ZXJydXB0cyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9hY2tfdmZfbXNpX2ludHIo KSAtIGFjayBWRiBNU0kgaW50ZXJydXB0DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9y IGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBpbnRlcnJ1cHRzOiAzMi1iaXQgYml0bWFw DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSBWRidzIE1TSSBpbnRl cnJ1cHQgcGVuZGluZyByZWdpc3Rlci4gSXRzIGludGVycnVwdHMNCj4gPiArICogYXJndW1lbnQg c2hvdWxkIGJlIGNvbnRhaW4gdGhlIE1TSSB2ZWN0b3JzIHRvIEFDSy4gRm9yIGV4YW1wbGUsIGlm IE1TSQ0KPiBNTUUNCj4gPiArICogaXMgaW4gbW9kZSAwLCB0aGVuIG9uZSBiaXQgMCBzaG91bGQg ZXZlciBiZSBzZXQuDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfYWNrX3ZmX21zaV9pbnRyKHN0 cnVjdCBkbGIyX2h3ICpodywgdTMyIGludGVycnVwdHMpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIGRsYjJfYWNrX3BmX21ib3hfaW50KCkgLSBhY2sgUEYtPlZGIG1haWxib3ggaW50ZXJydXB0 DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ ID4gKyAqDQo+ID4gKyAqIFdoZW4gZG9uZSBwcm9jZXNzaW5nIHRoZSBQRiBtYWlsYm94IHJlcXVl c3QsIHRoaXMgZnVuY3Rpb24gdW5zZXRzDQo+ID4gKyAqIHRoZSBQRidzIG1haWxib3ggSVNSIHJl Z2lzdGVyLg0KPiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX2Fja19wZl9tYm94X2ludChzdHJ1Y3Qg ZGxiMl9odyAqaHcpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfcmVhZF92ZGV2X3Rv X3BmX2ludF9iaXR2ZWMoKSAtIHJldHVybiBhIGJpdCB2ZWN0b3Igb2YgYWxsIHJlcXVlc3RpbmcN Cj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRldnMNCj4gPiAr ICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICoN Cj4gPiArICogV2hlbiB0aGUgdmRldi0+UEYgSVNSIGZpcmVzLCB0aGlzIGZ1bmN0aW9uIGNhbiBi ZSBjYWxsZWQgdG8gZGV0ZXJtaW5lIHdoaWNoDQo+ID4gKyAqIHZkZXYocykgYXJlIHJlcXVlc3Rp bmcgc2VydmljZS4gVGhpcyBiaXR2ZWN0b3IgbXVzdCBiZSBwYXNzZWQgdG8NCj4gPiArICogZGxi Ml9hY2tfdmRldl90b19wZl9pbnQoKSB3aGVuIHByb2Nlc3NpbmcgaXMgY29tcGxldGUgZm9yIGFs bCByZXF1ZXN0aW5nDQo+ID4gKyAqIHZkZXZzLg0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2Fu IGJlIGVpdGhlciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2 aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsg KiBSZXR1cm5zIGEgYml0IHZlY3RvciBpbmRpY2F0aW5nIHdoaWNoIFZGcyAoMC0xNSkgaGF2ZSBy ZXF1ZXN0ZWQgc2VydmljZS4NCj4gPiArICovDQo+ID4gK3UzMiBkbGIyX3JlYWRfdmRldl90b19w Zl9pbnRfYml0dmVjKHN0cnVjdCBkbGIyX2h3ICpodyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogZGxiMl9hY2tfdmRldl9tYm94X2ludCgpIC0gYWNrIHByb2Nlc3NlZCB2ZGV2LT5QRiBtYWls Ym94IGludGVycnVwdA0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3Vs YXIgZGV2aWNlLg0KPiA+ICsgKiBAYml0dmVjOiBiaXQgdmVjdG9yIHJldHVybmVkIGJ5IGRsYjJf cmVhZF92ZGV2X3RvX3BmX2ludF9iaXR2ZWMoKQ0KPiA+ICsgKg0KPiA+ICsgKiBXaGVuIGRvbmUg cHJvY2Vzc2luZyBhbGwgVkYgbWFpbGJveCByZXF1ZXN0cywgdGhpcyBmdW5jdGlvbiB1bnNldHMg dGhlIFZGJ3MNCj4gPiArICogbWFpbGJveCBJU1IgcmVnaXN0ZXIuDQo+ID4gKyAqDQo+ID4gKyAq IEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2Nh bGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArdm9pZCBk bGIyX2Fja192ZGV2X21ib3hfaW50KHN0cnVjdCBkbGIyX2h3ICpodywgdTMyIGJpdHZlYyk7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9yZWFkX3ZmX2Zscl9pbnRfYml0dmVjKCkgLSBy ZXR1cm4gYSBiaXQgdmVjdG9yIG9mIGFsbCBWRnMgcmVxdWVzdGluZw0KPiA+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZMUg0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxl IGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBXaGVuIHRoZSBWRiBG TFIgSVNSIGZpcmVzLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgdG8gZGV0ZXJtaW5lIHdo aWNoDQo+ID4gKyAqIFZGKHMpIGFyZSByZXF1ZXN0aW5nIEZMUnMuIFRoaXMgYml0dmVjdG9yIG11 c3QgcGFzc2VkIHRvDQo+ID4gKyAqIGRsYjJfYWNrX3ZmX2Zscl9pbnQoKSB3aGVuIHByb2Nlc3Np bmcgaXMgY29tcGxldGUgZm9yIGFsbCByZXF1ZXN0aW5nIFZGcy4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIGEgYml0IHZlY3RvciBpbmRpY2F0aW5nIHdoaWNoIFZG cyAoMC0xNSkgaGF2ZSByZXF1ZXN0ZWQgRkxScy4NCj4gPiArICovDQo+ID4gK3UzMiBkbGIyX3Jl YWRfdmZfZmxyX2ludF9iaXR2ZWMoc3RydWN0IGRsYjJfaHcgKmh3KTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBkbGIyX2Fja192Zl9mbHJfaW50KCkgLSBhY2sgcHJvY2Vzc2VkIFZGPC0+UEYg aW50ZXJydXB0KHMpDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxh ciBkZXZpY2UuDQo+ID4gKyAqIEBiaXR2ZWM6IGJpdCB2ZWN0b3IgcmV0dXJuZWQgYnkgZGxiMl9y ZWFkX3ZmX2Zscl9pbnRfYml0dmVjKCkNCj4gPiArICoNCj4gPiArICogV2hlbiBkb25lIHByb2Nl c3NpbmcgYWxsIFZGIEZMUiByZXF1ZXN0cywgdGhpcyBmdW5jdGlvbiB1bnNldHMgdGhlIFZGJ3Mg RkxSDQo+ID4gKyAqIElTUiByZWdpc3Rlci4NCj4gPiArICovDQo+ID4gK3ZvaWQgZGxiMl9hY2tf dmZfZmxyX2ludChzdHJ1Y3QgZGxiMl9odyAqaHcsIHUzMiBiaXR2ZWMpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGRsYjJfYWNrX3ZkZXZfdG9fcGZfaW50KCkgLSBhY2sgcHJvY2Vzc2VkIFZG IG1ib3ggYW5kIEZMUiBpbnRlcnJ1cHQocykNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBm b3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQG1ib3hfYml0dmVjOiBiaXQgdmVjdG9y IHJldHVybmVkIGJ5IGRsYjJfcmVhZF92ZGV2X3RvX3BmX2ludF9iaXR2ZWMoKQ0KPiA+ICsgKiBA ZmxyX2JpdHZlYzogYml0IHZlY3RvciByZXR1cm5lZCBieSBkbGIyX3JlYWRfdmZfZmxyX2ludF9i aXR2ZWMoKQ0KPiA+ICsgKg0KPiA+ICsgKiBXaGVuIGRvbmUgcHJvY2Vzc2luZyBhbGwgVkYgcmVx dWVzdHMsIHRoaXMgZnVuY3Rpb24gY29tbXVuaWNhdGVzIHRvIHRoZQ0KPiA+ICsgKiBoYXJkd2Fy ZSB0aGF0IHByb2Nlc3NpbmcgaXMgY29tcGxldGUuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBj YW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9W IHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX2Fja192 ZGV2X3RvX3BmX2ludChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1MzIgbWJveF9iaXR2ZWMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1MzIgZmxyX2JpdHZlYyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9wcm9j ZXNzX3dkdF9pbnRlcnJ1cHQoKSAtIHByb2Nlc3Mgd2F0Y2hkb2cgdGltZXIgaW50ZXJydXB0cw0K PiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSB3YXRjaGRvZyB0aW1lciBpbnRl cnJ1cHQgY2F1c2UgcmVnaXN0ZXJzIHRvDQo+ID4gKyAqIGRldGVybWluZSB3aGljaCBwb3J0KHMp IGhhZCBhIHdhdGNoZG9nIHRpbWVvdXQsIGFuZCBub3RpZmllcyB0aGUNCj4gPiArICogYXBwbGlj YXRpb24ocykgdGhhdCBvd24gdGhlIHBvcnQocykuDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJf cHJvY2Vzc193ZHRfaW50ZXJydXB0KHN0cnVjdCBkbGIyX2h3ICpodyk7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogZGxiMl9wcm9jZXNzX2FsYXJtX2ludGVycnVwdCgpIC0gcHJvY2VzcyBhbiBh bGFybSBpbnRlcnJ1cHQNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1 bGFyIGRldmljZS4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiByZWFkcyBhbmQgbG9n cyB0aGUgYWxhcm0gc3luZHJvbWUsIHRoZW4gYWNrcyB0aGUgaW50ZXJydXB0Lg0KPiA+ICsgKiBU aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZnJvbSB0aGUgYWxhcm0gaW50ZXJydXB0IGhh bmRsZXIgd2hlbg0KPiA+ICsgKiBpbnRlcnJ1cHQgdmVjdG9yIERMQjJfSU5UX0FMQVJNIGZpcmVz Lg0KPiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX3Byb2Nlc3NfYWxhcm1faW50ZXJydXB0KHN0cnVj dCBkbGIyX2h3ICpodyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9wcm9jZXNzX2lu Z3Jlc3NfZXJyb3JfaW50ZXJydXB0KCkgLSBwcm9jZXNzIGluZ3Jlc3MgZXJyb3IgaW50ZXJydXB0 cw0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0K PiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBhbGFybSBzeW5kcm9tZSwg bG9ncyBpdCwgbm90aWZpZXMgdXNlci1zcGFjZSwgYW5kDQo+ID4gKyAqIGFja3MgdGhlIGludGVy cnVwdC4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gdGhlIGFsYXJtIGludGVy cnVwdA0KPiA+ICsgKiBoYW5kbGVyIHdoZW4gaW50ZXJydXB0IHZlY3RvciBETEIyX0lOVF9JTkdS RVNTX0VSUk9SIGZpcmVzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVy bnMgdHJ1ZSBpZiBhbiBpbmdyZXNzIGVycm9yIGludGVycnVwdCBvY2N1cnJlZCwgZmFsc2Ugb3Ro ZXJ3aXNlDQo+ID4gKyAqLw0KPiA+ICtib29sIGRsYjJfcHJvY2Vzc19pbmdyZXNzX2Vycm9yX2lu dGVycnVwdChzdHJ1Y3QgZGxiMl9odyAqaHcpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRs YjJfZ2V0X2dyb3VwX3NlcXVlbmNlX251bWJlcnMoKSAtIHJldHVybiBhIGdyb3VwJ3MgbnVtYmVy IG9mIFNOcyBwZXINCj4gcXVldWUNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBw YXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGdyb3VwX2lkOiBzZXF1ZW5jZSBudW1iZXIgZ3Jv dXAgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29uZmln dXJlZCBudW1iZXIgb2Ygc2VxdWVuY2UgbnVtYmVycyBwZXINCj4gcXVldWUNCj4gPiArICogZm9y IHRoZSBzcGVjaWZpZWQgZ3JvdXAuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICog UmV0dXJucyAtRUlOVkFMIGlmIGdyb3VwX2lkIGlzIGludmFsaWQsIGVsc2UgdGhlIGdyb3VwJ3Mg U05zIHBlciBxdWV1ZS4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2dldF9ncm91cF9zZXF1ZW5j ZV9udW1iZXJzKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZ3JvdXBfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIGRsYjJfZ2V0X2dyb3VwX3NlcXVlbmNlX251bWJlcl9vY2N1cGFuY3koKSAtIHJldHVy biBhIGdyb3VwJ3MgaW4tdXNlDQo+IHNsb3RzDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUg Zm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBncm91cF9pZDogc2VxdWVuY2UgbnVt YmVyIGdyb3VwIElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhl IGdyb3VwJ3MgbnVtYmVyIG9mIGluLXVzZSBzbG90cyAoaS5lLiBsb2FkLWJhbGFuY2VkDQo+ID4g KyAqIHF1ZXVlcyB1c2luZyB0aGUgc3BlY2lmaWVkIGdyb3VwKS4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIC1FSU5WQUwgaWYgZ3JvdXBfaWQgaXMgaW52YWxpZCwg ZWxzZSB0aGUgZ3JvdXAncyBTTnMgcGVyIHF1ZXVlLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJf Z2V0X2dyb3VwX3NlcXVlbmNlX251bWJlcl9vY2N1cGFuY3koc3RydWN0IGRsYjJfaHcgKmh3LA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBncm91cF9pZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9zZXRfZ3JvdXBf c2VxdWVuY2VfbnVtYmVycygpIC0gYXNzaWduIGEgZ3JvdXAncyBudW1iZXIgb2YgU05zIHBlcg0K PiBxdWV1ZQ0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2 aWNlLg0KPiA+ICsgKiBAZ3JvdXBfaWQ6IHNlcXVlbmNlIG51bWJlciBncm91cCBJRC4NCj4gPiAr ICogQHZhbDogcmVxdWVzdGVkIGFtb3VudCBvZiBzZXF1ZW5jZSBudW1iZXJzIHBlciBxdWV1ZS4N Cj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBncm91cCdzIG51 bWJlciBvZiBzZXF1ZW5jZSBudW1iZXJzIHBlcg0KPiBxdWV1ZS4NCj4gPiArICogdmFsIGNhbiBi ZSBhIHBvd2VyLW9mLXR3byBiZXR3ZWVuIDMyIGFuZCAxMDI0LCBpbmNsdXNpdmUuIFRoaXMgc2V0 dGluZyBjYW4NCj4gPiArICogYmUgY29uZmlndXJlZCB1bnRpbCB0aGUgZmlyc3Qgb3JkZXJlZCBs b2FkLWJhbGFuY2VkIHF1ZXVlIGlzIGNvbmZpZ3VyZWQsIGF0DQo+ID4gKyAqIHdoaWNoIHBvaW50 IHRoZSBjb25maWd1cmF0aW9uIGlzIGxvY2tlZC4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0K PiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzOyAtRUlOVkFMIGlmIGdyb3VwX2lkIG9yIHZh bCBpcyBpbnZhbGlkLCAtRVBFUk0gaWYgYW4NCj4gPiArICogb3JkZXJlZCBxdWV1ZSBpcyBjb25m aWd1cmVkLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfc2V0X2dyb3VwX3NlcXVlbmNlX251bWJl cnMoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBncm91cF9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogZGxiMl9yZXNldF9kb21haW4oKSAtIHJlc2V0IGEgc2NoZWR1bGluZyBkb21haW4NCj4gPiAr ICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICog QGRvbWFpbl9pZDogZG9tYWluIElELg0KPiA+ICsgKiBAdmRldl9yZXF1ZXN0OiBpbmRpY2F0ZXMg d2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiArICogQHZkZXZfaWQ6 IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2ZGV2J3MgSUQuDQo+ ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIGFuZCBmcmVlcyBhIERMQiAyLjAg c2NoZWR1bGluZyBkb21haW4gYW5kIGl0cw0KPiBhc3NvY2lhdGVkDQo+ID4gKyAqIHJlc291cmNl cy4NCj4gPiArICoNCj4gPiArICogUHJlLWNvbmRpdGlvbjogdGhlIGRyaXZlciBtdXN0IGVuc3Vy ZSBzb2Z0d2FyZSBoYXMgc3RvcHBlZCBzZW5kaW5nIFFFcw0KPiA+ICsgKiB0aHJvdWdoIHRoaXMg ZG9tYWluJ3MgcHJvZHVjZXIgcG9ydHMgYmVmb3JlIGludm9raW5nIHRoaXMgZnVuY3Rpb24sIG9y DQo+ID4gKyAqIHVuZGVmaW5lZCBiZWhhdmlvciB3aWxsIHJlc3VsdC4NCj4gPiArICoNCj4gPiAr ICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rpb24gb3IgYSBT Y2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJl dHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLg0KPiA+ ICsgKg0KPiA+ICsgKiBFSU5WQUwgLSBJbnZhbGlkIGRvbWFpbiBJRCwgb3IgdGhlIGRvbWFpbiBp cyBub3QgY29uZmlndXJlZC4NCj4gPiArICogRUZBVUxUIC0gSW50ZXJuYWwgZXJyb3IuIChQb3Nz aWJseSBjYXVzZWQgaWYgc29mdHdhcmUgaXMgdGhlIHByZS1jb25kaXRpb24NCj4gPiArICogICAg ICAgICBpcyBub3QgbWV0LikNCj4gPiArICogRVRJTUVET1VUIC0gSGFyZHdhcmUgY29tcG9uZW50 IGRpZG4ndCByZXNldCBpbiB0aGUgZXhwZWN0ZWQgdGltZS4NCj4gPiArICovDQo+ID4gK2ludCBk bGIyX3Jlc2V0X2RvbWFpbihzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHUzMiBkb21haW5faWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmRl dl9yZXF1ZXN0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmRldl9p ZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9sZGJfcG9ydF9vd25lZF9ieV9kb21h aW4oKSAtIHF1ZXJ5IHdoZXRoZXIgYSBwb3J0IGlzIG93bmVkIGJ5IGENCj4gZG9tYWluDQo+ID4g KyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAq IEBkb21haW5faWQ6IGRvbWFpbiBJRC4NCj4gPiArICogQHBvcnRfaWQ6IGluZGljYXRlcyB3aGV0 aGVyIHRoaXMgcmVxdWVzdCBjYW1lIGZyb20gYSBWRi4NCj4gPiArICogQHZkZXZfcmVxdWVzdDog aW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBhIHZkZXYuDQo+ID4gKyAq IEB2ZGV2X2lkOiBJZiB2ZGV2X3JlcXVlc3QgaXMgdHJ1ZSwgdGhpcyBjb250YWlucyB0aGUgdmRl didzIElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciBh IGxvYWQtYmFsYW5jZWQgcG9ydCBpcyBvd25lZCBieSBhIHNwZWNpZmllZA0KPiA+ICsgKiBkb21h aW4uDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0 dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0K PiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCBpZiBmYWxzZSwgMSBp ZiB0cnVlLCA8MCBvdGhlcndpc2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVJTlZBTCAtIEludmFsaWQg ZG9tYWluIG9yIHBvcnQgSUQsIG9yIHRoZSBkb21haW4gaXMgbm90IGNvbmZpZ3VyZWQuDQo+ID4g KyAqLw0KPiA+ICtpbnQgZGxiMl9sZGJfcG9ydF9vd25lZF9ieV9kb21haW4oc3RydWN0IGRsYjJf aHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZG9tYWlu X2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgcG9ydF9pZCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcXVlc3Qs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZGV2 X2lkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2Rpcl9wb3J0X293bmVkX2J5X2Rv bWFpbigpIC0gcXVlcnkgd2hldGhlciBhIHBvcnQgaXMgb3duZWQgYnkgYQ0KPiBkb21haW4NCj4g PiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiAr ICogQGRvbWFpbl9pZDogZG9tYWluIElELg0KPiA+ICsgKiBAcG9ydF9pZDogaW5kaWNhdGVzIHdo ZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBhIFZGLg0KPiA+ICsgKiBAdmRldl9yZXF1ZXN0 OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiAr ICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2 ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aGV0aGVy IGEgZGlyZWN0ZWQgcG9ydCBpcyBvd25lZCBieSBhIHNwZWNpZmllZA0KPiA+ICsgKiBkb21haW4u DQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFs IGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCBpZiBmYWxzZSwgMSBpZiB0 cnVlLCA8MCBvdGhlcndpc2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVJTlZBTCAtIEludmFsaWQgZG9t YWluIG9yIHBvcnQgSUQsIG9yIHRoZSBkb21haW4gaXMgbm90IGNvbmZpZ3VyZWQuDQo+ID4gKyAq Lw0KPiA+ICtpbnQgZGxiMl9kaXJfcG9ydF9vd25lZF9ieV9kb21haW4oc3RydWN0IGRsYjJfaHcg Kmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZG9tYWluX2lk LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgcG9ydF9pZCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcXVlc3QsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZGV2X2lk KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3X2dldF9udW1fcmVzb3VyY2VzKCkg LSBxdWVyeSB0aGUgUENJIGZ1bmN0aW9uJ3MgYXZhaWxhYmxlDQo+IHJlc291cmNlcw0KPiA+ICsg KiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBA YXJnOiBwb2ludGVyIHRvIHJlc291cmNlIGNvdW50cy4NCj4gPiArICogQHZkZXZfcmVxdWVzdDog aW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBhIHZkZXYuDQo+ID4gKyAq IEB2ZGV2X2lkOiBJZiB2ZGV2X3JlcXVlc3QgaXMgdHJ1ZSwgdGhpcyBjb250YWlucyB0aGUgdmRl didzIElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJl ciBvZiBhdmFpbGFibGUgcmVzb3VyY2VzIGZvciB0aGUgUEYgb3IgZm9yIGENCj4gPiArICogVkYu DQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFs IGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIC1F SU5WQUwgaWYgdmRldl9yZXF1ZXN0IGlzIHRydWUgYW5kIHZkZXZfaWQgaXMNCj4gPiArICogaW52 YWxpZC4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2dldF9udW1fcmVzb3VyY2VzKHN0cnVj dCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZGxiMl9nZXRfbnVtX3Jlc291cmNlc19hcmdzICphcmcsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcXVlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IGRsYjJfaHdfZ2V0X251bV91c2VkX3Jlc291cmNlcygpIC0gcXVlcnkgdGhlIFBDSSBmdW5jdGlv bidzIHVzZWQNCj4gcmVzb3VyY2VzDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEg cGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBhcmc6IHBvaW50ZXIgdG8gcmVzb3VyY2UgY291 bnRzLg0KPiA+ICsgKiBAdmRldl9yZXF1ZXN0OiBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVl c3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiArICogQHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBp cyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2ZGV2J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyBpbiB1c2UgYnkgdGhl IFBGIG9yIGEgVkYuIEl0DQo+ID4gKyAqIGZpbGxzIGluIHRoZSBmaWVsZHMgdGhhdCBhcmdzIHBv aW50cyB0bywgZXhjZXB0IHRoZSBmb2xsb3dpbmc6DQo+ID4gKyAqIC0gbWF4X2NvbnRpZ3VvdXNf YXRvbWljX2luZmxpZ2h0cw0KPiA+ICsgKiAtIG1heF9jb250aWd1b3VzX2hpc3RfbGlzdF9lbnRy aWVzDQo+ID4gKyAqIC0gbWF4X2NvbnRpZ3VvdXNfbGRiX2NyZWRpdHMNCj4gPiArICogLSBtYXhf Y29udGlndW91c19kaXJfY3JlZGl0cw0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2FuIGJlIGVp dGhlciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2aXJ0dWFs DQo+ID4gKyAqIGRldmljZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1 cm5zIDAgdXBvbiBzdWNjZXNzLCAtRUlOVkFMIGlmIHZkZXZfcmVxdWVzdCBpcyB0cnVlIGFuZCB2 ZGV2X2lkIGlzDQo+ID4gKyAqIGludmFsaWQuDQo+ID4gKyAqLw0KPiA+ICtpbnQgZGxiMl9od19n ZXRfbnVtX3VzZWRfcmVzb3VyY2VzKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2dldF9udW1fcmVzb3VyY2VzX2Fy Z3MgKmFyZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmRl dl9yZXF1ZXN0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfc2VuZF9hc3lu Y192ZGV2X3RvX3BmX21zZygpIC0gKHZkZXYgb25seSkgc2VuZCBhIG1haWxib3ggbWVzc2FnZQ0K PiB0bw0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBQRg0K PiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIGEgVkYtPlBGIG1haWxib3ggbWVzc2Fn ZS4gSXQgaXMgYXN5bmNocm9ub3VzLCBzbyBpdA0KPiA+ICsgKiByZXR1cm5zIG9uY2UgdGhlIG1l c3NhZ2UgaXMgc2VudCBidXQgcG90ZW50aWFsbHkgYmVmb3JlIHRoZSBQRiBoYXMNCj4gcHJvY2Vz c2VkDQo+ID4gKyAqIHRoZSBtZXNzYWdlLiBUaGUgY2FsbGVyIG11c3QgY2FsbCBkbGIyX3ZkZXZf dG9fcGZfY29tcGxldGUoKSB0bw0KPiBkZXRlcm1pbmUNCj4gPiArICogd2hlbiB0aGUgUEYgaGFz IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRl diBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUg SU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX3Nl bmRfYXN5bmNfdmRldl90b19wZl9tc2coc3RydWN0IGRsYjJfaHcgKmh3KTsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBkbGIyX3ZkZXZfdG9fcGZfY29tcGxldGUoKSAtIGNoZWNrIHRoZSBzdGF0 dXMgb2YgYW4gYXN5bmNocm9ub3VzDQo+IG1haWxib3gNCj4gPiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXF1ZXN0DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEg cGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBQRiBoYXMgZmluaXNoZWQNCj4gPiAr ICogcHJvY2Vzc2luZyBhIFZGLT5QRiBtYWlsYm94IHJlcXVlc3QuIEl0IHNob3VsZCBvbmx5IGJl IGNhbGxlZCBhZnRlciBzZW5kaW5nDQo+ID4gKyAqIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHdp dGggZGxiMl9zZW5kX2FzeW5jX3ZkZXZfdG9fcGZfbXNnKCkuDQo+ID4gKyAqDQo+ID4gKyAqIEEg dmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFi bGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArYm9vbCBkbGIy X3ZkZXZfdG9fcGZfY29tcGxldGUoc3RydWN0IGRsYjJfaHcgKmh3KTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBkbGIyX3ZmX2Zscl9jb21wbGV0ZSgpIC0gY2hlY2sgdGhlIHN0YXR1cyBvZiBh IFZGIEZMUg0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2 aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBib29sZWFuIGlu ZGljYXRpbmcgd2hldGhlciB0aGUgUEYgaGFzIGZpbmlzaGVkDQo+ID4gKyAqIGV4ZWN1dGluZyB0 aGUgVkYgRkxSLiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGUgVkYn cyBGTFINCj4gPiArICogYml0Lg0KPiA+ICsgKi8NCj4gPiArYm9vbCBkbGIyX3ZmX2Zscl9jb21w bGV0ZShzdHJ1Y3QgZGxiMl9odyAqaHcpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJf c2VuZF9hc3luY19wZl90b192ZGV2X21zZygpIC0gKFBGIG9ubHkpIHNlbmQgYSBtYWlsYm94IG1l c3NhZ2UgdG8NCj4gYQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2ZGV2DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZp Y2UuDQo+ID4gKyAqIEB2ZGV2X2lkOiB2ZGV2IElELg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1 bmN0aW9uIHNlbmRzIGEgUEYtPnZkZXYgbWFpbGJveCBtZXNzYWdlLiBJdCBpcyBhc3luY2hyb25v dXMsIHNvIGl0DQo+ID4gKyAqIHJldHVybnMgb25jZSB0aGUgbWVzc2FnZSBpcyBzZW50IGJ1dCBw b3RlbnRpYWxseSBiZWZvcmUgdGhlIHZkZXYgaGFzDQo+ID4gKyAqIHByb2Nlc3NlZCB0aGUgbWVz c2FnZS4gVGhlIGNhbGxlciBtdXN0IGNhbGwgZGxiMl9wZl90b192ZGV2X2NvbXBsZXRlKCkNCj4g dG8NCj4gPiArICogZGV0ZXJtaW5lIHdoZW4gdGhlIHZkZXYgaGFzIGZpbmlzaGVkIHByb2Nlc3Np bmcgdGhlIHJlcXVlc3QuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFu IFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiAr ICogZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArdm9pZCBkbGIyX3NlbmRfYXN5bmNfcGZfdG9fdmRl dl9tc2coc3RydWN0IGRsYjJfaHcgKmh3LCB1bnNpZ25lZCBpbnQNCj4gdmRldl9pZCk7DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9wZl90b192ZGV2X2NvbXBsZXRlKCkgLSBjaGVjayB0 aGUgc3RhdHVzIG9mIGFuIGFzeW5jaHJvbm91cw0KPiBtYWlsYm94DQo+ID4gKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBm b3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQHZkZXZfaWQ6IHZkZXYgSUQuDQo+ID4g KyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3 aGV0aGVyIHRoZSB2ZGV2IGhhcyBmaW5pc2hlZA0KPiA+ICsgKiBwcm9jZXNzaW5nIGEgUEYtPnZk ZXYgbWFpbGJveCByZXF1ZXN0LiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXINCj4gPiAr ICogc2VuZGluZyBhbiBhc3luY2hyb25vdXMgcmVxdWVzdCB3aXRoDQo+IGRsYjJfc2VuZF9hc3lu Y19wZl90b192ZGV2X21zZygpLg0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2FuIGJlIGVpdGhl ciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2aXJ0dWFsDQo+ ID4gKyAqIGRldmljZS4NCj4gPiArICovDQo+ID4gK2Jvb2wgZGxiMl9wZl90b192ZGV2X2NvbXBs ZXRlKHN0cnVjdCBkbGIyX2h3ICpodywgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIGRsYjJfcGZfcmVhZF92Zl9tYm94X3JlcSgpIC0gKFBGIG9ubHkpIHJl YWQgYSBWRi0+UEYgbWFpbGJveCByZXF1ZXN0DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUg Zm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEB2Zl9pZDogVkYgSUQuDQo+ID4gKyAq IEBkYXRhOiBwb2ludGVyIHRvIG1lc3NhZ2UgZGF0YS4NCj4gPiArICogQGxlbjogc2l6ZSwgaW4g Ynl0ZXMsIG9mIHRoZSBkYXRhIGFycmF5Lg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IGNvcGllcyBvbmUgb2YgdGhlIFBGJ3MgVkYtPlBGIG1haWxib3hlcyBpbnRvIHRoZSBhcnJheQ0K PiBwb2ludGVkDQo+ID4gKyAqIHRvIGJ5IGRhdGEuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoN Cj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0K PiA+ICsgKiBFSU5WQUwgLSBsZW4gPj0gRExCMl9WRjJQRl9SRVFfQllURVMuDQo+ID4gKyAqLw0K PiA+ICtpbnQgZGxiMl9wZl9yZWFkX3ZmX21ib3hfcmVxKHN0cnVjdCBkbGIyX2h3ICpodywNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2Zl9pZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbGVuKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIy X3BmX3JlYWRfdmZfbWJveF9yZXNwKCkgLSAoUEYgb25seSkgcmVhZCBhIFZGLT5QRiBtYWlsYm94 IHJlc3BvbnNlDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBk ZXZpY2UuDQo+ID4gKyAqIEB2Zl9pZDogVkYgSUQuDQo+ID4gKyAqIEBkYXRhOiBwb2ludGVyIHRv IG1lc3NhZ2UgZGF0YS4NCj4gPiArICogQGxlbjogc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBkYXRh IGFycmF5Lg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyBvbmUgb2YgdGhl IFBGJ3MgVkYtPlBGIG1haWxib3hlcyBpbnRvIHRoZSBhcnJheQ0KPiBwb2ludGVkDQo+ID4gKyAq IHRvIGJ5IGRhdGEuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAw IHVwb24gc3VjY2VzcywgPDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFSU5WQUwgLSBs ZW4gPj0gRExCMl9WRjJQRl9SRVNQX0JZVEVTLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfcGZf cmVhZF92Zl9tYm94X3Jlc3Aoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2Zl9pZCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpkYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBsZW4pOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfcGZfd3JpdGVfdmZf bWJveF9yZXNwKCkgLSAoUEYgb25seSkgd3JpdGUgYSBQRi0+VkYgbWFpbGJveCByZXNwb25zZQ0K PiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ ICsgKiBAdmZfaWQ6IFZGIElELg0KPiA+ICsgKiBAZGF0YTogcG9pbnRlciB0byBtZXNzYWdlIGRh dGEuDQo+ID4gKyAqIEBsZW46IHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZGF0YSBhcnJheS4NCj4g PiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdGhlIHVzZXItcHJvdmlkZWQgbWVz c2FnZSBkYXRhIGludG8gb2YgdGhlIFBGJ3MgVkYtDQo+ID5QRg0KPiA+ICsgKiBtYWlsYm94ZXMu DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2Vz cywgPDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFSU5WQUwgLSBsZW4gPj0gRExCMl9Q RjJWRl9SRVNQX0JZVEVTLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfcGZfd3JpdGVfdmZfbWJv eF9yZXNwKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHZmX2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICpkYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bGVuKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3BmX3dyaXRlX3ZmX21ib3hfcmVx KCkgLSAoUEYgb25seSkgd3JpdGUgYSBQRi0+VkYgbWFpbGJveCByZXF1ZXN0DQo+ID4gKyAqIEBo dzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEB2Zl9p ZDogVkYgSUQuDQo+ID4gKyAqIEBkYXRhOiBwb2ludGVyIHRvIG1lc3NhZ2UgZGF0YS4NCj4gPiAr ICogQGxlbjogc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBkYXRhIGFycmF5Lg0KPiA+ICsgKg0KPiA+ ICsgKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB0aGUgdXNlci1wcm92aWRlZCBtZXNzYWdlIGRhdGEg aW50byBvZiB0aGUgUEYncyBWRi0NCj4gPlBGDQo+ID4gKyAqIG1haWxib3hlcy4NCj4gPiArICoN Cj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8MCBvdGhl cndpc2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVJTlZBTCAtIGxlbiA+PSBETEIyX1BGMlZGX1JFUV9C WVRFUy4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX3BmX3dyaXRlX3ZmX21ib3hfcmVxKHN0cnVj dCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgdmZfaWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0 YSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3ZmX3JlYWRfcGZfbWJveF9yZXNwKCkgLSAoVkYgb25seSkg cmVhZCBhIFBGLT5WRiBtYWlsYm94IHJlc3BvbnNlDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5k bGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBkYXRhOiBwb2ludGVyIHRvIG1l c3NhZ2UgZGF0YS4NCj4gPiArICogQGxlbjogc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBkYXRhIGFy cmF5Lg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB0aGUgVkYncyBQRi0+ VkYgbWFpbGJveCBpbnRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5DQo+ID4gKyAqIGRhdGEuDQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2Vzcywg PDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFSU5WQUwgLSBsZW4gPj0gRExCMl9QRjJW Rl9SRVNQX0JZVEVTLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfdmZfcmVhZF9wZl9tYm94X3Jl c3Aoc3RydWN0IGRsYjJfaHcgKmh3LCB2b2lkICpkYXRhLCBpbnQgbGVuKTsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBkbGIyX3ZmX3JlYWRfcGZfbWJveF9yZXEoKSAtIChWRiBvbmx5KSByZWFk IGEgUEYtPlZGIG1haWxib3ggcmVxdWVzdA0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZv ciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAZGF0YTogcG9pbnRlciB0byBtZXNzYWdl IGRhdGEuDQo+ID4gKyAqIEBsZW46IHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZGF0YSBhcnJheS4N Cj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdGhlIFZGJ3MgUEYtPlZGIG1h aWxib3ggaW50byB0aGUgYXJyYXkgcG9pbnRlZCB0byBieQ0KPiA+ICsgKiBkYXRhLg0KPiA+ICsg Kg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwwIG90 aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRUlOVkFMIC0gbGVuID49IERMQjJfUEYyVkZfUkVR X0JZVEVTLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfdmZfcmVhZF9wZl9tYm94X3JlcShzdHJ1 Y3QgZGxiMl9odyAqaHcsIHZvaWQgKmRhdGEsIGludCBsZW4pOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIGRsYjJfdmZfd3JpdGVfcGZfbWJveF9yZXEoKSAtIChWRiBvbmx5KSB3cml0ZSBhIFZG LT5QRiBtYWlsYm94IHJlcXVlc3QNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBw YXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGRhdGE6IHBvaW50ZXIgdG8gbWVzc2FnZSBkYXRh Lg0KPiA+ICsgKiBAbGVuOiBzaXplLCBpbiBieXRlcywgb2YgdGhlIGRhdGEgYXJyYXkuDQo+ID4g KyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHRoZSB1c2VyLXByb3ZpZGVkIG1lc3Nh Z2UgZGF0YSBpbnRvIG9mIHRoZSBWRidzIFBGLQ0KPiA+VkYNCj4gPiArICogbWFpbGJveGVzLg0K PiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3Ms IDwwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRUlOVkFMIC0gbGVuID49IERMQjJfVkYy UEZfUkVRX0JZVEVTLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfdmZfd3JpdGVfcGZfbWJveF9y ZXEoc3RydWN0IGRsYjJfaHcgKmh3LCB2b2lkICpkYXRhLCBpbnQgbGVuKTsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBkbGIyX3ZmX3dyaXRlX3BmX21ib3hfcmVzcCgpIC0gKFZGIG9ubHkpIHdy aXRlIGEgVkYtPlBGIG1haWxib3ggcmVzcG9uc2UNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRs ZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGRhdGE6IHBvaW50ZXIgdG8gbWVz c2FnZSBkYXRhLg0KPiA+ICsgKiBAbGVuOiBzaXplLCBpbiBieXRlcywgb2YgdGhlIGRhdGEgYXJy YXkuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHRoZSB1c2VyLXByb3Zp ZGVkIG1lc3NhZ2UgZGF0YSBpbnRvIG9mIHRoZSBWRidzIFBGLQ0KPiA+VkYNCj4gPiArICogbWFp bGJveGVzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9u IHN1Y2Nlc3MsIDwwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRUlOVkFMIC0gbGVuID49 IERMQjJfVkYyUEZfUkVTUF9CWVRFUy4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX3ZmX3dyaXRl X3BmX21ib3hfcmVzcChzdHJ1Y3QgZGxiMl9odyAqaHcsIHZvaWQgKmRhdGEsIGludCBsZW4pOw0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfcmVzZXRfdmRldigpIC0gcmVzZXQgdGhlIGhh cmR3YXJlIG93bmVkIGJ5IGEgdmlydHVhbCBkZXZpY2UNCj4gPiArICogQGh3OiBkbGIyX2h3IGhh bmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGlkOiB2aXJ0dWFsIGRldmlj ZSBJRA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgaGFyZHdhcmUg b3duZWQgYnkgYSB2ZGV2LCBieSByZXNldHRpbmcgdGhlIHZkZXYncw0KPiA+ICsgKiBkb21haW5z IG9uZSBieSBvbmUuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNS LUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICog ZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfcmVzZXRfdmRldihzdHJ1Y3QgZGxiMl9o dyAqaHcsIHVuc2lnbmVkIGludCBpZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl92 ZGV2X2lzX2xvY2tlZCgpIC0gY2hlY2sgd2hldGhlciB0aGUgdmRldidzIHJlc291cmNlcyBhcmUg bG9ja2VkDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZp Y2UuDQo+ID4gKyAqIEBpZDogdmlydHVhbCBkZXZpY2UgSUQNCj4gPiArICoNCj4gPiArICogVGhp cyBmdW5jdGlvbiByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZGV2J3MgcmVzb3VyY2UgYXNz aWdubWVudHMgYXJlDQo+ID4gKyAqIGxvY2tlZC4gSWYgbG9ja2VkLCBubyByZXNvdXJjZXMgY2Fu IGJlIGFkZGVkIHRvIG9yIHN1YnRyYWN0ZWQgZnJvbSB0aGUNCj4gPiArICogZ3JvdXAuDQo+ID4g KyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0 aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKi8N Cj4gPiArYm9vbCBkbGIyX3ZkZXZfaXNfbG9ja2VkKHN0cnVjdCBkbGIyX2h3ICpodywgdW5zaWdu ZWQgaW50IGlkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2xvY2tfdmRldigpIC0g bG9jayB0aGUgdmRldidzIHJlc291cmNlcw0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZv ciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAaWQ6IHZpcnR1YWwgZGV2aWNlIElEDQo+ ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgaW5kaWNhdGluZyB0aGF0 IHRoZSB2ZGV2IGlzIHVzaW5nIGl0cyByZXNvdXJjZXMuDQo+ID4gKyAqIFdoZW4gdGhlIHZkZXYg aXMgbG9ja2VkLCBpdHMgcmVzb3VyY2UgYXNzaWdubWVudCBjYW5ub3QgYmUgY2hhbmdlZC4NCj4g PiArICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVu Y3Rpb24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAq Lw0KPiA+ICt2b2lkIGRsYjJfbG9ja192ZGV2KHN0cnVjdCBkbGIyX2h3ICpodywgdW5zaWduZWQg aW50IGlkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3VubG9ja192ZGV2KCkgLSB1 bmxvY2sgdGhlIHZkZXYncyByZXNvdXJjZXMNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBm b3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGlkOiB2aXJ0dWFsIGRldmljZSBJRA0K PiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHVubG9ja3MgdGhlIHZkZXYncyByZXNvdXJj ZSBhc3NpZ25tZW50LCBhbGxvd2luZyBpdCB0byBiZQ0KPiA+ICsgKiBtb2RpZmllZC4NCj4gPiAr ICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rp b24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqLw0K PiA+ICt2b2lkIGRsYjJfdW5sb2NrX3ZkZXYoc3RydWN0IGRsYjJfaHcgKmh3LCB1bnNpZ25lZCBp bnQgaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfdXBkYXRlX3ZkZXZfc2NoZWRf ZG9tYWlucygpIC0gdXBkYXRlIHRoZSBkb21haW5zIGFzc2lnbmVkIHRvIGENCj4gdmRldg0KPiA+ ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsg KiBAaWQ6IHZpcnR1YWwgZGV2aWNlIElEDQo+ID4gKyAqIEBudW06IG51bWJlciBvZiBzY2hlZHVs aW5nIGRvbWFpbnMgdG8gYXNzaWduIHRvIHRoaXMgdmRldg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlz IGZ1bmN0aW9uIGFzc2lnbnMgbnVtIHNjaGVkdWxpbmcgZG9tYWlucyB0byB0aGUgc3BlY2lmaWVk IHZkZXYuIElmIHRoZQ0KPiA+ICsgKiB2ZGV2IGFscmVhZHkgaGFzIGRvbWFpbnMgYXNzaWduZWQs IHRoaXMgZXhpc3RpbmcgYXNzaWdubWVudCBpcyBhZGp1c3RlZA0KPiA+ICsgKiBhY2NvcmRpbmds eS4NCj4gPiArICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1 YWwgZnVuY3Rpb24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2Vzcywg PDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAt IGlkIGlzIGludmFsaWQsIG9yIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHJlc291cmNlcyBhcmUN Cj4gPiArICogICAgICAgICB1bmF2YWlsYWJsZS4NCj4gPiArICogRVBFUk0gIC0gVGhlIHZkZXYn cyByZXNvdXJjZSBhc3NpZ25tZW50IGlzIGxvY2tlZCBhbmQgY2Fubm90IGJlIGNoYW5nZWQuDQo+ ID4gKyAqLw0KPiA+ICtpbnQgZGxiMl91cGRhdGVfdmRldl9zY2hlZF9kb21haW5zKHN0cnVjdCBk bGIyX2h3ICpodywgdTMyIGlkLCB1MzIgbnVtKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBk bGIyX3VwZGF0ZV92ZGV2X2xkYl9xdWV1ZXMoKSAtIHVwZGF0ZSB0aGUgTERCIHF1ZXVlcyBhc3Np Z25lZCB0byBhDQo+IHZkZXYNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0 aWN1bGFyIGRldmljZS4NCj4gPiArICogQGlkOiB2aXJ0dWFsIGRldmljZSBJRA0KPiA+ICsgKiBA bnVtOiBudW1iZXIgb2YgTERCIHF1ZXVlcyB0byBhc3NpZ24gdG8gdGhpcyB2ZGV2DQo+ID4gKyAq DQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gYXNzaWducyBudW0gTERCIHF1ZXVlcyB0byB0aGUgc3Bl Y2lmaWVkIHZkZXYuIElmIHRoZSB2ZGV2DQo+ID4gKyAqIGFscmVhZHkgaGFzIExEQiBxdWV1ZXMg YXNzaWduZWQsIHRoaXMgZXhpc3RpbmcgYXNzaWdubWVudCBpcyBhZGp1c3RlZA0KPiA+ICsgKiBh Y2NvcmRpbmdseS4NCj4gPiArICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1It SU9WIHZpcnR1YWwgZnVuY3Rpb24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBk ZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24g c3VjY2VzcywgPDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAq IEVJTlZBTCAtIGlkIGlzIGludmFsaWQsIG9yIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHJlc291 cmNlcyBhcmUNCj4gPiArICogICAgICAgICB1bmF2YWlsYWJsZS4NCj4gPiArICogRVBFUk0gIC0g VGhlIHZkZXYncyByZXNvdXJjZSBhc3NpZ25tZW50IGlzIGxvY2tlZCBhbmQgY2Fubm90IGJlIGNo YW5nZWQuDQo+ID4gKyAqLw0KPiA+ICtpbnQgZGxiMl91cGRhdGVfdmRldl9sZGJfcXVldWVzKHN0 cnVjdCBkbGIyX2h3ICpodywgdTMyIGlkLCB1MzIgbnVtKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBkbGIyX3VwZGF0ZV92ZGV2X2xkYl9wb3J0cygpIC0gdXBkYXRlIHRoZSBMREIgcG9ydHMg YXNzaWduZWQgdG8gYSB2ZGV2DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFy dGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBpZDogdmlydHVhbCBkZXZpY2UgSUQNCj4gPiArICog QG51bTogbnVtYmVyIG9mIExEQiBwb3J0cyB0byBhc3NpZ24gdG8gdGhpcyB2ZGV2DQo+ID4gKyAq DQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gYXNzaWducyBudW0gTERCIHBvcnRzIHRvIHRoZSBzcGVj aWZpZWQgdmRldi4gSWYgdGhlIHZkZXYNCj4gPiArICogYWxyZWFkeSBoYXMgTERCIHBvcnRzIGFz c2lnbmVkLCB0aGlzIGV4aXN0aW5nIGFzc2lnbm1lbnQgaXMgYWRqdXN0ZWQNCj4gPiArICogYWNj b3JkaW5nbHkuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlP ViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2 aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1 Y2Nlc3MsIDwwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBF SU5WQUwgLSBpZCBpcyBpbnZhbGlkLCBvciB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiByZXNvdXJj ZXMgYXJlDQo+ID4gKyAqICAgICAgICAgdW5hdmFpbGFibGUuDQo+ID4gKyAqIEVQRVJNICAtIFRo ZSB2ZGV2J3MgcmVzb3VyY2UgYXNzaWdubWVudCBpcyBsb2NrZWQgYW5kIGNhbm5vdCBiZSBjaGFu Z2VkLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfdXBkYXRlX3ZkZXZfbGRiX3BvcnRzKHN0cnVj dCBkbGIyX2h3ICpodywgdTMyIGlkLCB1MzIgbnVtKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiBkbGIyX3VwZGF0ZV92ZGV2X2xkYl9jb3NfcG9ydHMoKSAtIHVwZGF0ZSB0aGUgTERCIHBvcnRz IGFzc2lnbmVkIHRvIGENCj4gdmRldg0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBh IHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAaWQ6IHZpcnR1YWwgZGV2aWNlIElEDQo+ID4g KyAqIEBjb3M6IGNsYXNzLW9mLXNlcnZpY2UgSUQNCj4gPiArICogQG51bTogbnVtYmVyIG9mIExE QiBwb3J0cyB0byBhc3NpZ24gdG8gdGhpcyB2ZGV2DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVu Y3Rpb24gYXNzaWducyBudW0gTERCIHBvcnRzIGZyb20gY2xhc3Mtb2Ytc2VydmljZSBjb3MgdG8g dGhlDQo+ID4gKyAqIHNwZWNpZmllZCB2ZGV2LiBJZiB0aGUgdmRldiBhbHJlYWR5IGhhcyBMREIg cG9ydHMgZnJvbSB0aGlzIGNsYXNzLW9mLXNlcnZpY2UNCj4gPiArICogYXNzaWduZWQsIHRoaXMg ZXhpc3RpbmcgYXNzaWdubWVudCBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseS4NCj4gPiArICoNCj4g PiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rpb24gb3Ig YSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAq IFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPDAgb3RoZXJ3aXNlLg0K PiA+ICsgKg0KPiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIGlkIGlzIGludmFsaWQs IG9yIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHJlc291cmNlcyBhcmUNCj4gPiArICogICAgICAg ICB1bmF2YWlsYWJsZS4NCj4gPiArICogRVBFUk0gIC0gVGhlIHZkZXYncyByZXNvdXJjZSBhc3Np Z25tZW50IGlzIGxvY2tlZCBhbmQgY2Fubm90IGJlIGNoYW5nZWQuDQo+ID4gKyAqLw0KPiA+ICtp bnQgZGxiMl91cGRhdGVfdmRldl9sZGJfY29zX3BvcnRzKHN0cnVjdCBkbGIyX2h3ICpodywNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBpZCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBjb3MsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1MzIgbnVtKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBk bGIyX3VwZGF0ZV92ZGV2X2Rpcl9wb3J0cygpIC0gdXBkYXRlIHRoZSBESVIgcG9ydHMgYXNzaWdu ZWQgdG8gYSB2ZGV2DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxh ciBkZXZpY2UuDQo+ID4gKyAqIEBpZDogdmlydHVhbCBkZXZpY2UgSUQNCj4gPiArICogQG51bTog bnVtYmVyIG9mIERJUiBwb3J0cyB0byBhc3NpZ24gdG8gdGhpcyB2ZGV2DQo+ID4gKyAqDQo+ID4g KyAqIFRoaXMgZnVuY3Rpb24gYXNzaWducyBudW0gRElSIHBvcnRzIHRvIHRoZSBzcGVjaWZpZWQg dmRldi4gSWYgdGhlIHZkZXYNCj4gPiArICogYWxyZWFkeSBoYXMgRElSIHBvcnRzIGFzc2lnbmVk LCB0aGlzIGV4aXN0aW5nIGFzc2lnbm1lbnQgaXMgYWRqdXN0ZWQNCj4gPiArICogYWNjb3JkaW5n bHkuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0 dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0K PiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3Ms IDwwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwg LSBpZCBpcyBpbnZhbGlkLCBvciB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiByZXNvdXJjZXMgYXJl DQo+ID4gKyAqICAgICAgICAgdW5hdmFpbGFibGUuDQo+ID4gKyAqIEVQRVJNICAtIFRoZSB2ZGV2 J3MgcmVzb3VyY2UgYXNzaWdubWVudCBpcyBsb2NrZWQgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLg0K PiA+ICsgKi8NCj4gPiAraW50IGRsYjJfdXBkYXRlX3ZkZXZfZGlyX3BvcnRzKHN0cnVjdCBkbGIy X2h3ICpodywgdTMyIGlkLCB1MzIgbnVtKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIy X3VwZGF0ZV92ZGV2X2xkYl9jcmVkaXRzKCkgLSB1cGRhdGUgdGhlIHZkZXYncyBhc3NpZ25lZCBM REIgY3JlZGl0cw0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIg ZGV2aWNlLg0KPiA+ICsgKiBAaWQ6IHZpcnR1YWwgZGV2aWNlIElEDQo+ID4gKyAqIEBudW06IG51 bWJlciBvZiBMREIgY3JlZGl0IGNyZWRpdHMgdG8gYXNzaWduIHRvIHRoaXMgdmRldg0KPiA+ICsg Kg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGFzc2lnbnMgbnVtIExEQiBjcmVkaXQgdG8gdGhlIHNw ZWNpZmllZCB2ZGV2LiBJZiB0aGUgdmRldg0KPiA+ICsgKiBhbHJlYWR5IGhhcyBMREIgY3JlZGl0 cyBhc3NpZ25lZCwgdGhpcyBleGlzdGluZyBhc3NpZ25tZW50IGlzIGFkanVzdGVkDQo+ID4gKyAq IGFjY29yZGluZ2x5LiB2ZGV2cyBhcmUgYXNzaWduZWQgYSBjb250aWd1b3VzIGNodW5rIG9mIGNy ZWRpdHMsIHNvIHRoaXMNCj4gPiArICogZnVuY3Rpb24gbWF5IGZhaWwgaWYgYSBzdWZmaWNpZW50 bHkgbGFyZ2UgY29udGlndW91cyBjaHVuayBpcyBub3QgYXZhaWxhYmxlLg0KPiA+ICsgKg0KPiA+ ICsgKiBBIHZkZXYgY2FuIGJlIGVpdGhlciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBh IFNjYWxhYmxlIElPViB2aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8MCBvdGhlcndpc2UuDQo+ ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gaWQgaXMgaW52YWxpZCwg b3IgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgcmVzb3VyY2VzIGFyZQ0KPiA+ICsgKiAgICAgICAg IHVuYXZhaWxhYmxlLg0KPiA+ICsgKiBFUEVSTSAgLSBUaGUgdmRldidzIHJlc291cmNlIGFzc2ln bm1lbnQgaXMgbG9ja2VkIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC4NCj4gPiArICovDQo+ID4gK2lu dCBkbGIyX3VwZGF0ZV92ZGV2X2xkYl9jcmVkaXRzKHN0cnVjdCBkbGIyX2h3ICpodywgdTMyIGlk LCB1MzIgbnVtKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3VwZGF0ZV92ZGV2X2Rp cl9jcmVkaXRzKCkgLSB1cGRhdGUgdGhlIHZkZXYncyBhc3NpZ25lZCBESVIgY3JlZGl0cw0KPiA+ ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsg KiBAaWQ6IHZpcnR1YWwgZGV2aWNlIElEDQo+ID4gKyAqIEBudW06IG51bWJlciBvZiBESVIgY3Jl ZGl0cyB0byBhc3NpZ24gdG8gdGhpcyB2ZGV2DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rp b24gYXNzaWducyBudW0gRElSIGNyZWRpdCB0byB0aGUgc3BlY2lmaWVkIHZkZXYuIElmIHRoZSB2 ZGV2DQo+ID4gKyAqIGFscmVhZHkgaGFzIERJUiBjcmVkaXRzIGFzc2lnbmVkLCB0aGlzIGV4aXN0 aW5nIGFzc2lnbm1lbnQgaXMgYWRqdXN0ZWQNCj4gPiArICogYWNjb3JkaW5nbHkuIHZkZXZzIGFy ZSBhc3NpZ25lZCBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgY3JlZGl0cywgc28gdGhpcw0KPiA+ICsg KiBmdW5jdGlvbiBtYXkgZmFpbCBpZiBhIHN1ZmZpY2llbnRseSBsYXJnZSBjb250aWd1b3VzIGNo dW5rIGlzIG5vdCBhdmFpbGFibGUuDQo+ID4gKyAqDQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0 aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwN Cj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVy bnMgMCB1cG9uIHN1Y2Nlc3MsIDwwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3Jz Og0KPiA+ICsgKiBFSU5WQUwgLSBpZCBpcyBpbnZhbGlkLCBvciB0aGUgcmVxdWVzdGVkIG51bWJl ciBvZiByZXNvdXJjZXMgYXJlDQo+ID4gKyAqICAgICAgICAgdW5hdmFpbGFibGUuDQo+ID4gKyAq IEVQRVJNICAtIFRoZSB2ZGV2J3MgcmVzb3VyY2UgYXNzaWdubWVudCBpcyBsb2NrZWQgYW5kIGNh bm5vdCBiZSBjaGFuZ2VkLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfdXBkYXRlX3ZkZXZfZGly X2NyZWRpdHMoc3RydWN0IGRsYjJfaHcgKmh3LCB1MzIgaWQsIHUzMiBudW0pOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIGRsYjJfdXBkYXRlX3ZkZXZfaGlzdF9saXN0X2VudHJpZXMoKSAtIHVw ZGF0ZSB0aGUgdmRldidzIGFzc2lnbmVkIEhMDQo+IGVudHJpZXMNCj4gPiArICogQGh3OiBkbGIy X2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGlkOiB2aXJ0dWFs IGRldmljZSBJRA0KPiA+ICsgKiBAbnVtOiBudW1iZXIgb2YgaGlzdG9yeSBsaXN0IGVudHJpZXMg dG8gYXNzaWduIHRvIHRoaXMgdmRldg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGFz c2lnbnMgbnVtIGhpc3RvcnkgbGlzdCBlbnRyaWVzIHRvIHRoZSBzcGVjaWZpZWQgdmRldi4gSWYg dGhlDQo+ID4gKyAqIHZkZXYgYWxyZWFkeSBoYXMgaGlzdG9yeSBsaXN0IGVudHJpZXMgYXNzaWdu ZWQsIHRoaXMgZXhpc3RpbmcgYXNzaWdubWVudCBpcw0KPiA+ICsgKiBhZGp1c3RlZCBhY2NvcmRp bmdseS4gdmRldnMgYXJlIGFzc2lnbmVkIGEgY29udGlndW91cyBjaHVuayBvZiBlbnRyaWVzLCBz bw0KPiA+ICsgKiB0aGlzIGZ1bmN0aW9uIG1heSBmYWlsIGlmIGEgc3VmZmljaWVudGx5IGxhcmdl IGNvbnRpZ3VvdXMgY2h1bmsgaXMgbm90DQo+ID4gKyAqIGF2YWlsYWJsZS4NCj4gPiArICoNCj4g PiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1YWwgZnVuY3Rpb24gb3Ig YSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAq IFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPDAgb3RoZXJ3aXNlLg0K PiA+ICsgKg0KPiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIGlkIGlzIGludmFsaWQs IG9yIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHJlc291cmNlcyBhcmUNCj4gPiArICogICAgICAg ICB1bmF2YWlsYWJsZS4NCj4gPiArICogRVBFUk0gIC0gVGhlIHZkZXYncyByZXNvdXJjZSBhc3Np Z25tZW50IGlzIGxvY2tlZCBhbmQgY2Fubm90IGJlIGNoYW5nZWQuDQo+ID4gKyAqLw0KPiA+ICtp bnQgZGxiMl91cGRhdGVfdmRldl9oaXN0X2xpc3RfZW50cmllcyhzdHJ1Y3QgZGxiMl9odyAqaHcs IHUzMiBpZCwgdTMyIG51bSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl91cGRhdGVf dmRldl9hdG9taWNfaW5mbGlnaHRzKCkgLSB1cGRhdGUgdGhlIHZkZXYncyBhdG9taWMgaW5mbGln aHRzDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2Uu DQo+ID4gKyAqIEBpZDogdmlydHVhbCBkZXZpY2UgSUQNCj4gPiArICogQG51bTogbnVtYmVyIG9m IGF0b21pYyBpbmZsaWdodHMgdG8gYXNzaWduIHRvIHRoaXMgdmRldg0KPiA+ICsgKg0KPiA+ICsg KiBUaGlzIGZ1bmN0aW9uIGFzc2lnbnMgbnVtIGF0b21pYyBpbmZsaWdodHMgdG8gdGhlIHNwZWNp ZmllZCB2ZGV2LiBJZiB0aGUgdmRldg0KPiA+ICsgKiBhbHJlYWR5IGhhcyBhdG9taWMgaW5mbGln aHRzIGFzc2lnbmVkLCB0aGlzIGV4aXN0aW5nIGFzc2lnbm1lbnQgaXMgYWRqdXN0ZWQNCj4gPiAr ICogYWNjb3JkaW5nbHkuIHZkZXZzIGFyZSBhc3NpZ25lZCBhIGNvbnRpZ3VvdXMgY2h1bmsgb2Yg ZW50cmllcywgc28gdGhpcw0KPiA+ICsgKiBmdW5jdGlvbiBtYXkgZmFpbCBpZiBhIHN1ZmZpY2ll bnRseSBsYXJnZSBjb250aWd1b3VzIGNodW5rIGlzIG5vdCBhdmFpbGFibGUuDQo+ID4gKyAqDQo+ ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9uIG9y IGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsg KiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwwIG90aGVyd2lzZS4N Cj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBpZCBpcyBpbnZhbGlk LCBvciB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiByZXNvdXJjZXMgYXJlDQo+ID4gKyAqICAgICAg ICAgdW5hdmFpbGFibGUuDQo+ID4gKyAqIEVQRVJNICAtIFRoZSB2ZGV2J3MgcmVzb3VyY2UgYXNz aWdubWVudCBpcyBsb2NrZWQgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLg0KPiA+ICsgKi8NCj4gPiAr aW50IGRsYjJfdXBkYXRlX3ZkZXZfYXRvbWljX2luZmxpZ2h0cyhzdHJ1Y3QgZGxiMl9odyAqaHcs IHUzMiBpZCwgdTMyDQo+IG51bSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9yZXNl dF92ZGV2X3Jlc291cmNlcygpIC0gcmVhc3NpZ24gdGhlIHZkZXYncyByZXNvdXJjZXMgdG8gdGhl IFBGDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2Uu DQo+ID4gKyAqIEBpZDogdmlydHVhbCBkZXZpY2UgSUQNCj4gPiArICoNCj4gPiArICogVGhpcyBm dW5jdGlvbiB0YWtlcyBhbnkgcmVzb3VyY2VzIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgdmRl diBhbmQNCj4gPiArICogcmVhc3NpZ25zIHRoZW0gdG8gdGhlIFBGLg0KPiA+ICsgKg0KPiA+ICsg KiBBIHZkZXYgY2FuIGJlIGVpdGhlciBhbiBTUi1JT1YgdmlydHVhbCBmdW5jdGlvbiBvciBhIFNj YWxhYmxlIElPViB2aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4NCj4gPiArICoNCj4gPiArICogUmV0 dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8MCBvdGhlcndpc2UuDQo+ID4g KyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gaWQgaXMgaW52YWxpZA0KPiA+ ICsgKiBFUEVSTSAgLSBUaGUgdmRldidzIHJlc291cmNlIGFzc2lnbm1lbnQgaXMgbG9ja2VkIGFu ZCBjYW5ub3QgYmUgY2hhbmdlZC4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX3Jlc2V0X3ZkZXZf cmVzb3VyY2VzKHN0cnVjdCBkbGIyX2h3ICpodywgdW5zaWduZWQgaW50IGlkKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBkbGIyX25vdGlmeV92ZigpIC0gc2VuZCBhbiBhbGFybSB0byBhIFZG DQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ ID4gKyAqIEB2Zl9pZDogVkYgSUQNCj4gPiArICogQG5vdGlmaWNhdGlvbjogbm90aWZpY2F0aW9u DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgYSBub3RpZmljYXRpb24gKGFz IGRlZmluZWQgaW4gZGxiMl9tYm94LmgpIHRvIGEgVkYuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVy bjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPDAgaWYgdGhlIFZGIGRvZXNuJ3Qg QUNLIHRoZSBQRi0+VkYgaW50ZXJydXB0Lg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfbm90aWZ5 X3ZmKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHZmX2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICB1MzIgbm90aWZpY2F0aW9uKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX3ZkZXZfaW5fdXNlKCkgLSBxdWVyeSB3aGV0aGVy IGEgdmlydHVhbCBkZXZpY2UgaXMgaW4gdXNlDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUg Zm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBpZDogdmlydHVhbCBkZXZpY2UgSUQN Cj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBzZW5kcyBhIG1haWxib3ggcmVxdWVzdCB0 byB0aGUgdmRldiB0byBxdWVyeSB3aGV0aGVyIHRoZQ0KPiB2ZGV2DQo+ID4gKyAqIGlzIGluIHVz ZS4NCj4gPiArICoNCj4gPiArICogQSB2ZGV2IGNhbiBiZSBlaXRoZXIgYW4gU1ItSU9WIHZpcnR1 YWwgZnVuY3Rpb24gb3IgYSBTY2FsYWJsZSBJT1YgdmlydHVhbA0KPiA+ICsgKiBkZXZpY2UuDQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIGZvciBmYWxzZSwgMSBm b3IgdHJ1ZSwgYW5kIDwwIGlmIHRoZSBtYWlsYm94IHJlcXVlc3QgdGltZXMgb3V0IG9yDQo+ID4g KyAqIGFuIGludGVybmFsIGVycm9yIG9jY3Vycy4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX3Zk ZXZfaW5fdXNlKHN0cnVjdCBkbGIyX2h3ICpodywgdW5zaWduZWQgaW50IGlkKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2Nscl9wbWNzcl9kaXNhYmxlKCkgLSBwb3dlciBvbiBidWxr IG9mIERMQiAyLjAgbG9naWMNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0 aWN1bGFyIGRldmljZS4NCj4gPiArICoNCj4gPiArICogQ2xlYXJpbmcgdGhlIFBNQ1NSIG11c3Qg YmUgZG9uZSBhdCBpbml0aWFsaXphdGlvbiB0byBtYWtlIHRoZSBkZXZpY2UgZnVsbHkNCj4gPiAr ICogb3BlcmF0aW9uYWwuDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfY2xyX3BtY3NyX2Rpc2Fi bGUoc3RydWN0IGRsYjJfaHcgKmh3KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3 X2dldF9sZGJfcXVldWVfZGVwdGgoKSAtIHJldHVybnMgdGhlIGRlcHRoIG9mIGEgbG9hZC1iYWxh bmNlZA0KPiBxdWV1ZQ0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3Vs YXIgZGV2aWNlLg0KPiA+ICsgKiBAZG9tYWluX2lkOiBkb21haW4gSUQuDQo+ID4gKyAqIEBhcmdz OiBxdWV1ZSBkZXB0aCBhcmdzDQo+ID4gKyAqIEByZXNwOiByZXNwb25zZSBzdHJ1Y3R1cmUuDQo+ ID4gKyAqIEB2ZGV2X3JlcXVlc3Q6IGluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmVxdWVzdCBjYW1l IGZyb20gYSB2ZGV2Lg0KPiA+ICsgKiBAdmRldl9pZDogSWYgdmRldl9yZXF1ZXN0IGlzIHRydWUs IHRoaXMgY29udGFpbnMgdGhlIHZkZXYncyBJRC4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5j dGlvbiByZXR1cm5zIHRoZSBkZXB0aCBvZiBhIGxvYWQtYmFsYW5jZWQgcXVldWUuDQo+ID4gKyAq DQo+ID4gKyAqIEEgdmRldiBjYW4gYmUgZWl0aGVyIGFuIFNSLUlPViB2aXJ0dWFsIGZ1bmN0aW9u IG9yIGEgU2NhbGFibGUgSU9WIHZpcnR1YWwNCj4gPiArICogZGV2aWNlLg0KPiA+ICsgKg0KPiA+ ICsgKiBSZXR1cm46DQo+ID4gKyAqIFJldHVybnMgMCB1cG9uIHN1Y2Nlc3MsIDwgMCBvdGhlcndp c2UuIElmIGFuIGVycm9yIG9jY3VycywgcmVzcC0+c3RhdHVzIGlzDQo+ID4gKyAqIGFzc2lnbmVk IGEgZGV0YWlsZWQgZXJyb3IgY29kZSBmcm9tIGVudW0gZGxiMl9lcnJvci4gSWYgc3VjY2Vzc2Z1 bCwgcmVzcC0NCj4gPmlkDQo+ID4gKyAqIGNvbnRhaW5zIHRoZSBkZXB0aC4NCj4gPiArICoNCj4g PiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBJbnZhbGlkIGRvbWFpbiBJRCBvciBxdWV1 ZSBJRC4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2dldF9sZGJfcXVldWVfZGVwdGgoc3Ry dWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMy IGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk bGIyX2dldF9sZGJfcXVldWVfZGVwdGhfYXJncyAqYXJncywNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmRldl9yZXF1ZXN0LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfZ2V0X2Rpcl9xdWV1ZV9kZXB0aCgpIC0gcmV0dXJu cyB0aGUgZGVwdGggb2YgYSBkaXJlY3RlZCBxdWV1ZQ0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFu ZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAZG9tYWluX2lkOiBkb21haW4g SUQuDQo+ID4gKyAqIEBhcmdzOiBxdWV1ZSBkZXB0aCBhcmdzDQo+ID4gKyAqIEByZXNwOiByZXNw b25zZSBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEB2ZGV2X3JlcXVlc3Q6IGluZGljYXRlcyB3aGV0aGVy IHRoaXMgcmVxdWVzdCBjYW1lIGZyb20gYSB2ZGV2Lg0KPiA+ICsgKiBAdmRldl9pZDogSWYgdmRl dl9yZXF1ZXN0IGlzIHRydWUsIHRoaXMgY29udGFpbnMgdGhlIHZkZXYncyBJRC4NCj4gPiArICoN Cj4gPiArICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZXB0aCBvZiBhIGRpcmVjdGVkIHF1 ZXVlLg0KPiA+ICsgKg0KPiA+ICsgKiBBIHZkZXYgY2FuIGJlIGVpdGhlciBhbiBTUi1JT1Ygdmly dHVhbCBmdW5jdGlvbiBvciBhIFNjYWxhYmxlIElPViB2aXJ0dWFsDQo+ID4gKyAqIGRldmljZS4N Cj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNz LCA8IDAgb3RoZXJ3aXNlLiBJZiBhbiBlcnJvciBvY2N1cnMsIHJlc3AtPnN0YXR1cyBpcw0KPiA+ ICsgKiBhc3NpZ25lZCBhIGRldGFpbGVkIGVycm9yIGNvZGUgZnJvbSBlbnVtIGRsYjJfZXJyb3Iu IElmIHN1Y2Nlc3NmdWwsIHJlc3AtDQo+ID5pZA0KPiA+ICsgKiBjb250YWlucyB0aGUgZGVwdGgu DQo+ID4gKyAqDQo+ID4gKyAqIEVycm9yczoNCj4gPiArICogRUlOVkFMIC0gSW52YWxpZCBkb21h aW4gSUQgb3IgcXVldWUgSUQuDQo+ID4gKyAqLw0KPiA+ICtpbnQgZGxiMl9od19nZXRfZGlyX3F1 ZXVlX2RlcHRoKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiBkb21haW5faWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZGxiMl9nZXRfZGlyX3F1ZXVlX2RlcHRoX2FyZ3MgKmFyZ3MsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9jbWRfcmVzcG9uc2UgKnJl c3AsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZkZXZfcmVxdWVz dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZGV2 X2lkKTsNCj4gPiArDQo+ID4gK2VudW0gZGxiMl92aXJ0X21vZGUgew0KPiA+ICsgICAgICAgRExC Ml9WSVJUX05PTkUsDQo+ID4gKyAgICAgICBETEIyX1ZJUlRfU1JJT1YsDQo+ID4gKyAgICAgICBE TEIyX1ZJUlRfU0lPViwNCj4gPiArDQo+ID4gKyAgICAgICAvKiBOVU1fRExCMl9WSVJUX01PREVT IG11c3QgYmUgbGFzdCAqLw0KPiA+ICsgICAgICAgTlVNX0RMQjJfVklSVF9NT0RFUywNCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3X3NldF92aXJ0X21vZGUoKSAtIHNl dCB0aGUgZGV2aWNlJ3MgdmlydHVhbGl6YXRpb24gbW9kZQ0KPiA+ICsgKiBAaHc6IGRsYjJfaHcg aGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAbW9kZTogZWl0aGVyIG5v bmUsIFNSLUlPViwgb3IgU2NhbGFibGUgSU9WLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0 aW9uIHNldHMgdGhlIHZpcnR1YWxpemF0aW9uIG1vZGUgb2YgdGhlIGRldmljZS4gVGhpcyBjb250 cm9scw0KPiA+ICsgKiB3aGV0aGVyIHRoZSBkZXZpY2UgdXNlcyBhIHNvZnR3YXJlIG9yIGhhcmR3 YXJlIG1haWxib3guDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSB0 aGUgUEYgZHJpdmVyIHdoZW4gZWl0aGVyIFNSLUlPViBvciBTY2FsYWJsZSBJT1YgaXMNCj4gPiAr ICogc2VsZWN0ZWQgYXMgdGhlIHZpcnR1YWxpemF0aW9uIG1lY2hhbmlzbSwgYW5kIGJ5IHRoZSBW Ri9WREVWIGRyaXZlciBkdXJpbmcNCj4gPiArICogaW5pdGlhbGl6YXRpb24gYWZ0ZXIgcmVjb2du aXppbmcgaXRzZWxmIGFzIGFuIFNSLUlPViBvciBTY2FsYWJsZSBJT1YgZGV2aWNlLg0KPiA+ICsg Kg0KPiA+ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIEludmFsaWQgbW9kZS4NCj4gPiAr ICovDQo+ID4gK2ludCBkbGIyX2h3X3NldF92aXJ0X21vZGUoc3RydWN0IGRsYjJfaHcgKmh3LCBl bnVtIGRsYjJfdmlydF9tb2RlDQo+IG1vZGUpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRs YjJfaHdfZ2V0X3ZpcnRfbW9kZSgpIC0gZ2V0IHRoZSBkZXZpY2UncyB2aXJ0dWFsaXphdGlvbiBt b2RlDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2Uu DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgdmlydHVhbGl6YXRpb24g bW9kZSBvZiB0aGUgZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArZW51bSBkbGIyX3ZpcnRfbW9kZSBk bGIyX2h3X2dldF92aXJ0X21vZGUoc3RydWN0IGRsYjJfaHcgKmh3KTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBkbGIyX2h3X2dldF9sZGJfcG9ydF9waHlzX2lkKCkgLSBnZXQgYSBwaHlzaWNh bCBwb3J0IElEIGZyb20gaXRzIHZpcnQgSUQNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBm b3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGlkOiB2aXJ0dWFsIHBvcnQgSUQuDQo+ ID4gKyAqIEB2ZGV2X2lkOiB2ZGV2IElELg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4g KyAqIFJldHVybnMgPj0gMCB1cG9uIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZS4NCj4gPiArICovDQo+ ID4gK3MzMiBkbGIyX2h3X2dldF9sZGJfcG9ydF9waHlzX2lkKHN0cnVjdCBkbGIyX2h3ICpodywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgaWQsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQpOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfZ2V0X2Rpcl9wb3J0X3BoeXNfaWQoKSAtIGdldCBh IHBoeXNpY2FsIHBvcnQgSUQgZnJvbSBpdHMgdmlydCBJRA0KPiA+ICsgKiBAaHc6IGRsYjJfaHcg aGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAaWQ6IHZpcnR1YWwgcG9y dCBJRC4NCj4gPiArICogQHZkZXZfaWQ6IHZkZXYgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVy bjoNCj4gPiArICogUmV0dXJucyA+PSAwIHVwb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLg0KPiA+ ICsgKi8NCj4gPiArczMyIGRsYjJfaHdfZ2V0X2Rpcl9wb3J0X3BoeXNfaWQoc3RydWN0IGRsYjJf aHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBpZCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmRldl9pZCk7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19yZWdpc3Rlcl9zd19tYm94KCkgLSBy ZWdpc3RlciBhIHNvZnR3YXJlIG1haWxib3gNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBm b3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQHZkZXZfaWQ6IHZkZXYgSUQuDQo+ID4g KyAqIEB2ZGV2MnBmX21ib3g6IHBvaW50ZXIgdG8gYSA0S0IgbWVtb3J5IHBhZ2UgdXNlZCBmb3Ig dmRldi0+UEYNCj4gY29tbXVuaWNhdGlvbi4NCj4gPiArICogQHBmMnZkZXZfbWJveDogcG9pbnRl ciB0byBhIDRLQiBtZW1vcnkgcGFnZSB1c2VkIGZvciBQRi0+dmRldg0KPiBjb21tdW5pY2F0aW9u Lg0KPiA+ICsgKiBAcGYydmRldl9pbmplY3Q6IGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpbmplY3Rp bmcgYSBQRi0+dmRldiBpbnRlcnJ1cHQuDQo+ID4gKyAqIEBpbmplY3RfYXJnOiB1c2VyIGFyZ3Vt ZW50IGZvciBwZjJ2ZGV2X2luamVjdCBjYWxsYmFjay4NCj4gPiArICoNCj4gPiArICogV2hlbiBT Y2FsYWJsZSBJT1YgaXMgZW5hYmxlZCwgdGhlIFZEQ00gbXVzdCByZWdpc3RlciBhIHNvZnR3YXJl IG1haWxib3gNCj4gZm9yDQo+ID4gKyAqIGV2ZXJ5IHZpcnR1YWwgZGV2aWNlIGR1cmluZyB2ZGV2 IGNyZWF0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIG5vdGlmaWVzIHRoZSBk cml2ZXIgdG8gdXNlIGEgc29mdHdhcmUgbWFpbGJveCB1c2luZyB0aGUNCj4gPiArICogcHJvdmlk ZWQgcG9pbnRlcnMsIGluc3RlYWQgb2YgdGhlIGRldmljZSdzIGhhcmR3YXJlIG1haWxib3guIFdo ZW4gdGhlDQo+IGRyaXZlcg0KPiA+ICsgKiBjYWxscyBtYWlsYm94IGZ1bmN0aW9ucyBsaWtlIGRs YjJfcGZfd3JpdGVfdmZfbWJveF9yZXEoKSwgdGhlIHJlcXVlc3Qgd2lsbA0KPiA+ICsgKiBnbyB0 byB0aGUgc29mdHdhcmUgbWFpbGJveCBpbnN0ZWFkIG9mIHRoZSBoYXJkd2FyZSBvbmUuIFRoaXMg aXMgdXNlZCBpbg0KPiA+ICsgKiBTY2FsYWJsZSBJT1YgdmlydHVhbGl6YXRpb24uDQo+ID4gKyAq Lw0KPiA+ICt2b2lkIGRsYjJfaHdfcmVnaXN0ZXJfc3dfbWJveChzdHJ1Y3QgZGxiMl9odyAqaHcs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyICp2ZGV2MnBmX21ib3gsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyICpwZjJ2ZGV2X21ib3gsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBmMnZkZXZfaW5qZWN0KSh2b2lk ICopLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmluamVjdF9hcmcp Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfdW5yZWdpc3Rlcl9zd19tYm94KCkg LSB1bnJlZ2lzdGVyIGEgc29mdHdhcmUgbWFpbGJveA0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFu ZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAdmRldl9pZDogdmRldiBJRC4N Cj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBub3RpZmllcyB0aGUgZHJpdmVyIHRvIHN0 b3AgdXNpbmcgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQNCj4gPiArICogc29mdHdhcmUgbWFpbGJv eC4NCj4gPiArICovDQo+ID4gK3ZvaWQgZGxiMl9od191bnJlZ2lzdGVyX3N3X21ib3goc3RydWN0 IGRsYjJfaHcgKmh3LCB1bnNpZ25lZCBpbnQNCj4gdmRldl9pZCk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogZGxiMl9od19zZXR1cF9jcV9pbXNfZW50cnkoKSAtIHNldHVwIGEgQ1EncyBJTVMg ZW50cnkNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmlj ZS4NCj4gPiArICogQHZkZXZfaWQ6IHZkZXYgSUQuDQo+ID4gKyAqIEB2aXJ0X2NxX2lkOiB2aXJ0 dWFsIENRIElELg0KPiA+ICsgKiBAaXNfbGRiOiBDUSBpcyBsb2FkLWJhbGFuY2VkLg0KPiA+ICsg KiBAYWRkcl9sbzogbGVhc3Qtc2lnbmlmaWNhbnQgMzIgYml0cyBvZiBhZGRyZXNzLg0KPiA+ICsg KiBAZGF0YTogMzIgZGF0YSBiaXRzLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHNldHMgdXAgdGhl IENRJ3MgSU1TIGVudHJ5IHdpdGggdGhlIHByb3ZpZGVkIGFkZHJlc3MgYW5kIGRhdGEgdmFsdWVz Lg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgZGV2 aWNlIGlzIGNvbmZpZ3VyZWQgZm9yIFNjYWxhYmxlDQo+ID4gKyAqIElPViB2aXJ0dWFsaXphdGlv bi4gVGhlIHVwcGVyIDMyIGFkZHJlc3MgYml0cyBhcmUgZml4ZWQgaW4gaGFyZHdhcmUgYW5kIHRo dXMNCj4gPiArICogbm90IG5lZWRlZC4NCj4gPiArICovDQo+ID4gK3ZvaWQgZGxiMl9od19zZXR1 cF9jcV9pbXNfZW50cnkoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZkZXZfaWQsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1MzIgdmlydF9jcV9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgaXNfbGRiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdTMyIGFkZHJfbG8sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 MzIgZGF0YSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19jbGVhcl9jcV9pbXNf ZW50cnkoKSAtIGNsZWFyIGEgQ1EncyBJTVMgZW50cnkNCj4gPiArICogQGh3OiBkbGIyX2h3IGhh bmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQHZkZXZfaWQ6IHZkZXYgSUQu DQo+ID4gKyAqIEB2aXJ0X2NxX2lkOiB2aXJ0dWFsIENRIElELg0KPiA+ICsgKiBAaXNfbGRiOiBD USBpcyBsb2FkLWJhbGFuY2VkLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGNsZWFycyB0aGUgQ1En cyBJTVMgZW50cnksIHJldmVydGluZyBpdCB0byBpdHMgcmVzZXQgc3RhdGUuDQo+ID4gKyAqLw0K PiA+ICt2b2lkIGRsYjJfaHdfY2xlYXJfY3FfaW1zX2VudHJ5KHN0cnVjdCBkbGIyX2h3ICpodywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZGV2X2lk LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIHZpcnRfY3FfaWQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2xkYik7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogZGxiMl9od19yZWdpc3Rlcl9wYXNpZCgpIC0gcmVnaXN0ZXIgYSB2 ZGV2J3MgUEFTSUQNCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFy IGRldmljZS4NCj4gPiArICogQHZkZXZfaWQ6IHZkZXYgSUQuDQo+ID4gKyAqIEBwYXNpZDogdGhl IHZkZXYncyBQQVNJRC4NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBzdG9yZXMgdGhl IHVzZXItc3VwcGxpZWQgUEFTSUQsIGFuZCB1c2VzIGl0IHdoZW4gY29uZmlndXJpbmcNCj4gPiAr ICogdGhlIHZkZXYncyBDUXMuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0 dXJucyA+PSAwIHVwb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLg0KPiA+ICsgKi8NCj4gPiAraW50 IGRsYjJfaHdfcmVnaXN0ZXJfcGFzaWQoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZGV2X2lkLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYXNpZCk7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogZGxiMl9od19wZW5kaW5nX3BvcnRfdW5tYXBzKCkgLSByZXR1cm5zIHRoZSBudW1iZXIg b2YgdW5tYXANCj4gb3BlcmF0aW9ucyBpbg0KPiA+ICsgKiAgICAgcHJvZ3Jlc3MuDQo+ID4gKyAq IEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBk b21haW5faWQ6IGRvbWFpbiBJRC4NCj4gPiArICogQGFyZ3M6IG51bWJlciBvZiB1bm1hcHMgaW4g cHJvZ3Jlc3MgYXJncw0KPiA+ICsgKiBAcmVzcDogcmVzcG9uc2Ugc3RydWN0dXJlLg0KPiA+ICsg KiBAdmZfcmVxdWVzdDogaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbSBh IFZGLg0KPiA+ICsgKiBAdmZfaWQ6IElmIHZmX3JlcXVlc3QgaXMgdHJ1ZSwgdGhpcyBjb250YWlu cyB0aGUgVkYncyBJRC4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiBSZXR1cm5z IDAgdXBvbiBzdWNjZXNzLCA8IDAgb3RoZXJ3aXNlLiBJZiBhbiBlcnJvciBvY2N1cnMsIHJlc3At PnN0YXR1cyBpcw0KPiA+ICsgKiBhc3NpZ25lZCBhIGRldGFpbGVkIGVycm9yIGNvZGUgZnJvbSBl bnVtIGRsYjJfZXJyb3IuIElmIHN1Y2Nlc3NmdWwsIHJlc3AtDQo+ID5pZA0KPiA+ICsgKiBjb250 YWlucyB0aGUgbnVtYmVyIG9mIHVubWFwcyBpbiBwcm9ncmVzcy4NCj4gPiArICoNCj4gPiArICog RXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBJbnZhbGlkIHBvcnQgSUQuDQo+ID4gKyAqLw0KPiA+ ICtpbnQgZGxiMl9od19wZW5kaW5nX3BvcnRfdW5tYXBzKHN0cnVjdCBkbGIyX2h3ICpodywNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBkb21haW5faWQsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9wZW5kaW5nX3BvcnRfdW5t YXBzX2FyZ3MgKmFyZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZGxiMl9jbWRfcmVzcG9uc2UgKnJlc3AsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sIHZmX3JlcXVlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgdmZfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJf aHdfZ2V0X2Nvc19iYW5kd2lkdGgoKSAtIHJldHVybnMgdGhlIHBlcmNlbnQgb2YgYmFuZHdpZHRo DQo+IGFsbG9jYXRlZA0KPiA+ICsgKiAgICAgdG8gYSBwb3J0IGNsYXNzLW9mLXNlcnZpY2UuDQo+ ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4g KyAqIEBjb3NfaWQ6IGNsYXNzLW9mLXNlcnZpY2UgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVy bjoNCj4gPiArICogUmV0dXJucyAtRUlOVkFMIGlmIGNvc19pZCBpcyBpbnZhbGlkLCBlbHNlIHRo ZSBjbGFzcycgYmFuZHdpZHRoIGFsbG9jYXRpb24uDQo+ID4gKyAqLw0KPiA+ICtpbnQgZGxiMl9o d19nZXRfY29zX2JhbmR3aWR0aChzdHJ1Y3QgZGxiMl9odyAqaHcsIHUzMiBjb3NfaWQpOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfc2V0X2Nvc19iYW5kd2lkdGgoKSAtIHNldCBh IGJhbmR3aWR0aCBhbGxvY2F0aW9uIHBlcmNlbnRhZ2UgZm9yDQo+IGENCj4gPiArICogICAgIHBv cnQgY2xhc3Mtb2Ytc2VydmljZS4NCj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBw YXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGNvc19pZDogY2xhc3Mtb2Ytc2VydmljZSBJRC4N Cj4gPiArICogQGJhbmR3aWR0aDogY2xhc3Mtb2Ytc2VydmljZSBiYW5kd2lkdGguDQo+ID4gKyAq DQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24gc3VjY2VzcywgPCAwIG90 aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsgKiBFSU5WQUwgLSBJbnZh bGlkIGNvcyBJRCwgYmFuZHdpZHRoIGlzIGdyZWF0ZXIgdGhhbiAxMDAsIG9yIGJhbmR3aWR0aCB3 b3VsZA0KPiA+ICsgKiAgICAgICAgIGNhdXNlIHRoZSB0b3RhbCBiYW5kd2lkdGggYWNyb3NzIGFs bCBjbGFzc2VzIG9mIHNlcnZpY2UgdG8gZXhjZWVkDQo+ID4gKyAqICAgICAgICAgMTAwJS4NCj4g PiArICovDQo+ID4gK2ludCBkbGIyX2h3X3NldF9jb3NfYmFuZHdpZHRoKHN0cnVjdCBkbGIyX2h3 ICpodywgdTMyIGNvc19pZCwgdTgNCj4gYmFuZHdpZHRoKTsNCj4gPiArDQo+ID4gK2VudW0gZGxi Ml93ZF90bW8gew0KPiA+ICsgICAgICAgLyogNDBzIHdhdGNoZG9nIHRpbWVvdXQgKi8NCj4gPiAr ICAgICAgIERMQjJfV0RfVE1PXzQwUywNCj4gPiArICAgICAgIC8qIDEwcyB3YXRjaGRvZyB0aW1l b3V0ICovDQo+ID4gKyAgICAgICBETEIyX1dEX1RNT18xMFMsDQo+ID4gKyAgICAgICAvKiAxcyB3 YXRjaGRvZyB0aW1lb3V0ICovDQo+ID4gKyAgICAgICBETEIyX1dEX1RNT18xUywNCj4gPiArDQo+ ID4gKyAgICAgICAvKiBNdXN0IGJlIGxhc3QgKi8NCj4gPiArICAgICAgIE5VTV9ETEIyX1dEX1RN T1MsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19lbmFibGVfd2Rf dGltZXIoKSAtIGVuYWJsZSB0aGUgQ1Egd2F0Y2hkb2cgdGltZXJzIHdpdGggYQ0KPiA+ICsgKiAg ICAgY2FsbGVyLXNwZWNpZmllZCB0aW1lb3V0Lg0KPiA+ICsgKiBAaHc6IGRsYjJfaHcgaGFuZGxl IGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAdG1vOiB3YXRjaGRvZyB0aW1lb3V0 Lg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZHVyaW5n IGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgYWZ0ZXIgcmVzZXQuDQo+ID4gKyAqIFRoZSB3YXRj aGRvZyB0aW1lciBpbnRlcnJ1cHQgbXVzdCBhbHNvIGJlIGVuYWJsZWQgcGVyLUNRLCB1c2luZyBl aXRoZXINCj4gPiArICogZGxiMl9od19lbmFibGVfZGlyX2NxX3dkX2ludCgpIG9yIGRsYjJfaHdf ZW5hYmxlX2xkYl9jcV93ZF9pbnQoKS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsg KiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8IDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ICsg KiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIEludmFsaWQgdGltZW91dC4NCj4gPiArICovDQo+ ID4gK2ludCBkbGIyX2h3X2VuYWJsZV93ZF90aW1lcihzdHJ1Y3QgZGxiMl9odyAqaHcsIGVudW0g ZGxiMl93ZF90bW8NCj4gdG1vKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3X2Vu YWJsZV9kaXJfY3Ffd2RfaW50KCkgLSBlbmFibGUgdGhlIENRIHdhdGNoZG9nIGludGVycnVwdCBv bg0KPiBhbg0KPiA+ICsgKiAgICAgaW5kaXZpZHVhbCBDUS4NCj4gPiArICogQGh3OiBkbGIyX2h3 IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQGlkOiBwb3J0IElELg0K PiA+ICsgKiBAdmRldl9yZXE6IGluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmVxdWVzdCBjYW1lIGZy b20gYSB2ZGV2Lg0KPiA+ICsgKiBAdmRldl9pZDogSWYgdmRldl9yZXF1ZXN0IGlzIHRydWUsIHRo aXMgY29udGFpbnMgdGhlIHZkZXYncyBJRC4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ ICsgKiBSZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCA8IDAgb3RoZXJ3aXNlLg0KPiA+ICsgKg0KPiA+ ICsgKiBFcnJvcnM6DQo+ID4gKyAqIEVJTlZBTCAtIEludmFsaWQgZGlyZWN0ZWQgcG9ydCBJRC4N Cj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2VuYWJsZV9kaXJfY3Ffd2RfaW50KHN0cnVjdCBk bGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgaWQs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmRldl9pZCk7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19lbmFibGVfbGRiX2NxX3dkX2ludCgp IC0gZW5hYmxlIHRoZSBDUSB3YXRjaGRvZyBpbnRlcnJ1cHQgb24NCj4gYW4NCj4gPiArICogICAg IGluZGl2aWR1YWwgQ1EuDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGlj dWxhciBkZXZpY2UuDQo+ID4gKyAqIEBpZDogcG9ydCBJRC4NCj4gPiArICogQHZkZXZfcmVxOiBp bmRpY2F0ZXMgd2hldGhlciB0aGlzIHJlcXVlc3QgY2FtZSBmcm9tIGEgdmRldi4NCj4gPiArICog QHZkZXZfaWQ6IElmIHZkZXZfcmVxdWVzdCBpcyB0cnVlLCB0aGlzIGNvbnRhaW5zIHRoZSB2ZGV2 J3MgSUQuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogUmV0dXJucyAwIHVwb24g c3VjY2VzcywgPCAwIG90aGVyd2lzZS4NCj4gPiArICoNCj4gPiArICogRXJyb3JzOg0KPiA+ICsg KiBFSU5WQUwgLSBJbnZhbGlkIGxvYWQtYmFsYW5jZWQgcG9ydCBJRC4NCj4gPiArICovDQo+ID4g K2ludCBkbGIyX2h3X2VuYWJsZV9sZGJfY3Ffd2RfaW50KHN0cnVjdCBkbGIyX2h3ICpodywNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgaWQsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZGV2X3JlcSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmRldl9pZCk7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogZGxiMl9od19lbmFibGVfc3BhcnNlX2xkYl9jcV9tb2RlKCkgLSBlbmFibGUg c3BhcnNlIG1vZGUgZm9yIGxvYWQtDQo+IGJhbGFuY2VkDQo+ID4gKyAqICAgICBwb3J0cy4NCj4g PiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiAr ICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBjb25maWd1 cmluZyBzY2hlZHVsaW5nIGRvbWFpbnMuDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfaHdfZW5h YmxlX3NwYXJzZV9sZGJfY3FfbW9kZShzdHJ1Y3QgZGxiMl9odyAqaHcpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGRsYjJfaHdfZW5hYmxlX3NwYXJzZV9kaXJfY3FfbW9kZSgpIC0gZW5hYmxl IHNwYXJzZSBtb2RlIGZvciBkaXJlY3RlZA0KPiBwb3J0cy4NCj4gPiArICogQGh3OiBkbGIyX2h3 IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICoNCj4gPiArICogVGhpcyBm dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBjb25maWd1cmluZyBzY2hlZHVsaW5nIGRv bWFpbnMuDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGRsYjJfaHdfZW5hYmxlX3NwYXJzZV9kaXJfY3Ff bW9kZShzdHJ1Y3QgZGxiMl9odyAqaHcpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJf aHdfc2V0X3FlX2FyYml0ZXJfd2VpZ2h0cygpIC0gcHJvZ3JhbSBRRSBhcmJpdGVyIHdlaWdodHMN Cj4gPiArICogQGh3OiBkbGIyX2h3IGhhbmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4g PiArICogQHdlaWdodDogOC1lbnRyeSBhcnJheSBvZiBhcmJpdGVyIHdlaWdodHMuDQo+ID4gKyAq DQo+ID4gKyAqIHdlaWdodFtOXSBwcm9ncmFtcyBwcmlvcml0eSBOJ3Mgd2VpZ2h0LiBJbiBjYXNl cyB3aGVyZSB0aGUgOCBwcmlvcml0aWVzIGFyZQ0KPiA+ICsgKiByZWR1Y2VkIHRvIDQgYmlucywg dGhlIG1hcHBpbmcgaXM6DQo+ID4gKyAqIC0gd2VpZ2h0WzFdIHByb2dyYW1zIGJpbiAwDQo+ID4g KyAqIC0gd2VpZ2h0WzNdIHByb2dyYW1zIGJpbiAxDQo+ID4gKyAqIC0gd2VpZ2h0WzVdIHByb2dy YW1zIGJpbiAyDQo+ID4gKyAqIC0gd2VpZ2h0WzddIHByb2dyYW1zIGJpbiAzDQo+ID4gKyAqLw0K PiA+ICt2b2lkIGRsYjJfaHdfc2V0X3FlX2FyYml0ZXJfd2VpZ2h0cyhzdHJ1Y3QgZGxiMl9odyAq aHcsIHU4IHdlaWdodFs4XSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19zZXRf cWlkX2FyYml0ZXJfd2VpZ2h0cygpIC0gcHJvZ3JhbSBRSUQgYXJiaXRlciB3ZWlnaHRzDQo+ID4g KyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAq IEB3ZWlnaHQ6IDgtZW50cnkgYXJyYXkgb2YgYXJiaXRlciB3ZWlnaHRzLg0KPiA+ICsgKg0KPiA+ ICsgKiB3ZWlnaHRbTl0gcHJvZ3JhbXMgcHJpb3JpdHkgTidzIHdlaWdodC4gSW4gY2FzZXMgd2hl cmUgdGhlIDggcHJpb3JpdGllcyBhcmUNCj4gPiArICogcmVkdWNlZCB0byA0IGJpbnMsIHRoZSBt YXBwaW5nIGlzOg0KPiA+ICsgKiAtIHdlaWdodFsxXSBwcm9ncmFtcyBiaW4gMA0KPiA+ICsgKiAt IHdlaWdodFszXSBwcm9ncmFtcyBiaW4gMQ0KPiA+ICsgKiAtIHdlaWdodFs1XSBwcm9ncmFtcyBi aW4gMg0KPiA+ICsgKiAtIHdlaWdodFs3XSBwcm9ncmFtcyBiaW4gMw0KPiA+ICsgKi8NCj4gPiAr dm9pZCBkbGIyX2h3X3NldF9xaWRfYXJiaXRlcl93ZWlnaHRzKHN0cnVjdCBkbGIyX2h3ICpodywg dTggd2VpZ2h0WzhdKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBkbGIyX2h3X2xkYl9jcV9p bnRlcnJ1cHRfZW5hYmxlZCgpIC0gQ2hlY2sgaWYgdGhlIGludGVycnVwdCBpcyBlbmFibGVkDQo+ ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9yIGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4g KyAqIEBwb3J0X2lkOiBwaHlzaWNhbCBsb2FkLWJhbGFuY2VkIHBvcnQgSUQuDQo+ID4gKyAqDQo+ ID4gKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aGV0aGVyIHRoZSBsb2FkLWJhbGFuY2VkIENR IGludGVycnVwdCBpcyBlbmFibGVkLg0KPiA+ICsgKi8NCj4gPiAraW50IGRsYjJfaHdfbGRiX2Nx X2ludGVycnVwdF9lbmFibGVkKHN0cnVjdCBkbGIyX2h3ICpodywgaW50IHBvcnRfaWQpOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIGRsYjJfaHdfbGRiX2NxX2ludGVycnVwdF9zZXRfbW9kZSgp IC0gUHJvZ3JhbSB0aGUgQ1EgaW50ZXJydXB0IG1vZGUNCj4gPiArICogQGh3OiBkbGIyX2h3IGhh bmRsZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZS4NCj4gPiArICogQHBvcnRfaWQ6IHBoeXNpY2Fs IGxvYWQtYmFsYW5jZWQgcG9ydCBJRC4NCj4gPiArICogQG1vZGU6IGludGVycnVwdCB0eXBlIChE TEIyX0NRX0lTUl9NT0RFX3tESVMsIE1TSSwgTVNJWCwgQURJfSkNCj4gPiArICoNCj4gPiArICog VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBkaXNhYmxlIChNT0RFX0RJUykgYW5kIHJlLWVu YWJsZSB0aGUNCj4gPiArICogbG9hZC1iYWxhbmNlZCBDUSdzIGludGVycnVwdC4gSXQgc2hvdWxk IG9ubHkgYmUgY2FsbGVkIGFmdGVyIHRoZSBpbnRlcnJ1cHQNCj4gPiArICogaGFzIGJlZW4gY29u ZmlndXJlZCB3aXRoIGRsYjJfY29uZmlndXJlX2xkYl9jcV9pbnRlcnJ1cHQoKS4NCj4gPiArICov DQo+ID4gK3ZvaWQgZGxiMl9od19sZGJfY3FfaW50ZXJydXB0X3NldF9tb2RlKHN0cnVjdCBkbGIy X2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg cG9ydF9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bW9kZSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZGxiMl9od19kaXJfY3FfaW50ZXJydXB0 X2VuYWJsZWQoKSAtIENoZWNrIGlmIHRoZSBpbnRlcnJ1cHQgaXMgZW5hYmxlZA0KPiA+ICsgKiBA aHc6IGRsYjJfaHcgaGFuZGxlIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLg0KPiA+ICsgKiBAcG9y dF9pZDogcGh5c2ljYWwgbG9hZC1iYWxhbmNlZCBwb3J0IElELg0KPiA+ICsgKg0KPiA+ICsgKiBU aGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgbG9hZC1iYWxhbmNlZCBDUSBpbnRlcnJ1 cHQgaXMgZW5hYmxlZC4NCj4gPiArICovDQo+ID4gK2ludCBkbGIyX2h3X2Rpcl9jcV9pbnRlcnJ1 cHRfZW5hYmxlZChzdHJ1Y3QgZGxiMl9odyAqaHcsIGludCBwb3J0X2lkKTsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBkbGIyX2h3X2Rpcl9jcV9pbnRlcnJ1cHRfc2V0X21vZGUoKSAtIFByb2dy YW0gdGhlIENRIGludGVycnVwdCBtb2RlDQo+ID4gKyAqIEBodzogZGxiMl9odyBoYW5kbGUgZm9y IGEgcGFydGljdWxhciBkZXZpY2UuDQo+ID4gKyAqIEBwb3J0X2lkOiBwaHlzaWNhbCBkaXJlY3Rl ZCBwb3J0IElELg0KPiA+ICsgKiBAbW9kZTogaW50ZXJydXB0IHR5cGUgKERMQjJfQ1FfSVNSX01P REVfe0RJUywgTVNJLCBNU0lYLCBBREl9KQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgKE1PREVfRElTKSBhbmQgcmUtZW5hYmxlIHRoZQ0KPiA+ ICsgKiBkaXJlY3RlZCBDUSdzIGludGVycnVwdC4gSXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFm dGVyIHRoZSBpbnRlcnJ1cHQNCj4gPiArICogaGFzIGJlZW4gY29uZmlndXJlZCB3aXRoIGRsYjJf Y29uZmlndXJlX2Rpcl9jcV9pbnRlcnJ1cHQoKS4NCj4gPiArICovDQo+ID4gK3ZvaWQgZGxiMl9o d19kaXJfY3FfaW50ZXJydXB0X3NldF9tb2RlKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydF9pZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSk7DQo+ID4gKw0KPiA+ ICsjZW5kaWYgLyogX19ETEIyX1JFU09VUkNFX0ggKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ldmVudC9kbGIyL3BmL2RsYjJfbWFpbi5jDQo+IGIvZHJpdmVycy9ldmVudC9kbGIyL3BmL2Rs YjJfbWFpbi5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5i ZDg1OTBkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZXZlbnQvZGxiMi9w Zi9kbGIyX21haW4uYw0KPiA+IEBAIC0wLDAgKzEsNjE1IEBADQo+ID4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMTYtMjAy MCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxzdGRp bnQuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+ DQo+ID4gKyNpbmNsdWRlIDxlcnJuby5oPg0KPiA+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+DQo+ID4g KyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0K PiA+ICsNCj4gPiArI2luY2x1ZGUgImJhc2UvZGxiMl9yZXNvdXJjZS5oIg0KPiA+ICsjaW5jbHVk ZSAiYmFzZS9kbGIyX29zZGVwLmgiDQo+ID4gKyNpbmNsdWRlICJiYXNlL2RsYjJfcmVncy5oIg0K PiA+ICsjaW5jbHVkZSAiZGxiMl9tYWluLmgiDQo+ID4gKyNpbmNsdWRlICIuLi9kbGIyX3VzZXIu aCINCj4gPiArI2luY2x1ZGUgIi4uL2RsYjJfcHJpdi5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vZGxi Ml9pZmFjZS5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vZGxiMl9pbmxpbmVfZm5zLmgiDQo+ID4gKw0K PiA+ICsjZGVmaW5lIFBGX0lEX1pFUk8gMCAgIC8qIFBGIE9OTFkhICovDQo+ID4gKyNkZWZpbmUg Tk9fT1dORVJfVkYgMCAgLyogUEYgT05MWSEgKi8NCj4gPiArI2RlZmluZSBOT1RfVkZfUkVRIGZh bHNlIC8qIFBGIE9OTFkhICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfUENJX0NGR19TUEFD RV9TSVpFIDI1Ng0KPiA+ICsjZGVmaW5lIERMQjJfUENJX0NBUF9QT0lOVEVSIDB4MzQNCj4gPiAr I2RlZmluZSBETEIyX1BDSV9DQVBfTkVYVChoZHIpICgoKGhkcikgPj4gOCkgJiAweEZDKQ0KPiA+ ICsjZGVmaW5lIERMQjJfUENJX0NBUF9JRChoZHIpICgoaGRyKSAmIDB4RkYpDQo+ID4gKyNkZWZp bmUgRExCMl9QQ0lfRVhUX0NBUF9ORVhUKGhkcikgKCgoaGRyKSA+PiAyMCkgJiAweEZGQykNCj4g PiArI2RlZmluZSBETEIyX1BDSV9FWFRfQ0FQX0lEKGhkcikgKChoZHIpICYgMHhGRkZGKQ0KPiA+ ICsjZGVmaW5lIERMQjJfUENJX0VYVF9DQVBfSURfRVJSIDENCj4gPiArI2RlZmluZSBETEIyX1BD SV9FUlJfVU5DT1JfTUFTSyA4DQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfRVJSX1VOQ19VTlNVUCAg MHgwMDEwMDAwMA0KPiA+ICsNCj4gPiArI2RlZmluZSBETEIyX1BDSV9FWFBfREVWQ1RMIDgNCj4g PiArI2RlZmluZSBETEIyX1BDSV9MTktDVEwgMTYNCj4gPiArI2RlZmluZSBETEIyX1BDSV9TTFRD VEwgMjQNCj4gPiArI2RlZmluZSBETEIyX1BDSV9SVENUTCAyOA0KPiA+ICsjZGVmaW5lIERMQjJf UENJX0VYUF9ERVZDVEwyIDQwDQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfTE5LQ1RMMiA0OA0KPiA+ ICsjZGVmaW5lIERMQjJfUENJX1NMVENUTDIgNTYNCj4gPiArI2RlZmluZSBETEIyX1BDSV9DTUQg NA0KPiA+ICsjZGVmaW5lIERMQjJfUENJX1hfQ01EIDINCj4gPiArI2RlZmluZSBETEIyX1BDSV9F WFBfREVWU1RBIDEwDQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfRVhQX0RFVlNUQV9UUlBORCAweDIw DQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfRVhQX0RFVkNUTF9CQ1JfRkxSIDB4ODAwMA0KPiA+ICsN Cj4gPiArI2RlZmluZSBETEIyX1BDSV9DQVBfSURfRVhQICAgICAgIDB4MTANCj4gPiArI2RlZmlu ZSBETEIyX1BDSV9DQVBfSURfTVNJWCAgICAgIDB4MTENCj4gPiArI2RlZmluZSBETEIyX1BDSV9F WFRfQ0FQX0lEX1BBUyAgIDB4MUINCj4gPiArI2RlZmluZSBETEIyX1BDSV9FWFRfQ0FQX0lEX1BS SSAgIDB4MTMNCj4gPiArI2RlZmluZSBETEIyX1BDSV9FWFRfQ0FQX0lEX0FDUyAgIDB4RA0KPiA+ ICsNCj4gPiArI2RlZmluZSBETEIyX1BDSV9QUklfQ1RSTF9FTkFCTEUgICAgICAgICAweDENCj4g PiArI2RlZmluZSBETEIyX1BDSV9QUklfQUxMT0NfUkVRICAgICAgICAgICAweEMNCj4gPiArI2Rl ZmluZSBETEIyX1BDSV9QUklfQ1RSTCAgICAgICAgICAgICAgICAweDQNCj4gPiArI2RlZmluZSBE TEIyX1BDSV9NU0lYX0ZMQUdTICAgICAgICAgICAgICAweDINCj4gPiArI2RlZmluZSBETEIyX1BD SV9NU0lYX0ZMQUdTX0VOQUJMRSAgICAgICAweDgwMDANCj4gPiArI2RlZmluZSBETEIyX1BDSV9N U0lYX0ZMQUdTX01BU0tBTEwgICAgICAweDQwMDANCj4gPiArI2RlZmluZSBETEIyX1BDSV9FUlJf Uk9PVF9TVEFUVVMgICAgICAgICAweDMwDQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfRVJSX0NPUl9T VEFUVVMgICAgICAgICAgMHgxMA0KPiA+ICsjZGVmaW5lIERMQjJfUENJX0VSUl9VTkNPUl9TVEFU VVMgICAgICAgIDB4NA0KPiA+ICsjZGVmaW5lIERMQjJfUENJX0NPTU1BTkRfSU5UWF9ESVNBQkxF ICAgIDB4NDAwDQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfQUNTX0NBUCAgICAgICAgICAgICAgICAg MHg0DQo+ID4gKyNkZWZpbmUgRExCMl9QQ0lfQUNTX0NUUkwgICAgICAgICAgICAgICAgMHg2DQo+ ID4gKyNkZWZpbmUgRExCMl9QQ0lfQUNTX1NWICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gKyNk ZWZpbmUgRExCMl9QQ0lfQUNTX1JSICAgICAgICAgICAgICAgICAgMHg0DQo+ID4gKyNkZWZpbmUg RExCMl9QQ0lfQUNTX0NSICAgICAgICAgICAgICAgICAgMHg4DQo+ID4gKyNkZWZpbmUgRExCMl9Q Q0lfQUNTX1VGICAgICAgICAgICAgICAgICAgMHgxMA0KPiA+ICsjZGVmaW5lIERMQjJfUENJX0FD U19FQyAgICAgICAgICAgICAgICAgIDB4MjANCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiAr ZGxiMl9wY2lfZmluZF9leHRfY2FwYWJpbGl0eShzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBkZXYs IHVpbnQzMl90IGlkKQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1aW50MzJfdCBoZHI7DQo+ID4gKyAg ICAgICBzaXplX3Qgc3o7DQo+ID4gKyAgICAgICBpbnQgcG9zOw0KPiA+ICsNCj4gPiArICAgICAg IHBvcyA9IERMQjJfUENJX0NGR19TUEFDRV9TSVpFOw0KPiA+ICsgICAgICAgc3ogPSBzaXplb2Yo aGRyKTsNCj4gPiArDQo+ID4gKyAgICAgICB3aGlsZSAocG9zID4gMHhGRikgew0KPiA+ICsgICAg ICAgICAgICAgICBpZiAocnRlX3BjaV9yZWFkX2NvbmZpZyhwZGV2LCAmaGRyLCBzeiwgcG9zKSAh PSAoaW50KXN6KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gPiAr DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChETEIyX1BDSV9FWFRfQ0FQX0lEKGhkcikgPT0gaWQp DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvczsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICAgIHBvcyA9IERMQjJfUENJX0VYVF9DQVBfTkVYVChoZHIpOw0KPiA+ICsgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAtMTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBkbGIyX3BjaV9maW5kX2NhcGFiaWxpdHkoc3RydWN0IHJ0ZV9wY2lfZGV2aWNl ICpwZGV2LCB1aW50MzJfdCBpZCkNCj4gPiArew0KPiA+ICsgICAgICAgdWludDhfdCBwb3M7DQo+ ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgICAgdWludDE2X3QgaGRyOw0KPiA+ICsNCj4g PiArICAgICAgIHJldCA9IHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJnBvcywgMSwgRExCMl9Q Q0lfQ0FQX1BPSU5URVIpOw0KPiA+ICsgICAgICAgcG9zICY9IDB4RkM7DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKHJldCAhPSAxKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4g Kw0KPiA+ICsgICAgICAgd2hpbGUgKHBvcyA+IDB4M0YpIHsNCj4gPiArICAgICAgICAgICAgICAg cmV0ID0gcnRlX3BjaV9yZWFkX2NvbmZpZyhwZGV2LCAmaGRyLCAyLCBwb3MpOw0KPiA+ICsgICAg ICAgICAgICAgICBpZiAocmV0ICE9IDIpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC0xOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaWYgKERMQjJfUENJX0NBUF9JRCho ZHIpID09IGlkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3M7DQo+ID4g Kw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoRExCMl9QQ0lfQ0FQX0lEKGhkcikgPT0gMHhGRikN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICBwb3MgPSBETEIyX1BDSV9DQVBfTkVYVChoZHIpOw0KPiA+ICsgICAgICAgfQ0K PiA+ICsNCj4gPiArICAgICAgIHJldHVybiAtMTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludA0KPiA+ICtkbGIyX3BmX2luaXRfZHJpdmVyX3N0YXRlKHN0cnVjdCBkbGIyX2RldiAqZGxi Ml9kZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCBpOw0KPiA+ICsNCj4gPiArICAgICAgIGlm IChydGVfY3B1X2dldF9mbGFnX2VuYWJsZWQoUlRFX0NQVUZMQUdfTU9WRElSNjRCKSkNCj4gPiAr ICAgICAgICAgICAgICAgZGxiMl9kZXYtPmVucXVldWVfZm91ciA9IGRsYjJfbW92ZGlyNjRiOw0K PiA+ICsgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICBkbGIyX2Rldi0+ZW5xdWV1ZV9m b3VyID0gZGxiMl9tb3ZudGRxOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIEluaXRpYWxpemUgc29m dHdhcmUgc3RhdGUgKi8NCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBETEIyX01BWF9OVU1f TERCX1BPUlRTOyBpKyspDQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJfbGlzdF9pbml0X2hlYWQo JmRsYjJfZGV2LT5sZGJfcG9ydF9wYWdlc1tpXS5saXN0KTsNCj4gPiArDQo+ID4gKyAgICAgICBm b3IgKGkgPSAwOyBpIDwgRExCMl9NQVhfTlVNX0RJUl9QT1JUUzsgaSsrKQ0KPiA+ICsgICAgICAg ICAgICAgICBkbGIyX2xpc3RfaW5pdF9oZWFkKCZkbGIyX2Rldi0+ZGlyX3BvcnRfcGFnZXNbaV0u bGlzdCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcnRlX3NwaW5sb2NrX2luaXQoJmRsYjJfZGV2LT5y ZXNvdXJjZV9tdXRleCk7DQo+ID4gKyAgICAgICBydGVfc3BpbmxvY2tfaW5pdCgmZGxiMl9kZXYt Pm1lYXN1cmVtZW50X2xvY2spOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBkbGIyX3BmX2VuYWJsZV9wbShzdHJ1Y3QgZGxiMl9k ZXYgKmRsYjJfZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBkbGIyX2Nscl9wbWNzcl9kaXNhYmxl KCZkbGIyX2Rldi0+aHcpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERMQjJfUkVBRFlf UkVUUllfTElNSVQgMTAwMA0KPiA+ICtzdGF0aWMgaW50IGRsYjJfcGZfd2FpdF9mb3JfZGV2aWNl X3JlYWR5KHN0cnVjdCBkbGIyX2RldiAqZGxiMl9kZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIHUz MiByZXRyaWVzID0gMDsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBBbGxvdyBhdCBsZWFzdCAxcyBm b3IgdGhlIGRldmljZSB0byBiZWNvbWUgYWN0aXZlIGFmdGVyIHBvd2VyLW9uICovDQo+ID4gKyAg ICAgICBmb3IgKHJldHJpZXMgPSAwOyByZXRyaWVzIDwgRExCMl9SRUFEWV9SRVRSWV9MSU1JVDsg cmV0cmllcysrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHVuaW9uIGRsYjJfY2ZnX21zdHJfY2Zn X2RpYWdub3N0aWNfaWRsZV9zdGF0dXMgaWRsZTsNCj4gPiArICAgICAgICAgICAgICAgdW5pb24g ZGxiMl9jZmdfbXN0cl9jZmdfcG1fc3RhdHVzIHBtX3N0Ow0KPiA+ICsgICAgICAgICAgICAgICB1 MzIgYWRkcjsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGFkZHIgPSBETEIyX0NGR19NU1RS X0NGR19QTV9TVEFUVVM7DQo+ID4gKyAgICAgICAgICAgICAgIHBtX3N0LnZhbCA9IERMQjJfQ1NS X1JEKCZkbGIyX2Rldi0+aHcsIGFkZHIpOw0KPiA+ICsgICAgICAgICAgICAgICBhZGRyID0gRExC Ml9DRkdfTVNUUl9DRkdfRElBR05PU1RJQ19JRExFX1NUQVRVUzsNCj4gPiArICAgICAgICAgICAg ICAgaWRsZS52YWwgPSBETEIyX0NTUl9SRCgmZGxiMl9kZXYtPmh3LCBhZGRyKTsNCj4gPiArICAg ICAgICAgICAgICAgaWYgKHBtX3N0LmZpZWxkLnBtc20gPT0gMSAmJiBpZGxlLmZpZWxkLmRsYl9m dW5jX2lkbGUgPT0gMSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAr DQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9kZWxheV9tcygxKTsNCj4gPiArICAgICAgIH07DQo+ ID4gKw0KPiA+ICsgICAgICAgaWYgKHJldHJpZXMgPT0gRExCMl9SRUFEWV9SRVRSWV9MSU1JVCkg ew0KPiA+ICsgICAgICAgICAgICAgICBwcmludGYoIlslcygpXSB3YWl0IGZvciBkZXZpY2UgcmVh ZHkgdGltZWQgb3V0XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOw0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBkbGIyX2RldiAq DQo+ID4gK2RsYjJfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgZGxiMl9kZXYgKmRsYjJfZGV2Ow0KPiA+ICsgICAgICAgaW50IHJl dCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgRExCMl9JTkZPKGRsYjJfZGV2LCAicHJvYmVcbiIp Ow0KPiA+ICsNCj4gPiArICAgICAgIGRsYjJfZGV2ID0gcnRlX21hbGxvYygiRExCMl9QRiIsIHNp emVvZihzdHJ1Y3QgZGxiMl9kZXYpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJURV9DQUNIRV9MSU5FX1NJWkUpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChkbGIyX2RldiA9 PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07DQo+ID4gKyAgICAg ICAgICAgICAgIGdvdG8gZGxiMl9kZXZfbWFsbG9jX2ZhaWw7DQo+ID4gKyAgICAgICB9DQo+ID4g Kw0KPiA+ICsgICAgICAgLyogUENJIEJ1cyBkcml2ZXIgaGFzIGFscmVhZHkgbWFwcGVkIGJhciBz cGFjZSBpbnRvIHByb2Nlc3MuDQo+ID4gKyAgICAgICAgKiBTYXZlIG9mZiBvdXIgSU8gcmVnaXN0 ZXIgYW5kIEZVTkMgYWRkcmVzc2VzLg0KPiA+ICsgICAgICAgICovDQo+ID4gKw0KPiA+ICsgICAg ICAgLyogQkFSIDAgKi8NCj4gPiArICAgICAgIGlmIChwZGV2LT5tZW1fcmVzb3VyY2VbMF0uYWRk ciA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAgICAgIERMQjJfRVJSKGRsYjJfZGV2LCAicHJv YmU6IEJBUiAwIGFkZHIgKGNzcl9rdmEpIGlzIE5VTExcbiIpOw0KPiA+ICsgICAgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIHBjaV9tbWFwX2JhZF9h ZGRyOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgZGxiMl9kZXYtPmh3LmZ1bmNfa3ZhID0g KHZvaWQgKikodWludHB0cl90KXBkZXYtDQo+ID5tZW1fcmVzb3VyY2VbMF0uYWRkcjsNCj4gPiAr ICAgICAgIGRsYjJfZGV2LT5ody5mdW5jX3BoeXNfYWRkciA9IHBkZXYtPm1lbV9yZXNvdXJjZVsw XS5waHlzX2FkZHI7DQo+ID4gKw0KPiA+ICsgICAgICAgRExCMl9JTkZPKGRsYjJfZGV2LCAiRExC MiBGVU5DIFZBPSVwLCBQQT0lcCwgbGVuPSVwXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICh2 b2lkICopZGxiMl9kZXYtPmh3LmZ1bmNfa3ZhLA0KPiA+ICsgICAgICAgICAgICAgICAgICh2b2lk ICopZGxiMl9kZXYtPmh3LmZ1bmNfcGh5c19hZGRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICh2 b2lkICopKHBkZXYtPm1lbV9yZXNvdXJjZVswXS5sZW4pKTsNCj4gPiArDQo+ID4gKyAgICAgICAv KiBCQVIgMiAqLw0KPiA+ICsgICAgICAgaWYgKHBkZXYtPm1lbV9yZXNvdXJjZVsyXS5hZGRyID09 IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgICAgRExCMl9FUlIoZGxiMl9kZXYsICJwcm9iZTog QkFSIDIgYWRkciAoZnVuY19rdmEpIGlzIE5VTExcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBy ZXQgPSAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIHBjaV9tbWFwX2JhZF9hZGRy Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgZGxiMl9kZXYtPmh3LmNzcl9rdmEgPSAodm9p ZCAqKSh1aW50cHRyX3QpcGRldi0+bWVtX3Jlc291cmNlWzJdLmFkZHI7DQo+ID4gKyAgICAgICBk bGIyX2Rldi0+aHcuY3NyX3BoeXNfYWRkciA9IHBkZXYtPm1lbV9yZXNvdXJjZVsyXS5waHlzX2Fk ZHI7DQo+ID4gKw0KPiA+ICsgICAgICAgRExCMl9JTkZPKGRsYjJfZGV2LCAiRExCMiBDU1IgVkE9 JXAsIFBBPSVwLCBsZW49JXBcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgKHZvaWQgKilkbGIy X2Rldi0+aHcuY3NyX2t2YSwNCj4gPiArICAgICAgICAgICAgICAgICAodm9pZCAqKWRsYjJfZGV2 LT5ody5jc3JfcGh5c19hZGRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICh2b2lkICopKHBkZXYt Pm1lbV9yZXNvdXJjZVsyXS5sZW4pKTsNCj4gPiArDQo+ID4gKyAgICAgICBkbGIyX2Rldi0+cGRl diA9IHBkZXY7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogUE0gZW5hYmxlIG11c3QgYmUgZG9uZSBi ZWZvcmUgYW55IG90aGVyIE1NSU8gYWNjZXNzZXMsIGFuZCB0aGlzDQo+ID4gKyAgICAgICAgKiBz ZXR0aW5nIGlzIHBlcnNpc3RlbnQgYWNyb3NzIGRldmljZSByZXNldC4NCj4gPiArICAgICAgICAq Lw0KPiA+ICsgICAgICAgZGxiMl9wZl9lbmFibGVfcG0oZGxiMl9kZXYpOw0KPiA+ICsNCj4gPiAr ICAgICAgIHJldCA9IGRsYjJfcGZfd2FpdF9mb3JfZGV2aWNlX3JlYWR5KGRsYjJfZGV2KTsNCj4g PiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gd2FpdF9mb3JfZGV2 aWNlX3JlYWR5X2ZhaWw7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0gZGxiMl9wZl9yZXNldChk bGIyX2Rldik7DQo+ID4gKyAgICAgICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgICBnb3Rv IGRsYjJfcmVzZXRfZmFpbDsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBkbGIyX3BmX2luaXRf ZHJpdmVyX3N0YXRlKGRsYjJfZGV2KTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAg ICAgICAgICAgIGdvdG8gaW5pdF9kcml2ZXJfc3RhdGVfZmFpbDsNCj4gPiArDQo+ID4gKyAgICAg ICByZXQgPSBkbGIyX3Jlc291cmNlX2luaXQoJmRsYjJfZGV2LT5odyk7DQo+ID4gKyAgICAgICBp ZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIHJlc291cmNlX2luaXRfZmFpbDsNCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gZGxiMl9kZXY7DQo+ID4gKw0KPiA+ICtyZXNvdXJjZV9p bml0X2ZhaWw6DQo+ID4gKyAgICAgICBkbGIyX3Jlc291cmNlX2ZyZWUoJmRsYjJfZGV2LT5odyk7 DQo+ID4gK2luaXRfZHJpdmVyX3N0YXRlX2ZhaWw6DQo+ID4gK2RsYjJfcmVzZXRfZmFpbDoNCj4g PiArcGNpX21tYXBfYmFkX2FkZHI6DQo+ID4gK3dhaXRfZm9yX2RldmljZV9yZWFkeV9mYWlsOg0K PiA+ICsgICAgICAgcnRlX2ZyZWUoZGxiMl9kZXYpOw0KPiA+ICtkbGIyX2Rldl9tYWxsb2NfZmFp bDoNCj4gPiArICAgICAgIHJ0ZV9lcnJubyA9IHJldDsNCj4gPiArICAgICAgIHJldHVybiBOVUxM Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQNCj4gPiArZGxiMl9wZl9yZXNldChzdHJ1Y3QgZGxi Ml9kZXYgKmRsYjJfZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4gPiAr ICAgICAgIGludCBpID0gMDsNCj4gPiArICAgICAgIHVpbnQzMl90IGR3b3JkWzE2XTsNCj4gPiAr ICAgICAgIHVpbnQxNl90IGNtZDsNCj4gPiArICAgICAgIG9mZl90IG9mZjsNCj4gPiArDQo+ID4g KyAgICAgICB1aW50MTZfdCBkZXZfY3RsX3dvcmQ7DQo+ID4gKyAgICAgICB1aW50MTZfdCBkZXZf Y3RsMl93b3JkOw0KPiA+ICsgICAgICAgdWludDE2X3QgbG5rX3dvcmQ7DQo+ID4gKyAgICAgICB1 aW50MTZfdCBsbmtfd29yZDI7DQo+ID4gKyAgICAgICB1aW50MTZfdCBzbHRfd29yZDsNCj4gPiAr ICAgICAgIHVpbnQxNl90IHNsdF93b3JkMjsNCj4gPiArICAgICAgIHVpbnQxNl90IHJ0X2N0bF93 b3JkOw0KPiA+ICsgICAgICAgdWludDMyX3QgcHJpX3JlcXNfZHdvcmQ7DQo+ID4gKyAgICAgICB1 aW50MTZfdCBwcmlfY3RybF93b3JkOw0KPiA+ICsNCj4gPiArICAgICAgIGludCBwY2llX2NhcF9v ZmZzZXQ7DQo+ID4gKyAgICAgICBpbnQgcHJpX2NhcF9vZmZzZXQ7DQo+ID4gKyAgICAgICBpbnQg bXNpeF9jYXBfb2Zmc2V0Ow0KPiA+ICsgICAgICAgaW50IGVycl9jYXBfb2Zmc2V0Ow0KPiA+ICsg ICAgICAgaW50IGFjc19jYXBfb2Zmc2V0Ow0KPiA+ICsgICAgICAgaW50IHdhaXRfY291bnQ7DQo+ ID4gKw0KPiA+ICsgICAgICAgdWludDE2X3QgZGV2c3RhX2J1c3lfd29yZDsNCj4gPiArICAgICAg IHVpbnQxNl90IGRldmN0bF93b3JkOw0KPiA+ICsNCj4gPiArICAgICAgIHN0cnVjdCBydGVfcGNp X2RldmljZSAqcGRldiA9IGRsYjJfZGV2LT5wZGV2Ow0KPiA+ICsNCj4gPiArICAgICAgIC8qIFNh dmUgUENJIGNvbmZpZyBzdGF0ZSAqLw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkg PCAxNjsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29uZmln KHBkZXYsICZkd29yZFtpXSwgNCwgaSAqIDQpICE9IDQpDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBwY2ll X2NhcF9vZmZzZXQgPSBkbGIyX3BjaV9maW5kX2NhcGFiaWxpdHkocGRldiwNCj4gRExCMl9QQ0lf Q0FQX0lEX0VYUCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHBjaWVfY2FwX29mZnNldCA8IDAp IHsNCj4gPiArICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIGZpbmQgdGhl IHBjaWUgY2FwYWJpbGl0eVxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHBjaWVfY2FwX29mZnNldDsNCj4gPiArICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBvZmYgPSBwY2llX2NhcF9vZmZzZXQgKyBETEIyX1BD SV9FWFBfREVWQ1RMOw0KPiA+ICsgICAgICAgaWYgKHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwg JmRldl9jdGxfd29yZCwgMiwgb2ZmKSAhPSAyKQ0KPiA+ICsgICAgICAgICAgICAgICBkZXZfY3Rs X3dvcmQgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgIG9mZiA9IHBjaWVfY2FwX29mZnNldCArIERM QjJfUENJX0xOS0NUTDsNCj4gPiArICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29uZmlnKHBkZXYs ICZsbmtfd29yZCwgMiwgb2ZmKSAhPSAyKQ0KPiA+ICsgICAgICAgICAgICAgICBsbmtfd29yZCA9 IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgb2ZmID0gcGNpZV9jYXBfb2Zmc2V0ICsgRExCMl9QQ0lf U0xUQ1RMOw0KPiA+ICsgICAgICAgaWYgKHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJnNsdF93 b3JkLCAyLCBvZmYpICE9IDIpDQo+ID4gKyAgICAgICAgICAgICAgIHNsdF93b3JkID0gMDsNCj4g PiArDQo+ID4gKyAgICAgICBvZmYgPSBwY2llX2NhcF9vZmZzZXQgKyBETEIyX1BDSV9SVENUTDsN Cj4gPiArICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29uZmlnKHBkZXYsICZydF9jdGxfd29yZCwg Miwgb2ZmKSAhPSAyKQ0KPiA+ICsgICAgICAgICAgICAgICBydF9jdGxfd29yZCA9IDA7DQo+ID4g Kw0KPiA+ICsgICAgICAgb2ZmID0gcGNpZV9jYXBfb2Zmc2V0ICsgRExCMl9QQ0lfRVhQX0RFVkNU TDI7DQo+ID4gKyAgICAgICBpZiAocnRlX3BjaV9yZWFkX2NvbmZpZyhwZGV2LCAmZGV2X2N0bDJf d29yZCwgMiwgb2ZmKSAhPSAyKQ0KPiA+ICsgICAgICAgICAgICAgICBkZXZfY3RsMl93b3JkID0g MDsNCj4gPiArDQo+ID4gKyAgICAgICBvZmYgPSBwY2llX2NhcF9vZmZzZXQgKyBETEIyX1BDSV9M TktDVEwyOw0KPiA+ICsgICAgICAgaWYgKHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJmxua193 b3JkMiwgMiwgb2ZmKSAhPSAyKQ0KPiA+ICsgICAgICAgICAgICAgICBsbmtfd29yZDIgPSAwOw0K PiA+ICsNCj4gPiArICAgICAgIG9mZiA9IHBjaWVfY2FwX29mZnNldCArIERMQjJfUENJX1NMVENU TDI7DQo+ID4gKyAgICAgICBpZiAocnRlX3BjaV9yZWFkX2NvbmZpZyhwZGV2LCAmc2x0X3dvcmQy LCAyLCBvZmYpICE9IDIpDQo+ID4gKyAgICAgICAgICAgICAgIHNsdF93b3JkMiA9IDA7DQo+ID4g Kw0KPiA+ICsgICAgICAgb2ZmID0gRExCMl9QQ0lfRVhUX0NBUF9JRF9QUkk7DQo+ID4gKyAgICAg ICBwcmlfY2FwX29mZnNldCA9IGRsYjJfcGNpX2ZpbmRfZXh0X2NhcGFiaWxpdHkocGRldiwgb2Zm KTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAocHJpX2NhcF9vZmZzZXQgPj0gMCkgew0KPiA+ICsg ICAgICAgICAgICAgICBvZmYgPSBwcmlfY2FwX29mZnNldCArIERMQjJfUENJX1BSSV9BTExPQ19S RVE7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29uZmlnKHBkZXYsICZw cmlfcmVxc19kd29yZCwgNCwgb2ZmKSAhPSA0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IHByaV9yZXFzX2R3b3JkID0gMDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAv KiBjbGVhciB0aGUgUENJIGNvbW1hbmQgcmVnaXN0ZXIgYmVmb3JlIGlzc3VpbmcgdGhlIEZMUiAq Lw0KPiA+ICsNCj4gPiArICAgICAgIG9mZiA9IERMQjJfUENJX0NNRDsNCj4gPiArICAgICAgIGNt ZCA9IDA7DQo+ID4gKyAgICAgICBpZiAocnRlX3BjaV93cml0ZV9jb25maWcocGRldiwgJmNtZCwg Miwgb2ZmKSAhPSAyKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHByaW50ZigiWyVzKCldIGZhaWxl ZCB0byB3cml0ZSB0aGUgcGNpIGNvbW1hbmRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXyk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgICAgLyogaXNzdWUgdGhlIEZMUiAqLw0KPiA+ICsgICAgICAg Zm9yICh3YWl0X2NvdW50ID0gMDsgd2FpdF9jb3VudCA8IDQ7IHdhaXRfY291bnQrKykgew0KPiA+ ICsgICAgICAgICAgICAgICBpbnQgc2xlZXBfdGltZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAg ICAgIG9mZiA9IHBjaWVfY2FwX29mZnNldCArIERMQjJfUENJX0VYUF9ERVZTVEE7DQo+ID4gKyAg ICAgICAgICAgICAgIHJldCA9IHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJmRldnN0YV9idXN5 X3dvcmQsIDIsIG9mZik7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMikgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiWyVzKCldIGZhaWxlZCB0byByZWFkIHRo ZSBwY2kgZGV2aWNlIHN0YXR1c1xuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGlmICghKGRl dnN0YV9idXN5X3dvcmQgJiBETEIyX1BDSV9FWFBfREVWU1RBX1RSUE5EKSkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHNsZWVw X3RpbWUgPSAoMSA8PCAod2FpdF9jb3VudCkpICogMTAwOw0KPiA+ICsgICAgICAgICAgICAgICBy dGVfZGVsYXlfbXMoc2xlZXBfdGltZSk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgaWYgKHdhaXRfY291bnQgPT0gNCkgew0KPiA+ICsgICAgICAgICAgICAgICBwcmludGYoIlsl cygpXSB3YWl0IGZvciBwY2kgcGVuZGluZyB0cmFuc2FjdGlvbnMgdGltZWQgb3V0XG4iLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOw0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gLTE7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgb2ZmID0gcGNpZV9j YXBfb2Zmc2V0ICsgRExCMl9QQ0lfRVhQX0RFVkNUTDsNCj4gPiArICAgICAgIHJldCA9IHJ0ZV9w Y2lfcmVhZF9jb25maWcocGRldiwgJmRldmN0bF93b3JkLCAyLCBvZmYpOw0KPiA+ICsgICAgICAg aWYgKHJldCAhPSAyKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHByaW50ZigiWyVzKCldIGZhaWxl ZCB0byByZWFkIHRoZSBwY2llIGRldmljZSBjb250cm9sXG4iLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgX19mdW5jX18pOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGRldmN0bF93b3JkIHw9IERMQjJfUENJX0VY UF9ERVZDVExfQkNSX0ZMUjsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBydGVfcGNpX3dyaXRl X2NvbmZpZyhwZGV2LCAmZGV2Y3RsX3dvcmQsIDIsIG9mZik7DQo+ID4gKyAgICAgICBpZiAocmV0 ICE9IDIpIHsNCj4gPiArICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIHdy aXRlIHRoZSBwY2llIGRldmljZSBjb250cm9sXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18pOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJ0ZV9kZWxheV9tcygxMDApOw0KPiA+ICsNCj4gPiAr ICAgICAgIC8qIFJlc3RvcmUgUENJIGNvbmZpZyBzdGF0ZSAqLw0KPiA+ICsNCj4gPiArICAgICAg IGlmIChwY2llX2NhcF9vZmZzZXQgPj0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICBvZmYgPSBw Y2llX2NhcF9vZmZzZXQgKyBETEIyX1BDSV9FWFBfREVWQ1RMOw0KPiA+ICsgICAgICAgICAgICAg ICByZXQgPSBydGVfcGNpX3dyaXRlX2NvbmZpZyhwZGV2LCAmZGV2X2N0bF93b3JkLCAyLCBvZmYp Ow0KPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0ICE9IDIpIHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBwcmludGYoIlslcygpXSBmYWlsZWQgdG8gd3JpdGUgdGhlIHBjaWUgZGV2aWNl IGNvbnRyb2wgYXQgb2Zmc2V0DQo+ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19mdW5jX18sIChpbnQpb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAg ICAgICAgICBvZmYgPSBwY2llX2NhcF9vZmZzZXQgKyBETEIyX1BDSV9MTktDVEw7DQo+ID4gKyAg ICAgICAgICAgICAgIHJldCA9IHJ0ZV9wY2lfd3JpdGVfY29uZmlnKHBkZXYsICZsbmtfd29yZCwg Miwgb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCAhPSAyKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIHdyaXRlIHRoZSBwY2ll IGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQNCj4gJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludClvZmYpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICAgIG9mZiA9IHBjaWVfY2FwX29mZnNldCArIERMQjJfUENJX1NMVENUTDsNCj4g PiArICAgICAgICAgICAgICAgcmV0ID0gcnRlX3BjaV93cml0ZV9jb25maWcocGRldiwgJnNsdF93 b3JkLCAyLCBvZmYpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0ICE9IDIpIHsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlslcygpXSBmYWlsZWQgdG8gd3JpdGUgdGhl IHBjaWUgY29uZmlnIHNwYWNlIGF0IG9mZnNldA0KPiAlZFxuIiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAoaW50KW9mZik7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgICAgICAgICAgb2ZmID0gcGNpZV9jYXBfb2Zmc2V0ICsgRExCMl9QQ0lfUlRDVEw7 DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHJ0ZV9wY2lfd3JpdGVfY29uZmlnKHBkZXYsICZy dF9jdGxfd29yZCwgMiwgb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCAhPSAyKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIHdy aXRlIHRoZSBwY2llIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQNCj4gJWRcbiIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludClvZmYpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICAgICAgICAgIG9mZiA9IHBjaWVfY2FwX29mZnNldCArIERMQjJfUENJ X0VYUF9ERVZDVEwyOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBydGVfcGNpX3dyaXRlX2Nv bmZpZyhwZGV2LCAmZGV2X2N0bDJfd29yZCwgMiwgb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAg aWYgKHJldCAhPSAyKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMo KV0gZmFpbGVkIHRvIHdyaXRlIHRoZSBwY2llIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQNCj4gJWRc biIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludClv ZmYpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAg ICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIG9mZiA9IHBjaWVfY2FwX29m ZnNldCArIERMQjJfUENJX0xOS0NUTDI7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHJ0ZV9w Y2lfd3JpdGVfY29uZmlnKHBkZXYsICZsbmtfd29yZDIsIDIsIG9mZik7DQo+ID4gKyAgICAgICAg ICAgICAgIGlmIChyZXQgIT0gMikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaW50 ZigiWyVzKCldIGZhaWxlZCB0byB3cml0ZSB0aGUgcGNpZSBjb25maWcgc3BhY2UgYXQgb2Zmc2V0 DQo+ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18s IChpbnQpb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBvZmYgPSBwY2ll X2NhcF9vZmZzZXQgKyBETEIyX1BDSV9TTFRDVEwyOw0KPiA+ICsgICAgICAgICAgICAgICByZXQg PSBydGVfcGNpX3dyaXRlX2NvbmZpZyhwZGV2LCAmc2x0X3dvcmQyLCAyLCBvZmYpOw0KPiA+ICsg ICAgICAgICAgICAgICBpZiAocmV0ICE9IDIpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBwcmludGYoIlslcygpXSBmYWlsZWQgdG8gd3JpdGUgdGhlIHBjaWUgY29uZmlnIHNwYWNlIGF0 IG9mZnNldA0KPiAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCAoaW50KW9mZik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgIGlmIChwcmlfY2FwX29mZnNldCA+PSAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHByaV9j dHJsX3dvcmQgPSBETEIyX1BDSV9QUklfQ1RSTF9FTkFCTEU7DQo+ID4gKw0KPiA+ICsgICAgICAg ICAgICAgICBvZmYgPSBwcmlfY2FwX29mZnNldCArIERMQjJfUENJX1BSSV9BTExPQ19SRVE7DQo+ ID4gKyAgICAgICAgICAgICAgIHJldCA9IHJ0ZV9wY2lfd3JpdGVfY29uZmlnKHBkZXYsICZwcmlf cmVxc19kd29yZCwgNCwgb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCAhPSA0KSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIHdy aXRlIHRoZSBwY2llIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQNCj4gJWRcbiIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludClvZmYpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICAgICAgICAgIG9mZiA9IHByaV9jYXBfb2Zmc2V0ICsgRExCMl9QQ0lf UFJJX0NUUkw7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHJ0ZV9wY2lfd3JpdGVfY29uZmln KHBkZXYsICZwcmlfY3RybF93b3JkLCAyLCBvZmYpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAo cmV0ICE9IDIpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlslcygpXSBm YWlsZWQgdG8gd3JpdGUgdGhlIHBjaWUgY29uZmlnIHNwYWNlIGF0IG9mZnNldA0KPiAlZFxuIiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAoaW50KW9mZik7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgICAg ICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIG9mZiA9IERMQjJfUENJ X0VYVF9DQVBfSURfRVJSOw0KPiA+ICsgICAgICAgZXJyX2NhcF9vZmZzZXQgPSBkbGIyX3BjaV9m aW5kX2V4dF9jYXBhYmlsaXR5KHBkZXYsIG9mZik7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGVy cl9jYXBfb2Zmc2V0ID49IDApIHsNCj4gPiArICAgICAgICAgICAgICAgdWludDMyX3QgdG1wOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgICAgb2ZmID0gZXJyX2NhcF9vZmZzZXQgKyBETEIyX1BD SV9FUlJfUk9PVF9TVEFUVVM7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChydGVfcGNpX3JlYWRf Y29uZmlnKHBkZXYsICZ0bXAsIDQsIG9mZikgIT0gNCkNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICB0bXAgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0gcnRlX3BjaV93 cml0ZV9jb25maWcocGRldiwgJnRtcCwgNCwgb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgaWYg KHJldCAhPSA0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0g ZmFpbGVkIHRvIHdyaXRlIHRoZSBwY2llIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQNCj4gJWRcbiIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludClvZmYp Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAg ICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIG9mZiA9IGVycl9jYXBfb2Zmc2V0 ICsgRExCMl9QQ0lfRVJSX0NPUl9TVEFUVVM7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChydGVf cGNpX3JlYWRfY29uZmlnKHBkZXYsICZ0bXAsIDQsIG9mZikgIT0gNCkNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICB0bXAgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0g cnRlX3BjaV93cml0ZV9jb25maWcocGRldiwgJnRtcCwgNCwgb2ZmKTsNCj4gPiArICAgICAgICAg ICAgICAgaWYgKHJldCAhPSA0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRm KCJbJXMoKV0gZmFpbGVkIHRvIHdyaXRlIHRoZSBwY2llIGNvbmZpZyBzcGFjZSBhdCBvZmZzZXQN Cj4gJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywg KGludClvZmYpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4g KyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIG9mZiA9IGVycl9j YXBfb2Zmc2V0ICsgRExCMl9QQ0lfRVJSX1VOQ09SX1NUQVRVUzsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJnRtcCwgNCwgb2ZmKSAhPSA0KQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgICByZXQgPSBydGVfcGNpX3dyaXRlX2NvbmZpZyhwZGV2LCAmdG1wLCA0LCBvZmYpOw0KPiA+ ICsgICAgICAgICAgICAgICBpZiAocmV0ICE9IDQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBwcmludGYoIlslcygpXSBmYWlsZWQgdG8gd3JpdGUgdGhlIHBjaWUgY29uZmlnIHNwYWNl IGF0IG9mZnNldA0KPiAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fLCAoaW50KW9mZik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICAgIGZvciAoaSA9IDE2OyBpID4gMDsgaS0tKSB7DQo+ID4gKyAgICAgICAgICAgICAgIG9m ZiA9IChpIC0gMSkgKiA0Ow0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBydGVfcGNpX3dyaXRl X2NvbmZpZyhwZGV2LCAmZHdvcmRbaSAtIDFdLCA0LCBvZmYpOw0KPiA+ICsgICAgICAgICAgICAg ICBpZiAocmV0ICE9IDQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlsl cygpXSBmYWlsZWQgdG8gd3JpdGUgdGhlIHBjaWUgY29uZmlnIHNwYWNlIGF0IG9mZnNldA0KPiAl ZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAoaW50 KW9mZik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAg ICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIG9mZiA9IERM QjJfUENJX0NNRDsNCj4gPiArICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29uZmlnKHBkZXYsICZj bWQsIDIsIG9mZikgPT0gMikgew0KPiA+ICsgICAgICAgICAgICAgICBjbWQgJj0gfkRMQjJfUENJ X0NPTU1BTkRfSU5UWF9ESVNBQkxFOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAocnRlX3BjaV93 cml0ZV9jb25maWcocGRldiwgJmNtZCwgMiwgb2ZmKSAhPSAyKSB7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIHdyaXRlIHRoZSBwY2kgY29tbWFu ZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAgICAgICAg IH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBtc2l4X2NhcF9vZmZzZXQgPSBk bGIyX3BjaV9maW5kX2NhcGFiaWxpdHkocGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETEIyX1BDSV9DQVBfSURfTVNJWCk7DQo+ID4g KyAgICAgICBpZiAobXNpeF9jYXBfb2Zmc2V0ID49IDApIHsNCj4gPiArICAgICAgICAgICAgICAg b2ZmID0gbXNpeF9jYXBfb2Zmc2V0ICsgRExCMl9QQ0lfTVNJWF9GTEFHUzsNCj4gPiArICAgICAg ICAgICAgICAgaWYgKHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJmNtZCwgMiwgb2ZmKSA9PSAy KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY21kIHw9IERMQjJfUENJX01TSVhfRkxB R1NfRU5BQkxFOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNtZCB8PSBETEIyX1BDSV9N U0lYX0ZMQUdTX01BU0tBTEw7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ0ZV9w Y2lfd3JpdGVfY29uZmlnKHBkZXYsICZjbWQsIDIsIG9mZikgIT0gMikgew0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbJXMoKV0gZmFpbGVkIHRvIHdyaXRlIG1z aXggZmxhZ3NcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg X19mdW5jX18pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIG9mZiA9IG1zaXhfY2FwX29mZnNldCArIERMQjJf UENJX01TSVhfRkxBR1M7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29u ZmlnKHBkZXYsICZjbWQsIDIsIG9mZikgPT0gMikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGNtZCAmPSB+RExCMl9QQ0lfTVNJWF9GTEFHU19NQVNLQUxMOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGlmIChydGVfcGNpX3dyaXRlX2NvbmZpZyhwZGV2LCAmY21kLCAyLCBvZmYp ICE9IDIpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiWyVz KCldIGZhaWxlZCB0byB3cml0ZSBtc2l4IGZsYWdzXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0K PiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAg b2ZmID0gRExCMl9QQ0lfRVhUX0NBUF9JRF9BQ1M7DQo+ID4gKyAgICAgICBhY3NfY2FwX29mZnNl dCA9IGRsYjJfcGNpX2ZpbmRfZXh0X2NhcGFiaWxpdHkocGRldiwgb2ZmKTsNCj4gPiArDQo+ID4g KyAgICAgICBpZiAoYWNzX2NhcF9vZmZzZXQgPj0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICB1 aW50MTZfdCBhY3NfY2FwLCBhY3NfY3RybCwgYWNzX21hc2s7DQo+ID4gKyAgICAgICAgICAgICAg IG9mZiA9IGFjc19jYXBfb2Zmc2V0ICsgRExCMl9QQ0lfQUNTX0NBUDsNCj4gPiArICAgICAgICAg ICAgICAgaWYgKHJ0ZV9wY2lfcmVhZF9jb25maWcocGRldiwgJmFjc19jYXAsIDIsIG9mZikgIT0g MikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBhY3NfY2FwID0gMDsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICAgIG9mZiA9IGFjc19jYXBfb2Zmc2V0ICsgRExCMl9QQ0lfQUNTX0NUUkw7 DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChydGVfcGNpX3JlYWRfY29uZmlnKHBkZXYsICZhY3Nf Y3RybCwgMiwgb2ZmKSAhPSAyKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGFjc19jdHJs ID0gMDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGFjc19tYXNrID0gRExCMl9QQ0lfQUNT X1NWIHwgRExCMl9QQ0lfQUNTX1JSOw0KPiA+ICsgICAgICAgICAgICAgICBhY3NfbWFzayB8PSAo RExCMl9QQ0lfQUNTX0NSIHwgRExCMl9QQ0lfQUNTX1VGKTsNCj4gPiArICAgICAgICAgICAgICAg YWNzX2N0cmwgfD0gKGFjc19jYXAgJiBhY3NfbWFzayk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgICByZXQgPSBydGVfcGNpX3dyaXRlX2NvbmZpZyhwZGV2LCAmYWNzX2N0cmwsIDIsIG9mZik7 DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMikgew0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHByaW50ZigiWyVzKCldIGZhaWxlZCB0byB3cml0ZSB0aGUgcGNpZSBjb25maWcg c3BhY2UgYXQgb2Zmc2V0DQo+ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19mdW5jX18sIChpbnQpb2ZmKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgICBvZmYgPSBhY3NfY2FwX29mZnNldCArIERMQjJfUENJX0FDU19DVFJMOw0KPiA+ICsgICAg ICAgICAgICAgICBpZiAocnRlX3BjaV9yZWFkX2NvbmZpZyhwZGV2LCAmYWNzX2N0cmwsIDIsIG9m ZikgIT0gMikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBhY3NfY3RybCA9IDA7DQo+ID4g Kw0KPiA+ICsgICAgICAgICAgICAgICBhY3NfbWFzayA9IERMQjJfUENJX0FDU19SUiB8IERMQjJf UENJX0FDU19DUjsNCj4gPiArICAgICAgICAgICAgICAgYWNzX21hc2sgfD0gRExCMl9QQ0lfQUNT X0VDOw0KPiA+ICsgICAgICAgICAgICAgICBhY3NfY3RybCAmPSB+YWNzX21hc2s7DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICBvZmYgPSBhY3NfY2FwX29mZnNldCArIERMQjJfUENJX0FDU19D VFJMOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBydGVfcGNpX3dyaXRlX2NvbmZpZyhwZGV2 LCAmYWNzX2N0cmwsIDIsIG9mZik7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMikg ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiWyVzKCldIGZhaWxlZCB0byB3 cml0ZSB0aGUgcGNpZSBjb25maWcgc3BhY2UgYXQgb2Zmc2V0DQo+ICVkXG4iLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIChpbnQpb2ZmKTsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ldmVudC9kbGIyL3BmL2RsYjJfbWFpbi5oDQo+IGIvZHJpdmVy cy9ldmVudC9kbGIyL3BmL2RsYjJfbWFpbi5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwLi5lYzk2ZjExDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2Ry aXZlcnMvZXZlbnQvZGxiMi9wZi9kbGIyX21haW4uaA0KPiA+IEBAIC0wLDAgKzEsMTA2IEBADQo+ ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29w eXJpZ2h0KGMpIDIwMTYtMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX19ETEIyX01BSU5fSA0KPiA+ICsjZGVmaW5lIF9fRExCMl9NQUlOX0gNCj4g PiArDQo+ID4gKyNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9sb2cu aD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX3Bj aS5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2J1c19wY2kuaD4NCj4gPiArDQo+ID4gKyNpZm5kZWYg UEFHRV9TSVpFDQo+ID4gKyNkZWZpbmUgUEFHRV9TSVpFIChzeXNjb25mKF9TQ19QQUdFU0laRSkp DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImJhc2UvZGxiMl9od190eXBlcy5o Ig0KPiA+ICsjaW5jbHVkZSAiLi4vZGxiMl91c2VyLmgiDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERM QjJfREVGQVVMVF9VTlJFR0lTVEVSX1RJTUVPVVRfUyA1DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxi Ml9kZXY7DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGxiMl9wb3J0X21lbW9yeSB7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgZGxiMl9saXN0X2hlYWQgbGlzdDsNCj4gPiArICAgICAgIHZvaWQgKmNxX2Jhc2U7 DQo+ID4gKyAgICAgICBib29sIHZhbGlkOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGRs YjJfZGV2IHsNCj4gPiArICAgICAgIHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGRldjsNCj4gPiAr ICAgICAgIHN0cnVjdCBkbGIyX2h3IGh3Ow0KPiA+ICsgICAgICAgLyogc3RydWN0IGxpc3RfaGVh ZCBsaXN0OyAqLw0KPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGxiMl9kZXZpY2U7DQo+ID4g KyAgICAgICBzdHJ1Y3QgZGxiMl9wb3J0X21lbW9yeQ0KPiBsZGJfcG9ydF9wYWdlc1tETEIyX01B WF9OVU1fTERCX1BPUlRTXTsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX3BvcnRfbWVtb3J5DQo+ IGRpcl9wb3J0X3BhZ2VzW0RMQjJfTUFYX05VTV9ESVJfUE9SVFNdOw0KPiA+ICsgICAgICAgLyog VGhlIGVucXVldWVfZm91ciBmdW5jdGlvbiBlbnF1ZXVlcyBmb3VyIEhDV3MgKG9uZSBjYWNoZS1s aW5lDQo+IHdvcnRoKQ0KPiA+ICsgICAgICAgICogdG8gdGhlIERMQjIsIHVzaW5nIHdoaWNoZXZl ciBtZWNoYW5pc20gaXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybQ0KPiA+ICsgICAgICAgICog b24gd2hpY2ggdGhpcyBkcml2ZXIgaXMgcnVubmluZy4NCj4gPiArICAgICAgICAqLw0KPiA+ICsg ICAgICAgdm9pZCAoKmVucXVldWVfZm91cikodm9pZCAqcWU0LCB2b2lkICpwcF9hZGRyKTsNCj4g PiArDQo+ID4gKyAgICAgICBib29sIGRvbWFpbl9yZXNldF9mYWlsZWQ7DQo+ID4gKyAgICAgICAv KiBUaGUgcmVzb3VyY2UgbXV0ZXggc2VyaWFsaXplcyBhY2Nlc3MgdG8gZHJpdmVyIGRhdGEgc3Ry dWN0dXJlcyBhbmQNCj4gPiArICAgICAgICAqIGhhcmR3YXJlIHJlZ2lzdGVycy4NCj4gPiArICAg ICAgICAqLw0KPiA+ICsgICAgICAgcnRlX3NwaW5sb2NrX3QgcmVzb3VyY2VfbXV0ZXg7DQo+ID4g KyAgICAgICBydGVfc3BpbmxvY2tfdCBtZWFzdXJlbWVudF9sb2NrOw0KPiA+ICsgICAgICAgYm9v bCB3b3JrZXJfbGF1bmNoZWQ7DQo+ID4gKyAgICAgICB1OCByZXZpc2lvbjsNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0cnVjdCBkbGIyX2RldiAqZGxiMl9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kZXZp Y2UgKnBkZXYpOw0KPiA+ICsNCj4gPiAraW50IGRsYjJfcGZfcmVzZXQoc3RydWN0IGRsYjJfZGV2 ICpkbGIyX2Rldik7DQo+ID4gK2ludCBkbGIyX3BmX2NyZWF0ZV9zY2hlZF9kb21haW4oc3RydWN0 IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRsYjJfY3JlYXRlX3NjaGVkX2RvbWFpbl9hcmdzICphcmdzLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwKTsNCj4gPiAr aW50IGRsYjJfcGZfY3JlYXRlX2xkYl9xdWV1ZShzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZG9tYWluX2lkLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY3JlYXRlX2xkYl9xdWV1ZV9hcmdzICphcmdz LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3Bv bnNlICpyZXNwKTsNCj4gPiAraW50IGRsYjJfcGZfY3JlYXRlX2Rpcl9xdWV1ZShzdHJ1Y3QgZGxi Ml9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZG9tYWluX2lk LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY3JlYXRlX2Rp cl9xdWV1ZV9hcmdzICphcmdzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwKTsNCj4gPiAraW50IGRsYjJfcGZfY3JlYXRlX2xk Yl9wb3J0KHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRsYjJfY3JlYXRlX2xkYl9wb3J0X2FyZ3MgKmFyZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnRwdHJfdCBjcV9kbWFfYmFzZSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwKTsNCj4gPiAraW50IGRsYjJf cGZfY3JlYXRlX2Rpcl9wb3J0KHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRsYjJfY3JlYXRlX2Rpcl9wb3J0X2FyZ3MgKmFyZ3MsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBjcV9kbWFfYmFzZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwKTsNCj4g PiAraW50IGRsYjJfcGZfc3RhcnRfZG9tYWluKHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRsYjJfc3RhcnRfZG9tYWluX2FyZ3MgKmFyZ3MsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2NtZF9yZXNwb25zZSAqcmVzcCk7DQo+ID4g K2ludCBkbGIyX3BmX2VuYWJsZV9sZGJfcG9ydChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBkb21haW5faWQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkbGIyX2VuYWJsZV9sZGJfcG9ydF9hcmdzICphcmdzLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9jbWRfcmVzcG9uc2Ug KnJlc3ApOw0KPiA+ICtpbnQgZGxiMl9wZl9kaXNhYmxlX2xkYl9wb3J0KHN0cnVjdCBkbGIyX2h3 ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBkb21haW5faWQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9kaXNhYmxlX2xkYl9w b3J0X2FyZ3MgKmFyZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZGxiMl9jbWRfcmVzcG9uc2UgKnJlc3ApOw0KPiA+ICtpbnQgZGxiMl9wZl9lbmFibGVfZGlyX3Bv cnQoc3RydWN0IGRsYjJfaHcgKmh3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1 MzIgZG9tYWluX2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGxi Ml9lbmFibGVfZGlyX3BvcnRfYXJncyAqYXJncywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwKTsNCj4gPiAraW50IGRsYjJfcGZf ZGlzYWJsZV9kaXJfcG9ydChzdHJ1Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1MzIgZG9tYWluX2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRsYjJfZGlzYWJsZV9kaXJfcG9ydF9hcmdzICphcmdzLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRsYjJfY21kX3Jlc3BvbnNlICpyZXNwKTsN Cj4gPiAraW50IGRsYjJfcGZfcmVzZXRfZG9tYWluKHN0cnVjdCBkbGIyX2h3ICpodywgdTMyIGRv bWFpbl9pZCk7DQo+ID4gK2ludCBkbGIyX3BmX2xkYl9wb3J0X293bmVkX2J5X2RvbWFpbihzdHJ1 Y3QgZGxiMl9odyAqaHcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHUzMiBkb21haW5faWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHUzMiBwb3J0X2lkKTsNCj4gPiAraW50IGRsYjJfcGZfZGlyX3BvcnRfb3duZWRfYnlfZG9tYWlu KHN0cnVjdCBkbGIyX2h3ICpodywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdTMyIGRvbWFpbl9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdTMyIHBvcnRfaWQpOw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9fRExCMl9NQUlOX0gg Ki8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ldmVudC9kbGIyL3BmL2RsYjJfcGYuYyBiL2Ry aXZlcnMvZXZlbnQvZGxiMi9wZi9kbGIyX3BmLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+IGluZGV4IDAwMDAwMDAuLjdkNjQzMDkNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIv ZHJpdmVycy9ldmVudC9kbGIyL3BmL2RsYjJfcGYuYw0KPiA+IEBAIC0wLDAgKzEsMjQ0IEBADQo+ ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29w eXJpZ2h0KGMpIDIwMTYtMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4gPiAr I2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gKyNpbmNsdWRlIDxzeXMvbW1hbi5oPg0KPiA+ICsjaW5j bHVkZSA8c3lzL2ZjbnRsLmg+DQo+ID4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPg0KPiA+ICsjaW5j bHVkZSA8ZXJybm8uaD4NCj4gPiArI2luY2x1ZGUgPGFzc2VydC5oPg0KPiA+ICsjaW5jbHVkZSA8 dW5pc3RkLmg+DQo+ID4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9k ZWJ1Zy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2xvZy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Rl di5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2RldmFyZ3MuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9t YnVmLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfcmluZy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Vy cm5vLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfa3ZhcmdzLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVf bWFsbG9jLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfY3ljbGVzLmg+DQo+ID4gKyNpbmNsdWRlIDxy dGVfaW8uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9wY2kuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9i dXNfcGNpLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZXZlbnRkZXYuaD4NCj4gPiArI2luY2x1ZGUg PHJ0ZV9ldmVudGRldl9wbWQuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9ldmVudGRldl9wbWRfcGNp Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfc3Ry aW5nX2Zucy5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIi4uL2RsYjJfcHJpdi5oIg0KPiA+ICsj aW5jbHVkZSAiLi4vZGxiMl9pZmFjZS5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vZGxiMl9pbmxpbmVf Zm5zLmgiDQo+ID4gKyNpbmNsdWRlICJkbGIyX21haW4uaCINCj4gPiArI2luY2x1ZGUgImJhc2Uv ZGxiMl9od190eXBlcy5oIg0KPiA+ICsjaW5jbHVkZSAiYmFzZS9kbGIyX29zZGVwLmgiDQo+ID4g KyNpbmNsdWRlICJiYXNlL2RsYjJfcmVzb3VyY2UuaCINCj4gPiArDQo+ID4gK3N0YXRpYyBjb25z dCBjaGFyICpldmVudF9kbGIyX3BmX25hbWUgPQ0KPiBSVEVfU1RSKEVWREVWX0RMQjJfTkFNRV9Q TUQpOw0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiArZGxiMl9wZl9sb3dfbGV2ZWxfaW9f aW5pdCh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgaTsNCj4gPiArICAgICAgIC8qIEFk ZHJlc3NlcyB3aWxsIGJlIGluaXRpYWxpemVkIGF0IHBvcnQgY3JlYXRlICovDQo+ID4gKyAgICAg ICBmb3IgKGkgPSAwOyBpIDwgRExCMl9NQVhfTlVNX1BPUlRTOyBpKyspIHsNCj4gPiArICAgICAg ICAgICAgICAgLyogRmlyc3QgZGlyZWN0ZWQgcG9ydHMgKi8NCj4gPiArICAgICAgICAgICAgICAg ZGxiMl9wb3J0W2ldW0RMQjJfRElSX1BPUlRdLnBwX2FkZHIgPSBOVUxMOw0KPiA+ICsgICAgICAg ICAgICAgICBkbGIyX3BvcnRbaV1bRExCMl9ESVJfUE9SVF0uY3FfYmFzZSA9IE5VTEw7DQo+ID4g KyAgICAgICAgICAgICAgIGRsYjJfcG9ydFtpXVtETEIyX0RJUl9QT1JUXS5tbWFwZWQgPSB0cnVl Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgLyogTm93IGxvYWQgYmFsYW5jZWQgcG9ydHMg Ki8NCj4gPiArICAgICAgICAgICAgICAgZGxiMl9wb3J0W2ldW0RMQjJfTERCX1BPUlRdLnBwX2Fk ZHIgPSBOVUxMOw0KPiA+ICsgICAgICAgICAgICAgICBkbGIyX3BvcnRbaV1bRExCMl9MREJfUE9S VF0uY3FfYmFzZSA9IE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgIGRsYjJfcG9ydFtpXVtETEIy X0xEQl9QT1JUXS5tbWFwZWQgPSB0cnVlOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50DQo+ID4gK2RsYjJfcGZfb3BlbihzdHJ1Y3QgZGxiMl9od19kZXYgKmhh bmRsZSwgY29uc3QgY2hhciAqbmFtZSkNCj4gPiArew0KPiA+ICsgICAgICAgUlRFX1NFVF9VU0VE KGhhbmRsZSk7DQo+ID4gKyAgICAgICBSVEVfU0VUX1VTRUQobmFtZSk7DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArZGxi Ml9wZl9nZXRfZGV2aWNlX3ZlcnNpb24oc3RydWN0IGRsYjJfaHdfZGV2ICpoYW5kbGUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcmV2aXNpb24pDQo+ID4gK3sNCj4g PiArICAgICAgIHN0cnVjdCBkbGIyX2RldiAqZGxiMl9kZXYgPSAoc3RydWN0IGRsYjJfZGV2ICop aGFuZGxlLT5wZl9kZXY7DQo+ID4gKw0KPiA+ICsgICAgICAgKnJldmlzaW9uID0gZGxiMl9kZXYt PnJldmlzaW9uOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtkbGIyX3BmX2hhcmR3YXJlX2luaXQoc3RydWN0IGRsYjJf aHdfZGV2ICpoYW5kbGUpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2RldiAqZGxi Ml9kZXYgPSAoc3RydWN0IGRsYjJfZGV2ICopaGFuZGxlLT5wZl9kZXY7DQo+ID4gKw0KPiA+ICsg ICAgICAgZGxiMl9od19lbmFibGVfc3BhcnNlX2xkYl9jcV9tb2RlKCZkbGIyX2Rldi0+aHcpOw0K PiA+ICsgICAgICAgZGxiMl9od19lbmFibGVfc3BhcnNlX2Rpcl9jcV9tb2RlKCZkbGIyX2Rldi0+ aHcpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2RsYjJfcGZfZ2V0X251 bV9yZXNvdXJjZXMoc3RydWN0IGRsYjJfaHdfZGV2ICpoYW5kbGUsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZGxiMl9nZXRfbnVtX3Jlc291cmNlc19hcmdzICpyc3JjcykN Cj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGRsYjJfZGV2ICpkbGIyX2RldiA9IChzdHJ1Y3Qg ZGxiMl9kZXYgKiloYW5kbGUtPnBmX2RldjsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gZGxi Ml9od19nZXRfbnVtX3Jlc291cmNlcygmZGxiMl9kZXYtPmh3LCByc3JjcywgZmFsc2UsIDApOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2RsYjJfcGZfZ2V0X2NxX3BvbGxf bW9kZShzdHJ1Y3QgZGxiMl9od19kZXYgKmhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBkbGIyX2NxX3BvbGxfbW9kZXMgKm1vZGUpDQo+ID4gK3sNCj4gPiArICAgICAg IFJURV9TRVRfVVNFRChoYW5kbGUpOw0KPiA+ICsNCj4gPiArICAgICAgICptb2RlID0gRExCMl9D UV9QT0xMX01PREVfU1BBUlNFOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtkbGIyX3BmX2lmYWNlX2ZuX3B0cnNfaW5p dCh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBkbGIyX2lmYWNlX2xvd19sZXZlbF9pb19pbml0 ID0gZGxiMl9wZl9sb3dfbGV2ZWxfaW9faW5pdDsNCj4gPiArICAgICAgIGRsYjJfaWZhY2Vfb3Bl biA9IGRsYjJfcGZfb3BlbjsNCj4gPiArICAgICAgIGRsYjJfaWZhY2VfZ2V0X2RldmljZV92ZXJz aW9uID0gZGxiMl9wZl9nZXRfZGV2aWNlX3ZlcnNpb247DQo+ID4gKyAgICAgICBkbGIyX2lmYWNl X2hhcmR3YXJlX2luaXQgPSBkbGIyX3BmX2hhcmR3YXJlX2luaXQ7DQo+ID4gKyAgICAgICBkbGIy X2lmYWNlX2dldF9udW1fcmVzb3VyY2VzID0gZGxiMl9wZl9nZXRfbnVtX3Jlc291cmNlczsNCj4g PiArICAgICAgIGRsYjJfaWZhY2VfZ2V0X2NxX3BvbGxfbW9kZSA9IGRsYjJfcGZfZ2V0X2NxX3Bv bGxfbW9kZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogUENJIERFViBIT09LUyAqLw0KPiA+ICtz dGF0aWMgaW50DQo+ID4gK2RsYjJfZXZlbnRkZXZfcGNpX2luaXQoc3RydWN0IHJ0ZV9ldmVudGRl diAqZXZlbnRkZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCByZXQgPSAwOw0KPiA+ICsgICAg ICAgc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2Ow0KPiA+ICsgICAgICAgc3RydWN0IGRs YjJfZGV2YXJncyBkbGIyX2FyZ3MgPSB7DQo+ID4gKyAgICAgICAgICAgICAgIC5zb2NrZXRfaWQg PSBydGVfc29ja2V0X2lkKCksDQo+ID4gKyAgICAgICAgICAgICAgIC5tYXhfbnVtX2V2ZW50cyA9 IERMQjJfTUFYX05VTV9MREJfQ1JFRElUUywNCj4gPiArICAgICAgICAgICAgICAgLm51bV9kaXJf Y3JlZGl0c19vdmVycmlkZSA9IC0xLA0KPiA+ICsgICAgICAgICAgICAgICAucWlkX2RlcHRoX3Ro cmVzaG9sZHMgPSB7IHswfSB9LA0KPiA+ICsgICAgICAgICAgICAgICAuY29zX2lkID0gRExCMl9D T1NfREVGQVVMVA0KPiA+ICsgICAgICAgfTsNCj4gPiArICAgICAgIHN0cnVjdCBkbGIyX2V2ZW50 ZGV2ICpkbGIyOw0KPiA+ICsNCj4gPiArICAgICAgIERMQjJfTE9HX0RCRygiRW50ZXIgd2l0aCBk ZXZfaWQ9JWQgc29ja2V0X2lkPSVkIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICBldmVudGRl di0+ZGF0YS0+ZGV2X2lkLCBldmVudGRldi0+ZGF0YS0+c29ja2V0X2lkKTsNCj4gPiArDQo+ID4g KyAgICAgICBkbGIyX3BmX2lmYWNlX2ZuX3B0cnNfaW5pdCgpOw0KPiA+ICsNCj4gPiArICAgICAg IHBjaV9kZXYgPSBSVEVfREVWX1RPX1BDSShldmVudGRldi0+ZGV2KTsNCj4gPiArDQo+ID4gKyAg ICAgICBpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSA9PSBSVEVfUFJPQ19QUklNQVJZKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIGRsYjIgPSBkbGIyX3BtZF9wcml2KGV2ZW50ZGV2KTsgLyogcnRl X3ptYWxsb2Nfc29ja2V0IG1lbSAqLw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgLyogUHJv YmUgdGhlIERMQjIgUEYgbGF5ZXIgKi8NCj4gPiArICAgICAgICAgICAgICAgZGxiMi0+cW1faW5z dGFuY2UucGZfZGV2ID0gZGxiMl9wcm9iZShwY2lfZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICAgIGlmIChkbGIyLT5xbV9pbnN0YW5jZS5wZl9kZXYgPT0gTlVMTCkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIERMQjJfTE9HX0VSUigiRExCMiBQRiBQcm9iZSBmYWlsZWQgd2l0 aCBlcnJvciAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cnRlX2Vycm5vKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtcnRlX2Vycm5v Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZGxiMl9wcm9iZV9mYWlsZWQ7DQo+ ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIC8qIFdlcmUg d2UgaW52b2tlZCB3aXRoIHJ1bnRpbWUgcGFyYW1ldGVycz8gKi8NCj4gPiArICAgICAgICAgICAg ICAgaWYgKHBjaV9kZXYtPmRldmljZS5kZXZhcmdzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gZGxiMl9wYXJzZV9wYXJhbXMocGNpX2Rldi0+ZGV2aWNlLmRldmFyZ3MtPmFy Z3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGNpX2Rldi0+ZGV2aWNlLmRldmFyZ3MtPm5hbWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRsYjJfYXJncyk7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRExCMl9MT0dfRVJSKCJQRlBNRCBmYWlsZWQgdG8gcGFyc2UgYXJncyByZXQ9JWQsDQo+IGVy cm5vPSVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldCwgcnRlX2Vycm5vKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gZGxiMl9wcm9iZV9mYWlsZWQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0K PiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBk bGIyX3ByaW1hcnlfZXZlbnRkZXZfcHJvYmUoZXZlbnRkZXYsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9kbGIyX3BmX25hbWUsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGxi Ml9hcmdzKTsNCj4gPiArICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9 IGRsYjJfc2Vjb25kYXJ5X2V2ZW50ZGV2X3Byb2JlKGV2ZW50ZGV2LA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9kbGIyX3BmX25h bWUpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAg ICAgICAgZ290byBkbGIyX3Byb2JlX2ZhaWxlZDsNCj4gPiArDQo+ID4gKyAgICAgICBETEIyX0xP R19JTkZPKCJETEIyIFBGIFByb2JlIHN1Y2Nlc3NcbiIpOw0KPiA+ICsNCj4gPiArICAgICAgIHJl dHVybiAwOw0KPiA+ICsNCj4gPiArZGxiMl9wcm9iZV9mYWlsZWQ6DQo+ID4gKw0KPiA+ICsgICAg ICAgRExCMl9MT0dfSU5GTygiRExCMiBQRiBQcm9iZSBmYWlsZWQsIHJldD0lZFxuIiwgcmV0KTsN Cj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjZGVm aW5lIEVWRU5UREVWX0lOVEVMX1ZFTkRPUl9JRCAweDgwODYNCj4gPiArDQo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcnRlX3BjaV9pZCBwY2lfaWRfZGxiMl9tYXBbXSA9IHsNCj4gPiArICAgICAg IHsNCj4gPiArICAgICAgICAgICAgICAgUlRFX1BDSV9ERVZJQ0UoRVZFTlRERVZfSU5URUxfVkVO RE9SX0lELA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfREVWSUNFX0lE X0lOVEVMX0RMQjJfUEYpDQo+ID4gKyAgICAgICB9LA0KPiA+ICsgICAgICAgew0KPiA+ICsgICAg ICAgICAgICAgICAudmVuZG9yX2lkID0gMCwNCj4gPiArICAgICAgIH0sDQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2V2ZW50X2RsYjJfcGNpX3Byb2JlKHN0cnVjdCBydGVf cGNpX2RyaXZlciAqcGNpX2RydiwNCj4gPiArICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRl X3BjaV9kZXZpY2UgKnBjaV9kZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4g Kw0KPiA+ICsgICAgICAgcmV0ID0gcnRlX2V2ZW50X3BtZF9wY2lfcHJvYmVfbmFtZWQocGNpX2Ry diwgcGNpX2RldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2Yoc3RydWN0IGRsYjJfZXZlbnRkZXYpLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRsYjJfZXZlbnRkZXZfcGNpX2luaXQsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfZGxiMl9w Zl9uYW1lKTsNCj4gPiArICAgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgICAgRExC Ml9MT0dfSU5GTygicnRlX2V2ZW50X3BtZF9wY2lfcHJvYmVfbmFtZWQoKSBmYWlsZWQsICINCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXQ9JWRcbiIsIHJldCk7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludA0KPiA+ICtldmVudF9kbGIyX3BjaV9yZW1vdmUoc3RydWN0IHJ0ZV9w Y2lfZGV2aWNlICpwY2lfZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsN Cj4gPiArICAgICAgIHJldCA9IHJ0ZV9ldmVudF9wbWRfcGNpX3JlbW92ZShwY2lfZGV2LCBOVUxM KTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIERM QjJfTE9HX0lORk8oInJ0ZV9ldmVudF9wbWRfcGNpX3JlbW92ZSgpIGZhaWxlZCwgIg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldD0lZFxuIiwgcmV0KTsNCj4gPiArICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIHN0cnVjdCBydGVfcGNpX2RyaXZlciBwY2lfZXZlbnRkZXZfZGxiMl9w bWQgPSB7DQo+ID4gKyAgICAgICAuaWRfdGFibGUgPSBwY2lfaWRfZGxiMl9tYXAsDQo+ID4gKyAg ICAgICAuZHJ2X2ZsYWdzID0gUlRFX1BDSV9EUlZfTkVFRF9NQVBQSU5HLA0KPiA+ICsgICAgICAg LnByb2JlID0gZXZlbnRfZGxiMl9wY2lfcHJvYmUsDQo+ID4gKyAgICAgICAucmVtb3ZlID0gZXZl bnRfZGxiMl9wY2lfcmVtb3ZlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArUlRFX1BNRF9SRUdJU1RF Ul9QQ0koZXZlbnRfZGxiMl9wZiwgcGNpX2V2ZW50ZGV2X2RsYjJfcG1kKTsNCj4gPiArUlRFX1BN RF9SRUdJU1RFUl9QQ0lfVEFCTEUoZXZlbnRfZGxiMl9wZiwgcGNpX2lkX2RsYjJfbWFwKTsNCj4g PiAtLQ0KPiA+IDIuNi40DQo+ID4NCg0KV2lsbCBmaXggaW4gbmV4dCBkcm9wLg0KDQo=