From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 90B72C54E58 for ; Mon, 18 Mar 2024 15:47:08 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 31B0910FB14; Mon, 18 Mar 2024 15:47:08 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Edq0BgSd"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7D56810FB15 for ; Mon, 18 Mar 2024 15:47:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710776828; x=1742312828; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=xk99VlT65POCQ1hb981zPyN25WnpgIFGM4Q39g0O04A=; b=Edq0BgSdA60doQ4fq69ct9T5F33ocpGf8Ova+yXZN0oTRZvTCPIMgEGg 0L3ZKkQSOMZFy/vBQmEvcIgsjn59xpMfZSfPu/K0HPbHiqSu7l7H4b+x/ q55J6ikkw0S2QZSdmV9JraUHP02vh37Ip14Cyk4FkAgLbBnGA9mAMKKIh 7UDbB+HqymlE1Yu1zm7End92VjsCbARVOkIhODVCT16GL4m+ZfRUsGmj2 fpvKsvm7hZ77mVdag/nHGQwjFFtu061Ait4oxMIpWQlQaVe+Dzz0WtF9N v28+3tTBXKYy2m1OtP2QmVWr4u9F5bBRjVF3EFcgF7RSAzo+qpz41Pjlt w==; X-IronPort-AV: E=McAfee;i="6600,9927,11017"; a="5533699" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5533699" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 08:46:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="13468395" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmviesa007.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 18 Mar 2024 08:46:51 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 18 Mar 2024 08:46:51 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 18 Mar 2024 08:46:50 -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.2507.35 via Frontend Transport; Mon, 18 Mar 2024 08:46:50 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.168) 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.2507.35; Mon, 18 Mar 2024 08:46:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IjgKTsO8wIcXSXE+Y80YHs6g/P2C7GG0Pq3WqJbnBR5PYFJUavUNFJfYrz81STshSYP8Mdg9HwwnjTNW2j0nMGt3dNDGuxJXHg9wAx3KuWG9Eyz1w1jKqnqbioK6KvxgmkmGG87K/BSzlPwIMt17fDQOMfz1i7Emh1R/AXepfw+bYu7Qx9mEoNWQLNsOH6TAeKoLErm30WJSnYhcnBYyLNQsmeQYB/auG4sSKDTXV2VAHPWD9/ope1iJz2c5R5mcLa2x2hoX84PMfhXznWuUccTZCLAePZoKnV5if2Ka4ZC3EKczv0niq6p7WvouhQsHdwpFOFOMJQFmLbhP9d0TdA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xk99VlT65POCQ1hb981zPyN25WnpgIFGM4Q39g0O04A=; b=hY90sxsZrkVQHhyekNOUUvlPsiBbiiTHY9LzCyu8AJHcqk7nZSaO4/TuTlojAtCMLQDl0pV0SmHPiXSeN/qNE8V7/PgpfewTlP3cNJ7MiOzO7Se2mLOtaaYyiTr+Q/fbjquWVJavx5YLQJ7zK6RO2QNKczEoVjQCncnQHQwJQOGUH5GQ8wR7nWV22IIavF+qOV0fWS4tEMkUDABBPl06uuO8/3VbaDQ1W1aN5fWOGefnAKOy4NxHCkEFLwEcnlqq4s786nA/JdGWkI9aZ78sJdmvFhKrnAivxQ/iDvr/+vxGXWnS4yZ2KIQudYCULSydXFAwhv9AFalK+PXHPvJdrQ== 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 Received: from CY8PR11MB7730.namprd11.prod.outlook.com (2603:10b6:930:74::13) by CH3PR11MB7300.namprd11.prod.outlook.com (2603:10b6:610:150::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.11; Mon, 18 Mar 2024 15:46:42 +0000 Received: from CY8PR11MB7730.namprd11.prod.outlook.com ([fe80::504e:40d9:e81f:2af3]) by CY8PR11MB7730.namprd11.prod.outlook.com ([fe80::504e:40d9:e81f:2af3%5]) with mapi id 15.20.7409.010; Mon, 18 Mar 2024 15:46:42 +0000 From: "Hellstrom, Thomas" To: "Brost, Matthew" , "Zeng, Oak" CC: "intel-xe@lists.freedesktop.org" , "Welty, Brian" , "airlied@gmail.com" , "Ghimiray, Himal Prasad" Subject: Re: [PATCH 1/5] drm/xe/svm: Remap and provide memmap backing for GPU vram Thread-Topic: [PATCH 1/5] drm/xe/svm: Remap and provide memmap backing for GPU vram Thread-Index: AQHadb8L5hBB0ksrv0CrNebgI/PvdLE3e6GAgAAU2QCAACYlgIABQZQAgABOHACAAA51AIAAQXkAgAO46QCAAFANgIAADD+A Date: Mon, 18 Mar 2024 15:46:42 +0000 Message-ID: <2fe51b0d8bd0c3458cb2d72da2fcd5ea5cc35192.camel@intel.com> References: <20240314033553.1379444-1-oak.zeng@intel.com> <20240314033553.1379444-2-oak.zeng@intel.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.50.3 (3.50.3-1.fc39) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY8PR11MB7730:EE_|CH3PR11MB7300:EE_ x-ms-office365-filtering-correlation-id: 93310891-811a-4499-414e-08dc47629ba5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vFN3Eq+6H8QXgThDeXT5eh0xPWRnhVDcPw+OoIcb/JX3eVy/ZCt5iPv+oIcc2nP4+94KMX9QyUC0NafnJlR0lIiY6kDgVckj9HbIwGGq5+uaSwY341SyTyzVmKGvLTseO2BQbP8nZ4FT9ugcQQCgxACKIQmsTcVPYsicGnbaet8LrwcprG1G33lAJleCnPeBMuTOKZQO/NRT6eXhBKIiBAd/QtQLM72Ft45N80afLjW1vkhLqhc3ON7r/ymN82Yw+0KaigfhDwbJGV4kosWcFVU4Ksm8tFzHtKjUPpAxNcGx2Ciqp3M+qKDzph9f4/HLoL2XmW6d+axEjFzU9lvr4SGrZb8nhyTzzNfmwMOEL0Z4MDJ9pn2WRjBWvfHYoawI+vZBitqMtgAOrOmOTfgoFNlJ6TToKwubYGIE6HUQep+DoKo+wxu2m4lCiKzQ3KVQrqcr+mXG+q1GSHq0PPILCf1DSTX4s4ZP9AVP4QCaFHHOsuW7EOqy/2tz7EiRGXeN/1i+2i0YPPFjo90ZpoJWOdyE/YfruD4HGutOtG5hFwdcV0S+8CMQXF02fGGI7H5BhA1EfQRIIe6IHZyuMJwfQJO0HV3RXI7PEyzq+l1x8OQ5sG8nNitKUgs0zrddQZgp31UmSsXGQl/RRMP8k2ypXsJ0HobgVm10TM68SH1kBfs= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY8PR11MB7730.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bzh0cThmem5KeHBMMXNkTG1JWlQvVFNiYTJOVXU4NHRKYVdsRnNSYWJmWG5p?= =?utf-8?B?WkNPRmlzRlJiUGdwK3ZCb1FoOVFWaENOUU1xaE1LU1hsMlJLUHdaKzVTTnE3?= =?utf-8?B?RDNQL2RRbWdadlhTQk1FYUQ2emJDeG9FbXo3MTZVejZsZVNXNkJoRXlvOTRP?= =?utf-8?B?UndueUFFcm14ZlJwU3p3Q1ZLc0pLTHZYSVJVOGpQUndQZ25BaTNmaENpMGsx?= =?utf-8?B?ZzZKZlV2VFNqT0NoVnh0TmR6NFprMDZuazBCeHR6K2I1NG1aTi82V21OaUcy?= =?utf-8?B?YjFHUVFOSGdSbC9vbzk2UkdrMjFjcmZ2alJDVnFXeEJURFFvOFB6L3lLN28x?= =?utf-8?B?QlVnTGJZVUQzZytMT2lIdExvOWpJU1FLNEVnSGhSOW8rMHZibzBFekc4bTFM?= =?utf-8?B?RmJzSEhLMTl5a3hBR2NlcGY0UURaditKN3g5ZkJyTDMxSEZyRmhLK3djVUNt?= =?utf-8?B?TDgrUC8wUXNYRjh5bWRMTVZXMXM5MG1qTVZzQmZOL2x1Zmt4azQzL2dJTFlr?= =?utf-8?B?QmxYOWRjck5PZCtIU0hNNm5JTnBJZ1lQNmpMZ0dwblRQcWtUc3NEVFphV3Yv?= =?utf-8?B?VExyQWN1Wm9jcmsrYnVVelp0VjNGbmw0cFJWaXdsTUpNNit3WGdkVXliNkJn?= =?utf-8?B?Z0hlNHlqbG5DN2tCbTNoUm1wOU5rMDRJWEhoU1ZUZFBqM1J3amZoejhRUmFp?= =?utf-8?B?OVBJdHE4bjNQTzZwNXdyaFRQczBDZGJYbU94TGs2SmlzeHdiRjdIOXdlNS9s?= =?utf-8?B?WUpWTmhadVQ5ZU80aUlybXRmTWZxaTJyRWh0S3hWeWpOSHFURmVxR2wvcXF2?= =?utf-8?B?OE95OUF5dWI2aUxnNFcvVlAxQ0dxVVVNRHYxc0N4QVRWR3hMdlZ5dUljZW52?= =?utf-8?B?bjFRODFGVmJPVDlQQldCWnJjWFM3OUxlQ28wQjdjNFdNRUZ5cytqS3IwL3lq?= =?utf-8?B?cFlDZzdFZnFsOEJQa3FBb1U2YzdDOUpWMG1tMysybEFaa0JXTEpBRFcxRnZs?= =?utf-8?B?VkRCUjhPeFZ6bmx5MnhuSk9lbWpCbnZKWVFMZDdNMTI4V1ZDTzB0NHU5S2hs?= =?utf-8?B?RVV1R1dXdEFENnlYdDRMYlBQbVZYRDFRUG5ub3dDQjd6SmYyUFU3blhjbHJD?= =?utf-8?B?eXk4Y0FrREM3cE02RzVoKzROekROck9FdVljc0hLRTZhQysrMmMwaWEvUWRl?= =?utf-8?B?b1ZqRVFleWFnamZPeGNwemFKRmtRSFJQc3RqdGFaaEdMZGZ4MUkxWjhJQmhE?= =?utf-8?B?cnBrQm04VFkrVDBwWVVBdHlySGRhMmJMN0tkL1dtOTdNTThqTHZjd3JsWmwz?= =?utf-8?B?N3hTZHV2NHk5dFVRRGc2eDN0ZEVXTGpCajVwaTFobXZ4aWNXUGVzc1ZNTmlL?= =?utf-8?B?NTRQK3ZYSk1qeFJYcjZMKzl2em56UGhMTFZSUlluZDdhbWtTUTk3UkUzRllD?= =?utf-8?B?WVBrdVAxNFFVRUVVajVSbmtqSTRPN2VWTVdpMWhqZGxqMGQvdFZ5ZWI2QldZ?= =?utf-8?B?c2ZsNWI2LzQ3Z3Y5cCtmY3Jha3NZWmdlTmFIYTZNZnZoVG13QkdwSGxab2Ex?= =?utf-8?B?eElmT295RERQcVYxSVdVa1FNeXo3SS9DZkY3S3p5Ykw2NFlXNHB6aVpheHZT?= =?utf-8?B?QTh3TnBsMTN0NlVWTm8xcDlyTXN5T05OSVNGUmphOVBISzhXWjdsZzZJbGIz?= =?utf-8?B?ZEhDOC9HdTJOOG1rWWlzSVFFYmNhWjI1RHBpbm1EUURXZlJYOTlLV21vUEFp?= =?utf-8?B?MVMvR1A1L3h1ZzI1bDlGcjBzV1VrblhMM202S3ZOWWhCWlRUQlg1ck0wTmZy?= =?utf-8?B?Q1R5MXNsYlhBMzlKdmgrc3VFUnozYURya3BLVDFHVndqZEltaXZVUjZzOWZm?= =?utf-8?B?MVZLd2ZGRitkV0w3MGlBdmRMaWhoK3Qra2UxZG5OejhzSkd1eng5NlFtTVZY?= =?utf-8?B?a3dVNi9zSDFncExOcmNoZ2t5aExSTndDTWFyWU43emtTbWF5WkI1cnM5NmY5?= =?utf-8?B?bzRhNzBBWTUwUjduVC9vZmsvdm5IenZsaDVZT0ZPZGs5YktnenEzdVYrYUlz?= =?utf-8?B?eTJtcjhPdnF6WGFXK212bFlCT0pPQkFSZUttN1dMZHhPQk1oN0pPMytOQjB3?= =?utf-8?B?OThwanlGRHNOSytVbkU5eDRpVXlGamxmZ1JQb1hyT0VRMkJZS3hFMzRLS09Y?= =?utf-8?Q?MZ/o+PDvnhlMC9bNEHdeHVyuTwzK59bFX4+zdohvfbVB?= Content-Type: text/plain; charset="utf-8" Content-ID: <7B306AF04DCA5E4DB5203D618A2BE85C@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY8PR11MB7730.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93310891-811a-4499-414e-08dc47629ba5 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2024 15:46:42.3355 (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: eQXiS3HgkHYJb7/rPQ+lyxh9JfWpDG3phIEEeHPCYcQr+vSUtZcNlRKoDb70jLOv/XXGFmuoCwshyTN8iIJX7h7tq/auempfFn/i0uP7FXs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB7300 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gTW9uLCAyMDI0LTAzLTE4IGF0IDE1OjAyICswMDAwLCBaZW5nLCBPYWsgd3JvdGU6DQo+IA0K PiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEhlbGxzdHJvbSwg VGhvbWFzIDx0aG9tYXMuaGVsbHN0cm9tQGludGVsLmNvbT4NCj4gPiBTZW50OiBNb25kYXksIE1h cmNoIDE4LCAyMDI0IDY6MTYgQU0NCj4gPiBUbzogQnJvc3QsIE1hdHRoZXcgPG1hdHRoZXcuYnJv c3RAaW50ZWwuY29tPjsgWmVuZywgT2FrDQo+ID4gPG9hay56ZW5nQGludGVsLmNvbT4NCj4gPiBD YzogaW50ZWwteGVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBXZWx0eSwgQnJpYW4NCj4gPiA8YnJp YW4ud2VsdHlAaW50ZWwuY29tPjsNCj4gPiBhaXJsaWVkQGdtYWlsLmNvbTsgR2hpbWlyYXksIEhp bWFsIFByYXNhZA0KPiA+IDxoaW1hbC5wcmFzYWQuZ2hpbWlyYXlAaW50ZWwuY29tPg0KPiA+IFN1 YmplY3Q6IFJlOiBbUEFUQ0ggMS81XSBkcm0veGUvc3ZtOiBSZW1hcCBhbmQgcHJvdmlkZSBtZW1t YXANCj4gPiBiYWNraW5nIGZvcg0KPiA+IEdQVSB2cmFtDQo+ID4gDQo+ID4gT24gU2F0LCAyMDI0 LTAzLTE2IGF0IDAxOjI1ICswMDAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOg0KPiA+ID4gT24gRnJp LCBNYXIgMTUsIDIwMjQgYXQgMDM6MzE6MjRQTSAtMDYwMCwgWmVuZywgT2FrIHdyb3RlOg0KPiA+ ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+ID4gPiBGcm9tOiBCcm9zdCwgTWF0dGhldyA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+DQo+ ID4gPiA+ID4gU2VudDogRnJpZGF5LCBNYXJjaCAxNSwgMjAyNCA0OjQwIFBNDQo+ID4gPiA+ID4g VG86IFplbmcsIE9hayA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+IENjOiBpbnRlbC14 ZUBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IEhlbGxzdHJvbSwgVGhvbWFzDQo+ID4gPiA+ID4gPHRo b21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPjsgYWlybGllZEBnbWFpbC5jb207IFdlbHR5LCBCcmlh bg0KPiA+ID4gPiA+IDxicmlhbi53ZWx0eUBpbnRlbC5jb20+OyBHaGltaXJheSwgSGltYWwgUHJh c2FkDQo+ID4gPiA+ID4gPGhpbWFsLnByYXNhZC5naGltaXJheUBpbnRlbC5jb20+DQo+ID4gPiA+ ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVdIGRybS94ZS9zdm06IFJlbWFwIGFuZCBwcm92aWRl IG1lbW1hcA0KPiA+ID4gPiA+IGJhY2tpbmcgZm9yDQo+ID4gPiA+ID4gR1BVIHZyYW0NCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiBPbiBGcmksIE1hciAxNSwgMjAyNCBhdCAxMDowMDowNkFNIC0wNjAw LCBaZW5nLCBPYWsgd3JvdGU6DQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiBGcm9tOiBCcm9z dCwgTWF0dGhldyA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+IFNlbnQ6 IFRodXJzZGF5LCBNYXJjaCAxNCwgMjAyNCA0OjQ5IFBNDQo+ID4gPiA+ID4gPiA+IFRvOiBaZW5n LCBPYWsgPG9hay56ZW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gQ2M6IGludGVsLXhlQGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgSGVsbHN0cm9tLCBUaG9tYXMNCj4gPiA+ID4gPiA+ID4gPHRo b21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPjsgYWlybGllZEBnbWFpbC5jb207IFdlbHR5LA0KPiA+ ID4gPiA+ID4gPiBCcmlhbg0KPiA+ID4gPiA+ID4gPiA8YnJpYW4ud2VsdHlAaW50ZWwuY29tPjsg R2hpbWlyYXksIEhpbWFsIFByYXNhZA0KPiA+ID4gPiA+ID4gPiA8aGltYWwucHJhc2FkLmdoaW1p cmF5QGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVdIGRy bS94ZS9zdm06IFJlbWFwIGFuZCBwcm92aWRlDQo+ID4gPiA+ID4gPiA+IG1lbW1hcA0KPiA+ID4g PiA+ID4gPiBiYWNraW5nDQo+ID4gPiA+ID4gZm9yDQo+ID4gPiA+ID4gPiA+IEdQVSB2cmFtDQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBPbiBUaHUsIE1hciAxNCwgMjAyNCBhdCAxMjoz MjozNlBNIC0wNjAwLCBaZW5nLCBPYWsNCj4gPiA+ID4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4g PiA+ID4gSGkgTWF0dCwNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+ID4gPiBGcm9tOiBCcm9zdCwgTWF0 dGhldyA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiBTZW50OiBU aHVyc2RheSwgTWFyY2ggMTQsIDIwMjQgMToxOCBQTQ0KPiA+ID4gPiA+ID4gPiA+ID4gVG86IFpl bmcsIE9hayA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IGludGVs LXhlQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgSGVsbHN0cm9tLCBUaG9tYXMNCj4gPiA+ID4gPiA+ ID4gPiA+IDx0aG9tYXMuaGVsbHN0cm9tQGludGVsLmNvbT47IGFpcmxpZWRAZ21haWwuY29tOw0K PiA+ID4gPiA+ID4gPiA+ID4gV2VsdHksDQo+ID4gPiA+ID4gPiA+ID4gPiBCcmlhbg0KPiA+ID4g PiA+ID4gPiA+ID4gPGJyaWFuLndlbHR5QGludGVsLmNvbT47IEdoaW1pcmF5LCBIaW1hbCBQcmFz YWQNCj4gPiA+ID4gPiA+ID4gPiA+IDxoaW1hbC5wcmFzYWQuZ2hpbWlyYXlAaW50ZWwuY29tPg0K PiA+ID4gPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVdIGRybS94ZS9zdm06IFJl bWFwIGFuZA0KPiA+ID4gPiA+ID4gPiA+ID4gcHJvdmlkZQ0KPiA+ID4gPiA+ID4gPiA+ID4gbWVt bWFwDQo+ID4gPiA+ID4gYmFja2luZw0KPiA+ID4gPiA+ID4gPiBmb3INCj4gPiA+ID4gPiA+ID4g PiA+IEdQVSB2cmFtDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IE9uIFdl ZCwgTWFyIDEzLCAyMDI0IGF0IDExOjM1OjQ5UE0gLTA0MDAsIE9hayBaZW5nDQo+ID4gPiA+ID4g PiA+ID4gPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+ID4gTWVtb3J5IHJlbWFwIEdQVSB2cmFt IHVzaW5nIGRldm1fbWVtcmVtYXBfcGFnZXMsIHNvDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGVhY2gN Cj4gPiA+ID4gPiBHUFUNCj4gPiA+ID4gPiA+ID4gdnJhbQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBw YWdlIGlzIGJhY2tlZCBieSBhIHN0cnVjdCBwYWdlLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiANCj4g PiA+ID4gPiA+ID4gPiA+ID4gVGhvc2Ugc3RydWN0IHBhZ2VzIGFyZSBjcmVhdGVkIHRvIGFsbG93 IGhtbSBtaWdyYXRlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGJ1ZmZlciBiL3QNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gR1BVIHZyYW0gYW5kIENQVSBzeXN0ZW0gbWVtb3J5IHVzaW5nIGV4aXN0aW5nIExp bnV4DQo+ID4gPiA+ID4gPiA+ID4gPiA+IG1pZ3JhdGlvbg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBt ZWNoYW5pc20gKGkuZS4sIG1pZ3JhdGluZyBiL3QgQ1BVIHN5c3RlbSBtZW1vcnkNCj4gPiA+ID4g PiA+ID4gPiA+ID4gYW5kDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGhhcmQgZGlzaykuDQo+ID4gPiA+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGlzIGlzIHByZXBhcmUgd29yayB0 byBlbmFibGUgc3ZtIChzaGFyZWQgdmlydHVhbA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBtZW1vcnkp IHRocm91Z2gNCj4gPiA+ID4gPiA+ID4gPiA+ID4gTGludXgga2VybmVsIGhtbSBmcmFtZXdvcmsu IFRoZSBtZW1vcnkgcmVtYXAncyBwYWdlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IG1hcA0KPiA+ID4g PiA+ID4gPiA+ID4gPiB0eXBlIGlzDQo+ID4gPiA+ID4gc2V0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ IHRvIE1FTU9SWV9ERVZJQ0VfUFJJVkFURSBmb3Igbm93LiBUaGlzIG1lYW5zIGV2ZW4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gdGhvdWdoIGVhY2gNCj4gPiA+ID4gPiBHUFUNCj4gPiA+ID4gPiA+ID4g PiA+ID4gdnJhbSBwYWdlIGdldCBhIHN0cnVjdCBwYWdlIGFuZCBjYW4gYmUgbWFwcGVkIGluDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IENQVQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBwYWdlIHRhYmxlLA0K PiA+ID4gPiA+ID4gPiA+ID4gPiBidXQgc3VjaCBwYWdlcyBhcmUgdHJlYXRlZCBhcyBHUFUncyBw cml2YXRlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IHJlc291cmNlLA0KPiA+ID4gPiA+ID4gPiA+ID4g PiBzbyBDUFUgY2FuJ3QNCj4gPiA+ID4gPiA+ID4gPiA+ID4gYWNjZXNzIHRoZW0uIElmIENQVSBh Y2Nlc3Mgc3VjaCBwYWdlLCBhIHBhZ2UgZmF1bHQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gaXMNCj4g PiA+ID4gPiA+ID4gPiA+ID4gdHJpZ2dlcmVkDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGFuZCBwYWdl IHdpbGwgYmUgbWlncmF0ZSB0byBzeXN0ZW0gbWVtb3J5Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gSXMgdGhpcyByZWFsbHkgdHJ1 ZT8gV2UgY2FuIG1hcCBWUkFNIEJPcyB0byB0aGUgQ1BVDQo+ID4gPiA+ID4gPiA+ID4gPiB3aXRo b3V0IGhhdmluZw0KPiA+ID4gPiA+ID4gPiA+ID4gbWlnYXJ0ZSBiYWNrIGFuZCBmb3J0aC4gQWRt aXR0ZWRseSBJIGRvbid0IGtub3cgdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiBpbm5lcg0KPiA+ID4g PiA+ID4gPiA+ID4gd29ya2luZ3Mgb2YNCj4gPiA+ID4gPiA+ID4gPiA+IGhvdyB0aGlzIHdvcmtz IGJ1dCBpbiBJR1RzIHdlIGRvIHRoaXMgYWxsIHRoZSB0aW1lLg0KPiA+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gPiDCoCA1NMKgwqDCoMKgwqDCoMKgwqAgYmF0Y2hfYm8gPSB4ZV9i b19jcmVhdGUoZmQsIHZtLA0KPiA+ID4gPiA+ID4gPiA+ID4gYmF0Y2hfc2l6ZSwNCj4gPiA+ID4g PiA+ID4gPiA+IMKgIDU1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoA0KPiA+ID4gPiA+ID4gPiA+ID4gdnJhbV9pZl9wb3NzaWJs ZShmZCwNCj4gPiA+ID4gPiA+ID4gPiA+IDApLA0KPiA+ID4gPiA+ID4gPiA+ID4gwqAgNTYNCj4g PiA+ID4gPiBEUk1fWEVfR0VNX0NSRUFURV9GTEFHX05FRURTX1ZJU0lCTEVfVlJBTSk7DQo+ID4g PiA+ID4gPiA+ID4gPiDCoCA1N8KgwqDCoMKgwqDCoMKgwqAgYmF0Y2hfbWFwID0geGVfYm9fbWFw KGZkLCBiYXRjaF9ibywNCj4gPiA+ID4gPiA+ID4gPiA+IGJhdGNoX3NpemUpOw0KPiA+ID4gPiA+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiBUaGUgQk8gaXMgY3JlYXRlZCBpbiBWUkFNIGFu ZCB0aGVuIG1hcHBlZCB0byB0aGUgQ1BVLg0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiA+ID4gPiBJIGRvbid0IHRoaW5rIHRoZXJlIGlzIGFuIGV4cGVjdGF0aW9uIG9mIGNvaGVyZW5j ZQ0KPiA+ID4gPiA+ID4gPiA+ID4gcmF0aGVyDQo+ID4gPiA+ID4gPiA+ID4gPiBjYWNoaW5nIG1v ZGUNCj4gPiA+ID4gPiA+ID4gPiA+IGFuZCBleGNsdXNpdmUgYWNjZXNzIG9mIHRoZSBtZW1vcnkg YmFzZWQgb24NCj4gPiA+ID4gPiA+ID4gPiA+IHN5bmNocm9uaXphdGlvbi4NCj4gPiA+ID4gPiA+ ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gZS5nLg0KPiA+ID4gPiA+ID4gPiA+ID4gVXNlciB3 cml0ZSBCQi9kYXRhIHZpYSBDUFUgdG8gR1BVIG1lbW9yeQ0KPiA+ID4gPiA+ID4gPiA+ID4gVXNl ciBjYWxscyBleGVjDQo+ID4gPiA+ID4gPiA+ID4gPiBHUFUgcmVhZCAvIHdyaXRlIG1lbW9yeQ0K PiA+ID4gPiA+ID4gPiA+ID4gVXNlciB3YWl0IG9uIHN5bmMgaW5kaWNhdGluZyBleGVjIGRvbmUN Cj4gPiA+ID4gPiA+ID4gPiA+IFVzZXIgcmVhZHMgcmVzdWx0DQo+ID4gPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiA+IEFsbCBvZiB0aGlzIHdvcmtzIHdpdGhvdXQgbWlncmF0aW9uLiBB cmUgd2Ugbm90DQo+ID4gPiA+ID4gPiA+ID4gPiBwbGFuaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiBz dXBwb3J0aW5nIGZsb3cNCj4gPiA+ID4gPiA+ID4gPiA+IHdpdGggU1ZNPw0KPiA+ID4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiBBZmFpayB0aGlzIG1pZ3JhdGlvbiBkYW5jZSByZWFs bHkgb25seSBuZWVkcyB0byBiZQ0KPiA+ID4gPiA+ID4gPiA+ID4gZG9uZQ0KPiA+ID4gPiA+ID4g PiA+ID4gaWYgdGhlIENQVSBhbmQNCj4gPiA+ID4gPiA+ID4gPiA+IEdQVSBhcmUgdXNpbmcgYXRv bWljcyBvbiBhIHNoYXJlZCBtZW1vcnkgcmVnaW9uIGFuZA0KPiA+ID4gPiA+ID4gPiA+ID4gdGhl DQo+ID4gPiA+ID4gPiA+ID4gPiBHUFUgZGV2aWNlDQo+ID4gPiA+ID4gPiA+ID4gPiBkb2Vzbid0 IHN1cHBvcnQgYSBjb2hlcmVudCBtZW1vcnkgcHJvdG9jb2wgKGUuZy4NCj4gPiA+ID4gPiA+ID4g PiA+IFBWQykuDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gQWxsIHlvdSBzYWlk IGlzIHRydWUuIE9uIG1hbnkgb2Ygb3VyIEhXLCBDUFUgY2FuDQo+ID4gPiA+ID4gPiA+ID4gYWN0 dWFsbHkNCj4gPiA+ID4gPiA+ID4gPiBhY2Nlc3MgZGV2aWNlDQo+ID4gPiA+ID4gbWVtb3J5LA0K PiA+ID4gPiA+ID4gPiBjYWNoZSBjb2hlcmVudGx5IG9yIG5vdC4NCj4gPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiBUaGUgcHJvYmxlbSBpcywgdGhpcyBpcyBub3QgdHJ1ZSBmb3IgYWxs IEdQVSB2ZW5kb3JzLg0KPiA+ID4gPiA+ID4gPiA+IEZvcg0KPiA+ID4gPiA+ID4gPiA+IGV4YW1w bGUsIG9uIHNvbWUNCj4gPiA+ID4gPiBIVw0KPiA+ID4gPiA+ID4gPiBmcm9tIHNvbWUgdmVuZG9y LCBDUFUgY2FuIG9ubHkgYWNjZXNzIHBhcnRpYWxseSBvZiBkZXZpY2UNCj4gPiA+ID4gPiA+ID4g bWVtb3J5LiBUaGUgc28NCj4gPiA+ID4gPiBjYWxsZWQNCj4gPiA+ID4gPiA+ID4gc21hbGwgYmFy IGNvbmNlcHQuDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gU28gd2hlbiBITU0g aXMgZGVmaW5lZCwgc3VjaCBmYWN0b3JzIHdlcmUgY29uc2lkZXJlZCwNCj4gPiA+ID4gPiA+ID4g PiBhbmQNCj4gPiA+ID4gPiA+ID4gTUVNT1JZX0RFVklDRV9QUklWQVRFIGlzIGRlZmluZWQuIFdp dGggdGhpcyBkZWZpbml0aW9uLA0KPiA+ID4gPiA+ID4gPiBDUFUNCj4gPiA+ID4gPiA+ID4gY2Fu J3QgYWNjZXNzDQo+ID4gPiA+ID4gPiA+IGRldmljZSBtZW1vcnkuDQo+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gU28geW91IGNhbiB0aGluayBpdCBpcyBhIGxpbWl0YXRpb24gb2Yg SE1NLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gSXMg aXQgdGhvdWdoPyBJIHNlZSBvdGhlciB0eXBlIE1FTU9SWV9ERVZJQ0VfRlNfREFYLA0KPiA+ID4g PiA+ID4gPiBNRU1PUllfREVWSUNFX0dFTkVSSUMsIGFuZCBNRU1PUllfREVWSUNFX1BDSV9QMlBE TUEuDQo+ID4gRnJvbSBteQ0KPiA+ID4gPiA+ID4gPiBsaW1pdGVkDQo+ID4gPiA+ID4gPiA+IHVu ZGVyc3RhbmRpbmcgaXQgbG9va3MgdG8gbWUgbGlrZSBvbmUgb2YgdGhvc2UgbW9kZXMNCj4gPiA+ ID4gPiA+ID4gd291bGQNCj4gPiA+ID4gPiA+ID4gc3VwcG9ydCBteQ0KPiA+ID4gPiA+ID4gPiBl eGFtcGxlLg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IE5vLCBhYm92 ZSBhcmUgZm9yIG90aGVyIHB1cnBvc2VzLiBITU0gb25seSBzdXBwb3J0DQo+ID4gPiA+ID4gPiBE RVZJQ0VfUFJJVkFURSBhbmQNCj4gPiA+ID4gPiBERVZJQ0VfQ09IRVJFTlQuDQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gTm90ZSB0aGlzIGlzIG9ubHkgcGFy dCAxIG9mIG91ciBzeXN0ZW0gYWxsb2NhdG9yIHdvcmsuDQo+ID4gPiA+ID4gPiA+ID4gV2UNCj4g PiA+ID4gPiA+ID4gPiBkbyBwbGFuIHRvIHN1cHBvcnQNCj4gPiA+ID4gPiA+ID4gREVWSUNFX0NP SEVSRU5UIGZvciBvdXIgbmV3ZXIgZGV2aWNlLCBzZWUgYmVsb3cuIFdpdGgNCj4gPiA+ID4gPiA+ ID4gdGhpcw0KPiA+ID4gPiA+ID4gPiBvcHRpb24sIHdlDQo+ID4gPiA+ID4gZG9uJ3QNCj4gPiA+ ID4gPiA+ID4gaGF2ZSB1bm5lY2Vzc2FyeSBtaWdyYXRpb24gYmFjayBhbmQgZm9ydGguDQo+ID4g PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gWW91IGNhbiB0aGluayB0aGlzIGlzIGp1c3Qg d29yayBvdXQgYWxsIHRoZSBjb2RlIHBhdGguDQo+ID4gPiA+ID4gPiA+ID4gOTAlDQo+ID4gPiA+ ID4gPiA+ID4gb2YgdGhlIGRyaXZlciBjb2RlDQo+ID4gPiA+ID4gZm9yDQo+ID4gPiA+ID4gPiA+ IERFVklDRV9QUklWQVRFIGFuZCBERVZJQ0VfQ09IRVJFTlQgd2lsbCBiZSBzYW1lLiBPdXIgcmVh bA0KPiA+ID4gPiA+ID4gPiB1c2UNCj4gPiA+ID4gPiA+ID4gb2Ygc3lzdGVtDQo+ID4gPiA+ID4g PiA+IGFsbG9jYXRvciB3aWxsIGJlIERFVklDRV9DT0hFUkVOVCBtb2RlLiBXaGlsZQ0KPiA+ID4g PiA+ID4gPiBERVZJQ0VfUFJJVkFURQ0KPiA+ID4gPiA+ID4gPiBtb2RlDQo+ID4gPiA+ID4gYWxs b3cgdXMNCj4gPiA+ID4gPiA+ID4gdG8gZXhlcmNpc2UgdGhlIGNvZGUgb24gb2xkIEhXLg0KPiA+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IE1ha2Ugc2Vuc2U/DQo+ID4gPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBJIGd1ZXNzIGlmIHdlIHdhbnQgdGhl IHN5c3RlbSBhbGxvY2F0b3IgdG8gYWx3YXlzDQo+ID4gPiA+ID4gPiA+IGNvaGVyZW50LA0KPiA+ ID4gPiA+ID4gPiB0aGVuIHllcyB5b3UNCj4gPiA+ID4gPiA+ID4gbmVlZCB0aGlzIGR5bmFtaWMg bWlncmF0aW9uIHdpdGggZmF1bHRpbmcgb24gZWl0aGVyIHNpZGUuDQo+ID4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gPiBJIHdhcyB0aGlua2luZyB0aGUgc3lzdGVtIGFsbG9jYXRvciB3b3VsZCBi ZSBiZWhhdmUgbGlrZQ0KPiA+ID4gPiA+ID4gPiBteQ0KPiA+ID4gPiA+ID4gPiBleGFtcGxlDQo+ ID4gPiA+ID4gPiA+IGFib3ZlIHdpdGggbWFkdmlzZSBkaWN0YXRpbmcgdGhlIGNvaGVyZW5jZSBy dWxlcy4NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IE1heWJlIEkgbWlzc2VkIHRoaXMg aW4gc3lzdGVtIGFsbG9jYXRvciBkZXNpZ24gYnV0IG15DQo+ID4gPiA+ID4gPiA+IGZlZWxpbmcN Cj4gPiA+ID4gPiA+ID4gaXMgd2UNCj4gPiA+ID4gPiA+ID4gc2hvdWxkbid0IGFyYml0cmFyaWx5 IGVuZm9yY2UgY29oZXJlbmNlIGFzIHRoYXQgY291bGQNCj4gPiA+ID4gPiA+ID4gbGVhZCB0bw0K PiA+ID4gPiA+ID4gPiBwb29yDQo+ID4gPiA+ID4gPiA+IHBlcmZvcm1hbmNlIGR1ZSB0byBjb25z dGFudCBtaWdyYXRpb24uDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IFN5c3RlbSBhbGxvY2F0 b3IgaXRzZWxmIGRvZXNuJ3QgZW5mb3JjZSBjb2hlcmVuY2UuDQo+ID4gPiA+ID4gPiBDb2hlcmVu Y2UgaXMNCj4gPiA+ID4gPiA+IGJ1aWx0IGluIHVzZXINCj4gPiA+ID4gPiBwcm9ncmFtbWluZyBt b2RlbC4gU28gc3lzdGVtIGFsbG9jYXRvciBhbGxvdyBib3RoIEdQVSBhbmQgQ1BVDQo+ID4gPiA+ ID4gYWNjZXNzIHN5c3RlbQ0KPiA+ID4gPiA+IGFsbG9jYXRlZCBwb2ludGVycywgYnV0IGl0IGRv ZXNuJ3QgbmVjZXNzYXJpbHkgZ3VhcmFudGVlIHRoZQ0KPiA+ID4gPiA+IGRhdGENCj4gPiA+ID4g PiBhY2Nlc3NlZCBmcm9tDQo+ID4gPiA+ID4gQ1BVL0dQVSBpcyBjb2hlcmVudC4gSXQgaXMgdXNl ciBwcm9ncmFtJ3MgcmVzcG9uc2liaWxpdHkgdG8NCj4gPiA+ID4gPiBtYWludGFpbiBkYXRhDQo+ ID4gPiA+ID4gY29oZXJlbmNlLg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBEYXRhIG1pZ3Jh dGlvbiBpbiBkcml2ZXIgaXMgb3B0aW9uYWwsIGRlcGVuZGluZyBvbiBwbGF0Zm9ybQ0KPiA+ID4g PiA+ID4gY2FwYWJpbGl0eSwgdXNlcg0KPiA+ID4gPiA+IHByZWZlcmVuY2UsIGNvcnJlY3RuZXNz IGFuZCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9uLiBEcml2ZXINCj4gPiA+ID4gPiBpbnRlcm5h bCBkYXRhDQo+ID4gPiA+ID4gbWlncmF0aW9uIG9mIGNvdXJzZSBzaG91bGRuJ3QgYnJlYWsgZGF0 YSBjb2hlcmVuY2UuDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IE9mIGNvdXJzZSBkaWZmZXJl bnQgdmVuZG9yIGNhbiBoYXZlIGRpZmZlcmVudCBkYXRhDQo+ID4gPiA+ID4gPiBjb2hlcmVuY2UN Cj4gPiA+ID4gPiA+IHNjaGVtZS4gRm9yDQo+ID4gPiA+ID4gZXhhbXBsZSwgaXQgaXMgY29tcGxl dGVseSBkZXNpZ25lcidzIGZsZXhpYmlsaXR5IHRvIGJ1aWxkDQo+ID4gPiA+ID4gbW9kZWwNCj4g PiA+ID4gPiB0aGF0IGlzIEhXIGF1dG9tYXRpYw0KPiA+ID4gPiA+IGRhdGEgY29oZXJlbmNlIG9y IHNvZnR3YXJlIGV4cGxpY2l0IGRhdGEgY29oZXJlbmNlLiBPbiBvdXINCj4gPiA+ID4gPiBwbGF0 Zm9ybSwgd2UgYWxsb3cNCj4gPiA+ID4gPiB1c2VyIHByb2dyYW0gdG8gc2VsZWN0IGRpZmZlcmVu dCBjb2hlcmVuY2UgbW9kZSBieSBzZXR0aW5nDQo+ID4gPiA+ID4gcGF0X2luZGV4IGZvciBncHUN Cj4gPiA+ID4gPiBhbmQgY3B1X2NhY2hpbmcgbW9kZSBmb3IgQ1BVLiBTbyB3ZSBoYXZlIGNvbXBs ZXRlbHkgZ2l2ZSB0aGUNCj4gPiA+ID4gPiBmbGV4aWJpbGl0eSB0byB1c2VyDQo+ID4gPiA+ID4g cHJvZ3JhbS4gTm90aGluZyBvZiB0aGlzIGNvbnRyYWN0IGlzIGNoYW5nZWQgaW4gc3lzdGVtDQo+ ID4gPiA+ID4gYWxsb2NhdG9yDQo+ID4gPiA+ID4gZGVzaWduLg0KPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiBHb2luZyBiYWNrIHRvIHRoZSBxdWVzdGlvbiBvZiB3aGF0IG1lbW9yeSB0eXBlIHdl IHNob3VsZA0KPiA+ID4gPiA+ID4gdXNlIHRvDQo+ID4gPiA+ID4gPiByZWdpc3RlciBvdXINCj4g PiA+ID4gPiB2cmFtIHRvIGNvcmUgbW0uIEhNTSBjdXJyZW50bHkgc3VwcG9ydCB0d28gdHlwZXM6 IFBSSVZBVEUgYW5kDQo+ID4gPiA+ID4gQ09IRVJFTlQuDQo+ID4gPiA+ID4gVGhlIGNvaGVyZW50 IHR5cGUgcmVxdWlyZXMgc29tZSBIVyBhbmQgQklPUyBzdXBwb3J0IHdoaWNoIHdlDQo+ID4gPiA+ ID4gZG9uJ3QgaGF2ZQ0KPiA+ID4gPiA+IHJpZ2h0IG5vdy4gU28gdGhlIG9ubHkgYXZhaWxhYmxl IGlzIFBSSVZBVEUuIFdlIGhhdmUgbm90DQo+ID4gPiA+ID4gb3RoZXINCj4gPiA+ID4gPiBvcHRp b24gcmlnaHQgbm93Lg0KPiA+ID4gPiA+IEFzIHNhaWQsIHdlIHBsYW4gdG8gc3VwcG9ydCBjb2hl cmVudCB0eXBlIHdoZXJlIHdlIGNhbiBhdm9pZA0KPiA+ID4gPiA+IHVubmVjZXNzYXJ5IGRhdGEN Cj4gPiA+ID4gPiBtaWdyYXRpb24uIEJ1dCB0aGF0IGlzIHN0YWdlIDIuDQo+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiANCj4gPiA+ID4gPiBUaGFua3MgZm9yIHRoZSBleHBsYWluYXRpb24uIEFmdGVy IHJlYWRpbmcgeW91ciByZXBsaWVzLCB0aGUNCj4gPiA+ID4gPiBITU0NCj4gPiA+ID4gPiBkb2Ms DQo+ID4gPiA+ID4gYW5kIGxvb2tpbmcgYXQgY29kZSB0aGlzIGFsbCBtYWtlcyBzZW5zZS4NCj4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gRm9yIEdQVSBkZXZpY2Ugd2hpY2ggc3VwcG9ydHMg Y29oZXJlbnQgbWVtb3J5DQo+ID4gPiA+ID4gPiA+ID4gPiA+IHByb3RvY29sDQo+ID4gPiA+ID4g PiA+ID4gPiA+IGIvdCBDUFUgYW5kDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEdQVSAoc3VjaCBhcyBD WEwgYW5kIENBUEkgcHJvdG9jb2wpLCB3ZSBjYW4gcmVtYXANCj4gPiA+ID4gPiA+ID4gPiA+ID4g ZGV2aWNlIG1lbW9yeSBhcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBNRU1PUllfREVWSUNFX0NPSEVS RU5ULiBUaGlzIGlzIFRCRC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IE9hayBaZW5nIDxvYWsuemVuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+IENvLWRldmVsb3BlZC1ieTogTmlyYW5qYW5hIFZpc2h3YW5hdGhhcHVyYQ0K PiA+ID4gPiA+ID4gPiA+ID4gPG5pcmFuamFuYS52aXNod2FuYXRoYXB1cmFAaW50ZWwuY29tPg0K PiA+ID4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBOaXJhbmphbmEgVmlzaHdhbmF0aGFw dXJhDQo+ID4gPiA+ID4gPiA+ID4gPiA8bmlyYW5qYW5hLnZpc2h3YW5hdGhhcHVyYUBpbnRlbC5j b20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IENjOiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0 QGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IFRob21hcyBIZWxsc3Ryw7ZtIDx0 aG9tYXMuaGVsbHN0cm9tQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IEJyaWFu IFdlbHR5IDxicmlhbi53ZWx0eUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IC0tLQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZcKgwqDCoMKg wqDCoMKgwqDCoCB8wqAgMyArLQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9kZXZpY2VfdHlwZXMuaCB8wqAgOSArKysNCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqBk cml2ZXJzL2dwdS9kcm0veGUveGVfbW1pby5jwqDCoMKgwqDCoMKgwqDCoCB8wqAgOCArKysNCj4g PiA+ID4gPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmjCoMKgwqDCoMKg wqDCoMKgwqAgfCAxNCArKysrKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9zdm1fZGV2bWVtLmPCoMKgIHwgOTENCj4gPiA+ID4gPiA+ID4gPiA+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqA1IGZpbGVzIGNoYW5n ZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdm0uaA0KPiA+ID4g PiA+ID4gPiA+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBk cml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtX2Rldm1lbS5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL01ha2Vm aWxlDQo+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUvTWFrZWZpbGUNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gaW5kZXggYzUzMTIxMDY5NWRiLi44NDA0NjcwODBlNTkgMTAwNjQ0DQo+ID4gPiA+ ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiA+ID4gPiA+ ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUvTWFrZWZpbGUNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gQEAgLTE0Miw3ICsxNDIsOCBAQCB4ZS15ICs9IHhlX2JiLm8gXA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiDCoAl4ZV92cmFtX2ZyZXEubyBcDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgCXhl X3dhaXRfdXNlcl9mZW5jZS5vIFwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqAJeGVfd2EubyBcDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IC0JeGVfd29wY20ubw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCXhl X3dvcGNtLm8gXA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCXhlX3N2bV9kZXZtZW0ubw0KPiA+ID4g PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiBUaGVzZSBzaG91bGQgYmUgaW4gYWxwaGFi ZXRpY2FsIG9yZGVyLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IFdpbGwgZml4 DQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ ID4gPiA+IMKgIyBncmFwaGljcyBoYXJkd2FyZSBtb25pdG9yaW5nIChIV01PTikgc3VwcG9ydA0K PiA+ID4gPiA+ID4gPiA+ID4gPiDCoHhlLSQoQ09ORklHX0hXTU9OKSArPSB4ZV9od21vbi5vDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2 aWNlX3R5cGVzLmgNCj4gPiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2Rl dmljZV90eXBlcy5oDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IDk3ODVlZWYyZTVhNC4uZjI3 YzNiZWU4Y2U3IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0veGUveGVfZGV2aWNlX3R5cGVzLmgNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC05 OSw2ICs5OSwxNSBAQCBzdHJ1Y3QgeGVfbWVtX3JlZ2lvbiB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ IMKgCXJlc291cmNlX3NpemVfdCBhY3R1YWxfcGh5c2ljYWxfc2l6ZTsNCj4gPiA+ID4gPiA+ID4g PiA+ID4gwqAJLyoqIEBtYXBwaW5nOiBwb2ludGVyIHRvIFZSQU0gbWFwcGFibGUNCj4gPiA+ID4g PiA+ID4gPiA+ID4gc3BhY2UNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKi8NCj4gPiA+ID4gPiA+ID4g PiA+ID4gwqAJdm9pZCBfX2lvbWVtICptYXBwaW5nOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCS8q KiBAcGFnZW1hcDogVXNlZCB0byByZW1hcCBkZXZpY2UgbWVtb3J5DQo+ID4gPiA+ID4gPiA+ID4g PiA+IGFzDQo+ID4gPiA+ID4gPiA+ID4gPiA+IFpPTkVfREVWSUNFDQo+ID4gPiA+ID4gKi8NCj4g PiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoCBzdHJ1Y3QgZGV2X3BhZ2VtYXAgcGFnZW1hcDsNCj4g PiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoCAvKioNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDC oMKgICogQGhwYV9iYXNlOiBiYXNlIGhvc3QgcGh5c2ljYWwgYWRkcmVzcw0KPiA+ID4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqAgKg0KPiA+ID4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqAgKiBUaGlz IGlzIGdlbmVyYXRlZCB3aGVuIHJlbWFwIGRldmljZSBtZW1vcnkNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gYXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gWk9ORV9ERVZJQ0UNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqAgcmVzb3VyY2Vfc2l6 ZV90IGhwYV9iYXNlOw0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiBXZWly ZCBpbmRlbnRhdGlvbi4gVGhpcyBnb2VzIGZvciB0aGUgZW50aXJlIHNlcmllcywNCj4gPiA+ID4g PiA+ID4gPiA+IGxvb2sNCj4gPiA+ID4gPiA+ID4gPiA+IGF0IGNoZWNrcGF0Y2guDQo+ID4gPiA+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gV2lsbCBmaXgNCj4gPiA+ID4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgfTsNCj4gPiA+ID4g PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgLyoqDQo+ID4gPiA+ID4gPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfbW1pby5jDQo+ID4gPiA+ID4g PiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21taW8uYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBp bmRleCBlM2RiM2ExNzg3NjAuLjBkNzk1Mzk0YmM0YyAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21taW8uYw0KPiA+ID4gPiA+ID4gPiA+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbW1pby5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IEBAIC0yMiw2ICsyMiw3IEBADQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgI2luY2x1ZGUgInhlX21v ZHVsZS5oIg0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoCNpbmNsdWRlICJ4ZV9zcmlvdi5oIg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiDCoCNpbmNsdWRlICJ4ZV90aWxlLmgiDQo+ID4gPiA+ID4gPiA+ID4g PiA+ICsjaW5jbHVkZSAieGVfc3ZtLmgiDQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiDCoCNkZWZpbmUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gWEVIUF9NVENGR19BRERS CQlYRV9SRUcoMHgxMDE4MDApDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgI2RlZmluZSBUSUxFX0NP VU5UCQlSRUdfR0VOTUFTSygxNSwgOCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTI4Niw2ICsy ODcsNyBAQCBpbnQgeGVfbW1pb19wcm9iZV92cmFtKHN0cnVjdA0KPiA+ID4gPiA+ID4gPiA+ID4g PiB4ZV9kZXZpY2UgKnhlKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoAkJfQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqAJCWlvX3NpemUgLT0gbWluX3QodTY0LCB0 aWxlX3NpemUsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGlvX3NpemUpOw0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArCQl4ZV9zdm1fZGV2bV9hZGQodGlsZSwgJnRpbGUtDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gbWVtLnZyYW0pOw0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiBEbyB3 ZSB3YW50IHRvIGRvIHRoaXMgcHJvYmUgZm9yIGFsbCBkZXZpY2VzIHdpdGggVlJBTQ0KPiA+ID4g PiA+ID4gPiA+ID4gb3INCj4gPiA+ID4gPiA+ID4gPiA+IG9ubHkgYSBzdWJzZXQ/DQo+ID4gPiA+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gQWxsDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiBDYW4geW91IGV4cGxhaW4gd2h5Pw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBJdCBp cyBuYXR1cmFsIGZvciBtZSB0byBhZGQgYWxsIGRldmljZSBtZW1vcnkgdG8gaG1tLiBJbg0KPiA+ ID4gPiA+ID4gaG1tDQo+ID4gPiA+ID4gPiBkZXNpZ24sIGRldmljZQ0KPiA+ID4gPiA+IG1lbW9y eSBpcyB1c2VkIGFzIGEgc3BlY2lhbCBzd2FwIG91dCBmb3Igc3lzdGVtIG1lbW9yeS4gSQ0KPiA+ ID4gPiA+IHdvdWxkDQo+ID4gPiA+ID4gYXNrIHdoeSB3ZQ0KPiA+ID4gPiA+IG9ubHkgd2FudCB0 byBhZGQgYSBzdWJzZXQgb2YgdnJhbT8gQnkgYSBzdWJzZXQsIGRvIHlvdSBtZWFuDQo+ID4gPiA+ ID4gb25seQ0KPiA+ID4gPiA+IHZyYW0gb2Ygb25lDQo+ID4gPiA+ID4gdGlsZSBpbnN0ZWFkIG9m IGFsbCB0aWxlcz8NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IEkgdGhpbmsg d2UgdGFsa2luZyBhYm91dCBkaWZmZXJlbnQgdGhpbmdzLCBteSBiYWQgb24gd29yZGluZw0KPiA+ ID4gPiA+IGluDQo+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gb3JpZ2luYWwgcXVlc3Rpb24uDQo+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gTGV0IG1lIGFzayBhZ2FpbiAtIHNob3VsZCBiZSBjYWxsaW5n IHhlX3N2bV9kZXZtX2FkZCBvbiBhbGwNCj4gPiA+ID4gPiAqcGxhdGZvcm1zKg0KPiA+ID4gPiA+ IHRoYXQgaGF2ZSBWUkFNLiBpLmUuIFNob3VsZCB3ZSBkbyB0aGlzIG9uIFBWQyBidXQgbm90IERH Mj8NCj4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiBPaCwgSSBzZWUuIEdvb2QgcXVlc3Rpb24u IE9uIGk5MTUsIHRoaXMgZmVhdHVyZSB3YXMgb25seSB0ZXN0ZWQNCj4gPiA+ID4gb24NCj4gPiA+ ID4gUFZDLiBXZSBkb24ndCBoYXZlIGEgcGxhbiB0byBlbmFibGUgaXQgb24gb2xkZXIgcGxhdGZv cm0gdGhhbg0KPiA+ID4gPiBQVkMuDQo+ID4gPiA+IA0KPiA+ID4gPiBMZXQgbWUgYWRkIGEgY2hl Y2sgaGVyZSwgb25seSBlbmFibGVkIGl0IG9uIHBsYXRmb3JtIG5ld2VyIHRoYW4NCj4gPiA+ID4g UFZDDQo+ID4gPiA+IA0KPiA+ID4gDQo+ID4gPiBQcm9iYWJseSBhY3R1YWxseSBjaGVjayAneGUt PmluZm8uaGFzX3VzbScuDQo+ID4gPiANCj4gPiA+IFdlIG1pZ2h0IHdhbnQgdG8gcmVuYW1lIGZp ZWxkIHRvbyBhbmQgZHJvcCB0aGUgJ3VzbScgbm9tZW5jbGF0dXJlDQo+ID4gPiBidXQNCj4gPiA+ IHRoYXQgY2FuIGJlIGRvbmUgbGF0ZXIuDQo+ID4gDQo+ID4gUGVyaGFwcyAiaGFzX3JlY292ZXJh YmxlX3BhZ2VmYXVsdHMiIG9yIHNvbWUgZm9yIG9mIGFiYnJldmlhdGlvbi4NCj4gDQo+IFVTTSBo YXMgdHdvIGZsYXZvcnM6IGEgZHJpdmVyIGFsbG9jYXRvciBhbmQgYSBzeXN0ZW0gYWxsb2NhdG9y LiANCj4gDQo+IEJvdGggb2YgdGhvc2UgdHdvIGZsYXZvcnMgZGVwZW5kIG9uIHJlY292ZXJhYmxl IHBhZ2VmYXVsdC4gQW5kIGZvcg0KPiBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhleSBv bmx5IGRlcGVuZCBvbiByZWNvdmVyYWJsZSBwYWdlDQo+IGZhdWx0IEhXIGZlYXR1cmUuIEluIHRo ZSBmdXR1cmUsIHdlIG1pZ2h0IGhhdmUgb3RoZXIgaW1wbGVtZW50YXRpb24NCj4gdGhhdCBkZXBl bmRzIG9uIG1vcmUgSFcgZmVhdHVyZXMsIHN1Y2ggYXMgQVRTIChhZGRyZXNzIHRyYW5zbGF0aW9u DQo+IHNlcnZpY2UpLg0KPiANCj4gU28gYXQgbGVhc3QgZm9yIG5vdywgImhhc191c20iIGFuZCAi aGFzX3JlY292ZXJhYmxlX3BhZ2VmYXVsdHMiIGFyZQ0KPiBwcmV0dHkgbXVjaCB0aGUgc2FtZSB0 aGluZy4gSSB3aWxsIGtlZXAgdGhlIGhhc191c20gZm9yIG5vdy4gT3BlbiB0bw0KPiBhIGNoYW5n ZSBpbiB0aGUgZnV0dXJlIGFsc28uDQo+IA0KPiA+IA0KPiA+IEFub3RoZXIgcXVlc3Rpb24gdyBy IHQgdGhpcyBpcyB3aGV0aGVyIHdlIHNob3VsZCBkbyB0aGlzDQo+ID4gdW5jb25kaXRpb25hbGx5 IGV2ZW4gb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdC4gQWRkaW5nIGENCj4gPiBzdHJ1Y3Rf cGFnZQ0KPiA+IHBlciBWUkFNIHBhZ2Ugd291bGQgcG90ZW50aWFsbHkgY29uc3VtZSBhIHNpZ25p ZmljYW50IGFtb3VudCBvZg0KPiA+IHN5c3RlbQ0KPiA+IG1lbW9yeS4NCj4gDQo+IFllcywgSSB3 YXMgdGhpbmtpbmcgb2YgYWRkIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNvIHRoaXMN Cj4gZmVhdHVyZSBjYW4gYmUgZW5hYmxlL2Rpc2FibGVkIGF0IGNvbXBpbGF0aW9uIHRpbWUuIERv IHlvdSB3YW50IG1lIHRvDQo+IGFkZCBvbmU/DQoNClllcyBJIHRoaW5rIHRoYXQgaXMgYSBnb29k IGlkZWEuDQoNCldlIGFsc28gbWlnaHQgd2FudCB0byBhZGQgcGVyIGRldmljZSBlbmFibGluZyBp biBzeXNmcywgb3INCnNldHVwIG9uIGZpcnN0IHVzZSBhbmQgZGlzYWJsZSBpZiB1bnVzZWQgYXQg c2hyaW5raW5nIHRpbWUuDQoNCkJ1dCBJTU8gbGV0J3Mgc3RhcnQgd2l0aCBhIGtlcm5lbCBjb25m aWd1cmF0aW9uIG9wdGlvbiBmb3Igbm93Lg0KDQovVGhvbWFzDQoNCg0KPiANCj4gT2FrIA0KPiA+ IA0KPiA+IC9UaG9tYXMNCj4gPiANCj4gPiANCj4gPiANCj4gPiA+IA0KPiA+ID4gTWF0dA0KPiA+ ID4gDQo+ID4gPiA+IE9haw0KPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBNYXR0DQo+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBPYWsNCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKg CX0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgCXhlLT5tZW0u dnJhbS5hY3R1YWxfcGh5c2ljYWxfc2l6ZSA9DQo+ID4gPiA+ID4gPiA+ID4gPiA+IHRvdGFsX3Np emU7DQo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0zNTQsMTAgKzM1NiwxNiBAQCB2b2lkDQo+ID4g PiA+ID4gPiA+ID4gPiA+IHhlX21taW9fcHJvYmVfdGlsZXMoc3RydWN0DQo+ID4gPiA+ID4gPiA+ ID4gPiA+IHhlX2RldmljZQ0KPiA+ID4gPiA+ICp4ZSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqBz dGF0aWMgdm9pZCBtbWlvX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZA0KPiA+ID4g PiA+ID4gPiA+ID4gPiAqYXJnKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoHsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gwqAJc3RydWN0IHhlX2RldmljZSAqeGUgPSBhcmc7DQo+ID4gPiA+ID4gPiA+ID4g PiA+ICvCoMKgwqAgc3RydWN0IHhlX3RpbGUgKnRpbGU7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqAgdTggaWQ7DQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiDC oAlwY2lfaW91bm1hcCh0b19wY2lfZGV2KHhlLT5kcm0uZGV2KSwgeGUtDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gbW1pby5yZWdzKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqAJaWYgKHhlLT5tZW0u dnJhbS5tYXBwaW5nKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiDCoAkJaW91bm1hcCh4ZS0+bWVtLnZy YW0ubWFwcGluZyk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4g Kwlmb3JfZWFjaF90aWxlKHRpbGUsIHhlLCBpZCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwkJeGVf c3ZtX2Rldm1fcmVtb3ZlKHhlLCAmdGlsZS0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBtZW0udnJh bSk7DQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IFRoaXMgc2hvdWxkIHBy b2JhYmx5IGJlIGFib3ZlIGV4aXN0aW5nIGNvZGUuIFR5cGljYWwNCj4gPiA+ID4gPiA+ID4gPiA+ IG9uDQo+ID4gPiA+ID4gPiA+ID4gPiBmaW5pIHRvIGRvDQo+ID4gPiA+ID4gPiA+ID4gPiB0aGlu Z3MgaW4gcmV2ZXJzZSBvcmRlciBmcm9tIGluaXQuDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+ID4gV2lsbCBmaXgNCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+IMKgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+ID4gPiA+ID4gwqBzdGF0aWMgaW50IHhlX3ZlcmlmeV9sbWVtX3JlYWR5KHN0cnVjdCB4 ZV9kZXZpY2UNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKnhlKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bS5oDQo+ID4gPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmgNCj4gPiA+ID4gPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wOWY5YWZi MGU3ZDQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmgNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gQEAgLTAsMCArMSwxNCBAQA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiA+ID4g PiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDIzIEludGVsIENvcnBvcmF0aW9uDQo+ID4gPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IDIwMjQ/DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiA+ID4gVGhpcyBwYXRjaCB3YXMgYWN0dWFsbHkgd3JpdHRlbiAyMDIzDQo+ID4gPiA+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsjaWZuZGVmIF9fWEVfU1ZNX0gNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gKyNkZWZpbmUgX19YRV9TVk1fSA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSAieGVfZGV2aWNlX3R5cGVzLmgiDQo+ID4gPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdG8gaW5j bHVkZSB0aGlzLiBSYXRoZXIganVzdA0KPiA+ID4gPiA+ID4gPiA+ID4gZm9yd2FyZCBkZWNsIHN0 cnVjdHMNCj4gPiA+ID4gPiA+ID4gPiA+IHVzZWQgaGVyZS4NCj4gPiA+ID4gPiA+ID4gPiANCj4g PiA+ID4gPiA+ID4gPiBXaWxsIGZpeA0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ ID4gPiBlLmcuDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IHN0cnVjdCB4 ZV9kZXZpY2U7DQo+ID4gPiA+ID4gPiA+ID4gPiBzdHJ1Y3QgeGVfbWVtX3JlZ2lvbjsNCj4gPiA+ ID4gPiA+ID4gPiA+IHN0cnVjdCB4ZV90aWxlOw0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK2ludCB4ZV9zdm1fZGV2bV9hZGQo c3RydWN0IHhlX3RpbGUgKnRpbGUsIHN0cnVjdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiB4ZV9tZW1f cmVnaW9uDQo+ID4gPiA+ID4gKm1lbSk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICt2b2lkIHhlX3N2 bV9kZXZtX3JlbW92ZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwNCj4gPiA+ID4gPiA+ID4gPiA+ID4g c3RydWN0DQo+ID4gPiA+ID4geGVfbWVtX3JlZ2lvbg0KPiA+ID4gPiA+ID4gPiA+ID4gKm1lbSk7 DQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IFRoZSBhcmd1bWVudHMgaGVy ZSBhcmUgaW5jb25ncnVlbnQgaGVyZS4gVHlwaWNhbGx5IHdlDQo+ID4gPiA+ID4gPiA+ID4gPiB3 YW50IHRoZXNlIHRvDQo+ID4gPiA+ID4gPiA+ID4gPiBtYXRjaC4NCj4gPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiBXaWxsIGZpeA0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bV9kZXZtZW0uYw0KPiA+ ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtX2Rldm1lbS5jDQo+ID4g PiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IEluY29uZ3J1ZW50IGJldHdlZW4geGVf c3ZtLmggYW5kIHhlX3N2bV9kZXZtZW0uYy4NCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ ID4gPiBEaWQgeW91IG1lYW4gbWVtIHZzIG1yPyBpZiB5ZXMsIHdpbGwgZml4DQo+ID4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gQWdhaW4gdGhlc2UgdHdvDQo+ID4gPiA+ID4gPiA+ID4g PiBzaG91bGQNCj4gPiA+ID4gPiA+ID4gPiA+IG1hdGNoLg0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4g PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjNiN2ExOTYxY2M2DQo+ID4gPiA+ID4gPiA+ID4gPiA+ IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3hlL3hlX3N2bV9kZXZtZW0uYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDkxIEBA DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICogQ29weXJpZ2h0 IMKpIDIwMjMgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiA+ID4gMjAyND8NCj4gPiA+ID4gPiA+ID4gPiBJdCBpcyBmcm9tIDIwMjMNCj4gPiA+ID4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tbV90eXBlcy5oPg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkL21tLmg+DQo+ID4gPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ4ZV9kZXZpY2VfdHlw ZXMuaCINCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ4ZV90cmFjZS5oIg0KPiA+ID4g PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiB4ZV90cmFjZS5oIGFwcGVhcnMgdG8gYmUg dW51c2VkLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IFdpbGwgZml4DQo+ID4g PiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ4ZV9zdm0uaCIN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiA+ID4gPiA+ICtzdGF0aWMgdm1fZmF1bHRfdCB4ZV9kZXZtX21pZ3JhdGVfdG9fcmFtKHN0cnVj dA0KPiA+ID4gPiA+ID4gPiA+ID4gPiB2bV9mYXVsdCAqdm1mKQ0KPiA+ID4gPiA+ID4gPiA+ID4g PiArew0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiA+ID4gPiA+ID4g PiArfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMg dm9pZCB4ZV9kZXZtX3BhZ2VfZnJlZShzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4gPiA+ID4gPiA+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcGFnZW1hcF9vcHMN Cj4gPiA+ID4gPiA+ID4gPiA+ID4geGVfZGV2bV9wYWdlbWFwX29wcyA9IHsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gKwkucGFnZV9mcmVlID0geGVfZGV2bV9wYWdlX2ZyZWUsDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsJLm1pZ3JhdGVfdG9fcmFtID0geGVfZGV2bV9taWdyYXRlX3RvX3JhbSwNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g PiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gQXNzdW1lIHRoZXNlIGFyZSBwbGFjZWhvbGRlcnMgdGhh dCB3aWxsIGJlIHBvcHVsYXRlZA0KPiA+ID4gPiA+ID4gPiA+ID4gbGF0ZXI/DQo+ID4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gY29ycnJlY3QNCj4gPiA+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ID4g PiA+ICsgKiB4ZV9zdm1fZGV2bV9hZGQ6IFJlbWFwIGFuZCBwcm92aWRlIG1lbW1hcA0KPiA+ID4g PiA+ID4gPiA+ID4gPiBiYWNraW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGZvcg0KPiA+ID4gPiA+ IGRldmljZQ0KPiA+ID4gPiA+ID4gPiA+ID4gbWVtb3J5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsg KiBAdGlsZTogdGlsZSB0aGF0IHRoZSBtZW1vcnkgcmVnaW9uIGJsb25ncyB0bw0KPiA+ID4gPiA+ ID4gPiA+ID4gPiArICogQG1yOiBtZW1vcnkgcmVnaW9uIHRvIHJlbWFwDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgKg0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICogVGhpcyByZW1hcCBkZXZpY2UgbWVt b3J5IHRvIGhvc3QgcGh5c2ljYWwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gYWRkcmVzcw0KPiA+ID4g PiA+ID4gPiA+ID4gPiBzcGFjZSBhbmQgY3JlYXRlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgKiBz dHJ1Y3QgcGFnZSB0byBiYWNrIGRldmljZSBtZW1vcnkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAq DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBzdGFuZGFyZCBl cnJvciBjb2RlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IG90aGVyd2lzZQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICtpbnQgeGVfc3ZtX2Rldm1fYWRkKHN0cnVj dCB4ZV90aWxlICp0aWxlLCBzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiA+ID4geGVfbWVtX3JlZ2lv biAqbXIpDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IEhlcmUgSSBzZWUg dGhlIHhlX21lbV9yZWdpb24gaXMgZnJvbSB0aWxlLT5tZW0udnJhbSwNCj4gPiA+ID4gPiA+ID4g PiA+IHdvbmRlcmluZyByYXRoZXINCj4gPiA+ID4gPiA+ID4gPiA+IHRoYW4gdXNpbmcgdGhlIHRp bGUtPm1lbS52cmFtIHdlIHNob3VsZCB1c2UgeGUtDQo+ID4gPiA+ID4gPiA+ID4gPiA+bWVtLnZy YW0NCj4gPiA+ID4gPiA+ID4gPiA+IHdoZW4NCj4gPiA+ID4gPiBlbmFibGluZw0KPiA+ID4gPiA+ ID4gPiA+ID4gc3ZtPyBJc24ndCB0aGUgaWRlYSBiZWhpbmQgc3ZtIHRoZSBlbnRpcmUgbWVtb3J5 IGlzIDENCj4gPiA+ID4gPiA+ID4gPiA+IHZpZXc/DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+ID4gU3RpbGwgbmVlZCB0byB1c2UgdGlsZS4gVGhlIHJlYXNvbiBpcywgbWVtb3J5IG9m DQo+ID4gPiA+ID4gPiA+ID4gZGlmZmVyZW50DQo+ID4gPiA+ID4gPiA+ID4gdGlsZSBjYW4gaGF2 ZQ0KPiA+ID4gPiA+IGRpZmZlcmVudA0KPiA+ID4gPiA+ID4gPiBjaGFyYWN0ZXJpc3RpY3MsIHN1 Y2ggYXMgbGF0ZW5jeS4gU28gd2Ugd2FudCB0bw0KPiA+ID4gPiA+ID4gPiBkaWZmZXJlbnRpYXRl DQo+ID4gPiA+ID4gPiA+IG1lbW9yeSBiL3QgdGlsZXMNCj4gPiA+ID4gPiBhbHNvDQo+ID4gPiA+ ID4gPiA+IGluIHN2bS4gSSBuZWVkIHRvIGNoYW5nZSBiZWxvdyAiIG1yLT5wYWdlbWFwLm93bmVy ID0NCj4gPiA+ID4gPiA+ID4gdGlsZS0NCj4gPiA+ID4gPiA+ID4gPiB4ZS0+ZHJtLmRldiAiLg0K PiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gPiBvd25lciBzaG91bGQgYWxzbyBiZSB0aWxlLiBU aGlzIGlzIHRoZSB3YXkgaG1tDQo+ID4gPiA+ID4gPiA+IGRpZmZlcmVudGlhdGUNCj4gPiA+ID4g PiA+ID4gbWVtb3J5IG9mDQo+ID4gPiA+ID4gZGlmZmVyZW50DQo+ID4gPiA+ID4gPiA+IHRpbGUu DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gV2l0aCBzdm0gaXQgaXMgMSB2aWV3 LCBmcm9tIHZpcnR1YWwgYWRkcmVzcyBzcGFjZQ0KPiA+ID4gPiA+ID4gPiA+IHBlcnNwZWN0aXZl IGFuZCBmcm9tDQo+ID4gPiA+ID4gcGh5c2ljYWwNCj4gPiA+ID4gPiA+ID4gc3RydWN0IHBhZ2Ug cGVyc3BlY3RpdmUuIFlvdSBjYW4gdGhpbmsgb2YgYWxsIHRoZSB0aWxlJ3MNCj4gPiA+ID4gPiA+ ID4gdnJhbQ0KPiA+ID4gPiA+ID4gPiBpcyBzdGFja2VkIHRvZ2V0aGVyDQo+ID4gPiA+ID4gdG8N Cj4gPiA+ID4gPiA+ID4gZm9ybSBhIHVuaWZpZWQgdmlldyB0b2dldGhlciB3aXRoIHN5c3RlbSBt ZW1vcnkuIFRoaXMNCj4gPiA+ID4gPiA+ID4gZG9lc24ndA0KPiA+ID4gPiA+ID4gPiBwcm9oaWJp dCB1cw0KPiA+ID4gPiA+IGZyb20NCj4gPiA+ID4gPiA+ID4gZGlmZmVyZW50aWF0ZSBtZW1vcnkg ZnJvbSBkaWZmZXJlbnQgdGlsZS4gVGhpcw0KPiA+ID4gPiA+ID4gPiBkaWZmZXJlbnRpYXRpb24g YWxsb3cgdXMgdG8NCj4gPiA+ID4gPiBvcHRpbWl6ZQ0KPiA+ID4gPiA+ID4gPiBwZXJmb3JtYW5j ZSwgaS5lLiwgd2UgY2FuIHdpc2VseSBwbGFjZSBtZW1vcnkgaW4gc3BlY2lmaWMNCj4gPiA+ID4g PiA+ID4gdGlsZS4gSWYgd2UgZG9uJ3QNCj4gPiA+ID4gPiA+ID4gZGlmZmVyZW50aWF0ZSwgdGhp cyBpcyBub3QgcG9zc2libGUuDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiBPayBtYWtlcyBzZW5zZS4NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ IE1hdHQNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4g PiA+IEkgc3VwcG9zZSBpZiB3ZSBkbyB0aGF0IHdlIGFsc28gb25seSB1c2UgMSBUVE0gVlJBTQ0K PiA+ID4gPiA+ID4gPiA+ID4gbWFuYWdlciAvIGJ1ZGR5DQo+ID4gPiA+ID4gPiA+ID4gPiBhbGxv Y2F0b3IgdG9vLiBJIHRob3VnaHQgSSBzYXcgc29tZSBwYXRjaGVzIGZseWluZw0KPiA+ID4gPiA+ ID4gPiA+ID4gYXJvdW5kDQo+ID4gPiA+ID4gPiA+ID4gPiBmb3IgdGhhdCB0b28uDQo+ID4gPiA+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gVHRtIHZyYW0gbWFuYWdlciBpcyBub3QgaW4gdGhl IHBpY3R1cmUuIFdlIGRlbGliZXJhdGVseQ0KPiA+ID4gPiA+ID4gPiA+IGF2b2lkZWQgaXQgcGVy DQo+ID4gPiA+ID4gcHJldmlvdXMNCj4gPiA+ID4gPiA+ID4gZGlzY3Vzc2lvbg0KPiA+ID4gPiA+ ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IFllcyBzYW1lIGJ1ZGR5IGFsbG9jYXRvci4gSXQgaXMg aW4gbXkgcHJldmlvdXMgUE9DOg0KPiA+ID4gPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2Ry aS0NCj4gPiA+ID4gPiA+ID4gZGV2ZWwvMjAyNDAxMTcyMjEyMjMuMTg1NDAtMTItb2FrLnplbmdA aW50ZWwuY29tLy4gSQ0KPiA+ID4gPiA+ID4gPiBkaWRuJ3QNCj4gPiA+ID4gPiA+ID4gcHV0IHRo b3NlDQo+ID4gPiA+ID4gcGF0Y2hlcw0KPiA+ID4gPiA+ID4gPiBpbiB0aGlzIHNlcmllcyBiZWNh dXNlIEkgd2FudCB0byBtZXJnZSB0aGlzIHNtYWxsIHBhdGNoZXMNCj4gPiA+ID4gPiA+ID4gc2Vw YXJhdGVseS4NCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZ0b19wY2lfZGV2KHRpbGUt PnhlLQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGRybS5kZXYpLT5kZXY7DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsJc3RydWN0IHJlc291cmNlICpyZXM7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJdm9p ZCAqYWRkcjsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gPiA+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJcmVzID0gZGV2bV9yZXF1ZXN0X2ZyZWVfbWVt X3JlZ2lvbihkZXYsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICZpb21lbV9yZXNvdXJjZSwNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gKwkJCQkJwqDCoCBtci0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB1c2Fi bGVfc2l6ZSk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJaWYgKElTX0VSUihyZXMpKSB7DQo+ID4g PiA+ID4gPiA+ID4gPiA+ICsJCXJldCA9IFBUUl9FUlIocmVzKTsNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwltci0+cGFnZW1hcC50eXBlID0gTUVNT1JZ X0RFVklDRV9QUklWQVRFOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCW1yLT5wYWdlbWFwLnJhbmdl LnN0YXJ0ID0gcmVzLT5zdGFydDsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwltci0+cGFnZW1hcC5y YW5nZS5lbmQgPSByZXMtPmVuZDsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwltci0+cGFnZW1hcC5u cl9yYW5nZSA9IDE7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJbXItPnBhZ2VtYXAub3BzID0gJnhl X2Rldm1fcGFnZW1hcF9vcHM7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJbXItPnBhZ2VtYXAub3du ZXIgPSB0aWxlLT54ZS0+ZHJtLmRldjsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwlhZGRyID0gZGV2 bV9tZW1yZW1hcF9wYWdlcyhkZXYsICZtci0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPnBhZ2VtYXAp Ow0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCWlmIChJU19FUlIoYWRkcikpIHsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gKwkJZGV2bV9yZWxlYXNlX21lbV9yZWdpb24oZGV2LCByZXMtDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gc3RhcnQsDQo+ID4gPiA+ID4gcmVzb3VyY2Vfc2l6ZShyZXMpKTsNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gKwkJcmV0ID0gUFRSX0VSUihhZGRyKTsNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gKwkJZHJtX2VycigmdGlsZS0+eGUtPmRybSwgIkZhaWxlZCB0bw0KPiA+ID4gPiA+ID4gPiA+ ID4gPiByZW1hcCB0aWxlICVkDQo+ID4gPiA+ID4gbWVtb3J5LA0KPiA+ID4gPiA+ID4gPiA+ID4g ZXJybm8gJWRcbiIsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJCQkJdGlsZS0+aWQsIHJldCk7DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJ fQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCW1yLT5ocGFfYmFzZSA9IHJlcy0+c3RhcnQ7DQo+ID4g PiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwlkcm1faW5mbygmdGlsZS0+ eGUtPmRybSwgIkFkZGVkIHRpbGUgJWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gbWVtb3J5DQo+ID4g PiA+ID4gPiA+ID4gPiA+IFslbGx4LSVsbHhdIHRvDQo+ID4gPiA+ID4gZGV2bSwNCj4gPiA+ID4g PiA+ID4gPiA+IHJlbWFwcGVkIHRvICVwclxuIiwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwkJCXRp bGUtPmlkLCBtci0+aW9fc3RhcnQsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IG1yLQ0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IGlvX3N0YXJ0ICsgbXItDQo+ID4gPiA+ID4gPiB1c2FibGVfc2l6ZSwNCj4g PiA+ID4gPiA+ID4gPiA+IHJlcyk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICogeGVfc3ZtX2Rldm1fcmVtb3Zl OiBVbm1hcCBkZXZpY2UgbWVtb3J5IGFuZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBmcmVlDQo+ID4g PiA+ID4gPiA+ID4gPiA+IHJlc291cmNlcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArICogQHhlOiB4 ZSBkZXZpY2UNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqIEBtcjogbWVtb3J5IHJlZ2lvbiB0byBy ZW1vdmUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiA+ID4gPiArdm9p ZCB4ZV9zdm1fZGV2bV9yZW1vdmUoc3RydWN0IHhlX2RldmljZSAqeGUsDQo+ID4gPiA+ID4gPiA+ ID4gPiA+IHN0cnVjdA0KPiA+ID4gPiA+IHhlX21lbV9yZWdpb24NCj4gPiA+ID4gPiA+ID4gPiA+ ICptcikNCj4gPiA+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwkvKkZJ WE1FOiBiZWxvdyBjYXVzZSBhIGtlcm5lbCBoYW5nZSBkdXJpbmcNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gbW9kdWVsIHJlbW92ZSovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsjaWYgMA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZ0b19wY2lfZGV2KHhlLQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ZHJtLmRldiktDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGV2Ow0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJaWYgKG1yLT5ocGFfYmFz ZSkgew0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCQlkZXZtX21lbXVubWFwX3BhZ2VzKGRldiwgJm1y LQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHBhZ2VtYXApOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiAr CQlkZXZtX3JlbGVhc2VfbWVtX3JlZ2lvbihkZXYsIG1yLQ0KPiA+ID4gPiA+ID4gcGFnZW1hcC5y YW5nZS5zdGFydCwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKwkJCW1yLT5wYWdlbWFwLnJhbmdlLmVu ZCAtDQo+ID4gPiA+ID4gPiA+ID4gPiA+IG1yLQ0KPiA+ID4gPiA+ID4gcGFnZW1hcC5yYW5nZS5z dGFydCArMSk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiAr I2VuZGlmDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IFRoaXMgd291bGQg bmVlZCB0byBiZSBmaXhlZCB0b28uDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gWWVzLi4uDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ ID4gT2FrDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IE1hdHQNCj4gPiA+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+IC0tDQo+ID4gPiA+ID4gPiA+ID4gPiA+IDIuMjYuMw0K PiA+ID4gPiA+ID4gPiA+ID4gPiANCj4gDQoNCg==