From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 29C8642DD0; Tue, 4 Jul 2023 10:06:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 13CF140F18; Tue, 4 Jul 2023 10:06:28 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 170C040E03 for ; Tue, 4 Jul 2023 10:06:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688457986; x=1719993986; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=6T7KexwoLDcpJzxpQ/FfdfI9lmyxe33kAfw6JQEG0bY=; b=VPR540F5a+sd3dkwFjc03FT05WQzcpXjPDrLkQewE6bpQMBLBfnzGW+Y IiAoxKzIGQcmSMzSVIZX5SWrm4f4LUODqYJ/UGhRIMbLlR6BaqyVWsfRi zNhfoGTY48x8HBBnTsgdj1GGOZDZLRB9hvs1y4hJ8rM6awKkTGt9KOGTs tf70txIkR6wYhv6Uf/I4u29SJaNTwV388TZU3Ja+KSY7Wg19ZjLC7Rmvf FlE+PygfWq0lBe7vifmq6FPRnu63DmfvlSeyMz5wBIoT8InDaA/2Nje7O yskGrIpUM5ulQLgxxL8U7RmRnAB/yGdtkL2iGm0xKMpGWPkrCyq7S07gp A==; X-IronPort-AV: E=McAfee;i="6600,9927,10760"; a="363103108" X-IronPort-AV: E=Sophos;i="6.01,180,1684825200"; d="scan'208";a="363103108" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jul 2023 01:06:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10760"; a="748346070" X-IronPort-AV: E=Sophos;i="6.01,180,1684825200"; d="scan'208";a="748346070" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 04 Jul 2023 01:06:24 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Tue, 4 Jul 2023 01:06:24 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Tue, 4 Jul 2023 01:06:23 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Tue, 4 Jul 2023 01:06:23 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.46) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Tue, 4 Jul 2023 01:06:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SG4jbEoPsBJAWrhQZLWRjIyi2ADnzv3shwDvs6Qs0iVCHoCRWy9BIPQgs92R/tAEBylqO0+/QFU+aZWdilAI6+RnISLvz9e8vYVT2bv8utnmFIBBsp9sZoY1nAlC7olHtGWET9jkRtMtt447/vQ4J8NywAL2hECeVs8/inaYk/6EkmfRLbPt1mElMdid5EUxjt3/s+IetEJ+Bv1IgRVNHi2hAdA5B/uOyH7pO06zPfBkGDAhr08/UsjL9AcU5bC2JtgLF1pDzHUSivcFnTEB1fcwVJz9lUiCAc7Xwmp7yZLD13T30LllfZ1N/P94f3vDqdmzlYJekHd4MG2wBN34cw== 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=6T7KexwoLDcpJzxpQ/FfdfI9lmyxe33kAfw6JQEG0bY=; b=H8V053kZuREJAJ2yqu/JWKFfk9gL8AAmzuHZy1j0Aob4vcfYO6BojizQlWEAwjM81R6vBpYUEgigdFNfqsCiV6d4Uk3okNk/x1WZXN5SD2EWkaJWLibyhrDjx8j8PFpmCxjTAT2YthB3R2VUOMiAieBag0lT9Ov1q8hDYMwVZtde/WlfdP4KsfIMQWRAGg/8r9IHYj8mSD4NICTN1mvTwY9Q+rSrOAQB3CcDxQsMI/c4OrElqOlA5rteW+XTqa6jTCEFJDFdwk6wJxcGtbBVIyiCtWa/NvNopmco4hcer2kvzu3AEzbVpWxw9mdrrQtXbVb9WqDotsg7WgRx4gFvlA== 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 BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by PH8PR11MB8259.namprd11.prod.outlook.com (2603:10b6:510:1c2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Tue, 4 Jul 2023 08:06:16 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::8575:f58b:94d7:e121]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::8575:f58b:94d7:e121%7]) with mapi id 15.20.6544.024; Tue, 4 Jul 2023 08:06:16 +0000 From: "Ding, Xuan" To: "Gupta, Nipun" , "dev@dpdk.org" , "thomas@monjalon.net" , "Burakov, Anatoly" , "Yigit, Ferruh" , "David Marchand" CC: "Agarwal, Nikhil" , "He, Xingguang" , "Ling, WeiX" Subject: RE: [PATCH] vfio: do not coalesce DMA mappings Thread-Topic: [PATCH] vfio: do not coalesce DMA mappings Thread-Index: AQHZHDVrAwVw6KlvPU+E8wN/ilq+d6+ijFzQgAEkXACAAD8nwIAGQp9wgAAdrYCAAAzz0A== Date: Tue, 4 Jul 2023 08:06:16 +0000 Message-ID: References: <20221230095853.1323616-1-nipun.gupta@amd.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_ActionId=7c300112-447d-4c26-b53d-4560e3a5705b; MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_ContentBits=0; MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_Enabled=true; MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_Method=Privileged; MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_Name=Non-Business-AIP 2.0; MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_SetDate=2023-07-04T06:53:46Z; MSIP_Label_64e4cbe8-b4f6-45dc-bcba-6123dfd2d8bf_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; 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: BN9PR11MB5513:EE_|PH8PR11MB8259:EE_ x-ms-office365-filtering-correlation-id: ccce76ac-fd9b-47a1-eb56-08db7c658ab5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vsmafc/G7IE2mRefi7Tap+t5Fj7wmQyAFwxjGiXVoaUQBn5I46l8/fFriAWBgQXs5BxQZqBA5mPRmMr76dfC8K0s1ZXHEK7+C3FQ6+/taxxsH/Ov6Q5FUvAMMwIiS/c8mqX7CA6rmkmTGMKDc0Kgfc2BtAsiPV81bzFhStkzD7TwCOlkJ+aJDfRBdBI1RtMdj7OlXO+2nq/mQycC93apf9kRPlZx+EugFpmClRKQQUQr4ruifDzC2m2xjPiN92OoD18EuXwTHH1iw1qMkbsixzApJOTgONEHeoo/fBxrrZBrhPEVsadY5jtur1ct+Un5MOxUl22t5OvsiX5jvKThO0DrT9/yIdaO0bHEXsEHuvj5/Zb1j6ljw2x1b3ZnKWS8R7kLqY2sP+BiX/Q4gc8gKV8JdQ91U8rH6nzX/EtjDaJ1/UpK+grsZZBrugWwfY6fh+gklixaLdZxj3KznWMSZyPICH6AIpIJOqyA9K8Ed2MHpzjsMBAgVY3Ip8iqTwcdHi5qZM4fK1kWE7k2x5tS/k6Id/ysNxtNj7Hac5KsRnF/LfsUvZ+rfs9pcrJu3RRVcljgcAF/2RYFCQUPc6IpVvTBTJNnf7eOl9zs5FVEO7cwab5HB76y7Uhn9y2IVy044tMHNXYyWNd03BkjpEplbw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(346002)(376002)(366004)(136003)(39860400002)(451199021)(110136005)(54906003)(2906002)(478600001)(26005)(9686003)(966005)(86362001)(33656002)(7696005)(52536014)(8936002)(8676002)(5660300002)(71200400001)(41300700001)(316002)(4326008)(122000001)(66446008)(66946007)(66556008)(66476007)(38100700002)(64756008)(55016003)(38070700005)(82960400001)(53546011)(6506007)(76116006)(83380400001)(186003)(107886003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bDVFdFA2d2FXQUlOMlErcmNJQVVIUWEzUXdyTEZMbVpsbUk3U2FvaHp5bXU0?= =?utf-8?B?cHdIU0xWalBqeVdzUnRQdzdsa09FRnA2Y083TmtVMmNRcGc2MVVLbjM1eFp3?= =?utf-8?B?cVV6dW01dVIzcDVUSFAzdnJqN2hsMUUvd2h6MjZEd3lTTWFSc3NPNWo2NkxT?= =?utf-8?B?bjhvN0JBTlUyZFh0ZDlldzBEbzFZTWloN09UMDlBN25mZDI0QTRyTS9CTDJl?= =?utf-8?B?UVFhVVEzUmJtQUxrR0VhTEpsanVBalB0Y0F1b21SbnB4eDEzNHJkaCt0WWs5?= =?utf-8?B?M1FrSGxiYU9RbDBkUGVMWVEzOW9yOVQ5L0FPOElsNlAxSEZsdmVQNGN3dStD?= =?utf-8?B?bE0zTkFjTnZ4cnI1amNxTGxUUWNrS2hvOVArN1NPaGduMXRyejZOZ0ZFTXc3?= =?utf-8?B?WDlxcGJHMlBMRFpON3R1aEJnRC9KSzA0bXdQMHVXY253YWdwNy9ML2FCMllh?= =?utf-8?B?ZmZNT1o0UzN4c0s2QW5EZnVyVWZraXRjTC9kNGFqRWlYOXRmUGdWWTIrdXpz?= =?utf-8?B?RHhIOWhJRkl1a0ZNWmU0dHNxY29Bd0FHZUJaVUFhMVFvSVUzaXdPaDZQbXBW?= =?utf-8?B?WW03ZlFNbFU4UUROQSt1NjZ6T3BXRXliNUxYQzhQL29XRHBpQ1h4L0lFdHpw?= =?utf-8?B?RWRwdVdPV3Z2VTNuTEd6MzZiWHF0ZHlHUjNYU0pMdmRhbXI0bERuc05Eb3JN?= =?utf-8?B?dXVicVg4a1RHdGpYcUJSTDd2dzU1UU9tNDh3ZnJhR2gxWGFlUDlxVmF4R0dU?= =?utf-8?B?bG9XdDJXZGY2ZlJvb1QzenpxOXZkRDZjVVMwaWZ4dFN6b3ZIY3FUdGVyY3lI?= =?utf-8?B?aUJWRzd6dzQ2ZkZua1p1STE2WTBOVkJrSXFrQXQ5WEs0RWdpVDVXNU8yMVJn?= =?utf-8?B?TzBXMUxnSldRNWlUZmluZDltL1R4UWJKYXlTUGhWVkFiR3RZVW1OMDNkSWlE?= =?utf-8?B?NjBRak9TTnVSNG5ka2RTc0wwWXkyeEhLRjhkcWJJNFcybis0OWNPM1gybm9S?= =?utf-8?B?a3h6eFRKb1NKYkZLZXBwcDloVnU5MkU2Vm16RzQxOFV5VDFjd3JaZGNHTlpY?= =?utf-8?B?cjVzMTAzRUNLdlRnYkR0WG1FNmtXcjVGM1k3cDhCL1pJcFBlVmpqZGhGckg4?= =?utf-8?B?NVhJeFZaWjI0ZEtvQ2drRCtMY1BoNkVOeDZ5c3Z5WWNndUxSTktNSEVUUXhC?= =?utf-8?B?azRva2l6NnJlajhKR2xiK0JMMEFiQldJOUc2eGJ2OHY1MDJ5UTdINU05Wmcr?= =?utf-8?B?L0tramU1Q2dUdmxmd0VjWkFDM21LbjhHRVExSlVzb3h3OFk1d1Z5N0NTTTN3?= =?utf-8?B?ZFdJdThha1JTM0xTME1iZWVZQ0pncWtKcmhENmYzYVdmaFpZeHk4NmRCbTdJ?= =?utf-8?B?TE0wREZxcEJnbWNuUUZTQVNRc0dUT0VkZ0lTZ3VWeEd3RU11R0hwSThrN1h4?= =?utf-8?B?U2QwZnNUSWJUZmtwTUh5VFdIT0tDV2tSNGU3YTIrcDNGV1dHL1YzWG5KQ01L?= =?utf-8?B?UC9vM0cxektWVlNnMXEzQU1QQVBFeGJGRDhKV1ZlbHVvd1V3dmorSUlHTSsy?= =?utf-8?B?UWVlWVYvVk1Oa1ZMSUh2VnBBMVUvZ1B1NWNjQXdmRERRUG96cUU0NG1DOWlH?= =?utf-8?B?ODZZaWlWSU9KekQreEJYYUQ0TmNXSERPZ25LajhZaU9aY2pGN1AxRExrRGMv?= =?utf-8?B?S08zZ09qeHRIaUdVWW4vRitwblNDYWRlR3ZCcnA4RmRhRnlhcDNZZXBHQlRQ?= =?utf-8?B?STlnbXJMeDdJTVQyNGRwTmN6aHlFYVUzbnF3czg5c1ZnbjRIdEVCZnV6TnZh?= =?utf-8?B?eWVUeVNPMzdpeFo0NmFvZmlwV0YxTjJHcHc3L0FYcEtQL0JBZ3UrdU5hUlNw?= =?utf-8?B?TjhtMjV5WHZUazE0cGl3UFRmNUozVDJ2bUw3blVRVTNNM05yNXVyUDNBT2dk?= =?utf-8?B?anRadXBxMGVhRzJteW5rdHkrS3EwaVFiSEFiVnludHQ5T1EwSFdGUEZSY0tn?= =?utf-8?B?Tlp1YlVYOTBrZlBsYmpsMW9idlk2NmgzWjhQRithMUJSSzR6Z0xZamdRbU5s?= =?utf-8?B?RkZXQ1BoVGo4ZWwzVWxzUXUyZjVRdVM3REdUclJ0TWV1ejUxeWk1TC9PM1FK?= =?utf-8?Q?f/uPVDZyhzl59gmGSguU/xljT?= 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: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccce76ac-fd9b-47a1-eb56-08db7c658ab5 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jul 2023 08:06:16.3629 (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: wT3fdxEO76za/mnpBSqXBBtLE+Kcam1eFaDas9SY1TukTaPdHRVwKy2RYL2F+5cr48EGC0dl2SmkgzEnSCFzMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB8259 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgTmlwdW4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR3VwdGEs IE5pcHVuIDxOaXB1bi5HdXB0YUBhbWQuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBKdWx5IDQsIDIw MjMgMjo1NCBQTQ0KPiBUbzogRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVsLmNvbT47IGRldkBk cGRrLm9yZzsgdGhvbWFzQG1vbmphbG9uLm5ldDsNCj4gQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9s eS5idXJha292QGludGVsLmNvbT47IFlpZ2l0LCBGZXJydWgNCj4gPEZlcnJ1aC5ZaWdpdEBhbWQu Y29tPjsgRGF2aWQgTWFyY2hhbmQgPGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb20+DQo+IENjOiBB Z2Fyd2FsLCBOaWtoaWwgPG5pa2hpbC5hZ2Fyd2FsQGFtZC5jb20+OyBIZSwgWGluZ2d1YW5nDQo+ IDx4aW5nZ3VhbmcuaGVAaW50ZWwuY29tPjsgTGluZywgV2VpWCA8d2VpeC5saW5nQGludGVsLmNv bT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSF0gdmZpbzogZG8gbm90IGNvYWxlc2NlIERNQSBtYXBw aW5ncw0KPiANCj4gSGkgWHVhbiwNCj4gDQo+IFBsZWFzZSBzZWUgaW5saW5lLg0KPiANCj4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IERpbmcsIFh1YW4gPHh1YW4uZGlu Z0BpbnRlbC5jb20+DQo+ID4gU2VudDogVHVlc2RheSwgSnVseSA0LCAyMDIzIDEwOjQzIEFNDQo+ ID4gVG86IEd1cHRhLCBOaXB1biA8TmlwdW4uR3VwdGFAYW1kLmNvbT47IGRldkBkcGRrLm9yZzsN Cj4gPiB0aG9tYXNAbW9uamFsb24ubmV0OyBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFr b3ZAaW50ZWwuY29tPjsNCj4gPiBZaWdpdCwgRmVycnVoIDxGZXJydWguWWlnaXRAYW1kLmNvbT4N Cj4gPiBDYzogQWdhcndhbCwgTmlraGlsIDxuaWtoaWwuYWdhcndhbEBhbWQuY29tPjsgSGUsIFhp bmdndWFuZw0KPiA+IDx4aW5nZ3VhbmcuaGVAaW50ZWwuY29tPjsgTGluZywgV2VpWCA8d2VpeC5s aW5nQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW1BBVENIXSB2ZmlvOiBkbyBub3QgY29h bGVzY2UgRE1BIG1hcHBpbmdzDQo+ID4NCj4gPiBIaSBOaXB1biwNCj4gPg0KPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IERpbmcsIFh1YW4NCj4gPiA+IFNlbnQ6 IEZyaWRheSwgSnVuZSAzMCwgMjAyMyAxOjU4IFBNDQo+ID4gPiBUbzogTmlwdW4gR3VwdGEgPG5p cHVuLmd1cHRhQGFtZC5jb20+OyBkZXZAZHBkay5vcmc7DQo+ID4gPiB0aG9tYXNAbW9uamFsb24u bmV0OyBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPjsNCj4gPiA+ IGZlcnJ1aC55aWdpdEBhbWQuY29tDQo+ID4gPiBDYzogbmlraGlsLmFnYXJ3YWxAYW1kLmNvbTsg SGUsIFhpbmdndWFuZyA8eGluZ2d1YW5nLmhlQGludGVsLmNvbT47DQo+ID4gPiBMaW5nLCBXZWlY IDx3ZWl4LmxpbmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSF0gdmZpbzog ZG8gbm90IGNvYWxlc2NlIERNQSBtYXBwaW5ncw0KPiA+ID4NCj4gPiA+IEhpIE5pcHVuLA0KPiA+ ID4NCj4gPiA+IFJlcGxpZXMgYXJlIGlubGluZS4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IE5pcHVuIEd1cHRhIDxuaXB1bi5ndXB0YUBh bWQuY29tPg0KPiA+ID4gPiBTZW50OiBGcmlkYXksIEp1bmUgMzAsIDIwMjMgOTo0NiBBTQ0KPiA+ ID4gPiBUbzogRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsN Cj4gPiA+ID4gdGhvbWFzQG1vbmphbG9uLm5ldDsgQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5i dXJha292QGludGVsLmNvbT47DQo+ID4gPiA+IGZlcnJ1aC55aWdpdEBhbWQuY29tDQo+ID4gPiA+ IENjOiBuaWtoaWwuYWdhcndhbEBhbWQuY29tOyBIZSwgWGluZ2d1YW5nDQo+ID4gPiA+IDx4aW5n Z3VhbmcuaGVAaW50ZWwuY29tPjsgTGluZywgV2VpWCA8d2VpeC5saW5nQGludGVsLmNvbT4NCj4g PiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSF0gdmZpbzogZG8gbm90IGNvYWxlc2NlIERNQSBtYXBw aW5ncw0KPiA+ID4gPg0KPiA+ID4gPiBIaSBYdWFuLA0KPiA+ID4gPg0KPiA+ID4gPiBUaGFua3Mg Zm9yIHBvaW50aW5nIG91dCB0aGUgaXNzdWUgYW5kIGZpZ3VyaW5nIG91dCB0aGUgcGF0Y2ggd2hp Y2gNCj4gPiA+ID4gaW50cm9kdWNlZCB0aGlzLiBJZiB5b3UgaGF2ZSBhbnN3ZXJzIHRvIGJlbG93 IHF1ZXJpZXMsIHBsZWFzZSBsZXQgbWUga25vdzoNCj4gPiA+ID4NCj4gPiA+ID4gSXMgdGhlcmUg YW55IG90aGVyIHRlc3QgY2FzZXMgd2hpY2ggdGVzdHMgIi0tbm8taHVnZSIgd2hpY2ggcGFzcz8N Cj4gPiA+DQo+ID4gPiBZZXMsIHRoZXJlIGFyZSB0ZXN0IGNhc2VzIGFkZGluZyAiLS1uby1odWdl IiBvcHRpb24gdG8gdmFsaWRhdGUgNGsNCj4gPiA+IHBhZ2Ugc2l6ZSBpbiBhc3luYyB2aG9zdC4N Cj4gPiA+IEFjdHVhbGx5LCB0aGUgcGFnZSBzaXplIGlzIGRlY2lkZWQgYnkgZnJvbnQtZW5kLCBz byBJIHRoaW5rIHRoaXMNCj4gPiA+IGNhc2UgY2FuIGJlIHJlbW92ZWQuDQo+ID4gPg0KPiA+ID4g UHJldmlvdXNseSwgdGVzdHBtZCBjYW4gc3RhcnQgd2l0aCAiLS1uby1odWdlIiBvcHRpb25zIChu b3Qgc3VyZSBpZg0KPiA+ID4gdGhlcmUgYXJlIHRlc3QgY2FzZXMpLg0KPiA+ID4gQ21kOiAuL2J1 aWxkL2FwcC9kcGRrLXRlc3RwbWQgLWwgNS02IC1uIDQgLS1uby1odWdlIC1tIDEwMjQgLS0gLWkN Cj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEFsc28sIGlmIHdlIGNoYW5nZSB0aGUgIi1tIiBvcHRp b24gdG8gcHJvdmlkZSBsb3dlciBtZW1vcnksIGRvZXMNCj4gPiA+ID4gdGhlIHRlc3QgcGFzcz8N Cj4gPiA+DQo+ID4gPiAiLW0iIG9wdGlvbiBpcyBhbHNvIGFkZGVkIGFuZCBkb2VzIG5vdCB3b3Jr Lg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gV2hlbiB5b3UgbWVudGlvbiB0b28gbWFueSBwYWdl cyBleGNlZWQgdGhlIGNhcGFiaWxpdHkgb2YgSU9NTVUsDQo+ID4gPiA+IHlvdSBhcmUgcmVmZXJy aW5nIHRvIEhXIGNhcGFiaWxpdHkgdG8gY3JlYXRlIG11bHRpcGxlIHBhZ2VzPyBIZXJlDQo+ID4g PiA+IGl0IHNlZW1zIGluIGNhc2Ugb2YgNEsgcGFnZSBzaXplIHdlIG5lZWQgMjU2SyBwYWdlcyB3 aGljaCBpcyBsaW1pdGluZyB0aGUNCj4gY2FwYWNpdHk/DQo+ID4gPg0KPiA+ID4gWWVzLCB0aGlz IGlzIHRoZSByZXN1bHQgb2YgbXkgaW5pdGlhbCBkZWJ1Z2dpbmcuDQo+ID4gPiBUaGUgZGlyZWN0 IGltcGFjdCBpcyB0aGF0IHRoaXMga2luZCBvZiB0ZXN0cG1kIGNhc2VzIGNhbm5vdCBzdGFydCBu b3cuDQo+ID4gPiBJZiB0aGlzIGlzIGV4cGVjdGVkLCBJIHRoaW5rIHdlIGNhbiBjbG9zZSB0aGlz IGRlZmVjdCBhbmQgaWdub3JlIHRoZSAiLS1uby0NCj4gaHVnZSINCj4gPiA+IG9wdGlvbiB3aGVu IHN0YXJ0Lg0KPiA+DQo+ID4gQW55IGluc2lnaHRzPyBTaG91bGQgd2UganVzdCBpZ25vcmUgdGhl ICItLW5vLWh1Z2UiIG9wdGlvbiBhbmQgY2xvc2UgdGhpcw0KPiBkZWZlY3Q/DQo+ID4gTm93IHdl IGRpZCB0aGlzIGFzIGEgd29ya2Fyb3VuZC4gU2VlbXMgbm8gb25lIHVzZXMgdGhlICItLW5vLWh1 Z2UiDQo+ID4gb3B0aW9uIGluIHRlc3RwbWQgbm93Lg0KPiANCj4gVkZJTyBzdXBwb3J0cyBkbWFf ZW50cnlfbGltaXQgYXMgYSBtb2R1bGUgcGFyYW1ldGVyLCB3aGljaCBoYXMgYSBkZWZhdWx0DQo+ IHZhbHVlIG9mIFUxNl9NQVggaS5lLiA2NEssIG1vc3QgbGlrZWx5IHdoaWNoIGlzIGxpbWl0aW5n IGNyZWF0aW9uIG9mIDI1NksNCj4gZW50cmllcyBmb3IgNEsgcGFnZXMgaGVyZS4gVGhpcyBjYW4g YmUgbW9kaWZpZWQgd2hpbGUgaW5zZXJ0aW5nIHZmaW8gbW9kdWxlOg0KPiAgICAgICAgIG1vZHBy b2JlIHZmaW9faW9tbXVfdHlwZTEgZG1hX2VudHJ5X2xpbWl0PTEwMDAwMDANCg0KVGhhbmtzIGZv ciB5b3VyIHN1Z2dlc3Rpb24uIEkgdHJpZWQgaXQgb24gdWJ1bnR1IDIyLjA0IGJ1dCBpdCBkb2Vz IG5vdCB3b3JrLg0KVGhlIHJlYXNvbiBJIHRoaW5rIGlzIHZmaW8tcGNpIGlzIGJ1aWxkLWluIGlu IGtlcm5lbCBkcml2ZXIgKHNpbmNlIDIwLjA0KSBhbmQgaXQgZG9lcyBub3Qgc3VwcG9ydCBkeW5h bWljIGluc21vZC9ybW1vZC4NCg0KRG9lcyB0aGlzIGNvbW1hbmQgbmVlZCB0byBybW1vZCB2Zmlv IGZpcnN0IGFuZCB0aGVuIG1vZHByb2JlIGFnYWluPw0KDQpUaGFua3MsDQpYdWFuDQoNCj4gDQo+ IFlvdSBjYW4gdXBkYXRlIHRoZSB0ZXN0IGNhc2Ugd2l0aCB1cGRhdGluZyB0aGlzIGxpbWl0LCBh bmQgdGVzdCBjYXNlIHNoYWxsIHBhc3MuDQo+IA0KPiBUaGFua3MsDQo+IE5pcHVuDQo+IA0KPiA+ DQo+ID4gVGhhbmtzLA0KPiA+IFh1YW4NCj4gPg0KPiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4g PiBYdWFuDQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBSZWdhcmRzLA0KPiA+ID4gPiBOaXB1bg0K PiA+ID4gPg0KPiA+ID4gPiBPbiA2LzI5LzIwMjMgMTo1MSBQTSwgRGluZywgWHVhbiB3cm90ZToN Cj4gPiA+ID4gPiBIaSBOaXB1biwNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEknZCBsaWtlIHRvIGFw cHJlY2lhdGUgeW91ciB0aW1lIHJlYWRpbmcgdGhpcyBlbWFpbC4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IE91ciBRQSB0ZWFtIGZvdW5kIHRoYXQgc2luY2UgdGhpcyBjb21taXQgImEzOTlkN2I1YTk5 NDogZG8gbm90DQo+ID4gPiA+ID4gY29hbGVzY2UgRE1BIG1hcHBpbmdzIiBpcyBpbnRyb2R1Y2Vk LCB0aGUgZHBkayB0ZXN0cG1kIHN0YXJ0DQo+ID4gPiA+ID4gd2l0aA0KPiA+ID4gPiA+ICItLW5v LQ0KPiA+ID4gPiBodWdlIiBwYXJhbWV0ZXJzIHdpbGwgZmFpbGVkLCBhbmQgc2hvd3MgIkVBTDog Q2Fubm90IHNldCB1cCBETUENCj4gPiA+ID4gcmVtYXBwaW5nLCBlcnJvciAyOCAoTm8gc3BhY2Ug bGVmdCBvbiBkZXZpY2UpIi4NCj4gPiA+ID4gPiBTbyB0aGV5IHJlcG9ydGVkIGl0IG9uIGRwZGsg QnVnemlsbGE6DQo+ID4gPiA+IGh0dHBzOi8vYnVncy5kcGRrLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTIzNS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgdW5kZXJzdGFuZCB0aGlzIGZlYXR1cmUgaXMg dG8ga2VlcCBjb25zaXN0ZW50IHdpdGggdGhlIGtlcm5lbA0KPiA+ID4gPiA+IGFuZCBub3QgYWxs b3cNCj4gPiA+ID4gbWVtb3J5IHNlZ21lbnRzIGJlIG1lcmdlZC4NCj4gPiA+ID4gPiBUaGUgc2lk ZSBlZmZlY3QgaXMgdGhlIHRlc3RwbWQgd2l0aCAiLS1uby1odWdlIiBwYXJhbWV0ZXJzIHdpbGwN Cj4gPiA+ID4gPiBub3QgYmUgYWJsZQ0KPiA+ID4gPiB0byBzdGFydCBiZWNhdXNlIHRoZSB0b28g bWFueSBwYWdlcyB3aWxsIGV4Y2VlZCB0aGUgY2FwYWJpbGl0eSBvZiBJT01NVS4NCj4gPiA+ID4g PiBJcyBpdCBleHBlY3RlZD8gU2hvdWxkIHdlIHJlbW92ZSB0aGUgLS1uby1odWdlIiBpbiBvdXIg dGVzdGNhc2U/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBSZWdhcmRzLA0KPiA+ID4gPiA+IFh1YW4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4g PiA+PiBGcm9tOiBOaXB1biBHdXB0YSA8bmlwdW4uZ3VwdGFAYW1kLmNvbT4NCj4gPiA+ID4gPj4g U2VudDogRnJpZGF5LCBEZWNlbWJlciAzMCwgMjAyMiA1OjU5IFBNDQo+ID4gPiA+ID4+IFRvOiBk ZXZAZHBkay5vcmc7IHRob21hc0Btb25qYWxvbi5uZXQ7IEJ1cmFrb3YsIEFuYXRvbHkNCj4gPiA+ ID4gPj4gPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+OyBmZXJydWgueWlnaXRAYW1kLmNvbQ0K PiA+ID4gPiA+PiBDYzogbmlraGlsLmFnYXJ3YWxAYW1kLmNvbTsgTmlwdW4gR3VwdGEgPG5pcHVu Lmd1cHRhQGFtZC5jb20+DQo+ID4gPiA+ID4+IFN1YmplY3Q6IFtQQVRDSF0gdmZpbzogZG8gbm90 IGNvYWxlc2NlIERNQSBtYXBwaW5ncw0KPiA+ID4gPiA+Pg0KPiA+ID4gPiA+PiBBdCB0aGUgY2xl YW51cCB0aW1lIHdoZW4gZG1hIHVubWFwIGlzIGRvbmUsIGxpbnV4IGtlcm5lbCBkb2VzDQo+ID4g PiA+ID4+IG5vdCBhbGxvdyB1bm1hcCBvZiBpbmRpdmlkdWFsIHNlZ21lbnRzIHdoaWNoIHdlcmUg Y29hbGVzY2VkDQo+ID4gPiA+ID4+IHRvZ2V0aGVyIHdoaWxlIGNyZWF0aW5nIHRoZSBETUEgbWFw IGZvciB0eXBlMSBJT01NVSBtYXBwaW5ncy4NCj4gPiA+ID4gPj4gU28sIHRoaXMgY2hhbmdlIHVw ZGF0ZXMgdGhlIG1hcHBpbmcgb2YgdGhlIG1lbW9yeQ0KPiA+ID4gPiA+PiBzZWdtZW50cyhodWdl cGFnZXMpIG9uIGEgcGVyLXBhZ2UgYmFzaXMuDQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4+IFNpZ25l ZC1vZmYtYnk6IE5pcHVuIEd1cHRhIDxuaXB1bi5ndXB0YUBhbWQuY29tPg0KPiA+ID4gPiA+PiAt LS0NCj4gPiA+ID4gPj4NCj4gPiA+ID4gPj4gV2hlbiBob3RwbHVnIG9mIGRldmljZXMgaXMgdXNl ZCwgbXVsdGlwbGUgcGFnZXMgZ2V0cyBjb2xhZWNlZA0KPiA+ID4gPiA+PiBhbmQgYSBzaW5nbGUg bWFwcGluZyBnZXRzIGNyZWF0ZWQgZm9yIHRoZXNlIHBhZ2VzICh1c2luZyBBUElzDQo+ID4gPiA+ ID4+IHJ0ZV9tZW1zZWdfY29udGlnX3dhbGsoKSBhbmQgdHlwZTFfbWFwX2NvbnRpZygpLiBPbiB0 aGUgY2xlYW51cA0KPiA+ID4gPiA+PiB0aW1lIHdoZW4gdGhlIG1lbW9yeSBpcyByZWxlYXNlZCwg dGhlIFZGSU8gZG9lcyBub3QgY2xlYW5zIHVwDQo+ID4gPiA+ID4+IHRoYXQgbWVtb3J5IGFuZCBm b2xsb3dpbmcgZXJyb3IgaXMgb2JzZXJ2ZWQgaW4gdGhlIGVhbCBmb3IgMk1CDQo+ID4gPiA+ID4+ IGh1Z2VwYWdlczoNCj4gPiA+ID4gPj4gRUFMOiBVbmV4cGVjdGVkIHNpemUgMCBvZiBETUEgcmVt YXBwaW5nIGNsZWFyZWQgaW5zdGVhZCBvZg0KPiA+ID4gPiA+PiAyMDk3MTUyDQo+ID4gPiA+ID4+ DQo+ID4gPiA+ID4+IFRoaXMgaXMgYmVjYXVzZSBWRklPIGRvZXMgbm90IGNsZWFyIHRoZSBETUEg KHJlZmVyIEFQSQ0KPiA+ID4gPiA+PiB2ZmlvX2RtYV9kb191bm1hcCgpIC0NCj4gPiA+ID4gPj4N Cj4gPiA+ID4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvbGF0ZXN0L3NvdXJjZS9k cml2ZXJzL3ZmaW8vdmZpb19pDQo+ID4gPiA+IG9tbXUNCj4gPiA+ID4gX3R5cGUNCj4gPiA+ID4g MS4NCj4gPiA+ID4gPj4gYyNMMTMzMCksDQo+ID4gPiA+ID4+IHdoZXJlIGl0IGNoZWNrcyB0aGUg ZG1hIG1hcHBpbmcgd2hlcmUgaXQgY2hlY2tzIGZvciBJT1ZBIHRvIGZyZWU6DQo+ID4gPiA+ID4+ DQo+ID4gPiA+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L2xhdGVzdC9zb3VyY2Uv ZHJpdmVycy92ZmlvL3ZmaW9faQ0KPiA+ID4gPiBvbW11DQo+ID4gPiA+IF90eXBlDQo+ID4gPiA+ IDEuDQo+ID4gPiA+ID4+IGMjTDE0MTguDQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4+IFRodXMgdGhp cyBjaGFuZ2UgdXBkYXRlcyB0aGUgbWFwcGluZyB0byBiZSBjcmVhdGVkIGluZGl2aWR1YWxseQ0K PiA+ID4gPiA+PiBpbnN0ZWFkIG9mIGNvbGFlY2luZyB0aGVtLg0KPiA+ID4gPiA+Pg0KPiA+ID4g PiA+PiAgIGxpYi9lYWwvbGludXgvZWFsX3ZmaW8uYyB8IDI5IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ID4gPiA+ID4+ICAgMSBmaWxlIGNoYW5nZWQsIDI5IGRlbGV0aW9ucygtKQ0K PiA+ID4gPiA+Pg0KPiA+ID4gPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2VhbC9saW51eC9lYWxfdmZp by5jDQo+ID4gPiA+ID4+IGIvbGliL2VhbC9saW51eC9lYWxfdmZpby5jIGluZGV4IDU0OWI4NmFl MWQuLjU2ZWRjY2IwZGIgMTAwNjQ0DQo+ID4gPiA+ID4+IC0tLSBhL2xpYi9lYWwvbGludXgvZWFs X3ZmaW8uYw0KPiA+ID4gPiA+PiArKysgYi9saWIvZWFsL2xpbnV4L2VhbF92ZmlvLmMNCj4gPiA+ ID4gPj4gQEAgLTEzNjksMTkgKzEzNjksNiBAQCBydGVfdmZpb19nZXRfZ3JvdXBfbnVtKGNvbnN0 IGNoYXINCj4gPiA+ID4gKnN5c2ZzX2Jhc2UsDQo+ID4gPiA+ID4+ICAgCXJldHVybiAxOw0KPiA+ ID4gPiA+PiAgIH0NCj4gPiA+ID4gPj4NCj4gPiA+ID4gPj4gLXN0YXRpYyBpbnQNCj4gPiA+ID4g Pj4gLXR5cGUxX21hcF9jb250aWcoY29uc3Qgc3RydWN0IHJ0ZV9tZW1zZWdfbGlzdCAqbXNsLCBj b25zdA0KPiA+ID4gPiA+PiBzdHJ1Y3QgcnRlX21lbXNlZyAqbXMsDQo+ID4gPiA+ID4+IC0JCXNp emVfdCBsZW4sIHZvaWQgKmFyZykNCj4gPiA+ID4gPj4gLXsNCj4gPiA+ID4gPj4gLQlpbnQgKnZm aW9fY29udGFpbmVyX2ZkID0gYXJnOw0KPiA+ID4gPiA+PiAtDQo+ID4gPiA+ID4+IC0JaWYgKG1z bC0+ZXh0ZXJuYWwpDQo+ID4gPiA+ID4+IC0JCXJldHVybiAwOw0KPiA+ID4gPiA+PiAtDQo+ID4g PiA+ID4+IC0JcmV0dXJuIHZmaW9fdHlwZTFfZG1hX21lbV9tYXAoKnZmaW9fY29udGFpbmVyX2Zk LCBtcy0NCj4gPmFkZHJfNjQsDQo+ID4gPiA+ID4+IG1zLT5pb3ZhLA0KPiA+ID4gPiA+PiAtCQkJ bGVuLCAxKTsNCj4gPiA+ID4gPj4gLX0NCj4gPiA+ID4gPj4gLQ0KPiA+ID4gPiA+PiAgIHN0YXRp YyBpbnQNCj4gPiA+ID4gPj4gICB0eXBlMV9tYXAoY29uc3Qgc3RydWN0IHJ0ZV9tZW1zZWdfbGlz dCAqbXNsLCBjb25zdCBzdHJ1Y3QNCj4gPiA+ID4gPj4gcnRlX21lbXNlZw0KPiA+ID4gPiAqbXMs DQo+ID4gPiA+ID4+ICAgCQl2b2lkICphcmcpDQo+ID4gPiA+ID4+IEBAIC0xMzk2LDEwICsxMzgz LDYgQEAgdHlwZTFfbWFwKGNvbnN0IHN0cnVjdCBydGVfbWVtc2VnX2xpc3QNCj4gPiA+ID4gPj4g Km1zbCwgY29uc3Qgc3RydWN0IHJ0ZV9tZW1zZWcgKm1zLA0KPiA+ID4gPiA+PiAgIAlpZiAobXMt PmlvdmEgPT0gUlRFX0JBRF9JT1ZBKQ0KPiA+ID4gPiA+PiAgIAkJcmV0dXJuIDA7DQo+ID4gPiA+ ID4+DQo+ID4gPiA+ID4+IC0JLyogaWYgSU9WQSBtb2RlIGlzIFZBLCB3ZSd2ZSBhbHJlYWR5IG1h cHBlZCB0aGUgaW50ZXJuYWwNCj4gc2VnbWVudHMNCj4gPiA+ID4gKi8NCj4gPiA+ID4gPj4gLQlp ZiAoIW1zbC0+ZXh0ZXJuYWwgJiYgcnRlX2VhbF9pb3ZhX21vZGUoKSA9PSBSVEVfSU9WQV9WQSkN Cj4gPiA+ID4gPj4gLQkJcmV0dXJuIDA7DQo+ID4gPiA+ID4+IC0NCj4gPiA+ID4gPj4gICAJcmV0 dXJuIHZmaW9fdHlwZTFfZG1hX21lbV9tYXAoKnZmaW9fY29udGFpbmVyX2ZkLA0KPiA+ID4gPiA+ PiBtcy0+YWRkcl82NCwNCj4gPiA+ID4gPj4gbXMtPmlvdmEsDQo+ID4gPiA+ID4+ICAgCQkJbXMt PmxlbiwgMSk7DQo+ID4gPiA+ID4+ICAgfQ0KPiA+ID4gPiA+PiBAQCAtMTQ2NCwxOCArMTQ0Nyw2 IEBAIHZmaW9fdHlwZTFfZG1hX21lbV9tYXAoaW50DQo+ID4gPiA+IHZmaW9fY29udGFpbmVyX2Zk LA0KPiA+ID4gPiA+PiB1aW50NjRfdCB2YWRkciwgdWludDY0X3QgaW92YSwgIHN0YXRpYyBpbnQN Cj4gPiA+ID4gPj4gdmZpb190eXBlMV9kbWFfbWFwKGludA0KPiA+ID4gPiA+PiB2ZmlvX2NvbnRh aW5lcl9mZCkgIHsNCj4gPiA+ID4gPj4gLQlpZiAocnRlX2VhbF9pb3ZhX21vZGUoKSA9PSBSVEVf SU9WQV9WQSkgew0KPiA+ID4gPiA+PiAtCQkvKiB3aXRoIElPVkEgYXMgVkEgbW9kZSwgd2UgY2Fu IGdldCBhd2F5IHdpdGgNCj4gbWFwcGluZw0KPiA+ID4gPiA+PiBjb250aWd1b3VzDQo+ID4gPiA+ ID4+IC0JCSAqIGNodW5rcyByYXRoZXIgdGhhbiBnb2luZyBwYWdlLWJ5LXBhZ2UuDQo+ID4gPiA+ ID4+IC0JCSAqLw0KPiA+ID4gPiA+PiAtCQlpbnQgcmV0ID0gcnRlX21lbXNlZ19jb250aWdfd2Fs ayh0eXBlMV9tYXBfY29udGlnLA0KPiA+ID4gPiA+PiAtCQkJCSZ2ZmlvX2NvbnRhaW5lcl9mZCk7 DQo+ID4gPiA+ID4+IC0JCWlmIChyZXQpDQo+ID4gPiA+ID4+IC0JCQlyZXR1cm4gcmV0Ow0KPiA+ ID4gPiA+PiAtCQkvKiB3ZSBoYXZlIHRvIGNvbnRpbnVlIHRoZSB3YWxrIGJlY2F1c2Ugd2UndmUN Cj4gc2tpcHBlZCB0aGUNCj4gPiA+ID4gPj4gLQkJICogZXh0ZXJuYWwgc2VnbWVudHMgZHVyaW5n IHRoZSBjb25maWcgd2Fsay4NCj4gPiA+ID4gPj4gLQkJICovDQo+ID4gPiA+ID4+IC0JfQ0KPiA+ ID4gPiA+PiAgIAlyZXR1cm4gcnRlX21lbXNlZ193YWxrKHR5cGUxX21hcCwgJnZmaW9fY29udGFp bmVyX2ZkKTsgIH0NCj4gPiA+ID4gPj4NCj4gPiA+ID4gPj4gLS0NCj4gPiA+ID4gPj4gMi4yNS4x DQo+ID4gPiA+ID4NCg==